summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clang-format95
-rw-r--r--.gitattributes2
-rw-r--r--.github/workflows/linux_builds.yml59
-rw-r--r--.gitignore3
-rw-r--r--COPYRIGHT.txt29
-rw-r--r--SConstruct26
-rw-r--r--core/SCsub1
-rw-r--r--core/config/engine.cpp8
-rw-r--r--core/config/project_settings.cpp7
-rw-r--r--core/config/project_settings.h1
-rw-r--r--core/core_bind.cpp66
-rw-r--r--core/debugger/engine_debugger.h2
-rw-r--r--core/debugger/local_debugger.cpp2
-rw-r--r--core/debugger/local_debugger.h2
-rw-r--r--core/debugger/remote_debugger.cpp6
-rw-r--r--core/debugger/remote_debugger.h4
-rw-r--r--core/debugger/script_debugger.cpp4
-rw-r--r--core/debugger/script_debugger.h2
-rw-r--r--core/error/error_macros.cpp36
-rw-r--r--core/error/error_macros.h251
-rw-r--r--core/extension/gdnative_interface.cpp6
-rw-r--r--core/input/SCsub14
-rw-r--r--core/input/input.cpp5
-rw-r--r--core/input/input.h1
-rw-r--r--core/input/input_event.cpp9
-rw-r--r--core/io/compression.h2
-rw-r--r--core/io/logger.cpp10
-rw-r--r--core/io/logger.h5
-rw-r--r--core/io/resource.cpp1
-rw-r--r--core/math/convex_hull.cpp2
-rw-r--r--core/math/face3.cpp2
-rw-r--r--core/math/geometry_2d.h2
-rw-r--r--core/math/geometry_3d.cpp16
-rw-r--r--core/math/geometry_3d.h2
-rw-r--r--core/math/plane.h6
-rw-r--r--core/multiplayer/multiplayer_replicator.cpp2
-rw-r--r--core/object/class_db.h3
-rw-r--r--core/object/method_bind.cpp2
-rw-r--r--core/object/undo_redo.cpp46
-rw-r--r--core/object/undo_redo.h5
-rw-r--r--core/os/memory.h1
-rw-r--r--core/os/os.cpp13
-rw-r--r--core/os/os.h2
-rw-r--r--core/string/optimized_translation.cpp5
-rw-r--r--core/string/ustring.cpp6
-rw-r--r--core/templates/hash_map.h1
-rw-r--r--core/templates/hashfuncs.h9
-rw-r--r--core/typedefs.h4
-rw-r--r--core/variant/variant_construct.cpp3
-rw-r--r--core/variant/variant_internal.h4
-rw-r--r--doc/classes/AcceptDialog.xml2
-rw-r--r--doc/classes/Animation.xml69
-rw-r--r--doc/classes/AnimationTree.xml4
-rw-r--r--doc/classes/Area2D.xml40
-rw-r--r--doc/classes/Area3D.xml40
-rw-r--r--doc/classes/AudioStreamPlayer3D.xml2
-rw-r--r--doc/classes/CharFXTransform.xml2
-rw-r--r--doc/classes/ColorPickerButton.xml2
-rw-r--r--doc/classes/ConfirmationDialog.xml1
-rw-r--r--doc/classes/Control.xml8
-rw-r--r--doc/classes/DirectionalLight3D.xml4
-rw-r--r--doc/classes/DisplayServer.xml17
-rw-r--r--doc/classes/EditorDebuggerPlugin.xml7
-rw-r--r--doc/classes/EditorExportPlugin.xml3
-rw-r--r--doc/classes/EditorFileDialog.xml1
-rw-r--r--doc/classes/EditorImportPlugin.xml7
-rw-r--r--doc/classes/EditorInspectorPlugin.xml4
-rw-r--r--doc/classes/EditorInterface.xml6
-rw-r--r--doc/classes/EditorNode3DGizmoPlugin.xml3
-rw-r--r--doc/classes/EditorPlugin.xml29
-rw-r--r--doc/classes/EditorProperty.xml4
-rw-r--r--doc/classes/EditorSceneFormatImporter.xml (renamed from doc/classes/EditorSceneImporter.xml)4
-rw-r--r--doc/classes/EditorSceneFormatImporterFBX.xml (renamed from modules/fbx/doc_classes/EditorSceneImporterFBX.xml)2
-rw-r--r--doc/classes/EditorSceneFormatImporterGLTF.xml (renamed from modules/gltf/doc_classes/EditorSceneImporterGLTF.xml)2
-rw-r--r--doc/classes/EditorScenePostImportPlugin.xml116
-rw-r--r--doc/classes/EditorTranslationParserPlugin.xml3
-rw-r--r--doc/classes/Environment.xml2
-rw-r--r--doc/classes/FileDialog.xml2
-rw-r--r--doc/classes/GraphEdit.xml4
-rw-r--r--doc/classes/Input.xml39
-rw-r--r--doc/classes/ItemList.xml1
-rw-r--r--doc/classes/Light3D.xml2
-rw-r--r--doc/classes/LineEdit.xml5
-rw-r--r--doc/classes/MenuButton.xml1
-rw-r--r--doc/classes/MeshInstance3D.xml24
-rw-r--r--doc/classes/NavigationMesh.xml2
-rw-r--r--doc/classes/OS.xml4
-rw-r--r--doc/classes/OptionButton.xml1
-rw-r--r--doc/classes/Plane.xml15
-rw-r--r--doc/classes/ProjectSettings.xml29
-rw-r--r--doc/classes/RenderingServer.xml19
-rw-r--r--doc/classes/RichTextLabel.xml9
-rw-r--r--doc/classes/RigidDynamicBody2D.xml20
-rw-r--r--doc/classes/RigidDynamicBody3D.xml20
-rw-r--r--doc/classes/SceneTree.xml2
-rw-r--r--doc/classes/SceneTreeTimer.xml2
-rw-r--r--doc/classes/ScrollContainer.xml2
-rw-r--r--doc/classes/Skeleton3D.xml74
-rw-r--r--doc/classes/SpinBox.xml1
-rw-r--r--doc/classes/String.xml4
-rw-r--r--doc/classes/TabBar.xml (renamed from doc/classes/Tabs.xml)12
-rw-r--r--doc/classes/TabContainer.xml1
-rw-r--r--doc/classes/TextEdit.xml12
-rw-r--r--doc/classes/TextParagraph.xml2
-rw-r--r--doc/classes/TileMap.xml41
-rw-r--r--doc/classes/TileMapPattern.xml85
-rw-r--r--doc/classes/TileSet.xml28
-rw-r--r--doc/classes/TileSetAtlasSource.xml22
-rw-r--r--doc/classes/Tween.xml1
-rw-r--r--doc/classes/UndoRedo.xml14
-rw-r--r--doc/classes/VideoPlayer.xml4
-rw-r--r--doc/classes/XRAnchor3D.xml33
-rw-r--r--doc/classes/XRController3D.xml68
-rw-r--r--doc/classes/XRInterface.xml79
-rw-r--r--doc/classes/XRInterfaceExtension.xml44
-rw-r--r--doc/classes/XRNode3D.xml53
-rw-r--r--doc/classes/XRPose.xml41
-rw-r--r--doc/classes/XRPositionalTracker.xml121
-rw-r--r--doc/classes/XRServer.xml31
-rw-r--r--doc/translations/Makefile21
-rw-r--r--doc/translations/ar.po3669
-rw-r--r--doc/translations/ca.po3792
-rw-r--r--doc/translations/classes.pot3662
-rw-r--r--doc/translations/cs.po3669
-rw-r--r--doc/translations/de.po3697
-rw-r--r--doc/translations/el.po3669
-rw-r--r--doc/translations/es.po3853
-rw-r--r--doc/translations/extract.py1
-rw-r--r--doc/translations/fa.po3662
-rw-r--r--doc/translations/fi.po3669
-rw-r--r--doc/translations/fil.po3662
-rw-r--r--doc/translations/fr.po4132
-rw-r--r--doc/translations/gl.po3662
-rw-r--r--doc/translations/hi.po3662
-rw-r--r--doc/translations/hu.po69194
-rw-r--r--doc/translations/id.po3662
-rw-r--r--doc/translations/it.po3669
-rw-r--r--doc/translations/ja.po3697
-rw-r--r--doc/translations/ko.po3669
-rw-r--r--doc/translations/lv.po3662
-rw-r--r--doc/translations/mr.po3662
-rw-r--r--doc/translations/nl.po3662
-rw-r--r--doc/translations/pl.po3674
-rw-r--r--doc/translations/pt_BR.po3708
-rw-r--r--doc/translations/ro.po3662
-rw-r--r--doc/translations/ru.po3718
-rw-r--r--doc/translations/sk.po3662
-rw-r--r--doc/translations/sr_Cyrl.po3662
-rw-r--r--doc/translations/th.po3669
-rw-r--r--doc/translations/tr.po3669
-rw-r--r--doc/translations/uk.po3669
-rw-r--r--doc/translations/vi.po3669
-rw-r--r--doc/translations/zh_CN.po10451
-rw-r--r--doc/translations/zh_TW.po3681
-rw-r--r--drivers/png/SCsub3
-rw-r--r--drivers/unix/ip_unix.cpp2
-rw-r--r--drivers/unix/os_unix.cpp2
-rw-r--r--drivers/unix/os_unix.h2
-rw-r--r--drivers/vulkan/rendering_device_vulkan.cpp2
-rw-r--r--drivers/vulkan/vulkan_context.cpp2
-rw-r--r--editor/SCsub22
-rw-r--r--editor/animation_track_editor.cpp333
-rw-r--r--editor/animation_track_editor.h6
-rw-r--r--editor/animation_track_editor_plugins.cpp4
-rw-r--r--editor/code_editor.h2
-rw-r--r--editor/debugger/editor_visual_profiler.cpp4
-rw-r--r--editor/editor_command_palette.cpp10
-rw-r--r--editor/editor_data.h2
-rw-r--r--editor/editor_file_system.cpp3
-rw-r--r--editor/editor_help.h3
-rw-r--r--editor/editor_inspector.cpp35
-rw-r--r--editor/editor_inspector.h10
-rw-r--r--editor/editor_log.cpp6
-rw-r--r--editor/editor_log.h2
-rw-r--r--editor/editor_node.cpp175
-rw-r--r--editor/editor_node.h22
-rw-r--r--editor/editor_path.h1
-rw-r--r--editor/editor_plugin.cpp17
-rw-r--r--editor/editor_plugin.h7
-rw-r--r--editor/editor_settings.cpp34
-rw-r--r--editor/editor_themes.cpp39
-rw-r--r--editor/editor_toaster.cpp513
-rw-r--r--editor/editor_toaster.h116
-rw-r--r--editor/filesystem_dock.cpp2
-rw-r--r--editor/filesystem_dock.h4
-rw-r--r--editor/find_in_files.cpp2
-rw-r--r--editor/groups_editor.cpp100
-rw-r--r--editor/groups_editor.h15
-rw-r--r--editor/icons/KeyBlendShape.svg44
-rw-r--r--editor/icons/KeyTrackBlendShape.svg45
-rw-r--r--editor/icons/KeyTrackPosition.svg47
-rw-r--r--editor/icons/KeyTrackRotation.svg47
-rw-r--r--editor/icons/KeyTrackScale.svg47
-rw-r--r--editor/icons/KeyXPosition.svg43
-rw-r--r--editor/icons/KeyXRotation.svg44
-rw-r--r--editor/icons/KeyXScale.svg44
-rw-r--r--editor/icons/NewKey.svg1
-rw-r--r--editor/icons/Notification.svg1
-rw-r--r--editor/icons/NotificationDisabled.svg1
-rw-r--r--editor/icons/TabBar.svg (renamed from editor/icons/Tabs.svg)0
-rw-r--r--editor/import/editor_import_collada.cpp166
-rw-r--r--editor/import/editor_import_collada.h6
-rw-r--r--editor/import/editor_importer_bake_reset.cpp234
-rw-r--r--editor/import/resource_importer_layered_texture.h2
-rw-r--r--editor/import/resource_importer_obj.h4
-rw-r--r--editor/import/resource_importer_scene.cpp517
-rw-r--r--editor/import/resource_importer_scene.h110
-rw-r--r--editor/inspector_dock.cpp4
-rw-r--r--editor/plugin_config_dialog.cpp8
-rw-r--r--editor/plugin_config_dialog.h1
-rw-r--r--editor/plugins/abstract_polygon_2d_editor.h1
-rw-r--r--editor/plugins/animation_blend_space_1d_editor.h2
-rw-r--r--editor/plugins/animation_player_editor_plugin.h2
-rw-r--r--editor/plugins/asset_library_editor_plugin.h1
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp24
-rw-r--r--editor/plugins/canvas_item_editor_plugin.h10
-rw-r--r--editor/plugins/collision_polygon_3d_editor_plugin.cpp2
-rw-r--r--editor/plugins/editor_preview_plugins.h18
-rw-r--r--editor/plugins/node_3d_editor_gizmos.cpp4
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp145
-rw-r--r--editor/plugins/node_3d_editor_plugin.h8
-rw-r--r--editor/plugins/path_3d_editor_plugin.cpp12
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.h1
-rw-r--r--editor/plugins/script_editor_plugin.cpp66
-rw-r--r--editor/plugins/script_editor_plugin.h7
-rw-r--r--editor/plugins/skeleton_3d_editor_plugin.cpp660
-rw-r--r--editor/plugins/skeleton_3d_editor_plugin.h98
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.h2
-rw-r--r--editor/plugins/theme_editor_plugin.cpp6
-rw-r--r--editor/plugins/theme_editor_plugin.h5
-rw-r--r--editor/plugins/tiles/atlas_merging_dialog.cpp1
-rw-r--r--editor/plugins/tiles/tile_atlas_view.cpp94
-rw-r--r--editor/plugins/tiles/tile_atlas_view.h4
-rw-r--r--editor/plugins/tiles/tile_data_editors.cpp20
-rw-r--r--editor/plugins/tiles/tile_data_editors.h4
-rw-r--r--editor/plugins/tiles/tile_map_editor.cpp665
-rw-r--r--editor/plugins/tiles/tile_map_editor.h64
-rw-r--r--editor/plugins/tiles/tile_set_atlas_source_editor.cpp119
-rw-r--r--editor/plugins/tiles/tile_set_atlas_source_editor.h6
-rw-r--r--editor/plugins/tiles/tile_set_editor.cpp108
-rw-r--r--editor/plugins/tiles/tile_set_editor.h16
-rw-r--r--editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp28
-rw-r--r--editor/plugins/tiles/tile_set_scenes_collection_source_editor.h1
-rw-r--r--editor/plugins/tiles/tiles_editor_plugin.cpp311
-rw-r--r--editor/plugins/tiles/tiles_editor_plugin.h61
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp53
-rw-r--r--editor/plugins/visual_shader_editor_plugin.h2
-rw-r--r--editor/project_settings_editor.h2
-rw-r--r--editor/quick_open.cpp23
-rw-r--r--editor/rename_dialog.cpp2
-rw-r--r--editor/rename_dialog.h2
-rw-r--r--editor/reparent_dialog.h2
-rw-r--r--editor/scene_tree_dock.h2
-rw-r--r--editor/scene_tree_editor.h3
-rw-r--r--editor/settings_config_dialog.cpp2
-rw-r--r--editor/translations/Makefile21
-rw-r--r--editor/translations/af.po83
-rw-r--r--editor/translations/ar.po89
-rw-r--r--editor/translations/az.po79
-rw-r--r--editor/translations/bg.po88
-rw-r--r--editor/translations/bn.po87
-rw-r--r--editor/translations/br.po73
-rw-r--r--editor/translations/ca.po425
-rw-r--r--editor/translations/cs.po81
-rw-r--r--editor/translations/da.po82
-rw-r--r--editor/translations/de.po205
-rw-r--r--editor/translations/editor.pot74
-rw-r--r--editor/translations/el.po84
-rw-r--r--editor/translations/eo.po93
-rw-r--r--editor/translations/es.po218
-rw-r--r--editor/translations/es_AR.po567
-rw-r--r--editor/translations/et.po80
-rw-r--r--editor/translations/eu.po76
-rw-r--r--editor/translations/fa.po146
-rw-r--r--editor/translations/fi.po198
-rw-r--r--editor/translations/fil.po73
-rw-r--r--editor/translations/fr.po211
-rw-r--r--editor/translations/ga.po73
-rw-r--r--editor/translations/gl.po81
-rw-r--r--editor/translations/he.po89
-rw-r--r--editor/translations/hi.po82
-rw-r--r--editor/translations/hr.po79
-rw-r--r--editor/translations/hu.po96
-rw-r--r--editor/translations/id.po361
-rw-r--r--editor/translations/is.po73
-rw-r--r--editor/translations/it.po118
-rw-r--r--editor/translations/ja.po1082
-rw-r--r--editor/translations/ka.po81
-rw-r--r--editor/translations/km.po73
-rw-r--r--editor/translations/ko.po699
-rw-r--r--editor/translations/lt.po150
-rw-r--r--editor/translations/lv.po85
-rw-r--r--editor/translations/mi.po73
-rw-r--r--editor/translations/mk.po73
-rw-r--r--editor/translations/ml.po73
-rw-r--r--editor/translations/mr.po73
-rw-r--r--editor/translations/ms.po189
-rw-r--r--editor/translations/nb.po80
-rw-r--r--editor/translations/nl.po97
-rw-r--r--editor/translations/or.po73
-rw-r--r--editor/translations/pl.po229
-rw-r--r--editor/translations/pr.po83
-rw-r--r--editor/translations/pt.po376
-rw-r--r--editor/translations/pt_BR.po308
-rw-r--r--editor/translations/ro.po85
-rw-r--r--editor/translations/ru.po219
-rw-r--r--editor/translations/si.po73
-rw-r--r--editor/translations/sk.po82
-rw-r--r--editor/translations/sl.po87
-rw-r--r--editor/translations/sq.po82
-rw-r--r--editor/translations/sr_Cyrl.po82
-rw-r--r--editor/translations/sr_Latn.po76
-rw-r--r--editor/translations/sv.po93
-rw-r--r--editor/translations/ta.po73
-rw-r--r--editor/translations/te.po73
-rw-r--r--editor/translations/th.po84
-rw-r--r--editor/translations/tr.po640
-rw-r--r--editor/translations/tt.po73
-rw-r--r--editor/translations/tzm.po73
-rw-r--r--editor/translations/uk.po196
-rw-r--r--editor/translations/ur_PK.po76
-rw-r--r--editor/translations/vi.po80
-rw-r--r--editor/translations/zh_CN.po213
-rw-r--r--editor/translations/zh_HK.po83
-rw-r--r--editor/translations/zh_TW.po81
-rw-r--r--main/main.cpp26
-rw-r--r--methods.py189
-rw-r--r--misc/dist/html/editor.html42
-rw-r--r--misc/dist/osx/editor.entitlements12
-rw-r--r--misc/dist/osx/editor_mono.entitlements18
-rwxr-xr-xmisc/hooks/pre-commit-clang-format6
-rwxr-xr-xmisc/scripts/compare_extension_api.py11
-rw-r--r--modules/bullet/area_bullet.h1
-rw-r--r--modules/bullet/soft_body_bullet.cpp1
-rw-r--r--modules/denoise/config.py5
-rw-r--r--modules/fbx/data/fbx_mesh_data.cpp3
-rw-r--r--modules/fbx/data/fbx_skeleton.cpp7
-rw-r--r--modules/fbx/editor_scene_importer_fbx.cpp77
-rw-r--r--modules/fbx/editor_scene_importer_fbx.h8
-rw-r--r--modules/fbx/register_types.cpp4
-rw-r--r--modules/gdnative/gdnative/gdnative.cpp6
-rw-r--r--modules/gdnative/nativescript/nativescript.cpp3
-rw-r--r--modules/gdnative/nativescript/nativescript.h3
-rw-r--r--modules/gdnative/pluginscript/pluginscript_instance.h2
-rw-r--r--modules/gdscript/gdscript.cpp10
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp40
-rw-r--r--modules/gdscript/gdscript_analyzer.h4
-rw-r--r--modules/gdscript/gdscript_compiler.cpp11
-rw-r--r--modules/gdscript/gdscript_parser.cpp14
-rw-r--r--modules/gdscript/gdscript_vm.cpp6
-rw-r--r--modules/gdscript/language_server/gdscript_language_server.h2
-rw-r--r--modules/gdscript/tests/gdscript_test_runner.cpp2
-rw-r--r--modules/gdscript/tests/gdscript_test_runner.h2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.gd8
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/class_from_parent.gd19
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/class_from_parent.out4
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/typed_array_inferred_access_isnt_constant.gd6
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/typed_array_inferred_access_isnt_constant.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/typed_array_with_custom_class.gd10
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/typed_array_with_custom_class.out2
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.gd32
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.out6
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.gd8
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.out6
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.gd19
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.out3
-rw-r--r--modules/gltf/editor_scene_importer_gltf.cpp8
-rw-r--r--modules/gltf/editor_scene_importer_gltf.h4
-rw-r--r--modules/gltf/gltf_document.cpp214
-rw-r--r--modules/gltf/gltf_document.h4
-rw-r--r--modules/gltf/gltf_document_extension_convert_importer_mesh.cpp3
-rw-r--r--modules/gltf/register_types.cpp4
-rw-r--r--modules/lightmapper_rd/lightmapper_rd.cpp126
-rw-r--r--modules/lightmapper_rd/lightmapper_rd.h3
-rw-r--r--modules/lightmapper_rd/lm_common_inc.glsl4
-rw-r--r--modules/lightmapper_rd/lm_compute.glsl27
-rw-r--r--modules/lightmapper_rd/lm_raster.glsl12
-rw-r--r--modules/mbedtls/packet_peer_mbed_dtls.h2
-rw-r--r--modules/mbedtls/ssl_context_mbedtls.h2
-rw-r--r--modules/mbedtls/stream_peer_mbedtls.h2
-rw-r--r--modules/mobile_vr/doc_classes/MobileVRInterface.xml1
-rw-r--r--modules/mobile_vr/mobile_vr_interface.cpp69
-rw-r--r--modules/mobile_vr/mobile_vr_interface.h9
-rw-r--r--modules/mono/SCsub3
-rw-r--r--modules/mono/build_scripts/mono_reg_utils.py1
-rw-r--r--modules/mono/config.py2
-rw-r--r--modules/mono/csharp_script.cpp18
-rw-r--r--modules/mono/csharp_script.h4
-rw-r--r--modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs15
-rw-r--r--modules/mono/mono_gd/gd_mono_marshal.cpp97
-rw-r--r--modules/mono/mono_gd/gd_mono_property.cpp30
-rw-r--r--modules/mono/mono_gd/gd_mono_property.h5
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.cpp2
-rw-r--r--modules/navigation/navigation_mesh_generator.cpp2
-rw-r--r--modules/ogg/SCsub3
-rw-r--r--modules/opus/SCsub252
-rw-r--r--modules/opus/config.py6
-rw-r--r--modules/opus/register_types.cpp37
-rw-r--r--modules/opus/register_types.h37
-rw-r--r--modules/raycast/config.py2
-rw-r--r--modules/regex/config.py2
-rw-r--r--modules/text_server_adv/SCsub2
-rw-r--r--modules/text_server_adv/text_server_adv.cpp346
-rw-r--r--modules/text_server_adv/text_server_adv.h41
-rw-r--r--modules/text_server_fb/text_server_fb.cpp68
-rw-r--r--modules/text_server_fb/text_server_fb.h6
-rw-r--r--modules/theora/config.py2
-rw-r--r--modules/theora/doc_classes/VideoStreamTheora.xml2
-rw-r--r--modules/theora/video_stream_theora.cpp2
-rw-r--r--modules/visual_script/visual_script.cpp2
-rw-r--r--modules/visual_script/visual_script_nodes.h6
-rw-r--r--modules/webm/SCsub48
-rw-r--r--modules/webm/config.py19
-rw-r--r--modules/webm/doc_classes/VideoStreamWebm.xml28
-rw-r--r--modules/webm/libvpx/SCsub382
-rw-r--r--modules/webm/register_types.cpp47
-rw-r--r--modules/webm/register_types.h37
-rw-r--r--modules/webm/video_stream_webm.cpp469
-rw-r--r--modules/webm/video_stream_webm.h135
-rw-r--r--modules/webxr/doc_classes/WebXRInterface.xml2
-rw-r--r--modules/webxr/webxr_interface_js.cpp86
-rw-r--r--modules/webxr/webxr_interface_js.h3
-rw-r--r--modules/xatlas_unwrap/register_types.cpp2
-rw-r--r--platform/android/audio_driver_opensl.h4
-rw-r--r--platform/android/detect.py27
-rw-r--r--platform/android/export/export_plugin.cpp8
-rw-r--r--platform/android/java/app/config.gradle4
-rw-r--r--platform/android/java/build.gradle14
-rw-r--r--platform/android/java/gradle/wrapper/gradle-wrapper.jarbin54329 -> 59203 bytes
-rw-r--r--platform/android/java/gradle/wrapper/gradle-wrapper.properties5
-rwxr-xr-xplatform/android/java/gradlew53
-rw-r--r--platform/android/java/gradlew.bat47
-rw-r--r--platform/android/os_android.cpp2
-rw-r--r--platform/android/os_android.h1
-rw-r--r--platform/iphone/detect.py5
-rw-r--r--platform/iphone/export/export_plugin.cpp4
-rw-r--r--platform/javascript/detect.py2
-rw-r--r--platform/javascript/package-lock.json6
-rw-r--r--platform/linuxbsd/detect.py16
-rw-r--r--platform/linuxbsd/display_server_x11.cpp49
-rw-r--r--platform/linuxbsd/display_server_x11.h5
-rw-r--r--platform/linuxbsd/freedesktop_screensaver.cpp4
-rw-r--r--platform/osx/detect.py4
-rw-r--r--platform/osx/display_server_osx.mm4
-rw-r--r--platform/osx/export/export_plugin.cpp2
-rw-r--r--platform/osx/joypad_osx.h1
-rw-r--r--platform/osx/os_osx.mm2
-rw-r--r--platform/uwp/detect.py2
-rw-r--r--platform/uwp/os_uwp.h5
-rw-r--r--platform/windows/detect.py4
-rw-r--r--platform/windows/display_server_windows.h2
-rw-r--r--scene/2d/area_2d.cpp8
-rw-r--r--scene/2d/audio_listener_2d.h2
-rw-r--r--scene/2d/collision_object_2d.cpp4
-rw-r--r--scene/2d/collision_polygon_2d.cpp1
-rw-r--r--scene/2d/collision_shape_2d.cpp2
-rw-r--r--scene/2d/cpu_particles_2d.h7
-rw-r--r--scene/2d/gpu_particles_2d.cpp5
-rw-r--r--scene/2d/mesh_instance_2d.cpp4
-rw-r--r--scene/2d/mesh_instance_2d.h1
-rw-r--r--scene/2d/navigation_agent_2d.cpp4
-rw-r--r--scene/2d/physics_body_2d.cpp4
-rw-r--r--scene/2d/ray_cast_2d.cpp1
-rw-r--r--scene/2d/tile_map.cpp168
-rw-r--r--scene/2d/tile_map.h82
-rw-r--r--scene/3d/area_3d.cpp8
-rw-r--r--scene/3d/audio_listener_3d.h3
-rw-r--r--scene/3d/audio_stream_player_3d.cpp4
-rw-r--r--scene/3d/bone_attachment_3d.cpp6
-rw-r--r--scene/3d/bone_attachment_3d.h1
-rw-r--r--scene/3d/camera_3d.cpp1
-rw-r--r--scene/3d/collision_object_3d.cpp4
-rw-r--r--scene/3d/cpu_particles_3d.cpp1
-rw-r--r--scene/3d/cpu_particles_3d.h7
-rw-r--r--scene/3d/gpu_particles_3d.cpp1
-rw-r--r--scene/3d/mesh_instance_3d.cpp78
-rw-r--r--scene/3d/mesh_instance_3d.h15
-rw-r--r--scene/3d/navigation_agent_3d.cpp4
-rw-r--r--scene/3d/navigation_region_3d.cpp2
-rw-r--r--scene/3d/node_3d.cpp8
-rw-r--r--scene/3d/physics_body_3d.cpp4
-rw-r--r--scene/3d/skeleton_3d.cpp295
-rw-r--r--scene/3d/skeleton_3d.h36
-rw-r--r--scene/3d/soft_dynamic_body_3d.cpp88
-rw-r--r--scene/3d/soft_dynamic_body_3d.h15
-rw-r--r--scene/3d/sprite_3d.h6
-rw-r--r--scene/3d/vehicle_body_3d.cpp4
-rw-r--r--scene/3d/xr_nodes.cpp629
-rw-r--r--scene/3d/xr_nodes.h110
-rw-r--r--scene/animation/animation_cache.cpp314
-rw-r--r--scene/animation/animation_cache.h84
-rw-r--r--scene/animation/animation_player.cpp220
-rw-r--r--scene/animation/animation_player.h19
-rw-r--r--scene/animation/animation_tree.cpp315
-rw-r--r--scene/animation/animation_tree.h18
-rw-r--r--scene/gui/code_edit.cpp6
-rw-r--r--scene/gui/control.cpp14
-rw-r--r--scene/gui/control.h6
-rw-r--r--scene/gui/line_edit.cpp89
-rw-r--r--scene/gui/line_edit.h6
-rw-r--r--scene/gui/popup.h1
-rw-r--r--scene/gui/rich_text_label.cpp17
-rw-r--r--scene/gui/rich_text_label.h4
-rw-r--r--scene/gui/tab_bar.cpp (renamed from scene/gui/tabs.cpp)217
-rw-r--r--scene/gui/tab_bar.h (renamed from scene/gui/tabs.h)19
-rw-r--r--scene/gui/text_edit.cpp103
-rw-r--r--scene/gui/text_edit.h7
-rw-r--r--scene/gui/texture_progress_bar.cpp12
-rw-r--r--scene/gui/tree.cpp4
-rw-r--r--scene/gui/video_player.cpp4
-rw-r--r--scene/main/canvas_layer.cpp8
-rw-r--r--scene/main/scene_tree.h4
-rw-r--r--scene/main/viewport.cpp9
-rw-r--r--scene/register_scene_types.cpp50
-rw-r--r--scene/resources/animation.cpp1223
-rw-r--r--scene/resources/animation.h92
-rw-r--r--scene/resources/default_theme/SCsub2
-rw-r--r--scene/resources/default_theme/default_theme.cpp48
-rw-r--r--scene/resources/environment.cpp2
-rw-r--r--scene/resources/importer_mesh.cpp6
-rw-r--r--scene/resources/mesh.cpp2
-rw-r--r--scene/resources/mesh.h1
-rw-r--r--scene/resources/navigation_mesh.h2
-rw-r--r--scene/resources/shape_2d.h1
-rw-r--r--scene/resources/skeleton_modification_3d_fabrik.cpp78
-rw-r--r--scene/resources/skeleton_modification_3d_fabrik.h2
-rw-r--r--scene/resources/skeleton_modification_3d_jiggle.cpp7
-rw-r--r--scene/resources/skeleton_modification_3d_lookat.cpp4
-rw-r--r--scene/resources/skeleton_modification_3d_twoboneik.cpp28
-rw-r--r--scene/resources/surface_tool.cpp2
-rw-r--r--scene/resources/text_paragraph.cpp4
-rw-r--r--scene/resources/text_paragraph.h2
-rw-r--r--scene/resources/tile_set.cpp325
-rw-r--r--scene/resources/tile_set.h94
-rw-r--r--scene/resources/visual_shader.cpp52
-rw-r--r--scene/resources/visual_shader.h2
-rw-r--r--scene/resources/visual_shader_nodes.cpp2
-rw-r--r--scene/resources/visual_shader_particle_nodes.cpp20
-rw-r--r--scene/resources/visual_shader_particle_nodes.h5
-rw-r--r--servers/audio/effects/audio_effect_limiter.h2
-rw-r--r--servers/audio/effects/audio_effect_record.h1
-rw-r--r--servers/audio/effects/audio_effect_reverb.h2
-rw-r--r--servers/audio_server.cpp6
-rw-r--r--servers/display_server.cpp11
-rw-r--r--servers/display_server.h3
-rw-r--r--servers/physics_2d/godot_area_2d.cpp (renamed from servers/physics_2d/area_2d_sw.cpp)42
-rw-r--r--servers/physics_2d/godot_area_2d.h (renamed from servers/physics_2d/area_2d_sw.h)57
-rw-r--r--servers/physics_2d/godot_area_pair_2d.cpp (renamed from servers/physics_2d/area_pair_2d_sw.cpp)30
-rw-r--r--servers/physics_2d/godot_area_pair_2d.h (renamed from servers/physics_2d/area_pair_2d_sw.h)34
-rw-r--r--servers/physics_2d/godot_body_2d.cpp (renamed from servers/physics_2d/body_2d_sw.cpp)107
-rw-r--r--servers/physics_2d/godot_body_2d.h (renamed from servers/physics_2d/body_2d_sw.h)60
-rw-r--r--servers/physics_2d/godot_body_direct_state_2d.cpp (renamed from servers/physics_2d/body_direct_state_2d_sw.cpp)74
-rw-r--r--servers/physics_2d/godot_body_direct_state_2d.h (renamed from servers/physics_2d/body_direct_state_2d_sw.h)16
-rw-r--r--servers/physics_2d/godot_body_pair_2d.cpp (renamed from servers/physics_2d/body_pair_2d_sw.cpp)44
-rw-r--r--servers/physics_2d/godot_body_pair_2d.h (renamed from servers/physics_2d/body_pair_2d_sw.h)28
-rw-r--r--servers/physics_2d/godot_broad_phase_2d.cpp (renamed from servers/physics_3d/broad_phase_3d_sw.cpp)8
-rw-r--r--servers/physics_2d/godot_broad_phase_2d.h (renamed from servers/physics_2d/broad_phase_2d_sw.h)28
-rw-r--r--servers/physics_2d/godot_broad_phase_2d_bvh.cpp (renamed from servers/physics_2d/broad_phase_2d_bvh.cpp)48
-rw-r--r--servers/physics_2d/godot_broad_phase_2d_bvh.h (renamed from servers/physics_2d/broad_phase_2d_bvh.h)31
-rw-r--r--servers/physics_2d/godot_collision_object_2d.cpp (renamed from servers/physics_2d/collision_object_2d_sw.cpp)48
-rw-r--r--servers/physics_2d/godot_collision_object_2d.h (renamed from servers/physics_2d/collision_object_2d_sw.h)47
-rw-r--r--servers/physics_2d/godot_collision_solver_2d.cpp (renamed from servers/physics_2d/collision_solver_2d_sw.cpp)26
-rw-r--r--servers/physics_2d/godot_collision_solver_2d.h (renamed from servers/physics_2d/collision_solver_2d_sw.h)22
-rw-r--r--servers/physics_2d/godot_collision_solver_2d_sat.cpp (renamed from servers/physics_2d/collision_solver_2d_sat.cpp)134
-rw-r--r--servers/physics_2d/godot_collision_solver_2d_sat.h (renamed from servers/physics_2d/collision_solver_2d_sat.h)12
-rw-r--r--servers/physics_2d/godot_constraint_2d.h (renamed from servers/physics_2d/constraint_2d_sw.h)20
-rw-r--r--servers/physics_2d/godot_joints_2d.cpp (renamed from servers/physics_2d/joints_2d_sw.cpp)58
-rw-r--r--servers/physics_2d/godot_joints_2d.h (renamed from servers/physics_2d/joints_2d_sw.h)54
-rw-r--r--servers/physics_2d/godot_physics_server_2d.cpp1350
-rw-r--r--servers/physics_2d/godot_physics_server_2d.h (renamed from servers/physics_2d/physics_server_2d_sw.h)50
-rw-r--r--servers/physics_2d/godot_shape_2d.cpp (renamed from servers/physics_2d/shape_2d_sw.cpp)128
-rw-r--r--servers/physics_2d/godot_shape_2d.h (renamed from servers/physics_2d/shape_2d_sw.h)70
-rw-r--r--servers/physics_2d/godot_space_2d.cpp (renamed from servers/physics_2d/space_2d_sw.cpp)247
-rw-r--r--servers/physics_2d/godot_space_2d.h (renamed from servers/physics_2d/space_2d_sw.h)107
-rw-r--r--servers/physics_2d/godot_step_2d.cpp (renamed from servers/physics_2d/step_2d_sw.cpp)72
-rw-r--r--servers/physics_2d/godot_step_2d.h (renamed from servers/physics_2d/step_2d_sw.h)30
-rw-r--r--servers/physics_2d/physics_server_2d_sw.cpp1349
-rw-r--r--servers/physics_3d/gjk_epa.cpp28
-rw-r--r--servers/physics_3d/gjk_epa.h8
-rw-r--r--servers/physics_3d/godot_area_3d.cpp (renamed from servers/physics_3d/area_3d_sw.cpp)47
-rw-r--r--servers/physics_3d/godot_area_3d.h (renamed from servers/physics_3d/area_3d_sw.h)73
-rw-r--r--servers/physics_3d/godot_area_pair_3d.cpp (renamed from servers/physics_3d/area_pair_3d_sw.cpp)43
-rw-r--r--servers/physics_3d/godot_area_pair_3d.h (renamed from servers/physics_3d/area_pair_3d_sw.h)46
-rw-r--r--servers/physics_3d/godot_body_3d.cpp (renamed from servers/physics_3d/body_3d_sw.cpp)128
-rw-r--r--servers/physics_3d/godot_body_3d.h (renamed from servers/physics_3d/body_3d_sw.h)55
-rw-r--r--servers/physics_3d/godot_body_direct_state_3d.cpp (renamed from servers/physics_3d/body_direct_state_3d_sw.cpp)78
-rw-r--r--servers/physics_3d/godot_body_direct_state_3d.h (renamed from servers/physics_3d/body_direct_state_3d_sw.h)16
-rw-r--r--servers/physics_3d/godot_body_pair_3d.cpp (renamed from servers/physics_3d/body_pair_3d_sw.cpp)73
-rw-r--r--servers/physics_3d/godot_body_pair_3d.h (renamed from servers/physics_3d/body_pair_3d_sw.h)49
-rw-r--r--servers/physics_3d/godot_broad_phase_3d.cpp (renamed from servers/physics_2d/broad_phase_2d_sw.cpp)8
-rw-r--r--servers/physics_3d/godot_broad_phase_3d.h (renamed from servers/physics_3d/broad_phase_3d_sw.h)30
-rw-r--r--servers/physics_3d/godot_broad_phase_3d_bvh.cpp (renamed from servers/physics_3d/broad_phase_3d_bvh.cpp)51
-rw-r--r--servers/physics_3d/godot_broad_phase_3d_bvh.h (renamed from servers/physics_3d/broad_phase_3d_bvh.h)33
-rw-r--r--servers/physics_3d/godot_collision_object_3d.cpp (renamed from servers/physics_3d/collision_object_3d_sw.cpp)49
-rw-r--r--servers/physics_3d/godot_collision_object_3d.h (renamed from servers/physics_3d/collision_object_3d_sw.h)47
-rw-r--r--servers/physics_3d/godot_collision_solver_3d.cpp (renamed from servers/physics_3d/collision_solver_3d_sw.cpp)72
-rw-r--r--servers/physics_3d/godot_collision_solver_3d.h (renamed from servers/physics_3d/collision_solver_3d_sw.h)32
-rw-r--r--servers/physics_3d/godot_collision_solver_3d_sat.cpp (renamed from servers/physics_3d/collision_solver_3d_sat.cpp)203
-rw-r--r--servers/physics_3d/godot_collision_solver_3d_sat.h (renamed from servers/physics_3d/collision_solver_3d_sat.h)12
-rw-r--r--servers/physics_3d/godot_constraint_3d.h (renamed from servers/physics_3d/constraint_3d_sw.h)24
-rw-r--r--servers/physics_3d/godot_joint_3d.h (renamed from servers/physics_3d/joints_3d_sw.h)24
-rw-r--r--servers/physics_3d/godot_physics_server_3d.cpp1747
-rw-r--r--servers/physics_3d/godot_physics_server_3d.h (renamed from servers/physics_3d/physics_server_3d_sw.h)49
-rw-r--r--servers/physics_3d/godot_shape_3d.cpp (renamed from servers/physics_3d/shape_3d_sw.cpp)338
-rw-r--r--servers/physics_3d/godot_shape_3d.h (renamed from servers/physics_3d/shape_3d_sw.h)94
-rw-r--r--servers/physics_3d/godot_soft_body_3d.cpp (renamed from servers/physics_3d/soft_body_3d_sw.cpp)150
-rw-r--r--servers/physics_3d/godot_soft_body_3d.h (renamed from servers/physics_3d/soft_body_3d_sw.h)48
-rw-r--r--servers/physics_3d/godot_space_3d.cpp (renamed from servers/physics_3d/space_3d_sw.cpp)263
-rw-r--r--servers/physics_3d/godot_space_3d.h (renamed from servers/physics_3d/space_3d_sw.h)113
-rw-r--r--servers/physics_3d/godot_step_3d.cpp (renamed from servers/physics_3d/step_3d_sw.cpp)97
-rw-r--r--servers/physics_3d/godot_step_3d.h (renamed from servers/physics_3d/step_3d_sw.h)32
-rw-r--r--servers/physics_3d/joints/godot_cone_twist_joint_3d.cpp (renamed from servers/physics_3d/joints/cone_twist_joint_3d_sw.cpp)18
-rw-r--r--servers/physics_3d/joints/godot_cone_twist_joint_3d.h (renamed from servers/physics_3d/joints/cone_twist_joint_3d_sw.h)28
-rw-r--r--servers/physics_3d/joints/godot_generic_6dof_joint_3d.cpp (renamed from servers/physics_3d/joints/generic_6dof_joint_3d_sw.cpp)69
-rw-r--r--servers/physics_3d/joints/godot_generic_6dof_joint_3d.h (renamed from servers/physics_3d/joints/generic_6dof_joint_3d_sw.h)111
-rw-r--r--servers/physics_3d/joints/godot_hinge_joint_3d.cpp (renamed from servers/physics_3d/joints/hinge_joint_3d_sw.cpp)34
-rw-r--r--servers/physics_3d/joints/godot_hinge_joint_3d.h (renamed from servers/physics_3d/joints/hinge_joint_3d_sw.h)28
-rw-r--r--servers/physics_3d/joints/godot_jacobian_entry_3d.h (renamed from servers/physics_3d/joints/jacobian_entry_3d_sw.h)28
-rw-r--r--servers/physics_3d/joints/godot_pin_joint_3d.cpp (renamed from servers/physics_3d/joints/pin_joint_3d_sw.cpp)20
-rw-r--r--servers/physics_3d/joints/godot_pin_joint_3d.h (renamed from servers/physics_3d/joints/pin_joint_3d_sw.h)26
-rw-r--r--servers/physics_3d/joints/godot_slider_joint_3d.cpp (renamed from servers/physics_3d/joints/slider_joint_3d_sw.cpp)48
-rw-r--r--servers/physics_3d/joints/godot_slider_joint_3d.h (renamed from servers/physics_3d/joints/slider_joint_3d_sw.h)30
-rw-r--r--servers/physics_3d/physics_server_3d_sw.cpp1748
-rw-r--r--servers/physics_server_2d.h6
-rw-r--r--servers/physics_server_2d_wrap_mt.cpp (renamed from servers/physics_2d/physics_server_2d_wrap_mt.cpp)0
-rw-r--r--servers/physics_server_2d_wrap_mt.h (renamed from servers/physics_2d/physics_server_2d_wrap_mt.h)8
-rw-r--r--servers/physics_server_3d.h6
-rw-r--r--servers/physics_server_3d_wrap_mt.cpp (renamed from servers/physics_3d/physics_server_3d_wrap_mt.cpp)0
-rw-r--r--servers/physics_server_3d_wrap_mt.h (renamed from servers/physics_3d/physics_server_3d_wrap_mt.h)8
-rw-r--r--servers/register_server_types.cpp13
-rw-r--r--servers/rendering/renderer_rd/cluster_builder_rd.h2
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp17
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp4
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp5
-rw-r--r--servers/rendering/renderer_rd/pipeline_cache_rd.cpp6
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.cpp22
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.cpp8
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.h2
-rw-r--r--servers/rendering/renderer_rd/shader_compiler_rd.cpp3
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl62
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl6
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl6
-rw-r--r--servers/rendering/renderer_scene_cull.cpp4
-rw-r--r--servers/rendering/renderer_scene_render.cpp8
-rw-r--r--servers/rendering/renderer_viewport.cpp4
-rw-r--r--servers/rendering/shader_language.cpp272
-rw-r--r--servers/rendering/shader_language.h11
-rw-r--r--servers/rendering_server.cpp15
-rw-r--r--servers/rendering_server.h1
-rw-r--r--servers/text_server.cpp4
-rw-r--r--servers/xr/xr_interface.cpp67
-rw-r--r--servers/xr/xr_interface.h33
-rw-r--r--servers/xr/xr_interface_extension.cpp70
-rw-r--r--servers/xr/xr_interface_extension.h19
-rw-r--r--servers/xr/xr_pose.cpp110
-rw-r--r--servers/xr/xr_pose.h (renamed from editor/import/editor_importer_bake_reset.h)50
-rw-r--r--servers/xr/xr_positional_tracker.cpp247
-rw-r--r--servers/xr/xr_positional_tracker.h42
-rw-r--r--servers/xr_server.cpp227
-rw-r--r--servers/xr_server.h23
-rw-r--r--tests/test_geometry_3d.h7
-rw-r--r--tests/test_tools.h2
-rw-r--r--thirdparty/README.md63
-rw-r--r--thirdparty/libsimplewebm/LICENSE21
-rw-r--r--thirdparty/libsimplewebm/OpusVorbisDecoder.cpp264
-rw-r--r--thirdparty/libsimplewebm/OpusVorbisDecoder.hpp65
-rw-r--r--thirdparty/libsimplewebm/VPXDecoder.cpp154
-rw-r--r--thirdparty/libsimplewebm/VPXDecoder.hpp86
-rw-r--r--thirdparty/libsimplewebm/WebMDemuxer.cpp241
-rw-r--r--thirdparty/libsimplewebm/WebMDemuxer.hpp125
-rw-r--r--thirdparty/libsimplewebm/libwebm/AUTHORS.TXT4
-rw-r--r--thirdparty/libsimplewebm/libwebm/LICENSE.TXT30
-rw-r--r--thirdparty/libsimplewebm/libwebm/PATENTS.TXT23
-rw-r--r--thirdparty/libsimplewebm/libwebm/README.libvpx11
-rw-r--r--thirdparty/libsimplewebm/libwebm/common/webmids.h192
-rw-r--r--thirdparty/libsimplewebm/libwebm/mkvmuxer/mkvmuxertypes.h28
-rw-r--r--thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.cc8049
-rw-r--r--thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.h1145
-rw-r--r--thirdparty/libvpx/AUTHORS142
-rw-r--r--thirdparty/libvpx/CHANGELOG654
-rw-r--r--thirdparty/libvpx/LICENSE31
-rw-r--r--thirdparty/libvpx/PATENTS23
-rw-r--r--thirdparty/libvpx/rtcd/vp8_rtcd_arm.h240
-rw-r--r--thirdparty/libvpx/rtcd/vp8_rtcd_c.h117
-rw-r--r--thirdparty/libvpx/rtcd/vp8_rtcd_x86.h247
-rw-r--r--thirdparty/libvpx/rtcd/vp9_rtcd_arm.h54
-rw-r--r--thirdparty/libvpx/rtcd/vp9_rtcd_c.h41
-rw-r--r--thirdparty/libvpx/rtcd/vp9_rtcd_x86.h55
-rw-r--r--thirdparty/libvpx/rtcd/vpx_dsp_rtcd_arm.h678
-rw-r--r--thirdparty/libvpx/rtcd/vpx_dsp_rtcd_c.h355
-rw-r--r--thirdparty/libvpx/rtcd/vpx_dsp_rtcd_x86.h604
-rw-r--r--thirdparty/libvpx/third_party/android/cpu-features.c1313
-rw-r--r--thirdparty/libvpx/third_party/android/cpu-features.h323
-rw-r--r--thirdparty/libvpx/third_party/x86inc/LICENSE18
-rw-r--r--thirdparty/libvpx/third_party/x86inc/README.libvpx20
-rw-r--r--thirdparty/libvpx/third_party/x86inc/x86inc.asm1649
-rw-r--r--thirdparty/libvpx/vp8/common/alloccommon.c190
-rw-r--r--thirdparty/libvpx/vp8/common/alloccommon.h31
-rw-r--r--thirdparty/libvpx/vp8/common/arm/loopfilter_arm.c181
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/bilinearpredict_neon.c591
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/copymem_neon.c59
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/dc_only_idct_add_neon.c42
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/dequant_idct_neon.c142
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/dequantizeb_neon.c25
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/idct_blk_neon.c96
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c63
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c185
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/iwalsh_neon.c102
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c111
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c283
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/mbloopfilter_neon.c625
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/shortidct4x4llm_neon.c123
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/sixtappredict_neon.c1377
-rw-r--r--thirdparty/libvpx/vp8/common/arm/neon/vp8_loopfilter_neon.c550
-rw-r--r--thirdparty/libvpx/vp8/common/blockd.c22
-rw-r--r--thirdparty/libvpx/vp8/common/blockd.h312
-rw-r--r--thirdparty/libvpx/vp8/common/coefupdateprobs.h197
-rw-r--r--thirdparty/libvpx/vp8/common/common.h48
-rw-r--r--thirdparty/libvpx/vp8/common/copy_c.c32
-rw-r--r--thirdparty/libvpx/vp8/common/debugmodes.c155
-rw-r--r--thirdparty/libvpx/vp8/common/default_coef_probs.h200
-rw-r--r--thirdparty/libvpx/vp8/common/dequantize.c43
-rw-r--r--thirdparty/libvpx/vp8/common/entropy.c188
-rw-r--r--thirdparty/libvpx/vp8/common/entropy.h109
-rw-r--r--thirdparty/libvpx/vp8/common/entropymode.c171
-rw-r--r--thirdparty/libvpx/vp8/common/entropymode.h88
-rw-r--r--thirdparty/libvpx/vp8/common/entropymv.c49
-rw-r--r--thirdparty/libvpx/vp8/common/entropymv.h52
-rw-r--r--thirdparty/libvpx/vp8/common/extend.c188
-rw-r--r--thirdparty/libvpx/vp8/common/extend.h33
-rw-r--r--thirdparty/libvpx/vp8/common/filter.c493
-rw-r--r--thirdparty/libvpx/vp8/common/filter.h32
-rw-r--r--thirdparty/libvpx/vp8/common/findnearmv.c193
-rw-r--r--thirdparty/libvpx/vp8/common/findnearmv.h195
-rw-r--r--thirdparty/libvpx/vp8/common/generic/systemdependent.c106
-rw-r--r--thirdparty/libvpx/vp8/common/header.h51
-rw-r--r--thirdparty/libvpx/vp8/common/idct_blk.c90
-rw-r--r--thirdparty/libvpx/vp8/common/idctllm.c205
-rw-r--r--thirdparty/libvpx/vp8/common/invtrans.h70
-rw-r--r--thirdparty/libvpx/vp8/common/loopfilter.h113
-rw-r--r--thirdparty/libvpx/vp8/common/loopfilter_filters.c430
-rw-r--r--thirdparty/libvpx/vp8/common/mbpitch.c68
-rw-r--r--thirdparty/libvpx/vp8/common/modecont.c40
-rw-r--r--thirdparty/libvpx/vp8/common/modecont.h25
-rw-r--r--thirdparty/libvpx/vp8/common/mv.h36
-rw-r--r--thirdparty/libvpx/vp8/common/onyxc_int.h185
-rw-r--r--thirdparty/libvpx/vp8/common/onyxd.h63
-rw-r--r--thirdparty/libvpx/vp8/common/ppflags.h49
-rw-r--r--thirdparty/libvpx/vp8/common/quant_common.c135
-rw-r--r--thirdparty/libvpx/vp8/common/quant_common.h34
-rw-r--r--thirdparty/libvpx/vp8/common/reconinter.c544
-rw-r--r--thirdparty/libvpx/vp8/common/reconinter.h43
-rw-r--r--thirdparty/libvpx/vp8/common/reconintra.c117
-rw-r--r--thirdparty/libvpx/vp8/common/reconintra.h44
-rw-r--r--thirdparty/libvpx/vp8/common/reconintra4x4.c54
-rw-r--r--thirdparty/libvpx/vp8/common/reconintra4x4.h48
-rw-r--r--thirdparty/libvpx/vp8/common/rtcd.c19
-rw-r--r--thirdparty/libvpx/vp8/common/setupintrarecon.c39
-rw-r--r--thirdparty/libvpx/vp8/common/setupintrarecon.h45
-rw-r--r--thirdparty/libvpx/vp8/common/swapyv12buffer.c34
-rw-r--r--thirdparty/libvpx/vp8/common/swapyv12buffer.h27
-rw-r--r--thirdparty/libvpx/vp8/common/systemdependent.h27
-rw-r--r--thirdparty/libvpx/vp8/common/threading.h232
-rw-r--r--thirdparty/libvpx/vp8/common/treecoder.c143
-rw-r--r--thirdparty/libvpx/vp8/common/treecoder.h98
-rw-r--r--thirdparty/libvpx/vp8/common/vp8_entropymodedata.h254
-rw-r--r--thirdparty/libvpx/vp8/common/vp8_loopfilter.c661
-rw-r--r--thirdparty/libvpx/vp8/common/x86/copy_sse2.asm93
-rw-r--r--thirdparty/libvpx/vp8/common/x86/copy_sse3.asm146
-rw-r--r--thirdparty/libvpx/vp8/common/x86/dequantize_mmx.asm258
-rw-r--r--thirdparty/libvpx/vp8/common/x86/filter_x86.c35
-rw-r--r--thirdparty/libvpx/vp8/common/x86/filter_x86.h33
-rw-r--r--thirdparty/libvpx/vp8/common/x86/idct_blk_mmx.c128
-rw-r--r--thirdparty/libvpx/vp8/common/x86/idct_blk_sse2.c89
-rw-r--r--thirdparty/libvpx/vp8/common/x86/idctllm_mmx.asm295
-rw-r--r--thirdparty/libvpx/vp8/common/x86/idctllm_sse2.asm708
-rw-r--r--thirdparty/libvpx/vp8/common/x86/iwalsh_mmx.asm140
-rw-r--r--thirdparty/libvpx/vp8/common/x86/iwalsh_sse2.asm121
-rw-r--r--thirdparty/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm815
-rw-r--r--thirdparty/libvpx/vp8/common/x86/loopfilter_sse2.asm1640
-rw-r--r--thirdparty/libvpx/vp8/common/x86/loopfilter_x86.c198
-rw-r--r--thirdparty/libvpx/vp8/common/x86/recon_mmx.asm274
-rw-r--r--thirdparty/libvpx/vp8/common/x86/recon_sse2.asm116
-rw-r--r--thirdparty/libvpx/vp8/common/x86/subpixel_mmx.asm702
-rw-r--r--thirdparty/libvpx/vp8/common/x86/subpixel_sse2.asm1372
-rw-r--r--thirdparty/libvpx/vp8/common/x86/subpixel_ssse3.asm1508
-rw-r--r--thirdparty/libvpx/vp8/common/x86/vp8_asm_stubs.c625
-rw-r--r--thirdparty/libvpx/vp8/common/x86/vp8_loopfilter_mmx.asm1753
-rw-r--r--thirdparty/libvpx/vp8/decoder/dboolhuff.c77
-rw-r--r--thirdparty/libvpx/vp8/decoder/dboolhuff.h141
-rw-r--r--thirdparty/libvpx/vp8/decoder/decodeframe.c1397
-rw-r--r--thirdparty/libvpx/vp8/decoder/decodemv.c670
-rw-r--r--thirdparty/libvpx/vp8/decoder/decodemv.h26
-rw-r--r--thirdparty/libvpx/vp8/decoder/decoderthreading.h30
-rw-r--r--thirdparty/libvpx/vp8/decoder/detokenize.c245
-rw-r--r--thirdparty/libvpx/vp8/decoder/detokenize.h27
-rw-r--r--thirdparty/libvpx/vp8/decoder/onyxd_if.c521
-rw-r--r--thirdparty/libvpx/vp8/decoder/onyxd_int.h161
-rw-r--r--thirdparty/libvpx/vp8/decoder/threading.c928
-rw-r--r--thirdparty/libvpx/vp8/decoder/treereader.h49
-rw-r--r--thirdparty/libvpx/vp8/vp8_dx_iface.c828
-rw-r--r--thirdparty/libvpx/vp8_rtcd.h9
-rw-r--r--thirdparty/libvpx/vp9/common/arm/neon/vp9_iht4x4_add_neon.c248
-rw-r--r--thirdparty/libvpx/vp9/common/arm/neon/vp9_iht8x8_add_neon.c624
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_alloccommon.c201
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_alloccommon.h45
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_blockd.c135
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_blockd.h305
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_common.h74
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_common_data.c176
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_common_data.h44
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_debugmodes.c91
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_entropy.c802
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_entropy.h200
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_entropymode.c469
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_entropymode.h107
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_entropymv.c210
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_entropymv.h140
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_enums.h147
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_filter.c104
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_filter.h42
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_frame_buffers.c86
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_frame_buffers.h53
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_idct.c405
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_idct.h81
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_loopfilter.c1697
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_loopfilter.h166
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_mv.h55
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_mvref_common.c201
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_mvref_common.h241
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_onyxc_int.h446
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_ppflags.h43
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_pred_common.c314
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_pred_common.h192
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_quant_common.c278
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_quant_common.h36
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_reconinter.c309
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_reconinter.h119
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_reconintra.c445
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_reconintra.h32
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_rtcd.c19
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_scale.c175
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_scale.h75
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_scan.c725
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_scan.h57
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_seg_common.c64
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_seg_common.h87
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_thread_common.c435
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_thread_common.h65
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_tile_common.c59
-rw-r--r--thirdparty/libvpx/vp9/common/vp9_tile_common.h40
-rw-r--r--thirdparty/libvpx/vp9/common/x86/vp9_idct_intrin_sse2.c181
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_decodeframe.c2271
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_decodeframe.h37
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_decodemv.c911
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_decodemv.h30
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_decoder.c518
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_decoder.h137
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_detokenize.c224
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_detokenize.h33
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_dsubexp.c76
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_dsubexp.h27
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_dthread.c189
-rw-r--r--thirdparty/libvpx/vp9/decoder/vp9_dthread.h74
-rw-r--r--thirdparty/libvpx/vp9/vp9_dx_iface.c1093
-rw-r--r--thirdparty/libvpx/vp9/vp9_dx_iface.h65
-rw-r--r--thirdparty/libvpx/vp9/vp9_iface_common.h136
-rw-r--r--thirdparty/libvpx/vp9_rtcd.h9
-rw-r--r--thirdparty/libvpx/vpx/internal/vpx_codec_internal.h445
-rw-r--r--thirdparty/libvpx/vpx/internal/vpx_psnr.h34
-rw-r--r--thirdparty/libvpx/vpx/src/vpx_codec.c158
-rw-r--r--thirdparty/libvpx/vpx/src/vpx_decoder.c197
-rw-r--r--thirdparty/libvpx/vpx/src/vpx_image.c285
-rw-r--r--thirdparty/libvpx/vpx/src/vpx_psnr.c24
-rw-r--r--thirdparty/libvpx/vpx/vp8.h148
-rw-r--r--thirdparty/libvpx/vpx/vp8dx.h176
-rw-r--r--thirdparty/libvpx/vpx/vpx_codec.h479
-rw-r--r--thirdparty/libvpx/vpx/vpx_decoder.h378
-rw-r--r--thirdparty/libvpx/vpx/vpx_encoder.h1043
-rw-r--r--thirdparty/libvpx/vpx/vpx_frame_buffer.h83
-rw-r--r--thirdparty/libvpx/vpx/vpx_image.h235
-rw-r--r--thirdparty/libvpx/vpx/vpx_integer.h74
-rw-r--r--thirdparty/libvpx/vpx_config.asm65
-rw-r--r--thirdparty/libvpx/vpx_config.h140
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/armasm_ms/intrapred_neon_asm.asm643
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/armasm_ms/loopfilter_mb_neon.asm641
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/armasm_ms/save_reg_neon.asm39
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/gas/intrapred_neon_asm.s658
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/gas/loopfilter_mb_neon.s647
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/gas/save_reg_neon.s44
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/gas_apple/intrapred_neon_asm.s660
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/gas_apple/loopfilter_mb_neon.s649
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/gas_apple/save_reg_neon.s46
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct16x16_1_add_neon.c61
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct16x16_add_neon.c1317
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct16x16_neon.c185
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct32x32_1_add_neon.c165
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct32x32_add_neon.c719
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct4x4_1_add_neon.c50
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct4x4_add_neon.c151
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct8x8_1_add_neon.c64
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/idct8x8_add_neon.c540
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/intrapred_neon.c822
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/loopfilter_16_neon.c179
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/loopfilter_4_neon.c266
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/loopfilter_8_neon.c445
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/loopfilter_neon.c58
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/vpx_convolve8_avg_neon.c373
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/vpx_convolve8_neon.c340
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_avg_neon.c147
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_copy_neon.c94
-rw-r--r--thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_neon.c72
-rw-r--r--thirdparty/libvpx/vpx_dsp/bitreader.c103
-rw-r--r--thirdparty/libvpx/vpx_dsp/bitreader.h140
-rw-r--r--thirdparty/libvpx/vpx_dsp/bitreader_buffer.c53
-rw-r--r--thirdparty/libvpx/vpx_dsp/bitreader_buffer.h47
-rw-r--r--thirdparty/libvpx/vpx_dsp/intrapred.c870
-rw-r--r--thirdparty/libvpx/vpx_dsp/inv_txfm.c2518
-rw-r--r--thirdparty/libvpx/vpx_dsp/inv_txfm.h133
-rw-r--r--thirdparty/libvpx/vpx_dsp/loopfilter.c767
-rw-r--r--thirdparty/libvpx/vpx_dsp/prob.c53
-rw-r--r--thirdparty/libvpx/vpx_dsp/prob.h103
-rw-r--r--thirdparty/libvpx/vpx_dsp/txfm_common.h66
-rw-r--r--thirdparty/libvpx/vpx_dsp/vpx_convolve.c612
-rw-r--r--thirdparty/libvpx/vpx_dsp/vpx_convolve.h38
-rw-r--r--thirdparty/libvpx/vpx_dsp/vpx_dsp_common.h69
-rw-r--r--thirdparty/libvpx/vpx_dsp/vpx_dsp_rtcd.c17
-rw-r--r--thirdparty/libvpx/vpx_dsp/vpx_filter.h34
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/convolve.h274
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/intrapred_sse2.asm860
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/intrapred_ssse3.asm871
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/inv_txfm_sse2.c4046
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/inv_txfm_sse2.h196
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm1793
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/inv_wht_sse2.asm109
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/loopfilter_avx2.c979
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/loopfilter_sse2.c1776
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/txfm_common_sse2.h29
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_asm_stubs.c162
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm228
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c606
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c915
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm987
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm629
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm448
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm422
-rw-r--r--thirdparty/libvpx/vpx_dsp_rtcd.h9
-rw-r--r--thirdparty/libvpx/vpx_mem/include/vpx_mem_intrnl.h31
-rw-r--r--thirdparty/libvpx/vpx_mem/vpx_mem.c100
-rw-r--r--thirdparty/libvpx/vpx_mem/vpx_mem.h47
-rw-r--r--thirdparty/libvpx/vpx_ports/arm.h41
-rw-r--r--thirdparty/libvpx/vpx_ports/arm_cpudetect.c170
-rw-r--r--thirdparty/libvpx/vpx_ports/bitops.h76
-rw-r--r--thirdparty/libvpx/vpx_ports/config.h16
-rw-r--r--thirdparty/libvpx/vpx_ports/emmintrin_compat.h55
-rw-r--r--thirdparty/libvpx/vpx_ports/emms.asm38
-rw-r--r--thirdparty/libvpx/vpx_ports/mem.h53
-rw-r--r--thirdparty/libvpx/vpx_ports/mem_ops.h226
-rw-r--r--thirdparty/libvpx/vpx_ports/mem_ops_aligned.h169
-rw-r--r--thirdparty/libvpx/vpx_ports/msvc.h32
-rw-r--r--thirdparty/libvpx/vpx_ports/system_state.h22
-rw-r--r--thirdparty/libvpx/vpx_ports/vpx_once.h150
-rw-r--r--thirdparty/libvpx/vpx_ports/vpx_timer.h120
-rw-r--r--thirdparty/libvpx/vpx_ports/x86.h330
-rw-r--r--thirdparty/libvpx/vpx_ports/x86_abi_support.asm404
-rw-r--r--thirdparty/libvpx/vpx_scale/generic/yv12config.c287
-rw-r--r--thirdparty/libvpx/vpx_scale/generic/yv12extend.c324
-rw-r--r--thirdparty/libvpx/vpx_scale/vpx_scale.h27
-rw-r--r--thirdparty/libvpx/vpx_scale/vpx_scale_rtcd.c18
-rw-r--r--thirdparty/libvpx/vpx_scale/yv12config.h105
-rw-r--r--thirdparty/libvpx/vpx_scale_rtcd.h44
-rw-r--r--thirdparty/libvpx/vpx_util/endian_inl.h120
-rw-r--r--thirdparty/libvpx/vpx_util/vpx_thread.c184
-rw-r--r--thirdparty/libvpx/vpx_util/vpx_thread.h369
-rw-r--r--thirdparty/libvpx/vpx_version.h7
-rw-r--r--thirdparty/mbedtls/include/mbedtls/bn_mul.h6
-rw-r--r--thirdparty/mbedtls/patches/pr4948-fix-clang12-opt.patch36
-rw-r--r--thirdparty/opus/COPYING44
-rw-r--r--thirdparty/opus/analysis.c672
-rw-r--r--thirdparty/opus/analysis.h103
-rw-r--r--thirdparty/opus/celt/_kiss_fft_guts.h182
-rw-r--r--thirdparty/opus/celt/arch.h252
-rw-r--r--thirdparty/opus/celt/arm/arm_celt_map.c143
-rw-r--r--thirdparty/opus/celt/arm/armcpu.c185
-rw-r--r--thirdparty/opus/celt/arm/armcpu.h77
-rw-r--r--thirdparty/opus/celt/arm/armopts.s.in37
-rw-r--r--thirdparty/opus/celt/arm/celt_ne10_fft.c174
-rw-r--r--thirdparty/opus/celt/arm/celt_ne10_mdct.c258
-rw-r--r--thirdparty/opus/celt/arm/celt_neon_intr.c311
-rw-r--r--thirdparty/opus/celt/arm/celt_pitch_xcorr_arm-gnu.S551
-rw-r--r--thirdparty/opus/celt/arm/celt_pitch_xcorr_arm.s547
-rw-r--r--thirdparty/opus/celt/arm/fft_arm.h72
-rw-r--r--thirdparty/opus/celt/arm/fixed_arm64.h35
-rw-r--r--thirdparty/opus/celt/arm/fixed_armv4.h80
-rw-r--r--thirdparty/opus/celt/arm/fixed_armv5e.h151
-rw-r--r--thirdparty/opus/celt/arm/kiss_fft_armv4.h121
-rw-r--r--thirdparty/opus/celt/arm/kiss_fft_armv5e.h118
-rw-r--r--thirdparty/opus/celt/arm/mdct_arm.h60
-rw-r--r--thirdparty/opus/celt/arm/pitch_arm.h126
-rw-r--r--thirdparty/opus/celt/bands.c1529
-rw-r--r--thirdparty/opus/celt/bands.h120
-rw-r--r--thirdparty/opus/celt/celt.c299
-rw-r--r--thirdparty/opus/celt/celt.h229
-rw-r--r--thirdparty/opus/celt/celt_decoder.c1248
-rw-r--r--thirdparty/opus/celt/celt_encoder.c2410
-rw-r--r--thirdparty/opus/celt/celt_lpc.c314
-rw-r--r--thirdparty/opus/celt/celt_lpc.h67
-rw-r--r--thirdparty/opus/celt/cpu_support.h70
-rw-r--r--thirdparty/opus/celt/cwrs.c715
-rw-r--r--thirdparty/opus/celt/cwrs.h48
-rw-r--r--thirdparty/opus/celt/ecintrin.h87
-rw-r--r--thirdparty/opus/celt/entcode.c153
-rw-r--r--thirdparty/opus/celt/entcode.h152
-rw-r--r--thirdparty/opus/celt/entdec.c245
-rw-r--r--thirdparty/opus/celt/entdec.h100
-rw-r--r--thirdparty/opus/celt/entenc.c294
-rw-r--r--thirdparty/opus/celt/entenc.h110
-rw-r--r--thirdparty/opus/celt/fixed_debug.h784
-rw-r--r--thirdparty/opus/celt/fixed_generic.h167
-rw-r--r--thirdparty/opus/celt/float_cast.h140
-rw-r--r--thirdparty/opus/celt/kiss_fft.c604
-rw-r--r--thirdparty/opus/celt/kiss_fft.h200
-rw-r--r--thirdparty/opus/celt/laplace.c134
-rw-r--r--thirdparty/opus/celt/laplace.h48
-rw-r--r--thirdparty/opus/celt/mathops.c208
-rw-r--r--thirdparty/opus/celt/mathops.h258
-rw-r--r--thirdparty/opus/celt/mdct.c343
-rw-r--r--thirdparty/opus/celt/mdct.h112
-rw-r--r--thirdparty/opus/celt/mfrngcod.h48
-rw-r--r--thirdparty/opus/celt/mips/celt_mipsr1.h151
-rw-r--r--thirdparty/opus/celt/mips/fixed_generic_mipsr1.h126
-rw-r--r--thirdparty/opus/celt/mips/kiss_fft_mipsr1.h167
-rw-r--r--thirdparty/opus/celt/mips/mdct_mipsr1.h288
-rw-r--r--thirdparty/opus/celt/mips/pitch_mipsr1.h161
-rw-r--r--thirdparty/opus/celt/mips/vq_mipsr1.h125
-rw-r--r--thirdparty/opus/celt/modes.c442
-rw-r--r--thirdparty/opus/celt/modes.h75
-rw-r--r--thirdparty/opus/celt/opus_custom_demo.c210
-rw-r--r--thirdparty/opus/celt/os_support.h92
-rw-r--r--thirdparty/opus/celt/pitch.c557
-rw-r--r--thirdparty/opus/celt/pitch.h200
-rw-r--r--thirdparty/opus/celt/quant_bands.c556
-rw-r--r--thirdparty/opus/celt/quant_bands.h66
-rw-r--r--thirdparty/opus/celt/rate.c639
-rw-r--r--thirdparty/opus/celt/rate.h101
-rw-r--r--thirdparty/opus/celt/stack_alloc.h184
-rw-r--r--thirdparty/opus/celt/static_modes_fixed.h892
-rw-r--r--thirdparty/opus/celt/static_modes_fixed_arm_ne10.h388
-rw-r--r--thirdparty/opus/celt/static_modes_float.h888
-rw-r--r--thirdparty/opus/celt/static_modes_float_arm_ne10.h404
-rw-r--r--thirdparty/opus/celt/tests/test_unit_cwrs32.c161
-rw-r--r--thirdparty/opus/celt/tests/test_unit_dft.c189
-rw-r--r--thirdparty/opus/celt/tests/test_unit_entropy.c382
-rw-r--r--thirdparty/opus/celt/tests/test_unit_laplace.c93
-rw-r--r--thirdparty/opus/celt/tests/test_unit_mathops.c304
-rw-r--r--thirdparty/opus/celt/tests/test_unit_mdct.c230
-rw-r--r--thirdparty/opus/celt/tests/test_unit_rotation.c120
-rw-r--r--thirdparty/opus/celt/tests/test_unit_types.c50
-rw-r--r--thirdparty/opus/celt/vq.c408
-rw-r--r--thirdparty/opus/celt/vq.h75
-rw-r--r--thirdparty/opus/celt/x86/celt_lpc_sse.c132
-rw-r--r--thirdparty/opus/celt/x86/celt_lpc_sse.h68
-rw-r--r--thirdparty/opus/celt/x86/pitch_sse.c185
-rw-r--r--thirdparty/opus/celt/x86/pitch_sse.h192
-rw-r--r--thirdparty/opus/celt/x86/pitch_sse2.c95
-rw-r--r--thirdparty/opus/celt/x86/pitch_sse4_1.c195
-rw-r--r--thirdparty/opus/celt/x86/x86_celt_map.c155
-rw-r--r--thirdparty/opus/celt/x86/x86cpu.c157
-rw-r--r--thirdparty/opus/celt/x86/x86cpu.h93
-rw-r--r--thirdparty/opus/config.h133
-rw-r--r--thirdparty/opus/info.c758
-rw-r--r--thirdparty/opus/internal.c42
-rw-r--r--thirdparty/opus/internal.h254
-rw-r--r--thirdparty/opus/mlp.c145
-rw-r--r--thirdparty/opus/mlp.h43
-rw-r--r--thirdparty/opus/mlp_data.c109
-rw-r--r--thirdparty/opus/opus.c356
-rw-r--r--thirdparty/opus/opus/opus.h981
-rw-r--r--thirdparty/opus/opus/opus_custom.h342
-rw-r--r--thirdparty/opus/opus/opus_defines.h753
-rw-r--r--thirdparty/opus/opus/opus_multistream.h660
-rw-r--r--thirdparty/opus/opus/opus_types.h159
-rw-r--r--thirdparty/opus/opus/opusfile.h2157
-rw-r--r--thirdparty/opus/opus_compare.c379
-rw-r--r--thirdparty/opus/opus_decoder.c981
-rw-r--r--thirdparty/opus/opus_encoder.c2536
-rw-r--r--thirdparty/opus/opus_multistream.c92
-rw-r--r--thirdparty/opus/opus_multistream_decoder.c537
-rw-r--r--thirdparty/opus/opus_multistream_encoder.c1351
-rw-r--r--thirdparty/opus/opus_private.h134
-rw-r--r--thirdparty/opus/opusfile.c3266
-rw-r--r--thirdparty/opus/repacketizer.c348
-rw-r--r--thirdparty/opus/repacketizer_demo.c217
-rw-r--r--thirdparty/opus/silk/A2NLSF.c267
-rw-r--r--thirdparty/opus/silk/API.h134
-rw-r--r--thirdparty/opus/silk/CNG.c184
-rw-r--r--thirdparty/opus/silk/HP_variable_cutoff.c77
-rw-r--r--thirdparty/opus/silk/Inlines.h188
-rw-r--r--thirdparty/opus/silk/LPC_analysis_filter.c108
-rw-r--r--thirdparty/opus/silk/LPC_inv_pred_gain.c154
-rw-r--r--thirdparty/opus/silk/LP_variable_cutoff.c135
-rw-r--r--thirdparty/opus/silk/MacroCount.h718
-rw-r--r--thirdparty/opus/silk/MacroDebug.h952
-rw-r--r--thirdparty/opus/silk/NLSF2A.c178
-rw-r--r--thirdparty/opus/silk/NLSF_VQ.c68
-rw-r--r--thirdparty/opus/silk/NLSF_VQ_weights_laroia.c80
-rw-r--r--thirdparty/opus/silk/NLSF_decode.c101
-rw-r--r--thirdparty/opus/silk/NLSF_del_dec_quant.c217
-rw-r--r--thirdparty/opus/silk/NLSF_encode.c137
-rw-r--r--thirdparty/opus/silk/NLSF_stabilize.c142
-rw-r--r--thirdparty/opus/silk/NLSF_unpack.c55
-rw-r--r--thirdparty/opus/silk/NSQ.c429
-rw-r--r--thirdparty/opus/silk/NSQ.h101
-rw-r--r--thirdparty/opus/silk/NSQ_del_dec.c716
-rw-r--r--thirdparty/opus/silk/PLC.c446
-rw-r--r--thirdparty/opus/silk/PLC.h62
-rw-r--r--thirdparty/opus/silk/SigProc_FIX.h615
-rw-r--r--thirdparty/opus/silk/VAD.c362
-rw-r--r--thirdparty/opus/silk/VQ_WMat_EC.c120
-rw-r--r--thirdparty/opus/silk/ana_filt_bank_1.c74
-rw-r--r--thirdparty/opus/silk/arm/NSQ_neon.c112
-rw-r--r--thirdparty/opus/silk/arm/NSQ_neon.h113
-rw-r--r--thirdparty/opus/silk/arm/SigProc_FIX_armv4.h47
-rw-r--r--thirdparty/opus/silk/arm/SigProc_FIX_armv5e.h61
-rw-r--r--thirdparty/opus/silk/arm/arm_silk_map.c55
-rw-r--r--thirdparty/opus/silk/arm/macros_arm64.h39
-rw-r--r--thirdparty/opus/silk/arm/macros_armv4.h103
-rw-r--r--thirdparty/opus/silk/arm/macros_armv5e.h213
-rw-r--r--thirdparty/opus/silk/biquad_alt.c78
-rw-r--r--thirdparty/opus/silk/bwexpander.c51
-rw-r--r--thirdparty/opus/silk/bwexpander_32.c50
-rw-r--r--thirdparty/opus/silk/check_control_input.c106
-rw-r--r--thirdparty/opus/silk/code_signs.c115
-rw-r--r--thirdparty/opus/silk/control.h142
-rw-r--r--thirdparty/opus/silk/control_SNR.c76
-rw-r--r--thirdparty/opus/silk/control_audio_bandwidth.c126
-rw-r--r--thirdparty/opus/silk/control_codec.c428
-rw-r--r--thirdparty/opus/silk/debug.c170
-rw-r--r--thirdparty/opus/silk/debug.h279
-rw-r--r--thirdparty/opus/silk/dec_API.c419
-rw-r--r--thirdparty/opus/silk/decode_core.c239
-rw-r--r--thirdparty/opus/silk/decode_frame.c129
-rw-r--r--thirdparty/opus/silk/decode_indices.c151
-rw-r--r--thirdparty/opus/silk/decode_parameters.c115
-rw-r--r--thirdparty/opus/silk/decode_pitch.c77
-rw-r--r--thirdparty/opus/silk/decode_pulses.c115
-rw-r--r--thirdparty/opus/silk/decoder_set_fs.c108
-rw-r--r--thirdparty/opus/silk/define.h235
-rw-r--r--thirdparty/opus/silk/enc_API.c563
-rw-r--r--thirdparty/opus/silk/encode_indices.c181
-rw-r--r--thirdparty/opus/silk/encode_pulses.c206
-rw-r--r--thirdparty/opus/silk/errors.h98
-rw-r--r--thirdparty/opus/silk/fixed/LTP_analysis_filter_FIX.c90
-rw-r--r--thirdparty/opus/silk/fixed/LTP_scale_ctrl_FIX.c53
-rw-r--r--thirdparty/opus/silk/fixed/apply_sine_window_FIX.c101
-rw-r--r--thirdparty/opus/silk/fixed/autocorr_FIX.c48
-rw-r--r--thirdparty/opus/silk/fixed/burg_modified_FIX.c280
-rw-r--r--thirdparty/opus/silk/fixed/corrMatrix_FIX.c158
-rw-r--r--thirdparty/opus/silk/fixed/encode_frame_FIX.c387
-rw-r--r--thirdparty/opus/silk/fixed/find_LPC_FIX.c151
-rw-r--r--thirdparty/opus/silk/fixed/find_LTP_FIX.c245
-rw-r--r--thirdparty/opus/silk/fixed/find_pitch_lags_FIX.c145
-rw-r--r--thirdparty/opus/silk/fixed/find_pred_coefs_FIX.c148
-rw-r--r--thirdparty/opus/silk/fixed/k2a_FIX.c53
-rw-r--r--thirdparty/opus/silk/fixed/k2a_Q16_FIX.c53
-rw-r--r--thirdparty/opus/silk/fixed/main_FIX.h272
-rw-r--r--thirdparty/opus/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h336
-rw-r--r--thirdparty/opus/silk/fixed/mips/prefilter_FIX_mipsr1.h184
-rw-r--r--thirdparty/opus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h165
-rw-r--r--thirdparty/opus/silk/fixed/noise_shape_analysis_FIX.c451
-rw-r--r--thirdparty/opus/silk/fixed/pitch_analysis_core_FIX.c746
-rw-r--r--thirdparty/opus/silk/fixed/prefilter_FIX.c221
-rw-r--r--thirdparty/opus/silk/fixed/process_gains_FIX.c117
-rw-r--r--thirdparty/opus/silk/fixed/regularize_correlations_FIX.c47
-rw-r--r--thirdparty/opus/silk/fixed/residual_energy16_FIX.c103
-rw-r--r--thirdparty/opus/silk/fixed/residual_energy_FIX.c98
-rw-r--r--thirdparty/opus/silk/fixed/schur64_FIX.c92
-rw-r--r--thirdparty/opus/silk/fixed/schur_FIX.c106
-rw-r--r--thirdparty/opus/silk/fixed/solve_LS_FIX.c249
-rw-r--r--thirdparty/opus/silk/fixed/structs_FIX.h134
-rw-r--r--thirdparty/opus/silk/fixed/vector_ops_FIX.c102
-rw-r--r--thirdparty/opus/silk/fixed/warped_autocorrelation_FIX.c95
-rw-r--r--thirdparty/opus/silk/fixed/x86/burg_modified_FIX_sse.c377
-rw-r--r--thirdparty/opus/silk/fixed/x86/prefilter_FIX_sse.c160
-rw-r--r--thirdparty/opus/silk/fixed/x86/vector_ops_FIX_sse.c88
-rw-r--r--thirdparty/opus/silk/float/LPC_analysis_filter_FLP.c249
-rw-r--r--thirdparty/opus/silk/float/LPC_inv_pred_gain_FLP.c76
-rw-r--r--thirdparty/opus/silk/float/LTP_analysis_filter_FLP.c75
-rw-r--r--thirdparty/opus/silk/float/LTP_scale_ctrl_FLP.c52
-rw-r--r--thirdparty/opus/silk/float/SigProc_FLP.h204
-rw-r--r--thirdparty/opus/silk/float/apply_sine_window_FLP.c81
-rw-r--r--thirdparty/opus/silk/float/autocorrelation_FLP.c52
-rw-r--r--thirdparty/opus/silk/float/burg_modified_FLP.c186
-rw-r--r--thirdparty/opus/silk/float/bwexpander_FLP.c49
-rw-r--r--thirdparty/opus/silk/float/corrMatrix_FLP.c93
-rw-r--r--thirdparty/opus/silk/float/encode_frame_FLP.c372
-rw-r--r--thirdparty/opus/silk/float/energy_FLP.c60
-rw-r--r--thirdparty/opus/silk/float/find_LPC_FLP.c104
-rw-r--r--thirdparty/opus/silk/float/find_LTP_FLP.c132
-rw-r--r--thirdparty/opus/silk/float/find_pitch_lags_FLP.c132
-rw-r--r--thirdparty/opus/silk/float/find_pred_coefs_FLP.c118
-rw-r--r--thirdparty/opus/silk/float/inner_product_FLP.c60
-rw-r--r--thirdparty/opus/silk/float/k2a_FLP.c53
-rw-r--r--thirdparty/opus/silk/float/levinsondurbin_FLP.c81
-rw-r--r--thirdparty/opus/silk/float/main_FLP.h313
-rw-r--r--thirdparty/opus/silk/float/noise_shape_analysis_FLP.c365
-rw-r--r--thirdparty/opus/silk/float/pitch_analysis_core_FLP.c630
-rw-r--r--thirdparty/opus/silk/float/prefilter_FLP.c206
-rw-r--r--thirdparty/opus/silk/float/process_gains_FLP.c103
-rw-r--r--thirdparty/opus/silk/float/regularize_correlations_FLP.c48
-rw-r--r--thirdparty/opus/silk/float/residual_energy_FLP.c117
-rw-r--r--thirdparty/opus/silk/float/scale_copy_vector_FLP.c57
-rw-r--r--thirdparty/opus/silk/float/scale_vector_FLP.c56
-rw-r--r--thirdparty/opus/silk/float/schur_FLP.c70
-rw-r--r--thirdparty/opus/silk/float/solve_LS_FLP.c207
-rw-r--r--thirdparty/opus/silk/float/sort_FLP.c83
-rw-r--r--thirdparty/opus/silk/float/structs_FLP.h132
-rw-r--r--thirdparty/opus/silk/float/warped_autocorrelation_FLP.c73
-rw-r--r--thirdparty/opus/silk/float/wrappers_FLP.c202
-rw-r--r--thirdparty/opus/silk/gain_quant.c141
-rw-r--r--thirdparty/opus/silk/init_decoder.c56
-rw-r--r--thirdparty/opus/silk/init_encoder.c64
-rw-r--r--thirdparty/opus/silk/inner_prod_aligned.c47
-rw-r--r--thirdparty/opus/silk/interpolate.c51
-rw-r--r--thirdparty/opus/silk/lin2log.c46
-rw-r--r--thirdparty/opus/silk/log2lin.c58
-rw-r--r--thirdparty/opus/silk/macros.h159
-rw-r--r--thirdparty/opus/silk/main.h471
-rw-r--r--thirdparty/opus/silk/mips/NSQ_del_dec_mipsr1.h409
-rw-r--r--thirdparty/opus/silk/mips/macros_mipsr1.h92
-rw-r--r--thirdparty/opus/silk/mips/sigproc_fix_mipsr1.h65
-rw-r--r--thirdparty/opus/silk/pitch_est_defines.h88
-rw-r--r--thirdparty/opus/silk/pitch_est_tables.c99
-rw-r--r--thirdparty/opus/silk/process_NLSFs.c107
-rw-r--r--thirdparty/opus/silk/quant_LTP_gains.c129
-rw-r--r--thirdparty/opus/silk/resampler.c215
-rw-r--r--thirdparty/opus/silk/resampler_down2.c74
-rw-r--r--thirdparty/opus/silk/resampler_down2_3.c103
-rw-r--r--thirdparty/opus/silk/resampler_private.h88
-rw-r--r--thirdparty/opus/silk/resampler_private_AR2.c55
-rw-r--r--thirdparty/opus/silk/resampler_private_IIR_FIR.c107
-rw-r--r--thirdparty/opus/silk/resampler_private_down_FIR.c194
-rw-r--r--thirdparty/opus/silk/resampler_private_up2_HQ.c113
-rw-r--r--thirdparty/opus/silk/resampler_rom.c96
-rw-r--r--thirdparty/opus/silk/resampler_rom.h68
-rw-r--r--thirdparty/opus/silk/resampler_structs.h60
-rw-r--r--thirdparty/opus/silk/shell_coder.c151
-rw-r--r--thirdparty/opus/silk/sigm_Q15.c76
-rw-r--r--thirdparty/opus/silk/sort.c154
-rw-r--r--thirdparty/opus/silk/stereo_LR_to_MS.c229
-rw-r--r--thirdparty/opus/silk/stereo_MS_to_LR.c85
-rw-r--r--thirdparty/opus/silk/stereo_decode_pred.c73
-rw-r--r--thirdparty/opus/silk/stereo_encode_pred.c62
-rw-r--r--thirdparty/opus/silk/stereo_find_predictor.c79
-rw-r--r--thirdparty/opus/silk/stereo_quant_pred.c73
-rw-r--r--thirdparty/opus/silk/structs.h327
-rw-r--r--thirdparty/opus/silk/sum_sqr_shift.c86
-rw-r--r--thirdparty/opus/silk/table_LSF_cos.c70
-rw-r--r--thirdparty/opus/silk/tables.h122
-rw-r--r--thirdparty/opus/silk/tables_LTP.c296
-rw-r--r--thirdparty/opus/silk/tables_NLSF_CB_NB_MB.c159
-rw-r--r--thirdparty/opus/silk/tables_NLSF_CB_WB.c198
-rw-r--r--thirdparty/opus/silk/tables_gain.c63
-rw-r--r--thirdparty/opus/silk/tables_other.c138
-rw-r--r--thirdparty/opus/silk/tables_pitch_lag.c69
-rw-r--r--thirdparty/opus/silk/tables_pulses_per_block.c264
-rw-r--r--thirdparty/opus/silk/tuning_parameters.h171
-rw-r--r--thirdparty/opus/silk/typedef.h78
-rw-r--r--thirdparty/opus/silk/x86/NSQ_del_dec_sse.c857
-rw-r--r--thirdparty/opus/silk/x86/NSQ_sse.c720
-rw-r--r--thirdparty/opus/silk/x86/SigProc_FIX_sse.h94
-rw-r--r--thirdparty/opus/silk/x86/VAD_sse.c277
-rw-r--r--thirdparty/opus/silk/x86/VQ_WMat_EC_sse.c142
-rw-r--r--thirdparty/opus/silk/x86/main_sse.h277
-rw-r--r--thirdparty/opus/silk/x86/x86_silk_map.c174
-rw-r--r--thirdparty/opus/stream.c366
-rw-r--r--thirdparty/opus/tansig_table.h45
1278 files changed, 157718 insertions, 251006 deletions
diff --git a/.clang-format b/.clang-format
index 1c26421a7f..9ddb19e57c 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,31 +1,41 @@
-# Commented out parameters are those with the same value as base LLVM style
+# Commented out parameters are those with the same value as base LLVM style.
# We can uncomment them if we want to change their value, or enforce the
-# chosen value in case the base style changes (last sync: Clang 6.0.1).
+# chosen value in case the base style changes (last sync: Clang 13.0).
---
### General config, applies to all languages ###
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: DontAlign
-# AlignConsecutiveAssignments: false
-# AlignConsecutiveDeclarations: false
+# AlignArrayOfStructures: None
+# AlignConsecutiveMacros: None
+# AlignConsecutiveAssignments: None
+# AlignConsecutiveBitFields: None
+# AlignConsecutiveDeclarations: None
# AlignEscapedNewlines: Right
-# AlignOperands: true
+# AlignOperands: Align
AlignTrailingComments: false
+# AllowAllArgumentsOnNextLine: true
+# AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: false
-# AllowShortBlocksOnASingleLine: false
+# AllowShortEnumsOnASingleLine: true
+# AllowShortBlocksOnASingleLine: Never
# AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
-# AllowShortIfStatementsOnASingleLine: false
+# AllowShortLambdasOnASingleLine: All
+# AllowShortIfStatementsOnASingleLine: Never
# AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType: None
# AlwaysBreakAfterReturnType: None
# AlwaysBreakBeforeMultilineStrings: false
-# AlwaysBreakTemplateDeclarations: false
+# AlwaysBreakTemplateDeclarations: MultiLine
+# AttributeMacros:
+# - __capability
# BinPackArguments: true
# BinPackParameters: true
# BraceWrapping:
+# AfterCaseLabel: false
# AfterClass: false
-# AfterControlStatement: false
+# AfterControlStatement: Never
# AfterEnum: false
# AfterFunction: false
# AfterNamespace: false
@@ -35,13 +45,17 @@ AllowShortFunctionsOnASingleLine: Inline
# AfterExternBlock: false
# BeforeCatch: false
# BeforeElse: false
+# BeforeLambdaBody: false
+# BeforeWhile: false
# IndentBraces: false
# SplitEmptyFunction: true
# SplitEmptyRecord: true
# SplitEmptyNamespace: true
# BreakBeforeBinaryOperators: None
+# BreakBeforeConceptDeclarations: true
# BreakBeforeBraces: Attach
# BreakBeforeInheritanceComma: false
+# BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: false
# BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: AfterColon
@@ -53,14 +67,19 @@ ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8
Cpp11BracedListStyle: false
+# DeriveLineEnding: true
# DerivePointerAlignment: false
# DisableFormat: false
+# EmptyLineAfterAccessModifier: Never
+# EmptyLineBeforeAccessModifier: LogicalBlock
# ExperimentalAutoDetectBinPacking: false
# FixNamespaceComments: true
# ForEachMacros:
# - foreach
# - Q_FOREACH
# - BOOST_FOREACH
+# IfMacros:
+# - KJ_IF_MAYBE
# IncludeBlocks: Preserve
IncludeCategories:
- Regex: '".*"'
@@ -70,13 +89,21 @@ IncludeCategories:
- Regex: '^<.*'
Priority: 3
# IncludeIsMainRegex: '(Test)?$'
+# IncludeIsMainSourceRegex: ''
+# IndentAccessModifiers: false
IndentCaseLabels: true
+# IndentCaseBlocks: false
+# IndentGotoLabels: true
# IndentPPDirectives: None
+# IndentExternBlock: AfterExternBlock
+# IndentRequires: false
IndentWidth: 4
# IndentWrappedFunctionNames: false
+# InsertTrailingCommas: None
# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
+# LambdaBodyIndentation: Signature
# MacroBlockBegin: ''
# MacroBlockEnd: ''
# MaxEmptyLinesToKeep: 1
@@ -86,38 +113,72 @@ KeepEmptyLinesAtTheStartOfBlocks: false
# PenaltyBreakComment: 300
# PenaltyBreakFirstLessLess: 120
# PenaltyBreakString: 1000
+# PenaltyBreakTemplateDeclaration: 10
# PenaltyExcessCharacter: 1000000
# PenaltyReturnTypeOnItsOwnLine: 60
+# PenaltyIndentedWhitespace: 0
# PointerAlignment: Right
-# RawStringFormats:
-# - Delimiter: pb
-# Language: TextProto
-# BasedOnStyle: google
+# PPIndentWidth: -1
+# ReferenceAlignment: Pointer
# ReflowComments: true
-# SortIncludes: true
+# ShortNamespaceLines: 1
+# SortIncludes: CaseSensitive
+# SortJavaStaticImport: Before
# SortUsingDeclarations: true
# SpaceAfterCStyleCast: false
+# SpaceAfterLogicalNot: false
# SpaceAfterTemplateKeyword: true
# SpaceBeforeAssignmentOperators: true
+# SpaceBeforeCaseColon: false
+# SpaceBeforeCpp11BracedList: false
+# SpaceBeforeCtorInitializerColon: true
+# SpaceBeforeInheritanceColon: true
# SpaceBeforeParens: ControlStatements
+# SpaceAroundPointerQualifiers: Default
+# SpaceBeforeRangeBasedForLoopColon: true
# SpaceInEmptyParentheses: false
# SpacesBeforeTrailingComments: 1
-# SpacesInAngles: false
+# SpaceInEmptyBlock: false
+# SpaceInEmptyParentheses: false
+# SpacesBeforeTrailingComments: 1
+# SpacesInAngles: Never
+# SpacesInContainerLiterals: true
+# SpacesInConditionalStatement: false
# SpacesInContainerLiterals: true
# SpacesInCStyleCastParentheses: false
+## Godot TODO: We'll want to use a min of 1, but we need to see how to fix
+## our comment capitalization at the same time.
+SpacesInLineCommentPrefix:
+ Minimum: 0
+ Maximum: -1
# SpacesInParentheses: false
# SpacesInSquareBrackets: false
+# SpaceBeforeSquareBrackets: false
+# BitFieldColonSpacing: Both
+# StatementAttributeLikeMacros:
+# - Q_EMIT
+# StatementMacros:
+# - Q_UNUSED
+# - QT_REQUIRE_VERSION
TabWidth: 4
+# UseCRLF: false
UseTab: Always
+# WhitespaceSensitiveMacros:
+# - STRINGIZE
+# - PP_STRINGIZE
+# - BOOST_PP_STRINGIZE
+# - NS_SWIFT_NAME
+# - CF_SWIFT_NAME
---
### C++ specific config ###
Language: Cpp
-Standard: Cpp11
+Standard: c++17
---
### ObjC specific config ###
Language: ObjC
-Standard: Cpp11
+# ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
+# ObjCBreakBeforeNestedBlockParam: true
# ObjCSpaceAfterProperty: false
# ObjCSpaceBeforeProtocolList: true
---
diff --git a/.gitattributes b/.gitattributes
index 88c00855d8..45ea6c25e8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -5,6 +5,8 @@ thirdparty/* linguist-vendored
# Normalize EOL for all files that Git considers text files
* text=auto eol=lf
+# Except for bat files, which are Windows only files
+*.bat eol=crlf
# The above only works properly for Git 2.10+, so for older versions
# we need to manually list the binary files we don't want modified.
diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml
index 8a49959a30..f6d11e2efe 100644
--- a/.github/workflows/linux_builds.yml
+++ b/.github/workflows/linux_builds.yml
@@ -34,6 +34,7 @@ jobs:
tests: true
sconsflags: use_asan=yes use_ubsan=yes
proj-test: true
+ godot-cpp-test: true
bin: "./bin/godot.linuxbsd.tools.64s"
# Skip 2GiB artifact speeding up action.
artifact: false
@@ -85,6 +86,15 @@ jobs:
run: |
${{ matrix.bin }} --test
+ # Check class reference
+ - name: Check for class reference updates
+ if: ${{ matrix.doc-test }}
+ run: |
+ echo "Running --doctool to see if this changes the public API without updating the documentation."
+ echo -e "If a diff is shown, it means that your code/doc changes are incomplete and you should update the class reference with --doctool.\n\n"
+ ${{ matrix.bin }} --doctool --headless 2>&1 > /dev/null || true
+ git diff --color --exit-code && ! git ls-files --others --exclude-standard | sed -e 's/^/New doc file missing in PR: /' | grep 'xml$'
+
# Download, unzip and setup SwiftShader library [4466040]
- name: Download SwiftShader
if: ${{ matrix.tests }}
@@ -95,15 +105,6 @@ jobs:
curr="$(pwd)/libvk_swiftshader.so"
sed -i "s|PATH_TO_CHANGE|$curr|" vk_swiftshader_icd.json
- # Check class reference
- - name: Check for class reference updates
- if: ${{ matrix.doc-test }}
- run: |
- echo "Running --doctool to see if this changes the public API without updating the documentation."
- echo -e "If a diff is shown, it means that your code/doc changes are incomplete and you should update the class reference with --doctool.\n\n"
- VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --doctool . 2>&1 > /dev/null || true
- git diff --color --exit-code && ! git ls-files --others --exclude-standard | sed -e 's/^/New doc file missing in PR: /' | grep 'xml$'
-
# 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 }}
@@ -126,6 +127,46 @@ jobs:
VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} 40 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true
misc/scripts/check_ci_log.py sanitizers_log.txt
+ # Checkout godot-cpp
+ - name: Checkout godot-cpp
+ if: ${{ matrix.godot-cpp-test }}
+ uses: actions/checkout@v2
+ with:
+ repository: godotengine/godot-cpp
+ submodules: 'recursive'
+ path: 'godot-cpp'
+
+ # Check extension API
+ - name: Check for extension api updates
+ if: ${{ matrix.godot-cpp-test }}
+ run: |
+ echo "Running --dump-extension-api to create extensions api."
+ VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy --dump-extension-api 2>&1 > /dev/null || true
+ misc/scripts/compare_extension_api.py godot-cpp/godot-headers/extension_api.json extension_api.json
+
+ # Copy new extension API files into place
+ - name: Copy new extension API files into place
+ if: ${{ matrix.godot-cpp-test }}
+ run: |
+ cp -f extension_api.json godot-cpp/godot-headers/
+ cp -f core/extension/gdnative_interface.h godot-cpp/godot-headers/godot/
+
+ # Build godot-cpp library
+ - name: Build godot-cpp library
+ if: ${{ matrix.godot-cpp-test }}
+ run: |
+ cd godot-cpp
+ scons target=${{ matrix.target }} generate_bindings=yes -j2
+ cd ..
+
+ # Build godot-cpp test extension
+ - name: Build godot-cpp test extension
+ if: ${{ matrix.godot-cpp-test }}
+ run: |
+ cd godot-cpp/test
+ scons target=${{ matrix.target }} -j2
+ cd ../..
+
- name: Prepare artifact
if: ${{ matrix.artifact }}
run: |
diff --git a/.gitignore b/.gitignore
index 5b3414fe7e..5a8f6aec40 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,9 @@
# Documentation generated by doxygen or from classes.xml
doc/_build/
+# Extension API dump
+extension_api.json
+
# Javascript specific
*.bc
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index 8ad6997463..ca7f065bd6 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -235,16 +235,6 @@ Copyright: 1995-2019, The PNG Reference Library Authors.
1995-1996, Guy Eric Schalnat, Group 42, Inc.
License: Zlib
-Files: ./thirdparty/libsimplewebm/
-Comment: libsimplewebm
-Copyright: 2016, Błażej Szczygieł
-License: Expat
-
-Files: ./thirdparty/libsimplewebm/libwebm/
-Comment: The WebM Project
-Copyright: 2010, Google Inc.
-License: BSD-3-clause
-
Files: ./thirdparty/libtheora/
Comment: OggTheora
Copyright: 2002-2009, Xiph.org Foundation
@@ -255,17 +245,6 @@ Comment: OggVorbis
Copyright: 2002-2015, Xiph.org Foundation
License: BSD-3-clause
-Files: ./thirdparty/libvpx/
-Comment: The WebM Project
-Copyright: 2010, The WebM Project authors.
-License: BSD-3-clause
-
-Files: ./thirdparty/libvpx/third_party/android/cpu-features.c
- ./thirdparty/libvpx/third_party/android/cpu-features.h
-Comment: The Android Open Source Project
-Copyright: 2010, The Android Open Source Project
-License: BSD-2-clause
-
Files: ./thirdparty/libwebp/
Comment: WebP codec
Copyright: 2010, Google Inc.
@@ -388,14 +367,6 @@ Comment: Intel Open Image Denoise
Copyright: 2009-2019, Intel Corporation
License: Apache-2.0
-Files: ./thirdparty/opus/
-Comment: Opus
-Copyright: 2001-2011, Xiph.Org, Skype Limited, Octasic,
- Jean-Marc Valin, Timothy B. Terriberry,
- CSIRO, Gregory Maxwell, Mark Borgerding,
- Erik de Castro Lopo
-License: BSD-3-clause
-
Files: ./thirdparty/pcre2/
Comment: PCRE2
Copyright: 1997-2020, University of Cambridge
diff --git a/SConstruct b/SConstruct
index b539dc59b7..94bc53eaa5 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,7 +1,7 @@
#!/usr/bin/env python
EnsureSConsVersion(3, 0, 0)
-EnsurePythonVersion(3, 5)
+EnsurePythonVersion(3, 6)
# System
import atexit
@@ -166,12 +166,10 @@ opts.Add(BoolVariable("builtin_libogg", "Use the built-in libogg library", True)
opts.Add(BoolVariable("builtin_libpng", "Use the built-in libpng library", True))
opts.Add(BoolVariable("builtin_libtheora", "Use the built-in libtheora library", True))
opts.Add(BoolVariable("builtin_libvorbis", "Use the built-in libvorbis library", True))
-opts.Add(BoolVariable("builtin_libvpx", "Use the built-in libvpx library", True))
opts.Add(BoolVariable("builtin_libwebp", "Use the built-in libwebp library", True))
opts.Add(BoolVariable("builtin_wslay", "Use the built-in wslay library", True))
opts.Add(BoolVariable("builtin_mbedtls", "Use the built-in mbedTLS library", True))
opts.Add(BoolVariable("builtin_miniupnpc", "Use the built-in miniupnpc library", True))
-opts.Add(BoolVariable("builtin_opus", "Use the built-in Opus library", True))
opts.Add(BoolVariable("builtin_pcre2", "Use the built-in PCRE2 library", True))
opts.Add(BoolVariable("builtin_pcre2_with_jit", "Use JIT compiler for the built-in PCRE2 library", True))
opts.Add(BoolVariable("builtin_recast", "Use the built-in Recast library", True))
@@ -308,21 +306,19 @@ env_base.Prepend(CPPPATH=["#"])
env_base.platform_exporters = platform_exporters
env_base.platform_apis = platform_apis
-if env_base["use_precise_math_checks"]:
- env_base.Append(CPPDEFINES=["PRECISE_MATH_CHECKS"])
+# Build type defines - more platform-specific ones can be in detect.py.
+if env_base["target"] == "release_debug" or env_base["target"] == "debug":
+ # DEBUG_ENABLED enables debugging *features* and debug-only code, which is intended
+ # to give *users* extra debugging information for their game development.
+ env_base.Append(CPPDEFINES=["DEBUG_ENABLED"])
if env_base["target"] == "debug":
- env_base.Append(CPPDEFINES=["DEBUG_MEMORY_ALLOC", "DISABLE_FORCED_INLINE"])
-
- # The two options below speed up incremental builds, but reduce the certainty that all files
- # will properly be rebuilt. As such, we only enable them for debug (dev) builds, not release.
+ # DEV_ENABLED enables *engine developer* code which should only be compiled for those
+ # working on the engine itself.
+ env_base.Append(CPPDEFINES=["DEV_ENABLED"])
- # To decide whether to rebuild a file, use the MD5 sum only if the timestamp has changed.
- # https://scons.org/doc/production/HTML/scons-user/ch06.html#idm139837621851792
- env_base.Decider("MD5-timestamp")
- # Use cached implicit dependencies by default. Can be overridden by specifying `--implicit-deps-changed` in the command line.
- # https://scons.org/doc/production/HTML/scons-user/ch06s04.html
- env_base.SetOption("implicit_cache", 1)
+if env_base["use_precise_math_checks"]:
+ env_base.Append(CPPDEFINES=["PRECISE_MATH_CHECKS"])
if env_base["no_editor_splash"]:
env_base.Append(CPPDEFINES=["NO_EDITOR_SPLASH"])
diff --git a/core/SCsub b/core/SCsub
index 14dfa3487f..c12dd4e60e 100644
--- a/core/SCsub
+++ b/core/SCsub
@@ -146,6 +146,7 @@ env.core_sources += thirdparty_obj
# Godot source files
env.add_source_files(env.core_sources, "*.cpp")
+env.add_source_files(env.core_sources, "script_encryption_key.gen.cpp")
# Certificates
env.Depends(
diff --git a/core/config/engine.cpp b/core/config/engine.cpp
index d8fbb50a75..dc5b3e25c6 100644
--- a/core/config/engine.cpp
+++ b/core/config/engine.cpp
@@ -111,7 +111,7 @@ Dictionary Engine::get_version_info() const {
static Array array_from_info(const char *const *info_list) {
Array arr;
for (int i = 0; info_list[i] != nullptr; i++) {
- arr.push_back(info_list[i]);
+ arr.push_back(String::utf8(info_list[i]));
}
return arr;
}
@@ -119,7 +119,7 @@ static Array array_from_info(const char *const *info_list) {
static Array array_from_info_count(const char *const *info_list, int info_count) {
Array arr;
for (int i = 0; i < info_count; i++) {
- arr.push_back(info_list[i]);
+ arr.push_back(String::utf8(info_list[i]));
}
return arr;
}
@@ -140,14 +140,14 @@ Array Engine::get_copyright_info() const {
for (int component_index = 0; component_index < COPYRIGHT_INFO_COUNT; component_index++) {
const ComponentCopyright &cp_info = COPYRIGHT_INFO[component_index];
Dictionary component_dict;
- component_dict["name"] = cp_info.name;
+ component_dict["name"] = String::utf8(cp_info.name);
Array parts;
for (int i = 0; i < cp_info.part_count; i++) {
const ComponentCopyrightPart &cp_part = cp_info.parts[i];
Dictionary part_dict;
part_dict["files"] = array_from_info_count(cp_part.files, cp_part.file_count);
part_dict["copyright"] = array_from_info_count(cp_part.copyright_statements, cp_part.copyright_count);
- part_dict["license"] = cp_part.license;
+ part_dict["license"] = String::utf8(cp_part.license);
parts.push_back(part_dict);
}
component_dict["parts"] = parts;
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp
index 562cbbdd27..f37e7f5956 100644
--- a/core/config/project_settings.cpp
+++ b/core/config/project_settings.cpp
@@ -42,6 +42,8 @@
#include "core/os/os.h"
#include "core/variant/variant_parser.h"
+const String ProjectSettings::PROJECT_DATA_DIR_NAME_SUFFIX = "godot";
+
ProjectSettings *ProjectSettings::singleton = nullptr;
ProjectSettings *ProjectSettings::get_singleton() {
@@ -521,7 +523,8 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
}
// Updating the default value after the project settings have loaded.
- project_data_dir_name = GLOBAL_GET("application/config/project_data_dir_name");
+ bool use_hidden_directory = GLOBAL_GET("application/config/use_hidden_project_data_directory");
+ project_data_dir_name = (use_hidden_directory ? "." : "") + PROJECT_DATA_DIR_NAME_SUFFIX;
// Using GLOBAL_GET on every block for compressing can be slow, so assigning here.
Compression::zstd_long_distance_matching = GLOBAL_GET("compression/formats/zstd/long_distance_matching");
@@ -1094,7 +1097,7 @@ ProjectSettings::ProjectSettings() {
custom_prop_info["application/run/main_scene"] = PropertyInfo(Variant::STRING, "application/run/main_scene", PROPERTY_HINT_FILE, "*.tscn,*.scn,*.res");
GLOBAL_DEF("application/run/disable_stdout", false);
GLOBAL_DEF("application/run/disable_stderr", false);
- project_data_dir_name = GLOBAL_DEF_RST("application/config/project_data_dir_name", ".godot");
+ GLOBAL_DEF_RST("application/config/use_hidden_project_data_directory", true);
GLOBAL_DEF("application/config/use_custom_user_dir", false);
GLOBAL_DEF("application/config/custom_user_dir_name", "");
GLOBAL_DEF("application/config/project_settings_override", "");
diff --git a/core/config/project_settings.h b/core/config/project_settings.h
index 82f04b94df..ca37401751 100644
--- a/core/config/project_settings.h
+++ b/core/config/project_settings.h
@@ -42,6 +42,7 @@ class ProjectSettings : public Object {
public:
typedef Map<String, Variant> CustomMap;
+ static const String PROJECT_DATA_DIR_NAME_SUFFIX;
enum {
//properties that are not for built in values begin from this value, so builtin ones are displayed first
diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index e11d9ab9c1..3a4fddc670 100644
--- a/core/core_bind.cpp
+++ b/core/core_bind.cpp
@@ -1077,79 +1077,79 @@ bool File::is_open() const {
}
String File::get_path() const {
- ERR_FAIL_COND_V_MSG(!f, "", "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, "", "File must be opened before use, or is lacking read-write permission.");
return f->get_path();
}
String File::get_path_absolute() const {
- ERR_FAIL_COND_V_MSG(!f, "", "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, "", "File must be opened before use, or is lacking read-write permission.");
return f->get_path_absolute();
}
void File::seek(int64_t p_position) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
ERR_FAIL_COND_MSG(p_position < 0, "Seek position must be a positive integer.");
f->seek(p_position);
}
void File::seek_end(int64_t p_position) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->seek_end(p_position);
}
uint64_t File::get_position() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_position();
}
uint64_t File::get_length() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_length();
}
bool File::eof_reached() const {
- ERR_FAIL_COND_V_MSG(!f, false, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, false, "File must be opened before use, or is lacking read-write permission.");
return f->eof_reached();
}
uint8_t File::get_8() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_8();
}
uint16_t File::get_16() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_16();
}
uint32_t File::get_32() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_32();
}
uint64_t File::get_64() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_64();
}
float File::get_float() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_float();
}
double File::get_double() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_double();
}
real_t File::get_real() const {
- ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, 0, "File must be opened before use, or is lacking read-write permission.");
return f->get_real();
}
Vector<uint8_t> File::get_buffer(int64_t p_length) const {
Vector<uint8_t> data;
- ERR_FAIL_COND_V_MSG(!f, data, "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, data, "File must be opened before use, or is lacking read-write permission.");
ERR_FAIL_COND_V_MSG(p_length < 0, data, "Length of buffer cannot be smaller than 0.");
if (p_length == 0) {
@@ -1170,7 +1170,7 @@ Vector<uint8_t> File::get_buffer(int64_t p_length) const {
}
String File::get_as_text() const {
- ERR_FAIL_COND_V_MSG(!f, String(), "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, String(), "File must be opened before use, or is lacking read-write permission.");
String text;
uint64_t original_pos = f->get_position();
@@ -1197,12 +1197,12 @@ String File::get_sha256(const String &p_path) const {
}
String File::get_line() const {
- ERR_FAIL_COND_V_MSG(!f, String(), "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, String(), "File must be opened before use, or is lacking read-write permission.");
return f->get_line();
}
Vector<String> File::get_csv_line(const String &p_delim) const {
- ERR_FAIL_COND_V_MSG(!f, Vector<String>(), "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, Vector<String>(), "File must be opened before use, or is lacking read-write permission.");
return f->get_csv_line(p_delim);
}
@@ -1230,77 +1230,77 @@ Error File::get_error() const {
}
void File::store_8(uint8_t p_dest) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_8(p_dest);
}
void File::store_16(uint16_t p_dest) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_16(p_dest);
}
void File::store_32(uint32_t p_dest) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_32(p_dest);
}
void File::store_64(uint64_t p_dest) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_64(p_dest);
}
void File::store_float(float p_dest) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_float(p_dest);
}
void File::store_double(double p_dest) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_double(p_dest);
}
void File::store_real(real_t p_real) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_real(p_real);
}
void File::store_string(const String &p_string) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_string(p_string);
}
void File::store_pascal_string(const String &p_string) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_pascal_string(p_string);
}
String File::get_pascal_string() {
- ERR_FAIL_COND_V_MSG(!f, "", "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, "", "File must be opened before use, or is lacking read-write permission.");
return f->get_pascal_string();
}
void File::store_line(const String &p_string) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_line(p_string);
}
void File::store_csv_line(const Vector<String> &p_values, const String &p_delim) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
f->store_csv_line(p_values, p_delim);
}
void File::store_buffer(const Vector<uint8_t> &p_buffer) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
uint64_t len = p_buffer.size();
if (len == 0) {
@@ -1317,7 +1317,7 @@ bool File::file_exists(const String &p_name) const {
}
void File::store_var(const Variant &p_var, bool p_full_objects) {
- ERR_FAIL_COND_MSG(!f, "File must be opened before use.");
+ ERR_FAIL_COND_MSG(!f, "File must be opened before use, or is lacking read-write permission.");
int len;
Error err = encode_variant(p_var, nullptr, len, p_full_objects);
ERR_FAIL_COND_MSG(err != OK, "Error when trying to encode Variant.");
@@ -1334,7 +1334,7 @@ void File::store_var(const Variant &p_var, bool p_full_objects) {
}
Variant File::get_var(bool p_allow_objects) const {
- ERR_FAIL_COND_V_MSG(!f, Variant(), "File must be opened before use.");
+ ERR_FAIL_COND_V_MSG(!f, Variant(), "File must be opened before use, or is lacking read-write permission.");
uint32_t len = get_32();
Vector<uint8_t> buff = get_buffer(len);
ERR_FAIL_COND_V((uint32_t)buff.size() != len, Variant());
diff --git a/core/debugger/engine_debugger.h b/core/debugger/engine_debugger.h
index 22c6ef943e..41142bf305 100644
--- a/core/debugger/engine_debugger.h
+++ b/core/debugger/engine_debugger.h
@@ -128,7 +128,7 @@ public:
virtual void poll_events(bool p_is_idle) {}
virtual void send_message(const String &p_msg, const Array &p_data) = 0;
- virtual void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type) = 0;
+ virtual void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, bool p_editor_notify, ErrorHandlerType p_type) = 0;
virtual void debug(bool p_can_continue = true, bool p_is_error_breakpoint = false) = 0;
virtual ~EngineDebugger();
diff --git a/core/debugger/local_debugger.cpp b/core/debugger/local_debugger.cpp
index f7e56351b0..60aa3e6be7 100644
--- a/core/debugger/local_debugger.cpp
+++ b/core/debugger/local_debugger.cpp
@@ -358,7 +358,7 @@ void LocalDebugger::send_message(const String &p_message, const Array &p_args) {
// print_line("MESSAGE: '" + p_message + "' - " + String(Variant(p_args)));
}
-void LocalDebugger::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type) {
+void LocalDebugger::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, bool p_editor_notify, ErrorHandlerType p_type) {
print_line("ERROR: '" + (p_descr.is_empty() ? p_err : p_descr) + "'");
}
diff --git a/core/debugger/local_debugger.h b/core/debugger/local_debugger.h
index e793b2a859..cb59eb82e9 100644
--- a/core/debugger/local_debugger.h
+++ b/core/debugger/local_debugger.h
@@ -50,7 +50,7 @@ private:
public:
void debug(bool p_can_continue, bool p_is_error_breakpoint);
void send_message(const String &p_message, const Array &p_args);
- void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type);
+ void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, bool p_editor_notify, ErrorHandlerType p_type);
LocalDebugger();
~LocalDebugger();
diff --git a/core/debugger/remote_debugger.cpp b/core/debugger/remote_debugger.cpp
index 032c7d55c0..9967d1e361 100644
--- a/core/debugger/remote_debugger.cpp
+++ b/core/debugger/remote_debugger.cpp
@@ -455,7 +455,7 @@ Error RemoteDebugger::_put_msg(String p_message, Array p_data) {
return err;
}
-void RemoteDebugger::_err_handler(void *p_this, const char *p_func, const char *p_file, int p_line, const char *p_err, const char *p_descr, ErrorHandlerType p_type) {
+void RemoteDebugger::_err_handler(void *p_this, const char *p_func, const char *p_file, int p_line, const char *p_err, const char *p_descr, bool p_editor_notify, ErrorHandlerType p_type) {
if (p_type == ERR_HANDLER_SCRIPT) {
return; //ignore script errors, those go through debugger
}
@@ -475,7 +475,7 @@ void RemoteDebugger::_err_handler(void *p_this, const char *p_func, const char *
}
// send_error will lock internally.
- rd->script_debugger->send_error(p_func, p_file, p_line, p_err, p_descr, p_type, si);
+ rd->script_debugger->send_error(p_func, p_file, p_line, p_err, p_descr, p_editor_notify, p_type, si);
}
void RemoteDebugger::_print_handler(void *p_this, const String &p_string, bool p_error) {
@@ -605,7 +605,7 @@ void RemoteDebugger::send_message(const String &p_message, const Array &p_args)
}
}
-void RemoteDebugger::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type) {
+void RemoteDebugger::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, bool p_editor_notify, ErrorHandlerType p_type) {
ErrorMessage oe;
oe.error = p_err;
oe.error_descr = p_descr;
diff --git a/core/debugger/remote_debugger.h b/core/debugger/remote_debugger.h
index 28e670747e..73799e3f81 100644
--- a/core/debugger/remote_debugger.h
+++ b/core/debugger/remote_debugger.h
@@ -89,7 +89,7 @@ private:
PrintHandlerList phl;
static void _print_handler(void *p_this, const String &p_string, bool p_error);
ErrorHandlerList eh;
- static void _err_handler(void *p_this, const char *p_func, const char *p_file, int p_line, const char *p_err, const char *p_descr, ErrorHandlerType p_type);
+ static void _err_handler(void *p_this, const char *p_func, const char *p_file, int p_line, const char *p_err, const char *p_descr, bool p_editor_notify, ErrorHandlerType p_type);
ErrorMessage _create_overflow_error(const String &p_what, const String &p_descr);
Error _put_msg(String p_message, Array p_data);
@@ -111,7 +111,7 @@ public:
// Overrides
void poll_events(bool p_is_idle);
void send_message(const String &p_message, const Array &p_args);
- void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type);
+ void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, bool p_editor_notify, ErrorHandlerType p_type);
void debug(bool p_can_continue = true, bool p_is_error_breakpoint = false);
RemoteDebugger(Ref<RemoteDebuggerPeer> p_peer);
diff --git a/core/debugger/script_debugger.cpp b/core/debugger/script_debugger.cpp
index 6d1e4ed101..70ec101a03 100644
--- a/core/debugger/script_debugger.cpp
+++ b/core/debugger/script_debugger.cpp
@@ -100,10 +100,10 @@ void ScriptDebugger::debug(ScriptLanguage *p_lang, bool p_can_continue, bool p_i
break_lang = prev;
}
-void ScriptDebugger::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<StackInfo> &p_stack_info) {
+void ScriptDebugger::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, bool p_editor_notify, ErrorHandlerType p_type, const Vector<StackInfo> &p_stack_info) {
// Store stack info, this is ugly, but allows us to separate EngineDebugger and ScriptDebugger. There might be a better way.
error_stack_info.append_array(p_stack_info);
- EngineDebugger::get_singleton()->send_error(p_func, p_file, p_line, p_err, p_descr, p_type);
+ EngineDebugger::get_singleton()->send_error(p_func, p_file, p_line, p_err, p_descr, p_editor_notify, p_type);
error_stack_info.resize(0);
}
diff --git a/core/debugger/script_debugger.h b/core/debugger/script_debugger.h
index 9f034a5e5d..c1d0170334 100644
--- a/core/debugger/script_debugger.h
+++ b/core/debugger/script_debugger.h
@@ -71,7 +71,7 @@ public:
void debug(ScriptLanguage *p_lang, bool p_can_continue = true, bool p_is_error_breakpoint = false);
ScriptLanguage *get_break_language() const;
- void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<StackInfo> &p_stack_info);
+ void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, bool p_editor_notify, ErrorHandlerType p_type, const Vector<StackInfo> &p_stack_info);
Vector<StackInfo> get_error_stack_info() const;
ScriptDebugger() {}
};
diff --git a/core/error/error_macros.cpp b/core/error/error_macros.cpp
index 272dda97d8..719ea8afb5 100644
--- a/core/error/error_macros.cpp
+++ b/core/error/error_macros.cpp
@@ -65,45 +65,49 @@ void remove_error_handler(ErrorHandlerList *p_handler) {
_global_unlock();
}
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, ErrorHandlerType p_type) {
- _err_print_error(p_function, p_file, p_line, p_error, "", p_type);
+// Errors without messages.
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, bool p_editor_notify, ErrorHandlerType p_type) {
+ _err_print_error(p_function, p_file, p_line, p_error, "", p_editor_notify, p_type);
}
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, ErrorHandlerType p_type) {
- _err_print_error(p_function, p_file, p_line, p_error.utf8().get_data(), "", p_type);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, bool p_editor_notify, ErrorHandlerType p_type) {
+ _err_print_error(p_function, p_file, p_line, p_error.utf8().get_data(), "", p_editor_notify, p_type);
}
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_message, ErrorHandlerType p_type) {
+// Main error printing function.
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_message, bool p_editor_notify, ErrorHandlerType p_type) {
OS::get_singleton()->print_error(p_function, p_file, p_line, p_error, p_message, (Logger::ErrorType)p_type);
_global_lock();
ErrorHandlerList *l = error_handler_list;
while (l) {
- l->errfunc(l->userdata, p_function, p_file, p_line, p_error, p_message, p_type);
+ l->errfunc(l->userdata, p_function, p_file, p_line, p_error, p_message, p_editor_notify, p_type);
l = l->next;
}
_global_unlock();
}
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const char *p_message, ErrorHandlerType p_type) {
- _err_print_error(p_function, p_file, p_line, p_error.utf8().get_data(), p_message, p_type);
+// Errors with message. (All combinations of p_error and p_message as String or char*.)
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const char *p_message, bool p_editor_notify, ErrorHandlerType p_type) {
+ _err_print_error(p_function, p_file, p_line, p_error.utf8().get_data(), p_message, p_editor_notify, p_type);
}
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const String &p_message, ErrorHandlerType p_type) {
- _err_print_error(p_function, p_file, p_line, p_error, p_message.utf8().get_data(), p_type);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const String &p_message, bool p_editor_notify, ErrorHandlerType p_type) {
+ _err_print_error(p_function, p_file, p_line, p_error, p_message.utf8().get_data(), p_editor_notify, p_type);
}
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const String &p_message, ErrorHandlerType p_type) {
- _err_print_error(p_function, p_file, p_line, p_error.utf8().get_data(), p_message.utf8().get_data(), p_type);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const String &p_message, bool p_editor_notify, ErrorHandlerType p_type) {
+ _err_print_error(p_function, p_file, p_line, p_error.utf8().get_data(), p_message.utf8().get_data(), p_editor_notify, p_type);
}
-void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const char *p_message, bool fatal) {
- String fstr(fatal ? "FATAL: " : "");
+// Index errors. (All combinations of p_message as String or char*.)
+void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const char *p_message, bool p_editor_notify, bool p_fatal) {
+ String fstr(p_fatal ? "FATAL: " : "");
String err(fstr + "Index " + p_index_str + " = " + itos(p_index) + " is out of bounds (" + p_size_str + " = " + itos(p_size) + ").");
_err_print_error(p_function, p_file, p_line, err.utf8().get_data(), p_message);
}
-void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool fatal) {
- _err_print_index_error(p_function, p_file, p_line, p_index, p_size, p_index_str, p_size_str, p_message.utf8().get_data(), fatal);
+void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool p_editor_notify, bool p_fatal) {
+ _err_print_index_error(p_function, p_file, p_line, p_index, p_size, p_index_str, p_size_str, p_message.utf8().get_data(), p_fatal);
}
diff --git a/core/error/error_macros.h b/core/error/error_macros.h
index 1bed8d366b..4eb862dce2 100644
--- a/core/error/error_macros.h
+++ b/core/error/error_macros.h
@@ -46,7 +46,7 @@ enum ErrorHandlerType {
// Pointer to the error handler printing function. Reassign to any function to have errors printed.
// Parameters: userdata, function, file, line, error, explanation, type.
-typedef void (*ErrorHandlerFunc)(void *, const char *, const char *, int p_line, const char *, const char *, ErrorHandlerType p_type);
+typedef void (*ErrorHandlerFunc)(void *, const char *, const char *, int p_line, const char *, const char *, bool p_editor_notify, ErrorHandlerType p_type);
struct ErrorHandlerList {
ErrorHandlerFunc errfunc = nullptr;
@@ -61,14 +61,14 @@ void add_error_handler(ErrorHandlerList *p_handler);
void remove_error_handler(ErrorHandlerList *p_handler);
// Functions used by the error macros.
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_message, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const char *p_message, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const String &p_message, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
-void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const String &p_message, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
-void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const char *p_message = "", bool fatal = false);
-void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool fatal = false);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, bool p_editor_notify = false, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, bool p_editor_notify = false, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_message, bool p_editor_notify = false, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const char *p_message, bool p_editor_notify = false, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const String &p_message, bool p_editor_notify = false, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const String &p_message, bool p_editor_notify = false, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
+void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const char *p_message = "", bool p_editor_notify = false, bool fatal = false);
+void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool p_editor_notify = false, bool fatal = false);
#ifdef __GNUC__
//#define FUNCTION_STR __PRETTY_FUNCTION__ - too annoying
@@ -136,6 +136,17 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures an integer index `m_index` is less than `m_size` and greater than or equal to 0.
+ * If not, prints `m_msg`, notifies in the editor, and the current function returns.
+ */
+#define ERR_FAIL_INDEX_EDMSG(m_index, m_size, m_msg) \
+ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
+ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), m_msg, true); \
+ return; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_INDEX_V_MSG`.
* Only use this macro if there is no sensible error message.
*
@@ -161,6 +172,17 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures an integer index `m_index` is less than `m_size` and greater than or equal to 0.
+ * If not, prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
+ */
+#define ERR_FAIL_INDEX_V_EDMSG(m_index, m_size, m_retval, m_msg) \
+ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
+ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), m_msg, true); \
+ return m_retval; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_INDEX_MSG` or `ERR_FAIL_INDEX_V_MSG`.
* Only use this macro if there is no sensible fallback i.e. the error is unrecoverable, and
* there is no sensible error message.
@@ -215,6 +237,16 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
return; \
} else \
((void)0)
+/**
+ * Ensures an unsigned integer index `m_index` is less than `m_size`.
+ * If not, prints `m_msg`, notifies in the editor, and the current function returns.
+ */
+#define ERR_FAIL_UNSIGNED_INDEX_EDMSG(m_index, m_size, m_msg) \
+ if (unlikely((m_index) >= (m_size))) { \
+ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), m_msg, true); \
+ return; \
+ } else \
+ ((void)0)
/**
* Try using `ERR_FAIL_UNSIGNED_INDEX_V_MSG`.
@@ -242,6 +274,17 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures an unsigned integer index `m_index` is less than `m_size`.
+ * If not, prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
+ */
+#define ERR_FAIL_UNSIGNED_INDEX_V_EDMSG(m_index, m_size, m_retval, m_msg) \
+ if (unlikely((m_index) >= (m_size))) { \
+ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), m_msg, true); \
+ return m_retval; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_UNSIGNED_INDEX_MSG` or `ERR_FAIL_UNSIGNED_INDEX_V_MSG`.
* Only use this macro if there is no sensible fallback i.e. the error is unrecoverable, and
* there is no sensible error message.
@@ -298,6 +341,17 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures a pointer `m_param` is not null.
+ * If it is null, prints `m_msg`, notifies in the editor, and the current function returns.
+ */
+#define ERR_FAIL_NULL_EDMSG(m_param, m_msg) \
+ if (unlikely(m_param == nullptr)) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Parameter \"" _STR(m_param) "\" is null.", m_msg, true); \
+ return; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_NULL_V_MSG`.
* Only use this macro if there is no sensible error message.
*
@@ -323,6 +377,17 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures a pointer `m_param` is not null.
+ * If it is null, prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
+ */
+#define ERR_FAIL_NULL_V_EDMSG(m_param, m_retval, m_msg) \
+ if (unlikely(m_param == nullptr)) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Parameter \"" _STR(m_param) "\" is null.", m_msg, true); \
+ return m_retval; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_COND_MSG`.
* Only use this macro if there is no sensible error message.
* If checking for null use ERR_FAIL_NULL_MSG instead.
@@ -353,6 +418,20 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures `m_cond` is false.
+ * If `m_cond` is true, prints `m_msg`, notifies in the editor, and the current function returns.
+ *
+ * If checking for null use ERR_FAIL_NULL_MSG instead.
+ * If checking index bounds use ERR_FAIL_INDEX_MSG instead.
+ */
+#define ERR_FAIL_COND_EDMSG(m_cond, m_msg) \
+ if (unlikely(m_cond)) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Condition \"" _STR(m_cond) "\" is true.", m_msg, true); \
+ return; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_COND_V_MSG`.
* Only use this macro if there is no sensible error message.
* If checking for null use ERR_FAIL_NULL_V_MSG instead.
@@ -383,6 +462,20 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures `m_cond` is false.
+ * If `m_cond` is true, prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
+ *
+ * If checking for null use ERR_FAIL_NULL_V_MSG instead.
+ * If checking index bounds use ERR_FAIL_INDEX_V_MSG instead.
+ */
+#define ERR_FAIL_COND_V_EDMSG(m_cond, m_retval, m_msg) \
+ if (unlikely(m_cond)) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Condition \"" _STR(m_cond) "\" is true. Returning: " _STR(m_retval), m_msg, true); \
+ return m_retval; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_CONTINUE_MSG`.
* Only use this macro if there is no sensible error message.
*
@@ -408,6 +501,17 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures `m_cond` is false.
+ * If `m_cond` is true, prints `m_msg`, notifies in the editor, and the current loop continues.
+ */
+#define ERR_CONTINUE_EDMSG(m_cond, m_msg) \
+ if (unlikely(m_cond)) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Condition \"" _STR(m_cond) "\" is true. Continuing.", m_msg, true); \
+ continue; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_BREAK_MSG`.
* Only use this macro if there is no sensible error message.
*
@@ -433,6 +537,17 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Ensures `m_cond` is false.
+ * If `m_cond` is true, prints `m_msg`, notifies in the editor, and the current loop breaks.
+ */
+#define ERR_BREAK_EDMSG(m_cond, m_msg) \
+ if (unlikely(m_cond)) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Condition \"" _STR(m_cond) "\" is true. Breaking.", m_msg, true); \
+ break; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_COND_MSG` or `ERR_FAIL_COND_V_MSG`.
* Only use this macro if there is no sensible fallback i.e. the error is unrecoverable, and
* there is no sensible error message.
@@ -491,6 +606,19 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Try using `ERR_FAIL_COND_MSG`.
+ * Only use this macro if more complex error detection or recovery is required.
+ *
+ * Prints `m_msg`, notifies in the editor, and the current function returns.
+ */
+#define ERR_FAIL_EDMSG(m_msg) \
+ if (true) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Method/function failed.", m_msg, true); \
+ return; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_COND_V_MSG` or `ERR_FAIL_V_MSG`.
* Only use this macro if more complex error detection or recovery is required, and
* there is no sensible error message.
@@ -518,6 +646,19 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
((void)0)
/**
+ * Try using `ERR_FAIL_COND_V_MSG`.
+ * Only use this macro if more complex error detection or recovery is required.
+ *
+ * Prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
+ */
+#define ERR_FAIL_V_EDMSG(m_retval, m_msg) \
+ if (true) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Method/function failed. Returning: " _STR(m_retval), m_msg, true); \
+ return m_retval; \
+ } else \
+ ((void)0)
+
+/**
* Try using `ERR_FAIL_COND_MSG`, `ERR_FAIL_COND_V_MSG`, `ERR_CONTINUE_MSG` or ERR_BREAK_MSG.
* Only use this macro at the start of a function that has not been implemented yet, or
* if more complex error detection or recovery is required.
@@ -528,6 +669,16 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg)
/**
+ * Try using `ERR_FAIL_COND_MSG`, `ERR_FAIL_COND_V_MSG`, `ERR_CONTINUE_MSG` or ERR_BREAK_MSG.
+ * Only use this macro at the start of a function that has not been implemented yet, or
+ * if more complex error detection or recovery is required.
+ *
+ * Prints `m_msg` and notifies the editor.
+ */
+#define ERR_PRINT_ED(m_msg) \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, )
+
+/**
* Prints `m_msg` once during the application lifetime.
*/
#define ERR_PRINT_ONCE(m_msg) \
@@ -540,6 +691,19 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
} else \
((void)0)
+/**
+ * Prints `m_msg` and notifies the editor once during the application lifetime.
+ */
+#define ERR_PRINT_ONCE_ED(m_msg) \
+ if (true) { \
+ static bool first_print = true; \
+ if (first_print) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, true); \
+ first_print = false; \
+ } \
+ } else \
+ ((void)0)
+
// Print warning message macros.
/**
@@ -548,52 +712,75 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li
* If warning about deprecated usage, use `WARN_DEPRECATED` or `WARN_DEPRECATED_MSG` instead.
*/
#define WARN_PRINT(m_msg) \
- _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, ERR_HANDLER_WARNING)
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, false, ERR_HANDLER_WARNING)
+
+/**
+ * Prints `m_msg` and notifies the editor.
+ *
+ * If warning about deprecated usage, use `WARN_DEPRECATED` or `WARN_DEPRECATED_MSG` instead.
+ */
+#define WARN_PRINT_ED(m_msg) \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, true, ERR_HANDLER_WARNING)
/**
* Prints `m_msg` once during the application lifetime.
*
* If warning about deprecated usage, use `WARN_DEPRECATED` or `WARN_DEPRECATED_MSG` instead.
*/
-#define WARN_PRINT_ONCE(m_msg) \
- if (true) { \
- static bool first_print = true; \
- if (first_print) { \
- _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, ERR_HANDLER_WARNING); \
- first_print = false; \
- } \
- } else \
+#define WARN_PRINT_ONCE(m_msg) \
+ if (true) { \
+ static bool first_print = true; \
+ if (first_print) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, false, ERR_HANDLER_WARNING); \
+ first_print = false; \
+ } \
+ } else \
((void)0)
-// Print deprecated warning message macros.
-
/**
- * Warns that the current function is deprecated.
+ * Prints `m_msg` and notifies the editor once during the application lifetime.
+ *
+ * If warning about deprecated usage, use `WARN_DEPRECATED` or `WARN_DEPRECATED_MSG` instead.
*/
-#define WARN_DEPRECATED \
- if (true) { \
- static SafeFlag warning_shown; \
- if (!warning_shown.is_set()) { \
- _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "This method has been deprecated and will be removed in the future.", ERR_HANDLER_WARNING); \
- warning_shown.set(); \
- } \
- } else \
+#define WARN_PRINT_ONCE_ED(m_msg) \
+ if (true) { \
+ static bool first_print = true; \
+ if (first_print) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, true, ERR_HANDLER_WARNING); \
+ first_print = false; \
+ } \
+ } else \
((void)0)
+// Print deprecated warning message macros.
+
/**
- * Warns that the current function is deprecated and prints `m_msg`.
+ * Warns that the current function is deprecated.
*/
-#define WARN_DEPRECATED_MSG(m_msg) \
+#define WARN_DEPRECATED \
if (true) { \
static SafeFlag warning_shown; \
if (!warning_shown.is_set()) { \
- _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "This method has been deprecated and will be removed in the future.", m_msg, ERR_HANDLER_WARNING); \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "This method has been deprecated and will be removed in the future.", false, ERR_HANDLER_WARNING); \
warning_shown.set(); \
} \
} else \
((void)0)
/**
+ * Warns that the current function is deprecated and prints `m_msg`.
+ */
+#define WARN_DEPRECATED_MSG(m_msg) \
+ if (true) { \
+ static SafeFlag warning_shown; \
+ if (!warning_shown.is_set()) { \
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "This method has been deprecated and will be removed in the future.", m_msg, false, ERR_HANDLER_WARNING); \
+ warning_shown.set(); \
+ } \
+ } else \
+ ((void)0)
+
+/**
* Do not use.
* If the application should never reach this point use CRASH_NOW_MSG(m_msg) to explain why.
*
diff --git a/core/extension/gdnative_interface.cpp b/core/extension/gdnative_interface.cpp
index ff09b0b86c..4770c9c65f 100644
--- a/core/extension/gdnative_interface.cpp
+++ b/core/extension/gdnative_interface.cpp
@@ -51,13 +51,13 @@ static void gdnative_free(void *p_mem) {
// Helper print functions.
static void gdnative_print_error(const char *p_description, const char *p_function, const char *p_file, int32_t p_line) {
- _err_print_error(p_function, p_file, p_line, p_description, ERR_HANDLER_ERROR);
+ _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_ERROR);
}
static void gdnative_print_warning(const char *p_description, const char *p_function, const char *p_file, int32_t p_line) {
- _err_print_error(p_function, p_file, p_line, p_description, ERR_HANDLER_WARNING);
+ _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_WARNING);
}
static void gdnative_print_script_error(const char *p_description, const char *p_function, const char *p_file, int32_t p_line) {
- _err_print_error(p_function, p_file, p_line, p_description, ERR_HANDLER_SCRIPT);
+ _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_SCRIPT);
}
// Variant functions
diff --git a/core/input/SCsub b/core/input/SCsub
index 740398b266..b12bf561de 100644
--- a/core/input/SCsub
+++ b/core/input/SCsub
@@ -7,19 +7,15 @@ import input_builders
# Order matters here. Higher index controller database files write on top of lower index database files.
controller_databases = [
- "#core/input/gamecontrollerdb.txt",
- "#core/input/godotcontrollerdb.txt",
+ "gamecontrollerdb.txt",
+ "godotcontrollerdb.txt",
]
-env.Depends("#core/input/default_controller_mappings.gen.cpp", controller_databases)
-env.CommandNoCache(
- "#core/input/default_controller_mappings.gen.cpp",
+gensource = env.CommandNoCache(
+ "default_controller_mappings.gen.cpp",
controller_databases,
env.Run(input_builders.make_default_controller_mappings, "Generating default controller mappings."),
)
env.add_source_files(env.core_sources, "*.cpp")
-
-# Don't warn about duplicate entry here, we need it registered manually for first build,
-# even if later builds will pick it up twice due to above *.cpp globbing.
-env.add_source_files(env.core_sources, "#core/input/default_controller_mappings.gen.cpp", warn_duplicates=False)
+env.add_source_files(env.core_sources, gensource)
diff --git a/core/input/input.cpp b/core/input/input.cpp
index f9a361c761..c3b43a4274 100644
--- a/core/input/input.cpp
+++ b/core/input/input.cpp
@@ -117,6 +117,10 @@ void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_accelerometer"), &Input::get_accelerometer);
ClassDB::bind_method(D_METHOD("get_magnetometer"), &Input::get_magnetometer);
ClassDB::bind_method(D_METHOD("get_gyroscope"), &Input::get_gyroscope);
+ ClassDB::bind_method(D_METHOD("set_gravity", "value"), &Input::set_gravity);
+ ClassDB::bind_method(D_METHOD("set_accelerometer", "value"), &Input::set_accelerometer);
+ ClassDB::bind_method(D_METHOD("set_magnetometer", "value"), &Input::set_magnetometer);
+ ClassDB::bind_method(D_METHOD("set_gyroscope", "value"), &Input::set_gyroscope);
ClassDB::bind_method(D_METHOD("get_last_mouse_speed"), &Input::get_last_mouse_speed);
ClassDB::bind_method(D_METHOD("get_mouse_button_mask"), &Input::get_mouse_button_mask);
ClassDB::bind_method(D_METHOD("set_mouse_mode", "mode"), &Input::set_mouse_mode);
@@ -129,6 +133,7 @@ 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("flush_buffered_events"), &Input::flush_buffered_events);
BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE);
BIND_ENUM_CONSTANT(MOUSE_MODE_HIDDEN);
diff --git a/core/input/input.h b/core/input/input.h
index 6819fc8eb0..f63138a875 100644
--- a/core/input/input.h
+++ b/core/input/input.h
@@ -265,7 +265,6 @@ public:
float get_joy_vibration_duration(int p_device);
uint64_t get_joy_vibration_timestamp(int p_device);
void joy_connection_changed(int p_idx, bool p_connected, String p_name, String p_guid = "");
- void parse_joypad_mapping(String p_mapping, bool p_update_existing);
Vector3 get_gravity() const;
Vector3 get_accelerometer() const;
diff --git a/core/input/input_event.cpp b/core/input/input_event.cpp
index 1d2b5f19ee..c6448b1e44 100644
--- a/core/input/input_event.cpp
+++ b/core/input/input_event.cpp
@@ -452,8 +452,13 @@ bool InputEventKey::is_match(const Ref<InputEvent> &p_event, bool p_exact_match)
return false;
}
- return keycode == key->keycode &&
- (!p_exact_match || get_modifiers_mask() == key->get_modifiers_mask());
+ if (keycode == 0) {
+ return physical_keycode == key->physical_keycode &&
+ (!p_exact_match || get_modifiers_mask() == key->get_modifiers_mask());
+ } else {
+ return keycode == key->keycode &&
+ (!p_exact_match || get_modifiers_mask() == key->get_modifiers_mask());
+ }
}
void InputEventKey::_bind_methods() {
diff --git a/core/io/compression.h b/core/io/compression.h
index cbfed74124..06f26876e5 100644
--- a/core/io/compression.h
+++ b/core/io/compression.h
@@ -54,8 +54,6 @@ public:
static int get_max_compressed_buffer_size(int p_src_size, Mode p_mode = MODE_ZSTD);
static int decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size, Mode p_mode = MODE_ZSTD);
static int decompress_dynamic(Vector<uint8_t> *p_dst_vect, int p_max_dst_size, const uint8_t *p_src, int p_src_size, Mode p_mode);
-
- Compression() {}
};
#endif // COMPRESSION_H
diff --git a/core/io/logger.cpp b/core/io/logger.cpp
index 09539f716c..b68a8b20a5 100644
--- a/core/io/logger.cpp
+++ b/core/io/logger.cpp
@@ -50,7 +50,7 @@ void Logger::set_flush_stdout_on_print(bool value) {
_flush_stdout_on_print = value;
}
-void Logger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type) {
+void Logger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, ErrorType p_type) {
if (!should_log(true)) {
return;
}
@@ -81,7 +81,11 @@ void Logger::log_error(const char *p_function, const char *p_file, int p_line, c
err_details = p_code;
}
- logf_error("%s: %s\n", err_type, err_details);
+ if (p_editor_notify) {
+ logf_error("%s: %s\n", err_type, err_details);
+ } else {
+ logf_error("USER %s: %s\n", err_type, err_details);
+ }
logf_error(" at: %s (%s:%i) - %s\n", p_function, p_file, p_line, p_code);
}
@@ -256,7 +260,7 @@ void CompositeLogger::logv(const char *p_format, va_list p_list, bool p_err) {
}
}
-void CompositeLogger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type) {
+void CompositeLogger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, ErrorType p_type) {
if (!should_log(true)) {
return;
}
diff --git a/core/io/logger.h b/core/io/logger.h
index ccf68562d6..48b073aa45 100644
--- a/core/io/logger.h
+++ b/core/io/logger.h
@@ -54,7 +54,7 @@ public:
static void set_flush_stdout_on_print(bool value);
virtual void logv(const char *p_format, va_list p_list, bool p_err) _PRINTF_FORMAT_ATTRIBUTE_2_0 = 0;
- virtual void log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type = ERR_ERROR);
+ virtual void log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify = false, ErrorType p_type = ERR_ERROR);
void logf(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3;
void logf_error(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3;
@@ -83,7 +83,6 @@ class RotatedFileLogger : public Logger {
FileAccess *file = nullptr;
- void rotate_file_without_closing();
void close_file();
void clear_old_backups();
void rotate_file();
@@ -103,7 +102,7 @@ public:
CompositeLogger(Vector<Logger *> p_loggers);
virtual void logv(const char *p_format, va_list p_list, bool p_err) _PRINTF_FORMAT_ATTRIBUTE_2_0;
- virtual void log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type = ERR_ERROR);
+ virtual void log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, ErrorType p_type = ERR_ERROR);
void add_logger(Logger *p_logger);
diff --git a/core/io/resource.cpp b/core/io/resource.cpp
index 1cefa52d69..972076e397 100644
--- a/core/io/resource.cpp
+++ b/core/io/resource.cpp
@@ -136,6 +136,7 @@ String Resource::get_scene_unique_id() const {
void Resource::set_name(const String &p_name) {
name = p_name;
+ emit_changed();
}
String Resource::get_name() const {
diff --git a/core/math/convex_hull.cpp b/core/math/convex_hull.cpp
index f67035c803..684814b1ae 100644
--- a/core/math/convex_hull.cpp
+++ b/core/math/convex_hull.cpp
@@ -594,8 +594,6 @@ private:
IntermediateHull() {
}
-
- void print();
};
enum Orientation { NONE,
diff --git a/core/math/face3.cpp b/core/math/face3.cpp
index 045ab67ce8..31a853e1a9 100644
--- a/core/math/face3.cpp
+++ b/core/math/face3.cpp
@@ -229,7 +229,7 @@ bool Face3::intersects_aabb(const AABB &p_aabb) const {
axis.normalize();
real_t minA, maxA, minB, maxB;
- p_aabb.project_range_in_plane(Plane(axis, 0), minA, maxA);
+ p_aabb.project_range_in_plane(Plane(axis), minA, maxA);
project_range(axis, Transform3D(), minB, maxB);
if (maxA < minB || maxB < minA) {
diff --git a/core/math/geometry_2d.h b/core/math/geometry_2d.h
index 8e5830f9b3..6010159597 100644
--- a/core/math/geometry_2d.h
+++ b/core/math/geometry_2d.h
@@ -37,8 +37,6 @@
#include "core/templates/vector.h"
class Geometry2D {
- Geometry2D();
-
public:
static real_t get_closest_points_between_segments(const Vector2 &p1, const Vector2 &q1, const Vector2 &p2, const Vector2 &q2, Vector2 &c1, Vector2 &c2) {
Vector2 d1 = q1 - p1; // Direction vector of segment S1.
diff --git a/core/math/geometry_3d.cpp b/core/math/geometry_3d.cpp
index 6628b760e0..88d2656025 100644
--- a/core/math/geometry_3d.cpp
+++ b/core/math/geometry_3d.cpp
@@ -819,11 +819,9 @@ Vector<Plane> Geometry3D::build_sphere_planes(real_t p_radius, int p_lats, int p
planes.push_back(Plane(normal, p_radius));
for (int j = 1; j <= p_lats; j++) {
- // FIXME: This is stupid.
- Vector3 angle = normal.lerp(axis, j / (real_t)p_lats).normalized();
- Vector3 pos = angle * p_radius;
- planes.push_back(Plane(pos, angle));
- planes.push_back(Plane(pos * axis_neg, angle * axis_neg));
+ Vector3 plane_normal = normal.lerp(axis, j / (real_t)p_lats).normalized();
+ planes.push_back(Plane(plane_normal, p_radius));
+ planes.push_back(Plane(plane_normal * axis_neg, p_radius));
}
}
@@ -852,10 +850,10 @@ Vector<Plane> Geometry3D::build_capsule_planes(real_t p_radius, real_t p_height,
planes.push_back(Plane(normal, p_radius));
for (int j = 1; j <= p_lats; j++) {
- Vector3 angle = normal.lerp(axis, j / (real_t)p_lats).normalized();
- Vector3 pos = axis * p_height * 0.5 + angle * p_radius;
- planes.push_back(Plane(pos, angle));
- planes.push_back(Plane(pos * axis_neg, angle * axis_neg));
+ Vector3 plane_normal = normal.lerp(axis, j / (real_t)p_lats).normalized();
+ Vector3 position = axis * p_height * 0.5 + plane_normal * p_radius;
+ planes.push_back(Plane(plane_normal, position));
+ planes.push_back(Plane(plane_normal * axis_neg, position * axis_neg));
}
}
diff --git a/core/math/geometry_3d.h b/core/math/geometry_3d.h
index 766689e222..6a59b34585 100644
--- a/core/math/geometry_3d.h
+++ b/core/math/geometry_3d.h
@@ -36,8 +36,6 @@
#include "core/templates/vector.h"
class Geometry3D {
- Geometry3D();
-
public:
static void get_closest_points_between_segments(const Vector3 &p1, const Vector3 &p2, const Vector3 &q1, const Vector3 &q2, Vector3 &c1, Vector3 &c2) {
// Do the function 'd' as defined by pb. I think it's a dot product of some sort.
diff --git a/core/math/plane.h b/core/math/plane.h
index 2267b28c53..18be5d5d12 100644
--- a/core/math/plane.h
+++ b/core/math/plane.h
@@ -85,8 +85,8 @@ public:
normal(p_a, p_b, p_c),
d(p_d) {}
- _FORCE_INLINE_ Plane(const Vector3 &p_normal, real_t p_d);
- _FORCE_INLINE_ Plane(const Vector3 &p_point, const Vector3 &p_normal);
+ _FORCE_INLINE_ Plane(const Vector3 &p_normal, real_t p_d = 0.0);
+ _FORCE_INLINE_ Plane(const Vector3 &p_normal, const Vector3 &p_point);
_FORCE_INLINE_ Plane(const Vector3 &p_point1, const Vector3 &p_point2, const Vector3 &p_point3, ClockDirection p_dir = CLOCKWISE);
};
@@ -109,7 +109,7 @@ Plane::Plane(const Vector3 &p_normal, real_t p_d) :
d(p_d) {
}
-Plane::Plane(const Vector3 &p_point, const Vector3 &p_normal) :
+Plane::Plane(const Vector3 &p_normal, const Vector3 &p_point) :
normal(p_normal),
d(p_normal.dot(p_point)) {
}
diff --git a/core/multiplayer/multiplayer_replicator.cpp b/core/multiplayer/multiplayer_replicator.cpp
index a4ea74327c..6604510394 100644
--- a/core/multiplayer/multiplayer_replicator.cpp
+++ b/core/multiplayer/multiplayer_replicator.cpp
@@ -572,7 +572,7 @@ Error MultiplayerReplicator::_spawn_despawn(ResourceUID::ID p_scene_id, Object *
args[0] = p_peer;
args[1] = p_scene_id;
args[2] = p_obj;
- args[3] = true;
+ args[3] = p_spawn;
const Variant *argp[] = { &args[0], &args[1], &args[2], &args[3] };
Callable::CallError ce;
Variant ret;
diff --git a/core/object/class_db.h b/core/object/class_db.h
index aceea5b651..d9eec4e4a8 100644
--- a/core/object/class_db.h
+++ b/core/object/class_db.h
@@ -164,6 +164,7 @@ public:
t->creation_func = &creator<T>;
t->exposed = true;
t->class_ptr = T::get_class_ptr_static();
+ t->api = current_api;
T::register_custom_data_to_otdb();
}
@@ -175,6 +176,7 @@ public:
ERR_FAIL_COND(!t);
t->exposed = true;
t->class_ptr = T::get_class_ptr_static();
+ t->api = current_api;
//nothing
}
@@ -195,6 +197,7 @@ public:
t->creation_func = &_create_ptr_func<T>;
t->exposed = true;
t->class_ptr = T::get_class_ptr_static();
+ t->api = current_api;
T::register_custom_data_to_otdb();
}
diff --git a/core/object/method_bind.cpp b/core/object/method_bind.cpp
index d1d8b075fe..642e27c41d 100644
--- a/core/object/method_bind.cpp
+++ b/core/object/method_bind.cpp
@@ -130,9 +130,7 @@ MethodBind::MethodBind() {
}
MethodBind::~MethodBind() {
-#ifdef DEBUG_METHODS_ENABLED
if (argument_types) {
memdelete_arr(argument_types);
}
-#endif
}
diff --git a/core/object/undo_redo.cpp b/core/object/undo_redo.cpp
index b7d2bac96d..9c84c2add7 100644
--- a/core/object/undo_redo.cpp
+++ b/core/object/undo_redo.cpp
@@ -32,6 +32,7 @@
#include "core/io/resource.h"
#include "core/os/os.h"
+#include "core/templates/local_vector.h"
void UndoRedo::_discard_redo() {
if (current_action == actions.size() - 1) {
@@ -85,10 +86,17 @@ void UndoRedo::create_action(const String &p_name, MergeMode p_mode) {
current_action = actions.size() - 2;
if (p_mode == MERGE_ENDS) {
- // Clear all do ops from last action, and delete all object references
- List<Operation>::Element *E = actions.write[current_action + 1].do_ops.front();
+ // Clear all do ops from last action if they are not forced kept
+ LocalVector<List<Operation>::Element *> to_remove;
+ for (List<Operation>::Element *E = actions.write[current_action + 1].do_ops.front(); E; E = E->next()) {
+ if (!E->get().force_keep_in_merge_ends) {
+ to_remove.push_back(E);
+ }
+ }
- while (E) {
+ for (unsigned int i = 0; i < to_remove.size(); i++) {
+ List<Operation>::Element *E = to_remove[i];
+ // Delete all object references
if (E->get().type == Operation::TYPE_REFERENCE) {
Object *obj = ObjectDB::get_instance(E->get().object);
@@ -96,9 +104,7 @@ void UndoRedo::create_action(const String &p_name, MergeMode p_mode) {
memdelete(obj);
}
}
-
- E = E->next();
- actions.write[current_action + 1].do_ops.pop_front();
+ E->erase();
}
}
@@ -117,6 +123,8 @@ void UndoRedo::create_action(const String &p_name, MergeMode p_mode) {
}
action_level++;
+
+ force_keep_in_merge_ends = false;
}
void UndoRedo::add_do_method(Object *p_object, const StringName &p_method, VARIANT_ARG_DECLARE) {
@@ -146,7 +154,7 @@ void UndoRedo::add_undo_method(Object *p_object, const StringName &p_method, VAR
ERR_FAIL_COND((current_action + 1) >= actions.size());
// No undo if the merge mode is MERGE_ENDS
- if (merge_mode == MERGE_ENDS) {
+ if (!force_keep_in_merge_ends && merge_mode == MERGE_ENDS) {
return;
}
@@ -157,6 +165,7 @@ void UndoRedo::add_undo_method(Object *p_object, const StringName &p_method, VAR
}
undo_op.type = Operation::TYPE_METHOD;
+ undo_op.force_keep_in_merge_ends = force_keep_in_merge_ends;
undo_op.name = p_method;
for (int i = 0; i < VARIANT_ARG_MAX; i++) {
@@ -187,7 +196,7 @@ void UndoRedo::add_undo_property(Object *p_object, const StringName &p_property,
ERR_FAIL_COND((current_action + 1) >= actions.size());
// No undo if the merge mode is MERGE_ENDS
- if (merge_mode == MERGE_ENDS) {
+ if (!force_keep_in_merge_ends && merge_mode == MERGE_ENDS) {
return;
}
@@ -198,6 +207,7 @@ void UndoRedo::add_undo_property(Object *p_object, const StringName &p_property,
}
undo_op.type = Operation::TYPE_PROPERTY;
+ undo_op.force_keep_in_merge_ends = force_keep_in_merge_ends;
undo_op.name = p_property;
undo_op.args[0] = p_value;
actions.write[current_action + 1].undo_ops.push_back(undo_op);
@@ -223,7 +233,7 @@ void UndoRedo::add_undo_reference(Object *p_object) {
ERR_FAIL_COND((current_action + 1) >= actions.size());
// No undo if the merge mode is MERGE_ENDS
- if (merge_mode == MERGE_ENDS) {
+ if (!force_keep_in_merge_ends && merge_mode == MERGE_ENDS) {
return;
}
@@ -234,9 +244,24 @@ void UndoRedo::add_undo_reference(Object *p_object) {
}
undo_op.type = Operation::TYPE_REFERENCE;
+ undo_op.force_keep_in_merge_ends = force_keep_in_merge_ends;
actions.write[current_action + 1].undo_ops.push_back(undo_op);
}
+void UndoRedo::start_force_keep_in_merge_ends() {
+ ERR_FAIL_COND(action_level <= 0);
+ ERR_FAIL_COND((current_action + 1) >= actions.size());
+
+ force_keep_in_merge_ends = true;
+}
+
+void UndoRedo::end_force_keep_in_merge_ends() {
+ ERR_FAIL_COND(action_level <= 0);
+ ERR_FAIL_COND((current_action + 1) >= actions.size());
+
+ force_keep_in_merge_ends = false;
+}
+
void UndoRedo::_pop_history_tail() {
_discard_redo();
@@ -538,6 +563,9 @@ void UndoRedo::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_do_reference", "object"), &UndoRedo::add_do_reference);
ClassDB::bind_method(D_METHOD("add_undo_reference", "object"), &UndoRedo::add_undo_reference);
+ ClassDB::bind_method(D_METHOD("start_force_keep_in_merge_ends"), &UndoRedo::start_force_keep_in_merge_ends);
+ ClassDB::bind_method(D_METHOD("end_force_keep_in_merge_ends"), &UndoRedo::end_force_keep_in_merge_ends);
+
ClassDB::bind_method(D_METHOD("get_history_count"), &UndoRedo::get_history_count);
ClassDB::bind_method(D_METHOD("get_current_action"), &UndoRedo::get_current_action);
ClassDB::bind_method(D_METHOD("get_action_name", "id"), &UndoRedo::get_action_name);
diff --git a/core/object/undo_redo.h b/core/object/undo_redo.h
index d1ce252d86..a757d154e2 100644
--- a/core/object/undo_redo.h
+++ b/core/object/undo_redo.h
@@ -61,6 +61,7 @@ private:
};
Type type;
+ bool force_keep_in_merge_ends;
Ref<RefCounted> ref;
ObjectID object;
StringName name;
@@ -76,6 +77,7 @@ private:
Vector<Action> actions;
int current_action = -1;
+ bool force_keep_in_merge_ends = false;
int action_level = 0;
MergeMode merge_mode = MERGE_DISABLE;
bool merging = false;
@@ -109,6 +111,9 @@ public:
void add_do_reference(Object *p_object);
void add_undo_reference(Object *p_object);
+ void start_force_keep_in_merge_ends();
+ void end_force_keep_in_merge_ends();
+
bool is_committing_action() const;
void commit_action(bool p_execute = true);
diff --git a/core/os/memory.h b/core/os/memory.h
index f67384a17e..ac56a12330 100644
--- a/core/os/memory.h
+++ b/core/os/memory.h
@@ -42,7 +42,6 @@
#endif
class Memory {
- Memory();
#ifdef DEBUG_ENABLED
static SafeNumeric<uint64_t> mem_usage;
static SafeNumeric<uint64_t> max_usage;
diff --git a/core/os/os.cpp b/core/os/os.cpp
index 12f85858c3..5892f91ff3 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -75,12 +75,12 @@ void OS::add_logger(Logger *p_logger) {
}
}
-void OS::print_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, Logger::ErrorType p_type) {
+void OS::print_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, Logger::ErrorType p_type) {
if (!_stderr_enabled) {
return;
}
- _logger->log_error(p_function, p_file, p_line, p_code, p_rationale, p_type);
+ _logger->log_error(p_function, p_file, p_line, p_code, p_rationale, p_editor_notify, p_type);
}
void OS::print(const char *p_format, ...) {
@@ -431,6 +431,15 @@ bool OS::has_feature(const String &p_feature) {
if (p_feature == "arm") {
return true;
}
+#elif defined(__riscv)
+#if __riscv_xlen == 8
+ if (p_feature == "rv64") {
+ return true;
+ }
+#endif
+ if (p_feature == "riscv") {
+ return true;
+ }
#endif
if (_check_internal_feature_support(p_feature)) {
diff --git a/core/os/os.h b/core/os/os.h
index 29d33ce4f0..6d7bc47407 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -110,7 +110,7 @@ public:
static OS *get_singleton();
- void print_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, Logger::ErrorType p_type = Logger::ERR_ERROR);
+ void print_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify = false, Logger::ErrorType p_type = Logger::ERR_ERROR);
void print(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3;
void printerr(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3;
diff --git a/core/string/optimized_translation.cpp b/core/string/optimized_translation.cpp
index 839b7a9c01..f8be564740 100644
--- a/core/string/optimized_translation.cpp
+++ b/core/string/optimized_translation.cpp
@@ -64,7 +64,6 @@ void OptimizedTranslation::generate(const Ref<Translation> &p_from) {
int idx = 0;
int total_compression_size = 0;
- int total_string_size = 0;
for (const StringName &E : keys) {
//hash string
@@ -102,7 +101,6 @@ void OptimizedTranslation::generate(const Ref<Translation> &p_from) {
compressed.write[idx] = ps;
total_compression_size += ps.compressed.size();
- total_string_size += src_s.size();
idx++;
}
@@ -147,15 +145,12 @@ void OptimizedTranslation::generate(const Ref<Translation> &p_from) {
uint32_t *btw = (uint32_t *)&btwb[0];
int btindex = 0;
- int collisions = 0;
for (int i = 0; i < size; i++) {
const Map<uint32_t, int> &t = table[i];
if (t.size() == 0) {
htw[i] = 0xFFFFFFFF; //nothing
continue;
- } else if (t.size() > 1) {
- collisions += t.size() - 1;
}
htw[i] = btindex;
diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp
index daeb7fbd17..397743fb6e 100644
--- a/core/string/ustring.cpp
+++ b/core/string/ustring.cpp
@@ -2137,7 +2137,7 @@ int64_t String::hex_to_int() const {
s++;
}
- if (len > 2 && s[0] == '0' && s[1] == 'x') {
+ if (len > 2 && s[0] == '0' && lower_case(s[1]) == 'x') {
s += 2;
}
@@ -2151,7 +2151,7 @@ int64_t String::hex_to_int() const {
} else if (c >= 'a' && c <= 'f') {
n = (c - 'a') + 10;
} else {
- return 0;
+ ERR_FAIL_COND_V_MSG(true, 0, "Invalid hexadecimal notation character \"" + chr(*s) + "\" in string \"" + *this + "\".");
}
// Check for overflow/underflow, with special case to ensure INT64_MIN does not result in error
bool overflow = ((hex > INT64_MAX / 16) && (sign == 1 || (sign == -1 && hex != (INT64_MAX >> 4) + 1))) || (sign == -1 && hex == (INT64_MAX >> 4) + 1 && c > '0');
@@ -2178,7 +2178,7 @@ int64_t String::bin_to_int() const {
s++;
}
- if (len > 2 && s[0] == '0' && s[1] == 'b') {
+ if (len > 2 && s[0] == '0' && lower_case(s[1]) == 'b') {
s += 2;
}
diff --git a/core/templates/hash_map.h b/core/templates/hash_map.h
index b5bb0d7396..1634219c23 100644
--- a/core/templates/hash_map.h
+++ b/core/templates/hash_map.h
@@ -96,6 +96,7 @@ public:
Element(const TKey &p_key) :
pair(p_key) {}
Element(const Element &p_other) :
+ hash(p_other.hash),
pair(p_other.pair.key, p_other.pair.data) {}
};
diff --git a/core/templates/hashfuncs.h b/core/templates/hashfuncs.h
index 2e932f9f26..c1a7c4146e 100644
--- a/core/templates/hashfuncs.h
+++ b/core/templates/hashfuncs.h
@@ -74,6 +74,13 @@ 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;
}
+/**
+ * Thomas Wang's 64-bit to 32-bit Hash function:
+ * https://web.archive.org/web/20071223173210/https:/www.concentric.net/~Ttwang/tech/inthash.htm
+ *
+ * @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) {
uint64_t v = p_int;
v = (~v) + (v << 18); // v = (v << 18) - v - 1;
@@ -82,7 +89,7 @@ static inline uint32_t hash_one_uint64(const uint64_t p_int) {
v = v ^ (v >> 11);
v = v + (v << 6);
v = v ^ (v >> 22);
- return (int)v;
+ return uint32_t(v);
}
static inline uint32_t hash_djb2_one_float(double p_in, uint32_t p_prev = 5381) {
diff --git a/core/typedefs.h b/core/typedefs.h
index dde254af23..8ca3d13e63 100644
--- a/core/typedefs.h
+++ b/core/typedefs.h
@@ -62,9 +62,9 @@
#endif
#endif
-// Should always inline, except in debug builds because it makes debugging harder.
+// Should always inline, except in dev builds because it makes debugging harder.
#ifndef _FORCE_INLINE_
-#ifdef DISABLE_FORCED_INLINE
+#ifdef DEV_ENABLED
#define _FORCE_INLINE_ inline
#else
#define _FORCE_INLINE_ _ALWAYS_INLINE_
diff --git a/core/variant/variant_construct.cpp b/core/variant/variant_construct.cpp
index 4317b9dc98..6aba7d7d58 100644
--- a/core/variant/variant_construct.cpp
+++ b/core/variant/variant_construct.cpp
@@ -119,8 +119,9 @@ void Variant::_register_variant_constructors() {
add_constructor<VariantConstructNoArgs<Plane>>(sarray());
add_constructor<VariantConstructor<Plane, Plane>>(sarray("from"));
+ add_constructor<VariantConstructor<Plane, Vector3>>(sarray("normal"));
add_constructor<VariantConstructor<Plane, Vector3, double>>(sarray("normal", "d"));
- add_constructor<VariantConstructor<Plane, Vector3, Vector3>>(sarray("point", "normal"));
+ add_constructor<VariantConstructor<Plane, Vector3, Vector3>>(sarray("normal", "point"));
add_constructor<VariantConstructor<Plane, Vector3, Vector3, Vector3>>(sarray("point1", "point2", "point3"));
add_constructor<VariantConstructor<Plane, double, double, double, double>>(sarray("a", "b", "c", "d"));
diff --git a/core/variant/variant_internal.h b/core/variant/variant_internal.h
index 40c8a1bfde..37383ff2ec 100644
--- a/core/variant/variant_internal.h
+++ b/core/variant/variant_internal.h
@@ -1301,12 +1301,12 @@ struct VariantZeroAssigner<Signal> {
template <>
struct VariantZeroAssigner<Dictionary> {
- static _FORCE_INLINE_ void zero(Variant *v) {}
+ static _FORCE_INLINE_ void zero(Variant *v) { *VariantInternal::get_dictionary(v) = Dictionary(); }
};
template <>
struct VariantZeroAssigner<Array> {
- static _FORCE_INLINE_ void zero(Variant *v) {}
+ static _FORCE_INLINE_ void zero(Variant *v) { *VariantInternal::get_array(v) = Array(); }
};
template <>
diff --git a/doc/classes/AcceptDialog.xml b/doc/classes/AcceptDialog.xml
index c753b341d2..df0cc6f268 100644
--- a/doc/classes/AcceptDialog.xml
+++ b/doc/classes/AcceptDialog.xml
@@ -32,12 +32,14 @@
<return type="Label" />
<description>
Returns the label used for built-in text.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="get_ok_button">
<return type="Button" />
<description>
Returns the OK [Button] instance.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="register_text_enter">
diff --git a/doc/classes/Animation.xml b/doc/classes/Animation.xml
index d2ecbdde26..52308d1438 100644
--- a/doc/classes/Animation.xml
+++ b/doc/classes/Animation.xml
@@ -201,6 +201,14 @@
Sets the value of the key identified by [code]key_idx[/code] to the given value. The [code]track_idx[/code] must be the index of a Bezier Track.
</description>
</method>
+ <method name="blend_shape_track_insert_key">
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="amount" type="float" />
+ <description>
+ </description>
+ </method>
<method name="clear">
<return type="void" />
<description>
@@ -218,6 +226,7 @@
<method name="find_track" qualifiers="const">
<return type="int" />
<argument index="0" name="path" type="NodePath" />
+ <argument index="1" name="type" type="int" enum="Animation.TrackType" />
<description>
Returns the index of the specified track. If the track is not found, return -1.
</description>
@@ -253,6 +262,14 @@
Returns the arguments values to be called on a method track for a given key in a given track.
</description>
</method>
+ <method name="position_track_insert_key">
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="position" type="Vector3" />
+ <description>
+ </description>
+ </method>
<method name="remove_track">
<return type="void" />
<argument index="0" name="track_idx" type="int" />
@@ -260,6 +277,22 @@
Removes a track by specifying the track index.
</description>
</method>
+ <method name="rotation_track_insert_key">
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="rotation" type="Quaternion" />
+ <description>
+ </description>
+ </method>
+ <method name="scale_track_insert_key">
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="scale" type="Vector3" />
+ <description>
+ </description>
+ </method>
<method name="track_find_key" qualifiers="const">
<return type="int" />
<argument index="0" name="track_idx" type="int" />
@@ -466,25 +499,6 @@
Swaps the track [code]idx[/code]'s index position with the track [code]with_idx[/code].
</description>
</method>
- <method name="transform_track_insert_key">
- <return type="int" />
- <argument index="0" name="track_idx" type="int" />
- <argument index="1" name="time" type="float" />
- <argument index="2" name="location" type="Vector3" />
- <argument index="3" name="rotation" type="Quaternion" />
- <argument index="4" name="scale" type="Vector3" />
- <description>
- Insert a transform key for a transform track.
- </description>
- </method>
- <method name="transform_track_interpolate" qualifiers="const">
- <return type="Array" />
- <argument index="0" name="track_idx" type="int" />
- <argument index="1" name="time_sec" type="float" />
- <description>
- Returns the interpolated value of a transform track at a given time (in seconds). An array consisting of 3 elements: position ([Vector3]), rotation ([Quaternion]) and scale ([Vector3]).
- </description>
- </method>
<method name="value_track_get_key_indices" qualifiers="const">
<return type="PackedInt32Array" />
<argument index="0" name="track_idx" type="int" />
@@ -541,19 +555,24 @@
<constant name="TYPE_VALUE" value="0" enum="TrackType">
Value tracks set values in node properties, but only those which can be Interpolated.
</constant>
- <constant name="TYPE_TRANSFORM3D" value="1" enum="TrackType">
- Transform3D tracks are used to change node local transforms or skeleton pose bones of 3D nodes. Transitions are interpolated.
+ <constant name="TYPE_POSITION_3D" value="1" enum="TrackType">
+ </constant>
+ <constant name="TYPE_ROTATION_3D" value="2" enum="TrackType">
+ </constant>
+ <constant name="TYPE_SCALE_3D" value="3" enum="TrackType">
+ </constant>
+ <constant name="TYPE_BLEND_SHAPE" value="4" enum="TrackType">
</constant>
- <constant name="TYPE_METHOD" value="2" enum="TrackType">
+ <constant name="TYPE_METHOD" value="5" enum="TrackType">
Method tracks call functions with given arguments per key.
</constant>
- <constant name="TYPE_BEZIER" value="3" enum="TrackType">
+ <constant name="TYPE_BEZIER" value="6" enum="TrackType">
Bezier tracks are used to interpolate a value using custom curves. They can also be used to animate sub-properties of vectors and colors (e.g. alpha value of a [Color]).
</constant>
- <constant name="TYPE_AUDIO" value="4" enum="TrackType">
+ <constant name="TYPE_AUDIO" value="7" enum="TrackType">
Audio tracks are used to play an audio stream with either type of [AudioStreamPlayer]. The stream can be trimmed and previewed in the animation.
</constant>
- <constant name="TYPE_ANIMATION" value="5" enum="TrackType">
+ <constant name="TYPE_ANIMATION" value="8" enum="TrackType">
Animation tracks play animations in other [AnimationPlayer] nodes.
</constant>
<constant name="INTERPOLATION_NEAREST" value="0" enum="InterpolationType">
diff --git a/doc/classes/AnimationTree.xml b/doc/classes/AnimationTree.xml
index 3d112e258e..40dcd950d7 100644
--- a/doc/classes/AnimationTree.xml
+++ b/doc/classes/AnimationTree.xml
@@ -22,7 +22,7 @@
<method name="get_root_motion_transform" qualifiers="const">
<return type="Transform3D" />
<description>
- Retrieve the motion of the [member root_motion_track] as a [Transform3D] that can be used elsewhere. If [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_TRANSFORM3D], returns an identity transformation. See also [member root_motion_track] and [RootMotionView].
+ Retrieve the motion of the [member root_motion_track] as a [Transform3D] that can be used elsewhere. If [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_POSITION_3D], [constant Animation.TYPE_SCALE_3D] or [constant Animation.TYPE_ROTATION_3D], returns an identity transformation. See also [member root_motion_track] and [RootMotionView].
</description>
</method>
<method name="rename_parameter">
@@ -45,7 +45,7 @@
</member>
<member name="root_motion_track" type="NodePath" setter="set_root_motion_track" getter="get_root_motion_track" default="NodePath(&quot;&quot;)">
The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by [code]":"[/code]. For example, [code]"character/skeleton:ankle"[/code] or [code]"character/mesh:transform/local"[/code].
- If the track has type [constant Animation.TYPE_TRANSFORM3D], the transformation will be cancelled visually, and the animation will appear to stay in place. See also [method get_root_motion_transform] and [RootMotionView].
+ If the track has type [constant Animation.TYPE_POSITION_3D], [constant Animation.TYPE_ROTATION_3D] or [constant Animation.TYPE_SCALE_3D] the transformation will be cancelled visually, and the animation will appear to stay in place. See also [method get_root_motion_transform] and [RootMotionView].
</member>
<member name="tree_root" type="AnimationNode" setter="set_tree_root" getter="get_tree_root">
The root animation node of this [AnimationTree]. See [AnimationNode].
diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml
index 25f67f0571..ddfc3b1869 100644
--- a/doc/classes/Area2D.xml
+++ b/doc/classes/Area2D.xml
@@ -101,27 +101,27 @@
<signal name="area_shape_entered">
<argument index="0" name="area_rid" type="RID" />
<argument index="1" name="area" type="Area2D" />
- <argument index="2" name="area_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="area_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].
- [code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] used by the [PhysicsServer2D].
+ [code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] used by the [PhysicsServer2D].
[code]area[/code] the other Area2D.
- [code]area_shape[/code] the index of the [Shape2D] of the other Area2D used by the [PhysicsServer2D].
- [code]local_shape[/code] the index of the [Shape2D] of this Area2D used by the [PhysicsServer2D].
+ [code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]area.shape_owner_get_owner(area_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape2D] of this Area2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
<signal name="area_shape_exited">
<argument index="0" name="area_rid" type="RID" />
<argument index="1" name="area" type="Area2D" />
- <argument index="2" name="area_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="area_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].
- [code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] used by the [PhysicsServer2D].
+ [code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] used by the [PhysicsServer2D].
[code]area[/code] the other Area2D.
- [code]area_shape[/code] the index of the [Shape2D] of the other Area2D used by the [PhysicsServer2D].
- [code]local_shape[/code] the index of the [Shape2D] of this Area2D used by the [PhysicsServer2D].
+ [code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]area.shape_owner_get_owner(area_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape2D] of this Area2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
<signal name="body_entered">
@@ -141,27 +141,27 @@
<signal name="body_shape_entered">
<argument index="0" name="body_rid" type="RID" />
<argument index="1" name="body" type="Node2D" />
- <argument index="2" name="body_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="body_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of a [PhysicsBody2D] or [TileMap]'s [Shape2D]s enters one of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to [code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
- [code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
+ [code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody2D] or [TileMap].
- [code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D].
- [code]local_shape[/code] the index of the [Shape2D] of this Area2D used by the [PhysicsServer2D].
+ [code]body_shape_index[/code] the index of the [Shape2D] of the [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]body.shape_owner_get_owner(body_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape2D] of this Area2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
<signal name="body_shape_exited">
<argument index="0" name="body_rid" type="RID" />
<argument index="1" name="body" type="Node2D" />
- <argument index="2" name="body_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="body_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of a [PhysicsBody2D] or [TileMap]'s [Shape2D]s exits one of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to [code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
- [code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
+ [code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody2D] or [TileMap].
- [code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D].
- [code]local_shape[/code] the index of the [Shape2D] of this Area2D used by the [PhysicsServer2D].
+ [code]body_shape_index[/code] the index of the [Shape2D] of the [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]body.shape_owner_get_owner(body_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape2D] of this Area2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
</signals>
diff --git a/doc/classes/Area3D.xml b/doc/classes/Area3D.xml
index e91cfd79a1..896bfcd14e 100644
--- a/doc/classes/Area3D.xml
+++ b/doc/classes/Area3D.xml
@@ -120,27 +120,27 @@
<signal name="area_shape_entered">
<argument index="0" name="area_rid" type="RID" />
<argument index="1" name="area" type="Area3D" />
- <argument index="2" name="area_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="area_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of another Area3D's [Shape3D]s enters one of this Area3D's [Shape3D]s. Requires [member monitoring] to be set to [code]true[/code].
- [code]area_id[/code] the [RID] of the other Area3D's [CollisionObject3D] used by the [PhysicsServer3D].
+ [code]area_rid[/code] the [RID] of the other Area3D's [CollisionObject3D] used by the [PhysicsServer3D].
[code]area[/code] the other Area3D.
- [code]area_shape[/code] the index of the [Shape3D] of the other Area3D used by the [PhysicsServer3D].
- [code]local_shape[/code] the index of the [Shape3D] of this Area3D used by the [PhysicsServer3D].
+ [code]area_shape_index[/code] the index of the [Shape3D] of the other Area3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]area.shape_owner_get_owner(area_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape3D] of this Area3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
<signal name="area_shape_exited">
<argument index="0" name="area_rid" type="RID" />
<argument index="1" name="area" type="Area3D" />
- <argument index="2" name="area_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="area_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of another Area3D's [Shape3D]s enters one of this Area3D's [Shape3D]s. Requires [member monitoring] to be set to [code]true[/code].
- [code]area_id[/code] the [RID] of the other Area3D's [CollisionObject3D] used by the [PhysicsServer3D].
+ [code]area_rid[/code] the [RID] of the other Area3D's [CollisionObject3D] used by the [PhysicsServer3D].
[code]area[/code] the other Area3D.
- [code]area_shape[/code] the index of the [Shape3D] of the other Area3D used by the [PhysicsServer3D].
- [code]local_shape[/code] the index of the [Shape3D] of this Area3D used by the [PhysicsServer3D].
+ [code]area_shape_index[/code] the index of the [Shape3D] of the other Area3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]area.shape_owner_get_owner(area_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape3D] of this Area3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
<signal name="body_entered">
@@ -160,27 +160,27 @@
<signal name="body_shape_entered">
<argument index="0" name="body_rid" type="RID" />
<argument index="1" name="body" type="Node3D" />
- <argument index="2" name="body_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="body_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of a [PhysicsBody3D] or [GridMap]'s [Shape3D]s enters one of this Area3D's [Shape3D]s. Requires [member monitoring] to be set to [code]true[/code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
- [code]body_id[/code] the [RID] of the [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
+ [code]body_rid[/code] the [RID] of the [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody3D] or [GridMap].
- [code]body_shape[/code] the index of the [Shape3D] of the [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D].
- [code]local_shape[/code] the index of the [Shape3D] of this Area3D used by the [PhysicsServer3D].
+ [code]body_shape_index[/code] the index of the [Shape3D] of the [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]body.shape_owner_get_owner(body_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape3D] of this Area3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
<signal name="body_shape_exited">
<argument index="0" name="body_rid" type="RID" />
<argument index="1" name="body" type="Node3D" />
- <argument index="2" name="body_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="body_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of a [PhysicsBody3D] or [GridMap]'s [Shape3D]s enters one of this Area3D's [Shape3D]s. Requires [member monitoring] to be set to [code]true[/code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
- [code]body_id[/code] the [RID] of the [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
+ [code]body_rid[/code] the [RID] of the [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody3D] or [GridMap].
- [code]body_shape[/code] the index of the [Shape3D] of the [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D].
- [code]local_shape[/code] the index of the [Shape3D] of this Area3D used by the [PhysicsServer3D].
+ [code]body_shape_index[/code] the index of the [Shape3D] of the [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]body.shape_owner_get_owner(body_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape3D] of this Area3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
</signals>
diff --git a/doc/classes/AudioStreamPlayer3D.xml b/doc/classes/AudioStreamPlayer3D.xml
index bd344fad29..e8a78d5a4c 100644
--- a/doc/classes/AudioStreamPlayer3D.xml
+++ b/doc/classes/AudioStreamPlayer3D.xml
@@ -123,7 +123,7 @@
Logarithmic dampening of loudness according to distance.
</constant>
<constant name="ATTENUATION_DISABLED" value="3" enum="AttenuationModel">
- No dampening of loudness according to distance. The sound will still be heard positionally, unlike an [AudioStreamPlayer].
+ No dampening of loudness according to distance. The sound will still be heard positionally, unlike an [AudioStreamPlayer]. [constant ATTENUATION_DISABLED] can be combined with a [member max_distance] value greater than [code]0.0[/code] to achieve linear attenuation clamped to a sphere of a defined size.
</constant>
<constant name="DOPPLER_TRACKING_DISABLED" value="0" enum="DopplerTracking">
Disables doppler tracking.
diff --git a/doc/classes/CharFXTransform.xml b/doc/classes/CharFXTransform.xml
index 2d8e7817c1..b11d9c341a 100644
--- a/doc/classes/CharFXTransform.xml
+++ b/doc/classes/CharFXTransform.xml
@@ -15,7 +15,7 @@
The color the character will be drawn with.
</member>
<member name="elapsed_time" type="float" setter="set_elapsed_time" getter="get_elapsed_time" default="0.0">
- The time elapsed since the [RichTextLabel] was added to the scene tree (in seconds). Time stops when the project is paused depending on the value of the [RichTextLabel]'s [member Node.process_mode].
+ The time elapsed since the [RichTextLabel] was added to the scene tree (in seconds). Time stops when the [RichTextLabel] is paused (see [member Node.process_mode]). Resets when the text in the [RichTextLabel] is changed.
[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden.
</member>
<member name="env" type="Dictionary" setter="set_environment" getter="get_environment" default="{}">
diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml
index 1cdfbd760e..58b6e89507 100644
--- a/doc/classes/ColorPickerButton.xml
+++ b/doc/classes/ColorPickerButton.xml
@@ -17,12 +17,14 @@
<return type="ColorPicker" />
<description>
Returns the [ColorPicker] that this node toggles.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="get_popup">
<return type="PopupPanel" />
<description>
Returns the control's [PopupPanel] which allows you to connect to popup signals. This allows you to handle events when the ColorPicker is shown or hidden.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.
</description>
</method>
</methods>
diff --git a/doc/classes/ConfirmationDialog.xml b/doc/classes/ConfirmationDialog.xml
index 352631da1d..c4bdaf436d 100644
--- a/doc/classes/ConfirmationDialog.xml
+++ b/doc/classes/ConfirmationDialog.xml
@@ -22,6 +22,7 @@
<return type="Button" />
<description>
Returns the cancel button.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
</methods>
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index 7c8239977f..63e3eb7a5f 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -763,10 +763,10 @@
</method>
<method name="set_drag_forwarding">
<return type="void" />
- <argument index="0" name="target" type="Node" />
+ <argument index="0" name="target" type="Object" />
<description>
- Forwards the handling of this control's drag and drop to [code]target[/code] node.
- Forwarding can be implemented in the target node similar to the methods [method _get_drag_data], [method _can_drop_data], and [method _drop_data] but with two differences:
+ Forwards the handling of this control's drag and drop to [code]target[/code] object.
+ Forwarding can be implemented in the target object similar to the methods [method _get_drag_data], [method _can_drop_data], and [method _drop_data] but with two differences:
1. The function name must be suffixed with [b]_fw[/b]
2. The function must take an extra argument that is the control doing the forwarding
[codeblocks]
@@ -1044,7 +1044,7 @@
<member name="rect_scale" type="Vector2" setter="set_scale" getter="get_scale" default="Vector2(1, 1)">
The node's scale, relative to its [member rect_size]. Change this property to scale the node around its [member rect_pivot_offset]. The Control's [member hint_tooltip] will also scale according to this value.
[b]Note:[/b] This property is mainly intended to be used for animation purposes. Text inside the Control will look pixelated or blurry when the Control is scaled. To support multiple resolutions in your project, use an appropriate viewport stretch mode as described in the [url=https://docs.godotengine.org/en/latest/tutorials/viewports/multiple_resolutions.html]documentation[/url] instead of scaling Controls individually.
- [b]Note:[/b] If the Control node is a child of a [Container] node, the scale will be reset to [code]Vector2(1, 1)[/code] when the scene is instantiated. To set the Control's scale when it's instantiated, wait for one frame using [code]yield(get_tree(), "process_frame")[/code] then set its [member rect_scale] property.
+ [b]Note:[/b] If the Control node is a child of a [Container] node, the scale will be reset to [code]Vector2(1, 1)[/code] when the scene is instantiated. To set the Control's scale when it's instantiated, wait for one frame using [code]await get_tree().process_frame[/code] then set its [member rect_scale] property.
</member>
<member name="rect_size" type="Vector2" setter="_set_size" getter="get_size" default="Vector2(0, 0)">
The size of the node's bounding rectangle, in pixels. [Container] nodes update this property automatically.
diff --git a/doc/classes/DirectionalLight3D.xml b/doc/classes/DirectionalLight3D.xml
index 7c006ad3a6..f2a6e5b6f8 100644
--- a/doc/classes/DirectionalLight3D.xml
+++ b/doc/classes/DirectionalLight3D.xml
@@ -11,7 +11,7 @@
</tutorials>
<members>
<member name="directional_shadow_blend_splits" type="bool" setter="set_blend_splits" getter="is_blend_splits_enabled" default="false">
- If [code]true[/code], shadow detail is sacrificed in exchange for smoother transitions between splits.
+ If [code]true[/code], shadow detail is sacrificed in exchange for smoother transitions between splits. This is ignored when [member directional_shadow_mode] is [code]SHADOW_ORTHOGONAL[/code].
</member>
<member name="directional_shadow_fade_start" type="float" setter="set_param" getter="get_param" default="0.8">
Proportion of [member directional_shadow_max_distance] at which point the shadow starts to fade. At [member directional_shadow_max_distance] the shadow will disappear.
@@ -29,7 +29,7 @@
The distance from camera to shadow split 1. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [code]SHADOW_PARALLEL_2_SPLITS[/code] or [code]SHADOW_PARALLEL_4_SPLITS[/code].
</member>
<member name="directional_shadow_split_2" type="float" setter="set_param" getter="get_param" default="0.2">
- The distance from shadow split 1 to split 2. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [code]SHADOW_PARALLEL_2_SPLITS[/code] or [code]SHADOW_PARALLEL_4_SPLITS[/code].
+ The distance from shadow split 1 to split 2. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [code]SHADOW_PARALLEL_4_SPLITS[/code].
</member>
<member name="directional_shadow_split_3" type="float" setter="set_param" getter="get_param" default="0.5">
The distance from shadow split 2 to split 3. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [code]SHADOW_PARALLEL_4_SPLITS[/code].
diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml
index 7a467c03c1..92d6a220d2 100644
--- a/doc/classes/DisplayServer.xml
+++ b/doc/classes/DisplayServer.xml
@@ -13,6 +13,13 @@
Returns the user's clipboard as a string if possible.
</description>
</method>
+ <method name="clipboard_get_primary" qualifiers="const">
+ <return type="String" />
+ <description>
+ Returns the user's primary clipboard as a string if possible.
+ [b]Note:[/b] This method is only implemented on Linux.
+ </description>
+ </method>
<method name="clipboard_set">
<return type="void" />
<argument index="0" name="clipboard" type="String" />
@@ -20,6 +27,14 @@
Sets the user's clipboard content to the given string.
</description>
</method>
+ <method name="clipboard_set_primary">
+ <return type="void" />
+ <argument index="0" name="clipboard_primary" type="String" />
+ <description>
+ Sets the user's primary clipboard content to the given string.
+ [b]Note:[/b] This method is only implemented on Linux.
+ </description>
+ </method>
<method name="console_set_visible">
<return type="void" />
<argument index="0" name="console_visible" type="bool" />
@@ -804,6 +819,8 @@
</constant>
<constant name="FEATURE_SWAP_BUFFERS" value="17" enum="Feature">
</constant>
+ <constant name="FEATURE_CLIPBOARD_PRIMARY" value="19" enum="Feature">
+ </constant>
<constant name="MOUSE_MODE_VISIBLE" value="0" enum="MouseMode">
Makes the mouse cursor visible if it is hidden.
</constant>
diff --git a/doc/classes/EditorDebuggerPlugin.xml b/doc/classes/EditorDebuggerPlugin.xml
index 0773e176b3..6687d3c3ac 100644
--- a/doc/classes/EditorDebuggerPlugin.xml
+++ b/doc/classes/EditorDebuggerPlugin.xml
@@ -4,9 +4,10 @@
A base class to implement debugger plugins.
</brief_description>
<description>
- All debugger plugin scripts must extend [EditorDebuggerPlugin]. It provides functions related to editor side of debugger.
- You don't need to instantiate this class. That is handled by the debugger itself. [Control] nodes can be added as child nodes to provide a GUI front-end for the plugin.
- Do not queue_free/reparent it's instance otherwise the instance becomes unusable.
+ [EditorDebuggerPlugin] provides functions related to the editor side of the debugger.
+ You don't need to instantiate this class; that is automatically handled by the debugger. [Control] nodes can be added as child nodes to provide a GUI for the plugin.
+ Do not free or reparent this node, otherwise it becomes unusable.
+ To use [EditorDebuggerPlugin], register it using the [method EditorPlugin.add_debugger_plugin] method first.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/EditorExportPlugin.xml b/doc/classes/EditorExportPlugin.xml
index fca7bb350d..3830bfc60e 100644
--- a/doc/classes/EditorExportPlugin.xml
+++ b/doc/classes/EditorExportPlugin.xml
@@ -4,7 +4,8 @@
A script that is executed when exporting the project.
</brief_description>
<description>
- Editor export plugins are automatically activated whenever the user exports the project. Their most common use is to determine what files are being included in the exported project. For each plugin, [method _export_begin] is called at the beginning of the export process and then [method _export_file] is called for each exported file.
+ [EditorExportPlugin]s are automatically invoked whenever the user exports the project. Their most common use is to determine what files are being included in the exported project. For each plugin, [method _export_begin] is called at the beginning of the export process and then [method _export_file] is called for each exported file.
+ To use [EditorExportPlugin], register it using the [method EditorPlugin.add_export_plugin] method first.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/EditorFileDialog.xml b/doc/classes/EditorFileDialog.xml
index 53fba9f3b8..79758281ac 100644
--- a/doc/classes/EditorFileDialog.xml
+++ b/doc/classes/EditorFileDialog.xml
@@ -26,6 +26,7 @@
<return type="VBoxContainer" />
<description>
Returns the [code]VBoxContainer[/code] used to display the file system.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="invalidate">
diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml
index c5a44009d2..cb33f159ef 100644
--- a/doc/classes/EditorImportPlugin.xml
+++ b/doc/classes/EditorImportPlugin.xml
@@ -4,8 +4,8 @@
Registers a custom resource importer in the editor. Use the class to parse any file and import it as a new resource type.
</brief_description>
<description>
- EditorImportPlugins provide a way to extend the editor's resource import functionality. Use them to import resources from custom files or to provide alternatives to the editor's existing importers. Register your [EditorPlugin] with [method EditorPlugin.add_import_plugin].
- EditorImportPlugins work by associating with specific file extensions and a resource type. See [method _get_recognized_extensions] and [method _get_resource_type]. They may optionally specify some import presets that affect the import process. EditorImportPlugins are responsible for creating the resources and saving them in the [code].godot/imported[/code] directory (see [member ProjectSettings.application/config/project_data_dir_name]).
+ [EditorImportPlugin]s provide a way to extend the editor's resource import functionality. Use them to import resources from custom files or to provide alternatives to the editor's existing importers.
+ EditorImportPlugins work by associating with specific file extensions and a resource type. See [method _get_recognized_extensions] and [method _get_resource_type]. They may optionally specify some import presets that affect the import process. EditorImportPlugins are responsible for creating the resources and saving them in the [code].godot/imported[/code] directory (see [member ProjectSettings.application/config/use_hidden_project_data_directory]).
Below is an example EditorImportPlugin that imports a [Mesh] from a file with the extension ".special" or ".spec":
[codeblocks]
[gdscript]
@@ -108,6 +108,7 @@
}
[/csharp]
[/codeblocks]
+ To use [EditorImportPlugin], register it using the [method EditorPlugin.add_import_plugin] method first.
</description>
<tutorials>
<link title="Import plugins">https://docs.godotengine.org/en/latest/tutorials/plugins/editor/import_plugins.html</link>
@@ -197,7 +198,7 @@
<method name="_get_save_extension" qualifiers="virtual const">
<return type="String" />
<description>
- Gets the extension used to save this resource in the [code].godot/imported[/code] directory (see [member ProjectSettings.application/config/project_data_dir_name]).
+ Gets the extension used to save this resource in the [code].godot/imported[/code] directory (see [member ProjectSettings.application/config/use_hidden_project_data_directory]).
</description>
</method>
<method name="_get_visible_name" qualifiers="virtual const">
diff --git a/doc/classes/EditorInspectorPlugin.xml b/doc/classes/EditorInspectorPlugin.xml
index 17397b80bf..f65e974d47 100644
--- a/doc/classes/EditorInspectorPlugin.xml
+++ b/doc/classes/EditorInspectorPlugin.xml
@@ -4,13 +4,13 @@
Plugin for adding custom property editors on inspector.
</brief_description>
<description>
- These plugins allow adding custom property editors to [EditorInspector].
- Plugins are registered via [method EditorPlugin.add_inspector_plugin].
+ [EditorInspectorPlugin] allows adding custom property editors to [EditorInspector].
When an object is edited, the [method _can_handle] function is called and must return [code]true[/code] if the object type is supported.
If supported, the function [method _parse_begin] will be called, allowing to place custom controls at the beginning of the class.
Subsequently, the [method _parse_category] and [method _parse_property] are called for every category and property. They offer the ability to add custom controls to the inspector too.
Finally, [method _parse_end] will be called.
On each of these calls, the "add" functions can be called.
+ To use [EditorInspectorPlugin], register it using the [method EditorPlugin.add_inspector_plugin] method first.
</description>
<tutorials>
<link title="Inspector plugins">https://docs.godotengine.org/en/latest/tutorials/plugins/editor/inspector_plugins.html</link>
diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml
index ad878aad80..5790d8c5af 100644
--- a/doc/classes/EditorInterface.xml
+++ b/doc/classes/EditorInterface.xml
@@ -28,12 +28,14 @@
<return type="Control" />
<description>
Returns the main container of Godot editor's window. For example, you can use it to retrieve the size of the container and place your controls accordingly.
+ [b]Warning:[/b] Removing and freeing this node will render the editor useless and may cause a crash.
</description>
</method>
<method name="get_command_palette" qualifiers="const">
<return type="EditorCommandPalette" />
<description>
Returns the editor's [EditorCommandPalette] instance.
+ [b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash.
</description>
</method>
<method name="get_current_path" qualifiers="const">
@@ -53,6 +55,7 @@
<description>
Returns the main editor control. Use this as a parent for main screens.
[b]Note:[/b] This returns the main editor control containing the whole editor, not the 2D or 3D viewports specifically.
+ [b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash.
</description>
</method>
<method name="get_editor_paths">
@@ -77,12 +80,14 @@
<return type="FileSystemDock" />
<description>
Returns the editor's [FileSystemDock] instance.
+ [b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash.
</description>
</method>
<method name="get_inspector" qualifiers="const">
<return type="EditorInspector" />
<description>
Returns the editor's [EditorInspector] instance.
+ [b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash.
</description>
</method>
<method name="get_open_scenes" qualifiers="const">
@@ -113,6 +118,7 @@
<return type="ScriptEditor" />
<description>
Returns the editor's [ScriptEditor] instance.
+ [b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash.
</description>
</method>
<method name="get_selected_path" qualifiers="const">
diff --git a/doc/classes/EditorNode3DGizmoPlugin.xml b/doc/classes/EditorNode3DGizmoPlugin.xml
index 424d5dd310..08423c4577 100644
--- a/doc/classes/EditorNode3DGizmoPlugin.xml
+++ b/doc/classes/EditorNode3DGizmoPlugin.xml
@@ -4,7 +4,8 @@
Used by the editor to define Node3D gizmo types.
</brief_description>
<description>
- EditorNode3DGizmoPlugin allows you to define a new type of Gizmo. There are two main ways to do so: extending [EditorNode3DGizmoPlugin] for the simpler gizmos, or creating a new [EditorNode3DGizmo] type. See the tutorial in the documentation for more info.
+ [EditorNode3DGizmoPlugin] allows you to define a new type of Gizmo. There are two main ways to do so: extending [EditorNode3DGizmoPlugin] for the simpler gizmos, or creating a new [EditorNode3DGizmo] type. See the tutorial in the documentation for more info.
+ To use [EditorNode3DGizmoPlugin], register it using the [method EditorPlugin.add_spatial_gizmo_plugin] method first.
</description>
<tutorials>
<link title="Spatial gizmo plugins">https://docs.godotengine.org/en/latest/tutorials/plugins/editor/spatial_gizmos.html</link>
diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml
index 4aa6963f57..8df6d721d4 100644
--- a/doc/classes/EditorPlugin.xml
+++ b/doc/classes/EditorPlugin.xml
@@ -381,7 +381,7 @@
<argument index="0" name="importer" type="EditorImportPlugin" />
<description>
Registers a new [EditorImportPlugin]. Import plugins are used to import custom and unsupported assets as a custom [Resource] type.
- [b]Note:[/b] If you want to import custom 3D asset formats use [method add_scene_import_plugin] instead.
+ [b]Note:[/b] If you want to import custom 3D asset formats use [method add_scene_format_importer_plugin] instead.
See [method add_inspector_plugin] for an example of how to register a plugin.
</description>
</method>
@@ -405,11 +405,18 @@
[/codeblocks]
</description>
</method>
- <method name="add_scene_import_plugin">
+ <method name="add_scene_format_importer_plugin">
<return type="void" />
- <argument index="0" name="scene_importer" type="EditorSceneImporter" />
+ <argument index="0" name="scene_format_importer" type="EditorSceneFormatImporter" />
<description>
- Registers a new [EditorSceneImporter]. Scene importers are used to import custom 3D asset formats as scenes.
+ Registers a new [EditorSceneFormatImporter]. Scene importers are used to import custom 3D asset formats as scenes.
+ </description>
+ </method>
+ <method name="add_scene_post_import_plugin">
+ <return type="void" />
+ <argument index="0" name="scene_import_plugin" type="EditorScenePostImportPlugin" />
+ <description>
+ Add a [EditorScenePostImportPlugin]. These plugins allow customizing the import process of 3D assets by adding new options to the import dialogs.
</description>
</method>
<method name="add_spatial_gizmo_plugin">
@@ -462,6 +469,7 @@
<description>
Gets the Editor's dialogue 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>
</method>
<method name="get_undo_redo">
@@ -553,11 +561,18 @@
Removes an inspector plugin registered by [method add_import_plugin]
</description>
</method>
- <method name="remove_scene_import_plugin">
+ <method name="remove_scene_format_importer_plugin">
+ <return type="void" />
+ <argument index="0" name="scene_format_importer" type="EditorSceneFormatImporter" />
+ <description>
+ Removes a scene format importer registered by [method add_scene_format_importer_plugin].
+ </description>
+ </method>
+ <method name="remove_scene_post_import_plugin">
<return type="void" />
- <argument index="0" name="scene_importer" type="EditorSceneImporter" />
+ <argument index="0" name="scene_import_plugin" type="EditorScenePostImportPlugin" />
<description>
- Removes a scene importer registered by [method add_scene_import_plugin].
+ Remove the [EditorScenePostImportPlugin], added with [method add_scene_post_import_plugin].
</description>
</method>
<method name="remove_spatial_gizmo_plugin">
diff --git a/doc/classes/EditorProperty.xml b/doc/classes/EditorProperty.xml
index 6af6507606..5f342e6dc2 100644
--- a/doc/classes/EditorProperty.xml
+++ b/doc/classes/EditorProperty.xml
@@ -73,8 +73,8 @@
<member name="deletable" type="bool" setter="set_deletable" getter="is_deletable" default="false">
Used by the inspector, set to [code]true[/code] when the property can be deleted by the user.
</member>
- <member name="draw_red" type="bool" setter="set_draw_red" getter="is_draw_red" default="false">
- Used by the inspector, set to [code]true[/code] when the property must draw with error color. This is used for editable children's properties.
+ <member name="draw_warning" type="bool" setter="set_draw_warning" getter="is_draw_warning" default="false">
+ Used by the inspector, set to [code]true[/code] when the property is drawn with the editor theme's warning color. This is used for editable children's properties.
</member>
<member name="keying" type="bool" setter="set_keying" getter="is_keying" default="false">
Used by the inspector, set to [code]true[/code] when the property can add keys for animation.
diff --git a/doc/classes/EditorSceneImporter.xml b/doc/classes/EditorSceneFormatImporter.xml
index a400db551f..6dbd80604e 100644
--- a/doc/classes/EditorSceneImporter.xml
+++ b/doc/classes/EditorSceneFormatImporter.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSceneImporter" inherits="RefCounted" version="4.0">
+<class name="EditorSceneFormatImporter" inherits="RefCounted" version="4.0">
<brief_description>
Imports scenes from third-parties' 3D files.
</brief_description>
<description>
+ [EditorSceneFormatImporter] allows to define an importer script for a third-party 3D format.
+ To use [EditorSceneFormatImporter], register it using the [method EditorPlugin.add_scene_format_importer_plugin] method first.
</description>
<tutorials>
</tutorials>
diff --git a/modules/fbx/doc_classes/EditorSceneImporterFBX.xml b/doc/classes/EditorSceneFormatImporterFBX.xml
index 6f83871772..117030dfd5 100644
--- a/modules/fbx/doc_classes/EditorSceneImporterFBX.xml
+++ b/doc/classes/EditorSceneFormatImporterFBX.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSceneImporterFBX" inherits="EditorSceneImporter" version="4.0">
+<class name="EditorSceneFormatImporterFBX" inherits="EditorSceneFormatImporter" version="4.0">
<brief_description>
FBX 3D asset importer.
</brief_description>
diff --git a/modules/gltf/doc_classes/EditorSceneImporterGLTF.xml b/doc/classes/EditorSceneFormatImporterGLTF.xml
index c85fce7b9d..1476a22aef 100644
--- a/modules/gltf/doc_classes/EditorSceneImporterGLTF.xml
+++ b/doc/classes/EditorSceneFormatImporterGLTF.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSceneImporterGLTF" inherits="EditorSceneImporter" version="4.0">
+<class name="EditorSceneFormatImporterGLTF" inherits="EditorSceneFormatImporter" version="4.0">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/EditorScenePostImportPlugin.xml b/doc/classes/EditorScenePostImportPlugin.xml
new file mode 100644
index 0000000000..07d8fa28b9
--- /dev/null
+++ b/doc/classes/EditorScenePostImportPlugin.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EditorScenePostImportPlugin" inherits="RefCounted" version="4.0">
+ <brief_description>
+ Plugin to control and modifying the process of importing a scene.
+ </brief_description>
+ <description>
+ This plugin type exists to modify the process of importing scenes, allowing to change the content as well as add importer options at every stage of the process.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="_get_import_options" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ Override to add general import options. These will appear in the main import dock on the editor. Add options via [method add_import_option] and [method add_import_option_advanced].
+ </description>
+ </method>
+ <method name="_get_internal_import_options" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="category" type="int" />
+ <description>
+ Override to add internal import options. These will appear in the 3D scene import dialog. Add options via [method add_import_option] and [method add_import_option_advanced].
+ </description>
+ </method>
+ <method name="_get_internal_option_update_view_required" qualifiers="virtual const">
+ <return type="Variant" />
+ <argument index="0" name="category" type="int" />
+ <argument index="1" name="option" type="String" />
+ <description>
+ Return true whether updating the 3D view of the import dialog needs to be updated if an option has changed.
+ </description>
+ </method>
+ <method name="_get_internal_option_visibility" qualifiers="virtual const">
+ <return type="Variant" />
+ <argument index="0" name="category" type="int" />
+ <argument index="1" name="option" type="String" />
+ <description>
+ Return true or false whether a given option should be visible. Return null to ignore.
+ </description>
+ </method>
+ <method name="_get_option_visibility" qualifiers="virtual const">
+ <return type="Variant" />
+ <argument index="0" name="option" type="String" />
+ <description>
+ Return true or false whether a given option should be visible. Return null to ignore.
+ </description>
+ </method>
+ <method name="_internal_process" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="category" type="int" />
+ <argument index="1" name="base_node" type="Node" />
+ <argument index="2" name="node" type="Node" />
+ <argument index="3" name="resource" type="Resource" />
+ <description>
+ Process a specific node or resource for a given category.
+ </description>
+ </method>
+ <method name="_post_process" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="scene" type="Node" />
+ <description>
+ Post process the scene. This function is called after the final scene has been configured.
+ </description>
+ </method>
+ <method name="_pre_process" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="scene" type="Node" />
+ <description>
+ Pre Process the scene. This function is called right after the scene format loader loaded the scene and no changes have been made.
+ </description>
+ </method>
+ <method name="add_import_option">
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="value" type="Variant" />
+ <description>
+ Add a specific import option (name and default value only). This function can only be called from [method _get_import_options] and [method _get_internal_import_options].
+ </description>
+ </method>
+ <method name="add_import_option_advanced">
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="Variant.Type" />
+ <argument index="1" name="name" type="String" />
+ <argument index="2" name="default_value" type="Variant" />
+ <argument index="3" name="hint" type="int" enum="PropertyHint" default="0" />
+ <argument index="4" name="hint_string" type="String" default="&quot;&quot;" />
+ <argument index="5" name="usage_flags" type="int" default="7" />
+ <description>
+ Add a specific import option. This function can only be called from [method _get_import_options] and [method _get_internal_import_options].
+ </description>
+ </method>
+ <method name="get_option_value" qualifiers="const">
+ <return type="Variant" />
+ <argument index="0" name="name" type="StringName" />
+ <description>
+ Query the value of an option. This function can only be called from those querying visibility, or processing.
+ </description>
+ </method>
+ </methods>
+ <constants>
+ <constant name="INTERNAL_IMPORT_CATEGORY_NODE" value="0" enum="InternalImportCategory">
+ </constant>
+ <constant name="INTERNAL_IMPORT_CATEGORY_MESH_3D_NODE" value="1" enum="InternalImportCategory">
+ </constant>
+ <constant name="INTERNAL_IMPORT_CATEGORY_MESH" value="2" enum="InternalImportCategory">
+ </constant>
+ <constant name="INTERNAL_IMPORT_CATEGORY_MATERIAL" value="3" enum="InternalImportCategory">
+ </constant>
+ <constant name="INTERNAL_IMPORT_CATEGORY_ANIMATION" value="4" enum="InternalImportCategory">
+ </constant>
+ <constant name="INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE" value="5" enum="InternalImportCategory">
+ </constant>
+ <constant name="INTERNAL_IMPORT_CATEGORY_MAX" value="6" enum="InternalImportCategory">
+ </constant>
+ </constants>
+</class>
diff --git a/doc/classes/EditorTranslationParserPlugin.xml b/doc/classes/EditorTranslationParserPlugin.xml
index de8204def3..900d877f12 100644
--- a/doc/classes/EditorTranslationParserPlugin.xml
+++ b/doc/classes/EditorTranslationParserPlugin.xml
@@ -4,7 +4,7 @@
Plugin for adding custom parsers to extract strings that are to be translated from custom files (.csv, .json etc.).
</brief_description>
<description>
- Plugins are registered via [method EditorPlugin.add_translation_parser_plugin] method. To define the parsing and string extraction logic, override the [method _parse_file] method in script.
+ [EditorTranslationParserPlugin] is invoked when a file is being parsed to extract strings that require translation. To define the parsing and string extraction logic, override the [method _parse_file] method in script.
Add the extracted strings to argument [code]msgids[/code] or [code]msgids_context_plural[/code] if context or plural is used.
When adding to [code]msgids_context_plural[/code], you must add the data using the format [code]["A", "B", "C"][/code], where [code]A[/code] represents the extracted string, [code]B[/code] represents the context, and [code]C[/code] represents the plural version of the extracted string. If you want to add only context but not plural, put [code]""[/code] for the plural slot. The idea is the same if you only want to add plural but not context. See the code below for concrete examples.
The extracted strings will be written into a POT file selected by user under "POT Generation" in "Localization" tab in "Project Settings" menu.
@@ -98,6 +98,7 @@
}
[/csharp]
[/codeblocks]
+ To use [EditorTranslationParserPlugin], register it using the [method EditorPlugin.add_translation_parser_plugin] method first.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index 98b0de6ce1..80298a0319 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -101,8 +101,10 @@
If [code]true[/code], fog effects are enabled.
</member>
<member name="fog_height" type="float" setter="set_fog_height" getter="get_fog_height" default="0.0">
+ The height at which the height fog effect begins.
</member>
<member name="fog_height_density" type="float" setter="set_fog_height_density" getter="get_fog_height_density" default="0.0">
+ The density used to increase fog as height decreases. To make fog increase as height increases, use a negative value.
</member>
<member name="fog_light_color" type="Color" setter="set_fog_light_color" getter="get_fog_light_color" default="Color(0.5, 0.6, 0.7, 1)">
</member>
diff --git a/doc/classes/FileDialog.xml b/doc/classes/FileDialog.xml
index 22b5c72fa9..fa43f97104 100644
--- a/doc/classes/FileDialog.xml
+++ b/doc/classes/FileDialog.xml
@@ -32,12 +32,14 @@
<return type="LineEdit" />
<description>
Returns the LineEdit for the selected file.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="get_vbox">
<return type="VBoxContainer" />
<description>
Returns the vertical box container of the dialog, custom controls can be added to it.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="invalidate">
diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml
index 2213b9b8b2..673bf19122 100644
--- a/doc/classes/GraphEdit.xml
+++ b/doc/classes/GraphEdit.xml
@@ -89,8 +89,8 @@
<method name="get_zoom_hbox">
<return type="HBoxContainer" />
<description>
- Gets the [HBoxContainer] that contains the zooming and grid snap controls in the top left of the graph.
- Warning: The intended usage of this function is to allow you to reposition or add your own custom controls to the container. This is an internal control and as such should not be freed. If you wish to hide this or any of its children, use their [member CanvasItem.visible] property instead.
+ Gets the [HBoxContainer] that contains the zooming and grid snap controls in the top left of the graph. You can use this method to reposition the toolbar or to add your own custom controls to it.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="is_node_connected">
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index 00ead31115..1fded42db2 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -37,6 +37,13 @@
Adds a new mapping entry (in SDL2 format) to the mapping database. Optionally update already connected devices.
</description>
</method>
+ <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]).
+ 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>
<method name="get_accelerometer" qualifiers="const">
<return type="Vector3" />
<description>
@@ -269,6 +276,14 @@
Removes all mappings from the internal database that match the given GUID.
</description>
</method>
+ <method name="set_accelerometer">
+ <return type="void" />
+ <argument index="0" name="value" type="Vector3" />
+ <description>
+ Sets the acceleration value of the accelerometer sensor. Can be used for debugging on devices without a hardware sensor, for example in an editor on a PC.
+ [b]Note:[/b] This value can be immediately overwritten by the hardware sensor value on Android and iOS.
+ </description>
+ </method>
<method name="set_custom_mouse_cursor">
<return type="void" />
<argument index="0" name="image" type="Resource" />
@@ -291,6 +306,30 @@
[b]Note:[/b] This method generates an [InputEventMouseMotion] to update cursor immediately.
</description>
</method>
+ <method name="set_gravity">
+ <return type="void" />
+ <argument index="0" name="value" type="Vector3" />
+ <description>
+ Sets the gravity value of the accelerometer sensor. Can be used for debugging on devices without a hardware sensor, for example in an editor on a PC.
+ [b]Note:[/b] This value can be immediately overwritten by the hardware sensor value on Android and iOS.
+ </description>
+ </method>
+ <method name="set_gyroscope">
+ <return type="void" />
+ <argument index="0" name="value" type="Vector3" />
+ <description>
+ Sets the value of the rotation rate of the gyroscope sensor. Can be used for debugging on devices without a hardware sensor, for example in an editor on a PC.
+ [b]Note:[/b] This value can be immediately overwritten by the hardware sensor value on Android and iOS.
+ </description>
+ </method>
+ <method name="set_magnetometer">
+ <return type="void" />
+ <argument index="0" name="value" type="Vector3" />
+ <description>
+ Sets the value of the magnetic field of the magnetometer sensor. Can be used for debugging on devices without a hardware sensor, for example in an editor on a PC.
+ [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" />
diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml
index e3e4a9fa7d..0a995c770b 100644
--- a/doc/classes/ItemList.xml
+++ b/doc/classes/ItemList.xml
@@ -165,6 +165,7 @@
<return type="VScrollBar" />
<description>
Returns the [Object] ID associated with the list.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="is_anything_selected">
diff --git a/doc/classes/Light3D.xml b/doc/classes/Light3D.xml
index 52359b0ede..dbda22d618 100644
--- a/doc/classes/Light3D.xml
+++ b/doc/classes/Light3D.xml
@@ -32,7 +32,7 @@
If [code]true[/code], the light only appears in the editor and will not be visible at runtime.
</member>
<member name="light_angular_distance" type="float" setter="set_param" getter="get_param" default="0.0">
- The light's angular size in degrees. Only available for [DirectionalLight3D]s. For reference, the Sun from the Earth is approximately [code]0.5[/code].
+ The light's angular size in degrees. Increasing this will make shadows softer at greater distances. Only available for [DirectionalLight3D]s. For reference, the Sun from the Earth is approximately [code]0.5[/code].
</member>
<member name="light_bake_mode" type="int" setter="set_bake_mode" getter="get_bake_mode" enum="Light3D.BakeMode" default="1">
The light's bake mode. See [enum BakeMode].
diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml
index 4ad71d1e80..a37bab9b11 100644
--- a/doc/classes/LineEdit.xml
+++ b/doc/classes/LineEdit.xml
@@ -67,6 +67,7 @@
<return type="PopupMenu" />
<description>
Returns the [PopupMenu] of this [LineEdit]. By default, this menu is displayed when right-clicking on the [LineEdit].
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.
</description>
</method>
<method name="get_opentype_feature" qualifiers="const">
@@ -221,6 +222,10 @@
[/csharp]
[/codeblocks]
</member>
+ <member name="middle_mouse_paste_enabled" type="bool" setter="set_middle_mouse_paste_enabled" getter="is_middle_mouse_paste_enabled" default="true">
+ If [code]false[/code], using middle mouse button to paste clipboard will be disabled.
+ [b]Note:[/b] This method is only implemented on Linux.
+ </member>
<member name="mouse_default_cursor_shape" type="int" setter="set_default_cursor_shape" getter="get_default_cursor_shape" override="true" enum="Control.CursorShape" default="1" />
<member name="placeholder_alpha" type="float" setter="set_placeholder_alpha" getter="get_placeholder_alpha" default="0.6">
Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/code].
diff --git a/doc/classes/MenuButton.xml b/doc/classes/MenuButton.xml
index 5bdc9cccd9..dda9b98db4 100644
--- a/doc/classes/MenuButton.xml
+++ b/doc/classes/MenuButton.xml
@@ -15,6 +15,7 @@
<return type="PopupMenu" />
<description>
Returns the [PopupMenu] contained in this button.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.
</description>
</method>
<method name="set_disable_shortcuts">
diff --git a/doc/classes/MeshInstance3D.xml b/doc/classes/MeshInstance3D.xml
index 507a76197a..b72ce46310 100644
--- a/doc/classes/MeshInstance3D.xml
+++ b/doc/classes/MeshInstance3D.xml
@@ -41,6 +41,12 @@
This helper creates a [StaticBody3D] child node with a [ConcavePolygonShape3D] collision shape calculated from the mesh geometry. It's mainly used for testing.
</description>
</method>
+ <method name="find_blend_shape_by_name">
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
+ <description>
+ </description>
+ </method>
<method name="get_active_material" qualifiers="const">
<return type="Material" />
<argument index="0" name="surface" type="int" />
@@ -48,6 +54,17 @@
Returns the [Material] that will be used by the [Mesh] when drawing. This can return the [member GeometryInstance3D.material_override], the surface override [Material] defined in this [MeshInstance3D], or the surface [Material] defined in the [Mesh]. For example, if [member GeometryInstance3D.material_override] is used, all surfaces will return the override material.
</description>
</method>
+ <method name="get_blend_shape_count" qualifiers="const">
+ <return type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="get_blend_shape_value" qualifiers="const">
+ <return type="float" />
+ <argument index="0" name="blend_shape_idx" type="int" />
+ <description>
+ </description>
+ </method>
<method name="get_surface_override_material" qualifiers="const">
<return type="Material" />
<argument index="0" name="surface" type="int" />
@@ -61,6 +78,13 @@
Returns the number of surface override materials. This is equivalent to [method Mesh.get_surface_count].
</description>
</method>
+ <method name="set_blend_shape_value">
+ <return type="void" />
+ <argument index="0" name="blend_shape_idx" type="int" />
+ <argument index="1" name="value" type="float" />
+ <description>
+ </description>
+ </method>
<method name="set_surface_override_material">
<return type="void" />
<argument index="0" name="surface" type="int" />
diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml
index e476949360..b100a20963 100644
--- a/doc/classes/NavigationMesh.xml
+++ b/doc/classes/NavigationMesh.xml
@@ -84,7 +84,7 @@
<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.6">
+ <member name="agent/radius" type="float" setter="set_agent_radius" getter="get_agent_radius" default="1.0">
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].
</member>
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index 656fa61af7..15cc7b9b65 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -57,7 +57,7 @@
<argument index="0" name="msec" type="int" />
<description>
Delays execution of the current thread by [code]msec[/code] milliseconds. [code]msec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_msec] will do nothing and will print an error message.
- [b]Note:[/b] [method delay_msec] is a [i]blocking[/i] way to delay code execution. To delay code execution in a non-blocking way, see [method SceneTree.create_timer]. Yielding with [method SceneTree.create_timer] will delay the execution of code placed below the [code]yield[/code] without affecting the rest of the project (or editor, for [EditorPlugin]s and [EditorScript]s).
+ [b]Note:[/b] [method delay_msec] is a [i]blocking[/i] way to delay code execution. To delay code execution in a non-blocking way, see [method SceneTree.create_timer]. Awaiting with [method SceneTree.create_timer] will delay the execution of code placed below the [code]await[/code] without affecting the rest of the project (or editor, for [EditorPlugin]s and [EditorScript]s).
[b]Note:[/b] When [method delay_msec] is called on the main thread, it will freeze the project and will prevent it from redrawing and registering input until the delay has passed. When using [method delay_msec] as part of an [EditorPlugin] or [EditorScript], it will freeze the editor but won't freeze the project if it is currently running (since the project is an independent child process).
</description>
</method>
@@ -66,7 +66,7 @@
<argument index="0" name="usec" type="int" />
<description>
Delays execution of the current thread by [code]usec[/code] microseconds. [code]usec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_usec] will do nothing and will print an error message.
- [b]Note:[/b] [method delay_usec] is a [i]blocking[/i] way to delay code execution. To delay code execution in a non-blocking way, see [method SceneTree.create_timer]. Yielding with [method SceneTree.create_timer] will delay the execution of code placed below the [code]yield[/code] without affecting the rest of the project (or editor, for [EditorPlugin]s and [EditorScript]s).
+ [b]Note:[/b] [method delay_usec] is a [i]blocking[/i] way to delay code execution. To delay code execution in a non-blocking way, see [method SceneTree.create_timer]. Awaiting with [method SceneTree.create_timer] will delay the execution of code placed below the [code]await[/code] without affecting the rest of the project (or editor, for [EditorPlugin]s and [EditorScript]s).
[b]Note:[/b] When [method delay_usec] is called on the main thread, it will freeze the project and will prevent it from redrawing and registering input until the delay has passed. When using [method delay_usec] as part of an [EditorPlugin] or [EditorScript], it will freeze the editor but won't freeze the project if it is currently running (since the project is an independent child process).
</description>
</method>
diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml
index 264ef9975a..5c64dc4162 100644
--- a/doc/classes/OptionButton.xml
+++ b/doc/classes/OptionButton.xml
@@ -84,6 +84,7 @@
<return type="PopupMenu" />
<description>
Returns the [PopupMenu] contained in this button.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.
</description>
</method>
<method name="get_selected_id" qualifiers="const">
diff --git a/doc/classes/Plane.xml b/doc/classes/Plane.xml
index 78e1e81752..f7a68e6a24 100644
--- a/doc/classes/Plane.xml
+++ b/doc/classes/Plane.xml
@@ -36,17 +36,24 @@
<method name="Plane" qualifiers="constructor">
<return type="Plane" />
<argument index="0" name="normal" type="Vector3" />
+ <argument index="1" name="point" type="Vector3" />
+ <description>
+ Creates a plane from the normal vector and a point in the plane.
+ </description>
+ </method>
+ <method name="Plane" qualifiers="constructor">
+ <return type="Plane" />
+ <argument index="0" name="normal" type="Vector3" />
<argument index="1" name="d" type="float" />
<description>
- Creates a plane from the normal and the plane's distance to the origin.
+ Creates a plane from the normal vector and the plane's distance to the origin.
</description>
</method>
<method name="Plane" qualifiers="constructor">
<return type="Plane" />
- <argument index="0" name="point" type="Vector3" />
- <argument index="1" name="normal" type="Vector3" />
+ <argument index="0" name="normal" type="Vector3" />
<description>
- Creates a plane from the given position and a plane normal.
+ Creates a plane from the normal vector. The plane will intersect the origin.
</description>
</method>
<method name="Plane" qualifiers="constructor">
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index eec06d6f82..c646380bee 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -221,11 +221,6 @@
The project's name. It is used both by the Project Manager and by exporters. The project name can be translated by translating its value in localization files. The window title will be set to match the project name automatically on startup.
[b]Note:[/b] Changing this value will also change the user data folder's path if [member application/config/use_custom_user_dir] is [code]false[/code]. After renaming the project, you will no longer be able to access existing data in [code]user://[/code] unless you rename the old folder to match the new project name. See [url=https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html]Data paths[/url] in the documentation for more information.
</member>
- <member name="application/config/project_data_dir_name" type="String" setter="" getter="" default="&quot;.godot&quot;">
- The project data directory is used for storing project-specific data (metadata, shader cache, etc.).
- [b]Note:[/b] Restart the application after changing this setting.
- [b]Note:[/b] Changing this value can help on platforms or with third-party tools where specific directory patterns are disallowed. Only modify this setting if you know that your environment requires it, as changing the default can impact compatibility with some external tools or plugins which expect the default [code].godot[/code] folder.
- </member>
<member name="application/config/project_settings_override" type="String" setter="" getter="" default="&quot;&quot;">
Specifies a file to override project settings. For example: [code]user://custom_settings.cfg[/code]. See "Overriding" in the [ProjectSettings] class description at the top for more information.
[b]Note:[/b] Regardless of this setting's value, [code]res://override.cfg[/code] will still be read to override the project settings.
@@ -233,6 +228,12 @@
<member name="application/config/use_custom_user_dir" type="bool" setter="" getter="" default="false">
If [code]true[/code], the project will save user data to its own user directory (see [member application/config/custom_user_dir_name]). This setting is only effective on desktop platforms. A name must be set in the [member application/config/custom_user_dir_name] setting for this to take effect. If [code]false[/code], the project will save user data to [code](OS user data directory)/Godot/app_userdata/(project name)[/code].
</member>
+ <member name="application/config/use_hidden_project_data_directory" type="bool" setter="" getter="" default="true">
+ If [code]true[/code], the project will use a hidden directory ([code].godot[/code]) for storing project-specific data (metadata, shader cache, etc.).
+ If [code]false[/code], a non-hidden directory ([code]godot[/code]) will be used instead.
+ [b]Note:[/b] Restart the application after changing this setting.
+ [b]Note:[/b] Changing this value can help on platforms or with third-party tools where hidden directory patterns are disallowed. Only modify this setting if you know that your environment requires it, as changing the default can impact compatibility with some external tools or plugins which expect the default [code].godot[/code] folder.
+ </member>
<member name="application/config/windows_native_icon" type="String" setter="" getter="" default="&quot;&quot;">
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 DisplayServer.set_native_icon].
</member>
@@ -1698,8 +1699,10 @@
<member name="rendering/shadows/directional_shadow/size.mobile" type="int" setter="" getter="" default="2048">
Lower-end override for [member rendering/shadows/directional_shadow/size] on mobile devices, due to performance concerns or driver support.
</member>
- <member name="rendering/shadows/directional_shadow/soft_shadow_quality" type="int" setter="" getter="" default="2">
+ <member name="rendering/shadows/directional_shadow/soft_shadow_quality" type="int" setter="" getter="" default="3">
Quality setting for shadows cast by [DirectionalLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy.
+ [b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance].
+ [b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply [i]constant[/i] shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows.
</member>
<member name="rendering/shadows/directional_shadow/soft_shadow_quality.mobile" type="int" setter="" getter="" default="0">
Lower-end override for [member rendering/shadows/directional_shadow/soft_shadow_quality] on mobile devices, due to performance concerns or driver support.
@@ -1724,8 +1727,10 @@
<member name="rendering/shadows/shadow_atlas/size.mobile" type="int" setter="" getter="" default="2048">
Lower-end override for [member rendering/shadows/shadow_atlas/size] on mobile devices, due to performance concerns or driver support.
</member>
- <member name="rendering/shadows/shadows/soft_shadow_quality" type="int" setter="" getter="" default="2">
+ <member name="rendering/shadows/shadows/soft_shadow_quality" type="int" setter="" getter="" default="3">
Quality setting for shadows cast by [OmniLight3D]s and [SpotLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy.
+ [b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance].
+ [b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows.
</member>
<member name="rendering/shadows/shadows/soft_shadow_quality.mobile" type="int" setter="" getter="" default="0">
Lower-end override for [member rendering/shadows/shadows/soft_shadow_quality] on mobile devices, due to performance concerns or driver support.
@@ -1750,23 +1755,23 @@
</member>
<member name="rendering/textures/vram_compression/import_bptc" type="bool" setter="" getter="" default="false">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the BPTC algorithm. This texture compression algorithm is only supported on desktop platforms, and only when using the Vulkan renderer.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/textures/vram_compression/import_etc" type="bool" setter="" getter="" default="false">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression algorithm. This algorithm doesn't support alpha channels in textures.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/textures/vram_compression/import_etc2" type="bool" setter="" getter="" default="true">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression 2 algorithm. This texture compression algorithm is only supported when using the Vulkan renderer.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/textures/vram_compression/import_pvrtc" type="bool" setter="" getter="" default="false">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the PowerVR Texture Compression algorithm. This texture compression algorithm is only supported on iOS.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/textures/vram_compression/import_s3tc" type="bool" setter="" getter="" default="true">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm. This algorithm is only supported on desktop platforms and consoles.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/vulkan/descriptor_pools/max_descriptors_per_pool" type="int" setter="" getter="" default="64">
</member>
diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml
index 6f19114c16..973f8cdb1e 100644
--- a/doc/classes/RenderingServer.xml
+++ b/doc/classes/RenderingServer.xml
@@ -3663,16 +3663,25 @@
Use 4 splits for shadow projection when using directional light.
</constant>
<constant name="SHADOW_QUALITY_HARD" value="0" enum="ShadowQuality">
+ Lowest shadow filtering quality (fastest). Soft shadows are not available with this quality setting, which means the [member Light3D.shadow_blur] property is ignored if [member Light3D.light_size] and [member Light3D.light_angular_distance] is [code]0.0[/code].
+ [b]Note:[/b] The variable shadow blur performed by [member Light3D.light_size] and [member Light3D.light_angular_distance] is still effective when using hard shadow filtering. In this case, [member Light3D.shadow_blur] [i]is[/i] taken into account. However, the results will not be blurred, instead the blur amount is treated as a maximum radius for the penumbra.
</constant>
- <constant name="SHADOW_QUALITY_SOFT_LOW" value="1" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_VERY_LOW" value="1" enum="ShadowQuality">
+ Very low shadow filtering quality (faster). When using this quality setting, [member Light3D.shadow_blur] is automatically multiplied by 0.75× to avoid introducing too much noise. This division only applies to lights whose [member Light3D.light_size] or [member Light3D.light_angular_distance] is [code]0.0[/code]).
</constant>
- <constant name="SHADOW_QUALITY_SOFT_MEDIUM" value="2" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_LOW" value="2" enum="ShadowQuality">
+ Low shadow filtering quality (fast).
</constant>
- <constant name="SHADOW_QUALITY_SOFT_HIGH" value="3" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_MEDIUM" value="3" enum="ShadowQuality">
+ Medium low shadow filtering quality (average).
</constant>
- <constant name="SHADOW_QUALITY_SOFT_ULTRA" value="4" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_HIGH" value="4" enum="ShadowQuality">
+ High low shadow filtering quality (slow). When using this quality setting, [member Light3D.shadow_blur] is automatically multiplied by 1.5× to better make use of the high sample count. This increased blur also improves the stability of dynamic object shadows. This multiplier only applies to lights whose [member Light3D.light_size] or [member Light3D.light_angular_distance] is [code]0.0[/code]).
</constant>
- <constant name="SHADOW_QUALITY_MAX" value="5" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_ULTRA" value="5" enum="ShadowQuality">
+ Highest low shadow filtering quality (slowest). When using this quality setting, [member Light3D.shadow_blur] is automatically multiplied by 2× to better make use of the high sample count. This increased blur also improves the stability of dynamic object shadows. This multiplier only applies to lights whose [member Light3D.light_size] or [member Light3D.light_angular_distance] is [code]0.0[/code]).
+ </constant>
+ <constant name="SHADOW_QUALITY_MAX" value="6" enum="ShadowQuality">
</constant>
<constant name="REFLECTION_PROBE_UPDATE_ONCE" value="0" enum="ReflectionProbeUpdateMode">
Reflection probe will update reflections once and then stop.
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index a2e1c3d2c2..9337339f73 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -36,10 +36,10 @@
</description>
</method>
<method name="append_text">
- <return type="int" enum="Error" />
+ <return type="void" />
<argument index="0" name="bbcode" type="String" />
<description>
- Parses [code]bbcode[/code] and adds tags to the tag stack as needed. Returns the result of the parsing, [constant OK] if successful.
+ Parses [code]bbcode[/code] and adds tags to the tag stack as needed.
[b]Note:[/b] Using this method, you can't close a tag that was opened in a previous [method append_text] call. This is done to improve performance, especially when updating large RichTextLabels since rebuilding the whole BBCode every time would be slower. If you absolutely need to close a tag in a future method call, append the [member text] instead of using [method append_text].
</description>
</method>
@@ -101,6 +101,7 @@
<return type="VScrollBar" />
<description>
Returns the vertical scrollbar.
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
<method name="get_visible_line_count" qualifiers="const">
@@ -129,10 +130,10 @@
</description>
</method>
<method name="parse_bbcode">
- <return type="int" enum="Error" />
+ <return type="void" />
<argument index="0" name="bbcode" type="String" />
<description>
- The assignment version of [method append_text]. Clears the tag stack and inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] successfully.
+ The assignment version of [method append_text]. Clears the tag stack and inserts the new content.
</description>
</method>
<method name="parse_expressions_for_values">
diff --git a/doc/classes/RigidDynamicBody2D.xml b/doc/classes/RigidDynamicBody2D.xml
index 9baed392eb..f503884192 100644
--- a/doc/classes/RigidDynamicBody2D.xml
+++ b/doc/classes/RigidDynamicBody2D.xml
@@ -174,27 +174,27 @@
<signal name="body_shape_entered">
<argument index="0" name="body_rid" type="RID" />
<argument index="1" name="body" type="Node" />
- <argument index="2" name="body_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="body_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of this RigidDynamicBody2D's [Shape2D]s collides with another [PhysicsBody2D] or [TileMap]'s [Shape2D]s. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
- [code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
+ [code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap].
- [code]body_shape[/code] the index of the [Shape2D] of the other [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D].
- [code]local_shape[/code] the index of the [Shape2D] of this RigidDynamicBody2D used by the [PhysicsServer2D].
+ [code]body_shape_index[/code] the index of the [Shape2D] of the other [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]body.shape_owner_get_owner(body_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape2D] of this RigidDynamicBody2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
<signal name="body_shape_exited">
<argument index="0" name="body_rid" type="RID" />
<argument index="1" name="body" type="Node" />
- <argument index="2" name="body_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="body_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when the collision between one of this RigidDynamicBody2D's [Shape2D]s and another [PhysicsBody2D] or [TileMap]'s [Shape2D]s ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
- [code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
+ [code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap].
- [code]body_shape[/code] the index of the [Shape2D] of the other [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D].
- [code]local_shape[/code] the index of the [Shape2D] of this RigidDynamicBody2D used by the [PhysicsServer2D].
+ [code]body_shape_index[/code] the index of the [Shape2D] of the other [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]body.shape_owner_get_owner(body_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape2D] of this RigidDynamicBody2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
</description>
</signal>
<signal name="sleeping_state_changed">
diff --git a/doc/classes/RigidDynamicBody3D.xml b/doc/classes/RigidDynamicBody3D.xml
index 7d1c7fecfa..6c8d190704 100644
--- a/doc/classes/RigidDynamicBody3D.xml
+++ b/doc/classes/RigidDynamicBody3D.xml
@@ -177,28 +177,28 @@
<signal name="body_shape_entered">
<argument index="0" name="body_rid" type="RID" />
<argument index="1" name="body" type="Node" />
- <argument index="2" name="body_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="body_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when one of this RigidDynamicBody3D's [Shape3D]s collides with another [PhysicsBody3D] or [GridMap]'s [Shape3D]s. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
- [code]body_id[/code] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
+ [code]body_rid[/code] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap].
- [code]body_shape[/code] the index of the [Shape3D] of the other [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D].
- [code]local_shape[/code] the index of the [Shape3D] of this RigidDynamicBody3D used by the [PhysicsServer3D].
+ [code]body_shape_index[/code] the index of the [Shape3D] of the other [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]body.shape_owner_get_owner(body_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape3D] of this RigidDynamicBody3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
[b]Note:[/b] Bullet physics cannot identify the shape index when using a [ConcavePolygonShape3D]. Don't use multiple [CollisionShape3D]s when using a [ConcavePolygonShape3D] with Bullet physics if you need shape indices.
</description>
</signal>
<signal name="body_shape_exited">
<argument index="0" name="body_rid" type="RID" />
<argument index="1" name="body" type="Node" />
- <argument index="2" name="body_shape" type="int" />
- <argument index="3" name="local_shape" type="int" />
+ <argument index="2" name="body_shape_index" type="int" />
+ <argument index="3" name="local_shape_index" type="int" />
<description>
Emitted when the collision between one of this RigidDynamicBody3D's [Shape3D]s and another [PhysicsBody3D] or [GridMap]'s [Shape3D]s ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
- [code]body_id[/code] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D]. [GridMap]s are detected if the Meshes have [Shape3D]s.
+ [code]body_rid[/code] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D]. [GridMap]s are detected if the Meshes have [Shape3D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap].
- [code]body_shape[/code] the index of the [Shape3D] of the other [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D].
- [code]local_shape[/code] the index of the [Shape3D] of this RigidDynamicBody3D used by the [PhysicsServer3D].
+ [code]body_shape_index[/code] the index of the [Shape3D] of the other [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]body.shape_owner_get_owner(body_shape_index)[/code].
+ [code]local_shape_index[/code] the index of the [Shape3D] of this RigidDynamicBody3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]self.shape_owner_get_owner(local_shape_index)[/code].
[b]Note:[/b] Bullet physics cannot identify the shape index when using a [ConcavePolygonShape3D]. Don't use multiple [CollisionShape3D]s when using a [ConcavePolygonShape3D] with Bullet physics if you need shape indices.
</description>
</signal>
diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml
index ce7fd293d5..6d0ec44b69 100644
--- a/doc/classes/SceneTree.xml
+++ b/doc/classes/SceneTree.xml
@@ -66,7 +66,7 @@
[gdscript]
func some_function():
print("start")
- yield(get_tree().create_timer(1.0), "timeout")
+ await get_tree().create_timer(1.0).timeout
print("end")
[/gdscript]
[csharp]
diff --git a/doc/classes/SceneTreeTimer.xml b/doc/classes/SceneTreeTimer.xml
index f97c5e42b5..b0509a322e 100644
--- a/doc/classes/SceneTreeTimer.xml
+++ b/doc/classes/SceneTreeTimer.xml
@@ -10,7 +10,7 @@
[gdscript]
func some_function():
print("Timer started.")
- yield(get_tree().create_timer(1.0), "timeout")
+ await get_tree().create_timer(1.0).timeout
print("Timer ended.")
[/gdscript]
[csharp]
diff --git a/doc/classes/ScrollContainer.xml b/doc/classes/ScrollContainer.xml
index 1cf8c6cb54..976c32c243 100644
--- a/doc/classes/ScrollContainer.xml
+++ b/doc/classes/ScrollContainer.xml
@@ -22,12 +22,14 @@
<return type="HScrollBar" />
<description>
Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to disable the horizontal scrollbar, use [member scroll_horizontal_enabled]. If you want to only hide it instead, use [member scroll_horizontal_visible].
</description>
</method>
<method name="get_v_scrollbar">
<return type="VScrollBar" />
<description>
Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to disable the vertical scrollbar, use [member scroll_vertical_enabled]. If you want to only hide it instead, use [member scroll_vertical_visible].
</description>
</method>
</methods>
diff --git a/doc/classes/Skeleton3D.xml b/doc/classes/Skeleton3D.xml
index 6ab5ed55a3..e804e7bf24 100644
--- a/doc/classes/Skeleton3D.xml
+++ b/doc/classes/Skeleton3D.xml
@@ -47,6 +47,11 @@
Removes the local pose override on all bones in the skeleton.
</description>
</method>
+ <method name="create_skin_from_rest_transforms">
+ <return type="Skin" />
+ <description>
+ </description>
+ </method>
<method name="execute_modifications">
<return type="void" />
<argument index="0" name="delta" type="float" />
@@ -88,13 +93,6 @@
Returns the amount of bones in the skeleton.
</description>
</method>
- <method name="get_bone_custom_pose" qualifiers="const">
- <return type="Transform3D" />
- <argument index="0" name="bone_idx" type="int" />
- <description>
- Returns the custom pose of the specified bone. Custom pose is applied on top of the rest pose.
- </description>
- </method>
<method name="get_bone_global_pose" qualifiers="const">
<return type="Transform3D" />
<argument index="0" name="bone_idx" type="int" />
@@ -144,6 +142,24 @@
Returns the pose transform of the specified bone. Pose is applied on top of the custom pose, which is applied on top the rest pose.
</description>
</method>
+ <method name="get_bone_pose_position" qualifiers="const">
+ <return type="Vector3" />
+ <argument index="0" name="bone_idx" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="get_bone_pose_rotation" qualifiers="const">
+ <return type="Quaternion" />
+ <argument index="0" name="bone_idx" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="get_bone_pose_scale" qualifiers="const">
+ <return type="Vector3" />
+ <argument index="0" name="bone_idx" type="int" />
+ <description>
+ </description>
+ </method>
<method name="get_bone_rest" qualifiers="const">
<return type="Transform3D" />
<argument index="0" name="bone_idx" type="int" />
@@ -196,13 +212,6 @@
Returns whether the bone pose for the bone at [code]bone_idx[/code] is enabled.
</description>
</method>
- <method name="is_bone_rest_disabled" qualifiers="const">
- <return type="bool" />
- <argument index="0" name="bone_idx" type="int" />
- <description>
- Returns whether the bone rest for the bone at [code]bone_idx[/code] is disabled.
- </description>
- </method>
<method name="local_pose_to_global_pose">
<return type="Transform3D" />
<argument index="0" name="bone_idx" type="int" />
@@ -272,23 +281,6 @@
Sets the children for the passed in bone, [code]bone_idx[/code], to the passed-in array of bone indexes, [code]bone_children[/code].
</description>
</method>
- <method name="set_bone_custom_pose">
- <return type="void" />
- <argument index="0" name="bone_idx" type="int" />
- <argument index="1" name="custom_pose" type="Transform3D" />
- <description>
- Sets the custom pose transform, [code]custom_pose[/code], for the bone at [code]bone_idx[/code]. This pose is an addition to the bone rest pose.
- [b]Note:[/b] The pose transform needs to be in bone space. Use [method world_transform_to_global_pose] to convert a world transform, like one you can get from a [Node3D], to bone space.
- </description>
- </method>
- <method name="set_bone_disable_rest">
- <return type="void" />
- <argument index="0" name="bone_idx" type="int" />
- <argument index="1" name="disable" type="bool" />
- <description>
- Disables the rest pose for the bone at [code]bone_idx[/code] if [code]true[/code], enables the bone rest if [code]false[/code].
- </description>
- </method>
<method name="set_bone_enabled">
<return type="void" />
<argument index="0" name="bone_idx" type="int" />
@@ -337,13 +329,25 @@
[b]Note:[/b] [code]parent_idx[/code] must be less than [code]bone_idx[/code].
</description>
</method>
- <method name="set_bone_pose">
+ <method name="set_bone_pose_position">
<return type="void" />
<argument index="0" name="bone_idx" type="int" />
- <argument index="1" name="pose" type="Transform3D" />
+ <argument index="1" name="position" type="Vector3" />
+ <description>
+ </description>
+ </method>
+ <method name="set_bone_pose_rotation">
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="rotation" type="Quaternion" />
+ <description>
+ </description>
+ </method>
+ <method name="set_bone_pose_scale">
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="scale" type="Vector3" />
<description>
- Sets the pose transform for bone [code]bone_idx[/code].
- [b]Note:[/b] The pose transform needs to be in bone space. Use [method world_transform_to_global_pose] to convert a world transform, like one you can get from a [Node3D], to bone space.
</description>
</method>
<method name="set_bone_rest">
diff --git a/doc/classes/SpinBox.xml b/doc/classes/SpinBox.xml
index 33d2b472b5..615f5e3586 100644
--- a/doc/classes/SpinBox.xml
+++ b/doc/classes/SpinBox.xml
@@ -39,6 +39,7 @@
<return type="LineEdit" />
<description>
Returns the [LineEdit] instance from this [SpinBox]. You can use it to access properties and methods of [LineEdit].
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
</methods>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 10ce03c4b2..abb68e0d05 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -56,11 +56,11 @@
Converts a string containing a binary number into an integer. Binary strings can either be prefixed with [code]0b[/code] or not, and they can also start with a [code]-[/code] before the optional prefix.
[codeblocks]
[gdscript]
- print("0x101".bin_to_int()) # Prints "5".
+ print("0b101".bin_to_int()) # Prints "5".
print("101".bin_to_int()) # Prints "5".
[/gdscript]
[csharp]
- GD.Print("0x101".BinToInt()); // Prints "5".
+ GD.Print("0b101".BinToInt()); // Prints "5".
GD.Print("101".BinToInt()); // Prints "5".
[/csharp]
[/codeblocks]
diff --git a/doc/classes/Tabs.xml b/doc/classes/TabBar.xml
index ded4f0b32f..3ca124bb58 100644
--- a/doc/classes/Tabs.xml
+++ b/doc/classes/TabBar.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Tabs" inherits="Control" version="4.0">
+<class name="TabBar" inherits="Control" version="4.0">
<brief_description>
- Tabs control.
+ Tab bar control.
</brief_description>
<description>
Simple tabs control, similar to [TabContainer] but is only in charge of drawing tabs, not interacting with children.
@@ -114,7 +114,7 @@
<method name="get_tabs_rearrange_group" qualifiers="const">
<return type="int" />
<description>
- Returns the [Tabs]' rearrange group ID.
+ Returns the [TabBar]'s rearrange group ID.
</description>
</method>
<method name="move_tab">
@@ -192,7 +192,7 @@
<return type="void" />
<argument index="0" name="group_id" type="int" />
<description>
- Defines the rearrange group ID. Choose for each [Tabs] the same value to dragging tabs between [Tabs]. Enable drag with [member drag_to_rearrange_enabled].
+ Defines the rearrange group ID. Choose for each [TabBar] the same value to dragging tabs between [TabBar]. Enable drag with [member drag_to_rearrange_enabled].
</description>
</method>
</methods>
@@ -209,10 +209,10 @@
<member name="scrolling_enabled" type="bool" setter="set_scrolling_enabled" getter="get_scrolling_enabled" default="true">
if [code]true[/code], the mouse's scroll wheel can be used to navigate the scroll view.
</member>
- <member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="Tabs.TabAlign" default="1">
+ <member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="TabBar.TabAlign" default="1">
The alignment of all tabs. See [enum TabAlign] for details.
</member>
- <member name="tab_close_display_policy" type="int" setter="set_tab_close_display_policy" getter="get_tab_close_display_policy" enum="Tabs.CloseButtonDisplayPolicy" default="0">
+ <member name="tab_close_display_policy" type="int" setter="set_tab_close_display_policy" getter="get_tab_close_display_policy" enum="TabBar.CloseButtonDisplayPolicy" default="0">
Sets when the close button will appear on the tabs. See [enum CloseButtonDisplayPolicy] for details.
</member>
</members>
diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml
index 4c50aa4e1f..1f32bba5a1 100644
--- a/doc/classes/TabContainer.xml
+++ b/doc/classes/TabContainer.xml
@@ -20,6 +20,7 @@
<return type="Popup" />
<description>
Returns the [Popup] node instance if one has been set already with [method set_popup].
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.
</description>
</method>
<method name="get_previous_tab" qualifiers="const">
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index 3667dbf578..ba3394b54a 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -41,6 +41,13 @@
Override this method to define what happens when the user performs a paste operation.
</description>
</method>
+ <method name="_paste_primary_clipboard" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ Override this method to define what happens when the user performs a paste operation with middle mouse button.
+ [b]Note:[/b] This method is only implemented on Linux.
+ </description>
+ </method>
<method name="add_gutter">
<return type="void" />
<argument index="0" name="at" type="int" default="-1" />
@@ -314,6 +321,7 @@
<return type="PopupMenu" />
<description>
Returns the [PopupMenu] of this [TextEdit]. By default, this menu is displayed when right-clicking on the [TextEdit].
+ [b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.
</description>
</method>
<method name="get_minimap_line_at_pos" qualifiers="const">
@@ -936,6 +944,10 @@
<member name="language" type="String" setter="set_language" getter="get_language" default="&quot;&quot;">
Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead.
</member>
+ <member name="middle_mouse_paste_enabled" type="bool" setter="set_middle_mouse_paste_enabled" getter="is_middle_mouse_paste_enabled" default="true">
+ If [code]false[/code], using middle mouse button to paste clipboard will be disabled.
+ [b]Note:[/b] This method is only implemented on Linux.
+ </member>
<member name="minimap_draw" type="bool" setter="set_draw_minimap" getter="is_drawing_minimap" default="false">
If [code]true[/code], a minimap is shown, providing an outline of your source code.
</member>
diff --git a/doc/classes/TextParagraph.xml b/doc/classes/TextParagraph.xml
index e06dfee698..5bd6b0572c 100644
--- a/doc/classes/TextParagraph.xml
+++ b/doc/classes/TextParagraph.xml
@@ -199,7 +199,7 @@
Returns width (for horizontal layout) or height (for vertical) of the line of text.
</description>
</method>
- <method name="get_non_wraped_size" qualifiers="const">
+ <method name="get_non_wrapped_size" qualifiers="const">
<return type="Vector2" />
<description>
Returns the size of the bounding box of the paragraph, without line breaks.
diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml
index 532c9a7128..e65d5b4533 100644
--- a/doc/classes/TileMap.xml
+++ b/doc/classes/TileMap.xml
@@ -76,6 +76,13 @@
Returns the coodinates of the tile for given physics body RID. Such RID can be retrieved from [method KinematicCollision2D.get_collider_rid], when colliding with a tile.
</description>
</method>
+ <method name="get_layer_modulate" qualifiers="const">
+ <return type="Color" />
+ <argument index="0" name="layer" type="int" />
+ <description>
+ Returns a TileMap layer's modulate.
+ </description>
+ </method>
<method name="get_layer_name" qualifiers="const">
<return type="String" />
<argument index="0" name="layer" type="int" />
@@ -110,6 +117,14 @@
Returns the neighboring cell to the one at coordinates [code]coords[/code], indentified by the [code]neighbor[/code] direction. This method takes into account the different layouts a TileMap can take.
</description>
</method>
+ <method name="get_pattern">
+ <return type="TileMapPattern" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="coords_array" type="Vector2i[]" />
+ <description>
+ Creates a new [TileMapPattern] from the given layer and set of cells.
+ </description>
+ </method>
<method name="get_surrounding_tiles">
<return type="Vector2i[]" />
<argument index="0" name="coords" type="Vector2i" />
@@ -144,6 +159,15 @@
Returns if a layer Y-sorts its tiles.
</description>
</method>
+ <method name="map_pattern">
+ <return type="Vector2i" />
+ <argument index="0" name="position_in_tilemap" type="Vector2i" />
+ <argument index="1" name="coords_in_pattern" type="Vector2i" />
+ <argument index="2" name="pattern" type="TileMapPattern" />
+ <description>
+ Returns for the given coodinate [code]coords_in_pattern[/code] in a [TileMapPattern] the corresponding cell coordinates if the pattern was pasted at the [code]position_in_tilemap[/code] coordinates (see [method set_pattern]). This mapping is required as in half-offset tile shapes, the mapping might not work by calculating [code]position_in_tile_map + coords_in_pattern[/code]
+ </description>
+ </method>
<method name="map_to_world" qualifiers="const">
<return type="Vector2" />
<argument index="0" name="map_position" type="Vector2i" />
@@ -188,6 +212,14 @@
Enables or disables the layer [code]layer[/code]. A disabled layer is not processed at all (no rendering, no physics, etc...).
</description>
</method>
+ <method name="set_layer_modulate">
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="enabled" type="Color" />
+ <description>
+ Sets a layer's color. It will be multiplied by tile's color and TileMap's modulate.
+ </description>
+ </method>
<method name="set_layer_name">
<return type="void" />
<argument index="0" name="layer" type="int" />
@@ -222,6 +254,15 @@
Sets a layers Z-index value. This Z-index is added to each tile's Z-index value.
</description>
</method>
+ <method name="set_pattern">
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="position" type="Vector2i" />
+ <argument index="2" name="pattern" type="TileMapPattern" />
+ <description>
+ Paste the given [TileMapPattern] at the given [code]position[/code] and [code]layer[/code] in the tile map.
+ </description>
+ </method>
<method name="world_to_map" qualifiers="const">
<return type="Vector2i" />
<argument index="0" name="world_position" type="Vector2" />
diff --git a/doc/classes/TileMapPattern.xml b/doc/classes/TileMapPattern.xml
new file mode 100644
index 0000000000..4c46625423
--- /dev/null
+++ b/doc/classes/TileMapPattern.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="TileMapPattern" inherits="Resource" version="4.0">
+ <brief_description>
+ Holds a pattern to be copied from or pasted into [TileMap]s.
+ </brief_description>
+ <description>
+ This resource holds a set of cells to help bulk manipulations of [TileMap].
+ A pattern always start at the [code](0,0)[/code] coordinates and cannot have cells with negative coordinates.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="get_cell_alternative_tile" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns the tile alternative ID of the cell at [code]coords[/code].
+ </description>
+ </method>
+ <method name="get_cell_atlas_coords" qualifiers="const">
+ <return type="Vector2i" />
+ <argument index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns the tile atlas coordinates ID of the cell at [code]coords[/code].
+ </description>
+ </method>
+ <method name="get_cell_source_id" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns the tile source ID of the cell at [code]coords[/code].
+ </description>
+ </method>
+ <method name="get_size" qualifiers="const">
+ <return type="Vector2i" />
+ <description>
+ Returns the size, in cells, of the pattern.
+ </description>
+ </method>
+ <method name="get_used_cells" qualifiers="const">
+ <return type="Vector2i[]" />
+ <description>
+ Returns the list of used cell coordinates in the pattern.
+ </description>
+ </method>
+ <method name="has_cell" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns whether the pattern has a tile at the given coordinates.
+ </description>
+ </method>
+ <method name="is_empty" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns whether the pattern is empty or not.
+ </description>
+ </method>
+ <method name="remove_cell">
+ <return type="void" />
+ <argument index="0" name="coords" type="Vector2i" />
+ <argument index="1" name="arg1" type="bool" />
+ <description>
+ Remove the cell at the given coordinates.
+ </description>
+ </method>
+ <method name="set_cell">
+ <return type="void" />
+ <argument index="0" name="coords" type="Vector2i" />
+ <argument index="1" name="source_id" type="int" default="-1" />
+ <argument index="2" name="atlas_coords" type="Vector2i" default="Vector2i(-1, -1)" />
+ <argument index="3" name="alternative_tile" type="int" default="-1" />
+ <description>
+ Sets the tile indentifiers for the cell at coordinates [code]coords[/code]. See [method TileMap.set_cell].
+ </description>
+ </method>
+ <method name="set_size">
+ <return type="void" />
+ <argument index="0" name="size" type="Vector2i" />
+ <description>
+ Sets the size of the pattern.
+ </description>
+ </method>
+ </methods>
+</class>
diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml
index 02baded019..45d6f9ca6c 100644
--- a/doc/classes/TileSet.xml
+++ b/doc/classes/TileSet.xml
@@ -46,6 +46,14 @@
Occlusion layers allow assigning occlusion polygons to atlas tiles.
</description>
</method>
+ <method name="add_pattern">
+ <return type="int" />
+ <argument index="0" name="pattern" type="TileMapPattern" />
+ <argument index="1" name="index" type="int" default="-1" />
+ <description>
+ Adds a [TileMapPattern] to be stored in the TileSet resouce. If provided, insert it at the given [code]index[/code].
+ </description>
+ </method>
<method name="add_physics_layer">
<return type="void" />
<argument index="0" name="to_position" type="int" default="-1" />
@@ -154,6 +162,19 @@
Returns the occlusion layers count.
</description>
</method>
+ <method name="get_pattern">
+ <return type="TileMapPattern" />
+ <argument index="0" name="index" type="int" default="-1" />
+ <description>
+ Returns the [TileMapPattern] at the given [code]index[/code].
+ </description>
+ </method>
+ <method name="get_patterns_count">
+ <return type="int" />
+ <description>
+ Returns the number of [TileMapPattern] this tile set handles.
+ </description>
+ </method>
<method name="get_physics_layer_collision_layer" qualifiers="const">
<return type="int" />
<argument index="0" name="layer_index" type="int" />
@@ -374,6 +395,13 @@
Removes the occlusion layer at index [code]layer_index[/code]. Also updates the atlas tiles accordingly.
</description>
</method>
+ <method name="remove_pattern">
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <description>
+ Remove the [TileMapPattern] at the given index.
+ </description>
+ </method>
<method name="remove_physics_layer">
<return type="void" />
<argument index="0" name="layer_index" type="int" />
diff --git a/doc/classes/TileSetAtlasSource.xml b/doc/classes/TileSetAtlasSource.xml
index d12ac840f4..881a1c3d07 100644
--- a/doc/classes/TileSetAtlasSource.xml
+++ b/doc/classes/TileSetAtlasSource.xml
@@ -15,12 +15,6 @@
<tutorials>
</tutorials>
<methods>
- <method name="clear_tiles_outside_texture">
- <return type="void" />
- <description>
- Clears all tiles that are defined outside the texture boundaries.
- </description>
- </method>
<method name="create_alternative_tile">
<return type="int" />
<argument index="0" name="atlas_coords" type="Vector2i" />
@@ -124,6 +118,16 @@
Returns a tile's texture region in the atlas texture. For animated tiles, a [code]frame[/code] argument might be provided for the different frames of the animation.
</description>
</method>
+ <method name="get_tiles_to_be_removed_on_change">
+ <return type="PackedVector2Array" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="margins" type="Vector2i" />
+ <argument index="2" name="separation" type="Vector2i" />
+ <argument index="3" name="texture_region_size" type="Vector2i" />
+ <description>
+ Returns an array of tiles coordinates ID that will be automatically removed when modifying one or several of those properties: [code]texture[/code], [code]margins[/code], [code]separation[/code] or [code]texture_region_size[/code]. This can be used to undo changes that would have caused tiles data loss.
+ </description>
+ </method>
<method name="has_room_for_tile" qualifiers="const">
<return type="bool" />
<argument index="0" name="atlas_coords" type="Vector2i" />
@@ -136,12 +140,6 @@
Returns whether there is enough room in an atlas to create/modify a tile with the given properties. If [code]ignored_tile[/code] is provided, act as is the given tile was not present in the atlas. This may be used when you want to modify a tile's properties.
</description>
</method>
- <method name="has_tiles_outside_texture">
- <return type="bool" />
- <description>
- Returns if this atlas has tiles outside of its texture.
- </description>
- </method>
<method name="move_tile_in_atlas">
<return type="void" />
<argument index="0" name="atlas_coords" type="Vector2i" />
diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml
index f94018c96b..488a5aa340 100644
--- a/doc/classes/Tween.xml
+++ b/doc/classes/Tween.xml
@@ -146,6 +146,7 @@
<description>
Sets the number of times the tweening sequence will be repeated, i.e. [code]set_loops(2)[/code] will run the animation twice.
Calling this method without arguments will make the [Tween] run infinitely, until it is either killed by [method kill] or by freeing bound node, or all the animated objects have been freed (which makes further animation impossible).
+ [b]Warning:[/b] Make sure to always add some duration/delay when using infinite loops. 0-duration looped animations (e.g. single [CallbackTweener] with no delay) are equivalent to infinite [code]while[/code] loops and will freeze your game.
</description>
</method>
<method name="set_parallel">
diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml
index def6fe5d1f..044460f569 100644
--- a/doc/classes/UndoRedo.xml
+++ b/doc/classes/UndoRedo.xml
@@ -134,6 +134,12 @@
The way actions are merged is dictated by the [code]merge_mode[/code] argument. See [enum MergeMode] for details.
</description>
</method>
+ <method name="end_force_keep_in_merge_ends">
+ <return type="void" />
+ <description>
+ Stops marking operations as to be processed even if the action gets merged with another in the [constant MERGE_ENDS] mode. See [method start_force_keep_in_merge_ends].
+ </description>
+ </method>
<method name="get_action_name">
<return type="String" />
<argument index="0" name="id" type="int" />
@@ -190,6 +196,12 @@
Redo the last action.
</description>
</method>
+ <method name="start_force_keep_in_merge_ends">
+ <return type="void" />
+ <description>
+ Marks the next "do" and "undo" operations to be processed even if the action gets merged with another in the [constant MERGE_ENDS] mode. Return to normal operation using [method end_force_keep_in_merge_ends].
+ </description>
+ </method>
<method name="undo">
<return type="bool" />
<description>
@@ -209,7 +221,7 @@
Makes "do"/"undo" operations stay in separate actions.
</constant>
<constant name="MERGE_ENDS" value="1" enum="MergeMode">
- Makes so that the action's "do" operation is from the first action created and the "undo" operation is from the last subsequent action with the same name.
+ Makes so that the action's "undo" operations are from the first action created and the "do" operations are from the last subsequent action with the same name.
</constant>
<constant name="MERGE_ALL" value="2" enum="MergeMode">
Makes subsequent actions with the same name be merged into one.
diff --git a/doc/classes/VideoPlayer.xml b/doc/classes/VideoPlayer.xml
index 4f60b9d567..c8590988f5 100644
--- a/doc/classes/VideoPlayer.xml
+++ b/doc/classes/VideoPlayer.xml
@@ -5,9 +5,9 @@
</brief_description>
<description>
Control node for playing video streams using [VideoStream] resources.
- Supported video formats are [url=https://www.webmproject.org/]WebM[/url] ([code].webm[/code], [VideoStreamWebm]), [url=https://www.theora.org/]Ogg Theora[/url] ([code].ogv[/code], [VideoStreamTheora]), and any format exposed via a GDNative plugin using [VideoStreamGDNative].
+ Supported video formats are [url=https://www.theora.org/]Ogg Theora[/url] ([code].ogv[/code], [VideoStreamTheora]) and any format exposed via a GDNative plugin using [VideoStreamGDNative].
[b]Note:[/b] Due to a bug, VideoPlayer does not support localization remapping yet.
- [b]Warning:[/b] On HTML5, video playback [i]will[/i] perform poorly due to missing architecture-specific assembly optimizations, especially for VP8/VP9.
+ [b]Warning:[/b] On HTML5, video playback [i]will[/i] perform poorly due to missing architecture-specific assembly optimizations.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/XRAnchor3D.xml b/doc/classes/XRAnchor3D.xml
index 94fc8fc13d..2c54c728ed 100644
--- a/doc/classes/XRAnchor3D.xml
+++ b/doc/classes/XRAnchor3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XRAnchor3D" inherits="Node3D" version="4.0">
+<class name="XRAnchor3D" inherits="XRNode3D" version="4.0">
<brief_description>
An anchor point in AR space.
</brief_description>
@@ -11,24 +11,6 @@
<tutorials>
</tutorials>
<methods>
- <method name="get_anchor_name" qualifiers="const">
- <return type="String" />
- <description>
- Returns the name given to this anchor.
- </description>
- </method>
- <method name="get_is_active" qualifiers="const">
- <return type="bool" />
- <description>
- Returns [code]true[/code] if the anchor is being tracked and [code]false[/code] if no anchor with this ID is currently known.
- </description>
- </method>
- <method name="get_mesh" qualifiers="const">
- <return type="Mesh" />
- <description>
- If provided by the [XRInterface], this returns a mesh object for the anchor. For an anchor, this can be a shape related to the object being tracked or it can be a mesh that provides topology related to the anchor and can be used to create shadows/reflections on surfaces or for generating collision shapes.
- </description>
- </method>
<method name="get_plane" qualifiers="const">
<return type="Plane" />
<description>
@@ -42,17 +24,4 @@
</description>
</method>
</methods>
- <members>
- <member name="anchor_id" type="int" setter="set_anchor_id" getter="get_anchor_id" default="1">
- The anchor's ID. You can set this before the anchor itself exists. The first anchor gets an ID of [code]1[/code], the second an ID of [code]2[/code], etc. When anchors get removed, the engine can then assign the corresponding ID to new anchors. The most common situation where anchors "disappear" is when the AR server identifies that two anchors represent different parts of the same plane and merges them.
- </member>
- </members>
- <signals>
- <signal name="mesh_updated">
- <argument index="0" name="mesh" type="Mesh" />
- <description>
- Emitted when the mesh associated with the anchor changes or when one becomes available. This is especially important for topology that is constantly being [code]mesh_updated[/code].
- </description>
- </signal>
- </signals>
</class>
diff --git a/doc/classes/XRController3D.xml b/doc/classes/XRController3D.xml
index 35edf5c2b2..eb91196e00 100644
--- a/doc/classes/XRController3D.xml
+++ b/doc/classes/XRController3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XRController3D" inherits="Node3D" version="4.0">
+<class name="XRController3D" inherits="XRNode3D" version="4.0">
<brief_description>
A spatial node representing a spatially-tracked controller.
</brief_description>
@@ -7,63 +7,41 @@
This is a helper spatial node that is linked to the tracking of controllers. It also offers several handy passthroughs to the state of buttons and such on the controllers.
Controllers are linked by their ID. You can create controller nodes before the controllers are available. If your game always uses two controllers (one for each hand), you can predefine the controllers with ID 1 and 2; they will become active as soon as the controllers are identified. If you expect additional controllers to be used, you should react to the signals and add XRController3D nodes to your scene.
The position of the controller node is automatically updated by the [XRServer]. This makes this node ideal to add child nodes to visualize the controller.
+ As many XR runtimes now use a configurable action map all inputs are named.
</description>
<tutorials>
<link title="VR documentation index">https://docs.godotengine.org/en/latest/tutorials/vr/index.html</link>
</tutorials>
<methods>
- <method name="get_controller_name" qualifiers="const">
- <return type="String" />
+ <method name="get_axis" qualifiers="const">
+ <return type="Vector2" />
+ <argument index="0" name="name" type="StringName" />
<description>
- If active, returns the name of the associated controller if provided by the AR/VR SDK used.
+ Returns a [Vector2] for the input with the given [code]name[/code]. This is used for thumbsticks and thumbpads found on many controllers.
</description>
</method>
- <method name="get_is_active" qualifiers="const">
- <return type="bool" />
+ <method name="get_tracker_hand" qualifiers="const">
+ <return type="int" enum="XRPositionalTracker.TrackerHand" />
<description>
- Returns [code]true[/code] if the bound controller is active. XR systems attempt to track active controllers.
+ Returns the hand holding this controller, if known. See [enum XRPositionalTracker.TrackerHand].
</description>
</method>
- <method name="get_joystick_axis" qualifiers="const">
+ <method name="get_value" qualifiers="const">
<return type="float" />
- <argument index="0" name="axis" type="int" />
- <description>
- Returns the value of the given axis for things like triggers, touchpads, etc. that are embedded into the controller.
- </description>
- </method>
- <method name="get_joystick_id" qualifiers="const">
- <return type="int" />
- <description>
- Returns the ID of the joystick object bound to this. Every controller tracked by the [XRServer] that has buttons and axis will also be registered as a joystick within Godot. This means that all the normal joystick tracking and input mapping will work for buttons and axis found on the AR/VR controllers. This ID is purely offered as information so you can link up the controller with its joystick entry.
- </description>
- </method>
- <method name="get_mesh" qualifiers="const">
- <return type="Mesh" />
+ <argument index="0" name="name" type="StringName" />
<description>
- If provided by the [XRInterface], this returns a mesh associated with the controller. This can be used to visualize the controller.
- </description>
- </method>
- <method name="get_tracker_hand" qualifiers="const">
- <return type="int" enum="XRPositionalTracker.TrackerHand" />
- <description>
- Returns the hand holding this controller, if known. See [enum XRPositionalTracker.TrackerHand].
+ Returns a numeric value for the input with the given [code]name[/code]. This is used for triggers and grip sensors.
</description>
</method>
<method name="is_button_pressed" qualifiers="const">
<return type="bool" />
- <argument index="0" name="button" type="int" />
+ <argument index="0" name="name" type="StringName" />
<description>
- Returns [code]true[/code] if the button at index [code]button[/code] is pressed. See [enum JoyButton].
+ Returns [code]true[/code] if the button with the given [code]name[/code] is pressed.
</description>
</method>
</methods>
<members>
- <member name="controller_id" type="int" setter="set_controller_id" getter="get_controller_id" default="1">
- The controller's ID.
- A controller ID of 0 is unbound and will always result in an inactive node. Controller ID 1 is reserved for the first controller that identifies itself as the left-hand controller and ID 2 is reserved for the first controller that identifies itself as the right-hand controller.
- For any other controller that the [XRServer] detects, we continue with controller ID 3.
- When a controller is turned off, its slot is freed. This ensures controllers will keep the same ID even when controllers with lower IDs are turned off.
- </member>
<member name="rumble" type="float" setter="set_rumble" getter="get_rumble" default="0.0">
The degree to which the controller vibrates. Ranges from [code]0.0[/code] to [code]1.0[/code] with precision [code].01[/code]. If changed, updates [member XRPositionalTracker.rumble] accordingly.
This is a useful property to animate if you want the controller to vibrate for a limited duration.
@@ -71,21 +49,29 @@
</members>
<signals>
<signal name="button_pressed">
- <argument index="0" name="button" type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Emitted when a button on this controller is pressed.
</description>
</signal>
<signal name="button_released">
- <argument index="0" name="button" type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Emitted when a button on this controller is released.
</description>
</signal>
- <signal name="mesh_updated">
- <argument index="0" name="mesh" type="Mesh" />
+ <signal name="input_axis_changed">
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="value" type="Vector2" />
+ <description>
+ Emitted when a thumbstick or thumbpad on this controller is moved.
+ </description>
+ </signal>
+ <signal name="input_value_changed">
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="value" type="float" />
<description>
- Emitted when the mesh associated with the controller changes or when one becomes available. Generally speaking this will be a static mesh after becoming available.
+ Emitted when a trigger or similar input on this controller changes value.
</description>
</signal>
</signals>
diff --git a/doc/classes/XRInterface.xml b/doc/classes/XRInterface.xml
index ffc2bc138d..7ae70f97a2 100644
--- a/doc/classes/XRInterface.xml
+++ b/doc/classes/XRInterface.xml
@@ -29,6 +29,12 @@
Returns the name of this interface (OpenXR, OpenVR, OpenHMD, ARKit, etc).
</description>
</method>
+ <method name="get_play_area" qualifiers="const">
+ <return type="PackedVector3Array" />
+ <description>
+ Returns an array of vectors that denotes the physical play area mapped to the virtual space around the [XROrigin3D] point. The points form a convex polygon that can be used to react to or visualise the play area. This returns an empty array if this feature is not supported or if the information is not yet available.
+ </description>
+ </method>
<method name="get_render_target_size">
<return type="Vector2" />
<description>
@@ -63,6 +69,34 @@
Is [code]true[/code] if this interface has been initialised.
</description>
</method>
+ <method name="set_play_area_mode">
+ <return type="bool" />
+ <argument index="0" name="mode" type="int" enum="XRInterface.PlayAreaMode" />
+ <description>
+ Sets the active play area mode, will return [code]false[/code] if the mode can't be used with this interface.
+ </description>
+ </method>
+ <method name="supports_play_area_mode">
+ <return type="bool" />
+ <argument index="0" name="mode" type="int" enum="XRInterface.PlayAreaMode" />
+ <description>
+ Call this to find out if a given play area mode is supported by this interface.
+ </description>
+ </method>
+ <method name="trigger_haptic_pulse">
+ <return type="void" />
+ <argument index="0" name="action_name" type="String" />
+ <argument index="1" name="tracker_name" type="StringName" />
+ <argument index="2" name="frequency" type="float" />
+ <argument index="3" name="amplitude" type="float" />
+ <argument index="4" name="duration_sec" type="float" />
+ <argument index="5" name="delay_sec" type="float" />
+ <description>
+ Triggers a haptic pulse on a device associated with this interface.
+ [code]action_name[/code] is the name of the action for this pulse.
+ [code]tracker_name[/code] is optional and can be used to direct the pulse to a specific device provided that device is bound to this haptic.
+ </description>
+ </method>
<method name="uninitialize">
<return type="void" />
<description>
@@ -77,7 +111,18 @@
<member name="interface_is_primary" type="bool" setter="set_primary" getter="is_primary" default="false">
[code]true[/code] if this is the primary interface.
</member>
+ <member name="xr_play_area_mode" type="int" setter="set_play_area_mode" getter="get_play_area_mode" enum="XRInterface.PlayAreaMode" default="0">
+ The play area mode for this interface.
+ </member>
</members>
+ <signals>
+ <signal name="play_area_changed">
+ <argument index="0" name="mode" type="int" />
+ <description>
+ Emitted when the play area is changed. This can be a result of the player resetting the boundary or entering a new play area, the player changing the play area mode, the world scale changing or the player resetting their headset orientation.
+ </description>
+ </signal>
+ </signals>
<constants>
<constant name="XR_NONE" value="0" enum="Capabilities">
No XR capabilities.
@@ -88,20 +133,17 @@
<constant name="XR_STEREO" value="2" enum="Capabilities">
This interface supports stereoscopic rendering.
</constant>
- <constant name="XR_AR" value="4" enum="Capabilities">
- This interface supports AR (video background and real world tracking).
- </constant>
- <constant name="XR_EXTERNAL" value="8" enum="Capabilities">
- This interface outputs to an external device. If the main viewport is used, the on screen output is an unmodified buffer of either the left or right eye (stretched if the viewport size is not changed to the same aspect ratio of [method get_render_target_size]). Using a separate viewport node frees up the main viewport for other purposes.
+ <constant name="XR_QUAD" value="4" enum="Capabilities">
+ This interface supports quad rendering (not yet supported by Godot).
</constant>
- <constant name="EYE_MONO" value="0" enum="Eyes">
- Mono output, this is mostly used internally when retrieving positioning information for our camera node or when stereo scopic rendering is not supported.
+ <constant name="XR_VR" value="8" enum="Capabilities">
+ this interface supports VR.
</constant>
- <constant name="EYE_LEFT" value="1" enum="Eyes">
- Left eye output, this is mostly used internally when rendering the image for the left eye and obtaining positioning and projection information.
+ <constant name="XR_AR" value="16" enum="Capabilities">
+ This interface supports AR (video background and real world tracking).
</constant>
- <constant name="EYE_RIGHT" value="2" enum="Eyes">
- Right eye output, this is mostly used internally when rendering the image for the right eye and obtaining positioning and projection information.
+ <constant name="XR_EXTERNAL" value="32" enum="Capabilities">
+ This interface outputs to an external device. If the main viewport is used, the on screen output is an unmodified buffer of either the left or right eye (stretched if the viewport size is not changed to the same aspect ratio of [method get_render_target_size]). Using a separate viewport node frees up the main viewport for other purposes.
</constant>
<constant name="XR_NORMAL_TRACKING" value="0" enum="TrackingStatus">
Tracking is behaving as expected.
@@ -118,5 +160,20 @@
<constant name="XR_NOT_TRACKING" value="4" enum="TrackingStatus">
Tracking is not functional (camera not plugged in or obscured, lighthouses turned off, etc.).
</constant>
+ <constant name="XR_PLAY_AREA_UNKNOWN" value="0" enum="PlayAreaMode">
+ Play area mode not set or not available.
+ </constant>
+ <constant name="XR_PLAY_AREA_3DOF" value="1" enum="PlayAreaMode">
+ Play area only supports orientation tracking, no positional tracking, area will center around player.
+ </constant>
+ <constant name="XR_PLAY_AREA_SITTING" value="2" enum="PlayAreaMode">
+ Player is in seated position, limited positional tracking, fixed guardian around player.
+ </constant>
+ <constant name="XR_PLAY_AREA_ROOMSCALE" value="3" enum="PlayAreaMode">
+ Player is free to move around, full positional tracking.
+ </constant>
+ <constant name="XR_PLAY_AREA_STAGE" value="4" enum="PlayAreaMode">
+ Same as roomscale but origin point is fixed to the center of the physical space, XRServer.center_on_hmd disabled.
+ </constant>
</constants>
</class>
diff --git a/doc/classes/XRInterfaceExtension.xml b/doc/classes/XRInterfaceExtension.xml
index 84b46e0ddd..d2bb6aa59a 100644
--- a/doc/classes/XRInterfaceExtension.xml
+++ b/doc/classes/XRInterfaceExtension.xml
@@ -41,6 +41,16 @@
<description>
</description>
</method>
+ <method name="_get_play_area" qualifiers="virtual const">
+ <return type="PackedVector3Array" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_play_area_mode" qualifiers="virtual const">
+ <return type="int" />
+ <description>
+ </description>
+ </method>
<method name="_get_projection_for_view" qualifiers="virtual">
<return type="PackedFloat64Array" />
<argument index="0" name="view" type="int" />
@@ -55,6 +65,17 @@
<description>
</description>
</method>
+ <method name="_get_suggested_pose_names" qualifiers="virtual const">
+ <return type="PackedStringArray" />
+ <argument index="0" name="tracker_name" type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_suggested_tracker_names" qualifiers="virtual const">
+ <return type="PackedStringArray" />
+ <description>
+ </description>
+ </method>
<method name="_get_tracking_status" qualifiers="virtual const">
<return type="int" />
<description>
@@ -99,6 +120,29 @@
<description>
</description>
</method>
+ <method name="_set_play_area_mode" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="mode" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_supports_play_area_mode" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="mode" type="int" enum="XRInterface.PlayAreaMode" />
+ <description>
+ </description>
+ </method>
+ <method name="_trigger_haptic_pulse" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="action_name" type="String" />
+ <argument index="1" name="tracker_name" type="StringName" />
+ <argument index="2" name="frequency" type="float" />
+ <argument index="3" name="amplitude" type="float" />
+ <argument index="4" name="duration_sec" type="float" />
+ <argument index="5" name="delay_sec" type="float" />
+ <description>
+ </description>
+ </method>
<method name="_uninitialize" qualifiers="virtual">
<return type="void" />
<description>
diff --git a/doc/classes/XRNode3D.xml b/doc/classes/XRNode3D.xml
new file mode 100644
index 0000000000..2e6d11d729
--- /dev/null
+++ b/doc/classes/XRNode3D.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="XRNode3D" inherits="Node3D" version="4.0">
+ <brief_description>
+ A spatial node that has its position automatically updated by the [XRServer].
+ </brief_description>
+ <description>
+ This node can be bound to a specific pose of a [XRPositionalTracker] and will automatically have its [member Node3D.transform] updated by the [XRServer]. Nodes of this type must be added as children of the [XROrigin3D] node.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="get_has_tracking_data" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if the [member tracker] has current tracking data for the [member pose] being tracked.
+ </description>
+ </method>
+ <method name="get_is_active" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if the [member tracker] has been registered and the [member pose] is being tracked.
+ </description>
+ </method>
+ <method name="get_pose">
+ <return type="XRPose" />
+ <description>
+ Returns the [XRPose] containing the current state of the pose being tracked. This gives access to additional properties of this pose.
+ </description>
+ </method>
+ <method name="trigger_haptic_pulse">
+ <return type="void" />
+ <argument index="0" name="action_name" type="String" />
+ <argument index="1" name="frequency" type="float" />
+ <argument index="2" name="amplitude" type="float" />
+ <argument index="3" name="duration_sec" type="float" />
+ <argument index="4" name="delay_sec" type="float" />
+ <description>
+ Triggers a haptic pulse on a device associated with this interface.
+ [code]action_name[/code] is the name of the action for this pulse.
+ </description>
+ </method>
+ </methods>
+ <members>
+ <member name="pose" type="StringName" setter="set_pose_name" getter="get_pose_name" default="&amp;&quot;default&quot;">
+ The name of the pose we're bound to. Which poses a tracker supports is not known during design time.
+ Godot defines number of standard pose names such as [code]aim[/code] and [code]grip[/code] but other may be configured within a given [XRInterface].
+ </member>
+ <member name="tracker" type="StringName" setter="set_tracker" getter="get_tracker" default="&amp;&quot;&quot;">
+ The name of the tracker we're bound to. Which trackers are available is not known during design time.
+ Godot defines a number of standard trackers such as [code]left_hand[/code] and [code]right_hand[/code] but others may be configured within a given [XRInterface].
+ </member>
+ </members>
+</class>
diff --git a/doc/classes/XRPose.xml b/doc/classes/XRPose.xml
new file mode 100644
index 0000000000..0de2bc9e48
--- /dev/null
+++ b/doc/classes/XRPose.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="XRPose" inherits="RefCounted" version="4.0">
+ <brief_description>
+ This object contains all data related to a pose on a tracked object.
+ </brief_description>
+ <description>
+ XR runtimes often identify multiple locations on devices such as controllers that are spatially tracked.
+ Orientation, location, linear velocity and angular velocity are all provided for each pose by the XR runtime. This object contains this state of a pose.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="get_adjusted_transform" qualifiers="const">
+ <return type="Transform3D" />
+ <description>
+ Returns the [member transform] with world scale and our reference frame applied. This is the transform used to position [XRNode3D] objects.
+ </description>
+ </method>
+ </methods>
+ <members>
+ <member name="angular_velocity" type="Vector3" setter="set_angular_velocity" getter="get_angular_velocity" default="Vector3(0, 0, 0)">
+ The angular velocity for this pose.
+ </member>
+ <member name="has_tracking_data" type="bool" setter="set_has_tracking_data" getter="get_has_tracking_data" default="false">
+ If [code]true[/code] our tracking data is up to date. If [code]false[/code] we're no longer receiving new tracking data and our state is whatever that last valid state was.
+ </member>
+ <member name="linear_velocity" type="Vector3" setter="set_linear_velocity" getter="get_linear_velocity" default="Vector3(0, 0, 0)">
+ The linear velocity of this pose.
+ </member>
+ <member name="name" type="StringName" setter="set_name" getter="get_name" default="&amp;&quot;&quot;">
+ The name of this pose. Pose names are often driven by an action map setup by the user. Godot does suggest a number of pose names that it expects [XRInterface]s to implement:
+ - [code]root[/code] defines a root location, often used for tracked objects that do not have further nodes.
+ - [code]aim[/code] defines the tip of a controller with the orientation pointing outwards, for instance: add your raycasts to this.
+ - [code]grip[/code] defines the location where the user grips the controller
+ - [code]skeleton[/code] defines the root location a hand mesh should be placed when using hand tracking and the animated skeleton supplied by the XR runtime.
+ </member>
+ <member name="transform" type="Transform3D" setter="set_transform" getter="get_transform" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)">
+ The transform containing the original and transform as reported by the XR runtime.
+ </member>
+ </members>
+</class>
diff --git a/doc/classes/XRPositionalTracker.xml b/doc/classes/XRPositionalTracker.xml
index d231bfde74..bd6a518835 100644
--- a/doc/classes/XRPositionalTracker.xml
+++ b/doc/classes/XRPositionalTracker.xml
@@ -5,86 +5,113 @@
</brief_description>
<description>
An instance of this object represents a device that is tracked, such as a controller or anchor point. HMDs aren't represented here as they are handled internally.
- As controllers are turned on and the AR/VR interface detects them, instances of this object are automatically added to this list of active tracking objects accessible through the [XRServer].
- The [XRController3D] and [XRAnchor3D] both consume objects of this type and should be used in your project. The positional trackers are just under-the-hood objects that make this all work. These are mostly exposed so that GDNative-based interfaces can interact with them.
+ As controllers are turned on and the [XRInterface] detects them, instances of this object are automatically added to this list of active tracking objects accessible through the [XRServer].
+ The [XRController3D] and [XRAnchor3D] both consume objects of this type and should be used in your project. The positional trackers are just under-the-hood objects that make this all work. These are mostly exposed so that GDExtension-based interfaces can interact with them.
</description>
<tutorials>
<link title="VR documentation index">https://docs.godotengine.org/en/latest/tutorials/vr/index.html</link>
</tutorials>
<methods>
- <method name="get_joy_id" qualifiers="const">
- <return type="int" />
+ <method name="get_input" qualifiers="const">
+ <return type="Variant" />
+ <argument index="0" name="name" type="StringName" />
<description>
- If this is a controller that is being tracked, the controller will also be represented by a joystick entry with this ID.
+ Returns an input for this tracker. It can return a boolean, float or [Vector2] value depending on whether the input is a button, trigger or thumbstick/thumbpad.
</description>
</method>
- <method name="get_mesh" qualifiers="const">
- <return type="Mesh" />
+ <method name="get_pose" qualifiers="const">
+ <return type="XRPose" />
+ <argument index="0" name="name" type="StringName" />
<description>
- Returns the mesh related to a controller or anchor point if one is available.
+ Returns the current [XRPose] state object for the bound [code]pose[/code].
</description>
</method>
- <method name="get_orientation" qualifiers="const">
- <return type="Basis" />
+ <method name="has_pose" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
- Returns the controller's orientation matrix.
+ Returns [code]true[/code] if the bound [code]tracker[/code] is available and is currently tracking the bound [code]pose[/code].
</description>
</method>
- <method name="get_position" qualifiers="const">
- <return type="Vector3" />
+ <method name="invalidate_pose">
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
- Returns the world-space controller position.
+ Marks this pose as invalid, we don't clear the last reported state but it allows users to decide if trackers need to be hidden if we loose tracking or just remain at their last known position.
</description>
</method>
- <method name="get_tracker_hand" qualifiers="const">
- <return type="int" enum="XRPositionalTracker.TrackerHand" />
+ <method name="set_input">
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
- Returns the hand holding this tracker, if known. See [enum TrackerHand] constants.
+ Changes the value for the given input. This method is called by a [XRInterface] implementation and should not be used directly.
</description>
</method>
- <method name="get_tracker_id" qualifiers="const">
- <return type="int" />
+ <method name="set_pose">
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="transform" type="Transform3D" />
+ <argument index="2" name="linear_velocity" type="Vector3" />
+ <argument index="3" name="angular_velocity" type="Vector3" />
<description>
- Returns the internal tracker ID. This uniquely identifies the tracker per tracker type and matches the ID you need to specify for nodes such as the [XRController3D] and [XRAnchor3D] nodes.
+ Sets the transform, linear velocity and angular velocity for the given pose. This method is called by a [XRInterface] implementation and should not be used directly.
</description>
</method>
- <method name="get_tracker_name" qualifiers="const">
- <return type="StringName" />
+ </methods>
+ <members>
+ <member name="description" type="String" setter="set_tracker_desc" getter="get_tracker_desc" default="&quot;&quot;">
+ The description of this tracker.
+ </member>
+ <member name="hand" type="int" setter="set_tracker_hand" getter="get_tracker_hand" enum="XRPositionalTracker.TrackerHand" default="0">
+ Defines which hand this tracker relates to.
+ </member>
+ <member name="name" type="StringName" setter="set_tracker_name" getter="get_tracker_name" default="&amp;&quot;Unknown&quot;">
+ The unique name of this tracker. The trackers that are available differ between various XR runtimes and can often be configured by the user. Godot maintains a number of reserved names that it expects the [XRInterface] to implement if applicable:
+ - [code]left_hand[/code] identifies the controller held in the players left hand
+ - [code]right_hand[/code] identifies the controller held in the players right hand
+ </member>
+ <member name="rumble" type="float" setter="set_rumble" getter="get_rumble" default="0.0">
+ The degree to which the tracker rumbles. Ranges from [code]0.0[/code] to [code]1.0[/code] with precision [code].01[/code].
+ </member>
+ <member name="type" type="int" setter="set_tracker_type" getter="get_tracker_type" enum="XRServer.TrackerType" default="128">
+ The type of tracker.
+ </member>
+ </members>
+ <signals>
+ <signal name="button_pressed">
+ <argument index="0" name="name" type="String" />
<description>
- Returns the controller or anchor point's name, if applicable.
+ Emitted when a button on this tracker is pressed. Note that many XR runtimes allow other inputs to be mapped to buttons.
</description>
- </method>
- <method name="get_tracker_type" qualifiers="const">
- <return type="int" enum="XRServer.TrackerType" />
+ </signal>
+ <signal name="button_released">
+ <argument index="0" name="name" type="String" />
<description>
- Returns the tracker's type, which will be one of the values from the [enum XRServer.TrackerType] enum.
+ Emitted when a button on this tracker is released.
</description>
- </method>
- <method name="get_transform" qualifiers="const">
- <return type="Transform3D" />
- <argument index="0" name="adjust_by_reference_frame" type="bool" />
+ </signal>
+ <signal name="input_axis_changed">
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="vector" type="Vector2" />
<description>
- Returns the transform combining this device's orientation and position.
+ Emitted when a thumbstick or thumbpad on this tracker moves.
</description>
- </method>
- <method name="is_tracking_orientation" qualifiers="const">
- <return type="bool" />
+ </signal>
+ <signal name="input_value_changed">
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="value" type="float" />
<description>
- Returns [code]true[/code] if this device is tracking orientation.
+ Emitted when a trigger or similar input on this tracker changes value.
</description>
- </method>
- <method name="is_tracking_position" qualifiers="const">
- <return type="bool" />
+ </signal>
+ <signal name="pose_changed">
+ <argument index="0" name="pose" type="XRPose" />
<description>
- Returns [code]true[/code] if this device is tracking position.
+ Emitted when the state of a pose tracked by this tracker changes.
</description>
- </method>
- </methods>
- <members>
- <member name="rumble" type="float" setter="set_rumble" getter="get_rumble" default="0.0">
- The degree to which the tracker rumbles. Ranges from [code]0.0[/code] to [code]1.0[/code] with precision [code].01[/code].
- </member>
- </members>
+ </signal>
+ </signals>
<constants>
<constant name="TRACKER_HAND_UNKNOWN" value="0" enum="TrackerHand">
The hand this tracker is held in is unknown or not applicable.
diff --git a/doc/classes/XRServer.xml b/doc/classes/XRServer.xml
index 0929094fd1..87164ebb52 100644
--- a/doc/classes/XRServer.xml
+++ b/doc/classes/XRServer.xml
@@ -90,20 +90,21 @@
<method name="get_reference_frame" qualifiers="const">
<return type="Transform3D" />
<description>
- Returns the reference frame transform. Mostly used internally and exposed for GDNative build interfaces.
+ Returns the reference frame transform. Mostly used internally and exposed for GDExtension build interfaces.
</description>
</method>
<method name="get_tracker" qualifiers="const">
<return type="XRPositionalTracker" />
- <argument index="0" name="idx" type="int" />
+ <argument index="0" name="tracker_name" type="StringName" />
<description>
- Returns the positional tracker at the given ID.
+ Returns the positional tracker with this name.
</description>
</method>
- <method name="get_tracker_count" qualifiers="const">
- <return type="int" />
+ <method name="get_trackers">
+ <return type="Dictionary" />
+ <argument index="0" name="tracker_types" type="int" />
<description>
- Returns the number of trackers currently registered.
+ Returns a dictionary of trackers for this type.
</description>
</method>
<method name="remove_interface">
@@ -145,7 +146,6 @@
<signal name="tracker_added">
<argument index="0" name="tracker_name" type="StringName" />
<argument index="1" name="type" type="int" />
- <argument index="2" name="id" type="int" />
<description>
Emitted when a new tracker has been added. If you don't use a fixed number of controllers or if you're using [XRAnchor3D]s for an AR solution, it is important to react to this signal to add the appropriate [XRController3D] or [XRAnchor3D] nodes related to this new tracker.
</description>
@@ -153,20 +153,29 @@
<signal name="tracker_removed">
<argument index="0" name="tracker_name" type="StringName" />
<argument index="1" name="type" type="int" />
- <argument index="2" name="id" type="int" />
<description>
Emitted when a tracker is removed. You should remove any [XRController3D] or [XRAnchor3D] points if applicable. This is not mandatory, the nodes simply become inactive and will be made active again when a new tracker becomes available (i.e. a new controller is switched on that takes the place of the previous one).
</description>
</signal>
+ <signal name="tracker_updated">
+ <argument index="0" name="tracker_name" type="StringName" />
+ <argument index="1" name="type" type="int" />
+ <description>
+ Emitted when an existing tracker has been updated. This can happen if the user switches controllers.
+ </description>
+ </signal>
</signals>
<constants>
- <constant name="TRACKER_CONTROLLER" value="1" enum="TrackerType">
+ <constant name="TRACKER_HEAD" value="1" enum="TrackerType">
+ The tracker tracks the location of the players head. This is usually a location centered between the players eyes. Note that for handheld AR devices this can be the current location of the device.
+ </constant>
+ <constant name="TRACKER_CONTROLLER" value="2" enum="TrackerType">
The tracker tracks the location of a controller.
</constant>
- <constant name="TRACKER_BASESTATION" value="2" enum="TrackerType">
+ <constant name="TRACKER_BASESTATION" value="4" enum="TrackerType">
The tracker tracks the location of a base station.
</constant>
- <constant name="TRACKER_ANCHOR" value="4" enum="TrackerType">
+ <constant name="TRACKER_ANCHOR" value="8" enum="TrackerType">
The tracker tracks the location and size of an AR anchor.
</constant>
<constant name="TRACKER_ANY_KNOWN" value="127" enum="TrackerType">
diff --git a/doc/translations/Makefile b/doc/translations/Makefile
index ceee79ec95..ab08e107d0 100644
--- a/doc/translations/Makefile
+++ b/doc/translations/Makefile
@@ -21,3 +21,24 @@ merge:
check:
@for po in $(POFILES); do msgfmt -c $$po -o /dev/null; done
+
+# Generate completion ratio from statistics string such as:
+# 2775 translated messages, 272 fuzzy translations, 151 untranslated messages.
+# First number can be 0, second and third numbers are only present if non-zero.
+include-list:
+ @list=""; \
+ threshold=0.10; \
+ for po in $(POFILES); do \
+ res=`msgfmt --statistics $$po -o /dev/null 2>&1 | sed 's/[^0-9,]*//g'`; \
+ complete=`cut -d',' -f1 <<< $$res`; \
+ fuzzy_or_untranslated=`cut -d',' -f2 <<< $$res`; \
+ untranslated_maybe=`cut -d',' -f3 <<< $$res`; \
+ if [ -z "$$fuzzy_or_untranslated" ]; then fuzzy_or_untranslated=0; fi; \
+ if [ -z "$$untranslated_maybe" ]; then untranslated_maybe=0; fi; \
+ incomplete=`expr $$fuzzy_or_untranslated + $$untranslated_maybe`; \
+ if `awk "BEGIN {exit !($$complete / ($$complete + $$incomplete) > $$threshold)}"`; then \
+ lang=`basename $$po .po`; \
+ list+="$$lang,"; \
+ fi; \
+ done; \
+ echo $$list;
diff --git a/doc/translations/ar.po b/doc/translations/ar.po
index c6e2d40247..fdf08d3d61 100644
--- a/doc/translations/ar.po
+++ b/doc/translations/ar.po
@@ -3815,20 +3815,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3837,11 +3845,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3855,15 +3863,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6426,13 +6434,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6458,14 +6468,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6603,26 +6615,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6649,14 +6665,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6665,14 +6684,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7273,7 +7295,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10016,7 +10038,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12729,9 +12754,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14556,7 +14580,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14656,84 +14680,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15049,7 +15080,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19677,117 +19712,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19958,7 +19997,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20084,7 +20124,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20262,18 +20303,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20283,119 +20326,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20403,17 +20457,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20743,30 +20797,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20776,22 +20832,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20799,68 +20855,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20868,22 +20924,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20892,26 +20948,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22554,53 +22610,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22608,58 +22672,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22670,19 +22734,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22690,17 +22754,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22708,24 +22772,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22733,21 +22797,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22755,65 +22819,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22823,43 +22887,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23392,20 +23456,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23414,125 +23485,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25208,11 +25279,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25670,7 +25741,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26396,7 +26467,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27179,16 +27250,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27197,11 +27262,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27209,17 +27274,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27238,7 +27303,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27252,30 +27317,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27283,63 +27329,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28166,7 +28212,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29649,171 +29695,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29822,7 +29872,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29831,26 +29881,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29859,108 +29909,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31646,20 +31696,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31672,52 +31725,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31739,100 +31792,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31840,80 +31893,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32196,59 +32249,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32256,34 +32309,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32436,70 +32489,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32616,11 +32673,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32668,53 +32725,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33539,7 +33596,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35434,22 +35491,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35460,7 +35520,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35477,7 +35537,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35488,27 +35548,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35516,7 +35576,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35527,30 +35587,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35560,7 +35620,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35571,7 +35631,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35585,7 +35645,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35594,14 +35654,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35614,7 +35674,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35622,32 +35682,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35655,13 +35715,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35671,7 +35731,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35680,11 +35740,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35693,138 +35753,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37009,34 +37069,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37044,96 +37104,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39768,20 +39828,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43621,6 +43681,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43628,7 +43700,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43638,13 +43710,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43658,14 +43730,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43674,7 +43746,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43682,7 +43754,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43698,20 +43770,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43719,75 +43791,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43797,7 +43869,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43807,27 +43879,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43835,81 +43907,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43917,109 +43989,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44030,91 +44102,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44123,13 +44195,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44139,7 +44211,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44147,19 +44219,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44173,45 +44245,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44220,7 +44292,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44231,7 +44303,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44247,14 +44319,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44262,49 +44334,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44313,7 +44385,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44321,7 +44393,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44329,7 +44401,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44339,7 +44411,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44348,7 +44420,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44357,7 +44429,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44367,7 +44439,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44375,7 +44447,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44385,7 +44457,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44395,7 +44467,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44403,7 +44475,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44412,7 +44484,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44420,7 +44492,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44432,477 +44504,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44910,92 +44982,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45005,33 +45077,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45044,7 +45116,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45056,7 +45128,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45068,7 +45140,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45081,7 +45153,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45089,28 +45161,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45120,25 +45192,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45151,7 +45223,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45163,7 +45235,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45175,7 +45247,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45188,13 +45260,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45202,11 +45274,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45220,7 +45292,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45229,7 +45301,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45245,7 +45317,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45255,7 +45327,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45265,7 +45337,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45276,7 +45348,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45286,7 +45358,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45294,7 +45366,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45305,7 +45377,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45320,7 +45392,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45329,13 +45401,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45344,7 +45416,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45354,7 +45426,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45366,7 +45438,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45376,24 +45448,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45402,7 +45474,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45410,7 +45482,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45419,7 +45491,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45429,7 +45501,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45437,31 +45509,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45469,7 +45541,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45479,14 +45551,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45494,31 +45566,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45526,7 +45598,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45536,7 +45608,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45545,7 +45617,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45554,20 +45626,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45576,7 +45648,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45584,7 +45656,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45593,7 +45665,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45603,20 +45675,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45625,13 +45697,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45641,46 +45713,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45690,7 +45762,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45702,7 +45774,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45710,7 +45782,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45718,7 +45790,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45727,7 +45799,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45741,7 +45813,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45751,7 +45823,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45760,7 +45832,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45770,54 +45842,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45828,61 +45900,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45891,26 +45974,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45921,20 +46004,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45946,52 +46029,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45999,7 +46082,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46008,10 +46091,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46019,10 +46103,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46030,10 +46115,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46041,10 +46127,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46052,10 +46139,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46876,23 +46964,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46901,75 +46993,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47848,121 +47940,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47970,11 +48066,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47985,7 +48081,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47993,7 +48089,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48005,14 +48101,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48021,17 +48117,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48039,36 +48135,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48076,7 +48172,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48085,111 +48181,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48492,14 +48588,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48512,15 +48611,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48757,14 +48859,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48774,14 +48879,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49390,27 +49498,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49422,7 +49534,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49432,7 +49544,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49448,67 +49560,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49519,7 +49631,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49528,30 +49640,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49559,37 +49671,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49600,7 +49712,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49611,7 +49723,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49621,50 +49733,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49672,110 +49784,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49803,7 +49915,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50010,45 +50122,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52314,32 +52435,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54623,228 +54747,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55157,102 +55284,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55268,311 +55398,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55647,7 +55777,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55660,19 +55790,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55683,7 +55813,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56535,12 +56665,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56550,26 +56689,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57313,16 +57454,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63768,79 +63916,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63848,18 +63996,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63870,145 +64018,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64018,25 +64166,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64047,79 +64195,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "ÙŠÙØ±Ø¬Ø¹ قيمة الجيب العكسية للمَعلم."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64131,7 +64279,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64140,31 +64288,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64173,62 +64321,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64240,7 +64388,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64252,7 +64400,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64264,71 +64412,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64337,19 +64485,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64359,7 +64507,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64370,77 +64518,77 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "ÙŠÙØ±Ø¬Ø¹ القيمة المعاكسة للمَعلم."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64449,53 +64597,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64506,100 +64654,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "ÙŠÙØ±Ø¬Ø¹ قيمة ظل الزاوية للمَعلم."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "ÙŠÙØ±Ø¬Ø¹ القيمة المعاكسة للمَعلم."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64607,7 +64755,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64618,69 +64766,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64695,20 +64843,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64719,7 +64867,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64730,23 +64878,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64754,118 +64902,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64876,59 +65024,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64936,25 +65084,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64962,7 +65110,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64972,30 +65120,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65004,19 +65152,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65024,11 +65172,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65037,47 +65185,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65086,11 +65234,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65099,11 +65247,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65114,15 +65262,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65131,102 +65279,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "ÙŠÙØ±Ø¬Ø¹ باقي قسمة كل من Ø§Ù„Ù…ÙØªØ¬Ù‡ÙŠÙ† (الشعاعين)."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "ÙŠÙØ±Ø¬Ø¹ قيمة ظل الزاوية للمَعلم."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "ÙŠÙØ±Ø¬Ø¹ قيمة ظل الزاوية للمَعلم."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "ÙŠÙØ±Ø¬Ø¹ باقي قسمة كل من Ø§Ù„Ù…ÙØªØ¬Ù‡ÙŠÙ† (الشعاعين)."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "ÙŠÙØ±Ø¬Ø¹ عكس قيمة الجذر التربيعي للمَعلم."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65248,7 +65396,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65257,84 +65405,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65350,24 +65498,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65377,34 +65525,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65415,7 +65563,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65425,208 +65573,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65635,672 +65783,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68607,8 +68755,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69137,53 +69285,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "ÙŠÙØ±Ø¬Ø¹ جيب التمام \"cosine \" لقيمة المَعلم."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69454,6 +69605,10 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "ÙŠÙØ±Ø¬Ø¹ جيب التمام \"cosine \" لقيمة المَعلم."
+
#~ msgid ""
#~ "https://docs.godotengine.org/en/latest/getting_started/step_by_step/"
#~ "animations.html"
diff --git a/doc/translations/ca.po b/doc/translations/ca.po
index a9f84989dd..3c108f984b 100644
--- a/doc/translations/ca.po
+++ b/doc/translations/ca.po
@@ -5,12 +5,13 @@
#
# roger <616steam@gmail.com>, 2020.
# Pierre Stempin <pierre.stempin@gmail.com>, 2020.
+# Xavier Gomez <hiulit@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2020-10-12 09:28+0000\n"
-"Last-Translator: Pierre Stempin <pierre.stempin@gmail.com>\n"
+"PO-Revision-Date: 2021-10-10 14:03+0000\n"
+"Last-Translator: Xavier Gomez <hiulit@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/ca/>\n"
"Language: ca\n"
@@ -18,7 +19,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.3-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: doc/tools/makerst.py
msgid "Description"
@@ -58,28 +59,24 @@ msgid "Property Descriptions"
msgstr "Descripcions de la Propietat"
#: doc/tools/makerst.py
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Descripcions del Mètode"
+msgstr "Descripcions dels Mètodes"
#: modules/gdscript/doc_classes/@GDScript.xml:4
-#, fuzzy
msgid "Built-in GDScript functions."
msgstr "Funcions GDScript integrades."
#: modules/gdscript/doc_classes/@GDScript.xml:7
-#, fuzzy
msgid ""
"List of core built-in GDScript functions. Math functions and other "
"utilities. Everything else is provided by objects. (Keywords: builtin, built "
"in, global functions.)"
msgstr ""
-"Llista de funcions bàsiques de GDScript integrades. Funcions matemàtiques i "
-"altres utilitats. Tota la resta és proporcionada per objectes. (Paraules "
+"Llista de funcions essencials integrades de GDScript. Funcions matemàtiques "
+"i altres utilitats. Tota la resta és proporcionat per objectes. (Paraules "
"clau: builtin, built in, global functions.)"
#: modules/gdscript/doc_classes/@GDScript.xml:19
-#, fuzzy
msgid ""
"Returns a color constructed from integer red, green, blue, and alpha "
"channels. Each channel should have 8 bits of information ranging from 0 to "
@@ -92,18 +89,18 @@ msgid ""
"red = Color8(255, 0, 0)\n"
"[/codeblock]"
msgstr ""
-"Retorna un color construït a partir de canals vermells, verds, blaus i alfa "
-"enters. Cada canal ha de tenir 8 bits d'informació que van del 0 al 255.\n"
+"Retorna un color construït a partir dels nombres enters dels canals "
+"vermells, verds, blaus i alfa. Cada canal ha de tenir 8 bits d'informació "
+"que van del 0 al 255.\n"
"[code] la xarxa R8 [/code]\n"
"[code] G8 [/code] canal verd\n"
"[code] B8 [/code] canal blau\n"
"[code] A8 [/code] canal alfa\n"
"[codeblock]\n"
-"vermell = Color8 (255, 0, 0)\n"
+"vermell = Color8(255, 0, 0)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:34
-#, fuzzy
msgid ""
"Returns a color according to the standardized [code]name[/code] with "
"[code]alpha[/code] ranging from 0 to 1.\n"
@@ -112,13 +109,13 @@ msgid ""
"[/codeblock]\n"
"Supported color names are the same as the constants defined in [Color]."
msgstr ""
-"Retorna un color d'acord amb l'estandarditzat [code] nom [/code] amb [code] "
-"Alpha [/code] que va de 0 a 1.\n"
+"Retorna un color d'acord amb l'estandarditzat [code]nom[/code] amb "
+"[code]transparència[/code] que va de 0 a 1.\n"
"[codeblock]\n"
-"vermell = ColorN (\"vermell\", 1)\n"
+"vermell = ColorN(\"vermell\", 1)\n"
"[/codeblock]\n"
-"Els noms de color suportats són els mateixos que les constants definides en "
-"[color]."
+"Els noms de color suportats són els mateixos que les constants definides a "
+"[Color]."
#: modules/gdscript/doc_classes/@GDScript.xml:45
msgid ""
@@ -128,6 +125,11 @@ msgid ""
"a = abs(-1) # a is 1\n"
"[/codeblock]"
msgstr ""
+"Retorna el valor absolut del paràmetre [code]s[/code] (és a dir, un valor "
+"positiu).\n"
+"[codeblock]\n"
+"a = abs(-1) # a és 1\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:55
msgid ""
@@ -140,6 +142,14 @@ msgid ""
"c = acos(0.866025)\n"
"[/codeblock]"
msgstr ""
+"Retorna l'arc cosinus de [code]s[/code] en radians. S'utilitza per a obtenir "
+"l'angle de cosinus [code]s[/code]. [code]s[/code] ha d'estar entre "
+"[code]-1.0[/code] i [code]1.0[/code] (inclòs), en cas contrari, [method "
+"acos] retornarà [constant NAN].\n"
+"[codeblock]\n"
+"# c és 0,523599 o 30 graus si es converteix amb rad2deg(s)\n"
+"c = acos(0.866025)\n"
+"[/ codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:66
msgid ""
@@ -152,6 +162,14 @@ msgid ""
"s = asin(0.5)\n"
"[/codeblock]"
msgstr ""
+"Retorna l'arc de sinus de [code]s[/code] en radians. S'utilitza per a "
+"obtenir l'angle de sinus [code]s[/code]. [code]s[/code] ha d'estar entre "
+"[code]-1.0[/ code] i [code]1.0[/code] (inclòs), en cas contrari, [method "
+"asin] retornarà [constant NAN].\n"
+"[codeblock]\n"
+"# s és 0.523599 o 30 graus si es converteix amb rad2deg(s)\n"
+"s = asin(0.5)\n"
+"[/ codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:78
msgid ""
@@ -179,6 +197,30 @@ msgid ""
"a message with clarifying details\n"
"[/codeblock]"
msgstr ""
+"Afirma que la [code]condició[/code] és [code]true[/code]. Si la "
+"[code]condició[/code] és [code]false[/code], es genera un error. Quan "
+"s’executa des de l’editor, el projecte en execució també s’aturarà fins que "
+"el repreneu. Es pot utilitzar com una forma més forta de [method push_error] "
+"per a informar d'errors als desenvolupadors de projectes o als usuaris de "
+"complements (add-ons).\n"
+"[b]Nota:[/b] Per motius de rendiment, el codi de [method assert] només "
+"s'executa en versions de depuració o quan s'executa el projecte des de "
+"l'editor. No inclogueu codi que tingui efectes secundaris en una crida a "
+"[method assert]. En cas contrari, el projecte es comportarà de manera "
+"diferent quan s’exporti en mode \"release\".\n"
+"L'argument opcional de [code]missatge[/code], si es dóna, es mostra a més "
+"del missatge genèric \"Afirmació fallida\". Podeu utilitzar-lo per a "
+"proporcionar detalls addicionals sobre per què ha fallat l'afirmació.\n"
+"[codeblock]\n"
+"# Imagineu-vos que sempre volem que la velocitat estigui entre 0 i 20.\n"
+"var velocitat = -10\n"
+"assert(velocitat < 20) # Veritat, el programa continuarà\n"
+"assert(velocitat >= 0) # Fals, el programa s'aturarà.\n"
+"assert(velocitat >= 0 and velocitat < 20) # També podeu combinar les dues "
+"sentències condicionals en una sola comprovocació\n"
+"assert(velocitat < 20, \"velocitat = %f, però el límit de vecolitat és 20\" "
+"% velocitat) # Es mostra un missatge amb detalls aclaridors\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:95
msgid ""
@@ -191,6 +233,14 @@ msgid ""
"a = atan(0.5) # a is 0.463648\n"
"[/codeblock]"
msgstr ""
+"Retorna l'arc tangent de [code]s[/code] en radians. S'utilitza per a obtenir "
+"l'angle de la tangent d'un l'angle en trigonometria: [code]atan(tan(angle)) "
+"== angle[/code].\n"
+"El mètode not pot saber en quin quadrant ha de caure l'angle. Consulteu "
+"[method atan2] si teniu tant [code]y[/code] i [code]x[/code].\n"
+"[codeblock]\n"
+"a = atan(0.5) # a és 0.463648\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:107
msgid ""
@@ -202,6 +252,14 @@ msgid ""
"a = atan2(0, -1) # a is 3.141593\n"
"[/codeblock]"
msgstr ""
+"Retorna l'arc tangent de [code]y/x[/code] en radians. S'utilitza per a "
+"obtenir l'angle de tangent [code]y/x[/code]. Per a calcular el valor, el "
+"mètode té en compte el signe d'ambdós arguments per a determinar el "
+"quadrant.\n"
+"Nota important: la coordenada Y és la primera, per convenció.\n"
+"[codeblock]\n"
+"a = atan2(0, -1) # a és 3.141593\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:119
msgid ""
@@ -211,6 +269,12 @@ msgid ""
"not use this option if the serialized object comes from untrusted sources to "
"avoid potential security threats (remote code execution)."
msgstr ""
+"Decodifica una matriu de bytes de nou a un valor. Quan [code]allow_objects[/"
+"code] és [code]true[/code] es permet la descodificació d'objectes.\n"
+"[b]ADVERTÈNCIA:[/b] L'objecte deserialitzat pot contenir codi que s'executa. "
+"No utilitzeu aquesta opció si l'objecte serialitzat prové de fonts no "
+"fiables per a evitar possibles amenaces de seguretat (execució remota de "
+"codi)."
#: modules/gdscript/doc_classes/@GDScript.xml:128
#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:145
@@ -219,6 +283,9 @@ msgid ""
"axis) to the polar coordinate system (a distance from the origin and an "
"angle)."
msgstr ""
+"Converteix un punt 2D expressat en el sistema de coordenades cartesianes "
+"(eixos X i Y) al sistema de coordenades polars (una distància de l'origen i "
+"un angle)."
#: modules/gdscript/doc_classes/@GDScript.xml:135
msgid ""
@@ -230,6 +297,13 @@ msgid ""
"[/codeblock]\n"
"See also [method floor], [method round], [method stepify], and [int]."
msgstr ""
+"Arrodoneix [code]s[/code] cap amunt (cap a l'infinit positiu), retornant el "
+"nombre enter més petit que no sigui inferior a [code]s[/code].\n"
+"[codeblock]\n"
+"a = ceil(1.45) # a és 2.0\n"
+"a = ceil(1.001) # a és 2.0\n"
+"[/codeblock]\n"
+"Vegeu també [method floor], [method round], [method stepify] i [int]."
#: modules/gdscript/doc_classes/@GDScript.xml:147
msgid ""
@@ -242,6 +316,14 @@ msgid ""
"[/codeblock]\n"
"This is the inverse of [method ord]."
msgstr ""
+"Retorna un caràcter com una cadena donat un punt del codi Unicode (que és "
+"compatible amb el codi ASCII).\n"
+"[codeblock]\n"
+"a = char(65) # a és \"A\"\n"
+"a = char(65 + 32) # a és \"a\"\n"
+"a = char(8364) # a és \"€\"\n"
+"[/codeblock]\n"
+"Això és la inversa de [method ord]."
#: modules/gdscript/doc_classes/@GDScript.xml:162
msgid ""
@@ -253,6 +335,13 @@ msgid ""
"a = clamp(15, 1, 20) # a is 15\n"
"[/codeblock]"
msgstr ""
+"Fixa el [code]valor[/code] i retorna un valor no inferior a [code]mínim[/"
+"code] i no superior a [code]màxim[/code].\n"
+"[codeblock]\n"
+"a = clamp(1000, 1, 20) # a és 20\n"
+"a = clamp(-10, 1, 20) # a és 1\n"
+"a = clamp(15, 1, 20) # a és 15\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:175
msgid ""
@@ -3757,20 +3846,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3779,11 +3876,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3797,15 +3894,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6367,13 +6464,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6399,14 +6498,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6544,26 +6645,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6590,14 +6695,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6606,14 +6714,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7214,7 +7325,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9956,7 +10067,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12664,9 +12778,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14491,7 +14604,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14591,84 +14704,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14984,7 +15104,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19608,117 +19732,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19889,7 +20017,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20015,7 +20144,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20193,18 +20323,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20214,119 +20346,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20334,17 +20477,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20674,30 +20817,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20707,22 +20852,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20730,68 +20875,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20799,22 +20944,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20823,26 +20968,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22485,53 +22630,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22539,58 +22692,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22601,19 +22754,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22621,17 +22774,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22639,24 +22792,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22664,21 +22817,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22686,65 +22839,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22754,43 +22907,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23322,20 +23475,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23344,125 +23504,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25138,11 +25298,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25599,7 +25759,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26325,7 +26485,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27108,16 +27268,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27126,11 +27280,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27138,17 +27292,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27167,7 +27321,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27181,30 +27335,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27212,63 +27347,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28093,7 +28228,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29575,171 +29710,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29748,7 +29887,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29757,26 +29896,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29785,108 +29924,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31571,20 +31710,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31597,52 +31739,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31664,100 +31806,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31765,80 +31907,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32121,59 +32263,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32181,34 +32323,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32361,70 +32503,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32541,11 +32687,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32593,53 +32739,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33463,7 +33609,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35350,22 +35496,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35376,7 +35525,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35393,7 +35542,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35404,27 +35553,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35432,7 +35581,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35443,30 +35592,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35476,7 +35625,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35487,7 +35636,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35501,7 +35650,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35510,14 +35659,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35530,7 +35679,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35538,32 +35687,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35571,13 +35720,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35587,7 +35736,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35596,11 +35745,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35609,138 +35758,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36925,34 +37074,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36960,96 +37109,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39665,20 +39814,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43513,6 +43662,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43520,7 +43681,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43530,13 +43691,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43550,14 +43711,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43566,7 +43727,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43574,7 +43735,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43590,20 +43751,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43611,75 +43772,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43689,7 +43850,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43699,27 +43860,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43727,81 +43888,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43809,109 +43970,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43922,91 +44083,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44015,13 +44176,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44031,7 +44192,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44039,19 +44200,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44065,45 +44226,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44112,7 +44273,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44123,7 +44284,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44139,14 +44300,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44154,49 +44315,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44205,7 +44366,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44213,7 +44374,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44221,7 +44382,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44231,7 +44392,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44240,7 +44401,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44249,7 +44410,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44259,7 +44420,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44267,7 +44428,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44277,7 +44438,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44287,7 +44448,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44295,7 +44456,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44304,7 +44465,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44312,7 +44473,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44324,477 +44485,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44802,92 +44963,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44897,33 +45058,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44936,7 +45097,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44948,7 +45109,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44960,7 +45121,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44973,7 +45134,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44981,28 +45142,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45012,25 +45173,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45043,7 +45204,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45055,7 +45216,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45067,7 +45228,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45080,13 +45241,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45094,11 +45255,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45112,7 +45273,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45121,7 +45282,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45137,7 +45298,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45147,7 +45308,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45157,7 +45318,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45168,7 +45329,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45178,7 +45339,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45186,7 +45347,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45197,7 +45358,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45212,7 +45373,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45221,13 +45382,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45236,7 +45397,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45246,7 +45407,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45258,7 +45419,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45268,24 +45429,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45294,7 +45455,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45302,7 +45463,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45311,7 +45472,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45321,7 +45482,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45329,31 +45490,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45361,7 +45522,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45371,14 +45532,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45386,31 +45547,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45418,7 +45579,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45428,7 +45589,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45437,7 +45598,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45446,20 +45607,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45468,7 +45629,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45476,7 +45637,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45485,7 +45646,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45495,20 +45656,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45517,13 +45678,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45533,46 +45694,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45582,7 +45743,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45594,7 +45755,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45602,7 +45763,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45610,7 +45771,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45619,7 +45780,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45633,7 +45794,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45643,7 +45804,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45652,7 +45813,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45662,54 +45823,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45720,61 +45881,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45783,26 +45955,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45813,20 +45985,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45838,52 +46010,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45891,7 +46063,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45900,10 +46072,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45911,10 +46084,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45922,10 +46096,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45933,10 +46108,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45944,10 +46120,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46768,23 +46945,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46793,75 +46974,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47740,121 +47921,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47862,11 +48047,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47877,7 +48062,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47885,7 +48070,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47897,14 +48082,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47913,17 +48098,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47931,36 +48116,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47968,7 +48153,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47977,111 +48162,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48384,14 +48569,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48404,15 +48592,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48649,14 +48840,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48666,14 +48860,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49282,27 +49479,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49314,7 +49515,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49324,7 +49525,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49340,67 +49541,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49411,7 +49612,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49420,30 +49621,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49451,37 +49652,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49492,7 +49693,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49503,7 +49704,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49513,50 +49714,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49564,110 +49765,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49695,7 +49896,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49902,45 +50103,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52206,32 +52416,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54515,228 +54728,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55048,102 +55264,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55159,311 +55378,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55538,7 +55757,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55551,19 +55770,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55574,7 +55793,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56426,12 +56645,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56441,26 +56669,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57204,16 +57434,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63649,79 +63886,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63729,18 +63966,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63751,144 +63988,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63898,25 +64135,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63927,78 +64164,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64010,7 +64247,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64019,31 +64256,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64052,62 +64289,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64119,7 +64356,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64131,7 +64368,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64143,71 +64380,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64216,19 +64453,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64238,7 +64475,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64249,75 +64486,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64326,53 +64563,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64383,98 +64620,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64482,7 +64719,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64493,69 +64730,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64570,20 +64807,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64594,7 +64831,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64605,23 +64842,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64629,118 +64866,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64751,59 +64988,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64811,25 +65048,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64837,7 +65074,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64847,30 +65084,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64879,19 +65116,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64899,11 +65136,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64912,47 +65149,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64961,11 +65198,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64974,11 +65211,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64989,15 +65226,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65006,95 +65243,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65116,7 +65353,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65125,84 +65362,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65218,24 +65455,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65245,34 +65482,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65283,7 +65520,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65293,208 +65530,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65503,672 +65740,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -67595,8 +67832,9 @@ msgid "Returns the arc-sine of the parameter."
msgstr ""
#: doc/classes/VisualShaderNodeVectorFunc.xml:50
+#, fuzzy
msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr ""
+msgstr "Retorna el sinus hiperbòlic invers del paràmetre."
#: doc/classes/VisualShaderNodeVectorFunc.xml:53
msgid "Returns the arc-tangent of the parameter."
@@ -68472,8 +68710,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69002,52 +69240,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/classes.pot b/doc/translations/classes.pot
index 69503c93fc..bc08fd3f2d 100644
--- a/doc/translations/classes.pot
+++ b/doc/translations/classes.pot
@@ -3723,20 +3723,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3745,11 +3753,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3763,15 +3771,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6324,13 +6332,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6356,14 +6366,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6497,26 +6509,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6543,14 +6559,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6559,14 +6578,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7164,7 +7186,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9894,7 +9916,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12579,9 +12604,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14399,7 +14423,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14499,84 +14523,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14892,7 +14923,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19498,117 +19533,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19779,7 +19818,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19902,7 +19942,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20077,18 +20118,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20098,119 +20141,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20218,17 +20272,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20556,30 +20610,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20589,22 +20645,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20612,68 +20668,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20681,22 +20737,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20705,26 +20761,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22355,53 +22411,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22409,58 +22473,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22471,19 +22535,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22491,17 +22555,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22509,24 +22573,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22534,21 +22598,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22556,65 +22620,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22624,43 +22688,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23192,20 +23256,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23214,125 +23285,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -24998,11 +25069,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25459,7 +25530,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26180,7 +26251,7 @@ msgid ""
"html"
msgstr ""
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/ssl_certificates."
@@ -26960,26 +27031,20 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
"html"
msgstr ""
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -26987,17 +27052,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27016,7 +27081,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27030,30 +27095,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27061,63 +27107,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -27939,7 +27985,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29409,171 +29455,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29582,7 +29632,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29591,26 +29641,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29619,108 +29669,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31389,20 +31439,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31415,52 +31468,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31482,100 +31535,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31583,80 +31636,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -31939,59 +31992,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -31999,34 +32052,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32179,70 +32232,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32359,11 +32416,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32411,53 +32468,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33271,7 +33328,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35145,22 +35202,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35171,7 +35231,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35188,7 +35248,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35199,27 +35259,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35227,7 +35287,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35238,30 +35298,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35271,7 +35331,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35282,7 +35342,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35296,7 +35356,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35305,14 +35365,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35325,7 +35385,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35333,32 +35393,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35366,13 +35426,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35382,7 +35442,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35391,11 +35451,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35404,138 +35464,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36710,34 +36770,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36745,96 +36805,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39445,20 +39505,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43290,6 +43350,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43297,7 +43369,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43307,13 +43379,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43327,14 +43399,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43343,7 +43415,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43351,7 +43423,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43367,20 +43439,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43388,75 +43460,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43466,7 +43538,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43476,27 +43548,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43504,81 +43576,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43586,109 +43658,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43699,91 +43771,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -43792,13 +43864,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -43808,7 +43880,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -43816,19 +43888,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -43842,45 +43914,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -43889,7 +43961,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -43900,7 +43972,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -43916,14 +43988,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -43931,49 +44003,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -43982,7 +44054,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -43990,7 +44062,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -43998,7 +44070,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44008,7 +44080,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44017,7 +44089,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44026,7 +44098,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44036,7 +44108,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44044,7 +44116,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44054,7 +44126,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44064,7 +44136,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44072,7 +44144,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44081,7 +44153,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44089,7 +44161,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44101,477 +44173,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44579,92 +44651,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44674,33 +44746,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44713,7 +44785,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44725,7 +44797,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44737,7 +44809,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44750,7 +44822,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44758,28 +44830,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44789,25 +44861,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44820,7 +44892,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44832,7 +44904,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44844,7 +44916,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44857,13 +44929,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -44871,11 +44943,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -44889,7 +44961,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -44898,7 +44970,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -44914,7 +44986,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -44924,7 +44996,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -44934,7 +45006,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -44945,7 +45017,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -44955,7 +45027,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -44963,7 +45035,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -44974,7 +45046,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -44989,7 +45061,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -44998,13 +45070,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45013,7 +45085,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45023,7 +45095,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45035,7 +45107,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45045,24 +45117,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45071,7 +45143,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45079,7 +45151,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45088,7 +45160,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45098,7 +45170,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45106,31 +45178,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45138,7 +45210,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45148,14 +45220,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45163,31 +45235,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45195,7 +45267,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45205,7 +45277,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45214,7 +45286,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45223,20 +45295,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45245,7 +45317,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45253,7 +45325,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45262,7 +45334,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45272,20 +45344,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45294,13 +45366,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45310,46 +45382,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45359,7 +45431,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45371,7 +45443,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45379,7 +45451,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45387,7 +45459,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45396,7 +45468,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45410,7 +45482,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45420,7 +45492,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45429,7 +45501,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45439,54 +45511,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45497,61 +45569,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45560,26 +45643,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45590,20 +45673,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45615,52 +45698,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45668,7 +45751,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45677,10 +45760,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45688,10 +45772,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45699,10 +45784,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45710,10 +45796,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45721,10 +45808,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46540,21 +46628,25 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46563,75 +46655,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47506,121 +47598,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47628,11 +47724,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47643,7 +47739,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47651,7 +47747,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47663,14 +47759,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47679,17 +47775,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47697,36 +47793,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47734,7 +47830,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47743,111 +47839,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48150,14 +48246,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48170,15 +48269,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48413,14 +48515,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48430,14 +48535,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49037,27 +49145,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49069,7 +49181,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49079,7 +49191,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49095,67 +49207,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49166,7 +49278,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49175,30 +49287,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49206,37 +49318,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49247,7 +49359,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49258,7 +49370,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49268,50 +49380,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49319,110 +49431,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49450,7 +49562,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49654,45 +49766,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -51943,32 +52064,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54249,228 +54373,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -54782,102 +54909,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -54893,311 +55023,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55272,7 +55402,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55285,19 +55415,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55308,7 +55438,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56156,12 +56286,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56171,26 +56310,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -56931,16 +57072,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63359,79 +63507,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63439,18 +63587,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63461,144 +63609,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63608,25 +63756,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63637,78 +63785,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63720,7 +63868,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -63729,31 +63877,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -63762,62 +63910,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63829,7 +63977,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63841,7 +63989,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63853,71 +64001,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -63926,19 +64074,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -63948,7 +64096,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63959,75 +64107,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64036,53 +64184,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64093,98 +64241,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64192,7 +64340,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64203,69 +64351,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64280,20 +64428,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64304,7 +64452,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64315,23 +64463,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64339,118 +64487,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64461,59 +64609,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64521,25 +64669,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64547,7 +64695,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64557,30 +64705,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64589,19 +64737,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64609,11 +64757,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64622,47 +64770,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64671,11 +64819,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64684,11 +64832,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64699,15 +64847,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64716,95 +64864,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -64826,7 +64974,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64835,84 +64983,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -64928,24 +65076,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -64955,34 +65103,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -64993,7 +65141,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65003,208 +65151,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65213,672 +65361,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68174,8 +68322,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68704,52 +68852,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/cs.po b/doc/translations/cs.po
index 53297e14da..4fb544a0d3 100644
--- a/doc/translations/cs.po
+++ b/doc/translations/cs.po
@@ -4217,20 +4217,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4239,11 +4247,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4257,15 +4265,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6826,13 +6834,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6858,14 +6868,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -7001,26 +7013,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -7047,14 +7063,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -7063,14 +7082,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7671,7 +7693,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10417,7 +10439,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -13118,9 +13143,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14943,7 +14967,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -15043,84 +15067,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15436,7 +15467,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -20089,117 +20124,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20370,7 +20409,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20496,7 +20536,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20674,18 +20715,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20695,120 +20738,131 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
#, fuzzy
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr "Vrací [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula."
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20816,17 +20870,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -21156,30 +21210,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -21189,22 +21245,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -21212,68 +21268,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -21281,22 +21337,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21305,26 +21361,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22971,53 +23027,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -23025,58 +23089,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -23087,19 +23151,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -23107,17 +23171,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -23125,24 +23189,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -23150,21 +23214,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -23172,65 +23236,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -23240,43 +23304,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23809,20 +23873,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23831,125 +23902,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25625,11 +25696,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -26091,7 +26162,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26817,7 +26888,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27600,16 +27671,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27618,11 +27683,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27630,17 +27695,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27659,7 +27724,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27673,30 +27738,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27704,63 +27750,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28587,7 +28633,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -30070,171 +30116,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -30243,7 +30293,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -30252,26 +30302,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -30280,108 +30330,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -32067,20 +32117,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -32093,52 +32146,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -32160,100 +32213,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -32261,80 +32314,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32618,59 +32671,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32678,34 +32731,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32858,70 +32911,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -33038,11 +33095,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -33090,53 +33147,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33961,7 +34018,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35854,22 +35911,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35880,7 +35940,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35897,7 +35957,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35908,27 +35968,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35936,7 +35996,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35947,30 +36007,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35980,7 +36040,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35991,7 +36051,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -36005,7 +36065,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -36014,14 +36074,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -36034,7 +36094,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -36042,32 +36102,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -36075,13 +36135,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -36091,7 +36151,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -36100,11 +36160,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -36113,138 +36173,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37431,34 +37491,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37466,96 +37526,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -40197,20 +40257,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -44051,6 +44111,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -44058,7 +44130,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -44068,13 +44140,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -44088,14 +44160,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -44104,7 +44176,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -44112,7 +44184,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -44128,20 +44200,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -44149,75 +44221,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44227,7 +44299,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44237,27 +44309,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -44265,81 +44337,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44347,109 +44419,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44460,91 +44532,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44553,13 +44625,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44569,7 +44641,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44577,19 +44649,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44603,45 +44675,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44650,7 +44722,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44661,7 +44733,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44677,14 +44749,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44692,49 +44764,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44743,7 +44815,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44751,7 +44823,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44759,7 +44831,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44769,7 +44841,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44778,7 +44850,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44787,7 +44859,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44797,7 +44869,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44805,7 +44877,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44815,7 +44887,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44825,7 +44897,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44833,7 +44905,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44842,7 +44914,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44850,7 +44922,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44862,477 +44934,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45340,92 +45412,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45435,33 +45507,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45474,7 +45546,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45486,7 +45558,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45498,7 +45570,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45511,7 +45583,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45519,28 +45591,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45550,25 +45622,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45581,7 +45653,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45593,7 +45665,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45605,7 +45677,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45618,13 +45690,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45632,11 +45704,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45650,7 +45722,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45659,7 +45731,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45675,7 +45747,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45685,7 +45757,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45695,7 +45767,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45706,7 +45778,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45716,7 +45788,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45724,7 +45796,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45735,7 +45807,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45750,7 +45822,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45759,13 +45831,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45774,7 +45846,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45784,7 +45856,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45796,7 +45868,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45806,24 +45878,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45832,7 +45904,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45840,7 +45912,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45849,7 +45921,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45859,7 +45931,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45867,31 +45939,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45899,7 +45971,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45909,14 +45981,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45924,31 +45996,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45956,7 +46028,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45966,7 +46038,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45975,7 +46047,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45984,20 +46056,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -46006,7 +46078,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -46014,7 +46086,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -46023,7 +46095,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -46033,20 +46105,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -46055,13 +46127,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -46071,46 +46143,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -46120,7 +46192,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -46132,7 +46204,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -46140,7 +46212,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -46148,7 +46220,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -46157,7 +46229,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -46171,7 +46243,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -46181,7 +46253,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -46190,7 +46262,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -46200,54 +46272,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -46258,61 +46330,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -46321,26 +46404,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46351,20 +46434,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46376,52 +46459,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46429,7 +46512,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46438,10 +46521,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46449,10 +46533,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46460,10 +46545,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46471,10 +46557,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46482,10 +46569,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -47308,22 +47396,26 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr "https://docs.godotengine.org/en/latest/tutorials/3d/gi_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -47332,75 +47424,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -48281,121 +48373,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48403,11 +48499,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48418,7 +48514,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48426,7 +48522,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48438,14 +48534,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48454,17 +48550,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48472,36 +48568,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48509,7 +48605,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48518,111 +48614,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48925,14 +49021,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48945,15 +49044,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49188,14 +49290,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -49205,14 +49310,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49821,27 +49929,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49853,7 +49965,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49863,7 +49975,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49879,68 +49991,68 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr "Vrátí [code] true [/code], pokud je vektor normalizován, jinak false."
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49951,7 +50063,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49960,30 +50072,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49991,37 +50103,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -50032,7 +50144,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -50043,7 +50155,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -50053,50 +50165,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -50104,110 +50216,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -50235,7 +50347,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50442,45 +50554,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52745,32 +52866,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -55061,229 +55185,232 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr "Vrací [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula."
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55597,61 +55724,64 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
@@ -55659,14 +55789,14 @@ msgstr ""
"Vrací [code]true[/code] pokud si jsou [code]a[/code] a [code]b[/code] "
"přiblížně rovny."
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr "Vrací [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula."
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
@@ -55675,31 +55805,31 @@ msgstr ""
"Vrací [code]true[/code] pokud si jsou [code]a[/code] a [code]b[/code] "
"přiblížně rovny."
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55715,311 +55845,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -56095,7 +56225,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -56108,19 +56238,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -56131,7 +56261,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56999,12 +57129,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -57014,26 +57153,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57776,16 +57917,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -64232,79 +64380,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -64312,18 +64460,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -64334,145 +64482,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Vrátí sinus parametru."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64482,25 +64630,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64511,79 +64659,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Vrátí arkus sinus parametru."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64595,7 +64743,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64604,31 +64752,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64637,62 +64785,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64704,7 +64852,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64716,7 +64864,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64728,71 +64876,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64801,19 +64949,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64823,7 +64971,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64834,78 +64982,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Vrátí sinus parametru."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Vrátí opaÄnou hodnotu parametru."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr "Vrátí [code] true [/code], pokud je vektor normalizován, jinak false."
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64914,53 +65062,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64971,100 +65119,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Vrátí tangens parametru."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Vrátí opaÄnou hodnotu parametru."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -65072,7 +65220,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -65083,69 +65231,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -65160,20 +65308,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65184,7 +65332,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65195,23 +65343,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -65219,118 +65367,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65341,59 +65489,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65401,25 +65549,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65427,7 +65575,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65437,30 +65585,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65469,19 +65617,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65489,11 +65637,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65502,47 +65650,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65551,11 +65699,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65564,11 +65712,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65579,15 +65727,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65596,102 +65744,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Vrátí sinus parametru."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Vrátí sinus parametru."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Vrátí zbytek po dělení dvou vektorů."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Vrátí tangens parametru."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Vrátí tangens parametru."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Vrátí zbytek po dělení dvou vektorů."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Vrátí inverzní odmocninu z parametru."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65713,7 +65861,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65722,85 +65870,85 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr "Vrátí [code] true [/code], pokud je vektor normalizován, jinak false."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65816,24 +65964,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65843,34 +65991,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65881,7 +66029,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65891,208 +66039,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -66101,672 +66249,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -69071,8 +69219,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69601,53 +69749,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Vrátí kosinus parametru."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69918,6 +70069,10 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Vrátí kosinus parametru."
+
#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
diff --git a/doc/translations/de.po b/doc/translations/de.po
index 7cfa9c7805..1a050d19c2 100644
--- a/doc/translations/de.po
+++ b/doc/translations/de.po
@@ -4737,14 +4737,22 @@ msgstr ""
"einer Abbruchaktion hinzu und gibt die erstellte Schaltfläche zurück."
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
-msgstr "Gibt das für den eingebauten Text verwendete Label zurück."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
-msgstr "Gibt die Instanz OK [Schaltfläche] zurück."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
@@ -4752,7 +4760,7 @@ msgstr ""
"Registriert ein [LineEdit] im Dialog. Wenn die Eingabetaste gedrückt ist, "
"wird der Dialog übernommen."
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4761,11 +4769,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr "Legt den automatischen Umbruch für den Text im Dialog fest."
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4792,17 +4800,17 @@ msgstr ""
"Daher kann diese Eigenschaft in [FileDialog] nicht verwendet werden, um das "
"Ausblenden des Dialogs beim Drücken von OK zu deaktivieren."
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr "Der vom Dialog angezeigte Text."
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
"Wird ausgegeben, wenn der Dialog akzeptiert wird, d. h. die Schaltfläche OK "
"gedrückt wird."
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
"Wird ausgegeben, wenn eine benutzerdefinierte Taste gedrückt wird. Siehe "
@@ -8189,13 +8197,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -8221,14 +8231,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -8408,26 +8420,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -8454,14 +8470,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -8470,14 +8489,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -9088,7 +9110,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -11847,7 +11869,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -14584,9 +14609,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -16456,7 +16480,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -16556,84 +16580,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -16949,7 +16980,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -21617,117 +21652,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -21898,7 +21937,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -22024,7 +22064,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -22202,18 +22243,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -22223,66 +22266,77 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr "Gibt die [EditorSettings] Instanz des Editors zurück."
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
-msgstr "Gibt die [FileSystemDock]-Instanz des Editors zurück."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
-msgstr "Gibt die [EditorInspector]-Instanz des Editors zurück."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr "Gibt die [EditorFileSystem]-Instanz des Editors zurück."
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
-msgstr "Gibt die [ScriptEditor]-Instanz des Editors zurück."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr "Gibt die [EditorSelection]-Instanz des Editors zurück."
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
@@ -22290,7 +22344,7 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn eine Szene gerade abgespielt wird, sonst "
"[code]false[/code]. Pausierte Szenen werden als abgespielt betrachtet."
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
@@ -22298,48 +22352,48 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn das angegebene [code]Plugin[/code] "
"aktiviert ist. Der Plugin-Name ist derselbe wie sein Verzeichnisname."
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -22347,17 +22401,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -22687,30 +22741,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -22720,22 +22776,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -22743,68 +22799,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -22812,22 +22868,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -22836,26 +22892,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -24512,53 +24568,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -24566,58 +24630,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -24628,19 +24692,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -24648,17 +24712,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -24666,24 +24730,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -24691,21 +24755,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -24713,65 +24777,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -24781,43 +24845,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -25354,20 +25418,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -25376,125 +25447,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -27183,11 +27254,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -27665,7 +27736,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -28397,7 +28468,7 @@ msgstr ""
"https://docs.godotengine.org/de/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -29180,16 +29251,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -29198,11 +29263,11 @@ msgstr ""
"https://docs.godotengine.org/de/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -29210,17 +29275,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -29239,7 +29304,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -29253,30 +29318,12 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
+#: doc/classes/HTTPRequest.xml:127
+#, fuzzy
+msgid "Maximum allowed size for response bodies."
+msgstr "Maximaler Wert für das Modus-Enum."
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -29284,63 +29331,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -30170,7 +30217,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
#, fuzzy
msgid "Resizes the texture to the specified dimensions."
msgstr "Trennt das Node, der mit dem angegebenen Eingang verbunden ist."
@@ -31662,171 +31709,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -31835,7 +31886,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -31844,26 +31895,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -31872,108 +31923,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -33666,20 +33717,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -33692,52 +33746,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -33759,100 +33813,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -33860,80 +33914,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -34218,59 +34272,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -34278,34 +34332,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -34458,70 +34512,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -34638,11 +34696,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -34690,53 +34748,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -35561,7 +35619,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -37471,22 +37529,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -37497,7 +37558,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -37514,7 +37575,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -37525,27 +37586,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -37553,7 +37614,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -37564,30 +37625,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -37597,7 +37658,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -37608,7 +37669,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -37622,7 +37683,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -37631,14 +37692,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -37651,7 +37712,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -37659,32 +37720,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -37692,13 +37753,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -37708,7 +37769,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -37717,11 +37778,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -37730,138 +37791,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -39049,34 +39110,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -39084,96 +39145,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -41840,20 +41901,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -45782,6 +45843,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -45789,7 +45862,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -45799,13 +45872,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -45819,14 +45892,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -45835,7 +45908,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -45843,7 +45916,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -45859,20 +45932,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -45880,75 +45953,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -45958,7 +46031,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -45968,14 +46041,14 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
@@ -45983,14 +46056,14 @@ msgstr ""
"Aktiviert [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -45998,81 +46071,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -46080,74 +46153,74 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
@@ -46155,38 +46228,38 @@ msgstr ""
"Wenn [code]true[/code], können andere Überwachungsbereiche diesen Bereich "
"erkennen."
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr "Wenn [code]true[/code], ist die Filterung aktiviert."
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -46197,91 +46270,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -46290,13 +46363,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -46306,7 +46379,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -46314,19 +46387,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -46340,45 +46413,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -46387,7 +46460,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -46398,7 +46471,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -46414,14 +46487,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -46429,49 +46502,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -46480,7 +46553,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46488,7 +46561,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46496,7 +46569,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -46506,7 +46579,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -46515,7 +46588,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -46524,7 +46597,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -46534,7 +46607,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46542,7 +46615,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -46552,7 +46625,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -46562,7 +46635,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46570,7 +46643,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -46579,7 +46652,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46587,7 +46660,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -46599,477 +46672,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -47077,92 +47150,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -47172,33 +47245,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47211,7 +47284,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47223,7 +47296,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47235,7 +47308,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47248,7 +47321,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -47256,28 +47329,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -47287,25 +47360,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47318,7 +47391,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47330,7 +47403,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47342,7 +47415,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47355,13 +47428,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -47369,11 +47442,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -47387,7 +47460,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -47396,7 +47469,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -47412,7 +47485,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -47422,7 +47495,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -47432,7 +47505,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -47443,7 +47516,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -47453,7 +47526,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -47461,7 +47534,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -47472,7 +47545,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -47487,7 +47560,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -47496,13 +47569,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -47511,7 +47584,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -47521,7 +47594,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -47533,7 +47606,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -47543,24 +47616,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -47569,7 +47642,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -47577,7 +47650,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -47586,7 +47659,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -47596,7 +47669,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -47604,31 +47677,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -47636,7 +47709,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -47646,14 +47719,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -47661,31 +47734,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -47693,7 +47766,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -47703,7 +47776,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -47712,7 +47785,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -47721,20 +47794,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -47743,7 +47816,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -47751,7 +47824,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -47760,7 +47833,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -47770,20 +47843,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -47792,13 +47865,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -47808,46 +47881,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -47857,7 +47930,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -47869,7 +47942,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -47877,7 +47950,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -47885,7 +47958,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -47894,7 +47967,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -47908,7 +47981,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -47918,7 +47991,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -47927,7 +48000,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -47937,54 +48010,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -47995,61 +48068,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -48058,26 +48142,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -48088,20 +48172,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -48113,52 +48197,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -48166,7 +48250,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -48175,10 +48259,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -48186,10 +48271,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -48197,10 +48283,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -48208,10 +48295,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -48219,10 +48307,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -49066,23 +49155,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/de/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -49091,76 +49184,76 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
#, fuzzy
msgid "Update the probe once on the next frame."
msgstr "Aktualisierung an den Keyframes."
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -50047,121 +50140,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -50169,11 +50266,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -50184,7 +50281,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -50192,7 +50289,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -50204,14 +50301,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -50220,17 +50317,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -50238,36 +50335,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -50275,7 +50372,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -50284,111 +50381,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -50694,14 +50791,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -50714,15 +50814,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -50959,14 +51062,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -50976,14 +51082,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -51593,27 +51702,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -51625,7 +51738,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -51635,7 +51748,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -51651,39 +51764,39 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
@@ -51692,29 +51805,29 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn der Vektor normalisiert ist, andernfalls "
"false."
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -51725,7 +51838,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -51734,30 +51847,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -51765,37 +51878,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -51806,7 +51919,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -51817,7 +51930,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -51827,52 +51940,52 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr "Wenn [code]true[/code], ist die Filterung aktiviert."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
#, fuzzy
msgid "Emitted whenever global menu item is clicked."
msgstr "Gesendet wenn das Rechteck Element geändert wurde."
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -51880,111 +51993,111 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
#, fuzzy
msgid "No stretching."
msgstr "Zuhören stoppen."
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -52012,7 +52125,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -52219,45 +52332,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -54549,32 +54671,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -56889,28 +57014,31 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
@@ -56918,7 +57046,7 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn die Spur bei Index [code]idx[/code] "
"aktiviert ist."
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
#, fuzzy
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
@@ -56927,31 +57055,31 @@ msgstr ""
"Liefert die [Animation] mit dem Schlüssel [code]name[/code] oder [code]null[/"
"code], wenn nicht gefunden."
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
#, fuzzy
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
@@ -56960,7 +57088,7 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn die Spur bei Index [code]idx[/code] "
"aktiviert ist."
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
#, fuzzy
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
@@ -56969,160 +57097,160 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn die Spur bei Index [code]idx[/code] "
"aktiviert ist."
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -57436,62 +57564,65 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
#, fuzzy
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr "Gibt das Unternodemit dem angegebenen [code]Namen[/code] zurück."
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr "Gibt [code]true[/code] zurück, wenn eine \"redo\" Aktion möglich ist."
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr "Gibt [code]true[/code] zurück, wenn eine \"undo\" Aktion möglich ist."
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
@@ -57499,7 +57630,7 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn ein Unternode mit dem angegebenen "
"[code]name[/code] existiert."
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
@@ -57508,7 +57639,7 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn ein Unternode mit dem angegebenen "
"[code]name[/code] existiert."
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
@@ -57517,31 +57648,31 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn ein Unternode mit dem angegebenen "
"[code]name[/code] existiert."
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -57557,311 +57688,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -57937,7 +58068,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -57950,19 +58081,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -57973,7 +58104,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -58859,12 +58990,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
+msgstr ""
+
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -58874,26 +59014,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -59640,16 +59782,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -66314,79 +66463,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr "Synchronisiert Threads."
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -66394,18 +66543,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -66416,28 +66565,28 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Gibt den Sinus des Parameters zurück."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
#, fuzzy
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
@@ -66445,13 +66594,13 @@ msgid ""
msgstr ""
"Gibt die minimale Größe dieses Controls zurück. Siehe [member rect_min_size]."
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
#, fuzzy
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
@@ -66459,106 +66608,106 @@ msgid ""
msgstr ""
"Gibt die minimale Größe dieses Controls zurück. Siehe [member rect_min_size]."
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -66568,25 +66717,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -66597,79 +66746,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Gibt den Arkussinus des Parameters zurück."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -66681,7 +66830,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -66690,31 +66839,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -66723,63 +66872,63 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
#, fuzzy
msgid "Sets the lightmap to use with this instance."
msgstr "Gibt das AnimationNode mit dem gegebenen Namen zurück."
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -66791,7 +66940,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -66803,7 +66952,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -66815,71 +66964,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -66888,19 +67037,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -66910,7 +67059,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -66921,79 +67070,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Gibt die Größe des Arrays zurück."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Gibt den inversen Wert des Parameters zurück."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
"Gibt [code]true[/code] zurück, wenn der Graph das übergebene Node enthält."
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67002,53 +67151,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -67059,102 +67208,102 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
#, fuzzy
msgid "Removes a mesh's surface."
msgstr "Entfernt ein Unternode."
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Gibt den Methodennamen einer Methodenspur zurück."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Gibt den Methodennamen einer Methodenspur zurück."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
#, fuzzy
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr "Gibt den Methodennamen einer Methodenspur zurück."
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -67162,7 +67311,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -67173,69 +67322,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -67250,20 +67399,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -67274,7 +67423,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67285,23 +67434,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -67309,80 +67458,80 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
#, fuzzy
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
@@ -67391,39 +67540,39 @@ msgstr ""
"Wenn der Wert [code]true[/code] ist, dann ist Tranzparenz für den Körper "
"aktiviert. Siehe auch [member blend_mode]."
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67434,59 +67583,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -67494,25 +67643,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -67520,7 +67669,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -67530,30 +67679,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -67562,19 +67711,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -67582,11 +67731,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -67595,47 +67744,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -67644,11 +67793,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -67657,11 +67806,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -67672,15 +67821,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -67689,93 +67838,93 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
#, fuzzy
msgid "Returns a list of all the textures and their information."
msgstr "Gibt die Anzahl der Spuren in der Animation zurück."
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Gibt den Sinus des Parameters zurück."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Gibt die [Texture2D] des angegebenen Rahmens zurück."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Gibt den Rest einer Division zweier Vektoren zurück."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Gibt den gegebenen Übergang zurück."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Gibt den Tangens des Parameters zurück."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Gibt den Rest einer Division zweier Vektoren zurück."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Gibt den Namen der nächsten Animation in der Warteschlange zurück."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
#, fuzzy
msgid "Returns the texture's width."
msgstr "Gibt den gegebenen Übergang zurück."
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
#, fuzzy
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
"Wiederholungs flags für die Textur. Siehe [enum TextureFilter] für Optionen."
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
#, fuzzy
msgid "Sets the texture's path."
msgstr "Der Zeichen-Offset der Textur."
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
#, fuzzy
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
@@ -67784,15 +67933,15 @@ msgstr ""
"Wenn [code]true[/code], wird die Sub-Animation nach Beendigung automatisch "
"neu gestartet."
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -67814,7 +67963,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67823,87 +67972,87 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
#, fuzzy
msgid "Detaches the viewport from the screen."
msgstr "Löscht das übergebene Node aus dem Graphen."
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr "Wenn [code]true[/code], ist die Filterung aktiviert."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr "Wenn [code]true[/code], wird die Textur zentriert."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -67919,24 +68068,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -67946,34 +68095,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -67984,7 +68133,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -67994,209 +68143,209 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr "Wenn [code]true[/code], wird die Textur vertikal gespiegelt."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -68205,673 +68354,673 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
#, fuzzy
msgid "The amount of 2d items in the frame."
msgstr "Gibt die Anzahl der Spuren in der Animation zurück."
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -71191,8 +71340,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -71722,57 +71871,60 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Gibt die [Texture2D] des angegebenen Rahmens zurück."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr "Wenn [code]true[/code], ist die Filterung aktiviert."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
#, fuzzy
msgid "The text displayed in the window's title bar."
msgstr "Der vom Dialog angezeigte Text."
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
#, fuzzy
msgid "The icon for the close button."
msgstr "Linke Maustaste."
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
#, fuzzy
msgid "The color of the title text."
msgstr "Die Farbe des spiegelnden Lichteffekts."
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -72045,6 +72197,25 @@ msgstr ""
"Wenn [code]true[/code], dann werden untergeordnete Nodes sortiert, "
"anderenfalls wird die Sortierung deaktiviert."
+#~ msgid "Returns the label used for built-in text."
+#~ msgstr "Gibt das für den eingebauten Text verwendete Label zurück."
+
+#~ msgid "Returns the OK [Button] instance."
+#~ msgstr "Gibt die Instanz OK [Schaltfläche] zurück."
+
+#~ msgid "Returns the editor's [FileSystemDock] instance."
+#~ msgstr "Gibt die [FileSystemDock]-Instanz des Editors zurück."
+
+#~ msgid "Returns the editor's [EditorInspector] instance."
+#~ msgstr "Gibt die [EditorInspector]-Instanz des Editors zurück."
+
+#~ msgid "Returns the editor's [ScriptEditor] instance."
+#~ msgstr "Gibt die [ScriptEditor]-Instanz des Editors zurück."
+
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Gibt die [Texture2D] des angegebenen Rahmens zurück."
+
#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
diff --git a/doc/translations/el.po b/doc/translations/el.po
index c588e5b842..562bdf1235 100644
--- a/doc/translations/el.po
+++ b/doc/translations/el.po
@@ -3738,20 +3738,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3760,11 +3768,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3778,15 +3786,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6349,13 +6357,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6381,14 +6391,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6526,26 +6538,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6572,14 +6588,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6588,14 +6607,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7196,7 +7218,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9939,7 +9961,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12652,9 +12677,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14479,7 +14503,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14579,84 +14603,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14972,7 +15003,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19600,117 +19635,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19881,7 +19920,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20007,7 +20047,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20185,18 +20226,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20206,119 +20249,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20326,17 +20380,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20666,30 +20720,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20699,22 +20755,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20722,68 +20778,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20791,22 +20847,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20815,26 +20871,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22477,53 +22533,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22531,58 +22595,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22593,19 +22657,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22613,17 +22677,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22631,24 +22695,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22656,21 +22720,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22678,65 +22742,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22746,43 +22810,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23315,20 +23379,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23337,125 +23408,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25131,11 +25202,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25593,7 +25664,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26319,7 +26390,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27102,16 +27173,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27120,11 +27185,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27132,17 +27197,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27161,7 +27226,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27175,30 +27240,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27206,63 +27252,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28089,7 +28135,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29572,171 +29618,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29745,7 +29795,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29754,26 +29804,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29782,108 +29832,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31569,20 +31619,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31595,52 +31648,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31662,100 +31715,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31763,80 +31816,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32119,59 +32172,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32179,34 +32232,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32359,70 +32412,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32539,11 +32596,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32591,53 +32648,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33462,7 +33519,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35351,22 +35408,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35377,7 +35437,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35394,7 +35454,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35405,27 +35465,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35433,7 +35493,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35444,30 +35504,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35477,7 +35537,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35488,7 +35548,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35502,7 +35562,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35511,14 +35571,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35531,7 +35591,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35539,32 +35599,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35572,13 +35632,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35588,7 +35648,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35597,11 +35657,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35610,138 +35670,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36926,34 +36986,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36961,96 +37021,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39673,20 +39733,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43526,6 +43586,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43533,7 +43605,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43543,13 +43615,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43563,14 +43635,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43579,7 +43651,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43587,7 +43659,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43603,20 +43675,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43624,75 +43696,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43702,7 +43774,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43712,27 +43784,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43740,81 +43812,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43822,109 +43894,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43935,91 +44007,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44028,13 +44100,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44044,7 +44116,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44052,19 +44124,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44078,45 +44150,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44125,7 +44197,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44136,7 +44208,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44152,14 +44224,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44167,49 +44239,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44218,7 +44290,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44226,7 +44298,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44234,7 +44306,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44244,7 +44316,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44253,7 +44325,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44262,7 +44334,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44272,7 +44344,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44280,7 +44352,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44290,7 +44362,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44300,7 +44372,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44308,7 +44380,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44317,7 +44389,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44325,7 +44397,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44337,477 +44409,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44815,92 +44887,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44910,33 +44982,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44949,7 +45021,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44961,7 +45033,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44973,7 +45045,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44986,7 +45058,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44994,28 +45066,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45025,25 +45097,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45056,7 +45128,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45068,7 +45140,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45080,7 +45152,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45093,13 +45165,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45107,11 +45179,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45125,7 +45197,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45134,7 +45206,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45150,7 +45222,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45160,7 +45232,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45170,7 +45242,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45181,7 +45253,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45191,7 +45263,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45199,7 +45271,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45210,7 +45282,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45225,7 +45297,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45234,13 +45306,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45249,7 +45321,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45259,7 +45331,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45271,7 +45343,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45281,24 +45353,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45307,7 +45379,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45315,7 +45387,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45324,7 +45396,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45334,7 +45406,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45342,31 +45414,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45374,7 +45446,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45384,14 +45456,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45399,31 +45471,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45431,7 +45503,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45441,7 +45513,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45450,7 +45522,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45459,20 +45531,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45481,7 +45553,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45489,7 +45561,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45498,7 +45570,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45508,20 +45580,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45530,13 +45602,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45546,46 +45618,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45595,7 +45667,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45607,7 +45679,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45615,7 +45687,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45623,7 +45695,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45632,7 +45704,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45646,7 +45718,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45656,7 +45728,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45665,7 +45737,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45675,54 +45747,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45733,61 +45805,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45796,26 +45879,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45826,20 +45909,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45851,52 +45934,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45904,7 +45987,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45913,10 +45996,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45924,10 +46008,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45935,10 +46020,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45946,10 +46032,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45957,10 +46044,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46781,23 +46869,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46806,75 +46898,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47753,121 +47845,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47875,11 +47971,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47890,7 +47986,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47898,7 +47994,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47910,14 +48006,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47926,17 +48022,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47944,36 +48040,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47981,7 +48077,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47990,111 +48086,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48397,14 +48493,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48417,15 +48516,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48662,14 +48764,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48679,14 +48784,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49295,27 +49403,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49327,7 +49439,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49337,7 +49449,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49353,67 +49465,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49424,7 +49536,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49433,30 +49545,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49464,37 +49576,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49505,7 +49617,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49516,7 +49628,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49526,50 +49638,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49577,110 +49689,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49708,7 +49820,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49915,45 +50027,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52219,32 +52340,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54528,228 +54652,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55062,102 +55189,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55173,311 +55303,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55552,7 +55682,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55565,19 +55695,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55588,7 +55718,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56440,12 +56570,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56455,26 +56594,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57218,16 +57359,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63673,79 +63821,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63753,18 +63901,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63775,145 +63923,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63923,25 +64071,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63952,79 +64100,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "ΕπιστÏέφει το τόξο ημιτόνου της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64036,7 +64184,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64045,31 +64193,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64078,62 +64226,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64145,7 +64293,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64157,7 +64305,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64169,71 +64317,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64242,19 +64390,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64264,7 +64412,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64275,77 +64423,77 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "ΕπιστÏέφει την αντίθετη τιμή της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64354,53 +64502,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64411,100 +64559,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "ΕπιστÏέφει την εφαπτομένη της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "ΕπιστÏέφει την αντίθετη τιμή της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64512,7 +64660,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64523,69 +64671,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64600,20 +64748,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64624,7 +64772,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64635,23 +64783,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64659,118 +64807,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64781,59 +64929,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64841,25 +64989,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64867,7 +65015,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64877,30 +65025,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64909,19 +65057,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64929,11 +65077,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64942,47 +65090,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64991,11 +65139,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65004,11 +65152,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65019,15 +65167,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65036,102 +65184,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "ΕπιστÏέφει το υπόλοιπο των 2 διανυσμάτων."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "ΕπιστÏέφει την εφαπτομένη της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "ΕπιστÏέφει την εφαπτομένη της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "ΕπιστÏέφει το υπόλοιπο των 2 διανυσμάτων."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "ΕπιστÏέφει το αντίστÏοφο της τετÏαγωνικής Ïίζας της παÏαμέτÏου."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65153,7 +65301,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65162,84 +65310,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65255,24 +65403,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65282,34 +65430,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65320,7 +65468,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65330,208 +65478,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65540,672 +65688,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68511,8 +68659,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69041,53 +69189,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "ΕπιστÏέφει το συνημίτονο της παÏαμέτÏου."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69358,6 +69509,10 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "ΕπιστÏέφει το συνημίτονο της παÏαμέτÏου."
+
#~ msgid ""
#~ "https://docs.godotengine.org/en/latest/getting_started/step_by_step/"
#~ "animations.html"
diff --git a/doc/translations/es.po b/doc/translations/es.po
index 0a2eebea77..2b509c25cc 100644
--- a/doc/translations/es.po
+++ b/doc/translations/es.po
@@ -4749,14 +4749,22 @@ msgstr ""
"al diálogo y devuelve el botón creado."
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
-msgstr "Devuelve la etiqueta utilizada para el texto interno."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
-msgstr "Devuelve la instancia del [Button] OK."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
@@ -4764,7 +4772,7 @@ msgstr ""
"Registra un [LineEdit] en el diálogo. Cuando se pulsa la tecla intro, el "
"diálogo se acepta."
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4773,11 +4781,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr "El texto se expande automáticamente en el diálogo."
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4802,15 +4810,15 @@ msgstr ""
"propiedad no puede ser usada en [FileDialog] para deshabilitar la ocultación "
"del diálogo cuando se presiona OK."
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr "El texto mostrado en el diálogo."
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr "Se emite cuando se acepta el diálogo, es decir, se pulsa el botón OK."
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
"Se emite cuando se presiona un botón personalizado. Ver [method add_button]."
@@ -8186,13 +8194,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -8218,14 +8228,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -8422,26 +8434,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -8468,14 +8484,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -8484,14 +8503,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -9324,7 +9346,7 @@ msgstr ""
"indices esta emparejado indicando el inicio y final de cada linea."
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr "Representa el tamaño del enum [enum ArrayType]."
@@ -12958,7 +12980,10 @@ msgstr "Amortiguación logarítmica del sonido según la distancia."
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -16477,11 +16502,11 @@ msgid "The color the character will be drawn with."
msgstr "El color con el que se dibujará el carácter."
#: doc/classes/CharFXTransform.xml:31
+#, fuzzy
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
"El tiempo transcurrido desde que el [RichTextLabel] fue añadido al árbol de "
@@ -18793,7 +18818,7 @@ msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
"Devuelve la lista de colores en los preajustes del selector de colores."
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr "El color actualmente seleccionado."
@@ -18909,20 +18934,28 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
-msgstr "Devuelve el [ColorPicker] que este nodo conmuta."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
+#, fuzzy
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
"Devuelve el [PopupPanel] del control que le permite conectarse a las señales "
"popup. Esto le permite manejar los eventos cuando el ColorPicker se muestra "
"u oculta."
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
@@ -18930,30 +18963,30 @@ msgstr ""
"Si [code]true[/code], el canal alfa en el [ColorPicker] visualizado será "
"visible."
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr "Emitido cuando el color cambia."
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
"Se emite cuando se crea el [ColorPicker] (se pulsa el botón por primera vez)."
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr "Emitido cuando el [ColorPicker] está cerrado."
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr "El fondo del rectángulo de vista previa de color en el botón."
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr "[StyleBox] utilizado cuando el [ColorPickerButton] está desactivado."
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
@@ -18963,42 +18996,42 @@ msgstr ""
"sobre el [StyleBox] actual, por lo que al usar [StyleBoxEmpty] sólo se "
"desactivará el efecto visual de enfoque."
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr "[Font] del texto de [ColorPickerButton]."
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr "El [Color] del texto predeterminado para el [ColorPickerButton]."
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
"[Color] del texto utilizado cuando el [ColorPickerButton] está desactivado."
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
"[Color] del texto usado cuando el [ColorpickerButtor] tiene el cursor encima."
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr "[Color] del texto utilizado cuando se pulsa el [ColorPickerButton]."
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr "[StyleBox] usado cuando el [ColorPickerButton] tiene el cursor encima."
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
"El espacio horizontal entre el icono y el texto de [ColorPickerButton]."
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr "[StyleBox] por defecto para el [ColorPickerButton]."
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr "[StyleBox] que se utiliza cuando se pulsa el [ColorPickerButton]."
@@ -19463,8 +19496,12 @@ msgstr ""
"[/codeblock]."
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
-msgstr "Devuelve el botón de cancelación."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
#: doc/classes/Container.xml:4
msgid "Base node for containers."
@@ -25839,12 +25876,14 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr "Elimina todos los filtros excepto el de \"Todos los archivos (*)\"."
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"Devuelve el [code]VBoxContainer[/code] utilizado para mostrar el sistema de "
-"archivos."
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
@@ -25852,7 +25891,7 @@ msgstr ""
"Notifique al [EditorFileDialog] que su visión de los datos ya no es precisa. "
"Actualiza el contenido de la vista en la próxima actualización de la misma."
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
@@ -25861,19 +25900,19 @@ msgstr ""
"incluyendo [code]res://[/code], [code]user://[/code], y el sistema de "
"archivos local."
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr "El directorio actualmente ocupado."
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr "El archivo actualmente seleccionado."
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr "La ruta del sistema de archivos en la barra de direcciones."
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
@@ -25881,7 +25920,7 @@ msgstr ""
"Si [code]true[/code], el [EditorFileDialog] no avisará al usuario antes de "
"sobrescribir los archivos."
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
@@ -25889,12 +25928,12 @@ msgstr ""
"El formato de visualización en el que el [EditorFileDialog] muestra los "
"recursos al usuario."
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
@@ -25902,19 +25941,19 @@ msgstr ""
"Si [code]true[/code], los archivos y directorios ocultos serán visibles en "
"el [EditorFileDialog]."
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr "Emitido cuando se selecciona un directorio."
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr "Emitido cuando se selecciona un archivo."
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr "Emitido cuando se seleccionan varios archivos."
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
@@ -25922,7 +25961,7 @@ msgstr ""
"El [EditorFileDialog] puede seleccionar sólo un archivo. Al aceptar la "
"ventana se abrirá el archivo."
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
@@ -25930,7 +25969,7 @@ msgstr ""
"El [EditorFileDialog] puede seleccionar varios archivos. Al aceptar la "
"ventana se abrirán todos los archivos."
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
@@ -25938,7 +25977,7 @@ msgstr ""
"El [EditorFileDialog] puede seleccionar sólo un directorio. Al aceptar la "
"ventana se abrirá el directorio."
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
@@ -25946,7 +25985,7 @@ msgstr ""
"El [EditorFileDialog] puede seleccionar un archivo o directorio. Aceptando "
"la ventana se abrirá."
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
@@ -25954,29 +25993,29 @@ msgstr ""
"El [EditorFileDialog] puede seleccionar sólo un archivo. Al aceptar la "
"ventana se guardará el archivo."
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
"El [EditorFileDialog] sólo puede ver el contenido del directorio [code]res://"
"[/code]."
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
"El [EditorFileDialog] sólo puede ver el contenido del directorio "
"[code]user://[/code]."
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr "El [EditorFileDialog] puede ver todo el sistema de archivos locales."
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr "El [EditorFileDialog] muestra los recursos como miniaturas."
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
"El [EditorFileDialog] muestra los recursos como una lista de nombres de "
@@ -26181,7 +26220,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -26395,9 +26435,11 @@ msgstr ""
"[code]\"Mesh\"[/code] o [code]\"Animation\"[/code]."
#: doc/classes/EditorImportPlugin.xml:124
+#, fuzzy
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
"Obtiene la extensión utilizada para guardar este recurso en el directorio "
"[code].import[/code]."
@@ -26648,24 +26690,27 @@ msgid "Edits the given [Resource]."
msgstr "Edita el [Resource] dado."
#: doc/classes/EditorInterface.xml:30
+#, fuzzy
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
"Devuelve el contenedor principal de la ventana del editor de Godot. Por "
"ejemplo, puedes usarlo para recuperar el tamaño del contenedor y colocar los "
"controles en consecuencia."
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr "Devuelve la ruta actual que se está viendo en el [FileSystemDock]."
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr "Devuelve la raíz de la escena editada (actual) [Nodo]."
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -26675,36 +26720,45 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr "Devuelve la instancia del editor [EditorSettings]."
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
+#, fuzzy
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
"Devuelve el control del editor principal. Utilízalo como padre para las "
"pantallas principales.\n"
"[b]Nota:[/b] Esto devuelve el control de editor principal que contiene todo "
"el editor, no las vistas 2D o 3D específicamente."
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
-msgstr "Devuelve la instancia del editor [FileSystemDock]."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
-msgstr "Devuelve la instancia del editor [EditorInspector]."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
"Devuelve una [Array] con las rutas de archivo de las escenas abiertas "
"actualmente."
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
@@ -26712,19 +26766,22 @@ msgstr ""
"Devuelve el nombre de la escena que se está reproduciendo. Si no se está "
"reproduciendo ninguna escena, devuelve una string vacía."
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr "Devuelve la instancia del editor [EditorFileSystem]."
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr "Devuelve la instancia del editor [EditorResourcePreview]."
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
-msgstr "Devuelve la instancia del editor [ScriptEditor]."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
@@ -26734,11 +26791,11 @@ msgstr ""
"[FileSystemDock]. Si se selecciona un archivo, su directorio base será "
"devuelto usando el [method String.get_base_dir] en su lugar."
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr "Devuelve la instancia del editor [EditorSelection]."
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
#, fuzzy
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
@@ -26748,7 +26805,7 @@ msgstr ""
"Muestra la propiedad dada en el [code]object[/code] dado en el muelle "
"inspector del editor."
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
@@ -26757,7 +26814,7 @@ msgstr ""
"code] en caso contrario. Las escenas en pausa se consideran como si "
"estuvieran siendo reproducidas."
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
@@ -26765,7 +26822,7 @@ msgstr ""
"Devuelve [code]true[/code] si el [code]plugin[/code] especificado está "
"activado. El nombre del plugin es el mismo que su nombre de directorio."
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
#, fuzzy
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
@@ -26773,27 +26830,27 @@ msgstr ""
"Devuelve las previsualizaciones de la malla renderizadas al tamaño dado como "
"una [Array] de [Texture2D]."
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr "Abre la escena en de la ruta dada."
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr "Reproduce la escena actualmente activa."
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr "Reproduce la escena especificada por su ruta de acceso."
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr "Reproduce la escena principal."
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr "Recarga la escena de la ruta dada."
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
@@ -26801,11 +26858,11 @@ msgstr ""
"Guarda la escena. Devuelve [code]OK[/code] o [code]ERR_CANT_CREATE[/code] "
"(ver las constantes de [@GlobalScope])."
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr "Guarda la escena como un archivo en [code]path[/code]."
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
@@ -26813,7 +26870,7 @@ msgstr ""
"Selecciona el archivo, con la ruta proporcionada por [code]file[/code], en "
"el dock de archivos del sistema."
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -26825,7 +26882,7 @@ msgstr ""
"de la pestaña en cuestión ([code]2D[/code], [code]3D[/code], [code]Script[/"
"code], [code]AssetLib[/code])."
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
@@ -26833,11 +26890,11 @@ msgstr ""
"Establece el estado habilitado de un plugin. El nombre del plugin es el "
"mismo que su nombre de directorio."
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr "Detiene la escena que se está reproduciendo actualmente."
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -27296,14 +27353,17 @@ msgstr ""
"\"AssetLib\"."
#: doc/classes/EditorPlugin.xml:305
+#, fuzzy
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
"Hace que el diálogo del editor se use para hacer los guiones.\n"
"[b]Nota:[/b] Los usuarios pueden configurarlo antes de su uso."
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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 "
@@ -27313,7 +27373,7 @@ msgstr ""
"(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:318
+#: doc/classes/EditorPlugin.xml:319
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."
@@ -27322,7 +27382,7 @@ msgstr ""
"pueden deshacerse, así que usa este objeto para asegurarte de que esto "
"ocurra cuando valga la pena."
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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 "
@@ -27333,7 +27393,7 @@ msgstr ""
"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:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -27348,7 +27408,7 @@ msgstr ""
"las solicite. Si has declarado los métodos [method forward_canvas_gui_input] "
"y [method forward_spatial_gui_input] estos serán llamados también."
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
@@ -27358,16 +27418,16 @@ msgstr ""
"principal (va en el selector de espacio de trabajo junto con [b]2D[/b], "
"[b]3D[/b], [b]Script[/b] y [b]AssetLib[/b])."
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
#, fuzzy
msgid "Makes a specific item in the bottom panel visible."
msgstr "Guarda un tipo de recurso específico en un archivo."
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -27379,15 +27439,15 @@ msgstr ""
"Recuerda que tienes que gestionar la visibilidad de todos los controles del "
"editor de forma manual."
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr "La cola guarda el diseño del editor del proyecto."
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr "Elimina un Autoload [code]name[/code] de la lista."
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
@@ -27395,7 +27455,7 @@ msgstr ""
"Quita el control del panel inferior. Tienes que manualmente [method Node."
"queue_free] el control."
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
@@ -27403,7 +27463,7 @@ msgstr ""
"Retira el control del contenedor especificado. Tienes que hacer manualmente "
"[method Node.queue_free] el control."
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
@@ -27411,41 +27471,41 @@ msgstr ""
"Quita el control del dock. Tienes que manualmente [method Node.queue_free] "
"el control."
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr "Elimina un tipo personalizado añadido por [method add_custom_type]."
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
#, fuzzy
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr "Elimina un tipo personalizado añadido por [method add_custom_type]."
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
#, fuzzy
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr "Elimina un tipo personalizado añadido por [method add_custom_type]."
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
#, fuzzy
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr "Elimina un tipo personalizado añadido por [method add_custom_type]."
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
#, fuzzy
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr "Elimina un tipo personalizado añadido por [method add_custom_type]."
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
#, fuzzy
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr "Elimina un tipo personalizado añadido por [method add_custom_type]."
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr "Elimina un menú [code]name[/code] de [b]Proyecto > Herramientas[/b]."
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
@@ -27453,7 +27513,7 @@ msgstr ""
"Este método se llama después de que el editor guarda el proyecto o cuando se "
"cierra. Le pide al plugin que guarde las escenas/recursos externos editados."
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -27461,7 +27521,7 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
@@ -27471,16 +27531,16 @@ msgstr ""
"vista 3D dentro de [method forward_spatial_gui_input]. Puede ser "
"especialmente útil si tu plugin quiere usar raycast en la escena."
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr "Restaurar el estado guardado por [method get_state]."
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
"Restaurar el diseño del plugin GUI guardado por [method get_window_layout]."
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -27489,7 +27549,7 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
@@ -27498,7 +27558,7 @@ msgstr ""
"b], [b]Script[/b], [b]AssetLib[/b]). También funciona con pantallas "
"personalizadas definidas por plugins."
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
@@ -27508,7 +27568,7 @@ msgstr ""
"nodo raíz de la escena que se acaba de activar. Si esta escena es nueva y "
"está vacía, el argumento será [code]null[/code]."
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
@@ -27516,7 +27576,7 @@ msgstr ""
"Emitido cuando el usuario cierra una escena. El argumento es la ruta de "
"archivo a una escena cerrada."
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr "Representa el tamaño del enum [enum DockSlot]."
@@ -29815,13 +29875,21 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
"La intensidad del brillo. Cuando se utiliza el renderizador GLES2, debe "
"aumentarse a 1,5 para compensar la falta de renderización HDR."
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
@@ -29829,27 +29897,27 @@ msgstr ""
"Si [code]true[/code], el 1er nivel de brillo está activado. Este es el nivel "
"más \"local\" (menos borroso)."
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr "Si [code]true[/code], se activa el 2º nivel de brillo."
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr "Si [code]true[/code], se activa el 3º nivel de brillo."
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr "Si [code]true[/code], se activa el 4º nivel de brillo."
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr "Si [code]true[/code], el 5º nivel de brillo está activado."
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr "Si [code]true[/code], el 6º nivel de brillo está activado."
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
@@ -29857,7 +29925,7 @@ msgstr ""
"Si [code]true[/code], el 7º nivel de brillo está activado. Este es el nivel "
"más \"global\" (más borroso)."
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
@@ -29865,12 +29933,12 @@ msgstr ""
"La fuerza del brillo. Cuando se utiliza el renderizador GLES2, debe "
"aumentarse a 1,3 para compensar la falta de renderización HDR."
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
"La tolerancia de profundidad para los reflejos del espacio de la pantalla."
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -29882,7 +29950,7 @@ msgstr ""
"[GIProbe]s o [ReflectionProbe]s, pero son más lentos y no pueden reflejar "
"superficies ocluidas por otros."
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
@@ -29891,7 +29959,7 @@ msgstr ""
"pantalla. afecta al área desde el material reflejado hasta el reflejo del "
"espacio de la pantalla)."
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
@@ -29900,7 +29968,7 @@ msgstr ""
"pantalla. afecta al área que va desde el reflejo del espacio de la pantalla "
"hasta el reflejo \"global\"."
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
@@ -29908,14 +29976,14 @@ msgstr ""
"El número máximo de pasos para los reflejos en el espacio de la pantalla. "
"Los valores más altos son más lentos."
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
#, fuzzy
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr "Si [code]true[/code], la consulta tendrá en cuenta las [Area2D]s."
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
@@ -29926,7 +29994,7 @@ msgstr ""
"[code]0[/code] harán visible el efecto SSAO en las áreas oscurecidas por las "
"texturas de AO."
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
@@ -29935,7 +30003,7 @@ msgstr ""
"lo suficientemente alto para evitar que las curvas \"suaves\" se vean "
"afectadas por la oclusión ambiental."
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
@@ -29943,16 +30011,16 @@ msgstr ""
"La calidad de la difusión de la oclusión ambiental del espacio de la "
"pantalla. Ver [enum SSAOBlur] para los posibles valores."
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
#, fuzzy
msgid "The screen-space ambient occlusion color."
msgstr "La nitidez del borde de oclusión ambiental del espacio de la pantalla."
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr "La nitidez del borde de oclusión ambiental del espacio de la pantalla."
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -29971,7 +30039,7 @@ msgstr ""
"costoso y debe ser desactivado primero cuando se presenten problemas de "
"rendimiento."
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
@@ -29979,7 +30047,7 @@ msgstr ""
"La intensidad de oclusión ambiental del espacio de pantalla principal. Véase "
"también [member ssao_radius]."
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
#, fuzzy
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
@@ -29988,7 +30056,7 @@ msgstr ""
"La intensidad de oclusión ambiental del espacio de pantalla principal. Véase "
"también [member ssao_radius]."
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -30001,17 +30069,17 @@ msgstr ""
"directa. Los valores superiores a [code]0[/code] harán que el efecto SSAO "
"sea visible en luz directa."
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr "El radio de oclusión ambiental del espacio de pantalla principal."
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -30019,11 +30087,11 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr "La exposición predeterminada que se utiliza para el mapeo de tonos."
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
@@ -30034,7 +30102,7 @@ msgstr ""
"en una pantalla LDR. (Godot todavía no soporta la renderización en pantallas "
"HDR.)"
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
@@ -30042,7 +30110,7 @@ msgstr ""
"El valor de referencia del blanco para el mapa de tonos. Sólo es efectivo si "
"el [member tonemap_mode] no se establece en [constant TONE_MAPPER_LINEAR]."
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -30055,7 +30123,7 @@ msgstr ""
"una escena en la que el fondo es visible, los artefactos de \"rastro fantasma"
"\" serán visibles al mover la cámara."
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
@@ -30063,15 +30131,15 @@ msgstr ""
"Borra el fondo usando el color claro definido en [member ProjectSettings."
"rendering/environment/default_clear_color]."
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr "Despeja el fondo usando un color claro personalizado."
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr "Muestra un cielo definido por el usuario en el fondo."
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -30079,19 +30147,19 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr "Muestra una [CanvasLayer] en el fondo."
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr "Muestra un feed de una cámara en el fondo."
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr "Representa el tamaño del enum [enum BGMode]."
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
@@ -30099,14 +30167,14 @@ msgstr ""
"Modo de mezcla de brillo aditivo. Se utiliza principalmente para partículas, "
"brillos (florecimiento), destellos de lentes, fuentes brillantes."
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
"Modo de mezcla de brillo de pantalla. Aumenta el brillo, se usa "
"frecuentemente con el bloom."
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
@@ -30114,7 +30182,7 @@ msgstr ""
"Modo de mezcla de brillo de luz suave. Modifica el contraste, expone sombras "
"y luces (bloom vivo)."
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
@@ -30125,7 +30193,7 @@ msgstr ""
"desenfoque en pantalla completa ajustando los parámetros de brillo para que "
"coincidan con el brillo de la imagen original."
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
@@ -30133,7 +30201,7 @@ msgstr ""
"Operador lineal de mapas de tonos. Lee los datos lineales y los transmite "
"sin modificar."
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
@@ -30142,18 +30210,18 @@ msgstr ""
"de los píxeles renderizados por esta fórmula: [code]color = color / (1 + "
"color)[/code]."
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr "Operador de mazos fílmicos."
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
#, fuzzy
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr "Operador del Sistema de Codificación de Color de la Academia."
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -30163,58 +30231,58 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
"No hay desenfoque para el efecto de oclusión ambiental del espacio de la "
"pantalla (más rápido)."
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur 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:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
"Desenfoque de 2×2 para el efecto de oclusión ambiental del espacio de la "
"pantalla."
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
#, fuzzy
msgid "3×3 blur 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)."
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
#, fuzzy
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
"No hay desenfoque para el efecto de oclusión ambiental del espacio de la "
"pantalla (más rápido)."
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
#, fuzzy
msgid "Low 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:373
+#: doc/classes/Environment.xml:376
#, fuzzy
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -30939,22 +31007,27 @@ msgid "Clear currently selected items in the dialog."
msgstr "Borra los elementos actualmente seleccionados en el diálogo."
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
-msgstr "Devuelve el LineEdit del archivo seleccionado."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"Devuelve el contenedor de la caja vertical del diálogo, se le pueden añadir "
-"controles personalizados."
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr "Invalida y actualiza la lista de contenido del diálogo actual."
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -30963,19 +31036,19 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr "El directorio de trabajo actual del diálogo de archivos."
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr "El archivo actualmente seleccionado del diálogo de archivos."
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr "La ruta de archivo actualmente seleccionada del diálogo de archivo."
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
#, fuzzy
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
@@ -30987,7 +31060,7 @@ msgstr ""
"[code]set_filters(PackedStringArray([\"*.png ; Imágenes PNG\", \"*.gd ; "
"Archivos GDScript\"]))[/code]."
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
#, fuzzy
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
@@ -30996,7 +31069,7 @@ msgstr ""
"El diálogo está en modo abierto o guardado, lo que afecta al comportamiento "
"de la selección. Ver [enum FileMode]."
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
#, fuzzy
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
@@ -31008,15 +31081,15 @@ msgstr ""
"[constant FILE_MODE_OPEN_FILE] se cambiará el título de la ventana a \"Open "
"a File\")."
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr "Si [code]true[/code], el diálogo mostrará los archivos ocultos."
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr "Emitido cuando el usuario selecciona un directorio."
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
@@ -31024,19 +31097,19 @@ msgstr ""
"Se emite cuando el usuario selecciona un archivo haciendo doble clic en él o "
"pulsando el botón [b]OK[/b]."
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr "Emitido cuando el usuario selecciona varios archivos."
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr "El diálogo permite seleccionar uno, y sólo un archivo."
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr "El diálogo permite seleccionar varios archivos."
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
@@ -31044,15 +31117,15 @@ msgstr ""
"El diálogo sólo permite seleccionar un directorio, no permitiendo la "
"selección de ningún archivo."
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr "El diálogo permite seleccionar un archivo o directorio."
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr "El diálogo avisará cuando exista un archivo."
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
@@ -31060,7 +31133,7 @@ msgstr ""
"El diálogo sólo permite acceder a los archivos bajo la ruta [Resource] "
"([code]res://[/code])."
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
@@ -31068,20 +31141,20 @@ msgstr ""
"El diálogo sólo permite acceder a los archivos bajo la ruta de datos del "
"usuario ([code]user://[/code])."
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
"El diálogo permite acceder a los archivos de todo el sistema de archivos."
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr "Icono personalizado para los archivos."
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr "La modulación del color aplicada al icono del archivo."
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
@@ -31089,23 +31162,23 @@ msgstr ""
"El tinte de color para los archivos desactivados (cuando se utiliza "
"[FileDialog] en el modo de carpeta abierta)."
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr "Icono personalizado para las carpetas."
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr "La modulación del color aplicada al icono de la carpeta."
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr "Icono personalizado para la flecha de la carpeta principal."
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr "Icono personalizado para el botón de recarga."
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr "Icono personalizado para el botón oculto de commutación."
@@ -33374,11 +33447,11 @@ msgstr ""
#, fuzzy
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
"Tiene el [HBoxContainer] que contiene los controles de zoom y de cuadrícula "
"en la parte superior izquierda del gráfico.\n"
@@ -33974,7 +34047,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr "La modulación de color aplicada al icono del botón de cierre."
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr "El desplazamiento vertical del botón de cierre."
@@ -34895,7 +34968,7 @@ msgstr ""
"https://docs.godotengine.org/es/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -36006,13 +36079,7 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
"Un nodo con la capacidad de enviar peticiones HTTP. Utiliza [HTTPClient] "
"internamente.\n"
@@ -36092,7 +36159,7 @@ msgstr ""
"modificar su backend para permitir las solicitudes de orígenes extranjeros "
"añadiendo el [code]Access-Control-Allow-Origin: *[/code] encabezado HTTP."
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -36101,11 +36168,11 @@ msgstr ""
"https://docs.godotengine.org/es/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr "Cancela la solicitud actual."
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -36118,11 +36185,11 @@ msgstr ""
"codificación de transferencia de trozos, la longitud del cuerpo también será "
"[code]-1[/code]."
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr "Devuelve la cantidad de bytes que esta HTTPRequest ha descargado."
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
@@ -36130,7 +36197,7 @@ msgstr ""
"Devuelve el estado actual del [HTTPClient] subyacente. Véase [enumerar el "
"HTTPClient.Status]."
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
#, fuzzy
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
@@ -36159,7 +36226,7 @@ msgstr ""
"válido, o [constanteERR_CANT_CONNECT] si no está usando el hilo y el "
"[HTTPClient] no puede conectarse al host."
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
#, fuzzy
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
@@ -36183,30 +36250,11 @@ msgstr ""
"válido, o [constanteERR_CANT_CONNECT] si no está usando el hilo y el "
"[HTTPClient] no puede conectarse al host."
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
+msgstr "Tamaño máximo permitido para los cuerpos de la respuesta."
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
#, fuzzy
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
@@ -36219,67 +36267,67 @@ msgstr ""
"Ponga este valor más alto (por ejemplo, 65536 para 64 KiB) cuando descargue "
"archivos grandes para lograr mejores velocidades a costa de la memoria."
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
"El archivo para descargar. dará salida a cualquier archivo recibido en él."
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr "Número máximo de redirecciones permitidas."
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
"Si [code]true[/code], se utiliza el multihilo para mejorar el rendimiento."
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr "Emitido cuando se completa una solicitud."
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr "Solicitud con éxito."
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr "La solicitud falló mientras se conectaba."
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr "La solicitud falló al resolverse."
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr "La solicitud falló debido a un error de conexión (lectura/escritura)."
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr "La solicitud falló en el handshake del SSL."
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr "La solicitud no tiene respuesta (todavía)."
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
"La solicitud excedió su límite de tamaño máximo, ver [member "
"body_size_limit]."
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr "Solicitud fallida (actualmente no utilizada)."
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr "HTTPRequest no pudo abrir el archivo descargado."
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr "HTTPRequest no pudo escribir el archivo descargado."
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
"La solicitud alcanzó su límite máximo de redireccionamiento, ver [member "
@@ -37388,7 +37436,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
#, fuzzy
msgid "Resizes the texture to the specified dimensions."
msgstr "Redimensiona el [ImageTexture] a las dimensiones especificadas."
@@ -39391,21 +39439,25 @@ msgid "Returns an array with the indexes of the selected items."
msgstr "Devuelve un array con los índices de los elementos seleccionados."
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
-msgstr "Devuelve el ID de [Object] asociado a la lista."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr "Devuelve [code]true[/code] si se seleccionan uno o más elementos."
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
"Devuelve [code]true[/code] si el elemento del índice especificado está "
"desactivado."
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
@@ -39413,21 +39465,21 @@ msgstr ""
"Devuelve [code]true[/code] si el icono del elemento se dibujará transpuesto, "
"es decir, los ejes X e Y se intercambian."
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
"Devuelve [code]true[/code] si el elemento en el índice especificado es "
"seleccionable."
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
"Devuelve [code]true[/code] si la sugerencia está habilitada para el índice "
"del artículo especificado."
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
@@ -39435,17 +39487,17 @@ msgstr ""
"Devuelve [code]true[/code] si el elemento del índice especificado está "
"actualmente seleccionado."
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
"Mueve el elemento del índice [code]from_idx[/code] a [code]to_idx[/code]."
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
"Elimina de la lista el elemento especificado por el índice [code]idx[/code]."
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
@@ -39453,7 +39505,7 @@ msgstr ""
"Seleccione el elemento en el índice especificado.\n"
"[b]Nota:[/b] Este método no dispara la señal de selección del elemento."
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
#, fuzzy
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
@@ -39462,7 +39514,7 @@ msgstr ""
"Devuelve el color de fondo personalizado del elemento especificado por el "
"índice [code]idx[/code]."
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
#, fuzzy
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
@@ -39471,7 +39523,7 @@ msgstr ""
"Devuelve el color de primer plano personalizado del artículo especificado "
"por el índice [code]idx[/code]."
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
#, fuzzy
msgid ""
"Disables (or enables) the item at the specified index.\n"
@@ -39482,20 +39534,20 @@ msgstr ""
"Los elementos desactivados no pueden seleccionarse y no activan las señales "
"de activación (cuando se hace doble clic o se pulsa [kbd]Enter[/kbd])."
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
#, fuzzy
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
"Establece (o reemplaza) el icono [Texture2D] asociado al índice especificado."
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
"Establece un [Color] modulador del elemento asociado al índice especificado."
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
@@ -39503,11 +39555,11 @@ msgstr ""
"Establece la región del icono del elemento utilizado. El icono completo se "
"utilizará si la región no tiene área."
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr "Establece si el icono del elemento se dibujará transpuesto."
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
@@ -39515,55 +39567,55 @@ msgstr ""
"Establece un valor (de cualquier tipo) que se almacenará con el elemento "
"asociado al índice especificado."
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
"Permite o no la selección del elemento asociado al índice especificado."
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr "Establece el texto del elemento asociado con el índice especificado."
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
"Establece la sugerencia para el elemento asociado con el índice especificado."
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
"Establece si la sugerencia está habilitada para el índice de elementos "
"especificados."
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr "Ordena los elementos de la lista por su texto."
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
"Asegura que no se seleccione el elemento asociado al índice especificado."
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr "Se asegura de que no haya elementos seleccionados."
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
"Si [code]true[/code], el elemento actualmente seleccionado puede ser "
"seleccionado de nuevo."
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
"Si [code]true[/code], al hacer clic con el botón derecho del ratón se pueden "
"seleccionar elementos."
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
@@ -39571,7 +39623,7 @@ msgstr ""
"Si [code]true[/code], el control redimensionará automáticamente la altura "
"para que se ajuste a su contenido."
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
@@ -39581,7 +39633,7 @@ msgstr ""
"Un valor de cero desactiva el ajuste, cada elemento tendrá una anchura igual "
"a la de su contenido y las columnas tendrán una anchura desigual."
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
@@ -39591,7 +39643,7 @@ msgstr ""
"Si el componente X o Y no es mayor que cero, el tamaño del icono no se verá "
"afectado."
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
@@ -39599,7 +39651,7 @@ msgstr ""
"La posición del icono, ya sea arriba o a la izquierda del texto. Vea las "
"constantes [enum IconMode]."
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
@@ -39607,7 +39659,7 @@ msgstr ""
"La escala de icono aplicada después de [member fixed_icon_size] y la "
"transposición tiene efecto."
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -39621,7 +39673,7 @@ msgstr ""
"Un valor de cero significa que las columnas son ilimitadas, es decir, que "
"todos los artículos se pondrán en la misma fila."
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -39635,7 +39687,7 @@ msgstr ""
"[constant ICON_MODE_TOP]. Para hacer la envoltura de texto, [member "
"fixed_column_width] debe ser mayor que cero."
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
@@ -39644,7 +39696,7 @@ msgstr ""
"Si todas las columnas tendrán el mismo ancho.\n"
"Si [code]true[/code], el ancho es igual al mayor ancho de todas las columnas."
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
@@ -39652,7 +39704,7 @@ msgstr ""
"Permite la selección de uno o varios elementos. Vea las constantes [enum "
"SelectMode]."
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
#, fuzzy
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
@@ -39661,7 +39713,7 @@ msgstr ""
"Se activa cuando el elemento de la lista especificado se activa haciendo "
"doble clic o pulsando [kbd]Enter[/kbd]."
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -39675,7 +39727,7 @@ msgstr ""
"menús contextuales apropiados en la ubicación correcta.\n"
"La opción [member allow_rmb_select] debe estar activada."
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
@@ -39684,7 +39736,7 @@ msgstr ""
"Para poder volver a seleccionar un elemento, se debe activar la opción "
"[member allow_reselect]."
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
@@ -39692,7 +39744,7 @@ msgstr ""
"Se activa cuando se altera una selección múltiple en una lista que permite "
"la selección múltiple."
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
@@ -39700,7 +39752,7 @@ msgstr ""
"Se activa cuando se hace un clic con el botón izquierdo del ratón dentro del "
"rectángulo de la lista pero en el espacio vacío."
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
@@ -39710,26 +39762,26 @@ msgstr ""
"rectángulo de la lista pero en el espacio vacío.\n"
"[member allow_rmb_select] debe estar activado."
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr "El icono se dibuja sobre el texto."
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr "El icono se dibuja a la izquierda del texto."
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr "Sólo permite seleccionar un único elemento."
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
#, fuzzy
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
"Permite seleccionar varios elementos manteniendo pulsada la tecla [kbd]Ctrl[/"
"kbd] o [kbd]Shift[/kbd]."
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
@@ -39737,35 +39789,35 @@ msgstr ""
"Por defecto, [StyleBox] para la [ItemList], es decir, se utiliza cuando el "
"control no está siendo enfocado."
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr "[StyleBox] que se usa cuando se enfoca la [ItemList]."
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
"[StyleBox] usado para el cursor, cuando el [ItemList] está siendo enfocado."
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
"[StyleBox] usado para el cursor, cuando el [ItemList] no está siendo "
"enfocado."
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr "[Font] del texto del elemento."
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr "[Color] del texto predeterminado del elemento."
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr "[Color] del texto utilizado cuando se selecciona el elemento."
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
@@ -39773,19 +39825,19 @@ msgstr ""
"[Color] de la pauta. La pauta es una línea trazada entre cada fila de "
"elementos."
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr "El espacio horizontal entre los elementos."
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr "El espacio entre el icono del elemento y el texto."
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr "El espacio vertical entre cada línea de texto."
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
@@ -39793,14 +39845,14 @@ msgstr ""
"[StyleBox] para los elementos seleccionados, utilizado cuando la [ItemList] "
"no está siendo enfocada."
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
"[StyleBox] para los elementos seleccionados, que se utiliza cuando se enfoca "
"la [ItemList]."
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr "El espacio vertical entre los artículos."
@@ -42034,24 +42086,24 @@ msgstr "Borra la selección actual."
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"Devuelve el [PopupMenu] de este [LineEdit]. Por defecto, este menú se "
-"visualiza cuando se hace clic con el botón derecho del ratón en la "
-"[LineEdit]."
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
"Ejecuta una acción determinada según se define en el enum [enum MenuItems]."
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -42073,23 +42125,23 @@ msgstr ""
"select(2, 5) # Seleccionará \"env\".\n"
"[/codeblock]"
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr "Selecciona toda la [String]."
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr "Alineación del texto como se define en el enum [enum Align]."
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr "Si [code]true[/code], el caret (cursor visual) parpadea."
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr "Duración (en segundos) del ciclo de parpadeo de un caret."
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
@@ -42097,7 +42149,7 @@ msgstr ""
"La posición del cursor dentro de la [LineEdit]. Cuando se ajusta, el texto "
"puede desplazarse para acomodarlo."
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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."
@@ -42106,13 +42158,13 @@ msgstr ""
"[code]text[/code] no está vacío, que puede utilizarse para borrar el texto "
"rápidamente."
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
"Si [code]true[/code], el menú contextual aparecerá al hacer clic con el "
"botón derecho del ratón."
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
@@ -42120,7 +42172,7 @@ msgstr ""
"Si [code]false[/code], el texto existente no puede ser modificado y no se "
"puede añadir un nuevo texto."
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
@@ -42130,7 +42182,7 @@ msgstr ""
"tiempo que el [member text].[b]No[/b] se comprimirá si el [member text] se "
"acorta."
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -42152,14 +42204,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
"Opacidad del [member placeholder_text]. De [code]0[/code] a [code]1[/code]."
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
@@ -42167,7 +42219,7 @@ msgstr ""
"El texto se muestra cuando la [LineEdit] está vacía. Es [b]no[/b] el valor "
"por defecto de [LineEdit] (véase el [member text])."
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
@@ -42177,7 +42229,7 @@ msgstr ""
"no hay [member text], o siempre, si [member clear_button_enabled] está "
"establecido en [code]false[/code]."
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
@@ -42185,7 +42237,7 @@ msgstr ""
"Si [code]true[/code], cada carácter se sustituye por el carácter secreto "
"(véase [member secret_character])."
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
@@ -42193,7 +42245,7 @@ msgstr ""
"El carácter que se usará para enmascarar la entrada secreta (por defecto es "
"\"*\"). Sólo se puede utilizar un único carácter como el carácter secreto."
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
@@ -42201,11 +42253,11 @@ msgstr ""
"Si [code]false[/code], es imposible seleccionar el texto usando el ratón o "
"el teclado."
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr "Si [code]false[/code], el uso de atajos se desactivará."
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
@@ -42215,7 +42267,7 @@ msgstr ""
"[b]Nota:[/b] Cambiar el texto usando esta propiedad no emitirá la señal "
"[signal text_changed]."
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
@@ -42223,48 +42275,48 @@ msgstr ""
"Si [code]true[/code], el teclado virtual nativo se muestra cuando se enfoca "
"en plataformas que lo soportan."
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr "Emitido cuando el texto cambia."
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
"Emitido cuando el usuario presiona [constant KEY_ENTER] en la [LineEdit]."
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr "Alinea el texto en el lado izquierdo de la [LineEdit]."
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr "Centra el texto en el centro de la [LineEdit]."
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr "Alinea el texto en el lado derecho de la [LineEdit]."
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
"Estira los espacios en blanco para que se ajusten al ancho de la [LineEdit]."
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr "Corta (copia y borra) el texto seleccionado."
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr "Copia el texto seleccionado."
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -42277,68 +42329,68 @@ msgstr ""
"portapapeles del sistema operativo a través del [method String."
"strip_escapes]."
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr "Borra todo el texto [LineEdit]."
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr "Selecciona todo el texto [LineEdit]."
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr "Deshace la acción anterior."
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr "Invierte la última acción de deshacer."
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr "Representa el tamaño del enum [enum MenuItems]."
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
"La textura para el botón de despejar. Ver [member clear_button_enabled]."
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr "Color utilizado como tinte predeterminado para el botón de despejar."
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr "Color usado para el botón de borrado cuando se presiona."
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr "Color del cursor visual (caret) de la [LineEdit]."
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
"Fondo utilizado cuando [LineEdit] tiene el enfoque de la interfaz gráfica de "
"usuario(GUI)."
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr "Fuente usada para el texto."
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr "Color de fuente predeterminado."
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
"Color de fuente para el texto seleccionado (dentro del rectángulo de "
"selección)."
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr "El color de la fuente cuando la edición está desactivada."
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
@@ -42349,11 +42401,11 @@ msgstr ""
"espacio (es decir, esta cantidad de caracteres de espacio pueden ser "
"mostrados sin desplazamiento)."
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr "Fondo predeterminado para la [LineEdit]."
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
@@ -42361,7 +42413,7 @@ msgstr ""
"Fondo utilizado cuando [LineEdit] está en modo de sólo lectura ([member "
"editable] está configurado como [code]false[/code])."
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr "Color del rectángulo de selección."
@@ -42754,7 +42806,7 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr "Emitido cuando un usuario responde a una solicitud de permiso."
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
@@ -42763,7 +42815,7 @@ msgstr ""
"ventana del juego.\n"
"Implementado en plataformas de escritorio y web."
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
@@ -42772,7 +42824,7 @@ msgstr ""
"ventana del juego.\n"
"Implementado en plataformas de escritorio y web."
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
@@ -42781,7 +42833,7 @@ msgstr ""
"enfocada.\n"
"Implementado en todas las plataformas."
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
@@ -42790,7 +42842,7 @@ msgstr ""
"desenfocada.\n"
"Implementado en todas las plataformas."
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
#, fuzzy
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
@@ -42802,7 +42854,7 @@ msgstr ""
"[kbd]Alt + F4[/kbd]).\n"
"Implementado en plataformas de escritorio."
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
@@ -42812,7 +42864,7 @@ msgstr ""
"retroceso (por ejemplo, pulsando el botón \"Back\" en Android).\n"
"Específico de la plataforma Android."
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
#, fuzzy
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
@@ -42824,7 +42876,7 @@ msgstr ""
"[kbd]Alt + F4[/kbd]).\n"
"Implementado en plataformas de escritorio."
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
@@ -42834,7 +42886,7 @@ msgstr ""
"memoria asignada.\n"
"Específico de la plataforma iOS."
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -42847,7 +42899,7 @@ msgstr ""
"la interfaz de usuario sobre la marcha. Útil cuando se trabaja con el "
"soporte de traducción incorporado, como [method Object.tr]."
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
@@ -42857,7 +42909,7 @@ msgstr ""
"información \"Acerca de\".\n"
"Específico de la plataforma MacOS."
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
@@ -42868,7 +42920,7 @@ msgstr ""
"Implementado en las plataformas de escritorio si el manejador de fallos está "
"habilitado."
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
@@ -42879,7 +42931,7 @@ msgstr ""
"posición del cursor de la IME o de la string de composición).\n"
"Específico de la plataforma MacOS."
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
#, fuzzy
msgid ""
"Notification received from the OS when the app is resumed.\n"
@@ -42889,7 +42941,7 @@ msgstr ""
"aplicación.\n"
"Específica de la plataforma Android."
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
#, fuzzy
msgid ""
"Notification received from the OS when the app is paused.\n"
@@ -43118,10 +43170,14 @@ msgstr ""
"ítem nuevas propiedades."
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
-msgstr "Devuelve el [PopupMenu] contenido en este botón."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
@@ -43129,7 +43185,7 @@ msgstr ""
"Si [code]true[/code], los atajos están desactivados y no se pueden utilizar "
"para activar el botón."
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
@@ -43139,17 +43195,17 @@ msgstr ""
"dentro del mismo padre que también tenga activado [code]switch_on_hover[/"
"code], cerrará el [MenuButton] actual y abrirá el otro."
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
#, fuzzy
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
"Emitido cuando el [PopupMenu] de este MenuButton está a punto de aparecer."
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr "[StyleBox] utilizado cuando el [MenuButton] está desactivado."
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
@@ -43159,40 +43215,40 @@ msgstr ""
"[StyleBox] actual, por lo que al usar [StyleBoxEmpty] sólo se desactivará el "
"efecto visual de enfoque."
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr "[Font] del texto del [MenuButton]."
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr "[Color] del Texto predeterminado del [MenuButton]."
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr "[Color] del texto utilizado cuando el [MenuButton] está desactivado."
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr "[Color] del texto usado cuando el puntero esta sobre el [MenuButton]."
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr "[Color] del texto utilizado cuando se pulsa el [MenuButton]."
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
"[StyleBox] usado cuando el puntero del ratón esta sobre el [MenuButton]."
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr "El espacio horizontal entre el icono y el texto de [MenuButton]."
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr "[StyleBox] por defecto para el [MenuButton]."
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr "[StyleBox] que se utiliza cuando se pulsa el [MenuButton]."
@@ -43336,11 +43392,11 @@ msgstr "Renderizar un array como tiras de triángulo."
msgid "Render array as triangle fans."
msgstr "Renderizar un array como tiras de triángulo."
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr "Las formas de la mezcla se normalizan."
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr "Las formas de la mezcla son relativas al peso base."
@@ -43390,28 +43446,28 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
#, fuzzy
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr "Flag utilizada para marcar un array tangencial comprimido (real)."
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr "Flag utilizada para marcar un array normal comprimido (real)."
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr "Flag utilizada para marcar un array tangencial comprimido (real)."
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr "Flag usada para marcar una array de colores comprimida (real)."
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr "Flag usada para marcar un array de coordenadas UV comprimidas (real)."
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
@@ -43419,30 +43475,30 @@ msgstr ""
"Flag usada para marcar un array de coordenadas UV comprimidas (real) para "
"las segundas coordenadas UV."
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
#, fuzzy
msgid "Flag used to mark a compressed bone array."
msgstr "Flag usada para marcar un array de índices comprimida."
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
#, fuzzy
msgid "Flag used to mark a compressed (half float) weight array."
msgstr "Flag utilizada para marcar un array tangencial comprimido (real)."
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr "Flag usada para marcar un array de índices comprimida."
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr "Flag usada para marcar que el array contiene vértices 2D."
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
#, fuzzy
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr "Flag usada para marcar que el array contiene vértices 2D."
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -44487,7 +44543,7 @@ msgstr ""
"actualmente.\n"
"[b]Nota:[/b] Si no está dentro de una RPC este método devolverá 0."
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
"Devuelve [code]true[/code] si hay un conjunto de [member network_peer]."
@@ -47187,11 +47243,13 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-"Elimina un nodo hijo. El nodo NO se elimina y debe ser eliminado manualmente."
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
@@ -47199,7 +47257,7 @@ msgstr ""
"Elimina un nodo de un grupo. Vea las notas en la descripción, y los métodos "
"de grupo en [SceneTree]."
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
@@ -47207,7 +47265,7 @@ msgstr ""
"Reemplaza un nodo en una escena por el dado. Las suscripciones que pasen por "
"este nodo se perderán."
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -47225,7 +47283,7 @@ msgstr ""
"llamen a [code]_ready[/code] (en cuyo caso, se llamará a [code]_ready[/code] "
"en el mismo orden que normalmente)."
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -47257,7 +47315,7 @@ msgstr ""
"[code]server_disconnected[/code] o comprobando [code]SceneTree.network_peer."
"get_connection_status() == CONNECTION_CONNECTED[/code]."
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -47275,7 +47333,7 @@ msgstr ""
"no están expuestos a las redes (y a los RPC). Ver también [method rset] y "
"[method rset_config] para las propiedades."
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
@@ -47285,7 +47343,7 @@ msgstr ""
"code] (véase [method NetworkedMultiplayerPeer.set_target_peer]). Devuelve "
"una [Variant] vacía."
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
@@ -47293,7 +47351,7 @@ msgstr ""
"Envía un [method rpc] usando un protocolo poco fiable. Devuelve una "
"[Variant] vacía."
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"using an unreliable protocol (see [method NetworkedMultiplayerPeer."
@@ -47303,7 +47361,7 @@ msgstr ""
"code] utilizando un protocolo poco fiable (véase [method "
"NetworkedMultiplayerPeer.set_target_peer]). Devuelve una [Variant] vacía."
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -47315,7 +47373,7 @@ msgstr ""
"[method rset_config]. Véase también [method rpc] para los métodos RPC, la "
"mayoría de la información se aplica también a este método."
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -47333,7 +47391,7 @@ msgstr ""
"propiedades no están expuestas a las redes (y a los RPCs). Ver también "
"[method rpc] y [method rpc_config] para los métodos."
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
@@ -47342,7 +47400,7 @@ msgstr ""
"identificado por [code]peer_id[/code] (véase el [method "
"NetworkedMultiplayerPeer.set_target_peer])."
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
@@ -47350,7 +47408,7 @@ msgstr ""
"Cambia remotamente el valor de la propiedad en otros pares (y localmente) "
"usando un protocolo poco fiable."
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
@@ -47360,11 +47418,11 @@ msgstr ""
"identificado por [code]peer_id[/code] utilizando un protocolo poco fiable "
"(véase el [method NetworkedMultiplayerPeer.set_target_peer])."
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr "Establece el estado de plegado del nodo en el muelle de la escena."
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -47381,7 +47439,7 @@ msgstr ""
"par dado se establece recursivamente como el maestro para todos los hijos de "
"este nodo."
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -47399,7 +47457,7 @@ msgstr ""
"habilita automáticamente si se anula [method _physics_process]. Cualquier "
"llamada a esto antes de [method _ready] será ignorada."
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
#, fuzzy
msgid ""
"Enables or disables internal physics for this node. Internal physics "
@@ -47421,7 +47479,7 @@ msgstr ""
"set_physics_process]). Sólo es útil para usos avanzados para manipular el "
"comportamiento de los nodos incorporados."
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -47435,7 +47493,7 @@ msgstr ""
"existe). Se habilita automáticamente si se anula [method _process]. "
"Cualquier llamada a esto antes de [method _ready] será ignorada."
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
@@ -47445,7 +47503,7 @@ msgstr ""
"para los controles GUI! Se activa automáticamente si se anula [method "
"_input]. Cualquier llamada a esto antes de [method _ready] será ignorada."
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
#, fuzzy
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
@@ -47466,7 +47524,7 @@ msgstr ""
"Sólo es útil para usos avanzados para manipular el comportamiento de los "
"nodos incorporados."
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -47479,7 +47537,7 @@ msgstr ""
"automáticamente si se anula [method _unhandled_input]. Cualquier llamada a "
"esto antes de [method _ready] será ignorada."
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
@@ -47489,14 +47547,14 @@ msgstr ""
"automáticamente si se anula [method _unhandled_key_input]. Cualquier llamada "
"a esto antes de [method _ready] será ignorada."
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
"Establece si se trata de un marcador de posición de carga de instancia. Ver "
"[InstancePlaceholder]."
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
@@ -47506,7 +47564,7 @@ msgstr ""
"Utiliza [method _get_configuration_warning] para configurar el mensaje de "
"advertencia a mostrar."
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
@@ -47514,7 +47572,7 @@ msgstr ""
"La anulación del valor por defecto [MultiplayerAPI]. La anulación a "
"[code]null[/code] para usar la predeterminada [SceneTree]."
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -47522,7 +47580,7 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
@@ -47531,7 +47589,7 @@ msgstr ""
"custom_multiplayer], o el predeterminado SceneTree uno (si está dentro del "
"árbol)."
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
#, fuzzy
msgid ""
"The name of the node. This name is unique among the siblings (other child "
@@ -47545,7 +47603,7 @@ msgstr ""
"hijos del mismo padre). Cuando se establece un nombre existente, el nodo "
"será renombrado automáticamente."
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -47559,12 +47617,12 @@ msgstr ""
"se guardarán con él. Esto permite la creación de [SceneTree] complejos, con "
"instanciación y subinstanciación."
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
"Modo de pausa. Cómo se comportará el nodo si el [SceneTree] está en pausa."
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -47578,23 +47636,23 @@ msgstr ""
"nodos cuyo valor de prioridad de proceso sea [i]lower[/i] tendrán sus "
"devoluciones de procesamiento ejecutadas primero."
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr "Emitido cuando el nodo esté listo."
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr "Emitido cuando el nodo es renombrado."
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr "Emitido cuando el nodo entra en el árbol."
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr "Emitido después de que el nodo sale del árbol y ya no está activo."
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
@@ -47603,33 +47661,33 @@ msgstr ""
"Este es el lugar adecuado para la des-inicialización (o un \"destructor\", "
"si se quiere)."
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr "Notificación recibida cuando el nodo entra en un [SceneTree]."
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
"Notificación recibida cuando el nodo está a punto de salir de un [SceneTree]."
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr "Notificación recibida cuando el nodo se mueve en el padre."
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
"Notificación recibida cuando el nodo esté listo. Véase [method _ready]."
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr "Notificación recibida cuando el nodo está en pausa."
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr "Notificación recibida cuando el nodo no está en pausa."
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
@@ -47637,7 +47695,7 @@ msgstr ""
"Notificación recibida en cada fotograma cuando se fija el indicador de "
"proceso físico (ver [method set_physics_process])."
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
@@ -47645,7 +47703,7 @@ msgstr ""
"Notificación recibida en cada fotograma cuando se fija el indicador de "
"proceso (véase [method set_process])."
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
@@ -47653,7 +47711,7 @@ msgstr ""
"Notificación recibida cuando un nodo se establece como hijo de otro nodo.\n"
"[b]Nota:[/b] Esto no significa que un nodo haya entrado en el [SceneTree]."
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
@@ -47661,23 +47719,23 @@ msgstr ""
"Notificación recibida cuando un nodo no tiene padre (el padre o la madre lo "
"ha eliminado de la lista de hijos)."
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr "Notificación recibida cuando el nodo es instanciado."
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr "Notificación recibida cuando comienza un arrastre."
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr "Notificación recibida cuando termina un arrastre."
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr "Notificación recibida cuando el [NodePath] del nodo cambió."
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
@@ -47685,7 +47743,7 @@ msgstr ""
"Notificación recibida en cada fotograma cuando se fija el indicador de "
"proceso interno (véase [method set_process_internal])."
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
@@ -47693,14 +47751,14 @@ msgstr ""
"Notificación recibida en cada fotograma cuando se fija el flag de proceso de "
"física interna (véase [method set_physics_process_internal])."
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
@@ -47708,27 +47766,27 @@ msgstr ""
"Heredó el modo de pausa del padre del nodo. Para el nodo raíz, es "
"equivalente a [constant PAUSE_MODE_STOP]. Por defecto."
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr "Detiene el procesamiento cuando el [SceneTree] está en pausa."
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr "Continúe el proceso sin importar el estado de pausa de [SceneTree]."
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr "Duplica las señales del nodo."
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr "Duplica los grupos del nodo."
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr "Duplica los scripts del nodo."
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -49419,7 +49477,7 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr "Devuelve el texto del artículo en el índice [code]idx[/code]."
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
@@ -49427,7 +49485,7 @@ msgstr ""
"Devuelve el ID del elemento seleccionado, o [code]0[/code] si no hay ningún "
"elemento seleccionado."
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
@@ -49435,18 +49493,18 @@ msgstr ""
"Obtiene los metadatos del elemento seleccionado. Los metadatos de los "
"elementos pueden establecerse utilizando [method set_item_metadata]."
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
"Devuelve [code]true[/code] si el elemento en el índice [code]idx[/code] está "
"desactivado."
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr "Elimina el elemento en el índice [code]idx[/code]."
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
@@ -49454,7 +49512,7 @@ msgstr ""
"Selecciona un elemento por índice y lo convierte en el elemento actual. Esto "
"funcionará incluso si el elemento está desactivado."
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -49466,15 +49524,15 @@ msgstr ""
"no son seleccionables por el usuario. Si el ítem seleccionado actual se "
"establece como deshabilitado, permanecerá seleccionado."
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr "Establece el icono del artículo en el índice [code]idx[/code]."
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr "Establece el icono del artículo en el índice [code]idx[/code]."
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
@@ -49483,11 +49541,11 @@ msgstr ""
"cualquier tipo y pueden utilizarse para almacenar información adicional "
"sobre un elemento, como un string externa cod un ID."
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr "Establece el texto del artículo en el índice [code]idx[/code]."
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
@@ -49495,7 +49553,7 @@ msgstr ""
"El índice del artículo actualmente seleccionado, o [code]-1[/code] si no hay "
"ningún artículo seleccionado."
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
#, fuzzy
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
@@ -49506,7 +49564,7 @@ msgstr ""
"[code]ui_up[/code] o [code]ui_down[/code]. El índice del elemento "
"seleccionado se pasa como argumento."
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
@@ -49514,22 +49572,22 @@ msgstr ""
"Emitido cuando el elemento actual ha sido cambiado por el usuario. El índice "
"del elemento seleccionado se pasa como argumento."
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr "El icono de la flecha que se dibujará en el extremo derecho del botón."
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
"El espacio horizontal entre el icono de la flecha y el borde derecho del "
"botón."
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr "[StyleBox] utilizado cuando el [OptionButton] está desactivado."
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
@@ -49539,40 +49597,40 @@ msgstr ""
"[StyleBox] actual, por lo que al usar [StyleBoxEmpty] sólo se desactivará el "
"efecto visual de enfoque."
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr "[Font] del texto del [OptionButton]."
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr "[Color] del texto predeterminado del [OptionButton]."
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr "[Color] del texto utilizado cuando el [OptionButton] está desactivado."
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr "[Color] del texto usado cuando el [OptionButton] está siendo movido."
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr "[Color] del texto utilizado cuando se pulsa el [OptionButton]."
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
"[StyleBox] usado cuando el cursor se encuentra sobre el [OptionButton]."
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr "El espacio horizontal entre el icono de [OptionButton] y el texto."
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr "Por defecto, [StyleBox] para el [OptionButton]."
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr "[StyleBox] utilizado cuando se presiona el [OptionButton]."
@@ -53101,22 +53159,22 @@ msgstr "Objetos 3D dibujados por fotograma."
msgid "Draw calls per frame."
msgstr "Llamadas a dibujar por fotograma. Sólo en 3D."
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
"La cantidad de memoria de vídeo utilizada, es decir, la memoria de texturas "
"y vértices combinados."
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr "La cantidad de memoria de textura utilizada."
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr "La cantidad de memoria de vértices utilizada."
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
#, fuzzy
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
@@ -58193,6 +58251,18 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml:204
+msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
#, fuzzy
msgid ""
"Specifies a file to override project settings. For example: [code]user://"
@@ -58207,7 +58277,7 @@ msgstr ""
"leyendo [code]res://override.cfg[/code] para anular la configuración del "
"proyecto (véase la descripción de esta clase en la parte superior)."
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -58225,7 +58295,7 @@ msgstr ""
"(directorio de datos de usuario del sistema operativo)/Godot/app_userdata/"
"(nombre del proyecto)[/code]."
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
#, fuzzy
msgid ""
"Icon set in [code].ico[/code] format used on Windows to set the game's icon. "
@@ -58235,7 +58305,7 @@ msgstr ""
"juego. Esto se hace automáticamente al inicio llamando al [method "
"DisplayServer.set_native_icon]."
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -58249,14 +58319,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -58265,7 +58335,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -58273,7 +58343,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -58289,14 +58359,14 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
@@ -58304,7 +58374,7 @@ msgstr ""
"Fuerza un retardo entre fotogramas en el bucle principal (en milisegundos). "
"Esto puede ser útil si planea deshabilitar la sincronización vertical."
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -58317,7 +58387,7 @@ msgstr ""
"aplicaciones y editores, pero es bastante inútil (y puede perjudicar el "
"rendimiento) en la mayoría de los juegos."
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
@@ -58326,13 +58396,13 @@ msgstr ""
"procesador bajo (en microsegundos). Valores más altos resultarán en un menor "
"uso de la CPU."
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
"Ruta al archivo de la escena principal que se cargará cuando se ejecute el "
"proyecto."
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
@@ -58343,7 +58413,7 @@ msgstr ""
"CPU ya que los efectos asignados a ese bus ya no harán ningún tipo de "
"procesamiento."
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
@@ -58351,7 +58421,7 @@ msgstr ""
"Archivo de recursos [AudioBusLayout] por defecto para usar en el proyecto, a "
"menos que sea sobreescrito por la escena."
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
@@ -58362,7 +58432,7 @@ msgstr ""
"audio. Si se deja en blanco, se utilizará el controlador de audio "
"predeterminado."
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
@@ -58370,7 +58440,7 @@ msgstr ""
"Si [code]true[/code], se permitirá la entrada del micrófono. Esto requiere "
"que se establezcan los permisos apropiados al exportar a Android o iOS."
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
#, fuzzy
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
@@ -58379,14 +58449,14 @@ msgstr ""
"Tasa de mezcla utilizada para el audio. En general, es mejor no tocar esto y "
"dejarlo al sistema operativo del host."
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
@@ -58397,7 +58467,7 @@ msgstr ""
"Valores bajos pueden resultar en un cracking audible en un hardware más "
"lento."
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
@@ -58406,7 +58476,7 @@ msgstr ""
"plataforma web, para evitar problemas de audio especialmente en los "
"dispositivos móviles."
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
@@ -58414,7 +58484,7 @@ msgstr ""
"Ajustar el retardo de audio hardcode cuando se reproduce el video. Es mejor "
"dejar esto intacto a menos que sepas lo que estás haciendo."
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -58431,7 +58501,7 @@ msgstr ""
"[code]6[/code] pero podría cambiar en el futuro debido a las actualizaciones "
"subyacentes de zlib."
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -58448,7 +58518,7 @@ msgstr ""
"[code]6[/code] pero podría cambiar en el futuro debido a las actualizaciones "
"subyacentes de zlib."
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -58459,7 +58529,7 @@ msgstr ""
"pequeños a costa de la velocidad de compresión. La velocidad de "
"descompresión no se ve afectada por el nivel de compresión."
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
@@ -58467,7 +58537,7 @@ msgstr ""
"Habilita [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]la "
"coincidencia a larga distancia[/url] en Zstandard."
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
@@ -58478,7 +58548,7 @@ msgstr ""
"pueden resultar en una mejor compresión, pero requerirán más memoria al "
"comprimir y descomprimir."
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -58490,14 +58560,14 @@ msgstr ""
"ser usada cuando se portan proyectos antiguos (Godot 2), ya que el uso de "
"variables de miembros es el estilo preferido a partir de Godot 3."
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
"Si [code]true[/code], habilita las advertencias cuando se utiliza una "
"constante como función."
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
@@ -58506,7 +58576,7 @@ msgstr ""
"Si [code]true[/code], activa las advertencias cuando se utilizan palabras "
"clave obsoletas."
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
@@ -58516,7 +58586,7 @@ msgstr ""
"la configuración de [code]debug/gdscript/warnings/*[/code]). Si [code]false[/"
"code], desactiva todas las advertencias de GDScript."
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
@@ -58524,7 +58594,7 @@ msgstr ""
"Si [code]true[/code], los scripts de la carpeta [code]res://addons[/code] no "
"generarán advertencias."
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
@@ -58533,14 +58603,14 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias cuando se utiliza una "
"función como si fuera una propiedad."
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
@@ -58549,7 +58619,7 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias al asignar el resultado de "
"una función que devuelve [code]void[/code] a una variable."
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
@@ -58557,7 +58627,7 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias cuando se utiliza una "
"función como si fuera una propiedad."
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
@@ -58565,7 +58635,7 @@ msgstr ""
"Si [code]true[/code], habilita advertencias cuando un operador ternario "
"puede emitir valores con tipos incompatibles."
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
@@ -58573,7 +58643,7 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias al dividir un entero por "
"otro entero (la parte decimal será descartada)."
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
@@ -58582,7 +58652,7 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias al pasar un valor de real a "
"una función que espera un número entero (se convertirá y perderá precisión)."
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
@@ -58590,7 +58660,7 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias cuando se utiliza una "
"propiedad como si fuera una función."
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -58602,7 +58672,7 @@ msgstr ""
"como argumento de la función). Esos valores de retorno se utilizan a veces "
"para denotar posibles errores mediante el uso de enum [enum Error]."
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
@@ -58612,7 +58682,7 @@ msgstr ""
"miembro local o de subclase que ensombrecería una variable en un nivel "
"superior (como una variable miembro)."
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
@@ -58622,7 +58692,7 @@ msgstr ""
"que no tiene efecto en el código circundante, como escribir [code]2 + 2[/"
"code] como una declaración."
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
@@ -58632,14 +58702,14 @@ msgstr ""
"ternaria que no tiene efecto en el código circundante, como escribir "
"[code]42 si está activo o 0[/code] como una declaración."
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
"Si [code]true[/code], todas las advertencias serán reportadas como si fueran "
"errores."
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
@@ -58647,7 +58717,7 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias cuando se utiliza una "
"variable que no fue asignada previamente."
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
@@ -58657,7 +58727,7 @@ msgstr ""
"utilizando un operador de asignación como [code]+=[/code] si la variable no "
"fue asignada previamente."
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
@@ -58666,7 +58736,7 @@ msgstr ""
"inalcanzable (como después de una declaración de [code]return[/code] que "
"siempre se ejecutará)."
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
@@ -58675,13 +58745,13 @@ msgstr ""
"expresión cuyo tipo puede no ser compatible con el parámetro de función "
"esperado."
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
"Si [code]true[/code], habilita las advertencias cuando se realiza un "
"lanzamiento inseguro."
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
@@ -58689,7 +58759,7 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias al llamar a un método cuya "
"presencia no está garantizada en tiempo de compilación en la clase."
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
@@ -58698,7 +58768,7 @@ msgstr ""
"propiedad cuya presencia no está garantizada en tiempo de compilación en la "
"clase."
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
@@ -58706,7 +58776,7 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias cuando una señal no es "
"utilizada."
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
@@ -58714,26 +58784,26 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias cuando una variable local no "
"se utiliza."
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
"Si [code]true[/code], habilita las advertencias cuando una señal no es "
"utilizada."
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
"Si [code]true[/code], habilita las advertencias cuando una variable local no "
"se utiliza."
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
@@ -58741,12 +58811,12 @@ msgstr ""
"Si [code]true[/code], habilita las advertencias al asignar el resultado de "
"una función que devuelve [code]void[/code] a una variable."
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
"Mensaje que se mostrará antes del retroceso cuando el motor se crashea."
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
#, fuzzy
msgid ""
"Maximum number of frames per second allowed. The actual number of frames per "
@@ -58768,21 +58838,21 @@ msgstr ""
"no en tiempo real de fotogramas estáticos, o para probar el proyecto en "
"condiciones de retardo."
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr "Máxima pila de llamadas permitida para depurar GDScript."
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
"Cantidad máxima de funciones por fotograma permitidas en la elaboración de "
"perfiles."
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr "Imprime fotogramas por segundo a una salida estándar cada segundo."
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
@@ -58792,13 +58862,13 @@ msgstr ""
"Muestra información como las fugas de memoria, qué escenas y recursos se "
"están cargando, etc."
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
"Máxima pila de llamadas en el guión visual, para evitar la recursividad "
"infinita."
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
@@ -58806,7 +58876,7 @@ msgstr ""
"Color de los puntos de contacto entre las formas de colisión, visible cuando "
"\"Formas de colisión visibles\" está activado en el menú de Depuración."
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
#, fuzzy
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
@@ -58815,7 +58885,7 @@ msgstr ""
"Color de las formas de colisión, visible cuando \"Formas de colisión visibles"
"\" está activado en el menú de Depuración."
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
@@ -58824,7 +58894,7 @@ msgstr ""
"cuando \"Formas de colisión visibles\" está activado en el menú de "
"Depuración."
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
@@ -58832,7 +58902,7 @@ msgstr ""
"Color de las formas de colisión, visible cuando \"Formas de colisión visibles"
"\" está activado en el menú de Depuración."
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
@@ -58840,7 +58910,7 @@ msgstr ""
"Color de la geometría de navegación desactivada, visible cuando la "
"\"Navegación visible\" está activada en el menú de depuración."
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
@@ -58848,21 +58918,21 @@ msgstr ""
"Color de la geometría de navegación, visible cuando la \"Navegación visible"
"\" está activada en el menú de depuración."
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr "Imagen personalizada para el cursor del ratón (limitada a 256×256)."
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr "Punto donde se encuentra la imagen personalizada del cursor del ratón."
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
"Desplazamiento de la posición de las sugerencias, en relación con el punto "
"donde se encuentra el cursor del ratón."
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
#, fuzzy
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
@@ -58873,7 +58943,7 @@ msgstr ""
"Esta configuración no tiene efecto en el escritorio de Linux, ya que los "
"fallos de conocimiento de DPI no están soportados allí."
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
@@ -58882,7 +58952,7 @@ msgstr ""
"inactividad), por lo que el salvapantallas no toma el control. Funciona en "
"plataformas de escritorio y móviles."
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -58891,7 +58961,7 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
@@ -58899,7 +58969,7 @@ msgstr ""
"Si [code]verdad[/code], el indicador de casa se oculta automáticamente. Esto "
"sólo afecta a los dispositivos iOS sin un botón de inicio físico."
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -58909,7 +58979,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -58917,19 +58987,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -58943,7 +59013,7 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
@@ -58953,14 +59023,14 @@ msgstr ""
"escritorio, este es el tamaño de ventana por defecto. Los ajustes del modo "
"de estiramiento también utilizan esto como referencia cuando está activado."
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
#, fuzzy
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr "Permite que la ventana sea redimensionada por defecto."
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
@@ -58968,7 +59038,7 @@ msgstr ""
"Si es mayor que cero, sobreescribe la altura de la ventana al ejecutar el "
"juego. Es útil para probar los modos de estiramiento."
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
@@ -58976,7 +59046,7 @@ msgstr ""
"Si es mayor que cero, anula el ancho de la ventana al ejecutar el juego. Es "
"útil para probar los modos de estiramiento."
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
@@ -58986,7 +59056,7 @@ msgstr ""
"escritorio, este es el tamaño de ventana por defecto. La configuración del "
"modo ampliado también utiliza esto como referencia cuando está activado."
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
@@ -58994,7 +59064,7 @@ msgstr ""
"Especifica el controlador de la tableta a utilizar. Si se deja vacío, se "
"utilizará el controlador predeterminado."
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -59009,7 +59079,7 @@ msgstr ""
"muchas plataformas la harán cumplir independientemente (como las plataformas "
"móviles y HTML5)."
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -59029,7 +59099,7 @@ msgstr ""
"han experimentado una reducción de la mitad de la velocidad de los cuadros "
"Vsync (por ejemplo, de 60 FPS a 30 FPS) al usarla."
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -59045,7 +59115,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
#, fuzzy
msgid ""
"Search path for project-specific script templates. Godot will search for "
@@ -59056,7 +59126,7 @@ msgstr ""
"plantillas de script se buscarán tanto en la ruta específica del editor como "
"en esta ruta específica del proyecto."
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -59069,7 +59139,7 @@ msgstr ""
"especialmente si utilizas scripts incorporados que se serializan en los "
"archivos de la escena."
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
@@ -59077,7 +59147,7 @@ msgstr ""
"Valor por defecto para [member ScrollContainer.scroll_deadzone], que se "
"utilizará para todos los [ScrollContainer]s a menos que se sobrescriba."
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
#, fuzzy
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
@@ -59086,7 +59156,7 @@ msgstr ""
"Si [code]true[/code], cambia los botones Cancelar y Aceptar en los diálogos "
"de Windows y UWP para seguir las convenciones de la interfaz."
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
@@ -59094,7 +59164,7 @@ msgstr ""
"Ruta a un archivo de recursos [Theme] personalizado para usar en el proyecto "
"([code]theme[/code] o genérico [code]tres[/code]/[code]res[/code] extension)."
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
@@ -59102,12 +59172,12 @@ msgstr ""
"Ruta a un recurso [Font] personalizado para usar como predeterminado para "
"todos los elementos de la interfaz gráfica de usuario del proyecto."
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
"Si [code]true[/code], se asegura de que el tema utilizado funciona con HiDPI."
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
@@ -59115,15 +59185,15 @@ msgstr ""
"Ajuste del temporizador para la búsqueda incremental en los controles de "
"[Tree], [ItemList], etc. (en milisegundos)."
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr "Temporizador para detectar la inactividad en [TextEdit] (en segundos)."
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr "Retraso predeterminado para las sugerencias (en segundos)."
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -59138,7 +59208,7 @@ msgstr ""
"[Control]s. Sin embargo, los eventos asignados a la acción pueden ser "
"modificados."
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -59151,7 +59221,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -59163,7 +59233,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -59180,7 +59250,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -59195,7 +59265,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -59210,7 +59280,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -59227,7 +59297,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -59239,7 +59309,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -59256,7 +59326,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -59273,7 +59343,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -59285,7 +59355,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -59299,7 +59369,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -59311,7 +59381,7 @@ msgstr ""
"eliminar ya que son necesarias para la lógica interna de varios [Control]s. "
"Sin embargo, los eventos asignados a la acción pueden ser modificados."
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -59323,7 +59393,7 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
@@ -59331,7 +59401,7 @@ msgstr ""
"Si [code]true[/code], envía eventos de entrada de ratón al tocar o deslizar "
"en la pantalla táctil."
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
@@ -59339,452 +59409,452 @@ msgstr ""
"Si [code]true[/code], envía eventos de entrada táctil al hacer clic o "
"arrastrar el ratón."
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
#, fuzzy
msgid "Default delay for touch events. This only affects iOS devices."
msgstr "Retraso predeterminado para las sugerencias (en segundos)."
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr "Nombre opcional para la capa 1 de la física 2D."
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr "Nombre opcional para la capa 10 de física 2D."
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr "Nombre opcional para la capa 11 de física 2D."
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr "Nombre opcional para la capa 12 de física 2D."
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr "Nombre opcional para la capa 13 de la física 2D."
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr "Nombre opcional para la capa 14 de la física 2D."
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr "Nombre opcional para la capa 15 de física 2D."
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr "Nombre opcional para la capa 15 de la física 2D."
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr "Nombre opcional para la capa 17 de la física 2D."
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr "Nombre opcional para la capa 18 de física 2D."
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr "Nombre opcional para la capa 19 de la física 2D."
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr "Nombre opcional para la capa 20 de física 2D."
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
#, fuzzy
msgid "Optional name for the 2D physics layer 21."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
#, fuzzy
msgid "Optional name for the 2D physics layer 22."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
#, fuzzy
msgid "Optional name for the 2D physics layer 23."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
#, fuzzy
msgid "Optional name for the 2D physics layer 24."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
#, fuzzy
msgid "Optional name for the 2D physics layer 25."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
#, fuzzy
msgid "Optional name for the 2D physics layer 26."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
#, fuzzy
msgid "Optional name for the 2D physics layer 27."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
#, fuzzy
msgid "Optional name for the 2D physics layer 28."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
#, fuzzy
msgid "Optional name for the 2D physics layer 29."
msgstr "Nombre opcional para la capa 2 de física 2D."
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr "Nombre opcional para la capa 3 de física 2D."
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
#, fuzzy
msgid "Optional name for the 2D physics layer 30."
msgstr "Nombre opcional para la capa 3 de física 2D."
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
#, fuzzy
msgid "Optional name for the 2D physics layer 31."
msgstr "Nombre opcional para la capa 3 de física 2D."
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
#, fuzzy
msgid "Optional name for the 2D physics layer 32."
msgstr "Nombre opcional para la capa 3 de física 2D."
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr "Nombre opcional para la capa 4 de física 2D."
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr "Nombre opcional para la capa 5 de física 2D."
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr "Nombre opcional para la capa 6 de física 2D."
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr "Nombre opcional para la capa 7 de física 2D."
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr "Nombre opcional para la capa 8 de física 2D."
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr "Nombre opcional para la capa 9 de física 2D."
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr "Nombre opcional para la capa 1 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr "Nombre opcional para la capa 10 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr "Nombre opcional para la capa 11 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr "Nombre opcional para la capa 12 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr "Nombre opcional para la capa 13 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr "Nombre opcional para la capa 14 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr "Nombre opcional para la capa 15 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr "Nombre opcional para la capa 16 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr "Nombre opcional para la capa 17 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr "Nombre opcional para la capa 18 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr "Nombre opcional para la capa 19 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr "Nombre opcional para la capa 2 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr "Nombre opcional para la capa 20 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr "Nombre opcional para la capa 3 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr "Nombre opcional para la capa 4 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr "Nombre opcional para la capa 5 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr "Nombre opcional para la capa 6 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr "Nombre opcional para la capa 7 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr "Nombre opcional para la capa 8 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr "Nombre opcional para la capa 9 del renderizado 2D."
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr "Nombre opcional para la capa 1 de la física 3D."
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr "Nombre opcional para la capa 10 de física 3D."
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr "Nombre opcional para la capa 11 de la física 3D."
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr "Nombre opcional para la capa 12 de física 3D."
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr "Nombre opcional para la capa 13 de la física 3D."
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr "Nombre opcional para la capa 14 de la física 3D."
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr "Nombre opcional para la capa 15 de la física 3D."
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr "Nombre opcional para la capa 16 de la física 3D."
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr "Nombre opcional para la capa 17 de la física 3D."
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr "Nombre opcional para la capa 18 de la física 3D."
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr "Nombre opcional para la capa 19 de la física 3D."
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr "Nombre opcional para la capa 20 de física 3D."
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
#, fuzzy
msgid "Optional name for the 3D physics layer 21."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
#, fuzzy
msgid "Optional name for the 3D physics layer 22."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
#, fuzzy
msgid "Optional name for the 3D physics layer 23."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
#, fuzzy
msgid "Optional name for the 3D physics layer 24."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
#, fuzzy
msgid "Optional name for the 3D physics layer 25."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
#, fuzzy
msgid "Optional name for the 3D physics layer 26."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
#, fuzzy
msgid "Optional name for the 3D physics layer 27."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
#, fuzzy
msgid "Optional name for the 3D physics layer 28."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
#, fuzzy
msgid "Optional name for the 3D physics layer 29."
msgstr "Nombre opcional para la capa 2 de la física 3D."
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr "Nombre opcional para la capa 3 de física 3D."
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
#, fuzzy
msgid "Optional name for the 3D physics layer 30."
msgstr "Nombre opcional para la capa 3 de física 3D."
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
#, fuzzy
msgid "Optional name for the 3D physics layer 31."
msgstr "Nombre opcional para la capa 3 de física 3D."
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
#, fuzzy
msgid "Optional name for the 3D physics layer 32."
msgstr "Nombre opcional para la capa 3 de física 3D."
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr "Nombre opcional para la capa 4 de física 3D."
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr "Nombre opcional para la capa 5 de física 3D."
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr "Nombre opcional para la capa 6 de física 3D."
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr "Nombre opcional para la capa 7 de física 3D."
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr "Nombre opcional para la capa 8 de física 3D."
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr "Nombre opcional para la capa 9 de física 3D."
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr "Nombre opcional para la capa 1 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr "Nombre opcional para la capa 10 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr "Nombre opcional para la capa 11 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr "Nombre opcional para la capa 12 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr "Nombre opcional para la capa 13 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr "Nombre opcional para la capa 14 del renderizado 3D"
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr "Nombre opcional para la capa 15 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr "Nombre opcional para la capa 16 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr "Nombre opcional para la capa 17 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr "Nombre opcional para la capa 18 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr "Nombre opcional para la capa 19 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr "Nombre opcional para la capa 2 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr "Nombre opcional para la capa 20 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr "Nombre opcional para la capa 3 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr "Nombre opcional para la capa 4 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr "Nombre opcional para la capa 5 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr "Nombre opcional para la capa 6 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr "Nombre opcional para la capa 7 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr "Nombre opcional para la capa 8 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr "Nombre opcional para la capa 9 del renderizado 3D."
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
@@ -59792,7 +59862,7 @@ msgstr ""
"El lugar al que recurrir si una traducción no está disponible en un idioma "
"determinado. Si se deja vacío, se usará [code]en[/code] (inglés)."
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
@@ -59800,17 +59870,17 @@ msgstr ""
"Si no está vacío, este lugar se utilizará cuando se ejecute el proyecto "
"desde el editor."
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr "Si [code]true[/code], registra todos los resultados en archivos."
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
@@ -59818,13 +59888,13 @@ msgstr ""
"Camino a los registros dentro del proyecto. Se recomienda utilizar una ruta "
"[code]user://[/code]."
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
"Especifica la cantidad máxima de archivos de registro permitidos (utilizados "
"para la rotación)."
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
@@ -59833,7 +59903,7 @@ msgstr ""
"funciones. Si te quedas sin espacio en ella (verás un error), puedes "
"aumentar el tamaño aquí."
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -59845,7 +59915,7 @@ msgstr ""
"los solicite en los hilos. Si los servidores se paralizan con demasiada "
"frecuencia al cargar recursos en un hilo, aumente este número."
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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 "
@@ -59855,7 +59925,7 @@ msgstr ""
"depurador. Por encima de este valor, el contenido se elimina. Esto ayuda a "
"no detener la conexión del depurador."
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
#, fuzzy
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
@@ -59866,7 +59936,7 @@ msgstr ""
"encima de este valor, el contenido se elimina. Esto ayuda a no detener la "
"conexión del depurador."
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
#, fuzzy
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
@@ -59877,7 +59947,7 @@ msgstr ""
"depurador. Por encima de este valor, el contenido se elimina. Esto ayuda a "
"no detener la conexión del depurador."
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
#, fuzzy
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
@@ -59888,7 +59958,7 @@ msgstr ""
"Por encima de este valor, el contenido se elimina. Esto ayuda a no detener "
"la conexión del depurador."
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
#, fuzzy
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
@@ -59898,52 +59968,52 @@ msgstr ""
"Tamaño por defecto del flujo de paquetes para deserializar los datos de "
"Godot. Por encima de este tamaño, los datos se eliminan."
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
"Tiempo de espera (en segundos) para los intentos de conexión usando TCP."
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr "Tamaño máximo (en kiB) para el buffer de entrada [WebRTCDataChannel]."
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
#, fuzzy
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr "Tamaño máximo (en kiB) para el buffer de entrada [WebRTCDataChannel]."
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
#, fuzzy
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr "Tamaño máximo (en kiB) para el buffer de entrada [WebRTCDataChannel]."
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
#, fuzzy
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr "Tamaño máximo (en kiB) para el buffer de entrada [WebRTCDataChannel]."
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
#, fuzzy
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr "Tamaño máximo (en kiB) para el buffer de entrada [WebRTCDataChannel]."
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
@@ -59952,12 +60022,12 @@ msgstr ""
"remoto. Los valores más altos disminuyen los efectos de la latencia a costa "
"de un mayor uso del ancho de banda."
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
"Tamaño de la página utilizada por el sistema de archivos remoto (en bytes)."
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -59974,7 +60044,7 @@ msgstr ""
"defecto.\n"
"En caso de duda, deje este ajuste vacío."
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
@@ -59982,7 +60052,7 @@ msgstr ""
"Al crear los nombres de los nodos de forma automática, establezca el tipo de "
"carcasa en este proyecto. Esto es mayormente un ajuste de editor."
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
@@ -59990,7 +60060,7 @@ msgstr ""
"Qué usar para separar el nombre del nodo del número. Esto es mayormente un "
"ajuste de editor."
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
#, fuzzy
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
@@ -60000,14 +60070,14 @@ msgstr ""
"Tamaño de la tabla hash usada para el algoritmo de la cuadrícula hash 2D de "
"fase ancha."
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -60020,7 +60090,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
#, fuzzy
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
@@ -60042,7 +60112,7 @@ msgstr ""
"PhysicsServer2D.AREA_PARAM_GRAVITY, 98)\n"
"[/codeblock]"
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
#, fuzzy
msgid ""
"The default gravity direction in 2D.\n"
@@ -60064,7 +60134,7 @@ msgstr ""
"get_space(), Servidor de Física2D.AREA_PARAM_GRAVITY_VECTOR, Vector2(0, 1))\n"
"[/codeblock]"
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -60077,7 +60147,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
#, fuzzy
msgid ""
"Threshold defining the surface size that constitutes a large object with "
@@ -60089,7 +60159,7 @@ msgstr ""
"con respecto a las células en el algoritmo de la cuadrícula hash 2D de fase "
"ancha."
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
#, fuzzy
msgid ""
"Sets which physics engine to use for 2D physics.\n"
@@ -60100,7 +60170,7 @@ msgstr ""
"\"DEFAULT\" y \"GodotPhysics2D\" son lo mismo, ya que actualmente no hay "
"ningún servidor de física 2D alternativo implementado."
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
#, fuzzy
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
@@ -60111,7 +60181,7 @@ msgstr ""
"inactivo. Ver [constant PhysicsServer2D."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
#, fuzzy
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
@@ -60122,7 +60192,7 @@ msgstr ""
"inactivo. Ver [constant PhysicsServer2D."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -60138,7 +60208,7 @@ msgstr ""
"de un modelo de hilo multi-hilo para la física. Asegúrate de evaluar si te "
"da un rendimiento extra y no hay regresiones al usarlo."
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
#, fuzzy
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
@@ -60148,13 +60218,13 @@ msgstr ""
"ponga a dormir. Ver [constant PhysicsServer2D."
"SPACE_PARAM_BODY_TIME_TO_SLEEP]."
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
#, fuzzy
msgid ""
"Sets whether the 3D physics world will be created with support for "
@@ -60163,7 +60233,7 @@ msgstr ""
"Establece si el mundo de la física 3D se creará con soporte para la física "
"[SoftBody3D]. Sólo se aplica al motor de física de Bullet."
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -60176,7 +60246,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
#, fuzzy
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
@@ -60198,7 +60268,7 @@ msgstr ""
"PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)\n"
"[/codeblock]"
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
#, fuzzy
msgid ""
"The default gravity direction in 3D.\n"
@@ -60220,7 +60290,7 @@ msgstr ""
"PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3(0, -1, 0))\n"
"[/codeblock]"
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -60233,13 +60303,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
#, fuzzy
msgid ""
"Sets which physics engine to use for 3D physics.\n"
@@ -60252,11 +60322,11 @@ msgstr ""
"org]Bullet[/url]. El motor de \"GodotPhysics3D\" sigue siendo soportado como "
"una alternativa."
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr "Habilita [member Viewport.physics_object_picking] en el viewport raíz."
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -60270,7 +60340,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -60285,7 +60355,7 @@ msgstr ""
"cambiar el FPS de física en tiempo de ejecución, establece [member Engine."
"iterations_per_second] en su lugar."
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
#, fuzzy
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
@@ -60310,7 +60380,7 @@ msgstr ""
"mayoría; los valores superiores a 2 podrían hacer que el juego reaccionara a "
"los fotogramas caídos con un retraso notable y no se recomiendan."
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -60320,7 +60390,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -60330,7 +60400,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -60341,7 +60411,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -60351,7 +60421,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -60359,7 +60429,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
#, fuzzy
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
@@ -60379,7 +60449,7 @@ msgstr ""
"backend de renderizado GLES2, y sólo a las plataformas de escritorio. No es "
"necesaria cuando se utiliza el backend de Vulkan."
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -60394,7 +60464,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -60403,13 +60473,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -60418,7 +60488,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -60428,7 +60498,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -60440,7 +60510,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -60450,24 +60520,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -60476,7 +60546,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -60484,7 +60554,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -60493,7 +60563,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -60503,7 +60573,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -60511,31 +60581,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
#, fuzzy
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
@@ -60549,7 +60619,7 @@ msgstr ""
"predeterminado de forma programada, utilice el [method RenderingServer."
"set_default_clear_color]."
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -60565,14 +60635,14 @@ msgstr ""
"reserva, es mejor borrar [code]default_env.tres[/code], o especificar aquí "
"un entorno por defecto diferente."
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -60580,31 +60650,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -60612,7 +60682,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -60622,7 +60692,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -60631,7 +60701,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -60640,14 +60710,14 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
@@ -60658,7 +60728,7 @@ msgstr ""
"Este algoritmo sólo es compatible con las plataformas y consolas de "
"escritorio."
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
#, fuzzy
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
@@ -60675,7 +60745,7 @@ msgstr ""
"[code]6[/code] pero podría cambiar en el futuro debido a las actualizaciones "
"subyacentes de zlib."
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -60683,7 +60753,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -60692,7 +60762,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -60702,13 +60772,13 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
#, fuzzy
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
@@ -60719,7 +60789,7 @@ msgstr ""
"cinematico. Si [code]false[/code], las colisiones se manejarán como un "
"cuerpo estático."
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -60728,13 +60798,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -60744,14 +60814,14 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
#, fuzzy
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
@@ -60761,7 +60831,7 @@ msgstr ""
"size] en los dispositivos móviles, debido a problemas de rendimiento o de "
"compatibilidad con el controlador."
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
@@ -60769,7 +60839,7 @@ msgstr ""
"Desactiva el paso previo de profundidad para algunos fabricantes de GPU "
"(normalmente móviles), ya que su arquitectura ya lo hace."
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
@@ -60779,7 +60849,7 @@ msgstr ""
"renderizar los materiales. Esto aumenta el rendimiento en escenas con alto "
"sobregiro, cuando se utilizan materiales complejos e iluminación."
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
@@ -60789,7 +60859,7 @@ msgstr ""
"en sombras más nítidas, a costa del rendimiento. El valor se redondeará a la "
"potencia más cercana de 2."
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
@@ -60798,7 +60868,7 @@ msgstr ""
"directional_shadow/size] en los dispositivos móviles, debido a problemas de "
"rendimiento o de apoyo al driver."
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
#, fuzzy
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
@@ -60816,7 +60886,7 @@ msgstr ""
"[code]OS.get_current_video_driver[/code] para consultarla en tiempo de "
"ejecución."
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -60828,7 +60898,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -60836,7 +60906,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
#, fuzzy
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
@@ -60851,7 +60921,7 @@ msgstr ""
"[b]Nota:[/b] La MSAA no está disponible en la exportación a HTML5 utilizando "
"el backend GLES2."
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -60860,7 +60930,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -60874,7 +60944,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
#, fuzzy
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
@@ -60889,7 +60959,7 @@ msgstr ""
"la imagen se vea borrosa, especialmente en resoluciones más bajas. Puede "
"funcionar relativamente bien en resoluciones grandes como 1440p y 4K."
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -60904,7 +60974,7 @@ msgstr ""
"de memoria. Si [code]false[/code], se utiliza el filtrado lineal de mipmaps "
"(también llamado \"filtrado trilíneo\")."
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -60920,7 +60990,7 @@ msgstr ""
"[code]DEPTH_TEXTURE[/code] no estarán disponibles en los shaders y los "
"efectos de post-procesamiento no estarán disponibles en el [Environment]."
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
@@ -60930,14 +61000,14 @@ msgstr ""
"framebuffer_allocation] en los dispositivos móviles, debido a problemas de "
"rendimiento o de compatibilidad con el controlador."
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
#, fuzzy
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
@@ -60947,27 +61017,27 @@ msgstr ""
"force_vertex_shading] en los dispositivos móviles, debido a problemas de "
"rendimiento o de compatibilidad con el controlador."
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
#, fuzzy
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
@@ -60978,7 +61048,7 @@ msgstr ""
"reflections/ggx_samples] en dispositivos móviles, debido a problemas de "
"rendimiento o de compatibilidad con el controlador."
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -60989,7 +61059,7 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
#, fuzzy
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
@@ -61002,7 +61072,7 @@ msgstr ""
"significativamente más lento de calcular y utiliza [member rendering/quality/"
"reflections/roughness_layers] veces más memoria."
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
@@ -61012,7 +61082,7 @@ msgstr ""
"reflections/texture_array_reflections] en dispositivos móviles, debido a "
"problemas de rendimiento o compatibilidad con el controlador."
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
@@ -61020,7 +61090,7 @@ msgstr ""
"Si [code]true[/code], utiliza un modelo Blinn más rápido pero de menor "
"calidad para generar reflejos borrosos en lugar del modelo GGX."
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
@@ -61030,7 +61100,7 @@ msgstr ""
"shadinging/force_blinn_over_ggx] en los dispositivos móviles, debido a "
"problemas de rendimiento o de soporte de los conductores."
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
@@ -61038,7 +61108,7 @@ msgstr ""
"Si [code]true[/code], utiliza un modelo de iluminación de material Lambert "
"más rápido pero de menor calidad en lugar del Burley."
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
@@ -61048,7 +61118,7 @@ msgstr ""
"shadinging/force_lambert_over_burley] en los dispositivos móviles, debido a "
"problemas de rendimiento o de apoyo al conductor."
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
@@ -61059,7 +61129,7 @@ msgstr ""
"la calidad enormemente. Se puede utilizar para optimizar el rendimiento en "
"dispositivos móviles de gama baja."
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
@@ -61069,7 +61139,18 @@ msgstr ""
"force_vertex_shading] en los dispositivos móviles, debido a problemas de "
"rendimiento o de compatibilidad con el controlador."
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -61078,8 +61159,8 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
@@ -61087,7 +61168,7 @@ msgstr ""
"Tamaño del cuadrante de subdivisión para el mapeo de sombras. Ver la "
"documentación del mapeo de sombras."
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
@@ -61095,7 +61176,7 @@ msgstr ""
"Tamaño para el atlas de sombras (usado para OmniLights y SpotLights). Vea la "
"documentación."
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
@@ -61104,7 +61185,7 @@ msgstr ""
"size] en los dispositivos móviles, debido a problemas de rendimiento o de "
"compatibilidad con el controlador."
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -61115,7 +61196,7 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
#, fuzzy
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
@@ -61125,14 +61206,14 @@ msgstr ""
"size] en los dispositivos móviles, debido a problemas de rendimiento o de "
"compatibilidad con el controlador."
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -61144,47 +61225,47 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
#, fuzzy
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr "La fuerza del efecto de dispersión del subsuelo."
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
#, fuzzy
msgid "Max radius used for subsurface scattering samples."
msgstr "La fuerza del efecto de dispersión del subsuelo."
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
@@ -61194,7 +61275,7 @@ msgstr ""
"mejorar enormemente el rendimiento, pero la sincronización con el hilo "
"principal puede causar un poco más de temblor."
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -61202,7 +61283,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
@@ -61212,14 +61293,16 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
"Si [code]true[/code], el importador de texturas importará texturas "
"comprimidas con VRAM usando el algoritmo BPTC. Este algoritmo de compresión "
"de texturas sólo está soportado en plataformas de escritorio, y sólo cuando "
"se utiliza el renderizador Vulkan."
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
+#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -61227,10 +61310,16 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
+"Si [code]true[/code], el importador de texturas importará texturas "
+"comprimidas con VRAM usando el algoritmo BPTC. Este algoritmo de compresión "
+"de texturas sólo está soportado en plataformas de escritorio, y sólo cuando "
+"se utiliza el renderizador Vulkan."
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
+#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -61238,10 +61327,16 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
+"Si [code]true[/code], el importador de texturas importará texturas "
+"comprimidas con VRAM usando el algoritmo BPTC. Este algoritmo de compresión "
+"de texturas sólo está soportado en plataformas de escritorio, y sólo cuando "
+"se utiliza el renderizador Vulkan."
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
+#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -61249,10 +61344,16 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
+"Si [code]true[/code], el importador de texturas importará texturas "
+"comprimidas con VRAM usando el algoritmo BPTC. Este algoritmo de compresión "
+"de texturas sólo está soportado en plataformas de escritorio, y sólo cuando "
+"se utiliza el renderizador Vulkan."
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
+#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -61260,10 +61361,15 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
+"Si [code]true[/code], el importador de texturas importará texturas "
+"comprimidas con VRAM usando el algoritmo BPTC. Este algoritmo de compresión "
+"de texturas sólo está soportado en plataformas de escritorio, y sólo cuando "
+"se utiliza el renderizador Vulkan."
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
#, fuzzy
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
@@ -62353,7 +62459,11 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
"Captura su entorno como un mapa de cubo, y almacena versiones de él con "
"niveles crecientes de desenfoque para simular diferentes rugosidades "
@@ -62365,13 +62475,13 @@ msgstr ""
"cull_mask], por lo que actualizarlos puede ser bastante caro. Es mejor "
"actualizarlos una vez con los objetos estáticos importantes y luego dejarlos."
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/es/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
@@ -62381,7 +62491,7 @@ msgstr ""
"reflejos se vean más correctos en habitaciones con forma de rectángulo al "
"compensar el centro de reflejo dependiendo de la ubicación de la cámara."
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
#, fuzzy
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
@@ -62396,7 +62506,7 @@ msgstr ""
"los objetos grandes que probablemente ocupen mucho espacio en el reflejo "
"para ahorrar en el coste de la renderización."
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
@@ -62407,7 +62517,7 @@ msgstr ""
"quieras desactivarlo si utilizas el [constant UPDATE_ALWAYS] [member "
"update_mode]."
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
@@ -62417,7 +62527,7 @@ msgstr ""
"espacio cubierto por la sonda, lo que reducirá la resolución percibida. Es "
"mejor mantener los alcances sólo tan grandes como los necesites."
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
@@ -62425,26 +62535,26 @@ msgstr ""
"Define la intensidad del reflejo. La intensidad modula la fuerza de la "
"reflexión."
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
#, fuzzy
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
@@ -62454,7 +62564,7 @@ msgstr ""
"Si [code]true[/code], los reflejos ignorarán la contribución del cielo. "
"Equivalente a [member ReflectionProbe.interior]."
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
@@ -62462,7 +62572,7 @@ msgstr ""
"Establece la máxima distancia de la sonda a la que puede estar un objeto "
"antes de ser seleccionado."
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
@@ -62470,7 +62580,7 @@ msgstr ""
"Establece el desplazamiento de origen que se utilizará cuando esta sonda de "
"reflexión esté en modo de proyecto de caja."
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
@@ -62478,12 +62588,12 @@ msgstr ""
"Establece la frecuencia con la que se actualiza la sonda. Puede ser "
"[constant UPDATE_ONCE] o [constant UPDATE_ALWAYS]."
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
#, fuzzy
msgid "Update the probe once on the next frame."
msgstr "Actualiza el viewport una vez y luego ponlo en desactivado."
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -63731,14 +63841,18 @@ msgstr ""
"los BBCodes."
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
-msgstr "Devuelve la barra de desplazamiento vertical."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr "Devuelve el número de líneas visibles."
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
@@ -63746,11 +63860,11 @@ msgstr ""
"Instala un efecto personalizado. El [code]effect[/code] debe ser un "
"[RichTextEffect] válido."
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr "Añade una etiqueta de nueva línea a la pila de etiquetas."
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
@@ -63760,12 +63874,12 @@ msgstr ""
"etiquetas e inserta el nuevo contenido. Devuelve [constant OK] si parsea "
"[code]bbcode[/code] con éxito."
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
"Analiza el parámetro BBCode [code]expressions[/code] en un diccionario."
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
@@ -63774,7 +63888,7 @@ msgstr ""
"para cerrar manualmente los BBCodes. No necesita seguir los métodos "
"[code]add_*[/code]."
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
@@ -63782,7 +63896,7 @@ msgstr ""
"Añade una etiqueta [code]align[/code] basada en el valor [code]align[/code] "
"dado. Ver [enum Align] para los posibles valores."
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
@@ -63792,14 +63906,14 @@ msgstr ""
"de etiquetas. Esto es lo mismo que añadir una etiqueta [code]b[/code] si no "
"está actualmente en una etiqueta [code]i[/code]."
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
"Añade una etiqueta [code]font[/code] con una fuente en negrita y cursiva a "
"la pila de etiquetas."
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
@@ -63808,11 +63922,11 @@ msgstr ""
"dentro de una etiqueta [code]table[/code]. Ver [method push_table] para más "
"detalles."
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr "Añade una etiqueta de [code]color[/code] a la pila de etiquetas."
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
@@ -63820,7 +63934,7 @@ msgstr ""
"Añade una etiqueta [code]font[/code] a la pila de etiquetas. Anula las "
"fuentes predeterminadas para su duración."
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
@@ -63829,7 +63943,7 @@ msgstr ""
"el [code]level[/code] por el [member tab_size] actual para determinar la "
"nueva longitud del margen."
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
@@ -63839,7 +63953,7 @@ msgstr ""
"etiquetas. Esto es lo mismo que añadir una etiqueta [code]i[/code] si no "
"está actualmente en una etiqueta [code]b[/code]."
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
@@ -63849,7 +63963,7 @@ msgstr ""
"BBCodes [code]ol[/code] o [code]ul[/code], pero soporta más tipos de listas. "
"No está totalmente implementado!"
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
@@ -63858,31 +63972,31 @@ msgstr ""
"BBCode [code][url=algo]{text}[/url][/code], pero soporta tipos de metadatos "
"que no son [String]."
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
"Añade una etiqueta [code]font[/code] con una fuente monoespacio a la pila de "
"etiquetas."
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
"Añade una etiqueta [code]font[/code] con una fuente normal a la pila de "
"etiquetas."
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr "Añade una etiqueta de [code]s[/code] a la pila de etiquetas."
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr "Añade una etiqueta [code]table=columns[/code] a la pila de etiquetas."
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr "Añade una etiqueta [code]u[/code] a la pila de etiquetas."
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -63894,13 +64008,13 @@ msgstr ""
"El argumento [code]line[/code] es el índice de la línea a eliminar, puede "
"tomar valores en el intervalo [code][0, get_line_count() - 1][/code]."
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
"Desplaza la línea superior de la ventana para que coincida con la "
"[code]line[/code]."
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -63918,7 +64032,7 @@ msgstr ""
"Si [code]expand[/code] es [code]false[/code], la columna no contribuirá a la "
"proporción total."
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -63926,7 +64040,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
#, fuzzy
msgid ""
"The label's text in BBCode format. Is not representative of manual "
@@ -63946,7 +64060,7 @@ msgstr ""
"\"[/code]) ya que reemplaza todo el texto y puede causar ralentizaciones. "
"Utilice [method append_bbcode] para añadir el texto en su lugar."
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
@@ -63957,7 +64071,7 @@ msgstr ""
"Para añadir un efecto personalizado, es más conveniente usar [method "
"install_effect]."
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -63971,7 +64085,7 @@ msgstr ""
"solucionar los problemas con [RichTextLabel] en los [Container]s, pero no es "
"fiable en algunos casos y se eliminará en futuras versiones."
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
@@ -63979,12 +64093,12 @@ msgstr ""
"Si [code]true[/code], la etiqueta subraya las metaetiquetas como [code][url]"
"{text}[/url][/code]."
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
"Si [code]true[/code], la etiqueta utiliza el color de fuente personalizado."
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -63996,7 +64110,7 @@ msgstr ""
"[b]Nota:[/b] Al establecer esta propiedad se actualiza [member "
"visible_characters] en base al [method get_total_character_count] actual."
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
@@ -64005,7 +64119,7 @@ msgstr ""
"[code]false[/code] no bloquea completamente el desplazamiento. Ver [method "
"scroll_to_line]."
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
@@ -64013,11 +64127,11 @@ msgstr ""
"Si [code]true[/code], la ventana se desplaza hacia abajo para mostrar "
"automáticamente el nuevo contenido."
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr "Si [code]true[/code], la etiqueta permite la selección de texto."
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
@@ -64026,7 +64140,7 @@ msgstr ""
"[code]\\t[/code] en las etiquetas de texto, sólo a las etiquetas con "
"indentado."
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
@@ -64037,7 +64151,7 @@ msgstr ""
"texto crudo en la parte superior de la misma. No analiza los BBCodes. No "
"modifica [member bbcode_text]."
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
#, fuzzy
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
@@ -64050,7 +64164,7 @@ msgstr ""
"[b]Nota:[/b] Al establecer esta propiedad se actualiza [member "
"visible_characters] en base al [method get_total_character_count] actual."
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -64065,59 +64179,59 @@ msgstr ""
"método [method push_meta] para insertar manualmente los datos en la pila de "
"etiquetas."
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr "Se activa cuando el ratón sale de una meta etiqueta."
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr "Se activa cuando el ratón sale de una meta etiqueta."
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr "Hace que el texto se alinee a la izquierda."
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr "Hace que el texto se centre."
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr "Hace que el texto se alinee a la derecha."
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr "Hace que el texto se expanda para rellenar el ancho."
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr "Cada elemento de la lista tiene un marcador numérico."
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr "Cada elemento de la lista tiene un marcador de letras."
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr "Cada elemento de la lista tiene un marcador de círculo lleno."
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr "La fuente usada para el texto en negrita."
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr "La fuente usada para el texto en negrita y cursiva."
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr "El color de texto por defecto."
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr "El fondo utilizado cuando se enfoca el [RichTextLabel]."
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
@@ -64125,35 +64239,35 @@ msgstr ""
"El color del texto seleccionado, utilizado cuando [member selection_enabled] "
"es [code]true[/code]."
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr "El color de la sombra de la fuente."
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr "La fuente usada para el texto en cursiva."
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr "El espacio vertical entre las líneas."
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr "La fuente usada para el texto monoespacio."
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr "El fondo normal para el [RichTextLabel]."
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr "La fuente por defecto."
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr "El color de la caja de selección."
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
@@ -64161,19 +64275,19 @@ msgstr ""
"Valor booleano. Si 1 ([code]true[/code]), la sombra se mostrará alrededor de "
"todo el texto como un contorno."
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr "El desplazamiento horizontal de la sombra de la fuente."
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr "El desplazamiento vertical de la sombra de la fuente."
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr "La separación horizontal de elementos en una tabla."
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr "La separación vertical de elementos en una tabla."
@@ -64607,14 +64721,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -64627,15 +64744,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -64987,14 +65107,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -65004,14 +65127,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -65708,27 +65834,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
#, fuzzy
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
@@ -65746,7 +65876,7 @@ msgstr ""
"[code]path[/code] no puede ser cargado en un [PackedScene], o [constant "
"ERR_CANT_CREATE] si esa escena no puede ser instanciada."
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
#, fuzzy
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
@@ -65760,7 +65890,7 @@ msgstr ""
"Devuelve [constant OK] en el éxito o [constant ERR_CANT_CREATE] si la escena "
"no puede ser instanciada."
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
#, fuzzy
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
@@ -65789,7 +65919,7 @@ msgstr ""
" imprimir(\"fin\")\n"
"[/codeblock]"
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
@@ -65797,7 +65927,7 @@ msgstr ""
"Devuelve el número de fotogramas actual, es decir, el número total de "
"fotogramas desde que se inició la aplicación."
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
@@ -65805,30 +65935,30 @@ msgstr ""
"Devuelve las identificaciones de todos los pares conectados de este "
"[SceneTree] de [member network_peer]."
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
"Devuelve la identificación única de este [SceneTree] de [member "
"network_peer]."
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr "Devuelve el número de nodos en este [SceneTree]."
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr "Devuelve una lista de todos los nodos asignados al grupo dado."
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
"Devuelve la identificación del remitente de la última llamada RPC recibida."
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr "Devuelve [code]true[/code] si el grupo dado existe."
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
@@ -65837,7 +65967,7 @@ msgstr ""
"Devuelve [code]true[/code] si el nodo está procesando una entrada no "
"manejada (ver [method set_process_unhandled_input])."
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
@@ -65845,12 +65975,12 @@ msgstr ""
"Devuelve [code]true[/code] si el [member de la network_pee] de este "
"[SceneTree] está en modo servidor (escuchando las conexiones)."
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
"Envía la notificación dada a todos los miembros del [code]group[/code]."
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
@@ -65858,7 +65988,7 @@ msgstr ""
"Envía la notificación dada a todos los miembros del [code]grupo[/code], "
"respetando las [enum GroupCallFlags] dadas."
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
@@ -65866,7 +65996,7 @@ msgstr ""
"Pone en cola el objeto dado para su eliminación, retrasando la llamada al "
"[método Object.free] hasta después del fotograma actual."
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
#, fuzzy
msgid ""
"Quits the application at the end of the current iteration. A process "
@@ -65881,7 +66011,7 @@ msgstr ""
"opcionalmente como argumento. Si este argumento es [code]0[/code] o mayor, "
"anulará el [member OS.exit_code] definido antes de salir de la aplicación."
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -65895,7 +66025,7 @@ msgstr ""
"current_scene] no puede ser cargada en una [PackedScene], o [constant "
"ERR_CANT_CREATE] si la escena no puede ser instanciada."
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
@@ -65905,7 +66035,7 @@ msgstr ""
"por defecto.\n"
"Para las plataformas móviles, véase [method set_quit_on_go_back]."
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
@@ -65913,7 +66043,7 @@ msgstr ""
"Establece la [code]property[/code] dada a [code]value[/code] en todos los "
"miembros del grupo dado."
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
@@ -65921,12 +66051,12 @@ msgstr ""
"Establece la [code]property[/code] dada a [code]value[/code] en todos los "
"miembros del grupo dado, respetando las [enum GroupCallFlags] dadas."
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
#, fuzzy
msgid "Marks the most recent [InputEvent] as handled."
msgstr "Devuelve el [InputEvent] del atajo como una [String]."
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
#, fuzzy
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
@@ -65939,17 +66069,17 @@ msgstr ""
"Para manejar el botón 'Retroceder' cuando esta opción está desactivada, usa "
"[constant DisplayServer.WINDOW_EVENT_GO_BACK_REQUEST]."
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr "La escena actual."
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
@@ -65957,7 +66087,7 @@ msgstr ""
"Si [code]true[/code], las formas de colisión serán visibles cuando se "
"ejecute el juego desde el editor con fines de depuración."
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
@@ -65965,15 +66095,15 @@ msgstr ""
"Si [code]true[/code], los polígonos de navegación serán visibles cuando se "
"ejecute el juego desde el editor para su depuración."
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr "La raíz de la escena editada."
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr "La instancia por defecto [MultiplayerAPI] para este [SceneTree]."
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -65991,7 +66121,7 @@ msgstr ""
"hilo, paso de tiempo específico) y para la protección manual [Mutex] cuando "
"se accede a la [MultiplayerAPI] desde los hilos."
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -66011,7 +66141,7 @@ msgstr ""
"desconexión, nuevos clientes) se hace conectando a las señales de "
"[SceneTree]."
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
#, fuzzy
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
@@ -66027,7 +66157,7 @@ msgstr ""
"- [method Node._process], [method Node._physics_process] y [method Node."
"_input] no serán llamados más en los nodos."
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
@@ -66035,17 +66165,17 @@ msgstr ""
"Si [code]true[/code], el [SceneTree] de [member network_peer] rechaza las "
"nuevas conexiones entrantes."
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
#, fuzzy
msgid "The [SceneTree]'s root [Viewport]."
msgstr "La ventana de raíz del [SceneTree]."
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr "Si [code]true[/code], se habilita el mapeado normal."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
@@ -66053,7 +66183,7 @@ msgstr ""
"Emitido siempre que el [SceneTree] de este [member network_peer] se conectó "
"con éxito a un servidor. Sólo se emite en los clientes."
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
@@ -66061,7 +66191,7 @@ msgstr ""
"Emitido siempre que el [member network_peer] de este [SceneTree] no logre "
"establecer una conexión con un servidor. Sólo se emite en los clientes."
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
@@ -66072,12 +66202,12 @@ msgstr ""
"son una lista de las rutas de los archivos y el identificador de la pantalla "
"donde se originó el arrastre."
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
#, fuzzy
msgid "Emitted whenever global menu item is clicked."
msgstr "Emitido cuando se selecciona un elemento."
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
@@ -66085,7 +66215,7 @@ msgstr ""
"Emitido inmediatamente antes de que se llame a [method Node._process] en "
"cada nodo del [SceneTree]."
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -66098,7 +66228,7 @@ msgstr ""
"conectarse a un servidor, un cliente también recibe esta señal para el "
"servidor (con ID 1)."
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
@@ -66108,11 +66238,11 @@ msgstr ""
"desconecta de un par. Los clientes son notificados cuando otros clientes se "
"desconectan del mismo servidor."
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr "Se emite cada vez que se añade un nodo al [SceneTree]."
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
@@ -66120,15 +66250,15 @@ msgstr ""
"Emitido cuando la configuración de un nodo cambió. Sólo se emite en el modo "
"[code]tool[/code]."
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr "Se emite cada vez que se quita un nodo del [SceneTree]."
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr "Emitido cada vez que un nodo es renombrado."
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
@@ -66136,13 +66266,13 @@ msgstr ""
"Emitido inmediatamente antes de que [method Node._physics_process] sea "
"llamado en cada nodo del [SceneTree]."
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
@@ -66150,7 +66280,7 @@ msgstr ""
"Emitido cada vez que el [SceneTree] de este [member network_peer] se "
"desconecta del servidor. Sólo se emite en los clientes."
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
@@ -66158,65 +66288,65 @@ msgstr ""
"Emitido cada vez que la jerarquía [SceneTree] cambiaba (los niños eran "
"movidos o renombrados, etc.)."
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr "Llama a un grupo sin flags (por defecto)."
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr "Llama a un grupo en orden inverso al de la escena."
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
"Llama a un grupo inmediatamente (las llamadas se hacen normalmente en "
"reposo)."
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
"Llama a un grupo sólo una vez aunque la llamada se ejecute muchas veces."
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
#, fuzzy
msgid "No stretching."
msgstr "Para de escuchar."
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -66256,7 +66386,7 @@ msgstr ""
msgid "The time remaining."
msgstr "El tiempo restante."
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr "Emitido cuando el temporizador llega a 0."
@@ -66525,18 +66655,23 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-"Devuelve la barra de desplazamiento horizontal [HScrollBar] de este "
-"[ScrollContainer]."
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-"Devuelve la barra de desplazamiento vertical [VScrollBar] de este "
-"[ScrollContainer]."
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
@@ -66546,31 +66681,31 @@ msgstr ""
"hijos enfocados (incluyendo los niños indirectos) para asegurarse de que son "
"completamente visibles."
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr "El valor actual de desplazamiento horizontal."
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr "Si [code]true[/code], permite el desplazamiento horizontal."
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr "El valor actual de scroll vertical."
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr "Si [code]true[/code], permite el desplazamiento vertical."
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr "Emitido cuando el scroll se detiene."
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr "Emitido cuando se inicia el scrolling."
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr "El fondo [StyleBox] del [ScrollContainer]."
@@ -69498,16 +69633,17 @@ msgstr "Aplica el valor actual de este [SpinBox]."
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"Devuelve la instancia [LineEdit] de este [SpinBox]. Puedes usarlo para "
-"acceder a las propiedades y métodos de [LineEdit]."
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr "Establece la alineación del texto del [SpinBox]."
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
@@ -69515,7 +69651,7 @@ msgstr ""
"Si [code]true[/code], el [SpinBox] será editable. De lo contrario, sólo será "
"de lectura."
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
@@ -69523,7 +69659,7 @@ msgstr ""
"Añade la string especificada del [code]prefix[/code] antes del valor "
"numérico del [SpinBox]."
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
@@ -69531,7 +69667,7 @@ msgstr ""
"Añade la string especificada del [code]prefix[/code] antes del valor "
"numérico del [SpinBox]."
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
#, fuzzy
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -72545,25 +72681,26 @@ msgstr "Devuelve el nodo hijo [Control] situado en el pestaña activa."
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"Devuelve la instancia del nodo [Popup] si ya se ha establecido uno con "
-"[method set_popup]."
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr "Devuelve la pestaña anteriormente activa."
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
"Devuelve el nodo [Control] de la pestaña en el índice [code]tab_idx[/code]."
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr "Devuelve el número de pestañas."
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
@@ -72571,7 +72708,7 @@ msgstr ""
"Devuelve [code]true[/code] si la pestaña del índice [code]tab_idx[/code] "
"está desactivada."
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
@@ -72579,7 +72716,7 @@ msgstr ""
"Devuelve [code]true[/code] si la pestaña del índice [code]tab_idx[/code] "
"está desactivada."
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
#, fuzzy
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
@@ -72588,14 +72725,14 @@ msgstr ""
"Devuelve el [Texture2D] para la pestaña en el índice [code]tab_idx[/code] o "
"[code]null[/code] si la pestaña no tiene [Texture2D]."
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
@@ -72605,11 +72742,11 @@ msgstr ""
"títulos de las pestañas predeterminan el nombre del nodo hijo indexado, pero "
"esto puede ser sobrescrito con [method set_tab_title]."
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr "Devuelve el [TabContainer] reordena la identificación de grupo."
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
@@ -72618,7 +72755,7 @@ msgstr ""
"emergente en la esquina superior derecha del [TabContainer]. Al hacer clic "
"en él se expandirá el nodo [Popup]."
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
#, fuzzy
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
@@ -72627,7 +72764,7 @@ msgstr ""
"Devuelve [code]true[/code] si la pestaña del índice [code]tab_idx[/code] "
"está desactivada."
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
#, fuzzy
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
@@ -72636,11 +72773,11 @@ msgstr ""
"Devuelve [code]true[/code] si la pestaña del índice [code]tab_idx[/code] "
"está desactivada."
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr "Establece un icono para la pestaña en el índice [code]tab_idx[/code]."
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
#, fuzzy
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
@@ -72650,7 +72787,7 @@ msgstr ""
"títulos de las pestañas tienen por defecto el nombre del nodo hijo indexado, "
"pero éste puede ser sobreescrito con [method set_tab_title]."
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
#, fuzzy
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
@@ -72661,7 +72798,7 @@ msgstr ""
"mismo valor para permitir el arrastre de pestañas entre [TabContainer]. "
"Habilita el arrastre con [code]set_drag_to_rearrange_enabled(true)[/code]."
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
#, fuzzy
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
@@ -72670,7 +72807,7 @@ msgstr ""
"Si [code]true[/code], las pestañas son visibles. Si [code]false[/code], el "
"contenido y los títulos de las pestañas están ocultos."
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
@@ -72680,13 +72817,13 @@ msgstr ""
"[code]visible[/code] de este índice del nodo [Control] se establece en "
"[code]true[/code] y todas las demás se establecen en [code]false[/code]."
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
"Si [code]true[/code], las pestañas se pueden reorganizar con el arrastre del "
"ratón."
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
@@ -72694,7 +72831,7 @@ msgstr ""
"La alineación de todas las pestañas en el contenedor de pestañas. Vea las "
"constantes [enum TabAlign] para más detalles."
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
@@ -72702,7 +72839,7 @@ msgstr ""
"Si [code]true[/code], las pestañas son visibles. Si [code]false[/code], el "
"contenido y los títulos de las pestañas están ocultos."
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
@@ -72711,7 +72848,7 @@ msgstr ""
"Si [code]true[/code], los nodos hijos [Control] que están ocultos tienen en "
"cuenta su tamaño mínimo en el total, en lugar de sólo el visible actualmente."
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
@@ -72719,27 +72856,27 @@ msgstr ""
"Se emite cuando se hace clic en el botón [Popup] del [TabContainer]. "
"Consulte [method set_popup] para obtener más detalles."
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr "Emitido cuando se cambia a otra pestaña."
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr "Se emite cuando se selecciona una pestaña, aunque sea la actual."
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr "Alinea las pestañas a la izquierda."
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr "Alinea las pestañas al centro."
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr "Alinee las pestañas a la derecha."
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
@@ -72750,7 +72887,7 @@ msgstr ""
"desactivado (es decir, la primera pestaña es visible), aparece semi-"
"transparente."
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
@@ -72760,28 +72897,28 @@ msgstr ""
"pestañas que no caben en el ancho del contenedor. Se utiliza cuando el "
"cursor se mantiene encima del botón."
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr "La fuente usada para dibujar los nombres de las pestañas."
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr "El color de la fuente de las pestañas inactivas."
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr "El color de la fuente de las pestañas desactivadas."
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr "Color de la fuente de la pestaña actualmente seleccionada."
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
#, fuzzy
msgid "Horizontal separation between tabs."
msgstr "La separación horizontal entre las pestañas."
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
@@ -72792,7 +72929,7 @@ msgstr ""
"desactivado (es decir, la última pestaña es visible) aparece semi-"
"transparente."
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
@@ -72802,11 +72939,11 @@ msgstr ""
"pestañas que no caben en el ancho del contenedor. Se utiliza cuando el "
"cursor esta encima del botón."
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr "El icono para el botón de menú (ver [method set_popup])."
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
@@ -72814,23 +72951,23 @@ msgstr ""
"El icono del botón de menú (ver [method set_popup]) cuando se pasa el cursor "
"por encima de él."
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr "El estilo para el relleno de fondo."
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr "El espacio en los bordes izquierdo y derecho de la barra de pestañas."
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr "El estilo de las pestañas inactivas."
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr "El estilo de las pestañas desactivadas."
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr "El estilo de la pestaña actualmente seleccionada."
@@ -73211,32 +73348,33 @@ msgstr "Devuelve la cantidad de líneas totales en el texto."
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"Devuelve el [PopupMenu] de este [TextEdit]. Por defecto, este menú se "
-"muestra cuando se hace clic con el botón derecho del ratón en el [TextEdit]."
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr "Devuelve la columna de inicio de la selección."
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr "Devuelve la línea de inicio de la selección."
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr "Devuelve el texto dentro de la selección."
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr "Devuelve la columna de final de selección."
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr "Devuelve la línea final de selección."
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
#, fuzzy
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
@@ -73244,35 +73382,35 @@ msgstr ""
"Devuelve un texto [String] con la palabra bajo la ubicación del cursor del "
"ratón."
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
#, fuzzy
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr "Devuelve si la [code]class[/code] especificada está disponible o no."
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr "Devuelve [code]true[/code] si una acción de \"redo\" está disponible."
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
"Devuelve [code]true[/code] si se dispone de una acción de \"deshacer\"."
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr "Inserta el texto especificado en la posición del cursor."
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr "Devuelve si la línea del índice especificado está doblado o no."
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr "Devuelve si la línea en el índice especificado está oculta o no."
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
@@ -73280,7 +73418,7 @@ msgstr ""
"Devuelve [code]true[/code] si existe un subnodo con el [code]name[/code] "
"especificado."
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
@@ -73289,7 +73427,7 @@ msgstr ""
"Devuelve [code]true[/code] si existe un subnodo con el [code]name[/code] "
"especificado."
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
@@ -73298,11 +73436,11 @@ msgstr ""
"Devuelve [code]true[/code] si existe un subnodo con el [code]name[/code] "
"especificado."
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr "Devuelve [code]true[/code] si la selección está activa."
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
@@ -73311,15 +73449,15 @@ msgstr ""
"especificado. Véase [enum MenuItems] para una lista de los índices "
"disponibles."
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr "Pega la selección actual."
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr "Realiza la operación de rehacer."
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
@@ -73327,7 +73465,7 @@ msgstr ""
"Elimina todos los breakpoints. Esto no disparará la señal "
"[breakpoint_toggled]."
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
#, fuzzy
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
@@ -73356,7 +73494,7 @@ msgstr ""
" var column_number = result.column\n"
"[/codeblock]"
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
@@ -73365,7 +73503,7 @@ msgstr ""
"Si [member selecting_enabled] es [code]false[/code], no se producirá ninguna "
"selección."
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
@@ -73374,47 +73512,47 @@ msgstr ""
"Si [member selecting_enabled] es [code]false[/code], no se producirá ninguna "
"selección."
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr "Establece el texto para una línea específica."
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr "Si [code]true[/code], oculta la línea del índice especificado."
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr "Cambia el plegado del bloque de código en la línea dada."
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr "Realiza la operación de deshacer."
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr "Despliega la línea dada, si se dobla."
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
@@ -73422,11 +73560,11 @@ msgstr ""
"Deshacer todas las líneas que fueron previamente establecidas como ocultas "
"por [method set_line_as_hidden]."
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr "Si [code]true[/code], el breakpoint es visible."
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
@@ -73434,7 +73572,7 @@ msgstr ""
"Si [code]true[/code], el caret se muestra como un rectángulo.\n"
"Si [code]false[/code], el caret se muestra como una barra."
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
@@ -73445,13 +73583,13 @@ msgstr ""
"Si [code]false[/code], el menú contextual no tiene en cuenta la posición del "
"ratón."
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
"Si [code]true[/code], un clic con el botón derecho del ratón muestra el menú "
"contextual."
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
@@ -73459,14 +73597,14 @@ msgstr ""
"Si [code]true[/code], el carácter \"espacio\" tendrá una representación "
"visible."
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
"Si [code]true[/code], el carácter \"tab\" tendrá una representación visible."
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
@@ -73474,7 +73612,7 @@ msgstr ""
"Si [code]true[/code], el canalón de pliegue es visible. Esto permite doblar "
"grupos de líneas indentadas."
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
@@ -73482,7 +73620,7 @@ msgstr ""
"Si [code]true[/code], todas las líneas que se han establecido como ocultas "
"por [method set_line_as_hidden], no serán visibles."
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
@@ -73490,11 +73628,11 @@ msgstr ""
"Si [code]true[/code], se resaltarán todas las ocurrencias del texto "
"seleccionado."
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr "Si [code]true[/code], se resalta la línea que contiene el cursor."
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
@@ -73502,11 +73640,11 @@ msgstr ""
"Si [code]true[/code], se muestra un minimapa, que proporciona un esquema de "
"su código fuente."
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr "El ancho, en píxeles, del minimapa."
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
@@ -73514,7 +73652,7 @@ msgstr ""
"Si [code]true[/code], se utilizará el [code]font_color_selected[/code] "
"personalizado para el texto seleccionado."
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
@@ -73522,19 +73660,19 @@ msgstr ""
"Si [code]true[/code], se activa el modo de sólo lectura. El texto existente "
"no puede ser modificado y no se puede añadir texto nuevo."
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
@@ -73544,7 +73682,7 @@ msgstr ""
"Si [code]false[/code], el texto no puede ser seleccionado por el usuario o "
"por los métodos [method select] o [method select_all]."
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
@@ -73552,14 +73690,14 @@ msgstr ""
"Si [code]true[/code], las teclas de atajo para los elementos del menú "
"contextual están habilitadas, incluso si el menú contextual está desactivado."
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
"Si [code]true[/code], los números de línea se muestran a la izquierda del "
"texto."
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
@@ -73567,7 +73705,7 @@ msgstr ""
"Si [code]true[/code], establece el [code]step[/code] de las scrollbars en "
"[code]0.25[/code] lo que resulta en un desplazamiento más suave."
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
#, fuzzy
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
@@ -73576,15 +73714,15 @@ msgstr ""
"Si [code]true[/code], todas las líneas que se han establecido como ocultas "
"por [method set_line_as_hidden], no serán visibles."
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr "Valor de string de [TextEdit]."
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr "Sensibilidad de scroll vertical."
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
@@ -73592,41 +73730,41 @@ msgstr ""
"Si [code]true[/code], permite la envoltura del texto cuando va más allá del "
"borde de lo que es visible."
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
"Emitido cuando se coloca un breakpoint a través de la canaleta del "
"breakpoint."
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr "Emitido cuando el cursor cambia."
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr "Emitido cuando se hace clic en el icono de información."
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr "Coincide con el caso cuando se busca."
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr "Coincide con palabras enteras cuando se busca."
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr "Busca desde el final hasta el principio."
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
@@ -73634,19 +73772,19 @@ msgstr ""
"Pega el texto del portapapeles sobre el texto seleccionado (o en la posición "
"del cursor)."
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr "Borra todo el texto [TextEdit]."
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr "Selecciona todo el texto [TextEdit]."
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr "Rehace la acción anterior."
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
@@ -73654,7 +73792,7 @@ msgstr ""
"Establece el fondo [Color] de este [TextEdit]. [member syntax_highlighting] "
"tiene que estar activada."
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
@@ -73662,7 +73800,7 @@ msgstr ""
"Establece el [Color] del marcador. [member syntax_highlighting] tiene que "
"estar activado."
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
@@ -73670,15 +73808,15 @@ msgstr ""
"Establece el [color] de los breakpoints. El [member breakpoint_gutter] tiene "
"que estar activado."
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr "Establece la [Font] predeterminada."
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr "Establece la fuente [Color]."
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
@@ -73686,7 +73824,7 @@ msgstr ""
"Establece el [Color] del texto seleccionado. [member "
"override_selected_font_color] tiene que estar activado."
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
@@ -73694,36 +73832,36 @@ msgstr ""
"Establece el [Color] de los números de línea. [member show_line_numbers] "
"tiene que estar activado."
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr "Establece el espacio entre las líneas."
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr "Establece el [Color] del texto marcado."
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr "Establece el [StyleBox] de este [TextEdit]."
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
"Establece el [StyleBox] de este [TextEdit] cuando [member readonly] está "
"activado."
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr "Establece el resaltado [Color] de las selecciones de texto."
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
#, fuzzy
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
"Establece un [Texture2D] personalizado para los caracteres del tabulador."
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -73816,7 +73954,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -73829,19 +73967,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
#, fuzzy
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -73854,7 +73992,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
#, fuzzy
msgid "Texture is a video surface."
msgstr "Obtiene un nombre para una superficie dada."
@@ -75007,15 +75145,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
+msgstr ""
+
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
msgstr ""
-"Devuelve [code]true[/code] si este [Thread] está actualmente activo. Un "
-"[Thread] activo no puede empezar a trabajar en un nuevo método pero puede "
-"unirse con [method wait_to_finish]."
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -75032,26 +75176,28 @@ msgstr ""
"Devuelve [constant OK] en el éxito, o [constant ERR_CANT_CREATE] en el "
"fracaso."
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr "Un hilo que corre con menor prioridad de lo normal."
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr "Un hilo con una prioridad estándar."
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr "Un hilo que corre con mayor prioridad de lo normal."
@@ -75987,10 +76133,17 @@ msgstr ""
"del temporizador, utilice [method start]."
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
-msgstr "Tiempo de espera en segundos."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
+msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
@@ -75998,7 +76151,7 @@ msgstr ""
"Actualizar el temporizador durante el paso de la física en cada fotograma "
"(procesamiento de cuadros fijos)."
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
"Actualiza el temporizador durante el tiempo de inactividad en cada fotograma."
@@ -84471,7 +84624,7 @@ msgstr ""
"Establece las variables a utilizar con el efecto de la altura de la niebla. "
"Ver [Environment] para más detalles."
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
#, fuzzy
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
@@ -84480,7 +84633,7 @@ msgstr ""
"Establece las variables que se utilizarán con el efecto de post-proceso "
"\"tonemap\". Ver [Environment] para más detalles."
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
#, fuzzy
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
@@ -84489,7 +84642,7 @@ msgstr ""
"Establece el [Sky] para ser usado como fondo del ambiente cuando se usa el "
"[i]BGMode[/i] cielo. Equivalente a [member Environment.sky]."
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
#, fuzzy
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
@@ -84498,7 +84651,7 @@ msgstr ""
"Establece un campo de visión personalizado para el fondo [Sky]. Equivalente "
"a [member Environment.sky_custom_fov]."
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
#, fuzzy
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
@@ -84508,7 +84661,7 @@ msgstr ""
"Equivalente a [member Environment.sky_rotation], donde el vector de rotación "
"se utiliza para construir la [Basis]."
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
#, fuzzy
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
@@ -84517,7 +84670,7 @@ msgstr ""
"Establece las variables que se utilizarán con el efecto de post-proceso "
"\"reflejos del espacio de la pantalla\". Ver [Environment] para más detalles."
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
@@ -84525,7 +84678,7 @@ msgstr ""
"Establece las variables que se utilizarán con el efecto de post-proceso "
"\"reflejos del espacio de la pantalla\". Ver [Environment] para más detalles."
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
@@ -84533,11 +84686,11 @@ msgstr ""
"Establece las variables que se utilizarán con el efecto de post-proceso "
"\"tonemap\". Ver [Environment] para más detalles."
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr "Elimina los buffers y limpia los cubos de test."
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
@@ -84546,32 +84699,32 @@ msgstr ""
"actualiza todos los [Viewport]s que están configurados para actualizarse. "
"Utilícelo con extrema precaución."
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr "Sincroniza los hilos."
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
#, fuzzy
msgid "Tries to free an object in the VisualServer."
msgstr "Intenta liberar un objeto en el RenderingServer."
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
"Devuelve cierta información, véase [enum RenderInfo] para las opciones."
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
"Devuelve la identificación del cubo de test. Crea uno si no existe ninguno."
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
"Devuelve la identificación de la textura de prueba. Crea una si no existe "
"ninguna."
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -84583,7 +84736,7 @@ msgstr ""
"[b]Nota:[/b] Cuando se ejecuta un binario headless o de servidor, esta "
"función devuelve una string vacía."
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
@@ -84594,13 +84747,13 @@ msgstr ""
"[b]Nota:[/b] Cuando se ejecuta un binario headless o de servidor, esta "
"función devuelve una string vacía."
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
"Devuelve la identificación de una textura blanca. Crea una si no existe "
"ninguna."
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
#, fuzzy
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
@@ -84619,13 +84772,13 @@ msgstr ""
"Para colocarla en una escena, adjunta esta sonda de reflexión a una "
"instancia usando [method instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
#, fuzzy
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
@@ -84634,17 +84787,17 @@ msgstr ""
"Devuelve el cuadro delimitador alineado con el eje que contiene todas las "
"partículas que están activas en el cuadro actual."
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
#, fuzzy
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr "Restaurar el estado guardado por [method get_state]."
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Devuelve el espacio asignado a la zona."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
#, fuzzy
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
@@ -84653,7 +84806,7 @@ msgstr ""
"Establece el entorno utilizado por esta cámara. Equivalente a [member "
"Camera3D.environment]."
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
#, fuzzy
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
@@ -84662,7 +84815,7 @@ msgstr ""
"Establece la relación de explosividad. Equivalente a [member de "
"GPUParticles3D.explosiveness]."
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
#, fuzzy
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
@@ -84671,7 +84824,7 @@ msgstr ""
"Establece la transformación espacial del mundo de la instancia. Equivalente "
"a [member Nodo3D.transform]."
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
#, fuzzy
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
@@ -84680,13 +84833,13 @@ msgstr ""
"Establece la relación de explosividad. Equivalente a [member de "
"GPUParticles3D.explosiveness]."
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
#, fuzzy
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
"Devuelve la normalidad para el punto devuelto por [method get_closest_point]."
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
#, fuzzy
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
@@ -84695,7 +84848,7 @@ msgstr ""
"Devuelve [code]true[/code] si el precargador contiene un recurso asociado a "
"[code]name[/code]."
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
#, fuzzy
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
@@ -84704,7 +84857,7 @@ msgstr ""
"Si [code]true[/code], los reflejos ignorarán la contribución del cielo. "
"Equivalente a [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
#, fuzzy
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
@@ -84713,7 +84866,7 @@ msgstr ""
"Establece el número de pases de dibujo a utilizar. Equivalente a [member de "
"GPUParticles3D.draw_passes]."
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
#, fuzzy
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
@@ -84721,53 +84874,53 @@ msgstr ""
"Devuelve el cuadro delimitador alineado con el eje que contiene todas las "
"partículas que están activas en el cuadro actual."
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
#, fuzzy
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
@@ -84776,12 +84929,12 @@ msgstr ""
"Establece el desplazamiento de la textura de la luz. Equivalente a [member "
"Light2D.offset]."
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
#, fuzzy
msgid "Sets the to cell [Transform] for this GI probe."
msgstr "Establece la [Transform] del dueño de la forma dada."
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
#, fuzzy
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
@@ -84790,11 +84943,11 @@ msgstr ""
"Devuelve [code]true[/code] si se han hecho cambios en los datos del "
"RenderingServer. Normalmente se llama [method force_draw] si esto ocurre."
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr "Aún no se ha implementado. Siempre devuelve [code]false[/code]."
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
#, fuzzy
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
@@ -84808,7 +84961,7 @@ msgstr ""
"característica. Las características pueden ser [code]s3tc[/code], [code]etc[/"
"code], [code]etc2[/code] y [code]pvrtc[/code]."
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
#, fuzzy
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
@@ -84817,7 +84970,7 @@ msgstr ""
"Establec las partes internas de [ImmediateGeometry3D] para preparar el "
"dibujado. Equivalente a [method ImmediateGeometry3D.begin]."
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
#, fuzzy
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
@@ -84826,7 +84979,7 @@ msgstr ""
"Borra todo lo que se estableció entre [method immediate_begin] y [method "
"immediate_end]. Equivalente a [method ImmediateGeometry3D.clear]."
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
#, fuzzy
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
@@ -84835,7 +84988,7 @@ msgstr ""
"Establece el color que se usará con el próximo vértice. Equivalente a "
"[method ImmediateGeometry3D.set_color]."
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
#, fuzzy
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
@@ -84854,7 +85007,7 @@ msgstr ""
"Para colocar en una escena, adjunta esta geometría inmediata a una instancia "
"usando [method instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
#, fuzzy
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
@@ -84863,12 +85016,12 @@ msgstr ""
"Termina de dibujar la [ImmediateGeometry3D] y la muestra. Equivalente a "
"[method ImmediateGeometry3D.end]."
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Devuelve el material asignado a la [ImmediateGeometry3D]."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
#, fuzzy
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
@@ -84877,13 +85030,13 @@ msgstr ""
"Establece la normalidad para ser usada con el siguiente vértice. Equivalente "
"a [method ImmediateGeometry3D.set_normal]."
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
#, fuzzy
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
"Establece el material que se utilizará para dibujar la [ImmediateGeometry3D]."
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
#, fuzzy
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
@@ -84892,7 +85045,7 @@ msgstr ""
"Establece la tangente que se usará con el siguiente vértice. Equivalente a "
"[method ImmediateGeometry3D.set_tangent]."
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
#, fuzzy
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
@@ -84901,7 +85054,7 @@ msgstr ""
"Establece el UV para ser usado con el siguiente vértice. Equivalente a "
"[method ImmediateGeometry3D.set_uv]."
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
#, fuzzy
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
@@ -84910,7 +85063,7 @@ msgstr ""
"Establece el UV2 para ser usado con el siguiente vértice. Equivalente a "
"[method ImmediateGeometry3D.set_uv2]."
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
#, fuzzy
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
@@ -84919,7 +85072,7 @@ msgstr ""
"Añade el siguiente vértice utilizando la información proporcionada por "
"adelantado. Equivalente a [method ImmediateGeometry3D.add_vertex]."
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
#, fuzzy
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
@@ -84930,7 +85083,7 @@ msgstr ""
"adelantado. Esta es una clase de ayuda que llama a [method immediate_vertex] "
"bajo el capó. Equivalente a [method ImmediateGeometry3D.add_vertex]."
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
#, fuzzy
msgid ""
"Initializes the visual server. This function is called internally by "
@@ -84941,7 +85094,7 @@ msgstr ""
"por el código dependiente de la plataforma durante la inicialización del "
"motor. Si se llama desde un juego en ejecución, no hará nada."
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
@@ -84952,7 +85105,7 @@ msgstr ""
"instances_cull_aabb], [method instances_cull_convex], y [method "
"instances_cull_ray]."
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
@@ -84960,7 +85113,7 @@ msgstr ""
"Adjunta un esqueleto a una instancia. Elimina el esqueleto anterior de la "
"instancia."
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
#, fuzzy
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
@@ -84982,7 +85135,7 @@ msgstr ""
"instancia para ser visibles en el escenario usando [method "
"instance_set_base]."
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
#, fuzzy
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
@@ -84998,12 +85151,12 @@ msgstr ""
"Una vez terminado el RID, querrás liberarlo usando el método estático de "
"RenderingServer [method free_rid]."
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr "No se implementó en Godot 3.x."
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
#, fuzzy
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
@@ -85012,7 +85165,7 @@ msgstr ""
"Establece la configuración del lanzamiento de sombras en uno de [enum "
"ShadowCastingSetting]. Equivalente a [member GeometryInstance3D.cast_shadow]."
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
@@ -85020,7 +85173,7 @@ msgstr ""
"Establece la bandera de un determinado [enumerar InstanceFlags]. Vea [enum "
"InstanceFlags] para más detalles."
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
#, fuzzy
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
@@ -85031,7 +85184,7 @@ msgstr ""
"superficies de la malla asociada a este caso. Equivalente a [member "
"GeometryInstance3D.material_override]."
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
#, fuzzy
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
@@ -85047,12 +85200,12 @@ msgstr ""
"GI son todos los tipos que se pueden establecer como la base de una "
"instancia para ser mostrados en el escenario."
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
"Establece el peso de una determinada forma de mezcla asociada a este caso."
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
#, fuzzy
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
@@ -85062,11 +85215,11 @@ msgstr ""
"frustum de la vista. Equivalente a [method GeometryInstance3D."
"set_custom_aabb]."
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr "Función no implementada en Godot 3.x."
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
#, fuzzy
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
@@ -85078,7 +85231,7 @@ msgstr ""
"objetos que caen fuera de la capa de hielo. Equivalente a [member "
"GeometryInstance3D.extra_cull_margin]."
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
#, fuzzy
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
@@ -85087,7 +85240,7 @@ msgstr ""
"Establece las capas de representación a las que se dibujará esta instancia. "
"Equivalente a [member VisualInstance3D.layers]."
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
@@ -85095,7 +85248,7 @@ msgstr ""
"Establece el escenario en el que se encuentra la instancia. El escenario es "
"el mundo tridimensional en el que se mostrarán los objetos."
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
#, fuzzy
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
@@ -85104,7 +85257,7 @@ msgstr ""
"Establece el material de una superficie específica. Equivalente al [method "
"MeshInstance3D.set_surface_material]."
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
#, fuzzy
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
@@ -85113,12 +85266,12 @@ msgstr ""
"Establece la transformación espacial del mundo de la instancia. Equivalente "
"a [member Nodo3D.transform]."
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
#, fuzzy
msgid "Sets the lightmap to use with this instance."
msgstr "Establece la piel que se utilizará en esta instancia."
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
#, fuzzy
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
@@ -85127,7 +85280,7 @@ msgstr ""
"Establece si una instancia se dibuja o no. Equivalente a [member Nodo3D."
"visible]."
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
#, fuzzy
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
@@ -85148,7 +85301,7 @@ msgstr ""
"[b]Advertencia:[/b] Esta función está pensada principalmente para el uso del "
"editor. Para casos de uso en el juego, prefiera la colisión física."
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
#, fuzzy
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
@@ -85169,7 +85322,7 @@ msgstr ""
"[b]Advertencia:[/b] Esta función está pensada principalmente para el uso del "
"editor. Para casos de uso en el juego, prefiera la colisión física."
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
#, fuzzy
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
@@ -85190,7 +85343,7 @@ msgstr ""
"[b]Advertencia:[/b] Esta función está pensada principalmente para el uso del "
"editor. Para casos de uso en el juego, prefiera la colisión física."
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
#, fuzzy
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
@@ -85201,7 +85354,7 @@ msgstr ""
"del mapa de sombras resultando en una transición más suave entre ellas. "
"Equivalente a [member DirectionalLight3D.directional_shadow_blend_splits]."
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
#, fuzzy
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
@@ -85213,7 +85366,7 @@ msgstr ""
"directional_shadow_depth_range]. Vea [enum "
"LightDirectionalShadowDepthRangeMode] para las opciones."
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
#, fuzzy
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
@@ -85224,7 +85377,7 @@ msgstr ""
"DirectionalLight3D.modo_sombra_direccional]. Ver [enum "
"LightDirectionalShadowMode] para las opciones."
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
#, fuzzy
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
@@ -85235,7 +85388,7 @@ msgstr ""
"mapa de sombras. El paraboloide dual es más rápido pero puede sufrir de "
"artefactos. Equivalente a [member OmniLight3D.omni_shadow_mode]."
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
#, fuzzy
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
@@ -85246,20 +85399,20 @@ msgstr ""
"mapa de sombras. El paraboloide dual es más rápido pero puede sufrir de "
"artefactos. Equivalente a [member OmniLight3D.omni_shadow_mode]."
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
#, fuzzy
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
"Establece el color de la luz. Equivalente a [member Light3D.light_color]."
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
#, fuzzy
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
@@ -85269,7 +85422,7 @@ msgstr ""
"a los objetos de las capas seleccionadas. Equivalente a [member Light3D."
"light_cull_mask]."
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
#, fuzzy
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
@@ -85278,7 +85431,7 @@ msgstr ""
"Si [code]true[/code], la luz restará luz en lugar de añadirla. Equivalente a "
"[member Light3D.light_negative]."
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
#, fuzzy
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
@@ -85287,7 +85440,7 @@ msgstr ""
"Establece el parámetro de luz especificado. Ver [enum LightParam] para las "
"opciones. Equivalente a [method Light3D.set_param]."
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
#, fuzzy
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
@@ -85303,7 +85456,7 @@ msgstr ""
"instance_geometry_set_cast_shadows_setting]. Equivalente a [member Light3D."
"shadow_reverse_cull_face]."
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
#, fuzzy
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
@@ -85312,7 +85465,7 @@ msgstr ""
"Si [code]true[/code], la luz proyectará sombras. Equivalente a [member "
"Light3D.shadow_enabled]."
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
#, fuzzy
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
@@ -85321,7 +85474,7 @@ msgstr ""
"Establece el color de la sombra proyectada por la luz. Equivalente a [member "
"Light3D.shadow_color]."
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -85331,7 +85484,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
#, fuzzy
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
@@ -85350,37 +85503,37 @@ msgstr ""
"Para colocar en una escena, adjunta esta malla a una instancia usando "
"[method instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Devuelve el tamaño del array."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
#, fuzzy
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr "Devuelve un vector transformado (multiplicado) por la matriz."
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Devuelve la [Texture2D] utilizada por el parámetro especificado."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
#, fuzzy
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr "Devuelve la matriz de transformación de este objeto canvas."
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr "Devuelve [code]true[/code] si el archivo de la escena tiene nodos."
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
#, fuzzy
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
@@ -85389,7 +85542,7 @@ msgstr ""
"Establece el desplazamiento de la textura de la luz. Equivalente a [member "
"Light2D.offset]."
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
#, fuzzy
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
@@ -85398,7 +85551,7 @@ msgstr ""
"Establece el desplazamiento de la textura de la luz. Equivalente a [member "
"Light2D.offset]."
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
#, fuzzy
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
@@ -85406,14 +85559,14 @@ msgid ""
msgstr ""
"Establece el color de la luz. Equivalente a [member Light3D.light_color]."
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
#, fuzzy
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
@@ -85422,7 +85575,7 @@ msgstr ""
"Establece el desplazamiento de la textura de la luz. Equivalente a [member "
"Light2D.offset]."
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
#, fuzzy
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
@@ -85431,7 +85584,7 @@ msgstr ""
"Establece la transformación espacial del mundo de la instancia. Equivalente "
"a [member Nodo3D.transform]."
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
@@ -85439,7 +85592,7 @@ msgstr ""
"Devuelve una malla de una esfera con la cantidad dada de subdivisiones "
"horizontales y verticales."
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
#, fuzzy
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
@@ -85454,55 +85607,55 @@ msgstr ""
"Una vez terminado el RID, querrás liberarlo usando el método estático "
"[method free_rid] de RenderingServer."
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr "Devuelve el valor del parámetro de un determinado material."
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
#, fuzzy
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr "Devuelve el valor por defecto del especificado [enum Margin]."
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
#, fuzzy
msgid "Sets a material's line width."
msgstr "Establece la prioridad de renderización de un material."
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr "Establece el próximo material de un objeto."
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr "Establece el parámetro de un material."
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr "Establece la prioridad de renderización de un material."
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr "Establece un shader como el shader de un material."
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr "Quita todas las superficies de una malla."
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
#, fuzzy
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
@@ -85521,101 +85674,101 @@ msgstr ""
"Para colocar en una escena, adjunta esta malla a una instancia usando "
"[method instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr "Devuelve el recuento de la forma de la malla."
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr "Devuelve el modo de mezcla de una malla."
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr "Devuelve el aabb personalizado de una malla."
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr "Devuelve el número de superficies de una malla."
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
#, fuzzy
msgid "Removes a mesh's surface."
msgstr "Establece el material de la superficie de una malla."
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
#, fuzzy
msgid "Sets a mesh's blend shape count."
msgstr "Devuelve el recuento de la forma de la malla."
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr "Establece el modo de mezcla de una malla."
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr "Establece el aabb personalizado de una malla."
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
#, fuzzy
msgid "Returns a mesh's surface's aabb."
msgstr "Devuelve el material de la superficie de una malla."
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
#, fuzzy
msgid "Returns a mesh's surface's vertex buffer."
msgstr "Devuelve los array de buffer de superficie de una malla."
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
#, fuzzy
msgid "Returns a mesh's surface's amount of indices."
msgstr "Devuelve el material de la superficie de una malla."
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
#, fuzzy
msgid "Returns a mesh's surface's amount of vertices."
msgstr "Devuelve el material de la superficie de una malla."
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr "Devuelve los array de buffer de superficie de una malla."
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr "Devuelve los arrays de la superficie de una malla para mezclar formas."
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Devuelve el desplazamiento de la forma de un tile."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr "La función no se usa en Godot 3.x."
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
#, fuzzy
msgid "Returns a mesh's surface's index buffer."
msgstr "Devuelve los array de buffer de superficie de una malla."
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr "Devuelve el material de la superficie de una malla."
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Devuelve los parámetros de un shader."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
#, fuzzy
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr "Devuelve el material de la superficie de una malla."
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr "Establece el material de la superficie de una malla."
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
@@ -85626,7 +85779,7 @@ msgstr ""
"directamente sin mecanismos de seguridad, puede fácilmente corromper su "
"malla."
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -85634,7 +85787,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
#, fuzzy
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
@@ -85653,7 +85806,7 @@ msgstr ""
"Para colocar en una escena, adjunta este multimesh a una instancia usando "
"[method instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
@@ -85661,33 +85814,33 @@ msgstr ""
"Calcula y devuelve el cuadro delimitador alineado con el eje que encierra "
"todas las instancias dentro de la multimalla."
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr "Devuelve el número de instancias asignadas para esta multimalla."
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr "Devuelve el RID de la malla que se usará para dibujar este multimalla."
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr "Devuelve el número de instancias visibles para este multimalla."
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr "Devuelve el color por el cual la instancia especificada será modulada."
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
"Devuelve los datos personalizados asociados a la instancia especificada."
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr "Devuelve la [Transform] de la instancia especificada."
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
@@ -85695,7 +85848,7 @@ msgstr ""
"Devuelve la [Transform2D] de la instancia especificada. Para usar cuando el "
"multimalle está configurado para usar transformaciones 2D."
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
@@ -85703,7 +85856,7 @@ msgstr ""
"Establece el color por el cual esta instancia será modulada. Equivalente a "
"[method MultiMesh.set_instance_color]."
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
@@ -85713,7 +85866,7 @@ msgstr ""
"se pasan como un [Color], pero se interpretan como un [code]vec4[/code] en "
"el sombreador. Equivalente al [method MultiMesh.set_instance_custom_data]."
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
@@ -85721,7 +85874,7 @@ msgstr ""
"Establece la [Transform] para este caso. Equivalente a [method MultiMesh."
"set_instance_transform]."
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
@@ -85729,7 +85882,7 @@ msgstr ""
"Establece el [Transform2D] para este caso. Para su uso cuando se utiliza el "
"multimesh en 2D. Equivalente al [method MultiMesh.set_instance_transform_2d]."
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -85744,7 +85897,7 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
@@ -85752,7 +85905,7 @@ msgstr ""
"Establece la malla a ser dibujada por la multimalla. Equivalente a [member "
"MultiMesh.mesh]."
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
@@ -85762,7 +85915,7 @@ msgstr ""
"sortean todas las instancias que han sido asignadas. Equivalente a [member "
"MultiMesh.visible_instance_count]."
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
#, fuzzy
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
@@ -85781,7 +85934,7 @@ msgstr ""
"Para colocar en una escena, adjunta esta luz omni a una instancia usando "
"[method instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
#, fuzzy
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
@@ -85800,7 +85953,7 @@ msgstr ""
"Para colocarlas en una escena, adjunta estas partículas a una instancia "
"usando [method instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
#, fuzzy
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
@@ -85809,13 +85962,13 @@ msgstr ""
"Calcula y devuelve el cuadro delimitador alineado con el eje que contiene "
"todas las partículas. Equivalente a [method GPUParticles3D.capture_aabb]."
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
"Devuelve [code]true[/code] si las partículas están actualmente fijadas para "
"emitir."
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
@@ -85823,7 +85976,7 @@ msgstr ""
"Devuelve [code]true[/code] si las partículas no están emitiendo y las "
"partículas están inactivas."
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -85835,7 +85988,7 @@ msgstr ""
"fotograma, o en la siguiente llamada a [method instances_cull_aabb], [method "
"instances_cull_convex], o [method instances_cull_ray]."
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
#, fuzzy
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
@@ -85844,7 +85997,7 @@ msgstr ""
"Reajustar las partículas en la próxima actualización. Equivalente a [method "
"GPUParticles3D.restart]."
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
#, fuzzy
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
@@ -85853,7 +86006,7 @@ msgstr ""
"Establece el número de partículas que se dibujarán y les asigna la memoria. "
"Equivalente a [member GPUParticles3D.amount]."
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
#, fuzzy
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
@@ -85862,7 +86015,7 @@ msgstr ""
"Establece un cuadro delimitador personalizado alineado con el eje para el "
"sistema de partículas. Equivalente a [member GPUParticles3D.visibility_aabb]."
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
#, fuzzy
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
@@ -85873,7 +86026,7 @@ msgstr ""
"nombrados de [enum ParticlesDrawOrder]. Ver [enum ParticlesDrawOrder] para "
"las opciones. Equivalente a [member GPUParticles3D.draw_order]."
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
#, fuzzy
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
@@ -85885,7 +86038,7 @@ msgstr ""
"draw_pass_2], [member GPUParticles3D.draw_pass_3], y [member GPUParticles3D."
"draw_pass_4]."
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
#, fuzzy
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
@@ -85894,14 +86047,14 @@ msgstr ""
"Establece el número de pases de dibujo a utilizar. Equivalente a [member de "
"GPUParticles3D.draw_passes]."
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
"Establece la [Transform] que será utilizada por las partículas cuando emitan "
"por primera vez."
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
#, fuzzy
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
@@ -85912,7 +86065,7 @@ msgstr ""
"falso no restablece las partículas, sino que sólo detiene su emisión. "
"Equivalente a [member GPUParticles3D.emitting]."
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
#, fuzzy
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
@@ -85920,7 +86073,7 @@ msgstr ""
"Establece la relación de explosividad. Equivalente a [member de "
"GPUParticles3D.explosiveness]."
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
#, fuzzy
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
@@ -85929,7 +86082,7 @@ msgstr ""
"Establece la velocidad de fotogramas a la que se fijará la representación "
"del sistema de partículas. Equivalente a [member GPUParticles3D.fixed_fps]."
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
#, fuzzy
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
@@ -85939,7 +86092,7 @@ msgstr ""
"movimiento de las partículas. Equivalente a [member GPUParticles3D."
"fract_delta]."
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
#, fuzzy
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
@@ -85948,7 +86101,7 @@ msgstr ""
"Establece la vida útil de cada partícula del sistema. Equivalente a [member "
"GPUParticles3D.lifetime]."
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
#, fuzzy
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
@@ -85957,7 +86110,7 @@ msgstr ""
"Si [code]true[/code], las partículas emitirán una vez y luego se detendrán. "
"Equivalente a [member GPUParticles3D.one_shot]."
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
#, fuzzy
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
@@ -85969,7 +86122,7 @@ msgstr ""
"partículas hayan empezado a emitir. Equivalente a [member GPUParticles3D."
"preprocess]."
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
#, fuzzy
msgid ""
"Sets the material for processing the particles.\n"
@@ -85980,7 +86133,7 @@ msgstr ""
"material utilizado para dibujar los materiales. Equivalente a [member "
"GPUParticles3D.process_material]."
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
#, fuzzy
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
@@ -85990,7 +86143,7 @@ msgstr ""
"emisión de partículas dentro de su fase. Equivalente a [member de "
"GPUParticles3D.randomness]."
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
#, fuzzy
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
@@ -85999,7 +86152,7 @@ msgstr ""
"Establece la escala de velocidad del sistema de partículas. Equivalente a "
"[member GPUParticles3D.speed_scale]."
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
#, fuzzy
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
@@ -86009,7 +86162,7 @@ msgstr ""
"[code]false[/code] usan coordenadas globales. Equivalente a [member "
"GPUParticles3D.local_coords]."
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
#, fuzzy
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
@@ -86028,7 +86181,7 @@ msgstr ""
"Para colocarla en una escena, adjunta esta sonda de reflexión a una "
"instancia usando [method instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
#, fuzzy
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
@@ -86037,7 +86190,7 @@ msgstr ""
"Si [code]true[/code], los reflejos ignorarán la contribución del cielo. "
"Equivalente a [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
@@ -86048,7 +86201,7 @@ msgstr ""
"renderizados por esta sonda. Equivalente a [member ReflectionProbe."
"cull_mask]."
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
@@ -86058,7 +86211,7 @@ msgstr ""
"reflejos se vean más correctos en ciertas situaciones. Equivalente a [member "
"ReflectionProbe.box_projection]."
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
@@ -86068,7 +86221,7 @@ msgstr ""
"hace que el reflejo sea mucho más lento de calcular. Equivalente a [member "
"ReflectionProbe.enable_shadows]."
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
@@ -86076,7 +86229,7 @@ msgstr ""
"Establece el tamaño del área que la sonda de reflexión capturará. "
"Equivalente a [member ReflectionProbe.extents]."
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
@@ -86084,7 +86237,7 @@ msgstr ""
"Establece la intensidad de la sonda de reflexión. La intensidad modula la "
"fuerza de la reflexión. Equivalente a [member ReflectionProbe.intensity]."
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
#, fuzzy
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
@@ -86094,7 +86247,7 @@ msgstr ""
"reflexión esté en modo de proyecto de caja. Equivalente a [member "
"ReflectionProbe.origin_offset]."
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
#, fuzzy
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
@@ -86104,7 +86257,7 @@ msgstr ""
"Establece la intensidad de la sonda de reflexión. La intensidad modula la "
"fuerza de la reflexión. Equivalente a [member ReflectionProbe.intensity]."
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -86112,7 +86265,7 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
@@ -86121,7 +86274,7 @@ msgstr ""
"antes de ser seleccionado. Equivalente a [member ReflectionProbe."
"max_distance]."
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
@@ -86130,7 +86283,7 @@ msgstr ""
"reflexión esté en modo de proyecto de caja. Equivalente a [member "
"ReflectionProbe.origin_offset]."
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
@@ -86139,7 +86292,7 @@ msgstr ""
"una vez o cada fotograma. Ver [enum ReflectionProbeUpdateMode] para las "
"opciones."
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -86151,7 +86304,7 @@ msgstr ""
"El método de devolución debe utilizar sólo 1 argumento que será llamado con "
"[code]userdata[/code]."
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
#, fuzzy
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
@@ -86168,7 +86321,7 @@ msgstr ""
"[method free_rid] de RenderingServer.\n"
"El escenario es el mundo 3D en el que existen todas las instancias visuales."
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
@@ -86176,11 +86329,11 @@ msgstr ""
"Establece el [enum ScenarioDebugMode] para este escenario. Vea [enum "
"ScenarioDebugMode] para las opciones."
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr "Establece el entorno que se utilizará con este escenario."
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
@@ -86191,13 +86344,13 @@ msgstr ""
"Internamente, es usado por el editor para proporcionar un entorno por "
"defecto."
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -86212,7 +86365,7 @@ msgstr ""
"[code]use_filter[/code] es [code]false[/code], la imagen se escalará con la "
"interpolación del vecino más cercano."
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
@@ -86220,7 +86373,7 @@ msgstr ""
"Si [code]true[/code], el motor generará mallas de alambre para su uso con el "
"modo de depuración de mallas de alambre."
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
@@ -86228,7 +86381,7 @@ msgstr ""
"Establece el color claro predeterminado que se utiliza cuando no se ha "
"seleccionado un color claro específico."
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -86236,12 +86389,12 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
#, fuzzy
msgid "Enables or disables occlusion culling."
msgstr "Habilita o deshabilita una luz de canvas."
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
#, fuzzy
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
@@ -86256,52 +86409,52 @@ msgstr ""
"Una vez terminado el RID, querrás liberarlo usando el método estático "
"[method free_rid] de RenderingServer."
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr "Devuelve un código de shader."
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr "Devuelve una textura por defecto de un shader buscado por nombre."
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr "Devuelve los parámetros de un shader."
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr "Establece un código de shader."
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
"Establece la textura por defecto de un shader. Sobrescribe la textura dada "
"por el nombre."
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr "Asigna los buffers de la GPU para este esqueleto."
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
"Devuelve el conjunto [Transform] para un hueso específico de este esqueleto."
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
"Devuelve el conjunto [Transform] para un hueso específico de este esqueleto."
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
"Devuelve el conjunto [Transform] para un hueso específico de este esqueleto."
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr "Establece la [Transform2D] para un hueso específico de este esqueleto."
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
#, fuzzy
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
@@ -86316,11 +86469,11 @@ msgstr ""
"Una vez terminado el RID, querrás liberarlo usando el método estático "
"[method free_rid] de RenderingServer."
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr "Devuelve el número de huesos asignados a este esqueleto."
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
#, fuzzy
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
@@ -86335,12 +86488,12 @@ msgstr ""
"Una vez terminado el RID, querrás liberarlo usando el método estático de "
"RenderingServer [method free_rid]."
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
#, fuzzy
msgid "Sets a sky's texture."
msgstr "Establece la textura del tile."
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
#, fuzzy
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
@@ -86359,17 +86512,17 @@ msgstr ""
"Para colocar en una escena, adjunta este foco a una instancia usando [method "
"instance_set_base] usando el RID devuelto."
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
#, fuzzy
msgid "Allocates the GPU memory for the texture."
msgstr "Asigna los buffers de la GPU para este esqueleto."
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
#, fuzzy
msgid "Binds the texture to a texture slot."
msgstr "Alinea el texto a la izquierda."
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
#, fuzzy
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
@@ -86384,87 +86537,87 @@ msgstr ""
"Una vez terminado el RID, querrás liberarlo usando el método estático "
"[method free_rid] de RenderingServer."
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
#, fuzzy
msgid "Returns a list of all the textures and their information."
msgstr "Devuelve la lista de valores del [Dictionary]."
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Devuelve la altura del contenido."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Devuelve la textura del tile."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Devuelve el determinante de la matriz."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Devuelve la altura de la textura."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Devuelve el ancho de la textura."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Devuelve la longitud del cuaternario."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Devuelve el nombre de la proxima animacion en la cola."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
#, fuzzy
msgid "Returns the texture's width."
msgstr "Devuelve el ancho de la textura."
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
#, fuzzy
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
"Repita las flags para la textura. Ver [enum TextureFilter] para las opciones."
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
#, fuzzy
msgid "Sets the texture's path."
msgstr "Devuelve el ancho de la textura."
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
#, fuzzy
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
@@ -86473,7 +86626,7 @@ msgstr ""
"Si [code]true[/code], los números de línea se muestran a la izquierda del "
"texto."
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
#, fuzzy
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
@@ -86482,15 +86635,15 @@ msgstr ""
"Si [code]true[/code], todas las advertencias serán reportadas como si fueran "
"errores."
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr "Establece la cámara de un viewport."
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr "Establece el canvas de un viewport."
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
#, fuzzy
msgid ""
"Copies viewport to a region of the screen specified by [code]rect[/code]. If "
@@ -86532,7 +86685,7 @@ msgstr ""
"el coste de tener que gestionar los visores manualmente. Para una mayor "
"optimización ver, [method viewport_set_render_direct_to_screen]."
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
#, fuzzy
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
@@ -86547,12 +86700,12 @@ msgstr ""
"Una vez terminado el RID, querrás liberarlo usando el método estático "
"[method free_rid] de RenderingServer."
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
#, fuzzy
msgid "Detaches the viewport from the screen."
msgstr "Separa un punto de vista de un canvas y viceversa."
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
@@ -86560,21 +86713,21 @@ msgstr ""
"Devuelve la información de renderización de un viewport. Para las opciones, "
"ver las constantes [enum ViewportRenderInfo]."
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr "Devuelve el último fotograma renderizado del viewport."
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr "Separa un punto de vista de un canvas y viceversa."
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
"Si [code]true[/code], activa la ventana de visualización, si no, la "
"desactiva."
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
@@ -86585,18 +86738,18 @@ msgstr ""
"code] especifica el orden de apilamiento del canvas entre los de la misma "
"capa."
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr "Establece la transformación del canvas de un viewport."
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
"Establece el modo claro de una vista. Consulte [enum ViewportClearMode] para "
"ver las opciones."
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
@@ -86604,47 +86757,47 @@ msgstr ""
"Establece el modo de dibujo de depuración de un viewport. Ver [enum "
"ViewportDebugDraw] para las opciones."
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
"Si [code]true[/code], se desactiva la renderización del entorno de un "
"viewport."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
"Si [code]true[/code], se desactiva la renderización del entorno de un "
"viewport."
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr "Establece la matriz de transformación global del Viewport."
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr "Si [code]true[/code], el canvas del viewport no se renderiza."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr "Si [code]true[/code], el canvas del viewport no se renderiza."
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr "Actualmente sin implementar en Godot 3.x."
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
"Establece el modo anti-aliasing. Ver [enum ViewportMSAA] para las opciones."
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr "Establece el padre del viewport a otra viewport."
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -86674,7 +86827,7 @@ msgstr ""
"automático, incluso si tu escena de juego es significativamente más grande "
"que el tamaño de la ventana."
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
@@ -86684,11 +86837,11 @@ msgstr ""
"El escenario contiene información sobre el [enum ScenarioDebugMode], "
"información del entorno, atlas de reflexión, etc."
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr "Establece la subdivisión del cuadrante del atlas de las sombras."
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
@@ -86696,7 +86849,7 @@ msgstr ""
"Establece el tamaño de las imágenes del atlas de sombras (usado para omni y "
"focos). El valor se redondeará a la potencia más cercana de 2."
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -86706,16 +86859,16 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr "Establece el ancho y la altura del viewport."
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr "Si [code]true[/code], el viewport hace que su fondo sea transparente."
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
@@ -86723,7 +86876,7 @@ msgstr ""
"Establece cuándo debe actualizarse el viewport. Ver las constantes [enum "
"ViewportUpdateMode] para las opciones."
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
#, fuzzy
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
@@ -86732,7 +86885,7 @@ msgstr ""
"Establece cuándo debe actualizarse el viewport. Ver las constantes [enum "
"ViewportUpdateMode] para las opciones."
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
#, fuzzy
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
@@ -86741,7 +86894,7 @@ msgstr ""
"Si [code]true[/code], el viewport utiliza tecnologías de realidad aumentada "
"o virtual. Ver [XRInterface]."
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -86752,7 +86905,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
#, fuzzy
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
@@ -86767,12 +86920,12 @@ msgstr ""
"la imagen se vea borrosa, especialmente en resoluciones más bajas. Puede "
"funcionar relativamente bien en resoluciones grandes como 1440p y 4K."
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr "Si [code]true[/code], la textura se voltea verticalmente."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
@@ -86782,7 +86935,7 @@ msgstr ""
"lógica del motor sigue siendo procesada. Puedes llamar a [method force_draw] "
"para dibujar un fotograma incluso con la renderización desactivada."
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
#, fuzzy
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
@@ -86791,7 +86944,7 @@ msgstr ""
"Emitido al final del fotograma, después de que el RenderingServer haya "
"terminado de actualizar todos los Viewports."
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
#, fuzzy
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
@@ -86800,198 +86953,198 @@ msgstr ""
"Emitido al principio del fotograma, antes de que el RenderingServer "
"actualice todos los Viewports."
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr "Marca un error que muestra que el array de índices está vacío."
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr "Número de pesos/huesos por vértice."
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr "La capa Z mínima para los objetos del canvas."
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr "La máxima capa Z para los objetos del canvas."
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
"Número máximo de niveles de brillo que se pueden utilizar con el efecto de "
"post-procesado de brillo."
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr "La lista no utilizada en Godot 3.x."
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr "La prioridad mínima de renderizado de todos los materiales."
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr "La máxima prioridad de renderización de todos los materiales."
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
#, fuzzy
msgid "Marks the left side of a cubemap."
msgstr "Establece el título de una columna."
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
#, fuzzy
msgid "Marks the right side of a cubemap."
msgstr "Establece el título de una columna."
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
#, fuzzy
msgid "Marks the bottom side of a cubemap."
msgstr "Establece el título de una columna."
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
#, fuzzy
msgid "Marks the top side of a cubemap."
msgstr "Establece el título de una columna."
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
#, fuzzy
msgid "Marks the front side of a cubemap."
msgstr "Establece el título de una columna."
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
#, fuzzy
msgid "Marks the back side of a cubemap."
msgstr "Establece el título de una columna."
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
#, fuzzy
msgid "Normal texture with 2 dimensions, width and height."
msgstr "Devuelve el tamaño de la imagen (anchura y altura)."
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
#, fuzzy
msgid "Repeats the texture (instead of clamp to edge)."
msgstr "Devuelve el desplazamiento de la textura del tile."
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr "Shader es un shader 3D."
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr "Shader es un shader 2D."
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr "Shader es un shader de partículas."
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr "Representa el tamaño del enum [enum ShaderMode]."
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr "El array es un array de vértices."
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr "El array es un array normales."
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr "El Array es una array de tangentes."
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr "El Array es un array de colores."
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr "El Array es un array de coordenadas UV."
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
"El Array es un array de coordenadas UV para las segundas coordenadas UV."
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr "El Array contiene información sobre los huesos."
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr "El Array contiene la información de pesos."
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr "El Array es un array de índices."
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr "Bandera usada para marcar un array de vértices."
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr "Bandera usada para marcar una array de normales."
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr "Bandera usada para marcar un array de tangentes."
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr "Bandera usada para marcar un array de colores."
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr "Bandera usada para marcar un conjunto de coordenadas UV."
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
"Bandera usada para marcar un array de coordenadas UV para las segundas "
"coordenadas UV."
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr "Bandera usada para marcar un array con información de huesos."
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr "Bandera usada para marcar un array de pesos."
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr "Bandera usada para marcar un array de índices."
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
#, fuzzy
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
@@ -87004,20 +87157,20 @@ msgstr ""
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
"ARRAY_COMPRESS_TEX_UV] y [constant ARRAY_COMPRESS_TEX_UV2] rápidamente."
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr "Primitiva para dibujar vagones de puntos."
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr "Primitiva para dibujar vagones de líneas."
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
"Primitiva para dibujar consiste en una franja de líneas de principio a fin."
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
#, fuzzy
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
@@ -87026,11 +87179,11 @@ msgstr ""
"Primitiva para dibujar consiste en una tira de triángulo (los últimos 3 "
"vértices siempre se combinan para formar un triángulo)."
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr "Primitiva para dibujar vagones de triángulos."
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
@@ -87038,7 +87191,7 @@ msgstr ""
"Primitiva para dibujar consiste en una tira de triángulo (los últimos 3 "
"vértices siempre se combinan para formar un triángulo)."
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
#, fuzzy
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
@@ -87047,76 +87200,76 @@ msgstr ""
"Primitiva para dibujar consiste en una tira de triángulo (los últimos 3 "
"vértices siempre se combinan para formar un triángulo)."
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr "Representa el tamaño del enum [enum PrimitiveType]."
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr "Es una luz direccional (sol)."
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr "Es una luz omnipresente."
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr "Es un foco de luz."
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr "La energía de la luz."
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
#, fuzzy
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
"Multiplicador secundario utilizado con luz indirecta (rebote de luz). "
"Utilizado con [GIProbe]."
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr "La influencia de la luz en la especularidad."
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr "El rango de la luz."
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr "La atenuación de la luz."
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr "El ángulo del foco."
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr "La atenuación del foco."
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
#, fuzzy
msgid "Scales the shadow color."
msgstr "Establece la fuente [Color]."
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr "La distancia máxima a la que las sombras se renderizarán."
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr "Proporción de atlas de sombras ocupados por la primera división."
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr "Proporción del atlas de las sombras ocupado por la segunda división."
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
@@ -87124,7 +87277,7 @@ msgstr ""
"Proporción del atlas de las sombras ocupado por la tercera división. La "
"cuarta división ocupa el resto."
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
@@ -87132,28 +87285,28 @@ msgstr ""
"Sesgo normal usado para compensar la búsqueda de sombras por el objeto "
"normal. Puede ser usado para arreglar artefactos de auto-sombra."
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
"Predisponer la búsqueda de sombras para arreglar los artefactos que se "
"ensombrecen a sí mismos."
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr "Representa el tamaño del enum [enum LightParam]."
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
"Usar un mapa de sombras paraboloide doble para las luces omnidireccionales."
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
@@ -87161,36 +87314,36 @@ msgstr ""
"Usa un mapa de cubo de sombras para las luces omnidireccionales. Más lento "
"pero de mejor calidad que el paraboloide dual."
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr "Usar proyección de sombra ortogonal para la luz direccional."
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
"Use 2 divisiones para la proyección de sombras cuando use luz direccional."
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
"Use 4 divisiones para la proyección de sombras cuando use luz direccional."
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
"Mantiene las sombras estables a medida que la cámara se mueve, pero tiene "
"una resolución efectiva más baja."
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
@@ -87198,31 +87351,31 @@ msgstr ""
"Optimizar el uso de los mapas de sombra, aumentando la resolución efectiva. "
"Pero puede dar lugar a que las sombras se muevan o parpadeen ligeramente."
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr "No actualice el viewport."
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr "Actualiza el viewport una vez y luego ponlo en desactivado."
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr "Actualice el viewport siempre que sea visible."
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr "Siempre actualiza el viewport."
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr "El viewport siempre se limpia antes de dibujar."
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr "El viewport nunca se limpia antes de dibujar."
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
@@ -87230,123 +87383,123 @@ msgstr ""
"El viewport se borra una vez, luego el modo de borrado se establece en "
"[constant VIEWPORT_CLEAR_NEVER]."
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr "El antialiasing multimuestra está desactivado."
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
#, fuzzy
msgid "Multisample antialiasing is set to 2×."
msgstr "El antialiasing multimuestra está desactivado."
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
#, fuzzy
msgid "Multisample antialiasing is set to 4×."
msgstr "El antialiasing multimuestra está desactivado."
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
#, fuzzy
msgid "Multisample antialiasing is set to 8×."
msgstr "El antialiasing multimuestra está desactivado."
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
#, fuzzy
msgid "Multisample antialiasing is set to 16×."
msgstr "El antialiasing multimuestra está desactivado."
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr "Número de objetos dibujados en un solo fotograma."
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr "Número de vértices dibujados en un solo fotograma."
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr "Número de cambios materiales durante este fotograma."
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr "El número de cambios de shader durante este fotograma."
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr "El número de cambios en la superficie durante este fotograma."
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr "Número de llamadas de dibujo durante este fotograma."
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
#, fuzzy
msgid "Number of 2d items drawn this frame."
msgstr "Número de llamadas de dibujo durante este fotograma."
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
#, fuzzy
msgid "Number of 2d draw calls during this frame."
msgstr "Número de llamadas de dibujo durante este fotograma."
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr "Representa el tamaño del enum [enum ViewportRenderInfo]."
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
"El dibujado de depuración está desactivado. Configuración predeterminada."
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
#, fuzzy
msgid "Debug draw sets objects to unshaded."
msgstr "El dibujado de depuración dibuja objetos en un marco de alambre."
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr "El dibujado de depuración dibuja objetos en un marco de alambre."
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr "No utilice el modo de depuración."
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr "Dibujar todos los objetos como modelos de malla de alambre."
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
@@ -87357,7 +87510,7 @@ msgstr ""
"y luego otro objeto la cubre. Para optimizar una escena, debes reducir el "
"sobregirado."
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
@@ -87365,48 +87518,48 @@ msgstr ""
"Dibuja todos los objetos sin sombrear. Equivale a poner todos los objetos "
"shaders en [code]unshaded[/code]."
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr "La instancia no tiene un tipo."
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr "La instancia es una malla."
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr "La instancia es una multimalla."
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr "La instancia es una geometría inmediata."
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr "El caso es un emisor de partículas."
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr "La instancia es una luz."
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr "La instancia es una sonda de reflexión."
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr "El caso es una sonda GI."
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
#, fuzzy
msgid "The instance is a lightmap capture."
msgstr "La instancia es un mapa de luz."
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr "Representa el tamaño del enum[enum InstanceType]."
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
@@ -87414,29 +87567,29 @@ msgstr ""
"Una combinación de las banderas de las instancias de la geometría (malla, "
"multimesh, inmediata y partículas)."
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr "Permite que la instancia se utilice en la iluminación del cocinado."
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
"Cuando se establece, pide manualmente dibujar la geometría en el siguiente "
"fotograma."
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr "Representa el tamaño del enum [enum InstanceFlags]."
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr "Deshabilita sombras de esta instancia."
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr "Proyecta sombras de esta instancia."
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
@@ -87445,21 +87598,21 @@ msgstr ""
"del objeto. Esto es un poco más lento pero puede resultar en sombras más "
"correctas."
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
"Sólo se muestran las sombras del objeto. El objeto en sí no será dibujado."
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr "El nine patch se estira donde es necesario."
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr "El nine patch se llena de tiles donde sea necesario."
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
@@ -87467,155 +87620,155 @@ msgstr ""
"El nine patch se llena de tiles donde sea necesario y se estira un poco si "
"es necesario."
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr "Añade un aditivo de color claro al canvas."
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr "Añade el color de la luz que se sustrae al canvas."
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr "La luz añade color dependiendo de la transparencia."
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr "La luz añade color dependiendo de la máscara."
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr "No aplique un filtro a las sombras de luz del canvas."
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
#, fuzzy
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr "Utiliza el filtro PCF13 para filtrar las sombras de luz del canvas."
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr "Utiliza el filtro PCF5 para filtrar las sombras de luz del canvas."
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
#, fuzzy
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr "Utiliza el filtro PCF5 para filtrar las sombras de luz del canvas."
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
#, fuzzy
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr "Utiliza el filtro PCF5 para filtrar las sombras de luz del canvas."
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr "Utiliza el filtro PCF13 para filtrar las sombras de luz del canvas."
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr "Selección del oclusor del canvas está desactivado."
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
"La selección del oclusor del canvas se hace en el sentido de las agujas del "
"reloj."
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
"La selección del oclusor del canvas es en sentido contrario a las agujas del "
"reloj."
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr "La cantidad de objetos en el fotograma."
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr "La cantidad de vértices en el fotograma."
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr "La cantidad de materiales modificados en el fotograma."
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr "La cantidad del shader se repite en el fotograma."
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr "La cantidad de superficie cambia en el fotograma."
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr "La cantidad de llamadas de dibujo en el fotograma."
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
#, fuzzy
msgid "The amount of 2d items in the frame."
msgstr "La cantidad de vértices en el fotograma."
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
#, fuzzy
msgid "The amount of 2d draw calls in frame."
msgstr "La cantidad de llamadas de dibujo en el fotograma."
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
"El hardware soporta los shaders. Esta enum no se usa actualmente en Godot 3."
"x."
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
"El hardware soporta el multihilo. Este enum no se usa actualmente en Godot 3."
"x."
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr "Use [Transform2D] para almacenar la transformada de MultiMalla."
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr "Use [Transform] para almacenar la transformada de MultiMesh."
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
"La sonda de reflexión actualizará las reflexiones una vez y luego se "
"detendrá."
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
@@ -87623,37 +87776,37 @@ msgstr ""
"La sonda de reflexión actualizará cada cuadro. Este modo es necesario para "
"capturar objetos en movimiento."
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
"Dibuja las partículas en el orden en que aparecen en el array de partículas."
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr "Clasificar las partículas en función de su vida útil."
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr "Clasifica las partículas según su distancia a la cámara."
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr "Usa el color limpio como fondo."
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr "Utilice un color específico como fondo."
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr "Usar un recurso del cielo para el fondo."
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
@@ -87661,94 +87814,94 @@ msgstr ""
"Usar una capa de canvas especifica como fondo. Esto puede ser útil para "
"instanciar una escena 2D en un mundo 3D."
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr "No despeje el fondo, use el último fotograma como fondo."
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr "Representa el tamaño del enum [enum EnvironmentBG]."
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr "Color de salida como entraron."
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr "Usa el mapa de tonos Reinhard."
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr "Usa el mapa de tonos fílmicos."
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr "Usa el mapa de tonos de ACES."
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
#, fuzzy
msgid "Use the ACES Fitted tonemapper."
msgstr "Usa el mapa de tonos de ACES."
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
"La calidad más baja de la oclusión ambiental del espacio de la pantalla."
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr "Oclusión ambiental del espacio de pantalla de calidad media."
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr "Oclusión ambiental del espacio de pantalla de la mayor calidad."
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
"Deshabilita el set de desenfoque para SSAO. Hará que SSAO parezca más "
"ruidoso."
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr "Realiza un desenfoque de 1x1 en la salida de SSAO."
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr "Realiza un desenfoque de 2x2 en la salida de SSAO."
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
"Realiza un desenfoque de 3x3 en la salida de SSAO. Usa esto para un SSAO más "
@@ -90865,9 +91018,10 @@ msgid "A class representing a specific WebSocket connection."
msgstr "Una clase que representa una conexión específica de WebSocket."
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
+#, fuzzy
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -91476,45 +91630,48 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Devuelve la textura del tile."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr "Si [code]true[/code], la cámara gira con el objetivo."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
#, fuzzy
msgid "The text displayed in the window's title bar."
msgstr "El texto que se muestra en la barra de título del GraphNode."
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
#, fuzzy
msgid "The icon for the close button."
msgstr "El icono del botón de reinicio del zoom."
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
#, fuzzy
msgid "The horizontal offset of the close button."
msgstr "El desplazamiento vertical del botón de cierre."
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
#, fuzzy
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
"El fondo del botón de cierre cuando se está pasando con el cursor sobre el."
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
#, fuzzy
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
@@ -91523,17 +91680,17 @@ msgstr ""
"El icono utilizado para el redimensionamiento, visible cuando está activado "
"el [member resizable]."
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
#, fuzzy
msgid "The color of the title text."
msgstr "El color del texto del título."
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
#, fuzzy
msgid "The font used to draw the title."
msgstr "La fuente usada para dibujar los nombres de las pestañas."
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
#, fuzzy
msgid "The vertical offset of the title text."
msgstr "Desplazamiento vertical del texto del título."
@@ -91901,6 +92058,117 @@ msgstr ""
"Si es [code]true[/code], los nodos hijos son ordenados, de lo contrario el "
"ordenado está deshabilitado."
+#~ msgid "Returns the label used for built-in text."
+#~ msgstr "Devuelve la etiqueta utilizada para el texto interno."
+
+#~ msgid "Returns the OK [Button] instance."
+#~ msgstr "Devuelve la instancia del [Button] OK."
+
+#~ msgid "Returns the [ColorPicker] that this node toggles."
+#~ msgstr "Devuelve el [ColorPicker] que este nodo conmuta."
+
+#~ msgid "Returns the cancel button."
+#~ msgstr "Devuelve el botón de cancelación."
+
+#~ msgid ""
+#~ "Returns the [code]VBoxContainer[/code] used to display the file system."
+#~ msgstr ""
+#~ "Devuelve el [code]VBoxContainer[/code] utilizado para mostrar el sistema "
+#~ "de archivos."
+
+#~ msgid "Returns the editor's [FileSystemDock] instance."
+#~ msgstr "Devuelve la instancia del editor [FileSystemDock]."
+
+#~ msgid "Returns the editor's [EditorInspector] instance."
+#~ msgstr "Devuelve la instancia del editor [EditorInspector]."
+
+#~ msgid "Returns the editor's [ScriptEditor] instance."
+#~ msgstr "Devuelve la instancia del editor [ScriptEditor]."
+
+#~ msgid "Returns the LineEdit for the selected file."
+#~ msgstr "Devuelve el LineEdit del archivo seleccionado."
+
+#~ msgid ""
+#~ "Returns the vertical box container of the dialog, custom controls can be "
+#~ "added to it."
+#~ msgstr ""
+#~ "Devuelve el contenedor de la caja vertical del diálogo, se le pueden "
+#~ "añadir controles personalizados."
+
+#~ msgid "Returns the [Object] ID associated with the list."
+#~ msgstr "Devuelve el ID de [Object] asociado a la lista."
+
+#~ msgid ""
+#~ "Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
+#~ "displayed when right-clicking on the [LineEdit]."
+#~ msgstr ""
+#~ "Devuelve el [PopupMenu] de este [LineEdit]. Por defecto, este menú se "
+#~ "visualiza cuando se hace clic con el botón derecho del ratón en la "
+#~ "[LineEdit]."
+
+#~ msgid "Returns the [PopupMenu] contained in this button."
+#~ msgstr "Devuelve el [PopupMenu] contenido en este botón."
+
+#~ msgid ""
+#~ "Removes a child node. The node is NOT deleted and must be deleted "
+#~ "manually."
+#~ msgstr ""
+#~ "Elimina un nodo hijo. El nodo NO se elimina y debe ser eliminado "
+#~ "manualmente."
+
+#~ msgid "Returns the vertical scrollbar."
+#~ msgstr "Devuelve la barra de desplazamiento vertical."
+
+#~ msgid ""
+#~ "Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+#~ msgstr ""
+#~ "Devuelve la barra de desplazamiento horizontal [HScrollBar] de este "
+#~ "[ScrollContainer]."
+
+#~ msgid ""
+#~ "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#~ msgstr ""
+#~ "Devuelve la barra de desplazamiento vertical [VScrollBar] de este "
+#~ "[ScrollContainer]."
+
+#~ msgid ""
+#~ "Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
+#~ "access properties and methods of [LineEdit]."
+#~ msgstr ""
+#~ "Devuelve la instancia [LineEdit] de este [SpinBox]. Puedes usarlo para "
+#~ "acceder a las propiedades y métodos de [LineEdit]."
+
+#~ msgid ""
+#~ "Returns the [Popup] node instance if one has been set already with "
+#~ "[method set_popup]."
+#~ msgstr ""
+#~ "Devuelve la instancia del nodo [Popup] si ya se ha establecido uno con "
+#~ "[method set_popup]."
+
+#~ msgid ""
+#~ "Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
+#~ "displayed when right-clicking on the [TextEdit]."
+#~ msgstr ""
+#~ "Devuelve el [PopupMenu] de este [TextEdit]. Por defecto, este menú se "
+#~ "muestra cuando se hace clic con el botón derecho del ratón en el "
+#~ "[TextEdit]."
+
+#~ msgid ""
+#~ "Returns [code]true[/code] if this [Thread] is currently active. An active "
+#~ "[Thread] cannot start work on a new method but can be joined with [method "
+#~ "wait_to_finish]."
+#~ msgstr ""
+#~ "Devuelve [code]true[/code] si este [Thread] está actualmente activo. Un "
+#~ "[Thread] activo no puede empezar a trabajar en un nuevo método pero puede "
+#~ "unirse con [method wait_to_finish]."
+
+#~ msgid "Wait time in seconds."
+#~ msgstr "Tiempo de espera en segundos."
+
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Devuelve la textura del tile."
+
#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
@@ -94323,9 +94591,6 @@ msgstr ""
#~ "Deslizador horizontal. Ver [Slider]. Éste va de izquierda (min) a derecha "
#~ "(máx)."
-#~ msgid "Maximum allowed size for response bodies."
-#~ msgstr "Tamaño máximo permitido para los cuerpos de la respuesta."
-
#~ msgid ""
#~ "A [Texture2D] based on an [Image]. Can be created from an [Image] with "
#~ "[method create_from_image].\n"
diff --git a/doc/translations/extract.py b/doc/translations/extract.py
index a2bc5e37ec..a13680a613 100644
--- a/doc/translations/extract.py
+++ b/doc/translations/extract.py
@@ -2,7 +2,6 @@
import argparse
import os
-import re
import shutil
from collections import OrderedDict
diff --git a/doc/translations/fa.po b/doc/translations/fa.po
index c30a3e0379..20951755d0 100644
--- a/doc/translations/fa.po
+++ b/doc/translations/fa.po
@@ -4172,20 +4172,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4194,11 +4202,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4212,15 +4220,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6782,13 +6790,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6814,14 +6824,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6959,26 +6971,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -7005,14 +7021,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -7021,14 +7040,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7629,7 +7651,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10371,7 +10393,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -13079,9 +13104,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14906,7 +14930,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -15006,84 +15030,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15399,7 +15430,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -20023,117 +20058,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20304,7 +20343,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20430,7 +20470,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20608,18 +20649,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20629,119 +20672,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20749,17 +20803,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -21089,30 +21143,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -21122,22 +21178,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -21145,68 +21201,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -21214,22 +21270,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21238,26 +21294,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22900,53 +22956,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22954,58 +23018,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -23016,19 +23080,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -23036,17 +23100,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -23054,24 +23118,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -23079,21 +23143,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -23101,65 +23165,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -23169,43 +23233,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23737,20 +23801,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23759,125 +23830,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25553,11 +25624,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -26014,7 +26085,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26740,7 +26811,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27523,16 +27594,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27541,11 +27606,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27553,17 +27618,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27582,7 +27647,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27596,30 +27661,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27627,63 +27673,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28508,7 +28554,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29990,171 +30036,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -30163,7 +30213,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -30172,26 +30222,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -30200,108 +30250,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31986,20 +32036,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -32012,52 +32065,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -32079,100 +32132,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -32180,80 +32233,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32536,59 +32589,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32596,34 +32649,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32776,70 +32829,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32956,11 +33013,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -33008,53 +33065,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33878,7 +33935,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35771,22 +35828,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35797,7 +35857,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35814,7 +35874,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35825,27 +35885,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35853,7 +35913,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35864,30 +35924,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35897,7 +35957,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35908,7 +35968,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35922,7 +35982,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35931,14 +35991,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35951,7 +36011,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35959,32 +36019,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35992,13 +36052,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -36008,7 +36068,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -36017,11 +36077,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -36030,138 +36090,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37346,34 +37406,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37381,96 +37441,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -40098,20 +40158,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43946,6 +44006,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43953,7 +44025,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43963,13 +44035,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43983,14 +44055,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43999,7 +44071,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -44007,7 +44079,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -44023,20 +44095,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -44044,75 +44116,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44122,7 +44194,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44132,27 +44204,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -44160,81 +44232,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44242,109 +44314,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44355,91 +44427,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44448,13 +44520,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44464,7 +44536,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44472,19 +44544,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44498,45 +44570,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44545,7 +44617,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44556,7 +44628,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44572,14 +44644,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44587,49 +44659,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44638,7 +44710,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44646,7 +44718,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44654,7 +44726,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44664,7 +44736,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44673,7 +44745,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44682,7 +44754,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44692,7 +44764,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44700,7 +44772,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44710,7 +44782,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44720,7 +44792,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44728,7 +44800,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44737,7 +44809,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44745,7 +44817,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44757,477 +44829,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45235,92 +45307,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45330,33 +45402,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45369,7 +45441,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45381,7 +45453,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45393,7 +45465,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45406,7 +45478,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45414,28 +45486,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45445,25 +45517,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45476,7 +45548,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45488,7 +45560,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45500,7 +45572,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45513,13 +45585,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45527,11 +45599,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45545,7 +45617,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45554,7 +45626,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45570,7 +45642,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45580,7 +45652,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45590,7 +45662,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45601,7 +45673,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45611,7 +45683,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45619,7 +45691,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45630,7 +45702,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45645,7 +45717,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45654,13 +45726,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45669,7 +45741,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45679,7 +45751,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45691,7 +45763,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45701,24 +45773,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45727,7 +45799,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45735,7 +45807,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45744,7 +45816,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45754,7 +45826,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45762,31 +45834,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45794,7 +45866,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45804,14 +45876,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45819,31 +45891,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45851,7 +45923,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45861,7 +45933,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45870,7 +45942,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45879,20 +45951,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45901,7 +45973,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45909,7 +45981,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45918,7 +45990,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45928,20 +46000,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45950,13 +46022,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45966,46 +46038,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -46015,7 +46087,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -46027,7 +46099,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -46035,7 +46107,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -46043,7 +46115,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -46052,7 +46124,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -46066,7 +46138,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -46076,7 +46148,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -46085,7 +46157,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -46095,54 +46167,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -46153,61 +46225,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -46216,26 +46299,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46246,20 +46329,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46271,52 +46354,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46324,7 +46407,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46333,10 +46416,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46344,10 +46428,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46355,10 +46440,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46366,10 +46452,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46377,10 +46464,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -47205,23 +47293,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -47230,75 +47322,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -48177,121 +48269,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48299,11 +48395,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48314,7 +48410,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48322,7 +48418,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48334,14 +48430,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48350,17 +48446,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48368,36 +48464,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48405,7 +48501,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48414,111 +48510,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48821,14 +48917,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48841,15 +48940,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49086,14 +49188,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -49103,14 +49208,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49719,27 +49827,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49751,7 +49863,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49761,7 +49873,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49777,67 +49889,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49848,7 +49960,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49857,30 +49969,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49888,37 +50000,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49929,7 +50041,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49940,7 +50052,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49950,50 +50062,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -50001,110 +50113,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -50132,7 +50244,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50339,45 +50451,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52643,32 +52764,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54952,228 +55076,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55485,102 +55612,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55596,311 +55726,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55975,7 +56105,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55988,19 +56118,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -56011,7 +56141,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56863,12 +56993,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56878,26 +57017,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57641,16 +57782,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -64086,79 +64234,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -64166,18 +64314,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -64188,144 +64336,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64335,25 +64483,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64364,78 +64512,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64447,7 +64595,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64456,31 +64604,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64489,62 +64637,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64556,7 +64704,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64568,7 +64716,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64580,71 +64728,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64653,19 +64801,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64675,7 +64823,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64686,75 +64834,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64763,53 +64911,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64820,98 +64968,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64919,7 +65067,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64930,69 +65078,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -65007,20 +65155,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65031,7 +65179,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65042,23 +65190,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -65066,118 +65214,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65188,59 +65336,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65248,25 +65396,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65274,7 +65422,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65284,30 +65432,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65316,19 +65464,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65336,11 +65484,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65349,47 +65497,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65398,11 +65546,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65411,11 +65559,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65426,15 +65574,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65443,95 +65591,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65553,7 +65701,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65562,84 +65710,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65655,24 +65803,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65682,34 +65830,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65720,7 +65868,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65730,208 +65878,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65940,672 +66088,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68909,8 +69057,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69439,52 +69587,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/fi.po b/doc/translations/fi.po
index 0c89ec343c..1fee7179f2 100644
--- a/doc/translations/fi.po
+++ b/doc/translations/fi.po
@@ -3745,20 +3745,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3767,11 +3775,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3785,15 +3793,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6358,13 +6366,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6390,14 +6400,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6533,26 +6545,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6579,14 +6595,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6595,14 +6614,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7203,7 +7225,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9942,7 +9964,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12647,9 +12672,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14471,7 +14495,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14571,84 +14595,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14964,7 +14995,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19592,117 +19627,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19873,7 +19912,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19999,7 +20039,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20177,18 +20218,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20198,119 +20241,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20318,17 +20372,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20658,30 +20712,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20691,22 +20747,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20714,68 +20770,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20783,22 +20839,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20807,26 +20863,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22468,53 +22524,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22522,58 +22586,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22584,19 +22648,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22604,17 +22668,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22622,24 +22686,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22647,21 +22711,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22669,65 +22733,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22737,43 +22801,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23306,20 +23370,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23328,125 +23399,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25123,11 +25194,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25590,7 +25661,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26316,7 +26387,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27099,16 +27170,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27117,11 +27182,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27129,17 +27194,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27158,7 +27223,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27172,30 +27237,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27203,63 +27249,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28086,7 +28132,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29569,171 +29615,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29742,7 +29792,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29751,26 +29801,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29779,108 +29829,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31566,20 +31616,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31592,52 +31645,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31659,100 +31712,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31760,80 +31813,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32116,59 +32169,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32176,34 +32229,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32356,70 +32409,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32536,11 +32593,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32588,53 +32645,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33459,7 +33516,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35345,22 +35402,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35371,7 +35431,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35388,7 +35448,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35399,27 +35459,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35427,7 +35487,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35438,30 +35498,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35471,7 +35531,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35482,7 +35542,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35496,7 +35556,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35505,14 +35565,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35525,7 +35585,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35533,32 +35593,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35566,13 +35626,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35582,7 +35642,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35591,11 +35651,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35604,138 +35664,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36919,34 +36979,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36954,96 +37014,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39664,20 +39724,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43516,6 +43576,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43523,7 +43595,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43533,13 +43605,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43553,14 +43625,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43569,7 +43641,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43577,7 +43649,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43593,20 +43665,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43614,75 +43686,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43692,7 +43764,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43702,27 +43774,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43730,81 +43802,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43812,109 +43884,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43925,91 +43997,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44018,13 +44090,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44034,7 +44106,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44042,19 +44114,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44068,45 +44140,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44115,7 +44187,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44126,7 +44198,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44142,14 +44214,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44157,49 +44229,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44208,7 +44280,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44216,7 +44288,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44224,7 +44296,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44234,7 +44306,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44243,7 +44315,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44252,7 +44324,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44262,7 +44334,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44270,7 +44342,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44280,7 +44352,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44290,7 +44362,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44298,7 +44370,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44307,7 +44379,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44315,7 +44387,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44327,477 +44399,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44805,92 +44877,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44900,33 +44972,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44939,7 +45011,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44951,7 +45023,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44963,7 +45035,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44976,7 +45048,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44984,28 +45056,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45015,25 +45087,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45046,7 +45118,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45058,7 +45130,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45070,7 +45142,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45083,13 +45155,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45097,11 +45169,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45115,7 +45187,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45124,7 +45196,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45140,7 +45212,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45150,7 +45222,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45160,7 +45232,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45171,7 +45243,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45181,7 +45253,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45189,7 +45261,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45200,7 +45272,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45215,7 +45287,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45224,13 +45296,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45239,7 +45311,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45249,7 +45321,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45261,7 +45333,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45271,24 +45343,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45297,7 +45369,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45305,7 +45377,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45314,7 +45386,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45324,7 +45396,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45332,31 +45404,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45364,7 +45436,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45374,14 +45446,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45389,31 +45461,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45421,7 +45493,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45431,7 +45503,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45440,7 +45512,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45449,20 +45521,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45471,7 +45543,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45479,7 +45551,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45488,7 +45560,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45498,20 +45570,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45520,13 +45592,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45536,46 +45608,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45585,7 +45657,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45597,7 +45669,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45605,7 +45677,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45613,7 +45685,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45622,7 +45694,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45636,7 +45708,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45646,7 +45718,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45655,7 +45727,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45665,54 +45737,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45723,61 +45795,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45786,26 +45869,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45816,20 +45899,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45841,52 +45924,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45894,7 +45977,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45903,10 +45986,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45914,10 +45998,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45925,10 +46010,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45936,10 +46022,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45947,10 +46034,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46769,22 +46857,26 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr "https://docs.godotengine.org/en/latest/tutorials/3d/gi_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46793,75 +46885,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47739,121 +47831,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47861,11 +47957,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47876,7 +47972,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47884,7 +47980,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47896,14 +47992,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47912,17 +48008,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47930,36 +48026,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47967,7 +48063,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47976,111 +48072,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48383,14 +48479,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48403,15 +48502,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48646,14 +48748,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48663,14 +48768,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49279,27 +49387,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49311,7 +49423,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49321,7 +49433,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49337,67 +49449,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49408,7 +49520,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49417,30 +49529,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49448,37 +49560,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49489,7 +49601,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49500,7 +49612,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49510,50 +49622,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49561,110 +49673,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49692,7 +49804,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49899,45 +50011,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52202,32 +52323,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54512,228 +54636,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55047,102 +55174,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55158,311 +55288,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55537,7 +55667,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55550,19 +55680,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55573,7 +55703,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56426,12 +56556,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56441,26 +56580,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57203,16 +57344,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63656,79 +63804,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63736,18 +63884,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63758,145 +63906,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Palauttaa parametrin sinin."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63906,25 +64054,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63935,79 +64083,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Palauttaa parametrin arkussinin."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64019,7 +64167,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64028,31 +64176,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64061,62 +64209,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64128,7 +64276,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64140,7 +64288,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64152,71 +64300,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64225,19 +64373,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64247,7 +64395,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64258,77 +64406,77 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Palauttaa parametrin sinin."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Palauttaa parametrin vasta-arvon."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64337,53 +64485,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64394,100 +64542,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Palauttaa parametrin tangentin."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Palauttaa parametrin vasta-arvon."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64495,7 +64643,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64506,69 +64654,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64583,20 +64731,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64607,7 +64755,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64618,23 +64766,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64642,118 +64790,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64764,59 +64912,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64824,25 +64972,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64850,7 +64998,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64860,30 +65008,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64892,19 +65040,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64912,11 +65060,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64925,47 +65073,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64974,11 +65122,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64987,11 +65135,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65002,15 +65150,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65019,102 +65167,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Palauttaa parametrin sinin."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Palauttaa parametrin sinin."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Palauttaa kahden vektorin jäännöksen."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Palauttaa parametrin tangentin."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Palauttaa parametrin tangentin."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Palauttaa kahden vektorin jäännöksen."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Palauttaa parametrin käänteisen neliöjuuren."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65136,7 +65284,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65145,84 +65293,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65238,24 +65386,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65265,34 +65413,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65303,7 +65451,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65313,208 +65461,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65523,672 +65671,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68494,8 +68642,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69024,53 +69172,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Palauttaa parametrin kosinin."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69340,3 +69491,7 @@ msgstr ""
msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Palauttaa parametrin kosinin."
diff --git a/doc/translations/fil.po b/doc/translations/fil.po
index 68edd9a8cf..3874d2b91f 100644
--- a/doc/translations/fil.po
+++ b/doc/translations/fil.po
@@ -3733,20 +3733,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3755,11 +3763,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3773,15 +3781,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6343,13 +6351,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6375,14 +6385,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6520,26 +6532,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6566,14 +6582,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6582,14 +6601,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7190,7 +7212,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9932,7 +9954,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12640,9 +12665,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14467,7 +14491,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14567,84 +14591,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14960,7 +14991,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19584,117 +19619,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19865,7 +19904,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19991,7 +20031,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20169,18 +20210,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20190,119 +20233,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20310,17 +20364,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20650,30 +20704,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20683,22 +20739,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20706,68 +20762,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20775,22 +20831,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20799,26 +20855,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22461,53 +22517,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22515,58 +22579,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22577,19 +22641,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22597,17 +22661,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22615,24 +22679,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22640,21 +22704,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22662,65 +22726,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22730,43 +22794,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23298,20 +23362,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23320,125 +23391,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25114,11 +25185,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25575,7 +25646,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26301,7 +26372,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27084,16 +27155,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27102,11 +27167,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27114,17 +27179,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27143,7 +27208,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27157,30 +27222,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27188,63 +27234,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28069,7 +28115,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29551,171 +29597,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29724,7 +29774,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29733,26 +29783,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29761,108 +29811,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31547,20 +31597,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31573,52 +31626,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31640,100 +31693,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31741,80 +31794,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32097,59 +32150,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32157,34 +32210,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32337,70 +32390,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32517,11 +32574,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32569,53 +32626,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33439,7 +33496,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35326,22 +35383,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35352,7 +35412,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35369,7 +35429,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35380,27 +35440,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35408,7 +35468,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35419,30 +35479,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35452,7 +35512,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35463,7 +35523,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35477,7 +35537,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35486,14 +35546,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35506,7 +35566,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35514,32 +35574,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35547,13 +35607,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35563,7 +35623,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35572,11 +35632,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35585,138 +35645,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36901,34 +36961,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36936,96 +36996,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39641,20 +39701,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43489,6 +43549,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43496,7 +43568,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43506,13 +43578,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43526,14 +43598,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43542,7 +43614,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43550,7 +43622,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43566,20 +43638,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43587,75 +43659,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43665,7 +43737,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43675,27 +43747,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43703,81 +43775,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43785,109 +43857,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43898,91 +43970,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -43991,13 +44063,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44007,7 +44079,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44015,19 +44087,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44041,45 +44113,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44088,7 +44160,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44099,7 +44171,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44115,14 +44187,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44130,49 +44202,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44181,7 +44253,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44189,7 +44261,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44197,7 +44269,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44207,7 +44279,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44216,7 +44288,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44225,7 +44297,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44235,7 +44307,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44243,7 +44315,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44253,7 +44325,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44263,7 +44335,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44271,7 +44343,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44280,7 +44352,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44288,7 +44360,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44300,477 +44372,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44778,92 +44850,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44873,33 +44945,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44912,7 +44984,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44924,7 +44996,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44936,7 +45008,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44949,7 +45021,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44957,28 +45029,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44988,25 +45060,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45019,7 +45091,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45031,7 +45103,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45043,7 +45115,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45056,13 +45128,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45070,11 +45142,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45088,7 +45160,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45097,7 +45169,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45113,7 +45185,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45123,7 +45195,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45133,7 +45205,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45144,7 +45216,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45154,7 +45226,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45162,7 +45234,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45173,7 +45245,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45188,7 +45260,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45197,13 +45269,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45212,7 +45284,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45222,7 +45294,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45234,7 +45306,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45244,24 +45316,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45270,7 +45342,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45278,7 +45350,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45287,7 +45359,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45297,7 +45369,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45305,31 +45377,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45337,7 +45409,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45347,14 +45419,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45362,31 +45434,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45394,7 +45466,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45404,7 +45476,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45413,7 +45485,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45422,20 +45494,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45444,7 +45516,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45452,7 +45524,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45461,7 +45533,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45471,20 +45543,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45493,13 +45565,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45509,46 +45581,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45558,7 +45630,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45570,7 +45642,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45578,7 +45650,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45586,7 +45658,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45595,7 +45667,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45609,7 +45681,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45619,7 +45691,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45628,7 +45700,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45638,54 +45710,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45696,61 +45768,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45759,26 +45842,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45789,20 +45872,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45814,52 +45897,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45867,7 +45950,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45876,10 +45959,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45887,10 +45971,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45898,10 +45983,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45909,10 +45995,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45920,10 +46007,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46744,23 +46832,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46769,75 +46861,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47716,121 +47808,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47838,11 +47934,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47853,7 +47949,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47861,7 +47957,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47873,14 +47969,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47889,17 +47985,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47907,36 +48003,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47944,7 +48040,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47953,111 +48049,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48360,14 +48456,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48380,15 +48479,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48625,14 +48727,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48642,14 +48747,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49258,27 +49366,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49290,7 +49402,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49300,7 +49412,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49316,67 +49428,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49387,7 +49499,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49396,30 +49508,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49427,37 +49539,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49468,7 +49580,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49479,7 +49591,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49489,50 +49601,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49540,110 +49652,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49671,7 +49783,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49878,45 +49990,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52182,32 +52303,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54491,228 +54615,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55024,102 +55151,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55135,311 +55265,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55514,7 +55644,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55527,19 +55657,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55550,7 +55680,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56402,12 +56532,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56417,26 +56556,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57180,16 +57321,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63625,79 +63773,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63705,18 +63853,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63727,144 +63875,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63874,25 +64022,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63903,78 +64051,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63986,7 +64134,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -63995,31 +64143,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64028,62 +64176,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64095,7 +64243,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64107,7 +64255,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64119,71 +64267,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64192,19 +64340,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64214,7 +64362,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64225,75 +64373,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64302,53 +64450,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64359,98 +64507,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64458,7 +64606,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64469,69 +64617,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64546,20 +64694,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64570,7 +64718,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64581,23 +64729,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64605,118 +64753,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64727,59 +64875,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64787,25 +64935,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64813,7 +64961,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64823,30 +64971,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64855,19 +65003,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64875,11 +65023,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64888,47 +65036,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64937,11 +65085,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64950,11 +65098,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64965,15 +65113,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64982,95 +65130,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65092,7 +65240,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65101,84 +65249,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65194,24 +65342,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65221,34 +65369,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65259,7 +65407,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65269,208 +65417,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65479,672 +65627,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68448,8 +68596,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68978,52 +69126,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/fr.po b/doc/translations/fr.po
index 82104859da..aaa417b657 100644
--- a/doc/translations/fr.po
+++ b/doc/translations/fr.po
@@ -41,13 +41,16 @@
# AndyNekena <andy.nekena@gmail.com>, 2021.
# Legorel <Legorel412@gmail.com>, 2021.
# Romain Hebert <romain.hebert0442@gmail.com>, 2021.
+# Tim Krief <tim@timkrief.com>, 2021.
+# Rémi Verschelde <akien@godotengine.org>, 2021.
+# blfr <contact.blfr@gmail.com>, 2021.
msgid ""
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: 2021-09-02 14:32+0000\n"
-"Last-Translator: Romain Hebert <romain.hebert0442@gmail.com>\n"
+"PO-Revision-Date: 2021-10-15 09:31+0000\n"
+"Last-Translator: Rémi Verschelde <akien@godotengine.org>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/fr/>\n"
"Language: fr\n"
@@ -55,7 +58,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.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: doc/tools/makerst.py
msgid "Description"
@@ -154,7 +157,6 @@ msgstr ""
"définies dans [Color]."
#: modules/gdscript/doc_classes/@GDScript.xml:45
-#, fuzzy
msgid ""
"Returns the absolute value of parameter [code]s[/code] (i.e. positive "
"value).\n"
@@ -165,12 +167,10 @@ msgstr ""
"Renvoie la valeur absolue du paramètre [code]s[/code] (c'est-à-dire la "
"valeur positive).\n"
"[codeblock]\n"
-"# a est 1\n"
-"a = abs(-1)\n"
+"a = abs(-1) # a vaut 1\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:55
-#, 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 "
@@ -181,15 +181,16 @@ msgid ""
"c = acos(0.866025)\n"
"[/codeblock]"
msgstr ""
-"Renvoie le cosinus inverse de [code]s[/code] en radians. Utiliser pour "
-"obtenir l'angle du cosinus [code]s[/code].\n"
+"Renvoie le cosinus inverse de [code]s[/code] en radians. À utiliser pour "
+"obtenir l'angle du cosinus [code]s[/code]. [code]s[/code] doit être entre "
+"[code]-1.0[/code] et [code]1.0[/code] (inclus), dans le cas contraire, "
+"[method acos] retournera [constant NAN].\n"
"[codeblock]\n"
"# c vaut 0.523599 ou 30 degrés si converti avec rad2deg(s)\n"
"c = acos(0.866025)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:66
-#, 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 "
@@ -201,14 +202,15 @@ msgid ""
"[/codeblock]"
msgstr ""
"Renvoie le sinus inverse de [code]s[/code] en radians. Utiliser pour obtenir "
-"l'angle du sinus [code]s[/code].\n"
+"l'angle du sinus [code]s[/code]. [code]s[/code] doit être compris entre "
+"[code]-1.0[/code] et [code]1.0[/code] (inclus) ; dans le cas contraire, "
+"[method asin] renvoie [constant NAN].\n"
"[codeblock]\n"
"# s vaut 0.523599 ou 30 degrés si converti avec rad2deg(s)\n"
"s = asin(0.5)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:78
-#, 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 "
@@ -234,26 +236,30 @@ msgid ""
"a message with clarifying details\n"
"[/codeblock]"
msgstr ""
-"Vérifie que la [code]condition[/code] est [code]vraie[/code]. Si la "
-"[code]condition[/code] est [code]fausse[/code], une erreur est générée et le "
-"programme est interrompu jusqu'à ce que vous le redémarriez. Ne s'exécute "
-"que pour les builds de débogage, ou quand vous lancez votre jeu depuis "
-"l'éditeur. Utilisez ceci à des fins de débogage, pour vous assurer qu'une "
-"déclaration est [code]vraie[/ code] au cours du développement.\n"
+"Vérifie que la [code]condition[/code] est vraie ([code]true[/code]). Si la "
+"[code]condition[/code] est fausse ([code]false[/code]), une erreur est "
+"générée. Si le programme est lancé via l'éditeur, son exécution sera aussi "
+"interrompue jusqu'à ce que vous le redémarriez. Cela peut être utilisé comme "
+"une alternative plus radicale à [method push_error] pour rapporter des "
+"erreurs aux développeurs de projets ou utilisateurs de plugins.\n"
+"[b]Note :[/b] Par souci de performance, le code inclus dans [method assert] "
+"n'est exécuté dans dans les builds de débogage, ou quand vous lancez votre "
+"jeu depuis l'éditeur. N'incluez pas de code qui modifie l'état du script "
+"dans un appel à [method assert]. Sinon, votre projet aura un fonctionnement "
+"différent une fois exporté en build de production ([i]release[/i]).\n"
"L'argument facultatif [code]message[/code], s'il est donné, est affiché en "
-"plus du message générique « Échec de l'assertion ». Vous pouvez l'utiliser "
-"pour fournir des détails supplémentaires sur la raison de l'échec de "
-"l'assertion.\n"
+"plus du message générique « [i]Assertion failed[/i] » (Échec de "
+"l'assertion). Vous pouvez l'utiliser pour fournir des détails "
+"supplémentaires sur la raison de l'échec de l'assertion.\n"
"[codeblock]\n"
-"# Imaginez que nous voulons toujours que la vitesse soit comprise entre 0 et "
-"20\n"
+"# Imaginez que nous voulons une vitesse toujours comprise entre 0 et 20.\n"
"speed = -10\n"
"assert(speed < 20) # Vrai, le programme continue\n"
"assert(speed >= 0) # Faux, le programme s'interrompt\n"
"assert(speed >= 0 && speed < 20) # Vous pouvez aussi combiner les deux "
-"conditionnelles en une seule vérification\n"
+"conditions en une seule vérification\n"
"assert(speed < 20, \"speed = %f, mais la limite de vitesse est 20\" % speed) "
-"# Affiche un message avec la clarification des détails\n"
+"# Affiche un message avec de plus amples détails\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:95
@@ -323,7 +329,6 @@ msgstr ""
"rapport à l'origine et un angle)."
#: modules/gdscript/doc_classes/@GDScript.xml:135
-#, fuzzy
msgid ""
"Rounds [code]s[/code] upward (towards positive infinity), returning the "
"smallest whole number that is not less than [code]s[/code].\n"
@@ -336,9 +341,10 @@ msgstr ""
"Arrondit [code]s[/code] au supérieur (vers l'infini positif), renvoyant la "
"plus petite valeur entière qui n'est pas inférieure à [code]s[/code].\n"
"[codeblock]\n"
-"i = ceil(1.45) # i vaut 2\n"
-"i = ceil(1.001) # i vaut 2\n"
-"[/codeblock]"
+"i = ceil(1.45) # i vaut 2.0\n"
+"i = ceil(1.001) # i vaut 2.0\n"
+"[/codeblock]\n"
+"Consultez aussi [method floor], [method round], [method stepify] et [int]."
#: modules/gdscript/doc_classes/@GDScript.xml:147
msgid ""
@@ -361,7 +367,6 @@ msgstr ""
"C'est l'inverse de [method ord]."
#: modules/gdscript/doc_classes/@GDScript.xml:162
-#, fuzzy
msgid ""
"Clamps [code]value[/code] and returns a value not less than [code]min[/code] "
"and not more than [code]max[/code].\n"
@@ -374,13 +379,9 @@ msgstr ""
"Fixe une [code]value[/code] (valeur) et renvoie la valeur comprise entre "
"[code]min[/code] et [code]max[/code].\n"
"[codeblock]\n"
-"vitesse = 1000\n"
-"# a vaut 20\n"
-"a = clamp(vitesse, 1, 20)\n"
-"\n"
-"vitesse = -10\n"
-"# a vaut 1\n"
-"a = clamp(vitesse, 1, 20)\n"
+"a = clamp(1000, 1, 20) # a vaut 20\n"
+"a = clamp(-10, 1, 20) # a vaut 1\n"
+"a = clamp(15, 1, 20) # a vaut 15\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:175
@@ -408,7 +409,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:190
-#, fuzzy
msgid ""
"Returns the cosine of angle [code]s[/code] in radians.\n"
"[codeblock]\n"
@@ -416,13 +416,13 @@ msgid ""
"a = cos(PI) # a is -1.0\n"
"[/codeblock]"
msgstr ""
-"Retourne le sinus de l'angle [code]s[/code] en radians.\n"
+"Retourne le cosinus de l'angle [code]s[/code] en radians.\n"
"[codeblock]\n"
-"sin(0.523599) # Retourne 0,5\n"
+"a = cos(TAU) # a vaut 1.0\n"
+"a = cos(PI) # a vaut -1.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:201
-#, fuzzy
msgid ""
"Returns the hyperbolic cosine of [code]s[/code] in radians.\n"
"[codeblock]\n"
@@ -431,8 +431,7 @@ msgid ""
msgstr ""
"Renvoie le cosinus hyperbolique de [code]s[/code] en radians.\n"
"[codeblock]\n"
-"# Renvoie 1.543081\n"
-"print(cosh(1))\n"
+"print(cosh(1)) # Renvoie 1.543081\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:211
@@ -441,10 +440,9 @@ msgstr "Convertit les décibels en énergie linéaire (audio)."
#: modules/gdscript/doc_classes/@GDScript.xml:218
msgid "Deprecated alias for [method step_decimals]."
-msgstr ""
+msgstr "Alias [method step_decimals] obsolète."
#: modules/gdscript/doc_classes/@GDScript.xml:227
-#, fuzzy
msgid ""
"[b]Note:[/b] [code]dectime[/code] has been deprecated and will be removed in "
"Godot 4.0, please use [method move_toward] instead.\n"
@@ -454,15 +452,16 @@ msgid ""
"a = dectime(60, 10, 0.1)) # a is 59.0\n"
"[/codeblock]"
msgstr ""
-"Renvoie le résultat de [code]valeur[/code] diminuée par [code]étape[/code] * "
-"[code]quantité[/code].\n"
+"[b]Note :[/b] [code]dectime[/code] a été marqué comme obsolète et sera "
+"retiré dans Godot 4.0, utilisez la méthode équivalente [method move_toward] "
+"à la place.\n"
+"Renvoie le résultat de [code]value[/code] diminuée par [code]step[/code] * "
+"[code]amount[/code].\n"
"[codeblock]\n"
-"# a = 59\n"
-"a = dectime(60, 10, 0.1))\n"
+"a = dectime(60, 10, 0.1)) # a vaut 59.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:238
-#, fuzzy
msgid ""
"Converts an angle expressed in degrees to radians.\n"
"[codeblock]\n"
@@ -471,18 +470,16 @@ msgid ""
msgstr ""
"Convertit un angle exprimé en degrés en radians.\n"
"[codeblock]\n"
-"# r vaut 3.141593\n"
-"r = deg2rad(180)\n"
+"r = deg2rad(180) # r vaut 3.141593\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:248
-#, fuzzy
msgid ""
"Converts a dictionary (previously created with [method inst2dict]) back to "
"an instance. Useful for deserializing."
msgstr ""
-"Convertit une instance précédemment convertie en dictionnaire, puis la "
-"convertit à nouveau en instance. Utile pour la désérialisation."
+"Convertit un dictionnaire (créé précédemment avec [method inst2dist]) à "
+"nouveau en une instance. Utile pour la désérialisation."
#: modules/gdscript/doc_classes/@GDScript.xml:256
msgid ""
@@ -526,7 +523,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:286
-#, fuzzy
msgid ""
"Rounds [code]s[/code] downward (towards negative infinity), returning the "
"largest whole number that is not more than [code]s[/code].\n"
@@ -543,17 +539,16 @@ msgstr ""
"Arrondit [code]s[/code] à l'inférieur (vers l'infini négatif), renvoyant le "
"plus grand nombre entier qui n'est pas supérieur à [code]s[/code].\n"
"[codeblock]\n"
-"# a vaut 2.0\n"
-"a = floor(2.99)\n"
-"# a vaut -3.0\n"
-"a = floor(-2.99)\n"
+"a = floor(2.45) # a vaut 2.0\n"
+"a = floor(2.99) # a vaut 2.0\n"
+"a = floor(-2.99) # a vaut -3.0\n"
"[/codeblock]\n"
+"Consultez aussi [method ceil], [method round], [method stepify] et [int].\n"
"[b]Remarque :[/b] Cette méthode renvoie un nombre flottant. Si vous avez "
-"besoin d'un nombre entier, vous pouvez utiliser directement [code]int(s)[/"
-"code]."
+"besoin d'un nombre entier, et que [code]s[/code] n'est pas un nombre "
+"négatif, vous pouvez utiliser directement [code]int(s)[/code]."
#: modules/gdscript/doc_classes/@GDScript.xml:301
-#, fuzzy
msgid ""
"Returns the floating-point remainder of [code]a/b[/code], keeping the sign "
"of [code]a[/code].\n"
@@ -565,13 +560,11 @@ msgstr ""
"Renvoie le reste en virgule flottante de [code]a/b[/code], en conservant le "
"signe de [code]a[/code].\n"
"[codeblock]\n"
-"# Le reste vaut 1.5\n"
-"var reste = fmod(7, 5.5)\n"
+"r = fmod(7, 5.5) # r vaut 1.5\n"
"[/codeblock]\n"
"Pour l'opération de reste entier, utilisez l'opérateur %."
#: modules/gdscript/doc_classes/@GDScript.xml:313
-#, fuzzy
msgid ""
"Returns the floating-point modulus of [code]a/b[/code] that wraps equally in "
"positive and negative.\n"
@@ -594,24 +587,19 @@ msgstr ""
"Renvoie le modulo en virgule flottante de [code]a/b[/code] qui englobe aussi "
"bien le positif que le négatif.\n"
"[codeblock]\n"
-"var i = -6\n"
-"while i < 5:\n"
-" prints(i, fposmod(i, 3))\n"
-" i += 1\n"
+"for i in 7:\n"
+" var x = 0.5 * i - 1.5\n"
+" print(\"%4.1f %4.1f %4.1f\" % [x, fmod(x, 1.5), fposmod(x, 1.5)])\n"
"[/codeblock]\n"
"Donne :\n"
"[codeblock]\n"
-"-6 0\n"
-"-5 1\n"
-"-4 2\n"
-"-3 0\n"
-"-2 1\n"
-"-1 2\n"
-"0 0\n"
-"1 1\n"
-"2 2\n"
-"3 0\n"
-"4 1\n"
+"-1.5 -0.0 0.0\n"
+"-1.0 -1.0 0.5\n"
+"-0.5 -0.5 1.0\n"
+" 0.0 0.0 0.0\n"
+" 0.5 0.5 0.5\n"
+" 1.0 1.0 1.0\n"
+" 1.5 0.0 0.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:336
@@ -836,7 +824,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:482
-#, fuzzy
msgid ""
"Linearly interpolates between two values by a normalized value. This is the "
"opposite of [method inverse_lerp].\n"
@@ -856,10 +843,10 @@ msgstr ""
"[float], la valeur de retour est un [float].\n"
"Si les deux sont du même type de vecteur ([Vector2], [Vector3] ou [Color]), "
"la valeur de retour sera du même type ([code]lerp[/code] appelle alors la "
-"méthode du type de vecteur [code]lerp[/code]).\n"
+"méthode du type de vecteur [code]linear_interpolate[/code]).\n"
"[codeblock]\n"
-"lerp(0, 4, 0.75) # Returns 3.0\n"
-"lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Returns Vector2(2, 3.5)\n"
+"lerp(0, 4, 0.75) # Renvoie 3.0\n"
+"lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Renvoie Vector2(2, 3.5)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:497
@@ -921,7 +908,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:527
-#, fuzzy
msgid ""
"Loads a resource from the filesystem located at [code]path[/code]. The "
"resource is loaded on the method call (unless it's referenced already "
@@ -943,25 +929,27 @@ msgid ""
"This method is a simplified version of [method ResourceLoader.load], which "
"can be used for more advanced scenarios."
msgstr ""
-"Charge une ressource depuis le système de fichiers localisé à [code]chemin[/"
+"Charge une ressource depuis le système de fichiers localisé à [code]path[/"
"code]. La ressource est chargée lors de l'appel de la méthode (sauf si elle "
"est déjà référencée ailleurs, par exemple dans un autre script ou dans la "
"scène), ce qui peut causer un léger délai, surtout lors du chargement d'une "
-"scène. Pour éviter des délais inutiles lorsque vous chargez quelque-chose "
+"scène. Pour éviter des délais inutiles lorsque vous chargez quelque chose "
"plusieurs fois, stockez la ressource dans une variable ou utilisez [method "
"preload].\n"
"[b]Note :[/b] Les chemins des ressources peuvent être obtenus en faisant un "
"clic droit sur une ressource dans le dock du système de fichiers et en "
-"choisissant \"Copy Path\", ou en déplaçant le fichier du système de fichiers "
-"vers le script.\n"
+"choisissant \"Copier le chemin\", ou en déplaçant le fichier du système de "
+"fichiers vers le script.\n"
"[codeblock]\n"
-"# Charger une scène appelée main située dans la racine du répertoire du "
-"projet et la stocker dans une variable.\n"
+"# Charge une scène appelée main située dans la racine du répertoire du "
+"projet et la stocke dans une variable.\n"
"var main = load(\"res://main.tscn\") # main contiendra une ressource "
"PackedScene.\n"
"[/codeblock]\n"
-"[b]Important:[/b] Le chemin doit être absolu, un chemin local va juste "
-"retourner [code]null[/code]."
+"[b]Important :[/b] Le chemin doit être absolu. Un chemin local retournera "
+"[code]null[/code].\n"
+"Cette méthode est une version simplifiée de [method ResourceLoader.load], "
+"qui peut être utilisée pour des scénarios plus avancés."
#: modules/gdscript/doc_classes/@GDScript.xml:541
msgid ""
@@ -1141,7 +1129,6 @@ msgstr ""
"en système de coordonnées cartésiennes (axes X et Y)."
#: modules/gdscript/doc_classes/@GDScript.xml:648
-#, fuzzy
msgid ""
"Returns the integer modulus of [code]a/b[/code] that wraps equally in "
"positive and negative.\n"
@@ -1160,31 +1147,24 @@ msgid ""
" 3 0 0\n"
"[/codeblock]"
msgstr ""
-"Retourne le module entier de [code]a/b[/code] qui enveloppe également en "
-"positif et en négatif.\n"
+"Retourne le module entier de [code]a/b[/code] qui englobe aussi bien le "
+"positif que le négatif.\n"
"[codeblock]\n"
-"var i = -6\n"
-"while i < 5 :\n"
-" prints (i, posmod (i, 3))\n"
-" i += 1\n"
+"for i in range(-3, 4):\n"
+" print(\"%2d %2d %2d\" % [i, i % 3, posmod(i, 3)])\n"
"[/codeblock]\n"
-"Produces :\n"
+"Donne :\n"
"[codeblock]\n"
-"-6 0\n"
-"-5 1\n"
-"-4 2\n"
-"-3 0\n"
-"-2 1\n"
-"-1 2\n"
-"0 0\n"
-"1 1\n"
-"2 2\n"
-"3 0\n"
-"4 1\n"
+"-3 0 0\n"
+"-2 -2 1\n"
+"-1 -1 2\n"
+" 0 0 0\n"
+" 1 1 1\n"
+" 2 2 2\n"
+" 3 0 0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:670
-#, fuzzy
msgid ""
"Returns the result of [code]base[/code] raised to the power of [code]exp[/"
"code].\n"
@@ -1192,9 +1172,10 @@ msgid ""
"pow(2, 5) # Returns 32.0\n"
"[/codeblock]"
msgstr ""
-"Retourne le résultat de [code]x[/code] élevé à la puissance [code]y[/code].\n"
+"Retourne le résultat de [code]base[/code] élevé à la puissance [code]exp[/"
+"code].\n"
"[codeblock]\n"
-"pow(2, 5) # Returns 32\n"
+"pow(2, 5) # Renvoie 32.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:680
@@ -1328,7 +1309,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:758
-#, fuzzy
msgid ""
"Pushes an error message to Godot's built-in debugger and to the OS "
"terminal.\n"
@@ -1340,12 +1320,16 @@ msgid ""
"print an error message and pause project execution in debug builds, use "
"[code]assert(false, \"test error\")[/code] instead."
msgstr ""
-"Renvoie un message d'erreur au déboguer interne de Godot et dans le terminal "
-"de l'OS.\n"
+"Renvoie un message d'erreur au débogueur interne de Godot et dans le "
+"terminal du système.\n"
"[codeblock]\n"
-"push_error(\"test error\") # Prints \"test error\" to debugger and terminal "
-"as error call\n"
-"[/codeblock]"
+"push_error(\"test error\") # Affiche \"test error\" dans le débogueur et le "
+"terminal du système comme erreur d'exécution\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Les erreurs affichées ainsi n'interrompent pas l'exécution du "
+"projet. Pour afficher un message d'erreur et interrompre l'exécution du "
+"projet dans un build de débogage, utilisez [code]assert(false, \"test error"
+"\")[/code]."
#: modules/gdscript/doc_classes/@GDScript.xml:769
msgid ""
@@ -1364,7 +1348,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:779
-#, fuzzy
msgid ""
"Converts an angle expressed in radians to degrees.\n"
"[codeblock]\n"
@@ -1373,7 +1356,7 @@ msgid ""
msgstr ""
"Convertis un angle exprimé en radians en degrés.\n"
"[codeblock]\n"
-"rad2deg(0.523599) # Returns 30\n"
+"rad2deg(0.523599) # Returns 30.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:790
@@ -1417,7 +1400,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:815
-#, fuzzy
msgid ""
"Returns a random unsigned 32-bit integer. Use remainder to obtain a random "
"value in the interval [code][0, N - 1][/code] (where N is smaller than "
@@ -1429,9 +1411,9 @@ msgid ""
"randi() % 100 + 1 # Returns random integer between 1 and 100\n"
"[/codeblock]"
msgstr ""
-"Retourne un nombre entier aléatoire de 32 bit non signé. Utilisez le reste "
-"pour obtenir une valeur aléatoire dans l'intervalle [code][0, N - 1][/code] "
-"(où N est plus petit que 2^32).\n"
+"Retourne un nombre entier positive aléatoire de 32 bits. Utilisez "
+"l'opérateur modulo pour obtenir une valeur aléatoire dans l'intervalle [code]"
+"[0, N - 1][/code] (où N est plus petit que 2^32).\n"
"[codeblock]\n"
"randi() # Retourne un nombre entier aléatoire entre 0 et 2^32 - 1\n"
"randi() % 20 # Retourne un nombre entier aléatoire entre 0 et 19\n"
@@ -1514,7 +1496,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:884
-#, fuzzy
msgid ""
"Rounds [code]s[/code] to the nearest whole number, with halfway cases "
"rounded away from zero.\n"
@@ -1525,11 +1506,14 @@ msgid ""
"[/codeblock]\n"
"See also [method floor], [method ceil], [method stepify], and [int]."
msgstr ""
-"Arrondit [code]s[/code] au nombre entier le plus proche, avec des cas à mi-"
-"chemin arrondis à zéro.\n"
+"Arrondit [code]s[/code] au nombre entier le plus proche, avec les cas à mi-"
+"chemin arrondis vers l'entier supérieur en valeur absolue.\n"
"[codeblock]\n"
-"round(2.6) # Retours 3\n"
-"[/codeblock]"
+"a = round(2.49) # a vaut 2.0\n"
+"a = round(2.5) # a vaut 3.0\n"
+"a = round(2.51) # a vaut 3.0\n"
+"[/codeblock]\n"
+"Consultez aussi [method floor], [method ceil], [method stepify] et [int]."
#: modules/gdscript/doc_classes/@GDScript.xml:897
msgid ""
@@ -1590,7 +1574,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:943
-#, fuzzy
msgid ""
"Returns the result of smoothly interpolating the value of [code]s[/code] "
"between [code]0[/code] and [code]1[/code], based on the where [code]s[/code] "
@@ -1619,21 +1602,27 @@ msgstr ""
"entre [code]0[/code] et [code]1[/code], basée sur la position de [code]s[/"
"code] entre [code]from[/code] et [code]to[/code].\n"
"La valeur de retour est [code]0[/code] si [code]s <= from[/code], et "
-"[code]1[/code] si [code]s >= to[/code]. Si [code]s[/code] est se trouve "
-"entre [code]from[/code] et [code]to[/code], la valeur retournée suit une "
-"courbe en S qui représente les positions de [code]s[/code] entre[code]0[/"
-"code] and [code]1[/code].\n"
+"[code]1[/code] si [code]s >= to[/code]. Si [code]s[/code] se trouve entre "
+"[code]from[/code] et [code]to[/code], la valeur retournée suit une courbe en "
+"S qui représente les positions de [code]s[/code] entre[code]0[/code] and "
+"[code]1[/code].\n"
"Cette courbe en S est l'interpolateur cubique d'Hermite, obtenu par "
-"[code]f(s) = 3*s^2 - 2*s^3[/code].\n"
+"[code]f(y) = 3*y^2 - 2*y^3[/code] où [code]y = (x-from) / (to-from)[/code].\n"
"[codeblock]\n"
-"smoothstep(0, 2, -5.0) # Retourne 0.0\n"
-"smoothstep(0, 2, 0.5) # Retourne 0.15625\n"
-"smoothstep(0, 2, 1.0) # Retourne 0.5\n"
-"smoothstep(0, 2, 2.0) # Retourne 1.0\n"
-"[/codeblock]"
+"smoothstep(0, 2, -5.0) # Renvoie 0.0\n"
+"smoothstep(0, 2, 0.5) # Renvoie 0.15625\n"
+"smoothstep(0, 2, 1.0) # Renvoie 0.5\n"
+"smoothstep(0, 2, 2.0) # Renvoie 1.0\n"
+"[/codeblock]\n"
+"Comparé à [method ease] avec une valeur de courbe de [code]-1.6521[/code], "
+"[method smoothstep] retourne la courbe la plus douce possible sans change "
+"brusque dans la dérivée. Si vous avez besoin d'effectuer des transitions "
+"plus avancées, utilisez [Tween] ou [AnimationPlayer].\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/3.4/img/"
+"smoothstep_ease_comparison.png]Comparaison entre les valeurs retournées par "
+"smoothstep() et ease(x, -1.6521)[/url]"
#: modules/gdscript/doc_classes/@GDScript.xml:960
-#, fuzzy
msgid ""
"Returns the square root of [code]s[/code], where [code]s[/code] is a non-"
"negative number.\n"
@@ -1648,12 +1637,11 @@ msgstr ""
"[codeblock]\n"
"sqrt(9) # Retourne 3\n"
"[/codeblock]\n"
-"[b]Note:[/b] Les valeurs négatives de [code]s[/code] retournent NaN. Si vous "
-"avez besoin d'entrées négatives, utilisez [code]System.Numerics.Complex[/"
-"code] en C#."
+"[b]Note :[/b] Les valeurs négatives de [code]s[/code] retournent NaN. Si "
+"vous avez besoin d'entrées négatives, utilisez [code]System.Numerics."
+"Complex[/code] en C#."
#: modules/gdscript/doc_classes/@GDScript.xml:971
-#, fuzzy
msgid ""
"Returns the position of the first non-zero digit, after the decimal point. "
"Note that the maximum return value is 10, which is a design decision in the "
@@ -1668,16 +1656,12 @@ msgstr ""
"de la décimale. Notez que la valeur maximale retournée est 10, qui est une "
"décision arbitraire de l'implémentation.\n"
"[codeblock]\n"
-"# n vaut 0\n"
-"n = step_decimals(5)\n"
-"# n vaut 4\n"
-"n = step_decimals(1.0005)\n"
-"# n vaut 9\n"
-"n = step_decimals(0.000000005)\n"
+"n = step_decimals(5) # n vaut 0\n"
+"n = step_decimals(1.0005) # n vaut 4\n"
+"n = step_decimals(0.000000005) # n vaut 9\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:984
-#, fuzzy
msgid ""
"Snaps float value [code]s[/code] to a given [code]step[/code]. This can also "
"be used to round a floating point number to an arbitrary number of "
@@ -1692,12 +1676,12 @@ msgstr ""
"code]. Cela peut être utilisé également pour arrondir la valeur avec un "
"nombre arbitraire de chiffres après la virgule.\n"
"[codeblock]\n"
-"stepify(100, 32) # Retourne 96\n"
+"stepify(100, 32) # Retourne 96.0\n"
"stepify(3.14159, 0.01) # Retourne 3.14\n"
-"[/codeblock]"
+"[/codeblock]\n"
+"Consultez aussi [method ceil], [method floor], [method round] et [int]."
#: modules/gdscript/doc_classes/@GDScript.xml:995
-#, fuzzy
msgid ""
"Converts one or more arguments of any type to string in the best way "
"possible.\n"
@@ -1748,7 +1732,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:1030
-#, fuzzy
msgid ""
"Returns the hyperbolic tangent of [code]s[/code].\n"
"[codeblock]\n"
@@ -1758,8 +1741,8 @@ msgid ""
msgstr ""
"Retourne la tangente hyperbolique de [code]s[/code].\n"
"[codeblock]\n"
-"a = log(2.0) # Retourne 0,693147\n"
-"tanh(a) # Retourne 0,6\n"
+"a = log(2.0) # a vaut 0.693147\n"
+"b = tanh(a) # b vaut 0.6\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:1041
@@ -1798,7 +1781,6 @@ msgstr ""
"JSON."
#: modules/gdscript/doc_classes/@GDScript.xml:1057
-#, fuzzy
msgid ""
"Returns whether the given class exists in [ClassDB].\n"
"[codeblock]\n"
@@ -1808,8 +1790,8 @@ msgid ""
msgstr ""
"Indique si la classe donnée existe dans [ClassDB].\n"
"[codeblock]\n"
-"type_exists(\"Sprite2D\") # Retourne vrai\n"
-"type_exists(\"Variant\") # Retourne faux\n"
+"type_exists(\"Sprite\") # Retourne true\n"
+"type_exists(\"Variant\") # Retourne false\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:1068
@@ -2046,12 +2028,13 @@ msgstr ""
"s'adapte autour de son périmètre. Cela équivaut à [code]TAU / 2[/code]."
#: modules/gdscript/doc_classes/@GDScript.xml:1210
-#, fuzzy
msgid ""
"The circle constant, the circumference of the unit circle in radians. This "
"is equivalent to [code]PI * 2[/code], or 360 degrees in rotations."
msgstr ""
-"La constante de cercle, la circonférence de l'unité de cercle en radians."
+"La constante du cercle, c'est à dire la circonférence du cercle unité en "
+"radians. C'est l'équivalent de [code]PI * 2[/code] ou de 360 degrés en "
+"rotation."
#: modules/gdscript/doc_classes/@GDScript.xml:1213
msgid ""
@@ -2085,7 +2068,6 @@ msgid "Global scope constants and variables."
msgstr "Constantes et variables de portée globale."
#: doc/classes/@GlobalScope.xml:7
-#, fuzzy
msgid ""
"Global scope constants and variables. This is all that resides in the "
"globals, constants regarding error codes, scancodes, property hints, etc.\n"
@@ -2093,15 +2075,15 @@ msgid ""
"anywhere."
msgstr ""
"Constantes et variables globales. Ceci concerne tout ce qui est contenu dans "
-"les globales : constantes de codes d'erreur, clés, astuces de propriétés, "
-"etc...\n"
+"le registre global (accessible depuis n'importe quel script) : constantes de "
+"codes d'erreur, codes des touches du clavier, indices de configuration des "
+"propriétés, etc.\n"
"Comme ils peuvent être accessibles de partout, les singletons sont aussi "
"documentés ici."
#: doc/classes/@GlobalScope.xml:16
-#, fuzzy
msgid "The [ARVRServer] singleton."
-msgstr "Le singleton [XRServer]."
+msgstr "Le singleton [ARVRServer]."
#: doc/classes/@GlobalScope.xml:19
msgid "The [AudioServer] singleton."
@@ -2120,9 +2102,8 @@ msgid "The [Engine] singleton."
msgstr "Le singleton [Engine]."
#: doc/classes/@GlobalScope.xml:31
-#, fuzzy
msgid "The [Geometry] singleton."
-msgstr "Le singleton [Geometry2D]."
+msgstr "Le singleton [Geometry]."
#: doc/classes/@GlobalScope.xml:34
msgid "The [IP] singleton."
@@ -2161,9 +2142,8 @@ msgid "The [Marshalls] singleton."
msgstr "Le singleton [Marshalls]."
#: doc/classes/@GlobalScope.xml:57
-#, fuzzy
msgid "The [EditorNavigationMeshGenerator] singleton."
-msgstr "Le singleton [NavigationMeshGenerator]."
+msgstr "Le singleton [EditorNavigationMeshGenerator]."
#: doc/classes/@GlobalScope.xml:60
msgid "The [OS] singleton."
@@ -2174,14 +2154,12 @@ msgid "The [Performance] singleton."
msgstr "Le singleton [Performance]."
#: doc/classes/@GlobalScope.xml:66
-#, fuzzy
msgid "The [Physics2DServer] singleton."
-msgstr "Le singleton [PhysicsServer2D]."
+msgstr "Le singleton [Physics2DServer]."
#: doc/classes/@GlobalScope.xml:69
-#, fuzzy
msgid "The [PhysicsServer] singleton."
-msgstr "Le singleton [PhysicsServer2D]."
+msgstr "Le singleton [PhysicsServer]."
#: doc/classes/@GlobalScope.xml:72
msgid "The [ProjectSettings] singleton."
@@ -2204,9 +2182,8 @@ msgid "The [VisualScriptEditor] singleton."
msgstr "Le singleton [VisualScriptEditor]."
#: doc/classes/@GlobalScope.xml:87
-#, fuzzy
msgid "The [VisualServer] singleton."
-msgstr "Le singleton [DisplayServer]."
+msgstr "Le singleton [VisualServer]."
#: doc/classes/@GlobalScope.xml:92
msgid "Left margin, usually used for [Control] or [StyleBox]-derived classes."
@@ -2299,9 +2276,8 @@ msgstr ""
"Alignement vertical bas, généralement pour des classes dérivées de texte."
#: doc/classes/@GlobalScope.xml:140
-#, fuzzy
msgid "Scancodes with this bit applied are non-printable."
-msgstr "Les codes de touches avec ce bit ne sont pas imprimables."
+msgstr "Les codes de touches avec ce bit ne sont pas affichables."
#: doc/classes/@GlobalScope.xml:143
msgid "Escape key."
@@ -2312,7 +2288,6 @@ msgid "Tab key."
msgstr "Touche de tabulation."
#: doc/classes/@GlobalScope.xml:149
-#, fuzzy
msgid "Shift+Tab key."
msgstr "Touche Maj + Tab."
@@ -2572,20 +2547,20 @@ msgstr "Touche Direction droite."
msgid ""
"Media back key. Not to be confused with the Back button on an Android device."
msgstr ""
+"Touche de retour média. Ne pas confondre avec le bouton de retour d'un "
+"appareil Android."
#: doc/classes/@GlobalScope.xml:344
-#, fuzzy
msgid "Media forward key."
-msgstr "Clé d’enregistrement de média."
+msgstr "Touche d'avance média."
#: doc/classes/@GlobalScope.xml:347 doc/classes/@GlobalScope.xml:380
msgid "Media stop key."
msgstr "Clé d'arrêt de média."
#: doc/classes/@GlobalScope.xml:350
-#, fuzzy
msgid "Media refresh key."
-msgstr "Clé d’enregistrement de média."
+msgstr "Touche de rechargement média."
#: doc/classes/@GlobalScope.xml:353
msgid "Volume down key."
@@ -3379,164 +3354,152 @@ msgid "Extra mouse button 2 mask."
msgstr "Masque du bouton de souris supplémentaire 2."
#: doc/classes/@GlobalScope.xml:938
-#, fuzzy
msgid "Invalid button or axis."
-msgstr "Durée non valide."
+msgstr "Bouton ou axe non valide."
#: doc/classes/@GlobalScope.xml:941
msgid "Gamepad button 0."
-msgstr ""
+msgstr "Bouton 0 de la manette."
#: doc/classes/@GlobalScope.xml:944
-#, fuzzy
msgid "Gamepad button 1."
-msgstr "Masque du bouton 1 de la souris supplémentaire."
+msgstr "Bouton 1 de la manette."
#: doc/classes/@GlobalScope.xml:947
-#, fuzzy
msgid "Gamepad button 2."
-msgstr "Masque du bouton de souris supplémentaire 2."
+msgstr "Bouton 2 de la manette."
#: doc/classes/@GlobalScope.xml:950
msgid "Gamepad button 3."
-msgstr ""
+msgstr "Bouton 3 de la manette."
#: doc/classes/@GlobalScope.xml:953
msgid "Gamepad button 4."
-msgstr ""
+msgstr "Bouton 4 de la manette."
#: doc/classes/@GlobalScope.xml:956
msgid "Gamepad button 5."
-msgstr ""
+msgstr "Bouton 5 de la manette."
#: doc/classes/@GlobalScope.xml:959
msgid "Gamepad button 6."
-msgstr ""
+msgstr "Bouton 6 de la manette."
#: doc/classes/@GlobalScope.xml:962
msgid "Gamepad button 7."
-msgstr ""
+msgstr "Bouton 7 de la manette."
#: doc/classes/@GlobalScope.xml:965
msgid "Gamepad button 8."
-msgstr ""
+msgstr "Bouton 8 de la manette."
#: doc/classes/@GlobalScope.xml:968
msgid "Gamepad button 9."
-msgstr ""
+msgstr "Bouton 9 de la manette."
#: doc/classes/@GlobalScope.xml:971
msgid "Gamepad button 10."
-msgstr ""
+msgstr "Bouton 10 de la manette."
#: doc/classes/@GlobalScope.xml:974
msgid "Gamepad button 11."
-msgstr ""
+msgstr "Bouton 11 de la manette."
#: doc/classes/@GlobalScope.xml:977
msgid "Gamepad button 12."
-msgstr ""
+msgstr "Bouton 12 de la manette."
#: doc/classes/@GlobalScope.xml:980
msgid "Gamepad button 13."
-msgstr ""
+msgstr "Bouton 13 de la manette."
#: doc/classes/@GlobalScope.xml:983
msgid "Gamepad button 14."
-msgstr ""
+msgstr "Bouton 14 de la manette."
#: doc/classes/@GlobalScope.xml:986
msgid "Gamepad button 15."
-msgstr ""
+msgstr "Bouton 15 de la manette."
#: doc/classes/@GlobalScope.xml:989
msgid "Gamepad button 16."
-msgstr ""
+msgstr "Bouton 16 de la manette."
#: doc/classes/@GlobalScope.xml:992
msgid "Gamepad button 17."
-msgstr ""
+msgstr "Bouton 17 de la manette."
#: doc/classes/@GlobalScope.xml:995
msgid "Gamepad button 18."
-msgstr ""
+msgstr "Bouton 18 de la manette."
#: doc/classes/@GlobalScope.xml:998
msgid "Gamepad button 19."
-msgstr ""
+msgstr "Bouton 19 de la manette."
#: doc/classes/@GlobalScope.xml:1001
msgid "Gamepad button 20."
-msgstr ""
+msgstr "Bouton 20 de la manette."
#: doc/classes/@GlobalScope.xml:1004
msgid "Gamepad button 21."
-msgstr ""
+msgstr "Bouton 21 de la manette."
#: doc/classes/@GlobalScope.xml:1007
msgid "Gamepad button 22."
-msgstr ""
+msgstr "Bouton 22 de la manette."
#: doc/classes/@GlobalScope.xml:1010
-#, fuzzy
msgid "Represents the maximum number of joystick buttons supported."
-msgstr "Le nombre maximum de boutons du contrôleur de jeu."
+msgstr "Le nombre maximum de boutons supportés pour un contrôleur de jeu."
#: doc/classes/@GlobalScope.xml:1013
msgid "DualShock circle button."
-msgstr ""
+msgstr "Bouton rond de la manette DualShock."
#: doc/classes/@GlobalScope.xml:1016
msgid "DualShock X button."
-msgstr ""
+msgstr "Bouton croix (X) de la manette DualShock."
#: doc/classes/@GlobalScope.xml:1019
msgid "DualShock square button."
-msgstr ""
+msgstr "Bouton carré de la manette DualShock."
#: doc/classes/@GlobalScope.xml:1022
msgid "DualShock triangle button."
-msgstr ""
+msgstr "Bouton triangle de la manette DualShock."
#: doc/classes/@GlobalScope.xml:1025
-#, fuzzy
msgid "Xbox controller B button."
-msgstr "Bouton A du contrôleur de jeu SDL."
+msgstr "Bouton B de la manette Xbox."
#: doc/classes/@GlobalScope.xml:1028
-#, fuzzy
msgid "Xbox controller A button."
-msgstr "Bouton A du contrôleur de jeu SDL."
+msgstr "Bouton A de la manette Xbox."
#: doc/classes/@GlobalScope.xml:1031
-#, fuzzy
msgid "Xbox controller X button."
-msgstr "Bouton A du contrôleur de jeu SDL."
+msgstr "Bouton X de la manette Xbox."
#: doc/classes/@GlobalScope.xml:1034
-#, fuzzy
msgid "Xbox controller Y button."
-msgstr "Bouton A du contrôleur de jeu SDL."
+msgstr "Bouton Y de la manette Xbox."
#: doc/classes/@GlobalScope.xml:1037
-#, fuzzy
msgid "Nintendo controller A button."
-msgstr "Bouton A du contrôleur de jeu SDL."
+msgstr "Bouton A de la manette Nintendo."
#: doc/classes/@GlobalScope.xml:1040
-#, fuzzy
msgid "Nintendo controller B button."
-msgstr "Bouton A du contrôleur de jeu SDL."
+msgstr "Bouton B de la manette Nintendo."
#: doc/classes/@GlobalScope.xml:1043
-#, fuzzy
msgid "Nintendo controller X button."
-msgstr "Bouton A du contrôleur de jeu SDL."
+msgstr "Bouton X de la manette Nintendo."
#: doc/classes/@GlobalScope.xml:1046
-#, fuzzy
msgid "Nintendo controller Y button."
-msgstr "Bouton A du contrôleur de jeu SDL."
+msgstr "Bouton Y de la manette Nintendo."
#: doc/classes/@GlobalScope.xml:1049
msgid "Grip (side) buttons on a VR controller."
@@ -4742,14 +4705,22 @@ msgstr ""
"d'annulation à la boîte de dialogue avant de retourner le bouton créé."
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
-msgstr "Retourne l’étiquette utilisée pour le texte intégré."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
-msgstr "Retourne l'instance OK [Bouton]."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
@@ -4757,7 +4728,7 @@ msgstr ""
"Enregistre une [LineEdit] dans la boîte de dialogue. Lorsque la touche "
"entrée est appuyée, la boîte de dialogue sera acceptée."
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4766,12 +4737,12 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
"Défini le retour à la ligne automatique du texte dans la fenêtre de dialogue."
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4797,17 +4768,17 @@ msgstr ""
"[FileDialog] pour désactiver la dissimulation de la boîte de dialogue quand "
"OK est poussé."
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr "Le texte affiché par le dialogue."
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
"Émis lorsque le dialogue est accepté, c'est-à-dire lorsque le bouton OK est "
"enfoncé."
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
"Émis lorsqu'un bouton personnalisé est pressé. Voir [méthode add_button]."
@@ -7811,13 +7782,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -7843,14 +7816,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -7988,26 +7963,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -8034,14 +8013,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -8050,14 +8032,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -8686,7 +8671,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr "Représente la taille de l’enum [enum ArrayType]."
@@ -11525,7 +11510,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -14324,11 +14312,11 @@ msgid "The color the character will be drawn with."
msgstr "La couleur utilisée pour afficher le caractère."
#: doc/classes/CharFXTransform.xml:31
+#, fuzzy
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
"Le temps écoulé depuis que le [RichTextLabel] a été ajouté à l'arbre des "
@@ -16355,7 +16343,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr "La couleur actuellement sélectionnée."
@@ -16457,84 +16445,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr "Émis lorsque la couleur change."
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr "Émis lorsque le [ColorPicker] est fermé."
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr "[Font] du texte du [ColorPickerButton]."
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr "[StyleBox] par défaut pour le [ColorPickerButton]."
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -16859,8 +16854,12 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
-msgstr "Retourne le bouton d'annulation."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
#: doc/classes/Container.xml:4
msgid "Base node for containers."
@@ -21600,117 +21599,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr "Le répertoire actuellement occupé."
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr "Le fichier actuellement sélectionné."
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr "Émis lors de la sélection d'un répertoire."
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr "Émis lorsqu’un fichier est sélectionné."
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr "Émis lorsque plusieurs fichiers sont sélectionnés."
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr "Le [EditorFileDialog] affiche les ressources sous forme de miniatures."
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -21884,7 +21887,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -22010,7 +22014,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -22189,18 +22194,20 @@ msgstr "Modifie la [Ressource] donnée."
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -22210,66 +22217,77 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
#, fuzzy
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
@@ -22278,7 +22296,7 @@ msgstr ""
"Retourne [code]true[/code] si la chaîne de caractères commence par la chaîne "
"de caractères donnée, ou [code]false[/code] le cas échéant."
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
#, fuzzy
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
@@ -22287,48 +22305,48 @@ msgstr ""
"Renvoie [code]true[/code] (vrai) si [code]s[/code] vaut zéro ou quasiment "
"zéro."
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr "Joue la scène actuellement active."
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr "Joue la scène principale."
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -22336,17 +22354,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr "Arrête la scène qui est actuellement jouée."
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -22676,30 +22694,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -22709,22 +22729,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -22732,74 +22752,74 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
"Supprime un [code]name[/code] de chargement automatique à partir de la liste."
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr "Supprime un type personnalisé ajouté par [méthode add_custom_type]."
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
#, fuzzy
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr "Supprime un type personnalisé ajouté par [méthode add_custom_type]."
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
#, fuzzy
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr "Supprime un type personnalisé ajouté par [méthode add_custom_type]."
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
#, fuzzy
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr "Supprime un type personnalisé ajouté par [méthode add_custom_type]."
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
#, fuzzy
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr "Supprime un type personnalisé ajouté par [méthode add_custom_type]."
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
#, fuzzy
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr "Supprime un type personnalisé ajouté par [méthode add_custom_type]."
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -22807,22 +22827,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr "Restaurer l’état enregistré par [méthode get_state]."
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -22831,20 +22851,20 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
@@ -22852,7 +22872,7 @@ msgstr ""
"Émis lorsque l’utilisateur ferme une scène. L’argument est le chemin d’accès "
"au fichier vers une scène fermée."
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr "Représente la taille de l’enum [enum DockSlot]."
@@ -24536,54 +24556,62 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
"La tolérance de profondeur pour les réflexions sur l'espace de l'écran."
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -24591,59 +24619,59 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
#, fuzzy
msgid "The screen-space ambient occlusion color."
msgstr "Le rayon d'occlusion ambiante de l'espace de l'écran primaire."
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -24654,20 +24682,20 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
#, fuzzy
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr "Le rayon d'occlusion ambiante de l'espace de l'écran primaire."
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -24675,17 +24703,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr "Le rayon d'occlusion ambiante de l'espace de l'écran primaire."
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -24693,25 +24721,25 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
#, fuzzy
msgid "The default exposure used for tonemapping."
msgstr "L’exposition par défaut utilisée pour tonifier."
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -24719,21 +24747,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -24741,66 +24769,66 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr "Affiche un [CanvasLayer] en arrière-plan."
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
#, fuzzy
msgid "Filmic tonemapper operator."
msgstr "Opérateur de tonte de film."
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -24810,46 +24838,46 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
#, fuzzy
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr "Le rayon d'occlusion ambiante de l'espace de l'écran primaire."
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
#, fuzzy
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr "Qualité la plus basse de l’occlusion ambiante d’espace d’écran."
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
#, fuzzy
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr "Qualité la plus basse de l’occlusion ambiante d’espace d’écran."
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
#, fuzzy
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr "Qualité la plus basse de l’occlusion ambiante d’espace d’écran."
@@ -25400,20 +25428,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -25422,125 +25457,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr "Le dialogue permet de sélectionner plusieurs fichiers."
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr "Icône personnalisée pour les fichiers."
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr "Icône personnalisée pour les dossiers."
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr "Icône personnalisée pour le bouton de rechargement."
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -27259,11 +27294,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -27748,7 +27783,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -28496,7 +28531,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -29280,16 +29315,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -29298,11 +29327,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr "Annule la demande en cours."
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -29310,17 +29339,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr "Retourne la quantité d'octets que ce HTTPRequest a téléchargés."
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -29339,7 +29368,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -29353,30 +29382,12 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
+#: doc/classes/HTTPRequest.xml:127
+#, fuzzy
+msgid "Maximum allowed size for response bodies."
+msgstr "Valeur maximale pour le mode énumeration."
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -29384,67 +29395,67 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr "Nombre maximal de redirections autorisées."
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
"Si [code]true[/code], le multithreading est utilisé pour améliorer les "
"performances."
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr "Émis lorsqu'une demande est terminée."
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr "Demande réussie."
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr "La demande a échoué lors de la connexion."
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr "Demande échouée lors de la résolution."
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
"La demande a échoué en raison d'une erreur de connexion (lecture / écriture)."
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
#, fuzzy
msgid "Request failed on SSL handshake."
msgstr "Demande échouée sur la poignée de main SSL."
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr "La demande n'a pas (encore) de réponse."
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr "Échec de la demande (actuellement inutilisé)."
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -30281,7 +30292,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
#, fuzzy
msgid "Resizes the texture to the specified dimensions."
msgstr "Renvoie le texte associé à l’index spécifié."
@@ -31806,177 +31817,181 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
"Retourne [code]true[/code] si un ou plusieurs éléments sont sélectionnés."
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
"Déplace l’élément de l’index [code]from_idx[/code] à [code]to_idx[/code]."
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
#, fuzzy
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr "Définit le texte de l’élément associé à l’index spécifié."
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
"Permet ou interdit la sélection de l’élément associé à l’index spécifié."
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr "Définit le texte de l’élément associé à l’index spécifié."
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr "Définit l’indice d’info-bulle de l’élément associé à l’index spécifié."
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
"Définit si l’indice de l’info-bulle est activé pour l’index d’élément "
"spécifié."
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -31985,7 +32000,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -31994,26 +32009,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -32022,108 +32037,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr "[Font] du texte de l’élément."
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr "Espacement horizontal entre les éléments."
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr "L'espacement entre l'icône de l'élément et le texte."
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr "L'espacement vertical entre les objets."
@@ -33860,20 +33875,23 @@ msgstr "Efface la sélection actuelle."
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -33886,52 +33904,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr "Sélectionne l’ensemble [String]."
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -33953,100 +33971,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr "Émis lorsque le texte change."
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr "Copie le texte sélectionné."
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -34054,80 +34072,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr "Efface l’ensemble du texte [LineEdit]."
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr "Sélectionne l'ensemble du texte [LineEdit]."
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr "Annule l’action précédente."
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr "Inverser la dernière action d'annulation."
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr "Police utilisée pour le texte."
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr "Couleur de police par défaut."
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr "Arrière-plan par défaut pour le [LineEdit]."
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -34411,59 +34429,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -34471,34 +34489,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -34654,70 +34672,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -34836,11 +34858,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr "Retourne les faces (un tableau de triangles)."
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr "Les formes de fusion sont normalisées."
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -34888,56 +34910,56 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
#, fuzzy
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr "Drapeau utilisé pour marquer un tableau de sommets."
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
#, fuzzy
msgid "Flag used to mark a compressed bone array."
msgstr "Drapeau utilisé pour marquer un tableau de couleurs."
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
#, fuzzy
msgid "Flag used to mark a compressed (half float) weight array."
msgstr "Drapeau utilisé pour marquer un tableau de poids."
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -35767,7 +35789,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -37713,22 +37735,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -37739,7 +37764,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -37756,7 +37781,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -37767,27 +37792,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -37795,7 +37820,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -37806,30 +37831,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -37839,7 +37864,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -37850,7 +37875,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -37864,7 +37889,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -37873,14 +37898,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -37893,7 +37918,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -37901,32 +37926,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -37934,13 +37959,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -37950,7 +37975,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -37959,11 +37984,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -37972,138 +37997,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr "Dupliquer les signaux du nœud."
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr "Dupliquer les groupes du nœud."
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr "Dupliquer les scripts du nœud."
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -39296,34 +39321,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -39331,96 +39356,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -42104,20 +42129,20 @@ msgstr "Objets 3D dessinés par image."
msgid "Draw calls per frame."
msgstr "Objets 3D dessinés par image."
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -46074,6 +46099,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -46081,7 +46118,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -46091,13 +46128,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -46111,14 +46148,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -46127,7 +46164,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -46135,7 +46172,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -46151,20 +46188,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -46172,75 +46209,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -46250,7 +46287,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -46260,27 +46297,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -46288,81 +46325,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -46370,112 +46407,112 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
"Si [code]true[/code], le mouvement linéaire à travers l’axe Z est limité."
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr "Si [code]true[/code], le filtrage est activé."
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -46486,91 +46523,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr "Pile d’appels maximale autorisée pour le débogage de GDScript."
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr "Hotspot pour l’image de curseur de souris personnalisée."
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -46579,13 +46616,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -46595,7 +46632,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -46603,19 +46640,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -46629,45 +46666,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -46676,7 +46713,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -46687,7 +46724,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -46703,14 +46740,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -46718,49 +46755,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -46769,7 +46806,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46777,7 +46814,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46785,7 +46822,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -46795,7 +46832,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -46804,7 +46841,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -46813,7 +46850,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -46823,7 +46860,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46831,7 +46868,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -46841,7 +46878,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -46851,7 +46888,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46859,7 +46896,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -46868,7 +46905,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -46876,7 +46913,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -46888,478 +46925,478 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
#, fuzzy
msgid "If [code]true[/code], logs all output to files."
msgstr "Si [code]true[/code], enregistre toutes les sorties aux fichiers."
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -47367,92 +47404,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -47462,19 +47499,19 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
#, fuzzy
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
@@ -47484,14 +47521,14 @@ msgstr ""
"Taille de la table de hachage utilisée pour l'algorithme de grille de "
"hachage 2D à large phase."
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47504,7 +47541,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47516,7 +47553,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47528,7 +47565,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47541,7 +47578,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -47549,28 +47586,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -47580,25 +47617,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47611,7 +47648,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47623,7 +47660,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47635,7 +47672,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47648,13 +47685,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -47662,11 +47699,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -47680,7 +47717,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -47689,7 +47726,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -47705,7 +47742,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -47715,7 +47752,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -47725,7 +47762,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -47736,7 +47773,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -47746,7 +47783,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -47754,7 +47791,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -47765,7 +47802,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -47780,7 +47817,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -47789,13 +47826,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -47804,7 +47841,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -47814,7 +47851,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -47826,7 +47863,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -47836,24 +47873,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -47862,7 +47899,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -47870,7 +47907,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -47879,7 +47916,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -47889,7 +47926,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -47897,31 +47934,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -47929,7 +47966,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -47939,14 +47976,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -47954,31 +47991,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -47986,7 +48023,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -47996,7 +48033,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -48005,7 +48042,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -48014,14 +48051,14 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
@@ -48030,7 +48067,7 @@ msgstr ""
"Si [code]true[/code], la [SpinBox] sera modifiable. Sinon, elle sera en "
"lecture seule."
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -48039,7 +48076,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -48047,7 +48084,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -48056,7 +48093,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -48066,13 +48103,13 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
#, fuzzy
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
@@ -48082,7 +48119,7 @@ msgstr ""
"Si [code]true[/code], l’état de la clé est pressé. Si [code]false[/code], "
"l’état de la clé est libéré."
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -48091,13 +48128,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -48107,46 +48144,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -48156,7 +48193,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -48168,7 +48205,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -48176,7 +48213,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -48184,7 +48221,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -48193,7 +48230,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -48207,7 +48244,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -48217,7 +48254,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -48226,7 +48263,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -48236,54 +48273,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -48294,61 +48331,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -48357,26 +48405,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -48387,20 +48435,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -48412,52 +48460,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -48465,7 +48513,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -48474,10 +48522,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -48485,10 +48534,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -48496,10 +48546,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -48507,10 +48558,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -48518,10 +48570,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -49361,23 +49414,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -49386,46 +49443,46 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
#, fuzzy
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
@@ -49435,30 +49492,30 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
#, fuzzy
msgid "Update the probe once on the next frame."
msgstr "Mise à jour aux images clés."
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -50343,121 +50400,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr "Renvoie le nombre de lignes visibles."
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -50465,13 +50526,13 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
"Fait défiler la ligne supérieure de la fenêtre pour correspondre à "
"[code]line[/code]."
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -50482,7 +50543,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -50490,7 +50551,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -50502,14 +50563,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -50518,17 +50579,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -50536,36 +50597,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -50573,7 +50634,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -50582,114 +50643,114 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
#, fuzzy
msgid "Triggers when the mouse exits a meta tag."
msgstr "Se déclenche lorsque la souris sort d'une méta-tag."
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
#, fuzzy
msgid "Triggers when the mouse enters a meta tag."
msgstr "Se déclenche lorsque la souris entre dans une balise meta."
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr "Centre le texte."
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr "Chaque élément de liste a un marqueur de cercle rempli."
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr "La police utilisée pour le texte en gras."
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr "La couleur de l'ombre de la police."
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr "La police utilisée pour le texte en italique."
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr "L'espace vertical entre les lignes."
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr "L'arrière-plan normal du [RichTextLabel]."
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr "La couleur de la boîte de sélection."
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
#, fuzzy
msgid "The horizontal separation of elements in a table."
msgstr "La séparation horizontale des éléments dans un tableau."
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
#, fuzzy
msgid "The vertical separation of elements in a table."
msgstr "La séparation verticale des éléments dans un tableau."
@@ -50994,14 +51055,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -51014,15 +51078,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -51260,14 +51327,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -51277,14 +51347,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -51898,27 +51971,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -51930,7 +52007,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -51940,7 +52017,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -51956,39 +52033,39 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr "Retourne le nombre de nœuds dans ce [SceneTree]."
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
@@ -51997,29 +52074,29 @@ msgstr ""
"Retourne [code]true[/code] si le corps est au plafond. Ne se met à jour que "
"lors de l'appel de la [method move_and_slide]."
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -52030,7 +52107,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -52039,30 +52116,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -52070,37 +52147,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr "La scène actuelle."
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr "La racine de la scène éditée."
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -52111,7 +52188,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -52122,7 +52199,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -52132,53 +52209,53 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
#, fuzzy
msgid "The [SceneTree]'s root [Viewport]."
msgstr "La [Window] racine de [SceneTree]."
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr "Si [code]true[/code], le filtrage est activé."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
#, fuzzy
msgid "Emitted whenever global menu item is clicked."
msgstr "Émis lorsqu’un élément est sélectionné."
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -52186,112 +52263,112 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
#, fuzzy
msgid "Emitted whenever a node is renamed."
msgstr "Émis chaque fois qu’un nœud est renommé."
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
#, fuzzy
msgid "No stretching."
msgstr "Arrête d'écouter."
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -52319,7 +52396,7 @@ msgstr ""
msgid "The time remaining."
msgstr "Le temps restant."
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
#, fuzzy
msgid "Emitted when the timer reaches 0."
msgstr "Émis lorsque la minuterie atteint 0."
@@ -52527,46 +52604,55 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr "La valeur de défilement horizontal actuelle."
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
#, fuzzy
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr "Si [code]true[/code], permet le défilement horizontal."
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr "La valeur de défilement vertical actuelle."
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr "Si [code]true[/code], permet le défilement vertical."
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr "Émis lorsque le défilement s'arrête."
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr "Émis lorsque le défilement est commencé."
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -54883,14 +54969,17 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
@@ -54898,7 +54987,7 @@ msgstr ""
"Si [code]true[/code], la [SpinBox] sera modifiable. Sinon, elle sera en "
"lecture seule."
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
@@ -54906,7 +54995,7 @@ msgstr ""
"Ajoute la chaîne de caractères [code]prefix[/code] spécifiée avant la valeur "
"numérique de la [SpinBox]."
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
@@ -54914,7 +55003,7 @@ msgstr ""
"Ajoute la chaîne de caractères [code]suffix[/code] spécifiée après la valeur "
"numérique de la [SpinBox]."
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -57314,35 +57403,38 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
#, fuzzy
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
@@ -57350,31 +57442,31 @@ msgid ""
msgstr ""
"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
#, fuzzy
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
@@ -57382,7 +57474,7 @@ msgid ""
msgstr ""
"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
#, fuzzy
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
@@ -57390,24 +57482,24 @@ msgid ""
msgstr ""
"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
#, fuzzy
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
@@ -57416,138 +57508,138 @@ msgstr ""
"Si [code]true[/code], l’état de la clé est pressé. Si [code]false[/code], "
"l’état de la clé est libéré."
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
#, fuzzy
msgid "Horizontal separation between tabs."
msgstr "Espacement horizontal entre les éléments."
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -57867,69 +57959,72 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr "Retourne la colonne de début de sélection."
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr "Retourne la ligne de début de sélection."
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr "Retourne la colonne de fin de sélection."
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr "Retourne la ligne de fin de sélection."
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
#, fuzzy
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr "Retourne si la [code]class[/code] spécifiée est disponible ou non."
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr "Retourne [code]true[/code] si une action « refaire » est disponible."
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr "Retourne [code]true[/code] si une action « annuler » est disponible."
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr "Insérer le texte spécifié à la position du curseur."
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
@@ -57937,7 +58032,7 @@ msgid ""
msgstr ""
"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
@@ -57945,11 +58040,11 @@ msgid ""
msgstr ""
"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
@@ -57957,21 +58052,21 @@ msgstr ""
"Déclenche une action de menu de clic droit par l’index spécifié. Voir [enum "
"MenuItems] pour une liste d’index disponibles."
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr "Coller la sélection actuelle."
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr "Effectue une opération refaire."
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -57987,161 +58082,161 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr "Effectuer une opération d'annulation."
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr "Si [code]true[/code], un clic droit affiche le menu contextuel."
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
#, fuzzy
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
@@ -58150,18 +58245,18 @@ msgstr ""
"Si [code]true[/code] (vrai), les nœuds enfants sont triés, sinon le tri est "
"désactivé."
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
#, fuzzy
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
@@ -58170,134 +58265,134 @@ msgstr ""
"Si [code]true[/code], les présélections de couleurs enregistrées sont "
"visibles."
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr "Valeur de la chaîne de caractères du [TextEdit]."
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr "Sensibilité du défilement vertical."
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr "Émis lorsque le curseur change."
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr "Faites correspondre des mots entiers lors de la recherche."
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr "Recherche de la fin au début."
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr "Efface l’ensemble du texte [TextEdit]."
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr "Sélectionne l'ensemble du texte [TextEdit]."
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr "Refait l’action précédente."
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr "Définit la [Font] par défaut."
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr "Définit la police [Color]."
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -58373,7 +58468,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -58386,19 +58481,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -58409,7 +58504,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -59315,12 +59410,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -59330,27 +59434,29 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
#, fuzzy
msgid "A thread running with lower priority than normally."
msgstr "Un thread fonctionnant avec une priorité inférieure à la normale."
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr "Un thread avec une priorité standard."
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -60106,16 +60212,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
-msgstr "Temps d'attente en secondes."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
+msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -66836,80 +66949,80 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
#, fuzzy
msgid "Removes buffers and clears testcubes."
msgstr "Supprime les tampons et efface les testcubes."
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr "Synchronise les fils."
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -66917,18 +67030,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
#, fuzzy
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
@@ -66947,64 +67060,64 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
#, fuzzy
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr "Restaurer l’état enregistré par [méthode get_state]."
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Renvoie l’espace affecté à la zone."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
#, fuzzy
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr "Restaurer l’état enregistré par [méthode get_state]."
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
#, fuzzy
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
@@ -67013,85 +67126,85 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
#, fuzzy
msgid "Sets the to cell [Transform] for this GI probe."
msgstr "Retourne la matrice de transformation globale de cet élément."
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr "Pas encore implémenté. Retourne toujours [code]false[/code]."
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -67101,25 +67214,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
#, fuzzy
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
@@ -67138,80 +67251,80 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Retourne le matériel affecté à la [ImmediateGeometry3D]."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
#, fuzzy
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr "Retourne le matériel affecté à la [ImmediateGeometry3D]."
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
#, fuzzy
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
@@ -67231,7 +67344,7 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
#, fuzzy
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
@@ -67248,31 +67361,31 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr "Non mis en œuvre dans Godot 3.x."
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -67281,63 +67394,63 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr "Fonction non implémentée dans Godot 3.x."
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
#, fuzzy
msgid "Sets the lightmap to use with this instance."
msgstr "Règle le mode de ce shader."
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -67349,7 +67462,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -67361,7 +67474,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -67373,59 +67486,59 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
#, fuzzy
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
@@ -67434,13 +67547,13 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -67449,7 +67562,7 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
#, fuzzy
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
@@ -67458,13 +67571,13 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -67474,7 +67587,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
#, fuzzy
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
@@ -67493,80 +67606,80 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Renvoie le sinus du paramètre."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
#, fuzzy
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr "Renvoie le nombre de textures dans l’atlas BitmapFont."
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Renvoie l’espace affecté à la zone."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
#, fuzzy
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr "Retourne la matrice de transformation de la toile de cet objet."
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr "Retourne [code] true [/code] lors de la lecture d'une animation."
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
#, fuzzy
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
@@ -67583,55 +67696,55 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
#, fuzzy
msgid "Sets a material's line width."
msgstr "Définit la priorité de rendu d’un matériau."
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr "Définit le prochain matériau d’un objet."
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
#, fuzzy
msgid "Sets a material's parameter."
msgstr "Définit le paramètre d’un matériau."
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr "Définit la priorité de rendu d’un matériau."
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr "Définit l’ombrage d’un matériau ombragé."
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr "Enlève toutes les surfaces d’un maillage."
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
#, fuzzy
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
@@ -67650,110 +67763,110 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
#, fuzzy
msgid "Returns a mesh's blend shape count."
msgstr "Retourne le nombre de formes de mélange d’un maillage."
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
#, fuzzy
msgid "Returns a mesh's blend shape mode."
msgstr "Retourne le mode de forme de mélange d’un maillage."
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr "Retourne l’aabb personnalisé d’un maillage."
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
#, fuzzy
msgid "Removes a mesh's surface."
msgstr "Supprime un sous-nœud."
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
#, fuzzy
msgid "Sets a mesh's blend shape count."
msgstr "Retourne le nombre de formes de mélange d’un maillage."
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr "Définit l’aabb personnalisé d’un maillage."
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
#, fuzzy
msgid "Returns a mesh's surface's aabb."
msgstr "Retourne l’aabb personnalisé d’un maillage."
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
#, fuzzy
msgid "Returns a mesh's surface's vertex buffer."
msgstr "Retourne l’aabb personnalisé d’un maillage."
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
#, fuzzy
msgid "Returns a mesh's surface's amount of indices."
msgstr "Renvoie le nombre de points de la Ligne2D."
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
#, fuzzy
msgid "Returns a mesh's surface's amount of vertices."
msgstr "Renvoie le nombre de points de la Ligne2D."
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Retourne le nom de la méthode d'une piste de méthode."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
#, fuzzy
msgid "Returns a mesh's surface's index buffer."
msgstr "Retourne le mode de forme de mélange d’un maillage."
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Retourne le nom de la méthode d'une piste de méthode."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
#, fuzzy
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr "Retourne la traduction d’un message."
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -67761,7 +67874,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
#, fuzzy
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
@@ -67780,69 +67893,69 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -67857,20 +67970,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
#, fuzzy
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
@@ -67889,7 +68002,7 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
#, fuzzy
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
@@ -67908,23 +68021,23 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -67932,68 +68045,68 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
#, fuzzy
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
@@ -68002,13 +68115,13 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
#, fuzzy
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
@@ -68017,39 +68130,39 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
#, fuzzy
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
@@ -68068,7 +68181,7 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
#, fuzzy
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
@@ -68077,40 +68190,40 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
#, fuzzy
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
@@ -68119,7 +68232,7 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
#, fuzzy
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
@@ -68129,7 +68242,7 @@ msgstr ""
"Si [code]true[/code], les réflexions ignoreront la contribution du ciel. "
"Équivalent à [member ReflectionProbe.interior]."
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -68137,25 +68250,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -68163,7 +68276,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
#, fuzzy
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
@@ -68181,30 +68294,30 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -68213,19 +68326,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -68233,12 +68346,12 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
#, fuzzy
msgid "Enables or disables occlusion culling."
msgstr "Active ou désactive une lumière du canevas."
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
#, fuzzy
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
@@ -68255,49 +68368,49 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
#, fuzzy
msgid "Returns a shader's code."
msgstr "Retourne le code d'un shader."
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
#, fuzzy
msgid "Sets a shader's code."
msgstr "Définit le code d'un shader."
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
#, fuzzy
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
@@ -68314,11 +68427,11 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
#, fuzzy
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
@@ -68335,12 +68448,12 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
#, fuzzy
msgid "Sets a sky's texture."
msgstr "Retourne la texture de la tuile."
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
#, fuzzy
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
@@ -68359,17 +68472,17 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
#, fuzzy
msgid "Allocates the GPU memory for the texture."
msgstr "La largeur de la texture."
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
#, fuzzy
msgid "Binds the texture to a texture slot."
msgstr "Alignez le texte à gauche."
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
#, fuzzy
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
@@ -68386,91 +68499,91 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
#, fuzzy
msgid "Returns a list of all the textures and their information."
msgstr "Retourne le nombre de pistes dans l'animation."
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Retourne la hauteur du contenu."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Retourne la texture de la tuile."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Renvoie le reste de deux vecteurs."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Retourne la hauteur de texture."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Renvoie la largeur de texture."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Retourne la longueur du quaternion."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Retourne le type du nœud à [code]idx[/code]."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
#, fuzzy
msgid "Returns the texture's width."
msgstr "Renvoie la largeur de texture."
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
#, fuzzy
msgid "Sets the texture's path."
msgstr "Renvoie la largeur de texture."
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
#, fuzzy
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
@@ -68479,15 +68592,15 @@ msgstr ""
"Si [code]true[/code], la [SpinBox] sera modifiable. Sinon, elle sera en "
"lecture seule."
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -68509,7 +68622,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
#, fuzzy
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
@@ -68526,87 +68639,87 @@ msgstr ""
"Pour placer dans une scène, attachez cette lumière spot à une instance en "
"utilisant la [method instance_set_base] utilisant le RID retourné."
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
#, fuzzy
msgid "Detaches the viewport from the screen."
msgstr "Supprime tous les points de la courbe."
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr "Si [code]true[/code], le filtrage est activé."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr "Si [code] vrai [/code], l'interpolation fait une boucle."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr "Actuellement non implémenté dans Godot 3.x."
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -68622,24 +68735,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -68649,35 +68762,35 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
#, fuzzy
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr "Convertit le format de l’image. Voir les constantes [enum Format]."
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -68688,7 +68801,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -68698,220 +68811,220 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr "Si [code]vrai[/code], la texture est inversée verticalement."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr "Nombre de poids / os par sommet."
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr "Énumération inutilisée dans Godot 3.x."
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
#, fuzzy
msgid "Marks the left side of a cubemap."
msgstr "Définit le titre d’une colonne."
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
#, fuzzy
msgid "Marks the right side of a cubemap."
msgstr "Définit le titre d’une colonne."
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
#, fuzzy
msgid "Marks the bottom side of a cubemap."
msgstr "Définit le titre d’une colonne."
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
#, fuzzy
msgid "Marks the top side of a cubemap."
msgstr "Définit le titre d’une colonne."
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
#, fuzzy
msgid "Marks the front side of a cubemap."
msgstr "Définit le titre d’une colonne."
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
#, fuzzy
msgid "Marks the back side of a cubemap."
msgstr "Définit le titre d’une colonne."
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
#, fuzzy
msgid "Shader is a 3D shader."
msgstr "Shader est un shader 3D."
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
#, fuzzy
msgid "Shader is a 2D shader."
msgstr "Shader est un shader 2D."
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
#, fuzzy
msgid "Shader is a particle shader."
msgstr "Shader est un shader de particules."
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr "Le tableau est un tableau de sommets."
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr "Le tableau est un tableau normal."
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
#, fuzzy
msgid "Array is a color array."
msgstr "Array est un tableau de couleurs."
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr "Le tableau contient des informations sur les os."
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr "Le tableau est une information sur le poids."
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr "Drapeau utilisé pour marquer un tableau de sommets."
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr "Drapeau utilisé pour marquer un tableau de normales."
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr "Drapeau utilisé pour marquer un tableau de tangentes."
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr "Drapeau utilisé pour marquer un tableau de couleurs."
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr "Drapeau utilisé pour marquer un tableau de poids."
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
#, fuzzy
msgid "Flag used to mark an index array."
msgstr "Drapeau utilisé pour marquer un tableau d’index."
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -68920,683 +69033,683 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr "Est une lumière (solaire) directionnelle."
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr "Est une lumière omnidirectionnelle."
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr "Est une lumière ponctuelle."
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr "L’énergie de la lumière."
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr "L’influence de la lumière sur la spécularité."
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr "La gamme de la lumière."
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr "L’atténuation de la lumière."
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr "L’angle du projecteur."
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr "L'atténuation du projecteur."
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
#, fuzzy
msgid "Scales the shadow color."
msgstr "Définit la police [Color]."
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr "Distance maximale à laquelle les ombres seront rendues."
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr "Ne pas mettre à jour le viewport."
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
#, fuzzy
msgid "Multisample antialiasing is set to 2×."
msgstr "Utilisez l'anticrénelage multi-échantillons 2x."
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
#, fuzzy
msgid "Multisample antialiasing is set to 4×."
msgstr "Utilisez l'anticrénelage multi-échantillons 2x."
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
#, fuzzy
msgid "Multisample antialiasing is set to 8×."
msgstr "Utilisez l'anticrénelage multi-échantillons 2x."
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
#, fuzzy
msgid "Multisample antialiasing is set to 16×."
msgstr "Utilisez l'anticrénelage multi-échantillons 2x."
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr "Nombre de changements de matériau au cours de cette image."
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr "Nombre de changements de surface pendant cette image."
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
#, fuzzy
msgid "Number of 2d items drawn this frame."
msgstr "Nombre de changements de surface pendant cette image."
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
#, fuzzy
msgid "Number of 2d draw calls during this frame."
msgstr "Nombre de changements de surface pendant cette image."
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr "L’instance n’a pas de type."
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr "L’instance est un maillage."
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr "L’instance est un multi-maillage."
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr "L’instance est une lumière."
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
#, fuzzy
msgid "The instance is a lightmap capture."
msgstr "L’instance est une lumière."
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr "Désactiver les ombres de cette instance."
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
#, fuzzy
msgid "The amount of 2d items in the frame."
msgstr "La quantité de voix dans l’effet."
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
#, fuzzy
msgid "The amount of 2d draw calls in frame."
msgstr "Quantité de sommets dans l'image."
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
#, fuzzy
msgid "Lowest quality of screen space ambient occlusion."
msgstr "Qualité la plus basse de l’occlusion ambiante d’espace d’écran."
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -72006,8 +72119,8 @@ msgstr "Une classe représentant une connexion WebSocket spécifique."
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -72538,59 +72651,62 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Retourne la texture de la tuile."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr "Si [code]true[/code], le bouton \"add preset\" est activé."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
#, fuzzy
msgid "The text displayed in the window's title bar."
msgstr "Le texte affiché par le dialogue."
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
#, fuzzy
msgid "The icon for the close button."
msgstr "Icône personnalisée pour le bouton de rechargement."
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
#, fuzzy
msgid "The horizontal offset of the close button."
msgstr "Le décalage horizontal de l'ombre du texte."
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
#, fuzzy
msgid "The color of the title text."
msgstr "Couleur du texte du titre."
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
#, fuzzy
msgid "The font used to draw the title."
msgstr "La police utilisée pour le texte en gras."
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
#, fuzzy
msgid "The vertical offset of the title text."
msgstr "Décalage vertical du texte du titre."
@@ -72878,6 +72994,22 @@ msgstr ""
"Si [code]true[/code] (vrai), les nœuds enfants sont triés, sinon le tri est "
"désactivé."
+#~ msgid "Returns the label used for built-in text."
+#~ msgstr "Retourne l’étiquette utilisée pour le texte intégré."
+
+#~ msgid "Returns the OK [Button] instance."
+#~ msgstr "Retourne l'instance OK [Bouton]."
+
+#~ msgid "Returns the cancel button."
+#~ msgstr "Retourne le bouton d'annulation."
+
+#~ msgid "Wait time in seconds."
+#~ msgstr "Temps d'attente en secondes."
+
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Retourne la texture de la tuile."
+
#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
diff --git a/doc/translations/gl.po b/doc/translations/gl.po
index 83126901b9..46edb208d7 100644
--- a/doc/translations/gl.po
+++ b/doc/translations/gl.po
@@ -3730,20 +3730,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3752,11 +3760,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3770,15 +3778,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6331,13 +6339,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6363,14 +6373,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6504,26 +6516,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6550,14 +6566,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6566,14 +6585,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7171,7 +7193,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9901,7 +9923,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12586,9 +12611,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14406,7 +14430,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14506,84 +14530,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14899,7 +14930,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19505,117 +19540,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19786,7 +19825,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19909,7 +19949,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20084,18 +20125,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20105,119 +20148,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20225,17 +20279,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20563,30 +20617,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20596,22 +20652,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20619,68 +20675,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20688,22 +20744,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20712,26 +20768,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22362,53 +22418,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22416,58 +22480,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22478,19 +22542,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22498,17 +22562,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22516,24 +22580,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22541,21 +22605,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22563,65 +22627,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22631,43 +22695,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23199,20 +23263,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23221,125 +23292,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25005,11 +25076,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25466,7 +25537,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26187,7 +26258,7 @@ msgid ""
"html"
msgstr ""
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/ssl_certificates."
@@ -26967,26 +27038,20 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
"html"
msgstr ""
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -26994,17 +27059,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27023,7 +27088,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27037,30 +27102,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27068,63 +27114,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -27946,7 +27992,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29416,171 +29462,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29589,7 +29639,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29598,26 +29648,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29626,108 +29676,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31396,20 +31446,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31422,52 +31475,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31489,100 +31542,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31590,80 +31643,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -31946,59 +31999,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32006,34 +32059,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32186,70 +32239,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32366,11 +32423,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32418,53 +32475,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33278,7 +33335,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35152,22 +35209,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35178,7 +35238,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35195,7 +35255,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35206,27 +35266,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35234,7 +35294,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35245,30 +35305,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35278,7 +35338,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35289,7 +35349,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35303,7 +35363,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35312,14 +35372,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35332,7 +35392,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35340,32 +35400,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35373,13 +35433,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35389,7 +35449,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35398,11 +35458,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35411,138 +35471,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36717,34 +36777,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36752,96 +36812,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39452,20 +39512,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43297,6 +43357,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43304,7 +43376,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43314,13 +43386,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43334,14 +43406,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43350,7 +43422,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43358,7 +43430,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43374,20 +43446,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43395,75 +43467,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43473,7 +43545,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43483,27 +43555,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43511,81 +43583,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43593,109 +43665,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43706,91 +43778,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -43799,13 +43871,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -43815,7 +43887,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -43823,19 +43895,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -43849,45 +43921,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -43896,7 +43968,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -43907,7 +43979,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -43923,14 +43995,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -43938,49 +44010,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -43989,7 +44061,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -43997,7 +44069,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44005,7 +44077,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44015,7 +44087,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44024,7 +44096,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44033,7 +44105,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44043,7 +44115,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44051,7 +44123,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44061,7 +44133,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44071,7 +44143,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44079,7 +44151,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44088,7 +44160,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44096,7 +44168,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44108,477 +44180,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44586,92 +44658,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44681,33 +44753,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44720,7 +44792,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44732,7 +44804,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44744,7 +44816,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44757,7 +44829,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44765,28 +44837,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44796,25 +44868,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44827,7 +44899,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44839,7 +44911,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44851,7 +44923,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44864,13 +44936,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -44878,11 +44950,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -44896,7 +44968,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -44905,7 +44977,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -44921,7 +44993,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -44931,7 +45003,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -44941,7 +45013,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -44952,7 +45024,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -44962,7 +45034,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -44970,7 +45042,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -44981,7 +45053,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -44996,7 +45068,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45005,13 +45077,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45020,7 +45092,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45030,7 +45102,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45042,7 +45114,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45052,24 +45124,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45078,7 +45150,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45086,7 +45158,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45095,7 +45167,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45105,7 +45177,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45113,31 +45185,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45145,7 +45217,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45155,14 +45227,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45170,31 +45242,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45202,7 +45274,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45212,7 +45284,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45221,7 +45293,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45230,20 +45302,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45252,7 +45324,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45260,7 +45332,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45269,7 +45341,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45279,20 +45351,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45301,13 +45373,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45317,46 +45389,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45366,7 +45438,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45378,7 +45450,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45386,7 +45458,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45394,7 +45466,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45403,7 +45475,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45417,7 +45489,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45427,7 +45499,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45436,7 +45508,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45446,54 +45518,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45504,61 +45576,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45567,26 +45650,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45597,20 +45680,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45622,52 +45705,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45675,7 +45758,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45684,10 +45767,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45695,10 +45779,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45706,10 +45791,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45717,10 +45803,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45728,10 +45815,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46547,21 +46635,25 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46570,75 +46662,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47513,121 +47605,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47635,11 +47731,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47650,7 +47746,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47658,7 +47754,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47670,14 +47766,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47686,17 +47782,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47704,36 +47800,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47741,7 +47837,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47750,111 +47846,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48157,14 +48253,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48177,15 +48276,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48420,14 +48522,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48437,14 +48542,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49044,27 +49152,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49076,7 +49188,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49086,7 +49198,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49102,67 +49214,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49173,7 +49285,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49182,30 +49294,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49213,37 +49325,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49254,7 +49366,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49265,7 +49377,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49275,50 +49387,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49326,110 +49438,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49457,7 +49569,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49661,45 +49773,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -51950,32 +52071,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54256,228 +54380,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -54789,102 +54916,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -54900,311 +55030,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55279,7 +55409,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55292,19 +55422,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55315,7 +55445,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56163,12 +56293,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56178,26 +56317,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -56938,16 +57079,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63366,79 +63514,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63446,18 +63594,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63468,144 +63616,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63615,25 +63763,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63644,78 +63792,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63727,7 +63875,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -63736,31 +63884,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -63769,62 +63917,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63836,7 +63984,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63848,7 +63996,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63860,71 +64008,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -63933,19 +64081,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -63955,7 +64103,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63966,75 +64114,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64043,53 +64191,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64100,98 +64248,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64199,7 +64347,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64210,69 +64358,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64287,20 +64435,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64311,7 +64459,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64322,23 +64470,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64346,118 +64494,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64468,59 +64616,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64528,25 +64676,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64554,7 +64702,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64564,30 +64712,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64596,19 +64744,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64616,11 +64764,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64629,47 +64777,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64678,11 +64826,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64691,11 +64839,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64706,15 +64854,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64723,95 +64871,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -64833,7 +64981,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64842,84 +64990,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -64935,24 +65083,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -64962,34 +65110,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65000,7 +65148,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65010,208 +65158,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65220,672 +65368,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68181,8 +68329,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68711,52 +68859,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/hi.po b/doc/translations/hi.po
index 35b0215ea3..0f7e6689bc 100644
--- a/doc/translations/hi.po
+++ b/doc/translations/hi.po
@@ -3728,20 +3728,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3750,11 +3758,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3768,15 +3776,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6329,13 +6337,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6361,14 +6371,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6502,26 +6514,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6548,14 +6564,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6564,14 +6583,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7169,7 +7191,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9899,7 +9921,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12584,9 +12609,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14404,7 +14428,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14504,84 +14528,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14897,7 +14928,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19503,117 +19538,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19784,7 +19823,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19907,7 +19947,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20082,18 +20123,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20103,119 +20146,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20223,17 +20277,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20561,30 +20615,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20594,22 +20650,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20617,68 +20673,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20686,22 +20742,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20710,26 +20766,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22360,53 +22416,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22414,58 +22478,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22476,19 +22540,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22496,17 +22560,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22514,24 +22578,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22539,21 +22603,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22561,65 +22625,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22629,43 +22693,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23197,20 +23261,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23219,125 +23290,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25003,11 +25074,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25464,7 +25535,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26185,7 +26256,7 @@ msgid ""
"html"
msgstr ""
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/ssl_certificates."
@@ -26965,26 +27036,20 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
"html"
msgstr ""
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -26992,17 +27057,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27021,7 +27086,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27035,30 +27100,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27066,63 +27112,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -27944,7 +27990,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29414,171 +29460,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29587,7 +29637,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29596,26 +29646,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29624,108 +29674,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31394,20 +31444,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31420,52 +31473,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31487,100 +31540,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31588,80 +31641,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -31944,59 +31997,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32004,34 +32057,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32184,70 +32237,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32364,11 +32421,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32416,53 +32473,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33276,7 +33333,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35150,22 +35207,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35176,7 +35236,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35193,7 +35253,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35204,27 +35264,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35232,7 +35292,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35243,30 +35303,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35276,7 +35336,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35287,7 +35347,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35301,7 +35361,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35310,14 +35370,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35330,7 +35390,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35338,32 +35398,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35371,13 +35431,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35387,7 +35447,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35396,11 +35456,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35409,138 +35469,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36715,34 +36775,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36750,96 +36810,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39450,20 +39510,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43295,6 +43355,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43302,7 +43374,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43312,13 +43384,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43332,14 +43404,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43348,7 +43420,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43356,7 +43428,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43372,20 +43444,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43393,75 +43465,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43471,7 +43543,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43481,27 +43553,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43509,81 +43581,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43591,109 +43663,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43704,91 +43776,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -43797,13 +43869,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -43813,7 +43885,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -43821,19 +43893,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -43847,45 +43919,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -43894,7 +43966,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -43905,7 +43977,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -43921,14 +43993,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -43936,49 +44008,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -43987,7 +44059,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -43995,7 +44067,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44003,7 +44075,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44013,7 +44085,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44022,7 +44094,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44031,7 +44103,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44041,7 +44113,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44049,7 +44121,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44059,7 +44131,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44069,7 +44141,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44077,7 +44149,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44086,7 +44158,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44094,7 +44166,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44106,477 +44178,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44584,92 +44656,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44679,33 +44751,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44718,7 +44790,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44730,7 +44802,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44742,7 +44814,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44755,7 +44827,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44763,28 +44835,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44794,25 +44866,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44825,7 +44897,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44837,7 +44909,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44849,7 +44921,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44862,13 +44934,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -44876,11 +44948,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -44894,7 +44966,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -44903,7 +44975,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -44919,7 +44991,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -44929,7 +45001,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -44939,7 +45011,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -44950,7 +45022,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -44960,7 +45032,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -44968,7 +45040,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -44979,7 +45051,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -44994,7 +45066,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45003,13 +45075,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45018,7 +45090,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45028,7 +45100,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45040,7 +45112,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45050,24 +45122,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45076,7 +45148,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45084,7 +45156,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45093,7 +45165,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45103,7 +45175,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45111,31 +45183,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45143,7 +45215,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45153,14 +45225,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45168,31 +45240,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45200,7 +45272,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45210,7 +45282,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45219,7 +45291,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45228,20 +45300,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45250,7 +45322,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45258,7 +45330,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45267,7 +45339,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45277,20 +45349,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45299,13 +45371,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45315,46 +45387,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45364,7 +45436,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45376,7 +45448,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45384,7 +45456,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45392,7 +45464,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45401,7 +45473,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45415,7 +45487,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45425,7 +45497,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45434,7 +45506,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45444,54 +45516,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45502,61 +45574,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45565,26 +45648,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45595,20 +45678,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45620,52 +45703,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45673,7 +45756,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45682,10 +45765,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45693,10 +45777,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45704,10 +45789,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45715,10 +45801,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45726,10 +45813,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46545,21 +46633,25 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46568,75 +46660,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47511,121 +47603,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47633,11 +47729,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47648,7 +47744,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47656,7 +47752,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47668,14 +47764,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47684,17 +47780,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47702,36 +47798,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47739,7 +47835,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47748,111 +47844,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48155,14 +48251,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48175,15 +48274,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48418,14 +48520,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48435,14 +48540,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49042,27 +49150,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49074,7 +49186,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49084,7 +49196,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49100,67 +49212,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49171,7 +49283,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49180,30 +49292,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49211,37 +49323,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49252,7 +49364,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49263,7 +49375,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49273,50 +49385,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49324,110 +49436,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49455,7 +49567,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49659,45 +49771,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -51948,32 +52069,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54254,228 +54378,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -54787,102 +54914,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -54898,311 +55028,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55277,7 +55407,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55290,19 +55420,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55313,7 +55443,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56161,12 +56291,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56176,26 +56315,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -56936,16 +57077,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63364,79 +63512,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63444,18 +63592,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63466,144 +63614,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63613,25 +63761,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63642,78 +63790,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63725,7 +63873,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -63734,31 +63882,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -63767,62 +63915,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63834,7 +63982,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63846,7 +63994,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63858,71 +64006,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -63931,19 +64079,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -63953,7 +64101,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63964,75 +64112,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64041,53 +64189,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64098,98 +64246,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64197,7 +64345,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64208,69 +64356,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64285,20 +64433,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64309,7 +64457,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64320,23 +64468,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64344,118 +64492,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64466,59 +64614,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64526,25 +64674,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64552,7 +64700,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64562,30 +64710,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64594,19 +64742,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64614,11 +64762,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64627,47 +64775,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64676,11 +64824,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64689,11 +64837,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64704,15 +64852,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64721,95 +64869,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -64831,7 +64979,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64840,84 +64988,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -64933,24 +65081,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -64960,34 +65108,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -64998,7 +65146,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65008,208 +65156,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65218,672 +65366,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68179,8 +68327,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68709,52 +68857,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/hu.po b/doc/translations/hu.po
new file mode 100644
index 0000000000..e439716469
--- /dev/null
+++ b/doc/translations/hu.po
@@ -0,0 +1,69194 @@
+# LANGUAGE translation of the Godot Engine class reference.
+# Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.
+# Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).
+# This file is distributed under the same license as the Godot source code.
+#
+# Misi <varady.misi@gmail.com>, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: Godot Engine class reference\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
+"PO-Revision-Date: 2021-10-10 14:03+0000\n"
+"Last-Translator: Misi <varady.misi@gmail.com>\n"
+"Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/"
+"godot-class-reference/hu/>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\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"
+
+#: doc/tools/makerst.py
+msgid "Description"
+msgstr "Leírás"
+
+#: doc/tools/makerst.py
+#, fuzzy
+msgid "Tutorials"
+msgstr "Útmutatók"
+
+#: doc/tools/makerst.py
+msgid "Properties"
+msgstr "Tulajdonságok"
+
+#: doc/tools/makerst.py
+msgid "Methods"
+msgstr "Metódusok"
+
+#: doc/tools/makerst.py
+#, fuzzy
+msgid "Theme Properties"
+msgstr "Téma Tulajdonságok"
+
+#: doc/tools/makerst.py
+msgid "Signals"
+msgstr "Jelzések"
+
+#: doc/tools/makerst.py
+#, fuzzy
+msgid "Enumerations"
+msgstr "Számlálók"
+
+#: doc/tools/makerst.py
+msgid "Constants"
+msgstr "Konstansok"
+
+#: doc/tools/makerst.py
+msgid "Property Descriptions"
+msgstr "Tulajdonság leírások"
+
+#: doc/tools/makerst.py
+msgid "Method Descriptions"
+msgstr "Metódus leírások"
+
+#: modules/gdscript/doc_classes/@GDScript.xml:4
+msgid "Built-in GDScript functions."
+msgstr "Beépített GDScript függvények"
+
+#: modules/gdscript/doc_classes/@GDScript.xml:7
+msgid ""
+"List of core built-in GDScript functions. Math functions and other "
+"utilities. Everything else is provided by objects. (Keywords: builtin, built "
+"in, global functions.)"
+msgstr ""
+"Egy lista a belső beépített GDScript függvényekről. Matematikai függvények "
+"és további segédprogramok. Minden más objektumok által van biztosítva. "
+"(Kulcsszavak: beépített, globális függvények.)"
+
+#: modules/gdscript/doc_classes/@GDScript.xml:19
+msgid ""
+"Returns a color constructed from integer red, green, blue, and alpha "
+"channels. Each channel should have 8 bits of information ranging from 0 to "
+"255.\n"
+"[code]r8[/code] red channel\n"
+"[code]g8[/code] green channel\n"
+"[code]b8[/code] blue channel\n"
+"[code]a8[/code] alpha channel\n"
+"[codeblock]\n"
+"red = Color8(255, 0, 0)\n"
+"[/codeblock]"
+msgstr ""
+"Egy színt ad vissza, amit egy egész szám (integer) alapú piros, zöld, kék és "
+"átlátszóság (alpha) csatorna alapján rak össze. Mindegyik csatorna egy 8 "
+"bitnyi információt tartalmaz 0-tól 255-ig.\n"
+"[code]r8[/code] piros csatorna\n"
+"[code]g8[/code] zöld csatorna\n"
+"[code]b8[/code] kék csatorna\n"
+"[code]a8[/code] átlátszósági csatorna\n"
+"[codeblock]\n"
+"red = Color8(255, 0, 0)\n"
+"[/codeblock]"
+
+#: modules/gdscript/doc_classes/@GDScript.xml:34
+msgid ""
+"Returns a color according to the standardized [code]name[/code] with "
+"[code]alpha[/code] ranging from 0 to 1.\n"
+"[codeblock]\n"
+"red = ColorN(\"red\", 1)\n"
+"[/codeblock]\n"
+"Supported color names are the same as the constants defined in [Color]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:45
+msgid ""
+"Returns the absolute value of parameter [code]s[/code] (i.e. positive "
+"value).\n"
+"[codeblock]\n"
+"a = abs(-1) # a is 1\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:55
+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 "
+"[code]1.0[/code] (inclusive), otherwise, [method acos] will return [constant "
+"NAN].\n"
+"[codeblock]\n"
+"# c is 0.523599 or 30 degrees if converted with rad2deg(s)\n"
+"c = acos(0.866025)\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:66
+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 "
+"[code]1.0[/code] (inclusive), otherwise, [method asin] will return [constant "
+"NAN].\n"
+"[codeblock]\n"
+"# s is 0.523599 or 30 degrees if converted with rad2deg(s)\n"
+"s = asin(0.5)\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:78
+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 "
+"running from the editor, the running project will also be paused until you "
+"resume it. This can be used as a stronger form of [method push_error] for "
+"reporting errors to project developers or add-on users.\n"
+"[b]Note:[/b] For performance reasons, the code inside [method assert] is "
+"only executed in debug builds or when running the project from the editor. "
+"Don't include code that has side effects in an [method assert] call. "
+"Otherwise, the project will behave differently when exported in release "
+"mode.\n"
+"The optional [code]message[/code] argument, if given, is shown in addition "
+"to the generic \"Assertion failed\" message. You can use this to provide "
+"additional details about why the assertion failed.\n"
+"[codeblock]\n"
+"# Imagine we always want speed to be between 0 and 20.\n"
+"var speed = -10\n"
+"assert(speed < 20) # True, the program will continue\n"
+"assert(speed >= 0) # False, the program will stop\n"
+"assert(speed >= 0 and speed < 20) # You can also combine the two conditional "
+"statements in one check\n"
+"assert(speed < 20, \"speed = %f, but the speed limit is 20\" % speed) # Show "
+"a message with clarifying details\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:95
+msgid ""
+"Returns the arc tangent of [code]s[/code] in radians. Use it to get the "
+"angle from an angle's tangent in trigonometry: [code]atan(tan(angle)) == "
+"angle[/code].\n"
+"The method cannot know in which quadrant the angle should fall. See [method "
+"atan2] if you have both [code]y[/code] and [code]x[/code].\n"
+"[codeblock]\n"
+"a = atan(0.5) # a is 0.463648\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:107
+msgid ""
+"Returns the arc tangent of [code]y/x[/code] in radians. Use to get the angle "
+"of tangent [code]y/x[/code]. To compute the value, the method takes into "
+"account the sign of both arguments in order to determine the quadrant.\n"
+"Important note: The Y coordinate comes first, by convention.\n"
+"[codeblock]\n"
+"a = atan2(0, -1) # a is 3.141593\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:119
+msgid ""
+"Decodes a byte array back to a value. When [code]allow_objects[/code] is "
+"[code]true[/code] decoding objects is allowed.\n"
+"[b]WARNING:[/b] Deserialized object can contain code which gets executed. Do "
+"not use this option if the serialized object comes from untrusted sources to "
+"avoid potential security threats (remote code execution)."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:128
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:145
+msgid ""
+"Converts a 2D point expressed in the cartesian coordinate system (X and Y "
+"axis) to the polar coordinate system (a distance from the origin and an "
+"angle)."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:135
+msgid ""
+"Rounds [code]s[/code] upward (towards positive infinity), returning the "
+"smallest whole number that is not less than [code]s[/code].\n"
+"[codeblock]\n"
+"a = ceil(1.45) # a is 2.0\n"
+"a = ceil(1.001) # a is 2.0\n"
+"[/codeblock]\n"
+"See also [method floor], [method round], [method stepify], and [int]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:147
+msgid ""
+"Returns a character as a String of the given Unicode code point (which is "
+"compatible with ASCII code).\n"
+"[codeblock]\n"
+"a = char(65) # a is \"A\"\n"
+"a = char(65 + 32) # a is \"a\"\n"
+"a = char(8364) # a is \"€\"\n"
+"[/codeblock]\n"
+"This is the inverse of [method ord]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:162
+msgid ""
+"Clamps [code]value[/code] and returns a value not less than [code]min[/code] "
+"and not more than [code]max[/code].\n"
+"[codeblock]\n"
+"a = clamp(1000, 1, 20) # a is 20\n"
+"a = clamp(-10, 1, 20) # a is 1\n"
+"a = clamp(15, 1, 20) # a is 15\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:175
+msgid ""
+"Converts from a type to another in the best way possible. The [code]type[/"
+"code] parameter uses the [enum Variant.Type] values.\n"
+"[codeblock]\n"
+"a = Vector2(1, 0)\n"
+"# Prints 1\n"
+"print(a.length())\n"
+"a = convert(a, TYPE_STRING)\n"
+"# Prints 6 as \"(1, 0)\" is 6 characters\n"
+"print(a.length())\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:190
+msgid ""
+"Returns the cosine of angle [code]s[/code] in radians.\n"
+"[codeblock]\n"
+"a = cos(TAU) # a is 1.0\n"
+"a = cos(PI) # a is -1.0\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:201
+msgid ""
+"Returns the hyperbolic cosine of [code]s[/code] in radians.\n"
+"[codeblock]\n"
+"print(cosh(1)) # Prints 1.543081\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:211
+msgid "Converts from decibels to linear energy (audio)."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:218
+msgid "Deprecated alias for [method step_decimals]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:227
+msgid ""
+"[b]Note:[/b] [code]dectime[/code] has been deprecated and will be removed in "
+"Godot 4.0, please use [method move_toward] instead.\n"
+"Returns the result of [code]value[/code] decreased by [code]step[/code] * "
+"[code]amount[/code].\n"
+"[codeblock]\n"
+"a = dectime(60, 10, 0.1)) # a is 59.0\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:238
+msgid ""
+"Converts an angle expressed in degrees to radians.\n"
+"[codeblock]\n"
+"r = deg2rad(180) # r is 3.141593\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:248
+msgid ""
+"Converts a dictionary (previously created with [method inst2dict]) back to "
+"an instance. Useful for deserializing."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:256
+msgid ""
+"Returns an \"eased\" value of [code]x[/code] based on an easing function "
+"defined with [code]curve[/code]. This easing function is based on an "
+"exponent. The [code]curve[/code] can be any floating-point number, with "
+"specific values leading to the following behaviors:\n"
+"[codeblock]\n"
+"- Lower than -1.0 (exclusive): Ease in-out\n"
+"- 1.0: Linear\n"
+"- Between -1.0 and 0.0 (exclusive): Ease out-in\n"
+"- 0.0: Constant\n"
+"- Between 0.0 to 1.0 (exclusive): Ease in\n"
+"- 1.0: Linear\n"
+"- Greater than 1.0 (exclusive): Ease out\n"
+"[/codeblock]\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/3.4/img/"
+"ease_cheatsheet.png]ease() curve values cheatsheet[/url]\n"
+"See also [method smoothstep]. If you need to perform more advanced "
+"transitions, use [Tween] or [AnimationPlayer]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:274
+msgid ""
+"The natural exponential function. It raises the mathematical constant [b]e[/"
+"b] to the power of [code]s[/code] and returns it.\n"
+"[b]e[/b] has an approximate value of 2.71828, and can be obtained with "
+"[code]exp(1)[/code].\n"
+"For exponents to other bases use the method [method pow].\n"
+"[codeblock]\n"
+"a = exp(2) # Approximately 7.39\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:286
+msgid ""
+"Rounds [code]s[/code] downward (towards negative infinity), returning the "
+"largest whole number that is not more than [code]s[/code].\n"
+"[codeblock]\n"
+"a = floor(2.45) # a is 2.0\n"
+"a = floor(2.99) # a is 2.0\n"
+"a = floor(-2.99) # a is -3.0\n"
+"[/codeblock]\n"
+"See also [method ceil], [method round], [method stepify], and [int].\n"
+"[b]Note:[/b] This method returns a float. If you need an integer and "
+"[code]s[/code] is a non-negative number, you can use [code]int(s)[/code] "
+"directly."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:301
+msgid ""
+"Returns the floating-point remainder of [code]a/b[/code], keeping the sign "
+"of [code]a[/code].\n"
+"[codeblock]\n"
+"r = fmod(7, 5.5) # r is 1.5\n"
+"[/codeblock]\n"
+"For the integer remainder operation, use the % operator."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:313
+msgid ""
+"Returns the floating-point modulus of [code]a/b[/code] that wraps equally in "
+"positive and negative.\n"
+"[codeblock]\n"
+"for i in 7:\n"
+" var x = 0.5 * i - 1.5\n"
+" print(\"%4.1f %4.1f %4.1f\" % [x, fmod(x, 1.5), fposmod(x, 1.5)])\n"
+"[/codeblock]\n"
+"Produces:\n"
+"[codeblock]\n"
+"-1.5 -0.0 0.0\n"
+"-1.0 -1.0 0.5\n"
+"-0.5 -0.5 1.0\n"
+" 0.0 0.0 0.0\n"
+" 0.5 0.5 0.5\n"
+" 1.0 1.0 1.0\n"
+" 1.5 0.0 0.0\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:336
+msgid ""
+"Returns a reference to the specified function [code]funcname[/code] in the "
+"[code]instance[/code] node. As functions aren't first-class objects in "
+"GDscript, use [code]funcref[/code] to store a [FuncRef] in a variable and "
+"call it later.\n"
+"[codeblock]\n"
+"func foo():\n"
+" return(\"bar\")\n"
+"\n"
+"a = funcref(self, \"foo\")\n"
+"print(a.call_func()) # Prints bar\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:349
+msgid ""
+"Returns an array of dictionaries representing the current call stack.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" foo()\n"
+"\n"
+"func foo():\n"
+" bar()\n"
+"\n"
+"func bar():\n"
+" print(get_stack())\n"
+"[/codeblock]\n"
+"would print\n"
+"[codeblock]\n"
+"[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, "
+"source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:370
+msgid ""
+"Returns the integer hash of the variable passed.\n"
+"[codeblock]\n"
+"print(hash(\"a\")) # Prints 177670\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:380
+msgid ""
+"Returns the passed instance converted to a dictionary (useful for "
+"serializing).\n"
+"[codeblock]\n"
+"var foo = \"bar\"\n"
+"func _ready():\n"
+" var d = inst2dict(self)\n"
+" print(d.keys())\n"
+" print(d.values())\n"
+"[/codeblock]\n"
+"Prints out:\n"
+"[codeblock]\n"
+"[@subpath, @path, foo]\n"
+"[, res://test.gd, bar]\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:399
+msgid ""
+"Returns the Object that corresponds to [code]instance_id[/code]. All Objects "
+"have a unique instance ID.\n"
+"[codeblock]\n"
+"var foo = \"bar\"\n"
+"func _ready():\n"
+" var id = get_instance_id()\n"
+" var inst = instance_from_id(id)\n"
+" print(inst.foo) # Prints bar\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:415
+msgid ""
+"Returns a normalized value considering the given range. This is the opposite "
+"of [method lerp].\n"
+"[codeblock]\n"
+"var middle = lerp(20, 30, 0.75)\n"
+"# `middle` is now 27.5.\n"
+"# Now, we pretend to have forgotten the original ratio and want to get it "
+"back.\n"
+"var ratio = inverse_lerp(20, 30, 27.5)\n"
+"# `ratio` is now 0.75.\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:430
+msgid ""
+"Returns [code]true[/code] if [code]a[/code] and [code]b[/code] are "
+"approximately equal to each other.\n"
+"Here, approximately equal means that [code]a[/code] and [code]b[/code] are "
+"within a small internal epsilon of each other, which scales with the "
+"magnitude of the numbers.\n"
+"Infinity values of the same sign are considered equal."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:439
+msgid ""
+"Returns whether [code]s[/code] is an infinity value (either positive "
+"infinity or negative infinity)."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:446
+msgid ""
+"Returns whether [code]instance[/code] is a valid object (e.g. has not been "
+"deleted from memory)."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:453
+msgid ""
+"Returns whether [code]s[/code] is a NaN (\"Not a Number\" or invalid) value."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:460
+msgid ""
+"Returns [code]true[/code] if [code]s[/code] is zero or almost zero.\n"
+"This method is faster than using [method is_equal_approx] with one value as "
+"zero."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:468
+msgid ""
+"Returns length of Variant [code]var[/code]. Length is the character count of "
+"String, element count of Array, size of Dictionary, etc.\n"
+"[b]Note:[/b] Generates a fatal error if Variant can not provide a length.\n"
+"[codeblock]\n"
+"a = [1, 2, 3, 4]\n"
+"len(a) # Returns 4\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:482
+msgid ""
+"Linearly interpolates between two values by a normalized value. This is the "
+"opposite of [method inverse_lerp].\n"
+"If the [code]from[/code] and [code]to[/code] arguments are of type [int] or "
+"[float], the return value is a [float].\n"
+"If both are of the same vector type ([Vector2], [Vector3] or [Color]), the "
+"return value will be of the same type ([code]lerp[/code] then calls the "
+"vector type's [code]linear_interpolate[/code] method).\n"
+"[codeblock]\n"
+"lerp(0, 4, 0.75) # Returns 3.0\n"
+"lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Returns Vector2(2, 3.5)\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:497
+msgid ""
+"Linearly interpolates between two angles (in radians) by a normalized "
+"value.\n"
+"Similar to [method lerp], but interpolates correctly when the angles wrap "
+"around [constant @GDScript.TAU].\n"
+"[codeblock]\n"
+"extends Sprite\n"
+"var elapsed = 0.0\n"
+"func _process(delta):\n"
+" var min_angle = deg2rad(0.0)\n"
+" var max_angle = deg2rad(90.0)\n"
+" rotation = lerp_angle(min_angle, max_angle, elapsed)\n"
+" elapsed += delta\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:514
+msgid ""
+"Converts from linear energy to decibels (audio). This can be used to "
+"implement volume sliders that behave as expected (since volume isn't "
+"linear). Example:\n"
+"[codeblock]\n"
+"# \"Slider\" refers to a node that inherits Range such as HSlider or "
+"VSlider.\n"
+"# Its range must be configured to go from 0 to 1.\n"
+"# Change the bus name if you'd like to change the volume of a specific bus "
+"only.\n"
+"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), "
+"linear2db($Slider.value))\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:527
+msgid ""
+"Loads a resource from the filesystem located at [code]path[/code]. The "
+"resource is loaded on the method call (unless it's referenced already "
+"elsewhere, e.g. in another script or in the scene), which might cause slight "
+"delay, especially when loading scenes. To avoid unnecessary delays when "
+"loading something multiple times, either store the resource in a variable or "
+"use [method preload].\n"
+"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
+"in the FileSystem dock and choosing \"Copy Path\" or by dragging the file "
+"from the FileSystem dock into the script.\n"
+"[codeblock]\n"
+"# Load a scene called main located in the root of the project directory and "
+"cache it in a variable.\n"
+"var main = load(\"res://main.tscn\") # main will contain a PackedScene "
+"resource.\n"
+"[/codeblock]\n"
+"[b]Important:[/b] The path must be absolute, a local path will just return "
+"[code]null[/code].\n"
+"This method is a simplified version of [method ResourceLoader.load], which "
+"can be used for more advanced scenarios."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:541
+msgid ""
+"Natural logarithm. The amount of time needed to reach a certain level of "
+"continuous growth.\n"
+"[b]Note:[/b] This is not the same as the \"log\" function on most "
+"calculators, which uses a base 10 logarithm.\n"
+"[codeblock]\n"
+"log(10) # Returns 2.302585\n"
+"[/codeblock]\n"
+"[b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], "
+"while negative values return [code]-nan[/code]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:554
+msgid ""
+"Returns the maximum of two values.\n"
+"[codeblock]\n"
+"max(1, 2) # Returns 2\n"
+"max(-3.99, -4) # Returns -3.99\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:566
+msgid ""
+"Returns the minimum of two values.\n"
+"[codeblock]\n"
+"min(1, 2) # Returns 1\n"
+"min(-3.99, -4) # Returns -4\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:579
+msgid ""
+"Moves [code]from[/code] toward [code]to[/code] by the [code]delta[/code] "
+"value.\n"
+"Use a negative [code]delta[/code] value to move away.\n"
+"[codeblock]\n"
+"move_toward(5, 10, 4) # Returns 9\n"
+"move_toward(10, 5, 4) # Returns 6\n"
+"move_toward(10, 5, -1.5) # Returns 11.5\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:592
+msgid ""
+"Returns the nearest equal or larger power of 2 for integer [code]value[/"
+"code].\n"
+"In other words, returns the smallest value [code]a[/code] where [code]a = "
+"pow(2, n)[/code] such that [code]value <= a[/code] for some non-negative "
+"integer [code]n[/code].\n"
+"[codeblock]\n"
+"nearest_po2(3) # Returns 4\n"
+"nearest_po2(4) # Returns 4\n"
+"nearest_po2(5) # Returns 8\n"
+"\n"
+"nearest_po2(0) # Returns 0 (this may not be what you expect)\n"
+"nearest_po2(-1) # Returns 0 (this may not be what you expect)\n"
+"[/codeblock]\n"
+"[b]WARNING:[/b] Due to the way it is implemented, this function returns "
+"[code]0[/code] rather than [code]1[/code] for non-positive values of "
+"[code]value[/code] (in reality, 1 is the smallest integer power of 2)."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:609
+msgid ""
+"Returns an integer representing the Unicode code point of the given Unicode "
+"character [code]char[/code].\n"
+"[codeblock]\n"
+"a = ord(\"A\") # a is 65\n"
+"a = ord(\"a\") # a is 97\n"
+"a = ord(\"€\") # a is 8364\n"
+"[/codeblock]\n"
+"This is the inverse of [method char]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:622
+msgid ""
+"Parse JSON text to a Variant. (Use [method typeof] to check if the Variant's "
+"type is what you expect.)\n"
+"[b]Note:[/b] The JSON specification does not define integer or float types, "
+"but only a [i]number[/i] type. Therefore, parsing a JSON text will convert "
+"all numerical values to [float] types.\n"
+"[b]Note:[/b] JSON objects do not preserve key order like Godot dictionaries, "
+"thus, you should not rely on keys being in a certain order if a dictionary "
+"is constructed from JSON. In contrast, JSON arrays retain the order of their "
+"elements:\n"
+"[codeblock]\n"
+"var p = JSON.parse('[\"hello\", \"world\", \"!\"]')\n"
+"if typeof(p.result) == TYPE_ARRAY:\n"
+" print(p.result[0]) # Prints \"hello\"\n"
+"else:\n"
+" push_error(\"Unexpected results.\")\n"
+"[/codeblock]\n"
+"See also [JSON] for an alternative way to parse JSON text."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:640
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:142
+msgid ""
+"Converts a 2D point expressed in the polar coordinate system (a distance "
+"from the origin [code]r[/code] and an angle [code]th[/code]) to the "
+"cartesian coordinate system (X and Y axis)."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:648
+msgid ""
+"Returns the integer modulus of [code]a/b[/code] that wraps equally in "
+"positive and negative.\n"
+"[codeblock]\n"
+"for i in range(-3, 4):\n"
+" print(\"%2d %2d %2d\" % [i, i % 3, posmod(i, 3)])\n"
+"[/codeblock]\n"
+"Produces:\n"
+"[codeblock]\n"
+"-3 0 0\n"
+"-2 -2 1\n"
+"-1 -1 2\n"
+" 0 0 0\n"
+" 1 1 1\n"
+" 2 2 2\n"
+" 3 0 0\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:670
+msgid ""
+"Returns the result of [code]base[/code] raised to the power of [code]exp[/"
+"code].\n"
+"[codeblock]\n"
+"pow(2, 5) # Returns 32.0\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:680
+msgid ""
+"Returns a [Resource] from the filesystem located at [code]path[/code]. The "
+"resource is loaded during script parsing, i.e. is loaded with the script and "
+"[method preload] effectively acts as a reference to that resource. Note that "
+"the method requires a constant path. If you want to load a resource from a "
+"dynamic/variable path, use [method load].\n"
+"[b]Note:[/b] Resource paths can be obtained by right clicking on a resource "
+"in the Assets Panel and choosing \"Copy Path\" or by dragging the file from "
+"the FileSystem dock into the script.\n"
+"[codeblock]\n"
+"# Instance a scene.\n"
+"var diamond = preload(\"res://diamond.tscn\").instance()\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:691
+msgid ""
+"Converts one or more arguments of any type to string in the best way "
+"possible and prints them to the console.\n"
+"[codeblock]\n"
+"a = [1, 2, 3]\n"
+"print(\"a\", \"=\", a) # Prints a=[1, 2, 3]\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to "
+"print error and warning messages instead of [method print]. This "
+"distinguishes them from print messages used for debugging purposes, while "
+"also displaying a stack trace when an error or warning is printed."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:702
+msgid "Like [method print], but prints only when used in debug mode."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:708
+msgid ""
+"Prints a stack track at code location, only works when running with debugger "
+"turned on.\n"
+"Output in the console would look something like this:\n"
+"[codeblock]\n"
+"Frame 0 - res://test.gd:16 in function '_process'\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:718
+msgid ""
+"Prints one or more arguments to strings in the best way possible to standard "
+"error line.\n"
+"[codeblock]\n"
+"printerr(\"prints to stderr\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:727
+msgid ""
+"Prints one or more arguments to strings in the best way possible to console. "
+"No newline is added at the end.\n"
+"[codeblock]\n"
+"printraw(\"A\")\n"
+"printraw(\"B\")\n"
+"# Prints AB\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Due to limitations with Godot's built-in console, this only "
+"prints to the terminal. If you need to print in the editor, use another "
+"method, such as [method print]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:739
+msgid ""
+"Prints one or more arguments to the console with a space between each "
+"argument.\n"
+"[codeblock]\n"
+"prints(\"A\", \"B\", \"C\") # Prints A B C\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:748
+msgid ""
+"Prints one or more arguments to the console with a tab between each "
+"argument.\n"
+"[codeblock]\n"
+"printt(\"A\", \"B\", \"C\") # Prints A B C\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:758
+msgid ""
+"Pushes an error message to Godot's built-in debugger and to the OS "
+"terminal.\n"
+"[codeblock]\n"
+"push_error(\"test error\") # Prints \"test error\" to debugger and terminal "
+"as error call\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Errors printed this way will not pause project execution. To "
+"print an error message and pause project execution in debug builds, use "
+"[code]assert(false, \"test error\")[/code] instead."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:769
+msgid ""
+"Pushes a warning message to Godot's built-in debugger and to the OS "
+"terminal.\n"
+"[codeblock]\n"
+"push_warning(\"test warning\") # Prints \"test warning\" to debugger and "
+"terminal as warning call\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:779
+msgid ""
+"Converts an angle expressed in radians to degrees.\n"
+"[codeblock]\n"
+"rad2deg(0.523599) # Returns 30.0\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:790
+msgid ""
+"Random range, any floating point value between [code]from[/code] and "
+"[code]to[/code].\n"
+"[codeblock]\n"
+"prints(rand_range(0, 1), rand_range(0, 1)) # Prints e.g. 0.135591 0.405263\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:800
+msgid ""
+"Random from seed: pass a [code]seed[/code], and an array with both number "
+"and new seed is returned. \"Seed\" here refers to the internal state of the "
+"pseudo random number generator. The internal state of the current "
+"implementation is 64 bits."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:806
+msgid ""
+"Returns a random floating point value on the interval [code][0, 1][/code].\n"
+"[codeblock]\n"
+"randf() # Returns e.g. 0.375671\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:815
+msgid ""
+"Returns a random unsigned 32-bit integer. Use remainder to obtain a random "
+"value in the interval [code][0, N - 1][/code] (where N is smaller than "
+"2^32).\n"
+"[codeblock]\n"
+"randi() # Returns random integer between 0 and 2^32 - 1\n"
+"randi() % 20 # Returns random integer between 0 and 19\n"
+"randi() % 100 # Returns random integer between 0 and 99\n"
+"randi() % 100 + 1 # Returns random integer between 1 and 100\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:827
+msgid ""
+"Randomizes the seed (or the internal state) of the random number generator. "
+"Current implementation reseeds using a number based on time.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" randomize()\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:837
+msgid ""
+"Returns an array with the given range. Range can be 1 argument [code]N[/"
+"code] (0 to [code]N[/code] - 1), two arguments ([code]initial[/code], "
+"[code]final - 1[/code]) or three arguments ([code]initial[/code], "
+"[code]final - 1[/code], [code]increment[/code]). Returns an empty array if "
+"the range isn't valid (e.g. [code]range(2, 5, -1)[/code] or [code]range(5, "
+"5, 1)[/code]).\n"
+"Returns an array with the given range. [code]range()[/code] can have 1 "
+"argument N ([code]0[/code] to [code]N - 1[/code]), two arguments "
+"([code]initial[/code], [code]final - 1[/code]) or three arguments "
+"([code]initial[/code], [code]final - 1[/code], [code]increment[/code]). "
+"[code]increment[/code] can be negative. If [code]increment[/code] is "
+"negative, [code]final - 1[/code] will become [code]final + 1[/code]. Also, "
+"the initial value must be greater than the final value for the loop to run.\n"
+"[codeblock]\n"
+"print(range(4))\n"
+"print(range(2, 5))\n"
+"print(range(0, 6, 2))\n"
+"[/codeblock]\n"
+"Output:\n"
+"[codeblock]\n"
+"[0, 1, 2, 3]\n"
+"[2, 3, 4]\n"
+"[0, 2, 4]\n"
+"[/codeblock]\n"
+"To iterate over an [Array] backwards, use:\n"
+"[codeblock]\n"
+"var array = [3, 6, 9]\n"
+"var i := array.size() - 1\n"
+"while i >= 0:\n"
+" print(array[i])\n"
+" i -= 1\n"
+"[/codeblock]\n"
+"Output:\n"
+"[codeblock]\n"
+"9\n"
+"6\n"
+"3\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:874
+msgid ""
+"Maps a [code]value[/code] from range [code][istart, istop][/code] to [code]"
+"[ostart, ostop][/code].\n"
+"[codeblock]\n"
+"range_lerp(75, 0, 100, -1, 1) # Returns 0.5\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:884
+msgid ""
+"Rounds [code]s[/code] to the nearest whole number, with halfway cases "
+"rounded away from zero.\n"
+"[codeblock]\n"
+"a = round(2.49) # a is 2.0\n"
+"a = round(2.5) # a is 3.0\n"
+"a = round(2.51) # a is 3.0\n"
+"[/codeblock]\n"
+"See also [method floor], [method ceil], [method stepify], and [int]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:897
+msgid ""
+"Sets seed for the random number generator.\n"
+"[codeblock]\n"
+"my_seed = \"Godot Rocks\"\n"
+"seed(my_seed.hash())\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:908
+msgid ""
+"Returns the sign of [code]s[/code]: -1 or 1. Returns 0 if [code]s[/code] is "
+"0.\n"
+"[codeblock]\n"
+"sign(-6) # Returns -1\n"
+"sign(0) # Returns 0\n"
+"sign(6) # Returns 1\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:920
+msgid ""
+"Returns the sine of angle [code]s[/code] in radians.\n"
+"[codeblock]\n"
+"sin(0.523599) # Returns 0.5\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:930
+msgid ""
+"Returns the hyperbolic sine of [code]s[/code].\n"
+"[codeblock]\n"
+"a = log(2.0) # Returns 0.693147\n"
+"sinh(a) # Returns 0.75\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:943
+msgid ""
+"Returns the result of smoothly interpolating the value of [code]s[/code] "
+"between [code]0[/code] and [code]1[/code], based on the where [code]s[/code] "
+"lies with respect to the edges [code]from[/code] and [code]to[/code].\n"
+"The return value is [code]0[/code] if [code]s <= from[/code], and [code]1[/"
+"code] if [code]s >= to[/code]. If [code]s[/code] lies between [code]from[/"
+"code] and [code]to[/code], the returned value follows an S-shaped curve that "
+"maps [code]s[/code] between [code]0[/code] and [code]1[/code].\n"
+"This S-shaped curve is the cubic Hermite interpolator, given by [code]f(y) = "
+"3*y^2 - 2*y^3[/code] where [code]y = (x-from) / (to-from)[/code].\n"
+"[codeblock]\n"
+"smoothstep(0, 2, -5.0) # Returns 0.0\n"
+"smoothstep(0, 2, 0.5) # Returns 0.15625\n"
+"smoothstep(0, 2, 1.0) # Returns 0.5\n"
+"smoothstep(0, 2, 2.0) # Returns 1.0\n"
+"[/codeblock]\n"
+"Compared to [method ease] with a curve value of [code]-1.6521[/code], "
+"[method smoothstep] returns the smoothest possible curve with no sudden "
+"changes in the derivative. If you need to perform more advanced transitions, "
+"use [Tween] or [AnimationPlayer].\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/3.4/img/"
+"smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, "
+"-1.6521) return values[/url]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:960
+msgid ""
+"Returns the square root of [code]s[/code], where [code]s[/code] is a non-"
+"negative number.\n"
+"[codeblock]\n"
+"sqrt(9) # Returns 3\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Negative values of [code]s[/code] return NaN. If you need "
+"negative inputs, use [code]System.Numerics.Complex[/code] in C#."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:971
+msgid ""
+"Returns the position of the first non-zero digit, after the decimal point. "
+"Note that the maximum return value is 10, which is a design decision in the "
+"implementation.\n"
+"[codeblock]\n"
+"n = step_decimals(5) # n is 0\n"
+"n = step_decimals(1.0005) # n is 4\n"
+"n = step_decimals(0.000000005) # n is 9\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:984
+msgid ""
+"Snaps float value [code]s[/code] to a given [code]step[/code]. This can also "
+"be used to round a floating point number to an arbitrary number of "
+"decimals.\n"
+"[codeblock]\n"
+"stepify(100, 32) # Returns 96.0\n"
+"stepify(3.14159, 0.01) # Returns 3.14\n"
+"[/codeblock]\n"
+"See also [method ceil], [method floor], [method round], and [int]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:995
+msgid ""
+"Converts one or more arguments of any type to string in the best way "
+"possible.\n"
+"[codeblock]\n"
+"var a = [10, 20, 30]\n"
+"var b = str(a);\n"
+"len(a) # Returns 3\n"
+"len(b) # Returns 12\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1008
+msgid ""
+"Converts a formatted string that was returned by [method var2str] to the "
+"original value.\n"
+"[codeblock]\n"
+"a = '{ \"a\": 1, \"b\": 2 }'\n"
+"b = str2var(a)\n"
+"print(b[\"a\"]) # Prints 1\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1020
+msgid ""
+"Returns the tangent of angle [code]s[/code] in radians.\n"
+"[codeblock]\n"
+"tan(deg2rad(45)) # Returns 1\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1030
+msgid ""
+"Returns the hyperbolic tangent of [code]s[/code].\n"
+"[codeblock]\n"
+"a = log(2.0) # a is 0.693147\n"
+"b = tanh(a) # b is 0.6\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1041
+msgid ""
+"Converts a [Variant] [code]var[/code] to JSON text and return the result. "
+"Useful for serializing data to store or send over the network.\n"
+"[codeblock]\n"
+"# Both numbers below are integers.\n"
+"a = { \"a\": 1, \"b\": 2 }\n"
+"b = to_json(a)\n"
+"print(b) # {\"a\":1, \"b\":2}\n"
+"# Both numbers above are floats, even if they display without any decimal "
+"places.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] The JSON specification does not define integer or float types, "
+"but only a [i]number[/i] type. Therefore, converting a [Variant] to JSON "
+"text will convert all numerical values to [float] types.\n"
+"See also [JSON] for an alternative way to convert a [Variant] to JSON text."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1057
+msgid ""
+"Returns whether the given class exists in [ClassDB].\n"
+"[codeblock]\n"
+"type_exists(\"Sprite\") # Returns true\n"
+"type_exists(\"Variant\") # Returns false\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1068
+msgid ""
+"Returns the internal type of the given Variant object, using the [enum "
+"Variant.Type] values.\n"
+"[codeblock]\n"
+"p = parse_json('[\"a\", \"b\", \"c\"]')\n"
+"if typeof(p) == TYPE_ARRAY:\n"
+" print(p[0]) # Prints a\n"
+"else:\n"
+" print(\"unexpected results\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1082
+msgid ""
+"Checks that [code]json[/code] is valid JSON data. Returns an empty string if "
+"valid, or an error message otherwise.\n"
+"[codeblock]\n"
+"j = to_json([1, 2, 3])\n"
+"v = validate_json(j)\n"
+"if not v:\n"
+" print(\"Valid JSON.\")\n"
+"else:\n"
+" push_error(\"Invalid JSON: \" + v)\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1098
+msgid ""
+"Encodes a variable value to a byte array. When [code]full_objects[/code] is "
+"[code]true[/code] encoding objects is allowed (and can potentially include "
+"code)."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1105
+msgid ""
+"Converts a Variant [code]var[/code] to a formatted string that can later be "
+"parsed using [method str2var].\n"
+"[codeblock]\n"
+"a = { \"a\": 1, \"b\": 2 }\n"
+"print(var2str(a))\n"
+"[/codeblock]\n"
+"prints\n"
+"[codeblock]\n"
+"{\n"
+"\"a\": 1,\n"
+"\"b\": 2\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1123
+msgid ""
+"Returns a weak reference to an object.\n"
+"A weak reference to an object is not enough to keep the object alive: when "
+"the only remaining references to a referent are weak references, garbage "
+"collection is free to destroy the referent and reuse its memory for "
+"something else. However, until the object is actually destroyed the weak "
+"reference may return the object even if there are no strong references to it."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1133
+msgid ""
+"Wraps float [code]value[/code] between [code]min[/code] and [code]max[/"
+"code].\n"
+"Usable for creating loop-alike behavior or infinite surfaces.\n"
+"[codeblock]\n"
+"# Infinite loop between 5.0 and 9.9\n"
+"value = wrapf(value + 0.1, 5.0, 10.0)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# Infinite rotation (in radians)\n"
+"angle = wrapf(angle + 0.1, 0.0, TAU)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# Infinite rotation (in radians)\n"
+"angle = wrapf(angle + 0.1, -PI, PI)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] If [code]min[/code] is [code]0[/code], this is equivalent to "
+"[method fposmod], so prefer using that instead.\n"
+"[code]wrapf[/code] is more flexible than using the [method fposmod] approach "
+"by giving the user control over the minimum value."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1157
+msgid ""
+"Wraps integer [code]value[/code] between [code]min[/code] and [code]max[/"
+"code].\n"
+"Usable for creating loop-alike behavior or infinite surfaces.\n"
+"[codeblock]\n"
+"# Infinite loop between 5 and 9\n"
+"frame = wrapi(frame + 1, 5, 10)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# result is -2\n"
+"var result = wrapi(-6, -5, -1)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] If [code]min[/code] is [code]0[/code], this is equivalent to "
+"[method posmod], so prefer using that instead.\n"
+"[code]wrapi[/code] is more flexible than using the [method posmod] approach "
+"by giving the user control over the minimum value."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1176
+msgid ""
+"Stops the function execution and returns the current suspended state to the "
+"calling function.\n"
+"From the caller, call [method GDScriptFunctionState.resume] on the state to "
+"resume execution. This invalidates the state. Within the resumed function, "
+"[code]yield()[/code] returns whatever was passed to the [code]resume()[/"
+"code] function call.\n"
+"If passed an object and a signal, the execution is resumed when the object "
+"emits the given signal. In this case, [code]yield()[/code] returns the "
+"argument passed to [code]emit_signal()[/code] if the signal takes only one "
+"argument, or an array containing all the arguments passed to "
+"[code]emit_signal()[/code] if the signal takes multiple arguments.\n"
+"You can also use [code]yield[/code] to wait for a function to finish:\n"
+"[codeblock]\n"
+"func _ready():\n"
+" yield(countdown(), \"completed\") # waiting for the countdown() function "
+"to complete\n"
+" print('Ready')\n"
+"\n"
+"func countdown():\n"
+" yield(get_tree(), \"idle_frame\") # returns a GDScriptFunctionState "
+"object to _ready()\n"
+" print(3)\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+" print(2)\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+" print(1)\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+"\n"
+"# prints:\n"
+"# 3\n"
+"# 2\n"
+"# 1\n"
+"# Ready\n"
+"[/codeblock]\n"
+"When yielding on a function, the [code]completed[/code] signal will be "
+"emitted automatically when the function returns. It can, therefore, be used "
+"as the [code]signal[/code] parameter of the [code]yield[/code] method to "
+"resume.\n"
+"In order to yield on a function, the resulting function should also return a "
+"[code]GDScriptFunctionState[/code]. Notice [code]yield(get_tree(), "
+"\"idle_frame\")[/code] from the above example."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1207
+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 ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1210
+msgid ""
+"The circle constant, the circumference of the unit circle in radians. This "
+"is equivalent to [code]PI * 2[/code], or 360 degrees in rotations."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1213
+msgid ""
+"Positive floating-point infinity. This is the result of floating-point "
+"division when the divisor is [code]0.0[/code]. For negative infinity, use "
+"[code]-INF[/code]. Dividing by [code]-0.0[/code] will result in negative "
+"infinity if the numerator is positive, so dividing by [code]0.0[/code] is "
+"not the same as dividing by [code]-0.0[/code] (despite [code]0.0 == -0.0[/"
+"code] returning [code]true[/code]).\n"
+"[b]Note:[/b] Numeric infinity is only a concept with floating-point numbers, "
+"and has no equivalent for integers. Dividing an integer number by [code]0[/"
+"code] will not result in [constant INF] and will result in a run-time error "
+"instead."
+msgstr ""
+
+#: modules/gdscript/doc_classes/@GDScript.xml:1217
+msgid ""
+"\"Not a Number\", an invalid floating-point value. [constant NAN] has "
+"special properties, including that it is not equal to itself ([code]NAN == "
+"NAN[/code] returns [code]false[/code]). It is output by some invalid "
+"operations, such as dividing floating-point [code]0.0[/code] by [code]0.0[/"
+"code].\n"
+"[b]Note:[/b] \"Not a Number\" is only a concept with floating-point numbers, "
+"and has no equivalent for integers. Dividing an integer [code]0[/code] by "
+"[code]0[/code] will not result in [constant NAN] and will result in a run-"
+"time error instead."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:4
+msgid "Global scope constants and variables."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:7
+msgid ""
+"Global scope constants and variables. This is all that resides in the "
+"globals, constants regarding error codes, scancodes, property hints, etc.\n"
+"Singletons are also documented here, since they can be accessed from "
+"anywhere."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:16
+msgid "The [ARVRServer] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:19
+msgid "The [AudioServer] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:22
+msgid "The [CameraServer] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:25
+msgid "The [ClassDB] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:28
+msgid "The [Engine] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:31
+msgid "The [Geometry] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:34
+msgid "The [IP] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:37
+msgid "The [Input] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:40
+msgid "The [InputMap] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:43
+msgid "The [JSON] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:46
+msgid ""
+"The [JavaClassWrapper] singleton.\n"
+"[b]Note:[/b] Only implemented on Android."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:50
+msgid ""
+"The [JavaScript] singleton.\n"
+"[b]Note:[/b] Only implemented on HTML5."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:54
+msgid "The [Marshalls] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:57
+msgid "The [EditorNavigationMeshGenerator] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:60
+msgid "The [OS] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:63
+msgid "The [Performance] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:66
+msgid "The [Physics2DServer] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:69
+msgid "The [PhysicsServer] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:72
+msgid "The [ProjectSettings] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:75
+msgid "The [ResourceLoader] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:78
+msgid "The [ResourceSaver] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:81
+msgid "The [TranslationServer] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:84
+msgid "The [VisualScriptEditor] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:87
+msgid "The [VisualServer] singleton."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:92
+msgid "Left margin, usually used for [Control] or [StyleBox]-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:95
+msgid "Top margin, usually used for [Control] or [StyleBox]-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:98
+msgid "Right margin, usually used for [Control] or [StyleBox]-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:101
+msgid ""
+"Bottom margin, usually used for [Control] or [StyleBox]-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:104
+msgid "Top-left corner."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:107
+msgid "Top-right corner."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:110
+msgid "Bottom-right corner."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:113
+msgid "Bottom-left corner."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:116
+msgid ""
+"General vertical alignment, usually used for [Separator], [ScrollBar], "
+"[Slider], etc."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:119
+msgid ""
+"General horizontal alignment, usually used for [Separator], [ScrollBar], "
+"[Slider], etc."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:122
+msgid "Horizontal left alignment, usually for text-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:125
+msgid "Horizontal center alignment, usually for text-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:128
+msgid "Horizontal right alignment, usually for text-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:131
+msgid "Vertical top alignment, usually for text-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:134
+msgid "Vertical center alignment, usually for text-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:137
+msgid "Vertical bottom alignment, usually for text-derived classes."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:140
+msgid "Scancodes with this bit applied are non-printable."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:143
+msgid "Escape key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:146
+msgid "Tab key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:149
+msgid "Shift+Tab key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:152
+msgid "Backspace key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:155
+msgid "Return key (on the main keyboard)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:158
+msgid "Enter key on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:161
+msgid "Insert key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:164
+msgid "Delete key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:167
+msgid "Pause key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:170
+msgid "Print Screen key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:173
+msgid "System Request key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:176
+msgid "Clear key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:179
+msgid "Home key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:182
+msgid "End key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:185
+msgid "Left arrow key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:188
+msgid "Up arrow key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:191
+msgid "Right arrow key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:194
+msgid "Down arrow key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:197
+msgid "Page Up key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:200
+msgid "Page Down key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:203
+msgid "Shift key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:206
+msgid "Control key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:209
+msgid "Meta key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:212
+msgid "Alt key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:215
+msgid "Caps Lock key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:218
+msgid "Num Lock key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:221
+msgid "Scroll Lock key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:224
+msgid "F1 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:227
+msgid "F2 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:230
+msgid "F3 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:233
+msgid "F4 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:236
+msgid "F5 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:239
+msgid "F6 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:242
+msgid "F7 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:245
+msgid "F8 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:248
+msgid "F9 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:251
+msgid "F10 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:254
+msgid "F11 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:257
+msgid "F12 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:260
+msgid "F13 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:263
+msgid "F14 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:266
+msgid "F15 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:269
+msgid "F16 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:272
+msgid "Multiply (*) key on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:275
+msgid "Divide (/) key on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:278
+msgid "Subtract (-) key on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:281
+msgid "Period (.) key on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:284
+msgid "Add (+) key on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:287
+msgid "Number 0 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:290
+msgid "Number 1 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:293
+msgid "Number 2 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:296
+msgid "Number 3 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:299
+msgid "Number 4 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:302
+msgid "Number 5 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:305
+msgid "Number 6 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:308
+msgid "Number 7 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:311
+msgid "Number 8 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:314
+msgid "Number 9 on the numeric keypad."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:317
+msgid "Left Super key (Windows key)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:320
+msgid "Right Super key (Windows key)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:323
+msgid "Context menu key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:326
+msgid "Left Hyper key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:329
+msgid "Right Hyper key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:332
+msgid "Help key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:335
+msgid "Left Direction key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:338
+msgid "Right Direction key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:341
+msgid ""
+"Media back key. Not to be confused with the Back button on an Android device."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:344
+msgid "Media forward key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:347 doc/classes/@GlobalScope.xml:380
+msgid "Media stop key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:350
+msgid "Media refresh key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:353
+msgid "Volume down key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:356
+msgid "Mute volume key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:359
+msgid "Volume up key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:362
+msgid "Bass Boost key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:365
+msgid "Bass up key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:368
+msgid "Bass down key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:371
+msgid "Treble up key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:374
+msgid "Treble down key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:377
+msgid "Media play key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:383
+msgid "Previous song key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:386
+msgid "Next song key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:389
+msgid "Media record key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:392
+msgid "Home page key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:395
+msgid "Favorites key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:398
+msgid "Search key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:401
+msgid "Standby key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:404
+msgid "Open URL / Launch Browser key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:407
+msgid "Launch Mail key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:410
+msgid "Launch Media key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:413
+msgid "Launch Shortcut 0 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:416
+msgid "Launch Shortcut 1 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:419
+msgid "Launch Shortcut 2 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:422
+msgid "Launch Shortcut 3 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:425
+msgid "Launch Shortcut 4 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:428
+msgid "Launch Shortcut 5 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:431
+msgid "Launch Shortcut 6 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:434
+msgid "Launch Shortcut 7 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:437
+msgid "Launch Shortcut 8 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:440
+msgid "Launch Shortcut 9 key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:443
+msgid "Launch Shortcut A key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:446
+msgid "Launch Shortcut B key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:449
+msgid "Launch Shortcut C key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:452
+msgid "Launch Shortcut D key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:455
+msgid "Launch Shortcut E key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:458
+msgid "Launch Shortcut F key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:461
+msgid "Unknown key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:464
+msgid "Space key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:467
+msgid "! key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:470
+msgid "\" key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:473
+msgid "# key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:476
+msgid "$ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:479
+msgid "% key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:482
+msgid "& key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:485
+msgid "' key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:488
+msgid "( key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:491
+msgid ") key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:494
+msgid "* key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:497
+msgid "+ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:500
+msgid ", key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:503
+msgid "- key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:506
+msgid ". key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:509
+msgid "/ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:512
+msgid "Number 0."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:515
+msgid "Number 1."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:518
+msgid "Number 2."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:521
+msgid "Number 3."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:524
+msgid "Number 4."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:527
+msgid "Number 5."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:530
+msgid "Number 6."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:533
+msgid "Number 7."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:536
+msgid "Number 8."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:539
+msgid "Number 9."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:542
+msgid ": key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:545
+msgid "; key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:548
+msgid "< key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:551
+msgid "= key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:554
+msgid "> key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:557
+msgid "? key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:560
+msgid "@ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:563
+msgid "A key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:566
+msgid "B key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:569
+msgid "C key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:572
+msgid "D key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:575
+msgid "E key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:578
+msgid "F key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:581
+msgid "G key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:584
+msgid "H key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:587
+msgid "I key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:590
+msgid "J key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:593
+msgid "K key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:596
+msgid "L key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:599
+msgid "M key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:602
+msgid "N key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:605
+msgid "O key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:608
+msgid "P key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:611
+msgid "Q key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:614
+msgid "R key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:617
+msgid "S key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:620
+msgid "T key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:623
+msgid "U key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:626
+msgid "V key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:629
+msgid "W key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:632
+msgid "X key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:635
+msgid "Y key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:638
+msgid "Z key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:641
+msgid "[ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:644
+msgid "\\ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:647
+msgid "] key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:650
+msgid "^ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:653
+msgid "_ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:656
+msgid "` key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:659
+msgid "{ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:662
+msgid "| key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:665
+msgid "} key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:668
+msgid "~ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:671
+msgid "Non-breakable space key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:674
+msgid "¡ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:677
+msgid "¢ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:680
+msgid "£ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:683
+msgid "¤ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:686
+msgid "Â¥ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:689
+msgid "¦ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:692
+msgid "§ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:695
+msgid "¨ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:698
+msgid "© key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:701
+msgid "ª key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:704
+msgid "« key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:707
+msgid "¬ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:710
+msgid "Soft hyphen key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:713
+msgid "® key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:716
+msgid "¯ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:719
+msgid "° key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:722
+msgid "± key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:725
+msgid "² key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:728
+msgid "³ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:731
+msgid "´ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:734
+msgid "µ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:737
+msgid "¶ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:740
+msgid "· key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:743
+msgid "¸ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:746
+msgid "¹ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:749
+msgid "º key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:752
+msgid "» key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:755
+msgid "¼ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:758
+msgid "½ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:761
+msgid "¾ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:764
+msgid "¿ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:767
+msgid "À key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:770
+msgid "Ã key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:773
+msgid "Â key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:776
+msgid "Ã key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:779
+msgid "Ä key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:782
+msgid "Ã… key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:785
+msgid "Æ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:788
+msgid "Ç key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:791
+msgid "È key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:794
+msgid "É key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:797
+msgid "Ê key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:800
+msgid "Ë key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:803
+msgid "Ì key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:806
+msgid "Ã key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:809
+msgid "ÃŽ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:812
+msgid "Ã key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:815
+msgid "Ã key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:818
+msgid "Ñ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:821
+msgid "Ã’ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:824
+msgid "Ó key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:827
+msgid "Ô key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:830
+msgid "Õ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:833
+msgid "Ö key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:836
+msgid "× key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:839
+msgid "Ø key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:842
+msgid "Ù key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:845
+msgid "Ú key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:848
+msgid "Û key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:851
+msgid "Ü key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:854
+msgid "Ã key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:857
+msgid "Þ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:860
+msgid "ß key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:863
+msgid "÷ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:866
+msgid "ÿ key."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:869
+msgid "Key Code mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:872
+msgid "Modifier key mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:875
+msgid "Shift key mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:878
+msgid "Alt key mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:881
+msgid "Meta key mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:884
+msgid "Ctrl key mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:887
+msgid ""
+"Command key mask. On macOS, this is equivalent to [constant KEY_MASK_META]. "
+"On other platforms, this is equivalent to [constant KEY_MASK_CTRL]. This "
+"mask should be preferred to [constant KEY_MASK_META] or [constant "
+"KEY_MASK_CTRL] for system shortcuts as it handles all platforms correctly."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:890
+msgid "Keypad key mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:893
+msgid "Group Switch key mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:896
+msgid "Left mouse button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:899
+msgid "Right mouse button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:902
+msgid "Middle mouse button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:905
+msgid "Extra mouse button 1 (only present on some mice)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:908
+msgid "Extra mouse button 2 (only present on some mice)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:911
+msgid "Mouse wheel up."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:914
+msgid "Mouse wheel down."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:917
+msgid "Mouse wheel left button (only present on some mice)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:920
+msgid "Mouse wheel right button (only present on some mice)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:923
+msgid "Left mouse button mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:926
+msgid "Right mouse button mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:929
+msgid "Middle mouse button mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:932
+msgid "Extra mouse button 1 mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:935
+msgid "Extra mouse button 2 mask."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:938
+msgid "Invalid button or axis."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:941
+msgid "Gamepad button 0."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:944
+msgid "Gamepad button 1."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:947
+msgid "Gamepad button 2."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:950
+msgid "Gamepad button 3."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:953
+msgid "Gamepad button 4."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:956
+msgid "Gamepad button 5."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:959
+msgid "Gamepad button 6."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:962
+msgid "Gamepad button 7."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:965
+msgid "Gamepad button 8."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:968
+msgid "Gamepad button 9."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:971
+msgid "Gamepad button 10."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:974
+msgid "Gamepad button 11."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:977
+msgid "Gamepad button 12."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:980
+msgid "Gamepad button 13."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:983
+msgid "Gamepad button 14."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:986
+msgid "Gamepad button 15."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:989
+msgid "Gamepad button 16."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:992
+msgid "Gamepad button 17."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:995
+msgid "Gamepad button 18."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:998
+msgid "Gamepad button 19."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1001
+msgid "Gamepad button 20."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1004
+msgid "Gamepad button 21."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1007
+msgid "Gamepad button 22."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1010
+msgid "Represents the maximum number of joystick buttons supported."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1013
+msgid "DualShock circle button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1016
+msgid "DualShock X button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1019
+msgid "DualShock square button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1022
+msgid "DualShock triangle button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1025
+msgid "Xbox controller B button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1028
+msgid "Xbox controller A button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1031
+msgid "Xbox controller X button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1034
+msgid "Xbox controller Y button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1037
+msgid "Nintendo controller A button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1040
+msgid "Nintendo controller B button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1043
+msgid "Nintendo controller X button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1046
+msgid "Nintendo controller Y button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1049
+msgid "Grip (side) buttons on a VR controller."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1052
+msgid "Push down on the touchpad or main joystick on a VR controller."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1055
+msgid "Trigger on a VR controller."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1058
+msgid ""
+"A button on the right Oculus Touch controller, X button on the left "
+"controller (also when used in OpenVR)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1061
+msgid ""
+"B button on the right Oculus Touch controller, Y button on the left "
+"controller (also when used in OpenVR)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1064
+msgid "Menu button on either Oculus Touch controller."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1067
+msgid "Menu button in OpenVR (Except when Oculus Touch controllers are used)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1070
+msgid "Gamepad button Select."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1073
+msgid "Gamepad button Start."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1076
+msgid "Gamepad DPad up."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1079
+msgid "Gamepad DPad down."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1082
+msgid "Gamepad DPad left."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1085
+msgid "Gamepad DPad right."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1088
+msgid "Gamepad SDL guide button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1091
+msgid "Gamepad SDL miscellaneous button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1094
+msgid "Gamepad SDL paddle 1 button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1097
+msgid "Gamepad SDL paddle 2 button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1100
+msgid "Gamepad SDL paddle 3 button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1103
+msgid "Gamepad SDL paddle 4 button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1106
+msgid "Gamepad SDL touchpad button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1109
+msgid "Gamepad left Shoulder button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1112
+msgid "Gamepad left trigger."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1115
+msgid "Gamepad left stick click."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1118
+msgid "Gamepad right Shoulder button."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1121
+msgid "Gamepad right trigger."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1124
+msgid "Gamepad right stick click."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1127 doc/classes/@GlobalScope.xml:1160
+msgid "Gamepad left stick horizontal axis."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1130 doc/classes/@GlobalScope.xml:1163
+msgid "Gamepad left stick vertical axis."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1133 doc/classes/@GlobalScope.xml:1166
+msgid "Gamepad right stick horizontal axis."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1136 doc/classes/@GlobalScope.xml:1169
+msgid "Gamepad right stick vertical axis."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1139
+msgid "Generic gamepad axis 4."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1142
+msgid "Generic gamepad axis 5."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1145
+msgid "Gamepad left trigger analog axis."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1148
+msgid "Gamepad right trigger analog axis."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1151
+msgid "Generic gamepad axis 8."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1154
+msgid "Generic gamepad axis 9."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1157
+msgid "Represents the maximum number of joystick axes supported."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1172
+msgid "Gamepad left analog trigger."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1175
+msgid "Gamepad right analog trigger."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1178
+msgid "VR Controller analog trigger."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1181
+msgid "VR Controller analog grip (side buttons)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1184
+msgid ""
+"OpenVR touchpad X axis (Joystick axis on Oculus Touch and Windows MR "
+"controllers)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1187
+msgid ""
+"OpenVR touchpad Y axis (Joystick axis on Oculus Touch and Windows MR "
+"controllers)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1190
+msgid "MIDI note OFF message."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1193
+msgid "MIDI note ON message."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1196
+msgid "MIDI aftertouch message."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1199
+msgid "MIDI control change message."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1202
+msgid "MIDI program change message."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1205
+msgid "MIDI channel pressure message."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1208
+msgid "MIDI pitch bend message."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1211
+msgid ""
+"Methods that return [enum Error] return [constant OK] when no error "
+"occurred. Note that many functions don't return an error code but will print "
+"error messages to standard output.\n"
+"Since [constant OK] has value 0, and all other failure codes are positive "
+"integers, it can also be used in boolean checks, e.g.:\n"
+"[codeblock]\n"
+"var err = method_that_returns_error()\n"
+"if err != OK:\n"
+" print(\"Failure!\")\n"
+"# Or, equivalent:\n"
+"if err:\n"
+" print(\"Still failing!\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1223
+msgid "Generic error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1226
+msgid "Unavailable error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1229
+msgid "Unconfigured error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1232
+msgid "Unauthorized error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1235
+msgid "Parameter range error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1238
+msgid "Out of memory (OOM) error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1241
+msgid "File: Not found error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1244
+msgid "File: Bad drive error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1247
+msgid "File: Bad path error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1250
+msgid "File: No permission error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1253
+msgid "File: Already in use error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1256
+msgid "File: Can't open error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1259
+msgid "File: Can't write error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1262
+msgid "File: Can't read error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1265
+msgid "File: Unrecognized error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1268
+msgid "File: Corrupt error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1271
+msgid "File: Missing dependencies error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1274
+msgid "File: End of file (EOF) error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1277
+msgid "Can't open error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1280
+msgid "Can't create error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1283
+msgid "Query failed error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1286
+msgid "Already in use error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1289
+msgid "Locked error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1292
+msgid "Timeout error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1295
+msgid "Can't connect error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1298
+msgid "Can't resolve error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1301
+msgid "Connection error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1304
+msgid "Can't acquire resource error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1307
+msgid "Can't fork process error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1310
+msgid "Invalid data error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1313
+msgid "Invalid parameter error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1316
+msgid "Already exists error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1319
+msgid "Does not exist error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1322
+msgid "Database: Read error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1325
+msgid "Database: Write error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1328
+msgid "Compilation failed error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1331
+msgid "Method not found error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1334
+msgid "Linking failed error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1337
+msgid "Script failed error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1340
+msgid "Cycling link (import cycle) error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1343
+msgid "Invalid declaration error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1346
+msgid "Duplicate symbol error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1349
+msgid "Parse error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1352
+msgid "Busy error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1355
+msgid "Skip error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1358
+msgid "Help error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1361
+msgid "Bug error."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1364
+msgid ""
+"Printer on fire error. (This is an easter egg, no engine methods return this "
+"error code.)"
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1367
+msgid "No hint for the edited property."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1370
+msgid ""
+"Hints that an integer or float property should be within a range specified "
+"via the hint string [code]\"min,max\"[/code] or [code]\"min,max,step\"[/"
+"code]. The hint string can optionally include [code]\"or_greater\"[/code] "
+"and/or [code]\"or_lesser\"[/code] to allow manual input going respectively "
+"above the max or below the min values. Example: [code]\"-360,360,1,"
+"or_greater,or_lesser\"[/code]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1373
+msgid ""
+"Hints that a float property should be within an exponential range specified "
+"via the hint string [code]\"min,max\"[/code] or [code]\"min,max,step\"[/"
+"code]. The hint string can optionally include [code]\"or_greater\"[/code] "
+"and/or [code]\"or_lesser\"[/code] to allow manual input going respectively "
+"above the max or below the min values. Example: [code]\"0.01,100,0.01,"
+"or_greater\"[/code]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1376
+msgid ""
+"Hints that an integer, float or string property is an enumerated value to "
+"pick in a list specified via a hint string such as [code]\"Hello,Something,"
+"Else\"[/code]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1379
+msgid ""
+"Hints that a float property should be edited via an exponential easing "
+"function. The hint string can include [code]\"attenuation\"[/code] to flip "
+"the curve horizontally and/or [code]\"inout\"[/code] to also include in/out "
+"easing."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1382 doc/classes/@GlobalScope.xml:1385
+msgid "Deprecated hint, unused."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1388
+msgid ""
+"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]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1391
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"render layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1394
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"physics layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1397
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"render layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1400
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"physics layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1403
+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]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1406
+msgid ""
+"Hints that a string property is a path to a directory. Editing it will show "
+"a file dialog for picking the path."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1409
+msgid ""
+"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]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1412
+msgid ""
+"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."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1415
+msgid ""
+"Hints that a property is an instance of a [Resource]-derived type, "
+"optionally specified via the hint string (e.g. [code]\"Texture\"[/code]). "
+"Editing it will show a popup menu of valid resource types to instantiate."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1418
+msgid ""
+"Hints that a string property is text with line breaks. Editing it will show "
+"a text input field where line breaks can be typed."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1421
+msgid ""
+"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."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1424
+msgid ""
+"Hints that a color property should be edited without changing its alpha "
+"component, i.e. only R, G and B channels are edited."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1427
+msgid "Hints that an image is compressed using lossy compression."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1430
+msgid "Hints that an image is compressed using lossless compression."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1433
+msgid "The property is serialized and saved in the scene file (default)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1436
+msgid "The property is shown in the editor inspector (default)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1439 doc/classes/@GlobalScope.xml:1442
+msgid "Deprecated usage flag, unused."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1445
+msgid "The property can be checked in the editor inspector."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1448
+msgid "The property is checked in the editor inspector."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1451
+msgid "The property is a translatable string."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1454
+msgid "Used to group properties together in the editor."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1457
+msgid "Used to categorize properties together in the editor."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1460
+msgid "The property does not save its state in [PackedScene]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1463
+msgid "Editing the property prompts the user for restarting the editor."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1466
+msgid ""
+"The property is a script variable which should be serialized and saved in "
+"the scene file."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1469
+msgid "Default usage (storage, editor and network)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1472
+msgid ""
+"Default usage for translatable strings (storage, editor, network and "
+"internationalized)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1475
+msgid ""
+"Default usage but without showing the property in the editor (storage, "
+"network)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1478
+msgid "Flag for a normal method."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1481
+msgid "Flag for an editor method."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1484 doc/classes/@GlobalScope.xml:1490
+#: doc/classes/@GlobalScope.xml:1496
+msgid "Deprecated method flag, unused."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1487
+msgid "Flag for a constant method."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1493
+msgid "Flag for a virtual method."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1499
+msgid "Default method flags."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1502
+msgid "Variable is [code]null[/code]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1505
+msgid "Variable is of type [bool]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1508
+msgid "Variable is of type [int]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1511
+msgid "Variable is of type [float] (real)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1514
+msgid "Variable is of type [String]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1517
+msgid "Variable is of type [Vector2]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1520
+msgid "Variable is of type [Rect2]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1523
+msgid "Variable is of type [Vector3]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1526
+msgid "Variable is of type [Transform2D]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1529
+msgid "Variable is of type [Plane]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1532
+msgid "Variable is of type [Quat]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1535
+msgid "Variable is of type [AABB]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1538
+msgid "Variable is of type [Basis]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1541
+msgid "Variable is of type [Transform]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1544
+msgid "Variable is of type [Color]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1547
+msgid "Variable is of type [NodePath]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1550
+msgid "Variable is of type [RID]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1553
+msgid "Variable is of type [Object]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1556
+msgid "Variable is of type [Dictionary]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1559
+msgid "Variable is of type [Array]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1562
+msgid "Variable is of type [PoolByteArray]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1565
+msgid "Variable is of type [PoolIntArray]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1568
+msgid "Variable is of type [PoolRealArray]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1571
+msgid "Variable is of type [PoolStringArray]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1574
+msgid "Variable is of type [PoolVector2Array]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1577
+msgid "Variable is of type [PoolVector3Array]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1580
+msgid "Variable is of type [PoolColorArray]."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1583
+msgid "Represents the size of the [enum Variant.Type] enum."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1586
+msgid "Equality operator ([code]==[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1589
+msgid "Inequality operator ([code]!=[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1592
+msgid "Less than operator ([code]<[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1595
+msgid "Less than or equal operator ([code]<=[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1598
+msgid "Greater than operator ([code]>[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1601
+msgid "Greater than or equal operator ([code]>=[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1604
+msgid "Addition operator ([code]+[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1607
+msgid "Subtraction operator ([code]-[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1610
+msgid "Multiplication operator ([code]*[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1613
+msgid "Division operator ([code]/[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1616
+msgid "Unary negation operator ([code]-[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1619
+msgid "Unary plus operator ([code]+[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1622
+msgid "Remainder/modulo operator ([code]%[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1625
+msgid "String concatenation operator ([code]+[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1628
+msgid "Left shift operator ([code]<<[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1631
+msgid "Right shift operator ([code]>>[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1634
+msgid "Bitwise AND operator ([code]&[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1637
+msgid "Bitwise OR operator ([code]|[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1640
+msgid "Bitwise XOR operator ([code]^[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1643
+msgid "Bitwise NOT operator ([code]~[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1646
+msgid "Logical AND operator ([code]and[/code] or [code]&&[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1649
+msgid "Logical OR operator ([code]or[/code] or [code]||[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1652
+msgid "Logical XOR operator (not implemented in GDScript)."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1655
+msgid "Logical NOT operator ([code]not[/code] or [code]![/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1658
+msgid "Logical IN operator ([code]in[/code])."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml:1661
+msgid "Represents the size of the [enum Variant.Operator] enum."
+msgstr ""
+
+#: doc/classes/AABB.xml:4
+msgid "Axis-Aligned Bounding Box."
+msgstr ""
+
+#: doc/classes/AABB.xml:7
+msgid ""
+"[AABB] consists of a position, a size, and several utility functions. It is "
+"typically used for fast overlap tests.\n"
+"It uses floating-point coordinates. The 2D counterpart to [AABB] is "
+"[Rect2].\n"
+"[b]Note:[/b] Unlike [Rect2], [AABB] does not have a variant that uses "
+"integer coordinates."
+msgstr ""
+
+#: doc/classes/AABB.xml:12 doc/classes/Basis.xml:13 doc/classes/Plane.xml:10
+#: doc/classes/Rect2.xml:12 doc/classes/Transform.xml:11
+#: doc/classes/Transform2D.xml:11 doc/classes/Vector2.xml:11
+#: doc/classes/Vector3.xml:11
+msgid "https://docs.godotengine.org/en/3.4/tutorials/math/index.html"
+msgstr ""
+
+#: doc/classes/AABB.xml:13 doc/classes/Rect2.xml:13 doc/classes/Vector2.xml:12
+#: doc/classes/Vector3.xml:12
+msgid "https://docs.godotengine.org/en/3.4/tutorials/math/vector_math.html"
+msgstr ""
+
+#: doc/classes/AABB.xml:14 doc/classes/Rect2.xml:14 doc/classes/Vector2.xml:13
+#: doc/classes/Vector3.xml:13
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/math/vectors_advanced.html"
+msgstr ""
+
+#: doc/classes/AABB.xml:22
+msgid "Constructs an [AABB] from a position and size."
+msgstr ""
+
+#: doc/classes/AABB.xml:28
+msgid ""
+"Returns an AABB with equivalent position and size, modified so that the most-"
+"negative corner is the origin and the size is positive."
+msgstr ""
+
+#: doc/classes/AABB.xml:35
+msgid ""
+"Returns [code]true[/code] if this [AABB] completely encloses another one."
+msgstr ""
+
+#: doc/classes/AABB.xml:42
+msgid "Returns this [AABB] expanded to include a given point."
+msgstr ""
+
+#: doc/classes/AABB.xml:48
+msgid "Returns the volume of the [AABB]."
+msgstr ""
+
+#: doc/classes/AABB.xml:55
+msgid "Gets the position of the 8 endpoints of the [AABB] in space."
+msgstr ""
+
+#: doc/classes/AABB.xml:61
+msgid "Returns the normalized longest axis of the [AABB]."
+msgstr ""
+
+#: doc/classes/AABB.xml:67
+msgid ""
+"Returns the index of the longest axis of the [AABB] (according to "
+"[Vector3]'s [code]AXIS_*[/code] constants)."
+msgstr ""
+
+#: doc/classes/AABB.xml:73
+msgid "Returns the scalar length of the longest axis of the [AABB]."
+msgstr ""
+
+#: doc/classes/AABB.xml:79
+msgid "Returns the normalized shortest axis of the [AABB]."
+msgstr ""
+
+#: doc/classes/AABB.xml:85
+msgid ""
+"Returns the index of the shortest axis of the [AABB] (according to "
+"[Vector3]::AXIS* enum)."
+msgstr ""
+
+#: doc/classes/AABB.xml:91
+msgid "Returns the scalar length of the shortest axis of the [AABB]."
+msgstr ""
+
+#: doc/classes/AABB.xml:98
+msgid ""
+"Returns the support point in a given direction. This is useful for collision "
+"detection algorithms."
+msgstr ""
+
+#: doc/classes/AABB.xml:105
+msgid ""
+"Returns a copy of the [AABB] grown a given amount of units towards all the "
+"sides."
+msgstr ""
+
+#: doc/classes/AABB.xml:111
+msgid "Returns [code]true[/code] if the [AABB] is flat or empty."
+msgstr ""
+
+#: doc/classes/AABB.xml:117
+msgid "Returns [code]true[/code] if the [AABB] is empty."
+msgstr ""
+
+#: doc/classes/AABB.xml:124
+msgid "Returns [code]true[/code] if the [AABB] contains a point."
+msgstr ""
+
+#: doc/classes/AABB.xml:131
+msgid ""
+"Returns the intersection between two [AABB]. An empty AABB (size 0,0,0) is "
+"returned on failure."
+msgstr ""
+
+#: doc/classes/AABB.xml:138
+msgid "Returns [code]true[/code] if the [AABB] overlaps with another."
+msgstr ""
+
+#: doc/classes/AABB.xml:145
+msgid "Returns [code]true[/code] if the [AABB] is on both sides of a plane."
+msgstr ""
+
+#: doc/classes/AABB.xml:153
+msgid ""
+"Returns [code]true[/code] if the [AABB] intersects the line segment between "
+"[code]from[/code] and [code]to[/code]."
+msgstr ""
+
+#: doc/classes/AABB.xml:160
+msgid ""
+"Returns [code]true[/code] if this [AABB] and [code]aabb[/code] are "
+"approximately equal, by calling [method @GDScript.is_equal_approx] on each "
+"component."
+msgstr ""
+
+#: doc/classes/AABB.xml:167
+msgid ""
+"Returns a larger [AABB] that contains both this [AABB] and [code]with[/code]."
+msgstr ""
+
+#: doc/classes/AABB.xml:173 doc/classes/Rect2.xml:132
+msgid ""
+"Ending corner. This is calculated as [code]position + size[/code]. Setting "
+"this value will change the size."
+msgstr ""
+
+#: doc/classes/AABB.xml:176 doc/classes/Rect2.xml:135
+msgid "Beginning corner. Typically has values lower than [member end]."
+msgstr ""
+
+#: doc/classes/AABB.xml:179 doc/classes/Rect2.xml:138
+msgid ""
+"Size from [member position] to [member end]. Typically, all components are "
+"positive.\n"
+"If the size is negative, you can use [method abs] to fix it."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:4
+msgid "Base dialog for user notification."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:7
+msgid ""
+"This dialog is useful for small notifications to the user about an event. It "
+"can only be accepted or closed, with the same result."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:18
+msgid ""
+"Adds a button with label [code]text[/code] and a custom [code]action[/code] "
+"to the dialog and returns the created button. [code]action[/code] will be "
+"passed to the [signal custom_action] signal when pressed.\n"
+"If [code]true[/code], [code]right[/code] will place the button to the right "
+"of any sibling buttons.\n"
+"You can use [method remove_button] method to remove a button created with "
+"this method from the dialog."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:27
+msgid ""
+"Adds a button with label [code]name[/code] and a cancel action to the dialog "
+"and returns the created button.\n"
+"You can use [method remove_button] method to remove a button created with "
+"this method from the dialog."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:34
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:49
+msgid ""
+"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
+"dialog will be accepted."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:56
+msgid ""
+"Removes the [code]button[/code] from the dialog. Does NOT free the "
+"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
+"[method add_button] or [method add_cancel] method. After removal, pressing "
+"the [code]button[/code] will no longer emit this dialog's [signal "
+"custom_action] signal or cancel this dialog."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:62
+msgid "Sets autowrapping for the text in the dialog."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:65
+msgid ""
+"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
+"You can set it to [code]false[/code] if you want to do e.g. input validation "
+"when receiving the [signal confirmed] signal, and handle hiding the dialog "
+"in your own logic.\n"
+"[b]Note:[/b] Some nodes derived from this class can have a different default "
+"value, and potentially their own built-in logic overriding this setting. For "
+"example [FileDialog] defaults to [code]false[/code], and has its own input "
+"validation code that is called when you press OK, which eventually hides the "
+"dialog if the input is valid. As such, this property can't be used in "
+"[FileDialog] to disable hiding the dialog when pressing OK."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:69
+msgid "The text displayed by the dialog."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:76
+msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
+msgstr ""
+
+#: doc/classes/AcceptDialog.xml:82
+msgid "Emitted when a custom button is pressed. See [method add_button]."
+msgstr ""
+
+#: doc/classes/AESContext.xml:4
+msgid "Interface to low level AES encryption features."
+msgstr ""
+
+#: doc/classes/AESContext.xml:7
+msgid ""
+"This class provides access to AES encryption/decryption of raw data. Both "
+"AES-ECB and AES-CBC mode are supported.\n"
+"[codeblock]\n"
+"extends Node\n"
+"\n"
+"var aes = AESContext.new()\n"
+"\n"
+"func _ready():\n"
+" var key = \"My secret key!!!\" # Key must be either 16 or 32 bytes.\n"
+" var data = \"My secret text!!\" # Data size must be multiple of 16 "
+"bytes, apply padding if needed.\n"
+" # Encrypt ECB\n"
+" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n"
+" var encrypted = aes.update(data.to_utf8())\n"
+" aes.finish()\n"
+" # Decrypt ECB\n"
+" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n"
+" var decrypted = aes.update(encrypted)\n"
+" aes.finish()\n"
+" # Check ECB\n"
+" assert(decrypted == data.to_utf8())\n"
+"\n"
+" var iv = \"My secret iv!!!!\" # IV must be of exactly 16 bytes.\n"
+" # Encrypt CBC\n"
+" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n"
+" encrypted = aes.update(data.to_utf8())\n"
+" aes.finish()\n"
+" # Decrypt CBC\n"
+" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n"
+" decrypted = aes.update(encrypted)\n"
+" aes.finish()\n"
+" # Check CBC\n"
+" assert(decrypted == data.to_utf8())\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AESContext.xml:46
+msgid "Close this AES context so it can be started again. See [method start]."
+msgstr ""
+
+#: doc/classes/AESContext.xml:52
+msgid ""
+"Get the current IV state for this context (IV gets updated when calling "
+"[method update]). You normally don't need this function.\n"
+"[b]Note:[/b] This function only makes sense when the context is started with "
+"[constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT]."
+msgstr ""
+
+#: doc/classes/AESContext.xml:62
+msgid ""
+"Start the AES context in the given [code]mode[/code]. A [code]key[/code] of "
+"either 16 or 32 bytes must always be provided, while an [code]iv[/code] "
+"(initialization vector) of exactly 16 bytes, is only needed when [code]mode[/"
+"code] is either [constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT]."
+msgstr ""
+
+#: doc/classes/AESContext.xml:69
+msgid ""
+"Run the desired operation for this AES context. Will return a "
+"[PoolByteArray] containing the result of encrypting (or decrypting) the "
+"given [code]src[/code]. See [method start] for mode of operation.\n"
+"[b]Note:[/b] The size of [code]src[/code] must be a multiple of 16. Apply "
+"some padding if needed."
+msgstr ""
+
+#: doc/classes/AESContext.xml:76
+msgid "AES electronic codebook encryption mode."
+msgstr ""
+
+#: doc/classes/AESContext.xml:79
+msgid "AES electronic codebook decryption mode."
+msgstr ""
+
+#: doc/classes/AESContext.xml:82
+msgid "AES cipher blocker chaining encryption mode."
+msgstr ""
+
+#: doc/classes/AESContext.xml:85
+msgid "AES cipher blocker chaining decryption mode."
+msgstr ""
+
+#: doc/classes/AESContext.xml:88
+msgid "Maximum value for the mode enum."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:4
+msgid "Sprite node that can use multiple textures for animation."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:7
+msgid ""
+"Animations are created using a [SpriteFrames] resource, which can be "
+"configured in the editor via the SpriteFrames panel.\n"
+"[b]Note:[/b] You can associate a set of normal maps by creating additional "
+"[SpriteFrames] resources with a [code]_normal[/code] suffix. For example, "
+"having 2 [SpriteFrames] resources [code]run[/code] and [code]run_normal[/"
+"code] will make it so the [code]run[/code] animation uses the normal map."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:11 doc/classes/AnimatedSprite3D.xml:10
+#: doc/classes/AnimationPlayer.xml:13
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/2d/2d_sprite_animation.html"
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:12 doc/classes/Area2D.xml:11
+#: doc/classes/AudioStreamPlayer.xml:12 doc/classes/Button.xml:24
+#: doc/classes/CanvasLayer.xml:12 doc/classes/CollisionShape2D.xml:11
+#: doc/classes/ColorRect.xml:10 doc/classes/Input.xml:11
+#: doc/classes/InputEvent.xml:12 doc/classes/InputEventAction.xml:11
+#: doc/classes/Label.xml:12 doc/classes/Particles2D.xml:15
+#: doc/classes/Timer.xml:11 doc/classes/VisibilityNotifier2D.xml:12
+msgid "https://godotengine.org/asset-library/asset/515"
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:18 doc/classes/AnimatedSprite3D.xml:16
+msgid "Returns [code]true[/code] if an animation is currently being played."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:26
+msgid ""
+"Plays the animation named [code]anim[/code]. If no [code]anim[/code] is "
+"provided, the current animation is played. If [code]backwards[/code] is "
+"[code]true[/code], the animation will be played in reverse."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:32 doc/classes/AnimatedSprite3D.xml:29
+msgid "Stops the current animation (does not reset the frame counter)."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:38 doc/classes/AnimatedSprite3D.xml:35
+msgid ""
+"The current animation from the [code]frames[/code] resource. If this value "
+"changes, the [code]frame[/code] counter is reset."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:41 doc/classes/SpriteBase3D.xml:48
+msgid "If [code]true[/code], texture will be centered."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:44 doc/classes/Sprite.xml:39
+#: doc/classes/SpriteBase3D.xml:54 doc/classes/TextureButton.xml:21
+#: doc/classes/TextureRect.xml:20
+msgid "If [code]true[/code], texture is flipped horizontally."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:47 doc/classes/Sprite.xml:42
+#: doc/classes/SpriteBase3D.xml:57 doc/classes/TextureButton.xml:24
+#: doc/classes/TextureRect.xml:23
+msgid "If [code]true[/code], texture is flipped vertically."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:50 doc/classes/AnimatedSprite3D.xml:38
+msgid "The displayed animation frame's index."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:53 doc/classes/AnimatedSprite3D.xml:41
+msgid "The [SpriteFrames] resource containing the animation(s)."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:56 doc/classes/Sprite.xml:58
+#: doc/classes/SpriteBase3D.xml:63
+msgid "The texture's drawing offset."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:59 doc/classes/AnimatedSprite3D.xml:44
+msgid "If [code]true[/code], the [member animation] is currently playing."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:62
+msgid "The animation speed is multiplied by this value."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:68 doc/classes/AnimatedSprite3D.xml:50
+msgid ""
+"Emitted when the animation is finished (when it plays the last frame). If "
+"the animation is looping, this signal is emitted every time the last frame "
+"is drawn."
+msgstr ""
+
+#: doc/classes/AnimatedSprite.xml:73 doc/classes/AnimatedSprite3D.xml:55
+msgid "Emitted when [member frame] changed."
+msgstr ""
+
+#: doc/classes/AnimatedSprite3D.xml:4
+msgid ""
+"2D sprite node in 3D world, that can use multiple 2D textures for animation."
+msgstr ""
+
+#: doc/classes/AnimatedSprite3D.xml:7
+msgid ""
+"Animations are created using a [SpriteFrames] resource, which can be "
+"configured in the editor via the SpriteFrames panel."
+msgstr ""
+
+#: doc/classes/AnimatedSprite3D.xml:23
+msgid ""
+"Plays the animation named [code]anim[/code]. If no [code]anim[/code] is "
+"provided, the current animation is played."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:4
+msgid "Proxy texture for simple frame-based animations."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:7
+msgid ""
+"[AnimatedTexture] is a resource format for frame-based animations, where "
+"multiple textures can be chained automatically with a predefined delay for "
+"each frame. Unlike [AnimationPlayer] or [AnimatedSprite], it isn't a [Node], "
+"but has the advantage of being usable anywhere a [Texture] resource can be "
+"used, e.g. in a [TileSet].\n"
+"The playback of the animation is controlled by the [member fps] property as "
+"well as each frame's optional delay (see [method set_frame_delay]). The "
+"animation loops, i.e. it will restart at frame 0 automatically after playing "
+"the last frame.\n"
+"[AnimatedTexture] currently requires all frame textures to have the same "
+"size, otherwise the bigger ones will be cropped to match the smallest one.\n"
+"[b]Note:[/b] AnimatedTexture doesn't support using [AtlasTexture]s. Each "
+"frame needs to be a separate [Texture]."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:19
+msgid "Returns the given frame's delay value."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:26
+msgid "Returns the given frame's [Texture]."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:34
+msgid ""
+"Sets an additional delay (in seconds) between this frame and the next one, "
+"that will be added to the time interval defined by [member fps]. By default, "
+"frames have no delay defined. If a delay value is defined, the final time "
+"interval between this frame and the next will be [code]1.0 / fps + delay[/"
+"code].\n"
+"For example, for an animation with 3 frames, 2 FPS and a frame delay on the "
+"second frame of 1.2, the resulting playback will be:\n"
+"[codeblock]\n"
+"Frame 0: 0.5 s (1 / fps)\n"
+"Frame 1: 1.7 s (1 / fps + 1.2)\n"
+"Frame 2: 0.5 s (1 / fps)\n"
+"Total duration: 2.7 s\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:49
+msgid ""
+"Assigns a [Texture] to the given frame. Frame IDs start at 0, so the first "
+"frame has ID 0, and the last frame of the animation has ID [member frames] - "
+"1.\n"
+"You can define any number of textures up to [constant MAX_FRAMES], but keep "
+"in mind that only frames from 0 to [member frames] - 1 will be part of the "
+"animation."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:56
+msgid "Sets the currently visible frame of the texture."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:60
+msgid ""
+"Animation speed in frames per second. This value defines the default time "
+"interval between two frames of the animation, and thus the overall duration "
+"of the animation loop based on the [member frames] property. A value of 0 "
+"means no predefined number of frames per second, the animation will play "
+"according to each frame's frame delay (see [method set_frame_delay]).\n"
+"For example, an animation with 8 frames, no frame delay and a [code]fps[/"
+"code] value of 2 will run for 4 seconds, with each frame lasting 0.5 seconds."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:64
+msgid ""
+"Number of frames to use in the animation. While you can create the frames "
+"independently with [method set_frame_texture], you need to set this value "
+"for the animation to take new frames into account. The maximum number of "
+"frames is [constant MAX_FRAMES]."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:67
+msgid ""
+"If [code]true[/code], the animation will only play once and will not loop "
+"back to the first frame after reaching the end. Note that reaching the end "
+"will not set [member pause] to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:70
+msgid ""
+"If [code]true[/code], the animation will pause where it currently is (i.e. "
+"at [member current_frame]). The animation will continue from where it was "
+"paused when changing this property to [code]false[/code]."
+msgstr ""
+
+#: doc/classes/AnimatedTexture.xml:75
+msgid ""
+"The maximum number of frames supported by [AnimatedTexture]. If you need "
+"more frames in your animation, use [AnimationPlayer] or [AnimatedSprite]."
+msgstr ""
+
+#: doc/classes/Animation.xml:4
+msgid "Contains data used to animate everything in the engine."
+msgstr ""
+
+#: doc/classes/Animation.xml:7
+msgid ""
+"An Animation resource contains data used to animate everything in the "
+"engine. Animations are divided into tracks, and each track must be linked to "
+"a node. The state of that node can be changed through time, by adding timed "
+"keys (events) to the track.\n"
+"[codeblock]\n"
+"# This creates an animation that makes the node \"Enemy\" move to the right "
+"by\n"
+"# 100 pixels in 0.5 seconds.\n"
+"var animation = Animation.new()\n"
+"var track_index = animation.add_track(Animation.TYPE_VALUE)\n"
+"animation.track_set_path(track_index, \"Enemy:position:x\")\n"
+"animation.track_insert_key(track_index, 0.0, 0)\n"
+"animation.track_insert_key(track_index, 0.5, 100)\n"
+"[/codeblock]\n"
+"Animations are just data containers, and must be added to nodes such as an "
+"[AnimationPlayer] or [AnimationTreePlayer] to be played back. Animation "
+"tracks have different types, each with its own set of dedicated methods. "
+"Check [enum TrackType] to see available types."
+msgstr ""
+
+#: doc/classes/Animation.xml:20 doc/classes/AnimationPlayer.xml:12
+msgid "https://docs.godotengine.org/en/3.4/tutorials/animation/index.html"
+msgstr ""
+
+#: doc/classes/Animation.xml:28
+msgid "Adds a track to the Animation."
+msgstr ""
+
+#: doc/classes/Animation.xml:36
+msgid ""
+"Returns the animation name at the key identified by [code]key_idx[/code]. "
+"The [code]track_idx[/code] must be the index of an Animation Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:45
+msgid ""
+"Inserts a key with value [code]animation[/code] at the given [code]time[/"
+"code] (in seconds). The [code]track_idx[/code] must be the index of an "
+"Animation Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:54
+msgid ""
+"Sets the key identified by [code]key_idx[/code] to value [code]animation[/"
+"code]. The [code]track_idx[/code] must be the index of an Animation Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:62
+msgid ""
+"Returns the end offset of the key identified by [code]key_idx[/code]. The "
+"[code]track_idx[/code] must be the index of an Audio Track.\n"
+"End offset is the number of seconds cut off at the ending of the audio "
+"stream."
+msgstr ""
+
+#: doc/classes/Animation.xml:71
+msgid ""
+"Returns the start offset of the key identified by [code]key_idx[/code]. The "
+"[code]track_idx[/code] must be the index of an Audio Track.\n"
+"Start offset is the number of seconds cut off at the beginning of the audio "
+"stream."
+msgstr ""
+
+#: doc/classes/Animation.xml:80
+msgid ""
+"Returns the audio stream of the key identified by [code]key_idx[/code]. The "
+"[code]track_idx[/code] must be the index of an Audio Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:91
+msgid ""
+"Inserts an Audio Track key at the given [code]time[/code] in seconds. The "
+"[code]track_idx[/code] must be the index of an Audio Track.\n"
+"[code]stream[/code] is the [AudioStream] resource to play. "
+"[code]start_offset[/code] is the number of seconds cut off at the beginning "
+"of the audio stream, while [code]end_offset[/code] is at the ending."
+msgstr ""
+
+#: doc/classes/Animation.xml:101
+msgid ""
+"Sets the end offset of the key identified by [code]key_idx[/code] to value "
+"[code]offset[/code]. The [code]track_idx[/code] must be the index of an "
+"Audio Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:110
+msgid ""
+"Sets the start offset of the key identified by [code]key_idx[/code] to value "
+"[code]offset[/code]. The [code]track_idx[/code] must be the index of an "
+"Audio Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:119
+msgid ""
+"Sets the stream of the key identified by [code]key_idx[/code] to value "
+"[code]stream[/code]. The [code]track_idx[/code] must be the index of an "
+"Audio Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:127
+msgid ""
+"Returns the in handle of the key identified by [code]key_idx[/code]. The "
+"[code]track_idx[/code] must be the index of a Bezier Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:135
+msgid ""
+"Returns the out handle of the key identified by [code]key_idx[/code]. The "
+"[code]track_idx[/code] must be the index of a Bezier Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:143
+msgid ""
+"Returns the value of the key identified by [code]key_idx[/code]. The "
+"[code]track_idx[/code] must be the index of a Bezier Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:154
+msgid ""
+"Inserts a Bezier Track key at the given [code]time[/code] in seconds. The "
+"[code]track_idx[/code] must be the index of a Bezier Track.\n"
+"[code]in_handle[/code] is the left-side weight of the added Bezier curve "
+"point, [code]out_handle[/code] is the right-side one, while [code]value[/"
+"code] is the actual value at this point."
+msgstr ""
+
+#: doc/classes/Animation.xml:163
+msgid ""
+"Returns the interpolated value at the given [code]time[/code] (in seconds). "
+"The [code]track_idx[/code] must be the index of a Bezier Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:172
+msgid ""
+"Sets the in handle of the key identified by [code]key_idx[/code] to value "
+"[code]in_handle[/code]. The [code]track_idx[/code] must be the index of a "
+"Bezier Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:181
+msgid ""
+"Sets the out handle of the key identified by [code]key_idx[/code] to value "
+"[code]out_handle[/code]. The [code]track_idx[/code] must be the index of a "
+"Bezier Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:190
+msgid ""
+"Sets the value of the key identified by [code]key_idx[/code] to the given "
+"value. The [code]track_idx[/code] must be the index of a Bezier Track."
+msgstr ""
+
+#: doc/classes/Animation.xml:196
+msgid "Clear the animation (clear all tracks and reset all)."
+msgstr ""
+
+#: doc/classes/Animation.xml:204
+msgid ""
+"Adds a new track that is a copy of the given track from [code]to_animation[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Animation.xml:211
+msgid ""
+"Returns the index of the specified track. If the track is not found, return "
+"-1."
+msgstr ""
+
+#: doc/classes/Animation.xml:217
+msgid "Returns the amount of tracks in the animation."
+msgstr ""
+
+#: doc/classes/Animation.xml:226
+msgid ""
+"Returns all the key indices of a method track, given a position and delta "
+"time."
+msgstr ""
+
+#: doc/classes/Animation.xml:234
+msgid "Returns the method name of a method track."
+msgstr ""
+
+#: doc/classes/Animation.xml:242
+msgid ""
+"Returns the arguments values to be called on a method track for a given key "
+"in a given track."
+msgstr ""
+
+#: doc/classes/Animation.xml:249
+msgid "Removes a track by specifying the track index."
+msgstr ""
+
+#: doc/classes/Animation.xml:258
+msgid ""
+"Finds the key index by time in a given track. Optionally, only find it if "
+"the exact time is given."
+msgstr ""
+
+#: doc/classes/Animation.xml:265
+msgid ""
+"Returns [code]true[/code] if the track at [code]idx[/code] wraps the "
+"interpolation loop. New tracks wrap the interpolation loop by default."
+msgstr ""
+
+#: doc/classes/Animation.xml:272
+msgid "Returns the interpolation type of a given track."
+msgstr ""
+
+#: doc/classes/Animation.xml:279
+msgid "Returns the amount of keys in a given track."
+msgstr ""
+
+#: doc/classes/Animation.xml:287
+msgid "Returns the time at which the key is located."
+msgstr ""
+
+#: doc/classes/Animation.xml:295
+msgid ""
+"Returns the transition curve (easing) for a specific key (see the built-in "
+"math function [method @GDScript.ease])."
+msgstr ""
+
+#: doc/classes/Animation.xml:303
+msgid "Returns the value of a given key in a given track."
+msgstr ""
+
+#: doc/classes/Animation.xml:310
+msgid ""
+"Gets the path of a track. For more information on the path format, see "
+"[method track_set_path]."
+msgstr ""
+
+#: doc/classes/Animation.xml:317
+msgid "Gets the type of a track."
+msgstr ""
+
+#: doc/classes/Animation.xml:327
+msgid "Insert a generic key in a given track."
+msgstr ""
+
+#: doc/classes/Animation.xml:334
+msgid ""
+"Returns [code]true[/code] if the track at index [code]idx[/code] is enabled."
+msgstr ""
+
+#: doc/classes/Animation.xml:341
+msgid ""
+"Returns [code]true[/code] if the given track is imported. Else, return "
+"[code]false[/code]."
+msgstr ""
+
+#: doc/classes/Animation.xml:348
+msgid "Moves a track down."
+msgstr ""
+
+#: doc/classes/Animation.xml:356
+msgid ""
+"Changes the index position of track [code]idx[/code] to the one defined in "
+"[code]to_idx[/code]."
+msgstr ""
+
+#: doc/classes/Animation.xml:363
+msgid "Moves a track up."
+msgstr ""
+
+#: doc/classes/Animation.xml:371
+msgid "Removes a key by index in a given track."
+msgstr ""
+
+#: doc/classes/Animation.xml:379
+msgid "Removes a key by position (seconds) in a given track."
+msgstr ""
+
+#: doc/classes/Animation.xml:387
+msgid "Enables/disables the given track. Tracks are enabled by default."
+msgstr ""
+
+#: doc/classes/Animation.xml:395
+msgid "Sets the given track as imported or not."
+msgstr ""
+
+#: doc/classes/Animation.xml:403
+msgid ""
+"If [code]true[/code], the track at [code]idx[/code] wraps the interpolation "
+"loop."
+msgstr ""
+
+#: doc/classes/Animation.xml:411
+msgid "Sets the interpolation type of a given track."
+msgstr ""
+
+#: doc/classes/Animation.xml:420
+msgid "Sets the time of an existing key."
+msgstr ""
+
+#: doc/classes/Animation.xml:429
+msgid ""
+"Sets the transition curve (easing) for a specific key (see the built-in math "
+"function [method @GDScript.ease])."
+msgstr ""
+
+#: doc/classes/Animation.xml:438
+msgid "Sets the value of an existing key."
+msgstr ""
+
+#: doc/classes/Animation.xml:446
+msgid ""
+"Sets the path of a track. Paths must be valid scene-tree paths to a node and "
+"must be specified starting from the parent node of the node that will "
+"reproduce the animation. Tracks that control properties or bones must append "
+"their name after the path, separated by [code]\":\"[/code].\n"
+"For example, [code]\"character/skeleton:ankle\"[/code] or [code]\"character/"
+"mesh:transform/local\"[/code]."
+msgstr ""
+
+#: doc/classes/Animation.xml:455
+msgid ""
+"Swaps the track [code]idx[/code]'s index position with the track "
+"[code]with_idx[/code]."
+msgstr ""
+
+#: doc/classes/Animation.xml:466
+msgid "Insert a transform key for a transform track."
+msgstr ""
+
+#: doc/classes/Animation.xml:474
+msgid ""
+"Returns the interpolated value of a transform track at a given time (in "
+"seconds). An array consisting of 3 elements: position ([Vector3]), rotation "
+"([Quat]) and scale ([Vector3])."
+msgstr ""
+
+#: doc/classes/Animation.xml:483
+msgid ""
+"Returns all the key indices of a value track, given a position and delta "
+"time."
+msgstr ""
+
+#: doc/classes/Animation.xml:490
+msgid "Returns the update mode of a value track."
+msgstr ""
+
+#: doc/classes/Animation.xml:498
+msgid ""
+"Returns the interpolated value at the given time (in seconds). The "
+"[code]track_idx[/code] must be the index of a value track."
+msgstr ""
+
+#: doc/classes/Animation.xml:506
+msgid "Sets the update mode (see [enum UpdateMode]) of a value track."
+msgstr ""
+
+#: doc/classes/Animation.xml:512
+msgid ""
+"The total length of the animation (in seconds).\n"
+"[b]Note:[/b] Length is not delimited by the last key, as this one may be "
+"before or after the end to ensure correct interpolation and looping."
+msgstr ""
+
+#: doc/classes/Animation.xml:516
+msgid ""
+"A flag indicating that the animation must loop. This is used for correct "
+"interpolation of animation cycles, and for hinting the player that it must "
+"restart the animation."
+msgstr ""
+
+#: doc/classes/Animation.xml:519
+msgid "The animation step value."
+msgstr ""
+
+#: doc/classes/Animation.xml:525
+msgid ""
+"Emitted when there's a change in the list of tracks, e.g. tracks are added, "
+"moved or have changed paths."
+msgstr ""
+
+#: doc/classes/Animation.xml:531
+msgid ""
+"Value tracks set values in node properties, but only those which can be "
+"Interpolated."
+msgstr ""
+
+#: doc/classes/Animation.xml:534
+msgid ""
+"Transform tracks are used to change node local transforms or skeleton pose "
+"bones. Transitions are interpolated."
+msgstr ""
+
+#: doc/classes/Animation.xml:537
+msgid "Method tracks call functions with given arguments per key."
+msgstr ""
+
+#: doc/classes/Animation.xml:540
+msgid ""
+"Bezier tracks are used to interpolate a value using custom curves. They can "
+"also be used to animate sub-properties of vectors and colors (e.g. alpha "
+"value of a [Color])."
+msgstr ""
+
+#: doc/classes/Animation.xml:543
+msgid ""
+"Audio tracks are used to play an audio stream with either type of "
+"[AudioStreamPlayer]. The stream can be trimmed and previewed in the "
+"animation."
+msgstr ""
+
+#: doc/classes/Animation.xml:546
+msgid "Animation tracks play animations in other [AnimationPlayer] nodes."
+msgstr ""
+
+#: doc/classes/Animation.xml:549
+msgid "No interpolation (nearest value)."
+msgstr ""
+
+#: doc/classes/Animation.xml:552
+msgid "Linear interpolation."
+msgstr ""
+
+#: doc/classes/Animation.xml:555
+msgid "Cubic interpolation."
+msgstr ""
+
+#: doc/classes/Animation.xml:558
+msgid "Update between keyframes."
+msgstr ""
+
+#: doc/classes/Animation.xml:561
+msgid "Update at the keyframes and hold the value."
+msgstr ""
+
+#: doc/classes/Animation.xml:564
+msgid "Update at the keyframes."
+msgstr ""
+
+#: doc/classes/Animation.xml:567
+msgid ""
+"Same as linear interpolation, but also interpolates from the current value "
+"(i.e. dynamically at runtime) if the first key isn't at 0 seconds."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:4
+msgid "Base resource for [AnimationTree] nodes."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:7
+msgid ""
+"Base resource for [AnimationTree] nodes. In general, it's not used directly, "
+"but you can create custom ones with custom blending formulas.\n"
+"Inherit this when creating nodes mainly for use in [AnimationNodeBlendTree], "
+"otherwise [AnimationRootNode] should be used instead."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:11 doc/classes/AnimationNodeAdd2.xml:10
+#: doc/classes/AnimationNodeAdd3.xml:14
+#: doc/classes/AnimationNodeAnimation.xml:10
+#: doc/classes/AnimationNodeBlend2.xml:10
+#: doc/classes/AnimationNodeBlend3.xml:14
+#: doc/classes/AnimationNodeBlendSpace1D.xml:13
+#: doc/classes/AnimationNodeBlendSpace2D.xml:12
+#: doc/classes/AnimationNodeBlendTree.xml:10
+#: doc/classes/AnimationNodeOneShot.xml:10
+#: doc/classes/AnimationNodeOutput.xml:9
+#: doc/classes/AnimationNodeStateMachine.xml:15
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:15
+#: doc/classes/AnimationNodeStateMachineTransition.xml:8
+#: doc/classes/AnimationNodeTimeScale.xml:10
+#: doc/classes/AnimationNodeTimeSeek.xml:21
+#: doc/classes/AnimationNodeTransition.xml:10 doc/classes/AnimationTree.xml:11
+#: doc/classes/AnimationTreePlayer.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/animation/animation_tree.html"
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:18
+msgid ""
+"Adds an input to the node. This is only useful for nodes created for use in "
+"an [AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:29
+msgid ""
+"Blend an animation by [code]blend[/code] amount (name must be valid in the "
+"linked [AnimationPlayer]). A [code]time[/code] and [code]delta[/code] may be "
+"passed, as well as whether [code]seek[/code] happened."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:41
+msgid ""
+"Blend an input. This is only useful for nodes created for an "
+"[AnimationNodeBlendTree]. The [code]time[/code] parameter is a relative "
+"delta, unless [code]seek[/code] is [code]true[/code], in which case it is "
+"absolute. A filter mode may be optionally passed (see [enum FilterAction] "
+"for options)."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:54
+msgid ""
+"Blend another animation node (in case this node contains children animation "
+"nodes). This function is only useful if you inherit from [AnimationRootNode] "
+"instead, else editors will not display your node for addition."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:60
+msgid "Gets the text caption for this node (used by some editors)."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:67
+msgid ""
+"Gets a child node by index (used by editors inheriting from "
+"[AnimationRootNode])."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:73
+msgid ""
+"Gets all children nodes in order as a [code]name: node[/code] dictionary. "
+"Only useful when inheriting [AnimationRootNode]."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:79
+msgid ""
+"Amount of inputs in this node, only useful for nodes that go into "
+"[AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:86
+msgid "Gets the name of an input by index."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:93
+msgid ""
+"Gets the value of a parameter. Parameters are custom local memory used for "
+"your nodes, given a resource can be reused in multiple trees."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:100
+msgid ""
+"Gets the default value of a parameter. Parameters are custom local memory "
+"used for your nodes, given a resource can be reused in multiple trees."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:106
+msgid ""
+"Gets the property information for parameter. Parameters are custom local "
+"memory used for your nodes, given a resource can be reused in multiple "
+"trees. Format is similar to [method Object.get_property_list]."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:112
+msgid ""
+"Returns [code]true[/code] whether you want the blend tree editor to display "
+"filter editing on this node."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:119
+msgid "Returns [code]true[/code] whether a given path is filtered."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:127
+msgid ""
+"User-defined callback called when a custom node is processed. The "
+"[code]time[/code] parameter is a relative delta, unless [code]seek[/code] is "
+"[code]true[/code], in which case it is absolute.\n"
+"Here, call the [method blend_input], [method blend_node] or [method "
+"blend_animation] functions. You can also use [method get_parameter] and "
+"[method set_parameter] to modify local memory.\n"
+"This function should return the time left for the current animation to "
+"finish (if unsure, pass the value from the main blend being called)."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:136
+msgid "Removes an input, call this only when inactive."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:144
+msgid "Adds or removes a path for the filter."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:152
+msgid ""
+"Sets a custom parameter. These are used as local storage, because resources "
+"can be reused across the tree or scenes."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:158
+msgid "If [code]true[/code], filtering is enabled."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:164
+msgid "Called when the node was removed from the graph."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:169
+msgid ""
+"Emitted by nodes that inherit from this class and that have an internal tree "
+"when one of their nodes changes. The nodes that emit this signal are "
+"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], "
+"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:175
+msgid "Do not use filtering."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:178
+msgid "Paths matching the filter will be allowed to pass."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:181
+msgid "Paths matching the filter will be discarded."
+msgstr ""
+
+#: doc/classes/AnimationNode.xml:184
+msgid "Paths matching the filter will be blended (by the blend value)."
+msgstr ""
+
+#: doc/classes/AnimationNodeAdd2.xml:4
+msgid "Blends two animations additively inside of an [AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeAdd2.xml:7
+msgid ""
+"A resource to add to an [AnimationNodeBlendTree]. Blends two animations "
+"additively based on an amount value in the [code][0.0, 1.0][/code] range."
+msgstr ""
+
+#: doc/classes/AnimationNodeAdd2.xml:16 doc/classes/AnimationNodeAdd3.xml:21
+#: doc/classes/AnimationNodeBlend2.xml:18
+#: doc/classes/AnimationNodeBlend3.xml:20
+msgid ""
+"If [code]true[/code], sets the [code]optimization[/code] to [code]false[/"
+"code] when calling [method AnimationNode.blend_input], forcing the blended "
+"animations to update every frame."
+msgstr ""
+
+#: doc/classes/AnimationNodeAdd3.xml:4
+msgid ""
+"Blends two of three animations additively inside of an "
+"[AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeAdd3.xml:7
+msgid ""
+"A resource to add to an [AnimationNodeBlendTree]. Blends two animations "
+"together additively out of three based on a value in the [code][-1.0, 1.0][/"
+"code] range.\n"
+"This node has three inputs:\n"
+"- The base animation to add to\n"
+"- A -add animation to blend with when the blend amount is in the [code]"
+"[-1.0, 0.0][/code] range.\n"
+"- A +add animation to blend with when the blend amount is in the [code][0.0, "
+"1.0][/code] range"
+msgstr ""
+
+#: doc/classes/AnimationNodeAdd3.xml:15
+#: doc/classes/AnimationNodeAnimation.xml:12
+#: doc/classes/AnimationNodeBlend2.xml:12
+#: doc/classes/AnimationNodeBlendSpace2D.xml:13
+#: doc/classes/AnimationNodeOneShot.xml:11
+#: doc/classes/AnimationNodeOutput.xml:11
+#: doc/classes/AnimationNodeTransition.xml:12
+#: doc/classes/AnimationPlayer.xml:14 doc/classes/AnimationTree.xml:12
+#: doc/classes/AudioEffectReverb.xml:11 doc/classes/Camera.xml:10
+#: doc/classes/CollisionShape.xml:13 doc/classes/CylinderShape.xml:10
+#: doc/classes/Environment.xml:19 doc/classes/GIProbe.xml:14
+#: doc/classes/GIProbeData.xml:8 doc/classes/KinematicBody.xml:16
+#: doc/classes/Light.xml:11 doc/classes/Material.xml:11 doc/classes/Mesh.xml:13
+#: doc/classes/MeshInstance.xml:13 doc/classes/Particles.xml:14
+#: doc/classes/Quat.xml:13 doc/classes/Skeleton.xml:13
+#: doc/classes/SpotLight.xml:12 doc/classes/StaticBody.xml:12
+#: doc/classes/WorldEnvironment.xml:15
+msgid "https://godotengine.org/asset-library/asset/678"
+msgstr ""
+
+#: doc/classes/AnimationNodeAnimation.xml:4
+msgid "Input animation to use in an [AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeAnimation.xml:7
+msgid ""
+"A resource to add to an [AnimationNodeBlendTree]. Only features one output "
+"set using the [member animation] property. Use it as an input for "
+"[AnimationNode] that blend animations together."
+msgstr ""
+
+#: doc/classes/AnimationNodeAnimation.xml:11
+#: doc/classes/AnimationNodeBlend2.xml:11
+#: doc/classes/AnimationNodeOutput.xml:10
+#: doc/classes/AnimationNodeTimeScale.xml:11
+#: doc/classes/AnimationNodeTransition.xml:11 doc/classes/Area.xml:10
+#: doc/classes/Basis.xml:17 doc/classes/BoxShape.xml:12
+#: doc/classes/CollisionShape.xml:12 modules/gridmap/doc_classes/GridMap.xml:15
+#: doc/classes/KinematicBody.xml:14 doc/classes/Mesh.xml:12
+#: doc/classes/MeshInstance.xml:12 doc/classes/MeshLibrary.xml:11
+#: doc/classes/ProjectSettings.xml:14 doc/classes/Transform.xml:15
+msgid "https://godotengine.org/asset-library/asset/125"
+msgstr ""
+
+#: doc/classes/AnimationNodeAnimation.xml:18
+msgid ""
+"Animation to use as an output. It is one of the animations provided by "
+"[member AnimationTree.anim_player]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlend2.xml:4
+msgid "Blends two animations linearly inside of an [AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlend2.xml:7
+msgid ""
+"A resource to add to an [AnimationNodeBlendTree]. Blends two animations "
+"linearly based on an amount value in the [code][0.0, 1.0][/code] range."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlend3.xml:4
+msgid ""
+"Blends two of three animations linearly inside of an "
+"[AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlend3.xml:7
+msgid ""
+"A resource to add to an [AnimationNodeBlendTree]. Blends two animations "
+"together linearly out of three based on a value in the [code][-1.0, 1.0][/"
+"code] range.\n"
+"This node has three inputs:\n"
+"- The base animation\n"
+"- A -blend animation to blend with when the blend amount is in the [code]"
+"[-1.0, 0.0][/code] range.\n"
+"- A +blend animation to blend with when the blend amount is in the [code]"
+"[0.0, 1.0][/code] range"
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:4
+msgid ""
+"Blends linearly between two of any number of [AnimationNode] of any type "
+"placed on a virtual axis."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:7
+msgid ""
+"A resource to add to an [AnimationNodeBlendTree].\n"
+"This is a virtual axis on which you can add any type of [AnimationNode] "
+"using [method add_blend_point].\n"
+"Outputs the linear blend of the two [AnimationNode]s closest to the node's "
+"current value.\n"
+"You can set the extents of the axis using the [member min_space] and [member "
+"max_space]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:22
+msgid ""
+"Adds a new point that represents a [code]node[/code] on the virtual axis at "
+"a given position set by [code]pos[/code]. You can insert it at a specific "
+"index using the [code]at_index[/code] argument. If you use the default value "
+"for [code]at_index[/code], the point is inserted at the end of the blend "
+"points array."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:28
+msgid "Returns the number of points on the blend axis."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:35
+msgid ""
+"Returns the [AnimationNode] referenced by the point at index [code]point[/"
+"code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:42
+#: doc/classes/AnimationNodeBlendSpace2D.xml:52
+msgid "Returns the position of the point at index [code]point[/code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:49
+msgid "Removes the point at index [code]point[/code] from the blend axis."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:57
+#: doc/classes/AnimationNodeBlendSpace2D.xml:88
+msgid ""
+"Changes the [AnimationNode] referenced by the point at index [code]point[/"
+"code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:65
+#: doc/classes/AnimationNodeBlendSpace2D.xml:96
+msgid ""
+"Updates the position of the point at index [code]point[/code] on the blend "
+"axis."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:71
+msgid ""
+"The blend space's axis's upper limit for the points' position. See [method "
+"add_blend_point]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:74
+msgid ""
+"The blend space's axis's lower limit for the points' position. See [method "
+"add_blend_point]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:77
+msgid "Position increment to snap to when moving a point on the axis."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace1D.xml:80
+msgid "Label of the virtual axis of the blend space."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:4
+msgid ""
+"Blends linearly between three [AnimationNode] of any type placed in a 2D "
+"space."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:7
+msgid ""
+"A resource to add to an [AnimationNodeBlendTree].\n"
+"This node allows you to blend linearly between three animations using a "
+"[Vector2] weight.\n"
+"You can add vertices to the blend space with [method add_blend_point] and "
+"automatically triangulate it by setting [member auto_triangles] to "
+"[code]true[/code]. Otherwise, use [method add_triangle] and [method "
+"remove_triangle] to create up the blend space by hand."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:22
+msgid ""
+"Adds a new point that represents a [code]node[/code] at the position set by "
+"[code]pos[/code]. You can insert it at a specific index using the "
+"[code]at_index[/code] argument. If you use the default value for "
+"[code]at_index[/code], the point is inserted at the end of the blend points "
+"array."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:32
+msgid ""
+"Creates a new triangle using three points [code]x[/code], [code]y[/code], "
+"and [code]z[/code]. Triangles can overlap. You can insert the triangle at a "
+"specific index using the [code]at_index[/code] argument. If you use the "
+"default value for [code]at_index[/code], the point is inserted at the end of "
+"the blend points array."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:38
+msgid "Returns the number of points in the blend space."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:45
+msgid ""
+"Returns the [AnimationRootNode] referenced by the point at index "
+"[code]point[/code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:58
+msgid "Returns the number of triangles in the blend space."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:66
+msgid ""
+"Returns the position of the point at index [code]point[/code] in the "
+"triangle of index [code]triangle[/code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:73
+msgid "Removes the point at index [code]point[/code] from the blend space."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:80
+msgid ""
+"Removes the triangle at index [code]triangle[/code] from the blend space."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:102
+msgid ""
+"If [code]true[/code], the blend space is triangulated automatically. The "
+"mesh updates every time you add or remove points with [method "
+"add_blend_point] and [method remove_blend_point]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:105
+msgid ""
+"Controls the interpolation between animations. See [enum BlendMode] "
+"constants."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:108
+msgid ""
+"The blend space's X and Y axes' upper limit for the points' position. See "
+"[method add_blend_point]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:111
+msgid ""
+"The blend space's X and Y axes' lower limit for the points' position. See "
+"[method add_blend_point]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:114
+msgid "Position increment to snap to when moving a point."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:117
+msgid "Name of the blend space's X axis."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:120
+msgid "Name of the blend space's Y axis."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:126
+msgid ""
+"Emitted every time the blend space's triangles are created, removed, or when "
+"one of their vertices changes position."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:132
+msgid "The interpolation between animations is linear."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:135
+msgid ""
+"The blend space plays the animation of the node the blending position is "
+"closest to. Useful for frame-by-frame 2D animations."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendSpace2D.xml:138
+msgid ""
+"Similar to [constant BLEND_MODE_DISCRETE], but starts the new animation at "
+"the last animation's playback position."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:4
+msgid "[AnimationTree] node resource that contains many blend type nodes."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:7
+msgid ""
+"This node may contain a sub-tree of any other blend type nodes, such as mix, "
+"blend2, blend3, one shot, etc. This is one of the most commonly used roots."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:19
+msgid ""
+"Adds an [AnimationNode] at the given [code]position[/code]. The [code]name[/"
+"code] is used to identify the created sub-node later."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:28
+msgid ""
+"Connects the output of an [AnimationNode] as input for another "
+"[AnimationNode], at the input port specified by [code]input_index[/code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:36
+msgid "Disconnects the node connected to the specified input."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:43
+msgid "Returns the sub-node with the specified [code]name[/code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:50
+msgid ""
+"Returns the position of the sub-node with the specified [code]name[/code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:57
+msgid ""
+"Returns [code]true[/code] if a sub-node with specified [code]name[/code] "
+"exists."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:64
+msgid "Removes a sub-node."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:72
+msgid "Changes the name of a sub-node."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:80
+msgid "Modifies the position of a sub-node."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:86
+msgid "The global offset of all sub-nodes."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:91
+msgid "The connection was successful."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:94
+msgid "The input node is [code]null[/code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:97
+msgid "The specified input port is out of range."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:100
+msgid "The output node is [code]null[/code]."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:103
+msgid "Input and output nodes are the same."
+msgstr ""
+
+#: doc/classes/AnimationNodeBlendTree.xml:106
+msgid "The specified connection already exists."
+msgstr ""
+
+#: doc/classes/AnimationNodeOneShot.xml:4
+msgid "Plays an animation once in [AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeOneShot.xml:7
+msgid ""
+"A resource to add to an [AnimationNodeBlendTree]. This node will execute a "
+"sub-animation and return once it finishes. Blend times for fading in and out "
+"can be customized, as well as filters."
+msgstr ""
+
+#: doc/classes/AnimationNodeOneShot.xml:28
+msgid ""
+"If [code]true[/code], the sub-animation will restart automatically after "
+"finishing."
+msgstr ""
+
+#: doc/classes/AnimationNodeOneShot.xml:31
+msgid "The delay after which the automatic restart is triggered, in seconds."
+msgstr ""
+
+#: doc/classes/AnimationNodeOneShot.xml:34
+msgid ""
+"If [member autorestart] is [code]true[/code], a random additional delay (in "
+"seconds) between 0 and this value will be added to [member "
+"autorestart_delay]."
+msgstr ""
+
+#: doc/classes/AnimationNodeOutput.xml:4
+msgid "Generic output node to be added to [AnimationNodeBlendTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:4
+msgid "State machine for control of animations."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:7
+msgid ""
+"Contains multiple nodes representing animation states, connected in a graph. "
+"Node transitions can be configured to happen automatically or via code, "
+"using a shortest-path algorithm. Retrieve the "
+"[AnimationNodeStateMachinePlayback] object from the [AnimationTree] node to "
+"control it programmatically.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"var state_machine = $AnimationTree.get(\"parameters/playback\")\n"
+"state_machine.travel(\"some_state\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:24
+msgid ""
+"Adds a new node to the graph. The [code]position[/code] is used for display "
+"in the editor."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:33
+msgid "Adds a transition between the given nodes."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:39
+#: doc/classes/AnimationNodeStateMachine.xml:72
+msgid "Returns the graph's end node."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:45
+msgid "Returns the draw offset of the graph. Used for display in the editor."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:52
+msgid "Returns the animation node with the given name."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:59
+msgid "Returns the given animation node's name."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:66
+msgid "Returns the given node's coordinates. Used for display in the editor."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:79
+msgid "Returns the given transition."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:85
+msgid "Returns the number of connections in the graph."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:92
+msgid "Returns the given transition's start node."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:99
+msgid "Returns the given transition's end node."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:106
+msgid "Returns [code]true[/code] if the graph contains the given node."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:114
+msgid ""
+"Returns [code]true[/code] if there is a transition between the given nodes."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:121
+msgid "Deletes the given node from the graph."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:129
+msgid "Deletes the transition between the two specified nodes."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:136
+msgid "Deletes the given transition by index."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:144
+msgid "Renames the given node."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:152
+msgid "Replaces the node and keeps its transitions unchanged."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:159
+msgid "Sets the given node as the graph end point."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:166
+msgid "Sets the draw offset of the graph. Used for display in the editor."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:174
+msgid "Sets the node's coordinates. Used for display in the editor."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachine.xml:181
+msgid "Sets the given node as the graph start point."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:4
+msgid "Playback control for [AnimationNodeStateMachine]."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:7
+msgid ""
+"Allows control of [AnimationTree] state machines created with "
+"[AnimationNodeStateMachine]. Retrieve with [code]$AnimationTree."
+"get(\"parameters/playback\")[/code].\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"var state_machine = $AnimationTree.get(\"parameters/playback\")\n"
+"state_machine.travel(\"some_state\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:26
+msgid "Returns the currently playing animation state."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:32
+msgid "Returns the playback position within the current animation state."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:38
+msgid ""
+"Returns the current travel path as computed internally by the A* algorithm."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:44
+msgid "Returns [code]true[/code] if an animation is playing."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:51
+msgid "Starts playing the given animation."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:57
+msgid "Stops the currently playing animation."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachinePlayback.xml:64
+msgid ""
+"Transitions from the current state to another one, following the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:14
+msgid ""
+"Turn on auto advance when this condition is set. The provided name will "
+"become a boolean parameter on the [AnimationTree] that can be controlled "
+"from code (see [url=https://docs.godotengine.org/en/3.4/tutorials/animation/"
+"animation_tree.html#controlling-from-code][/url]). For example, if [member "
+"AnimationTree.tree_root] is an [AnimationNodeStateMachine] and [member "
+"advance_condition] is set to [code]\"idle\"[/code]:\n"
+"[codeblock]\n"
+"$animation_tree[\"parameters/conditions/idle\"] = is_on_floor and "
+"(linear_velocity.x == 0)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:20
+msgid ""
+"Turn on the transition automatically when this state is reached. This works "
+"best with [constant SWITCH_MODE_AT_END]."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:23
+msgid ""
+"Don't use this transition during [method AnimationNodeStateMachinePlayback."
+"travel] or [member auto_advance]."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:26
+msgid ""
+"Lower priority transitions are preferred when travelling through the tree "
+"via [method AnimationNodeStateMachinePlayback.travel] or [member "
+"auto_advance]."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:29
+msgid "The transition type."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:32
+msgid "The time to cross-fade between this state and the next."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:38
+msgid "Emitted when [member advance_condition] is changed."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:44
+msgid ""
+"Switch to the next state immediately. The current state will end and blend "
+"into the beginning of the new one."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:47
+msgid ""
+"Switch to the next state immediately, but will seek the new state to the "
+"playback position of the old state."
+msgstr ""
+
+#: doc/classes/AnimationNodeStateMachineTransition.xml:50
+msgid ""
+"Wait for the current state playback to end, then switch to the beginning of "
+"the next state animation."
+msgstr ""
+
+#: doc/classes/AnimationNodeTimeScale.xml:4
+msgid "A time-scaling animation node to be used with [AnimationTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeTimeScale.xml:7
+msgid ""
+"Allows scaling the speed of the animation (or reversing it) in any children "
+"nodes. Setting it to 0 will pause the animation."
+msgstr ""
+
+#: doc/classes/AnimationNodeTimeSeek.xml:4
+msgid "A time-seeking animation node to be used with [AnimationTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeTimeSeek.xml:7
+msgid ""
+"This node can be used to cause a seek command to happen to any sub-children "
+"of the animation graph. Use this node type to play an [Animation] from the "
+"start or a certain playback position inside the [AnimationNodeBlendTree]. "
+"After setting the time and changing the animation playback, the seek node "
+"automatically goes into sleep mode on the next process frame by setting its "
+"[code]seek_position[/code] value to [code]-1.0[/code].\n"
+"[codeblock]\n"
+"# Play child animation from the start.\n"
+"animation_tree.set(\"parameters/Seek/seek_position\", 0.0)\n"
+"# Alternative syntax (same result as above).\n"
+"animation_tree[\"parameters/Seek/seek_position\"] = 0.0\n"
+"\n"
+"# Play child animation from 12 second timestamp.\n"
+"animation_tree.set(\"parameters/Seek/seek_position\", 12.0)\n"
+"# Alternative syntax (same result as above).\n"
+"animation_tree[\"parameters/Seek/seek_position\"] = 12.0\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AnimationNodeTransition.xml:4
+msgid "A generic animation transition node for [AnimationTree]."
+msgstr ""
+
+#: doc/classes/AnimationNodeTransition.xml:7
+msgid ""
+"Simple state machine for cases which don't require a more advanced "
+"[AnimationNodeStateMachine]. Animations can be connected to the inputs and "
+"transition times can be specified."
+msgstr ""
+
+#: doc/classes/AnimationNodeTransition.xml:44
+msgid "The number of available input ports for this node."
+msgstr ""
+
+#: doc/classes/AnimationNodeTransition.xml:47
+msgid ""
+"Cross-fading time (in seconds) between each animation connected to the "
+"inputs."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:4
+msgid "Container and player of [Animation] resources."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:7
+msgid ""
+"An animation player is used for general-purpose playback of [Animation] "
+"resources. It contains a dictionary of animations (referenced by name) and "
+"custom blend times between their transitions. Additionally, animations can "
+"be played and blended in different channels.\n"
+"[AnimationPlayer] is more suited than [Tween] for animations where you know "
+"the final values in advance. For example, fading a screen in and out is more "
+"easily done with an [AnimationPlayer] node thanks to the animation tools "
+"provided by the editor. That particular example can also be implemented with "
+"a [Tween] node, but it requires doing everything by code.\n"
+"Updating the target properties of animations occurs at process time."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:22
+msgid ""
+"Adds [code]animation[/code] to the player accessible with the key "
+"[code]name[/code]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:29
+msgid ""
+"Shifts position in the animation timeline and immediately updates the "
+"animation. [code]delta[/code] is the time in seconds to shift. Events "
+"between the current frame and [code]delta[/code] are handled."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:36
+msgid "Returns the name of the next animation in the queue."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:44
+msgid ""
+"Triggers the [code]anim_to[/code] animation when the [code]anim_from[/code] "
+"animation completes."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:50
+msgid ""
+"[AnimationPlayer] caches animated nodes. It may not notice if a node "
+"disappears; [method clear_caches] forces it to update the cache again."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:56
+msgid "Clears all queued, unplayed animations."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:63
+msgid ""
+"Returns the name of [code]animation[/code] or an empty string if not found."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:70
+msgid ""
+"Returns the [Animation] with key [code]name[/code] or [code]null[/code] if "
+"not found."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:76
+msgid "Returns the list of stored animation names."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:84
+msgid ""
+"Gets the blend time (in seconds) between two animations, referenced by their "
+"names."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:90
+msgid ""
+"Gets the actual playing speed of current animation or 0 if not playing. This "
+"speed is the [member playback_speed] property multiplied by "
+"[code]custom_speed[/code] argument specified when calling the [method play] "
+"method."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:96
+msgid ""
+"Returns a list of the animation names that are currently queued to play."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:103
+msgid ""
+"Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] "
+"with key [code]name[/code]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:109
+msgid "Returns [code]true[/code] if playing an animation."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:119
+msgid ""
+"Plays the animation with key [code]name[/code]. Custom blend times and speed "
+"can be set. If [code]custom_speed[/code] is negative and [code]from_end[/"
+"code] is [code]true[/code], the animation will play backwards (which is "
+"equivalent to calling [method play_backwards]).\n"
+"The [AnimationPlayer] keeps track of its current or last played animation "
+"with [member assigned_animation]. If this method is called with that same "
+"animation [code]name[/code], or with no [code]name[/code] parameter, the "
+"assigned animation will resume playing if it was paused, or restart if it "
+"was stopped (see [method stop] for both pause and stop). If the animation "
+"was already playing, it will keep playing.\n"
+"[b]Note:[/b] The animation will be updated the next time the "
+"[AnimationPlayer] is processed. If other variables are updated at the same "
+"time this is called, they may be updated too early. To perform the update "
+"immediately, call [code]advance(0)[/code]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:129
+msgid ""
+"Plays the animation with key [code]name[/code] in reverse.\n"
+"This method is a shorthand for [method play] with [code]custom_speed = -1.0[/"
+"code] and [code]from_end = true[/code], so see its description for more "
+"information."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:137
+msgid ""
+"Queues an animation for playback once the current one is done.\n"
+"[b]Note:[/b] If a looped animation is currently playing, the queued "
+"animation will never play unless the looped animation is stopped somehow."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:145
+msgid "Removes the animation with key [code]name[/code]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:153
+msgid ""
+"Renames an existing animation with key [code]name[/code] to [code]newname[/"
+"code]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:161
+msgid ""
+"Seeks the animation to the [code]seconds[/code] point in time (in seconds). "
+"If [code]update[/code] is [code]true[/code], the animation updates too, "
+"otherwise it updates at process time. Events between the current frame and "
+"[code]seconds[/code] are skipped."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:170
+msgid ""
+"Specifies a blend time (in seconds) between two animations, referenced by "
+"their names."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:177
+msgid ""
+"Stops or pauses the currently playing animation. If [code]reset[/code] is "
+"[code]true[/code], the animation position is reset to [code]0[/code] and the "
+"playback speed is reset to [code]1.0[/code].\n"
+"If [code]reset[/code] is [code]false[/code], the [member "
+"current_animation_position] will be kept and calling [method play] or "
+"[method play_backwards] without arguments or with the same animation name as "
+"[member assigned_animation] will resume the animation."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:184
+msgid ""
+"If playing, the current animation; otherwise, the animation last played. "
+"When set, would change the animation, but would not play it unless currently "
+"playing. See also [member current_animation]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:187
+msgid "The name of the animation to play when the scene loads."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:190
+msgid ""
+"The name of the currently playing animation. If no animation is playing, the "
+"property's value is an empty string. Changing this value does not restart "
+"the animation. See [method play] for more information on playing "
+"animations.\n"
+"[b]Note:[/b] While this property appears in the inspector, it's not meant to "
+"be edited, and it's not saved in the scene. This property is mainly used to "
+"get the currently playing animation, and internally for animation playback "
+"tracks. For more information, see [Animation]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:194
+msgid "The length (in seconds) of the currently being played animation."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:197
+msgid "The position (in seconds) of the currently playing animation."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:200
+msgid "The call mode to use for Call Method tracks."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:203
+msgid ""
+"If [code]true[/code], updates animations in response to process-related "
+"notifications."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:206
+msgid ""
+"The default time in which to blend animations. Ranges from 0 to 4096 with "
+"0.01 precision."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:209
+msgid "The process notification in which to update animations."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:212
+msgid ""
+"The speed scaling ratio. For instance, if this value is 1, then the "
+"animation plays at normal speed. If it's 0.5, then it plays at half speed. "
+"If it's 2, then it plays at double speed."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:215
+msgid ""
+"This is used by the editor. If set to [code]true[/code], the scene will be "
+"saved with the effects of the reset animation applied (as if it had been "
+"seeked to time 0), then reverted after saving.\n"
+"In other words, the saved scene file will contain the \"default pose\", as "
+"defined by the reset animation, if any, with the editor keeping the values "
+"that the nodes had before saving."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:219
+msgid "The node from which node path references will travel."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:227
+msgid ""
+"Emitted when a queued animation plays after the previous animation was "
+"finished. See [method queue].\n"
+"[b]Note:[/b] The signal is not emitted when the animation is changed via "
+"[method play] or from [AnimationTree]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:234
+msgid "Notifies when an animation finished playing."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:240
+msgid "Notifies when an animation starts playing."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:245
+msgid ""
+"Notifies when the caches have been cleared, either automatically, or "
+"manually via [method clear_caches]."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:251 doc/classes/AnimationTreePlayer.xml:505
+msgid ""
+"Process animation during the physics process. This is especially useful when "
+"animating physics bodies."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:254 doc/classes/AnimationTreePlayer.xml:508
+msgid "Process animation during the idle process."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:257
+msgid ""
+"Do not process animation. Use [method advance] to process the animation "
+"manually."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:260
+msgid ""
+"Batch method calls during the animation process, then do the calls after "
+"events are processed. This avoids bugs involving deleting nodes or modifying "
+"the AnimationPlayer while playing."
+msgstr ""
+
+#: doc/classes/AnimationPlayer.xml:263
+msgid "Make method calls immediately when reached in the animation."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:4
+msgid ""
+"A node to be used for advanced animation transitions in an [AnimationPlayer]."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:7
+msgid ""
+"A node to be used for advanced animation transitions in an "
+"[AnimationPlayer].\n"
+"[b]Note:[/b] When linked with an [AnimationPlayer], several properties and "
+"methods of the corresponding [AnimationPlayer] will not function as "
+"expected. Playback and transitions should be handled using only the "
+"[AnimationTree] and its constituent [AnimationNode](s). The "
+"[AnimationPlayer] node should be used solely for adding, deleting, and "
+"editing animations."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:19
+msgid "Manually advance the animations by the specified time (in seconds)."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:25
+msgid ""
+"Retrieve the motion of the [member root_motion_track] as a [Transform] that "
+"can be used elsewhere. If [member root_motion_track] is not a path to a "
+"track of type [constant Animation.TYPE_TRANSFORM], returns an identity "
+"transformation. See also [member root_motion_track] and [RootMotionView]."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:38
+msgid "If [code]true[/code], the [AnimationTree] will be processing."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:41
+msgid "The path to the [AnimationPlayer] used for animating."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:44
+msgid ""
+"The process mode of this [AnimationTree]. See [enum AnimationProcessMode] "
+"for available modes."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:47
+msgid ""
+"The path to the Animation track used for root motion. Paths must be valid "
+"scene-tree paths to a node, and must be specified starting from the parent "
+"node of the node that will reproduce the animation. To specify a track that "
+"controls properties or bones, append its name after the path, separated by "
+"[code]\":\"[/code]. For example, [code]\"character/skeleton:ankle\"[/code] "
+"or [code]\"character/mesh:transform/local\"[/code].\n"
+"If the track has type [constant Animation.TYPE_TRANSFORM], the "
+"transformation will be cancelled visually, and the animation will appear to "
+"stay in place. See also [method get_root_motion_transform] and "
+"[RootMotionView]."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:51
+msgid "The root animation node of this [AnimationTree]. See [AnimationNode]."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:56
+msgid ""
+"The animations will progress during the physics frame (i.e. [method Node."
+"_physics_process])."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:59
+msgid ""
+"The animations will progress during the idle frame (i.e. [method Node."
+"_process])."
+msgstr ""
+
+#: doc/classes/AnimationTree.xml:62
+msgid "The animations will only progress manually (see [method advance])."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:4
+msgid ""
+"[i]Deprecated.[/i] Animation player that uses a node graph for blending "
+"animations. Superseded by [AnimationTree]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:7
+msgid ""
+"[i]Deprecated.[/i] A node graph tool for blending multiple animations bound "
+"to an [AnimationPlayer]. Especially useful for animating characters or other "
+"skeleton-based rigs. It can combine several animations to form a desired "
+"pose.\n"
+"It takes [Animation]s from an [AnimationPlayer] node and mixes them "
+"depending on the graph.\n"
+"See [AnimationTree] for a more full-featured replacement of this node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:20
+msgid "Adds a [code]type[/code] node to the graph with name [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:27
+msgid ""
+"Shifts position in the animation timeline. [code]delta[/code] is the time in "
+"seconds to shift. Events between the current frame and [code]delta[/code] "
+"are handled."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:34
+msgid ""
+"Returns the [AnimationPlayer]'s [Animation] bound to the "
+"[AnimationTreePlayer]'s animation node with name [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:41
+msgid ""
+"Returns the name of the [member master_player]'s [Animation] bound to this "
+"animation node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:48
+msgid ""
+"Returns the absolute playback timestamp of the animation node with name "
+"[code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:56
+msgid ""
+"Binds a new [Animation] from the [member master_player] to the "
+"[AnimationTreePlayer]'s animation node with name [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:65
+msgid ""
+"If [code]enable[/code] is [code]true[/code], the animation node with ID "
+"[code]id[/code] turns off the track modifying the property at [code]path[/"
+"code]. The modified node's children continue to animate."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:73
+msgid ""
+"Binds the [Animation] named [code]source[/code] from [member master_player] "
+"to the animation node [code]id[/code]. Recalculates caches."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:82
+msgid ""
+"Returns whether node [code]id[/code] and [code]dst_id[/code] are connected "
+"at the specified slot."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:89
+msgid "Returns the blend amount of a Blend2 node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:97
+msgid ""
+"Sets the blend amount of a Blend2 node given its name and value.\n"
+"A Blend2 node blends two animations (A and B) with the amount between 0 and "
+"1.\n"
+"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 ""
+
+#: doc/classes/AnimationTreePlayer.xml:108
+msgid ""
+"If [code]enable[/code] is [code]true[/code], the Blend2 node with name "
+"[code]id[/code] turns off the track modifying the property at [code]path[/"
+"code]. The modified node's children continue to animate."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:115
+msgid "Returns the blend amount of a Blend3 node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:123
+msgid ""
+"Sets the blend amount of a Blend3 node given its name and value.\n"
+"A Blend3 Node blends three animations (A, B-, B+) with the amount between -1 "
+"and 1.\n"
+"At -1, output is input B-. From -1 to 0, the influence of B- gets lessened, "
+"the influence of A gets raised and the influence of B+ is 0. At 0, output is "
+"input A. From 0 to 1, the influence of A gets lessened, the influence of B+ "
+"gets raised and the influence of B+ is 0. At 1, output is input B+."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:132
+msgid "Returns the blend amount of a Blend4 node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:140
+msgid ""
+"Sets the blend amount of a Blend4 node given its name and value.\n"
+"A Blend4 Node blends two pairs of animations.\n"
+"The two pairs are blended like Blend2 and then added together."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:151
+msgid ""
+"Connects node [code]id[/code] to [code]dst_id[/code] at the specified input "
+"slot."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:159
+msgid ""
+"Disconnects nodes connected to [code]id[/code] at the specified input slot."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:165
+msgid "Returns a [PoolStringArray] containing the name of all nodes."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:172
+msgid "Returns the mix amount of a Mix node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:180
+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 ""
+
+#: doc/classes/AnimationTreePlayer.xml:188
+msgid "Check if a node exists (by name)."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:195
+msgid ""
+"Returns the input count for a given node. Different types of nodes have "
+"different amount of inputs."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:203
+msgid "Returns the input source for a given node input."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:210
+msgid "Returns position of a node in the graph given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:217
+msgid "Gets the node type, will return from [enum NodeType] enum."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:225
+msgid "Renames a node in the graph."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:233
+msgid "Sets the position of a node in the graph given its name and position."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:240
+msgid "Returns the autostart delay of a OneShot node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:247
+msgid "Returns the autostart random delay of a OneShot node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:254
+msgid "Returns the fade in time of a OneShot node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:261
+msgid "Returns the fade out time of a OneShot node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:268
+msgid "Returns whether a OneShot node will auto restart given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:275
+msgid "Returns whether a OneShot node is active given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:283
+msgid ""
+"Sets the autorestart property of a OneShot node given its name and value."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:291
+msgid ""
+"Sets the autorestart delay of a OneShot node given its name and value in "
+"seconds."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:299
+msgid ""
+"Sets the autorestart random delay of a OneShot node given its name and value "
+"in seconds."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:307
+msgid ""
+"Sets the fade in time of a OneShot node given its name and value in seconds."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:315
+msgid ""
+"Sets the fade out time of a OneShot node given its name and value in seconds."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:324
+msgid ""
+"If [code]enable[/code] is [code]true[/code], the OneShot node with ID "
+"[code]id[/code] turns off the track modifying the property at [code]path[/"
+"code]. The modified node's children continue to animate."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:331
+msgid "Starts a OneShot node given its name."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:338
+msgid "Stops the OneShot node with name [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:344
+msgid ""
+"Manually recalculates the cache of track information generated from "
+"animation nodes. Needed when external sources modify the animation nodes' "
+"state."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:351
+msgid "Removes the animation node with name [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:357
+msgid "Resets this [AnimationTreePlayer]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:364
+msgid ""
+"Returns the time scale value of the TimeScale node with name [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:372
+msgid ""
+"Sets the time scale of the TimeScale node with name [code]id[/code] to "
+"[code]scale[/code].\n"
+"The TimeScale node is used to speed [Animation]s up if the scale is above 1 "
+"or slow them down if it is below 1.\n"
+"If applied after a blend or mix, affects all input animations to that blend "
+"or mix."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:382
+msgid ""
+"Sets the time seek value of the TimeSeek node with name [code]id[/code] to "
+"[code]seconds[/code].\n"
+"This functions as a seek in the [Animation] or the blend or mix of "
+"[Animation]s input in it."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:391
+msgid ""
+"Deletes the input at [code]input_idx[/code] for the transition node with "
+"name [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:398
+msgid ""
+"Returns the index of the currently evaluated input for the transition node "
+"with name [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:405
+msgid ""
+"Returns the number of inputs for the transition node with name [code]id[/"
+"code]. You can add inputs by right-clicking on the transition node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:412
+msgid ""
+"Returns the cross fade time for the transition node with name [code]id[/"
+"code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:420
+msgid ""
+"Returns [code]true[/code] if the input at [code]input_idx[/code] on the "
+"transition node with name [code]id[/code] is set to automatically advance to "
+"the next input upon completion."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:428
+msgid ""
+"The transition node with name [code]id[/code] sets its current input at "
+"[code]input_idx[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:437
+msgid ""
+"The transition node with name [code]id[/code] advances to its next input "
+"automatically when the input at [code]input_idx[/code] completes."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:445
+msgid ""
+"Resizes the number of inputs available for the transition node with name "
+"[code]id[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:453
+msgid ""
+"The transition node with name [code]id[/code] sets its cross fade time to "
+"[code]time_sec[/code]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:459
+msgid ""
+"If [code]true[/code], the [AnimationTreePlayer] is able to play animations."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:462
+msgid ""
+"The node from which to relatively access other nodes.\n"
+"It accesses the bones, so it should point to the same node the "
+"[AnimationPlayer] would point its Root Node at."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:466
+msgid ""
+"The path to the [AnimationPlayer] from which this [AnimationTreePlayer] "
+"binds animations to animation nodes.\n"
+"Once set, [Animation] nodes can be added to the [AnimationTreePlayer]."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:470
+msgid "The thread in which to update animations."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:475
+msgid "Output node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:478
+msgid "Animation node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:481
+msgid "OneShot node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:484
+msgid "Mix node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:487
+msgid "Blend2 node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:490
+msgid "Blend3 node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:493
+msgid "Blend4 node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:496
+msgid "TimeScale node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:499
+msgid "TimeSeek node."
+msgstr ""
+
+#: doc/classes/AnimationTreePlayer.xml:502
+msgid "Transition node."
+msgstr ""
+
+#: doc/classes/Area.xml:4
+msgid "3D area for detection and physics and audio influence."
+msgstr ""
+
+#: doc/classes/Area.xml:7
+msgid ""
+"3D area that detects [CollisionObject] nodes overlapping, entering, or "
+"exiting. Can also alter or override local physics parameters (gravity, "
+"damping) and route audio to custom audio buses."
+msgstr ""
+
+#: doc/classes/Area.xml:11 doc/classes/QuadMesh.xml:10
+#: doc/classes/Viewport.xml:17 doc/classes/ViewportTexture.xml:11
+msgid "https://godotengine.org/asset-library/asset/127"
+msgstr ""
+
+#: doc/classes/Area.xml:17
+msgid ""
+"Returns a list of intersecting [Area]s. For performance reasons (collisions "
+"are all processed at the same time) this list is modified once during the "
+"physics step, not immediately after objects are moved. Consider using "
+"signals instead."
+msgstr ""
+
+#: doc/classes/Area.xml:23
+msgid ""
+"Returns a list of intersecting [PhysicsBody]s. For performance reasons "
+"(collisions are all processed at the same time) this list is modified once "
+"during the physics step, not immediately after objects are moved. Consider "
+"using signals instead."
+msgstr ""
+
+#: doc/classes/Area.xml:30
+msgid ""
+"If [code]true[/code], the given area overlaps the Area.\n"
+"[b]Note:[/b] The result of this test is not immediate after moving objects. "
+"For performance, list of overlaps is updated once per frame and before the "
+"physics step. Consider using signals instead."
+msgstr ""
+
+#: doc/classes/Area.xml:38
+msgid ""
+"If [code]true[/code], the given physics body overlaps the Area.\n"
+"[b]Note:[/b] The result of this test is not immediate after moving objects. "
+"For performance, list of overlaps is updated once per frame and before the "
+"physics step. Consider using signals instead.\n"
+"The [code]body[/code] argument can either be a [PhysicsBody] or a [GridMap] "
+"instance (while GridMaps are not physics body themselves, they register "
+"their tiles with collision shapes as a virtual physics body)."
+msgstr ""
+
+#: doc/classes/Area.xml:46
+msgid ""
+"The rate at which objects stop spinning in this area. Represents the angular "
+"velocity lost per second.\n"
+"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
+"details about damping."
+msgstr ""
+
+#: doc/classes/Area.xml:50 doc/classes/Area2D.xml:52
+msgid "The name of the area's audio bus."
+msgstr ""
+
+#: doc/classes/Area.xml:53 doc/classes/Area2D.xml:55
+msgid ""
+"If [code]true[/code], the area's audio bus overrides the default audio bus."
+msgstr ""
+
+#: doc/classes/Area.xml:56
+msgid ""
+"The area's gravity intensity (in meters per second squared). This value "
+"multiplies the gravity vector. This is useful to alter the force of gravity "
+"without altering its direction."
+msgstr ""
+
+#: doc/classes/Area.xml:59 doc/classes/Area2D.xml:61
+msgid ""
+"The falloff factor for point gravity. The greater the value, the faster "
+"gravity decreases with distance."
+msgstr ""
+
+#: doc/classes/Area.xml:62 doc/classes/Area2D.xml:64
+msgid ""
+"If [code]true[/code], gravity is calculated from a point (set via [member "
+"gravity_vec]). See also [member space_override]."
+msgstr ""
+
+#: doc/classes/Area.xml:65 doc/classes/Area2D.xml:67
+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 ""
+
+#: doc/classes/Area.xml:68
+msgid ""
+"The rate at which objects stop moving in this area. Represents the linear "
+"velocity lost per second.\n"
+"See [member ProjectSettings.physics/3d/default_linear_damp] for more details "
+"about damping."
+msgstr ""
+
+#: doc/classes/Area.xml:72 doc/classes/Area2D.xml:74
+msgid "If [code]true[/code], other monitoring areas can detect this area."
+msgstr ""
+
+#: doc/classes/Area.xml:75 doc/classes/Area2D.xml:77
+msgid ""
+"If [code]true[/code], the area detects bodies or areas entering and exiting "
+"it."
+msgstr ""
+
+#: doc/classes/Area.xml:78 doc/classes/Area2D.xml:80
+msgid "The area's priority. Higher priority areas are processed first."
+msgstr ""
+
+#: doc/classes/Area.xml:81
+msgid ""
+"The degree to which this area applies reverb to its associated audio. Ranges "
+"from [code]0[/code] to [code]1[/code] with [code]0.1[/code] precision."
+msgstr ""
+
+#: doc/classes/Area.xml:84
+msgid "If [code]true[/code], the area applies reverb to its associated audio."
+msgstr ""
+
+#: doc/classes/Area.xml:87
+msgid "The reverb bus name to use for this area's associated audio."
+msgstr ""
+
+#: doc/classes/Area.xml:90
+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 ""
+
+#: doc/classes/Area.xml:93 doc/classes/Area2D.xml:83
+msgid ""
+"Override mode for gravity and damping calculations within this area. See "
+"[enum SpaceOverride] for possible values."
+msgstr ""
+
+#: doc/classes/Area.xml:100
+msgid ""
+"Emitted when another Area enters this Area. Requires [member monitoring] to "
+"be set to [code]true[/code].\n"
+"[code]area[/code] the other Area."
+msgstr ""
+
+#: doc/classes/Area.xml:107
+msgid ""
+"Emitted when another Area exits this Area. Requires [member monitoring] to "
+"be set to [code]true[/code].\n"
+"[code]area[/code] the other Area."
+msgstr ""
+
+#: doc/classes/Area.xml:117 doc/classes/Area.xml:130
+msgid ""
+"Emitted when one of another Area's [Shape]s enters one of this Area's "
+"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
+"[code]area[/code] the other Area.\n"
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+
+#: doc/classes/Area.xml:140
+msgid ""
+"Emitted when a [PhysicsBody] or [GridMap] enters this Area. Requires [member "
+"monitoring] to be set to [code]true[/code]. [GridMap]s are detected if the "
+"[MeshLibrary] has Collision [Shape]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody] or [GridMap]."
+msgstr ""
+
+#: doc/classes/Area.xml:147
+msgid ""
+"Emitted when a [PhysicsBody] or [GridMap] exits this Area. Requires [member "
+"monitoring] to be set to [code]true[/code]. [GridMap]s are detected if the "
+"[MeshLibrary] has Collision [Shape]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody] or [GridMap]."
+msgstr ""
+
+#: doc/classes/Area.xml:157 doc/classes/Area.xml:170
+msgid ""
+"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
+"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
+"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
+"or [GridMap].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+
+#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
+msgid "This area does not affect gravity/damping."
+msgstr ""
+
+#: doc/classes/Area.xml:183 doc/classes/Area2D.xml:173
+msgid ""
+"This area adds its gravity/damping values to whatever has been calculated so "
+"far (in [member priority] order)."
+msgstr ""
+
+#: doc/classes/Area.xml:186 doc/classes/Area2D.xml:176
+msgid ""
+"This area adds its gravity/damping values to whatever has been calculated so "
+"far (in [member priority] order), ignoring any lower priority areas."
+msgstr ""
+
+#: doc/classes/Area.xml:189 doc/classes/Area2D.xml:179
+msgid ""
+"This area replaces any gravity/damping, even the defaults, ignoring any "
+"lower priority areas."
+msgstr ""
+
+#: doc/classes/Area.xml:192 doc/classes/Area2D.xml:182
+msgid ""
+"This area replaces any gravity/damping calculated so far (in [member "
+"priority] order), but keeps calculating the rest of the areas."
+msgstr ""
+
+#: doc/classes/Area2D.xml:4
+msgid "2D area for detection and physics and audio influence."
+msgstr ""
+
+#: doc/classes/Area2D.xml:7
+msgid ""
+"2D area that detects [CollisionObject2D] nodes overlapping, entering, or "
+"exiting. Can also alter or override local physics parameters (gravity, "
+"damping) and route audio to a custom audio bus."
+msgstr ""
+
+#: doc/classes/Area2D.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/physics/using_area_2d.html"
+msgstr ""
+
+#: doc/classes/Area2D.xml:12 doc/classes/CollisionShape2D.xml:12
+#: doc/classes/RectangleShape2D.xml:10
+msgid "https://godotengine.org/asset-library/asset/121"
+msgstr ""
+
+#: doc/classes/Area2D.xml:13 doc/classes/Camera2D.xml:12
+#: doc/classes/KinematicBody2D.xml:15 doc/classes/TileMap.xml:12
+#: doc/classes/TileSet.xml:12
+msgid "https://godotengine.org/asset-library/asset/120"
+msgstr ""
+
+#: doc/classes/Area2D.xml:19
+msgid ""
+"Returns a list of intersecting [Area2D]s. For performance reasons "
+"(collisions are all processed at the same time) this list is modified once "
+"during the physics step, not immediately after objects are moved. Consider "
+"using signals instead."
+msgstr ""
+
+#: doc/classes/Area2D.xml:25
+msgid ""
+"Returns a list of intersecting [PhysicsBody2D]s. For performance reasons "
+"(collisions are all processed at the same time) this list is modified once "
+"during the physics step, not immediately after objects are moved. Consider "
+"using signals instead."
+msgstr ""
+
+#: doc/classes/Area2D.xml:32
+msgid ""
+"If [code]true[/code], the given area overlaps the Area2D.\n"
+"[b]Note:[/b] The result of this test is not immediate after moving objects. "
+"For performance, the list of overlaps is updated once per frame and before "
+"the physics step. Consider using signals instead."
+msgstr ""
+
+#: doc/classes/Area2D.xml:40
+msgid ""
+"If [code]true[/code], the given physics body overlaps the Area2D.\n"
+"[b]Note:[/b] The result of this test is not immediate after moving objects. "
+"For performance, list of overlaps is updated once per frame and before the "
+"physics step. Consider using signals instead.\n"
+"The [code]body[/code] argument can either be a [PhysicsBody2D] or a "
+"[TileMap] instance (while TileMaps are not physics bodies themselves, they "
+"register their tiles with collision shapes as a virtual physics body)."
+msgstr ""
+
+#: doc/classes/Area2D.xml:48
+msgid ""
+"The rate at which objects stop spinning in this area. Represents the angular "
+"velocity lost per second.\n"
+"See [member ProjectSettings.physics/2d/default_angular_damp] for more "
+"details about damping."
+msgstr ""
+
+#: doc/classes/Area2D.xml:58
+msgid ""
+"The area's gravity intensity (in pixels per second squared). This value "
+"multiplies the gravity vector. This is useful to alter the force of gravity "
+"without altering its direction."
+msgstr ""
+
+#: doc/classes/Area2D.xml:70
+msgid ""
+"The rate at which objects stop moving in this area. Represents the linear "
+"velocity lost per second.\n"
+"See [member ProjectSettings.physics/2d/default_linear_damp] for more details "
+"about damping."
+msgstr ""
+
+#: doc/classes/Area2D.xml:90
+msgid ""
+"Emitted when another Area2D enters this Area2D. Requires [member monitoring] "
+"to be set to [code]true[/code].\n"
+"[code]area[/code] the other Area2D."
+msgstr ""
+
+#: doc/classes/Area2D.xml:97
+msgid ""
+"Emitted when another Area2D exits this Area2D. Requires [member monitoring] "
+"to be set to [code]true[/code].\n"
+"[code]area[/code] the other Area2D."
+msgstr ""
+
+#: doc/classes/Area2D.xml:107
+msgid ""
+"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
+"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"used by the [Physics2DServer].\n"
+"[code]area[/code] the other Area2D.\n"
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+
+#: doc/classes/Area2D.xml:120
+msgid ""
+"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
+"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"used by the [Physics2DServer].\n"
+"[code]area[/code] the other Area2D.\n"
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+
+#: doc/classes/Area2D.xml:130
+msgid ""
+"Emitted when a [PhysicsBody2D] or [TileMap] enters this Area2D. Requires "
+"[member monitoring] to be set to [code]true[/code]. [TileMap]s are detected "
+"if the [TileSet] has Collision [Shape2D]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody2D] or [TileMap]."
+msgstr ""
+
+#: doc/classes/Area2D.xml:137
+msgid ""
+"Emitted when a [PhysicsBody2D] or [TileMap] exits this Area2D. Requires "
+"[member monitoring] to be set to [code]true[/code]. [TileMap]s are detected "
+"if the [TileSet] has Collision [Shape2D]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody2D] or [TileMap]."
+msgstr ""
+
+#: doc/classes/Area2D.xml:147
+msgid ""
+"Emitted when one of a [PhysicsBody2D] or [TileMap]'s [Shape2D]s enters one "
+"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
+"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
+"[Shape2D]s.\n"
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[CollisionObject2D] used by the [Physics2DServer].\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the "
+"[PhysicsBody2D] or [TileMap].\n"
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+
+#: doc/classes/Area2D.xml:160
+msgid ""
+"Emitted when one of a [PhysicsBody2D] or [TileMap]'s [Shape2D]s exits one of "
+"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
+"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
+"[Shape2D]s.\n"
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[CollisionObject2D] used by the [Physics2DServer].\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the "
+"[PhysicsBody2D] or [TileMap].\n"
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+
+#: doc/classes/Array.xml:4
+msgid "A generic array datatype."
+msgstr ""
+
+#: doc/classes/Array.xml:7
+msgid ""
+"A generic array that can contain several elements of any type, accessible by "
+"a numerical index starting at 0. Negative indices can be used to count from "
+"the back, like in Python (-1 is the last element, -2 is the second to last, "
+"etc.).\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"var array = [\"One\", 2, 3, \"Four\"]\n"
+"print(array[0]) # One.\n"
+"print(array[2]) # 3.\n"
+"print(array[-1]) # Four.\n"
+"array[2] = \"Three\"\n"
+"print(array[-2]) # Three.\n"
+"[/codeblock]\n"
+"Arrays can be concatenated using the [code]+[/code] operator:\n"
+"[codeblock]\n"
+"var array1 = [\"One\", 2]\n"
+"var array2 = [3, \"Four\"]\n"
+"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Concatenating with the [code]+=[/code] operator will create a "
+"new array, which has a cost. If you want to append another array to an "
+"existing array, [method append_array] is more efficient.\n"
+"[b]Note:[/b] Arrays are always passed by reference. To get a copy of an "
+"array that can be modified independently of the original array, use [method "
+"duplicate].\n"
+"[b]Note:[/b] When declaring an array with [code]const[/code], the array "
+"itself can still be mutated by defining the values at individual indices or "
+"pushing/removing elements. Using [code]const[/code] will only prevent "
+"assigning the constant with another value after it was initialized."
+msgstr ""
+
+#: doc/classes/Array.xml:34
+msgid "Constructs an array from a [PoolColorArray]."
+msgstr ""
+
+#: doc/classes/Array.xml:41
+msgid "Constructs an array from a [PoolVector3Array]."
+msgstr ""
+
+#: doc/classes/Array.xml:48
+msgid "Constructs an array from a [PoolVector2Array]."
+msgstr ""
+
+#: doc/classes/Array.xml:55
+msgid "Constructs an array from a [PoolStringArray]."
+msgstr ""
+
+#: doc/classes/Array.xml:62
+msgid "Constructs an array from a [PoolRealArray]."
+msgstr ""
+
+#: doc/classes/Array.xml:69
+msgid "Constructs an array from a [PoolIntArray]."
+msgstr ""
+
+#: doc/classes/Array.xml:76
+msgid "Constructs an array from a [PoolByteArray]."
+msgstr ""
+
+#: doc/classes/Array.xml:82 doc/classes/PoolByteArray.xml:23
+#: doc/classes/PoolColorArray.xml:23 doc/classes/PoolIntArray.xml:24
+#: doc/classes/PoolRealArray.xml:24 doc/classes/PoolStringArray.xml:24
+#: doc/classes/PoolVector2Array.xml:24 doc/classes/PoolVector3Array.xml:23
+msgid ""
+"Appends an element at the end of the array (alias of [method push_back])."
+msgstr ""
+
+#: doc/classes/Array.xml:88
+msgid ""
+"Appends another array at the end of this array.\n"
+"[codeblock]\n"
+"var array1 = [1, 2, 3]\n"
+"var array2 = [4, 5, 6]\n"
+"array1.append_array(array2)\n"
+"print(array1) # Prints [1, 2, 3, 4, 5, 6].\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Array.xml:100
+msgid ""
+"Returns the last element of the array. Prints an error and returns "
+"[code]null[/code] if the array is empty.\n"
+"[b]Note:[/b] Calling this function is not the same as writing [code]array[-1]"
+"[/code]. If the array is empty, accessing by index will pause project "
+"execution when running from the editor."
+msgstr ""
+
+#: doc/classes/Array.xml:109
+msgid ""
+"Finds the index of an existing value (or the insertion index that maintains "
+"sorting order, if the value is not yet present in the array) using binary "
+"search. Optionally, a [code]before[/code] specifier can be passed. If "
+"[code]false[/code], the returned index comes after all existing entries of "
+"the value in the array.\n"
+"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in "
+"unexpected behavior."
+msgstr ""
+
+#: doc/classes/Array.xml:120
+msgid ""
+"Finds the index of an existing value (or the insertion index that maintains "
+"sorting order, if the value is not yet present in the array) using binary "
+"search and a custom comparison method declared in the [code]obj[/code]. "
+"Optionally, a [code]before[/code] specifier can be passed. If [code]false[/"
+"code], the returned index comes after all existing entries of the value in "
+"the array. The custom method receives two arguments (an element from the "
+"array and the value searched for) and must return [code]true[/code] if the "
+"first argument is less than the second, and return [code]false[/code] "
+"otherwise.\n"
+"[codeblock]\n"
+"func cardinal_to_algebraic(a):\n"
+" match a:\n"
+" \"one\":\n"
+" return 1\n"
+" \"two\":\n"
+" return 2\n"
+" \"three\":\n"
+" return 3\n"
+" \"four\":\n"
+" return 4\n"
+" _:\n"
+" return 0\n"
+"\n"
+"func compare(a, b):\n"
+" return cardinal_to_algebraic(a) < cardinal_to_algebraic(b)\n"
+"\n"
+"func _ready():\n"
+" var a = [\"one\", \"two\", \"three\", \"four\"]\n"
+" # `compare` is defined in this object, so we use `self` as the `obj` "
+"parameter.\n"
+" print(a.bsearch_custom(\"three\", self, \"compare\", true)) # Expected "
+"value is 2.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Calling [method bsearch_custom] on an unsorted array results in "
+"unexpected behavior."
+msgstr ""
+
+#: doc/classes/Array.xml:148
+msgid ""
+"Clears the array. This is equivalent to using [method resize] with a size of "
+"[code]0[/code]."
+msgstr ""
+
+#: doc/classes/Array.xml:155
+msgid "Returns the number of times an element is in the array."
+msgstr ""
+
+#: doc/classes/Array.xml:162
+msgid ""
+"Returns a copy of the array.\n"
+"If [code]deep[/code] is [code]true[/code], a deep copy is performed: all "
+"nested arrays and dictionaries are duplicated and will not be shared with "
+"the original array. If [code]false[/code], a shallow copy is made and "
+"references to the original nested arrays and dictionaries are kept, so that "
+"modifying a sub-array or dictionary in the copy will also impact those "
+"referenced in the source array."
+msgstr ""
+
+#: doc/classes/Array.xml:169 doc/classes/PoolByteArray.xml:61
+#: doc/classes/PoolColorArray.xml:35 doc/classes/PoolIntArray.xml:36
+#: doc/classes/PoolRealArray.xml:36 doc/classes/PoolStringArray.xml:36
+#: doc/classes/PoolVector2Array.xml:36 doc/classes/PoolVector3Array.xml:35
+msgid "Returns [code]true[/code] if the array is empty."
+msgstr ""
+
+#: doc/classes/Array.xml:175
+msgid ""
+"Removes the first occurrence of a value from the array. To remove an element "
+"by index, use [method remove] instead.\n"
+"[b]Note:[/b] This method acts in-place and doesn't return a value.\n"
+"[b]Note:[/b] On large arrays, this method will be slower if the removed "
+"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 ""
+
+#: doc/classes/Array.xml:185
+msgid ""
+"Searches the array for a value and returns its index or [code]-1[/code] if "
+"not found. Optionally, the initial search index can be passed."
+msgstr ""
+
+#: doc/classes/Array.xml:192
+msgid ""
+"Searches the array in reverse order for a value and returns its index or "
+"[code]-1[/code] if not found."
+msgstr ""
+
+#: doc/classes/Array.xml:198
+msgid ""
+"Returns the first element of the array. Prints an error and returns "
+"[code]null[/code] if the array is empty.\n"
+"[b]Note:[/b] Calling this function is not the same as writing [code]array[0]"
+"[/code]. If the array is empty, accessing by index will pause project "
+"execution when running from the editor."
+msgstr ""
+
+#: doc/classes/Array.xml:206
+msgid ""
+"Returns [code]true[/code] if the array contains the given value.\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] This is equivalent to using the [code]in[/code] operator as "
+"follows:\n"
+"[codeblock]\n"
+"# Will evaluate to `true`.\n"
+"if 2 in [2, 4, 6, 8]:\n"
+" pass\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Array.xml:224
+msgid ""
+"Returns a hashed integer value representing the array and its contents.\n"
+"[b]Note:[/b] Arrays with equal contents can still produce different hashes. "
+"Only the exact same arrays will produce the same hashed integer value."
+msgstr ""
+
+#: doc/classes/Array.xml:232
+msgid ""
+"Inserts a new element at a given position in the array. The position must be "
+"valid, or at the end of the array ([code]pos == size()[/code]).\n"
+"[b]Note:[/b] This method acts in-place and doesn't return a value.\n"
+"[b]Note:[/b] On large arrays, this method will be slower if the inserted "
+"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 ""
+
+#: doc/classes/Array.xml:239 doc/classes/PoolByteArray.xml:96
+#: doc/classes/PoolColorArray.xml:48 doc/classes/PoolIntArray.xml:49
+#: doc/classes/PoolRealArray.xml:49 doc/classes/PoolStringArray.xml:49
+#: doc/classes/PoolVector2Array.xml:49 doc/classes/PoolVector3Array.xml:48
+msgid "Reverses the order of the elements in the array."
+msgstr ""
+
+#: doc/classes/Array.xml:245
+msgid ""
+"Returns the maximum value contained in the array if all elements are of "
+"comparable types. If the elements can't be compared, [code]null[/code] is "
+"returned."
+msgstr ""
+
+#: doc/classes/Array.xml:251
+msgid ""
+"Returns the minimum value contained in the array if all elements are of "
+"comparable types. If the elements can't be compared, [code]null[/code] is "
+"returned."
+msgstr ""
+
+#: doc/classes/Array.xml:258
+msgid ""
+"Removes and returns the element of the array at index [code]position[/code]. "
+"If negative, [code]position[/code] is considered relative to the end of the "
+"array. Leaves the array untouched and returns [code]null[/code] if the array "
+"is empty or if it's accessed out of bounds. An error message is printed when "
+"the array is accessed out of bounds, but not when the array is empty.\n"
+"[b]Note:[/b] On large arrays, this method can be slower than [method "
+"pop_back] as it will reindex the array's elements that are located after the "
+"removed element. The larger the array and the lower the index of the removed "
+"element, the slower [method pop_at] will be."
+msgstr ""
+
+#: doc/classes/Array.xml:265
+msgid ""
+"Removes and returns the last element of the array. Returns [code]null[/code] "
+"if the array is empty, without printing an error message. See also [method "
+"pop_front]."
+msgstr ""
+
+#: doc/classes/Array.xml:271
+msgid ""
+"Removes and returns the first element of the array. Returns [code]null[/"
+"code] if the array is empty, without printing an error message. See also "
+"[method pop_back].\n"
+"[b]Note:[/b] On large arrays, this method is much slower than [method "
+"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 ""
+
+#: doc/classes/Array.xml:278
+msgid ""
+"Appends an element at the end of the array. See also [method push_front]."
+msgstr ""
+
+#: doc/classes/Array.xml:284
+msgid ""
+"Adds an element at the beginning of the array. See also [method push_back].\n"
+"[b]Note:[/b] On large arrays, this method is much slower than [method "
+"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 ""
+
+#: doc/classes/Array.xml:291
+msgid ""
+"Removes an element from the array by index. If the index does not exist in "
+"the array, nothing happens. To remove an element by searching for its value, "
+"use [method erase] instead.\n"
+"[b]Note:[/b] This method acts in-place and doesn't return a value.\n"
+"[b]Note:[/b] On large arrays, this method will be slower if the removed "
+"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 ""
+
+#: doc/classes/Array.xml:299
+msgid ""
+"Resizes the array to contain a different number of elements. If the array "
+"size is smaller, elements are cleared, if bigger, new elements are "
+"[code]null[/code]."
+msgstr ""
+
+#: doc/classes/Array.xml:307
+msgid ""
+"Searches the array in reverse order. Optionally, a start search index can be "
+"passed. If negative, the start index is considered relative to the end of "
+"the array."
+msgstr ""
+
+#: doc/classes/Array.xml:312
+msgid ""
+"Shuffles the array such that the items will have a random order. This method "
+"uses the global random number generator common to methods such as [method "
+"@GDScript.randi]. Call [method @GDScript.randomize] to ensure that a new "
+"seed will be used each time if you want non-reproducible shuffling."
+msgstr ""
+
+#: doc/classes/Array.xml:318
+msgid "Returns the number of elements in the array."
+msgstr ""
+
+#: doc/classes/Array.xml:328
+msgid ""
+"Duplicates the subset described in the function and returns it in an array, "
+"deeply copying the array if [code]deep[/code] is [code]true[/code]. Lower "
+"and upper index are inclusive, with the [code]step[/code] describing the "
+"change between indices while slicing."
+msgstr ""
+
+#: doc/classes/Array.xml:333
+msgid ""
+"Sorts the array.\n"
+"[b]Note:[/b] Strings are sorted in alphabetical order (as opposed to natural "
+"order). This may lead to unexpected behavior when sorting an array of "
+"strings ending with a sequence of numbers. Consider the following example:\n"
+"[codeblock]\n"
+"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n"
+"strings.sort()\n"
+"print(strings) # Prints [string1, string10, string11, string2]\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Array.xml:346
+msgid ""
+"Sorts the array using a custom method. The arguments are an object that "
+"holds the method and the name of such method. The custom method receives two "
+"arguments (a pair of elements from the array) and must return either "
+"[code]true[/code] or [code]false[/code].\n"
+"For two elements [code]a[/code] and [code]b[/code], if the given method "
+"returns [code]true[/code], element [code]b[/code] will be after element "
+"[code]a[/code] in the array.\n"
+"[b]Note:[/b] You cannot randomize the return value as the heapsort algorithm "
+"expects a deterministic result. Doing so will result in unexpected "
+"behavior.\n"
+"[codeblock]\n"
+"class MyCustomSorter:\n"
+" static func sort_ascending(a, b):\n"
+" if a[0] < b[0]:\n"
+" return true\n"
+" return false\n"
+"\n"
+"var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n"
+"my_items.sort_custom(MyCustomSorter, \"sort_ascending\")\n"
+"print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:4
+msgid ""
+"[Mesh] type that provides utility for constructing a surface from arrays."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:7
+msgid ""
+"The [ArrayMesh] is used to construct a [Mesh] by specifying the attributes "
+"as arrays.\n"
+"The most basic example is the creation of a single triangle:\n"
+"[codeblock]\n"
+"var vertices = PoolVector3Array()\n"
+"vertices.push_back(Vector3(0, 1, 0))\n"
+"vertices.push_back(Vector3(1, 0, 0))\n"
+"vertices.push_back(Vector3(0, 0, 1))\n"
+"# Initialize the ArrayMesh.\n"
+"var arr_mesh = ArrayMesh.new()\n"
+"var arrays = []\n"
+"arrays.resize(ArrayMesh.ARRAY_MAX)\n"
+"arrays[ArrayMesh.ARRAY_VERTEX] = vertices\n"
+"# Create the Mesh.\n"
+"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n"
+"var m = MeshInstance.new()\n"
+"m.mesh = arr_mesh\n"
+"[/codeblock]\n"
+"The [MeshInstance] is ready to be added to the [SceneTree] to be shown.\n"
+"See also [ImmediateGeometry], [MeshDataTool] and [SurfaceTool] for "
+"procedural geometry generation.\n"
+"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-"
+"OpenGL/Face-culling]winding order[/url] for front faces of triangle "
+"primitive modes."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:29
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/content/procedural_geometry/"
+"arraymesh.html"
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:36
+msgid ""
+"Adds name for a blend shape that will be added with [method "
+"add_surface_from_arrays]. Must be called before surface is added."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:46
+msgid ""
+"Creates a new surface.\n"
+"Surfaces are created to be rendered using a [code]primitive[/code], which "
+"may be any of the types defined in [enum Mesh.PrimitiveType]. (As a note, "
+"when using indices, it is recommended to only use points, lines, or "
+"triangles.) [method Mesh.get_surface_count] will become the [code]surf_idx[/"
+"code] for this new surface.\n"
+"The [code]arrays[/code] argument is an array of arrays. See [enum ArrayType] "
+"for the values used in this array. For example, [code]arrays[0][/code] is "
+"the array of vertices. That first vertex sub-array is always required; the "
+"others are optional. Adding an index array puts this function into \"index "
+"mode\" where the vertex and other arrays become the sources of data and the "
+"index array defines the vertex order. All sub-arrays must have the same "
+"length as the vertex array or be empty, except for [constant ARRAY_INDEX] if "
+"it is used."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:54
+msgid "Removes all blend shapes from this [ArrayMesh]."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:60
+msgid "Removes all surfaces from this [ArrayMesh]."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:66
+msgid "Returns the number of blend shapes that the [ArrayMesh] holds."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:73
+msgid "Returns the name of the blend shape at this index."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:81
+msgid ""
+"Will perform a UV unwrap on the [ArrayMesh] to prepare the mesh for "
+"lightmapping."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:87
+msgid "Will regenerate normal maps for the [ArrayMesh]."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:101
+msgid ""
+"Returns the index of the first surface with this name held within this "
+"[ArrayMesh]. If none are found, -1 is returned."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:108
+msgid ""
+"Returns the length in indices of the index array in the requested surface "
+"(see [method add_surface_from_arrays])."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:115
+msgid ""
+"Returns the length in vertices of the vertex array in the requested surface "
+"(see [method add_surface_from_arrays])."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:122
+msgid ""
+"Returns the format mask of the requested surface (see [method "
+"add_surface_from_arrays])."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:129
+msgid "Gets the name assigned to this surface."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:136
+msgid ""
+"Returns the primitive type of the requested surface (see [method "
+"add_surface_from_arrays])."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:143
+msgid ""
+"Removes a surface at position [code]surf_idx[/code], shifting greater "
+"surfaces one [code]surf_idx[/code] slot down."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:151
+msgid "Sets a name for a given surface."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:160
+msgid ""
+"Updates a specified region of mesh arrays on the GPU.\n"
+"[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 ""
+
+#: doc/classes/ArrayMesh.xml:167
+msgid "Sets the blend shape mode to one of [enum Mesh.BlendShapeMode]."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:170 doc/classes/PrimitiveMesh.xml:26
+msgid ""
+"Overrides the [AABB] with one defined by user for use with frustum culling. "
+"Especially useful to avoid unexpected culling when using a shader to offset "
+"vertices."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:175
+msgid "Default value used for index_array_len when no indices are present."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:178
+msgid "Amount of weights/bone indices per vertex (always 4)."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:181
+msgid "[PoolVector3Array], [PoolVector2Array], or [Array] of vertex positions."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:184
+msgid "[PoolVector3Array] of vertex normals."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:187
+msgid ""
+"[PoolRealArray] of vertex tangents. Each element in groups of 4 floats, "
+"first 3 floats determine the tangent, and the last the binormal direction as "
+"-1 or 1."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:190
+msgid "[PoolColorArray] of vertex colors."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:193
+msgid "[PoolVector2Array] for UV coordinates."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:196
+msgid "[PoolVector2Array] for second UV coordinates."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:199
+msgid ""
+"[PoolRealArray] or [PoolIntArray] of bone indices. Each element in groups of "
+"4 floats."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:202
+msgid "[PoolRealArray] of bone weights. Each element in groups of 4 floats."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:205
+msgid ""
+"[PoolIntArray] of integers used as indices referencing vertices, colors, "
+"normals, tangents, and textures. All of those arrays must have the same "
+"number of elements as the vertex array. No index can be beyond the vertex "
+"array size. When this index array is present, it puts the function into "
+"\"index mode,\" where the index selects the *i*'th vertex, normal, tangent, "
+"color, UV, etc. This means if you want to have different normals or colors "
+"along an edge, you have to duplicate the vertices.\n"
+"For triangles, the index array is interpreted as triples, referring to the "
+"vertices of each triangle. For lines, the index array is in pairs indicating "
+"the start and end of each line."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
+#: doc/classes/VisualServer.xml:3270
+msgid "Represents the size of the [enum ArrayType] enum."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:212
+msgid "Array format will include vertices (mandatory)."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:215
+msgid "Array format will include normals."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:218
+msgid "Array format will include tangents."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:221
+msgid "Array format will include a color array."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:224
+msgid "Array format will include UVs."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:227
+msgid "Array format will include another set of UVs."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:230
+msgid "Array format will include bone indices."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:233
+msgid "Array format will include bone weights."
+msgstr ""
+
+#: doc/classes/ArrayMesh.xml:236
+msgid "Index array will be used."
+msgstr ""
+
+#: doc/classes/ARVRAnchor.xml:4
+msgid "An anchor point in AR space."
+msgstr ""
+
+#: doc/classes/ARVRAnchor.xml:7
+msgid ""
+"The [ARVRAnchor] point is a spatial node that maps a real world location "
+"identified by the AR platform to a position within the game world. For "
+"example, as long as plane detection in ARKit is on, ARKit will identify and "
+"update the position of planes (tables, floors, etc) and create anchors for "
+"them.\n"
+"This node is mapped to one of the anchors through its unique ID. When you "
+"receive a signal that a new anchor is available, you should add this node to "
+"your scene for that anchor. You can predefine nodes and set the ID; the "
+"nodes will simply remain on 0,0,0 until a plane is recognized.\n"
+"Keep in mind that, as long as plane detection is enabled, the size, placing "
+"and orientation of an anchor will be updated as the detection logic learns "
+"more about the real world out there especially if only part of the surface "
+"is in view."
+msgstr ""
+
+#: doc/classes/ARVRAnchor.xml:17
+msgid "Returns the name given to this anchor."
+msgstr ""
+
+#: doc/classes/ARVRAnchor.xml:23
+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 ""
+
+#: doc/classes/ARVRAnchor.xml:29
+msgid ""
+"If provided by the [ARVRInterface], this returns a mesh object for the "
+"anchor. For an anchor, this can be a shape related to the object being "
+"tracked or it can be a mesh that provides topology related to the anchor and "
+"can be used to create shadows/reflections on surfaces or for generating "
+"collision shapes."
+msgstr ""
+
+#: doc/classes/ARVRAnchor.xml:35
+msgid ""
+"Returns a plane aligned with our anchor; handy for intersection testing."
+msgstr ""
+
+#: doc/classes/ARVRAnchor.xml:41
+msgid ""
+"Returns the estimated size of the plane that was detected. Say when the "
+"anchor relates to a table in the real world, this is the estimated size of "
+"the surface of that table."
+msgstr ""
+
+#: doc/classes/ARVRAnchor.xml:47
+msgid ""
+"The anchor's ID. You can set this before the anchor itself exists. The first "
+"anchor gets an ID of [code]1[/code], the second an ID of [code]2[/code], "
+"etc. When anchors get removed, the engine can then assign the corresponding "
+"ID to new anchors. The most common situation where anchors \"disappear\" is "
+"when the AR server identifies that two anchors represent different parts of "
+"the same plane and merges them."
+msgstr ""
+
+#: doc/classes/ARVRAnchor.xml:54
+msgid ""
+"Emitted when the mesh associated with the anchor changes or when one becomes "
+"available. This is especially important for topology that is constantly "
+"being [code]mesh_updated[/code]."
+msgstr ""
+
+#: doc/classes/ARVRCamera.xml:4
+msgid ""
+"A camera node with a few overrules for AR/VR applied, such as location "
+"tracking."
+msgstr ""
+
+#: doc/classes/ARVRCamera.xml:7
+msgid ""
+"This is a helper spatial node for our camera; note that, if stereoscopic "
+"rendering is applicable (VR-HMD), most of the camera properties are ignored, "
+"as the HMD information overrides them. The only properties that can be "
+"trusted are the near and far planes.\n"
+"The position and orientation of this node is automatically updated by the "
+"ARVR Server to represent the location of the HMD if such tracking is "
+"available and can thus be used by game logic. Note that, in contrast to the "
+"ARVR Controller, the render thread has access to the most up-to-date "
+"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 ""
+
+#: doc/classes/ARVRCamera.xml:11 doc/classes/ARVRController.xml:12
+#: doc/classes/ARVRInterface.xml:11 doc/classes/ARVROrigin.xml:13
+#: doc/classes/ARVRPositionalTracker.xml:12 doc/classes/ARVRServer.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/vr/index.html"
+msgstr ""
+
+#: doc/classes/ARVRController.xml:4
+msgid "A spatial node representing a spatially-tracked controller."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:7
+msgid ""
+"This is a helper spatial node that is linked to the tracking of controllers. "
+"It also offers several handy passthroughs to the state of buttons and such "
+"on the controllers.\n"
+"Controllers are linked by their ID. You can create controller nodes before "
+"the controllers are available. If your game always uses two controllers (one "
+"for each hand), you can predefine the controllers with ID 1 and 2; they will "
+"become active as soon as the controllers are identified. If you expect "
+"additional controllers to be used, you should react to the signals and add "
+"ARVRController nodes to your scene.\n"
+"The position of the controller node is automatically updated by the "
+"[ARVRServer]. This makes this node ideal to add child nodes to visualize the "
+"controller."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:18
+msgid ""
+"If active, returns the name of the associated controller if provided by the "
+"AR/VR SDK used."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:24
+msgid ""
+"Returns the hand holding this controller, if known. See [enum "
+"ARVRPositionalTracker.TrackerHand]."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:30
+msgid ""
+"Returns [code]true[/code] if the bound controller is active. ARVR systems "
+"attempt to track active controllers."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:37
+msgid ""
+"Returns the value of the given axis for things like triggers, touchpads, "
+"etc. that are embedded into the controller."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:43
+msgid ""
+"Returns the ID of the joystick object bound to this. Every controller "
+"tracked by the [ARVRServer] that has buttons and axis will also be "
+"registered as a joystick within Godot. This means that all the normal "
+"joystick tracking and input mapping will work for buttons and axis found on "
+"the AR/VR controllers. This ID is purely offered as information so you can "
+"link up the controller with its joystick entry."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:49
+msgid ""
+"If provided by the [ARVRInterface], this returns a mesh associated with the "
+"controller. This can be used to visualize the controller."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:56
+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 ""
+
+#: doc/classes/ARVRController.xml:62
+msgid ""
+"The controller's ID.\n"
+"A controller ID of 0 is unbound and will always result in an inactive node. "
+"Controller ID 1 is reserved for the first controller that identifies itself "
+"as the left-hand controller and ID 2 is reserved for the first controller "
+"that identifies itself as the right-hand controller.\n"
+"For any other controller that the [ARVRServer] detects, we continue with "
+"controller ID 3.\n"
+"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 ""
+
+#: doc/classes/ARVRController.xml:68
+msgid ""
+"The degree to which the controller vibrates. Ranges from [code]0.0[/code] to "
+"[code]1.0[/code] with precision [code].01[/code]. If changed, updates "
+"[member ARVRPositionalTracker.rumble] accordingly.\n"
+"This is a useful property to animate if you want the controller to vibrate "
+"for a limited duration."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:76
+msgid "Emitted when a button on this controller is pressed."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:82
+msgid "Emitted when a button on this controller is released."
+msgstr ""
+
+#: doc/classes/ARVRController.xml:88
+msgid ""
+"Emitted when the mesh associated with the controller changes or when one "
+"becomes available. Generally speaking this will be a static mesh after "
+"becoming available."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:4
+msgid "Base class for an AR/VR interface implementation."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:7
+msgid ""
+"This class needs to be implemented to make an AR or VR platform available to "
+"Godot and these should be implemented as C++ modules or GDNative modules "
+"(note that for GDNative the subclass ARVRScriptInterface should be used). "
+"Part of the interface is exposed to GDScript so you can detect, enable and "
+"configure an AR or VR platform.\n"
+"Interfaces should be written in such a way that simply enabling them will "
+"give us a working setup. You can query the available interfaces through "
+"[ARVRServer]."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:17
+msgid ""
+"If this is an AR interface that requires displaying a camera feed as the "
+"background, this method returns the feed ID in the [CameraServer] for this "
+"interface."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:23
+msgid ""
+"Returns a combination of [enum Capabilities] flags providing information "
+"about the capabilities of this interface."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:29
+msgid "Returns the name of this interface (OpenVR, OpenHMD, ARKit, etc)."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:35
+msgid ""
+"Returns the resolution at which we should render our intermediate results "
+"before things like lens distortion are applied by the VR platform."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:41
+msgid ""
+"If supported, returns the status of our tracking. This will allow you to "
+"provide feedback to the user whether there are issues with positional "
+"tracking."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:47
+msgid ""
+"Call this to initialize this interface. The first interface that is "
+"initialized is identified as the primary interface and it will be used for "
+"rendering output.\n"
+"After initializing the interface you want to use you then need to enable the "
+"AR/VR mode of a viewport and rendering should commence.\n"
+"[b]Note:[/b] You must enable the AR/VR mode on the main viewport for any "
+"device that uses the main output of Godot, such as for mobile VR.\n"
+"If you do this for a platform that handles its own output (such as OpenVR) "
+"Godot will show just one eye without distortion on screen. Alternatively, "
+"you can add a separate viewport node to your scene and enable AR/VR on that "
+"viewport. It will be used to output to the HMD, leaving you free to do "
+"anything you like in the main window, such as using a separate camera as a "
+"spectator camera or rendering something completely different.\n"
+"While currently not used, you can activate additional interfaces. You may "
+"wish to do this if you want to track controllers from other platforms. "
+"However, at this point in time only one interface can render to an HMD."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:57
+msgid ""
+"Returns [code]true[/code] if the current output of this interface is in "
+"stereo."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:63
+msgid "Turns the interface off."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:69
+msgid "On an AR interface, [code]true[/code] if anchor detection is enabled."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:72
+msgid "[code]true[/code] if this interface been initialized."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:75
+msgid "[code]true[/code] if this is the primary interface."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:80
+msgid "No ARVR capabilities."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:83
+msgid ""
+"This interface can work with normal rendering output (non-HMD based AR)."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:86
+msgid "This interface supports stereoscopic rendering."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:89
+msgid "This interface supports AR (video background and real world tracking)."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:92
+msgid ""
+"This interface outputs to an external device. If the main viewport is used, "
+"the on screen output is an unmodified buffer of either the left or right eye "
+"(stretched if the viewport size is not changed to the same aspect ratio of "
+"[method get_render_targetsize]). Using a separate viewport node frees up the "
+"main viewport for other purposes."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:95
+msgid ""
+"Mono output, this is mostly used internally when retrieving positioning "
+"information for our camera node or when stereo scopic rendering is not "
+"supported."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:98
+msgid ""
+"Left eye output, this is mostly used internally when rendering the image for "
+"the left eye and obtaining positioning and projection information."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:101
+msgid ""
+"Right eye output, this is mostly used internally when rendering the image "
+"for the right eye and obtaining positioning and projection information."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:104
+msgid "Tracking is behaving as expected."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:107
+msgid ""
+"Tracking is hindered by excessive motion (the player is moving faster than "
+"tracking can keep up)."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:110
+msgid ""
+"Tracking is hindered by insufficient features, it's too dark (for camera-"
+"based tracking), player is blocked, etc."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:113
+msgid ""
+"We don't know the status of the tracking or this interface does not provide "
+"feedback."
+msgstr ""
+
+#: doc/classes/ARVRInterface.xml:116
+msgid ""
+"Tracking is not functional (camera not plugged in or obscured, lighthouses "
+"turned off, etc.)."
+msgstr ""
+
+#: modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml:4
+msgid "GDNative wrapper for an ARVR interface."
+msgstr ""
+
+#: modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml:7
+msgid ""
+"This is a wrapper class for GDNative implementations of the ARVR interface. "
+"To use a GDNative ARVR interface, simply instantiate this object and set "
+"your GDNative library containing the ARVR interface implementation."
+msgstr ""
+
+#: doc/classes/ARVROrigin.xml:4
+msgid "The origin point in AR/VR."
+msgstr ""
+
+#: doc/classes/ARVROrigin.xml:7
+msgid ""
+"This is a special node within the AR/VR system that maps the physical "
+"location of the center of our tracking space to the virtual location within "
+"our game world.\n"
+"There should be only one of these nodes in your scene and you must have one. "
+"All the ARVRCamera, ARVRController and ARVRAnchor nodes should be direct "
+"children of this node for spatial tracking to work correctly.\n"
+"It is the position of this node that you update when your character needs to "
+"move through your game world while we're not moving in the real world. "
+"Movement in the real world is always in relation to this origin point.\n"
+"For example, if your character is driving a car, the ARVROrigin node should "
+"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 ""
+
+#: doc/classes/ARVROrigin.xml:19
+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.\n"
+"[b]Note:[/b] This method is a passthrough to the [ARVRServer] itself."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:4
+msgid "A tracked object."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:7
+msgid ""
+"An instance of this object represents a device that is tracked, such as a "
+"controller or anchor point. HMDs aren't represented here as they are handled "
+"internally.\n"
+"As controllers are turned on and the AR/VR interface detects them, instances "
+"of this object are automatically added to this list of active tracking "
+"objects accessible through the [ARVRServer].\n"
+"The [ARVRController] and [ARVRAnchor] both consume objects of this type and "
+"should be used in your project. The positional trackers are just under-the-"
+"hood objects that make this all work. These are mostly exposed so that "
+"GDNative-based interfaces can interact with them."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:18
+msgid ""
+"Returns the hand holding this tracker, if known. See [enum TrackerHand] "
+"constants."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:24
+msgid ""
+"If this is a controller that is being tracked, the controller will also be "
+"represented by a joystick entry with this ID."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:30
+msgid ""
+"Returns the mesh related to a controller or anchor point if one is available."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:36
+msgid "Returns the controller or anchor point's name if available."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:42
+msgid "Returns the controller's orientation matrix."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:48
+msgid "Returns the world-space controller position."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:54
+msgid ""
+"Returns the internal tracker ID. This uniquely identifies the tracker per "
+"tracker type and matches the ID you need to specify for nodes such as the "
+"[ARVRController] and [ARVRAnchor] nodes."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:60
+msgid "Returns [code]true[/code] if this device tracks orientation."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:66
+msgid "Returns [code]true[/code] if this device tracks position."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:73
+msgid "Returns the transform combining this device's orientation and position."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:79
+msgid "Returns the tracker's type."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:85
+msgid ""
+"The degree to which the tracker rumbles. Ranges from [code]0.0[/code] to "
+"[code]1.0[/code] with precision [code].01[/code]."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:90
+msgid "The hand this tracker is held in is unknown or not applicable."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:93
+msgid "This tracker is the left hand controller."
+msgstr ""
+
+#: doc/classes/ARVRPositionalTracker.xml:96
+msgid "This tracker is the right hand controller."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:4
+msgid "Server for AR and VR features."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:7
+msgid ""
+"The AR/VR server is the heart of our Advanced and Virtual Reality solution "
+"and handles all the processing."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:17
+msgid "Registers an [ARVRInterface] object."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:24
+msgid ""
+"Registers a new [ARVRPositionalTracker] that tracks a spatial location in "
+"real space."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:32
+msgid ""
+"This is an important function to understand correctly. AR and VR platforms "
+"all handle positioning slightly differently.\n"
+"For platforms that do not offer spatial tracking, our origin point (0,0,0) "
+"is the location of our HMD, but you have little control over the direction "
+"the player is facing in the real world.\n"
+"For platforms that do offer spatial tracking, our origin point depends very "
+"much on the system. For OpenVR, our origin point is usually the center of "
+"the tracking space, on the ground. For other platforms, it's often the "
+"location of the tracking camera.\n"
+"This method allows you to center your tracker on the location of the HMD. It "
+"will take the current location of the HMD and use that to adjust all your "
+"tracking data; in essence, realigning the real world to your player's "
+"current position in the game world.\n"
+"For this method to produce usable results, tracking information must be "
+"available. This often takes a few frames after starting your game.\n"
+"You should call this method after a few seconds have passed. For instance, "
+"when the user requests a realignment of the display holding a designated "
+"button on a controller for a short period of time, or when implementing a "
+"teleport mechanism."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:44
+msgid ""
+"Clears our current primary interface if it is set to the provided interface."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:51
+msgid ""
+"Finds an interface by its name. For instance, if your project uses "
+"capabilities of an AR/VR platform, you can find the interface for that "
+"platform by name and initialize it."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:57
+msgid "Returns the primary interface's transformation."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:64
+msgid ""
+"Returns the interface registered at a given index in our list of interfaces."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:70
+msgid ""
+"Returns the number of interfaces currently registered with the AR/VR server. "
+"If your project supports multiple AR/VR platforms, you can look through the "
+"available interface, and either present the user with a selection or simply "
+"try to initialize each interface and use the first one that returns "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:76
+msgid ""
+"Returns a list of available interfaces the ID and name of each interface."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:82
+msgid ""
+"Returns the absolute timestamp (in μs) of the last [ARVRServer] commit of "
+"the AR/VR eyes to [VisualServer]. The value comes from an internal call to "
+"[method OS.get_ticks_usec]."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:88
+msgid ""
+"Returns the duration (in μs) of the last frame. This is computed as the "
+"difference between [method get_last_commit_usec] and [method "
+"get_last_process_usec] when committing."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:94
+msgid ""
+"Returns the absolute timestamp (in μs) of the last [ARVRServer] process "
+"callback. The value comes from an internal call to [method OS."
+"get_ticks_usec]."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:100
+msgid ""
+"Returns the reference frame transform. Mostly used internally and exposed "
+"for GDNative build interfaces."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:107
+msgid "Returns the positional tracker at the given ID."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:113
+msgid "Returns the number of trackers currently registered."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:120
+msgid "Removes this interface."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:127
+msgid "Removes this positional tracker."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:133
+msgid "The primary [ARVRInterface] currently bound to the [ARVRServer]."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:136
+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 ""
+
+#: doc/classes/ARVRServer.xml:143
+msgid "Emitted when a new interface has been added."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:149
+msgid "Emitted when an interface is removed."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:157
+msgid ""
+"Emitted when a new tracker has been added. If you don't use a fixed number "
+"of controllers or if you're using [ARVRAnchor]s for an AR solution, it is "
+"important to react to this signal to add the appropriate [ARVRController] or "
+"[ARVRAnchor] nodes related to this new tracker."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:165
+msgid ""
+"Emitted when a tracker is removed. You should remove any [ARVRController] or "
+"[ARVRAnchor] points if applicable. This is not mandatory, the nodes simply "
+"become inactive and will be made active again when a new tracker becomes "
+"available (i.e. a new controller is switched on that takes the place of the "
+"previous one)."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:171
+msgid "The tracker tracks the location of a controller."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:174
+msgid "The tracker tracks the location of a base station."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:177
+msgid "The tracker tracks the location and size of an AR anchor."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:180
+msgid "Used internally to filter trackers of any known type."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:183
+msgid "Used internally if we haven't set the tracker type yet."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:186
+msgid "Used internally to select all trackers."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:189
+msgid ""
+"Fully reset the orientation of the HMD. Regardless of what direction the "
+"user is looking to in the real world. The user will look dead ahead in the "
+"virtual world."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:192
+msgid ""
+"Resets the orientation but keeps the tilt of the device. So if we're looking "
+"down, we keep looking down but heading will be reset."
+msgstr ""
+
+#: doc/classes/ARVRServer.xml:195
+msgid ""
+"Does not reset the orientation of the HMD, only the position of the player "
+"gets centered."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:4
+msgid "Container that preserves its child controls' aspect ratio."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:7
+msgid ""
+"Arranges child controls in a way to preserve their aspect ratio "
+"automatically whenever the container is resized. Solves the problem where "
+"the container size is dynamic and the contents' size needs to adjust "
+"accordingly without losing proportions."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:15
+msgid "Specifies the horizontal relative position of child controls."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:18
+msgid "Specifies the vertical relative position of child controls."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:21
+msgid ""
+"The aspect ratio to enforce on child controls. This is the width divided by "
+"the height. The ratio depends on the [member stretch_mode]."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:24
+msgid "The stretch mode used to align child controls."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:29
+msgid ""
+"The height of child controls is automatically adjusted based on the width of "
+"the container."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:32
+msgid ""
+"The width of child controls is automatically adjusted based on the height of "
+"the container."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:35
+msgid ""
+"The bounding rectangle of child controls is automatically adjusted to fit "
+"inside the container while keeping the aspect ratio."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:38
+msgid ""
+"The width and height of child controls is automatically adjusted to make "
+"their bounding rectangle cover the entire area of the container while "
+"keeping the aspect ratio.\n"
+"When the bounding rectangle of child controls exceed the container's size "
+"and [member Control.rect_clip_content] is enabled, this allows to show only "
+"the container's area restricted by its own bounding rectangle."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:42
+msgid ""
+"Aligns child controls with the beginning (left or top) of the container."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:45
+msgid "Aligns child controls with the center of the container."
+msgstr ""
+
+#: doc/classes/AspectRatioContainer.xml:48
+msgid "Aligns child controls with the end (right or bottom) of the container."
+msgstr ""
+
+#: doc/classes/AStar.xml:4
+msgid ""
+"An implementation of A* to find the shortest paths among connected points in "
+"space."
+msgstr ""
+
+#: doc/classes/AStar.xml:7
+msgid ""
+"A* (A star) is a computer algorithm that is widely used in pathfinding and "
+"graph traversal, the process of plotting short paths among vertices "
+"(points), passing through a given set of edges (segments). It enjoys "
+"widespread use due to its performance and accuracy. Godot's A* "
+"implementation uses points in three-dimensional space and Euclidean "
+"distances by default.\n"
+"You must add points manually with [method add_point] and create segments "
+"manually with [method connect_points]. Then you can test if there is a path "
+"between two points with the [method are_points_connected] function, get a "
+"path containing indices by [method get_id_path], or one containing actual "
+"coordinates with [method get_point_path].\n"
+"It is also possible to use non-Euclidean distances. To do so, create a class "
+"that extends [code]AStar[/code] and override methods [method _compute_cost] "
+"and [method _estimate_cost]. Both take two indices and return a length, as "
+"is shown in the following example.\n"
+"[codeblock]\n"
+"class 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] should return a lower bound of the distance, i.e. "
+"[code]_estimate_cost(u, v) <= _compute_cost(u, v)[/code]. This serves as a "
+"hint to the algorithm because the custom [code]_compute_cost[/code] might be "
+"computation-heavy. If this is not the case, make [method _estimate_cost] "
+"return the same value as [method _compute_cost] to provide the algorithm "
+"with the most accurate information.\n"
+"If the default [method _estimate_cost] and [method _compute_cost] methods "
+"are used, or if the supplied [method _estimate_cost] method returns a lower "
+"bound of the cost, then the paths returned by A* will be the lowest-cost "
+"paths. Here, the cost of a path equals the sum of the [method _compute_cost] "
+"results of all segments in the path multiplied by the [code]weight_scale[/"
+"code]s of the endpoints of the respective segments. If the default methods "
+"are used and the [code]weight_scale[/code]s of all points are set to "
+"[code]1.0[/code], then this equals the sum of Euclidean distances of all "
+"segments in the path."
+msgstr ""
+
+#: doc/classes/AStar.xml:31
+msgid ""
+"Called when computing the cost between two connected points.\n"
+"Note that this function is hidden in the default [code]AStar[/code] class."
+msgstr ""
+
+#: doc/classes/AStar.xml:40
+msgid ""
+"Called when estimating the cost between a point and the path's ending "
+"point.\n"
+"Note that this function is hidden in the default [code]AStar[/code] class."
+msgstr ""
+
+#: doc/classes/AStar.xml:50
+msgid ""
+"Adds a new point at the given position with the given identifier. The "
+"[code]id[/code] must be 0 or larger, and the [code]weight_scale[/code] must "
+"be 1 or larger.\n"
+"The [code]weight_scale[/code] is multiplied by the result of [method "
+"_compute_cost] when determining the overall cost of traveling across a "
+"segment from a neighboring point to this point. Thus, all else being equal, "
+"the algorithm prefers points with lower [code]weight_scale[/code]s to form a "
+"path.\n"
+"[codeblock]\n"
+"var astar = AStar.new()\n"
+"astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with "
+"weight_scale 4 and id 1\n"
+"[/codeblock]\n"
+"If there already exists a point for the given [code]id[/code], its position "
+"and weight scale are updated to the given values."
+msgstr ""
+
+#: doc/classes/AStar.xml:65
+msgid ""
+"Returns whether the two given points are directly connected by a segment. 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/AStar.xml:71 doc/classes/AStar2D.xml:56
+msgid "Clears all the points and segments."
+msgstr ""
+
+#: doc/classes/AStar.xml:80
+msgid ""
+"Creates a 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 allowed, not the reverse direction.\n"
+"[codeblock]\n"
+"var astar = AStar.new()\n"
+"astar.add_point(1, Vector3(1, 1, 0))\n"
+"astar.add_point(2, Vector3(0, 5, 0))\n"
+"astar.connect_points(1, 2, false)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AStar.xml:95
+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 ""
+
+#: doc/classes/AStar.xml:101 doc/classes/AStar2D.xml:85
+msgid "Returns the next available point ID with no point associated to it."
+msgstr ""
+
+#: doc/classes/AStar.xml:109 doc/classes/AStar2D.xml:93
+msgid ""
+"Returns the ID of the closest point to [code]to_position[/code], optionally "
+"taking disabled points into account. Returns [code]-1[/code] if there are no "
+"points in the points pool.\n"
+"[b]Note:[/b] If several points are the closest to [code]to_position[/code], "
+"the one with the smallest ID will be returned, ensuring a deterministic "
+"result."
+msgstr ""
+
+#: doc/classes/AStar.xml:117
+msgid ""
+"Returns the closest position to [code]to_position[/code] that resides inside "
+"a segment between two connected points.\n"
+"[codeblock]\n"
+"var astar = AStar.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 5, 0))\n"
+"astar.connect_points(1, 2)\n"
+"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns "
+"(0, 3, 0)\n"
+"[/codeblock]\n"
+"The result is in the segment that goes from [code]y = 0[/code] to [code]y = "
+"5[/code]. It's the closest position in the segment to the given point."
+msgstr ""
+
+#: doc/classes/AStar.xml:133
+msgid ""
+"Returns an array with the IDs of the points that form the path found by "
+"AStar between the given points. The array is ordered from the starting point "
+"to the ending point of the path.\n"
+"[codeblock]\n"
+"var astar = AStar.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1\n"
+"astar.add_point(3, Vector3(1, 1, 0))\n"
+"astar.add_point(4, Vector3(2, 0, 0))\n"
+"\n"
+"astar.connect_points(1, 2, false)\n"
+"astar.connect_points(2, 3, false)\n"
+"astar.connect_points(4, 3, false)\n"
+"astar.connect_points(1, 4, false)\n"
+"\n"
+"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n"
+"[/codeblock]\n"
+"If you change the 2nd point's weight to 3, then the result will be [code][1, "
+"4, 3][/code] instead, because now even though the distance is longer, it's "
+"\"easier\" to get through point 4 than through point 2."
+msgstr ""
+
+#: doc/classes/AStar.xml:154 doc/classes/AStar2D.xml:138
+msgid ""
+"Returns the capacity of the structure backing the points, useful in "
+"conjunction with [code]reserve_space[/code]."
+msgstr ""
+
+#: doc/classes/AStar.xml:161
+msgid ""
+"Returns an array with the IDs of the points that form the connection with "
+"the given point.\n"
+"[codeblock]\n"
+"var astar = AStar.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 1, 0))\n"
+"astar.add_point(3, Vector3(1, 1, 0))\n"
+"astar.add_point(4, Vector3(2, 0, 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) # Returns [2, 3]\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AStar.xml:179 doc/classes/AStar2D.xml:163
+msgid "Returns the number of points currently in the points pool."
+msgstr ""
+
+#: doc/classes/AStar.xml:187
+msgid ""
+"Returns an array with the points that are in the path found by AStar between "
+"the given points. The array is ordered from the starting point to the ending "
+"point of the path.\n"
+"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it "
+"will return an empty [PoolVector3Array] and will print an error message."
+msgstr ""
+
+#: doc/classes/AStar.xml:195 doc/classes/AStar2D.xml:179
+msgid ""
+"Returns the position of the point associated with the given [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AStar.xml:202 doc/classes/AStar2D.xml:186
+msgid ""
+"Returns the weight scale of the point associated with the given [code]id[/"
+"code]."
+msgstr ""
+
+#: doc/classes/AStar.xml:208 doc/classes/AStar2D.xml:192
+msgid "Returns an array of all points."
+msgstr ""
+
+#: doc/classes/AStar.xml:215 doc/classes/AStar2D.xml:199
+msgid ""
+"Returns whether a point associated with the given [code]id[/code] exists."
+msgstr ""
+
+#: doc/classes/AStar.xml:222 doc/classes/AStar2D.xml:206
+msgid ""
+"Returns whether a point is disabled or not for pathfinding. By default, all "
+"points are enabled."
+msgstr ""
+
+#: doc/classes/AStar.xml:229 doc/classes/AStar2D.xml:213
+msgid ""
+"Removes the point associated with the given [code]id[/code] from the points "
+"pool."
+msgstr ""
+
+#: doc/classes/AStar.xml:236 doc/classes/AStar2D.xml:220
+msgid ""
+"Reserves space internally for [code]num_nodes[/code] points, useful if "
+"you're adding a known large number of points at once, for a grid for "
+"instance. New capacity must be greater or equals to old capacity."
+msgstr ""
+
+#: doc/classes/AStar.xml:244 doc/classes/AStar2D.xml:228
+msgid ""
+"Disables or enables the specified point for pathfinding. Useful for making a "
+"temporary obstacle."
+msgstr ""
+
+#: doc/classes/AStar.xml:252 doc/classes/AStar2D.xml:236
+msgid ""
+"Sets the [code]position[/code] for the point with the given [code]id[/code]."
+msgstr ""
+
+#: doc/classes/AStar.xml:260 doc/classes/AStar2D.xml:244
+msgid ""
+"Sets the [code]weight_scale[/code] for the point with the given [code]id[/"
+"code]. The [code]weight_scale[/code] is multiplied by the result of [method "
+"_compute_cost] when determining the overall cost of traveling across a "
+"segment from a neighboring point to this point."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:4
+msgid "AStar class representation that uses 2D vectors as edges."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:7
+msgid ""
+"This is a wrapper for the [AStar] class which uses 2D vectors instead of 3D "
+"vectors."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:17
+msgid ""
+"Called when computing the cost between two connected points.\n"
+"Note that this function is hidden in the default [code]AStar2D[/code] class."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:26
+msgid ""
+"Called when estimating the cost between a point and the path's ending "
+"point.\n"
+"Note that this function is hidden in the default [code]AStar2D[/code] class."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:36
+msgid ""
+"Adds a new point at the given position with the given identifier. The "
+"[code]id[/code] must be 0 or larger, and the [code]weight_scale[/code] must "
+"be 1 or larger.\n"
+"The [code]weight_scale[/code] is multiplied by the result of [method "
+"_compute_cost] when determining the overall cost of traveling across a "
+"segment from a neighboring point to this point. Thus, all else being equal, "
+"the algorithm prefers points with lower [code]weight_scale[/code]s to form a "
+"path.\n"
+"[codeblock]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(1, 0), 4) # Adds the point (1, 0) with "
+"weight_scale 4 and id 1\n"
+"[/codeblock]\n"
+"If there already exists a point for the given [code]id[/code], its position "
+"and weight scale are updated to the given values."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:50
+msgid "Returns whether there is a connection/segment between the given points."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:65
+msgid ""
+"Creates a 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 allowed, not the reverse direction.\n"
+"[codeblock]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(1, 1))\n"
+"astar.add_point(2, Vector2(0, 5))\n"
+"astar.connect_points(1, 2, false)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AStar2D.xml:79
+msgid "Deletes the segment between the given points."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:101
+msgid ""
+"Returns the closest position to [code]to_position[/code] that resides inside "
+"a segment between two connected points.\n"
+"[codeblock]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 5))\n"
+"astar.connect_points(1, 2)\n"
+"var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # Returns (0, "
+"3)\n"
+"[/codeblock]\n"
+"The result is in the segment that goes from [code]y = 0[/code] to [code]y = "
+"5[/code]. It's the closest position in the segment to the given point."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:117
+msgid ""
+"Returns an array with the IDs of the points that form the path found by "
+"AStar2D between the given points. The array is ordered from the starting "
+"point to the ending point of the path.\n"
+"[codeblock]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 1), 1) # Default weight is 1\n"
+"astar.add_point(3, Vector2(1, 1))\n"
+"astar.add_point(4, Vector2(2, 0))\n"
+"\n"
+"astar.connect_points(1, 2, false)\n"
+"astar.connect_points(2, 3, false)\n"
+"astar.connect_points(4, 3, false)\n"
+"astar.connect_points(1, 4, false)\n"
+"\n"
+"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n"
+"[/codeblock]\n"
+"If you change the 2nd point's weight to 3, then the result will be [code][1, "
+"4, 3][/code] instead, because now even though the distance is longer, it's "
+"\"easier\" to get through point 4 than through point 2."
+msgstr ""
+
+#: doc/classes/AStar2D.xml:145
+msgid ""
+"Returns an array with the IDs of the points that form the connection with "
+"the given point.\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) # Returns [2, 3]\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/AStar2D.xml:171
+msgid ""
+"Returns an array with the points that are in the path found by AStar2D "
+"between the given points. The array is ordered from the starting point to "
+"the ending point of the path.\n"
+"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it "
+"will return an empty [PoolVector2Array] and will print an error message."
+msgstr ""
+
+#: doc/classes/AtlasTexture.xml:4
+msgid ""
+"Crops out one part of a texture, such as a texture from a texture atlas."
+msgstr ""
+
+#: doc/classes/AtlasTexture.xml:7
+msgid ""
+"[Texture] resource that crops out one part of the [member atlas] texture, "
+"defined by [member region]. The main use case is cropping out textures from "
+"a texture atlas, which is a big texture file that packs multiple smaller "
+"textures. Consists of a [Texture] for the [member atlas], a [member region] "
+"that defines the area of [member atlas] to use, and a [member margin] that "
+"defines the border width.\n"
+"[AtlasTexture] cannot be used in an [AnimatedTexture], cannot be tiled in "
+"nodes such as [TextureRect], and does not work properly if used inside of "
+"other [AtlasTexture] resources. Multiple [AtlasTexture] resources can be "
+"used to crop multiple textures from the atlas. Using a texture atlas helps "
+"to optimize video memory costs and render calls compared to using multiple "
+"small files.\n"
+"[b]Note:[/b] AtlasTextures don't support repetition. The [constant Texture."
+"FLAG_REPEAT] and [constant Texture.FLAG_MIRRORED_REPEAT] flags are ignored "
+"when using an AtlasTexture."
+msgstr ""
+
+#: doc/classes/AtlasTexture.xml:17
+msgid "The texture that contains the atlas. Can be any [Texture] subtype."
+msgstr ""
+
+#: doc/classes/AtlasTexture.xml:20
+msgid ""
+"If [code]true[/code], clips the area outside of the region to avoid bleeding "
+"of the surrounding texture pixels."
+msgstr ""
+
+#: doc/classes/AtlasTexture.xml:24
+msgid ""
+"The margin around the region. The [Rect2]'s [member Rect2.size] parameter "
+"(\"w\" and \"h\" in the editor) resizes the texture so it fits within the "
+"margin."
+msgstr ""
+
+#: doc/classes/AtlasTexture.xml:27
+msgid "The AtlasTexture's used region."
+msgstr ""
+
+#: doc/classes/AudioBusLayout.xml:4
+msgid "Stores information about the audio buses."
+msgstr ""
+
+#: doc/classes/AudioBusLayout.xml:7
+msgid ""
+"Stores position, muting, solo, bypass, effects, effect position, volume, and "
+"the connections between buses. See [AudioServer] for usage."
+msgstr ""
+
+#: doc/classes/AudioEffect.xml:4
+msgid "Audio effect for audio."
+msgstr ""
+
+#: doc/classes/AudioEffect.xml:7
+msgid ""
+"Base resource for audio bus. Applies an audio effect on the bus that the "
+"resource is applied on."
+msgstr ""
+
+#: doc/classes/AudioEffect.xml:10 doc/classes/AudioEffectRecord.xml:11
+#: doc/classes/AudioServer.xml:12 doc/classes/AudioStream.xml:12
+#: doc/classes/AudioStreamPlayer.xml:15
+msgid "https://godotengine.org/asset-library/asset/527"
+msgstr ""
+
+#: doc/classes/AudioEffectAmplify.xml:4
+msgid ""
+"Adds an amplifying audio effect to an audio bus.\n"
+"Increases or decreases the volume of the selected audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectAmplify.xml:8
+msgid "Increases or decreases the volume being routed through the audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectAmplify.xml:16
+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 ""
+
+#: doc/classes/AudioEffectBandLimitFilter.xml:4
+msgid "Adds a band limit filter to the audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectBandLimitFilter.xml:7
+msgid ""
+"Limits the frequencies in a range around the [member AudioEffectFilter."
+"cutoff_hz] and allows frequencies outside of this range to pass."
+msgstr ""
+
+#: doc/classes/AudioEffectBandPassFilter.xml:4
+msgid "Adds a band pass filter to the audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectBandPassFilter.xml:7
+msgid ""
+"Attenuates the frequencies inside of a range around the [member "
+"AudioEffectFilter.cutoff_hz] and cuts frequencies outside of this band."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:4
+msgid "Captures audio from an audio bus in real-time."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:7
+msgid ""
+"AudioEffectCapture is an AudioEffect which copies all audio frames from the "
+"attached audio effect bus into its internal ring buffer.\n"
+"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."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:17
+msgid ""
+"Returns [code]true[/code] if at least [code]frames[/code] audio frames are "
+"available to read in the internal ring buffer."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:23
+msgid "Clears the internal ring buffer."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:30
+msgid ""
+"Gets the next [code]frames[/code] audio samples from the internal ring "
+"buffer.\n"
+"Returns a [PoolVector2Array] containing exactly [code]frames[/code] audio "
+"samples if available, or an empty [PoolVector2Array] if insufficient data "
+"was available."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:37
+msgid "Returns the total size of the internal ring buffer in frames."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:43
+msgid ""
+"Returns the number of audio frames discarded from the audio bus due to full "
+"buffer."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:49
+msgid ""
+"Returns the number of frames available to read using [method get_buffer]."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:55
+msgid "Returns the number of audio frames inserted from the audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectCapture.xml:61
+msgid ""
+"Length of the internal ring buffer, in seconds. Setting the buffer length "
+"will have no effect if already initialized."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:4
+msgid "Adds a chorus audio effect."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:7
+msgid ""
+"Adds a chorus audio effect. The effect applies a filter with voices to "
+"duplicate the audio source and manipulate it through the filter."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:93
+msgid "The effect's raw signal."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:96 doc/classes/AudioEffectChorus.xml:114
+#: doc/classes/AudioEffectChorus.xml:132 doc/classes/AudioEffectChorus.xml:150
+msgid "The voice's cutoff frequency."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:99 doc/classes/AudioEffectChorus.xml:117
+#: doc/classes/AudioEffectChorus.xml:135 doc/classes/AudioEffectChorus.xml:153
+msgid "The voice's signal delay."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:102 doc/classes/AudioEffectChorus.xml:120
+#: doc/classes/AudioEffectChorus.xml:138 doc/classes/AudioEffectChorus.xml:156
+msgid "The voice filter's depth."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:105 doc/classes/AudioEffectChorus.xml:123
+#: doc/classes/AudioEffectChorus.xml:141 doc/classes/AudioEffectChorus.xml:159
+msgid "The voice's volume."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:108 doc/classes/AudioEffectChorus.xml:126
+#: doc/classes/AudioEffectChorus.xml:144 doc/classes/AudioEffectChorus.xml:162
+msgid "The voice's pan level."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:111 doc/classes/AudioEffectChorus.xml:129
+#: doc/classes/AudioEffectChorus.xml:147 doc/classes/AudioEffectChorus.xml:165
+msgid "The voice's filter rate."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:168
+msgid "The amount of voices in the effect."
+msgstr ""
+
+#: doc/classes/AudioEffectChorus.xml:171
+msgid "The effect's processed signal."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:4
+msgid ""
+"Adds a compressor audio effect to an audio bus.\n"
+"Reduces sounds that exceed a certain threshold level, smooths out the "
+"dynamics and increases the overall volume."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:8
+msgid ""
+"Dynamic range compressor reduces the level of the sound when the amplitude "
+"goes over a certain threshold in Decibels. One of the main uses of a "
+"compressor is to increase the dynamic range by clipping as little as "
+"possible (when sound goes over 0dB).\n"
+"Compressor has many uses in the mix:\n"
+"- In the Master bus to compress the whole output (although an "
+"[AudioEffectLimiter] is probably better).\n"
+"- In voice channels to ensure they sound as balanced as possible.\n"
+"- Sidechained. This can reduce the sound level sidechained with another "
+"audio bus for threshold detection. This technique is common in video game "
+"mixing to the level of music and SFX while voices are being heard.\n"
+"- Accentuates transients by using a wider attack, making effects sound more "
+"punchy."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:21
+msgid ""
+"Compressor's reaction time when the signal exceeds the threshold, in "
+"microseconds. Value can range from 20 to 2000."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:24
+msgid "Gain applied to the output signal."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:27
+msgid ""
+"Balance between original signal and effect signal. Value can range from 0 "
+"(totally dry) to 1 (totally wet)."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:30
+msgid ""
+"Amount of compression applied to the audio once it passes the threshold "
+"level. The higher the ratio, the more the loud parts of the audio will be "
+"compressed. Value can range from 1 to 48."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:33
+msgid ""
+"Compressor's delay time to stop reducing the signal after the signal level "
+"falls below the threshold, in milliseconds. Value can range from 20 to 2000."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:36
+msgid "Reduce the sound level using another audio bus for threshold detection."
+msgstr ""
+
+#: doc/classes/AudioEffectCompressor.xml:39
+msgid ""
+"The level above which compression is applied to the audio. Value can range "
+"from -60 to 0."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:4
+msgid ""
+"Adds a delay audio effect to an audio bus. Plays input signal back after a "
+"period of time.\n"
+"Two tap delay and feedback options."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:8
+msgid ""
+"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."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:16
+msgid ""
+"Output percent of original sound. At 0, only delayed sounds are output. "
+"Value can range from 0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:19
+msgid "If [code]true[/code], feedback is enabled."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:22
+msgid "Feedback delay time in milliseconds."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:25 doc/classes/AudioEffectDelay.xml:37
+msgid "Sound level for [code]tap1[/code]."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:28
+msgid ""
+"Low-pass filter for feedback, in Hz. Frequencies below this value are "
+"filtered out of the source signal."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:31
+msgid "If [code]true[/code], [code]tap1[/code] will be enabled."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:34
+msgid "[code]tap1[/code] delay time in milliseconds."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:40
+msgid ""
+"Pan position for [code]tap1[/code]. Value can range from -1 (fully left) to "
+"1 (fully right)."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:43
+msgid "If [code]true[/code], [code]tap2[/code] will be enabled."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:46
+msgid "[b]Tap2[/b] delay time in milliseconds."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:49
+msgid "Sound level for [code]tap2[/code]."
+msgstr ""
+
+#: doc/classes/AudioEffectDelay.xml:52
+msgid ""
+"Pan position for [code]tap2[/code]. Value can range from -1 (fully left) to "
+"1 (fully right)."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:4
+msgid ""
+"Adds a distortion audio effect to an Audio bus.\n"
+"Modify the sound to make it distorted."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:8
+msgid ""
+"Different types are available: clip, tan, lo-fi (bit crushing), overdrive, "
+"or waveshape.\n"
+"By distorting the waveform the frequency content change, which will often "
+"make the sound \"crunchy\" or \"abrasive\". For games, it can simulate sound "
+"coming from some saturated device or speaker very efficiently."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:12
+#: doc/classes/AudioEffectFilter.xml:10
+#: doc/classes/AudioEffectHighShelfFilter.xml:9
+#: doc/classes/AudioEffectLowShelfFilter.xml:9 doc/classes/AudioServer.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/audio/audio_buses.html"
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:18
+msgid "Distortion power. Value can range from 0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:21
+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 ""
+
+#: doc/classes/AudioEffectDistortion.xml:24
+msgid "Distortion type."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:27
+msgid ""
+"Increases or decreases the volume after the effect. Value can range from -80 "
+"to 24."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:30
+msgid ""
+"Increases or decreases the volume before the effect. Value can range from "
+"-60 to 60."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:35
+msgid ""
+"Digital distortion effect which cuts off peaks at the top and bottom of the "
+"waveform."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:40
+msgid ""
+"Low-resolution digital distortion effect. You can use it to emulate the "
+"sound of early digital audio devices."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:43
+msgid ""
+"Emulates the warm distortion produced by a field effect transistor, which is "
+"commonly used in solid-state musical instrument amplifiers."
+msgstr ""
+
+#: doc/classes/AudioEffectDistortion.xml:46
+msgid ""
+"Waveshaper distortions are used mainly by electronic musicians to achieve an "
+"extra-abrasive sound."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ.xml:4
+msgid ""
+"Base class for audio equalizers. Gives you control over frequencies.\n"
+"Use it to create a custom equalizer if [AudioEffectEQ6], [AudioEffectEQ10] "
+"or [AudioEffectEQ21] don't fit your needs."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ.xml:8
+msgid ""
+"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)."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ.xml:16
+msgid "Returns the number of bands of the equalizer."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ.xml:23
+msgid "Returns the band's gain at the specified index, in dB."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ.xml:31
+msgid "Sets band's gain at the specified index, in dB."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ10.xml:4
+msgid ""
+"Adds a 10-band equalizer audio effect to an Audio bus. Gives you control "
+"over frequencies from 31 Hz to 16000 Hz.\n"
+"Each frequency can be modulated between -60/+24 dB."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ10.xml:8
+msgid ""
+"Frequency bands:\n"
+"Band 1: 31 Hz\n"
+"Band 2: 62 Hz\n"
+"Band 3: 125 Hz\n"
+"Band 4: 250 Hz\n"
+"Band 5: 500 Hz\n"
+"Band 6: 1000 Hz\n"
+"Band 7: 2000 Hz\n"
+"Band 8: 4000 Hz\n"
+"Band 9: 8000 Hz\n"
+"Band 10: 16000 Hz\n"
+"See also [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ21]."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ21.xml:4
+msgid ""
+"Adds a 21-band equalizer audio effect to an Audio bus. Gives you control "
+"over frequencies from 22 Hz to 22000 Hz.\n"
+"Each frequency can be modulated between -60/+24 dB."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ21.xml:8
+msgid ""
+"Frequency bands:\n"
+"Band 1: 22 Hz\n"
+"Band 2: 32 Hz\n"
+"Band 3: 44 Hz\n"
+"Band 4: 63 Hz\n"
+"Band 5: 90 Hz\n"
+"Band 6: 125 Hz\n"
+"Band 7: 175 Hz\n"
+"Band 8: 250 Hz\n"
+"Band 9: 350 Hz\n"
+"Band 10: 500 Hz\n"
+"Band 11: 700 Hz\n"
+"Band 12: 1000 Hz\n"
+"Band 13: 1400 Hz\n"
+"Band 14: 2000 Hz\n"
+"Band 15: 2800 Hz\n"
+"Band 16: 4000 Hz\n"
+"Band 17: 5600 Hz\n"
+"Band 18: 8000 Hz\n"
+"Band 19: 11000 Hz\n"
+"Band 20: 16000 Hz\n"
+"Band 21: 22000 Hz\n"
+"See also [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ10]."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ6.xml:4
+msgid ""
+"Adds a 6-band equalizer audio effect to an Audio bus. Gives you control over "
+"frequencies from 32 Hz to 10000 Hz.\n"
+"Each frequency can be modulated between -60/+24 dB."
+msgstr ""
+
+#: doc/classes/AudioEffectEQ6.xml:8
+msgid ""
+"Frequency bands:\n"
+"Band 1: 32 Hz\n"
+"Band 2: 100 Hz\n"
+"Band 3: 320 Hz\n"
+"Band 4: 1000 Hz\n"
+"Band 5: 3200 Hz\n"
+"Band 6: 10000 Hz\n"
+"See also [AudioEffectEQ], [AudioEffectEQ10], [AudioEffectEQ21]."
+msgstr ""
+
+#: doc/classes/AudioEffectFilter.xml:4
+msgid "Adds a filter to the audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectFilter.xml:7
+msgid "Allows frequencies other than the [member cutoff_hz] to pass."
+msgstr ""
+
+#: doc/classes/AudioEffectFilter.xml:16
+msgid "Threshold frequency for the filter, in Hz."
+msgstr ""
+
+#: doc/classes/AudioEffectFilter.xml:21
+msgid "Gain amount of the frequencies after the filter."
+msgstr ""
+
+#: doc/classes/AudioEffectFilter.xml:24
+msgid "Amount of boost in the frequency range near the cutoff frequency."
+msgstr ""
+
+#: doc/classes/AudioEffectHighPassFilter.xml:4
+msgid "Adds a high-pass filter to the Audio Bus."
+msgstr ""
+
+#: doc/classes/AudioEffectHighPassFilter.xml:7
+msgid ""
+"Cuts frequencies lower than the [member AudioEffectFilter.cutoff_hz] and "
+"allows higher frequencies to pass."
+msgstr ""
+
+#: doc/classes/AudioEffectHighShelfFilter.xml:4
+msgid "Reduces all frequencies above the [member AudioEffectFilter.cutoff_hz]."
+msgstr ""
+
+#: doc/classes/AudioEffectLimiter.xml:4
+msgid "Adds a soft-clip limiter audio effect to an Audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectLimiter.xml:7
+msgid ""
+"A limiter is similar to a compressor, but it's less flexible and designed to "
+"disallow sound going over a given dB threshold. Adding one in the Master bus "
+"is always recommended to reduce the effects of clipping.\n"
+"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."
+msgstr ""
+
+#: doc/classes/AudioEffectLimiter.xml:16
+msgid ""
+"The waveform's maximum allowed value, in decibels. Value can range from -20 "
+"to -0.1."
+msgstr ""
+
+#: doc/classes/AudioEffectLimiter.xml:19
+msgid ""
+"Applies a gain to the limited waves, in decibels. Value can range from 0 to "
+"6."
+msgstr ""
+
+#: doc/classes/AudioEffectLimiter.xml:24
+msgid ""
+"Threshold from which the limiter begins to be active, in decibels. Value can "
+"range from -30 to 0."
+msgstr ""
+
+#: doc/classes/AudioEffectLowPassFilter.xml:4
+msgid "Adds a low-pass filter to the Audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectLowPassFilter.xml:7
+msgid ""
+"Cuts frequencies higher than the [member AudioEffectFilter.cutoff_hz] and "
+"allows lower frequencies to pass."
+msgstr ""
+
+#: doc/classes/AudioEffectLowShelfFilter.xml:4
+msgid "Reduces all frequencies below the [member AudioEffectFilter.cutoff_hz]."
+msgstr ""
+
+#: doc/classes/AudioEffectNotchFilter.xml:4
+msgid "Adds a notch filter to the Audio bus."
+msgstr ""
+
+#: doc/classes/AudioEffectNotchFilter.xml:7
+msgid ""
+"Attenuates frequencies in a narrow band around the [member AudioEffectFilter."
+"cutoff_hz] and cuts frequencies outside of this range."
+msgstr ""
+
+#: doc/classes/AudioEffectPanner.xml:4
+msgid "Adds a panner audio effect to an Audio bus. Pans sound left or right."
+msgstr ""
+
+#: doc/classes/AudioEffectPanner.xml:7
+msgid ""
+"Determines how much of an audio signal is sent to the left and right buses."
+msgstr ""
+
+#: doc/classes/AudioEffectPanner.xml:15
+msgid "Pan position. Value can range from -1 (fully left) to 1 (fully right)."
+msgstr ""
+
+#: doc/classes/AudioEffectPhaser.xml:4
+msgid ""
+"Adds a phaser audio effect to an Audio bus.\n"
+"Combines the original signal with a copy that is slightly out of phase with "
+"the original."
+msgstr ""
+
+#: doc/classes/AudioEffectPhaser.xml:8
+msgid ""
+"Combines phase-shifted signals with the original signal. The movement of the "
+"phase-shifted signals is controlled using a low-frequency oscillator."
+msgstr ""
+
+#: doc/classes/AudioEffectPhaser.xml:16
+msgid ""
+"Governs how high the filter frequencies sweep. Low value will primarily "
+"affect bass frequencies. High value can sweep high into the treble. Value "
+"can range from 0.1 to 4."
+msgstr ""
+
+#: doc/classes/AudioEffectPhaser.xml:19
+msgid "Output percent of modified sound. Value can range from 0.1 to 0.9."
+msgstr ""
+
+#: doc/classes/AudioEffectPhaser.xml:22
+msgid ""
+"Determines the maximum frequency affected by the LFO modulations, in Hz. "
+"Value can range from 10 to 10000."
+msgstr ""
+
+#: doc/classes/AudioEffectPhaser.xml:25
+msgid ""
+"Determines the minimum frequency affected by the LFO modulations, in Hz. "
+"Value can range from 10 to 10000."
+msgstr ""
+
+#: doc/classes/AudioEffectPhaser.xml:28
+msgid ""
+"Adjusts the rate in Hz at which the effect sweeps up and down across the "
+"frequency range."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:4
+msgid ""
+"Adds a pitch-shifting audio effect to an Audio bus.\n"
+"Raises or lowers the pitch of original sound."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:8
+msgid ""
+"Allows modulation of pitch independently of tempo. All frequencies can be "
+"increased/decreased with minimal effect on transients."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:16
+msgid ""
+"The size of the [url=https://en.wikipedia.org/wiki/"
+"Fast_Fourier_transform]Fast Fourier transform[/url] buffer. Higher values "
+"smooth out the effect over time, but have greater latency. The effects of "
+"this higher latency are especially noticeable on sounds that have sudden "
+"amplitude changes."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:19
+msgid ""
+"The oversampling factor to use. Higher values result in better quality, but "
+"are more demanding on the CPU and may cause audio cracking if the CPU can't "
+"keep up."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:22
+msgid ""
+"The pitch scale to use. [code]1.0[/code] is the default pitch and plays "
+"sounds unaltered. [member pitch_scale] can range from [code]0.0[/code] "
+"(infinitely low pitch, inaudible) to [code]16[/code] (16 times higher than "
+"the initial pitch)."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:27
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:28
+msgid ""
+"Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, "
+"but least stable over time."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:30
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:31
+msgid ""
+"Use a buffer of 512 samples for the Fast Fourier transform. Low latency, but "
+"less stable over time."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:33
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:34
+msgid ""
+"Use a buffer of 1024 samples for the Fast Fourier transform. This is a "
+"compromise between latency and stability over time."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:36
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:37
+msgid ""
+"Use a buffer of 2048 samples for the Fast Fourier transform. High latency, "
+"but stable over time."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:39
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:40
+msgid ""
+"Use a buffer of 4096 samples for the Fast Fourier transform. Highest "
+"latency, but most stable over time."
+msgstr ""
+
+#: doc/classes/AudioEffectPitchShift.xml:42
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:43
+msgid "Represents the size of the [enum FFT_Size] enum."
+msgstr ""
+
+#: doc/classes/AudioEffectRecord.xml:4
+msgid "Audio effect used for recording sound from a microphone."
+msgstr ""
+
+#: doc/classes/AudioEffectRecord.xml:7
+msgid ""
+"Allows the user to record sound from a microphone. It sets and gets the "
+"format in which the audio file will be recorded (8-bit, 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 ""
+
+#: doc/classes/AudioEffectRecord.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/audio/"
+"recording_with_microphone.html"
+msgstr ""
+
+#: doc/classes/AudioEffectRecord.xml:17
+msgid "Returns the recorded sample."
+msgstr ""
+
+#: doc/classes/AudioEffectRecord.xml:23
+msgid "Returns whether the recording is active or not."
+msgstr ""
+
+#: doc/classes/AudioEffectRecord.xml:30
+msgid ""
+"If [code]true[/code], the sound will be recorded. Note that restarting the "
+"recording will remove the previously recorded sample."
+msgstr ""
+
+#: doc/classes/AudioEffectRecord.xml:36
+msgid ""
+"Specifies the format in which the sample will be recorded. See [enum "
+"AudioStreamSample.Format] for available formats."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:4
+msgid ""
+"Adds a reverberation audio effect to an Audio bus.\n"
+"Simulates the sound of acoustic environments such as rooms, concert halls, "
+"caverns, or an open spaces."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:8
+msgid ""
+"Simulates rooms of different sizes. Its parameters can be adjusted to "
+"simulate the sound of a specific room."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:17
+msgid ""
+"Defines how reflective the imaginary room's walls are. Value can range from "
+"0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:20
+msgid ""
+"Output percent of original sound. At 0, only modified sound is outputted. "
+"Value can range from 0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:23
+msgid ""
+"High-pass filter passes signals with a frequency higher than a certain "
+"cutoff frequency and attenuates signals with frequencies lower than the "
+"cutoff frequency. Value can range from 0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:26
+msgid "Output percent of predelay. Value can range from 0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:29
+msgid ""
+"Time between the original signal and the early reflections of the reverb "
+"signal, in milliseconds."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:32
+msgid ""
+"Dimensions of simulated room. Bigger means more echoes. Value can range from "
+"0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:35
+msgid ""
+"Widens or narrows the stereo image of the reverb tail. 1 means fully widens. "
+"Value can range from 0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectReverb.xml:38
+msgid ""
+"Output percent of modified sound. At 0, only original sound is outputted. "
+"Value can range from 0 to 1."
+msgstr ""
+
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:4
+msgid "Audio effect that can be used for real-time audio visualizations."
+msgstr ""
+
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:7
+msgid ""
+"This audio effect does not affect sound output, but can be used for real-"
+"time audio visualizations.\n"
+"See also [AudioStreamGenerator] for procedurally generating sounds."
+msgstr ""
+
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:11
+msgid "Audio Spectrum Demo"
+msgstr ""
+
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:12
+#: doc/classes/AudioStreamGenerator.xml:13
+#: doc/classes/AudioStreamGeneratorPlayback.xml:11
+msgid "Godot 3.2 will get new audio features"
+msgstr ""
+
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:18
+msgid ""
+"The length of the buffer to keep (in seconds). Higher values keep data "
+"around for longer, but require more memory."
+msgstr ""
+
+#: doc/classes/AudioEffectSpectrumAnalyzer.xml:21
+msgid ""
+"The size of the [url=https://en.wikipedia.org/wiki/"
+"Fast_Fourier_transform]Fast Fourier transform[/url] buffer. Higher values "
+"smooth out the spectrum analysis over time, but have greater latency. The "
+"effects of this higher latency are especially noticeable with sudden "
+"amplitude changes."
+msgstr ""
+
+#: doc/classes/AudioEffectSpectrumAnalyzerInstance.xml:21
+msgid "Use the average value as magnitude."
+msgstr ""
+
+#: doc/classes/AudioEffectSpectrumAnalyzerInstance.xml:24
+msgid "Use the maximum value as magnitude."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:4
+msgid "Server interface for low-level audio access."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:7
+msgid ""
+"[AudioServer] is a low-level server interface for audio access. It is in "
+"charge of creating sample data (playable audio) as well as its playback via "
+"a voice interface."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:11 doc/classes/AudioStreamPlayer.xml:13
+msgid "https://godotengine.org/asset-library/asset/525"
+msgstr ""
+
+#: doc/classes/AudioServer.xml:13 doc/classes/AudioStream.xml:13
+#: doc/classes/AudioStreamPlayer.xml:16 doc/classes/CanvasItem.xml:17
+msgid "https://godotengine.org/asset-library/asset/528"
+msgstr ""
+
+#: doc/classes/AudioServer.xml:20
+msgid "Adds a bus at [code]at_position[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:29
+msgid ""
+"Adds an [AudioEffect] effect to the bus [code]bus_idx[/code] at "
+"[code]at_position[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:35
+msgid ""
+"Name of the current device for audio input (see [method "
+"capture_get_device_list])."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:41
+msgid "Returns the names of all audio input devices detected on the system."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:48
+msgid "Sets which audio input device is used for audio capture."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:54
+msgid "Generates an [AudioBusLayout] using the available buses and effects."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:61
+msgid ""
+"Returns the amount of channels of the bus at index [code]bus_idx[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:69
+msgid ""
+"Returns the [AudioEffect] at position [code]effect_idx[/code] in bus "
+"[code]bus_idx[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:76
+msgid "Returns the number of effects on the bus at [code]bus_idx[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:85
+msgid ""
+"Returns the [AudioEffectInstance] assigned to the given bus and effect "
+"indices (and optionally channel)."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:92
+msgid "Returns the index of the bus with the name [code]bus_name[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:99
+msgid "Returns the name of the bus with the index [code]bus_idx[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:107
+msgid ""
+"Returns the peak volume of the left speaker at bus index [code]bus_idx[/"
+"code] and channel index [code]channel[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:115
+msgid ""
+"Returns the peak volume of the right speaker at bus index [code]bus_idx[/"
+"code] and channel index [code]channel[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:122
+msgid ""
+"Returns the name of the bus that the bus at index [code]bus_idx[/code] sends "
+"to."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:129
+msgid "Returns the volume of the bus at index [code]bus_idx[/code] in dB."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:135
+msgid "Returns the names of all audio devices detected on the system."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:141
+msgid "Returns the sample rate at the output of the [AudioServer]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:147
+msgid "Returns the audio driver's output latency."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:153
+msgid "Returns the speaker configuration."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:159
+msgid "Returns the relative time since the last mix occurred."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:165
+msgid "Returns the relative time until the next mix occurs."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:172 doc/classes/AudioServer.xml:232
+msgid ""
+"If [code]true[/code], the bus at index [code]bus_idx[/code] is bypassing "
+"effects."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:180 doc/classes/AudioServer.xml:241
+msgid ""
+"If [code]true[/code], the effect at index [code]effect_idx[/code] on the bus "
+"at index [code]bus_idx[/code] is enabled."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:187 doc/classes/AudioServer.xml:256
+msgid "If [code]true[/code], the bus at index [code]bus_idx[/code] is muted."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:194 doc/classes/AudioServer.xml:280
+msgid ""
+"If [code]true[/code], the bus at index [code]bus_idx[/code] is in solo mode."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:200
+msgid ""
+"Locks the audio driver's main loop.\n"
+"[b]Note:[/b] Remember to unlock it afterwards."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:209
+msgid ""
+"Moves the bus from index [code]index[/code] to index [code]to_index[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:216
+msgid "Removes the bus at index [code]index[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:224
+msgid ""
+"Removes the effect at index [code]effect_idx[/code] from the bus at index "
+"[code]bus_idx[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:248
+msgid "Overwrites the currently used [AudioBusLayout]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:264
+msgid ""
+"Sets the name of the bus at index [code]bus_idx[/code] to [code]name[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:272
+msgid ""
+"Connects the output of the bus at [code]bus_idx[/code] to the bus named "
+"[code]send[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:288
+msgid ""
+"Sets the volume of the bus at index [code]bus_idx[/code] to [code]volume_db[/"
+"code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:297
+msgid "Swaps the position of two effects in bus [code]bus_idx[/code]."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:303
+msgid ""
+"Unlocks the audio driver's main loop. (After locking it, you should always "
+"unlock it.)"
+msgstr ""
+
+#: doc/classes/AudioServer.xml:309
+msgid "Number of available audio buses."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:312
+msgid ""
+"Name of the current device for audio output (see [method get_device_list])."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:315
+msgid ""
+"Scales the rate at which audio is played (i.e. setting it to [code]0.5[/"
+"code] will make the audio be played twice as fast)."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:321
+msgid "Emitted when the [AudioBusLayout] changes."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:327
+msgid "Two or fewer speakers were detected."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:330
+msgid "A 3.1 channel surround setup was detected."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:333
+msgid "A 5.1 channel surround setup was detected."
+msgstr ""
+
+#: doc/classes/AudioServer.xml:336
+msgid "A 7.1 channel surround setup was detected."
+msgstr ""
+
+#: doc/classes/AudioStream.xml:4
+msgid "Base class for audio streams."
+msgstr ""
+
+#: doc/classes/AudioStream.xml:7
+msgid ""
+"Base class for audio streams. Audio streams are used for sound effects and "
+"music playback, and support WAV (via [AudioStreamSample]) and OGG (via "
+"[AudioStreamOGGVorbis]) file formats."
+msgstr ""
+
+#: doc/classes/AudioStream.xml:10 doc/classes/AudioStreamPlayer.xml:11
+#: doc/classes/AudioStreamPlayer2D.xml:12
+#: doc/classes/AudioStreamPlayer3D.xml:13
+msgid "https://docs.godotengine.org/en/3.4/tutorials/audio/audio_streams.html"
+msgstr ""
+
+#: doc/classes/AudioStream.xml:11 doc/classes/AudioStreamGenerator.xml:12
+#: doc/classes/AudioStreamGeneratorPlayback.xml:10
+#: doc/classes/AudioStreamPlayback.xml:10 doc/classes/AudioStreamPlayer.xml:14
+msgid "https://godotengine.org/asset-library/asset/526"
+msgstr ""
+
+#: doc/classes/AudioStream.xml:19
+msgid "Returns the length of the audio stream in seconds."
+msgstr ""
+
+#: doc/classes/AudioStreamGenerator.xml:4
+msgid "Audio stream that generates sounds procedurally."
+msgstr ""
+
+#: doc/classes/AudioStreamGenerator.xml:7
+msgid ""
+"This audio stream does not play back sounds, but expects a script to "
+"generate audio data for it instead. See also "
+"[AudioStreamGeneratorPlayback].\n"
+"See also [AudioEffectSpectrumAnalyzer] for performing real-time audio "
+"spectrum analysis.\n"
+"[b]Note:[/b] Due to performance constraints, this class is best used from C# "
+"or from a compiled language via GDNative. If you still want to use this "
+"class from GDScript, consider using a lower [member mix_rate] such as 11,025 "
+"Hz or 22,050 Hz."
+msgstr ""
+
+#: doc/classes/AudioStreamGenerator.xml:19
+msgid ""
+"The length of the buffer to generate (in seconds). Lower values result in "
+"less latency, but require the script to generate audio data faster, "
+"resulting in increased CPU usage and more risk for audio cracking if the CPU "
+"can't keep up."
+msgstr ""
+
+#: doc/classes/AudioStreamGenerator.xml:22
+msgid ""
+"The sample rate to use (in Hz). Higher values are more demanding for the CPU "
+"to generate, but result in better quality.\n"
+"In games, common sample rates in use are [code]11025[/code], [code]16000[/"
+"code], [code]22050[/code], [code]32000[/code], [code]44100[/code], and "
+"[code]48000[/code].\n"
+"According to the [url=https://en.wikipedia.org/wiki/Nyquist"
+"%E2%80%93Shannon_sampling_theorem]Nyquist-Shannon sampling theorem[/url], "
+"there is no quality difference to human hearing when going past 40,000 Hz "
+"(since most humans can only hear up to ~20,000 Hz, often less). If you are "
+"generating lower-pitched sounds such as voices, lower sample rates such as "
+"[code]32000[/code] or [code]22050[/code] may be usable with no loss in "
+"quality."
+msgstr ""
+
+#: doc/classes/AudioStreamGeneratorPlayback.xml:4
+msgid "Plays back audio generated using [AudioStreamGenerator]."
+msgstr ""
+
+#: doc/classes/AudioStreamGeneratorPlayback.xml:7
+msgid ""
+"This class is meant to be used with [AudioStreamGenerator] to play back the "
+"generated audio in real-time."
+msgstr ""
+
+#: doc/classes/AudioStreamGeneratorPlayback.xml:18
+msgid ""
+"Returns [code]true[/code] if a buffer of the size [code]amount[/code] can be "
+"pushed to the audio sample data buffer without overflowing it, [code]false[/"
+"code] otherwise."
+msgstr ""
+
+#: doc/classes/AudioStreamGeneratorPlayback.xml:24
+msgid "Clears the audio sample data buffer."
+msgstr ""
+
+#: doc/classes/AudioStreamGeneratorPlayback.xml:30
+msgid ""
+"Returns the number of audio data frames left to play. If this returned "
+"number reaches [code]0[/code], the audio will stop playing until frames are "
+"added again. Therefore, make sure your script can always generate and push "
+"new audio frames fast enough to avoid audio cracking."
+msgstr ""
+
+#: doc/classes/AudioStreamGeneratorPlayback.xml:42
+msgid ""
+"Pushes several audio data frames to the buffer. This is usually more "
+"efficient than [method push_frame] in C# and compiled languages via "
+"GDNative, but [method push_buffer] may be [i]less[/i] efficient in GDScript."
+msgstr ""
+
+#: doc/classes/AudioStreamGeneratorPlayback.xml:49
+msgid ""
+"Pushes a single audio data frame to the buffer. This is usually less "
+"efficient than [method push_buffer] in C# and compiled languages via "
+"GDNative, but [method push_frame] may be [i]more[/i] efficient in GDScript."
+msgstr ""
+
+#: modules/minimp3/doc_classes/AudioStreamMP3.xml:4
+#: modules/minimp3/doc_classes/AudioStreamMP3.xml:7
+msgid "MP3 audio stream driver."
+msgstr ""
+
+#: modules/minimp3/doc_classes/AudioStreamMP3.xml:15
+#: modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml:15
+msgid "Contains the audio data in bytes."
+msgstr ""
+
+#: modules/minimp3/doc_classes/AudioStreamMP3.xml:18
+#: modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml:18
+msgid ""
+"If [code]true[/code], the stream will automatically loop when it reaches the "
+"end."
+msgstr ""
+
+#: modules/minimp3/doc_classes/AudioStreamMP3.xml:21
+#: modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml:21
+msgid "Time in seconds at which the stream starts after being looped."
+msgstr ""
+
+#: modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml:4
+#: modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml:7
+msgid "OGG Vorbis audio stream driver."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayback.xml:4
+msgid "Meta class for playing back audio."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayback.xml:7
+msgid ""
+"Can play, loop, pause a scroll through audio. See [AudioStream] and "
+"[AudioStreamOGGVorbis] for usage."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:4
+msgid "Plays back audio non-positionally."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:7
+msgid ""
+"Plays an audio stream non-positionally.\n"
+"To play audio positionally, use [AudioStreamPlayer2D] or "
+"[AudioStreamPlayer3D] instead of [AudioStreamPlayer]."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:22
+msgid "Returns the position in the [AudioStream] in seconds."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:28
+msgid ""
+"Returns the [AudioStreamPlayback] object associated with this "
+"[AudioStreamPlayer]."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:35
+msgid "Plays the audio from the given [code]from_position[/code], in seconds."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:42 doc/classes/AudioStreamPlayer2D.xml:38
+#: doc/classes/AudioStreamPlayer3D.xml:39
+msgid "Sets the position from which audio will be played, in seconds."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:48 doc/classes/AudioStreamPlayer2D.xml:44
+#: doc/classes/AudioStreamPlayer3D.xml:45
+msgid "Stops the audio."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:54 doc/classes/AudioStreamPlayer2D.xml:56
+msgid "If [code]true[/code], audio plays when added to scene tree."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:57 doc/classes/AudioStreamPlayer2D.xml:59
+msgid "Bus on which this audio is playing."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:60
+msgid ""
+"If the audio configuration has more than two speakers, this sets the target "
+"channels. See [enum MixTarget] constants."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:63 doc/classes/AudioStreamPlayer2D.xml:65
+#: doc/classes/AudioStreamPlayer3D.xml:91
+msgid ""
+"The pitch and the tempo of the audio, as a multiplier of the audio sample's "
+"sample rate."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:66 doc/classes/AudioStreamPlayer2D.xml:68
+#: doc/classes/AudioStreamPlayer3D.xml:94
+msgid "If [code]true[/code], audio is playing."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:69 doc/classes/AudioStreamPlayer2D.xml:71
+msgid "The [AudioStream] object to be played."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:72 doc/classes/AudioStreamPlayer2D.xml:74
+msgid ""
+"If [code]true[/code], the playback is paused. You can resume it by setting "
+"[code]stream_paused[/code] to [code]false[/code]."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:75
+msgid "Volume of sound, in dB."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:81 doc/classes/AudioStreamPlayer2D.xml:83
+#: doc/classes/AudioStreamPlayer3D.xml:112
+msgid "Emitted when the audio stops playing."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:87
+msgid "The audio will be played only on the first channel."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:90
+msgid "The audio will be played on all surround channels."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer.xml:93
+msgid ""
+"The audio will be played on the second channel, which is usually the center."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:4
+msgid "Plays positional sound in 2D space."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:7
+msgid ""
+"Plays audio that dampens with distance from screen center.\n"
+"See also [AudioStreamPlayer] to play a sound non-positionally.\n"
+"[b]Note:[/b] Hiding an [AudioStreamPlayer2D] node does not disable its audio "
+"output. To temporarily disable an [AudioStreamPlayer2D]'s audio output, set "
+"[member volume_db] to a very low value like [code]-100[/code] (which isn't "
+"audible to human hearing)."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:18
+#: doc/classes/AudioStreamPlayer3D.xml:19
+msgid "Returns the position in the [AudioStream]."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:24
+msgid ""
+"Returns the [AudioStreamPlayback] object associated with this "
+"[AudioStreamPlayer2D]."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:31
+#: doc/classes/AudioStreamPlayer3D.xml:32
+msgid ""
+"Plays the audio from the given position [code]from_position[/code], in "
+"seconds."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:50
+#: doc/classes/AudioStreamPlayer3D.xml:51
+msgid "Areas in which this sound plays."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:53
+msgid "Dampens audio over distance with this as an exponent."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:62
+msgid "Maximum distance from which audio is still hearable."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer2D.xml:77
+msgid "Base volume without dampening."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:4
+msgid "Plays positional sound in 3D space."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:7
+msgid ""
+"Plays a sound effect with directed sound effects, dampens with distance if "
+"needed, generates effect of hearable position in space. For greater realism, "
+"a low-pass filter is automatically applied to distant sounds. This can be "
+"disabled by setting [member attenuation_filter_cutoff_hz] to [code]20500[/"
+"code].\n"
+"By default, audio is heard from the camera position. This can be changed by "
+"adding a [Listener] node to the scene and enabling it by calling [method "
+"Listener.make_current] on it.\n"
+"See also [AudioStreamPlayer] to play a sound non-positionally.\n"
+"[b]Note:[/b] Hiding an [AudioStreamPlayer3D] node does not disable its audio "
+"output. To temporarily disable an [AudioStreamPlayer3D]'s audio output, set "
+"[member unit_db] to a very low value like [code]-100[/code] (which isn't "
+"audible to human hearing)."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:25
+msgid ""
+"Returns the [AudioStreamPlayback] object associated with this "
+"[AudioStreamPlayer3D]."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:54
+msgid ""
+"Dampens audio using a low-pass filter above this frequency, in Hz. To "
+"disable the dampening effect entirely, set this to [code]20500[/code] as "
+"this frequency is above the human hearing limit."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:57
+msgid "Amount how much the filter affects the loudness, in decibels."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:60
+msgid ""
+"Decides if audio should get quieter with distance linearly, quadratically, "
+"logarithmically, or not be affected by distance, effectively disabling "
+"attenuation."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:63
+msgid ""
+"If [code]true[/code], audio plays when the AudioStreamPlayer3D node is added "
+"to scene tree."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:66
+msgid "The bus on which this audio is playing."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:69
+msgid ""
+"Decides in which step the [url=https://en.wikipedia.org/wiki/"
+"Doppler_effect]Doppler effect[/url] should be calculated.\n"
+"[b]Note:[/b] Only effective if the current [Camera]'s [member Camera."
+"doppler_tracking] property is set to a value other than [constant Camera."
+"DOPPLER_TRACKING_DISABLED]."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:73
+msgid "The angle in which the audio reaches cameras undampened."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:76
+msgid ""
+"If [code]true[/code], the audio should be dampened according to the "
+"direction of the sound."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:79
+msgid ""
+"Dampens audio if camera is outside of [member emission_angle_degrees] and "
+"[member emission_angle_enabled] is set by this factor, in decibels."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:82
+msgid "Sets the absolute maximum of the soundlevel, in decibels."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:85
+msgid ""
+"Sets the distance from which the [member out_of_range_mode] takes effect. "
+"Has no effect if set to 0."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:88
+msgid ""
+"Decides if audio should pause when source is outside of [member "
+"max_distance] range."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:97
+msgid "The [AudioStream] resource to be played."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:100
+msgid ""
+"If [code]true[/code], the playback is paused. You can resume it by setting "
+"[member stream_paused] to [code]false[/code]."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:103
+msgid "The base sound level unaffected by dampening, in decibels."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:106
+msgid ""
+"The factor for the attenuation effect. Higher values make the sound audible "
+"over a larger distance."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:118
+msgid "Linear dampening of loudness according to distance."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:121
+msgid "Squared dampening of loudness according to distance."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:124
+msgid "Logarithmic dampening of loudness according to distance."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:127
+msgid ""
+"No dampening of loudness according to distance. The sound will still be "
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:130
+msgid ""
+"Mix this audio in, even when it's out of range. This increases CPU usage, "
+"but keeps the sound playing at the correct position if the camera leaves and "
+"enters the [AudioStreamPlayer3D]'s [member max_distance] radius."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:133
+msgid ""
+"Pause this audio when it gets out of range. This decreases CPU usage, but "
+"will cause the sound to restart if the camera leaves and enters the "
+"[AudioStreamPlayer3D]'s [member max_distance] radius."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:136
+msgid "Disables doppler tracking."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:139
+msgid "Executes doppler tracking in idle step (every rendered frame)."
+msgstr ""
+
+#: doc/classes/AudioStreamPlayer3D.xml:142
+msgid ""
+"Executes doppler tracking in physics step (every simulated physics frame)."
+msgstr ""
+
+#: doc/classes/AudioStreamRandomPitch.xml:4
+msgid "Plays audio with random pitch shifting."
+msgstr ""
+
+#: doc/classes/AudioStreamRandomPitch.xml:7
+msgid "Randomly varies pitch on each start."
+msgstr ""
+
+#: doc/classes/AudioStreamRandomPitch.xml:15
+msgid "The current [AudioStream]."
+msgstr ""
+
+#: doc/classes/AudioStreamRandomPitch.xml:18
+msgid "The intensity of random pitch variation."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:4
+msgid "Stores audio data loaded from WAV files."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:7
+msgid ""
+"AudioStreamSample stores sound samples loaded from WAV files. To play the "
+"stored sound, use an [AudioStreamPlayer] (for non-positional audio) or "
+"[AudioStreamPlayer2D]/[AudioStreamPlayer3D] (for positional audio). The "
+"sound can be looped.\n"
+"This class can also be used to store dynamically-generated PCM audio data. "
+"See also [AudioStreamGenerator] for procedural audio generation."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:17
+msgid ""
+"Saves the AudioStreamSample as a WAV file to [code]path[/code]. Samples with "
+"IMA ADPCM format can't be saved.\n"
+"[b]Note:[/b] A [code].wav[/code] extension is automatically appended to "
+"[code]path[/code] if it is missing."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:24
+msgid ""
+"Contains the audio data in bytes.\n"
+"[b]Note:[/b] This property expects signed PCM8 data. To convert unsigned "
+"PCM8 to signed PCM8, subtract 128 from each byte."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:28
+msgid "Audio format. See [enum Format] constants for values."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:31
+msgid ""
+"The loop start point (in number of samples, relative to the beginning of the "
+"sample). This information will be imported automatically from the WAV file "
+"if present."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:34
+msgid ""
+"The loop end point (in number of samples, relative to the beginning of the "
+"sample). This information will be imported automatically from the WAV file "
+"if present."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:37
+msgid ""
+"The loop mode. This information will be imported automatically from the WAV "
+"file if present. See [enum LoopMode] constants for values."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:40
+msgid ""
+"The sample rate for mixing this audio. Higher values require more storage "
+"space, but result in better quality.\n"
+"In games, common sample rates in use are [code]11025[/code], [code]16000[/"
+"code], [code]22050[/code], [code]32000[/code], [code]44100[/code], and "
+"[code]48000[/code].\n"
+"According to the [url=https://en.wikipedia.org/wiki/Nyquist"
+"%E2%80%93Shannon_sampling_theorem]Nyquist-Shannon sampling theorem[/url], "
+"there is no quality difference to human hearing when going past 40,000 Hz "
+"(since most humans can only hear up to ~20,000 Hz, often less). If you are "
+"using lower-pitched sounds such as voices, lower sample rates such as "
+"[code]32000[/code] or [code]22050[/code] may be usable with no loss in "
+"quality."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:45
+msgid "If [code]true[/code], audio is stereo."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:50
+msgid "8-bit audio codec."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:53
+msgid "16-bit audio codec."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:56
+msgid "Audio is compressed using IMA ADPCM."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:59
+msgid "Audio does not loop."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:62
+msgid ""
+"Audio loops the data between [member loop_begin] and [member loop_end], "
+"playing forward only."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:65
+msgid ""
+"Audio loops the data between [member loop_begin] and [member loop_end], "
+"playing back and forth."
+msgstr ""
+
+#: doc/classes/AudioStreamSample.xml:68
+msgid ""
+"Audio loops the data between [member loop_begin] and [member loop_end], "
+"playing backward only."
+msgstr ""
+
+#: doc/classes/BackBufferCopy.xml:4
+msgid ""
+"Copies a region of the screen (or the whole screen) to a buffer so it can be "
+"accessed in your shader scripts through the "
+"[code]texture(SCREEN_TEXTURE, ...)[/code] function."
+msgstr ""
+
+#: doc/classes/BackBufferCopy.xml:7
+msgid ""
+"Node for back-buffering the currently-displayed screen. The region defined "
+"in the BackBufferCopy node is buffered with the content of the screen it "
+"covers, or the entire screen according to the copy mode set. Use the "
+"[code]texture(SCREEN_TEXTURE, ...)[/code] function in your shader scripts to "
+"access the buffer.\n"
+"[b]Note:[/b] Since this node inherits from [Node2D] (and not [Control]), "
+"anchors and margins won't apply to child [Control]-derived nodes. This can "
+"be problematic when resizing the window. To avoid this, add [Control]-"
+"derived nodes as [i]siblings[/i] to the BackBufferCopy node instead of "
+"adding them as children."
+msgstr ""
+
+#: doc/classes/BackBufferCopy.xml:16
+msgid "Buffer mode. See [enum CopyMode] constants."
+msgstr ""
+
+#: doc/classes/BackBufferCopy.xml:19
+msgid ""
+"The area covered by the BackBufferCopy. Only used if [member copy_mode] is "
+"[constant COPY_MODE_RECT]."
+msgstr ""
+
+#: doc/classes/BackBufferCopy.xml:24
+msgid ""
+"Disables the buffering mode. This means the BackBufferCopy node will "
+"directly use the portion of screen it covers."
+msgstr ""
+
+#: doc/classes/BackBufferCopy.xml:27
+msgid "BackBufferCopy buffers a rectangular region."
+msgstr ""
+
+#: doc/classes/BackBufferCopy.xml:30
+msgid "BackBufferCopy buffers the entire screen."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:4
+msgid "Prerendered indirect light map for a scene."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:7
+msgid ""
+"Baked lightmaps are an alternative workflow for adding indirect (or baked) "
+"lighting to a scene. Unlike the [GIProbe] approach, baked lightmaps work "
+"fine on low-end PCs and mobile devices as they consume almost no resources "
+"in run-time.\n"
+"[b]Note:[/b] Due to how lightmaps work, most properties only have a visible "
+"effect once lightmaps are baked again."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:11
+msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/baked_lightmaps.html"
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:19
+msgid ""
+"Bakes the lightmap, scanning from the given [code]from_node[/code] root and "
+"saves the resulting [BakedLightmapData] in [code]data_save_path[/code]. If "
+"no save path is provided it will try to match the path from the current "
+"[member light_data]."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:25
+msgid ""
+"When enabled, the lightmapper will merge the textures for all meshes into a "
+"single large layered texture. Not supported in GLES2."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:28
+msgid ""
+"Maximum size of each lightmap layer, only used when [member atlas_generate] "
+"is enabled."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:31
+msgid ""
+"Raycasting bias used during baking to avoid floating point precision issues."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:34
+msgid ""
+"The energy multiplier for each bounce. Higher values will make indirect "
+"lighting brighter. A value of [code]1.0[/code] represents physically "
+"accurate behavior, but higher values can be used to make indirect lighting "
+"propagate more visibly when using a low number of bounces. This can be used "
+"to speed up bake times by lowering the number of [member bounces] then "
+"increasing [member bounce_indirect_energy]. Unlike [member BakedLightmapData."
+"energy], this property does not affect direct lighting emitted by light "
+"nodes, emissive materials and the environment.\n"
+"[b]Note:[/b] [member bounce_indirect_energy] only has an effect if [member "
+"bounces] is set to a value greater than or equal to [code]1[/code]."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:38
+msgid ""
+"Number of light bounces that are taken into account during baking. See also "
+"[member bounce_indirect_energy]."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:41
+msgid "Grid size used for real-time capture information on dynamic objects."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:44
+msgid ""
+"When enabled, an octree containing the scene's lighting information will be "
+"computed. This octree will then be used to light dynamic objects in the "
+"scene."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:47
+msgid ""
+"Bias value to reduce the amount of light proagation in the captured octree."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:50
+msgid "Bake quality of the capture data."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:53
+msgid ""
+"If a baked mesh doesn't have a UV2 size hint, this value will be used to "
+"roughly compute a suitable lightmap size."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:56
+msgid ""
+"The environment color when [member environment_mode] is set to [constant "
+"ENVIRONMENT_MODE_CUSTOM_COLOR]."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:59
+msgid ""
+"The energy scaling factor when when [member environment_mode] is set to "
+"[constant ENVIRONMENT_MODE_CUSTOM_COLOR] or [constant "
+"ENVIRONMENT_MODE_CUSTOM_SKY]."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:62
+msgid ""
+"The [Sky] resource to use when [member environment_mode] is set o [constant "
+"ENVIRONMENT_MODE_CUSTOM_SKY]."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:65
+msgid "The rotation of the baked custom sky."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:68
+msgid ""
+"Minimum ambient light for all the lightmap texels. This doesn't take into "
+"account any occlusion from the scene's geometry, it simply ensures a minimum "
+"amount of light on all the lightmap texels. Can be used for artistic control "
+"on shadow color."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:71
+msgid "Decides which environment to use during baking."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:74
+msgid ""
+"Size of the baked lightmap. Only meshes inside this region will be included "
+"in the baked lightmap, also used as the bounds of the captured region for "
+"dynamic lighting."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:77
+msgid ""
+"Deprecated, in previous versions it determined the location where lightmaps "
+"were be saved."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:80
+msgid "The calculated light data."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:83
+msgid ""
+"Determines the amount of samples per texel used in indrect light baking. The "
+"amount of samples for each quality level can be configured in the project "
+"settings."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:86
+msgid ""
+"Store full color values in the lightmap textures. When disabled, lightmap "
+"textures will store a single brightness channel. Can be disabled to reduce "
+"disk usage if the scene contains only white lights or you don't mind losing "
+"color information in indirect lighting."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:89
+msgid ""
+"When enabled, a lightmap denoiser will be used to reduce the noise inherent "
+"to Monte Carlo based global illumination."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:92
+msgid ""
+"If [code]true[/code], stores the lightmap textures in a high dynamic range "
+"format (EXR). If [code]false[/code], stores the lightmap texture in a low "
+"dynamic range PNG image. This can be set to [code]false[/code] to reduce "
+"disk usage, but light values over 1.0 will be clamped and you may see "
+"banding caused by the reduced precision.\n"
+"[b]Note:[/b] Setting [member use_hdr] to [code]true[/code] will decrease "
+"lightmap banding even when using the GLES2 backend or if [member "
+"ProjectSettings.rendering/quality/depth/hdr] is [code]false[/code]."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:98
+msgid "The lowest bake quality mode. Fastest to calculate."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:101
+msgid "The default bake quality mode."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:104
+msgid "A higher bake quality mode. Takes longer to calculate."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:107
+msgid "The highest bake quality mode. Takes the longest to calculate."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:110
+msgid "Baking was successful."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:113
+msgid ""
+"Returns if no viable save path is found. This can happen where an [member "
+"image_path] is not specified or when the save location is invalid."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:116 doc/classes/SpatialMaterial.xml:622
+msgid "Currently unused."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:119
+msgid "Returns when the baker cannot save per-mesh textures to file."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:122
+msgid "The size of the generated lightmaps is too large."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:125
+msgid "Some mesh contains UV2 values outside the [code][0,1][/code] range."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:128
+msgid "Returns if user cancels baking."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:133
+msgid "No environment is used during baking."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:136
+msgid "The baked environment is automatically picked from the current scene."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:139
+msgid "A custom sky is used as environment during baking."
+msgstr ""
+
+#: doc/classes/BakedLightmap.xml:142
+msgid "A custom solid color is used as environment during baking."
+msgstr ""
+
+#: doc/classes/BakedLightmapData.xml:56
+msgid ""
+"Global energy multiplier for baked and dynamic capture objects. This can be "
+"changed at run-time without having to bake lightmaps again.\n"
+"To adjust only the energy of indirect lighting (without affecting direct "
+"lighting or emissive materials), adjust [member BakedLightmap."
+"bounce_indirect_energy] and bake lightmaps again."
+msgstr ""
+
+#: doc/classes/BakedLightmapData.xml:60
+msgid ""
+"Controls whether dynamic capture objects receive environment lighting or not."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:4
+msgid "Base class for different kinds of buttons."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:7
+msgid ""
+"BaseButton is the abstract base class for buttons, so it shouldn't be used "
+"directly (it doesn't display anything). Other types of buttons inherit from "
+"it."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:15
+msgid ""
+"Called when the button is pressed. If you need to know the button's pressed "
+"state (and [member toggle_mode] is active), use [method _toggled] instead."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:22
+msgid ""
+"Called when the button is toggled (only if [member toggle_mode] is active)."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:28
+msgid ""
+"Returns the visual state used to draw the button. This is useful mainly when "
+"implementing your own draw code by either overriding _draw() or connecting "
+"to \"draw\" signal. The visual state of the button is defined by the [enum "
+"DrawMode] enum."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:34
+msgid ""
+"Returns [code]true[/code] if the mouse has entered the button and has not "
+"left it yet."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:41
+msgid ""
+"Changes the [member pressed] state of the button, without emitting [signal "
+"toggled]. Use when you just want to change the state of the button without "
+"sending the pressed event (e.g. when initializing scene). Only works if "
+"[member toggle_mode] is [code]true[/code].\n"
+"[b]Note:[/b] This method doesn't unpress other buttons in its button [member "
+"group]."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:48
+msgid ""
+"Determines when the button is considered clicked, one of the [enum "
+"ActionMode] constants."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:51
+msgid ""
+"Binary mask to choose which mouse buttons this button will respond to.\n"
+"To allow both left-click and right-click, use [code]BUTTON_MASK_LEFT | "
+"BUTTON_MASK_RIGHT[/code]."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:55
+msgid ""
+"If [code]true[/code], the button is in disabled state and can't be clicked "
+"or toggled."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:58
+msgid ""
+"[i]Deprecated.[/i] This property has been deprecated due to redundancy and "
+"will be removed in Godot 4.0. This property no longer has any effect when "
+"set. Please use [member Control.focus_mode] instead."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:62
+msgid "[ButtonGroup] associated to the button."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:65
+msgid ""
+"If [code]true[/code], the button stays pressed when moving the cursor "
+"outside the button while pressing it.\n"
+"[b]Note:[/b] This property only affects the button's visual appearance. "
+"Signals will be emitted at the same moment regardless of this property's "
+"value."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:69
+msgid ""
+"If [code]true[/code], the button's state is pressed. Means the button is "
+"pressed down or toggled (if [member toggle_mode] is active). Only works if "
+"[member toggle_mode] is [code]true[/code].\n"
+"[b]Note:[/b] Setting [member pressed] will result in [signal toggled] to be "
+"emitted. If you want to change the pressed state without emitting that "
+"signal, use [method set_pressed_no_signal]."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:73
+msgid "[ShortCut] associated to the button."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:76
+msgid ""
+"If [code]true[/code], the button will add information about its shortcut in "
+"the tooltip."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:79
+msgid ""
+"If [code]true[/code], the button is in toggle mode. Makes the button flip "
+"state between pressed and unpressed each time its area is clicked."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:85
+msgid "Emitted when the button starts being held down."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:90
+msgid "Emitted when the button stops being held down."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:95
+msgid ""
+"Emitted when the button is toggled or pressed. This is on [signal "
+"button_down] if [member action_mode] is [constant ACTION_MODE_BUTTON_PRESS] "
+"and on [signal button_up] otherwise.\n"
+"If you need to know the button's pressed state (and [member toggle_mode] is "
+"active), use [signal toggled] instead."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:102
+msgid ""
+"Emitted when the button was just toggled between pressed and normal states "
+"(only if [member toggle_mode] is active). The new state is contained in the "
+"[code]button_pressed[/code] argument."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:108
+msgid ""
+"The normal state (i.e. not pressed, not hovered, not toggled and enabled) of "
+"buttons."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:111
+msgid "The state of buttons are pressed."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:114
+msgid "The state of buttons are hovered."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:117
+msgid "The state of buttons are disabled."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:120
+msgid "The state of buttons are both hovered and pressed."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:123
+msgid "Require just a press to consider the button clicked."
+msgstr ""
+
+#: doc/classes/BaseButton.xml:126
+msgid ""
+"Require a press and a subsequent release before considering the button "
+"clicked."
+msgstr ""
+
+#: doc/classes/Basis.xml:4
+msgid "3×3 matrix datatype."
+msgstr ""
+
+#: doc/classes/Basis.xml:7
+msgid ""
+"3×3 matrix used for 3D rotation and scale. Almost always used as an "
+"orthogonal basis for a Transform.\n"
+"Contains 3 vector fields X, Y and Z as its columns, which are typically "
+"interpreted as the local basis vectors of a transformation. For such use, it "
+"is composed of a scaling and a rotation matrix, in that order (M = R.S).\n"
+"Can also be accessed as array of 3D vectors. These vectors are normally "
+"orthogonal to each other, but are not necessarily normalized (due to "
+"scaling).\n"
+"For more information, read the \"Matrices and transforms\" documentation "
+"article."
+msgstr ""
+
+#: doc/classes/Basis.xml:14 doc/classes/Transform.xml:12
+#: doc/classes/Transform2D.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/math/matrices_and_transforms."
+"html"
+msgstr ""
+
+#: doc/classes/Basis.xml:15 doc/classes/Transform.xml:13
+msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/using_transforms.html"
+msgstr ""
+
+#: doc/classes/Basis.xml:16 doc/classes/Line2D.xml:11
+#: doc/classes/Transform.xml:14 doc/classes/Transform2D.xml:13
+#: doc/classes/Vector2.xml:15 doc/classes/Vector3.xml:15
+msgid "https://godotengine.org/asset-library/asset/584"
+msgstr ""
+
+#: doc/classes/Basis.xml:18 doc/classes/CylinderShape.xml:12
+#: doc/classes/Dictionary.xml:88 doc/classes/DynamicFont.xml:18
+#: doc/classes/DynamicFontData.xml:10 doc/classes/File.xml:29
+#: doc/classes/Input.xml:12 doc/classes/InputEvent.xml:13
+#: doc/classes/InputEventAction.xml:12 doc/classes/InputEventMouseMotion.xml:12
+#: doc/classes/KinematicBody.xml:15 doc/classes/RayCast.xml:15
+#: doc/classes/StaticBody.xml:13 doc/classes/SurfaceTool.xml:22
+#: doc/classes/TextureButton.xml:12 doc/classes/TextureRect.xml:11
+#: doc/classes/Thread.xml:13 doc/classes/VBoxContainer.xml:10
+msgid "https://godotengine.org/asset-library/asset/676"
+msgstr ""
+
+#: doc/classes/Basis.xml:19 doc/classes/Line2D.xml:12
+#: doc/classes/Transform.xml:16 doc/classes/Transform2D.xml:14
+msgid "https://godotengine.org/asset-library/asset/583"
+msgstr ""
+
+#: doc/classes/Basis.xml:26
+msgid "Constructs a pure rotation basis matrix from the given quaternion."
+msgstr ""
+
+#: doc/classes/Basis.xml:33
+msgid ""
+"Constructs a pure rotation basis matrix from the given Euler angles (in the "
+"YXZ convention: when *composing*, first Y, then X, and Z last), given in the "
+"vector format as (X angle, Y angle, Z angle).\n"
+"Consider using the [Quat] constructor instead, which uses a quaternion "
+"instead of Euler angles."
+msgstr ""
+
+#: doc/classes/Basis.xml:42
+msgid ""
+"Constructs a pure rotation basis matrix, rotated around the given "
+"[code]axis[/code] by [code]phi[/code], in radians. The axis must be a "
+"normalized vector."
+msgstr ""
+
+#: doc/classes/Basis.xml:51
+msgid "Constructs a basis matrix from 3 axis vectors (matrix columns)."
+msgstr ""
+
+#: doc/classes/Basis.xml:57
+msgid ""
+"Returns the determinant of the basis matrix. If the basis is uniformly "
+"scaled, its determinant is the square of the scale.\n"
+"A negative determinant means the basis has a negative scale. A zero "
+"determinant means the basis isn't invertible, and is usually considered "
+"invalid."
+msgstr ""
+
+#: doc/classes/Basis.xml:64
+msgid ""
+"Returns the basis's rotation in the form of Euler angles (in the YXZ "
+"convention: when decomposing, first Z, then X, and Y last). The returned "
+"vector contains the rotation angles in the format (X angle, Y angle, Z "
+"angle).\n"
+"Consider using the [method get_rotation_quat] method instead, which returns "
+"a [Quat] quaternion instead of Euler angles."
+msgstr ""
+
+#: doc/classes/Basis.xml:71
+msgid ""
+"This function considers a discretization of rotations into 24 points on unit "
+"sphere, lying along the vectors (x,y,z) with each component being either -1, "
+"0, or 1, and returns the index of the point best representing the "
+"orientation of the object. It is mainly used by the [GridMap] editor. For "
+"further details, refer to the Godot source code."
+msgstr ""
+
+#: doc/classes/Basis.xml:77
+msgid ""
+"Returns the basis's rotation in the form of a quaternion. See [method "
+"get_euler] if you need Euler angles, but keep in mind quaternions should "
+"generally be preferred to Euler angles."
+msgstr ""
+
+#: doc/classes/Basis.xml:83
+msgid ""
+"Assuming that the matrix is the combination of a rotation and scaling, "
+"return the absolute value of scaling factors along each axis."
+msgstr ""
+
+#: doc/classes/Basis.xml:89
+msgid "Returns the inverse of the matrix."
+msgstr ""
+
+#: doc/classes/Basis.xml:97
+msgid ""
+"Returns [code]true[/code] if this basis and [code]b[/code] are approximately "
+"equal, by calling [code]is_equal_approx[/code] on each component.\n"
+"[b]Note:[/b] For complicated reasons, the epsilon argument is always "
+"discarded. Don't use the epsilon argument, it does nothing."
+msgstr ""
+
+#: doc/classes/Basis.xml:104
+msgid ""
+"Returns the orthonormalized version of the matrix (useful to call from time "
+"to time to avoid rounding error for orthogonal matrices). This performs a "
+"Gram-Schmidt orthonormalization on the basis of the matrix."
+msgstr ""
+
+#: doc/classes/Basis.xml:112
+msgid ""
+"Introduce an additional rotation around the given axis by phi (radians). The "
+"axis must be a normalized vector."
+msgstr ""
+
+#: doc/classes/Basis.xml:119
+msgid ""
+"Introduce an additional scaling specified by the given 3D scaling factor."
+msgstr ""
+
+#: doc/classes/Basis.xml:127
+msgid ""
+"Assuming that the matrix is a proper rotation matrix, slerp performs a "
+"spherical-linear interpolation with another rotation matrix."
+msgstr ""
+
+#: doc/classes/Basis.xml:134
+msgid "Transposed dot product with the X axis of the matrix."
+msgstr ""
+
+#: doc/classes/Basis.xml:141
+msgid "Transposed dot product with the Y axis of the matrix."
+msgstr ""
+
+#: doc/classes/Basis.xml:148
+msgid "Transposed dot product with the Z axis of the matrix."
+msgstr ""
+
+#: doc/classes/Basis.xml:154
+msgid "Returns the transposed version of the matrix."
+msgstr ""
+
+#: doc/classes/Basis.xml:161
+msgid "Returns a vector transformed (multiplied) by the matrix."
+msgstr ""
+
+#: doc/classes/Basis.xml:168
+msgid ""
+"Returns a vector transformed (multiplied) by the transposed basis matrix.\n"
+"[b]Note:[/b] This results in a multiplication by the inverse of the matrix "
+"only if it represents a rotation-reflection."
+msgstr ""
+
+#: doc/classes/Basis.xml:175 doc/classes/Transform2D.xml:150
+msgid ""
+"The basis matrix's X vector (column 0). Equivalent to array index [code]0[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Basis.xml:178 doc/classes/Transform2D.xml:153
+msgid ""
+"The basis matrix's Y vector (column 1). Equivalent to array index [code]1[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Basis.xml:181
+msgid ""
+"The basis matrix's Z vector (column 2). Equivalent to array index [code]2[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Basis.xml:186
+msgid ""
+"The identity basis, with no rotation or scaling applied.\n"
+"This is identical to calling [code]Basis()[/code] without any parameters. "
+"This constant can be used to make your code clearer, and for consistency "
+"with C#."
+msgstr ""
+
+#: doc/classes/Basis.xml:190
+msgid ""
+"The basis that will flip something along the X axis when used in a "
+"transformation."
+msgstr ""
+
+#: doc/classes/Basis.xml:193
+msgid ""
+"The basis that will flip something along the Y axis when used in a "
+"transformation."
+msgstr ""
+
+#: doc/classes/Basis.xml:196
+msgid ""
+"The basis that will flip something along the Z axis when used in a "
+"transformation."
+msgstr ""
+
+#: doc/classes/BitMap.xml:4
+msgid "Boolean matrix."
+msgstr ""
+
+#: doc/classes/BitMap.xml:7
+msgid ""
+"A two-dimensional array of boolean values, can be used to efficiently store "
+"a binary matrix (every matrix element takes only one bit) and query the "
+"values using natural cartesian coordinates."
+msgstr ""
+
+#: doc/classes/BitMap.xml:16
+msgid ""
+"Creates a bitmap with the specified size, filled with [code]false[/code]."
+msgstr ""
+
+#: doc/classes/BitMap.xml:24
+msgid ""
+"Creates a bitmap that matches the given image dimensions, every element of "
+"the bitmap is set to [code]false[/code] if the alpha value of the image at "
+"that position is equal to [code]threshold[/code] or less, and [code]true[/"
+"code] in other case."
+msgstr ""
+
+#: doc/classes/BitMap.xml:31
+msgid "Returns bitmap's value at the specified position."
+msgstr ""
+
+#: doc/classes/BitMap.xml:37
+msgid "Returns bitmap's dimensions."
+msgstr ""
+
+#: doc/classes/BitMap.xml:43
+msgid ""
+"Returns the amount of bitmap elements that are set to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/BitMap.xml:51
+msgid ""
+"Applies morphological dilation to the bitmap. The first argument is the "
+"dilation amount, Rect2 is the area where the dilation will be applied."
+msgstr ""
+
+#: doc/classes/BitMap.xml:66
+msgid ""
+"Sets the bitmap's element at the specified position, to the specified value."
+msgstr ""
+
+#: doc/classes/BitMap.xml:74
+msgid "Sets a rectangular portion of the bitmap to the specified value."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:4
+msgid ""
+"Renders text using fonts under the [url=https://www.angelcode.com/products/"
+"bmfont/]BMFont[/url] format.\n"
+"Handles files with the [code].fnt[/code] extension."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:8
+msgid ""
+"Renders text using [code]*.fnt[/code] fonts containing texture atlases. "
+"Supports distance fields. For using vector font files like TTF directly, see "
+"[DynamicFont]."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:21
+msgid ""
+"Adds a character to the font, where [code]character[/code] is the Unicode "
+"value, [code]texture[/code] is the texture index, [code]rect[/code] is the "
+"region in the texture (in pixels!), [code]align[/code] is the (optional) "
+"alignment for the character and [code]advance[/code] is the (optional) "
+"advance."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:30
+msgid ""
+"Adds a kerning pair to the [BitmapFont] as a difference. Kerning pairs are "
+"special cases where a typeface advance is determined by the next character."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:37
+msgid "Adds a texture to the [BitmapFont]."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:43
+msgid "Clears all the font data and settings."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:50
+msgid ""
+"Creates a BitmapFont from the [code]*.fnt[/code] file at [code]path[/code]."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:58
+msgid "Returns a kerning pair as a difference."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:65
+msgid "Returns the font atlas texture at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:71
+msgid "Returns the number of textures in the BitmapFont atlas."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:77
+msgid "Ascent (number of pixels above the baseline)."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:80
+msgid "If [code]true[/code], distance field hint is enabled."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:83
+msgid "The fallback font."
+msgstr ""
+
+#: doc/classes/BitmapFont.xml:86
+msgid "Total font height (ascent plus descent) in pixels."
+msgstr ""
+
+#: doc/classes/Bone2D.xml:4
+msgid "Joint used with [Skeleton2D] to control and animate other nodes."
+msgstr ""
+
+#: doc/classes/Bone2D.xml:7
+msgid ""
+"Use a hierarchy of [code]Bone2D[/code] bound to a [Skeleton2D] to control, "
+"and animate other [Node2D] nodes.\n"
+"You can use [code]Bone2D[/code] and [code]Skeleton2D[/code] nodes to animate "
+"2D meshes created with the Polygon 2D UV editor.\n"
+"Each bone has a [member rest] transform that you can reset to with [method "
+"apply_rest]. These rest poses are relative to the bone's parent.\n"
+"If in the editor, you can set the rest pose of an entire skeleton using a "
+"menu option, from the code, you need to iterate over the bones to set their "
+"individual rest poses."
+msgstr ""
+
+#: doc/classes/Bone2D.xml:18
+msgid "Stores the node's current transforms in [member rest]."
+msgstr ""
+
+#: doc/classes/Bone2D.xml:24
+msgid ""
+"Returns the node's index as part of the entire skeleton. See [Skeleton2D]."
+msgstr ""
+
+#: doc/classes/Bone2D.xml:30
+msgid ""
+"Returns the node's [member rest] [code]Transform2D[/code] if it doesn't have "
+"a parent, or its rest pose relative to its parent."
+msgstr ""
+
+#: doc/classes/Bone2D.xml:36
+msgid ""
+"Length of the bone's representation drawn in the editor's viewport in pixels."
+msgstr ""
+
+#: doc/classes/Bone2D.xml:39
+msgid ""
+"Rest transform of the bone. You can reset the node's transforms to this "
+"value using [method apply_rest]."
+msgstr ""
+
+#: doc/classes/BoneAttachment.xml:4
+msgid "A node that will attach to a bone."
+msgstr ""
+
+#: doc/classes/BoneAttachment.xml:7
+msgid ""
+"This node must be the child of a [Skeleton] node. You can then select a bone "
+"for this node to attach to. The BoneAttachment node will copy the transform "
+"of the selected bone."
+msgstr ""
+
+#: doc/classes/BoneAttachment.xml:15
+msgid "The name of the attached bone."
+msgstr ""
+
+#: doc/classes/bool.xml:4
+msgid "Boolean built-in type."
+msgstr ""
+
+#: doc/classes/bool.xml:7
+msgid ""
+"Boolean is a built-in type. There are two boolean values: [code]true[/code] "
+"and [code]false[/code]. You can think of it as a switch with on or off (1 or "
+"0) setting. Booleans are used in programming for logic in condition "
+"statements, like [code]if[/code] statements.\n"
+"Booleans can be directly used in [code]if[/code] statements. The code below "
+"demonstrates this on the [code]if can_shoot:[/code] line. You don't need to "
+"use [code]== true[/code], you only need [code]if can_shoot:[/code]. "
+"Similarly, use [code]if not can_shoot:[/code] rather than [code]== false[/"
+"code].\n"
+"[codeblock]\n"
+"var can_shoot = true\n"
+"\n"
+"func shoot():\n"
+" if can_shoot:\n"
+" pass # Perform shooting actions here.\n"
+"[/codeblock]\n"
+"The following code will only create a bullet if both conditions are met: "
+"action \"shoot\" is pressed and if [code]can_shoot[/code] is [code]true[/"
+"code].\n"
+"[b]Note:[/b] [code]Input.is_action_pressed(\"shoot\")[/code] is also a "
+"boolean that is [code]true[/code] when \"shoot\" is pressed and [code]false[/"
+"code] when \"shoot\" isn't pressed.\n"
+"[codeblock]\n"
+"var can_shoot = true\n"
+"\n"
+"func shoot():\n"
+" if can_shoot and Input.is_action_pressed(\"shoot\"):\n"
+" create_bullet()\n"
+"[/codeblock]\n"
+"The following code will set [code]can_shoot[/code] to [code]false[/code] and "
+"start a timer. This will prevent player from shooting until the timer runs "
+"out. Next [code]can_shoot[/code] will be set to [code]true[/code] again "
+"allowing player to shoot once again.\n"
+"[codeblock]\n"
+"var can_shoot = true\n"
+"onready var cool_down = $CoolDownTimer\n"
+"\n"
+"func shoot():\n"
+" if can_shoot and Input.is_action_pressed(\"shoot\"):\n"
+" create_bullet()\n"
+" can_shoot = false\n"
+" cool_down.start()\n"
+"\n"
+"func _on_CoolDownTimer_timeout():\n"
+" can_shoot = true\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/bool.xml:47
+msgid ""
+"Cast an [int] value to a boolean value, this method will return [code]false[/"
+"code] if [code]0[/code] is passed in, and [code]true[/code] for all other "
+"ints."
+msgstr ""
+
+#: doc/classes/bool.xml:54
+msgid ""
+"Cast a [float] value to a boolean value, this method will return "
+"[code]false[/code] if [code]0.0[/code] is passed in, and [code]true[/code] "
+"for all other floats."
+msgstr ""
+
+#: doc/classes/bool.xml:61
+msgid ""
+"Cast a [String] value to a boolean value, this method will return "
+"[code]false[/code] if [code]\"\"[/code] is passed in, and [code]true[/code] "
+"for all non-empty strings.\n"
+"Examples: [code]bool(\"False\")[/code] returns [code]true[/code], "
+"[code]bool(\"\")[/code] returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/BoxContainer.xml:4
+msgid "Base class for box containers."
+msgstr ""
+
+#: doc/classes/BoxContainer.xml:7
+msgid ""
+"Arranges child controls vertically or horizontally, and rearranges the "
+"controls automatically when their minimum size changes."
+msgstr ""
+
+#: doc/classes/BoxContainer.xml:16
+msgid ""
+"Adds a control to the box as a spacer. If [code]true[/code], [code]begin[/"
+"code] will insert the spacer control in front of other children."
+msgstr ""
+
+#: doc/classes/BoxContainer.xml:22
+msgid ""
+"The alignment of the container's children (must be one of [constant "
+"ALIGN_BEGIN], [constant ALIGN_CENTER] or [constant ALIGN_END])."
+msgstr ""
+
+#: doc/classes/BoxContainer.xml:28
+msgid "Aligns children with the beginning of the container."
+msgstr ""
+
+#: doc/classes/BoxContainer.xml:31
+msgid "Aligns children with the center of the container."
+msgstr ""
+
+#: doc/classes/BoxContainer.xml:34
+msgid "Aligns children with the end of the container."
+msgstr ""
+
+#: doc/classes/BoxShape.xml:4
+msgid "Box shape resource."
+msgstr ""
+
+#: doc/classes/BoxShape.xml:7
+msgid "3D box shape that can be a child of a [PhysicsBody] or [Area]."
+msgstr ""
+
+#: doc/classes/BoxShape.xml:10 doc/classes/CapsuleShape.xml:10
+#: doc/classes/ConcavePolygonShape.xml:11 doc/classes/ConvexPolygonShape.xml:10
+#: doc/classes/CylinderShape.xml:11 doc/classes/ProjectSettings.xml:13
+#: doc/classes/RigidBody.xml:16 doc/classes/SphereShape.xml:10
+#: doc/classes/StaticBody.xml:11
+msgid "https://godotengine.org/asset-library/asset/675"
+msgstr ""
+
+#: doc/classes/BoxShape.xml:11 doc/classes/CollisionShape.xml:11
+#: modules/gridmap/doc_classes/GridMap.xml:16 doc/classes/KinematicBody.xml:13
+#: doc/classes/Mesh.xml:11 doc/classes/MeshInstance.xml:11
+#: doc/classes/MeshLibrary.xml:10
+msgid "https://godotengine.org/asset-library/asset/126"
+msgstr ""
+
+#: doc/classes/BoxShape.xml:18
+msgid ""
+"The box's half extents. The width, height and depth of this shape is twice "
+"the half extents."
+msgstr ""
+
+#: doc/classes/Button.xml:4
+msgid "Standard themed Button."
+msgstr ""
+
+#: doc/classes/Button.xml:7
+msgid ""
+"Button is the standard themed button. It can contain text and an icon, and "
+"will display them according to the current [Theme].\n"
+"[b]Example of creating a button and assigning an action when pressed by code:"
+"[/b]\n"
+"[codeblock]\n"
+"func _ready():\n"
+" var button = Button.new()\n"
+" button.text = \"Click me\"\n"
+" button.connect(\"pressed\", self, \"_button_pressed\")\n"
+" add_child(button)\n"
+"\n"
+"func _button_pressed():\n"
+" print(\"Hello world!\")\n"
+"[/codeblock]\n"
+"Buttons (like all Control nodes) can also be created in the editor, but some "
+"situations may require creating them from code.\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node.\n"
+"[b]Note:[/b] Buttons do not interpret touch input and therefore don't "
+"support multitouch, since mouse emulation can only press one button at a "
+"given time. Use [TouchScreenButton] for buttons that trigger gameplay "
+"movement or actions, as [TouchScreenButton] supports multitouch."
+msgstr ""
+
+#: doc/classes/Button.xml:25 doc/classes/Dictionary.xml:89
+#: doc/classes/GridContainer.xml:12 doc/classes/OS.xml:10
+#: doc/classes/PoolStringArray.xml:11 doc/classes/ProjectSettings.xml:15
+#: doc/classes/ResourceLoader.xml:11 doc/classes/RichTextLabel.xml:17
+msgid "https://godotengine.org/asset-library/asset/677"
+msgstr ""
+
+#: doc/classes/Button.xml:31
+msgid ""
+"Text alignment policy for the button's text, use one of the [enum TextAlign] "
+"constants."
+msgstr ""
+
+#: doc/classes/Button.xml:34
+msgid ""
+"When this property is enabled, text that is too large to fit the button is "
+"clipped, when disabled the Button will always be wide enough to hold the "
+"text."
+msgstr ""
+
+#: doc/classes/Button.xml:37
+msgid ""
+"When enabled, the button's icon will expand/shrink to fit the button's size "
+"while keeping its aspect."
+msgstr ""
+
+#: doc/classes/Button.xml:40
+msgid "Flat buttons don't display decoration."
+msgstr ""
+
+#: doc/classes/Button.xml:43
+msgid ""
+"Button's icon, if text is present the icon will be placed before the text."
+msgstr ""
+
+#: doc/classes/Button.xml:46 doc/classes/LinkButton.xml:18
+msgid "The button's text that will be displayed inside the button's area."
+msgstr ""
+
+#: doc/classes/Button.xml:51
+msgid "Align the text to the left."
+msgstr ""
+
+#: doc/classes/Button.xml:54
+msgid "Align the text to the center."
+msgstr ""
+
+#: doc/classes/Button.xml:57
+msgid "Align the text to the right."
+msgstr ""
+
+#: doc/classes/Button.xml:62
+msgid "[StyleBox] used when the [Button] is disabled."
+msgstr ""
+
+#: doc/classes/Button.xml:65
+msgid ""
+"[StyleBox] used when the [Button] is focused. It is displayed over the "
+"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
+"visual effect."
+msgstr ""
+
+#: doc/classes/Button.xml:68
+msgid "[Font] of the [Button]'s text."
+msgstr ""
+
+#: doc/classes/Button.xml:71
+msgid "Default text [Color] of the [Button]."
+msgstr ""
+
+#: doc/classes/Button.xml:74
+msgid "Text [Color] used when the [Button] is disabled."
+msgstr ""
+
+#: doc/classes/Button.xml:77
+msgid "Text [Color] used when the [Button] is being hovered."
+msgstr ""
+
+#: doc/classes/Button.xml:80
+msgid "Text [Color] used when the [Button] is being pressed."
+msgstr ""
+
+#: doc/classes/Button.xml:83
+msgid "[StyleBox] used when the [Button] is being hovered."
+msgstr ""
+
+#: doc/classes/Button.xml:86
+msgid "The horizontal space between [Button]'s icon and text."
+msgstr ""
+
+#: doc/classes/Button.xml:89
+msgid "Default [StyleBox] for the [Button]."
+msgstr ""
+
+#: doc/classes/Button.xml:92
+msgid "[StyleBox] used when the [Button] is being pressed."
+msgstr ""
+
+#: doc/classes/ButtonGroup.xml:4
+msgid "Group of Buttons."
+msgstr ""
+
+#: doc/classes/ButtonGroup.xml:7
+msgid ""
+"Group of [Button]. All direct and indirect children buttons become radios. "
+"Only one allows being pressed.\n"
+"[member BaseButton.toggle_mode] should be [code]true[/code]."
+msgstr ""
+
+#: doc/classes/ButtonGroup.xml:16
+msgid ""
+"Returns an [Array] of [Button]s who have this as their [ButtonGroup] (see "
+"[member BaseButton.group])."
+msgstr ""
+
+#: doc/classes/ButtonGroup.xml:22
+msgid "Returns the current pressed button."
+msgstr ""
+
+#: doc/classes/ButtonGroup.xml:33
+msgid "Emitted when one of the buttons of the group is pressed."
+msgstr ""
+
+#: doc/classes/Camera.xml:4
+msgid "Camera node, displays from a point of view."
+msgstr ""
+
+#: doc/classes/Camera.xml:7
+msgid ""
+"Camera is a special node that displays what is visible from its current "
+"location. Cameras register themselves in the nearest [Viewport] node (when "
+"ascending the tree). Only one camera can be active per viewport. If no "
+"viewport is available ascending the tree, the camera will register in the "
+"global viewport. In other words, a camera just provides 3D display "
+"capabilities to a [Viewport], and, without one, a scene registered in that "
+"[Viewport] (or higher viewports) can't be displayed."
+msgstr ""
+
+#: doc/classes/Camera.xml:17
+msgid ""
+"If this is the current camera, remove it from being current. If "
+"[code]enable_next[/code] is [code]true[/code], request to make the next "
+"camera current, if any."
+msgstr ""
+
+#: doc/classes/Camera.xml:23
+msgid "Returns the camera's RID from the [VisualServer]."
+msgstr ""
+
+#: doc/classes/Camera.xml:29
+msgid ""
+"Returns the transform of the camera plus the vertical ([member v_offset]) "
+"and horizontal ([member h_offset]) offsets; and any other adjustments made "
+"to the position and orientation of the camera by subclassed cameras such as "
+"[ClippedCamera], [InterpolatedCamera] and [ARVRCamera]."
+msgstr ""
+
+#: doc/classes/Camera.xml:36
+msgid ""
+"Returns [code]true[/code] if the given [code]layer[/code] in the [member "
+"cull_mask] is enabled, [code]false[/code] otherwise."
+msgstr ""
+
+#: doc/classes/Camera.xml:42
+msgid ""
+"Returns the camera's frustum planes in world space units as an array of "
+"[Plane]s in the following order: near, far, left, top, right, bottom. Not to "
+"be confused with [member frustum_offset]."
+msgstr ""
+
+#: doc/classes/Camera.xml:49
+msgid ""
+"Returns [code]true[/code] if the given position is behind the camera.\n"
+"[b]Note:[/b] A position which returns [code]false[/code] may still be "
+"outside the camera's field of view."
+msgstr ""
+
+#: doc/classes/Camera.xml:56
+msgid ""
+"Makes this camera the current camera for the [Viewport] (see class "
+"description). If the camera node is outside the scene tree, it will attempt "
+"to become current once it's added."
+msgstr ""
+
+#: doc/classes/Camera.xml:63
+msgid ""
+"Returns a normal vector from the screen point location directed along the "
+"camera. Orthogonal cameras are normalized. Perspective cameras account for "
+"perspective, screen width/height, etc."
+msgstr ""
+
+#: doc/classes/Camera.xml:71
+msgid ""
+"Returns the 3D point in world space that maps to the given 2D coordinate in "
+"the [Viewport] rectangle on a plane that is the given [code]z_depth[/code] "
+"distance into the scene away from the camera."
+msgstr ""
+
+#: doc/classes/Camera.xml:78
+msgid ""
+"Returns a normal vector in world space, that is the result of projecting a "
+"point on the [Viewport] rectangle by the camera projection. This is useful "
+"for casting rays in the form of (origin, normal) for object intersection or "
+"picking."
+msgstr ""
+
+#: doc/classes/Camera.xml:85
+msgid ""
+"Returns a 3D position in world space, that is the result of projecting a "
+"point on the [Viewport] rectangle by the camera projection. This is useful "
+"for casting rays in the form of (origin, normal) for object intersection or "
+"picking."
+msgstr ""
+
+#: doc/classes/Camera.xml:93
+msgid ""
+"Enables or disables the given [code]layer[/code] in the [member cull_mask]."
+msgstr ""
+
+#: doc/classes/Camera.xml:103
+msgid ""
+"Sets the camera projection to frustum mode (see [constant "
+"PROJECTION_FRUSTUM]), by specifying a [code]size[/code], an [code]offset[/"
+"code], and the [code]z_near[/code] and [code]z_far[/code] clip planes in "
+"world space units."
+msgstr ""
+
+#: doc/classes/Camera.xml:112
+msgid ""
+"Sets the camera projection to orthogonal mode (see [constant "
+"PROJECTION_ORTHOGONAL]), by specifying a [code]size[/code], and the "
+"[code]z_near[/code] and [code]z_far[/code] clip planes in world space units. "
+"(As a hint, 2D games often use this projection, with values specified in "
+"pixels.)"
+msgstr ""
+
+#: doc/classes/Camera.xml:121
+msgid ""
+"Sets the camera projection to perspective mode (see [constant "
+"PROJECTION_PERSPECTIVE]), by specifying a [code]fov[/code] (field of view) "
+"angle in degrees, and the [code]z_near[/code] and [code]z_far[/code] clip "
+"planes in world space units."
+msgstr ""
+
+#: doc/classes/Camera.xml:128
+msgid ""
+"Returns the 2D coordinate in the [Viewport] rectangle that maps to the given "
+"3D point in world space.\n"
+"[b]Note:[/b] When using this to position GUI elements over a 3D viewport, "
+"use [method is_position_behind] to prevent them from appearing if the 3D "
+"point is behind the camera:\n"
+"[codeblock]\n"
+"# This code block is part of a script that inherits from Spatial.\n"
+"# `control` is a reference to a node inheriting from 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]"
+msgstr ""
+
+#: doc/classes/Camera.xml:141
+msgid ""
+"The culling mask that describes which 3D render layers are rendered by this "
+"camera."
+msgstr ""
+
+#: doc/classes/Camera.xml:144
+msgid ""
+"If [code]true[/code], the ancestor [Viewport] is currently using this camera."
+msgstr ""
+
+#: doc/classes/Camera.xml:147
+msgid ""
+"If not [constant DOPPLER_TRACKING_DISABLED], this camera will simulate the "
+"[url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/url] for "
+"objects changed in particular [code]_process[/code] methods. The Doppler "
+"effect is only simulated for [AudioStreamPlayer3D] nodes that have [member "
+"AudioStreamPlayer3D.doppler_tracking] set to a value other than [constant "
+"AudioStreamPlayer3D.DOPPLER_TRACKING_DISABLED].\n"
+"[b]Note:[/b] To toggle the Doppler effect preview in the editor, use the "
+"Perspective menu in the top-left corner of the 3D viewport and toggle "
+"[b]Enable Doppler[/b]."
+msgstr ""
+
+#: doc/classes/Camera.xml:151
+msgid "The [Environment] to use for this camera."
+msgstr ""
+
+#: doc/classes/Camera.xml:154
+msgid ""
+"The distance to the far culling boundary for this camera relative to its "
+"local Z axis."
+msgstr ""
+
+#: doc/classes/Camera.xml:157
+msgid ""
+"The camera's field of view angle (in degrees). Only applicable in "
+"perspective mode. Since [member keep_aspect] locks one axis, [code]fov[/"
+"code] sets the other axis' field of view angle.\n"
+"For reference, the default vertical field of view value ([code]70.0[/code]) "
+"is equivalent to a horizontal FOV of:\n"
+"- ~86.07 degrees in a 4:3 viewport\n"
+"- ~96.50 degrees in a 16:10 viewport\n"
+"- ~102.45 degrees in a 16:9 viewport\n"
+"- ~117.06 degrees in a 21:9 viewport"
+msgstr ""
+
+#: doc/classes/Camera.xml:165
+msgid ""
+"The camera's frustum offset. This can be changed from the default to create "
+"\"tilted frustum\" effects such as [url=https://zdoom.org/wiki/Y-shearing]Y-"
+"shearing[/url]."
+msgstr ""
+
+#: doc/classes/Camera.xml:168
+msgid "The horizontal (X) offset of the camera viewport."
+msgstr ""
+
+#: doc/classes/Camera.xml:171
+msgid ""
+"The axis to lock during [member fov]/[member size] adjustments. Can be "
+"either [constant KEEP_WIDTH] or [constant KEEP_HEIGHT]."
+msgstr ""
+
+#: doc/classes/Camera.xml:174
+msgid ""
+"The distance to the near culling boundary for this camera relative to its "
+"local Z axis."
+msgstr ""
+
+#: doc/classes/Camera.xml:177
+msgid ""
+"The camera's projection mode. In [constant PROJECTION_PERSPECTIVE] mode, "
+"objects' Z distance from the camera's local space scales their perceived "
+"size."
+msgstr ""
+
+#: doc/classes/Camera.xml:180
+msgid ""
+"The camera's size measured as 1/2 the width or height. Only applicable in "
+"orthogonal mode. Since [member keep_aspect] locks on axis, [code]size[/code] "
+"sets the other axis' size length."
+msgstr ""
+
+#: doc/classes/Camera.xml:183
+msgid "The vertical (Y) offset of the camera viewport."
+msgstr ""
+
+#: doc/classes/Camera.xml:188
+msgid ""
+"Perspective projection. Objects on the screen becomes smaller when they are "
+"far away."
+msgstr ""
+
+#: doc/classes/Camera.xml:191
+msgid ""
+"Orthogonal projection, also known as orthographic projection. Objects remain "
+"the same size on the screen no matter how far away they are."
+msgstr ""
+
+#: doc/classes/Camera.xml:194
+msgid ""
+"Frustum projection. This mode allows adjusting [member frustum_offset] to "
+"create \"tilted frustum\" effects."
+msgstr ""
+
+#: doc/classes/Camera.xml:197
+msgid ""
+"Preserves the horizontal aspect ratio; also known as Vert- scaling. This is "
+"usually the best option for projects running in portrait mode, as taller "
+"aspect ratios will benefit from a wider vertical FOV."
+msgstr ""
+
+#: doc/classes/Camera.xml:200
+msgid ""
+"Preserves the vertical aspect ratio; also known as Hor+ scaling. This is "
+"usually the best option for projects running in landscape mode, as wider "
+"aspect ratios will automatically benefit from a wider horizontal FOV."
+msgstr ""
+
+#: doc/classes/Camera.xml:203
+msgid ""
+"Disables [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/"
+"url] simulation (default)."
+msgstr ""
+
+#: doc/classes/Camera.xml:206
+msgid ""
+"Simulate [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/"
+"url] by tracking positions of objects that are changed in [code]_process[/"
+"code]. Changes in the relative velocity of this camera compared to those "
+"objects affect how Audio is perceived (changing the Audio's [code]pitch "
+"shift[/code])."
+msgstr ""
+
+#: doc/classes/Camera.xml:209
+msgid ""
+"Simulate [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/"
+"url] by tracking positions of objects that are changed in "
+"[code]_physics_process[/code]. Changes in the relative velocity of this "
+"camera compared to those objects affect how Audio is perceived (changing the "
+"Audio's [code]pitch shift[/code])."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:4
+msgid "Camera node for 2D scenes."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:7
+msgid ""
+"Camera node for 2D scenes. It forces the screen (current layer) to scroll "
+"following this node. This makes it easier (and faster) to program scrollable "
+"scenes than manually changing the position of [CanvasItem]-based nodes.\n"
+"This node is intended to be a simple helper to get things going quickly, but "
+"more functionality may be desired to change how the camera works. To make "
+"your own custom camera node, inherit it from [Node2D] and change the "
+"transform of the canvas by setting [member Viewport.canvas_transform] in "
+"[Viewport] (you can obtain the current [Viewport] by using [method Node."
+"get_viewport]).\n"
+"Note that the [Camera2D] node's [code]position[/code] doesn't represent the "
+"actual position of the screen, which may differ due to applied smoothing or "
+"limits. You can use [method get_camera_screen_center] to get the real "
+"position."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:13 doc/classes/TileMap.xml:13
+#: doc/classes/TileSet.xml:13
+msgid "https://godotengine.org/asset-library/asset/112"
+msgstr ""
+
+#: doc/classes/Camera2D.xml:14 doc/classes/Environment.xml:18
+#: doc/classes/WorldEnvironment.xml:14
+msgid "https://godotengine.org/asset-library/asset/110"
+msgstr ""
+
+#: doc/classes/Camera2D.xml:20
+msgid "Aligns the camera to the tracked node."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:26
+msgid ""
+"Removes any [Camera2D] from the ancestor [Viewport]'s internal currently-"
+"assigned camera."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:32
+msgid "Forces the camera to update scroll immediately."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:38
+msgid "Returns the camera position."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:44
+msgid ""
+"Returns the location of the [Camera2D]'s screen-center, relative to the "
+"origin."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:51
+msgid ""
+"Returns the specified margin. See also [member drag_margin_bottom], [member "
+"drag_margin_top], [member drag_margin_left], and [member drag_margin_right]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:58
+msgid ""
+"Returns the specified camera limit. See also [member limit_bottom], [member "
+"limit_top], [member limit_left], and [member limit_right]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:64
+msgid ""
+"Make this the current 2D camera for the scene (viewport and layer), in case "
+"there are many cameras in the scene."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:70
+msgid ""
+"Sets the camera's position immediately to its current smoothing "
+"destination.\n"
+"This has no effect if smoothing is disabled."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:79
+msgid ""
+"Sets the specified margin. See also [member drag_margin_bottom], [member "
+"drag_margin_top], [member drag_margin_left], and [member drag_margin_right]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:87
+msgid ""
+"Sets the specified camera limit. See also [member limit_bottom], [member "
+"limit_top], [member limit_left], and [member limit_right]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:93
+msgid "The Camera2D's anchor point. See [enum AnchorMode] constants."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:96
+msgid ""
+"If [code]true[/code], the camera is the active camera for the current scene. "
+"Only one camera can be current, so setting a different camera [code]current[/"
+"code] will disable this one."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:99
+msgid ""
+"The custom [Viewport] node attached to the [Camera2D]. If [code]null[/code] "
+"or not a [Viewport], uses the default viewport instead."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:102
+msgid ""
+"Bottom margin needed to drag the camera. A value of [code]1[/code] makes the "
+"camera move only when reaching the edge of the screen."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:105
+msgid ""
+"If [code]true[/code], the camera only moves when reaching the horizontal "
+"drag margins. If [code]false[/code], the camera moves horizontally "
+"regardless of margins."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:108
+msgid ""
+"Left margin needed to drag the camera. A value of [code]1[/code] makes the "
+"camera move only when reaching the edge of the screen."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:111
+msgid ""
+"Right margin needed to drag the camera. A value of [code]1[/code] makes the "
+"camera move only when reaching the edge of the screen."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:114
+msgid ""
+"Top margin needed to drag the camera. A value of [code]1[/code] makes the "
+"camera move only when reaching the edge of the screen."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:117
+msgid ""
+"If [code]true[/code], the camera only moves when reaching the vertical drag "
+"margins. If [code]false[/code], the camera moves vertically regardless of "
+"margins."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:120
+msgid ""
+"If [code]true[/code], draws the camera's drag margin rectangle in the editor."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:123
+msgid ""
+"If [code]true[/code], draws the camera's limits rectangle in the editor."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:126
+msgid ""
+"If [code]true[/code], draws the camera's screen rectangle in the editor."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:129
+msgid ""
+"Bottom scroll limit in pixels. The camera stops moving when reaching this "
+"value."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:132
+msgid ""
+"Left scroll limit in pixels. The camera stops moving when reaching this "
+"value."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:135
+msgid ""
+"Right scroll limit in pixels. The camera stops moving when reaching this "
+"value."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:138
+msgid ""
+"If [code]true[/code], the camera smoothly stops when reaches its limits.\n"
+"This has no effect if smoothing is disabled.\n"
+"[b]Note:[/b] To immediately update the camera's position to be within limits "
+"without smoothing, even with this setting enabled, invoke [method "
+"reset_smoothing]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:143
+msgid ""
+"Top scroll limit in pixels. The camera stops moving when reaching this value."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:146
+msgid ""
+"The camera's offset, useful for looking around or camera shake animations."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:149
+msgid ""
+"The horizontal offset of the camera, relative to the drag margins.\n"
+"[b]Note:[/b] Offset H is used only to force offset relative to margins. It's "
+"not updated in any way if drag margins are enabled and can be used to set "
+"initial offset."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:153
+msgid ""
+"The vertical offset of the camera, relative to the drag margins.\n"
+"[b]Note:[/b] Used the same as [member offset_h]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:157
+msgid "The camera's process callback. See [enum Camera2DProcessMode]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:160
+msgid "If [code]true[/code], the camera rotates with the target."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:163
+msgid ""
+"If [code]true[/code], the camera smoothly moves towards the target at "
+"[member smoothing_speed]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:166
+msgid ""
+"Speed in pixels per second of the camera's smoothing effect when [member "
+"smoothing_enabled] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:169
+msgid ""
+"The camera's zoom relative to the viewport. Values larger than "
+"[code]Vector2(1, 1)[/code] zoom out and smaller values zoom in. For an "
+"example, use [code]Vector2(0.5, 0.5)[/code] for a 2× zoom-in, and "
+"[code]Vector2(4, 4)[/code] for a 4× zoom-out."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:174
+msgid ""
+"The camera's position is fixed so that the top-left corner is always at the "
+"origin."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:177
+msgid ""
+"The camera's position takes into account vertical/horizontal offsets and the "
+"screen size."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:180 doc/classes/ClippedCamera.xml:89
+msgid "The camera updates with the [code]_physics_process[/code] callback."
+msgstr ""
+
+#: doc/classes/Camera2D.xml:183 doc/classes/ClippedCamera.xml:92
+msgid "The camera updates with the [code]_process[/code] callback."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:4
+msgid ""
+"A camera feed gives you access to a single physical camera attached to your "
+"device."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:7
+msgid ""
+"A camera feed gives you access to a single physical camera attached to your "
+"device. When enabled, Godot will start capturing frames from the camera "
+"which can then be used.\n"
+"[b]Note:[/b] Many cameras will return YCbCr images which are split into two "
+"textures and need to be combined in a shader. Godot does this automatically "
+"for you if you set the environment to show the camera image in the "
+"background."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:16
+msgid "Returns the unique ID for this feed."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:22
+msgid "Returns the camera's name."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:28
+msgid "Returns the position of camera on the device."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:34
+msgid "If [code]true[/code], the feed is active."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:37
+msgid "The transform applied to the camera's image."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:42
+msgid "No image set for the feed."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:45
+msgid "Feed supplies RGB images."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:48
+msgid "Feed supplies YCbCr images that need to be converted to RGB."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:51
+msgid ""
+"Feed supplies separate Y and CbCr images that need to be combined and "
+"converted to RGB."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:54
+msgid "Unspecified position."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:57
+msgid "Camera is mounted at the front of the device."
+msgstr ""
+
+#: doc/classes/CameraFeed.xml:60
+msgid "Camera is mounted at the back of the device."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:4
+msgid "Server keeping track of different cameras accessible in Godot."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:7
+msgid ""
+"The [CameraServer] keeps track of different cameras accessible in Godot. "
+"These are external cameras such as webcams or the cameras on your phone.\n"
+"It is notably used to provide AR modules with a video feed from the camera."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:17
+msgid "Adds a camera feed to the camera server."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:23
+msgid "Returns an array of [CameraFeed]s."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:30
+msgid "Returns the [CameraFeed] with this id."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:36
+msgid "Returns the number of [CameraFeed]s registered."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:43
+msgid "Removes a [CameraFeed]."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:51
+msgid "Emitted when a [CameraFeed] is added (e.g. webcam is plugged in)."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:57
+msgid "Emitted when a [CameraFeed] is removed (e.g. webcam is unplugged)."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:63
+msgid "The RGBA camera image."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:66
+msgid "The YCbCr camera image."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:69
+msgid "The Y component camera image."
+msgstr ""
+
+#: doc/classes/CameraServer.xml:72
+msgid "The CbCr component camera image."
+msgstr ""
+
+#: doc/classes/CameraTexture.xml:4
+msgid "Texture provided by a [CameraFeed]."
+msgstr ""
+
+#: doc/classes/CameraTexture.xml:7
+msgid ""
+"This texture gives access to the camera texture provided by a [CameraFeed].\n"
+"[b]Note:[/b] Many cameras supply YCbCr images which need to be converted in "
+"a shader."
+msgstr ""
+
+#: doc/classes/CameraTexture.xml:16
+msgid "The ID of the [CameraFeed] for which we want to display the image."
+msgstr ""
+
+#: doc/classes/CameraTexture.xml:19
+msgid ""
+"Convenience property that gives access to the active property of the "
+"[CameraFeed]."
+msgstr ""
+
+#: doc/classes/CameraTexture.xml:23
+msgid ""
+"Which image within the [CameraFeed] we want access to, important if the "
+"camera image is split in a Y and CbCr component."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:4
+msgid "Base class of anything 2D."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:7
+msgid ""
+"Base class of anything 2D. Canvas items are laid out in a tree; children "
+"inherit and extend their parent's transform. [CanvasItem] is extended by "
+"[Control] for anything GUI-related, and by [Node2D] for anything related to "
+"the 2D engine.\n"
+"Any [CanvasItem] can draw. For this, [method update] must be called, then "
+"[constant NOTIFICATION_DRAW] will be received on idle time to request "
+"redraw. Because of this, canvas items don't need to be redrawn on every "
+"frame, improving the performance significantly. Several functions for "
+"drawing on the [CanvasItem] are provided (see [code]draw_*[/code] "
+"functions). However, they can only be used inside the [method Object."
+"_notification], signal or [method _draw] virtual functions.\n"
+"Canvas items are drawn in tree order. By default, children are on top of "
+"their parents so a root [CanvasItem] will be drawn behind everything. This "
+"behavior can be changed on a per-item basis.\n"
+"A [CanvasItem] can also be hidden, which will also hide its children. It "
+"provides many ways to change parameters such as modulation (for itself and "
+"its children) and self modulation (only for itself), as well as its blend "
+"mode.\n"
+"Ultimately, a transform notification can be requested, which will notify the "
+"node that its global position changed in case the parent tree changed.\n"
+"[b]Note:[/b] Unless otherwise specified, all methods that have angle "
+"parameters must have angles specified as [i]radians[/i]. To convert degrees "
+"to radians, use [method @GDScript.deg2rad]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:15 doc/classes/CanvasLayer.xml:10
+#: doc/classes/InputEvent.xml:11 doc/classes/Viewport.xml:15
+msgid "https://docs.godotengine.org/en/3.4/tutorials/2d/2d_transforms.html"
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:16 doc/classes/Control.xml:18
+#: doc/classes/Node2D.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/2d/custom_drawing_in_2d.html"
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:23
+msgid ""
+"Overridable function called by the engine (if defined) to draw the canvas "
+"item."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:37
+msgid ""
+"Draws an arc between the given angles. The larger the value of "
+"[code]point_count[/code], the smoother the curve."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:48
+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 ""
+
+#: doc/classes/CanvasItem.xml:57
+msgid "Draws a colored circle."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:69
+msgid "Draws a colored polygon of any amount of points, convex or concave."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:80
+msgid ""
+"Draws a line from a 2D point to another, with a given color and width. It "
+"can be optionally antialiased."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:91
+msgid ""
+"Draws a [Mesh] in 2D, using the provided texture. See [MeshInstance2D] for "
+"related documentation."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:101
+msgid ""
+"Draws multiple, parallel lines with a uniform [code]color[/code].\n"
+"[b]Note:[/b] [code]width[/code] and [code]antialiased[/code] are currently "
+"not implemented and have no effect."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:112
+msgid ""
+"Draws multiple, parallel lines with a uniform [code]width[/code] and segment-"
+"by-segment coloring. Colors assigned to line segments match by index between "
+"[code]points[/code] and [code]colors[/code].\n"
+"[b]Note:[/b] [code]width[/code] and [code]antialiased[/code] are currently "
+"not implemented and have no effect."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:122
+msgid ""
+"Draws a [MultiMesh] in 2D with the provided texture. See "
+"[MultiMeshInstance2D] for related documentation."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:134
+msgid "Draws a polygon of any amount of points, convex or concave."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:144
+msgid ""
+"Draws interconnected line segments with a uniform [code]color[/code] and "
+"[code]width[/code] and optional antialiasing."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:154
+msgid ""
+"Draws interconnected line segments with a uniform [code]width[/code], "
+"segment-by-segment coloring, and optional antialiasing. Colors assigned to "
+"line segments match by index between [code]points[/code] and [code]colors[/"
+"code]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:166
+msgid ""
+"Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points "
+"for a triangle and 4 points for a quad."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:177
+msgid ""
+"Draws a rectangle. If [code]filled[/code] is [code]true[/code], the "
+"rectangle will be filled with the [code]color[/code] specified. If "
+"[code]filled[/code] is [code]false[/code], the rectangle will be drawn as a "
+"stroke with the [code]color[/code] and [code]width[/code] specified. If "
+"[code]antialiased[/code] is [code]true[/code], the lines will be "
+"antialiased.\n"
+"[b]Note:[/b] [code]width[/code] and [code]antialiased[/code] are only "
+"effective if [code]filled[/code] is [code]false[/code]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:187
+msgid ""
+"Sets a custom transform for drawing via components. Anything drawn "
+"afterwards will be transformed by this."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:194
+msgid ""
+"Sets a custom transform for drawing via matrix. Anything drawn afterwards "
+"will be transformed by this."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:205
+msgid ""
+"Draws [code]text[/code] using the specified [code]font[/code] at the "
+"[code]position[/code] (bottom-left corner using the baseline of the font). "
+"The text will have its color multiplied by [code]modulate[/code]. If "
+"[code]clip_w[/code] is greater than or equal to 0, the text will be clipped "
+"if it exceeds the specified width.\n"
+"[b]Example using the default project font:[/b]\n"
+"[codeblock]\n"
+"# If using this method in a script that redraws constantly, move the\n"
+"# `default_font` declaration to a member variable assigned in `_ready()`\n"
+"# so the Control is only created once.\n"
+"var default_font = Control.new().get_font(\"font\")\n"
+"draw_string(default_font, Vector2(64, 64), \"Hello world\")\n"
+"[/codeblock]\n"
+"See also [method Font.draw]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:222
+msgid "Draws a styled rectangle."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:232
+msgid "Draws a texture at a given position."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:244
+msgid ""
+"Draws a textured rectangle at a given position, optionally modulated by a "
+"color. If [code]transpose[/code] is [code]true[/code], the texture will have "
+"its X and Y coordinates swapped."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:257
+msgid ""
+"Draws a textured rectangle region at a given position, optionally modulated "
+"by a color. If [code]transpose[/code] is [code]true[/code], the texture will "
+"have its X and Y coordinates swapped."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:263 doc/classes/Spatial.xml:19
+msgid ""
+"Forces the transform to update. Transform changes in physics are not instant "
+"for performance reasons. Transforms are accumulated and then set. Use this "
+"if you need an up-to-date transform when doing physics operations."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:269
+msgid "Returns the [RID] of the [World2D] canvas where this item is in."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:275
+msgid "Returns the canvas item RID used by [VisualServer] for this item."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:281
+msgid "Returns the transform matrix of this item's canvas."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:287
+msgid "Returns the global position of the mouse."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:293
+msgid "Returns the global transform matrix of this item."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:299
+msgid ""
+"Returns the global transform matrix of this item in relation to the canvas."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:305
+msgid "Returns the mouse position relative to this item's position."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:311
+msgid "Returns the transform matrix of this item."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:317
+msgid "Returns the viewport's boundaries as a [Rect2]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:323
+msgid "Returns this item's transform in relation to the viewport."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:329
+msgid "Returns the [World2D] where this item is in."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:335
+msgid "Hide the [CanvasItem] if it's currently visible."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:341
+msgid ""
+"Returns [code]true[/code] if local transform notifications are communicated "
+"to children."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:347
+msgid ""
+"Returns [code]true[/code] if the node is set as top-level. See [method "
+"set_as_toplevel]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:353
+msgid ""
+"Returns [code]true[/code] if global transform notifications are communicated "
+"to children."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:359 doc/classes/Spatial.xml:89
+msgid ""
+"Returns [code]true[/code] if the node is present in the [SceneTree], its "
+"[member visible] property is [code]true[/code] and all its antecedents are "
+"also visible. If any antecedent is hidden, this node will not be visible in "
+"the scene tree."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:366
+msgid "Assigns [code]screen_point[/code] as this node's new local transform."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:373
+msgid ""
+"Transformations issued by [code]event[/code]'s inputs are applied in local "
+"space instead of global space."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:380
+msgid ""
+"If [code]enable[/code] is [code]true[/code], the node won't inherit its "
+"transform from parent canvas items."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:387
+msgid ""
+"If [code]enable[/code] is [code]true[/code], children will be updated with "
+"local transform data."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:394
+msgid ""
+"If [code]enable[/code] is [code]true[/code], children will be updated with "
+"global transform data."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:400
+msgid ""
+"Show the [CanvasItem] if it's currently hidden. For controls that inherit "
+"[Popup], the correct way to make them visible is to call one of the multiple "
+"[code]popup*()[/code] functions instead."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:406
+msgid ""
+"Queue the [CanvasItem] for update. [constant NOTIFICATION_DRAW] will be "
+"called on idle time to request redraw."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:412
+msgid ""
+"The rendering layers in which this [CanvasItem] responds to [Light2D] nodes."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:415
+msgid "The material applied to textures on this [CanvasItem]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:418
+msgid "The color applied to textures on this [CanvasItem]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:421
+msgid ""
+"The color applied to textures on this [CanvasItem]. This is not inherited by "
+"children [CanvasItem]s."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:424
+msgid "If [code]true[/code], the object draws behind its parent."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:427
+msgid "If [code]true[/code], the object draws on top of its parent."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:430
+msgid ""
+"If [code]true[/code], the parent [CanvasItem]'s [member material] property "
+"is used as this one's material."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:433
+msgid ""
+"If [code]true[/code], this [CanvasItem] is drawn. The node is only visible "
+"if all of its antecedents are visible as well (in other words, [method "
+"is_visible_in_tree] must return [code]true[/code]).\n"
+"[b]Note:[/b] For controls that inherit [Popup], the correct way to make them "
+"visible is to call one of the multiple [code]popup*()[/code] functions "
+"instead."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:440
+msgid ""
+"Emitted when the [CanvasItem] must redraw. This can only be connected "
+"realtime, as deferred will not allow drawing."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:445
+msgid "Emitted when becoming hidden."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:450
+msgid ""
+"Emitted when the item's [Rect2] boundaries (position or size) have changed, "
+"or when an action is taking place that may have impacted these boundaries (e."
+"g. changing [member Sprite.texture])."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:455
+msgid "Emitted when the visibility (hidden/visible) changes."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:461 doc/classes/CanvasItemMaterial.xml:39
+msgid ""
+"Mix blending mode. Colors are assumed to be independent of the alpha "
+"(opacity) value."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:464 doc/classes/CanvasItemMaterial.xml:42
+msgid "Additive blending mode."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:467 doc/classes/CanvasItemMaterial.xml:45
+msgid "Subtractive blending mode."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:470 doc/classes/CanvasItemMaterial.xml:48
+msgid "Multiplicative blending mode."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:473 doc/classes/CanvasItemMaterial.xml:51
+msgid ""
+"Mix blending mode. Colors are assumed to be premultiplied by the alpha "
+"(opacity) value."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:476
+msgid ""
+"Disables blending mode. Colors including alpha are written as-is. Only "
+"applicable for render targets with a transparent background. No lighting "
+"will be applied."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:479
+msgid ""
+"The [CanvasItem]'s transform has changed. This notification is only received "
+"if enabled by [method set_notify_transform] or [method "
+"set_notify_local_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:482
+msgid "The [CanvasItem] is requested to draw."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:485
+msgid "The [CanvasItem]'s visibility has changed."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:488
+msgid "The [CanvasItem] has entered the canvas."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml:491
+msgid "The [CanvasItem] has exited the canvas."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:4
+msgid "A material for [CanvasItem]s."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:7
+msgid ""
+"[CanvasItemMaterial]s provide a means of modifying the textures associated "
+"with a CanvasItem. They specialize in describing blend and lighting "
+"behaviors for textures. Use a [ShaderMaterial] to more fully customize a "
+"material's interactions with a [CanvasItem]."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:15
+msgid ""
+"The manner in which a material's rendering is applied to underlying textures."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:18
+msgid "The manner in which material reacts to lighting."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:21
+msgid ""
+"The number of columns in the spritesheet assigned as [Texture] for a "
+"[Particles2D] or [CPUParticles2D].\n"
+"[b]Note:[/b] This property is only used and visible in the editor if [member "
+"particles_animation] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:25
+msgid ""
+"If [code]true[/code], the particles animation will loop.\n"
+"[b]Note:[/b] This property is only used and visible in the editor if [member "
+"particles_animation] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:29
+msgid ""
+"The number of rows in the spritesheet assigned as [Texture] for a "
+"[Particles2D] or [CPUParticles2D].\n"
+"[b]Note:[/b] This property is only used and visible in the editor if [member "
+"particles_animation] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:33
+msgid ""
+"If [code]true[/code], enable spritesheet-based animation features when "
+"assigned to [Particles2D] and [CPUParticles2D] nodes. The [member "
+"ParticlesMaterial.anim_speed] or [member CPUParticles2D.anim_speed] should "
+"also be set to a positive value for the animation to play.\n"
+"This property (and other [code]particles_anim_*[/code] properties that "
+"depend on it) has no effect on other types of nodes."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:54
+msgid ""
+"Render the material using both light and non-light sensitive material "
+"properties."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:57
+msgid "Render the material as if there were no light."
+msgstr ""
+
+#: doc/classes/CanvasItemMaterial.xml:60
+msgid "Render the material as if there were only light."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:4
+msgid "Canvas drawing layer."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:7
+msgid ""
+"Canvas drawing layer. [CanvasItem] nodes that are direct or indirect "
+"children of a [CanvasLayer] will be drawn in that layer. The layer is a "
+"numeric index that defines the draw order. The default 2D scene renders with "
+"index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with "
+"index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or "
+"above), or backgrounds (in layer -1 or below)."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:11
+msgid "https://docs.godotengine.org/en/3.4/tutorials/2d/canvas_layers.html"
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:18
+msgid "Returns the RID of the canvas used by this layer."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:24
+msgid ""
+"The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/"
+"code], uses the default viewport instead."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:27
+msgid ""
+"Sets the layer to follow the viewport in order to simulate a pseudo 3D "
+"effect."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:30
+msgid ""
+"Scales the layer when using [member follow_viewport_enable]. Layers moving "
+"into the foreground should have increasing scales, while layers moving into "
+"the background should have decreasing scales."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:33
+msgid "Layer index for draw order. Lower values are drawn first."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:36
+msgid "The layer's base offset."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:39
+msgid "The layer's rotation in radians."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:42
+msgid "The layer's rotation in degrees."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:45
+msgid "The layer's scale."
+msgstr ""
+
+#: doc/classes/CanvasLayer.xml:48
+msgid "The layer's transform."
+msgstr ""
+
+#: doc/classes/CanvasModulate.xml:4
+msgid "Tint the entire canvas."
+msgstr ""
+
+#: doc/classes/CanvasModulate.xml:7
+msgid ""
+"[CanvasModulate] tints the canvas elements using its assigned [member color]."
+msgstr ""
+
+#: doc/classes/CanvasModulate.xml:15
+msgid "The tint color to apply."
+msgstr ""
+
+#: doc/classes/CapsuleMesh.xml:4 doc/classes/CapsuleMesh.xml:7
+msgid "Class representing a capsule-shaped [PrimitiveMesh]."
+msgstr ""
+
+#: doc/classes/CapsuleMesh.xml:15
+msgid ""
+"Height of the middle cylindrical part of the capsule (without the "
+"hemispherical ends).\n"
+"[b]Note:[/b] The capsule's total height is equal to [member mid_height] + 2 "
+"* [member radius]."
+msgstr ""
+
+#: doc/classes/CapsuleMesh.xml:19
+msgid "Number of radial segments on the capsule mesh."
+msgstr ""
+
+#: doc/classes/CapsuleMesh.xml:22
+msgid "Radius of the capsule mesh."
+msgstr ""
+
+#: doc/classes/CapsuleMesh.xml:25
+msgid "Number of rings along the height of the capsule."
+msgstr ""
+
+#: doc/classes/CapsuleShape.xml:4 doc/classes/CapsuleShape.xml:7
+msgid "Capsule shape for collisions."
+msgstr ""
+
+#: doc/classes/CapsuleShape.xml:16 doc/classes/CapsuleShape2D.xml:15
+msgid "The capsule's height."
+msgstr ""
+
+#: doc/classes/CapsuleShape.xml:19 doc/classes/CapsuleShape2D.xml:18
+msgid "The capsule's radius."
+msgstr ""
+
+#: doc/classes/CapsuleShape2D.xml:4 doc/classes/CapsuleShape2D.xml:7
+msgid "Capsule shape for 2D collisions."
+msgstr ""
+
+#: doc/classes/CenterContainer.xml:4
+msgid "Keeps children controls centered."
+msgstr ""
+
+#: doc/classes/CenterContainer.xml:7
+msgid ""
+"CenterContainer keeps children controls centered. This container keeps all "
+"children to their minimum size, in the center."
+msgstr ""
+
+#: doc/classes/CenterContainer.xml:15
+msgid ""
+"If [code]true[/code], centers children relative to the [CenterContainer]'s "
+"top left corner."
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:4
+msgid ""
+"Controls how an individual character will be displayed in a [RichTextEffect]."
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:7
+msgid ""
+"By setting various properties on this object, you can control how individual "
+"characters will be displayed in a [RichTextEffect]."
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:10 doc/classes/RichTextEffect.xml:16
+#: doc/classes/RichTextLabel.xml:15
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/gui/bbcode_in_richtextlabel."
+"html"
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:11 doc/classes/RichTextEffect.xml:17
+msgid ""
+"https://github.com/Eoin-ONeill-Yokai/Godot-Rich-Text-Effect-Test-Project"
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:17 doc/classes/CharFXTransform.xml:45
+msgid ""
+"The index of the current character (starting from 0). Setting this property "
+"won't affect drawing."
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:20
+msgid ""
+"The Unicode codepoint the character will use. This only affects non-"
+"whitespace characters. [method @GDScript.ord] can be useful here. For "
+"example, the following will replace all characters with asterisks:\n"
+"[codeblock]\n"
+"# `char_fx` is the CharFXTransform parameter from `_process_custom_fx()`.\n"
+"# See the RichTextEffect documentation for details.\n"
+"char_fx.character = ord(\"*\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:28
+msgid "The color the character will be drawn with."
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:31
+msgid ""
+"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
+"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:35
+msgid ""
+"Contains the arguments passed in the opening BBCode tag. By default, "
+"arguments are strings; if their contents match a type such as [bool], [int] "
+"or [float], they will be converted automatically. Color codes in the form "
+"[code]#rrggbb[/code] or [code]#rgb[/code] will be converted to an opaque "
+"[Color]. String arguments may not contain spaces, even if they're quoted. If "
+"present, quotes will also be present in the final string.\n"
+"For example, the opening BBCode tag [code][example foo=hello bar=true baz=42 "
+"color=#ffffff][/code] will map to the following [Dictionary]:\n"
+"[codeblock]\n"
+"{\"foo\": \"hello\", \"bar\": true, \"baz\": 42, \"color\": Color(1, 1, 1, "
+"1)}\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:42
+msgid "The position offset the character will be drawn with (in pixels)."
+msgstr ""
+
+#: doc/classes/CharFXTransform.xml:48
+msgid ""
+"If [code]true[/code], the character will be drawn. If [code]false[/code], "
+"the character will be hidden. Characters around hidden characters will "
+"reflow to take the space of hidden characters. If this is not desired, set "
+"their [member color] to [code]Color(1, 1, 1, 0)[/code] instead."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:4
+msgid "Binary choice user interface widget. See also [CheckButton]."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:7
+msgid ""
+"A checkbox allows the user to make a binary choice (choosing only one of two "
+"possible options). It's similar to [CheckButton] in functionality, but it "
+"has a different appearance. To follow established UX patterns, it's "
+"recommended to use CheckBox when toggling it has [b]no[/b] immediate effect "
+"on something. For instance, it should be used when toggling it will only do "
+"something once a confirmation button is pressed.\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:22
+msgid "The vertical offset used when rendering the check icons (in pixels)."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:25
+msgid "The check icon to display when the [CheckBox] is checked."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:30
+msgid ""
+"The [StyleBox] to display as a background when the [CheckBox] is disabled."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:33
+msgid ""
+"The [StyleBox] to display as a background when the [CheckBox] is focused."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:36
+msgid "The [Font] to use for the [CheckBox] text."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:39
+msgid "The [CheckBox] text's font color."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:42
+msgid "The [CheckBox] text's font color when it's disabled."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:45
+msgid "The [CheckBox] text's font color when it's hovered."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:48
+msgid "The [CheckBox] text's font color when it's hovered and pressed."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:51
+msgid "The [CheckBox] text's font color when it's pressed."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:54
+msgid ""
+"The [StyleBox] to display as a background when the [CheckBox] is hovered."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:57
+msgid ""
+"The [StyleBox] to display as a background when the [CheckBox] is hovered and "
+"pressed."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:60
+msgid "The separation between the check icon and the text (in pixels)."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:63 doc/classes/CheckButton.xml:58
+msgid "The [StyleBox] to display as a background."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:66
+msgid ""
+"The [StyleBox] to display as a background when the [CheckBox] is pressed."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:69
+msgid ""
+"If the [CheckBox] is configured as a radio button, the icon to display when "
+"the [CheckBox] is checked."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:74
+msgid ""
+"If the [CheckBox] is configured as a radio button, the icon to display when "
+"the [CheckBox] is unchecked."
+msgstr ""
+
+#: doc/classes/CheckBox.xml:79
+msgid "The check icon to display when the [CheckBox] is unchecked."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:4
+msgid "Checkable button. See also [CheckBox]."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:7
+msgid ""
+"CheckButton is a toggle button displayed as a check field. It's similar to "
+"[CheckBox] in functionality, but it has a different appearance. To follow "
+"established UX patterns, it's recommended to use CheckButton when toggling "
+"it has an [b]immediate[/b] effect on something. For instance, it should be "
+"used if toggling it enables/disables a setting without requiring the user to "
+"press a confirmation button.\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:22
+msgid "The vertical offset used when rendering the toggle icons (in pixels)."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:25
+msgid ""
+"The [StyleBox] to display as a background when the [CheckButton] is disabled."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:28
+msgid ""
+"The [StyleBox] to display as a background when the [CheckButton] is focused."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:31
+msgid "The [Font] to use for the [CheckButton] text."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:34
+msgid "The [CheckButton] text's font color."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:37
+msgid "The [CheckButton] text's font color when it's disabled."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:40
+msgid "The [CheckButton] text's font color when it's hovered."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:43
+msgid "The [CheckButton] text's font color when it's hovered and pressed."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:46
+msgid "The [CheckButton] text's font color when it's pressed."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:49
+msgid ""
+"The [StyleBox] to display as a background when the [CheckButton] is hovered."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:52
+msgid ""
+"The [StyleBox] to display as a background when the [CheckButton] is hovered "
+"and pressed."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:55
+msgid "The separation between the toggle icon and the text (in pixels)."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:61
+msgid "The icon to display when the [CheckButton] is unchecked."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:64
+msgid "The icon to display when the [CheckButton] is unchecked and disabled."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:67
+msgid "The icon to display when the [CheckButton] is checked."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:70
+msgid "The icon to display when the [CheckButton] is checked and disabled."
+msgstr ""
+
+#: doc/classes/CheckButton.xml:73
+msgid ""
+"The [StyleBox] to display as a background when the [CheckButton] is pressed."
+msgstr ""
+
+#: doc/classes/CircleShape2D.xml:4
+msgid "Circular shape for 2D collisions."
+msgstr ""
+
+#: doc/classes/CircleShape2D.xml:7
+msgid ""
+"Circular shape for 2D collisions. This shape is useful for modeling balls or "
+"small characters and its collision detection with everything else is very "
+"fast."
+msgstr ""
+
+#: doc/classes/CircleShape2D.xml:15
+msgid "The circle's radius."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:4
+msgid "Class information repository."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:7
+msgid "Provides access to metadata stored for every available class."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:16
+msgid ""
+"Returns [code]true[/code] if you can instance objects from the specified "
+"[code]class[/code], [code]false[/code] in other case."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:23
+msgid "Returns whether the specified [code]class[/code] is available or not."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:30
+msgid ""
+"Returns a category associated with the class for use in documentation and "
+"the Asset Library. Debug mode required."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:39
+msgid ""
+"Returns an array with all the keys in [code]enum[/code] of [code]class[/"
+"code] or its ancestry."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:47
+msgid ""
+"Returns an array with all the enums of [code]class[/code] or its ancestry."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:55
+msgid ""
+"Returns the value of the integer constant [code]name[/code] of [code]class[/"
+"code] or its ancestry. Always returns 0 when the constant could not be found."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:64
+msgid ""
+"Returns which enum the integer constant [code]name[/code] of [code]class[/"
+"code] or its ancestry belongs to."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:72
+msgid ""
+"Returns an array with the names all the integer constants of [code]class[/"
+"code] or its ancestry."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:80
+msgid ""
+"Returns an array with all the methods of [code]class[/code] or its ancestry "
+"if [code]no_inheritance[/code] is [code]false[/code]. Every element of the "
+"array is a [Dictionary] with the following keys: [code]args[/code], "
+"[code]default_args[/code], [code]flags[/code], [code]id[/code], [code]name[/"
+"code], [code]return: (class_name, hint, hint_string, name, type, usage)[/"
+"code].\n"
+"[b]Note:[/b] In exported release builds the debug info is not available, so "
+"the returned dictionaries will contain only method names."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:89
+msgid ""
+"Returns the value of [code]property[/code] of [code]class[/code] or its "
+"ancestry."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:97
+msgid ""
+"Returns an array with all the properties of [code]class[/code] or its "
+"ancestry if [code]no_inheritance[/code] is [code]false[/code]."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:105
+msgid ""
+"Returns the [code]signal[/code] data of [code]class[/code] or its ancestry. "
+"The returned value is a [Dictionary] with the following keys: [code]args[/"
+"code], [code]default_args[/code], [code]flags[/code], [code]id[/code], "
+"[code]name[/code], [code]return: (class_name, hint, hint_string, name, type, "
+"usage)[/code]."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:113
+msgid ""
+"Returns an array with all the signals of [code]class[/code] or its ancestry "
+"if [code]no_inheritance[/code] is [code]false[/code]. Every element of the "
+"array is a [Dictionary] as described in [method class_get_signal]."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:122
+msgid ""
+"Returns whether [code]class[/code] or its ancestry has an enum called "
+"[code]name[/code] or not."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:130
+msgid ""
+"Returns whether [code]class[/code] or its ancestry has an integer constant "
+"called [code]name[/code] or not."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:139
+msgid ""
+"Returns whether [code]class[/code] (or its ancestry if [code]no_inheritance[/"
+"code] is [code]false[/code]) has a method called [code]method[/code] or not."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:147
+msgid ""
+"Returns whether [code]class[/code] or its ancestry has a signal called "
+"[code]signal[/code] or not."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:156
+msgid ""
+"Sets [code]property[/code] value of [code]class[/code] to [code]value[/code]."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:162
+msgid "Returns the names of all the classes available."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:169
+msgid ""
+"Returns the names of all the classes that directly or indirectly inherit "
+"from [code]class[/code]."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:176
+msgid "Returns the parent class of [code]class[/code]."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:183
+msgid "Creates an instance of [code]class[/code]."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:190
+msgid "Returns whether this [code]class[/code] is enabled or not."
+msgstr ""
+
+#: doc/classes/ClassDB.xml:198
+msgid ""
+"Returns whether [code]inherits[/code] is an ancestor of [code]class[/code] "
+"or not."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:4
+msgid "A [Camera] that includes collision."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:7
+msgid ""
+"This node extends [Camera] to add collisions with [Area] and/or "
+"[PhysicsBody] nodes. The camera cannot move through colliding objects."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:16
+msgid ""
+"Adds a collision exception so the camera does not collide with the specified "
+"node."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:23
+msgid ""
+"Adds a collision exception so the camera does not collide with the specified "
+"[RID]."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:29
+msgid "Removes all collision exceptions."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:35
+msgid "Returns the distance the camera has been offset due to a collision."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:42
+msgid ""
+"Returns [code]true[/code] if the specified bit index is on.\n"
+"[b]Note:[/b] Bit indices range from 0-19."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:50
+msgid "Removes a collision exception with the specified node."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:57
+msgid "Removes a collision exception with the specified [RID]."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:65
+msgid ""
+"Sets the specified bit index to the [code]value[/code].\n"
+"[b]Note:[/b] Bit indices range from 0-19."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:72
+msgid "If [code]true[/code], the camera stops on contact with [Area]s."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:75
+msgid "If [code]true[/code], the camera stops on contact with [PhysicsBody]s."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:78
+msgid ""
+"The camera's collision mask. Only objects in at least one collision layer "
+"matching the mask will be detected. See [url=https://docs.godotengine.org/"
+"en/3.4/tutorials/physics/physics_introduction.html#collision-layers-and-"
+"masks]Collision layers and masks[/url] in the documentation for more "
+"information."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:81
+msgid ""
+"The camera's collision margin. The camera can't get closer than this "
+"distance to a colliding object."
+msgstr ""
+
+#: doc/classes/ClippedCamera.xml:84
+msgid "The camera's process callback. See [enum ProcessMode]."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:4
+msgid "Base node for collision objects."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:7
+msgid ""
+"CollisionObject is the base class for physics objects. It can hold any "
+"number of collision [Shape]s. Each shape must be assigned to a [i]shape "
+"owner[/i]. The CollisionObject can have any number of shape owners. Shape "
+"owners are not nodes and do not appear in the editor, but are accessible "
+"through code using the [code]shape_owner_*[/code] methods."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:20
+msgid ""
+"Receives unhandled [InputEvent]s. [code]position[/code] is the location in "
+"world space of the mouse pointer on the surface of the shape with index "
+"[code]shape_idx[/code] and [code]normal[/code] is the normal vector of the "
+"surface at that point. Connect to the [signal input_event] signal to easily "
+"pick up these events."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:27 doc/classes/CollisionObject2D.xml:25
+msgid ""
+"Creates a new shape owner for the given object. Returns [code]owner_id[/"
+"code] of the new owner for future reference."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:34 doc/classes/CollisionObject2D.xml:32
+msgid ""
+"Returns whether or not the specified [code]bit[/code] of the [member "
+"collision_layer] is set."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:41 doc/classes/CollisionObject2D.xml:39
+msgid ""
+"Returns whether or not the specified [code]bit[/code] of the [member "
+"collision_mask] is set."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:47 doc/classes/CollisionObject2D.xml:45
+msgid "Returns the object's [RID]."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:53 doc/classes/CollisionObject2D.xml:58
+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 ""
+
+#: doc/classes/CollisionObject.xml:60 doc/classes/CollisionObject2D.xml:65
+msgid "If [code]true[/code], the shape owner and its shapes are disabled."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:67 doc/classes/CollisionObject2D.xml:79
+msgid "Removes the given shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:75 doc/classes/CollisionObject2D.xml:87
+msgid ""
+"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
+"code] in the the [member collision_layer].\n"
+"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
+"code] in the the [member collision_layer]."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:84 doc/classes/CollisionObject2D.xml:96
+msgid ""
+"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
+"code] in the the [member collision_mask].\n"
+"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
+"code] in the the [member collision_mask]."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:92 doc/classes/CollisionObject2D.xml:104
+msgid "Returns the [code]owner_id[/code] of the given shape."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:100
+msgid "Adds a [Shape] to the shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:107 doc/classes/CollisionObject2D.xml:119
+msgid "Removes all shapes from the shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:114 doc/classes/CollisionObject2D.xml:126
+msgid "Returns the parent object of the given shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:122
+msgid "Returns the [Shape] with the given id from the given shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:129 doc/classes/CollisionObject2D.xml:141
+msgid "Returns the number of shapes the given shape owner contains."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:137
+msgid ""
+"Returns the child index of the [Shape] with the given id from the given "
+"shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:144
+msgid "Returns the shape owner's [Transform]."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:152 doc/classes/CollisionObject2D.xml:164
+msgid "Removes a shape from the given shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:160 doc/classes/CollisionObject2D.xml:172
+msgid "If [code]true[/code], disables the given shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:168
+msgid "Sets the [Transform] of the given shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:174
+msgid ""
+"The physics layers this CollisionObject3D is in. Collision objects can exist "
+"in one or more of 32 different layers. See also [member collision_mask].\n"
+"[b]Note:[/b] A contact is detected if object A is in any of the layers that "
+"object B scans, or object B is in any layers that object A scans. See "
+"[url=https://docs.godotengine.org/en/latest/tutorials/physics/"
+"physics_introduction.html#collision-layers-and-masks]Collision layers and "
+"masks[/url] in the documentation for more information."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:178
+msgid ""
+"The physics layers this CollisionObject3D scans. Collision objects can scan "
+"one or more of 32 different layers. See also [member collision_layer].\n"
+"[b]Note:[/b] A contact is detected if object A is in any of the layers that "
+"object B scans, or object B is in any layers that object A scans. See "
+"[url=https://docs.godotengine.org/en/latest/tutorials/physics/"
+"physics_introduction.html#collision-layers-and-masks]Collision layers and "
+"masks[/url] in the documentation for more information."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:182
+msgid ""
+"If [code]true[/code], the [CollisionObject] will continue to receive input "
+"events as the mouse is dragged across its shapes."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:185
+msgid ""
+"If [code]true[/code], the [CollisionObject]'s shapes will respond to "
+"[RayCast]s."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:196
+msgid ""
+"Emitted when the object receives an unhandled [InputEvent]. [code]position[/"
+"code] is the location in world space of the mouse pointer on the surface of "
+"the shape with index [code]shape_idx[/code] and [code]normal[/code] is the "
+"normal vector of the surface at that point."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:201
+msgid "Emitted when the mouse pointer enters any of this object's shapes."
+msgstr ""
+
+#: doc/classes/CollisionObject.xml:206
+msgid "Emitted when the mouse pointer exits all this object's shapes."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:4
+msgid "Base node for 2D collision objects."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:7
+msgid ""
+"CollisionObject2D is the base class for 2D physics objects. It can hold any "
+"number of 2D collision [Shape2D]s. Each shape must be assigned to a [i]shape "
+"owner[/i]. The CollisionObject2D can have any number of shape owners. Shape "
+"owners are not nodes and do not appear in the editor, but are accessible "
+"through code using the [code]shape_owner_*[/code] methods."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:18
+msgid ""
+"Accepts unhandled [InputEvent]s. Requires [member input_pickable] to be "
+"[code]true[/code]. [code]shape_idx[/code] is the child index of the clicked "
+"[Shape2D]. Connect to the [code]input_event[/code] signal to easily pick up "
+"these events."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:52
+msgid ""
+"Returns the [code]one_way_collision_margin[/code] of the shape owner "
+"identified by given [code]owner_id[/code]."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:72
+msgid ""
+"Returns [code]true[/code] if collisions for the shape owner originating from "
+"this [CollisionObject2D] will not be reported to collided with "
+"[CollisionObject2D]s."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:112
+msgid "Adds a [Shape2D] to the shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:134
+msgid "Returns the [Shape2D] with the given id from the given shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:149
+msgid ""
+"Returns the child index of the [Shape2D] with the given id from the given "
+"shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:156
+msgid "Returns the shape owner's [Transform2D]."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:180
+msgid ""
+"If [code]enable[/code] is [code]true[/code], collisions for the shape owner "
+"originating from this [CollisionObject2D] will not be reported to collided "
+"with [CollisionObject2D]s."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:188
+msgid ""
+"Sets the [code]one_way_collision_margin[/code] of the shape owner identified "
+"by given [code]owner_id[/code] to [code]margin[/code] pixels."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:196
+msgid "Sets the [Transform2D] of the given shape owner."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:202
+msgid ""
+"The physics layers this CollisionObject2D is in. Collision objects can exist "
+"in one or more of 32 different layers. See also [member collision_mask].\n"
+"[b]Note:[/b] A contact is detected if object A is in any of the layers that "
+"object B scans, or object B is in any layers that object A scans. See "
+"[url=https://docs.godotengine.org/en/latest/tutorials/physics/"
+"physics_introduction.html#collision-layers-and-masks]Collision layers and "
+"masks[/url] in the documentation for more information."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:206
+msgid ""
+"The physics layers this CollisionObject2D scans. Collision objects can scan "
+"one or more of 32 different layers. See also [member collision_layer].\n"
+"[b]Note:[/b] A contact is detected if object A is in any of the layers that "
+"object B scans, or object B is in any layers that object A scans. See "
+"[url=https://docs.godotengine.org/en/latest/tutorials/physics/"
+"physics_introduction.html#collision-layers-and-masks]Collision layers and "
+"masks[/url] in the documentation for more information."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:210
+msgid ""
+"If [code]true[/code], this object is pickable. A pickable object can detect "
+"the mouse pointer entering/leaving, and if the mouse is inside it, report "
+"input events. Requires at least one [code]collision_layer[/code] bit to be "
+"set."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:219
+msgid ""
+"Emitted when an input event occurs. Requires [member input_pickable] to be "
+"[code]true[/code] and at least one [code]collision_layer[/code] bit to be "
+"set. See [method _input_event] for details."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:224
+msgid ""
+"Emitted when the mouse pointer enters any of this object's shapes. Requires "
+"[member input_pickable] to be [code]true[/code] and at least one "
+"[code]collision_layer[/code] bit to be set."
+msgstr ""
+
+#: doc/classes/CollisionObject2D.xml:229
+msgid ""
+"Emitted when the mouse pointer exits all this object's shapes. Requires "
+"[member input_pickable] to be [code]true[/code] and at least one "
+"[code]collision_layer[/code] bit to be set."
+msgstr ""
+
+#: doc/classes/CollisionPolygon.xml:4
+msgid "Editor-only class for defining a collision polygon in 3D space."
+msgstr ""
+
+#: doc/classes/CollisionPolygon.xml:7
+msgid ""
+"Allows editing a collision polygon's vertices on a selected plane. Can also "
+"set a depth perpendicular to that plane. This class is only available in the "
+"editor. It will not appear in the scene tree at run-time. Creates a [Shape] "
+"for gameplay. Properties modified during gameplay will have no effect."
+msgstr ""
+
+#: doc/classes/CollisionPolygon.xml:15
+msgid ""
+"Length that the resulting collision extends in either direction "
+"perpendicular to its polygon."
+msgstr ""
+
+#: doc/classes/CollisionPolygon.xml:18
+msgid "If [code]true[/code], no collision will be produced."
+msgstr ""
+
+#: doc/classes/CollisionPolygon.xml:21
+msgid ""
+"The collision margin for the generated [Shape]. See [member Shape.margin] "
+"for more details."
+msgstr ""
+
+#: doc/classes/CollisionPolygon.xml:24
+msgid ""
+"Array of vertices which define the polygon.\n"
+"[b]Note:[/b] The returned value is a copy of the original. Methods which "
+"mutate the size or properties of the return value will not impact the "
+"original polygon. To change properties of the polygon, assign it to a "
+"temporary variable and make changes before reassigning the [code]polygon[/"
+"code] member."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:4
+msgid "Defines a 2D collision polygon."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:7
+msgid ""
+"Provides a 2D collision polygon to a [CollisionObject2D] parent. Polygons "
+"can be drawn in the editor or specified by a list of vertices."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:15
+msgid "Collision build mode. Use one of the [enum BuildMode] constants."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:18
+msgid "If [code]true[/code], no collisions will be detected."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:21
+msgid ""
+"If [code]true[/code], only edges that face up, relative to "
+"[CollisionPolygon2D]'s rotation, will collide with other objects."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:24
+msgid ""
+"The margin used for one-way collision (in pixels). Higher values will make "
+"the shape thicker, and work better for colliders that enter the polygon at a "
+"high velocity."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:27
+msgid ""
+"The polygon's list of vertices. The final point will be connected to the "
+"first. The returned value is a clone of the [PoolVector2Array], not a "
+"reference."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:32
+msgid "Collisions will include the polygon and its contained area."
+msgstr ""
+
+#: doc/classes/CollisionPolygon2D.xml:35
+msgid "Collisions will only include the polygon edges."
+msgstr ""
+
+#: doc/classes/CollisionShape.xml:4
+msgid "Node that represents collision shape data in 3D space."
+msgstr ""
+
+#: doc/classes/CollisionShape.xml:7
+msgid ""
+"Editor facility for creating and editing collision shapes in 3D space. You "
+"can use this node to represent all sorts of collision shapes, for example, "
+"add this to an [Area] to give it a detection shape, or add it to a "
+"[PhysicsBody] to create a solid object. [b]IMPORTANT[/b]: this is an Editor-"
+"only helper to create shapes, use [method CollisionObject."
+"shape_owner_get_shape] to get the actual shape."
+msgstr ""
+
+#: doc/classes/CollisionShape.xml:10 doc/classes/CollisionShape2D.xml:10
+#: doc/classes/Physics2DDirectBodyState.xml:10
+#: doc/classes/Physics2DDirectSpaceState.xml:10 doc/classes/PhysicsBody.xml:10
+#: doc/classes/PhysicsBody2D.xml:10 doc/classes/PhysicsDirectBodyState.xml:10
+#: doc/classes/PhysicsDirectSpaceState.xml:10 doc/classes/RigidBody.xml:14
+#: doc/classes/Shape.xml:10 doc/classes/Shape2D.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
+"html"
+msgstr ""
+
+#: doc/classes/CollisionShape.xml:19
+msgid ""
+"Sets the collision shape's shape to the addition of all its convexed "
+"[MeshInstance] siblings geometry."
+msgstr ""
+
+#: doc/classes/CollisionShape.xml:26
+msgid ""
+"If this method exists within a script it will be called whenever the shape "
+"resource has been modified."
+msgstr ""
+
+#: doc/classes/CollisionShape.xml:32
+msgid "A disabled collision shape has no effect in the world."
+msgstr ""
+
+#: doc/classes/CollisionShape.xml:35 doc/classes/CollisionShape2D.xml:28
+msgid "The actual shape owned by this collision shape."
+msgstr ""
+
+#: doc/classes/CollisionShape2D.xml:4
+msgid "Node that represents collision shape data in 2D space."
+msgstr ""
+
+#: doc/classes/CollisionShape2D.xml:7
+msgid ""
+"Editor facility for creating and editing collision shapes in 2D space. You "
+"can use this node to represent all sorts of collision shapes, for example, "
+"add this to an [Area2D] to give it a detection shape, or add it to a "
+"[PhysicsBody2D] to create a solid object. [b]IMPORTANT[/b]: this is an "
+"Editor-only helper to create shapes, use [method CollisionObject2D."
+"shape_owner_get_shape] to get the actual shape."
+msgstr ""
+
+#: doc/classes/CollisionShape2D.xml:13 doc/classes/KinematicBody2D.xml:14
+#: doc/classes/RectangleShape2D.xml:11 doc/classes/TileMap.xml:17
+#: doc/classes/TileSet.xml:17
+msgid "https://godotengine.org/asset-library/asset/113"
+msgstr ""
+
+#: doc/classes/CollisionShape2D.xml:19
+msgid ""
+"A disabled collision shape has no effect in the world. This property should "
+"be changed with [method Object.set_deferred]."
+msgstr ""
+
+#: doc/classes/CollisionShape2D.xml:22
+msgid ""
+"Sets whether this collision shape should only detect collision on one side "
+"(top or bottom)."
+msgstr ""
+
+#: doc/classes/CollisionShape2D.xml:25
+msgid ""
+"The margin used for one-way collision (in pixels). Higher values will make "
+"the shape thicker, and work better for colliders that enter the shape at a "
+"high velocity."
+msgstr ""
+
+#: doc/classes/Color.xml:4
+msgid "Color in RGBA format using floats on the range of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:7
+msgid ""
+"A color represented by red, green, blue, and alpha (RGBA) components. The "
+"alpha component is often used for transparency. Values are in floating-point "
+"and usually range from 0 to 1. Some properties (such as CanvasItem.modulate) "
+"may accept values greater than 1 (overbright or HDR colors).\n"
+"You can also create a color from standardized color names by using [method "
+"@GDScript.ColorN] or directly using the color constants defined here. The "
+"standardized color set is based on the [url=https://en.wikipedia.org/wiki/"
+"X11_color_names]X11 color names[/url].\n"
+"If you want to supply values in a range of 0 to 255, you should use [method "
+"@GDScript.Color8].\n"
+"[b]Note:[/b] In a boolean context, a Color will evaluate to [code]false[/"
+"code] if it's equal to [code]Color(0, 0, 0, 1)[/code] (opaque black). "
+"Otherwise, a Color will always evaluate to [code]true[/code].\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"color_constants.png]Color constants cheatsheet[/url]"
+msgstr ""
+
+#: doc/classes/Color.xml:14 doc/classes/ColorPickerButton.xml:13
+msgid "https://godotengine.org/asset-library/asset/517"
+msgstr ""
+
+#: doc/classes/Color.xml:15 doc/classes/ColorPicker.xml:11
+msgid "https://godotengine.org/asset-library/asset/146"
+msgstr ""
+
+#: doc/classes/Color.xml:16 doc/classes/ColorPickerButton.xml:12
+msgid "https://godotengine.org/asset-library/asset/133"
+msgstr ""
+
+#: doc/classes/Color.xml:23
+msgid ""
+"Constructs a color from an HTML hexadecimal color string in ARGB or RGB "
+"format. See also [method @GDScript.ColorN].\n"
+"[codeblock]\n"
+"# Each of the following creates the same color RGBA(178, 217, 10, 255).\n"
+"var c1 = Color(\"#ffb2d90a\") # ARGB format with \"#\".\n"
+"var c2 = Color(\"ffb2d90a\") # ARGB format.\n"
+"var c3 = Color(\"#b2d90a\") # RGB format with \"#\".\n"
+"var c4 = Color(\"b2d90a\") # RGB format.\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:37
+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"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:49
+msgid ""
+"Constructs a color from RGB values, typically between 0 and 1. Alpha will be "
+"1.\n"
+"[codeblock]\n"
+"var color = Color(0.2, 1.0, 0.7) # Similar to Color8(51, 255, 178, 255)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:62
+msgid ""
+"Constructs a color from RGBA values, typically between 0 and 1.\n"
+"[codeblock]\n"
+"var color = Color(0.2, 1.0, 0.7, 0.8) # Similar to Color8(51, 255, 178, "
+"204)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:72
+msgid ""
+"Returns a new color resulting from blending this color over another. If the "
+"color is opaque, the result is also opaque. The second color may have a "
+"range of alpha values.\n"
+"[codeblock]\n"
+"var bg = Color(0.0, 1.0, 0.0, 0.5) # Green with alpha of 50%\n"
+"var fg = Color(1.0, 0.0, 0.0, 0.5) # Red with alpha of 50%\n"
+"var blended_color = bg.blend(fg) # Brown with alpha of 75%\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:83
+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"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:94
+msgid ""
+"Returns a new color resulting from making this color darker by the specified "
+"percentage (ratio from 0 to 1).\n"
+"[codeblock]\n"
+"var green = Color(0.0, 1.0, 0.0)\n"
+"var darkgreen = green.darkened(0.2) # 20% darker than regular green\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:108
+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"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:117
+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"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:128
+msgid ""
+"Returns the inverted color [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() # Equivalent to Color(0.7, 0.6, 0.1)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:139
+msgid ""
+"Returns [code]true[/code] if this color and [code]color[/code] are "
+"approximately equal, by running [method @GDScript.is_equal_approx] on each "
+"component."
+msgstr ""
+
+#: doc/classes/Color.xml:146
+msgid ""
+"Returns a new color resulting from making this color lighter by the "
+"specified percentage (ratio from 0 to 1).\n"
+"[codeblock]\n"
+"var green = Color(0.0, 1.0, 0.0)\n"
+"var lightgreen = green.lightened(0.2) # 20% lighter than regular green\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:158
+msgid ""
+"Returns the linear interpolation with another color. The interpolation "
+"factor [code]weight[/code] is between 0 and 1.\n"
+"[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, "
+"0.0)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:169
+msgid ""
+"Returns the color converted to a 32-bit integer in ABGR format (each byte "
+"represents a color channel). ABGR is the reversed version of the default "
+"format.\n"
+"[codeblock]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_abgr32()) # Prints 4281565439\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:179
+msgid ""
+"Returns the color converted to a 64-bit integer in ABGR format (each word "
+"represents a color channel). ABGR is the reversed version of the default "
+"format.\n"
+"[codeblock]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_abgr64()) # Prints -225178692812801\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:189
+msgid ""
+"Returns the color converted to a 32-bit integer in ARGB format (each byte "
+"represents a color channel). ARGB is more compatible with DirectX.\n"
+"[codeblock]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_argb32()) # Prints 4294934323\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:199
+msgid ""
+"Returns the color converted to a 64-bit integer in ARGB format (each word "
+"represents a color channel). ARGB is more compatible with DirectX.\n"
+"[codeblock]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_argb64()) # Prints -2147470541\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:210
+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"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:222
+msgid ""
+"Returns the color converted to a 32-bit integer in RGBA format (each byte "
+"represents a color channel). RGBA is Godot's default format.\n"
+"[codeblock]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_rgba32()) # Prints 4286526463\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:232
+msgid ""
+"Returns the color converted to a 64-bit integer in RGBA format (each word "
+"represents a color channel). RGBA is Godot's default format.\n"
+"[codeblock]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_rgba64()) # Prints -140736629309441\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Color.xml:242
+msgid ""
+"The color's alpha (transparency) component, typically on the range of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:245
+msgid "Wrapper for [member a] that uses the range 0 to 255 instead of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:248
+msgid "The color's blue component, typically on the range of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:251
+msgid "Wrapper for [member b] that uses the range 0 to 255 instead of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:254
+msgid "The color's green component, typically on the range of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:257
+msgid "Wrapper for [member g] that uses the range 0 to 255 instead of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:260
+msgid "The HSV hue of this color, on the range 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:263
+msgid "The color's red component, typically on the range of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:266
+msgid "Wrapper for [member r] that uses the range 0 to 255 instead of 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:269
+msgid "The HSV saturation of this color, on the range 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:272
+msgid "The HSV value (brightness) of this color, on the range 0 to 1."
+msgstr ""
+
+#: doc/classes/Color.xml:277
+msgid "Alice blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:280
+msgid "Antique white color."
+msgstr ""
+
+#: doc/classes/Color.xml:283
+msgid "Aqua color."
+msgstr ""
+
+#: doc/classes/Color.xml:286
+msgid "Aquamarine color."
+msgstr ""
+
+#: doc/classes/Color.xml:289
+msgid "Azure color."
+msgstr ""
+
+#: doc/classes/Color.xml:292
+msgid "Beige color."
+msgstr ""
+
+#: doc/classes/Color.xml:295
+msgid "Bisque color."
+msgstr ""
+
+#: doc/classes/Color.xml:298
+msgid "Black color."
+msgstr ""
+
+#: doc/classes/Color.xml:301
+msgid "Blanche almond color."
+msgstr ""
+
+#: doc/classes/Color.xml:304
+msgid "Blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:307
+msgid "Blue violet color."
+msgstr ""
+
+#: doc/classes/Color.xml:310
+msgid "Brown color."
+msgstr ""
+
+#: doc/classes/Color.xml:313
+msgid "Burly wood color."
+msgstr ""
+
+#: doc/classes/Color.xml:316
+msgid "Cadet blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:319
+msgid "Chartreuse color."
+msgstr ""
+
+#: doc/classes/Color.xml:322
+msgid "Chocolate color."
+msgstr ""
+
+#: doc/classes/Color.xml:325
+msgid "Coral color."
+msgstr ""
+
+#: doc/classes/Color.xml:328
+msgid "Cornflower color."
+msgstr ""
+
+#: doc/classes/Color.xml:331
+msgid "Corn silk color."
+msgstr ""
+
+#: doc/classes/Color.xml:334
+msgid "Crimson color."
+msgstr ""
+
+#: doc/classes/Color.xml:337
+msgid "Cyan color."
+msgstr ""
+
+#: doc/classes/Color.xml:340
+msgid "Dark blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:343
+msgid "Dark cyan color."
+msgstr ""
+
+#: doc/classes/Color.xml:346
+msgid "Dark goldenrod color."
+msgstr ""
+
+#: doc/classes/Color.xml:349
+msgid "Dark gray color."
+msgstr ""
+
+#: doc/classes/Color.xml:352
+msgid "Dark green color."
+msgstr ""
+
+#: doc/classes/Color.xml:355
+msgid "Dark khaki color."
+msgstr ""
+
+#: doc/classes/Color.xml:358
+msgid "Dark magenta color."
+msgstr ""
+
+#: doc/classes/Color.xml:361
+msgid "Dark olive green color."
+msgstr ""
+
+#: doc/classes/Color.xml:364
+msgid "Dark orange color."
+msgstr ""
+
+#: doc/classes/Color.xml:367
+msgid "Dark orchid color."
+msgstr ""
+
+#: doc/classes/Color.xml:370
+msgid "Dark red color."
+msgstr ""
+
+#: doc/classes/Color.xml:373
+msgid "Dark salmon color."
+msgstr ""
+
+#: doc/classes/Color.xml:376
+msgid "Dark sea green color."
+msgstr ""
+
+#: doc/classes/Color.xml:379
+msgid "Dark slate blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:382
+msgid "Dark slate gray color."
+msgstr ""
+
+#: doc/classes/Color.xml:385
+msgid "Dark turquoise color."
+msgstr ""
+
+#: doc/classes/Color.xml:388
+msgid "Dark violet color."
+msgstr ""
+
+#: doc/classes/Color.xml:391
+msgid "Deep pink color."
+msgstr ""
+
+#: doc/classes/Color.xml:394
+msgid "Deep sky blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:397
+msgid "Dim gray color."
+msgstr ""
+
+#: doc/classes/Color.xml:400
+msgid "Dodger blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:403
+msgid "Firebrick color."
+msgstr ""
+
+#: doc/classes/Color.xml:406
+msgid "Floral white color."
+msgstr ""
+
+#: doc/classes/Color.xml:409
+msgid "Forest green color."
+msgstr ""
+
+#: doc/classes/Color.xml:412
+msgid "Fuchsia color."
+msgstr ""
+
+#: doc/classes/Color.xml:415
+msgid "Gainsboro color."
+msgstr ""
+
+#: doc/classes/Color.xml:418
+msgid "Ghost white color."
+msgstr ""
+
+#: doc/classes/Color.xml:421
+msgid "Gold color."
+msgstr ""
+
+#: doc/classes/Color.xml:424
+msgid "Goldenrod color."
+msgstr ""
+
+#: doc/classes/Color.xml:427
+msgid "Gray color."
+msgstr ""
+
+#: doc/classes/Color.xml:430
+msgid "Green color."
+msgstr ""
+
+#: doc/classes/Color.xml:433
+msgid "Green yellow color."
+msgstr ""
+
+#: doc/classes/Color.xml:436
+msgid "Honeydew color."
+msgstr ""
+
+#: doc/classes/Color.xml:439
+msgid "Hot pink color."
+msgstr ""
+
+#: doc/classes/Color.xml:442
+msgid "Indian red color."
+msgstr ""
+
+#: doc/classes/Color.xml:445
+msgid "Indigo color."
+msgstr ""
+
+#: doc/classes/Color.xml:448
+msgid "Ivory color."
+msgstr ""
+
+#: doc/classes/Color.xml:451
+msgid "Khaki color."
+msgstr ""
+
+#: doc/classes/Color.xml:454
+msgid "Lavender color."
+msgstr ""
+
+#: doc/classes/Color.xml:457
+msgid "Lavender blush color."
+msgstr ""
+
+#: doc/classes/Color.xml:460
+msgid "Lawn green color."
+msgstr ""
+
+#: doc/classes/Color.xml:463
+msgid "Lemon chiffon color."
+msgstr ""
+
+#: doc/classes/Color.xml:466
+msgid "Light blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:469
+msgid "Light coral color."
+msgstr ""
+
+#: doc/classes/Color.xml:472
+msgid "Light cyan color."
+msgstr ""
+
+#: doc/classes/Color.xml:475
+msgid "Light goldenrod color."
+msgstr ""
+
+#: doc/classes/Color.xml:478
+msgid "Light gray color."
+msgstr ""
+
+#: doc/classes/Color.xml:481
+msgid "Light green color."
+msgstr ""
+
+#: doc/classes/Color.xml:484
+msgid "Light pink color."
+msgstr ""
+
+#: doc/classes/Color.xml:487
+msgid "Light salmon color."
+msgstr ""
+
+#: doc/classes/Color.xml:490
+msgid "Light sea green color."
+msgstr ""
+
+#: doc/classes/Color.xml:493
+msgid "Light sky blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:496
+msgid "Light slate gray color."
+msgstr ""
+
+#: doc/classes/Color.xml:499
+msgid "Light steel blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:502
+msgid "Light yellow color."
+msgstr ""
+
+#: doc/classes/Color.xml:505
+msgid "Lime color."
+msgstr ""
+
+#: doc/classes/Color.xml:508
+msgid "Lime green color."
+msgstr ""
+
+#: doc/classes/Color.xml:511
+msgid "Linen color."
+msgstr ""
+
+#: doc/classes/Color.xml:514
+msgid "Magenta color."
+msgstr ""
+
+#: doc/classes/Color.xml:517
+msgid "Maroon color."
+msgstr ""
+
+#: doc/classes/Color.xml:520
+msgid "Medium aquamarine color."
+msgstr ""
+
+#: doc/classes/Color.xml:523
+msgid "Medium blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:526
+msgid "Medium orchid color."
+msgstr ""
+
+#: doc/classes/Color.xml:529
+msgid "Medium purple color."
+msgstr ""
+
+#: doc/classes/Color.xml:532
+msgid "Medium sea green color."
+msgstr ""
+
+#: doc/classes/Color.xml:535
+msgid "Medium slate blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:538
+msgid "Medium spring green color."
+msgstr ""
+
+#: doc/classes/Color.xml:541
+msgid "Medium turquoise color."
+msgstr ""
+
+#: doc/classes/Color.xml:544
+msgid "Medium violet red color."
+msgstr ""
+
+#: doc/classes/Color.xml:547
+msgid "Midnight blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:550
+msgid "Mint cream color."
+msgstr ""
+
+#: doc/classes/Color.xml:553
+msgid "Misty rose color."
+msgstr ""
+
+#: doc/classes/Color.xml:556
+msgid "Moccasin color."
+msgstr ""
+
+#: doc/classes/Color.xml:559
+msgid "Navajo white color."
+msgstr ""
+
+#: doc/classes/Color.xml:562
+msgid "Navy blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:565
+msgid "Old lace color."
+msgstr ""
+
+#: doc/classes/Color.xml:568
+msgid "Olive color."
+msgstr ""
+
+#: doc/classes/Color.xml:571
+msgid "Olive drab color."
+msgstr ""
+
+#: doc/classes/Color.xml:574
+msgid "Orange color."
+msgstr ""
+
+#: doc/classes/Color.xml:577
+msgid "Orange red color."
+msgstr ""
+
+#: doc/classes/Color.xml:580
+msgid "Orchid color."
+msgstr ""
+
+#: doc/classes/Color.xml:583
+msgid "Pale goldenrod color."
+msgstr ""
+
+#: doc/classes/Color.xml:586
+msgid "Pale green color."
+msgstr ""
+
+#: doc/classes/Color.xml:589
+msgid "Pale turquoise color."
+msgstr ""
+
+#: doc/classes/Color.xml:592
+msgid "Pale violet red color."
+msgstr ""
+
+#: doc/classes/Color.xml:595
+msgid "Papaya whip color."
+msgstr ""
+
+#: doc/classes/Color.xml:598
+msgid "Peach puff color."
+msgstr ""
+
+#: doc/classes/Color.xml:601
+msgid "Peru color."
+msgstr ""
+
+#: doc/classes/Color.xml:604
+msgid "Pink color."
+msgstr ""
+
+#: doc/classes/Color.xml:607
+msgid "Plum color."
+msgstr ""
+
+#: doc/classes/Color.xml:610
+msgid "Powder blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:613
+msgid "Purple color."
+msgstr ""
+
+#: doc/classes/Color.xml:616
+msgid "Rebecca purple color."
+msgstr ""
+
+#: doc/classes/Color.xml:619
+msgid "Red color."
+msgstr ""
+
+#: doc/classes/Color.xml:622
+msgid "Rosy brown color."
+msgstr ""
+
+#: doc/classes/Color.xml:625
+msgid "Royal blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:628
+msgid "Saddle brown color."
+msgstr ""
+
+#: doc/classes/Color.xml:631
+msgid "Salmon color."
+msgstr ""
+
+#: doc/classes/Color.xml:634
+msgid "Sandy brown color."
+msgstr ""
+
+#: doc/classes/Color.xml:637
+msgid "Sea green color."
+msgstr ""
+
+#: doc/classes/Color.xml:640
+msgid "Seashell color."
+msgstr ""
+
+#: doc/classes/Color.xml:643
+msgid "Sienna color."
+msgstr ""
+
+#: doc/classes/Color.xml:646
+msgid "Silver color."
+msgstr ""
+
+#: doc/classes/Color.xml:649
+msgid "Sky blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:652
+msgid "Slate blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:655
+msgid "Slate gray color."
+msgstr ""
+
+#: doc/classes/Color.xml:658
+msgid "Snow color."
+msgstr ""
+
+#: doc/classes/Color.xml:661
+msgid "Spring green color."
+msgstr ""
+
+#: doc/classes/Color.xml:664
+msgid "Steel blue color."
+msgstr ""
+
+#: doc/classes/Color.xml:667
+msgid "Tan color."
+msgstr ""
+
+#: doc/classes/Color.xml:670
+msgid "Teal color."
+msgstr ""
+
+#: doc/classes/Color.xml:673
+msgid "Thistle color."
+msgstr ""
+
+#: doc/classes/Color.xml:676
+msgid "Tomato color."
+msgstr ""
+
+#: doc/classes/Color.xml:679
+msgid "Transparent color (white with no alpha)."
+msgstr ""
+
+#: doc/classes/Color.xml:682
+msgid "Turquoise color."
+msgstr ""
+
+#: doc/classes/Color.xml:685
+msgid "Violet color."
+msgstr ""
+
+#: doc/classes/Color.xml:688
+msgid "Web gray color."
+msgstr ""
+
+#: doc/classes/Color.xml:691
+msgid "Web green color."
+msgstr ""
+
+#: doc/classes/Color.xml:694
+msgid "Web maroon color."
+msgstr ""
+
+#: doc/classes/Color.xml:697
+msgid "Web purple color."
+msgstr ""
+
+#: doc/classes/Color.xml:700
+msgid "Wheat color."
+msgstr ""
+
+#: doc/classes/Color.xml:703
+msgid "White color."
+msgstr ""
+
+#: doc/classes/Color.xml:706
+msgid "White smoke color."
+msgstr ""
+
+#: doc/classes/Color.xml:709
+msgid "Yellow color."
+msgstr ""
+
+#: doc/classes/Color.xml:712
+msgid "Yellow green color."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:4
+msgid "Color picker control."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:7
+msgid ""
+"Displays a color picker widget. Useful for selecting a color from an RGB/"
+"RGBA colorspace.\n"
+"[b]Note:[/b] This control is the color picker widget itself. You can use a "
+"[ColorPickerButton] instead if you need a button that brings up a "
+"[ColorPicker] in a pop-up."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:18
+msgid ""
+"Adds the given color to a list of color presets. The presets are displayed "
+"in the color picker and the user will be able to select them.\n"
+"[b]Note:[/b] The presets list is only for [i]this[/i] color picker."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:26
+msgid ""
+"Removes the given color from the list of color presets of this color picker."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:32
+msgid "Returns the list of colors in the presets of the color picker."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
+msgid "The currently selected color."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:41
+msgid ""
+"If [code]true[/code], the color will apply only after the user releases the "
+"mouse button, otherwise it will apply immediately even in mouse motion event "
+"(which can cause performance issues)."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:44
+msgid "If [code]true[/code], shows an alpha channel slider (transparency)."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:47
+msgid ""
+"If [code]true[/code], allows editing the color with Hue/Saturation/Value "
+"sliders.\n"
+"[b]Note:[/b] Cannot be enabled if raw mode is on."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:51
+msgid "If [code]true[/code], the \"add preset\" button is enabled."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:54
+msgid "If [code]true[/code], saved color presets are visible."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:57
+msgid ""
+"If [code]true[/code], allows the color R, G, B component values to go beyond "
+"1.0, which can be used for certain special operations that require it (like "
+"tinting without darkening or rendering sprites in HDR).\n"
+"[b]Note:[/b] Cannot be enabled if HSV mode is on."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:65
+msgid "Emitted when the color is changed."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:71
+msgid "Emitted when a preset is added."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:77
+msgid "Emitted when a preset is removed."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:85
+msgid "The icon for the \"Add Preset\" button."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:88
+msgid "Custom texture for the hue selection slider on the right."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:93
+msgid "The width of the hue selection slider."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:98
+msgid "The margin around the [ColorPicker]."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:101
+msgid ""
+"The indicator used to signalize that the color value is outside the 0-1 "
+"range."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:106
+msgid "The icon for the screen color picker button."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:109
+msgid "The height of the saturation-value selection box."
+msgstr ""
+
+#: doc/classes/ColorPicker.xml:112
+msgid "The width of the saturation-value selection box."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:4
+msgid "Button that pops out a [ColorPicker]."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:7
+msgid ""
+"Encapsulates a [ColorPicker] making it accessible by pressing a button. "
+"Pressing the button will toggle the [ColorPicker] visibility.\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node.\n"
+"[b]Note:[/b] By default, the button may not be wide enough for the color "
+"preview swatch to be visible. Make sure to set [member Control."
+"rect_min_size] to a big enough value to give the button enough space."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:19
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:26
+msgid ""
+"Returns the control's [PopupPanel] which allows you to connect to popup "
+"signals. This allows you to handle events when the ColorPicker is shown or "
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:36
+msgid ""
+"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
+"be visible."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:44
+msgid "Emitted when the color changes."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:49
+msgid ""
+"Emitted when the [ColorPicker] is created (the button is pressed for the "
+"first time)."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:54
+msgid "Emitted when the [ColorPicker] is closed."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:62
+msgid "The background of the color preview rect on the button."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:65
+msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:68
+msgid ""
+"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
+"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
+"focus visual effect."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:71
+msgid "[Font] of the [ColorPickerButton]'s text."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:74
+msgid "Default text [Color] of the [ColorPickerButton]."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:77
+msgid "Text [Color] used when the [ColorPickerButton] is disabled."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:80
+msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:83
+msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:86
+msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:89
+msgid "The horizontal space between [ColorPickerButton]'s icon and text."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:92
+msgid "Default [StyleBox] for the [ColorPickerButton]."
+msgstr ""
+
+#: doc/classes/ColorPickerButton.xml:95
+msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
+msgstr ""
+
+#: doc/classes/ColorRect.xml:4
+msgid "Colored rectangle."
+msgstr ""
+
+#: doc/classes/ColorRect.xml:7
+msgid ""
+"Displays a rectangle filled with a solid [member color]. If you need to "
+"display the border alone, consider using [ReferenceRect] instead."
+msgstr ""
+
+#: doc/classes/ColorRect.xml:16
+msgid ""
+"The fill color.\n"
+"[codeblock]\n"
+"$ColorRect.color = Color(1, 0, 0, 1) # Set ColorRect's color to red.\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ConcavePolygonShape.xml:4
+msgid "Concave polygon shape."
+msgstr ""
+
+#: doc/classes/ConcavePolygonShape.xml:7
+msgid ""
+"Concave polygon shape resource, which can be set into a [PhysicsBody] or "
+"area. This shape is created by feeding a list of triangles.\n"
+"[b]Note:[/b] When used for collision, [ConcavePolygonShape] is intended to "
+"work with static [PhysicsBody] nodes like [StaticBody] and will not work "
+"with [KinematicBody] or [RigidBody] with a mode other than Static."
+msgstr ""
+
+#: doc/classes/ConcavePolygonShape.xml:17
+msgid "Returns the faces (an array of triangles)."
+msgstr ""
+
+#: doc/classes/ConcavePolygonShape.xml:24
+msgid "Sets the faces (an array of triangles)."
+msgstr ""
+
+#: doc/classes/ConcavePolygonShape2D.xml:4
+msgid "Concave polygon 2D shape resource for physics."
+msgstr ""
+
+#: doc/classes/ConcavePolygonShape2D.xml:7
+msgid ""
+"Concave polygon 2D shape resource for physics. It is made out of segments "
+"and is optimal for complex polygonal concave collisions. However, it is not "
+"advised to use for [RigidBody2D] nodes. A CollisionPolygon2D in convex "
+"decomposition mode (solids) or several convex objects are advised for that "
+"instead. Otherwise, a concave polygon 2D shape is better for static "
+"collisions.\n"
+"The main difference between a [ConvexPolygonShape2D] and a "
+"[ConcavePolygonShape2D] is that a concave polygon assumes it is concave and "
+"uses a more complex method of collision detection, and a convex one forces "
+"itself to be convex in order to speed up collision detection."
+msgstr ""
+
+#: doc/classes/ConcavePolygonShape2D.xml:16
+msgid ""
+"The array of points that make up the [ConcavePolygonShape2D]'s line segments."
+msgstr ""
+
+#: doc/classes/ConeTwistJoint.xml:4
+msgid "A twist joint between two 3D PhysicsBodies."
+msgstr ""
+
+#: doc/classes/ConeTwistJoint.xml:7
+msgid ""
+"The joint can rotate the bodies across an axis defined by the local x-axes "
+"of the [Joint].\n"
+"The twist axis is initiated as the X axis of the [Joint].\n"
+"Once the Bodies swing, the twist axis is calculated as the middle of the x-"
+"axes of the Joint in the local space of the two Bodies. See also "
+"[Generic6DOFJoint]."
+msgstr ""
+
+#: doc/classes/ConeTwistJoint.xml:30 doc/classes/ConeTwistJoint.xml:62
+#: doc/classes/PhysicsServer.xml:1076
+msgid ""
+"The speed with which the swing or twist will take place.\n"
+"The higher, the faster."
+msgstr ""
+
+#: doc/classes/ConeTwistJoint.xml:34 doc/classes/ConeTwistJoint.xml:69
+#: doc/classes/PhysicsServer.xml:1083
+msgid ""
+"Defines, how fast the swing- and twist-speed-difference on both sides gets "
+"synced."
+msgstr ""
+
+#: doc/classes/ConeTwistJoint.xml:37 doc/classes/ConeTwistJoint.xml:66
+msgid ""
+"The ease with which the joint starts to twist. If it's too low, it takes "
+"more force to start twisting the joint."
+msgstr ""
+
+#: doc/classes/ConeTwistJoint.xml:40 doc/classes/ConeTwistJoint.xml:52
+#: doc/classes/PhysicsServer.xml:1066
+msgid ""
+"Swing is rotation from side to side, around the axis perpendicular to the "
+"twist axis.\n"
+"The swing span defines, how much rotation will not get corrected along the "
+"swing axis.\n"
+"Could be defined as looseness in the [ConeTwistJoint].\n"
+"If below 0.05, this behavior is locked."
+msgstr ""
+
+#: doc/classes/ConeTwistJoint.xml:46 doc/classes/ConeTwistJoint.xml:58
+#: doc/classes/PhysicsServer.xml:1072
+msgid ""
+"Twist is the rotation around the twist axis, this value defined how far the "
+"joint can twist.\n"
+"Twist is locked if below 0.05."
+msgstr ""
+
+#: doc/classes/ConeTwistJoint.xml:72 doc/classes/Generic6DOFJoint.xml:384
+#: doc/classes/HingeJoint.xml:99 doc/classes/Light.xml:124
+#: doc/classes/SliderJoint.xml:165
+msgid "Represents the size of the [enum Param] enum."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:4
+msgid "Helper class to handle INI-style files."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:7
+msgid ""
+"This helper class can be used to store [Variant] values on the filesystem "
+"using INI-style formatting. The stored values are identified by a section "
+"and a key:\n"
+"[codeblock]\n"
+"[section]\n"
+"some_key=42\n"
+"string_example=\"Hello World!\"\n"
+"a_vector=Vector3( 1, 0, 2 )\n"
+"[/codeblock]\n"
+"The stored data can be saved to or parsed from a file, though ConfigFile "
+"objects can also be used directly without accessing the filesystem.\n"
+"The following example shows how to create a simple [ConfigFile] and save it "
+"on disk:\n"
+"[codeblock]\n"
+"# Create new ConfigFile object.\n"
+"var config = ConfigFile.new()\n"
+"\n"
+"# Store some values.\n"
+"config.set_value(\"Player1\", \"player_name\", \"Steve\")\n"
+"config.set_value(\"Player1\", \"best_score\", 10)\n"
+"config.set_value(\"Player2\", \"player_name\", \"V3geta\")\n"
+"config.set_value(\"Player2\", \"best_score\", 9001)\n"
+"\n"
+"# Save it to a file (overwrite if already exists).\n"
+"config.save(\"user://scores.cfg\")\n"
+"[/codeblock]\n"
+"This example shows how the above file could be loaded:\n"
+"[codeblock]\n"
+"var score_data = {}\n"
+"var config = ConfigFile.new()\n"
+"\n"
+"# Load data from a file.\n"
+"var err = config.load(\"user://scores.cfg\")\n"
+"\n"
+"# If the file didn't load, ignore it.\n"
+"if err != OK:\n"
+" return\n"
+"\n"
+"# Iterate over all sections.\n"
+"for player in config.get_sections():\n"
+" # Fetch the data for each section.\n"
+" var player_name = config.get_value(player, \"player_name\")\n"
+" var player_score = config.get_value(player, \"best_score\")\n"
+" score_data[player_name] = player_score\n"
+"[/codeblock]\n"
+"Any operation that mutates the ConfigFile such as [method set_value], "
+"[method clear], or [method erase_section], only changes what is loaded in "
+"memory. If you want to write the change to a file, you have to save the "
+"changes with [method save], [method save_encrypted], or [method "
+"save_encrypted_pass].\n"
+"Keep in mind that section and property names can't contain spaces. Anything "
+"after a space will be ignored on save and on load.\n"
+"ConfigFiles can also contain manually written comment lines starting with a "
+"semicolon ([code];[/code]). Those lines will be ignored when parsing the "
+"file. Note that comments will be lost when saving the ConfigFile. This can "
+"still be useful for dedicated server configuration files, which are "
+"typically never overwritten without explicit user action.\n"
+"[b]Note:[/b] The file extension given to a ConfigFile does not have any "
+"impact on its formatting or behavior. By convention, the [code].cfg[/code] "
+"extension is used here, but any other extension such as [code].ini[/code] is "
+"also valid. Since neither [code].cfg[/code] nor [code].ini[/code] are "
+"standardized, Godot's ConfigFile formatting may differ from files written by "
+"other programs."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:59
+msgid "Removes the entire contents of the config."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:66
+msgid ""
+"Deletes the specified section along with all the key-value pairs inside. "
+"Raises an error if the section does not exist."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:74
+msgid ""
+"Deletes the specified key in a section. Raises an error if either the "
+"section or the key do not exist."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:81
+msgid ""
+"Returns an array of all defined key identifiers in the specified section. "
+"Raises an error and returns an empty array if the section does not exist."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:87
+msgid "Returns an array of all defined section identifiers."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:96
+msgid ""
+"Returns the current value for the specified section and key. If either the "
+"section or the key do not exist, the method returns the fallback "
+"[code]default[/code] value. If [code]default[/code] is not specified or set "
+"to [code]null[/code], an error is also raised."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:103
+msgid "Returns [code]true[/code] if the specified section exists."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:111
+msgid "Returns [code]true[/code] if the specified section-key pair exists."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:118
+msgid ""
+"Loads the config file specified as a parameter. The file's contents are "
+"parsed and loaded in the [ConfigFile] object which the method was called "
+"on.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:127
+msgid ""
+"Loads the encrypted config file specified as a parameter, using the provided "
+"[code]key[/code] to decrypt it. The file's contents are parsed and loaded in "
+"the [ConfigFile] object which the method was called on.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:136
+msgid ""
+"Loads the encrypted config file specified as a parameter, using the provided "
+"[code]password[/code] to decrypt it. The file's contents are parsed and "
+"loaded in the [ConfigFile] object which the method was called on.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:144
+msgid ""
+"Parses the passed string as the contents of a config file. The string is "
+"parsed and loaded in the ConfigFile object which the method was called on.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:152
+msgid ""
+"Saves the contents of the [ConfigFile] object to the file specified as a "
+"parameter. The output file uses an INI-style structure.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:161
+msgid ""
+"Saves the contents of the [ConfigFile] object to the AES-256 encrypted file "
+"specified as a parameter, using the provided [code]key[/code] to encrypt it. "
+"The output file uses an INI-style structure.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:170
+msgid ""
+"Saves the contents of the [ConfigFile] object to the AES-256 encrypted file "
+"specified as a parameter, using the provided [code]password[/code] to "
+"encrypt it. The output file uses an INI-style structure.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/ConfigFile.xml:180
+msgid ""
+"Assigns a value to the specified key of the specified section. If either the "
+"section or the key do not exist, they are created. Passing a [code]null[/"
+"code] value deletes the specified key if it exists, and deletes the section "
+"if it ends up empty once the key has been removed."
+msgstr ""
+
+#: doc/classes/ConfirmationDialog.xml:4
+msgid "Dialog for confirmation of actions."
+msgstr ""
+
+#: doc/classes/ConfirmationDialog.xml:7
+msgid ""
+"Dialog for confirmation of actions. This dialog inherits from "
+"[AcceptDialog], but has by default an OK and Cancel button (in host OS "
+"order).\n"
+"To get cancel action, you can use:\n"
+"[codeblock]\n"
+"get_cancel().connect(\"pressed\", self, \"cancelled\")\n"
+"[/codeblock]."
+msgstr ""
+
+#: doc/classes/ConfirmationDialog.xml:19
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/Container.xml:4
+msgid "Base node for containers."
+msgstr ""
+
+#: doc/classes/Container.xml:7
+msgid ""
+"Base node for containers. A [Container] contains other controls and "
+"automatically arranges them in a certain way.\n"
+"A Control can inherit this to create custom container classes."
+msgstr ""
+
+#: doc/classes/Container.xml:18
+msgid ""
+"Fit a child control in a given rect. This is mainly a helper for creating "
+"custom container classes."
+msgstr ""
+
+#: doc/classes/Container.xml:24
+msgid ""
+"Queue resort of the contained children. This is called automatically anyway, "
+"but can be called upon request."
+msgstr ""
+
+#: doc/classes/Container.xml:31
+msgid "Emitted when sorting the children is needed."
+msgstr ""
+
+#: doc/classes/Container.xml:37
+msgid ""
+"Notification for when sorting the children, it must be obeyed immediately."
+msgstr ""
+
+#: doc/classes/Control.xml:4
+msgid ""
+"All user interface nodes inherit from Control. A control's anchors and "
+"margins adapt its position and size relative to its parent."
+msgstr ""
+
+#: doc/classes/Control.xml:7
+msgid ""
+"Base class for all UI-related nodes. [Control] features a bounding rectangle "
+"that defines its extents, an anchor position relative to its parent control "
+"or the current viewport, and margins that represent an offset to the anchor. "
+"The margins update automatically when the node, any of its parents, or the "
+"screen size change.\n"
+"For more information on Godot's UI system, anchors, margins, and containers, "
+"see the related tutorials in the manual. To build flexible UIs, you'll need "
+"a mix of UI elements that inherit from [Control] and [Container] nodes.\n"
+"[b]User Interface nodes and input[/b]\n"
+"Godot sends input events to the scene's root node first, by calling [method "
+"Node._input]. [method Node._input] forwards the event down the node tree to "
+"the nodes under the mouse cursor, or on keyboard focus. To do so, it calls "
+"[method MainLoop._input_event]. Call [method accept_event] so no other node "
+"receives the event. Once you accept an input, it becomes handled so [method "
+"Node._unhandled_input] will not process it.\n"
+"Only one [Control] node can be in keyboard focus. Only the node in focus "
+"will receive keyboard events. To get the focus, call [method grab_focus]. "
+"[Control] nodes lose focus when another node grabs it, or if you hide the "
+"node in focus.\n"
+"Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a "
+"[Control] node to ignore mouse or touch events. You'll need it if you place "
+"an icon on top of a button.\n"
+"[Theme] resources change the Control's appearance. If you change the [Theme] "
+"on a [Control] node, it affects all of its children. To override some of the "
+"theme's parameters, call one of the [code]add_*_override[/code] methods, "
+"like [method add_font_override]. You can override the theme with the "
+"inspector.\n"
+"[b]Note:[/b] Theme items are [i]not[/i] [Object] properties. This means you "
+"can't access their values using [method Object.get] and [method Object.set]. "
+"Instead, use [method get_color], [method get_constant], [method get_font], "
+"[method get_icon], [method get_stylebox], and the [code]add_*_override[/"
+"code] methods provided by this class."
+msgstr ""
+
+#: doc/classes/Control.xml:17
+msgid "https://docs.godotengine.org/en/3.4/tutorials/gui/index.html"
+msgstr ""
+
+#: doc/classes/Control.xml:19
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/gui/control_node_gallery.html"
+msgstr ""
+
+#: doc/classes/Control.xml:20
+msgid "https://github.com/godotengine/godot-demo-projects/tree/master/gui"
+msgstr ""
+
+#: doc/classes/Control.xml:26
+msgid ""
+"Virtual method to be implemented by the user. Returns whether [method "
+"_gui_input] should not be called for children controls outside this "
+"control's rectangle. Input will be clipped to the Rect of this [Control]. "
+"Similar to [member rect_clip_content], but doesn't affect visibility.\n"
+"If not overridden, defaults to [code]false[/code]."
+msgstr ""
+
+#: doc/classes/Control.xml:33
+msgid ""
+"Virtual method to be implemented by the user. Returns the minimum size for "
+"this control. Alternative to [member rect_min_size] for controlling minimum "
+"size via code. The actual minimum size will be the max value of these two "
+"(in each axis separately).\n"
+"If not overridden, defaults to [constant Vector2.ZERO]."
+msgstr ""
+
+#: doc/classes/Control.xml:41
+msgid ""
+"Virtual method to be implemented by the user. Use this method to process and "
+"accept inputs on UI elements. See [method accept_event].\n"
+"Example: clicking a control.\n"
+"[codeblock]\n"
+"func _gui_input(event):\n"
+" if event is InputEventMouseButton:\n"
+" if event.button_index == BUTTON_LEFT and event.pressed:\n"
+" print(\"I've been clicked D:\")\n"
+"[/codeblock]\n"
+"The event won't trigger if:\n"
+"* clicking outside the control (see [method has_point]);\n"
+"* control has [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n"
+"* control is obstructed by another [Control] on top of it, which doesn't "
+"have [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n"
+"* control's parent has [member mouse_filter] set to [constant "
+"MOUSE_FILTER_STOP] or has accepted the event;\n"
+"* it happens outside the parent's rectangle and the parent has either "
+"[member rect_clip_content] or [method _clips_input] enabled.\n"
+"[b]Note:[/b] Event position is relative to the control origin."
+msgstr ""
+
+#: doc/classes/Control.xml:62
+msgid ""
+"Virtual method to be implemented by the user. Returns a [Control] node that "
+"should be used as a tooltip instead of the default one. The [code]for_text[/"
+"code] includes the contents of the [member hint_tooltip] property.\n"
+"The returned node must be of type [Control] or Control-derived. It can have "
+"child nodes of any type. It is freed when the tooltip disappears, so make "
+"sure you always provide a new instance (if you want to use a pre-existing "
+"node from your scene tree, you can duplicate it and pass the duplicated "
+"instance). When [code]null[/code] or a non-Control node is returned, the "
+"default tooltip will be used instead.\n"
+"The returned node will be added as child to a [PopupPanel], so you should "
+"only provide the contents of that panel. That [PopupPanel] can be themed "
+"using [method Theme.set_stylebox] for the type [code]\"TooltipPanel\"[/code] "
+"(see [member hint_tooltip] for an example).\n"
+"[b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure "
+"it's fully visible, you might want to set its [member rect_min_size] to some "
+"non-zero value.\n"
+"Example of usage with a custom-constructed node:\n"
+"[codeblock]\n"
+"func _make_custom_tooltip(for_text):\n"
+" var label = Label.new()\n"
+" label.text = for_text\n"
+" return label\n"
+"[/codeblock]\n"
+"Example of usage with a custom scene instance:\n"
+"[codeblock]\n"
+"func _make_custom_tooltip(for_text):\n"
+" var tooltip = preload(\"res://SomeTooltipScene.tscn\").instance()\n"
+" tooltip.get_node(\"Label\").text = for_text\n"
+" return tooltip\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:85
+msgid ""
+"Marks an input event as handled. Once you accept an input event, it stops "
+"propagating, even to nodes listening to [method Node._unhandled_input] or "
+"[method Node._unhandled_key_input]."
+msgstr ""
+
+#: doc/classes/Control.xml:93
+msgid ""
+"Creates a local override for a theme [Color] with the specified [code]name[/"
+"code]. Local overrides always take precedence when fetching theme items for "
+"the control. An override cannot be removed, but it can be overridden with "
+"the corresponding default value.\n"
+"See also [method get_color].\n"
+"[b]Example of overriding a label's color and resetting it later:[/b]\n"
+"[codeblock]\n"
+"# Given the child Label node \"MyLabel\", override its font color with a "
+"custom value.\n"
+"$MyLabel.add_color_override(\"font_color\", Color(1, 0.5, 0))\n"
+"# Reset the font color of the child label.\n"
+"$MyLabel.add_color_override(\"font_color\", get_color(\"font_color\", \"Label"
+"\"))\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:109
+msgid ""
+"Creates a local override for a theme constant with the specified [code]name[/"
+"code]. Local overrides always take precedence when fetching theme items for "
+"the control. An override cannot be removed, but it can be overridden with "
+"the corresponding default value.\n"
+"See also [method get_constant]."
+msgstr ""
+
+#: doc/classes/Control.xml:118
+msgid ""
+"Creates a local override for a theme [Font] with the specified [code]name[/"
+"code]. Local overrides always take precedence when fetching theme items for "
+"the control. An override can be removed by assigning it a [code]null[/code] "
+"value.\n"
+"See also [method get_font]."
+msgstr ""
+
+#: doc/classes/Control.xml:127
+msgid ""
+"Creates a local override for a theme icon with the specified [code]name[/"
+"code]. Local overrides always take precedence when fetching theme items for "
+"the control. An override can be removed by assigning it a [code]null[/code] "
+"value.\n"
+"See also [method get_icon]."
+msgstr ""
+
+#: doc/classes/Control.xml:136
+msgid ""
+"Creates a local override for a theme shader with the specified [code]name[/"
+"code]. Local overrides always take precedence when fetching theme items for "
+"the control. An override can be removed by assigning it a [code]null[/code] "
+"value."
+msgstr ""
+
+#: doc/classes/Control.xml:144
+msgid ""
+"Creates a local override for a theme [StyleBox] with the specified "
+"[code]name[/code]. Local overrides always take precedence when fetching "
+"theme items for the control. An override can be removed by assigning it a "
+"[code]null[/code] value.\n"
+"See also [method get_stylebox].\n"
+"[b]Example of modifying a property in a StyleBox by duplicating it:[/b]\n"
+"[codeblock]\n"
+"# The snippet below assumes the child node MyButton has a StyleBoxFlat "
+"assigned.\n"
+"# Resources are shared across instances, so we need to duplicate it\n"
+"# to avoid modifying the appearance of all other buttons.\n"
+"var new_stylebox_normal = $MyButton.get_stylebox(\"normal\").duplicate()\n"
+"new_stylebox_normal.border_width_top = 3\n"
+"new_stylebox_normal.border_color = Color(0, 1, 0.5)\n"
+"$MyButton.add_stylebox_override(\"normal\", new_stylebox_normal)\n"
+"# Remove the stylebox override.\n"
+"$MyButton.add_stylebox_override(\"normal\", null)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:165
+msgid ""
+"Godot calls this method to test if [code]data[/code] from a control's "
+"[method get_drag_data] can be dropped at [code]position[/code]. "
+"[code]position[/code] is local to this control.\n"
+"This method should only be used to test the data. Process the data in "
+"[method drop_data].\n"
+"[codeblock]\n"
+"func can_drop_data(position, data):\n"
+" # Check position if it is relevant to you\n"
+" # Otherwise, just check data\n"
+" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:180
+msgid ""
+"Godot calls this method to pass you the [code]data[/code] from a control's "
+"[method get_drag_data] result. Godot first calls [method can_drop_data] to "
+"test if [code]data[/code] is allowed to drop at [code]position[/code] where "
+"[code]position[/code] is local to this control.\n"
+"[codeblock]\n"
+"func can_drop_data(position, data):\n"
+" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n"
+"\n"
+"func drop_data(position, data):\n"
+" color = data[\"color\"]\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:193
+msgid ""
+"Finds the next (below in the tree) [Control] that can receive the focus."
+msgstr ""
+
+#: doc/classes/Control.xml:199
+msgid ""
+"Finds the previous (above in the tree) [Control] that can receive the focus."
+msgstr ""
+
+#: doc/classes/Control.xml:207
+msgid ""
+"Forces drag and bypasses [method get_drag_data] and [method "
+"set_drag_preview] by passing [code]data[/code] and [code]preview[/code]. "
+"Drag will start even if the mouse is neither over nor pressed on this "
+"control.\n"
+"The methods [method can_drop_data] and [method drop_data] must be "
+"implemented on controls that want to receive drop data."
+msgstr ""
+
+#: doc/classes/Control.xml:215
+msgid ""
+"Returns the anchor identified by [code]margin[/code] constant from [enum "
+"Margin] enum. A getter method for [member anchor_bottom], [member "
+"anchor_left], [member anchor_right] and [member anchor_top]."
+msgstr ""
+
+#: doc/classes/Control.xml:221
+msgid ""
+"Returns [member margin_left] and [member margin_top]. See also [member "
+"rect_position]."
+msgstr ""
+
+#: doc/classes/Control.xml:229
+msgid ""
+"Returns a [Color] from the first matching [Theme] in the tree if that "
+"[Theme] has a color item with the specified [code]name[/code] and "
+"[code]theme_type[/code]. If [code]theme_type[/code] is omitted the class "
+"name of the current control is used as the type. If the type is a class name "
+"its parent classes are also checked, in order of inheritance.\n"
+"For the current control its local overrides are considered first (see "
+"[method add_color_override]), then its assigned [member theme]. After the "
+"current control, each parent control and its assigned [member theme] are "
+"considered; controls without a [member theme] assigned are skipped. If no "
+"matching [Theme] is found in the tree, a custom project [Theme] (see [member "
+"ProjectSettings.gui/theme/custom]) and the default [Theme] are used.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" # Get the font color defined for the current Control's class, if it "
+"exists.\n"
+" modulate = get_color(\"font_color\")\n"
+" # Get the font color defined for the Button class.\n"
+" modulate = get_color(\"font_color\", \"Button\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:243
+msgid ""
+"Returns combined minimum size from [member rect_min_size] and [method "
+"get_minimum_size]."
+msgstr ""
+
+#: doc/classes/Control.xml:251
+msgid ""
+"Returns a constant from the first matching [Theme] in the tree if that "
+"[Theme] has a constant item with the specified [code]name[/code] and "
+"[code]theme_type[/code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:259
+msgid ""
+"Returns the mouse cursor shape the control displays on mouse hover. See "
+"[enum CursorShape]."
+msgstr ""
+
+#: doc/classes/Control.xml:266
+msgid ""
+"Godot calls this method to get data that can be dragged and dropped onto "
+"controls that expect drop data. Returns [code]null[/code] if there is no "
+"data to drag. Controls that want to receive drop data should implement "
+"[method can_drop_data] and [method drop_data]. [code]position[/code] is "
+"local to this control. Drag may be forced with [method force_drag].\n"
+"A preview that will follow the mouse that should represent the data can be "
+"set with [method set_drag_preview]. A good time to set the preview is in "
+"this method.\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]"
+msgstr ""
+
+#: doc/classes/Control.xml:279
+msgid "Returns [member margin_right] and [member margin_bottom]."
+msgstr ""
+
+#: doc/classes/Control.xml:286
+msgid ""
+"Returns the focus neighbour identified by [code]margin[/code] constant from "
+"[enum Margin] enum. A getter method for [member focus_neighbour_bottom], "
+"[member focus_neighbour_left], [member focus_neighbour_right] and [member "
+"focus_neighbour_top]."
+msgstr ""
+
+#: doc/classes/Control.xml:292
+msgid ""
+"Returns the control that has the keyboard focus or [code]null[/code] if none."
+msgstr ""
+
+#: doc/classes/Control.xml:300
+msgid ""
+"Returns a [Font] from the first matching [Theme] in the tree if that [Theme] "
+"has a font item with the specified [code]name[/code] and [code]theme_type[/"
+"code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:307
+msgid ""
+"Returns the position and size of the control relative to the top-left corner "
+"of the screen. See [member rect_position] and [member rect_size]."
+msgstr ""
+
+#: doc/classes/Control.xml:315
+msgid ""
+"Returns an icon from the first matching [Theme] in the tree if that [Theme] "
+"has an icon item with the specified [code]name[/code] and [code]theme_type[/"
+"code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:323
+msgid ""
+"Returns the anchor identified by [code]margin[/code] constant from [enum "
+"Margin] enum. A getter method for [member margin_bottom], [member "
+"margin_left], [member margin_right] and [member margin_top]."
+msgstr ""
+
+#: doc/classes/Control.xml:329
+msgid "Returns the minimum size for this control. See [member rect_min_size]."
+msgstr ""
+
+#: doc/classes/Control.xml:335
+msgid "Returns the width/height occupied in the parent control."
+msgstr ""
+
+#: doc/classes/Control.xml:341
+msgid "Returns the parent control node."
+msgstr ""
+
+#: doc/classes/Control.xml:347
+msgid ""
+"Returns the position and size of the control relative to the top-left corner "
+"of the parent Control. See [member rect_position] and [member rect_size]."
+msgstr ""
+
+#: doc/classes/Control.xml:353
+msgid "Returns the rotation (in radians)."
+msgstr ""
+
+#: doc/classes/Control.xml:361
+msgid ""
+"Returns a [StyleBox] from the first matching [Theme] in the tree if that "
+"[Theme] has a stylebox item with the specified [code]name[/code] and "
+"[code]theme_type[/code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:368
+msgid ""
+"Returns the default font from the first matching [Theme] in the tree if that "
+"[Theme] has a valid [member Theme.default_font] value.\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:376
+msgid ""
+"Returns the tooltip, which will appear when the cursor is resting over this "
+"control. See [member hint_tooltip]."
+msgstr ""
+
+#: doc/classes/Control.xml:382
+msgid ""
+"Creates an [InputEventMouseButton] that attempts to click the control. If "
+"the event is received, the control acquires focus.\n"
+"[codeblock]\n"
+"func _process(delta):\n"
+" grab_click_focus() #when clicking another Control node, this node will "
+"be clicked instead\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:392
+msgid ""
+"Steal the focus from another control and become the focused control (see "
+"[member focus_mode])."
+msgstr ""
+
+#: doc/classes/Control.xml:400
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a color item with the specified [code]name[/code] and [code]theme_type[/"
+"code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:408
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme [Color] "
+"with the specified [code]name[/code] in this [Control] node.\n"
+"See [method add_color_override]."
+msgstr ""
+
+#: doc/classes/Control.xml:417
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a constant item with the specified [code]name[/code] and "
+"[code]theme_type[/code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:425
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme constant "
+"with the specified [code]name[/code] in this [Control] node.\n"
+"See [method add_constant_override]."
+msgstr ""
+
+#: doc/classes/Control.xml:432
+msgid ""
+"Returns [code]true[/code] if this is the current focused control. See "
+"[member focus_mode]."
+msgstr ""
+
+#: doc/classes/Control.xml:440
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a font item with the specified [code]name[/code] and [code]theme_type[/"
+"code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:448
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme [Font] "
+"with the specified [code]name[/code] in this [Control] node.\n"
+"See [method add_font_override]."
+msgstr ""
+
+#: doc/classes/Control.xml:457
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has an icon item with the specified [code]name[/code] and [code]theme_type[/"
+"code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:465
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme icon with "
+"the specified [code]name[/code] in this [Control] node.\n"
+"See [method add_icon_override]."
+msgstr ""
+
+#: doc/classes/Control.xml:473
+msgid ""
+"Virtual method to be implemented by the user. Returns whether the given "
+"[code]point[/code] is inside this control.\n"
+"If not overridden, default behavior is checking if the point is within "
+"control's Rect.\n"
+"[b]Note:[/b] If you want to check if a point is inside the control, you can "
+"use [code]get_rect().has_point(point)[/code]."
+msgstr ""
+
+#: doc/classes/Control.xml:482
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme shader "
+"with the specified [code]name[/code] in this [Control] node.\n"
+"See [method add_shader_override]."
+msgstr ""
+
+#: doc/classes/Control.xml:491
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a stylebox item with the specified [code]name[/code] and "
+"[code]theme_type[/code].\n"
+"See [method get_color] for details."
+msgstr ""
+
+#: doc/classes/Control.xml:499
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme "
+"[StyleBox] with the specified [code]name[/code] in this [Control] node.\n"
+"See [method add_stylebox_override]."
+msgstr ""
+
+#: doc/classes/Control.xml:506
+msgid ""
+"Invalidates the size cache in this node and in parent nodes up to toplevel. "
+"Intended to be used with [method get_minimum_size] when the return value is "
+"changed. Setting [member rect_min_size] directly calls this method "
+"automatically."
+msgstr ""
+
+#: doc/classes/Control.xml:512
+msgid ""
+"Give up the focus. No other control will be able to receive keyboard input."
+msgstr ""
+
+#: doc/classes/Control.xml:522
+msgid ""
+"Sets the anchor identified by [code]margin[/code] constant from [enum "
+"Margin] enum to value [code]anchor[/code]. A setter method for [member "
+"anchor_bottom], [member anchor_left], [member anchor_right] and [member "
+"anchor_top].\n"
+"If [code]keep_margin[/code] is [code]true[/code], margins aren't updated "
+"after this operation.\n"
+"If [code]push_opposite_anchor[/code] is [code]true[/code] and the opposite "
+"anchor overlaps this anchor, the opposite one will have its value "
+"overridden. For example, when setting left anchor to 1 and the right anchor "
+"has value of 0.5, the right anchor will also get value of 1. If "
+"[code]push_opposite_anchor[/code] was [code]false[/code], the left anchor "
+"would get value 0.5."
+msgstr ""
+
+#: doc/classes/Control.xml:534
+msgid ""
+"Works the same as [method set_anchor], but instead of [code]keep_margin[/"
+"code] argument and automatic update of margin, it allows to set the margin "
+"offset yourself (see [method set_margin])."
+msgstr ""
+
+#: doc/classes/Control.xml:543
+msgid ""
+"Sets both anchor preset and margin preset. See [method set_anchors_preset] "
+"and [method set_margins_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:551
+msgid ""
+"Sets the anchors to a [code]preset[/code] from [enum Control.LayoutPreset] "
+"enum. This is the code equivalent to using the Layout menu in the 2D "
+"editor.\n"
+"If [code]keep_margins[/code] is [code]true[/code], control's position will "
+"also be updated."
+msgstr ""
+
+#: doc/classes/Control.xml:559
+msgid ""
+"Sets [member margin_left] and [member margin_top] at the same time. "
+"Equivalent of changing [member rect_position]."
+msgstr ""
+
+#: doc/classes/Control.xml:566
+msgid ""
+"Forwards the handling of this control's drag and drop to [code]target[/code] "
+"control.\n"
+"Forwarding can be implemented in the target control similar to the methods "
+"[method get_drag_data], [method can_drop_data], and [method drop_data] but "
+"with two differences:\n"
+"1. The function name must be suffixed with [b]_fw[/b]\n"
+"2. The function must take an extra argument that is the control doing the "
+"forwarding\n"
+"[codeblock]\n"
+"# ThisControl.gd\n"
+"extends Control\n"
+"func _ready():\n"
+" set_drag_forwarding(target_control)\n"
+"\n"
+"# TargetControl.gd\n"
+"extends Control\n"
+"func can_drop_data_fw(position, data, from_control):\n"
+" return true\n"
+"\n"
+"func drop_data_fw(position, data, from_control):\n"
+" my_handle_data(data)\n"
+"\n"
+"func get_drag_data_fw(position, from_control):\n"
+" set_drag_preview(my_preview)\n"
+" return my_data()\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:594
+msgid ""
+"Shows the given control at the mouse pointer. A good time to call this "
+"method is in [method get_drag_data]. The control must not be in the scene "
+"tree. You should not free the control, and you should not keep a reference "
+"to the control beyond the duration of the drag. It will be deleted "
+"automatically after the drag has ended.\n"
+"[codeblock]\n"
+"export (Color, RGBA) var color = Color(1, 0, 0, 1)\n"
+"\n"
+"func get_drag_data(position):\n"
+" # Use a control that is not in the tree\n"
+" var cpb = ColorPickerButton.new()\n"
+" cpb.color = color\n"
+" cpb.rect_size = Vector2(50, 50)\n"
+" set_drag_preview(cpb)\n"
+" return color\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:612
+msgid "Sets [member margin_right] and [member margin_bottom] at the same time."
+msgstr ""
+
+#: doc/classes/Control.xml:620
+msgid ""
+"Sets the anchor identified by [code]margin[/code] constant from [enum "
+"Margin] enum to [Control] at [code]neighbor[/code] node path. A setter "
+"method for [member focus_neighbour_bottom], [member focus_neighbour_left], "
+"[member focus_neighbour_right] and [member focus_neighbour_top]."
+msgstr ""
+
+#: doc/classes/Control.xml:628
+msgid ""
+"Sets the [member rect_global_position] to given [code]position[/code].\n"
+"If [code]keep_margins[/code] is [code]true[/code], control's anchors will be "
+"updated instead of margins."
+msgstr ""
+
+#: doc/classes/Control.xml:637
+msgid ""
+"Sets the margin identified by [code]margin[/code] constant from [enum "
+"Margin] enum to given [code]offset[/code]. A setter method for [member "
+"margin_bottom], [member margin_left], [member margin_right] and [member "
+"margin_top]."
+msgstr ""
+
+#: doc/classes/Control.xml:646
+msgid ""
+"Sets the margins to a [code]preset[/code] from [enum Control.LayoutPreset] "
+"enum. This is the code equivalent to using the Layout menu in the 2D "
+"editor.\n"
+"Use parameter [code]resize_mode[/code] with constants from [enum Control."
+"LayoutPresetMode] to better determine the resulting size of the [Control]. "
+"Constant size will be ignored if used with presets that change size, e.g. "
+"[code]PRESET_LEFT_WIDE[/code].\n"
+"Use parameter [code]margin[/code] to determine the gap between the [Control] "
+"and the edges."
+msgstr ""
+
+#: doc/classes/Control.xml:656
+msgid ""
+"Sets the [member rect_position] to given [code]position[/code].\n"
+"If [code]keep_margins[/code] is [code]true[/code], control's anchors will be "
+"updated instead of margins."
+msgstr ""
+
+#: doc/classes/Control.xml:664
+msgid "Sets the rotation (in radians)."
+msgstr ""
+
+#: doc/classes/Control.xml:672
+msgid ""
+"Sets the size (see [member rect_size]).\n"
+"If [code]keep_margins[/code] is [code]true[/code], control's anchors will be "
+"updated instead of margins."
+msgstr ""
+
+#: doc/classes/Control.xml:680
+msgid ""
+"Displays a control as modal. Control must be a subwindow. Modal controls "
+"capture the input signals until closed or the area outside them is accessed. "
+"When a modal control loses focus, or the ESC key is pressed, they "
+"automatically hide. Modal controls are used extensively for popup dialogs "
+"and menus.\n"
+"If [code]exclusive[/code] is [code]true[/code], other controls will not "
+"receive input and clicking outside this control will not close it."
+msgstr ""
+
+#: doc/classes/Control.xml:688
+msgid ""
+"Moves the mouse cursor to [code]to_position[/code], relative to [member "
+"rect_position] of this [Control]."
+msgstr ""
+
+#: doc/classes/Control.xml:694
+msgid ""
+"Anchors the bottom edge of the node to the origin, the center, or the end of "
+"its parent control. It changes how the bottom margin updates when the node "
+"moves or changes size. You can use one of the [enum Anchor] constants for "
+"convenience."
+msgstr ""
+
+#: doc/classes/Control.xml:697
+msgid ""
+"Anchors the left edge of the node to the origin, the center or the end of "
+"its parent control. It changes how the left margin updates when the node "
+"moves or changes size. You can use one of the [enum Anchor] constants for "
+"convenience."
+msgstr ""
+
+#: doc/classes/Control.xml:700
+msgid ""
+"Anchors the right edge of the node to the origin, the center or the end of "
+"its parent control. It changes how the right margin updates when the node "
+"moves or changes size. You can use one of the [enum Anchor] constants for "
+"convenience."
+msgstr ""
+
+#: doc/classes/Control.xml:703
+msgid ""
+"Anchors the top edge of the node to the origin, the center or the end of its "
+"parent control. It changes how the top margin updates when the node moves or "
+"changes size. You can use one of the [enum Anchor] constants for convenience."
+msgstr ""
+
+#: doc/classes/Control.xml:706
+msgid ""
+"The focus access mode for the control (None, Click or All). Only one Control "
+"can be focused at the same time, and it will receive keyboard signals."
+msgstr ""
+
+#: doc/classes/Control.xml:709
+msgid ""
+"Tells Godot which node it should give keyboard focus to if the user presses "
+"the down arrow on the keyboard or down on a gamepad by default. You can "
+"change the key by editing the [code]ui_down[/code] input action. The node "
+"must be a [Control]. If this property is not set, Godot will give focus to "
+"the closest [Control] to the bottom of this one."
+msgstr ""
+
+#: doc/classes/Control.xml:712
+msgid ""
+"Tells Godot which node it should give keyboard focus to if the user presses "
+"the left arrow on the keyboard or left on a gamepad by default. You can "
+"change the key by editing the [code]ui_left[/code] input action. The node "
+"must be a [Control]. If this property is not set, Godot will give focus to "
+"the closest [Control] to the left of this one."
+msgstr ""
+
+#: doc/classes/Control.xml:715
+msgid ""
+"Tells Godot which node it should give keyboard focus to if the user presses "
+"the right arrow on the keyboard or right on a gamepad by default. You can "
+"change the key by editing the [code]ui_right[/code] input action. The node "
+"must be a [Control]. If this property is not set, Godot will give focus to "
+"the closest [Control] to the bottom of this one."
+msgstr ""
+
+#: doc/classes/Control.xml:718
+msgid ""
+"Tells Godot which node it should give keyboard focus to if the user presses "
+"the top arrow on the keyboard or top on a gamepad by default. You can change "
+"the key by editing the [code]ui_top[/code] input action. The node must be a "
+"[Control]. If this property is not set, Godot will give focus to the closest "
+"[Control] to the bottom of this one."
+msgstr ""
+
+#: doc/classes/Control.xml:721
+msgid ""
+"Tells Godot which node it should give keyboard focus to if the user presses "
+"Tab on a keyboard by default. You can change the key by editing the "
+"[code]ui_focus_next[/code] input action.\n"
+"If this property is not set, Godot will select a \"best guess\" based on "
+"surrounding nodes in the scene tree."
+msgstr ""
+
+#: doc/classes/Control.xml:725
+msgid ""
+"Tells Godot which node it should give keyboard focus to if the user presses "
+"Shift+Tab on a keyboard by default. You can change the key by editing the "
+"[code]ui_focus_prev[/code] input action.\n"
+"If this property is not set, Godot will select a \"best guess\" based on "
+"surrounding nodes in the scene tree."
+msgstr ""
+
+#: doc/classes/Control.xml:729
+msgid ""
+"Controls the direction on the horizontal axis in which the control should "
+"grow if its horizontal minimum size is changed to be greater than its "
+"current size, as the control always has to be at least the minimum size."
+msgstr ""
+
+#: doc/classes/Control.xml:732
+msgid ""
+"Controls the direction on the vertical axis in which the control should grow "
+"if its vertical minimum size is changed to be greater than its current size, "
+"as the control always has to be at least the minimum size."
+msgstr ""
+
+#: doc/classes/Control.xml:735
+msgid ""
+"Changes the tooltip text. The tooltip appears when the user's mouse cursor "
+"stays idle over this control for a few moments, provided that the [member "
+"mouse_filter] property is not [constant MOUSE_FILTER_IGNORE]. You can change "
+"the time required for the tooltip to appear with [code]gui/timers/"
+"tooltip_delay_sec[/code] option in Project Settings.\n"
+"The tooltip popup will use either a default implementation, or a custom one "
+"that you can provide by overriding [method _make_custom_tooltip]. The "
+"default tooltip includes a [PopupPanel] and [Label] whose theme properties "
+"can be customized using [Theme] methods with the [code]\"TooltipPanel\"[/"
+"code] and [code]\"TooltipLabel\"[/code] respectively. For example:\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"
+"# We assume here that the `theme` property has been assigned a custom Theme "
+"beforehand.\n"
+"theme.set_stylebox(\"panel\", \"TooltipPanel\", style_box)\n"
+"theme.set_color(\"font_color\", \"TooltipLabel\", Color(0, 1, 1))\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Control.xml:747
+msgid ""
+"Enables whether input should propagate when you close the control as modal.\n"
+"If [code]false[/code], stops event handling at the viewport input event "
+"handling. The viewport first hides the modal and after marks the input as "
+"handled."
+msgstr ""
+
+#: doc/classes/Control.xml:751
+msgid ""
+"Distance between the node's bottom edge and its parent control, based on "
+"[member anchor_bottom].\n"
+"Margins are often controlled by one or multiple parent [Container] nodes, so "
+"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 ""
+
+#: doc/classes/Control.xml:755
+msgid ""
+"Distance between the node's left edge and its parent control, based on "
+"[member anchor_left].\n"
+"Margins are often controlled by one or multiple parent [Container] nodes, so "
+"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 ""
+
+#: doc/classes/Control.xml:759
+msgid ""
+"Distance between the node's right edge and its parent control, based on "
+"[member anchor_right].\n"
+"Margins are often controlled by one or multiple parent [Container] nodes, so "
+"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 ""
+
+#: doc/classes/Control.xml:763
+msgid ""
+"Distance between the node's top edge and its parent control, based on "
+"[member anchor_top].\n"
+"Margins are often controlled by one or multiple parent [Container] nodes, so "
+"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 ""
+
+#: doc/classes/Control.xml:767
+msgid ""
+"The default cursor shape for this control. Useful for Godot plugins and "
+"applications or games that use the system's mouse cursors.\n"
+"[b]Note:[/b] On Linux, shapes may vary depending on the cursor theme of the "
+"system."
+msgstr ""
+
+#: doc/classes/Control.xml:771
+msgid ""
+"Controls whether the control will be able to receive mouse button input "
+"events through [method _gui_input] and how these events should be handled. "
+"Also controls whether the control can receive the [signal mouse_entered], "
+"and [signal mouse_exited] signals. See the constants to learn what each does."
+msgstr ""
+
+#: doc/classes/Control.xml:774
+msgid ""
+"Enables whether rendering of [CanvasItem] based children should be clipped "
+"to this control's rectangle. If [code]true[/code], parts of a child which "
+"would be visibly outside of this control's rectangle will not be rendered."
+msgstr ""
+
+#: doc/classes/Control.xml:777
+msgid ""
+"The node's global position, relative to the world (usually to the top-left "
+"corner of the window)."
+msgstr ""
+
+#: doc/classes/Control.xml:780
+msgid ""
+"The minimum size of the node's bounding rectangle. If you set it to a value "
+"greater than (0, 0), the node's bounding rectangle will always have at least "
+"this size, even if its content is smaller. If it's set to (0, 0), the node "
+"sizes automatically to fit its content, be it a texture or child nodes."
+msgstr ""
+
+#: doc/classes/Control.xml:783
+msgid ""
+"By default, the node's pivot is its top-left corner. When you change its "
+"[member rect_scale], it will scale around this pivot. Set this property to "
+"[member rect_size] / 2 to center the pivot in the node's rectangle."
+msgstr ""
+
+#: doc/classes/Control.xml:786
+msgid ""
+"The node's position, relative to its parent. It corresponds to the "
+"rectangle's top-left corner. The property is not affected by [member "
+"rect_pivot_offset]."
+msgstr ""
+
+#: doc/classes/Control.xml:789
+msgid ""
+"The node's rotation around its pivot, in degrees. See [member "
+"rect_pivot_offset] to change the pivot's position."
+msgstr ""
+
+#: doc/classes/Control.xml:792
+msgid ""
+"The node's scale, relative to its [member rect_size]. Change this property "
+"to scale the node around its [member rect_pivot_offset]. The Control's "
+"[member hint_tooltip] will also scale according to this value.\n"
+"[b]Note:[/b] This property is mainly intended to be used for animation "
+"purposes. Text inside the Control will look pixelated or blurry when the "
+"Control is scaled. To support multiple resolutions in your project, use an "
+"appropriate viewport stretch mode as described in the [url=https://docs."
+"godotengine.org/en/3.4/tutorials/viewports/multiple_resolutions."
+"html]documentation[/url] instead of scaling Controls individually.\n"
+"[b]Note:[/b] If the Control node is a child of a [Container] node, the scale "
+"will be reset to [code]Vector2(1, 1)[/code] when the scene is instanced. To "
+"set the Control's scale when it's instanced, wait for one frame using "
+"[code]yield(get_tree(), \"idle_frame\")[/code] then set its [member "
+"rect_scale] property."
+msgstr ""
+
+#: doc/classes/Control.xml:797
+msgid ""
+"The size of the node's bounding rectangle, in pixels. [Container] nodes "
+"update this property automatically."
+msgstr ""
+
+#: doc/classes/Control.xml:800
+msgid ""
+"Tells the parent [Container] nodes how they should resize and place the node "
+"on the X axis. Use one of the [enum SizeFlags] constants to change the "
+"flags. See the constants to learn what each does."
+msgstr ""
+
+#: doc/classes/Control.xml:803
+msgid ""
+"If the node and at least one of its neighbours uses the [constant "
+"SIZE_EXPAND] size flag, the parent [Container] will let it take more or less "
+"space depending on this property. If this node has a stretch ratio of 2 and "
+"its neighbour a ratio of 1, this node will take two thirds of the available "
+"space."
+msgstr ""
+
+#: doc/classes/Control.xml:806
+msgid ""
+"Tells the parent [Container] nodes how they should resize and place the node "
+"on the Y axis. Use one of the [enum SizeFlags] constants to change the "
+"flags. See the constants to learn what each does."
+msgstr ""
+
+#: doc/classes/Control.xml:809
+msgid ""
+"Changing this property replaces the current [Theme] resource this node and "
+"all its [Control] children use."
+msgstr ""
+
+#: doc/classes/Control.xml:815
+msgid "Emitted when the node gains keyboard focus."
+msgstr ""
+
+#: doc/classes/Control.xml:820
+msgid "Emitted when the node loses keyboard focus."
+msgstr ""
+
+#: doc/classes/Control.xml:826
+msgid "Emitted when the node receives an [InputEvent]."
+msgstr ""
+
+#: doc/classes/Control.xml:831
+msgid "Emitted when the node's minimum size changes."
+msgstr ""
+
+#: doc/classes/Control.xml:836
+msgid "Emitted when a modal [Control] is closed. See [method show_modal]."
+msgstr ""
+
+#: doc/classes/Control.xml:841
+msgid ""
+"Emitted when the mouse enters the control's [code]Rect[/code] area, provided "
+"its [member mouse_filter] lets the event reach it.\n"
+"[b]Note:[/b] [signal mouse_entered] will not be emitted if the mouse enters "
+"a child [Control] node before entering the parent's [code]Rect[/code] area, "
+"at least until the mouse is moved to reach the parent's [code]Rect[/code] "
+"area."
+msgstr ""
+
+#: doc/classes/Control.xml:847
+msgid ""
+"Emitted when the mouse leaves the control's [code]Rect[/code] area, provided "
+"its [member mouse_filter] lets the event reach it.\n"
+"[b]Note:[/b] [signal mouse_exited] will be emitted if the mouse enters a "
+"child [Control] node, even if the mouse cursor is still inside the parent's "
+"[code]Rect[/code] area."
+msgstr ""
+
+#: doc/classes/Control.xml:853
+msgid "Emitted when the control changes size."
+msgstr ""
+
+#: doc/classes/Control.xml:858
+msgid ""
+"Emitted when one of the size flags changes. See [member "
+"size_flags_horizontal] and [member size_flags_vertical]."
+msgstr ""
+
+#: doc/classes/Control.xml:864
+msgid "The node cannot grab focus. Use with [member focus_mode]."
+msgstr ""
+
+#: doc/classes/Control.xml:867
+msgid ""
+"The node can only grab focus on mouse clicks. Use with [member focus_mode]."
+msgstr ""
+
+#: doc/classes/Control.xml:870
+msgid ""
+"The node can grab focus on mouse click or using the arrows and the Tab keys "
+"on the keyboard. Use with [member focus_mode]."
+msgstr ""
+
+#: doc/classes/Control.xml:873
+msgid ""
+"Sent when the node changes size. Use [member rect_size] to get the new size."
+msgstr ""
+
+#: doc/classes/Control.xml:876
+msgid "Sent when the mouse pointer enters the node."
+msgstr ""
+
+#: doc/classes/Control.xml:879
+msgid "Sent when the mouse pointer exits the node."
+msgstr ""
+
+#: doc/classes/Control.xml:882
+msgid "Sent when the node grabs focus."
+msgstr ""
+
+#: doc/classes/Control.xml:885
+msgid "Sent when the node loses focus."
+msgstr ""
+
+#: doc/classes/Control.xml:888
+msgid ""
+"Sent when the node's [member theme] changes, right before Godot redraws the "
+"control. Happens when you call one of the [code]add_*_override[/code] "
+"methods."
+msgstr ""
+
+#: doc/classes/Control.xml:891
+msgid "Sent when an open modal dialog closes. See [method show_modal]."
+msgstr ""
+
+#: doc/classes/Control.xml:894
+msgid ""
+"Sent when this node is inside a [ScrollContainer] which has begun being "
+"scrolled."
+msgstr ""
+
+#: doc/classes/Control.xml:897
+msgid ""
+"Sent when this node is inside a [ScrollContainer] which has stopped being "
+"scrolled."
+msgstr ""
+
+#: doc/classes/Control.xml:900
+msgid ""
+"Show the system's arrow mouse cursor when the user hovers the node. Use with "
+"[member mouse_default_cursor_shape]."
+msgstr ""
+
+#: doc/classes/Control.xml:903
+msgid ""
+"Show the system's I-beam mouse cursor when the user hovers the node. The I-"
+"beam pointer has a shape similar to \"I\". It tells the user they can "
+"highlight or insert text."
+msgstr ""
+
+#: doc/classes/Control.xml:906
+msgid ""
+"Show the system's pointing hand mouse cursor when the user hovers the node."
+msgstr ""
+
+#: doc/classes/Control.xml:909
+msgid "Show the system's cross mouse cursor when the user hovers the node."
+msgstr ""
+
+#: doc/classes/Control.xml:912
+msgid ""
+"Show the system's wait mouse cursor, often an hourglass, when the user "
+"hovers the node."
+msgstr ""
+
+#: doc/classes/Control.xml:915
+msgid ""
+"Show the system's busy mouse cursor when the user hovers the node. Often an "
+"hourglass."
+msgstr ""
+
+#: doc/classes/Control.xml:918
+msgid ""
+"Show the system's drag mouse cursor, often a closed fist or a cross symbol, "
+"when the user hovers the node. It tells the user they're currently dragging "
+"an item, like a node in the Scene dock."
+msgstr ""
+
+#: doc/classes/Control.xml:921
+msgid ""
+"Show the system's drop mouse cursor when the user hovers the node. It can be "
+"an open hand. It tells the user they can drop an item they're currently "
+"grabbing, like a node in the Scene dock."
+msgstr ""
+
+#: doc/classes/Control.xml:924
+msgid ""
+"Show the system's forbidden mouse cursor when the user hovers the node. "
+"Often a crossed circle."
+msgstr ""
+
+#: doc/classes/Control.xml:927
+msgid ""
+"Show the system's vertical resize mouse cursor when the user hovers the "
+"node. A double-headed vertical arrow. It tells the user they can resize the "
+"window or the panel vertically."
+msgstr ""
+
+#: doc/classes/Control.xml:930
+msgid ""
+"Show the system's horizontal resize mouse cursor when the user hovers the "
+"node. A double-headed horizontal arrow. It tells the user they can resize "
+"the window or the panel horizontally."
+msgstr ""
+
+#: doc/classes/Control.xml:933
+msgid ""
+"Show the system's window resize mouse cursor when the user hovers the node. "
+"The cursor is a double-headed arrow that goes from the bottom left to the "
+"top right. It tells the user they can resize the window or the panel both "
+"horizontally and vertically."
+msgstr ""
+
+#: doc/classes/Control.xml:936
+msgid ""
+"Show the system's window resize mouse cursor when the user hovers the node. "
+"The cursor is a double-headed arrow that goes from the top left to the "
+"bottom right, the opposite of [constant CURSOR_BDIAGSIZE]. It tells the user "
+"they can resize the window or the panel both horizontally and vertically."
+msgstr ""
+
+#: doc/classes/Control.xml:939
+msgid ""
+"Show the system's move mouse cursor when the user hovers the node. It shows "
+"2 double-headed arrows at a 90 degree angle. It tells the user they can move "
+"a UI element freely."
+msgstr ""
+
+#: doc/classes/Control.xml:942
+msgid ""
+"Show the system's vertical split mouse cursor when the user hovers the node. "
+"On Windows, it's the same as [constant CURSOR_VSIZE]."
+msgstr ""
+
+#: doc/classes/Control.xml:945
+msgid ""
+"Show the system's horizontal split mouse cursor when the user hovers the "
+"node. On Windows, it's the same as [constant CURSOR_HSIZE]."
+msgstr ""
+
+#: doc/classes/Control.xml:948
+msgid ""
+"Show the system's help mouse cursor when the user hovers the node, a "
+"question mark."
+msgstr ""
+
+#: doc/classes/Control.xml:951
+msgid ""
+"Snap all 4 anchors to the top-left of the parent control's bounds. Use with "
+"[method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:954
+msgid ""
+"Snap all 4 anchors to the top-right of the parent control's bounds. Use with "
+"[method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:957
+msgid ""
+"Snap all 4 anchors to the bottom-left of the parent control's bounds. Use "
+"with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:960
+msgid ""
+"Snap all 4 anchors to the bottom-right of the parent control's bounds. Use "
+"with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:963
+msgid ""
+"Snap all 4 anchors to the center of the left edge of the parent control's "
+"bounds. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:966
+msgid ""
+"Snap all 4 anchors to the center of the top edge of the parent control's "
+"bounds. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:969
+msgid ""
+"Snap all 4 anchors to the center of the right edge of the parent control's "
+"bounds. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:972
+msgid ""
+"Snap all 4 anchors to the center of the bottom edge of the parent control's "
+"bounds. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:975
+msgid ""
+"Snap all 4 anchors to the center of the parent control's bounds. Use with "
+"[method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:978
+msgid ""
+"Snap all 4 anchors to the left edge of the parent control. The left margin "
+"becomes relative to the left edge and the top margin relative to the top "
+"left corner of the node's parent. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:981
+msgid ""
+"Snap all 4 anchors to the top edge of the parent control. The left margin "
+"becomes relative to the top left corner, the top margin relative to the top "
+"edge, and the right margin relative to the top right corner of the node's "
+"parent. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:984
+msgid ""
+"Snap all 4 anchors to the right edge of the parent control. The right margin "
+"becomes relative to the right edge and the top margin relative to the top "
+"right corner of the node's parent. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:987
+msgid ""
+"Snap all 4 anchors to the bottom edge of the parent control. The left margin "
+"becomes relative to the bottom left corner, the bottom margin relative to "
+"the bottom edge, and the right margin relative to the bottom right corner of "
+"the node's parent. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:990
+msgid ""
+"Snap all 4 anchors to a vertical line that cuts the parent control in half. "
+"Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:993
+msgid ""
+"Snap all 4 anchors to a horizontal line that cuts the parent control in "
+"half. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:996
+msgid ""
+"Snap all 4 anchors to the respective corners of the parent control. Set all "
+"4 margins to 0 after you applied this preset and the [Control] will fit its "
+"parent control. This is equivalent to the \"Full Rect\" layout option in the "
+"editor. Use with [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:999
+msgid "The control will be resized to its minimum size."
+msgstr ""
+
+#: doc/classes/Control.xml:1002
+msgid "The control's width will not change."
+msgstr ""
+
+#: doc/classes/Control.xml:1005
+msgid "The control's height will not change."
+msgstr ""
+
+#: doc/classes/Control.xml:1008
+msgid "The control's size will not change."
+msgstr ""
+
+#: doc/classes/Control.xml:1011
+msgid ""
+"Tells the parent [Container] to expand the bounds of this node to fill all "
+"the available space without pushing any other node. Use with [member "
+"size_flags_horizontal] and [member size_flags_vertical]."
+msgstr ""
+
+#: doc/classes/Control.xml:1014
+msgid ""
+"Tells the parent [Container] to let this node take all the available space "
+"on the axis you flag. If multiple neighboring nodes are set to expand, "
+"they'll share the space based on their stretch ratio. See [member "
+"size_flags_stretch_ratio]. Use with [member size_flags_horizontal] and "
+"[member size_flags_vertical]."
+msgstr ""
+
+#: doc/classes/Control.xml:1017
+msgid ""
+"Sets the node's size flags to both fill and expand. See the 2 constants "
+"above for more information."
+msgstr ""
+
+#: doc/classes/Control.xml:1020
+msgid ""
+"Tells the parent [Container] to center the node in itself. It centers the "
+"control based on its bounding box, so it doesn't work with the fill or "
+"expand size flags. Use with [member size_flags_horizontal] and [member "
+"size_flags_vertical]."
+msgstr ""
+
+#: doc/classes/Control.xml:1023
+msgid ""
+"Tells the parent [Container] to align the node with its end, either the "
+"bottom or the right edge. It doesn't work with the fill or expand size "
+"flags. Use with [member size_flags_horizontal] and [member "
+"size_flags_vertical]."
+msgstr ""
+
+#: doc/classes/Control.xml:1026
+msgid ""
+"The control will receive mouse button input events through [method "
+"_gui_input] if clicked on. And the control will receive the [signal "
+"mouse_entered] and [signal mouse_exited] signals. These events are "
+"automatically marked as handled, and they will not propagate further to "
+"other controls. This also results in blocking signals in other controls."
+msgstr ""
+
+#: doc/classes/Control.xml:1029
+msgid ""
+"The control will receive mouse button input events through [method "
+"_gui_input] if clicked on. And the control will receive the [signal "
+"mouse_entered] and [signal mouse_exited] signals. If this control does not "
+"handle the event, the parent control (if any) will be considered, and so on "
+"until there is no more parent control to potentially handle it. This also "
+"allows signals to fire in other controls. Even if no control handled it at "
+"all, the event will still be handled automatically, so unhandled input will "
+"not be fired."
+msgstr ""
+
+#: doc/classes/Control.xml:1032
+msgid ""
+"The control will not receive mouse button input events through [method "
+"_gui_input]. The control will also not receive the [signal mouse_entered] "
+"nor [signal mouse_exited] signals. This will not block other controls from "
+"receiving these events or firing the signals. Ignored events will not be "
+"handled automatically."
+msgstr ""
+
+#: doc/classes/Control.xml:1035
+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 ""
+
+#: doc/classes/Control.xml:1038
+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 ""
+
+#: doc/classes/Control.xml:1041
+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 ""
+
+#: doc/classes/Control.xml:1044
+msgid ""
+"Snaps one of the 4 anchor's sides to the origin of the node's [code]Rect[/"
+"code], in the top left. Use it with one of the [code]anchor_*[/code] member "
+"variables, like [member anchor_left]. To change all 4 anchors at once, use "
+"[method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/Control.xml:1047
+msgid ""
+"Snaps one of the 4 anchor's sides to the end of the node's [code]Rect[/"
+"code], in the bottom right. Use it with one of the [code]anchor_*[/code] "
+"member variables, like [member anchor_left]. To change all 4 anchors at "
+"once, use [method set_anchors_preset]."
+msgstr ""
+
+#: doc/classes/ConvexPolygonShape.xml:4
+msgid "Convex polygon shape for 3D physics."
+msgstr ""
+
+#: doc/classes/ConvexPolygonShape.xml:7
+msgid ""
+"Convex polygon shape resource, which can be added to a [PhysicsBody] or area."
+msgstr ""
+
+#: doc/classes/ConvexPolygonShape.xml:16
+msgid "The list of 3D points forming the convex polygon shape."
+msgstr ""
+
+#: doc/classes/ConvexPolygonShape2D.xml:4
+msgid "Convex polygon shape for 2D physics."
+msgstr ""
+
+#: doc/classes/ConvexPolygonShape2D.xml:7
+msgid ""
+"Convex polygon shape for 2D physics. A convex polygon, whatever its shape, "
+"is internally decomposed into as many convex polygons as needed to ensure "
+"all collision checks against it are always done on convex polygons (which "
+"are faster to check).\n"
+"The main difference between a [ConvexPolygonShape2D] and a "
+"[ConcavePolygonShape2D] is that a concave polygon assumes it is concave and "
+"uses a more complex method of collision detection, and a convex one forces "
+"itself to be convex in order to speed up collision detection."
+msgstr ""
+
+#: doc/classes/ConvexPolygonShape2D.xml:17
+msgid ""
+"Based on the set of points provided, this creates and assigns the [member "
+"points] property using the convex hull algorithm. Removing all unneeded "
+"points. See [method Geometry.convex_hull_2d] for details."
+msgstr ""
+
+#: doc/classes/ConvexPolygonShape2D.xml:23
+msgid ""
+"The polygon's list of vertices. Can be in either clockwise or "
+"counterclockwise order."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:4
+msgid "CPU-based 3D particle emitter."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:7
+msgid ""
+"CPU-based 3D particle node used to create a variety of particle systems and "
+"effects.\n"
+"See also [Particles], which provides the same functionality with hardware "
+"acceleration, but may not run on older devices.\n"
+"[b]Note:[/b] Unlike [Particles], the visibility rect is generated on-the-fly "
+"and doesn't need to be configured by the user."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:18
+msgid ""
+"Sets this node's properties to match a given [Particles] node with an "
+"assigned [ParticlesMaterial]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:25 doc/classes/CPUParticles2D.xml:26
+msgid "Returns the base value of the parameter specified by [enum Parameter]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:32 doc/classes/CPUParticles2D.xml:33
+msgid "Returns the [Curve] of the parameter specified by [enum Parameter]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:39 doc/classes/CPUParticles2D.xml:40
+msgid ""
+"Returns the randomness factor of the parameter specified by [enum Parameter]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:46 doc/classes/CPUParticles2D.xml:47
+msgid ""
+"Returns the enabled state of the given flag (see [enum Flags] for options)."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:52 doc/classes/CPUParticles2D.xml:53
+msgid "Restarts the particle emitter."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:60 doc/classes/CPUParticles2D.xml:61
+msgid "Sets the base value of the parameter specified by [enum Parameter]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:68 doc/classes/CPUParticles2D.xml:69
+msgid "Sets the [Curve] of the parameter specified by [enum Parameter]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:76 doc/classes/CPUParticles2D.xml:77
+msgid ""
+"Sets the randomness factor of the parameter specified by [enum Parameter]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:84 doc/classes/CPUParticles2D.xml:85
+msgid "Enables or disables the given flag (see [enum Flags] for options)."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:90 doc/classes/CPUParticles2D.xml:91
+#: doc/classes/Particles.xml:47 doc/classes/Particles2D.xml:33
+msgid ""
+"The number of particles emitted in one emission cycle (corresponding to the "
+"[member lifetime]).\n"
+"[b]Note:[/b] Changing [member amount] will reset the particle emission, "
+"therefore removing all particles that were already emitted before changing "
+"[member amount]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:94 doc/classes/CPUParticles2D.xml:95
+msgid "Initial rotation applied to each particle, in degrees."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:97 doc/classes/CPUParticles2D.xml:98
+msgid "Each particle's rotation will be animated along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:100 doc/classes/CPUParticles2D.xml:101
+#: doc/classes/ParticlesMaterial.xml:84
+msgid "Rotation randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:103 doc/classes/CPUParticles2D.xml:104
+msgid ""
+"Initial angular velocity applied to each particle. Sets the speed of "
+"rotation of the particle."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:106 doc/classes/CPUParticles2D.xml:107
+msgid "Each particle's angular velocity will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:109 doc/classes/CPUParticles2D.xml:110
+#: doc/classes/ParticlesMaterial.xml:94
+msgid "Angular velocity randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:112 doc/classes/CPUParticles2D.xml:113
+#: doc/classes/ParticlesMaterial.xml:97
+msgid "Particle animation offset."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:115 doc/classes/CPUParticles2D.xml:116
+msgid "Each particle's animation offset will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:118 doc/classes/CPUParticles2D.xml:119
+#: doc/classes/ParticlesMaterial.xml:103
+msgid "Animation offset randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:121 doc/classes/CPUParticles2D.xml:122
+#: doc/classes/ParticlesMaterial.xml:106
+msgid "Particle animation speed."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:124 doc/classes/CPUParticles2D.xml:125
+msgid "Each particle's animation speed will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:127 doc/classes/CPUParticles2D.xml:128
+#: doc/classes/ParticlesMaterial.xml:112
+msgid "Animation speed randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:130
+msgid ""
+"Each particle's initial color. To have particle display color in a "
+"[SpatialMaterial] make sure to set [member SpatialMaterial."
+"vertex_color_use_as_albedo] to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:133 doc/classes/ParticlesMaterial.xml:118
+msgid ""
+"Each particle's color will vary along this [GradientTexture] over its "
+"lifetime (multiplied with [member color])."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:136 doc/classes/CPUParticles2D.xml:137
+#: doc/classes/ParticlesMaterial.xml:121
+msgid "The rate at which particles lose velocity."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:139 doc/classes/CPUParticles2D.xml:140
+msgid "Damping will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:142 doc/classes/CPUParticles2D.xml:143
+#: doc/classes/ParticlesMaterial.xml:127
+msgid "Damping randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:145 doc/classes/CPUParticles2D.xml:146
+#: doc/classes/ParticlesMaterial.xml:130
+msgid "Unit vector specifying the particles' emission direction."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:148 doc/classes/CPUParticles2D.xml:149
+#: doc/classes/Particles.xml:51 doc/classes/Particles2D.xml:37
+msgid "Particle draw order. Uses [enum DrawOrder] values."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:151
+msgid ""
+"The rectangle's extents if [member emission_shape] is set to [constant "
+"EMISSION_SHAPE_BOX]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:154 doc/classes/CPUParticles2D.xml:152
+msgid ""
+"Sets the [Color]s to modulate particles by when using [constant "
+"EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:157 doc/classes/CPUParticles2D.xml:155
+msgid ""
+"Sets the direction the particles will be emitted in when using [constant "
+"EMISSION_SHAPE_DIRECTED_POINTS]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:160 doc/classes/CPUParticles2D.xml:158
+msgid ""
+"Sets the initial positions to spawn particles when using [constant "
+"EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:163
+msgid ""
+"The axis for the ring shaped emitter when using [constant "
+"EMISSION_SHAPE_RING]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:166
+msgid ""
+"The height for the ring shaped emitter when using [constant "
+"EMISSION_SHAPE_RING]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:169
+msgid ""
+"The inner radius for the ring shaped emitter when using [constant "
+"EMISSION_SHAPE_RING]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:172
+msgid ""
+"The radius for the ring shaped emitter when using [constant "
+"EMISSION_SHAPE_RING]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:175 doc/classes/CPUParticles2D.xml:164
+msgid ""
+"Particles will be emitted inside this region. See [enum EmissionShape] for "
+"possible values."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:178
+msgid ""
+"The sphere's radius if [enum EmissionShape] is set to [constant "
+"EMISSION_SHAPE_SPHERE]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:181 doc/classes/CPUParticles2D.xml:170
+#: doc/classes/Particles.xml:69 doc/classes/Particles2D.xml:40
+msgid "If [code]true[/code], particles are being emitted."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:184 doc/classes/CPUParticles2D.xml:173
+#: doc/classes/Particles2D.xml:43
+msgid ""
+"How rapidly particles in an emission cycle are emitted. If greater than "
+"[code]0[/code], there will be a gap in emissions before the next cycle "
+"begins."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:187
+msgid ""
+"The particle system's frame rate is fixed to a value. For instance, changing "
+"the value to 2 will make the particles render at 2 frames per second. Note "
+"this does not slow down the particle system itself."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:190 doc/classes/CPUParticles2D.xml:179
+#: doc/classes/ParticlesMaterial.xml:166
+msgid "Align Y axis of particle with the direction of its velocity."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:193 doc/classes/ParticlesMaterial.xml:169
+msgid "If [code]true[/code], particles will not move on the z axis."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:196 doc/classes/ParticlesMaterial.xml:172
+msgid "If [code]true[/code], particles rotate around Y axis by [member angle]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:199
+msgid ""
+"Amount of [member spread] in Y/Z plane. A value of [code]1[/code] restricts "
+"particles to X/Z plane."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:202 doc/classes/CPUParticles2D.xml:182
+#: doc/classes/Particles.xml:78 doc/classes/Particles2D.xml:49
+msgid ""
+"If [code]true[/code], results in fractional delta calculation which has a "
+"smoother particles display effect."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:205 doc/classes/CPUParticles2D.xml:185
+#: doc/classes/ParticlesMaterial.xml:178
+msgid "Gravity applied to every particle."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:208 doc/classes/CPUParticles2D.xml:188
+#: doc/classes/ParticlesMaterial.xml:181
+msgid "Initial hue variation applied to each particle."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:211 doc/classes/CPUParticles2D.xml:191
+msgid "Each particle's hue will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:214 doc/classes/CPUParticles2D.xml:194
+#: doc/classes/ParticlesMaterial.xml:187
+msgid "Hue variation randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:217 doc/classes/CPUParticles2D.xml:197
+#: doc/classes/ParticlesMaterial.xml:190
+msgid ""
+"Initial velocity magnitude for each particle. Direction comes from [member "
+"spread] and the node's orientation."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:220 doc/classes/CPUParticles2D.xml:200
+#: doc/classes/ParticlesMaterial.xml:193
+msgid "Initial velocity randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:223 doc/classes/CPUParticles2D.xml:203
+#: doc/classes/Particles.xml:81 doc/classes/Particles2D.xml:52
+msgid "The amount of time each particle will exist (in seconds)."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:226 doc/classes/CPUParticles2D.xml:206
+#: doc/classes/ParticlesMaterial.xml:196
+msgid "Particle lifetime randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:229 doc/classes/CPUParticles2D.xml:209
+#: doc/classes/ParticlesMaterial.xml:199
+msgid ""
+"Linear acceleration applied to each particle in the direction of motion."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:232 doc/classes/CPUParticles2D.xml:212
+msgid "Each particle's linear acceleration will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:235 doc/classes/CPUParticles2D.xml:215
+#: doc/classes/ParticlesMaterial.xml:205
+msgid "Linear acceleration randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:238 doc/classes/CPUParticles2D.xml:218
+#: doc/classes/Particles.xml:84 doc/classes/Particles2D.xml:55
+msgid ""
+"If [code]true[/code], particles use the parent node's coordinate space. If "
+"[code]false[/code], they use global coordinates."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:241
+msgid ""
+"The [Mesh] used for each particle. If [code]null[/code], particles will be "
+"spheres."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:244 doc/classes/CPUParticles2D.xml:225
+#: doc/classes/Particles2D.xml:62
+msgid ""
+"If [code]true[/code], only one emission cycle occurs. If set [code]true[/"
+"code] during a cycle, emission will stop at the cycle's end."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:247
+msgid ""
+"Orbital velocity applied to each particle. Makes the particles circle around "
+"origin in the local XY plane. Specified in number of full rotations around "
+"origin per second.\n"
+"This property is only available when [member flag_disable_z] is [code]true[/"
+"code]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:251 doc/classes/CPUParticles2D.xml:231
+msgid "Each particle's orbital velocity will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:254 doc/classes/CPUParticles2D.xml:234
+#: doc/classes/ParticlesMaterial.xml:215
+msgid "Orbital velocity randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:257 doc/classes/CPUParticles2D.xml:237
+#: doc/classes/Particles2D.xml:65
+msgid "Particle system starts as if it had already run for this many seconds."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:260 doc/classes/CPUParticles2D.xml:240
+#: doc/classes/ParticlesMaterial.xml:218
+msgid ""
+"Radial acceleration applied to each particle. Makes particle accelerate away "
+"from origin."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:263 doc/classes/CPUParticles2D.xml:243
+msgid "Each particle's radial acceleration will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:266 doc/classes/CPUParticles2D.xml:246
+#: doc/classes/ParticlesMaterial.xml:224
+msgid "Radial acceleration randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:269 doc/classes/CPUParticles2D.xml:249
+#: doc/classes/Particles2D.xml:71
+msgid "Emission lifetime randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:272 doc/classes/CPUParticles2D.xml:252
+#: doc/classes/ParticlesMaterial.xml:227
+msgid "Initial scale applied to each particle."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:275 doc/classes/CPUParticles2D.xml:255
+msgid "Each particle's scale will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:278 doc/classes/CPUParticles2D.xml:258
+#: doc/classes/ParticlesMaterial.xml:233
+msgid "Scale randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:281 doc/classes/CPUParticles2D.xml:261
+#: doc/classes/Particles2D.xml:74
+msgid ""
+"Particle system's running speed scaling ratio. A value of [code]0[/code] can "
+"be used to pause the particles."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:284
+msgid ""
+"Each particle's initial direction range from [code]+spread[/code] to [code]-"
+"spread[/code] degrees. Applied to X/Z plane and Y/Z planes."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:287 doc/classes/CPUParticles2D.xml:267
+#: doc/classes/ParticlesMaterial.xml:239
+msgid ""
+"Tangential acceleration applied to each particle. Tangential acceleration is "
+"perpendicular to the particle's velocity giving the particles a swirling "
+"motion."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:290 doc/classes/CPUParticles2D.xml:270
+msgid "Each particle's tangential acceleration will vary along this [Curve]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:293 doc/classes/CPUParticles2D.xml:273
+#: doc/classes/ParticlesMaterial.xml:245
+msgid "Tangential acceleration randomness ratio."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:298 doc/classes/CPUParticles2D.xml:281
+#: doc/classes/Particles.xml:109 doc/classes/Particles2D.xml:86
+msgid "Particles are drawn in the order emitted."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:301 doc/classes/CPUParticles2D.xml:284
+#: doc/classes/Particles.xml:112 doc/classes/Particles2D.xml:89
+msgid "Particles are drawn in order of remaining lifetime."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:304 doc/classes/Particles.xml:115
+msgid "Particles are drawn in order of depth."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:307 doc/classes/CPUParticles2D.xml:287
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set initial velocity properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:310 doc/classes/CPUParticles2D.xml:290
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set angular velocity properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:313 doc/classes/CPUParticles2D.xml:293
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set orbital velocity properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:316 doc/classes/CPUParticles2D.xml:296
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set linear acceleration properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:319 doc/classes/CPUParticles2D.xml:299
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set radial acceleration properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:322 doc/classes/CPUParticles2D.xml:302
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set tangential acceleration properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:325 doc/classes/CPUParticles2D.xml:305
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set damping properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:328 doc/classes/CPUParticles2D.xml:308
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set angle properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:331 doc/classes/CPUParticles2D.xml:311
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set scale properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:334 doc/classes/CPUParticles2D.xml:314
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set hue variation properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:337 doc/classes/CPUParticles2D.xml:317
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set animation speed properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:340 doc/classes/CPUParticles2D.xml:320
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_curve] to set animation offset properties."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:343 doc/classes/CPUParticles2D.xml:323
+#: doc/classes/ParticlesMaterial.xml:295
+msgid "Represents the size of the [enum Parameter] enum."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:346 doc/classes/CPUParticles2D.xml:326
+msgid "Use with [method set_particle_flag] to set [member flag_align_y]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:349
+msgid "Use with [method set_particle_flag] to set [member flag_rotate_y]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:352
+msgid "Use with [method set_particle_flag] to set [member flag_disable_z]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:355 doc/classes/CPUParticles2D.xml:335
+#: doc/classes/GeometryInstance.xml:109 doc/classes/ParticlesMaterial.xml:307
+#: doc/classes/SpatialMaterial.xml:564
+msgid "Represents the size of the [enum Flags] enum."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:358 doc/classes/CPUParticles2D.xml:338
+#: doc/classes/ParticlesMaterial.xml:310
+msgid "All particles will be emitted from a single point."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:361 doc/classes/ParticlesMaterial.xml:313
+msgid "Particles will be emitted in the volume of a sphere."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:364 doc/classes/ParticlesMaterial.xml:316
+msgid "Particles will be emitted in the volume of a box."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:367 doc/classes/CPUParticles2D.xml:347
+msgid ""
+"Particles will be emitted at a position chosen randomly among [member "
+"emission_points]. Particle color will be modulated by [member "
+"emission_colors]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:370 doc/classes/CPUParticles2D.xml:350
+msgid ""
+"Particles will be emitted at a position chosen randomly among [member "
+"emission_points]. Particle velocity and rotation will be set based on "
+"[member emission_normals]. Particle color will be modulated by [member "
+"emission_colors]."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:373 doc/classes/ParticlesMaterial.xml:325
+msgid "Particles will be emitted in a ring or cylinder."
+msgstr ""
+
+#: doc/classes/CPUParticles.xml:376 doc/classes/CPUParticles2D.xml:353
+#: doc/classes/ParticlesMaterial.xml:328
+msgid "Represents the size of the [enum EmissionShape] enum."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:4
+msgid "CPU-based 2D particle emitter."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:7
+msgid ""
+"CPU-based 2D particle node used to create a variety of particle systems and "
+"effects.\n"
+"See also [Particles2D], which provides the same functionality with hardware "
+"acceleration, but may not run on older devices.\n"
+"[b]Note:[/b] Unlike [Particles2D], the visibility rect is generated on-the-"
+"fly and doesn't need to be configured by the user."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:12 doc/classes/Particles2D.xml:14
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/2d/particle_systems_2d.html"
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:19
+msgid ""
+"Sets this node's properties to match a given [Particles2D] node with an "
+"assigned [ParticlesMaterial]."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:131
+msgid ""
+"Each particle's initial color. If [member texture] is defined, it will be "
+"multiplied by this color."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:134
+msgid ""
+"Each particle's color will vary along this [Gradient] (multiplied with "
+"[member color])."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:161
+msgid ""
+"The rectangle's extents if [member emission_shape] is set to [constant "
+"EMISSION_SHAPE_RECTANGLE]."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:167
+msgid ""
+"The sphere's radius if [member emission_shape] is set to [constant "
+"EMISSION_SHAPE_SPHERE]."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:176 doc/classes/Particles.xml:75
+#: doc/classes/Particles2D.xml:46
+msgid ""
+"The particle system's frame rate is fixed to a value. For instance, changing "
+"the value to 2 will make the particles render at 2 frames per second. Note "
+"this does not slow down the simulation of the particle system itself."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:221 doc/classes/Particles2D.xml:58
+msgid ""
+"Normal map to be used for the [member texture] property.\n"
+"[b]Note:[/b] Godot expects the normal map to use X+, Y-, and Z+ coordinates. "
+"See [url=http://wiki.polycount.com/wiki/"
+"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for "
+"a comparison of normal map coordinates expected by popular engines."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:228
+msgid ""
+"Orbital velocity applied to each particle. Makes the particles circle around "
+"origin. Specified in number of full rotations around origin per second."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:264 doc/classes/ParticlesMaterial.xml:236
+msgid ""
+"Each particle's initial direction range from [code]+spread[/code] to [code]-"
+"spread[/code] degrees."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:276 doc/classes/Particles2D.xml:77
+msgid "Particle texture. If [code]null[/code], particles will be squares."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:329 doc/classes/CPUParticles2D.xml:332
+msgid "Present for consistency with 3D particle nodes, not used in 2D."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:341
+msgid ""
+"Particles will be emitted on the surface of a sphere flattened to two "
+"dimensions."
+msgstr ""
+
+#: doc/classes/CPUParticles2D.xml:344
+msgid "Particles will be emitted in the area of a rectangle."
+msgstr ""
+
+#: doc/classes/Crypto.xml:4
+msgid "Access to advanced cryptographic functionalities."
+msgstr ""
+
+#: doc/classes/Crypto.xml:7
+msgid ""
+"The Crypto class allows you to access some more advanced cryptographic "
+"functionalities in Godot.\n"
+"For now, this includes generating cryptographically secure random bytes, RSA "
+"keys and self-signed X509 certificates generation, asymmetric key encryption/"
+"decryption, and signing/verification.\n"
+"[codeblock]\n"
+"extends Node\n"
+"\n"
+"var crypto = Crypto.new()\n"
+"var key = CryptoKey.new()\n"
+"var cert = X509Certificate.new()\n"
+"\n"
+"func _ready():\n"
+" # Generate new RSA key.\n"
+" key = crypto.generate_rsa(4096)\n"
+" # Generate new self-signed certificate with the given key.\n"
+" cert = crypto.generate_self_signed_certificate(key, \"CN=mydomain.com,"
+"O=My Game Company,C=IT\")\n"
+" # Save key and certificate in the user folder.\n"
+" key.save(\"user://generated.key\")\n"
+" cert.save(\"user://generated.crt\")\n"
+" # Encryption\n"
+" var data = \"Some data\"\n"
+" var encrypted = crypto.encrypt(key, data.to_utf8())\n"
+" # Decryption\n"
+" var decrypted = crypto.decrypt(key, encrypted)\n"
+" # Signing\n"
+" var signature = crypto.sign(HashingContext.HASH_SHA256, data."
+"sha256_buffer(), key)\n"
+" # Verifying\n"
+" var verified = crypto.verify(HashingContext.HASH_SHA256, data."
+"sha256_buffer(), signature, key)\n"
+" # Checks\n"
+" assert(verified)\n"
+" assert(data.to_utf8() == decrypted)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Not available in HTML5 exports."
+msgstr ""
+
+#: doc/classes/Crypto.xml:47
+msgid ""
+"Compares two [PoolByteArray]s for equality without leaking timing "
+"information in order to prevent timing attacks.\n"
+"See [url=https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-"
+"string-comparison-with-double-hmac-strategy]this blog post[/url] for more "
+"information."
+msgstr ""
+
+#: doc/classes/Crypto.xml:56
+msgid ""
+"Decrypt the given [code]ciphertext[/code] with the provided private "
+"[code]key[/code].\n"
+"[b]Note:[/b] The maximum size of accepted ciphertext is limited by the key "
+"size."
+msgstr ""
+
+#: doc/classes/Crypto.xml:65
+msgid ""
+"Encrypt the given [code]plaintext[/code] with the provided public [code]key[/"
+"code].\n"
+"[b]Note:[/b] The maximum size of accepted plaintext is limited by the key "
+"size."
+msgstr ""
+
+#: doc/classes/Crypto.xml:73
+msgid ""
+"Generates a [PoolByteArray] of cryptographically secure random bytes with "
+"given [code]size[/code]."
+msgstr ""
+
+#: doc/classes/Crypto.xml:80
+msgid ""
+"Generates an RSA [CryptoKey] that can be used for creating self-signed "
+"certificates and passed to [method StreamPeerSSL.accept_stream]."
+msgstr ""
+
+#: doc/classes/Crypto.xml:90
+msgid ""
+"Generates a self-signed [X509Certificate] from the given [CryptoKey] and "
+"[code]issuer_name[/code]. The certificate validity will be defined by "
+"[code]not_before[/code] and [code]not_after[/code] (first valid date and "
+"last valid date). The [code]issuer_name[/code] must contain at least \"CN="
+"\" (common name, i.e. the domain name), \"O=\" (organization, i.e. your "
+"company name), \"C=\" (country, i.e. 2 lettered ISO-3166 code of the country "
+"the organization is based in).\n"
+"A small example to generate an RSA key and a X509 self-signed certificate.\n"
+"[codeblock]\n"
+"var crypto = Crypto.new()\n"
+"# Generate 4096 bits RSA key.\n"
+"var key = crypto.generate_rsa(4096)\n"
+"# Generate self-signed certificate using the given key.\n"
+"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A "
+"Game Company,C=IT\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Crypto.xml:107
+msgid ""
+"Generates an [url=https://en.wikipedia.org/wiki/HMAC]HMAC[/url] digest of "
+"[code]msg[/code] using [code]key[/code]. The [code]hash_type[/code] "
+"parameter is the hashing algorithm that is used for the inner and outer "
+"hashes.\n"
+"Currently, only [constant HashingContext.HASH_SHA256] and [constant "
+"HashingContext.HASH_SHA1] are supported."
+msgstr ""
+
+#: doc/classes/Crypto.xml:117
+msgid ""
+"Sign a given [code]hash[/code] of type [code]hash_type[/code] with the "
+"provided private [code]key[/code]."
+msgstr ""
+
+#: doc/classes/Crypto.xml:127
+msgid ""
+"Verify that a given [code]signature[/code] for [code]hash[/code] of type "
+"[code]hash_type[/code] against the provided public [code]key[/code]."
+msgstr ""
+
+#: doc/classes/CryptoKey.xml:4
+msgid "A cryptographic key (RSA)."
+msgstr ""
+
+#: doc/classes/CryptoKey.xml:7
+msgid ""
+"The CryptoKey class represents a cryptographic key. Keys can be loaded and "
+"saved like any other [Resource].\n"
+"They can be used to generate a self-signed [X509Certificate] via [method "
+"Crypto.generate_self_signed_certificate] and as private key in [method "
+"StreamPeerSSL.accept_stream] along with the appropriate certificate.\n"
+"[b]Note:[/b] Not available in HTML5 exports."
+msgstr ""
+
+#: doc/classes/CryptoKey.xml:17
+msgid ""
+"Return [code]true[/code] if this CryptoKey only has the public part, and not "
+"the private one."
+msgstr ""
+
+#: doc/classes/CryptoKey.xml:25
+msgid ""
+"Loads a key from [code]path[/code]. If [code]public_only[/code] is "
+"[code]true[/code], only the public key will be loaded.\n"
+"[b]Note:[/b] [code]path[/code] should be a \"*.pub\" file if "
+"[code]public_only[/code] is [code]true[/code], a \"*.key\" file otherwise."
+msgstr ""
+
+#: doc/classes/CryptoKey.xml:34
+msgid ""
+"Loads a key from the given [code]string[/code]. If [code]public_only[/code] "
+"is [code]true[/code], only the public key will be loaded."
+msgstr ""
+
+#: doc/classes/CryptoKey.xml:42
+msgid ""
+"Saves a key to the given [code]path[/code]. If [code]public_only[/code] is "
+"[code]true[/code], only the public key will be saved.\n"
+"[b]Note:[/b] [code]path[/code] should be a \"*.pub\" file if "
+"[code]public_only[/code] is [code]true[/code], a \"*.key\" file otherwise."
+msgstr ""
+
+#: doc/classes/CryptoKey.xml:50
+msgid ""
+"Returns a string containing the key in PEM format. If [code]public_only[/"
+"code] is [code]true[/code], only the public key will be included."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGBox.xml:4
+msgid "A CSG Box shape."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGBox.xml:7
+msgid "This node allows you to create a box for use with the CSG system."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGBox.xml:15
+msgid "Depth of the box measured from the center of the box."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGBox.xml:18
+msgid "Height of the box measured from the center of the box."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGBox.xml:21
+msgid "The material used to render the box."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGBox.xml:24
+msgid "Width of the box measured from the center of the box."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCombiner.xml:4
+msgid "A CSG node that allows you to combine other CSG modifiers."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCombiner.xml:7
+msgid ""
+"For complex arrangements of shapes, it is sometimes needed to add structure "
+"to your CSG nodes. The CSGCombiner node allows you to create this structure. "
+"The node encapsulates the result of the CSG operations of its children. In "
+"this way, it is possible to do operations on one set of shapes that are "
+"children of one CSGCombiner node, and a set of separate operations on a "
+"second set of shapes that are children of a second CSGCombiner node, and "
+"then do an operation that takes the two end results as its input to create "
+"the final shape."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCylinder.xml:4
+msgid "A CSG Cylinder shape."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCylinder.xml:7
+msgid ""
+"This node allows you to create a cylinder (or cone) for use with the CSG "
+"system."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCylinder.xml:15
+msgid ""
+"If [code]true[/code] a cone is created, the [member radius] will only apply "
+"to one side."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCylinder.xml:18
+msgid "The height of the cylinder."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCylinder.xml:21
+msgid "The material used to render the cylinder."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCylinder.xml:24
+msgid "The radius of the cylinder."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCylinder.xml:27
+msgid ""
+"The number of sides of the cylinder, the higher this number the more detail "
+"there will be in the cylinder."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGCylinder.xml:30
+msgid ""
+"If [code]true[/code] the normals of the cylinder are set to give a smooth "
+"effect making the cylinder seem rounded. If [code]false[/code] the cylinder "
+"will have a flat shaded look."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGMesh.xml:4
+msgid "A CSG Mesh shape that uses a mesh resource."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGMesh.xml:7
+msgid ""
+"This CSG node allows you to use any mesh resource as a CSG shape, provided "
+"it is closed, does not self-intersect, does not contain internal faces and "
+"has no edges that connect to more then two faces."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGMesh.xml:15
+msgid "The [Material] used in drawing the CSG shape."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGMesh.xml:18
+msgid ""
+"The [Mesh] resource to use as a CSG shape.\n"
+"[b]Note:[/b] When using an [ArrayMesh], avoid meshes with vertex normals "
+"unless a flat shader is required. By default, CSGMesh will ignore the mesh's "
+"vertex normals and use a smooth shader calculated using the faces' normals. "
+"If a flat shader is required, ensure that all faces' vertex normals are "
+"parallel."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:4
+msgid "Extrudes a 2D polygon shape to create a 3D mesh."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:7
+msgid ""
+"An array of 2D points is extruded to quickly and easily create a variety of "
+"3D meshes."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:15
+msgid ""
+"When [member mode] is [constant MODE_DEPTH], the depth of the extrusion."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:18
+msgid ""
+"Material to use for the resulting mesh. The UV maps the top half of the "
+"material to the extruded shape (U along the the length of the extrusions and "
+"V around the outline of the [member polygon]), the bottom-left quarter to "
+"the front end face, and the bottom-right quarter to the back end face."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:21
+msgid "The [member mode] used to extrude the [member polygon]."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:24
+msgid ""
+"When [member mode] is [constant MODE_PATH], by default, the top half of the "
+"[member material] is stretched along the entire length of the extruded "
+"shape. If [code]false[/code] the top half of the material is repeated every "
+"step of the extrusion."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:27
+msgid ""
+"When [member mode] is [constant MODE_PATH], the path interval or ratio of "
+"path points to extrusions."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:30
+msgid ""
+"When [member mode] is [constant MODE_PATH], this will determine if the "
+"interval should be by distance ([constant PATH_INTERVAL_DISTANCE]) or "
+"subdivision fractions ([constant PATH_INTERVAL_SUBDIVIDE])."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:33
+msgid ""
+"When [member mode] is [constant MODE_PATH], if [code]true[/code] the ends of "
+"the path are joined, by adding an extrusion between the last and first "
+"points of the path."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:36
+msgid ""
+"When [member mode] is [constant MODE_PATH], if [code]true[/code] the "
+"[Transform] of the [CSGPolygon] is used as the starting point for the "
+"extrusions, not the [Transform] of the [member path_node]."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:39
+msgid ""
+"When [member mode] is [constant MODE_PATH], the location of the [Path] "
+"object used to extrude the [member polygon]."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:42
+msgid ""
+"When [member mode] is [constant MODE_PATH], the [enum PathRotation] method "
+"used to rotate the [member polygon] as it is extruded."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:45
+msgid ""
+"When [member mode] is [constant MODE_PATH], extrusions that are less than "
+"this angle, will be merged together to reduce polygon count."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:48
+msgid ""
+"When [member mode] is [constant MODE_PATH], this is the distance along the "
+"path, in meters, the texture coordinates will tile. When set to 0, texture "
+"coordinates will match geometry exactly with no tiling."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:51
+msgid "The point array that defines the 2D polygon that is extruded."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:54
+msgid "If [code]true[/code], applies smooth shading to the extrusions."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:57
+msgid ""
+"When [member mode] is [constant MODE_SPIN], the total number of degrees the "
+"[member polygon] is rotated when extruding."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:60
+msgid ""
+"When [member mode] is [constant MODE_SPIN], the number of extrusions made."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:65
+msgid "The [member polygon] shape is extruded along the negative Z axis."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:68
+msgid ""
+"The [member polygon] shape is extruded by rotating it around the Y axis."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:71
+msgid ""
+"The [member polygon] shape is extruded along the [Path] specified in [member "
+"path_node]."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:74
+msgid ""
+"The [member polygon] shape is not rotated.\n"
+"[b]Note:[/b] Requires the path's Z coordinates to continually decrease to "
+"ensure viable shapes."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:78
+msgid ""
+"The [member polygon] shape is rotated along the path, but it is not rotated "
+"around the path axis.\n"
+"[b]Note:[/b] Requires the path's Z coordinates to continually decrease to "
+"ensure viable shapes."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:82
+msgid ""
+"The [member polygon] shape follows the path and its rotations around the "
+"path axis."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:85
+msgid ""
+"When [member mode] is set to [constant MODE_PATH], [member path_interval] "
+"will determine the distance, in meters, each interval of the path will "
+"extrude."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPolygon.xml:88
+msgid ""
+"When [member mode] is set to [constant MODE_PATH], [member path_interval] "
+"will subdivide the polygons along the path."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPrimitive.xml:4
+msgid "Base class for CSG primitives."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPrimitive.xml:7
+msgid ""
+"Parent class for various CSG primitives. It contains code and functionality "
+"that is common between them. It cannot be used directly. Instead use one of "
+"the various classes that inherit from it."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGPrimitive.xml:15
+msgid "Invert the faces of the mesh."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:4
+msgid "The CSG base class."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:7
+msgid ""
+"This is the CSG base class that provides CSG operation support to the "
+"various CSG nodes in Godot."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:16
+#: modules/csg/doc_classes/CSGShape.xml:23 doc/classes/RayCast2D.xml:60
+#: doc/classes/SoftBody.xml:30 doc/classes/SoftBody.xml:37
+msgid "Returns an individual bit on the collision mask."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:29
+msgid ""
+"Returns an [Array] with two elements, the first is the [Transform] of this "
+"node and the second is the root [Mesh] of this node. Only works when this "
+"node is the root shape."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:35
+msgid ""
+"Returns [code]true[/code] if this is a root shape and is thus the object "
+"that is rendered."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:43 doc/classes/SoftBody.xml:66
+msgid ""
+"Sets individual bits on the layer mask. Use this if you only need to change "
+"one layer's value."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:51 doc/classes/SoftBody.xml:74
+msgid ""
+"Sets individual bits on the collision mask. Use this if you only need to "
+"change one layer's value."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:57
+msgid ""
+"Calculate tangents for the CSG shape which allows the use of normal maps. "
+"This is only applied on the root shape, this setting is ignored on any child."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:60
+msgid ""
+"The physics layers this area is in.\n"
+"Collidable objects can exist in any of 32 different layers. These layers "
+"work like a tagging system, and are not visual. A collidable can use these "
+"layers to select with which objects it can collide, using the collision_mask "
+"property.\n"
+"A contact is detected if object A is in any of the layers that object B "
+"scans, or object B is in any layer scanned by object A. See [url=https://"
+"docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
+"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
+"documentation for more information."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:65
+msgid ""
+"The physics layers this CSG shape scans for collisions. See [url=https://"
+"docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
+"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
+"documentation for more information."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:68
+msgid ""
+"The operation that is performed on this shape. This is ignored for the first "
+"CSG child node as the operation is between this node and the previous child "
+"of this nodes parent."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:71
+msgid ""
+"Snap makes the mesh snap to a given distance so that the faces of two meshes "
+"can be perfectly aligned. A lower value results in greater precision but may "
+"be harder to adjust."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:74
+msgid ""
+"Adds a collision shape to the physics engine for our CSG shape. This will "
+"always act like a static body. Note that the collision shape is still active "
+"even if the CSG shape itself is hidden."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:79
+msgid ""
+"Geometry of both primitives is merged, intersecting geometry is removed."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:82
+msgid "Only intersecting geometry remains, the rest is removed."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGShape.xml:85
+msgid ""
+"The second shape is subtracted from the first, leaving a dent with its shape."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGSphere.xml:4
+msgid "A CSG Sphere shape."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGSphere.xml:7
+msgid "This node allows you to create a sphere for use with the CSG system."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGSphere.xml:15
+msgid "The material used to render the sphere."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGSphere.xml:18
+msgid "Number of vertical slices for the sphere."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGSphere.xml:21
+msgid "Radius of the sphere."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGSphere.xml:24
+msgid "Number of horizontal slices for the sphere."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGSphere.xml:27
+msgid ""
+"If [code]true[/code] the normals of the sphere are set to give a smooth "
+"effect making the sphere seem rounded. If [code]false[/code] the sphere will "
+"have a flat shaded look."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGTorus.xml:4
+msgid "A CSG Torus shape."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGTorus.xml:7
+msgid "This node allows you to create a torus for use with the CSG system."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGTorus.xml:15
+msgid "The inner radius of the torus."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGTorus.xml:18
+msgid "The material used to render the torus."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGTorus.xml:21
+msgid "The outer radius of the torus."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGTorus.xml:24
+msgid "The number of edges each ring of the torus is constructed of."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGTorus.xml:27
+msgid "The number of slices the torus is constructed of."
+msgstr ""
+
+#: modules/csg/doc_classes/CSGTorus.xml:30
+msgid ""
+"If [code]true[/code] the normals of the torus are set to give a smooth "
+"effect making the torus seem rounded. If [code]false[/code] the torus will "
+"have a flat shaded look."
+msgstr ""
+
+#: modules/mono/doc_classes/CSharpScript.xml:4
+msgid ""
+"A script implemented in the C# programming language (Mono-enabled builds "
+"only)."
+msgstr ""
+
+#: modules/mono/doc_classes/CSharpScript.xml:7
+msgid ""
+"This class represents a C# script. It is the C# equivalent of the [GDScript] "
+"class and is only available in Mono-enabled Godot builds.\n"
+"See also [GodotSharp]."
+msgstr ""
+
+#: modules/mono/doc_classes/CSharpScript.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/c_sharp/index."
+"html"
+msgstr ""
+
+#: modules/mono/doc_classes/CSharpScript.xml:18
+#: modules/gdnative/doc_classes/PluginScript.xml:13
+msgid "Returns a new instance of the script."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:4
+msgid "A CubeMap is a 6-sided 3D texture."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:7
+msgid ""
+"A 6-sided 3D texture typically used for faking reflections. It can be used "
+"to make an object look as if it's reflecting its surroundings. This usually "
+"delivers much better performance than other reflection methods."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:15
+msgid "Returns the [CubeMap]'s height."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:22
+msgid ""
+"Returns an [Image] for a side of the [CubeMap] using one of the [enum Side] "
+"constants."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:28
+msgid "Returns the [CubeMap]'s width."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:36
+msgid ""
+"Sets an [Image] for a side of the [CubeMap] using one of the [enum Side] "
+"constants."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:42
+msgid ""
+"The render flags for the [CubeMap]. See the [enum Flags] constants for "
+"details."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:45
+msgid ""
+"The lossy storage quality of the [CubeMap] if the storage mode is set to "
+"[constant STORAGE_COMPRESS_LOSSY]."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:48
+msgid "The [CubeMap]'s storage mode. See [enum Storage] constants."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:53
+msgid "Store the [CubeMap] without any compression."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:56
+msgid "Store the [CubeMap] with strong compression that reduces image quality."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:59
+msgid ""
+"Store the [CubeMap] with moderate compression that doesn't reduce image "
+"quality."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:62
+msgid "Identifier for the left face of the [CubeMap]."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:65
+msgid "Identifier for the right face of the [CubeMap]."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:68
+msgid "Identifier for the bottom face of the [CubeMap]."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:71
+msgid "Identifier for the top face of the [CubeMap]."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:74
+msgid "Identifier for the front face of the [CubeMap]."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:77
+msgid "Identifier for the back face of the [CubeMap]."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:80
+msgid "Generate mipmaps, to enable smooth zooming out of the texture."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:83
+msgid "Repeat (instead of clamp to edge)."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:86
+msgid "Turn on magnifying filter, to enable smooth zooming in of the texture."
+msgstr ""
+
+#: doc/classes/CubeMap.xml:89
+msgid "Default flags. Generate mipmaps, repeat, and filter are enabled."
+msgstr ""
+
+#: doc/classes/CubeMesh.xml:4
+msgid "Generate an axis-aligned cuboid [PrimitiveMesh]."
+msgstr ""
+
+#: doc/classes/CubeMesh.xml:7
+msgid ""
+"Generate an axis-aligned cuboid [PrimitiveMesh].\n"
+"The cube's UV layout is arranged in a 3×2 layout that allows texturing each "
+"face individually. To apply the same texture on all faces, change the "
+"material's UV property to [code]Vector3(3, 2, 1)[/code].\n"
+"[b]Note:[/b] When using a large textured [CubeMesh] (e.g. as a floor), you "
+"may stumble upon UV jittering issues depending on the camera angle. To solve "
+"this, increase [member subdivide_depth], [member subdivide_height] and "
+"[member subdivide_width] until you no longer notice UV jittering."
+msgstr ""
+
+#: doc/classes/CubeMesh.xml:17
+msgid "Size of the cuboid mesh."
+msgstr ""
+
+#: doc/classes/CubeMesh.xml:20
+msgid "Number of extra edge loops inserted along the Z axis."
+msgstr ""
+
+#: doc/classes/CubeMesh.xml:23
+msgid "Number of extra edge loops inserted along the Y axis."
+msgstr ""
+
+#: doc/classes/CubeMesh.xml:26
+msgid "Number of extra edge loops inserted along the X axis."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:4
+msgid "Parent of all nodes that can be culled by the Portal system."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:7
+msgid ""
+"Provides common functionality to nodes that can be culled by the [Portal] "
+"system.\n"
+"[code]Static[/code] and [code]Dynamic[/code] objects are the most "
+"efficiently managed objects in the system, but there are some caveats. They "
+"are expected to be present initially when [Room]s are converted using the "
+"[RoomManager] [code]rooms_convert[/code] function, and their lifetime should "
+"be the same as the game level (i.e. present until you call "
+"[code]rooms_clear[/code] on the [RoomManager]. Although you shouldn't "
+"create / delete these objects during gameplay, you can manage their "
+"visibility with the standard [code]hide[/code] and [code]show[/code] "
+"commands.\n"
+"[code]Roaming[/code] objects on the other hand, require extra processing to "
+"keep track of which [Room] they are within. This enables them to be culled "
+"effectively, wherever they are.\n"
+"[code]Global[/code] objects are not culled by the portal system, and use "
+"view frustum culling only.\n"
+"Objects that are not [code]Static[/code] or [code]Dynamic[/code] can be "
+"freely created and deleted during the lifetime of the game level."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:19
+msgid ""
+"When set to [code]0[/code], [CullInstance]s will be autoplaced in the [Room] "
+"with the highest priority.\n"
+"When set to a value other than [code]0[/code], the system will attempt to "
+"autoplace in a [Room] with the [code]autoplace_priority[/code], if it is "
+"present.\n"
+"This can be used to control autoplacement of building exteriors in an outer "
+"[RoomGroup]."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:24
+msgid ""
+"When a manual bound has not been explicitly specified for a [Room], the "
+"convex hull bound will be estimated from the geometry of the objects within "
+"the room. This setting determines whether the geometry of an object is "
+"included in this estimate of the room bound.\n"
+"[b]Note:[/b] This setting is only relevant when the object is set to "
+"[code]PORTAL_MODE_STATIC[/code] or [code]PORTAL_MODE_DYNAMIC[/code], and for "
+"[Portal]s."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:28
+msgid ""
+"When using [Room]s and [Portal]s, this specifies how the [CullInstance] is "
+"processed in the system."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:33
+msgid ""
+"Use for instances within [Room]s that will [b]not move[/b] - e.g. walls, "
+"floors.\n"
+"[b]Note:[/b] If you attempt to delete a [code]PORTAL_MODE_STATIC[/code] "
+"instance while the room graph is loaded (converted), it will unload the room "
+"graph and deactivate portal culling. This is because the [b]room graph[/b] "
+"data has been invalidated. You will need to reconvert the rooms using the "
+"[RoomManager] to activate the system again."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:37
+msgid ""
+"Use for instances within rooms that will move but [b]not change room[/b] - e."
+"g. moving platforms.\n"
+"[b]Note:[/b] If you attempt to delete a [code]PORTAL_MODE_DYNAMIC[/code] "
+"instance while the room graph is loaded (converted), it will unload the room "
+"graph and deactivate portal culling. This is because the [b]room graph[/b] "
+"data has been invalidated. You will need to reconvert the rooms using the "
+"[RoomManager] to activate the system again."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:41
+msgid "Use for instances that will move [b]between[/b] [Room]s - e.g. players."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:44
+msgid ""
+"Use for instances that will be frustum culled only - e.g. first person "
+"weapon, debug."
+msgstr ""
+
+#: doc/classes/CullInstance.xml:47
+msgid ""
+"Use for instances that will not be shown at all - e.g. [b]manual room "
+"bounds[/b] (specified by prefix [i]'Bound_'[/i])."
+msgstr ""
+
+#: doc/classes/Curve.xml:4
+msgid "A mathematic curve."
+msgstr ""
+
+#: doc/classes/Curve.xml:7
+msgid ""
+"A curve that can be saved and re-used for other objects. By default, it "
+"ranges between [code]0[/code] and [code]1[/code] on the Y axis and positions "
+"points relative to the [code]0.5[/code] Y position."
+msgstr ""
+
+#: doc/classes/Curve.xml:20
+msgid ""
+"Adds a point to the curve. For each side, if the [code]*_mode[/code] is "
+"[constant TANGENT_LINEAR], the [code]*_tangent[/code] angle (in degrees) "
+"uses the slope of the curve halfway to the adjacent point. Allows custom "
+"assignments to the [code]*_tangent[/code] angle if [code]*_mode[/code] is "
+"set to [constant TANGENT_FREE]."
+msgstr ""
+
+#: doc/classes/Curve.xml:26
+msgid "Recomputes the baked cache of points for the curve."
+msgstr ""
+
+#: doc/classes/Curve.xml:32
+msgid ""
+"Removes points that are closer than [code]CMP_EPSILON[/code] (0.00001) units "
+"to their neighbor on the curve."
+msgstr ""
+
+#: doc/classes/Curve.xml:38 doc/classes/Curve2D.xml:27
+#: doc/classes/Curve3D.xml:27
+msgid "Removes all points from the curve."
+msgstr ""
+
+#: doc/classes/Curve.xml:44 doc/classes/Curve2D.xml:61
+#: doc/classes/Curve3D.xml:74
+msgid "Returns the number of points describing the curve."
+msgstr ""
+
+#: doc/classes/Curve.xml:51
+msgid ""
+"Returns the left [enum TangentMode] for the point at [code]index[/code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:58
+msgid ""
+"Returns the left tangent angle (in degrees) for the point at [code]index[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:65
+msgid "Returns the curve coordinates for the point at [code]index[/code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:72
+msgid ""
+"Returns the right [enum TangentMode] for the point at [code]index[/code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:79
+msgid ""
+"Returns the right tangent angle (in degrees) for the point at [code]index[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:86
+msgid ""
+"Returns the Y value for the point that would exist at the X position "
+"[code]offset[/code] along the curve."
+msgstr ""
+
+#: doc/classes/Curve.xml:93
+msgid ""
+"Returns the Y value for the point that would exist at the X position "
+"[code]offset[/code] along the curve using the baked cache. Bakes the curve's "
+"points if not already baked."
+msgstr ""
+
+#: doc/classes/Curve.xml:100
+msgid "Removes the point at [code]index[/code] from the curve."
+msgstr ""
+
+#: doc/classes/Curve.xml:108
+msgid ""
+"Sets the left [enum TangentMode] for the point at [code]index[/code] to "
+"[code]mode[/code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:116
+msgid ""
+"Sets the left tangent angle for the point at [code]index[/code] to "
+"[code]tangent[/code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:124
+msgid "Sets the offset from [code]0.5[/code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:132
+msgid ""
+"Sets the right [enum TangentMode] for the point at [code]index[/code] to "
+"[code]mode[/code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:140
+msgid ""
+"Sets the right tangent angle for the point at [code]index[/code] to "
+"[code]tangent[/code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:148
+msgid ""
+"Assigns the vertical position [code]y[/code] to the point at [code]index[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Curve.xml:154
+msgid "The number of points to include in the baked (i.e. cached) curve data."
+msgstr ""
+
+#: doc/classes/Curve.xml:157
+msgid "The maximum value the curve can reach."
+msgstr ""
+
+#: doc/classes/Curve.xml:160
+msgid "The minimum value the curve can reach."
+msgstr ""
+
+#: doc/classes/Curve.xml:166
+msgid "Emitted when [member max_value] or [member min_value] is changed."
+msgstr ""
+
+#: doc/classes/Curve.xml:172
+msgid "The tangent on this side of the point is user-defined."
+msgstr ""
+
+#: doc/classes/Curve.xml:175
+msgid ""
+"The curve calculates the tangent on this side of the point as the slope "
+"halfway towards the adjacent point."
+msgstr ""
+
+#: doc/classes/Curve.xml:178
+msgid "The total number of available tangent modes."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:4
+msgid "Describes a Bézier curve in 2D space."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:7
+msgid ""
+"This class describes a Bézier curve in 2D space. It is mainly used to give a "
+"shape to a [Path2D], but can be manually sampled for other purposes.\n"
+"It keeps a cache of precalculated points along the curve, to speed up "
+"further calculations."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:20 doc/classes/Curve3D.xml:20
+msgid ""
+"Adds a point to a curve at [code]position[/code], with control points "
+"[code]in[/code] and [code]out[/code].\n"
+"If [code]at_position[/code] is given, the point is inserted before the point "
+"number [code]at_position[/code], moving that point (and every point after) "
+"after the inserted point. If [code]at_position[/code] is not given, or is an "
+"illegal value ([code]at_position <0[/code] or [code]at_position >= [method "
+"get_point_count][/code]), the point will be appended at the end of the point "
+"list."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:33 doc/classes/Curve3D.xml:33
+msgid ""
+"Returns the total length of the curve, based on the cached points. Given "
+"enough density (see [member bake_interval]), it should be approximate enough."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:39
+msgid "Returns the cache of points as a [PoolVector2Array]."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:46
+msgid ""
+"Returns the closest offset to [code]to_point[/code]. This offset is meant to "
+"be used in [method interpolate_baked].\n"
+"[code]to_point[/code] must be in this curve's local space."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:54 doc/classes/Curve3D.xml:67
+msgid ""
+"Returns the closest baked point (in curve's local space) to [code]to_point[/"
+"code].\n"
+"[code]to_point[/code] must be in this curve's local space."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:68
+msgid ""
+"Returns the position of the control point leading to the vertex [code]idx[/"
+"code]. The returned position is relative to the vertex [code]idx[/code]. If "
+"the index is out of bounds, the function sends an error to the console, and "
+"returns [code](0, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:75
+msgid ""
+"Returns the position of the control point leading out of the vertex "
+"[code]idx[/code]. The returned position is relative to the vertex [code]idx[/"
+"code]. If the index is out of bounds, the function sends an error to the "
+"console, and returns [code](0, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:82
+msgid ""
+"Returns the position of the vertex [code]idx[/code]. If the index is out of "
+"bounds, the function sends an error to the console, and returns [code](0, 0)"
+"[/code]."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:90
+msgid ""
+"Returns the position between the vertex [code]idx[/code] and the vertex "
+"[code]idx + 1[/code], where [code]t[/code] controls if the point is the "
+"first vertex ([code]t = 0.0[/code]), the last vertex ([code]t = 1.0[/code]), "
+"or in between. Values of [code]t[/code] outside the range ([code]0.0 >= t "
+"<=1[/code]) give strange, but predictable results.\n"
+"If [code]idx[/code] is out of bounds it is truncated to the first or last "
+"vertex, and [code]t[/code] is ignored. If the curve has no points, the "
+"function sends an error to the console, and returns [code](0, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:99
+msgid ""
+"Returns a point within the curve at position [code]offset[/code], where "
+"[code]offset[/code] is measured as a pixel distance along the curve.\n"
+"To do that, it finds the two cached points where the [code]offset[/code] "
+"lies between, then interpolates the values. This interpolation is cubic if "
+"[code]cubic[/code] is set to [code]true[/code], or linear if set to "
+"[code]false[/code].\n"
+"Cubic interpolation tends to follow the curves better, but linear is faster "
+"(and often, precise enough)."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:108 doc/classes/Curve3D.xml:138
+msgid ""
+"Returns the position at the vertex [code]fofs[/code]. It calls [method "
+"interpolate] using the integer part of [code]fofs[/code] as [code]idx[/"
+"code], and its fractional part as [code]t[/code]."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:115 doc/classes/Curve3D.xml:145
+msgid ""
+"Deletes the point [code]idx[/code] from the curve. Sends an error to the "
+"console if [code]idx[/code] is out of bounds."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:123 doc/classes/Curve3D.xml:153
+msgid ""
+"Sets the position of the control point leading to the vertex [code]idx[/"
+"code]. If the index is out of bounds, the function sends an error to the "
+"console. The position is relative to the vertex."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:131 doc/classes/Curve3D.xml:161
+msgid ""
+"Sets the position of the control point leading out of the vertex [code]idx[/"
+"code]. If the index is out of bounds, the function sends an error to the "
+"console. The position is relative to the vertex."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:139 doc/classes/Curve3D.xml:169
+msgid ""
+"Sets the position for the vertex [code]idx[/code]. If the index is out of "
+"bounds, the function sends an error to the console."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:147 doc/classes/Curve3D.xml:186
+msgid ""
+"Returns a list of points along the curve, with a curvature controlled point "
+"density. That is, the curvier parts will have more points than the "
+"straighter parts.\n"
+"This approximation makes straight segments between each point, then "
+"subdivides those segments until the resulting shape is similar enough.\n"
+"[code]max_stages[/code] controls how many subdivisions a curve segment may "
+"face before it is considered approximate enough. Each subdivision splits the "
+"segment in half, so the default 5 stages may mean up to 32 subdivisions per "
+"curve segment. Increase with care!\n"
+"[code]tolerance_degrees[/code] controls how many degrees the midpoint of a "
+"segment may deviate from the real curve, before the segment has to be "
+"subdivided."
+msgstr ""
+
+#: doc/classes/Curve2D.xml:156
+msgid ""
+"The distance in pixels between two adjacent cached points. Changing it "
+"forces the cache to be recomputed the next time the [method "
+"get_baked_points] or [method get_baked_length] function is called. The "
+"smaller the distance, the more points in the cache and the more memory it "
+"will consume, so use with care."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:4
+msgid "Describes a Bézier curve in 3D space."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:7
+msgid ""
+"This class describes a Bézier curve in 3D space. It is mainly used to give a "
+"shape to a [Path], but can be manually sampled for other purposes.\n"
+"It keeps a cache of precalculated points along the curve, to speed up "
+"further calculations."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:39
+msgid "Returns the cache of points as a [PoolVector3Array]."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:45
+msgid "Returns the cache of tilts as a [PoolRealArray]."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:51
+msgid ""
+"Returns the cache of up vectors as a [PoolVector3Array].\n"
+"If [member up_vector_enabled] is [code]false[/code], the cache will be empty."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:59
+msgid ""
+"Returns the closest offset to [code]to_point[/code]. This offset is meant to "
+"be used in [method interpolate_baked] or [method "
+"interpolate_baked_up_vector].\n"
+"[code]to_point[/code] must be in this curve's local space."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:81
+msgid ""
+"Returns the position of the control point leading to the vertex [code]idx[/"
+"code]. The returned position is relative to the vertex [code]idx[/code]. If "
+"the index is out of bounds, the function sends an error to the console, and "
+"returns [code](0, 0, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:88
+msgid ""
+"Returns the position of the control point leading out of the vertex "
+"[code]idx[/code]. The returned position is relative to the vertex [code]idx[/"
+"code]. If the index is out of bounds, the function sends an error to the "
+"console, and returns [code](0, 0, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:95
+msgid ""
+"Returns the position of the vertex [code]idx[/code]. If the index is out of "
+"bounds, the function sends an error to the console, and returns [code](0, 0, "
+"0)[/code]."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:102
+msgid ""
+"Returns the tilt angle in radians for the point [code]idx[/code]. If the "
+"index is out of bounds, the function sends an error to the console, and "
+"returns [code]0[/code]."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:110
+msgid ""
+"Returns the position between the vertex [code]idx[/code] and the vertex "
+"[code]idx + 1[/code], where [code]t[/code] controls if the point is the "
+"first vertex ([code]t = 0.0[/code]), the last vertex ([code]t = 1.0[/code]), "
+"or in between. Values of [code]t[/code] outside the range ([code]0.0 >= t "
+"<=1[/code]) give strange, but predictable results.\n"
+"If [code]idx[/code] is out of bounds it is truncated to the first or last "
+"vertex, and [code]t[/code] is ignored. If the curve has no points, the "
+"function sends an error to the console, and returns [code](0, 0, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:119
+msgid ""
+"Returns a point within the curve at position [code]offset[/code], where "
+"[code]offset[/code] is measured as a distance in 3D units along the curve.\n"
+"To do that, it finds the two cached points where the [code]offset[/code] "
+"lies between, then interpolates the values. This interpolation is cubic if "
+"[code]cubic[/code] is set to [code]true[/code], or linear if set to "
+"[code]false[/code].\n"
+"Cubic interpolation tends to follow the curves better, but linear is faster "
+"(and often, precise enough)."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:129
+msgid ""
+"Returns an up vector within the curve at position [code]offset[/code], where "
+"[code]offset[/code] is measured as a distance in 3D units along the curve.\n"
+"To do that, it finds the two cached up vectors where the [code]offset[/code] "
+"lies between, then interpolates the values. If [code]apply_tilt[/code] is "
+"[code]true[/code], an interpolated tilt is applied to the interpolated up "
+"vector.\n"
+"If the curve has no up vectors, the function sends an error to the console, "
+"and returns [code](0, 1, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:177
+msgid ""
+"Sets the tilt angle in radians for the point [code]idx[/code]. If the index "
+"is out of bounds, the function sends an error to the console.\n"
+"The tilt controls the rotation along the look-at axis an object traveling "
+"the path would have. In the case of a curve controlling a [PathFollow], this "
+"tilt is an offset over the natural tilt the [PathFollow] calculates."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:195
+msgid ""
+"The distance in meters between two adjacent cached points. Changing it "
+"forces the cache to be recomputed the next time the [method "
+"get_baked_points] or [method get_baked_length] function is called. The "
+"smaller the distance, the more points in the cache and the more memory it "
+"will consume, so use with care."
+msgstr ""
+
+#: doc/classes/Curve3D.xml:198
+msgid ""
+"If [code]true[/code], the curve will bake up vectors used for orientation. "
+"This is used when [member PathFollow.rotation_mode] is set to [constant "
+"PathFollow.ROTATION_ORIENTED]. Changing it forces the cache to be recomputed."
+msgstr ""
+
+#: doc/classes/CurveTexture.xml:4
+msgid "A texture that shows a curve."
+msgstr ""
+
+#: doc/classes/CurveTexture.xml:7
+msgid ""
+"Renders a given [Curve] provided to it. Simplifies the task of drawing "
+"curves and/or saving them as image files."
+msgstr ""
+
+#: doc/classes/CurveTexture.xml:15
+msgid "The [code]curve[/code] rendered onto the texture."
+msgstr ""
+
+#: doc/classes/CurveTexture.xml:18
+msgid "The width of the texture."
+msgstr ""
+
+#: doc/classes/CylinderMesh.xml:4
+msgid "Class representing a cylindrical [PrimitiveMesh]."
+msgstr ""
+
+#: doc/classes/CylinderMesh.xml:7
+msgid ""
+"Class representing a cylindrical [PrimitiveMesh]. This class can be used to "
+"create cones by setting either the [member top_radius] or [member "
+"bottom_radius] properties to [code]0.0[/code]."
+msgstr ""
+
+#: doc/classes/CylinderMesh.xml:15
+msgid ""
+"Bottom radius of the cylinder. If set to [code]0.0[/code], the bottom faces "
+"will not be generated, resulting in a conic shape."
+msgstr ""
+
+#: doc/classes/CylinderMesh.xml:18
+msgid "Full height of the cylinder."
+msgstr ""
+
+#: doc/classes/CylinderMesh.xml:21
+msgid ""
+"Number of radial segments on the cylinder. Higher values result in a more "
+"detailed cylinder/cone at the cost of performance."
+msgstr ""
+
+#: doc/classes/CylinderMesh.xml:24
+msgid ""
+"Number of edge rings along the height of the cylinder. Changing [member "
+"rings] does not have any visual impact unless a shader or procedural mesh "
+"tool is used to alter the vertex data. Higher values result in more "
+"subdivisions, which can be used to create smoother-looking effects with "
+"shaders or procedural mesh tools (at the cost of performance). When not "
+"altering the vertex data using a shader or procedural mesh tool, [member "
+"rings] should be kept to its default value."
+msgstr ""
+
+#: doc/classes/CylinderMesh.xml:27
+msgid ""
+"Top radius of the cylinder. If set to [code]0.0[/code], the top faces will "
+"not be generated, resulting in a conic shape."
+msgstr ""
+
+#: doc/classes/CylinderShape.xml:4 doc/classes/CylinderShape.xml:7
+msgid "Cylinder shape for collisions."
+msgstr ""
+
+#: doc/classes/CylinderShape.xml:18
+msgid "The cylinder's height."
+msgstr ""
+
+#: doc/classes/CylinderShape.xml:21
+msgid "The cylinder's radius."
+msgstr ""
+
+#: doc/classes/DampedSpringJoint2D.xml:4
+msgid "Damped spring constraint for 2D physics."
+msgstr ""
+
+#: doc/classes/DampedSpringJoint2D.xml:7
+msgid ""
+"Damped spring constraint for 2D physics. This resembles a spring joint that "
+"always wants to go back to a given length."
+msgstr ""
+
+#: doc/classes/DampedSpringJoint2D.xml:15
+msgid ""
+"The spring joint's damping ratio. A value between [code]0[/code] and "
+"[code]1[/code]. When the two bodies move into different directions the "
+"system tries to align them to the spring axis again. A high [code]damping[/"
+"code] value forces the attached bodies to align faster."
+msgstr ""
+
+#: doc/classes/DampedSpringJoint2D.xml:18
+msgid ""
+"The spring joint's maximum length. The two attached bodies cannot stretch it "
+"past this value."
+msgstr ""
+
+#: doc/classes/DampedSpringJoint2D.xml:21
+msgid ""
+"When the bodies attached to the spring joint move they stretch or squash it. "
+"The joint always tries to resize towards this length."
+msgstr ""
+
+#: doc/classes/DampedSpringJoint2D.xml:24
+msgid ""
+"The higher the value, the less the bodies attached to the joint will deform "
+"it. The joint applies an opposing force to the bodies, the product of the "
+"stiffness multiplied by the size difference from its resting length."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:4
+msgid "Dictionary type."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:7
+msgid ""
+"Dictionary type. Associative container which contains values referenced by "
+"unique keys. Dictionaries are composed of pairs of keys (which must be "
+"unique) and values. Dictionaries will preserve the insertion order when "
+"adding elements, even though this may not be reflected when printing the "
+"dictionary. In other programming languages, this data structure is sometimes "
+"referred to as a hash map or associative array.\n"
+"You can define a dictionary by placing a comma-separated list of [code]key: "
+"value[/code] pairs in curly braces [code]{}[/code].\n"
+"Erasing elements while iterating over them [b]is not supported[/b] and will "
+"result in undefined behavior.\n"
+"[b]Note:[/b] Dictionaries are always passed by reference. To get a copy of a "
+"dictionary which can be modified independently of the original dictionary, "
+"use [method duplicate].\n"
+"Creating a dictionary:\n"
+"[codeblock]\n"
+"var my_dict = {} # Creates an empty dictionary.\n"
+"\n"
+"var dict_variable_key = \"Another key name\"\n"
+"var dict_variable_value = \"value2\"\n"
+"var another_dict = {\n"
+" \"Some key name\": \"value1\",\n"
+" dict_variable_key: dict_variable_value,\n"
+"}\n"
+"\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"\n"
+"# Alternative Lua-style syntax.\n"
+"# Doesn't require quotes around keys, but only string constants can be used "
+"as key names.\n"
+"# Additionally, key names must start with a letter or an underscore.\n"
+"# Here, `some_key` is a string literal, not a variable!\n"
+"another_dict = {\n"
+" some_key = 42,\n"
+"}\n"
+"[/codeblock]\n"
+"You can access a dictionary's values by referencing the appropriate key. In "
+"the above example, [code]points_dict[\"White\"][/code] will return [code]50[/"
+"code]. You can also write [code]points_dict.White[/code], which is "
+"equivalent. However, you'll have to use the bracket syntax if the key you're "
+"accessing the dictionary with isn't a fixed string (such as a number or "
+"variable).\n"
+"[codeblock]\n"
+"export(string, \"White\", \"Yellow\", \"Orange\") var my_color\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"func _ready():\n"
+" # We can't use dot syntax here as `my_color` is a variable.\n"
+" var points = points_dict[my_color]\n"
+"[/codeblock]\n"
+"In the above code, [code]points[/code] will be assigned the value that is "
+"paired with the appropriate color selected in [code]my_color[/code].\n"
+"Dictionaries can contain more complex data:\n"
+"[codeblock]\n"
+"my_dict = {\"First Array\": [1, 2, 3, 4]} # Assigns an Array to a String "
+"key.\n"
+"[/codeblock]\n"
+"To add a key to an existing dictionary, access it like an existing key and "
+"assign to it:\n"
+"[codeblock]\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"points_dict[\"Blue\"] = 150 # Add \"Blue\" as a key and assign 150 as its "
+"value.\n"
+"[/codeblock]\n"
+"Finally, dictionaries can contain different types of keys and values in the "
+"same dictionary:\n"
+"[codeblock]\n"
+"# This is a valid dictionary.\n"
+"# To access the string \"Nested value\" below, use `my_dict.sub_dict."
+"sub_key` or `my_dict[\"sub_dict\"][\"sub_key\"]`.\n"
+"# Indexing styles can be mixed and matched depending on your needs.\n"
+"var my_dict = {\n"
+" \"String Key\": 5,\n"
+" 4: [1, 2, 3],\n"
+" 7: \"Hello\",\n"
+" \"sub_dict\": {\"sub_key\": \"Nested value\"},\n"
+"}\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Unlike [Array]s, you can't compare dictionaries directly:\n"
+"[codeblock]\n"
+"array1 = [1, 2, 3]\n"
+"array2 = [1, 2, 3]\n"
+"\n"
+"func compare_arrays():\n"
+" print(array1 == array2) # Will print true.\n"
+"\n"
+"var dict1 = {\"a\": 1, \"b\": 2, \"c\": 3}\n"
+"var dict2 = {\"a\": 1, \"b\": 2, \"c\": 3}\n"
+"\n"
+"func compare_dictionaries():\n"
+" print(dict1 == dict2) # Will NOT print true.\n"
+"[/codeblock]\n"
+"You need to first calculate the dictionary's hash with [method hash] before "
+"you can compare them:\n"
+"[codeblock]\n"
+"var dict1 = {\"a\": 1, \"b\": 2, \"c\": 3}\n"
+"var dict2 = {\"a\": 1, \"b\": 2, \"c\": 3}\n"
+"\n"
+"func compare_dictionaries():\n"
+" print(dict1.hash() == dict2.hash()) # Will print true.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] When declaring a dictionary with [code]const[/code], the "
+"dictionary itself can still be mutated by defining the values of individual "
+"keys. Using [code]const[/code] will only prevent assigning the constant with "
+"another value after it was initialized."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:87
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
+"gdscript_basics.html#dictionary"
+msgstr ""
+
+#: doc/classes/Dictionary.xml:94
+msgid "Clear the dictionary, removing all key/value pairs."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:101
+msgid ""
+"Creates a copy of the dictionary, and returns it. The [code]deep[/code] "
+"parameter causes inner dictionaries and arrays to be copied recursively, but "
+"does not apply to objects."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:107
+msgid "Returns [code]true[/code] if the dictionary is empty."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:114
+msgid ""
+"Erase a dictionary key/value pair by key. Returns [code]true[/code] if the "
+"given key was present in the dictionary, [code]false[/code] otherwise.\n"
+"[b]Note:[/b] Don't erase elements while iterating over the dictionary. You "
+"can iterate over the [method keys] array instead."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:123
+msgid ""
+"Returns the current value for the specified key in the [Dictionary]. If the "
+"key does not exist, the method returns the value of the optional default "
+"argument, or [code]null[/code] if it is omitted."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:130
+msgid ""
+"Returns [code]true[/code] if the dictionary has a given key.\n"
+"[b]Note:[/b] This is equivalent to using the [code]in[/code] operator as "
+"follows:\n"
+"[codeblock]\n"
+"# Will evaluate to `true`.\n"
+"if \"godot\" in {\"godot\": \"engine\"}:\n"
+" pass\n"
+"[/codeblock]\n"
+"This method (like the [code]in[/code] operator) will evaluate to [code]true[/"
+"code] as long as the key exists, even if the associated value is [code]null[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:144
+msgid ""
+"Returns [code]true[/code] if the dictionary has all the keys in the given "
+"array."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:150
+msgid ""
+"Returns a hashed integer value representing the dictionary contents. This "
+"can be used to compare dictionaries by value:\n"
+"[codeblock]\n"
+"var dict1 = {0: 10}\n"
+"var dict2 = {0: 10}\n"
+"# The line below prints `true`, whereas it would have printed `false` if "
+"both variables were compared directly.\n"
+"print(dict1.hash() == dict2.hash())\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Dictionaries with the same keys/values but in a different order "
+"will have a different hash."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:163
+msgid "Returns the list of keys in the [Dictionary]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:169
+msgid "Returns the number of keys in the dictionary."
+msgstr ""
+
+#: doc/classes/Dictionary.xml:175
+msgid "Returns the list of values in the [Dictionary]."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:4
+msgid "Directional light from a distance, as from the Sun."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:7
+msgid ""
+"A directional light is a type of [Light] node that models an infinite number "
+"of parallel rays covering the entire scene. It is used for lights with "
+"strong intensity that are located far away from the scene to model sunlight "
+"or moonlight. The worldspace location of the DirectionalLight transform "
+"(origin) is ignored. Only the basis is used to determine light direction."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:10 doc/classes/Light.xml:10
+#: doc/classes/OmniLight.xml:11 doc/classes/SpotLight.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/3d/lights_and_shadows.html"
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:16
+msgid ""
+"Amount of extra bias for shadow splits that are far away. If self-shadowing "
+"occurs only on the splits far away, increasing this value can fix them."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:19
+msgid ""
+"If [code]true[/code], shadow detail is sacrificed in exchange for smoother "
+"transitions between splits."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:22
+msgid ""
+"Optimizes shadow rendering for detail versus movement. See [enum "
+"ShadowDepthRange]."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:25
+msgid "The maximum distance for shadow splits."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:28
+msgid "The light's shadow rendering algorithm. See [enum ShadowMode]."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:31
+msgid ""
+"Can be used to fix special cases of self shadowing when objects are "
+"perpendicular to the light."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:34
+msgid ""
+"The distance from camera to shadow split 1. Relative to [member "
+"directional_shadow_max_distance]. Only used when [member "
+"directional_shadow_mode] is [code]SHADOW_PARALLEL_2_SPLITS[/code] or "
+"[code]SHADOW_PARALLEL_4_SPLITS[/code]."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:37
+msgid ""
+"The distance from shadow split 1 to split 2. Relative to [member "
+"directional_shadow_max_distance]. Only used when [member "
+"directional_shadow_mode] is [code]SHADOW_PARALLEL_2_SPLITS[/code] or "
+"[code]SHADOW_PARALLEL_4_SPLITS[/code]."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:40
+msgid ""
+"The distance from shadow split 2 to split 3. Relative to [member "
+"directional_shadow_max_distance]. Only used when [member "
+"directional_shadow_mode] is [code]SHADOW_PARALLEL_4_SPLITS[/code]."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:46
+msgid ""
+"Renders the entire scene's shadow map from an orthogonal point of view. This "
+"is the fastest directional shadow mode. May result in blurrier shadows on "
+"close objects."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:49
+msgid ""
+"Splits the view frustum in 2 areas, each with its own shadow map. This "
+"shadow mode is a compromise between [constant SHADOW_ORTHOGONAL] and "
+"[constant SHADOW_PARALLEL_4_SPLITS] in terms of performance."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:52
+msgid ""
+"Splits the view frustum in 4 areas, each with its own shadow map. This is "
+"the slowest directional shadow mode."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:55
+msgid ""
+"Keeps the shadow stable when the camera moves, at the cost of lower "
+"effective shadow resolution."
+msgstr ""
+
+#: doc/classes/DirectionalLight.xml:58
+msgid ""
+"Tries to achieve maximum shadow resolution. May result in saw effect on "
+"shadow edges. This mode typically works best in games where the camera will "
+"often move at high speeds, such as most racing games."
+msgstr ""
+
+#: doc/classes/Directory.xml:4
+msgid "Type used to handle the filesystem."
+msgstr ""
+
+#: doc/classes/Directory.xml:7
+msgid ""
+"Directory type. It is used to manage directories and their content (not "
+"restricted to the project folder).\n"
+"When creating a new [Directory], its default opened directory will be "
+"[code]res://[/code]. This may change in the future, so it is advised to "
+"always use [method open] to initialize your [Directory] where you want to "
+"operate, with explicit error checking.\n"
+"[b]Note:[/b] Many resources types are imported (e.g. textures or sound "
+"files), and their source asset will not be included in the exported game, as "
+"only the imported version is used. Use [ResourceLoader] to access imported "
+"resources.\n"
+"Here is an example on how to iterate through the files of a directory:\n"
+"[codeblock]\n"
+"func dir_contents(path):\n"
+" var dir = Directory.new()\n"
+" if dir.open(path) == OK:\n"
+" dir.list_dir_begin()\n"
+" var file_name = dir.get_next()\n"
+" while file_name != \"\":\n"
+" if dir.current_is_dir():\n"
+" print(\"Found directory: \" + file_name)\n"
+" else:\n"
+" print(\"Found file: \" + file_name)\n"
+" file_name = dir.get_next()\n"
+" else:\n"
+" print(\"An error occurred when trying to access the path.\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Directory.xml:28 doc/classes/File.xml:28
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/filesystem."
+"html"
+msgstr ""
+
+#: doc/classes/Directory.xml:35
+msgid ""
+"Changes the currently opened directory to the one passed as an argument. The "
+"argument can be relative to the current directory (e.g. [code]newdir[/code] "
+"or [code]../newdir[/code]), or an absolute path (e.g. [code]/tmp/newdir[/"
+"code] or [code]res://somedir/newdir[/code]).\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/Directory.xml:44
+msgid ""
+"Copies the [code]from[/code] file to the [code]to[/code] destination. Both "
+"arguments should be paths to files, either relative or absolute. If the "
+"destination file exists and is not access-protected, it will be "
+"overwritten.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/Directory.xml:51
+msgid ""
+"Returns whether the current item processed with the last [method get_next] "
+"call is a directory ([code].[/code] and [code]..[/code] are considered "
+"directories)."
+msgstr ""
+
+#: doc/classes/Directory.xml:58
+msgid ""
+"Returns whether the target directory exists. The argument can be relative to "
+"the current directory, or an absolute path."
+msgstr ""
+
+#: doc/classes/Directory.xml:65
+msgid ""
+"Returns whether the target file exists. The argument can be relative to the "
+"current directory, or an absolute path."
+msgstr ""
+
+#: doc/classes/Directory.xml:71
+msgid ""
+"Returns the absolute path to the currently opened directory (e.g. "
+"[code]res://folder[/code] or [code]C:\\tmp\\folder[/code])."
+msgstr ""
+
+#: doc/classes/Directory.xml:77
+msgid ""
+"Returns the currently opened directory's drive index. See [method get_drive] "
+"to convert returned index to the name of the drive."
+msgstr ""
+
+#: doc/classes/Directory.xml:84
+msgid ""
+"On Windows, returns the name of the drive (partition) passed as an argument "
+"(e.g. [code]C:[/code]). On other platforms, or if the requested drive does "
+"not exist, the method returns an empty String."
+msgstr ""
+
+#: doc/classes/Directory.xml:90
+msgid ""
+"On Windows, returns the number of drives (partitions) mounted on the current "
+"filesystem. On other platforms, the method returns 0."
+msgstr ""
+
+#: doc/classes/Directory.xml:96
+msgid ""
+"Returns the next element (file or directory) in the current directory "
+"(including [code].[/code] and [code]..[/code], unless "
+"[code]skip_navigational[/code] was given to [method list_dir_begin]).\n"
+"The name of the file or directory is returned (and not its full path). Once "
+"the stream has been fully processed, the method returns an empty String and "
+"closes the stream automatically (i.e. [method list_dir_end] would not be "
+"mandatory in such a case)."
+msgstr ""
+
+#: doc/classes/Directory.xml:103
+msgid ""
+"On UNIX desktop systems, returns the available space on the current "
+"directory's disk. On other platforms, this information is not available and "
+"the method returns 0 or -1."
+msgstr ""
+
+#: doc/classes/Directory.xml:111
+msgid ""
+"Initializes the stream used to list all files and directories using the "
+"[method get_next] function, closing the currently opened stream if needed. "
+"Once the stream has been processed, it should typically be closed with "
+"[method list_dir_end].\n"
+"If [code]skip_navigational[/code] is [code]true[/code], [code].[/code] and "
+"[code]..[/code] are filtered out.\n"
+"If [code]skip_hidden[/code] is [code]true[/code], hidden files are filtered "
+"out."
+msgstr ""
+
+#: doc/classes/Directory.xml:119
+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 ""
+
+#: doc/classes/Directory.xml:126
+msgid ""
+"Creates a directory. The argument can be relative to the current directory, "
+"or an absolute path. The target directory should be placed in an already "
+"existing directory (to create the full path recursively, see [method "
+"make_dir_recursive]).\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/Directory.xml:134
+msgid ""
+"Creates a target directory and all necessary intermediate directories in its "
+"path, by calling [method make_dir] recursively. The argument can be relative "
+"to the current directory, or an absolute path.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/Directory.xml:142
+msgid ""
+"Opens an existing directory of the filesystem. The [code]path[/code] "
+"argument can be within the project tree ([code]res://folder[/code]), the "
+"user directory ([code]user://folder[/code]) or an absolute path of the user "
+"filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\\tmp\\folder[/code]).\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/Directory.xml:150
+msgid ""
+"Deletes the target file or an empty directory. The argument can be relative "
+"to the current directory, or an absolute path. If the target directory is "
+"not empty, the operation will fail.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/Directory.xml:159
+msgid ""
+"Renames (move) the [code]from[/code] file or directory to the [code]to[/"
+"code] destination. Both arguments should be paths to files or directories, "
+"either relative or absolute. If the destination file or directory exists and "
+"is not access-protected, it will be overwritten.\n"
+"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
+msgstr ""
+
+#: doc/classes/DTLSServer.xml:4
+msgid "Helper class to implement a DTLS server."
+msgstr ""
+
+#: doc/classes/DTLSServer.xml:7
+msgid ""
+"This class is used to store the state of a DTLS server. Upon [method setup] "
+"it converts connected [PacketPeerUDP] to [PacketPeerDTLS] accepting them via "
+"[method take_connection] as DTLS clients. Under the hood, this class is used "
+"to store the DTLS state and cookies of the server. The reason of why the "
+"state and cookies are needed is outside of the scope of this documentation.\n"
+"Below a small example of how to use it:\n"
+"[codeblock]\n"
+"# server.gd\n"
+"extends Node\n"
+"\n"
+"var dtls := DTLSServer.new()\n"
+"var server := UDPServer.new()\n"
+"var peers = []\n"
+"\n"
+"func _ready():\n"
+" server.listen(4242)\n"
+" var key = load(\"key.key\") # Your private key.\n"
+" var cert = load(\"cert.crt\") # Your X509 certificate.\n"
+" dtls.setup(key, cert)\n"
+"\n"
+"func _process(delta):\n"
+" while server.is_connection_available():\n"
+" var peer : PacketPeerUDP = server.take_connection()\n"
+" var dtls_peer : PacketPeerDTLS = dtls.take_connection(peer)\n"
+" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n"
+" continue # It is normal that 50% of the connections fails due to "
+"cookie exchange.\n"
+" print(\"Peer connected!\")\n"
+" peers.append(dtls_peer)\n"
+" for p in peers:\n"
+" p.poll() # Must poll to update the state.\n"
+" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
+" while p.get_available_packet_count() > 0:\n"
+" print(\"Received message from client: %s\" % p.get_packet()."
+"get_string_from_utf8())\n"
+" p.put_packet(\"Hello DTLS client\".to_utf8())\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# client.gd\n"
+"extends Node\n"
+"\n"
+"var dtls := PacketPeerDTLS.new()\n"
+"var udp := PacketPeerUDP.new()\n"
+"var connected = false\n"
+"\n"
+"func _ready():\n"
+" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
+" dtls.connect_to_peer(udp, false) # Use true in production for "
+"certificate validation!\n"
+"\n"
+"func _process(delta):\n"
+" dtls.poll()\n"
+" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
+" if !connected:\n"
+" # Try to contact server\n"
+" dtls.put_packet(\"The answer is... 42!\".to_utf8())\n"
+" while dtls.get_available_packet_count() > 0:\n"
+" print(\"Connected: %s\" % dtls.get_packet()."
+"get_string_from_utf8())\n"
+" connected = true\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/DTLSServer.xml:70
+msgid ""
+"Setup the DTLS server to use the given [code]private_key[/code] and provide "
+"the given [code]certificate[/code] to clients. You can pass the optional "
+"[code]chain[/code] parameter to provide additional CA chain information "
+"along with the certificate."
+msgstr ""
+
+#: doc/classes/DTLSServer.xml:77
+msgid ""
+"Try to initiate the DTLS handshake with the given [code]udp_peer[/code] "
+"which must be already connected (see [method PacketPeerUDP."
+"connect_to_host]).\n"
+"[b]Note:[/b] You must check that the state of the return PacketPeerUDP is "
+"[constant PacketPeerDTLS.STATUS_HANDSHAKING], as it is normal that 50% of "
+"the new connections will be invalid due to cookie exchange."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:4
+msgid "DynamicFont renders vector font files at runtime."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:7
+msgid ""
+"DynamicFont renders vector font files dynamically at runtime instead of "
+"using a prerendered texture atlas like [BitmapFont]. This trades the faster "
+"loading time of [BitmapFont]s for the ability to change font parameters like "
+"size and spacing during runtime. [DynamicFontData] is used for referencing "
+"the font file paths. DynamicFont also supports defining one or more fallback "
+"fonts, which will be used when displaying a character not supported by the "
+"main font.\n"
+"DynamicFont uses the [url=https://www.freetype.org/]FreeType[/url] library "
+"for rasterization. Supported formats are TrueType ([code].ttf[/code]), "
+"OpenType ([code].otf[/code]) and Web Open Font Format 1 ([code].woff[/"
+"code]). Web Open Font Format 2 ([code].woff2[/code]) is [i]not[/i] "
+"supported.\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 doesn't support features such as kerning, right-to-"
+"left typesetting, ligatures, text shaping, variable fonts and optional font "
+"features yet. If you wish to \"bake\" an optional font feature into a TTF "
+"font file, you can use [url=https://fontforge.org/]FontForge[/url] to do so. "
+"In FontForge, use [b]File > Generate Fonts[/b], click [b]Options[/b], choose "
+"the desired features then generate the font."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:25
+msgid "Adds a fallback font."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:31
+msgid ""
+"Returns a string containing all the characters available in the main and all "
+"the fallback fonts.\n"
+"If a given character is included in more than one font, it appears only once "
+"in the returned string."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:39
+msgid "Returns the fallback font at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:45
+msgid "Returns the number of fallback fonts."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:52
+msgid ""
+"Returns the spacing for the given [code]type[/code] (see [enum SpacingType])."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:59
+msgid "Removes the fallback font at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:67
+msgid "Sets the fallback font at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:75
+msgid ""
+"Sets the spacing for [code]type[/code] (see [enum SpacingType]) to "
+"[code]value[/code] in pixels (not relative to the font size)."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:81
+msgid "Extra spacing at the bottom in pixels."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:84
+msgid ""
+"Extra spacing for each character in pixels.\n"
+"This can be a negative number to make the distance between characters "
+"smaller."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:88
+msgid ""
+"Extra spacing for the space character (in addition to [member "
+"extra_spacing_char]) in pixels.\n"
+"This can be a negative number to make the distance between words smaller."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:92
+msgid "Extra spacing at the top in pixels."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:95
+msgid "The font data."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:98
+msgid ""
+"The font outline's color.\n"
+"[b]Note:[/b] It's recommended to leave this at the default value so that you "
+"can adjust it in individual controls. For example, if the outline is made "
+"black here, it won't be possible to change its color using a Label's font "
+"outline modulate theme item."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:102
+msgid "The font outline's thickness in pixels (not relative to the font size)."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:105
+msgid "The font size in pixels."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:108
+msgid ""
+"If [code]true[/code], filtering is used. This makes the font blurry instead "
+"of pixelated when scaling it if font oversampling is disabled or "
+"ineffective. It's recommended to enable this when using the font in a "
+"control whose size changes over time, unless a pixel art aesthetic is "
+"desired."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:111
+msgid ""
+"If [code]true[/code], mipmapping is used. This improves the font's "
+"appearance when downscaling it if font oversampling is disabled or "
+"ineffective."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:116
+msgid "Spacing at the top."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:119
+msgid "Spacing at the bottom."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:122
+msgid "Spacing for each character."
+msgstr ""
+
+#: doc/classes/DynamicFont.xml:125
+msgid "Spacing for the space character."
+msgstr ""
+
+#: doc/classes/DynamicFontData.xml:4
+msgid "Used with [DynamicFont] to describe the location of a font file."
+msgstr ""
+
+#: doc/classes/DynamicFontData.xml:7
+msgid ""
+"Used with [DynamicFont] to describe the location of a vector font file for "
+"dynamic rendering at runtime."
+msgstr ""
+
+#: doc/classes/DynamicFontData.xml:16
+msgid ""
+"If [code]true[/code], the font is rendered with anti-aliasing. This property "
+"applies both to the main font and its outline (if it has one)."
+msgstr ""
+
+#: doc/classes/DynamicFontData.xml:19
+msgid "The path to the vector font file."
+msgstr ""
+
+#: doc/classes/DynamicFontData.xml:22
+msgid "The font hinting mode used by FreeType. See [enum Hinting] for options."
+msgstr ""
+
+#: doc/classes/DynamicFontData.xml:27
+msgid "Disables font hinting (smoother but less crisp)."
+msgstr ""
+
+#: doc/classes/DynamicFontData.xml:30
+msgid "Use the light font hinting mode."
+msgstr ""
+
+#: doc/classes/DynamicFontData.xml:33
+msgid "Use the default font hinting mode (crisper but less smooth)."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:4
+msgid "A script that is executed when exporting the project."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:7
+msgid ""
+"Editor export plugins are automatically activated whenever the user exports "
+"the project. Their most common use is to determine what files are being "
+"included in the exported project. For each plugin, [method _export_begin] is "
+"called at the beginning of the export process and then [method _export_file] "
+"is called for each exported file."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:19
+msgid ""
+"Virtual method to be overridden by the user. It is called when the export "
+"starts and provides all information about the export. [code]features[/code] "
+"is the list of features for the export, [code]is_debug[/code] is [code]true[/"
+"code] for debug builds, [code]path[/code] is the target path for the "
+"exported project. [code]flags[/code] is only used when running a runnable "
+"profile, e.g. when using native run on Android."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:25
+msgid ""
+"Virtual method to be overridden by the user. Called when the export is "
+"finished."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:34
+msgid ""
+"Virtual method to be overridden by the user. Called for each exported file, "
+"providing arguments that can be used to identify the file. [code]path[/code] "
+"is the path of the file, [code]type[/code] is the [Resource] represented by "
+"the file (e.g. [PackedScene]) and [code]features[/code] is the list of "
+"features for the export.\n"
+"Calling [method skip] inside this callback will make the file not included "
+"in the export."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:44
+msgid ""
+"Adds a custom file to be exported. [code]path[/code] is the virtual path "
+"that can be used to load the file, [code]file[/code] is the binary data of "
+"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 ""
+
+#: doc/classes/EditorExportPlugin.xml:51
+msgid ""
+"Adds an iOS bundle file from the given [code]path[/code] to the exported "
+"project."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:58
+msgid ""
+"Adds a C++ code to the iOS export. The final code is created from the code "
+"appended by each active export plugin."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:65
+msgid ""
+"Adds a dynamic library (*.dylib, *.framework) to Linking Phase in iOS's "
+"Xcode project and embeds it into resulting binary.\n"
+"[b]Note:[/b] For static libraries (*.a) works in same way as [method "
+"add_ios_framework].\n"
+"This method should not be used for System libraries as they are already "
+"present on the device."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:74
+msgid ""
+"Adds a static library (*.a) or dynamic library (*.dylib, *.framework) to "
+"Linking Phase in iOS's Xcode project."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:81
+msgid "Adds linker flags for the iOS export."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:88
+msgid "Adds content for iOS Property List files."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:95
+msgid "Adds a static lib from the given [code]path[/code] to the iOS project."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:103
+msgid ""
+"Adds a shared object with the given [code]tags[/code] and destination "
+"[code]path[/code]."
+msgstr ""
+
+#: doc/classes/EditorExportPlugin.xml:109
+msgid ""
+"To be called inside [method _export_file]. Skips the current file, so it's "
+"not included in the export."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:4
+msgid ""
+"An editor feature profile which can be used to disable specific features."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:7
+msgid ""
+"An editor feature profile can be used to disable specific features of the "
+"Godot editor. When disabled, the features won't appear in the editor, which "
+"makes the editor less cluttered. This is useful in education settings to "
+"reduce confusion or when working in a team. For example, artists and level "
+"designers could use a feature profile that disables the script editor to "
+"avoid accidentally making changes to files they aren't supposed to edit.\n"
+"To manage editor feature profiles visually, use [b]Editor > Manage Feature "
+"Profiles...[/b] at the top of the editor window."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:17
+msgid "Returns the specified [code]feature[/code]'s human-readable name."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:24
+msgid ""
+"Returns [code]true[/code] if the class specified by [code]class_name[/code] "
+"is disabled. When disabled, the class won't appear in the Create New Node "
+"dialog."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:31
+msgid ""
+"Returns [code]true[/code] if editing for the class specified by "
+"[code]class_name[/code] is disabled. When disabled, the class will still "
+"appear in the Create New Node dialog but the inspector will be read-only "
+"when selecting a node that extends the class."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:39
+msgid ""
+"Returns [code]true[/code] if [code]property[/code] is disabled in the class "
+"specified by [code]class_name[/code]. When a property is disabled, it won't "
+"appear in the inspector when selecting a node that extends the class "
+"specified by [code]class_name[/code]."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:46
+msgid ""
+"Returns [code]true[/code] if the [code]feature[/code] is disabled. When a "
+"feature is disabled, it will disappear from the editor entirely."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:53
+msgid ""
+"Loads an editor feature profile from a file. The file must follow the JSON "
+"format obtained by using the feature profile manager's [b]Export[/b] button "
+"or the [method save_to_file] method."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:60
+msgid ""
+"Saves the editor feature profile to a file in JSON format. It can then be "
+"imported using the feature profile manager's [b]Import[/b] button or the "
+"[method load_from_file] button."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:68
+msgid ""
+"If [code]disable[/code] is [code]true[/code], disables the class specified "
+"by [code]class_name[/code]. When disabled, the class won't appear in the "
+"Create New Node dialog."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:76
+msgid ""
+"If [code]disable[/code] is [code]true[/code], disables editing for the class "
+"specified by [code]class_name[/code]. When disabled, the class will still "
+"appear in the Create New Node dialog but the inspector will be read-only "
+"when selecting a node that extends the class."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:85
+msgid ""
+"If [code]disable[/code] is [code]true[/code], disables editing for "
+"[code]property[/code] in the class specified by [code]class_name[/code]. "
+"When a property is disabled, it won't appear in the inspector when selecting "
+"a node that extends the class specified by [code]class_name[/code]."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:93
+msgid ""
+"If [code]disable[/code] is [code]true[/code], disables the editor feature "
+"specified in [code]feature[/code]. When a feature is disabled, it will "
+"disappear from the editor entirely."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:99
+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 ""
+
+#: doc/classes/EditorFeatureProfile.xml:102
+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 ""
+
+#: doc/classes/EditorFeatureProfile.xml:105
+msgid ""
+"The AssetLib tab. If this feature is disabled, the AssetLib tab won't "
+"display."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:108
+msgid ""
+"Scene tree editing. If this feature is disabled, the Scene tree dock will "
+"still be visible but will be read-only."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:111
+msgid ""
+"The Node dock. If this feature is disabled, signals and groups won't be "
+"visible and modifiable from the editor."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:114
+msgid ""
+"The FileSystem dock. If this feature is disabled, the FileSystem dock won't "
+"be visible."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:117
+msgid ""
+"The Import dock. If this feature is disabled, the Import dock won't be "
+"visible."
+msgstr ""
+
+#: doc/classes/EditorFeatureProfile.xml:120 doc/classes/SpatialMaterial.xml:471
+msgid "Represents the size of the [enum Feature] enum."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:4
+msgid "A modified version of [FileDialog] used by the editor."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:15
+msgid ""
+"Adds a comma-delimited file extension filter option to the "
+"[EditorFileDialog] with an optional semi-colon-delimited label.\n"
+"For example, [code]\"*.tscn, *.scn; Scenes\"[/code] results in filter text "
+"\"Scenes (*.tscn, *.scn)\"."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:22
+msgid "Removes all filters except for \"All Files (*)\"."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:28
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:35
+msgid ""
+"Notify the [EditorFileDialog] that its view of the data is no longer "
+"accurate. Updates the view contents on next view update."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:41
+msgid ""
+"The location from which the user may select a file, including [code]res://[/"
+"code], [code]user://[/code], and the local file system."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:44
+msgid "The currently occupied directory."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:47
+msgid "The currently selected file."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:50
+msgid "The file system path in the address bar."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:54
+msgid ""
+"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
+"overwriting files."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:57
+msgid ""
+"The view format in which the [EditorFileDialog] displays resources to the "
+"user."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:60
+msgid ""
+"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:64
+msgid ""
+"If [code]true[/code], hidden files and directories will be visible in the "
+"[EditorFileDialog]."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:72
+msgid "Emitted when a directory is selected."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:78
+msgid "Emitted when a file is selected."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:84
+msgid "Emitted when multiple files are selected."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:90
+msgid ""
+"The [EditorFileDialog] can select only one file. Accepting the window will "
+"open the file."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:93
+msgid ""
+"The [EditorFileDialog] can select multiple files. Accepting the window will "
+"open all files."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:96
+msgid ""
+"The [EditorFileDialog] can select only one directory. Accepting the window "
+"will open the directory."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:99
+msgid ""
+"The [EditorFileDialog] can select a file or directory. Accepting the window "
+"will open it."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:102
+msgid ""
+"The [EditorFileDialog] can select only one file. Accepting the window will "
+"save the file."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:105
+msgid ""
+"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:108
+msgid ""
+"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:111
+msgid "The [EditorFileDialog] can view the entire local file system."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:114
+msgid "The [EditorFileDialog] displays resources as thumbnails."
+msgstr ""
+
+#: doc/classes/EditorFileDialog.xml:117
+msgid "The [EditorFileDialog] displays resources as a list of filenames."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:4
+msgid "Resource filesystem, as the editor sees it."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:7
+msgid ""
+"This object holds information of all resources in the filesystem, their "
+"types, etc.\n"
+"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
+"the singleton using [method EditorInterface.get_resource_filesystem]."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:17
+msgid ""
+"Returns the resource type of the file, given the full path. This returns a "
+"string such as [code]\"Resource\"[/code] or [code]\"GDScript\"[/code], "
+"[i]not[/i] a file extension such as [code]\".gd\"[/code]."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:23
+msgid "Gets the root directory object."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:30
+msgid "Returns a view into the filesystem at [code]path[/code]."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:36
+msgid "Returns the scan progress for 0 to 1 if the FS is being scanned."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:42
+msgid "Returns [code]true[/code] of the filesystem is being scanned."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:48
+msgid "Scan the filesystem for changes."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:54
+msgid "Check if the source of any imported resource changed."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:61
+msgid ""
+"Update a file information. Call this if an external program (not Godot) "
+"modified the file."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:67
+msgid "Scans the script files and updates the list of custom class names."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:74
+msgid "Emitted if the filesystem changed."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:80
+msgid "Emitted if a resource is reimported."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:86
+msgid ""
+"Emitted if at least one resource is reloaded when the filesystem is scanned."
+msgstr ""
+
+#: doc/classes/EditorFileSystem.xml:92
+msgid "Emitted if the source of any imported file changed."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:4
+msgid "A directory for the resource filesystem."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:7
+msgid "A more generalized, low-level variation of the directory concept."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:16
+msgid ""
+"Returns the index of the directory with name [code]name[/code] or [code]-1[/"
+"code] if not found."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:23
+msgid ""
+"Returns the index of the file with name [code]name[/code] or [code]-1[/code] "
+"if not found."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:30
+msgid "Returns the name of the file at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:36
+msgid "Returns the number of files in this directory."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:43
+msgid ""
+"Returns [code]true[/code] if the file at index [code]idx[/code] imported "
+"properly."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:50
+msgid "Returns the path to the file at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:57
+msgid ""
+"Returns the base class of the script class defined in the file at index "
+"[code]idx[/code]. If the file doesn't define a script class using the "
+"[code]class_name[/code] syntax, this will return an empty string."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:64
+msgid ""
+"Returns the name of the script class defined in the file at index [code]idx[/"
+"code]. If the file doesn't define a script class using the [code]class_name[/"
+"code] syntax, this will return an empty string."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:71
+msgid ""
+"Returns the resource type of the file at index [code]idx[/code]. This "
+"returns a string such as [code]\"Resource\"[/code] or [code]\"GDScript\"[/"
+"code], [i]not[/i] a file extension such as [code]\".gd\"[/code]."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:77
+msgid "Returns the name of this directory."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:83
+msgid ""
+"Returns the parent directory for this directory or [code]null[/code] if "
+"called on a directory at [code]res://[/code] or [code]user://[/code]."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:89
+msgid "Returns the path to this directory."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:96
+msgid "Returns the subdirectory at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/EditorFileSystemDirectory.xml:102
+msgid "Returns the number of subdirectories in this directory."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:4
+msgid ""
+"Registers a custom resource importer in the editor. Use the class to parse "
+"any file and import it as a new resource type."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:7
+msgid ""
+"EditorImportPlugins provide a way to extend the editor's resource import "
+"functionality. Use them to import resources from custom files or to provide "
+"alternatives to the editor's existing importers. Register your "
+"[EditorPlugin] with [method EditorPlugin.add_import_plugin].\n"
+"EditorImportPlugins work by associating with specific file extensions and a "
+"resource type. See [method get_recognized_extensions] and [method "
+"get_resource_type]. They may optionally specify some import presets that "
+"affect the import process. EditorImportPlugins are responsible for creating "
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
+"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
+"with the extension \".special\" or \".spec\":\n"
+"[codeblock]\n"
+"tool\n"
+"extends EditorImportPlugin\n"
+"\n"
+"func get_importer_name():\n"
+" return \"my.special.plugin\"\n"
+"\n"
+"func get_visible_name():\n"
+" return \"Special Mesh\"\n"
+"\n"
+"func get_recognized_extensions():\n"
+" return [\"special\", \"spec\"]\n"
+"\n"
+"func get_save_extension():\n"
+" return \"mesh\"\n"
+"\n"
+"func get_resource_type():\n"
+" return \"Mesh\"\n"
+"\n"
+"func get_preset_count():\n"
+" return 1\n"
+"\n"
+"func get_preset_name(i):\n"
+" return \"Default\"\n"
+"\n"
+"func get_import_options(i):\n"
+" return [{\"name\": \"my_option\", \"default_value\": false}]\n"
+"\n"
+"func import(source_file, save_path, options, platform_variants, gen_files):\n"
+" var file = File.new()\n"
+" if file.open(source_file, File.READ) != OK:\n"
+" return FAILED\n"
+"\n"
+" var mesh = Mesh.new()\n"
+" # Fill the Mesh with data read in \"file\", left as an exercise to the "
+"reader\n"
+"\n"
+" var filename = save_path + \".\" + get_save_extension()\n"
+" return ResourceSaver.save(filename, mesh)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:51 doc/classes/ResourceImporter.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/import_plugins."
+"html"
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:58
+msgid ""
+"Gets the options and default values for the preset at this index. Returns an "
+"Array of Dictionaries with the following keys: [code]name[/code], "
+"[code]default_value[/code], [code]property_hint[/code] (optional), "
+"[code]hint_string[/code] (optional), [code]usage[/code] (optional)."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:64
+msgid ""
+"Gets the order of this importer to be run when importing resources. "
+"Importers with [i]lower[/i] import orders will be called first, and higher "
+"values will be called later. Use this to ensure the importer runs after the "
+"dependencies are already imported. The default import order is [code]0[/"
+"code] unless overridden by a specific importer. See [enum ResourceImporter."
+"ImportOrder] for some predefined values."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:70
+msgid "Gets the unique name of the importer."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:78
+msgid ""
+"This method can be overridden to hide specific import options if conditions "
+"are met. This is mainly useful for hiding options that depend on others if "
+"one of them is disabled. For example:\n"
+"[codeblock]\n"
+"func get_option_visibility(option, options):\n"
+" # Only show the lossy quality setting if the compression mode is set to "
+"\"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"
+"Return [code]true[/code] to make all options always visible."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:93
+msgid ""
+"Gets the number of initial presets defined by the plugin. Use [method "
+"get_import_options] to get the default options for the preset and [method "
+"get_preset_name] to get the name of the preset."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:100
+msgid "Gets the name of the options preset at this index."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:106
+msgid ""
+"Gets the priority of this plugin for the recognized extension. Higher "
+"priority plugins will be preferred. The default priority is [code]1.0[/code]."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:112
+msgid ""
+"Gets the list of file extensions to associate with this loader (case-"
+"insensitive). e.g. [code][\"obj\"][/code]."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:118
+msgid ""
+"Gets the Godot resource type associated with this loader. e.g. [code]\"Mesh"
+"\"[/code] or [code]\"Animation\"[/code]."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:124
+msgid ""
+"Gets the extension used to save this resource in the [code].import[/code] "
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:130
+msgid ""
+"Gets the name to display in the import window. You should choose this name "
+"as a continuation to \"Import as\", e.g. \"Import as Special Mesh\"."
+msgstr ""
+
+#: doc/classes/EditorImportPlugin.xml:141
+msgid ""
+"Imports [code]source_file[/code] into [code]save_path[/code] with the import "
+"[code]options[/code] specified. The [code]platform_variants[/code] and "
+"[code]gen_files[/code] arrays will be modified by this function.\n"
+"This method must be overridden to do the actual importing work. See this "
+"class' description for an example of overriding this method."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:4
+msgid "A tab used to edit properties of the selected node."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:7
+msgid ""
+"The editor inspector is by default located on the right-hand side of the "
+"editor. It's used to edit the properties of the selected node. For example, "
+"you can select a node such as [Sprite] then edit its transform through the "
+"inspector tool. The editor inspector is an essential tool in the game "
+"development workflow.\n"
+"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
+"the singleton using [method EditorInterface.get_inspector]."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:16
+msgid ""
+"Refreshes the inspector.\n"
+"[b]Note:[/b] To save on CPU resources, calling this method will do nothing "
+"if the time specified in [code]docks/property_editor/auto_refresh_interval[/"
+"code] editor setting hasn't passed yet since this method was last called. "
+"(By default, this interval is set to 0.3 seconds.)"
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:28
+msgid ""
+"Emitted when the Edit button of an [Object] has been pressed in the "
+"inspector. This is mainly used in the remote scene tree inspector."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:34
+msgid "Emitted when a property is edited in the inspector."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:40
+msgid ""
+"Emitted when a property is keyed in the inspector. Properties can be keyed "
+"by clicking the \"key\" icon next to a property when the Animation panel is "
+"toggled."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:46
+msgid "Emitted when a property is selected in the inspector."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:53
+msgid ""
+"Emitted when a boolean property is toggled in the inspector.\n"
+"[b]Note:[/b] This signal is never emitted if the internal [code]autoclear[/"
+"code] property enabled. Since this property is always enabled in the editor "
+"inspector, this signal is never emitted by the editor itself."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:61
+msgid "Emitted when a resource is selected in the inspector."
+msgstr ""
+
+#: doc/classes/EditorInspector.xml:66
+msgid ""
+"Emitted when a property that requires a restart to be applied is edited in "
+"the inspector. This is only used in the Project Settings and Editor Settings."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:4
+msgid "Plugin for adding custom property editors on inspector."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:7
+msgid ""
+"These plugins allow adding custom property editors to [EditorInspector].\n"
+"Plugins are registered via [method EditorPlugin.add_inspector_plugin].\n"
+"When an object is edited, the [method can_handle] function is called and "
+"must return [code]true[/code] if the object type is supported.\n"
+"If supported, the function [method parse_begin] will be called, allowing to "
+"place custom controls at the beginning of the class.\n"
+"Subsequently, the [method parse_category] and [method parse_property] are "
+"called for every category and property. They offer the ability to add custom "
+"controls to the inspector too.\n"
+"Finally, [method parse_end] will be called.\n"
+"On each of these calls, the \"add\" functions can be called."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:16
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/"
+"inspector_plugins.html"
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:23
+msgid "Adds a custom control, which is not necessarily a property editor."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:31
+msgid ""
+"Adds a property editor for an individual property. The [code]editor[/code] "
+"control must extend [EditorProperty]."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:40
+msgid ""
+"Adds an editor that allows modifying multiple properties. The [code]editor[/"
+"code] control must extend [EditorProperty]."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:47
+msgid "Returns [code]true[/code] if this object can be handled by this plugin."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:54
+msgid "Called to allow adding controls at the beginning of the list."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:62
+msgid "Called to allow adding controls at the beginning of the category."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:68
+msgid "Called to allow adding controls at the end of the list."
+msgstr ""
+
+#: doc/classes/EditorInspectorPlugin.xml:80
+msgid ""
+"Called to allow adding property specific editors to the inspector. Usually "
+"these inherit [EditorProperty]. Returning [code]true[/code] removes the "
+"built-in editor for this property, otherwise allows to insert a custom "
+"editor before the built-in one."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:4
+msgid "Godot editor's interface."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:7
+msgid ""
+"EditorInterface gives you control over Godot editor's window. It allows "
+"customizing the window, saving and (re-)loading scenes, rendering mesh "
+"previews, inspecting and editing resources and objects, and provides access "
+"to [EditorSettings], [EditorFileSystem], [EditorResourcePreview], "
+"[ScriptEditor], the editor viewport, and information about scenes.\n"
+"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
+"the singleton using [method EditorPlugin.get_editor_interface]."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:17
+msgid ""
+"Edits the given [Node]. The node will be also selected if it's inside the "
+"scene tree."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:24
+msgid "Edits the given [Resource]."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:30
+msgid ""
+"Returns the main container of Godot editor's window. For example, you can "
+"use it to retrieve the size of the container and place your controls "
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:37
+msgid "Returns the current path being viewed in the [FileSystemDock]."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:43
+msgid "Returns the edited (current) scene's root [Node]."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:49
+msgid ""
+"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
+"scale). This can be used to adjust position and dimensions of the UI added "
+"by plugins.\n"
+"[b]Note:[/b] This value is set via the [code]interface/editor/display_scale[/"
+"code] and [code]interface/editor/custom_display_scale[/code] editor "
+"settings. Editor must be restarted for changes to be properly applied."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:56
+msgid "Returns the editor's [EditorSettings] instance."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:62
+msgid ""
+"Returns the main editor control. Use this as a parent for main screens.\n"
+"[b]Note:[/b] This returns the main editor control containing the whole "
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:84
+msgid "Returns an [Array] with the file paths of the currently opened scenes."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:90
+msgid ""
+"Returns the name of the scene that is being played. If no scene is currently "
+"being played, returns an empty string."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:96
+msgid "Returns the editor's [EditorFileSystem] instance."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:102
+msgid "Returns the editor's [EditorResourcePreview] instance."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:115
+msgid ""
+"Returns the path of the directory currently selected in the "
+"[FileSystemDock]. If a file is selected, its base directory will be returned "
+"using [method String.get_base_dir] instead."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:121
+msgid "Returns the editor's [EditorSelection] instance."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:130
+msgid ""
+"Shows the given property on the given [code]object[/code] in the editor's "
+"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
+"will not attempt to edit [code]object[/code]."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:136
+msgid ""
+"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
+"code] otherwise. Paused scenes are considered as being played."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:143
+msgid ""
+"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
+"The plugin name is the same as its directory name."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:151
+msgid ""
+"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:158
+msgid "Opens the scene at the given path."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:164
+msgid "Plays the currently active scene."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:171
+msgid "Plays the scene specified by its filepath."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:177
+msgid "Plays the main scene."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:184
+msgid "Reloads the scene at the given path."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:190
+msgid ""
+"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
+"code] (see [@GlobalScope] constants)."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:198
+msgid "Saves the scene as a file at [code]path[/code]."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:205
+msgid ""
+"Selects the file, with the path provided by [code]file[/code], in the "
+"FileSystem dock."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:212
+msgid ""
+"Sets the editor's current main screen to the one specified in [code]name[/"
+"code]. [code]name[/code] must match the text of the tab in question exactly "
+"([code]2D[/code], [code]3D[/code], [code]Script[/code], [code]AssetLib[/"
+"code])."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:220
+msgid ""
+"Sets the enabled status of a plugin. The plugin name is the same as its "
+"directory name."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:226
+msgid "Stops the scene that is currently playing."
+msgstr ""
+
+#: doc/classes/EditorInterface.xml:232
+msgid ""
+"If [code]true[/code], enables distraction-free mode which hides side docks "
+"to increase the space available for the main view."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:4
+msgid "Used by the editor to extend its functionality."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:7
+msgid ""
+"Plugins are used by the editor to extend functionality. The most common "
+"types of plugins are those which edit a given node or resource type, import "
+"plugins and export plugins. See also [EditorScript] to add functions to the "
+"editor."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/index.html"
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:18
+msgid ""
+"Adds a script at [code]path[/code] to the Autoload list as [code]name[/code]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:26
+msgid ""
+"Adds a control to the bottom panel (together with Output, Debug, Animation, "
+"etc). Returns a reference to the button added. It's up to you to hide/show "
+"the button when needed. When your plugin is deactivated, make sure to remove "
+"your custom control with [method remove_control_from_bottom_panel] and free "
+"it with [method Node.queue_free]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:34
+msgid ""
+"Adds a custom control to a container (see [enum CustomControlContainer]). "
+"There are many locations where custom controls can be added in the editor "
+"UI.\n"
+"Please remember that you have to manage the visibility of your custom "
+"controls yourself (and likely hide it after adding it).\n"
+"When your plugin is deactivated, make sure to remove your custom control "
+"with [method remove_control_from_container] and free it with [method Node."
+"queue_free]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:44
+msgid ""
+"Adds the control to a specific dock slot (see [enum DockSlot] for options).\n"
+"If the dock is repositioned and as long as the plugin is active, the editor "
+"will save the dock position on further sessions.\n"
+"When your plugin is deactivated, make sure to remove your custom control "
+"with [method remove_control_from_docks] and free it with [method Node."
+"queue_free]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:56
+msgid ""
+"Adds a custom type, which will appear in the list of nodes or resources. An "
+"icon can be optionally passed.\n"
+"When given node or resource is selected, the base type will be instanced "
+"(ie, \"Spatial\", \"Control\", \"Resource\"), then the script will be loaded "
+"and set to this object.\n"
+"You can use the virtual method [method handles] to check if your custom "
+"object is being edited by checking the script or using the [code]is[/code] "
+"keyword.\n"
+"During run-time, this will be a simple object with a script so this function "
+"does not need to be called then."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:66
+msgid ""
+"Registers a new [EditorExportPlugin]. Export plugins are used to perform "
+"tasks when the project is being exported.\n"
+"See [method add_inspector_plugin] for an example of how to register a plugin."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:74
+msgid ""
+"Registers a new [EditorImportPlugin]. Import plugins are used to import "
+"custom and unsupported assets as a custom [Resource] type.\n"
+"[b]Note:[/b] If you want to import custom 3D asset formats use [method "
+"add_scene_import_plugin] instead.\n"
+"See [method add_inspector_plugin] for an example of how to register a plugin."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:83
+msgid ""
+"Registers a new [EditorInspectorPlugin]. Inspector plugins are used to "
+"extend [EditorInspector] and provide custom configuration tools for your "
+"object's properties.\n"
+"[b]Note:[/b] Always use [method remove_inspector_plugin] to remove the "
+"registered [EditorInspectorPlugin] when your [EditorPlugin] is disabled to "
+"prevent leaks and an unexpected behavior.\n"
+"[codeblock]\n"
+"const MyInspectorPlugin = preload(\"res://addons/your_addon/path/to/your/"
+"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]"
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:101
+msgid ""
+"Registers a new [EditorSceneImporter]. Scene importers are used to import "
+"custom 3D asset formats as scenes."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:108
+msgid ""
+"Registers a new [EditorSpatialGizmoPlugin]. Gizmo plugins are used to add "
+"custom gizmos to the 3D preview viewport for a [Spatial].\n"
+"See [method add_inspector_plugin] for an example of how to register a plugin."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:119
+msgid ""
+"Adds a custom menu item to [b]Project > Tools[/b] as [code]name[/code] that "
+"calls [code]callback[/code] on an instance of [code]handler[/code] with a "
+"parameter [code]ud[/code] when user activates it."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:127
+msgid ""
+"Adds a custom submenu under [b]Project > Tools >[/b] [code]name[/code]. "
+"[code]submenu[/code] should be an object of class [PopupMenu]. This submenu "
+"should be cleaned up using [code]remove_tool_menu_item(name)[/code]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:133
+msgid ""
+"This method is called when the editor is about to save the project, switch "
+"to another tab, etc. It asks the plugin to apply any pending state changes "
+"to ensure consistency.\n"
+"This is used, for example, in shader editors to let the plugin know that it "
+"must apply the shader code being written by the user to the object."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:140
+msgid ""
+"This method is called when the editor is about to run the project. The "
+"plugin can then perform required operations before the project runs.\n"
+"This method must return a boolean. If this method returns [code]false[/"
+"code], the project will not run. The run is aborted immediately, so this "
+"also prevents all other plugins' [method build] methods from running."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:147
+msgid ""
+"Clear all the state and reset the object being edited to zero. This ensures "
+"your plugin does not keep editing a currently existing node, or a node from "
+"the wrong scene."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:153
+msgid ""
+"Called by the engine when the user disables the [EditorPlugin] in the Plugin "
+"tab of the project settings window."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:160
+msgid ""
+"This function is used for plugins that edit specific object types (nodes or "
+"resources). It requests the editor to edit the given object."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:166
+msgid ""
+"Called by the engine when the user enables the [EditorPlugin] in the Plugin "
+"tab of the project settings window."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:173
+msgid ""
+"Called by the engine when the 2D editor's viewport is updated. Use the "
+"[code]overlay[/code] [Control] for drawing. You can update the viewport "
+"manually by calling [method update_overlays].\n"
+"[codeblock]\n"
+"func forward_canvas_draw_over_viewport(overlay):\n"
+" # Draw a circle at cursor position.\n"
+" overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color."
+"white)\n"
+"\n"
+"func forward_canvas_gui_input(event):\n"
+" if event is InputEventMouseMotion:\n"
+" # Redraw viewport when cursor is moved.\n"
+" update_overlays()\n"
+" return true\n"
+" return false\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:192
+msgid ""
+"This method is the same as [method forward_canvas_draw_over_viewport], "
+"except it draws on top of everything. Useful when you need an extra layer "
+"that shows over anything else.\n"
+"You need to enable calling of this method by using [method "
+"set_force_draw_over_forwarding_enabled]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:200
+msgid ""
+"Called when there is a root node in the current edited scene, [method "
+"handles] is implemented and an [InputEvent] happens in the 2D viewport. "
+"Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] "
+"consumes the [code]event[/code], otherwise forwards [code]event[/code] to "
+"other Editor classes. Example:\n"
+"[codeblock]\n"
+"# Prevents the InputEvent to reach other Editor classes\n"
+"func forward_canvas_gui_input(event):\n"
+" var forward = true\n"
+" return forward\n"
+"[/codeblock]\n"
+"Must [code]return false[/code] in order to forward the [InputEvent] to other "
+"Editor classes. Example:\n"
+"[codeblock]\n"
+"# Consumes InputEventMouseMotion and forwards other InputEvent types\n"
+"func forward_canvas_gui_input(event):\n"
+" var forward = false\n"
+" if event is InputEventMouseMotion:\n"
+" forward = true\n"
+" return forward\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:222
+msgid ""
+"Called by the engine when the 3D editor's viewport is updated. Use the "
+"[code]overlay[/code] [Control] for drawing. You can update the viewport "
+"manually by calling [method update_overlays].\n"
+"[codeblock]\n"
+"func forward_spatial_draw_over_viewport(overlay):\n"
+" # Draw a circle at cursor position.\n"
+" overlay.draw_circle(overlay.get_local_mouse_position(), 64)\n"
+"\n"
+"func forward_spatial_gui_input(camera, event):\n"
+" if event is InputEventMouseMotion:\n"
+" # Redraw viewport when cursor is moved.\n"
+" update_overlays()\n"
+" return true\n"
+" return false\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:241
+msgid ""
+"This method is the same as [method forward_spatial_draw_over_viewport], "
+"except it draws on top of everything. Useful when you need an extra layer "
+"that shows over anything else.\n"
+"You need to enable calling of this method by using [method "
+"set_force_draw_over_forwarding_enabled]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:250
+msgid ""
+"Called when there is a root node in the current edited scene, [method "
+"handles] is implemented and an [InputEvent] happens in the 3D viewport. "
+"Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] "
+"consumes the [code]event[/code], otherwise forwards [code]event[/code] to "
+"other Editor classes. Example:\n"
+"[codeblock]\n"
+"# Prevents the InputEvent to reach other Editor classes\n"
+"func forward_spatial_gui_input(camera, event):\n"
+" var forward = true\n"
+" return forward\n"
+"[/codeblock]\n"
+"Must [code]return false[/code] in order to forward the [InputEvent] to other "
+"Editor classes. Example:\n"
+"[codeblock]\n"
+"# Consumes InputEventMouseMotion and forwards other InputEvent types\n"
+"func forward_spatial_gui_input(camera, event):\n"
+" var forward = false\n"
+" if event is InputEventMouseMotion:\n"
+" forward = true\n"
+" return forward\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:271
+msgid ""
+"This is for editors that edit script-based objects. You can return a list of "
+"breakpoints in the format ([code]script:line[/code]), for example: "
+"[code]res://path_to_script.gd:25[/code]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:277
+msgid ""
+"Returns the [EditorInterface] object that gives you control over Godot "
+"editor's window and its functionalities."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:283
+msgid ""
+"Override this method in your plugin to return a [Texture] in order to give "
+"it an icon.\n"
+"For main screen plugins, this appears at the top of the screen, to the right "
+"of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons.\n"
+"Ideally, the plugin icon should be white with a transparent background and "
+"16x16 pixels in size.\n"
+"[codeblock]\n"
+"func get_plugin_icon():\n"
+" # You can use a custom icon:\n"
+" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n"
+" # Or use a built-in icon:\n"
+" return get_editor_interface().get_base_control().get_icon(\"Node\", "
+"\"EditorIcons\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:298
+msgid ""
+"Override this method in your plugin to provide the name of the plugin when "
+"displayed in the Godot editor.\n"
+"For main screen plugins, this appears at the top of the screen, to the right "
+"of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:305
+msgid ""
+"Gets the Editor's dialogue 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 ""
+
+#: doc/classes/EditorPlugin.xml:313
+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)."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:319
+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 ""
+
+#: doc/classes/EditorPlugin.xml:326
+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)."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:333
+msgid ""
+"Implement this function if your plugin edits a specific type of object "
+"(Resource or Node). If you return [code]true[/code], then you will get the "
+"functions [method edit] and [method make_visible] called when the editor "
+"requests them. If you have declared the methods [method "
+"forward_canvas_gui_input] and [method forward_spatial_gui_input] these will "
+"be called too."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:339
+msgid ""
+"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
+"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
+"[b]AssetLib[/b])."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:345
+msgid "Minimizes the bottom panel."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:352
+msgid "Makes a specific item in the bottom panel visible."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:359
+msgid ""
+"This function will be called when the editor is requested to become visible. "
+"It is used for plugins that edit a specific object type.\n"
+"Remember that you have to manage the visibility of all your editor controls "
+"manually."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:366
+msgid "Queue save the project's editor layout."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:373
+msgid "Removes an Autoload [code]name[/code] from the list."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:380
+msgid ""
+"Removes the control from the bottom panel. You have to manually [method Node."
+"queue_free] the control."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:388
+msgid ""
+"Removes the control from the specified container. You have to manually "
+"[method Node.queue_free] the control."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:395
+msgid ""
+"Removes the control from the dock. You have to manually [method Node."
+"queue_free] the control."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:402
+msgid "Removes a custom type added by [method add_custom_type]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:409
+msgid "Removes an export plugin registered by [method add_export_plugin]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:416
+msgid "Removes an import plugin registered by [method add_import_plugin]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:423
+msgid "Removes an inspector plugin registered by [method add_import_plugin]"
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:430
+msgid ""
+"Removes a scene importer registered by [method add_scene_import_plugin]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:437
+msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:444
+msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:450
+msgid ""
+"This method is called after the editor saves the project or when it's "
+"closed. It asks the plugin to save edited external scenes/resources."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:456
+msgid ""
+"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
+"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
+"editor when their viewports are updated. You need to call this method only "
+"once and it will work permanently for this plugin."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:462
+msgid ""
+"Use this method if you always want to receive inputs from 3D view screen "
+"inside [method forward_spatial_gui_input]. It might be especially usable if "
+"your plugin will want to use raycast in the scene."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:469
+msgid "Restore the state saved by [method get_state]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:476
+msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:482
+msgid ""
+"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
+"[method forward_canvas_draw_over_viewport], [method "
+"forward_canvas_force_draw_over_viewport], [method "
+"forward_spatial_draw_over_viewport] and [method "
+"forward_spatial_force_draw_over_viewport] to be called."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:490
+msgid ""
+"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
+"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:501
+msgid ""
+"Emitted when the scene is changed in the editor. The argument will return "
+"the root node of the scene that has just become active. If this scene is new "
+"and empty, the argument will be [code]null[/code]."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:507
+msgid ""
+"Emitted when user closes a scene. The argument is file path to a closed "
+"scene."
+msgstr ""
+
+#: doc/classes/EditorPlugin.xml:553
+msgid "Represents the size of the [enum DockSlot] enum."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:4
+msgid "Custom control to edit properties for adding into the inspector."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:7
+msgid ""
+"This control allows property editing for one or multiple properties into "
+"[EditorInspector]. It is added via [EditorInspectorPlugin]."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:16
+msgid ""
+"If any of the controls added can gain keyboard focus, add it here. This "
+"ensures that focus will be restored if the inspector is refreshed."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:26
+msgid ""
+"If one or several properties have changed, this must be called. [code]field[/"
+"code] is used in case your editor can modify fields separately (as an "
+"example, Vector3.x). The [code]changing[/code] argument avoids the editor "
+"requesting this property to be refreshed (leave as [code]false[/code] if "
+"unsure)."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:32
+msgid "Gets the edited object."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:38
+msgid ""
+"Gets the edited property. If your editor is for a single property (added via "
+"[method EditorInspectorPlugin.parse_property]), then this will return the "
+"property."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:44
+msgid "Must be implemented to provide a custom tooltip to the property editor."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:51
+msgid ""
+"Puts the [code]editor[/code] control below the property label. The control "
+"must be previously added using [method Node.add_child]."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:57
+msgid "When this virtual function is called, you must update your editor."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:63
+msgid ""
+"Used by the inspector, set to [code]true[/code] when the property is "
+"checkable."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:66
+msgid ""
+"Used by the inspector, set to [code]true[/code] when the property is checked."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:69
+msgid ""
+"Used by the inspector, set to [code]true[/code] when the property is drawn "
+"with the editor theme's warning color. This is used for editable children's "
+"properties."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:72
+msgid ""
+"Used by the inspector, set to [code]true[/code] when the property can add "
+"keys for animation."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:75
+msgid "Set this property to change the label (if you want to show one)."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:78
+msgid ""
+"Used by the inspector, set to [code]true[/code] when the property is read-"
+"only."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:86
+msgid ""
+"Emit it if you want multiple properties modified at the same time. Do not "
+"use if added via [method EditorInspectorPlugin.parse_property]."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:93
+msgid "Used by sub-inspectors. Emit it if what was selected was an Object ID."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:100
+msgid ""
+"Do not emit this manually, use the [method emit_changed] method instead."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:107
+msgid "Emitted when a property was checked. Used internally."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:113
+msgid ""
+"Emit it if you want to add this value as an animation key (check for keying "
+"being enabled first)."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:120
+msgid "Emit it if you want to key a property with a single value."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:127
+msgid ""
+"If you want a sub-resource to be edited, emit this signal with the resource."
+msgstr ""
+
+#: doc/classes/EditorProperty.xml:134
+msgid "Emitted when selected. Used internally."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:4
+msgid "Godot editor's control for selecting [Resource] type properties."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:7
+msgid ""
+"This [Control] node is used in the editor's Inspector dock to allow editing "
+"of [Resource] type properties. It provides options for creating, loading, "
+"saving and converting resources. Can be used with [EditorInspectorPlugin] to "
+"recreate the same behavior.\n"
+"[b]Note:[/b] This [Control] does not include any editor for the resource, as "
+"editing is controlled by the Inspector dock itself or sub-Inspectors."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:32
+msgid ""
+"Returns a list of all allowed types and subtypes corresponding to the "
+"[member base_type]. If the [member base_type] is empty, an empty list is "
+"returned."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:46
+msgid ""
+"This virtual method can be implemented to handle context menu items not "
+"handled by default. See [method set_create_options]."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:53
+msgid ""
+"This virtual method is called when updating the context menu of "
+"[EditorResourcePicker]. Implement this method to override the \"New ...\" "
+"items with your own options. [code]menu_node[/code] is a reference to the "
+"[PopupMenu] node.\n"
+"[b]Note:[/b] Implement [method handle_menu_selected] to handle these custom "
+"items."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:61
+msgid ""
+"Sets the toggle mode state for the main button. Works only if [member "
+"toggle_mode] is set to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:67
+msgid ""
+"The base type of allowed resource types. Can be a comma-separated list of "
+"several options."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:70
+msgid "If [code]true[/code], the value can be selected and edited."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:73
+msgid "The edited resource value."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:76
+msgid ""
+"If [code]true[/code], the main button with the resource preview works in the "
+"toggle mode. Use [method set_toggle_pressed] to manually set the state."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:83
+msgid "Emitted when the value of the edited resource was changed."
+msgstr ""
+
+#: doc/classes/EditorResourcePicker.xml:89
+msgid "Emitted when the resource value was set and user clicked to edit it."
+msgstr ""
+
+#: doc/classes/EditorResourcePreview.xml:4
+msgid "Helper to generate previews of resources or files."
+msgstr ""
+
+#: doc/classes/EditorResourcePreview.xml:7
+msgid ""
+"This object is used to generate previews for resources of files.\n"
+"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
+"the singleton using [method EditorInterface.get_resource_previewer]."
+msgstr ""
+
+#: doc/classes/EditorResourcePreview.xml:17
+msgid "Create an own, custom preview generator."
+msgstr ""
+
+#: doc/classes/EditorResourcePreview.xml:24
+msgid ""
+"Check if the resource changed, if so, it will be invalidated and the "
+"corresponding signal emitted."
+msgstr ""
+
+#: doc/classes/EditorResourcePreview.xml:34
+msgid ""
+"Queue the [code]resource[/code] being edited for preview. Once the preview "
+"is ready, the [code]receiver[/code]'s [code]receiver_func[/code] will be "
+"called. The [code]receiver_func[/code] must take the following four "
+"arguments: [String] path, [Texture] preview, [Texture] thumbnail_preview, "
+"[Variant] userdata. [code]userdata[/code] can be anything, and will be "
+"returned when [code]receiver_func[/code] is called.\n"
+"[b]Note:[/b] If it was not possible to create the preview the "
+"[code]receiver_func[/code] will still be called, but the preview will be "
+"null."
+msgstr ""
+
+#: doc/classes/EditorResourcePreview.xml:45
+msgid ""
+"Queue a resource file located at [code]path[/code] for preview. Once the "
+"preview is ready, the [code]receiver[/code]'s [code]receiver_func[/code] "
+"will be called. The [code]receiver_func[/code] must take the following four "
+"arguments: [String] path, [Texture] preview, [Texture] thumbnail_preview, "
+"[Variant] userdata. [code]userdata[/code] can be anything, and will be "
+"returned when [code]receiver_func[/code] is called.\n"
+"[b]Note:[/b] If it was not possible to create the preview the "
+"[code]receiver_func[/code] will still be called, but the preview will be "
+"null."
+msgstr ""
+
+#: doc/classes/EditorResourcePreview.xml:53
+msgid "Removes a custom preview generator."
+msgstr ""
+
+#: doc/classes/EditorResourcePreview.xml:61
+msgid ""
+"Emitted if a preview was invalidated (changed). [code]path[/code] "
+"corresponds to the path of the preview."
+msgstr ""
+
+#: doc/classes/EditorResourcePreviewGenerator.xml:4
+msgid "Custom generator of previews."
+msgstr ""
+
+#: doc/classes/EditorResourcePreviewGenerator.xml:7
+msgid ""
+"Custom code to generate previews. Please check [code]file_dialog/"
+"thumbnail_size[/code] in [EditorSettings] to find out the right size to do "
+"previews at."
+msgstr ""
+
+#: doc/classes/EditorResourcePreviewGenerator.xml:15
+msgid ""
+"If this function returns [code]true[/code], the generator will call [method "
+"generate] or [method generate_from_path] for small previews as well.\n"
+"By default, it returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/EditorResourcePreviewGenerator.xml:24
+msgid ""
+"Generate a preview from a given resource with the specified size. This must "
+"always be implemented.\n"
+"Returning an empty texture is an OK way to fail and let another generator "
+"take care.\n"
+"Care must be taken because this function is always called from a thread (not "
+"the main thread)."
+msgstr ""
+
+#: doc/classes/EditorResourcePreviewGenerator.xml:34
+msgid ""
+"Generate a preview directly from a path with the specified size. "
+"Implementing this is optional, as default code will load and call [method "
+"generate].\n"
+"Returning an empty texture is an OK way to fail and let another generator "
+"take care.\n"
+"Care must be taken because this function is always called from a thread (not "
+"the main thread)."
+msgstr ""
+
+#: doc/classes/EditorResourcePreviewGenerator.xml:42
+msgid ""
+"If this function returns [code]true[/code], the generator will automatically "
+"generate the small previews from the normal preview texture generated by the "
+"methods [method generate] or [method generate_from_path].\n"
+"By default, it returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/EditorResourcePreviewGenerator.xml:50
+msgid ""
+"Returns [code]true[/code] if your generator supports the resource of type "
+"[code]type[/code]."
+msgstr ""
+
+#: doc/classes/EditorSceneImporter.xml:4
+msgid "Imports scenes from third-parties' 3D files."
+msgstr ""
+
+#: modules/fbx/doc_classes/EditorSceneImporterFBX.xml:4
+msgid "FBX 3D asset importer."
+msgstr ""
+
+#: modules/fbx/doc_classes/EditorSceneImporterFBX.xml:7
+msgid ""
+"This is an FBX 3D asset importer with full support for most FBX features.\n"
+"If exporting a FBX scene from Autodesk Maya, use these FBX export settings:\n"
+"[codeblock]\n"
+"- Smoothing Groups\n"
+"- Smooth Mesh\n"
+"- Triangluate (for meshes with blend shapes)\n"
+"- Bake Animation\n"
+"- Resample All\n"
+"- Deformed Models\n"
+"- Skins\n"
+"- Blend Shapes\n"
+"- Curve Filters\n"
+"- Constant Key Reducer\n"
+"- Auto Tangents Only\n"
+"- *Do not check* Constraints (as it will break the file)\n"
+"- Can check Embed Media (embeds textures into the exported FBX file)\n"
+" - Note that when importing embedded media, the texture and mesh will be a "
+"single immutable file.\n"
+" - You will have to re-export then re-import the FBX if the texture has "
+"changed.\n"
+"- Units: Centimeters\n"
+"- Up Axis: Y\n"
+"- Binary format in FBX 2017\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorScenePostImport.xml:4
+msgid "Post-processes scenes after import."
+msgstr ""
+
+#: doc/classes/EditorScenePostImport.xml:7
+msgid ""
+"Imported scenes can be automatically modified right after import by setting "
+"their [b]Custom Script[/b] Import property to a [code]tool[/code] script "
+"that inherits from this class.\n"
+"The [method post_import] callback receives the imported scene's root node "
+"and returns the modified version of the scene. Usage example:\n"
+"[codeblock]\n"
+"tool # Needed so it runs in editor\n"
+"extends EditorScenePostImport\n"
+"\n"
+"# This sample changes all node names\n"
+"\n"
+"# Called right after the scene is imported and gets the root node\n"
+"func post_import(scene):\n"
+" # Change all node names to \"modified_[oldnodename]\"\n"
+" iterate(scene)\n"
+" return scene # Remember to return the imported scene\n"
+"\n"
+"func iterate(node):\n"
+" if node != null:\n"
+" node.name = \"modified_\" + node.name\n"
+" for child in node.get_children():\n"
+" iterate(child)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorScenePostImport.xml:29
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/workflow/assets/"
+"importing_scenes.html#custom-script"
+msgstr ""
+
+#: doc/classes/EditorScenePostImport.xml:35
+msgid ""
+"Returns the source file path which got imported (e.g. [code]res://scene.dae[/"
+"code])."
+msgstr ""
+
+#: doc/classes/EditorScenePostImport.xml:41
+msgid "Returns the resource folder the imported scene file is located in."
+msgstr ""
+
+#: doc/classes/EditorScenePostImport.xml:48
+msgid ""
+"Called after the scene was imported. This method must return the modified "
+"version of the scene."
+msgstr ""
+
+#: doc/classes/EditorScript.xml:4
+msgid "Base script that can be used to add extension functions to the editor."
+msgstr ""
+
+#: doc/classes/EditorScript.xml:7
+msgid ""
+"Scripts extending this class and implementing its [method _run] method can "
+"be executed from the Script Editor's [b]File > Run[/b] menu option (or by "
+"pressing [code]Ctrl+Shift+X[/code]) while the editor is running. This is "
+"useful for adding custom in-editor functionality to Godot. For more complex "
+"additions, consider using [EditorPlugin]s instead.\n"
+"[b]Note:[/b] Extending scripts need to have [code]tool[/code] mode enabled.\n"
+"[b]Example script:[/b]\n"
+"[codeblock]\n"
+"tool\n"
+"extends EditorScript\n"
+"\n"
+"func _run():\n"
+" print(\"Hello from the Godot Editor!\")\n"
+"[/codeblock]\n"
+"[b]Note:[/b] The script is run in the Editor context, which means the output "
+"is visible in the console window started with the Editor (stdout) instead of "
+"the usual Godot [b]Output[/b] dock."
+msgstr ""
+
+#: doc/classes/EditorScript.xml:25
+msgid "This method is executed by the Editor when [b]File > Run[/b] is used."
+msgstr ""
+
+#: doc/classes/EditorScript.xml:32
+msgid ""
+"Adds [code]node[/code] as a child of the root node in the editor context.\n"
+"[b]Warning:[/b] The implementation of this method is currently disabled."
+msgstr ""
+
+#: doc/classes/EditorScript.xml:39
+msgid "Returns the [EditorInterface] singleton instance."
+msgstr ""
+
+#: doc/classes/EditorScript.xml:45
+msgid "Returns the Editor's currently active scene."
+msgstr ""
+
+#: doc/classes/EditorScriptPicker.xml:4
+msgid ""
+"Godot editor's control for selecting the [code]script[/code] property of a "
+"[Node]."
+msgstr ""
+
+#: doc/classes/EditorScriptPicker.xml:7
+msgid ""
+"Similar to [EditorResourcePicker] this [Control] node is used in the "
+"editor's Inspector dock, but only to edit the [code]script[/code] property "
+"of a [Node]. Default options for creating new resources of all possible "
+"subtypes are replaced with dedicated buttons that open the \"Attach Node "
+"Script\" dialog. Can be used with [EditorInspectorPlugin] to recreate the "
+"same behavior.\n"
+"[b]Note:[/b] You must set the [member script_owner] for the custom context "
+"menu items to work."
+msgstr ""
+
+#: doc/classes/EditorScriptPicker.xml:16
+msgid "The owner [Node] of the script property that holds the edited resource."
+msgstr ""
+
+#: doc/classes/EditorSelection.xml:4
+msgid "Manages the SceneTree selection in the editor."
+msgstr ""
+
+#: doc/classes/EditorSelection.xml:7
+msgid ""
+"This object manages the SceneTree selection in the editor.\n"
+"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
+"the singleton using [method EditorInterface.get_selection]."
+msgstr ""
+
+#: doc/classes/EditorSelection.xml:17
+msgid ""
+"Adds a node to the selection.\n"
+"[b]Note:[/b] The newly selected node will not be automatically edited in the "
+"inspector. If you want to edit a node, use [method EditorInterface."
+"edit_node]."
+msgstr ""
+
+#: doc/classes/EditorSelection.xml:24
+msgid "Clear the selection."
+msgstr ""
+
+#: doc/classes/EditorSelection.xml:30
+msgid "Gets the list of selected nodes."
+msgstr ""
+
+#: doc/classes/EditorSelection.xml:36
+msgid ""
+"Gets the list of selected nodes, optimized for transform operations (i.e. "
+"moving them, rotating, etc). This list avoids situations where a node is "
+"selected and also child/grandchild."
+msgstr ""
+
+#: doc/classes/EditorSelection.xml:43
+msgid "Removes a node from the selection."
+msgstr ""
+
+#: doc/classes/EditorSelection.xml:50
+msgid "Emitted when the selection changes."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:4
+msgid "Object that holds the project-independent editor settings."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:7
+msgid ""
+"Object that holds the project-independent editor settings. These settings "
+"are generally visible in the [b]Editor > Editor Settings[/b] menu.\n"
+"Property names use slash delimiters to distinguish sections. Setting values "
+"can be of any [Variant] type. It's recommended to use [code]snake_case[/"
+"code] for editor settings to be consistent with the Godot editor itself.\n"
+"Accessing the settings can be done using the following methods, such as:\n"
+"[codeblock]\n"
+"# `settings.set(\"some/property\", value)` also works as this class "
+"overrides `_set()` internally.\n"
+"settings.set_setting(\"some/property\",value)\n"
+"\n"
+"# `settings.get(\"some/property\", value)` also works as this class "
+"overrides `_get()` internally.\n"
+"settings.get_setting(\"some/property\")\n"
+"\n"
+"var list_of_settings = settings.get_property_list()\n"
+"[/codeblock]\n"
+"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
+"the singleton using [method EditorInterface.get_editor_settings]."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:28
+msgid ""
+"Adds a custom property info to a property. The dictionary must contain:\n"
+"- [code]name[/code]: [String] (the name of the property)\n"
+"- [code]type[/code]: [int] (see [enum Variant.Type])\n"
+"- optionally [code]hint[/code]: [int] (see [enum PropertyHint]) and "
+"[code]hint_string[/code]: [String]\n"
+"[b]Example:[/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\": \"one,two,three\"\n"
+"}\n"
+"\n"
+"editor_settings.add_property_info(property_info)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:51
+msgid "Erases the setting whose name is specified by [code]property[/code]."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:57
+msgid "Returns the list of favorite files and directories for this project."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:66
+msgid ""
+"Returns project-specific metadata for the [code]section[/code] and "
+"[code]key[/code] specified. If the metadata doesn't exist, [code]default[/"
+"code] will be returned instead. See also [method set_project_metadata]."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:72
+msgid ""
+"Returns the project-specific settings path. Projects all have a unique "
+"subdirectory inside the settings path where project-specific settings are "
+"saved."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:78
+msgid ""
+"Returns the list of recently visited folders in the file dialog for this "
+"project."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:85
+msgid ""
+"Returns the value of the setting specified by [code]name[/code]. This is "
+"equivalent to using [method Object.get] on the EditorSettings instance."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:91
+msgid ""
+"Gets the global settings path for the engine. Inside this path, you can find "
+"some standard paths such as:\n"
+"[code]settings/tmp[/code] - Used for temporary storage of files\n"
+"[code]settings/templates[/code] - Where export templates are located"
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:100
+msgid ""
+"Returns [code]true[/code] if the setting specified by [code]name[/code] "
+"exists, [code]false[/code] otherwise."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:107
+msgid ""
+"Returns [code]true[/code] if the setting specified by [code]name[/code] can "
+"have its value reverted to the default value, [code]false[/code] otherwise. "
+"When this method returns [code]true[/code], a Revert button will display "
+"next to the setting in the Editor Settings."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:114
+msgid ""
+"Returns the default value of the setting specified by [code]name[/code]. "
+"This is the value that would be applied when clicking the Revert button in "
+"the Editor Settings."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:121
+msgid "Sets the list of favorite files and directories for this project."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:130
+msgid ""
+"Sets the initial value of the setting specified by [code]name[/code] to "
+"[code]value[/code]. This is used to provide a value for the Revert button in "
+"the Editor Settings. If [code]update_current[/code] is true, the current "
+"value of the setting will be set to [code]value[/code] as well."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:139
+msgid ""
+"Sets project-specific metadata with the [code]section[/code], [code]key[/"
+"code] and [code]data[/code] specified. This metadata is stored outside the "
+"project folder and therefore won't be checked into version control. See also "
+"[method get_project_metadata]."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:146
+msgid ""
+"Sets the list of recently visited folders in the file dialog for this "
+"project."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:154
+msgid ""
+"Sets the [code]value[/code] of the setting specified by [code]name[/code]. "
+"This is equivalent to using [method Object.set] on the EditorSettings "
+"instance."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:161
+msgid "Emitted after any editor setting has changed."
+msgstr ""
+
+#: doc/classes/EditorSettings.xml:167
+msgid ""
+"Emitted after any editor setting has changed. It's used by various editor "
+"plugins to update their visuals on theme changes or logic on configuration "
+"changes."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:4
+msgid "Custom gizmo for editing Spatial objects."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:7
+msgid ""
+"Custom gizmo that is used for providing custom visualization and editing "
+"(handles) for 3D Spatial objects. See [EditorSpatialGizmoPlugin] for more "
+"information."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:16
+msgid ""
+"Adds the specified [code]segments[/code] to the gizmo's collision shape for "
+"picking. Call this function during [method redraw]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:23
+msgid ""
+"Adds collision triangles to the gizmo for picking. A [TriangleMesh] can be "
+"generated from a regular [Mesh] too. Call this function during [method "
+"redraw]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:33
+msgid ""
+"Adds a list of handles (points) which can be used to deform the object being "
+"edited.\n"
+"There are virtual functions which will be called upon editing of these "
+"handles. Call this function during [method redraw]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:44
+msgid ""
+"Adds lines to the gizmo (as sets of 2 points), with a given material. The "
+"lines are used for visualizing the gizmo. Call this function during [method "
+"redraw]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:54
+msgid ""
+"Adds a mesh to the gizmo with the specified [code]billboard[/code] state, "
+"[code]skeleton[/code] and [code]material[/code]. If [code]billboard[/code] "
+"is [code]true[/code], the mesh will rotate to always face the camera. Call "
+"this function during [method redraw]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:63
+msgid ""
+"Adds an unscaled billboard for visualization. Call this function during "
+"[method redraw]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:69
+msgid ""
+"Removes everything in the gizmo including meshes, collisions and handles."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:78
+msgid ""
+"Commit a handle being edited (handles must have been previously added by "
+"[method add_handles]).\n"
+"If the [code]cancel[/code] parameter is [code]true[/code], an option to "
+"restore the edited value to the original is provided."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:86
+msgid ""
+"Gets the name of an edited handle (handles must have been previously added "
+"by [method add_handles]).\n"
+"Handles can be named for reference to the user when editing."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:94
+msgid ""
+"Gets actual value of a handle. This value can be anything and used for "
+"eventually undoing the motion when calling [method commit_handle]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:100
+msgid ""
+"Returns the [EditorSpatialGizmoPlugin] that owns this gizmo. It's useful to "
+"retrieve materials using [method EditorSpatialGizmoPlugin.get_material]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:106
+msgid "Returns the Spatial node associated with this gizmo."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:113
+msgid ""
+"Returns [code]true[/code] if the handle at index [code]index[/code] is "
+"highlighted by being hovered with the mouse."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:119
+msgid ""
+"This function is called when the [Spatial] this gizmo refers to changes (the "
+"[method Spatial.update_gizmo] is called)."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:128
+msgid ""
+"This function is used when the user drags a gizmo handle (previously added "
+"with [method add_handles]) in screen coordinates.\n"
+"The [Camera] is also provided so screen coordinates can be converted to "
+"raycasts."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:136
+msgid ""
+"Sets the gizmo's hidden state. If [code]true[/code], the gizmo will be "
+"hidden. If [code]false[/code], it will be shown."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmo.xml:143
+msgid ""
+"Sets the reference [Spatial] node for the gizmo. [code]node[/code] must "
+"inherit from [Spatial]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:4
+msgid "Used by the editor to define Spatial gizmo types."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:7
+msgid ""
+"EditorSpatialGizmoPlugin allows you to define a new type of Gizmo. There are "
+"two main ways to do so: extending [EditorSpatialGizmoPlugin] for the simpler "
+"gizmos, or creating a new [EditorSpatialGizmo] type. See the tutorial in the "
+"documentation for more info."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/spatial_gizmos."
+"html"
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:18
+msgid ""
+"Adds a new material to the internal material list for the plugin. It can "
+"then be accessed with [method get_material]. Should not be overridden."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:24
+msgid ""
+"Override this method to define whether the gizmo can be hidden or not. "
+"Returns [code]true[/code] if not overridden."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:34
+msgid ""
+"Override this method to commit gizmo handles. Called for this plugin's "
+"active gizmos."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:41
+msgid ""
+"Override this method to return a custom [EditorSpatialGizmo] for the spatial "
+"nodes of your choice, return [code]null[/code] for the rest of nodes. See "
+"also [method has_gizmo]."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:50
+msgid ""
+"Creates a handle material with its variants (selected and/or editable) and "
+"adds them to the internal material list. They can then be accessed with "
+"[method get_material] and used in [method EditorSpatialGizmo.add_handles]. "
+"Should not be overridden.\n"
+"You can optionally provide a texture to use instead of the default icon."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:61
+msgid ""
+"Creates an icon material with its variants (selected and/or editable) and "
+"adds them to the internal material list. They can then be accessed with "
+"[method get_material] and used in [method EditorSpatialGizmo."
+"add_unscaled_billboard]. Should not be overridden."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:72
+msgid ""
+"Creates an unshaded material with its variants (selected and/or editable) "
+"and adds them to the internal material list. They can then be accessed with "
+"[method get_material] and used in [method EditorSpatialGizmo.add_mesh] and "
+"[method EditorSpatialGizmo.add_lines]. Should not be overridden."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:80
+msgid ""
+"Override this method to provide gizmo's handle names. Called for this "
+"plugin's active gizmos."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:88
+msgid ""
+"Gets actual value of a handle from gizmo. Called for this plugin's active "
+"gizmos."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:96
+msgid ""
+"Gets material from the internal list of materials. If an "
+"[EditorSpatialGizmo] is provided, it will try to get the corresponding "
+"variant (selected and/or editable)."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:102
+msgid ""
+"Override this method to provide the name that will appear in the gizmo "
+"visibility menu."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:108
+msgid ""
+"Override this method to set the gizmo's priority. Higher values correspond "
+"to higher priority. If a gizmo with higher priority conflicts with another "
+"gizmo, only the gizmo with higher priority will be used.\n"
+"All built-in editor gizmos return a priority of [code]-1[/code]. If not "
+"overridden, this method will return [code]0[/code], which means custom "
+"gizmos will automatically override built-in gizmos."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:116
+msgid ""
+"Override this method to define which Spatial nodes have a gizmo from this "
+"plugin. Whenever a [Spatial] node is added to a scene this method is called, "
+"if it returns [code]true[/code] the node gets a generic [EditorSpatialGizmo] "
+"assigned and is added to this plugin's list of active gizmos."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:124
+msgid ""
+"Gets whether a handle is highlighted or not. Called for this plugin's active "
+"gizmos."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:130
+msgid ""
+"Override this method to define whether a Spatial with this gizmo should be "
+"selectable even when the gizmo is hidden."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:137
+msgid ""
+"Callback to redraw the provided gizmo. Called for this plugin's active "
+"gizmos."
+msgstr ""
+
+#: doc/classes/EditorSpatialGizmoPlugin.xml:147
+msgid ""
+"Update the value of a handle after it has been updated. Called for this "
+"plugin's active gizmos."
+msgstr ""
+
+#: doc/classes/EditorSpinSlider.xml:4
+msgid "Godot editor's control for editing numeric values."
+msgstr ""
+
+#: doc/classes/EditorSpinSlider.xml:7
+msgid ""
+"This [Control] node is used in the editor's Inspector dock to allow editing "
+"of numeric values. Can be used with [EditorInspectorPlugin] to recreate the "
+"same behavior."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:4
+msgid ""
+"Version Control System (VCS) interface which reads and writes to the local "
+"VCS in use."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:7
+msgid ""
+"Used by the editor to display VCS extracted information in the editor. The "
+"implementation of this API is included in VCS addons, which are essentially "
+"GDNative plugins that need to be put into the project folder. These VCS "
+"addons are scripts which are attached (on demand) to the object instance of "
+"[code]EditorVCSInterface[/code]. All the functions listed below, instead of "
+"performing the task themselves, they call the internally defined functions "
+"in the VCS addons to provide a plug-n-play experience."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:16
+msgid ""
+"Creates a version commit if the addon is initialized, else returns without "
+"doing anything. Uses the files which have been staged previously, with the "
+"commit message set to a value as provided as in the argument."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:23
+msgid ""
+"Returns an [Array] of [Dictionary] objects containing the diff output from "
+"the VCS in use, if a VCS addon is initialized, else returns an empty [Array] "
+"object. The diff contents also consist of some contextual lines which "
+"provide context to the observed line change in the file.\n"
+"Each [Dictionary] object has the line diff contents under the keys:\n"
+"- [code]\"content\"[/code] to store a [String] containing the line contents\n"
+"- [code]\"status\"[/code] to store a [String] which contains [code]\"+\"[/"
+"code] in case the content is a line addition but it stores a [code]\"-\"[/"
+"code] in case of deletion and an empty string in the case the line content "
+"is neither an addition nor a deletion.\n"
+"- [code]\"new_line_number\"[/code] to store an integer containing the new "
+"line number of the line content.\n"
+"- [code]\"line_count\"[/code] to store an integer containing the number of "
+"lines in the line content.\n"
+"- [code]\"old_line_number\"[/code] to store an integer containing the old "
+"line number of the line content.\n"
+"- [code]\"offset\"[/code] to store the offset of the line change since the "
+"first contextual line content."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:36
+msgid ""
+"Returns a [Dictionary] containing the path of the detected file change "
+"mapped to an integer signifying what kind of change the corresponding file "
+"has experienced.\n"
+"The following integer values are being used to signify that the detected "
+"file is:\n"
+"- [code]0[/code]: New to the VCS working directory\n"
+"- [code]1[/code]: Modified\n"
+"- [code]2[/code]: Renamed\n"
+"- [code]3[/code]: Deleted\n"
+"- [code]4[/code]: Typechanged"
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:48
+msgid "Returns the project name of the VCS working directory."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:54
+msgid ""
+"Returns the name of the VCS if the VCS has been initialized, else return an "
+"empty string."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:61
+msgid ""
+"Initializes the VCS addon if not already. Uses the argument value as the "
+"path to the working directory of the project. Creates the initial commit if "
+"required. Returns [code]true[/code] if no failure occurs, else returns "
+"[code]false[/code]."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:67
+msgid ""
+"Returns [code]true[/code] if the addon is ready to respond to function "
+"calls, else returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:73
+msgid ""
+"Returns [code]true[/code] if the VCS addon has been initialized, else "
+"returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:79
+msgid ""
+"Shuts down the VCS addon to allow cleanup code to run on call. Returns "
+"[code]true[/code] is no failure occurs, else returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:86
+msgid ""
+"Stages the file which should be committed when [method EditorVCSInterface."
+"commit] is called. Argument should contain the absolute path."
+msgstr ""
+
+#: doc/classes/EditorVCSInterface.xml:93
+msgid ""
+"Unstages the file which was staged previously to be committed, so that it is "
+"no longer committed when [method EditorVCSInterface.commit] is called. "
+"Argument should contain the absolute path."
+msgstr ""
+
+#: doc/classes/EncodedObjectAsID.xml:4
+msgid "Holds a reference to an [Object]'s instance ID."
+msgstr ""
+
+#: doc/classes/EncodedObjectAsID.xml:7
+msgid ""
+"Utility class which holds a reference to the internal identifier of an "
+"[Object] instance, as given by [method Object.get_instance_id]. This ID can "
+"then be used to retrieve the object instance with [method @GDScript."
+"instance_from_id].\n"
+"This class is used internally by the editor inspector and script debugger, "
+"but can also be used in plugins to pass and display objects as their IDs."
+msgstr ""
+
+#: doc/classes/EncodedObjectAsID.xml:16
+msgid ""
+"The [Object] identifier stored in this [EncodedObjectAsID] instance. The "
+"object instance can be retrieved with [method @GDScript.instance_from_id]."
+msgstr ""
+
+#: doc/classes/Engine.xml:4
+msgid "Access to engine properties."
+msgstr ""
+
+#: doc/classes/Engine.xml:7
+msgid ""
+"The [Engine] singleton allows you to query and modify the project's run-time "
+"parameters, such as frames per second, time scale, and others."
+msgstr ""
+
+#: doc/classes/Engine.xml:15
+msgid ""
+"Returns engine author information in a Dictionary.\n"
+"[code]lead_developers[/code] - Array of Strings, lead developer names\n"
+"[code]founders[/code] - Array of Strings, founder names\n"
+"[code]project_managers[/code] - Array of Strings, project manager names\n"
+"[code]developers[/code] - Array of Strings, developer names"
+msgstr ""
+
+#: doc/classes/Engine.xml:25
+msgid ""
+"Returns an Array of copyright information Dictionaries.\n"
+"[code]name[/code] - String, component name\n"
+"[code]parts[/code] - Array of Dictionaries {[code]files[/code], "
+"[code]copyright[/code], [code]license[/code]} describing subsections of the "
+"component"
+msgstr ""
+
+#: doc/classes/Engine.xml:33
+msgid ""
+"Returns a Dictionary of Arrays of donor names.\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]}"
+msgstr ""
+
+#: doc/classes/Engine.xml:40
+msgid ""
+"Returns the total number of frames drawn. On headless platforms, or if the "
+"render loop is disabled with [code]--disable-render-loop[/code] via command "
+"line, [method get_frames_drawn] always returns [code]0[/code]. See [method "
+"get_idle_frames]."
+msgstr ""
+
+#: doc/classes/Engine.xml:46
+msgid "Returns the frames per second of the running game."
+msgstr ""
+
+#: doc/classes/Engine.xml:52
+msgid ""
+"Returns the total number of frames passed since engine initialization which "
+"is advanced on each [b]idle frame[/b], regardless of whether the render loop "
+"is enabled. See also [method get_frames_drawn] and [method "
+"get_physics_frames].\n"
+"[method get_idle_frames] can be used to run expensive logic less often "
+"without relying on a [Timer]:\n"
+"[codeblock]\n"
+"func _process(_delta):\n"
+" if Engine.get_idle_frames() % 2 == 0:\n"
+" pass # Run expensive logic only once every 2 idle (render) frames "
+"here.\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Engine.xml:64
+msgid ""
+"Returns Dictionary of licenses used by Godot and included third party "
+"components."
+msgstr ""
+
+#: doc/classes/Engine.xml:70
+msgid "Returns Godot license text."
+msgstr ""
+
+#: doc/classes/Engine.xml:76
+msgid "Returns the main loop object (see [MainLoop] and [SceneTree])."
+msgstr ""
+
+#: doc/classes/Engine.xml:82
+msgid ""
+"Returns the total number of frames passed since engine initialization which "
+"is advanced on each [b]physics frame[/b]. See also [method "
+"get_idle_frames].\n"
+"[method get_physics_frames] can be used to run expensive logic less often "
+"without relying on a [Timer]:\n"
+"[codeblock]\n"
+"func _physics_process(_delta):\n"
+" if Engine.get_physics_frames() % 2 == 0:\n"
+" pass # Run expensive logic only once every 2 physics frames here.\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Engine.xml:94
+msgid ""
+"Returns the fraction through the current physics tick we are at the time of "
+"rendering the frame. This can be used to implement fixed timestep "
+"interpolation."
+msgstr ""
+
+#: doc/classes/Engine.xml:101
+msgid ""
+"Returns a global singleton with given [code]name[/code]. Often used for "
+"plugins, e.g. [code]GodotPayment[/code] on Android."
+msgstr ""
+
+#: doc/classes/Engine.xml:107
+msgid ""
+"Returns the current engine version information in a Dictionary.\n"
+"[code]major[/code] - Holds the major version number as an int\n"
+"[code]minor[/code] - Holds the minor version number as an int\n"
+"[code]patch[/code] - Holds the patch version number as an int\n"
+"[code]hex[/code] - Holds the full version number encoded as a "
+"hexadecimal int with one byte (2 places) per number (see example below)\n"
+"[code]status[/code] - Holds the status (e.g. \"beta\", \"rc1\", "
+"\"rc2\", ... \"stable\") as a String\n"
+"[code]build[/code] - Holds the build name (e.g. \"custom_build\") as a "
+"String\n"
+"[code]hash[/code] - Holds the full Git commit hash as a String\n"
+"[code]year[/code] - Holds the year the version was released in as an "
+"int\n"
+"[code]string[/code] - [code]major[/code] + [code]minor[/code] + "
+"[code]patch[/code] + [code]status[/code] + [code]build[/code] in a single "
+"String\n"
+"The [code]hex[/code] value is encoded as follows, from left to right: one "
+"byte for the major, one byte for the minor, one byte for the patch version. "
+"For example, \"3.1.12\" would be [code]0x03010C[/code]. [b]Note:[/b] It's "
+"still an int internally, and printing it will give you its decimal "
+"representation, which is not particularly meaningful. Use hexadecimal "
+"literals for easy version comparisons from code:\n"
+"[codeblock]\n"
+"if Engine.get_version_info().hex >= 0x030200:\n"
+" # Do things specific to version 3.2 or later\n"
+"else:\n"
+" # Do things specific to versions before 3.2\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Engine.xml:130
+msgid ""
+"Returns [code]true[/code] if a singleton with given [code]name[/code] exists "
+"in global scope."
+msgstr ""
+
+#: doc/classes/Engine.xml:136
+msgid ""
+"Returns [code]true[/code] if the game is inside the fixed process and "
+"physics phase of the game loop."
+msgstr ""
+
+#: doc/classes/Engine.xml:142
+msgid ""
+"If [code]true[/code], the script is currently running inside the editor. "
+"This is useful for [code]tool[/code] scripts to conditionally draw editor "
+"helpers, or prevent accidentally running \"game\" code that would affect the "
+"scene state while in the editor:\n"
+"[codeblock]\n"
+"if Engine.editor_hint:\n"
+" draw_gizmos()\n"
+"else:\n"
+" simulate_physics()\n"
+"[/codeblock]\n"
+"See [url=https://docs.godotengine.org/en/3.4/tutorials/misc/"
+"running_code_in_the_editor.html]Running code in the editor[/url] in the "
+"documentation for more information.\n"
+"[b]Note:[/b] To detect whether the script is run from an editor [i]build[/i] "
+"(e.g. when pressing [code]F5[/code]), use [method OS.has_feature] with the "
+"[code]\"editor\"[/code] argument instead. [code]OS.has_feature(\"editor\")[/"
+"code] will evaluate to [code]true[/code] both when the code is running in "
+"the editor and when running the project from the editor, but it will "
+"evaluate to [code]false[/code] when the code is run from an exported project."
+msgstr ""
+
+#: doc/classes/Engine.xml:153
+msgid ""
+"The number of fixed iterations per second. This controls how often physics "
+"simulation and [method Node._physics_process] methods are run. This value "
+"should generally always be set to [code]60[/code] or above, as Godot doesn't "
+"interpolate the physics step. As a result, values lower than [code]60[/code] "
+"will look stuttery. This value can be increased to make input more reactive "
+"or work around tunneling issues, but keep in mind doing so will increase CPU "
+"usage."
+msgstr ""
+
+#: doc/classes/Engine.xml:156
+msgid ""
+"Controls how much physics ticks are synchronized with real time. For 0 or "
+"less, the ticks are synchronized. Such values are recommended for network "
+"games, where clock synchronization matters. Higher values cause higher "
+"deviation of the in-game clock and real clock but smooth out framerate "
+"jitters. The default value of 0.5 should be fine for most; values above 2 "
+"could cause the game to react to dropped frames with a noticeable delay and "
+"are not recommended.\n"
+"[b]Note:[/b] For best results, when using a custom physics interpolation "
+"solution, the physics jitter fix should be disabled by setting [member "
+"physics_jitter_fix] to [code]0[/code]."
+msgstr ""
+
+#: doc/classes/Engine.xml:160
+msgid ""
+"If [code]false[/code], stops printing error and warning messages to the "
+"console and editor Output log. This can be used to hide error and warning "
+"messages during unit test suite runs. This property is equivalent to the "
+"[member ProjectSettings.application/run/disable_stderr] project setting.\n"
+"[b]Warning:[/b] If you set this to [code]false[/code] anywhere in the "
+"project, important error messages may be hidden even if they are emitted "
+"from other scripts. If this is set to [code]false[/code] in a [code]@tool[/"
+"code] script, this will also impact the editor itself. Do [i]not[/i] report "
+"bugs before ensuring error messages are enabled (as they are by default).\n"
+"[b]Note:[/b] This property does not impact the editor's Errors tab when "
+"running a project from the editor."
+msgstr ""
+
+#: doc/classes/Engine.xml:165
+msgid ""
+"The desired frames per second. If the hardware cannot keep up, this setting "
+"may not be respected. A value of 0 means no limit."
+msgstr ""
+
+#: doc/classes/Engine.xml:168
+msgid ""
+"Controls how fast or slow the in-game clock ticks versus the real life one. "
+"It defaults to 1.0. A value of 2.0 means the game moves twice as fast as "
+"real life, whilst a value of 0.5 means the game moves at half the regular "
+"speed."
+msgstr ""
+
+#: doc/classes/Environment.xml:4
+msgid ""
+"Resource for environment nodes (like [WorldEnvironment]) that define "
+"multiple rendering options."
+msgstr ""
+
+#: doc/classes/Environment.xml:7
+msgid ""
+"Resource for environment nodes (like [WorldEnvironment]) that define "
+"multiple environment operations (such as background [Sky] or [Color], "
+"ambient light, fog, depth-of-field...). These parameters affect the final "
+"render of the scene. The order of these operations is:\n"
+"- Depth of Field Blur\n"
+"- Glow\n"
+"- Tonemap (Auto Exposure)\n"
+"- Adjustments\n"
+"These effects will only apply when the [Viewport]'s intended usage is \"3D\" "
+"or \"3D Without Effects\". This can be configured for the root Viewport with "
+"[member ProjectSettings.rendering/quality/intended_usage/"
+"framebuffer_allocation], or for specific Viewports via the [member Viewport."
+"usage] property."
+msgstr ""
+
+#: doc/classes/Environment.xml:15 doc/classes/WorldEnvironment.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/3d/"
+"environment_and_post_processing.html"
+msgstr ""
+
+#: doc/classes/Environment.xml:16
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/3d/high_dynamic_range.html"
+msgstr ""
+
+#: doc/classes/Environment.xml:17 doc/classes/Material.xml:10
+#: doc/classes/Mesh.xml:10 doc/classes/MeshInstance.xml:10
+#: doc/classes/WorldEnvironment.xml:13
+msgid "https://godotengine.org/asset-library/asset/123"
+msgstr ""
+
+#: doc/classes/Environment.xml:26
+msgid ""
+"Returns [code]true[/code] if the glow level [code]idx[/code] is specified, "
+"[code]false[/code] otherwise."
+msgstr ""
+
+#: doc/classes/Environment.xml:34
+msgid ""
+"Enables or disables the glow level at index [code]idx[/code]. Each level "
+"relies on the previous level. This means that enabling higher glow levels "
+"will slow down the glow effect rendering, even if previous levels aren't "
+"enabled."
+msgstr ""
+
+#: doc/classes/Environment.xml:40
+msgid ""
+"The global brightness value of the rendered scene. Effective only if "
+"[code]adjustment_enabled[/code] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/Environment.xml:43
+msgid ""
+"Applies the provided [Texture] resource to affect the global color aspect of "
+"the rendered scene. Effective only if [code]adjustment_enabled[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Environment.xml:46
+msgid ""
+"The global contrast value of the rendered scene (default value is 1). "
+"Effective only if [code]adjustment_enabled[/code] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/Environment.xml:49
+msgid ""
+"If [code]true[/code], enables the [code]adjustment_*[/code] properties "
+"provided by this resource. If [code]false[/code], modifications to the "
+"[code]adjustment_*[/code] properties will have no effect on the rendered "
+"scene."
+msgstr ""
+
+#: doc/classes/Environment.xml:52
+msgid ""
+"The global color saturation value of the rendered scene (default value is "
+"1). Effective only if [code]adjustment_enabled[/code] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/Environment.xml:55
+msgid "The ambient light's [Color]."
+msgstr ""
+
+#: doc/classes/Environment.xml:58
+msgid ""
+"The ambient light's energy. The higher the value, the stronger the light."
+msgstr ""
+
+#: doc/classes/Environment.xml:61
+msgid ""
+"Defines the amount of light that the sky brings on the scene. A value of 0 "
+"means that the sky's light emission has no effect on the scene illumination, "
+"thus all ambient illumination is provided by the ambient light. On the "
+"contrary, a value of 1 means that all the light that affects the scene is "
+"provided by the sky, thus the ambient light parameter has no effect on the "
+"scene."
+msgstr ""
+
+#: doc/classes/Environment.xml:64
+msgid ""
+"If [code]true[/code], enables the tonemapping auto exposure mode of the "
+"scene renderer. If [code]true[/code], the renderer will automatically "
+"determine the exposure setting to adapt to the scene's illumination and the "
+"observed light."
+msgstr ""
+
+#: doc/classes/Environment.xml:67
+msgid "The maximum luminance value for the auto exposure."
+msgstr ""
+
+#: doc/classes/Environment.xml:70
+msgid "The minimum luminance value for the auto exposure."
+msgstr ""
+
+#: doc/classes/Environment.xml:73
+msgid ""
+"The scale of the auto exposure effect. Affects the intensity of auto "
+"exposure."
+msgstr ""
+
+#: doc/classes/Environment.xml:76
+msgid ""
+"The speed of the auto exposure effect. Affects the time needed for the "
+"camera to perform auto exposure."
+msgstr ""
+
+#: doc/classes/Environment.xml:79
+msgid "The ID of the camera feed to show in the background."
+msgstr ""
+
+#: doc/classes/Environment.xml:82
+msgid ""
+"The maximum layer ID to display. Only effective when using the [constant "
+"BG_CANVAS] background mode."
+msgstr ""
+
+#: doc/classes/Environment.xml:85
+msgid ""
+"The [Color] displayed for clear areas of the scene. Only effective when "
+"using the [constant BG_COLOR] or [constant BG_COLOR_SKY] background modes)."
+msgstr ""
+
+#: doc/classes/Environment.xml:88
+msgid "The power of the light emitted by the background."
+msgstr ""
+
+#: doc/classes/Environment.xml:91
+msgid "The background mode. See [enum BGMode] for possible values."
+msgstr ""
+
+#: doc/classes/Environment.xml:94
+msgid "The [Sky] resource defined as background."
+msgstr ""
+
+#: doc/classes/Environment.xml:97
+msgid "The [Sky] resource's custom field of view."
+msgstr ""
+
+#: doc/classes/Environment.xml:100
+msgid "The [Sky] resource's rotation expressed as a [Basis]."
+msgstr ""
+
+#: doc/classes/Environment.xml:103
+msgid "The [Sky] resource's rotation expressed as Euler angles in radians."
+msgstr ""
+
+#: doc/classes/Environment.xml:106
+msgid "The [Sky] resource's rotation expressed as Euler angles in degrees."
+msgstr ""
+
+#: doc/classes/Environment.xml:109
+msgid "The amount of far blur for the depth-of-field effect."
+msgstr ""
+
+#: doc/classes/Environment.xml:112
+msgid ""
+"The distance from the camera where the far blur effect affects the rendering."
+msgstr ""
+
+#: doc/classes/Environment.xml:115
+msgid "If [code]true[/code], enables the depth-of-field far blur effect."
+msgstr ""
+
+#: doc/classes/Environment.xml:118
+msgid ""
+"The depth-of-field far blur's quality. Higher values can mitigate the "
+"visible banding effect seen at higher strengths, but are much slower."
+msgstr ""
+
+#: doc/classes/Environment.xml:121
+msgid "The length of the transition between the no-blur area and far blur."
+msgstr ""
+
+#: doc/classes/Environment.xml:124
+msgid "The amount of near blur for the depth-of-field effect."
+msgstr ""
+
+#: doc/classes/Environment.xml:127
+msgid ""
+"Distance from the camera where the near blur effect affects the rendering."
+msgstr ""
+
+#: doc/classes/Environment.xml:130
+msgid "If [code]true[/code], enables the depth-of-field near blur effect."
+msgstr ""
+
+#: doc/classes/Environment.xml:133
+msgid ""
+"The depth-of-field near blur's quality. Higher values can mitigate the "
+"visible banding effect seen at higher strengths, but are much slower."
+msgstr ""
+
+#: doc/classes/Environment.xml:136
+msgid "The length of the transition between the near blur and no-blur area."
+msgstr ""
+
+#: doc/classes/Environment.xml:139
+msgid "The fog's [Color]."
+msgstr ""
+
+#: doc/classes/Environment.xml:142
+msgid "The fog's depth starting distance from the camera."
+msgstr ""
+
+#: doc/classes/Environment.xml:145
+msgid ""
+"The fog depth's intensity curve. A number of presets are available in the "
+"[b]Inspector[/b] by right-clicking the curve."
+msgstr ""
+
+#: doc/classes/Environment.xml:148
+msgid ""
+"If [code]true[/code], the depth fog effect is enabled. When enabled, fog "
+"will appear in the distance (relative to the camera)."
+msgstr ""
+
+#: doc/classes/Environment.xml:151
+msgid ""
+"The fog's depth end distance from the camera. If this value is set to 0, it "
+"will be equal to the current camera's [member Camera.far] value."
+msgstr ""
+
+#: doc/classes/Environment.xml:154
+msgid ""
+"If [code]true[/code], fog effects are enabled. [member fog_height_enabled] "
+"and/or [member fog_depth_enabled] must be set to [code]true[/code] to "
+"actually display fog."
+msgstr ""
+
+#: doc/classes/Environment.xml:157
+msgid ""
+"The height fog's intensity. A number of presets are available in the "
+"[b]Inspector[/b] by right-clicking the curve."
+msgstr ""
+
+#: doc/classes/Environment.xml:160
+msgid ""
+"If [code]true[/code], the height fog effect is enabled. When enabled, fog "
+"will appear in a defined height range, regardless of the distance from the "
+"camera. This can be used to simulate \"deep water\" effects with a lower "
+"performance cost compared to a dedicated shader."
+msgstr ""
+
+#: doc/classes/Environment.xml:163
+msgid ""
+"The Y coordinate where the height fog will be the most intense. If this "
+"value is greater than [member fog_height_min], fog will be displayed from "
+"bottom to top. Otherwise, it will be displayed from top to bottom."
+msgstr ""
+
+#: doc/classes/Environment.xml:166
+msgid ""
+"The Y coordinate where the height fog will be the least intense. If this "
+"value is greater than [member fog_height_max], fog will be displayed from "
+"top to bottom. Otherwise, it will be displayed from bottom to top."
+msgstr ""
+
+#: doc/classes/Environment.xml:169
+msgid ""
+"The intensity of the depth fog color transition when looking towards the "
+"sun. The sun's direction is determined automatically using the "
+"DirectionalLight node in the scene."
+msgstr ""
+
+#: doc/classes/Environment.xml:172
+msgid "The depth fog's [Color] when looking towards the sun."
+msgstr ""
+
+#: doc/classes/Environment.xml:175
+msgid ""
+"The intensity of the fog light transmittance effect. Amount of light that "
+"the fog transmits."
+msgstr ""
+
+#: doc/classes/Environment.xml:178
+msgid ""
+"Enables fog's light transmission effect. If [code]true[/code], light will be "
+"more visible in the fog to simulate light scattering as in real life."
+msgstr ""
+
+#: doc/classes/Environment.xml:181
+msgid ""
+"Smooths out the blockiness created by sampling higher levels, at the cost of "
+"performance.\n"
+"[b]Note:[/b] When using the GLES2 renderer, this is only available if the "
+"GPU supports the [code]GL_EXT_gpu_shader4[/code] extension."
+msgstr ""
+
+#: doc/classes/Environment.xml:185
+msgid "The glow blending mode."
+msgstr ""
+
+#: doc/classes/Environment.xml:188
+msgid ""
+"The bloom's intensity. If set to a value higher than [code]0[/code], this "
+"will make glow visible in areas darker than the [member glow_hdr_threshold]."
+msgstr ""
+
+#: doc/classes/Environment.xml:191
+msgid "If [code]true[/code], the glow effect is enabled."
+msgstr ""
+
+#: doc/classes/Environment.xml:194
+msgid ""
+"The higher threshold of the HDR glow. Areas brighter than this threshold "
+"will be clamped for the purposes of the glow effect."
+msgstr ""
+
+#: doc/classes/Environment.xml:197
+msgid "The bleed scale of the HDR glow."
+msgstr ""
+
+#: doc/classes/Environment.xml:200
+msgid ""
+"The lower threshold of the HDR glow. When using the GLES2 renderer (which "
+"doesn't support HDR), this needs to be below [code]1.0[/code] for glow to be "
+"visible. A value of [code]0.9[/code] works well in this case."
+msgstr ""
+
+#: doc/classes/Environment.xml:203
+msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
+"The glow intensity. When using the GLES2 renderer, this should be increased "
+"to 1.5 to compensate for the lack of HDR rendering."
+msgstr ""
+
+#: doc/classes/Environment.xml:209
+msgid ""
+"If [code]true[/code], the 1st level of glow is enabled. This is the most "
+"\"local\" level (least blurry)."
+msgstr ""
+
+#: doc/classes/Environment.xml:212
+msgid "If [code]true[/code], the 2th level of glow is enabled."
+msgstr ""
+
+#: doc/classes/Environment.xml:215
+msgid "If [code]true[/code], the 3th level of glow is enabled."
+msgstr ""
+
+#: doc/classes/Environment.xml:218
+msgid "If [code]true[/code], the 4th level of glow is enabled."
+msgstr ""
+
+#: doc/classes/Environment.xml:221
+msgid "If [code]true[/code], the 5th level of glow is enabled."
+msgstr ""
+
+#: doc/classes/Environment.xml:224
+msgid "If [code]true[/code], the 6th level of glow is enabled."
+msgstr ""
+
+#: doc/classes/Environment.xml:227
+msgid ""
+"If [code]true[/code], the 7th level of glow is enabled. This is the most "
+"\"global\" level (blurriest)."
+msgstr ""
+
+#: doc/classes/Environment.xml:230
+msgid ""
+"The glow strength. When using the GLES2 renderer, this should be increased "
+"to 1.3 to compensate for the lack of HDR rendering."
+msgstr ""
+
+#: doc/classes/Environment.xml:233
+msgid "The depth tolerance for screen-space reflections."
+msgstr ""
+
+#: doc/classes/Environment.xml:236
+msgid ""
+"If [code]true[/code], screen-space reflections are enabled. Screen-space "
+"reflections are more accurate than reflections from [GIProbe]s or "
+"[ReflectionProbe]s, but are slower and can't reflect surfaces occluded by "
+"others."
+msgstr ""
+
+#: doc/classes/Environment.xml:239
+msgid ""
+"The fade-in distance for screen-space reflections. Affects the area from the "
+"reflected material to the screen-space reflection)."
+msgstr ""
+
+#: doc/classes/Environment.xml:242
+msgid ""
+"The fade-out distance for screen-space reflections. Affects the area from "
+"the screen-space reflection to the \"global\" reflection."
+msgstr ""
+
+#: doc/classes/Environment.xml:245
+msgid ""
+"The maximum number of steps for screen-space reflections. Higher values are "
+"slower."
+msgstr ""
+
+#: doc/classes/Environment.xml:248
+msgid ""
+"If [code]true[/code], screen-space reflections will take the material "
+"roughness into account."
+msgstr ""
+
+#: doc/classes/Environment.xml:251
+msgid ""
+"The screen-space ambient occlusion intensity on materials that have an AO "
+"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
+"visible in areas darkened by AO textures."
+msgstr ""
+
+#: doc/classes/Environment.xml:254
+msgid ""
+"The screen-space ambient occlusion bias. This should be kept high enough to "
+"prevent \"smooth\" curves from being affected by ambient occlusion."
+msgstr ""
+
+#: doc/classes/Environment.xml:257
+msgid ""
+"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
+"possible values."
+msgstr ""
+
+#: doc/classes/Environment.xml:260
+msgid "The screen-space ambient occlusion color."
+msgstr ""
+
+#: doc/classes/Environment.xml:263
+msgid "The screen-space ambient occlusion edge sharpness."
+msgstr ""
+
+#: doc/classes/Environment.xml:266
+msgid ""
+"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
+"This darkens objects' corners and cavities to simulate ambient light not "
+"reaching the entire object as in real life. This works well for small, "
+"dynamic objects, but baked lighting or ambient occlusion textures will do a "
+"better job at displaying ambient occlusion on large static objects. This is "
+"a costly effect and should be disabled first when running into performance "
+"issues."
+msgstr ""
+
+#: doc/classes/Environment.xml:269
+msgid ""
+"The primary screen-space ambient occlusion intensity. See also [member "
+"ssao_radius]."
+msgstr ""
+
+#: doc/classes/Environment.xml:272
+msgid ""
+"The secondary screen-space ambient occlusion intensity. See also [member "
+"ssao_radius2]."
+msgstr ""
+
+#: doc/classes/Environment.xml:275
+msgid ""
+"The screen-space ambient occlusion intensity in direct light. In real life, "
+"ambient occlusion only applies to indirect light, which means its effects "
+"can't be seen in direct light. Values higher than [code]0[/code] will make "
+"the SSAO effect visible in direct light."
+msgstr ""
+
+#: doc/classes/Environment.xml:278
+msgid ""
+"The screen-space ambient occlusion quality. Higher qualities will make "
+"better use of small objects for ambient occlusion, but are slower."
+msgstr ""
+
+#: doc/classes/Environment.xml:281
+msgid "The primary screen-space ambient occlusion radius."
+msgstr ""
+
+#: doc/classes/Environment.xml:284
+msgid ""
+"The secondary screen-space ambient occlusion radius. If set to a value "
+"higher than [code]0[/code], enables the secondary screen-space ambient "
+"occlusion effect which can be used to improve the effect's appearance (at "
+"the cost of performance)."
+msgstr ""
+
+#: doc/classes/Environment.xml:287
+msgid "The default exposure used for tonemapping."
+msgstr ""
+
+#: doc/classes/Environment.xml:290
+msgid ""
+"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
+"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
+"support rendering on HDR displays yet.)"
+msgstr ""
+
+#: doc/classes/Environment.xml:293
+msgid ""
+"The white reference value for tonemapping. Only effective if the [member "
+"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
+msgstr ""
+
+#: doc/classes/Environment.xml:298
+msgid ""
+"Keeps on screen every pixel drawn in the background. This is the fastest "
+"background mode, but it can only be safely used in fully-interior scenes (no "
+"visible sky or sky reflections). If enabled in a scene where the background "
+"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
+msgstr ""
+
+#: doc/classes/Environment.xml:301
+msgid ""
+"Clears the background using the clear color defined in [member "
+"ProjectSettings.rendering/environment/default_clear_color]."
+msgstr ""
+
+#: doc/classes/Environment.xml:304
+msgid "Clears the background using a custom clear color."
+msgstr ""
+
+#: doc/classes/Environment.xml:307
+msgid "Displays a user-defined sky in the background."
+msgstr ""
+
+#: doc/classes/Environment.xml:310
+msgid ""
+"Clears the background using a custom clear color and allows defining a sky "
+"for shading and reflection. This mode is slightly faster than [constant "
+"BG_SKY] and should be preferred in scenes where reflections can be visible, "
+"but the sky itself never is (e.g. top-down camera)."
+msgstr ""
+
+#: doc/classes/Environment.xml:313
+msgid "Displays a [CanvasLayer] in the background."
+msgstr ""
+
+#: doc/classes/Environment.xml:316
+msgid "Displays a camera feed in the background."
+msgstr ""
+
+#: doc/classes/Environment.xml:319
+msgid "Represents the size of the [enum BGMode] enum."
+msgstr ""
+
+#: doc/classes/Environment.xml:322
+msgid ""
+"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
+"flare, bright sources."
+msgstr ""
+
+#: doc/classes/Environment.xml:325
+msgid ""
+"Screen glow blending mode. Increases brightness, used frequently with bloom."
+msgstr ""
+
+#: doc/classes/Environment.xml:328
+msgid ""
+"Soft light glow blending mode. Modifies contrast, exposes shadows and "
+"highlights (vivid bloom)."
+msgstr ""
+
+#: doc/classes/Environment.xml:331
+msgid ""
+"Replace glow blending mode. Replaces all pixels' color by the glow value. "
+"This can be used to simulate a full-screen blur effect by tweaking the glow "
+"parameters to match the original image's brightness."
+msgstr ""
+
+#: doc/classes/Environment.xml:334
+msgid ""
+"Linear tonemapper operator. Reads the linear data and passes it on "
+"unmodified."
+msgstr ""
+
+#: doc/classes/Environment.xml:337
+msgid ""
+"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
+"colors by this formula: [code]color = color / (1 + color)[/code]."
+msgstr ""
+
+#: doc/classes/Environment.xml:340
+msgid "Filmic tonemapper operator."
+msgstr ""
+
+#: doc/classes/Environment.xml:343
+msgid ""
+"Academy Color Encoding System tonemapper operator. Performs an aproximation "
+"of the ACES tonemapping curve."
+msgstr ""
+
+#: doc/classes/Environment.xml:346
+msgid ""
+"High quality Academy Color Encoding System tonemapper operator that matches "
+"the industry standard. Performs a more physically accurate curve fit which "
+"better simulates how light works in the real world. The color of lights and "
+"emissive materials will become lighter as the emissive energy increases, and "
+"will eventually become white if the light is bright enough to saturate the "
+"camera sensor."
+msgstr ""
+
+#: doc/classes/Environment.xml:349
+msgid "Low depth-of-field blur quality (fastest)."
+msgstr ""
+
+#: doc/classes/Environment.xml:352
+msgid "Medium depth-of-field blur quality."
+msgstr ""
+
+#: doc/classes/Environment.xml:355
+msgid "High depth-of-field blur quality (slowest)."
+msgstr ""
+
+#: doc/classes/Environment.xml:358
+msgid "No blur for the screen-space ambient occlusion effect (fastest)."
+msgstr ""
+
+#: doc/classes/Environment.xml:361
+msgid "1×1 blur for the screen-space ambient occlusion effect."
+msgstr ""
+
+#: doc/classes/Environment.xml:364
+msgid "2×2 blur for the screen-space ambient occlusion effect."
+msgstr ""
+
+#: doc/classes/Environment.xml:367
+msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
+msgstr ""
+
+#: doc/classes/Environment.xml:370
+msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
+msgstr ""
+
+#: doc/classes/Environment.xml:373
+msgid "Low quality for the screen-space ambient occlusion effect."
+msgstr ""
+
+#: doc/classes/Environment.xml:376
+msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgstr ""
+
+#: doc/classes/Expression.xml:4
+msgid "A class that stores an expression you can execute."
+msgstr ""
+
+#: doc/classes/Expression.xml:7
+msgid ""
+"An expression can be made of any arithmetic operation, built-in math "
+"function call, method call of a passed instance, or built-in type "
+"construction call.\n"
+"An example expression text using the built-in math functions could be "
+"[code]sqrt(pow(3,2) + pow(4,2))[/code].\n"
+"In the following example we use a [LineEdit] node to write our expression "
+"and show the result.\n"
+"[codeblock]\n"
+"onready var expression = Expression.new()\n"
+"\n"
+"func _ready():\n"
+" $LineEdit.connect(\"text_entered\", self, \"_on_text_entered\")\n"
+"\n"
+"func _on_text_entered(command):\n"
+" var error = expression.parse(command, [])\n"
+" if error != OK:\n"
+" print(expression.get_error_text())\n"
+" return\n"
+" var result = expression.execute([], null, true)\n"
+" if not expression.has_execute_failed():\n"
+" $LineEdit.text = str(result)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Expression.xml:35
+msgid ""
+"Executes the expression that was previously parsed by [method parse] and "
+"returns the result. Before you use the returned object, you should check if "
+"the method failed by calling [method has_execute_failed].\n"
+"If you defined input variables in [method parse], you can specify their "
+"values in the inputs array, in the same order."
+msgstr ""
+
+#: doc/classes/Expression.xml:42
+msgid "Returns the error text if [method parse] has failed."
+msgstr ""
+
+#: doc/classes/Expression.xml:48
+msgid "Returns [code]true[/code] if [method execute] has failed."
+msgstr ""
+
+#: doc/classes/Expression.xml:56
+msgid ""
+"Parses the expression and returns an [enum Error] code.\n"
+"You can optionally specify names of variables that may appear in the "
+"expression with [code]input_names[/code], so that you can bind them when it "
+"gets executed."
+msgstr ""
+
+#: doc/classes/ExternalTexture.xml:4
+msgid "Enable OpenGL ES external texture extension."
+msgstr ""
+
+#: doc/classes/ExternalTexture.xml:7
+msgid ""
+"Enable support for the OpenGL ES external texture extension as defined by "
+"[url=https://www.khronos.org/registry/OpenGL/extensions/OES/"
+"OES_EGL_image_external.txt]OES_EGL_image_external[/url].\n"
+"[b]Note:[/b] This is only supported for Android platforms."
+msgstr ""
+
+#: doc/classes/ExternalTexture.xml:16
+msgid "Returns the external texture name."
+msgstr ""
+
+#: doc/classes/ExternalTexture.xml:23
+msgid "External texture size."
+msgstr ""
+
+#: doc/classes/File.xml:4
+msgid "Type to handle file reading and writing operations."
+msgstr ""
+
+#: doc/classes/File.xml:7
+msgid ""
+"File type. This is used to permanently store data into the user device's "
+"file system and to read from it. This can be used to store game save data or "
+"player configuration files, for example.\n"
+"Here's a sample on how to write and read from a file:\n"
+"[codeblock]\n"
+"func save(content):\n"
+" var file = File.new()\n"
+" file.open(\"user://save_game.dat\", File.WRITE)\n"
+" file.store_string(content)\n"
+" file.close()\n"
+"\n"
+"func load():\n"
+" var file = File.new()\n"
+" file.open(\"user://save_game.dat\", File.READ)\n"
+" var content = file.get_as_text()\n"
+" file.close()\n"
+" return content\n"
+"[/codeblock]\n"
+"In the example above, the file will be saved in the user data folder as "
+"specified in the [url=https://docs.godotengine.org/en/3.4/tutorials/io/"
+"data_paths.html]Data paths[/url] documentation.\n"
+"[b]Note:[/b] To access project resources once exported, it is recommended to "
+"use [ResourceLoader] instead of the [File] API, as some files are converted "
+"to engine-specific formats and their original source files might not be "
+"present in the exported PCK package.\n"
+"[b]Note:[/b] Files are automatically closed only if the process exits "
+"\"normally\" (such as by clicking the window manager's close button or "
+"pressing [b]Alt + F4[/b]). If you stop the project execution by pressing "
+"[b]F8[/b] while the project is running, the file won't be closed as the game "
+"process will be killed. You can work around this by calling [method flush] "
+"at regular intervals."
+msgstr ""
+
+#: doc/classes/File.xml:35
+msgid ""
+"Closes the currently opened file and prevents subsequent read/write "
+"operations. Use [method flush] to persist the data to disk without closing "
+"the file."
+msgstr ""
+
+#: doc/classes/File.xml:41
+msgid ""
+"Returns [code]true[/code] if the file cursor has already read past the end "
+"of the file.\n"
+"[b]Note:[/b] [code]eof_reached() == false[/code] cannot be used to check "
+"whether there is more data available. To loop while there is more data "
+"available, use:\n"
+"[codeblock]\n"
+"while file.get_position() < file.get_len():\n"
+" # Read data\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/File.xml:53
+msgid ""
+"Returns [code]true[/code] if the file exists in the given path.\n"
+"[b]Note:[/b] Many resources types are imported (e.g. textures or sound "
+"files), and their source asset will not be included in the exported game, as "
+"only the imported version is used. See [method ResourceLoader.exists] for an "
+"alternative approach that takes resource remapping into account."
+msgstr ""
+
+#: doc/classes/File.xml:60
+msgid ""
+"Writes the file's buffer to disk. Flushing is automatically performed when "
+"the file is closed. This means you don't need to call [method flush] "
+"manually before closing a file using [method close]. Still, calling [method "
+"flush] can be used to ensure the data is safe even if the project crashes "
+"instead of being closed gracefully.\n"
+"[b]Note:[/b] Only call [method flush] when you actually need it. Otherwise, "
+"it will decrease performance due to constant disk writes."
+msgstr ""
+
+#: doc/classes/File.xml:67
+msgid ""
+"Returns the next 16 bits from the file as an integer. See [method store_16] "
+"for details on what values can be stored and retrieved this way."
+msgstr ""
+
+#: doc/classes/File.xml:73
+msgid ""
+"Returns the next 32 bits from the file as an integer. See [method store_32] "
+"for details on what values can be stored and retrieved this way."
+msgstr ""
+
+#: doc/classes/File.xml:79
+msgid ""
+"Returns the next 64 bits from the file as an integer. See [method store_64] "
+"for details on what values can be stored and retrieved this way."
+msgstr ""
+
+#: doc/classes/File.xml:85
+msgid ""
+"Returns the next 8 bits from the file as an integer. See [method store_8] "
+"for details on what values can be stored and retrieved this way."
+msgstr ""
+
+#: doc/classes/File.xml:91
+msgid ""
+"Returns the whole file as a [String].\n"
+"Text is interpreted as being UTF-8 encoded."
+msgstr ""
+
+#: doc/classes/File.xml:99
+msgid "Returns next [code]len[/code] bytes of the file as a [PoolByteArray]."
+msgstr ""
+
+#: doc/classes/File.xml:106
+msgid ""
+"Returns the next value of the file in CSV (Comma-Separated Values) format. "
+"You can pass a different delimiter [code]delim[/code] to use other than the "
+"default [code]\",\"[/code] (comma). This delimiter must be one-character "
+"long, and cannot be a double quotation mark.\n"
+"Text is interpreted as being UTF-8 encoded. Text values must be enclosed in "
+"double quotes if they include the delimiter character. Double quotes within "
+"a text value can be escaped by doubling their occurrence.\n"
+"For example, the following CSV lines are valid and will be properly parsed "
+"as two strings each:\n"
+"[codeblock]\n"
+"Alice,\"Hello, Bob!\"\n"
+"Bob,Alice! What a surprise!\n"
+"Alice,\"I thought you'd reply with \"\"Hello, world\"\".\"\n"
+"[/codeblock]\n"
+"Note how the second line can omit the enclosing quotes as it does not "
+"include the delimiter. However it [i]could[/i] very well use quotes, it was "
+"only written without for demonstration purposes. The third line must use "
+"[code]\"\"[/code] for each quotation mark that needs to be interpreted as "
+"such instead of the end of a text value."
+msgstr ""
+
+#: doc/classes/File.xml:120
+msgid "Returns the next 64 bits from the file as a floating-point number."
+msgstr ""
+
+#: doc/classes/File.xml:126
+msgid ""
+"Returns the last error that happened when trying to perform operations. "
+"Compare with the [code]ERR_FILE_*[/code] constants from [enum Error]."
+msgstr ""
+
+#: doc/classes/File.xml:132
+msgid "Returns the next 32 bits from the file as a floating-point number."
+msgstr ""
+
+#: doc/classes/File.xml:138
+msgid "Returns the size of the file in bytes."
+msgstr ""
+
+#: doc/classes/File.xml:144
+msgid ""
+"Returns the next line of the file as a [String].\n"
+"Text is interpreted as being UTF-8 encoded."
+msgstr ""
+
+#: doc/classes/File.xml:152
+msgid ""
+"Returns an MD5 String representing the file at the given path or an empty "
+"[String] on failure."
+msgstr ""
+
+#: doc/classes/File.xml:159
+msgid ""
+"Returns the last time the [code]file[/code] was modified in unix timestamp "
+"format or returns a [String] \"ERROR IN [code]file[/code]\". This unix "
+"timestamp can be converted to datetime by using [method OS."
+"get_datetime_from_unix_time]."
+msgstr ""
+
+#: doc/classes/File.xml:165
+msgid ""
+"Returns a [String] saved in Pascal format from the file.\n"
+"Text is interpreted as being UTF-8 encoded."
+msgstr ""
+
+#: doc/classes/File.xml:172
+msgid "Returns the path as a [String] for the current open file."
+msgstr ""
+
+#: doc/classes/File.xml:178
+msgid "Returns the absolute path as a [String] for the current open file."
+msgstr ""
+
+#: doc/classes/File.xml:184
+msgid "Returns the file cursor's position."
+msgstr ""
+
+#: doc/classes/File.xml:190
+msgid "Returns the next bits from the file as a floating-point number."
+msgstr ""
+
+#: doc/classes/File.xml:197
+msgid ""
+"Returns a SHA-256 [String] representing the file at the given path or an "
+"empty [String] on failure."
+msgstr ""
+
+#: doc/classes/File.xml:204
+msgid ""
+"Returns the next [Variant] value from the file. If [code]allow_objects[/"
+"code] is [code]true[/code], decoding objects is allowed.\n"
+"[b]Warning:[/b] Deserialized objects can contain code which gets executed. "
+"Do not use this option if the serialized object comes from untrusted sources "
+"to avoid potential security threats such as remote code execution."
+msgstr ""
+
+#: doc/classes/File.xml:211
+msgid "Returns [code]true[/code] if the file is currently opened."
+msgstr ""
+
+#: doc/classes/File.xml:219
+msgid "Opens the file for writing or reading, depending on the flags."
+msgstr ""
+
+#: doc/classes/File.xml:228
+msgid ""
+"Opens a compressed file for reading or writing.\n"
+"[b]Note:[/b] [method open_compressed] can only read files that were saved by "
+"Godot, not third-party compression formats. See [url=https://github.com/"
+"godotengine/godot/issues/28999]GitHub issue #28999[/url] for a workaround."
+msgstr ""
+
+#: doc/classes/File.xml:238
+msgid ""
+"Opens an encrypted file in write or read mode. You need to pass a binary key "
+"to encrypt/decrypt it.\n"
+"[b]Note:[/b] The provided key must be 32 bytes long."
+msgstr ""
+
+#: doc/classes/File.xml:248
+msgid ""
+"Opens an encrypted file in write or read mode. You need to pass a password "
+"to encrypt/decrypt it."
+msgstr ""
+
+#: doc/classes/File.xml:255
+msgid ""
+"Changes the file reading/writing cursor to the specified position (in bytes "
+"from the beginning of the file)."
+msgstr ""
+
+#: doc/classes/File.xml:262
+msgid ""
+"Changes the file reading/writing cursor to the specified position (in bytes "
+"from the end of the file).\n"
+"[b]Note:[/b] This is an offset, so you should use negative numbers or the "
+"cursor will be at the end of the file."
+msgstr ""
+
+#: doc/classes/File.xml:270
+msgid ""
+"Stores an integer as 16 bits in the file.\n"
+"[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, "
+"2^16 - 1][/code]. Any other value will overflow and wrap around.\n"
+"To store a signed integer, use [method store_64] or store a signed integer "
+"from the interval [code][-2^15, 2^15 - 1][/code] (i.e. keeping one bit for "
+"the signedness) and compute its sign manually when reading. For example:\n"
+"[codeblock]\n"
+"const MAX_15B = 1 << 15\n"
+"const MAX_16B = 1 << 16\n"
+"\n"
+"func unsigned16_to_signed(unsigned):\n"
+" return (unsigned + MAX_15B) % MAX_16B - MAX_15B\n"
+"\n"
+"func _ready():\n"
+" var f = File.new()\n"
+" f.open(\"user://file.dat\", File.WRITE_READ)\n"
+" f.store_16(-42) # This wraps around and stores 65494 (2^16 - 42).\n"
+" f.store_16(121) # In bounds, will store 121.\n"
+" f.seek(0) # Go back to start to read the stored value.\n"
+" var read1 = f.get_16() # 65494\n"
+" var read2 = f.get_16() # 121\n"
+" var converted1 = unsigned16_to_signed(read1) # -42\n"
+" var converted2 = unsigned16_to_signed(read2) # 121\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/File.xml:297
+msgid ""
+"Stores an integer as 32 bits in the file.\n"
+"[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, "
+"2^32 - 1][/code]. Any other value will overflow and wrap around.\n"
+"To store a signed integer, use [method store_64], or convert it manually "
+"(see [method store_16] for an example)."
+msgstr ""
+
+#: doc/classes/File.xml:306
+msgid ""
+"Stores an integer as 64 bits in the file.\n"
+"[b]Note:[/b] The [code]value[/code] must lie in the interval [code][-2^63, "
+"2^63 - 1][/code] (i.e. be a valid [int] value)."
+msgstr ""
+
+#: doc/classes/File.xml:314
+msgid ""
+"Stores an integer as 8 bits in the file.\n"
+"[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, 255]"
+"[/code]. Any other value will overflow and wrap around.\n"
+"To store a signed integer, use [method store_64], or convert it manually "
+"(see [method store_16] for an example)."
+msgstr ""
+
+#: doc/classes/File.xml:323
+msgid "Stores the given array of bytes in the file."
+msgstr ""
+
+#: doc/classes/File.xml:331
+msgid ""
+"Store the given [PoolStringArray] in the file as a line formatted in the CSV "
+"(Comma-Separated Values) format. You can pass a different delimiter "
+"[code]delim[/code] to use other than the default [code]\",\"[/code] (comma). "
+"This delimiter must be one-character long.\n"
+"Text will be encoded as UTF-8."
+msgstr ""
+
+#: doc/classes/File.xml:339
+msgid "Stores a floating-point number as 64 bits in the file."
+msgstr ""
+
+#: doc/classes/File.xml:346
+msgid "Stores a floating-point number as 32 bits in the file."
+msgstr ""
+
+#: doc/classes/File.xml:353
+msgid ""
+"Appends [code]line[/code] to the file followed by a line return character "
+"([code]\\n[/code]), encoding the text as UTF-8."
+msgstr ""
+
+#: doc/classes/File.xml:360
+msgid ""
+"Stores the given [String] as a line in the file in Pascal format (i.e. also "
+"store the length of the string).\n"
+"Text will be encoded as UTF-8."
+msgstr ""
+
+#: doc/classes/File.xml:368
+msgid "Stores a floating-point number in the file."
+msgstr ""
+
+#: doc/classes/File.xml:375
+msgid ""
+"Appends [code]string[/code] to the file without a line return, encoding the "
+"text as UTF-8."
+msgstr ""
+
+#: doc/classes/File.xml:383
+msgid ""
+"Stores any Variant value in the file. If [code]full_objects[/code] is "
+"[code]true[/code], encoding objects is allowed (and can potentially include "
+"code).\n"
+"[b]Note:[/b] Not all properties are included. Only properties that are "
+"configured with the [constant PROPERTY_USAGE_STORAGE] flag set will be "
+"serialized. You can add a new usage flag to a property by overriding the "
+"[method Object._get_property_list] method in your class. You can also check "
+"how property usage is configured by calling [method Object."
+"_get_property_list]. See [enum PropertyUsageFlags] for the possible usage "
+"flags."
+msgstr ""
+
+#: doc/classes/File.xml:390
+msgid ""
+"If [code]true[/code], the file is read with big-endian [url=https://en."
+"wikipedia.org/wiki/Endianness]endianness[/url]. If [code]false[/code], the "
+"file is read with little-endian endianness. If in doubt, leave this to "
+"[code]false[/code] as most files are written with little-endian endianness.\n"
+"[b]Note:[/b] [member endian_swap] is only about the file format, not the CPU "
+"type. The CPU endianness doesn't affect the default endianness for files "
+"written.\n"
+"[b]Note:[/b] This is always reset to [code]false[/code] whenever you open "
+"the file. Therefore, you must set [member endian_swap] [i]after[/i] opening "
+"the file, not before."
+msgstr ""
+
+#: doc/classes/File.xml:397
+msgid ""
+"Opens the file for read operations. The cursor is positioned at the "
+"beginning of the file."
+msgstr ""
+
+#: doc/classes/File.xml:400
+msgid ""
+"Opens the file for write operations. The file is created if it does not "
+"exist, and truncated if it does."
+msgstr ""
+
+#: doc/classes/File.xml:403
+msgid ""
+"Opens the file for read and write operations. Does not truncate the file. "
+"The cursor is positioned at the beginning of the file."
+msgstr ""
+
+#: doc/classes/File.xml:406
+msgid ""
+"Opens the file for read and write operations. The file is created if it does "
+"not exist, and truncated if it does. The cursor is positioned at the "
+"beginning of the file."
+msgstr ""
+
+#: doc/classes/File.xml:409
+msgid "Uses the [url=http://fastlz.org/]FastLZ[/url] compression method."
+msgstr ""
+
+#: doc/classes/File.xml:412
+msgid ""
+"Uses the [url=https://en.wikipedia.org/wiki/DEFLATE]DEFLATE[/url] "
+"compression method."
+msgstr ""
+
+#: doc/classes/File.xml:415
+msgid ""
+"Uses the [url=https://facebook.github.io/zstd/]Zstandard[/url] compression "
+"method."
+msgstr ""
+
+#: doc/classes/File.xml:418
+msgid "Uses the [url=https://www.gzip.org/]gzip[/url] compression method."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:4
+msgid "Dialog for selecting files or directories in the filesystem."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:7
+msgid ""
+"FileDialog is a preset dialog used to choose files and directories in the "
+"filesystem. It supports filter masks. The FileDialog automatically sets its "
+"window title according to the [member mode]. If you want to use a custom "
+"title, disable this by setting [member mode_overrides_title] to [code]false[/"
+"code]."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:16
+msgid ""
+"Adds [code]filter[/code] as a custom filter; [code]filter[/code] should be "
+"of the form [code]\"filename.extension ; Description\"[/code]. For example, "
+"[code]\"*.png ; PNG Images\"[/code]."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:22
+msgid "Clear all the added filters in the dialog."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:28
+msgid "Clear currently selected items in the dialog."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:34
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:41
+msgid ""
+"Returns the vertical box container of the dialog, custom controls can be "
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:48
+msgid "Invalidate and update the current dialog content list."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:54
+msgid ""
+"The file system access scope. See enum [code]Access[/code] constants.\n"
+"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
+"sandboxed macOS apps, FileDialog cannot access the host file system. See "
+"[url=https://github.com/godotengine/godot-proposals/issues/1123]godot-"
+"proposals#1123[/url]."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:58
+msgid "The current working directory of the file dialog."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:61
+msgid "The currently selected file of the file dialog."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:64
+msgid "The currently selected file path of the file dialog."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:68
+msgid ""
+"The available file type filters. For example, this shows only [code].png[/"
+"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
+"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:71
+msgid ""
+"The dialog's open or save mode, which affects the selection behavior. See "
+"enum [code]Mode[/code] constants."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:74
+msgid ""
+"If [code]true[/code], changing the [code]Mode[/code] property will set the "
+"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
+"will change the window title to \"Open a File\")."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:77
+msgid "If [code]true[/code], the dialog will show hidden files."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:85
+msgid "Emitted when the user selects a directory."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:91
+msgid ""
+"Emitted when the user selects a file by double-clicking it or pressing the "
+"[b]OK[/b] button."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:97
+msgid "Emitted when the user selects multiple files."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:103
+msgid "The dialog allows selecting one, and only one file."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:106
+msgid "The dialog allows selecting multiple files."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:109
+msgid ""
+"The dialog only allows selecting a directory, disallowing the selection of "
+"any file."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:112
+msgid "The dialog allows selecting one file or directory."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:115
+msgid "The dialog will warn when a file exists."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:118
+msgid ""
+"The dialog only allows accessing files under the [Resource] path "
+"([code]res://[/code])."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:121
+msgid ""
+"The dialog only allows accessing files under user data path ([code]user://[/"
+"code])."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:124
+msgid "The dialog allows accessing files on the whole file system."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:129
+msgid "Custom icon for files."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:132
+msgid "The color modulation applied to the file icon."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:135
+msgid ""
+"The color tint for disabled files (when the [FileDialog] is used in open "
+"folder mode)."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:138
+msgid "Custom icon for folders."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:141
+msgid "The color modulation applied to the folder icon."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:144
+msgid "Custom icon for the parent folder arrow."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:147
+msgid "Custom icon for the reload button."
+msgstr ""
+
+#: doc/classes/FileDialog.xml:150
+msgid "Custom icon for the toggle hidden button."
+msgstr ""
+
+#: doc/classes/float.xml:4
+msgid "Float built-in type."
+msgstr ""
+
+#: doc/classes/float.xml:7
+msgid ""
+"The [float] built-in type is a 64-bit double-precision floating-point "
+"number, equivalent to [code]double[/code] in C++. This type has 14 reliable "
+"decimal digits of precision. The [float] type can be stored in [Variant], "
+"which is the generic type used by the engine. The maximum value of [float] "
+"is approximately [code]1.79769e308[/code], and the minimum is approximately "
+"[code]-1.79769e308[/code].\n"
+"Most methods and properties in the engine use 32-bit single-precision "
+"floating-point numbers instead, equivalent to [code]float[/code] in C++, "
+"which have 6 reliable decimal digits of precision. For data structures such "
+"as [Vector2] and [Vector3], Godot uses 32-bit floating-point numbers.\n"
+"Math done using the [float] type is not guaranteed to be exact or "
+"deterministic, and will often result in small errors. You should usually use "
+"the [method @GDScript.is_equal_approx] and [method @GDScript.is_zero_approx] "
+"methods instead of [code]==[/code] to compare [float] values for equality."
+msgstr ""
+
+#: doc/classes/float.xml:12
+msgid "https://en.wikipedia.org/wiki/Double-precision_floating-point_format"
+msgstr ""
+
+#: doc/classes/float.xml:13
+msgid "https://en.wikipedia.org/wiki/Single-precision_floating-point_format"
+msgstr ""
+
+#: doc/classes/float.xml:20
+msgid ""
+"Cast a [bool] value to a floating-point value, [code]float(true)[/code] will "
+"be equal to 1.0 and [code]float(false)[/code] will be equal to 0.0."
+msgstr ""
+
+#: doc/classes/float.xml:27
+msgid ""
+"Cast an [int] value to a floating-point value, [code]float(1)[/code] will be "
+"equal to 1.0."
+msgstr ""
+
+#: doc/classes/float.xml:34
+msgid ""
+"Cast a [String] value to a floating-point value. This method accepts float "
+"value strings like [code]\"1.23\"[/code] and exponential notation strings "
+"for its parameter so calling [code]float(\"1e3\")[/code] will return 1000.0 "
+"and calling [code]float(\"1e-3\")[/code] will return 0.001. Calling this "
+"method with an invalid float string will return 0. This method stops parsing "
+"at the first invalid character and will return the parsed result so far, so "
+"calling [code]float(\"1a3\")[/code] will return 1 while calling "
+"[code]float(\"1e3a2\")[/code] will return 1000.0."
+msgstr ""
+
+#: doc/classes/Font.xml:4
+msgid "Internationalized font and text drawing support."
+msgstr ""
+
+#: doc/classes/Font.xml:7
+msgid ""
+"Font contains a Unicode-compatible character set, as well as the ability to "
+"draw it with variable width, ascent, descent and kerning. For creating fonts "
+"from TTF files (or other font formats), see the editor support for fonts.\n"
+"[b]Note:[/b] If a [DynamicFont] doesn't contain a character used in a "
+"string, the character in question will be replaced with codepoint "
+"[code]0xfffd[/code] if it's available in the [DynamicFont]. If this "
+"replacement character isn't available in the DynamicFont, the character will "
+"be hidden without displaying any replacement character in the string.\n"
+"[b]Note:[/b] If a [BitmapFont] doesn't contain a character used in a string, "
+"the character in question will be hidden without displaying any replacement "
+"character in the string.\n"
+"[b]Note:[/b] Unicode characters after [code]0xffff[/code] (such as most "
+"emoji) are [i]not[/i] supported on Windows. They will display as unknown "
+"characters instead. This will be resolved in Godot 4.0."
+msgstr ""
+
+#: doc/classes/Font.xml:24
+msgid ""
+"Draw [code]string[/code] into a canvas item using the font at a given "
+"position, with [code]modulate[/code] color, and optionally clipping the "
+"width. [code]position[/code] specifies the baseline, not the top. To draw "
+"from the top, [i]ascent[/i] must be added to the Y axis.\n"
+"See also [method CanvasItem.draw_string]."
+msgstr ""
+
+#: doc/classes/Font.xml:37
+msgid ""
+"Draw character [code]char[/code] into a canvas item using the font at a "
+"given position, with [code]modulate[/code] color, and optionally kerning if "
+"[code]next[/code] is passed. clipping the width. [code]position[/code] "
+"specifies the baseline, not the top. To draw from the top, [i]ascent[/i] "
+"must be added to the Y axis. The width used by the character is returned, "
+"making this function useful for drawing strings character by character."
+msgstr ""
+
+#: doc/classes/Font.xml:43
+msgid "Returns the font ascent (number of pixels above the baseline)."
+msgstr ""
+
+#: doc/classes/Font.xml:51
+msgid ""
+"Returns the size of a character, optionally taking kerning into account if "
+"the next character is provided. Note that the height returned is the font "
+"height (see [method get_height]) and has no relation to the glyph height."
+msgstr ""
+
+#: doc/classes/Font.xml:57
+msgid "Returns the font descent (number of pixels below the baseline)."
+msgstr ""
+
+#: doc/classes/Font.xml:63
+msgid "Returns the total font height (ascent plus descent) in pixels."
+msgstr ""
+
+#: doc/classes/Font.xml:70
+msgid ""
+"Returns the size of a string, taking kerning and advance into account. Note "
+"that the height returned is the font height (see [method get_height]) and "
+"has no relation to the string."
+msgstr ""
+
+#: doc/classes/Font.xml:78
+msgid ""
+"Returns the size that the string would have with word wrapping enabled with "
+"a fixed [code]width[/code]."
+msgstr ""
+
+#: doc/classes/Font.xml:84
+msgid "Returns [code]true[/code] if the font has an outline."
+msgstr ""
+
+#: doc/classes/Font.xml:95
+msgid ""
+"After editing a font (changing size, ascent, char rects, etc.). Call this "
+"function to propagate changes to controls that might use it."
+msgstr ""
+
+#: doc/classes/FuncRef.xml:4
+msgid "Reference to a function in an object."
+msgstr ""
+
+#: doc/classes/FuncRef.xml:7
+msgid ""
+"In GDScript, functions are not [i]first-class objects[/i]. This means it is "
+"impossible to store them directly as variables, return them from another "
+"function, or pass them as arguments.\n"
+"However, by creating a [FuncRef] using the [method @GDScript.funcref] "
+"function, a reference to a function in a given object can be created, passed "
+"around and called."
+msgstr ""
+
+#: doc/classes/FuncRef.xml:16
+msgid ""
+"Calls the referenced function previously set in [member function] or [method "
+"@GDScript.funcref]."
+msgstr ""
+
+#: doc/classes/FuncRef.xml:23
+msgid ""
+"Calls the referenced function previously set in [member function] or [method "
+"@GDScript.funcref]. Contrarily to [method call_func], this method does not "
+"support a variable number of arguments but expects all parameters to be "
+"passed via a single [Array]."
+msgstr ""
+
+#: doc/classes/FuncRef.xml:29
+msgid "Returns whether the object still exists and has the function assigned."
+msgstr ""
+
+#: doc/classes/FuncRef.xml:36
+msgid ""
+"The object containing the referenced function. This object must be of a type "
+"actually inheriting from [Object], not a built-in type such as [int], "
+"[Vector2] or [Dictionary]."
+msgstr ""
+
+#: doc/classes/FuncRef.xml:42
+msgid "The name of the referenced function."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:4
+msgid ""
+"An external library containing functions or script classes to use in Godot."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:7
+msgid ""
+"A GDNative library can implement [NativeScript]s, global functions to call "
+"with the [GDNative] class, or low-level engine extensions through interfaces "
+"such as [ARVRInterfaceGDNative]. The library must be compiled for each "
+"platform and architecture that the project will run on."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/gdnative/gdnative-c-"
+"example.html"
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/gdnative/gdnative-cpp-"
+"example.html"
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:17
+msgid ""
+"Returns paths to all dependency libraries for the current platform and "
+"architecture."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:23
+msgid ""
+"Returns the path to the dynamic library file for the current platform and "
+"architecture."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:29
+msgid ""
+"This resource in INI-style [ConfigFile] format, as in [code].gdnlib[/code] "
+"files."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:32
+msgid ""
+"If [code]true[/code], Godot loads only one copy of the library and each "
+"script that references the library will share static data like static or "
+"global variables.\n"
+"If [code]false[/code], Godot loads a separate copy of the library into "
+"memory for each script that references it."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:36
+msgid ""
+"If [code]true[/code], the editor will temporarily unload the library "
+"whenever the user switches away from the editor window, allowing the user to "
+"recompile the library without restarting Godot.\n"
+"[b]Note:[/b] If the library defines tool scripts that run inside the editor, "
+"[code]reloadable[/code] must be [code]false[/code]. Otherwise, the editor "
+"will attempt to unload the tool scripts while they're in use and crash."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:40
+msgid ""
+"If [code]true[/code], Godot loads the library at startup rather than the "
+"first time a script uses the library, calling [code]{prefix}"
+"gdnative_singleton[/code] after initializing the library (where [code]"
+"{prefix}[/code] is the value of [member symbol_prefix]). The library remains "
+"loaded as long as Godot is running.\n"
+"[b]Note:[/b] A singleton library cannot be [member reloadable]."
+msgstr ""
+
+#: modules/gdnative/doc_classes/GDNativeLibrary.xml:44
+msgid ""
+"The prefix this library's entry point functions begin with. For example, a "
+"GDNativeLibrary would declare its [code]gdnative_init[/code] function as "
+"[code]godot_gdnative_init[/code] by default.\n"
+"On platforms that require statically linking libraries (currently only iOS), "
+"each library must have a different [code]symbol_prefix[/code]."
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScript.xml:4
+msgid "A script implemented in the GDScript programming language."
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScript.xml:7
+msgid ""
+"A script implemented in the GDScript programming language. The script "
+"extends the functionality of all objects that instance it.\n"
+"[method new] creates a new instance of the script. [method Object."
+"set_script] extends an existing object, if that object's class matches one "
+"of the script's base classes."
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScript.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/index."
+"html"
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScript.xml:17
+msgid "Returns byte code for the script source code."
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScript.xml:23
+msgid ""
+"Returns a new instance of the script.\n"
+"For example:\n"
+"[codeblock]\n"
+"var MyClass = load(\"myclass.gd\")\n"
+"var instance = MyClass.new()\n"
+"assert(instance.get_script() == MyClass)\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScriptFunctionState.xml:4
+msgid "State of a function call after yielding."
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScriptFunctionState.xml:7
+msgid ""
+"Calling [method @GDScript.yield] within a function will cause that function "
+"to yield and return its current state as an object of this type. The yielded "
+"function call can then be resumed later by calling [method resume] on this "
+"state object."
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScriptFunctionState.xml:16
+msgid ""
+"Check whether the function call may be resumed. This is not the case if the "
+"function state was already resumed.\n"
+"If [code]extended_check[/code] is enabled, it also checks if the associated "
+"script and object still exist. The extended check is done in debug mode as "
+"part of [method GDScriptFunctionState.resume], but you can use this if you "
+"know you may be trying to resume without knowing for sure the object and/or "
+"script have survived up to that point."
+msgstr ""
+
+#: modules/gdscript/doc_classes/GDScriptFunctionState.xml:24
+msgid ""
+"Resume execution of the yielded function call.\n"
+"If handed an argument, return the argument from the [method @GDScript.yield] "
+"call in the yielded function call. You can pass e.g. an [Array] to hand "
+"multiple arguments.\n"
+"This function returns what the resumed function call returns, possibly "
+"another function state if yielded again."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:4
+msgid ""
+"The generic 6-degrees-of-freedom joint can implement a variety of joint "
+"types by locking certain axes' rotation or translation."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:7
+msgid ""
+"The first 3 DOF axes are linear axes, which represent translation of Bodies, "
+"and the latter 3 DOF axes represent the angular motion. Each axis can be "
+"either locked, or limited."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:93
+msgid ""
+"The amount of rotational damping across the X axis.\n"
+"The lower, the longer an impulse from one side takes to travel to the other "
+"side."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:97
+msgid "If [code]true[/code], rotation across the X axis is limited."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:100
+msgid ""
+"When rotating across the X axis, this error tolerance factor defines how "
+"much the correction gets slowed down. The lower, the slower."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:103
+msgid ""
+"The maximum amount of force that can occur, when rotating around the X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:106
+msgid ""
+"The minimum rotation in negative direction to break loose and rotate around "
+"the X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:109
+msgid ""
+"The amount of rotational restitution across the X axis. The lower, the more "
+"restitution occurs."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:112
+msgid "The speed of all rotations across the X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:115
+msgid ""
+"The minimum rotation in positive direction to break loose and rotate around "
+"the X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:118
+msgid ""
+"The amount of rotational damping across the Y axis. The lower, the more "
+"dampening occurs."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:121
+msgid "If [code]true[/code], rotation across the Y axis is limited."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:124
+msgid ""
+"When rotating across the Y axis, this error tolerance factor defines how "
+"much the correction gets slowed down. The lower, the slower."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:127
+msgid ""
+"The maximum amount of force that can occur, when rotating around the Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:130
+msgid ""
+"The minimum rotation in negative direction to break loose and rotate around "
+"the Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:133
+msgid ""
+"The amount of rotational restitution across the Y axis. The lower, the more "
+"restitution occurs."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:136
+msgid "The speed of all rotations across the Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:139
+msgid ""
+"The minimum rotation in positive direction to break loose and rotate around "
+"the Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:142
+msgid ""
+"The amount of rotational damping across the Z axis. The lower, the more "
+"dampening occurs."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:145
+msgid "If [code]true[/code], rotation across the Z axis is limited."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:148
+msgid ""
+"When rotating across the Z axis, this error tolerance factor defines how "
+"much the correction gets slowed down. The lower, the slower."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:151
+msgid ""
+"The maximum amount of force that can occur, when rotating around the Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:154
+msgid ""
+"The minimum rotation in negative direction to break loose and rotate around "
+"the Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:157
+msgid ""
+"The amount of rotational restitution across the Z axis. The lower, the more "
+"restitution occurs."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:160
+msgid "The speed of all rotations across the Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:163
+msgid ""
+"The minimum rotation in positive direction to break loose and rotate around "
+"the Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:166
+msgid "If [code]true[/code], a rotating motor at the X axis is enabled."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:169
+msgid "Maximum acceleration for the motor at the X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:172
+msgid "Target speed for the motor at the X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:175
+msgid "If [code]true[/code], a rotating motor at the Y axis is enabled."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:178
+msgid "Maximum acceleration for the motor at the Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:181
+msgid "Target speed for the motor at the Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:184
+msgid "If [code]true[/code], a rotating motor at the Z axis is enabled."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:187
+msgid "Maximum acceleration for the motor at the Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:190
+msgid "Target speed for the motor at the Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:217
+msgid "The amount of damping that happens at the X motion."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:220
+msgid "If [code]true[/code], the linear motion across the X axis is limited."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:223
+msgid "The minimum difference between the pivot points' X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:226
+msgid ""
+"The amount of restitution on the X axis movement. The lower, the more "
+"momentum gets lost."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:229
+msgid ""
+"A factor applied to the movement across the X axis. The lower, the slower "
+"the movement."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:232
+msgid "The maximum difference between the pivot points' X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:235
+msgid "The amount of damping that happens at the Y motion."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:238
+msgid "If [code]true[/code], the linear motion across the Y axis is limited."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:241
+msgid "The minimum difference between the pivot points' Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:244
+msgid ""
+"The amount of restitution on the Y axis movement. The lower, the more "
+"momentum gets lost."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:247
+msgid ""
+"A factor applied to the movement across the Y axis. The lower, the slower "
+"the movement."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:250
+msgid "The maximum difference between the pivot points' Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:253
+msgid "The amount of damping that happens at the Z motion."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:256
+msgid "If [code]true[/code], the linear motion across the Z axis is limited."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:259
+msgid "The minimum difference between the pivot points' Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:262
+msgid ""
+"The amount of restitution on the Z axis movement. The lower, the more "
+"momentum gets lost."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:265
+msgid ""
+"A factor applied to the movement across the Z axis. The lower, the slower "
+"the movement."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:268
+msgid "The maximum difference between the pivot points' Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:271
+msgid ""
+"If [code]true[/code], then there is a linear motor on the X axis. It will "
+"attempt to reach the target velocity while staying within the force limits."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:274
+msgid ""
+"The maximum force the linear motor can apply on the X axis while trying to "
+"reach the target velocity."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:277
+msgid "The speed that the linear motor will attempt to reach on the X axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:280
+msgid ""
+"If [code]true[/code], then there is a linear motor on the Y axis. It will "
+"attempt to reach the target velocity while staying within the force limits."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:283
+msgid ""
+"The maximum force the linear motor can apply on the Y axis while trying to "
+"reach the target velocity."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:286
+msgid "The speed that the linear motor will attempt to reach on the Y axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:289
+msgid ""
+"If [code]true[/code], then there is a linear motor on the Z axis. It will "
+"attempt to reach the target velocity while staying within the force limits."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:292
+msgid ""
+"The maximum force the linear motor can apply on the Z axis while trying to "
+"reach the target velocity."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:295
+msgid "The speed that the linear motor will attempt to reach on the Z axis."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:324 doc/classes/PhysicsServer.xml:1086
+msgid "The minimum difference between the pivot points' axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:327 doc/classes/PhysicsServer.xml:1089
+msgid "The maximum difference between the pivot points' axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:330
+msgid ""
+"A factor applied to the movement across the axes. The lower, the slower the "
+"movement."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:333
+msgid ""
+"The amount of restitution on the axes' movement. The lower, the more "
+"momentum gets lost."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:336 doc/classes/PhysicsServer.xml:1098
+msgid ""
+"The amount of damping that happens at the linear motion across the axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:339
+msgid "The velocity the linear motor will try to reach."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:342
+msgid ""
+"The maximum force the linear motor will apply while trying to reach the "
+"velocity target."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:351 doc/classes/PhysicsServer.xml:1107
+msgid ""
+"The minimum rotation in negative direction to break loose and rotate around "
+"the axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:354 doc/classes/PhysicsServer.xml:1110
+msgid ""
+"The minimum rotation in positive direction to break loose and rotate around "
+"the axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:357
+msgid "The speed of all rotations across the axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:360 doc/classes/PhysicsServer.xml:1116
+msgid ""
+"The amount of rotational damping across the axes. The lower, the more "
+"dampening occurs."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:363 doc/classes/PhysicsServer.xml:1119
+msgid ""
+"The amount of rotational restitution across the axes. The lower, the more "
+"restitution occurs."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:366 doc/classes/PhysicsServer.xml:1122
+msgid ""
+"The maximum amount of force that can occur, when rotating around the axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:369
+msgid ""
+"When rotating across the axes, this error tolerance factor defines how much "
+"the correction gets slowed down. The lower, the slower."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:372 doc/classes/PhysicsServer.xml:1128
+msgid "Target speed for the motor at the axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:375 doc/classes/PhysicsServer.xml:1131
+msgid "Maximum acceleration for the motor at the axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:387
+msgid "If enabled, linear motion is possible within the given limits."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:390
+msgid "If enabled, rotational motion is possible within the given limits."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:397
+msgid "If enabled, there is a rotational motor across these axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:400
+msgid "If enabled, there is a linear motor across these axes."
+msgstr ""
+
+#: doc/classes/Generic6DOFJoint.xml:403 doc/classes/HingeJoint.xml:108
+msgid "Represents the size of the [enum Flag] enum."
+msgstr ""
+
+#: doc/classes/Geometry.xml:4
+msgid "Helper node to calculate generic geometry operations."
+msgstr ""
+
+#: doc/classes/Geometry.xml:7
+msgid ""
+"Geometry provides users with a set of helper functions to create geometric "
+"shapes, compute intersections between shapes, and process various other "
+"geometric operations."
+msgstr ""
+
+#: doc/classes/Geometry.xml:16
+msgid ""
+"Returns an array with 6 [Plane]s that describe the sides of a box centered "
+"at the origin. The box size is defined by [code]extents[/code], which "
+"represents one (positive) corner of the box (i.e. half its actual size)."
+msgstr ""
+
+#: doc/classes/Geometry.xml:27
+msgid ""
+"Returns an array of [Plane]s closely bounding a faceted capsule centered at "
+"the origin with radius [code]radius[/code] and height [code]height[/code]. "
+"The parameter [code]sides[/code] defines how many planes will be generated "
+"for the side part of the capsule, whereas [code]lats[/code] gives the number "
+"of latitudinal steps at the bottom and top of the capsule. The parameter "
+"[code]axis[/code] describes the axis along which the capsule is oriented (0 "
+"for X, 1 for Y, 2 for Z)."
+msgstr ""
+
+#: doc/classes/Geometry.xml:37
+msgid ""
+"Returns an array of [Plane]s closely bounding a faceted cylinder centered at "
+"the origin with radius [code]radius[/code] and height [code]height[/code]. "
+"The parameter [code]sides[/code] defines how many planes will be generated "
+"for the round part of the cylinder. The parameter [code]axis[/code] "
+"describes the axis along which the cylinder is oriented (0 for X, 1 for Y, 2 "
+"for Z)."
+msgstr ""
+
+#: doc/classes/Geometry.xml:45
+msgid ""
+"Clips the polygon defined by the points in [code]points[/code] against the "
+"[code]plane[/code] and returns the points of the clipped polygon."
+msgstr ""
+
+#: doc/classes/Geometry.xml:53
+msgid ""
+"Clips [code]polygon_a[/code] against [code]polygon_b[/code] and returns an "
+"array of clipped polygons. This performs [constant OPERATION_DIFFERENCE] "
+"between polygons. Returns an empty array if [code]polygon_b[/code] "
+"completely overlaps [code]polygon_a[/code].\n"
+"If [code]polygon_b[/code] is enclosed by [code]polygon_a[/code], returns an "
+"outer polygon (boundary) and inner polygon (hole) which could be "
+"distinguished by calling [method is_polygon_clockwise]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:62
+msgid ""
+"Clips [code]polyline[/code] against [code]polygon[/code] and returns an "
+"array of clipped polylines. This performs [constant OPERATION_DIFFERENCE] "
+"between the polyline and the polygon. This operation can be thought of as "
+"cutting a line with a closed shape."
+msgstr ""
+
+#: doc/classes/Geometry.xml:69
+msgid ""
+"Given an array of [Vector2]s, returns the convex hull as a list of points in "
+"counterclockwise order. The last point is the same as the first one."
+msgstr ""
+
+#: doc/classes/Geometry.xml:77
+msgid ""
+"Mutually excludes common area defined by intersection of [code]polygon_a[/"
+"code] and [code]polygon_b[/code] (see [method intersect_polygons_2d]) and "
+"returns an array of excluded polygons. This performs [constant "
+"OPERATION_XOR] between polygons. In other words, returns all but common area "
+"between polygons.\n"
+"The operation may result in an outer polygon (boundary) and inner polygon "
+"(hole) produced which could be distinguished by calling [method "
+"is_polygon_clockwise]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:87
+msgid ""
+"Returns the 3D point on the 3D segment ([code]s1[/code], [code]s2[/code]) "
+"that is closest to [code]point[/code]. The returned point will always be "
+"inside the specified segment."
+msgstr ""
+
+#: doc/classes/Geometry.xml:96
+msgid ""
+"Returns the 2D point on the 2D segment ([code]s1[/code], [code]s2[/code]) "
+"that is closest to [code]point[/code]. The returned point will always be "
+"inside the specified segment."
+msgstr ""
+
+#: doc/classes/Geometry.xml:105
+msgid ""
+"Returns the 3D point on the 3D line defined by ([code]s1[/code], [code]s2[/"
+"code]) that is closest to [code]point[/code]. The returned point can be "
+"inside the segment ([code]s1[/code], [code]s2[/code]) or outside of it, i.e. "
+"somewhere on the line extending from the segment."
+msgstr ""
+
+#: doc/classes/Geometry.xml:114
+msgid ""
+"Returns the 2D point on the 2D line defined by ([code]s1[/code], [code]s2[/"
+"code]) that is closest to [code]point[/code]. The returned point can be "
+"inside the segment ([code]s1[/code], [code]s2[/code]) or outside of it, i.e. "
+"somewhere on the line extending from the segment."
+msgstr ""
+
+#: doc/classes/Geometry.xml:124
+msgid ""
+"Given the two 3D segments ([code]p1[/code], [code]p2[/code]) and ([code]q1[/"
+"code], [code]q2[/code]), finds those two points on the two segments that are "
+"closest to each other. Returns a [PoolVector3Array] that contains this point "
+"on ([code]p1[/code], [code]p2[/code]) as well the accompanying point on "
+"([code]q1[/code], [code]q2[/code])."
+msgstr ""
+
+#: doc/classes/Geometry.xml:134
+msgid ""
+"Given the two 2D segments ([code]p1[/code], [code]q1[/code]) and ([code]p2[/"
+"code], [code]q2[/code]), finds those two points on the two segments that are "
+"closest to each other. Returns a [PoolVector2Array] that contains this point "
+"on ([code]p1[/code], [code]q1[/code]) as well the accompanying point on "
+"([code]p2[/code], [code]q2[/code])."
+msgstr ""
+
+#: doc/classes/Geometry.xml:141
+msgid "Used internally by the engine."
+msgstr ""
+
+#: doc/classes/Geometry.xml:149
+msgid ""
+"Intersects [code]polygon_a[/code] with [code]polygon_b[/code] and returns an "
+"array of intersected polygons. This performs [constant "
+"OPERATION_INTERSECTION] between polygons. In other words, returns common "
+"area shared by polygons. Returns an empty array if no intersection occurs.\n"
+"The operation may result in an outer polygon (boundary) and inner polygon "
+"(hole) produced which could be distinguished by calling [method "
+"is_polygon_clockwise]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:158
+msgid ""
+"Intersects [code]polyline[/code] with [code]polygon[/code] and returns an "
+"array of intersected polylines. This performs [constant "
+"OPERATION_INTERSECTION] between the polyline and the polygon. This operation "
+"can be thought of as chopping a line with a closed shape."
+msgstr ""
+
+#: doc/classes/Geometry.xml:167
+msgid ""
+"Returns [code]true[/code] if [code]point[/code] is inside the circle or if "
+"it's located exactly [i]on[/i] the circle's boundary, otherwise returns "
+"[code]false[/code]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:175
+msgid ""
+"Returns [code]true[/code] if [code]point[/code] is inside [code]polygon[/"
+"code] or if it's located exactly [i]on[/i] polygon's boundary, otherwise "
+"returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:182
+msgid ""
+"Returns [code]true[/code] if [code]polygon[/code]'s vertices are ordered in "
+"clockwise order, otherwise returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:192
+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 "
+"point of intersection as [Vector2]. If no intersection takes place, returns "
+"an empty [Variant].\n"
+"[b]Note:[/b] The lines are specified using direction vectors, not end points."
+msgstr ""
+
+#: doc/classes/Geometry.xml:200
+msgid ""
+"Given an array of [Vector2]s representing tiles, builds an atlas. The "
+"returned dictionary has two keys: [code]points[/code] is a vector of "
+"[Vector2] that specifies the positions of each tile, [code]size[/code] "
+"contains the overall size of the whole atlas as [Vector2]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:208
+msgid ""
+"Merges (combines) [code]polygon_a[/code] and [code]polygon_b[/code] and "
+"returns an array of merged polygons. This performs [constant "
+"OPERATION_UNION] between polygons.\n"
+"The operation may result in an outer polygon (boundary) and multiple inner "
+"polygons (holes) produced which could be distinguished by calling [method "
+"is_polygon_clockwise]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:218
+msgid ""
+"Inflates or deflates [code]polygon[/code] by [code]delta[/code] units "
+"(pixels). If [code]delta[/code] is positive, makes the polygon grow outward. "
+"If [code]delta[/code] is negative, shrinks the polygon inward. Returns an "
+"array of polygons because inflating/deflating may result in multiple "
+"discrete polygons. Returns an empty array if [code]delta[/code] is negative "
+"and the absolute value of it approximately exceeds the minimum bounding "
+"rectangle dimensions of the polygon.\n"
+"Each polygon's vertices will be rounded as determined by [code]join_type[/"
+"code], see [enum PolyJoinType].\n"
+"The operation may result in an outer polygon (boundary) and inner polygon "
+"(hole) produced which could be distinguished by calling [method "
+"is_polygon_clockwise].\n"
+"[b]Note:[/b] To translate the polygon's vertices specifically, use the "
+"[method Transform2D.xform] method:\n"
+"[codeblock]\n"
+"var polygon = PoolVector2Array([Vector2(0, 0), Vector2(100, 0), Vector2(100, "
+"100), Vector2(0, 100)])\n"
+"var offset = Vector2(50, 50)\n"
+"polygon = Transform2D(0, offset).xform(polygon)\n"
+"print(polygon) # prints [Vector2(50, 50), Vector2(150, 50), Vector2(150, "
+"150), Vector2(50, 150)]\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Geometry.xml:237
+msgid ""
+"Inflates or deflates [code]polyline[/code] by [code]delta[/code] units "
+"(pixels), producing polygons. If [code]delta[/code] is positive, makes the "
+"polyline grow outward. Returns an array of polygons because inflating/"
+"deflating may result in multiple discrete polygons. If [code]delta[/code] is "
+"negative, returns an empty array.\n"
+"Each polygon's vertices will be rounded as determined by [code]join_type[/"
+"code], see [enum PolyJoinType].\n"
+"Each polygon's endpoints will be rounded as determined by [code]end_type[/"
+"code], see [enum PolyEndType].\n"
+"The operation may result in an outer polygon (boundary) and inner polygon "
+"(hole) produced which could be distinguished by calling [method "
+"is_polygon_clockwise]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:250
+msgid ""
+"Returns if [code]point[/code] is inside the triangle specified by [code]a[/"
+"code], [code]b[/code] and [code]c[/code]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:261
+msgid ""
+"Tests if the 3D ray starting at [code]from[/code] with the direction of "
+"[code]dir[/code] intersects the triangle specified by [code]a[/code], "
+"[code]b[/code] and [code]c[/code]. If yes, returns the point of intersection "
+"as [Vector3]. If no intersection takes place, an empty [Variant] is returned."
+msgstr ""
+
+#: doc/classes/Geometry.xml:271
+msgid ""
+"Given the 2D segment ([code]segment_from[/code], [code]segment_to[/code]), "
+"returns the position on the segment (as a number between 0 and 1) at which "
+"the segment hits the circle that is located at position "
+"[code]circle_position[/code] and has radius [code]circle_radius[/code]. If "
+"the segment does not intersect the circle, -1 is returned (this is also the "
+"case if the line extending the segment would intersect the circle, but the "
+"segment does not)."
+msgstr ""
+
+#: doc/classes/Geometry.xml:280
+msgid ""
+"Given a convex hull defined though the [Plane]s in the array [code]planes[/"
+"code], tests if the segment ([code]from[/code], [code]to[/code]) intersects "
+"with that hull. If an intersection is found, returns a [PoolVector3Array] "
+"containing the point the intersection and the hull's normal. If no "
+"intersecion is found, an the returned array is empty."
+msgstr ""
+
+#: doc/classes/Geometry.xml:290
+msgid ""
+"Checks if the segment ([code]from[/code], [code]to[/code]) intersects the "
+"cylinder with height [code]height[/code] that is centered at the origin and "
+"has radius [code]radius[/code]. If no, returns an empty [PoolVector3Array]. "
+"If an intersection takes place, the returned array contains the point of "
+"intersection and the cylinder's normal at the point of intersection."
+msgstr ""
+
+#: doc/classes/Geometry.xml:300
+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 an "
+"empty [Variant]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:310
+msgid ""
+"Checks if the segment ([code]from[/code], [code]to[/code]) intersects the "
+"sphere that is located at [code]sphere_position[/code] and has radius "
+"[code]sphere_radius[/code]. If no, returns an empty [PoolVector3Array]. If "
+"yes, returns a [PoolVector3Array] containing the point of intersection and "
+"the sphere's normal at the point of intersection."
+msgstr ""
+
+#: doc/classes/Geometry.xml:321
+msgid ""
+"Tests if the segment ([code]from[/code], [code]to[/code]) intersects the "
+"triangle [code]a[/code], [code]b[/code], [code]c[/code]. If yes, returns the "
+"point of intersection as [Vector3]. If no intersection takes place, an empty "
+"[Variant] is returned."
+msgstr ""
+
+#: doc/classes/Geometry.xml:328
+msgid ""
+"Triangulates the area specified by discrete set of [code]points[/code] such "
+"that no point is inside the circumcircle of any resulting triangle. Returns "
+"a [PoolIntArray] where each triangle consists of three consecutive point "
+"indices into [code]points[/code] (i.e. the returned array will have [code]n "
+"* 3[/code] elements, with [code]n[/code] being the number of found "
+"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is "
+"returned."
+msgstr ""
+
+#: doc/classes/Geometry.xml:335
+msgid ""
+"Triangulates the polygon specified by the points in [code]polygon[/code]. "
+"Returns a [PoolIntArray] where each triangle consists of three consecutive "
+"point indices into [code]polygon[/code] (i.e. the returned array will have "
+"[code]n * 3[/code] elements, with [code]n[/code] being the number of found "
+"triangles). If the triangulation did not succeed, an empty [PoolIntArray] is "
+"returned."
+msgstr ""
+
+#: doc/classes/Geometry.xml:341
+msgid ""
+"Create regions where either subject or clip polygons (or both) are filled."
+msgstr ""
+
+#: doc/classes/Geometry.xml:344
+msgid ""
+"Create regions where subject polygons are filled except where clip polygons "
+"are filled."
+msgstr ""
+
+#: doc/classes/Geometry.xml:347
+msgid "Create regions where both subject and clip polygons are filled."
+msgstr ""
+
+#: doc/classes/Geometry.xml:350
+msgid ""
+"Create regions where either subject or clip polygons are filled but not "
+"where both are filled."
+msgstr ""
+
+#: doc/classes/Geometry.xml:353
+msgid ""
+"Squaring is applied uniformally at all convex edge joins at [code]1 * delta[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Geometry.xml:356
+msgid ""
+"While flattened paths can never perfectly trace an arc, they are "
+"approximated by a series of arc chords."
+msgstr ""
+
+#: doc/classes/Geometry.xml:359
+msgid ""
+"There's a necessary limit to mitered joins since offsetting edges that join "
+"at very acute angles will produce excessively long and narrow \"spikes\". "
+"For any given edge join, when miter offsetting would exceed that maximum "
+"distance, \"square\" joining is applied."
+msgstr ""
+
+#: doc/classes/Geometry.xml:362
+msgid ""
+"Endpoints are joined using the [enum PolyJoinType] value and the path filled "
+"as a polygon."
+msgstr ""
+
+#: doc/classes/Geometry.xml:365
+msgid ""
+"Endpoints are joined using the [enum PolyJoinType] value and the path filled "
+"as a polyline."
+msgstr ""
+
+#: doc/classes/Geometry.xml:368
+msgid "Endpoints are squared off with no extension."
+msgstr ""
+
+#: doc/classes/Geometry.xml:371
+msgid "Endpoints are squared off and extended by [code]delta[/code] units."
+msgstr ""
+
+#: doc/classes/Geometry.xml:374
+msgid "Endpoints are rounded off and extended by [code]delta[/code] units."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:4
+msgid "Base node for geometry-based visual instances."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:7
+msgid ""
+"Base node for geometry-based visual instances. Shares some common "
+"functionality like visibility and custom materials."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:16
+msgid ""
+"Returns the [enum GeometryInstance.Flags] that have been set for this object."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:23
+msgid ""
+"Overrides the bounding box of this node with a custom one. To remove it, set "
+"an [AABB] with all fields set to zero."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:31
+msgid ""
+"Sets the [enum GeometryInstance.Flags] specified. See [enum GeometryInstance."
+"Flags] for options."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:37
+msgid ""
+"The selected shadow casting flag. See [enum ShadowCastingSetting] for "
+"possible values."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:40
+msgid ""
+"The extra distance added to the GeometryInstance's bounding box ([AABB]) to "
+"increase its cull box."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:43
+msgid ""
+"When disabled, the mesh will be taken into account when computing indirect "
+"lighting, but the resulting lightmap will not be saved. Useful for emissive "
+"only materials or shadow casters."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:46
+msgid ""
+"Scale factor for the generated baked lightmap. Useful for adding detail to "
+"certain mesh instances."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:49
+msgid ""
+"The GeometryInstance's max LOD distance.\n"
+"[b]Note:[/b] This property currently has no effect."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:53
+msgid ""
+"The GeometryInstance's max LOD margin.\n"
+"[b]Note:[/b] This property currently has no effect."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:57
+msgid ""
+"The GeometryInstance's min LOD distance.\n"
+"[b]Note:[/b] This property currently has no effect."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:61
+msgid ""
+"The GeometryInstance's min LOD margin.\n"
+"[b]Note:[/b] This property currently has no effect."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:65
+msgid ""
+"The material override for the whole geometry.\n"
+"If a material is assigned to this property, it will be used instead of any "
+"material set in any material slot of the mesh."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:69
+msgid ""
+"If [code]true[/code], this GeometryInstance will be used when baking lights "
+"using a [GIProbe] or [BakedLightmap]."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:74
+msgid "The generated lightmap texture will have the original size."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:77
+msgid "The generated lightmap texture will be twice as large, on each axis."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:80
+msgid "The generated lightmap texture will be 4 times as large, on each axis."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:83
+msgid "The generated lightmap texture will be 8 times as large, on each axis."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:88
+msgid "Will not cast any shadows."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:91
+msgid ""
+"Will cast shadows from all visible faces in the GeometryInstance.\n"
+"Will take culling into account, so faces not being rendered will not be "
+"taken into account when shadow casting."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:95
+msgid ""
+"Will cast shadows from all visible faces in the GeometryInstance.\n"
+"Will not take culling into account, so all faces will be taken into account "
+"when shadow casting."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:99
+msgid ""
+"Will only show the shadows casted from this object.\n"
+"In other words, the actual mesh will not be visible, only the shadows casted "
+"from the mesh will be."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:103
+msgid ""
+"Will allow the GeometryInstance to be used when baking lights using a "
+"[GIProbe] or [BakedLightmap]."
+msgstr ""
+
+#: doc/classes/GeometryInstance.xml:106
+msgid ""
+"Unused in this class, exposed for consistency with [enum VisualServer."
+"InstanceFlags]."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:4
+msgid "Real-time global illumination (GI) probe."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:7
+msgid ""
+"[GIProbe]s are used to provide high-quality real-time indirect light to "
+"scenes. They precompute the effect of objects that emit light and the effect "
+"of static geometry to simulate the behavior of complex light in real-time. "
+"[GIProbe]s need to be baked before using, however, once baked, dynamic "
+"objects will receive light from them. Further, lights can be fully dynamic "
+"or baked.\n"
+"Having [GIProbe]s in a scene can be expensive, the quality of the probe can "
+"be turned down in exchange for better performance in the [ProjectSettings] "
+"using [member ProjectSettings.rendering/quality/voxel_cone_tracing/"
+"high_quality].\n"
+"[b]Note:[/b] Meshes should have sufficiently thick walls to avoid light "
+"leaks (avoid one-sided walls). For interior levels, enclose your level "
+"geometry in a sufficiently large box and bridge the loops to close the "
+"mesh.\n"
+"[b]Note:[/b] Due to a renderer limitation, emissive [ShaderMaterial]s cannot "
+"emit light when used in a [GIProbe]. Only emissive [SpatialMaterial]s can "
+"emit light in a [GIProbe]."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:13
+msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/gi_probes.html"
+msgstr ""
+
+#: doc/classes/GIProbe.xml:22
+msgid ""
+"Bakes the effect from all [GeometryInstance]s marked with [member "
+"GeometryInstance.use_in_baked_light] and [Light]s marked with either "
+"[constant Light.BAKE_INDIRECT] or [constant Light.BAKE_ALL]. If "
+"[code]create_visual_debug[/code] is [code]true[/code], after baking the "
+"light, this will generate a [MultiMesh] that has a cube representing each "
+"solid cell with each cube colored to the cell's albedo color. This can be "
+"used to visualize the [GIProbe]'s data and debug any issues that may be "
+"occurring."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:28
+msgid "Calls [method bake] with [code]create_visual_debug[/code] enabled."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:34
+msgid ""
+"Offsets the lookup of the light contribution from the [GIProbe]. This can be "
+"used to avoid self-shadowing, but may introduce light leaking at higher "
+"values. This and [member normal_bias] should be played around with to "
+"minimize self-shadowing and light leaking.\n"
+"[b]Note:[/b] [code]bias[/code] should usually be above 1.0 as that is the "
+"size of the voxels."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:38
+msgid ""
+"[i]Deprecated.[/i] This property has been deprecated due to known bugs and "
+"no longer has any effect when enabled."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:41
+msgid "The [GIProbeData] resource that holds the data for this [GIProbe]."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:44
+msgid ""
+"The maximum brightness that the [GIProbe] will recognize. Brightness will be "
+"scaled within this range."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:47
+msgid ""
+"Energy multiplier. Makes the lighting contribution from the [GIProbe] "
+"brighter."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:50
+msgid ""
+"The size of the area covered by the [GIProbe]. If you make the extents "
+"larger without increasing the subdivisions with [member subdiv], the size of "
+"each cell will increase and result in lower detailed lighting."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:53
+msgid ""
+"If [code]true[/code], ignores the sky contribution when calculating lighting."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:56
+msgid ""
+"Offsets the lookup into the [GIProbe] based on the object's normal "
+"direction. Can be used to reduce some self-shadowing artifacts."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:59
+msgid ""
+"How much light propagates through the probe internally. A higher value "
+"allows light to spread further."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:62
+msgid ""
+"Number of times to subdivide the grid that the [GIProbe] operates on. A "
+"higher number results in finer detail and thus higher visual quality, while "
+"lower numbers result in better performance."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:67
+msgid ""
+"Use 64 subdivisions. This is the lowest quality setting, but the fastest. "
+"Use it if you can, but especially use it on lower-end hardware."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:70
+msgid "Use 128 subdivisions. This is the default quality setting."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:73
+msgid "Use 256 subdivisions."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:76
+msgid ""
+"Use 512 subdivisions. This is the highest quality setting, but the slowest. "
+"On lower-end hardware this could cause the GPU to stall."
+msgstr ""
+
+#: doc/classes/GIProbe.xml:79
+msgid "Represents the size of the [enum Subdiv] enum."
+msgstr ""
+
+#: modules/gltf/doc_classes/GLTFLight.xml:13
+msgid ""
+"The [Color] of the light. Defaults to white. A black color causes the light "
+"to have no effect."
+msgstr ""
+
+#: modules/gltf/doc_classes/GLTFLight.xml:16
+msgid ""
+"The inner angle of the cone in a spotlight. Must be less than or equal to "
+"the outer cone angle.\n"
+"Within this angle, the light is at full brightness. Between the inner and "
+"outer cone angles, there is a transition from full brightness to zero "
+"brightness. When creating a Godot [SpotLight], the ratio between the inner "
+"and outer cone angles is used to calculate the attenuation of the light."
+msgstr ""
+
+#: modules/gltf/doc_classes/GLTFLight.xml:20
+msgid ""
+"The intensity of the light. This is expressed in candelas (lumens per "
+"steradian) for point and spot lights, and lux (lumens per m²) for "
+"directional lights. When creating a Godot light, this value is converted to "
+"a unitless multiplier."
+msgstr ""
+
+#: modules/gltf/doc_classes/GLTFLight.xml:23
+msgid ""
+"The outer angle of the cone in a spotlight. Must be greater than or equal to "
+"the inner angle.\n"
+"At this angle, the light drops off to zero brightness. Between the inner and "
+"outer cone angles, there is a transition from full brightness to zero "
+"brightness. If this angle is a half turn, then the spotlight emits in all "
+"directions. When creating a Godot [SpotLight], the outer cone angle is used "
+"as the angle of the spotlight."
+msgstr ""
+
+#: modules/gltf/doc_classes/GLTFLight.xml:27
+msgid ""
+"The range of the light, beyond which the light has no effect. GLTF lights "
+"with no range defined behave like physical lights (which have infinite "
+"range). When creating a Godot light, the range is clamped to 4096."
+msgstr ""
+
+#: modules/gltf/doc_classes/GLTFLight.xml:30
+msgid ""
+"The type of the light. The values accepted by Godot are \"point\", \"spot\", "
+"and \"directional\", which correspond to Godot's [OmniLight], [SpotLight], "
+"and [DirectionalLight] respectively."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:4
+msgid "Bridge between Godot and the Mono runtime (Mono-enabled builds only)."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:7
+msgid ""
+"This class is a bridge between Godot and the Mono runtime. It exposes "
+"several low-level operations and is only available in Mono-enabled Godot "
+"builds.\n"
+"See also [CSharpScript]."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:17
+msgid "Attaches the current thread to the Mono runtime."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:24
+msgid "Detaches the current thread from the Mono runtime."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:31
+msgid ""
+"Returns the current MonoDomain ID.\n"
+"[b]Note:[/b] The Mono runtime must be initialized for this method to work "
+"(use [method is_runtime_initialized] to check). If the Mono runtime isn't "
+"initialized at the time this method is called, the engine will crash."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:39
+msgid ""
+"Returns the scripts MonoDomain's ID. This will be the same MonoDomain ID as "
+"[method get_domain_id], unless the scripts domain isn't loaded.\n"
+"[b]Note:[/b] The Mono runtime must be initialized for this method to work "
+"(use [method is_runtime_initialized] to check). If the Mono runtime isn't "
+"initialized at the time this method is called, the engine will crash."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:49
+msgid ""
+"Returns [code]true[/code] if the domain is being finalized, [code]false[/"
+"code] otherwise."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:56
+msgid ""
+"Returns [code]true[/code] if the Mono runtime is initialized, [code]false[/"
+"code] otherwise."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:63
+msgid ""
+"Returns [code]true[/code] if the Mono runtime is shutting down, [code]false[/"
+"code] otherwise."
+msgstr ""
+
+#: modules/mono/doc_classes/GodotSharp.xml:70
+msgid ""
+"Returns [code]true[/code] if the scripts domain is loaded, [code]false[/"
+"code] otherwise."
+msgstr ""
+
+#: doc/classes/Gradient.xml:4
+msgid ""
+"A color interpolator resource which can be used to generate colors between "
+"user-defined color points."
+msgstr ""
+
+#: doc/classes/Gradient.xml:7
+msgid ""
+"Given a set of colors, this resource will interpolate them in order. This "
+"means that if you have color 1, color 2 and color 3, the ramp will "
+"interpolate from color 1 to color 2 and from color 2 to color 3. The ramp "
+"will initially have 2 colors (black and white), one (black) at ramp lower "
+"offset 0 and the other (white) at the ramp higher offset 1."
+msgstr ""
+
+#: doc/classes/Gradient.xml:17
+msgid ""
+"Adds the specified color to the end of the ramp, with the specified offset."
+msgstr ""
+
+#: doc/classes/Gradient.xml:24
+msgid "Returns the color of the ramp color at index [code]point[/code]."
+msgstr ""
+
+#: doc/classes/Gradient.xml:31
+msgid "Returns the offset of the ramp color at index [code]point[/code]."
+msgstr ""
+
+#: doc/classes/Gradient.xml:37
+msgid "Returns the number of colors in the ramp."
+msgstr ""
+
+#: doc/classes/Gradient.xml:44
+msgid "Returns the interpolated color specified by [code]offset[/code]."
+msgstr ""
+
+#: doc/classes/Gradient.xml:51
+msgid "Removes the color at the index [code]point[/code]."
+msgstr ""
+
+#: doc/classes/Gradient.xml:59
+msgid "Sets the color of the ramp color at index [code]point[/code]."
+msgstr ""
+
+#: doc/classes/Gradient.xml:67
+msgid "Sets the offset for the ramp color at index [code]point[/code]."
+msgstr ""
+
+#: doc/classes/Gradient.xml:73
+msgid "Gradient's colors returned as a [PoolColorArray]."
+msgstr ""
+
+#: doc/classes/Gradient.xml:76
+msgid "Gradient's offsets returned as a [PoolRealArray]."
+msgstr ""
+
+#: doc/classes/GradientTexture.xml:4
+msgid "Gradient-filled texture."
+msgstr ""
+
+#: doc/classes/GradientTexture.xml:7
+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])."
+msgstr ""
+
+#: doc/classes/GradientTexture.xml:15
+msgid "The [Gradient] that will be used to fill the texture."
+msgstr ""
+
+#: doc/classes/GradientTexture.xml:18
+msgid "The number of color samples that will be obtained from the [Gradient]."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:4
+msgid ""
+"GraphEdit is an area capable of showing various GraphNodes. It manages "
+"connection events between them."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:7
+msgid ""
+"GraphEdit manages the showing of GraphNodes it contains, as well as "
+"connections and disconnections between them. Signals are sent for each of "
+"these two events. Disconnection between GraphNode slots is disabled by "
+"default.\n"
+"It is greatly advised to enable low-processor usage mode (see [member OS."
+"low_processor_usage_mode]) when using GraphEdits."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:18
+msgid ""
+"Makes possible the connection between two different slot types. The type is "
+"defined with the [method GraphNode.set_slot] method."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:25
+msgid ""
+"Makes possible to disconnect nodes when dragging from the slot at the left "
+"if it has the specified type."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:32
+msgid ""
+"Makes possible to disconnect nodes when dragging from the slot at the right "
+"if it has the specified type."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:38
+msgid "Removes all connections between nodes."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:48
+msgid ""
+"Create a connection between the [code]from_port[/code] slot of the "
+"[code]from[/code] GraphNode and the [code]to_port[/code] slot of the "
+"[code]to[/code] GraphNode. If the connection already exists, no connection "
+"is created."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:58
+msgid ""
+"Removes the connection between the [code]from_port[/code] slot of the "
+"[code]from[/code] GraphNode and the [code]to_port[/code] slot of the "
+"[code]to[/code] GraphNode. If the connection does not exist, no connection "
+"is removed."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:64
+msgid ""
+"Returns an Array containing the list of connections. A connection consists "
+"in a structure of the form [code]{ from_port: 0, from: \"GraphNode name 0\", "
+"to_port: 1, to: \"GraphNode name 1\" }[/code]."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:70
+msgid ""
+"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:81
+msgid ""
+"Returns [code]true[/code] if the [code]from_port[/code] slot of the "
+"[code]from[/code] GraphNode is connected to the [code]to_port[/code] slot of "
+"the [code]to[/code] GraphNode."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:89
+msgid "Returns whether it's possible to connect slots of the specified types."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:97
+msgid ""
+"Makes it not possible to connect between two different slot types. The type "
+"is defined with the [method GraphNode.set_slot] method."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:104
+msgid ""
+"Removes the possibility to disconnect nodes when dragging from the slot at "
+"the left if it has the specified type."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:111
+msgid ""
+"Removes the possibility to disconnect nodes when dragging from the slot at "
+"the right if it has the specified type."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:122
+msgid ""
+"Sets the coloration of the connection between [code]from[/code]'s "
+"[code]from_port[/code] and [code]to[/code]'s [code]to_port[/code] with the "
+"color provided in the [code]activity[/code] theme property."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:129
+msgid "Sets the specified [code]node[/code] as the one selected."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:136
+msgid "If [code]true[/code], the minimap is visible."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:139
+msgid "The opacity of the minimap rectangle."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:142
+msgid ""
+"The size of the minimap rectangle. The map itself is based on the size of "
+"the grid area and is scaled to fit this rectangle."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:146
+msgid ""
+"If [code]true[/code], enables disconnection of existing connections in the "
+"GraphEdit by dragging the right end."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:149
+msgid "The scroll offset."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:152
+msgid ""
+"If [code]true[/code], makes a label with the current zoom level visible. The "
+"zoom value is displayed in percents."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:155
+msgid "The snapping distance in pixels."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:158
+msgid "If [code]true[/code], enables snapping."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:161
+msgid "The current zoom value."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:164
+msgid "The upper zoom limit."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:167
+msgid "The lower zoom limit."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:170
+msgid "The step of each zoom level."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:176
+msgid "Emitted at the beginning of a GraphNode movement."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:181
+msgid "Emitted at the end of a GraphNode movement."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:189
+msgid ""
+"Emitted when user dragging connection from input port into empty space of "
+"the graph."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:198
+msgid ""
+"Emitted to the GraphEdit when the connection between the [code]from_slot[/"
+"code] slot of the [code]from[/code] GraphNode and the [code]to_slot[/code] "
+"slot of the [code]to[/code] GraphNode is attempted to be created."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:206
+msgid ""
+"Emitted when user dragging connection from output port into empty space of "
+"the graph."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:211
+msgid "Emitted when the user presses [code]Ctrl + C[/code]."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:216
+msgid "Emitted when a GraphNode is attempted to be removed from the GraphEdit."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:225
+msgid ""
+"Emitted to the GraphEdit when the connection between [code]from_slot[/code] "
+"slot of [code]from[/code] GraphNode and [code]to_slot[/code] slot of "
+"[code]to[/code] GraphNode is attempted to be removed."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:230
+msgid ""
+"Emitted when a GraphNode is attempted to be duplicated in the GraphEdit."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:236
+msgid "Emitted when a GraphNode is selected."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:246
+msgid "Emitted when the user presses [code]Ctrl + V[/code]."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:252
+msgid ""
+"Emitted when a popup is requested. Happens on right-clicking in the "
+"GraphEdit. [code]position[/code] is the position of the mouse pointer when "
+"the signal is sent."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:258
+msgid ""
+"Emitted when the scroll offset is changed by the user. It will not be "
+"emitted when changed in code."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:272
+msgid "The background drawn under the grid."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:275
+msgid "Color of major grid lines."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:278
+msgid "Color of minor grid lines."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:283
+msgid "The icon for the zoom out button."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:286
+msgid "The icon for the zoom in button."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:289
+msgid ""
+"The horizontal range within which a port can be grabbed (on both sides)."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:292
+msgid "The vertical range within which a port can be grabbed (on both sides)."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:295
+msgid "The icon for the zoom reset button."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:298
+msgid "The fill color of the selection rectangle."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:301
+msgid "The outline color of the selection rectangle."
+msgstr ""
+
+#: doc/classes/GraphEdit.xml:304
+msgid "The icon for the snap toggle button."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:4
+msgid ""
+"A GraphNode is a container with potentially several input and output slots "
+"allowing connections between GraphNodes. Slots can have different, "
+"incompatible types."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:7
+msgid ""
+"A GraphNode is a container. Each GraphNode can have several input and output "
+"slots, sometimes referred to as ports, allowing connections between "
+"GraphNodes. To add a slot to GraphNode, add any [Control]-derived child node "
+"to it.\n"
+"After adding at least one child to GraphNode new sections will be "
+"automatically created in the Inspector called 'Slot'. When 'Slot' is "
+"expanded you will see list with index number for each slot. You can click on "
+"each of them to expand further.\n"
+"In the Inspector you can enable (show) or disable (hide) slots. By default, "
+"all slots are disabled so you may not see any slots on your GraphNode "
+"initially. You can assign a type to each slot. Only slots of the same type "
+"will be able to connect to each other. You can also assign colors to slots. "
+"A tuple of input and output slots is defined for each GUI element included "
+"in the GraphNode. Input connections are on the left and output connections "
+"are on the right side of GraphNode. Only enabled slots are counted as "
+"connections."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:17
+msgid "Disables all input and output slots of the GraphNode."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:24
+msgid "Disables input and output slot whose index is [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:31
+msgid "Returns the [Color] of the input connection [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:37
+msgid ""
+"Returns the number of enabled input slots (connections) to the GraphNode."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:44
+msgid "Returns the position of the input connection [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:51
+msgid "Returns the type of the input connection [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:58
+msgid "Returns the [Color] of the output connection [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:64
+msgid ""
+"Returns the number of enabled output slots (connections) of the GraphNode."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:71
+msgid "Returns the position of the output connection [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:78
+msgid "Returns the type of the output connection [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:85
+msgid "Returns the left (input) [Color] of the slot [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:92
+msgid "Returns the right (output) [Color] of the slot [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:99
+msgid "Returns the left (input) type of the slot [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:106
+msgid "Returns the right (output) type of the slot [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:113
+msgid ""
+"Returns [code]true[/code] if left (input) side of the slot [code]idx[/code] "
+"is enabled."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:120
+msgid ""
+"Returns [code]true[/code] if right (output) side of the slot [code]idx[/"
+"code] is enabled."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:135
+msgid ""
+"Sets properties of the slot with ID [code]idx[/code].\n"
+"If [code]enable_left[/code]/[code]right[/code], a port will appear and the "
+"slot will be able to be connected from this side.\n"
+"[code]type_left[/code]/[code]right[/code] is an arbitrary type of the port. "
+"Only ports with the same type values can be connected.\n"
+"[code]color_left[/code]/[code]right[/code] is the tint of the port's icon on "
+"this side.\n"
+"[code]custom_left[/code]/[code]right[/code] is a custom texture for this "
+"side's port.\n"
+"[b]Note:[/b] This method only sets properties of the slot. To create the "
+"slot, add a [Control]-derived child to the GraphNode.\n"
+"Individual properties can be set using one of the [code]set_slot_*[/code] "
+"methods. You must enable at least one side of the slot to do so."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:149
+msgid ""
+"Sets the [Color] of the left (input) side of the slot [code]idx[/code] to "
+"[code]color_left[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:157
+msgid ""
+"Sets the [Color] of the right (output) side of the slot [code]idx[/code] to "
+"[code]color_right[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:165
+msgid ""
+"Toggles the left (input) side of the slot [code]idx[/code]. If "
+"[code]enable_left[/code] is [code]true[/code], a port will appear on the "
+"left side and the slot will be able to be connected from this side."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:173
+msgid ""
+"Toggles the right (output) side of the slot [code]idx[/code]. If "
+"[code]enable_right[/code] is [code]true[/code], a port will appear on the "
+"right side and the slot will be able to be connected from this side."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:181
+msgid ""
+"Sets the left (input) type of the slot [code]idx[/code] to [code]type_left[/"
+"code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:189
+msgid ""
+"Sets the right (output) type of the slot [code]idx[/code] to "
+"[code]type_right[/code]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:195
+msgid "If [code]true[/code], the GraphNode is a comment node."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:198
+msgid ""
+"The offset of the GraphNode, relative to the scroll offset of the "
+"[GraphEdit].\n"
+"[b]Note:[/b] You cannot use position directly, as [GraphEdit] is a "
+"[Container]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:202
+msgid "Sets the overlay shown above the GraphNode. See [enum Overlay]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:205
+msgid ""
+"If [code]true[/code], the user can resize the GraphNode.\n"
+"[b]Note:[/b] Dragging the handle will only emit the [signal resize_request] "
+"signal, the GraphNode needs to be resized manually."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:209
+msgid "If [code]true[/code], the GraphNode is selected."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:212
+msgid ""
+"If [code]true[/code], the close button will be visible.\n"
+"[b]Note:[/b] Pressing it will only emit the [signal close_request] signal, "
+"the GraphNode needs to be removed manually."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:216
+msgid "The text displayed in the GraphNode's title bar."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:222
+msgid ""
+"Emitted when the GraphNode is requested to be closed. Happens on clicking "
+"the close button (see [member show_close])."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:229
+msgid "Emitted when the GraphNode is dragged."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:234
+msgid "Emitted when the GraphNode is moved."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:239
+msgid ""
+"Emitted when the GraphNode is requested to be displayed over other ones. "
+"Happens on focusing (clicking into) the GraphNode."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:245
+msgid ""
+"Emitted when the GraphNode is requested to be resized. Happens on dragging "
+"the resizer handle (see [member resizable])."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:251
+msgid "Emitted when any GraphNode's slot is updated."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:257
+msgid "No overlay is shown."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:260
+msgid "Show overlay set in the [code]breakpoint[/code] theme property."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:263
+msgid "Show overlay set in the [code]position[/code] theme property."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:268
+msgid ""
+"The background used when [member overlay] is set to [constant "
+"OVERLAY_BREAKPOINT]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:271
+msgid ""
+"The icon for the close button, visible when [member show_close] is enabled."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:274
+msgid "The color modulation applied to the close button icon."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
+msgid "The vertical offset of the close button."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:280
+msgid "The [StyleBox] used when [member comment] is enabled."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:283
+msgid ""
+"The [StyleBox] used when [member comment] is enabled and the [GraphNode] is "
+"focused."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:290
+msgid "The default background for [GraphNode]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:293
+msgid "The icon used for representing ports."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:296
+msgid "Horizontal offset for the ports."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:299
+msgid ""
+"The background used when [member overlay] is set to [constant "
+"OVERLAY_POSITION]."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:302
+msgid "The icon used for resizer, visible when [member resizable] is enabled."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:305
+msgid "The color modulation applied to the resizer icon."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:308
+msgid "The background used when the [GraphNode] is selected."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:311
+msgid "The vertical distance between ports."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:314
+msgid "Color of the title text."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:317
+msgid "Font used for the title text."
+msgstr ""
+
+#: doc/classes/GraphNode.xml:320
+msgid "Vertical offset of the title text."
+msgstr ""
+
+#: doc/classes/GridContainer.xml:4
+msgid ""
+"Grid container used to arrange Control-derived children in a grid like "
+"layout."
+msgstr ""
+
+#: doc/classes/GridContainer.xml:7
+msgid ""
+"GridContainer will arrange its Control-derived children in a grid like "
+"structure, the grid columns are specified using the [member columns] "
+"property and the number of rows will be equal to the number of children in "
+"the container divided by the number of columns. For example, if the "
+"container has 5 children, and 2 columns, there will be 3 rows in the "
+"container.\n"
+"Notice that grid layout will preserve the columns and rows for every size of "
+"the container, and that empty columns will be expanded automatically.\n"
+"[b]Note:[/b] GridContainer only works with child nodes inheriting from "
+"Control. It won't rearrange child nodes inheriting from Node2D."
+msgstr ""
+
+#: doc/classes/GridContainer.xml:18
+msgid ""
+"The number of columns in the [GridContainer]. If modified, [GridContainer] "
+"reorders its Control-derived children to accommodate the new layout."
+msgstr ""
+
+#: doc/classes/GridContainer.xml:26
+msgid "The horizontal separation of children nodes."
+msgstr ""
+
+#: doc/classes/GridContainer.xml:29
+msgid "The vertical separation of children nodes."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:4
+msgid "Node for 3D tile-based maps."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:7
+msgid ""
+"GridMap lets you place meshes on a grid interactively. It works both from "
+"the editor and from scripts, which can help you create in-game level "
+"editors.\n"
+"GridMaps use a [MeshLibrary] which contains a list of tiles. Each tile is a "
+"mesh with materials plus optional collision and navigation shapes.\n"
+"A GridMap contains a collection of cells. Each grid cell refers to a tile in "
+"the [MeshLibrary]. All cells in the map have the same dimensions.\n"
+"Internally, a GridMap is split into a sparse collection of octants for "
+"efficient rendering and physics processing. Every octant has the same "
+"dimensions and can contain several cells.\n"
+"[b]Note:[/b] GridMap doesn't extend [VisualInstance] and therefore can't be "
+"hidden or cull masked based on [member VisualInstance.layers]. If you make a "
+"light not affect the first layer, the whole GridMap won't be lit by the "
+"light in question."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:14
+msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/using_gridmaps.html"
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:22
+msgid "Clear all cells."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:39
+msgid ""
+"Returns an array of [ArrayMesh]es and [Transform] references of all bake "
+"meshes that exist within the current GridMap."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:48
+msgid ""
+"The [MeshLibrary] item index located at the grid-based X, Y and Z "
+"coordinates. If the cell is empty, [constant INVALID_CELL_ITEM] will be "
+"returned."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:57
+msgid ""
+"The orientation of the cell at the grid-based X, Y and Z coordinates. -1 is "
+"returned if the cell is empty."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:64
+msgid "Returns an individual bit on the [member collision_layer]."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:71
+msgid "Returns an individual bit on the [member collision_mask]."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:77
+msgid ""
+"Returns an array of [Transform] and [Mesh] references corresponding to the "
+"non-empty cells in the grid. The transforms are specified in world space."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:83
+msgid ""
+"Returns an array of [Vector3] with the non-empty cell coordinates in the "
+"grid map."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:99
+msgid ""
+"Returns the position of a grid cell in the GridMap's local coordinate space."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:116
+msgid ""
+"Sets the mesh index for the cell referenced by its grid-based X, Y and Z "
+"coordinates.\n"
+"A negative item index such as [constant INVALID_CELL_ITEM] will clear the "
+"cell.\n"
+"Optionally, the item's orientation can be passed. For valid orientation "
+"values, see [method Basis.get_orthogonal_index]."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:135
+msgid "Sets an individual bit on the [member collision_layer]."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:143
+msgid "Sets an individual bit on the [member collision_mask]."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:150
+msgid ""
+"Returns the coordinates of the grid cell containing the given point.\n"
+"[code]pos[/code] should be in the GridMap's local coordinate space."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:157
+msgid "If [code]true[/code], grid items are centered on the X axis."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:160
+msgid "If [code]true[/code], grid items are centered on the Y axis."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:163
+msgid "If [code]true[/code], grid items are centered on the Z axis."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:166
+msgid ""
+"The size of each octant measured in number of cells. This applies to all "
+"three axis."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:169
+msgid ""
+"The scale of the cell items.\n"
+"This does not affect the size of the grid cells themselves, only the items "
+"in them. This can be used to make cell items overlap their neighbors."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:173
+msgid ""
+"The dimensions of the grid's cells.\n"
+"This does not affect the size of the meshes. See [member cell_scale]."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:177
+msgid ""
+"The physics layers this GridMap is in.\n"
+"GridMaps act as static bodies, meaning they aren't affected by gravity or "
+"other forces. They only affect other physics bodies that collide with them."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:181
+msgid ""
+"The physics layers this GridMap detects collisions in. See [url=https://docs."
+"godotengine.org/en/3.4/tutorials/physics/physics_introduction.html#collision-"
+"layers-and-masks]Collision layers and masks[/url] in the documentation for "
+"more information."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:184
+msgid "The assigned [MeshLibrary]."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:187
+msgid ""
+"Controls whether this GridMap will be baked in a [BakedLightmap] or not."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:194
+msgid "Emitted when [member cell_size] changes."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml:200
+msgid ""
+"Invalid cell item that can be used in [method set_cell_item] to clear cells "
+"(or represent an empty cell in [method get_cell_item])."
+msgstr ""
+
+#: doc/classes/GrooveJoint2D.xml:4
+msgid "Groove constraint for 2D physics."
+msgstr ""
+
+#: doc/classes/GrooveJoint2D.xml:7
+msgid ""
+"Groove constraint for 2D physics. This is useful for making a body \"slide\" "
+"through a segment placed in another."
+msgstr ""
+
+#: doc/classes/GrooveJoint2D.xml:15
+msgid ""
+"The body B's initial anchor position defined by the joint's origin and a "
+"local offset [member initial_offset] along the joint's Y axis (along the "
+"groove)."
+msgstr ""
+
+#: doc/classes/GrooveJoint2D.xml:18
+msgid ""
+"The groove's length. The groove is from the joint's origin towards [member "
+"length] along the joint's local Y axis."
+msgstr ""
+
+#: doc/classes/HashingContext.xml:4
+msgid "Context to compute cryptographic hashes over multiple iterations."
+msgstr ""
+
+#: doc/classes/HashingContext.xml:7
+msgid ""
+"The HashingContext class provides an interface for computing cryptographic "
+"hashes over multiple iterations. This is useful for example when computing "
+"hashes of big files (so you don't have to load them all in memory), network "
+"streams, and data streams in general (so you don't have to hold buffers).\n"
+"The [enum HashType] enum shows the supported hashing algorithms.\n"
+"[codeblock]\n"
+"const CHUNK_SIZE = 1024\n"
+"\n"
+"func hash_file(path):\n"
+" var ctx = HashingContext.new()\n"
+" var file = File.new()\n"
+" # Start a SHA-256 context.\n"
+" ctx.start(HashingContext.HASH_SHA256)\n"
+" # Check that file exists.\n"
+" if not file.file_exists(path):\n"
+" return\n"
+" # Open the file to hash.\n"
+" file.open(path, File.READ)\n"
+" # Update the context after reading each chunk.\n"
+" while not file.eof_reached():\n"
+" ctx.update(file.get_buffer(CHUNK_SIZE))\n"
+" # Get the computed hash.\n"
+" var res = ctx.finish()\n"
+" # Print the result as hex string and array.\n"
+" printt(res.hex_encode(), Array(res))\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Not available in HTML5 exports."
+msgstr ""
+
+#: doc/classes/HashingContext.xml:38
+msgid "Closes the current context, and return the computed hash."
+msgstr ""
+
+#: doc/classes/HashingContext.xml:45
+msgid ""
+"Starts a new hash computation of the given [code]type[/code] (e.g. [constant "
+"HASH_SHA256] to start computation of a SHA-256)."
+msgstr ""
+
+#: doc/classes/HashingContext.xml:52
+msgid "Updates the computation with the given [code]chunk[/code] of data."
+msgstr ""
+
+#: doc/classes/HashingContext.xml:58
+msgid "Hashing algorithm: MD5."
+msgstr ""
+
+#: doc/classes/HashingContext.xml:61
+msgid "Hashing algorithm: SHA-1."
+msgstr ""
+
+#: doc/classes/HashingContext.xml:64
+msgid "Hashing algorithm: SHA-256."
+msgstr ""
+
+#: doc/classes/HBoxContainer.xml:4
+msgid "Horizontal box container."
+msgstr ""
+
+#: doc/classes/HBoxContainer.xml:7
+msgid "Horizontal box container. See [BoxContainer]."
+msgstr ""
+
+#: doc/classes/HBoxContainer.xml:17
+msgid "The horizontal space between the [HBoxContainer]'s elements."
+msgstr ""
+
+#: doc/classes/HeightMapShape.xml:4
+msgid "Height map shape for 3D physics."
+msgstr ""
+
+#: doc/classes/HeightMapShape.xml:7
+msgid ""
+"Height map shape resource, which can be added to a [PhysicsBody] or [Area]."
+msgstr ""
+
+#: doc/classes/HeightMapShape.xml:15
+msgid ""
+"Height map data, pool array must be of [member map_width] * [member "
+"map_depth] size."
+msgstr ""
+
+#: doc/classes/HeightMapShape.xml:18
+msgid ""
+"Depth of the height map data. Changing this will resize the [member "
+"map_data]."
+msgstr ""
+
+#: doc/classes/HeightMapShape.xml:21
+msgid ""
+"Width of the height map data. Changing this will resize the [member "
+"map_data]."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:4
+msgid "A hinge between two 3D PhysicsBodies."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:7
+msgid ""
+"A HingeJoint normally uses the Z axis of body A as the hinge axis, another "
+"axis can be specified when adding it manually though. See also "
+"[Generic6DOFJoint]."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:16 doc/classes/SpriteBase3D.xml:21
+msgid "Returns the value of the specified flag."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:23 doc/classes/ParticlesMaterial.xml:25
+#: doc/classes/PinJoint.xml:16
+msgid "Returns the value of the specified parameter."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:31
+msgid "If [code]true[/code], enables the specified flag."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:39 doc/classes/PinJoint.xml:24
+msgid "Sets the value of the specified parameter."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:45 doc/classes/HingeJoint.xml:85
+#: doc/classes/PhysicsServer.xml:977
+msgid ""
+"The speed with which the rotation across the axis perpendicular to the hinge "
+"gets corrected."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:48 doc/classes/HingeJoint.xml:102
+msgid ""
+"If [code]true[/code], the hinges maximum and minimum rotation, defined by "
+"[member angular_limit/lower] and [member angular_limit/upper] has effects."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:51 doc/classes/HingeJoint.xml:82
+msgid ""
+"The minimum rotation. Only active if [member angular_limit/enable] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:54 doc/classes/HingeJoint.xml:90
+#: doc/classes/PhysicsServer.xml:982
+msgid "The lower this value, the more the rotation gets slowed down."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:59 doc/classes/HingeJoint.xml:79
+msgid ""
+"The maximum rotation. Only active if [member angular_limit/enable] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:62 doc/classes/HingeJoint.xml:105
+msgid "When activated, a motor turns the hinge."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:65 doc/classes/HingeJoint.xml:96
+#: doc/classes/PhysicsServer.xml:988
+msgid "Maximum acceleration for the motor."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:68 doc/classes/HingeJoint.xml:93
+#: doc/classes/PhysicsServer.xml:985
+msgid "Target speed for the motor."
+msgstr ""
+
+#: doc/classes/HingeJoint.xml:71 doc/classes/HingeJoint.xml:76
+#: doc/classes/PhysicsServer.xml:968
+msgid ""
+"The speed with which the two bodies get pulled together when they move in "
+"different directions."
+msgstr ""
+
+#: doc/classes/HMACContext.xml:4
+msgid "Used to create an HMAC for a message using a key."
+msgstr ""
+
+#: doc/classes/HMACContext.xml:7
+msgid ""
+"The HMACContext class is useful for advanced HMAC use cases, such as "
+"streaming the message as it supports creating the message over time rather "
+"than providing it all at once.\n"
+"[codeblock]\n"
+"extends Node\n"
+"var ctx = HMACContext.new()\n"
+"\n"
+"func _ready():\n"
+" var key = \"supersecret\".to_utf8()\n"
+" var err = ctx.start(HashingContext.HASH_SHA256, key)\n"
+" assert(err == OK)\n"
+" var msg1 = \"this is \".to_utf8()\n"
+" var msg2 = \"vewy vewy secret\".to_utf8()\n"
+" err = ctx.update(msg1)\n"
+" assert(err == OK)\n"
+" err = ctx.update(msg2)\n"
+" assert(err == OK)\n"
+" var hmac = ctx.finish()\n"
+" print(hmac.hex_encode())\n"
+"[/codeblock]\n"
+"And in C# we can use the following.\n"
+"[codeblock]\n"
+"using Godot;\n"
+"using System;\n"
+"using System.Diagnostics;\n"
+"\n"
+"public class CryptoNode : Node\n"
+"{\n"
+" private HMACContext ctx = new HMACContext();\n"
+" public override void _Ready()\n"
+" {\n"
+" PoolByteArray key = String(\"supersecret\").to_utf8();\n"
+" Error err = ctx.Start(HashingContext.HASH_SHA256, key);\n"
+" GD.Assert(err == OK);\n"
+" PoolByteArray msg1 = String(\"this is \").to_utf8();\n"
+" PoolByteArray msg2 = String(\"vewy vew secret\").to_utf8();\n"
+" err = ctx.Update(msg1);\n"
+" GD.Assert(err == OK);\n"
+" err = ctx.Update(msg2);\n"
+" GD.Assert(err == OK);\n"
+" PoolByteArray hmac = ctx.Finish();\n"
+" GD.Print(hmac.HexEncode());\n"
+" }\n"
+"}\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Not available in HTML5 exports."
+msgstr ""
+
+#: doc/classes/HMACContext.xml:58
+msgid ""
+"Returns the resulting HMAC. If the HMAC failed, an empty [PoolByteArray] is "
+"returned."
+msgstr ""
+
+#: doc/classes/HMACContext.xml:66
+msgid ""
+"Initializes the HMACContext. This method cannot be called again on the same "
+"HMACContext until [method finish] has been called."
+msgstr ""
+
+#: doc/classes/HMACContext.xml:73
+msgid ""
+"Updates the message to be HMACed. This can be called multiple times before "
+"[method finish] is called to append [code]data[/code] to the message, but "
+"cannot be called until [method start] has been called."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:4
+msgid "Horizontal scroll bar."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:7
+msgid ""
+"Horizontal version of [ScrollBar], which goes from left (min) to right (max)."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:17
+msgid ""
+"Icon used as a button to scroll the [ScrollBar] left. Supports custom step "
+"using the [member ScrollBar.custom_step] property."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:20 doc/classes/VScrollBar.xml:24
+msgid "Displayed when the mouse cursor hovers over the decrement button."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:23 doc/classes/VScrollBar.xml:27
+msgid "Displayed when the decrement button is being pressed."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:26 doc/classes/VScrollBar.xml:30
+msgid ""
+"Used as texture for the grabber, the draggable element representing current "
+"scroll."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:29 doc/classes/VScrollBar.xml:33
+msgid "Used when the mouse hovers over the grabber."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:32 doc/classes/VScrollBar.xml:36
+msgid "Used when the grabber is being dragged."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:35
+msgid ""
+"Icon used as a button to scroll the [ScrollBar] right. Supports custom step "
+"using the [member ScrollBar.custom_step] property."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:38 doc/classes/VScrollBar.xml:42
+msgid "Displayed when the mouse cursor hovers over the increment button."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:41 doc/classes/VScrollBar.xml:45
+msgid "Displayed when the increment button is being pressed."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:44 doc/classes/VScrollBar.xml:48
+msgid "Used as background of this [ScrollBar]."
+msgstr ""
+
+#: doc/classes/HScrollBar.xml:47 doc/classes/VScrollBar.xml:51
+msgid "Used as background when the [ScrollBar] has the GUI focus."
+msgstr ""
+
+#: doc/classes/HSeparator.xml:4
+msgid "Horizontal separator."
+msgstr ""
+
+#: doc/classes/HSeparator.xml:7
+msgid ""
+"Horizontal separator. See [Separator]. Even though it looks horizontal, it "
+"is used to separate objects vertically."
+msgstr ""
+
+#: doc/classes/HSeparator.xml:17
+msgid ""
+"The height of the area covered by the separator. Effectively works like a "
+"minimum height."
+msgstr ""
+
+#: doc/classes/HSeparator.xml:20
+msgid "The style for the separator line. Works best with [StyleBoxLine]."
+msgstr ""
+
+#: doc/classes/HSlider.xml:4
+msgid "Horizontal slider."
+msgstr ""
+
+#: doc/classes/HSlider.xml:7
+msgid ""
+"Horizontal slider. See [Slider]. This one goes from left (min) to right "
+"(max).\n"
+"[b]Note:[/b] The [signal Range.changed] and [signal Range.value_changed] "
+"signals are part of the [Range] class which this class inherits from."
+msgstr ""
+
+#: doc/classes/HSlider.xml:18 doc/classes/VSlider.xml:22
+msgid "The texture for the grabber (the draggable element)."
+msgstr ""
+
+#: doc/classes/HSlider.xml:21
+msgid "The background of the area to the left of the grabber."
+msgstr ""
+
+#: doc/classes/HSlider.xml:26 doc/classes/VSlider.xml:30
+msgid "The texture for the grabber when it's disabled."
+msgstr ""
+
+#: doc/classes/HSlider.xml:29 doc/classes/VSlider.xml:33
+msgid "The texture for the grabber when it's focused."
+msgstr ""
+
+#: doc/classes/HSlider.xml:32
+msgid ""
+"The background for the whole slider. Determines the height of the "
+"[code]grabber_area[/code]."
+msgstr ""
+
+#: doc/classes/HSlider.xml:35 doc/classes/VSlider.xml:39
+msgid ""
+"The texture for the ticks, visible when [member Slider.tick_count] is "
+"greater than 0."
+msgstr ""
+
+#: doc/classes/HSplitContainer.xml:4
+msgid "Horizontal split container."
+msgstr ""
+
+#: doc/classes/HSplitContainer.xml:7
+msgid ""
+"Horizontal split container. See [SplitContainer]. This goes from left to "
+"right."
+msgstr ""
+
+#: doc/classes/HSplitContainer.xml:17 doc/classes/VSplitContainer.xml:17
+msgid ""
+"Boolean value. If 1 ([code]true[/code]), the grabber will hide automatically "
+"when it isn't under the cursor. If 0 ([code]false[/code]), it's always "
+"visible."
+msgstr ""
+
+#: doc/classes/HSplitContainer.xml:22 doc/classes/VSplitContainer.xml:22
+msgid "The icon used for the grabber drawn in the middle area."
+msgstr ""
+
+#: doc/classes/HSplitContainer.xml:25 doc/classes/VSplitContainer.xml:25
+msgid "The space between sides of the container."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:4
+msgid "Low-level hyper-text transfer protocol client."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:7
+msgid ""
+"Hyper-text transfer protocol client (sometimes called \"User Agent\"). Used "
+"to make HTTP requests to download web content, upload files and other data "
+"or to communicate with various services, among other use cases. [b]See the "
+"[HTTPRequest] node for a higher-level alternative.[/b]\n"
+"[b]Note:[/b] This client only needs to connect to a host once (see [method "
+"connect_to_host]) to send multiple requests. Because of this, methods that "
+"take URLs usually take just the part after the host instead of the full URL, "
+"as the client is already connected to a host. See [method request] for a "
+"full example and to get started.\n"
+"A [HTTPClient] should be reused between multiple requests or to connect to "
+"different hosts instead of creating one client per request. Supports SSL and "
+"SSL server certificate verification. HTTP status codes in the 2xx range "
+"indicate success, 3xx redirection (i.e. \"try again, but over here\"), 4xx "
+"something was wrong with the request, and 5xx something went wrong on the "
+"server's side.\n"
+"For more information on HTTP, see https://developer.mozilla.org/en-US/docs/"
+"Web/HTTP (or read RFC 2616 to get it straight from the source: https://tools."
+"ietf.org/html/rfc2616).\n"
+"[b]Note:[/b] When performing HTTP requests from a project exported to HTML5, "
+"keep in mind the remote server may not allow requests from foreign origins "
+"due to [url=https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS]CORS[/"
+"url]. If you host the server in question, you should modify its backend to "
+"allow requests from foreign origins by adding the [code]Access-Control-Allow-"
+"Origin: *[/code] HTTP header.\n"
+"[b]Note:[/b] SSL/TLS support is currently limited to TLS 1.0, TLS 1.1, and "
+"TLS 1.2. Attempting to connect to a TLS 1.3-only server will return an "
+"error.\n"
+"[b]Warning:[/b] SSL/TLS certificate revocation and certificate pinning are "
+"currently not supported. Revoked certificates are accepted as long as they "
+"are otherwise valid. If this is a concern, you may want to use automatically "
+"managed certificates with a short validity period."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:16
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/networking/http_client_class."
+"html"
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
+#: doc/classes/StreamPeerSSL.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/networking/ssl_certificates."
+"html"
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:23
+msgid "Closes the current connection, allowing reuse of this [HTTPClient]."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:33
+msgid ""
+"Connects to a host. This needs to be done before any requests are sent.\n"
+"The host should not have http:// prepended but will strip the protocol "
+"identifier if provided.\n"
+"If no [code]port[/code] is specified (or [code]-1[/code] is used), it is "
+"automatically set to 80 for HTTP and 443 for HTTPS (if [code]use_ssl[/code] "
+"is enabled).\n"
+"[code]verify_host[/code] will check the SSL identity of the host if set to "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:42
+msgid ""
+"Returns the response's body length.\n"
+"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
+"value returned will be [code]-1[/code]. If using chunked transfer encoding, "
+"the body length will also be [code]-1[/code]."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:49
+msgid "Returns the response's HTTP status code."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:55
+msgid "Returns the response headers."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:61
+msgid ""
+"Returns all response headers as a Dictionary of structure [code]{ \"key\": "
+"\"value1; value2\" }[/code] where the case-sensitivity of the keys and "
+"values is kept like the server delivers it. A value is a simple String, this "
+"string can have more than one value where \"; \" is used as separator.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"{\n"
+" \"content-length\": 12,\n"
+" \"Content-Type\": \"application/json; charset=UTF-8\",\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:74
+msgid ""
+"Returns a [enum Status] constant. Need to call [method poll] in order to get "
+"status updates."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:80
+msgid "If [code]true[/code], this [HTTPClient] has a response available."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:86
+msgid "If [code]true[/code], this [HTTPClient] has a response that is chunked."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:92
+msgid ""
+"This needs to be called in order to have any request processed. Check "
+"results with [method get_status]."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:99
+msgid ""
+"Generates a GET/POST application/x-www-form-urlencoded style query string "
+"from a provided dictionary, e.g.:\n"
+"[codeblock]\n"
+"var fields = {\"username\": \"user\", \"password\": \"pass\"}\n"
+"var query_string = http_client.query_string_from_dict(fields)\n"
+"# Returns \"username=user&password=pass\"\n"
+"[/codeblock]\n"
+"Furthermore, if a key has a [code]null[/code] value, only the key itself is "
+"added, without equal sign and value. If the value is an array, for each "
+"value in it a pair with the same key is added.\n"
+"[codeblock]\n"
+"var fields = {\"single\": 123, \"not_valued\": null, \"multiple\": [22, 33, "
+"44]}\n"
+"var query_string = http_client.query_string_from_dict(fields)\n"
+"# Returns \"single=123&not_valued&multiple=22&multiple=33&multiple=44\"\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:116
+msgid "Reads one chunk from the response."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:126
+msgid ""
+"Sends a request to the connected host.\n"
+"The URL parameter is usually just the part after the host, so for "
+"[code]http://somehost.com/index.php[/code], it is [code]/index.php[/code]. "
+"When sending requests to an HTTP proxy server, it should be an absolute URL. "
+"For [constant HTTPClient.METHOD_OPTIONS] requests, [code]*[/code] is also "
+"allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the "
+"authority component ([code]host:port[/code]).\n"
+"Headers are HTTP request headers. For available HTTP methods, see [enum "
+"Method].\n"
+"To create a POST request with query strings to push to the server, do:\n"
+"[codeblock]\n"
+"var fields = {\"username\" : \"user\", \"password\" : \"pass\"}\n"
+"var query_string = http_client.query_string_from_dict(fields)\n"
+"var headers = [\"Content-Type: application/x-www-form-urlencoded\", "
+"\"Content-Length: \" + str(query_string.length())]\n"
+"var result = http_client.request(http_client.METHOD_POST, \"/index.php\", "
+"headers, query_string)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] The [code]request_data[/code] parameter is ignored if "
+"[code]method[/code] is [constant HTTPClient.METHOD_GET]. This is because GET "
+"methods can't contain request data. As a workaround, you can pass request "
+"data as a query string in the URL. See [method String.http_escape] for an "
+"example."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:146
+msgid ""
+"Sends a raw request to the connected host.\n"
+"The URL parameter is usually just the part after the host, so for "
+"[code]http://somehost.com/index.php[/code], it is [code]/index.php[/code]. "
+"When sending requests to an HTTP proxy server, it should be an absolute URL. "
+"For [constant HTTPClient.METHOD_OPTIONS] requests, [code]*[/code] is also "
+"allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the "
+"authority component ([code]host:port[/code]).\n"
+"Headers are HTTP request headers. For available HTTP methods, see [enum "
+"Method].\n"
+"Sends the body data raw, as a byte array and does not encode it in any way."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:155
+msgid ""
+"If [code]true[/code], execution will block until all data is read from the "
+"response."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:158
+msgid "The connection to use for this client."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:161
+msgid ""
+"The size of the buffer used and maximum bytes to read per iteration. See "
+"[method read_response_body_chunk]."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:166
+msgid ""
+"HTTP GET method. The GET method requests a representation of the specified "
+"resource. Requests using GET should only retrieve data."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:169
+msgid ""
+"HTTP HEAD method. The HEAD method asks for a response identical to that of a "
+"GET request, but without the response body. This is useful to request "
+"metadata like HTTP headers or to check if a resource exists."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:172
+msgid ""
+"HTTP POST method. The POST method is used to submit an entity to the "
+"specified resource, often causing a change in state or side effects on the "
+"server. This is often used for forms and submitting data or uploading files."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:175
+msgid ""
+"HTTP PUT method. The PUT method asks to replace all current representations "
+"of the target resource with the request payload. (You can think of POST as "
+"\"create or update\" and PUT as \"update\", although many services tend to "
+"not make a clear distinction or change their meaning)."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:178
+msgid ""
+"HTTP DELETE method. The DELETE method requests to delete the specified "
+"resource."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:181
+msgid ""
+"HTTP OPTIONS method. The OPTIONS method asks for a description of the "
+"communication options for the target resource. Rarely used."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:184
+msgid ""
+"HTTP TRACE method. The TRACE method performs a message loop-back test along "
+"the path to the target resource. Returns the entire HTTP request received in "
+"the response body. Rarely used."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:187
+msgid ""
+"HTTP CONNECT method. The CONNECT method establishes a tunnel to the server "
+"identified by the target resource. Rarely used."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:190
+msgid ""
+"HTTP PATCH method. The PATCH method is used to apply partial modifications "
+"to a resource."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:193
+msgid "Represents the size of the [enum Method] enum."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:196
+msgid "Status: Disconnected from the server."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:199
+msgid "Status: Currently resolving the hostname for the given URL into an IP."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:202
+msgid "Status: DNS failure: Can't resolve the hostname for the given URL."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:205
+msgid "Status: Currently connecting to server."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:208
+msgid "Status: Can't connect to the server."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:211
+msgid "Status: Connection established."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:214
+msgid "Status: Currently sending request."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:217
+msgid "Status: HTTP body received."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:220
+msgid "Status: Error in HTTP connection."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:223
+msgid "Status: Error in SSL handshake."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:226
+msgid ""
+"HTTP status code [code]100 Continue[/code]. Interim response that indicates "
+"everything so far is OK and that the client should continue with the request "
+"(or ignore this status if already finished)."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:229
+msgid ""
+"HTTP status code [code]101 Switching Protocol[/code]. Sent in response to an "
+"[code]Upgrade[/code] request header by the client. Indicates the protocol "
+"the server is switching to."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:232
+msgid ""
+"HTTP status code [code]102 Processing[/code] (WebDAV). Indicates that the "
+"server has received and is processing the request, but no response is "
+"available yet."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:235
+msgid ""
+"HTTP status code [code]200 OK[/code]. The request has succeeded. Default "
+"response for successful requests. Meaning varies depending on the request. "
+"GET: The resource has been fetched and is transmitted in the message body. "
+"HEAD: The entity headers are in the message body. POST: The resource "
+"describing the result of the action is transmitted in the message body. "
+"TRACE: The message body contains the request message as received by the "
+"server."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:238
+msgid ""
+"HTTP status code [code]201 Created[/code]. The request has succeeded and a "
+"new resource has been created as a result of it. This is typically the "
+"response sent after a PUT request."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:241
+msgid ""
+"HTTP status code [code]202 Accepted[/code]. The request has been received "
+"but not yet acted upon. It is non-committal, meaning that there is no way in "
+"HTTP to later send an asynchronous response indicating the outcome of "
+"processing the request. It is intended for cases where another process or "
+"server handles the request, or for batch processing."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:244
+msgid ""
+"HTTP status code [code]203 Non-Authoritative Information[/code]. This "
+"response code means returned meta-information set is not exact set as "
+"available from the origin server, but collected from a local or a third "
+"party copy. Except this condition, 200 OK response should be preferred "
+"instead of this response."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:247
+msgid ""
+"HTTP status code [code]204 No Content[/code]. There is no content to send "
+"for this request, but the headers may be useful. The user-agent may update "
+"its cached headers for this resource with the new ones."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:250
+msgid ""
+"HTTP status code [code]205 Reset Content[/code]. The server has fulfilled "
+"the request and desires that the client resets the \"document view\" that "
+"caused the request to be sent to its original state as received from the "
+"origin server."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:253
+msgid ""
+"HTTP status code [code]206 Partial Content[/code]. This response code is "
+"used because of a range header sent by the client to separate download into "
+"multiple streams."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:256
+msgid ""
+"HTTP status code [code]207 Multi-Status[/code] (WebDAV). A Multi-Status "
+"response conveys information about multiple resources in situations where "
+"multiple status codes might be appropriate."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:259
+msgid ""
+"HTTP status code [code]208 Already Reported[/code] (WebDAV). Used inside a "
+"DAV: propstat response element to avoid enumerating the internal members of "
+"multiple bindings to the same collection repeatedly."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:262
+msgid ""
+"HTTP status code [code]226 IM Used[/code] (WebDAV). The server has fulfilled "
+"a GET request for the resource, and the response is a representation of the "
+"result of one or more instance-manipulations applied to the current instance."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:265
+msgid ""
+"HTTP status code [code]300 Multiple Choice[/code]. The request has more than "
+"one possible responses and there is no standardized way to choose one of the "
+"responses. User-agent or user should choose one of them."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:268
+msgid ""
+"HTTP status code [code]301 Moved Permanently[/code]. Redirection. This "
+"response code means the URI of requested resource has been changed. The new "
+"URI is usually included in the response."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:271
+msgid ""
+"HTTP status code [code]302 Found[/code]. Temporary redirection. This "
+"response code means the URI of requested resource has been changed "
+"temporarily. New changes in the URI might be made in the future. Therefore, "
+"this same URI should be used by the client in future requests."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:274
+msgid ""
+"HTTP status code [code]303 See Other[/code]. The server is redirecting the "
+"user agent to a different resource, as indicated by a URI in the Location "
+"header field, which is intended to provide an indirect response to the "
+"original request."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:277
+msgid ""
+"HTTP status code [code]304 Not Modified[/code]. A conditional GET or HEAD "
+"request has been received and would have resulted in a 200 OK response if it "
+"were not for the fact that the condition evaluated to [code]false[/code]."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:280
+msgid ""
+"HTTP status code [code]305 Use Proxy[/code]. [i]Deprecated. Do not use.[/i]"
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:283
+msgid ""
+"HTTP status code [code]306 Switch Proxy[/code]. [i]Deprecated. Do not use.[/"
+"i]"
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:286
+msgid ""
+"HTTP status code [code]307 Temporary Redirect[/code]. The target resource "
+"resides temporarily under a different URI and the user agent MUST NOT change "
+"the request method if it performs an automatic redirection to that URI."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:289
+msgid ""
+"HTTP status code [code]308 Permanent Redirect[/code]. The target resource "
+"has been assigned a new permanent URI and any future references to this "
+"resource ought to use one of the enclosed URIs."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:292
+msgid ""
+"HTTP status code [code]400 Bad Request[/code]. The request was invalid. The "
+"server cannot or will not process the request due to something that is "
+"perceived to be a client error (e.g., malformed request syntax, invalid "
+"request message framing, invalid request contents, or deceptive request "
+"routing)."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:295
+msgid ""
+"HTTP status code [code]401 Unauthorized[/code]. Credentials required. The "
+"request has not been applied because it lacks valid authentication "
+"credentials for the target resource."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:298
+msgid ""
+"HTTP status code [code]402 Payment Required[/code]. This response code is "
+"reserved for future use. Initial aim for creating this code was using it for "
+"digital payment systems, however this is not currently used."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:301
+msgid ""
+"HTTP status code [code]403 Forbidden[/code]. The client does not have access "
+"rights to the content, i.e. they are unauthorized, so server is rejecting to "
+"give proper response. Unlike [code]401[/code], the client's identity is "
+"known to the server."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:304
+msgid ""
+"HTTP status code [code]404 Not Found[/code]. The server can not find "
+"requested resource. Either the URL is not recognized or the endpoint is "
+"valid but the resource itself does not exist. May also be sent instead of "
+"403 to hide existence of a resource if the client is not authorized."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:307
+msgid ""
+"HTTP status code [code]405 Method Not Allowed[/code]. The request's HTTP "
+"method is known by the server but has been disabled and cannot be used. For "
+"example, an API may forbid DELETE-ing a resource. The two mandatory methods, "
+"GET and HEAD, must never be disabled and should not return this error code."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:310
+msgid ""
+"HTTP status code [code]406 Not Acceptable[/code]. The target resource does "
+"not have a current representation that would be acceptable to the user "
+"agent, according to the proactive negotiation header fields received in the "
+"request. Used when negotiation content."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:313
+msgid ""
+"HTTP status code [code]407 Proxy Authentication Required[/code]. Similar to "
+"401 Unauthorized, but it indicates that the client needs to authenticate "
+"itself in order to use a proxy."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:316
+msgid ""
+"HTTP status code [code]408 Request Timeout[/code]. The server did not "
+"receive a complete request message within the time that it was prepared to "
+"wait."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:319
+msgid ""
+"HTTP status code [code]409 Conflict[/code]. The request could not be "
+"completed due to a conflict with the current state of the target resource. "
+"This code is used in situations where the user might be able to resolve the "
+"conflict and resubmit the request."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:322
+msgid ""
+"HTTP status code [code]410 Gone[/code]. The target resource is no longer "
+"available at the origin server and this condition is likely permanent."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:325
+msgid ""
+"HTTP status code [code]411 Length Required[/code]. The server refuses to "
+"accept the request without a defined Content-Length header."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:328
+msgid ""
+"HTTP status code [code]412 Precondition Failed[/code]. One or more "
+"conditions given in the request header fields evaluated to [code]false[/"
+"code] when tested on the server."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:331
+msgid ""
+"HTTP status code [code]413 Entity Too Large[/code]. The server is refusing "
+"to process a request because the request payload is larger than the server "
+"is willing or able to process."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:334
+msgid ""
+"HTTP status code [code]414 Request-URI Too Long[/code]. The server is "
+"refusing to service the request because the request-target is longer than "
+"the server is willing to interpret."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:337
+msgid ""
+"HTTP status code [code]415 Unsupported Media Type[/code]. The origin server "
+"is refusing to service the request because the payload is in a format not "
+"supported by this method on the target resource."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:340
+msgid ""
+"HTTP status code [code]416 Requested Range Not Satisfiable[/code]. None of "
+"the ranges in the request's Range header field overlap the current extent of "
+"the selected resource or the set of ranges requested has been rejected due "
+"to invalid ranges or an excessive request of small or overlapping ranges."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:343
+msgid ""
+"HTTP status code [code]417 Expectation Failed[/code]. The expectation given "
+"in the request's Expect header field could not be met by at least one of the "
+"inbound servers."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:346
+msgid ""
+"HTTP status code [code]418 I'm A Teapot[/code]. Any attempt to brew coffee "
+"with a teapot should result in the error code \"418 I'm a teapot\". The "
+"resulting entity body MAY be short and stout."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:349
+msgid ""
+"HTTP status code [code]421 Misdirected Request[/code]. The request was "
+"directed at a server that is not able to produce a response. This can be "
+"sent by a server that is not configured to produce responses for the "
+"combination of scheme and authority that are included in the request URI."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:352
+msgid ""
+"HTTP status code [code]422 Unprocessable Entity[/code] (WebDAV). The server "
+"understands the content type of the request entity (hence a 415 Unsupported "
+"Media Type status code is inappropriate), and the syntax of the request "
+"entity is correct (thus a 400 Bad Request status code is inappropriate) but "
+"was unable to process the contained instructions."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:355
+msgid ""
+"HTTP status code [code]423 Locked[/code] (WebDAV). The source or destination "
+"resource of a method is locked."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:358
+msgid ""
+"HTTP status code [code]424 Failed Dependency[/code] (WebDAV). The method "
+"could not be performed on the resource because the requested action depended "
+"on another action and that action failed."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:361
+msgid ""
+"HTTP status code [code]426 Upgrade Required[/code]. The server refuses to "
+"perform the request using the current protocol but might be willing to do so "
+"after the client upgrades to a different protocol."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:364
+msgid ""
+"HTTP status code [code]428 Precondition Required[/code]. The origin server "
+"requires the request to be conditional."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:367
+msgid ""
+"HTTP status code [code]429 Too Many Requests[/code]. The user has sent too "
+"many requests in a given amount of time (see \"rate limiting\"). Back off "
+"and increase time between requests or try again later."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:370
+msgid ""
+"HTTP status code [code]431 Request Header Fields Too Large[/code]. The "
+"server is unwilling to process the request because its header fields are too "
+"large. The request MAY be resubmitted after reducing the size of the request "
+"header fields."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:373
+msgid ""
+"HTTP status code [code]451 Response Unavailable For Legal Reasons[/code]. "
+"The server is denying access to the resource as a consequence of a legal "
+"demand."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:376
+msgid ""
+"HTTP status code [code]500 Internal Server Error[/code]. The server "
+"encountered an unexpected condition that prevented it from fulfilling the "
+"request."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:379
+msgid ""
+"HTTP status code [code]501 Not Implemented[/code]. The server does not "
+"support the functionality required to fulfill the request."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:382
+msgid ""
+"HTTP status code [code]502 Bad Gateway[/code]. The server, while acting as a "
+"gateway or proxy, received an invalid response from an inbound server it "
+"accessed while attempting to fulfill the request. Usually returned by load "
+"balancers or proxies."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:385
+msgid ""
+"HTTP status code [code]503 Service Unavailable[/code]. The server is "
+"currently unable to handle the request due to a temporary overload or "
+"scheduled maintenance, which will likely be alleviated after some delay. Try "
+"again later."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:388
+msgid ""
+"HTTP status code [code]504 Gateway Timeout[/code]. The server, while acting "
+"as a gateway or proxy, did not receive a timely response from an upstream "
+"server it needed to access in order to complete the request. Usually "
+"returned by load balancers or proxies."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:391
+msgid ""
+"HTTP status code [code]505 HTTP Version Not Supported[/code]. The server "
+"does not support, or refuses to support, the major version of HTTP that was "
+"used in the request message."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:394
+msgid ""
+"HTTP status code [code]506 Variant Also Negotiates[/code]. The server has an "
+"internal configuration error: the chosen variant resource is configured to "
+"engage in transparent content negotiation itself, and is therefore not a "
+"proper end point in the negotiation process."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:397
+msgid ""
+"HTTP status code [code]507 Insufficient Storage[/code]. The method could not "
+"be performed on the resource because the server is unable to store the "
+"representation needed to successfully complete the request."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:400
+msgid ""
+"HTTP status code [code]508 Loop Detected[/code]. The server terminated an "
+"operation because it encountered an infinite loop while processing a request "
+"with \"Depth: infinity\". This status indicates that the entire operation "
+"failed."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:403
+msgid ""
+"HTTP status code [code]510 Not Extended[/code]. The policy for accessing the "
+"resource has not been met in the request. The server should send back all "
+"the information necessary for the client to issue an extended request."
+msgstr ""
+
+#: doc/classes/HTTPClient.xml:406
+msgid ""
+"HTTP status code [code]511 Network Authentication Required[/code]. The "
+"client needs to authenticate to gain network access."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:4
+msgid "A node with the ability to send HTTP(S) requests."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:7
+msgid ""
+"A node with the ability to send HTTP requests. Uses [HTTPClient] "
+"internally.\n"
+"Can be used to make HTTP requests, i.e. download or upload files or web "
+"content via HTTP.\n"
+"[b]Warning:[/b] See the notes and warnings on [HTTPClient] for limitations, "
+"especially regarding SSL security.\n"
+"[b]Example of contacting a REST API and printing one of its returned fields:"
+"[/b]\n"
+"[codeblock]\n"
+"func _ready():\n"
+" # Create an HTTP request node and connect its completion signal.\n"
+" var http_request = HTTPRequest.new()\n"
+" add_child(http_request)\n"
+" http_request.connect(\"request_completed\", self, "
+"\"_http_request_completed\")\n"
+"\n"
+" # Perform a GET request. The URL below returns JSON as of writing.\n"
+" var error = http_request.request(\"https://httpbin.org/get\")\n"
+" if error != OK:\n"
+" push_error(\"An error occurred in the HTTP request.\")\n"
+"\n"
+" # Perform a POST request. The URL below returns JSON as of writing.\n"
+" # Note: Don't make simultaneous requests using a single HTTPRequest "
+"node.\n"
+" # The snippet below is provided for reference only.\n"
+" var body = {\"name\": \"Godette\"}\n"
+" error = http_request.request(\"https://httpbin.org/post\", [], true, "
+"HTTPClient.METHOD_POST, body)\n"
+" if error != OK:\n"
+" push_error(\"An error occurred in the HTTP request.\")\n"
+"\n"
+"\n"
+"# Called when the HTTP request is completed.\n"
+"func _http_request_completed(result, response_code, headers, body):\n"
+" var response = parse_json(body.get_string_from_utf8())\n"
+"\n"
+" # Will print the user agent string used by the HTTPRequest node (as "
+"recognized by httpbin.org).\n"
+" print(response.headers[\"User-Agent\"])\n"
+"[/codeblock]\n"
+"[b]Example of loading and displaying an image using HTTPRequest:[/b]\n"
+"[codeblock]\n"
+"func _ready():\n"
+" # Create an HTTP request node and connect its completion signal.\n"
+" var http_request = HTTPRequest.new()\n"
+" add_child(http_request)\n"
+" http_request.connect(\"request_completed\", self, "
+"\"_http_request_completed\")\n"
+"\n"
+" # Perform the HTTP request. The URL below returns a PNG image as of "
+"writing.\n"
+" var error = http_request.request(\"https://via.placeholder.com/512\")\n"
+" if error != OK:\n"
+" push_error(\"An error occurred in the HTTP request.\")\n"
+"\n"
+"\n"
+"# Called when the HTTP request is completed.\n"
+"func _http_request_completed(result, response_code, headers, body):\n"
+" var image = Image.new()\n"
+" var error = image.load_png_from_buffer(body)\n"
+" if error != OK:\n"
+" push_error(\"Couldn't load the image.\")\n"
+"\n"
+" var texture = ImageTexture.new()\n"
+" texture.create_from_image(image)\n"
+"\n"
+" # Display the image in a TextureRect node.\n"
+" var texture_rect = TextureRect.new()\n"
+" add_child(texture_rect)\n"
+" texture_rect.texture = texture\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:70
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
+"html"
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:77
+msgid "Cancels the current request."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:83
+msgid ""
+"Returns the response body length.\n"
+"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
+"value returned will be [code]-1[/code]. If using chunked transfer encoding, "
+"the body length will also be [code]-1[/code]."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:90
+msgid "Returns the amount of bytes this HTTPRequest downloaded."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:96
+msgid ""
+"Returns the current status of the underlying [HTTPClient]. See [enum "
+"HTTPClient.Status]."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:107
+msgid ""
+"Creates request on the underlying [HTTPClient]. If there is no configuration "
+"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
+"passes parameters onto [method HTTPClient.request].\n"
+"Returns [constant OK] if request is successfully created. (Does not imply "
+"that the server has responded), [constant ERR_UNCONFIGURED] if not in the "
+"tree, [constant ERR_BUSY] if still processing previous request, [constant "
+"ERR_INVALID_PARAMETER] if given string is not a valid URL format, or "
+"[constant ERR_CANT_CONNECT] if not using thread and the [HTTPClient] cannot "
+"connect to host.\n"
+"[b]Note:[/b] When [code]method[/code] is [constant HTTPClient.METHOD_GET], "
+"the payload sent via [code]request_data[/code] might be ignored by the "
+"server or even cause the server to reject the request (check [url=https://"
+"datatracker.ietf.org/doc/html/rfc7231#section-4.3.1]RFC 7231 section 4.3.1[/"
+"url] for more details). As a workaround, you can send data as a query string "
+"in the URL. See [method String.http_escape] for an example."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:120
+msgid ""
+"Creates request on the underlying [HTTPClient] using a raw array of bytes "
+"for the request body. If there is no configuration errors, it tries to "
+"connect using [method HTTPClient.connect_to_host] and passes parameters onto "
+"[method HTTPClient.request].\n"
+"Returns [constant OK] if request is successfully created. (Does not imply "
+"that the server has responded), [constant ERR_UNCONFIGURED] if not in the "
+"tree, [constant ERR_BUSY] if still processing previous request, [constant "
+"ERR_INVALID_PARAMETER] if given string is not a valid URL format, or "
+"[constant ERR_CANT_CONNECT] if not using thread and the [HTTPClient] cannot "
+"connect to host."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:130
+msgid ""
+"The size of the buffer used and maximum bytes to read per iteration. See "
+"[member HTTPClient.read_chunk_size].\n"
+"Set this to a lower value (e.g. 4096 for 4 KiB) when downloading small files "
+"to decrease memory usage at the cost of download speeds."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:134
+msgid "The file to download into. Will output any received file into it."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:137
+msgid "Maximum number of allowed redirects."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:142
+msgid "If [code]true[/code], multithreading is used to improve performance."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:152
+msgid "Emitted when a request is completed."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:158
+msgid "Request successful."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:163
+msgid "Request failed while connecting."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:166
+msgid "Request failed while resolving."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:169
+msgid "Request failed due to connection (read/write) error."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:172
+msgid "Request failed on SSL handshake."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:175
+msgid "Request does not have a response (yet)."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:178
+msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:181
+msgid "Request failed (currently unused)."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:184
+msgid "HTTPRequest couldn't open the download file."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:187
+msgid "HTTPRequest couldn't write to the download file."
+msgstr ""
+
+#: doc/classes/HTTPRequest.xml:190
+msgid "Request reached its maximum redirect limit, see [member max_redirects]."
+msgstr ""
+
+#: doc/classes/Image.xml:4
+msgid "Image datatype."
+msgstr ""
+
+#: doc/classes/Image.xml:7
+msgid ""
+"Native image datatype. Contains image data which can be converted to an "
+"[ImageTexture] and provides commonly used [i]image processing[/i] methods. "
+"The maximum width and height for an [Image] are [constant MAX_WIDTH] and "
+"[constant MAX_HEIGHT].\n"
+"An [Image] cannot be assigned to a [code]texture[/code] property of an "
+"object directly (such as [Sprite]), and has to be converted manually to an "
+"[ImageTexture] first.\n"
+"[b]Note:[/b] The maximum image size is 16384×16384 pixels due to graphics "
+"hardware limitations. Larger images may fail to import."
+msgstr ""
+
+#: doc/classes/Image.xml:12 doc/classes/ImageTexture.xml:31
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/workflow/assets/"
+"importing_images.html"
+msgstr ""
+
+#: doc/classes/Image.xml:21
+msgid ""
+"Alpha-blends [code]src_rect[/code] from [code]src[/code] image to this image "
+"at coordinates [code]dest[/code]."
+msgstr ""
+
+#: doc/classes/Image.xml:31
+msgid ""
+"Alpha-blends [code]src_rect[/code] from [code]src[/code] image to this image "
+"using [code]mask[/code] image at coordinates [code]dst[/code]. Alpha "
+"channels are required for both [code]src[/code] and [code]mask[/code]. "
+"[code]dst[/code] pixels and [code]src[/code] pixels will blend if the "
+"corresponding mask pixel's alpha value is not 0. [code]src[/code] image and "
+"[code]mask[/code] image [b]must[/b] have the same size (width and height) "
+"but they can have different formats."
+msgstr ""
+
+#: doc/classes/Image.xml:40
+msgid ""
+"Copies [code]src_rect[/code] from [code]src[/code] image to this image at "
+"coordinates [code]dst[/code]."
+msgstr ""
+
+#: doc/classes/Image.xml:50
+msgid ""
+"Blits [code]src_rect[/code] area from [code]src[/code] image to this image "
+"at the coordinates given by [code]dst[/code]. [code]src[/code] pixel is "
+"copied onto [code]dst[/code] if the corresponding [code]mask[/code] pixel's "
+"alpha value is not 0. [code]src[/code] image and [code]mask[/code] image "
+"[b]must[/b] have the same size (width and height) but they can have "
+"different formats."
+msgstr ""
+
+#: doc/classes/Image.xml:57
+msgid ""
+"Converts a bumpmap to a normalmap. A bumpmap provides a height offset per-"
+"pixel, while a normalmap provides a normal direction per pixel."
+msgstr ""
+
+#: doc/classes/Image.xml:63
+msgid "Removes the image's mipmaps."
+msgstr ""
+
+#: doc/classes/Image.xml:72
+msgid ""
+"Compresses the image to use less memory. Can not directly access pixel data "
+"while the image is compressed. Returns error if the chosen compression mode "
+"is not available. See [enum CompressMode] and [enum CompressSource] "
+"constants."
+msgstr ""
+
+#: doc/classes/Image.xml:79
+msgid "Converts the image's format. See [enum Format] constants."
+msgstr ""
+
+#: doc/classes/Image.xml:86
+msgid "Copies [code]src[/code] image to this image."
+msgstr ""
+
+#: doc/classes/Image.xml:96
+msgid ""
+"Creates an empty image of given size and format. See [enum Format] "
+"constants. If [code]use_mipmaps[/code] is [code]true[/code] then generate "
+"mipmaps for this image. See the [method generate_mipmaps]."
+msgstr ""
+
+#: doc/classes/Image.xml:107
+msgid ""
+"Creates a new image of given size and format. See [enum Format] constants. "
+"Fills the image with the given raw data. If [code]use_mipmaps[/code] is "
+"[code]true[/code] then loads mipmaps for this image from [code]data[/code]. "
+"See [method generate_mipmaps]."
+msgstr ""
+
+#: doc/classes/Image.xml:115
+msgid ""
+"Crops the image to the given [code]width[/code] and [code]height[/code]. If "
+"the specified size is larger than the current size, the extra area is filled "
+"with black pixels."
+msgstr ""
+
+#: doc/classes/Image.xml:121
+msgid ""
+"Decompresses the image if it is compressed. Returns an error if decompress "
+"function is not available."
+msgstr ""
+
+#: doc/classes/Image.xml:127
+msgid ""
+"Returns [constant ALPHA_BLEND] if the image has data for alpha values. "
+"Returns [constant ALPHA_BIT] if all the alpha values are stored in a single "
+"bit. Returns [constant ALPHA_NONE] if no data for alpha values is found."
+msgstr ""
+
+#: doc/classes/Image.xml:133
+msgid ""
+"Stretches the image and enlarges it by a factor of 2. No interpolation is "
+"done."
+msgstr ""
+
+#: doc/classes/Image.xml:140
+msgid "Fills the image with a given [Color]."
+msgstr ""
+
+#: doc/classes/Image.xml:146
+msgid "Blends low-alpha pixels with nearby pixels."
+msgstr ""
+
+#: doc/classes/Image.xml:152
+msgid "Flips the image horizontally."
+msgstr ""
+
+#: doc/classes/Image.xml:158
+msgid "Flips the image vertically."
+msgstr ""
+
+#: doc/classes/Image.xml:165
+msgid ""
+"Generates mipmaps for the image. Mipmaps are precalculated lower-resolution "
+"copies of the image that are automatically used if the image needs to be "
+"scaled down when rendered. They help improve image quality and performance "
+"when rendering. This method returns an error if the image is compressed, in "
+"a custom format, or if the image's width/height is [code]0[/code].\n"
+"[b]Note:[/b] Mipmap generation is done on the CPU, is single-threaded and is "
+"[i]always[/i] done on the main thread. This means generating mipmaps will "
+"result in noticeable stuttering during gameplay, even if [method "
+"generate_mipmaps] is called from a [Thread]."
+msgstr ""
+
+#: doc/classes/Image.xml:172
+msgid "Returns a copy of the image's raw data."
+msgstr ""
+
+#: doc/classes/Image.xml:178
+msgid "Returns the image's format. See [enum Format] constants."
+msgstr ""
+
+#: doc/classes/Image.xml:184
+msgid "Returns the image's height."
+msgstr ""
+
+#: doc/classes/Image.xml:191
+msgid ""
+"Returns the offset where the image's mipmap with index [code]mipmap[/code] "
+"is stored in the [code]data[/code] dictionary."
+msgstr ""
+
+#: doc/classes/Image.xml:199
+msgid ""
+"Returns the color of the pixel at [code](x, y)[/code] if the image is "
+"locked. If the image is unlocked, it always returns a [Color] with the value "
+"[code](0, 0, 0, 1.0)[/code]. This is the same as [method get_pixelv], but "
+"two integer arguments instead of a Vector2 argument."
+msgstr ""
+
+#: doc/classes/Image.xml:206
+msgid ""
+"Returns the color of the pixel at [code]src[/code] if the image is locked. "
+"If the image is unlocked, it always returns a [Color] with the value [code]"
+"(0, 0, 0, 1.0)[/code]. This is the same as [method get_pixel], but with a "
+"Vector2 argument instead of two integer arguments."
+msgstr ""
+
+#: doc/classes/Image.xml:213
+msgid ""
+"Returns a new image that is a copy of the image's area specified with "
+"[code]rect[/code]."
+msgstr ""
+
+#: doc/classes/Image.xml:219
+msgid "Returns the image's size (width and height)."
+msgstr ""
+
+#: doc/classes/Image.xml:225
+msgid ""
+"Returns a [Rect2] enclosing the visible portion of the image, considering "
+"each pixel with a non-zero alpha channel as visible."
+msgstr ""
+
+#: doc/classes/Image.xml:231
+msgid "Returns the image's width."
+msgstr ""
+
+#: doc/classes/Image.xml:237
+msgid "Returns [code]true[/code] if the image has generated mipmaps."
+msgstr ""
+
+#: doc/classes/Image.xml:243
+msgid "Returns [code]true[/code] if the image is compressed."
+msgstr ""
+
+#: doc/classes/Image.xml:249
+msgid "Returns [code]true[/code] if the image has no data."
+msgstr ""
+
+#: doc/classes/Image.xml:255
+msgid ""
+"Returns [code]true[/code] if all the image's pixels have an alpha value of "
+"0. Returns [code]false[/code] if any pixel has an alpha value higher than 0."
+msgstr ""
+
+#: doc/classes/Image.xml:262
+msgid ""
+"Loads an image from file [code]path[/code]. See [url=https://docs."
+"godotengine.org/en/3.4/getting_started/workflow/assets/importing_images."
+"html#supported-image-formats]Supported image formats[/url] for a list of "
+"supported image formats and limitations.\n"
+"[b]Warning:[/b] This method should only be used in the editor or in cases "
+"when you need to load external images at run-time, such as images located at "
+"the [code]user://[/code] directory, and may not work in exported projects.\n"
+"See also [ImageTexture] description for usage examples."
+msgstr ""
+
+#: doc/classes/Image.xml:271
+msgid ""
+"Loads an image from the binary contents of a BMP file.\n"
+"[b]Note:[/b] Godot's BMP module doesn't support 16-bit per pixel images. "
+"Only 1-bit, 4-bit, 8-bit, 24-bit, and 32-bit per pixel images are supported."
+msgstr ""
+
+#: doc/classes/Image.xml:279
+msgid "Loads an image from the binary contents of a JPEG file."
+msgstr ""
+
+#: doc/classes/Image.xml:286
+msgid "Loads an image from the binary contents of a PNG file."
+msgstr ""
+
+#: doc/classes/Image.xml:293
+msgid "Loads an image from the binary contents of a TGA file."
+msgstr ""
+
+#: doc/classes/Image.xml:300
+msgid "Loads an image from the binary contents of a WebP file."
+msgstr ""
+
+#: doc/classes/Image.xml:306
+msgid ""
+"Locks the data for reading and writing access. Sends an error to the console "
+"if the image is not locked when reading or writing a pixel."
+msgstr ""
+
+#: doc/classes/Image.xml:312
+msgid ""
+"Converts the image's data to represent coordinates on a 3D plane. This is "
+"used when the image represents a normalmap. A normalmap can add lots of "
+"detail to a 3D surface without increasing the polygon count."
+msgstr ""
+
+#: doc/classes/Image.xml:318
+msgid ""
+"Multiplies color values with alpha values. Resulting color values for a "
+"pixel are [code](color * alpha)/256[/code]."
+msgstr ""
+
+#: doc/classes/Image.xml:327
+msgid ""
+"Resizes the image to the given [code]width[/code] and [code]height[/code]. "
+"New pixels are calculated using the [code]interpolation[/code] mode defined "
+"via [enum Interpolation] constants."
+msgstr ""
+
+#: doc/classes/Image.xml:335
+msgid ""
+"Resizes the image to the nearest power of 2 for the width and height. If "
+"[code]square[/code] is [code]true[/code] then set width and height to be the "
+"same. New pixels are calculated using the [code]interpolation[/code] mode "
+"defined via [enum Interpolation] constants."
+msgstr ""
+
+#: doc/classes/Image.xml:341
+msgid ""
+"Converts a standard RGBE (Red Green Blue Exponent) image to an sRGB image."
+msgstr ""
+
+#: doc/classes/Image.xml:349
+msgid ""
+"Saves the image as an EXR file to [code]path[/code]. If [code]grayscale[/"
+"code] is [code]true[/code] and the image has only one channel, it will be "
+"saved explicitly as monochrome rather than one red channel. This function "
+"will return [constant ERR_UNAVAILABLE] if Godot was compiled without the "
+"TinyEXR module.\n"
+"[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."
+msgstr ""
+
+#: doc/classes/Image.xml:357
+msgid "Saves the image as a PNG file to [code]path[/code]."
+msgstr ""
+
+#: doc/classes/Image.xml:371
+msgid ""
+"Sets the [Color] of the pixel at [code](x, y)[/code] if the image is locked. "
+"Example:\n"
+"[codeblock]\n"
+"var img = Image.new()\n"
+"img.create(img_width, img_height, false, Image.FORMAT_RGBA8)\n"
+"img.lock()\n"
+"img.set_pixel(x, y, color) # Works\n"
+"img.unlock()\n"
+"img.set_pixel(x, y, color) # Does not have an effect\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Image.xml:387
+msgid ""
+"Sets the [Color] of the pixel at [code](dst.x, dst.y)[/code] if the image is "
+"locked. Note that the [code]dst[/code] values must be integers. Example:\n"
+"[codeblock]\n"
+"var img = Image.new()\n"
+"img.create(img_width, img_height, false, Image.FORMAT_RGBA8)\n"
+"img.lock()\n"
+"img.set_pixelv(Vector2(x, y), color) # Works\n"
+"img.unlock()\n"
+"img.set_pixelv(Vector2(x, y), color) # Does not have an effect\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Image.xml:401
+msgid "Shrinks the image by a factor of 2."
+msgstr ""
+
+#: doc/classes/Image.xml:407
+msgid "Converts the raw data from the sRGB colorspace to a linear scale."
+msgstr ""
+
+#: doc/classes/Image.xml:413
+msgid "Unlocks the data and prevents changes."
+msgstr ""
+
+#: doc/classes/Image.xml:419
+msgid ""
+"Holds all the image's color data in a given format. See [enum Format] "
+"constants."
+msgstr ""
+
+#: doc/classes/Image.xml:424
+msgid "The maximal width allowed for [Image] resources."
+msgstr ""
+
+#: doc/classes/Image.xml:427
+msgid "The maximal height allowed for [Image] resources."
+msgstr ""
+
+#: doc/classes/Image.xml:430
+msgid "Texture format with a single 8-bit depth representing luminance."
+msgstr ""
+
+#: doc/classes/Image.xml:433
+msgid ""
+"OpenGL texture format with two values, luminance and alpha each stored with "
+"8 bits."
+msgstr ""
+
+#: doc/classes/Image.xml:436
+msgid ""
+"OpenGL texture format [code]RED[/code] with a single component and a "
+"bitdepth of 8."
+msgstr ""
+
+#: doc/classes/Image.xml:439
+msgid ""
+"OpenGL texture format [code]RG[/code] with two components and a bitdepth of "
+"8 for each."
+msgstr ""
+
+#: doc/classes/Image.xml:442
+msgid ""
+"OpenGL texture format [code]RGB[/code] with three components, each with a "
+"bitdepth of 8.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:446
+msgid ""
+"OpenGL texture format [code]RGBA[/code] with four components, each with a "
+"bitdepth of 8.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:450
+msgid ""
+"OpenGL texture format [code]RGBA[/code] with four components, each with a "
+"bitdepth of 4."
+msgstr ""
+
+#: doc/classes/Image.xml:453
+msgid ""
+"OpenGL texture format [code]GL_RGB5_A1[/code] where 5 bits of depth for each "
+"component of RGB and one bit for alpha."
+msgstr ""
+
+#: doc/classes/Image.xml:456
+msgid ""
+"OpenGL texture format [code]GL_R32F[/code] where there's one component, a 32-"
+"bit floating-point value."
+msgstr ""
+
+#: doc/classes/Image.xml:459
+msgid ""
+"OpenGL texture format [code]GL_RG32F[/code] where there are two components, "
+"each a 32-bit floating-point values."
+msgstr ""
+
+#: doc/classes/Image.xml:462
+msgid ""
+"OpenGL texture format [code]GL_RGB32F[/code] where there are three "
+"components, each a 32-bit floating-point values."
+msgstr ""
+
+#: doc/classes/Image.xml:465
+msgid ""
+"OpenGL texture format [code]GL_RGBA32F[/code] where there are four "
+"components, each a 32-bit floating-point values."
+msgstr ""
+
+#: doc/classes/Image.xml:468
+msgid ""
+"OpenGL texture format [code]GL_R32F[/code] where there's one component, a 16-"
+"bit \"half-precision\" floating-point value."
+msgstr ""
+
+#: doc/classes/Image.xml:471
+msgid ""
+"OpenGL texture format [code]GL_RG32F[/code] where there are two components, "
+"each a 16-bit \"half-precision\" floating-point value."
+msgstr ""
+
+#: doc/classes/Image.xml:474
+msgid ""
+"OpenGL texture format [code]GL_RGB32F[/code] where there are three "
+"components, each a 16-bit \"half-precision\" floating-point value."
+msgstr ""
+
+#: doc/classes/Image.xml:477
+msgid ""
+"OpenGL texture format [code]GL_RGBA32F[/code] where there are four "
+"components, each a 16-bit \"half-precision\" floating-point value."
+msgstr ""
+
+#: doc/classes/Image.xml:480
+msgid ""
+"A special OpenGL texture format where the three color components have 9 bits "
+"of precision and all three share a single 5-bit exponent."
+msgstr ""
+
+#: doc/classes/Image.xml:483
+msgid ""
+"The [url=https://en.wikipedia.org/wiki/S3_Texture_Compression]S3TC[/url] "
+"texture format that uses Block Compression 1, and is the smallest variation "
+"of S3TC, only providing 1 bit of alpha and color data being premultiplied "
+"with alpha.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:487
+msgid ""
+"The [url=https://en.wikipedia.org/wiki/S3_Texture_Compression]S3TC[/url] "
+"texture format that uses Block Compression 2, and color data is interpreted "
+"as not having been premultiplied by alpha. Well suited for images with sharp "
+"alpha transitions between translucent and opaque areas.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:491
+msgid ""
+"The [url=https://en.wikipedia.org/wiki/S3_Texture_Compression]S3TC[/url] "
+"texture format also known as Block Compression 3 or BC3 that contains 64 "
+"bits of alpha channel data followed by 64 bits of DXT1-encoded color data. "
+"Color data is not premultiplied by alpha, same as DXT3. DXT5 generally "
+"produces superior results for transparent gradients compared to DXT3.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:495
+msgid ""
+"Texture format that uses [url=https://www.khronos.org/opengl/wiki/"
+"Red_Green_Texture_Compression]Red Green Texture Compression[/url], "
+"normalizing the red channel data using the same compression algorithm that "
+"DXT5 uses for the alpha channel."
+msgstr ""
+
+#: doc/classes/Image.xml:498
+msgid ""
+"Texture format that uses [url=https://www.khronos.org/opengl/wiki/"
+"Red_Green_Texture_Compression]Red Green Texture Compression[/url], "
+"normalizing the red and green channel data using the same compression "
+"algorithm that DXT5 uses for the alpha channel."
+msgstr ""
+
+#: doc/classes/Image.xml:501
+msgid ""
+"Texture format that uses [url=https://www.khronos.org/opengl/wiki/"
+"BPTC_Texture_Compression]BPTC[/url] compression with unsigned normalized "
+"RGBA components.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:505
+msgid ""
+"Texture format that uses [url=https://www.khronos.org/opengl/wiki/"
+"BPTC_Texture_Compression]BPTC[/url] compression with signed floating-point "
+"RGB components."
+msgstr ""
+
+#: doc/classes/Image.xml:508
+msgid ""
+"Texture format that uses [url=https://www.khronos.org/opengl/wiki/"
+"BPTC_Texture_Compression]BPTC[/url] compression with unsigned floating-point "
+"RGB components."
+msgstr ""
+
+#: doc/classes/Image.xml:511
+msgid ""
+"Texture format used on PowerVR-supported mobile platforms, uses 2-bit color "
+"depth with no alpha. More information can be found [url=https://en.wikipedia."
+"org/wiki/PVRTC]here[/url].\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:515
+msgid ""
+"Same as [url=https://en.wikipedia.org/wiki/PVRTC]PVRTC2[/url], but with an "
+"alpha component."
+msgstr ""
+
+#: doc/classes/Image.xml:518
+msgid ""
+"Similar to [url=https://en.wikipedia.org/wiki/PVRTC]PVRTC2[/url], but with 4-"
+"bit color depth and no alpha."
+msgstr ""
+
+#: doc/classes/Image.xml:521
+msgid ""
+"Same as [url=https://en.wikipedia.org/wiki/PVRTC]PVRTC4[/url], but with an "
+"alpha component."
+msgstr ""
+
+#: doc/classes/Image.xml:524
+msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Ericsson_Texture_Compression#ETC1]Ericsson Texture Compression format 1[/"
+"url], also referred to as \"ETC1\", and is part of the OpenGL ES graphics "
+"standard. This format cannot store an alpha channel."
+msgstr ""
+
+#: doc/classes/Image.xml:527
+msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Ericsson_Texture_Compression#ETC2_and_EAC]Ericsson Texture Compression "
+"format 2[/url] ([code]R11_EAC[/code] variant), which provides one channel of "
+"unsigned data."
+msgstr ""
+
+#: doc/classes/Image.xml:530
+msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Ericsson_Texture_Compression#ETC2_and_EAC]Ericsson Texture Compression "
+"format 2[/url] ([code]SIGNED_R11_EAC[/code] variant), which provides one "
+"channel of signed data."
+msgstr ""
+
+#: doc/classes/Image.xml:533
+msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Ericsson_Texture_Compression#ETC2_and_EAC]Ericsson Texture Compression "
+"format 2[/url] ([code]RG11_EAC[/code] variant), which provides two channels "
+"of unsigned data."
+msgstr ""
+
+#: doc/classes/Image.xml:536
+msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Ericsson_Texture_Compression#ETC2_and_EAC]Ericsson Texture Compression "
+"format 2[/url] ([code]SIGNED_RG11_EAC[/code] variant), which provides two "
+"channels of signed data."
+msgstr ""
+
+#: doc/classes/Image.xml:539
+msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Ericsson_Texture_Compression#ETC2_and_EAC]Ericsson Texture Compression "
+"format 2[/url] ([code]RGB8[/code] variant), which is a follow-up of ETC1 and "
+"compresses RGB888 data.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:543
+msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Ericsson_Texture_Compression#ETC2_and_EAC]Ericsson Texture Compression "
+"format 2[/url] ([code]RGBA8[/code]variant), which compresses RGBA8888 data "
+"with full alpha support.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:547
+msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Ericsson_Texture_Compression#ETC2_and_EAC]Ericsson Texture Compression "
+"format 2[/url] ([code]RGB8_PUNCHTHROUGH_ALPHA1[/code] variant), which "
+"compresses RGBA data to make alpha either fully transparent or fully "
+"opaque.\n"
+"[b]Note:[/b] When creating an [ImageTexture], an sRGB to linear color space "
+"conversion is performed."
+msgstr ""
+
+#: doc/classes/Image.xml:551
+msgid "Represents the size of the [enum Format] enum."
+msgstr ""
+
+#: doc/classes/Image.xml:554
+msgid ""
+"Performs nearest-neighbor interpolation. If the image is resized, it will be "
+"pixelated."
+msgstr ""
+
+#: doc/classes/Image.xml:557
+msgid ""
+"Performs bilinear interpolation. If the image is resized, it will be blurry. "
+"This mode is faster than [constant INTERPOLATE_CUBIC], but it results in "
+"lower quality."
+msgstr ""
+
+#: doc/classes/Image.xml:560
+msgid ""
+"Performs cubic interpolation. If the image is resized, it will be blurry. "
+"This mode often gives better results compared to [constant "
+"INTERPOLATE_BILINEAR], at the cost of being slower."
+msgstr ""
+
+#: doc/classes/Image.xml:563
+msgid ""
+"Performs bilinear separately on the two most-suited mipmap levels, then "
+"linearly interpolates between them.\n"
+"It's slower than [constant INTERPOLATE_BILINEAR], but produces higher-"
+"quality results with far fewer aliasing artifacts.\n"
+"If the image does not have mipmaps, they will be generated and used "
+"internally, but no mipmaps will be generated on the resulting image.\n"
+"[b]Note:[/b] If you intend to scale multiple copies of the original image, "
+"it's better to call [method generate_mipmaps]] on it in advance, to avoid "
+"wasting processing power in generating them again and again.\n"
+"On the other hand, if the image already has mipmaps, they will be used, and "
+"a new set will be generated for the resulting image."
+msgstr ""
+
+#: doc/classes/Image.xml:570
+msgid ""
+"Performs Lanczos interpolation. This is the slowest image resizing mode, but "
+"it typically gives the best results, especially when downscalng images."
+msgstr ""
+
+#: doc/classes/Image.xml:573
+msgid "Image does not have alpha."
+msgstr ""
+
+#: doc/classes/Image.xml:576
+msgid "Image stores alpha in a single bit."
+msgstr ""
+
+#: doc/classes/Image.xml:579
+msgid "Image uses alpha."
+msgstr ""
+
+#: doc/classes/Image.xml:582
+msgid "Use S3TC compression."
+msgstr ""
+
+#: doc/classes/Image.xml:585
+msgid "Use PVRTC2 compression."
+msgstr ""
+
+#: doc/classes/Image.xml:588
+msgid "Use PVRTC4 compression."
+msgstr ""
+
+#: doc/classes/Image.xml:591
+msgid "Use ETC compression."
+msgstr ""
+
+#: doc/classes/Image.xml:594
+msgid "Use ETC2 compression."
+msgstr ""
+
+#: doc/classes/Image.xml:597
+msgid ""
+"Source texture (before compression) is a regular texture. Default for all "
+"textures."
+msgstr ""
+
+#: doc/classes/Image.xml:600
+msgid "Source texture (before compression) is in sRGB space."
+msgstr ""
+
+#: doc/classes/Image.xml:603
+msgid ""
+"Source texture (before compression) is a normal texture (e.g. it can be "
+"compressed into two channels)."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:4
+msgid "A [Texture] based on an [Image]."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:7
+msgid ""
+"A [Texture] based on an [Image]. For an image to be displayed, an "
+"[ImageTexture] has to be created from it using the [method "
+"create_from_image] method:\n"
+"[codeblock]\n"
+"var texture = ImageTexture.new()\n"
+"var image = Image.new()\n"
+"image.load(\"res://icon.png\")\n"
+"texture.create_from_image(image)\n"
+"$Sprite.texture = texture\n"
+"[/codeblock]\n"
+"This way, textures can be created at run-time by loading images both from "
+"within the editor and externally.\n"
+"[b]Warning:[/b] Prefer to load imported textures with [method @GDScript."
+"load] over loading them from within the filesystem dynamically with [method "
+"Image.load], as it may not work in exported projects:\n"
+"[codeblock]\n"
+"var texture = load(\"res://icon.png\")\n"
+"$Sprite.texture = texture\n"
+"[/codeblock]\n"
+"This is because images have to be imported as [StreamTexture] first to be "
+"loaded with [method @GDScript.load]. If you'd still like to load an image "
+"file just like any other [Resource], import it as an [Image] resource "
+"instead, and then load it normally using the [method @GDScript.load] "
+"method.\n"
+"But do note that the image data can still be retrieved from an imported "
+"texture as well using the [method Texture.get_data] method, which returns a "
+"copy of the data:\n"
+"[codeblock]\n"
+"var texture = load(\"res://icon.png\")\n"
+"var image : Image = texture.get_data()\n"
+"[/codeblock]\n"
+"An [ImageTexture] is not meant to be operated from within the editor "
+"interface directly, and is mostly useful for rendering images on screen "
+"dynamically via code. If you need to generate images procedurally from "
+"within the editor, consider saving and importing images as custom texture "
+"resources implementing a new [EditorImportPlugin].\n"
+"[b]Note:[/b] The maximum texture size is 16384×16384 pixels due to graphics "
+"hardware limitations."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:41
+msgid ""
+"Create a new [ImageTexture] with [code]width[/code] and [code]height[/"
+"code].\n"
+"[code]format[/code] is a value from [enum Image.Format], [code]flags[/code] "
+"is any combination of [enum Texture.Flags]."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:50
+msgid ""
+"Initializes the texture by allocating and setting the data from an [Image] "
+"with [code]flags[/code] from [enum Texture.Flags]. An sRGB to linear color "
+"space conversion can take place, according to [enum Image.Format]."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:56
+msgid "Returns the format of the texture, one of [enum Image.Format]."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:63
+msgid ""
+"Loads an image from a file path and creates a texture from it.\n"
+"[b]Note:[/b] This method is deprecated and will be removed in Godot 4.0, use "
+"[method Image.load] and [method create_from_image] instead."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:71
+msgid ""
+"Replaces the texture's data with a new [Image].\n"
+"[b]Note:[/b] The texture has to be initialized first with the [method "
+"create_from_image] method before it can be updated. The new image "
+"dimensions, format, and mipmaps configuration should match the existing "
+"texture's image configuration, otherwise it has to be re-created with the "
+"[method create_from_image] method.\n"
+"Use this method over [method create_from_image] if you need to update the "
+"texture frequently, which is faster than allocating additional memory for a "
+"new texture each time."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
+msgid "Resizes the texture to the specified dimensions."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:87
+msgid "The storage quality for [constant STORAGE_COMPRESS_LOSSY]."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:90
+msgid "The storage type (raw, lossy, or compressed)."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:95
+msgid "[Image] data is stored raw and unaltered."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:98
+msgid ""
+"[Image] data is compressed with a lossy algorithm. You can set the storage "
+"quality with [member lossy_quality]."
+msgstr ""
+
+#: doc/classes/ImageTexture.xml:101
+msgid "[Image] data is compressed with a lossless algorithm."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:4
+msgid "Draws simple geometry from code."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:7
+msgid ""
+"Draws simple geometry from code. Uses a drawing mode similar to OpenGL 1.x.\n"
+"See also [ArrayMesh], [MeshDataTool] and [SurfaceTool] for procedural "
+"geometry generation.\n"
+"[b]Note:[/b] ImmediateGeometry3D is best suited to small amounts of mesh "
+"data that change every frame. It will be slow when handling large amounts of "
+"mesh data. If mesh data doesn't change often, use [ArrayMesh], "
+"[MeshDataTool] or [SurfaceTool] instead.\n"
+"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-"
+"OpenGL/Face-culling]winding order[/url] for front faces of triangle "
+"primitive modes.\n"
+"[b]Note:[/b] In case of missing points when handling large amounts of mesh "
+"data, try increasing its buffer size limit under [member ProjectSettings."
+"rendering/limits/buffers/immediate_buffer_size_kb]."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:23
+msgid ""
+"Simple helper to draw an UV sphere with given latitude, longitude and radius."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:30
+msgid ""
+"Adds a vertex in local coordinate space with the currently set color/uv/etc."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:38
+msgid ""
+"Begin drawing (and optionally pass a texture override). When done call "
+"[method end]. For more information on how this works, search for "
+"[code]glBegin()[/code] and [code]glEnd()[/code] references.\n"
+"For the type of primitive, see the [enum Mesh.PrimitiveType] enum."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:45
+msgid "Clears everything that was drawn using begin/end."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:51
+msgid "Ends a drawing context and displays the results."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:58
+msgid "The current drawing color."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:65
+msgid "The next vertex's normal."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:72
+msgid "The next vertex's tangent (and binormal facing)."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:79
+msgid "The next vertex's UV."
+msgstr ""
+
+#: doc/classes/ImmediateGeometry.xml:86
+msgid "The next vertex's second layer UV."
+msgstr ""
+
+#: doc/classes/Input.xml:4
+msgid "A singleton that deals with inputs."
+msgstr ""
+
+#: doc/classes/Input.xml:7
+msgid ""
+"A singleton that deals with inputs. This includes key presses, mouse buttons "
+"and movement, joypads, and input actions. Actions and their events can be "
+"set in the [b]Input Map[/b] tab in the [b]Project > Project Settings[/b], or "
+"with the [InputMap] class."
+msgstr ""
+
+#: doc/classes/Input.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/inputs/index.html"
+msgstr ""
+
+#: doc/classes/Input.xml:20
+msgid ""
+"This will simulate pressing the specified action.\n"
+"The strength can be used for non-boolean actions, it's ranged between 0 and "
+"1 representing the intensity of the given action.\n"
+"[b]Note:[/b] This method will not cause any [method Node._input] calls. It "
+"is intended to be used with [method is_action_pressed] and [method "
+"is_action_just_pressed]. If you want to simulate [code]_input[/code], use "
+"[method parse_input_event] instead."
+msgstr ""
+
+#: doc/classes/Input.xml:29
+msgid "If the specified action is already pressed, this will release it."
+msgstr ""
+
+#: doc/classes/Input.xml:37
+msgid ""
+"Adds a new mapping entry (in SDL2 format) to the mapping database. "
+"Optionally update already connected devices."
+msgstr ""
+
+#: doc/classes/Input.xml:43
+msgid ""
+"Returns the acceleration of the device's accelerometer sensor, if the device "
+"has one. Otherwise, the method returns [constant Vector3.ZERO].\n"
+"Note this method returns an empty [Vector3] when running from the editor "
+"even when your device has an accelerometer. You must export your project to "
+"a supported device to read values from the accelerometer.\n"
+"[b]Note:[/b] This method only works on iOS, Android, and UWP. On other "
+"platforms, it always returns [constant Vector3.ZERO]. On Android the unit of "
+"measurement for each axis is m/s² while on iOS and UWP it's a multiple of "
+"the Earth's gravitational acceleration [code]g[/code] (~9.81 m/s²)."
+msgstr ""
+
+#: doc/classes/Input.xml:53
+msgid ""
+"Returns a value between 0 and 1 representing the raw intensity of the given "
+"action, ignoring the action's deadzone. In most cases, you should use "
+"[method get_action_strength] instead.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores the input modifiers "
+"for [InputEventKey] and [InputEventMouseButton] events, and the direction "
+"for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/Input.xml:62
+msgid ""
+"Returns a value between 0 and 1 representing the intensity of the given "
+"action. In a joypad, for example, the further away the axis (analog sticks "
+"or L2, R2 triggers) is from the dead zone, the closer the value will be to "
+"1. If the action is mapped to a control that has no axis as the keyboard, "
+"the value returned will be 0 or 1.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores the input modifiers "
+"for [InputEventKey] and [InputEventMouseButton] events, and the direction "
+"for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/Input.xml:71
+msgid ""
+"Get axis input by specifying two actions, one negative and one positive.\n"
+"This is a shorthand for writing [code]Input."
+"get_action_strength(\"positive_action\") - Input."
+"get_action_strength(\"negative_action\")[/code]."
+msgstr ""
+
+#: doc/classes/Input.xml:78
+msgid ""
+"Returns an [Array] containing the device IDs of all currently connected "
+"joypads."
+msgstr ""
+
+#: doc/classes/Input.xml:84
+msgid "Returns the currently assigned cursor shape (see [enum CursorShape])."
+msgstr ""
+
+#: doc/classes/Input.xml:90
+msgid ""
+"Returns the gravity of the device's accelerometer sensor, if the device has "
+"one. Otherwise, the method returns [constant Vector3.ZERO].\n"
+"[b]Note:[/b] This method only works on Android and iOS. On other platforms, "
+"it always returns [constant Vector3.ZERO]. On Android the unit of "
+"measurement for each axis is m/s² while on iOS it's a multiple of the "
+"Earth's gravitational acceleration [code]g[/code] (~9.81 m/s²)."
+msgstr ""
+
+#: doc/classes/Input.xml:97
+msgid ""
+"Returns the rotation rate in rad/s around a device's X, Y, and Z axes of the "
+"gyroscope sensor, if the device has one. Otherwise, the method returns "
+"[constant Vector3.ZERO].\n"
+"[b]Note:[/b] This method only works on Android and iOS. On other platforms, "
+"it always returns [constant Vector3.ZERO]."
+msgstr ""
+
+#: doc/classes/Input.xml:106
+msgid ""
+"Returns the current value of the joypad axis at given index (see [enum "
+"JoystickList])."
+msgstr ""
+
+#: doc/classes/Input.xml:113
+msgid "Returns the index of the provided axis name."
+msgstr ""
+
+#: doc/classes/Input.xml:120
+msgid ""
+"Receives a [enum JoystickList] axis and returns its equivalent name as a "
+"string."
+msgstr ""
+
+#: doc/classes/Input.xml:127
+msgid "Returns the index of the provided button name."
+msgstr ""
+
+#: doc/classes/Input.xml:134
+msgid ""
+"Receives a gamepad button from [enum JoystickList] and returns its "
+"equivalent name as a string."
+msgstr ""
+
+#: doc/classes/Input.xml:141
+msgid ""
+"Returns a SDL2-compatible device GUID on platforms that use gamepad "
+"remapping. Returns [code]\"Default Gamepad\"[/code] otherwise."
+msgstr ""
+
+#: doc/classes/Input.xml:148
+msgid "Returns the name of the joypad at the specified device index."
+msgstr ""
+
+#: doc/classes/Input.xml:155
+msgid "Returns the duration of the current vibration effect in seconds."
+msgstr ""
+
+#: doc/classes/Input.xml:162
+msgid ""
+"Returns the strength of the joypad vibration: x is the strength of the weak "
+"motor, and y is the strength of the strong motor."
+msgstr ""
+
+#: doc/classes/Input.xml:168
+msgid ""
+"Returns the mouse speed for the last time the cursor was moved, and this "
+"until the next frame where the mouse moves. This means that even if the "
+"mouse is not moving, this function will still return the value of the last "
+"motion."
+msgstr ""
+
+#: doc/classes/Input.xml:174
+msgid ""
+"Returns the magnetic field strength in micro-Tesla for all axes of the "
+"device's magnetometer sensor, if the device has one. Otherwise, the method "
+"returns [constant Vector3.ZERO].\n"
+"[b]Note:[/b] This method only works on Android, iOS and UWP. On other "
+"platforms, it always returns [constant Vector3.ZERO]."
+msgstr ""
+
+#: doc/classes/Input.xml:181
+msgid ""
+"Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at "
+"the same time, the bits are added together."
+msgstr ""
+
+#: doc/classes/Input.xml:187
+msgid "Returns the mouse mode. See the constants for more information."
+msgstr ""
+
+#: doc/classes/Input.xml:198
+msgid ""
+"Gets an input vector by specifying four actions for the positive and "
+"negative X and Y axes.\n"
+"This method is useful when getting vector input, such as from a joystick, "
+"directional pad, arrows, or WASD. The vector has its length limited to 1 and "
+"has a circular deadzone, which is useful for using vector input as "
+"movement.\n"
+"By default, the deadzone is automatically calculated from the average of the "
+"action deadzones. However, you can override the deadzone to be whatever you "
+"want (on the range of 0 to 1)."
+msgstr ""
+
+#: doc/classes/Input.xml:208
+msgid ""
+"Returns [code]true[/code] when the user starts pressing the action event, "
+"meaning it's [code]true[/code] only on the frame that the user pressed down "
+"the button.\n"
+"This is useful for code that needs to run only once when an action is "
+"pressed, instead of every frame while it's pressed.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores the input modifiers "
+"for [InputEventKey] and [InputEventMouseButton] events, and the direction "
+"for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/Input.xml:218
+msgid ""
+"Returns [code]true[/code] when the user stops pressing the action event, "
+"meaning it's [code]true[/code] only on the frame that the user released the "
+"button.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores the input modifiers "
+"for [InputEventKey] and [InputEventMouseButton] events, and the direction "
+"for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/Input.xml:227
+msgid ""
+"Returns [code]true[/code] if you are pressing the action event. Note that if "
+"an action has multiple buttons assigned and more than one of them is "
+"pressed, releasing one button will release the action, even if some other "
+"button assigned to this action is still pressed.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores the input modifiers "
+"for [InputEventKey] and [InputEventMouseButton] events, and the direction "
+"for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/Input.xml:236
+msgid ""
+"Returns [code]true[/code] if you are pressing the joypad button (see [enum "
+"JoystickList])."
+msgstr ""
+
+#: doc/classes/Input.xml:243
+msgid ""
+"Returns [code]true[/code] if the system knows the specified device. This "
+"means that it sets all button and axis indices exactly as defined in [enum "
+"JoystickList]. Unknown joypads are not expected to match these constants, "
+"but you can still retrieve events from them."
+msgstr ""
+
+#: doc/classes/Input.xml:250
+msgid ""
+"Returns [code]true[/code] if you are pressing the key. You can pass a [enum "
+"KeyList] constant."
+msgstr ""
+
+#: doc/classes/Input.xml:257
+msgid ""
+"Returns [code]true[/code] if you are pressing the mouse button specified "
+"with [enum ButtonList]."
+msgstr ""
+
+#: doc/classes/Input.xml:267
+msgid ""
+"Notifies the [Input] singleton that a connection has changed, to update the "
+"state for the [code]device[/code] index.\n"
+"This is used internally and should not have to be called from user scripts. "
+"See [signal joy_connection_changed] for the signal emitted when this is "
+"triggered internally."
+msgstr ""
+
+#: doc/classes/Input.xml:275
+msgid ""
+"Feeds an [InputEvent] to the game. Can be used to artificially trigger input "
+"events from code. Also generates [method Node._input] calls.\n"
+"Example:\n"
+"[codeblock]\n"
+"var a = InputEventAction.new()\n"
+"a.action = \"ui_cancel\"\n"
+"a.pressed = true\n"
+"Input.parse_input_event(a)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Input.xml:289
+msgid ""
+"Removes all mappings from the internal database that match the given GUID."
+msgstr ""
+
+#: doc/classes/Input.xml:298
+msgid ""
+"Sets a custom mouse cursor image, which is only visible inside the game "
+"window. The hotspot can also be specified. Passing [code]null[/code] to the "
+"image parameter resets to the system cursor. See [enum CursorShape] for the "
+"list of shapes.\n"
+"[code]image[/code]'s size must be lower than 256×256.\n"
+"[code]hotspot[/code] must be within [code]image[/code]'s size.\n"
+"[b]Note:[/b] [AnimatedTexture]s aren't supported as custom mouse cursors. If "
+"using an [AnimatedTexture], only the first frame will be displayed.\n"
+"[b]Note:[/b] Only images imported with the [b]Lossless[/b], [b]Lossy[/b] or "
+"[b]Uncompressed[/b] compression modes are supported. The [b]Video RAM[/b] "
+"compression mode can't be used for custom cursors."
+msgstr ""
+
+#: doc/classes/Input.xml:309
+msgid ""
+"Sets the default cursor shape to be used in the viewport instead of "
+"[constant CURSOR_ARROW].\n"
+"[b]Note:[/b] If you want to change the default cursor shape for [Control]'s "
+"nodes, use [member Control.mouse_default_cursor_shape] instead.\n"
+"[b]Note:[/b] This method generates an [InputEventMouseMotion] to update "
+"cursor immediately."
+msgstr ""
+
+#: doc/classes/Input.xml:318
+msgid "Sets the mouse mode. See the constants for more information."
+msgstr ""
+
+#: doc/classes/Input.xml:325
+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:336
+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 "
+"weak motor (between 0 and 1) and [code]strong_magnitude[/code] is the "
+"strength of the strong motor (between 0 and 1). [code]duration[/code] is the "
+"duration of the effect in seconds (a duration of 0 will try to play the "
+"vibration indefinitely).\n"
+"[b]Note:[/b] Not every hardware is compatible with long effect durations; it "
+"is recommended to restart an effect if it has to be played for more than a "
+"few seconds."
+msgstr ""
+
+#: doc/classes/Input.xml:344
+msgid "Stops the vibration of the joypad."
+msgstr ""
+
+#: doc/classes/Input.xml:351
+msgid ""
+"Vibrate Android and iOS devices.\n"
+"[b]Note:[/b] It needs [code]VIBRATE[/code] permission for Android at export "
+"settings. iOS does not support duration."
+msgstr ""
+
+#: doc/classes/Input.xml:359
+msgid "Sets the mouse position to the specified vector."
+msgstr ""
+
+#: doc/classes/Input.xml:368
+msgid "Emitted when a joypad device has been connected or disconnected."
+msgstr ""
+
+#: doc/classes/Input.xml:374
+msgid "Makes the mouse cursor visible if it is hidden."
+msgstr ""
+
+#: doc/classes/Input.xml:377
+msgid "Makes the mouse cursor hidden if it is visible."
+msgstr ""
+
+#: doc/classes/Input.xml:380
+msgid ""
+"Captures the mouse. The mouse will be hidden and its position locked at the "
+"center of the screen.\n"
+"[b]Note:[/b] If you want to process the mouse's movement in this mode, you "
+"need to use [member InputEventMouseMotion.relative]."
+msgstr ""
+
+#: doc/classes/Input.xml:384
+msgid "Makes the mouse cursor visible but confines it to the game window."
+msgstr ""
+
+#: doc/classes/Input.xml:387
+msgid "Arrow cursor. Standard, default pointing cursor."
+msgstr ""
+
+#: doc/classes/Input.xml:390
+msgid ""
+"I-beam cursor. Usually used to show where the text cursor will appear when "
+"the mouse is clicked."
+msgstr ""
+
+#: doc/classes/Input.xml:393
+msgid ""
+"Pointing hand cursor. Usually used to indicate the pointer is over a link or "
+"other interactable item."
+msgstr ""
+
+#: doc/classes/Input.xml:396
+msgid ""
+"Cross cursor. Typically appears over regions in which a drawing operation "
+"can be performed or for selections."
+msgstr ""
+
+#: doc/classes/Input.xml:399
+msgid ""
+"Wait cursor. Indicates that the application is busy performing an operation. "
+"This cursor shape denotes that the application is still usable during the "
+"operation."
+msgstr ""
+
+#: doc/classes/Input.xml:402
+msgid ""
+"Busy cursor. Indicates that the application is busy performing an operation. "
+"This cursor shape denotes that the application isn't usable during the "
+"operation (e.g. something is blocking its main thread)."
+msgstr ""
+
+#: doc/classes/Input.xml:405
+msgid "Drag cursor. Usually displayed when dragging something."
+msgstr ""
+
+#: doc/classes/Input.xml:408
+msgid ""
+"Can drop cursor. Usually displayed when dragging something to indicate that "
+"it can be dropped at the current position."
+msgstr ""
+
+#: doc/classes/Input.xml:411
+msgid ""
+"Forbidden cursor. Indicates that the current action is forbidden (for "
+"example, when dragging something) or that the control at a position is "
+"disabled."
+msgstr ""
+
+#: doc/classes/Input.xml:414
+msgid ""
+"Vertical resize mouse cursor. A double-headed vertical arrow. It tells the "
+"user they can resize the window or the panel vertically."
+msgstr ""
+
+#: doc/classes/Input.xml:417
+msgid ""
+"Horizontal resize mouse cursor. A double-headed horizontal arrow. It tells "
+"the user they can resize the window or the panel horizontally."
+msgstr ""
+
+#: doc/classes/Input.xml:420
+msgid ""
+"Window resize mouse cursor. The cursor is a double-headed arrow that goes "
+"from the bottom left to the top right. It tells the user they can resize the "
+"window or the panel both horizontally and vertically."
+msgstr ""
+
+#: doc/classes/Input.xml:423
+msgid ""
+"Window resize mouse cursor. The cursor is a double-headed arrow that goes "
+"from the top left to the bottom right, the opposite of [constant "
+"CURSOR_BDIAGSIZE]. It tells the user they can resize the window or the panel "
+"both horizontally and vertically."
+msgstr ""
+
+#: doc/classes/Input.xml:426
+msgid "Move cursor. Indicates that something can be moved."
+msgstr ""
+
+#: doc/classes/Input.xml:429
+msgid ""
+"Vertical split mouse cursor. On Windows, it's the same as [constant "
+"CURSOR_VSIZE]."
+msgstr ""
+
+#: doc/classes/Input.xml:432
+msgid ""
+"Horizontal split mouse cursor. On Windows, it's the same as [constant "
+"CURSOR_HSIZE]."
+msgstr ""
+
+#: doc/classes/Input.xml:435
+msgid "Help cursor. Usually a question mark."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:4
+msgid "Generic input event."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:7
+msgid "Base class of all sort of input event. See [method Node._input]."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:10 doc/classes/InputEventJoypadButton.xml:10
+#: doc/classes/InputEventJoypadMotion.xml:10 doc/classes/InputEventKey.xml:10
+#: doc/classes/InputEventMouse.xml:10 doc/classes/InputEventScreenDrag.xml:10
+#: doc/classes/InputEventScreenTouch.xml:11
+#: doc/classes/InputEventWithModifiers.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html"
+msgstr ""
+
+#: doc/classes/InputEvent.xml:20
+msgid ""
+"Returns [code]true[/code] if the given input event and this input event can "
+"be added together (only for events of type [InputEventMouseMotion]).\n"
+"The given input event's position, global position and speed will be copied. "
+"The resulting [code]relative[/code] is a sum of both events. Both events' "
+"modifiers have to be identical."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:27
+msgid "Returns a [String] representation of the event."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:35
+msgid ""
+"Returns a value between 0.0 and 1.0 depending on the given actions' state. "
+"Useful for getting the value of events of type [InputEventJoypadMotion].\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores the input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:44
+msgid ""
+"Returns [code]true[/code] if this input event matches a pre-defined action "
+"of any type.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores the input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:54
+msgid ""
+"Returns [code]true[/code] if the given action is being pressed (and is not "
+"an echo event for [InputEventKey] events, unless [code]allow_echo[/code] is "
+"[code]true[/code]). Not relevant for events of type [InputEventMouseMotion] "
+"or [InputEventScreenDrag].\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores the input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:63
+msgid ""
+"Returns [code]true[/code] if the given action is released (i.e. not "
+"pressed). Not relevant for events of type [InputEventMouseMotion] or "
+"[InputEventScreenDrag].\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores the input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:70
+msgid ""
+"Returns [code]true[/code] if this input event's type is one that can be "
+"assigned to an input action."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:76
+msgid ""
+"Returns [code]true[/code] if this input event is an echo event (only for "
+"events of type [InputEventKey])."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:82
+msgid ""
+"Returns [code]true[/code] if this input event is pressed. Not relevant for "
+"events of type [InputEventMouseMotion] or [InputEventScreenDrag]."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:90
+msgid ""
+"Returns [code]true[/code] if the specified [code]event[/code] matches this "
+"event. Only valid for action events i.e key ([InputEventKey]), button "
+"([InputEventMouseButton] or [InputEventJoypadButton]), axis "
+"[InputEventJoypadMotion] or action ([InputEventAction]) events.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores the input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:99
+msgid ""
+"Returns a copy of the given input event which has been offset by "
+"[code]local_ofs[/code] and transformed by [code]xform[/code]. Relevant for "
+"events of type [InputEventMouseButton], [InputEventMouseMotion], "
+"[InputEventScreenTouch], [InputEventScreenDrag], [InputEventMagnifyGesture] "
+"and [InputEventPanGesture]."
+msgstr ""
+
+#: doc/classes/InputEvent.xml:105
+msgid ""
+"The event's device ID.\n"
+"[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated "
+"mouse input from a touchscreen. This can be used to distinguish emulated "
+"mouse input from physical mouse input."
+msgstr ""
+
+#: doc/classes/InputEventAction.xml:4
+msgid "Input event type for actions."
+msgstr ""
+
+#: doc/classes/InputEventAction.xml:7
+msgid ""
+"Contains a generic action which can be targeted from several types of "
+"inputs. Actions can be created from the [b]Input Map[/b] tab in the "
+"[b]Project > Project Settings[/b] menu. See [method Node._input]."
+msgstr ""
+
+#: doc/classes/InputEventAction.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html#actions"
+msgstr ""
+
+#: doc/classes/InputEventAction.xml:18
+msgid "The action's name. Actions are accessed via this [String]."
+msgstr ""
+
+#: doc/classes/InputEventAction.xml:21
+msgid ""
+"If [code]true[/code], the action's state is pressed. If [code]false[/code], "
+"the action's state is released."
+msgstr ""
+
+#: doc/classes/InputEventAction.xml:24
+msgid ""
+"The action's strength between 0 and 1. This value is considered as equal to "
+"0 if pressed is [code]false[/code]. The event strength allows faking analog "
+"joypad motion events, by specifying how strongly the joypad axis is bent or "
+"pressed."
+msgstr ""
+
+#: doc/classes/InputEventGesture.xml:4
+msgid "Base class for touch control gestures."
+msgstr ""
+
+#: doc/classes/InputEventGesture.xml:14
+msgid ""
+"The local gesture position relative to the [Viewport]. If used in [method "
+"Control._gui_input], the position is relative to the current [Control] that "
+"received this gesture."
+msgstr ""
+
+#: doc/classes/InputEventJoypadButton.xml:4
+msgid "Input event for gamepad buttons."
+msgstr ""
+
+#: doc/classes/InputEventJoypadButton.xml:7
+msgid ""
+"Input event type for gamepad buttons. For gamepad analog sticks and "
+"joysticks, see [InputEventJoypadMotion]."
+msgstr ""
+
+#: doc/classes/InputEventJoypadButton.xml:16
+msgid "Button identifier. One of the [enum JoystickList] button constants."
+msgstr ""
+
+#: doc/classes/InputEventJoypadButton.xml:19
+msgid ""
+"If [code]true[/code], the button's state is pressed. If [code]false[/code], "
+"the button's state is released."
+msgstr ""
+
+#: doc/classes/InputEventJoypadButton.xml:22
+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]."
+msgstr ""
+
+#: doc/classes/InputEventJoypadMotion.xml:4
+msgid ""
+"Input event type for gamepad joysticks and other motions. For buttons, see "
+"[code]InputEventJoypadButton[/code]."
+msgstr ""
+
+#: doc/classes/InputEventJoypadMotion.xml:7
+msgid ""
+"Stores information about joystick motions. One [InputEventJoypadMotion] "
+"represents one axis at a time."
+msgstr ""
+
+#: doc/classes/InputEventJoypadMotion.xml:16
+msgid "Axis identifier. Use one of the [enum JoystickList] axis constants."
+msgstr ""
+
+#: doc/classes/InputEventJoypadMotion.xml:19
+msgid ""
+"Current position of the joystick on the given axis. The value ranges from "
+"[code]-1.0[/code] to [code]1.0[/code]. A value of [code]0[/code] means the "
+"axis is in its resting position."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:4
+msgid "Input event type for keyboard events."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:7
+msgid ""
+"Stores key presses on the keyboard. Supports key presses, key releases and "
+"[member echo] events."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:16
+msgid ""
+"Returns the physical scancode combined with modifier keys such as "
+"[code]Shift[/code] or [code]Alt[/code]. See also [InputEventWithModifiers].\n"
+"To get a human-readable representation of the [InputEventKey] with "
+"modifiers, use [code]OS.get_scancode_string(event."
+"get_physical_scancode_with_modifiers())[/code] where [code]event[/code] is "
+"the [InputEventKey]."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:23
+msgid ""
+"Returns the scancode combined with modifier keys such as [code]Shift[/code] "
+"or [code]Alt[/code]. See also [InputEventWithModifiers].\n"
+"To get a human-readable representation of the [InputEventKey] with "
+"modifiers, use [code]OS.get_scancode_string(event."
+"get_scancode_with_modifiers())[/code] where [code]event[/code] is the "
+"[InputEventKey]."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:30
+msgid ""
+"If [code]true[/code], the key was already pressed before this event. It "
+"means the user is holding the key down."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:33
+msgid ""
+"Key physical scancode, which corresponds to one of the [enum KeyList] "
+"constants. Represent the physical location of a key on the 101/102-key US "
+"QWERTY keyboard.\n"
+"To get a human-readable representation of the [InputEventKey], use [code]OS."
+"get_scancode_string(event.physical_scancode)[/code] where [code]event[/code] "
+"is the [InputEventKey]."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:37
+msgid ""
+"If [code]true[/code], the key's state is pressed. If [code]false[/code], the "
+"key's state is released."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:40
+msgid ""
+"The key scancode, which corresponds to one of the [enum KeyList] constants. "
+"Represent key in the current keyboard layout.\n"
+"To get a human-readable representation of the [InputEventKey], use [code]OS."
+"get_scancode_string(event.scancode)[/code] where [code]event[/code] is the "
+"[InputEventKey]."
+msgstr ""
+
+#: doc/classes/InputEventKey.xml:44
+msgid ""
+"The key Unicode identifier (when relevant). Unicode identifiers for the "
+"composite characters and complex scripts may not be available unless IME "
+"input mode is active. See [method OS.set_ime_active] for more information."
+msgstr ""
+
+#: doc/classes/InputEventMouse.xml:4
+msgid "Base input event type for mouse events."
+msgstr ""
+
+#: doc/classes/InputEventMouse.xml:7
+msgid "Stores general mouse events information."
+msgstr ""
+
+#: doc/classes/InputEventMouse.xml:16
+msgid ""
+"The mouse button mask identifier, one of or a bitwise combination of the "
+"[enum ButtonList] button masks."
+msgstr ""
+
+#: doc/classes/InputEventMouse.xml:19
+msgid ""
+"The global mouse position relative to the current [Viewport] when used in "
+"[method Control._gui_input], otherwise is at 0,0."
+msgstr ""
+
+#: doc/classes/InputEventMouse.xml:22
+msgid ""
+"The local mouse position relative to the [Viewport]. If used in [method "
+"Control._gui_input], the position is relative to the current [Control] which "
+"is under the mouse."
+msgstr ""
+
+#: doc/classes/InputEventMouseButton.xml:4
+msgid "Input event type for mouse button events."
+msgstr ""
+
+#: doc/classes/InputEventMouseButton.xml:7
+msgid "Contains mouse click information. See [method Node._input]."
+msgstr ""
+
+#: doc/classes/InputEventMouseButton.xml:10
+#: doc/classes/InputEventMouseMotion.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/inputs/"
+"mouse_and_input_coordinates.html"
+msgstr ""
+
+#: doc/classes/InputEventMouseButton.xml:16
+msgid ""
+"The mouse button identifier, one of the [enum ButtonList] button or button "
+"wheel constants."
+msgstr ""
+
+#: doc/classes/InputEventMouseButton.xml:19
+msgid "If [code]true[/code], the mouse button's state is a double-click."
+msgstr ""
+
+#: doc/classes/InputEventMouseButton.xml:22
+msgid ""
+"The amount (or delta) of the event. When used for high-precision scroll "
+"events, this indicates the scroll amount (vertical or horizontal). This is "
+"only supported on some platforms; the reported sensitivity varies depending "
+"on the platform. May be [code]0[/code] if not supported."
+msgstr ""
+
+#: doc/classes/InputEventMouseButton.xml:25
+msgid ""
+"If [code]true[/code], the mouse button's state is pressed. If [code]false[/"
+"code], the mouse button's state is released."
+msgstr ""
+
+#: doc/classes/InputEventMouseMotion.xml:4
+msgid "Input event type for mouse motion events."
+msgstr ""
+
+#: doc/classes/InputEventMouseMotion.xml:7
+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 "
+"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."
+msgstr ""
+
+#: doc/classes/InputEventMouseMotion.xml:18
+msgid ""
+"Represents the pressure the user puts on the pen. Ranges from [code]0.0[/"
+"code] to [code]1.0[/code]."
+msgstr ""
+
+#: doc/classes/InputEventMouseMotion.xml:21
+msgid ""
+"The mouse position relative to the previous position (position at the last "
+"frame).\n"
+"[b]Note:[/b] Since [InputEventMouseMotion] is only emitted when the mouse "
+"moves, the last event won't have a relative position of [code]Vector2(0, 0)[/"
+"code] when the user stops moving the mouse."
+msgstr ""
+
+#: doc/classes/InputEventMouseMotion.xml:25
+msgid "The mouse speed in pixels per second."
+msgstr ""
+
+#: doc/classes/InputEventMouseMotion.xml:28
+msgid ""
+"Represents the angles of tilt of the pen. Positive X-coordinate value "
+"indicates a tilt to the right. Positive Y-coordinate value indicates a tilt "
+"toward the user. Ranges from [code]-1.0[/code] to [code]1.0[/code] for both "
+"axes."
+msgstr ""
+
+#: doc/classes/InputEventScreenDrag.xml:4
+msgid ""
+"Input event type for screen drag events. Only available on mobile devices."
+msgstr ""
+
+#: doc/classes/InputEventScreenDrag.xml:7
+msgid "Contains screen drag information. See [method Node._input]."
+msgstr ""
+
+#: doc/classes/InputEventScreenDrag.xml:16
+msgid "The drag event index in the case of a multi-drag event."
+msgstr ""
+
+#: doc/classes/InputEventScreenDrag.xml:19
+msgid "The drag position."
+msgstr ""
+
+#: doc/classes/InputEventScreenDrag.xml:22
+msgid "The drag position relative to its start position."
+msgstr ""
+
+#: doc/classes/InputEventScreenDrag.xml:25
+msgid "The drag speed."
+msgstr ""
+
+#: doc/classes/InputEventScreenTouch.xml:4
+msgid ""
+"Input event type for screen touch events.\n"
+"(only available on mobile devices)"
+msgstr ""
+
+#: doc/classes/InputEventScreenTouch.xml:8
+msgid ""
+"Stores multi-touch press/release information. Supports touch press, touch "
+"release and [member index] for multi-touch count and order."
+msgstr ""
+
+#: doc/classes/InputEventScreenTouch.xml:17
+msgid ""
+"The touch index in the case of a multi-touch event. One index = one finger."
+msgstr ""
+
+#: doc/classes/InputEventScreenTouch.xml:20
+msgid "The touch position."
+msgstr ""
+
+#: doc/classes/InputEventScreenTouch.xml:23
+msgid ""
+"If [code]true[/code], the touch's state is pressed. If [code]false[/code], "
+"the touch's state is released."
+msgstr ""
+
+#: doc/classes/InputEventWithModifiers.xml:4
+msgid "Base class for keys events with modifiers."
+msgstr ""
+
+#: doc/classes/InputEventWithModifiers.xml:7
+msgid ""
+"Contains keys events information with modifiers support like [code]Shift[/"
+"code] or [code]Alt[/code]. See [method Node._input]."
+msgstr ""
+
+#: doc/classes/InputEventWithModifiers.xml:16
+msgid "State of the [code]Alt[/code] modifier."
+msgstr ""
+
+#: doc/classes/InputEventWithModifiers.xml:19
+msgid "State of the [code]Command[/code] modifier."
+msgstr ""
+
+#: doc/classes/InputEventWithModifiers.xml:22
+msgid "State of the [code]Ctrl[/code] modifier."
+msgstr ""
+
+#: doc/classes/InputEventWithModifiers.xml:25
+msgid "State of the [code]Meta[/code] modifier."
+msgstr ""
+
+#: doc/classes/InputEventWithModifiers.xml:28
+msgid "State of the [code]Shift[/code] modifier."
+msgstr ""
+
+#: doc/classes/InputMap.xml:4
+msgid "Singleton that manages [InputEventAction]."
+msgstr ""
+
+#: doc/classes/InputMap.xml:7
+msgid ""
+"Manages all [InputEventAction] which can be created/modified from the "
+"project settings menu [b]Project > Project Settings > Input Map[/b] or in "
+"code with [method add_action] and [method action_add_event]. See [method "
+"Node._input]."
+msgstr ""
+
+#: doc/classes/InputMap.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html#inputmap"
+msgstr ""
+
+#: doc/classes/InputMap.xml:18
+msgid ""
+"Adds an [InputEvent] to an action. This [InputEvent] will trigger the action."
+msgstr ""
+
+#: doc/classes/InputMap.xml:26
+msgid "Removes an [InputEvent] from an action."
+msgstr ""
+
+#: doc/classes/InputMap.xml:33
+msgid "Removes all events from an action."
+msgstr ""
+
+#: doc/classes/InputMap.xml:40
+msgid "Returns a deadzone value for the action."
+msgstr ""
+
+#: doc/classes/InputMap.xml:48
+msgid ""
+"Returns [code]true[/code] if the action has the given [InputEvent] "
+"associated with it."
+msgstr ""
+
+#: doc/classes/InputMap.xml:56
+msgid "Sets a deadzone value for the action."
+msgstr ""
+
+#: doc/classes/InputMap.xml:64
+msgid ""
+"Adds an empty action to the [InputMap] with a configurable [code]deadzone[/"
+"code].\n"
+"An [InputEvent] can then be added to this action with [method "
+"action_add_event]."
+msgstr ""
+
+#: doc/classes/InputMap.xml:72
+msgid "Removes an action from the [InputMap]."
+msgstr ""
+
+#: doc/classes/InputMap.xml:81
+msgid ""
+"Returns [code]true[/code] if the given event is part of an existing action. "
+"This method ignores keyboard modifiers if the given [InputEvent] is not "
+"pressed (for proper release detection). See [method action_has_event] if you "
+"don't want this behavior.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores the input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
+msgstr ""
+
+#: doc/classes/InputMap.xml:89
+msgid "Returns an array of [InputEvent]s associated with a given action."
+msgstr ""
+
+#: doc/classes/InputMap.xml:95
+msgid "Returns an array of all actions in the [InputMap]."
+msgstr ""
+
+#: doc/classes/InputMap.xml:102
+msgid ""
+"Returns [code]true[/code] if the [InputMap] has a registered action with the "
+"given name."
+msgstr ""
+
+#: doc/classes/InputMap.xml:108
+msgid ""
+"Clears all [InputEventAction] in the [InputMap] and load it anew from "
+"[ProjectSettings]."
+msgstr ""
+
+#: doc/classes/InstancePlaceholder.xml:4
+msgid "Placeholder for the root [Node] of a [PackedScene]."
+msgstr ""
+
+#: doc/classes/InstancePlaceholder.xml:7
+msgid ""
+"Turning on the option [b]Load As Placeholder[/b] for an instanced scene in "
+"the editor causes it to be replaced by an InstancePlaceholder when running "
+"the game. This makes it possible to delay actually loading the scene until "
+"calling [method replace_by_instance]. This is useful to avoid loading large "
+"scenes all at once by loading parts of it selectively.\n"
+"The InstancePlaceholder does not have a transform. This causes any child "
+"nodes to be positioned relatively to the Viewport from point (0,0), rather "
+"than their parent as displayed in the editor. Replacing the placeholder with "
+"a scene with a transform will transform children relatively to their parent "
+"again."
+msgstr ""
+
+#: doc/classes/InstancePlaceholder.xml:18
+msgid ""
+"Not thread-safe. Use [method Object.call_deferred] if calling from a thread."
+msgstr ""
+
+#: doc/classes/InstancePlaceholder.xml:24
+msgid ""
+"Gets the path to the [PackedScene] resource file that is loaded by default "
+"when calling [method replace_by_instance]. Not thread-safe. Use [method "
+"Object.call_deferred] if calling from a thread."
+msgstr ""
+
+#: doc/classes/InstancePlaceholder.xml:37
+msgid ""
+"Replaces this placeholder by the scene handed as an argument, or the "
+"original scene if no argument is given. As for all resources, the scene is "
+"loaded only if it's not loaded already. By manually loading the scene "
+"beforehand, delays caused by this function can be avoided."
+msgstr ""
+
+#: doc/classes/int.xml:4
+msgid "Integer built-in type."
+msgstr ""
+
+#: doc/classes/int.xml:7
+msgid ""
+"Signed 64-bit integer type.\n"
+"It can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. "
+"[code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those "
+"bounds will wrap around.\n"
+"[int] is a [Variant] type, and will thus be used when assigning an integer "
+"value to a [Variant]. It can also be enforced with the [code]: int[/code] "
+"type hint.\n"
+"[codeblock]\n"
+"var my_variant = 0 # int, value 0.\n"
+"my_variant += 4.2 # float, value 4.2.\n"
+"var my_int: int = 1 # int, value 1.\n"
+"my_int = 4.2 # int, value 4, the right value is implicitly cast to int.\n"
+"my_int = int(\"6.7\") # int, value 6, the String is explicitly cast with "
+"int.\n"
+"\n"
+"var max_int = 9223372036854775807\n"
+"print(max_int) # 9223372036854775807, OK.\n"
+"max_int += 1\n"
+"print(max_int) # -9223372036854775808, we overflowed and wrapped around.\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/int.xml:30
+msgid ""
+"Cast a [bool] value to an integer value, [code]int(true)[/code] will be "
+"equals to 1 and [code]int(false)[/code] will be equals to 0."
+msgstr ""
+
+#: doc/classes/int.xml:37
+msgid ""
+"Cast a float value to an integer value, this method simply removes the "
+"number fractions (i.e. rounds [code]from[/code] towards zero), so for "
+"example [code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] "
+"will be equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This "
+"operation is also called truncation."
+msgstr ""
+
+#: doc/classes/int.xml:44
+msgid ""
+"Cast a [String] value to an integer value, this method is an integer parser "
+"from a string, so calling this method with an invalid integer string will "
+"return 0, a valid string will be something like [code]'1.7'[/code]. This "
+"method will ignore all non-number characters, so calling [code]int('1e3')[/"
+"code] will return 13."
+msgstr ""
+
+#: doc/classes/InterpolatedCamera.xml:4
+msgid "[i]Deprecated.[/i] Camera which moves toward another node."
+msgstr ""
+
+#: doc/classes/InterpolatedCamera.xml:7
+msgid ""
+"[i]Deprecated (will be removed in Godot 4.0).[/i] InterpolatedCamera is a "
+"[Camera] which smoothly moves to match a target node's position and "
+"rotation.\n"
+"If it is not [member enabled] or does not have a valid target set, "
+"InterpolatedCamera acts like a normal Camera."
+msgstr ""
+
+#: doc/classes/InterpolatedCamera.xml:17
+msgid "Sets the node to move toward and orient with."
+msgstr ""
+
+#: doc/classes/InterpolatedCamera.xml:23
+msgid ""
+"If [code]true[/code], and a target is set, the camera will move "
+"automatically."
+msgstr ""
+
+#: doc/classes/InterpolatedCamera.xml:26
+msgid ""
+"How quickly the camera moves toward its target. Higher values will result in "
+"tighter camera motion."
+msgstr ""
+
+#: doc/classes/InterpolatedCamera.xml:29
+msgid "The target's [NodePath]."
+msgstr ""
+
+#: doc/classes/IP.xml:4
+msgid "Internet protocol (IP) support functions such as DNS resolution."
+msgstr ""
+
+#: doc/classes/IP.xml:7
+msgid ""
+"IP contains support functions for the Internet Protocol (IP). TCP/IP support "
+"is in different classes (see [StreamPeerTCP] and [TCP_Server]). IP provides "
+"DNS hostname resolution support, both blocking and threaded."
+msgstr ""
+
+#: doc/classes/IP.xml:16
+msgid ""
+"Removes all of a [code]hostname[/code]'s cached references. If no "
+"[code]hostname[/code] is given, all cached IP addresses are removed."
+msgstr ""
+
+#: doc/classes/IP.xml:23
+msgid ""
+"Removes a given item [code]id[/code] from the queue. This should be used to "
+"free a queue after it has completed to enable more queries to happen."
+msgstr ""
+
+#: doc/classes/IP.xml:29
+msgid "Returns all the user's current IPv4 and IPv6 addresses as an array."
+msgstr ""
+
+#: doc/classes/IP.xml:35
+msgid ""
+"Returns all network adapters as an array.\n"
+"Each adapter is a dictionary of the form:\n"
+"[codeblock]\n"
+"{\n"
+" \"index\": \"1\", # Interface index.\n"
+" \"name\": \"eth0\", # Interface name.\n"
+" \"friendly\": \"Ethernet One\", # A friendly name (might be empty).\n"
+" \"addresses\": [\"192.168.1.101\"], # An array of IP addresses "
+"associated to this interface.\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/IP.xml:51
+msgid ""
+"Returns a queued hostname's IP address, given its queue [code]id[/code]. "
+"Returns an empty string on error or if resolution hasn't happened yet (see "
+"[method get_resolve_item_status])."
+msgstr ""
+
+#: doc/classes/IP.xml:58
+msgid ""
+"Return resolved addresses, or an empty array if an error happened or "
+"resolution didn't happen yet (see [method get_resolve_item_status])."
+msgstr ""
+
+#: doc/classes/IP.xml:65
+msgid ""
+"Returns a queued hostname's status as a [enum ResolverStatus] constant, "
+"given its queue [code]id[/code]."
+msgstr ""
+
+#: doc/classes/IP.xml:73
+msgid ""
+"Returns a given hostname's IPv4 or IPv6 address when resolved (blocking-type "
+"method). The address type returned depends on the [enum Type] constant given "
+"as [code]ip_type[/code]."
+msgstr ""
+
+#: doc/classes/IP.xml:81
+msgid ""
+"Resolves a given hostname in a blocking way. Addresses are returned as an "
+"[Array] of IPv4 or IPv6 depending on [code]ip_type[/code]."
+msgstr ""
+
+#: doc/classes/IP.xml:89
+msgid ""
+"Creates a queue item to resolve a hostname to an IPv4 or IPv6 address "
+"depending on the [enum Type] constant given as [code]ip_type[/code]. Returns "
+"the queue ID if successful, or [constant RESOLVER_INVALID_ID] on error."
+msgstr ""
+
+#: doc/classes/IP.xml:95
+msgid "DNS hostname resolver status: No status."
+msgstr ""
+
+#: doc/classes/IP.xml:98
+msgid "DNS hostname resolver status: Waiting."
+msgstr ""
+
+#: doc/classes/IP.xml:101
+msgid "DNS hostname resolver status: Done."
+msgstr ""
+
+#: doc/classes/IP.xml:104
+msgid "DNS hostname resolver status: Error."
+msgstr ""
+
+#: doc/classes/IP.xml:107
+msgid ""
+"Maximum number of concurrent DNS resolver queries allowed, [constant "
+"RESOLVER_INVALID_ID] is returned if exceeded."
+msgstr ""
+
+#: doc/classes/IP.xml:110
+msgid ""
+"Invalid ID constant. Returned if [constant RESOLVER_MAX_QUERIES] is exceeded."
+msgstr ""
+
+#: doc/classes/IP.xml:113
+msgid "Address type: None."
+msgstr ""
+
+#: doc/classes/IP.xml:116
+msgid "Address type: Internet protocol version 4 (IPv4)."
+msgstr ""
+
+#: doc/classes/IP.xml:119
+msgid "Address type: Internet protocol version 6 (IPv6)."
+msgstr ""
+
+#: doc/classes/IP.xml:122
+msgid "Address type: Any."
+msgstr ""
+
+#: doc/classes/ItemList.xml:4
+msgid ""
+"Control that provides a list of selectable items (and/or icons) in a single "
+"column, or optionally in multiple columns."
+msgstr ""
+
+#: doc/classes/ItemList.xml:7
+msgid ""
+"This control provides a selectable list of items that may be in a single (or "
+"multiple columns) with option of text, icons, or both text and icon. "
+"Tooltips are supported and may be different for every item in the list.\n"
+"Selectable items in the list may be selected or deselected and multiple "
+"selection may be enabled. Selection with right mouse button may also be "
+"enabled to allow use of popup context menus. Items may also be \"activated\" "
+"by double-clicking them or by pressing Enter.\n"
+"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."
+msgstr ""
+
+#: doc/classes/ItemList.xml:19
+msgid "Adds an item to the item list with no text, only an icon."
+msgstr ""
+
+#: doc/classes/ItemList.xml:28
+msgid ""
+"Adds an item to the item list with specified text. Specify an [code]icon[/"
+"code], or use [code]null[/code] as the [code]icon[/code] for a list item "
+"with no icon.\n"
+"If selectable is [code]true[/code], the list item will be selectable."
+msgstr ""
+
+#: doc/classes/ItemList.xml:35
+msgid "Removes all items from the list."
+msgstr ""
+
+#: doc/classes/ItemList.xml:41
+msgid ""
+"Ensure current selection is visible, adjusting the scroll position as "
+"necessary."
+msgstr ""
+
+#: doc/classes/ItemList.xml:49
+msgid ""
+"Returns the item index at the given [code]position[/code].\n"
+"When there is no item at that point, -1 will be returned if [code]exact[/"
+"code] is [code]true[/code], and the closest item index will be returned "
+"otherwise."
+msgstr ""
+
+#: doc/classes/ItemList.xml:56
+msgid "Returns the number of items currently in the list."
+msgstr ""
+
+#: doc/classes/ItemList.xml:63
+msgid ""
+"Returns the custom background color of the item specified by [code]idx[/"
+"code] index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:70
+msgid ""
+"Returns the custom foreground color of the item specified by [code]idx[/"
+"code] index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:77
+msgid "Returns the icon associated with the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:84
+msgid "Returns a [Color] modulating item's icon at the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:91
+msgid ""
+"Returns the region of item's icon used. The whole icon will be used if the "
+"region has no area."
+msgstr ""
+
+#: doc/classes/ItemList.xml:98
+msgid "Returns the metadata value of the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:105
+msgid "Returns the text associated with the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:112
+msgid "Returns the tooltip hint associated with the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:118
+msgid "Returns an array with the indexes of the selected items."
+msgstr ""
+
+#: doc/classes/ItemList.xml:124
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/ItemList.xml:131
+msgid "Returns [code]true[/code] if one or more items are selected."
+msgstr ""
+
+#: doc/classes/ItemList.xml:138
+msgid ""
+"Returns [code]true[/code] if the item at the specified index is disabled."
+msgstr ""
+
+#: doc/classes/ItemList.xml:145
+msgid ""
+"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
+"the X and Y axes are swapped."
+msgstr ""
+
+#: doc/classes/ItemList.xml:152
+msgid ""
+"Returns [code]true[/code] if the item at the specified index is selectable."
+msgstr ""
+
+#: doc/classes/ItemList.xml:159
+msgid ""
+"Returns [code]true[/code] if the tooltip is enabled for specified item index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:166
+msgid ""
+"Returns [code]true[/code] if the item at the specified index is currently "
+"selected."
+msgstr ""
+
+#: doc/classes/ItemList.xml:174
+msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
+msgstr ""
+
+#: doc/classes/ItemList.xml:181
+msgid "Removes the item specified by [code]idx[/code] index from the list."
+msgstr ""
+
+#: doc/classes/ItemList.xml:189
+msgid ""
+"Select the item at the specified index.\n"
+"[b]Note:[/b] This method does not trigger the item selection signal."
+msgstr ""
+
+#: doc/classes/ItemList.xml:198
+msgid ""
+"Sets the background color of the item specified by [code]idx[/code] index to "
+"the specified [Color]."
+msgstr ""
+
+#: doc/classes/ItemList.xml:206
+msgid ""
+"Sets the foreground color of the item specified by [code]idx[/code] index to "
+"the specified [Color]."
+msgstr ""
+
+#: doc/classes/ItemList.xml:214
+msgid ""
+"Disables (or enables) the item at the specified index.\n"
+"Disabled items cannot be selected and do not trigger activation signals "
+"(when double-clicking or pressing Enter)."
+msgstr ""
+
+#: doc/classes/ItemList.xml:223
+msgid ""
+"Sets (or replaces) the icon's [Texture] associated with the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:231
+msgid ""
+"Sets a modulating [Color] of the item associated with the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:239
+msgid ""
+"Sets the region of item's icon used. The whole icon will be used if the "
+"region has no area."
+msgstr ""
+
+#: doc/classes/ItemList.xml:247
+msgid "Sets whether the item icon will be drawn transposed."
+msgstr ""
+
+#: doc/classes/ItemList.xml:255
+msgid ""
+"Sets a value (of any type) to be stored with the item associated with the "
+"specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:263
+msgid ""
+"Allows or disallows selection of the item associated with the specified "
+"index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:271
+msgid "Sets text of the item associated with the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:279
+msgid "Sets the tooltip hint for the item associated with the specified index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:287
+msgid "Sets whether the tooltip hint is enabled for specified item index."
+msgstr ""
+
+#: doc/classes/ItemList.xml:293
+msgid "Sorts items in the list by their text."
+msgstr ""
+
+#: doc/classes/ItemList.xml:300
+msgid "Ensures the item associated with the specified index is not selected."
+msgstr ""
+
+#: doc/classes/ItemList.xml:306
+msgid "Ensures there are no items selected."
+msgstr ""
+
+#: doc/classes/ItemList.xml:312
+msgid ""
+"If [code]true[/code], the currently selected item can be selected again."
+msgstr ""
+
+#: doc/classes/ItemList.xml:315
+msgid "If [code]true[/code], right mouse button click can select items."
+msgstr ""
+
+#: doc/classes/ItemList.xml:318
+msgid ""
+"If [code]true[/code], the control will automatically resize the height to "
+"fit its content."
+msgstr ""
+
+#: doc/classes/ItemList.xml:321
+msgid ""
+"The width all columns will be adjusted to.\n"
+"A value of zero disables the adjustment, each item will have a width equal "
+"to the width of its content and the columns will have an uneven width."
+msgstr ""
+
+#: doc/classes/ItemList.xml:325
+msgid ""
+"The size all icons will be adjusted to.\n"
+"If either X or Y component is not greater than zero, icon size won't be "
+"affected."
+msgstr ""
+
+#: doc/classes/ItemList.xml:330
+msgid ""
+"The icon position, whether above or to the left of the text. See the [enum "
+"IconMode] constants."
+msgstr ""
+
+#: doc/classes/ItemList.xml:333
+msgid ""
+"The scale of icon applied after [member fixed_icon_size] and transposing "
+"takes effect."
+msgstr ""
+
+#: doc/classes/ItemList.xml:336
+msgid ""
+"Maximum columns the list will have.\n"
+"If greater than zero, the content will be split among the specified "
+"columns.\n"
+"A value of zero means unlimited columns, i.e. all items will be put in the "
+"same row."
+msgstr ""
+
+#: doc/classes/ItemList.xml:341
+msgid ""
+"Maximum lines of text allowed in each item. Space will be reserved even when "
+"there is not enough lines of text to display.\n"
+"[b]Note:[/b] This property takes effect only when [member icon_mode] is "
+"[constant ICON_MODE_TOP]. To make the text wrap, [member fixed_column_width] "
+"should be greater than zero."
+msgstr ""
+
+#: doc/classes/ItemList.xml:346
+msgid ""
+"Whether all columns will have the same width.\n"
+"If [code]true[/code], the width is equal to the largest column width of all "
+"columns."
+msgstr ""
+
+#: doc/classes/ItemList.xml:350
+msgid ""
+"Allows single or multiple item selection. See the [enum SelectMode] "
+"constants."
+msgstr ""
+
+#: doc/classes/ItemList.xml:357
+msgid ""
+"Triggered when specified list item is activated via double-clicking or by "
+"pressing Enter."
+msgstr ""
+
+#: doc/classes/ItemList.xml:364
+msgid ""
+"Triggered when specified list item has been selected via right mouse "
+"clicking.\n"
+"The click position is also provided to allow appropriate popup of context "
+"menus at the correct location.\n"
+"[member allow_rmb_select] must be enabled."
+msgstr ""
+
+#: doc/classes/ItemList.xml:372
+msgid ""
+"Triggered when specified item has been selected.\n"
+"[member allow_reselect] must be enabled to reselect an item."
+msgstr ""
+
+#: doc/classes/ItemList.xml:380
+msgid ""
+"Triggered when a multiple selection is altered on a list allowing multiple "
+"selection."
+msgstr ""
+
+#: doc/classes/ItemList.xml:385
+msgid ""
+"Triggered when a left mouse click is issued within the rect of the list but "
+"on empty space."
+msgstr ""
+
+#: doc/classes/ItemList.xml:391
+msgid ""
+"Triggered when a right mouse click is issued within the rect of the list but "
+"on empty space.\n"
+"[member allow_rmb_select] must be enabled."
+msgstr ""
+
+#: doc/classes/ItemList.xml:398
+msgid "Icon is drawn above the text."
+msgstr ""
+
+#: doc/classes/ItemList.xml:401
+msgid "Icon is drawn to the left of the text."
+msgstr ""
+
+#: doc/classes/ItemList.xml:404
+msgid "Only allow selecting a single item."
+msgstr ""
+
+#: doc/classes/ItemList.xml:407
+msgid "Allows selecting multiple items by holding Ctrl or Shift."
+msgstr ""
+
+#: doc/classes/ItemList.xml:412
+msgid ""
+"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
+"being focused."
+msgstr ""
+
+#: doc/classes/ItemList.xml:415
+msgid "[StyleBox] used when the [ItemList] is being focused."
+msgstr ""
+
+#: doc/classes/ItemList.xml:418
+msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
+msgstr ""
+
+#: doc/classes/ItemList.xml:421
+msgid ""
+"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
+msgstr ""
+
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
+msgid "[Font] of the item's text."
+msgstr ""
+
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
+msgid "Default text [Color] of the item."
+msgstr ""
+
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
+msgid "Text [Color] used when the item is selected."
+msgstr ""
+
+#: doc/classes/ItemList.xml:433
+msgid ""
+"[Color] of the guideline. The guideline is a line drawn between each row of "
+"items."
+msgstr ""
+
+#: doc/classes/ItemList.xml:436
+msgid "The horizontal spacing between items."
+msgstr ""
+
+#: doc/classes/ItemList.xml:439
+msgid "The spacing between item's icon and text."
+msgstr ""
+
+#: doc/classes/ItemList.xml:442
+msgid "The vertical spacing between each line of text."
+msgstr ""
+
+#: doc/classes/ItemList.xml:445
+msgid ""
+"[StyleBox] for the selected items, used when the [ItemList] is not being "
+"focused."
+msgstr ""
+
+#: doc/classes/ItemList.xml:448
+msgid ""
+"[StyleBox] for the selected items, used when the [ItemList] is being focused."
+msgstr ""
+
+#: doc/classes/ItemList.xml:451
+msgid "The vertical spacing between items."
+msgstr ""
+
+#: doc/classes/JavaScript.xml:4
+msgid ""
+"Singleton that connects the engine with the browser's JavaScript context in "
+"HTML5 export."
+msgstr ""
+
+#: doc/classes/JavaScript.xml:7
+msgid ""
+"The JavaScript singleton is implemented only in the HTML5 export. It's used "
+"to access the browser's JavaScript context. This allows interaction with "
+"embedding pages or calling third-party JavaScript APIs.\n"
+"[b]Note:[/b] This singleton can be disabled at build-time to improve "
+"security. By default, the JavaScript singleton is enabled. Official export "
+"templates also have the JavaScript singleton enabled. See [url=https://docs."
+"godotengine.org/en/3.4/development/compiling/compiling_for_web."
+"html]Compiling for the Web[/url] in the documentation for more information."
+msgstr ""
+
+#: doc/classes/JavaScript.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/workflow/export/"
+"exporting_for_web.html#calling-javascript-from-script"
+msgstr ""
+
+#: doc/classes/JavaScript.xml:19
+msgid ""
+"Creates a reference to a script function that can be used as a callback by "
+"JavaScript. The reference must be kept until the callback happens, or it "
+"won't be called at all. See [JavaScriptObject] for usage."
+msgstr ""
+
+#: doc/classes/JavaScript.xml:26
+msgid ""
+"Creates a new JavaScript object using the [code]new[/code] constructor. The "
+"[code]object[/code] must a valid property of the JavaScript [code]window[/"
+"code]. See [JavaScriptObject] for usage."
+msgstr ""
+
+#: doc/classes/JavaScript.xml:35
+msgid ""
+"Prompts the user to download a file containing the specified [code]buffer[/"
+"code]. The file will have the given [code]name[/code] and [code]mime[/code] "
+"type.\n"
+"[b]Note:[/b] The browser may override the [url=https://en.wikipedia.org/wiki/"
+"Media_type]MIME type[/url] provided based on the file [code]name[/code]'s "
+"extension.\n"
+"[b]Note:[/b] Browsers might block the download if [method download_buffer] "
+"is not being called from a user interaction (e.g. button click).\n"
+"[b]Note:[/b] Browsers might ask the user for permission or block the "
+"download if multiple download requests are made in a quick succession."
+msgstr ""
+
+#: doc/classes/JavaScript.xml:46
+msgid ""
+"Execute the string [code]code[/code] as JavaScript code within the browser "
+"window. This is a call to the actual global JavaScript function [code]eval()"
+"[/code].\n"
+"If [code]use_global_execution_context[/code] is [code]true[/code], the code "
+"will be evaluated in the global execution context. Otherwise, it is "
+"evaluated in the execution context of a function within the engine's runtime "
+"environment."
+msgstr ""
+
+#: doc/classes/JavaScript.xml:54
+msgid ""
+"Returns an interface to a JavaScript object that can be used by scripts. The "
+"[code]interface[/code] must be a valid property of the JavaScript "
+"[code]window[/code]. The callback must accept a single [Array] argument, "
+"which will contain the JavaScript [code]arguments[/code]. See "
+"[JavaScriptObject] for usage."
+msgstr ""
+
+#: doc/classes/JavaScriptObject.xml:4
+msgid "A wrapper class for native JavaScript objects."
+msgstr ""
+
+#: doc/classes/JavaScriptObject.xml:7
+msgid ""
+"JavaScriptObject is used to interact with JavaScript objects retrieved or "
+"created via [method JavaScript.get_interface], [method JavaScript."
+"create_object], or [method JavaScript.create_callback].\n"
+"Example:\n"
+"[codeblock]\n"
+"extends Node\n"
+"\n"
+"var _my_js_callback = JavaScript.create_callback(self, \"myCallback\") # "
+"This reference must be kept\n"
+"var console = JavaScript.get_interface(\"console\")\n"
+"\n"
+"func _init():\n"
+" var buf = JavaScript.create_object(\"ArrayBuffer\", 10) # new "
+"ArrayBuffer(10)\n"
+" print(buf) # prints [JavaScriptObject:OBJECT_ID]\n"
+" var uint8arr = JavaScript.create_object(\"Uint8Array\", buf) # new "
+"Uint8Array(buf)\n"
+" uint8arr[1] = 255\n"
+" prints(uint8arr[1], uint8arr.byteLength) # prints 255 10\n"
+" console.log(uint8arr) # prints in browser console \"Uint8Array(10) [ 0, "
+"255, 0, 0, 0, 0, 0, 0, 0, 0 ]\"\n"
+"\n"
+" # Equivalent of JavaScript: Array.from(uint8arr).forEach(myCallback)\n"
+" JavaScript.get_interface(\"Array\").from(uint8arr)."
+"forEach(_my_js_callback)\n"
+"\n"
+"func myCallback(args):\n"
+" # Will be called with the parameters passed to the \"forEach\" callback\n"
+" # [0, 0, [JavaScriptObject:1173]]\n"
+" # [255, 1, [JavaScriptObject:1173]]\n"
+" # ...\n"
+" # [0, 9, [JavaScriptObject:1180]]\n"
+" print(args)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Only available in the HTML5 platform."
+msgstr ""
+
+#: doc/classes/JNISingleton.xml:4
+msgid ""
+"Singleton that connects the engine with Android plugins to interface with "
+"native Android code."
+msgstr ""
+
+#: doc/classes/JNISingleton.xml:7
+msgid ""
+"The JNISingleton is implemented only in the Android export. It's used to "
+"call methods and connect signals from an Android plugin written in Java or "
+"Kotlin. Methods and signals can be called and connected to the JNISingleton "
+"as if it is a Node. See [url=https://en.wikipedia.org/wiki/"
+"Java_Native_Interface]Java Native Interface - Wikipedia[/url] for more "
+"information."
+msgstr ""
+
+#: doc/classes/JNISingleton.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/android/android_plugin."
+"html"
+msgstr ""
+
+#: doc/classes/Joint.xml:4
+msgid "Base class for all 3D joints."
+msgstr ""
+
+#: doc/classes/Joint.xml:7
+msgid ""
+"Joints are used to bind together two physics bodies. They have a solver "
+"priority and can define if the bodies of the two attached nodes should be "
+"able to collide with each other."
+msgstr ""
+
+#: doc/classes/Joint.xml:10 doc/classes/RigidBody.xml:15
+#: doc/classes/VehicleBody.xml:12 doc/classes/VehicleWheel.xml:11
+msgid "https://godotengine.org/asset-library/asset/524"
+msgstr ""
+
+#: doc/classes/Joint.xml:16
+msgid ""
+"If [code]true[/code], the two bodies of the nodes are not able to collide "
+"with each other."
+msgstr ""
+
+#: doc/classes/Joint.xml:19
+msgid "The node attached to the first side (A) of the joint."
+msgstr ""
+
+#: doc/classes/Joint.xml:22
+msgid "The node attached to the second side (B) of the joint."
+msgstr ""
+
+#: doc/classes/Joint.xml:25
+msgid ""
+"The priority used to define which solver is executed first for multiple "
+"joints. The lower the value, the higher the priority."
+msgstr ""
+
+#: doc/classes/Joint2D.xml:4
+msgid "Base node for all joint constraints in 2D physics."
+msgstr ""
+
+#: doc/classes/Joint2D.xml:7
+msgid ""
+"Base node for all joint constraints in 2D physics. Joints take 2 bodies and "
+"apply a custom constraint."
+msgstr ""
+
+#: doc/classes/Joint2D.xml:15
+msgid ""
+"When [member node_a] and [member node_b] move in different directions the "
+"[code]bias[/code] controls how fast the joint pulls them back to their "
+"original position. The lower the [code]bias[/code] the more the two bodies "
+"can pull on the joint."
+msgstr ""
+
+#: doc/classes/Joint2D.xml:18
+msgid ""
+"If [code]true[/code], [member node_a] and [member node_b] can not collide."
+msgstr ""
+
+#: doc/classes/Joint2D.xml:21
+msgid "The first body attached to the joint. Must derive from [PhysicsBody2D]."
+msgstr ""
+
+#: doc/classes/Joint2D.xml:24
+msgid ""
+"The second body attached to the joint. Must derive from [PhysicsBody2D]."
+msgstr ""
+
+#: doc/classes/JSON.xml:4
+msgid "Helper class for parsing JSON data."
+msgstr ""
+
+#: doc/classes/JSON.xml:7
+msgid ""
+"Helper class for parsing JSON data. For usage example and other important "
+"hints, see [JSONParseResult]."
+msgstr ""
+
+#: doc/classes/JSON.xml:16
+msgid ""
+"Parses a JSON-encoded string and returns a [JSONParseResult] containing the "
+"result."
+msgstr ""
+
+#: doc/classes/JSON.xml:25
+msgid ""
+"Converts a [Variant] var to JSON text and returns the result. Useful for "
+"serializing data to store or send over the network.\n"
+"[b]Note:[/b] The JSON specification does not define integer or float types, "
+"but only a [i]number[/i] type. Therefore, converting a Variant to JSON text "
+"will convert all numerical values to [float] types.\n"
+"Use [code]indent[/code] parameter to pretty print the output.\n"
+"[b]Example output:[/b]\n"
+"[codeblock]\n"
+"## JSON.print(my_dictionary)\n"
+"{\"name\":\"my_dictionary\",\"version\":\"1.0.0\",\"entities\":[{\"name\":"
+"\"entity_0\",\"value\":\"value_0\"},{\"name\":\"entity_1\",\"value\":"
+"\"value_1\"}]}\n"
+"\n"
+"## JSON.print(my_dictionary, \"\\t\")\n"
+"{\n"
+" \"name\": \"my_dictionary\",\n"
+" \"version\": \"1.0.0\",\n"
+" \"entities\": [\n"
+" {\n"
+" \"name\": \"entity_0\",\n"
+" \"value\": \"value_0\"\n"
+" },\n"
+" {\n"
+" \"name\": \"entity_1\",\n"
+" \"value\": \"value_1\"\n"
+" }\n"
+" ]\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/JSONParseResult.xml:4
+msgid "Data class wrapper for decoded JSON."
+msgstr ""
+
+#: doc/classes/JSONParseResult.xml:7
+msgid ""
+"Returned by [method JSON.parse], [JSONParseResult] contains the decoded JSON "
+"or error information if the JSON source wasn't successfully parsed. You can "
+"check if the JSON source was successfully parsed with [code]if json_result."
+"error == OK[/code]."
+msgstr ""
+
+#: doc/classes/JSONParseResult.xml:15
+msgid ""
+"The error type if the JSON source was not successfully parsed. See the [enum "
+"Error] constants."
+msgstr ""
+
+#: doc/classes/JSONParseResult.xml:18
+msgid ""
+"The line number where the error occurred if the JSON source was not "
+"successfully parsed."
+msgstr ""
+
+#: doc/classes/JSONParseResult.xml:21
+msgid ""
+"The error message if the JSON source was not successfully parsed. See the "
+"[enum Error] constants."
+msgstr ""
+
+#: doc/classes/JSONParseResult.xml:24
+msgid ""
+"A [Variant] containing the parsed JSON. Use [method @GDScript.typeof] or the "
+"[code]is[/code] keyword to check if it is what you expect. For example, if "
+"the JSON source starts with curly braces ([code]{}[/code]), a [Dictionary] "
+"will be returned. If the JSON source starts with brackets ([code][][/code]), "
+"an [Array] will be returned.\n"
+"[b]Note:[/b] The JSON specification does not define integer or float types, "
+"but only a [i]number[/i] type. Therefore, parsing a JSON text will convert "
+"all numerical values to [float] types.\n"
+"[b]Note:[/b] JSON objects do not preserve key order like Godot dictionaries, "
+"thus, you should not rely on keys being in a certain order if a dictionary "
+"is constructed from JSON. In contrast, JSON arrays retain the order of their "
+"elements:\n"
+"[codeblock]\n"
+"var p = JSON.parse('[\"hello\", \"world\", \"!\"]')\n"
+"if typeof(p.result) == TYPE_ARRAY:\n"
+" print(p.result[0]) # Prints \"hello\"\n"
+"else:\n"
+" push_error(\"Unexpected results.\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/JSONRPC.xml:4
+msgid "A helper to handle dictionaries which look like JSONRPC documents."
+msgstr ""
+
+#: doc/classes/JSONRPC.xml:7
+msgid ""
+"[url=https://www.jsonrpc.org/]JSON-RPC[/url] is a standard which wraps a "
+"method call in a [JSON] object. The object has a particular structure and "
+"identifies which method is called, the parameters to that function, and "
+"carries an ID to keep track of responses. This class implements that "
+"standard on top of [Dictionary]; you will have to convert between a "
+"[Dictionary] and [JSON] with other functions."
+msgstr ""
+
+#: doc/classes/JSONRPC.xml:17
+msgid ""
+"Returns a dictionary in the form of a JSON-RPC notification. Notifications "
+"are one-shot messages which do not expect a response.\n"
+"- [code]method[/code]: Name of the method being called.\n"
+"- [code]params[/code]: An array or dictionary of parameters being passed to "
+"the method."
+msgstr ""
+
+#: doc/classes/JSONRPC.xml:28
+msgid ""
+"Returns a dictionary in the form of a JSON-RPC request. Requests are sent to "
+"a server with the expectation of a response. The ID field is used for the "
+"server to specify which exact request it is responding to.\n"
+"- [code]method[/code]: Name of the method being called.\n"
+"- [code]params[/code]: An array or dictionary of parameters being passed to "
+"the method.\n"
+"- [code]id[/code]: Uniquely identifies this request. The server is expected "
+"to send a response with the same ID."
+msgstr ""
+
+#: doc/classes/JSONRPC.xml:39
+msgid ""
+"When a server has received and processed a request, it is expected to send a "
+"response. If you did not want a response then you need to have sent a "
+"Notification instead.\n"
+"- [code]result[/code]: The return value of the function which was called.\n"
+"- [code]id[/code]: The ID of the request this response is targeted to."
+msgstr ""
+
+#: doc/classes/JSONRPC.xml:50
+msgid ""
+"Creates a response which indicates a previous reply has failed in some way.\n"
+"- [code]code[/code]: The error code corresponding to what kind of error this "
+"is. See the [enum ErrorCode] constants.\n"
+"- [code]message[/code]: A custom message about this error.\n"
+"- [code]id[/code]: The request this error is a response to."
+msgstr ""
+
+#: doc/classes/JSONRPC.xml:61
+msgid ""
+"Given a Dictionary which takes the form of a JSON-RPC request: unpack the "
+"request and run it. Methods are resolved by looking at the field called "
+"\"method\" and looking for an equivalently named function in the JSONRPC "
+"object. If one is found that method is called.\n"
+"To add new supported methods extend the JSONRPC class and call [method "
+"process_action] on your subclass.\n"
+"[code]action[/code]: The action to be run, as a Dictionary in the form of a "
+"JSON-RPC request or notification."
+msgstr ""
+
+#: doc/classes/JSONRPC.xml:86
+msgid ""
+"A method call was requested but no function of that name existed in the "
+"JSONRPC subclass."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:4
+msgid "Kinematic body 3D node."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:7
+msgid ""
+"Kinematic bodies are special types of bodies that are meant to be user-"
+"controlled. They are not affected by physics at all; to other types of "
+"bodies, such as a character or a rigid body, these are the same as a static "
+"body. However, they have two main uses:\n"
+"[b]Simulated motion:[/b] When these bodies are moved manually, either from "
+"code or from an [AnimationPlayer] (with [member AnimationPlayer."
+"playback_process_mode] set to \"physics\"), the physics will automatically "
+"compute an estimate of their linear and angular velocity. This makes them "
+"very useful for moving platforms or other AnimationPlayer-controlled objects "
+"(like a door, a bridge that opens, etc).\n"
+"[b]Kinematic characters:[/b] KinematicBody also has an API for moving "
+"objects (the [method move_and_collide] and [method move_and_slide] methods) "
+"while performing collision tests. This makes them really useful to implement "
+"characters that collide against a world, but don't require advanced physics."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:12 doc/classes/KinematicBody2D.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/physics/kinematic_character_2d."
+"html"
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:23
+msgid ""
+"Returns [code]true[/code] if the specified [code]axis[/code] is locked. See "
+"also [member move_lock_x], [member move_lock_y] and [member move_lock_z]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:30
+msgid ""
+"Returns the floor's collision angle at the last collision point according to "
+"[code]up_direction[/code], which is [code]Vector3.UP[/code] by default. This "
+"value is always positive and only valid after calling [method "
+"move_and_slide] and when [method is_on_floor] returns [code]true[/code]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:36 doc/classes/KinematicBody2D.xml:28
+msgid ""
+"Returns the surface normal of the floor at the last collision point. Only "
+"valid after calling [method move_and_slide] or [method "
+"move_and_slide_with_snap] and when [method is_on_floor] returns [code]true[/"
+"code]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:42 doc/classes/KinematicBody2D.xml:34
+msgid ""
+"Returns the linear velocity of the floor at the last collision point. Only "
+"valid after calling [method move_and_slide] or [method "
+"move_and_slide_with_snap] and when [method is_on_floor] returns [code]true[/"
+"code]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:48
+msgid ""
+"Returns a [KinematicCollision], which contains information about the latest "
+"collision that occurred during the last call to [method move_and_slide]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:55
+msgid ""
+"Returns a [KinematicCollision], which contains information about a collision "
+"that occurred during the last call to [method move_and_slide] or [method "
+"move_and_slide_with_snap]. Since the body can collide several times in a "
+"single call to [method move_and_slide], you must specify the index of the "
+"collision in the range 0 to ([method get_slide_count] - 1)."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:61 doc/classes/KinematicBody2D.xml:59
+msgid ""
+"Returns the number of times the body collided and changed direction during "
+"the last call to [method move_and_slide] or [method "
+"move_and_slide_with_snap]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:67 doc/classes/KinematicBody2D.xml:65
+msgid ""
+"Returns [code]true[/code] if the body collided with the ceiling on the last "
+"call of [method move_and_slide] or [method move_and_slide_with_snap]. "
+"Otherwise, returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:73 doc/classes/KinematicBody2D.xml:71
+msgid ""
+"Returns [code]true[/code] if the body collided with the floor on the last "
+"call of [method move_and_slide] or [method move_and_slide_with_snap]. "
+"Otherwise, returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:79 doc/classes/KinematicBody2D.xml:77
+msgid ""
+"Returns [code]true[/code] if the body collided with a wall on the last call "
+"of [method move_and_slide] or [method move_and_slide_with_snap]. Otherwise, "
+"returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:89
+msgid ""
+"Moves the body along the vector [code]rel_vec[/code]. The body will stop if "
+"it collides. Returns a [KinematicCollision], which contains information "
+"about the collision.\n"
+"If [code]test_only[/code] is [code]true[/code], the body does not move but "
+"the would-be collision information is given."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:102
+msgid ""
+"Moves the body along a vector. If the body collides with another, it will "
+"slide along the other body rather than stop immediately. If the other body "
+"is a [KinematicBody] or [RigidBody], it will also be affected by the motion "
+"of the other body. You can use this to make moving and rotating platforms, "
+"or to make nodes push other nodes.\n"
+"This method should be used in [method Node._physics_process] (or in a method "
+"called by [method Node._physics_process]), as it uses the physics step's "
+"[code]delta[/code] value automatically in calculations. Otherwise, the "
+"simulation will run at an incorrect speed.\n"
+"[code]linear_velocity[/code] is the velocity vector (typically meters per "
+"second). Unlike in [method move_and_collide], you should [i]not[/i] multiply "
+"it by [code]delta[/code] — the physics engine handles applying the "
+"velocity.\n"
+"[code]up_direction[/code] is the up direction, used to determine what is a "
+"wall and what is a floor or a ceiling. If set to the default value of "
+"[code]Vector3(0, 0, 0)[/code], everything is considered a wall.\n"
+"If [code]stop_on_slope[/code] is [code]true[/code], body will not slide on "
+"slopes when you include gravity in [code]linear_velocity[/code] and the body "
+"is standing still.\n"
+"If the body collides, it will change direction a maximum of "
+"[code]max_slides[/code] times before it stops.\n"
+"[code]floor_max_angle[/code] is the maximum angle (in radians) where a slope "
+"is still considered a floor (or a ceiling), rather than a wall. The default "
+"value equals 45 degrees.\n"
+"If [code]infinite_inertia[/code] is [code]true[/code], body will be able to "
+"push [RigidBody] nodes, but it won't also detect any collisions with them. "
+"If [code]false[/code], it will interact with [RigidBody] nodes like with "
+"[StaticBody].\n"
+"Returns the [code]linear_velocity[/code] vector, rotated and/or scaled if a "
+"slide collision occurred. To get detailed information about collisions that "
+"occurred, use [method get_slide_collision].\n"
+"When the body touches a moving platform, the platform's velocity is "
+"automatically added to the body motion. If a collision occurs due to the "
+"platform's motion, it will always be first in the slide collisions."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:124
+msgid ""
+"Moves the body while keeping it attached to slopes. Similar to [method "
+"move_and_slide].\n"
+"As long as the [code]snap[/code] vector is in contact with the ground, the "
+"body will remain attached to the surface. This means you must disable snap "
+"in order to jump, for example. You can do this by setting [code]snap[/code] "
+"to [code](0, 0, 0)[/code] or by using [method move_and_slide] instead."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:133
+msgid ""
+"Locks or unlocks the specified [code]axis[/code] depending on the value of "
+"[code]lock[/code]. See also [member move_lock_x], [member move_lock_y] and "
+"[member move_lock_z]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:142
+msgid ""
+"Checks for collisions without moving the body. Virtually sets the node's "
+"position, scale and rotation to that of the given [Transform], then tries to "
+"move the body along the vector [code]rel_vec[/code]. Returns [code]true[/"
+"code] if a collision would occur."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:148
+msgid "Lock the body's X axis movement."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:151
+msgid "Lock the body's Y axis movement."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:154
+msgid "Lock the body's Z axis movement."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:157 doc/classes/KinematicBody2D.xml:138
+msgid ""
+"Extra margin used for collision recovery in motion functions (see [method "
+"move_and_collide], [method move_and_slide], [method "
+"move_and_slide_with_snap]).\n"
+"If the body is at least this close to another body, it will consider them to "
+"be colliding and will be pushed away before performing the actual motion.\n"
+"A higher value means it's more flexible for detecting collision, which helps "
+"with consistently detecting walls and floors.\n"
+"A lower value forces the collision algorithm to use more exact detection, so "
+"it can be used in cases that specifically require precision, e.g at very low "
+"scale to avoid visible jittering, or for stability with a stack of kinematic "
+"bodies."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:163 doc/classes/KinematicBody2D.xml:144
+msgid ""
+"If [code]true[/code], the body's movement will be synchronized to the "
+"physics frame. This is useful when animating movement via [AnimationPlayer], "
+"for example on moving platforms. Do [b]not[/b] use together with [method "
+"move_and_slide] or [method move_and_collide] functions."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:166
+msgid ""
+"Lock the body's X axis movement. Deprecated alias for [member "
+"axis_lock_motion_x]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:169
+msgid ""
+"Lock the body's Y axis movement. Deprecated alias for [member "
+"axis_lock_motion_y]."
+msgstr ""
+
+#: doc/classes/KinematicBody.xml:172
+msgid ""
+"Lock the body's Z axis movement. Deprecated alias for [member "
+"axis_lock_motion_z]."
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:4
+msgid "Kinematic body 2D node."
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:7
+msgid ""
+"Kinematic bodies are special types of bodies that are meant to be user-"
+"controlled. They are not affected by physics at all; to other types of "
+"bodies, such as a character or a rigid body, these are the same as a static "
+"body. However, they have two main uses:\n"
+"[b]Simulated motion:[/b] When these bodies are moved manually, either from "
+"code or from an [AnimationPlayer] (with [member AnimationPlayer."
+"playback_process_mode] set to \"physics\"), the physics will automatically "
+"compute an estimate of their linear and angular velocity. This makes them "
+"very useful for moving platforms or other AnimationPlayer-controlled objects "
+"(like a door, a bridge that opens, etc).\n"
+"[b]Kinematic characters:[/b] KinematicBody2D also has an API for moving "
+"objects (the [method move_and_collide] and [method move_and_slide] methods) "
+"while performing collision tests. This makes them really useful to implement "
+"characters that collide against a world, but don't require advanced physics."
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:13
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/physics/"
+"using_kinematic_body_2d.html"
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:22
+msgid ""
+"Returns the floor's collision angle at the last collision point according to "
+"[code]up_direction[/code], which is [code]Vector2.UP[/code] by default. This "
+"value is always positive and only valid after calling [method "
+"move_and_slide] and when [method is_on_floor] returns [code]true[/code]."
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:40
+msgid ""
+"Returns a [KinematicCollision2D], which contains information about the "
+"latest collision that occurred during the last call to [method "
+"move_and_slide]."
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:47
+msgid ""
+"Returns a [KinematicCollision2D], which contains information about a "
+"collision that occurred during the last call to [method move_and_slide] or "
+"[method move_and_slide_with_snap]. Since the body can collide several times "
+"in a single call to [method move_and_slide], you must specify the index of "
+"the collision in the range 0 to ([method get_slide_count] - 1).\n"
+"[b]Example usage:[/b]\n"
+"[codeblock]\n"
+"for i in get_slide_count():\n"
+" var collision = get_slide_collision(i)\n"
+" print(\"Collided with: \", collision.collider.name)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:87
+msgid ""
+"Moves the body along the vector [code]rel_vec[/code]. The body will stop if "
+"it collides. Returns a [KinematicCollision2D], which contains information "
+"about the collision.\n"
+"If [code]test_only[/code] is [code]true[/code], the body does not move but "
+"the would-be collision information is given."
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:100
+msgid ""
+"Moves the body along a vector. If the body collides with another, it will "
+"slide along the other body rather than stop immediately. If the other body "
+"is a [KinematicBody2D] or [RigidBody2D], it will also be affected by the "
+"motion of the other body. You can use this to make moving and rotating "
+"platforms, or to make nodes push other nodes.\n"
+"This method should be used in [method Node._physics_process] (or in a method "
+"called by [method Node._physics_process]), as it uses the physics step's "
+"[code]delta[/code] value automatically in calculations. Otherwise, the "
+"simulation will run at an incorrect speed.\n"
+"[code]linear_velocity[/code] is the velocity vector in pixels per second. "
+"Unlike in [method move_and_collide], you should [i]not[/i] multiply it by "
+"[code]delta[/code] — the physics engine handles applying the velocity.\n"
+"[code]up_direction[/code] is the up direction, used to determine what is a "
+"wall and what is a floor or a ceiling. If set to the default value of "
+"[code]Vector2(0, 0)[/code], everything is considered a wall. This is useful "
+"for topdown games.\n"
+"If [code]stop_on_slope[/code] is [code]true[/code], body will not slide on "
+"slopes when you include gravity in [code]linear_velocity[/code] and the body "
+"is standing still.\n"
+"If the body collides, it will change direction a maximum of "
+"[code]max_slides[/code] times before it stops.\n"
+"[code]floor_max_angle[/code] is the maximum angle (in radians) where a slope "
+"is still considered a floor (or a ceiling), rather than a wall. The default "
+"value equals 45 degrees.\n"
+"If [code]infinite_inertia[/code] is [code]true[/code], body will be able to "
+"push [RigidBody2D] nodes, but it won't also detect any collisions with them. "
+"If [code]false[/code], it will interact with [RigidBody2D] nodes like with "
+"[StaticBody2D].\n"
+"Returns the [code]linear_velocity[/code] vector, rotated and/or scaled if a "
+"slide collision occurred. To get detailed information about collisions that "
+"occurred, use [method get_slide_collision].\n"
+"When the body touches a moving platform, the platform's velocity is "
+"automatically added to the body motion. If a collision occurs due to the "
+"platform's motion, it will always be first in the slide collisions."
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:122
+msgid ""
+"Moves the body while keeping it attached to slopes. Similar to [method "
+"move_and_slide].\n"
+"As long as the [code]snap[/code] vector is in contact with the ground, the "
+"body will remain attached to the surface. This means you must disable snap "
+"in order to jump, for example. You can do this by setting [code]snap[/code] "
+"to [code](0, 0)[/code] or by using [method move_and_slide] instead."
+msgstr ""
+
+#: doc/classes/KinematicBody2D.xml:132
+msgid ""
+"Checks for collisions without moving the body. Virtually sets the node's "
+"position, scale and rotation to that of the given [Transform2D], then tries "
+"to move the body along the vector [code]rel_vec[/code]. Returns [code]true[/"
+"code] if a collision would occur."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:4
+msgid "Collision data for [KinematicBody] collisions."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:7
+msgid ""
+"Contains collision data for [KinematicBody] collisions. When a "
+"[KinematicBody] is moved using [method KinematicBody.move_and_collide], it "
+"stops if it detects a collision with another body. If a collision is "
+"detected, a KinematicCollision object is returned.\n"
+"This object contains information about the collision, including the "
+"colliding object, the remaining motion, and the collision position. This "
+"information can be used to calculate a collision response."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:17
+msgid ""
+"The collision angle according to [code]up_direction[/code], which is "
+"[code]Vector3.UP[/code] by default. This value is always positive."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:23
+#: doc/classes/KinematicCollision2D.xml:23
+msgid "The colliding body."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:26
+#: doc/classes/KinematicCollision2D.xml:26
+msgid ""
+"The colliding body's unique instance ID. See [method Object.get_instance_id]."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:29
+#: doc/classes/KinematicCollision2D.xml:29
+msgid "The colliding body's metadata. See [Object]."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:32
+msgid "The colliding body's [RID] used by the [PhysicsServer]."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:35
+#: doc/classes/KinematicCollision2D.xml:35
+msgid "The colliding body's shape."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:38
+msgid "The colliding shape's index. See [CollisionObject]."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:41
+#: doc/classes/KinematicCollision2D.xml:41
+msgid "The colliding object's velocity."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:44
+#: doc/classes/KinematicCollision2D.xml:44
+msgid "The moving object's colliding shape."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:47
+#: doc/classes/KinematicCollision2D.xml:47
+msgid "The colliding body's shape's normal at the point of collision."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:50
+#: doc/classes/KinematicCollision2D.xml:50
+msgid "The point of collision, in global coordinates."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:53
+#: doc/classes/KinematicCollision2D.xml:53
+msgid "The moving object's remaining movement vector."
+msgstr ""
+
+#: doc/classes/KinematicCollision.xml:56
+#: doc/classes/KinematicCollision2D.xml:56
+msgid "The distance the moving object traveled before collision."
+msgstr ""
+
+#: doc/classes/KinematicCollision2D.xml:4
+msgid "Collision data for [KinematicBody2D] collisions."
+msgstr ""
+
+#: doc/classes/KinematicCollision2D.xml:7
+msgid ""
+"Contains collision data for [KinematicBody2D] collisions. When a "
+"[KinematicBody2D] is moved using [method KinematicBody2D.move_and_collide], "
+"it stops if it detects a collision with another body. If a collision is "
+"detected, a KinematicCollision2D object is returned.\n"
+"This object contains information about the collision, including the "
+"colliding object, the remaining motion, and the collision position. This "
+"information can be used to calculate a collision response."
+msgstr ""
+
+#: doc/classes/KinematicCollision2D.xml:17
+msgid ""
+"The collision angle according to [code]up_direction[/code], which is "
+"[code]Vector2.UP[/code] by default. This value is always positive."
+msgstr ""
+
+#: doc/classes/KinematicCollision2D.xml:32
+msgid "The colliding body's [RID] used by the [Physics2DServer]."
+msgstr ""
+
+#: doc/classes/KinematicCollision2D.xml:38
+msgid "The colliding shape's index. See [CollisionObject2D]."
+msgstr ""
+
+#: doc/classes/Label.xml:4
+msgid ""
+"Displays plain text in a line or wrapped inside a rectangle. For formatted "
+"text, use [RichTextLabel]."
+msgstr ""
+
+#: doc/classes/Label.xml:7
+msgid ""
+"Label displays plain text on the screen. It gives you control over the "
+"horizontal and vertical alignment and can wrap the text inside the node's "
+"bounding rectangle. It doesn't support bold, italics, or other formatting. "
+"For that, use [RichTextLabel] instead.\n"
+"[b]Note:[/b] Contrarily to most other [Control]s, Label's [member Control."
+"mouse_filter] defaults to [constant Control.MOUSE_FILTER_IGNORE] (i.e. it "
+"doesn't react to mouse input events). This implies that a label won't "
+"display any configured [member Control.hint_tooltip], unless you change its "
+"mouse filter.\n"
+"[b]Note:[/b] Unicode characters after [code]0xffff[/code] (such as most "
+"emoji) are [i]not[/i] supported on Windows. They will display as unknown "
+"characters instead. This will be resolved in Godot 4.0."
+msgstr ""
+
+#: doc/classes/Label.xml:18
+msgid "Returns the amount of lines of text the Label has."
+msgstr ""
+
+#: doc/classes/Label.xml:24
+msgid "Returns the font size in pixels."
+msgstr ""
+
+#: doc/classes/Label.xml:30
+msgid ""
+"Returns the total number of printable characters in the text (excluding "
+"spaces and newlines)."
+msgstr ""
+
+#: doc/classes/Label.xml:36
+msgid ""
+"Returns the number of lines shown. Useful if the [Label]'s height cannot "
+"currently display all lines."
+msgstr ""
+
+#: doc/classes/Label.xml:42
+msgid ""
+"Controls the text's horizontal align. Supports left, center, right, and "
+"fill, or justify. Set it to one of the [enum Align] constants."
+msgstr ""
+
+#: doc/classes/Label.xml:45
+msgid ""
+"If [code]true[/code], wraps the text inside the node's bounding rectangle. "
+"If you resize the node, it will change its height automatically to show all "
+"the text."
+msgstr ""
+
+#: doc/classes/Label.xml:48
+msgid ""
+"If [code]true[/code], the Label only shows the text that fits inside its "
+"bounding rectangle and will clip text horizontally."
+msgstr ""
+
+#: doc/classes/Label.xml:51
+msgid ""
+"The node ignores the first [code]lines_skipped[/code] lines before it starts "
+"to display text."
+msgstr ""
+
+#: doc/classes/Label.xml:54
+msgid "Limits the lines of text the node shows on screen."
+msgstr ""
+
+#: doc/classes/Label.xml:58
+msgid ""
+"Limits the amount of visible characters. If you set [code]percent_visible[/"
+"code] to 0.5, only up to half of the text's characters will display on "
+"screen. Useful to animate the text in a dialog box."
+msgstr ""
+
+#: doc/classes/Label.xml:62
+msgid "The text to display on screen."
+msgstr ""
+
+#: doc/classes/Label.xml:65
+msgid "If [code]true[/code], all the text displays as UPPERCASE."
+msgstr ""
+
+#: doc/classes/Label.xml:68
+msgid ""
+"Controls the text's vertical align. Supports top, center, bottom, and fill. "
+"Set it to one of the [enum VAlign] constants."
+msgstr ""
+
+#: doc/classes/Label.xml:71
+msgid "Restricts the number of characters to display. Set to -1 to disable."
+msgstr ""
+
+#: doc/classes/Label.xml:76
+msgid "Align rows to the left (default)."
+msgstr ""
+
+#: doc/classes/Label.xml:79
+msgid "Align rows centered."
+msgstr ""
+
+#: doc/classes/Label.xml:82
+msgid "Align rows to the right."
+msgstr ""
+
+#: doc/classes/Label.xml:85
+msgid "Expand row whitespaces to fit the width."
+msgstr ""
+
+#: doc/classes/Label.xml:88
+msgid "Align the whole text to the top."
+msgstr ""
+
+#: doc/classes/Label.xml:91
+msgid "Align the whole text to the center."
+msgstr ""
+
+#: doc/classes/Label.xml:94
+msgid "Align the whole text to the bottom."
+msgstr ""
+
+#: doc/classes/Label.xml:97
+msgid "Align the whole text by spreading the rows."
+msgstr ""
+
+#: doc/classes/Label.xml:102
+msgid "[Font] used for the [Label]'s text."
+msgstr ""
+
+#: doc/classes/Label.xml:105
+msgid "Default text [Color] of the [Label]."
+msgstr ""
+
+#: doc/classes/Label.xml:108
+msgid "[Color] of the text's shadow effect."
+msgstr ""
+
+#: doc/classes/Label.xml:111
+msgid "The tint of [Font]'s outline. See [member DynamicFont.outline_color]."
+msgstr ""
+
+#: doc/classes/Label.xml:114
+msgid "Vertical space between lines in multiline [Label]."
+msgstr ""
+
+#: doc/classes/Label.xml:117
+msgid "Background [StyleBox] for the [Label]."
+msgstr ""
+
+#: doc/classes/Label.xml:120
+msgid ""
+"Boolean value. If set to 1 ([code]true[/code]), the shadow will be displayed "
+"around the whole text as an outline."
+msgstr ""
+
+#: doc/classes/Label.xml:123
+msgid "The horizontal offset of the text's shadow."
+msgstr ""
+
+#: doc/classes/Label.xml:126
+msgid "The vertical offset of the text's shadow."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:4
+msgid ""
+"[i]Deprecated.[/i] A [Texture] capable of storing many smaller textures with "
+"offsets."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:7
+msgid ""
+"[i]Deprecated (will be removed in Godot 4.0).[/i] A [Texture] capable of "
+"storing many smaller textures with offsets.\n"
+"You can dynamically add pieces ([Texture]s) to this [LargeTexture] using "
+"different offsets."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:18
+msgid ""
+"Adds [code]texture[/code] to this [LargeTexture], starting on offset "
+"[code]ofs[/code]."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:24
+msgid "Clears the [LargeTexture]."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:30
+msgid "Returns the number of pieces currently in this [LargeTexture]."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:37
+msgid "Returns the offset of the piece with the index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:44
+msgid "Returns the [Texture] of the piece with the index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:52
+msgid ""
+"Sets the offset of the piece with the index [code]idx[/code] to [code]ofs[/"
+"code]."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:60
+msgid ""
+"Sets the [Texture] of the piece with index [code]idx[/code] to "
+"[code]texture[/code]."
+msgstr ""
+
+#: doc/classes/LargeTexture.xml:67
+msgid "Sets the size of this [LargeTexture]."
+msgstr ""
+
+#: doc/classes/Light.xml:4
+msgid "Provides a base class for different kinds of light nodes."
+msgstr ""
+
+#: doc/classes/Light.xml:7
+msgid ""
+"Light is the [i]abstract[/i] base class for light nodes. As it can't be "
+"instanced, it shouldn't be used directly. Other types of light nodes inherit "
+"from it. Light contains the common variables and parameters used for "
+"lighting."
+msgstr ""
+
+#: doc/classes/Light.xml:18
+msgid "Returns the value of the specified [enum Light.Param] parameter."
+msgstr ""
+
+#: doc/classes/Light.xml:26
+msgid "Sets the value of the specified [enum Light.Param] parameter."
+msgstr ""
+
+#: doc/classes/Light.xml:32
+msgid ""
+"If [code]true[/code], the light only appears in the editor and will not be "
+"visible at runtime."
+msgstr ""
+
+#: doc/classes/Light.xml:35
+msgid "The light's bake mode. See [enum BakeMode]."
+msgstr ""
+
+#: doc/classes/Light.xml:38
+msgid ""
+"The light's color. An [i]overbright[/i] color can be used to achieve a "
+"result equivalent to increasing the light's [member light_energy]."
+msgstr ""
+
+#: doc/classes/Light.xml:41
+msgid "The light will affect objects in the selected layers."
+msgstr ""
+
+#: doc/classes/Light.xml:44
+msgid ""
+"The light's strength multiplier (this is not a physical unit). For "
+"[OmniLight] and [SpotLight], changing this value will only change the light "
+"color's intensity, not the light's radius."
+msgstr ""
+
+#: doc/classes/Light.xml:47
+msgid ""
+"Secondary multiplier used with indirect light (light bounces). This works on "
+"both [BakedLightmap] and [GIProbe]."
+msgstr ""
+
+#: doc/classes/Light.xml:50
+msgid ""
+"If [code]true[/code], the light's effect is reversed, darkening areas and "
+"casting bright shadows."
+msgstr ""
+
+#: doc/classes/Light.xml:53
+msgid ""
+"The size of the light in Godot units. Only considered in baked lightmaps and "
+"only if [member light_bake_mode] is set to [constant BAKE_ALL]. Increasing "
+"this value will make the shadows appear blurrier. This can be used to "
+"simulate area lights to an extent."
+msgstr ""
+
+#: doc/classes/Light.xml:56
+msgid ""
+"The intensity of the specular blob in objects affected by the light. At "
+"[code]0[/code], the light becomes a pure diffuse light. When not baking "
+"emission, this can be used to avoid unrealistic reflections when placing "
+"lights above an emissive surface."
+msgstr ""
+
+#: doc/classes/Light.xml:59
+msgid ""
+"Used to adjust shadow appearance. Too small a value results in self-"
+"shadowing (\"shadow acne\"), while too large a value causes shadows to "
+"separate from casters (\"peter-panning\"). Adjust as needed."
+msgstr ""
+
+#: doc/classes/Light.xml:62
+msgid "The color of shadows cast by this light."
+msgstr ""
+
+#: doc/classes/Light.xml:65
+msgid "Attempts to reduce [member shadow_bias] gap."
+msgstr ""
+
+#: doc/classes/Light.xml:68
+msgid "If [code]true[/code], the light will cast shadows."
+msgstr ""
+
+#: doc/classes/Light.xml:71
+msgid ""
+"If [code]true[/code], reverses the backface culling of the mesh. This can be "
+"useful when you have a flat mesh that has a light behind it. If you need to "
+"cast a shadow on both sides of the mesh, set the mesh to use double-sided "
+"shadows with [constant GeometryInstance.SHADOW_CASTING_SETTING_DOUBLE_SIDED]."
+msgstr ""
+
+#: doc/classes/Light.xml:76
+msgid "Constant for accessing [member light_energy]."
+msgstr ""
+
+#: doc/classes/Light.xml:79
+msgid "Constant for accessing [member light_indirect_energy]."
+msgstr ""
+
+#: doc/classes/Light.xml:82
+msgid "Constant for accessing [member light_size]."
+msgstr ""
+
+#: doc/classes/Light.xml:85
+msgid "Constant for accessing [member light_specular]."
+msgstr ""
+
+#: doc/classes/Light.xml:88
+msgid ""
+"Constant for accessing [member OmniLight.omni_range] or [member SpotLight."
+"spot_range]."
+msgstr ""
+
+#: doc/classes/Light.xml:91
+msgid ""
+"Constant for accessing [member OmniLight.omni_attenuation] or [member "
+"SpotLight.spot_attenuation]."
+msgstr ""
+
+#: doc/classes/Light.xml:94
+msgid "Constant for accessing [member SpotLight.spot_angle]."
+msgstr ""
+
+#: doc/classes/Light.xml:97
+msgid "Constant for accessing [member SpotLight.spot_angle_attenuation]."
+msgstr ""
+
+#: doc/classes/Light.xml:100
+msgid "Constant for accessing [member shadow_contact]."
+msgstr ""
+
+#: doc/classes/Light.xml:103
+msgid ""
+"Constant for accessing [member DirectionalLight."
+"directional_shadow_max_distance]."
+msgstr ""
+
+#: doc/classes/Light.xml:106
+msgid ""
+"Constant for accessing [member DirectionalLight.directional_shadow_split_1]."
+msgstr ""
+
+#: doc/classes/Light.xml:109
+msgid ""
+"Constant for accessing [member DirectionalLight.directional_shadow_split_2]."
+msgstr ""
+
+#: doc/classes/Light.xml:112
+msgid ""
+"Constant for accessing [member DirectionalLight.directional_shadow_split_3]."
+msgstr ""
+
+#: doc/classes/Light.xml:115
+msgid ""
+"Constant for accessing [member DirectionalLight."
+"directional_shadow_normal_bias]."
+msgstr ""
+
+#: doc/classes/Light.xml:118
+msgid "Constant for accessing [member shadow_bias]."
+msgstr ""
+
+#: doc/classes/Light.xml:121
+msgid ""
+"Constant for accessing [member DirectionalLight."
+"directional_shadow_bias_split_scale]."
+msgstr ""
+
+#: doc/classes/Light.xml:127
+msgid ""
+"Light is ignored when baking.\n"
+"[b]Note:[/b] Hiding a light does [i]not[/i] affect baking."
+msgstr ""
+
+#: doc/classes/Light.xml:131
+msgid "Only indirect lighting will be baked (default)."
+msgstr ""
+
+#: doc/classes/Light.xml:134
+msgid ""
+"Both direct and indirect light will be baked.\n"
+"[b]Note:[/b] You should hide the light if you don't want it to appear twice "
+"(dynamic and baked)."
+msgstr ""
+
+#: doc/classes/Light2D.xml:4
+msgid "Casts light in a 2D environment."
+msgstr ""
+
+#: doc/classes/Light2D.xml:7
+msgid ""
+"Casts light in a 2D environment. Light is defined by a (usually grayscale) "
+"texture, a color, an energy value, a mode (see constants), and various other "
+"parameters (range and shadows-related).\n"
+"[b]Note:[/b] Light2D can also be used as a mask."
+msgstr ""
+
+#: doc/classes/Light2D.xml:11 doc/classes/LightOccluder2D.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/2d/2d_lights_and_shadows.html"
+msgstr ""
+
+#: doc/classes/Light2D.xml:17
+msgid "The Light2D's [Color]."
+msgstr ""
+
+#: doc/classes/Light2D.xml:20
+msgid "If [code]true[/code], Light2D will only appear when editing the scene."
+msgstr ""
+
+#: doc/classes/Light2D.xml:23
+msgid "If [code]true[/code], Light2D will emit light."
+msgstr ""
+
+#: doc/classes/Light2D.xml:26
+msgid ""
+"The Light2D's energy value. The larger the value, the stronger the light."
+msgstr ""
+
+#: doc/classes/Light2D.xml:29
+msgid "The Light2D's mode. See [enum Mode] constants for values."
+msgstr ""
+
+#: doc/classes/Light2D.xml:32
+msgid "The offset of the Light2D's [code]texture[/code]."
+msgstr ""
+
+#: doc/classes/Light2D.xml:35
+msgid "The height of the Light2D. Used with 2D normal mapping."
+msgstr ""
+
+#: doc/classes/Light2D.xml:38
+msgid ""
+"The layer mask. Only objects with a matching mask will be affected by the "
+"Light2D."
+msgstr ""
+
+#: doc/classes/Light2D.xml:41
+msgid "Maximum layer value of objects that are affected by the Light2D."
+msgstr ""
+
+#: doc/classes/Light2D.xml:44
+msgid "Minimum layer value of objects that are affected by the Light2D."
+msgstr ""
+
+#: doc/classes/Light2D.xml:47
+msgid ""
+"Maximum [code]z[/code] value of objects that are affected by the Light2D."
+msgstr ""
+
+#: doc/classes/Light2D.xml:50
+msgid ""
+"Minimum [code]z[/code] value of objects that are affected by the Light2D."
+msgstr ""
+
+#: doc/classes/Light2D.xml:53
+msgid "Shadow buffer size."
+msgstr ""
+
+#: doc/classes/Light2D.xml:56
+msgid "[Color] of shadows cast by the Light2D."
+msgstr ""
+
+#: doc/classes/Light2D.xml:59
+msgid "If [code]true[/code], the Light2D will cast shadows."
+msgstr ""
+
+#: doc/classes/Light2D.xml:62
+msgid "Shadow filter type. See [enum ShadowFilter] for possible values."
+msgstr ""
+
+#: doc/classes/Light2D.xml:65
+msgid "Smoothing value for shadows."
+msgstr ""
+
+#: doc/classes/Light2D.xml:68
+msgid "Smooth shadow gradient length."
+msgstr ""
+
+#: doc/classes/Light2D.xml:71
+msgid ""
+"The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders "
+"with a matching light mask will cast shadows."
+msgstr ""
+
+#: doc/classes/Light2D.xml:74
+msgid "[Texture] used for the Light2D's appearance."
+msgstr ""
+
+#: doc/classes/Light2D.xml:77
+msgid "The [code]texture[/code]'s scale factor."
+msgstr ""
+
+#: doc/classes/Light2D.xml:82
+msgid ""
+"Adds the value of pixels corresponding to the Light2D to the values of "
+"pixels under it. This is the common behavior of a light."
+msgstr ""
+
+#: doc/classes/Light2D.xml:85
+msgid ""
+"Subtracts the value of pixels corresponding to the Light2D to the values of "
+"pixels under it, resulting in inversed light effect."
+msgstr ""
+
+#: doc/classes/Light2D.xml:88
+msgid ""
+"Mix the value of pixels corresponding to the Light2D to the values of pixels "
+"under it by linear interpolation."
+msgstr ""
+
+#: doc/classes/Light2D.xml:91
+msgid ""
+"The light texture of the Light2D is used as a mask, hiding or revealing "
+"parts of the screen underneath depending on the value of each pixel of the "
+"light (mask) texture."
+msgstr ""
+
+#: doc/classes/Light2D.xml:94
+msgid "No filter applies to the shadow map. See [member shadow_filter]."
+msgstr ""
+
+#: doc/classes/Light2D.xml:97
+msgid ""
+"Percentage closer filtering (3 samples) applies to the shadow map. See "
+"[member shadow_filter]."
+msgstr ""
+
+#: doc/classes/Light2D.xml:100
+msgid ""
+"Percentage closer filtering (5 samples) applies to the shadow map. See "
+"[member shadow_filter]."
+msgstr ""
+
+#: doc/classes/Light2D.xml:103
+msgid ""
+"Percentage closer filtering (7 samples) applies to the shadow map. See "
+"[member shadow_filter]."
+msgstr ""
+
+#: doc/classes/Light2D.xml:106
+msgid ""
+"Percentage closer filtering (9 samples) applies to the shadow map. See "
+"[member shadow_filter]."
+msgstr ""
+
+#: doc/classes/Light2D.xml:109
+msgid ""
+"Percentage closer filtering (13 samples) applies to the shadow map. See "
+"[member shadow_filter]."
+msgstr ""
+
+#: doc/classes/LightOccluder2D.xml:4
+msgid "Occludes light cast by a Light2D, casting shadows."
+msgstr ""
+
+#: doc/classes/LightOccluder2D.xml:7
+msgid ""
+"Occludes light cast by a Light2D, casting shadows. The LightOccluder2D must "
+"be provided with an [OccluderPolygon2D] in order for the shadow to be "
+"computed."
+msgstr ""
+
+#: doc/classes/LightOccluder2D.xml:16
+msgid ""
+"The LightOccluder2D's light mask. The LightOccluder2D will cast shadows only "
+"from Light2D(s) that have the same light mask(s)."
+msgstr ""
+
+#: doc/classes/LightOccluder2D.xml:19
+msgid "The [OccluderPolygon2D] used to compute the shadow."
+msgstr ""
+
+#: doc/classes/Line2D.xml:4
+msgid "A 2D line."
+msgstr ""
+
+#: doc/classes/Line2D.xml:7
+msgid ""
+"A line through several points in 2D space.\n"
+"[b]Note:[/b] By default, Godot can only draw up to 4,096 polygon points at a "
+"time. To increase this limit, open the Project Settings and increase [member "
+"ProjectSettings.rendering/limits/buffers/canvas_polygon_buffer_size_kb] and "
+"[member ProjectSettings.rendering/limits/buffers/"
+"canvas_polygon_index_buffer_size_kb]."
+msgstr ""
+
+#: doc/classes/Line2D.xml:20
+msgid ""
+"Adds a point at the [code]position[/code]. Appends the point at the end of "
+"the line.\n"
+"If [code]at_position[/code] is given, the point is inserted before the point "
+"number [code]at_position[/code], moving that point (and every point after) "
+"after the inserted point. If [code]at_position[/code] is not given, or is an "
+"illegal value ([code]at_position < 0[/code] or [code]at_position >= [method "
+"get_point_count][/code]), the point will be appended at the end of the point "
+"list."
+msgstr ""
+
+#: doc/classes/Line2D.xml:27
+msgid "Removes all points from the line."
+msgstr ""
+
+#: doc/classes/Line2D.xml:33
+msgid "Returns the Line2D's amount of points."
+msgstr ""
+
+#: doc/classes/Line2D.xml:40
+msgid "Returns point [code]i[/code]'s position."
+msgstr ""
+
+#: doc/classes/Line2D.xml:47
+msgid "Removes the point at index [code]i[/code] from the line."
+msgstr ""
+
+#: doc/classes/Line2D.xml:55
+msgid ""
+"Overwrites the position in point [code]i[/code] with the supplied "
+"[code]position[/code]."
+msgstr ""
+
+#: doc/classes/Line2D.xml:61
+msgid ""
+"If [code]true[/code], the line's border will be anti-aliased.\n"
+"[b]Note:[/b] Line2D is not accelerated by batching when being anti-aliased."
+msgstr ""
+
+#: doc/classes/Line2D.xml:65
+msgid ""
+"Controls the style of the line's first point. Use [enum LineCapMode] "
+"constants."
+msgstr ""
+
+#: doc/classes/Line2D.xml:68
+msgid "The line's color. Will not be used if a gradient is set."
+msgstr ""
+
+#: doc/classes/Line2D.xml:71
+msgid ""
+"Controls the style of the line's last point. Use [enum LineCapMode] "
+"constants."
+msgstr ""
+
+#: doc/classes/Line2D.xml:74
+msgid ""
+"The gradient is drawn through the whole line from start to finish. The "
+"default color will not be used if a gradient is set."
+msgstr ""
+
+#: doc/classes/Line2D.xml:77
+msgid "The style for the points between the start and the end."
+msgstr ""
+
+#: doc/classes/Line2D.xml:80
+msgid ""
+"The points that form the lines. The line is drawn between every point set in "
+"this array. Points are interpreted as local vectors."
+msgstr ""
+
+#: doc/classes/Line2D.xml:83
+msgid ""
+"The smoothness of the rounded joints and caps. This is only used if a cap or "
+"joint is set as round."
+msgstr ""
+
+#: doc/classes/Line2D.xml:86
+msgid ""
+"The direction difference in radians between vector points. This value is "
+"only used if [code]joint mode[/code] is set to [constant LINE_JOINT_SHARP]."
+msgstr ""
+
+#: doc/classes/Line2D.xml:89
+msgid ""
+"The texture used for the line's texture. Uses [code]texture_mode[/code] for "
+"drawing style."
+msgstr ""
+
+#: doc/classes/Line2D.xml:92
+msgid ""
+"The style to render the [code]texture[/code] on the line. Use [enum "
+"LineTextureMode] constants."
+msgstr ""
+
+#: doc/classes/Line2D.xml:95
+msgid "The line's width."
+msgstr ""
+
+#: doc/classes/Line2D.xml:98
+msgid ""
+"The line's width varies with the curve. The original width is simply "
+"multiply by the value of the Curve."
+msgstr ""
+
+#: doc/classes/Line2D.xml:103
+msgid ""
+"The line's joints will be pointy. If [code]sharp_limit[/code] is greater "
+"than the rotation of a joint, it becomes a bevel joint instead."
+msgstr ""
+
+#: doc/classes/Line2D.xml:106
+msgid "The line's joints will be bevelled/chamfered."
+msgstr ""
+
+#: doc/classes/Line2D.xml:109
+msgid "The line's joints will be rounded."
+msgstr ""
+
+#: doc/classes/Line2D.xml:112
+msgid "Don't draw a line cap."
+msgstr ""
+
+#: doc/classes/Line2D.xml:115
+msgid "Draws the line cap as a box."
+msgstr ""
+
+#: doc/classes/Line2D.xml:118
+msgid "Draws the line cap as a circle."
+msgstr ""
+
+#: doc/classes/Line2D.xml:121
+msgid ""
+"Takes the left pixels of the texture and renders it over the whole line."
+msgstr ""
+
+#: doc/classes/Line2D.xml:124
+msgid ""
+"Tiles the texture over the line. The texture must be imported with "
+"[b]Repeat[/b] enabled for it to work properly."
+msgstr ""
+
+#: doc/classes/Line2D.xml:127
+msgid ""
+"Stretches the texture across the line. Import the texture with [b]Repeat[/b] "
+"disabled for best results."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:4
+msgid "Control that provides single-line string editing."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:7
+msgid ""
+"LineEdit provides a single-line string editor, used for text fields.\n"
+"It features many built-in shortcuts which will always be available "
+"([code]Ctrl[/code] here maps to [code]Command[/code] on macOS):\n"
+"- Ctrl + C: Copy\n"
+"- Ctrl + X: Cut\n"
+"- Ctrl + V or Ctrl + Y: Paste/\"yank\"\n"
+"- Ctrl + Z: Undo\n"
+"- Ctrl + Shift + Z: Redo\n"
+"- Ctrl + U: Delete text from the cursor position to the beginning of the "
+"line\n"
+"- Ctrl + K: Delete text from the cursor position to the end of the line\n"
+"- Ctrl + A: Select all text\n"
+"- Up/Down arrow: Move the cursor to the beginning/end of the line\n"
+"On macOS, some extra keyboard shortcuts are available:\n"
+"- Ctrl + F: Like the right arrow key, move the cursor one character right\n"
+"- Ctrl + B: Like the left arrow key, move the cursor one character left\n"
+"- Ctrl + P: Like the up arrow key, move the cursor to the previous line\n"
+"- Ctrl + N: Like the down arrow key, move the cursor to the next line\n"
+"- Ctrl + D: Like the Delete key, delete the character on the right side of "
+"cursor\n"
+"- Ctrl + H: Like the Backspace key, delete the character on the left side of "
+"the cursor\n"
+"- Command + Left arrow: Like the Home key, move the cursor to the beginning "
+"of the line\n"
+"- Command + Right arrow: Like the End key, move the cursor to the end of the "
+"line"
+msgstr ""
+
+#: doc/classes/LineEdit.xml:35
+msgid ""
+"Adds [code]text[/code] after the cursor. If the resulting value is longer "
+"than [member max_length], nothing happens."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:41
+msgid "Erases the [LineEdit]'s [member text]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:47
+msgid ""
+"Deletes one character at the cursor's current position (equivalent to "
+"pressing the [code]Delete[/code] key)."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:55
+msgid ""
+"Deletes a section of the [member text] going from position "
+"[code]from_column[/code] to [code]to_column[/code]. Both parameters should "
+"be within the text's length."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:61
+msgid "Clears the current selection."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:67
+msgid ""
+"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:74
+msgid ""
+"Returns the scroll offset due to [member caret_position], as a number of "
+"characters."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:81
+msgid "Executes a given action as defined in the [enum MenuItems] enum."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:89
+msgid ""
+"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
+"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
+"at the end.\n"
+"[codeblock]\n"
+"text = \"Welcome\"\n"
+"select() # Will select \"Welcome\".\n"
+"select(4) # Will select \"ome\".\n"
+"select(2, 5) # Will select \"lco\".\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/LineEdit.xml:101
+msgid "Selects the whole [String]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:107
+msgid "Text alignment as defined in the [enum Align] enum."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
+msgid "If [code]true[/code], the caret (visual cursor) blinks."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
+msgid "Duration (in seconds) of a caret's blinking cycle."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:116
+msgid ""
+"The cursor's position inside the [LineEdit]. When set, the text may scroll "
+"to accommodate it."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:119
+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 ""
+
+#: doc/classes/LineEdit.xml:122
+msgid "If [code]true[/code], the context menu will appear when right-clicked."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:125
+msgid ""
+"If [code]false[/code], existing text cannot be modified and new text cannot "
+"be added."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:128
+msgid ""
+"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
+"the [member text]. It will [b]not[/b] compress if the [member text] is "
+"shortened."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:132
+msgid ""
+"Maximum amount of characters that can be entered inside the [LineEdit]. If "
+"[code]0[/code], there is no limit.\n"
+"When a limit is defined, characters that would exceed [member max_length] "
+"are truncated. This happens both for existing [member text] contents when "
+"setting the max length, or for new text inserted in the [LineEdit], "
+"including pasting. If any input text is truncated, the [signal "
+"text_change_rejected] signal is emitted with the truncated substring as "
+"parameter.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"text = \"Hello world\"\n"
+"max_length = 5\n"
+"# `text` becomes \"Hello\".\n"
+"max_length = 10\n"
+"text += \" goodbye\"\n"
+"# `text` becomes \"Hello good\".\n"
+"# `text_change_rejected` is emitted with \"bye\" as parameter.\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/LineEdit.xml:147
+msgid ""
+"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
+"code]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:150
+msgid ""
+"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
+"default value (see [member text])."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:153
+msgid ""
+"Sets the icon that will appear in the right end of the [LineEdit] if there's "
+"no [member text], or always, if [member clear_button_enabled] is set to "
+"[code]false[/code]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:156
+msgid ""
+"If [code]true[/code], every character is replaced with the secret character "
+"(see [member secret_character])."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:159
+msgid ""
+"The character to use to mask secret input (defaults to \"*\"). Only a single "
+"character can be used as the secret character."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:162
+msgid ""
+"If [code]false[/code], it's impossible to select the text using mouse nor "
+"keyboard."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:165
+msgid "If [code]false[/code], using shortcuts will be disabled."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:168
+msgid ""
+"String value of the [LineEdit].\n"
+"[b]Note:[/b] Changing text using this property won't emit the [signal "
+"text_changed] signal."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
+msgid ""
+"If [code]true[/code], the native virtual keyboard is shown when focused on "
+"platforms that support it."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:179
+msgid ""
+"Emitted when appending text that overflows the [member max_length]. The "
+"appended text is truncated to fit [member max_length], and the part that "
+"couldn't fit is passed as the [code]rejected_substring[/code] argument."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
+msgid "Emitted when the text changes."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:191
+msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:197
+msgid "Aligns the text on the left-hand side of the [LineEdit]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:200
+msgid "Centers the text in the middle of the [LineEdit]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:203
+msgid "Aligns the text on the right-hand side of the [LineEdit]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:206
+msgid "Stretches whitespaces to fit the [LineEdit]'s width."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
+msgid "Cuts (copies and clears) the selected text."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
+msgid "Copies the selected text."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:215
+msgid ""
+"Pastes the clipboard text over the selected text (or at the cursor's "
+"position).\n"
+"Non-printable escape characters are automatically stripped from the OS "
+"clipboard via [method String.strip_escapes]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:219
+msgid "Erases the whole [LineEdit] text."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:222
+msgid "Selects the whole [LineEdit] text."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
+msgid "Undoes the previous action."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:228
+msgid "Reverse the last undo action."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
+msgid "Represents the size of the [enum MenuItems] enum."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:236
+msgid "Texture for the clear button. See [member clear_button_enabled]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:239
+msgid "Color used as default tint for the clear button."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:242
+msgid "Color used for the clear button when it's pressed."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:245
+msgid "Color of the [LineEdit]'s visual cursor (caret)."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:248
+msgid "Background used when [LineEdit] has GUI focus."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:251
+msgid "Font used for the text."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:254
+msgid "Default font color."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:257
+msgid "Font color for selected text (inside the selection rectangle)."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:260
+msgid "Font color when editing is disabled."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:263
+msgid ""
+"Minimum horizontal space for the text (not counting the clear button and "
+"content margins). This value is measured in count of space characters (i.e. "
+"this amount of space characters can be displayed without scrolling)."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:266
+msgid "Default background for the [LineEdit]."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:269
+msgid ""
+"Background used when [LineEdit] is in read-only mode ([member editable] is "
+"set to [code]false[/code])."
+msgstr ""
+
+#: doc/classes/LineEdit.xml:272
+msgid "Color of the selection rectangle."
+msgstr ""
+
+#: doc/classes/LineShape2D.xml:4
+msgid "Line shape for 2D collisions."
+msgstr ""
+
+#: doc/classes/LineShape2D.xml:7
+msgid ""
+"Line shape for 2D collisions. It works like a 2D plane and will not allow "
+"any physics body to go to the negative side. Not recommended for rigid "
+"bodies, and usually not recommended for static bodies either because it "
+"forces checks against it on every frame."
+msgstr ""
+
+#: doc/classes/LineShape2D.xml:15
+msgid "The line's distance from the origin."
+msgstr ""
+
+#: doc/classes/LineShape2D.xml:18
+msgid "The line's normal."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:4
+msgid "Simple button used to represent a link to some resource."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:7
+msgid ""
+"This kind of button is primarily used when the interaction with the button "
+"causes a context change (like linking to a web page).\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:21
+msgid ""
+"Determines when to show the underline. See [enum UnderlineMode] for options."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:26
+msgid "The LinkButton will always show an underline at the bottom of its text."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:29
+msgid ""
+"The LinkButton will show an underline at the bottom of its text when the "
+"mouse cursor is over it."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:32
+msgid "The LinkButton will never show an underline at the bottom of its text."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:37
+msgid ""
+"[StyleBox] used when the [LinkButton] is focused. It is displayed over the "
+"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
+"visual effect."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:40
+msgid "[Font] of the [LinkButton]'s text."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:43
+msgid "Default text [Color] of the [LinkButton]."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:46
+msgid "Text [Color] used when the [LinkButton] is being hovered."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:49
+msgid "Text [Color] used when the [LinkButton] is being pressed."
+msgstr ""
+
+#: doc/classes/LinkButton.xml:52
+msgid "The vertical space between the baseline of text and the underline."
+msgstr ""
+
+#: doc/classes/Listener.xml:4 doc/classes/Listener2D.xml:4
+msgid "Overrides the location sounds are heard from."
+msgstr ""
+
+#: doc/classes/Listener.xml:7
+msgid ""
+"Once added to the scene tree and enabled using [method make_current], this "
+"node will override the location sounds are heard from. This can be used to "
+"listen from a location different from the [Camera]."
+msgstr ""
+
+#: doc/classes/Listener.xml:15
+msgid "Disables the listener to use the current camera's listener instead."
+msgstr ""
+
+#: doc/classes/Listener.xml:21
+msgid "Returns the listener's global orthonormalized [Transform]."
+msgstr ""
+
+#: doc/classes/Listener.xml:27
+msgid ""
+"Returns [code]true[/code] if the listener was made current using [method "
+"make_current], [code]false[/code] otherwise.\n"
+"[b]Note:[/b] There may be more than one Listener marked as \"current\" in "
+"the scene tree, but only the one that was made current last will be used."
+msgstr ""
+
+#: doc/classes/Listener.xml:34
+msgid "Enables the listener. This will override the current camera's listener."
+msgstr ""
+
+#: doc/classes/Listener2D.xml:7
+msgid ""
+"Once added to the scene tree and enabled using [method make_current], this "
+"node will override the location sounds are heard from. Only one [Listener2D] "
+"can be current. Using [method make_current] will disable the previous "
+"[Listener2D].\n"
+"If there is no active [Listener2D] in the current [Viewport], center of the "
+"screen will be used as a hearing point for the audio. [Listener2D] needs to "
+"be inside [SceneTree] to function."
+msgstr ""
+
+#: doc/classes/Listener2D.xml:16
+msgid ""
+"Disables the [Listener2D]. If it's not set as current, this method will have "
+"no effect."
+msgstr ""
+
+#: doc/classes/Listener2D.xml:22
+msgid "Returns [code]true[/code] if this [Listener2D] is currently active."
+msgstr ""
+
+#: doc/classes/Listener2D.xml:28
+msgid ""
+"Makes the [Listener2D] active, setting it as the hearing point for the "
+"sounds. If there is already another active [Listener2D], it will be "
+"disabled.\n"
+"This method will have no effect if the [Listener2D] is not added to "
+"[SceneTree]."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:4
+msgid "Abstract base class for the game's main loop."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:7
+msgid ""
+"[MainLoop] is the abstract base class for a Godot project's game loop. It is "
+"inherited by [SceneTree], which is the default game loop implementation used "
+"in Godot projects, though it is also possible to write and use one's own "
+"[MainLoop] subclass instead of the scene tree.\n"
+"Upon the application start, a [MainLoop] implementation must be provided to "
+"the OS; otherwise, the application will exit. This happens automatically "
+"(and a [SceneTree] is created) unless a main [Script] is provided from the "
+"command line (with e.g. [code]godot -s my_loop.gd[/code], which should then "
+"be a [MainLoop] implementation.\n"
+"Here is an example script implementing a simple [MainLoop]:\n"
+"[codeblock]\n"
+"extends MainLoop\n"
+"\n"
+"var time_elapsed = 0\n"
+"var keys_typed = []\n"
+"var quit = false\n"
+"\n"
+"func _initialize():\n"
+" print(\"Initialized:\")\n"
+" print(\" Starting time: %s\" % str(time_elapsed))\n"
+"\n"
+"func _idle(delta):\n"
+" time_elapsed += delta\n"
+" # Return true to end the main loop.\n"
+" return quit\n"
+"\n"
+"func _input_event(event):\n"
+" # Record keys.\n"
+" if event is InputEventKey and event.pressed and !event.echo:\n"
+" keys_typed.append(OS.get_scancode_string(event.scancode))\n"
+" # Quit on Escape press.\n"
+" if event.scancode == KEY_ESCAPE:\n"
+" quit = true\n"
+" # Quit on any mouse click.\n"
+" if event is InputEventMouseButton:\n"
+" quit = true\n"
+"\n"
+"func _finalize():\n"
+" print(\"Finalized:\")\n"
+" print(\" End time: %s\" % str(time_elapsed))\n"
+" print(\" Keys typed: %s\" % var2str(keys_typed))\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/MainLoop.xml:51
+msgid ""
+"Called when files are dragged from the OS file manager and dropped in the "
+"game window. The arguments are a list of file paths and the identifier of "
+"the screen where the drag originated."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:57
+msgid "Called before the program exits."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:65
+msgid ""
+"Called when the user performs an action in the system global menu (e.g. the "
+"Mac OS menu bar)."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:72
+msgid ""
+"Called each idle frame with the time since the last idle frame as argument "
+"(in seconds). Equivalent to [method Node._process].\n"
+"If implemented, the method must return a boolean value. [code]true[/code] "
+"ends the main loop, while [code]false[/code] lets it proceed to the next "
+"frame."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:79
+msgid "Called once during initialization."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:86
+msgid "Called whenever an [InputEvent] is received by the main loop."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:93
+msgid ""
+"Deprecated callback, does not do anything. Use [method _input_event] to "
+"parse text input. Will be removed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:100
+msgid ""
+"Called each physics frame with the time since the last physics frame as "
+"argument ([code]delta[/code], in seconds). Equivalent to [method Node."
+"_physics_process].\n"
+"If implemented, the method must return a boolean value. [code]true[/code] "
+"ends the main loop, while [code]false[/code] lets it proceed to the next "
+"frame."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:107
+msgid ""
+"Should not be called manually, override [method _finalize] instead. Will be "
+"removed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:114
+msgid ""
+"Should not be called manually, override [method _idle] instead. Will be "
+"removed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:120
+msgid ""
+"Should not be called manually, override [method _initialize] instead. Will "
+"be removed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:127
+msgid ""
+"Should not be called manually, override [method _input_event] instead. Will "
+"be removed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:134
+msgid ""
+"Should not be called manually, override [method _input_text] instead. Will "
+"be removed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:141
+msgid ""
+"Should not be called manually, override [method _iteration] instead. Will be "
+"removed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:150
+msgid "Emitted when a user responds to a permission request."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
+msgid ""
+"Notification received from the OS when the mouse enters the game window.\n"
+"Implemented on desktop and web platforms."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
+msgid ""
+"Notification received from the OS when the mouse leaves the game window.\n"
+"Implemented on desktop and web platforms."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
+msgid ""
+"Notification received from the OS when the game window is focused.\n"
+"Implemented on all platforms."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
+msgid ""
+"Notification received from the OS when the game window is unfocused.\n"
+"Implemented on all platforms."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
+msgid ""
+"Notification received from the OS when a quit request is sent (e.g. closing "
+"the window with a \"Close\" button or Alt+F4).\n"
+"Implemented on desktop platforms."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
+msgid ""
+"Notification received from the OS when a go back request is sent (e.g. "
+"pressing the \"Back\" button on Android).\n"
+"Specific to the Android platform."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
+msgid ""
+"Notification received from the OS when an unfocus request is sent (e.g. "
+"another OS window wants to take the focus).\n"
+"No supported platforms currently send this notification."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
+msgid ""
+"Notification received from the OS when the application is exceeding its "
+"allocated memory.\n"
+"Specific to the iOS platform."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
+msgid ""
+"Notification received when translations may have changed. Can be triggered "
+"by the user changing the locale. Can be used to respond to language changes, "
+"for example to change the UI strings on the fly. Useful when working with "
+"the built-in translation support, like [method Object.tr]."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
+msgid ""
+"Notification received from the OS when a request for \"About\" information "
+"is sent.\n"
+"Specific to the macOS platform."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
+msgid ""
+"Notification received from Godot's crash handler when the engine is about to "
+"crash.\n"
+"Implemented on desktop platforms if the crash handler is enabled."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
+msgid ""
+"Notification received from the OS when an update of the Input Method Engine "
+"occurs (e.g. change of IME cursor position or composition string).\n"
+"Specific to the macOS platform."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
+msgid ""
+"Notification received from the OS when the app is resumed.\n"
+"Specific to the Android platform."
+msgstr ""
+
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
+msgid ""
+"Notification received from the OS when the app is paused.\n"
+"Specific to the Android platform."
+msgstr ""
+
+#: doc/classes/MarginContainer.xml:4
+msgid "Simple margin container."
+msgstr ""
+
+#: doc/classes/MarginContainer.xml:7
+msgid ""
+"Adds a top, left, bottom, and right margin to all [Control] nodes that are "
+"direct children of the container. To control the [MarginContainer]'s margin, "
+"use the [code]margin_*[/code] theme properties listed below.\n"
+"[b]Note:[/b] Be careful, [Control] margin values are different than the "
+"constant margin values. If you want to change the custom margin values of "
+"the [MarginContainer] by code, you should use the following examples:\n"
+"[codeblock]\n"
+"# This code sample assumes the current script is extending MarginContainer.\n"
+"var margin_value = 100\n"
+"add_constant_override(\"margin_top\", margin_value)\n"
+"add_constant_override(\"margin_left\", margin_value)\n"
+"add_constant_override(\"margin_bottom\", margin_value)\n"
+"add_constant_override(\"margin_right\", margin_value)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/MarginContainer.xml:26
+msgid ""
+"All direct children of [MarginContainer] will have a bottom margin of "
+"[code]margin_bottom[/code] pixels."
+msgstr ""
+
+#: doc/classes/MarginContainer.xml:29
+msgid ""
+"All direct children of [MarginContainer] will have a left margin of "
+"[code]margin_left[/code] pixels."
+msgstr ""
+
+#: doc/classes/MarginContainer.xml:32
+msgid ""
+"All direct children of [MarginContainer] will have a right margin of "
+"[code]margin_right[/code] pixels."
+msgstr ""
+
+#: doc/classes/MarginContainer.xml:35
+msgid ""
+"All direct children of [MarginContainer] will have a top margin of "
+"[code]margin_top[/code] pixels."
+msgstr ""
+
+#: doc/classes/Marshalls.xml:4
+msgid "Data transformation (marshalling) and encoding helpers."
+msgstr ""
+
+#: doc/classes/Marshalls.xml:7
+msgid "Provides data transformation and encoding utility functions."
+msgstr ""
+
+#: doc/classes/Marshalls.xml:16
+msgid ""
+"Returns a decoded [PoolByteArray] corresponding to the Base64-encoded string "
+"[code]base64_str[/code]."
+msgstr ""
+
+#: doc/classes/Marshalls.xml:23
+msgid ""
+"Returns a decoded string corresponding to the Base64-encoded string "
+"[code]base64_str[/code]."
+msgstr ""
+
+#: doc/classes/Marshalls.xml:31
+msgid ""
+"Returns a decoded [Variant] corresponding to the Base64-encoded string "
+"[code]base64_str[/code]. If [code]allow_objects[/code] is [code]true[/code], "
+"decoding objects is allowed.\n"
+"[b]Warning:[/b] Deserialized objects can contain code which gets executed. "
+"Do not use this option if the serialized object comes from untrusted sources "
+"to avoid potential security threats such as remote code execution."
+msgstr ""
+
+#: doc/classes/Marshalls.xml:39
+msgid "Returns a Base64-encoded string of a given [PoolByteArray]."
+msgstr ""
+
+#: doc/classes/Marshalls.xml:46
+msgid ""
+"Returns a Base64-encoded string of the UTF-8 string [code]utf8_str[/code]."
+msgstr ""
+
+#: doc/classes/Marshalls.xml:54
+msgid ""
+"Returns a Base64-encoded string of the [Variant] [code]variant[/code]. If "
+"[code]full_objects[/code] is [code]true[/code], encoding objects is allowed "
+"(and can potentially include code)."
+msgstr ""
+
+#: doc/classes/Material.xml:4
+msgid "Abstract base [Resource] for coloring and shading geometry."
+msgstr ""
+
+#: doc/classes/Material.xml:7
+msgid ""
+"Material is a base [Resource] used for coloring and shading geometry. All "
+"materials inherit from it and almost all [VisualInstance] derived nodes "
+"carry a Material. A few flags and parameters are shared between all material "
+"types and are configured here."
+msgstr ""
+
+#: doc/classes/Material.xml:17
+msgid ""
+"Sets the [Material] to be used for the next pass. This renders the object "
+"again using a different material.\n"
+"[b]Note:[/b] This only applies to [SpatialMaterial]s and [ShaderMaterial]s "
+"with type \"Spatial\"."
+msgstr ""
+
+#: doc/classes/Material.xml:21
+msgid ""
+"Sets the render priority for transparent objects in 3D scenes. Higher "
+"priority objects will be sorted in front of lower priority objects.\n"
+"[b]Note:[/b] This only applies to sorting of transparent objects. This will "
+"not impact how transparent objects are sorted relative to opaque objects. "
+"This is because opaque objects are not sorted, while transparent objects are "
+"sorted from back to front (subject to priority)."
+msgstr ""
+
+#: doc/classes/Material.xml:27
+msgid "Maximum value for the [member render_priority] parameter."
+msgstr ""
+
+#: doc/classes/Material.xml:30
+msgid "Minimum value for the [member render_priority] parameter."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:4
+msgid "Special button that brings up a [PopupMenu] when clicked."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:7
+msgid ""
+"Special button that brings up a [PopupMenu] when clicked.\n"
+"New items can be created inside this [PopupMenu] using [code]get_popup()."
+"add_item(\"My Item Name\")[/code]. You can also create them directly from "
+"the editor. To do so, select the [MenuButton] node, then in the toolbar at "
+"the top of the 2D editor, click [b]Items[/b] then click [b]Add[/b] in the "
+"popup. You will be able to give each item new properties.\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:25
+msgid ""
+"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
+"the button."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:34
+msgid ""
+"If [code]true[/code], when the cursor hovers above another [MenuButton] "
+"within the same parent which also has [code]switch_on_hover[/code] enabled, "
+"it will close the current [MenuButton] and open the other one."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:41
+msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:49
+msgid "[StyleBox] used when the [MenuButton] is disabled."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:52
+msgid ""
+"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
+"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
+"visual effect."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:55
+msgid "[Font] of the [MenuButton]'s text."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:58
+msgid "Default text [Color] of the [MenuButton]."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:61
+msgid "Text [Color] used when the [MenuButton] is disabled."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:64
+msgid "Text [Color] used when the [MenuButton] is being hovered."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:67
+msgid "Text [Color] used when the [MenuButton] is being pressed."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:70
+msgid "[StyleBox] used when the [MenuButton] is being hovered."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:73
+msgid "The horizontal space between [MenuButton]'s icon and text."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:76
+msgid "Default [StyleBox] for the [MenuButton]."
+msgstr ""
+
+#: doc/classes/MenuButton.xml:79
+msgid "[StyleBox] used when the [MenuButton] is being pressed."
+msgstr ""
+
+#: doc/classes/Mesh.xml:4
+msgid "A [Resource] that contains vertex array-based geometry."
+msgstr ""
+
+#: doc/classes/Mesh.xml:7
+msgid ""
+"Mesh is a type of [Resource] that contains vertex array-based geometry, "
+"divided in [i]surfaces[/i]. Each surface contains a completely separate "
+"array and a material used to draw it. Design wise, a mesh with multiple "
+"surfaces is preferred to a single surface, because objects created in 3D "
+"editing software commonly contain multiple materials."
+msgstr ""
+
+#: doc/classes/Mesh.xml:21
+msgid ""
+"Calculate a [ConvexPolygonShape] from the mesh.\n"
+"If [code]clean[/code] is [code]true[/code] (default), duplicate and interior "
+"vertices are removed automatically. You can set it to [code]false[/code] to "
+"make the process faster if not needed.\n"
+"If [code]simplify[/code] is [code]true[/code], the geometry can be further "
+"simplified to reduce the amount of vertices. Disabled by default."
+msgstr ""
+
+#: doc/classes/Mesh.xml:30
+msgid ""
+"Calculate an outline mesh at a defined offset (margin) from the original "
+"mesh.\n"
+"[b]Note:[/b] This method typically returns the vertices in reverse order (e."
+"g. clockwise to counterclockwise)."
+msgstr ""
+
+#: doc/classes/Mesh.xml:37
+msgid "Calculate a [ConcavePolygonShape] from the mesh."
+msgstr ""
+
+#: doc/classes/Mesh.xml:43
+msgid "Generate a [TriangleMesh] from the mesh."
+msgstr ""
+
+#: doc/classes/Mesh.xml:49
+msgid ""
+"Returns the smallest [AABB] enclosing this mesh in local space. Not affected "
+"by [code]custom_aabb[/code]. See also [method VisualInstance."
+"get_transformed_aabb].\n"
+"[b]Note:[/b] This is only implemented for [ArrayMesh] and [PrimitiveMesh]."
+msgstr ""
+
+#: doc/classes/Mesh.xml:56
+msgid ""
+"Returns all the vertices that make up the faces of the mesh. Each three "
+"vertices represent one triangle."
+msgstr ""
+
+#: doc/classes/Mesh.xml:62
+msgid "Returns the amount of surfaces that the [Mesh] holds."
+msgstr ""
+
+#: doc/classes/Mesh.xml:69
+msgid ""
+"Returns the arrays for the vertices, normals, uvs, etc. that make up the "
+"requested surface (see [method ArrayMesh.add_surface_from_arrays])."
+msgstr ""
+
+#: doc/classes/Mesh.xml:76
+msgid "Returns the blend shape arrays for the requested surface."
+msgstr ""
+
+#: doc/classes/Mesh.xml:83
+msgid ""
+"Returns a [Material] in a given surface. Surface is rendered using this "
+"material."
+msgstr ""
+
+#: doc/classes/Mesh.xml:91
+msgid ""
+"Sets a [Material] for a given surface. Surface will be rendered using this "
+"material."
+msgstr ""
+
+#: doc/classes/Mesh.xml:97
+msgid ""
+"Sets a hint to be used for lightmap resolution in [BakedLightmap]. Overrides "
+"[member BakedLightmap.default_texels_per_unit]."
+msgstr ""
+
+#: doc/classes/Mesh.xml:102
+msgid "Render array as points (one vertex equals one point)."
+msgstr ""
+
+#: doc/classes/Mesh.xml:105
+msgid "Render array as lines (every two vertices a line is created)."
+msgstr ""
+
+#: doc/classes/Mesh.xml:108
+msgid "Render array as line strip."
+msgstr ""
+
+#: doc/classes/Mesh.xml:111
+msgid "Render array as line loop (like line strip, but closed)."
+msgstr ""
+
+#: doc/classes/Mesh.xml:114
+msgid "Render array as triangles (every three vertices a triangle is created)."
+msgstr ""
+
+#: doc/classes/Mesh.xml:117
+msgid "Render array as triangle strips."
+msgstr ""
+
+#: doc/classes/Mesh.xml:120
+msgid "Render array as triangle fans."
+msgstr ""
+
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
+msgid "Blend shapes are normalized."
+msgstr ""
+
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
+msgid "Blend shapes are relative to base weight."
+msgstr ""
+
+#: doc/classes/Mesh.xml:129
+msgid ""
+"Mesh array contains vertices. All meshes require a vertex array so this "
+"should always be present."
+msgstr ""
+
+#: doc/classes/Mesh.xml:132
+msgid "Mesh array contains normals."
+msgstr ""
+
+#: doc/classes/Mesh.xml:135
+msgid "Mesh array contains tangents."
+msgstr ""
+
+#: doc/classes/Mesh.xml:138
+msgid "Mesh array contains colors."
+msgstr ""
+
+#: doc/classes/Mesh.xml:141
+msgid "Mesh array contains UVs."
+msgstr ""
+
+#: doc/classes/Mesh.xml:144
+msgid "Mesh array contains second UV."
+msgstr ""
+
+#: doc/classes/Mesh.xml:147
+msgid "Mesh array contains bones."
+msgstr ""
+
+#: doc/classes/Mesh.xml:150
+msgid "Mesh array contains bone weights."
+msgstr ""
+
+#: doc/classes/Mesh.xml:153
+msgid "Mesh array uses indices."
+msgstr ""
+
+#: doc/classes/Mesh.xml:156
+msgid ""
+"Used internally to calculate other [code]ARRAY_COMPRESS_*[/code] enum "
+"values. Do not use."
+msgstr ""
+
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
+msgid "Flag used to mark a compressed (half float) vertex array."
+msgstr ""
+
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
+msgid "Flag used to mark a compressed (half float) normal array."
+msgstr ""
+
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
+msgid "Flag used to mark a compressed (half float) tangent array."
+msgstr ""
+
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
+msgid "Flag used to mark a compressed (half float) color array."
+msgstr ""
+
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
+msgid "Flag used to mark a compressed (half float) UV coordinates array."
+msgstr ""
+
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
+msgid ""
+"Flag used to mark a compressed (half float) UV coordinates array for the "
+"second UV coordinates."
+msgstr ""
+
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
+msgid "Flag used to mark a compressed bone array."
+msgstr ""
+
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
+msgid "Flag used to mark a compressed (half float) weight array."
+msgstr ""
+
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
+msgid "Flag used to mark a compressed index array."
+msgstr ""
+
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
+msgid "Flag used to mark that the array contains 2D vertices."
+msgstr ""
+
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
+msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
+msgstr ""
+
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
+msgid ""
+"Flag used to mark that the array uses an octahedral representation of normal "
+"and tangent vectors rather than cartesian."
+msgstr ""
+
+#: doc/classes/Mesh.xml:195
+msgid ""
+"Used to set flags [constant ARRAY_COMPRESS_VERTEX], [constant "
+"ARRAY_COMPRESS_NORMAL], [constant ARRAY_COMPRESS_TANGENT], [constant "
+"ARRAY_COMPRESS_COLOR], [constant ARRAY_COMPRESS_TEX_UV], [constant "
+"ARRAY_COMPRESS_TEX_UV2], [constant ARRAY_COMPRESS_WEIGHTS], and [constant "
+"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
+msgstr ""
+
+#: doc/classes/Mesh.xml:198
+msgid "Array of vertices."
+msgstr ""
+
+#: doc/classes/Mesh.xml:201
+msgid "Array of normals."
+msgstr ""
+
+#: doc/classes/Mesh.xml:204
+msgid "Array of tangents as an array of floats, 4 floats per tangent."
+msgstr ""
+
+#: doc/classes/Mesh.xml:207
+msgid "Array of colors."
+msgstr ""
+
+#: doc/classes/Mesh.xml:210
+msgid "Array of UV coordinates."
+msgstr ""
+
+#: doc/classes/Mesh.xml:213
+msgid "Array of second set of UV coordinates."
+msgstr ""
+
+#: doc/classes/Mesh.xml:216
+msgid "Array of bone data."
+msgstr ""
+
+#: doc/classes/Mesh.xml:219
+msgid "Array of weights."
+msgstr ""
+
+#: doc/classes/Mesh.xml:222
+msgid "Array of indices."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:4
+msgid "Helper tool to access and edit [Mesh] data."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:7
+msgid ""
+"MeshDataTool provides access to individual vertices in a [Mesh]. It allows "
+"users to read and edit vertex data of meshes. It also creates an array of "
+"faces and edges.\n"
+"To use MeshDataTool, load a mesh with [method create_from_surface]. When you "
+"are finished editing the data commit the data to a mesh with [method "
+"commit_to_surface].\n"
+"Below is an example of how MeshDataTool may be used.\n"
+"[codeblock]\n"
+"var mesh = ArrayMesh.new()\n"
+"mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, CubeMesh.new()."
+"get_mesh_arrays())\n"
+"var mdt = MeshDataTool.new()\n"
+"mdt.create_from_surface(mesh, 0)\n"
+"for i in range(mdt.get_vertex_count()):\n"
+" var vertex = mdt.get_vertex(i)\n"
+" # In this example we extend the mesh by one unit, which results in "
+"separated faces as it is flat shaded.\n"
+" vertex += mdt.get_vertex_normal(i)\n"
+" # Save your change.\n"
+" mdt.set_vertex(i, vertex)\n"
+"mesh.surface_remove(0)\n"
+"mdt.commit_to_surface(mesh)\n"
+"var mi = MeshInstance.new()\n"
+"mi.mesh = mesh\n"
+"add_child(mi)\n"
+"[/codeblock]\n"
+"See also [ArrayMesh], [ImmediateGeometry] and [SurfaceTool] for procedural "
+"geometry generation.\n"
+"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-"
+"OpenGL/Face-culling]winding order[/url] for front faces of triangle "
+"primitive modes."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:36
+msgid "Clears all data currently in MeshDataTool."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:43
+msgid "Adds a new surface to specified [Mesh] with edited data."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:51
+msgid ""
+"Uses specified surface of given [Mesh] to populate data for MeshDataTool.\n"
+"Requires [Mesh] with primitive type [constant Mesh.PRIMITIVE_TRIANGLES]."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:58
+msgid "Returns the number of edges in this [Mesh]."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:65
+msgid "Returns array of faces that touch given edge."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:72
+msgid "Returns meta information assigned to given edge."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:80
+msgid ""
+"Returns index of specified vertex connected to given edge.\n"
+"Vertex argument can only be 0 or 1 because edges are comprised of two "
+"vertices."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:87
+msgid "Returns the number of faces in this [Mesh]."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:95
+msgid ""
+"Returns specified edge associated with given face.\n"
+"Edge argument must 2 or less because a face only has three edges."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:103
+msgid "Returns the metadata associated with the given face."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:110
+msgid "Calculates and returns the face normal of the given face."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:118
+msgid ""
+"Returns the specified vertex of the given face.\n"
+"Vertex argument must be 2 or less because faces contain three vertices."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:125
+msgid ""
+"Returns the [Mesh]'s format. Format is an integer made up of [Mesh] format "
+"flags combined together. For example, a mesh containing both vertices and "
+"normals would return a format of [code]3[/code] because [constant ArrayMesh."
+"ARRAY_FORMAT_VERTEX] is [code]1[/code] and [constant ArrayMesh."
+"ARRAY_FORMAT_NORMAL] is [code]2[/code].\n"
+"See [enum ArrayMesh.ArrayFormat] for a list of format flags."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:132
+msgid "Returns the material assigned to the [Mesh]."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:139
+msgid "Returns the vertex at given index."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:146
+msgid "Returns the bones of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:153
+msgid "Returns the color of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:159
+msgid "Returns the total number of vertices in [Mesh]."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:166
+msgid "Returns an array of edges that share the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:173
+msgid "Returns an array of faces that share the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:180
+msgid "Returns the metadata associated with the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:187
+msgid "Returns the normal of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:194
+msgid "Returns the tangent of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:201
+msgid "Returns the UV of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:208
+msgid "Returns the UV2 of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:215
+msgid "Returns bone weights of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:223
+msgid "Sets the metadata of the given edge."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:231
+msgid "Sets the metadata of the given face."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:238
+msgid "Sets the material to be used by newly-constructed [Mesh]."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:246
+msgid "Sets the position of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:254
+msgid "Sets the bones of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:262
+msgid "Sets the color of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:270
+msgid "Sets the metadata associated with the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:278
+msgid "Sets the normal of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:286
+msgid "Sets the tangent of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:294
+msgid "Sets the UV of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:302
+msgid "Sets the UV2 of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshDataTool.xml:310
+msgid "Sets the bone weights of the given vertex."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:4
+msgid "Node that instances meshes into a scenario."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:7
+msgid ""
+"MeshInstance is a node that takes a [Mesh] resource and adds it to the "
+"current scenario by creating an instance of it. This is the class most often "
+"used to get 3D geometry rendered and can be used to instance a single [Mesh] "
+"in many places. This allows to reuse geometry and save on resources. When a "
+"[Mesh] has to be instanced more than thousands of times at close proximity, "
+"consider using a [MultiMesh] in a [MultiMeshInstance] instead."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:21
+msgid ""
+"This helper creates a [StaticBody] child node with a [ConvexPolygonShape] "
+"collision shape calculated from the mesh geometry. It's mainly used for "
+"testing.\n"
+"If [code]clean[/code] is [code]true[/code] (default), duplicate and interior "
+"vertices are removed automatically. You can set it to [code]false[/code] to "
+"make the process faster if not needed.\n"
+"If [code]simplify[/code] is [code]true[/code], the geometry can be further "
+"simplified to reduce the amount of vertices. Disabled by default."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:29
+msgid ""
+"This helper creates a [MeshInstance] child node with gizmos at every vertex "
+"calculated from the mesh geometry. It's mainly used for testing."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:35
+msgid ""
+"This helper creates a [StaticBody] child node with multiple "
+"[ConvexPolygonShape] collision shapes calculated from the mesh geometry via "
+"convex decomposition. It's mainly used for testing."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:41
+msgid ""
+"This helper creates a [StaticBody] child node with a [ConcavePolygonShape] "
+"collision shape calculated from the mesh geometry. It's mainly used for "
+"testing."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:48
+msgid ""
+"Returns the [Material] that will be used by the [Mesh] when drawing. This "
+"can return the [member GeometryInstance.material_override], the surface "
+"override [Material] defined in this [MeshInstance], or the surface "
+"[Material] defined in the [Mesh]. For example, if [member GeometryInstance."
+"material_override] is used, all surfaces will return the override material."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:55
+msgid "Returns the [Material] for a surface of the [Mesh] resource."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:61
+msgid "Returns the number of surface materials."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:69
+msgid "Sets the [Material] for a surface of the [Mesh] resource."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:75
+msgid "The [Mesh] resource for the instance."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:78
+msgid "[NodePath] to the [Skeleton] associated with the instance."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:81
+msgid "Sets the skin to be used by this instance."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml:84
+msgid ""
+"If [code]true[/code], normals are transformed when software skinning is "
+"used. Set to [code]false[/code] when normals are not needed for better "
+"performance.\n"
+"See [member ProjectSettings.rendering/quality/skinning/"
+"software_skinning_fallback] for details about how software skinning is "
+"enabled."
+msgstr ""
+
+#: doc/classes/MeshInstance2D.xml:4
+msgid "Node used for displaying a [Mesh] in 2D."
+msgstr ""
+
+#: doc/classes/MeshInstance2D.xml:7
+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\"."
+msgstr ""
+
+#: doc/classes/MeshInstance2D.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/2d/2d_meshes.html"
+msgstr ""
+
+#: doc/classes/MeshInstance2D.xml:16
+msgid "The [Mesh] that will be drawn by the [MeshInstance2D]."
+msgstr ""
+
+#: doc/classes/MeshInstance2D.xml:19 doc/classes/MultiMeshInstance2D.xml:19
+msgid ""
+"The normal map that will be used if using the default [CanvasItemMaterial].\n"
+"[b]Note:[/b] Godot expects the normal map to use X+, Y-, and Z+ coordinates. "
+"See [url=http://wiki.polycount.com/wiki/"
+"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for "
+"a comparison of normal map coordinates expected by popular engines."
+msgstr ""
+
+#: doc/classes/MeshInstance2D.xml:23 doc/classes/MultiMeshInstance2D.xml:23
+msgid ""
+"The [Texture] that will be used if using the default [CanvasItemMaterial]. "
+"Can be accessed as [code]TEXTURE[/code] in CanvasItem shader."
+msgstr ""
+
+#: doc/classes/MeshInstance2D.xml:29 doc/classes/MultiMeshInstance2D.xml:29
+msgid "Emitted when the [member texture] is changed."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:4
+msgid "Library of meshes."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:7
+msgid ""
+"A library of meshes. Contains a list of [Mesh] resources, each with a name "
+"and ID. Each item can also include collision and navigation shapes. This "
+"resource is used in [GridMap]."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:17
+msgid "Clears the library."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:24
+msgid ""
+"Creates a new item in the library with the given ID.\n"
+"You can get an unused ID from [method get_last_unused_item_id]."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:32
+msgid "Returns the first item with the given name."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:38
+msgid "Returns the list of item IDs in use."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:45
+msgid "Returns the item's mesh."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:52
+msgid "Returns the transform applied to the item's mesh."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:59
+msgid "Returns the item's name."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:66
+msgid "Returns the item's navigation mesh."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:73
+msgid "Returns the transform applied to the item's navigation mesh."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:80
+msgid ""
+"When running in the editor, returns a generated item preview (a 3D rendering "
+"in isometric perspective). When used in a running project, returns the "
+"manually-defined item preview which can be set using [method "
+"set_item_preview]. Returns an empty [Texture] if no preview was manually set "
+"in a running project."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:87
+msgid ""
+"Returns an item's collision shapes.\n"
+"The array consists of each [Shape] followed by its [Transform]."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:94
+msgid "Gets an unused ID for a new item."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:101
+msgid "Removes the item."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:109
+msgid "Sets the item's mesh."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:117
+msgid "Sets the transform to apply to the item's mesh."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:125
+msgid ""
+"Sets the item's name.\n"
+"This name is shown in the editor. It can also be used to look up the item "
+"later using [method find_item_by_name]."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:134
+msgid "Sets the item's navigation mesh."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:142
+msgid "Sets the transform to apply to the item's navigation mesh."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:150
+msgid "Sets a texture to use as the item's preview icon in the editor."
+msgstr ""
+
+#: doc/classes/MeshLibrary.xml:158
+msgid ""
+"Sets an item's collision shapes.\n"
+"The array should consist of [Shape] objects, each followed by a [Transform] "
+"that will be applied to it. For shapes that should not have a transform, use "
+"[constant Transform.IDENTITY]."
+msgstr ""
+
+#: doc/classes/MeshTexture.xml:4
+msgid "Simple texture that uses a mesh to draw itself."
+msgstr ""
+
+#: doc/classes/MeshTexture.xml:7
+msgid ""
+"Simple texture that uses a mesh to draw itself. It's limited because flags "
+"can't be changed and region drawing is not supported."
+msgstr ""
+
+#: doc/classes/MeshTexture.xml:15
+msgid "Sets the base texture that the Mesh will use to draw."
+msgstr ""
+
+#: doc/classes/MeshTexture.xml:19
+msgid "Sets the size of the image, needed for reference."
+msgstr ""
+
+#: doc/classes/MeshTexture.xml:22
+msgid "Sets the mesh used to draw. It must be a mesh using 2D vertices."
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:4
+msgid "Generic mobile VR implementation."
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:7
+msgid ""
+"This is a generic mobile VR implementation where you need to provide details "
+"about the phone and HMD used. It does not rely on any existing framework. "
+"This is the most basic interface we have. For the best effect, you need a "
+"mobile phone with a gyroscope and accelerometer.\n"
+"Note that even though there is no positional tracking, the camera will "
+"assume the headset is at a height of 1.85 meters. You can change this by "
+"setting [member eye_height].\n"
+"You can initialise this interface as follows:\n"
+"[codeblock]\n"
+"var interface = ARVRServer.find_interface(\"Native mobile\")\n"
+"if interface and interface.initialize():\n"
+" get_viewport().arvr = true\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:22
+msgid ""
+"The distance between the display and the lenses inside of the device in "
+"centimeters."
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:25
+msgid "The width of the display in centimeters."
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:28
+msgid ""
+"The height at which the camera is placed in relation to the ground (i.e. "
+"[ARVROrigin] node)."
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:31
+msgid ""
+"The interocular distance, also known as the interpupillary distance. The "
+"distance between the pupils of the left and right eye."
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:34
+msgid ""
+"The k1 lens factor is one of the two constants that define the strength of "
+"the lens used and directly influences the lens distortion effect."
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:37
+msgid "The k2 lens factor, see k1."
+msgstr ""
+
+#: modules/mobile_vr/doc_classes/MobileVRInterface.xml:40
+msgid ""
+"The oversample setting. Because of the lens distortion we have to render our "
+"buffers at a higher resolution then the screen can natively handle. A value "
+"between 1.5 and 2.0 often provides good results but at the cost of "
+"performance."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:4
+msgid "Provides high-performance mesh instancing."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:7
+msgid ""
+"MultiMesh provides low-level mesh instancing. Drawing thousands of "
+"[MeshInstance] nodes can be slow, since each object is submitted to the GPU "
+"then drawn individually.\n"
+"MultiMesh is much faster as it can draw thousands of instances with a single "
+"draw call, resulting in less API overhead.\n"
+"As a drawback, if the instances are too far away from each other, "
+"performance may be reduced as every single instance will always render (they "
+"are spatially indexed as one, for the whole object).\n"
+"Since instances may have any behavior, the AABB used for visibility must be "
+"provided by the user."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:13 doc/classes/MultiMeshInstance.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/3d/vertex_animation/"
+"animating_thousands_of_fish.html"
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:14 doc/classes/MultiMeshInstance.xml:13
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/optimization/using_multimesh."
+"html"
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:20
+msgid ""
+"Returns the visibility axis-aligned bounding box in local space. See also "
+"[method VisualInstance.get_transformed_aabb]."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:27
+msgid "Gets a specific instance's color."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:34
+msgid "Returns the custom data that has been set for a specific instance."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:41
+msgid "Returns the [Transform] of a specific instance."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:48
+msgid "Returns the [Transform2D] of a specific instance."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:55
+msgid ""
+"Sets all data related to the instances in one go. This is especially useful "
+"when loading the data from disk or preparing the data from GDNative.\n"
+"All data is packed in one large float array. An array may look like this: "
+"Transform for instance 1, color data for instance 1, custom data for "
+"instance 1, transform for instance 2, color data for instance 2, etc...\n"
+"[Transform] is stored as 12 floats, [Transform2D] is stored as 8 floats, "
+"[code]COLOR_8BIT[/code] / [code]CUSTOM_DATA_8BIT[/code] is stored as 1 float "
+"(4 bytes as is) and [code]COLOR_FLOAT[/code] / [code]CUSTOM_DATA_FLOAT[/"
+"code] is stored as 4 floats."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:65
+msgid ""
+"Sets the color of a specific instance by [i]multiplying[/i] the mesh's "
+"existing vertex colors.\n"
+"For the color to take effect, ensure that [member color_format] is non-"
+"[code]null[/code] on the [MultiMesh] and [member SpatialMaterial."
+"vertex_color_use_as_albedo] is [code]true[/code] on the material."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:74
+msgid ""
+"Sets custom data for a specific instance. Although [Color] is used, it is "
+"just a container for 4 floating point numbers. The format of the number can "
+"change depending on the [enum CustomDataFormat] used."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:82
+msgid "Sets the [Transform] for a specific instance."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:90
+msgid "Sets the [Transform2D] for a specific instance."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:96
+msgid "Format of colors in color array that gets passed to shader."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:99
+msgid "Format of custom data in custom data array that gets passed to shader."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:102
+msgid ""
+"Number of instances that will get drawn. This clears and (re)sizes the "
+"buffers. By default, all instances are drawn but you can limit this with "
+"[member visible_instance_count]."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:105
+msgid "Mesh to be drawn."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:108
+msgid "Format of transform used to transform mesh, either 2D or 3D."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:111
+msgid ""
+"Limits the number of instances drawn, -1 draws all instances. Changing this "
+"does not change the sizes of the buffers."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:116
+msgid "Use this when using 2D transforms."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:119
+msgid "Use this when using 3D transforms."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:122
+msgid "Use when you are not using per-instance [Color]s."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:125
+msgid ""
+"Compress [Color] data into 8 bits when passing to shader. This uses less "
+"memory and can be faster, but the [Color] loses precision."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:128
+msgid ""
+"The [Color] passed into [method set_instance_color] will use 4 floats. Use "
+"this for highest precision [Color]."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:131
+msgid "Use when you are not using per-instance custom data."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:134
+msgid ""
+"Compress custom_data into 8 bits when passing to shader. This uses less "
+"memory and can be faster, but loses precision and range. Floats packed into "
+"8 bits can only represent values between 0 and 1, numbers outside that range "
+"will be clamped."
+msgstr ""
+
+#: doc/classes/MultiMesh.xml:137
+msgid ""
+"The [Color] passed into [method set_instance_custom_data] will use 4 floats. "
+"Use this for highest precision."
+msgstr ""
+
+#: doc/classes/MultiMeshInstance.xml:4
+msgid "Node that instances a [MultiMesh]."
+msgstr ""
+
+#: doc/classes/MultiMeshInstance.xml:7
+msgid ""
+"[MultiMeshInstance] is a specialized node to instance [GeometryInstance]s "
+"based on a [MultiMesh] resource.\n"
+"This is useful to optimize the rendering of a high amount of instances of a "
+"given mesh (for example trees in a forest or grass strands)."
+msgstr ""
+
+#: doc/classes/MultiMeshInstance.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/3d/using_multi_mesh_instance."
+"html"
+msgstr ""
+
+#: doc/classes/MultiMeshInstance.xml:19
+msgid ""
+"The [MultiMesh] resource that will be used and shared among all instances of "
+"the [MultiMeshInstance]."
+msgstr ""
+
+#: doc/classes/MultiMeshInstance2D.xml:4
+msgid "Node that instances a [MultiMesh] in 2D."
+msgstr ""
+
+#: doc/classes/MultiMeshInstance2D.xml:7
+msgid ""
+"[MultiMeshInstance2D] is a specialized node to instance a [MultiMesh] "
+"resource in 2D.\n"
+"Usage is the same as [MultiMeshInstance]."
+msgstr ""
+
+#: doc/classes/MultiMeshInstance2D.xml:16
+msgid "The [MultiMesh] that will be drawn by the [MultiMeshInstance2D]."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:4
+msgid "High-level multiplayer API."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:7
+msgid ""
+"This class implements most of the logic behind the high-level multiplayer "
+"API. See also [NetworkedMultiplayerPeer].\n"
+"By default, [SceneTree] has a reference to this class that is used to "
+"provide multiplayer capabilities (i.e. RPC/RSET) across the whole scene.\n"
+"It is possible to override the MultiplayerAPI instance used by specific "
+"Nodes by setting the [member Node.custom_multiplayer] property, effectively "
+"allowing to run both client and server in the same scene.\n"
+"[b]Note:[/b] The high-level multiplayer API protocol is an implementation "
+"detail and isn't meant to be used by non-Godot servers. It may change "
+"without notice."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:18
+msgid ""
+"Clears the current MultiplayerAPI network state (you shouldn't call this "
+"unless you know what you are doing)."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:24
+msgid ""
+"Returns the peer IDs of all connected peers of this MultiplayerAPI's [member "
+"network_peer]."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:30
+msgid ""
+"Returns the unique peer ID of this MultiplayerAPI's [member network_peer]."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:36
+msgid ""
+"Returns the sender's peer ID for the RPC currently being executed.\n"
+"[b]Note:[/b] If not inside an RPC this method will return 0."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
+msgid "Returns [code]true[/code] if there is a [member network_peer] set."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:49
+msgid ""
+"Returns [code]true[/code] if this MultiplayerAPI's [member network_peer] is "
+"in server mode (listening for connections)."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:55
+msgid ""
+"Method used for polling the MultiplayerAPI. You only need to worry about "
+"this if you are using [member Node.custom_multiplayer] override or you set "
+"[member SceneTree.multiplayer_poll] to [code]false[/code]. By default, "
+"[SceneTree] will poll its MultiplayerAPI for you.\n"
+"[b]Note:[/b] This method results in RPCs and RSETs being called, so they "
+"will be executed in the same context of this function (e.g. [code]_process[/"
+"code], [code]physics[/code], [Thread])."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:65
+msgid ""
+"Sends the given raw [code]bytes[/code] to a specific peer identified by "
+"[code]id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer]). "
+"Default ID is [code]0[/code], i.e. broadcast to all peers."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:71
+msgid ""
+"If [code]true[/code] (or if the [member network_peer] has [member PacketPeer."
+"allow_object_decoding] set to [code]true[/code]), the MultiplayerAPI will "
+"allow encoding and decoding of object during RPCs/RSETs.\n"
+"[b]Warning:[/b] Deserialized objects can contain code which gets executed. "
+"Do not use this option if the serialized object comes from untrusted sources "
+"to avoid potential security threats such as remote code execution."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:75
+msgid ""
+"The peer object to handle the RPC system (effectively enabling networking "
+"when set). Depending on the peer itself, the MultiplayerAPI will become a "
+"network server (check with [method is_network_server]) and will set root "
+"node's network mode to master, or it will become a regular peer with root "
+"node set to puppet. All child nodes are set to inherit the network mode by "
+"default. Handling of networking-related events (connection, disconnection, "
+"new clients) is done by connecting to MultiplayerAPI's signals."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:78
+msgid ""
+"If [code]true[/code], the MultiplayerAPI's [member network_peer] refuses new "
+"incoming connections."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:81
+msgid ""
+"The root node to use for RPCs. Instead of an absolute path, a relative path "
+"will be used to find the node upon which the RPC should be executed.\n"
+"This effectively allows to have different branches of the scene tree to be "
+"managed by different MultiplayerAPI, allowing for example to run both client "
+"and server in the same scene."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:88
+msgid ""
+"Emitted when this MultiplayerAPI's [member network_peer] successfully "
+"connected to a server. Only emitted on clients."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:93
+msgid ""
+"Emitted when this MultiplayerAPI's [member network_peer] fails to establish "
+"a connection to a server. Only emitted on clients."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:99
+msgid ""
+"Emitted when this MultiplayerAPI's [member network_peer] connects with a new "
+"peer. ID is the peer ID of the new peer. Clients get notified when other "
+"clients connect to the same server. Upon connecting to a server, a client "
+"also receives this signal for the server (with ID being 1)."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:105
+msgid ""
+"Emitted when this MultiplayerAPI's [member network_peer] disconnects from a "
+"peer. Clients get notified when other clients disconnect from the same "
+"server."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:112
+msgid ""
+"Emitted when this MultiplayerAPI's [member network_peer] receive a "
+"[code]packet[/code] with custom data (see [method send_bytes]). ID is the "
+"peer ID of the peer that sent the packet."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:117
+msgid ""
+"Emitted when this MultiplayerAPI's [member network_peer] disconnects from "
+"server. Only emitted on clients."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:123
+msgid ""
+"Used with [method Node.rpc_config] or [method Node.rset_config] to disable a "
+"method or property for all RPC calls, making it unavailable. Default for all "
+"methods."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:126
+msgid ""
+"Used with [method Node.rpc_config] or [method Node.rset_config] to set a "
+"method to be called or a property to be changed only on the remote end, not "
+"locally. Analogous to the [code]remote[/code] keyword. Calls and property "
+"changes are accepted from all remote peers, no matter if they are node's "
+"master or puppets."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:129
+msgid ""
+"Used with [method Node.rpc_config] or [method Node.rset_config] to set a "
+"method to be called or a property to be changed only on the network master "
+"for this node. Analogous to the [code]master[/code] keyword. Only accepts "
+"calls or property changes from the node's network puppets, see [method Node."
+"set_network_master]."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:132
+msgid ""
+"Used with [method Node.rpc_config] or [method Node.rset_config] to set a "
+"method to be called or a property to be changed only on puppets for this "
+"node. Analogous to the [code]puppet[/code] keyword. Only accepts calls or "
+"property changes from the node's network master, see [method Node."
+"set_network_master]."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:135
+msgid ""
+"[i]Deprecated.[/i] Use [constant RPC_MODE_PUPPET] instead. Analogous to the "
+"[code]slave[/code] keyword."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:138
+msgid ""
+"Behave like [constant RPC_MODE_REMOTE] but also make the call or property "
+"change locally. Analogous to the [code]remotesync[/code] keyword."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:141
+msgid ""
+"[i]Deprecated.[/i] Use [constant RPC_MODE_REMOTESYNC] instead. Analogous to "
+"the [code]sync[/code] keyword."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:144
+msgid ""
+"Behave like [constant RPC_MODE_MASTER] but also make the call or property "
+"change locally. Analogous to the [code]mastersync[/code] keyword."
+msgstr ""
+
+#: doc/classes/MultiplayerAPI.xml:147
+msgid ""
+"Behave like [constant RPC_MODE_PUPPET] but also make the call or property "
+"change locally. Analogous to the [code]puppetsync[/code] keyword."
+msgstr ""
+
+#: doc/classes/Mutex.xml:4
+msgid "A synchronization mutex (mutual exclusion)."
+msgstr ""
+
+#: doc/classes/Mutex.xml:7
+msgid ""
+"A synchronization mutex (mutual exclusion). This is used to synchronize "
+"multiple [Thread]s, and is equivalent to a binary [Semaphore]. It guarantees "
+"that only one thread can ever acquire the lock at a time. A mutex can be "
+"used to protect a critical section; however, be careful to avoid deadlocks."
+msgstr ""
+
+#: doc/classes/Mutex.xml:10 doc/classes/Semaphore.xml:10
+#: doc/classes/Thread.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/threads/using_multiple_threads."
+"html"
+msgstr ""
+
+#: doc/classes/Mutex.xml:16
+msgid ""
+"Locks this [Mutex], blocks until it is unlocked by the current owner.\n"
+"[b]Note:[/b] This function returns without blocking if the thread already "
+"has ownership of the mutex."
+msgstr ""
+
+#: doc/classes/Mutex.xml:23
+msgid ""
+"Tries locking this [Mutex], but does not block. Returns [constant OK] on "
+"success, [constant ERR_BUSY] otherwise.\n"
+"[b]Note:[/b] This function returns [constant OK] if the thread already has "
+"ownership of the mutex."
+msgstr ""
+
+#: doc/classes/Mutex.xml:30
+msgid ""
+"Unlocks this [Mutex], leaving it to other threads.\n"
+"[b]Note:[/b] If a thread called [method lock] or [method try_lock] multiple "
+"times while already having ownership of the mutex, it must also call [method "
+"unlock] the same number of times in order to unlock it correctly."
+msgstr ""
+
+#: modules/gdnative/doc_classes/NativeScript.xml:13
+msgid ""
+"Returns the documentation string that was previously set with "
+"[code]godot_nativescript_set_class_documentation[/code]."
+msgstr ""
+
+#: modules/gdnative/doc_classes/NativeScript.xml:20
+msgid ""
+"Returns the documentation string that was previously set with "
+"[code]godot_nativescript_set_method_documentation[/code]."
+msgstr ""
+
+#: modules/gdnative/doc_classes/NativeScript.xml:27
+msgid ""
+"Returns the documentation string that was previously set with "
+"[code]godot_nativescript_set_property_documentation[/code]."
+msgstr ""
+
+#: modules/gdnative/doc_classes/NativeScript.xml:34
+msgid ""
+"Returns the documentation string that was previously set with "
+"[code]godot_nativescript_set_signal_documentation[/code]."
+msgstr ""
+
+#: modules/gdnative/doc_classes/NativeScript.xml:40
+msgid ""
+"Constructs a new object of the base type with a script of this type already "
+"attached.\n"
+"[b]Note:[/b] Any arguments passed to this function will be ignored and not "
+"passed to the native constructor function. This will change with in a future "
+"API extension."
+msgstr ""
+
+#: doc/classes/Navigation.xml:4
+msgid "Mesh-based navigation and pathfinding node."
+msgstr ""
+
+#: doc/classes/Navigation.xml:7
+msgid ""
+"Provides navigation and pathfinding within a collection of "
+"[NavigationMesh]es. By default, these will be automatically collected from "
+"child [NavigationMeshInstance] nodes, but they can also be added on the fly "
+"with [method navmesh_add]. In addition to basic pathfinding, this class also "
+"assists with aligning navigation agents with the meshes they are navigating "
+"on.\n"
+"[b]Note:[/b] The current navigation system has many known issues and will "
+"not always return optimal paths as expected. These issues will be fixed in "
+"Godot 4.0."
+msgstr ""
+
+#: doc/classes/Navigation.xml:11 doc/classes/NavigationMesh.xml:10
+msgid "https://godotengine.org/asset-library/asset/124"
+msgstr ""
+
+#: doc/classes/Navigation.xml:18 doc/classes/Navigation2D.xml:18
+msgid ""
+"Returns the navigation point closest to the point given. Points are in local "
+"coordinate space."
+msgstr ""
+
+#: doc/classes/Navigation.xml:25
+msgid ""
+"Returns the surface normal at the navigation point closest to the point "
+"given. Useful for rotating a navigation agent according to the navigation "
+"mesh it moves on."
+msgstr ""
+
+#: doc/classes/Navigation.xml:32
+msgid ""
+"Returns the owner of the [NavigationMesh] which contains the navigation "
+"point closest to the point given. This is usually a "
+"[NavigationMeshInstance]. For meshes added via [method navmesh_add], returns "
+"the owner that was given (or [code]null[/code] if the [code]owner[/code] "
+"parameter was omitted)."
+msgstr ""
+
+#: doc/classes/Navigation.xml:41
+msgid ""
+"Returns the navigation point closest to the given line segment. When "
+"enabling [code]use_collision[/code], only considers intersection points "
+"between segment and navigation meshes. If multiple intersection points are "
+"found, the one closest to the segment start point is returned."
+msgstr ""
+
+#: doc/classes/Navigation.xml:50
+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 "
+"agent properties associated with each [NavigationMesh] (radius, height, "
+"etc.) are considered in the path calculation, otherwise they are ignored.\n"
+"[b]Note:[/b] This method has known issues and will often return non-optimal "
+"paths. These issues will be fixed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/Navigation.xml:60
+msgid ""
+"Adds a [NavigationMesh]. Returns an ID for use with [method navmesh_remove] "
+"or [method navmesh_set_transform]. If given, a [Transform2D] is applied to "
+"the polygon. The optional [code]owner[/code] is used as return value for "
+"[method get_closest_point_owner]."
+msgstr ""
+
+#: doc/classes/Navigation.xml:67
+msgid "Removes the [NavigationMesh] with the given ID."
+msgstr ""
+
+#: doc/classes/Navigation.xml:75
+msgid "Sets the transform applied to the [NavigationMesh] with the given ID."
+msgstr ""
+
+#: doc/classes/Navigation.xml:81
+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/Navigation2D.xml:4
+msgid "2D navigation and pathfinding node."
+msgstr ""
+
+#: doc/classes/Navigation2D.xml:7
+msgid ""
+"Navigation2D provides navigation and pathfinding within a 2D area, specified "
+"as a collection of [NavigationPolygon] resources. By default, these are "
+"automatically collected from child [NavigationPolygonInstance] nodes, but "
+"they can also be added on the fly with [method navpoly_add].\n"
+"[b]Note:[/b] The current navigation system has many known issues and will "
+"not always return optimal paths as expected. These issues will be fixed in "
+"Godot 4.0."
+msgstr ""
+
+#: doc/classes/Navigation2D.xml:11 doc/classes/NavigationPolygon.xml:27
+msgid "https://godotengine.org/asset-library/asset/117"
+msgstr ""
+
+#: doc/classes/Navigation2D.xml:25
+msgid ""
+"Returns the owner of the [NavigationPolygon] which contains the navigation "
+"point closest to the point given. This is usually a "
+"[NavigationPolygonInstance]. For polygons added via [method navpoly_add], "
+"returns the owner that was given (or [code]null[/code] if the [code]owner[/"
+"code] parameter was omitted)."
+msgstr ""
+
+#: doc/classes/Navigation2D.xml:34
+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 path "
+"is smoothed by merging path segments where possible.\n"
+"[b]Note:[/b] This method has known issues and will often return non-optimal "
+"paths. These issues will be fixed in Godot 4.0."
+msgstr ""
+
+#: doc/classes/Navigation2D.xml:44
+msgid ""
+"Adds a [NavigationPolygon]. Returns an ID for use with [method "
+"navpoly_remove] or [method navpoly_set_transform]. If given, a [Transform2D] "
+"is applied to the polygon. The optional [code]owner[/code] is used as return "
+"value for [method get_closest_point_owner]."
+msgstr ""
+
+#: doc/classes/Navigation2D.xml:51
+msgid "Removes the [NavigationPolygon] with the given ID."
+msgstr ""
+
+#: doc/classes/Navigation2D.xml:59
+msgid ""
+"Sets the transform applied to the [NavigationPolygon] with the given ID."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:4
+msgid "A mesh to approximate the walkable areas and obstacles."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:7
+msgid ""
+"A navigation mesh is a collection of polygons that define which areas of an "
+"environment are traversable to aid agents in pathfinding through complicated "
+"spaces."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:17 doc/classes/NavigationPolygon.xml:49
+msgid ""
+"Adds a polygon using the indices of the vertices you get when calling "
+"[method get_vertices]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:23
+msgid ""
+"Clears the array of polygons, but it doesn't clear the array of vertices."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:30
+msgid ""
+"Initializes the navigation mesh by setting the vertices and indices "
+"according to a [Mesh]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:37
+msgid ""
+"Returns whether the specified [code]bit[/code] of the [member geometry/"
+"collision_mask] is set."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:44 doc/classes/NavigationPolygon.xml:81
+msgid ""
+"Returns a [PoolIntArray] containing the indices of the vertices of a created "
+"polygon."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:50
+msgid "Returns the number of polygons in the navigation mesh."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:56
+msgid ""
+"Returns a [PoolVector3Array] containing all the vertices being used to "
+"create the polygons."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:64
+msgid ""
+"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
+"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]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:72 doc/classes/NavigationPolygon.xml:121
+msgid ""
+"Sets the vertices that can be then indexed to create polygons with the "
+"[method add_polygon] method."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:78
+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]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:82
+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]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:86
+msgid "The maximum slope that is considered walkable, in degrees."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:89
+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]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:93
+msgid "The Y axis cell size to use for fields."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:96
+msgid "The XZ plane cell size to use for fields."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:99
+msgid ""
+"The sampling distance to use when generating the detail mesh, in cell unit."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:102
+msgid ""
+"The maximum distance the detail mesh surface should deviate from "
+"heightfield, in cell unit."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:105
+msgid ""
+"The maximum distance a simplfied contour's border edges should deviate the "
+"original raw contour."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:108
+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:112
+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:115
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:118
+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:121
+msgid ""
+"The physics layers to scan for static colliders.\n"
+"Only used when [member geometry/parsed_geometry_type] is [constant "
+"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:125
+msgid ""
+"Determines which type of nodes will be parsed as geometry. See [enum "
+"ParsedGeometryType] for possible values."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:128
+msgid ""
+"The source of the geometry used when baking. See [enum SourceGeometryMode] "
+"for possible values."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:131
+msgid ""
+"The name of the group to scan for geometry.\n"
+"Only used when [member geometry/source_geometry_mode] is [constant "
+"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
+"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:135
+msgid ""
+"The maximum number of vertices allowed for polygons generated during the "
+"contour to polygon conversion process."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:138
+msgid ""
+"Any regions with a size smaller than this will be merged with larger regions "
+"if possible.\n"
+"[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."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:142
+msgid ""
+"The minimum size of a region for it to be created.\n"
+"[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."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:146
+msgid ""
+"Partitioning algorithm for creating the navigation mesh polys. See [enum "
+"SamplePartitionType] for possible values."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:151
+msgid ""
+"Watershed partitioning. Generally the best choice if you precompute the "
+"navigation mesh, use this if you have large open areas."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:154
+msgid ""
+"Monotone partitioning. Use this if you want fast navigation mesh generation."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:157
+msgid ""
+"Layer partitioning. Good choice to use for tiled navigation mesh with medium "
+"and small sized tiles."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:160
+msgid "Represents the size of the [enum SamplePartitionType] enum."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:163
+msgid ""
+"Parses mesh instances as geometry. This includes [MeshInstance], [CSGShape], "
+"and [GridMap] nodes."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:166
+msgid ""
+"Parses [StaticBody] colliders as geometry. The collider should be in any of "
+"the layers specified by [member geometry/collision_mask]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:169
+msgid ""
+"Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant "
+"PARSED_GEOMETRY_STATIC_COLLIDERS]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:172
+msgid "Represents the size of the [enum ParsedGeometryType] enum."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:175
+msgid ""
+"Scans the child nodes of [NavigationMeshInstance] recursively for geometry."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:178
+msgid ""
+"Scans nodes in a group and their child nodes recursively for geometry. The "
+"group is specified by [member geometry/source_group_name]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:181
+msgid ""
+"Uses nodes in a group for geometry. The group is specified by [member "
+"geometry/source_group_name]."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml:184
+msgid "Represents the size of the [enum SourceGeometryMode] enum."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml:4
+msgid "Node that instances navigation meshes into a scenario."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml:7
+msgid ""
+"NavigationMeshInstance is a node that takes a [NavigationMesh] resource and "
+"adds it to the current scenario by creating an instance of it."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml:15
+msgid "If [code]true[/code], the navigation mesh will be used by [Navigation]."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml:18
+msgid "The [NavigationMesh] resource for the instance."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:4
+msgid ""
+"A node that has methods to draw outlines or use indices of vertices to "
+"create navigation polygons."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:7
+msgid ""
+"There are two ways to create polygons. Either by using the [method "
+"add_outline] method, or using the [method add_polygon] method.\n"
+"Using [method add_outline]:\n"
+"[codeblock]\n"
+"var polygon = NavigationPolygon.new()\n"
+"var outline = PoolVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, "
+"50), Vector2(50, 0)])\n"
+"polygon.add_outline(outline)\n"
+"polygon.make_polygons_from_outlines()\n"
+"$NavigationPolygonInstance.navpoly = polygon\n"
+"[/codeblock]\n"
+"Using [method add_polygon] and indices of the vertices array.\n"
+"[codeblock]\n"
+"var polygon = NavigationPolygon.new()\n"
+"var vertices = PoolVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, "
+"50), Vector2(50, 0)])\n"
+"polygon.set_vertices(vertices)\n"
+"var indices = PoolIntArray(0, 3, 1)\n"
+"polygon.add_polygon(indices)\n"
+"$NavigationPolygonInstance.navpoly = polygon\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:34
+msgid ""
+"Appends a [PoolVector2Array] that contains the vertices of an outline to the "
+"internal array that contains all the outlines. You have to call [method "
+"make_polygons_from_outlines] in order for this array to be converted to "
+"polygons that the engine will use."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:42
+msgid ""
+"Adds a [PoolVector2Array] that contains the vertices of an outline to the "
+"internal array that contains all the outlines at a fixed position. You have "
+"to call [method make_polygons_from_outlines] in order for this array to be "
+"converted to polygons that the engine will use."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:55
+msgid ""
+"Clears the array of the outlines, but it doesn't clear the vertices and the "
+"polygons that were created by them."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:61
+msgid ""
+"Clears the array of polygons, but it doesn't clear the array of outlines and "
+"vertices."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:68
+msgid ""
+"Returns a [PoolVector2Array] containing the vertices of an outline that was "
+"created in the editor or by script."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:74
+msgid ""
+"Returns the number of outlines that were created in the editor or by script."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:87
+msgid "Returns the count of all polygons."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:93
+msgid ""
+"Returns a [PoolVector2Array] containing all the vertices being used to "
+"create the polygons."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:99
+msgid "Creates polygons from the outlines added in the editor or by script."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:106
+msgid ""
+"Removes an outline created in the editor or by script. You have to call "
+"[method make_polygons_from_outlines] for the polygons to update."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml:114
+msgid ""
+"Changes an outline created in the editor or by script. You have to call "
+"[method make_polygons_from_outlines] for the polygons to update."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:4
+msgid ""
+"PacketPeer implementation using the [url=http://enet.bespin.org/index."
+"html]ENet[/url] library."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:7
+msgid ""
+"A PacketPeer implementation that should be passed to [member SceneTree."
+"network_peer] after being initialized as either a client or server. Events "
+"can then be handled by connecting to [SceneTree] signals.\n"
+"ENet's purpose is to provide a relatively thin, simple and robust network "
+"communication layer on top of UDP (User Datagram Protocol).\n"
+"[b]Note:[/b] ENet only uses UDP, not TCP. When forwarding the server port to "
+"make your server accessible on the public Internet, you only need to forward "
+"the server port in UDP. You can use the [UPNP] class to try to forward the "
+"server port automatically when starting the server."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:12
+#: doc/classes/NetworkedMultiplayerPeer.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/networking/"
+"high_level_multiplayer.html"
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:13
+msgid "http://enet.bespin.org/usergroup0.html"
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:20
+msgid ""
+"Closes the connection. Ignored if no connection is currently established. If "
+"this is a server it tries to notify all clients before forcibly "
+"disconnecting them. If this is a client it simply closes the connection to "
+"the server."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:31
+msgid ""
+"Create client that connects to a server at [code]address[/code] using "
+"specified [code]port[/code]. The given address needs to be either a fully "
+"qualified domain name (e.g. [code]\"www.example.com\"[/code]) or an IP "
+"address in IPv4 or IPv6 format (e.g. [code]\"192.168.1.1\"[/code]). The "
+"[code]port[/code] is the port the server is listening on. The "
+"[code]in_bandwidth[/code] and [code]out_bandwidth[/code] parameters can be "
+"used to limit the incoming and outgoing bandwidth to the given number of "
+"bytes per second. The default of 0 means unlimited bandwidth. Note that ENet "
+"will strategically drop packets on specific sides of a connection between "
+"peers to ensure the peer's bandwidth is not overwhelmed. The bandwidth "
+"parameters also determine the window size of a connection which limits the "
+"amount of reliable packets that may be in transit at any given time. Returns "
+"[constant OK] if a client was created, [constant ERR_ALREADY_IN_USE] if this "
+"NetworkedMultiplayerENet instance already has an open connection (in which "
+"case you need to call [method close_connection] first) or [constant "
+"ERR_CANT_CREATE] if the client could not be created. If [code]client_port[/"
+"code] is specified, the client will also listen to the given port; this is "
+"useful for some NAT traversal techniques."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:41
+msgid ""
+"Create server that listens to connections via [code]port[/code]. The port "
+"needs to be an available, unused port between 0 and 65535. Note that ports "
+"below 1024 are privileged and may require elevated permissions depending on "
+"the platform. To change the interface the server listens on, use [method "
+"set_bind_ip]. The default IP is the wildcard [code]\"*\"[/code], which "
+"listens on all available interfaces. [code]max_clients[/code] is the maximum "
+"number of clients that are allowed at once, any number up to 4095 may be "
+"used, although the achievable number of simultaneous clients may be far "
+"lower and depends on the application. For additional details on the "
+"bandwidth parameters, see [method create_client]. Returns [constant OK] if a "
+"server was created, [constant ERR_ALREADY_IN_USE] if this "
+"NetworkedMultiplayerENet instance already has an open connection (in which "
+"case you need to call [method close_connection] first) or [constant "
+"ERR_CANT_CREATE] if the server could not be created."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:49
+msgid ""
+"Disconnect the given peer. If \"now\" is set to [code]true[/code], the "
+"connection will be closed immediately without flushing queued messages."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:55
+msgid ""
+"Returns the channel of the last packet fetched via [method PacketPeer."
+"get_packet]."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:61
+msgid ""
+"Returns the channel of the next packet that will be retrieved via [method "
+"PacketPeer.get_packet]."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:68
+#: modules/websocket/doc_classes/WebSocketServer.xml:27
+msgid "Returns the IP address of the given peer."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:75
+#: modules/websocket/doc_classes/WebSocketServer.xml:34
+msgid "Returns the remote port of the given peer."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:82
+msgid ""
+"The IP used when creating a server. This is set to the wildcard [code]\"*\"[/"
+"code] by default, which binds to all available interfaces. The given IP "
+"needs to be in IPv4 or IPv6 address format, for example: "
+"[code]\"192.168.1.1\"[/code]."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:89
+msgid ""
+"Configure the [X509Certificate] to use when [member use_dtls] is [code]true[/"
+"code]. For servers, you must also setup the [CryptoKey] via [method "
+"set_dtls_key]."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:96
+msgid ""
+"Configure the [CryptoKey] to use when [member use_dtls] is [code]true[/"
+"code]. Remember to also call [method set_dtls_certificate] to setup your "
+"[X509Certificate]."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:106
+msgid ""
+"Sets the timeout parameters for a peer.The timeout parameters control how "
+"and when a peer will timeout from a failure to acknowledge reliable traffic. "
+"Timeout values are expressed in milliseconds.\n"
+"The [code]timeout_limit[/code] is a factor that, multiplied by a value based "
+"on the average round trip time, will determine the timeout limit for a "
+"reliable packet. When that limit is reached, the timeout will be doubled, "
+"and the peer will be disconnected if that limit has reached "
+"[code]timeout_min[/code]. The [code]timeout_max[/code] parameter, on the "
+"other hand, defines a fixed timeout for which any packet must be "
+"acknowledged or the peer will be dropped."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:113
+msgid ""
+"Enforce ordered packets when using [constant NetworkedMultiplayerPeer."
+"TRANSFER_MODE_UNRELIABLE] (thus behaving similarly to [constant "
+"NetworkedMultiplayerPeer.TRANSFER_MODE_UNRELIABLE_ORDERED]). This is the "
+"only way to use ordering with the RPC system."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:116
+msgid ""
+"The number of channels to be used by ENet. Channels are used to separate "
+"different kinds of data. In reliable or ordered mode, for example, the "
+"packet delivery order is ensured on a per-channel basis. This is done to "
+"combat latency and reduces ordering restrictions on packets. The delivery "
+"status of a packet in one channel won't stall the delivery of other packets "
+"in another channel."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:119
+msgid ""
+"The compression method used for network packets. These have different "
+"tradeoffs of compression speed versus bandwidth, you may need to test which "
+"one works best for your use case if you use compression at all.\n"
+"[b]Note:[/b] Most games' network design involve sending many small packets "
+"frequently (smaller than 4 KB each). If in doubt, it is recommended to keep "
+"the default compression algorithm as it works best on these small packets.\n"
+"[b]Note:[/b] [member compression_mode] must be set to the same value on both "
+"the server and all its clients. Clients will fail to connect if the [member "
+"compression_mode] set on the client differs from the one set on the server. "
+"Prior to Godot 3.4, the default [member compression_mode] was [constant "
+"COMPRESS_NONE]. Nonetheless, mixing engine versions between clients and "
+"server is not recommended and not officially supported."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:124
+msgid ""
+"The hostname used for DTLS verification, to be compared against the \"CN\" "
+"value in the certificate provided by the server.\n"
+"When set to an empty string, the [code]address[/code] parameter passed to "
+"[method create_client] is used instead."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:128
+msgid ""
+"Enable or disable certificate verification when [member use_dtls] "
+"[code]true[/code]."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:132
+msgid ""
+"Enable or disable the server feature that notifies clients of other peers' "
+"connection/disconnection, and relays messages between them. When this option "
+"is [code]false[/code], clients won't be automatically notified of other "
+"peers and won't be able to send them packets through the server."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:135
+msgid ""
+"Set the default channel to be used to transfer data. By default, this value "
+"is [code]-1[/code] which means that ENet will only use 2 channels: one for "
+"reliable packets, and one for unreliable packets. The channel [code]0[/code] "
+"is reserved and cannot be used. Setting this member to any value between "
+"[code]0[/code] and [member channel_count] (excluded) will force ENet to use "
+"that channel for sending data. See [member channel_count] for more "
+"information about ENet channels."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:139
+msgid ""
+"When enabled, the client or server created by this peer, will use "
+"[PacketPeerDTLS] instead of raw UDP sockets for communicating with the "
+"remote peer. This will make the communication encrypted with DTLS at the "
+"cost of higher resource usage and potentially larger packet size.\n"
+"[b]Note:[/b] When creating a DTLS server, make sure you setup the key/"
+"certificate pair via [method set_dtls_key] and [method "
+"set_dtls_certificate]. For DTLS clients, have a look at the [member "
+"dtls_verify] option, and configure the certificate accordingly via [method "
+"set_dtls_certificate]."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:145
+msgid ""
+"No compression. This uses the most bandwidth, but has the upside of "
+"requiring the fewest CPU resources. This option may also be used to make "
+"network debugging using tools like Wireshark easier."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:148
+msgid ""
+"ENet's built-in range encoding. Works well on small packets, but is not the "
+"most efficient algorithm on packets larger than 4 KB."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:151
+msgid ""
+"[url=http://fastlz.org/]FastLZ[/url] compression. This option uses less CPU "
+"resources compared to [constant COMPRESS_ZLIB], at the expense of using more "
+"bandwidth."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:154
+msgid ""
+"[url=https://www.zlib.net/]Zlib[/url] compression. This option uses less "
+"bandwidth compared to [constant COMPRESS_FASTLZ], at the expense of using "
+"more CPU resources. Note that this algorithm is not very efficient on "
+"packets smaller than 4 KB. Therefore, it's recommended to use other "
+"compression algorithms in most cases."
+msgstr ""
+
+#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:157
+msgid "[url=https://facebook.github.io/zstd/]Zstandard[/url] compression."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:4
+msgid "A high-level network interface to simplify multiplayer interactions."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:7
+msgid ""
+"Manages the connection to network peers. Assigns unique IDs to each client "
+"connected to the server. See also [MultiplayerAPI].\n"
+"[b]Note:[/b] The high-level multiplayer API protocol is an implementation "
+"detail and isn't meant to be used by non-Godot servers. It may change "
+"without notice."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:12
+msgid "https://godotengine.org/asset-library/asset/537"
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:18
+msgid ""
+"Returns the current state of the connection. See [enum ConnectionStatus]."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:24
+msgid ""
+"Returns the ID of the [NetworkedMultiplayerPeer] who sent the most recent "
+"packet."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:30
+msgid "Returns the ID of this [NetworkedMultiplayerPeer]."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:36
+msgid "Waits up to 1 second to receive a new network event."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:43
+msgid ""
+"Sets the peer to which packets will be sent.\n"
+"The [code]id[/code] can be one of: [constant TARGET_PEER_BROADCAST] to send "
+"to all connected peers, [constant TARGET_PEER_SERVER] to send to the peer "
+"acting as server, a valid peer ID to send to that specific peer, a negative "
+"peer ID to send to all peers except that one. By default, the target peer is "
+"[constant TARGET_PEER_BROADCAST]."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:50
+msgid ""
+"If [code]true[/code], this [NetworkedMultiplayerPeer] refuses new "
+"connections."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:53
+msgid ""
+"The manner in which to send packets to the [code]target_peer[/code]. See "
+"[enum TransferMode]."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:59
+msgid "Emitted when a connection attempt fails."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:64
+msgid "Emitted when a connection attempt succeeds."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:70
+msgid "Emitted by the server when a client connects."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:76
+msgid "Emitted by the server when a client disconnects."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:81
+msgid "Emitted by clients when the server disconnects."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:87
+msgid ""
+"Packets are not acknowledged, no resend attempts are made for lost packets. "
+"Packets may arrive in any order. Potentially faster than [constant "
+"TRANSFER_MODE_UNRELIABLE_ORDERED]. Use for non-critical data, and always "
+"consider whether the order matters."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:90
+msgid ""
+"Packets are not acknowledged, no resend attempts are made for lost packets. "
+"Packets are received in the order they were sent in. Potentially faster than "
+"[constant TRANSFER_MODE_RELIABLE]. Use for non-critical data or data that "
+"would be outdated if received late due to resend attempt(s) anyway, for "
+"example movement and positional data."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:93
+msgid ""
+"Packets must be received and resend attempts should be made until the "
+"packets are acknowledged. Packets must be received in the order they were "
+"sent in. Most reliable transfer mode, but potentially the slowest due to the "
+"overhead. Use for critical data that must be transmitted and arrive in "
+"order, for example an ability being triggered or a chat message. Consider "
+"carefully if the information really is critical, and use sparingly."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:96
+msgid "The ongoing connection disconnected."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:99
+msgid "A connection attempt is ongoing."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:102
+msgid "The connection attempt succeeded."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:105
+msgid "Packets are sent to the server and then redistributed to other peers."
+msgstr ""
+
+#: doc/classes/NetworkedMultiplayerPeer.xml:108
+msgid "Packets are sent to the server alone."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:4
+msgid ""
+"Scalable texture-based frame that tiles the texture's centers and sides, but "
+"keeps the corners' original size. Perfect for panels and dialog boxes."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:7
+msgid ""
+"Also known as 9-slice panels, NinePatchRect produces clean panels of any "
+"size, based on a small texture. To do so, it splits the texture in a 3×3 "
+"grid. When you scale the node, it tiles the texture's sides horizontally or "
+"vertically, the center on both axes but it doesn't scale or tile the corners."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:16
+msgid ""
+"Returns the size of the margin identified by the given [enum Margin] "
+"constant."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:24
+msgid ""
+"Sets the size of the margin identified by the given [enum Margin] constant "
+"to [code]value[/code] in pixels."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:30
+msgid ""
+"The stretch mode to use for horizontal stretching/tiling. See [enum "
+"NinePatchRect.AxisStretchMode] for possible values."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:33
+msgid ""
+"The stretch mode to use for vertical stretching/tiling. See [enum "
+"NinePatchRect.AxisStretchMode] for possible values."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:36
+msgid ""
+"If [code]true[/code], draw the panel's center. Else, only draw the 9-slice's "
+"borders."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:40
+msgid ""
+"The height of the 9-slice's bottom row. A margin of 16 means the 9-slice's "
+"bottom corners and side will have a height of 16 pixels. You can set all 4 "
+"margin values individually to create panels with non-uniform borders."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:43
+msgid ""
+"The width of the 9-slice's left column. A margin of 16 means the 9-slice's "
+"left corners and side will have a width of 16 pixels. You can set all 4 "
+"margin values individually to create panels with non-uniform borders."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:46
+msgid ""
+"The width of the 9-slice's right column. A margin of 16 means the 9-slice's "
+"right corners and side will have a width of 16 pixels. You can set all 4 "
+"margin values individually to create panels with non-uniform borders."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:49
+msgid ""
+"The height of the 9-slice's top row. A margin of 16 means the 9-slice's top "
+"corners and side will have a height of 16 pixels. You can set all 4 margin "
+"values individually to create panels with non-uniform borders."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:52
+msgid ""
+"Rectangular region of the texture to sample from. If you're working with an "
+"atlas, use this property to define the area the 9-slice should use. All "
+"other properties are relative to this one. If the rect is empty, "
+"NinePatchRect will use the whole texture."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:55
+msgid "The node's texture resource."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:61
+msgid "Emitted when the node's texture changes."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:67
+msgid ""
+"Stretches the center texture across the NinePatchRect. This may cause the "
+"texture to be distorted."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:70
+msgid ""
+"Repeats the center texture across the NinePatchRect. This won't cause any "
+"visible distortion. The texture must be seamless for this to work without "
+"displaying artifacts between edges.\n"
+"[b]Note:[/b] Only supported when using the GLES3 renderer. When using the "
+"GLES2 renderer, this will behave like [constant AXIS_STRETCH_MODE_STRETCH]."
+msgstr ""
+
+#: doc/classes/NinePatchRect.xml:74
+msgid ""
+"Repeats the center texture across the NinePatchRect, but will also stretch "
+"the texture to make sure each tile is visible in full. This may cause the "
+"texture to be distorted, but less than [constant AXIS_STRETCH_MODE_STRETCH]. "
+"The texture must be seamless for this to work without displaying artifacts "
+"between edges.\n"
+"[b]Note:[/b] Only supported when using the GLES3 renderer. When using the "
+"GLES2 renderer, this will behave like [constant AXIS_STRETCH_MODE_STRETCH]."
+msgstr ""
+
+#: doc/classes/Node.xml:4
+msgid "Base class for all [i]scene[/i] objects."
+msgstr ""
+
+#: doc/classes/Node.xml:7
+msgid ""
+"Nodes are Godot's building blocks. They can be assigned as the child of "
+"another node, resulting in a tree arrangement. A given node can contain any "
+"number of nodes as children with the requirement that all siblings (direct "
+"children of a node) should have unique names.\n"
+"A tree of nodes is called a [i]scene[/i]. Scenes can be saved to the disk "
+"and then instanced into other scenes. This allows for very high flexibility "
+"in the architecture and data model of Godot projects.\n"
+"[b]Scene tree:[/b] The [SceneTree] contains the active tree of nodes. When a "
+"node is added to the scene tree, it receives the [constant "
+"NOTIFICATION_ENTER_TREE] notification and its [method _enter_tree] callback "
+"is triggered. Child nodes are always added [i]after[/i] their parent node, i."
+"e. the [method _enter_tree] callback of a parent node will be triggered "
+"before its child's.\n"
+"Once all nodes have been added in the scene tree, they receive the [constant "
+"NOTIFICATION_READY] notification and their respective [method _ready] "
+"callbacks are triggered. For groups of nodes, the [method _ready] callback "
+"is called in reverse order, starting with the children and moving up to the "
+"parent nodes.\n"
+"This means that when adding a node to the scene tree, the following order "
+"will be used for the callbacks: [method _enter_tree] of the parent, [method "
+"_enter_tree] of the children, [method _ready] of the children and finally "
+"[method _ready] of the parent (recursively for the entire scene tree).\n"
+"[b]Processing:[/b] Nodes can override the \"process\" state, so that they "
+"receive a callback on each frame requesting them to process (do something). "
+"Normal processing (callback [method _process], toggled with [method "
+"set_process]) happens as fast as possible and is dependent on the frame "
+"rate, so the processing time [i]delta[/i] (in seconds) is passed as an "
+"argument. Physics processing (callback [method _physics_process], toggled "
+"with [method set_physics_process]) happens a fixed number of times per "
+"second (60 by default) and is useful for code related to the physics "
+"engine.\n"
+"Nodes can also process input events. When present, the [method _input] "
+"function will be called for each input that the program receives. In many "
+"cases, this can be overkill (unless used for simple projects), and the "
+"[method _unhandled_input] function might be preferred; it is called when the "
+"input event was not handled by anyone else (typically, GUI [Control] nodes), "
+"ensuring that the node only receives the events that were meant for it.\n"
+"To keep track of the scene hierarchy (especially when instancing scenes into "
+"other scenes), an \"owner\" can be set for the node with the [member owner] "
+"property. This keeps track of who instanced what. This is mostly useful when "
+"writing editors and tools, though.\n"
+"Finally, when a node is freed with [method Object.free] or [method "
+"queue_free], it will also free all its children.\n"
+"[b]Groups:[/b] Nodes can be added to as many groups as you want to be easy "
+"to manage, you could create groups like \"enemies\" or \"collectables\" for "
+"example, depending on your game. See [method add_to_group], [method "
+"is_in_group] and [method remove_from_group]. You can then retrieve all nodes "
+"in these groups, iterate them and even call methods on groups via the "
+"methods on [SceneTree].\n"
+"[b]Networking with nodes:[/b] After connecting to a server (or making one, "
+"see [NetworkedMultiplayerENet]), it is possible to use the built-in RPC "
+"(remote procedure call) system to communicate over the network. By calling "
+"[method rpc] with a method name, it will be called locally and in all "
+"connected peers (peers = clients and the server that accepts connections). "
+"To identify which node receives the RPC call, Godot will use its [NodePath] "
+"(make sure node names are the same on all peers). Also, take a look at the "
+"high-level networking tutorial and corresponding demos."
+msgstr ""
+
+#: doc/classes/Node.xml:20
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/"
+"scenes_and_nodes.html"
+msgstr ""
+
+#: doc/classes/Node.xml:21
+msgid "https://github.com/godotengine/godot-demo-projects/"
+msgstr ""
+
+#: doc/classes/Node.xml:27
+msgid ""
+"Called when the node enters the [SceneTree] (e.g. upon instancing, scene "
+"changing, or after calling [method add_child] in a script). If the node has "
+"children, its [method _enter_tree] callback will be called first, and then "
+"that of the children.\n"
+"Corresponds to the [constant NOTIFICATION_ENTER_TREE] notification in "
+"[method Object._notification]."
+msgstr ""
+
+#: doc/classes/Node.xml:34
+msgid ""
+"Called when the node is about to leave the [SceneTree] (e.g. upon freeing, "
+"scene changing, or after calling [method remove_child] in a script). If the "
+"node has children, its [method _exit_tree] callback will be called last, "
+"after all its children have left the tree.\n"
+"Corresponds to the [constant NOTIFICATION_EXIT_TREE] notification in [method "
+"Object._notification] and signal [signal tree_exiting]. To get notified when "
+"the node has already left the active tree, connect to the [signal "
+"tree_exited]."
+msgstr ""
+
+#: doc/classes/Node.xml:41
+msgid ""
+"The string returned from this method is displayed as a warning in the Scene "
+"Dock if the script that overrides it is a [code]tool[/code] script.\n"
+"Returning an empty string produces no warning.\n"
+"Call [method update_configuration_warning] when the warning needs to be "
+"updated for this node."
+msgstr ""
+
+#: doc/classes/Node.xml:50
+msgid ""
+"Called when there is an input event. The input event propagates up through "
+"the node tree until a node consumes it.\n"
+"It is only called if input processing is enabled, which is done "
+"automatically if this method is overridden, and can be toggled with [method "
+"set_process_input].\n"
+"To consume the input event and stop it propagating further to other nodes, "
+"[method SceneTree.set_input_as_handled] can be called.\n"
+"For gameplay input, [method _unhandled_input] and [method "
+"_unhandled_key_input] are usually a better fit as they allow the GUI to "
+"intercept the events first.\n"
+"[b]Note:[/b] This method is only called if the node is present in the scene "
+"tree (i.e. if it's not orphan)."
+msgstr ""
+
+#: doc/classes/Node.xml:61
+msgid ""
+"Called during the physics processing step of the main loop. Physics "
+"processing means that the frame rate is synced to the physics, i.e. the "
+"[code]delta[/code] variable should be constant. [code]delta[/code] is in "
+"seconds.\n"
+"It is only called if physics processing is enabled, which is done "
+"automatically if this method is overridden, and can be toggled with [method "
+"set_physics_process].\n"
+"Corresponds to the [constant NOTIFICATION_PHYSICS_PROCESS] notification in "
+"[method Object._notification].\n"
+"[b]Note:[/b] This method is only called if the node is present in the scene "
+"tree (i.e. if it's not orphan)."
+msgstr ""
+
+#: doc/classes/Node.xml:71
+msgid ""
+"Called during the processing step of the main loop. Processing happens at "
+"every frame and as fast as possible, so the [code]delta[/code] time since "
+"the previous frame is not constant. [code]delta[/code] is in seconds.\n"
+"It is only called if processing is enabled, which is done automatically if "
+"this method is overridden, and can be toggled with [method set_process].\n"
+"Corresponds to the [constant NOTIFICATION_PROCESS] notification in [method "
+"Object._notification].\n"
+"[b]Note:[/b] This method is only called if the node is present in the scene "
+"tree (i.e. if it's not orphan)."
+msgstr ""
+
+#: doc/classes/Node.xml:80
+msgid ""
+"Called when the node is \"ready\", i.e. when both the node and its children "
+"have entered the scene tree. If the node has children, their [method _ready] "
+"callbacks get triggered first, and the parent node will receive the ready "
+"notification afterwards.\n"
+"Corresponds to the [constant NOTIFICATION_READY] notification in [method "
+"Object._notification]. See also the [code]onready[/code] keyword for "
+"variables.\n"
+"Usually used for initialization. For even earlier initialization, [method "
+"Object._init] may be used. See also [method _enter_tree].\n"
+"[b]Note:[/b] [method _ready] may be called only once for each node. After "
+"removing a node from the scene tree and adding again, [code]_ready[/code] "
+"will not be called for the second time. This can be bypassed with requesting "
+"another call with [method request_ready], which may be called anywhere "
+"before adding the node again."
+msgstr ""
+
+#: doc/classes/Node.xml:90
+msgid ""
+"Called when an [InputEvent] hasn't been consumed by [method _input] or any "
+"GUI. The input event propagates up through the node tree until a node "
+"consumes it.\n"
+"It is only called if unhandled input processing is enabled, which is done "
+"automatically if this method is overridden, and can be toggled with [method "
+"set_process_unhandled_input].\n"
+"To consume the input event and stop it propagating further to other nodes, "
+"[method SceneTree.set_input_as_handled] can be called.\n"
+"For gameplay input, this and [method _unhandled_key_input] are usually a "
+"better fit than [method _input] as they allow the GUI to intercept the "
+"events first.\n"
+"[b]Note:[/b] This method is only called if the node is present in the scene "
+"tree (i.e. if it's not orphan)."
+msgstr ""
+
+#: doc/classes/Node.xml:101
+msgid ""
+"Called when an [InputEventKey] hasn't been consumed by [method _input] or "
+"any GUI. The input event propagates up through the node tree until a node "
+"consumes it.\n"
+"It is only called if unhandled key input processing is enabled, which is "
+"done automatically if this method is overridden, and can be toggled with "
+"[method set_process_unhandled_key_input].\n"
+"To consume the input event and stop it propagating further to other nodes, "
+"[method SceneTree.set_input_as_handled] can be called.\n"
+"For gameplay input, this and [method _unhandled_input] are usually a better "
+"fit than [method _input] as they allow the GUI to intercept the events "
+"first.\n"
+"[b]Note:[/b] This method is only called if the node is present in the scene "
+"tree (i.e. if it's not orphan)."
+msgstr ""
+
+#: doc/classes/Node.xml:113
+msgid ""
+"Adds a child node. Nodes can have any number of children, but every child "
+"must have a unique name. Child nodes are automatically deleted when the "
+"parent node is deleted, so an entire scene can be removed by deleting its "
+"topmost node.\n"
+"If [code]legible_unique_name[/code] is [code]true[/code], the child node "
+"will have a human-readable name based on the name of the node being "
+"instanced instead of its type.\n"
+"[b]Note:[/b] If the child node already has a parent, the function will fail. "
+"Use [method remove_child] first to remove the node from its current parent. "
+"For example:\n"
+"[codeblock]\n"
+"if child_node.get_parent():\n"
+" child_node.get_parent().remove_child(child_node)\n"
+"add_child(child_node)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] If you want a child to be persisted to a [PackedScene], you "
+"must set [member owner] in addition to calling [method add_child]. This is "
+"typically relevant for [url=https://godot.readthedocs.io/en/3.2/tutorials/"
+"misc/running_code_in_the_editor.html]tool scripts[/url] and [url=https://"
+"godot.readthedocs.io/en/latest/tutorials/plugins/editor/index.html]editor "
+"plugins[/url]. If [method add_child] is called without setting [member "
+"owner], the newly added [Node] will not be visible in the scene tree, though "
+"it will be visible in the 2D/3D view."
+msgstr ""
+
+#: doc/classes/Node.xml:130
+msgid ""
+"Adds [code]child_node[/code] as a child. The child is placed below the given "
+"[code]node[/code] in the list of children.\n"
+"If [code]legible_unique_name[/code] is [code]true[/code], the child node "
+"will have a human-readable name based on the name of the node being "
+"instanced instead of its type."
+msgstr ""
+
+#: doc/classes/Node.xml:139
+msgid ""
+"Adds the node to a group. Groups are helpers to name and organize a subset "
+"of nodes, for example \"enemies\" or \"collectables\". A node can be in any "
+"number of groups. Nodes can be assigned a group at any time, but will not be "
+"added until they are inside the scene tree (see [method is_inside_tree]). "
+"See notes in the description, and the group methods in [SceneTree].\n"
+"The [code]persistent[/code] option is used when packing node to "
+"[PackedScene] and saving to file. Non-persistent groups aren't stored.\n"
+"[b]Note:[/b] For performance reasons, the order of node groups is [i]not[/i] "
+"guaranteed. The order of node groups should not be relied upon as it can "
+"vary across project runs."
+msgstr ""
+
+#: doc/classes/Node.xml:147
+msgid ""
+"Returns [code]true[/code] if the node can process while the scene tree is "
+"paused (see [member pause_mode]). Always returns [code]true[/code] if the "
+"scene tree is not paused, and [code]false[/code] if the node is not in the "
+"tree."
+msgstr ""
+
+#: doc/classes/Node.xml:154
+msgid ""
+"Duplicates the node, returning a new node.\n"
+"You can fine-tune the behavior using the [code]flags[/code] (see [enum "
+"DuplicateFlags]).\n"
+"[b]Note:[/b] It will not work properly if the node contains a script with "
+"constructor arguments (i.e. needs to supply arguments to [method Object."
+"_init] method). In that case, the node will be duplicated without a script."
+msgstr ""
+
+#: doc/classes/Node.xml:165
+msgid ""
+"Finds a descendant of this node whose name matches [code]mask[/code] as in "
+"[method String.match] (i.e. case-sensitive, but [code]\"*\"[/code] matches "
+"zero or more characters and [code]\"?\"[/code] matches any single character "
+"except [code]\".\"[/code]).\n"
+"[b]Note:[/b] It does not match against the full path, just against "
+"individual node names.\n"
+"If [code]owned[/code] is [code]true[/code], this method only finds nodes "
+"whose owner is this node. This is especially important for scenes "
+"instantiated through a script, because those scenes don't have an owner.\n"
+"[b]Note:[/b] As this method walks through all the descendants of the node, "
+"it is the slowest way to get a reference to another node. Whenever possible, "
+"consider using [method get_node] instead. To avoid using [method find_node] "
+"too often, consider caching the node reference into a variable."
+msgstr ""
+
+#: doc/classes/Node.xml:175
+msgid ""
+"Finds the first parent of the current node whose name matches [code]mask[/"
+"code] as in [method String.match] (i.e. case-sensitive, but [code]\"*\"[/"
+"code] matches zero or more characters and [code]\"?\"[/code] matches any "
+"single character except [code]\".\"[/code]).\n"
+"[b]Note:[/b] It does not match against the full path, just against "
+"individual node names.\n"
+"[b]Note:[/b] As this method walks upwards in the scene tree, it can be slow "
+"in large, deeply nested scene trees. Whenever possible, consider using "
+"[method get_node] instead. To avoid using [method find_parent] too often, "
+"consider caching the node reference into a variable."
+msgstr ""
+
+#: doc/classes/Node.xml:184
+msgid ""
+"Returns a child node by its index (see [method get_child_count]). This "
+"method is often used for iterating all children of a node.\n"
+"To access a child node via its name, use [method get_node]."
+msgstr ""
+
+#: doc/classes/Node.xml:191
+msgid "Returns the number of child nodes."
+msgstr ""
+
+#: doc/classes/Node.xml:197
+msgid "Returns an array of references to node's children."
+msgstr ""
+
+#: doc/classes/Node.xml:203
+msgid ""
+"Returns an array listing the groups that the node is a member of.\n"
+"[b]Note:[/b] For performance reasons, the order of node groups is [i]not[/i] "
+"guaranteed. The order of node groups should not be relied upon as it can "
+"vary across project runs."
+msgstr ""
+
+#: doc/classes/Node.xml:210
+msgid ""
+"Returns the node's index, i.e. its position among the siblings of its parent."
+msgstr ""
+
+#: doc/classes/Node.xml:216
+msgid ""
+"Returns the peer ID of the network master for this node. See [method "
+"set_network_master]."
+msgstr ""
+
+#: doc/classes/Node.xml:223
+msgid ""
+"Fetches a node. The [NodePath] can be either a relative path (from the "
+"current node) or an absolute path (in the scene tree) to a node. If the path "
+"does not exist, a [code]null instance[/code] is returned and an error is "
+"logged. Attempts to access methods on the return value will result in an "
+"\"Attempt to call <method> on a null instance.\" error.\n"
+"[b]Note:[/b] Fetching absolute paths only works when the node is inside the "
+"scene tree (see [method is_inside_tree]).\n"
+"[b]Example:[/b] Assume your current node is Character and the following "
+"tree:\n"
+"[codeblock]\n"
+"/root\n"
+"/root/Character\n"
+"/root/Character/Sword\n"
+"/root/Character/Backpack/Dagger\n"
+"/root/MyGame\n"
+"/root/Swamp/Alligator\n"
+"/root/Swamp/Mosquito\n"
+"/root/Swamp/Goblin\n"
+"[/codeblock]\n"
+"Possible paths are:\n"
+"[codeblock]\n"
+"get_node(\"Sword\")\n"
+"get_node(\"Backpack/Dagger\")\n"
+"get_node(\"../Swamp/Alligator\")\n"
+"get_node(\"/root/MyGame\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Node.xml:249
+msgid ""
+"Fetches a node and one of its resources as specified by the [NodePath]'s "
+"subname (e.g. [code]Area2D/CollisionShape2D:shape[/code]). If several nested "
+"resources are specified in the [NodePath], the last one will be fetched.\n"
+"The return value is an array of size 3: the first index points to the [Node] "
+"(or [code]null[/code] if not found), the second index points to the "
+"[Resource] (or [code]null[/code] if not found), and the third index is the "
+"remaining [NodePath], if any.\n"
+"For example, assuming that [code]Area2D/CollisionShape2D[/code] is a valid "
+"node and that its [code]shape[/code] property has been assigned a "
+"[RectangleShape2D] resource, one could have this kind of output:\n"
+"[codeblock]\n"
+"print(get_node_and_resource(\"Area2D/CollisionShape2D\")) # "
+"[[CollisionShape2D:1161], Null, ]\n"
+"print(get_node_and_resource(\"Area2D/CollisionShape2D:shape\")) # "
+"[[CollisionShape2D:1161], [RectangleShape2D:1156], ]\n"
+"print(get_node_and_resource(\"Area2D/CollisionShape2D:shape:extents\")) # "
+"[[CollisionShape2D:1161], [RectangleShape2D:1156], :extents]\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Node.xml:263
+msgid ""
+"Similar to [method get_node], but does not log an error if [code]path[/code] "
+"does not point to a valid [Node]."
+msgstr ""
+
+#: doc/classes/Node.xml:269
+msgid ""
+"Returns the parent node of the current node, or a [code]null instance[/code] "
+"if the node lacks a parent."
+msgstr ""
+
+#: doc/classes/Node.xml:275
+msgid ""
+"Returns the absolute path of the current node. This only works if the "
+"current node is inside the scene tree (see [method is_inside_tree])."
+msgstr ""
+
+#: doc/classes/Node.xml:282
+msgid ""
+"Returns the relative [NodePath] from this node to the specified [code]node[/"
+"code]. Both nodes must be in the same scene or the function will fail."
+msgstr ""
+
+#: doc/classes/Node.xml:288
+msgid ""
+"Returns the time elapsed (in seconds) since the last physics-bound frame "
+"(see [method _physics_process]). This is always a constant value in physics "
+"processing unless the frames per second is changed via [member Engine."
+"iterations_per_second]."
+msgstr ""
+
+#: doc/classes/Node.xml:294
+msgid ""
+"Returns the node's order in the scene tree branch. For example, if called on "
+"the first child node the position is [code]0[/code]."
+msgstr ""
+
+#: doc/classes/Node.xml:300
+msgid ""
+"Returns the time elapsed (in seconds) since the last process callback. This "
+"value may vary from frame to frame."
+msgstr ""
+
+#: doc/classes/Node.xml:306
+msgid ""
+"Returns [code]true[/code] if this is an instance load placeholder. See "
+"[InstancePlaceholder]."
+msgstr ""
+
+#: doc/classes/Node.xml:312
+msgid "Returns the [SceneTree] that contains this node."
+msgstr ""
+
+#: doc/classes/Node.xml:318
+msgid "Returns the node's [Viewport]."
+msgstr ""
+
+#: doc/classes/Node.xml:325
+msgid ""
+"Returns [code]true[/code] if the node that the [NodePath] points to exists."
+msgstr ""
+
+#: doc/classes/Node.xml:332
+msgid ""
+"Returns [code]true[/code] if the [NodePath] points to a valid node and its "
+"subname points to a valid resource, e.g. [code]Area2D/CollisionShape2D:"
+"shape[/code]. Properties with a non-[Resource] type (e.g. nodes or primitive "
+"math types) are not considered resources."
+msgstr ""
+
+#: doc/classes/Node.xml:339
+msgid ""
+"Returns [code]true[/code] if the given node is a direct or indirect child of "
+"the current node."
+msgstr ""
+
+#: doc/classes/Node.xml:345
+msgid ""
+"Returns [code]true[/code] if the node is folded (collapsed) in the Scene "
+"dock."
+msgstr ""
+
+#: doc/classes/Node.xml:352
+msgid ""
+"Returns [code]true[/code] if the given node occurs later in the scene "
+"hierarchy than the current node."
+msgstr ""
+
+#: doc/classes/Node.xml:359
+msgid ""
+"Returns [code]true[/code] if this node is in the specified group. See notes "
+"in the description, and the group methods in [SceneTree]."
+msgstr ""
+
+#: doc/classes/Node.xml:365
+msgid ""
+"Returns [code]true[/code] if this node is currently inside a [SceneTree]."
+msgstr ""
+
+#: doc/classes/Node.xml:371
+msgid ""
+"Returns [code]true[/code] if the local system is the master of this node."
+msgstr ""
+
+#: doc/classes/Node.xml:377
+msgid ""
+"Returns [code]true[/code] if physics processing is enabled (see [method "
+"set_physics_process])."
+msgstr ""
+
+#: doc/classes/Node.xml:383
+msgid ""
+"Returns [code]true[/code] if internal physics processing is enabled (see "
+"[method set_physics_process_internal])."
+msgstr ""
+
+#: doc/classes/Node.xml:389
+msgid ""
+"Returns [code]true[/code] if processing is enabled (see [method "
+"set_process])."
+msgstr ""
+
+#: doc/classes/Node.xml:395
+msgid ""
+"Returns [code]true[/code] if the node is processing input (see [method "
+"set_process_input])."
+msgstr ""
+
+#: doc/classes/Node.xml:401
+msgid ""
+"Returns [code]true[/code] if internal processing is enabled (see [method "
+"set_process_internal])."
+msgstr ""
+
+#: doc/classes/Node.xml:407
+msgid ""
+"Returns [code]true[/code] if the node is processing unhandled input (see "
+"[method set_process_unhandled_input])."
+msgstr ""
+
+#: doc/classes/Node.xml:413
+msgid ""
+"Returns [code]true[/code] if the node is processing unhandled key input (see "
+"[method set_process_unhandled_key_input])."
+msgstr ""
+
+#: doc/classes/Node.xml:421
+msgid ""
+"Moves a child node to a different position (order) among the other children. "
+"Since calls, signals, etc are performed by tree order, changing the order of "
+"children nodes may be useful."
+msgstr ""
+
+#: doc/classes/Node.xml:427
+msgid ""
+"Prints all stray nodes (nodes outside the [SceneTree]). Used for debugging. "
+"Works only in debug builds."
+msgstr ""
+
+#: doc/classes/Node.xml:433
+msgid ""
+"Prints the tree to stdout. Used mainly for debugging purposes. This version "
+"displays the path relative to the current node, and is good for copy/pasting "
+"into the [method get_node] function.\n"
+"[b]Example output:[/b]\n"
+"[codeblock]\n"
+"TheGame\n"
+"TheGame/Menu\n"
+"TheGame/Menu/Label\n"
+"TheGame/Menu/Camera2D\n"
+"TheGame/SplashScreen\n"
+"TheGame/SplashScreen/Camera2D\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Node.xml:448
+msgid ""
+"Similar to [method print_tree], this prints the tree to stdout. This version "
+"displays a more graphical representation similar to what is displayed in the "
+"scene inspector. It is useful for inspecting larger trees.\n"
+"[b]Example output:[/b]\n"
+"[codeblock]\n"
+" â”–â•´TheGame\n"
+" â” â•´Menu\n"
+" ┃ ┠╴Label\n"
+" ┃ ┖╴Camera2D\n"
+" â”–â•´SplashScreen\n"
+" â”–â•´Camera2D\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Node.xml:466
+msgid ""
+"Calls the given method (if present) with the arguments given in [code]args[/"
+"code] on this node and recursively on all its children. If the "
+"[code]parent_first[/code] argument is [code]true[/code], the method will be "
+"called on the current node first, then on all its children. If "
+"[code]parent_first[/code] is [code]false[/code], the children will be called "
+"first."
+msgstr ""
+
+#: doc/classes/Node.xml:473
+msgid ""
+"Notifies the current node and all its children recursively by calling "
+"[method Object.notification] on all of them."
+msgstr ""
+
+#: doc/classes/Node.xml:479
+msgid ""
+"Queues a node for deletion at the end of the current frame. When deleted, "
+"all of its child nodes will be deleted as well. This method ensures it's "
+"safe to delete the node, contrary to [method Object.free]. Use [method "
+"Object.is_queued_for_deletion] to check whether a node will be deleted at "
+"the end of the frame.\n"
+"[b]Important:[/b] If you have a variable pointing to a node, it will [i]not[/"
+"i] be assigned to [code]null[/code] once the node is freed. Instead, it will "
+"point to a [i]previously freed instance[/i] and you should validate it with "
+"[method @GDScript.is_instance_valid] before attempting to call its methods "
+"or access its properties."
+msgstr ""
+
+#: doc/classes/Node.xml:486
+msgid ""
+"Moves this node to the bottom of parent node's children hierarchy. This is "
+"often useful in GUIs ([Control] nodes), because their order of drawing "
+"depends on their order in the tree. The top Node is drawn first, then any "
+"siblings below the top Node in the hierarchy are successively drawn on top "
+"of it. After using [code]raise[/code], a Control will be drawn on top of its "
+"siblings."
+msgstr ""
+
+#: doc/classes/Node.xml:492
+msgid ""
+"Removes a node and sets all its children as children of the parent node (if "
+"it exists). All event subscriptions that pass by the removed node will be "
+"unsubscribed."
+msgstr ""
+
+#: doc/classes/Node.xml:499
+msgid ""
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
+msgstr ""
+
+#: doc/classes/Node.xml:507
+msgid ""
+"Removes a node from a group. See notes in the description, and the group "
+"methods in [SceneTree]."
+msgstr ""
+
+#: doc/classes/Node.xml:515
+msgid ""
+"Replaces a node in a scene by the given one. Subscriptions that pass through "
+"this node will be lost."
+msgstr ""
+
+#: doc/classes/Node.xml:521
+msgid ""
+"Requests that [code]_ready[/code] be called again. Note that the method "
+"won't be called immediately, but is scheduled for when the node is added to "
+"the scene tree again (see [method _ready]). [code]_ready[/code] is called "
+"only for the node which requested it, which means that you need to request "
+"ready for each child if you want them to call [code]_ready[/code] too (in "
+"which case, [code]_ready[/code] will be called in the same order as it would "
+"normally)."
+msgstr ""
+
+#: doc/classes/Node.xml:528
+msgid ""
+"Sends a remote procedure call request for the given [code]method[/code] to "
+"peers on the network (and locally), optionally sending all additional "
+"arguments as arguments to the method called by the RPC. The call request "
+"will only be received by nodes with the same [NodePath], including the exact "
+"same node name. Behaviour depends on the RPC configuration for the given "
+"method, see [method rpc_config]. Methods are not exposed to RPCs by default. "
+"See also [method rset] and [method rset_config] for properties. Returns an "
+"empty [Variant].\n"
+"[b]Note:[/b] You can only safely use RPCs on clients after you received the "
+"[code]connected_to_server[/code] signal from the [SceneTree]. You also need "
+"to keep track of the connection state, either by the [SceneTree] signals "
+"like [code]server_disconnected[/code] or by checking [code]SceneTree."
+"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
+msgstr ""
+
+#: doc/classes/Node.xml:537
+msgid ""
+"Changes the RPC mode for the given [code]method[/code] to the given "
+"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
+"annotating methods and properties with the corresponding keywords "
+"([code]remote[/code], [code]master[/code], [code]puppet[/code], "
+"[code]remotesync[/code], [code]mastersync[/code], [code]puppetsync[/code]). "
+"By default, methods are not exposed to networking (and RPCs). See also "
+"[method rset] and [method rset_config] for properties."
+msgstr ""
+
+#: doc/classes/Node.xml:545
+msgid ""
+"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
+"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
+"[Variant]."
+msgstr ""
+
+#: doc/classes/Node.xml:552
+msgid ""
+"Sends a [method rpc] using an unreliable protocol. Returns an empty "
+"[Variant]."
+msgstr ""
+
+#: doc/classes/Node.xml:560
+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 an empty [Variant]."
+msgstr ""
+
+#: doc/classes/Node.xml:568
+msgid ""
+"Remotely changes a property's value on other peers (and locally). Behaviour "
+"depends on the RPC configuration for the given property, see [method "
+"rset_config]. See also [method rpc] for RPCs for methods, most information "
+"applies to this method as well."
+msgstr ""
+
+#: doc/classes/Node.xml:576
+msgid ""
+"Changes the RPC mode for the given [code]property[/code] to the given "
+"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
+"annotating methods and properties with the corresponding keywords "
+"([code]remote[/code], [code]master[/code], [code]puppet[/code], "
+"[code]remotesync[/code], [code]mastersync[/code], [code]puppetsync[/code]). "
+"By default, properties are not exposed to networking (and RPCs). See also "
+"[method rpc] and [method rpc_config] for methods."
+msgstr ""
+
+#: doc/classes/Node.xml:585
+msgid ""
+"Remotely changes the property's value on a specific peer identified by "
+"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
+msgstr ""
+
+#: doc/classes/Node.xml:593
+msgid ""
+"Remotely changes the property's value on other peers (and locally) using an "
+"unreliable protocol."
+msgstr ""
+
+#: doc/classes/Node.xml:602
+msgid ""
+"Remotely changes property's value on a specific peer identified by "
+"[code]peer_id[/code] using an unreliable protocol (see [method "
+"NetworkedMultiplayerPeer.set_target_peer])."
+msgstr ""
+
+#: doc/classes/Node.xml:609
+msgid "Sets the folded state of the node in the Scene dock."
+msgstr ""
+
+#: doc/classes/Node.xml:617
+msgid ""
+"Sets the node's network master to the peer with the given peer ID. The "
+"network master is the peer that has authority over the node on the network. "
+"Useful in conjunction with the [code]master[/code] and [code]puppet[/code] "
+"keywords. Inherited from the parent node by default, which ultimately "
+"defaults to peer ID 1 (the server). If [code]recursive[/code], the given "
+"peer is recursively set as the master for all children of this node."
+msgstr ""
+
+#: doc/classes/Node.xml:624
+msgid ""
+"Enables or disables physics (i.e. fixed framerate) processing. When a node "
+"is being processed, it will receive a [constant "
+"NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine."
+"iterations_per_second] to change) interval (and the [method "
+"_physics_process] callback will be called if exists). Enabled automatically "
+"if [method _physics_process] is overridden. Any calls to this before [method "
+"_ready] will be ignored."
+msgstr ""
+
+#: doc/classes/Node.xml:631
+msgid ""
+"Enables or disables internal physics for this node. Internal physics "
+"processing happens in isolation from the normal [method _physics_process] "
+"calls and is used by some nodes internally to guarantee proper functioning "
+"even if the node is paused or physics processing is disabled for scripting "
+"([method set_physics_process]). Only useful for advanced uses to manipulate "
+"built-in nodes' behavior.\n"
+"[b]Warning:[/b] Built-in Nodes rely on the internal processing for their own "
+"logic, so changing this value from your code may lead to unexpected "
+"behavior. Script access to this internal logic is provided for specific "
+"advanced uses, but is unsafe and not supported."
+msgstr ""
+
+#: doc/classes/Node.xml:639
+msgid ""
+"Enables or disables processing. When a node is being processed, it will "
+"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
+"[method _process] callback will be called if exists). Enabled automatically "
+"if [method _process] is overridden. Any calls to this before [method _ready] "
+"will be ignored."
+msgstr ""
+
+#: doc/classes/Node.xml:646
+msgid ""
+"Enables or disables input processing. This is not required for GUI controls! "
+"Enabled automatically if [method _input] is overridden. Any calls to this "
+"before [method _ready] will be ignored."
+msgstr ""
+
+#: doc/classes/Node.xml:653
+msgid ""
+"Enables or disabled internal processing for this node. Internal processing "
+"happens in isolation from the normal [method _process] calls and is used by "
+"some nodes internally to guarantee proper functioning even if the node is "
+"paused or processing is disabled for scripting ([method set_process]). Only "
+"useful for advanced uses to manipulate built-in nodes' behavior.\n"
+"[b]Warning:[/b] Built-in Nodes rely on the internal processing for their own "
+"logic, so changing this value from your code may lead to unexpected "
+"behavior. Script access to this internal logic is provided for specific "
+"advanced uses, but is unsafe and not supported."
+msgstr ""
+
+#: doc/classes/Node.xml:661
+msgid ""
+"Enables unhandled input processing. This is not required for GUI controls! "
+"It enables the node to receive all input that was not previously handled "
+"(usually by a [Control]). Enabled automatically if [method _unhandled_input] "
+"is overridden. Any calls to this before [method _ready] will be ignored."
+msgstr ""
+
+#: doc/classes/Node.xml:668
+msgid ""
+"Enables unhandled key input processing. Enabled automatically if [method "
+"_unhandled_key_input] is overridden. Any calls to this before [method "
+"_ready] will be ignored."
+msgstr ""
+
+#: doc/classes/Node.xml:675
+msgid ""
+"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
+msgstr ""
+
+#: doc/classes/Node.xml:681
+msgid ""
+"Updates the warning displayed for this node in the Scene Dock.\n"
+"Use [method _get_configuration_warning] to setup the warning message to "
+"display."
+msgstr ""
+
+#: doc/classes/Node.xml:688
+msgid ""
+"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
+"use the default [SceneTree] one."
+msgstr ""
+
+#: doc/classes/Node.xml:691
+msgid ""
+"If a scene is instantiated from a file, its topmost node contains the "
+"absolute file path from which it was loaded in [member filename] (e.g. "
+"[code]res://levels/1.tscn[/code]). Otherwise, [member filename] is set to an "
+"empty string."
+msgstr ""
+
+#: doc/classes/Node.xml:694
+msgid ""
+"The [MultiplayerAPI] instance associated with this node. Either the [member "
+"custom_multiplayer], or the default SceneTree one (if inside tree)."
+msgstr ""
+
+#: doc/classes/Node.xml:697
+msgid ""
+"The name of the node. This name is unique among the siblings (other child "
+"nodes from the same parent). When set to an existing name, the node will be "
+"automatically renamed.\n"
+"[b]Note:[/b] Auto-generated names might include the [code]@[/code] "
+"character, which is reserved for unique names when using [method add_child]. "
+"When setting the name manually, any [code]@[/code] will be removed."
+msgstr ""
+
+#: doc/classes/Node.xml:701
+msgid ""
+"The node owner. A node can have any other node as owner (as long as it is a "
+"valid parent, grandparent, etc. ascending in the tree). When saving a node "
+"(using [PackedScene]), all the nodes it owns will be saved with it. This "
+"allows for the creation of complex [SceneTree]s, with instancing and "
+"subinstancing."
+msgstr ""
+
+#: doc/classes/Node.xml:704
+msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
+msgstr ""
+
+#: doc/classes/Node.xml:707
+msgid ""
+"The node's priority in the execution order of the enabled processing "
+"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
+"NOTIFICATION_PHYSICS_PROCESS] and their internal counterparts). Nodes whose "
+"process priority value is [i]lower[/i] will have their processing callbacks "
+"executed first."
+msgstr ""
+
+#: doc/classes/Node.xml:713
+msgid "Emitted when the node is ready."
+msgstr ""
+
+#: doc/classes/Node.xml:718
+msgid "Emitted when the node is renamed."
+msgstr ""
+
+#: doc/classes/Node.xml:723
+msgid "Emitted when the node enters the tree."
+msgstr ""
+
+#: doc/classes/Node.xml:728
+msgid "Emitted after the node exits the tree and is no longer active."
+msgstr ""
+
+#: doc/classes/Node.xml:733
+msgid ""
+"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)."
+msgstr ""
+
+#: doc/classes/Node.xml:739
+msgid "Notification received when the node enters a [SceneTree]."
+msgstr ""
+
+#: doc/classes/Node.xml:742
+msgid "Notification received when the node is about to exit a [SceneTree]."
+msgstr ""
+
+#: doc/classes/Node.xml:745
+msgid "Notification received when the node is moved in the parent."
+msgstr ""
+
+#: doc/classes/Node.xml:748
+msgid "Notification received when the node is ready. See [method _ready]."
+msgstr ""
+
+#: doc/classes/Node.xml:751
+msgid "Notification received when the node is paused."
+msgstr ""
+
+#: doc/classes/Node.xml:754
+msgid "Notification received when the node is unpaused."
+msgstr ""
+
+#: doc/classes/Node.xml:757
+msgid ""
+"Notification received every frame when the physics process flag is set (see "
+"[method set_physics_process])."
+msgstr ""
+
+#: doc/classes/Node.xml:760
+msgid ""
+"Notification received every frame when the process flag is set (see [method "
+"set_process])."
+msgstr ""
+
+#: doc/classes/Node.xml:763
+msgid ""
+"Notification received when a node is set as a child of another node.\n"
+"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
+msgstr ""
+
+#: doc/classes/Node.xml:767
+msgid ""
+"Notification received when a node is unparented (parent removed it from the "
+"list of children)."
+msgstr ""
+
+#: doc/classes/Node.xml:770
+msgid "Notification received when the node is instanced."
+msgstr ""
+
+#: doc/classes/Node.xml:773
+msgid "Notification received when a drag begins."
+msgstr ""
+
+#: doc/classes/Node.xml:776
+msgid "Notification received when a drag ends."
+msgstr ""
+
+#: doc/classes/Node.xml:779
+msgid "Notification received when the node's [NodePath] changed."
+msgstr ""
+
+#: doc/classes/Node.xml:782
+msgid ""
+"Notification received every frame when the internal process flag is set (see "
+"[method set_process_internal])."
+msgstr ""
+
+#: doc/classes/Node.xml:785
+msgid ""
+"Notification received every frame when the internal physics process flag is "
+"set (see [method set_physics_process_internal])."
+msgstr ""
+
+#: doc/classes/Node.xml:788
+msgid ""
+"Notification received when the node is ready, just before [constant "
+"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
+"node enters tree, instead of only once."
+msgstr ""
+
+#: doc/classes/Node.xml:846
+msgid ""
+"Inherits pause mode from the node's parent. For the root node, it is "
+"equivalent to [constant PAUSE_MODE_STOP]. Default."
+msgstr ""
+
+#: doc/classes/Node.xml:849
+msgid "Stops processing when the [SceneTree] is paused."
+msgstr ""
+
+#: doc/classes/Node.xml:852
+msgid "Continue to process regardless of the [SceneTree] pause state."
+msgstr ""
+
+#: doc/classes/Node.xml:855
+msgid "Duplicate the node's signals."
+msgstr ""
+
+#: doc/classes/Node.xml:858
+msgid "Duplicate the node's groups."
+msgstr ""
+
+#: doc/classes/Node.xml:861
+msgid "Duplicate the node's scripts."
+msgstr ""
+
+#: doc/classes/Node.xml:864
+msgid ""
+"Duplicate using instancing.\n"
+"An instance stays linked to the original so when the original changes, the "
+"instance changes too."
+msgstr ""
+
+#: doc/classes/Node2D.xml:4
+msgid ""
+"A 2D game object, inherited by all 2D-related nodes. Has a position, "
+"rotation, scale, and Z index."
+msgstr ""
+
+#: doc/classes/Node2D.xml:7
+msgid ""
+"A 2D game object, with a transform (position, rotation, and scale). All 2D "
+"nodes, including physics objects and sprites, inherit from Node2D. Use "
+"Node2D as a parent node to move, scale and rotate children in a 2D project. "
+"Also gives control of the node's render order."
+msgstr ""
+
+#: doc/classes/Node2D.xml:11 doc/classes/Vector2.xml:16
+msgid "https://github.com/godotengine/godot-demo-projects/tree/master/2d"
+msgstr ""
+
+#: doc/classes/Node2D.xml:18
+msgid "Multiplies the current scale by the [code]ratio[/code] vector."
+msgstr ""
+
+#: doc/classes/Node2D.xml:25
+msgid ""
+"Returns the angle between the node and the [code]point[/code] in radians.\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"node2d_get_angle_to.png]Illustration of the returned angle.[/url]"
+msgstr ""
+
+#: doc/classes/Node2D.xml:33
+msgid "Returns the [Transform2D] relative to this node's parent."
+msgstr ""
+
+#: doc/classes/Node2D.xml:40
+msgid "Adds the [code]offset[/code] vector to the node's global position."
+msgstr ""
+
+#: doc/classes/Node2D.xml:47
+msgid ""
+"Rotates the node so it points towards the [code]point[/code], which is "
+"expected to use global coordinates."
+msgstr ""
+
+#: doc/classes/Node2D.xml:55
+msgid ""
+"Applies a local translation on the node's X axis based on the [method Node."
+"_process]'s [code]delta[/code]. If [code]scaled[/code] is [code]false[/"
+"code], normalizes the movement."
+msgstr ""
+
+#: doc/classes/Node2D.xml:63
+msgid ""
+"Applies a local translation on the node's Y axis based on the [method Node."
+"_process]'s [code]delta[/code]. If [code]scaled[/code] is [code]false[/"
+"code], normalizes the movement."
+msgstr ""
+
+#: doc/classes/Node2D.xml:70
+msgid ""
+"Applies a rotation to the node, in radians, starting from its current "
+"rotation."
+msgstr ""
+
+#: doc/classes/Node2D.xml:77
+msgid ""
+"Transforms the provided local position into a position in global coordinate "
+"space. The input is expected to be local relative to the [Node2D] it is "
+"called on. e.g. Applying this method to the positions of child nodes will "
+"correctly transform their positions into the global coordinate space, but "
+"applying it to a node's own position will give an incorrect result, as it "
+"will incorporate the node's own transformation into its global position."
+msgstr ""
+
+#: doc/classes/Node2D.xml:84
+msgid ""
+"Transforms the provided global position into a position in local coordinate "
+"space. The output will be local relative to the [Node2D] it is called on. e."
+"g. It is appropriate for determining the positions of child nodes, but it is "
+"not appropriate for determining its own position relative to its parent."
+msgstr ""
+
+#: doc/classes/Node2D.xml:91
+msgid ""
+"Translates the node by the given [code]offset[/code] in local coordinates."
+msgstr ""
+
+#: doc/classes/Node2D.xml:97
+msgid "Global position."
+msgstr ""
+
+#: doc/classes/Node2D.xml:100
+msgid "Global rotation in radians."
+msgstr ""
+
+#: doc/classes/Node2D.xml:103
+msgid "Global rotation in degrees."
+msgstr ""
+
+#: doc/classes/Node2D.xml:106
+msgid "Global scale."
+msgstr ""
+
+#: doc/classes/Node2D.xml:109
+msgid "Global [Transform2D]."
+msgstr ""
+
+#: doc/classes/Node2D.xml:112
+msgid "Position, relative to the node's parent."
+msgstr ""
+
+#: doc/classes/Node2D.xml:115
+msgid "Rotation in radians, relative to the node's parent."
+msgstr ""
+
+#: doc/classes/Node2D.xml:118
+msgid "Rotation in degrees, relative to the node's parent."
+msgstr ""
+
+#: doc/classes/Node2D.xml:121
+msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgstr ""
+
+#: doc/classes/Node2D.xml:124
+msgid "Local [Transform2D]."
+msgstr ""
+
+#: doc/classes/Node2D.xml:127
+msgid ""
+"If [code]true[/code], the node's Z index is relative to its parent's Z "
+"index. If this node's Z index is 2 and its parent's effective Z index is 3, "
+"then this node's effective Z index will be 2 + 3 = 5."
+msgstr ""
+
+#: doc/classes/Node2D.xml:130
+msgid ""
+"Z index. Controls the order in which the nodes render. A node with a higher "
+"Z index will display in front of others. Must be between [constant "
+"VisualServer.CANVAS_ITEM_Z_MIN] and [constant VisualServer."
+"CANVAS_ITEM_Z_MAX] (inclusive)."
+msgstr ""
+
+#: doc/classes/NodePath.xml:4
+msgid "Pre-parsed scene tree path."
+msgstr ""
+
+#: doc/classes/NodePath.xml:7
+msgid ""
+"A pre-parsed relative or absolute path in a scene tree, for use with [method "
+"Node.get_node] and similar functions. It can reference a node, a resource "
+"within a node, or a property of a node or resource. For instance, "
+"[code]\"Path2D/PathFollow2D/Sprite:texture:size\"[/code] would refer to the "
+"[code]size[/code] property of the [code]texture[/code] resource on the node "
+"named [code]\"Sprite\"[/code] which is a child of the other named nodes in "
+"the path.\n"
+"You will usually just pass a string to [method Node.get_node] and it will be "
+"automatically converted, but you may occasionally want to parse a path ahead "
+"of time with [NodePath] or the literal syntax [code]@\"path\"[/code]. "
+"Exporting a [NodePath] variable will give you a node selection widget in the "
+"properties panel of the editor, which can often be useful.\n"
+"A [NodePath] is composed of a list of slash-separated node names (like a "
+"filesystem path) and an optional colon-separated list of \"subnames\" which "
+"can be resources or properties.\n"
+"Some examples of NodePaths include the following:\n"
+"[codeblock]\n"
+"# No leading slash means it is relative to the current node.\n"
+"@\"A\" # Immediate child A\n"
+"@\"A/B\" # A's child B\n"
+"@\".\" # The current node.\n"
+"@\"..\" # The parent node.\n"
+"@\"../C\" # A sibling node C.\n"
+"# A leading slash means it is absolute from the SceneTree.\n"
+"@\"/root\" # Equivalent to get_tree().get_root().\n"
+"@\"/root/Main\" # If your main scene's root node were named \"Main\".\n"
+"@\"/root/MyAutoload\" # If you have an autoloaded node or scene.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] In the editor, [NodePath] properties are automatically updated "
+"when moving, renaming or deleting a node in the scene tree, but they are "
+"never updated at runtime."
+msgstr ""
+
+#: doc/classes/NodePath.xml:26 doc/classes/PackedScene.xml:41
+#: doc/classes/Panel.xml:10 doc/classes/PanelContainer.xml:10
+#: doc/classes/TileMap.xml:16 doc/classes/TileSet.xml:16
+msgid "https://godotengine.org/asset-library/asset/520"
+msgstr ""
+
+#: doc/classes/NodePath.xml:33
+msgid ""
+"Creates a NodePath from a string, e.g. [code]\"Path2D/PathFollow2D/Sprite:"
+"texture:size\"[/code]. A path is absolute if it starts with a slash. "
+"Absolute paths are only valid in the global scene tree, not within "
+"individual scenes. In a relative path, [code]\".\"[/code] and [code]\"..\"[/"
+"code] indicate the current node and its parent.\n"
+"The \"subnames\" optionally included after the path to the target node can "
+"point to resources or properties, and can also be nested.\n"
+"Examples of valid NodePaths (assuming that those nodes exist and have the "
+"referenced resources or properties):\n"
+"[codeblock]\n"
+"# Points to the Sprite node\n"
+"\"Path2D/PathFollow2D/Sprite\"\n"
+"# Points to the Sprite node and its \"texture\" resource.\n"
+"# get_node() would retrieve \"Sprite\", while get_node_and_resource()\n"
+"# would retrieve both the Sprite node and the \"texture\" resource.\n"
+"\"Path2D/PathFollow2D/Sprite:texture\"\n"
+"# Points to the Sprite node and its \"position\" property.\n"
+"\"Path2D/PathFollow2D/Sprite:position\"\n"
+"# Points to the Sprite node and the \"x\" component of its \"position\" "
+"property.\n"
+"\"Path2D/PathFollow2D/Sprite:position:x\"\n"
+"# Absolute path (from \"root\")\n"
+"\"/root/Level/Path2D\"\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/NodePath.xml:55
+msgid ""
+"Returns a node path with a colon character ([code]:[/code]) prepended, "
+"transforming it to a pure property path with no node name (defaults to "
+"resolving from the current node).\n"
+"[codeblock]\n"
+"# This will be parsed as a node path to the \"x\" property in the \"position"
+"\" node\n"
+"var node_path = NodePath(\"position:x\")\n"
+"# This will be parsed as a node path to the \"x\" component of the \"position"
+"\" property in the current node\n"
+"var property_path = node_path.get_as_property_path()\n"
+"print(property_path) # :position:x\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/NodePath.xml:68
+msgid ""
+"Returns all subnames concatenated with a colon character ([code]:[/code]) as "
+"separator, i.e. the right side of the first colon in a node path.\n"
+"[codeblock]\n"
+"var nodepath = NodePath(\"Path2D/PathFollow2D/Sprite:texture:load_path\")\n"
+"print(nodepath.get_concatenated_subnames()) # texture:load_path\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/NodePath.xml:79
+msgid ""
+"Gets the node name indicated by [code]idx[/code] (0 to [method "
+"get_name_count]).\n"
+"[codeblock]\n"
+"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
+"print(node_path.get_name(0)) # Path2D\n"
+"print(node_path.get_name(1)) # PathFollow2D\n"
+"print(node_path.get_name(2)) # Sprite\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/NodePath.xml:91
+msgid ""
+"Gets the number of node names which make up the path. Subnames (see [method "
+"get_subname_count]) are not included.\n"
+"For example, [code]\"Path2D/PathFollow2D/Sprite\"[/code] has 3 names."
+msgstr ""
+
+#: doc/classes/NodePath.xml:99
+msgid ""
+"Gets the resource or property name indicated by [code]idx[/code] (0 to "
+"[method get_subname_count]).\n"
+"[codeblock]\n"
+"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite:texture:load_path\")\n"
+"print(node_path.get_subname(0)) # texture\n"
+"print(node_path.get_subname(1)) # load_path\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/NodePath.xml:110
+msgid ""
+"Gets the number of resource or property names (\"subnames\") in the path. "
+"Each subname is listed after a colon character ([code]:[/code]) in the node "
+"path.\n"
+"For example, [code]\"Path2D/PathFollow2D/Sprite:texture:load_path\"[/code] "
+"has 2 subnames."
+msgstr ""
+
+#: doc/classes/NodePath.xml:117
+msgid ""
+"Returns [code]true[/code] if the node path is absolute (as opposed to "
+"relative), which means that it starts with a slash character ([code]/[/"
+"code]). Absolute node paths can be used to access the root node ([code]\"/"
+"root\"[/code]) or autoloads (e.g. [code]\"/global\"[/code] if a \"global\" "
+"autoload was registered)."
+msgstr ""
+
+#: doc/classes/NodePath.xml:123
+msgid "Returns [code]true[/code] if the node path is empty."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:4
+msgid "[OpenSimplexNoise] filled texture."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:7
+msgid ""
+"Uses an [OpenSimplexNoise] to fill the texture data. You can specify the "
+"texture size but keep in mind that larger textures will take longer to "
+"generate and seamless noise only works with square sized textures.\n"
+"NoiseTexture can also generate normalmap textures.\n"
+"The class uses [Thread]s to generate the texture data internally, so [method "
+"Texture.get_data] may return [code]null[/code] if the generation process has "
+"not completed yet. In that case, you need to wait for the texture to be "
+"generated before accessing the data:\n"
+"[codeblock]\n"
+"var texture = preload(\"res://noise.tres\")\n"
+"yield(texture, \"changed\")\n"
+"var image = texture.get_data()\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:22
+msgid ""
+"If [code]true[/code], the resulting texture contains a normal map created "
+"from the original noise interpreted as a bump map."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:25
+msgid ""
+"Strength of the bump maps used in this texture. A higher value will make the "
+"bump maps appear larger while a lower value will make them appear softer."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:29
+msgid "Height of the generated texture."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:32
+msgid "The [OpenSimplexNoise] instance used to generate the noise."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:35
+msgid ""
+"An offset used to specify the noise space coordinate of the top left corner "
+"of the generated noise. This value is ignored if [member seamless] is "
+"enabled."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:38
+msgid ""
+"Whether the texture can be tiled without visible seams or not. Seamless "
+"textures take longer to generate.\n"
+"[b]Note:[/b] Seamless noise has a lower contrast compared to non-seamless "
+"noise. This is due to the way noise uses higher dimensions for generating "
+"seamless noise."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/NoiseTexture.xml:42
+msgid "Width of the generated texture."
+msgstr ""
+
+#: doc/classes/Object.xml:4
+msgid "Base class for all non-built-in types."
+msgstr ""
+
+#: doc/classes/Object.xml:7
+msgid ""
+"Every class which is not a built-in type inherits from this class.\n"
+"You can construct Objects from scripting languages, using [code]Object.new()"
+"[/code] in GDScript, [code]new Object[/code] in C#, or the \"Construct Object"
+"\" node in VisualScript.\n"
+"Objects do not manage memory. If a class inherits from Object, you will have "
+"to delete instances of it manually. To do so, call the [method free] method "
+"from your script or delete the instance from C++.\n"
+"Some classes that extend Object add memory management. This is the case of "
+"[Reference], which counts references and deletes itself automatically when "
+"no longer referenced. [Node], another fundamental type, deletes all its "
+"children when freed from memory.\n"
+"Objects export properties, which are mainly useful for storage and editing, "
+"but not really so much in programming. Properties are exported in [method "
+"_get_property_list] and handled in [method _get] and [method _set]. However, "
+"scripting languages and C++ have simpler means to export them.\n"
+"Property membership can be tested directly in GDScript using [code]in[/"
+"code]:\n"
+"[codeblock]\n"
+"var n = Node2D.new()\n"
+"print(\"position\" in n) # Prints \"True\".\n"
+"print(\"other_property\" in n) # Prints \"False\".\n"
+"[/codeblock]\n"
+"The [code]in[/code] operator will evaluate to [code]true[/code] as long as "
+"the key exists, even if the value is [code]null[/code].\n"
+"Objects also receive notifications. Notifications are a simple way to notify "
+"the object about different events, so they can all be handled together. See "
+"[method _notification].\n"
+"[b]Note:[/b] Unlike references to a [Reference], references to an Object "
+"stored in a variable can become invalid without warning. Therefore, it's "
+"recommended to use [Reference] for data classes instead of [Object].\n"
+"[b]Note:[/b] Due to a bug, you can't create a \"plain\" Object using "
+"[code]Object.new()[/code]. Instead, use [code]ClassDB.instance(\"Object\")[/"
+"code]. This bug only applies to Object itself, not any of its descendents "
+"like [Reference]."
+msgstr ""
+
+#: doc/classes/Object.xml:24 doc/classes/Reference.xml:13
+#: doc/classes/Resource.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/workflow/best_practices/"
+"node_alternatives.html"
+msgstr ""
+
+#: doc/classes/Object.xml:25
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
+"gdscript_exports.html#advanced-exports"
+msgstr ""
+
+#: doc/classes/Object.xml:32
+msgid ""
+"Virtual method which can be overridden to customize the return value of "
+"[method get].\n"
+"Returns the given property. Returns [code]null[/code] if the [code]property[/"
+"code] does not exist."
+msgstr ""
+
+#: doc/classes/Object.xml:39
+msgid ""
+"Virtual method which can be overridden to customize the return value of "
+"[method get_property_list].\n"
+"Returns the object's property list as an [Array] of dictionaries.\n"
+"Each property's [Dictionary] must contain at least [code]name: String[/code] "
+"and [code]type: int[/code] (see [enum Variant.Type]) entries. Optionally, it "
+"can also include [code]hint: int[/code] (see [enum PropertyHint]), "
+"[code]hint_string: String[/code], and [code]usage: int[/code] (see [enum "
+"PropertyUsageFlags])."
+msgstr ""
+
+#: doc/classes/Object.xml:47
+msgid "Called when the object is initialized."
+msgstr ""
+
+#: doc/classes/Object.xml:54
+msgid ""
+"Called whenever the object receives a notification, which is identified in "
+"[code]what[/code] by a constant. The base [Object] has two constants "
+"[constant NOTIFICATION_POSTINITIALIZE] and [constant "
+"NOTIFICATION_PREDELETE], but subclasses such as [Node] define a lot more "
+"notifications which are also received by this method."
+msgstr ""
+
+#: doc/classes/Object.xml:62
+msgid ""
+"Virtual method which can be overridden to customize the return value of "
+"[method set].\n"
+"Sets a property. Returns [code]true[/code] if the [code]property[/code] "
+"exists."
+msgstr ""
+
+#: doc/classes/Object.xml:69
+msgid ""
+"Virtual method which can be overridden to customize the return value of "
+"[method to_string], and thus the object's representation where it is "
+"converted to a string, e.g. with [code]print(obj)[/code].\n"
+"Returns a [String] representing the object. If not overridden, defaults to "
+"[code]\"[ClassName:RID]\"[/code]."
+msgstr ""
+
+#: doc/classes/Object.xml:78
+msgid ""
+"Adds a user-defined [code]signal[/code]. Arguments are optional, but can be "
+"added as an [Array] of dictionaries, each containing [code]name: String[/"
+"code] and [code]type: int[/code] (see [enum Variant.Type]) entries."
+msgstr ""
+
+#: doc/classes/Object.xml:85
+msgid ""
+"Calls the [code]method[/code] on the object and returns the result. This "
+"method supports a variable number of arguments, so parameters are passed as "
+"a comma separated list. Example:\n"
+"[codeblock]\n"
+"call(\"set\", \"position\", Vector2(42.0, 0.0))\n"
+"[/codeblock]\n"
+"[b]Note:[/b] In C#, the method name must be specified as snake_case if it is "
+"defined by a built-in Godot node. This doesn't apply to user-defined methods "
+"where you should use the same convention as in the C# source (typically "
+"PascalCase)."
+msgstr ""
+
+#: doc/classes/Object.xml:96
+msgid ""
+"Calls the [code]method[/code] on the object during idle time. This method "
+"supports a variable number of arguments, so parameters are passed as a comma "
+"separated list. Example:\n"
+"[codeblock]\n"
+"call_deferred(\"set\", \"position\", Vector2(42.0, 0.0))\n"
+"[/codeblock]\n"
+"[b]Note:[/b] In C#, the method name must be specified as snake_case if it is "
+"defined by a built-in Godot node. This doesn't apply to user-defined methods "
+"where you should use the same convention as in the C# source (typically "
+"PascalCase)."
+msgstr ""
+
+#: doc/classes/Object.xml:108
+msgid ""
+"Calls the [code]method[/code] on the object and returns the result. "
+"Contrarily to [method call], this method does not support a variable number "
+"of arguments but expects all parameters to be via a single [Array].\n"
+"[codeblock]\n"
+"callv(\"set\", [ \"position\", Vector2(42.0, 0.0) ])\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Object.xml:117
+msgid ""
+"Returns [code]true[/code] if the object can translate strings. See [method "
+"set_message_translation] and [method tr]."
+msgstr ""
+
+#: doc/classes/Object.xml:128
+msgid ""
+"Connects a [code]signal[/code] to a [code]method[/code] on a [code]target[/"
+"code] object. Pass optional [code]binds[/code] to the call as an [Array] of "
+"parameters. These parameters will be passed to the method after any "
+"parameter used in the call to [method emit_signal]. Use [code]flags[/code] "
+"to set deferred or one-shot connections. See [enum ConnectFlags] constants.\n"
+"A [code]signal[/code] can only be connected once to a [code]method[/code]. "
+"It will throw an error if already connected, unless the signal was connected "
+"with [constant CONNECT_REFERENCE_COUNTED]. To avoid this, first, use [method "
+"is_connected] to check for existing connections.\n"
+"If the [code]target[/code] is destroyed in the game's lifecycle, the "
+"connection will be lost.\n"
+"Examples:\n"
+"[codeblock]\n"
+"connect(\"pressed\", self, \"_on_Button_pressed\") # BaseButton signal\n"
+"connect(\"text_entered\", self, \"_on_LineEdit_text_entered\") # LineEdit "
+"signal\n"
+"connect(\"hit\", self, \"_on_Player_hit\", [ weapon_type, damage ]) # User-"
+"defined signal\n"
+"[/codeblock]\n"
+"An example of the relationship between [code]binds[/code] passed to [method "
+"connect] and parameters used when calling [method emit_signal]:\n"
+"[codeblock]\n"
+"connect(\"hit\", self, \"_on_Player_hit\", [ weapon_type, damage ]) # "
+"weapon_type and damage are passed last\n"
+"emit_signal(\"hit\", \"Dark lord\", 5) # \"Dark lord\" and 5 are passed "
+"first\n"
+"func _on_Player_hit(hit_by, level, weapon_type, damage):\n"
+" print(\"Hit by %s (lvl %d) with weapon %s for %d damage\" % [hit_by, "
+"level, weapon_type, damage])\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Object.xml:152
+msgid ""
+"Disconnects a [code]signal[/code] from a [code]method[/code] on the given "
+"[code]target[/code].\n"
+"If you try to disconnect a connection that does not exist, the method will "
+"throw an error. Use [method is_connected] to ensure that the connection "
+"exists."
+msgstr ""
+
+#: doc/classes/Object.xml:160
+msgid ""
+"Emits the given [code]signal[/code]. The signal must exist, so it should be "
+"a built-in signal of this class or one of its parent classes, or a user-"
+"defined signal. This method supports a variable number of arguments, so "
+"parameters are passed as a comma separated list. Example:\n"
+"[codeblock]\n"
+"emit_signal(\"hit\", weapon_type, damage)\n"
+"emit_signal(\"game_over\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Object.xml:170
+msgid ""
+"Deletes the object from memory immediately. For [Node]s, you may want to use "
+"[method Node.queue_free] to queue the node for safe deletion at the end of "
+"the current frame.\n"
+"[b]Important:[/b] If you have a variable pointing to an object, it will "
+"[i]not[/i] be assigned to [code]null[/code] once the object is freed. "
+"Instead, it will point to a [i]previously freed instance[/i] and you should "
+"validate it with [method @GDScript.is_instance_valid] before attempting to "
+"call its methods or access its properties."
+msgstr ""
+
+#: doc/classes/Object.xml:178
+msgid ""
+"Returns the [Variant] value of the given [code]property[/code]. If the "
+"[code]property[/code] doesn't exist, this will return [code]null[/code].\n"
+"[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)."
+msgstr ""
+
+#: doc/classes/Object.xml:185
+msgid ""
+"Returns the object's class as a [String]. See also [method is_class].\n"
+"[b]Note:[/b] [method get_class] does not take [code]class_name[/code] "
+"declarations into account. If the object has a [code]class_name[/code] "
+"defined, the base class name will be returned instead."
+msgstr ""
+
+#: doc/classes/Object.xml:192
+msgid ""
+"Returns an [Array] of dictionaries with information about signals that are "
+"connected to the object.\n"
+"Each [Dictionary] contains three String entries:\n"
+"- [code]source[/code] is a reference to the signal emitter.\n"
+"- [code]signal_name[/code] is the name of the connected signal.\n"
+"- [code]method_name[/code] is the name of the method to which the signal is "
+"connected."
+msgstr ""
+
+#: doc/classes/Object.xml:203
+msgid ""
+"Gets the object's property indexed by the given [NodePath]. The node path "
+"should be relative to the current object and can use the colon character "
+"([code]:[/code]) to access nested properties. Examples: [code]\"position:x"
+"\"[/code] or [code]\"material:next_pass:blend_mode\"[/code]."
+msgstr ""
+
+#: doc/classes/Object.xml:209
+msgid ""
+"Returns the object's unique instance ID.\n"
+"This ID can be saved in [EncodedObjectAsID], and can be used to retrieve the "
+"object instance with [method @GDScript.instance_from_id]."
+msgstr ""
+
+#: doc/classes/Object.xml:217
+msgid "Returns the object's metadata entry for the given [code]name[/code]."
+msgstr ""
+
+#: doc/classes/Object.xml:223
+msgid "Returns the object's metadata as a [PoolStringArray]."
+msgstr ""
+
+#: doc/classes/Object.xml:229
+msgid "Returns the object's methods and their signatures as an [Array]."
+msgstr ""
+
+#: doc/classes/Object.xml:235
+msgid ""
+"Returns the object's property list as an [Array] of dictionaries.\n"
+"Each property's [Dictionary] contain at least [code]name: String[/code] and "
+"[code]type: int[/code] (see [enum Variant.Type]) entries. Optionally, it can "
+"also include [code]hint: int[/code] (see [enum PropertyHint]), "
+"[code]hint_string: String[/code], and [code]usage: int[/code] (see [enum "
+"PropertyUsageFlags])."
+msgstr ""
+
+#: doc/classes/Object.xml:242
+msgid ""
+"Returns the object's [Script] instance, or [code]null[/code] if none is "
+"assigned."
+msgstr ""
+
+#: doc/classes/Object.xml:249
+msgid "Returns an [Array] of connections for the given [code]signal[/code]."
+msgstr ""
+
+#: doc/classes/Object.xml:255
+msgid "Returns the list of signals as an [Array] of dictionaries."
+msgstr ""
+
+#: doc/classes/Object.xml:262
+msgid ""
+"Returns [code]true[/code] if a metadata entry is found with the given "
+"[code]name[/code]."
+msgstr ""
+
+#: doc/classes/Object.xml:269
+msgid ""
+"Returns [code]true[/code] if the object contains the given [code]method[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Object.xml:276
+msgid "Returns [code]true[/code] if the given [code]signal[/code] exists."
+msgstr ""
+
+#: doc/classes/Object.xml:283
+msgid ""
+"Returns [code]true[/code] if the given user-defined [code]signal[/code] "
+"exists. Only signals added using [method add_user_signal] are taken into "
+"account."
+msgstr ""
+
+#: doc/classes/Object.xml:289
+msgid "Returns [code]true[/code] if signal emission blocking is enabled."
+msgstr ""
+
+#: doc/classes/Object.xml:296
+msgid ""
+"Returns [code]true[/code] if the object inherits from the given [code]class[/"
+"code]. See also [method get_class].\n"
+"[b]Note:[/b] [method is_class] does not take [code]class_name[/code] "
+"declarations into account. If the object has a [code]class_name[/code] "
+"defined, [method is_class] will return [code]false[/code] for that name."
+msgstr ""
+
+#: doc/classes/Object.xml:306
+msgid ""
+"Returns [code]true[/code] if a connection exists for a given [code]signal[/"
+"code], [code]target[/code], and [code]method[/code]."
+msgstr ""
+
+#: doc/classes/Object.xml:312
+msgid ""
+"Returns [code]true[/code] if the [method Node.queue_free] method was called "
+"for the object."
+msgstr ""
+
+#: doc/classes/Object.xml:320
+msgid ""
+"Send a given notification to the object, which will also trigger a call to "
+"the [method _notification] method of all classes that the object inherits "
+"from.\n"
+"If [code]reversed[/code] is [code]true[/code], [method _notification] is "
+"called first on the object's own class, and then up to its successive parent "
+"classes. If [code]reversed[/code] is [code]false[/code], [method "
+"_notification] is called first on the highest ancestor ([Object] itself), "
+"and then down to its successive inheriting classes."
+msgstr ""
+
+#: doc/classes/Object.xml:327
+msgid ""
+"Notify the editor that the property list has changed, so that editor plugins "
+"can take the new values into account. Does nothing on export builds."
+msgstr ""
+
+#: doc/classes/Object.xml:334
+msgid ""
+"Removes a given entry from the object's metadata. See also [method set_meta]."
+msgstr ""
+
+#: doc/classes/Object.xml:342
+msgid ""
+"Assigns a new value to the given property. If the [code]property[/code] does "
+"not exist, nothing will happen.\n"
+"[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)."
+msgstr ""
+
+#: doc/classes/Object.xml:350
+msgid "If set to [code]true[/code], signal emission is blocked."
+msgstr ""
+
+#: doc/classes/Object.xml:358
+msgid ""
+"Assigns a new value to the given property, after the current frame's physics "
+"step. This is equivalent to calling [method set] via [method call_deferred], "
+"i.e. [code]call_deferred(\"set\", property, value)[/code].\n"
+"[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)."
+msgstr ""
+
+#: doc/classes/Object.xml:367
+msgid ""
+"Assigns a new value to the property identified by the [NodePath]. The node "
+"path should be relative to the current object and can use the colon "
+"character ([code]:[/code]) to access nested properties. Example:\n"
+"[codeblock]\n"
+"set_indexed(\"position\", Vector2(42, 0))\n"
+"set_indexed(\"position:y\", -10)\n"
+"print(position) # (42, -10)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Object.xml:379
+msgid ""
+"Defines whether the object can translate strings (with calls to [method "
+"tr]). Enabled by default."
+msgstr ""
+
+#: doc/classes/Object.xml:387
+msgid ""
+"Adds, changes or removes a given entry in the object's metadata. Metadata "
+"are serialized and can take any [Variant] value.\n"
+"To remove a given entry from the object's metadata, use [method "
+"remove_meta]. Metadata is also removed if its value is set to [code]null[/"
+"code]. This means you can also use [code]set_meta(\"name\", null)[/code] to "
+"remove metadata for [code]\"name\"[/code]."
+msgstr ""
+
+#: doc/classes/Object.xml:395
+msgid ""
+"Assigns a script to the object. Each object can have a single script "
+"assigned to it, which are used to extend its functionality.\n"
+"If the object already had a script, the previous script instance will be "
+"freed and its variables and state will be lost. The new script's [method "
+"_init] method will be called."
+msgstr ""
+
+#: doc/classes/Object.xml:402
+msgid ""
+"Returns a [String] representing the object. If not overridden, defaults to "
+"[code]\"[ClassName:RID]\"[/code].\n"
+"Override the method [method _to_string] to customize the [String] "
+"representation."
+msgstr ""
+
+#: doc/classes/Object.xml:410
+msgid ""
+"Translates a message using translation catalogs configured in the Project "
+"Settings.\n"
+"Only works if message translation is enabled (which it is by default), "
+"otherwise it returns the [code]message[/code] unchanged. See [method "
+"set_message_translation]."
+msgstr ""
+
+#: doc/classes/Object.xml:418
+msgid "Emitted whenever the object's script is changed."
+msgstr ""
+
+#: doc/classes/Object.xml:424
+msgid "Called right when the object is initialized. Not available in script."
+msgstr ""
+
+#: doc/classes/Object.xml:427
+msgid "Called before the object is about to be deleted."
+msgstr ""
+
+#: doc/classes/Object.xml:430
+msgid ""
+"Connects a signal in deferred mode. This way, signal emissions are stored in "
+"a queue, then set on idle time."
+msgstr ""
+
+#: doc/classes/Object.xml:433
+msgid "Persisting connections are saved when the object is serialized to file."
+msgstr ""
+
+#: doc/classes/Object.xml:436
+msgid "One-shot connections disconnect themselves after emission."
+msgstr ""
+
+#: doc/classes/Object.xml:439
+msgid ""
+"Connect a signal as reference-counted. This means that a given signal can be "
+"connected several times to the same target, and will only be fully "
+"disconnected once no references are left."
+msgstr ""
+
+#: doc/classes/Occluder.xml:4
+msgid "Allows [OccluderShape]s to be used for occlusion culling."
+msgstr ""
+
+#: doc/classes/Occluder.xml:7
+msgid ""
+"[Occluder]s that are placed within your scene will automatically cull "
+"objects that are hidden from view by the occluder. This can increase "
+"performance by decreasing the amount of objects drawn.\n"
+"[Occluder]s are totally dynamic, you can move them as you wish. This means "
+"you can for example, place occluders on a moving spaceship, and have it "
+"occlude objects as it flies past.\n"
+"You can place a large number of [Occluder]s within a scene. As it would be "
+"counterproductive to cull against hundreds of occluders, the system will "
+"automatically choose a selection of these for active use during any given "
+"frame, based a screen space metric. Larger occluders are favored, as well as "
+"those close to the camera. Note that a small occluder close to the camera "
+"may be a better occluder in terms of screen space than a large occluder far "
+"in the distance.\n"
+"The type of occlusion primitive is determined by the [OccluderShape] that "
+"you add to the [Occluder]. Some [OccluderShape]s may allow more than one "
+"primitive in a single, node, for greater efficiency.\n"
+"Although [Occluder]s work in general use, they also become even more "
+"powerful when used in conjunction with the portal system. Occluders are "
+"placed in rooms (based on their origin), and can block portals (and thus "
+"entire rooms) as well as objects from rendering."
+msgstr ""
+
+#: doc/classes/OccluderPolygon2D.xml:4
+msgid "Defines a 2D polygon for LightOccluder2D."
+msgstr ""
+
+#: doc/classes/OccluderPolygon2D.xml:7
+msgid ""
+"Editor facility that helps you draw a 2D polygon used as resource for "
+"[LightOccluder2D]."
+msgstr ""
+
+#: doc/classes/OccluderPolygon2D.xml:15
+msgid ""
+"If [code]true[/code], closes the polygon. A closed OccluderPolygon2D "
+"occludes the light coming from any direction. An opened OccluderPolygon2D "
+"occludes the light only at its outline's direction."
+msgstr ""
+
+#: doc/classes/OccluderPolygon2D.xml:18
+msgid "The culling mode to use."
+msgstr ""
+
+#: doc/classes/OccluderPolygon2D.xml:21
+msgid ""
+"A [Vector2] array with the index for polygon's vertices positions.\n"
+"[b]Note:[/b] The returned value is a copy of the underlying array, rather "
+"than a reference."
+msgstr ""
+
+#: doc/classes/OccluderPolygon2D.xml:27
+msgid "Culling is disabled. See [member cull_mode]."
+msgstr ""
+
+#: doc/classes/OccluderPolygon2D.xml:30
+msgid ""
+"Culling is performed in the clockwise direction. See [member cull_mode]."
+msgstr ""
+
+#: doc/classes/OccluderPolygon2D.xml:33
+msgid ""
+"Culling is performed in the counterclockwise direction. See [member "
+"cull_mode]."
+msgstr ""
+
+#: doc/classes/OccluderShape.xml:4
+msgid ""
+"Base class for shapes used for occlusion culling by the [Occluder] node."
+msgstr ""
+
+#: doc/classes/OccluderShape.xml:7
+msgid "[Occluder]s can use any primitive shape derived from [OccluderShape]."
+msgstr ""
+
+#: doc/classes/OccluderShapeSphere.xml:4
+msgid "Spherical occlusion primitive for use with the [Occluder] node."
+msgstr ""
+
+#: doc/classes/OccluderShapeSphere.xml:7
+msgid ""
+"[OccluderShape]s are resources used by [Occluder] nodes, allowing geometric "
+"occlusion culling.\n"
+"This shape can include multiple spheres. These can be created and deleted "
+"either in the Editor inspector or by calling [code]set_spheres[/code]. The "
+"sphere positions can be set by dragging the handle in the Editor viewport. "
+"The radius can be set with the smaller handle."
+msgstr ""
+
+#: doc/classes/OccluderShapeSphere.xml:18
+msgid "Sets an individual sphere's position."
+msgstr ""
+
+#: doc/classes/OccluderShapeSphere.xml:26
+msgid "Sets an individual sphere's radius."
+msgstr ""
+
+#: doc/classes/OccluderShapeSphere.xml:32
+msgid ""
+"The sphere data can be accessed as an array of [Plane]s. The position of "
+"each sphere is stored in the [code]normal[/code], and the radius is stored "
+"in the [code]d[/code] value of the plane."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:4
+msgid "Omnidirectional light, such as a light bulb or a candle."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:7
+msgid ""
+"An Omnidirectional light is a type of [Light] that emits light in all "
+"directions. The light is attenuated by distance and this attenuation can be "
+"configured by changing its energy, radius, and attenuation parameters.\n"
+"[b]Note:[/b] By default, only 32 OmniLights may affect a single mesh "
+"[i]resource[/i] at once. Consider splitting your level into several meshes "
+"to decrease the likelihood that more than 32 lights will affect the same "
+"mesh resource. Splitting the level mesh will also improve frustum culling "
+"effectiveness, leading to greater performance. If you need to use more "
+"lights per mesh, you can increase [member ProjectSettings.rendering/limits/"
+"rendering/max_lights_per_object] at the cost of shader compilation times."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:17
+msgid ""
+"The light's attenuation (drop-off) curve. A number of presets are available "
+"in the [b]Inspector[/b] by right-clicking the curve."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:20
+msgid ""
+"The light's radius. Note that the effectively lit area may appear to be "
+"smaller depending on the [member omni_attenuation] in use. No matter the "
+"[member omni_attenuation] in use, the light will never reach anything "
+"outside this radius."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:23
+msgid "See [enum ShadowDetail]."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:26
+msgid "See [enum ShadowMode]."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:31
+msgid ""
+"Shadows are rendered to a dual-paraboloid texture. Faster than [constant "
+"SHADOW_CUBE], but lower-quality."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:34
+msgid ""
+"Shadows are rendered to a cubemap. Slower than [constant "
+"SHADOW_DUAL_PARABOLOID], but higher-quality."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:37
+msgid "Use more detail vertically when computing the shadow."
+msgstr ""
+
+#: doc/classes/OmniLight.xml:40
+msgid "Use more detail horizontally when computing the shadow."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:4
+msgid "Noise generator based on Open Simplex."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:7
+msgid ""
+"This resource allows you to configure and sample a fractal noise space. Here "
+"is a brief usage example that configures an OpenSimplexNoise and gets "
+"samples at various positions and dimensions:\n"
+"[codeblock]\n"
+"var noise = OpenSimplexNoise.new()\n"
+"\n"
+"# Configure\n"
+"noise.seed = randi()\n"
+"noise.octaves = 4\n"
+"noise.period = 20.0\n"
+"noise.persistence = 0.8\n"
+"\n"
+"# Sample\n"
+"print(\"Values:\")\n"
+"print(noise.get_noise_2d(1.0, 1.0))\n"
+"print(noise.get_noise_3d(0.5, 3.0, 15.0))\n"
+"print(noise.get_noise_4d(0.5, 1.9, 4.7, 0.0))\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:33
+msgid ""
+"Generate a noise image in [constant Image.FORMAT_L8] format with the "
+"requested [code]width[/code] and [code]height[/code], based on the current "
+"noise parameters. If [code]noise_offset[/code] is specified, then the offset "
+"value is used as the coordinates of the top-left corner of the generated "
+"noise."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:40
+msgid ""
+"Returns the 1D noise value [code][-1,1][/code] at the given x-coordinate.\n"
+"[b]Note:[/b] This method actually returns the 2D noise value [code][-1,1][/"
+"code] with fixed y-coordinate value 0.0."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:49
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:56
+msgid "Returns the 2D noise value [code][-1,1][/code] at the given position."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:65
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:72
+msgid "Returns the 3D noise value [code][-1,1][/code] at the given position."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:82
+msgid "Returns the 4D noise value [code][-1,1][/code] at the given position."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:89
+msgid ""
+"Generate a tileable noise image in [constant Image.FORMAT_L8] format, based "
+"on the current noise parameters. Generated seamless images are always square "
+"([code]size[/code] × [code]size[/code]).\n"
+"[b]Note:[/b] Seamless noise has a lower contrast compared to non-seamless "
+"noise. This is due to the way noise uses higher dimensions for generating "
+"seamless noise."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:96
+msgid "Difference in period between [member octaves]."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:99
+msgid ""
+"Number of OpenSimplex noise layers that are sampled to get the fractal "
+"noise. Higher values result in more detailed noise but take more time to "
+"generate.\n"
+"[b]Note:[/b] The maximum allowed value is 9."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:103
+msgid ""
+"Period of the base octave. A lower period results in a higher-frequency "
+"noise (more value changes across the same distance)."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:106
+msgid ""
+"Contribution factor of the different octaves. A [code]persistence[/code] "
+"value of 1 means all the octaves have the same contribution, a value of 0.5 "
+"means each octave contributes half as much as the previous one."
+msgstr ""
+
+#: modules/opensimplex/doc_classes/OpenSimplexNoise.xml:109
+msgid ""
+"Seed used to generate random values, different seeds will generate different "
+"noise maps."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:4
+msgid "Button control that provides selectable options when pressed."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:7
+msgid ""
+"OptionButton is a type button that provides a selectable list of items when "
+"pressed. The item selected becomes the \"current\" item and is displayed as "
+"the button text.\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:19
+msgid ""
+"Adds an item, with a [code]texture[/code] icon, text [code]label[/code] and "
+"(optionally) [code]id[/code]. If no [code]id[/code] is passed, the item "
+"index will be used as the item's ID. New items are appended at the end."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:27
+msgid ""
+"Adds an item, with text [code]label[/code] and (optionally) [code]id[/code]. "
+"If no [code]id[/code] is passed, the item index will be used as the item's "
+"ID. New items are appended at the end."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:33
+msgid ""
+"Adds a separator to the list of items. Separators help to group items. "
+"Separator also takes up an index and is appended at the end."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:39
+msgid "Clears all the items in the [OptionButton]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:45
+msgid "Returns the amount of items in the OptionButton, including separators."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:52 doc/classes/PopupMenu.xml:203
+msgid "Returns the icon of the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:59
+msgid "Returns the ID of the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:66
+msgid "Returns the index of the item with the given [code]id[/code]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:73
+msgid ""
+"Retrieves the metadata of an item. Metadata may be any type and can be used "
+"to store extra information about an item, such as an external string ID."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:80 doc/classes/PopupMenu.xml:245
+msgid "Returns the text of the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:93
+msgid ""
+"Returns the ID of the selected item, or [code]0[/code] if no item is "
+"selected."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:99
+msgid ""
+"Gets the metadata of the selected item. Metadata for items can be set using "
+"[method set_item_metadata]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:106
+msgid ""
+"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:113
+msgid "Removes the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:120
+msgid ""
+"Selects an item by index and makes it the current item. This will work even "
+"if the item is disabled."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:128
+msgid ""
+"Sets whether the item at index [code]idx[/code] is disabled.\n"
+"Disabled items are drawn differently in the dropdown and are not selectable "
+"by the user. If the current selected item is set as disabled, it will remain "
+"selected."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:137
+msgid "Sets the icon of the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:145
+msgid "Sets the ID of the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:153
+msgid ""
+"Sets the metadata of an item. Metadata may be of any type and can be used to "
+"store extra information about an item, such as an external string ID."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
+msgid "Sets the text of the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:169
+msgid ""
+"The index of the currently selected item, or [code]-1[/code] if no item is "
+"selected."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:177
+msgid ""
+"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
+"[code]ui_down[/code] actions. The index of the item selected is passed as "
+"argument."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:183
+msgid ""
+"Emitted when the current item has been changed by the user. The index of the "
+"item selected is passed as argument."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:191
+msgid "The arrow icon to be drawn on the right end of the button."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:194
+msgid ""
+"The horizontal space between the arrow icon and the right edge of the button."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:197
+msgid "[StyleBox] used when the [OptionButton] is disabled."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:200
+msgid ""
+"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
+"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
+"visual effect."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:203
+msgid "[Font] of the [OptionButton]'s text."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:206
+msgid "Default text [Color] of the [OptionButton]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:209
+msgid "Text [Color] used when the [OptionButton] is disabled."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:212
+msgid "Text [Color] used when the [OptionButton] is being hovered."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:215
+msgid "Text [Color] used when the [OptionButton] is being pressed."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:218
+msgid "[StyleBox] used when the [OptionButton] is being hovered."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:221
+msgid "The horizontal space between [OptionButton]'s icon and text."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:224
+msgid "Default [StyleBox] for the [OptionButton]."
+msgstr ""
+
+#: doc/classes/OptionButton.xml:227
+msgid "[StyleBox] used when the [OptionButton] is being pressed."
+msgstr ""
+
+#: doc/classes/OS.xml:4
+msgid "Operating System functions."
+msgstr ""
+
+#: doc/classes/OS.xml:7
+msgid ""
+"Operating System functions. OS wraps the most common functionality to "
+"communicate with the host operating system, such as the clipboard, video "
+"driver, date and time, timers, environment variables, execution of binaries, "
+"command line, etc."
+msgstr ""
+
+#: doc/classes/OS.xml:18
+msgid ""
+"Displays a modal dialog box using the host OS' facilities. Execution is "
+"blocked until the dialog is closed."
+msgstr ""
+
+#: doc/classes/OS.xml:24
+msgid "Returns [code]true[/code] if the host OS allows drawing."
+msgstr ""
+
+#: doc/classes/OS.xml:30
+msgid ""
+"Returns [code]true[/code] if the current host platform is using multiple "
+"threads."
+msgstr ""
+
+#: doc/classes/OS.xml:36
+msgid "Centers the window on the screen if in windowed mode."
+msgstr ""
+
+#: doc/classes/OS.xml:42
+msgid ""
+"Shuts down system MIDI driver.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:50
+msgid ""
+"Delays execution of the current thread by [code]msec[/code] milliseconds. "
+"[code]msec[/code] must be greater than or equal to [code]0[/code]. "
+"Otherwise, [method delay_msec] will do nothing and will print an error "
+"message.\n"
+"[b]Note:[/b] [method delay_msec] is a [i]blocking[/i] way to delay code "
+"execution. To delay code execution in a non-blocking way, see [method "
+"SceneTree.create_timer]. Yielding with [method SceneTree.create_timer] will "
+"delay the execution of code placed below the [code]yield[/code] without "
+"affecting the rest of the project (or editor, for [EditorPlugin]s and "
+"[EditorScript]s).\n"
+"[b]Note:[/b] When [method delay_msec] is called on the main thread, it will "
+"freeze the project and will prevent it from redrawing and registering input "
+"until the delay has passed. When using [method delay_msec] as part of an "
+"[EditorPlugin] or [EditorScript], it will freeze the editor but won't freeze "
+"the project if it is currently running (since the project is an independent "
+"child process)."
+msgstr ""
+
+#: doc/classes/OS.xml:59
+msgid ""
+"Delays execution of the current thread by [code]usec[/code] microseconds. "
+"[code]usec[/code] must be greater than or equal to [code]0[/code]. "
+"Otherwise, [method delay_usec] will do nothing and will print an error "
+"message.\n"
+"[b]Note:[/b] [method delay_usec] is a [i]blocking[/i] way to delay code "
+"execution. To delay code execution in a non-blocking way, see [method "
+"SceneTree.create_timer]. Yielding with [method SceneTree.create_timer] will "
+"delay the execution of code placed below the [code]yield[/code] without "
+"affecting the rest of the project (or editor, for [EditorPlugin]s and "
+"[EditorScript]s).\n"
+"[b]Note:[/b] When [method delay_usec] is called on the main thread, it will "
+"freeze the project and will prevent it from redrawing and registering input "
+"until the delay has passed. When using [method delay_usec] as part of an "
+"[EditorPlugin] or [EditorScript], it will freeze the editor but won't freeze "
+"the project if it is currently running (since the project is an independent "
+"child process)."
+msgstr ""
+
+#: doc/classes/OS.xml:68
+msgid ""
+"Dumps the memory allocation ringlist to a file (only works in debug).\n"
+"Entry format per line: \"Address - Size - Description\"."
+msgstr ""
+
+#: doc/classes/OS.xml:76
+msgid ""
+"Dumps all used resources to file (only works in debug).\n"
+"Entry format per line: \"Resource Type : Resource Location\".\n"
+"At the end of the file is a statistic of all used Resource Types."
+msgstr ""
+
+#: doc/classes/OS.xml:89
+msgid ""
+"Execute the file at the given path with the arguments passed as an array of "
+"strings. Platform path resolution will take place. The resolved file must "
+"exist and be executable.\n"
+"The arguments are used in the given order and separated by a space, so "
+"[code]OS.execute(\"ping\", [\"-w\", \"3\", \"godotengine.org\"], false)[/"
+"code] will resolve to [code]ping -w 3 godotengine.org[/code] in the system's "
+"shell.\n"
+"This method has slightly different behavior based on whether the "
+"[code]blocking[/code] mode is enabled.\n"
+"If [code]blocking[/code] is [code]true[/code], the Godot thread will pause "
+"its execution while waiting for the process to terminate. The shell output "
+"of the process will be written to the [code]output[/code] array as a single "
+"string. When the process terminates, the Godot thread will resume "
+"execution.\n"
+"If [code]blocking[/code] is [code]false[/code], the Godot thread will "
+"continue while the new process runs. It is not possible to retrieve the "
+"shell output in non-blocking mode, so [code]output[/code] will be empty.\n"
+"The return value also depends on the blocking mode. When blocking, the "
+"method will return an exit code of the process. When non-blocking, the "
+"method returns a process ID, which you can use to monitor the process (and "
+"potentially terminate it with [method kill]). If the process forking (non-"
+"blocking) or opening (blocking) fails, the method will return [code]-1[/"
+"code] or another exit code.\n"
+"Example of blocking mode and retrieving the shell output:\n"
+"[codeblock]\n"
+"var output = []\n"
+"var exit_code = OS.execute(\"ls\", [\"-l\", \"/tmp\"], true, output)\n"
+"[/codeblock]\n"
+"Example of non-blocking mode, running another instance of the project and "
+"storing its process ID:\n"
+"[codeblock]\n"
+"var pid = OS.execute(OS.get_executable_path(), [], false)\n"
+"[/codeblock]\n"
+"If you wish to access a shell built-in or perform a composite command, a "
+"platform-specific shell can be invoked. For example:\n"
+"[codeblock]\n"
+"OS.execute(\"CMD.exe\", [\"/C\", \"cd %TEMP% && dir\"], true, output)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and "
+"Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:115
+msgid "Returns the scancode of the given string (e.g. \"Escape\")."
+msgstr ""
+
+#: doc/classes/OS.xml:121
+msgid "Returns the total number of available audio drivers."
+msgstr ""
+
+#: doc/classes/OS.xml:128
+msgid "Returns the audio driver name for the given index."
+msgstr ""
+
+#: doc/classes/OS.xml:134
+msgid ""
+"Returns the [i]global[/i] cache data directory according to the operating "
+"system's standards. On desktop platforms, this path can be overridden by "
+"setting the [code]XDG_CACHE_HOME[/code] environment variable before starting "
+"the project. See [url=https://docs.godotengine.org/en/latest/tutorials/io/"
+"data_paths.html]File paths in Godot projects[/url] in the documentation for "
+"more information. See also [method get_config_dir] and [method "
+"get_data_dir].\n"
+"Not to be confused with [method get_user_data_dir], which returns the "
+"[i]project-specific[/i] user data path."
+msgstr ""
+
+#: doc/classes/OS.xml:141
+msgid ""
+"Returns the command-line arguments passed to the engine.\n"
+"Command-line arguments can be written in any form, including both [code]--"
+"key value[/code] and [code]--key=value[/code] forms so they can be properly "
+"parsed, as long as custom command-line arguments do not conflict with engine "
+"arguments.\n"
+"You can also incorporate environment variables using the [method "
+"get_environment] method.\n"
+"You can set [member ProjectSettings.editor/main_run_args] to define command-"
+"line arguments to be passed by the editor when running the project.\n"
+"Here's a minimal example on how to parse command-line arguments into a "
+"dictionary using the [code]--key=value[/code] form for arguments:\n"
+"[codeblock]\n"
+"var arguments = {}\n"
+"for argument in OS.get_cmdline_args():\n"
+" if argument.find(\"=\") > -1:\n"
+" var key_value = argument.split(\"=\")\n"
+" arguments[key_value[0].lstrip(\"--\")] = key_value[1]\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/OS.xml:158
+msgid ""
+"Returns the [i]global[/i] user configuration directory according to the "
+"operating system's standards. On desktop platforms, this path can be "
+"overridden by setting the [code]XDG_CONFIG_HOME[/code] environment variable "
+"before starting the project. See [url=https://docs.godotengine.org/en/latest/"
+"tutorials/io/data_paths.html]File paths in Godot projects[/url] in the "
+"documentation for more information. See also [method get_cache_dir] and "
+"[method get_data_dir].\n"
+"Not to be confused with [method get_user_data_dir], which returns the "
+"[i]project-specific[/i] user data path."
+msgstr ""
+
+#: doc/classes/OS.xml:165
+msgid ""
+"Returns an array of MIDI device names.\n"
+"The returned array will be empty if the system MIDI driver has not "
+"previously been initialised with [method open_midi_inputs].\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:173
+msgid ""
+"Returns the currently used video driver, using one of the values from [enum "
+"VideoDriver]."
+msgstr ""
+
+#: doc/classes/OS.xml:179
+msgid ""
+"Returns the [i]global[/i] user data directory according to the operating "
+"system's standards. On desktop platforms, this path can be overridden by "
+"setting the [code]XDG_DATA_HOME[/code] environment variable before starting "
+"the project. See [url=https://docs.godotengine.org/en/latest/tutorials/io/"
+"data_paths.html]File paths in Godot projects[/url] in the documentation for "
+"more information. See also [method get_cache_dir] and [method "
+"get_config_dir].\n"
+"Not to be confused with [method get_user_data_dir], which returns the "
+"[i]project-specific[/i] user data path."
+msgstr ""
+
+#: doc/classes/OS.xml:187
+msgid ""
+"Returns current date as a dictionary of keys: [code]year[/code], "
+"[code]month[/code], [code]day[/code], [code]weekday[/code], [code]dst[/code] "
+"(Daylight Savings Time)."
+msgstr ""
+
+#: doc/classes/OS.xml:194
+msgid ""
+"Returns current datetime as a dictionary of keys: [code]year[/code], "
+"[code]month[/code], [code]day[/code], [code]weekday[/code], [code]dst[/code] "
+"(Daylight Savings Time), [code]hour[/code], [code]minute[/code], "
+"[code]second[/code]."
+msgstr ""
+
+#: doc/classes/OS.xml:201
+msgid ""
+"Gets a dictionary of time values corresponding to the given UNIX epoch time "
+"(in seconds).\n"
+"The returned Dictionary's values will be the same as [method get_datetime], "
+"with the exception of Daylight Savings Time as it cannot be determined from "
+"the epoch."
+msgstr ""
+
+#: doc/classes/OS.xml:208
+msgid "Returns the total amount of dynamic memory used (only works in debug)."
+msgstr ""
+
+#: doc/classes/OS.xml:215
+msgid ""
+"Returns the value of an environment variable. Returns an empty string if the "
+"environment variable doesn't exist.\n"
+"[b]Note:[/b] Double-check the casing of [code]variable[/code]. Environment "
+"variable names are case-sensitive on all platforms except Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:222
+msgid "Returns the path to the current engine executable."
+msgstr ""
+
+#: doc/classes/OS.xml:228
+msgid ""
+"With this function, you can get the list of dangerous permissions that have "
+"been granted to the Android application.\n"
+"[b]Note:[/b] This method is implemented on Android."
+msgstr ""
+
+#: doc/classes/OS.xml:235
+msgid ""
+"Returns the IME cursor position (the currently-edited portion of the string) "
+"relative to the characters in the composition string.\n"
+"[constant MainLoop.NOTIFICATION_OS_IME_UPDATE] is sent to the application to "
+"notify it of changes to the IME cursor position.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+
+#: doc/classes/OS.xml:243
+msgid ""
+"Returns the IME intermediate composition string.\n"
+"[constant MainLoop.NOTIFICATION_OS_IME_UPDATE] is sent to the application to "
+"notify it of changes to the IME composition string.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+
+#: doc/classes/OS.xml:251
+msgid ""
+"Returns the current latin keyboard variant as a String.\n"
+"Possible return values are: [code]\"QWERTY\"[/code], [code]\"AZERTY\"[/"
+"code], [code]\"QZERTY\"[/code], [code]\"DVORAK\"[/code], [code]\"NEO\"[/"
+"code], [code]\"COLEMAK\"[/code] or [code]\"ERROR\"[/code].\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows. Returns "
+"[code]\"QWERTY\"[/code] on unsupported platforms."
+msgstr ""
+
+#: doc/classes/OS.xml:259
+msgid ""
+"Returns the host OS locale as a string of the form "
+"[code]language_Script_COUNTRY_VARIANT@extra[/code]. If you want only the "
+"language code and not the fully specified locale from the OS, you can use "
+"[method get_locale_language].\n"
+"[code]language[/code] - 2 or 3-letter [url=https://en.wikipedia.org/wiki/"
+"List_of_ISO_639-1_codes]language code[/url], in lower case.\n"
+"[code]Script[/code] - optional, 4-letter [url=https://en.wikipedia.org/wiki/"
+"ISO_15924]script code[/url], in title case.\n"
+"[code]COUNTRY[/code] - optional, 2 or 3-letter [url=https://en.wikipedia.org/"
+"wiki/ISO_3166-1]country code[/url], in upper case.\n"
+"[code]VARIANT[/code] - optional, language variant, region and sort order. "
+"Variant can have any number of underscored keywords.\n"
+"[code]extra[/code] - optional, semicolon separated list of additional key "
+"words. Currency, calendar, sort order and numbering system information."
+msgstr ""
+
+#: doc/classes/OS.xml:270
+msgid ""
+"Returns the host OS locale's 2 or 3-letter [url=https://en.wikipedia.org/"
+"wiki/List_of_ISO_639-1_codes]language code[/url] as a string which should be "
+"consistent on all platforms. This is equivalent to extracting the "
+"[code]language[/code] part of the [method get_locale] string.\n"
+"This can be used to narrow down fully specified locale strings to only the "
+"\"common\" language code, when you don't need the additional information "
+"about country code or variants. For example, for a French Canadian user with "
+"[code]fr_CA[/code] locale, this would return [code]fr[/code]."
+msgstr ""
+
+#: doc/classes/OS.xml:277
+msgid ""
+"Returns the model name of the current device.\n"
+"[b]Note:[/b] This method is implemented on Android and iOS. Returns "
+"[code]\"GenericDevice\"[/code] on unsupported platforms."
+msgstr ""
+
+#: doc/classes/OS.xml:284
+msgid ""
+"Returns the name of the host OS. Possible values are: [code]\"Android\"[/"
+"code], [code]\"iOS\"[/code], [code]\"HTML5\"[/code], [code]\"OSX\"[/code], "
+"[code]\"Server\"[/code], [code]\"Windows\"[/code], [code]\"UWP\"[/code], "
+"[code]\"X11\"[/code]."
+msgstr ""
+
+#: doc/classes/OS.xml:291
+msgid ""
+"Returns internal structure pointers for use in GDNative plugins.\n"
+"[b]Note:[/b] This method is implemented on Linux and Windows (other OSs will "
+"soon be supported)."
+msgstr ""
+
+#: doc/classes/OS.xml:298
+msgid ""
+"Returns the amount of battery left in the device as a percentage. Returns "
+"[code]-1[/code] if power state is unknown.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:305
+msgid ""
+"Returns an estimate of the time left in seconds before the device runs out "
+"of battery. Returns [code]-1[/code] if power state is unknown.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:312
+msgid ""
+"Returns the current state of the device regarding battery and power. See "
+"[enum PowerState] constants.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:319
+msgid ""
+"Returns the project's process ID.\n"
+"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and "
+"Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:326
+msgid "Returns the number of threads available on the host machine."
+msgstr ""
+
+#: doc/classes/OS.xml:332
+msgid "Returns the window size including decorations like window borders."
+msgstr ""
+
+#: doc/classes/OS.xml:339
+msgid ""
+"Returns the given scancode as a string (e.g. Return values: [code]\"Escape"
+"\"[/code], [code]\"Shift+Escape\"[/code]).\n"
+"See also [member InputEventKey.scancode] and [method InputEventKey."
+"get_scancode_with_modifiers]."
+msgstr ""
+
+#: doc/classes/OS.xml:346
+msgid "Returns the number of displays attached to the host machine."
+msgstr ""
+
+#: doc/classes/OS.xml:353
+msgid ""
+"Returns the dots per inch density of the specified screen. If [code]screen[/"
+"code] is [/code]-1[/code] (the default value), the current screen will be "
+"used.\n"
+"[b]Note:[/b] On macOS, returned value is inaccurate if fractional display "
+"scaling mode is used.\n"
+"[b]Note:[/b] On Android devices, the actual screen densities are grouped "
+"into six generalized densities:\n"
+"[codeblock]\n"
+" ldpi - 120 dpi\n"
+" mdpi - 160 dpi\n"
+" hdpi - 240 dpi\n"
+" xhdpi - 320 dpi\n"
+" xxhdpi - 480 dpi\n"
+"xxxhdpi - 640 dpi\n"
+"[/codeblock]\n"
+"[b]Note:[/b] This method is implemented on Android, Linux, macOS and "
+"Windows. Returns [code]72[/code] on unsupported platforms."
+msgstr ""
+
+#: doc/classes/OS.xml:370
+msgid ""
+"Return the greatest scale factor of all screens.\n"
+"[b]Note:[/b] On macOS returned value is [code]2.0[/code] if there is at "
+"least one hiDPI (Retina) screen in the system, and [code]1.0[/code] in all "
+"other cases.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+
+#: doc/classes/OS.xml:379
+msgid ""
+"Returns the position of the specified screen by index. If [code]screen[/"
+"code] is [/code]-1[/code] (the default value), the current screen will be "
+"used."
+msgstr ""
+
+#: doc/classes/OS.xml:386
+msgid ""
+"Return the scale factor of the specified screen by index. If [code]screen[/"
+"code] is [/code]-1[/code] (the default value), the current screen will be "
+"used.\n"
+"[b]Note:[/b] On macOS returned value is [code]2.0[/code] for hiDPI (Retina) "
+"screen, and [code]1.0[/code] for all other cases.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+
+#: doc/classes/OS.xml:395
+msgid ""
+"Returns the dimensions in pixels of the specified screen. If [code]screen[/"
+"code] is [/code]-1[/code] (the default value), the current screen will be "
+"used."
+msgstr ""
+
+#: doc/classes/OS.xml:401
+msgid ""
+"Returns the amount of time in milliseconds it took for the boot logo to "
+"appear."
+msgstr ""
+
+#: doc/classes/OS.xml:407
+msgid "Returns the maximum amount of static memory used (only works in debug)."
+msgstr ""
+
+#: doc/classes/OS.xml:413
+msgid "Returns the amount of static memory being used by the program in bytes."
+msgstr ""
+
+#: doc/classes/OS.xml:421
+msgid ""
+"Returns the actual path to commonly used folders across different platforms. "
+"Available locations are specified in [enum SystemDir].\n"
+"[b]Note:[/b] This method is implemented on Android, Linux, macOS and "
+"Windows.\n"
+"[b]Note:[/b] Shared storage is implemented on Android and allows to "
+"differentiate between app specific and shared directories. Shared "
+"directories have additional restrictions on Android."
+msgstr ""
+
+#: doc/classes/OS.xml:429
+msgid "Returns the epoch time of the operating system in milliseconds."
+msgstr ""
+
+#: doc/classes/OS.xml:435
+msgid "Returns the epoch time of the operating system in seconds."
+msgstr ""
+
+#: doc/classes/OS.xml:441
+msgid ""
+"Returns the total number of available tablet drivers.\n"
+"[b]Note:[/b] This method is implemented on Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:449
+msgid ""
+"Returns the tablet driver name for the given index.\n"
+"[b]Note:[/b] This method is implemented on Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:456
+msgid ""
+"Returns the ID of the current thread. This can be used in logs to ease "
+"debugging of multi-threaded applications.\n"
+"[b]Note:[/b] Thread IDs are not deterministic and may be reused across "
+"application restarts."
+msgstr ""
+
+#: doc/classes/OS.xml:463
+msgid ""
+"Returns the amount of time passed in milliseconds since the engine started."
+msgstr ""
+
+#: doc/classes/OS.xml:469
+msgid ""
+"Returns the amount of time passed in microseconds since the engine started."
+msgstr ""
+
+#: doc/classes/OS.xml:476
+msgid "Returns current time as a dictionary of keys: hour, minute, second."
+msgstr ""
+
+#: doc/classes/OS.xml:482
+msgid ""
+"Returns the current time zone as a dictionary with the keys: bias and name."
+msgstr ""
+
+#: doc/classes/OS.xml:488
+msgid ""
+"Returns a string that is unique to the device.\n"
+"[b]Note:[/b] This string may change without notice if the user reinstalls/"
+"upgrades their operating system or changes their hardware. This means it "
+"should generally not be used to encrypt persistent data as the data saved "
+"before an unexpected ID change would become inaccessible. The returned "
+"string may also be falsified using external programs, so do not rely on the "
+"string returned by [method get_unique_id] for security purposes.\n"
+"[b]Note:[/b] Returns an empty string on HTML5 and UWP, as this method isn't "
+"implemented on those platforms yet."
+msgstr ""
+
+#: doc/classes/OS.xml:496
+msgid ""
+"Returns the current UNIX epoch timestamp in seconds.\n"
+"[b]Important:[/b] This is the system clock that the user can manually set. "
+"[b]Never use[/b] this method for precise time calculation since its results "
+"are also subject to automatic adjustments by the operating system. [b]Always "
+"use[/b] [method get_ticks_usec] or [method get_ticks_msec] for precise time "
+"calculation instead, since they are guaranteed to be monotonic (i.e. never "
+"decrease)."
+msgstr ""
+
+#: doc/classes/OS.xml:504
+msgid ""
+"Gets an epoch time value from a dictionary of time values.\n"
+"[code]datetime[/code] must be populated with the following keys: [code]year[/"
+"code], [code]month[/code], [code]day[/code], [code]hour[/code], "
+"[code]minute[/code], [code]second[/code].\n"
+"If the dictionary is empty [code]0[/code] is returned. If some keys are "
+"omitted, they default to the equivalent values for the UNIX epoch timestamp "
+"0 (1970-01-01 at 00:00:00 UTC).\n"
+"You can pass the output from [method get_datetime_from_unix_time] directly "
+"into this function. Daylight Savings Time ([code]dst[/code]), if present, is "
+"ignored."
+msgstr ""
+
+#: doc/classes/OS.xml:513
+msgid ""
+"Returns the absolute directory path where user data is written ([code]user://"
+"[/code]).\n"
+"On Linux, this is [code]~/.local/share/godot/app_userdata/[project_name][/"
+"code], or [code]~/.local/share/[custom_name][/code] if "
+"[code]use_custom_user_dir[/code] is set.\n"
+"On macOS, this is [code]~/Library/Application Support/Godot/app_userdata/"
+"[project_name][/code], or [code]~/Library/Application Support/[custom_name][/"
+"code] if [code]use_custom_user_dir[/code] is set.\n"
+"On Windows, this is [code]%APPDATA%\\Godot\\app_userdata\\[project_name][/"
+"code], or [code]%APPDATA%\\[custom_name][/code] if "
+"[code]use_custom_user_dir[/code] is set. [code]%APPDATA%[/code] expands to "
+"[code]%USERPROFILE%\\AppData\\Roaming[/code].\n"
+"If the project name is empty, [code]user://[/code] falls back to [code]res://"
+"[/code].\n"
+"Not to be confused with [method get_data_dir], which returns the [i]global[/"
+"i] (non-project-specific) user data directory."
+msgstr ""
+
+#: doc/classes/OS.xml:524
+msgid "Returns the number of video drivers supported on the current platform."
+msgstr ""
+
+#: doc/classes/OS.xml:531
+msgid ""
+"Returns the name of the video driver matching the given [code]driver[/code] "
+"index. This index is a value from [enum VideoDriver], and you can use "
+"[method get_current_video_driver] to get the current backend's index."
+msgstr ""
+
+#: doc/classes/OS.xml:537
+msgid ""
+"Returns the on-screen keyboard's height in pixels. Returns 0 if there is no "
+"keyboard or if it is currently hidden."
+msgstr ""
+
+#: doc/classes/OS.xml:543
+msgid ""
+"Returns unobscured area of the window where interactive controls should be "
+"rendered."
+msgstr ""
+
+#: doc/classes/OS.xml:553
+msgid ""
+"Add a new item with text \"label\" to global menu. Use \"_dock\" menu to add "
+"item to the macOS dock icon menu.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+
+#: doc/classes/OS.xml:561
+msgid ""
+"Add a separator between items. Separators also occupy an index.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+
+#: doc/classes/OS.xml:569
+msgid ""
+"Clear the global menu, in effect removing all items.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+
+#: doc/classes/OS.xml:578
+msgid ""
+"Removes the item at index \"idx\" from the global menu. Note that the "
+"indexes of items after the removed item are going to be shifted by one.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+
+#: doc/classes/OS.xml:586
+msgid ""
+"Returns [code]true[/code] if the environment variable with the name "
+"[code]variable[/code] exists.\n"
+"[b]Note:[/b] Double-check the casing of [code]variable[/code]. Environment "
+"variable names are case-sensitive on all platforms except Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:594
+msgid ""
+"Returns [code]true[/code] if the feature for the given feature tag is "
+"supported in the currently running instance, depending on the platform, "
+"build etc. Can be used to check whether you're currently running a debug "
+"build, on a certain platform or arch, etc. Refer to the [url=https://docs."
+"godotengine.org/en/3.4/getting_started/workflow/export/feature_tags."
+"html]Feature Tags[/url] documentation for more details.\n"
+"[b]Note:[/b] Tag names are case-sensitive."
+msgstr ""
+
+#: doc/classes/OS.xml:601
+msgid ""
+"Returns [code]true[/code] if the device has a touchscreen or emulates one."
+msgstr ""
+
+#: doc/classes/OS.xml:607
+msgid ""
+"Returns [code]true[/code] if the platform has a virtual keyboard, "
+"[code]false[/code] otherwise."
+msgstr ""
+
+#: doc/classes/OS.xml:613
+msgid "Hides the virtual keyboard if it is shown, does nothing otherwise."
+msgstr ""
+
+#: doc/classes/OS.xml:619
+msgid ""
+"Returns [code]true[/code] if the Godot binary used to run the project is a "
+"[i]debug[/i] export template, or when running in the editor.\n"
+"Returns [code]false[/code] if the Godot binary used to run the project is a "
+"[i]release[/i] export template.\n"
+"To check whether the Godot binary used to run the project is an export "
+"template (debug or release), use [code]OS.has_feature(\"standalone\")[/code] "
+"instead."
+msgstr ""
+
+#: doc/classes/OS.xml:627
+msgid ""
+"Returns [code]true[/code] if the [b]OK[/b] button should appear on the left "
+"and [b]Cancel[/b] on the right."
+msgstr ""
+
+#: doc/classes/OS.xml:634
+msgid ""
+"Returns [code]true[/code] if the input scancode corresponds to a Unicode "
+"character."
+msgstr ""
+
+#: doc/classes/OS.xml:640
+msgid ""
+"Returns [code]true[/code] if the engine was executed with [code]-v[/code] "
+"(verbose stdout)."
+msgstr ""
+
+#: doc/classes/OS.xml:646
+msgid ""
+"If [code]true[/code], the [code]user://[/code] file system is persistent, so "
+"that its state is the same after a player quits and starts the game again. "
+"Relevant to the HTML5 platform, where this persistence may be unavailable."
+msgstr ""
+
+#: doc/classes/OS.xml:652
+msgid ""
+"Returns [code]true[/code] if the window should always be on top of other "
+"windows."
+msgstr ""
+
+#: doc/classes/OS.xml:658
+msgid ""
+"Returns [code]true[/code] if the window is currently focused.\n"
+"[b]Note:[/b] Only implemented on desktop platforms. On other platforms, it "
+"will always return [code]true[/code]."
+msgstr ""
+
+#: doc/classes/OS.xml:665
+msgid ""
+"Returns active keyboard layout index.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:672
+msgid ""
+"Returns the number of keyboard layouts.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:680
+msgid ""
+"Returns the ISO-639/BCP-47 language code of the keyboard layout at position "
+"[code]index[/code].\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:688
+msgid ""
+"Returns the localized name of the keyboard layout at position [code]index[/"
+"code].\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:696
+msgid ""
+"Sets active keyboard layout.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:704
+msgid ""
+"Kill (terminate) the process identified by the given process ID ([code]pid[/"
+"code]), e.g. the one returned by [method execute] in non-blocking mode.\n"
+"[b]Note:[/b] This method can also be used to kill processes that were not "
+"spawned by the game.\n"
+"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and "
+"Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:712
+msgid ""
+"Moves the window to the front.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:719
+msgid ""
+"Returns [code]true[/code] if native video is playing.\n"
+"[b]Note:[/b] This method is only implemented on iOS."
+msgstr ""
+
+#: doc/classes/OS.xml:726
+msgid ""
+"Pauses native video playback.\n"
+"[b]Note:[/b] This method is only implemented on iOS."
+msgstr ""
+
+#: doc/classes/OS.xml:737
+msgid ""
+"Plays native video from the specified path, at the given volume and with "
+"audio and subtitle tracks.\n"
+"[b]Note:[/b] This method is only implemented on iOS."
+msgstr ""
+
+#: doc/classes/OS.xml:744
+msgid ""
+"Stops native video playback.\n"
+"[b]Note:[/b] This method is implemented on iOS."
+msgstr ""
+
+#: doc/classes/OS.xml:751
+msgid ""
+"Resumes native video playback.\n"
+"[b]Note:[/b] This method is implemented on iOS."
+msgstr ""
+
+#: doc/classes/OS.xml:758
+msgid ""
+"Initialises the singleton for the system MIDI driver.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:766
+msgid ""
+"Shows all resources in the game. Optionally, the list can be written to a "
+"file by specifying a file path in [code]tofile[/code]."
+msgstr ""
+
+#: doc/classes/OS.xml:772
+msgid "Shows the list of loaded textures sorted by size in memory."
+msgstr ""
+
+#: doc/classes/OS.xml:779
+msgid "Shows the number of resources loaded by the game of the given types."
+msgstr ""
+
+#: doc/classes/OS.xml:786
+msgid "Shows all resources currently used by the game."
+msgstr ""
+
+#: doc/classes/OS.xml:792
+msgid ""
+"Request the user attention to the window. It'll flash the taskbar button on "
+"Windows or bounce the dock icon on OSX.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:800
+msgid ""
+"At the moment this function is only used by [code]AudioDriverOpenSL[/code] "
+"to request permission for [code]RECORD_AUDIO[/code] on Android."
+msgstr ""
+
+#: doc/classes/OS.xml:806
+msgid ""
+"With this function, you can request dangerous permissions since normal "
+"permissions are automatically granted at install time in Android "
+"applications.\n"
+"[b]Note:[/b] This method is implemented on Android."
+msgstr ""
+
+#: doc/classes/OS.xml:815
+msgid ""
+"Sets the value of the environment variable [code]variable[/code] to "
+"[code]value[/code]. The environment variable will be set for the Godot "
+"process and any process executed with [method execute] after running [method "
+"set_environment]. The environment variable will [i]not[/i] persist to "
+"processes run after the Godot process was terminated.\n"
+"[b]Note:[/b] Double-check the casing of [code]variable[/code]. Environment "
+"variable names are case-sensitive on all platforms except Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:823
+msgid ""
+"Sets the game's icon using an [Image] resource.\n"
+"The same image is used for window caption, taskbar/dock and window selection "
+"dialog. Image is scaled as needed.\n"
+"[b]Note:[/b] This method is implemented on HTML5, Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:832
+msgid ""
+"Sets whether IME input mode should be enabled.\n"
+"If active IME handles key events before the application and creates an "
+"composition string and suggestion list.\n"
+"Application can retrieve the composition status by using [method "
+"get_ime_selection] and [method get_ime_text] functions.\n"
+"Completed composition string is committed when input is finished.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:843
+msgid ""
+"Sets position of IME suggestion list popup (in window coordinates).\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:851
+msgid ""
+"Sets the game's icon using a multi-size platform-specific icon file ([code]*."
+"ico[/code] on Windows and [code]*.icns[/code] on macOS).\n"
+"Appropriate size sub-icons are used for window caption, taskbar/dock and "
+"window selection dialog.\n"
+"[b]Note:[/b] This method is implemented on macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:860
+msgid "Sets the name of the current thread."
+msgstr ""
+
+#: doc/classes/OS.xml:867
+msgid "Enables backup saves if [code]enabled[/code] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/OS.xml:874
+msgid ""
+"Sets whether the window should always be on top.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:882
+msgid ""
+"Sets a polygonal region of the window which accepts mouse events. Mouse "
+"events outside the region will be passed through.\n"
+"Passing an empty array will disable passthrough support (all mouse events "
+"will be intercepted by the window, which is the default behavior).\n"
+"[codeblock]\n"
+"# Set region, using Path2D node.\n"
+"OS.set_window_mouse_passthrough($Path2D.curve.get_baked_points())\n"
+"\n"
+"# Set region, using Polygon2D node.\n"
+"OS.set_window_mouse_passthrough($Polygon2D.polygon)\n"
+"\n"
+"# Reset region to default.\n"
+"OS.set_window_mouse_passthrough([])\n"
+"[/codeblock]\n"
+"[b]Note:[/b] On Windows, the portion of a window that lies outside the "
+"region is not drawn, while on Linux and macOS it is.\n"
+"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:902
+msgid ""
+"Sets the window title to the specified string.\n"
+"[b]Note:[/b] This should be used sporadically. Don't set this every frame, "
+"as that will negatively affect performance on some window managers.\n"
+"[b]Note:[/b] This method is implemented on HTML5, Linux, macOS and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:911
+msgid ""
+"Requests the OS to open a resource with the most appropriate program. For "
+"example:\n"
+"- [code]OS.shell_open(\"C:\\\\Users\\name\\Downloads\")[/code] on Windows "
+"opens the file explorer at the user's Downloads folder.\n"
+"- [code]OS.shell_open(\"https://godotengine.org\")[/code] opens the default "
+"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"
+"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 "
+"and Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:924
+msgid ""
+"Shows the virtual keyboard if the platform has one.\n"
+"The [code]existing_text[/code] parameter is useful for implementing your own "
+"[LineEdit] or [TextEdit], as it tells the virtual keyboard what text has "
+"already been typed (the virtual keyboard uses it for auto-correct and "
+"predictions).\n"
+"The [code]multiline[/code] parameter needs to be set to [code]true[/code] to "
+"be able to enter multiple lines of text, as in [TextEdit].\n"
+"[b]Note:[/b] This method is implemented on Android, iOS and UWP."
+msgstr ""
+
+#: doc/classes/OS.xml:933
+msgid "The clipboard from the host OS. Might be unavailable on some platforms."
+msgstr ""
+
+#: doc/classes/OS.xml:936
+msgid "The current screen index (starting from 0)."
+msgstr ""
+
+#: doc/classes/OS.xml:939
+msgid ""
+"If [code]true[/code], the engine filters the time delta measured between "
+"each frame, and attempts to compensate for random variation. This will only "
+"operate on systems where V-Sync is active."
+msgstr ""
+
+#: doc/classes/OS.xml:942
+msgid ""
+"The exit code passed to the OS when the main loop exits. By convention, an "
+"exit code of [code]0[/code] indicates success whereas a non-zero exit code "
+"indicates an error. For portability reasons, the exit code should be set "
+"between 0 and 125 (inclusive).\n"
+"[b]Note:[/b] This value will be ignored if using [method SceneTree.quit] "
+"with an [code]exit_code[/code] argument passed."
+msgstr ""
+
+#: doc/classes/OS.xml:946
+msgid ""
+"If [code]true[/code], the engine tries to keep the screen on while the game "
+"is running. Useful on mobile."
+msgstr ""
+
+#: doc/classes/OS.xml:949
+msgid ""
+"If [code]true[/code], the engine optimizes for low processor usage by only "
+"refreshing the screen if needed. Can improve battery consumption on mobile."
+msgstr ""
+
+#: doc/classes/OS.xml:952
+msgid ""
+"The amount of sleeping between frames when the low-processor usage mode is "
+"enabled (in microseconds). Higher values will result in lower CPU usage."
+msgstr ""
+
+#: doc/classes/OS.xml:955
+msgid ""
+"The maximum size of the window (without counting window manager "
+"decorations). Does not affect fullscreen mode. Set to [code](0, 0)[/code] to "
+"reset to the system default value."
+msgstr ""
+
+#: doc/classes/OS.xml:958
+msgid ""
+"The minimum size of the window in pixels (without counting window manager "
+"decorations). Does not affect fullscreen mode. Set to [code](0, 0)[/code] to "
+"reset to the system's default value.\n"
+"[b]Note:[/b] By default, the project window has a minimum size of "
+"[code]Vector2(64, 64)[/code]. This prevents issues that can arise when the "
+"window is resized to a near-zero size."
+msgstr ""
+
+#: doc/classes/OS.xml:962
+msgid "The current screen orientation."
+msgstr ""
+
+#: doc/classes/OS.xml:965
+msgid "The current tablet driver in use."
+msgstr ""
+
+#: doc/classes/OS.xml:968
+msgid "If [code]true[/code], vertical synchronization (Vsync) is enabled."
+msgstr ""
+
+#: doc/classes/OS.xml:971
+msgid ""
+"If [code]true[/code] and [code]vsync_enabled[/code] is true, the operating "
+"system's window compositor will be used for vsync when the compositor is "
+"enabled and the game is in windowed mode.\n"
+"[b]Note:[/b] This option is experimental and meant to alleviate stutter "
+"experienced by some users. However, some users have experienced a Vsync "
+"framerate halving (e.g. from 60 FPS to 30 FPS) when using it.\n"
+"[b]Note:[/b] This property is only implemented on Windows."
+msgstr ""
+
+#: doc/classes/OS.xml:976
+msgid ""
+"If [code]true[/code], removes the window frame.\n"
+"[b]Note:[/b] Setting [code]window_borderless[/code] to [code]false[/code] "
+"disables per-pixel transparency."
+msgstr ""
+
+#: doc/classes/OS.xml:980
+msgid "If [code]true[/code], the window is fullscreen."
+msgstr ""
+
+#: doc/classes/OS.xml:983
+msgid "If [code]true[/code], the window is maximized."
+msgstr ""
+
+#: doc/classes/OS.xml:986
+msgid "If [code]true[/code], the window is minimized."
+msgstr ""
+
+#: doc/classes/OS.xml:989
+msgid ""
+"If [code]true[/code], the window background is transparent and the window "
+"frame is removed.\n"
+"Use [code]get_tree().get_root().set_transparent_background(true)[/code] to "
+"disable main viewport background rendering.\n"
+"[b]Note:[/b] This property has no effect if [member ProjectSettings.display/"
+"window/per_pixel_transparency/allowed] setting is disabled.\n"
+"[b]Note:[/b] This property is implemented on HTML5, Linux, macOS, Windows, "
+"and Android. It can't be changed at runtime for Android. Use [member "
+"ProjectSettings.display/window/per_pixel_transparency/enabled] to set it at "
+"startup instead."
+msgstr ""
+
+#: doc/classes/OS.xml:995
+msgid ""
+"The window position relative to the screen, the origin is the top left "
+"corner, +Y axis goes to the bottom and +X axis goes to the right."
+msgstr ""
+
+#: doc/classes/OS.xml:998
+msgid "If [code]true[/code], the window is resizable by the user."
+msgstr ""
+
+#: doc/classes/OS.xml:1001
+msgid "The size of the window (without counting window manager decorations)."
+msgstr ""
+
+#: doc/classes/OS.xml:1006
+msgid ""
+"The GLES2 rendering backend. It uses OpenGL ES 2.0 on mobile devices, OpenGL "
+"2.1 on desktop platforms and WebGL 1.0 on the web."
+msgstr ""
+
+#: doc/classes/OS.xml:1009
+msgid ""
+"The GLES3 rendering backend. It uses OpenGL ES 3.0 on mobile devices, OpenGL "
+"3.3 on desktop platforms and WebGL 2.0 on the web."
+msgstr ""
+
+#: doc/classes/OS.xml:1012
+msgid "Sunday."
+msgstr ""
+
+#: doc/classes/OS.xml:1015
+msgid "Monday."
+msgstr ""
+
+#: doc/classes/OS.xml:1018
+msgid "Tuesday."
+msgstr ""
+
+#: doc/classes/OS.xml:1021
+msgid "Wednesday."
+msgstr ""
+
+#: doc/classes/OS.xml:1024
+msgid "Thursday."
+msgstr ""
+
+#: doc/classes/OS.xml:1027
+msgid "Friday."
+msgstr ""
+
+#: doc/classes/OS.xml:1030
+msgid "Saturday."
+msgstr ""
+
+#: doc/classes/OS.xml:1033
+msgid "January."
+msgstr ""
+
+#: doc/classes/OS.xml:1036
+msgid "February."
+msgstr ""
+
+#: doc/classes/OS.xml:1039
+msgid "March."
+msgstr ""
+
+#: doc/classes/OS.xml:1042
+msgid "April."
+msgstr ""
+
+#: doc/classes/OS.xml:1045
+msgid "May."
+msgstr ""
+
+#: doc/classes/OS.xml:1048
+msgid "June."
+msgstr ""
+
+#: doc/classes/OS.xml:1051
+msgid "July."
+msgstr ""
+
+#: doc/classes/OS.xml:1054
+msgid "August."
+msgstr ""
+
+#: doc/classes/OS.xml:1057
+msgid "September."
+msgstr ""
+
+#: doc/classes/OS.xml:1060
+msgid "October."
+msgstr ""
+
+#: doc/classes/OS.xml:1063
+msgid "November."
+msgstr ""
+
+#: doc/classes/OS.xml:1066
+msgid "December."
+msgstr ""
+
+#: doc/classes/OS.xml:1069
+msgid ""
+"Application handle:\n"
+"- Windows: [code]HINSTANCE[/code] of the application\n"
+"- MacOS: [code]NSApplication*[/code] of the application (not yet "
+"implemented)\n"
+"- Android: [code]JNIEnv*[/code] of the application (not yet implemented)"
+msgstr ""
+
+#: doc/classes/OS.xml:1075
+msgid ""
+"Display handle:\n"
+"- Linux: [code]X11::Display*[/code] for the display"
+msgstr ""
+
+#: doc/classes/OS.xml:1079
+msgid ""
+"Window handle:\n"
+"- Windows: [code]HWND[/code] of the main window\n"
+"- Linux: [code]X11::Window*[/code] of the main window\n"
+"- MacOS: [code]NSWindow*[/code] of the main window (not yet implemented)\n"
+"- Android: [code]jObject[/code] the main android activity (not yet "
+"implemented)"
+msgstr ""
+
+#: doc/classes/OS.xml:1086
+msgid ""
+"Window view:\n"
+"- Windows: [code]HDC[/code] of the main window drawing context\n"
+"- MacOS: [code]NSView*[/code] of the main windows view (not yet implemented)"
+msgstr ""
+
+#: doc/classes/OS.xml:1091
+msgid ""
+"OpenGL Context:\n"
+"- Windows: [code]HGLRC[/code]\n"
+"- Linux: [code]X11::GLXContext[/code]\n"
+"- MacOS: [code]NSOpenGLContext*[/code] (not yet implemented)"
+msgstr ""
+
+#: doc/classes/OS.xml:1097
+msgid "Landscape screen orientation."
+msgstr ""
+
+#: doc/classes/OS.xml:1100
+msgid "Portrait screen orientation."
+msgstr ""
+
+#: doc/classes/OS.xml:1103
+msgid "Reverse landscape screen orientation."
+msgstr ""
+
+#: doc/classes/OS.xml:1106
+msgid "Reverse portrait screen orientation."
+msgstr ""
+
+#: doc/classes/OS.xml:1109
+msgid "Uses landscape or reverse landscape based on the hardware sensor."
+msgstr ""
+
+#: doc/classes/OS.xml:1112
+msgid "Uses portrait or reverse portrait based on the hardware sensor."
+msgstr ""
+
+#: doc/classes/OS.xml:1115
+msgid "Uses most suitable orientation based on the hardware sensor."
+msgstr ""
+
+#: doc/classes/OS.xml:1118
+msgid "Desktop directory path."
+msgstr ""
+
+#: doc/classes/OS.xml:1121
+msgid "DCIM (Digital Camera Images) directory path."
+msgstr ""
+
+#: doc/classes/OS.xml:1124
+msgid "Documents directory path."
+msgstr ""
+
+#: doc/classes/OS.xml:1127
+msgid "Downloads directory path."
+msgstr ""
+
+#: doc/classes/OS.xml:1130
+msgid "Movies directory path."
+msgstr ""
+
+#: doc/classes/OS.xml:1133
+msgid "Music directory path."
+msgstr ""
+
+#: doc/classes/OS.xml:1136
+msgid "Pictures directory path."
+msgstr ""
+
+#: doc/classes/OS.xml:1139
+msgid "Ringtones directory path."
+msgstr ""
+
+#: doc/classes/OS.xml:1142
+msgid "Unknown powerstate."
+msgstr ""
+
+#: doc/classes/OS.xml:1145
+msgid "Unplugged, running on battery."
+msgstr ""
+
+#: doc/classes/OS.xml:1148
+msgid "Plugged in, no battery available."
+msgstr ""
+
+#: doc/classes/OS.xml:1151
+msgid "Plugged in, battery charging."
+msgstr ""
+
+#: doc/classes/OS.xml:1154
+msgid "Plugged in, battery fully charged."
+msgstr ""
+
+#: doc/classes/PackedDataContainerRef.xml:4
+msgid "Reference version of [PackedDataContainer]."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:4
+msgid "An abstraction of a serialized scene."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:7
+msgid ""
+"A simplified interface to a scene file. Provides access to operations and "
+"checks that can be performed on the scene resource itself.\n"
+"Can be used to save a node to a file. When saving, the node as well as all "
+"the nodes it owns get saved (see [code]owner[/code] property on [Node]).\n"
+"[b]Note:[/b] The node doesn't need to own itself.\n"
+"[b]Example of loading a saved scene:[/b]\n"
+"[codeblock]\n"
+"# Use `load()` instead of `preload()` if the path isn't known at compile-"
+"time.\n"
+"var scene = preload(\"res://scene.tscn\").instance()\n"
+"# Add the node as a child of the node the script is attached to.\n"
+"add_child(scene)\n"
+"[/codeblock]\n"
+"[b]Example of saving a node with different owners:[/b] The following example "
+"creates 3 objects: [code]Node2D[/code] ([code]node[/code]), "
+"[code]RigidBody2D[/code] ([code]rigid[/code]) and [code]CollisionObject2D[/"
+"code] ([code]collision[/code]). [code]collision[/code] is a child of "
+"[code]rigid[/code] which is a child of [code]node[/code]. Only [code]rigid[/"
+"code] is owned by [code]node[/code] and [code]pack[/code] will therefore "
+"only save those two nodes, but not [code]collision[/code].\n"
+"[codeblock]\n"
+"# Create the objects.\n"
+"var node = Node2D.new()\n"
+"var rigid = RigidBody2D.new()\n"
+"var collision = CollisionShape2D.new()\n"
+"\n"
+"# Create the object hierarchy.\n"
+"rigid.add_child(collision)\n"
+"node.add_child(rigid)\n"
+"\n"
+"# Change owner of `rigid`, but not of `collision`.\n"
+"rigid.owner = node\n"
+"\n"
+"var scene = PackedScene.new()\n"
+"# Only `node` and `rigid` are now packed.\n"
+"var result = scene.pack(node)\n"
+"if result == OK:\n"
+" var error = ResourceSaver.save(\"res://path/name.scn\", scene) # Or "
+"\"user://...\"\n"
+" if error != OK:\n"
+" push_error(\"An error occurred while saving the scene to disk.\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/PackedScene.xml:47
+msgid "Returns [code]true[/code] if the scene file has nodes."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:53
+msgid ""
+"Returns the [code]SceneState[/code] representing the scene file contents."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:60
+msgid ""
+"Instantiates the scene's node hierarchy. Triggers child scene "
+"instantiation(s). Triggers a [constant Node.NOTIFICATION_INSTANCED] "
+"notification on the root node."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:67
+msgid ""
+"Pack will ignore any sub-nodes not owned by given node. See [member Node."
+"owner]."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:73
+msgid ""
+"A dictionary representation of the scene contents.\n"
+"Available keys include \"rnames\" and \"variants\" for resources, "
+"\"node_count\", \"nodes\", \"node_paths\" for nodes, \"editable_instances\" "
+"for base scene children overrides, \"conn_count\" and \"conns\" for signal "
+"connections, and \"version\" for the format style of the PackedScene."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:79
+msgid "If passed to [method instance], blocks edits to the scene state."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:82
+msgid ""
+"If passed to [method instance], provides local scene resources to the local "
+"scene.\n"
+"[b]Note:[/b] Only available in editor builds."
+msgstr ""
+
+#: doc/classes/PackedScene.xml:86
+msgid ""
+"If passed to [method instance], provides local scene resources to the local "
+"scene. Only the main scene should receive the main edit state.\n"
+"[b]Note:[/b] Only available in editor builds."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:4
+msgid "Abstraction and base class for packet-based protocols."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:7
+msgid ""
+"PacketPeer is an abstraction and base class for packet-based protocols (such "
+"as UDP). It provides an API for sending and receiving packets both as raw "
+"data or variables. This makes it easy to transfer data over a protocol, "
+"without having to encode data as low-level bytes or having to worry about "
+"network ordering."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:15
+msgid "Returns the number of packets currently available in the ring-buffer."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:21
+msgid "Gets a raw packet."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:27
+msgid ""
+"Returns the error state of the last packet received (via [method get_packet] "
+"and [method get_var])."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:34
+msgid ""
+"Gets a Variant. If [code]allow_objects[/code] (or [member "
+"allow_object_decoding]) is [code]true[/code], decoding objects is allowed.\n"
+"[b]Warning:[/b] Deserialized objects can contain code which gets executed. "
+"Do not use this option if the serialized object comes from untrusted sources "
+"to avoid potential security threats such as remote code execution."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:42
+msgid "Sends a raw packet."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:50
+msgid ""
+"Sends a [Variant] as a packet. If [code]full_objects[/code] (or [member "
+"allow_object_decoding]) is [code]true[/code], encoding objects is allowed "
+"(and can potentially include code)."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:56
+msgid ""
+"[i]Deprecated.[/i] Use [code]get_var[/code] and [code]put_var[/code] "
+"parameters instead.\n"
+"If [code]true[/code], the PacketPeer will allow encoding and decoding of "
+"object via [method get_var] and [method put_var].\n"
+"[b]Warning:[/b] Deserialized objects can contain code which gets executed. "
+"Do not use this option if the serialized object comes from untrusted sources "
+"to avoid potential security threats such as remote code execution."
+msgstr ""
+
+#: doc/classes/PacketPeer.xml:61
+msgid ""
+"Maximum buffer size allowed when encoding [Variant]s. Raise this value to "
+"support heavier memory allocations.\n"
+"The [method put_var] method allocates memory on the stack, and the buffer "
+"used will grow automatically to the closest power of two to match the size "
+"of the [Variant]. If the [Variant] is bigger than "
+"[code]encode_buffer_max_size[/code], the method will error out with "
+"[constant ERR_OUT_OF_MEMORY]."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:4
+msgid "DTLS packet peer."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:7
+msgid ""
+"This class represents a DTLS peer connection. It can be used to connect to a "
+"DTLS server, and is returned by [method DTLSServer.take_connection].\n"
+"[b]Warning:[/b] SSL/TLS certificate revocation and certificate pinning are "
+"currently not supported. Revoked certificates are accepted as long as they "
+"are otherwise valid. If this is a concern, you may want to use automatically "
+"managed certificates with a short validity period."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:20
+msgid ""
+"Connects a [code]peer[/code] beginning the DTLS handshake using the "
+"underlying [PacketPeerUDP] which must be connected (see [method "
+"PacketPeerUDP.connect_to_host]). If [code]validate_certs[/code] is "
+"[code]true[/code], [PacketPeerDTLS] will validate that the certificate "
+"presented by the remote peer and match it with the [code]for_hostname[/code] "
+"argument. You can specify a custom [X509Certificate] to use for validation "
+"via the [code]valid_certificate[/code] argument."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:26
+msgid "Disconnects this peer, terminating the DTLS session."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:32 doc/classes/StreamPeerSSL.xml:43
+msgid "Returns the status of the connection. See [enum Status] for values."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:38
+msgid ""
+"Poll the connection to check for incoming packets. Call this frequently to "
+"update the status and keep the connection working."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:44
+msgid "A status representing a [PacketPeerDTLS] that is disconnected."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:47
+msgid ""
+"A status representing a [PacketPeerDTLS] that is currently performing the "
+"handshake with a remote peer."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:50
+msgid ""
+"A status representing a [PacketPeerDTLS] that is connected to a remote peer."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:53
+msgid "A status representing a [PacketPeerDTLS] in a generic error state."
+msgstr ""
+
+#: doc/classes/PacketPeerDTLS.xml:56
+msgid ""
+"An error status that shows a mismatch in the DTLS certificate domain "
+"presented by the host and the domain requested for validation."
+msgstr ""
+
+#: doc/classes/PacketPeerStream.xml:4
+msgid "Wrapper to use a PacketPeer over a StreamPeer."
+msgstr ""
+
+#: doc/classes/PacketPeerStream.xml:7
+msgid ""
+"PacketStreamPeer provides a wrapper for working using packets over a stream. "
+"This allows for using packet based code with StreamPeers. PacketPeerStream "
+"implements a custom protocol over the StreamPeer, so the user should not "
+"read or write to the wrapped StreamPeer directly."
+msgstr ""
+
+#: doc/classes/PacketPeerStream.xml:19
+msgid "The wrapped [StreamPeer] object."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:4
+msgid "UDP packet peer."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:7
+msgid ""
+"UDP packet peer. Can be used to send raw UDP packets as well as [Variant]s."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:15
+msgid "Closes the UDP socket the [PacketPeerUDP] is currently listening on."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:23
+msgid ""
+"Calling this method connects this UDP peer to the given [code]host[/code]/"
+"[code]port[/code] pair. UDP is in reality connectionless, so this option "
+"only means that incoming packets from different addresses are automatically "
+"discarded, and that outgoing packets are always sent to the connected "
+"address (future calls to [method set_dest_address] are not allowed). This "
+"method does not send any data to the remote peer, to do that, use [method "
+"PacketPeer.put_var] or [method PacketPeer.put_packet] as usual. See also "
+"[UDPServer].\n"
+"[b]Note:[/b] Connecting to the remote peer does not help to protect from "
+"malicious attacks like IP spoofing, etc. Think about using an encryption "
+"technique like SSL or DTLS if you feel like your application is transferring "
+"sensitive information."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:30
+msgid ""
+"Returns the IP of the remote peer that sent the last packet(that was "
+"received with [method PacketPeer.get_packet] or [method PacketPeer.get_var])."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:36
+msgid ""
+"Returns the port of the remote peer that sent the last packet(that was "
+"received with [method PacketPeer.get_packet] or [method PacketPeer.get_var])."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:42
+msgid ""
+"Returns [code]true[/code] if the UDP socket is open and has been connected "
+"to a remote address. See [method connect_to_host]."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:48
+msgid "Returns whether this [PacketPeerUDP] is listening."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:56
+msgid ""
+"Joins the multicast group specified by [code]multicast_address[/code] using "
+"the interface identified by [code]interface_name[/code].\n"
+"You can join the same multicast group with multiple interfaces. Use [method "
+"IP.get_local_interfaces] to know which are available.\n"
+"[b]Note:[/b] Some Android devices might require the "
+"[code]CHANGE_WIFI_MULTICAST_STATE[/code] permission for multicast to work."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:66
+msgid ""
+"Removes the interface identified by [code]interface_name[/code] from the "
+"multicast group specified by [code]multicast_address[/code]."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:75
+msgid ""
+"Makes this [PacketPeerUDP] listen on the [code]port[/code] binding to "
+"[code]bind_address[/code] with a buffer size [code]recv_buf_size[/code].\n"
+"If [code]bind_address[/code] is set to [code]\"*\"[/code] (default), the "
+"peer will listen on all available addresses (both IPv4 and IPv6).\n"
+"If [code]bind_address[/code] is set to [code]\"0.0.0.0\"[/code] (for IPv4) "
+"or [code]\"::\"[/code] (for IPv6), the peer will listen on all available "
+"addresses matching that IP type.\n"
+"If [code]bind_address[/code] is set to any valid address (e.g. "
+"[code]\"192.168.1.101\"[/code], [code]\"::1\"[/code], etc), the peer will "
+"only listen on the interface with that addresses (or fail if no interface "
+"with the given address exists)."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:85
+msgid ""
+"Enable or disable sending of broadcast packets (e.g. "
+"[code]set_dest_address(\"255.255.255.255\", 4343)[/code]. This option is "
+"disabled by default.\n"
+"[b]Note:[/b] Some Android devices might require the "
+"[code]CHANGE_WIFI_MULTICAST_STATE[/code] permission and this option to be "
+"enabled to receive broadcast packets too."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:94
+msgid ""
+"Sets the destination address and port for sending packets and variables. A "
+"hostname will be resolved using DNS if needed.\n"
+"[b]Note:[/b] [method set_broadcast_enabled] must be enabled before sending "
+"packets to a broadcast address (e.g. [code]255.255.255.255[/code])."
+msgstr ""
+
+#: doc/classes/PacketPeerUDP.xml:101
+msgid ""
+"Waits for a packet to arrive on the listening port. See [method listen].\n"
+"[b]Note:[/b] [method wait] can't be interrupted once it has been called. "
+"This can be worked around by allowing the other party to send a specific "
+"\"death pill\" packet like this:\n"
+"[codeblock]\n"
+"# Server\n"
+"socket.set_dest_address(\"127.0.0.1\", 789)\n"
+"socket.put_packet(\"Time to stop\".to_ascii())\n"
+"\n"
+"# Client\n"
+"while socket.wait() == OK:\n"
+" var data = socket.get_packet().get_string_from_ascii()\n"
+" if data == \"Time to stop\":\n"
+" return\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Panel.xml:4
+msgid "Provides an opaque background for [Control] children."
+msgstr ""
+
+#: doc/classes/Panel.xml:7
+msgid ""
+"Panel is a [Control] that displays an opaque background. It's commonly used "
+"as a parent and container for other types of [Control] nodes."
+msgstr ""
+
+#: doc/classes/Panel.xml:11
+msgid "https://godotengine.org/asset-library/asset/516"
+msgstr ""
+
+#: doc/classes/Panel.xml:12 doc/classes/Skeleton.xml:12
+#: doc/classes/SkeletonIK.xml:29
+msgid "https://godotengine.org/asset-library/asset/523"
+msgstr ""
+
+#: doc/classes/Panel.xml:20
+msgid "The style of this [Panel]."
+msgstr ""
+
+#: doc/classes/PanelContainer.xml:4
+msgid "Panel container type."
+msgstr ""
+
+#: doc/classes/PanelContainer.xml:7
+msgid ""
+"Panel container type. This container fits controls inside of the delimited "
+"area of a stylebox. It's useful for giving controls an outline."
+msgstr ""
+
+#: doc/classes/PanelContainer.xml:18
+msgid "The style of [PanelContainer]'s background."
+msgstr ""
+
+#: doc/classes/PanoramaSky.xml:4
+msgid "A type of [Sky] used to draw a background texture."
+msgstr ""
+
+#: doc/classes/PanoramaSky.xml:7
+msgid ""
+"A resource referenced in an [Environment] that is used to draw a background. "
+"The Panorama sky functions similar to skyboxes in other engines, except it "
+"uses an equirectangular sky map instead of a cube map.\n"
+"Using an HDR panorama is strongly recommended for accurate, high-quality "
+"reflections. Godot supports the Radiance HDR ([code].hdr[/code]) and OpenEXR "
+"([code].exr[/code]) image formats for this purpose.\n"
+"You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/"
+"cubemap_to_panorama.html]this tool[/url] to convert a cube map to an "
+"equirectangular sky map."
+msgstr ""
+
+#: doc/classes/PanoramaSky.xml:17
+msgid "[Texture] to be applied to the PanoramaSky."
+msgstr ""
+
+#: doc/classes/ParallaxBackground.xml:4
+msgid "A node used to create a parallax scrolling background."
+msgstr ""
+
+#: doc/classes/ParallaxBackground.xml:7
+msgid ""
+"A ParallaxBackground uses one or more [ParallaxLayer] child nodes to create "
+"a parallax effect. Each [ParallaxLayer] can move at a different speed using "
+"[member ParallaxLayer.motion_offset]. This creates an illusion of depth in a "
+"2D game. If not used with a [Camera2D], you must manually calculate the "
+"[member scroll_offset]."
+msgstr ""
+
+#: doc/classes/ParallaxBackground.xml:16
+msgid "The base position offset for all [ParallaxLayer] children."
+msgstr ""
+
+#: doc/classes/ParallaxBackground.xml:19
+msgid "The base motion scale for all [ParallaxLayer] children."
+msgstr ""
+
+#: doc/classes/ParallaxBackground.xml:22
+msgid ""
+"If [code]true[/code], elements in [ParallaxLayer] child aren't affected by "
+"the zoom level of the camera."
+msgstr ""
+
+#: doc/classes/ParallaxBackground.xml:25
+msgid ""
+"Top-left limits for scrolling to begin. If the camera is outside of this "
+"limit, the background will stop scrolling. Must be lower than [member "
+"scroll_limit_end] to work."
+msgstr ""
+
+#: doc/classes/ParallaxBackground.xml:28
+msgid ""
+"Bottom-right limits for scrolling to end. If the camera is outside of this "
+"limit, the background will stop scrolling. Must be higher than [member "
+"scroll_limit_begin] to work."
+msgstr ""
+
+#: doc/classes/ParallaxBackground.xml:31
+msgid ""
+"The ParallaxBackground's scroll value. Calculated automatically when using a "
+"[Camera2D], but can be used to manually manage scrolling when no camera is "
+"present."
+msgstr ""
+
+#: doc/classes/ParallaxLayer.xml:4
+msgid "A parallax scrolling layer to be used with [ParallaxBackground]."
+msgstr ""
+
+#: doc/classes/ParallaxLayer.xml:7
+msgid ""
+"A ParallaxLayer must be the child of a [ParallaxBackground] node. Each "
+"ParallaxLayer can be set to move at different speeds relative to the camera "
+"movement or the [member ParallaxBackground.scroll_offset] value.\n"
+"This node's children will be affected by its scroll offset.\n"
+"[b]Note:[/b] Any changes to this node's position and scale made after it "
+"enters the scene will be ignored."
+msgstr ""
+
+#: doc/classes/ParallaxLayer.xml:17
+msgid ""
+"The ParallaxLayer's [Texture] mirroring. Useful for creating an infinite "
+"scrolling background. If an axis is set to [code]0[/code], the [Texture] "
+"will not be mirrored."
+msgstr ""
+
+#: doc/classes/ParallaxLayer.xml:20
+msgid ""
+"The ParallaxLayer's offset relative to the parent ParallaxBackground's "
+"[member ParallaxBackground.scroll_offset]."
+msgstr ""
+
+#: doc/classes/ParallaxLayer.xml:23
+msgid ""
+"Multiplies the ParallaxLayer's motion. If an axis is set to [code]0[/code], "
+"it will not scroll."
+msgstr ""
+
+#: doc/classes/Particles.xml:4
+msgid "GPU-based 3D particle emitter."
+msgstr ""
+
+#: doc/classes/Particles.xml:7
+msgid ""
+"3D particle node used to create a variety of particle systems and effects. "
+"[Particles] features an emitter that generates some number of particles at a "
+"given rate.\n"
+"Use the [code]process_material[/code] property to add a [ParticlesMaterial] "
+"to configure particle appearance and behavior. Alternatively, you can add a "
+"[ShaderMaterial] which will be applied to all particles.\n"
+"[b]Note:[/b] [Particles] only work when using the GLES3 renderer. If using "
+"the GLES2 renderer, use [CPUParticles] instead. You can convert [Particles] "
+"to [CPUParticles] by selecting the node, clicking the [b]Particles[/b] menu "
+"at the top of the 3D editor viewport then choosing [b]Convert to "
+"CPUParticles[/b].\n"
+"[b]Note:[/b] After working on a Particles node, remember to update its "
+"[member visibility_aabb] by selecting it, clicking the [b]Particles[/b] menu "
+"at the top of the 3D editor viewport then choose [b]Generate Visibility "
+"AABB[/b]. Otherwise, particles may suddenly disappear depending on the "
+"camera position and angle."
+msgstr ""
+
+#: doc/classes/Particles.xml:13
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/3d/vertex_animation/"
+"controlling_thousands_of_fish.html"
+msgstr ""
+
+#: doc/classes/Particles.xml:20
+msgid ""
+"Returns the axis-aligned bounding box that contains all the particles that "
+"are active in the current frame."
+msgstr ""
+
+#: doc/classes/Particles.xml:27
+msgid "Returns the [Mesh] that is drawn at index [code]pass[/code]."
+msgstr ""
+
+#: doc/classes/Particles.xml:33
+msgid "Restarts the particle emission, clearing existing particles."
+msgstr ""
+
+#: doc/classes/Particles.xml:41
+msgid "Sets the [Mesh] that is drawn at index [code]pass[/code]."
+msgstr ""
+
+#: doc/classes/Particles.xml:54
+msgid "[Mesh] that is drawn for the first draw pass."
+msgstr ""
+
+#: doc/classes/Particles.xml:57
+msgid "[Mesh] that is drawn for the second draw pass."
+msgstr ""
+
+#: doc/classes/Particles.xml:60
+msgid "[Mesh] that is drawn for the third draw pass."
+msgstr ""
+
+#: doc/classes/Particles.xml:63
+msgid "[Mesh] that is drawn for the fourth draw pass."
+msgstr ""
+
+#: doc/classes/Particles.xml:66
+msgid "The number of draw passes when rendering particles."
+msgstr ""
+
+#: doc/classes/Particles.xml:72
+msgid ""
+"Time ratio between each emission. If [code]0[/code], particles are emitted "
+"continuously. If [code]1[/code], all particles are emitted simultaneously."
+msgstr ""
+
+#: doc/classes/Particles.xml:87
+msgid ""
+"If [code]true[/code], only [code]amount[/code] particles will be emitted."
+msgstr ""
+
+#: doc/classes/Particles.xml:90
+msgid ""
+"Amount of time to preprocess the particles before animation starts. Lets you "
+"start the animation some time after particles have started emitting."
+msgstr ""
+
+#: doc/classes/Particles.xml:93 doc/classes/Particles2D.xml:68
+msgid ""
+"[Material] for processing particles. Can be a [ParticlesMaterial] or a "
+"[ShaderMaterial]."
+msgstr ""
+
+#: doc/classes/Particles.xml:96
+msgid "Emission randomness ratio."
+msgstr ""
+
+#: doc/classes/Particles.xml:99
+msgid ""
+"Speed scaling ratio. A value of [code]0[/code] can be used to pause the "
+"particles."
+msgstr ""
+
+#: doc/classes/Particles.xml:102
+msgid ""
+"The [AABB] that determines the node's region which needs to be visible on "
+"screen for the particle system to be active.\n"
+"Grow the box if particles suddenly appear/disappear when the node enters/"
+"exits the screen. The [AABB] can be grown via code or with the [b]Particles "
+"→ Generate AABB[/b] editor tool.\n"
+"[b]Note:[/b] If the [ParticlesMaterial] in use is configured to cast "
+"shadows, you may want to enlarge this AABB to ensure the shadow is updated "
+"when particles are off-screen."
+msgstr ""
+
+#: doc/classes/Particles.xml:118
+msgid "Maximum number of draw passes supported."
+msgstr ""
+
+#: doc/classes/Particles2D.xml:4
+msgid "GPU-based 2D particle emitter."
+msgstr ""
+
+#: doc/classes/Particles2D.xml:7
+msgid ""
+"2D particle node used to create a variety of particle systems and effects. "
+"[Particles2D] features an emitter that generates some number of particles at "
+"a given rate.\n"
+"Use the [code]process_material[/code] property to add a [ParticlesMaterial] "
+"to configure particle appearance and behavior. Alternatively, you can add a "
+"[ShaderMaterial] which will be applied to all particles.\n"
+"[b]Note:[/b] [Particles2D] only work when using the GLES3 renderer. If using "
+"the GLES2 renderer, use [CPUParticles2D] instead. You can convert "
+"[Particles2D] to [CPUParticles2D] by selecting the node, clicking the "
+"[b]Particles[/b] menu at the top of the 2D editor viewport then choosing "
+"[b]Convert to CPUParticles2D[/b].\n"
+"[b]Note:[/b] After working on a Particles node, remember to update its "
+"[member visibility_rect] by selecting it, clicking the [b]Particles[/b] menu "
+"at the top of the 2D editor viewport then choose [b]Generate Visibility "
+"Rect[/b]. Otherwise, particles may suddenly disappear depending on the "
+"camera position and angle.\n"
+"[b]Note:[/b] Unlike [CPUParticles2D], [Particles2D] currently ignore the "
+"texture region defined in [AtlasTexture]s."
+msgstr ""
+
+#: doc/classes/Particles2D.xml:21
+msgid "Returns a rectangle containing the positions of all existing particles."
+msgstr ""
+
+#: doc/classes/Particles2D.xml:27
+msgid "Restarts all the existing particles."
+msgstr ""
+
+#: doc/classes/Particles2D.xml:80
+msgid ""
+"The [Rect2] that determines the node's region which needs to be visible on "
+"screen for the particle system to be active.\n"
+"Grow the rect if particles suddenly appear/disappear when the node enters/"
+"exits the screen. The [Rect2] can be grown via code or with the [b]Particles "
+"→ Generate Visibility Rect[/b] editor tool."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:4
+msgid "Particle properties for [Particles] and [Particles2D] nodes."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:7
+msgid ""
+"ParticlesMaterial defines particle properties and behavior. It is used in "
+"the [code]process_material[/code] of [Particles] and [Particles2D] emitter "
+"nodes.\n"
+"Some of this material's properties are applied to each particle when "
+"emitted, while others can have a [CurveTexture] applied to vary values over "
+"the lifetime of the particle.\n"
+"When a randomness ratio is applied to a property it is used to scale that "
+"property by a random amount. The random ratio is used to interpolate between "
+"[code]1.0[/code] and a random number less than one, the result is multiplied "
+"by the property to obtain the randomized property. For example a random "
+"ratio of [code]0.4[/code] would scale the original property between "
+"[code]0.4-1.0[/code] of its original value."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:18
+msgid "Returns [code]true[/code] if the specified flag is enabled."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:32
+msgid "Returns the randomness ratio associated with the specified parameter."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:39
+msgid "Returns the [Texture] used by the specified parameter."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:47
+msgid ""
+"If [code]true[/code], enables the specified flag. See [enum Flags] for "
+"options."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:55
+msgid "Sets the specified [enum Parameter]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:63
+msgid "Sets the randomness ratio for the specified [enum Parameter]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:71
+msgid "Sets the [Texture] for the specified [enum Parameter]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:77
+msgid ""
+"Initial rotation applied to each particle, in degrees.\n"
+"Only applied when [member flag_disable_z] or [member flag_rotate_y] are "
+"[code]true[/code] or the [SpatialMaterial] being used to draw the particle "
+"is using [constant SpatialMaterial.BILLBOARD_PARTICLES]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:81
+msgid "Each particle's rotation will be animated along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:87
+msgid ""
+"Initial angular velocity applied to each particle. Sets the speed of "
+"rotation of the particle.\n"
+"Only applied when [member flag_disable_z] or [member flag_rotate_y] are "
+"[code]true[/code] or the [SpatialMaterial] being used to draw the particle "
+"is using [constant SpatialMaterial.BILLBOARD_PARTICLES]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:91
+msgid "Each particle's angular velocity will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:100
+msgid "Each particle's animation offset will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:109
+msgid "Each particle's animation speed will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:115
+msgid ""
+"Each particle's initial color. If the [Particles2D]'s [code]texture[/code] "
+"is defined, it will be multiplied by this color. To have particle display "
+"color in a [SpatialMaterial] make sure to set [member SpatialMaterial."
+"vertex_color_use_as_albedo] to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:124
+msgid "Damping will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:133
+msgid ""
+"The box's extents if [code]emission_shape[/code] is set to [constant "
+"EMISSION_SHAPE_BOX]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:136
+msgid ""
+"Particle color will be modulated by color determined by sampling this "
+"texture at the same point as the [member emission_point_texture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:139
+msgid ""
+"Particle velocity and rotation will be set by sampling this texture at the "
+"same point as the [member emission_point_texture]. Used only in [constant "
+"EMISSION_SHAPE_DIRECTED_POINTS]. Can be created automatically from mesh or "
+"node by selecting \"Create Emission Points from Mesh/Node\" under the "
+"\"Particles\" tool in the toolbar."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:142
+msgid ""
+"The number of emission points if [code]emission_shape[/code] is set to "
+"[constant EMISSION_SHAPE_POINTS] or [constant "
+"EMISSION_SHAPE_DIRECTED_POINTS]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:145
+msgid ""
+"Particles will be emitted at positions determined by sampling this texture "
+"at a random position. Used with [constant EMISSION_SHAPE_POINTS] and "
+"[constant EMISSION_SHAPE_DIRECTED_POINTS]. Can be created automatically from "
+"mesh or node by selecting \"Create Emission Points from Mesh/Node\" under "
+"the \"Particles\" tool in the toolbar."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:148
+msgid ""
+"The axis of the ring when using the emitter [constant EMISSION_SHAPE_RING]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:151
+msgid ""
+"The height of the ring when using the emitter [constant EMISSION_SHAPE_RING]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:154
+msgid ""
+"The inner radius of the ring when using the emitter [constant "
+"EMISSION_SHAPE_RING]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:157
+msgid ""
+"The radius of the ring when using the emitter [constant EMISSION_SHAPE_RING]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:160
+msgid ""
+"Particles will be emitted inside this region. Use [enum EmissionShape] "
+"constants for values."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:163
+msgid ""
+"The sphere's radius if [code]emission_shape[/code] is set to [constant "
+"EMISSION_SHAPE_SPHERE]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:175
+msgid "Amount of [member spread] along the Y axis."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:184
+msgid "Each particle's hue will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:202
+msgid ""
+"Each particle's linear acceleration will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:208
+msgid ""
+"Orbital velocity applied to each particle. Makes the particles circle around "
+"origin. Specified in number of full rotations around origin per second.\n"
+"Only available when [member flag_disable_z] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:212
+msgid "Each particle's orbital velocity will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:221
+msgid ""
+"Each particle's radial acceleration will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:230
+msgid "Each particle's scale will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:242
+msgid ""
+"Each particle's tangential acceleration will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:248
+msgid "Trail particles' color will vary along this [GradientTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:251
+msgid ""
+"Emitter will emit [code]amount[/code] divided by [code]trail_divisor[/code] "
+"particles. The remaining particles will be used as trail(s)."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:254
+msgid "Trail particles' size will vary along this [CurveTexture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:259
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set initial velocity properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:262
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set angular velocity properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:265
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set orbital velocity properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:268
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set linear acceleration properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:271
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set radial acceleration properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:274
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set tangential acceleration properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:277
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set damping properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:280
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set angle properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:283
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set scale properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:286
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set hue variation properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:289
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set animation speed properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:292
+msgid ""
+"Use with [method set_param], [method set_param_randomness], and [method "
+"set_param_texture] to set animation offset properties."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:298
+msgid "Use with [method set_flag] to set [member flag_align_y]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:301
+msgid "Use with [method set_flag] to set [member flag_rotate_y]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:304
+msgid "Use with [method set_flag] to set [member flag_disable_z]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:319
+msgid ""
+"Particles will be emitted at a position determined by sampling a random "
+"point on the [member emission_point_texture]. Particle color will be "
+"modulated by [member emission_color_texture]."
+msgstr ""
+
+#: doc/classes/ParticlesMaterial.xml:322
+msgid ""
+"Particles will be emitted at a position determined by sampling a random "
+"point on the [member emission_point_texture]. Particle velocity and rotation "
+"will be set based on [member emission_normal_texture]. Particle color will "
+"be modulated by [member emission_color_texture]."
+msgstr ""
+
+#: doc/classes/Path.xml:4
+msgid "Contains a [Curve3D] path for [PathFollow] nodes to follow."
+msgstr ""
+
+#: doc/classes/Path.xml:7
+msgid ""
+"Can have [PathFollow] child nodes moving along the [Curve3D]. See "
+"[PathFollow] for more information on the usage.\n"
+"Note that the path is considered as relative to the moved nodes (children of "
+"[PathFollow]). As such, the curve should usually start with a zero vector "
+"[code](0, 0, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Path.xml:16
+msgid "A [Curve3D] describing the path."
+msgstr ""
+
+#: doc/classes/Path.xml:22
+msgid "Emitted when the [member curve] changes."
+msgstr ""
+
+#: doc/classes/Path2D.xml:4
+msgid "Contains a [Curve2D] path for [PathFollow2D] nodes to follow."
+msgstr ""
+
+#: doc/classes/Path2D.xml:7
+msgid ""
+"Can have [PathFollow2D] child nodes moving along the [Curve2D]. See "
+"[PathFollow2D] for more information on usage.\n"
+"[b]Note:[/b] The path is considered as relative to the moved nodes (children "
+"of [PathFollow2D]). As such, the curve should usually start with a zero "
+"vector ([code](0, 0)[/code])."
+msgstr ""
+
+#: doc/classes/Path2D.xml:16
+msgid "A [Curve2D] describing the path."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:4
+msgid "Point sampler for a [Path]."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:7
+msgid ""
+"This node takes its parent [Path], and returns the coordinates of a point "
+"within it, given a distance from the first vertex.\n"
+"It is useful for making other nodes follow a path, without coding the "
+"movement pattern. For that, the nodes must be children of this node. The "
+"descendant nodes will then move accordingly when setting an offset in this "
+"node."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:16
+msgid ""
+"If [code]true[/code], the position between two cached points is interpolated "
+"cubically, and linearly otherwise.\n"
+"The points along the [Curve3D] of the [Path] are precomputed before use, for "
+"faster calculations. The point at the requested offset is then calculated "
+"interpolating between two adjacent cached points. This may present a problem "
+"if the curve makes sharp turns, as the cached points may not follow the "
+"curve closely enough.\n"
+"There are two answers to this problem: either increase the number of cached "
+"points and increase memory consumption, or make a cubic interpolation "
+"between two points at the cost of (slightly) slower calculations."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:21 doc/classes/PathFollow2D.xml:21
+msgid "The node's offset along the curve."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:24 doc/classes/PathFollow2D.xml:27
+msgid ""
+"If [code]true[/code], any offset outside the path's length will wrap around, "
+"instead of stopping at the ends. Use it for cyclic paths."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:27
+msgid ""
+"The distance from the first vertex, measured in 3D units along the path. "
+"This sets this node's position to a point within the path."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:30
+msgid ""
+"Allows or forbids rotation on one or more axes, depending on the [enum "
+"RotationMode] constants being used."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:33
+msgid ""
+"The distance from the first vertex, considering 0.0 as the first vertex and "
+"1.0 as the last. This is just another way of expressing the offset within "
+"the path, as the offset supplied is multiplied internally by the path's "
+"length."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:36 doc/classes/PathFollow2D.xml:39
+msgid "The node's offset perpendicular to the curve."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:41
+msgid "Forbids the PathFollow to rotate."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:44
+msgid "Allows the PathFollow to rotate in the Y axis only."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:47
+msgid "Allows the PathFollow to rotate in both the X, and Y axes."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:50
+msgid "Allows the PathFollow to rotate in any axis."
+msgstr ""
+
+#: doc/classes/PathFollow.xml:53
+msgid ""
+"Uses the up vector information in a [Curve3D] to enforce orientation. This "
+"rotation mode requires the [Path]'s [member Curve3D.up_vector_enabled] "
+"property to be set to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/PathFollow2D.xml:4
+msgid "Point sampler for a [Path2D]."
+msgstr ""
+
+#: doc/classes/PathFollow2D.xml:7
+msgid ""
+"This node takes its parent [Path2D], and returns the coordinates of a point "
+"within it, given a distance from the first vertex.\n"
+"It is useful for making other nodes follow a path, without coding the "
+"movement pattern. For that, the nodes must be children of this node. The "
+"descendant nodes will then move accordingly when setting an offset in this "
+"node."
+msgstr ""
+
+#: doc/classes/PathFollow2D.xml:16
+msgid ""
+"If [code]true[/code], the position between two cached points is interpolated "
+"cubically, and linearly otherwise.\n"
+"The points along the [Curve2D] of the [Path2D] are precomputed before use, "
+"for faster calculations. The point at the requested offset is then "
+"calculated interpolating between two adjacent cached points. This may "
+"present a problem if the curve makes sharp turns, as the cached points may "
+"not follow the curve closely enough.\n"
+"There are two answers to this problem: either increase the number of cached "
+"points and increase memory consumption, or make a cubic interpolation "
+"between two points at the cost of (slightly) slower calculations."
+msgstr ""
+
+#: doc/classes/PathFollow2D.xml:24
+msgid ""
+"How far to look ahead of the curve to calculate the tangent if the node is "
+"rotating. E.g. shorter lookaheads will lead to faster rotations."
+msgstr ""
+
+#: doc/classes/PathFollow2D.xml:30
+msgid "The distance along the path in pixels."
+msgstr ""
+
+#: doc/classes/PathFollow2D.xml:33
+msgid ""
+"If [code]true[/code], this node rotates to follow the path, making its "
+"descendants rotate."
+msgstr ""
+
+#: doc/classes/PathFollow2D.xml:36
+msgid ""
+"The distance along the path as a number in the range 0.0 (for the first "
+"vertex) to 1.0 (for the last). This is just another way of expressing the "
+"offset within the path, as the offset supplied is multiplied internally by "
+"the path's length."
+msgstr ""
+
+#: doc/classes/PCKPacker.xml:4
+msgid "Creates packages that can be loaded into a running project."
+msgstr ""
+
+#: doc/classes/PCKPacker.xml:7
+msgid ""
+"The [PCKPacker] is used to create packages that can be loaded into a running "
+"project using [method ProjectSettings.load_resource_pack].\n"
+"[codeblock]\n"
+"var packer = PCKPacker.new()\n"
+"packer.pck_start(\"test.pck\")\n"
+"packer.add_file(\"res://text.txt\", \"text.txt\")\n"
+"packer.flush()\n"
+"[/codeblock]\n"
+"The above [PCKPacker] creates package [code]test.pck[/code], then adds a "
+"file named [code]text.txt[/code] at the root of the package."
+msgstr ""
+
+#: doc/classes/PCKPacker.xml:24
+msgid ""
+"Adds the [code]source_path[/code] file to the current PCK package at the "
+"[code]pck_path[/code] internal path (should start with [code]res://[/code])."
+msgstr ""
+
+#: doc/classes/PCKPacker.xml:31
+msgid ""
+"Writes the files specified using all [method add_file] calls since the last "
+"flush. If [code]verbose[/code] is [code]true[/code], a list of files added "
+"will be printed to the console for easier debugging."
+msgstr ""
+
+#: doc/classes/PCKPacker.xml:39
+msgid ""
+"Creates a new PCK file with the name [code]pck_name[/code]. The [code].pck[/"
+"code] file extension isn't added automatically, so it should be part of "
+"[code]pck_name[/code] (even though it's not required)."
+msgstr ""
+
+#: doc/classes/Performance.xml:4
+msgid "Exposes performance-related data."
+msgstr ""
+
+#: doc/classes/Performance.xml:7
+msgid ""
+"This class provides access to a number of different monitors related to "
+"performance, such as memory usage, draw calls, and FPS. These are the same "
+"as the values displayed in the [b]Monitor[/b] tab in the editor's "
+"[b]Debugger[/b] panel. By using the [method get_monitor] method of this "
+"class, you can access this data from your code.\n"
+"[b]Note:[/b] A few of these monitors are only available in debug mode and "
+"will always return 0 when used in a release build.\n"
+"[b]Note:[/b] Many of these monitors are not updated in real-time, so there "
+"may be a short delay between changes."
+msgstr ""
+
+#: doc/classes/Performance.xml:18
+msgid ""
+"Returns the value of one of the available monitors. You should provide one "
+"of the [enum Monitor] constants as the argument, like this:\n"
+"[codeblock]\n"
+"print(Performance.get_monitor(Performance.TIME_FPS)) # Prints the FPS to the "
+"console\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Performance.xml:27
+msgid "Number of frames per second."
+msgstr ""
+
+#: doc/classes/Performance.xml:30
+msgid "Time it took to complete one frame, in seconds."
+msgstr ""
+
+#: doc/classes/Performance.xml:33
+msgid "Time it took to complete one physics frame, in seconds."
+msgstr ""
+
+#: doc/classes/Performance.xml:36
+msgid ""
+"Static memory currently used, in bytes. Not available in release builds."
+msgstr ""
+
+#: doc/classes/Performance.xml:39
+msgid ""
+"Dynamic memory currently used, in bytes. Not available in release builds."
+msgstr ""
+
+#: doc/classes/Performance.xml:42
+msgid "Available static memory. Not available in release builds."
+msgstr ""
+
+#: doc/classes/Performance.xml:45
+msgid "Available dynamic memory. Not available in release builds."
+msgstr ""
+
+#: doc/classes/Performance.xml:48
+msgid ""
+"Largest amount of memory the message queue buffer has used, in bytes. The "
+"message queue is used for deferred functions calls and notifications."
+msgstr ""
+
+#: doc/classes/Performance.xml:51
+msgid "Number of objects currently instanced (including nodes)."
+msgstr ""
+
+#: doc/classes/Performance.xml:54
+msgid "Number of resources currently used."
+msgstr ""
+
+#: doc/classes/Performance.xml:57
+msgid ""
+"Number of nodes currently instanced in the scene tree. This also includes "
+"the root node."
+msgstr ""
+
+#: doc/classes/Performance.xml:60
+msgid ""
+"Number of orphan nodes, i.e. nodes which are not parented to a node of the "
+"scene tree."
+msgstr ""
+
+#: doc/classes/Performance.xml:63
+msgid "3D objects drawn per frame."
+msgstr ""
+
+#: doc/classes/Performance.xml:66
+msgid "Vertices drawn per frame. 3D only."
+msgstr ""
+
+#: doc/classes/Performance.xml:69
+msgid "Material changes per frame. 3D only."
+msgstr ""
+
+#: doc/classes/Performance.xml:72
+msgid "Shader changes per frame. 3D only."
+msgstr ""
+
+#: doc/classes/Performance.xml:75
+msgid "Render surface changes per frame. 3D only."
+msgstr ""
+
+#: doc/classes/Performance.xml:78
+msgid "Draw calls per frame. 3D only."
+msgstr ""
+
+#: doc/classes/Performance.xml:81
+msgid "Items or joined items drawn per frame."
+msgstr ""
+
+#: doc/classes/Performance.xml:84
+msgid "Draw calls per frame."
+msgstr ""
+
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
+msgid ""
+"The amount of video memory used, i.e. texture and vertex memory combined."
+msgstr ""
+
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
+msgid "The amount of texture memory used."
+msgstr ""
+
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
+msgid "The amount of vertex memory used."
+msgstr ""
+
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
+msgid ""
+"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
+msgstr ""
+
+#: doc/classes/Performance.xml:99
+msgid "Number of active [RigidBody2D] nodes in the game."
+msgstr ""
+
+#: doc/classes/Performance.xml:102
+msgid "Number of collision pairs in the 2D physics engine."
+msgstr ""
+
+#: doc/classes/Performance.xml:105
+msgid "Number of islands in the 2D physics engine."
+msgstr ""
+
+#: doc/classes/Performance.xml:108
+msgid "Number of active [RigidBody] and [VehicleBody] nodes in the game."
+msgstr ""
+
+#: doc/classes/Performance.xml:111
+msgid "Number of collision pairs in the 3D physics engine."
+msgstr ""
+
+#: doc/classes/Performance.xml:114
+msgid "Number of islands in the 3D physics engine."
+msgstr ""
+
+#: doc/classes/Performance.xml:117
+msgid "Output latency of the [AudioServer]."
+msgstr ""
+
+#: doc/classes/Performance.xml:120
+msgid "Represents the size of the [enum Monitor] enum."
+msgstr ""
+
+#: doc/classes/PHashTranslation.xml:4
+msgid "Optimized translation."
+msgstr ""
+
+#: doc/classes/PHashTranslation.xml:7
+msgid ""
+"Optimized translation. Uses real-time compressed translations, which results "
+"in very small dictionaries."
+msgstr ""
+
+#: doc/classes/PHashTranslation.xml:16
+msgid ""
+"Generates and sets an optimized translation from the given [Translation] "
+"resource."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:4
+msgid "Direct access object to a physics body in the [Physics2DServer]."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:7
+msgid ""
+"Provides direct access to a physics body in the [Physics2DServer], allowing "
+"safe changes to physics properties. This object is passed via the direct "
+"state callback of rigid/character bodies, and is intended for changing the "
+"direct state of that body. See [method RigidBody2D._integrate_forces]."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:11
+#: doc/classes/Physics2DDirectSpaceState.xml:11
+#: doc/classes/PhysicsDirectBodyState.xml:11
+#: doc/classes/PhysicsDirectSpaceState.xml:11 doc/classes/RayCast.xml:14
+#: doc/classes/RayCast2D.xml:14 doc/classes/World.xml:10
+#: doc/classes/World2D.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/physics/ray-casting.html"
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:18 doc/classes/RigidBody2D.xml:30
+msgid "Adds a constant directional force without affecting rotation."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:26
+#: doc/classes/PhysicsDirectBodyState.xml:27 doc/classes/RigidBody2D.xml:38
+msgid ""
+"Adds a positioned force to the body. Both the force and the offset from the "
+"body origin are in global coordinates."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:33 doc/classes/RigidBody2D.xml:45
+msgid "Adds a constant rotational force."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:40 doc/classes/RigidBody2D.xml:52
+msgid "Applies a directional impulse without affecting rotation."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:48
+msgid ""
+"Applies a positioned impulse to the body. An impulse is time-independent! "
+"Applying an impulse every frame would result in a framerate-dependent force. "
+"For this reason, it should only be used when simulating one-time impacts "
+"(use the \"_force\" functions otherwise). The offset uses the rotation of "
+"the global coordinate system, but is centered at the object's origin."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:55 doc/classes/RigidBody2D.xml:67
+msgid "Applies a rotational impulse to the body."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:62
+#: doc/classes/PhysicsDirectBodyState.xml:64
+msgid "Returns the collider's [RID]."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:69
+#: doc/classes/PhysicsDirectBodyState.xml:71
+msgid "Returns the collider's object id."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:76
+msgid ""
+"Returns the collider object. This depends on how it was created (will return "
+"a scene node if such was used to create it)."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:83
+#: doc/classes/PhysicsDirectBodyState.xml:85
+msgid "Returns the contact position in the collider."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:90
+#: doc/classes/PhysicsDirectBodyState.xml:92
+msgid "Returns the collider's shape index."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:97
+msgid ""
+"Returns the collided shape's metadata. This metadata is different from "
+"[method Object.get_meta], and is set with [method Physics2DServer."
+"shape_set_data]."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:104
+#: doc/classes/PhysicsDirectBodyState.xml:99
+msgid "Returns the linear velocity vector at the collider's contact point."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:110
+msgid ""
+"Returns the number of contacts this body has with other bodies.\n"
+"[b]Note:[/b] By default, this returns 0 unless bodies are configured to "
+"monitor contacts. See [member RigidBody2D.contact_monitor]."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:118
+#: doc/classes/PhysicsDirectBodyState.xml:120
+msgid "Returns the local normal at the contact point."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:125
+#: doc/classes/PhysicsDirectBodyState.xml:127
+msgid "Returns the local position of the contact point."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:132
+#: doc/classes/PhysicsDirectBodyState.xml:134
+msgid "Returns the local shape index of the collision."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:138
+#: doc/classes/PhysicsDirectBodyState.xml:140
+msgid "Returns the current state of the space, useful for queries."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:145
+#: doc/classes/PhysicsDirectBodyState.xml:147
+msgid ""
+"Returns the body's velocity at the given relative position, including both "
+"translation and rotation."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:151
+#: doc/classes/PhysicsDirectBodyState.xml:153
+msgid "Calls the built-in force integration code."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:157
+#: doc/classes/PhysicsDirectBodyState.xml:159 doc/classes/RigidBody2D.xml:101
+msgid "The body's rotational velocity."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:160
+#: doc/classes/PhysicsDirectBodyState.xml:164
+msgid "The inverse of the inertia of the body."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:163
+#: doc/classes/PhysicsDirectBodyState.xml:167
+msgid "The inverse of the mass of the body."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:166
+#: doc/classes/PhysicsDirectBodyState.xml:170 doc/classes/RigidBody2D.xml:146
+msgid "The body's linear velocity."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:169
+#: doc/classes/PhysicsDirectBodyState.xml:175
+msgid "If [code]true[/code], this body is currently sleeping (not active)."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:172
+#: doc/classes/PhysicsDirectBodyState.xml:178
+msgid "The timestep (delta) used for the simulation."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:175
+#: doc/classes/PhysicsDirectBodyState.xml:181
+msgid ""
+"The rate at which the body stops rotating, if there are not any other forces "
+"moving it."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:178
+#: doc/classes/PhysicsDirectBodyState.xml:184
+msgid "The total gravity vector being currently applied to this body."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:181
+#: doc/classes/PhysicsDirectBodyState.xml:187
+msgid ""
+"The rate at which the body stops moving, if there are not any other forces "
+"moving it."
+msgstr ""
+
+#: doc/classes/Physics2DDirectBodyState.xml:184
+#: doc/classes/PhysicsDirectBodyState.xml:190
+msgid "The body's transformation matrix."
+msgstr ""
+
+#: doc/classes/Physics2DDirectSpaceState.xml:4
+msgid "Direct access object to a space in the [Physics2DServer]."
+msgstr ""
+
+#: doc/classes/Physics2DDirectSpaceState.xml:7
+msgid ""
+"Direct access object to a space in the [Physics2DServer]. It's used mainly "
+"to do queries against objects and areas residing in a given space."
+msgstr ""
+
+#: doc/classes/Physics2DDirectSpaceState.xml:18
+msgid ""
+"Checks how far a [Shape2D] can move without colliding. All the parameters "
+"for the query, including the shape and the motion, are supplied through a "
+"[Physics2DShapeQueryParameters] object.\n"
+"Returns an array with the safe and unsafe proportions (between 0 and 1) of "
+"the motion. The safe proportion is the maximum fraction of the motion that "
+"can be made without a collision. The unsafe proportion is the minimum "
+"fraction of the distance that must be moved for a collision. If no collision "
+"is detected a result of [code][1.0, 1.0][/code] will be returned.\n"
+"[b]Note:[/b] Any [Shape2D]s that the shape is already colliding with e.g. "
+"inside of, will be ignored. Use [method collide_shape] to determine the "
+"[Shape2D]s that the shape is already colliding with."
+msgstr ""
+
+#: doc/classes/Physics2DDirectSpaceState.xml:28
+msgid ""
+"Checks the intersections of a shape, given through a "
+"[Physics2DShapeQueryParameters] object, against the space. The resulting "
+"array contains a list of points where the shape intersects another. Like "
+"with [method intersect_shape], the number of returned results can be limited "
+"to save processing time."
+msgstr ""
+
+#: doc/classes/Physics2DDirectSpaceState.xml:35
+msgid ""
+"Checks the intersections of a shape, given through a "
+"[Physics2DShapeQueryParameters] object, against the space. If it collides "
+"with more than one shape, the nearest one is selected. If the shape did not "
+"intersect anything, then an empty dictionary is returned instead.\n"
+"[b]Note:[/b] This method does not take into account the [code]motion[/code] "
+"property of the object. The returned object is a dictionary containing the "
+"following fields:\n"
+"[code]collider_id[/code]: The colliding object's ID.\n"
+"[code]linear_velocity[/code]: The colliding object's velocity [Vector2]. If "
+"the object is an [Area2D], the result is [code](0, 0)[/code].\n"
+"[code]metadata[/code]: The intersecting shape's metadata. This metadata is "
+"different from [method Object.get_meta], and is set with [method "
+"Physics2DServer.shape_set_data].\n"
+"[code]normal[/code]: The object's surface normal at the intersection point.\n"
+"[code]point[/code]: The intersection point.\n"
+"[code]rid[/code]: The intersecting object's [RID].\n"
+"[code]shape[/code]: The shape index of the colliding shape."
+msgstr ""
+
+#: doc/classes/Physics2DDirectSpaceState.xml:55
+msgid ""
+"Checks whether a point is inside any solid shape. The shapes the point is "
+"inside of are returned in an array containing dictionaries with the "
+"following fields:\n"
+"[code]collider[/code]: The colliding object.\n"
+"[code]collider_id[/code]: The colliding object's ID.\n"
+"[code]metadata[/code]: The intersecting shape's metadata. This metadata is "
+"different from [method Object.get_meta], and is set with [method "
+"Physics2DServer.shape_set_data].\n"
+"[code]rid[/code]: The intersecting object's [RID].\n"
+"[code]shape[/code]: The shape index of the colliding shape.\n"
+"Additionally, the method can take an [code]exclude[/code] array of objects "
+"or [RID]s that are to be excluded from collisions, a [code]collision_mask[/"
+"code] bitmask representing the physics layers to check in, or booleans to "
+"determine if the ray should collide with [PhysicsBody]s or [Area]s, "
+"respectively.\n"
+"[b]Note:[/b] [ConcavePolygonShape2D]s and [CollisionPolygon2D]s in "
+"[code]Segments[/code] build mode are not solid shapes. Therefore, they will "
+"not be detected."
+msgstr ""
+
+#: doc/classes/Physics2DDirectSpaceState.xml:86
+msgid ""
+"Intersects a ray in a given space. The returned object is a dictionary with "
+"the following fields:\n"
+"[code]collider[/code]: The colliding object.\n"
+"[code]collider_id[/code]: The colliding object's ID.\n"
+"[code]metadata[/code]: The intersecting shape's metadata. This metadata is "
+"different from [method Object.get_meta], and is set with [method "
+"Physics2DServer.shape_set_data].\n"
+"[code]normal[/code]: The object's surface normal at the intersection point.\n"
+"[code]position[/code]: The intersection point.\n"
+"[code]rid[/code]: The intersecting object's [RID].\n"
+"[code]shape[/code]: The shape index of the colliding shape.\n"
+"If the ray did not intersect anything, then an empty dictionary is returned "
+"instead.\n"
+"Additionally, the method can take an [code]exclude[/code] array of objects "
+"or [RID]s that are to be excluded from collisions, a [code]collision_mask[/"
+"code] bitmask representing the physics layers to check in, or booleans to "
+"determine if the ray should collide with [PhysicsBody]s or [Area]s, "
+"respectively."
+msgstr ""
+
+#: doc/classes/Physics2DDirectSpaceState.xml:103
+msgid ""
+"Checks the intersections of a shape, given through a "
+"[Physics2DShapeQueryParameters] object, against the space.\n"
+"[b]Note:[/b] This method does not take into account the [code]motion[/code] "
+"property of the object. The intersected shapes are returned in an array "
+"containing dictionaries with the following fields:\n"
+"[code]collider[/code]: The colliding object.\n"
+"[code]collider_id[/code]: The colliding object's ID.\n"
+"[code]metadata[/code]: The intersecting shape's metadata. This metadata is "
+"different from [method Object.get_meta], and is set with [method "
+"Physics2DServer.shape_set_data].\n"
+"[code]rid[/code]: The intersecting object's [RID].\n"
+"[code]shape[/code]: The shape index of the colliding shape.\n"
+"The number of intersections can be limited with the [code]max_results[/code] "
+"parameter, to reduce the processing time."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:4
+msgid "Server interface for low-level 2D physics access."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:7
+msgid ""
+"Physics2DServer is the server responsible for all 2D physics. It can create "
+"many kinds of physics objects, but does not insert them on the node tree."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:19 doc/classes/PhysicsServer.xml:19
+msgid ""
+"Adds a shape to the area, along with a transform matrix. Shapes are usually "
+"referenced by their index, so you should track which shape has a given index."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:34 doc/classes/Physics2DServer.xml:304
+#: doc/classes/PhysicsServer.xml:27 doc/classes/PhysicsServer.xml:298
+msgid ""
+"Assigns the area to a descendant of [Object], so it can exist in the node "
+"tree."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:41 doc/classes/PhysicsServer.xml:34
+msgid ""
+"Removes all shapes from an area. It does not delete the shapes, so they can "
+"be reassigned later."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:47
+msgid ""
+"Creates an [Area2D]. After creating an [Area2D] with this method, assign it "
+"to a space using [method area_set_space] to use the created [Area2D] in the "
+"physics world."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:60 doc/classes/Physics2DServer.xml:372
+#: doc/classes/PhysicsServer.xml:47 doc/classes/PhysicsServer.xml:362
+msgid "Gets the instance ID of the object the area is assigned to."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:68
+msgid ""
+"Returns an area parameter value. See [enum AreaParameter] for a list of "
+"available parameters."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:76 doc/classes/PhysicsServer.xml:63
+msgid "Returns the [RID] of the nth shape of an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:83 doc/classes/PhysicsServer.xml:70
+msgid "Returns the number of shapes assigned to an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:91 doc/classes/PhysicsServer.xml:78
+msgid "Returns the transform matrix of a shape within an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:98 doc/classes/PhysicsServer.xml:85
+msgid "Returns the space assigned to the area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:105 doc/classes/PhysicsServer.xml:92
+msgid "Returns the space override mode for the area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:112 doc/classes/PhysicsServer.xml:99
+msgid "Returns the transform matrix for an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:120 doc/classes/PhysicsServer.xml:114
+msgid ""
+"Removes a shape from an area. It does not delete the shape, so it can be "
+"reassigned later."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:136 doc/classes/PhysicsServer.xml:130
+msgid "Assigns the area to one or many physics layers."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:144 doc/classes/PhysicsServer.xml:138
+msgid "Sets which physics layers the area will monitor."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:153 doc/classes/PhysicsServer.xml:147
+msgid ""
+"Sets the function to call when any body/area enters or exits the area. This "
+"callback will be called for any object interacting with the area, and takes "
+"five parameters:\n"
+"1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on "
+"whether the object entered or exited the area.\n"
+"2: [RID] of the object that entered/exited the area.\n"
+"3: Instance ID of the object that entered/exited the area.\n"
+"4: The shape index of the object that entered/exited the area.\n"
+"5: The shape index of the area where the object entered/exited."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:174
+msgid ""
+"Sets the value for an area parameter. See [enum AreaParameter] for a list of "
+"available parameters."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:183 doc/classes/PhysicsServer.xml:185
+msgid ""
+"Substitutes a given area shape by another. The old shape is selected by its "
+"index, the new one by its [RID]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:192
+msgid "Disables a given shape in an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:201 doc/classes/PhysicsServer.xml:202
+msgid "Sets the transform matrix for an area shape."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:209 doc/classes/PhysicsServer.xml:210
+msgid "Assigns a space to the area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:217
+msgid ""
+"Sets the space override mode for the area. See [enum AreaSpaceOverrideMode] "
+"for a list of available modes."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:225 doc/classes/PhysicsServer.xml:226
+msgid "Sets the transform matrix for an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:240 doc/classes/PhysicsServer.xml:241
+msgid "Adds a body to the list of bodies exempt from collisions."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:249
+msgid ""
+"Adds a positioned force to the applied force and torque. As with [method "
+"body_apply_impulse], both the force and the offset from the body origin are "
+"in global coordinates. A force differs from an impulse in that, while the "
+"two are forces, the impulse clears itself after being applied."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:259 doc/classes/PhysicsServer.xml:259
+msgid ""
+"Adds a shape to the body, along with a transform matrix. Shapes are usually "
+"referenced by their index, so you should track which shape has a given index."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:282
+msgid ""
+"Adds a positioned impulse to the applied force and torque. Both the force "
+"and the offset from the body origin are in global coordinates."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:311 doc/classes/PhysicsServer.xml:305
+msgid "Removes all shapes from a body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:317
+msgid "Creates a physics body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:330 doc/classes/PhysicsServer.xml:320
+msgid "Returns the physics layer or layers a body belongs to."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:337
+msgid "Returns the physics layer or layers a body can collide with."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:344
+msgid "Returns the continuous collision detection mode."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:351
+msgid "Returns the [Physics2DDirectBodyState] of the body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:358 doc/classes/PhysicsServer.xml:348
+msgid ""
+"Returns the maximum contacts that can be reported. See [method "
+"body_set_max_contacts_reported]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:365 doc/classes/PhysicsServer.xml:355
+msgid "Returns the body mode."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:380
+msgid ""
+"Returns the value of a body parameter. See [enum BodyParameter] for a list "
+"of available parameters."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:388 doc/classes/PhysicsServer.xml:378
+msgid "Returns the [RID] of the nth shape of a body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:395 doc/classes/PhysicsServer.xml:385
+msgid "Returns the number of shapes assigned to a body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:403
+msgid "Returns the metadata of a shape of a body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:411 doc/classes/PhysicsServer.xml:393
+msgid "Returns the transform matrix of a body shape."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:418 doc/classes/PhysicsServer.xml:400
+msgid "Returns the [RID] of the space assigned to a body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:426 doc/classes/PhysicsServer.xml:408
+msgid "Returns a body state."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:433 doc/classes/PhysicsServer.xml:429
+msgid ""
+"Returns whether a body uses a callback function to calculate its own physics "
+"(see [method body_set_force_integration_callback])."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:441
+msgid "Removes a body from the list of bodies exempt from collisions."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:449 doc/classes/PhysicsServer.xml:453
+msgid ""
+"Removes a shape from a body. The shape is not deleted, so it can be reused "
+"afterwards."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:457 doc/classes/PhysicsServer.xml:469
+#: doc/classes/RigidBody.xml:105
+msgid ""
+"Sets an axis velocity. The velocity in the given vector axis will be set as "
+"the given vector length. This is useful for jumping behavior."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:465 doc/classes/PhysicsServer.xml:477
+msgid "Sets the physics layer or layers a body belongs to."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:473 doc/classes/PhysicsServer.xml:485
+msgid "Sets the physics layer or layers a body can collide with."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:481
+msgid ""
+"Sets the continuous collision detection mode using one of the [enum CCDMode] "
+"constants.\n"
+"Continuous collision detection tries to predict where a moving body will "
+"collide, instead of moving it and correcting its movement if it collided."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:492 doc/classes/PhysicsServer.xml:504
+msgid ""
+"Sets the function used to calculate physics for an object, if that object "
+"allows it (see [method body_set_omit_force_integration])."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:500 doc/classes/PhysicsServer.xml:519
+msgid ""
+"Sets the maximum contacts to report. Bodies can keep a log of the contacts "
+"with other bodies, this is enabled by setting the maximum amount of contacts "
+"reported to a number greater than 0."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:508
+msgid "Sets the body mode using one of the [enum BodyMode] constants."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:516 doc/classes/PhysicsServer.xml:535
+msgid ""
+"Sets whether a body uses a callback function to calculate its own physics "
+"(see [method body_set_force_integration_callback])."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:525
+msgid ""
+"Sets a body parameter. See [enum BodyParameter] for a list of available "
+"parameters."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:534 doc/classes/PhysicsServer.xml:561
+msgid ""
+"Substitutes a given body shape by another. The old shape is selected by its "
+"index, the new one by its [RID]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:544
+msgid ""
+"Enables one way collision on body if [code]enable[/code] is [code]true[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:553
+msgid "Disables shape in body if [code]disable[/code] is [code]true[/code]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:562
+msgid ""
+"Sets metadata of a shape within a body. This metadata is different from "
+"[method Object.set_meta], and can be retrieved on shape queries."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:571 doc/classes/PhysicsServer.xml:578
+msgid "Sets the transform matrix for a body shape."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:579 doc/classes/PhysicsServer.xml:586
+msgid "Assigns a space to the body (see [method space_create])."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:588
+msgid ""
+"Sets a body state using one of the [enum BodyState] constants.\n"
+"Note that the method doesn't take effect immediately. The state will change "
+"on the next physics frame."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:603
+msgid ""
+"Returns [code]true[/code] if a collision would result from moving in the "
+"given direction from a given point in space. Margin increases the size of "
+"the shapes involved in the collision detection. [Physics2DTestMotionResult] "
+"can be passed to return additional information in."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:633
+msgid ""
+"Creates a damped spring joint between two bodies. If not specified, the "
+"second body is assumed to be the joint itself."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:641
+msgid "Returns the value of a damped spring joint parameter."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:650
+msgid ""
+"Sets a damped spring joint parameter. See [enum DampedStringParam] for a "
+"list of available parameters."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:657
+msgid ""
+"Destroys any of the objects created by Physics2DServer. If the [RID] passed "
+"is not one of the objects that can be created by Physics2DServer, an error "
+"will be sent to the console."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:664
+msgid ""
+"Returns information about the current state of the 2D physics engine. See "
+"[enum ProcessInfo] for a list of available states."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:675
+msgid ""
+"Creates a groove joint between two bodies. If not specified, the bodies are "
+"assumed to be the joint itself."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:683
+msgid "Returns the value of a joint parameter."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:690
+msgid "Returns a joint's type (see [enum JointType])."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:699
+msgid ""
+"Sets a joint parameter. See [enum JointParam] for a list of available "
+"parameters."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:713
+msgid ""
+"Creates a pin joint between two bodies. If not specified, the second body is "
+"assumed to be the joint itself."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:735
+msgid "Activates or deactivates the 2D physics engine."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:742
+msgid ""
+"Sets the amount of iterations for calculating velocities of colliding "
+"bodies. The greater the amount of iterations, the more accurate the "
+"collisions will be. However, a greater amount of iterations requires more "
+"CPU power, which can decrease performance. The default value is [code]8[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:749 doc/classes/PhysicsServer.xml:859
+msgid "Returns the shape data."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:756
+msgid "Returns a shape's type (see [enum ShapeType])."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:764 doc/classes/PhysicsServer.xml:874
+msgid ""
+"Sets the shape data that defines its shape and size. The data to be passed "
+"depends on the kind of shape created [method shape_get_type]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:770 doc/classes/PhysicsServer.xml:897
+msgid ""
+"Creates a space. A space is a collection of parameters for the physics "
+"engine that can be assigned to an area or a body. It can be assigned to an "
+"area with [method area_set_space], or to a body with [method body_set_space]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:777
+msgid ""
+"Returns the state of a space, a [Physics2DDirectSpaceState]. This object can "
+"be used to make collision/intersection queries."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:785 doc/classes/PhysicsServer.xml:912
+msgid "Returns the value of a space parameter."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:792 doc/classes/PhysicsServer.xml:919
+msgid "Returns whether the space is active."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:800 doc/classes/PhysicsServer.xml:927
+msgid ""
+"Marks a space as active. It will not have an effect, unless it is assigned "
+"to an area or body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:809
+msgid ""
+"Sets the value for a space parameter. See [enum SpaceParameter] for a list "
+"of available parameters."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:815 doc/classes/PhysicsServer.xml:1278
+msgid ""
+"Constant to set/get the maximum distance a pair of bodies has to move before "
+"their collision status has to be recalculated."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:818 doc/classes/PhysicsServer.xml:1281
+msgid ""
+"Constant to set/get the maximum distance a shape can be from another before "
+"they are considered separated."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:821 doc/classes/PhysicsServer.xml:1284
+msgid ""
+"Constant to set/get the maximum distance a shape can penetrate another shape "
+"before it is considered a collision."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:824 doc/classes/PhysicsServer.xml:1287
+msgid ""
+"Constant to set/get the threshold linear velocity of activity. A body marked "
+"as potentially inactive for both linear and angular velocity will be put to "
+"sleep after the time given."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:827 doc/classes/PhysicsServer.xml:1290
+msgid ""
+"Constant to set/get the threshold angular velocity of activity. A body "
+"marked as potentially inactive for both linear and angular velocity will be "
+"put to sleep after the time given."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:830 doc/classes/PhysicsServer.xml:1293
+msgid ""
+"Constant to set/get the maximum time of activity. A body marked as "
+"potentially inactive for both linear and angular velocity will be put to "
+"sleep after this time."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:833 doc/classes/PhysicsServer.xml:1298
+msgid ""
+"Constant to set/get the default solver bias for all physics constraints. A "
+"solver bias is a factor controlling how much two objects \"rebound\", after "
+"violating a constraint, to avoid leaving them in that state because of "
+"numerical imprecision."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:836
+msgid ""
+"This is the constant for creating line shapes. A line shape is an infinite "
+"line with an origin point, and a normal. Thus, it can be used for front/"
+"behind checks."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:841
+msgid ""
+"This is the constant for creating segment shapes. A segment shape is a line "
+"from a point A to a point B. It can be checked for intersections."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:844
+msgid ""
+"This is the constant for creating circle shapes. A circle shape only has a "
+"radius. It can be used for intersections and inside/outside checks."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:847
+msgid ""
+"This is the constant for creating rectangle shapes. A rectangle shape is "
+"defined by a width and a height. It can be used for intersections and inside/"
+"outside checks."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:850
+msgid ""
+"This is the constant for creating capsule shapes. A capsule shape is defined "
+"by a radius and a length. It can be used for intersections and inside/"
+"outside checks."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:853
+msgid ""
+"This is the constant for creating convex polygon shapes. A polygon is "
+"defined by a list of points. It can be used for intersections and inside/"
+"outside checks. Unlike the [member CollisionPolygon2D.polygon] property, "
+"polygons modified with [method shape_set_data] do not verify that the points "
+"supplied form is a convex polygon."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:856
+msgid ""
+"This is the constant for creating concave polygon shapes. A polygon is "
+"defined by a list of points. It can be used for intersections checks, but "
+"not for inside/outside checks."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:859 doc/classes/PhysicsServer.xml:1173
+msgid ""
+"This constant is used internally by the engine. Any attempt to create this "
+"kind of shape results in an error."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:862 doc/classes/PhysicsServer.xml:1176
+msgid "Constant to set/get gravity strength in an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:865 doc/classes/PhysicsServer.xml:1179
+msgid "Constant to set/get gravity vector/center in an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:868 doc/classes/PhysicsServer.xml:1182
+msgid ""
+"Constant to set/get whether the gravity vector of an area is a direction, or "
+"a center point."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:871 doc/classes/PhysicsServer.xml:1185
+msgid ""
+"Constant to set/get the falloff factor for point gravity of an area. The "
+"greater this value is, the faster the strength of gravity decreases with the "
+"square of distance."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:874 doc/classes/PhysicsServer.xml:1188
+msgid ""
+"This constant was used to set/get the falloff factor for point gravity. It "
+"has been superseded by [constant AREA_PARAM_GRAVITY_DISTANCE_SCALE]."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:877 doc/classes/PhysicsServer.xml:1191
+msgid "Constant to set/get the linear dampening factor of an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:880 doc/classes/PhysicsServer.xml:1194
+msgid "Constant to set/get the angular dampening factor of an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:883 doc/classes/PhysicsServer.xml:1197
+msgid "Constant to set/get the priority (order of processing) of an area."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:886 doc/classes/PhysicsServer.xml:1200
+msgid ""
+"This area does not affect gravity/damp. These are generally areas that exist "
+"only to detect collisions, and objects entering or exiting them."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:889 doc/classes/PhysicsServer.xml:1203
+msgid ""
+"This area adds its gravity/damp values to whatever has been calculated so "
+"far. This way, many overlapping areas can combine their physics to make "
+"interesting effects."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:892 doc/classes/PhysicsServer.xml:1206
+msgid ""
+"This area adds its gravity/damp values to whatever has been calculated so "
+"far. Then stops taking into account the rest of the areas, even the default "
+"one."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:895 doc/classes/PhysicsServer.xml:1209
+msgid ""
+"This area replaces any gravity/damp, even the default one, and stops taking "
+"into account the rest of the areas."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:898 doc/classes/PhysicsServer.xml:1212
+msgid ""
+"This area replaces any gravity/damp calculated so far, but keeps calculating "
+"the rest of the areas, down to the default one."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:901 doc/classes/PhysicsServer.xml:1215
+msgid "Constant for static bodies."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:904 doc/classes/PhysicsServer.xml:1218
+msgid "Constant for kinematic bodies."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:907 doc/classes/PhysicsServer.xml:1221
+msgid "Constant for rigid bodies."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:910 doc/classes/PhysicsServer.xml:1224
+msgid ""
+"Constant for rigid bodies in character mode. In this mode, a body can not "
+"rotate, and only its linear velocity is affected by physics."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:913 doc/classes/PhysicsServer.xml:1227
+msgid "Constant to set/get a body's bounce factor."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:916 doc/classes/PhysicsServer.xml:1230
+msgid "Constant to set/get a body's friction."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:919 doc/classes/PhysicsServer.xml:1233
+msgid "Constant to set/get a body's mass."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:922
+msgid "Constant to set/get a body's inertia."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:925 doc/classes/PhysicsServer.xml:1236
+msgid "Constant to set/get a body's gravity multiplier."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:928 doc/classes/PhysicsServer.xml:1239
+msgid "Constant to set/get a body's linear dampening factor."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:931 doc/classes/PhysicsServer.xml:1242
+msgid "Constant to set/get a body's angular dampening factor."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:934 doc/classes/PhysicsServer.xml:1245
+msgid "Represents the size of the [enum BodyParameter] enum."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:937 doc/classes/PhysicsServer.xml:1248
+msgid "Constant to set/get the current transform matrix of the body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:940 doc/classes/PhysicsServer.xml:1251
+msgid "Constant to set/get the current linear velocity of the body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:943 doc/classes/PhysicsServer.xml:1254
+msgid "Constant to set/get the current angular velocity of the body."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:946 doc/classes/PhysicsServer.xml:1257
+msgid "Constant to sleep/wake up a body, or to get whether it is sleeping."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:949 doc/classes/PhysicsServer.xml:1260
+msgid "Constant to set/get whether the body can sleep."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:952
+msgid "Constant to create pin joints."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:955
+msgid "Constant to create groove joints."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:958
+msgid "Constant to create damped spring joints."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:967
+msgid ""
+"Sets the resting length of the spring joint. The joint will always try to go "
+"to back this length when pulled apart."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:970
+msgid ""
+"Sets the stiffness of the spring joint. The joint applies a force equal to "
+"the stiffness times the distance from its resting length."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:973
+msgid ""
+"Sets the damping ratio of the spring joint. A value of 0 indicates an "
+"undamped spring, while 1 causes the system to reach equilibrium as fast as "
+"possible (critical damping)."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:976
+msgid ""
+"Disables continuous collision detection. This is the fastest way to detect "
+"body collisions, but can miss small, fast-moving objects."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:979
+msgid ""
+"Enables continuous collision detection by raycasting. It is faster than "
+"shapecasting, but less precise."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:982
+msgid ""
+"Enables continuous collision detection by shapecasting. It is the slowest "
+"CCD method, and the most precise."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:985 doc/classes/PhysicsServer.xml:1263
+msgid ""
+"The value of the first parameter and area callback function receives, when "
+"an object enters one of its shapes."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:988 doc/classes/PhysicsServer.xml:1266
+msgid ""
+"The value of the first parameter and area callback function receives, when "
+"an object exits one of its shapes."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:991 doc/classes/PhysicsServer.xml:1269
+msgid "Constant to get the number of objects that are not sleeping."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:994 doc/classes/PhysicsServer.xml:1272
+msgid "Constant to get the number of possible collisions."
+msgstr ""
+
+#: doc/classes/Physics2DServer.xml:997 doc/classes/PhysicsServer.xml:1275
+msgid ""
+"Constant to get the number of space regions where a collision could occur."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:4
+msgid "Parameters to be sent to a 2D shape physics query."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:7
+msgid ""
+"This class contains the shape and other parameters for 2D intersection/"
+"collision queries."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:16
+msgid ""
+"Sets the [Shape2D] that will be used for collision/intersection queries."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:22
+msgid "If [code]true[/code], the query will take [Area2D]s into account."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:25
+msgid ""
+"If [code]true[/code], the query will take [PhysicsBody2D]s into account."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:28
+#: doc/classes/PhysicsShapeQueryParameters.xml:28
+msgid ""
+"The physics layer(s) the query will take into account (as a bitmask). See "
+"[url=https://docs.godotengine.org/en/3.4/tutorials/physics/"
+"physics_introduction.html#collision-layers-and-masks]Collision layers and "
+"masks[/url] in the documentation for more information."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:31
+#: doc/classes/PhysicsShapeQueryParameters.xml:31
+msgid ""
+"The list of objects or object [RID]s that will be excluded from collisions."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:34
+#: doc/classes/PhysicsShapeQueryParameters.xml:34
+msgid "The collision margin for the shape."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:37
+msgid "The motion of the shape being queried for."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:40
+#: doc/classes/PhysicsShapeQueryParameters.xml:37
+msgid "The queried shape's [RID]. See also [method set_shape]."
+msgstr ""
+
+#: doc/classes/Physics2DShapeQueryParameters.xml:43
+#: doc/classes/PhysicsShapeQueryParameters.xml:40
+msgid "The queried shape's transform matrix."
+msgstr ""
+
+#: doc/classes/PhysicsBody.xml:4
+msgid "Base class for all objects affected by physics in 3D space."
+msgstr ""
+
+#: doc/classes/PhysicsBody.xml:7
+msgid ""
+"PhysicsBody is an abstract base class for implementing a physics body. All "
+"*Body types inherit from it."
+msgstr ""
+
+#: doc/classes/PhysicsBody.xml:17 doc/classes/PhysicsBody2D.xml:17
+#: doc/classes/SoftBody.xml:17
+msgid "Adds a body to the list of bodies that this body can't collide with."
+msgstr ""
+
+#: doc/classes/PhysicsBody.xml:23 doc/classes/PhysicsBody2D.xml:23
+#: doc/classes/SoftBody.xml:23
+msgid ""
+"Returns an array of nodes that were added as collision exceptions for this "
+"body."
+msgstr ""
+
+#: doc/classes/PhysicsBody.xml:30 doc/classes/PhysicsBody2D.xml:30
+#: doc/classes/SoftBody.xml:58
+msgid ""
+"Removes a body from the list of bodies that this body can't collide with."
+msgstr ""
+
+#: doc/classes/PhysicsBody2D.xml:4
+msgid "Base class for all objects affected by physics in 2D space."
+msgstr ""
+
+#: doc/classes/PhysicsBody2D.xml:7
+msgid ""
+"PhysicsBody2D is an abstract base class for implementing a physics body. All "
+"*Body2D types inherit from it."
+msgstr ""
+
+#: doc/classes/PhysicsBody2D.xml:37
+msgid ""
+"Both collision_layer and collision_mask. Returns collision_layer when "
+"accessed. Updates collision_layer and collision_mask when modified."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:4
+msgid "Direct access object to a physics body in the [PhysicsServer]."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:7
+msgid ""
+"Provides direct access to a physics body in the [PhysicsServer], allowing "
+"safe changes to physics properties. This object is passed via the direct "
+"state callback of rigid/character bodies, and is intended for changing the "
+"direct state of that body. See [method RigidBody._integrate_forces]."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:18
+msgid ""
+"Adds a constant directional force without affecting rotation.\n"
+"This is equivalent to [code]add_force(force, Vector3(0,0,0))[/code]."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:34
+msgid "Adds a constant rotational force without affecting position."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:41
+msgid ""
+"Applies a single directional impulse without affecting rotation.\n"
+"This is equivalent to [code]apply_impulse(Vector3(0, 0, 0), impulse)[/code]."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:50
+msgid ""
+"Applies a positioned impulse to the body. An impulse is time-independent! "
+"Applying an impulse every frame would result in a framerate-dependent force. "
+"For this reason it should only be used when simulating one-time impacts. The "
+"position uses the rotation of the global coordinate system, but is centered "
+"at the object's origin."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:57
+msgid ""
+"Apply a torque impulse (which will be affected by the body mass and shape). "
+"This will rotate the body around the vector [code]j[/code] passed as "
+"parameter."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:78
+msgid "Returns the collider object."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:105
+msgid ""
+"Returns the number of contacts this body has with other bodies.\n"
+"[b]Note:[/b] By default, this returns 0 unless bodies are configured to "
+"monitor contacts. See [member RigidBody.contact_monitor]."
+msgstr ""
+
+#: doc/classes/PhysicsDirectBodyState.xml:113
+msgid "Impulse created by the contact. Only implemented for Bullet physics."
+msgstr ""
+
+#: doc/classes/PhysicsDirectSpaceState.xml:4
+msgid "Direct access object to a space in the [PhysicsServer]."
+msgstr ""
+
+#: doc/classes/PhysicsDirectSpaceState.xml:7
+msgid ""
+"Direct access object to a space in the [PhysicsServer]. It's used mainly to "
+"do queries against objects and areas residing in a given space."
+msgstr ""
+
+#: doc/classes/PhysicsDirectSpaceState.xml:19
+msgid ""
+"Checks how far a [Shape] can move without colliding. All the parameters for "
+"the query, including the shape, are supplied through a "
+"[PhysicsShapeQueryParameters] object.\n"
+"Returns an array with the safe and unsafe proportions (between 0 and 1) of "
+"the motion. The safe proportion is the maximum fraction of the motion that "
+"can be made without a collision. The unsafe proportion is the minimum "
+"fraction of the distance that must be moved for a collision. If no collision "
+"is detected a result of [code][1.0, 1.0][/code] will be returned.\n"
+"[b]Note:[/b] Any [Shape]s that the shape is already colliding with e.g. "
+"inside of, will be ignored. Use [method collide_shape] to determine the "
+"[Shape]s that the shape is already colliding with."
+msgstr ""
+
+#: doc/classes/PhysicsDirectSpaceState.xml:29
+msgid ""
+"Checks the intersections of a shape, given through a "
+"[PhysicsShapeQueryParameters] object, against the space. The resulting array "
+"contains a list of points where the shape intersects another. Like with "
+"[method intersect_shape], the number of returned results can be limited to "
+"save processing time."
+msgstr ""
+
+#: doc/classes/PhysicsDirectSpaceState.xml:36
+msgid ""
+"Checks the intersections of a shape, given through a "
+"[PhysicsShapeQueryParameters] object, against the space. If it collides with "
+"more than one shape, the nearest one is selected. The returned object is a "
+"dictionary containing the following fields:\n"
+"[code]collider_id[/code]: The colliding object's ID.\n"
+"[code]linear_velocity[/code]: The colliding object's velocity [Vector3]. If "
+"the object is an [Area], the result is [code](0, 0, 0)[/code].\n"
+"[code]normal[/code]: The object's surface normal at the intersection point.\n"
+"[code]point[/code]: The intersection point.\n"
+"[code]rid[/code]: The intersecting object's [RID].\n"
+"[code]shape[/code]: The shape index of the colliding shape.\n"
+"If the shape did not intersect anything, then an empty dictionary is "
+"returned instead."
+msgstr ""
+
+#: doc/classes/PhysicsDirectSpaceState.xml:55
+msgid ""
+"Intersects a ray in a given space. The returned object is a dictionary with "
+"the following fields:\n"
+"[code]collider[/code]: The colliding object.\n"
+"[code]collider_id[/code]: The colliding object's ID.\n"
+"[code]normal[/code]: The object's surface normal at the intersection point.\n"
+"[code]position[/code]: The intersection point.\n"
+"[code]rid[/code]: The intersecting object's [RID].\n"
+"[code]shape[/code]: The shape index of the colliding shape.\n"
+"If the ray did not intersect anything, then an empty dictionary is returned "
+"instead.\n"
+"Additionally, the method can take an [code]exclude[/code] array of objects "
+"or [RID]s that are to be excluded from collisions, a [code]collision_mask[/"
+"code] bitmask representing the physics layers to check in, or booleans to "
+"determine if the ray should collide with [PhysicsBody]s or [Area]s, "
+"respectively."
+msgstr ""
+
+#: doc/classes/PhysicsDirectSpaceState.xml:71
+msgid ""
+"Checks the intersections of a shape, given through a "
+"[PhysicsShapeQueryParameters] object, against the space. The intersected "
+"shapes are returned in an array containing dictionaries with the following "
+"fields:\n"
+"[code]collider[/code]: The colliding object.\n"
+"[code]collider_id[/code]: The colliding object's ID.\n"
+"[code]rid[/code]: The intersecting object's [RID].\n"
+"[code]shape[/code]: The shape index of the colliding shape.\n"
+"The number of intersections can be limited with the [code]max_results[/code] "
+"parameter, to reduce the processing time."
+msgstr ""
+
+#: doc/classes/PhysicsMaterial.xml:4
+msgid "A material for physics properties."
+msgstr ""
+
+#: doc/classes/PhysicsMaterial.xml:7
+msgid ""
+"Provides a means of modifying the collision properties of a [PhysicsBody]."
+msgstr ""
+
+#: doc/classes/PhysicsMaterial.xml:15
+msgid ""
+"If [code]true[/code], subtracts the bounciness from the colliding object's "
+"bounciness instead of adding it."
+msgstr ""
+
+#: doc/classes/PhysicsMaterial.xml:18
+msgid ""
+"The body's bounciness. Values range from [code]0[/code] (no bounce) to "
+"[code]1[/code] (full bounciness)."
+msgstr ""
+
+#: doc/classes/PhysicsMaterial.xml:21
+msgid ""
+"The body's friction. Values range from [code]0[/code] (frictionless) to "
+"[code]1[/code] (maximum friction)."
+msgstr ""
+
+#: doc/classes/PhysicsMaterial.xml:24
+msgid ""
+"If [code]true[/code], the physics engine will use the friction of the object "
+"marked as \"rough\" when two objects collide. If [code]false[/code], the "
+"physics engine will use the lowest friction of all colliding objects "
+"instead. If [code]true[/code] for both colliding objects, the physics engine "
+"will use the highest friction."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:4
+msgid "Server interface for low-level physics access."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:7
+msgid ""
+"PhysicsServer is the server responsible for all 3D physics. It can create "
+"many kinds of physics objects, but does not insert them on the node tree."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:40
+msgid "Creates an [Area]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:55
+msgid ""
+"Returns an area parameter value. A list of available parameters is on the "
+"[enum AreaParameter] constants."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:106
+msgid "If [code]true[/code], area collides with rays."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:168
+msgid ""
+"Sets the value for an area parameter. A list of available parameters is on "
+"the [enum AreaParameter] constants."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:176
+msgid "Sets object pickable with rays."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:218
+msgid ""
+"Sets the space override mode for the area. The modes are described in the "
+"[enum AreaSpaceOverrideMode] constants."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:282
+msgid ""
+"Gives the body a push at a [code]position[/code] in the direction of the "
+"[code]impulse[/code]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:290
+msgid "Gives the body a push to rotate it."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:313
+msgid ""
+"Creates a physics body. The first parameter can be any value from [enum "
+"BodyMode] constants, for the type of body created. Additionally, the body "
+"can be created in sleeping state to save processing time."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:327
+msgid ""
+"Returns the physics layer or layers a body can collide with.\n"
+"-"
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:335
+msgid "Returns the [PhysicsDirectBodyState] of the body."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:370
+msgid ""
+"Returns the value of a body parameter. A list of available parameters is on "
+"the [enum BodyParameter] constants."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:422
+msgid ""
+"If [code]true[/code], the continuous collision detection mode is enabled."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:436
+msgid "If [code]true[/code], the body can be detected by rays."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:444
+msgid ""
+"Removes a body from the list of bodies exempt from collisions.\n"
+"Continuous collision detection tries to predict where a moving body will "
+"collide, instead of moving it and correcting its movement if it collided."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:493
+msgid ""
+"If [code]true[/code], the continuous collision detection mode is enabled.\n"
+"Continuous collision detection tries to predict where a moving body will "
+"collide, instead of moving it and correcting its movement if it collided."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:527
+msgid "Sets the body mode, from one of the [enum BodyMode] constants."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:544
+msgid ""
+"Sets a body parameter. A list of available parameters is on the [enum "
+"BodyParameter] constants."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:552
+msgid "Sets the body pickable with rays if [code]enabled[/code] is set."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:595
+msgid "Sets a body state (see [enum BodyState] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:608
+msgid ""
+"Returns [code]true[/code] if a collision would result from moving in the "
+"given direction from a given point in space. [PhysicsTestMotionResult] can "
+"be passed to return additional information in."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:616
+msgid ""
+"Gets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:625
+msgid ""
+"Sets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:632
+msgid ""
+"Destroys any of the objects created by PhysicsServer. If the [RID] passed is "
+"not one of the objects that can be created by PhysicsServer, an error will "
+"be sent to the console."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:641
+msgid ""
+"Gets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:650
+msgid ""
+"Gets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
+"constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:660
+msgid ""
+"Sets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:670
+msgid ""
+"Sets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
+"constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:677
+msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:685
+msgid "Gets a hinge_joint flag (see [enum HingeJointFlag] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:693
+msgid "Gets a hinge_joint parameter (see [enum HingeJointParam])."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:702
+msgid "Sets a hinge_joint flag (see [enum HingeJointFlag] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:711
+msgid "Sets a hinge_joint parameter (see [enum HingeJointParam] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:721
+msgid "Creates a [ConeTwistJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:731
+msgid "Creates a [Generic6DOFJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:741
+msgid "Creates a [HingeJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:751
+msgid "Creates a [PinJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:761
+msgid "Creates a [SliderJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:768
+msgid "Gets the priority value of the Joint."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:775
+msgid "Returns the type of the Joint."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:783
+msgid "Sets the priority value of the Joint."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:790
+msgid ""
+"Returns position of the joint in the local space of body a of the joint."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:797
+msgid ""
+"Returns position of the joint in the local space of body b of the joint."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:805
+msgid "Gets a pin_joint parameter (see [enum PinJointParam] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:813
+msgid "Sets position of the joint in the local space of body a of the joint."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:821
+msgid "Sets position of the joint in the local space of body b of the joint."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:830
+msgid "Sets a pin_joint parameter (see [enum PinJointParam] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:837
+msgid "Activates or deactivates the 3D physics engine."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:844
+msgid ""
+"Sets the amount of iterations for calculating velocities of colliding "
+"bodies. The greater the amount of iterations, the more accurate the "
+"collisions will be. However, a greater amount of iterations requires more "
+"CPU power, which can decrease performance. The default value is [code]8[/"
+"code].\n"
+"[b]Note:[/b] Only has an effect when using the GodotPhysics engine, not the "
+"default Bullet physics engine."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:852
+msgid ""
+"Creates a shape of a type from [enum ShapeType]. Does not assign it to a "
+"body or an area. To do so, you must use [method area_set_shape] or [method "
+"body_set_shape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:866
+msgid "Returns the type of shape (see [enum ShapeType] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:882 doc/classes/PhysicsServer.xml:891
+msgid "Gets a slider_joint parameter (see [enum SliderJointParam] constants)."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:904
+msgid ""
+"Returns the state of a space, a [PhysicsDirectSpaceState]. This object can "
+"be used to make collision/intersection queries."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:936
+msgid ""
+"Sets the value for a space parameter. A list of available parameters is on "
+"the [enum SpaceParameter] constants."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:942
+msgid "The [Joint] is a [PinJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:945
+msgid "The [Joint] is a [HingeJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:948
+msgid "The [Joint] is a [SliderJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:951
+msgid "The [Joint] is a [ConeTwistJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:954
+msgid "The [Joint] is a [Generic6DOFJoint]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:957
+msgid ""
+"The strength with which the pinned objects try to stay in positional "
+"relation to each other.\n"
+"The higher, the stronger."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:961
+msgid ""
+"The strength with which the pinned objects try to stay in velocity relation "
+"to each other.\n"
+"The higher, the stronger."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:965
+msgid ""
+"If above 0, this value is the maximum value for an impulse that this Joint "
+"puts on its ends."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:971
+msgid "The maximum rotation across the Hinge."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:974
+msgid "The minimum rotation across the Hinge."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:991
+msgid "If [code]true[/code], the Hinge has a maximum and a minimum rotation."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:994
+msgid "If [code]true[/code], a motor turns the Hinge."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:997 doc/classes/SliderJoint.xml:76
+#: doc/classes/SliderJoint.xml:99
+msgid ""
+"The maximum difference between the pivot points on their X axis before "
+"damping happens."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1000 doc/classes/SliderJoint.xml:67
+#: doc/classes/SliderJoint.xml:102
+msgid ""
+"The minimum difference between the pivot points on their X axis before "
+"damping happens."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1003 doc/classes/SliderJoint.xml:73
+#: doc/classes/SliderJoint.xml:105
+msgid ""
+"A factor applied to the movement across the slider axis once the limits get "
+"surpassed. The lower, the slower the movement."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1006 doc/classes/SliderJoint.xml:108
+msgid ""
+"The amount of restitution once the limits are surpassed. The lower, the more "
+"velocityenergy gets lost."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1009 doc/classes/SliderJoint.xml:111
+msgid "The amount of damping once the slider limits are surpassed."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1012 doc/classes/SliderJoint.xml:85
+#: doc/classes/SliderJoint.xml:114
+msgid ""
+"A factor applied to the movement across the slider axis as long as the "
+"slider is in the limits. The lower, the slower the movement."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1015 doc/classes/SliderJoint.xml:82
+#: doc/classes/SliderJoint.xml:117
+msgid "The amount of restitution inside the slider limits."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1018 doc/classes/SliderJoint.xml:79
+#: doc/classes/SliderJoint.xml:120
+msgid "The amount of damping inside the slider limits."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1021 doc/classes/SliderJoint.xml:94
+#: doc/classes/SliderJoint.xml:123
+msgid "A factor applied to the movement across axes orthogonal to the slider."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1024 doc/classes/SliderJoint.xml:91
+#: doc/classes/SliderJoint.xml:126
+msgid ""
+"The amount of restitution when movement is across axes orthogonal to the "
+"slider."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1027 doc/classes/SliderJoint.xml:88
+#: doc/classes/SliderJoint.xml:129
+msgid ""
+"The amount of damping when movement is across axes orthogonal to the slider."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1030 doc/classes/SliderJoint.xml:43
+#: doc/classes/SliderJoint.xml:132
+msgid "The upper limit of rotation in the slider."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1033 doc/classes/SliderJoint.xml:32
+#: doc/classes/SliderJoint.xml:135
+msgid "The lower limit of rotation in the slider."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1036 doc/classes/SliderJoint.xml:138
+msgid "A factor applied to the all rotation once the limit is surpassed."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1039 doc/classes/SliderJoint.xml:141
+msgid "The amount of restitution of the rotation when the limit is surpassed."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1042 doc/classes/SliderJoint.xml:144
+msgid "The amount of damping of the rotation when the limit is surpassed."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1045
+msgid "A factor that gets applied to the all rotation in the limits."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1048 doc/classes/SliderJoint.xml:49
+#: doc/classes/SliderJoint.xml:150
+msgid "The amount of restitution of the rotation in the limits."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1051 doc/classes/SliderJoint.xml:46
+#: doc/classes/SliderJoint.xml:153
+msgid "The amount of damping of the rotation in the limits."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1054
+msgid ""
+"A factor that gets applied to the all rotation across axes orthogonal to the "
+"slider."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1057 doc/classes/SliderJoint.xml:58
+#: doc/classes/SliderJoint.xml:159
+msgid ""
+"The amount of restitution of the rotation across axes orthogonal to the "
+"slider."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1060 doc/classes/SliderJoint.xml:55
+#: doc/classes/SliderJoint.xml:162
+msgid ""
+"The amount of damping of the rotation across axes orthogonal to the slider."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1063
+msgid "Represents the size of the [enum SliderJointParam] enum."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1080
+msgid ""
+"The ease with which the Joint twists, if it's too low, it takes more force "
+"to twist the joint."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1092
+msgid ""
+"A factor that gets applied to the movement across the axes. The lower, the "
+"slower the movement."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1095
+msgid ""
+"The amount of restitution on the axes movement. The lower, the more velocity-"
+"energy gets lost."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1101
+msgid "The velocity that the joint's linear motor will attempt to reach."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1104
+msgid ""
+"The maximum force that the linear motor can apply while trying to reach the "
+"target velocity."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1113
+msgid "A factor that gets multiplied onto all rotations across the axes."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1125
+msgid ""
+"When correcting the crossing of limits in rotation across the axes, this "
+"error tolerance factor defines how much the correction gets slowed down. The "
+"lower, the slower."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1134
+msgid ""
+"If [code]set[/code] there is linear motion possible within the given limits."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1137
+msgid "If [code]set[/code] there is rotational motion possible."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1140
+msgid "If [code]set[/code] there is a rotational motor across these axes."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1143
+msgid ""
+"If [code]set[/code] there is a linear motor on this axis that targets a "
+"specific velocity."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1146
+msgid "The [Shape] is a [PlaneShape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1149
+msgid "The [Shape] is a [RayShape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1152
+msgid "The [Shape] is a [SphereShape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1155
+msgid "The [Shape] is a [BoxShape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1158
+msgid "The [Shape] is a [CapsuleShape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1161
+msgid "The [Shape] is a [CylinderShape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1164
+msgid "The [Shape] is a [ConvexPolygonShape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1167
+msgid "The [Shape] is a [ConcavePolygonShape]."
+msgstr ""
+
+#: doc/classes/PhysicsServer.xml:1170
+msgid "The [Shape] is a [HeightMapShape]."
+msgstr ""
+
+#: doc/classes/PhysicsShapeQueryParameters.xml:4
+msgid "Parameters to be sent to a 3D shape physics query."
+msgstr ""
+
+#: doc/classes/PhysicsShapeQueryParameters.xml:7
+msgid ""
+"This class contains the shape and other parameters for 3D intersection/"
+"collision queries."
+msgstr ""
+
+#: doc/classes/PhysicsShapeQueryParameters.xml:16
+msgid "Sets the [Shape] that will be used for collision/intersection queries."
+msgstr ""
+
+#: doc/classes/PhysicsShapeQueryParameters.xml:22
+msgid "If [code]true[/code], the query will take [Area]s into account."
+msgstr ""
+
+#: doc/classes/PhysicsShapeQueryParameters.xml:25
+msgid "If [code]true[/code], the query will take [PhysicsBody]s into account."
+msgstr ""
+
+#: doc/classes/PinJoint.xml:4
+msgid "Pin joint for 3D PhysicsBodies."
+msgstr ""
+
+#: doc/classes/PinJoint.xml:7
+msgid ""
+"Pin joint for 3D rigid bodies. It pins 2 bodies (rigid or static) together. "
+"See also [Generic6DOFJoint]."
+msgstr ""
+
+#: doc/classes/PinJoint.xml:30 doc/classes/PinJoint.xml:41
+msgid ""
+"The force with which the pinned objects stay in positional relation to each "
+"other. The higher, the stronger."
+msgstr ""
+
+#: doc/classes/PinJoint.xml:33 doc/classes/PinJoint.xml:44
+msgid ""
+"The force with which the pinned objects stay in velocity relation to each "
+"other. The higher, the stronger."
+msgstr ""
+
+#: doc/classes/PinJoint.xml:36 doc/classes/PinJoint.xml:47
+msgid ""
+"If above 0, this value is the maximum value for an impulse that this Joint "
+"produces."
+msgstr ""
+
+#: doc/classes/PinJoint2D.xml:4
+msgid "Pin Joint for 2D shapes."
+msgstr ""
+
+#: doc/classes/PinJoint2D.xml:7
+msgid ""
+"Pin Joint for 2D rigid bodies. It pins two bodies (rigid or static) together."
+msgstr ""
+
+#: doc/classes/PinJoint2D.xml:15
+msgid ""
+"The higher this value, the more the bond to the pinned partner can flex."
+msgstr ""
+
+#: doc/classes/Plane.xml:4
+msgid "Plane in hessian form."
+msgstr ""
+
+#: doc/classes/Plane.xml:7
+msgid ""
+"Plane represents a normalized plane equation. Basically, \"normal\" is the "
+"normal of the plane (a,b,c normalized), and \"d\" is the distance from the "
+"origin to the plane (in the direction of \"normal\"). \"Over\" or \"Above\" "
+"the plane is considered the side of the plane towards where the normal is "
+"pointing."
+msgstr ""
+
+#: doc/classes/Plane.xml:20
+msgid ""
+"Creates a plane from the four parameters. The three components of the "
+"resulting plane's [member normal] are [code]a[/code], [code]b[/code] and "
+"[code]c[/code], and the plane has a distance of [code]d[/code] from the "
+"origin."
+msgstr ""
+
+#: doc/classes/Plane.xml:29
+msgid "Creates a plane from the three points, given in clockwise order."
+msgstr ""
+
+#: doc/classes/Plane.xml:37
+msgid "Creates a plane from the normal and the plane's distance to the origin."
+msgstr ""
+
+#: doc/classes/Plane.xml:43
+msgid "Returns the center of the plane."
+msgstr ""
+
+#: doc/classes/Plane.xml:50
+msgid ""
+"Returns the shortest distance from the plane to the position [code]point[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Plane.xml:56
+msgid ""
+"Returns the center of the plane.\n"
+"This method is deprecated, please use [method center] instead."
+msgstr ""
+
+#: doc/classes/Plane.xml:65
+msgid ""
+"Returns [code]true[/code] if [code]point[/code] is inside the plane. "
+"Comparison uses a custom minimum [code]epsilon[/code] threshold."
+msgstr ""
+
+#: doc/classes/Plane.xml:73
+msgid ""
+"Returns the intersection point of the three planes [code]b[/code], [code]c[/"
+"code] and this plane. If no intersection is found, [code]null[/code] is "
+"returned."
+msgstr ""
+
+#: doc/classes/Plane.xml:81
+msgid ""
+"Returns the intersection point of a ray consisting of the position "
+"[code]from[/code] and the direction normal [code]dir[/code] with this plane. "
+"If no intersection is found, [code]null[/code] is returned."
+msgstr ""
+
+#: doc/classes/Plane.xml:89
+msgid ""
+"Returns the intersection point of a segment from position [code]begin[/code] "
+"to position [code]end[/code] with this plane. If no intersection is found, "
+"[code]null[/code] is returned."
+msgstr ""
+
+#: doc/classes/Plane.xml:96
+msgid ""
+"Returns [code]true[/code] if this plane and [code]plane[/code] are "
+"approximately equal, by running [method @GDScript.is_equal_approx] on each "
+"component."
+msgstr ""
+
+#: doc/classes/Plane.xml:103
+msgid ""
+"Returns [code]true[/code] if [code]point[/code] is located above the plane."
+msgstr ""
+
+#: doc/classes/Plane.xml:109
+msgid "Returns a copy of the plane, normalized."
+msgstr ""
+
+#: doc/classes/Plane.xml:116
+msgid ""
+"Returns the orthogonal projection of [code]point[/code] into a point in the "
+"plane."
+msgstr ""
+
+#: doc/classes/Plane.xml:122
+msgid ""
+"The distance from the origin to the plane, in the direction of [member "
+"normal]. This value is typically non-negative.\n"
+"In the scalar equation of the plane [code]ax + by + cz = d[/code], this is "
+"[code]d[/code], while the [code](a, b, c)[/code] coordinates are represented "
+"by the [member normal] property."
+msgstr ""
+
+#: doc/classes/Plane.xml:126
+msgid ""
+"The normal of the plane, which must be normalized.\n"
+"In the scalar equation of the plane [code]ax + by + cz = d[/code], this is "
+"the vector [code](a, b, c)[/code], where [code]d[/code] is the [member d] "
+"property."
+msgstr ""
+
+#: doc/classes/Plane.xml:130
+msgid "The X component of the plane's [member normal] vector."
+msgstr ""
+
+#: doc/classes/Plane.xml:133
+msgid "The Y component of the plane's [member normal] vector."
+msgstr ""
+
+#: doc/classes/Plane.xml:136
+msgid "The Z component of the plane's [member normal] vector."
+msgstr ""
+
+#: doc/classes/Plane.xml:141
+msgid "A plane that extends in the Y and Z axes (normal vector points +X)."
+msgstr ""
+
+#: doc/classes/Plane.xml:144
+msgid "A plane that extends in the X and Z axes (normal vector points +Y)."
+msgstr ""
+
+#: doc/classes/Plane.xml:147
+msgid "A plane that extends in the X and Y axes (normal vector points +Z)."
+msgstr ""
+
+#: doc/classes/PlaneMesh.xml:4
+msgid "Class representing a planar [PrimitiveMesh]."
+msgstr ""
+
+#: doc/classes/PlaneMesh.xml:7
+msgid ""
+"Class representing a planar [PrimitiveMesh]. This flat mesh does not have a "
+"thickness. By default, this mesh is aligned on the X and Z axes; this "
+"default rotation isn't suited for use with billboarded materials. For "
+"billboarded materials, use [QuadMesh] instead.\n"
+"[b]Note:[/b] When using a large textured [PlaneMesh] (e.g. as a floor), you "
+"may stumble upon UV jittering issues depending on the camera angle. To solve "
+"this, increase [member subdivide_depth] and [member subdivide_width] until "
+"you no longer notice UV jittering."
+msgstr ""
+
+#: doc/classes/PlaneMesh.xml:16
+msgid "Offset from the origin of the generated plane. Useful for particles."
+msgstr ""
+
+#: doc/classes/PlaneMesh.xml:19
+msgid "Size of the generated plane."
+msgstr ""
+
+#: doc/classes/PlaneMesh.xml:22
+msgid "Number of subdivision along the Z axis."
+msgstr ""
+
+#: doc/classes/PlaneMesh.xml:25
+msgid "Number of subdivision along the X axis."
+msgstr ""
+
+#: doc/classes/PlaneShape.xml:4
+msgid "Infinite plane shape for 3D collisions."
+msgstr ""
+
+#: doc/classes/PlaneShape.xml:7
+msgid ""
+"An infinite plane shape for 3D collisions. Note that the [Plane]'s normal "
+"matters; anything \"below\" the plane will collide with it. If the "
+"[PlaneShape] is used in a [PhysicsBody], it will cause colliding objects "
+"placed \"below\" it to teleport \"above\" the plane."
+msgstr ""
+
+#: doc/classes/PlaneShape.xml:15
+msgid "The [Plane] used by the [PlaneShape] for collision."
+msgstr ""
+
+#: doc/classes/PointMesh.xml:4
+msgid "Mesh with a single Point primitive."
+msgstr ""
+
+#: doc/classes/PointMesh.xml:7
+msgid ""
+"The PointMesh is made from a single point. Instead of relying on triangles, "
+"points are rendered as a single rectangle on the screen with a constant "
+"size. They are intended to be used with Particle systems, but can be used as "
+"a cheap way to render constant size billboarded sprites (for example in a "
+"point cloud).\n"
+"PointMeshes, must be used with a material that has a point size. Point size "
+"can be accessed in a shader with [code]POINT_SIZE[/code], or in a "
+"[SpatialMaterial] by setting [member SpatialMaterial.flags_use_point_size] "
+"and the variable [member SpatialMaterial.params_point_size].\n"
+"When using PointMeshes, properties that normally alter vertices will be "
+"ignored, including billboard mode, grow, and cull face."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:4
+msgid "A 2D polygon."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:7
+msgid ""
+"A Polygon2D is defined by a set of points. Each point is connected to the "
+"next, with the final point being connected to the first, resulting in a "
+"closed polygon. Polygon2Ds can be filled with color (solid or gradient) or "
+"filled with a given texture.\n"
+"[b]Note:[/b] By default, Godot can only draw up to 4,096 polygon points at a "
+"time. To increase this limit, open the Project Settings and increase [member "
+"ProjectSettings.rendering/limits/buffers/canvas_polygon_buffer_size_kb] and "
+"[member ProjectSettings.rendering/limits/buffers/"
+"canvas_polygon_index_buffer_size_kb]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:18
+msgid ""
+"Adds a bone with the specified [code]path[/code] and [code]weights[/code]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:24
+msgid "Removes all bones from this [Polygon2D]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:31
+msgid "Removes the specified bone from this [Polygon2D]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:37
+msgid "Returns the number of bones in this [Polygon2D]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:44
+msgid "Returns the path to the node associated with the specified bone."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:51
+msgid "Returns the height values of the specified bone."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:59
+msgid "Sets the path to the node associated with the specified bone."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:67
+msgid "Sets the weight values for the specified bone."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:73
+msgid "If [code]true[/code], polygon edges will be anti-aliased."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:78
+msgid ""
+"The polygon's fill color. If [code]texture[/code] is defined, it will be "
+"multiplied by this color. It will also be the default color for vertices not "
+"set in [code]vertex_colors[/code]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:83
+msgid ""
+"Added padding applied to the bounding box when using [code]invert[/code]. "
+"Setting this value too small may result in a \"Bad Polygon\" error."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:86
+msgid ""
+"If [code]true[/code], polygon will be inverted, containing the area outside "
+"the defined points and extending to the [code]invert_border[/code]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:89
+msgid "The offset applied to each vertex."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:92
+msgid ""
+"The polygon's list of vertices. The final point will be connected to the "
+"first.\n"
+"[b]Note:[/b] This returns a copy of the [PoolVector2Array] rather than a "
+"reference."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:100
+msgid ""
+"The polygon's fill texture. Use [code]uv[/code] to set texture coordinates."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:103
+msgid ""
+"Amount to offset the polygon's [code]texture[/code]. If [code](0, 0)[/code] "
+"the texture's origin (its top-left corner) will be placed at the polygon's "
+"[code]position[/code]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:106
+msgid "The texture's rotation in radians."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:109
+msgid "The texture's rotation in degrees."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:112
+msgid ""
+"Amount to multiply the [code]uv[/code] coordinates when using a "
+"[code]texture[/code]. Larger values make the texture smaller, and vice versa."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:115
+msgid ""
+"Texture coordinates for each vertex of the polygon. There should be one "
+"[code]uv[/code] per polygon vertex. If there are fewer, undefined vertices "
+"will use [code](0, 0)[/code]."
+msgstr ""
+
+#: doc/classes/Polygon2D.xml:118
+msgid ""
+"Color for each vertex. Colors are interpolated between vertices, resulting "
+"in smooth gradients. There should be one per polygon vertex. If there are "
+"fewer, undefined vertices will use [code]color[/code]."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:4
+msgid "A pooled [Array] of bytes."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:7
+msgid ""
+"An [Array] specifically designed to hold bytes. Optimized for memory usage, "
+"does not fragment the memory.\n"
+"[b]Note:[/b] This type is passed by value and not by reference."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:17
+msgid ""
+"Constructs a new [PoolByteArray]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:29
+msgid "Appends a [PoolByteArray] at the end of this array."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:36
+msgid ""
+"Returns a new [PoolByteArray] with the data compressed. Set the compression "
+"mode using one of [enum File.CompressionMode]'s constants."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:44
+msgid ""
+"Returns a new [PoolByteArray] with the data decompressed. Set "
+"[code]buffer_size[/code] to the size of the uncompressed data. Set the "
+"compression mode using one of [enum File.CompressionMode]'s constants."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:52
+msgid ""
+"Returns a new [PoolByteArray] with the data decompressed. Set the "
+"compression mode using one of [enum File.CompressionMode]'s constants. "
+"[b]This method only accepts gzip and deflate compression modes.[/b]\n"
+"This method is potentially slower than [code]decompress[/code], as it may "
+"have to re-allocate it's output buffer multiple times while decompressing, "
+"where as [code]decompress[/code] knows it's output buffer size from the "
+"begining.\n"
+"\n"
+"GZIP has a maximal compression ratio of 1032:1, meaning it's very possible "
+"for a small compressed payload to decompress to a potentially very large "
+"output. To guard against this, you may provide a maximum size this function "
+"is allowed to allocate in bytes via [code]max_output_size[/code]. Passing -1 "
+"will allow for unbounded output. If any positive value is passed, and the "
+"decompression exceeds that ammount in bytes, then an error will be returned."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:67
+msgid ""
+"Returns a copy of the array's contents as [String]. Fast alternative to "
+"[method get_string_from_utf8] if the content is ASCII-only. Unlike the UTF-8 "
+"function this function maps every byte to a character in the array. "
+"Multibyte sequences will not be interpreted correctly. For parsing user "
+"input always use [method get_string_from_utf8]."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:73
+msgid ""
+"Returns a copy of the array's contents as [String]. Slower than [method "
+"get_string_from_ascii] but supports UTF-8 encoded data. Use this function if "
+"you are unsure about the source of the data. For user input this function "
+"should always be preferred."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:79
+msgid ""
+"Returns a hexadecimal representation of this array as a [String].\n"
+"[codeblock]\n"
+"var array = PoolByteArray([11, 46, 255])\n"
+"print(array.hex_encode()) # Prints: 0b2eff\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:91 doc/classes/PoolColorArray.xml:43
+#: doc/classes/PoolRealArray.xml:44 doc/classes/PoolStringArray.xml:44
+#: doc/classes/PoolVector2Array.xml:44 doc/classes/PoolVector3Array.xml:43
+msgid ""
+"Inserts a new element at a given position in the array. The position must be "
+"valid, or at the end of the array ([code]idx == size()[/code])."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:102 doc/classes/PoolRealArray.xml:55
+msgid "Appends an element at the end of the array."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:108 doc/classes/PoolColorArray.xml:60
+#: doc/classes/PoolIntArray.xml:61 doc/classes/PoolRealArray.xml:61
+#: doc/classes/PoolStringArray.xml:68 doc/classes/PoolVector2Array.xml:61
+#: doc/classes/PoolVector3Array.xml:60
+msgid "Removes an element from the array by index."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:114 doc/classes/PoolColorArray.xml:66
+#: doc/classes/PoolIntArray.xml:67 doc/classes/PoolRealArray.xml:67
+#: doc/classes/PoolStringArray.xml:74 doc/classes/PoolVector2Array.xml:67
+#: doc/classes/PoolVector3Array.xml:66
+msgid ""
+"Sets the size of the array. If the array is grown, reserves elements at the "
+"end of the array. If the array is shrunk, truncates the array to the new "
+"size."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:121
+msgid "Changes the byte at the given index."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:127 doc/classes/PoolColorArray.xml:79
+#: doc/classes/PoolRealArray.xml:80 doc/classes/PoolStringArray.xml:87
+#: doc/classes/PoolVector2Array.xml:80 doc/classes/PoolVector3Array.xml:79
+msgid "Returns the size of the array."
+msgstr ""
+
+#: doc/classes/PoolByteArray.xml:135
+msgid ""
+"Returns the slice of the [PoolByteArray] between indices (inclusive) as a "
+"new [PoolByteArray]. Any negative index is considered to be from the end of "
+"the array."
+msgstr ""
+
+#: doc/classes/PoolColorArray.xml:4
+msgid "A pooled [Array] of [Color]."
+msgstr ""
+
+#: doc/classes/PoolColorArray.xml:7
+msgid ""
+"An [Array] specifically designed to hold [Color]. Optimized for memory "
+"usage, does not fragment the memory.\n"
+"[b]Note:[/b] This type is passed by value and not by reference."
+msgstr ""
+
+#: doc/classes/PoolColorArray.xml:17
+msgid ""
+"Constructs a new [PoolColorArray]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr ""
+
+#: doc/classes/PoolColorArray.xml:29
+msgid "Appends a [PoolColorArray] at the end of this array."
+msgstr ""
+
+#: doc/classes/PoolColorArray.xml:54 doc/classes/PoolIntArray.xml:55
+msgid "Appends a value to the array."
+msgstr ""
+
+#: doc/classes/PoolColorArray.xml:73
+msgid "Changes the [Color] at the given index."
+msgstr ""
+
+#: doc/classes/PoolIntArray.xml:4
+msgid "A pooled [Array] of integers ([int])."
+msgstr ""
+
+#: doc/classes/PoolIntArray.xml:7
+msgid ""
+"An [Array] specifically designed to hold integer values ([int]). Optimized "
+"for memory usage, does not fragment the memory.\n"
+"[b]Note:[/b] This type is passed by value and not by reference.\n"
+"[b]Note:[/b] This type is limited to signed 32-bit integers, which means it "
+"can only take values in the interval [code][-2^31, 2^31 - 1][/code], i.e. "
+"[code][-2147483648, 2147483647][/code]. Exceeding those bounds will wrap "
+"around. In comparison, [int] uses signed 64-bit integers which can hold much "
+"larger values."
+msgstr ""
+
+#: doc/classes/PoolIntArray.xml:18
+msgid ""
+"Constructs a new [PoolIntArray]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr ""
+
+#: doc/classes/PoolIntArray.xml:30
+msgid "Appends a [PoolIntArray] at the end of this array."
+msgstr ""
+
+#: doc/classes/PoolIntArray.xml:44
+msgid ""
+"Inserts a new int at a given position in the array. The position must be "
+"valid, or at the end of the array ([code]idx == size()[/code])."
+msgstr ""
+
+#: doc/classes/PoolIntArray.xml:74
+msgid "Changes the int at the given index."
+msgstr ""
+
+#: doc/classes/PoolIntArray.xml:80
+msgid "Returns the array size."
+msgstr ""
+
+#: doc/classes/PoolRealArray.xml:4
+msgid "A pooled [Array] of reals ([float])."
+msgstr ""
+
+#: doc/classes/PoolRealArray.xml:7
+msgid ""
+"An [Array] specifically designed to hold floating-point values. Optimized "
+"for memory usage, does not fragment the memory.\n"
+"[b]Note:[/b] This type is passed by value and not by reference.\n"
+"[b]Note:[/b] Unlike primitive [float]s which are 64-bit, numbers stored in "
+"[PoolRealArray] are 32-bit floats. This means values stored in "
+"[PoolRealArray] have lower precision compared to primitive [float]s. If you "
+"need to store 64-bit floats in an array, use a generic [Array] with [float] "
+"elements as these will still be 64-bit. However, using a generic [Array] to "
+"store [float]s will use roughly 6 times more memory compared to a "
+"[PoolRealArray]."
+msgstr ""
+
+#: doc/classes/PoolRealArray.xml:18
+msgid ""
+"Constructs a new [PoolRealArray]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr ""
+
+#: doc/classes/PoolRealArray.xml:30
+msgid "Appends a [PoolRealArray] at the end of this array."
+msgstr ""
+
+#: doc/classes/PoolRealArray.xml:74
+msgid "Changes the float at the given index."
+msgstr ""
+
+#: doc/classes/PoolStringArray.xml:4
+msgid "A pooled [Array] of [String]."
+msgstr ""
+
+#: doc/classes/PoolStringArray.xml:7
+msgid ""
+"An [Array] specifically designed to hold [String]s. Optimized for memory "
+"usage, does not fragment the memory.\n"
+"[b]Note:[/b] This type is passed by value and not by reference."
+msgstr ""
+
+#: doc/classes/PoolStringArray.xml:18
+msgid ""
+"Constructs a new [PoolStringArray]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr ""
+
+#: doc/classes/PoolStringArray.xml:30
+msgid "Appends a [PoolStringArray] at the end of this array."
+msgstr ""
+
+#: doc/classes/PoolStringArray.xml:56
+msgid ""
+"Returns a [String] with each element of the array joined with the given "
+"[code]delimiter[/code]."
+msgstr ""
+
+#: doc/classes/PoolStringArray.xml:62
+msgid "Appends a string element at end of the array."
+msgstr ""
+
+#: doc/classes/PoolStringArray.xml:81
+msgid "Changes the [String] at the given index."
+msgstr ""
+
+#: doc/classes/PoolVector2Array.xml:4
+msgid "A pooled [Array] of [Vector2]."
+msgstr ""
+
+#: doc/classes/PoolVector2Array.xml:7
+msgid ""
+"An [Array] specifically designed to hold [Vector2]. Optimized for memory "
+"usage, does not fragment the memory.\n"
+"[b]Note:[/b] This type is passed by value and not by reference."
+msgstr ""
+
+#: doc/classes/PoolVector2Array.xml:11 doc/classes/TileMap.xml:15
+#: doc/classes/TileSet.xml:15
+msgid "https://godotengine.org/asset-library/asset/519"
+msgstr ""
+
+#: doc/classes/PoolVector2Array.xml:18
+msgid ""
+"Constructs a new [PoolVector2Array]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr ""
+
+#: doc/classes/PoolVector2Array.xml:30
+msgid "Appends a [PoolVector2Array] at the end of this array."
+msgstr ""
+
+#: doc/classes/PoolVector2Array.xml:55
+msgid "Inserts a [Vector2] at the end."
+msgstr ""
+
+#: doc/classes/PoolVector2Array.xml:74
+msgid "Changes the [Vector2] at the given index."
+msgstr ""
+
+#: doc/classes/PoolVector3Array.xml:4
+msgid "A pooled [Array] of [Vector3]."
+msgstr ""
+
+#: doc/classes/PoolVector3Array.xml:7
+msgid ""
+"An [Array] specifically designed to hold [Vector3]. Optimized for memory "
+"usage, does not fragment the memory.\n"
+"[b]Note:[/b] This type is passed by value and not by reference."
+msgstr ""
+
+#: doc/classes/PoolVector3Array.xml:17
+msgid ""
+"Constructs a new [PoolVector3Array]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr ""
+
+#: doc/classes/PoolVector3Array.xml:29
+msgid "Appends a [PoolVector3Array] at the end of this array."
+msgstr ""
+
+#: doc/classes/PoolVector3Array.xml:54
+msgid "Inserts a [Vector3] at the end."
+msgstr ""
+
+#: doc/classes/PoolVector3Array.xml:73
+msgid "Changes the [Vector3] at the given index."
+msgstr ""
+
+#: doc/classes/Popup.xml:4
+msgid "Base container control for popups and dialogs."
+msgstr ""
+
+#: doc/classes/Popup.xml:7
+msgid ""
+"Popup is a base [Control] used to show dialogs and popups. It's a subwindow "
+"and modal by default (see [Control]) and has helpers for custom popup "
+"behavior. All popup methods ensure correct placement within the viewport."
+msgstr ""
+
+#: doc/classes/Popup.xml:16
+msgid "Popup (show the control in modal form)."
+msgstr ""
+
+#: doc/classes/Popup.xml:23
+msgid ""
+"Popup (show the control in modal form) in the center of the screen relative "
+"to its current canvas transform, at the current size, or at a size "
+"determined by [code]size[/code]."
+msgstr ""
+
+#: doc/classes/Popup.xml:31
+msgid ""
+"Popup (show the control in modal form) in the center of the screen relative "
+"to the current canvas transform, clamping the size to [code]size[/code], "
+"then ensuring the popup is no larger than the viewport size multiplied by "
+"[code]fallback_ratio[/code]."
+msgstr ""
+
+#: doc/classes/Popup.xml:38
+msgid ""
+"Popup (show the control in modal form) in the center of the screen relative "
+"to the current canvas transform, ensuring the size is never smaller than "
+"[code]minsize[/code]."
+msgstr ""
+
+#: doc/classes/Popup.xml:45
+msgid ""
+"Popup (show the control in modal form) in the center of the screen relative "
+"to the current canvas transform, scaled at a ratio of size of the screen."
+msgstr ""
+
+#: doc/classes/Popup.xml:51
+msgid "Shrink popup to keep to the minimum size of content."
+msgstr ""
+
+#: doc/classes/Popup.xml:57
+msgid ""
+"If [code]true[/code], the popup will not be hidden when a click event occurs "
+"outside of it, or when it receives the [code]ui_cancel[/code] action event.\n"
+"[b]Note:[/b] Enabling this property doesn't affect the Close or Cancel "
+"buttons' behavior in dialogs that inherit from this class. As a workaround, "
+"you can use [method WindowDialog.get_close_button] or [method "
+"ConfirmationDialog.get_cancel] and hide the buttons in question by setting "
+"their [member CanvasItem.visible] property to [code]false[/code]."
+msgstr ""
+
+#: doc/classes/Popup.xml:65
+msgid ""
+"Emitted when a popup is about to be shown. This is often used in [PopupMenu] "
+"to clear the list of options then create a new one according to the current "
+"context."
+msgstr ""
+
+#: doc/classes/Popup.xml:70
+msgid "Emitted when a popup is hidden."
+msgstr ""
+
+#: doc/classes/Popup.xml:76
+msgid "Notification sent right after the popup is shown."
+msgstr ""
+
+#: doc/classes/Popup.xml:79
+msgid "Notification sent right after the popup is hidden."
+msgstr ""
+
+#: doc/classes/PopupDialog.xml:4
+msgid "Base class for popup dialogs."
+msgstr ""
+
+#: doc/classes/PopupDialog.xml:7
+msgid ""
+"PopupDialog is a base class for popup dialogs, along with [WindowDialog]."
+msgstr ""
+
+#: doc/classes/PopupDialog.xml:17
+msgid "Sets a custom [StyleBox] for the panel of the [PopupDialog]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:4
+msgid "PopupMenu displays a list of options."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:7
+msgid ""
+"[PopupMenu] is a [Control] that displays a list of options. They are popular "
+"in toolbars or context menus."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:18
+msgid ""
+"Adds a new checkable item with text [code]label[/code].\n"
+"An [code]id[/code] can optionally be provided, as well as an accelerator "
+"([code]accel[/code]). If no [code]id[/code] is provided, one will be created "
+"from the index. If no [code]accel[/code] is provided then the default "
+"[code]0[/code] will be assigned to it. See [method get_item_accelerator] for "
+"more info on accelerators.\n"
+"[b]Note:[/b] Checkable items just display a checkmark, but don't have any "
+"built-in checking behavior and must be checked/unchecked manually. See "
+"[method set_item_checked] for more info on how to control it."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:29
+msgid ""
+"Adds a new checkable item and assigns the specified [ShortCut] to it. Sets "
+"the label of the checkbox to the [ShortCut]'s name.\n"
+"An [code]id[/code] can optionally be provided. If no [code]id[/code] is "
+"provided, one will be created from the index.\n"
+"[b]Note:[/b] Checkable items just display a checkmark, but don't have any "
+"built-in checking behavior and must be checked/unchecked manually. See "
+"[method set_item_checked] for more info on how to control it."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:41
+msgid ""
+"Adds a new checkable item with text [code]label[/code] and icon "
+"[code]texture[/code].\n"
+"An [code]id[/code] can optionally be provided, as well as an accelerator "
+"([code]accel[/code]). If no [code]id[/code] is provided, one will be created "
+"from the index. If no [code]accel[/code] is provided then the default "
+"[code]0[/code] will be assigned to it. See [method get_item_accelerator] for "
+"more info on accelerators.\n"
+"[b]Note:[/b] Checkable items just display a checkmark, but don't have any "
+"built-in checking behavior and must be checked/unchecked manually. See "
+"[method set_item_checked] for more info on how to control it."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:53
+msgid ""
+"Adds a new checkable item and assigns the specified [ShortCut] and icon "
+"[code]texture[/code] to it. Sets the label of the checkbox to the "
+"[ShortCut]'s name.\n"
+"An [code]id[/code] can optionally be provided. If no [code]id[/code] is "
+"provided, one will be created from the index.\n"
+"[b]Note:[/b] Checkable items just display a checkmark, but don't have any "
+"built-in checking behavior and must be checked/unchecked manually. See "
+"[method set_item_checked] for more info on how to control it."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:65
+msgid ""
+"Adds a new item with text [code]label[/code] and icon [code]texture[/code].\n"
+"An [code]id[/code] can optionally be provided, as well as an accelerator "
+"([code]accel[/code]). If no [code]id[/code] is provided, one will be created "
+"from the index. If no [code]accel[/code] is provided then the default "
+"[code]0[/code] will be assigned to it. See [method get_item_accelerator] for "
+"more info on accelerators."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:76
+msgid "Same as [method add_icon_check_item], but uses a radio check button."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:86
+msgid ""
+"Same as [method add_icon_check_shortcut], but uses a radio check button."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:96
+msgid ""
+"Adds a new item and assigns the specified [ShortCut] and icon [code]texture[/"
+"code] to it. Sets the label of the checkbox to the [ShortCut]'s name.\n"
+"An [code]id[/code] can optionally be provided. If no [code]id[/code] is "
+"provided, one will be created from the index."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:106
+msgid ""
+"Adds a new item with text [code]label[/code].\n"
+"An [code]id[/code] can optionally be provided, as well as an accelerator "
+"([code]accel[/code]). If no [code]id[/code] is provided, one will be created "
+"from the index. If no [code]accel[/code] is provided then the default "
+"[code]0[/code] will be assigned to it. See [method get_item_accelerator] for "
+"more info on accelerators."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:118
+msgid ""
+"Adds a new multistate item with text [code]label[/code].\n"
+"Contrarily to normal binary items, multistate items can have more than two "
+"states, as defined by [code]max_states[/code]. Each press or activate of the "
+"item will increase the state by one. The default value is defined by "
+"[code]default_state[/code].\n"
+"An [code]id[/code] can optionally be provided, as well as an accelerator "
+"([code]accel[/code]). If no [code]id[/code] is provided, one will be created "
+"from the index. If no [code]accel[/code] is provided then the default "
+"[code]0[/code] will be assigned to it. See [method get_item_accelerator] for "
+"more info on accelerators."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:129
+msgid ""
+"Adds a new radio check button with text [code]label[/code].\n"
+"An [code]id[/code] can optionally be provided, as well as an accelerator "
+"([code]accel[/code]). If no [code]id[/code] is provided, one will be created "
+"from the index. If no [code]accel[/code] is provided then the default "
+"[code]0[/code] will be assigned to it. See [method get_item_accelerator] for "
+"more info on accelerators.\n"
+"[b]Note:[/b] Checkable items just display a checkmark, but don't have any "
+"built-in checking behavior and must be checked/unchecked manually. See "
+"[method set_item_checked] for more info on how to control it."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:140
+msgid ""
+"Adds a new radio check button and assigns a [ShortCut] to it. Sets the label "
+"of the checkbox to the [ShortCut]'s name.\n"
+"An [code]id[/code] can optionally be provided. If no [code]id[/code] is "
+"provided, one will be created from the index.\n"
+"[b]Note:[/b] Checkable items just display a checkmark, but don't have any "
+"built-in checking behavior and must be checked/unchecked manually. See "
+"[method set_item_checked] for more info on how to control it."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:150
+msgid ""
+"Adds a separator between items. Separators also occupy an index, which you "
+"can set by using the [code]id[/code] parameter.\n"
+"A [code]label[/code] can optionally be provided, which will appear at the "
+"center of the separator."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:160
+msgid ""
+"Adds a [ShortCut].\n"
+"An [code]id[/code] can optionally be provided. If no [code]id[/code] is "
+"provided, one will be created from the index."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:170
+msgid ""
+"Adds an item that will act as a submenu of the parent [PopupMenu] node when "
+"clicked. The [code]submenu[/code] argument is the name of the child "
+"[PopupMenu] node that will be shown when the item is clicked.\n"
+"An [code]id[/code] can optionally be provided. If no [code]id[/code] is "
+"provided, one will be created from the index."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:177
+msgid "Removes all items from the [PopupMenu]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:183
+msgid ""
+"Returns the index of the currently focused item. Returns [code]-1[/code] if "
+"no item is focused."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:190
+msgid ""
+"Returns the accelerator of the item at index [code]idx[/code]. Accelerators "
+"are special combinations of keys that activate the item, no matter which "
+"control is focused."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:196
+msgid "Returns the number of items in the [PopupMenu]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:210
+msgid ""
+"Returns the id of the item at index [code]idx[/code]. [code]id[/code] can be "
+"manually assigned, while index can not."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:217
+msgid ""
+"Returns the index of the item containing the specified [code]id[/code]. "
+"Index is automatically assigned to each item by the engine. Index can not be "
+"set manually."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:224
+msgid ""
+"Returns the metadata of the specified item, which might be of any type. You "
+"can set it with [method set_item_metadata], which provides a simple way of "
+"assigning context data to items."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:231
+msgid ""
+"Returns the [ShortCut] associated with the specified [code]idx[/code] item."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:238
+msgid ""
+"Returns the submenu name of the item at index [code]idx[/code]. See [method "
+"add_submenu_item] for more info on how to add a submenu."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:252
+msgid ""
+"Returns the tooltip associated with the specified index index [code]idx[/"
+"code]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:258
+msgid ""
+"Returns [code]true[/code] if the popup will be hidden when the window loses "
+"focus or not."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:265
+msgid ""
+"Returns [code]true[/code] if the item at index [code]idx[/code] is checkable "
+"in some way, i.e. if it has a checkbox or radio button.\n"
+"[b]Note:[/b] Checkable items just display a checkmark or radio button, but "
+"don't have any built-in checking behavior and must be checked/unchecked "
+"manually."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:273
+msgid ""
+"Returns [code]true[/code] if the item at index [code]idx[/code] is checked."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:280
+msgid ""
+"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled. "
+"When it is disabled it can't be selected, or its action invoked.\n"
+"See [method set_item_disabled] for more info on how to disable an item."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:288
+msgid ""
+"Returns [code]true[/code] if the item at index [code]idx[/code] has radio "
+"button-style checkability.\n"
+"[b]Note:[/b] This is purely cosmetic; you must add the logic for checking/"
+"unchecking items in radio groups."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:296
+msgid ""
+"Returns [code]true[/code] if the item is a separator. If it is, it will be "
+"displayed as a line. See [method add_separator] for more info on how to add "
+"a separator."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:303
+msgid "Returns [code]true[/code] if the specified item's shortcut is disabled."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:310
+msgid ""
+"Removes the item at index [code]idx[/code] from the menu.\n"
+"[b]Note:[/b] The indices of items after the removed item will be shifted by "
+"one."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:318
+msgid "Hides the [PopupMenu] when the window loses focus."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:326
+msgid ""
+"Sets the accelerator of the item at index [code]idx[/code]. Accelerators are "
+"special combinations of keys that activate the item, no matter which control "
+"is focused."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:334
+msgid ""
+"Sets whether the item at index [code]idx[/code] has a checkbox. If "
+"[code]false[/code], sets the type of the item to plain text.\n"
+"[b]Note:[/b] Checkable items just display a checkmark, but don't have any "
+"built-in checking behavior and must be checked/unchecked manually."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:343
+msgid ""
+"Sets the type of the item at the specified index [code]idx[/code] to radio "
+"button. If [code]false[/code], sets the type of the item to plain text."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:351
+msgid ""
+"Mark the item at index [code]idx[/code] as a separator, which means that it "
+"would be displayed as a line. If [code]false[/code], sets the type of the "
+"item to plain text."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:359
+msgid "Sets the checkstate status of the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:367
+msgid ""
+"Enables/disables the item at index [code]idx[/code]. When it is disabled, it "
+"can't be selected and its action can't be invoked."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:375
+msgid "Replaces the [Texture] icon of the specified [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:383
+msgid "Sets the [code]id[/code] of the item at index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:391
+msgid ""
+"Sets the metadata of an item, which may be of any type. You can later get it "
+"with [method get_item_metadata], which provides a simple way of assigning "
+"context data to items."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:399
+msgid ""
+"Sets the state of a multistate item. See [method add_multistate_item] for "
+"details."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:408
+msgid "Sets a [ShortCut] for the specified item [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:416
+msgid "Disables the [ShortCut] of the specified index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:424
+msgid ""
+"Sets the submenu of the item at index [code]idx[/code]. The submenu is the "
+"name of a child [PopupMenu] node that would be shown when the item is "
+"clicked."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:440
+msgid ""
+"Sets the [String] tooltip of the item at the specified index [code]idx[/"
+"code]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:447
+msgid ""
+"Toggles the check state of the item of the specified index [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:454
+msgid ""
+"Cycle to the next state of a multistate item. See [method "
+"add_multistate_item] for details."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:460
+msgid "If [code]true[/code], allows navigating [PopupMenu] with letter keys."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:464
+msgid ""
+"If [code]true[/code], hides the [PopupMenu] when a checkbox or radio button "
+"is selected."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:467
+msgid "If [code]true[/code], hides the [PopupMenu] when an item is selected."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:470
+msgid ""
+"If [code]true[/code], hides the [PopupMenu] when a state item is selected."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:473
+msgid ""
+"Sets the delay time in seconds for the submenu item to popup on mouse "
+"hovering. If the popup menu is added as a child of another (acting as a "
+"submenu), it will inherit the delay time of the parent menu item."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:480
+msgid ""
+"Emitted when user navigated to an item of some [code]id[/code] using "
+"[code]ui_up[/code] or [code]ui_down[/code] action."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:486
+msgid ""
+"Emitted when an item of some [code]id[/code] is pressed or its accelerator "
+"is activated."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:492
+msgid ""
+"Emitted when an item of some [code]index[/code] is pressed or its "
+"accelerator is activated."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:500
+msgid "[Texture] icon for the checked checkbox items."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:503
+msgid "[Font] used for the menu items."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:506
+msgid "The default text [Color] for menu items' names."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:509
+msgid ""
+"The text [Color] used for shortcuts and accelerators that show next to the "
+"menu item name when defined. See [method get_item_accelerator] for more info "
+"on accelerators."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:512
+msgid "[Color] used for disabled menu items' text."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:515
+msgid "[Color] used for the hovered text."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:518
+msgid "[Color] used for labeled separators' text. See [method add_separator]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:521
+msgid "[StyleBox] displayed when the [PopupMenu] item is hovered."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:524
+msgid ""
+"The horizontal space between the item's name and the shortcut text/submenu "
+"arrow."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:527
+msgid ""
+"[StyleBox] for the left side of labeled separator. See [method "
+"add_separator]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:530
+msgid ""
+"[StyleBox] for the right side of labeled separator. See [method "
+"add_separator]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:533
+msgid "Default [StyleBox] of the [PopupMenu] items."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:536
+msgid "[StyleBox] used when the [PopupMenu] item is disabled."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:539
+msgid "[Texture] icon for the checked radio button items."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:542
+msgid "[Texture] icon for the unchecked radio button items."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:545
+msgid "[StyleBox] used for the separators. See [method add_separator]."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:548
+msgid "[Texture] icon for the submenu arrow."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:551
+msgid "[Texture] icon for the unchecked checkbox items."
+msgstr ""
+
+#: doc/classes/PopupMenu.xml:554
+msgid "The vertical space between each menu item."
+msgstr ""
+
+#: doc/classes/PopupPanel.xml:4
+msgid "Class for displaying popups with a panel background."
+msgstr ""
+
+#: doc/classes/PopupPanel.xml:7
+msgid ""
+"Class for displaying popups with a panel background. In some cases it might "
+"be simpler to use than [Popup], since it provides a configurable background. "
+"If you are making windows, better check [WindowDialog]."
+msgstr ""
+
+#: doc/classes/PopupPanel.xml:17
+msgid "The background panel style of this [PopupPanel]."
+msgstr ""
+
+#: doc/classes/Portal.xml:4
+msgid "Portal nodes are used to enable visibility between [Room]s."
+msgstr ""
+
+#: doc/classes/Portal.xml:7
+msgid ""
+"[Portal]s are a special type of [MeshInstance] that allow the portal culling "
+"system to 'see' from one room to the next. They often correspond to doors "
+"and windows in level geometry. By only allowing [Camera]s to see through "
+"portals, this allows the system to cull out all the objects in rooms that "
+"cannot be seen through portals. This is a form of [b]occlusion culling[/b], "
+"and can greatly increase performance.\n"
+"There are some limitations to the form of portals:\n"
+"They must be single sided convex polygons, and usually you would orientate "
+"their front faces [b]outward[/b] from the [Room] they are placed in. The "
+"vertices should be positioned on a single plane (although their positioning "
+"does not have to be perfect).\n"
+"There is no need to place an opposite portal in an adjacent room, links are "
+"made two-way automatically."
+msgstr ""
+
+#: doc/classes/Portal.xml:20 doc/classes/Room.xml:21
+msgid "Sets individual points. Primarily for use by the editor."
+msgstr ""
+
+#: doc/classes/Portal.xml:26
+msgid ""
+"This is a shortcut for setting the linked [Room] in the name of the [Portal] "
+"(the name is used during conversion)."
+msgstr ""
+
+#: doc/classes/Portal.xml:29
+msgid ""
+"The points defining the shape of the [Portal] polygon (which should be "
+"convex).\n"
+"These are defined in 2D, with [code]0,0[/code] being the origin of the "
+"[Portal] node's [member Spatial.global_transform].\n"
+"[b]Note:[/b] These raw points are sanitized for winding order internally."
+msgstr ""
+
+#: doc/classes/Portal.xml:34
+msgid ""
+"Visibility through [Portal]s can be turned on and off at runtime - this is "
+"useful for having closable doors."
+msgstr ""
+
+#: doc/classes/Portal.xml:37
+msgid ""
+"Some objects are so big that they may be present in more than one [Room] "
+"('sprawling'). As we often don't want objects that *just* breach the edges "
+"to be assigned to neighbouring rooms, you can assign an extra margin through "
+"the [Portal] to allow objects to breach without sprawling."
+msgstr ""
+
+#: doc/classes/Portal.xml:40
+msgid ""
+"Portals default to being two way - see through in both directions, however "
+"you can make them one way, visible from the source room only."
+msgstr ""
+
+#: doc/classes/Portal.xml:43
+msgid ""
+"In most cases you will want to use the default [Portal] margin in your "
+"portals (this is set in the [RoomManager]).\n"
+"If you want to override this default, set this value to [code]false[/code], "
+"and the local [member portal_margin] will take effect."
+msgstr ""
+
+#: doc/classes/Position2D.xml:4
+msgid "Generic 2D position hint for editing."
+msgstr ""
+
+#: doc/classes/Position2D.xml:7
+msgid ""
+"Generic 2D position hint for editing. It's just like a plain [Node2D], but "
+"it displays as a cross in the 2D editor at all times. You can set cross' "
+"visual size by using the gizmo in the 2D editor while the node is selected."
+msgstr ""
+
+#: doc/classes/Position3D.xml:4
+msgid "Generic 3D position hint for editing."
+msgstr ""
+
+#: doc/classes/Position3D.xml:7
+msgid ""
+"Generic 3D position hint for editing. It's just like a plain [Spatial], but "
+"it displays as a cross in the 3D editor at all times."
+msgstr ""
+
+#: doc/classes/PrimitiveMesh.xml:4
+msgid ""
+"Base class for all primitive meshes. Handles applying a [Material] to a "
+"primitive mesh."
+msgstr ""
+
+#: doc/classes/PrimitiveMesh.xml:7
+msgid ""
+"Base class for all primitive meshes. Handles applying a [Material] to a "
+"primitive mesh. Examples include [CapsuleMesh], [CubeMesh], [CylinderMesh], "
+"[PlaneMesh], [PrismMesh], [QuadMesh], and [SphereMesh]."
+msgstr ""
+
+#: doc/classes/PrimitiveMesh.xml:15
+msgid ""
+"Returns mesh arrays used to constitute surface of [Mesh]. The result can be "
+"passed to [method ArrayMesh.add_surface_from_arrays] to create a new "
+"surface. For example:\n"
+"[codeblock]\n"
+"var c := CylinderMesh.new()\n"
+"var arr_mesh := ArrayMesh.new()\n"
+"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, c."
+"get_mesh_arrays())\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/PrimitiveMesh.xml:29
+msgid ""
+"If set, the order of the vertices in each triangle are reversed resulting in "
+"the backside of the mesh being drawn.\n"
+"This gives the same result as using [constant SpatialMaterial.CULL_BACK] in "
+"[member SpatialMaterial.params_cull_mode]."
+msgstr ""
+
+#: doc/classes/PrimitiveMesh.xml:33
+msgid "The current [Material] of the primitive mesh."
+msgstr ""
+
+#: doc/classes/PrismMesh.xml:4 doc/classes/PrismMesh.xml:7
+msgid "Class representing a prism-shaped [PrimitiveMesh]."
+msgstr ""
+
+#: doc/classes/PrismMesh.xml:15
+msgid ""
+"Displacement of the upper edge along the X axis. 0.0 positions edge straight "
+"above the bottom-left edge."
+msgstr ""
+
+#: doc/classes/PrismMesh.xml:18
+msgid "Size of the prism."
+msgstr ""
+
+#: doc/classes/PrismMesh.xml:21
+msgid "Number of added edge loops along the Z axis."
+msgstr ""
+
+#: doc/classes/PrismMesh.xml:24
+msgid "Number of added edge loops along the Y axis."
+msgstr ""
+
+#: doc/classes/PrismMesh.xml:27
+msgid "Number of added edge loops along the X axis."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:4
+msgid ""
+"Type of [Sky] that is generated procedurally based on user input parameters."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:7
+msgid ""
+"ProceduralSky provides a way to create an effective background quickly by "
+"defining procedural parameters for the sun, the sky and the ground. The sky "
+"and ground are very similar, they are defined by a color at the horizon, "
+"another color, and finally an easing curve to interpolate between these two "
+"colors. Similarly, the sun is described by a position in the sky, a color, "
+"and an easing curve. However, the sun also defines a minimum and maximum "
+"angle, these two values define at what distance the easing curve begins and "
+"ends from the sun, and thus end up defining the size of the sun in the sky.\n"
+"The ProceduralSky is updated on the CPU after the parameters change. It is "
+"stored in a texture and then displayed as a background in the scene. This "
+"makes it relatively unsuitable for real-time updates during gameplay. "
+"However, with a small enough texture size, it can still be updated "
+"relatively frequently, as it is updated on a background thread when multi-"
+"threading is available."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:16
+msgid "Color of the ground at the bottom."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:19
+msgid ""
+"How quickly the [member ground_horizon_color] fades into the [member "
+"ground_bottom_color]."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:22
+msgid "Amount of energy contribution from the ground."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:25
+msgid "Color of the ground at the horizon."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:28
+msgid ""
+"How quickly the [member sky_horizon_color] fades into the [member "
+"sky_top_color]."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:31
+msgid "Amount of energy contribution from the sky."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:34
+msgid "Color of the sky at the horizon."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:37
+msgid "Color of the sky at the top."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:40
+msgid "Distance from center of sun where it fades out completely."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:43
+msgid "Distance from sun where it goes from solid to starting to fade."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:46
+msgid "The sun's color."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:49
+msgid ""
+"How quickly the sun fades away between [member sun_angle_min] and [member "
+"sun_angle_max]."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:52
+msgid "Amount of energy contribution from the sun."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:55
+msgid "The sun's height using polar coordinates."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:58
+msgid "The direction of the sun using polar coordinates."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:61
+msgid ""
+"Size of [Texture] that the ProceduralSky will generate. The size is set "
+"using [enum TextureSize]."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:66
+msgid "Sky texture will be 256x128."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:69
+msgid "Sky texture will be 512x256."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:72
+msgid "Sky texture will be 1024x512. This is the default size."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:75
+msgid "Sky texture will be 2048x1024."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:78
+msgid "Sky texture will be 4096x2048."
+msgstr ""
+
+#: doc/classes/ProceduralSky.xml:81
+msgid "Represents the size of the [enum TextureSize] enum."
+msgstr ""
+
+#: doc/classes/ProgressBar.xml:4
+msgid "General-purpose progress bar."
+msgstr ""
+
+#: doc/classes/ProgressBar.xml:7
+msgid "General-purpose progress bar. Shows fill percentage from right to left."
+msgstr ""
+
+#: doc/classes/ProgressBar.xml:15
+msgid "If [code]true[/code], the fill percentage is displayed on the bar."
+msgstr ""
+
+#: doc/classes/ProgressBar.xml:24
+msgid "The style of the background."
+msgstr ""
+
+#: doc/classes/ProgressBar.xml:27
+msgid "The style of the progress (i.e. the part that fills the bar)."
+msgstr ""
+
+#: doc/classes/ProgressBar.xml:30
+msgid ""
+"Font used to draw the fill percentage if [member percent_visible] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/ProgressBar.xml:33
+msgid "The color of the text."
+msgstr ""
+
+#: doc/classes/ProgressBar.xml:36
+msgid "The color of the text's shadow."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:4
+msgid "Contains global variables accessible from everywhere."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:7
+msgid ""
+"Contains global variables accessible from everywhere. Use [method "
+"get_setting], [method set_setting] or [method has_setting] to access them. "
+"Variables stored in [code]project.godot[/code] are also loaded into "
+"ProjectSettings, making this object very useful for reading custom game "
+"configuration options.\n"
+"When naming a Project Settings property, use the full path to the setting "
+"including the category. For example, [code]\"application/config/name\"[/"
+"code] for the project name. Category and property names can be viewed in the "
+"Project Settings dialog.\n"
+"[b]Feature tags:[/b] Project settings can be overridden for specific "
+"platforms and configurations (debug, release, ...) using [url=https://docs."
+"godotengine.org/en/latest/tutorials/export/feature_tags.html]feature tags[/"
+"url].\n"
+"[b]Overriding:[/b] Any project setting can be overridden by creating a file "
+"named [code]override.cfg[/code] in the project's root directory. This can "
+"also be used in exported projects by placing this file in the same directory "
+"as the project binary. Overriding will still take the base project "
+"settings' [url=https://docs.godotengine.org/en/latest/tutorials/export/"
+"feature_tags.html]feature tags[/url] in account. Therefore, make sure to "
+"[i]also[/i] override the setting with the desired feature tags if you want "
+"them to override base project settings on all platforms and configurations."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:22
+msgid ""
+"Adds a custom property info to a property. The dictionary must contain:\n"
+"- [code]name[/code]: [String] (the property's name)\n"
+"- [code]type[/code]: [int] (see [enum Variant.Type])\n"
+"- optionally [code]hint[/code]: [int] (see [enum PropertyHint]) and "
+"[code]hint_string[/code]: [String]\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"ProjectSettings.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\": \"one,two,three\"\n"
+"}\n"
+"\n"
+"ProjectSettings.add_property_info(property_info)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:45
+msgid "Clears the whole configuration (not recommended, may break things)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:52
+msgid ""
+"Returns the order of a configuration value (influences when saved to the "
+"config file)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:59
+msgid ""
+"Returns the value of a setting.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"print(ProjectSettings.get_setting(\"application/config/name\"))\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:70
+msgid ""
+"Returns the absolute, native OS path corresponding to the localized "
+"[code]path[/code] (starting with [code]res://[/code] or [code]user://[/"
+"code]). The returned path will vary depending on the operating system and "
+"user preferences. See [url=https://docs.godotengine.org/en/3.4/tutorials/io/"
+"data_paths.html]File paths in Godot projects[/url] to see what those paths "
+"convert to. See also [method localize_path].\n"
+"[b]Note:[/b] [method globalize_path] with [code]res://[/code] will not work "
+"in an exported project. Instead, prepend the executable's base directory to "
+"the path when running from an exported project:\n"
+"[codeblock]\n"
+"var path = \"\"\n"
+"if OS.has_feature(\"editor\"):\n"
+" # Running from an editor binary.\n"
+" # `path` will contain the absolute path to `hello.txt` located in the "
+"project root.\n"
+" path = ProjectSettings.globalize_path(\"res://hello.txt\")\n"
+"else:\n"
+" # Running from an exported project.\n"
+" # `path` will contain the absolute path to `hello.txt` next to the "
+"executable.\n"
+" # This is *not* identical to using `ProjectSettings.globalize_path()` "
+"with a `res://` path,\n"
+" # but is close enough in spirit.\n"
+" path = OS.get_executable_path().get_base_dir().plus_file(\"hello.txt\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:91
+msgid "Returns [code]true[/code] if a configuration value is present."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:100
+msgid ""
+"Loads the contents of the .pck or .zip file specified by [code]pack[/code] "
+"into the resource filesystem ([code]res://[/code]). Returns [code]true[/"
+"code] on success.\n"
+"[b]Note:[/b] If a file from [code]pack[/code] shares the same path as a file "
+"already in the resource filesystem, any attempts to load that file will use "
+"the file from [code]pack[/code] unless [code]replace_files[/code] is set to "
+"[code]false[/code].\n"
+"[b]Note:[/b] The optional [code]offset[/code] parameter can be used to "
+"specify the offset in bytes to the start of the resource pack. This is only "
+"supported for .pck files."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:109
+msgid ""
+"Returns the localized path (starting with [code]res://[/code]) corresponding "
+"to the absolute, native OS [code]path[/code]. See also [method "
+"globalize_path]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:116
+msgid ""
+"Returns [code]true[/code] if the specified property exists and its initial "
+"value differs from the current value."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:123
+msgid ""
+"Returns the specified property's initial value. Returns [code]null[/code] if "
+"the property does not exist."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:129
+msgid ""
+"Saves the configuration to the [code]project.godot[/code] file.\n"
+"[b]Note:[/b] This method is intended to be used by editor plugins, as "
+"modified [ProjectSettings] can't be loaded back in the running app. If you "
+"want to change project settings in exported projects, use [method "
+"save_custom] to save [code]override.cfg[/code] file."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:137
+msgid ""
+"Saves the configuration to a custom file. The file extension must be [code]."
+"godot[/code] (to save in text-based [ConfigFile] format) or [code].binary[/"
+"code] (to save in binary format). You can also save [code]override.cfg[/"
+"code] file, which is also text, but can be used in exported projects unlike "
+"other formats."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:145
+msgid ""
+"Sets the specified property's initial value. This is the value the property "
+"reverts to."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:153
+msgid ""
+"Sets the order of a configuration value (influences when saved to the config "
+"file)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:161
+msgid ""
+"Sets the value of a setting.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"ProjectSettings.set_setting(\"application/config/name\", \"Example\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:171
+msgid ""
+"Comma-separated list of custom Android modules (which must have been built "
+"in the Android export templates) using their Java package path, e.g. "
+"[code]\"org/godotengine/godot/MyCustomSingleton,com/example/foo/"
+"FrenchFriesFactory\"[/code].\n"
+"[b]Note:[/b] Since Godot 3.2.2, the [code]org/godotengine/godot/"
+"GodotPaymentV3[/code] module was deprecated and replaced by the "
+"[code]GodotPayment[/code] plugin which should be enabled in the Android "
+"export preset under [code]Plugins[/code] section. The singleton to access in "
+"code was also renamed to [code]GodotPayment[/code]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:175
+msgid "Background color for the boot splash."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:178
+msgid ""
+"If [code]true[/code], scale the boot splash image to the full window length "
+"when engine starts. If [code]false[/code], the engine will leave it at the "
+"default pixel size."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:181
+msgid "Path to an image used as the boot splash."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:184
+msgid ""
+"If [code]true[/code], applies linear filtering when scaling the image "
+"(recommended for high resolution artwork). If [code]false[/code], uses "
+"nearest-neighbor interpolation (recommended for pixel art)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:187
+msgid ""
+"This user directory is used for storing persistent data ([code]user://[/"
+"code] filesystem). If left empty, [code]user://[/code] resolves to a project-"
+"specific folder in Godot's own configuration folder (see [method OS."
+"get_user_data_dir]). If a custom directory name is defined, this name will "
+"be used instead and appended to the system-specific user data directory "
+"(same parent folder as the Godot configuration folder documented in [method "
+"OS.get_user_data_dir]).\n"
+"The [member application/config/use_custom_user_dir] setting must be enabled "
+"for this to take effect."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:191
+msgid ""
+"The project's description, displayed as a tooltip in the Project Manager "
+"when hovering the project."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:194
+msgid ""
+"Icon used for the project, set when project loads. Exporters will also use "
+"this icon when possible."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:197
+msgid ""
+"Icon set in [code].icns[/code] format used on macOS to set the game's icon. "
+"This is done automatically on start by calling [method OS.set_native_icon]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:200
+msgid ""
+"The project's name. It is used both by the Project Manager and by exporters. "
+"The project name can be translated by translating its value in localization "
+"files. The window title will be set to match the project name automatically "
+"on startup.\n"
+"[b]Note:[/b] Changing this value will also change the user data folder's "
+"path if [member application/config/use_custom_user_dir] is [code]false[/"
+"code]. After renaming the project, you will no longer be able to access "
+"existing data in [code]user://[/code] unless you rename the old folder to "
+"match the new project name. See [url=https://docs.godotengine.org/en/3.4/"
+"tutorials/io/data_paths.html]Data paths[/url] in the documentation for more "
+"information."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:204
+msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
+"Specifies a file to override project settings. For example: [code]user://"
+"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
+"class description at the top for more information.\n"
+"[b]Note:[/b] Regardless of this setting's value, [code]res://override.cfg[/"
+"code] will still be read to override the project settings."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:213
+msgid ""
+"If [code]true[/code], the project will save user data to its own user "
+"directory (see [member application/config/custom_user_dir_name]). This "
+"setting is only effective on desktop platforms. A name must be set in the "
+"[member application/config/custom_user_dir_name] setting for this to take "
+"effect. If [code]false[/code], the project will save user data to [code](OS "
+"user data directory)/Godot/app_userdata/(project name)[/code]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:216
+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 ""
+
+#: doc/classes/ProjectSettings.xml:219
+msgid ""
+"Time samples for frame deltas are subject to random variation introduced by "
+"the platform, even when frames are displayed at regular intervals thanks to "
+"V-Sync. This can lead to jitter. Delta smoothing can often give a better "
+"result by filtering the input deltas to correct for minor fluctuations from "
+"the refresh rate.\n"
+"[b]Note:[/b] Delta smoothing is only attempted when [member display/window/"
+"vsync/use_vsync] is switched on, as it does not work well without V-Sync.\n"
+"It may take several seconds at a stable frame rate before the smoothing is "
+"initially activated. It will only be active on machines where performance is "
+"adequate to render frames at the refresh rate."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:224
+msgid ""
+"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
+"just after the drawing has taken place. This may lead to more consistent "
+"deltas and a reduction in frame stutters."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:227
+msgid ""
+"If [code]true[/code], disables printing to standard error. If [code]true[/"
+"code], this also hides error and warning messages printed by [method "
+"@GDScript.push_error] and [method @GDScript.push_warning]. See also [member "
+"application/run/disable_stdout].\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:231
+msgid ""
+"If [code]true[/code], disables printing to standard output. This is "
+"equivalent to starting the editor or project with the [code]--quiet[/code] "
+"command line argument. See also [member application/run/disable_stderr].\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:235
+msgid ""
+"If [code]true[/code], flushes the standard output stream every time a line "
+"is printed. This affects both terminal logging and file logging.\n"
+"When running a project, this setting must be enabled if you want logs to be "
+"collected by service managers such as systemd/journalctl. This setting is "
+"disabled by default on release builds, since flushing on every printed line "
+"will negatively affect performance if lots of lines are printed in a rapid "
+"succession. Also, if this setting is enabled, logged files will still be "
+"written successfully if the application crashes or is otherwise killed by "
+"the user (without being closed \"normally\").\n"
+"[b]Note:[/b] Regardless of this setting, the standard error stream "
+"([code]stderr[/code]) is always flushed when a line is printed to it.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:241
+msgid ""
+"Debug build override for [member application/run/flush_stdout_on_print], as "
+"performance is less important during debugging.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:245
+msgid ""
+"Forces a delay between frames in the main loop (in milliseconds). This may "
+"be useful if you plan to disable vertical synchronization."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:248
+msgid ""
+"If [code]true[/code], enables low-processor usage mode. This setting only "
+"works on desktop platforms. The screen is not redrawn if nothing changes "
+"visually. This is meant for writing applications and editors, but is pretty "
+"useless (and can hurt performance) in most games."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:251
+msgid ""
+"Amount of sleeping between frames when the low-processor usage mode is "
+"enabled (in microseconds). Higher values will result in lower CPU usage."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:254
+msgid "Path to the main scene file that will be loaded when the project runs."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
+msgid ""
+"Audio buses will disable automatically when sound goes below a given dB "
+"threshold for a given time. This saves CPU as effects assigned to that bus "
+"will no longer do any processing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:263
+msgid ""
+"Default [AudioBusLayout] resource file to use in the project, unless "
+"overridden by the scene."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:266
+msgid ""
+"Specifies the audio driver to use. This setting is platform-dependent as "
+"each platform supports different audio drivers. If left empty, the default "
+"audio driver will be used."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:269
+msgid ""
+"If [code]true[/code], microphone input will be allowed. This requires "
+"appropriate permissions to be set when exporting to Android or iOS."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:272
+msgid ""
+"The mixing rate used for audio (in Hz). In general, it's better to not touch "
+"this and leave it to the host operating system."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:275
+msgid ""
+"Safer override for [member audio/mix_rate] in the Web platform. Here "
+"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
+"like forcing the mix rate)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:278
+msgid ""
+"Output latency in milliseconds for audio. Lower values will result in lower "
+"audio latency at the cost of increased CPU usage. Low values may result in "
+"audible cracking on slower hardware."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:281
+msgid ""
+"Safer override for [member audio/output_latency] in the Web platform, to "
+"avoid audio issues especially on mobile devices."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:284
+msgid ""
+"Setting to hardcode audio delay when playing video. Best to leave this "
+"untouched unless you know what you are doing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:287
+msgid ""
+"The default compression level for gzip. Affects compressed scenes and "
+"resources. Higher levels result in smaller files at the cost of compression "
+"speed. Decompression speed is mostly unaffected by the compression level. "
+"[code]-1[/code] uses the default gzip compression level, which is identical "
+"to [code]6[/code] but could change in the future due to underlying zlib "
+"updates."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:290
+msgid ""
+"The default compression level for Zlib. Affects compressed scenes and "
+"resources. Higher levels result in smaller files at the cost of compression "
+"speed. Decompression speed is mostly unaffected by the compression level. "
+"[code]-1[/code] uses the default gzip compression level, which is identical "
+"to [code]6[/code] but could change in the future due to underlying zlib "
+"updates."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:293
+msgid ""
+"The default compression level for Zstandard. Affects compressed scenes and "
+"resources. Higher levels result in smaller files at the cost of compression "
+"speed. Decompression speed is mostly unaffected by the compression level."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:296
+msgid ""
+"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
+"distance matching[/url] in Zstandard."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:299
+msgid ""
+"Largest size limit (in power of 2) allowed when compressing using long-"
+"distance matching with Zstandard. Higher values can result in better "
+"compression, but will require more memory when compressing and decompressing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:302
+msgid ""
+"If [code]true[/code], displays getters and setters in autocompletion results "
+"in the script editor. This setting is meant to be used when porting old "
+"projects (Godot 2), as using member variables is the preferred style from "
+"Godot 3 onwards."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:305
+msgid ""
+"If [code]true[/code], enables warnings when a constant is used as a function."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:308
+msgid ""
+"If [code]true[/code], enables warnings when deprecated keywords such as "
+"[code]slave[/code] are used."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:311
+msgid ""
+"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
+"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
+"GDScript warnings."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:314
+msgid ""
+"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
+"not generate warnings."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:317
+msgid ""
+"If [code]true[/code], enables warnings when a function is declared with the "
+"same name as a constant."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:320
+msgid ""
+"If [code]true[/code], enables warnings when a function is declared with the "
+"same name as a variable. This will turn into an error in a future version "
+"when first-class functions become supported in GDScript."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:323
+msgid ""
+"If [code]true[/code], enables warnings when a function assigned to a "
+"variable may yield and return a function state instead of a value."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:326
+msgid ""
+"If [code]true[/code], enables warnings when using a function as if it was a "
+"property."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:329
+msgid ""
+"If [code]true[/code], enables warnings when a ternary operator may emit "
+"values with incompatible types."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:332
+msgid ""
+"If [code]true[/code], enables warnings when dividing an integer by another "
+"integer (the decimal part will be discarded)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:335
+msgid ""
+"If [code]true[/code], enables warnings when passing a floating-point value "
+"to a function that expects an integer (it will be converted and lose "
+"precision)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:338
+msgid ""
+"If [code]true[/code], enables warnings when using a property as if it was a "
+"function."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:341
+msgid ""
+"If [code]true[/code], enables warnings when calling a function without using "
+"its return value (by assigning it to a variable or using it as a function "
+"argument). Such return values are sometimes used to denote possible errors "
+"using the [enum Error] enum."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:344
+msgid ""
+"If [code]true[/code], enables warnings when defining a local or subclass "
+"member variable that would shadow a variable at an upper level (such as a "
+"member variable)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:347
+msgid ""
+"If [code]true[/code], enables warnings when calling an expression that has "
+"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
+"statement."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:350
+msgid ""
+"If [code]true[/code], enables warnings when calling a ternary expression "
+"that has no effect on the surrounding code, such as writing [code]42 if "
+"active else 0[/code] as a statement."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:353
+msgid ""
+"If [code]true[/code], all warnings will be reported as if they were errors."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:356
+msgid ""
+"If [code]true[/code], enables warnings when using a variable that wasn't "
+"previously assigned."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:359
+msgid ""
+"If [code]true[/code], enables warnings when assigning a variable using an "
+"assignment operator like [code]+=[/code] if the variable wasn't previously "
+"assigned."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:362
+msgid ""
+"If [code]true[/code], enables warnings when unreachable code is detected "
+"(such as after a [code]return[/code] statement that will always be executed)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:365
+msgid ""
+"If [code]true[/code], enables warnings when using an expression whose type "
+"may not be compatible with the function parameter expected."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:368
+msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:371
+msgid ""
+"If [code]true[/code], enables warnings when calling a method whose presence "
+"is not guaranteed at compile-time in the class."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:374
+msgid ""
+"If [code]true[/code], enables warnings when accessing a property whose "
+"presence is not guaranteed at compile-time in the class."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:377
+msgid ""
+"If [code]true[/code], enables warnings when a function parameter is unused."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:380
+msgid ""
+"If [code]true[/code], enables warnings when a member variable is unused."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:383
+msgid "If [code]true[/code], enables warnings when a signal is unused."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:386
+msgid "If [code]true[/code], enables warnings when a local variable is unused."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:389
+msgid ""
+"If [code]true[/code], enables warnings when a variable is declared with the "
+"same name as a function. This will turn into an error in a future version "
+"when first-class functions become supported in GDScript."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:392
+msgid ""
+"If [code]true[/code], enables warnings when assigning the result of a "
+"function that returns [code]void[/code] to a variable."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:395
+msgid "Message to be displayed before the backtrace when the engine crashes."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:398
+msgid ""
+"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.\n"
+"If [member display/window/vsync/use_vsync] is enabled, it takes precedence "
+"and the forced FPS number cannot exceed the monitor's refresh rate.\n"
+"This setting is therefore mostly relevant for lowering the maximum FPS below "
+"VSync, e.g. to perform non-real-time rendering of static frames, or test the "
+"project under lag conditions."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:403
+msgid "Maximum call stack allowed for debugging GDScript."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:406
+msgid "Maximum amount of functions per frame allowed when profiling."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:409
+msgid "Print frames per second to standard output every second."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:412
+msgid ""
+"Print more information to standard output when running. It displays "
+"information such as memory leaks, which scenes and resources are being "
+"loaded, etc."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:415
+msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:418
+msgid ""
+"Color of the contact points between collision shapes, visible when \"Visible "
+"Collision Shapes\" is enabled in the Debug menu."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:421
+msgid ""
+"Sets whether 2D physics will display collision outlines in game when "
+"\"Visible Collision Shapes\" is enabled in the Debug menu."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:424
+msgid ""
+"Maximum number of contact points between collision shapes to display when "
+"\"Visible Collision Shapes\" is enabled in the Debug menu."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:427
+msgid ""
+"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
+"enabled in the Debug menu."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:430
+msgid ""
+"Color of the disabled navigation geometry, visible when \"Visible Navigation"
+"\" is enabled in the Debug menu."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:433
+msgid ""
+"Color of the navigation geometry, visible when \"Visible Navigation\" is "
+"enabled in the Debug menu."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:436
+msgid "Custom image for the mouse cursor (limited to 256×256)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:439
+msgid "Hotspot for the custom mouse cursor image."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:442
+msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:445
+msgid ""
+"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
+"platform. This setting has no effect on desktop Linux, as DPI-awareness "
+"fallbacks are not supported there."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:448
+msgid ""
+"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
+"the screensaver does not take over. Works on desktop and mobile platforms."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:451
+msgid ""
+"The default screen orientation to use on mobile devices.\n"
+"[b]Note:[/b] When set to a portrait orientation, this project setting does "
+"not flip the project resolution's width and height automatically. Instead, "
+"you have to set [member display/window/size/width] and [member display/"
+"window/size/height] accordingly."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:455
+msgid ""
+"If [code]true[/code], the home indicator is hidden automatically. This only "
+"affects iOS devices without a physical home button."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:458
+msgid ""
+"If [code]true[/code], allows per-pixel transparency for the window "
+"background. This affects performance, so leave it on [code]false[/code] "
+"unless you need it.\n"
+"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
+"[b]Note:[/b] This feature is implemented on HTML5, Linux, macOS, Windows, "
+"and Android."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:463
+msgid ""
+"Sets the window background to transparent when it starts.\n"
+"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
+"[b]Note:[/b] This feature is implemented on HTML5, Linux, macOS, Windows, "
+"and Android."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:468
+msgid ""
+"Forces the main window to be always on top.\n"
+"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:472
+msgid ""
+"Forces the main window to be borderless.\n"
+"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:476
+msgid ""
+"Sets the main window to full screen when the project starts. 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.\n"
+"Regardless of the platform, enabling fullscreen will change the window size "
+"to match the monitor's size. Therefore, make sure your project supports "
+"[url=https://docs.godotengine.org/en/3.4/tutorials/rendering/"
+"multiple_resolutions.html]multiple resolutions[/url] when enabling "
+"fullscreen mode.\n"
+"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:481
+msgid ""
+"Sets the game's main viewport height. On desktop platforms, this is the "
+"default window size. Stretch mode settings also use this as a reference when "
+"enabled."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:484
+msgid ""
+"Allows the window to be resizable by default.\n"
+"[b]Note:[/b] This setting is ignored on iOS and Android."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:488
+msgid ""
+"If greater than zero, overrides the window height when running the game. "
+"Useful for testing stretch modes."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:491
+msgid ""
+"If greater than zero, overrides the window width when running the game. "
+"Useful for testing stretch modes."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:494
+msgid ""
+"Sets the game's main viewport width. On desktop platforms, this is the "
+"default window size. Stretch mode settings also use this as a reference when "
+"enabled."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:497
+msgid ""
+"Specifies the tablet driver to use. If left empty, the default driver will "
+"be used."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:500
+msgid ""
+"If [code]true[/code], enables vertical synchronization. This eliminates "
+"tearing that may appear in moving scenes, at the cost of higher input "
+"latency and stuttering at lower framerates. If [code]false[/code], vertical "
+"synchronization will be disabled, however, many platforms will enforce it "
+"regardless (such as mobile platforms and HTML5)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:503
+msgid ""
+"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
+"enables vertical synchronization via the operating system's window "
+"compositor when in windowed mode and the compositor is enabled. This will "
+"prevent stutter in certain situations. (Windows only.)\n"
+"[b]Note:[/b] This option is experimental and meant to alleviate stutter "
+"experienced by some users. However, some users have experienced a Vsync "
+"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:507
+msgid ""
+"The command-line arguments to append to Godot's own command line when "
+"running the project. This doesn't affect the editor itself.\n"
+"It is possible to make another executable run Godot by using the "
+"[code]%command%[/code] placeholder. The placeholder will be replaced with "
+"Godot's own command line. Program-specific arguments should be placed "
+"[i]before[/i] the placeholder, whereas Godot-specific arguments should be "
+"placed [i]after[/i] the placeholder.\n"
+"For example, this can be used to force the project to run on the dedicated "
+"GPU in a NVIDIA Optimus system on Linux:\n"
+"[codeblock]\n"
+"prime-run %command%\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:515
+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."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:518
+msgid ""
+"Text-based file extensions to include in the script editor's \"Find in Files"
+"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
+"your scene files, especially if you use built-in scripts which are "
+"serialized in the scene files."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:521
+msgid ""
+"Default value for [member ScrollContainer.scroll_deadzone], which will be "
+"used for all [ScrollContainer]s unless overridden."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:524
+msgid ""
+"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
+"UWP to follow interface conventions."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:529
+msgid ""
+"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
+"code] or generic [code]tres[/code]/[code]res[/code] extension)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:532
+msgid ""
+"Path to a custom [Font] resource to use as default for all GUI elements of "
+"the project."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:535
+msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:538
+msgid ""
+"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
+"(in milliseconds)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:541
+msgid "Timer for detecting idle in [TextEdit] (in seconds)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:544
+msgid "Default delay for tooltips (in seconds)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:547
+msgid ""
+"Default [InputEventAction] to confirm a focused button, menu or list item, "
+"or validate input.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:551
+msgid ""
+"Default [InputEventAction] to discard a modal or pending input.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:555
+msgid ""
+"Default [InputEventAction] to move down in the UI.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:559
+msgid ""
+"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
+"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
+"KEY_END] on typical desktop UI systems.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:563
+msgid ""
+"Default [InputEventAction] to focus the next [Control] in the scene. The "
+"focus behavior can be configured via [member Control.focus_next].\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:567
+msgid ""
+"Default [InputEventAction] to focus the previous [Control] in the scene. The "
+"focus behavior can be configured via [member Control.focus_previous].\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:571
+msgid ""
+"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
+"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
+"KEY_HOME] on typical desktop UI systems.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:575
+msgid ""
+"Default [InputEventAction] to move left in the UI.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:579
+msgid ""
+"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
+"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
+"typical desktop UI systems.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:583
+msgid ""
+"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
+"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
+"typical desktop UI systems.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:587
+msgid ""
+"Default [InputEventAction] to move right in the UI.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:591
+msgid ""
+"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
+"[ItemList] or a [Tree]).\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:595
+msgid ""
+"Default [InputEventAction] to move up in the UI.\n"
+"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
+"necessary for the internal logic of several [Control]s. The events assigned "
+"to the action can however be modified."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:599
+msgid ""
+"If [code]true[/code], key/touch/joystick events will be flushed just before "
+"every idle and physics frame.\n"
+"If [code]false[/code], such events will be flushed only once per idle frame, "
+"between iterations of the engine.\n"
+"Enabling this can greatly improve the responsiveness to input, specially in "
+"devices that need to run multiple physics frames per visible (idle) frame, "
+"because they can't run at the target frame rate.\n"
+"[b]Note:[/b] Currently implemented only in Android."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:605
+msgid ""
+"If [code]true[/code], sends mouse input events when tapping or swiping on "
+"the touchscreen."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:608
+msgid ""
+"If [code]true[/code], sends touch input events when clicking or dragging the "
+"mouse."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:611
+msgid "Default delay for touch events. This only affects iOS devices."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:614
+msgid "Optional name for the 2D physics layer 1."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:617
+msgid "Optional name for the 2D physics layer 10."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:620
+msgid "Optional name for the 2D physics layer 11."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:623
+msgid "Optional name for the 2D physics layer 12."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:626
+msgid "Optional name for the 2D physics layer 13."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:629
+msgid "Optional name for the 2D physics layer 14."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:632
+msgid "Optional name for the 2D physics layer 15."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:635
+msgid "Optional name for the 2D physics layer 16."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:638
+msgid "Optional name for the 2D physics layer 17."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:641
+msgid "Optional name for the 2D physics layer 18."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:644
+msgid "Optional name for the 2D physics layer 19."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:647
+msgid "Optional name for the 2D physics layer 2."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:650
+msgid "Optional name for the 2D physics layer 20."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:653
+msgid "Optional name for the 2D physics layer 21."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:656
+msgid "Optional name for the 2D physics layer 22."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:659
+msgid "Optional name for the 2D physics layer 23."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:662
+msgid "Optional name for the 2D physics layer 24."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:665
+msgid "Optional name for the 2D physics layer 25."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:668
+msgid "Optional name for the 2D physics layer 26."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:671
+msgid "Optional name for the 2D physics layer 27."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:674
+msgid "Optional name for the 2D physics layer 28."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:677
+msgid "Optional name for the 2D physics layer 29."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:680
+msgid "Optional name for the 2D physics layer 3."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:683
+msgid "Optional name for the 2D physics layer 30."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:686
+msgid "Optional name for the 2D physics layer 31."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:689
+msgid "Optional name for the 2D physics layer 32."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:692
+msgid "Optional name for the 2D physics layer 4."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:695
+msgid "Optional name for the 2D physics layer 5."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:698
+msgid "Optional name for the 2D physics layer 6."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:701
+msgid "Optional name for the 2D physics layer 7."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:704
+msgid "Optional name for the 2D physics layer 8."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:707
+msgid "Optional name for the 2D physics layer 9."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:710
+msgid "Optional name for the 2D render layer 1."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:713
+msgid "Optional name for the 2D render layer 10."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:716
+msgid "Optional name for the 2D render layer 11."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:719
+msgid "Optional name for the 2D render layer 12."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:722
+msgid "Optional name for the 2D render layer 13."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:725
+msgid "Optional name for the 2D render layer 14."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:728
+msgid "Optional name for the 2D render layer 15."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:731
+msgid "Optional name for the 2D render layer 16."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:734
+msgid "Optional name for the 2D render layer 17."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:737
+msgid "Optional name for the 2D render layer 18."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:740
+msgid "Optional name for the 2D render layer 19."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:743
+msgid "Optional name for the 2D render layer 2."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:746
+msgid "Optional name for the 2D render layer 20."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:749
+msgid "Optional name for the 2D render layer 3."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:752
+msgid "Optional name for the 2D render layer 4."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:755
+msgid "Optional name for the 2D render layer 5."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:758
+msgid "Optional name for the 2D render layer 6."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:761
+msgid "Optional name for the 2D render layer 7."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:764
+msgid "Optional name for the 2D render layer 8."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:767
+msgid "Optional name for the 2D render layer 9."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:770
+msgid "Optional name for the 3D physics layer 1."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:773
+msgid "Optional name for the 3D physics layer 10."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:776
+msgid "Optional name for the 3D physics layer 11."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:779
+msgid "Optional name for the 3D physics layer 12."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:782
+msgid "Optional name for the 3D physics layer 13."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:785
+msgid "Optional name for the 3D physics layer 14."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:788
+msgid "Optional name for the 3D physics layer 15."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:791
+msgid "Optional name for the 3D physics layer 16."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:794
+msgid "Optional name for the 3D physics layer 17."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:797
+msgid "Optional name for the 3D physics layer 18."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:800
+msgid "Optional name for the 3D physics layer 19."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:803
+msgid "Optional name for the 3D physics layer 2."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:806
+msgid "Optional name for the 3D physics layer 20."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:809
+msgid "Optional name for the 3D physics layer 21."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:812
+msgid "Optional name for the 3D physics layer 22."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:815
+msgid "Optional name for the 3D physics layer 23."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:818
+msgid "Optional name for the 3D physics layer 24."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:821
+msgid "Optional name for the 3D physics layer 25."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:824
+msgid "Optional name for the 3D physics layer 26."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:827
+msgid "Optional name for the 3D physics layer 27."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:830
+msgid "Optional name for the 3D physics layer 28."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:833
+msgid "Optional name for the 3D physics layer 29."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:836
+msgid "Optional name for the 3D physics layer 3."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:839
+msgid "Optional name for the 3D physics layer 30."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:842
+msgid "Optional name for the 3D physics layer 31."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:845
+msgid "Optional name for the 3D physics layer 32."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:848
+msgid "Optional name for the 3D physics layer 4."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:851
+msgid "Optional name for the 3D physics layer 5."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:854
+msgid "Optional name for the 3D physics layer 6."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:857
+msgid "Optional name for the 3D physics layer 7."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:860
+msgid "Optional name for the 3D physics layer 8."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:863
+msgid "Optional name for the 3D physics layer 9."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:866
+msgid "Optional name for the 3D render layer 1."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:869
+msgid "Optional name for the 3D render layer 10."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:872
+msgid "Optional name for the 3D render layer 11."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:875
+msgid "Optional name for the 3D render layer 12."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:878
+msgid "Optional name for the 3D render layer 13."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:881
+msgid "Optional name for the 3D render layer 14"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:884
+msgid "Optional name for the 3D render layer 15."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:887
+msgid "Optional name for the 3D render layer 16."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:890
+msgid "Optional name for the 3D render layer 17."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:893
+msgid "Optional name for the 3D render layer 18."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:896
+msgid "Optional name for the 3D render layer 19."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:899
+msgid "Optional name for the 3D render layer 2."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:902
+msgid "Optional name for the 3D render layer 20."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:905
+msgid "Optional name for the 3D render layer 3."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:908
+msgid "Optional name for the 3D render layer 4."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:911
+msgid "Optional name for the 3D render layer 5."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:914
+msgid "Optional name for the 3D render layer 6."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:917
+msgid "Optional name for the 3D render layer 7."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:920
+msgid "Optional name for the 3D render layer 8."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:923
+msgid "Optional name for the 3D render layer 9."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:926
+msgid ""
+"The locale to fall back to if a translation isn't available in a given "
+"language. If left empty, [code]en[/code] (English) will be used."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:929
+msgid ""
+"If non-empty, this locale will be used when running the project from the "
+"editor."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:932
+msgid "If [code]true[/code], logs all output to files."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:935
+msgid ""
+"Desktop override for [member logging/file_logging/enable_file_logging], as "
+"log files are not readily accessible on mobile/Web platforms."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:938
+msgid ""
+"Path to logs within the project. Using an [code]user://[/code] path is "
+"recommended."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:941
+msgid "Specifies the maximum amount of log files allowed (used for rotation)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:946
+msgid ""
+"Godot uses a message queue to defer some function calls. If you run out of "
+"space on it (you will see an error), you can increase the size here."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:949
+msgid ""
+"This is used by servers when used in multi-threading mode (servers and "
+"visual). RIDs are preallocated to avoid stalling the server requesting them "
+"on threads. If servers get stalled too often when loading resources in a "
+"thread, increase this number."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:952
+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."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:955
+msgid ""
+"Maximum number of errors allowed to be sent as output from the debugger. "
+"Over this value, content is dropped. This helps not to stall the debugger "
+"connection."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:958
+msgid ""
+"Maximum amount of messages allowed to send as output from the debugger. Over "
+"this value, content is dropped. This helps not to stall the debugger "
+"connection."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:961
+msgid ""
+"Maximum number of warnings allowed to be sent as output from the debugger. "
+"Over this value, content is dropped. This helps not to stall the debugger "
+"connection."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:964
+msgid ""
+"Default size of packet peer stream for deserializing Godot data (in bytes, "
+"specified as a power of two). The default value [code]16[/code] is equal to "
+"65,536 bytes. Over this size, data is dropped."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:967
+msgid "Timeout (in seconds) for connection attempts using TCP."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:970
+msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:973
+msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:976
+msgid "Maximum number of concurrent input packets for [WebSocketClient]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:979
+msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:982
+msgid "Maximum number of concurrent output packets for [WebSocketClient]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:985
+msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:988
+msgid "Maximum number of concurrent input packets for [WebSocketServer]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:991
+msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:994
+msgid "Maximum number of concurrent output packets for [WebSocketServer]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:997
+msgid ""
+"Amount of read ahead used by remote filesystem. Higher values decrease the "
+"effects of latency at the cost of higher bandwidth usage."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1000
+msgid "Page size used by remote filesystem (in bytes)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1003
+msgid ""
+"The CA certificates bundle to use for SSL connections. If this is set to a "
+"non-empty value, this will [i]override[/i] Godot's default [url=https://"
+"github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates."
+"crt]Mozilla certificate bundle[/url]. If left empty, the default certificate "
+"bundle will be used.\n"
+"If in doubt, leave this setting empty."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1007
+msgid ""
+"When creating node names automatically, set the type of casing in this "
+"project. This is mostly an editor setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1010
+msgid ""
+"What to use to separate node name from number. This is mostly an editor "
+"setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1013
+msgid ""
+"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
+"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
+"enabled."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1017
+msgid ""
+"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
+"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
+"enabled."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1021
+msgid ""
+"The default angular damp in 2D.\n"
+"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
+"At value [code]0[/code] objects will keep moving with the same velocity. "
+"Values greater than [code]1[/code] will aim to reduce the velocity to "
+"[code]0[/code] in less than a second e.g. a value of [code]2[/code] will aim "
+"to reduce the velocity to [code]0[/code] in half a second. A value equal to "
+"or greater than the physics frame rate ([member ProjectSettings.physics/"
+"common/physics_fps], [code]60[/code] by default) will bring the object to a "
+"stop in one iteration."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1025
+msgid ""
+"The default gravity strength in 2D (in pixels per second squared).\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default gravity at runtime, use the following code sample:\n"
+"[codeblock]\n"
+"# Set the default gravity strength to 98.\n"
+"Physics2DServer.area_set_param(get_viewport().find_world_2d().get_space(), "
+"Physics2DServer.AREA_PARAM_GRAVITY, 98)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1033
+msgid ""
+"The default gravity direction in 2D.\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default gravity vector at runtime, use the following code sample:\n"
+"[codeblock]\n"
+"# Set the default gravity direction to `Vector2(0, 1)`.\n"
+"Physics2DServer.area_set_param(get_viewport().find_world_2d().get_space(), "
+"Physics2DServer.AREA_PARAM_GRAVITY_VECTOR, Vector2(0, 1))\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1041
+msgid ""
+"The default linear damp in 2D.\n"
+"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
+"At value [code]0[/code] objects will keep moving with the same velocity. "
+"Values greater than [code]1[/code] will aim to reduce the velocity to "
+"[code]0[/code] in less than a second e.g. a value of [code]2[/code] will aim "
+"to reduce the velocity to [code]0[/code] in half a second. A value equal to "
+"or greater than the physics frame rate ([member ProjectSettings.physics/"
+"common/physics_fps], [code]60[/code] by default) will bring the object to a "
+"stop in one iteration."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1045
+msgid ""
+"Threshold defining the surface size that constitutes a large object with "
+"regard to cells in the broad-phase 2D hash grid algorithm.\n"
+"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
+"enabled."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1049
+msgid ""
+"Sets which physics engine to use for 2D physics.\n"
+"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
+"alternative 2D physics server implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1053
+msgid ""
+"Threshold angular velocity under which a 2D physics body will be considered "
+"inactive. See [constant Physics2DServer."
+"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1056
+msgid ""
+"Threshold linear velocity under which a 2D physics body will be considered "
+"inactive. See [constant Physics2DServer."
+"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1059
+msgid ""
+"Sets whether physics is run on the main thread or a separate one. Running "
+"the server on a thread increases performance, but restricts API access to "
+"only physics process.\n"
+"[b]Warning:[/b] As of Godot 3.2, there are mixed reports about the use of a "
+"Multi-Threaded thread model for physics. Be sure to assess whether it does "
+"give you extra performance and no regressions when using it."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1063
+msgid ""
+"Time (in seconds) of inactivity before which a 2D physics body will put to "
+"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1066
+msgid ""
+"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
+"physics spatial partitioning. This may give better performance."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1069
+msgid ""
+"Sets whether the 3D physics world will be created with support for "
+"[SoftBody] physics. Only applies to the Bullet physics engine."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1072
+msgid ""
+"The default angular damp in 3D.\n"
+"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
+"At value [code]0[/code] objects will keep moving with the same velocity. "
+"Values greater than [code]1[/code] will aim to reduce the velocity to "
+"[code]0[/code] in less than a second e.g. a value of [code]2[/code] will aim "
+"to reduce the velocity to [code]0[/code] in half a second. A value equal to "
+"or greater than the physics frame rate ([member ProjectSettings.physics/"
+"common/physics_fps], [code]60[/code] by default) will bring the object to a "
+"stop in one iteration."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1076
+msgid ""
+"The default gravity strength in 3D (in meters per second squared).\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default gravity at runtime, use the following code sample:\n"
+"[codeblock]\n"
+"# Set the default gravity strength to 9.8.\n"
+"PhysicsServer.area_set_param(get_viewport().find_world().get_space(), "
+"PhysicsServer.AREA_PARAM_GRAVITY, 9.8)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1084
+msgid ""
+"The default gravity direction in 3D.\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default gravity vector at runtime, use the following code sample:\n"
+"[codeblock]\n"
+"# Set the default gravity direction to `Vector3(0, -1, 0)`.\n"
+"PhysicsServer.area_set_param(get_viewport().find_world().get_space(), "
+"PhysicsServer.AREA_PARAM_GRAVITY_VECTOR, Vector3(0, -1, 0))\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1092
+msgid ""
+"The default linear damp in 3D.\n"
+"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
+"At value [code]0[/code] objects will keep moving with the same velocity. "
+"Values greater than [code]1[/code] will aim to reduce the velocity to "
+"[code]0[/code] in less than a second e.g. a value of [code]2[/code] will aim "
+"to reduce the velocity to [code]0[/code] in half a second. A value equal to "
+"or greater than the physics frame rate ([member ProjectSettings.physics/"
+"common/physics_fps], [code]60[/code] by default) will bring the object to a "
+"stop in one iteration."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1096
+msgid ""
+"Enables the use of bounding volume hierarchy instead of octree for 3D "
+"physics spatial partitioning. This may give better performance."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1099
+msgid ""
+"Sets which physics engine to use for 3D physics.\n"
+"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
+"physics engine. The \"GodotPhysics\" engine is still supported as an "
+"alternative."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1103
+msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1106
+msgid ""
+"If enabled, 2D and 3D physics picking behaves this way in relation to "
+"pause:\n"
+"- When pause is started, every collision object that is hovered or captured "
+"(3D only) is released from that condition, getting the relevant mouse-exit "
+"callback, unless its pause mode makes it immune to pause.\n"
+"- During pause, picking only considers collision objects immune to pause, "
+"sending input events and enter/exit callbacks to them as expected.\n"
+"If disabled, the legacy behavior is used, which consists in queuing the "
+"picking input events during pause (so nodes won't get them) and flushing "
+"that queue on resume, against the state of the 2D/3D world at that point."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1112
+msgid ""
+"The number of fixed iterations per second. This controls how often physics "
+"simulation and [method Node._physics_process] methods are run.\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the physics FPS at runtime, set [member Engine.iterations_per_second] "
+"instead."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1116
+msgid ""
+"Controls how much physics ticks are synchronized with real time. For 0 or "
+"less, the ticks are synchronized. Such values are recommended for network "
+"games, where clock synchronization matters. Higher values cause higher "
+"deviation of in-game clock and real clock, but allows smoothing out "
+"framerate jitters. The default value of 0.5 should be fine for most; values "
+"above 2 could cause the game to react to dropped frames with a noticeable "
+"delay and are not recommended.\n"
+"[b]Note:[/b] For best results, when using a custom physics interpolation "
+"solution, the physics jitter fix should be disabled by setting [member "
+"physics/common/physics_jitter_fix] to [code]0[/code].\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1121
+msgid ""
+"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
+"uploading batching data. This may not be necessary but can be used for "
+"safety.\n"
+"[b]Note:[/b] Use with care. You are advised to leave this as default for "
+"exports. A non-default setting that works better on your machine may "
+"adversely affect performance for end users."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1125
+msgid ""
+"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
+"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
+"flag.\n"
+"[b]Note:[/b] Use with care. You are advised to leave this as default for "
+"exports. A non-default setting that works better on your machine may "
+"adversely affect performance for end users."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1129
+msgid ""
+"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
+"[code]glBufferData[/code] is called with NULL data and the full buffer size "
+"prior to uploading new data. This can be important to avoid stalling on some "
+"hardware.\n"
+"[b]Note:[/b] Use with care. You are advised to leave this as default for "
+"exports. A non-default setting that works better on your machine may "
+"adversely affect performance for end users."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1133
+msgid ""
+"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
+"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
+"flag.\n"
+"[b]Note:[/b] Use with care. You are advised to leave this as default for "
+"exports. A non-default setting that works better on your machine may "
+"adversely affect performance for end users."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1137
+msgid ""
+"Choose between fixed mode where corner scalings are preserved matching the "
+"artwork, and scaling mode.\n"
+"Not available in GLES3 when [member rendering/batching/options/use_batching] "
+"is off."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1141
+msgid ""
+"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
+"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
+"[url=https://github.com/godotengine/godot/issues/9913]GitHub issue 9913[/"
+"url] for details.\n"
+"If [code]true[/code], this option enables a \"safe\" code path for such "
+"NVIDIA GPUs at the cost of performance. This option affects GLES2 and GLES3 "
+"rendering, but only on desktop platforms."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1145
+msgid ""
+"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
+"This provides greater compatibility with a wide range of hardware, and also "
+"may be faster in some circumstances.\n"
+"Currently only available when [member rendering/batching/options/"
+"use_batching] is active.\n"
+"[b]Note:[/b] Antialiased software skinned polys are not supported, and will "
+"be rendered without antialiasing.\n"
+"[b]Note:[/b] Custom shaders that use the [code]VERTEX[/code] built-in "
+"operate with [code]VERTEX[/code] position [i]after[/i] skinning, whereas "
+"with hardware skinning, [code]VERTEX[/code] is the position [i]before[/i] "
+"skinning."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1151
+msgid ""
+"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
+"May help in some pixel art styles.\n"
+"This snapping is performed on the GPU in the vertex shader.\n"
+"Consider using the project setting [member rendering/batching/precision/"
+"uv_contract] to prevent artifacts."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1156
+msgid ""
+"When batching is on, this regularly prints a frame diagnosis log. Note that "
+"this will degrade performance."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1159
+msgid ""
+"[b]Experimental.[/b] For regression testing against the old renderer. If "
+"this is switched on, and [code]use_batching[/code] is set, the renderer will "
+"swap alternately between using the old renderer, and the batched renderer, "
+"on each frame. This makes it easy to identify visual differences. "
+"Performance will be degraded."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1162
+msgid ""
+"Lights have the potential to prevent joining items, and break many of the "
+"performance benefits of batching. This setting enables some complex logic to "
+"allow joining items if their lighting is similar, and overlap tests pass. "
+"This can significantly improve performance in some games. Set to 0 to switch "
+"off. With large values the cost of overlap tests may lead to diminishing "
+"returns."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1165
+msgid ""
+"Sets the proportion of the total screen area (in pixels) that must be saved "
+"by a scissor operation in order to activate light scissoring. This can "
+"prevent parts of items being rendered outside the light area. Lower values "
+"scissor more aggressively. A value of 1 scissors none of the items, a value "
+"of 0 scissors every item. The power of 4 of the value is used, in order to "
+"emphasize the lower range, and multiplied by the total screen area in pixels "
+"to give the threshold. This can reduce fill rate requirements in scenes with "
+"a lot of lighting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1168
+msgid ""
+"Enabling this setting uses the legacy method to draw batches containing only "
+"one rect. The legacy method is faster (approx twice as fast), but can cause "
+"flicker on some systems. In order to directly compare performance with the "
+"non-batching renderer you can set this to true, but it is recommended to "
+"turn this off unless you can guarantee your target hardware will work with "
+"this method."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1171
+msgid ""
+"Turns 2D batching on and off. Batching increases performance by reducing the "
+"amount of graphics API drawcalls."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1174
+msgid "Switches on 2D batching within the editor."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1177
+msgid ""
+"Size of buffer reserved for batched vertices. Larger size enables larger "
+"batches, but there are diminishing returns for the memory used. This should "
+"only have a minor effect on performance."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1180
+msgid ""
+"Including color in the vertex format has a cost, however, not including "
+"color prevents batching across color changes. This threshold determines the "
+"ratio of [code]number of vertex color changes / total number of vertices[/"
+"code] above which vertices will be translated to colored format. A value of "
+"0 will always use colored vertices, 1 will never use colored vertices."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1183
+msgid ""
+"In certain circumstances, the batcher can reorder items in order to better "
+"join them. This may result in better performance. An overlap test is needed "
+"however for each item lookahead, so there is a trade off, with diminishing "
+"returns. If you are getting no benefit, setting this to 0 will switch it off."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1186
+msgid ""
+"Sets the number of commands to lookahead to determine whether to batch "
+"render items. A value of 1 can join items consisting of single commands, 0 "
+"turns off joining. Higher values are in theory more likely to join, however "
+"this has diminishing returns and has a runtime cost so a small value is "
+"recommended."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1189
+msgid ""
+"On some platforms (especially mobile), precision issues in shaders can lead "
+"to reading 1 texel outside of bounds, particularly where rects are scaled. "
+"This can particularly lead to border artifacts around tiles in tilemaps.\n"
+"This adjustment corrects for this by making a small contraction to the UV "
+"coordinates used. Note that this can result in a slight squashing of border "
+"texels."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1193
+msgid ""
+"The amount of UV contraction. This figure is divided by 1000000, and is a "
+"proportion of the total texture dimensions, where the width and height are "
+"both ranged from 0.0 to 1.0.\n"
+"Use the default unless correcting for a problem on particular hardware."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1197
+msgid ""
+"Amount of light samples taken when using [constant BakedLightmap."
+"BAKE_QUALITY_HIGH]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1200
+msgid ""
+"Amount of light samples taken when using [constant BakedLightmap."
+"BAKE_QUALITY_LOW]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1203
+msgid ""
+"Amount of light samples taken when using [constant BakedLightmap."
+"BAKE_QUALITY_MEDIUM]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1206
+msgid ""
+"Amount of light samples taken when using [constant BakedLightmap."
+"BAKE_QUALITY_ULTRA]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1209
+msgid ""
+"Default background clear color. Overridable per [Viewport] using its "
+"[Environment]. See [member Environment.background_mode] and [member "
+"Environment.background_color] in particular. To change this default color "
+"programmatically, use [method VisualServer.set_default_clear_color]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1212
+msgid ""
+"[Environment] that will be used as a fallback environment in case a scene "
+"does not specify its own environment. The default environment is loaded in "
+"at scene load time regardless of whether you have set an environment or not. "
+"If you do not rely on the fallback environment, it is best to delete "
+"[code]default_env.tres[/code], or to specify a different default environment "
+"here."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1215
+msgid ""
+"The use of half-float vertex compression may be producing rendering errors "
+"on some platforms (especially iOS). These have been seen particularly in "
+"particles. Disabling half-float may resolve these problems."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1218
+msgid ""
+"If [code]true[/code] and available on the target device, enables high "
+"floating point precision for all shader computations in GLES2.\n"
+"[b]Warning:[/b] High floating point precision can be extremely slow on older "
+"devices and is often not available at all. Use with caution."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1222
+msgid ""
+"Max buffer size for blend shapes. Any blend shape bigger than this will not "
+"work."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1225
+msgid ""
+"Max buffer size for drawing polygons. Any polygon bigger than this will not "
+"work."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1228
+msgid ""
+"Max index buffer size for drawing polygons. Any polygon bigger than this "
+"will not work."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1231
+msgid ""
+"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
+"Nodes using more than this size will not work."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1234
+msgid ""
+"Max number of lights renderable per object. This is further limited by "
+"hardware support. Most devices only support 409 lights, while many devices "
+"(especially mobile) only support 102. Setting this low will slightly reduce "
+"memory usage and may decrease shader compile times."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1237
+msgid ""
+"Max amount of elements renderable in a frame. If more elements than this are "
+"visible per frame, they will not be drawn. Keep in mind elements refer to "
+"mesh surfaces and not meshes themselves. Setting this low will slightly "
+"reduce memory usage and may decrease shader compile times, particularly on "
+"web. For most uses, the default value is suitable, but consider lowering as "
+"much as possible on web export."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1240
+msgid ""
+"Max number of lights renderable in a frame. If more lights than this number "
+"are used, they will be ignored. Setting this low will slightly reduce memory "
+"usage and may decrease shader compile times, particularly on web. For most "
+"uses, the default value is suitable, but consider lowering as much as "
+"possible on web export."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1243
+msgid ""
+"Max number of reflection probes renderable in a frame. If more reflection "
+"probes than this number are used, they will be ignored. Setting this low "
+"will slightly reduce memory usage and may decrease shader compile times, "
+"particularly on web. For most uses, the default value is suitable, but "
+"consider lowering as much as possible on web export."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1246
+msgid ""
+"Shaders have a time variable that constantly increases. At some point, it "
+"needs to be rolled back to zero to avoid precision errors on shader "
+"animations. This setting specifies when (in seconds)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1249
+msgid ""
+"If [code]true[/code], the texture importer will import lossless textures "
+"using the PNG format. Otherwise, it will default to using WebP."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1252
+msgid ""
+"The default compression level for lossless WebP. Higher levels result in "
+"smaller files at the cost of compression speed. Decompression speed is "
+"mostly unaffected by the compression level. Supported values are 0 to 9. "
+"Note that compression levels above 6 are very slow and offer very little "
+"savings."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1255
+msgid ""
+"On import, mesh vertex data will be split into two streams within a single "
+"vertex buffer, one for position data and the other for interleaved "
+"attributes data. Recommended to be enabled if targeting mobile devices. "
+"Requires manual reimport of meshes after toggling."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1258
+msgid ""
+"Determines the maximum number of sphere occluders that will be used at any "
+"one time.\n"
+"Although you can have many occluders in a scene, each frame the system will "
+"choose from these the most relevant based on a screen space metric, in order "
+"to give the best overall performance."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1262
+msgid ""
+"The default convention is for portal normals to point outward (face outward) "
+"from the source room.\n"
+"If you accidentally build your level with portals facing the wrong way, this "
+"setting can fix the problem.\n"
+"It will flip named portal meshes (i.e. [code]-portal[/code]) on the initial "
+"convertion to [Portal] nodes."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1267
+msgid ""
+"Show conversion logs.\n"
+"[b]Note:[/b] This will automatically be disabled in exports."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1271
+msgid ""
+"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
+"code]. If [code]false[/code], they will be sent as [code]notifications[/"
+"code]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1274
+msgid ""
+"If enabled, while merging meshes, the system will also attempt to remove "
+"[Spatial] nodes that no longer have any children.\n"
+"Reducing the number of [Node]s in the scene tree can make traversal more "
+"efficient, but can be switched off in case you wish to use empty [Spatial]s "
+"for markers or some other purpose."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1278
+msgid ""
+"Show logs during PVS generation.\n"
+"[b]Note:[/b] This will automatically be disabled in exports."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1282
+msgid ""
+"Uses a simplified method of generating PVS (potentially visible set) data. "
+"The results may not be accurate where more than one portal join adjacent "
+"rooms.\n"
+"[b]Note:[/b] Generally you should only use this option if you encounter bugs "
+"when it is set to [code]false[/code], i.e. there are problems with the "
+"default method."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1286
+msgid ""
+"If [code]true[/code], allocates the main framebuffer with high dynamic "
+"range. High dynamic range allows the use of [Color] values greater than 1.\n"
+"[b]Note:[/b] Only available on the GLES3 backend."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1290
+msgid ""
+"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
+"devices, due to performance concerns or driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1293
+msgid ""
+"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
+"architecture already does this."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1296
+msgid ""
+"If [code]true[/code], performs a previous depth pass before rendering "
+"materials. This increases performance in scenes with high overdraw, when "
+"complex materials and lighting are used."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1299
+msgid ""
+"The directional shadow's size in pixels. Higher values will result in "
+"sharper shadows, at the cost of performance. The value will be rounded up to "
+"the nearest power of 2."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1302
+msgid ""
+"Lower-end override for [member rendering/quality/directional_shadow/size] on "
+"mobile devices, due to performance concerns or driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1305
+msgid ""
+"The video driver to use (\"GLES2\" or \"GLES3\").\n"
+"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
+"video-driver[/code] command line argument, or by the [member rendering/"
+"quality/driver/fallback_to_gles2] option if the target system does not "
+"support GLES3 and falls back to GLES2. In such cases, this property is not "
+"updated, so use [method OS.get_current_video_driver] to query it at run-time."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1309
+msgid ""
+"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
+"driver is not supported.\n"
+"[b]Note:[/b] The two video drivers are not drop-in replacements for each "
+"other, so a game designed for GLES3 might not work properly when falling "
+"back to GLES2. In particular, some features of the GLES3 backend are not "
+"available in GLES2. Enabling this setting also means that both ETC and ETC2 "
+"VRAM-compressed textures will be exported on Android and iOS, increasing the "
+"data pack's size."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1313
+msgid ""
+"Maximum anisotropic filter level used for textures with anisotropy enabled. "
+"Higher values will result in sharper textures when viewed from oblique "
+"angles, at the cost of performance. Only power-of-two values are valid (2, "
+"4, 8, 16)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1316
+msgid ""
+"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
+"around the edges of polygons. A higher MSAA value results in smoother edges "
+"but can be significantly slower on some hardware.\n"
+"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1320
+msgid ""
+"If set to a value greater than [code]0.0[/code], contrast-adaptive "
+"sharpening will be applied to the 3D viewport. This has a low performance "
+"cost and can be used to recover some of the sharpness lost from using FXAA. "
+"Values around [code]0.5[/code] generally give the best results. See also "
+"[member rendering/quality/filters/use_fxaa]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1323
+msgid ""
+"If [code]true[/code], uses a fast post-processing filter to make banding "
+"significantly less visible. In some cases, debanding may introduce a "
+"slightly noticeable dithering pattern. It's recommended to enable debanding "
+"only when actually needed since the dithering pattern will make lossless-"
+"compressed screenshots larger.\n"
+"[b]Note:[/b] Only available on the GLES3 backend. [member rendering/quality/"
+"depth/hdr] must also be [code]true[/code] for debanding to be effective.\n"
+"[b]Note:[/b] There are known issues with debanding breaking rendering on "
+"mobile platforms. Due to this, it is recommended to leave this option "
+"disabled when targeting mobile platforms."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1328
+msgid ""
+"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
+"antialiasing method, which is fast but will make the image look blurry, "
+"especially at lower resolutions. It can still work relatively well at large "
+"resolutions such as 1440p and 4K. Some of the lost sharpness can be "
+"recovered by enabling contrast-adaptive sharpening (see [member rendering/"
+"quality/filters/sharpen_intensity])."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1331
+msgid ""
+"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
+"mipmaps (also called \"bilinear filtering\"), which will result in visible "
+"seams appearing between mipmap stages. This may increase performance in "
+"mobile as less memory bandwidth is used. If [code]false[/code], linear "
+"mipmap filtering (also called \"trilinear filtering\") is used."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1334
+msgid ""
+"Strategy used for framebuffer allocation. The simpler it is, the less "
+"resources it uses (but the less features it supports). If set to \"2D "
+"Without Sampling\" or \"3D Without Effects\", sample buffers will not be "
+"allocated. This means [code]SCREEN_TEXTURE[/code] and [code]DEPTH_TEXTURE[/"
+"code] will not be available in shaders and post-processing effects will not "
+"be available in the [Environment]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1337
+msgid ""
+"Lower-end override for [member rendering/quality/intended_usage/"
+"framebuffer_allocation] on mobile devices, due to performance concerns or "
+"driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1340
+msgid ""
+"Enable usage of bicubic sampling in baked lightmaps. This results in "
+"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
+"changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1343
+msgid ""
+"Lower-end override for [member rendering/quality/lightmapping/"
+"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1346
+msgid ""
+"Size of the atlas used by reflection probes. A larger size can result in "
+"higher visual quality, while a smaller size will be faster and take up less "
+"memory."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1349
+msgid ""
+"Number of subdivisions to use for the reflection atlas. A higher number "
+"lowers the quality of each atlas, but allows you to use more."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1352
+msgid ""
+"If [code]true[/code], uses a high amount of samples to create blurred "
+"variants of reflection probes and panorama backgrounds (sky). Those blurred "
+"variants are used by rough materials."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1355
+msgid ""
+"Lower-end override for [member rendering/quality/reflections/"
+"high_quality_ggx] on mobile devices, due to performance concerns or driver "
+"support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1358
+msgid ""
+"Limits the size of the irradiance map which is normally determined by "
+"[member Sky.radiance_size]. A higher size results in a higher quality "
+"irradiance map similarly to [member rendering/quality/reflections/"
+"high_quality_ggx]. Use a higher value when using high-frequency HDRI maps, "
+"otherwise keep this as low as possible.\n"
+"[b]Note:[/b] Low and mid range hardware do not support complex irradiance "
+"maps well and may crash if this is set too high."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1362
+msgid ""
+"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
+"probes and panorama backgrounds (sky). This reduces jitter noise on "
+"reflections, but costs more performance and memory."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1365
+msgid ""
+"Lower-end override for [member rendering/quality/reflections/"
+"texture_array_reflections] on mobile devices, due to performance concerns or "
+"driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1368
+msgid ""
+"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
+"blurred reflections instead of the GGX model."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1371
+msgid ""
+"Lower-end override for [member rendering/quality/shading/"
+"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
+"driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1374
+msgid ""
+"If [code]true[/code], uses faster but lower-quality Lambert material "
+"lighting model instead of Burley."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1377
+msgid ""
+"Lower-end override for [member rendering/quality/shading/"
+"force_lambert_over_burley] on mobile devices, due to performance concerns or "
+"driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1380
+msgid ""
+"If [code]true[/code], forces vertex shading for all rendering. This can "
+"increase performance a lot, but also reduces quality immensely. Can be used "
+"to optimize performance on low-end mobile devices."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1383
+msgid ""
+"Lower-end override for [member rendering/quality/shading/"
+"force_vertex_shading] on mobile devices, due to performance concerns or "
+"driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
+msgid ""
+"Size for cubemap into which the shadow is rendered before being copied into "
+"the shadow atlas. A higher number can result in higher resolution shadows "
+"when used with a higher [member rendering/quality/shadow_atlas/size]. "
+"Setting higher than a quarter of the [member rendering/quality/shadow_atlas/"
+"size] will not result in a perceptible increase in visual quality."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
+msgid ""
+"Subdivision quadrant size for shadow mapping. See shadow mapping "
+"documentation."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1405
+msgid ""
+"Size for shadow atlas (used for OmniLights and SpotLights). See "
+"documentation."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1408
+msgid ""
+"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
+"mobile devices, due to performance concerns or driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1411
+msgid ""
+"Shadow filter mode. Higher-quality settings result in smoother shadows that "
+"flicker less when moving. \"Disabled\" is the fastest option, but also has "
+"the lowest quality. \"PCF5\" is smoother but is also slower. \"PCF13\" is "
+"the smoothest option, but is also the slowest.\n"
+"[b]Note:[/b] When using the GLES2 backend, the \"PCF13\" option actually "
+"uses 16 samples to emulate linear filtering in the shader. This results in a "
+"shadow appearance similar to the one produced by the GLES3 backend."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1415
+msgid ""
+"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
+"mobile devices, due to performance concerns or driver support."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1418
+msgid ""
+"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
+"GLES2 and GLES3).\n"
+"See also [member rendering/quality/skinning/software_skinning_fallback]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1422
+msgid ""
+"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
+"doesn't support the default GPU skinning process with GLES2.\n"
+"If [code]false[/code], an alternative skinning process on the GPU is used in "
+"this case (slower in most cases).\n"
+"See also [member rendering/quality/skinning/force_software_skinning].\n"
+"[b]Note:[/b] When the software skinning fallback is triggered, custom vertex "
+"shaders will behave in a different way, because the bone transform will be "
+"already applied to the modelview matrix."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1428
+msgid ""
+"The rendering octree balance can be changed to favor smaller ([code]0[/"
+"code]), or larger ([code]1[/code]) branches.\n"
+"Larger branches can increase performance significantly in some projects."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1432
+msgid ""
+"Enables the use of bounding volume hierarchy instead of octree for rendering "
+"spatial partitioning. This may give better performance."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1435
+msgid ""
+"Improves quality of subsurface scattering, but cost significantly increases."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1438
+msgid "Quality setting for subsurface scattering (samples taken)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1441
+msgid "Max radius used for subsurface scattering samples."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1444
+msgid ""
+"Weight subsurface scattering samples. Helps to avoid reading samples from "
+"unrelated parts of the screen."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1447
+msgid ""
+"Use high-quality voxel cone tracing. This results in better-looking "
+"reflections, but is much more expensive on the GPU."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1450
+msgid ""
+"Thread model for rendering. Rendering on a thread can vastly improve "
+"performance, but synchronizing to the main thread can cause a bit more "
+"jitter."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1453
+msgid ""
+"If [code]true[/code], a thread safe version of BVH (bounding volume "
+"hierarchy) will be used in rendering and Godot physics.\n"
+"Try enabling this option if you see any visual anomalies in 3D (such as "
+"incorrect object visibility)."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1457
+msgid ""
+"If [code]true[/code], the texture importer will import VRAM-compressed "
+"textures using the BPTC algorithm. This texture compression algorithm is "
+"only supported on desktop platforms, and only when using the GLES3 "
+"renderer.\n"
+"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
+"already imported before. To make this setting apply to textures that were "
+"already imported, exit the editor, remove the [code].import/[/code] folder "
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1461
+msgid ""
+"If [code]true[/code], the texture importer will import VRAM-compressed "
+"textures using the Ericsson Texture Compression algorithm. This algorithm "
+"doesn't support alpha channels in textures.\n"
+"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
+"already imported before. To make this setting apply to textures that were "
+"already imported, exit the editor, remove the [code].import/[/code] folder "
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1465
+msgid ""
+"If [code]true[/code], the texture importer will import VRAM-compressed "
+"textures using the Ericsson Texture Compression 2 algorithm. This texture "
+"compression algorithm is only supported when using the GLES3 renderer.\n"
+"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
+"already imported before. To make this setting apply to textures that were "
+"already imported, exit the editor, remove the [code].import/[/code] folder "
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1469
+msgid ""
+"If [code]true[/code], the texture importer will import VRAM-compressed "
+"textures using the PowerVR Texture Compression algorithm. This texture "
+"compression algorithm is only supported on iOS.\n"
+"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
+"already imported before. To make this setting apply to textures that were "
+"already imported, exit the editor, remove the [code].import/[/code] folder "
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1473
+msgid ""
+"If [code]true[/code], the texture importer will import VRAM-compressed "
+"textures using the S3 Texture Compression algorithm. This algorithm is only "
+"supported on desktop platforms and consoles.\n"
+"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
+"already imported before. To make this setting apply to textures that were "
+"already imported, exit the editor, remove the [code].import/[/code] folder "
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1477
+msgid ""
+"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
+"pixels)."
+msgstr ""
+
+#: doc/classes/ProximityGroup.xml:4 doc/classes/ProximityGroup.xml:7
+msgid "General-purpose proximity detection node."
+msgstr ""
+
+#: doc/classes/QuadMesh.xml:4
+msgid "Class representing a square mesh."
+msgstr ""
+
+#: doc/classes/QuadMesh.xml:7
+msgid ""
+"Class representing a square [PrimitiveMesh]. This flat mesh does not have a "
+"thickness. By default, this mesh is aligned on the X and Y axes; this "
+"default rotation is more suited for use with billboarded materials. Unlike "
+"[PlaneMesh], this mesh doesn't provide subdivision options."
+msgstr ""
+
+#: doc/classes/QuadMesh.xml:11 doc/classes/Viewport.xml:19
+#: doc/classes/ViewportTexture.xml:13
+msgid "https://godotengine.org/asset-library/asset/129"
+msgstr ""
+
+#: doc/classes/QuadMesh.xml:17
+msgid "Offset of the generated Quad. Useful for particles."
+msgstr ""
+
+#: doc/classes/QuadMesh.xml:20
+msgid "Size on the X and Y axes."
+msgstr ""
+
+#: doc/classes/Quat.xml:4
+msgid "Quaternion."
+msgstr ""
+
+#: doc/classes/Quat.xml:7
+msgid ""
+"A unit quaternion used for representing 3D rotations. Quaternions need to be "
+"normalized to be used for rotation.\n"
+"It is similar to Basis, which implements matrix representation of rotations, "
+"and can be parametrized using both an axis-angle pair or Euler angles. Basis "
+"stores rotation, scale, and shearing, while Quat only stores rotation.\n"
+"Due to its compactness and the way it is stored in memory, certain "
+"operations (obtaining axis-angle and performing SLERP, in particular) are "
+"more efficient and robust against floating-point errors."
+msgstr ""
+
+#: doc/classes/Quat.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/3d/using_transforms."
+"html#interpolating-with-quaternions"
+msgstr ""
+
+#: doc/classes/Quat.xml:20
+msgid "Constructs a quaternion from the given [Basis]."
+msgstr ""
+
+#: doc/classes/Quat.xml:27
+msgid ""
+"Constructs a quaternion that will perform a rotation specified by Euler "
+"angles (in the YXZ convention: when decomposing, first Z, then X, and Y "
+"last), given in the vector format as (X angle, Y angle, Z angle)."
+msgstr ""
+
+#: doc/classes/Quat.xml:35
+msgid ""
+"Constructs a quaternion that will rotate around the given axis by the "
+"specified angle. The axis must be a normalized vector."
+msgstr ""
+
+#: doc/classes/Quat.xml:45
+msgid "Constructs a quaternion defined by the given values."
+msgstr ""
+
+#: doc/classes/Quat.xml:52
+msgid ""
+"Returns the angle between this quaternion and [code]to[/code]. This is the "
+"magnitude of the angle you would need to rotate by to get from one to the "
+"other.\n"
+"[b]Note:[/b] This method has an abnormally high amount of floating-point "
+"error, so methods such as [method @GDScript.is_zero_approx] will not work "
+"reliably."
+msgstr ""
+
+#: doc/classes/Quat.xml:63
+msgid ""
+"Performs a cubic spherical interpolation between quaternions [code]pre_a[/"
+"code], this vector, [code]b[/code], and [code]post_b[/code], by the given "
+"amount [code]weight[/code]."
+msgstr ""
+
+#: doc/classes/Quat.xml:70
+msgid "Returns the dot product of two quaternions."
+msgstr ""
+
+#: doc/classes/Quat.xml:76
+msgid ""
+"Returns Euler angles (in the YXZ convention: when decomposing, first Z, then "
+"X, and Y last) corresponding to the rotation represented by the unit "
+"quaternion. Returned vector contains the rotation angles in the format (X "
+"angle, Y angle, Z angle)."
+msgstr ""
+
+#: doc/classes/Quat.xml:82
+msgid "Returns the inverse of the quaternion."
+msgstr ""
+
+#: doc/classes/Quat.xml:89
+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 ""
+
+#: doc/classes/Quat.xml:95
+msgid "Returns whether the quaternion is normalized or not."
+msgstr ""
+
+#: doc/classes/Quat.xml:101
+msgid "Returns the length of the quaternion."
+msgstr ""
+
+#: doc/classes/Quat.xml:107
+msgid "Returns the length of the quaternion, squared."
+msgstr ""
+
+#: doc/classes/Quat.xml:113
+msgid "Returns a copy of the quaternion, normalized to unit length."
+msgstr ""
+
+#: doc/classes/Quat.xml:120
+msgid ""
+"Sets the quaternion to a rotation which rotates around axis by the specified "
+"angle, in radians. The axis must be a normalized vector."
+msgstr ""
+
+#: doc/classes/Quat.xml:126
+msgid ""
+"Sets the quaternion to a rotation specified by Euler angles (in the YXZ "
+"convention: when decomposing, first Z, then X, and Y last), given in the "
+"vector format as (X angle, Y angle, Z angle)."
+msgstr ""
+
+#: doc/classes/Quat.xml:134
+msgid ""
+"Returns the result of the spherical linear interpolation between this "
+"quaternion and [code]to[/code] by amount [code]weight[/code].\n"
+"[b]Note:[/b] Both quaternions must be normalized."
+msgstr ""
+
+#: doc/classes/Quat.xml:143
+msgid ""
+"Returns the result of the spherical linear interpolation between this "
+"quaternion and [code]to[/code] by amount [code]weight[/code], but without "
+"checking if the rotation path is not bigger than 90 degrees."
+msgstr ""
+
+#: doc/classes/Quat.xml:150
+msgid "Returns a vector transformed (multiplied) by this quaternion."
+msgstr ""
+
+#: doc/classes/Quat.xml:156
+msgid ""
+"W component of the quaternion (real part).\n"
+"Quaternion components should usually not be manipulated directly."
+msgstr ""
+
+#: doc/classes/Quat.xml:160
+msgid ""
+"X component of the quaternion (imaginary [code]i[/code] axis part).\n"
+"Quaternion components should usually not be manipulated directly."
+msgstr ""
+
+#: doc/classes/Quat.xml:164
+msgid ""
+"Y component of the quaternion (imaginary [code]j[/code] axis part).\n"
+"Quaternion components should usually not be manipulated directly."
+msgstr ""
+
+#: doc/classes/Quat.xml:168
+msgid ""
+"Z component of the quaternion (imaginary [code]k[/code] axis part).\n"
+"Quaternion components should usually not be manipulated directly."
+msgstr ""
+
+#: doc/classes/Quat.xml:174
+msgid ""
+"The identity quaternion, representing no rotation. Equivalent to an identity "
+"[Basis] matrix. If a vector is transformed by an identity quaternion, it "
+"will not change."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:4
+msgid "A class for generating pseudo-random numbers."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:7
+msgid ""
+"RandomNumberGenerator is a class for generating pseudo-random numbers. It "
+"currently uses [url=http://www.pcg-random.org/]PCG32[/url].\n"
+"[b]Note:[/b] The underlying algorithm is an implementation detail. As a "
+"result, it should not be depended upon for reproducible random streams "
+"across Godot versions.\n"
+"To generate a random float number (within a given range) based on a time-"
+"dependant seed:\n"
+"[codeblock]\n"
+"var rng = RandomNumberGenerator.new()\n"
+"func _ready():\n"
+" rng.randomize()\n"
+" var my_random_number = rng.randf_range(-10.0, 10.0)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] The default values of [member seed] and [member state] "
+"properties are pseudo-random, and changes when calling [method randomize]. "
+"The [code]0[/code] value documented here is a placeholder, and not the "
+"actual default seed."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:19
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/math/random_number_generation."
+"html"
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:25
+msgid ""
+"Generates a pseudo-random float between [code]0.0[/code] and [code]1.0[/"
+"code] (inclusive)."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:33
+msgid ""
+"Generates a pseudo-random float between [code]from[/code] and [code]to[/"
+"code] (inclusive)."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:41
+msgid ""
+"Generates a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-"
+"distributed[/url] pseudo-random number, using Box-Muller transform with the "
+"specified [code]mean[/code] and a standard [code]deviation[/code]. This is "
+"also called Gaussian distribution."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:47
+msgid ""
+"Generates a pseudo-random 32-bit unsigned integer between [code]0[/code] and "
+"[code]4294967295[/code] (inclusive)."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:55
+msgid ""
+"Generates a pseudo-random 32-bit signed integer between [code]from[/code] "
+"and [code]to[/code] (inclusive)."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:61
+msgid "Setups a time-based seed to generator."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:67
+msgid ""
+"Initializes the random number generator state based on the given seed value. "
+"A given seed will give a reproducible sequence of pseudo-random numbers.\n"
+"[b]Note:[/b] The RNG does not have an avalanche effect, and can output "
+"similar random streams given similar seeds. Consider using a hash function "
+"to improve your seed quality if they're sourced externally.\n"
+"[b]Note:[/b] Setting this property produces a side effect of changing the "
+"internal [member state], so make sure to initialize the seed [i]before[/i] "
+"modifying the [member state]:\n"
+"[codeblock]\n"
+"var rng = RandomNumberGenerator.new()\n"
+"rng.seed = hash(\"Godot\")\n"
+"rng.state = 100 # Restore to some previously saved state.\n"
+"[/codeblock]\n"
+"[b]Warning:[/b] the getter of this property returns the previous [member "
+"state], and not the initial seed value, which is going to be fixed in Godot "
+"4.0."
+msgstr ""
+
+#: doc/classes/RandomNumberGenerator.xml:78
+msgid ""
+"The current state of the random number generator. Save and restore this "
+"property to restore the generator to a previous state:\n"
+"[codeblock]\n"
+"var rng = RandomNumberGenerator.new()\n"
+"print(rng.randf())\n"
+"var saved_state = rng.state # Store current state.\n"
+"print(rng.randf()) # Advance internal state.\n"
+"rng.state = saved_state # Restore the state.\n"
+"print(rng.randf()) # Prints the same value as in previous.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Do not set state to arbitrary values, since the random number "
+"generator requires the state to have certain qualities to behave properly. "
+"It should only be set to values that came from the state property itself. To "
+"initialize the random number generator with arbitrary input, use [member "
+"seed] instead."
+msgstr ""
+
+#: doc/classes/Range.xml:4
+msgid "Abstract base class for range-based controls."
+msgstr ""
+
+#: doc/classes/Range.xml:7
+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]."
+msgstr ""
+
+#: doc/classes/Range.xml:16
+msgid ""
+"Binds two ranges together along with any ranges previously grouped with "
+"either of them. When any of range's member variables change, it will share "
+"the new value with all other ranges in its group."
+msgstr ""
+
+#: doc/classes/Range.xml:22
+msgid "Stops range from sharing its member variables with any other."
+msgstr ""
+
+#: doc/classes/Range.xml:28
+msgid ""
+"If [code]true[/code], [member value] may be greater than [member max_value]."
+msgstr ""
+
+#: doc/classes/Range.xml:31
+msgid ""
+"If [code]true[/code], [member value] may be less than [member min_value]."
+msgstr ""
+
+#: doc/classes/Range.xml:34
+msgid ""
+"If [code]true[/code], and [code]min_value[/code] is greater than 0, "
+"[code]value[/code] will be represented exponentially rather than linearly."
+msgstr ""
+
+#: doc/classes/Range.xml:37
+msgid ""
+"Maximum value. Range is clamped if [code]value[/code] is greater than "
+"[code]max_value[/code]."
+msgstr ""
+
+#: doc/classes/Range.xml:40
+msgid ""
+"Minimum value. Range is clamped if [code]value[/code] is less than "
+"[code]min_value[/code]."
+msgstr ""
+
+#: doc/classes/Range.xml:43
+msgid ""
+"Page size. Used mainly for [ScrollBar]. ScrollBar's length is its size "
+"multiplied by [code]page[/code] over the difference between [code]min_value[/"
+"code] and [code]max_value[/code]."
+msgstr ""
+
+#: doc/classes/Range.xml:46
+msgid "The value mapped between 0 and 1."
+msgstr ""
+
+#: doc/classes/Range.xml:49
+msgid ""
+"If [code]true[/code], [code]value[/code] will always be rounded to the "
+"nearest integer."
+msgstr ""
+
+#: doc/classes/Range.xml:52
+msgid ""
+"If greater than 0, [code]value[/code] will always be rounded to a multiple "
+"of [code]step[/code]. If [code]rounded[/code] is also [code]true[/code], "
+"[code]value[/code] will first be rounded to a multiple of [code]step[/code] "
+"then rounded to the nearest integer."
+msgstr ""
+
+#: doc/classes/Range.xml:55
+msgid "Range's current value."
+msgstr ""
+
+#: doc/classes/Range.xml:61
+msgid ""
+"Emitted when [member min_value], [member max_value], [member page], or "
+"[member step] change."
+msgstr ""
+
+#: doc/classes/Range.xml:67
+msgid "Emitted when [member value] changes."
+msgstr ""
+
+#: doc/classes/RayCast.xml:4 doc/classes/RayCast2D.xml:4
+msgid "Query the closest object intersecting a ray."
+msgstr ""
+
+#: doc/classes/RayCast.xml:7
+msgid ""
+"A RayCast represents a line from its origin to its destination position, "
+"[code]cast_to[/code]. It is used to query the 3D space in order to find the "
+"closest object along the path of the ray.\n"
+"RayCast can ignore some objects by adding them to the exception list via "
+"[code]add_exception[/code] or by setting proper filtering with collision "
+"layers and masks.\n"
+"RayCast can be configured to report collisions with [Area]s ([member "
+"collide_with_areas]) and/or [PhysicsBody]s ([member collide_with_bodies]).\n"
+"Only enabled raycasts will be able to query the space and report "
+"collisions.\n"
+"RayCast calculates intersection every physics frame (see [Node]), and the "
+"result is cached so it can be used later until the next frame. If multiple "
+"queries are required between physics frames (or during the same frame), use "
+"[method force_raycast_update] after adjusting the raycast."
+msgstr ""
+
+#: doc/classes/RayCast.xml:22 doc/classes/RayCast2D.xml:21
+msgid ""
+"Adds a collision exception so the ray does not report collisions with the "
+"specified node."
+msgstr ""
+
+#: doc/classes/RayCast.xml:29 doc/classes/RayCast2D.xml:28
+msgid ""
+"Adds a collision exception so the ray does not report collisions with the "
+"specified [RID]."
+msgstr ""
+
+#: doc/classes/RayCast.xml:35 doc/classes/RayCast2D.xml:34
+msgid "Removes all collision exceptions for this ray."
+msgstr ""
+
+#: doc/classes/RayCast.xml:41
+msgid ""
+"Updates the collision information for the ray.\n"
+"Use this method to update the collision information immediately instead of "
+"waiting for the next [code]_physics_process[/code] call, for example if the "
+"ray or its parent has changed state.\n"
+"[b]Note:[/b] [code]enabled[/code] is not required for this to work."
+msgstr ""
+
+#: doc/classes/RayCast.xml:49 doc/classes/RayCast2D.xml:47
+msgid ""
+"Returns the first object that the ray intersects, or [code]null[/code] if no "
+"object is intersecting the ray (i.e. [method is_colliding] returns "
+"[code]false[/code])."
+msgstr ""
+
+#: doc/classes/RayCast.xml:55 doc/classes/RayCast2D.xml:53
+msgid ""
+"Returns the shape ID of the first object that the ray intersects, or "
+"[code]0[/code] if no object is intersecting the ray (i.e. [method "
+"is_colliding] returns [code]false[/code])."
+msgstr ""
+
+#: doc/classes/RayCast.xml:62
+msgid ""
+"Returns [code]true[/code] if the bit index passed is turned on.\n"
+"[b]Note:[/b] Bit indices range from 0-19."
+msgstr ""
+
+#: doc/classes/RayCast.xml:69 doc/classes/RayCast2D.xml:66
+msgid ""
+"Returns the normal of the intersecting object's shape at the collision point."
+msgstr ""
+
+#: doc/classes/RayCast.xml:75 doc/classes/RayCast2D.xml:72
+msgid ""
+"Returns the collision point at which the ray intersects the closest object.\n"
+"[b]Note:[/b] This point is in the [b]global[/b] coordinate system."
+msgstr ""
+
+#: doc/classes/RayCast.xml:82 doc/classes/RayCast2D.xml:79
+msgid ""
+"Returns whether any object is intersecting with the ray's vector "
+"(considering the vector length)."
+msgstr ""
+
+#: doc/classes/RayCast.xml:89 doc/classes/RayCast2D.xml:86
+msgid ""
+"Removes a collision exception so the ray does report collisions with the "
+"specified node."
+msgstr ""
+
+#: doc/classes/RayCast.xml:96 doc/classes/RayCast2D.xml:93
+msgid ""
+"Removes a collision exception so the ray does report collisions with the "
+"specified [RID]."
+msgstr ""
+
+#: doc/classes/RayCast.xml:104
+msgid ""
+"Sets the bit index passed to the [code]value[/code] passed.\n"
+"[b]Note:[/b] Bit indexes range from 0-19."
+msgstr ""
+
+#: doc/classes/RayCast.xml:111 doc/classes/RayCast2D.xml:107
+msgid ""
+"The ray's destination point, relative to the RayCast's [code]position[/code]."
+msgstr ""
+
+#: doc/classes/RayCast.xml:114
+msgid "If [code]true[/code], collision with [Area]s will be reported."
+msgstr ""
+
+#: doc/classes/RayCast.xml:117
+msgid "If [code]true[/code], collision with [PhysicsBody]s will be reported."
+msgstr ""
+
+#: doc/classes/RayCast.xml:120 doc/classes/RayCast2D.xml:116
+msgid ""
+"The ray's collision mask. Only objects in at least one collision layer "
+"enabled in the mask will be detected. See [url=https://docs.godotengine.org/"
+"en/3.4/tutorials/physics/physics_introduction.html#collision-layers-and-"
+"masks]Collision layers and masks[/url] in the documentation for more "
+"information."
+msgstr ""
+
+#: doc/classes/RayCast.xml:123
+msgid ""
+"The custom color to use to draw the shape in the editor and at run-time if "
+"[b]Visible Collision Shapes[/b] is enabled in the [b]Debug[/b] menu. This "
+"color will be highlighted at run-time if the [RayCast] is colliding with "
+"something.\n"
+"If set to [code]Color(0.0, 0.0, 0.0)[/code] (by default), the color set in "
+"[member ProjectSettings.debug/shapes/collision/shape_color] is used."
+msgstr ""
+
+#: doc/classes/RayCast.xml:127
+msgid ""
+"If set to [code]1[/code], a line is used as the debug shape. Otherwise, a "
+"truncated pyramid is drawn to represent the [RayCast]. Requires [b]Visible "
+"Collision Shapes[/b] to be enabled in the [b]Debug[/b] menu for the debug "
+"shape to be visible at run-time."
+msgstr ""
+
+#: doc/classes/RayCast.xml:130 doc/classes/RayCast2D.xml:119
+msgid "If [code]true[/code], collisions will be reported."
+msgstr ""
+
+#: doc/classes/RayCast.xml:133
+msgid ""
+"If [code]true[/code], collisions will be ignored for this RayCast's "
+"immediate parent."
+msgstr ""
+
+#: doc/classes/RayCast2D.xml:7
+msgid ""
+"A RayCast represents a line from its origin to its destination position, "
+"[code]cast_to[/code]. It is used to query the 2D space in order to find the "
+"closest object along the path of the ray.\n"
+"RayCast2D can ignore some objects by adding them to the exception list via "
+"[code]add_exception[/code], by setting proper filtering with collision "
+"layers, or by filtering object types with type masks.\n"
+"RayCast2D can be configured to report collisions with [Area2D]s ([member "
+"collide_with_areas]) and/or [PhysicsBody2D]s ([member "
+"collide_with_bodies]).\n"
+"Only enabled raycasts will be able to query the space and report "
+"collisions.\n"
+"RayCast2D calculates intersection every physics frame (see [Node]), and the "
+"result is cached so it can be used later until the next frame. If multiple "
+"queries are required between physics frames (or during the same frame) use "
+"[method force_raycast_update] after adjusting the raycast."
+msgstr ""
+
+#: doc/classes/RayCast2D.xml:40
+msgid ""
+"Updates the collision information for the ray. Use this method to update the "
+"collision information immediately instead of waiting for the next "
+"[code]_physics_process[/code] call, for example if the ray or its parent has "
+"changed state.\n"
+"[b]Note:[/b] [code]enabled[/code] is not required for this to work."
+msgstr ""
+
+#: doc/classes/RayCast2D.xml:101
+msgid ""
+"Sets or clears individual bits on the collision mask. This makes selecting "
+"the areas scanned easier."
+msgstr ""
+
+#: doc/classes/RayCast2D.xml:110
+msgid "If [code]true[/code], collision with [Area2D]s will be reported."
+msgstr ""
+
+#: doc/classes/RayCast2D.xml:113
+msgid "If [code]true[/code], collision with [PhysicsBody2D]s will be reported."
+msgstr ""
+
+#: doc/classes/RayCast2D.xml:122
+msgid ""
+"If [code]true[/code], the parent node will be excluded from collision "
+"detection."
+msgstr ""
+
+#: doc/classes/RayShape.xml:4
+msgid "Ray shape for 3D collisions."
+msgstr ""
+
+#: doc/classes/RayShape.xml:7
+msgid ""
+"Ray shape for 3D collisions, which can be set into a [PhysicsBody] or "
+"[Area]. A ray is not really a collision body; instead, it tries to separate "
+"itself from whatever is touching its far endpoint. It's often useful for "
+"characters."
+msgstr ""
+
+#: doc/classes/RayShape.xml:15 doc/classes/RayShape2D.xml:15
+msgid "The ray's length."
+msgstr ""
+
+#: doc/classes/RayShape.xml:18 doc/classes/RayShape2D.xml:18
+msgid "If [code]true[/code], allow the shape to return the correct normal."
+msgstr ""
+
+#: doc/classes/RayShape2D.xml:4
+msgid "Ray shape for 2D collisions."
+msgstr ""
+
+#: doc/classes/RayShape2D.xml:7
+msgid ""
+"Ray shape for 2D collisions. A ray is not really a collision body; instead, "
+"it tries to separate itself from whatever is touching its far endpoint. It's "
+"often useful for characters."
+msgstr ""
+
+#: doc/classes/Rect2.xml:4
+msgid "2D axis-aligned bounding box."
+msgstr ""
+
+#: doc/classes/Rect2.xml:7
+msgid ""
+"[Rect2] consists of a position, a size, and several utility functions. It is "
+"typically used for fast overlap tests.\n"
+"It uses floating-point coordinates.\n"
+"The 3D counterpart to [Rect2] is [AABB]."
+msgstr ""
+
+#: doc/classes/Rect2.xml:22
+msgid "Constructs a [Rect2] by position and size."
+msgstr ""
+
+#: doc/classes/Rect2.xml:32
+msgid "Constructs a [Rect2] by x, y, width, and height."
+msgstr ""
+
+#: doc/classes/Rect2.xml:38
+msgid ""
+"Returns a [Rect2] with equivalent position and area, modified so that the "
+"top-left corner is the origin and [code]width[/code] and [code]height[/code] "
+"are positive."
+msgstr ""
+
+#: doc/classes/Rect2.xml:45
+msgid "Returns the intersection of this [Rect2] and b."
+msgstr ""
+
+#: doc/classes/Rect2.xml:52
+msgid ""
+"Returns [code]true[/code] if this [Rect2] completely encloses another one."
+msgstr ""
+
+#: doc/classes/Rect2.xml:59
+msgid "Returns this [Rect2] expanded to include a given point."
+msgstr ""
+
+#: doc/classes/Rect2.xml:65
+msgid "Returns the area of the [Rect2]."
+msgstr ""
+
+#: doc/classes/Rect2.xml:72
+msgid ""
+"Returns a copy of the [Rect2] grown a given amount of units towards all the "
+"sides."
+msgstr ""
+
+#: doc/classes/Rect2.xml:82
+msgid ""
+"Returns a copy of the [Rect2] grown a given amount of units towards each "
+"direction individually."
+msgstr ""
+
+#: doc/classes/Rect2.xml:90
+msgid ""
+"Returns a copy of the [Rect2] grown a given amount of units towards the "
+"[enum Margin] direction."
+msgstr ""
+
+#: doc/classes/Rect2.xml:96
+msgid "Returns [code]true[/code] if the [Rect2] is flat or empty."
+msgstr ""
+
+#: doc/classes/Rect2.xml:103
+msgid "Returns [code]true[/code] if the [Rect2] contains a point."
+msgstr ""
+
+#: doc/classes/Rect2.xml:111
+msgid ""
+"Returns [code]true[/code] if the [Rect2] overlaps with [code]b[/code] (i.e. "
+"they have at least one point in common).\n"
+"If [code]include_borders[/code] is [code]true[/code], they will also be "
+"considered overlapping if their borders touch, even without intersection."
+msgstr ""
+
+#: doc/classes/Rect2.xml:119
+msgid ""
+"Returns [code]true[/code] if this [Rect2] and [code]rect[/code] are "
+"approximately equal, by calling [code]is_equal_approx[/code] on each "
+"component."
+msgstr ""
+
+#: doc/classes/Rect2.xml:126
+msgid "Returns a larger [Rect2] that contains this [Rect2] and [code]b[/code]."
+msgstr ""
+
+#: doc/classes/RectangleShape2D.xml:4
+msgid "Rectangle shape for 2D collisions."
+msgstr ""
+
+#: doc/classes/RectangleShape2D.xml:7
+msgid ""
+"Rectangle shape for 2D collisions. This shape is useful for modeling box-"
+"like 2D objects."
+msgstr ""
+
+#: doc/classes/RectangleShape2D.xml:17
+msgid ""
+"The rectangle's half extents. The width and height of this shape is twice "
+"the half extents."
+msgstr ""
+
+#: doc/classes/Reference.xml:4
+msgid "Base class for reference-counted objects."
+msgstr ""
+
+#: doc/classes/Reference.xml:7
+msgid ""
+"Base class for any object that keeps a reference count. [Resource] and many "
+"other helper objects inherit this class.\n"
+"Unlike other [Object] types, References keep an internal reference counter "
+"so that they are automatically released when no longer in use, and only "
+"then. References therefore do not need to be freed manually with [method "
+"Object.free].\n"
+"In the vast majority of use cases, instantiating and using [Reference]-"
+"derived types is all you need to do. The methods provided in this class are "
+"only for advanced users, and can cause issues if misused.\n"
+"[b]Note:[/b] In C#, references will not be freed instantly after they are no "
+"longer in use. Instead, garbage collection will run periodically and will "
+"free references that are no longer in use. This means that unused references "
+"will linger on for a while before being removed."
+msgstr ""
+
+#: doc/classes/Reference.xml:19
+msgid ""
+"Initializes the internal reference counter. Use this only if you really know "
+"what you are doing.\n"
+"Returns whether the initialization was successful."
+msgstr ""
+
+#: doc/classes/Reference.xml:26
+msgid ""
+"Increments the internal reference counter. Use this only if you really know "
+"what you are doing.\n"
+"Returns [code]true[/code] if the increment was successful, [code]false[/"
+"code] otherwise."
+msgstr ""
+
+#: doc/classes/Reference.xml:33
+msgid ""
+"Decrements the internal reference counter. Use this only if you really know "
+"what you are doing.\n"
+"Returns [code]true[/code] if the decrement was successful, [code]false[/"
+"code] otherwise."
+msgstr ""
+
+#: doc/classes/ReferenceRect.xml:4
+msgid "Reference frame for GUI."
+msgstr ""
+
+#: doc/classes/ReferenceRect.xml:7
+msgid ""
+"A rectangle box that displays only a [member border_color] border color "
+"around its rectangle. [ReferenceRect] has no fill [Color]. If you need to "
+"display a rectangle filled with a solid color, consider using [ColorRect] "
+"instead."
+msgstr ""
+
+#: doc/classes/ReferenceRect.xml:15
+msgid "Sets the border [Color] of the [ReferenceRect]."
+msgstr ""
+
+#: doc/classes/ReferenceRect.xml:18
+msgid ""
+"Sets the border width of the [ReferenceRect]. The border grows both inwards "
+"and outwards with respect to the rectangle box."
+msgstr ""
+
+#: doc/classes/ReferenceRect.xml:21
+msgid ""
+"If set to [code]true[/code], the [ReferenceRect] will only be visible while "
+"in editor. Otherwise, [ReferenceRect] will be visible in game."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:4
+msgid "Captures its surroundings to create reflections."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:7
+msgid ""
+"Capture its surroundings as a dual paraboloid image, and stores versions of "
+"it with increasing levels of blur to simulate different material "
+"roughnesses.\n"
+"The [ReflectionProbe] is used to create high-quality reflections at the cost "
+"of performance. It can be combined with [GIProbe]s and Screen Space "
+"Reflections to achieve high quality reflections. [ReflectionProbe]s render "
+"all objects within their [member cull_mask], so updating them can be quite "
+"expensive. It is best to update them once with the important static objects "
+"and then leave them.\n"
+"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
+"need more, increase the number of atlas subdivisions. This setting can be "
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:13
+msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:19
+msgid ""
+"If [code]true[/code], enables box projection. This makes reflections look "
+"more correct in rectangle-shaped rooms by offsetting the reflection center "
+"depending on the camera's location."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:22
+msgid ""
+"Sets the cull mask which determines what objects are drawn by this probe. "
+"Every [VisualInstance] with a layer included in this cull mask will be "
+"rendered by the probe. It is best to only include large objects which are "
+"likely to take up a lot of space in the reflection in order to save on "
+"rendering cost."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:25
+msgid ""
+"If [code]true[/code], computes shadows in the reflection probe. This makes "
+"the reflection probe slower to render; you may want to disable this if using "
+"the [constant UPDATE_ALWAYS] [member update_mode]."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:28
+msgid ""
+"The size of the reflection probe. The larger the extents the more space "
+"covered by the probe which will lower the perceived resolution. It is best "
+"to keep the extents only as large as you need them."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:31
+msgid ""
+"Defines the reflection intensity. Intensity modulates the strength of the "
+"reflection."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:34
+msgid ""
+"Sets the ambient light color to be used when this probe is set to [member "
+"interior_enable]."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:37
+msgid ""
+"Sets the contribution value for how much the reflection affects the ambient "
+"light for this reflection probe when set to [member interior_enable]. Useful "
+"so that ambient light matches the color of the room."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:40
+msgid ""
+"Sets the energy multiplier for this reflection probe's ambient light "
+"contribution when set to [member interior_enable]."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:43
+msgid ""
+"If [code]true[/code], reflections will ignore sky contribution. Ambient "
+"lighting is then controlled by the [code]interior_ambient_*[/code] "
+"properties."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:46
+msgid ""
+"Sets the max distance away from the probe an object can be before it is "
+"culled."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:49
+msgid ""
+"Sets the origin offset to be used when this reflection probe is in box "
+"project mode."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:52
+msgid ""
+"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
+"[constant UPDATE_ALWAYS]."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:57
+msgid "Update the probe once on the next frame."
+msgstr ""
+
+#: doc/classes/ReflectionProbe.xml:60
+msgid ""
+"Update the probe every frame. This is needed when you want to capture "
+"dynamic objects. However, it results in an increased render time. Use "
+"[constant UPDATE_ONCE] whenever possible."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:4
+msgid "Class for searching text for patterns using regular expressions."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:7
+msgid ""
+"A regular expression (or regex) is a compact language that can be used to "
+"recognise strings that follow a specific pattern, such as URLs, email "
+"addresses, complete sentences, etc. For instance, a regex of [code]ab[0-9][/"
+"code] would find any string that is [code]ab[/code] followed by any number "
+"from [code]0[/code] to [code]9[/code]. For a more in-depth look, you can "
+"easily find various tutorials and detailed explanations on the Internet.\n"
+"To begin, the RegEx object needs to be compiled with the search pattern "
+"using [method compile] before it can be used.\n"
+"[codeblock]\n"
+"var regex = RegEx.new()\n"
+"regex.compile(\"\\\\w-(\\\\d+)\")\n"
+"[/codeblock]\n"
+"The search pattern must be escaped first for GDScript before it is escaped "
+"for the expression. For example, [code]compile(\"\\\\d+\")[/code] would be "
+"read by RegEx as [code]\\d+[/code]. Similarly, [code]compile(\"\\\"(?:\\\\\\"
+"\\.|[^\\\"])*\\\"\")[/code] would be read as [code]\"(?:\\\\.|[^\"])*\"[/"
+"code].\n"
+"Using [method search], you can find the pattern within the given text. If a "
+"pattern is found, [RegExMatch] is returned and you can retrieve details of "
+"the results using methods such as [method RegExMatch.get_string] and [method "
+"RegExMatch.get_start].\n"
+"[codeblock]\n"
+"var regex = RegEx.new()\n"
+"regex.compile(\"\\\\w-(\\\\d+)\")\n"
+"var result = regex.search(\"abc n-0123\")\n"
+"if result:\n"
+" print(result.get_string()) # Would print n-0123\n"
+"[/codeblock]\n"
+"The results of capturing groups [code]()[/code] can be retrieved by passing "
+"the group number to the various methods in [RegExMatch]. Group 0 is the "
+"default and will always refer to the entire pattern. In the above example, "
+"calling [code]result.get_string(1)[/code] would give you [code]0123[/code].\n"
+"This version of RegEx also supports named capturing groups, and the names "
+"can be used to retrieve the results. If two or more groups have the same "
+"name, the name would only refer to the first one with a match.\n"
+"[codeblock]\n"
+"var regex = RegEx.new()\n"
+"regex.compile(\"d(?<digit>[0-9]+)|x(?<digit>[0-9a-f]+)\")\n"
+"var result = regex.search(\"the number is x2f\")\n"
+"if result:\n"
+" print(result.get_string(\"digit\")) # Would print 2f\n"
+"[/codeblock]\n"
+"If you need to process multiple results, [method search_all] generates a "
+"list of all non-overlapping results. This can be combined with a [code]for[/"
+"code] loop for convenience.\n"
+"[codeblock]\n"
+"for result in regex.search_all(\"d01, d03, d0c, x3f and x42\"):\n"
+" print(result.get_string(\"digit\"))\n"
+"# Would print 01 03 0 3f 42\n"
+"[/codeblock]\n"
+"[b]Example of splitting a string using a RegEx:[/b]\n"
+"[codeblock]\n"
+"var regex = RegEx.new()\n"
+"regex.compile(\"\\\\S+\") # Negated whitespace character class.\n"
+"var results = []\n"
+"for result in regex.search_all(\"One Two \\n\\tThree\"):\n"
+" results.push_back(result.get_string())\n"
+"# The `results` array now contains \"One\", \"Two\", \"Three\".\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Godot's regex implementation is based on the [url=https://www."
+"pcre.org/]PCRE2[/url] library. You can view the full pattern reference "
+"[url=https://www.pcre.org/current/doc/html/pcre2pattern.html]here[/url].\n"
+"[b]Tip:[/b] You can use [url=https://regexr.com/]Regexr[/url] to test "
+"regular expressions online."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:55
+msgid ""
+"This method resets the state of the object, as if it was freshly created. "
+"Namely, it unassigns the regular expression of this object."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:62
+msgid ""
+"Compiles and assign the search pattern to use. Returns [constant OK] if the "
+"compilation is successful. If an error is encountered, details are printed "
+"to standard output and an error is returned."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:68
+msgid "Returns the number of capturing groups in compiled pattern."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:74
+msgid ""
+"Returns an array of names of named capturing groups in the compiled pattern. "
+"They are ordered by appearance."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:80
+msgid "Returns the original search pattern that was compiled."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:86
+msgid "Returns whether this object has a valid search pattern assigned."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:95
+msgid ""
+"Searches the text for the compiled pattern. Returns a [RegExMatch] container "
+"of the first matching result if found, otherwise [code]null[/code]. The "
+"region to search within can be specified without modifying where the start "
+"and end anchor would be."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:104
+msgid ""
+"Searches the text for the compiled pattern. Returns an array of [RegExMatch] "
+"containers for each non-overlapping result. If no results were found, an "
+"empty array is returned instead. The region to search within can be "
+"specified without modifying where the start and end anchor would be."
+msgstr ""
+
+#: modules/regex/doc_classes/RegEx.xml:115
+msgid ""
+"Searches the text for the compiled pattern and replaces it with the "
+"specified string. Escapes and backreferences such as [code]$1[/code] and "
+"[code]$name[/code] are expanded and resolved. By default, only the first "
+"instance is replaced, but it can be changed for all instances (global "
+"replacement). The region to search within can be specified without modifying "
+"where the start and end anchor would be."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:4
+msgid "Contains the results of a [RegEx] search."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:7
+msgid ""
+"Contains the results of a single [RegEx] match returned by [method RegEx."
+"search] and [method RegEx.search_all]. It can be used to find the position "
+"and range of the match and its capturing groups, and it can extract its "
+"substring for you."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:16
+msgid ""
+"Returns the end position of the match within the source string. The end "
+"position of capturing groups can be retrieved by providing its group number "
+"as an integer or its string name (if it's a named group). The default value "
+"of 0 refers to the whole pattern.\n"
+"Returns -1 if the group did not match or doesn't exist."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:23
+msgid "Returns the number of capturing groups."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:30
+msgid ""
+"Returns the starting position of the match within the source string. The "
+"starting position of capturing groups can be retrieved by providing its "
+"group number as an integer or its string name (if it's a named group). The "
+"default value of 0 refers to the whole pattern.\n"
+"Returns -1 if the group did not match or doesn't exist."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:38
+msgid ""
+"Returns the substring of the match from the source string. Capturing groups "
+"can be retrieved by providing its group number as an integer or its string "
+"name (if it's a named group). The default value of 0 refers to the whole "
+"pattern.\n"
+"Returns an empty string if the group did not match or doesn't exist."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:45
+msgid ""
+"A dictionary of named groups and its corresponding group number. Only groups "
+"that were matched are included. If multiple groups have the same name, that "
+"name would refer to the first matching one."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:48
+msgid "An [Array] of the match and its capturing groups."
+msgstr ""
+
+#: modules/regex/doc_classes/RegExMatch.xml:51
+msgid ""
+"The source string used with the search pattern to find this matching result."
+msgstr ""
+
+#: doc/classes/RemoteTransform.xml:4
+msgid ""
+"RemoteTransform pushes its own [Transform] to another [Spatial] derived Node "
+"in the scene."
+msgstr ""
+
+#: doc/classes/RemoteTransform.xml:7
+msgid ""
+"RemoteTransform pushes its own [Transform] to another [Spatial] derived Node "
+"(called the remote node) in the scene.\n"
+"It can be set to update another Node's position, rotation and/or scale. It "
+"can use either global or local coordinates."
+msgstr ""
+
+#: doc/classes/RemoteTransform.xml:16
+msgid ""
+"[RemoteTransform] caches the remote node. It may not notice if the remote "
+"node disappears; [method force_update_cache] forces it to update the cache "
+"again."
+msgstr ""
+
+#: doc/classes/RemoteTransform.xml:22
+msgid ""
+"The [NodePath] to the remote node, relative to the RemoteTransform's "
+"position in the scene."
+msgstr ""
+
+#: doc/classes/RemoteTransform.xml:25 doc/classes/RemoteTransform2D.xml:25
+msgid "If [code]true[/code], the remote node's position is updated."
+msgstr ""
+
+#: doc/classes/RemoteTransform.xml:28 doc/classes/RemoteTransform2D.xml:28
+msgid "If [code]true[/code], the remote node's rotation is updated."
+msgstr ""
+
+#: doc/classes/RemoteTransform.xml:31 doc/classes/RemoteTransform2D.xml:31
+msgid "If [code]true[/code], the remote node's scale is updated."
+msgstr ""
+
+#: doc/classes/RemoteTransform.xml:34 doc/classes/RemoteTransform2D.xml:34
+msgid ""
+"If [code]true[/code], global coordinates are used. If [code]false[/code], "
+"local coordinates are used."
+msgstr ""
+
+#: doc/classes/RemoteTransform2D.xml:4
+msgid ""
+"RemoteTransform2D pushes its own [Transform2D] to another [CanvasItem] "
+"derived Node in the scene."
+msgstr ""
+
+#: doc/classes/RemoteTransform2D.xml:7
+msgid ""
+"RemoteTransform2D pushes its own [Transform2D] to another [CanvasItem] "
+"derived Node (called the remote node) in the scene.\n"
+"It can be set to update another Node's position, rotation and/or scale. It "
+"can use either global or local coordinates."
+msgstr ""
+
+#: doc/classes/RemoteTransform2D.xml:16
+msgid ""
+"[RemoteTransform2D] caches the remote node. It may not notice if the remote "
+"node disappears; [method force_update_cache] forces it to update the cache "
+"again."
+msgstr ""
+
+#: doc/classes/RemoteTransform2D.xml:22
+msgid ""
+"The [NodePath] to the remote node, relative to the RemoteTransform2D's "
+"position in the scene."
+msgstr ""
+
+#: doc/classes/Resource.xml:4
+msgid "Base class for all resources."
+msgstr ""
+
+#: doc/classes/Resource.xml:7
+msgid ""
+"Resource is the base class for all Godot-specific resource types, serving "
+"primarily as data containers. Since they inherit from [Reference], resources "
+"are reference-counted and freed when no longer in use. They are also cached "
+"once loaded from disk, so that any further attempts to load a resource from "
+"a given path will return the same reference (all this in contrast to a "
+"[Node], which is not reference-counted and can be instanced from disk as "
+"many times as desired). Resources can be saved externally on disk or bundled "
+"into another object, such as a [Node] or another resource.\n"
+"[b]Note:[/b] In C#, resources will not be freed instantly after they are no "
+"longer in use. Instead, garbage collection will run periodically and will "
+"free resources that are no longer in use. This means that unused resources "
+"will linger on for a while before being removed."
+msgstr ""
+
+#: doc/classes/Resource.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/resources."
+"html"
+msgstr ""
+
+#: doc/classes/Resource.xml:18
+msgid ""
+"Virtual function which can be overridden to customize the behavior value of "
+"[method setup_local_to_scene]."
+msgstr ""
+
+#: doc/classes/Resource.xml:25
+msgid ""
+"Duplicates the resource, returning a new resource with the exported members "
+"copied. [b]Note:[/b] To duplicate the resource the constructor is called "
+"without arguments. This method will error when the constructor doesn't have "
+"default values.\n"
+"By default, sub-resources are shared between resource copies for efficiency. "
+"This can be changed by passing [code]true[/code] to the [code]subresources[/"
+"code] argument which will copy the subresources.\n"
+"[b]Note:[/b] If [code]subresources[/code] is [code]true[/code], this method "
+"will only perform a shallow copy. Nested resources within subresources will "
+"not be duplicated and will still be shared.\n"
+"[b]Note:[/b] When duplicating a resource, only [code]export[/code]ed "
+"properties are copied. Other properties will be set to their default value "
+"in the new resource."
+msgstr ""
+
+#: doc/classes/Resource.xml:34
+msgid ""
+"Emits the [signal changed] signal.\n"
+"If external objects which depend on this resource should be updated, this "
+"method must be called manually whenever the state of this resource has "
+"changed (such as modification of properties).\n"
+"The method is equivalent to:\n"
+"[codeblock]\n"
+"emit_signal(\"changed\")\n"
+"[/codeblock]\n"
+"[b]Note:[/b] This method is called automatically for built-in resources."
+msgstr ""
+
+#: doc/classes/Resource.xml:46
+msgid ""
+"If [member resource_local_to_scene] is enabled and the resource was loaded "
+"from a [PackedScene] instantiation, returns the local scene where this "
+"resource's unique copy is in use. Otherwise, returns [code]null[/code]."
+msgstr ""
+
+#: doc/classes/Resource.xml:52
+msgid ""
+"Returns the RID of the resource (or an empty RID). Many resources (such as "
+"[Texture], [Mesh], etc) are high-level abstractions of resources stored in a "
+"server, so this function will return the original RID."
+msgstr ""
+
+#: doc/classes/Resource.xml:58
+msgid ""
+"This method is called when a resource with [member resource_local_to_scene] "
+"enabled is loaded from a [PackedScene] instantiation. Its behavior can be "
+"customized by overriding [method _setup_local_to_scene] from script.\n"
+"For most resources, this method performs no base logic. [ViewportTexture] "
+"performs custom logic to properly set the proxy texture and flags in the "
+"local viewport."
+msgstr ""
+
+#: doc/classes/Resource.xml:66
+msgid ""
+"Sets the path of the resource, potentially overriding an existing cache "
+"entry for this path. This differs from setting [member resource_path], as "
+"the latter would error out if another resource was already cached for the "
+"given path."
+msgstr ""
+
+#: doc/classes/Resource.xml:72
+msgid ""
+"If [code]true[/code], the resource will be made unique in each instance of "
+"its local scene. It can thus be modified in a scene instance without "
+"impacting other instances of that same scene."
+msgstr ""
+
+#: doc/classes/Resource.xml:75
+msgid ""
+"The name of the resource. This is an optional identifier. If [member "
+"resource_name] is not empty, its value will be displayed to represent the "
+"current resource in the editor inspector. For built-in scripts, the [member "
+"resource_name] will be displayed as the tab name in the script editor."
+msgstr ""
+
+#: doc/classes/Resource.xml:78
+msgid ""
+"The path to the resource. In case it has its own file, it will return its "
+"filepath. If it's tied to the scene, it will return the scene's path, "
+"followed by the resource's index."
+msgstr ""
+
+#: doc/classes/Resource.xml:84
+msgid ""
+"Emitted whenever the resource changes.\n"
+"[b]Note:[/b] This signal is not emitted automatically for custom resources, "
+"which means that you need to create a setter and emit the signal yourself."
+msgstr ""
+
+#: doc/classes/ResourceFormatLoader.xml:4
+msgid "Loads a specific resource type from a file."
+msgstr ""
+
+#: doc/classes/ResourceFormatLoader.xml:7
+msgid ""
+"Godot loads resources in the editor or in exported games using "
+"ResourceFormatLoaders. They are queried automatically via the "
+"[ResourceLoader] singleton, or when a resource with internal dependencies is "
+"loaded. Each file type may load as a different resource type, so multiple "
+"ResourceFormatLoaders are registered in the engine.\n"
+"Extending this class allows you to define your own loader. Be sure to "
+"respect the documented return types and values. You should give it a global "
+"class name with [code]class_name[/code] for it to be registered. Like built-"
+"in ResourceFormatLoaders, it will be called automatically when loading "
+"resources of its handled type(s). You may also implement a "
+"[ResourceFormatSaver].\n"
+"[b]Note:[/b] You can also extend [EditorImportPlugin] if the resource type "
+"you need exists but Godot is unable to load its format. Choosing one way "
+"over another depends on if the format is suitable or not for the final "
+"exported game. For example, it's better to import [code].png[/code] textures "
+"as [code].stex[/code] ([StreamTexture]) first, so they can be loaded with "
+"better efficiency on the graphics card."
+msgstr ""
+
+#: doc/classes/ResourceFormatLoader.xml:19
+msgid ""
+"If implemented, gets the dependencies of a given resource. If "
+"[code]add_types[/code] is [code]true[/code], paths should be appended "
+"[code]::TypeName[/code], where [code]TypeName[/code] is the class name of "
+"the dependency.\n"
+"[b]Note:[/b] Custom resource types defined by scripts aren't known by the "
+"[ClassDB], so you might just return [code]\"Resource\"[/code] for them."
+msgstr ""
+
+#: doc/classes/ResourceFormatLoader.xml:26
+msgid "Gets the list of extensions for files this loader is able to read."
+msgstr ""
+
+#: doc/classes/ResourceFormatLoader.xml:33
+msgid ""
+"Gets the class name of the resource associated with the given path. If the "
+"loader cannot handle it, it should return [code]\"\"[/code].\n"
+"[b]Note:[/b] Custom resource types defined by scripts aren't known by the "
+"[ClassDB], so you might just return [code]\"Resource\"[/code] for them."
+msgstr ""
+
+#: doc/classes/ResourceFormatLoader.xml:41
+msgid ""
+"Tells which resource class this loader can load.\n"
+"[b]Note:[/b] Custom resource types defined by scripts aren't known by the "
+"[ClassDB], so you might just handle [code]\"Resource\"[/code] for them."
+msgstr ""
+
+#: doc/classes/ResourceFormatLoader.xml:50
+msgid ""
+"Loads a resource when the engine finds this loader to be compatible. If the "
+"loaded resource is the result of an import, [code]original_path[/code] will "
+"target the source file. Returns a [Resource] object on success, or an [enum "
+"Error] constant in case of failure."
+msgstr ""
+
+#: doc/classes/ResourceFormatLoader.xml:58
+msgid ""
+"If implemented, renames dependencies within the given resource and saves it. "
+"[code]renames[/code] is a dictionary [code]{ String => String }[/code] "
+"mapping old dependency paths to new paths.\n"
+"Returns [constant OK] on success, or an [enum Error] constant in case of "
+"failure."
+msgstr ""
+
+#: doc/classes/ResourceFormatSaver.xml:4
+msgid "Saves a specific resource type to a file."
+msgstr ""
+
+#: doc/classes/ResourceFormatSaver.xml:7
+msgid ""
+"The engine can save resources when you do it from the editor, or when you "
+"use the [ResourceSaver] singleton. This is accomplished thanks to multiple "
+"[ResourceFormatSaver]s, each handling its own format and called "
+"automatically by the engine.\n"
+"By default, Godot saves resources as [code].tres[/code] (text-based), [code]."
+"res[/code] (binary) or another built-in format, but you can choose to create "
+"your own format by extending this class. Be sure to respect the documented "
+"return types and values. You should give it a global class name with "
+"[code]class_name[/code] for it to be registered. Like built-in "
+"ResourceFormatSavers, it will be called automatically when saving resources "
+"of its recognized type(s). You may also implement a [ResourceFormatLoader]."
+msgstr ""
+
+#: doc/classes/ResourceFormatSaver.xml:17
+msgid ""
+"Returns the list of extensions available for saving the resource object, "
+"provided it is recognized (see [method recognize])."
+msgstr ""
+
+#: doc/classes/ResourceFormatSaver.xml:24
+msgid "Returns whether the given resource object can be saved by this saver."
+msgstr ""
+
+#: doc/classes/ResourceFormatSaver.xml:33
+msgid ""
+"Saves the given resource object to a file at the target [code]path[/code]. "
+"[code]flags[/code] is a bitmask composed with [enum ResourceSaver."
+"SaverFlags] constants.\n"
+"Returns [constant OK] on success, or an [enum Error] constant in case of "
+"failure."
+msgstr ""
+
+#: doc/classes/ResourceImporter.xml:4
+msgid "Base class for the implementation of core resource importers."
+msgstr ""
+
+#: doc/classes/ResourceImporter.xml:7
+msgid ""
+"This is the base class for the resource importers implemented in core. To "
+"implement your own resource importers using editor plugins, see "
+"[EditorImportPlugin]."
+msgstr ""
+
+#: doc/classes/ResourceImporter.xml:16
+msgid "The default import order."
+msgstr ""
+
+#: doc/classes/ResourceImporter.xml:19
+msgid ""
+"The import order for scenes, which ensures scenes are imported [i]after[/i] "
+"all other core resources such as textures. Custom importers should generally "
+"have an import order lower than [code]100[/code] to avoid issues when "
+"importing scenes that rely on custom resources."
+msgstr ""
+
+#: doc/classes/ResourceInteractiveLoader.xml:4
+msgid "Interactive [Resource] loader."
+msgstr ""
+
+#: doc/classes/ResourceInteractiveLoader.xml:7
+msgid ""
+"Interactive [Resource] loader. This object is returned by [ResourceLoader] "
+"when performing an interactive load. It allows loading resources with high "
+"granularity, which makes it mainly useful for displaying loading bars or "
+"percentages."
+msgstr ""
+
+#: doc/classes/ResourceInteractiveLoader.xml:15
+msgid ""
+"Returns the loaded resource if the load operation completed successfully, "
+"[code]null[/code] otherwise."
+msgstr ""
+
+#: doc/classes/ResourceInteractiveLoader.xml:21
+msgid ""
+"Returns the load stage. The total amount of stages can be queried with "
+"[method get_stage_count]."
+msgstr ""
+
+#: doc/classes/ResourceInteractiveLoader.xml:27
+msgid ""
+"Returns the total amount of stages (calls to [method poll]) needed to "
+"completely load this resource."
+msgstr ""
+
+#: doc/classes/ResourceInteractiveLoader.xml:33
+msgid ""
+"Polls the loading operation, i.e. loads a data chunk up to the next stage.\n"
+"Returns [constant OK] if the poll is successful but the load operation has "
+"not finished yet (intermediate stage). This means [method poll] will have to "
+"be called again until the last stage is completed.\n"
+"Returns [constant ERR_FILE_EOF] if the load operation has completed "
+"successfully. The loaded resource can be obtained by calling [method "
+"get_resource].\n"
+"Returns another [enum Error] code if the poll has failed."
+msgstr ""
+
+#: doc/classes/ResourceInteractiveLoader.xml:42
+msgid ""
+"Polls the loading operation successively until the resource is completely "
+"loaded or a [method poll] fails.\n"
+"Returns [constant ERR_FILE_EOF] if the load operation has completed "
+"successfully. The loaded resource can be obtained by calling [method "
+"get_resource].\n"
+"Returns another [enum Error] code if a poll has failed, aborting the "
+"operation."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:4
+msgid "Singleton used to load resource files."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:7
+msgid ""
+"Singleton used to load resource files from the filesystem.\n"
+"It uses the many [ResourceFormatLoader] classes registered in the engine "
+"(either built-in or from a plugin) to load files into memory and convert "
+"them to a format that can be used by the engine."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:19
+msgid ""
+"Returns whether a recognized resource exists for the given [code]path[/"
+"code].\n"
+"An optional [code]type_hint[/code] can be used to further specify the "
+"[Resource] type that should be handled by the [ResourceFormatLoader]."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:27
+msgid ""
+"Returns the dependencies for the resource at the given [code]path[/code]."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:34
+msgid "Returns the list of recognized extensions for a resource type."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:41
+msgid ""
+"[i]Deprecated method.[/i] Use [method has_cached] or [method exists] instead."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:48
+msgid ""
+"Returns whether a cached resource is available for the given [code]path[/"
+"code].\n"
+"Once a resource has been loaded by the engine, it is cached in memory for "
+"faster access, and future calls to the [method load] or [method "
+"load_interactive] methods will use the cached version. The cached resource "
+"can be overridden by using [method Resource.take_over_path] on a new "
+"resource for that same path."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:58
+msgid ""
+"Loads a resource at the given [code]path[/code], caching the result for "
+"further access.\n"
+"The registered [ResourceFormatLoader]s are queried sequentially to find the "
+"first one which can handle the file's extension, and then attempt loading. "
+"If loading fails, the remaining ResourceFormatLoaders are also attempted.\n"
+"An optional [code]type_hint[/code] can be used to further specify the "
+"[Resource] type that should be handled by the [ResourceFormatLoader]. "
+"Anything that inherits from [Resource] can be used as a type hint, for "
+"example [Image].\n"
+"If [code]no_cache[/code] is [code]true[/code], the resource cache will be "
+"bypassed and the resource will be loaded anew. Otherwise, the cached "
+"resource will be returned if it exists.\n"
+"Returns an empty resource if no [ResourceFormatLoader] could handle the "
+"file.\n"
+"GDScript has a simplified [method @GDScript.load] built-in method which can "
+"be used in most situations, leaving the use of [ResourceLoader] for more "
+"advanced scenarios."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:71
+msgid ""
+"Starts loading a resource interactively. The returned "
+"[ResourceInteractiveLoader] object allows to load with high granularity, "
+"calling its [method ResourceInteractiveLoader.poll] method successively to "
+"load chunks.\n"
+"An optional [code]type_hint[/code] can be used to further specify the "
+"[Resource] type that should be handled by the [ResourceFormatLoader]. "
+"Anything that inherits from [Resource] can be used as a type hint, for "
+"example [Image]."
+msgstr ""
+
+#: doc/classes/ResourceLoader.xml:79
+msgid ""
+"Changes the behavior on missing sub-resources. The default behavior is to "
+"abort loading."
+msgstr ""
+
+#: doc/classes/ResourcePreloader.xml:4
+msgid "Resource Preloader Node."
+msgstr ""
+
+#: doc/classes/ResourcePreloader.xml:7
+msgid ""
+"This node is used to preload sub-resources inside a scene, so when the scene "
+"is loaded, all the resources are ready to use and can be retrieved from the "
+"preloader.\n"
+"GDScript has a simplified [method @GDScript.preload] built-in method which "
+"can be used in most situations, leaving the use of [ResourcePreloader] for "
+"more advanced scenarios."
+msgstr ""
+
+#: doc/classes/ResourcePreloader.xml:18
+msgid ""
+"Adds a resource to the preloader with the given [code]name[/code]. If a "
+"resource with the given [code]name[/code] already exists, the new resource "
+"will be renamed to \"[code]name[/code] N\" where N is an incrementing number "
+"starting from 2."
+msgstr ""
+
+#: doc/classes/ResourcePreloader.xml:25
+msgid "Returns the resource associated to [code]name[/code]."
+msgstr ""
+
+#: doc/classes/ResourcePreloader.xml:31
+msgid "Returns the list of resources inside the preloader."
+msgstr ""
+
+#: doc/classes/ResourcePreloader.xml:38
+msgid ""
+"Returns [code]true[/code] if the preloader contains a resource associated to "
+"[code]name[/code]."
+msgstr ""
+
+#: doc/classes/ResourcePreloader.xml:45
+msgid ""
+"Removes the resource associated to [code]name[/code] from the preloader."
+msgstr ""
+
+#: doc/classes/ResourcePreloader.xml:53
+msgid ""
+"Renames a resource inside the preloader from [code]name[/code] to "
+"[code]newname[/code]."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:4
+msgid "Singleton for saving Godot-specific resource types."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:7
+msgid ""
+"Singleton for saving Godot-specific resource types to the filesystem.\n"
+"It uses the many [ResourceFormatSaver] classes registered in the engine "
+"(either built-in or from a plugin) to save engine-specific resource data to "
+"text-based (e.g. [code].tres[/code] or [code].tscn[/code]) or binary files "
+"(e.g. [code].res[/code] or [code].scn[/code])."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:17
+msgid ""
+"Returns the list of extensions available for saving a resource of a given "
+"type."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:26
+msgid ""
+"Saves a resource to disk to the given path, using a [ResourceFormatSaver] "
+"that recognizes the resource object.\n"
+"The [code]flags[/code] bitmask can be specified to customize the save "
+"behavior.\n"
+"Returns [constant OK] on success."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:34
+msgid "Save the resource with a path relative to the scene which uses it."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:37
+msgid "Bundles external resources."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:40
+msgid ""
+"Changes the [member Resource.resource_path] of the saved resource to match "
+"its new location."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:43
+msgid ""
+"Do not save editor-specific metadata (identified by their [code]__editor[/"
+"code] prefix)."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:46
+msgid "Save as big endian (see [member File.endian_swap])."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:49
+msgid ""
+"Compress the resource on save using [constant File.COMPRESSION_ZSTD]. Only "
+"available for binary resource types."
+msgstr ""
+
+#: doc/classes/ResourceSaver.xml:52
+msgid ""
+"Take over the paths of the saved subresources (see [method Resource."
+"take_over_path])."
+msgstr ""
+
+#: doc/classes/RichTextEffect.xml:4
+msgid "A custom effect for use with [RichTextLabel]."
+msgstr ""
+
+#: doc/classes/RichTextEffect.xml:7
+msgid ""
+"A custom effect for use with [RichTextLabel].\n"
+"[b]Note:[/b] For a [RichTextEffect] to be usable, a BBCode tag must be "
+"defined as a member variable called [code]bbcode[/code] in the script.\n"
+"[codeblock]\n"
+"# The RichTextEffect will be usable like this: `[example]Some text[/"
+"example]`\n"
+"var bbcode = \"example\"\n"
+"[/codeblock]\n"
+"[b]Note:[/b] As soon as a [RichTextLabel] contains at least one "
+"[RichTextEffect], it will continuously process the effect unless the project "
+"is paused. This may impact battery life negatively."
+msgstr ""
+
+#: doc/classes/RichTextEffect.xml:24
+msgid ""
+"Override this method to modify properties in [code]char_fx[/code]. The "
+"method must return [code]true[/code] if the character could be transformed "
+"successfully. If the method returns [code]false[/code], it will skip "
+"transformation to avoid displaying broken text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:4
+msgid "Label that displays rich text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:7
+msgid ""
+"Rich text can contain custom text, fonts, images and some basic formatting. "
+"The label manages these as an internal tag stack. It also adapts itself to "
+"given width/heights.\n"
+"[b]Note:[/b] Assignments to [member bbcode_text] clear the tag stack and "
+"reconstruct it from the property's contents. Any edits made to [member "
+"bbcode_text] will erase previous edits made from other manual sources such "
+"as [method append_bbcode] and the [code]push_*[/code] / [method pop] "
+"methods.\n"
+"[b]Note:[/b] RichTextLabel doesn't support entangled BBCode tags. For "
+"example, instead of using [code][b]bold[i]bold italic[/b]italic[/i][/code], "
+"use [code][b]bold[i]bold italic[/i][/b][i]italic[/i][/code].\n"
+"[b]Note:[/b] [code]push_*/pop[/code] functions won't affect BBCode.\n"
+"[b]Note:[/b] Unlike [Label], RichTextLabel doesn't have a [i]property[/i] to "
+"horizontally align text to the center. Instead, enable [member "
+"bbcode_enabled] and surround the text in a [code][center][/code] tag as "
+"follows: [code][center]Example[/center][/code]. There is currently no built-"
+"in way to vertically align text either, but this can be emulated by relying "
+"on anchors/containers and the [member fit_content_height] property.\n"
+"[b]Note:[/b] Unicode characters after [code]0xffff[/code] (such as most "
+"emoji) are [i]not[/i] supported on Windows. They will display as unknown "
+"characters instead. This will be resolved in Godot 4.0."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:16
+msgid "https://godotengine.org/asset-library/asset/132"
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:26
+msgid ""
+"Adds an image's opening and closing tags to the tag stack, optionally "
+"providing a [code]width[/code] and [code]height[/code] to resize the image.\n"
+"If [code]width[/code] or [code]height[/code] is set to 0, the image size "
+"will be adjusted in order to keep the original aspect ratio."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:34
+msgid "Adds raw non-BBCode-parsed text to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:41
+msgid ""
+"Parses [code]bbcode[/code] and adds tags to the tag stack as needed. Returns "
+"the result of the parsing, [constant OK] if successful.\n"
+"[b]Note:[/b] Using this method, you can't close a tag that was opened in a "
+"previous [method append_bbcode] call. This is done to improve performance, "
+"especially when updating large RichTextLabels since rebuilding the whole "
+"BBCode every time would be slower. If you absolutely need to close a tag in "
+"a future method call, append the [member bbcode_text] instead of using "
+"[method append_bbcode]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:48
+msgid "Clears the tag stack and sets [member bbcode_text] to an empty string."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:54
+msgid "Returns the height of the content."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:60
+msgid ""
+"Returns the total number of newlines in the tag stack's text tags. Considers "
+"wrapped text as one line."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:66
+msgid ""
+"Returns the total number of characters from text tags. Does not include "
+"BBCodes."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:72
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:79
+msgid "Returns the number of visible lines."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:86
+msgid ""
+"Installs a custom effect. [code]effect[/code] should be a valid "
+"[RichTextEffect]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:92
+msgid "Adds a newline tag to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:99
+msgid ""
+"The assignment version of [method append_bbcode]. Clears the tag stack and "
+"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
+"successfully."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:106
+msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:112
+msgid ""
+"Terminates the current tag. Use after [code]push_*[/code] methods to close "
+"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:119
+msgid ""
+"Adds an [code][align][/code] tag based on the given [code]align[/code] "
+"value. See [enum Align] for possible values."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:125
+msgid ""
+"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
+"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
+"code] tag."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:131
+msgid ""
+"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:137
+msgid ""
+"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
+"[table][/code] tag. See [method push_table] for details."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:144
+msgid "Adds a [code][color][/code] tag to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:151
+msgid ""
+"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
+"its duration."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:158
+msgid ""
+"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
+"code] by current [member tab_size] to determine new margin length."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:164
+msgid ""
+"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
+"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
+"code] tag."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:171
+msgid ""
+"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
+"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
+"fully implemented!"
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:178
+msgid ""
+"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
+"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:184
+msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:190
+msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:196
+msgid "Adds a [code][s][/code] tag to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:203
+msgid "Adds a [code][table=columns][/code] tag to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:209
+msgid "Adds a [code][u][/code] tag to the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:216
+msgid ""
+"Removes a line of content from the label. Returns [code]true[/code] if the "
+"line exists.\n"
+"The [code]line[/code] argument is the index of the line to remove, it can "
+"take values in the interval [code][0, get_line_count() - 1][/code]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:224
+msgid "Scrolls the window's top line to match [code]line[/code]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:233
+msgid ""
+"Edits the selected column's expansion options. If [code]expand[/code] is "
+"[code]true[/code], the column expands in proportion to its expansion ratio "
+"versus the other columns' ratios.\n"
+"For example, 2 columns with ratios 3 and 4 plus 70 pixels in available width "
+"would expand 30 and 40 pixels, respectively.\n"
+"If [code]expand[/code] is [code]false[/code], the column will not contribute "
+"to the total ratio."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:241
+msgid ""
+"If [code]true[/code], the label uses BBCode formatting.\n"
+"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
+"add_text] will reset this to [code]false[/code]. Use instead [method "
+"append_bbcode] to preserve BBCode formatting."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:245
+msgid ""
+"The label's text in BBCode format. Is not representative of manual "
+"modifications to the internal tag stack. Erases changes made by other "
+"methods when edited.\n"
+"[b]Note:[/b] It is unadvised to use the [code]+=[/code] operator with "
+"[code]bbcode_text[/code] (e.g. [code]bbcode_text += \"some string\"[/code]) "
+"as it replaces the whole text and can cause slowdowns. Use [method "
+"append_bbcode] for adding text instead, unless you absolutely need to close "
+"a tag that was opened in an earlier method call."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:249
+msgid ""
+"The currently installed custom effects. This is an array of "
+"[RichTextEffect]s.\n"
+"To add a custom effect, it's more convenient to use [method install_effect]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:253
+msgid ""
+"If [code]true[/code], the label's height will be automatically updated to "
+"fit its content.\n"
+"[b]Note:[/b] This property is used as a workaround to fix issues with "
+"[RichTextLabel] in [Container]s, but it's unreliable in some cases and will "
+"be removed in future versions."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:257
+msgid ""
+"If [code]true[/code], the label underlines meta tags such as [code][url]"
+"{text}[/url][/code]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:260
+msgid "If [code]true[/code], the label uses the custom font color."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:263
+msgid ""
+"The range of characters to display, as a [float] between 0.0 and 1.0. When "
+"assigned an out of range value, it's the same as assigning 1.0.\n"
+"[b]Note:[/b] Setting this property updates [member visible_characters] based "
+"on current [method get_total_character_count]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:268
+msgid ""
+"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
+"code] does not block scrolling completely. See [method scroll_to_line]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:271
+msgid ""
+"If [code]true[/code], the window scrolls down to display new content "
+"automatically."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:274
+msgid "If [code]true[/code], the label allows text selection."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:277
+msgid ""
+"The number of spaces associated with a single tab length. Does not affect "
+"[code]\\t[/code] in text tags, only indent tags."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:280
+msgid ""
+"The raw text of the label.\n"
+"When set, clears the tag stack and adds a raw text tag to the top of it. "
+"Does not parse BBCodes. Does not modify [member bbcode_text]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:284
+msgid ""
+"The restricted number of characters to display in the label. If [code]-1[/"
+"code], all characters will be displayed.\n"
+"[b]Note:[/b] Setting this property updates [member percent_visible] based on "
+"current [method get_total_character_count]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:292
+msgid ""
+"Triggered when the user clicks on content between meta tags. If the meta is "
+"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
+"parameter for this signal will be a [String] type. If a particular type or "
+"an object is desired, the [method push_meta] method must be used to manually "
+"insert the data into the tag stack."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:298
+msgid "Triggers when the mouse exits a meta tag."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:304
+msgid "Triggers when the mouse enters a meta tag."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:310
+msgid "Makes text left aligned."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:313
+msgid "Makes text centered."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:316
+msgid "Makes text right aligned."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:319
+msgid "Makes text fill width."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:322
+msgid "Each list item has a number marker."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:325
+msgid "Each list item has a letter marker."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:328
+msgid "Each list item has a filled circle marker."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:371
+msgid "The font used for bold text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:374
+msgid "The font used for bold italics text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:377
+msgid "The default text color."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:380
+msgid "The background The background used when the [RichTextLabel] is focused."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:383
+msgid ""
+"The color of selected text, used when [member selection_enabled] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:386
+msgid "The color of the font's shadow."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:389
+msgid "The font used for italics text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:392
+msgid "The vertical space between lines."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:395
+msgid "The font used for monospace text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:398
+msgid "The normal background for the [RichTextLabel]."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:401
+msgid "The default text font."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:404
+msgid "The color of the selection box."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:407
+msgid ""
+"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
+"the whole text as an outline."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:410
+msgid "The horizontal offset of the font's shadow."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:413
+msgid "The vertical offset of the font's shadow."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:416
+msgid "The horizontal separation of elements in a table."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml:419
+msgid "The vertical separation of elements in a table."
+msgstr ""
+
+#: doc/classes/RID.xml:4
+msgid "Handle for a [Resource]'s unique ID."
+msgstr ""
+
+#: doc/classes/RID.xml:7
+msgid ""
+"The RID type is used to access the unique integer ID of a resource. They are "
+"opaque, which means they do not grant access to the associated resource by "
+"themselves. They are used by and with the low-level Server classes such as "
+"[VisualServer]."
+msgstr ""
+
+#: doc/classes/RID.xml:16
+msgid ""
+"Creates a new RID instance with the ID of a given resource. When not handed "
+"a valid resource, silently stores the unused ID 0."
+msgstr ""
+
+#: doc/classes/RID.xml:22
+msgid "Returns the ID of the referenced resource."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:4
+msgid ""
+"Physics Body whose position is determined through physics simulation in 3D "
+"space."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:7
+msgid ""
+"This is the node that implements full 3D physics. This means that you do not "
+"control a RigidBody directly. Instead, you can apply forces to it (gravity, "
+"impulses, etc.), and the physics simulation will calculate the resulting "
+"movement, collision, bouncing, rotating, etc.\n"
+"A RigidBody has 4 behavior [member mode]s: Rigid, Static, Character, and "
+"Kinematic.\n"
+"[b]Note:[/b] Don't change a RigidBody's position every frame or very often. "
+"Sporadic changes work fine, but physics runs at a different granularity "
+"(fixed Hz) than usual rendering (process callback) and maybe even in a "
+"separate thread, so changing this from a process loop may result in strange "
+"behavior. If you need to directly affect the body's state, use [method "
+"_integrate_forces], which allows you to directly access the physics state.\n"
+"If you need to override the default physics behavior, you can write a custom "
+"force integration function. See [member custom_integrator].\n"
+"With Bullet physics (the default), the center of mass is the RigidBody3D "
+"center. With GodotPhysics, the center of mass is the average of the "
+"[CollisionShape] centers."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:23
+msgid ""
+"Called during physics processing, allowing you to read and safely modify the "
+"simulation state for the object. By default, it works in addition to the "
+"usual physics behavior, but the [member custom_integrator] property allows "
+"you to disable the default behavior and do fully custom force integration "
+"for a body."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:30
+msgid ""
+"Adds a constant directional force (i.e. acceleration) without affecting "
+"rotation.\n"
+"This is equivalent to [code]add_force(force, Vector3(0,0,0))[/code]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:39
+msgid ""
+"Adds a constant directional force (i.e. acceleration).\n"
+"The position uses the rotation of the global coordinate system, but is "
+"centered at the object's origin."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:47
+msgid ""
+"Adds a constant rotational force (i.e. a motor) without affecting position."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:54
+msgid ""
+"Applies a directional impulse without affecting rotation.\n"
+"This is equivalent to [code]apply_impulse(Vector3(0,0,0), impulse)[/code]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:63
+msgid ""
+"Applies a positioned impulse to the body. An impulse is time independent! "
+"Applying an impulse every frame would result in a framerate-dependent force. "
+"For this reason it should only be used when simulating one-time impacts. The "
+"position uses the rotation of the global coordinate system, but is centered "
+"at the object's origin."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:70
+msgid ""
+"Applies a torque impulse which will be affected by the body mass and shape. "
+"This will rotate the body around the [code]impulse[/code] vector passed."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:77
+msgid ""
+"Returns [code]true[/code] if the specified linear or rotational axis is "
+"locked."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:83 doc/classes/RigidBody2D.xml:73
+msgid ""
+"Returns a list of the bodies colliding with this one. Requires [member "
+"contact_monitor] to be set to [code]true[/code] and [member "
+"contacts_reported] to be set high enough to detect all the collisions.\n"
+"[b]Note:[/b] The result of this test is not immediate after moving objects. "
+"For performance, list of collisions is updated once per frame and before the "
+"physics step. Consider using signals instead."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:90
+msgid ""
+"Returns the inverse inertia tensor basis. This is used to calculate the "
+"angular acceleration resulting from a torque applied to the RigidBody."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:98
+msgid "Locks the specified linear or rotational axis."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:111
+msgid ""
+"Damps RigidBody's rotational forces.\n"
+"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
+"details about damping."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:115
+msgid "RigidBody's rotational velocity."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:118
+msgid "Lock the body's rotation in the X axis."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:121
+msgid "Lock the body's rotation in the Y axis."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:124
+msgid "Lock the body's rotation in the Z axis."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:127
+msgid "Lock the body's movement in the X axis."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:130
+msgid "Lock the body's movement in the Y axis."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:133
+msgid "Lock the body's movement in the Z axis."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:136 doc/classes/RigidBody2D.xml:110
+#: doc/classes/StaticBody.xml:19 doc/classes/StaticBody2D.xml:16
+msgid ""
+"The body's bounciness. Values range from [code]0[/code] (no bounce) to "
+"[code]1[/code] (full bounciness).\n"
+"Deprecated, use [member PhysicsMaterial.bounce] instead via [member "
+"physics_material_override]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:140
+msgid ""
+"If [code]true[/code], the body can enter sleep mode when there is no "
+"movement. See [member sleeping].\n"
+"[b]Note:[/b] A RigidBody3D will never enter sleep mode automatically if its "
+"[member mode] is [constant MODE_CHARACTER]. It can still be put to sleep "
+"manually by setting its [member sleeping] property to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:144
+msgid ""
+"If [code]true[/code], the RigidBody will emit signals when it collides with "
+"another RigidBody. See also [member contacts_reported]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:147
+msgid ""
+"The maximum number of contacts that will be recorded. Requires [member "
+"contact_monitor] to be set to [code]true[/code].\n"
+"[b]Note:[/b] The number of contacts is different from the number of "
+"collisions. Collisions between parallel edges will result in two contacts "
+"(one at each end), and collisions between parallel faces will result in four "
+"contacts (one at each corner)."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:151
+msgid ""
+"If [code]true[/code], continuous collision detection is used.\n"
+"Continuous collision detection tries to predict where a moving body will "
+"collide, instead of moving it and correcting its movement if it collided. "
+"Continuous collision detection is more precise, and misses fewer impacts by "
+"small, fast-moving objects. Not using continuous collision detection is "
+"faster to compute, but can miss small, fast-moving objects."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:155
+msgid ""
+"If [code]true[/code], internal force integration will be disabled (like "
+"gravity or air friction) for this body. Other than collision response, the "
+"body will only move as determined by the [method _integrate_forces] "
+"function, if defined."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:158
+msgid ""
+"The body's friction, from 0 (frictionless) to 1 (max friction).\n"
+"Deprecated, use [member PhysicsMaterial.friction] instead via [member "
+"physics_material_override]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:162
+msgid ""
+"This is multiplied by the global 3D gravity setting found in [b]Project > "
+"Project Settings > Physics > 3d[/b] to produce RigidBody's gravity. For "
+"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 ""
+
+#: doc/classes/RigidBody.xml:165
+msgid ""
+"The body's linear damp. Cannot be less than -1.0. If this value is different "
+"from -1.0, any linear damp derived from the world or areas will be "
+"overridden.\n"
+"See [member ProjectSettings.physics/3d/default_linear_damp] for more details "
+"about damping."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:169
+msgid ""
+"The body's linear velocity. Can be used sporadically, but [b]don't set this "
+"every frame[/b], because physics may run in another thread and runs at a "
+"different granularity. Use [method _integrate_forces] as your process loop "
+"for precise control of the body state."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:172 doc/classes/RigidBody2D.xml:149
+msgid "The body's mass."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:175
+msgid "The body mode. See [enum Mode] for possible values."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:178 doc/classes/RigidBody2D.xml:155
+#: doc/classes/StaticBody.xml:33 doc/classes/StaticBody2D.xml:30
+msgid ""
+"The physics material override for the body.\n"
+"If a material is assigned to this property, it will be used instead of any "
+"other physics material, such as an inherited one."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:182 doc/classes/RigidBody2D.xml:159
+msgid ""
+"If [code]true[/code], the body will not move and will not calculate forces "
+"until woken up by another body through, for example, a collision, or by "
+"using the [method apply_impulse] or [method add_force] methods."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:185
+msgid ""
+"The body's weight based on its mass and the global 3D gravity. Global values "
+"are set in [b]Project > Project Settings > Physics > 3d[/b]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:192
+msgid ""
+"Emitted when a collision with another [PhysicsBody] or [GridMap] occurs. "
+"Requires [member contact_monitor] to be set to [code]true[/code] and [member "
+"contacts_reported] to be set high enough to detect all the collisions. "
+"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody] or [GridMap]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:199
+msgid ""
+"Emitted when the collision with another [PhysicsBody] or [GridMap] ends. "
+"Requires [member contact_monitor] to be set to [code]true[/code] and [member "
+"contacts_reported] to be set high enough to detect all the collisions. "
+"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody] or [GridMap]."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:209
+msgid ""
+"Emitted when one of this RigidBody's [Shape]s collides with another "
+"[PhysicsBody] or [GridMap]'s [Shape]s. Requires [member contact_monitor] to "
+"be set to [code]true[/code] and [member contacts_reported] to be set high "
+"enough to detect all the collisions. [GridMap]s are detected if the "
+"[MeshLibrary] has Collision [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody] or [GridMap].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
+"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
+"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
+"[ConcavePolygonShape] with Bullet physics if you need shape indices."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:223
+msgid ""
+"Emitted when the collision between one of this RigidBody's [Shape]s and "
+"another [PhysicsBody] or [GridMap]'s [Shape]s ends. Requires [member "
+"contact_monitor] to be set to [code]true[/code] and [member "
+"contacts_reported] to be set high enough to detect all the collisions. "
+"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody] or [GridMap].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
+"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
+"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
+"[ConcavePolygonShape] with Bullet physics if you need shape indices."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:233 doc/classes/RigidBody2D.xml:208
+msgid ""
+"Emitted when the physics engine changes the body's sleeping state.\n"
+"[b]Note:[/b] Changing the value [member sleeping] will not trigger this "
+"signal. It is only emitted if the sleeping state is changed by the physics "
+"engine or [code]emit_signal(\"sleeping_state_changed\")[/code] is used."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:240
+msgid ""
+"Rigid body mode. This is the \"natural\" state of a rigid body. It is "
+"affected by forces, and can move, rotate, and be affected by user code."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:243
+msgid ""
+"Static mode. The body behaves like a [StaticBody], and can only move by user "
+"code."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:246
+msgid ""
+"Character body mode. This behaves like a rigid body, but can not rotate."
+msgstr ""
+
+#: doc/classes/RigidBody.xml:249
+msgid ""
+"Kinematic body mode. The body behaves like a [KinematicBody], and can only "
+"move by user code."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:4
+msgid "A body that is controlled by the 2D physics engine."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:7
+msgid ""
+"This node implements simulated 2D physics. You do not control a RigidBody2D "
+"directly. Instead, you apply forces to it (gravity, impulses, etc.) and the "
+"physics simulation calculates the resulting movement based on its mass, "
+"friction, and other physical properties.\n"
+"A RigidBody2D has 4 behavior [member mode]s: Rigid, Static, Character, and "
+"Kinematic.\n"
+"[b]Note:[/b] You should not change a RigidBody2D's [code]position[/code] or "
+"[code]linear_velocity[/code] every frame or even very often. If you need to "
+"directly affect the body's state, use [method _integrate_forces], which "
+"allows you to directly access the physics state.\n"
+"Please also keep in mind that physics bodies manage their own transform "
+"which overwrites the ones you set. So any direct or indirect transformation "
+"(including scaling of the node or its parent) will be visible in the editor "
+"only, and immediately reset at runtime.\n"
+"If you need to override the default physics behavior or add a transformation "
+"at runtime, you can write a custom force integration. See [member "
+"custom_integrator].\n"
+"The center of mass is always located at the node's origin without taking "
+"into account the [CollisionShape2D] centroid offsets."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:15
+msgid "https://godotengine.org/asset-library/asset/119"
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:16 doc/classes/Sprite.xml:10
+msgid "https://godotengine.org/asset-library/asset/148"
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:23
+msgid ""
+"Allows you to read and safely modify the simulation state for the object. "
+"Use this instead of [method Node._physics_process] if you need to directly "
+"change the body's [code]position[/code] or other physics properties. By "
+"default, it works in addition to the usual physics behavior, but [member "
+"custom_integrator] allows you to disable the default behavior and write "
+"custom force integration for a body."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:60
+msgid ""
+"Applies a positioned impulse to the body. An impulse is time-independent! "
+"Applying an impulse every frame would result in a framerate-dependent force. "
+"For this reason it should only be used when simulating one-time impacts (use "
+"the \"_force\" functions otherwise). The position uses the rotation of the "
+"global coordinate system, but is centered at the object's origin."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:81
+msgid ""
+"Sets the body's velocity on the given axis. The velocity in the given vector "
+"axis will be set as the given vector length. This is useful for jumping "
+"behavior."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:91
+msgid ""
+"Returns [code]true[/code] if a collision would result from moving in the "
+"given vector. [code]margin[/code] increases the size of the shapes involved "
+"in the collision detection, and [code]result[/code] is an object of type "
+"[Physics2DTestMotionResult], which contains additional information about the "
+"collision (should there be one)."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:97
+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 "
+"Settings > Physics > 2d[/b].\n"
+"See [member ProjectSettings.physics/2d/default_angular_damp] for more "
+"details about damping."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:104
+msgid "The body's total applied force."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:107
+msgid "The body's total applied torque."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:114
+msgid ""
+"If [code]true[/code], the body can enter sleep mode when there is no "
+"movement. See [member sleeping].\n"
+"[b]Note:[/b] A RigidBody2D will never enter sleep mode automatically if its "
+"[member mode] is [constant MODE_CHARACTER]. It can still be put to sleep "
+"manually by setting its [member sleeping] property to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:118
+msgid ""
+"If [code]true[/code], the body will emit signals when it collides with "
+"another RigidBody2D. See also [member contacts_reported]."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:121
+msgid ""
+"The maximum number of contacts that will be recorded. Requires [member "
+"contact_monitor] to be set to [code]true[/code].\n"
+"[b]Note:[/b] The number of contacts is different from the number of "
+"collisions. Collisions between parallel edges will result in two contacts "
+"(one at each end)."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:125
+msgid ""
+"Continuous collision detection mode.\n"
+"Continuous collision detection tries to predict where a moving body will "
+"collide instead of moving it and correcting its movement after collision. "
+"Continuous collision detection is slower, but more precise and misses fewer "
+"collisions with small, fast-moving objects. Raycasting and shapecasting "
+"methods are available. See [enum CCDMode] for details."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:129
+msgid ""
+"If [code]true[/code], internal force integration is disabled for this body. "
+"Aside from collision response, the body will only move as determined by the "
+"[method _integrate_forces] function."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:132
+msgid ""
+"The body's friction. Values range from [code]0[/code] (frictionless) to "
+"[code]1[/code] (maximum friction).\n"
+"Deprecated, use [member PhysicsMaterial.friction] instead via [member "
+"physics_material_override]."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:136
+msgid ""
+"Multiplies the gravity applied to the body. The body's gravity is calculated "
+"from the [b]Default Gravity[/b] value in [b]Project > Project Settings > "
+"Physics > 2d[/b] and/or any additional gravity vector applied by [Area2D]s."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:139
+msgid ""
+"The body's moment of inertia. This is like mass, but for rotation: it "
+"determines how much torque it takes to rotate the body. The moment of "
+"inertia is usually computed automatically from the mass and the shapes, but "
+"this function allows you to set a custom value. Set 0 inertia to return to "
+"automatically computing it."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:142
+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 > "
+"Physics > 2d[/b].\n"
+"See [member ProjectSettings.physics/2d/default_linear_damp] for more details "
+"about damping."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:152
+msgid "The body's mode. See [enum Mode] for possible values."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:162
+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 ""
+
+#: doc/classes/RigidBody2D.xml:169
+msgid ""
+"Emitted when a collision with another [PhysicsBody2D] or [TileMap] occurs. "
+"Requires [member contact_monitor] to be set to [code]true[/code] and [member "
+"contacts_reported] to be set high enough to detect all the collisions. "
+"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody2D] or [TileMap]."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:176
+msgid ""
+"Emitted when the collision with another [PhysicsBody2D] or [TileMap] ends. "
+"Requires [member contact_monitor] to be set to [code]true[/code] and [member "
+"contacts_reported] to be set high enough to detect all the collisions. "
+"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody2D] or [TileMap]."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:186
+msgid ""
+"Emitted when one of this RigidBody2D's [Shape2D]s collides with another "
+"[PhysicsBody2D] or [TileMap]'s [Shape2D]s. Requires [member contact_monitor] "
+"to be set to [code]true[/code] and [member contacts_reported] to be set high "
+"enough to detect all the collisions. [TileMap]s are detected if the "
+"[TileSet] has Collision [Shape2D]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[CollisionObject2D] used by the [Physics2DServer].\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody2D] or [TileMap].\n"
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:199
+msgid ""
+"Emitted when the collision between one of this RigidBody2D's [Shape2D]s and "
+"another [PhysicsBody2D] or [TileMap]'s [Shape2D]s ends. Requires [member "
+"contact_monitor] to be set to [code]true[/code] and [member "
+"contacts_reported] to be set high enough to detect all the collisions. "
+"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[CollisionObject2D] used by the [Physics2DServer].\n"
+"[code]body[/code] the [Node], if it exists in the tree, of the other "
+"[PhysicsBody2D] or [TileMap].\n"
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:215
+msgid ""
+"Rigid mode. The body behaves as a physical object. It collides with other "
+"bodies and responds to forces applied to it. This is the default mode."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:218
+msgid "Static mode. The body behaves like a [StaticBody2D] and does not move."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:221
+msgid ""
+"Character mode. Similar to [constant MODE_RIGID], but the body can not "
+"rotate."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:224
+msgid ""
+"Kinematic mode. The body behaves like a [KinematicBody2D], and must be moved "
+"by code."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:227
+msgid ""
+"Continuous collision detection disabled. This is the fastest way to detect "
+"body collisions, but can miss small, fast-moving objects."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:230
+msgid ""
+"Continuous collision detection enabled using raycasting. This is faster than "
+"shapecasting but less precise."
+msgstr ""
+
+#: doc/classes/RigidBody2D.xml:233
+msgid ""
+"Continuous collision detection enabled using shapecasting. This is the "
+"slowest CCD method and the most precise."
+msgstr ""
+
+#: doc/classes/Room.xml:4
+msgid "Room node, used to group objects together locally for [Portal] culling."
+msgstr ""
+
+#: doc/classes/Room.xml:7
+msgid ""
+"The [Portal] culling system requires levels to be built using objects "
+"grouped together by location in areas called [Room]s. In many cases these "
+"will correspond to actual rooms in buildings, but not necessarily (a canyon "
+"area may be treated as a room).\n"
+"Any [VisualInstance] that is a child or grandchild of a [Room] will be "
+"assigned to that room, if the [code]portal_mode[/code] of that "
+"[VisualInstance] is set to [code]STATIC[/code] (does not move) or "
+"[code]DYNAMIC[/code] (moves only within the room).\n"
+"Internally the room boundary must form a [b]convex hull[/b], and by default "
+"this is determined automatically by the geometry of the objects you place "
+"within the room.\n"
+"You can alternatively precisely specify a [b]manual bound[/b]. If you place "
+"a [MeshInstance] with a name prefixed by [code]Bound_[/code], it will turn "
+"off the bound generation from geometry, and instead use the vertices of this "
+"MeshInstance to directly calculate a convex hull during the conversion stage "
+"(see [RoomManager]).\n"
+"In order to see from one room into an adjacent room, [Portal]s must be "
+"placed over non-occluded openings between rooms. These will often be placed "
+"over doors and windows."
+msgstr ""
+
+#: doc/classes/Room.xml:27
+msgid ""
+"If [code]points[/code] are set, the [Room] bounding convex hull will be "
+"built from these points. If no points are set, the room bound will either be "
+"derived from a manual bound ([MeshInstance] with name prefix [code]Bound_[/"
+"code]), or from the geometry within the room.\n"
+"Note that you can use the [code]Generate Points[/code] editor button to get "
+"started. This will use either the geometry or manual bound to generate the "
+"room hull, and save the resulting points, allowing you to edit them to "
+"further refine the bound."
+msgstr ""
+
+#: doc/classes/Room.xml:31
+msgid ""
+"The [code]simplify[/code] value determines to what degree room hulls "
+"(bounds) are simplified, by removing similar planes. A value of 0 gives no "
+"simplification, 1 gives maximum simplification."
+msgstr ""
+
+#: doc/classes/Room.xml:34
+msgid ""
+"The room hull simplification can either use the default value set in the "
+"[RoomManager], or override this and use the per room setting."
+msgstr ""
+
+#: doc/classes/RoomGroup.xml:4
+msgid "Groups [Room]s together to allow common functionality."
+msgstr ""
+
+#: doc/classes/RoomGroup.xml:7
+msgid ""
+"Although [Room] behaviour can be specified individually, sometimes it is "
+"faster and more convenient to write functionality for a group of rooms.\n"
+"[RoomGroup]s should be placed as children of the [b]room list[/b] (the "
+"parent [Node] of your [Room]s), and [Room]s should be placed in turn as "
+"children of a [RoomGroup] in order to assign them to the RoomGroup.\n"
+"A [RoomGroup] can for example be used to specify [Room]s that are "
+"[b]outside[/b], and switch on or off a directional light, sky, or rain "
+"effect as the player enters / exits the area.\n"
+"[RoomGroup]s receive [b]gameplay callbacks[/b] when the "
+"[code]gameplay_monitor[/code] is switched on, as [code]signal[/code]s or "
+"[code]notification[/code]s as they enter and exit the [b]gameplay area[/b] "
+"(see [RoomManager] for details)."
+msgstr ""
+
+#: doc/classes/RoomGroup.xml:18
+msgid ""
+"This priority will be applied to [Room]s within the group. The [Room] "
+"priority allows the use of [b]internal rooms[/b], rooms [i]within[/i] "
+"another room or rooms.\n"
+"When the [Camera] is within more than one room (regular and internal), the "
+"higher priority room will take precedence. So with for example, a house "
+"inside a terrain 'room', you would make the house higher priority, so that "
+"when the camera is within the house, the house is used as the source room, "
+"but outside the house, the terrain room would be used instead."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:4
+msgid "The RoomManager node is used to control the portal culling system."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:7
+msgid ""
+"In order to utilize the portal occlusion culling system, you must build your "
+"level using [Room]s and [Portal]s. Before these can be used at runtime, they "
+"must undergo a short conversion process to build the [code]room graph[/"
+"code], runtime data needed for portal culling. The [code]room graph[/code] "
+"is controlled by the [RoomManager] node, and the [RoomManager] also contains "
+"settings that are common throughout the portal system."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:15
+msgid ""
+"This function clears all converted data from the [b]room graph[/b]. Use this "
+"before unloading a level, when transitioning from level to level, or "
+"returning to a main menu."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:21
+msgid ""
+"This is the most important function in the whole portal culling system. "
+"Without it, the system cannot function.\n"
+"First it goes through every [Room] that is a child of the [code]room list[/"
+"code] node (and [RoomGroup]s within) and converts and adds it to the "
+"[code]room graph[/code].\n"
+"This works for both [Room] nodes, and [Spatial] nodes that follow a special "
+"naming convention. They should begin with the prefix [i]'Room_'[/i], "
+"followed by the name you wish to give the room, e.g. [i]'Room_lounge'[/i]. "
+"This will automatically convert such [Spatial]s to [Room] nodes for you. "
+"This is useful if you want to build you entire room system in e.g. Blender, "
+"and reimport multiple times as you work on the level.\n"
+"The conversion will try to assign [VisualInstance]s that are children and "
+"grandchildren of the [Room] to the room. These should be given a suitable "
+"[code]portal mode[/code] (see the [CullInstance] documentation). The default "
+"[code]portal mode[/code] is [code]STATIC[/code] - objects which are not "
+"expected to move while the level is played, which will typically be most "
+"objects.\n"
+"The conversion will usually use the geometry of these [VisualInstance]s (and "
+"the [Portal]s) to calculate a convex hull bound for the room. These bounds "
+"will be shown in the editor with a wireframe. Alternatively you can specify "
+"a manual custom bound for any room, see the [Room] documentation.\n"
+"By definition, [Camera]s within a room can see everything else within the "
+"room (that is one advantage to using convex hulls). However, in order to see "
+"from one room into adjacent rooms, you must place [Portal]s, which represent "
+"openings that the camera can see through, like windows and doors.\n"
+"[Portal]s are really just specialized [MeshInstance]s. In fact you will "
+"usually first create a portal by creating a [MeshInstance], especially a "
+"[code]plane[/code] mesh instance. You would move the plane in the editor to "
+"cover a window or doorway, with the front face pointing outward from the "
+"room. To let the conversion process know you want this mesh to be a portal, "
+"again we use a special naming convention. [MeshInstance]s to be converted to "
+"a [Portal] should start with the prefix [i]'Portal_'[/i].\n"
+"You now have a choice - you can leave the name as [i]'Portal_'[/i] and allow "
+"the system to automatically detect the nearest [Room] to link. In most cases "
+"this will work fine.\n"
+"An alternative method is to specify the [Room] to link to manually, "
+"appending a suffix to the portal name, which should be the name of the room "
+"you intend to link to. For example [i]'Portal_lounge'[/i] will attempt to "
+"link to the room named [i]'Room_lounge'[/i].\n"
+"There is a special case here - Godot does not allow two nodes to share the "
+"same name. What if you want to manually have more than one portal leading "
+"into the same room? Surely they will need to both be called, e.g. "
+"[i]'Portal_lounge'[/i]?\n"
+"The solution is a wildcard character. After the room name, if you use the "
+"character [i]'*'[/i], this character and anything following it will be "
+"ignored. So you can use for example [i]'Portal_lounge*0'[/i], "
+"[i]'Portal_lounge*1'[/i] etc.\n"
+"Note that [Portal]s that have already been converted to [Portal] nodes "
+"(rather than [MeshInstance]s) still need to follow the same naming "
+"convention, as they will be relinked each time during conversion.\n"
+"It is recommended that you only place objects in rooms that are desired to "
+"stay within those rooms - i.e. [code]portal mode[/code]s [code]STATIC[/code] "
+"or [code]DYNAMIC[/code] (not crossing portals). [code]GLOBAL[/code] and "
+"[code]ROAMING[/code] objects are best placed in another part of the scene "
+"tree, to avoid confusion. See [CullInstance] for a full description of "
+"portal modes."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:39
+msgid ""
+"Switches the portal culling system on and off.\n"
+"It is important to note that when portal culling is active, it is "
+"responsible for [b]all[/b] the 3d culling. Some editor functionality may be "
+"more difficult to use, so switching the active flag is intended to be used "
+"to make sure your [Room] / [Portal] layout works within the editor.\n"
+"Switching to [code]active[/code] will have no effect when the [code]room "
+"graph[/code] is unloaded (the rooms have not yet been converted)."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:44
+msgid ""
+"Large objects can 'sprawl' over (be present in) more than one room. It can "
+"be useful to visualize which objects are sprawling outside the current "
+"room.\n"
+"Toggling this setting turns this debug view on and off."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:48
+msgid ""
+"Usually we don't want objects that only [b]just[/b] cross a boundary into an "
+"adjacent [Room] to sprawl into that room. To prevent this, each [Portal] has "
+"an extra margin, or tolerance zone where objects can enter without sprawling "
+"to a neighbouring room.\n"
+"In most cases you can set this here for all portals. It is possible to "
+"override the margin for each portal."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:52
+msgid ""
+"When using a partial or full PVS, the gameplay monitor allows you to receive "
+"callbacks when roaming objects or rooms enter or exit the [b]gameplay area[/"
+"b]. The gameplay area is defined as either the primary, or secondary PVS.\n"
+"These callbacks allow you to, for example, reduce processing for objects "
+"that are far from the player, or turn on and off AI.\n"
+"You can either choose to receive callbacks as notifications through the "
+"[code]_notification[/code] function, or as signals.\n"
+"[code]NOTIFICATION_ENTER_GAMEPLAY[/code]\n"
+"[code]NOTIFICATION_EXIT_GAMEPLAY[/code]\n"
+"Signals: [code]\"gameplay_entered\"[/code], [code]\"gameplay_exited\"[/code]"
+msgstr ""
+
+#: doc/classes/RoomManager.xml:60
+msgid ""
+"If enabled, the system will attempt to merge similar meshes (particularly in "
+"terms of materials) within [Room]s during conversion. This can significantly "
+"reduce the number of drawcalls and state changes required during rendering, "
+"albeit at a cost of reduced culling granularity.\n"
+"[b]Note:[/b] This operates at runtime during the conversion process, and "
+"will only operate on exported or running projects, in order to prevent "
+"accidental alteration to the scene and loss of data."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:64
+msgid ""
+"When converting rooms, the editor will warn you if overlap is detected "
+"between rooms. Overlap can interfere with determining the room that cameras "
+"and objects are within. A small amount can be acceptable, depending on your "
+"level. Here you can alter the threshold at which the editor warning appears. "
+"There are no other side effects."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:67
+msgid ""
+"Portal rendering is recursive - each time a portal is seen through an "
+"earlier portal there is some cost. For this reason, and to prevent the "
+"possibility of infinite loops, this setting provides a hard limit on the "
+"recursion depth.\n"
+"[b]Note:[/b] This value is unused when using [code]Full[/code] PVS mode."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:71
+msgid ""
+"Portal culling normally operates using the current [Camera] / [Camera]s, "
+"however for debugging purposes within the editor, you can use this setting "
+"to override this behaviour and force it to use a particular camera to get a "
+"better idea of what the occlusion culling is doing."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:75
+msgid ""
+"Optionally during conversion the potentially visible set (PVS) of rooms that "
+"are potentially visible from each room can be calculated. This can be used "
+"either to aid in dynamic portal culling, or to totally replace portal "
+"culling.\n"
+"In [code]Full[/code] PVS Mode, all objects within the potentially visible "
+"rooms will be frustum culled, and rendered if they are within the view "
+"frustum."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:79
+msgid ""
+"During the conversion process, the geometry of objects within [Room]s, or a "
+"custom specified manual bound, are used to generate a [b]convex hull bound[/"
+"b].\n"
+"This convex hull is [b]required[/b] in the visibility system, and is used "
+"for many purposes. Most importantly, it is used to decide whether the "
+"[Camera] (or an object) is within a [Room]. The convex hull generating "
+"algorithm is good, but occasionally it can create too many (or too few) "
+"planes to give a good representation of the room volume.\n"
+"The [code]room_simplify[/code] value can be used to gain fine control over "
+"this process. It determines how similar planes can be for them to be "
+"considered the same (and duplicates removed). The value can be set between 0 "
+"(no simplification) and 1 (maximum simplification).\n"
+"The value set here is the default for all rooms, but individual rooms can "
+"override this value if desired.\n"
+"The room convex hulls are shown as a wireframe in the editor."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:86
+msgid ""
+"For the [Room] conversion process to succeed, you must point the "
+"[RoomManager] to the parent [Node] of your [Room]s and [RoomGroup]s, which "
+"we refer to as the [code]roomlist[/code] (the roomlist is not a special node "
+"type, it is normally just a [Spatial])."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:89
+msgid "Shows the [Portal] margins when the portal gizmo is used in the editor."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:92
+msgid ""
+"When receiving gameplay callbacks when objects enter and exit gameplay, the "
+"[b]gameplay area[/b] can be defined by either the primary PVS (potentially "
+"visible set) of [Room]s, or the secondary PVS (the primary PVS and their "
+"neighbouring [Room]s).\n"
+"Sometimes using the larger gameplay area of the secondary PVS may be "
+"preferable."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:98
+msgid ""
+"Use only [Portal]s at runtime to determine visibility. PVS will not be "
+"generated at [Room]s conversion, and gameplay notifications cannot be used."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:101
+msgid ""
+"Use a combination of PVS and [Portal]s to determine visibility (this is "
+"usually fastest and most accurate)."
+msgstr ""
+
+#: doc/classes/RoomManager.xml:104
+msgid ""
+"Use only the PVS (potentially visible set) of [Room]s to determine "
+"visibility."
+msgstr ""
+
+#: doc/classes/RootMotionView.xml:4
+msgid "Editor-only helper for setting up root motion in [AnimationTree]."
+msgstr ""
+
+#: doc/classes/RootMotionView.xml:7
+msgid ""
+"[i]Root motion[/i] refers to an animation technique where a mesh's skeleton "
+"is used to give impulse to a character. When working with 3D animations, a "
+"popular technique is for animators to use the root skeleton bone to give "
+"motion to the rest of the skeleton. This allows animating characters in a "
+"way where steps actually match the floor below. It also allows precise "
+"interaction with objects during cinematics. See also [AnimationTree].\n"
+"[b]Note:[/b] [RootMotionView] is only visible in the editor. It will be "
+"hidden automatically in the running project, and will also be converted to a "
+"plain [Node] in the running project. This means a script attached to a "
+"[RootMotionView] node [i]must[/i] have [code]extends Node[/code] instead of "
+"[code]extends RootMotionView[/code]. Additionally, it must not be a "
+"[code]@tool[/code] script."
+msgstr ""
+
+#: doc/classes/RootMotionView.xml:11
+msgid ""
+"https://docs.godotengine.org/en/latest/tutorials/animation/animation_tree."
+"html#root-motion"
+msgstr ""
+
+#: doc/classes/RootMotionView.xml:17
+msgid "Path to an [AnimationTree] node to use as a basis for root motion."
+msgstr ""
+
+#: doc/classes/RootMotionView.xml:20
+msgid "The grid's cell size in 3D units."
+msgstr ""
+
+#: doc/classes/RootMotionView.xml:23
+msgid "The grid's color."
+msgstr ""
+
+#: doc/classes/RootMotionView.xml:26
+msgid ""
+"The grid's radius in 3D units. The grid's opacity will fade gradually as the "
+"distance from the origin increases until this [member radius] is reached."
+msgstr ""
+
+#: doc/classes/RootMotionView.xml:29
+msgid ""
+"If [code]true[/code], the grid's points will all be on the same Y coordinate "
+"([i]local[/i] Y = 0). If [code]false[/code], the points' original Y "
+"coordinate is preserved."
+msgstr ""
+
+#: doc/classes/SceneState.xml:4
+msgid "A script interface to a scene file's data."
+msgstr ""
+
+#: doc/classes/SceneState.xml:7
+msgid ""
+"Maintains a list of resources, nodes, exported, and overridden properties, "
+"and built-in scripts associated with a scene.\n"
+"This class cannot be instantiated directly, it is retrieved for a given "
+"scene as the result of [method PackedScene.get_state]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:17
+msgid ""
+"Returns the list of bound parameters for the signal at [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:23
+msgid ""
+"Returns the number of signal connections in the scene.\n"
+"The [code]idx[/code] argument used to query connection metadata in other "
+"[code]get_connection_*[/code] methods in the interval [code][0, "
+"get_connection_count() - 1][/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:31
+msgid ""
+"Returns the connection flags for the signal at [code]idx[/code]. See [enum "
+"Object.ConnectFlags] constants."
+msgstr ""
+
+#: doc/classes/SceneState.xml:38
+msgid "Returns the method connected to the signal at [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:45
+msgid "Returns the name of the signal at [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:52
+msgid ""
+"Returns the path to the node that owns the signal at [code]idx[/code], "
+"relative to the root node."
+msgstr ""
+
+#: doc/classes/SceneState.xml:59
+msgid ""
+"Returns the path to the node that owns the method connected to the signal at "
+"[code]idx[/code], relative to the root node."
+msgstr ""
+
+#: doc/classes/SceneState.xml:65
+msgid ""
+"Returns the number of nodes in the scene.\n"
+"The [code]idx[/code] argument used to query node data in other "
+"[code]get_node_*[/code] methods in the interval [code][0, get_node_count() - "
+"1][/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:73
+msgid ""
+"Returns the list of group names associated with the node at [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:80
+msgid ""
+"Returns the node's index, which is its position relative to its siblings. "
+"This is only relevant and saved in scenes for cases where new nodes are "
+"added to an instanced or inherited scene among siblings from the base scene. "
+"Despite the name, this index is not related to the [code]idx[/code] argument "
+"used here and in other methods."
+msgstr ""
+
+#: doc/classes/SceneState.xml:87
+msgid ""
+"Returns a [PackedScene] for the node at [code]idx[/code] (i.e. the whole "
+"branch starting at this node, with its child nodes and resources), or "
+"[code]null[/code] if the node is not an instance."
+msgstr ""
+
+#: doc/classes/SceneState.xml:94
+msgid ""
+"Returns the path to the represented scene file if the node at [code]idx[/"
+"code] is an [InstancePlaceholder]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:101
+msgid "Returns the name of the node at [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:108
+msgid ""
+"Returns the path to the owner of the node at [code]idx[/code], relative to "
+"the root node."
+msgstr ""
+
+#: doc/classes/SceneState.xml:116
+msgid ""
+"Returns the path to the node at [code]idx[/code].\n"
+"If [code]for_parent[/code] is [code]true[/code], returns the path of the "
+"[code]idx[/code] node's parent instead."
+msgstr ""
+
+#: doc/classes/SceneState.xml:124
+msgid ""
+"Returns the number of exported or overridden properties for the node at "
+"[code]idx[/code].\n"
+"The [code]prop_idx[/code] argument used to query node property data in other "
+"[code]get_node_property_*[/code] methods in the interval [code][0, "
+"get_node_property_count() - 1][/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:133
+msgid ""
+"Returns the name of the property at [code]prop_idx[/code] for the node at "
+"[code]idx[/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:141
+msgid ""
+"Returns the value of the property at [code]prop_idx[/code] for the node at "
+"[code]idx[/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:148
+msgid "Returns the type of the node at [code]idx[/code]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:155
+msgid ""
+"Returns [code]true[/code] if the node at [code]idx[/code] is an "
+"[InstancePlaceholder]."
+msgstr ""
+
+#: doc/classes/SceneState.xml:161
+msgid ""
+"If passed to [method PackedScene.instance], blocks edits to the scene state."
+msgstr ""
+
+#: doc/classes/SceneState.xml:164
+msgid ""
+"If passed to [method PackedScene.instance], provides inherited scene "
+"resources to the local scene.\n"
+"[b]Note:[/b] Only available in editor builds."
+msgstr ""
+
+#: doc/classes/SceneState.xml:168
+msgid ""
+"If passed to [method PackedScene.instance], provides local scene resources "
+"to the local scene. Only the main scene should receive the main edit state.\n"
+"[b]Note:[/b] Only available in editor builds."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:4
+msgid "Manages the game loop via a hierarchy of nodes."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:7
+msgid ""
+"As one of the most important classes, the [SceneTree] manages the hierarchy "
+"of nodes in a scene as well as scenes themselves. Nodes can be added, "
+"retrieved and removed. The whole scene tree (and thus the current scene) can "
+"be paused. Scenes can be loaded, switched and reloaded.\n"
+"You can also use the [SceneTree] to organize your nodes into groups: every "
+"node can be assigned as many groups as you want to create, e.g. an \"enemy\" "
+"group. You can then iterate these groups or even call methods and set "
+"properties on all the group's members at once.\n"
+"[SceneTree] is the default [MainLoop] implementation used by scenes, and is "
+"thus in charge of the game loop."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/scene_tree."
+"html"
+msgstr ""
+
+#: doc/classes/SceneTree.xml:13
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/viewports/multiple_resolutions."
+"html"
+msgstr ""
+
+#: doc/classes/SceneTree.xml:21
+msgid ""
+"Calls [code]method[/code] on each member of the given group. You can pass "
+"arguments to [code]method[/code] by specifying them at the end of the method "
+"call. This method is equivalent of calling [method call_group_flags] with "
+"[constant GROUP_CALL_DEFAULT] flag.\n"
+"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
+"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
+"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
+"delay, in a way similar to [method Object.call_deferred]. To call methods "
+"immediately, use [method call_group_flags] with the [constant "
+"GROUP_CALL_REALTIME] flag."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:33
+msgid ""
+"Calls [code]method[/code] on each member of the given group, respecting the "
+"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
+"by specifying them at the end of the method call.\n"
+"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
+"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
+"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
+"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/SceneTree.xml:46
+msgid ""
+"Changes the running scene to the one at the given [code]path[/code], after "
+"loading it into a [PackedScene] and creating a new instance.\n"
+"Returns [constant OK] on success, [constant ERR_CANT_OPEN] if the "
+"[code]path[/code] cannot be loaded into a [PackedScene], or [constant "
+"ERR_CANT_CREATE] if that scene cannot be instantiated.\n"
+"[b]Note:[/b] The scene change is deferred, which means that the new scene "
+"node is added on the next idle frame. You won't be able to access it "
+"immediately after the [method change_scene] call."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:55
+msgid ""
+"Changes the running scene to a new instance of the given [PackedScene].\n"
+"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
+"cannot be instantiated.\n"
+"[b]Note:[/b] The scene change is deferred, which means that the new scene "
+"node is added on the next idle frame. You won't be able to access it "
+"immediately after the [method change_scene_to] call."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:65
+msgid ""
+"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
+"the given time in seconds elapsed in this [SceneTree]. If "
+"[code]pause_mode_process[/code] is set to [code]false[/code], pausing the "
+"[SceneTree] will also pause the timer.\n"
+"Commonly used to create a one-shot delay timer as in the following example:\n"
+"[codeblock]\n"
+"func some_function():\n"
+" print(\"start\")\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+" print(\"end\")\n"
+"[/codeblock]\n"
+"The timer will be automatically freed after its time elapses."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:79
+msgid ""
+"Returns the current frame number, i.e. the total frame count since the "
+"application started."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:85
+msgid ""
+"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
+"network_peer]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:91
+msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:97
+msgid "Returns the number of nodes in this [SceneTree]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:104
+msgid "Returns a list of all nodes assigned to the given group."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:110
+msgid "Returns the sender's peer ID for the most recently received RPC call."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:117
+msgid "Returns [code]true[/code] if the given group exists."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:129
+msgid ""
+"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
+"handled with [method set_input_as_handled]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:135
+msgid ""
+"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
+"server mode (listening for connections)."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:143
+msgid "Sends the given notification to all members of the [code]group[/code]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:152
+msgid ""
+"Sends the given notification to all members of the [code]group[/code], "
+"respecting the given [enum GroupCallFlags]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:159
+msgid ""
+"Queues the given object for deletion, delaying the call to [method Object."
+"free] to after the current frame."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:166
+msgid ""
+"Quits the application at the end of the current iteration. A process "
+"[code]exit_code[/code] can optionally be passed as an argument. If this "
+"argument is [code]0[/code] or greater, it will override the [member OS."
+"exit_code] defined before quitting the application.\n"
+"[b]Note:[/b] On iOS this method doesn't work. Instead, as recommended by the "
+"iOS Human Interface Guidelines, the user is expected to close apps via the "
+"Home button."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:173
+msgid ""
+"Reloads the currently active scene.\n"
+"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
+"current_scene] was defined yet, [constant ERR_CANT_OPEN] if [member "
+"current_scene] cannot be loaded into a [PackedScene], or [constant "
+"ERR_CANT_CREATE] if the scene cannot be instantiated."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:181
+msgid ""
+"If [code]true[/code], the application automatically accepts quitting. "
+"Enabled by default.\n"
+"For mobile platforms, see [method set_quit_on_go_back]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:191
+msgid ""
+"Sets the given [code]property[/code] to [code]value[/code] on all members of "
+"the given group."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:201
+msgid ""
+"Sets the given [code]property[/code] to [code]value[/code] on all members of "
+"the given group, respecting the given [enum GroupCallFlags]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:207
+msgid "Marks the most recent [InputEvent] as handled."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:214
+msgid ""
+"If [code]true[/code], the application quits automatically on going back (e."
+"g. on Android). Enabled by default.\n"
+"To handle 'Go Back' button when this option is disabled, use [constant "
+"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:225
+msgid ""
+"Configures screen stretching to the given [enum StretchMode], [enum "
+"StretchAspect], minimum size and [code]scale[/code]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:231
+msgid "The current scene."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:234
+msgid ""
+"If [code]true[/code], collision shapes will be visible when running the game "
+"from the editor for debugging purposes."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:237
+msgid ""
+"If [code]true[/code], navigation polygons will be visible when running the "
+"game from the editor for debugging purposes."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:240
+msgid "The root of the edited scene."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:243
+msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:246
+msgid ""
+"If [code]true[/code] (default value), enables automatic polling of the "
+"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
+"If [code]false[/code], you need to manually call [method MultiplayerAPI."
+"poll] to process network packets and deliver RPCs/RSETs. This allows running "
+"RPCs/RSETs in a different loop (e.g. physics, thread, specific time step) "
+"and for manual [Mutex] protection when accessing the [MultiplayerAPI] from "
+"threads."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:250
+msgid ""
+"The peer object to handle the RPC system (effectively enabling networking "
+"when set). Depending on the peer itself, the [SceneTree] will become a "
+"network server (check with [method is_network_server]) and will set the root "
+"node's network mode to master, or it will become a regular peer with the "
+"root node set to puppet. All child nodes are set to inherit the network mode "
+"by default. Handling of networking-related events (connection, "
+"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:253
+msgid ""
+"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
+"following behavior:\n"
+"- 2D and 3D physics will be stopped. This includes signals and collision "
+"detection.\n"
+"- [method Node._process], [method Node._physics_process] and [method Node."
+"_input] will not be called anymore in nodes."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:258
+msgid ""
+"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
+"incoming connections."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:261
+msgid "The [SceneTree]'s root [Viewport]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:264
+msgid "If [code]true[/code], font oversampling is used."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:270
+msgid ""
+"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
+"connected to a server. Only emitted on clients."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:275
+msgid ""
+"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
+"a connection to a server. Only emitted on clients."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:282
+msgid ""
+"Emitted when files are dragged from the OS file manager and dropped in the "
+"game window. The arguments are a list of file paths and the identifier of "
+"the screen where the drag originated."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:289
+msgid "Emitted whenever global menu item is clicked."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:294
+msgid ""
+"Emitted immediately before [method Node._process] is called on every node in "
+"the [SceneTree]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:300
+msgid ""
+"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
+"new peer. ID is the peer ID of the new peer. Clients get notified when other "
+"clients connect to the same server. Upon connecting to a server, a client "
+"also receives this signal for the server (with ID being 1)."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:306
+msgid ""
+"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
+"peer. Clients get notified when other clients disconnect from the same "
+"server."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:312
+msgid "Emitted whenever a node is added to the [SceneTree]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:318
+msgid ""
+"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
+"code] mode."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:324
+msgid "Emitted whenever a node is removed from the [SceneTree]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:330
+msgid "Emitted whenever a node is renamed."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:335
+msgid ""
+"Emitted immediately before [method Node._physics_process] is called on every "
+"node in the [SceneTree]."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:340
+msgid ""
+"Emitted when the screen resolution (fullscreen) or window size (windowed) "
+"changes."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:345
+msgid ""
+"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
+"server. Only emitted on clients."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:350
+msgid ""
+"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
+"renamed, etc.)."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:356
+msgid "Call a group with no flags (default)."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:359
+msgid "Call a group in reverse scene order."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:362
+msgid "Call a group immediately (calls are normally made on idle)."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:365
+msgid "Call a group only once even if the call is executed many times."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:368
+msgid "No stretching."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:371
+msgid "Render stretching in higher resolution (interpolated)."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:374
+msgid ""
+"Keep the specified display resolution. No interpolation. Content may appear "
+"pixelated."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:377
+msgid ""
+"Fill the window with the content stretched to cover excessive space. Content "
+"may appear stretched."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:380
+msgid ""
+"Retain the same aspect ratio by padding with black bars on either axis. This "
+"prevents distortion."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:383
+msgid ""
+"Expand vertically. Left/right black bars may appear if the window is too "
+"wide."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:386
+msgid ""
+"Expand horizontally. Top/bottom black bars may appear if the window is too "
+"tall."
+msgstr ""
+
+#: doc/classes/SceneTree.xml:389
+msgid ""
+"Expand in both directions, retaining the same aspect ratio. This prevents "
+"distortion while avoiding black bars."
+msgstr ""
+
+#: doc/classes/SceneTreeTimer.xml:4
+msgid "One-shot timer."
+msgstr ""
+
+#: doc/classes/SceneTreeTimer.xml:7
+msgid ""
+"A one-shot timer managed by the scene tree, which emits [signal timeout] on "
+"completion. See also [method SceneTree.create_timer].\n"
+"As opposed to [Timer], it does not require the instantiation of a node. "
+"Commonly used to create a one-shot delay timer as in the following example:\n"
+"[codeblock]\n"
+"func some_function():\n"
+" print(\"Timer started.\")\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+" print(\"Timer ended.\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/SceneTreeTimer.xml:22
+msgid "The time remaining."
+msgstr ""
+
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
+msgid "Emitted when the timer reaches 0."
+msgstr ""
+
+#: doc/classes/Script.xml:4
+msgid "A class stored as a resource."
+msgstr ""
+
+#: doc/classes/Script.xml:7
+msgid ""
+"A class stored as a resource. A script extends the functionality of all "
+"objects that instance it.\n"
+"The [code]new[/code] method of a script subclass creates a new instance. "
+"[method Object.set_script] extends an existing object, if that object's "
+"class matches one of the script's base classes."
+msgstr ""
+
+#: doc/classes/Script.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/scripting."
+"html"
+msgstr ""
+
+#: doc/classes/Script.xml:17
+msgid "Returns [code]true[/code] if the script can be instanced."
+msgstr ""
+
+#: doc/classes/Script.xml:23
+msgid "Returns the script directly inherited by this script."
+msgstr ""
+
+#: doc/classes/Script.xml:29
+msgid "Returns the script's base type."
+msgstr ""
+
+#: doc/classes/Script.xml:36
+msgid "Returns the default value of the specified property."
+msgstr ""
+
+#: doc/classes/Script.xml:42
+msgid "Returns a dictionary containing constant names and their values."
+msgstr ""
+
+#: doc/classes/Script.xml:48
+msgid "Returns the list of methods in this [Script]."
+msgstr ""
+
+#: doc/classes/Script.xml:54
+msgid "Returns the list of properties in this [Script]."
+msgstr ""
+
+#: doc/classes/Script.xml:60
+msgid "Returns the list of user signals defined in this [Script]."
+msgstr ""
+
+#: doc/classes/Script.xml:67
+msgid ""
+"Returns [code]true[/code] if the script, or a base class, defines a signal "
+"with the given name."
+msgstr ""
+
+#: doc/classes/Script.xml:73
+msgid "Returns [code]true[/code] if the script contains non-empty source code."
+msgstr ""
+
+#: doc/classes/Script.xml:80
+msgid ""
+"Returns [code]true[/code] if [code]base_object[/code] is an instance of this "
+"script."
+msgstr ""
+
+#: doc/classes/Script.xml:86
+msgid ""
+"Returns [code]true[/code] if the script is a tool script. A tool script can "
+"run in the editor."
+msgstr ""
+
+#: doc/classes/Script.xml:93
+msgid "Reloads the script's class implementation. Returns an error code."
+msgstr ""
+
+#: doc/classes/Script.xml:99
+msgid ""
+"The script source code or an empty string if source code is not available. "
+"When set, does not reload the class implementation automatically."
+msgstr ""
+
+#: doc/classes/ScriptCreateDialog.xml:4
+msgid "The Editor's popup dialog for creating new [Script] files."
+msgstr ""
+
+#: doc/classes/ScriptCreateDialog.xml:7
+msgid ""
+"The [ScriptCreateDialog] creates script files according to a given template "
+"for a given scripting language. The standard use is to configure its fields "
+"prior to calling one of the [method Popup.popup] methods.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" dialog.config(\"Node\", \"res://new_node.gd\") # For in-engine types\n"
+" dialog.config(\"\\\"res://base_node.gd\\\"\", \"res://derived_node.gd\") "
+"# For script types\n"
+" dialog.popup_centered()\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ScriptCreateDialog.xml:25
+msgid "Prefills required fields to configure the ScriptCreateDialog for use."
+msgstr ""
+
+#: doc/classes/ScriptCreateDialog.xml:40
+msgid "Emitted when the user clicks the OK button."
+msgstr ""
+
+#: doc/classes/ScriptEditor.xml:4
+msgid "Godot editor's script editor."
+msgstr ""
+
+#: doc/classes/ScriptEditor.xml:7
+msgid ""
+"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
+"the singleton using [method EditorInterface.get_script_editor]."
+msgstr ""
+
+#: doc/classes/ScriptEditor.xml:31
+msgid "Returns a [Script] that is currently active in editor."
+msgstr ""
+
+#: doc/classes/ScriptEditor.xml:44
+msgid ""
+"Returns an array with all [Script] objects which are currently open in "
+"editor."
+msgstr ""
+
+#: doc/classes/ScriptEditor.xml:51
+msgid "Goes to the specified line in the current script."
+msgstr ""
+
+#: doc/classes/ScriptEditor.xml:59
+msgid ""
+"Opens the script create dialog. The script will extend [code]base_name[/"
+"code]. The file extension can be omitted from [code]base_path[/code]. It "
+"will be added based on the selected scripting language."
+msgstr ""
+
+#: doc/classes/ScriptEditor.xml:67
+msgid ""
+"Emitted when user changed active script. Argument is a freshly activated "
+"[Script]."
+msgstr ""
+
+#: doc/classes/ScriptEditor.xml:73
+msgid ""
+"Emitted when editor is about to close the active script. Argument is a "
+"[Script] that is going to be closed."
+msgstr ""
+
+#: doc/classes/ScrollBar.xml:4
+msgid "Base class for scroll bars."
+msgstr ""
+
+#: doc/classes/ScrollBar.xml:7
+msgid ""
+"Scrollbars are a [Range]-based [Control], that display a draggable area (the "
+"size of the page). Horizontal ([HScrollBar]) and Vertical ([VScrollBar]) "
+"versions are available."
+msgstr ""
+
+#: doc/classes/ScrollBar.xml:15
+msgid ""
+"Overrides the step used when clicking increment and decrement buttons or "
+"when using arrow keys when the [ScrollBar] is focused."
+msgstr ""
+
+#: doc/classes/ScrollBar.xml:23
+msgid "Emitted when the scrollbar is being scrolled."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:4
+msgid "A helper node for displaying scrollable elements such as lists."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:7
+msgid ""
+"A ScrollContainer node meant to contain a [Control] child. ScrollContainers "
+"will automatically create a scrollbar child ([HScrollBar], [VScrollBar], or "
+"both) when needed and will only draw the Control within the ScrollContainer "
+"area. Scrollbars will automatically be drawn at the right (for vertical) or "
+"bottom (for horizontal) and will enable dragging to move the viewable "
+"Control (and its children) within the ScrollContainer. Scrollbars will also "
+"automatically resize the grabber based on the [member Control.rect_min_size] "
+"of the Control relative to the ScrollContainer. Works great with a [Panel] "
+"control. You can set [code]EXPAND[/code] on the children's size flags, so "
+"they will upscale to the ScrollContainer's size if it's larger (scroll is "
+"invisible for the chosen dimension)."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:16
+msgid ""
+"Ensures the given [code]control[/code] is visible (must be a direct or "
+"indirect child of the ScrollContainer). Used by [member follow_focus]."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:22
+msgid ""
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:36
+msgid ""
+"If [code]true[/code], the ScrollContainer will automatically scroll to "
+"focused children (including indirect children) to make sure they are fully "
+"visible."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:42
+msgid "The current horizontal scroll value."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:45
+msgid "If [code]true[/code], enables horizontal scrolling."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:48
+msgid "The current vertical scroll value."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:51
+msgid "If [code]true[/code], enables vertical scrolling."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:57
+msgid "Emitted when scrolling stops."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:62
+msgid "Emitted when scrolling is started."
+msgstr ""
+
+#: doc/classes/ScrollContainer.xml:70
+msgid "The background [StyleBox] of the [ScrollContainer]."
+msgstr ""
+
+#: doc/classes/SegmentShape2D.xml:4
+msgid "Segment shape for 2D collisions."
+msgstr ""
+
+#: doc/classes/SegmentShape2D.xml:7
+msgid ""
+"Segment shape for 2D collisions. Consists of two points, [code]a[/code] and "
+"[code]b[/code]."
+msgstr ""
+
+#: doc/classes/SegmentShape2D.xml:15
+msgid "The segment's first point position."
+msgstr ""
+
+#: doc/classes/SegmentShape2D.xml:18
+msgid "The segment's second point position."
+msgstr ""
+
+#: doc/classes/Semaphore.xml:4
+msgid "A synchronization semaphore."
+msgstr ""
+
+#: doc/classes/Semaphore.xml:7
+msgid ""
+"A synchronization semaphore which can be used to synchronize multiple "
+"[Thread]s. Initialized to zero on creation. Be careful to avoid deadlocks. "
+"For a binary version, see [Mutex]."
+msgstr ""
+
+#: doc/classes/Semaphore.xml:16
+msgid ""
+"Lowers the [Semaphore], allowing one more thread in. Returns [constant OK] "
+"on success, [constant ERR_BUSY] otherwise."
+msgstr ""
+
+#: doc/classes/Semaphore.xml:22
+msgid ""
+"Tries to wait for the [Semaphore], if its value is zero, blocks until non-"
+"zero. Returns [constant OK] on success, [constant ERR_BUSY] otherwise."
+msgstr ""
+
+#: doc/classes/Separator.xml:4
+msgid "Base class for separators."
+msgstr ""
+
+#: doc/classes/Separator.xml:7
+msgid ""
+"Separator is a [Control] used for separating other controls. It's purely a "
+"visual decoration. Horizontal ([HSeparator]) and Vertical ([VSeparator]) "
+"versions are available."
+msgstr ""
+
+#: doc/classes/Shader.xml:4
+msgid "A custom shader program."
+msgstr ""
+
+#: doc/classes/Shader.xml:7
+msgid ""
+"This class allows you to define a custom shader program that can be used by "
+"a [ShaderMaterial]. Shaders allow you to write your own custom behavior for "
+"rendering objects or updating particle information. For a detailed "
+"explanation and usage, please see the tutorials linked below."
+msgstr ""
+
+#: doc/classes/Shader.xml:10 doc/classes/ShaderMaterial.xml:11
+msgid "https://docs.godotengine.org/en/3.4/tutorials/shading/index.html"
+msgstr ""
+
+#: doc/classes/Shader.xml:11
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/shading/your_first_shader/"
+"what_are_shaders.html"
+msgstr ""
+
+#: doc/classes/Shader.xml:18
+msgid ""
+"Returns the texture that is set as default for the specified parameter.\n"
+"[b]Note:[/b] [code]param[/code] must match the name of the uniform in the "
+"code exactly."
+msgstr ""
+
+#: doc/classes/Shader.xml:25
+msgid ""
+"Returns the shader mode for the shader, either [constant MODE_CANVAS_ITEM], "
+"[constant MODE_SPATIAL] or [constant MODE_PARTICLES]."
+msgstr ""
+
+#: doc/classes/Shader.xml:32
+msgid ""
+"Returns [code]true[/code] if the shader has this param defined as a uniform "
+"in its code.\n"
+"[b]Note:[/b] [code]param[/code] must match the name of the uniform in the "
+"code exactly."
+msgstr ""
+
+#: doc/classes/Shader.xml:41
+msgid ""
+"Sets the default texture to be used with a texture uniform. The default is "
+"used if a texture is not set in the [ShaderMaterial].\n"
+"[b]Note:[/b] [code]param[/code] must match the name of the uniform in the "
+"code exactly."
+msgstr ""
+
+#: doc/classes/Shader.xml:48
+msgid ""
+"Returns the shader's code as the user has written it, not the full generated "
+"code used internally."
+msgstr ""
+
+#: doc/classes/Shader.xml:51
+msgid ""
+"Returns the shader's custom defines. Custom defines can be used in Godot to "
+"add GLSL preprocessor directives (e.g: extensions) required for the shader "
+"logic.\n"
+"[b]Note:[/b] Custom defines are not validated by the Godot shader parser, so "
+"care should be taken when using them."
+msgstr ""
+
+#: doc/classes/Shader.xml:57
+msgid "Mode used to draw all 3D objects."
+msgstr ""
+
+#: doc/classes/Shader.xml:60
+msgid "Mode used to draw all 2D objects."
+msgstr ""
+
+#: doc/classes/Shader.xml:63
+msgid ""
+"Mode used to calculate particle information on a per-particle basis. Not "
+"used for drawing."
+msgstr ""
+
+#: doc/classes/ShaderMaterial.xml:4
+msgid "A material that uses a custom [Shader] program."
+msgstr ""
+
+#: doc/classes/ShaderMaterial.xml:7
+msgid ""
+"A material that uses a custom [Shader] program to render either items to "
+"screen or process particles. You can create multiple materials for the same "
+"shader but configure different values for the uniforms defined in the "
+"shader.\n"
+"[b]Note:[/b] Due to a renderer limitation, emissive [ShaderMaterial]s cannot "
+"emit light when used in a [GIProbe]. Only emissive [SpatialMaterial]s can "
+"emit light in a [GIProbe]."
+msgstr ""
+
+#: doc/classes/ShaderMaterial.xml:18
+msgid ""
+"Returns the current value set for this material of a uniform in the shader."
+msgstr ""
+
+#: doc/classes/ShaderMaterial.xml:25
+msgid ""
+"Returns [code]true[/code] if the property identified by [code]name[/code] "
+"can be reverted to a default value."
+msgstr ""
+
+#: doc/classes/ShaderMaterial.xml:32
+msgid ""
+"Returns the default value of the material property with given [code]name[/"
+"code]."
+msgstr ""
+
+#: doc/classes/ShaderMaterial.xml:40
+msgid ""
+"Changes the value set for this material of a uniform in the shader.\n"
+"[b]Note:[/b] [code]param[/code] must match the name of the uniform in the "
+"code exactly."
+msgstr ""
+
+#: doc/classes/ShaderMaterial.xml:47
+msgid "The [Shader] program used to render this material."
+msgstr ""
+
+#: doc/classes/Shape.xml:4
+msgid "Base class for all 3D shape resources."
+msgstr ""
+
+#: doc/classes/Shape.xml:7
+msgid ""
+"Base class for all 3D shape resources. Nodes that inherit from this can be "
+"used as shapes for a [PhysicsBody] or [Area] objects."
+msgstr ""
+
+#: doc/classes/Shape.xml:16
+msgid ""
+"Returns the [ArrayMesh] used to draw the debug collision for this [Shape]."
+msgstr ""
+
+#: doc/classes/Shape.xml:22
+msgid ""
+"The collision margin for the shape. Used in Bullet Physics only.\n"
+"Collision margins allow collision detection to be more efficient by adding "
+"an extra shell around shapes. Collision algorithms are more expensive when "
+"objects overlap by more than their margin, so a higher value for margins is "
+"better for performance, at the cost of accuracy around edges as it makes "
+"them less sharp."
+msgstr ""
+
+#: doc/classes/Shape2D.xml:4
+msgid "Base class for all 2D shapes."
+msgstr ""
+
+#: doc/classes/Shape2D.xml:7
+msgid "Base class for all 2D shapes. All 2D shape types inherit from this."
+msgstr ""
+
+#: doc/classes/Shape2D.xml:19
+msgid ""
+"Returns [code]true[/code] if this shape is colliding with another.\n"
+"This method needs the transformation matrix for this shape "
+"([code]local_xform[/code]), the shape to check collisions with "
+"([code]with_shape[/code]), and the transformation matrix of that shape "
+"([code]shape_xform[/code])."
+msgstr ""
+
+#: doc/classes/Shape2D.xml:29
+msgid ""
+"Returns a list of the points where this shape touches another. If there are "
+"no collisions the list is empty.\n"
+"This method needs the transformation matrix for this shape "
+"([code]local_xform[/code]), the shape to check collisions with "
+"([code]with_shape[/code]), and the transformation matrix of that shape "
+"([code]shape_xform[/code])."
+msgstr ""
+
+#: doc/classes/Shape2D.xml:41
+msgid ""
+"Returns whether this shape would collide with another, if a given movement "
+"was applied.\n"
+"This method needs the transformation matrix for this shape "
+"([code]local_xform[/code]), the movement to test on this shape "
+"([code]local_motion[/code]), the shape to check collisions with "
+"([code]with_shape[/code]), the transformation matrix of that shape "
+"([code]shape_xform[/code]), and the movement to test onto the other object "
+"([code]shape_motion[/code])."
+msgstr ""
+
+#: doc/classes/Shape2D.xml:53
+msgid ""
+"Returns a list of the points where this shape would touch another, if a "
+"given movement was applied. If there are no collisions the list is empty.\n"
+"This method needs the transformation matrix for this shape "
+"([code]local_xform[/code]), the movement to test on this shape "
+"([code]local_motion[/code]), the shape to check collisions with "
+"([code]with_shape[/code]), the transformation matrix of that shape "
+"([code]shape_xform[/code]), and the movement to test onto the other object "
+"([code]shape_motion[/code])."
+msgstr ""
+
+#: doc/classes/Shape2D.xml:62
+msgid ""
+"Draws a solid shape onto a [CanvasItem] with the [VisualServer] API filled "
+"with the specified [code]color[/code]. The exact drawing method is specific "
+"for each shape and cannot be configured."
+msgstr ""
+
+#: doc/classes/Shape2D.xml:68
+msgid "The shape's custom solver bias."
+msgstr ""
+
+#: doc/classes/ShortCut.xml:4
+msgid "A shortcut for binding input."
+msgstr ""
+
+#: doc/classes/ShortCut.xml:7
+msgid ""
+"A shortcut for binding input.\n"
+"Shortcuts are commonly used for interacting with a [Control] element from a "
+"[InputEvent]."
+msgstr ""
+
+#: doc/classes/ShortCut.xml:16
+msgid "Returns the shortcut's [InputEvent] as a [String]."
+msgstr ""
+
+#: doc/classes/ShortCut.xml:23
+msgid ""
+"Returns [code]true[/code] if the shortcut's [InputEvent] equals [code]event[/"
+"code]."
+msgstr ""
+
+#: doc/classes/ShortCut.xml:29
+msgid "If [code]true[/code], this shortcut is valid."
+msgstr ""
+
+#: doc/classes/ShortCut.xml:35
+msgid ""
+"The shortcut's [InputEvent].\n"
+"Generally the [InputEvent] is a keyboard key, though it can be any "
+"[InputEvent]."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:4
+msgid "Skeleton for characters and animated objects."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:7
+msgid ""
+"Skeleton provides a hierarchical interface for managing bones, including "
+"pose, rest and animation (see [Animation]). It can also use ragdoll "
+"physics.\n"
+"The overall transform of a bone with respect to the skeleton is determined "
+"by the following hierarchical order: rest pose, custom pose and pose.\n"
+"Note that \"global pose\" below refers to the overall transform of the bone "
+"with respect to skeleton, so it not the actual global/world transform of the "
+"bone."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:20
+msgid ""
+"Adds a bone, with name [code]name[/code]. [method get_bone_count] will "
+"become the bone index."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:28 doc/classes/Skeleton.xml:109
+#: doc/classes/Skeleton.xml:212
+msgid "[i]Deprecated soon.[/i]"
+msgstr ""
+
+#: doc/classes/Skeleton.xml:34
+msgid "Clear all the bones in this skeleton."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:46
+msgid "Returns the bone index that matches [code]name[/code] as its name."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:52
+msgid "Returns the amount of bones in the skeleton."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:59
+msgid ""
+"Returns the custom pose of the specified bone. Custom pose is applied on top "
+"of the rest pose."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:66
+msgid ""
+"Returns the overall transform of the specified bone, with respect to the "
+"skeleton. Being relative to the skeleton frame, this is not the actual "
+"\"global\" transform of the bone."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:73
+msgid ""
+"Returns the overall transform of the specified bone, with respect to the "
+"skeleton, but without any global pose overrides. Being relative to the "
+"skeleton frame, this is not the actual \"global\" transform of the bone."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:80
+msgid "Returns the name of the bone at index [code]index[/code]."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:87
+msgid ""
+"Returns the bone index which is the parent of the bone at [code]bone_idx[/"
+"code]. If -1, then bone has no parent.\n"
+"[b]Note:[/b] The parent bone returned will always be less than "
+"[code]bone_idx[/code]."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:95
+msgid ""
+"Returns the pose transform of the specified bone. Pose is applied on top of "
+"the custom pose, which is applied on top the rest pose."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:102
+msgid "Returns the rest transform for a bone [code]bone_idx[/code]."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:187
+msgid ""
+"Sets the bone index [code]parent_idx[/code] as the parent of the bone at "
+"[code]bone_idx[/code]. If -1, then bone has no parent.\n"
+"[b]Note:[/b] [code]parent_idx[/code] must be less than [code]bone_idx[/code]."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:196
+msgid "Sets the pose transform for bone [code]bone_idx[/code]."
+msgstr ""
+
+#: doc/classes/Skeleton.xml:204
+msgid "Sets the rest transform for bone [code]bone_idx[/code]."
+msgstr ""
+
+#: doc/classes/Skeleton2D.xml:4
+msgid "Skeleton for 2D characters and animated objects."
+msgstr ""
+
+#: doc/classes/Skeleton2D.xml:7
+msgid ""
+"Skeleton2D parents a hierarchy of [Bone2D] objects. It is a requirement of "
+"[Bone2D]. Skeleton2D holds a reference to the rest pose of its children and "
+"acts as a single point of access to its bones."
+msgstr ""
+
+#: doc/classes/Skeleton2D.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/animation/2d_skeletons.html"
+msgstr ""
+
+#: doc/classes/Skeleton2D.xml:17
+msgid ""
+"Returns a [Bone2D] from the node hierarchy parented by Skeleton2D. The "
+"object to return is identified by the parameter [code]idx[/code]. Bones are "
+"indexed by descending the node hierarchy from top to bottom, adding the "
+"children of each branch before moving to the next sibling."
+msgstr ""
+
+#: doc/classes/Skeleton2D.xml:23
+msgid ""
+"Returns the number of [Bone2D] nodes in the node hierarchy parented by "
+"Skeleton2D."
+msgstr ""
+
+#: doc/classes/Skeleton2D.xml:29
+msgid "Returns the [RID] of a Skeleton2D instance."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:4
+msgid ""
+"SkeletonIK is used to place the end bone of a [Skeleton] bone chain at a "
+"certain point in 3D by rotating all bones in the chain accordingly."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:7
+msgid ""
+"SkeletonIK is used to place the end bone of a [Skeleton] bone chain at a "
+"certain point in 3D by rotating all bones in the chain accordingly. A "
+"typical scenario for IK in games is to place a characters feet on the ground "
+"or a characters hands on a currently hold object. SkeletonIK uses "
+"FabrikInverseKinematic internally to solve the bone chain and applies the "
+"results to the [Skeleton] [code]bones_global_pose_override[/code] property "
+"for all affected bones in the chain. If fully applied this overwrites any "
+"bone transform from [Animation]s or bone custom poses set by users. The "
+"applied amount can be controlled with the [code]interpolation[/code] "
+"property.\n"
+"[codeblock]\n"
+"# Apply IK effect automatically on every new frame (not the current)\n"
+"skeleton_ik_node.start()\n"
+"\n"
+"# Apply IK effect only on the current frame\n"
+"skeleton_ik_node.start(true)\n"
+"\n"
+"# Stop IK effect and reset bones_global_pose_override on Skeleton\n"
+"skeleton_ik_node.stop()\n"
+"\n"
+"# Apply full IK effect\n"
+"skeleton_ik_node.set_interpolation(1.0)\n"
+"\n"
+"# Apply half IK effect\n"
+"skeleton_ik_node.set_interpolation(0.5)\n"
+"\n"
+"# Apply zero IK effect (a value at or below 0.01 also removes "
+"bones_global_pose_override on Skeleton)\n"
+"skeleton_ik_node.set_interpolation(0.0)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:35
+msgid ""
+"Returns the parent [Skeleton] Node that was present when SkeletonIK entered "
+"the [SceneTree]. Returns null if the parent node was not a [Skeleton] Node "
+"when SkeletonIK entered the [SceneTree]."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:41
+msgid ""
+"Returns [code]true[/code] if SkeletonIK is applying IK effects on continues "
+"frames to the [Skeleton] bones. Returns [code]false[/code] if SkeletonIK is "
+"stopped or [method start] was used with the [code]one_time[/code] parameter "
+"set to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:48
+msgid ""
+"Starts applying IK effects on each frame to the [Skeleton] bones but will "
+"only take effect starting on the next frame. If [code]one_time[/code] is "
+"[code]true[/code], this will take effect immediately but also reset on the "
+"next frame."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:54
+msgid ""
+"Stops applying IK effects on each frame to the [Skeleton] bones and also "
+"calls [method Skeleton.clear_bones_global_pose_override] to remove existing "
+"overrides on all bones."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:60
+msgid ""
+"Interpolation value for how much the IK results are applied to the current "
+"skeleton bone chain. A value of [code]1.0[/code] will overwrite all skeleton "
+"bone transforms completely while a value of [code]0.0[/code] will visually "
+"disable the SkeletonIK. A value at or below [code]0.01[/code] also calls "
+"[method Skeleton.clear_bones_global_pose_override]."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:63
+msgid ""
+"Secondary target position (first is [member target] property or [member "
+"target_node]) for the IK chain. Use magnet position (pole target) to control "
+"the bending of the IK chain. Only works if the bone chain has more than 2 "
+"bones. The middle chain bone position will be linearly interpolated with the "
+"magnet position."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:66
+msgid ""
+"Number of iteration loops used by the IK solver to produce more accurate "
+"(and elegant) bone chain results."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:69
+msgid ""
+"The minimum distance between bone and goal target. If the distance is below "
+"this value, the IK solver stops further iterations."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:72
+msgid ""
+"If [code]true[/code] overwrites the rotation of the tip bone with the "
+"rotation of the [member target] (or [member target_node] if defined)."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:75
+msgid "The name of the current root bone, the first bone in the IK chain."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:78
+msgid ""
+"First target of the IK chain where the tip bone is placed and, if [member "
+"override_tip_basis] is [code]true[/code], how the tip bone is rotated. If a "
+"[member target_node] path is available the nodes transform is used instead "
+"and this property is ignored."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:81
+msgid ""
+"Target node [NodePath] for the IK chain. If available, the node's current "
+"[Transform] is used instead of the [member target] property."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:84
+msgid ""
+"The name of the current tip bone, the last bone in the IK chain placed at "
+"the [member target] transform (or [member target_node] if defined)."
+msgstr ""
+
+#: doc/classes/SkeletonIK.xml:87
+msgid ""
+"If [code]true[/code], instructs the IK solver to consider the secondary "
+"magnet target (pole target) when calculating the bone chain. Use the magnet "
+"position (pole target) to control the bending of the IK chain."
+msgstr ""
+
+#: doc/classes/Sky.xml:4 doc/classes/Sky.xml:7
+msgid "The base class for [PanoramaSky] and [ProceduralSky]."
+msgstr ""
+
+#: doc/classes/Sky.xml:15
+msgid ""
+"The [Sky]'s radiance map size. The higher the radiance map size, the more "
+"detailed the lighting from the [Sky] will be.\n"
+"See [enum RadianceSize] constants for values.\n"
+"[b]Note:[/b] You will only benefit from high radiance sizes if you have "
+"perfectly sharp reflective surfaces in your project and are not using "
+"[ReflectionProbe]s or [GIProbe]s. For most projects, keeping [member "
+"radiance_size] to the default value is the best compromise between visuals "
+"and performance. Be careful when using high radiance size values as these "
+"can cause crashes on low-end GPUs."
+msgstr ""
+
+#: doc/classes/Sky.xml:22
+msgid "Radiance texture size is 32×32 pixels."
+msgstr ""
+
+#: doc/classes/Sky.xml:25
+msgid "Radiance texture size is 64×64 pixels."
+msgstr ""
+
+#: doc/classes/Sky.xml:28
+msgid "Radiance texture size is 128×128 pixels."
+msgstr ""
+
+#: doc/classes/Sky.xml:31
+msgid "Radiance texture size is 256×256 pixels."
+msgstr ""
+
+#: doc/classes/Sky.xml:34
+msgid "Radiance texture size is 512×512 pixels."
+msgstr ""
+
+#: doc/classes/Sky.xml:37
+msgid ""
+"Radiance texture size is 1024×1024 pixels.\n"
+"[b]Note:[/b] [constant RADIANCE_SIZE_1024] is not exposed in the inspector "
+"as it is known to cause GPU hangs on certain systems."
+msgstr ""
+
+#: doc/classes/Sky.xml:41
+msgid ""
+"Radiance texture size is 2048×2048 pixels.\n"
+"[b]Note:[/b] [constant RADIANCE_SIZE_2048] is not exposed in the inspector "
+"as it is known to cause GPU hangs on certain systems."
+msgstr ""
+
+#: doc/classes/Sky.xml:45
+msgid "Represents the size of the [enum RadianceSize] enum."
+msgstr ""
+
+#: doc/classes/Slider.xml:4
+msgid "Base class for GUI sliders."
+msgstr ""
+
+#: doc/classes/Slider.xml:7
+msgid ""
+"Base class for GUI sliders.\n"
+"[b]Note:[/b] The [signal Range.changed] and [signal Range.value_changed] "
+"signals are part of the [Range] class which this class inherits from."
+msgstr ""
+
+#: doc/classes/Slider.xml:16
+msgid ""
+"If [code]true[/code], the slider can be interacted with. If [code]false[/"
+"code], the value can be changed only by code."
+msgstr ""
+
+#: doc/classes/Slider.xml:20
+msgid "If [code]true[/code], the value can be changed using the mouse wheel."
+msgstr ""
+
+#: doc/classes/Slider.xml:24
+msgid ""
+"Number of ticks displayed on the slider, including border ticks. Ticks are "
+"uniformly-distributed value markers."
+msgstr ""
+
+#: doc/classes/Slider.xml:27
+msgid ""
+"If [code]true[/code], the slider will display ticks for minimum and maximum "
+"values."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:4
+msgid "Slider between two PhysicsBodies in 3D."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:7
+msgid ""
+"Slides across the X axis of the pivot object. See also [Generic6DOFJoint]."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:28
+msgid ""
+"The amount of damping of the rotation when the limit is surpassed.\n"
+"A lower damping value allows a rotation initiated by body A to travel to "
+"body B slower."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:35
+msgid ""
+"The amount of restitution of the rotation when the limit is surpassed.\n"
+"Does not affect damping."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:39
+msgid ""
+"A factor applied to the all rotation once the limit is surpassed.\n"
+"Makes all rotation slower when between 0 and 1."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:52 doc/classes/SliderJoint.xml:147
+msgid "A factor applied to the all rotation in the limits."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:61 doc/classes/SliderJoint.xml:156
+msgid ""
+"A factor applied to the all rotation across axes orthogonal to the slider."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:64
+msgid ""
+"The amount of damping that happens once the limit defined by [member "
+"linear_limit/lower_distance] and [member linear_limit/upper_distance] is "
+"surpassed."
+msgstr ""
+
+#: doc/classes/SliderJoint.xml:70
+msgid ""
+"The amount of restitution once the limits are surpassed. The lower, the more "
+"velocity-energy gets lost."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:4
+msgid "A soft mesh physics body."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:7
+msgid ""
+"A deformable physics body. Used to create elastic or deformable objects such "
+"as cloth, rubber, or other flexible materials."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/physics/soft_body.html"
+msgstr ""
+
+#: doc/classes/SoftBody.xml:44
+msgid "Returns local translation of a vertex in the surface array."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:51
+msgid "Returns [code]true[/code] if vertex is set to pinned."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:83
+msgid ""
+"Sets the pinned state of a surface vertex. When set to [code]true[/code], "
+"the optional [code]attachment_path[/code] can define a [Spatial] the pinned "
+"vertex will be attached to."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:91
+msgid ""
+"The physics layers this SoftBody is in.\n"
+"Collidable objects can exist in any of 32 different layers. These layers "
+"work like a tagging system, and are not visual. A collidable can use these "
+"layers to select with which objects it can collide, using the collision_mask "
+"property.\n"
+"A contact is detected if object A is in any of the layers that object B "
+"scans, or object B is in any layer scanned by object A. See [url=https://"
+"docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
+"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
+"documentation for more information."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:96
+msgid ""
+"The physics layers this SoftBody scans for collisions. See [url=https://docs."
+"godotengine.org/en/3.4/tutorials/physics/physics_introduction.html#collision-"
+"layers-and-masks]Collision layers and masks[/url] in the documentation for "
+"more information."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:105
+msgid "[NodePath] to a [CollisionObject] this SoftBody should avoid clipping."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:108
+msgid ""
+"If [code]true[/code], the [SoftBody] is simulated in physics. Can be set to "
+"[code]false[/code] to pause the physics simulation."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:115
+msgid "If [code]true[/code], the [SoftBody] will respond to [RayCast]s."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:118
+msgid ""
+"Increasing this value will improve the resulting simulation, but can affect "
+"performance. Use with care."
+msgstr ""
+
+#: doc/classes/SoftBody.xml:121
+msgid "The SoftBody's mass."
+msgstr ""
+
+#: doc/classes/Spatial.xml:4
+msgid "Most basic 3D game object, parent of all 3D-related nodes."
+msgstr ""
+
+#: doc/classes/Spatial.xml:7
+msgid ""
+"Most basic 3D game object, with a 3D [Transform] and visibility settings. "
+"All other 3D game objects inherit from Spatial. Use [Spatial] as a parent "
+"node to move, scale, rotate and show/hide children in a 3D project.\n"
+"Affine operations (rotate, scale, translate) happen in parent's local "
+"coordinate system, unless the [Spatial] object is set as top-level. Affine "
+"operations in this coordinate system correspond to direct affine operations "
+"on the [Spatial]'s transform. The word local below refers to this coordinate "
+"system. The coordinate system that is attached to the [Spatial] object "
+"itself is referred to as object-local coordinate system.\n"
+"[b]Note:[/b] Unless otherwise specified, all methods that have angle "
+"parameters must have angles specified as [i]radians[/i]. To convert degrees "
+"to radians, use [method @GDScript.deg2rad]."
+msgstr ""
+
+#: doc/classes/Spatial.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/3d/introduction_to_3d.html"
+msgstr ""
+
+#: doc/classes/Spatial.xml:13 doc/classes/Vector3.xml:16
+msgid "https://github.com/godotengine/godot-demo-projects/tree/master/3d"
+msgstr ""
+
+#: doc/classes/Spatial.xml:25
+msgid ""
+"Returns the parent [Spatial], or an empty [Object] if no parent exists or "
+"parent is not of type [Spatial]."
+msgstr ""
+
+#: doc/classes/Spatial.xml:31
+msgid ""
+"Returns the current [World] resource this [Spatial] node is registered to."
+msgstr ""
+
+#: doc/classes/Spatial.xml:39
+msgid ""
+"Rotates the global (world) transformation around axis, a unit [Vector3], by "
+"specified angle in radians. The rotation axis is in global coordinate system."
+msgstr ""
+
+#: doc/classes/Spatial.xml:46
+msgid ""
+"Scales the global (world) transformation by the given [Vector3] scale "
+"factors."
+msgstr ""
+
+#: doc/classes/Spatial.xml:53
+msgid ""
+"Moves the global (world) transformation by [Vector3] offset. The offset is "
+"in global coordinate system."
+msgstr ""
+
+#: doc/classes/Spatial.xml:59
+msgid ""
+"Disables rendering of this node. Changes [member visible] to [code]false[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Spatial.xml:65
+msgid ""
+"Returns whether node notifies about its local transformation changes. "
+"[Spatial] will not propagate this by default."
+msgstr ""
+
+#: doc/classes/Spatial.xml:71
+msgid ""
+"Returns whether this node uses a scale of [code](1, 1, 1)[/code] or its "
+"local transformation scale."
+msgstr ""
+
+#: doc/classes/Spatial.xml:77
+msgid ""
+"Returns whether this node is set as Toplevel, that is whether it ignores its "
+"parent nodes transformations."
+msgstr ""
+
+#: doc/classes/Spatial.xml:83
+msgid ""
+"Returns whether the node notifies about its global and local transformation "
+"changes. [Spatial] will not propagate this by default."
+msgstr ""
+
+#: doc/classes/Spatial.xml:97
+msgid ""
+"Rotates itself so that the local -Z axis points towards the [code]target[/"
+"code] position.\n"
+"The transform will first be rotated around the given [code]up[/code] vector, "
+"and then fully aligned to the target by a further rotation around an axis "
+"perpendicular to both the [code]target[/code] and [code]up[/code] vectors.\n"
+"Operations take place in global space."
+msgstr ""
+
+#: doc/classes/Spatial.xml:108
+msgid ""
+"Moves the node to the specified [code]position[/code], and then rotates "
+"itself to point toward the [code]target[/code] as per [method look_at]. "
+"Operations take place in global space."
+msgstr ""
+
+#: doc/classes/Spatial.xml:114
+msgid ""
+"Resets this node's transformations (like scale, skew and taper) preserving "
+"its rotation and translation by performing Gram-Schmidt orthonormalization "
+"on this node's [Transform]."
+msgstr ""
+
+#: doc/classes/Spatial.xml:122
+msgid ""
+"Rotates the local transformation around axis, a unit [Vector3], by specified "
+"angle in radians."
+msgstr ""
+
+#: doc/classes/Spatial.xml:130
+msgid ""
+"Rotates the local transformation around axis, a unit [Vector3], by specified "
+"angle in radians. The rotation axis is in object-local coordinate system."
+msgstr ""
+
+#: doc/classes/Spatial.xml:137
+msgid "Rotates the local transformation around the X axis by angle in radians."
+msgstr ""
+
+#: doc/classes/Spatial.xml:144
+msgid "Rotates the local transformation around the Y axis by angle in radians."
+msgstr ""
+
+#: doc/classes/Spatial.xml:151
+msgid "Rotates the local transformation around the Z axis by angle in radians."
+msgstr ""
+
+#: doc/classes/Spatial.xml:158
+msgid ""
+"Scales the local transformation by given 3D scale factors in object-local "
+"coordinate system."
+msgstr ""
+
+#: doc/classes/Spatial.xml:165
+msgid ""
+"Makes the node ignore its parents transformations. Node transformations are "
+"only in global space."
+msgstr ""
+
+#: doc/classes/Spatial.xml:172
+msgid ""
+"Sets whether the node uses a scale of [code](1, 1, 1)[/code] or its local "
+"transformation scale. Changes to the local transformation scale are "
+"preserved."
+msgstr ""
+
+#: doc/classes/Spatial.xml:178
+msgid ""
+"Reset all transformations for this node (sets its [Transform] to the "
+"identity matrix)."
+msgstr ""
+
+#: doc/classes/Spatial.xml:185
+msgid ""
+"Sets whether the node ignores notification that its transformation (global "
+"or local) changed."
+msgstr ""
+
+#: doc/classes/Spatial.xml:192
+msgid ""
+"Sets whether the node notifies about its local transformation changes. "
+"[Spatial] will not propagate this by default."
+msgstr ""
+
+#: doc/classes/Spatial.xml:199
+msgid ""
+"Sets whether the node notifies about its global and local transformation "
+"changes. [Spatial] will not propagate this by default, unless it is in the "
+"editor context and it has a valid gizmo."
+msgstr ""
+
+#: doc/classes/Spatial.xml:205
+msgid ""
+"Enables rendering of this node. Changes [member visible] to [code]true[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Spatial.xml:212
+msgid ""
+"Transforms [code]local_point[/code] from this node's local space to world "
+"space."
+msgstr ""
+
+#: doc/classes/Spatial.xml:219
+msgid ""
+"Transforms [code]global_point[/code] from world space to this node's local "
+"space."
+msgstr ""
+
+#: doc/classes/Spatial.xml:226
+msgid ""
+"Changes the node's position by the given offset [Vector3].\n"
+"Note that the translation [code]offset[/code] is affected by the node's "
+"scale, so if scaled by e.g. [code](10, 1, 1)[/code], a translation by an "
+"offset of [code](2, 0, 0)[/code] would actually add 20 ([code]2 * 10[/code]) "
+"to the X coordinate."
+msgstr ""
+
+#: doc/classes/Spatial.xml:234
+msgid ""
+"Changes the node's position by the given offset [Vector3] in local space."
+msgstr ""
+
+#: doc/classes/Spatial.xml:240
+msgid "Updates the [SpatialGizmo] of this node."
+msgstr ""
+
+#: doc/classes/Spatial.xml:246
+msgid ""
+"The [SpatialGizmo] for this node. Used for example in [EditorSpatialGizmo] "
+"as custom visualization and editing handles in Editor."
+msgstr ""
+
+#: doc/classes/Spatial.xml:249
+msgid "World space (global) [Transform] of this node."
+msgstr ""
+
+#: doc/classes/Spatial.xml:252
+msgid ""
+"Rotation part of the local transformation in radians, specified in terms of "
+"YXZ-Euler angles in the format (X angle, Y angle, Z angle).\n"
+"[b]Note:[/b] In the mathematical sense, rotation is a matrix and not a "
+"vector. The three Euler angles, which are the three independent parameters "
+"of the Euler-angle parametrization of the rotation matrix, are stored in a "
+"[Vector3] data structure not because the rotation is a vector, but only "
+"because [Vector3] exists as a convenient data-structure to store 3 floating-"
+"point numbers. Therefore, applying affine operations on the rotation \"vector"
+"\" is not meaningful."
+msgstr ""
+
+#: doc/classes/Spatial.xml:256
+msgid ""
+"Rotation part of the local transformation in degrees, specified in terms of "
+"YXZ-Euler angles in the format (X angle, Y angle, Z angle)."
+msgstr ""
+
+#: doc/classes/Spatial.xml:259
+msgid "Scale part of the local transformation."
+msgstr ""
+
+#: doc/classes/Spatial.xml:262
+msgid "Local space [Transform] of this node, with respect to the parent node."
+msgstr ""
+
+#: doc/classes/Spatial.xml:265
+msgid "Local translation of this node."
+msgstr ""
+
+#: doc/classes/Spatial.xml:268
+msgid ""
+"If [code]true[/code], this node is drawn. The node is only visible if all of "
+"its antecedents are visible as well (in other words, [method "
+"is_visible_in_tree] must return [code]true[/code])."
+msgstr ""
+
+#: doc/classes/Spatial.xml:274
+msgid ""
+"Emitted by portal system gameplay monitor when a node enters the gameplay "
+"area."
+msgstr ""
+
+#: doc/classes/Spatial.xml:279
+msgid ""
+"Emitted by portal system gameplay monitor when a node exits the gameplay "
+"area."
+msgstr ""
+
+#: doc/classes/Spatial.xml:284
+msgid "Emitted when node visibility changes."
+msgstr ""
+
+#: doc/classes/Spatial.xml:290
+msgid ""
+"Spatial nodes receives this notification when their global transform "
+"changes. This means that either the current or a parent node changed its "
+"transform.\n"
+"In order for [constant NOTIFICATION_TRANSFORM_CHANGED] to work, users first "
+"need to ask for it, with [method set_notify_transform]. The notification is "
+"also sent if the node is in the editor context and it has a valid gizmo."
+msgstr ""
+
+#: doc/classes/Spatial.xml:294
+msgid ""
+"Spatial nodes receives this notification when they are registered to new "
+"[World] resource."
+msgstr ""
+
+#: doc/classes/Spatial.xml:297
+msgid ""
+"Spatial nodes receives this notification when they are unregistered from "
+"current [World] resource."
+msgstr ""
+
+#: doc/classes/Spatial.xml:300
+msgid "Spatial nodes receives this notification when their visibility changes."
+msgstr ""
+
+#: doc/classes/Spatial.xml:303
+msgid ""
+"Spatial nodes receives this notification if the portal system gameplay "
+"monitor detects they have entered the gameplay area."
+msgstr ""
+
+#: doc/classes/Spatial.xml:306
+msgid ""
+"Spatial nodes receives this notification if the portal system gameplay "
+"monitor detects they have exited the gameplay area."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:4
+msgid "Default 3D rendering material."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:7
+msgid ""
+"This provides a default material with a wide variety of rendering features "
+"and properties without the need to write shader code. See the tutorial below "
+"for details."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:10
+msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/spatial_material.html"
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:17
+msgid "Returns [code]true[/code], if the specified [enum Feature] is enabled."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:24
+msgid ""
+"Returns [code]true[/code], if the specified flag is enabled. See [enum "
+"Flags] enumerator for options."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:31
+msgid ""
+"Returns the [Texture] associated with the specified [enum TextureParam]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:39
+msgid ""
+"If [code]true[/code], enables the specified [enum Feature]. Many features "
+"that are available in [SpatialMaterial]s need to be enabled before use. This "
+"way the cost for using the feature is only incurred when specified. Features "
+"can also be enabled by setting the corresponding member to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:47
+msgid ""
+"If [code]true[/code], enables the specified flag. Flags are optional "
+"behaviour that can be turned on and off. Only one flag can be enabled at a "
+"time with this function, the flag enumerators cannot be bit-masked together "
+"to enable or disable multiple flags at once. Flags can also be enabled by "
+"setting the corresponding member to [code]true[/code]. See [enum Flags] "
+"enumerator for options."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:55
+msgid ""
+"Sets the [Texture] to be used by the specified [enum TextureParam]. This "
+"function is called when setting members ending in [code]*_texture[/code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:61
+msgid "The material's base color."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:64
+msgid ""
+"Texture to multiply by [member albedo_color]. Used for basic texturing of "
+"objects."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:67
+msgid "The strength of the anisotropy effect."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:70
+msgid ""
+"If [code]true[/code], anisotropy is enabled. Changes the shape of the "
+"specular blob and aligns it to tangent space. Mesh tangents are needed for "
+"this to work. If the mesh does not contain tangents the anisotropy effect "
+"will appear broken."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:73
+msgid "Texture that offsets the tangent map for anisotropy calculations."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:76
+msgid ""
+"If [code]true[/code], ambient occlusion is enabled. Ambient occlusion "
+"darkens areas based on the [member ao_texture]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:79
+msgid ""
+"Amount that ambient occlusion affects lighting from lights. If [code]0[/"
+"code], ambient occlusion only affects ambient light. If [code]1[/code], "
+"ambient occlusion affects lights just as much as it affects ambient light. "
+"This can be used to impact the strength of the ambient occlusion effect, but "
+"typically looks unrealistic."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:82
+msgid ""
+"If [code]true[/code], use [code]UV2[/code] coordinates to look up from the "
+"[member ao_texture]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:85
+msgid ""
+"Texture that defines the amount of ambient occlusion for a given point on "
+"the object."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:88 doc/classes/SpatialMaterial.xml:325
+msgid ""
+"Specifies the channel of the [member ao_texture] in which the ambient "
+"occlusion information is stored. This is useful when you store the "
+"information for multiple effects in a single texture. For example if you "
+"stored metallic in the red channel, roughness in the blue, and ambient "
+"occlusion in the green you could reduce the number of textures you use."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:91
+msgid ""
+"Sets the strength of the clearcoat effect. Setting to [code]0[/code] looks "
+"the same as disabling the clearcoat effect."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:94
+msgid ""
+"If [code]true[/code], clearcoat rendering is enabled. Adds a secondary "
+"transparent pass to the lighting calculation resulting in an added specular "
+"blob. This makes materials appear as if they have a clear layer on them that "
+"can be either glossy or rough.\n"
+"[b]Note:[/b] Clearcoat rendering is not visible if the material has [member "
+"flags_unshaded] set to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:98
+msgid ""
+"Sets the roughness of the clearcoat pass. A higher value results in a "
+"smoother clearcoat while a lower value results in a rougher clearcoat."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:101
+msgid ""
+"Texture that defines the strength of the clearcoat effect and the glossiness "
+"of the clearcoat. Strength is specified in the red channel while glossiness "
+"is specified in the green channel."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:104
+msgid ""
+"If [code]true[/code], the shader will read depth texture at multiple points "
+"along the view ray to determine occlusion and parrallax. This can be very "
+"performance demanding, but results in more realistic looking depth mapping."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:107
+msgid ""
+"If [code]true[/code], depth mapping is enabled (also called \"parallax "
+"mapping\" or \"height mapping\"). See also [member normal_enabled].\n"
+"[b]Note:[/b] Depth mapping is not supported if triplanar mapping is used on "
+"the same material. The value of [member depth_enabled] will be ignored if "
+"[member uv1_triplanar] is enabled."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:111
+msgid ""
+"If [code]true[/code], direction of the binormal is flipped before using in "
+"the depth effect. This may be necessary if you have encoded your binormals "
+"in a way that is conflicting with the depth effect."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:114
+msgid ""
+"If [code]true[/code], direction of the tangent is flipped before using in "
+"the depth effect. This may be necessary if you have encoded your tangents in "
+"a way that is conflicting with the depth effect."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:117
+msgid ""
+"Number of layers to use when using [member depth_deep_parallax] and the view "
+"direction is perpendicular to the surface of the object. A higher number "
+"will be more performance demanding while a lower number may not look as "
+"crisp."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:120
+msgid ""
+"Number of layers to use when using [member depth_deep_parallax] and the view "
+"direction is parallel to the surface of the object. A higher number will be "
+"more performance demanding while a lower number may not look as crisp."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:123
+msgid ""
+"Scales the depth offset effect. A higher number will create a larger depth."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:126
+msgid ""
+"Texture used to determine depth at a given pixel. Depth is always stored in "
+"the red channel."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:129
+msgid "Texture that specifies the color of the detail overlay."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:132
+msgid ""
+"Specifies how the [member detail_albedo] should blend with the current "
+"[code]ALBEDO[/code]. See [enum BlendMode] for options."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:135
+msgid ""
+"If [code]true[/code], enables the detail overlay. Detail is a second texture "
+"that gets mixed over the surface of the object based on [member "
+"detail_mask]. This can be used to add variation to objects, or to blend "
+"between two different albedo/normal textures."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:138
+msgid ""
+"Texture used to specify how the detail textures get blended with the base "
+"textures."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:141
+msgid ""
+"Texture that specifies the per-pixel normal of the detail overlay.\n"
+"[b]Note:[/b] Godot expects the normal map to use X+, Y-, and Z+ coordinates. "
+"See [url=http://wiki.polycount.com/wiki/"
+"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for "
+"a comparison of normal map coordinates expected by popular engines."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:145
+msgid ""
+"Specifies whether to use [code]UV[/code] or [code]UV2[/code] for the detail "
+"layer. See [enum DetailUV] for options."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:148
+msgid ""
+"Distance at which the object appears fully opaque.\n"
+"[b]Note:[/b] If [code]distance_fade_max_distance[/code] is less than "
+"[code]distance_fade_min_distance[/code], the behavior will be reversed. The "
+"object will start to fade away at [code]distance_fade_max_distance[/code] "
+"and will fully disappear once it reaches [code]distance_fade_min_distance[/"
+"code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:152
+msgid ""
+"Distance at which the object starts to become visible. If the object is less "
+"than this distance away, it will be invisible.\n"
+"[b]Note:[/b] If [code]distance_fade_min_distance[/code] is greater than "
+"[code]distance_fade_max_distance[/code], the behavior will be reversed. The "
+"object will start to fade away at [code]distance_fade_max_distance[/code] "
+"and will fully disappear once it reaches [code]distance_fade_min_distance[/"
+"code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:156
+msgid ""
+"Specifies which type of fade to use. Can be any of the [enum "
+"DistanceFadeMode]s."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:159
+msgid "The emitted light's color. See [member emission_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:162
+msgid ""
+"If [code]true[/code], the body emits light. Emitting light makes the object "
+"appear brighter. The object can also cast light on other objects if a "
+"[GIProbe] or [BakedLightmap] is used and this object is used in baked "
+"lighting."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:165
+msgid "The emitted light's strength. See [member emission_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:168
+msgid "Use [code]UV2[/code] to read from the [member emission_texture]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:171
+msgid ""
+"Sets how [member emission] interacts with [member emission_texture]. Can "
+"either add or multiply. See [enum EmissionOperator] for options."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:174
+msgid "Texture that specifies how much surface emits light at a given point."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:177
+msgid ""
+"Forces a conversion of the [member albedo_texture] from sRGB space to linear "
+"space."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:180
+msgid "If [code]true[/code], the object receives no ambient light."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:183
+msgid ""
+"If [code]true[/code], the object receives no shadow that would otherwise be "
+"cast onto it."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:186
+msgid ""
+"If [code]true[/code], the shader will compute extra operations to make sure "
+"the normal stays correct when using a non-uniform scale. Only enable if "
+"using non-uniform scaling."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:189
+msgid ""
+"If [code]true[/code], the object is rendered at the same size regardless of "
+"distance."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:192
+msgid ""
+"If [code]true[/code], depth testing is disabled and the object will be drawn "
+"in render order."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:195
+msgid ""
+"If [code]true[/code], transparency is enabled on the body. See also [member "
+"params_blend_mode]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:198
+msgid "If [code]true[/code], the object is unaffected by lighting."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:201
+msgid ""
+"If [code]true[/code], render point size can be changed.\n"
+"[b]Note:[/b] This is only effective for objects whose geometry is point-"
+"based rather than triangle-based. See also [member params_point_size]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:205
+msgid ""
+"If [code]true[/code], enables the \"shadow to opacity\" render mode where "
+"lighting modifies the alpha so shadowed areas are opaque and non-shadowed "
+"areas are transparent. Useful for overlaying shadows onto a camera feed in "
+"AR."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:208
+msgid ""
+"If [code]true[/code], lighting is calculated per vertex rather than per "
+"pixel. This may increase performance on low-end devices."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:211
+msgid ""
+"If [code]true[/code], triplanar mapping is calculated in world space rather "
+"than object local space. See also [member uv1_triplanar]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:214
+msgid ""
+"A high value makes the material appear more like a metal. Non-metals use "
+"their albedo as the diffuse color and add diffuse to the specular "
+"reflection. With non-metals, the reflection appears on top of the albedo "
+"color. Metals use their albedo as a multiplier to the specular reflection "
+"and set the diffuse color to black resulting in a tinted reflection. "
+"Materials work better when fully metal or fully non-metal, values between "
+"[code]0[/code] and [code]1[/code] should only be used for blending between "
+"metal and non-metal sections. To alter the amount of reflection use [member "
+"roughness]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:217
+msgid ""
+"Sets the size of the specular lobe. The specular lobe is the bright spot "
+"that is reflected from light sources.\n"
+"[b]Note:[/b] Unlike [member metallic], this is not energy-conserving, so it "
+"should be left at [code]0.5[/code] in most cases. See also [member "
+"roughness]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:221
+msgid ""
+"Texture used to specify metallic for an object. This is multiplied by "
+"[member metallic]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:224
+msgid ""
+"Specifies the channel of the [member metallic_texture] in which the metallic "
+"information is stored. This is useful when you store the information for "
+"multiple effects in a single texture. For example if you stored metallic in "
+"the red channel, roughness in the blue, and ambient occlusion in the green "
+"you could reduce the number of textures you use."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:227
+msgid "If [code]true[/code], normal mapping is enabled."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:230
+msgid "The strength of the normal map's effect."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:233
+msgid ""
+"Texture used to specify the normal at a given pixel. The "
+"[code]normal_texture[/code] only uses the red and green channels; the blue "
+"and alpha channels are ignored. The normal read from [code]normal_texture[/"
+"code] is oriented around the surface normal provided by the [Mesh].\n"
+"[b]Note:[/b] The mesh must have both normals and tangents defined in its "
+"vertex data. Otherwise, the normal map won't render correctly and will only "
+"appear to darken the whole surface. If creating geometry with [SurfaceTool], "
+"you can use [method SurfaceTool.generate_normals] and [method SurfaceTool."
+"generate_tangents] to automatically generate normals and tangents "
+"respectively.\n"
+"[b]Note:[/b] Godot expects the normal map to use X+, Y-, and Z+ coordinates. "
+"See [url=http://wiki.polycount.com/wiki/"
+"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for "
+"a comparison of normal map coordinates expected by popular engines."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:238
+msgid "Threshold at which the alpha scissor will discard values."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:241
+msgid ""
+"If [code]true[/code], the shader will keep the scale set for the mesh. "
+"Otherwise the scale is lost when billboarding. Only applies when [member "
+"params_billboard_mode] is [constant BILLBOARD_ENABLED]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:244
+msgid ""
+"Controls how the object faces the camera. See [enum BillboardMode].\n"
+"[b]Note:[/b] Billboard mode is not suitable for VR because the left-right "
+"vector of the camera is not horizontal when the screen is attached to your "
+"head instead of on the table. See [url=https://github.com/godotengine/godot/"
+"issues/41567]GitHub issue #41567[/url] for details."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:248
+msgid ""
+"The material's blend mode.\n"
+"[b]Note:[/b] Values other than [code]Mix[/code] force the object into the "
+"transparent pipeline. See [enum BlendMode]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:252
+msgid ""
+"Which side of the object is not drawn when backfaces are rendered. See [enum "
+"CullMode]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:255
+msgid ""
+"Determines when depth rendering takes place. See [enum DepthDrawMode]. See "
+"also [member flags_transparent]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:258
+msgid ""
+"The algorithm used for diffuse light scattering. See [enum DiffuseMode]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:261
+msgid ""
+"If [code]true[/code], enables the vertex grow setting. See [member "
+"params_grow_amount]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:264
+msgid "Grows object vertices in the direction of their normals."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:267
+msgid "Currently unimplemented in Godot."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:270
+msgid "The point size in pixels. See [member flags_use_point_size]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:273
+msgid "The method for rendering the specular blob. See [enum SpecularMode]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:276
+msgid ""
+"If [code]true[/code], the shader will discard all pixels that have an alpha "
+"value less than [member params_alpha_scissor_threshold]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:279
+msgid ""
+"The number of horizontal frames in the particle sprite sheet. Only enabled "
+"when using [constant BILLBOARD_PARTICLES]. See [member "
+"params_billboard_mode]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:282
+msgid ""
+"If [code]true[/code], particle animations are looped. Only enabled when "
+"using [constant BILLBOARD_PARTICLES]. See [member params_billboard_mode]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:285
+msgid ""
+"The number of vertical frames in the particle sprite sheet. Only enabled "
+"when using [constant BILLBOARD_PARTICLES]. See [member "
+"params_billboard_mode]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:288
+msgid ""
+"Distance over which the fade effect takes place. The larger the distance the "
+"longer it takes for an object to fade."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:291
+msgid ""
+"If [code]true[/code], the proximity fade effect is enabled. The proximity "
+"fade effect fades out each pixel based on its distance to another object."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:294
+msgid ""
+"If [code]true[/code], the refraction effect is enabled. Refraction distorts "
+"transparency based on light from behind the object. When using the GLES3 "
+"backend, the material's roughness value will affect the blurriness of the "
+"refraction. Higher roughness values will make the refraction look blurrier."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:297
+msgid ""
+"The strength of the refraction effect. Higher values result in a more "
+"distorted appearance for the refraction."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:300
+msgid ""
+"Texture that controls the strength of the refraction per-pixel. Multiplied "
+"by [member refraction_scale]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:303
+msgid ""
+"Specifies the channel of the [member refraction_texture] in which the "
+"refraction information is stored. This is useful when you store the "
+"information for multiple effects in a single texture. For example if you "
+"stored metallic in the red channel, roughness in the blue, and ambient "
+"occlusion in the green you could reduce the number of textures you use."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:306
+msgid "Sets the strength of the rim lighting effect."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:309
+msgid ""
+"If [code]true[/code], rim effect is enabled. Rim lighting increases the "
+"brightness at glancing angles on an object.\n"
+"[b]Note:[/b] Rim lighting is not visible if the material has [member "
+"flags_unshaded] set to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:313
+msgid ""
+"Texture used to set the strength of the rim lighting effect per-pixel. "
+"Multiplied by [member rim]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:316
+msgid ""
+"The amount of to blend light and albedo color when rendering rim effect. If "
+"[code]0[/code] the light color is used, while [code]1[/code] means albedo "
+"color is used. An intermediate value generally works best."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:319
+msgid ""
+"Surface reflection. A value of [code]0[/code] represents a perfect mirror "
+"while a value of [code]1[/code] completely blurs the reflection. See also "
+"[member metallic]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:322
+msgid ""
+"Texture used to control the roughness per-pixel. Multiplied by [member "
+"roughness]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:328
+msgid ""
+"If [code]true[/code], subsurface scattering is enabled. Emulates light that "
+"penetrates an object's surface, is scattered, and then emerges."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:331
+msgid "The strength of the subsurface scattering effect."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:334
+msgid ""
+"Texture used to control the subsurface scattering strength. Stored in the "
+"red texture channel. Multiplied by [member subsurf_scatter_strength]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:337
+msgid ""
+"The color used by the transmission effect. Represents the light passing "
+"through an object."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:340
+msgid "If [code]true[/code], the transmission effect is enabled."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:343
+msgid ""
+"Texture used to control the transmission effect per-pixel. Added to [member "
+"transmission]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:346
+msgid ""
+"How much to offset the [code]UV[/code] coordinates. This amount will be "
+"added to [code]UV[/code] in the vertex function. This can be used to offset "
+"a texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:349
+msgid ""
+"How much to scale the [code]UV[/code] coordinates. This is multiplied by "
+"[code]UV[/code] in the vertex function."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:352
+msgid ""
+"If [code]true[/code], instead of using [code]UV[/code] textures will use a "
+"triplanar texture lookup to determine how to apply textures. Triplanar uses "
+"the orientation of the object's surface to blend between texture "
+"coordinates. It reads from the source texture 3 times, once for each axis "
+"and then blends between the results based on how closely the pixel aligns "
+"with each axis. This is often used for natural features to get a realistic "
+"blend of materials. Because triplanar texturing requires many more texture "
+"reads per-pixel it is much slower than normal UV texturing. Additionally, "
+"because it is blending the texture between the three axes, it is unsuitable "
+"when you are trying to achieve crisp texturing."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:355 doc/classes/SpatialMaterial.xml:367
+msgid ""
+"A lower number blends the texture more softly while a higher number blends "
+"the texture more sharply."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:358
+msgid ""
+"How much to offset the [code]UV2[/code] coordinates. This amount will be "
+"added to [code]UV2[/code] in the vertex function. This can be used to offset "
+"a texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:361
+msgid ""
+"How much to scale the [code]UV2[/code] coordinates. This is multiplied by "
+"[code]UV2[/code] in the vertex function."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:364
+msgid ""
+"If [code]true[/code], instead of using [code]UV2[/code] textures will use a "
+"triplanar texture lookup to determine how to apply textures. Triplanar uses "
+"the orientation of the object's surface to blend between texture "
+"coordinates. It reads from the source texture 3 times, once for each axis "
+"and then blends between the results based on how closely the pixel aligns "
+"with each axis. This is often used for natural features to get a realistic "
+"blend of materials. Because triplanar texturing requires many more texture "
+"reads per-pixel it is much slower than normal UV texturing. Additionally, "
+"because it is blending the texture between the three axes, it is unsuitable "
+"when you are trying to achieve crisp texturing."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:370
+msgid ""
+"If [code]true[/code], the model's vertex colors are processed as sRGB mode."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:373
+msgid "If [code]true[/code], the vertex color is used as albedo color."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:378
+msgid "Texture specifying per-pixel color."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:381
+msgid "Texture specifying per-pixel metallic value."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:384
+msgid "Texture specifying per-pixel roughness value."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:387
+msgid "Texture specifying per-pixel emission color."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:390
+msgid "Texture specifying per-pixel normal vector."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:393
+msgid "Texture specifying per-pixel rim value."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:396
+msgid "Texture specifying per-pixel clearcoat value."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:399
+msgid ""
+"Texture specifying per-pixel flowmap direction for use with [member "
+"anisotropy]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:402
+msgid "Texture specifying per-pixel ambient occlusion value."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:405
+msgid "Texture specifying per-pixel depth."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:408
+msgid "Texture specifying per-pixel subsurface scattering."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:411
+msgid "Texture specifying per-pixel transmission color."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:414
+msgid "Texture specifying per-pixel refraction strength."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:417
+msgid "Texture specifying per-pixel detail mask blending value."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:420
+msgid "Texture specifying per-pixel detail color."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:423
+msgid "Texture specifying per-pixel detail normal."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:426
+msgid "Represents the size of the [enum TextureParam] enum."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:429
+msgid "Use [code]UV[/code] with the detail texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:432
+msgid "Use [code]UV2[/code] with the detail texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:435
+msgid "Constant for setting [member flags_transparent]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:438
+msgid "Constant for setting [member emission_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:441
+msgid "Constant for setting [member normal_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:444
+msgid "Constant for setting [member rim_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:447
+msgid "Constant for setting [member clearcoat_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:450
+msgid "Constant for setting [member anisotropy_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:453
+msgid "Constant for setting [member ao_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:456
+msgid "Constant for setting [member depth_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:459
+msgid "Constant for setting [member subsurf_scatter_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:462
+msgid "Constant for setting [member transmission_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:465
+msgid "Constant for setting [member refraction_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:468
+msgid "Constant for setting [member detail_enabled]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:474
+msgid ""
+"Default blend mode. The color of the object is blended over the background "
+"based on the object's alpha value."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:477
+msgid "The color of the object is added to the background."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:480
+msgid "The color of the object is subtracted from the background."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:483
+msgid "The color of the object is multiplied by the background."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:486
+msgid "Default depth draw mode. Depth is drawn only for opaque objects."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:489
+msgid "Depth draw is calculated for both opaque and transparent objects."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:492
+msgid "No depth draw."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:495
+msgid ""
+"For transparent objects, an opaque pass is made first with the opaque parts, "
+"then transparency is drawn."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:498
+msgid "Default cull mode. The back of the object is culled when not visible."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:501
+msgid "The front of the object is culled when not visible."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:504
+msgid "No culling is performed."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:507
+msgid ""
+"No lighting is used on the object. Color comes directly from [code]ALBEDO[/"
+"code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:510
+msgid ""
+"Lighting is calculated per-vertex rather than per-pixel. This can be used to "
+"increase the speed of the shader at the cost of quality."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:513
+msgid ""
+"Disables the depth test, so this object is drawn on top of all others. "
+"However, objects drawn after it in the draw order may cover it."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:516
+msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:519
+msgid ""
+"Vertex color is in sRGB space and needs to be converted to linear. Only "
+"applies in the GLES3 renderer."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:522
+msgid ""
+"Uses point size to alter the size of primitive points. Also changes the "
+"albedo texture lookup to use [code]POINT_COORD[/code] instead of [code]UV[/"
+"code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:525
+msgid ""
+"Object is scaled by depth so that it always appears the same size on screen."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:528
+msgid ""
+"Shader will keep the scale set for the mesh. Otherwise the scale is lost "
+"when billboarding. Only applies when [member params_billboard_mode] is "
+"[constant BILLBOARD_ENABLED]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:531
+msgid ""
+"Use triplanar texture lookup for all texture lookups that would normally use "
+"[code]UV[/code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:534
+msgid ""
+"Use triplanar texture lookup for all texture lookups that would normally use "
+"[code]UV2[/code]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:537
+msgid ""
+"Use [code]UV2[/code] coordinates to look up from the [member ao_texture]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:540
+msgid ""
+"Use [code]UV2[/code] coordinates to look up from the [member "
+"emission_texture]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:543
+msgid "Use alpha scissor. Set by [member params_use_alpha_scissor]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:546
+msgid ""
+"Use world coordinates in the triplanar texture lookup instead of local "
+"coordinates."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:549
+msgid "Forces the shader to convert albedo from sRGB space to linear space."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:552
+msgid "Disables receiving shadows from other objects."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:555
+msgid "Disables receiving ambient light."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:558
+msgid "Ensures that normals appear correct, even with non-uniform scaling."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:561
+msgid "Enables the shadow to opacity feature."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:567
+msgid "Default diffuse scattering algorithm."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:570
+msgid "Diffuse scattering ignores roughness."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:573
+msgid "Extends Lambert to cover more than 90 degrees when roughness increases."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:576
+msgid "Attempts to use roughness to emulate microsurfacing."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:579
+msgid "Uses a hard cut for lighting, with smoothing affected by roughness."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:582
+msgid "Default specular blob."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:585 doc/classes/SpatialMaterial.xml:588
+msgid "Older specular algorithm, included for compatibility."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:591
+msgid "Toon blob which changes size based on roughness."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:594
+msgid "No specular blob."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:597
+msgid "Billboard mode is disabled."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:600
+msgid "The object's Z axis will always face the camera."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:603
+msgid "The object's X axis will always face the camera."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:606
+msgid ""
+"Used for particle systems when assigned to [Particles] and [CPUParticles] "
+"nodes. Enables [code]particles_anim_*[/code] properties.\n"
+"The [member ParticlesMaterial.anim_speed] or [member CPUParticles."
+"anim_speed] should also be set to a positive value for the animation to play."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:610
+msgid "Used to read from the red channel of a texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:613
+msgid "Used to read from the green channel of a texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:616
+msgid "Used to read from the blue channel of a texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:619
+msgid "Used to read from the alpha channel of a texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:625
+msgid "Adds the emission color to the color from the emission texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:628
+msgid "Multiplies the emission color by the color from the emission texture."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:631
+msgid "Do not use distance fade."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:634
+msgid ""
+"Smoothly fades the object out based on each pixel's distance from the camera "
+"using the alpha channel."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:637
+msgid ""
+"Smoothly fades the object out based on each pixel's distance from the camera "
+"using a dither approach. Dithering discards pixels based on a set pattern to "
+"smoothly fade without enabling transparency. On certain hardware this can be "
+"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]."
+msgstr ""
+
+#: doc/classes/SpatialMaterial.xml:640
+msgid ""
+"Smoothly fades the object out based on the object's distance from the camera "
+"using a dither approach. Dithering discards pixels based on a set pattern to "
+"smoothly fade without enabling transparency. On certain hardware this can be "
+"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]."
+msgstr ""
+
+#: doc/classes/SphereMesh.xml:4 doc/classes/SphereMesh.xml:7
+msgid "Class representing a spherical [PrimitiveMesh]."
+msgstr ""
+
+#: doc/classes/SphereMesh.xml:15
+msgid "Full height of the sphere."
+msgstr ""
+
+#: doc/classes/SphereMesh.xml:18
+msgid ""
+"If [code]true[/code], a hemisphere is created rather than a full sphere.\n"
+"[b]Note:[/b] To get a regular hemisphere, the height and radius of the "
+"sphere must be equal."
+msgstr ""
+
+#: doc/classes/SphereMesh.xml:22
+msgid "Number of radial segments on the sphere."
+msgstr ""
+
+#: doc/classes/SphereMesh.xml:25
+msgid "Radius of sphere."
+msgstr ""
+
+#: doc/classes/SphereMesh.xml:28
+msgid "Number of segments along the height of the sphere."
+msgstr ""
+
+#: doc/classes/SphereShape.xml:4
+msgid "Sphere shape for 3D collisions."
+msgstr ""
+
+#: doc/classes/SphereShape.xml:7
+msgid ""
+"Sphere shape for 3D collisions, which can be set into a [PhysicsBody] or "
+"[Area]. This shape is useful for modeling sphere-like 3D objects."
+msgstr ""
+
+#: doc/classes/SphereShape.xml:16
+msgid "The sphere's radius. The shape's diameter is double the radius."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:4
+msgid "Numerical input text field."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:7
+msgid ""
+"SpinBox is a numerical input text field. It allows entering integers and "
+"floats.\n"
+"[b]Example:[/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"
+"The above code will create a [SpinBox], disable context menu on it and set "
+"the text alignment to right.\n"
+"See [Range] class for more options over the [SpinBox].\n"
+"[b]Note:[/b] [SpinBox] relies on an underlying [LineEdit] node. To theme a "
+"[SpinBox]'s background, add theme items for [LineEdit] and customize them."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:26
+msgid "Applies the current value of this [SpinBox]."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:32
+msgid ""
+"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:39
+msgid "Sets the text alignment of the [SpinBox]."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:42
+msgid ""
+"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
+"read only."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:45
+msgid ""
+"Adds the specified [code]prefix[/code] string before the numerical value of "
+"the [SpinBox]."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:48
+msgid ""
+"Adds the specified [code]suffix[/code] string after the numerical value of "
+"the [SpinBox]."
+msgstr ""
+
+#: doc/classes/SpinBox.xml:55
+msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:4
+msgid "Container for splitting and adjusting."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:7
+msgid ""
+"Container for splitting two [Control]s vertically or horizontally, with a "
+"grabber that allows adjusting the split offset or ratio."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:15
+msgid ""
+"Clamps the [member split_offset] value to not go outside the currently "
+"possible minimal and maximum values."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:21
+msgid ""
+"If [code]true[/code], the area of the first [Control] will be collapsed and "
+"the dragger will be disabled."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:24
+msgid ""
+"Determines the dragger's visibility. See [enum DraggerVisibility] for "
+"details."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:27
+msgid ""
+"The initial offset of the splitting between the two [Control]s, with "
+"[code]0[/code] being at the end of the first [Control]."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:34
+msgid "Emitted when the dragger is dragged by user."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:40
+msgid "The split dragger is visible when the cursor hovers it."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:43
+msgid "The split dragger is never visible."
+msgstr ""
+
+#: doc/classes/SplitContainer.xml:46
+msgid "The split dragger is never visible and its space collapsed."
+msgstr ""
+
+#: doc/classes/SpotLight.xml:4
+msgid "A spotlight, such as a reflector spotlight or a lantern."
+msgstr ""
+
+#: doc/classes/SpotLight.xml:7
+msgid ""
+"A Spotlight is a type of [Light] node that emits lights in a specific "
+"direction, in the shape of a cone. The light is attenuated through the "
+"distance. This attenuation can be configured by changing the energy, radius "
+"and attenuation parameters of [Light].\n"
+"[b]Note:[/b] By default, only 32 SpotLights may affect a single mesh "
+"[i]resource[/i] at once. Consider splitting your level into several meshes "
+"to decrease the likelihood that more than 32 lights will affect the same "
+"mesh resource. Splitting the level mesh will also improve frustum culling "
+"effectiveness, leading to greater performance. If you need to use more "
+"lights per mesh, you can increase [member ProjectSettings.rendering/limits/"
+"rendering/max_lights_per_object] at the cost of shader compilation times."
+msgstr ""
+
+#: doc/classes/SpotLight.xml:18
+msgid "The spotlight's angle in degrees."
+msgstr ""
+
+#: doc/classes/SpotLight.xml:21
+msgid "The spotlight's angular attenuation curve."
+msgstr ""
+
+#: doc/classes/SpotLight.xml:24
+msgid "The spotlight's light energy attenuation curve."
+msgstr ""
+
+#: doc/classes/SpotLight.xml:27
+msgid ""
+"The maximal range that can be reached by the spotlight. Note that the "
+"effectively lit area may appear to be smaller depending on the [member "
+"spot_attenuation] in use. No matter the [member spot_attenuation] in use, "
+"the light will never reach anything outside this range."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:4
+msgid "A helper node, mostly used in 3rd person cameras."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:7
+msgid ""
+"The SpringArm node is a node that casts a ray (or collision shape) along its "
+"z axis and moves all its direct children to the collision point, minus a "
+"margin.\n"
+"The most common use case for this is to make a 3rd person camera that reacts "
+"to collisions in the environment.\n"
+"The SpringArm will either cast a ray, or if a shape is given, it will cast "
+"the shape in the direction of its z axis.\n"
+"If you use the SpringArm as a camera controller for your player, you might "
+"need to exclude the player's collider from the SpringArm's collision check."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:19
+msgid ""
+"Adds the [PhysicsBody] object with the given [RID] to the list of "
+"[PhysicsBody] objects excluded from the collision check."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:25
+msgid ""
+"Clears the list of [PhysicsBody] objects excluded from the collision check."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:31
+msgid "Returns the spring arm's current length."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:38
+msgid ""
+"Removes the given [RID] from the list of [PhysicsBody] objects excluded from "
+"the collision check."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:44
+msgid ""
+"The layers against which the collision check shall be done. See [url=https://"
+"docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
+"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
+"documentation for more information."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:47
+msgid ""
+"When the collision check is made, a candidate length for the SpringArm is "
+"given.\n"
+"The margin is then subtracted to this length and the translation is applied "
+"to the child objects of the SpringArm.\n"
+"This margin is useful for when the SpringArm has a [Camera] as a child node: "
+"without the margin, the [Camera] would be placed on the exact point of "
+"collision, while with the margin the [Camera] would be placed close to the "
+"point of collision."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:52
+msgid ""
+"The [Shape] to use for the SpringArm.\n"
+"When the shape is set, the SpringArm will cast the [Shape] on its z axis "
+"instead of performing a ray cast."
+msgstr ""
+
+#: doc/classes/SpringArm.xml:56
+msgid ""
+"The maximum extent of the SpringArm. This is used as a length for both the "
+"ray and the shape cast used internally to calculate the desired position of "
+"the SpringArm's child nodes.\n"
+"To know more about how to perform a shape cast or a ray cast, please consult "
+"the [PhysicsDirectSpaceState] documentation."
+msgstr ""
+
+#: doc/classes/Sprite.xml:4
+msgid "General-purpose sprite node."
+msgstr ""
+
+#: doc/classes/Sprite.xml:7
+msgid ""
+"A node that displays a 2D texture. The texture displayed can be a region "
+"from a larger atlas texture, or a frame from a sprite sheet animation."
+msgstr ""
+
+#: doc/classes/Sprite.xml:16
+msgid ""
+"Returns a [Rect2] representing the Sprite's boundary in local coordinates. "
+"Can be used to detect if the Sprite was clicked. Example:\n"
+"[codeblock]\n"
+"func _input(event):\n"
+" if event is InputEventMouseButton and event.pressed and event."
+"button_index == BUTTON_LEFT:\n"
+" if get_rect().has_point(to_local(event.position)):\n"
+" print(\"A click!\")\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Sprite.xml:29
+msgid ""
+"Returns [code]true[/code], if the pixel at the given position is opaque and "
+"[code]false[/code] in other case.\n"
+"[b]Note:[/b] It also returns [code]false[/code], if the sprite's texture is "
+"[code]null[/code] or if the given position is invalid."
+msgstr ""
+
+#: doc/classes/Sprite.xml:36
+msgid "If [code]true[/code], texture is centered."
+msgstr ""
+
+#: doc/classes/Sprite.xml:45 doc/classes/Sprite3D.xml:15
+msgid ""
+"Current frame to display from sprite sheet. [member hframes] or [member "
+"vframes] must be greater than 1."
+msgstr ""
+
+#: doc/classes/Sprite.xml:48 doc/classes/Sprite3D.xml:18
+msgid ""
+"Coordinates of the frame to display from sprite sheet. This is as an alias "
+"for the [member frame] property. [member hframes] or [member vframes] must "
+"be greater than 1."
+msgstr ""
+
+#: doc/classes/Sprite.xml:51 doc/classes/Sprite3D.xml:21
+msgid "The number of columns in the sprite sheet."
+msgstr ""
+
+#: doc/classes/Sprite.xml:54
+msgid ""
+"The normal map gives depth to the Sprite.\n"
+"[b]Note:[/b] Godot expects the normal map to use X+, Y-, and Z+ coordinates. "
+"See [url=http://wiki.polycount.com/wiki/"
+"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for "
+"a comparison of normal map coordinates expected by popular engines."
+msgstr ""
+
+#: doc/classes/Sprite.xml:61
+msgid ""
+"If [code]true[/code], texture is cut from a larger atlas texture. See "
+"[member region_rect]."
+msgstr ""
+
+#: doc/classes/Sprite.xml:64
+msgid "If [code]true[/code], the outermost pixels get blurred out."
+msgstr ""
+
+#: doc/classes/Sprite.xml:67 doc/classes/Sprite3D.xml:27
+msgid ""
+"The region of the atlas texture to display. [member region_enabled] must be "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Sprite.xml:70
+msgid "[Texture] object to draw."
+msgstr ""
+
+#: doc/classes/Sprite.xml:73 doc/classes/Sprite3D.xml:33
+msgid "The number of rows in the sprite sheet."
+msgstr ""
+
+#: doc/classes/Sprite.xml:79 doc/classes/Sprite3D.xml:39
+msgid "Emitted when the [member frame] changes."
+msgstr ""
+
+#: doc/classes/Sprite.xml:84
+msgid "Emitted when the [member texture] changes."
+msgstr ""
+
+#: doc/classes/Sprite3D.xml:4
+msgid "2D sprite node in a 3D world."
+msgstr ""
+
+#: doc/classes/Sprite3D.xml:7
+msgid ""
+"A node that displays a 2D texture in a 3D environment. The texture displayed "
+"can be a region from a larger atlas texture, or a frame from a sprite sheet "
+"animation."
+msgstr ""
+
+#: doc/classes/Sprite3D.xml:24
+msgid ""
+"If [code]true[/code], texture will be cut from a larger atlas texture. See "
+"[member region_rect]."
+msgstr ""
+
+#: doc/classes/Sprite3D.xml:30
+msgid ""
+"[Texture] object to draw. If [member GeometryInstance.material_override] is "
+"used, this will be overridden."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:4
+msgid "2D sprite node in 3D environment."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:7
+msgid "A node that displays 2D texture information in a 3D environment."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:27
+msgid "Returns the rectangle representing this sprite."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:35
+msgid "If [code]true[/code], the specified flag will be enabled."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:43
+msgid "The direction in which the front of the texture faces."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:51
+msgid ""
+"If [code]true[/code], texture can be seen from the back as well, if "
+"[code]false[/code], it is invisible when looking at it from behind."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:60
+msgid ""
+"A color value that gets multiplied on, could be used for mood-coloring or to "
+"simulate the color of light."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:66
+msgid ""
+"The objects' visibility on a scale from [code]0[/code] fully invisible to "
+"[code]1[/code] fully visible."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:69
+msgid "The size of one pixel's width on the sprite to scale it in 3D."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:72
+msgid ""
+"If [code]true[/code], the [Light] in the [Environment] has effects on the "
+"sprite."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:75
+msgid ""
+"If [code]true[/code], the texture's transparency and the opacity are used to "
+"make those parts of the sprite invisible."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:80
+msgid ""
+"If set, the texture's transparency and the opacity are used to make those "
+"parts of the sprite invisible."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:83
+msgid "If set, lights in the environment affect the sprite."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:86
+msgid ""
+"If set, texture can be seen from the back as well, if not, it is invisible "
+"when looking at it from behind."
+msgstr ""
+
+#: doc/classes/SpriteBase3D.xml:89
+msgid "Represents the size of the [enum DrawFlags] enum."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:4
+msgid "Sprite frame library for AnimatedSprite."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:7
+msgid ""
+"Sprite frame library for [AnimatedSprite]. Contains frames and animation "
+"data for playback.\n"
+"[b]Note:[/b] You can associate a set of normal maps by creating additional "
+"[SpriteFrames] resources with a [code]_normal[/code] suffix. For example, "
+"having 2 [SpriteFrames] resources [code]run[/code] and [code]run_normal[/"
+"code] will make it so the [code]run[/code] animation uses the normal map."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:17
+msgid "Adds a new animation to the library."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:26
+msgid "Adds a frame to the given animation."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:33
+msgid "Removes all frames from the given animation."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:39
+msgid "Removes all animations. A \"default\" animation will be created."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:46
+msgid ""
+"Returns [code]true[/code] if the given animation is configured to loop when "
+"it finishes playing. Otherwise, returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:52
+msgid ""
+"Returns an array containing the names associated to each animation. Values "
+"are placed in alphabetical order."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:59 doc/classes/SpriteFrames.xml:120
+msgid "The animation's speed in frames per second."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:67
+msgid "Returns the animation's selected frame."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:74
+msgid "Returns the number of frames in the animation."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:81
+msgid "If [code]true[/code], the named animation exists."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:88
+msgid "Removes the given animation."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:96
+msgid "Removes the animation's selected frame."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:104
+msgid "Changes the animation's name to [code]newname[/code]."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:112
+msgid "If [code]true[/code], the animation will loop."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:129
+msgid "Sets the texture of the given frame."
+msgstr ""
+
+#: doc/classes/SpriteFrames.xml:135
+msgid "Compatibility property, always equals to an empty array."
+msgstr ""
+
+#: doc/classes/StaticBody.xml:4
+msgid "Static body for 3D physics."
+msgstr ""
+
+#: doc/classes/StaticBody.xml:7
+msgid ""
+"Static body for 3D physics. A static body is a simple body that is not "
+"intended to move. In contrast to [RigidBody], they don't consume any CPU "
+"resources as long as they don't move.\n"
+"Additionally, a constant linear or angular velocity can be set for the "
+"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 ""
+
+#: doc/classes/StaticBody.xml:23
+msgid ""
+"The body's constant angular velocity. This does not rotate the body, but "
+"affects other bodies that touch it, as if it was in a state of rotation."
+msgstr ""
+
+#: doc/classes/StaticBody.xml:26
+msgid ""
+"The body's constant linear velocity. This does not move the body, but "
+"affects other bodies that touch it, as if it was in a state of movement."
+msgstr ""
+
+#: doc/classes/StaticBody.xml:29
+msgid ""
+"The body's friction, from 0 (frictionless) to 1 (full friction).\n"
+"Deprecated, use [member PhysicsMaterial.friction] instead via [member "
+"physics_material_override]."
+msgstr ""
+
+#: doc/classes/StaticBody2D.xml:4
+msgid "Static body for 2D physics."
+msgstr ""
+
+#: doc/classes/StaticBody2D.xml:7
+msgid ""
+"Static body for 2D physics. A StaticBody2D is a body that is not intended to "
+"move. It is ideal for implementing objects in the environment, such as walls "
+"or platforms.\n"
+"Additionally, a constant linear or angular velocity can be set for the "
+"static body, which will affect colliding bodies as if it were moving (for "
+"example, a conveyor belt)."
+msgstr ""
+
+#: doc/classes/StaticBody2D.xml:20
+msgid ""
+"The body's constant angular velocity. This does not rotate the body, but "
+"affects colliding bodies, as if it were rotating."
+msgstr ""
+
+#: doc/classes/StaticBody2D.xml:23
+msgid ""
+"The body's constant linear velocity. This does not move the body, but "
+"affects colliding bodies, as if it were moving."
+msgstr ""
+
+#: doc/classes/StaticBody2D.xml:26
+msgid ""
+"The body's friction. Values range from [code]0[/code] (no friction) to "
+"[code]1[/code] (full friction).\n"
+"Deprecated, use [member PhysicsMaterial.friction] instead via [member "
+"physics_material_override]."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:4
+msgid "Abstraction and base class for stream-based protocols."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:7
+msgid ""
+"StreamPeer is an abstraction and base class for stream-based protocols (such "
+"as TCP). It provides an API for sending and receiving data through streams "
+"as raw data or strings."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:15
+msgid "Gets a signed 16-bit value from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:21
+msgid "Gets a signed 32-bit value from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:27
+msgid "Gets a signed 64-bit value from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:33
+msgid "Gets a signed byte from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:39
+msgid "Returns the amount of bytes this [StreamPeer] has available."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:46
+msgid ""
+"Returns a chunk data with the received bytes. The amount of bytes to be "
+"received can be requested in the [code]bytes[/code] argument. If not enough "
+"bytes are available, the function will block until the desired amount is "
+"received. This function returns two values, an [enum @GlobalScope.Error] "
+"code and a data array."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:52
+msgid "Gets a double-precision float from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:58
+msgid "Gets a single-precision float from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:65
+msgid ""
+"Returns a chunk data with the received bytes. The amount of bytes to be "
+"received can be requested in the \"bytes\" argument. If not enough bytes are "
+"available, the function will return how many were actually received. This "
+"function returns two values, an [enum @GlobalScope.Error] code, and a data "
+"array."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:72
+msgid ""
+"Gets a string with byte-length [code]bytes[/code] from the stream. If "
+"[code]bytes[/code] is negative (default) the length will be read from the "
+"stream using the reverse process of [method put_string]."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:78
+msgid "Gets an unsigned 16-bit value from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:84
+msgid "Gets an unsigned 32-bit value from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:90
+msgid "Gets an unsigned 64-bit value from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:96
+msgid "Gets an unsigned byte from the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:103
+msgid ""
+"Gets an UTF-8 string with byte-length [code]bytes[/code] from the stream "
+"(this decodes the string sent as UTF-8). If [code]bytes[/code] is negative "
+"(default) the length will be read from the stream using the reverse process "
+"of [method put_utf8_string]."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:110
+msgid ""
+"Gets a Variant from the stream. If [code]allow_objects[/code] is [code]true[/"
+"code], decoding objects is allowed.\n"
+"[b]Warning:[/b] Deserialized objects can contain code which gets executed. "
+"Do not use this option if the serialized object comes from untrusted sources "
+"to avoid potential security threats such as remote code execution."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:118
+msgid "Puts a signed 16-bit value into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:125
+msgid "Puts a signed 32-bit value into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:132
+msgid "Puts a signed 64-bit value into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:139
+msgid "Puts a signed byte into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:146
+msgid ""
+"Sends a chunk of data through the connection, blocking if necessary until "
+"the data is done sending. This function returns an [enum @GlobalScope.Error] "
+"code."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:153
+msgid "Puts a double-precision float into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:160
+msgid "Puts a single-precision float into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:167
+msgid ""
+"Sends a chunk of data through the connection. If all the data could not be "
+"sent at once, only part of it will. This function returns two values, an "
+"[enum @GlobalScope.Error] code and an integer, describing how much data was "
+"actually sent."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:174
+msgid ""
+"Puts a zero-terminated ASCII string into the stream prepended by a 32-bit "
+"unsigned integer representing its size.\n"
+"[b]Note:[/b] To put an ASCII string without prepending its size, you can use "
+"[method put_data]:\n"
+"[codeblock]\n"
+"put_data(\"Hello world\".to_ascii())\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:185
+msgid "Puts an unsigned 16-bit value into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:192
+msgid "Puts an unsigned 32-bit value into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:199
+msgid "Puts an unsigned 64-bit value into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:206
+msgid "Puts an unsigned byte into the stream."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:213
+msgid ""
+"Puts a zero-terminated UTF-8 string into the stream prepended by a 32 bits "
+"unsigned integer representing its size.\n"
+"[b]Note:[/b] To put an UTF-8 string without prepending its size, you can use "
+"[method put_data]:\n"
+"[codeblock]\n"
+"put_data(\"Hello world\".to_utf8())\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:225
+msgid ""
+"Puts a Variant into the stream. If [code]full_objects[/code] is [code]true[/"
+"code] encoding objects is allowed (and can potentially include code)."
+msgstr ""
+
+#: doc/classes/StreamPeer.xml:231
+msgid ""
+"If [code]true[/code], this [StreamPeer] will using big-endian format for "
+"encoding and decoding."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:4
+msgid "SSL stream peer."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:7
+msgid ""
+"SSL stream peer. This object can be used to connect to an SSL server or "
+"accept a single SSL client connection."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:20
+msgid ""
+"Accepts a peer connection as a server using the given [code]private_key[/"
+"code] and providing the given [code]certificate[/code] to the client. You "
+"can pass the optional [code]chain[/code] parameter to provide additional CA "
+"chain information along with the certificate."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:30
+msgid ""
+"Connects to a peer using an underlying [StreamPeer] [code]stream[/code]. If "
+"[code]validate_certs[/code] is [code]true[/code], [StreamPeerSSL] will "
+"validate that the certificate presented by the peer matches the "
+"[code]for_hostname[/code].\n"
+"[b]Note:[/b] Specifying a custom [code]valid_certificate[/code] is not "
+"supported in HTML5 exports due to browsers restrictions."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:37 doc/classes/StreamPeerTCP.xml:23
+msgid "Disconnects from host."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:49
+msgid ""
+"Poll the connection to check for incoming bytes. Call this right before "
+"[method StreamPeer.get_available_bytes] for it to work properly."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:59
+msgid "A status representing a [StreamPeerSSL] that is disconnected."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:62
+msgid "A status representing a [StreamPeerSSL] during handshaking."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:65
+msgid "A status representing a [StreamPeerSSL] that is connected to a host."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:68
+msgid "A status representing a [StreamPeerSSL] in error state."
+msgstr ""
+
+#: doc/classes/StreamPeerSSL.xml:71
+msgid ""
+"An error status that shows a mismatch in the SSL certificate domain "
+"presented by the host and the domain requested for validation."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:4
+msgid "TCP stream peer."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:7
+msgid ""
+"TCP stream peer. This object can be used to connect to TCP servers, or also "
+"is returned by a TCP server."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:17
+msgid ""
+"Connects to the specified [code]host:port[/code] pair. A hostname will be "
+"resolved if valid. Returns [constant OK] on success or [constant FAILED] on "
+"failure."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:29
+msgid "Returns the IP of this peer."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:35
+msgid "Returns the port of this peer."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:41
+msgid "Returns the status of the connection, see [enum Status]."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:47
+msgid ""
+"Returns [code]true[/code] if this peer is currently connected or is "
+"connecting to a host, [code]false[/code] otherwise."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:54
+msgid ""
+"If [code]enabled[/code] is [code]true[/code], packets will be sent "
+"immediately. If [code]enabled[/code] is [code]false[/code] (the default), "
+"packet transfers will be delayed and combined using [url=https://en."
+"wikipedia.org/wiki/Nagle%27s_algorithm]Nagle's algorithm[/url].\n"
+"[b]Note:[/b] It's recommended to leave this disabled for applications that "
+"send large packets or need to transfer a lot of data, as enabling this can "
+"decrease the total available bandwidth."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:61
+msgid ""
+"The initial status of the [StreamPeerTCP]. This is also the status after "
+"disconnecting."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:64
+msgid "A status representing a [StreamPeerTCP] that is connecting to a host."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:67
+msgid "A status representing a [StreamPeerTCP] that is connected to a host."
+msgstr ""
+
+#: doc/classes/StreamPeerTCP.xml:70
+msgid "A status representing a [StreamPeerTCP] in error state."
+msgstr ""
+
+#: doc/classes/StreamTexture.xml:4
+msgid "A [code].stex[/code] texture."
+msgstr ""
+
+#: doc/classes/StreamTexture.xml:7
+msgid "A texture that is loaded from a [code].stex[/code] file."
+msgstr ""
+
+#: doc/classes/StreamTexture.xml:16
+msgid "Loads the texture from the given path."
+msgstr ""
+
+#: doc/classes/StreamTexture.xml:23
+msgid "The StreamTexture's file path to a [code].stex[/code] file."
+msgstr ""
+
+#: doc/classes/String.xml:4
+msgid "Built-in string class."
+msgstr ""
+
+#: doc/classes/String.xml:7
+msgid ""
+"This is the built-in string class (and the one used by GDScript). It "
+"supports Unicode and provides all necessary means for string handling. "
+"Strings are reference-counted and use a copy-on-write approach, so passing "
+"them around is cheap in resources."
+msgstr ""
+
+#: doc/classes/String.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
+"gdscript_format_string.html"
+msgstr ""
+
+#: doc/classes/String.xml:17
+msgid "Constructs a new String from the given [bool]."
+msgstr ""
+
+#: doc/classes/String.xml:24
+msgid "Constructs a new String from the given [int]."
+msgstr ""
+
+#: doc/classes/String.xml:31
+msgid "Constructs a new String from the given [float]."
+msgstr ""
+
+#: doc/classes/String.xml:38
+msgid "Constructs a new String from the given [Vector2]."
+msgstr ""
+
+#: doc/classes/String.xml:45
+msgid "Constructs a new String from the given [Rect2]."
+msgstr ""
+
+#: doc/classes/String.xml:52
+msgid "Constructs a new String from the given [Vector3]."
+msgstr ""
+
+#: doc/classes/String.xml:59
+msgid "Constructs a new String from the given [Transform2D]."
+msgstr ""
+
+#: doc/classes/String.xml:66
+msgid "Constructs a new String from the given [Plane]."
+msgstr ""
+
+#: doc/classes/String.xml:73
+msgid "Constructs a new String from the given [Quat]."
+msgstr ""
+
+#: doc/classes/String.xml:80
+msgid "Constructs a new String from the given [AABB]."
+msgstr ""
+
+#: doc/classes/String.xml:87
+msgid "Constructs a new String from the given [Basis]."
+msgstr ""
+
+#: doc/classes/String.xml:94
+msgid "Constructs a new String from the given [Transform]."
+msgstr ""
+
+#: doc/classes/String.xml:101
+msgid "Constructs a new String from the given [Color]."
+msgstr ""
+
+#: doc/classes/String.xml:108
+msgid "Constructs a new String from the given [NodePath]."
+msgstr ""
+
+#: doc/classes/String.xml:115
+msgid "Constructs a new String from the given [RID]."
+msgstr ""
+
+#: doc/classes/String.xml:122
+msgid "Constructs a new String from the given [Dictionary]."
+msgstr ""
+
+#: doc/classes/String.xml:129
+msgid "Constructs a new String from the given [Array]."
+msgstr ""
+
+#: doc/classes/String.xml:136
+msgid "Constructs a new String from the given [PoolByteArray]."
+msgstr ""
+
+#: doc/classes/String.xml:143
+msgid "Constructs a new String from the given [PoolIntArray]."
+msgstr ""
+
+#: doc/classes/String.xml:150
+msgid "Constructs a new String from the given [PoolRealArray]."
+msgstr ""
+
+#: doc/classes/String.xml:157
+msgid "Constructs a new String from the given [PoolStringArray]."
+msgstr ""
+
+#: doc/classes/String.xml:164
+msgid "Constructs a new String from the given [PoolVector2Array]."
+msgstr ""
+
+#: doc/classes/String.xml:171
+msgid "Constructs a new String from the given [PoolVector3Array]."
+msgstr ""
+
+#: doc/classes/String.xml:178
+msgid "Constructs a new String from the given [PoolColorArray]."
+msgstr ""
+
+#: doc/classes/String.xml:185
+msgid "Returns [code]true[/code] if the string begins with the given string."
+msgstr ""
+
+#: doc/classes/String.xml:191
+msgid "Returns the bigrams (pairs of consecutive letters) of this string."
+msgstr ""
+
+#: doc/classes/String.xml:197
+msgid ""
+"Returns a copy of the string with special characters escaped using the C "
+"language standard."
+msgstr ""
+
+#: doc/classes/String.xml:203
+msgid ""
+"Returns a copy of the string with escaped characters replaced by their "
+"meanings. Supported escape sequences are [code]\\'[/code], [code]\\\"[/"
+"code], [code]\\?[/code], [code]\\\\[/code], [code]\\a[/code], [code]\\b[/"
+"code], [code]\\f[/code], [code]\\n[/code], [code]\\r[/code], [code]\\t[/"
+"code], [code]\\v[/code].\n"
+"[b]Note:[/b] Unlike the GDScript parser, this method doesn't support the "
+"[code]\\uXXXX[/code] escape sequence."
+msgstr ""
+
+#: doc/classes/String.xml:210
+msgid ""
+"Changes the case of some letters. Replaces underscores with spaces, adds "
+"spaces before in-word uppercase characters, converts all letters to "
+"lowercase, then capitalizes the first letter and every letter following a "
+"space character. For [code]capitalize camelCase mixed_with_underscores[/"
+"code], it will return [code]Capitalize Camel Case Mixed With Underscores[/"
+"code]."
+msgstr ""
+
+#: doc/classes/String.xml:217
+msgid ""
+"Performs a case-sensitive comparison to another string. Returns [code]-1[/"
+"code] if less than, [code]1[/code] if greater than, or [code]0[/code] if "
+"equal. \"less than\" or \"greater than\" are determined by the [url=https://"
+"en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] "
+"of each string, which roughly matches the alphabetical order.\n"
+"[b]Behavior with different string lengths:[/b] Returns [code]1[/code] if the "
+"\"base\" string is longer than the [code]to[/code] string or [code]-1[/code] "
+"if the \"base\" string is shorter than the [code]to[/code] string. Keep in "
+"mind this length is determined by the number of Unicode codepoints, [i]not[/"
+"i] the actual visible characters.\n"
+"[b]Behavior with empty strings:[/b] Returns [code]-1[/code] if the \"base\" "
+"string is empty, [code]1[/code] if the [code]to[/code] string is empty or "
+"[code]0[/code] if both strings are empty.\n"
+"To get a boolean result from a string comparison, use the [code]==[/code] "
+"operator instead. See also [method nocasecmp_to]."
+msgstr ""
+
+#: doc/classes/String.xml:229
+msgid ""
+"Returns the number of occurrences of substring [code]what[/code] between "
+"[code]from[/code] and [code]to[/code] positions. If [code]from[/code] and "
+"[code]to[/code] equals 0 the whole string will be used. If only [code]to[/"
+"code] equals 0 the remained substring will be used."
+msgstr ""
+
+#: doc/classes/String.xml:238
+msgid ""
+"Returns the number of occurrences of substring [code]what[/code] (ignoring "
+"case) between [code]from[/code] and [code]to[/code] positions. If "
+"[code]from[/code] and [code]to[/code] equals 0 the whole string will be "
+"used. If only [code]to[/code] equals 0 the remained substring will be used."
+msgstr ""
+
+#: doc/classes/String.xml:244
+msgid ""
+"Returns a copy of the string with indentation (leading tabs and spaces) "
+"removed."
+msgstr ""
+
+#: doc/classes/String.xml:250
+msgid ""
+"Returns [code]true[/code] if the length of the string equals [code]0[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:257
+msgid "Returns [code]true[/code] if the string ends with the given string."
+msgstr ""
+
+#: doc/classes/String.xml:264
+msgid ""
+"Erases [code]chars[/code] characters from the string starting from "
+"[code]position[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:272
+msgid ""
+"Finds the first occurrence of a substring. Returns the starting position of "
+"the substring or [code]-1[/code] if not found. Optionally, the initial "
+"search index can be passed.\n"
+"[b]Note:[/b] If you just want to know whether a string contains a substring, "
+"use the [code]in[/code] operator as follows:\n"
+"[codeblock]\n"
+"# Will evaluate to `false`.\n"
+"if \"i\" in \"team\":\n"
+" pass\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/String.xml:285
+msgid ""
+"Finds the last occurrence of a substring. Returns the starting position of "
+"the substring or [code]-1[/code] if not found."
+msgstr ""
+
+#: doc/classes/String.xml:293
+msgid ""
+"Finds the first occurrence of a substring, ignoring case. Returns the "
+"starting position of the substring or [code]-1[/code] if not found. "
+"Optionally, the initial search index can be passed."
+msgstr ""
+
+#: doc/classes/String.xml:301
+msgid ""
+"Formats the string by replacing all occurrences of [code]placeholder[/code] "
+"with [code]values[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:307
+msgid "If the string is a valid file path, returns the base directory name."
+msgstr ""
+
+#: doc/classes/String.xml:313
+msgid ""
+"If the string is a valid file path, returns the full file path without the "
+"extension."
+msgstr ""
+
+#: doc/classes/String.xml:319
+msgid ""
+"Returns the extension without the leading period character ([code].[/code]) "
+"if the string is a valid file name or path. If the string does not contain "
+"an extension, returns an empty string instead.\n"
+"[codeblock]\n"
+"print(\"/path/to/file.txt\".get_extension()) # \"txt\"\n"
+"print(\"file.txt\".get_extension()) # \"txt\"\n"
+"print(\"file.sample.txt\".get_extension()) # \"txt\"\n"
+"print(\".txt\".get_extension()) # \"txt\"\n"
+"print(\"file.txt.\".get_extension()) # \"\" (empty string)\n"
+"print(\"file.txt..\".get_extension()) # \"\" (empty string)\n"
+"print(\"txt\".get_extension()) # \"\" (empty string)\n"
+"print(\"\".get_extension()) # \"\" (empty string)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/String.xml:335
+msgid "If the string is a valid file path, returns the filename."
+msgstr ""
+
+#: doc/classes/String.xml:341
+msgid "Hashes the string and returns a 32-bit integer."
+msgstr ""
+
+#: doc/classes/String.xml:347
+msgid ""
+"Converts a string containing a hexadecimal number into an integer. "
+"Hexadecimal strings are expected to be prefixed with \"[code]0x[/code]\" "
+"otherwise [code]0[/code] is returned.\n"
+"[codeblock]\n"
+"print(\"0xff\".hex_to_int()) # Print \"255\"\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/String.xml:356
+msgid ""
+"Escapes (encodes) a string to URL friendly format. Also referred to as 'URL "
+"encode'.\n"
+"[codeblock]\n"
+"print(\"https://example.org/?escaped=\" + \"Godot Engine:'docs'\"."
+"http_escape())\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/String.xml:365
+msgid ""
+"Unescapes (decodes) a string in URL encoded format. Also referred to as 'URL "
+"decode'.\n"
+"[codeblock]\n"
+"print(\"https://example.org/?escaped=\" + \"Godot%20Engine%3A%27docs%27\"."
+"http_unescape())\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/String.xml:375
+msgid ""
+"Converts [code]size[/code] represented as number of bytes to human-readable "
+"format using internationalized set of data size units, namely: B, KiB, MiB, "
+"GiB, TiB, PiB, EiB. Note that the next smallest unit is picked automatically "
+"to hold at most 1024 units.\n"
+"[codeblock]\n"
+"var bytes = 133790307\n"
+"var size = String.humanize_size(bytes)\n"
+"print(size) # prints \"127.5 MiB\"\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/String.xml:388
+msgid ""
+"Returns a copy of the string with the substring [code]what[/code] inserted "
+"at the given position."
+msgstr ""
+
+#: doc/classes/String.xml:394
+msgid ""
+"If the string is a path to a file or directory, returns [code]true[/code] if "
+"the path is absolute."
+msgstr ""
+
+#: doc/classes/String.xml:400
+msgid ""
+"If the string is a path to a file or directory, returns [code]true[/code] if "
+"the path is relative."
+msgstr ""
+
+#: doc/classes/String.xml:407
+msgid ""
+"Returns [code]true[/code] if this string is a subsequence of the given "
+"string."
+msgstr ""
+
+#: doc/classes/String.xml:414
+msgid ""
+"Returns [code]true[/code] if this string is a subsequence of the given "
+"string, without considering case."
+msgstr ""
+
+#: doc/classes/String.xml:420
+msgid ""
+"Returns [code]true[/code] if this string is free from characters that aren't "
+"allowed in file names, those being:\n"
+"[code]: / \\ ? * \" | % < >[/code]"
+msgstr ""
+
+#: doc/classes/String.xml:427
+msgid "Returns [code]true[/code] if this string contains a valid float."
+msgstr ""
+
+#: doc/classes/String.xml:434
+msgid ""
+"Returns [code]true[/code] if this string contains a valid hexadecimal "
+"number. If [code]with_prefix[/code] is [code]true[/code], then a validity of "
+"the hexadecimal number is determined by [code]0x[/code] prefix, for "
+"instance: [code]0xDEADC0DE[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:440
+msgid ""
+"Returns [code]true[/code] if this string contains a valid color in "
+"hexadecimal HTML notation. Other HTML notations such as named colors or "
+"[code]hsl()[/code] colors aren't considered valid by this method and will "
+"return [code]false[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:446
+msgid ""
+"Returns [code]true[/code] if this string is a valid identifier. A valid "
+"identifier may contain only letters, digits and underscores ([code]_[/code]) "
+"and the first character may not be a digit."
+msgstr ""
+
+#: doc/classes/String.xml:452
+msgid "Returns [code]true[/code] if this string contains a valid integer."
+msgstr ""
+
+#: doc/classes/String.xml:458
+msgid ""
+"Returns [code]true[/code] if this string contains only a well-formatted IPv4 "
+"or IPv6 address. This method considers [url=https://en.wikipedia.org/wiki/"
+"Reserved_IP_addresses]reserved IP addresses[/url] such as [code]0.0.0.0[/"
+"code] as valid."
+msgstr ""
+
+#: doc/classes/String.xml:464
+msgid ""
+"Returns a copy of the string with special characters escaped using the JSON "
+"standard."
+msgstr ""
+
+#: doc/classes/String.xml:471
+msgid "Returns a number of characters from the left of the string."
+msgstr ""
+
+#: doc/classes/String.xml:477
+msgid "Returns the string's amount of characters."
+msgstr ""
+
+#: doc/classes/String.xml:484
+msgid ""
+"Returns a copy of the string with characters removed from the left. The "
+"[code]chars[/code] argument is a string specifying the set of characters to "
+"be removed.\n"
+"[b]Note:[/b] The [code]chars[/code] is not a prefix. See [method "
+"trim_prefix] method that will remove a single prefix string rather than a "
+"set of characters."
+msgstr ""
+
+#: doc/classes/String.xml:492
+msgid ""
+"Does a simple case-sensitive expression match, where [code]\"*\"[/code] "
+"matches zero or more arbitrary characters and [code]\"?\"[/code] matches any "
+"single character except a period ([code]\".\"[/code])."
+msgstr ""
+
+#: doc/classes/String.xml:499
+msgid ""
+"Does a simple case-insensitive expression match, where [code]\"*\"[/code] "
+"matches zero or more arbitrary characters and [code]\"?\"[/code] matches any "
+"single character except a period ([code]\".\"[/code])."
+msgstr ""
+
+#: doc/classes/String.xml:505
+msgid "Returns the MD5 hash of the string as an array of bytes."
+msgstr ""
+
+#: doc/classes/String.xml:511
+msgid "Returns the MD5 hash of the string as a string."
+msgstr ""
+
+#: doc/classes/String.xml:518
+msgid ""
+"Performs a case-insensitive [i]natural order[/i] comparison to another "
+"string. Returns [code]-1[/code] if less than, [code]1[/code] if greater "
+"than, or [code]0[/code] if equal. \"less than\" or \"greater than\" are "
+"determined by the [url=https://en.wikipedia.org/wiki/"
+"List_of_Unicode_characters]Unicode code points[/url] of each string, which "
+"roughly matches the alphabetical order. Internally, lowercase characters "
+"will be converted to uppercase during the comparison.\n"
+"When used for sorting, natural order comparison will order suites of numbers "
+"as expected by most people. If you sort the numbers from 1 to 10 using "
+"natural order, you will get [code][1, 2, 3, ...][/code] instead of [code][1, "
+"10, 2, 3, ...][/code].\n"
+"[b]Behavior with different string lengths:[/b] Returns [code]1[/code] if the "
+"\"base\" string is longer than the [code]to[/code] string or [code]-1[/code] "
+"if the \"base\" string is shorter than the [code]to[/code] string. Keep in "
+"mind this length is determined by the number of Unicode codepoints, [i]not[/"
+"i] the actual visible characters.\n"
+"[b]Behavior with empty strings:[/b] Returns [code]-1[/code] if the \"base\" "
+"string is empty, [code]1[/code] if the [code]to[/code] string is empty or "
+"[code]0[/code] if both strings are empty.\n"
+"To get a boolean result from a string comparison, use the [code]==[/code] "
+"operator instead. See also [method nocasecmp_to] and [method casecmp_to]."
+msgstr ""
+
+#: doc/classes/String.xml:529
+msgid ""
+"Performs a case-insensitive comparison to another string. Returns [code]-1[/"
+"code] if less than, [code]1[/code] if greater than, or [code]0[/code] if "
+"equal. \"less than\" or \"greater than\" are determined by the [url=https://"
+"en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] "
+"of each string, which roughly matches the alphabetical order. Internally, "
+"lowercase characters will be converted to uppercase during the comparison.\n"
+"[b]Behavior with different string lengths:[/b] Returns [code]1[/code] if the "
+"\"base\" string is longer than the [code]to[/code] string or [code]-1[/code] "
+"if the \"base\" string is shorter than the [code]to[/code] string. Keep in "
+"mind this length is determined by the number of Unicode codepoints, [i]not[/"
+"i] the actual visible characters.\n"
+"[b]Behavior with empty strings:[/b] Returns [code]-1[/code] if the \"base\" "
+"string is empty, [code]1[/code] if the [code]to[/code] string is empty or "
+"[code]0[/code] if both strings are empty.\n"
+"To get a boolean result from a string comparison, use the [code]==[/code] "
+"operator instead. See also [method casecmp_to]."
+msgstr ""
+
+#: doc/classes/String.xml:539
+msgid "Returns the character code at position [code]at[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:546
+msgid ""
+"Formats a number to have an exact number of [code]digits[/code] after the "
+"decimal point."
+msgstr ""
+
+#: doc/classes/String.xml:553
+msgid ""
+"Formats a number to have an exact number of [code]digits[/code] before the "
+"decimal point."
+msgstr ""
+
+#: doc/classes/String.xml:559
+msgid "Decode a percent-encoded string. See [method percent_encode]."
+msgstr ""
+
+#: doc/classes/String.xml:565
+msgid ""
+"Percent-encodes a string. Encodes parameters in a URL when sending a HTTP "
+"GET request (and bodies of form-urlencoded POST requests)."
+msgstr ""
+
+#: doc/classes/String.xml:572
+msgid ""
+"If the string is a path, this concatenates [code]file[/code] at the end of "
+"the string as a subpath. E.g. [code]\"this/is\".plus_file(\"path\") == "
+"\"this/is/path\"[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:579
+msgid ""
+"Returns original string repeated a number of times. The number of "
+"repetitions is given by the argument."
+msgstr ""
+
+#: doc/classes/String.xml:587
+msgid ""
+"Replaces occurrences of a case-sensitive substring with the given one inside "
+"the string."
+msgstr ""
+
+#: doc/classes/String.xml:595
+msgid ""
+"Replaces occurrences of a case-insensitive substring with the given one "
+"inside the string."
+msgstr ""
+
+#: doc/classes/String.xml:603
+msgid ""
+"Performs a case-sensitive search for a substring, but starts from the end of "
+"the string instead of the beginning."
+msgstr ""
+
+#: doc/classes/String.xml:611
+msgid ""
+"Performs a case-insensitive search for a substring, but starts from the end "
+"of the string instead of the beginning."
+msgstr ""
+
+#: doc/classes/String.xml:618
+msgid "Returns the right side of the string from a given position."
+msgstr ""
+
+#: doc/classes/String.xml:627
+msgid ""
+"Splits the string by a [code]delimiter[/code] string and returns an array of "
+"the substrings, starting from right.\n"
+"The splits in the returned array are sorted in the same order as the "
+"original string, from left to right.\n"
+"If [code]maxsplit[/code] is specified, it defines the number of splits to do "
+"from the right up to [code]maxsplit[/code]. The default value of 0 means "
+"that all items are split, thus giving the same result as [method split].\n"
+"Example:\n"
+"[codeblock]\n"
+"var some_string = \"One,Two,Three,Four\"\n"
+"var some_array = some_string.rsplit(\",\", true, 1)\n"
+"print(some_array.size()) # Prints 2\n"
+"print(some_array[0]) # Prints \"Four\"\n"
+"print(some_array[1]) # Prints \"Three,Two,One\"\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/String.xml:644
+msgid ""
+"Returns a copy of the string with characters removed from the right. The "
+"[code]chars[/code] argument is a string specifying the set of characters to "
+"be removed.\n"
+"[b]Note:[/b] The [code]chars[/code] is not a suffix. See [method "
+"trim_suffix] method that will remove a single suffix string rather than a "
+"set of characters."
+msgstr ""
+
+#: doc/classes/String.xml:651
+msgid "Returns the SHA-1 hash of the string as an array of bytes."
+msgstr ""
+
+#: doc/classes/String.xml:657
+msgid "Returns the SHA-1 hash of the string as a string."
+msgstr ""
+
+#: doc/classes/String.xml:663
+msgid "Returns the SHA-256 hash of the string as an array of bytes."
+msgstr ""
+
+#: doc/classes/String.xml:669
+msgid "Returns the SHA-256 hash of the string as a string."
+msgstr ""
+
+#: doc/classes/String.xml:676
+msgid ""
+"Returns the similarity index of the text compared to this string. 1 means "
+"totally similar and 0 means totally dissimilar."
+msgstr ""
+
+#: doc/classes/String.xml:682
+msgid "Returns a simplified canonical path."
+msgstr ""
+
+#: doc/classes/String.xml:691
+msgid ""
+"Splits the string by a [code]delimiter[/code] string and returns an array of "
+"the substrings. The [code]delimiter[/code] can be of any length.\n"
+"If [code]maxsplit[/code] is specified, it defines the number of splits to do "
+"from the left up to [code]maxsplit[/code]. The default value of [code]0[/"
+"code] means that all items are split.\n"
+"Example:\n"
+"[codeblock]\n"
+"var some_string = \"One,Two,Three,Four\"\n"
+"var some_array = some_string.split(\",\", true, 1)\n"
+"print(some_array.size()) # Prints 2\n"
+"print(some_array[0]) # Prints \"One\"\n"
+"print(some_array[1]) # Prints \"Two,Three,Four\"\n"
+"[/codeblock]\n"
+"If you need to split strings with more complex rules, use the [RegEx] class "
+"instead."
+msgstr ""
+
+#: doc/classes/String.xml:709
+msgid ""
+"Splits the string in floats by using a delimiter string and returns an array "
+"of the substrings.\n"
+"For example, [code]\"1,2.5,3\"[/code] will return [code][1,2.5,3][/code] if "
+"split by [code]\",\"[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:718
+msgid ""
+"Returns a copy of the string stripped of any non-printable character "
+"(including tabulations, spaces and line breaks) at the beginning and the "
+"end. The optional arguments are used to toggle stripping on the left and "
+"right edges respectively."
+msgstr ""
+
+#: doc/classes/String.xml:724
+msgid ""
+"Returns a copy of the string stripped of any escape character. These include "
+"all non-printable control characters of the first page of the ASCII table (< "
+"32), such as tabulation ([code]\\t[/code] in C) and newline ([code]\\n[/"
+"code] and [code]\\r[/code]) characters, but not spaces."
+msgstr ""
+
+#: doc/classes/String.xml:732
+msgid ""
+"Returns part of the string from the position [code]from[/code] with length "
+"[code]len[/code]. Argument [code]len[/code] is optional and using [code]-1[/"
+"code] will return remaining characters from given position."
+msgstr ""
+
+#: doc/classes/String.xml:738
+msgid ""
+"Converts the String (which is a character array) to [PoolByteArray] (which "
+"is an array of bytes). The conversion is faster compared to [method "
+"to_utf8], as this method assumes that all the characters in the String are "
+"ASCII characters."
+msgstr ""
+
+#: doc/classes/String.xml:744
+msgid ""
+"Converts a string containing a decimal number into a [code]float[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:750
+msgid ""
+"Converts a string containing an integer number into an [code]int[/code]."
+msgstr ""
+
+#: doc/classes/String.xml:756
+msgid "Returns the string converted to lowercase."
+msgstr ""
+
+#: doc/classes/String.xml:762
+msgid "Returns the string converted to uppercase."
+msgstr ""
+
+#: doc/classes/String.xml:768
+msgid ""
+"Converts the String (which is an array of characters) to [PoolByteArray] "
+"(which is an array of bytes). The conversion is a bit slower than [method "
+"to_ascii], but supports all UTF-8 characters. Therefore, you should prefer "
+"this function over [method to_ascii]."
+msgstr ""
+
+#: doc/classes/String.xml:774
+msgid ""
+"Converts the String (which is an array of characters) to [PoolByteArray] "
+"(which is an array of bytes)."
+msgstr ""
+
+#: doc/classes/String.xml:781
+msgid ""
+"Removes a given string from the start if it starts with it or leaves the "
+"string unchanged."
+msgstr ""
+
+#: doc/classes/String.xml:788
+msgid ""
+"Removes a given string from the end if it ends with it or leaves the string "
+"unchanged."
+msgstr ""
+
+#: doc/classes/String.xml:794
+msgid ""
+"Removes any characters from the string that are prohibited in [Node] names "
+"([code].[/code] [code]:[/code] [code]@[/code] [code]/[/code] [code]\"[/"
+"code])."
+msgstr ""
+
+#: doc/classes/String.xml:800
+msgid ""
+"Returns a copy of the string with special characters escaped using the XML "
+"standard."
+msgstr ""
+
+#: doc/classes/String.xml:806
+msgid ""
+"Returns a copy of the string with escaped characters replaced by their "
+"meanings according to the XML standard."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:4
+msgid "Base class for drawing stylized boxes for the UI."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:7
+msgid ""
+"StyleBox is [Resource] that provides an abstract base class for drawing "
+"stylized boxes for the UI. StyleBoxes are used for drawing the styles of "
+"buttons, line edit backgrounds, tree backgrounds, etc. and also for testing "
+"a transparency mask for pointer signals. If mask test fails on a StyleBox "
+"assigned as mask to a control, clicks and motion signals will go through it "
+"to the one below.\n"
+"[b]Note:[/b] For children of [Control] that have [i]Theme Properties[/i], "
+"the [code]focus[/code] [StyleBox] is displayed over the [code]normal[/code], "
+"[code]hover[/code] or [code]pressed[/code] [StyleBox]. This makes the "
+"[code]focus[/code] [StyleBox] more reusable across different nodes."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:18
+msgid ""
+"Draws this stylebox using a [CanvasItem] with given [RID].\n"
+"You can get a [RID] value using [method Object.get_instance_id] on a "
+"[CanvasItem]-derived node."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:25
+msgid "Returns the size of this [StyleBox] without the margins."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:31
+msgid ""
+"Returns the [CanvasItem] that handles its [constant CanvasItem."
+"NOTIFICATION_DRAW] or [method CanvasItem._draw] callback at this moment."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:38
+msgid "Returns the default value of the specified [enum Margin]."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:45
+msgid ""
+"Returns the content margin offset for the specified [enum Margin].\n"
+"Positive values reduce size inwards, unlike [Control]'s margin values."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:52
+msgid "Returns the minimum size that this stylebox can be shrunk to."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:58
+msgid ""
+"Returns the \"offset\" of a stylebox. This helper function returns a value "
+"equivalent to [code]Vector2(style.get_margin(MARGIN_LEFT), style."
+"get_margin(MARGIN_TOP))[/code]."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:66
+msgid ""
+"Sets the default value of the specified [enum Margin] to given [code]offset[/"
+"code] in pixels."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:74
+msgid "Test a position in a rectangle, return whether it passes the mask test."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:80
+msgid ""
+"The bottom margin for the contents of this style box. Increasing this value "
+"reduces the space available to the contents from the bottom.\n"
+"If this value is negative, it is ignored and a child-specific margin is used "
+"instead. For example for [StyleBoxFlat] the border thickness (if any) is "
+"used instead.\n"
+"It is up to the code using this style box to decide what these contents are: "
+"for example, a [Button] respects this content margin for the textual "
+"contents of the button.\n"
+"[method get_margin] should be used to fetch this value as consumer instead "
+"of reading these properties directly. This is because it correctly respects "
+"negative values and the fallback mentioned above."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:86
+msgid ""
+"The left margin for the contents of this style box.Increasing this value "
+"reduces the space available to the contents from the left.\n"
+"Refer to [member content_margin_bottom] for extra considerations."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:90
+msgid ""
+"The right margin for the contents of this style box. Increasing this value "
+"reduces the space available to the contents from the right.\n"
+"Refer to [member content_margin_bottom] for extra considerations."
+msgstr ""
+
+#: doc/classes/StyleBox.xml:94
+msgid ""
+"The top margin for the contents of this style box. Increasing this value "
+"reduces the space available to the contents from the top.\n"
+"Refer to [member content_margin_bottom] for extra considerations."
+msgstr ""
+
+#: doc/classes/StyleBoxEmpty.xml:4
+msgid "Empty stylebox (does not display anything)."
+msgstr ""
+
+#: doc/classes/StyleBoxEmpty.xml:7
+msgid "Empty stylebox (really does not display anything)."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:4
+msgid ""
+"Customizable [StyleBox] with a given set of parameters (no texture required)."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:7
+msgid ""
+"This [StyleBox] can be used to achieve all kinds of looks without the need "
+"of a texture. The following properties are customizable:\n"
+"- Color\n"
+"- Border width (individual width for each border)\n"
+"- Rounded corners (individual radius for each corner)\n"
+"- Shadow (with blur and offset)\n"
+"Setting corner radius to high values is allowed. As soon as corners overlap, "
+"the stylebox will switch to a relative system. Example:\n"
+"[codeblock]\n"
+"height = 30\n"
+"corner_radius_top_left = 50\n"
+"corner_radius_bottom_left = 100\n"
+"[/codeblock]\n"
+"The relative system now would take the 1:2 ratio of the two left corners to "
+"calculate the actual corner width. Both corners added will [b]never[/b] be "
+"more than the height. Result:\n"
+"[codeblock]\n"
+"corner_radius_top_left: 10\n"
+"corner_radius_bottom_left: 20\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:31
+msgid ""
+"Returns the given [code]margin[/code]'s border width. See [enum Margin] for "
+"possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:37
+msgid "Returns the smallest border width out of all four borders."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:44
+msgid ""
+"Returns the given [code]corner[/code]'s radius. See [enum Corner] for "
+"possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:51 doc/classes/StyleBoxTexture.xml:16
+msgid ""
+"Returns the size of the given [code]margin[/code]'s expand margin. See [enum "
+"Margin] for possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:59
+msgid ""
+"Sets the border width to [code]width[/code] pixels for the given "
+"[code]margin[/code]. See [enum Margin] for possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:66
+msgid "Sets the border width to [code]width[/code] pixels for all margins."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:74
+msgid ""
+"Sets the corner radius to [code]radius[/code] pixels for the given "
+"[code]corner[/code]. See [enum Corner] for possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:81
+msgid "Sets the corner radius to [code]radius[/code] pixels for all corners."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:91
+msgid ""
+"Sets the corner radius for each corner to [code]radius_top_left[/code], "
+"[code]radius_top_right[/code], [code]radius_bottom_right[/code], and "
+"[code]radius_bottom_left[/code] pixels."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:99 doc/classes/StyleBoxTexture.xml:48
+msgid ""
+"Sets the expand margin to [code]size[/code] pixels for the given "
+"[code]margin[/code]. See [enum Margin] for possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:106 doc/classes/StyleBoxTexture.xml:30
+msgid "Sets the expand margin to [code]size[/code] pixels for all margins."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:116 doc/classes/StyleBoxTexture.xml:40
+msgid ""
+"Sets the expand margin for each margin to [code]size_left[/code], "
+"[code]size_top[/code], [code]size_right[/code], and [code]size_bottom[/code] "
+"pixels."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:122
+msgid ""
+"Antialiasing draws a small ring around the edges, which fades to "
+"transparency. As a result, edges look much smoother. This is only noticeable "
+"when using rounded corners.\n"
+"[b]Note:[/b] When using beveled corners with 45-degree angles ([member "
+"corner_detail] = 1), it is recommended to set [member anti_aliasing] to "
+"[code]false[/code] to ensure crisp visuals and avoid possible visual "
+"glitches."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:126
+msgid ""
+"This changes the size of the faded ring. Higher values can be used to "
+"achieve a \"blurry\" effect."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:129
+msgid "The background color of the stylebox."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:132
+msgid "If [code]true[/code], the border will fade into the background color."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:135
+msgid "Sets the color of the border."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:138
+msgid "Border width for the bottom border."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:141
+msgid "Border width for the left border."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:144
+msgid "Border width for the right border."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:147
+msgid "Border width for the top border."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:150
+msgid ""
+"This sets the number of vertices used for each corner. Higher values result "
+"in rounder corners but take more processing power to compute. When choosing "
+"a value, you should take the corner radius ([method set_corner_radius_all]) "
+"into account.\n"
+"For corner radii less than 10, [code]4[/code] or [code]5[/code] should be "
+"enough. For corner radii less than 30, values between [code]8[/code] and "
+"[code]12[/code] should be enough.\n"
+"A corner detail of [code]1[/code] will result in chamfered corners instead "
+"of rounded corners, which is useful for some artistic effects."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:155
+msgid ""
+"The bottom-left corner's radius. If [code]0[/code], the corner is not "
+"rounded."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:158
+msgid ""
+"The bottom-right corner's radius. If [code]0[/code], the corner is not "
+"rounded."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:161
+msgid ""
+"The top-left corner's radius. If [code]0[/code], the corner is not rounded."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:164
+msgid ""
+"The top-right corner's radius. If [code]0[/code], the corner is not rounded."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:167
+msgid "Toggles drawing of the inner part of the stylebox."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:170
+msgid ""
+"Expands the stylebox outside of the control rect on the bottom edge. Useful "
+"in combination with [member border_width_bottom] to draw a border outside "
+"the control rect."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:173
+msgid ""
+"Expands the stylebox outside of the control rect on the left edge. Useful in "
+"combination with [member border_width_left] to draw a border outside the "
+"control rect."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:176
+msgid ""
+"Expands the stylebox outside of the control rect on the right edge. Useful "
+"in combination with [member border_width_right] to draw a border outside the "
+"control rect."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:179
+msgid ""
+"Expands the stylebox outside of the control rect on the top edge. Useful in "
+"combination with [member border_width_top] to draw a border outside the "
+"control rect."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:182
+msgid ""
+"The color of the shadow. This has no effect if [member shadow_size] is lower "
+"than 1."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:185
+msgid ""
+"The shadow offset in pixels. Adjusts the position of the shadow relatively "
+"to the stylebox."
+msgstr ""
+
+#: doc/classes/StyleBoxFlat.xml:188
+msgid "The shadow size in pixels."
+msgstr ""
+
+#: doc/classes/StyleBoxLine.xml:4
+msgid "[StyleBox] that displays a single line."
+msgstr ""
+
+#: doc/classes/StyleBoxLine.xml:7
+msgid ""
+"[StyleBox] that displays a single line of a given color and thickness. It "
+"can be used to draw things like separators."
+msgstr ""
+
+#: doc/classes/StyleBoxLine.xml:15
+msgid "The line's color."
+msgstr ""
+
+#: doc/classes/StyleBoxLine.xml:18
+msgid ""
+"The number of pixels the line will extend before the [StyleBoxLine]'s "
+"bounds. If set to a negative value, the line will begin inside the "
+"[StyleBoxLine]'s bounds."
+msgstr ""
+
+#: doc/classes/StyleBoxLine.xml:21
+msgid ""
+"The number of pixels the line will extend past the [StyleBoxLine]'s bounds. "
+"If set to a negative value, the line will end inside the [StyleBoxLine]'s "
+"bounds."
+msgstr ""
+
+#: doc/classes/StyleBoxLine.xml:24
+msgid "The line's thickness in pixels."
+msgstr ""
+
+#: doc/classes/StyleBoxLine.xml:27
+msgid ""
+"If [code]true[/code], the line will be vertical. If [code]false[/code], the "
+"line will be horizontal."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:4
+msgid "Texture-based nine-patch [StyleBox]."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:7
+msgid ""
+"Texture-based nine-patch [StyleBox], in a way similar to [NinePatchRect]. "
+"This stylebox performs a 3×3 scaling of a texture, where only the center "
+"cell is fully stretched. This makes it possible to design bordered styles "
+"regardless of the stylebox's size."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:23
+msgid ""
+"Returns the size of the given [code]margin[/code]. See [enum Margin] for "
+"possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:56
+msgid ""
+"Sets the margin to [code]size[/code] pixels for the given [code]margin[/"
+"code]. See [enum Margin] for possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:62
+msgid ""
+"Controls how the stylebox's texture will be stretched or tiled horizontally. "
+"See [enum AxisStretchMode] for possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:65
+msgid ""
+"Controls how the stylebox's texture will be stretched or tiled vertically. "
+"See [enum AxisStretchMode] for possible values."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:68
+msgid ""
+"If [code]true[/code], the nine-patch texture's center tile will be drawn."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:71
+msgid ""
+"Expands the bottom margin of this style box when drawing, causing it to be "
+"drawn larger than requested."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:74
+msgid ""
+"Expands the left margin of this style box when drawing, causing it to be "
+"drawn larger than requested."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:77
+msgid ""
+"Expands the right margin of this style box when drawing, causing it to be "
+"drawn larger than requested."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:80
+msgid ""
+"Expands the top margin of this style box when drawing, causing it to be "
+"drawn larger than requested."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:83
+msgid ""
+"Increases the bottom margin of the 3×3 texture box.\n"
+"A higher value means more of the source texture is considered to be part of "
+"the bottom border of the 3×3 box.\n"
+"This is also the value used as fallback for [member StyleBox."
+"content_margin_bottom] if it is negative."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:88
+msgid ""
+"Increases the left margin of the 3×3 texture box.\n"
+"A higher value means more of the source texture is considered to be part of "
+"the left border of the 3×3 box.\n"
+"This is also the value used as fallback for [member StyleBox."
+"content_margin_left] if it is negative."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:93
+msgid ""
+"Increases the right margin of the 3×3 texture box.\n"
+"A higher value means more of the source texture is considered to be part of "
+"the right border of the 3×3 box.\n"
+"This is also the value used as fallback for [member StyleBox."
+"content_margin_right] if it is negative."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:98
+msgid ""
+"Increases the top margin of the 3×3 texture box.\n"
+"A higher value means more of the source texture is considered to be part of "
+"the top border of the 3×3 box.\n"
+"This is also the value used as fallback for [member StyleBox."
+"content_margin_top] if it is negative."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:103
+msgid "Modulates the color of the texture when this style box is drawn."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:106
+msgid ""
+"The normal map to use when drawing this style box.\n"
+"[b]Note:[/b] Godot expects the normal map to use X+, Y-, and Z+ coordinates. "
+"See [url=http://wiki.polycount.com/wiki/"
+"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for "
+"a comparison of normal map coordinates expected by popular engines."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:110
+msgid ""
+"Species a sub-region of the texture to use.\n"
+"This is equivalent to first wrapping the texture in an [AtlasTexture] with "
+"the same region."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:114
+msgid "The texture to use when drawing this style box."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:120
+msgid "Emitted when the stylebox's texture is changed."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:126
+msgid ""
+"Stretch the stylebox's texture. This results in visible distortion unless "
+"the texture size matches the stylebox's size perfectly."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:129
+msgid ""
+"Repeats the stylebox's texture to match the stylebox's size according to the "
+"nine-patch system."
+msgstr ""
+
+#: doc/classes/StyleBoxTexture.xml:132
+msgid ""
+"Repeats the stylebox's texture to match the stylebox's size according to the "
+"nine-patch system. Unlike [constant AXIS_STRETCH_MODE_TILE], the texture may "
+"be slightly stretched to make the nine-patch texture tile seamlessly."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:4
+msgid "Helper tool to create geometry."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:7
+msgid ""
+"The [SurfaceTool] is used to construct a [Mesh] by specifying vertex "
+"attributes individually. It can be used to construct a [Mesh] from a script. "
+"All properties except indices need to be added before calling [method "
+"add_vertex]. For example, to add vertex colors and UVs:\n"
+"[codeblock]\n"
+"var st = SurfaceTool.new()\n"
+"st.begin(Mesh.PRIMITIVE_TRIANGLES)\n"
+"st.add_color(Color(1, 0, 0))\n"
+"st.add_uv(Vector2(0, 0))\n"
+"st.add_vertex(Vector3(0, 0, 0))\n"
+"[/codeblock]\n"
+"The above [SurfaceTool] now contains one vertex of a triangle which has a UV "
+"coordinate and a specified [Color]. If another vertex were added without "
+"calling [method add_uv] or [method add_color], then the last values would be "
+"used.\n"
+"Vertex attributes must be passed [b]before[/b] calling [method add_vertex]. "
+"Failure to do so will result in an error when committing the vertex "
+"information to a mesh.\n"
+"Additionally, the attributes used before the first vertex is added determine "
+"the format of the mesh. For example, if you only add UVs to the first "
+"vertex, you cannot add color to any of the subsequent vertices.\n"
+"See also [ArrayMesh], [ImmediateGeometry] and [MeshDataTool] for procedural "
+"geometry generation.\n"
+"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-"
+"OpenGL/Face-culling]winding order[/url] for front faces of triangle "
+"primitive modes."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:29
+msgid ""
+"Specifies an array of bones to use for the [i]next[/i] vertex. [code]bones[/"
+"code] must contain 4 integers."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:36
+msgid ""
+"Specifies a [Color] to use for the [i]next[/i] vertex. If every vertex needs "
+"to have this information set and you fail to submit it for the first vertex, "
+"this information may not be used at all.\n"
+"[b]Note:[/b] The material must have [member SpatialMaterial."
+"vertex_color_use_as_albedo] enabled for the vertex color to be visible."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:44
+msgid ""
+"Adds an index to index array if you are using indexed vertices. Does not "
+"need to be called before adding vertices."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:51
+msgid ""
+"Specifies a normal to use for the [i]next[/i] vertex. If every vertex needs "
+"to have this information set and you fail to submit it for the first vertex, "
+"this information may not be used at all."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:58
+msgid ""
+"Specifies whether the current vertex (if using only vertex arrays) or "
+"current index (if also using index arrays) should use smooth normals for "
+"normal calculation."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:65
+msgid ""
+"Specifies a tangent to use for the [i]next[/i] vertex. If every vertex needs "
+"to have this information set and you fail to submit it for the first vertex, "
+"this information may not be used at all."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:77
+msgid ""
+"Inserts a triangle fan made of array data into [Mesh] being constructed.\n"
+"Requires the primitive type be set to [constant Mesh.PRIMITIVE_TRIANGLES]."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:85
+msgid ""
+"Specifies a set of UV coordinates to use for the [i]next[/i] vertex. If "
+"every vertex needs to have this information set and you fail to submit it "
+"for the first vertex, this information may not be used at all."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:92
+msgid ""
+"Specifies an optional second set of UV coordinates to use for the [i]next[/"
+"i] vertex. If every vertex needs to have this information set and you fail "
+"to submit it for the first vertex, this information may not be used at all."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:99
+msgid ""
+"Specifies the position of current vertex. Should be called after specifying "
+"other vertex properties (e.g. Color, UV)."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:106
+msgid ""
+"Specifies weight values to use for the [i]next[/i] vertex. [code]weights[/"
+"code] must contain 4 values. If every vertex needs to have this information "
+"set and you fail to submit it for the first vertex, this information may not "
+"be used at all."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:115
+msgid ""
+"Append vertices from a given [Mesh] surface onto the current vertex array "
+"with specified [Transform]."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:122
+msgid ""
+"Called before adding any vertices. Takes the primitive type as an argument "
+"(e.g. [constant Mesh.PRIMITIVE_TRIANGLES])."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:128
+msgid "Clear all information passed into the surface tool so far."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:136
+msgid ""
+"Returns a constructed [ArrayMesh] from current information passed in. If an "
+"existing [ArrayMesh] is passed in as an argument, will add an extra surface "
+"to the existing [ArrayMesh].\n"
+"Default flag is [constant Mesh.ARRAY_COMPRESS_DEFAULT] if compression is "
+"enabled. If compression is disabled the default flag is [constant Mesh."
+"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION]. See [code]ARRAY_COMPRESS_*[/code] "
+"constants in [enum Mesh.ArrayFormat] for other flags."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:143
+msgid ""
+"Commits the data to the same format used by [method ArrayMesh."
+"add_surface_from_arrays]. This way you can further process the mesh data "
+"using the [ArrayMesh] API."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:151
+msgid "Creates a vertex array from an existing [Mesh]."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:160
+msgid ""
+"Creates a vertex array from the specified blend shape of an existing [Mesh]. "
+"This can be used to extract a specific pose from a blend shape."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:166
+msgid "Removes the index array by expanding the vertex array."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:173
+msgid ""
+"Generates normals from vertices so you do not have to do it manually. If "
+"[code]flip[/code] is [code]true[/code], the resulting normals will be "
+"inverted. [method generate_normals] should be called [i]after[/i] generating "
+"geometry and [i]before[/i] committing the mesh using [method commit] or "
+"[method commit_to_arrays]. For correct display of normal-mapped surfaces, "
+"you will also have to generate tangents using [method generate_tangents].\n"
+"[b]Note:[/b] [method generate_normals] only works if the primitive type to "
+"be set to [constant Mesh.PRIMITIVE_TRIANGLES]."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:180
+msgid ""
+"Generates a tangent vector for each vertex. Requires that each vertex have "
+"UVs and normals set already (see [method generate_normals])."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:186
+msgid ""
+"Shrinks the vertex array by creating an index array. This can improve "
+"performance by avoiding vertex reuse."
+msgstr ""
+
+#: doc/classes/SurfaceTool.xml:193
+msgid "Sets [Material] to be used by the [Mesh] you are constructing."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:4
+msgid "Tabbed container."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:7
+msgid ""
+"Sets the active tab's [code]visible[/code] property to the value [code]true[/"
+"code]. Sets all other children's to [code]false[/code].\n"
+"Ignores non-[Control] children."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:16
+msgid "Returns the child [Control] node located at the active tab index."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:22
+msgid ""
+"Returns the [Popup] node instance if one has been set already with [method "
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
+msgid "Returns the previously active tab index."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:36
+msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
+msgid "Returns the number of tabs."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
+msgid ""
+"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
+"disabled."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:56
+msgid ""
+"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
+msgid ""
+"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
+"[code]null[/code] if the tab has no [Texture]."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:70
+msgid ""
+"Returns the index of the tab at local coordinates [code]point[/code]. "
+"Returns [code]-1[/code] if the point is outside the control boundaries or if "
+"there's no tab at the queried position."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:77
+msgid ""
+"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
+"default to the name of the indexed child node, but this can be overridden "
+"with [method set_tab_title]."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:83
+msgid "Returns the [TabContainer] rearrange group id."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:90
+msgid ""
+"If set on a [Popup] node instance, a popup menu icon appears in the top-"
+"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
+msgid ""
+"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
+"[code]tab_idx[/code], making it non-interactable."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:106
+msgid ""
+"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
+"[code]tab_idx[/code], making it disappear from the tab area."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:114
+msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:122
+msgid ""
+"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
+"to the name of the indexed child node."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:129
+msgid ""
+"Defines rearrange group id, choose for each [TabContainer] the same value to "
+"enable tab drag between [TabContainer]. Enable drag with [member "
+"drag_to_rearrange_enabled]."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:135
+msgid ""
+"If [code]true[/code], all tabs are drawn in front of the panel. If "
+"[code]false[/code], inactive tabs are drawn behind the panel."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:138
+msgid ""
+"The current tab index. When set, this index's [Control] node's "
+"[code]visible[/code] property is set to [code]true[/code] and all others are "
+"set to [code]false[/code]."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
+msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:144
+msgid ""
+"The alignment of all tabs in the tab container. See the [enum TabAlign] "
+"constants for details."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:147
+msgid ""
+"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
+"and titles are hidden."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:150
+msgid ""
+"If [code]true[/code], children [Control] nodes that are hidden have their "
+"minimum size take into account in the total, instead of only the currently "
+"visible one."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:156
+msgid ""
+"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
+"set_popup] for details."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
+msgid "Emitted when switching to another tab."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:168
+msgid "Emitted when a tab is selected, even if it is the current tab."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
+msgid "Align the tabs to the left."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
+msgid "Align the tabs to the center."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
+msgid "Align the tabs to the right."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
+msgid ""
+"Icon for the left arrow button that appears when there are too many tabs to "
+"fit in the container width. When the button is disabled (i.e. the first tab "
+"is visible), it appears semi-transparent."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
+msgid ""
+"Icon for the left arrow button that appears when there are too many tabs to "
+"fit in the container width. Used when the button is being hovered with the "
+"cursor."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
+msgid "The font used to draw tab names."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
+msgid "Font color of inactive tabs."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
+msgid "Font color of disabled tabs."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
+msgid "Font color of the currently selected tab."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:203
+msgid "Horizontal separation between tabs."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
+msgid ""
+"Icon for the right arrow button that appears when there are too many tabs to "
+"fit in the container width. When the button is disabled (i.e. the last tab "
+"is visible) it appears semi-transparent."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
+msgid ""
+"Icon for the right arrow button that appears when there are too many tabs to "
+"fit in the container width. Used when the button is being hovered with the "
+"cursor."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:216
+msgid "The icon for the menu button (see [method set_popup])."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:219
+msgid ""
+"The icon for the menu button (see [method set_popup]) when it's being "
+"hovered with the cursor."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:222
+msgid "The style for the background fill."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:225
+msgid "The space at the left and right edges of the tab bar."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:228
+msgid "The style of inactive tabs."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:231
+msgid "The style of disabled tabs."
+msgstr ""
+
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
+msgid "The style of the currently selected tab."
+msgstr ""
+
+#: doc/classes/Tabs.xml:4
+msgid "Tabs control."
+msgstr ""
+
+#: doc/classes/Tabs.xml:7
+msgid ""
+"Simple tabs control, similar to [TabContainer] but is only in charge of "
+"drawing tabs, not interacting with children."
+msgstr ""
+
+#: doc/classes/Tabs.xml:17
+msgid "Adds a new tab."
+msgstr ""
+
+#: doc/classes/Tabs.xml:24
+msgid "Moves the scroll view to make the tab visible."
+msgstr ""
+
+#: doc/classes/Tabs.xml:30
+msgid ""
+"Returns [code]true[/code] if the offset buttons (the ones that appear when "
+"there's not enough space for all tabs) are visible."
+msgstr ""
+
+#: doc/classes/Tabs.xml:42
+msgid "Returns [code]true[/code] if select with right mouse button is enabled."
+msgstr ""
+
+#: doc/classes/Tabs.xml:68
+msgid "Returns the number of hidden tabs offsetted to the left."
+msgstr ""
+
+#: doc/classes/Tabs.xml:75
+msgid "Returns tab [Rect2] with local position and size."
+msgstr ""
+
+#: doc/classes/Tabs.xml:82
+msgid "Returns the title of the tab at index [code]tab_idx[/code]."
+msgstr ""
+
+#: doc/classes/Tabs.xml:88
+msgid "Returns the [Tabs]' rearrange group ID."
+msgstr ""
+
+#: doc/classes/Tabs.xml:96
+msgid "Moves a tab from [code]from[/code] to [code]to[/code]."
+msgstr ""
+
+#: doc/classes/Tabs.xml:103
+msgid "Removes the tab at index [code]tab_idx[/code]."
+msgstr ""
+
+#: doc/classes/Tabs.xml:110
+msgid ""
+"If [code]true[/code], enables selecting a tab with the right mouse button."
+msgstr ""
+
+#: doc/classes/Tabs.xml:126
+msgid "Sets an [code]icon[/code] for the tab at index [code]tab_idx[/code]."
+msgstr ""
+
+#: doc/classes/Tabs.xml:134
+msgid "Sets a [code]title[/code] for the tab at index [code]tab_idx[/code]."
+msgstr ""
+
+#: doc/classes/Tabs.xml:141
+msgid ""
+"Defines the rearrange group ID. Choose for each [Tabs] the same value to "
+"dragging tabs between [Tabs]. Enable drag with [member "
+"drag_to_rearrange_enabled]."
+msgstr ""
+
+#: doc/classes/Tabs.xml:147
+msgid "Select tab at index [code]tab_idx[/code]."
+msgstr ""
+
+#: doc/classes/Tabs.xml:153
+msgid ""
+"if [code]true[/code], the mouse's scroll wheel can be used to navigate the "
+"scroll view."
+msgstr ""
+
+#: doc/classes/Tabs.xml:156
+msgid "The alignment of all tabs. See [enum TabAlign] for details."
+msgstr ""
+
+#: doc/classes/Tabs.xml:159
+msgid ""
+"Sets when the close button will appear on the tabs. See [enum "
+"CloseButtonDisplayPolicy] for details."
+msgstr ""
+
+#: doc/classes/Tabs.xml:166
+msgid ""
+"Emitted when the active tab is rearranged via mouse drag. See [member "
+"drag_to_rearrange_enabled]."
+msgstr ""
+
+#: doc/classes/Tabs.xml:172
+msgid "Emitted when a tab is right-clicked."
+msgstr ""
+
+#: doc/classes/Tabs.xml:184
+msgid "Emitted when a tab is clicked, even if it is the current tab."
+msgstr ""
+
+#: doc/classes/Tabs.xml:190
+msgid "Emitted when a tab is closed."
+msgstr ""
+
+#: doc/classes/Tabs.xml:196
+msgid "Emitted when a tab is hovered by the mouse."
+msgstr ""
+
+#: doc/classes/Tabs.xml:211
+msgid "Represents the size of the [enum TabAlign] enum."
+msgstr ""
+
+#: doc/classes/Tabs.xml:214
+msgid "Never show the close buttons."
+msgstr ""
+
+#: doc/classes/Tabs.xml:217
+msgid "Only show the close button on the currently active tab."
+msgstr ""
+
+#: doc/classes/Tabs.xml:220
+msgid "Show the close button on all tabs."
+msgstr ""
+
+#: doc/classes/Tabs.xml:223
+msgid "Represents the size of the [enum CloseButtonDisplayPolicy] enum."
+msgstr ""
+
+#: doc/classes/Tabs.xml:228
+msgid "Background of the close button when it's being hovered with the cursor."
+msgstr ""
+
+#: doc/classes/Tabs.xml:231
+msgid "Background of the close button when it's being pressed."
+msgstr ""
+
+#: doc/classes/Tabs.xml:234
+msgid "The icon for the close button (see [member tab_close_display_policy])."
+msgstr ""
+
+#: doc/classes/Tabs.xml:255
+msgid "The horizontal separation between the tabs."
+msgstr ""
+
+#: doc/classes/Tabs.xml:268
+msgid "The style of an inactive tab."
+msgstr ""
+
+#: doc/classes/Tabs.xml:271
+msgid "The style of a disabled tab"
+msgstr ""
+
+#: doc/classes/TCP_Server.xml:4
+msgid "A TCP server."
+msgstr ""
+
+#: doc/classes/TCP_Server.xml:7
+msgid ""
+"A TCP server. Listens to connections on a port and returns a [StreamPeerTCP] "
+"when it gets an incoming connection."
+msgstr ""
+
+#: doc/classes/TCP_Server.xml:15
+msgid "Returns [code]true[/code] if a connection is available for taking."
+msgstr ""
+
+#: doc/classes/TCP_Server.xml:21
+msgid ""
+"Returns [code]true[/code] if the server is currently listening for "
+"connections."
+msgstr ""
+
+#: doc/classes/TCP_Server.xml:29
+msgid ""
+"Listen on the [code]port[/code] binding to [code]bind_address[/code].\n"
+"If [code]bind_address[/code] is set as [code]\"*\"[/code] (default), the "
+"server will listen on all available addresses (both IPv4 and IPv6).\n"
+"If [code]bind_address[/code] is set as [code]\"0.0.0.0\"[/code] (for IPv4) "
+"or [code]\"::\"[/code] (for IPv6), the server will listen on all available "
+"addresses matching that IP type.\n"
+"If [code]bind_address[/code] is set to any valid address (e.g. "
+"[code]\"192.168.1.101\"[/code], [code]\"::1\"[/code], etc), the server will "
+"only listen on the interface with that addresses (or fail if no interface "
+"with the given address exists)."
+msgstr ""
+
+#: doc/classes/TCP_Server.xml:38
+msgid "Stops listening."
+msgstr ""
+
+#: doc/classes/TCP_Server.xml:44
+msgid ""
+"If a connection is available, returns a StreamPeerTCP with the connection."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:4
+msgid "Multiline text editing control."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:7
+msgid ""
+"TextEdit is meant for editing large, multiline text. It also has facilities "
+"for editing code, such as syntax highlighting support and multiple levels of "
+"undo/redo.\n"
+"[b]Note:[/b] When holding down [code]Alt[/code], the vertical scroll wheel "
+"will scroll 5 times as fast as it would normally do. This also works in the "
+"Godot script editor."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:20
+msgid "Adds color region (given the delimiters) and its colors."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:28
+msgid "Adds a [code]keyword[/code] and its [Color]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:35
+msgid ""
+"Returns if the given line is foldable, that is, it has indented lines right "
+"below it."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:41
+msgid ""
+"Centers the viewport on the line the editing cursor is at. This also resets "
+"the [member scroll_horizontal] value to [code]0[/code]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:47
+msgid ""
+"Clears all custom syntax coloring information previously added with [method "
+"add_color_region] or [method add_keyword_color]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:53
+msgid "Clears the undo history."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:59
+msgid "Copy's the current text selection."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:65
+msgid "Returns the column the editing cursor is at."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:71
+msgid "Returns the line the editing cursor is at."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:79
+msgid ""
+"Moves the cursor at the specified [code]column[/code] index.\n"
+"If [code]adjust_viewport[/code] is set to [code]true[/code], the viewport "
+"will center at the cursor position after the move occurs."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:90
+msgid ""
+"Moves the cursor at the specified [code]line[/code] index.\n"
+"If [code]adjust_viewport[/code] is set to [code]true[/code], the viewport "
+"will center at the cursor position after the move occurs.\n"
+"If [code]can_be_hidden[/code] is set to [code]true[/code], the specified "
+"[code]line[/code] can be hidden using [method set_line_as_hidden]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:98
+msgid "Cut's the current selection."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:104
+msgid "Deselects the current selection."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:110
+msgid "Folds all lines that are possible to be folded (see [method can_fold])."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:117
+msgid "Folds the given line, if possible (see [method can_fold])."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:123
+msgid "Returns an array containing the line number of each breakpoint."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:130
+msgid "Returns the [Color] of the specified [code]keyword[/code]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:137
+msgid "Returns the text of a specific line."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:143
+msgid "Returns the amount of total lines in the text."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:149
+msgid ""
+"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:156
+msgid "Returns the selection begin column."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:162
+msgid "Returns the selection begin line."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:168
+msgid "Returns the text inside the selection."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:174
+msgid "Returns the selection end column."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:180
+msgid "Returns the selection end line."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:186
+msgid ""
+"Returns a [String] text with the word under the caret (text cursor) location."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:193
+msgid ""
+"Returns whether the specified [code]keyword[/code] has a color set to it or "
+"not."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
+msgid "Returns [code]true[/code] if a \"redo\" action is available."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
+msgid "Returns [code]true[/code] if an \"undo\" action is available."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:212
+msgid "Insert the specified text at the cursor position."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:219
+msgid "Returns whether the line at the specified index is folded or not."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:226
+msgid "Returns whether the line at the specified index is hidden or not."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:233
+msgid ""
+"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:240
+msgid ""
+"Returns [code]true[/code] when the specified [code]line[/code] has a "
+"breakpoint."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:247
+msgid ""
+"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
+"safe."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:253
+msgid "Returns [code]true[/code] if the selection is active."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:260
+msgid ""
+"Triggers a right-click menu action by the specified index. See [enum "
+"MenuItems] for a list of available indexes."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:266
+msgid "Paste the current selection."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:272
+msgid "Perform redo operation."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:278
+msgid ""
+"Removes all the breakpoints. This will not fire the [signal "
+"breakpoint_toggled] signal."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:288
+msgid ""
+"Perform a search inside the text. Search flags can be specified in the [enum "
+"SearchFlags] enum.\n"
+"Returns an empty [code]PoolIntArray[/code] if no result was found. "
+"Otherwise, the result line and column can be accessed at indices specified "
+"in the [enum SearchResult] enum, e.g:\n"
+"[codeblock]\n"
+"var result = search(key, flags, line, column)\n"
+"if result.size() > 0:\n"
+" # Result found.\n"
+" var res_line = result[TextEdit.SEARCH_RESULT_LINE]\n"
+" var res_column = result[TextEdit.SEARCH_RESULT_COLUMN]\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/TextEdit.xml:306
+msgid ""
+"Perform selection, from line/column to line/column.\n"
+"If [member selecting_enabled] is [code]false[/code], no selection will occur."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:313
+msgid ""
+"Select all the text.\n"
+"If [member selecting_enabled] is [code]false[/code], no selection will occur."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:322
+msgid "Sets the text for a specific line."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:330
+msgid ""
+"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
+"the bookmark if [code]bookmark[/code] is false.\n"
+"Bookmarks are shown in the [member breakpoint_gutter]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:339
+msgid ""
+"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
+"in the [member breakpoint_gutter]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:347
+msgid "If [code]true[/code], hides the line of the specified index."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:355
+msgid ""
+"If [code]true[/code], marks the [code]line[/code] as safe.\n"
+"This will show the line number with the color provided in the "
+"[code]safe_line_number_color[/code] theme property."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:363
+msgid "Toggle the folding of the code block at the given line."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:369
+msgid "Perform undo operation."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:376
+msgid "Unfolds the given line, if folded."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:382
+msgid ""
+"Unhide all lines that were previously set to hidden by [method "
+"set_line_as_hidden]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:388
+msgid "If [code]true[/code], the breakpoint gutter is visible."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:397
+msgid ""
+"If [code]true[/code], the caret displays as a rectangle.\n"
+"If [code]false[/code], the caret displays as a bar."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:401
+msgid ""
+"If [code]true[/code], a right-click moves the cursor at the mouse position "
+"before displaying the context menu.\n"
+"If [code]false[/code], the context menu disregards mouse location."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:405
+msgid "If [code]true[/code], a right-click displays the context menu."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:408
+msgid ""
+"If [code]true[/code], the \"space\" character will have a visible "
+"representation."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:411
+msgid ""
+"If [code]true[/code], the \"tab\" character will have a visible "
+"representation."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:415
+msgid ""
+"If [code]true[/code], the fold gutter is visible. This enables folding "
+"groups of indented lines."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:418
+msgid ""
+"If [code]true[/code], all lines that have been set to hidden by [method "
+"set_line_as_hidden], will not be visible."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:421
+msgid ""
+"If [code]true[/code], all occurrences of the selected text will be "
+"highlighted."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:424
+msgid "If [code]true[/code], the line containing the cursor is highlighted."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:427
+msgid ""
+"If [code]true[/code], a minimap is shown, providing an outline of your "
+"source code."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:430
+msgid "The width, in pixels, of the minimap."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:434
+msgid ""
+"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
+"for selected text."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:437
+msgid ""
+"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
+"modified and new text cannot be added."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:440
+msgid ""
+"If there is a horizontal scrollbar, this determines the current horizontal "
+"scroll value in pixels."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:443
+msgid ""
+"If there is a vertical scrollbar, this determines the current vertical "
+"scroll value in line numbers, starting at 0 for the top line."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:446
+msgid ""
+"If [code]true[/code], text can be selected.\n"
+"If [code]false[/code], text can not be selected by the user or by the "
+"[method select] or [method select_all] methods."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:450
+msgid ""
+"If [code]true[/code], shortcut keys for context menu items are enabled, even "
+"if the context menu is disabled."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:453
+msgid ""
+"If [code]true[/code], line numbers are displayed to the left of the text."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:456
+msgid ""
+"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
+"[code]0.25[/code] which results in smoother scrolling."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:459
+msgid ""
+"If [code]true[/code], any custom color properties that have been set for "
+"this [TextEdit] will be visible."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:462
+msgid "String value of the [TextEdit]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:465
+msgid "Vertical scroll sensitivity."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:471
+msgid ""
+"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
+"what is visible."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:478
+msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:483
+msgid "Emitted when the cursor changes."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:490
+msgid "Emitted when the info icon is clicked."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:512
+msgid "Match case when searching."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:515
+msgid "Match whole words when searching."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:518
+msgid "Search from end to beginning."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:521
+msgid "Used to access the result column from [method search]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:524
+msgid "Used to access the result line from [method search]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:533
+msgid ""
+"Pastes the clipboard text over the selected text (or at the cursor's "
+"position)."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:536
+msgid "Erases the whole [TextEdit] text."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:539
+msgid "Selects the whole [TextEdit] text."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:545
+msgid "Redoes the previous action."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:553
+msgid ""
+"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
+"has to be enabled."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:556
+msgid ""
+"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
+"be enabled."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
+msgid ""
+"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
+"enabled."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:599
+msgid "Sets the default [Font]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:602
+msgid "Sets the font [Color]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:607
+msgid ""
+"Sets the [Color] of the selected text. [member override_selected_font_color] "
+"has to be enabled."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:612
+msgid ""
+"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
+"enabled."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:615
+msgid "Sets the spacing between the lines."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:618
+msgid "Sets the [Color] of marked text."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:623
+msgid "Sets the [StyleBox] of this [TextEdit]."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:628
+msgid ""
+"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:633
+msgid "Sets the highlight [Color] of text selections."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:640
+msgid "Sets a custom [Texture] for tab text characters."
+msgstr ""
+
+#: doc/classes/TextEdit.xml:643
+msgid ""
+"Sets the highlight [Color] of multiple occurrences. [member "
+"highlight_all_occurrences] has to be enabled."
+msgstr ""
+
+#: doc/classes/Texture.xml:4
+msgid "Texture for 2D and 3D."
+msgstr ""
+
+#: doc/classes/Texture.xml:7
+msgid ""
+"A texture works by registering an image in the video hardware, which then "
+"can be used in 3D models or 2D [Sprite] or GUI [Control].\n"
+"Textures are often created by loading them from a file. See [method "
+"@GDScript.load].\n"
+"[Texture] is a base for other resources. It cannot be used directly.\n"
+"[b]Note:[/b] The maximum texture size is 16384×16384 pixels due to graphics "
+"hardware limitations. Larger textures may fail to import."
+msgstr ""
+
+#: doc/classes/Texture.xml:23
+msgid ""
+"Draws the texture using a [CanvasItem] with the [VisualServer] API at the "
+"specified [code]position[/code]. Equivalent to [method VisualServer."
+"canvas_item_add_texture_rect] with a rect at [code]position[/code] and the "
+"size of this [Texture]."
+msgstr ""
+
+#: doc/classes/Texture.xml:35
+msgid ""
+"Draws the texture using a [CanvasItem] with the [VisualServer] API. "
+"Equivalent to [method VisualServer.canvas_item_add_texture_rect]."
+msgstr ""
+
+#: doc/classes/Texture.xml:48
+msgid ""
+"Draws a part of the texture using a [CanvasItem] with the [VisualServer] "
+"API. Equivalent to [method VisualServer.canvas_item_add_texture_rect_region]."
+msgstr ""
+
+#: doc/classes/Texture.xml:54
+msgid ""
+"Returns an [Image] that is a copy of data from this [Texture]. [Image]s can "
+"be accessed and manipulated directly."
+msgstr ""
+
+#: doc/classes/Texture.xml:60
+msgid "Returns the texture height."
+msgstr ""
+
+#: doc/classes/Texture.xml:66
+msgid "Returns the texture size."
+msgstr ""
+
+#: doc/classes/Texture.xml:72
+msgid "Returns the texture width."
+msgstr ""
+
+#: doc/classes/Texture.xml:78
+msgid "Returns [code]true[/code] if this [Texture] has an alpha channel."
+msgstr ""
+
+#: doc/classes/Texture.xml:84
+msgid ""
+"The texture's [enum Flags]. [enum Flags] are used to set various properties "
+"of the [Texture]."
+msgstr ""
+
+#: doc/classes/Texture.xml:89
+msgid ""
+"Default flags. [constant FLAG_MIPMAPS], [constant FLAG_REPEAT] and [constant "
+"FLAG_FILTER] are enabled."
+msgstr ""
+
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
+msgid ""
+"Generates mipmaps, which are smaller versions of the same texture to use "
+"when zoomed out, keeping the aspect ratio."
+msgstr ""
+
+#: doc/classes/Texture.xml:95
+msgid ""
+"Repeats the texture (instead of clamp to edge).\n"
+"[b]Note:[/b] Ignored when using an [AtlasTexture] as these don't support "
+"repetition."
+msgstr ""
+
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
+msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
+msgstr ""
+
+#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
+#: doc/classes/VisualServer.xml:3215
+msgid ""
+"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
+"texture with different aspect ratios.\n"
+"This results in better-looking textures when viewed from oblique angles."
+msgstr ""
+
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
+msgid "Converts the texture to the sRGB color space."
+msgstr ""
+
+#: doc/classes/Texture.xml:109
+msgid ""
+"Repeats the texture with alternate sections mirrored.\n"
+"[b]Note:[/b] Ignored when using an [AtlasTexture] as these don't support "
+"repetition."
+msgstr ""
+
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
+msgid "Texture is a video surface."
+msgstr ""
+
+#: doc/classes/Texture3D.xml:4
+msgid "Texture with 3 dimensions."
+msgstr ""
+
+#: doc/classes/Texture3D.xml:7
+msgid ""
+"Texture3D is a 3-dimensional texture that has a width, height, and depth."
+msgstr ""
+
+#: doc/classes/Texture3D.xml:20
+msgid ""
+"Creates the Texture3D with specified [code]width[/code], [code]height[/"
+"code], and [code]depth[/code]. See [enum Image.Format] for [code]format[/"
+"code] options. See [enum TextureLayered.Flags] enumerator for [code]flags[/"
+"code] options."
+msgstr ""
+
+#: doc/classes/TextureArray.xml:4
+msgid "Array of textures stored in a single primitive."
+msgstr ""
+
+#: doc/classes/TextureArray.xml:7
+msgid ""
+"[TextureArray]s store an array of [Image]s in a single [Texture] primitive. "
+"Each layer of the texture array has its own mipmap chain. This makes it is a "
+"good alternative to texture atlases.\n"
+"[TextureArray]s must be displayed using shaders. After importing your file "
+"as a [TextureArray] and setting the appropriate Horizontal and Vertical "
+"Slices, display it by setting it as a uniform to a shader, for example:\n"
+"[codeblock]\n"
+"shader_type canvas_item;\n"
+"\n"
+"uniform sampler2DArray tex;\n"
+"uniform int index;\n"
+"\n"
+"void fragment() {\n"
+" COLOR = texture(tex, vec3(UV.x, UV.y, float(index)));\n"
+"}\n"
+"[/codeblock]\n"
+"Set the integer uniform \"index\" to show a particular part of the texture "
+"as defined by the Horizontal and Vertical Slices in the importer."
+msgstr ""
+
+#: doc/classes/TextureArray.xml:32
+msgid ""
+"Creates the TextureArray with specified [code]width[/code], [code]height[/"
+"code], and [code]depth[/code]. See [enum Image.Format] for [code]format[/"
+"code] options. See [enum TextureLayered.Flags] enumerator for [code]flags[/"
+"code] options."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:4
+msgid ""
+"Texture-based button. Supports Pressed, Hover, Disabled and Focused states."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:7
+msgid ""
+"[TextureButton] has the same functionality as [Button], except it uses "
+"sprites instead of Godot's [Theme] resource. It is faster to create, but it "
+"doesn't support localization like more complex [Control]s.\n"
+"The \"normal\" state must contain a texture ([member texture_normal]); other "
+"textures are optional.\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:18
+msgid ""
+"If [code]true[/code], the texture stretches to the edges of the node's "
+"bounding rectangle using the [member stretch_mode]. If [code]false[/code], "
+"the texture will not scale with the node."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:27
+msgid ""
+"Controls the texture's behavior when you resize the node's bounding "
+"rectangle, [b]only if[/b] [member expand] is [code]true[/code]. Set it to "
+"one of the [enum StretchMode] constants. See the constants to learn more."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:30
+msgid ""
+"Pure black and white [BitMap] image to use for click detection. On the mask, "
+"white pixels represent the button's clickable area. Use it to create buttons "
+"with curved shapes."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:33
+msgid ""
+"Texture to display when the node is disabled. See [member BaseButton."
+"disabled]."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:36
+msgid "Texture to display when the node has mouse or keyboard focus."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:39
+msgid "Texture to display when the mouse hovers the node."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:42
+msgid ""
+"Texture to display by default, when the node is [b]not[/b] in the disabled, "
+"focused, hover or pressed state."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:45
+msgid ""
+"Texture to display on mouse down over the node, if the node has keyboard "
+"focus and the player presses the Enter key or if the player presses the "
+"[member BaseButton.shortcut] key."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:50 doc/classes/TextureRect.xml:38
+msgid "Scale to fit the node's bounding rectangle."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:53 doc/classes/TextureRect.xml:41
+msgid "Tile inside the node's bounding rectangle."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:56 doc/classes/TextureRect.xml:44
+msgid ""
+"The texture keeps its original size and stays in the bounding rectangle's "
+"top-left corner."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:59 doc/classes/TextureRect.xml:47
+msgid ""
+"The texture keeps its original size and stays centered in the node's "
+"bounding rectangle."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:62 doc/classes/TextureRect.xml:50
+msgid ""
+"Scale the texture to fit the node's bounding rectangle, but maintain the "
+"texture's aspect ratio."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:65
+msgid ""
+"Scale the texture to fit the node's bounding rectangle, center it, and "
+"maintain its aspect ratio."
+msgstr ""
+
+#: doc/classes/TextureButton.xml:68 doc/classes/TextureRect.xml:56
+msgid ""
+"Scale the texture so that the shorter side fits the bounding rectangle. The "
+"other side clips to the node's limits."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:4
+msgid "Base class for 3D texture types."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:7
+msgid ""
+"Base class for [Texture3D] and [TextureArray]. Cannot be used directly, but "
+"contains all the functions necessary for accessing and using [Texture3D] and "
+"[TextureArray]. Data is set on a per-layer basis. For [Texture3D]s, the "
+"layer specifies the depth or Z-index, they can be treated as a bunch of 2D "
+"slices. Similarly, for [TextureArray]s, the layer specifies the array layer."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:15
+msgid ""
+"Returns the depth of the texture. Depth is the 3rd dimension (typically Z-"
+"axis)."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:21
+msgid ""
+"Returns the current format being used by this texture. See [enum Image."
+"Format] for details."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:27
+msgid ""
+"Returns the height of the texture. Height is typically represented by the Y-"
+"axis."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:34
+msgid ""
+"Returns an [Image] resource with the data from specified [code]layer[/code]."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:40
+msgid ""
+"Returns the width of the texture. Width is typically represented by the X-"
+"axis."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:51
+msgid ""
+"Partially sets the data for a specified [code]layer[/code] by overwriting "
+"using the data of the specified [code]image[/code]. [code]x_offset[/code] "
+"and [code]y_offset[/code] determine where the [Image] is \"stamped\" over "
+"the texture. The [code]image[/code] must fit within the texture."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:59
+msgid ""
+"Sets the data for the specified layer. Data takes the form of a 2-"
+"dimensional [Image] resource."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:65
+msgid "Returns a dictionary with all the data used by this texture."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:68
+msgid "Specifies which [enum Flags] apply to this texture."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:73
+msgid ""
+"Default flags for [TextureArray]. [constant FLAG_MIPMAPS], [constant "
+"FLAG_REPEAT] and [constant FLAG_FILTER] are enabled."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:76
+msgid "Default flags for [Texture3D]. [constant FLAG_FILTER] is enabled."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:79
+msgid "Texture will generate mipmaps on creation."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:82
+msgid "Texture will repeat when UV used is outside the 0-1 range."
+msgstr ""
+
+#: doc/classes/TextureLayered.xml:85
+msgid ""
+"Use filtering when reading from texture. Filtering smooths out pixels. "
+"Turning filtering off is slightly faster and more appropriate when you need "
+"access to individual pixels."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:4
+msgid ""
+"Texture-based progress bar. Useful for loading screens and life or stamina "
+"bars."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:7
+msgid ""
+"TextureProgress works like [ProgressBar], but uses up to 3 textures instead "
+"of Godot's [Theme] resource. It can be used to create horizontal, vertical "
+"and radial progress bars."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:28
+msgid "The fill direction. See [enum FillMode] for possible values."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:32
+msgid ""
+"If [code]true[/code], Godot treats the bar's textures like in "
+"[NinePatchRect]. Use the [code]stretch_margin_*[/code] properties like "
+"[member stretch_margin_bottom] to set up the nine patch's 3×3 grid. When "
+"using a radial [member fill_mode], this setting will enable stretching."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:35
+msgid ""
+"Offsets [member texture_progress] if [member fill_mode] is [constant "
+"FILL_CLOCKWISE] or [constant FILL_COUNTER_CLOCKWISE]."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:38
+msgid ""
+"Upper limit for the fill of [member texture_progress] if [member fill_mode] "
+"is [constant FILL_CLOCKWISE] or [constant FILL_COUNTER_CLOCKWISE]. When the "
+"node's [code]value[/code] is equal to its [code]max_value[/code], the "
+"texture fills up to this angle.\n"
+"See [member Range.value], [member Range.max_value]."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:42
+msgid ""
+"Starting angle for the fill of [member texture_progress] if [member "
+"fill_mode] is [constant FILL_CLOCKWISE] or [constant "
+"FILL_COUNTER_CLOCKWISE]. When the node's [code]value[/code] is equal to its "
+"[code]min_value[/code], the texture doesn't show up at all. When the "
+"[code]value[/code] increases, the texture fills and tends towards [member "
+"radial_fill_degrees]."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:45
+msgid ""
+"The height of the 9-patch's bottom row. A margin of 16 means the 9-slice's "
+"bottom corners and side will have a height of 16 pixels. You can set all 4 "
+"margin values individually to create panels with non-uniform borders."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:48
+msgid "The width of the 9-patch's left column."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:51
+msgid "The width of the 9-patch's right column."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:54
+msgid "The height of the 9-patch's top row."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:57
+msgid ""
+"[Texture] that draws over the progress bar. Use it to add highlights or an "
+"upper-frame that hides part of [member texture_progress]."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:60
+msgid ""
+"[Texture] that clips based on the node's [code]value[/code] and [member "
+"fill_mode]. As [code]value[/code] increased, the texture fills up. It shows "
+"entirely when [code]value[/code] reaches [code]max_value[/code]. It doesn't "
+"show at all if [code]value[/code] is equal to [code]min_value[/code].\n"
+"The [code]value[/code] property comes from [Range]. See [member Range."
+"value], [member Range.min_value], [member Range.max_value]."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:64
+msgid ""
+"The offset of [member texture_progress]. Useful for [member texture_over] "
+"and [member texture_under] with fancy borders, to avoid transparent margins "
+"in your progress texture."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:67
+msgid "[Texture] that draws under the progress bar. The bar's background."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:70
+msgid ""
+"Multiplies the color of the bar's [code]texture_over[/code] texture. The "
+"effect is similar to [member CanvasItem.modulate], except it only affects "
+"this specific texture instead of the entire node."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:73
+msgid ""
+"Multiplies the color of the bar's [code]texture_progress[/code] texture."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:76
+msgid "Multiplies the color of the bar's [code]texture_under[/code] texture."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:81
+msgid "The [member texture_progress] fills from left to right."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:84
+msgid "The [member texture_progress] fills from right to left."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:87
+msgid "The [member texture_progress] fills from top to bottom."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:90
+msgid "The [member texture_progress] fills from bottom to top."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:93
+msgid ""
+"Turns the node into a radial bar. The [member texture_progress] fills "
+"clockwise. See [member radial_center_offset], [member radial_initial_angle] "
+"and [member radial_fill_degrees] to control the way the bar fills up."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:96
+msgid ""
+"Turns the node into a radial bar. The [member texture_progress] fills "
+"counterclockwise. See [member radial_center_offset], [member "
+"radial_initial_angle] and [member radial_fill_degrees] to control the way "
+"the bar fills up."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:99
+msgid ""
+"The [member texture_progress] fills from the center, expanding both towards "
+"the left and the right."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:102
+msgid ""
+"The [member texture_progress] fills from the center, expanding both towards "
+"the top and the bottom."
+msgstr ""
+
+#: doc/classes/TextureProgress.xml:105
+msgid ""
+"Turns the node into a radial bar. The [member texture_progress] fills "
+"radially from the center, expanding both clockwise and counterclockwise. See "
+"[member radial_center_offset], [member radial_initial_angle] and [member "
+"radial_fill_degrees] to control the way the bar fills up."
+msgstr ""
+
+#: doc/classes/TextureRect.xml:4
+msgid "Control for drawing textures."
+msgstr ""
+
+#: doc/classes/TextureRect.xml:7
+msgid ""
+"Used to draw icons and sprites in a user interface. The texture's placement "
+"can be controlled with the [member stretch_mode] property. It can scale, "
+"tile, or stay centered inside its bounding rectangle.\n"
+"[b]Note:[/b] You should enable [member flip_v] when using a TextureRect to "
+"display a [ViewportTexture]. Alternatively, you can enable [member Viewport."
+"render_target_v_flip] on the Viewport. Otherwise, the image will appear "
+"upside down."
+msgstr ""
+
+#: doc/classes/TextureRect.xml:17
+msgid "If [code]true[/code], the texture scales to fit its bounding rectangle."
+msgstr ""
+
+#: doc/classes/TextureRect.xml:27
+msgid ""
+"Controls the texture's behavior when resizing the node's bounding rectangle. "
+"See [enum StretchMode]."
+msgstr ""
+
+#: doc/classes/TextureRect.xml:30
+msgid "The node's [Texture] resource."
+msgstr ""
+
+#: doc/classes/TextureRect.xml:35
+msgid ""
+"Scale to fit the node's bounding rectangle, only if [code]expand[/code] is "
+"[code]true[/code]. Default [code]stretch_mode[/code], for backwards "
+"compatibility. Until you set [code]expand[/code] to [code]true[/code], the "
+"texture will behave like [constant STRETCH_KEEP]."
+msgstr ""
+
+#: doc/classes/TextureRect.xml:53
+msgid ""
+"Scale the texture to fit the node's bounding rectangle, center it and "
+"maintain its aspect ratio."
+msgstr ""
+
+#: doc/classes/Theme.xml:4
+msgid "Theme for controls."
+msgstr ""
+
+#: doc/classes/Theme.xml:7
+msgid ""
+"A theme for skinning controls. Controls can be skinned individually, but for "
+"complex applications, it's more practical to just create a global theme that "
+"defines everything. This theme can be applied to any [Control]; the Control "
+"and its children will automatically use it.\n"
+"Theme resources can alternatively be loaded by writing them in a [code]."
+"theme[/code] file, see the documentation for more information."
+msgstr ""
+
+#: doc/classes/Theme.xml:11
+msgid "https://docs.godotengine.org/en/3.4/tutorials/gui/gui_skinning.html"
+msgstr ""
+
+#: doc/classes/Theme.xml:17
+msgid "Clears all values on the theme."
+msgstr ""
+
+#: doc/classes/Theme.xml:25
+msgid ""
+"Clears the [Color] at [code]name[/code] if the theme has [code]node_type[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:33
+msgid ""
+"Clears the constant at [code]name[/code] if the theme has [code]node_type[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:41
+msgid ""
+"Clears the [Font] at [code]name[/code] if the theme has [code]node_type[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:49
+msgid ""
+"Clears the icon at [code]name[/code] if the theme has [code]node_type[/code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:57
+msgid ""
+"Clears [StyleBox] at [code]name[/code] if the theme has [code]node_type[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:66
+msgid ""
+"Clears the theme item of [code]data_type[/code] at [code]name[/code] if the "
+"theme has [code]node_type[/code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:72
+msgid "Sets the theme's values to a copy of the default theme values."
+msgstr ""
+
+#: doc/classes/Theme.xml:79
+msgid "Sets the theme's values to a copy of a given theme."
+msgstr ""
+
+#: doc/classes/Theme.xml:87
+msgid ""
+"Returns the [Color] at [code]name[/code] if the theme has [code]node_type[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:94
+msgid ""
+"Returns all the [Color]s as a [PoolStringArray] filled with each [Color]'s "
+"name, for use in [method get_color], if the theme has [code]node_type[/code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:100
+msgid ""
+"Returns all the [Color] types as a [PoolStringArray] filled with unique type "
+"names, for use in [method get_color] and/or [method get_color_list]."
+msgstr ""
+
+#: doc/classes/Theme.xml:108
+msgid ""
+"Returns the constant at [code]name[/code] if the theme has [code]node_type[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:115
+msgid ""
+"Returns all the constants as a [PoolStringArray] filled with each constant's "
+"name, for use in [method get_constant], if the theme has [code]node_type[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:121
+msgid ""
+"Returns all the constant types as a [PoolStringArray] filled with unique "
+"type names, for use in [method get_constant] and/or [method "
+"get_constant_list]."
+msgstr ""
+
+#: doc/classes/Theme.xml:129
+msgid ""
+"Returns the [Font] at [code]name[/code] if the theme has [code]node_type[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:136
+msgid ""
+"Returns all the [Font]s as a [PoolStringArray] filled with each [Font]'s "
+"name, for use in [method get_font], if the theme has [code]node_type[/code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:142
+msgid ""
+"Returns all the [Font] types as a [PoolStringArray] filled with unique type "
+"names, for use in [method get_font] and/or [method get_font_list]."
+msgstr ""
+
+#: doc/classes/Theme.xml:150
+msgid ""
+"Returns the icon [Texture] at [code]name[/code] if the theme has "
+"[code]node_type[/code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:157
+msgid ""
+"Returns all the icons as a [PoolStringArray] filled with each [Texture]'s "
+"name, for use in [method get_icon], if the theme has [code]node_type[/code]."
+msgstr ""
+
+#: doc/classes/Theme.xml:163
+msgid ""
+"Returns all the icon types as a [PoolStringArray] filled with unique type "
+"names, for use in [method get_icon] and/or [method get_icon_list]."
+msgstr ""
+
+#: doc/classes/Theme.xml:171
+msgid ""
+"Returns the [StyleBox] at [code]name[/code] if the theme has "
+"[code]node_type[/code].\n"
+"Valid [code]name[/code]s may be found using [method get_stylebox_list]. "
+"Valid [code]node_type[/code]s may be found using [method get_stylebox_types]."
+msgstr ""
+
+#: doc/classes/Theme.xml:179
+msgid ""
+"Returns all the [StyleBox]s as a [PoolStringArray] filled with each "
+"[StyleBox]'s name, for use in [method get_stylebox], if the theme has "
+"[code]node_type[/code].\n"
+"Valid [code]node_type[/code]s may be found using [method get_stylebox_types]."
+msgstr ""
+
+#: doc/classes/Theme.xml:186
+msgid ""
+"Returns all the [StyleBox] types as a [PoolStringArray] filled with unique "
+"type names, for use in [method get_stylebox] and/or [method "
+"get_stylebox_list]."
+msgstr ""
+
+#: doc/classes/Theme.xml:195
+msgid ""
+"Returns the theme item of [code]data_type[/code] at [code]name[/code] if the "
+"theme has [code]node_type[/code].\n"
+"Valid [code]name[/code]s may be found using [method get_theme_item_list] or "
+"a data type specific method. Valid [code]node_type[/code]s may be found "
+"using [method get_theme_item_types] or a data type specific method."
+msgstr ""
+
+#: doc/classes/Theme.xml:204
+msgid ""
+"Returns all the theme items of [code]data_type[/code] as a [PoolStringArray] "
+"filled with each theme items's name, for use in [method get_theme_item] or a "
+"data type specific method, if the theme has [code]node_type[/code].\n"
+"Valid [code]node_type[/code]s may be found using [method "
+"get_theme_item_types] or a data type specific method."
+msgstr ""
+
+#: doc/classes/Theme.xml:212
+msgid ""
+"Returns all the theme items of [code]data_type[/code] types as a "
+"[PoolStringArray] filled with unique type names, for use in [method "
+"get_theme_item], [method get_theme_item_list] or data type specific methods."
+msgstr ""
+
+#: doc/classes/Theme.xml:219
+msgid ""
+"Returns all the theme types as a [PoolStringArray] filled with unique type "
+"names, for use in other [code]get_*[/code] functions of this theme.\n"
+"[b]Note:[/b] [code]node_type[/code] has no effect and will be removed in "
+"future version."
+msgstr ""
+
+#: doc/classes/Theme.xml:228
+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 ""
+
+#: doc/classes/Theme.xml:237
+msgid ""
+"Returns [code]true[/code] if constant 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 ""
+
+#: doc/classes/Theme.xml:244
+msgid ""
+"Returns [code]true[/code] if this theme has a valid [member default_font] "
+"value."
+msgstr ""
+
+#: doc/classes/Theme.xml:252
+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 ""
+
+#: doc/classes/Theme.xml:261
+msgid ""
+"Returns [code]true[/code] if icon [Texture] 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 ""
+
+#: doc/classes/Theme.xml:270
+msgid ""
+"Returns [code]true[/code] if [StyleBox] 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 ""
+
+#: doc/classes/Theme.xml:280
+msgid ""
+"Returns [code]true[/code] if a theme item of [code]data_type[/code] 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 ""
+
+#: doc/classes/Theme.xml:288
+msgid ""
+"Adds missing and overrides existing definitions with values from the "
+"[code]other[/code] [Theme].\n"
+"[b]Note:[/b] This modifies the current theme. If you want to merge two "
+"themes together without modifying either one, create a new empty theme and "
+"merge the other two into it one after another."
+msgstr ""
+
+#: doc/classes/Theme.xml:298
+msgid ""
+"Renames the [Color] at [code]old_name[/code] to [code]name[/code] if the "
+"theme has [code]node_type[/code]. If [code]name[/code] is already taken, "
+"this method fails."
+msgstr ""
+
+#: doc/classes/Theme.xml:307
+msgid ""
+"Renames the constant at [code]old_name[/code] to [code]name[/code] if the "
+"theme has [code]node_type[/code]. If [code]name[/code] is already taken, "
+"this method fails."
+msgstr ""
+
+#: doc/classes/Theme.xml:316
+msgid ""
+"Renames the [Font] at [code]old_name[/code] to [code]name[/code] if the "
+"theme has [code]node_type[/code]. If [code]name[/code] is already taken, "
+"this method fails."
+msgstr ""
+
+#: doc/classes/Theme.xml:325
+msgid ""
+"Renames the icon at [code]old_name[/code] to [code]name[/code] if the theme "
+"has [code]node_type[/code]. If [code]name[/code] is already taken, this "
+"method fails."
+msgstr ""
+
+#: doc/classes/Theme.xml:334
+msgid ""
+"Renames [StyleBox] at [code]old_name[/code] to [code]name[/code] if the "
+"theme has [code]node_type[/code]. If [code]name[/code] is already taken, "
+"this method fails."
+msgstr ""
+
+#: doc/classes/Theme.xml:344
+msgid ""
+"Renames the theme item of [code]data_type[/code] at [code]old_name[/code] to "
+"[code]name[/code] if the theme has [code]node_type[/code]. If [code]name[/"
+"code] is already taken, this method fails."
+msgstr ""
+
+#: doc/classes/Theme.xml:353
+msgid ""
+"Sets the theme's [Color] to [code]color[/code] at [code]name[/code] in "
+"[code]node_type[/code].\n"
+"Creates [code]node_type[/code] if the theme does not have it."
+msgstr ""
+
+#: doc/classes/Theme.xml:363
+msgid ""
+"Sets the theme's constant to [code]constant[/code] at [code]name[/code] in "
+"[code]node_type[/code].\n"
+"Creates [code]node_type[/code] if the theme does not have it."
+msgstr ""
+
+#: doc/classes/Theme.xml:373
+msgid ""
+"Sets the theme's [Font] to [code]font[/code] at [code]name[/code] in "
+"[code]node_type[/code].\n"
+"Creates [code]node_type[/code] if the theme does not have it."
+msgstr ""
+
+#: doc/classes/Theme.xml:383
+msgid ""
+"Sets the theme's icon [Texture] to [code]texture[/code] at [code]name[/code] "
+"in [code]node_type[/code].\n"
+"Creates [code]node_type[/code] if the theme does not have it."
+msgstr ""
+
+#: doc/classes/Theme.xml:393
+msgid ""
+"Sets theme's [StyleBox] to [code]stylebox[/code] at [code]name[/code] in "
+"[code]node_type[/code].\n"
+"Creates [code]node_type[/code] if the theme does not have it."
+msgstr ""
+
+#: doc/classes/Theme.xml:404
+msgid ""
+"Sets the theme item of [code]data_type[/code] to [code]value[/code] at "
+"[code]name[/code] in [code]node_type[/code].\n"
+"Does nothing if the [code]value[/code] type does not match [code]data_type[/"
+"code].\n"
+"Creates [code]node_type[/code] if the theme does not have it."
+msgstr ""
+
+#: doc/classes/Theme.xml:412
+msgid ""
+"The default font of this [Theme] resource. Used as a fallback value for font "
+"items defined in this theme, but having invalid values. If this value is "
+"also invalid, the global default value is used.\n"
+"Use [method has_default_font] to check if this value is valid."
+msgstr ""
+
+#: doc/classes/Theme.xml:418
+msgid "Theme's [Color] item type."
+msgstr ""
+
+#: doc/classes/Theme.xml:421
+msgid "Theme's constant item type."
+msgstr ""
+
+#: doc/classes/Theme.xml:424
+msgid "Theme's [Font] item type."
+msgstr ""
+
+#: doc/classes/Theme.xml:427
+msgid "Theme's icon [Texture] item type."
+msgstr ""
+
+#: doc/classes/Theme.xml:430
+msgid "Theme's [StyleBox] item type."
+msgstr ""
+
+#: doc/classes/Theme.xml:433
+msgid "Maximum value for the DataType enum."
+msgstr ""
+
+#: doc/classes/Thread.xml:4
+msgid "A unit of execution in a process."
+msgstr ""
+
+#: doc/classes/Thread.xml:7
+msgid ""
+"A unit of execution in a process. Can run methods on [Object]s "
+"simultaneously. The use of synchronization via [Mutex] or [Semaphore] is "
+"advised if working with shared objects.\n"
+"[b]Note:[/b] Breakpoints won't break on code if it's running in a thread. "
+"This is a current limitation of the GDScript debugger."
+msgstr ""
+
+#: doc/classes/Thread.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/threads/thread_safe_apis.html"
+msgstr ""
+
+#: doc/classes/Thread.xml:19
+msgid ""
+"Returns the current [Thread]'s ID, uniquely identifying it among all "
+"threads. If the [Thread] is not running this returns an empty string."
+msgstr ""
+
+#: doc/classes/Thread.xml:25
+msgid ""
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
+msgstr ""
+
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
+msgid ""
+"Starts a new [Thread] that runs [code]method[/code] on object "
+"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
+"if no userdata is passed, [code]method[/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.\n"
+"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
+msgstr ""
+
+#: doc/classes/Thread.xml:49
+msgid ""
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
+"Should either be used when you want to retrieve the value returned from the "
+"method called by the [Thread] or before freeing the instance that contains "
+"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
+"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
+"want to use it again you will have to create a new instance of it."
+msgstr ""
+
+#: doc/classes/Thread.xml:58
+msgid "A thread running with lower priority than normally."
+msgstr ""
+
+#: doc/classes/Thread.xml:61
+msgid "A thread with a standard priority."
+msgstr ""
+
+#: doc/classes/Thread.xml:64
+msgid "A thread running with higher priority than normally."
+msgstr ""
+
+#: doc/classes/TileMap.xml:4
+msgid "Node for 2D tile-based maps."
+msgstr ""
+
+#: doc/classes/TileMap.xml:7
+msgid ""
+"Node for 2D tile-based maps. Tilemaps use a [TileSet] which contain a list "
+"of tiles (textures plus optional collision, navigation, and/or occluder "
+"shapes) which are used to create grid-based maps.\n"
+"When doing physics queries against the tilemap, the cell coordinates are "
+"encoded as [code]metadata[/code] for each detected collision shape returned "
+"by methods such as [method Physics2DDirectSpaceState.intersect_shape], "
+"[method Physics2DDirectBodyState.get_contact_collider_shape_metadata], etc."
+msgstr ""
+
+#: doc/classes/TileMap.xml:11 doc/classes/TileSet.xml:11
+msgid "https://docs.godotengine.org/en/3.4/tutorials/2d/using_tilemaps.html"
+msgstr ""
+
+#: doc/classes/TileMap.xml:14 doc/classes/TileSet.xml:14
+msgid "https://godotengine.org/asset-library/asset/111"
+msgstr ""
+
+#: doc/classes/TileMap.xml:23
+msgid "Clears all cells."
+msgstr ""
+
+#: doc/classes/TileMap.xml:29
+msgid "Clears cells that do not exist in the tileset."
+msgstr ""
+
+#: doc/classes/TileMap.xml:37
+msgid ""
+"Returns the tile index of the given cell. If no tile exists in the cell, "
+"returns [constant INVALID_CELL]."
+msgstr ""
+
+#: doc/classes/TileMap.xml:45
+msgid ""
+"Returns the coordinate (subtile column and row) of the autotile variation in "
+"the tileset. Returns a zero vector if the cell doesn't have autotiling."
+msgstr ""
+
+#: doc/classes/TileMap.xml:52
+msgid ""
+"Returns the tile index of the cell given by a Vector2. If no tile exists in "
+"the cell, returns [constant INVALID_CELL]."
+msgstr ""
+
+#: doc/classes/TileMap.xml:59
+msgid "Returns [code]true[/code] if the given collision layer bit is set."
+msgstr ""
+
+#: doc/classes/TileMap.xml:66
+msgid "Returns [code]true[/code] if the given collision mask bit is set."
+msgstr ""
+
+#: doc/classes/TileMap.xml:72
+msgid ""
+"Returns a [Vector2] array with the positions of all cells containing a tile "
+"from the tileset (i.e. a tile index different from [code]-1[/code])."
+msgstr ""
+
+#: doc/classes/TileMap.xml:79
+msgid ""
+"Returns an array of all cells with the given tile index specified in "
+"[code]id[/code]."
+msgstr ""
+
+#: doc/classes/TileMap.xml:85
+msgid "Returns a rectangle enclosing the used (non-empty) tiles of the map."
+msgstr ""
+
+#: doc/classes/TileMap.xml:93
+msgid ""
+"Returns [code]true[/code] if the given cell is transposed, i.e. the X and Y "
+"axes are swapped."
+msgstr ""
+
+#: doc/classes/TileMap.xml:101
+msgid "Returns [code]true[/code] if the given cell is flipped in the X axis."
+msgstr ""
+
+#: doc/classes/TileMap.xml:109
+msgid "Returns [code]true[/code] if the given cell is flipped in the Y axis."
+msgstr ""
+
+#: doc/classes/TileMap.xml:117
+msgid ""
+"Returns the local position of the top left corner of the cell corresponding "
+"to the given tilemap (grid-based) coordinates.\n"
+"To get the global position, use [method Node2D.to_global]:\n"
+"[codeblock]\n"
+"var local_position = my_tilemap.map_to_world(map_position)\n"
+"var global_position = my_tilemap.to_global(local_position)\n"
+"[/codeblock]\n"
+"Optionally, the tilemap's half offset can be ignored."
+msgstr ""
+
+#: doc/classes/TileMap.xml:136
+msgid ""
+"Sets the tile index for the cell given by a Vector2.\n"
+"An index of [code]-1[/code] clears the cell.\n"
+"Optionally, the tile can also be flipped, transposed, or given autotile "
+"coordinates. The autotile coordinate refers to the column and row of the "
+"subtile.\n"
+"[b]Note:[/b] Data such as navigation polygons and collision shapes are not "
+"immediately updated for performance reasons.\n"
+"If you need these to be immediately updated, you can call [method "
+"update_dirty_quadrants].\n"
+"Overriding this method also overrides it internally, allowing custom logic "
+"to be implemented when tiles are placed/removed:\n"
+"[codeblock]\n"
+"func set_cell(x, y, tile, flip_x=false, flip_y=false, transpose=false, "
+"autotile_coord=Vector2()):\n"
+" # Write your custom logic here.\n"
+" # To call the default method:\n"
+" .set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/TileMap.xml:158
+msgid ""
+"Sets the tile index for the given cell.\n"
+"An index of [code]-1[/code] clears the cell.\n"
+"Optionally, the tile can also be flipped or transposed.\n"
+"[b]Note:[/b] Data such as navigation polygons and collision shapes are not "
+"immediately updated for performance reasons.\n"
+"If you need these to be immediately updated, you can call [method "
+"update_dirty_quadrants]."
+msgstr ""
+
+#: doc/classes/TileMap.xml:170
+msgid "Sets the given collision layer bit."
+msgstr ""
+
+#: doc/classes/TileMap.xml:178
+msgid "Sets the given collision mask bit."
+msgstr ""
+
+#: doc/classes/TileMap.xml:185
+msgid ""
+"Applies autotiling rules to the cell (and its adjacent cells) referenced by "
+"its grid-based X and Y coordinates."
+msgstr ""
+
+#: doc/classes/TileMap.xml:193
+msgid ""
+"Applies autotiling rules to the cells in the given region (specified by grid-"
+"based X and Y coordinates).\n"
+"Calling with invalid (or missing) parameters applies autotiling rules for "
+"the entire tilemap."
+msgstr ""
+
+#: doc/classes/TileMap.xml:200
+msgid ""
+"Updates the tile map's quadrants, allowing things such as navigation and "
+"collision shapes to be immediately used if modified."
+msgstr ""
+
+#: doc/classes/TileMap.xml:207
+msgid ""
+"Returns the tilemap (grid-based) coordinates corresponding to the given "
+"local position.\n"
+"To use this with a global position, first determine the local position with "
+"[method Node2D.to_local]:\n"
+"[codeblock]\n"
+"var local_position = my_tilemap.to_local(global_position)\n"
+"var map_position = my_tilemap.world_to_map(local_position)\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/TileMap.xml:218
+msgid "If [code]true[/code], the cell's UVs will be clipped."
+msgstr ""
+
+#: doc/classes/TileMap.xml:221
+msgid "The custom [Transform2D] to be applied to the TileMap's cells."
+msgstr ""
+
+#: doc/classes/TileMap.xml:224
+msgid ""
+"Amount to offset alternating tiles. See [enum HalfOffset] for possible "
+"values."
+msgstr ""
+
+#: doc/classes/TileMap.xml:227
+msgid ""
+"The TileMap's quadrant size. Optimizes drawing by batching, using chunks of "
+"this size."
+msgstr ""
+
+#: doc/classes/TileMap.xml:230
+msgid "The TileMap's cell size."
+msgstr ""
+
+#: doc/classes/TileMap.xml:233
+msgid "Position for tile origin. See [enum TileOrigin] for possible values."
+msgstr ""
+
+#: doc/classes/TileMap.xml:236
+msgid ""
+"If [code]true[/code], the TileMap's direct children will be drawn in order "
+"of their Y coordinate."
+msgstr ""
+
+#: doc/classes/TileMap.xml:239
+msgid ""
+"If [code]true[/code], the textures will be centered in the middle of each "
+"tile. This is useful for certain isometric or top-down modes when textures "
+"are made larger or smaller than the tiles (e.g. to avoid flickering on tile "
+"edges). The offset is still applied, but from the center of the tile. If "
+"used, [member compatibility_mode] is ignored.\n"
+"If [code]false[/code], the texture position start in the top-left corner "
+"unless [member compatibility_mode] is enabled."
+msgstr ""
+
+#: doc/classes/TileMap.xml:243
+msgid ""
+"Bounce value for static body collisions (see [code]collision_use_kinematic[/"
+"code])."
+msgstr ""
+
+#: doc/classes/TileMap.xml:246
+msgid ""
+"Friction value for static body collisions (see "
+"[code]collision_use_kinematic[/code])."
+msgstr ""
+
+#: doc/classes/TileMap.xml:249
+msgid ""
+"The collision layer(s) for all colliders in the TileMap. See [url=https://"
+"docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
+"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
+"documentation for more information."
+msgstr ""
+
+#: doc/classes/TileMap.xml:252
+msgid ""
+"The collision mask(s) for all colliders in the TileMap. See [url=https://"
+"docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
+"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
+"documentation for more information."
+msgstr ""
+
+#: doc/classes/TileMap.xml:255
+msgid ""
+"If [code]true[/code], TileMap collisions will be handled as a kinematic "
+"body. If [code]false[/code], collisions will be handled as static body."
+msgstr ""
+
+#: doc/classes/TileMap.xml:258
+msgid ""
+"If [code]true[/code], this tilemap's collision shape will be added to the "
+"collision shape of the parent. The parent has to be a [CollisionObject2D]."
+msgstr ""
+
+#: doc/classes/TileMap.xml:261
+msgid ""
+"If [code]true[/code], the compatibility with the tilemaps made in Godot 3.1 "
+"or earlier is maintained (textures move when the tile origin changes and "
+"rotate if the texture size is not homogeneous). This mode presents problems "
+"when doing [code]flip_h[/code], [code]flip_v[/code] and [code]transpose[/"
+"code] tile operations on non-homogeneous isometric tiles (e.g. 2:1), in "
+"which the texture could not coincide with the collision, thus it is not "
+"recommended for isometric or non-square tiles.\n"
+"If [code]false[/code], the textures do not move when doing [code]flip_h[/"
+"code], [code]flip_v[/code] operations if no offset is used, nor when "
+"changing the tile origin.\n"
+"The compatibility mode doesn't work with the [member centered_textures] "
+"option, because displacing textures with the [member cell_tile_origin] "
+"option or in irregular tiles is not relevant when centering those textures."
+msgstr ""
+
+#: doc/classes/TileMap.xml:266
+msgid "The TileMap orientation mode. See [enum Mode] for possible values."
+msgstr ""
+
+#: doc/classes/TileMap.xml:269
+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 "
+"light mask(s)."
+msgstr ""
+
+#: doc/classes/TileMap.xml:272
+msgid ""
+"If [code]true[/code], collision shapes are visible in the editor. Doesn't "
+"affect collision shapes visibility at runtime. To show collision shapes at "
+"runtime, enable [b]Visible Collision Shapes[/b] in the [b]Debug[/b] menu "
+"instead."
+msgstr ""
+
+#: doc/classes/TileMap.xml:275
+msgid "The assigned [TileSet]."
+msgstr ""
+
+#: doc/classes/TileMap.xml:281
+msgid "Emitted when a tilemap setting has changed."
+msgstr ""
+
+#: doc/classes/TileMap.xml:287
+msgid "Returned when a cell doesn't exist."
+msgstr ""
+
+#: doc/classes/TileMap.xml:290
+msgid "Orthogonal orientation mode."
+msgstr ""
+
+#: doc/classes/TileMap.xml:293
+msgid "Isometric orientation mode."
+msgstr ""
+
+#: doc/classes/TileMap.xml:296
+msgid "Custom orientation mode."
+msgstr ""
+
+#: doc/classes/TileMap.xml:299
+msgid "Half offset on the X coordinate."
+msgstr ""
+
+#: doc/classes/TileMap.xml:302
+msgid "Half offset on the Y coordinate."
+msgstr ""
+
+#: doc/classes/TileMap.xml:305
+msgid "Half offset disabled."
+msgstr ""
+
+#: doc/classes/TileMap.xml:308
+msgid "Half offset on the X coordinate (negative)."
+msgstr ""
+
+#: doc/classes/TileMap.xml:311
+msgid "Half offset on the Y coordinate (negative)."
+msgstr ""
+
+#: doc/classes/TileMap.xml:314
+msgid "Tile origin at its top-left corner."
+msgstr ""
+
+#: doc/classes/TileMap.xml:317
+msgid "Tile origin at its center."
+msgstr ""
+
+#: doc/classes/TileMap.xml:320
+msgid "Tile origin at its bottom-left corner."
+msgstr ""
+
+#: doc/classes/TileSet.xml:4
+msgid "Tile library for tilemaps."
+msgstr ""
+
+#: doc/classes/TileSet.xml:7
+msgid ""
+"A TileSet is a library of tiles for a [TileMap]. It contains a list of "
+"tiles, each consisting of a sprite and optional collision shapes.\n"
+"Tiles are referenced by a unique integer ID."
+msgstr ""
+
+#: doc/classes/TileSet.xml:42
+msgid ""
+"Determines when the auto-tiler should consider two different auto-tile IDs "
+"to be bound together.\n"
+"[b]Note:[/b] [code]neighbor_id[/code] will be [code]-1[/code] ([constant "
+"TileMap.INVALID_CELL]) when checking a tile against an empty neighbor tile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:50
+msgid "Clears all bitmask information of the autotile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:58
+msgid ""
+"Returns the bitmask of the subtile from an autotile given its coordinates.\n"
+"The value is the sum of the values in [enum AutotileBindings] present in the "
+"subtile (e.g. a value of 5 means the bitmask has bindings in both the top "
+"left and top right)."
+msgstr ""
+
+#: doc/classes/TileSet.xml:66
+msgid "Returns the [enum BitmaskMode] of the autotile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:73
+msgid ""
+"Returns the subtile that's being used as an icon in an atlas/autotile given "
+"its coordinates.\n"
+"The subtile defined as the icon will be used as a fallback when the atlas/"
+"autotile's bitmask information is incomplete. It will also be used to "
+"represent it in the TileSet editor."
+msgstr ""
+
+#: doc/classes/TileSet.xml:82
+msgid ""
+"Returns the light occluder of the subtile from an atlas/autotile given its "
+"coordinates."
+msgstr ""
+
+#: doc/classes/TileSet.xml:90
+msgid ""
+"Returns the navigation polygon of the subtile from an atlas/autotile given "
+"its coordinates."
+msgstr ""
+
+#: doc/classes/TileSet.xml:97
+msgid "Returns the size of the subtiles in an atlas/autotile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:104
+msgid "Returns the spacing between subtiles of the atlas/autotile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:112
+msgid ""
+"Returns the priority of the subtile from an autotile given its coordinates.\n"
+"When more than one subtile has the same bitmask value, one of them will be "
+"picked randomly for drawing. Its priority will define how often it will be "
+"picked."
+msgstr ""
+
+#: doc/classes/TileSet.xml:121
+msgid ""
+"Returns the drawing index of the subtile from an atlas/autotile given its "
+"coordinates."
+msgstr ""
+
+#: doc/classes/TileSet.xml:130
+msgid ""
+"Sets the bitmask of the subtile from an autotile given its coordinates.\n"
+"The value is the sum of the values in [enum AutotileBindings] present in the "
+"subtile (e.g. a value of 5 means the bitmask has bindings in both the top "
+"left and top right)."
+msgstr ""
+
+#: doc/classes/TileSet.xml:139
+msgid "Sets the [enum BitmaskMode] of the autotile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:147
+msgid ""
+"Sets the subtile that will be used as an icon in an atlas/autotile given its "
+"coordinates.\n"
+"The subtile defined as the icon will be used as a fallback when the atlas/"
+"autotile's bitmask information is incomplete. It will also be used to "
+"represent it in the TileSet editor."
+msgstr ""
+
+#: doc/classes/TileSet.xml:157
+msgid ""
+"Sets the light occluder of the subtile from an atlas/autotile given its "
+"coordinates."
+msgstr ""
+
+#: doc/classes/TileSet.xml:166
+msgid ""
+"Sets the navigation polygon of the subtile from an atlas/autotile given its "
+"coordinates."
+msgstr ""
+
+#: doc/classes/TileSet.xml:174
+msgid "Sets the size of the subtiles in an atlas/autotile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:182
+msgid "Sets the spacing between subtiles of the atlas/autotile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:191
+msgid ""
+"Sets the priority of the subtile from an autotile given its coordinates.\n"
+"When more than one subtile has the same bitmask value, one of them will be "
+"picked randomly for drawing. Its priority will define how often it will be "
+"picked."
+msgstr ""
+
+#: doc/classes/TileSet.xml:201
+msgid ""
+"Sets the drawing index of the subtile from an atlas/autotile given its "
+"coordinates."
+msgstr ""
+
+#: doc/classes/TileSet.xml:207
+msgid "Clears all tiles."
+msgstr ""
+
+#: doc/classes/TileSet.xml:214
+msgid "Creates a new tile with the given ID."
+msgstr ""
+
+#: doc/classes/TileSet.xml:221
+msgid "Returns the first tile matching the given name."
+msgstr ""
+
+#: doc/classes/TileSet.xml:227
+msgid ""
+"Returns the ID following the last currently used ID, useful when creating a "
+"new tile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:233
+msgid "Returns an array of all currently used tile IDs."
+msgstr ""
+
+#: doc/classes/TileSet.xml:240
+msgid "Removes the given tile ID."
+msgstr ""
+
+#: doc/classes/TileSet.xml:251
+msgid "Adds a shape to the tile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:258
+msgid "Returns the tile's light occluder."
+msgstr ""
+
+#: doc/classes/TileSet.xml:265
+msgid "Returns the tile's material."
+msgstr ""
+
+#: doc/classes/TileSet.xml:272
+msgid "Returns the tile's modulation color."
+msgstr ""
+
+#: doc/classes/TileSet.xml:279
+msgid "Returns the tile's name."
+msgstr ""
+
+#: doc/classes/TileSet.xml:286
+msgid "Returns the navigation polygon of the tile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:293
+msgid "Returns the offset of the tile's navigation polygon."
+msgstr ""
+
+#: doc/classes/TileSet.xml:300
+msgid "Returns the tile's normal map texture."
+msgstr ""
+
+#: doc/classes/TileSet.xml:307
+msgid "Returns the offset of the tile's light occluder."
+msgstr ""
+
+#: doc/classes/TileSet.xml:314
+msgid "Returns the tile sub-region in the texture."
+msgstr ""
+
+#: doc/classes/TileSet.xml:322
+msgid "Returns a tile's given shape."
+msgstr ""
+
+#: doc/classes/TileSet.xml:329
+msgid "Returns the number of shapes assigned to a tile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:337
+msgid "Returns the offset of a tile's shape."
+msgstr ""
+
+#: doc/classes/TileSet.xml:345
+msgid "Returns the one-way collision value of a tile's shape."
+msgstr ""
+
+#: doc/classes/TileSet.xml:360
+msgid "Returns the [Transform2D] of a tile's shape."
+msgstr ""
+
+#: doc/classes/TileSet.xml:367
+msgid ""
+"Returns an array of dictionaries describing the tile's shapes.\n"
+"[b]Dictionary structure in the array returned by this method:[/b]\n"
+"[codeblock]\n"
+"{\n"
+" \"autotile_coord\": Vector2,\n"
+" \"one_way\": bool,\n"
+" \"one_way_margin\": int,\n"
+" \"shape\": CollisionShape2D,\n"
+" \"shape_transform\": Transform2D,\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/TileSet.xml:384
+msgid "Returns the tile's texture."
+msgstr ""
+
+#: doc/classes/TileSet.xml:391
+msgid "Returns the texture offset of the tile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:398
+msgid "Returns the tile's [enum TileMode]."
+msgstr ""
+
+#: doc/classes/TileSet.xml:405
+msgid "Returns the tile's Z index (drawing layer)."
+msgstr ""
+
+#: doc/classes/TileSet.xml:413
+msgid "Sets a light occluder for the tile."
+msgstr ""
+
+#: doc/classes/TileSet.xml:421
+msgid "Sets the tile's material."
+msgstr ""
+
+#: doc/classes/TileSet.xml:429
+msgid "Sets the tile's modulation color."
+msgstr ""
+
+#: doc/classes/TileSet.xml:437
+msgid "Sets the tile's name."
+msgstr ""
+
+#: doc/classes/TileSet.xml:445
+msgid "Sets the tile's navigation polygon."
+msgstr ""
+
+#: doc/classes/TileSet.xml:453
+msgid "Sets an offset for the tile's navigation polygon."
+msgstr ""
+
+#: doc/classes/TileSet.xml:461
+msgid ""
+"Sets the tile's normal map texture.\n"
+"[b]Note:[/b] Godot expects the normal map to use X+, Y-, and Z+ coordinates. "
+"See [url=http://wiki.polycount.com/wiki/"
+"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for "
+"a comparison of normal map coordinates expected by popular engines."
+msgstr ""
+
+#: doc/classes/TileSet.xml:470
+msgid "Sets an offset for the tile's light occluder."
+msgstr ""
+
+#: doc/classes/TileSet.xml:478
+msgid ""
+"Sets the tile's sub-region in the texture. This is common in texture atlases."
+msgstr ""
+
+#: doc/classes/TileSet.xml:487
+msgid "Sets a shape for the tile, enabling collision."
+msgstr ""
+
+#: doc/classes/TileSet.xml:496
+msgid "Sets the offset of a tile's shape."
+msgstr ""
+
+#: doc/classes/TileSet.xml:505
+msgid "Enables one-way collision on a tile's shape."
+msgstr ""
+
+#: doc/classes/TileSet.xml:522
+msgid "Sets a [Transform2D] on a tile's shape."
+msgstr ""
+
+#: doc/classes/TileSet.xml:530
+msgid "Sets an array of shapes for the tile, enabling collision."
+msgstr ""
+
+#: doc/classes/TileSet.xml:538
+msgid "Sets the tile's texture."
+msgstr ""
+
+#: doc/classes/TileSet.xml:546
+msgid "Sets the tile's texture offset."
+msgstr ""
+
+#: doc/classes/TileSet.xml:554
+msgid "Sets the tile's [enum TileMode]."
+msgstr ""
+
+#: doc/classes/TileSet.xml:562
+msgid "Sets the tile's drawing index."
+msgstr ""
+
+#: doc/classes/Timer.xml:4
+msgid "A countdown timer."
+msgstr ""
+
+#: doc/classes/Timer.xml:7
+msgid ""
+"Counts down a specified interval and emits a signal on reaching 0. Can be "
+"set to repeat or \"one-shot\" mode.\n"
+"[b]Note:[/b] To create a one-shot timer without instantiating a node, use "
+"[method SceneTree.create_timer]."
+msgstr ""
+
+#: doc/classes/Timer.xml:17
+msgid "Returns [code]true[/code] if the timer is stopped."
+msgstr ""
+
+#: doc/classes/Timer.xml:24
+msgid ""
+"Starts the timer. Sets [code]wait_time[/code] to [code]time_sec[/code] if "
+"[code]time_sec > 0[/code]. This also resets the remaining time to "
+"[code]wait_time[/code].\n"
+"[b]Note:[/b] This method will not resume a paused timer. See [member paused]."
+msgstr ""
+
+#: doc/classes/Timer.xml:31
+msgid "Stops the timer."
+msgstr ""
+
+#: doc/classes/Timer.xml:37
+msgid ""
+"If [code]true[/code], the timer will automatically start when entering the "
+"scene tree.\n"
+"[b]Note:[/b] This property is automatically set to [code]false[/code] after "
+"the timer enters the scene tree and starts."
+msgstr ""
+
+#: doc/classes/Timer.xml:41
+msgid ""
+"If [code]true[/code], the timer will stop when reaching 0. If [code]false[/"
+"code], it will restart."
+msgstr ""
+
+#: doc/classes/Timer.xml:44
+msgid ""
+"If [code]true[/code], the timer is paused and will not process until it is "
+"unpaused again, even if [method start] is called."
+msgstr ""
+
+#: doc/classes/Timer.xml:47
+msgid "Processing mode. See [enum TimerProcessMode]."
+msgstr ""
+
+#: doc/classes/Timer.xml:50
+msgid ""
+"The timer's remaining time in seconds. Returns 0 if the timer is inactive.\n"
+"[b]Note:[/b] You cannot set this value. To change the timer's remaining "
+"time, use [method start]."
+msgstr ""
+
+#: doc/classes/Timer.xml:54
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
+msgstr ""
+
+#: doc/classes/Timer.xml:67
+msgid ""
+"Update the timer during the physics step at each frame (fixed framerate "
+"processing)."
+msgstr ""
+
+#: doc/classes/Timer.xml:70
+msgid "Update the timer during the idle time at each frame."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:4
+msgid "Flat button helper class."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:7
+msgid ""
+"This is a helper class to generate a flat [Button] (see [member Button."
+"flat]), creating a [ToolButton] is equivalent to:\n"
+"[codeblock]\n"
+"var btn = Button.new()\n"
+"btn.flat = true\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/ToolButton.xml:24
+msgid "[StyleBox] used when the [ToolButton] is disabled."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:27
+msgid ""
+"[StyleBox] used when the [ToolButton] is focused. It is displayed over the "
+"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
+"visual effect."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:30
+msgid "[Font] of the [ToolButton]'s text."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:33
+msgid "Default text [Color] of the [ToolButton]."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:36
+msgid "Text [Color] used when the [ToolButton] is disabled."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:39
+msgid "Text [Color] used when the [ToolButton] is being hovered."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:42
+msgid "Text [Color] used when the [ToolButton] is being pressed."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:45
+msgid "[StyleBox] used when the [ToolButton] is being hovered."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:48
+msgid "The horizontal space between [ToolButton]'s icon and text."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:51
+msgid "Default [StyleBox] for the [ToolButton]."
+msgstr ""
+
+#: doc/classes/ToolButton.xml:54
+msgid "[StyleBox] used when the [ToolButton] is being pressed."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:4
+msgid "Button for touch screen devices for gameplay use."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:7
+msgid ""
+"TouchScreenButton allows you to create on-screen buttons for touch devices. "
+"It's intended for gameplay use, such as a unit you have to touch to move. "
+"Unlike [Button], TouchScreenButton supports multitouch out of the box. "
+"Several TouchScreenButtons can be pressed at the same time with touch "
+"input.\n"
+"This node inherits from [Node2D]. Unlike with [Control] nodes, you cannot "
+"set anchors on it. If you want to create menus or user interfaces, you may "
+"want to use [Button] nodes instead. To make button nodes react to touch "
+"events, you can enable the Emulate Mouse option in the Project Settings.\n"
+"You can configure TouchScreenButton to be visible only on touch devices, "
+"helping you develop your game both for desktop and mobile devices."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:17
+msgid "Returns [code]true[/code] if this button is currently pressed."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:23
+msgid "The button's action. Actions can be handled with [InputEventAction]."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:26
+msgid "The button's bitmask."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:29
+msgid "The button's texture for the normal state."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:32
+msgid ""
+"If [code]true[/code], the [signal pressed] and [signal released] signals are "
+"emitted whenever a pressed finger goes in and out of the button, even if the "
+"pressure started outside the active area of the button.\n"
+"[b]Note:[/b] This is a \"pass-by\" (not \"bypass\") press mode."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:36
+msgid "The button's texture for the pressed state."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:39
+msgid "The button's shape."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:42
+msgid ""
+"If [code]true[/code], the button's shape is centered in the provided "
+"texture. If no texture is used, this property has no effect."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:45
+msgid "If [code]true[/code], the button's shape is visible."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:48
+msgid ""
+"The button's visibility mode. See [enum VisibilityMode] for possible values."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:54
+msgid "Emitted when the button is pressed (down)."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:59
+msgid "Emitted when the button is released (up)."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:65
+msgid "Always visible."
+msgstr ""
+
+#: doc/classes/TouchScreenButton.xml:68
+msgid "Visible on touch screens only."
+msgstr ""
+
+#: doc/classes/Transform.xml:4
+msgid "3D transformation (3×4 matrix)."
+msgstr ""
+
+#: doc/classes/Transform.xml:7
+msgid ""
+"3×4 matrix (3 rows, 4 columns) used for 3D linear transformations. It can "
+"represent transformations such as translation, rotation, or scaling. It "
+"consists of a [member basis] (first 3 columns) and a [Vector3] for the "
+"[member origin] (last column).\n"
+"For more information, read the \"Matrices and transforms\" documentation "
+"article."
+msgstr ""
+
+#: doc/classes/Transform.xml:26
+msgid ""
+"Constructs a Transform from four [Vector3] values (matrix columns). Each "
+"axis corresponds to local basis vectors (some of which may be scaled)."
+msgstr ""
+
+#: doc/classes/Transform.xml:34
+msgid "Constructs a Transform from a [Basis] and [Vector3]."
+msgstr ""
+
+#: doc/classes/Transform.xml:41
+msgid "Constructs a Transform from a [Transform2D]."
+msgstr ""
+
+#: doc/classes/Transform.xml:48
+msgid ""
+"Constructs a Transform from a [Quat]. The origin will be [code]Vector3(0, 0, "
+"0)[/code]."
+msgstr ""
+
+#: doc/classes/Transform.xml:55
+msgid ""
+"Constructs the Transform from a [Basis]. The origin will be Vector3(0, 0, 0)."
+msgstr ""
+
+#: doc/classes/Transform.xml:61 doc/classes/Transform2D.xml:44
+msgid ""
+"Returns the inverse of the transform, under the assumption that the "
+"transformation is composed of rotation, scaling and translation."
+msgstr ""
+
+#: doc/classes/Transform.xml:69
+msgid ""
+"Interpolates the transform to other Transform by weight amount (on the range "
+"of 0.0 to 1.0)."
+msgstr ""
+
+#: doc/classes/Transform.xml:75
+msgid ""
+"Returns the inverse of the transform, under the assumption that the "
+"transformation is composed of rotation and translation (no scaling, use "
+"affine_inverse for transforms with scaling)."
+msgstr ""
+
+#: doc/classes/Transform.xml:82 doc/classes/Transform2D.xml:99
+msgid ""
+"Returns [code]true[/code] if this transform and [code]transform[/code] are "
+"approximately equal, by calling [code]is_equal_approx[/code] on each "
+"component."
+msgstr ""
+
+#: doc/classes/Transform.xml:90
+msgid ""
+"Returns a copy of the transform rotated such that its -Z axis points towards "
+"the [code]target[/code] position.\n"
+"The transform will first be rotated around the given [code]up[/code] vector, "
+"and then fully aligned to the target by a further rotation around an axis "
+"perpendicular to both the [code]target[/code] and [code]up[/code] vectors.\n"
+"Operations take place in global space."
+msgstr ""
+
+#: doc/classes/Transform.xml:98
+msgid ""
+"Returns the transform with the basis orthogonal (90 degrees), and normalized "
+"axis vectors."
+msgstr ""
+
+#: doc/classes/Transform.xml:106
+msgid ""
+"Rotates the transform around the given axis by the given angle (in radians), "
+"using matrix multiplication. The axis must be a normalized vector."
+msgstr ""
+
+#: doc/classes/Transform.xml:113
+msgid ""
+"Scales basis and origin of the transform by the given scale factor, using "
+"matrix multiplication."
+msgstr ""
+
+#: doc/classes/Transform.xml:120 doc/classes/Transform2D.xml:126
+msgid ""
+"Translates the transform by the given offset, relative to the transform's "
+"basis vectors.\n"
+"Unlike [method rotated] and [method scaled], this does not use matrix "
+"multiplication."
+msgstr ""
+
+#: doc/classes/Transform.xml:128
+msgid ""
+"Transforms the given [Vector3], [Plane], [AABB], or [PoolVector3Array] by "
+"this transform."
+msgstr ""
+
+#: doc/classes/Transform.xml:135
+msgid ""
+"Inverse-transforms the given [Vector3], [Plane], [AABB], or "
+"[PoolVector3Array] by this transform."
+msgstr ""
+
+#: doc/classes/Transform.xml:141
+msgid ""
+"The basis is a matrix containing 3 [Vector3] as its columns: X axis, Y axis, "
+"and Z axis. These vectors can be interpreted as the basis vectors of local "
+"coordinate system traveling with the object."
+msgstr ""
+
+#: doc/classes/Transform.xml:144
+msgid ""
+"The translation offset of the transform (column 3, the fourth column). "
+"Equivalent to array index [code]3[/code]."
+msgstr ""
+
+#: doc/classes/Transform.xml:149
+msgid ""
+"[Transform] with no translation, rotation or scaling applied. When applied "
+"to other data structures, [constant IDENTITY] performs no transformation."
+msgstr ""
+
+#: doc/classes/Transform.xml:152
+msgid "[Transform] with mirroring applied perpendicular to the YZ plane."
+msgstr ""
+
+#: doc/classes/Transform.xml:155
+msgid "[Transform] with mirroring applied perpendicular to the XZ plane."
+msgstr ""
+
+#: doc/classes/Transform.xml:158
+msgid "[Transform] with mirroring applied perpendicular to the XY plane."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:4
+msgid "2D transformation (2×3 matrix)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:7
+msgid ""
+"2×3 matrix (2 rows, 3 columns) used for 2D linear transformations. It can "
+"represent transformations such as translation, rotation, or scaling. It "
+"consists of three [Vector2] values: [member x], [member y], and the [member "
+"origin].\n"
+"For more information, read the \"Matrices and transforms\" documentation "
+"article."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:21
+msgid "Constructs the transform from a 3D [Transform]."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:30
+msgid ""
+"Constructs the transform from 3 [Vector2] values representing [member x], "
+"[member y], and the [member origin] (the three column vectors)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:38
+msgid "Constructs the transform from a given angle (in radians) and position."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:51
+msgid ""
+"Returns a vector transformed (multiplied) by the basis matrix.\n"
+"This method does not account for translation (the origin vector)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:59
+msgid ""
+"Returns a vector transformed (multiplied) by the inverse basis matrix.\n"
+"This method does not account for translation (the origin vector)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:66
+msgid "Returns the transform's origin (translation)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:72
+msgid "Returns the transform's rotation (in radians)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:78
+msgid "Returns the scale."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:86
+msgid ""
+"Returns a transform interpolated between this transform and another by a "
+"given [code]weight[/code] (on the range of 0.0 to 1.0)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:92
+msgid ""
+"Returns the inverse of the transform, under the assumption that the "
+"transformation is composed of rotation and translation (no scaling, use "
+"[method affine_inverse] for transforms with scaling)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:105
+msgid ""
+"Returns the transform with the basis orthogonal (90 degrees), and normalized "
+"axis vectors (scale of 1 or -1)."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:112
+msgid ""
+"Rotates the transform by the given angle (in radians), using matrix "
+"multiplication."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:119
+msgid ""
+"Scales the transform by the given scale factor, using matrix multiplication."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:134
+msgid ""
+"Transforms the given [Vector2], [Rect2], or [PoolVector2Array] by this "
+"transform."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:141
+msgid ""
+"Inverse-transforms the given [Vector2], [Rect2], or [PoolVector2Array] by "
+"this transform."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:147
+msgid ""
+"The origin vector (column 2, the third column). Equivalent to array index "
+"[code]2[/code]. The origin vector represents translation."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:158
+msgid ""
+"The identity [Transform2D] with no translation, rotation or scaling applied. "
+"When applied to other data structures, [constant IDENTITY] performs no "
+"transformation."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:161
+msgid "The [Transform2D] that will flip something along the X axis."
+msgstr ""
+
+#: doc/classes/Transform2D.xml:164
+msgid "The [Transform2D] that will flip something along the Y axis."
+msgstr ""
+
+#: doc/classes/Translation.xml:4
+msgid "Language Translation."
+msgstr ""
+
+#: doc/classes/Translation.xml:7
+msgid ""
+"Translations are resources that can be loaded and unloaded on demand. They "
+"map a string to another string."
+msgstr ""
+
+#: doc/classes/Translation.xml:10 doc/classes/TranslationServer.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/i18n/internationalizing_games."
+"html"
+msgstr ""
+
+#: doc/classes/Translation.xml:11 doc/classes/TranslationServer.xml:11
+msgid "https://docs.godotengine.org/en/3.4/tutorials/i18n/locales.html"
+msgstr ""
+
+#: doc/classes/Translation.xml:18
+msgid "Virtual method to override [method get_message]."
+msgstr ""
+
+#: doc/classes/Translation.xml:26
+msgid "Adds a message if nonexistent, followed by its translation."
+msgstr ""
+
+#: doc/classes/Translation.xml:33
+msgid "Erases a message."
+msgstr ""
+
+#: doc/classes/Translation.xml:40
+msgid "Returns a message's translation."
+msgstr ""
+
+#: doc/classes/Translation.xml:46
+msgid "Returns the number of existing messages."
+msgstr ""
+
+#: doc/classes/Translation.xml:52
+msgid "Returns all the messages (keys)."
+msgstr ""
+
+#: doc/classes/Translation.xml:58
+msgid "The locale of the translation."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:4
+msgid "Server that manages all translations."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:7
+msgid ""
+"Server that manages all translations. Translations can be set to it and "
+"removed from it."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:18
+msgid "Adds a [Translation] resource."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:24
+msgid "Clears the server from all translations."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:30
+msgid "Returns an array of all loaded locales of the project."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:36
+msgid ""
+"Returns the current locale of the project.\n"
+"See also [method OS.get_locale] and [method OS.get_locale_language] to query "
+"the locale of the user system."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:44
+msgid ""
+"Returns a locale's language and its variant (e.g. [code]\"en_US\"[/code] "
+"would return [code]\"English (United States)\"[/code])."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:51
+msgid "Removes the given translation from the server."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:58
+msgid ""
+"Sets the locale of the project. The [code]locale[/code] string will be "
+"standardized to match known locales (e.g. [code]en-US[/code] would be "
+"matched to [code]en_US[/code]).\n"
+"If translations have been loaded beforehand for the new locale, they will be "
+"applied."
+msgstr ""
+
+#: doc/classes/TranslationServer.xml:66
+msgid "Returns the current locale's translation for the given message (key)."
+msgstr ""
+
+#: doc/classes/Tree.xml:4
+msgid "Control to show a tree of items."
+msgstr ""
+
+#: doc/classes/Tree.xml:7
+msgid ""
+"This shows a tree of items that can be selected, expanded and collapsed. The "
+"tree can have multiple columns with custom controls like text editing, "
+"buttons and popups. It can be useful for structured displays and "
+"interactions.\n"
+"Trees are built via code, using [TreeItem] objects to create the structure. "
+"They have a single root but multiple roots can be simulated if a dummy "
+"hidden root is added.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" var tree = Tree.new()\n"
+" var root = tree.create_item()\n"
+" tree.set_hide_root(true)\n"
+" var child1 = tree.create_item(root)\n"
+" var child2 = tree.create_item(root)\n"
+" var subchild1 = tree.create_item(child1)\n"
+" subchild1.set_text(0, \"Subchild1\")\n"
+"[/codeblock]\n"
+"To iterate over all the [TreeItem] objects in a [Tree] object, use [method "
+"TreeItem.get_next] and [method TreeItem.get_children] after getting the root "
+"through [method get_root]. You can use [method Object.free] on a [TreeItem] "
+"to remove it from the [Tree]."
+msgstr ""
+
+#: doc/classes/Tree.xml:27
+msgid "Returns [code]true[/code] if the column titles are being shown."
+msgstr ""
+
+#: doc/classes/Tree.xml:33
+msgid "Clears the tree. This removes all items."
+msgstr ""
+
+#: doc/classes/Tree.xml:41
+msgid ""
+"Creates an item in the tree and adds it as a child of [code]parent[/code].\n"
+"If [code]parent[/code] is [code]null[/code], the root item will be the "
+"parent, or the new item will be the root itself if the tree is empty.\n"
+"The new item will be the [code]idx[/code]th child of parent, or it will be "
+"the last child if there are not enough siblings."
+msgstr ""
+
+#: doc/classes/Tree.xml:49
+msgid ""
+"Edits the selected tree item as if it was clicked. The item must be set "
+"editable with [method TreeItem.set_editable]. Returns [code]true[/code] if "
+"the item could be edited. Fails if no item is selected."
+msgstr ""
+
+#: doc/classes/Tree.xml:55
+msgid ""
+"Makes the currently focused cell visible.\n"
+"This will scroll the tree if necessary. In [constant SELECT_ROW] mode, this "
+"will not do horizontal scrolling, as all the cells in the selected row is "
+"focused logically.\n"
+"[b]Note:[/b] Despite the name of this method, the focus cursor itself is "
+"only visible in [constant SELECT_MULTI] mode."
+msgstr ""
+
+#: doc/classes/Tree.xml:64
+msgid ""
+"Returns the column index at [code]position[/code], or -1 if no item is there."
+msgstr ""
+
+#: doc/classes/Tree.xml:71
+msgid "Returns the column's title."
+msgstr ""
+
+#: doc/classes/Tree.xml:78
+msgid "Returns the column's width in pixels."
+msgstr ""
+
+#: doc/classes/Tree.xml:84
+msgid ""
+"Returns the rectangle for custom popups. Helper to create custom cell "
+"controls that display a popup. See [method TreeItem.set_cell_mode]."
+msgstr ""
+
+#: doc/classes/Tree.xml:91
+msgid ""
+"Returns the drop section at [code]position[/code], or -100 if no item is "
+"there.\n"
+"Values -1, 0, or 1 will be returned for the \"above item\", \"on item\", and "
+"\"below item\" drop sections, respectively. See [enum DropModeFlags] for a "
+"description of each drop section.\n"
+"To get the item which the returned drop section is relative to, use [method "
+"get_item_at_position]."
+msgstr ""
+
+#: doc/classes/Tree.xml:99
+msgid ""
+"Returns the currently edited item. Can be used with [signal item_edited] to "
+"get the item that was modified.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" $Tree.item_edited.connect(on_Tree_item_edited)\n"
+"\n"
+"func on_Tree_item_edited():\n"
+" print($Tree.get_edited()) # This item just got edited (e.g. checked).\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Tree.xml:112
+msgid "Returns the column for the currently edited item."
+msgstr ""
+
+#: doc/classes/Tree.xml:120
+msgid ""
+"Returns the rectangle area for the specified item. If [code]column[/code] is "
+"specified, only get the position and size of that column, otherwise get the "
+"rectangle containing all columns."
+msgstr ""
+
+#: doc/classes/Tree.xml:127
+msgid ""
+"Returns the tree item at the specified position (relative to the tree origin "
+"position)."
+msgstr ""
+
+#: doc/classes/Tree.xml:134
+msgid ""
+"Returns the next selected item after the given one, or [code]null[/code] if "
+"the end is reached.\n"
+"If [code]from[/code] is [code]null[/code], this returns the first selected "
+"item."
+msgstr ""
+
+#: doc/classes/Tree.xml:141
+msgid "Returns the last pressed button's index."
+msgstr ""
+
+#: doc/classes/Tree.xml:147
+msgid ""
+"Returns the tree's root item, or [code]null[/code] if the tree is empty."
+msgstr ""
+
+#: doc/classes/Tree.xml:153
+msgid "Returns the current scrolling position."
+msgstr ""
+
+#: doc/classes/Tree.xml:159
+msgid ""
+"Returns the currently focused item, or [code]null[/code] if no item is "
+"focused.\n"
+"In [constant SELECT_ROW] and [constant SELECT_SINGLE] modes, the focused "
+"item is same as the selected item. In [constant SELECT_MULTI] mode, the "
+"focused item is the item under the focus cursor, not necessarily selected.\n"
+"To get the currently selected item(s), use [method get_next_selected]."
+msgstr ""
+
+#: doc/classes/Tree.xml:167
+msgid ""
+"Returns the currently focused column, or -1 if no column is focused.\n"
+"In [constant SELECT_SINGLE] mode, the focused column is the selected column. "
+"In [constant SELECT_ROW] mode, the focused column is always 0 if any item is "
+"selected. In [constant SELECT_MULTI] mode, the focused column is the column "
+"under the focus cursor, and there are not necessarily any column selected.\n"
+"To tell whether a column of an item is selected, use [method TreeItem."
+"is_selected]."
+msgstr ""
+
+#: doc/classes/Tree.xml:176
+msgid "Causes the [Tree] to jump to the specified item."
+msgstr ""
+
+#: doc/classes/Tree.xml:184
+msgid ""
+"If [code]true[/code], the column will have the \"Expand\" flag of [Control]. "
+"Columns that have the \"Expand\" flag will use their \"min_width\" in a "
+"similar fashion to [member Control.size_flags_stretch_ratio]."
+msgstr ""
+
+#: doc/classes/Tree.xml:192
+msgid ""
+"Sets the minimum width of a column. Columns that have the \"Expand\" flag "
+"will use their \"min_width\" in a similar fashion to [member Control."
+"size_flags_stretch_ratio]."
+msgstr ""
+
+#: doc/classes/Tree.xml:200
+msgid "Sets the title of a column."
+msgstr ""
+
+#: doc/classes/Tree.xml:207
+msgid "If [code]true[/code], column titles are visible."
+msgstr ""
+
+#: doc/classes/Tree.xml:213
+msgid ""
+"If [code]true[/code], the currently selected cell may be selected again."
+msgstr ""
+
+#: doc/classes/Tree.xml:216
+msgid "If [code]true[/code], a right mouse button click can select items."
+msgstr ""
+
+#: doc/classes/Tree.xml:219
+msgid "The number of columns."
+msgstr ""
+
+#: doc/classes/Tree.xml:222
+msgid ""
+"The drop mode as an OR combination of flags. See [enum DropModeFlags] "
+"constants. Once dropping is done, reverts to [constant DROP_MODE_DISABLED]. "
+"Setting this during [method Control.can_drop_data] is recommended.\n"
+"This controls the drop sections, i.e. the decision and drawing of possible "
+"drop locations based on the mouse position."
+msgstr ""
+
+#: doc/classes/Tree.xml:227
+msgid "If [code]true[/code], the folding arrow is hidden."
+msgstr ""
+
+#: doc/classes/Tree.xml:230
+msgid "If [code]true[/code], the tree's root is hidden."
+msgstr ""
+
+#: doc/classes/Tree.xml:234
+msgid ""
+"Allows single or multiple selection. See the [enum SelectMode] constants."
+msgstr ""
+
+#: doc/classes/Tree.xml:243
+msgid ""
+"Emitted when a button on the tree was pressed (see [method TreeItem."
+"add_button])."
+msgstr ""
+
+#: doc/classes/Tree.xml:248
+msgid "Emitted when a cell is selected."
+msgstr ""
+
+#: doc/classes/Tree.xml:254
+msgid "Emitted when a column's title is pressed."
+msgstr ""
+
+#: doc/classes/Tree.xml:260
+msgid ""
+"Emitted when a cell with the [constant TreeItem.CELL_MODE_CUSTOM] is clicked "
+"to be edited."
+msgstr ""
+
+#: doc/classes/Tree.xml:266
+msgid ""
+"Emitted when the right mouse button is pressed in the empty space of the "
+"tree."
+msgstr ""
+
+#: doc/classes/Tree.xml:272
+msgid ""
+"Emitted when the right mouse button is pressed if right mouse button "
+"selection is active and the tree is empty."
+msgstr ""
+
+#: doc/classes/Tree.xml:277
+msgid "Emitted when an item's label is double-clicked."
+msgstr ""
+
+#: doc/classes/Tree.xml:283
+msgid "Emitted when an item is collapsed by a click on the folding arrow."
+msgstr ""
+
+#: doc/classes/Tree.xml:288
+msgid ""
+"Emitted when a custom button is pressed (i.e. in a [constant TreeItem."
+"CELL_MODE_CUSTOM] mode cell)."
+msgstr ""
+
+#: doc/classes/Tree.xml:293
+msgid "Emitted when an item's icon is double-clicked."
+msgstr ""
+
+#: doc/classes/Tree.xml:298
+msgid "Emitted when an item is edited."
+msgstr ""
+
+#: doc/classes/Tree.xml:303
+msgid "Emitted when an item is edited using the right mouse button."
+msgstr ""
+
+#: doc/classes/Tree.xml:309
+msgid "Emitted when an item is selected with the right mouse button."
+msgstr ""
+
+#: doc/classes/Tree.xml:314
+msgid "Emitted when an item is selected."
+msgstr ""
+
+#: doc/classes/Tree.xml:322
+msgid ""
+"Emitted instead of [code]item_selected[/code] if [code]select_mode[/code] is "
+"[constant SELECT_MULTI]."
+msgstr ""
+
+#: doc/classes/Tree.xml:327
+msgid "Emitted when a left mouse button click does not select any item."
+msgstr ""
+
+#: doc/classes/Tree.xml:333
+msgid ""
+"Allows selection of a single cell at a time. From the perspective of items, "
+"only a single item is allowed to be selected. And there is only one column "
+"selected in the selected item.\n"
+"The focus cursor is always hidden in this mode, but it is positioned at the "
+"current selection, making the currently selected item the currently focused "
+"item."
+msgstr ""
+
+#: doc/classes/Tree.xml:337
+msgid ""
+"Allows selection of a single row at a time. From the perspective of items, "
+"only a single items is allowed to be selected. And all the columns are "
+"selected in the selected item.\n"
+"The focus cursor is always hidden in this mode, but it is positioned at the "
+"first column of the current selection, making the currently selected item "
+"the currently focused item."
+msgstr ""
+
+#: doc/classes/Tree.xml:341
+msgid ""
+"Allows selection of multiple cells at the same time. From the perspective of "
+"items, multiple items are allowed to be selected. And there can be multiple "
+"columns selected in each selected item.\n"
+"The focus cursor is visible in this mode, the item or column under the "
+"cursor is not necessarily selected."
+msgstr ""
+
+#: doc/classes/Tree.xml:345
+msgid ""
+"Disables all drop sections, but still allows to detect the \"on item\" drop "
+"section by [method get_drop_section_at_position].\n"
+"[b]Note:[/b] This is the default flag, it has no effect when combined with "
+"other flags."
+msgstr ""
+
+#: doc/classes/Tree.xml:349
+msgid ""
+"Enables the \"on item\" drop section. This drop section covers the entire "
+"item.\n"
+"When combined with [constant DROP_MODE_INBETWEEN], this drop section halves "
+"the height and stays centered vertically."
+msgstr ""
+
+#: doc/classes/Tree.xml:353
+msgid ""
+"Enables \"above item\" and \"below item\" drop sections. The \"above item\" "
+"drop section covers the top half of the item, and the \"below item\" drop "
+"section covers the bottom half.\n"
+"When combined with [constant DROP_MODE_ON_ITEM], these drop sections halves "
+"the height and stays on top / bottom accordingly."
+msgstr ""
+
+#: doc/classes/Tree.xml:359
+msgid "The arrow icon used when a foldable item is not collapsed."
+msgstr ""
+
+#: doc/classes/Tree.xml:362
+msgid "The arrow icon used when a foldable item is collapsed."
+msgstr ""
+
+#: doc/classes/Tree.xml:365
+msgid ""
+"Default [StyleBox] for the [Tree], i.e. used when the control is not being "
+"focused."
+msgstr ""
+
+#: doc/classes/Tree.xml:368
+msgid "[StyleBox] used when the [Tree] is being focused."
+msgstr ""
+
+#: doc/classes/Tree.xml:371
+msgid "The horizontal space between each button in a cell."
+msgstr ""
+
+#: doc/classes/Tree.xml:374
+msgid "[StyleBox] used when a button in the tree is pressed."
+msgstr ""
+
+#: doc/classes/Tree.xml:377
+msgid ""
+"The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode "
+"cell is checked."
+msgstr ""
+
+#: doc/classes/Tree.xml:380
+msgid "[StyleBox] used for the cursor, when the [Tree] is being focused."
+msgstr ""
+
+#: doc/classes/Tree.xml:383
+msgid "[StyleBox] used for the cursor, when the [Tree] is not being focused."
+msgstr ""
+
+#: doc/classes/Tree.xml:386
+msgid ""
+"Default [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell."
+msgstr ""
+
+#: doc/classes/Tree.xml:389
+msgid ""
+"Text [Color] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's "
+"hovered."
+msgstr ""
+
+#: doc/classes/Tree.xml:392
+msgid ""
+"[StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's "
+"hovered."
+msgstr ""
+
+#: doc/classes/Tree.xml:395
+msgid ""
+"[StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's "
+"pressed."
+msgstr ""
+
+#: doc/classes/Tree.xml:398
+msgid ""
+"Draws the guidelines if not zero, this acts as a boolean. The guideline is a "
+"horizontal line drawn at the bottom of each item."
+msgstr ""
+
+#: doc/classes/Tree.xml:401
+msgid ""
+"Draws the relationship lines if not zero, this acts as a boolean. "
+"Relationship lines are drawn at the start of child items to show hierarchy."
+msgstr ""
+
+#: doc/classes/Tree.xml:404
+msgid ""
+"[Color] used to draw possible drop locations. See [enum DropModeFlags] "
+"constants for further description of drop locations."
+msgstr ""
+
+#: doc/classes/Tree.xml:416
+msgid "[Color] of the guideline."
+msgstr ""
+
+#: doc/classes/Tree.xml:419
+msgid ""
+"The horizontal space between item cells. This is also used as the margin at "
+"the start of an item when folding is disabled."
+msgstr ""
+
+#: doc/classes/Tree.xml:422
+msgid ""
+"The horizontal margin at the start of an item. This is used when folding is "
+"enabled for the item."
+msgstr ""
+
+#: doc/classes/Tree.xml:425
+msgid "[Color] of the relationship lines."
+msgstr ""
+
+#: doc/classes/Tree.xml:428
+msgid ""
+"The maximum distance between the mouse cursor and the control's border to "
+"trigger border scrolling when dragging."
+msgstr ""
+
+#: doc/classes/Tree.xml:431
+msgid "The speed of border scrolling."
+msgstr ""
+
+#: doc/classes/Tree.xml:434
+msgid ""
+"The arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] mode "
+"cell."
+msgstr ""
+
+#: doc/classes/Tree.xml:437
+msgid ""
+"[StyleBox] for the selected items, used when the [Tree] is not being focused."
+msgstr ""
+
+#: doc/classes/Tree.xml:440
+msgid ""
+"[StyleBox] for the selected items, used when the [Tree] is being focused."
+msgstr ""
+
+#: doc/classes/Tree.xml:443
+msgid "Default text [Color] of the title button."
+msgstr ""
+
+#: doc/classes/Tree.xml:446
+msgid "[Font] of the title button's text."
+msgstr ""
+
+#: doc/classes/Tree.xml:449
+msgid "[StyleBox] used when the title button is being hovered."
+msgstr ""
+
+#: doc/classes/Tree.xml:452
+msgid "Default [StyleBox] for the title button."
+msgstr ""
+
+#: doc/classes/Tree.xml:455
+msgid "[StyleBox] used when the title button is being pressed."
+msgstr ""
+
+#: doc/classes/Tree.xml:458
+msgid ""
+"The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode "
+"cell is unchecked."
+msgstr ""
+
+#: doc/classes/Tree.xml:461
+msgid ""
+"The updown arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] "
+"mode cell."
+msgstr ""
+
+#: doc/classes/Tree.xml:464
+msgid ""
+"The vertical padding inside each item, i.e. the distance between the item's "
+"content and top/bottom border."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:4
+msgid "Control for a single item inside a [Tree]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:7
+msgid ""
+"Control for a single item inside a [Tree]. May have child [TreeItem]s and be "
+"styled as well as contain buttons.\n"
+"You can remove a [TreeItem] by using [method Object.free]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:21
+msgid ""
+"Adds a button with [Texture] [code]button[/code] at column [code]column[/"
+"code]. The [code]button_idx[/code] index is used to identify the button when "
+"calling other methods. If not specified, the next available index is used, "
+"which may be retrieved by calling [method get_button_count] immediately "
+"after this method. Optionally, the button can be [code]disabled[/code] and "
+"have a [code]tooltip[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:28
+msgid ""
+"Calls the [code]method[/code] on the actual TreeItem and its children "
+"recursively. Pass parameters as a comma separated list."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:35
+msgid "Resets the background color for the given column to default."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:42
+msgid "Resets the color for the given column to default."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:49
+msgid "Deselects the given column."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:57
+msgid ""
+"Removes the button at index [code]button_idx[/code] in column [code]column[/"
+"code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:65
+msgid ""
+"Returns the [Texture] of the button at index [code]button_idx[/code] in "
+"column [code]column[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:72
+msgid ""
+"Returns the number of buttons in column [code]column[/code]. May be used to "
+"get the most recently added button's index, if no index was specified."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:80
+msgid ""
+"Returns the tooltip string for the button at index [code]button_idx[/code] "
+"in column [code]column[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:87
+msgid "Returns the column's cell mode."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:93
+msgid ""
+"Returns the TreeItem's first child item or a null object if there is none."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:100
+msgid "Returns the custom background color of column [code]column[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:107
+msgid "Returns the custom color of column [code]column[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:114
+msgid "Returns [code]true[/code] if [code]expand_right[/code] is set."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:121
+msgid "Returns the given column's icon [Texture]. Error if no icon is set."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:128
+msgid "Returns the column's icon's maximum width."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:135
+msgid "Returns the [Color] modulating the column's icon."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:142
+msgid "Returns the icon [Texture] region as [Rect2]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:149
+msgid ""
+"Returns the metadata value that was set for the given column using [method "
+"set_metadata]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:155
+msgid ""
+"Returns the next TreeItem in the tree or a null object if there is none."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:162
+msgid ""
+"Returns the next visible TreeItem in the tree or a null object if there is "
+"none.\n"
+"If [code]wrap[/code] is enabled, the method will wrap around to the first "
+"visible element in the tree when called on the last visible element, "
+"otherwise it returns [code]null[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:169
+msgid "Returns the parent TreeItem or a null object if there is none."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:175
+msgid ""
+"Returns the previous TreeItem in the tree or a null object if there is none."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:182
+msgid ""
+"Returns the previous visible TreeItem in the tree or a null object if there "
+"is none.\n"
+"If [code]wrap[/code] is enabled, the method will wrap around to the last "
+"visible element in the tree when called on the first visible element, "
+"otherwise it returns [code]null[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:190
+msgid "Returns the value of a [constant CELL_MODE_RANGE] column."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:197
+msgid ""
+"Returns a dictionary containing the range parameters for a given column. The "
+"keys are \"min\", \"max\", \"step\", and \"expr\"."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:204
+msgid "Gets the suffix string shown after the column value."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:211
+msgid "Returns the given column's text."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:218
+msgid "Returns the given column's text alignment."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:225
+msgid "Returns the given column's tooltip."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:233
+msgid ""
+"Returns [code]true[/code] if the button at index [code]button_idx[/code] for "
+"the given column is disabled."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:240
+msgid "Returns [code]true[/code] if the given column is checked."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:253
+msgid "Returns [code]true[/code] if column [code]column[/code] is editable."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:260
+msgid "Returns [code]true[/code] if column [code]column[/code] is selectable."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:267
+msgid "Returns [code]true[/code] if column [code]column[/code] is selected."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:273
+msgid "Moves this TreeItem to the bottom in the [Tree] hierarchy."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:279
+msgid "Moves this TreeItem to the top in the [Tree] hierarchy."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:286
+msgid ""
+"Removes the given child [TreeItem] and all its children from the [Tree]. "
+"Note that it doesn't free the item from memory, so it can be reused later. "
+"To completely remove a [TreeItem] use [method Object.free]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:293
+msgid "Selects the column [code]column[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:302
+msgid ""
+"Sets the given column's button [Texture] at index [code]button_idx[/code] to "
+"[code]button[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:311
+msgid ""
+"If [code]true[/code], disables the button at index [code]button_idx[/code] "
+"in column [code]column[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:319
+msgid ""
+"Sets the given column's cell mode to [code]mode[/code]. See [enum "
+"TreeCellMode] constants."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:327
+msgid "If [code]true[/code], the column [code]column[/code] is checked."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:343
+msgid ""
+"Sets the given column's custom background color and whether to just use it "
+"as an outline."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:351
+msgid "Sets the given column's custom color."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:360
+msgid ""
+"Sets the given column's custom draw callback to [code]callback[/code] method "
+"on [code]object[/code].\n"
+"The [code]callback[/code] should accept two arguments: the [TreeItem] that "
+"is drawn and its position and size as a [Rect2]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:369
+msgid "If [code]true[/code], column [code]column[/code] is editable."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:377
+msgid ""
+"If [code]true[/code], column [code]column[/code] is expanded to the right."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:385
+msgid "Sets the given column's icon [Texture]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:393
+msgid "Sets the given column's icon's maximum width."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:401
+msgid "Modulates the given column's icon with [code]modulate[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:409
+msgid "Sets the given column's icon's texture region."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:417
+msgid ""
+"Sets the metadata value for the given column, which can be retrieved later "
+"using [method get_metadata]. This can be used, for example, to store a "
+"reference to the original data."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:425
+msgid "Sets the value of a [constant CELL_MODE_RANGE] column."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:436
+msgid ""
+"Sets the range of accepted values for a column. The column must be in the "
+"[constant CELL_MODE_RANGE] mode.\n"
+"If [code]expr[/code] is [code]true[/code], the edit mode slider will use an "
+"exponential scale as with [member Range.exp_edit]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:445
+msgid "If [code]true[/code], the given column is selectable."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:453
+msgid ""
+"Sets a string to be shown after a column's value (for example, a unit "
+"abbreviation)."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:461
+msgid "Sets the given column's text value."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:469
+msgid ""
+"Sets the given column's text alignment. See [enum TextAlign] for possible "
+"values."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:477
+msgid "Sets the given column's tooltip text."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:483
+msgid "If [code]true[/code], the TreeItem is collapsed."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:486
+msgid "The custom minimum height."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:489
+msgid "If [code]true[/code], folding is disabled for this TreeItem."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:494
+msgid "Cell contains a string."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:497
+msgid "Cell contains a checkbox."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:500
+msgid "Cell contains a range."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:503
+msgid "Cell contains an icon."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:508
+msgid "Align text to the left. See [code]set_text_align()[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:511
+msgid "Center text. See [code]set_text_align()[/code]."
+msgstr ""
+
+#: doc/classes/TreeItem.xml:514
+msgid "Align text to the right. See [code]set_text_align()[/code]."
+msgstr ""
+
+#: doc/classes/TriangleMesh.xml:4
+msgid "Internal mesh type."
+msgstr ""
+
+#: doc/classes/TriangleMesh.xml:7
+msgid "Mesh type used internally for collision calculations."
+msgstr ""
+
+#: doc/classes/Tween.xml:4
+msgid "Smoothly animates a node's properties over time."
+msgstr ""
+
+#: doc/classes/Tween.xml:7
+msgid ""
+"Tweens are useful for animations requiring a numerical property to be "
+"interpolated over a range of values. The name [i]tween[/i] comes from [i]in-"
+"betweening[/i], an animation technique where you specify [i]keyframes[/i] "
+"and the computer interpolates the frames that appear between them.\n"
+"[Tween] is more suited than [AnimationPlayer] for animations where you don't "
+"know the final values in advance. For example, interpolating a dynamically-"
+"chosen camera zoom value is best done with a [Tween] node; it would be "
+"difficult to do the same thing with an [AnimationPlayer] node.\n"
+"Here is a brief usage example that makes a 2D node move smoothly between two "
+"positions:\n"
+"[codeblock]\n"
+"var tween = get_node(\"Tween\")\n"
+"tween.interpolate_property($Node2D, \"position\",\n"
+" Vector2(0, 0), Vector2(100, 100), 1,\n"
+" Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)\n"
+"tween.start()\n"
+"[/codeblock]\n"
+"Many methods require a property name, such as [code]\"position\"[/code] "
+"above. You can find the correct property name by hovering over the property "
+"in the Inspector. You can also provide the components of a property directly "
+"by using [code]\"property:component\"[/code] (e.g. [code]position:x[/code]), "
+"where it would only apply to that particular component.\n"
+"Many of the methods accept [code]trans_type[/code] and [code]ease_type[/"
+"code]. The first accepts an [enum TransitionType] constant, and refers to "
+"the way the timing of the animation is handled (see [url=https://easings."
+"net/]easings.net[/url] for some examples). The second accepts an [enum "
+"EaseType] constant, and controls where the [code]trans_type[/code] is "
+"applied to the interpolation (in the beginning, the end, or both). If you "
+"don't know which transition and easing to pick, you can try different [enum "
+"TransitionType] constants with [constant EASE_IN_OUT], and use the one that "
+"looks best.\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"tween_cheatsheet.png]Tween easing and transition types cheatsheet[/url]"
+msgstr ""
+
+#: doc/classes/Tween.xml:36
+msgid ""
+"Follows [code]method[/code] of [code]object[/code] and applies the returned "
+"value on [code]target_method[/code] of [code]target[/code], beginning from "
+"[code]initial_val[/code] for [code]duration[/code] seconds, [code]delay[/"
+"code] later. Methods are called with consecutive values.\n"
+"Use [enum TransitionType] for [code]trans_type[/code] and [enum EaseType] "
+"for [code]ease_type[/code] parameters. These values control the timing and "
+"direction of the interpolation. See the class description for more "
+"information."
+msgstr ""
+
+#: doc/classes/Tween.xml:52
+msgid ""
+"Follows [code]property[/code] of [code]object[/code] and applies it on "
+"[code]target_property[/code] of [code]target[/code], beginning from "
+"[code]initial_val[/code] for [code]duration[/code] seconds, [code]delay[/"
+"code] seconds later.\n"
+"Use [enum TransitionType] for [code]trans_type[/code] and [enum EaseType] "
+"for [code]ease_type[/code] parameters. These values control the timing and "
+"direction of the interpolation. See the class description for more "
+"information."
+msgstr ""
+
+#: doc/classes/Tween.xml:59
+msgid ""
+"Returns the total time needed for all tweens to end. If you have two tweens, "
+"one lasting 10 seconds and the other 20 seconds, it would return 20 seconds, "
+"as by that time all tweens would have finished."
+msgstr ""
+
+#: doc/classes/Tween.xml:73
+msgid ""
+"Calls [code]callback[/code] of [code]object[/code] after [code]duration[/"
+"code]. [code]arg1[/code]-[code]arg5[/code] are arguments to be passed to the "
+"callback."
+msgstr ""
+
+#: doc/classes/Tween.xml:87
+msgid ""
+"Calls [code]callback[/code] of [code]object[/code] after [code]duration[/"
+"code] on the main thread (similar to [method Object.call_deferred]). "
+"[code]arg1[/code]-[code]arg5[/code] are arguments to be passed to the "
+"callback."
+msgstr ""
+
+#: doc/classes/Tween.xml:101
+msgid ""
+"Animates [code]method[/code] of [code]object[/code] from [code]initial_val[/"
+"code] to [code]final_val[/code] for [code]duration[/code] seconds, "
+"[code]delay[/code] seconds later. Methods are called with consecutive "
+"values.\n"
+"Use [enum TransitionType] for [code]trans_type[/code] and [enum EaseType] "
+"for [code]ease_type[/code] parameters. These values control the timing and "
+"direction of the interpolation. See the class description for more "
+"information."
+msgstr ""
+
+#: doc/classes/Tween.xml:116
+msgid ""
+"Animates [code]property[/code] of [code]object[/code] from "
+"[code]initial_val[/code] to [code]final_val[/code] for [code]duration[/code] "
+"seconds, [code]delay[/code] seconds later. Setting the initial value to "
+"[code]null[/code] uses the current value of the property.\n"
+"Use [enum TransitionType] for [code]trans_type[/code] and [enum EaseType] "
+"for [code]ease_type[/code] parameters. These values control the timing and "
+"direction of the interpolation. See the class description for more "
+"information."
+msgstr ""
+
+#: doc/classes/Tween.xml:123
+msgid ""
+"Returns [code]true[/code] if any tweens are currently running.\n"
+"[b]Note:[/b] This method doesn't consider tweens that have ended."
+msgstr ""
+
+#: doc/classes/Tween.xml:132
+msgid ""
+"Stops animation and removes a tween, given its object and property/method "
+"pair. By default, all tweens are removed, unless [code]key[/code] is "
+"specified."
+msgstr ""
+
+#: doc/classes/Tween.xml:138
+msgid "Stops animation and removes all tweens."
+msgstr ""
+
+#: doc/classes/Tween.xml:146
+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 removed, unless [code]key[/code] is specified."
+msgstr ""
+
+#: doc/classes/Tween.xml:152
+msgid ""
+"Resets all tweens to their initial values (the ones given, not those before "
+"the tween)."
+msgstr ""
+
+#: doc/classes/Tween.xml:160
+msgid ""
+"Continues animating a stopped tween, given its object and property/method "
+"pair. By default, all tweens are resumed, unless [code]key[/code] is "
+"specified."
+msgstr ""
+
+#: doc/classes/Tween.xml:166
+msgid "Continues animating all stopped tweens."
+msgstr ""
+
+#: doc/classes/Tween.xml:173
+msgid "Sets the interpolation to the given [code]time[/code] in seconds."
+msgstr ""
+
+#: doc/classes/Tween.xml:180
+msgid ""
+"Activates/deactivates the tween. See also [method stop_all] and [method "
+"resume_all]."
+msgstr ""
+
+#: doc/classes/Tween.xml:186
+msgid "Starts the tween. You can define animations both before and after this."
+msgstr ""
+
+#: doc/classes/Tween.xml:194
+msgid ""
+"Stops a tween, given its object and property/method pair. By default, all "
+"tweens are stopped, unless [code]key[/code] is specified."
+msgstr ""
+
+#: doc/classes/Tween.xml:200
+msgid "Stops animating all tweens."
+msgstr ""
+
+#: doc/classes/Tween.xml:215
+msgid ""
+"Animates [code]method[/code] of [code]object[/code] from the value returned "
+"by [code]initial_method[/code] to [code]final_val[/code] for [code]duration[/"
+"code] seconds, [code]delay[/code] seconds later. Methods are animated by "
+"calling them with consecutive values.\n"
+"Use [enum TransitionType] for [code]trans_type[/code] and [enum EaseType] "
+"for [code]ease_type[/code] parameters. These values control the timing and "
+"direction of the interpolation. See the class description for more "
+"information."
+msgstr ""
+
+#: doc/classes/Tween.xml:231
+msgid ""
+"Animates [code]property[/code] of [code]object[/code] from the current value "
+"of the [code]initial_val[/code] property of [code]initial[/code] to "
+"[code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] "
+"seconds later.\n"
+"Use [enum TransitionType] for [code]trans_type[/code] and [enum EaseType] "
+"for [code]ease_type[/code] parameters. These values control the timing and "
+"direction of the interpolation. See the class description for more "
+"information."
+msgstr ""
+
+#: doc/classes/Tween.xml:238
+msgid "Returns the current time of the tween."
+msgstr ""
+
+#: doc/classes/Tween.xml:244
+msgid "The tween's animation process thread. See [enum TweenProcessMode]."
+msgstr ""
+
+#: doc/classes/Tween.xml:247
+msgid ""
+"The tween's speed multiplier. For example, set it to [code]1.0[/code] for "
+"normal speed, [code]2.0[/code] for two times normal speed, or [code]0.5[/"
+"code] for half of the normal speed. A value of [code]0[/code] pauses the "
+"animation, but see also [method set_active] or [method stop_all] for this."
+msgstr ""
+
+#: doc/classes/Tween.xml:250
+msgid "If [code]true[/code], the tween loops."
+msgstr ""
+
+#: doc/classes/Tween.xml:256
+msgid "Emitted when all processes in a tween end."
+msgstr ""
+
+#: doc/classes/Tween.xml:263
+msgid "Emitted when a tween ends."
+msgstr ""
+
+#: doc/classes/Tween.xml:270
+msgid "Emitted when a tween starts."
+msgstr ""
+
+#: doc/classes/Tween.xml:279
+msgid "Emitted at each step of the animation."
+msgstr ""
+
+#: doc/classes/Tween.xml:285
+msgid "The tween updates with the [code]_physics_process[/code] callback."
+msgstr ""
+
+#: doc/classes/Tween.xml:288
+msgid "The tween updates with the [code]_process[/code] callback."
+msgstr ""
+
+#: doc/classes/Tween.xml:291
+msgid "The animation is interpolated linearly."
+msgstr ""
+
+#: doc/classes/Tween.xml:294
+msgid "The animation is interpolated using a sine function."
+msgstr ""
+
+#: doc/classes/Tween.xml:297
+msgid ""
+"The animation is interpolated with a quintic (to the power of 5) function."
+msgstr ""
+
+#: doc/classes/Tween.xml:300
+msgid ""
+"The animation is interpolated with a quartic (to the power of 4) function."
+msgstr ""
+
+#: doc/classes/Tween.xml:303
+msgid ""
+"The animation is interpolated with a quadratic (to the power of 2) function."
+msgstr ""
+
+#: doc/classes/Tween.xml:306
+msgid ""
+"The animation is interpolated with an exponential (to the power of x) "
+"function."
+msgstr ""
+
+#: doc/classes/Tween.xml:309
+msgid ""
+"The animation is interpolated with elasticity, wiggling around the edges."
+msgstr ""
+
+#: doc/classes/Tween.xml:312
+msgid ""
+"The animation is interpolated with a cubic (to the power of 3) function."
+msgstr ""
+
+#: doc/classes/Tween.xml:315
+msgid "The animation is interpolated with a function using square roots."
+msgstr ""
+
+#: doc/classes/Tween.xml:318
+msgid "The animation is interpolated by bouncing at the end."
+msgstr ""
+
+#: doc/classes/Tween.xml:321
+msgid "The animation is interpolated backing out at ends."
+msgstr ""
+
+#: doc/classes/Tween.xml:324
+msgid "The interpolation starts slowly and speeds up towards the end."
+msgstr ""
+
+#: doc/classes/Tween.xml:327
+msgid "The interpolation starts quickly and slows down towards the end."
+msgstr ""
+
+#: doc/classes/Tween.xml:330
+msgid ""
+"A combination of [constant EASE_IN] and [constant EASE_OUT]. The "
+"interpolation is slowest at both ends."
+msgstr ""
+
+#: doc/classes/Tween.xml:333
+msgid ""
+"A combination of [constant EASE_IN] and [constant EASE_OUT]. The "
+"interpolation is fastest at both ends."
+msgstr ""
+
+#: doc/classes/UDPServer.xml:4
+msgid "Helper class to implement a UDP server."
+msgstr ""
+
+#: doc/classes/UDPServer.xml:7
+msgid ""
+"A simple server that opens a UDP socket and returns connected "
+"[PacketPeerUDP] upon receiving new packets. See also [method PacketPeerUDP."
+"connect_to_host].\n"
+"After starting the server ([method listen]), you will need to [method poll] "
+"it at regular intervals (e.g. inside [method Node._process]) for it to "
+"process new packets, delivering them to the appropriate [PacketPeerUDP], and "
+"taking new connections.\n"
+"Below a small example of how it can be used:\n"
+"[codeblock]\n"
+"# server.gd\n"
+"extends Node\n"
+"\n"
+"var server := UDPServer.new()\n"
+"var peers = []\n"
+"\n"
+"func _ready():\n"
+" server.listen(4242)\n"
+"\n"
+"func _process(delta):\n"
+" server.poll() # Important!\n"
+" if server.is_connection_available():\n"
+" var peer : PacketPeerUDP = server.take_connection()\n"
+" var pkt = peer.get_packet()\n"
+" print(\"Accepted peer: %s:%s\" % [peer.get_packet_ip(), peer."
+"get_packet_port()])\n"
+" print(\"Received data: %s\" % [pkt.get_string_from_utf8()])\n"
+" # Reply so it knows we received the message.\n"
+" peer.put_packet(pkt)\n"
+" # Keep a reference so we can keep contacting the remote peer.\n"
+" peers.append(peer)\n"
+"\n"
+" for i in range(0, peers.size()):\n"
+" pass # Do something with the connected peers.\n"
+"\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# client.gd\n"
+"extends Node\n"
+"\n"
+"var udp := PacketPeerUDP.new()\n"
+"var connected = false\n"
+"\n"
+"func _ready():\n"
+" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
+"\n"
+"func _process(delta):\n"
+" if !connected:\n"
+" # Try to contact server\n"
+" udp.put_packet(\"The answer is... 42!\".to_utf8())\n"
+" if udp.get_available_packet_count() > 0:\n"
+" print(\"Connected: %s\" % udp.get_packet().get_string_from_utf8())\n"
+" connected = true\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/UDPServer.xml:61
+msgid ""
+"Returns [code]true[/code] if a packet with a new address/port combination "
+"was received on the socket."
+msgstr ""
+
+#: doc/classes/UDPServer.xml:67
+msgid ""
+"Returns [code]true[/code] if the socket is open and listening on a port."
+msgstr ""
+
+#: doc/classes/UDPServer.xml:75
+msgid ""
+"Starts the server by opening a UDP socket listening on the given port. You "
+"can optionally specify a [code]bind_address[/code] to only listen for "
+"packets sent to that address. See also [method PacketPeerUDP.listen]."
+msgstr ""
+
+#: doc/classes/UDPServer.xml:81
+msgid ""
+"Call this method at regular intervals (e.g. inside [method Node._process]) "
+"to process new packets. And packet from known address/port pair will be "
+"delivered to the appropriate [PacketPeerUDP], any packet received from an "
+"unknown address/port pair will be added as a pending connection (see [method "
+"is_connection_available], [method take_connection]). The maximum number of "
+"pending connection is defined via [member max_pending_connections]."
+msgstr ""
+
+#: doc/classes/UDPServer.xml:87
+msgid ""
+"Stops the server, closing the UDP socket if open. Will close all connected "
+"[PacketPeerUDP] accepted via [method take_connection] (remote peers will not "
+"be notified)."
+msgstr ""
+
+#: doc/classes/UDPServer.xml:93
+msgid ""
+"Returns the first pending connection (connected to the appropriate address/"
+"port). Will return [code]null[/code] if no new connection is available. See "
+"also [method is_connection_available], [method PacketPeerUDP."
+"connect_to_host]."
+msgstr ""
+
+#: doc/classes/UDPServer.xml:99
+msgid ""
+"Define the maximum number of pending connections, during [method poll], any "
+"new pending connection exceeding that value will be automatically dropped. "
+"Setting this value to [code]0[/code] effectively prevents any new pending "
+"connection to be accepted (e.g. when all your players have connected)."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:4
+msgid "Helper to manage undo/redo operations in the editor or custom tools."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:7
+msgid ""
+"Helper to manage undo/redo operations in the editor or custom tools. It "
+"works by registering methods and property changes inside \"actions\".\n"
+"Common behavior is to create an action, then add do/undo calls to functions "
+"or property changes, then committing the action.\n"
+"Here's an example on how to add an action to the Godot editor's own "
+"[UndoRedo], from a plugin:\n"
+"[codeblock]\n"
+"var undo_redo = get_undo_redo() # Method of EditorPlugin.\n"
+"\n"
+"func do_something():\n"
+" pass # Put your code here.\n"
+"\n"
+"func undo_something():\n"
+" pass # Put here the code that reverts what's done by "
+"\"do_something()\".\n"
+"\n"
+"func _on_MyButton_pressed():\n"
+" var node = get_node(\"MyNode2D\")\n"
+" undo_redo.create_action(\"Move the node\")\n"
+" undo_redo.add_do_method(self, \"do_something\")\n"
+" undo_redo.add_undo_method(self, \"undo_something\")\n"
+" undo_redo.add_do_property(node, \"position\", Vector2(100,100))\n"
+" undo_redo.add_undo_property(node, \"position\", node.position)\n"
+" undo_redo.commit_action()\n"
+"[/codeblock]\n"
+"[method create_action], [method add_do_method], [method add_undo_method], "
+"[method add_do_property], [method add_undo_property], and [method "
+"commit_action] should be called one after the other, like in the example. "
+"Not doing so could lead to crashes.\n"
+"If you don't need to register a method, you can leave [method add_do_method] "
+"and [method add_undo_method] out; the same goes for properties. You can also "
+"register more than one method/property."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:39
+msgid "Register a method that will be called when the action is committed."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:48
+msgid "Register a property value change for \"do\"."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:55
+msgid ""
+"Register a reference for \"do\" that will be erased if the \"do\" history is "
+"lost. This is useful mostly for new nodes created for the \"do\" call. Do "
+"not use for resources."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:63
+msgid "Register a method that will be called when the action is undone."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:72
+msgid "Register a property value change for \"undo\"."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:79
+msgid ""
+"Register a reference for \"undo\" that will be erased if the \"undo\" "
+"history is lost. This is useful mostly for nodes removed with the \"do\" "
+"call (not the \"undo\" call!)."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:86
+msgid ""
+"Clear the undo/redo history and associated references.\n"
+"Passing [code]false[/code] to [code]increase_version[/code] will prevent the "
+"version number to be increased from this."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:93
+msgid ""
+"Commit the action. All \"do\" methods/properties are called/set when this "
+"function is called."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:101
+msgid ""
+"Create a new action. After this is called, do all your calls to [method "
+"add_do_method], [method add_undo_method], [method add_do_property], and "
+"[method add_undo_property], then commit the action with [method "
+"commit_action].\n"
+"The way actions are merged is dictated by the [code]merge_mode[/code] "
+"argument. See [enum MergeMode] for details."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:108
+msgid "Gets the name of the current action."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:114
+msgid ""
+"Gets the version. Every time a new action is committed, the [UndoRedo]'s "
+"version number is increased automatically.\n"
+"This is useful mostly to check if something changed from a saved version."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:133
+msgid ""
+"Returns [code]true[/code] if the [UndoRedo] is currently committing the "
+"action, i.e. running its \"do\" method or property change (see [method "
+"commit_action])."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:139
+msgid "Redo the last action."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:145
+msgid "Undo the last action."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:152
+msgid "Called when [method undo] or [method redo] was called."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:158
+msgid "Makes \"do\"/\"undo\" operations stay in separate actions."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:161
+msgid ""
+"Makes so that the action's \"do\" operation is from the first action created "
+"and the \"undo\" operation is from the last subsequent action with the same "
+"name."
+msgstr ""
+
+#: doc/classes/UndoRedo.xml:164
+msgid "Makes subsequent actions with the same name be merged into one."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:4
+msgid "UPNP network functions."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:7
+msgid ""
+"Provides UPNP functionality to discover [UPNPDevice]s on the local network "
+"and execute commands on them, like managing port mappings (port forwarding) "
+"and querying the local and remote network IP address. Note that methods on "
+"this class are synchronous and block the calling thread.\n"
+"To forward a specific port:\n"
+"[codeblock]\n"
+"const PORT = 7777\n"
+"var upnp = UPNP.new()\n"
+"upnp.discover(2000, 2, \"InternetGatewayDevice\")\n"
+"upnp.add_port_mapping(port)\n"
+"[/codeblock]\n"
+"To close a specific port (e.g. after you have finished using it):\n"
+"[codeblock]\n"
+"upnp.delete_port_mapping(port)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] UPnP discovery blocks the current thread. To perform discovery "
+"without blocking the main thread, use [Thread]s like this:\n"
+"[codeblock]\n"
+"# Emitted when UPnP port mapping setup is completed (regardless of success "
+"or failure).\n"
+"signal upnp_completed(error)\n"
+"\n"
+"# Replace this with your own server port number between 1025 and 65535.\n"
+"const SERVER_PORT = 3928\n"
+"var thread = null\n"
+"\n"
+"func _upnp_setup(server_port):\n"
+" # UPNP queries take some time.\n"
+" var upnp = UPNP.new()\n"
+" var err = upnp.discover()\n"
+"\n"
+" if err != OK:\n"
+" push_error(str(err))\n"
+" emit_signal(\"upnp_completed\", err)\n"
+" return\n"
+"\n"
+" if upnp.get_gateway() and upnp.get_gateway().is_valid_gateway():\n"
+" upnp.add_port_mapping(server_port, server_port, ProjectSettings."
+"get_setting(\"application/config/name\"), \"UDP\")\n"
+" upnp.add_port_mapping(server_port, server_port, ProjectSettings."
+"get_setting(\"application/config/name\"), \"TCP\")\n"
+" emit_signal(\"upnp_completed\", OK)\n"
+"\n"
+"func _ready():\n"
+" thread = Thread.new()\n"
+" thread.start(self, \"_upnp_setup\", SERVER_PORT)\n"
+"\n"
+"func _exit_tree():\n"
+" # Wait for thread finish here to handle game exit while the thread is "
+"running.\n"
+" thread.wait_to_finish()\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:59
+msgid "Adds the given [UPNPDevice] to the list of discovered devices."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:70
+msgid ""
+"Adds a mapping to forward the external [code]port[/code] (between 1 and "
+"65535) on the default gateway (see [method get_gateway]) to the "
+"[code]internal_port[/code] on the local machine for the given protocol "
+"[code]proto[/code] (either [code]TCP[/code] or [code]UDP[/code], with UDP "
+"being the default). If a port mapping for the given port and protocol "
+"combination already exists on that gateway device, this method tries to "
+"overwrite it. If that is not desired, you can retrieve the gateway manually "
+"with [method get_gateway] and call [method add_port_mapping] on it, if any.\n"
+"If [code]internal_port[/code] is [code]0[/code] (the default), the same port "
+"number is used for both the external and the internal port (the [code]port[/"
+"code] value).\n"
+"The description ([code]desc[/code]) is shown in some router UIs and can be "
+"used to point out which application added the mapping. The mapping's lease "
+"duration can be limited by specifying a [code]duration[/code] (in seconds). "
+"However, some routers are incompatible with one or both of these, so use "
+"with caution and add fallback logic in case of errors to retry without them "
+"if in doubt.\n"
+"See [enum UPNPResult] for possible return values."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:79
+msgid "Clears the list of discovered devices."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:87
+msgid ""
+"Deletes the port mapping for the given port and protocol combination on the "
+"default gateway (see [method get_gateway]) if one exists. [code]port[/code] "
+"must be a valid port between 1 and 65535, [code]proto[/code] can be either "
+"[code]TCP[/code] or [code]UDP[/code]. See [enum UPNPResult] for possible "
+"return values."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:96
+msgid ""
+"Discovers local [UPNPDevice]s. Clears the list of previously discovered "
+"devices.\n"
+"Filters for IGD (InternetGatewayDevice) type devices by default, as those "
+"manage port forwarding. [code]timeout[/code] is the time to wait for "
+"responses in milliseconds. [code]ttl[/code] is the time-to-live; only touch "
+"this if you know what you're doing.\n"
+"See [enum UPNPResult] for possible return values."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:105
+msgid "Returns the [UPNPDevice] at the given [code]index[/code]."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:111
+msgid "Returns the number of discovered [UPNPDevice]s."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:117
+msgid ""
+"Returns the default gateway. That is the first discovered [UPNPDevice] that "
+"is also a valid IGD (InternetGatewayDevice)."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:123
+msgid ""
+"Returns the external [IP] address of the default gateway (see [method "
+"get_gateway]) as string. Returns an empty string on error."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:130
+msgid ""
+"Removes the device at [code]index[/code] from the list of discovered devices."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:138
+msgid ""
+"Sets the device at [code]index[/code] from the list of discovered devices to "
+"[code]device[/code]."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:144
+msgid "If [code]true[/code], IPv6 is used for [UPNPDevice] discovery."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:147
+msgid ""
+"If [code]0[/code], the local port to use for discovery is chosen "
+"automatically by the system. If [code]1[/code], discovery will be done from "
+"the source port 1900 (same as destination port). Otherwise, the value will "
+"be used as the port."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:150
+msgid ""
+"Multicast interface to use for discovery. Uses the default multicast "
+"interface if empty."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:155
+msgid "UPNP command or discovery was successful."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:158
+msgid ""
+"Not authorized to use the command on the [UPNPDevice]. May be returned when "
+"the user disabled UPNP on their router."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:161
+msgid ""
+"No port mapping was found for the given port, protocol combination on the "
+"given [UPNPDevice]."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:164
+msgid "Inconsistent parameters."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:167
+msgid ""
+"No such entry in array. May be returned if a given port, protocol "
+"combination is not found on an [UPNPDevice]."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:170
+msgid "The action failed."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:173
+msgid ""
+"The [UPNPDevice] does not allow wildcard values for the source IP address."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:176
+msgid "The [UPNPDevice] does not allow wildcard values for the external port."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:179
+msgid "The [UPNPDevice] does not allow wildcard values for the internal port."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:182
+msgid "The remote host value must be a wildcard."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:185
+msgid "The external port value must be a wildcard."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:188
+msgid ""
+"No port maps are available. May also be returned if port mapping "
+"functionality is not available."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:191
+msgid ""
+"Conflict with other mechanism. May be returned instead of [constant "
+"UPNP_RESULT_CONFLICT_WITH_OTHER_MAPPING] if a port mapping conflicts with an "
+"existing one."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:194
+msgid "Conflict with an existing port mapping."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:197
+msgid "External and internal port values must be the same."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:200
+msgid ""
+"Only permanent leases are supported. Do not use the [code]duration[/code] "
+"parameter when adding port mappings."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:203
+msgid "Invalid gateway."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:206
+msgid "Invalid port."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:209
+msgid "Invalid protocol."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:212
+msgid "Invalid duration."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:215
+msgid "Invalid arguments."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:218
+msgid "Invalid response."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:221
+msgid "Invalid parameter."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:224
+#: modules/upnp/doc_classes/UPNPDevice.xml:69
+msgid "HTTP error."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:227
+msgid "Socket error."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:230
+msgid "Error allocating memory."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:233
+msgid ""
+"No gateway available. You may need to call [method discover] first, or "
+"discovery didn't detect any valid IGDs (InternetGatewayDevices)."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:236
+msgid ""
+"No devices available. You may need to call [method discover] first, or "
+"discovery didn't detect any valid [UPNPDevice]s."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNP.xml:239
+#: modules/upnp/doc_classes/UPNPDevice.xml:93
+msgid "Unknown error."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:4
+msgid "UPNP device."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:7
+msgid ""
+"UPNP device. See [UPNP] for UPNP discovery and utility functions. Provides "
+"low-level access to UPNP control commands. Allows to manage port mappings "
+"(port forwarding) and to query network information of the device (like local "
+"and external IP address and status). Note that methods on this class are "
+"synchronous and block the calling thread."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:20
+msgid ""
+"Adds a port mapping to forward the given external port on this [UPNPDevice] "
+"for the given protocol to the local machine. See [method UPNP."
+"add_port_mapping]."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:28
+msgid ""
+"Deletes the port mapping identified by the given port and protocol "
+"combination on this device. See [method UPNP.delete_port_mapping]."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:34
+msgid ""
+"Returns [code]true[/code] if this is a valid IGD (InternetGatewayDevice) "
+"which potentially supports port forwarding."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:40
+msgid ""
+"Returns the external IP address of this [UPNPDevice] or an empty string."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:46
+msgid "URL to the device description."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:49
+msgid "IDG control URL."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:52
+msgid ""
+"Address of the local machine in the network connecting it to this "
+"[UPNPDevice]."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:55
+msgid "IGD service type."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:58
+msgid "IGD status. See [enum IGDStatus]."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:61
+msgid "Service type."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:66
+msgid "OK."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:72
+msgid "Empty HTTP response."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:75
+msgid "Returned response contained no URLs."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:78
+msgid "Not a valid IGD."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:81
+msgid "Disconnected."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:84
+msgid "Unknown device."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:87
+msgid "Invalid control."
+msgstr ""
+
+#: modules/upnp/doc_classes/UPNPDevice.xml:90
+msgid "Memory allocation error."
+msgstr ""
+
+#: doc/classes/Variant.xml:4
+msgid "The most important data type in Godot."
+msgstr ""
+
+#: doc/classes/Variant.xml:7
+msgid ""
+"In computer programming, a Variant class is a class that is designed to "
+"store a variety of other types. Dynamic programming languages like PHP, Lua, "
+"JavaScript and GDScript like to use them to store variables' data on the "
+"backend. With these Variants, properties are able to change value types "
+"freely.\n"
+"[codeblock]\n"
+"var foo = 2 # foo is dynamically an integer\n"
+"foo = \"Now foo is a string!\"\n"
+"foo = Reference.new() # foo is an Object\n"
+"var bar: int = 2 # bar is a statically typed integer.\n"
+"# bar = \"Uh oh! I can't make static variables become a different type!\"\n"
+"[/codeblock]\n"
+"Godot tracks all scripting API variables within Variants. Without even "
+"realizing it, you use Variants all the time. When a particular language "
+"enforces its own rules for keeping data typed, then that language is "
+"applying its own custom logic over the base Variant scripting API.\n"
+"- GDScript automatically wrap values in them. It keeps all data in plain "
+"Variants by default and then optionally enforces custom static typing rules "
+"on variable types.\n"
+"- VisualScript tracks properties inside Variants as well, but it also uses "
+"static typing. The GUI interface enforces that properties have a particular "
+"type that doesn't change over time.\n"
+"- C# is statically typed, but uses the Mono [code]object[/code] type in "
+"place of Godot's Variant class when it needs to represent a dynamic value. "
+"[code]object[/code] is the Mono runtime's equivalent of the same concept.\n"
+"- The statically-typed language NativeScript C++ does not define a built-in "
+"Variant-like class. Godot's GDNative bindings provide their own godot::"
+"Variant class for users; Any point at which the C++ code starts interacting "
+"with the Godot runtime is a place where you might have to start wrapping "
+"data inside Variant objects.\n"
+"The global [method @GDScript.typeof] function returns the enumerated value "
+"of the Variant type stored in the current variable (see [enum Variant."
+"Type]).\n"
+"[codeblock]\n"
+"var foo = 2\n"
+"match typeof(foo):\n"
+" TYPE_NIL:\n"
+" print(\"foo is null\")\n"
+" TYPE_INTEGER:\n"
+" print(\"foo is an integer\")\n"
+" TYPE_OBJECT:\n"
+" # Note that Objects are their own special category.\n"
+" # To get the name of the underlying Object type, you need the "
+"`get_class()` method.\n"
+" print(\"foo is a(n) %s\" % foo.get_class()) # inject the class name "
+"into a formatted string.\n"
+" # Note also that there is not yet any way to get a script's "
+"`class_name` string easily.\n"
+" # To fetch that value, you need to dig deeply into a hidden "
+"ProjectSettings setting: an Array of Dictionaries called "
+"\"_global_script_classes\".\n"
+" # Open your project.godot file to see it up close.\n"
+"[/codeblock]\n"
+"A Variant takes up only 20 bytes and can store almost any engine datatype "
+"inside of it. Variants are rarely used to hold information for long periods "
+"of time. Instead, they are used mainly for communication, editing, "
+"serialization and moving data around.\n"
+"Godot has specifically invested in making its Variant class as flexible as "
+"possible; so much so that it is used for a multitude of operations to "
+"facilitate communication between all of Godot's systems.\n"
+"A Variant:\n"
+"- Can store almost any datatype.\n"
+"- Can perform operations between many variants. GDScript uses Variant as its "
+"atomic/native datatype.\n"
+"- Can be hashed, so it can be compared quickly to other variants.\n"
+"- Can be used to convert safely between datatypes.\n"
+"- Can be used to abstract calling methods and their arguments. Godot exports "
+"all its functions through variants.\n"
+"- Can be used to defer calls or move data between threads.\n"
+"- Can be serialized as binary and stored to disk, or transferred via "
+"network.\n"
+"- Can be serialized to text and use it for printing values and editable "
+"settings.\n"
+"- Can work as an exported property, so the editor can edit it universally.\n"
+"- Can be used for dictionaries, arrays, parsers, etc.\n"
+"[b]Containers (Array and Dictionary):[/b] Both are implemented using "
+"variants. A [Dictionary] can match any datatype used as key to any other "
+"datatype. An [Array] just holds an array of Variants. Of course, a Variant "
+"can also hold a [Dictionary] and an [Array] inside, making it even more "
+"flexible.\n"
+"Modifications to a container will modify all references to it. A [Mutex] "
+"should be created to lock it if multi-threaded access is desired."
+msgstr ""
+
+#: doc/classes/Variant.xml:53
+msgid "https://docs.godotengine.org/en/3.4/development/cpp/variant_class.html"
+msgstr ""
+
+#: doc/classes/VBoxContainer.xml:4
+msgid "Vertical box container."
+msgstr ""
+
+#: doc/classes/VBoxContainer.xml:7
+msgid "Vertical box container. See [BoxContainer]."
+msgstr ""
+
+#: doc/classes/VBoxContainer.xml:18
+msgid "The vertical space between the [VBoxContainer]'s elements."
+msgstr ""
+
+#: doc/classes/Vector2.xml:4
+msgid "Vector used for 2D math."
+msgstr ""
+
+#: doc/classes/Vector2.xml:7
+msgid ""
+"2-element structure that can be used to represent positions in 2D space or "
+"any other pair of numeric values.\n"
+"[b]Note:[/b] In a boolean context, a Vector2 will evaluate to [code]false[/"
+"code] if it's equal to [code]Vector2(0, 0)[/code]. Otherwise, a Vector2 will "
+"always evaluate to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:14 doc/classes/Vector3.xml:14
+msgid ""
+"https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab"
+msgstr ""
+
+#: doc/classes/Vector2.xml:24
+msgid ""
+"Constructs a new Vector2 from the given [code]x[/code] and [code]y[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:30 doc/classes/Vector3.xml:31
+msgid ""
+"Returns a new vector with all components in absolute values (i.e. positive)."
+msgstr ""
+
+#: doc/classes/Vector2.xml:36
+msgid ""
+"Returns this vector's angle with respect to the positive X axis, or [code]"
+"(1, 0)[/code] vector, in radians.\n"
+"For example, [code]Vector2.RIGHT.angle()[/code] will return zero, "
+"[code]Vector2.DOWN.angle()[/code] will return [code]PI / 2[/code] (a quarter "
+"turn, or 90 degrees), and [code]Vector2(1, -1).angle()[/code] will return "
+"[code]-PI / 4[/code] (a negative eighth turn, or -45 degrees).\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"vector2_angle.png]Illustration of the returned angle.[/url]\n"
+"Equivalent to the result of [method @GDScript.atan2] when called with the "
+"vector's [member y] and [member x] as parameters: [code]atan2(y, x)[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:46
+msgid ""
+"Returns the angle to the given vector, in radians.\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"vector2_angle_to.png]Illustration of the returned angle.[/url]"
+msgstr ""
+
+#: doc/classes/Vector2.xml:54
+msgid ""
+"Returns the angle between the line connecting the two points and the X axis, "
+"in radians.\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"vector2_angle_to_point.png]Illustration of the returned angle.[/url]"
+msgstr ""
+
+#: doc/classes/Vector2.xml:61
+msgid ""
+"Returns the aspect ratio of this vector, the ratio of [member x] to [member "
+"y]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:68 doc/classes/Vector3.xml:45
+msgid ""
+"Returns the vector \"bounced off\" from a plane defined by the given normal."
+msgstr ""
+
+#: doc/classes/Vector2.xml:74
+msgid ""
+"Returns the vector with all components rounded up (towards positive "
+"infinity)."
+msgstr ""
+
+#: doc/classes/Vector2.xml:81
+msgid ""
+"Returns the vector with a maximum length by limiting its length to "
+"[code]length[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:88
+msgid "Returns the cross product of this vector and [code]with[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:98
+msgid ""
+"Cubically interpolates between this vector and [code]b[/code] using "
+"[code]pre_a[/code] and [code]post_b[/code] as handles, and returns the "
+"result at position [code]weight[/code]. [code]weight[/code] is on the range "
+"of 0.0 to 1.0, representing the amount of interpolation."
+msgstr ""
+
+#: doc/classes/Vector2.xml:105 doc/classes/Vector3.xml:75
+msgid ""
+"Returns the normalized vector pointing from this vector to [code]b[/code]. "
+"This is equivalent to using [code](b - a).normalized()[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:112 doc/classes/Vector3.xml:82
+msgid ""
+"Returns the squared distance between this vector and [code]b[/code].\n"
+"This method runs faster than [method distance_to], so prefer it if you need "
+"to compare vectors or need the squared distance for some formula."
+msgstr ""
+
+#: doc/classes/Vector2.xml:120
+msgid "Returns the distance between this vector and [code]to[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:127
+msgid ""
+"Returns the dot product of this vector and [code]with[/code]. This can be "
+"used to compare the angle between two vectors. For example, this can be used "
+"to determine whether an enemy is facing the player.\n"
+"The dot product will be [code]0[/code] for a straight angle (90 degrees), "
+"greater than 0 for angles narrower than 90 degrees and lower than 0 for "
+"angles wider than 90 degrees.\n"
+"When using unit (normalized) vectors, the result will always be between "
+"[code]-1.0[/code] (180 degree angle) when the vectors are facing opposite "
+"directions, and [code]1.0[/code] (0 degree angle) when the vectors are "
+"aligned.\n"
+"[b]Note:[/b] [code]a.dot(b)[/code] is equivalent to [code]b.dot(a)[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:136
+msgid ""
+"Returns the vector with all components rounded down (towards negative "
+"infinity)."
+msgstr ""
+
+#: doc/classes/Vector2.xml:143 doc/classes/Vector3.xml:119
+msgid ""
+"Returns [code]true[/code] if this vector and [code]v[/code] are "
+"approximately equal, by running [method @GDScript.is_equal_approx] on each "
+"component."
+msgstr ""
+
+#: doc/classes/Vector2.xml:149 doc/classes/Vector3.xml:125
+msgid ""
+"Returns [code]true[/code] if the vector is normalized, [code]false[/code] "
+"otherwise."
+msgstr ""
+
+#: doc/classes/Vector2.xml:155 doc/classes/Vector3.xml:131
+msgid "Returns the length (magnitude) of this vector."
+msgstr ""
+
+#: doc/classes/Vector2.xml:161 doc/classes/Vector3.xml:137
+msgid ""
+"Returns the squared length (squared magnitude) of this vector.\n"
+"This method runs faster than [method length], so prefer it if you need to "
+"compare vectors or need the squared distance for some formula."
+msgstr ""
+
+#: doc/classes/Vector2.xml:170
+msgid ""
+"Returns the result of the linear interpolation between this vector and "
+"[code]to[/code] by amount [code]weight[/code]. [code]weight[/code] is on the "
+"range of 0.0 to 1.0, representing the amount of interpolation."
+msgstr ""
+
+#: doc/classes/Vector2.xml:178
+msgid ""
+"Moves the vector toward [code]to[/code] by the fixed [code]delta[/code] "
+"amount."
+msgstr ""
+
+#: doc/classes/Vector2.xml:184 doc/classes/Vector3.xml:172
+msgid ""
+"Returns the vector scaled to unit length. Equivalent to [code]v / v.length()"
+"[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:191 doc/classes/Vector3.xml:186
+msgid ""
+"Returns a vector composed of the [method @GDScript.fposmod] of this vector's "
+"components and [code]mod[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:198 doc/classes/Vector3.xml:193
+msgid ""
+"Returns a vector composed of the [method @GDScript.fposmod] of this vector's "
+"components and [code]modv[/code]'s components."
+msgstr ""
+
+#: doc/classes/Vector2.xml:205
+msgid "Returns the vector projected onto the vector [code]b[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:212
+msgid "Returns the vector reflected from a plane defined by the given normal."
+msgstr ""
+
+#: doc/classes/Vector2.xml:219
+msgid ""
+"Returns the vector rotated by [code]phi[/code] radians. See also [method "
+"@GDScript.deg2rad]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:225
+msgid ""
+"Returns the vector with all components rounded to the nearest integer, with "
+"halfway cases rounded away from zero."
+msgstr ""
+
+#: doc/classes/Vector2.xml:231
+msgid ""
+"Returns the vector with each component set to one or negative one, depending "
+"on the signs of the components. If a component is zero, it returns positive "
+"one."
+msgstr ""
+
+#: doc/classes/Vector2.xml:239 doc/classes/Vector3.xml:243
+msgid ""
+"Returns the result of spherical linear interpolation between this vector and "
+"[code]to[/code], by amount [code]weight[/code]. [code]weight[/code] is on "
+"the range of 0.0 to 1.0, representing the amount of interpolation.\n"
+"[b]Note:[/b] Both vectors must be normalized."
+msgstr ""
+
+#: doc/classes/Vector2.xml:247 doc/classes/Vector3.xml:251
+msgid "Returns this vector slid along a plane defined by the given normal."
+msgstr ""
+
+#: doc/classes/Vector2.xml:254 doc/classes/Vector3.xml:258
+msgid ""
+"Returns this vector with each component snapped to the nearest multiple of "
+"[code]step[/code]. This can also be used to round to an arbitrary number of "
+"decimals."
+msgstr ""
+
+#: doc/classes/Vector2.xml:260
+msgid ""
+"Returns a perpendicular vector rotated 90 degrees counter-clockwise compared "
+"to the original, with the same length."
+msgstr ""
+
+#: doc/classes/Vector2.xml:266 doc/classes/Vector3.xml:271
+msgid ""
+"The vector's X component. Also accessible by using the index position [code]"
+"[0][/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:269 doc/classes/Vector3.xml:274
+msgid ""
+"The vector's Y component. Also accessible by using the index position [code]"
+"[1][/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:274
+msgid "Enumerated value for the X axis."
+msgstr ""
+
+#: doc/classes/Vector2.xml:277
+msgid "Enumerated value for the Y axis."
+msgstr ""
+
+#: doc/classes/Vector2.xml:280 doc/classes/Vector3.xml:291
+msgid "Zero vector, a vector with all components set to [code]0[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:283 doc/classes/Vector3.xml:294
+msgid "One vector, a vector with all components set to [code]1[/code]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:286 doc/classes/Vector3.xml:297
+msgid ""
+"Infinity vector, a vector with all components set to [constant @GDScript."
+"INF]."
+msgstr ""
+
+#: doc/classes/Vector2.xml:289
+msgid "Left unit vector. Represents the direction of left."
+msgstr ""
+
+#: doc/classes/Vector2.xml:292
+msgid "Right unit vector. Represents the direction of right."
+msgstr ""
+
+#: doc/classes/Vector2.xml:295
+msgid "Up unit vector. Y is down in 2D, so this vector points -Y."
+msgstr ""
+
+#: doc/classes/Vector2.xml:298
+msgid "Down unit vector. Y is down in 2D, so this vector points +Y."
+msgstr ""
+
+#: doc/classes/Vector3.xml:4
+msgid "Vector used for 3D math."
+msgstr ""
+
+#: doc/classes/Vector3.xml:7
+msgid ""
+"3-element structure that can be used to represent positions in 3D space or "
+"any other pair of numeric values.\n"
+"[b]Note:[/b] In a boolean context, a Vector3 will evaluate to [code]false[/"
+"code] if it's equal to [code]Vector3(0, 0, 0)[/code]. Otherwise, a Vector3 "
+"will always evaluate to [code]true[/code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:25
+msgid "Returns a Vector3 with the given components."
+msgstr ""
+
+#: doc/classes/Vector3.xml:38
+msgid "Returns the unsigned minimum angle to the given vector, in radians."
+msgstr ""
+
+#: doc/classes/Vector3.xml:51
+msgid ""
+"Returns a new vector with all components rounded up (towards positive "
+"infinity)."
+msgstr ""
+
+#: doc/classes/Vector3.xml:58
+msgid "Returns the cross product of this vector and [code]b[/code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:68
+msgid ""
+"Performs a cubic interpolation between vectors [code]pre_a[/code], [code]a[/"
+"code], [code]b[/code], [code]post_b[/code] ([code]a[/code] is current), by "
+"the given amount [code]weight[/code]. [code]weight[/code] is on the range of "
+"0.0 to 1.0, representing the amount of interpolation."
+msgstr ""
+
+#: doc/classes/Vector3.xml:90
+msgid "Returns the distance between this vector and [code]b[/code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:97
+msgid ""
+"Returns the dot product of this vector and [code]b[/code]. This can be used "
+"to compare the angle between two vectors. For example, this can be used to "
+"determine whether an enemy is facing the player.\n"
+"The dot product will be [code]0[/code] for a straight angle (90 degrees), "
+"greater than 0 for angles narrower than 90 degrees and lower than 0 for "
+"angles wider than 90 degrees.\n"
+"When using unit (normalized) vectors, the result will always be between "
+"[code]-1.0[/code] (180 degree angle) when the vectors are facing opposite "
+"directions, and [code]1.0[/code] (0 degree angle) when the vectors are "
+"aligned.\n"
+"[b]Note:[/b] [code]a.dot(b)[/code] is equivalent to [code]b.dot(a)[/code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:106
+msgid ""
+"Returns a new vector with all components rounded down (towards negative "
+"infinity)."
+msgstr ""
+
+#: doc/classes/Vector3.xml:112
+msgid ""
+"Returns the inverse of the vector. This is the same as [code]Vector3( 1.0 / "
+"v.x, 1.0 / v.y, 1.0 / v.z )[/code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:146
+msgid ""
+"Returns the result of the linear interpolation between this vector and "
+"[code]to[/code] by amount [code]t[/code]. [code]weight[/code] is on the "
+"range of 0.0 to 1.0, representing the amount of interpolation."
+msgstr ""
+
+#: doc/classes/Vector3.xml:152
+msgid ""
+"Returns the axis of the vector's largest value. See [code]AXIS_*[/code] "
+"constants. If all components are equal, this method returns [constant "
+"AXIS_X]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:158
+msgid ""
+"Returns the axis of the vector's smallest value. See [code]AXIS_*[/code] "
+"constants. If all components are equal, this method returns [constant "
+"AXIS_Z]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:166
+msgid ""
+"Moves this vector toward [code]to[/code] by the fixed [code]delta[/code] "
+"amount."
+msgstr ""
+
+#: doc/classes/Vector3.xml:179
+msgid "Returns the outer product with [code]b[/code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:200
+msgid "Returns this vector projected onto another vector [code]b[/code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:207
+msgid "Returns this vector reflected from a plane defined by the given normal."
+msgstr ""
+
+#: doc/classes/Vector3.xml:215
+msgid ""
+"Rotates this vector around a given axis by [code]phi[/code] radians. The "
+"axis must be a normalized vector."
+msgstr ""
+
+#: doc/classes/Vector3.xml:221
+msgid ""
+"Returns this vector with all components rounded to the nearest integer, with "
+"halfway cases rounded away from zero."
+msgstr ""
+
+#: doc/classes/Vector3.xml:227
+msgid ""
+"Returns a vector with each component set to one or negative one, depending "
+"on the signs of this vector's components. If a component is zero, it returns "
+"positive one."
+msgstr ""
+
+#: doc/classes/Vector3.xml:235
+msgid ""
+"Returns the signed angle to the given vector, in radians. The sign of the "
+"angle is positive in a counter-clockwise direction and negative in a "
+"clockwise direction when viewed from the side specified by the [code]axis[/"
+"code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:264
+msgid ""
+"Returns a diagonal matrix with the vector as main diagonal.\n"
+"This is equivalent to a Basis with no rotation or shearing and this vector's "
+"components set as the scale."
+msgstr ""
+
+#: doc/classes/Vector3.xml:277
+msgid ""
+"The vector's Z component. Also accessible by using the index position [code]"
+"[2][/code]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:282
+msgid ""
+"Enumerated value for the X axis. Returned by [method max_axis] and [method "
+"min_axis]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:285
+msgid ""
+"Enumerated value for the Y axis. Returned by [method max_axis] and [method "
+"min_axis]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:288
+msgid ""
+"Enumerated value for the Z axis. Returned by [method max_axis] and [method "
+"min_axis]."
+msgstr ""
+
+#: doc/classes/Vector3.xml:300
+msgid ""
+"Left unit vector. Represents the local direction of left, and the global "
+"direction of west."
+msgstr ""
+
+#: doc/classes/Vector3.xml:303
+msgid ""
+"Right unit vector. Represents the local direction of right, and the global "
+"direction of east."
+msgstr ""
+
+#: doc/classes/Vector3.xml:306
+msgid "Up unit vector."
+msgstr ""
+
+#: doc/classes/Vector3.xml:309
+msgid "Down unit vector."
+msgstr ""
+
+#: doc/classes/Vector3.xml:312
+msgid ""
+"Forward unit vector. Represents the local direction of forward, and the "
+"global direction of north."
+msgstr ""
+
+#: doc/classes/Vector3.xml:315
+msgid ""
+"Back unit vector. Represents the local direction of back, and the global "
+"direction of south."
+msgstr ""
+
+#: doc/classes/VehicleBody.xml:4
+msgid "Physics body that simulates the behavior of a car."
+msgstr ""
+
+#: doc/classes/VehicleBody.xml:7
+msgid ""
+"This node implements all the physics logic needed to simulate a car. It is "
+"based on the raycast vehicle system commonly found in physics engines. You "
+"will need to add a [CollisionShape] for the main body of your vehicle and "
+"add [VehicleWheel] nodes for the wheels. You should also add a "
+"[MeshInstance] to this node for the 3D model of your car but this model "
+"should not include meshes for the wheels. You should control the vehicle by "
+"using the [member brake], [member engine_force], and [member steering] "
+"properties and not change the position or orientation of this node "
+"directly.\n"
+"[b]Note:[/b] The origin point of your VehicleBody will determine the center "
+"of gravity of your vehicle so it is better to keep this low and move the "
+"[CollisionShape] and [MeshInstance] upwards.\n"
+"[b]Note:[/b] This class has known issues and isn't designed to provide "
+"realistic 3D vehicle physics. If you want advanced vehicle physics, you will "
+"probably have to write your own physics integration using another "
+"[PhysicsBody] class."
+msgstr ""
+
+#: doc/classes/VehicleBody.xml:18
+msgid ""
+"Slows down the vehicle by applying a braking force. The vehicle is only "
+"slowed down if the wheels are in contact with a surface. The force you need "
+"to apply to adequately slow down your vehicle depends on the [member "
+"RigidBody.mass] of the vehicle. For a vehicle with a mass set to 1000, try a "
+"value in the 25 - 30 range for hard braking."
+msgstr ""
+
+#: doc/classes/VehicleBody.xml:21
+msgid ""
+"Accelerates the vehicle by applying an engine force. The vehicle is only "
+"speed up if the wheels that have [member VehicleWheel.use_as_traction] set "
+"to [code]true[/code] and are in contact with a surface. The [member "
+"RigidBody.mass] of the vehicle has an effect on the acceleration of the "
+"vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - 50 "
+"range for acceleration.\n"
+"[b]Note:[/b] The simulation does not take the effect of gears into account, "
+"you will need to add logic for this if you wish to simulate gears.\n"
+"A negative value will result in the vehicle reversing."
+msgstr ""
+
+#: doc/classes/VehicleBody.xml:27
+msgid ""
+"The steering angle for the vehicle. Setting this to a non-zero value will "
+"result in the vehicle turning when it's moving. Wheels that have [member "
+"VehicleWheel.use_as_steering] set to [code]true[/code] will automatically be "
+"rotated."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:4
+msgid "Physics object that simulates the behavior of a wheel."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:7
+msgid ""
+"This node needs to be used as a child node of [VehicleBody] and simulates "
+"the behavior of one of its wheels. This node also acts as a collider to "
+"detect if the wheel is touching a surface.\n"
+"[b]Note:[/b] This class has known issues and isn't designed to provide "
+"realistic 3D vehicle physics. If you want advanced vehicle physics, you will "
+"probably have to write your own physics integration using another "
+"[PhysicsBody] class."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:17
+msgid "Returns the rotational speed of the wheel in revolutions per minute."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:23
+msgid ""
+"Returns a value between 0.0 and 1.0 that indicates whether this wheel is "
+"skidding. 0.0 is skidding (the wheel has lost grip, e.g. icy terrain), 1.0 "
+"means not skidding (the wheel has full grip, e.g. dry asphalt road)."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:29
+msgid "Returns [code]true[/code] if this wheel is in contact with a surface."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:35
+msgid ""
+"Slows down the wheel by applying a braking force. The wheel is only slowed "
+"down if it is in contact with a surface. The force you need to apply to "
+"adequately slow down your vehicle depends on the [member RigidBody.mass] of "
+"the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - "
+"30 range for hard braking."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:38
+msgid ""
+"The damping applied to the spring when the spring is being compressed. This "
+"value should be between 0.0 (no damping) and 1.0. A value of 0.0 means the "
+"car will keep bouncing as the spring keeps its energy. A good value for this "
+"is around 0.3 for a normal car, 0.5 for a race car."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:41
+msgid ""
+"The damping applied to the spring when relaxing. This value should be "
+"between 0.0 (no damping) and 1.0. This value should always be slightly "
+"higher than the [member damping_compression] property. For a [member "
+"damping_compression] value of 0.3, try a relaxation value of 0.5."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:44
+msgid ""
+"Accelerates the wheel by applying an engine force. The wheel is only speed "
+"up if it is in contact with a surface. The [member RigidBody.mass] of the "
+"vehicle has an effect on the acceleration of the vehicle. For a vehicle with "
+"a mass set to 1000, try a value in the 25 - 50 range for acceleration.\n"
+"[b]Note:[/b] The simulation does not take the effect of gears into account, "
+"you will need to add logic for this if you wish to simulate gears.\n"
+"A negative value will result in the wheel reversing."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:49
+msgid ""
+"The steering angle for the wheel. Setting this to a non-zero value will "
+"result in the vehicle turning when it's moving."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:52
+msgid ""
+"The maximum force the spring can resist. This value should be higher than a "
+"quarter of the [member RigidBody.mass] of the [VehicleBody] or the spring "
+"will not carry the weight of the vehicle. Good results are often obtained by "
+"a value that is about 3× to 4× this number."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:55
+msgid ""
+"This value defines the stiffness of the suspension. Use a value lower than "
+"50 for an off-road car, a value between 50 and 100 for a race car and try "
+"something around 200 for something like a Formula 1 car."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:58
+msgid ""
+"This is the distance the suspension can travel. As Godot units are "
+"equivalent to meters, keep this setting relatively low. Try a value between "
+"0.1 and 0.3 depending on the type of car."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:61
+msgid ""
+"If [code]true[/code], this wheel will be turned when the car steers. This "
+"value is used in conjunction with [member VehicleBody.steering] and ignored "
+"if you are using the per-wheel [member steering] value instead."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:64
+msgid ""
+"If [code]true[/code], this wheel transfers engine force to the ground to "
+"propel the vehicle forward. This value is used in conjunction with [member "
+"VehicleBody.engine_force] and ignored if you are using the per-wheel [member "
+"engine_force] value instead."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:67
+msgid ""
+"This determines how much grip this wheel has. It is combined with the "
+"friction setting of the surface the wheel is in contact with. 0.0 means no "
+"grip, 1.0 is normal grip. For a drift car setup, try setting the grip of the "
+"rear wheels slightly lower than the front wheels, or use a lower value to "
+"simulate tire wear.\n"
+"It's best to set this to 1.0 when starting out."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:71
+msgid "The radius of the wheel in meters."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:74
+msgid ""
+"This is the distance in meters the wheel is lowered from its origin point. "
+"Don't set this to 0.0 and move the wheel into position, instead move the "
+"origin point of your wheel (the gizmo in Godot) to the position the wheel "
+"will take when bottoming out, then use the rest length to move the wheel "
+"down to the position it should be in when the car is in rest."
+msgstr ""
+
+#: doc/classes/VehicleWheel.xml:77
+msgid ""
+"This value affects the roll of your vehicle. If set to 1.0 for all wheels, "
+"your vehicle will be prone to rolling over, while a value of 0.0 will resist "
+"body roll."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:4
+msgid "Control for playing video streams."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:7
+msgid ""
+"Control node for playing video streams using [VideoStream] resources.\n"
+"Supported video formats are [url=https://www.webmproject.org/]WebM[/url] "
+"([code].webm[/code], [VideoStreamWebm]), [url=https://www.theora.org/]Ogg "
+"Theora[/url] ([code].ogv[/code], [VideoStreamTheora]), and any format "
+"exposed via a GDNative plugin using [VideoStreamGDNative].\n"
+"[b]Note:[/b] Due to a bug, VideoPlayer does not support localization "
+"remapping yet.\n"
+"[b]Warning:[/b] On HTML5, video playback [i]will[/i] perform poorly due to "
+"missing architecture-specific assembly optimizations, especially for VP8/VP9."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:18
+msgid ""
+"Returns the video stream's name, or [code]\"<No Stream>\"[/code] if no video "
+"stream is assigned."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:24
+msgid "Returns the current frame as a [Texture]."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:30
+msgid ""
+"Returns [code]true[/code] if the video is playing.\n"
+"[b]Note:[/b] The video is still considered playing if paused during playback."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:37
+msgid ""
+"Starts the video playback from the beginning. If the video is paused, this "
+"will not unpause the video."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:43
+msgid ""
+"Stops the video playback and sets the stream position to 0.\n"
+"[b]Note:[/b] Although the stream position will be set to 0, the first frame "
+"of the video stream won't become the current frame."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:50
+msgid "The embedded audio track to play."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:53
+msgid "If [code]true[/code], playback starts when the scene loads."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:56
+msgid "Amount of time in milliseconds to store in buffer while playing."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:59
+msgid "Audio bus to use for sound playback."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:62
+msgid ""
+"If [code]true[/code], the video scales to the control size. Otherwise, the "
+"control minimum size will be automatically adjusted to match the video "
+"stream's dimensions."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:65
+msgid "If [code]true[/code], the video is paused."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:68
+msgid "The assigned video stream. See description for supported formats."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:71
+msgid ""
+"The current position of the stream, in seconds.\n"
+"[b]Note:[/b] Changing this value won't have any effect as seeking is not "
+"implemented yet, except in video formats implemented by a GDNative add-on."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:75
+msgid "Audio volume as a linear value."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:78
+msgid "Audio volume in dB."
+msgstr ""
+
+#: doc/classes/VideoPlayer.xml:84
+msgid "Emitted when playback is finished."
+msgstr ""
+
+#: doc/classes/VideoStream.xml:4
+msgid "Base resource for video streams."
+msgstr ""
+
+#: doc/classes/VideoStream.xml:7
+msgid ""
+"Base resource type for all video streams. Classes that derive from "
+"[VideoStream] can all be used as resource types to play back videos in "
+"[VideoPlayer]."
+msgstr ""
+
+#: modules/gdnative/doc_classes/VideoStreamGDNative.xml:4
+msgid "[VideoStream] resource for for video formats implemented via GDNative."
+msgstr ""
+
+#: modules/gdnative/doc_classes/VideoStreamGDNative.xml:7
+msgid ""
+"[VideoStream] resource for for video formats implemented via GDNative.\n"
+"It can be used via [url=https://github.com/KidRigger/godot-"
+"videodecoder]godot-videodecoder[/url] which uses the [url=https://ffmpeg."
+"org]FFmpeg[/url] library."
+msgstr ""
+
+#: modules/gdnative/doc_classes/VideoStreamGDNative.xml:16
+msgid "Returns the video file handled by this [VideoStreamGDNative]."
+msgstr ""
+
+#: modules/gdnative/doc_classes/VideoStreamGDNative.xml:23
+msgid ""
+"Sets the video file that this [VideoStreamGDNative] resource handles. The "
+"supported extensions depend on the GDNative plugins used to expose video "
+"formats."
+msgstr ""
+
+#: modules/theora/doc_classes/VideoStreamTheora.xml:4
+msgid "[VideoStream] resource for Ogg Theora videos."
+msgstr ""
+
+#: modules/theora/doc_classes/VideoStreamTheora.xml:7
+msgid ""
+"[VideoStream] resource handling the [url=https://www.theora.org/]Ogg Theora[/"
+"url] video format with [code].ogv[/code] extension. The Theora codec is less "
+"efficient than [VideoStreamWebm]'s VP8 and VP9, but it requires less CPU "
+"resources to decode. The Theora codec is decoded on the CPU.\n"
+"[b]Note:[/b] While Ogg Theora videos can also have an [code].ogg[/code] "
+"extension, you will have to rename the extension to [code].ogv[/code] to use "
+"those videos within Godot."
+msgstr ""
+
+#: modules/theora/doc_classes/VideoStreamTheora.xml:16
+msgid "Returns the Ogg Theora video file handled by this [VideoStreamTheora]."
+msgstr ""
+
+#: modules/theora/doc_classes/VideoStreamTheora.xml:23
+msgid ""
+"Sets the Ogg Theora video file that this [VideoStreamTheora] resource "
+"handles. The [code]file[/code] name should have the [code].ogv[/code] "
+"extension."
+msgstr ""
+
+#: modules/webm/doc_classes/VideoStreamWebm.xml:4
+msgid "[VideoStream] resource for WebM videos."
+msgstr ""
+
+#: modules/webm/doc_classes/VideoStreamWebm.xml:7
+msgid ""
+"[VideoStream] resource handling the [url=https://www.webmproject.org/]WebM[/"
+"url] video format with [code].webm[/code] extension. Both the VP8 and VP9 "
+"codecs are supported. The VP8 and VP9 codecs are more efficient than "
+"[VideoStreamTheora], but they require more CPU resources to decode "
+"(especially VP9). Both the VP8 and VP9 codecs are decoded on the CPU.\n"
+"[b]Note:[/b] Alpha channel (also known as transparency) is not supported. "
+"The video will always appear to have a black background, even if it "
+"originally contains an alpha channel.\n"
+"[b]Note:[/b] There are known bugs and performance issues with WebM video "
+"playback in Godot. If you run into problems, try using the Ogg Theora format "
+"instead: [VideoStreamTheora]"
+msgstr ""
+
+#: modules/webm/doc_classes/VideoStreamWebm.xml:17
+msgid "Returns the WebM video file handled by this [VideoStreamWebm]."
+msgstr ""
+
+#: modules/webm/doc_classes/VideoStreamWebm.xml:24
+msgid ""
+"Sets the WebM video file that this [VideoStreamWebm] resource handles. The "
+"[code]file[/code] name should have the [code].webm[/code] extension."
+msgstr ""
+
+#: doc/classes/Viewport.xml:4
+msgid "Creates a sub-view into the screen."
+msgstr ""
+
+#: doc/classes/Viewport.xml:7
+msgid ""
+"A Viewport creates a different view into the screen, or a sub-view inside "
+"another viewport. Children 2D Nodes will display on it, and children Camera "
+"3D nodes will render on it too.\n"
+"Optionally, a viewport can have its own 2D or 3D world, so they don't share "
+"what they draw with other viewports.\n"
+"If a viewport is a child of a [ViewportContainer], it will automatically "
+"take up its size, otherwise it must be set manually.\n"
+"Viewports can also choose to be audio listeners, so they generate positional "
+"audio depending on a 2D or 3D camera child of it.\n"
+"Also, viewports can be assigned to different screens in case the devices "
+"have multiple screens.\n"
+"Finally, viewports can also behave as render targets, in which case they "
+"will not be visible unless the associated texture is used to draw."
+msgstr ""
+
+#: doc/classes/Viewport.xml:16
+msgid "https://docs.godotengine.org/en/3.4/tutorials/viewports/index.html"
+msgstr ""
+
+#: doc/classes/Viewport.xml:18 doc/classes/ViewportTexture.xml:12
+msgid "https://godotengine.org/asset-library/asset/128"
+msgstr ""
+
+#: doc/classes/Viewport.xml:20
+msgid "https://godotengine.org/asset-library/asset/130"
+msgstr ""
+
+#: doc/classes/Viewport.xml:21
+msgid "https://godotengine.org/asset-library/asset/541"
+msgstr ""
+
+#: doc/classes/Viewport.xml:22 doc/classes/ViewportTexture.xml:14
+msgid "https://godotengine.org/asset-library/asset/586"
+msgstr ""
+
+#: doc/classes/Viewport.xml:28
+msgid ""
+"Returns the 3D world of the viewport, or if none the world of the parent "
+"viewport."
+msgstr ""
+
+#: doc/classes/Viewport.xml:34
+msgid "Returns the 2D world of the viewport."
+msgstr ""
+
+#: doc/classes/Viewport.xml:40
+msgid "Returns the active 3D camera."
+msgstr ""
+
+#: doc/classes/Viewport.xml:46
+msgid "Returns the total transform of the viewport."
+msgstr ""
+
+#: doc/classes/Viewport.xml:52
+msgid "Returns the topmost modal in the stack."
+msgstr ""
+
+#: doc/classes/Viewport.xml:58
+msgid "Returns the mouse position relative to the viewport."
+msgstr ""
+
+#: doc/classes/Viewport.xml:65
+msgid "Returns information about the viewport from the rendering pipeline."
+msgstr ""
+
+#: doc/classes/Viewport.xml:72
+msgid "Returns the [enum ShadowAtlasQuadrantSubdiv] of the specified quadrant."
+msgstr ""
+
+#: doc/classes/Viewport.xml:78
+msgid "Returns the size override set with [method set_size_override]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:84
+msgid ""
+"Returns the viewport's texture.\n"
+"[b]Note:[/b] Due to the way OpenGL works, the resulting [ViewportTexture] is "
+"flipped vertically. You can use [method Image.flip_y] on the result of "
+"[method Texture.get_data] to flip it back, for example:\n"
+"[codeblock]\n"
+"var img = get_viewport().get_texture().get_data()\n"
+"img.flip_y()\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/Viewport.xml:95
+msgid "Returns the viewport's RID from the [VisualServer]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:101
+msgid "Returns the visible rectangle in global screen coordinates."
+msgstr ""
+
+#: doc/classes/Viewport.xml:107
+msgid ""
+"Returns the drag data from the GUI, that was previously returned by [method "
+"Control.get_drag_data]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:113
+msgid "Returns [code]true[/code] if there are visible modals on-screen."
+msgstr ""
+
+#: doc/classes/Viewport.xml:119
+msgid ""
+"Returns [code]true[/code] if the viewport is currently performing a drag "
+"operation."
+msgstr ""
+
+#: doc/classes/Viewport.xml:136
+msgid ""
+"Returns [code]true[/code] if the size override is enabled. See [method "
+"set_size_override]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:143
+msgid ""
+"Attaches this [Viewport] to the root [Viewport] with the specified "
+"rectangle. This bypasses the need for another node to display this "
+"[Viewport] but makes you responsible for updating the position of this "
+"[Viewport] manually."
+msgstr ""
+
+#: doc/classes/Viewport.xml:149
+msgid "Stops the input from propagating further down the [SceneTree]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:157
+msgid ""
+"Sets the number of subdivisions to use in the specified quadrant. A higher "
+"number of subdivisions allows you to have more shadows in the scene at once, "
+"but reduces the quality of the shadows. A good practice is to have quadrants "
+"with a varying number of subdivisions and to have as few subdivisions as "
+"possible."
+msgstr ""
+
+#: doc/classes/Viewport.xml:166
+msgid ""
+"Sets the size override of the viewport. If the [code]enable[/code] parameter "
+"is [code]true[/code] the override is used, otherwise it uses the default "
+"size. If the size parameter is [code](-1, -1)[/code], it won't update the "
+"size."
+msgstr ""
+
+#: doc/classes/Viewport.xml:178
+msgid "Forces update of the 2D and 3D worlds."
+msgstr ""
+
+#: doc/classes/Viewport.xml:185
+msgid "Warps the mouse to a position relative to the viewport."
+msgstr ""
+
+#: doc/classes/Viewport.xml:191
+msgid "If [code]true[/code], the viewport will be used in AR/VR process."
+msgstr ""
+
+#: doc/classes/Viewport.xml:194
+msgid "If [code]true[/code], the viewport will process 2D audio streams."
+msgstr ""
+
+#: doc/classes/Viewport.xml:197
+msgid "If [code]true[/code], the viewport will process 3D audio streams."
+msgstr ""
+
+#: doc/classes/Viewport.xml:200
+msgid ""
+"The canvas transform of the viewport, useful for changing the on-screen "
+"positions of all child [CanvasItem]s. This is relative to the global canvas "
+"transform of the viewport."
+msgstr ""
+
+#: doc/classes/Viewport.xml:203
+msgid ""
+"If [code]true[/code], uses a fast post-processing filter to make banding "
+"significantly less visible. In some cases, debanding may introduce a "
+"slightly noticeable dithering pattern. It's recommended to enable debanding "
+"only when actually needed since the dithering pattern will make lossless-"
+"compressed screenshots larger.\n"
+"[b]Note:[/b] Only available on the GLES3 backend. [member hdr] must also be "
+"[code]true[/code] for debanding to be effective."
+msgstr ""
+
+#: doc/classes/Viewport.xml:207
+msgid "The overlay mode for test rendered geometry in debug purposes."
+msgstr ""
+
+#: doc/classes/Viewport.xml:210
+msgid ""
+"If [code]true[/code], the viewport will disable 3D rendering. For actual "
+"disabling use [code]usage[/code]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:213
+msgid ""
+"Enables fast approximate antialiasing. FXAA is a popular screen-space "
+"antialiasing method, which is fast but will make the image look blurry, "
+"especially at lower resolutions. It can still work relatively well at large "
+"resolutions such as 1440p and 4K. Some of the lost sharpness can be "
+"recovered by enabling contrast-adaptive sharpening (see [member "
+"sharpen_intensity])."
+msgstr ""
+
+#: doc/classes/Viewport.xml:216
+msgid ""
+"The global canvas transform of the viewport. The canvas transform is "
+"relative to this."
+msgstr ""
+
+#: doc/classes/Viewport.xml:219
+msgid "If [code]true[/code], the viewport will not receive input events."
+msgstr ""
+
+#: doc/classes/Viewport.xml:222
+msgid ""
+"If [code]true[/code], the GUI controls on the viewport will lay pixel "
+"perfectly."
+msgstr ""
+
+#: doc/classes/Viewport.xml:227
+msgid ""
+"If [code]true[/code], the viewport rendering will receive benefits from High "
+"Dynamic Range algorithm. High Dynamic Range allows the viewport to receive "
+"values that are outside the 0-1 range. In Godot HDR uses 16 bits, meaning it "
+"does not store the full range of a floating point number.\n"
+"[b]Note:[/b] Requires [member usage] to be set to [constant USAGE_3D] or "
+"[constant USAGE_3D_NO_EFFECTS], since HDR is not supported for 2D."
+msgstr ""
+
+#: doc/classes/Viewport.xml:231
+msgid ""
+"If [code]true[/code], the result after 3D rendering will not have a linear "
+"to sRGB color conversion applied. This is important when the viewport is "
+"used as a render target where the result is used as a texture on a 3D object "
+"rendered in another viewport. It is also important if the viewport is used "
+"to create data that is not color based (noise, heightmaps, pickmaps, etc.). "
+"Do not enable this when the viewport is used as a texture on a 2D object or "
+"if the viewport is your final output. For the GLES2 driver this will convert "
+"the sRGB output to linear, this should only be used for VR plugins that "
+"require input in linear color space!"
+msgstr ""
+
+#: doc/classes/Viewport.xml:234
+msgid ""
+"The multisample anti-aliasing mode. A higher number results in smoother "
+"edges at the cost of significantly worse performance. A value of 4 is best "
+"unless targeting very high-end systems."
+msgstr ""
+
+#: doc/classes/Viewport.xml:237
+msgid ""
+"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
+"code] property."
+msgstr ""
+
+#: doc/classes/Viewport.xml:240
+msgid ""
+"If [code]true[/code], the objects rendered by viewport become subjects of "
+"mouse picking process."
+msgstr ""
+
+#: doc/classes/Viewport.xml:243
+msgid ""
+"If [code]true[/code], renders the Viewport directly to the screen instead of "
+"to the root viewport. Only available in GLES2. This is a low-level "
+"optimization and should not be used in most cases. If used, reading from the "
+"Viewport or from [code]SCREEN_TEXTURE[/code] becomes unavailable. For more "
+"information see [method VisualServer.viewport_set_render_direct_to_screen]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:246
+msgid ""
+"The clear mode when viewport used as a render target.\n"
+"[b]Note:[/b] This property is intended for 2D usage."
+msgstr ""
+
+#: doc/classes/Viewport.xml:250
+msgid "The update mode when viewport used as a render target."
+msgstr ""
+
+#: doc/classes/Viewport.xml:253
+msgid ""
+"If [code]true[/code], the result of rendering will be flipped vertically."
+msgstr ""
+
+#: doc/classes/Viewport.xml:256
+msgid "The subdivision amount of the first quadrant on the shadow atlas."
+msgstr ""
+
+#: doc/classes/Viewport.xml:259
+msgid "The subdivision amount of the second quadrant on the shadow atlas."
+msgstr ""
+
+#: doc/classes/Viewport.xml:262
+msgid "The subdivision amount of the third quadrant on the shadow atlas."
+msgstr ""
+
+#: doc/classes/Viewport.xml:265
+msgid "The subdivision amount of the fourth quadrant on the shadow atlas."
+msgstr ""
+
+#: doc/classes/Viewport.xml:268
+msgid ""
+"The shadow atlas' resolution (used for omni and spot lights). The value will "
+"be rounded up to the nearest power of 2.\n"
+"[b]Note:[/b] If this is set to 0, shadows won't be visible. Since user-"
+"created viewports default to a value of 0, this value must be set above 0 "
+"manually."
+msgstr ""
+
+#: doc/classes/Viewport.xml:272
+msgid ""
+"If set to a value greater than [code]0.0[/code], contrast-adaptive "
+"sharpening will be applied to the 3D viewport. This has a low performance "
+"cost and can be used to recover some of the sharpness lost from using FXAA. "
+"Values around [code]0.5[/code] generally give the best results. See also "
+"[member fxaa]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:275
+msgid ""
+"The width and height of viewport. Must be set to a value greater than or "
+"equal to 2 pixels on both dimensions. Otherwise, nothing will be displayed."
+msgstr ""
+
+#: doc/classes/Viewport.xml:278
+msgid "If [code]true[/code], the size override affects stretch as well."
+msgstr ""
+
+#: doc/classes/Viewport.xml:281
+msgid ""
+"If [code]true[/code], the viewport should render its background as "
+"transparent."
+msgstr ""
+
+#: doc/classes/Viewport.xml:284
+msgid "The rendering mode of viewport."
+msgstr ""
+
+#: doc/classes/Viewport.xml:287
+msgid "The custom [World] which can be used as 3D environment source."
+msgstr ""
+
+#: doc/classes/Viewport.xml:290
+msgid "The custom [World2D] which can be used as 2D environment source."
+msgstr ""
+
+#: doc/classes/Viewport.xml:297
+msgid "Emitted when a Control node grabs keyboard focus."
+msgstr ""
+
+#: doc/classes/Viewport.xml:302
+msgid ""
+"Emitted when the size of the viewport is changed, whether by [method "
+"set_size_override], resize of window, or some other means."
+msgstr ""
+
+#: doc/classes/Viewport.xml:308
+msgid "Do not update the render target."
+msgstr ""
+
+#: doc/classes/Viewport.xml:311
+msgid ""
+"Update the render target once, then switch to [constant UPDATE_DISABLED]."
+msgstr ""
+
+#: doc/classes/Viewport.xml:314
+msgid ""
+"Update the render target only when it is visible. This is the default value."
+msgstr ""
+
+#: doc/classes/Viewport.xml:317
+msgid "Always update the render target."
+msgstr ""
+
+#: doc/classes/Viewport.xml:320
+msgid "This quadrant will not be used."
+msgstr ""
+
+#: doc/classes/Viewport.xml:323
+msgid "This quadrant will only be used by one shadow map."
+msgstr ""
+
+#: doc/classes/Viewport.xml:326
+msgid "This quadrant will be split in 4 and used by up to 4 shadow maps."
+msgstr ""
+
+#: doc/classes/Viewport.xml:329
+msgid "This quadrant will be split 16 ways and used by up to 16 shadow maps."
+msgstr ""
+
+#: doc/classes/Viewport.xml:332
+msgid "This quadrant will be split 64 ways and used by up to 64 shadow maps."
+msgstr ""
+
+#: doc/classes/Viewport.xml:335
+msgid ""
+"This quadrant will be split 256 ways and used by up to 256 shadow maps. "
+"Unless the [member shadow_atlas_size] is very high, the shadows in this "
+"quadrant will be very low resolution."
+msgstr ""
+
+#: doc/classes/Viewport.xml:338
+msgid ""
+"This quadrant will be split 1024 ways and used by up to 1024 shadow maps. "
+"Unless the [member shadow_atlas_size] is very high, the shadows in this "
+"quadrant will be very low resolution."
+msgstr ""
+
+#: doc/classes/Viewport.xml:341
+msgid "Represents the size of the [enum ShadowAtlasQuadrantSubdiv] enum."
+msgstr ""
+
+#: doc/classes/Viewport.xml:344
+msgid "Amount of objects in frame."
+msgstr ""
+
+#: doc/classes/Viewport.xml:347
+msgid "Amount of vertices in frame."
+msgstr ""
+
+#: doc/classes/Viewport.xml:350
+msgid "Amount of material changes in frame."
+msgstr ""
+
+#: doc/classes/Viewport.xml:353
+msgid "Amount of shader changes in frame."
+msgstr ""
+
+#: doc/classes/Viewport.xml:356
+msgid "Amount of surface changes in frame."
+msgstr ""
+
+#: doc/classes/Viewport.xml:359 doc/classes/Viewport.xml:365
+msgid "Amount of draw calls in frame."
+msgstr ""
+
+#: doc/classes/Viewport.xml:362
+msgid "Amount of items or joined items in frame."
+msgstr ""
+
+#: doc/classes/Viewport.xml:368
+msgid "Represents the size of the [enum RenderInfo] enum."
+msgstr ""
+
+#: doc/classes/Viewport.xml:371
+msgid "Objects are displayed normally."
+msgstr ""
+
+#: doc/classes/Viewport.xml:374
+msgid "Objects are displayed without light information."
+msgstr ""
+
+#: doc/classes/Viewport.xml:377
+msgid ""
+"Objected are displayed semi-transparent with additive blending so you can "
+"see where they intersect."
+msgstr ""
+
+#: doc/classes/Viewport.xml:380
+msgid "Objects are displayed in wireframe style."
+msgstr ""
+
+#: doc/classes/Viewport.xml:383
+msgid "Multisample anti-aliasing mode disabled. This is the default value."
+msgstr ""
+
+#: doc/classes/Viewport.xml:386
+msgid "Use 2x Multisample Antialiasing."
+msgstr ""
+
+#: doc/classes/Viewport.xml:389
+msgid "Use 4x Multisample Antialiasing."
+msgstr ""
+
+#: doc/classes/Viewport.xml:392
+msgid ""
+"Use 8x Multisample Antialiasing. Likely unsupported on low-end and older "
+"hardware."
+msgstr ""
+
+#: doc/classes/Viewport.xml:395
+msgid ""
+"Use 16x Multisample Antialiasing. Likely unsupported on medium and low-end "
+"hardware."
+msgstr ""
+
+#: doc/classes/Viewport.xml:398
+msgid ""
+"Allocates all buffers needed for drawing 2D scenes. This takes less VRAM "
+"than the 3D usage modes. Note that 3D rendering effects such as glow and HDR "
+"are not available when using this mode."
+msgstr ""
+
+#: doc/classes/Viewport.xml:401
+msgid ""
+"Allocates buffers needed for 2D scenes without allocating a buffer for "
+"screen copy. Accordingly, you cannot read from the screen. Of the [enum "
+"Usage] types, this requires the least VRAM. Note that 3D rendering effects "
+"such as glow and HDR are not available when using this mode."
+msgstr ""
+
+#: doc/classes/Viewport.xml:404
+msgid ""
+"Allocates full buffers for drawing 3D scenes and all 3D effects including "
+"buffers needed for 2D scenes and effects."
+msgstr ""
+
+#: doc/classes/Viewport.xml:407
+msgid ""
+"Allocates buffers needed for drawing 3D scenes. But does not allocate "
+"buffers needed for reading from the screen and post-processing effects. "
+"Saves some VRAM."
+msgstr ""
+
+#: doc/classes/Viewport.xml:410
+msgid "Always clear the render target before drawing."
+msgstr ""
+
+#: doc/classes/Viewport.xml:413
+msgid "Never clear the render target."
+msgstr ""
+
+#: doc/classes/Viewport.xml:416
+msgid ""
+"Clear the render target next frame, then switch to [constant "
+"CLEAR_MODE_NEVER]."
+msgstr ""
+
+#: doc/classes/ViewportContainer.xml:4
+msgid "Control for holding [Viewport]s."
+msgstr ""
+
+#: doc/classes/ViewportContainer.xml:7
+msgid ""
+"A [Container] node that holds a [Viewport], automatically setting its size.\n"
+"[b]Note:[/b] Changing a ViewportContainer's [member Control.rect_scale] will "
+"cause its contents to appear distorted. To change its visual size without "
+"causing distortion, adjust the node's margins instead (if it's not already "
+"in a container)."
+msgstr ""
+
+#: doc/classes/ViewportContainer.xml:16
+msgid ""
+"If [code]true[/code], the viewport will be scaled to the control's size."
+msgstr ""
+
+#: doc/classes/ViewportContainer.xml:19
+msgid ""
+"Divides the viewport's effective resolution by this value while preserving "
+"its scale. This can be used to speed up rendering.\n"
+"For example, a 1280×720 viewport with [member stretch_shrink] set to "
+"[code]2[/code] will be rendered at 640×360 while occupying the same size in "
+"the container.\n"
+"[b]Note:[/b] [member stretch] must be [code]true[/code] for this property to "
+"work."
+msgstr ""
+
+#: doc/classes/ViewportTexture.xml:4
+msgid "Texture which displays the content of a [Viewport]."
+msgstr ""
+
+#: doc/classes/ViewportTexture.xml:7
+msgid ""
+"Displays the content of a [Viewport] node as a dynamic [Texture]. This can "
+"be used to mix controls, 2D, and 3D elements in the same scene.\n"
+"To create a ViewportTexture in code, use the [method Viewport.get_texture] "
+"method on the target viewport."
+msgstr ""
+
+#: doc/classes/ViewportTexture.xml:22
+msgid ""
+"The path to the [Viewport] node to display. This is relative to the scene "
+"root, not to the node which uses the texture."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:4 doc/classes/VisibilityEnabler2D.xml:4
+msgid "Enables certain nodes only when approximately visible."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:7
+msgid ""
+"The VisibilityEnabler will disable [RigidBody] and [AnimationPlayer] nodes "
+"when they are not visible. It will only affect other nodes within the same "
+"scene as the VisibilityEnabler itself.\n"
+"If you just want to receive notifications, use [VisibilityNotifier] "
+"instead.\n"
+"[b]Note:[/b] VisibilityEnabler uses an approximate heuristic for performance "
+"reasons. It doesn't take walls and other occlusion into account. The "
+"heuristic is an implementation detail and may change in future versions. If "
+"you need precise visibility checking, use another method such as adding an "
+"[Area] node as a child of a [Camera] node and/or [method Vector3.dot].\n"
+"[b]Note:[/b] VisibilityEnabler will not affect nodes added after scene "
+"initialization."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:19 doc/classes/VisibilityEnabler2D.xml:19
+msgid ""
+"Returns whether the enabler identified by given [enum Enabler] constant is "
+"active."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:27 doc/classes/VisibilityEnabler2D.xml:27
+msgid ""
+"Sets active state of the enabler identified by given [enum Enabler] constant."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:33
+msgid "If [code]true[/code], [RigidBody] nodes will be paused."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:36 doc/classes/VisibilityEnabler2D.xml:39
+msgid "If [code]true[/code], [AnimationPlayer] nodes will be paused."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:41 doc/classes/VisibilityEnabler2D.xml:53
+msgid "This enabler will pause [AnimationPlayer] nodes."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:44
+msgid "This enabler will freeze [RigidBody] nodes."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler.xml:47 doc/classes/VisibilityEnabler2D.xml:71
+msgid "Represents the size of the [enum Enabler] enum."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:7
+msgid ""
+"The VisibilityEnabler2D will disable [RigidBody2D], [AnimationPlayer], and "
+"other nodes when they are not visible. It will only affect nodes with the "
+"same root node as the VisibilityEnabler2D, and the root node itself.\n"
+"If you just want to receive notifications, use [VisibilityNotifier2D] "
+"instead.\n"
+"[b]Note:[/b] For performance reasons, VisibilityEnabler2D uses an "
+"approximate heuristic with precision determined by [member ProjectSettings."
+"world/2d/cell_size]. If you need precise visibility checking, use another "
+"method such as adding an [Area2D] node as a child of a [Camera2D] node.\n"
+"[b]Note:[/b] VisibilityEnabler2D will not affect nodes added after scene "
+"initialization."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:33
+msgid "If [code]true[/code], [RigidBody2D] nodes will be paused."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:36
+msgid "If [code]true[/code], [AnimatedSprite] nodes will be paused."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:42
+msgid "If [code]true[/code], [Particles2D] nodes will be paused."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:45
+msgid ""
+"If [code]true[/code], the parent's [method Node._physics_process] will be "
+"stopped."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:48
+msgid ""
+"If [code]true[/code], the parent's [method Node._process] will be stopped."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:56
+msgid "This enabler will freeze [RigidBody2D] nodes."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:59
+msgid "This enabler will stop [Particles2D] nodes."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:62
+msgid "This enabler will stop the parent's _process function."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:65
+msgid "This enabler will stop the parent's _physics_process function."
+msgstr ""
+
+#: doc/classes/VisibilityEnabler2D.xml:68
+msgid "This enabler will stop [AnimatedSprite] nodes animations."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml:4 doc/classes/VisibilityNotifier2D.xml:4
+msgid "Detects approximately when the node is visible on screen."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml:7
+msgid ""
+"The VisibilityNotifier detects when it is visible on the screen. It also "
+"notifies when its bounding rectangle enters or exits the screen or a "
+"[Camera]'s view.\n"
+"If you want nodes to be disabled automatically when they exit the screen, "
+"use [VisibilityEnabler] instead.\n"
+"[b]Note:[/b] VisibilityNotifier uses an approximate heuristic for "
+"performance reasons. It doesn't take walls and other occlusion into account. "
+"The heuristic is an implementation detail and may change in future versions. "
+"If you need precise visibility checking, use another method such as adding "
+"an [Area] node as a child of a [Camera] node and/or [method Vector3.dot]."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml:17
+msgid ""
+"If [code]true[/code], the bounding box is on the screen.\n"
+"[b]Note:[/b] It takes one frame for the node's visibility to be assessed "
+"once added to the scene tree, so this method will return [code]false[/code] "
+"right after it is instantiated, even if it will be on screen in the draw "
+"pass."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml:24
+msgid "The VisibilityNotifier's bounding box."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml:31
+msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml:37
+msgid "Emitted when the VisibilityNotifier exits a [Camera]'s view."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml:42
+msgid "Emitted when the VisibilityNotifier enters the screen."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml:47
+msgid "Emitted when the VisibilityNotifier exits the screen."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier2D.xml:7
+msgid ""
+"The VisibilityNotifier2D detects when it is visible on the screen. It also "
+"notifies when its bounding rectangle enters or exits the screen or a "
+"viewport.\n"
+"If you want nodes to be disabled automatically when they exit the screen, "
+"use [VisibilityEnabler2D] instead.\n"
+"[b]Note:[/b] For performance reasons, VisibilityNotifier2D uses an "
+"approximate heuristic with precision determined by [member ProjectSettings."
+"world/2d/cell_size]. If you need precise visibility checking, use another "
+"method such as adding an [Area2D] node as a child of a [Camera2D] node."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier2D.xml:18
+msgid ""
+"If [code]true[/code], the bounding rectangle is on the screen.\n"
+"[b]Note:[/b] It takes one frame for the node's visibility to be assessed "
+"once added to the scene tree, so this method will return [code]false[/code] "
+"right after it is instantiated, even if it will be on screen in the draw "
+"pass."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier2D.xml:25
+msgid "The VisibilityNotifier2D's bounding rectangle."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier2D.xml:31
+msgid "Emitted when the VisibilityNotifier2D enters the screen."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier2D.xml:36
+msgid "Emitted when the VisibilityNotifier2D exits the screen."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier2D.xml:42
+msgid "Emitted when the VisibilityNotifier2D enters a [Viewport]'s view."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier2D.xml:48
+msgid "Emitted when the VisibilityNotifier2D exits a [Viewport]'s view."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:4
+msgid "Parent of all visual 3D nodes."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:7
+msgid ""
+"The [VisualInstance] is used to connect a resource to a visual "
+"representation. All visual 3D nodes inherit from the [VisualInstance]. In "
+"general, you should not access the [VisualInstance] properties directly as "
+"they are accessed and managed by the nodes that inherit from "
+"[VisualInstance]. [VisualInstance] is the node representation of the "
+"[VisualServer] instance."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:15
+msgid ""
+"Returns the [AABB] (also known as the bounding box) for this "
+"[VisualInstance]. See also [method get_transformed_aabb]."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:21
+msgid ""
+"Returns the RID of the resource associated with this [VisualInstance]. For "
+"example, if the Node is a [MeshInstance], this will return the RID of the "
+"associated [Mesh]."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:27
+msgid ""
+"Returns the RID of this instance. This RID is the same as the RID returned "
+"by [method VisualServer.instance_create]. This RID is needed if you want to "
+"call [VisualServer] functions directly on this [VisualInstance]."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:34
+msgid ""
+"Returns [code]true[/code] when the specified layer is enabled in [member "
+"layers] and [code]false[/code] otherwise."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:40
+msgid ""
+"Returns the transformed [AABB] (also known as the bounding box) for this "
+"[VisualInstance].\n"
+"Transformed in this case means the [AABB] plus the position, rotation, and "
+"scale of the [Spatial]'s [Transform]. See also [method get_aabb]."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:48
+msgid ""
+"Sets the resource that is instantiated by this [VisualInstance], which "
+"changes how the engine handles the [VisualInstance] under the hood. "
+"Equivalent to [method VisualServer.instance_set_base]."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:56
+msgid "Enables a particular layer in [member layers]."
+msgstr ""
+
+#: doc/classes/VisualInstance.xml:62
+msgid ""
+"The render layer(s) this [VisualInstance] is drawn on.\n"
+"This object will only be visible for [Camera]s whose cull mask includes the "
+"render object this [VisualInstance] is set to."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:4
+msgid "A script implemented in the Visual Script programming environment."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:7
+msgid ""
+"A script implemented in the Visual Script programming environment. The "
+"script extends the functionality of all objects that instance it.\n"
+"[method Object.set_script] extends an existing object, if that object's "
+"class matches one of the script's base classes.\n"
+"You are most likely to use this class via the Visual Script editor or when "
+"writing plugins for it."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:12
+msgid ""
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/visual_script/"
+"index.html"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:19
+msgid "Add a custom signal with the specified name to the VisualScript."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:26
+msgid "Add a function with the specified name to the VisualScript."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:36
+msgid "Add a node to a function of the VisualScript."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:45
+msgid ""
+"Add a variable to the VisualScript, optionally giving it a default value or "
+"marking it as exported."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:55
+msgid ""
+"Add an argument to a custom signal added with [method add_custom_signal]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:62
+msgid "Get the count of a custom signal's arguments."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:70
+msgid "Get the name of a custom signal's argument."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:78
+msgid "Get the type of a custom signal's argument."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:86
+msgid "Remove a specific custom signal's argument."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:95
+msgid "Rename a custom signal's argument."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:104
+msgid "Change the type of a custom signal's argument."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:113
+msgid "Swap two of the arguments of a custom signal."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:124
+msgid ""
+"Connect two data ports. The value of [code]from_node[/code]'s "
+"[code]from_port[/code] would be fed into [code]to_node[/code]'s "
+"[code]to_port[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:135
+msgid ""
+"Disconnect two data ports previously connected with [method data_connect]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:142
+msgid "Returns the id of a function's entry point node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:149
+msgid "Returns the position of the center of the screen for a given function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:157
+msgid "Returns a node given its id and its function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:165
+msgid "Returns a node's position in pixels."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:172
+msgid "Returns the default (initial) value of a variable."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:179
+msgid "Returns whether a variable is exported."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:186
+msgid ""
+"Returns the information for a given variable as a dictionary. The "
+"information includes its name, type, hint and usage."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:193
+msgid "Returns whether a signal exists with the specified name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:204
+msgid "Returns whether the specified data ports are connected."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:211
+msgid "Returns whether a function exists with the specified name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:219
+msgid "Returns whether a node exists with the given id."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:229
+msgid "Returns whether the specified sequence ports are connected."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:236
+msgid "Returns whether a variable exists with the specified name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:243
+msgid "Remove a custom signal with the given name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:250
+msgid "Remove a specific function and its nodes from the script."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:258
+msgid "Remove a specific node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:265
+msgid "Remove a variable with the given name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:273
+msgid "Change the name of a custom signal."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:281
+msgid "Change the name of a function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:289
+msgid "Change the name of a variable."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:299
+msgid ""
+"Connect two sequence ports. The execution will flow from of [code]from_node[/"
+"code]'s [code]from_output[/code] into [code]to_node[/code].\n"
+"Unlike [method data_connect], there isn't a [code]to_port[/code], since the "
+"target node can have only one sequence port."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:310
+msgid ""
+"Disconnect two sequence ports previously connected with [method "
+"sequence_connect]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:318
+msgid "Position the center of the screen for a function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:325
+msgid "Set the base type of the script."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:334
+msgid "Position a node on the screen."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:342
+msgid "Change the default (initial) value of a variable."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:350
+msgid "Change whether a variable is exported."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:358
+msgid ""
+"Set a variable's info, using the same format as [method get_variable_info]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScript.xml:367
+msgid "Emitted when the ports of a node are changed."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml:4
+msgid "A Visual Script node representing a constant from the base types."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml:7
+msgid ""
+"A Visual Script node representing a constant from base types, such as "
+"[constant Vector3.AXIS_X]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml:15
+msgid "The type to get the constant from."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml:18
+msgid "The name of the constant to return."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:4
+msgid "A Visual Script node used to call built-in functions."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:7
+msgid ""
+"A built-in function used inside a [VisualScript]. It is usually a math "
+"function or an utility function.\n"
+"See also [@GDScript], for the same functions in the GDScript language."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:16
+msgid "The function to be executed."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:21
+msgid "Return the sine of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:24
+msgid "Return the cosine of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:27
+msgid "Return the tangent of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:30
+msgid "Return the hyperbolic sine of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:33
+msgid "Return the hyperbolic cosine of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:36
+msgid "Return the hyperbolic tangent of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:39
+msgid "Return the arc sine of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:42
+msgid "Return the arc cosine of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:45
+msgid "Return the arc tangent of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:48
+msgid ""
+"Return the arc tangent of the input, using the signs of both parameters to "
+"determine the exact angle."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:51
+msgid "Return the square root of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:54
+msgid ""
+"Return the remainder of one input divided by the other, using floating-point "
+"numbers."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:57
+msgid ""
+"Return the positive remainder of one input divided by the other, using "
+"floating-point numbers."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:60
+msgid "Return the input rounded down."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:63
+msgid "Return the input rounded up."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:66
+msgid "Return the input rounded to the nearest integer."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:69
+msgid "Return the absolute value of the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:72
+msgid ""
+"Return the sign of the input, turning it into 1, -1, or 0. Useful to "
+"determine if the input is positive or negative."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:75
+msgid "Return the input raised to a given power."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:78
+msgid ""
+"Return the natural logarithm of the input. Note that this is not the typical "
+"base-10 logarithm function calculators use."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:81
+msgid ""
+"Return the mathematical constant [b]e[/b] raised to the specified power of "
+"the input. [b]e[/b] has an approximate value of 2.71828."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:84
+msgid ""
+"Return whether the input is NaN (Not a Number) or not. NaN is usually "
+"produced by dividing 0 by 0, though other ways exist."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:87
+msgid ""
+"Return whether the input is an infinite floating-point number or not. "
+"Infinity is usually produced by dividing a number by 0, though other ways "
+"exist."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:90
+msgid ""
+"Easing function, based on exponent. 0 is constant, 1 is linear, 0 to 1 is "
+"ease-in, 1+ is ease out. Negative values are in-out/out in."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:93
+msgid ""
+"Return the number of digit places after the decimal that the first non-zero "
+"digit occurs."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:96
+msgid "Return the input snapped to a given step."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:99
+msgid ""
+"Return a number linearly interpolated between the first two inputs, based on "
+"the third input. Uses the formula [code]a + (a - b) * t[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:106
+msgid "Moves the number toward a value, based on the third input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:109
+msgid ""
+"Return the result of [code]value[/code] decreased by [code]step[/code] * "
+"[code]amount[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:112
+msgid ""
+"Randomize the seed (or the internal state) of the random number generator. "
+"Current implementation reseeds using a number based on time."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:115
+msgid ""
+"Return a random 32 bits integer value. To obtain a random value between 0 to "
+"N (where N is smaller than 2^32 - 1), you can use it with the remainder "
+"function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:118
+msgid ""
+"Return a random floating-point value between 0 and 1. To obtain a random "
+"value between 0 to N, you can use it with multiplication."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:121
+msgid "Return a random floating-point value between the two inputs."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:124
+msgid "Set the seed for the random number generator."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:127
+msgid "Return a random value from the given seed, along with the new seed."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:130
+msgid "Convert the input from degrees to radians."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:133
+msgid "Convert the input from radians to degrees."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:136
+msgid "Convert the input from linear volume to decibel volume."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:139
+msgid "Convert the input from decibel volume to linear volume."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:152
+msgid "Return the greater of the two numbers, also known as their maximum."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:155
+msgid "Return the lesser of the two numbers, also known as their minimum."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:158
+msgid ""
+"Return the input clamped inside the given range, ensuring the result is "
+"never outside it. Equivalent to [code]min(max(input, range_low), range_high)"
+"[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:161
+msgid "Return the nearest power of 2 to the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:164
+msgid "Create a [WeakRef] from the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:167
+msgid "Create a [FuncRef] from the input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:170
+msgid "Convert between types."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:173
+msgid ""
+"Return the type of the input as an integer. Check [enum Variant.Type] for "
+"the integers that might be returned."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:176
+msgid "Checks if a type is registered in the [ClassDB]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:179
+msgid "Return a character with the given ascii value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:182
+msgid "Convert the input to a string."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:185
+msgid "Print the given string to the output window."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:188
+msgid "Print the given string to the standard error output."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:191
+msgid ""
+"Print the given string to the standard output, without adding a newline."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:194
+msgid "Serialize a [Variant] to a string."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:197
+msgid ""
+"Deserialize a [Variant] from a string serialized using [constant VAR_TO_STR]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:200
+msgid "Serialize a [Variant] to a [PoolByteArray]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:203
+msgid ""
+"Deserialize a [Variant] from a [PoolByteArray] serialized using [constant "
+"VAR_TO_BYTES]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:206
+msgid ""
+"Return the [Color] with the given name and alpha ranging from 0 to 1.\n"
+"[b]Note:[/b] Names are defined in [code]color_names.inc[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:210
+msgid ""
+"Return a number smoothly interpolated between the first two inputs, based on "
+"the third input. Similar to [constant MATH_LERP], but interpolates faster at "
+"the beginning and slower at the end. Using Hermite interpolation formula:\n"
+"[codeblock]\n"
+"var t = clamp((weight - from) / (to - from), 0.0, 1.0)\n"
+"return t * t * (3.0 - 2.0 * t)\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:223
+msgid "Represents the size of the [enum BuiltinFunc] enum."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptClassConstant.xml:4
+msgid "Gets a constant from a given class."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptClassConstant.xml:7
+msgid ""
+"This node returns a constant from a given class, such as [constant "
+"TYPE_INT]. See the given class' documentation for available constants.\n"
+"[b]Input Ports:[/b]\n"
+"none\n"
+"[b]Output Ports:[/b]\n"
+"- Data (variant): [code]value[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptClassConstant.xml:19
+msgid "The constant's parent class."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptClassConstant.xml:22
+msgid ""
+"The constant to return. See the given class for its available constants."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptComment.xml:4
+msgid "A Visual Script node used to annotate the script."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptComment.xml:7
+msgid ""
+"A Visual Script node used to display annotations in the script, so that code "
+"may be documented.\n"
+"Comment nodes can be resized so they encompass a group of nodes."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptComment.xml:16
+msgid "The text inside the comment node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptComment.xml:19
+msgid "The comment node's size (in pixels)."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptComment.xml:22
+msgid "The comment node's title."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptComposeArray.xml:4
+msgid "A Visual Script Node used to create array from a list of items."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptComposeArray.xml:7
+msgid ""
+"A Visual Script Node used to compose array from the list of elements "
+"provided with custom in-graph UI hard coded in the VisualScript Editor."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCondition.xml:4
+msgid "A Visual Script node which branches the flow."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCondition.xml:7
+msgid ""
+"A Visual Script node that checks a [bool] input port. If [code]true[/code], "
+"it will exit via the \"true\" sequence port. If [code]false[/code], it will "
+"exit via the \"false\" sequence port. After exiting either, it exits via the "
+"\"done\" port. Sequence ports may be left disconnected.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence: [code]if (cond) is[/code]\n"
+"- Data (boolean): [code]cond[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Sequence: [code]true[/code]\n"
+"- Sequence: [code]false[/code]\n"
+"- Sequence: [code]done[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptConstant.xml:4
+msgid "Gets a contant's value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptConstant.xml:7
+msgid ""
+"This node returns a constant's value.\n"
+"[b]Input Ports:[/b]\n"
+"none\n"
+"[b]Output Ports:[/b]\n"
+"- Data (variant): [code]get[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptConstant.xml:19
+msgid "The constant's type."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptConstant.xml:22
+msgid "The constant's value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptConstructor.xml:4
+msgid "A Visual Script node which calls a base type constructor."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptConstructor.xml:7
+msgid ""
+"A Visual Script node which calls a base type constructor. It can be used for "
+"type conversion as well."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:4
+msgid "A scripted Visual Script node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:7
+msgid "A custom Visual Script node which can be scripted in powerful ways."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:15
+msgid "Return the node's title."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:21
+msgid "Return the node's category."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:27
+msgid "Return the count of input value ports."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:34
+msgid ""
+"Return the specified input port's hint. See the [enum @GlobalScope."
+"PropertyHint] hints."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:41
+msgid "Return the specified input port's hint string."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:48
+msgid "Return the specified input port's name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:55
+msgid ""
+"Return the specified input port's type. See the [enum Variant.Type] values."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:61
+msgid "Return the amount of output [b]sequence[/b] ports."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:68
+msgid "Return the specified [b]sequence[/b] output's name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:74
+msgid "Return the amount of output value ports."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:81
+msgid ""
+"Return the specified output port's hint. See the [enum @GlobalScope."
+"PropertyHint] hints."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:88
+msgid "Return the specified output port's hint string."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:95
+msgid "Return the specified output port's name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:102
+msgid ""
+"Return the specified output port's type. See the [enum Variant.Type] values."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:108
+msgid ""
+"Return the custom node's text, which is shown right next to the input "
+"[b]sequence[/b] port (if there is none, on the place that is usually taken "
+"by it)."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:114
+msgid ""
+"Return the size of the custom node's working memory. See [method _step] for "
+"more details."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:120
+msgid "Return whether the custom node has an input [b]sequence[/b] port."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:130
+msgid ""
+"Execute the custom node's logic, returning the index of the output sequence "
+"port to use or a [String] when there is an error.\n"
+"The [code]inputs[/code] array contains the values of the input ports.\n"
+"[code]outputs[/code] is an array whose indices should be set to the "
+"respective outputs.\n"
+"The [code]start_mode[/code] is usually [constant START_MODE_BEGIN_SEQUENCE], "
+"unless you have used the [code]STEP_*[/code] constants.\n"
+"[code]working_mem[/code] is an array which can be used to persist "
+"information between runs of the custom node. The size needs to be predefined "
+"using [method _get_working_memory_size].\n"
+"When returning, you can mask the returned value with one of the "
+"[code]STEP_*[/code] constants."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:141
+msgid "The start mode used the first time when [method _step] is called."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:144
+msgid ""
+"The start mode used when [method _step] is called after coming back from a "
+"[constant STEP_PUSH_STACK_BIT]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:147
+msgid ""
+"The start mode used when [method _step] is called after resuming from "
+"[constant STEP_YIELD_BIT]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:150
+msgid ""
+"Hint used by [method _step] to tell that control should return to it when "
+"there is no other node left to execute.\n"
+"This is used by [VisualScriptCondition] to redirect the sequence to the "
+"\"Done\" port after the [code]true[/code]/[code]false[/code] branch has "
+"finished execution."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:154
+msgid ""
+"Hint used by [method _step] to tell that control should return back, either "
+"hitting a previous [constant STEP_PUSH_STACK_BIT] or exiting the function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:159
+msgid ""
+"Hint used by [method _step] to tell that control should stop and exit the "
+"function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:162
+msgid ""
+"Hint used by [method _step] to tell that the function should be yielded.\n"
+"Using this requires you to have at least one working memory slot, which is "
+"used for the [VisualScriptFunctionState]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptDeconstruct.xml:4
+#: modules/visual_script/doc_classes/VisualScriptDeconstruct.xml:7
+msgid ""
+"A Visual Script node which deconstructs a base type instance into its parts."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptDeconstruct.xml:15
+msgid "The type to deconstruct."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptEditor.xml:16
+msgid ""
+"Add a custom Visual Script node to the editor. It'll be placed under "
+"\"Custom Nodes\" with the [code]category[/code] as the parameter."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptEditor.xml:24
+msgid ""
+"Remove a custom Visual Script node from the editor. Custom nodes already "
+"placed on scripts won't be removed."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptEditor.xml:31
+msgid "Emitted when a custom Visual Script node is added or removed."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptEmitSignal.xml:4
+msgid "Emits a specified signal."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptEmitSignal.xml:7
+msgid ""
+"Emits a specified signal when it is executed.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence: [code]emit[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Sequence"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptEmitSignal.xml:19
+msgid "The signal to emit."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml:4
+#: modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml:7
+msgid "A Visual Script node returning a singleton from [@GlobalScope]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml:15
+msgid "The singleton's name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptExpression.xml:4
+msgid "A Visual Script node that can execute a custom expression."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptExpression.xml:7
+msgid ""
+"A Visual Script node that can execute a custom expression. Values can be "
+"provided for the input and the expression result can be retrieved from the "
+"output."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunction.xml:4
+msgid "A Visual Script node representing a function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunction.xml:7
+msgid ""
+"[VisualScriptFunction] represents a function header. It is the starting "
+"point for the function body and can be used to tweak the function's "
+"properties (e.g. RPC mode)."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:4
+msgid "A Visual Script node for calling a function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:7
+msgid ""
+"[VisualScriptFunctionCall] is created when you add or drag and drop a "
+"function onto the Visual Script graph. It allows to tweak parameters of the "
+"call, e.g. what object the function is called on."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:15
+msgid ""
+"The script to be used when [member call_mode] is set to [constant "
+"CALL_MODE_INSTANCE]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:18
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:15
+msgid ""
+"The base type to be used when [member call_mode] is set to [constant "
+"CALL_MODE_INSTANCE]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:21
+msgid ""
+"The type to be used when [member call_mode] is set to [constant "
+"CALL_MODE_BASIC_TYPE]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:24
+msgid ""
+"[code]call_mode[/code] determines the target object on which the method will "
+"be called. See [enum CallMode] for options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:27
+msgid "The name of the function to be called."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:30
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:21
+msgid ""
+"The node path to use when [member call_mode] is set to [constant "
+"CALL_MODE_NODE_PATH]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:33
+msgid ""
+"The mode for RPC calls. See [method Node.rpc] for more details and [enum "
+"RPCCallMode] for available options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:36
+msgid ""
+"The singleton to call the method on. Used when [member call_mode] is set to "
+"[constant CALL_MODE_SINGLETON]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:39
+msgid ""
+"Number of default arguments that will be used when calling the function. "
+"Can't be higher than the number of available default arguments in the "
+"method's declaration."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:42
+msgid ""
+"If [code]false[/code], call errors (e.g. wrong number of arguments) will be "
+"ignored."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:47
+msgid "The method will be called on this [Object]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:50
+msgid "The method will be called on the given [Node] in the scene tree."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:53
+msgid ""
+"The method will be called on an instanced node with the given type and "
+"script."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:56
+msgid "The method will be called on a GDScript basic type (e.g. [Vector2])."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:59
+msgid "The method will be called on a singleton."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:62
+msgid "The method will be called locally."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:65
+msgid "The method will be called remotely."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:68
+msgid "The method will be called remotely using an unreliable protocol."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:71
+msgid "The method will be called remotely for the given peer."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:74
+msgid ""
+"The method will be called remotely for the given peer, using an unreliable "
+"protocol."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:4
+msgid "A Visual Script node representing a function state."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:7
+msgid ""
+"[VisualScriptFunctionState] is returned from [VisualScriptYield] and can be "
+"used to resume a paused function call."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:18
+msgid ""
+"Connects this [VisualScriptFunctionState] to a signal in the given object to "
+"automatically resume when it's emitted."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:24
+msgid "Returns whether the function state is valid."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:31
+msgid "Resumes the function to run from the point it was yielded."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml:4
+#: modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml:7
+msgid "A Visual Script node returning a constant from [@GlobalScope]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml:15
+msgid "The constant to be used."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptIndexGet.xml:4
+msgid "A Visual Script node for getting a value from an array or a dictionary."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptIndexGet.xml:7
+msgid ""
+"[VisualScriptIndexGet] will return the value stored in an array or a "
+"dictionary under the given index."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptIndexSet.xml:4
+msgid "A Visual Script node for setting a value in an array or a dictionary."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptIndexSet.xml:7
+msgid ""
+"[VisualScriptIndexSet] will set the value stored in an array or a dictionary "
+"under the given index to the provided new value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:4
+msgid "A Visual Script node returning a state of an action."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:7
+msgid ""
+"[VisualScriptInputAction] can be used to check if an action is pressed or "
+"released."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:15
+msgid "Name of the action."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:18
+msgid "State of the action to check. See [enum Mode] for options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:23
+msgid "[code]True[/code] if action is pressed."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:26
+msgid "[code]True[/code] if action is released (i.e. not pressed)."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:29
+msgid "[code]True[/code] on the frame the action was pressed."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:32
+msgid "[code]True[/code] on the frame the action was released."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptIterator.xml:4
+msgid "Steps through items in a given input."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptIterator.xml:7
+msgid ""
+"This node steps through each item in a given input. Input can be any "
+"sequence data type, such as an [Array] or [String]. When each item has been "
+"processed, execution passed out the [code]exit[/code] Sequence port.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence: [code]for (elem) in (input)[/code]\n"
+"- Data (variant): [code]input[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Sequence: [code]each[/code]\n"
+"- Sequence: [code]exit[/code]\n"
+"- Data (variant): [code]elem[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:4
+msgid "A Visual Script virtual class for in-graph editable nodes."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:7
+msgid ""
+"A Visual Script virtual class that defines the shape and the default "
+"behavior of the nodes that have to be in-graph editable nodes."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:18
+msgid "Adds an input port to the Visual Script node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:27
+msgid "Adds an output port to the Visual Script node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:34
+msgid "Removes an input port from the Visual Script node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:41
+msgid "Removes an output port from the Visual Script node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:49
+msgid "Sets the name of an input port."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:57
+msgid "Sets the type of an input port."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:65
+msgid "Sets the name of an output port."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLists.xml:73
+msgid "Sets the type of an output port."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLocalVar.xml:4
+msgid "Gets a local variable's value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLocalVar.xml:7
+msgid ""
+"Returns a local variable's value. \"Var Name\" must be supplied, with an "
+"optional type.\n"
+"[b]Input Ports:[/b]\n"
+"none\n"
+"[b]Output Ports:[/b]\n"
+"- Data (variant): [code]get[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLocalVar.xml:19
+#: modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml:21
+msgid "The local variable's type."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLocalVar.xml:22
+#: modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml:24
+msgid "The local variable's name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml:4
+msgid "Changes a local variable's value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml:7
+msgid ""
+"Changes a local variable's value to the given input. The new value is also "
+"provided on an output Data port.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence\n"
+"- Data (variant): [code]set[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Sequence\n"
+"- Data (variant): [code]get[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:4
+msgid "Commonly used mathematical constants."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:7
+msgid ""
+"Provides common math constants, such as Pi, on an output Data port.\n"
+"[b]Input Ports:[/b]\n"
+"none\n"
+"[b]Output Ports:[/b]\n"
+"- Data (variant): [code]get[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:19
+msgid "The math constant."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:24
+msgid "Unity: [code]1[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:27
+msgid "Pi: [code]3.141593[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:30
+msgid "Pi divided by two: [code]1.570796[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:33
+msgid "Tau: [code]6.283185[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:36
+msgid ""
+"Mathematical constant [code]e[/code], the natural log base: [code]2.718282[/"
+"code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:39
+msgid "Square root of two: [code]1.414214[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:42
+msgid "Infinity: [code]inf[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:45
+msgid "Not a number: [code]nan[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptMathConstant.xml:48
+msgid "Represents the size of the [enum MathConstant] enum."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptNode.xml:4
+msgid "A node which is part of a [VisualScript]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptNode.xml:7
+msgid ""
+"A node which is part of a [VisualScript]. Not to be confused with [Node], "
+"which is a part of a [SceneTree]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptNode.xml:16
+msgid ""
+"Returns the default value of a given port. The default value is used when "
+"nothing is connected to the port."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptNode.xml:22
+msgid "Returns the [VisualScript] instance the node is bound to."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptNode.xml:28
+msgid ""
+"Notify that the node's ports have changed. Usually used in conjunction with "
+"[VisualScriptCustomNode] ."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptNode.xml:36
+msgid "Change the default value of a given port."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptNode.xml:43
+msgid "Emitted when the available input/output ports are changed."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptOperator.xml:4
+msgid "A Visual Script node that performs an operation on two values."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptOperator.xml:7
+msgid ""
+"[b]Input Ports:[/b]\n"
+"- Data (variant): [code]A[/code]\n"
+"- Data (variant): [code]B[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Data (variant): [code]result[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptOperator.xml:19
+msgid ""
+"The operation to be performed. See [enum Variant.Operator] for available "
+"options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptOperator.xml:22
+msgid ""
+"The type of the values for this operation. See [enum Variant.Type] for "
+"available options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPreload.xml:4
+msgid "Creates a new [Resource] or loads one from the filesystem."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPreload.xml:7
+msgid ""
+"Creates a new [Resource] or loads one from the filesystem.\n"
+"[b]Input Ports:[/b]\n"
+"none\n"
+"[b]Output Ports:[/b]\n"
+"- Data (object): [code]res[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPreload.xml:19
+msgid "The [Resource] to load."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:4
+msgid "A Visual Script node returning a value of a property from an [Object]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:7
+msgid ""
+"[VisualScriptPropertyGet] can return a value of any property from the "
+"current object or other objects."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:15
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:18
+msgid ""
+"The script to be used when [member set_mode] is set to [constant "
+"CALL_MODE_INSTANCE]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:18
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:21
+msgid ""
+"The base type to be used when [member set_mode] is set to [constant "
+"CALL_MODE_INSTANCE]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:21
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:24
+msgid ""
+"The type to be used when [member set_mode] is set to [constant "
+"CALL_MODE_BASIC_TYPE]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:24
+msgid ""
+"The indexed name of the property to retrieve. See [method Object."
+"get_indexed] for details."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:27
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:30
+msgid ""
+"The node path to use when [member set_mode] is set to [constant "
+"CALL_MODE_NODE_PATH]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:30
+msgid ""
+"The name of the property to retrieve. Changing this will clear [member "
+"index]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:33
+msgid ""
+"[code]set_mode[/code] determines the target object from which the property "
+"will be retrieved. See [enum CallMode] for options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:38
+msgid "The property will be retrieved from this [Object]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:41
+msgid "The property will be retrieved from the given [Node] in the scene tree."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:44
+msgid ""
+"The property will be retrieved from an instanced node with the given type "
+"and script."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:47
+msgid ""
+"The property will be retrieved from a GDScript basic type (e.g. [Vector2])."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:4
+msgid "A Visual Script node that sets a property of an [Object]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:7
+msgid ""
+"[VisualScriptPropertySet] can set the value of any property from the current "
+"object or other objects."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:15
+msgid ""
+"The additional operation to perform when assigning. See [enum AssignOp] for "
+"options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:27
+msgid ""
+"The indexed name of the property to set. See [method Object.set_indexed] for "
+"details."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:33
+msgid ""
+"The name of the property to set. Changing this will clear [member index]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:36
+msgid ""
+"[code]set_mode[/code] determines the target object on which the property "
+"will be set. See [enum CallMode] for options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:41
+msgid "The property will be set on this [Object]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:44
+msgid "The property will be set on the given [Node] in the scene tree."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:47
+msgid ""
+"The property will be set on an instanced node with the given type and script."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:50
+msgid "The property will be set on a GDScript basic type (e.g. [Vector2])."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:53
+msgid "The property will be assigned regularly."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:56
+msgid ""
+"The value will be added to the property. Equivalent of doing [code]+=[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:59
+msgid ""
+"The value will be subtracted from the property. Equivalent of doing [code]-"
+"=[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:62
+msgid ""
+"The property will be multiplied by the value. Equivalent of doing [code]*=[/"
+"code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:65
+msgid ""
+"The property will be divided by the value. Equivalent of doing [code]/=[/"
+"code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:68
+msgid ""
+"A modulo operation will be performed on the property and the value. "
+"Equivalent of doing [code]%=[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:71
+msgid ""
+"The property will be binarly shifted to the left by the given value. "
+"Equivalent of doing [code]<<[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:74
+msgid ""
+"The property will be binarly shifted to the right by the given value. "
+"Equivalent of doing [code]>>[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:77
+msgid ""
+"A binary [code]AND[/code] operation will be performed on the property. "
+"Equivalent of doing [code]&=[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:80
+msgid ""
+"A binary [code]OR[/code] operation will be performed on the property. "
+"Equivalent of doing [code]|=[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:83
+msgid ""
+"A binary [code]XOR[/code] operation will be performed on the property. "
+"Equivalent of doing [code]^=[/code]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptReturn.xml:4
+msgid "Exits a function and returns an optional value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptReturn.xml:7
+msgid ""
+"Ends the execution of a function and returns control to the calling "
+"function. Optionally, it can return a [Variant] value.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence\n"
+"- Data (variant): [code]result[/code] (optional)\n"
+"[b]Output Ports:[/b]\n"
+"none"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptReturn.xml:20
+msgid "If [code]true[/code], the [code]return[/code] input port is available."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptReturn.xml:23
+msgid "The return value's data type."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSceneNode.xml:4
+msgid "Node reference."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSceneNode.xml:7
+msgid ""
+"A direct reference to a node.\n"
+"[b]Input Ports:[/b]\n"
+"none\n"
+"[b]Output Ports:[/b]\n"
+"- Data: [code]node[/code] (obj)"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSceneNode.xml:19
+msgid "The node's path in the scene tree."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSceneTree.xml:4
+#: modules/visual_script/doc_classes/VisualScriptSceneTree.xml:7
+msgid "A Visual Script node for accessing [SceneTree] methods."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSelect.xml:4
+msgid "Chooses between two input values."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSelect.xml:7
+msgid ""
+"Chooses between two input values based on a Boolean condition.\n"
+"[b]Input Ports:[/b]\n"
+"- Data (boolean): [code]cond[/code]\n"
+"- Data (variant): [code]a[/code]\n"
+"- Data (variant): [code]b[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Data (variant): [code]out[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSelect.xml:21
+msgid "The input variables' type."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSelf.xml:4
+msgid "Outputs a reference to the current instance."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSelf.xml:7
+msgid ""
+"Provides a reference to the node running the visual script.\n"
+"[b]Input Ports:[/b]\n"
+"none\n"
+"[b]Output Ports:[/b]\n"
+"- Data (object): [code]instance[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSequence.xml:4
+msgid "Executes a series of Sequence ports."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSequence.xml:7
+msgid ""
+"Steps through a series of one or more output Sequence ports. The "
+"[code]current[/code] data port outputs the currently executing item.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence: [code]in order[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Sequence: [code]1[/code]\n"
+"- Sequence: [code]2 - n[/code] (optional)\n"
+"- Data (int): [code]current[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSequence.xml:21
+msgid "The number of steps in the sequence."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSubCall.xml:4
+msgid "Calls a method called [code]_subcall[/code] in this object."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSubCall.xml:7
+msgid ""
+"[VisualScriptSubCall] will call method named [code]_subcall[/code] in the "
+"current script. It will fail if the method doesn't exist or the provided "
+"arguments are wrong."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSubCall.xml:16
+msgid "Called by this node."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSwitch.xml:4
+msgid "Branches program flow based on a given input's value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptSwitch.xml:7
+msgid ""
+"Branches the flow based on an input's value. Use [b]Case Count[/b] in the "
+"Inspector to set the number of branches and each comparison's optional "
+"type.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence: [code]'input' is[/code]\n"
+"- Data (variant): [code]=[/code]\n"
+"- Data (variant): [code]=[/code] (optional)\n"
+"- Data (variant): [code]input[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Sequence\n"
+"- Sequence (optional)\n"
+"- Sequence: [code]done[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml:4
+msgid "A Visual Script node that casts the given value to another type."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml:7
+msgid ""
+"[VisualScriptTypeCast] will perform a type conversion to an [Object]-derived "
+"type."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml:15
+msgid ""
+"The target script class to be converted to. If none, only the [member "
+"base_type] will be used."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml:18
+msgid "The target type to be converted to."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptVariableGet.xml:4
+msgid "Gets a variable's value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptVariableGet.xml:7
+msgid ""
+"Returns a variable's value. \"Var Name\" must be supplied, with an optional "
+"type.\n"
+"[b]Input Ports:[/b]\n"
+"none\n"
+"[b]Output Ports:[/b]\n"
+"- Data (variant): [code]value[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptVariableGet.xml:19
+#: modules/visual_script/doc_classes/VisualScriptVariableSet.xml:20
+msgid "The variable's name."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptVariableSet.xml:4
+msgid "Changes a variable's value."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptVariableSet.xml:7
+msgid ""
+"Changes a variable's value to the given input.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence\n"
+"- Data (variant): [code]set[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Sequence"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptWhile.xml:4
+msgid "Conditional loop."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptWhile.xml:7
+msgid ""
+"Loops while a condition is [code]true[/code]. Execution continues out the "
+"[code]exit[/code] Sequence port when the loop terminates.\n"
+"[b]Input Ports:[/b]\n"
+"- Sequence: [code]while(cond)[/code]\n"
+"- Data (bool): [code]cond[/code]\n"
+"[b]Output Ports:[/b]\n"
+"- Sequence: [code]repeat[/code]\n"
+"- Sequence: [code]exit[/code]"
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYield.xml:4
+msgid "A Visual Script node used to pause a function execution."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYield.xml:7
+msgid ""
+"[VisualScriptYield] will pause the function call and return "
+"[VisualScriptFunctionState], which can be used to resume the function."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYield.xml:15
+msgid ""
+"The mode to use for yielding. See [enum YieldMode] for available options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYield.xml:18
+msgid "The time to wait when [member mode] is set to [constant YIELD_WAIT]."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYield.xml:23
+msgid "Yields during an idle frame."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYield.xml:26
+msgid "Yields during a physics frame."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYield.xml:29
+msgid "Yields a function and waits the given time."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:4
+msgid "A Visual Script node yielding for a signal."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:7
+msgid ""
+"[VisualScriptYieldSignal] will pause the function execution until the "
+"provided signal is emitted."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:18
+msgid ""
+"[code]call_mode[/code] determines the target object to wait for the signal "
+"emission. See [enum CallMode] for options."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:24
+msgid "The signal name to be waited for."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:29
+msgid "A signal from this [Object] will be used."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:32
+msgid "A signal from the given [Node] in the scene tree will be used."
+msgstr ""
+
+#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:35
+msgid "A signal from an instanced node with the given type will be used."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:4
+msgid "Server for anything visible."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:7
+msgid ""
+"Server for anything visible. The visual server is the API backend for "
+"everything visible. The whole scene system mounts on it to display.\n"
+"The visual server is completely opaque, the internals are entirely "
+"implementation specific and cannot be accessed.\n"
+"The visual server can be used to bypass the scene system entirely.\n"
+"Resources are created using the [code]*_create[/code] functions.\n"
+"All objects are drawn to a viewport. You can use the [Viewport] attached to "
+"the [SceneTree] or you can create one yourself with [method "
+"viewport_create]. When using a custom scenario or canvas, the scenario or "
+"canvas needs to be attached to the viewport using [method "
+"viewport_set_scenario] or [method viewport_attach_canvas].\n"
+"In 3D, all visual objects must be associated with a scenario. The scenario "
+"is a visual representation of the world. If accessing the visual server from "
+"a running game, the scenario can be accessed from the scene tree from any "
+"[Spatial] node with [method Spatial.get_world]. Otherwise, a scenario can be "
+"created with [method scenario_create].\n"
+"Similarly, in 2D, a canvas is needed to draw all canvas items.\n"
+"In 3D, all visible objects are comprised of a resource and an instance. A "
+"resource can be a mesh, a particle system, a light, or any other 3D object. "
+"In order to be visible resources must be attached to an instance using "
+"[method instance_set_base]. The instance must also be attached to the "
+"scenario using [method instance_set_scenario] in order to be visible.\n"
+"In 2D, all visible objects are some form of canvas item. In order to be "
+"visible, a canvas item needs to be the child of a canvas attached to a "
+"viewport, or it needs to be the child of another canvas item that is "
+"eventually attached to the canvas."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:18
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/optimization/using_servers.html"
+msgstr ""
+
+#: doc/classes/VisualServer.xml:28
+msgid "Sets images to be rendered in the window margin."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:38
+msgid ""
+"Sets margin size, where black bars (or images, if [method "
+"black_bars_set_images] was used) are rendered."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:44
+msgid ""
+"Creates a camera and adds it to the VisualServer. It can be accessed with "
+"the RID that is returned. This RID will be used in all [code]camera_*[/code] "
+"VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:53
+msgid ""
+"Sets the cull mask associated with this camera. The cull mask describes "
+"which 3D layers are rendered by this camera. Equivalent to [member Camera."
+"cull_mask]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:61
+msgid ""
+"Sets the environment used by this camera. Equivalent to [member Camera."
+"environment]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:72
+msgid ""
+"Sets camera to use frustum projection. This mode allows adjusting the "
+"[code]offset[/code] argument to create \"tilted frustum\" effects."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:82
+msgid ""
+"Sets camera to use orthogonal projection, also known as orthographic "
+"projection. Objects remain the same size on the screen no matter how far "
+"away they are."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:92
+msgid ""
+"Sets camera to use perspective projection. Objects on the screen becomes "
+"smaller when they are far away."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:100
+msgid "Sets [Transform] of camera."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:108
+msgid ""
+"If [code]true[/code], preserves the horizontal aspect ratio which is "
+"equivalent to [constant Camera.KEEP_WIDTH]. If [code]false[/code], preserves "
+"the vertical aspect ratio which is equivalent to [constant Camera."
+"KEEP_HEIGHT]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:114
+msgid ""
+"Creates a canvas and returns the assigned [RID]. It can be accessed with the "
+"RID that is returned. This RID will be used in all [code]canvas_*[/code] "
+"VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:125
+msgid "Adds a circle command to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:133
+msgid ""
+"If ignore is [code]true[/code], the VisualServer does not perform clipping."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:145
+msgid "Adds a line command to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:157
+msgid "Adds a mesh command to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:167
+msgid ""
+"Adds a [MultiMesh] to the [CanvasItem]'s draw commands. Only affects its "
+"aabb at the moment."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:184
+msgid ""
+"Adds a nine patch image to the [CanvasItem]'s draw commands.\n"
+"See [NinePatchRect] for more explanation."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:195
+msgid "Adds a particle system to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:208
+msgid "Adds a polygon to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:219
+msgid ""
+"Adds a polyline, which is a line from multiple points with a width, to the "
+"[CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:232
+msgid "Adds a primitive to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:241
+msgid "Adds a rectangle to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:249
+msgid ""
+"Adds a [Transform2D] command to the [CanvasItem]'s draw commands.\n"
+"This sets the extra_matrix uniform when executed. This affects the later "
+"commands of the canvas item."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:263
+msgid "Adds a textured rect to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:277
+msgid ""
+"Adds a texture rect with region setting to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:295
+msgid "Adds a triangle array to the [CanvasItem]'s draw commands."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:302
+msgid "Clears the [CanvasItem] and removes all commands in it."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:308
+msgid ""
+"Creates a new [CanvasItem] and returns its [RID]. It can be accessed with "
+"the RID that is returned. This RID will be used in all [code]canvas_item_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:317
+msgid "Sets clipping for the [CanvasItem]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:326
+msgid "Sets the [CanvasItem] to copy a rect to the backbuffer."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:335
+msgid "Defines a custom drawing rectangle for the [CanvasItem]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:343
+msgid ""
+"Enables the use of distance fields for GUI elements that are rendering "
+"distance field based fonts."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:351
+msgid "Sets [CanvasItem] to be drawn behind its parent."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:359
+msgid "Sets the index for the [CanvasItem]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:367 doc/classes/VisualServer.xml:493
+#: doc/classes/VisualServer.xml:549
+msgid ""
+"The light mask. See [LightOccluder2D] for more information on light masks."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:375
+msgid "Sets a new material to the [CanvasItem]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:383
+msgid "Sets the color that modulates the [CanvasItem] and its children."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:391
+msgid ""
+"Sets the parent for the [CanvasItem]. The parent can be another canvas item, "
+"or it can be the root canvas that is attached to the viewport."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:399
+msgid "Sets the color that modulates the [CanvasItem] without children."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:407
+msgid "Sets if [CanvasItem]'s children should be sorted by y-position."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:415
+msgid "Sets the [CanvasItem]'s [Transform2D]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:423
+msgid "Sets if the [CanvasItem] uses its parent's material."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:431
+msgid "Sets if the canvas item (including its children) is visible."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:439
+msgid ""
+"If this is enabled, the Z index of the parent will be added to the "
+"children's Z index."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:447
+msgid ""
+"Sets the [CanvasItem]'s Z index, i.e. its draw order (lower indexes are "
+"drawn first)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:455
+msgid ""
+"Attaches the canvas light to the canvas. Removes it from its previous canvas."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:461
+msgid ""
+"Creates a canvas light and adds it to the VisualServer. It can be accessed "
+"with the RID that is returned. This RID will be used in all "
+"[code]canvas_light_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:470
+msgid ""
+"Attaches a light occluder to the canvas. Removes it from its previous canvas."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:476
+msgid ""
+"Creates a light occluder and adds it to the VisualServer. It can be accessed "
+"with the RID that is returned. This RID will be used in all "
+"[code]canvas_light_ocluder_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:485
+msgid "Enables or disables light occluder."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:501
+msgid "Sets a light occluder's polygon."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:509
+msgid "Sets a light occluder's [Transform2D]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:517
+msgid "Sets the color for a light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:525
+msgid "Enables or disables a canvas light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:533
+msgid "Sets a canvas light's energy."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:541
+msgid "Sets a canvas light's height."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:557
+msgid ""
+"The binary mask used to determine which layers this canvas light's shadows "
+"affects. See [LightOccluder2D] for more information on light masks."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:566
+msgid "The layer range that gets rendered with this light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:574
+msgid "The mode of the light, see [enum CanvasLightMode] constants."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:582
+msgid ""
+"Sets the texture's scale factor of the light. Equivalent to [member Light2D."
+"texture_scale]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:590
+msgid ""
+"Sets the width of the shadow buffer, size gets scaled to the next power of "
+"two for this."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:598
+msgid "Sets the color of the canvas light's shadow."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:606
+msgid "Enables or disables the canvas light's shadow."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:614
+msgid ""
+"Sets the canvas light's shadow's filter, see [enum CanvasLightShadowFilter] "
+"constants."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:622
+msgid "Sets the length of the shadow's gradient."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:630
+msgid "Smoothens the shadow. The lower, the smoother."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:638
+msgid ""
+"Sets texture to be used by light. Equivalent to [member Light2D.texture]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:646
+msgid ""
+"Sets the offset of the light's texture. Equivalent to [member Light2D."
+"offset]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:654
+msgid "Sets the canvas light's [Transform2D]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:663
+msgid ""
+"Sets the Z range of objects that will be affected by this light. Equivalent "
+"to [member Light2D.range_z_min] and [member Light2D.range_z_max]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:669
+msgid ""
+"Creates a new light occluder polygon and adds it to the VisualServer. It can "
+"be accessed with the RID that is returned. This RID will be used in all "
+"[code]canvas_occluder_polygon_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:678
+msgid ""
+"Sets an occluder polygons cull mode. See [enum "
+"CanvasOccluderPolygonCullMode] constants."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:687
+msgid "Sets the shape of the occluder polygon."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:695
+msgid "Sets the shape of the occluder polygon as lines."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:704
+msgid ""
+"A copy of the canvas item will be drawn with a local offset of the mirroring "
+"[Vector2]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:712
+msgid "Modulates all colors in the given canvas."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:718
+msgid ""
+"Creates a directional light and adds it to the VisualServer. It can be "
+"accessed with the RID that is returned. This RID can be used in most "
+"[code]light_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this directional light to an instance using "
+"[method instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:728
+msgid ""
+"Draws a frame. [i]This method is deprecated[/i], please use [method "
+"force_draw] instead."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:734
+msgid ""
+"Creates an environment and adds it to the VisualServer. It can be accessed "
+"with the RID that is returned. This RID will be used in all "
+"[code]environment_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:747
+msgid ""
+"Sets the values to be used with the \"Adjustment\" post-process effect. See "
+"[Environment] for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:757
+msgid "Sets the ambient light parameters. See [Environment] for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:765
+msgid ""
+"Sets the [i]BGMode[/i] of the environment. Equivalent to [member Environment."
+"background_mode]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:773
+msgid ""
+"Color displayed for clear areas of the scene (if using Custom color or Color"
+"+Sky background modes)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:781
+msgid "Sets the intensity of the background color."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:789
+msgid "Sets the maximum layer to use if using Canvas background mode."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:801
+msgid ""
+"Sets the values to be used with the \"DoF Far Blur\" post-process effect. "
+"See [Environment] for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:813
+msgid ""
+"Sets the values to be used with the \"DoF Near Blur\" post-process effect. "
+"See [Environment] for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:824
+msgid ""
+"Sets the variables to be used with the scene fog. See [Environment] for more "
+"details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:837
+msgid ""
+"Sets the variables to be used with the fog depth effect. See [Environment] "
+"for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:848
+msgid ""
+"Sets the variables to be used with the fog height effect. See [Environment] "
+"for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:866
+msgid ""
+"Sets the variables to be used with the \"glow\" post-process effect. See "
+"[Environment] for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:874
+msgid ""
+"Sets the [Sky] to be used as the environment's background when using "
+"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:882
+msgid ""
+"Sets a custom field of view for the background [Sky]. Equivalent to [member "
+"Environment.background_sky_custom_fov]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:890
+msgid ""
+"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
+"to [member Environment.background_sky_orientation]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:909
+msgid ""
+"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
+"(SSAO)\" post-process effect. See [Environment] for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:922
+msgid ""
+"Sets the variables to be used with the \"screen space reflections\" post-"
+"process effect. See [Environment] for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:937
+msgid ""
+"Sets the variables to be used with the \"tonemap\" post-process effect. See "
+"[Environment] for more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:943
+msgid "Removes buffers and clears testcubes."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:951
+msgid ""
+"Forces a frame to be drawn when the function is called. Drawing a frame "
+"updates all [Viewport]s that are set to update. Use with extreme caution."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:957
+msgid "Synchronizes threads."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:964
+msgid "Tries to free an object in the VisualServer."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:971
+msgid "Returns a certain information, see [enum RenderInfo] for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:977
+msgid "Returns the id of the test cube. Creates one if none exists."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:983
+msgid "Returns the id of the test texture. Creates one if none exists."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:989
+msgid ""
+"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
+"SSE2\").\n"
+"[b]Note:[/b] When running a headless or server binary, this function returns "
+"an empty string."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:996
+msgid ""
+"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
+"[b]Note:[/b] When running a headless or server binary, this function returns "
+"an empty string."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1003
+msgid "Returns the id of a white texture. Creates one if none exists."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1009
+msgid ""
+"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
+"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this GI probe to an instance using [method "
+"instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1018
+msgid ""
+"Returns the bias value for the GI probe. Bias is used to avoid self "
+"occlusion. Equivalent to [member GIProbeData.bias]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1025
+msgid ""
+"Returns the axis-aligned bounding box that covers the full extent of the GI "
+"probe."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1032
+msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1039
+msgid "Returns the data used by the GI probe."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1046
+msgid ""
+"Returns the dynamic range set for this GI probe. Equivalent to [member "
+"GIProbe.dynamic_range]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1053
+msgid ""
+"Returns the energy multiplier for this GI probe. Equivalent to [member "
+"GIProbe.energy]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1060
+msgid ""
+"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
+"normal_bias]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1067
+msgid ""
+"Returns the propagation value for this GI probe. Equivalent to [member "
+"GIProbe.propagation]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1074
+msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1081
+msgid ""
+"Returns [code]true[/code] if the GI probe data associated with this GI probe "
+"is compressed. Equivalent to [member GIProbe.compress]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1088
+msgid ""
+"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
+"does not account for sky light. Equivalent to [member GIProbe.interior]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1096
+msgid ""
+"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
+"bias]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1104
+msgid ""
+"Sets the axis-aligned bounding box that covers the extent of the GI probe."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1112
+msgid "Sets the size of individual cells within the GI probe."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1120
+msgid ""
+"Sets the compression setting for the GI probe data. Compressed data will "
+"take up less space but may look worse. Equivalent to [member GIProbe."
+"compress]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1128
+msgid ""
+"Sets the data to be used in the GI probe for lighting calculations. Normally "
+"this is created and called internally within the [GIProbe] node. You should "
+"not try to set this yourself."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1136
+msgid ""
+"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
+"bright lights can be. A smaller range captures greater detail but limits how "
+"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1144
+msgid ""
+"Sets the energy multiplier for this GI probe. A higher energy makes the "
+"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
+"energy]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1152
+msgid ""
+"Sets the interior value of this GI probe. A GI probe set to interior does "
+"not include the sky when calculating lighting. Equivalent to [member GIProbe."
+"interior]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1160
+msgid ""
+"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
+"other form of bias and may help reduce self-occlusion. Equivalent to [member "
+"GIProbe.normal_bias]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1168
+msgid ""
+"Sets the propagation of light within this GI probe. Equivalent to [member "
+"GIProbe.propagation]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1176
+msgid "Sets the to cell [Transform] for this GI probe."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1182
+msgid ""
+"Returns [code]true[/code] if changes have been made to the VisualServer's "
+"data. [method draw] is usually called if this happens."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1189
+msgid "Not yet implemented. Always returns [code]false[/code]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1196
+msgid ""
+"Returns [code]true[/code] if the OS supports a certain feature. Features "
+"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
+"[code]pvrtc[/code] and [code]skinning_fallback[/code].\n"
+"When rendering with GLES2, returns [code]true[/code] with "
+"[code]skinning_fallback[/code] in case the hardware doesn't support the "
+"default GPU skinning process."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1206
+msgid ""
+"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
+"[method ImmediateGeometry.begin]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1213
+msgid ""
+"Clears everything that was set up between [method immediate_begin] and "
+"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1221
+msgid ""
+"Sets the color to be used with next vertex. Equivalent to [method "
+"ImmediateGeometry.set_color]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1227
+msgid ""
+"Creates an immediate geometry and adds it to the VisualServer. It can be "
+"accessed with the RID that is returned. This RID will be used in all "
+"[code]immediate_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this immediate geometry to an instance using "
+"[method instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1236
+msgid ""
+"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
+"ImmediateGeometry.end]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1243
+msgid "Returns the material assigned to the [ImmediateGeometry]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1251
+msgid ""
+"Sets the normal to be used with next vertex. Equivalent to [method "
+"ImmediateGeometry.set_normal]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1259
+msgid "Sets the material to be used to draw the [ImmediateGeometry]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1267
+msgid ""
+"Sets the tangent to be used with next vertex. Equivalent to [method "
+"ImmediateGeometry.set_tangent]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1275
+msgid ""
+"Sets the UV to be used with next vertex. Equivalent to [method "
+"ImmediateGeometry.set_uv]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1283
+msgid ""
+"Sets the UV2 to be used with next vertex. Equivalent to [method "
+"ImmediateGeometry.set_uv2]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1291
+msgid ""
+"Adds the next vertex using the information provided in advance. Equivalent "
+"to [method ImmediateGeometry.add_vertex]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1299
+msgid ""
+"Adds the next vertex using the information provided in advance. This is a "
+"helper class that calls [method immediate_vertex] under the hood. Equivalent "
+"to [method ImmediateGeometry.add_vertex]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1305
+msgid ""
+"Initializes the visual server. This function is called internally by "
+"platform-dependent code during engine initialization. If called from a "
+"running game, it will not do anything."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1313
+msgid ""
+"Attaches a unique Object ID to instance. Object ID must be attached to "
+"instance for proper culling with [method instances_cull_aabb], [method "
+"instances_cull_convex], and [method instances_cull_ray]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1321
+msgid ""
+"Attaches a skeleton to an instance. Removes the previous skeleton from the "
+"instance."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1327
+msgid ""
+"Creates a visual instance and adds it to the VisualServer. It can be "
+"accessed with the RID that is returned. This RID will be used in all "
+"[code]instance_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"An instance is a way of placing a 3D object in the scenario. Objects like "
+"particles, meshes, and reflection probes need to be associated with an "
+"instance to be visible in the scenario using [method instance_set_base]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1337
+msgid ""
+"Creates a visual instance, adds it to the VisualServer, and sets both base "
+"and scenario. It can be accessed with the RID that is returned. This RID "
+"will be used in all [code]instance_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
+msgid "Not implemented in Godot 3.x."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1354
+msgid ""
+"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
+"Equivalent to [member GeometryInstance.cast_shadow]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1374
+msgid ""
+"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
+"more details."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1382
+msgid ""
+"Sets a material that will override the material for all surfaces on the mesh "
+"associated with this instance. Equivalent to [member GeometryInstance."
+"material_override]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1390
+msgid ""
+"Sets the base of the instance. A base can be any of the 3D objects that are "
+"created in the VisualServer that can be displayed. For example, any of the "
+"light types, mesh, multimesh, immediate geometry, particle system, "
+"reflection probe, lightmap capture, and the GI probe are all types that can "
+"be set as the base of an instance in order to be displayed in the scenario."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1399
+msgid "Sets the weight for a given blend shape associated with this instance."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1407
+msgid ""
+"Sets a custom AABB to use when culling objects from the view frustum. "
+"Equivalent to [method GeometryInstance.set_custom_aabb]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1415
+msgid "Function not implemented in Godot 3.x."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1423
+msgid ""
+"Sets a margin to increase the size of the AABB when culling objects from the "
+"view frustum. This allows you to avoid culling objects that fall outside the "
+"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1431
+msgid ""
+"Sets the render layers that this instance will be drawn to. Equivalent to "
+"[member VisualInstance.layers]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1439
+msgid ""
+"Sets the scenario that the instance is in. The scenario is the 3D world that "
+"the objects will be displayed in."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1448
+msgid ""
+"Sets the material of a specific surface. Equivalent to [method MeshInstance."
+"set_surface_material]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1456
+msgid ""
+"Sets the world space transform of the instance. Equivalent to [member "
+"Spatial.transform]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1467
+msgid "Sets the lightmap to use with this instance."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1475
+msgid ""
+"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
+"visible]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1483
+msgid ""
+"Returns an array of object IDs intersecting with the provided AABB. Only "
+"visual 3D nodes are considered, such as [MeshInstance] or "
+"[DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the "
+"actual nodes. A scenario RID must be provided, which is available in the "
+"[World] you want to query. This forces an update for all resources queued to "
+"update.\n"
+"[b]Warning:[/b] This function is primarily intended for editor usage. For in-"
+"game use cases, prefer physics collision."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1492
+msgid ""
+"Returns an array of object IDs intersecting with the provided convex shape. "
+"Only visual 3D nodes are considered, such as [MeshInstance] or "
+"[DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the "
+"actual nodes. A scenario RID must be provided, which is available in the "
+"[World] you want to query. This forces an update for all resources queued to "
+"update.\n"
+"[b]Warning:[/b] This function is primarily intended for editor usage. For in-"
+"game use cases, prefer physics collision."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1502
+msgid ""
+"Returns an array of object IDs intersecting with the provided 3D ray. Only "
+"visual 3D nodes are considered, such as [MeshInstance] or "
+"[DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the "
+"actual nodes. A scenario RID must be provided, which is available in the "
+"[World] you want to query. This forces an update for all resources queued to "
+"update.\n"
+"[b]Warning:[/b] This function is primarily intended for editor usage. For in-"
+"game use cases, prefer physics collision."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1511
+msgid ""
+"If [code]true[/code], this directional light will blend between shadow map "
+"splits resulting in a smoother transition between them. Equivalent to "
+"[member DirectionalLight.directional_shadow_blend_splits]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1519
+msgid ""
+"Sets the shadow depth range mode for this directional light. Equivalent to "
+"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
+"LightDirectionalShadowDepthRangeMode] for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1527
+msgid ""
+"Sets the shadow mode for this directional light. Equivalent to [member "
+"DirectionalLight.directional_shadow_mode]. See [enum "
+"LightDirectionalShadowMode] for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1535
+msgid ""
+"Sets whether to use vertical or horizontal detail for this omni light. This "
+"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
+"OmniLight.omni_shadow_detail]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1543
+msgid ""
+"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
+"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
+"OmniLight.omni_shadow_mode]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1551
+msgid ""
+"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
+"bake mode affects how the light will be baked in [BakedLightmap]s and "
+"[GIProbe]s."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1559
+msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1567
+msgid ""
+"Sets the cull mask for this Light. Lights only affect objects in the "
+"selected layers. Equivalent to [member Light.light_cull_mask]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1575
+msgid ""
+"If [code]true[/code], light will subtract light instead of adding light. "
+"Equivalent to [member Light.light_negative]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1584
+msgid ""
+"Sets the specified light parameter. See [enum LightParam] for options. "
+"Equivalent to [method Light.set_param]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1600
+msgid ""
+"If [code]true[/code], reverses the backface culling of the mesh. This can be "
+"useful when you have a flat mesh that has a light behind it. If you need to "
+"cast a shadow on both sides of the mesh, set the mesh to use double sided "
+"shadows with [method instance_geometry_set_cast_shadows_setting]. Equivalent "
+"to [member Light.shadow_reverse_cull_face]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1608
+msgid ""
+"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
+"shadow_enabled]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1616
+msgid ""
+"Sets the color of the shadow cast by the light. Equivalent to [member Light."
+"shadow_color]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1624
+msgid ""
+"Sets whether GI probes capture light information from this light. "
+"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
+"method is only kept for compatibility reasons and calls [method "
+"light_set_bake_mode] internally, setting the bake mode to [constant "
+"LIGHT_BAKE_DISABLED] or [constant LIGHT_BAKE_INDIRECT] depending on the "
+"given parameter."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1630
+msgid ""
+"Creates a lightmap capture and adds it to the VisualServer. It can be "
+"accessed with the RID that is returned. This RID will be used in all "
+"[code]lightmap_capture_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this lightmap capture to an instance using "
+"[method instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1639
+msgid "Returns the size of the lightmap capture area."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1646
+msgid "Returns the energy multiplier used by the lightmap capture."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1653
+msgid "Returns the octree used by the lightmap capture."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1660
+msgid ""
+"Returns the cell subdivision amount used by this lightmap capture's octree."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1667
+msgid "Returns the cell transform for this lightmap capture's octree."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1674
+msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1682
+msgid ""
+"Sets the size of the area covered by the lightmap capture. Equivalent to "
+"[member BakedLightmapData.bounds]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1690
+msgid ""
+"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
+"BakedLightmapData.energy]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1698
+msgid ""
+"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
+"BakedLightmapData.interior]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1706
+msgid ""
+"Sets the octree to be used by this lightmap capture. This function is "
+"normally used by the [BakedLightmap] node. Equivalent to [member "
+"BakedLightmapData.octree]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1714
+msgid ""
+"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
+"[member BakedLightmapData.cell_subdiv]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1722
+msgid ""
+"Sets the octree cell transform for this lightmap capture's octree. "
+"Equivalent to [member BakedLightmapData.cell_space_transform]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1731
+msgid ""
+"Returns a mesh of a sphere with the given amount of horizontal and vertical "
+"subdivisions."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1737
+msgid ""
+"Creates an empty material and adds it to the VisualServer. It can be "
+"accessed with the RID that is returned. This RID will be used in all "
+"[code]material_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1746
+msgid "Returns the value of a certain material's parameter."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1754
+msgid ""
+"Returns the default value for the param if available. Otherwise returns an "
+"empty [Variant]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1761
+msgid ""
+"Returns the shader of a certain material's shader. Returns an empty RID if "
+"the material doesn't have a shader."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1769
+msgid "Sets a material's line width."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1777
+msgid "Sets an object's next material."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1786
+msgid "Sets a material's parameter."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1794
+msgid "Sets a material's render priority."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1802
+msgid "Sets a shader material's shader."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1813
+msgid ""
+"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
+"constants for types."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1820
+msgid "Removes all surfaces from a mesh."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1826
+msgid ""
+"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
+"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
+"VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this mesh to an instance using [method "
+"instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1835
+msgid "Returns a mesh's blend shape count."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1842
+msgid "Returns a mesh's blend shape mode."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1849
+msgid "Returns a mesh's custom aabb."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1856
+msgid "Returns a mesh's number of surfaces."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1864
+msgid "Removes a mesh's surface."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1872
+msgid "Sets a mesh's blend shape count."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1880
+msgid "Sets a mesh's blend shape mode."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1888
+msgid "Sets a mesh's custom aabb."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1896
+msgid "Returns a mesh's surface's aabb."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1904
+msgid "Returns a mesh's surface's vertex buffer."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1912
+msgid "Returns a mesh's surface's amount of indices."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1920
+msgid "Returns a mesh's surface's amount of vertices."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1928
+msgid "Returns a mesh's surface's buffer arrays."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1936
+msgid "Returns a mesh's surface's arrays for blend shapes."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1944
+msgid "Returns the format of a mesh's surface."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1954
+msgid "Function is unused in Godot 3.x."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1971
+msgid "Returns a mesh's surface's index buffer."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1979
+msgid "Returns a mesh's surface's material."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1987
+msgid "Returns the primitive type of a mesh's surface."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:1995
+msgid "Returns the aabb of a mesh's surface's skeleton."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2004
+msgid "Sets a mesh's surface's material."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2014
+msgid ""
+"Updates a specific region of a vertex buffer for the specified surface. "
+"Warning: this function alters the vertex buffer directly with no safety "
+"mechanisms, you can easily corrupt your mesh."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2025
+msgid ""
+"Allocates space for the multimesh data. Format parameters determine how the "
+"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
+"MultimeshColorFormat], and [enum MultimeshCustomDataFormat] for usage. "
+"Equivalent to [member MultiMesh.instance_count]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2031
+msgid ""
+"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
+"This RID will be used in all [code]multimesh_*[/code] VisualServer "
+"functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this multimesh to an instance using [method "
+"instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2040
+msgid ""
+"Calculates and returns the axis-aligned bounding box that encloses all "
+"instances within the multimesh."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2047
+msgid "Returns the number of instances allocated for this multimesh."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2054
+msgid ""
+"Returns the RID of the mesh that will be used in drawing this multimesh."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2061
+msgid "Returns the number of visible instances for this multimesh."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2069
+msgid "Returns the color by which the specified instance will be modulated."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2077
+msgid "Returns the custom data associated with the specified instance."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2085
+msgid "Returns the [Transform] of the specified instance."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2093
+msgid ""
+"Returns the [Transform2D] of the specified instance. For use when the "
+"multimesh is set to use 2D transforms."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2102
+msgid ""
+"Sets the color by which this instance will be modulated. Equivalent to "
+"[method MultiMesh.set_instance_color]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2111
+msgid ""
+"Sets the custom data for this instance. Custom data is passed as a [Color], "
+"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
+"[method MultiMesh.set_instance_custom_data]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2120
+msgid ""
+"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
+"set_instance_transform]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2129
+msgid ""
+"Sets the [Transform2D] for this instance. For use when multimesh is used in "
+"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2137
+msgid ""
+"Sets all data related to the instances in one go. This is especially useful "
+"when loading the data from disk or preparing the data from GDNative.\n"
+"\n"
+"All data is packed in one large float array. An array may look like this: "
+"Transform for instance 1, color data for instance 1, custom data for "
+"instance 1, transform for instance 2, color data for instance 2, etc.\n"
+"\n"
+"[Transform] is stored as 12 floats, [Transform2D] is stored as 8 floats, "
+"[code]COLOR_8BIT[/code] / [code]CUSTOM_DATA_8BIT[/code] is stored as 1 float "
+"(4 bytes as is) and [code]COLOR_FLOAT[/code] / [code]CUSTOM_DATA_FLOAT[/"
+"code] is stored as 4 floats."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2149
+msgid ""
+"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
+"mesh]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2157
+msgid ""
+"Sets the number of instances visible at a given time. If -1, all instances "
+"that have been allocated are drawn. Equivalent to [member MultiMesh."
+"visible_instance_count]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2163
+msgid ""
+"Creates a new omni light and adds it to the VisualServer. It can be accessed "
+"with the RID that is returned. This RID can be used in most [code]light_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this omni light to an instance using [method "
+"instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2171
+msgid ""
+"Creates a particle system and adds it to the VisualServer. It can be "
+"accessed with the RID that is returned. This RID will be used in all "
+"[code]particles_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach these particles to an instance using [method "
+"instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2180
+msgid ""
+"Calculates and returns the axis-aligned bounding box that contains all the "
+"particles. Equivalent to [method Particles.capture_aabb]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2187
+msgid "Returns [code]true[/code] if particles are currently set to emitting."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2194
+msgid ""
+"Returns [code]true[/code] if particles are not emitting and particles are "
+"set to inactive."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2201
+msgid ""
+"Add particle system to list of particle systems that need to be updated. "
+"Update will take place on the next frame, or on the next call to [method "
+"instances_cull_aabb], [method instances_cull_convex], or [method "
+"instances_cull_ray]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2208
+msgid ""
+"Reset the particles on the next update. Equivalent to [method Particles."
+"restart]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2216
+msgid ""
+"Sets the number of particles to be drawn and allocates the memory for them. "
+"Equivalent to [member Particles.amount]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2224
+msgid ""
+"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
+"to [member Particles.visibility_aabb]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2232
+msgid ""
+"Sets the draw order of the particles to one of the named enums from [enum "
+"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
+"to [member Particles.draw_order]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2241
+msgid ""
+"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
+"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
+"draw_pass_3], and [member Particles.draw_pass_4]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2249
+msgid ""
+"Sets the number of draw passes to use. Equivalent to [member Particles."
+"draw_passes]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2257
+msgid ""
+"Sets the [Transform] that will be used by the particles when they first emit."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2265
+msgid ""
+"If [code]true[/code], particles will emit over time. Setting to false does "
+"not reset the particles, but only stops their emission. Equivalent to "
+"[member Particles.emitting]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2273
+msgid ""
+"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2281
+msgid ""
+"Sets the frame rate that the particle system rendering will be fixed to. "
+"Equivalent to [member Particles.fixed_fps]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2289
+msgid ""
+"If [code]true[/code], uses fractional delta which smooths the movement of "
+"the particles. Equivalent to [member Particles.fract_delta]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2297
+msgid ""
+"Sets the lifetime of each particle in the system. Equivalent to [member "
+"Particles.lifetime]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2305
+msgid ""
+"If [code]true[/code], particles will emit once and then stop. Equivalent to "
+"[member Particles.one_shot]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2313
+msgid ""
+"Sets the preprocess time for the particles' animation. This lets you delay "
+"starting an animation until after the particles have begun emitting. "
+"Equivalent to [member Particles.preprocess]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2321
+msgid ""
+"Sets the material for processing the particles.\n"
+"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
+"to [member Particles.process_material]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2330
+msgid ""
+"Sets the emission randomness ratio. This randomizes the emission of "
+"particles within their phase. Equivalent to [member Particles.randomness]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2338
+msgid ""
+"Sets the speed scale of the particle system. Equivalent to [member Particles."
+"speed_scale]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2346
+msgid ""
+"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
+"they use global coordinates. Equivalent to [member Particles.local_coords]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2352
+msgid ""
+"Creates a reflection probe and adds it to the VisualServer. It can be "
+"accessed with the RID that is returned. This RID will be used in all "
+"[code]reflection_probe_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this reflection probe to an instance using "
+"[method instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2362
+msgid ""
+"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
+"to [member ReflectionProbe.interior_enable]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2370
+msgid ""
+"Sets the render cull mask for this reflection probe. Only instances with a "
+"matching cull mask will be rendered by this probe. Equivalent to [member "
+"ReflectionProbe.cull_mask]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2378
+msgid ""
+"If [code]true[/code], uses box projection. This can make reflections look "
+"more correct in certain situations. Equivalent to [member ReflectionProbe."
+"box_projection]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2386
+msgid ""
+"If [code]true[/code], computes shadows in the reflection probe. This makes "
+"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
+"enable_shadows]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2394
+msgid ""
+"Sets the size of the area that the reflection probe will capture. Equivalent "
+"to [member ReflectionProbe.extents]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2402
+msgid ""
+"Sets the intensity of the reflection probe. Intensity modulates the strength "
+"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2410
+msgid ""
+"Sets the ambient light color for this reflection probe when set to interior "
+"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2418
+msgid ""
+"Sets the energy multiplier for this reflection probes ambient light "
+"contribution when set to interior mode. Equivalent to [member "
+"ReflectionProbe.interior_ambient_energy]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2426
+msgid ""
+"Sets the contribution value for how much the reflection affects the ambient "
+"light for this reflection probe when set to interior mode. Useful so that "
+"ambient light matches the color of the room. Equivalent to [member "
+"ReflectionProbe.interior_ambient_contrib]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2434
+msgid ""
+"Sets the max distance away from the probe an object can be before it is "
+"culled. Equivalent to [member ReflectionProbe.max_distance]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2442
+msgid ""
+"Sets the origin offset to be used when this reflection probe is in box "
+"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2450
+msgid ""
+"Sets how often the reflection probe updates. Can either be once or every "
+"frame. See [enum ReflectionProbeUpdateMode] for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2459
+msgid ""
+"Schedules a callback to the corresponding named [code]method[/code] on "
+"[code]where[/code] after a frame has been drawn.\n"
+"The callback method must use only 1 argument which will be called with "
+"[code]userdata[/code]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2466
+msgid ""
+"Creates a scenario and adds it to the VisualServer. It can be accessed with "
+"the RID that is returned. This RID will be used in all [code]scenario_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"The scenario is the 3D world that all the visual instances exist in."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2476
+msgid ""
+"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
+"ScenarioDebugMode] for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2484
+msgid "Sets the environment that will be used with this scenario."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2492
+msgid ""
+"Sets the fallback environment to be used by this scenario. The fallback "
+"environment is used if no environment is set. Internally, this is used by "
+"the editor to provide a default environment."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2501
+msgid ""
+"Sets the size of the reflection atlas shared by all reflection probes in "
+"this scenario."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2511
+msgid ""
+"Sets a boot image. The color defines the background color. If [code]scale[/"
+"code] is [code]true[/code], the image will be scaled to fit the screen size. "
+"If [code]use_filter[/code] is [code]true[/code], the image will be scaled "
+"with linear interpolation. If [code]use_filter[/code] is [code]false[/code], "
+"the image will be scaled with nearest-neighbor interpolation."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2518
+msgid ""
+"If [code]true[/code], the engine will generate wireframes for use with the "
+"wireframe debug mode."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2525
+msgid ""
+"Sets the default clear color which is used when a specific clear color has "
+"not been selected."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2532
+msgid ""
+"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
+"code] builtin.\n"
+"The default value is [code]1.0[/code], which means [code]TIME[/code] will "
+"count the real time as it goes by, without narrowing or stretching it."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2540
+msgid "Enables or disables occlusion culling."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2546
+msgid ""
+"Creates an empty shader and adds it to the VisualServer. It can be accessed "
+"with the RID that is returned. This RID will be used in all [code]shader_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2554
+msgid "Returns a shader's code."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2562
+msgid "Returns a default texture from a shader searched by name."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2569
+msgid "Returns the parameters of a shader."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2577
+msgid "Sets a shader's code."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2586
+msgid "Sets a shader's default texture. Overwrites the texture given by name."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2595
+msgid "Allocates the GPU buffers for this skeleton."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2603
+msgid "Returns the [Transform] set for a specific bone of this skeleton."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2611
+msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2620
+msgid "Sets the [Transform] for a specific bone of this skeleton."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2629
+msgid "Sets the [Transform2D] for a specific bone of this skeleton."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2635
+msgid ""
+"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
+"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2643
+msgid "Returns the number of bones allocated for this skeleton."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2649
+msgid ""
+"Creates an empty sky and adds it to the VisualServer. It can be accessed "
+"with the RID that is returned. This RID will be used in all [code]sky_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2659
+msgid "Sets a sky's texture."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2665
+msgid ""
+"Creates a spot light and adds it to the VisualServer. It can be accessed "
+"with the RID that is returned. This RID can be used in most [code]light_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method.\n"
+"To place in a scene, attach this spot light to an instance using [method "
+"instance_set_base] using the returned RID."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2686
+msgid "Allocates the GPU memory for the texture."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2694
+msgid "Binds the texture to a texture slot."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2700
+msgid ""
+"Creates an empty texture and adds it to the VisualServer. It can be accessed "
+"with the RID that is returned. This RID will be used in all [code]texture_*[/"
+"code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2709
+msgid ""
+"Creates a texture, allocates the space for an image, and fills in the image."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2715
+msgid "Returns a list of all the textures and their information."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2723
+msgid ""
+"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
+"returns the [RID] of the image at one of the cubes sides."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2730
+msgid "Returns the depth of the texture."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2737
+msgid "Returns the flags of a texture."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2744
+msgid "Returns the format of the texture's image."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2751
+msgid "Returns the texture's height."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2758
+msgid "Returns the texture's path."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2765
+msgid "Returns the opengl id of the texture's image."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2772
+msgid "Returns the type of the texture, can be any of the [enum TextureType]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2779
+msgid "Returns the texture's width."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2788
+msgid ""
+"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
+"a cube side."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2804
+msgid ""
+"Sets a part of the data for a texture. Warning: this function calls the "
+"underlying graphics API directly and may corrupt your texture if used "
+"improperly."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2812
+msgid "Sets the texture's flags. See [enum TextureFlags] for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2820
+msgid "Sets the texture's path."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2827
+msgid ""
+"If [code]true[/code], sets internal processes to shrink all image data to "
+"half the size."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2844
+msgid ""
+"If [code]true[/code], the image will be stored in the texture's images array "
+"if overwritten."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2852
+msgid "Sets a viewport's camera."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2860
+msgid "Sets a viewport's canvas."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2869
+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 "
+"viewport does not use a framebuffer and the contents of the viewport are "
+"rendered directly to screen. However, note that the root viewport is drawn "
+"last, therefore it will draw over the screen. Accordingly, you must set the "
+"root viewport to an area that does not cover the area that you have attached "
+"this viewport to.\n"
+"For example, you can set the root viewport to not render at all with the "
+"following code:\n"
+"[codeblock]\n"
+"func _ready():\n"
+" get_viewport().set_attach_to_screen_rect(Rect2())\n"
+" $Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))\n"
+"[/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 "
+"viewport_set_render_direct_to_screen]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2882
+msgid ""
+"Creates an empty viewport and adds it to the VisualServer. It can be "
+"accessed with the RID that is returned. This RID will be used in all "
+"[code]viewport_*[/code] VisualServer functions.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"VisualServer's [method free_rid] static method."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2890
+msgid "Detaches the viewport from the screen."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2898
+msgid ""
+"Returns a viewport's render information. For options, see the [enum "
+"ViewportRenderInfo] constants."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2905
+msgid "Returns the viewport's last rendered frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2913
+msgid "Detaches a viewport from a canvas and vice versa."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2921
+msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2931
+msgid ""
+"Sets the stacking order for a viewport's canvas.\n"
+"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
+"specifies the stacking order of the canvas among those in the same layer."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2941
+msgid "Sets the transformation of a viewport's canvas."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2949
+msgid ""
+"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2957
+msgid ""
+"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
+"options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2965
+msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2973
+msgid ""
+"If [code]true[/code], rendering of a viewport's environment is disabled."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2981
+msgid "Sets the viewport's global transformation matrix."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2989
+msgid "If [code]true[/code], the viewport renders to hdr."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:2997
+msgid "If [code]true[/code], the viewport's canvas is not rendered."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3005
+msgid "Currently unimplemented in Godot 3.x."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3013
+msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3021
+msgid "Sets the viewport's parent to another viewport."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3029
+msgid ""
+"If [code]true[/code], render the contents of the viewport directly to "
+"screen. This allows a low-level optimization where you can skip drawing a "
+"viewport to the root viewport. While this optimization can result in a "
+"significant increase in speed (especially on older devices), it comes at a "
+"cost of usability. When this is enabled, you cannot read from the viewport "
+"or from the [code]SCREEN_TEXTURE[/code]. You also lose the benefit of "
+"certain window settings, such as the various stretch modes. Another "
+"consequence to be aware of is that in 2D the rendering happens in window "
+"coordinates, so if you have a viewport that is double the size of the "
+"window, and you set this, then only the portion that fits within the window "
+"will be drawn, no automatic scaling is possible, even if your game scene is "
+"significantly larger than the window size."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3037
+msgid ""
+"Sets a viewport's scenario.\n"
+"The scenario contains information about the [enum ScenarioDebugMode], "
+"environment information, reflection atlas etc."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3047
+msgid "Sets the shadow atlas quadrant's subdivision."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3055
+msgid ""
+"Sets the size of the shadow atlas's images (used for omni and spot lights). "
+"The value will be rounded up to the nearest power of 2."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3063
+msgid ""
+"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
+"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
+"will be applied to the 3D viewport. This has a low performance cost and can "
+"be used to recover some of the sharpness lost from using FXAA. Values around "
+"[code]0.5[/code] generally give the best results. See also [method "
+"viewport_set_use_fxaa]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3072
+msgid "Sets the viewport's width and height."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3080
+msgid ""
+"If [code]true[/code], the viewport renders its background as transparent."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3088
+msgid ""
+"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
+"constants for options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3096
+msgid ""
+"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
+"options."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3104
+msgid ""
+"If [code]true[/code], the viewport uses augmented or virtual reality "
+"technologies. See [ARVRInterface]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3112
+msgid ""
+"If [code]true[/code], uses a fast post-processing filter to make banding "
+"significantly less visible. In some cases, debanding may introduce a "
+"slightly noticeable dithering pattern. It's recommended to enable debanding "
+"only when actually needed since the dithering pattern will make lossless-"
+"compressed screenshots larger.\n"
+"[b]Note:[/b] Only available on the GLES3 backend. [member Viewport.hdr] must "
+"also be [code]true[/code] for debanding to be effective."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3121
+msgid ""
+"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
+"screen-space antialiasing method, which is fast but will make the image look "
+"blurry, especially at lower resolutions. It can still work relatively well "
+"at large resolutions such as 1440p and 4K. Some of the lost sharpness can be "
+"recovered by enabling contrast-adaptive sharpening (see [method "
+"viewport_set_sharpen_intensity])."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3129
+msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3135
+msgid ""
+"If [code]false[/code], disables rendering completely, but the engine logic "
+"is still being processed. You can call [method force_draw] to draw a frame "
+"even with rendering disabled."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3141
+msgid ""
+"Emitted at the end of the frame, after the VisualServer has finished "
+"updating all the Viewports."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3146
+msgid ""
+"Emitted at the beginning of the frame, before the VisualServer updates all "
+"the Viewports."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3152
+msgid "Marks an error that shows that the index array is empty."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3155
+msgid "Number of weights/bones per vertex."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3158
+msgid "The minimum Z-layer for canvas items."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3161
+msgid "The maximum Z-layer for canvas items."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3164
+msgid ""
+"Max number of glow levels that can be used with glow post-process effect."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3167
+msgid "Unused enum in Godot 3.x."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3170
+msgid "The minimum renderpriority of all materials."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3173
+msgid "The maximum renderpriority of all materials."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3176
+msgid "Marks the left side of a cubemap."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3179
+msgid "Marks the right side of a cubemap."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3182
+msgid "Marks the bottom side of a cubemap."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3185
+msgid "Marks the top side of a cubemap."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3188
+msgid "Marks the front side of a cubemap."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3191
+msgid "Marks the back side of a cubemap."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3194
+msgid "Normal texture with 2 dimensions, width and height."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3197
+msgid ""
+"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
+"shader."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3200
+msgid "An array of 2-dimensional textures."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3203
+msgid "A 3-dimensional texture with width, height, and depth."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3209
+msgid "Repeats the texture (instead of clamp to edge)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3222
+msgid "Repeats the texture with alternate sections mirrored."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3228
+msgid ""
+"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
+"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3231
+msgid "Shader is a 3D shader."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3234
+msgid "Shader is a 2D shader."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3237
+msgid "Shader is a particle shader."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3240
+msgid "Represents the size of the [enum ShaderMode] enum."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3243
+msgid "Array is a vertex array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3246
+msgid "Array is a normal array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3249
+msgid "Array is a tangent array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3252
+msgid "Array is a color array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3255
+msgid "Array is an UV coordinates array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3258
+msgid "Array is an UV coordinates array for the second UV coordinates."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3261
+msgid "Array contains bone information."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3264
+msgid "Array is weight information."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3267
+msgid "Array is index array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3273
+msgid "Flag used to mark a vertex array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3276
+msgid "Flag used to mark a normal array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3279
+msgid "Flag used to mark a tangent array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3282
+msgid "Flag used to mark a color array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3285
+msgid "Flag used to mark an UV coordinates array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3288
+msgid ""
+"Flag used to mark an UV coordinates array for the second UV coordinates."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3291
+msgid "Flag used to mark a bone information array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3294
+msgid "Flag used to mark a weights array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3297
+msgid "Flag used to mark an index array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3336
+msgid ""
+"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
+"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
+"ARRAY_COMPRESS_TEX_UV], [constant ARRAY_COMPRESS_TEX_UV2], [constant "
+"ARRAY_COMPRESS_WEIGHTS], and [constant "
+"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3339
+msgid "Primitive to draw consists of points."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3342
+msgid "Primitive to draw consists of lines."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3345
+msgid "Primitive to draw consists of a line strip from start to end."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3348
+msgid ""
+"Primitive to draw consists of a line loop (a line strip with a line between "
+"the last and the first vertex)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3351
+msgid "Primitive to draw consists of triangles."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3354
+msgid ""
+"Primitive to draw consists of a triangle strip (the last 3 vertices are "
+"always combined to make a triangle)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3357
+msgid ""
+"Primitive to draw consists of a triangle strip (the last 2 vertices are "
+"always combined with the first to make a triangle)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3360
+msgid "Represents the size of the [enum PrimitiveType] enum."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3369
+msgid "Is a directional (sun) light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3372
+msgid "Is an omni light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3375
+msgid "Is a spot light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3378
+msgid "The light's energy."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3381
+msgid "Secondary multiplier used with indirect light (light bounces)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3384
+msgid ""
+"The light's size, currently only used for soft shadows in baked lightmaps."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3387
+msgid "The light's influence on specularity."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3390
+msgid "The light's range."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3393
+msgid "The light's attenuation."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3396
+msgid "The spotlight's angle."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3399
+msgid "The spotlight's attenuation."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3402
+msgid "Scales the shadow color."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3405
+msgid "Max distance that shadows will be rendered."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3408
+msgid "Proportion of shadow atlas occupied by the first split."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3411
+msgid "Proportion of shadow atlas occupied by the second split."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3414
+msgid ""
+"Proportion of shadow atlas occupied by the third split. The fourth split "
+"occupies the rest."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3417
+msgid ""
+"Normal bias used to offset shadow lookup by object normal. Can be used to "
+"fix self-shadowing artifacts."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3420
+msgid "Bias the shadow lookup to fix self-shadowing artifacts."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3423
+msgid ""
+"Increases bias on further splits to fix self-shadowing that only occurs far "
+"away from the camera."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3426
+msgid "Represents the size of the [enum LightParam] enum."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3435
+msgid "Use a dual paraboloid shadow map for omni lights."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3438
+msgid ""
+"Use a cubemap shadow map for omni lights. Slower but better quality than "
+"dual paraboloid."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3441
+msgid "Use more detail vertically when computing shadow map."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3444
+msgid "Use more detail horizontally when computing shadow map."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3447
+msgid "Use orthogonal shadow projection for directional light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3450
+msgid "Use 2 splits for shadow projection when using directional light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3453
+msgid "Use 4 splits for shadow projection when using directional light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3456
+msgid ""
+"Keeps shadows stable as camera moves but has lower effective resolution."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3459
+msgid ""
+"Optimize use of shadow maps, increasing the effective resolution. But may "
+"result in shadows moving or flickering slightly."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3462
+msgid "Do not update the viewport."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3465
+msgid "Update the viewport once then set to disabled."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3468
+msgid "Update the viewport whenever it is visible."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3471
+msgid "Always update the viewport."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3474
+msgid "The viewport is always cleared before drawing."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3477
+msgid "The viewport is never cleared before drawing."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3480
+msgid ""
+"The viewport is cleared once, then the clear mode is set to [constant "
+"VIEWPORT_CLEAR_NEVER]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3483
+msgid "Multisample antialiasing is disabled."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3486
+msgid "Multisample antialiasing is set to 2×."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3489
+msgid "Multisample antialiasing is set to 4×."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3492
+msgid "Multisample antialiasing is set to 8×."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3495
+msgid "Multisample antialiasing is set to 16×."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3498
+msgid ""
+"Multisample antialiasing is set to 2× on external texture. Special mode for "
+"GLES2 Android VR (Oculus Quest and Go)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3501
+msgid ""
+"Multisample antialiasing is set to 4× on external texture. Special mode for "
+"GLES2 Android VR (Oculus Quest and Go)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3504
+msgid "The Viewport does not render 3D but samples."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3507
+msgid "The Viewport does not render 3D and does not sample."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3510
+msgid "The Viewport renders 3D with effects."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3513
+msgid "The Viewport renders 3D but without effects."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3516
+msgid "Number of objects drawn in a single frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3519
+msgid "Number of vertices drawn in a single frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3522
+msgid "Number of material changes during this frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3525
+msgid "Number of shader changes during this frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3528
+msgid "Number of surface changes during this frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3531
+msgid "Number of draw calls during this frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3534
+msgid "Number of 2d items drawn this frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3537
+msgid "Number of 2d draw calls during this frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3540
+msgid "Represents the size of the [enum ViewportRenderInfo] enum."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3543
+msgid "Debug draw is disabled. Default setting."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3546
+msgid "Debug draw sets objects to unshaded."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3549
+msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3552
+msgid "Debug draw draws objects in wireframe."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3555
+msgid "Do not use a debug mode."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3558
+msgid "Draw all objects as wireframe models."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3561
+msgid ""
+"Draw all objects in a way that displays how much overdraw is occurring. "
+"Overdraw occurs when a section of pixels is drawn and shaded and then "
+"another object covers it up. To optimize a scene, you should reduce overdraw."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3564
+msgid ""
+"Draw all objects without shading. Equivalent to setting all objects shaders "
+"to [code]unshaded[/code]."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3567
+msgid "The instance does not have a type."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3570
+msgid "The instance is a mesh."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3573
+msgid "The instance is a multimesh."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3576
+msgid "The instance is an immediate geometry."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3579
+msgid "The instance is a particle emitter."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3582
+msgid "The instance is a light."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3585
+msgid "The instance is a reflection probe."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3588
+msgid "The instance is a GI probe."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3591
+msgid "The instance is a lightmap capture."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3594
+msgid "Represents the size of the [enum InstanceType] enum."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3597
+msgid ""
+"A combination of the flags of geometry instances (mesh, multimesh, immediate "
+"and particles)."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3600
+msgid "Allows the instance to be used in baked lighting."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3603
+msgid "When set, manually requests to draw geometry on next frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3606
+msgid "Represents the size of the [enum InstanceFlags] enum."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3609
+msgid "Disable shadows from this instance."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3612
+msgid "Cast shadows from this instance."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3615
+msgid ""
+"Disable backface culling when rendering the shadow of the object. This is "
+"slightly slower but may result in more correct shadows."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3618
+msgid ""
+"Only render the shadows from the object. The object itself will not be drawn."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3621
+msgid "The nine patch gets stretched where needed."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3624
+msgid "The nine patch gets filled with tiles where needed."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3627
+msgid ""
+"The nine patch gets filled with tiles where needed and stretches them a bit "
+"if needed."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3630
+msgid "Adds light color additive to the canvas."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3633
+msgid "Adds light color subtractive to the canvas."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3636
+msgid "The light adds color depending on transparency."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3639
+msgid "The light adds color depending on mask."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3642
+msgid "Do not apply a filter to canvas light shadows."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3645
+msgid "Use PCF3 filtering to filter canvas light shadows."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3648
+msgid "Use PCF5 filtering to filter canvas light shadows."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3651
+msgid "Use PCF7 filtering to filter canvas light shadows."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3654
+msgid "Use PCF9 filtering to filter canvas light shadows."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3657
+msgid "Use PCF13 filtering to filter canvas light shadows."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3660
+msgid "Culling of the canvas occluder is disabled."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3663
+msgid "Culling of the canvas occluder is clockwise."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3666
+msgid "Culling of the canvas occluder is counterclockwise."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3669
+msgid "The amount of objects in the frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3672
+msgid "The amount of vertices in the frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3675
+msgid "The amount of modified materials in the frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3678
+msgid "The amount of shader rebinds in the frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3681
+msgid "The amount of surface changes in the frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3684
+msgid "The amount of draw calls in frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3687
+msgid "The amount of 2d items in the frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3690
+msgid "The amount of 2d draw calls in frame."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3705
+msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3708
+msgid ""
+"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3711
+msgid "Use [Transform2D] to store MultiMesh transform."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3714
+msgid "Use [Transform] to store MultiMesh transform."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3717
+msgid "MultiMesh does not use per-instance color."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3720
+msgid ""
+"MultiMesh color uses 8 bits per component. This packs the color into a "
+"single float."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3723
+msgid "MultiMesh color uses a float per channel."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3726
+msgid "MultiMesh does not use custom data."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3729
+msgid ""
+"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
+"custom data into a single float."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3732
+msgid "MultiMesh custom data uses a float per component."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3735
+msgid "Reflection probe will update reflections once and then stop."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3738
+msgid ""
+"Reflection probe will update each frame. This mode is necessary to capture "
+"moving objects."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3741
+msgid "Draw particles in the order that they appear in the particles array."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3744
+msgid "Sort particles based on their lifetime."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3747
+msgid "Sort particles based on their distance to the camera."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3750
+msgid "Use the clear color as background."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3753
+msgid "Use a specified color as the background."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3756
+msgid "Use a sky resource for the background."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3759
+msgid ""
+"Use a custom color for background, but use a sky for shading and reflections."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3762
+msgid ""
+"Use a specified canvas layer as the background. This can be useful for "
+"instantiating a 2D scene in a 3D world."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3765
+msgid ""
+"Do not clear the background, use whatever was rendered last frame as the "
+"background."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3768
+msgid "Represents the size of the [enum EnvironmentBG] enum."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3771
+msgid "Use lowest blur quality. Fastest, but may look bad."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3774
+msgid "Use medium blur quality."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3777
+msgid "Used highest blur quality. Looks the best, but is the slowest."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3780
+msgid "Add the effect of the glow on top of the scene."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3783
+msgid ""
+"Blends the glow effect with the screen. Does not get as bright as additive."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3786
+msgid "Produces a subtle color disturbance around objects."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3789
+msgid "Shows the glow effect by itself without the underlying scene."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3792
+msgid "Output color as they came in."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3795
+msgid "Use the Reinhard tonemapper."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3798
+msgid "Use the filmic tonemapper."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3801
+msgid "Use the ACES tonemapper."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3804
+msgid "Use the ACES Fitted tonemapper."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3807
+msgid "Lowest quality of screen space ambient occlusion."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3810
+msgid "Medium quality screen space ambient occlusion."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3813
+msgid "Highest quality screen space ambient occlusion."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3816
+msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3819
+msgid "Perform a 1x1 blur on the SSAO output."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3822
+msgid "Performs a 2x2 blur on the SSAO output."
+msgstr ""
+
+#: doc/classes/VisualServer.xml:3825
+msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:4
+msgid "A custom shader program with a visual editor."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:7
+msgid ""
+"This class allows you to define a custom shader program that can be used for "
+"various materials to render objects.\n"
+"The visual shader editor creates the shader."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:20
+msgid "Adds the specified node to the shader."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:31
+msgid ""
+"Returns [code]true[/code] if the specified nodes and ports can be connected "
+"together."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:42 doc/classes/VisualShader.xml:64
+msgid "Connects the specified nodes and ports."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:53
+msgid ""
+"Connects the specified nodes and ports, even if they can't be connected. "
+"Such connection is invalid and will not function properly."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:72
+msgid ""
+"Returns the shader node instance with specified [code]type[/code] and "
+"[code]id[/code]."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:79
+msgid "Returns the list of connected nodes with the specified type."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:86
+msgid "Returns the list of all nodes in the shader with the specified type."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:94
+msgid "Returns the position of the specified node within the shader graph."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:111
+msgid ""
+"Returns [code]true[/code] if the specified node and port connection exist."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:119
+msgid "Removes the specified node from the shader."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:126
+msgid "Sets the mode of this shader."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:135
+msgid "Sets the position of the specified node."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:141
+msgid "The offset vector of the whole graph."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:146
+msgid "A vertex shader, operating on vertices."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:149
+msgid "A fragment shader, operating on fragments (pixels)."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:152
+msgid "A shader for light calculations."
+msgstr ""
+
+#: doc/classes/VisualShader.xml:155
+msgid "Represents the size of the [enum Type] enum."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:4
+msgid "Base class for nodes in a visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:7
+msgid ""
+"Visual shader graphs consist of various nodes. Each node in the graph is a "
+"separate object and they are represented as a rectangular boxes with title "
+"and a set of properties. Each node has also connection ports that allow to "
+"connect it to another nodes and control the flow of the shader."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:10
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/shading/visual_shaders.html"
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:16
+msgid ""
+"Returns an [Array] containing default values for all of the input ports of "
+"the node in the form [code][index0, value0, index1, value1, ...][/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:23
+msgid "Returns the default value of the input [code]port[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:30
+msgid ""
+"Sets the default input ports values using an [Array] of the form [code]"
+"[index0, value0, index1, value1, ...][/code]. For example: [code][0, "
+"Vector3(0, 0, 0), 1, Vector3(0, 0, 0)][/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:38
+msgid "Sets the default value for the selected input [code]port[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:44
+msgid ""
+"Sets the output port index which will be showed for preview. If set to "
+"[code]-1[/code] no port will be open for preview."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:50
+msgid ""
+"Emitted when the node requests an editor refresh. Currently called only in "
+"setter of [member VisualShaderNodeTexture.source], "
+"[VisualShaderNodeTexture], and [VisualShaderNodeCubeMap] (and their "
+"derivatives)."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:56
+msgid ""
+"Floating-point scalar. Translated to [code]float[/code] type in shader code."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:59
+msgid ""
+"3D vector of floating-point values. Translated to [code]vec3[/code] type in "
+"shader code."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:62
+msgid "Boolean type. Translated to [code]bool[/code] type in shader code."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:65
+msgid "Transform type. Translated to [code]mat4[/code] type in shader code."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:68
+msgid ""
+"Sampler type. Translated to reference of sampler uniform in shader code. Can "
+"only be used for input ports in non-uniform nodes."
+msgstr ""
+
+#: doc/classes/VisualShaderNode.xml:71
+msgid "Represents the size of the [enum PortType] enum."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeBooleanConstant.xml:4
+msgid "A boolean constant to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeBooleanConstant.xml:7
+msgid ""
+"Has only one output port and no inputs.\n"
+"Translated to [code]bool[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeBooleanConstant.xml:16
+msgid "A boolean constant which represents a state of this node."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeBooleanUniform.xml:4
+msgid "A boolean uniform to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeBooleanUniform.xml:7
+msgid "Translated to [code]uniform bool[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorConstant.xml:4
+msgid "A [Color] constant to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorConstant.xml:7
+msgid ""
+"Has two output ports representing RGB and alpha channels of [Color].\n"
+"Translated to [code]vec3 rgb[/code] and [code]float alpha[/code] in the "
+"shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorConstant.xml:16
+msgid "A [Color] constant which represents a state of this node."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorFunc.xml:4
+msgid "A [Color] function to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorFunc.xml:7
+msgid ""
+"Accept a [Color] to the input port and transform it according to [member "
+"function]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorFunc.xml:15
+msgid ""
+"A function to be applied to the input color. See [enum Function] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorFunc.xml:20
+msgid ""
+"Converts the color to grayscale using the following formula:\n"
+"[codeblock]\n"
+"vec3 c = input;\n"
+"float max1 = max(c.r, c.g);\n"
+"float max2 = max(max1, c.b);\n"
+"float max3 = max(max1, max2);\n"
+"return vec3(max3, max3, max3);\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorFunc.xml:30
+msgid ""
+"Applies sepia tone effect using the following formula:\n"
+"[codeblock]\n"
+"vec3 c = input;\n"
+"float r = (c.r * 0.393) + (c.g * 0.769) + (c.b * 0.189);\n"
+"float g = (c.r * 0.349) + (c.g * 0.686) + (c.b * 0.168);\n"
+"float b = (c.r * 0.272) + (c.g * 0.534) + (c.b * 0.131);\n"
+"return vec3(r, g, b);\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:4
+msgid "A [Color] operator to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:7
+msgid "Applies [member operator] to two color inputs."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:15
+msgid ""
+"An operator to be applied to the inputs. See [enum Operator] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:20
+msgid ""
+"Produce a screen effect with the following formula:\n"
+"[codeblock]\n"
+"result = vec3(1.0) - (vec3(1.0) - a) * (vec3(1.0) - b);\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:26
+msgid ""
+"Produce a difference effect with the following formula:\n"
+"[codeblock]\n"
+"result = abs(a - b);\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:32
+msgid ""
+"Produce a darken effect with the following formula:\n"
+"[codeblock]\n"
+"result = min(a, b);\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:38
+msgid ""
+"Produce a lighten effect with the following formula:\n"
+"[codeblock]\n"
+"result = max(a, b);\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:44
+msgid ""
+"Produce an overlay effect with the following formula:\n"
+"[codeblock]\n"
+"for (int i = 0; i < 3; i++) {\n"
+" float base = a[i];\n"
+" float blend = b[i];\n"
+" if (base < 0.5) {\n"
+" result[i] = 2.0 * base * blend;\n"
+" } else {\n"
+" result[i] = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base);\n"
+" }\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:58
+msgid ""
+"Produce a dodge effect with the following formula:\n"
+"[codeblock]\n"
+"result = a / (vec3(1.0) - b);\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:64
+msgid ""
+"Produce a burn effect with the following formula:\n"
+"[codeblock]\n"
+"result = vec3(1.0) - (vec3(1.0) - a) / b;\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:70
+msgid ""
+"Produce a soft light effect with the following formula:\n"
+"[codeblock]\n"
+"for (int i = 0; i < 3; i++) {\n"
+" float base = a[i];\n"
+" float blend = b[i];\n"
+" if (base < 0.5) {\n"
+" result[i] = base * (blend + 0.5);\n"
+" } else {\n"
+" result[i] = 1.0 - (1.0 - base) * (1.0 - (blend - 0.5));\n"
+" }\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorOp.xml:84
+msgid ""
+"Produce a hard light effect with the following formula:\n"
+"[codeblock]\n"
+"for (int i = 0; i < 3; i++) {\n"
+" float base = a[i];\n"
+" float blend = b[i];\n"
+" if (base < 0.5) {\n"
+" result[i] = base * (2.0 * blend);\n"
+" } else {\n"
+" result[i] = 1.0 - (1.0 - base) * (1.0 - 2.0 * (blend - 0.5));\n"
+" }\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorUniform.xml:4
+msgid "A [Color] uniform to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeColorUniform.xml:7
+msgid "Translated to [code]uniform vec4[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:4
+msgid "A comparison function for common types within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:7
+msgid ""
+"Compares [code]a[/code] and [code]b[/code] of [member type] by [member "
+"function]. Returns a boolean scalar. Translates to [code]if[/code] "
+"instruction in shader code."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:15
+msgid ""
+"Extra condition which is applied if [member type] is set to [constant "
+"CTYPE_VECTOR]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:18
+msgid "A comparison function. See [enum Function] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:21
+msgid ""
+"The type to be used in the comparison. See [enum ComparisonType] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:26
+msgid "A floating-point scalar."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:29
+msgid "A 3D vector type."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:32
+msgid "A boolean type."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:35
+msgid "A transform ([code]mat4[/code]) type."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:38
+msgid "Comparison for equality ([code]a == b[/code])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:41
+msgid "Comparison for inequality ([code]a != b[/code])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:44
+msgid ""
+"Comparison for greater than ([code]a > b[/code]). Cannot be used if [member "
+"type] set to [constant CTYPE_BOOLEAN] or [constant CTYPE_TRANSFORM]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:47
+msgid ""
+"Comparison for greater than or equal ([code]a >= b[/code]). Cannot be used "
+"if [member type] set to [constant CTYPE_BOOLEAN] or [constant "
+"CTYPE_TRANSFORM]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:50
+msgid ""
+"Comparison for less than ([code]a < b[/code]). Cannot be used if [member "
+"type] set to [constant CTYPE_BOOLEAN] or [constant CTYPE_TRANSFORM]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:53
+msgid ""
+"Comparison for less than or equal ([code]a < b[/code]). Cannot be used if "
+"[member type] set to [constant CTYPE_BOOLEAN] or [constant CTYPE_TRANSFORM]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:56
+msgid ""
+"The result will be true if all of component in vector satisfy the comparison "
+"condition."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCompare.xml:59
+msgid ""
+"The result will be true if any of component in vector satisfy the comparison "
+"condition."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:4
+msgid "A [CubeMap] sampling node to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:7
+msgid ""
+"Translated to [code]texture(cubemap, vec3)[/code] in the shader language. "
+"Returns a color vector and alpha channel as scalar."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:15
+msgid ""
+"The [CubeMap] texture to sample when using [constant SOURCE_TEXTURE] as "
+"[member source]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:18
+msgid ""
+"Defines which source should be used for the sampling. See [enum Source] for "
+"options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:21
+#: doc/classes/VisualShaderNodeTextureUniform.xml:18
+msgid ""
+"Defines the type of data provided by the source texture. See [enum "
+"TextureType] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:26
+msgid ""
+"Use the [CubeMap] set via [member cube_map]. If this is set to [member "
+"source], the [code]samplerCube[/code] port is ignored."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:29
+msgid ""
+"Use the [CubeMap] sampler reference passed via the [code]samplerCube[/code] "
+"port. If this is set to [member source], the [member cube_map] texture is "
+"ignored."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:32
+#: doc/classes/VisualShaderNodeTexture.xml:44
+#: doc/classes/VisualShaderNodeTextureUniform.xml:23
+msgid "No hints are added to the uniform declaration."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:35
+#: doc/classes/VisualShaderNodeTexture.xml:47
+#: doc/classes/VisualShaderNodeTextureUniform.xml:26
+msgid ""
+"Adds [code]hint_albedo[/code] as hint to the uniform declaration for proper "
+"sRGB to linear conversion."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMap.xml:38
+#: doc/classes/VisualShaderNodeTexture.xml:50
+#: doc/classes/VisualShaderNodeTextureUniform.xml:29
+msgid ""
+"Adds [code]hint_normal[/code] as hint to the uniform declaration, which "
+"internally converts the texture for proper usage as normal map."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMapUniform.xml:4
+msgid "A [CubeMap] uniform node to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCubeMapUniform.xml:7
+msgid ""
+"Translated to [code]uniform samplerCube[/code] in the shader language. The "
+"output value can be used as port for [VisualShaderNodeCubeMap]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:4
+msgid ""
+"Virtual class to define custom [VisualShaderNode]s for use in the Visual "
+"Shader Editor."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:7
+msgid ""
+"By inheriting this class you can create a custom [VisualShader] script addon "
+"which will be automatically added to the Visual Shader Editor. The "
+"[VisualShaderNode]'s behavior is defined by overriding the provided virtual "
+"methods.\n"
+"In order for the node to be registered as an editor addon, you must use the "
+"[code]tool[/code] keyword and provide a [code]class_name[/code] for your "
+"custom script. For example:\n"
+"[codeblock]\n"
+"tool\n"
+"extends VisualShaderNodeCustom\n"
+"class_name VisualShaderNodeNoise\n"
+"[/codeblock]"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:16
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/"
+"visual_shader_plugins.html"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:22
+msgid ""
+"Override this method to define the category of the associated custom node in "
+"the Visual Shader Editor's members dialog. The path may look like "
+"[code]\"MyGame/MyFunctions/Noise\"[/code].\n"
+"Defining this method is [b]optional[/b]. If not overridden, the node will be "
+"filed under the \"Custom\" category."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:33
+msgid ""
+"Override this method to define the actual shader code of the associated "
+"custom node. The shader code should be returned as a string, which can have "
+"multiple lines (the [code]\"\"\"[/code] multiline string construct can be "
+"used for convenience).\n"
+"The [code]input_vars[/code] and [code]output_vars[/code] arrays contain the "
+"string names of the various input and output variables, as defined by "
+"[code]_get_input_*[/code] and [code]_get_output_*[/code] virtual methods in "
+"this class.\n"
+"The output ports can be assigned values in the shader code. For example, "
+"[code]return output_vars[0] + \" = \" + input_vars[0] + \";\"[/code].\n"
+"You can customize the generated code based on the shader [code]mode[/code] "
+"(see [enum Shader.Mode]) and/or [code]type[/code] (see [enum VisualShader."
+"Type]).\n"
+"Defining this method is [b]required[/b]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:43
+msgid ""
+"Override this method to define the description of the associated custom node "
+"in the Visual Shader Editor's members dialog.\n"
+"Defining this method is [b]optional[/b]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:51
+msgid ""
+"Override this method to add shader code on top of the global shader, to "
+"define your own standard library of reusable methods, varyings, constants, "
+"uniforms, etc. The shader code should be returned as a string, which can "
+"have multiple lines (the [code]\"\"\"[/code] multiline string construct can "
+"be used for convenience).\n"
+"Be careful with this functionality as it can cause name conflicts with other "
+"custom nodes, so be sure to give the defined entities unique names.\n"
+"You can customize the generated code based on the shader [code]mode[/code] "
+"(see [enum Shader.Mode]).\n"
+"Defining this method is [b]optional[/b]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:60
+msgid ""
+"Override this method to define the amount of input ports of the associated "
+"custom node.\n"
+"Defining this method is [b]required[/b]. If not overridden, the node has no "
+"input ports."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:68
+msgid ""
+"Override this method to define the names of input ports of the associated "
+"custom node. The names are used both for the input slots in the editor and "
+"as identifiers in the shader code, and are passed in the [code]input_vars[/"
+"code] array in [method _get_code].\n"
+"Defining this method is [b]optional[/b], but recommended. If not overridden, "
+"input ports are named as [code]\"in\" + str(port)[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:76
+msgid ""
+"Override this method to define the returned type of each input port of the "
+"associated custom node (see [enum VisualShaderNode.PortType] for possible "
+"types).\n"
+"Defining this method is [b]optional[/b], but recommended. If not overridden, "
+"input ports will return the [constant VisualShaderNode.PORT_TYPE_SCALAR] "
+"type."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:83
+msgid ""
+"Override this method to define the name of the associated custom node in the "
+"Visual Shader Editor's members dialog and graph.\n"
+"Defining this method is [b]optional[/b], but recommended. If not overridden, "
+"the node will be named as \"Unnamed\"."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:90
+msgid ""
+"Override this method to define the amount of output ports of the associated "
+"custom node.\n"
+"Defining this method is [b]required[/b]. If not overridden, the node has no "
+"output ports."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:98
+msgid ""
+"Override this method to define the names of output ports of the associated "
+"custom node. The names are used both for the output slots in the editor and "
+"as identifiers in the shader code, and are passed in the [code]output_vars[/"
+"code] array in [method _get_code].\n"
+"Defining this method is [b]optional[/b], but recommended. If not overridden, "
+"output ports are named as [code]\"out\" + str(port)[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:106
+msgid ""
+"Override this method to define the returned type of each output port of the "
+"associated custom node (see [enum VisualShaderNode.PortType] for possible "
+"types).\n"
+"Defining this method is [b]optional[/b], but recommended. If not overridden, "
+"output ports will return the [constant VisualShaderNode.PORT_TYPE_SCALAR] "
+"type."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:113
+msgid ""
+"Override this method to define the return icon of the associated custom node "
+"in the Visual Shader Editor's members dialog.\n"
+"Defining this method is [b]optional[/b]. If not overridden, no return icon "
+"is shown."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeCustom.xml:120
+msgid ""
+"Override this method to define the subcategory of the associated custom node "
+"in the Visual Shader Editor's members dialog.\n"
+"Defining this method is [b]optional[/b]. If not overridden, the node will be "
+"filed under the root of the main category (see [method _get_category])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeDeterminant.xml:4
+msgid ""
+"Calculates the determinant of a [Transform] within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeDeterminant.xml:7
+msgid "Translates to [code]determinant(x)[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeDotProduct.xml:4
+msgid "Calculates a dot product of two vectors within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeDotProduct.xml:7
+msgid "Translates to [code]dot(a, b)[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeExpression.xml:4
+msgid ""
+"A custom visual shader graph expression written in Godot Shading Language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeExpression.xml:7
+msgid ""
+"Custom Godot Shading Language expression, with a custom amount of input and "
+"output ports.\n"
+"The provided code is directly injected into the graph's matching shader "
+"function ([code]vertex[/code], [code]fragment[/code], or [code]light[/"
+"code]), so it cannot be used to declare functions, varyings, uniforms, or "
+"global constants. See [VisualShaderNodeGlobalExpression] for such global "
+"definitions."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeExpression.xml:16
+msgid ""
+"An expression in Godot Shading Language, which will be injected at the start "
+"of the graph's matching shader function ([code]vertex[/code], "
+"[code]fragment[/code], or [code]light[/code]), and thus cannot be used to "
+"declare functions, varyings, uniforms, or global constants."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeFaceForward.xml:4
+msgid ""
+"Returns the vector that points in the same direction as a reference vector "
+"within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeFaceForward.xml:7
+msgid ""
+"Translates to [code]faceforward(N, I, Nref)[/code] in the shader language. "
+"The function has three vector parameters: [code]N[/code], the vector to "
+"orient, [code]I[/code], the incident vector, and [code]Nref[/code], the "
+"reference vector. If the dot product of [code]I[/code] and [code]Nref[/code] "
+"is smaller than zero the return value is [code]N[/code]. Otherwise, [code]-"
+"N[/code] is returned."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeFresnel.xml:4
+msgid "A Fresnel effect to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeFresnel.xml:7
+msgid ""
+"Returns falloff based on the dot product of surface normal and view "
+"direction of camera (pass associated inputs to it)."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGlobalExpression.xml:4
+msgid ""
+"A custom global visual shader graph expression written in Godot Shading "
+"Language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGlobalExpression.xml:7
+msgid ""
+"Custom Godot Shader Language expression, which is placed on top of the "
+"generated shader. You can place various function definitions inside to call "
+"later in [VisualShaderNodeExpression]s (which are injected in the main "
+"shader functions). You can also declare varyings, uniforms and global "
+"constants."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:4
+msgid ""
+"Base class for a family of nodes with variable amount of input and output "
+"ports within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:7
+msgid "Currently, has no direct usage, use the derived classes instead."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:18
+msgid ""
+"Adds an input port with the specified [code]type[/code] (see [enum "
+"VisualShaderNode.PortType]) and [code]name[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:27
+msgid ""
+"Adds an output port with the specified [code]type[/code] (see [enum "
+"VisualShaderNode.PortType]) and [code]name[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:33
+msgid "Removes all previously specified input ports."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:39
+msgid "Removes all previously specified output ports."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:45
+msgid ""
+"Returns a free input port ID which can be used in [method add_input_port]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:51
+msgid ""
+"Returns a free output port ID which can be used in [method add_output_port]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:57
+msgid ""
+"Returns the number of input ports in use. Alternative for [method "
+"get_free_input_port_id]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:63
+msgid ""
+"Returns a [String] description of the input ports as a colon-separated list "
+"using the format [code]id,type,name;[/code] (see [method add_input_port])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:69
+msgid ""
+"Returns the number of output ports in use. Alternative for [method "
+"get_free_output_port_id]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:75
+msgid ""
+"Returns a [String] description of the output ports as a colon-separated list "
+"using the format [code]id,type,name;[/code] (see [method add_output_port])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:82
+msgid "Returns [code]true[/code] if the specified input port exists."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:89
+msgid "Returns [code]true[/code] if the specified output port exists."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:96
+msgid ""
+"Returns [code]true[/code] if the specified port name does not override an "
+"existed port name and is valid within the shader."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:103
+msgid "Removes the specified input port."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:110
+msgid "Removes the specified output port."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:118
+msgid "Renames the specified input port."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:126
+msgid ""
+"Sets the specified input port's type (see [enum VisualShaderNode.PortType])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:133
+msgid ""
+"Defines all input ports using a [String] formatted as a colon-separated "
+"list: [code]id,type,name;[/code] (see [method add_input_port])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:141
+msgid "Renames the specified output port."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:149
+msgid ""
+"Sets the specified output port's type (see [enum VisualShaderNode.PortType])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:156
+msgid ""
+"Defines all output ports using a [String] formatted as a colon-separated "
+"list: [code]id,type,name;[/code] (see [method add_output_port])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeGroupBase.xml:162
+msgid "The size of the node in the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeInput.xml:6
+msgid ""
+"Gives access to input variables (built-ins) available for the shader. See "
+"the shading reference for the list of available built-ins for each shader "
+"type (check [code]Tutorials[/code] section for link)."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeInput.xml:9
+msgid ""
+"https://docs.godotengine.org/en/3.4/tutorials/shading/shading_reference/"
+"index.html"
+msgstr ""
+
+#: doc/classes/VisualShaderNodeInput.xml:20
+msgid ""
+"One of the several input constants in lower-case style like: \"vertex"
+"\"([code]VERTEX[/code]) or \"point_size\"([code]POINT_SIZE[/code])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeIs.xml:4
+msgid ""
+"A boolean comparison operator to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeIs.xml:7
+msgid ""
+"Returns the boolean result of the comparison between [code]INF[/code] or "
+"[code]NaN[/code] and a scalar parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeIs.xml:15
+msgid "The comparison function. See [enum Function] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeIs.xml:20
+msgid "Comparison with [code]INF[/code] (Infinity)."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeIs.xml:23
+msgid ""
+"Comparison with [code]NaN[/code] (Not a Number; denotes invalid numeric "
+"results, e.g. division by zero)."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeOuterProduct.xml:4
+msgid ""
+"Calculates an outer product of two vectors within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeOuterProduct.xml:7
+msgid ""
+"[code]OuterProduct[/code] treats the first parameter [code]c[/code] as a "
+"column vector (matrix with one column) and the second parameter [code]r[/"
+"code] as a row vector (matrix with one row) and does a linear algebraic "
+"matrix multiply [code]c * r[/code], yielding a matrix whose number of rows "
+"is the number of components in [code]c[/code] and whose number of columns is "
+"the number of components in [code]r[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeOutput.xml:4
+msgid "Represents the output shader parameters within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeOutput.xml:7
+msgid ""
+"This visual shader node is present in all shader graphs in form of \"Output"
+"\" block with multiple output value ports."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarClamp.xml:4
+msgid "Clamps a scalar value within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarClamp.xml:7
+msgid ""
+"Constrains a value to lie between [code]min[/code] and [code]max[/code] "
+"values."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarDerivativeFunc.xml:4
+msgid "Calculates a scalar derivative within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarDerivativeFunc.xml:7
+#: doc/classes/VisualShaderNodeVectorDerivativeFunc.xml:7
+msgid ""
+"This node is only available in [code]Fragment[/code] and [code]Light[/code] "
+"visual shaders."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarDerivativeFunc.xml:15
+msgid "The derivative type. See [enum Function] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarDerivativeFunc.xml:20
+#: doc/classes/VisualShaderNodeVectorDerivativeFunc.xml:20
+msgid "Sum of absolute derivative in [code]x[/code] and [code]y[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarDerivativeFunc.xml:23
+#: doc/classes/VisualShaderNodeVectorDerivativeFunc.xml:23
+msgid "Derivative in [code]x[/code] using local differencing."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarDerivativeFunc.xml:26
+#: doc/classes/VisualShaderNodeVectorDerivativeFunc.xml:26
+msgid "Derivative in [code]y[/code] using local differencing."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarInterp.xml:4
+msgid ""
+"Linearly interpolates between two scalars within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarInterp.xml:7
+msgid "Translates to [code]mix(a, b, weight)[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarSmoothStep.xml:4
+msgid "Calculates a scalar SmoothStep function within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarSmoothStep.xml:7
+msgid ""
+"Translates to [code]smoothstep(edge0, edge1, x)[/code] in the shader "
+"language.\n"
+"Returns [code]0.0[/code] if [code]x[/code] is smaller than [code]edge0[/"
+"code] and [code]1.0[/code] if [code]x[/code] is larger than [code]edge1[/"
+"code]. Otherwise the return value is interpolated between [code]0.0[/code] "
+"and [code]1.0[/code] using Hermite polynomials."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarSwitch.xml:4
+msgid "A boolean/scalar function for use within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeScalarSwitch.xml:7
+msgid ""
+"Returns an associated scalar if the provided boolean value is [code]true[/"
+"code] or [code]false[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeSwitch.xml:4
+msgid "A boolean/vector function for use within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeSwitch.xml:7
+msgid ""
+"Returns an associated vector if the provided boolean value is [code]true[/"
+"code] or [code]false[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:4
+msgid "Performs a texture lookup within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:7
+msgid ""
+"Performs a lookup operation on the provided texture, with support for "
+"multiple texture sources to choose from."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:15
+msgid "Determines the source for the lookup. See [enum Source] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:18
+msgid "The source texture, if needed for the selected [member source]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:21
+msgid ""
+"Specifies the type of the texture if [member source] is set to [constant "
+"SOURCE_TEXTURE]. See [enum TextureType] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:26
+msgid "Use the texture given as an argument for this function."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:29
+msgid "Use the current viewport's texture as the source."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:32
+msgid ""
+"Use the texture from this shader's texture built-in (e.g. a texture of a "
+"[Sprite])."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:35
+msgid "Use the texture from this shader's normal map built-in."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:38
+msgid "Use the depth texture available for this shader."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTexture.xml:41
+msgid "Use the texture provided in the input port for this function."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTextureUniform.xml:4
+msgid "Performs a uniform texture lookup within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTextureUniform.xml:7
+msgid ""
+"Performs a lookup operation on the texture provided as a uniform for the "
+"shader."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTextureUniform.xml:15
+msgid "Sets the default color if no texture is assigned to the uniform."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTextureUniform.xml:32
+msgid ""
+"Adds [code]hint_aniso[/code] as hint to the uniform declaration to use for a "
+"flowmap."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTextureUniform.xml:35
+msgid "Defaults to white color."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTextureUniform.xml:38
+msgid "Defaults to black color."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTextureUniformTriplanar.xml:4
+msgid ""
+"Performs a uniform texture lookup with triplanar within the visual shader "
+"graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTextureUniformTriplanar.xml:7
+msgid ""
+"Performs a lookup operation on the texture provided as a uniform for the "
+"shader, with support for triplanar mapping."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformCompose.xml:4
+msgid ""
+"Composes a [Transform] from four [Vector3]s within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformCompose.xml:7
+msgid ""
+"Creates a 4x4 transform matrix using four vectors of type [code]vec3[/code]. "
+"Each vector is one row in the matrix and the last column is a [code]vec4(0, "
+"0, 0, 1)[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformConstant.xml:4
+msgid "A [Transform] constant for use within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformConstant.xml:7
+msgid "A constant [Transform], which can be used as an input node."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformConstant.xml:15
+msgid "A [Transform] constant which represents the state of this node."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformDecompose.xml:4
+msgid ""
+"Decomposes a [Transform] into four [Vector3]s within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformDecompose.xml:7
+msgid ""
+"Takes a 4x4 transform matrix and decomposes it into four [code]vec3[/code] "
+"values, one from each row of the matrix."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformFunc.xml:4
+msgid "Computes a [Transform] function within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformFunc.xml:7
+msgid "Computes an inverse or transpose function on the provided [Transform]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformFunc.xml:15
+msgid "The function to be computed. See [enum Function] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformFunc.xml:20
+msgid "Perform the inverse operation on the [Transform] matrix."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformFunc.xml:23
+msgid "Perform the transpose operation on the [Transform] matrix."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformMult.xml:4
+msgid "Multiplies [Transform] by [Transform] within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformMult.xml:7
+msgid ""
+"A multiplication operation on two transforms (4x4 matrices), with support "
+"for different multiplication operators."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformMult.xml:15
+msgid ""
+"The multiplication type to be performed on the transforms. See [enum "
+"Operator] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformMult.xml:20
+msgid "Multiplies transform [code]a[/code] by the transform [code]b[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformMult.xml:23
+msgid "Multiplies transform [code]b[/code] by the transform [code]a[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformMult.xml:26
+msgid ""
+"Performs a component-wise multiplication of transform [code]a[/code] by the "
+"transform [code]b[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformMult.xml:29
+msgid ""
+"Performs a component-wise multiplication of transform [code]b[/code] by the "
+"transform [code]a[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformUniform.xml:4
+msgid "A [Transform] uniform for use within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformUniform.xml:7
+msgid "Translated to [code]uniform mat4[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformVecMult.xml:4
+msgid ""
+"Multiplies a [Transform] and a [Vector3] within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformVecMult.xml:7
+msgid ""
+"A multiplication operation on a transform (4x4 matrix) and a vector, with "
+"support for different multiplication operators."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformVecMult.xml:15
+msgid ""
+"The multiplication type to be performed. See [enum Operator] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformVecMult.xml:20
+msgid "Multiplies transform [code]a[/code] by the vector [code]b[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformVecMult.xml:23
+msgid "Multiplies vector [code]b[/code] by the transform [code]a[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformVecMult.xml:26
+msgid ""
+"Multiplies transform [code]a[/code] by the vector [code]b[/code], skipping "
+"the last row and column of the transform."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeTransformVecMult.xml:29
+msgid ""
+"Multiplies vector [code]b[/code] by the transform [code]a[/code], skipping "
+"the last row and column of the transform."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeUniform.xml:4
+msgid "A base type for the uniforms within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeUniform.xml:7
+msgid ""
+"A uniform represents a variable in the shader which is set externally, i.e. "
+"from the [ShaderMaterial]. Uniforms are exposed as properties in the "
+"[ShaderMaterial] and can be assigned from the inspector or from a script."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeUniform.xml:15
+msgid ""
+"Name of the uniform, by which it can be accessed through the "
+"[ShaderMaterial] properties."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeUniformRef.xml:4
+msgid "A reference to an existing [VisualShaderNodeUniform]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeUniformRef.xml:7
+msgid ""
+"Creating a reference to a [VisualShaderNodeUniform] allows you to reuse this "
+"uniform in different shaders or shader stages easily."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeUniformRef.xml:15
+msgid "The name of the uniform which this reference points to."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVec3Constant.xml:4
+msgid "A [Vector3] constant to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVec3Constant.xml:7
+msgid "A constant [Vector3], which can be used as an input node."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVec3Constant.xml:15
+msgid "A [Vector3] constant which represents the state of this node."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVec3Uniform.xml:4
+msgid "A [Vector3] uniform to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVec3Uniform.xml:7
+msgid "Translated to [code]uniform vec3[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorClamp.xml:4
+msgid "Clamps a vector value within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorClamp.xml:7
+msgid ""
+"Constrains a value to lie between [code]min[/code] and [code]max[/code] "
+"values. The operation is performed on each component of the vector "
+"individually."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorCompose.xml:4
+msgid "Composes a [Vector3] from three scalars within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorCompose.xml:7
+msgid ""
+"Creates a [code]vec3[/code] using three scalar values that can be provided "
+"from separate inputs."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorDecompose.xml:4
+msgid ""
+"Decomposes a [Vector3] into three scalars within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorDecompose.xml:7
+msgid ""
+"Takes a [code]vec3[/code] and decomposes it into three scalar values that "
+"can be used as separate inputs."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorDerivativeFunc.xml:4
+msgid "Calculates a vector derivative within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorDerivativeFunc.xml:15
+msgid "A derivative type. See [enum Function] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorDistance.xml:4
+msgid ""
+"Returns the distance between two points. To be used within the visual shader "
+"graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorDistance.xml:7
+msgid ""
+"Calculates distance from point represented by vector [code]p0[/code] to "
+"vector [code]p1[/code].\n"
+"Translated to [code]distance(p0, p1)[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:4
+msgid "A vector function to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:7
+msgid "A visual shader node able to perform different functions using vectors."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:15
+msgid "The function to be performed. See [enum Function] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:20
+msgid ""
+"Normalizes the vector so that it has a length of [code]1[/code] but points "
+"in the same direction."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:23
+msgid "Clamps the value between [code]0.0[/code] and [code]1.0[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:26
+msgid "Returns the opposite value of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:29
+msgid "Returns [code]1/vector[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:32
+msgid "Converts RGB vector to HSV equivalent."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:35
+msgid "Converts HSV vector to RGB equivalent."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:38
+msgid "Returns the absolute value of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:41
+msgid "Returns the arc-cosine of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:44
+msgid "Returns the inverse hyperbolic cosine of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:47
+msgid "Returns the arc-sine of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:50
+msgid "Returns the inverse hyperbolic sine of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:53
+msgid "Returns the arc-tangent of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:56
+msgid "Returns the inverse hyperbolic tangent of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:59
+msgid ""
+"Finds the nearest integer that is greater than or equal to the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:62
+msgid "Returns the cosine of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:65
+msgid "Returns the hyperbolic cosine of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:68
+msgid "Converts a quantity in radians to degrees."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:71
+msgid "Base-e Exponential."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:74
+msgid "Base-2 Exponential."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:77
+msgid "Finds the nearest integer less than or equal to the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:80
+msgid "Computes the fractional part of the argument."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:83
+msgid "Returns the inverse of the square root of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:86
+msgid "Natural logarithm."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:89
+msgid "Base-2 logarithm."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:92
+msgid "Converts a quantity in degrees to radians."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:95
+msgid "Finds the nearest integer to the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:98
+msgid "Finds the nearest even integer to the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:101
+msgid ""
+"Extracts the sign of the parameter, i.e. returns [code]-1[/code] if the "
+"parameter is negative, [code]1[/code] if it's positive and [code]0[/code] "
+"otherwise."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:104
+msgid "Returns the sine of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:107
+msgid "Returns the hyperbolic sine of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:110
+msgid "Returns the square root of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:113
+msgid "Returns the tangent of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:116
+msgid "Returns the hyperbolic tangent of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:119
+msgid ""
+"Returns a value equal to the nearest integer to the parameter whose absolute "
+"value is not larger than the absolute value of the parameter."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorFunc.xml:122
+msgid "Returns [code]1.0 - vector[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorInterp.xml:4
+msgid ""
+"Linearly interpolates between two vectors within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorInterp.xml:7
+msgid ""
+"Translates to [code]mix(a, b, weight)[/code] in the shader language, where "
+"[code]weight[/code] is a [Vector3] with weights for each component."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorLen.xml:4
+msgid "Returns the length of a [Vector3] within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorLen.xml:7
+msgid "Translated to [code]length(p0)[/code] in the shader language."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:4
+msgid "A vector operator to be used within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:7
+msgid ""
+"A visual shader node for use of vector operators. Operates on vector "
+"[code]a[/code] and vector [code]b[/code]."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:15
+msgid "The operator to be used. See [enum Operator] for options."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:20
+msgid "Adds two vectors."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:23
+msgid "Subtracts a vector from a vector."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:26
+msgid "Multiplies two vectors."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:29
+msgid "Divides vector by vector."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:32
+msgid "Returns the remainder of the two vectors."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:35
+msgid ""
+"Returns the value of the first parameter raised to the power of the second, "
+"for each component of the vectors."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:38
+msgid "Returns the greater of two values, for each component of the vectors."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:41
+msgid "Returns the lesser of two values, for each component of the vectors."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:44
+msgid "Calculates the cross product of two vectors."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:47
+msgid "Returns the arc-tangent of the parameters."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:50
+msgid ""
+"Returns the vector that points in the direction of reflection. [code]a[/"
+"code] is incident vector and [code]b[/code] is the normal vector."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorOp.xml:53
+msgid ""
+"Vector step operator. Returns [code]0.0[/code] if [code]a[/code] is smaller "
+"than [code]b[/code] and [code]1.0[/code] otherwise."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorRefract.xml:4
+msgid ""
+"Returns the [Vector3] that points in the direction of refraction. For use "
+"within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorRefract.xml:7
+msgid ""
+"Translated to [code]refract(I, N, eta)[/code] in the shader language, where "
+"[code]I[/code] is the incident vector, [code]N[/code] is the normal vector "
+"and [code]eta[/code] is the ratio of the indices of the refraction."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorScalarMix.xml:4
+msgid ""
+"Linearly interpolates between two vectors using a scalar. For use within the "
+"visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorScalarMix.xml:7
+msgid ""
+"Translates to [code]mix(a, b, weight)[/code] in the shader language, where "
+"[code]a[/code] and [code]b[/code] are vectors and [code]weight[/code] is a "
+"scalar."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorScalarSmoothStep.xml:4
+msgid ""
+"Calculates a vector SmoothStep function using scalar within the visual "
+"shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorScalarSmoothStep.xml:7
+msgid ""
+"Translates to [code]smoothstep(edge0, edge1, x)[/code] in the shader "
+"language, where [code]x[/code] is a scalar.\n"
+"Returns [code]0.0[/code] if [code]x[/code] is smaller than [code]edge0[/"
+"code] and [code]1.0[/code] if [code]x[/code] is larger than [code]edge1[/"
+"code]. Otherwise the return value is interpolated between [code]0.0[/code] "
+"and [code]1.0[/code] using Hermite polynomials."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorScalarStep.xml:4
+msgid "Calculates a vector Step function within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorScalarStep.xml:7
+msgid ""
+"Translates to [code]step(edge, x)[/code] in the shader language.\n"
+"Returns [code]0.0[/code] if [code]x[/code] is smaller than [code]edge[/code] "
+"and [code]1.0[/code] otherwise."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorSmoothStep.xml:4
+msgid "Calculates a vector SmoothStep function within the visual shader graph."
+msgstr ""
+
+#: doc/classes/VisualShaderNodeVectorSmoothStep.xml:7
+msgid ""
+"Translates to [code]smoothstep(edge0, edge1, x)[/code] in the shader "
+"language, where [code]x[/code] is a vector.\n"
+"Returns [code]0.0[/code] if [code]x[/code] is smaller than [code]edge0[/"
+"code] and [code]1.0[/code] if [code]x[/code] is larger than [code]edge1[/"
+"code]. Otherwise the return value is interpolated between [code]0.0[/code] "
+"and [code]1.0[/code] using Hermite polynomials."
+msgstr ""
+
+#: doc/classes/VScrollBar.xml:4
+msgid "Vertical scroll bar."
+msgstr ""
+
+#: doc/classes/VScrollBar.xml:7
+msgid ""
+"Vertical version of [ScrollBar], which goes from top (min) to bottom (max)."
+msgstr ""
+
+#: doc/classes/VScrollBar.xml:21
+msgid ""
+"Icon used as a button to scroll the [ScrollBar] up. Supports custom step "
+"using the [member ScrollBar.custom_step] property."
+msgstr ""
+
+#: doc/classes/VScrollBar.xml:39
+msgid ""
+"Icon used as a button to scroll the [ScrollBar] down. Supports custom step "
+"using the [member ScrollBar.custom_step] property."
+msgstr ""
+
+#: doc/classes/VSeparator.xml:4
+msgid "Vertical version of [Separator]."
+msgstr ""
+
+#: doc/classes/VSeparator.xml:7
+msgid ""
+"Vertical version of [Separator]. Even though it looks vertical, it is used "
+"to separate objects horizontally."
+msgstr ""
+
+#: doc/classes/VSeparator.xml:17
+msgid ""
+"The width of the area covered by the separator. Effectively works like a "
+"minimum width."
+msgstr ""
+
+#: doc/classes/VSeparator.xml:20
+msgid ""
+"The style for the separator line. Works best with [StyleBoxLine] (remember "
+"to enable [member StyleBoxLine.vertical])."
+msgstr ""
+
+#: doc/classes/VSlider.xml:4
+msgid "Vertical slider."
+msgstr ""
+
+#: doc/classes/VSlider.xml:7
+msgid ""
+"Vertical slider. See [Slider]. This one goes from bottom (min) to top "
+"(max).\n"
+"[b]Note:[/b] The [signal Range.changed] and [signal Range.value_changed] "
+"signals are part of the [Range] class which this class inherits from."
+msgstr ""
+
+#: doc/classes/VSlider.xml:25
+msgid "The background of the area below the grabber."
+msgstr ""
+
+#: doc/classes/VSlider.xml:36
+msgid ""
+"The background for the whole slider. Determines the width of the "
+"[code]grabber_area[/code]."
+msgstr ""
+
+#: doc/classes/VSplitContainer.xml:4
+msgid "Vertical split container."
+msgstr ""
+
+#: doc/classes/VSplitContainer.xml:7
+msgid ""
+"Vertical split container. See [SplitContainer]. This goes from top to bottom."
+msgstr ""
+
+#: doc/classes/WeakRef.xml:4
+msgid ""
+"Holds an [Object], but does not contribute to the reference count if the "
+"object is a reference."
+msgstr ""
+
+#: doc/classes/WeakRef.xml:7
+msgid ""
+"A weakref can hold a [Reference], without contributing to the reference "
+"counter. A weakref can be created from an [Object] using [method @GDScript."
+"weakref]. If this object is not a reference, weakref still works, however, "
+"it does not have any effect on the object. Weakrefs are useful in cases "
+"where multiple classes have variables that refer to each other. Without "
+"weakrefs, using these classes could lead to memory leaks, since both "
+"references keep each other from being released. Making part of the variables "
+"a weakref can prevent this cyclic dependency, and allows the references to "
+"be released."
+msgstr ""
+
+#: doc/classes/WeakRef.xml:15
+msgid "Returns the [Object] this weakref is referring to."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:13
+msgid "Closes this data channel, notifying the other peer."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:19
+msgid ""
+"Returns the number of bytes currently queued to be sent over this channel."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:25
+msgid ""
+"Returns the id assigned to this channel during creation (or auto-assigned "
+"during negotiation).\n"
+"If the channel is not negotiated out-of-band the id will only be available "
+"after the connection is established (will return [code]65535[/code] until "
+"then)."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:32
+msgid "Returns the label assigned to this channel during creation."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:38
+msgid ""
+"Returns the [code]maxPacketLifeTime[/code] value assigned to this channel "
+"during creation.\n"
+"Will be [code]65535[/code] if not specified."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:45
+msgid ""
+"Returns the [code]maxRetransmits[/code] value assigned to this channel "
+"during creation.\n"
+"Will be [code]65535[/code] if not specified."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:52
+msgid ""
+"Returns the sub-protocol assigned to this channel during creation. An empty "
+"string if not specified."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:58
+msgid "Returns the current state of this channel, see [enum ChannelState]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:64
+msgid ""
+"Returns [code]true[/code] if this channel was created with out-of-band "
+"configuration."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:70
+msgid ""
+"Returns [code]true[/code] if this channel was created with ordering enabled "
+"(default)."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:76
+msgid "Reserved, but not used for now."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:82
+msgid ""
+"Returns [code]true[/code] if the last received packet was transferred as "
+"text. See [member write_mode]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:88
+msgid ""
+"The transfer mode to use when sending outgoing packet. Either text or binary."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:93
+msgid ""
+"Tells the channel to send data over this channel as text. An external peer "
+"(non-Godot) would receive this as a string."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:96
+msgid ""
+"Tells the channel to send data over this channel as binary. An external peer "
+"(non-Godot) would receive this as array buffer or blob."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:99
+msgid "The channel was created, but it's still trying to connect."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:102
+msgid "The channel is currently open, and data can flow over it."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:105
+msgid ""
+"The channel is being closed, no new messages will be accepted, but those "
+"already in queue will be flushed."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:108
+msgid "The channel was closed, or connection failed."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:4
+msgid ""
+"A simple interface to create a peer-to-peer mesh network composed of "
+"[WebRTCPeerConnection] that is compatible with the [MultiplayerAPI]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:7
+msgid ""
+"This class constructs a full mesh of [WebRTCPeerConnection] (one connection "
+"for each peer) that can be used as a [member MultiplayerAPI.network_peer].\n"
+"You can add each [WebRTCPeerConnection] via [method add_peer] or remove them "
+"via [method remove_peer]. Peers must be added in [constant "
+"WebRTCPeerConnection.STATE_NEW] state to allow it to create the appropriate "
+"channels. This class will not create offers nor set descriptions, it will "
+"only poll them, and notify connections and disconnections.\n"
+"[signal NetworkedMultiplayerPeer.connection_succeeded] and [signal "
+"NetworkedMultiplayerPeer.server_disconnected] will not be emitted unless "
+"[code]server_compatibility[/code] is [code]true[/code] in [method "
+"initialize]. Beside that data transfer works like in a "
+"[NetworkedMultiplayerPeer]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:20
+msgid ""
+"Add a new peer to the mesh with the given [code]peer_id[/code]. The "
+"[WebRTCPeerConnection] must be in state [constant WebRTCPeerConnection."
+"STATE_NEW].\n"
+"Three channels will be created for reliable, unreliable, and ordered "
+"transport. The value of [code]unreliable_lifetime[/code] will be passed to "
+"the [code]maxPacketLifetime[/code] option when creating unreliable and "
+"ordered channels (see [method WebRTCPeerConnection.create_data_channel])."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:27
+msgid "Close all the add peer connections and channels, freeing all resources."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:34
+msgid ""
+"Return a dictionary representation of the peer with given [code]peer_id[/"
+"code] with three keys. [code]connection[/code] containing the "
+"[WebRTCPeerConnection] to this peer, [code]channels[/code] an array of three "
+"[WebRTCDataChannel], and [code]connected[/code] a boolean representing if "
+"the peer connection is currently connected (all three channels are open)."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:40
+msgid ""
+"Returns a dictionary which keys are the peer ids and values the peer "
+"representation as in [method get_peer]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:47
+msgid ""
+"Returns [code]true[/code] if the given [code]peer_id[/code] is in the peers "
+"map (it might not be connected though)."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:55
+msgid ""
+"Initialize the multiplayer peer with the given [code]peer_id[/code] (must be "
+"between 1 and 2147483647).\n"
+"If [code]server_compatibilty[/code] is [code]false[/code] (default), the "
+"multiplayer peer will be immediately in state [constant "
+"NetworkedMultiplayerPeer.CONNECTION_CONNECTED] and [signal "
+"NetworkedMultiplayerPeer.connection_succeeded] will not be emitted.\n"
+"If [code]server_compatibilty[/code] is [code]true[/code] the peer will "
+"suppress all [signal NetworkedMultiplayerPeer.peer_connected] signals until "
+"a peer with id [constant NetworkedMultiplayerPeer.TARGET_PEER_SERVER] "
+"connects and then emit [signal NetworkedMultiplayerPeer."
+"connection_succeeded]. After that the signal [signal "
+"NetworkedMultiplayerPeer.peer_connected] will be emitted for every already "
+"connected peer, and any new peer that might connect. If the server peer "
+"disconnects after that, signal [signal NetworkedMultiplayerPeer."
+"server_disconnected] will be emitted and state will become [constant "
+"NetworkedMultiplayerPeer.CONNECTION_CONNECTED]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCMultiplayer.xml:64
+msgid ""
+"Remove the peer with given [code]peer_id[/code] from the mesh. If the peer "
+"was connected, and [signal NetworkedMultiplayerPeer.peer_connected] was "
+"emitted for it, then [signal NetworkedMultiplayerPeer.peer_disconnected] "
+"will be emitted."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:4
+msgid "Interface to a WebRTC peer connection."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:7
+msgid ""
+"A WebRTC connection between the local computer and a remote peer. Provides "
+"an interface to connect, maintain and monitor the connection.\n"
+"Setting up a WebRTC connection between two peers from now on) may not seem a "
+"trivial task, but it can be broken down into 3 main steps:\n"
+"- The peer that wants to initiate the connection ([code]A[/code] from now "
+"on) creates an offer and send it to the other peer ([code]B[/code] from now "
+"on).\n"
+"- [code]B[/code] receives the offer, generate and answer, and sends it to "
+"[code]A[/code]).\n"
+"- [code]A[/code] and [code]B[/code] then generates and exchange ICE "
+"candidates with each other.\n"
+"After these steps, the connection should become connected. Keep on reading "
+"or look into the tutorial for more information."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:23
+msgid ""
+"Add an ice candidate generated by a remote peer (and received over the "
+"signaling server). See [signal ice_candidate_created]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:29
+msgid ""
+"Close the peer connection and all data channels associated with it.\n"
+"[b]Note:[/b] You cannot reuse this object for a new connection unless you "
+"call [method initialize]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:39
+msgid ""
+"Returns a new [WebRTCDataChannel] (or [code]null[/code] on failure) with "
+"given [code]label[/code] and optionally configured via the [code]options[/"
+"code] dictionary. This method can only be called when the connection is in "
+"state [constant STATE_NEW].\n"
+"There are two ways to create a working data channel: either call [method "
+"create_data_channel] on only one of the peer and listen to [signal "
+"data_channel_received] on the other, or call [method create_data_channel] on "
+"both peers, with the same values, and the [code]negotiated[/code] option set "
+"to [code]true[/code].\n"
+"Valid [code]options[/code] are:\n"
+"[codeblock]\n"
+"{\n"
+" \"negotiated\": true, # When set to true (default off), means the "
+"channel is negotiated out of band. \"id\" must be set too. "
+"\"data_channel_received\" will not be called.\n"
+" \"id\": 1, # When \"negotiated\" is true this value must also be set to "
+"the same value on both peer.\n"
+"\n"
+" # Only one of maxRetransmits and maxPacketLifeTime can be specified, not "
+"both. They make the channel unreliable (but also better at real time).\n"
+" \"maxRetransmits\": 1, # Specify the maximum number of attempt the peer "
+"will make to retransmits packets if they are not acknowledged.\n"
+" \"maxPacketLifeTime\": 100, # Specify the maximum amount of time before "
+"giving up retransmitions of unacknowledged packets (in milliseconds).\n"
+" \"ordered\": true, # When in unreliable mode (i.e. either "
+"\"maxRetransmits\" or \"maxPacketLifetime\" is set), \"ordered\" (true by "
+"default) specify if packet ordering is to be enforced.\n"
+"\n"
+" \"protocol\": \"my-custom-protocol\", # A custom sub-protocol string for "
+"this channel.\n"
+"}\n"
+"[/codeblock]\n"
+"[b]Note:[/b] You must keep a reference to channels created this way, or it "
+"will be closed."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:61
+msgid ""
+"Creates a new SDP offer to start a WebRTC connection with a remote peer. At "
+"least one [WebRTCDataChannel] must have been created before calling this "
+"method.\n"
+"If this functions returns [constant OK], [signal "
+"session_description_created] will be called when the session is ready to be "
+"sent."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:68
+msgid "Returns the connection state. See [enum ConnectionState]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:76
+msgid ""
+"Re-initialize this peer connection, closing any previously active "
+"connection, and going back to state [constant STATE_NEW]. A dictionary of "
+"[code]options[/code] can be passed to configure the peer connection.\n"
+"Valid [code]options[/code] are:\n"
+"[codeblock]\n"
+"{\n"
+" \"iceServers\": [\n"
+" {\n"
+" \"urls\": [ \"stun:stun.example.com:3478\" ], # One or more STUN "
+"servers.\n"
+" },\n"
+" {\n"
+" \"urls\": [ \"turn:turn.example.com:3478\" ], # One or more TURN "
+"servers.\n"
+" \"username\": \"a_username\", # Optional username for the TURN "
+"server.\n"
+" \"credential\": \"a_password\", # Optional password for the TURN "
+"server.\n"
+" }\n"
+" ]\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:97
+msgid ""
+"Call this method frequently (e.g. in [method Node._process] or [method Node."
+"_physics_process]) to properly receive signals."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:105
+msgid ""
+"Sets the SDP description of the local peer. This should be called in "
+"response to [signal session_description_created].\n"
+"After calling this function the peer will start emitting [signal "
+"ice_candidate_created] (unless an [enum Error] different from [constant OK] "
+"is returned)."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:114
+msgid ""
+"Sets the SDP description of the remote peer. This should be called with the "
+"values generated by a remote peer and received over the signaling server.\n"
+"If [code]type[/code] is [code]offer[/code] the peer will emit [signal "
+"session_description_created] with the appropriate answer.\n"
+"If [code]type[/code] is [code]answer[/code] the peer will start emitting "
+"[signal ice_candidate_created]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:124
+msgid ""
+"Emitted when a new in-band channel is received, i.e. when the channel was "
+"created with [code]negotiated: false[/code] (default).\n"
+"The object will be an instance of [WebRTCDataChannel]. You must keep a "
+"reference of it or it will be closed automatically. See [method "
+"create_data_channel]."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:133
+msgid ""
+"Emitted when a new ICE candidate has been created. The three parameters are "
+"meant to be passed to the remote peer over the signaling server."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:140
+msgid ""
+"Emitted after a successful call to [method create_offer] or [method "
+"set_remote_description] (when it generates an answer). The parameters are "
+"meant to be passed to [method set_local_description] on this object, and "
+"sent to the remote peer over the signaling server."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:146
+msgid ""
+"The connection is new, data channels and an offer can be created in this "
+"state."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:149
+msgid ""
+"The peer is connecting, ICE is in progress, none of the transports has "
+"failed."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:152
+msgid "The peer is connected, all ICE transports are connected."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:155
+msgid "At least one ICE transport is disconnected."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:158
+msgid "One or more of the ICE transports failed."
+msgstr ""
+
+#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:161
+msgid ""
+"The peer connection is closed (after calling [method close] for example)."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:4
+msgid "A WebSocket client implementation."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:7
+msgid ""
+"This class implements a WebSocket client compatible with any RFC 6455-"
+"compliant WebSocket server.\n"
+"This client can be optionally used as a network peer for the "
+"[MultiplayerAPI].\n"
+"After starting the client ([method connect_to_url]), you will need to "
+"[method NetworkedMultiplayerPeer.poll] it at regular intervals (e.g. inside "
+"[method Node._process]).\n"
+"You will receive appropriate signals when connecting, disconnecting, or when "
+"new data is available."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:22
+msgid ""
+"Connects to the given URL requesting one of the given [code]protocols[/code] "
+"as sub-protocol. If the list empty (default), no sub-protocol will be "
+"requested.\n"
+"If [code]true[/code] is passed as [code]gd_mp_api[/code], the client will "
+"behave like a network peer for the [MultiplayerAPI], connections to non-"
+"Godot servers will not work, and [signal data_received] will not be "
+"emitted.\n"
+"If [code]false[/code] is passed instead (default), you must call "
+"[PacketPeer] functions ([code]put_packet[/code], [code]get_packet[/code], "
+"etc.) on the [WebSocketPeer] returned via [code]get_peer(1)[/code] and not "
+"on this object directly (e.g. [code]get_peer(1).put_packet(data)[/code]).\n"
+"You can optionally pass a list of [code]custom_headers[/code] to be added to "
+"the handshake HTTP request.\n"
+"[b]Note:[/b] To avoid mixed content warnings or errors in HTML5, you may "
+"have to use a [code]url[/code] that starts with [code]wss://[/code] (secure) "
+"instead of [code]ws://[/code]. When doing so, make sure to use the fully "
+"qualified domain name that matches the one defined in the server's SSL "
+"certificate. Do not connect directly via the IP address for [code]wss://[/"
+"code] connections, as it won't match with the SSL certificate.\n"
+"[b]Note:[/b] Specifying [code]custom_headers[/code] is not supported in "
+"HTML5 exports due to browsers restrictions."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:35
+msgid ""
+"Disconnects this client from the connected host. See [method WebSocketPeer."
+"close] for more information."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:41
+msgid "Return the IP address of the currently connected host."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:47
+msgid "Return the IP port of the currently connected host."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:53
+msgid ""
+"If specified, this [X509Certificate] will be the only one accepted when "
+"connecting to an SSL host. Any other certificate provided by the server will "
+"be regarded as invalid.\n"
+"[b]Note:[/b] Specifying a custom [code]trusted_ssl_certificate[/code] is not "
+"supported in HTML5 exports due to browsers restrictions."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:57
+msgid ""
+"If [code]true[/code], SSL certificate verification is enabled.\n"
+"[b]Note:[/b] You must specify the certificates to be used in the Project "
+"Settings for it to work when exported."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:65
+msgid ""
+"Emitted when the connection to the server is closed. [code]was_clean_close[/"
+"code] will be [code]true[/code] if the connection was shutdown cleanly."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:70
+msgid "Emitted when the connection to the server fails."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:76
+msgid ""
+"Emitted when a connection with the server is established, [code]protocol[/"
+"code] will contain the sub-protocol agreed with the server."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:81
+msgid ""
+"Emitted when a WebSocket message is received.\n"
+"[b]Note:[/b] This signal is [i]not[/i] emitted when used as high-level "
+"multiplayer peer."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketClient.xml:89
+msgid ""
+"Emitted when the server requests a clean close. You should keep polling "
+"until you get a [signal connection_closed] signal to achieve the clean "
+"close. See [method WebSocketPeer.close] for more details."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml:4
+msgid "Base class for WebSocket server and client."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml:7
+msgid ""
+"Base class for WebSocket server and client, allowing them to be used as "
+"network peer for the [MultiplayerAPI]."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml:16
+msgid ""
+"Returns the [WebSocketPeer] associated to the given [code]peer_id[/code]."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml:26
+msgid ""
+"Configures the buffer sizes for this WebSocket peer. Default values can be "
+"specified in the Project Settings under [code]network/limits[/code]. For "
+"server, values are meant per connected peer.\n"
+"The first two parameters define the size and queued packets limits of the "
+"input buffer, the last two of the output buffer.\n"
+"Buffer sizes are expressed in KiB, so [code]4 = 2^12 = 4096 bytes[/code]. "
+"All parameters will be rounded up to the nearest power of two.\n"
+"[b]Note:[/b] HTML5 exports only use the input buffer since the output one is "
+"managed by browsers."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml:41
+msgid ""
+"Emitted when a packet is received from a peer.\n"
+"[b]Note:[/b] This signal is only emitted when the client or server is "
+"configured to use Godot multiplayer API."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:4
+msgid "A class representing a specific WebSocket connection."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:7
+msgid ""
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
+"You can choose to write to the socket in binary or text mode, and you can "
+"recognize the mode used for writing by the other peer."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:18
+msgid ""
+"Closes this WebSocket connection. [code]code[/code] is the status code for "
+"the closure (see RFC 6455 section 7.4 for a list of valid status codes). "
+"[code]reason[/code] is the human readable reason for closing the connection "
+"(can be any UTF-8 string that's smaller than 123 bytes).\n"
+"[b]Note:[/b] To achieve a clean close, you will need to keep polling until "
+"either [signal WebSocketClient.connection_closed] or [signal WebSocketServer."
+"client_disconnected] is received.\n"
+"[b]Note:[/b] The HTML5 export might not support all status codes. Please "
+"refer to browser-specific documentation for more details."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:26
+msgid ""
+"Returns the IP address of the connected peer.\n"
+"[b]Note:[/b] Not available in the HTML5 export."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:33
+msgid ""
+"Returns the remote port of the connected peer.\n"
+"[b]Note:[/b] Not available in the HTML5 export."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:40
+msgid ""
+"Returns the current amount of data in the outbound websocket buffer. [b]Note:"
+"[/b] HTML5 exports use WebSocket.bufferedAmount, while other platforms use "
+"an internal buffer."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:46
+msgid "Gets the current selected write mode. See [enum WriteMode]."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:52
+msgid "Returns [code]true[/code] if this peer is currently connected."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:59
+msgid ""
+"Disable Nagle's algorithm on the underling TCP socket (default). See [method "
+"StreamPeerTCP.set_no_delay] for more information.\n"
+"[b]Note:[/b] Not available in the HTML5 export."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:67
+msgid "Sets the socket to use the given [enum WriteMode]."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:73
+msgid ""
+"Returns [code]true[/code] if the last received packet was sent as a text "
+"payload. See [enum WriteMode]."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:79
+msgid ""
+"Specifies that WebSockets messages should be transferred as text payload "
+"(only valid UTF-8 is allowed)."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketPeer.xml:82
+msgid ""
+"Specifies that WebSockets messages should be transferred as binary payload "
+"(any byte combination is allowed)."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:4
+msgid "A WebSocket server implementation."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:7
+msgid ""
+"This class implements a WebSocket server that can also support the high-"
+"level multiplayer API.\n"
+"After starting the server ([method listen]), you will need to [method "
+"NetworkedMultiplayerPeer.poll] it at regular intervals (e.g. inside [method "
+"Node._process]). When clients connect, disconnect, or send data, you will "
+"receive the appropriate signal.\n"
+"[b]Note:[/b] Not available in HTML5 exports."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:20
+msgid ""
+"Disconnects the peer identified by [code]id[/code] from the server. See "
+"[method WebSocketPeer.close] for more information."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:41
+msgid "Returns [code]true[/code] if a peer with the given ID is connected."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:47
+msgid ""
+"Returns [code]true[/code] if the server is actively listening on a port."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:56
+msgid ""
+"Starts listening on the given port.\n"
+"You can specify the desired subprotocols via the \"protocols\" array. If the "
+"list empty (default), no sub-protocol will be requested.\n"
+"If [code]true[/code] is passed as [code]gd_mp_api[/code], the server will "
+"behave like a network peer for the [MultiplayerAPI], connections from non-"
+"Godot clients will not work, and [signal data_received] will not be "
+"emitted.\n"
+"If [code]false[/code] is passed instead (default), you must call "
+"[PacketPeer] functions ([code]put_packet[/code], [code]get_packet[/code], "
+"etc.), on the [WebSocketPeer] returned via [code]get_peer(id)[/code] to "
+"communicate with the peer with given [code]id[/code] (e.g. "
+"[code]get_peer(id).get_available_packet_count[/code])."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:65
+msgid "Stops the server and clear its state."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:71
+msgid ""
+"When not set to [code]*[/code] will restrict incoming connections to the "
+"specified IP address. Setting [code]bind_ip[/code] to [code]127.0.0.1[/code] "
+"will cause the server to listen only to the local host."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:74
+msgid ""
+"When using SSL (see [member private_key] and [member ssl_certificate]), you "
+"can set this to a valid [X509Certificate] to be provided as additional CA "
+"chain information during the SSL handshake."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:77
+msgid ""
+"The time in seconds before a pending client (i.e. a client that has not yet "
+"finished the HTTP handshake) is considered stale and forcefully disconnected."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:80
+msgid ""
+"When set to a valid [CryptoKey] (along with [member ssl_certificate]) will "
+"cause the server to require SSL instead of regular TCP (i.e. the [code]wss://"
+"[/code] protocol)."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:83
+msgid ""
+"When set to a valid [X509Certificate] (along with [member private_key]) will "
+"cause the server to require SSL instead of regular TCP (i.e. the [code]wss://"
+"[/code] protocol)."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:92
+msgid ""
+"Emitted when a client requests a clean close. You should keep polling until "
+"you get a [signal client_disconnected] signal with the same [code]id[/code] "
+"to achieve the clean close. See [method WebSocketPeer.close] for more "
+"details."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:99
+msgid ""
+"Emitted when a new client connects. \"protocol\" will be the sub-protocol "
+"agreed with the client."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:106
+msgid ""
+"Emitted when a client disconnects. [code]was_clean_close[/code] will be "
+"[code]true[/code] if the connection was shutdown cleanly."
+msgstr ""
+
+#: modules/websocket/doc_classes/WebSocketServer.xml:112
+msgid ""
+"Emitted when a new message is received.\n"
+"[b]Note:[/b] This signal is [i]not[/i] emitted when used as high-level "
+"multiplayer peer."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:4
+msgid "AR/VR interface using WebXR."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:7
+msgid ""
+"WebXR is an open standard that allows creating VR and AR applications that "
+"run in the web browser.\n"
+"As such, this interface is only available when running in an HTML5 export.\n"
+"WebXR supports a wide range of devices, from the very capable (like Valve "
+"Index, HTC Vive, Oculus Rift and Quest) down to the much less capable (like "
+"Google Cardboard, Oculus Go, GearVR, or plain smartphones).\n"
+"Since WebXR is based on Javascript, it makes extensive use of callbacks, "
+"which means that [WebXRInterface] is forced to use signals, where other AR/"
+"VR interfaces would instead use functions that return a result immediately. "
+"This makes [WebXRInterface] quite a bit more complicated to initialize than "
+"other AR/VR interfaces.\n"
+"Here's the minimum code required to start an immersive VR session:\n"
+"[codeblock]\n"
+"extends Spatial\n"
+"\n"
+"var webxr_interface\n"
+"var vr_supported = false\n"
+"\n"
+"func _ready():\n"
+" # We assume this node has a button as a child.\n"
+" # This button is for the user to consent to entering immersive VR mode.\n"
+" $Button.connect(\"pressed\", self, \"_on_Button_pressed\")\n"
+"\n"
+" webxr_interface = ARVRServer.find_interface(\"WebXR\")\n"
+" if webxr_interface:\n"
+" # WebXR uses a lot of asynchronous callbacks, so we connect to "
+"various\n"
+" # signals in order to receive them.\n"
+" webxr_interface.connect(\"session_supported\", self, "
+"\"_webxr_session_supported\")\n"
+" webxr_interface.connect(\"session_started\", self, "
+"\"_webxr_session_started\")\n"
+" webxr_interface.connect(\"session_ended\", self, "
+"\"_webxr_session_ended\")\n"
+" webxr_interface.connect(\"session_failed\", self, "
+"\"_webxr_session_failed\")\n"
+"\n"
+" # This returns immediately - our _webxr_session_supported() method\n"
+" # (which we connected to the \"session_supported\" signal above) "
+"will\n"
+" # be called sometime later to let us know if it's supported or not.\n"
+" webxr_interface.is_session_supported(\"immersive-vr\")\n"
+"\n"
+"func _webxr_session_supported(session_mode, supported):\n"
+" if session_mode == 'immersive-vr':\n"
+" vr_supported = supported\n"
+"\n"
+"func _on_Button_pressed():\n"
+" if not vr_supported:\n"
+" OS.alert(\"Your browser doesn't support VR\")\n"
+" return\n"
+"\n"
+" # We want an immersive VR session, as opposed to AR ('immersive-ar') or "
+"a\n"
+" # simple 3DoF viewer ('viewer').\n"
+" webxr_interface.session_mode = 'immersive-vr'\n"
+" # 'bounded-floor' is room scale, 'local-floor' is a standing or sitting\n"
+" # experience (it puts you 1.6m above the ground if you have 3DoF "
+"headset),\n"
+" # whereas as 'local' puts you down at the ARVROrigin.\n"
+" # This list means it'll first try to request 'bounded-floor', then\n"
+" # fallback on 'local-floor' and ultimately 'local', if nothing else is\n"
+" # supported.\n"
+" webxr_interface.requested_reference_space_types = 'bounded-floor, local-"
+"floor, local'\n"
+" # In order to use 'local-floor' or 'bounded-floor' we must also\n"
+" # mark the features as required or optional.\n"
+" webxr_interface.required_features = 'local-floor'\n"
+" webxr_interface.optional_features = 'bounded-floor'\n"
+"\n"
+" # This will return false if we're unable to even request the session,\n"
+" # however, it can still fail asynchronously later in the process, so we\n"
+" # only know if it's really succeeded or failed when our\n"
+" # _webxr_session_started() or _webxr_session_failed() methods are "
+"called.\n"
+" if not webxr_interface.initialize():\n"
+" OS.alert(\"Failed to initialize\")\n"
+" return\n"
+"\n"
+"func _webxr_session_started():\n"
+" $Button.visible = false\n"
+" # This tells Godot to start rendering to the headset.\n"
+" get_viewport().arvr = true\n"
+" # This will be the reference space type you ultimately got, out of the\n"
+" # types that you requested above. This is useful if you want the game "
+"to\n"
+" # work a little differently in 'bounded-floor' versus 'local-floor'.\n"
+" print (\"Reference space type: \" + webxr_interface."
+"reference_space_type)\n"
+"\n"
+"func _webxr_session_ended():\n"
+" $Button.visible = true\n"
+" # If the user exits immersive mode, then we tell Godot to render to the "
+"web\n"
+" # page again.\n"
+" get_viewport().arvr = false\n"
+"\n"
+"func _webxr_session_failed(message):\n"
+" OS.alert(\"Failed to initialize: \" + message)\n"
+"[/codeblock]\n"
+"There are several ways to handle \"controller\" input:\n"
+"- Using [ARVRController] nodes and their [signal ARVRController."
+"button_pressed] and [signal ARVRController.button_release] signals. This is "
+"how controllers are typically handled in AR/VR apps in Godot, however, this "
+"will only work with advanced VR controllers like the Oculus Touch or Index "
+"controllers, for example. The buttons codes are defined by [url=https://"
+"immersive-web.github.io/webxr-gamepads-module/#xr-standard-gamepad-"
+"mapping]Section 3.3 of the WebXR Gamepads Module[/url].\n"
+"- Using [method Node._unhandled_input] and [InputEventJoypadButton] or "
+"[InputEventJoypadMotion]. This works the same as normal joypads, except the "
+"[member InputEvent.device] starts at 100, so the left controller is 100 and "
+"the right controller is 101, and the button codes are also defined by "
+"[url=https://immersive-web.github.io/webxr-gamepads-module/#xr-standard-"
+"gamepad-mapping]Section 3.3 of the WebXR Gamepads Module[/url].\n"
+"- Using the [signal select], [signal squeeze] and related signals. This "
+"method will work for both advanced VR controllers, and non-traditional "
+"\"controllers\" like a tap on the screen, a spoken voice command or a button "
+"press on the device itself. The [code]controller_id[/code] passed to these "
+"signals is the same id as used in [member ARVRController.controller_id].\n"
+"You can use one or all of these methods to allow your game or app to support "
+"a wider or narrower set of devices and input methods, or to allow more "
+"advanced interations with more advanced devices."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:94
+msgid "https://www.snopekgames.com/blog/2020/how-make-vr-game-webxr-godot"
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:101
+msgid ""
+"Gets an [ARVRPositionalTracker] for the given [code]controller_id[/code].\n"
+"In the context of WebXR, a \"controller\" can be an advanced VR controller "
+"like the Oculus Touch or Index controllers, or even a tap on the screen, a "
+"spoken voice command or a button press on the device itself. When a non-"
+"traditional controller is used, interpret the position and orientation of "
+"the [ARVRPositionalTracker] as a ray pointing at the object the user wishes "
+"to interact with.\n"
+"Use this method to get information about the controller that triggered one "
+"of these signals:\n"
+"- [signal selectstart]\n"
+"- [signal select]\n"
+"- [signal selectend]\n"
+"- [signal squeezestart]\n"
+"- [signal squeeze]\n"
+"- [signal squeezestart]"
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:116
+msgid ""
+"Checks if the given [code]session_mode[/code] is supported by the user's "
+"browser.\n"
+"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/"
+"API/XRSessionMode]WebXR's XRSessionMode[/url], including: [code]\"immersive-"
+"vr\"[/code], [code]\"immersive-ar\"[/code], and [code]\"inline\"[/code].\n"
+"This method returns nothing, instead it emits the [signal session_supported] "
+"signal with the result."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:124
+msgid ""
+"The vertices of a polygon which defines the boundaries of the user's play "
+"area.\n"
+"This will only be available if [member reference_space_type] is "
+"[code]\"bounded-floor\"[/code] and only on certain browsers and devices that "
+"support it.\n"
+"The [signal reference_space_reset] signal may indicate when this changes."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:129
+msgid ""
+"A comma-seperated list of optional features used by [method ARVRInterface."
+"initialize] when setting up the WebXR session.\n"
+"If a user's browser or device doesn't support one of the given features, "
+"initialization will continue, but you won't be able to use the requested "
+"feature.\n"
+"This doesn't have any effect on the interface when already initialized.\n"
+"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/"
+"API/XRReferenceSpaceType]WebXR's XRReferenceSpaceType[/url]. If you want to "
+"use a particular reference space type, it must be listed in either [member "
+"required_features] or [member optional_features]."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:135
+msgid ""
+"The reference space type (from the list of requested types set in the "
+"[member requested_reference_space_types] property), that was ultimately used "
+"by [method ARVRInterface.initialize] when setting up the WebXR session.\n"
+"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/"
+"API/XRReferenceSpaceType]WebXR's XRReferenceSpaceType[/url]. If you want to "
+"use a particular reference space type, it must be listed in either [member "
+"required_features] or [member optional_features]."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:139
+msgid ""
+"A comma-seperated list of reference space types used by [method "
+"ARVRInterface.initialize] when setting up the WebXR session.\n"
+"The reference space types are requested in order, and the first on supported "
+"by the users device or browser will be used. The [member "
+"reference_space_type] property contains the reference space type that was "
+"ultimately used.\n"
+"This doesn't have any effect on the interface when already initialized.\n"
+"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/"
+"API/XRReferenceSpaceType]WebXR's XRReferenceSpaceType[/url]. If you want to "
+"use a particular reference space type, it must be listed in either [member "
+"required_features] or [member optional_features]."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:145
+msgid ""
+"A comma-seperated list of required features used by [method ARVRInterface."
+"initialize] when setting up the WebXR session.\n"
+"If a user's browser or device doesn't support one of the given features, "
+"initialization will fail and [signal session_failed] will be emitted.\n"
+"This doesn't have any effect on the interface when already initialized.\n"
+"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/"
+"API/XRReferenceSpaceType]WebXR's XRReferenceSpaceType[/url]. If you want to "
+"use a particular reference space type, it must be listed in either [member "
+"required_features] or [member optional_features]."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:151
+msgid ""
+"The session mode used by [method ARVRInterface.initialize] when setting up "
+"the WebXR session.\n"
+"This doesn't have any effect on the interface when already initialized.\n"
+"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/"
+"API/XRSessionMode]WebXR's XRSessionMode[/url], including: [code]\"immersive-"
+"vr\"[/code], [code]\"immersive-ar\"[/code], and [code]\"inline\"[/code]."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:156
+msgid ""
+"Indicates if the WebXR session's imagery is visible to the user.\n"
+"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/"
+"API/XRVisibilityState]WebXR's XRVisibilityState[/url], including "
+"[code]\"hidden\"[/code], [code]\"visible\"[/code], and [code]\"visible-"
+"blurred\"[/code]."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:163
+msgid ""
+"Emitted to indicate that the reference space has been reset or "
+"reconfigured.\n"
+"When (or whether) this is emitted depends on the user's browser or device, "
+"but may include when the user has changed the dimensions of their play space "
+"(which you may be able to access via [member bounds_geometry]) or pressed/"
+"held a button to recenter their position.\n"
+"See [url=https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace/"
+"reset_event]WebXR's XRReferenceSpace reset event[/url] for more information."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:171
+msgid ""
+"Emitted after one of the \"controllers\" has finished its \"primary action"
+"\".\n"
+"Use [method get_controller] to get more information about the controller."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:178
+msgid ""
+"Emitted when one of the \"controllers\" has finished its \"primary action"
+"\".\n"
+"Use [method get_controller] to get more information about the controller."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:185
+msgid ""
+"Emitted when one of the \"controllers\" has started its \"primary action\".\n"
+"Use [method get_controller] to get more information about the controller."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:191
+msgid ""
+"Emitted when the user ends the WebXR session (which can be done using UI "
+"from the browser or device).\n"
+"At this point, you should do [code]get_viewport().arvr = false[/code] to "
+"instruct Godot to resume rendering to the screen."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:198
+msgid ""
+"Emitted by [method ARVRInterface.initialize] if the session fails to start.\n"
+"[code]message[/code] may optionally contain an error message from WebXR, or "
+"an empty string if no message is available."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:204
+msgid ""
+"Emitted by [method ARVRInterface.initialize] if the session is successfully "
+"started.\n"
+"At this point, it's safe to do [code]get_viewport().arvr = true[/code] to "
+"instruct Godot to start rendering to the AR/VR device."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:212
+msgid ""
+"Emitted by [method is_session_supported] to indicate if the given "
+"[code]session_mode[/code] is supported or not."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:218
+msgid ""
+"Emitted after one of the \"controllers\" has finished its \"primary squeeze "
+"action\".\n"
+"Use [method get_controller] to get more information about the controller."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:225
+msgid ""
+"Emitted when one of the \"controllers\" has finished its \"primary squeeze "
+"action\".\n"
+"Use [method get_controller] to get more information about the controller."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:232
+msgid ""
+"Emitted when one of the \"controllers\" has started its \"primary squeeze "
+"action\".\n"
+"Use [method get_controller] to get more information about the controller."
+msgstr ""
+
+#: modules/webxr/doc_classes/WebXRInterface.xml:238
+msgid "Emitted when [member visibility_state] has changed."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:4
+msgid "Base class for window dialogs."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:7
+msgid ""
+"Windowdialog is the base class for all window-based dialogs. It's a by-"
+"default toplevel [Control] that draws a window decoration and allows motion "
+"and resizing."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:15
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:22
+msgid "If [code]true[/code], the user can resize the window."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:25
+msgid "The text displayed in the window's title bar."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:32
+msgid "The icon for the close button."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:35
+msgid "The horizontal offset of the close button."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:38
+msgid ""
+"The icon used for the close button when it's hovered with the mouse cursor."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:44
+msgid ""
+"The style for both the content background of the [WindowDialog] and the "
+"title bar. The title bar is created with a top border and an expand margin "
+"using the [code]panel[/code] stylebox."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:47
+msgid ""
+"The thickness of the border that can be dragged when scaling the window (if "
+"[member resizable] is enabled)."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:50
+msgid "The color of the title text."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:53
+msgid "The font used to draw the title."
+msgstr ""
+
+#: doc/classes/WindowDialog.xml:56
+msgid "The vertical offset of the title text."
+msgstr ""
+
+#: doc/classes/World.xml:4
+msgid "Class that has everything pertaining to a world."
+msgstr ""
+
+#: doc/classes/World.xml:7
+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."
+msgstr ""
+
+#: doc/classes/World.xml:16
+msgid ""
+"Direct access to the world's physics 3D space state. Used for querying "
+"current and potential collisions."
+msgstr ""
+
+#: doc/classes/World.xml:19
+msgid "The World's [Environment]."
+msgstr ""
+
+#: doc/classes/World.xml:22
+msgid ""
+"The World's fallback_environment will be used if the World's [Environment] "
+"fails or is missing."
+msgstr ""
+
+#: doc/classes/World.xml:25
+msgid "The World's visual scenario."
+msgstr ""
+
+#: doc/classes/World.xml:28
+msgid "The World's physics space."
+msgstr ""
+
+#: doc/classes/World2D.xml:4
+msgid "Class that has everything pertaining to a 2D world."
+msgstr ""
+
+#: doc/classes/World2D.xml:7
+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."
+msgstr ""
+
+#: doc/classes/World2D.xml:16
+msgid ""
+"The [RID] of this world's canvas resource. Used by the [VisualServer] for 2D "
+"drawing."
+msgstr ""
+
+#: doc/classes/World2D.xml:19
+msgid ""
+"Direct access to the world's physics 2D space state. Used for querying "
+"current and potential collisions. When using multi-threaded physics, access "
+"is limited to [code]_physics_process(delta)[/code] in the main thread."
+msgstr ""
+
+#: doc/classes/World2D.xml:22
+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 ""
+
+#: doc/classes/WorldEnvironment.xml:4
+msgid ""
+"Default environment properties for the entire scene (post-processing "
+"effects, lighting and background settings)."
+msgstr ""
+
+#: doc/classes/WorldEnvironment.xml:7
+msgid ""
+"The [WorldEnvironment] node is used to configure the default [Environment] "
+"for the scene.\n"
+"The parameters defined in the [WorldEnvironment] can be overridden by an "
+"[Environment] node set on the current [Camera]. Additionally, only one "
+"[WorldEnvironment] may be instanced in a given scene at a time.\n"
+"The [WorldEnvironment] allows the user to specify default lighting "
+"parameters (e.g. ambient lighting), various post-processing effects (e.g. "
+"SSAO, DOF, Tonemapping), and how to draw the background (e.g. solid color, "
+"skybox). Usually, these are added in order to improve the realism/color "
+"balance of the scene."
+msgstr ""
+
+#: doc/classes/WorldEnvironment.xml:21
+msgid ""
+"The [Environment] resource used by this [WorldEnvironment], defining the "
+"default properties."
+msgstr ""
+
+#: doc/classes/X509Certificate.xml:4
+msgid "An X509 certificate (e.g. for SSL)."
+msgstr ""
+
+#: doc/classes/X509Certificate.xml:7
+msgid ""
+"The X509Certificate class represents an X509 certificate. Certificates can "
+"be loaded and saved like any other [Resource].\n"
+"They can be used as the server certificate in [method StreamPeerSSL."
+"accept_stream] (along with the proper [CryptoKey]), and to specify the only "
+"certificate that should be accepted when connecting to an SSL server via "
+"[method StreamPeerSSL.connect_to_stream].\n"
+"[b]Note:[/b] Not available in HTML5 exports."
+msgstr ""
+
+#: doc/classes/X509Certificate.xml:18
+msgid "Loads a certificate from [code]path[/code] (\"*.crt\" file)."
+msgstr ""
+
+#: doc/classes/X509Certificate.xml:25
+msgid ""
+"Saves a certificate to the given [code]path[/code] (should be a \"*.crt\" "
+"file)."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:4
+msgid ""
+"Low-level class for creating parsers for [url=https://en.wikipedia.org/wiki/"
+"XML]XML[/url] files."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:7
+msgid ""
+"This class can serve as base to make custom XML parsers. Since XML is a very "
+"flexible standard, this interface is low-level so it can be applied to any "
+"possible schema."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:15
+msgid "Gets the amount of attributes in the current element."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:22
+msgid ""
+"Gets the name of the attribute specified by the index in [code]idx[/code] "
+"argument."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:29
+msgid ""
+"Gets the value of the attribute specified by the index in [code]idx[/code] "
+"argument."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:35
+msgid "Gets the current line in the parsed file (currently not implemented)."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:42
+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:49
+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 ""
+
+#: doc/classes/XMLParser.xml:55
+msgid ""
+"Gets the contents of a text node. This will raise an error in any other type "
+"of node."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:61
+msgid ""
+"Gets the name of the current element node. This will raise an error if the "
+"current node type is neither [constant NODE_ELEMENT] nor [constant "
+"NODE_ELEMENT_END]."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:67
+msgid ""
+"Gets the byte offset of the current node since the beginning of the file or "
+"buffer."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:73
+msgid ""
+"Gets the type of the current node. Compare with [enum NodeType] constants."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:80
+msgid "Check whether the current element has a certain attribute."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:86
+msgid ""
+"Check whether the current element is empty (this only works for completely "
+"empty tags, e.g. [code]<element \\>[/code])."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:93
+msgid "Opens an XML file for parsing. This returns an error code."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:100
+msgid "Opens an XML raw buffer for parsing. This returns an error code."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:106
+msgid "Reads the next node of the file. This returns an error code."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:113
+msgid ""
+"Moves the buffer cursor to a certain offset (since the beginning) and read "
+"the next node there. This returns an error code."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:119
+msgid ""
+"Skips the current section. If the node contains other elements, they will be "
+"ignored and the cursor will go to the closing of the current element."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:125
+msgid "There's no node (no file or buffer opened)."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:128
+msgid "Element (tag)."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:131
+msgid "End of element."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:134
+msgid "Text node."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:137
+msgid "Comment node."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:140
+msgid "CDATA content."
+msgstr ""
+
+#: doc/classes/XMLParser.xml:143
+msgid "Unknown node."
+msgstr ""
+
+#: doc/classes/YSort.xml:4
+msgid "Sort all child nodes based on their Y positions."
+msgstr ""
+
+#: doc/classes/YSort.xml:7
+msgid ""
+"Sort all child nodes based on their Y positions. The child node must inherit "
+"from [CanvasItem] for it to be sorted. Nodes that have a higher Y position "
+"will be drawn later, so they will appear on top of nodes that have a lower Y "
+"position.\n"
+"Nesting of YSort nodes is possible. Children YSort nodes will be sorted in "
+"the same space as the parent YSort, allowing to better organize a scene or "
+"divide it in multiple ones, yet keep the unique sorting."
+msgstr ""
+
+#: doc/classes/YSort.xml:16
+msgid ""
+"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
+msgstr ""
diff --git a/doc/translations/id.po b/doc/translations/id.po
index e0fb0e1df3..6d58474929 100644
--- a/doc/translations/id.po
+++ b/doc/translations/id.po
@@ -3937,20 +3937,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3959,11 +3967,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3977,15 +3985,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6547,13 +6555,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6579,14 +6589,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6724,26 +6736,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6770,14 +6786,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6786,14 +6805,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7394,7 +7416,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10136,7 +10158,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12845,9 +12870,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14672,7 +14696,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14772,84 +14796,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15165,7 +15196,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19789,117 +19824,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20070,7 +20109,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20196,7 +20236,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20374,18 +20415,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20395,119 +20438,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20515,17 +20569,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20855,30 +20909,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20888,22 +20944,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20911,68 +20967,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20980,22 +21036,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21004,26 +21060,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22666,53 +22722,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22720,58 +22784,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22782,19 +22846,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22802,17 +22866,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22820,24 +22884,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22845,21 +22909,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22867,65 +22931,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22935,43 +22999,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23504,20 +23568,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23526,125 +23597,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25320,11 +25391,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25781,7 +25852,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26507,7 +26578,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27290,16 +27361,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27308,11 +27373,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27320,17 +27385,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27349,7 +27414,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27363,30 +27428,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27394,63 +27440,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28275,7 +28321,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29757,171 +29803,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29930,7 +29980,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29939,26 +29989,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29967,108 +30017,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31753,20 +31803,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31779,52 +31832,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31846,100 +31899,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31947,80 +32000,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32303,59 +32356,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32363,34 +32416,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32543,70 +32596,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32723,11 +32780,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32775,53 +32832,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33645,7 +33702,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35538,22 +35595,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35564,7 +35624,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35581,7 +35641,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35592,27 +35652,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35620,7 +35680,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35631,30 +35691,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35664,7 +35724,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35675,7 +35735,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35689,7 +35749,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35698,14 +35758,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35718,7 +35778,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35726,32 +35786,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35759,13 +35819,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35775,7 +35835,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35784,11 +35844,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35797,138 +35857,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37113,34 +37173,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37148,96 +37208,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39867,20 +39927,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43717,6 +43777,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43724,7 +43796,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43734,13 +43806,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43754,14 +43826,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43770,7 +43842,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43778,7 +43850,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43794,20 +43866,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43815,75 +43887,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43893,7 +43965,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43903,27 +43975,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43931,81 +44003,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44013,109 +44085,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44126,91 +44198,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44219,13 +44291,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44235,7 +44307,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44243,19 +44315,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44269,45 +44341,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44316,7 +44388,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44327,7 +44399,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44343,14 +44415,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44358,49 +44430,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44409,7 +44481,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44417,7 +44489,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44425,7 +44497,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44435,7 +44507,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44444,7 +44516,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44453,7 +44525,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44463,7 +44535,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44471,7 +44543,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44481,7 +44553,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44491,7 +44563,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44499,7 +44571,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44508,7 +44580,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44516,7 +44588,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44528,477 +44600,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45006,92 +45078,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45101,33 +45173,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45140,7 +45212,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45152,7 +45224,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45164,7 +45236,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45177,7 +45249,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45185,28 +45257,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45216,25 +45288,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45247,7 +45319,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45259,7 +45331,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45271,7 +45343,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45284,13 +45356,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45298,11 +45370,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45316,7 +45388,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45325,7 +45397,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45341,7 +45413,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45351,7 +45423,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45361,7 +45433,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45372,7 +45444,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45382,7 +45454,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45390,7 +45462,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45401,7 +45473,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45416,7 +45488,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45425,13 +45497,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45440,7 +45512,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45450,7 +45522,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45462,7 +45534,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45472,24 +45544,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45498,7 +45570,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45506,7 +45578,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45515,7 +45587,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45525,7 +45597,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45533,31 +45605,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45565,7 +45637,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45575,14 +45647,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45590,31 +45662,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45622,7 +45694,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45632,7 +45704,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45641,7 +45713,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45650,20 +45722,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45672,7 +45744,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45680,7 +45752,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45689,7 +45761,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45699,20 +45771,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45721,13 +45793,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45737,46 +45809,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45786,7 +45858,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45798,7 +45870,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45806,7 +45878,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45814,7 +45886,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45823,7 +45895,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45837,7 +45909,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45847,7 +45919,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45856,7 +45928,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45866,54 +45938,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45924,61 +45996,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45987,26 +46070,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46017,20 +46100,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46042,52 +46125,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46095,7 +46178,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46104,10 +46187,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46115,10 +46199,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46126,10 +46211,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46137,10 +46223,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46148,10 +46235,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46972,23 +47060,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46997,75 +47089,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47944,121 +48036,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48066,11 +48162,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48081,7 +48177,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48089,7 +48185,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48101,14 +48197,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48117,17 +48213,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48135,36 +48231,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48172,7 +48268,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48181,111 +48277,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48588,14 +48684,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48608,15 +48707,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48853,14 +48955,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48870,14 +48975,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49486,27 +49594,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49518,7 +49630,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49528,7 +49640,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49544,67 +49656,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49615,7 +49727,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49624,30 +49736,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49655,37 +49767,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49696,7 +49808,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49707,7 +49819,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49717,50 +49829,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49768,110 +49880,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49899,7 +50011,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50106,45 +50218,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52410,32 +52531,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54719,228 +54843,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55252,102 +55379,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55363,311 +55493,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55742,7 +55872,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55755,19 +55885,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55778,7 +55908,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56630,12 +56760,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56645,26 +56784,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57408,16 +57549,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63853,79 +64001,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63933,18 +64081,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63955,144 +64103,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64102,25 +64250,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64131,79 +64279,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64215,7 +64363,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64224,31 +64372,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64257,62 +64405,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64324,7 +64472,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64336,7 +64484,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64348,71 +64496,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64421,19 +64569,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64443,7 +64591,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64454,75 +64602,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64531,53 +64679,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64588,98 +64736,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64687,7 +64835,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64698,69 +64846,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64775,20 +64923,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64799,7 +64947,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64810,23 +64958,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64834,118 +64982,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64956,59 +65104,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65016,25 +65164,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65042,7 +65190,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65052,30 +65200,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65084,19 +65232,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65104,11 +65252,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65117,47 +65265,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65166,11 +65314,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65179,11 +65327,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65194,15 +65342,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65211,99 +65359,99 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65325,7 +65473,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65334,84 +65482,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65427,24 +65575,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65454,34 +65602,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65492,7 +65640,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65502,208 +65650,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65712,672 +65860,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68681,8 +68829,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69211,52 +69359,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/it.po b/doc/translations/it.po
index 7c88c2fa81..6b85de60f3 100644
--- a/doc/translations/it.po
+++ b/doc/translations/it.po
@@ -4279,20 +4279,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4301,11 +4309,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4319,15 +4327,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6900,13 +6908,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6932,14 +6942,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -7077,26 +7089,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -7123,14 +7139,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -7139,14 +7158,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7747,7 +7769,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10499,7 +10521,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -13213,9 +13238,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -15043,7 +15067,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -15143,84 +15167,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15536,7 +15567,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -20189,117 +20224,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20470,7 +20509,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20596,7 +20636,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20774,18 +20815,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20795,121 +20838,132 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
#, fuzzy
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
#, fuzzy
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20917,17 +20971,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -21257,30 +21311,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -21290,22 +21346,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -21313,68 +21369,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -21382,22 +21438,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21406,26 +21462,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -23074,53 +23130,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -23128,58 +23192,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -23190,19 +23254,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -23210,17 +23274,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -23228,24 +23292,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -23253,21 +23317,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -23275,65 +23339,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -23343,43 +23407,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23913,20 +23977,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23935,125 +24006,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25737,11 +25808,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -26209,7 +26280,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26935,7 +27006,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27718,16 +27789,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27736,11 +27801,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27748,17 +27813,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27777,7 +27842,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27791,30 +27856,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27822,63 +27868,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28705,7 +28751,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -30193,171 +30239,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -30366,7 +30416,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -30375,26 +30425,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -30403,108 +30453,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -32192,20 +32242,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -32218,52 +32271,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -32285,100 +32338,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -32386,80 +32439,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32743,59 +32796,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32803,34 +32856,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32983,70 +33036,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -33163,11 +33220,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -33215,53 +33272,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -34086,7 +34143,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35985,22 +36042,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -36011,7 +36071,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -36028,7 +36088,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -36039,27 +36099,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -36067,7 +36127,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -36078,30 +36138,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -36111,7 +36171,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -36122,7 +36182,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -36136,7 +36196,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -36145,14 +36205,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -36165,7 +36225,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -36173,32 +36233,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -36206,13 +36266,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -36222,7 +36282,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -36231,11 +36291,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -36244,138 +36304,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37563,34 +37623,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37598,96 +37658,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -40340,20 +40400,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -44195,6 +44255,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -44202,7 +44274,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -44212,13 +44284,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -44232,14 +44304,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -44248,7 +44320,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -44256,7 +44328,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -44272,20 +44344,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -44293,75 +44365,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44371,7 +44443,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44381,27 +44453,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -44409,81 +44481,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44491,109 +44563,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44604,91 +44676,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44697,13 +44769,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44713,7 +44785,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44721,19 +44793,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44747,45 +44819,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44794,7 +44866,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44805,7 +44877,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44821,14 +44893,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44836,49 +44908,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44887,7 +44959,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44895,7 +44967,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44903,7 +44975,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44913,7 +44985,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44922,7 +44994,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44931,7 +45003,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44941,7 +45013,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44949,7 +45021,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44959,7 +45031,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44969,7 +45041,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44977,7 +45049,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44986,7 +45058,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44994,7 +45066,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -45006,477 +45078,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45484,92 +45556,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45579,33 +45651,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45618,7 +45690,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45630,7 +45702,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45642,7 +45714,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45655,7 +45727,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45663,28 +45735,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45694,25 +45766,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45725,7 +45797,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45737,7 +45809,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45749,7 +45821,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45762,13 +45834,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45776,11 +45848,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45794,7 +45866,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45803,7 +45875,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45819,7 +45891,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45829,7 +45901,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45839,7 +45911,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45850,7 +45922,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45860,7 +45932,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45868,7 +45940,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45879,7 +45951,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45894,7 +45966,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45903,13 +45975,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45918,7 +45990,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45928,7 +46000,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45940,7 +46012,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45950,24 +46022,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45976,7 +46048,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45984,7 +46056,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45993,7 +46065,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -46003,7 +46075,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -46011,31 +46083,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -46043,7 +46115,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -46053,14 +46125,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -46068,31 +46140,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -46100,7 +46172,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -46110,7 +46182,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -46119,7 +46191,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -46128,20 +46200,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -46150,7 +46222,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -46158,7 +46230,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -46167,7 +46239,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -46177,20 +46249,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -46199,13 +46271,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -46215,46 +46287,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -46264,7 +46336,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -46276,7 +46348,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -46284,7 +46356,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -46292,7 +46364,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -46301,7 +46373,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -46315,7 +46387,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -46325,7 +46397,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -46334,7 +46406,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -46344,54 +46416,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -46402,61 +46474,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -46465,26 +46548,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46495,20 +46578,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46520,52 +46603,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46573,7 +46656,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46582,10 +46665,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46593,10 +46677,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46604,10 +46689,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46615,10 +46701,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46626,10 +46713,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -47456,23 +47544,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -47481,75 +47573,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -48429,121 +48521,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48551,11 +48647,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48566,7 +48662,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48574,7 +48670,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48586,14 +48682,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48602,17 +48698,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48620,36 +48716,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48657,7 +48753,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48666,111 +48762,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -49073,14 +49169,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49093,15 +49192,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49338,14 +49440,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -49355,14 +49460,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49971,27 +50079,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -50003,7 +50115,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -50013,7 +50125,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -50029,39 +50141,39 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
@@ -50069,29 +50181,29 @@ msgid ""
msgstr ""
"Ritorna [code]true[/code] se il vettore è normalizzato, o falso altrimenti."
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -50102,7 +50214,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -50111,30 +50223,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -50142,37 +50254,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -50183,7 +50295,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -50194,7 +50306,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -50204,53 +50316,53 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
"Se [code] vero [/code], i nodi figli sono ordinati, altrimenti l'ordinamento "
"è disabilitato."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -50258,110 +50370,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -50389,7 +50501,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50596,45 +50708,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52906,32 +53027,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -55219,229 +55343,232 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55755,74 +55882,77 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr "Ritorna [code]true[/code] se [Rect2i] contiene un punto."
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
@@ -55831,31 +55961,31 @@ msgstr ""
"Ritorna [code]true[/code] se l'impostazione specificata da [code]name[/code] "
"esiste, [code]false[/code] altrimenti."
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55871,311 +56001,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -56251,7 +56381,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -56264,19 +56394,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -56287,7 +56417,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -57155,12 +57285,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -57170,26 +57309,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57933,16 +58074,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -64415,79 +64563,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -64495,18 +64643,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -64517,145 +64665,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Restituisce il seno del parametro."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64665,25 +64813,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64694,79 +64842,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Restituisce l'arco-seno del parametro."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64778,7 +64926,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64787,31 +64935,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64820,62 +64968,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64887,7 +65035,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64899,7 +65047,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64911,71 +65059,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64984,19 +65132,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -65006,7 +65154,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65017,78 +65165,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Restituisce il seno del parametro."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Restituisce il valore opposto del parametro."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr "Ritorna [code]true[/code] se [Rect2i] è piano o vuoto."
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65097,53 +65245,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -65154,100 +65302,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Restituisce la tangente del parametro."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Restituisce il valore opposto del parametro."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -65255,7 +65403,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -65266,69 +65414,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -65343,20 +65491,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65367,7 +65515,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65378,23 +65526,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -65402,118 +65550,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65524,59 +65672,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65584,25 +65732,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65610,7 +65758,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65620,30 +65768,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65652,19 +65800,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65672,11 +65820,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65685,47 +65833,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65734,11 +65882,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65747,11 +65895,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65762,15 +65910,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65779,102 +65927,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Restituisce il seno del parametro."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Restituisce il seno del parametro."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Restituisce il resto dei due vettori."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Restituisce la tangente del parametro."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Restituisce la tangente del parametro."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Restituisce il resto dei due vettori."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Restituisce l'inversa della radice quadrata del parametro."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65896,7 +66044,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65905,90 +66053,90 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
"Se [code] vero [/code], i nodi figli sono ordinati, altrimenti l'ordinamento "
"è disabilitato."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
"Se [code] vero [/code], i nodi figli sono ordinati, altrimenti l'ordinamento "
"è disabilitato."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -66004,24 +66152,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -66031,34 +66179,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -66069,7 +66217,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -66079,211 +66227,211 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
"Se [code] vero [/code], i nodi figli sono ordinati, altrimenti l'ordinamento "
"è disabilitato."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -66292,672 +66440,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -69267,8 +69415,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69797,56 +69945,59 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Restituisce il coseno del parametro."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
"Se [code] vero [/code], i nodi figli sono ordinati, altrimenti l'ordinamento "
"è disabilitato."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -70119,6 +70270,10 @@ msgstr ""
"Se [code] vero [/code], i nodi figli sono ordinati, altrimenti l'ordinamento "
"è disabilitato."
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Restituisce il coseno del parametro."
+
#~ msgid ""
#~ "Easing function, based on exponent. The curve values are: 0 is constant, "
#~ "1 is linear, 0 to 1 is ease-in, 1+ is ease out. Negative values are in-"
diff --git a/doc/translations/ja.po b/doc/translations/ja.po
index 7f15993f1e..370b853b00 100644
--- a/doc/translations/ja.po
+++ b/doc/translations/ja.po
@@ -4657,14 +4657,22 @@ msgstr ""
"ã—ã€ä½œæˆã—ãŸãƒœã‚¿ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
-msgstr "組ã¿è¾¼ã¿ãƒ†ã‚­ã‚¹ãƒˆã«ä½¿ç”¨ã•れã¦ã„るラベルを返ã—ã¾ã™ã€‚"
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
-msgstr "OK [Button] インスタンスを返ã—ã¾ã™ã€‚"
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
@@ -4672,7 +4680,7 @@ msgstr ""
"ダイアログ㫠[LineEdit] を登録ã—ã¾ã™ã€‚Enterキーを押ã™ã¨ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã¯æ‰¿è«¾ã•れã¾"
"ã™ã€‚"
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4681,11 +4689,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr "ダイアログ内ã®ãƒ†ã‚­ã‚¹ãƒˆã®è‡ªå‹•折り返ã—を設定ã—ã¾ã™ã€‚"
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4709,15 +4717,15 @@ msgstr ""
"ã‚ã€ã“ã®ãƒ—ロパティ㯠[FileDialog] ã«ãŠã„㦠OK を押ã—ãŸã¨ãã«ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ãŒéžè¡¨"
"示ã«ãªã‚‹ã®ã‚’無効ã«ã™ã‚‹ãŸã‚ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr "ダイアログã§è¡¨ç¤ºã•れるテキスト。"
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr "ダイアログを承諾ã—ãŸã¨ãã€ã¤ã¾ã‚ŠOKãƒœã‚¿ãƒ³ãŒæŠ¼ã•れãŸã¨ãã«ç™ºä¿¡ã•れã¾ã™ã€‚"
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
"ã‚«ã‚¹ã‚¿ãƒ ãƒœã‚¿ãƒ³ãŒæŠ¼ã•れãŸã¨ãã«è¡¨ç¤ºã•れã¾ã™ã€‚[method add_button] ã‚’å‚ç…§ã—ã¦ã"
@@ -7968,13 +7976,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -8000,14 +8010,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -8190,26 +8202,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -8236,14 +8252,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -8252,14 +8271,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -9073,7 +9095,7 @@ msgstr ""
"ã¾ã‚Šã§ã™ã€‚"
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr "[enum ArrayType] 列挙型ã®ã‚µã‚¤ã‚ºã€‚"
@@ -12326,7 +12348,10 @@ msgstr "è·é›¢ã«å¿œã˜ãŸãƒ©ã‚¦ãƒ‰ãƒã‚¹ã®å¯¾æ•°æ¸›è¡°ã€‚"
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -15256,9 +15281,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -17128,7 +17152,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -17228,84 +17252,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -17621,7 +17652,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -22329,117 +22364,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -22611,7 +22650,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -22737,7 +22777,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -22915,18 +22956,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -22936,59 +22979,70 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr "エディタ㮠[EditorSettings] インスタンスを返ã—ã¾ã™ã€‚"
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
-msgstr "エディタ㮠[FileSystemDock] インスタンスを返ã—ã¾ã™ã€‚"
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
-msgstr "エディタ㮠[EditorInspector] インスタンスを返ã—ã¾ã™ã€‚"
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr "エディタ㮠[EditorFileSystem] インスタンスを返ã—ã¾ã™ã€‚"
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr "エディタ㮠[EditorResourcePreview] インスタンスを返ã—ã¾ã™ã€‚"
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
-msgstr "エディタ㮠[ScriptEditor] インスタンスを返ã—ã¾ã™ã€‚"
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr "エディタ㮠[EditorSelection] インスタンスを返ã—ã¾ã™ã€‚"
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
#, fuzzy
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
@@ -22998,7 +23052,7 @@ msgstr ""
"エディタã®ã‚¤ãƒ³ã‚¹ãƒšã‚¯ã‚¿ãƒ‰ãƒƒã‚¯ã«ã¦ã€æŒ‡å®šã•れ㟠[code]object[/code] ã®æŒ‡å®šã•れãŸ"
"プロパティを表示ã—ã¾ã™ã€‚"
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
@@ -23006,7 +23060,7 @@ msgstr ""
"シーンãŒå®Ÿè¡Œä¸­ã®å ´åˆã¯ [code]true[/code] ã‚’ã€ãã†ã§ãªã„å ´åˆã¯ [code]false[/"
"code] ã‚’è¿”ã—ã¾ã™ã€‚ä¸€æ™‚åœæ­¢ä¸­ã®ã‚·ãƒ¼ãƒ³ã¯å®Ÿè¡Œä¸­ã¨ã¿ãªã•れã¾ã™ã€‚"
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
@@ -23014,48 +23068,48 @@ msgstr ""
"指定ã—㟠[code]plugin[/code] ãŒæœ‰åйãªå ´åˆã« [code]true[/code] ã‚’è¿”ã—ã¾ã™ã€‚プ"
"ラグインåã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã¨åŒã˜ã§ã™ã€‚"
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -23063,17 +23117,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr "実行中ã®ã‚·ãƒ¼ãƒ³ã‚’åœæ­¢ã—ã¾ã™ã€‚"
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -23403,30 +23457,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -23436,22 +23492,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -23459,68 +23515,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -23528,22 +23584,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -23552,26 +23608,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -25232,53 +25288,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -25286,60 +25350,60 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
#, fuzzy
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr "[code]true[/code] ã®å ´åˆã€åå°„ã«ãŠã‘る空ã®å¯„与ãŒç„¡è¦–ã•れã¾ã™ã€‚"
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
#, fuzzy
msgid "The screen-space ambient occlusion color."
msgstr "ピクセルå˜ä½ã§ã‚¢ãƒ³ãƒ“エントオクルージョン値を指定ã™ã‚‹ãƒ†ã‚¯ã‚¹ãƒãƒ£ã§ã™ã€‚"
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -25350,19 +25414,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -25370,17 +25434,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -25388,24 +25452,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -25413,21 +25477,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -25435,65 +25499,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -25503,43 +25567,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -26073,20 +26137,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -26095,125 +26166,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -27910,11 +27981,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -28395,7 +28466,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -29123,7 +29194,7 @@ msgstr ""
"https://docs.godotengine.org/ja/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -29906,16 +29977,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -29924,11 +29989,11 @@ msgstr ""
"https://docs.godotengine.org/ja/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -29936,17 +30001,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -29965,7 +30030,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -29979,30 +30044,12 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
+#: doc/classes/HTTPRequest.xml:127
+#, fuzzy
+msgid "Maximum allowed size for response bodies."
+msgstr "モード用enumã®æœ€å¤§å€¤ã€‚"
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -30010,63 +30057,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -30895,7 +30942,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
#, fuzzy
msgid "Resizes the texture to the specified dimensions."
msgstr "指定ã•れãŸå…¥åŠ›ã«æŽ¥ç¶šã•れã¦ã„るノードを切断ã—ã¾ã™ã€‚"
@@ -32391,173 +32438,177 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
#, fuzzy
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr "指定ã•れãŸä½ç½®ã«ã‚るビットマップã®è¦ç´ ã‚’ã€æŒ‡å®šã•れãŸå€¤ã«è¨­å®šã—ã¾ã™ã€‚"
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
#, fuzzy
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr "指定ã—㟠[enum TextureParam] ã«é–¢é€£ä»˜ã‘られ㟠[Texture] ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -32566,7 +32617,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -32575,26 +32626,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -32603,108 +32654,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -34424,20 +34475,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -34450,52 +34504,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -34517,100 +34571,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -34618,80 +34672,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -34975,59 +35029,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -35035,34 +35089,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -35215,70 +35269,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -35396,11 +35454,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr "汎用é…列データ型。"
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -35448,53 +35506,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -36319,7 +36377,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -38224,22 +38282,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -38250,7 +38311,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -38267,7 +38328,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -38278,27 +38339,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -38306,7 +38367,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -38317,30 +38378,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -38350,7 +38411,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -38361,7 +38422,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -38375,7 +38436,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -38384,14 +38445,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -38404,7 +38465,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -38412,32 +38473,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -38445,13 +38506,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -38461,7 +38522,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -38470,11 +38531,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -38483,138 +38544,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -39805,34 +39866,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -39840,96 +39901,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -42596,20 +42657,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr "カリングã¯è¡Œã‚れã¾ã›ã‚“。"
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -46474,6 +46535,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -46481,7 +46554,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -46491,13 +46564,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -46511,14 +46584,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -46527,7 +46600,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -46535,7 +46608,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -46551,20 +46624,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -46572,75 +46645,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -46650,7 +46723,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -46660,27 +46733,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -46688,12 +46761,12 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
@@ -46702,20 +46775,20 @@ msgstr ""
"[code]true[/code] ã®å ´åˆã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ [code]bus_idx[/code] ã®ãƒã‚¹ã‚’ミュート"
"ã—ã¾ã™ã€‚"
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
@@ -46724,51 +46797,51 @@ msgstr ""
"[code]true[/code]ã®å ´åˆã€ã‚ªãƒ–ジェクトã¯è·é›¢ã«é–¢ä¿‚ãªãåŒã˜ã‚µã‚¤ã‚ºã§ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°"
"ã•れã¾ã™ã€‚"
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -46776,74 +46849,74 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
@@ -46851,38 +46924,38 @@ msgstr ""
"[code]true[/code] ã®å ´åˆã€ã‚·ãƒ¼ãƒ³ãƒ„リーã«è¿½åŠ ã•れãŸã¨ãã«ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãŒå†ç”Ÿã•れ"
"ã¾ã™ã€‚"
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr "[code]true[/code]ã®å ´åˆã€æ³•ç·šãƒžãƒƒãƒ”ãƒ³ã‚°ãŒæœ‰åйã«ãªã‚Šã¾ã™ã€‚"
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -46893,91 +46966,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -46986,13 +47059,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -47002,7 +47075,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -47010,19 +47083,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -47036,45 +47109,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -47083,7 +47156,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -47094,7 +47167,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -47110,14 +47183,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -47125,49 +47198,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -47176,7 +47249,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -47184,7 +47257,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -47192,7 +47265,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -47202,7 +47275,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -47211,7 +47284,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -47220,7 +47293,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -47230,7 +47303,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -47238,7 +47311,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -47248,7 +47321,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -47258,7 +47331,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -47266,7 +47339,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -47275,7 +47348,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -47283,7 +47356,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -47295,477 +47368,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -47773,92 +47846,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -47868,33 +47941,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47907,7 +47980,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47919,7 +47992,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -47931,7 +48004,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -47944,7 +48017,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -47952,28 +48025,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -47983,25 +48056,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -48014,7 +48087,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -48026,7 +48099,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -48038,7 +48111,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -48051,13 +48124,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -48065,11 +48138,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -48083,7 +48156,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -48092,7 +48165,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -48108,7 +48181,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -48118,7 +48191,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -48128,7 +48201,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -48139,7 +48212,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -48149,7 +48222,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -48157,7 +48230,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -48168,7 +48241,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -48183,7 +48256,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -48192,13 +48265,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -48207,7 +48280,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -48217,7 +48290,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -48229,7 +48302,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -48239,24 +48312,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -48265,7 +48338,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -48273,7 +48346,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -48282,7 +48355,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -48292,7 +48365,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -48300,31 +48373,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -48332,7 +48405,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -48342,14 +48415,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -48357,31 +48430,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -48389,7 +48462,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -48399,7 +48472,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -48408,7 +48481,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -48417,20 +48490,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -48439,7 +48512,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -48447,7 +48520,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -48456,7 +48529,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -48466,20 +48539,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -48488,13 +48561,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -48504,46 +48577,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -48553,7 +48626,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -48565,7 +48638,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -48573,7 +48646,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -48581,7 +48654,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -48590,7 +48663,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -48604,7 +48677,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -48614,7 +48687,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -48623,7 +48696,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -48633,54 +48706,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -48691,61 +48764,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -48754,26 +48838,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -48784,20 +48868,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -48809,54 +48893,54 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
#, fuzzy
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr "サブサーフェス スキャタリング効果ã®å¼·ã•。"
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
#, fuzzy
msgid "Max radius used for subsurface scattering samples."
msgstr "サブサーフェス スキャタリング効果ã®å¼·ã•。"
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -48864,7 +48948,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -48873,10 +48957,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -48884,10 +48969,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -48895,10 +48981,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -48906,10 +48993,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -48917,10 +49005,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -49752,23 +49841,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/ja/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -49777,76 +49870,76 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
#, fuzzy
msgid "Update the probe once on the next frame."
msgstr "ã‚­ãƒ¼ãƒ•ãƒ¬ãƒ¼ãƒ ã§æ›´æ–°ã™ã‚‹ã€‚"
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -50733,121 +50826,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -50855,11 +50952,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -50870,7 +50967,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -50878,7 +50975,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -50890,14 +50987,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -50906,17 +51003,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -50924,36 +51021,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -50961,7 +51058,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -50970,111 +51067,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -51380,14 +51477,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -51400,15 +51500,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -51645,14 +51748,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -51662,14 +51768,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -52279,27 +52388,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -52311,7 +52424,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -52321,7 +52434,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -52337,39 +52450,39 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
@@ -52378,29 +52491,29 @@ msgstr ""
"ボタン内ã«ãƒžã‚¦ã‚¹ãŒå…¥ã‚Šã€ã¾ã ãƒœã‚¿ãƒ³ã‹ã‚‰é›¢ã‚Œã¦ã„ãªã„å ´åˆã« [code]true[/code] ã‚’"
"è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -52411,7 +52524,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -52420,30 +52533,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -52451,37 +52564,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -52492,7 +52605,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -52503,7 +52616,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -52513,52 +52626,52 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr "[code]true[/code]ã®å ´åˆã€æ³•ç·šãƒžãƒƒãƒ”ãƒ³ã‚°ãŒæœ‰åйã«ãªã‚Šã¾ã™ã€‚"
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
#, fuzzy
msgid "Emitted whenever global menu item is clicked."
msgstr "[member advance_condition] ãŒå¤‰æ›´ã•れãŸã¨ãã«ç™ºä¿¡ã•れã¾ã™ã€‚"
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -52566,110 +52679,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -52697,7 +52810,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -52904,45 +53017,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -55487,32 +55609,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -57824,28 +57949,31 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
@@ -57853,7 +57981,7 @@ msgstr ""
"インデックス [code]idx[/code] ã®ãƒˆãƒ©ãƒƒã‚¯ãŒæœ‰åйãªå ´åˆã€ [code]true[/code] ã‚’è¿”"
"ã—ã¾ã™ã€‚"
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
#, fuzzy
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
@@ -57861,31 +57989,31 @@ msgid ""
msgstr ""
"インデックス [code]bus_idx[/code] ã®ãƒã‚¹åã‚’ [code]name[/code] ã«è¨­å®šã—ã¾ã™ã€‚"
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
#, fuzzy
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
@@ -57894,7 +58022,7 @@ msgstr ""
"[code]true[/code] ã®å ´åˆã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ [code]bus_idx[/code] ã®ãƒã‚¹ä¸Šã§ã®ã‚¤ãƒ³"
"デックス [code]effect_idx[/code] ã®ã‚¨ãƒ•ã‚§ã‚¯ãƒˆãŒæœ‰åйã«ãªã‚Šã¾ã™ã€‚"
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
#, fuzzy
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
@@ -57903,11 +58031,11 @@ msgstr ""
"[code]true[/code] ã®å ´åˆã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ [code]bus_idx[/code] ã®ãƒã‚¹ã‚’ミュート"
"ã—ã¾ã™ã€‚"
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
#, fuzzy
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
@@ -57915,150 +58043,150 @@ msgid ""
msgstr ""
"インデックス [code]bus_idx[/code] ã®ãƒã‚¹åã‚’ [code]name[/code] ã«è¨­å®šã—ã¾ã™ã€‚"
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -58373,62 +58501,65 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
#, fuzzy
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr "録画中ã‹ã©ã†ã‹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
@@ -58436,7 +58567,7 @@ msgstr ""
"指定ã•れãŸåå‰ [code]name[/code] ã®ã‚µãƒ–ノードãŒå­˜åœ¨ã™ã‚‹å ´åˆã€[code]true[/"
"code] ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
@@ -58445,7 +58576,7 @@ msgstr ""
"指定ã•れãŸåå‰ [code]name[/code] ã®ã‚µãƒ–ノードãŒå­˜åœ¨ã™ã‚‹å ´åˆã€[code]true[/"
"code] ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
@@ -58454,31 +58585,31 @@ msgstr ""
"指定ã•れãŸåå‰ [code]name[/code] ã®ã‚µãƒ–ノードãŒå­˜åœ¨ã™ã‚‹å ´åˆã€[code]true[/"
"code] ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -58494,311 +58625,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -58874,7 +59005,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -58887,19 +59018,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -58910,7 +59041,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
#, fuzzy
msgid "Texture is a video surface."
msgstr "指定ã•れãŸã‚µãƒ¼ãƒ•ェスã®åå‰ã‚’設定ã—ã¾ã™ã€‚"
@@ -59795,12 +59926,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
+msgstr ""
+
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -59810,26 +59950,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -60577,16 +60719,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -67124,79 +67273,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -67204,18 +67353,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -67226,145 +67375,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "パラメータã®ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -67374,25 +67523,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67403,80 +67552,80 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "パラメータã®é€†ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
#, fuzzy
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr "円柱ã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã«ä½¿ã†ãƒžãƒ†ãƒªã‚¢ãƒ«ã€‚"
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67488,7 +67637,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -67497,31 +67646,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -67530,63 +67679,63 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
#, fuzzy
msgid "Sets the lightmap to use with this instance."
msgstr "指定ã•れãŸåå‰ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒŽãƒ¼ãƒ‰ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -67598,7 +67747,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -67610,7 +67759,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -67622,71 +67771,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -67695,19 +67844,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -67717,7 +67866,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67728,79 +67877,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "パラメータã®ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
#, fuzzy
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr "行列ã«ã‚ˆã£ã¦å¤‰æ›ã•れ㟠(ä¹—ç®—ã•れãŸ) ベクトルを返ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "行列ã®é€†è¡Œåˆ—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr "与ãˆã‚‰ã‚ŒãŸãƒŽãƒ¼ãƒ‰ã‚’å«ã‚€ã‚°ãƒ©ãƒ•ã®å ´åˆã€[code]true[/code] ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67809,53 +67958,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -67866,102 +68015,102 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
#, fuzzy
msgid "Removes a mesh's surface."
msgstr "サブノードを除去ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "メソッドトラックã®ãƒ¡ã‚½ãƒƒãƒ‰åã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "メソッドトラックã®ãƒ¡ã‚½ãƒƒãƒ‰åã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
#, fuzzy
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr "メソッドトラックã®ãƒ¡ã‚½ãƒƒãƒ‰åã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -67969,7 +68118,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -67980,69 +68129,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -68057,20 +68206,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -68081,7 +68230,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -68092,23 +68241,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -68116,80 +68265,80 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
#, fuzzy
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
@@ -68198,39 +68347,39 @@ msgstr ""
"[code]true[/code]ã®å ´åˆã€ãƒœãƒ‡ã‚£ã®é€æ˜Žåº¦ã‚’有効ã«ã—ã¾ã™ã€‚[member blend_mode] ã‚‚"
"å‚ç…§ã—ã¦ãã ã•ã„。"
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -68241,60 +68390,60 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
#, fuzzy
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr "[code]true[/code] ã®å ´åˆã€åå°„ã«ãŠã‘る空ã®å¯„与ãŒç„¡è¦–ã•れã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -68302,25 +68451,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -68328,7 +68477,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -68338,30 +68487,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -68370,19 +68519,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -68390,11 +68539,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -68403,47 +68552,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -68452,11 +68601,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -68465,11 +68614,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -68480,15 +68629,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -68497,94 +68646,94 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
#, fuzzy
msgid "Returns a list of all the textures and their information."
msgstr "アニメーションã®ãƒˆãƒ©ãƒƒã‚¯æ•°ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "パラメータã®ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "与ãˆã‚‰ã‚ŒãŸãƒ•レーム㮠[Texture2D] ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "2ã¤ã®ãƒ™ã‚¯ãƒˆãƒ«ã®å‰°ä½™ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "指定ã•れãŸé·ç§»ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "パラメータã®ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "2ã¤ã®ãƒ™ã‚¯ãƒˆãƒ«ã®å‰°ä½™ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "ã‚­ãƒ¥ãƒ¼å†…ã§æ¬¡ã«ã‚るアニメーションã®åå‰ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
#, fuzzy
msgid "Returns the texture's width."
msgstr "指定ã•れãŸé·ç§»ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
#, fuzzy
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
"テクスãƒãƒ£ç”¨ã®ç¹°ã‚Šè¿”ã—フラグã§ã™ã€‚オプション㯠[enum TextureFilter] ã‚’å‚ç…§ã—"
"ã¦ãã ã•ã„。"
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
#, fuzzy
msgid "Sets the texture's path."
msgstr "テクスãƒãƒ£ã®æå†™ã‚ªãƒ•セット。"
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
#, fuzzy
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
@@ -68593,15 +68742,15 @@ msgstr ""
"[code]true[/code]ã®å ´åˆã€ã‚ªãƒ–ジェクトã¯è·é›¢ã«é–¢ä¿‚ãªãåŒã˜ã‚µã‚¤ã‚ºã§ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°"
"ã•れã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -68623,7 +68772,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -68632,87 +68781,87 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
#, fuzzy
msgid "Detaches the viewport from the screen."
msgstr "指定ã—ãŸãƒŽãƒ¼ãƒ‰ã‚’グラフã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr "ã‚‚ã— [code]true[/code] ã§ã‚れã°ã€ãƒ•ã‚£ãƒ«ã‚¿ãƒªãƒ³ã‚°ã¯æœ‰åйã«ãªã‚Šã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr "[code]true[/code]ã®å ´åˆã€é ‚点色をアルベド色ã¨ã—ã¦ä½¿ç”¨ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -68728,24 +68877,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -68755,34 +68904,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -68793,7 +68942,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -68803,209 +68952,209 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr "[code]true[/code] ã§ã‚れã°ã€ãƒ†ã‚¯ã‚¹ãƒãƒ£ã¯åž‚ç›´ã«å転ã•れã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -69014,675 +69163,675 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
#, fuzzy
msgid "Scales the shadow color."
msgstr "å½±ã®ä¸é€æ˜ŽåŒ–機能を有効ã«ã—ã¾ã™ã€‚"
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
#, fuzzy
msgid "The amount of 2d items in the frame."
msgstr "エフェクトã«ä½¿ã†ãƒœã‚¤ã‚¹ã®æ•°ã€‚"
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
#, fuzzy
msgid "The amount of 2d draw calls in frame."
msgstr "エフェクトã«ä½¿ã†ãƒœã‚¤ã‚¹ã®æ•°ã€‚"
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -71991,8 +72140,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -72523,58 +72672,61 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "与ãˆã‚‰ã‚ŒãŸãƒ•レーム㮠[Texture2D] ã‚’è¿”ã—ã¾ã™ã€‚"
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr "ã‚‚ã— [code]true[/code] ã§ã‚れã°ã€ãƒ•ã‚£ãƒ«ã‚¿ãƒªãƒ³ã‚°ã¯æœ‰åйã«ãªã‚Šã¾ã™ã€‚"
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
#, fuzzy
msgid "The text displayed in the window's title bar."
msgstr "ダイアログã§è¡¨ç¤ºã•れるテキスト。"
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
#, fuzzy
msgid "The icon for the close button."
msgstr "左マウスボタン。"
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
#, fuzzy
msgid "The color of the title text."
msgstr "スペキュラ光エフェクトã®è‰²ã€‚"
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
#, fuzzy
msgid "The font used to draw the title."
msgstr "円柱ã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã«ä½¿ã†ãƒžãƒ†ãƒªã‚¢ãƒ«ã€‚"
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -72845,6 +72997,25 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#~ msgid "Returns the label used for built-in text."
+#~ msgstr "組ã¿è¾¼ã¿ãƒ†ã‚­ã‚¹ãƒˆã«ä½¿ç”¨ã•れã¦ã„るラベルを返ã—ã¾ã™ã€‚"
+
+#~ msgid "Returns the OK [Button] instance."
+#~ msgstr "OK [Button] インスタンスを返ã—ã¾ã™ã€‚"
+
+#~ msgid "Returns the editor's [FileSystemDock] instance."
+#~ msgstr "エディタ㮠[FileSystemDock] インスタンスを返ã—ã¾ã™ã€‚"
+
+#~ msgid "Returns the editor's [EditorInspector] instance."
+#~ msgstr "エディタ㮠[EditorInspector] インスタンスを返ã—ã¾ã™ã€‚"
+
+#~ msgid "Returns the editor's [ScriptEditor] instance."
+#~ msgstr "エディタ㮠[ScriptEditor] インスタンスを返ã—ã¾ã™ã€‚"
+
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "与ãˆã‚‰ã‚ŒãŸãƒ•レーム㮠[Texture2D] ã‚’è¿”ã—ã¾ã™ã€‚"
+
#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
diff --git a/doc/translations/ko.po b/doc/translations/ko.po
index c10dc3b66e..8741f82f9c 100644
--- a/doc/translations/ko.po
+++ b/doc/translations/ko.po
@@ -3858,20 +3858,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3880,11 +3888,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3898,15 +3906,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6469,13 +6477,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6501,14 +6511,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6646,26 +6658,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6692,14 +6708,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6708,14 +6727,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7317,7 +7339,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10060,7 +10082,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12773,9 +12798,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14629,7 +14653,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14729,84 +14753,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15122,7 +15153,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19811,117 +19846,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20092,7 +20131,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20218,7 +20258,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20396,18 +20437,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20417,119 +20460,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20537,17 +20591,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20877,30 +20931,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20910,22 +20966,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20933,68 +20989,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -21002,22 +21058,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21026,26 +21082,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22688,53 +22744,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22742,58 +22806,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22804,19 +22868,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22824,17 +22888,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22842,24 +22906,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22867,21 +22931,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22889,65 +22953,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22957,43 +23021,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23526,20 +23590,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23548,125 +23619,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25342,11 +25413,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25804,7 +25875,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26530,7 +26601,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27313,16 +27384,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27331,11 +27396,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27343,17 +27408,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27372,7 +27437,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27386,30 +27451,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27417,63 +27463,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28306,7 +28352,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29789,171 +29835,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29962,7 +30012,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29971,26 +30021,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29999,108 +30049,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31787,20 +31837,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31813,52 +31866,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31880,100 +31933,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31981,80 +32034,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32337,59 +32390,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32397,34 +32450,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32577,70 +32630,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32757,11 +32814,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32809,53 +32866,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33680,7 +33737,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35700,22 +35757,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35726,7 +35786,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35743,7 +35803,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35754,27 +35814,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35782,7 +35842,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35793,30 +35853,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35826,7 +35886,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35837,7 +35897,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35851,7 +35911,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35860,14 +35920,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35880,7 +35940,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35888,32 +35948,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35921,13 +35981,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35937,7 +35997,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35946,11 +36006,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35959,138 +36019,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37276,34 +37336,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37311,96 +37371,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -40035,20 +40095,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43888,6 +43948,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43895,7 +43967,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43905,13 +43977,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43925,14 +43997,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43941,7 +44013,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43949,7 +44021,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43965,20 +44037,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43986,75 +44058,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44064,7 +44136,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44074,27 +44146,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -44102,81 +44174,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44184,109 +44256,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44297,91 +44369,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44390,13 +44462,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44406,7 +44478,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44414,19 +44486,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44440,45 +44512,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44487,7 +44559,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44498,7 +44570,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44514,14 +44586,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44529,49 +44601,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44580,7 +44652,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44588,7 +44660,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44596,7 +44668,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44606,7 +44678,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44615,7 +44687,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44624,7 +44696,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44634,7 +44706,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44642,7 +44714,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44652,7 +44724,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44662,7 +44734,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44670,7 +44742,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44679,7 +44751,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44687,7 +44759,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44699,477 +44771,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45177,92 +45249,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45272,33 +45344,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45311,7 +45383,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45323,7 +45395,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45335,7 +45407,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45348,7 +45420,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45356,28 +45428,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45387,25 +45459,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45418,7 +45490,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45430,7 +45502,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45442,7 +45514,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45455,13 +45527,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45469,11 +45541,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45487,7 +45559,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45496,7 +45568,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45512,7 +45584,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45522,7 +45594,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45532,7 +45604,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45543,7 +45615,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45553,7 +45625,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45561,7 +45633,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45572,7 +45644,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45587,7 +45659,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45596,13 +45668,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45611,7 +45683,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45621,7 +45693,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45633,7 +45705,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45643,24 +45715,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45669,7 +45741,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45677,7 +45749,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45686,7 +45758,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45696,7 +45768,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45704,31 +45776,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45736,7 +45808,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45746,14 +45818,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45761,31 +45833,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45793,7 +45865,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45803,7 +45875,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45812,7 +45884,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45821,20 +45893,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45843,7 +45915,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45851,7 +45923,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45860,7 +45932,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45870,20 +45942,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45892,13 +45964,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45908,46 +45980,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45957,7 +46029,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45969,7 +46041,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45977,7 +46049,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45985,7 +46057,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45994,7 +46066,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -46008,7 +46080,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -46018,7 +46090,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -46027,7 +46099,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -46037,54 +46109,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -46095,61 +46167,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -46158,26 +46241,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46188,20 +46271,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46213,52 +46296,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46266,7 +46349,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46275,10 +46358,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46286,10 +46370,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46297,10 +46382,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46308,10 +46394,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46319,10 +46406,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -47143,23 +47231,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -47168,75 +47260,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -48115,121 +48207,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48237,11 +48333,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48252,7 +48348,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48260,7 +48356,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48272,14 +48368,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48288,17 +48384,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48306,36 +48402,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48343,7 +48439,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48352,111 +48448,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48759,14 +48855,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48779,15 +48878,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49024,14 +49126,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -49041,14 +49146,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49657,27 +49765,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49689,7 +49801,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49699,7 +49811,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49715,67 +49827,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49786,7 +49898,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49795,30 +49907,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49826,37 +49938,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49867,7 +49979,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49878,7 +49990,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49888,50 +50000,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49939,110 +50051,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -50070,7 +50182,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50277,45 +50389,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52581,32 +52702,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54890,228 +55014,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55424,102 +55551,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55535,311 +55665,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55914,7 +56044,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55927,19 +56057,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55950,7 +56080,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56802,12 +56932,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56817,26 +56956,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57580,16 +57721,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -64035,79 +64183,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -64115,18 +64263,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -64137,145 +64285,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64285,25 +64433,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64314,79 +64462,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì•„í¬ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64398,7 +64546,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64407,31 +64555,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64440,62 +64588,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64507,7 +64655,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64519,7 +64667,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64531,71 +64679,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64604,19 +64752,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64626,7 +64774,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64637,77 +64785,77 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ë°˜ëŒ€ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64716,53 +64864,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64773,100 +64921,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ íƒ„ì  íŠ¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ë°˜ëŒ€ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64874,7 +65022,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64885,69 +65033,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64962,20 +65110,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64986,7 +65134,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64997,23 +65145,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -65021,118 +65169,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65143,59 +65291,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65203,25 +65351,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65229,7 +65377,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65239,30 +65387,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65271,19 +65419,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65291,11 +65439,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65304,47 +65452,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65353,11 +65501,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65366,11 +65514,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65381,15 +65529,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65398,102 +65546,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "ë‘ ë²¡í„°ì˜ ë‚˜ë¨¸ì§€ë¥¼ 반환합니다."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ íƒ„ì  íŠ¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ íƒ„ì  íŠ¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "ë‘ ë²¡í„°ì˜ ë‚˜ë¨¸ì§€ë¥¼ 반환합니다."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì œê³±ê·¼ 역함수 ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65515,7 +65663,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65524,84 +65672,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65617,24 +65765,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65644,34 +65792,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65682,7 +65830,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65692,208 +65840,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65902,672 +66050,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68873,8 +69021,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69404,53 +69552,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì½”ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69721,6 +69872,10 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì½”ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
#~ msgid ""
#~ "https://docs.godotengine.org/en/latest/getting_started/step_by_step/"
#~ "animations.html"
diff --git a/doc/translations/lv.po b/doc/translations/lv.po
index 6691923abc..e1833c8445 100644
--- a/doc/translations/lv.po
+++ b/doc/translations/lv.po
@@ -3734,20 +3734,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3756,11 +3764,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3774,15 +3782,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6344,13 +6352,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6376,14 +6386,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6521,26 +6533,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6567,14 +6583,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6583,14 +6602,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7191,7 +7213,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9933,7 +9955,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12641,9 +12666,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14468,7 +14492,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14568,84 +14592,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14961,7 +14992,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19585,117 +19620,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19866,7 +19905,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19992,7 +20032,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20170,18 +20211,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20191,119 +20234,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20311,17 +20365,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20651,30 +20705,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20684,22 +20740,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20707,68 +20763,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20776,22 +20832,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20800,26 +20856,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22462,53 +22518,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22516,58 +22580,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22578,19 +22642,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22598,17 +22662,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22616,24 +22680,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22641,21 +22705,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22663,65 +22727,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22731,43 +22795,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23299,20 +23363,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23321,125 +23392,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25115,11 +25186,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25576,7 +25647,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26302,7 +26373,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27085,16 +27156,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27103,11 +27168,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27115,17 +27180,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27144,7 +27209,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27158,30 +27223,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27189,63 +27235,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28070,7 +28116,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29552,171 +29598,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29725,7 +29775,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29734,26 +29784,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29762,108 +29812,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31548,20 +31598,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31574,52 +31627,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31641,100 +31694,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31742,80 +31795,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32098,59 +32151,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32158,34 +32211,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32338,70 +32391,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32518,11 +32575,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32570,53 +32627,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33440,7 +33497,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35327,22 +35384,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35353,7 +35413,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35370,7 +35430,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35381,27 +35441,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35409,7 +35469,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35420,30 +35480,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35453,7 +35513,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35464,7 +35524,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35478,7 +35538,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35487,14 +35547,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35507,7 +35567,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35515,32 +35575,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35548,13 +35608,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35564,7 +35624,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35573,11 +35633,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35586,138 +35646,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36902,34 +36962,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36937,96 +36997,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39642,20 +39702,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43490,6 +43550,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43497,7 +43569,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43507,13 +43579,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43527,14 +43599,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43543,7 +43615,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43551,7 +43623,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43567,20 +43639,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43588,75 +43660,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43666,7 +43738,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43676,27 +43748,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43704,81 +43776,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43786,109 +43858,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43899,91 +43971,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -43992,13 +44064,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44008,7 +44080,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44016,19 +44088,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44042,45 +44114,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44089,7 +44161,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44100,7 +44172,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44116,14 +44188,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44131,49 +44203,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44182,7 +44254,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44190,7 +44262,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44198,7 +44270,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44208,7 +44280,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44217,7 +44289,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44226,7 +44298,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44236,7 +44308,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44244,7 +44316,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44254,7 +44326,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44264,7 +44336,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44272,7 +44344,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44281,7 +44353,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44289,7 +44361,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44301,477 +44373,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44779,92 +44851,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44874,33 +44946,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44913,7 +44985,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44925,7 +44997,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44937,7 +45009,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44950,7 +45022,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44958,28 +45030,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44989,25 +45061,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45020,7 +45092,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45032,7 +45104,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45044,7 +45116,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45057,13 +45129,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45071,11 +45143,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45089,7 +45161,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45098,7 +45170,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45114,7 +45186,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45124,7 +45196,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45134,7 +45206,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45145,7 +45217,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45155,7 +45227,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45163,7 +45235,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45174,7 +45246,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45189,7 +45261,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45198,13 +45270,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45213,7 +45285,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45223,7 +45295,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45235,7 +45307,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45245,24 +45317,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45271,7 +45343,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45279,7 +45351,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45288,7 +45360,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45298,7 +45370,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45306,31 +45378,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45338,7 +45410,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45348,14 +45420,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45363,31 +45435,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45395,7 +45467,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45405,7 +45477,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45414,7 +45486,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45423,20 +45495,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45445,7 +45517,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45453,7 +45525,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45462,7 +45534,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45472,20 +45544,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45494,13 +45566,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45510,46 +45582,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45559,7 +45631,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45571,7 +45643,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45579,7 +45651,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45587,7 +45659,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45596,7 +45668,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45610,7 +45682,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45620,7 +45692,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45629,7 +45701,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45639,54 +45711,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45697,61 +45769,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45760,26 +45843,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45790,20 +45873,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45815,52 +45898,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45868,7 +45951,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45877,10 +45960,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45888,10 +45972,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45899,10 +45984,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45910,10 +45996,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45921,10 +46008,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46745,23 +46833,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46770,75 +46862,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47717,121 +47809,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47839,11 +47935,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47854,7 +47950,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47862,7 +47958,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47874,14 +47970,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47890,17 +47986,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47908,36 +48004,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47945,7 +48041,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47954,111 +48050,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48361,14 +48457,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48381,15 +48480,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48626,14 +48728,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48643,14 +48748,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49259,27 +49367,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49291,7 +49403,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49301,7 +49413,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49317,67 +49429,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49388,7 +49500,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49397,30 +49509,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49428,37 +49540,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49469,7 +49581,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49480,7 +49592,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49490,50 +49602,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49541,110 +49653,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49672,7 +49784,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49879,45 +49991,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52183,32 +52304,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54492,228 +54616,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55025,102 +55152,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55136,311 +55266,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55515,7 +55645,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55528,19 +55658,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55551,7 +55681,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56403,12 +56533,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56418,26 +56557,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57181,16 +57322,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63626,79 +63774,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63706,18 +63854,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63728,144 +63876,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63875,25 +64023,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63904,78 +64052,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63987,7 +64135,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -63996,31 +64144,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64029,62 +64177,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64096,7 +64244,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64108,7 +64256,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64120,71 +64268,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64193,19 +64341,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64215,7 +64363,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64226,75 +64374,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64303,53 +64451,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64360,98 +64508,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64459,7 +64607,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64470,69 +64618,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64547,20 +64695,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64571,7 +64719,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64582,23 +64730,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64606,118 +64754,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64728,59 +64876,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64788,25 +64936,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64814,7 +64962,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64824,30 +64972,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64856,19 +65004,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64876,11 +65024,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64889,47 +65037,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64938,11 +65086,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64951,11 +65099,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64966,15 +65114,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64983,95 +65131,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65093,7 +65241,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65102,84 +65250,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65195,24 +65343,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65222,34 +65370,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65260,7 +65408,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65270,208 +65418,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65480,672 +65628,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68449,8 +68597,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68979,52 +69127,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/mr.po b/doc/translations/mr.po
index 16a42fdede..a1e7498acb 100644
--- a/doc/translations/mr.po
+++ b/doc/translations/mr.po
@@ -3728,20 +3728,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3750,11 +3758,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3768,15 +3776,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6329,13 +6337,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6361,14 +6371,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6502,26 +6514,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6548,14 +6564,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6564,14 +6583,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7169,7 +7191,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9899,7 +9921,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12584,9 +12609,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14404,7 +14428,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14504,84 +14528,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14897,7 +14928,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19503,117 +19538,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19784,7 +19823,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19907,7 +19947,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20082,18 +20123,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20103,119 +20146,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20223,17 +20277,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20561,30 +20615,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20594,22 +20650,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20617,68 +20673,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20686,22 +20742,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20710,26 +20766,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22360,53 +22416,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22414,58 +22478,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22476,19 +22540,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22496,17 +22560,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22514,24 +22578,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22539,21 +22603,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22561,65 +22625,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22629,43 +22693,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23197,20 +23261,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23219,125 +23290,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25003,11 +25074,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25464,7 +25535,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26185,7 +26256,7 @@ msgid ""
"html"
msgstr ""
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/ssl_certificates."
@@ -26965,26 +27036,20 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
"html"
msgstr ""
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -26992,17 +27057,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27021,7 +27086,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27035,30 +27100,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27066,63 +27112,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -27944,7 +27990,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29414,171 +29460,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29587,7 +29637,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29596,26 +29646,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29624,108 +29674,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31394,20 +31444,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31420,52 +31473,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31487,100 +31540,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31588,80 +31641,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -31944,59 +31997,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32004,34 +32057,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32184,70 +32237,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32364,11 +32421,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32416,53 +32473,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33276,7 +33333,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35150,22 +35207,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35176,7 +35236,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35193,7 +35253,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35204,27 +35264,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35232,7 +35292,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35243,30 +35303,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35276,7 +35336,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35287,7 +35347,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35301,7 +35361,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35310,14 +35370,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35330,7 +35390,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35338,32 +35398,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35371,13 +35431,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35387,7 +35447,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35396,11 +35456,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35409,138 +35469,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36715,34 +36775,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36750,96 +36810,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39450,20 +39510,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43295,6 +43355,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43302,7 +43374,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43312,13 +43384,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43332,14 +43404,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43348,7 +43420,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43356,7 +43428,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43372,20 +43444,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43393,75 +43465,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43471,7 +43543,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43481,27 +43553,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43509,81 +43581,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43591,109 +43663,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43704,91 +43776,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -43797,13 +43869,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -43813,7 +43885,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -43821,19 +43893,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -43847,45 +43919,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -43894,7 +43966,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -43905,7 +43977,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -43921,14 +43993,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -43936,49 +44008,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -43987,7 +44059,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -43995,7 +44067,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44003,7 +44075,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44013,7 +44085,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44022,7 +44094,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44031,7 +44103,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44041,7 +44113,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44049,7 +44121,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44059,7 +44131,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44069,7 +44141,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44077,7 +44149,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44086,7 +44158,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44094,7 +44166,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44106,477 +44178,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44584,92 +44656,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44679,33 +44751,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44718,7 +44790,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44730,7 +44802,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44742,7 +44814,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44755,7 +44827,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44763,28 +44835,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44794,25 +44866,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44825,7 +44897,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44837,7 +44909,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44849,7 +44921,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44862,13 +44934,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -44876,11 +44948,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -44894,7 +44966,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -44903,7 +44975,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -44919,7 +44991,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -44929,7 +45001,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -44939,7 +45011,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -44950,7 +45022,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -44960,7 +45032,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -44968,7 +45040,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -44979,7 +45051,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -44994,7 +45066,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45003,13 +45075,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45018,7 +45090,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45028,7 +45100,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45040,7 +45112,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45050,24 +45122,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45076,7 +45148,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45084,7 +45156,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45093,7 +45165,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45103,7 +45175,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45111,31 +45183,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45143,7 +45215,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45153,14 +45225,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45168,31 +45240,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45200,7 +45272,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45210,7 +45282,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45219,7 +45291,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45228,20 +45300,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45250,7 +45322,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45258,7 +45330,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45267,7 +45339,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45277,20 +45349,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45299,13 +45371,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45315,46 +45387,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45364,7 +45436,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45376,7 +45448,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45384,7 +45456,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45392,7 +45464,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45401,7 +45473,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45415,7 +45487,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45425,7 +45497,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45434,7 +45506,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45444,54 +45516,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45502,61 +45574,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45565,26 +45648,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45595,20 +45678,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45620,52 +45703,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45673,7 +45756,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45682,10 +45765,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45693,10 +45777,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45704,10 +45789,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45715,10 +45801,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45726,10 +45813,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46545,21 +46633,25 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46568,75 +46660,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47511,121 +47603,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47633,11 +47729,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47648,7 +47744,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47656,7 +47752,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47668,14 +47764,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47684,17 +47780,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47702,36 +47798,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47739,7 +47835,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47748,111 +47844,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48155,14 +48251,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48175,15 +48274,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48418,14 +48520,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48435,14 +48540,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49042,27 +49150,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49074,7 +49186,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49084,7 +49196,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49100,67 +49212,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49171,7 +49283,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49180,30 +49292,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49211,37 +49323,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49252,7 +49364,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49263,7 +49375,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49273,50 +49385,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49324,110 +49436,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49455,7 +49567,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49659,45 +49771,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -51948,32 +52069,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54254,228 +54378,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -54787,102 +54914,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -54898,311 +55028,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55277,7 +55407,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55290,19 +55420,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55313,7 +55443,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56161,12 +56291,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56176,26 +56315,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -56936,16 +57077,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63364,79 +63512,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63444,18 +63592,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63466,144 +63614,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63613,25 +63761,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63642,78 +63790,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63725,7 +63873,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -63734,31 +63882,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -63767,62 +63915,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63834,7 +63982,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63846,7 +63994,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -63858,71 +64006,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -63931,19 +64079,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -63953,7 +64101,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63964,75 +64112,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64041,53 +64189,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64098,98 +64246,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64197,7 +64345,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64208,69 +64356,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64285,20 +64433,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64309,7 +64457,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64320,23 +64468,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64344,118 +64492,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64466,59 +64614,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64526,25 +64674,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64552,7 +64700,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64562,30 +64710,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64594,19 +64742,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64614,11 +64762,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64627,47 +64775,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64676,11 +64824,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64689,11 +64837,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64704,15 +64852,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64721,95 +64869,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -64831,7 +64979,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64840,84 +64988,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -64933,24 +65081,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -64960,34 +65108,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -64998,7 +65146,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65008,208 +65156,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65218,672 +65366,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68179,8 +68327,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68709,52 +68857,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/nl.po b/doc/translations/nl.po
index 38ae621619..f9f0b8af5d 100644
--- a/doc/translations/nl.po
+++ b/doc/translations/nl.po
@@ -3782,20 +3782,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3804,11 +3812,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3822,15 +3830,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6392,13 +6400,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6424,14 +6434,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6569,26 +6581,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6615,14 +6631,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6631,14 +6650,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7239,7 +7261,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9981,7 +10003,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12689,9 +12714,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14516,7 +14540,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14616,84 +14640,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15009,7 +15040,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19633,117 +19668,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19914,7 +19953,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20040,7 +20080,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20218,18 +20259,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20239,119 +20282,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20359,17 +20413,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20699,30 +20753,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20732,22 +20788,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20755,68 +20811,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20824,22 +20880,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20848,26 +20904,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22510,53 +22566,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22564,58 +22628,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22626,19 +22690,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22646,17 +22710,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22664,24 +22728,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22689,21 +22753,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22711,65 +22775,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22779,43 +22843,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23347,20 +23411,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23369,125 +23440,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25163,11 +25234,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25624,7 +25695,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26350,7 +26421,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27133,16 +27204,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27151,11 +27216,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27163,17 +27228,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27192,7 +27257,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27206,30 +27271,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27237,63 +27283,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28118,7 +28164,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29600,171 +29646,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29773,7 +29823,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29782,26 +29832,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29810,108 +29860,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31596,20 +31646,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31622,52 +31675,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31689,100 +31742,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31790,80 +31843,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32146,59 +32199,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32206,34 +32259,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32386,70 +32439,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32566,11 +32623,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32618,53 +32675,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33488,7 +33545,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35375,22 +35432,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35401,7 +35461,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35418,7 +35478,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35429,27 +35489,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35457,7 +35517,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35468,30 +35528,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35501,7 +35561,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35512,7 +35572,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35526,7 +35586,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35535,14 +35595,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35555,7 +35615,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35563,32 +35623,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35596,13 +35656,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35612,7 +35672,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35621,11 +35681,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35634,138 +35694,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36950,34 +37010,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36985,96 +37045,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39690,20 +39750,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43538,6 +43598,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43545,7 +43617,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43555,13 +43627,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43575,14 +43647,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43591,7 +43663,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43599,7 +43671,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43615,20 +43687,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43636,75 +43708,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43714,7 +43786,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43724,27 +43796,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43752,81 +43824,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43834,109 +43906,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43947,91 +44019,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44040,13 +44112,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44056,7 +44128,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44064,19 +44136,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44090,45 +44162,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44137,7 +44209,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44148,7 +44220,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44164,14 +44236,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44179,49 +44251,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44230,7 +44302,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44238,7 +44310,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44246,7 +44318,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44256,7 +44328,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44265,7 +44337,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44274,7 +44346,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44284,7 +44356,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44292,7 +44364,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44302,7 +44374,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44312,7 +44384,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44320,7 +44392,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44329,7 +44401,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44337,7 +44409,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44349,477 +44421,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44827,92 +44899,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44922,33 +44994,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44961,7 +45033,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44973,7 +45045,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44985,7 +45057,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44998,7 +45070,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45006,28 +45078,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45037,25 +45109,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45068,7 +45140,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45080,7 +45152,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45092,7 +45164,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45105,13 +45177,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45119,11 +45191,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45137,7 +45209,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45146,7 +45218,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45162,7 +45234,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45172,7 +45244,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45182,7 +45254,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45193,7 +45265,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45203,7 +45275,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45211,7 +45283,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45222,7 +45294,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45237,7 +45309,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45246,13 +45318,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45261,7 +45333,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45271,7 +45343,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45283,7 +45355,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45293,24 +45365,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45319,7 +45391,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45327,7 +45399,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45336,7 +45408,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45346,7 +45418,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45354,31 +45426,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45386,7 +45458,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45396,14 +45468,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45411,31 +45483,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45443,7 +45515,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45453,7 +45525,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45462,7 +45534,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45471,20 +45543,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45493,7 +45565,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45501,7 +45573,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45510,7 +45582,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45520,20 +45592,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45542,13 +45614,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45558,46 +45630,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45607,7 +45679,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45619,7 +45691,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45627,7 +45699,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45635,7 +45707,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45644,7 +45716,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45658,7 +45730,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45668,7 +45740,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45677,7 +45749,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45687,54 +45759,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45745,61 +45817,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45808,26 +45891,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45838,20 +45921,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45863,52 +45946,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45916,7 +45999,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45925,10 +46008,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45936,10 +46020,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45947,10 +46032,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45958,10 +46044,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45969,10 +46056,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46793,23 +46881,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46818,75 +46910,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47766,121 +47858,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47888,11 +47984,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47903,7 +47999,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47911,7 +48007,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47923,14 +48019,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47939,17 +48035,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47957,36 +48053,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47994,7 +48090,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48003,111 +48099,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48410,14 +48506,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48430,15 +48529,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48675,14 +48777,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48692,14 +48797,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49308,27 +49416,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49340,7 +49452,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49350,7 +49462,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49366,67 +49478,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49437,7 +49549,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49446,30 +49558,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49477,37 +49589,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49518,7 +49630,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49529,7 +49641,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49539,50 +49651,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49590,110 +49702,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49721,7 +49833,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49928,45 +50040,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52232,32 +52353,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54541,228 +54665,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55074,102 +55201,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55185,311 +55315,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55564,7 +55694,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55577,19 +55707,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55600,7 +55730,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56452,12 +56582,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56467,26 +56606,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57230,16 +57371,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63675,79 +63823,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63755,18 +63903,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63777,144 +63925,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63924,25 +64072,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63953,78 +64101,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64036,7 +64184,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64045,31 +64193,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64078,62 +64226,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64145,7 +64293,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64157,7 +64305,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64169,71 +64317,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64242,19 +64390,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64264,7 +64412,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64275,75 +64423,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64352,53 +64500,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64409,98 +64557,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64508,7 +64656,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64519,69 +64667,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64596,20 +64744,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64620,7 +64768,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64631,23 +64779,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64655,118 +64803,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64777,59 +64925,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64837,25 +64985,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64863,7 +65011,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64873,30 +65021,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64905,19 +65053,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64925,11 +65073,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64938,47 +65086,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64987,11 +65135,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65000,11 +65148,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65015,15 +65163,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65032,95 +65180,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65142,7 +65290,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65151,84 +65299,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65244,24 +65392,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65271,34 +65419,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65309,7 +65457,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65319,208 +65467,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65529,672 +65677,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68498,8 +68646,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69028,52 +69176,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/pl.po b/doc/translations/pl.po
index 5bb95d7109..441c08c926 100644
--- a/doc/translations/pl.po
+++ b/doc/translations/pl.po
@@ -4176,20 +4176,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4198,11 +4206,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4216,15 +4224,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6794,13 +6802,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6826,14 +6836,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6971,26 +6983,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -7017,14 +7033,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -7033,14 +7052,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7641,7 +7663,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10384,7 +10406,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -13100,9 +13125,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14928,7 +14952,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -15028,84 +15052,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15421,7 +15452,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -20052,117 +20087,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20333,7 +20372,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20459,7 +20499,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20637,18 +20678,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20658,119 +20701,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
-msgstr "Zwraca instancjÄ™ edytora [ScriptEditor]."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20778,17 +20832,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -21118,30 +21172,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -21151,22 +21207,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -21174,68 +21230,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -21243,22 +21299,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21267,26 +21323,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22932,53 +22988,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22986,58 +23050,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -23048,19 +23112,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -23068,17 +23132,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -23086,24 +23150,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -23111,21 +23175,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -23133,65 +23197,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -23201,43 +23265,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23770,20 +23834,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23792,125 +23863,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25590,11 +25661,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -26060,7 +26131,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26786,7 +26857,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27569,16 +27640,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27587,11 +27652,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27599,17 +27664,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27628,7 +27693,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27642,30 +27707,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27673,63 +27719,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28556,7 +28602,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -30042,171 +30088,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -30215,7 +30265,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -30224,26 +30274,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -30252,108 +30302,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -32046,20 +32096,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -32072,52 +32125,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -32139,100 +32192,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -32240,80 +32293,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32596,59 +32649,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32656,34 +32709,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32836,70 +32889,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -33016,11 +33073,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -33068,53 +33125,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33939,7 +33996,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35839,22 +35896,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35865,7 +35925,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35882,7 +35942,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35893,27 +35953,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35921,7 +35981,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35932,30 +35992,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35965,7 +36025,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35976,7 +36036,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35990,7 +36050,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35999,14 +36059,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -36019,7 +36079,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -36027,32 +36087,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -36060,13 +36120,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -36076,7 +36136,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -36085,11 +36145,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -36098,138 +36158,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37414,34 +37474,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37449,96 +37509,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -40191,20 +40251,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -44046,6 +44106,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -44053,7 +44125,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -44063,13 +44135,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -44083,14 +44155,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -44099,7 +44171,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -44107,7 +44179,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -44123,20 +44195,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -44144,75 +44216,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44222,7 +44294,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44232,27 +44304,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -44260,81 +44332,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44342,109 +44414,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44455,91 +44527,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44548,13 +44620,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44564,7 +44636,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44572,19 +44644,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44598,45 +44670,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44645,7 +44717,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44656,7 +44728,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44672,14 +44744,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44687,49 +44759,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44738,7 +44810,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44746,7 +44818,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44754,7 +44826,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44764,7 +44836,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44773,7 +44845,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44782,7 +44854,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44792,7 +44864,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44800,7 +44872,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44810,7 +44882,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44820,7 +44892,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44828,7 +44900,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44837,7 +44909,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44845,7 +44917,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44857,477 +44929,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45335,92 +45407,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45430,33 +45502,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45469,7 +45541,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45481,7 +45553,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45493,7 +45565,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45506,7 +45578,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45514,28 +45586,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45545,25 +45617,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45576,7 +45648,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45588,7 +45660,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45600,7 +45672,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45613,13 +45685,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45627,11 +45699,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45645,7 +45717,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45654,7 +45726,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45670,7 +45742,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45680,7 +45752,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45690,7 +45762,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45701,7 +45773,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45711,7 +45783,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45719,7 +45791,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45730,7 +45802,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45745,7 +45817,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45754,13 +45826,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45769,7 +45841,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45779,7 +45851,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45791,7 +45863,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45801,24 +45873,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45827,7 +45899,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45835,7 +45907,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45844,7 +45916,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45854,7 +45926,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45862,31 +45934,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45894,7 +45966,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45904,14 +45976,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45919,31 +45991,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45951,7 +46023,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45961,7 +46033,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45970,7 +46042,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45979,20 +46051,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -46001,7 +46073,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -46009,7 +46081,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -46018,7 +46090,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -46028,20 +46100,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -46050,13 +46122,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -46066,46 +46138,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -46115,7 +46187,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -46127,7 +46199,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -46135,7 +46207,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -46143,7 +46215,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -46152,7 +46224,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -46166,7 +46238,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -46176,7 +46248,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -46185,7 +46257,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -46195,54 +46267,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -46253,61 +46325,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -46316,26 +46399,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46346,20 +46429,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46371,52 +46454,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46424,7 +46507,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46433,10 +46516,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46444,10 +46528,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46455,10 +46540,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46466,10 +46552,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46477,10 +46564,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -47309,23 +47397,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -47334,75 +47426,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -48281,121 +48373,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48403,11 +48499,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48418,7 +48514,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48426,7 +48522,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48438,14 +48534,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48454,17 +48550,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48472,36 +48568,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48509,7 +48605,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48518,111 +48614,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48925,14 +49021,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48945,15 +49044,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49190,14 +49292,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -49207,14 +49312,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49823,27 +49931,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49855,7 +49967,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49865,7 +49977,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49881,39 +49993,39 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
@@ -49922,29 +50034,29 @@ msgstr ""
"Zwraca [code]true[/code] jeśli postać jest na suficie. Aktualizację się w "
"skrypcie ,podczas wywołania [method move_and_slide]."
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49955,7 +50067,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49964,30 +50076,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49995,37 +50107,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -50036,7 +50148,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -50047,7 +50159,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -50057,53 +50169,53 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
"wyłączone."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -50111,110 +50223,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -50242,7 +50354,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50449,45 +50561,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52757,32 +52878,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -55066,228 +55190,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55601,102 +55728,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55712,161 +55842,161 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
@@ -55874,151 +56004,151 @@ msgstr ""
"Jeśli [code]true[/code], skróty klawiaturowe dla menu kontekstowego są "
"włączone, nawet jeśli menu kontekstowe jest wyłączone."
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -56093,7 +56223,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -56106,19 +56236,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -56129,7 +56259,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56985,12 +57115,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -57000,26 +57139,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57763,16 +57904,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -64230,79 +64378,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -64310,18 +64458,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -64332,145 +64480,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Zwraca sinus parametru."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64480,25 +64628,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64509,79 +64657,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Zwraca arcus sinus parametru."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64593,7 +64741,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64602,31 +64750,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64635,62 +64783,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64702,7 +64850,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64714,7 +64862,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64726,71 +64874,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64799,19 +64947,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64821,7 +64969,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64832,77 +64980,77 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Zwraca sinus parametru."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Zwraca przeciwieństwo parametru."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64911,53 +65059,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64968,100 +65116,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Zwraca tangens parametru."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Zwraca przeciwieństwo parametru."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -65069,7 +65217,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -65080,69 +65228,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -65157,20 +65305,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65181,7 +65329,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65192,23 +65340,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -65216,118 +65364,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65338,59 +65486,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65398,25 +65546,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65424,7 +65572,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65434,30 +65582,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65466,19 +65614,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65486,11 +65634,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65499,47 +65647,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65548,11 +65696,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65561,11 +65709,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65576,15 +65724,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65593,103 +65741,103 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Zwraca sinus parametru."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Zwraca sinus parametru."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Zwraca resztę z dwóch wektorów."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Zwraca tangens parametru."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Zwraca tangens parametru."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Zwraca resztę z dwóch wektorów."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Zwraca odwrotność pierwiastka kwadratowego z parametru."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
#, fuzzy
msgid "Returns the texture's width."
msgstr "Zwraca instancjÄ™ edytora [ScriptEditor]."
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65711,7 +65859,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65720,90 +65868,90 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
"wyłączone."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
"wyłączone."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65819,24 +65967,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65846,34 +65994,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65884,7 +66032,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65894,211 +66042,211 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
"wyłączone."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -66107,672 +66255,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -69078,8 +69226,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69608,56 +69756,59 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Zwraca cosinus parametru."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
"wyłączone."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69930,6 +70081,13 @@ msgstr ""
"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
"wyłączone."
+#~ msgid "Returns the editor's [ScriptEditor] instance."
+#~ msgstr "Zwraca instancjÄ™ edytora [ScriptEditor]."
+
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Zwraca cosinus parametru."
+
#~ msgid ""
#~ "Easing function, based on exponent. The curve values are: 0 is constant, "
#~ "1 is linear, 0 to 1 is ease-in, 1+ is ease out. Negative values are in-"
diff --git a/doc/translations/pt_BR.po b/doc/translations/pt_BR.po
index 53ef0b059e..950979c803 100644
--- a/doc/translations/pt_BR.po
+++ b/doc/translations/pt_BR.po
@@ -28,8 +28,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2021-09-03 13:35+0000\n"
-"Last-Translator: William Weber Berrutti <wwberrutti@protonmail.ch>\n"
+"PO-Revision-Date: 2021-10-08 03:04+0000\n"
+"Last-Translator: Douglas Leão <djlsplays@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot-class-reference/pt_BR/>\n"
"Language: pt_BR\n"
@@ -37,7 +37,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.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: doc/tools/makerst.py
msgid "Description"
@@ -134,7 +134,6 @@ msgstr ""
"[Color]."
#: modules/gdscript/doc_classes/@GDScript.xml:45
-#, fuzzy
msgid ""
"Returns the absolute value of parameter [code]s[/code] (i.e. positive "
"value).\n"
@@ -145,12 +144,10 @@ msgstr ""
"Retorna o valor absoluto do parâmetro [code]s[/code] (isto é, um valor "
"positivo).\n"
"[codeblock]\n"
-"# a é 1\n"
-"a = abs(-1)\n"
+"a = abs(-1) # a é 1\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:55
-#, 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 "
@@ -162,14 +159,15 @@ msgid ""
"[/codeblock]"
msgstr ""
"Retorna o arco cosseno de [code]s[/code] em radianos. Use para pegar o "
-"ângulo do cosseno [code]s[/code].\n"
+"ângulo do cosseno [code]s[/code]. [code]s[/code] deve estar entre "
+"[code]-1.0[/code] e [code]-1.0[/code] (inclusivo), caso contrário, [method "
+"acos] retornará [constant NAN].\n"
"[codeblock]\n"
-"# c is 0.523599 or 30 degrees if converted with rad2deg(s)\n"
+"# c é 0.523599 ou 30 graus se convertido com rad2deg(s)\n"
"c = acos(0.866025)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:66
-#, 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 "
@@ -180,10 +178,12 @@ msgid ""
"s = asin(0.5)\n"
"[/codeblock]"
msgstr ""
-"Retorna o arc seno de [code]s[/code] em radianos. Use para calcular o ângulo "
-"do seno de [code]s[/code].\n"
+"Retorna o arco seno de [code]s[/code] em radianos. Use para calcular o "
+"ângulo do seno de [code]s[/code]. [code]s[/code] deve estar entre "
+"[code]-1.0[/code] e [code]1.0[/code] (inclusivo), caso contrário, [method "
+"asin] retornará [constant NAN].\n"
"[codeblock]\n"
-"# s is 0.523599 or 30 degrees if converted with rad2deg(s)\n"
+"# s é 0.523599 ou 30 graus se convertido com rad2deg(s)\n"
"s = asin(0.5)\n"
"[/codeblock]"
@@ -4513,20 +4513,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4535,11 +4543,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4553,15 +4561,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -7143,13 +7151,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -7175,14 +7185,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -7318,26 +7330,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -7364,14 +7380,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -7380,14 +7399,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7988,7 +8010,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10728,7 +10750,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -13460,9 +13485,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -15325,7 +15349,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -15425,84 +15449,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15818,7 +15849,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -20447,117 +20482,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20728,7 +20767,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20854,7 +20894,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -21032,18 +21073,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -21053,119 +21096,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -21173,17 +21227,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -21513,30 +21567,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -21546,22 +21602,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -21569,68 +21625,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -21638,22 +21694,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21662,26 +21718,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -23327,53 +23383,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -23381,58 +23445,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -23443,19 +23507,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -23463,17 +23527,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -23481,24 +23545,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -23506,21 +23570,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -23528,65 +23592,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -23596,43 +23660,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -24165,20 +24229,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -24187,125 +24258,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25985,11 +26056,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -26461,7 +26532,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -27187,7 +27258,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27970,16 +28041,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27988,11 +28053,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -28000,17 +28065,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -28029,7 +28094,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -28043,30 +28108,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -28074,63 +28120,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28957,7 +29003,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
#, fuzzy
msgid "Resizes the texture to the specified dimensions."
msgstr "Retorna o valor padrão da propriedade especificada."
@@ -30450,171 +30496,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -30623,7 +30673,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -30632,26 +30682,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -30660,108 +30710,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -32449,20 +32499,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -32475,52 +32528,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -32542,100 +32595,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -32643,80 +32696,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -33000,59 +33053,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -33060,34 +33113,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -33240,70 +33293,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -33420,11 +33477,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -33472,53 +33529,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -34343,7 +34400,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -36240,22 +36297,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -36266,7 +36326,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -36283,7 +36343,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -36294,27 +36354,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -36322,7 +36382,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -36333,30 +36393,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -36366,7 +36426,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -36377,7 +36437,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -36391,7 +36451,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -36400,14 +36460,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -36420,7 +36480,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -36428,32 +36488,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -36461,13 +36521,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -36477,7 +36537,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -36486,11 +36546,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -36499,138 +36559,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37814,34 +37874,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37849,96 +37909,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -40591,20 +40651,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -44448,6 +44508,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -44455,7 +44527,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -44465,13 +44537,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -44485,14 +44557,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -44501,7 +44573,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -44509,7 +44581,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -44525,20 +44597,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -44546,75 +44618,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44624,7 +44696,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44634,27 +44706,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -44662,81 +44734,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44744,109 +44816,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44857,91 +44929,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44950,13 +45022,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44966,7 +45038,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44974,19 +45046,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -45000,45 +45072,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -45047,7 +45119,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -45058,7 +45130,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -45074,14 +45146,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -45089,49 +45161,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -45140,7 +45212,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45148,7 +45220,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45156,7 +45228,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -45166,7 +45238,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -45175,7 +45247,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -45184,7 +45256,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -45194,7 +45266,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45202,7 +45274,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -45212,7 +45284,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -45222,7 +45294,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45230,7 +45302,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -45239,7 +45311,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45247,7 +45319,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -45259,477 +45331,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45737,92 +45809,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45832,33 +45904,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45871,7 +45943,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45883,7 +45955,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45895,7 +45967,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45908,7 +45980,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45916,28 +45988,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45947,25 +46019,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45978,7 +46050,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45990,7 +46062,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -46002,7 +46074,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -46015,13 +46087,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -46029,11 +46101,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -46047,7 +46119,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -46056,7 +46128,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -46072,7 +46144,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -46082,7 +46154,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -46092,7 +46164,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -46103,7 +46175,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -46113,7 +46185,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -46121,7 +46193,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -46132,7 +46204,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -46147,7 +46219,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -46156,13 +46228,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -46171,7 +46243,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -46181,7 +46253,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -46193,7 +46265,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -46203,24 +46275,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -46229,7 +46301,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -46237,7 +46309,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -46246,7 +46318,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -46256,7 +46328,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -46264,31 +46336,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -46296,7 +46368,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -46306,14 +46378,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -46321,31 +46393,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -46353,7 +46425,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -46363,7 +46435,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -46372,7 +46444,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -46381,20 +46453,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -46403,7 +46475,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -46411,7 +46483,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -46420,7 +46492,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -46430,20 +46502,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -46452,13 +46524,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -46468,46 +46540,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -46517,7 +46589,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -46529,7 +46601,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -46537,7 +46609,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -46545,7 +46617,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -46554,7 +46626,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -46568,7 +46640,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -46578,7 +46650,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -46587,7 +46659,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -46597,54 +46669,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -46655,61 +46727,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -46718,26 +46801,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46748,20 +46831,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46773,52 +46856,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46826,7 +46909,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46835,10 +46918,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46846,10 +46930,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46857,10 +46942,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46868,10 +46954,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46879,10 +46966,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -47709,23 +47797,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/pt_BR/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -47734,75 +47826,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -48680,121 +48772,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48802,11 +48898,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48817,7 +48913,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48825,7 +48921,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48837,14 +48933,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48853,17 +48949,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48871,36 +48967,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48908,7 +49004,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48917,111 +49013,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -49324,14 +49420,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49344,15 +49443,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49587,14 +49689,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -49604,14 +49709,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -50221,27 +50329,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -50253,7 +50365,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -50263,7 +50375,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -50279,67 +50391,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr "Retorna o número de nós nesta [SceneTree]."
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -50350,7 +50462,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -50359,30 +50471,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -50390,37 +50502,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -50431,7 +50543,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -50442,7 +50554,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -50452,53 +50564,53 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
"Se [code]true[/code], os nós filhos são organizados, do contrário, a "
"organização é desabilitada."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -50506,110 +50618,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -50637,7 +50749,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50844,47 +50956,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-"Retorna a barra de rolagem horizontal [HScrollBar] deste [ScrollContainer]."
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-"Retorna a barra de rolagem vertical [VScrollBar] deste [ScrollContainer]."
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -53175,32 +53294,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -55484,229 +55606,232 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -56020,105 +56145,108 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -56134,311 +56262,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -56514,7 +56642,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -56527,19 +56655,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -56550,7 +56678,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -57410,12 +57538,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
+msgstr ""
+
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -57425,26 +57562,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -58187,16 +58326,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -64654,79 +64800,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -64734,18 +64880,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -64756,145 +64902,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Retorna o valor padrão da propriedade especificada."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64904,25 +65050,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64933,79 +65079,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Retorna o arco-seno do parâmetro."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65017,7 +65163,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -65026,31 +65172,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -65059,62 +65205,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -65126,7 +65272,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -65138,7 +65284,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -65150,71 +65296,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -65223,19 +65369,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -65245,7 +65391,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65256,78 +65402,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Retorna o seno do parâmetro."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Retorna o RID da tela usada por essa camada."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65336,54 +65482,54 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
#, fuzzy
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr "Retorna o valor padrão da propriedade especificada."
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -65394,100 +65540,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Retorna a tangente do parâmetro."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Retorna o valor oposto do parâmetro."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -65495,7 +65641,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -65506,69 +65652,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -65583,20 +65729,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65607,7 +65753,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65618,23 +65764,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -65642,118 +65788,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65764,59 +65910,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65824,25 +65970,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65850,7 +65996,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65860,30 +66006,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65892,19 +66038,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65912,11 +66058,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65925,47 +66071,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65974,11 +66120,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65987,11 +66133,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -66002,15 +66148,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -66019,102 +66165,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Retorna o seno do parâmetro."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Retorna o seno do parâmetro."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Retorna o resto dos dois vetores."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Retorna a tangente do parâmetro."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Retorna a tangente do parâmetro."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Retorna o resto dos dois vetores."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Retorna o tipo do nó em at [code]idx[/code]."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -66136,7 +66282,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -66145,90 +66291,90 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
"Se [code]true[/code], os nós filhos são organizados, do contrário, a "
"organização é desabilitada."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
"Se [code]true[/code], os nós filhos são organizados, do contrário, a "
"organização é desabilitada."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -66244,24 +66390,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -66271,34 +66417,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -66309,7 +66455,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -66319,211 +66465,211 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
"Se [code]true[/code], os nós filhos são organizados, do contrário, a "
"organização é desabilitada."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -66532,672 +66678,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -69503,8 +69649,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -70033,55 +70179,58 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Retorna o cosseno do parâmetro."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
#, fuzzy
msgid "The icon for the close button."
msgstr "Botão esquerdo do mouse."
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -70355,6 +70504,21 @@ msgstr ""
"organização é desabilitada."
#~ msgid ""
+#~ "Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+#~ msgstr ""
+#~ "Retorna a barra de rolagem horizontal [HScrollBar] deste "
+#~ "[ScrollContainer]."
+
+#~ msgid ""
+#~ "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#~ msgstr ""
+#~ "Retorna a barra de rolagem vertical [VScrollBar] deste [ScrollContainer]."
+
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Retorna o cosseno do parâmetro."
+
+#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
#~ "# Prints 1 then -1\n"
diff --git a/doc/translations/ro.po b/doc/translations/ro.po
index 34984fd0ac..e07d09f6e0 100644
--- a/doc/translations/ro.po
+++ b/doc/translations/ro.po
@@ -3734,20 +3734,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3756,11 +3764,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3774,15 +3782,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6344,13 +6352,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6376,14 +6386,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6521,26 +6533,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6567,14 +6583,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6583,14 +6602,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7191,7 +7213,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9933,7 +9955,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12641,9 +12666,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14468,7 +14492,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14568,84 +14592,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14961,7 +14992,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19585,117 +19620,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19866,7 +19905,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19992,7 +20032,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20170,18 +20211,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20191,119 +20234,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20311,17 +20365,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20651,30 +20705,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20684,22 +20740,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20707,68 +20763,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20776,22 +20832,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20800,26 +20856,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22462,53 +22518,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22516,58 +22580,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22578,19 +22642,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22598,17 +22662,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22616,24 +22680,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22641,21 +22705,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22663,65 +22727,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22731,43 +22795,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23299,20 +23363,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23321,125 +23392,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25115,11 +25186,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25576,7 +25647,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26302,7 +26373,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27085,16 +27156,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27103,11 +27168,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27115,17 +27180,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27144,7 +27209,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27158,30 +27223,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27189,63 +27235,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28070,7 +28116,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29552,171 +29598,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29725,7 +29775,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29734,26 +29784,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29762,108 +29812,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31548,20 +31598,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31574,52 +31627,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31641,100 +31694,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31742,80 +31795,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32098,59 +32151,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32158,34 +32211,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32338,70 +32391,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32518,11 +32575,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32570,53 +32627,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33440,7 +33497,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35327,22 +35384,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35353,7 +35413,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35370,7 +35430,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35381,27 +35441,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35409,7 +35469,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35420,30 +35480,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35453,7 +35513,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35464,7 +35524,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35478,7 +35538,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35487,14 +35547,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35507,7 +35567,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35515,32 +35575,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35548,13 +35608,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35564,7 +35624,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35573,11 +35633,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35586,138 +35646,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36902,34 +36962,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36937,96 +36997,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39642,20 +39702,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43490,6 +43550,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43497,7 +43569,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43507,13 +43579,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43527,14 +43599,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43543,7 +43615,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43551,7 +43623,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43567,20 +43639,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43588,75 +43660,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43666,7 +43738,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43676,27 +43748,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43704,81 +43776,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43786,109 +43858,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43899,91 +43971,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -43992,13 +44064,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44008,7 +44080,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44016,19 +44088,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44042,45 +44114,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44089,7 +44161,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44100,7 +44172,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44116,14 +44188,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44131,49 +44203,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44182,7 +44254,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44190,7 +44262,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44198,7 +44270,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44208,7 +44280,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44217,7 +44289,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44226,7 +44298,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44236,7 +44308,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44244,7 +44316,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44254,7 +44326,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44264,7 +44336,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44272,7 +44344,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44281,7 +44353,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44289,7 +44361,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44301,477 +44373,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44779,92 +44851,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44874,33 +44946,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44913,7 +44985,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44925,7 +44997,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44937,7 +45009,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44950,7 +45022,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44958,28 +45030,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44989,25 +45061,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45020,7 +45092,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45032,7 +45104,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45044,7 +45116,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45057,13 +45129,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45071,11 +45143,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45089,7 +45161,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45098,7 +45170,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45114,7 +45186,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45124,7 +45196,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45134,7 +45206,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45145,7 +45217,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45155,7 +45227,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45163,7 +45235,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45174,7 +45246,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45189,7 +45261,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45198,13 +45270,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45213,7 +45285,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45223,7 +45295,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45235,7 +45307,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45245,24 +45317,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45271,7 +45343,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45279,7 +45351,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45288,7 +45360,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45298,7 +45370,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45306,31 +45378,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45338,7 +45410,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45348,14 +45420,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45363,31 +45435,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45395,7 +45467,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45405,7 +45477,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45414,7 +45486,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45423,20 +45495,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45445,7 +45517,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45453,7 +45525,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45462,7 +45534,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45472,20 +45544,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45494,13 +45566,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45510,46 +45582,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45559,7 +45631,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45571,7 +45643,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45579,7 +45651,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45587,7 +45659,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45596,7 +45668,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45610,7 +45682,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45620,7 +45692,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45629,7 +45701,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45639,54 +45711,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45697,61 +45769,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45760,26 +45843,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45790,20 +45873,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45815,52 +45898,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45868,7 +45951,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45877,10 +45960,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45888,10 +45972,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45899,10 +45984,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45910,10 +45996,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45921,10 +46008,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46745,23 +46833,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46770,75 +46862,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47717,121 +47809,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47839,11 +47935,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47854,7 +47950,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47862,7 +47958,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47874,14 +47970,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47890,17 +47986,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47908,36 +48004,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47945,7 +48041,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47954,111 +48050,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48361,14 +48457,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48381,15 +48480,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48626,14 +48728,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48643,14 +48748,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49259,27 +49367,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49291,7 +49403,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49301,7 +49413,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49317,67 +49429,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49388,7 +49500,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49397,30 +49509,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49428,37 +49540,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49469,7 +49581,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49480,7 +49592,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49490,50 +49602,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49541,110 +49653,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49672,7 +49784,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49879,45 +49991,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52183,32 +52304,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54492,228 +54616,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55025,102 +55152,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55136,311 +55266,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55515,7 +55645,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55528,19 +55658,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55551,7 +55681,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56403,12 +56533,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56418,26 +56557,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57181,16 +57322,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63626,79 +63774,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63706,18 +63854,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63728,144 +63876,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63875,25 +64023,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63904,78 +64052,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63987,7 +64135,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -63996,31 +64144,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64029,62 +64177,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64096,7 +64244,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64108,7 +64256,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64120,71 +64268,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64193,19 +64341,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64215,7 +64363,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64226,75 +64374,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64303,53 +64451,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64360,98 +64508,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64459,7 +64607,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64470,69 +64618,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64547,20 +64695,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64571,7 +64719,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64582,23 +64730,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64606,118 +64754,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64728,59 +64876,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64788,25 +64936,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64814,7 +64962,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64824,30 +64972,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64856,19 +65004,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64876,11 +65024,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64889,47 +65037,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64938,11 +65086,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64951,11 +65099,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64966,15 +65114,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64983,95 +65131,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65093,7 +65241,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65102,84 +65250,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65195,24 +65343,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65222,34 +65370,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65260,7 +65408,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65270,208 +65418,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65480,672 +65628,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68449,8 +68597,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68979,52 +69127,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/ru.po b/doc/translations/ru.po
index 93a8fb3f1b..97c4d45907 100644
--- a/doc/translations/ru.po
+++ b/doc/translations/ru.po
@@ -23,12 +23,13 @@
# Poq Xert <poqxert@poqxert.ru>, 2021.
# Ð§Ñ‚Ð°Ð±Ñ <chtabs2k19@gmail.com>, 2021.
# Nikita Blizniuk <BliznyukNM@gmail.com>, 2021.
+# Сергей Волков <zerosar4@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2021-10-01 03:16+0000\n"
-"Last-Translator: Nikita Blizniuk <BliznyukNM@gmail.com>\n"
+"PO-Revision-Date: 2021-10-15 09:31+0000\n"
+"Last-Translator: Сергей Волков <zerosar4@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/ru/>\n"
"Language: ru\n"
@@ -145,8 +146,7 @@ msgstr ""
"Возвращает абÑолютное значение параметра [code]s[/code] (Ñ‚.е. положительное "
"значение).\n"
"[codeblock]\n"
-"# a равно 1\n"
-"a = abs(-1)\n"
+"a = abs(-1) # a is 1\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:55
@@ -162,10 +162,11 @@ msgid ""
"[/codeblock]"
msgstr ""
"Возвращает арккоÑÐ¸Ð½ÑƒÑ Ñ‡Ð¸Ñла [code]s[/code] в радианах. ИÑпользуетÑÑ Ð´Ð»Ñ "
-"Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÑƒÐ³Ð»Ð°, коÑÐ¸Ð½ÑƒÑ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ равен [code]s[/code].\n"
+"Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÑƒÐ³Ð»Ð°, коÑÐ¸Ð½ÑƒÑ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ равен [code]s[/code]. \n"
+"ЧиÑло [code]s[/code] должно быть между [code]-1.0[/code] и [code]1.0[/code] "
+"(включительно), в противном Ñлучае [method acos] вернет [constant NAN].\n"
"[codeblock]\n"
-"# c равно 0.523599, или 30 градуÑов, еÑли конвертировать Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ "
-"rad2deg(c)\n"
+"# c is 0.523599 or 30 degrees if converted with rad2deg(s)\n"
"c = acos(0.866025)\n"
"[/codeblock]"
@@ -4738,14 +4739,22 @@ msgstr ""
"диалоговое окно и возвращает Ñозданную кнопку."
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
-msgstr "Возвращает метку (Label), иÑпользуемую Ð´Ð»Ñ Ð²Ñтроенного текÑта."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
-msgstr "Возвращает ÑкземплÑÑ€ кнопки ([Button]) OK."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
@@ -4753,7 +4762,7 @@ msgstr ""
"РегиÑтрирует [LineEdit] в диалоге. При нажатии клавиши ввода диалог будет "
"принÑÑ‚."
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4762,11 +4771,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr "УÑтанавливает автоматичеÑкий Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ñ‚ÐµÐºÑта в диалоге."
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4791,15 +4800,15 @@ msgstr ""
"еÑли ввод ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым. Как таковое, Ñто ÑвойÑтво не может быть "
"иÑпользовано в [FileDialog] Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð° при нажатии OK."
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr "ТекÑÑ‚, отображаемый в диалоговом окне."
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr "ИзлучаетÑÑ Ð¿Ñ€Ð¸ принÑтии диалога, Ñ‚.е. когда нажата кнопка OK."
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
"ИзлучаетÑÑ Ð¿Ñ€Ð¸ нажатии пользовательÑкой кнопки. Смотрите [method add_button]."
@@ -7555,13 +7564,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -7587,14 +7598,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -7732,26 +7745,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -7778,14 +7795,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -7794,14 +7814,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -8534,7 +8557,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -11286,7 +11309,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -14011,9 +14037,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -15846,7 +15871,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -15946,84 +15971,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -16406,7 +16438,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -21071,117 +21107,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -21352,7 +21392,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -21478,7 +21519,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -21656,18 +21698,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -21677,78 +21721,86 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
#, fuzzy
msgid "Returns the editor's [EditorSettings] instance."
msgstr "Возвращает длину вектора."
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-#, fuzzy
-msgid "Returns the editor's [FileSystemDock] instance."
-msgstr "Возвращает длину вектора."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:74
-#, fuzzy
-msgid "Returns the editor's [EditorInspector] instance."
-msgstr "Возвращает длину вектора."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
#, fuzzy
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr "Возвращает длину вектора."
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-#, fuzzy
-msgid "Returns the editor's [ScriptEditor] instance."
-msgstr "Возвращает длину вектора."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
#, fuzzy
msgid "Returns the editor's [EditorSelection] instance."
msgstr "Возвращает длину вектора."
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
#, fuzzy
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
@@ -21757,48 +21809,48 @@ msgstr ""
"Возвращает [code]true[/code] еÑли [code]s[/code] равно нулю или почти равно "
"нулю."
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -21806,17 +21858,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -22146,30 +22198,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -22179,22 +22233,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -22202,68 +22256,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -22271,22 +22325,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -22295,26 +22349,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -23967,53 +24021,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -24021,58 +24083,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -24083,19 +24145,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -24103,17 +24165,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -24121,24 +24183,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -24146,21 +24208,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -24168,65 +24230,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -24236,43 +24298,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -24806,20 +24868,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -24828,125 +24897,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -26628,11 +26697,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -27098,7 +27167,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -27826,7 +27895,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -28609,16 +28678,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -28627,11 +28690,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -28639,17 +28702,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -28668,7 +28731,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -28682,30 +28745,12 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
+#: doc/classes/HTTPRequest.xml:127
+#, fuzzy
+msgid "Maximum allowed size for response bodies."
+msgstr "МакÑимальное значение Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° перечиÑлениÑ."
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -28713,63 +28758,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -29596,7 +29641,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -31080,171 +31125,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -31253,7 +31302,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -31262,26 +31311,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -31290,108 +31339,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -33104,20 +33153,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -33130,52 +33182,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -33197,100 +33249,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -33298,80 +33350,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -33656,59 +33708,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -33716,34 +33768,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -33896,70 +33948,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -34077,11 +34133,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr "УниверÑальный тип маÑÑива."
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -34129,53 +34185,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -35000,7 +35056,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -36903,22 +36959,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -36929,7 +36988,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -36946,7 +37005,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -36957,27 +37016,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -36985,7 +37044,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -36996,30 +37055,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -37029,7 +37088,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -37040,7 +37099,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -37054,7 +37113,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -37063,14 +37122,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -37083,7 +37142,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -37091,32 +37150,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -37124,13 +37183,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -37140,7 +37199,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -37149,11 +37208,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -37162,138 +37221,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -38483,34 +38542,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -38518,96 +38577,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -41267,20 +41326,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -45149,6 +45208,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -45156,7 +45227,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -45166,13 +45237,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -45186,14 +45257,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -45202,7 +45273,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -45210,7 +45281,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -45226,20 +45297,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -45247,75 +45318,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -45325,7 +45396,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -45335,27 +45406,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -45363,81 +45434,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -45445,80 +45516,80 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr "ЕÑли [code]true[/code], текÑтура будет центрирована."
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
@@ -45526,32 +45597,32 @@ msgstr ""
"ЕÑли [code]true[/code], Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ [member animation] воÑпроизводитÑÑ Ð² данный "
"момент."
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -45562,91 +45633,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -45655,13 +45726,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -45671,7 +45742,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -45679,19 +45750,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -45705,45 +45776,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -45752,7 +45823,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -45763,7 +45834,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -45779,14 +45850,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -45794,49 +45865,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -45845,7 +45916,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45853,7 +45924,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45861,7 +45932,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -45871,7 +45942,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -45880,7 +45951,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -45889,7 +45960,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -45899,7 +45970,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45907,7 +45978,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -45917,7 +45988,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -45927,7 +45998,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45935,7 +46006,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -45944,7 +46015,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45952,7 +46023,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -45964,477 +46035,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -46442,92 +46513,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -46537,33 +46608,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -46576,7 +46647,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -46588,7 +46659,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -46600,7 +46671,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -46613,7 +46684,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -46621,28 +46692,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -46652,25 +46723,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -46683,7 +46754,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -46695,7 +46766,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -46707,7 +46778,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -46720,13 +46791,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -46734,11 +46805,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -46752,7 +46823,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -46761,7 +46832,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -46777,7 +46848,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -46787,7 +46858,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -46797,7 +46868,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -46808,7 +46879,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -46818,7 +46889,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -46826,7 +46897,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -46837,7 +46908,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -46852,7 +46923,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -46861,13 +46932,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -46876,7 +46947,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -46886,7 +46957,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -46898,7 +46969,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -46908,24 +46979,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -46934,7 +47005,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -46942,7 +47013,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -46951,7 +47022,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -46961,7 +47032,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -46969,31 +47040,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -47001,7 +47072,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -47011,14 +47082,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -47026,31 +47097,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -47058,7 +47129,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -47068,7 +47139,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -47077,7 +47148,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -47086,20 +47157,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -47108,7 +47179,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -47116,7 +47187,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -47125,7 +47196,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -47135,20 +47206,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -47157,13 +47228,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -47173,46 +47244,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -47222,7 +47293,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -47234,7 +47305,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -47242,7 +47313,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -47250,7 +47321,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -47259,7 +47330,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -47273,7 +47344,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -47283,7 +47354,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -47292,7 +47363,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -47302,54 +47373,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -47360,61 +47431,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -47423,26 +47505,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -47453,20 +47535,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -47478,52 +47560,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -47531,7 +47613,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -47540,10 +47622,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -47551,10 +47634,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -47562,10 +47646,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -47573,10 +47658,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -47584,10 +47670,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -48460,23 +48547,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -48485,75 +48576,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -49436,121 +49527,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -49558,11 +49653,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -49573,7 +49668,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -49581,7 +49676,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -49593,14 +49688,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -49609,17 +49704,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -49627,36 +49722,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -49664,7 +49759,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -49673,111 +49768,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -50080,14 +50175,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -50100,15 +50198,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -50345,14 +50446,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -50362,14 +50466,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -50978,27 +51085,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -51010,7 +51121,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -51020,7 +51131,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -51036,68 +51147,68 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr "Возвращает [code]true[/code] еÑли вектор нормализован."
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -51108,7 +51219,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -51117,30 +51228,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -51148,37 +51259,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -51189,7 +51300,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -51200,7 +51311,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -51210,51 +51321,51 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr "ЕÑли [code]true[/code], текÑтура будет центрирована."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -51262,110 +51373,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -51393,7 +51504,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -51600,45 +51711,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -53915,32 +54035,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -56243,34 +56366,37 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr "Возвращает [code]true[/code] еÑли маÑÑив Ñодержит [code]value[/code]."
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
#, fuzzy
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
@@ -56279,196 +56405,196 @@ msgstr ""
"Возвращает поÑледний Ñлемент маÑÑива, или[code]null[/code] еÑли маÑÑив "
"пуÑтой."
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -56782,61 +56908,64 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
@@ -56844,14 +56973,14 @@ msgstr ""
"Возвращает [code]true[/code] еÑли [code]a[/code] и [code]b[/code] "
"приблизительно равны друг другу."
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr "Возвращает [code]true[/code] еÑли маÑÑив Ñодержит [code]value[/code]."
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
#, fuzzy
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
@@ -56860,31 +56989,31 @@ msgstr ""
"Возвращает [code]true[/code] еÑли [code]a[/code] и [code]b[/code] "
"приблизительно равны друг другу."
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -56900,311 +57029,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -57280,7 +57409,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -57293,19 +57422,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -57316,7 +57445,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -58193,12 +58322,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
+msgstr ""
+
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -58208,26 +58346,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -58971,16 +59111,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -65596,79 +65743,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -65676,18 +65823,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -65698,145 +65845,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Возвращает ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -65846,25 +65993,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65875,79 +66022,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Возвращает аркÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65959,7 +66106,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -65968,31 +66115,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -66001,63 +66148,63 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
#, fuzzy
msgid "Sets the lightmap to use with this instance."
msgstr "Возвращает длину вектора."
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -66069,7 +66216,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -66081,7 +66228,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -66093,71 +66240,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -66166,19 +66313,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -66188,7 +66335,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -66199,78 +66346,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Возвращает ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Возвращает значение, противоположное параметру."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr "Возвращает [code]true[/code] еÑли маÑÑив пуÑтой."
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -66279,53 +66426,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -66336,100 +66483,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Возвращает Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Возвращает [Texture2D] заданного кадра."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -66437,7 +66584,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -66448,69 +66595,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -66525,20 +66672,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -66549,7 +66696,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -66560,23 +66707,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -66584,118 +66731,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -66706,59 +66853,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -66766,25 +66913,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -66792,7 +66939,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -66802,30 +66949,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -66834,19 +66981,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -66854,11 +67001,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -66867,47 +67014,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -66916,11 +67063,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -66929,11 +67076,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -66944,15 +67091,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -66961,104 +67108,104 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Возвращает ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Возвращает [Texture2D] заданного кадра."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Возвращает оÑтаток от двух векторов."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Возвращает [Texture2D] заданного кадра."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Возвращает Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Возвращает оÑтаток от двух векторов."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Возвращает обратный квадратный корень из аргумента."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
#, fuzzy
msgid "Returns the texture's width."
msgstr "Возвращает вектор Ñ Ð¼Ð°ÐºÑимальной длиной."
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
#, fuzzy
msgid "Sets the texture's path."
msgstr "Смещение текÑтуры."
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -67080,7 +67227,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -67089,86 +67236,86 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr "ЕÑли [code]true[/code], текÑтура отражена по вертикали."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr "ЕÑли [code]true[/code], текÑтура будет центрирована."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -67184,24 +67331,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -67211,34 +67358,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -67249,7 +67396,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -67259,210 +67406,210 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr "ЕÑли [code]true[/code], текÑтура отражена по вертикали."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
#, fuzzy
msgid "Repeats the texture with alternate sections mirrored."
msgstr "Возвращает вектор в котором вÑе компоненты округлены вверх."
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -67471,672 +67618,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -70443,8 +70590,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -70974,57 +71121,60 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Возвращает [Texture2D] заданного кадра."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr "ЕÑли [code]true[/code], текÑтура будет центрирована."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
#, fuzzy
msgid "The text displayed in the window's title bar."
msgstr "ТекÑÑ‚, отображаемый в диалоговом окне."
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
#, fuzzy
msgid "The icon for the close button."
msgstr "Ð›ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши."
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
#, fuzzy
msgid "The color of the title text."
msgstr "Цвет Ñффекта отражениÑ."
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -71295,6 +71445,28 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#~ msgid "Returns the label used for built-in text."
+#~ msgstr "Возвращает метку (Label), иÑпользуемую Ð´Ð»Ñ Ð²Ñтроенного текÑта."
+
+#~ msgid "Returns the OK [Button] instance."
+#~ msgstr "Возвращает ÑкземплÑÑ€ кнопки ([Button]) OK."
+
+#, fuzzy
+#~ msgid "Returns the editor's [FileSystemDock] instance."
+#~ msgstr "Возвращает длину вектора."
+
+#, fuzzy
+#~ msgid "Returns the editor's [EditorInspector] instance."
+#~ msgstr "Возвращает длину вектора."
+
+#, fuzzy
+#~ msgid "Returns the editor's [ScriptEditor] instance."
+#~ msgstr "Возвращает длину вектора."
+
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Возвращает [Texture2D] заданного кадра."
+
#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
diff --git a/doc/translations/sk.po b/doc/translations/sk.po
index 8587a4245e..dc2b8c946b 100644
--- a/doc/translations/sk.po
+++ b/doc/translations/sk.po
@@ -3733,20 +3733,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3755,11 +3763,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3773,15 +3781,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6343,13 +6351,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6375,14 +6385,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6520,26 +6532,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6566,14 +6582,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6582,14 +6601,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7190,7 +7212,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9932,7 +9954,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12640,9 +12665,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14467,7 +14491,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14567,84 +14591,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14960,7 +14991,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19584,117 +19619,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19865,7 +19904,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -19991,7 +20031,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20169,18 +20210,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20190,119 +20233,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20310,17 +20364,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20650,30 +20704,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20683,22 +20739,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20706,68 +20762,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20775,22 +20831,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20799,26 +20855,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22461,53 +22517,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22515,58 +22579,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22577,19 +22641,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22597,17 +22661,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22615,24 +22679,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22640,21 +22704,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22662,65 +22726,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22730,43 +22794,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23298,20 +23362,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23320,125 +23391,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25114,11 +25185,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25575,7 +25646,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26301,7 +26372,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27084,16 +27155,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27102,11 +27167,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27114,17 +27179,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27143,7 +27208,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27157,30 +27222,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27188,63 +27234,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28069,7 +28115,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29551,171 +29597,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29724,7 +29774,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29733,26 +29783,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29761,108 +29811,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31547,20 +31597,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31573,52 +31626,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31640,100 +31693,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31741,80 +31794,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32097,59 +32150,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32157,34 +32210,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32337,70 +32390,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32517,11 +32574,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32569,53 +32626,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33439,7 +33496,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35326,22 +35383,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35352,7 +35412,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35369,7 +35429,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35380,27 +35440,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35408,7 +35468,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35419,30 +35479,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35452,7 +35512,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35463,7 +35523,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35477,7 +35537,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35486,14 +35546,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35506,7 +35566,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35514,32 +35574,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35547,13 +35607,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35563,7 +35623,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35572,11 +35632,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35585,138 +35645,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36901,34 +36961,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36936,96 +36996,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39641,20 +39701,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43489,6 +43549,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43496,7 +43568,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43506,13 +43578,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43526,14 +43598,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43542,7 +43614,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43550,7 +43622,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43566,20 +43638,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43587,75 +43659,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43665,7 +43737,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43675,27 +43747,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43703,81 +43775,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43785,109 +43857,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43898,91 +43970,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -43991,13 +44063,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44007,7 +44079,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44015,19 +44087,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44041,45 +44113,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44088,7 +44160,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44099,7 +44171,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44115,14 +44187,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44130,49 +44202,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44181,7 +44253,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44189,7 +44261,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44197,7 +44269,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44207,7 +44279,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44216,7 +44288,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44225,7 +44297,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44235,7 +44307,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44243,7 +44315,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44253,7 +44325,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44263,7 +44335,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44271,7 +44343,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44280,7 +44352,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44288,7 +44360,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44300,477 +44372,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44778,92 +44850,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44873,33 +44945,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44912,7 +44984,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44924,7 +44996,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44936,7 +45008,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44949,7 +45021,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44957,28 +45029,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44988,25 +45060,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45019,7 +45091,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45031,7 +45103,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45043,7 +45115,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45056,13 +45128,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45070,11 +45142,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45088,7 +45160,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45097,7 +45169,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45113,7 +45185,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45123,7 +45195,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45133,7 +45205,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45144,7 +45216,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45154,7 +45226,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45162,7 +45234,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45173,7 +45245,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45188,7 +45260,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45197,13 +45269,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45212,7 +45284,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45222,7 +45294,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45234,7 +45306,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45244,24 +45316,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45270,7 +45342,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45278,7 +45350,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45287,7 +45359,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45297,7 +45369,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45305,31 +45377,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45337,7 +45409,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45347,14 +45419,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45362,31 +45434,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45394,7 +45466,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45404,7 +45476,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45413,7 +45485,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45422,20 +45494,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45444,7 +45516,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45452,7 +45524,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45461,7 +45533,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45471,20 +45543,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45493,13 +45565,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45509,46 +45581,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45558,7 +45630,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45570,7 +45642,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45578,7 +45650,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45586,7 +45658,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45595,7 +45667,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45609,7 +45681,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45619,7 +45691,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45628,7 +45700,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45638,54 +45710,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45696,61 +45768,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45759,26 +45842,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45789,20 +45872,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45814,52 +45897,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45867,7 +45950,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45876,10 +45959,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45887,10 +45971,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45898,10 +45983,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45909,10 +45995,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45920,10 +46007,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46744,23 +46832,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46769,75 +46861,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47716,121 +47808,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47838,11 +47934,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47853,7 +47949,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47861,7 +47957,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47873,14 +47969,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47889,17 +47985,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47907,36 +48003,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47944,7 +48040,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47953,111 +48049,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48360,14 +48456,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48380,15 +48479,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48625,14 +48727,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48642,14 +48747,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49258,27 +49366,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49290,7 +49402,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49300,7 +49412,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49316,67 +49428,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49387,7 +49499,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49396,30 +49508,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49427,37 +49539,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49468,7 +49580,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49479,7 +49591,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49489,50 +49601,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49540,110 +49652,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49671,7 +49783,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49878,45 +49990,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52182,32 +52303,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54491,228 +54615,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55024,102 +55151,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55135,311 +55265,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55514,7 +55644,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55527,19 +55657,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55550,7 +55680,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56402,12 +56532,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56417,26 +56556,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57180,16 +57321,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63625,79 +63773,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63705,18 +63853,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63727,144 +63875,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63874,25 +64022,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63903,78 +64051,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63986,7 +64134,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -63995,31 +64143,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64028,62 +64176,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64095,7 +64243,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64107,7 +64255,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64119,71 +64267,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64192,19 +64340,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64214,7 +64362,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64225,75 +64373,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64302,53 +64450,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64359,98 +64507,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64458,7 +64606,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64469,69 +64617,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64546,20 +64694,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64570,7 +64718,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64581,23 +64729,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64605,118 +64753,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64727,59 +64875,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64787,25 +64935,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64813,7 +64961,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64823,30 +64971,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64855,19 +65003,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64875,11 +65023,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64888,47 +65036,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64937,11 +65085,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64950,11 +65098,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64965,15 +65113,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64982,95 +65130,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65092,7 +65240,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65101,84 +65249,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65194,24 +65342,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65221,34 +65369,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65259,7 +65407,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65269,208 +65417,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65479,672 +65627,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68448,8 +68596,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68978,52 +69126,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/sr_Cyrl.po b/doc/translations/sr_Cyrl.po
index 3080d59c31..bdd83106ae 100644
--- a/doc/translations/sr_Cyrl.po
+++ b/doc/translations/sr_Cyrl.po
@@ -3744,20 +3744,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3766,11 +3774,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3784,15 +3792,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6354,13 +6362,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6386,14 +6396,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6531,26 +6543,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6577,14 +6593,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6593,14 +6612,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7201,7 +7223,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -9943,7 +9965,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12651,9 +12676,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14478,7 +14502,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14578,84 +14602,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -14971,7 +15002,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19595,117 +19630,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19876,7 +19915,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20002,7 +20042,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20180,18 +20221,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20201,119 +20244,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20321,17 +20375,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20661,30 +20715,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20694,22 +20750,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20717,68 +20773,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20786,22 +20842,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20810,26 +20866,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22472,53 +22528,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22526,58 +22590,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22588,19 +22652,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22608,17 +22672,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22626,24 +22690,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22651,21 +22715,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22673,65 +22737,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22741,43 +22805,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23309,20 +23373,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23331,125 +23402,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25125,11 +25196,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25586,7 +25657,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26312,7 +26383,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27095,16 +27166,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27113,11 +27178,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27125,17 +27190,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27154,7 +27219,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27168,30 +27233,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27199,63 +27245,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28080,7 +28126,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29562,171 +29608,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29735,7 +29785,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29744,26 +29794,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29772,108 +29822,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31558,20 +31608,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31584,52 +31637,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31651,100 +31704,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31752,80 +31805,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32108,59 +32161,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32168,34 +32221,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32348,70 +32401,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32528,11 +32585,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32580,53 +32637,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33450,7 +33507,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35337,22 +35394,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35363,7 +35423,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35380,7 +35440,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35391,27 +35451,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35419,7 +35479,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35430,30 +35490,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35463,7 +35523,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35474,7 +35534,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35488,7 +35548,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35497,14 +35557,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35517,7 +35577,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35525,32 +35585,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35558,13 +35618,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35574,7 +35634,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35583,11 +35643,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35596,138 +35656,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -36912,34 +36972,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -36947,96 +37007,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39652,20 +39712,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43500,6 +43560,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43507,7 +43579,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43517,13 +43589,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43537,14 +43609,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43553,7 +43625,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43561,7 +43633,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43577,20 +43649,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43598,75 +43670,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43676,7 +43748,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43686,27 +43758,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43714,81 +43786,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43796,109 +43868,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -43909,91 +43981,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44002,13 +44074,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44018,7 +44090,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44026,19 +44098,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44052,45 +44124,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44099,7 +44171,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44110,7 +44182,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44126,14 +44198,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44141,49 +44213,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44192,7 +44264,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44200,7 +44272,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44208,7 +44280,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44218,7 +44290,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44227,7 +44299,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44236,7 +44308,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44246,7 +44318,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44254,7 +44326,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44264,7 +44336,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44274,7 +44346,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44282,7 +44354,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44291,7 +44363,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44299,7 +44371,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44311,477 +44383,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44789,92 +44861,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -44884,33 +44956,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44923,7 +44995,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44935,7 +45007,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -44947,7 +45019,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -44960,7 +45032,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -44968,28 +45040,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -44999,25 +45071,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45030,7 +45102,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45042,7 +45114,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45054,7 +45126,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45067,13 +45139,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45081,11 +45153,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45099,7 +45171,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45108,7 +45180,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45124,7 +45196,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45134,7 +45206,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45144,7 +45216,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45155,7 +45227,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45165,7 +45237,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45173,7 +45245,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45184,7 +45256,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45199,7 +45271,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45208,13 +45280,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45223,7 +45295,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45233,7 +45305,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45245,7 +45317,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45255,24 +45327,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45281,7 +45353,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45289,7 +45361,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45298,7 +45370,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45308,7 +45380,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45316,31 +45388,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45348,7 +45420,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45358,14 +45430,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45373,31 +45445,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45405,7 +45477,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45415,7 +45487,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45424,7 +45496,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45433,20 +45505,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45455,7 +45527,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45463,7 +45535,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45472,7 +45544,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45482,20 +45554,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45504,13 +45576,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45520,46 +45592,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45569,7 +45641,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45581,7 +45653,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45589,7 +45661,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45597,7 +45669,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45606,7 +45678,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45620,7 +45692,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45630,7 +45702,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45639,7 +45711,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45649,54 +45721,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45707,61 +45779,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45770,26 +45853,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45800,20 +45883,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45825,52 +45908,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -45878,7 +45961,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -45887,10 +45970,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -45898,10 +45982,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -45909,10 +45994,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -45920,10 +46006,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -45931,10 +46018,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46755,23 +46843,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46780,75 +46872,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47727,121 +47819,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -47849,11 +47945,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -47864,7 +47960,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -47872,7 +47968,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -47884,14 +47980,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -47900,17 +47996,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -47918,36 +48014,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -47955,7 +48051,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -47964,111 +48060,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48371,14 +48467,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48391,15 +48490,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48636,14 +48738,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48653,14 +48758,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49269,27 +49377,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49301,7 +49413,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49311,7 +49423,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49327,67 +49439,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49398,7 +49510,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49407,30 +49519,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49438,37 +49550,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49479,7 +49591,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49490,7 +49602,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49500,50 +49612,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49551,110 +49663,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49682,7 +49794,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -49889,45 +50001,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52193,32 +52314,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54502,228 +54626,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55035,102 +55162,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55146,311 +55276,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55525,7 +55655,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55538,19 +55668,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55561,7 +55691,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56413,12 +56543,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56428,26 +56567,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57191,16 +57332,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63636,79 +63784,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63716,18 +63864,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63738,144 +63886,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -63885,25 +64033,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63914,78 +64062,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -63997,7 +64145,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64006,31 +64154,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64039,62 +64187,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64106,7 +64254,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64118,7 +64266,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64130,71 +64278,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64203,19 +64351,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64225,7 +64373,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64236,75 +64384,75 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
msgstr ""
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64313,53 +64461,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64370,98 +64518,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64469,7 +64617,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64480,69 +64628,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64557,20 +64705,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64581,7 +64729,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64592,23 +64740,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64616,118 +64764,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64738,59 +64886,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64798,25 +64946,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64824,7 +64972,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -64834,30 +64982,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -64866,19 +65014,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -64886,11 +65034,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -64899,47 +65047,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -64948,11 +65096,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -64961,11 +65109,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64976,15 +65124,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -64993,95 +65141,95 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
msgstr ""
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr ""
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65103,7 +65251,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65112,84 +65260,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65205,24 +65353,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65232,34 +65380,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65270,7 +65418,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65280,208 +65428,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65490,672 +65638,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68459,8 +68607,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -68989,52 +69137,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-msgid "Returns the close [TextureButton]."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
diff --git a/doc/translations/th.po b/doc/translations/th.po
index 3951fd2b96..6e2512e6fa 100644
--- a/doc/translations/th.po
+++ b/doc/translations/th.po
@@ -3832,20 +3832,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3854,11 +3862,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3872,15 +3880,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6443,13 +6451,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6475,14 +6485,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6620,26 +6632,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6666,14 +6682,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6682,14 +6701,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7290,7 +7312,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10033,7 +10055,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12743,9 +12768,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14570,7 +14594,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14670,84 +14694,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15063,7 +15094,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19687,117 +19722,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19968,7 +20007,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20094,7 +20134,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20272,18 +20313,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20293,119 +20336,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20413,17 +20467,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20753,30 +20807,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20786,22 +20842,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20809,68 +20865,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20878,22 +20934,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20902,26 +20958,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22564,53 +22620,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22618,58 +22682,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22680,19 +22744,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22700,17 +22764,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22718,24 +22782,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22743,21 +22807,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22765,65 +22829,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22833,43 +22897,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23401,20 +23465,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23423,125 +23494,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25217,11 +25288,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25678,7 +25749,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26404,7 +26475,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27187,16 +27258,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27205,11 +27270,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27217,17 +27282,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27246,7 +27311,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27260,30 +27325,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27291,63 +27337,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28174,7 +28220,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29664,171 +29710,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29837,7 +29887,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29846,26 +29896,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29874,108 +29924,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31670,20 +31720,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31696,52 +31749,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31763,100 +31816,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31864,80 +31917,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32220,59 +32273,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32280,34 +32333,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32460,70 +32513,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32640,11 +32697,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32692,53 +32749,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33562,7 +33619,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35479,22 +35536,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35505,7 +35565,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35522,7 +35582,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35533,27 +35593,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35561,7 +35621,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35572,30 +35632,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35605,7 +35665,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35616,7 +35676,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35630,7 +35690,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35639,14 +35699,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35659,7 +35719,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35667,32 +35727,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35700,13 +35760,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35716,7 +35776,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35725,11 +35785,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35738,138 +35798,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37054,34 +37114,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37089,96 +37149,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39799,20 +39859,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43649,6 +43709,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43656,7 +43728,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43666,13 +43738,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43686,14 +43758,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43702,7 +43774,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43710,7 +43782,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43726,20 +43798,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43747,75 +43819,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43825,7 +43897,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43835,27 +43907,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43863,81 +43935,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43945,109 +44017,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44058,91 +44130,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44151,13 +44223,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44167,7 +44239,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44175,19 +44247,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44201,45 +44273,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44248,7 +44320,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44259,7 +44331,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44275,14 +44347,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44290,49 +44362,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44341,7 +44413,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44349,7 +44421,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
#, fuzzy
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
@@ -44362,7 +44434,7 @@ msgstr ""
"ได้เนื่องจาà¸à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸ªà¸³à¸«à¸£à¸±à¸š logic ในà¸à¸²à¸£ [Control] ต่างๆ อย่างไรà¸à¹‡à¸•าม event "
"ที่à¸à¸³à¸«à¸™à¸”ให้à¸à¸±à¸šà¸à¸²à¸£ action สามารถà¹à¸à¹‰à¹„ขได้"
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44372,7 +44444,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44381,7 +44453,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44390,7 +44462,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44400,7 +44472,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44408,7 +44480,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44418,7 +44490,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44428,7 +44500,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44436,7 +44508,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44445,7 +44517,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44453,7 +44525,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44465,477 +44537,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44943,92 +45015,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45038,33 +45110,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45077,7 +45149,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45089,7 +45161,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45101,7 +45173,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45114,7 +45186,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45122,28 +45194,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45153,25 +45225,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45184,7 +45256,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45196,7 +45268,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45208,7 +45280,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45221,13 +45293,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45235,11 +45307,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45253,7 +45325,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45262,7 +45334,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45278,7 +45350,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45288,7 +45360,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45298,7 +45370,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45309,7 +45381,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45319,7 +45391,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45327,7 +45399,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45338,7 +45410,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45353,7 +45425,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45362,13 +45434,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45377,7 +45449,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45387,7 +45459,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45399,7 +45471,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45409,24 +45481,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45435,7 +45507,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45443,7 +45515,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45452,7 +45524,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45462,7 +45534,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45470,31 +45542,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45502,7 +45574,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45512,14 +45584,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45527,31 +45599,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45559,7 +45631,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45569,7 +45641,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45578,7 +45650,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45587,20 +45659,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45609,7 +45681,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45617,7 +45689,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45626,7 +45698,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45636,20 +45708,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45658,13 +45730,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45674,46 +45746,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45723,7 +45795,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45735,7 +45807,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45743,7 +45815,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45751,7 +45823,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45760,7 +45832,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45774,7 +45846,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45784,7 +45856,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45793,7 +45865,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45803,54 +45875,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45861,61 +45933,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45924,26 +46007,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45954,20 +46037,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45979,52 +46062,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46032,7 +46115,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46041,10 +46124,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46052,10 +46136,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46063,10 +46148,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46074,10 +46160,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46085,10 +46172,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46909,23 +46997,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46934,75 +47026,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47881,121 +47973,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48003,11 +48099,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48018,7 +48114,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48026,7 +48122,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48038,14 +48134,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48054,17 +48150,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48072,36 +48168,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48109,7 +48205,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48118,111 +48214,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48525,14 +48621,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48545,15 +48644,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48790,14 +48892,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48807,14 +48912,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49423,27 +49531,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49455,7 +49567,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49465,7 +49577,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49481,67 +49593,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49552,7 +49664,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49561,30 +49673,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49592,37 +49704,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49633,7 +49745,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49644,7 +49756,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49654,50 +49766,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49705,110 +49817,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49836,7 +49948,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50043,45 +50155,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52347,32 +52468,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54657,228 +54781,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55190,102 +55317,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55301,311 +55431,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55680,7 +55810,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55693,19 +55823,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55716,7 +55846,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56568,12 +56698,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56583,26 +56722,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57346,16 +57487,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63803,79 +63951,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63883,18 +64031,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63905,144 +64053,144 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64052,25 +64200,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64081,78 +64229,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64164,7 +64312,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64173,31 +64321,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64206,62 +64354,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64273,7 +64421,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64285,7 +64433,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64297,71 +64445,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64370,19 +64518,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64392,7 +64540,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64403,76 +64551,76 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "คืนค่าผà¸à¸œà¸±à¸™à¸£à¸¹à¸—สองของพารามิเตอร์"
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64481,53 +64629,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64538,98 +64686,98 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64637,7 +64785,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64648,69 +64796,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64725,20 +64873,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64749,7 +64897,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64760,23 +64908,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64784,118 +64932,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64906,59 +65054,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64966,25 +65114,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -64992,7 +65140,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65002,30 +65150,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65034,19 +65182,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65054,11 +65202,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65067,47 +65215,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65116,11 +65264,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65129,11 +65277,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65144,15 +65292,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65161,98 +65309,98 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "คืนค่า arc tanh ของพารามิเตอร์"
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
msgstr ""
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "คืนค่าผà¸à¸œà¸±à¸™à¸£à¸¹à¸—สองของพารามิเตอร์"
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65274,7 +65422,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65283,84 +65431,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65376,24 +65524,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65403,34 +65551,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65441,7 +65589,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65451,208 +65599,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65661,672 +65809,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68632,8 +68780,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69162,53 +69310,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69479,6 +69630,10 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+
#~ msgid "Back key."
#~ msgstr "ปุ่ม"
diff --git a/doc/translations/tr.po b/doc/translations/tr.po
index e4ba208c94..51f3ec242d 100644
--- a/doc/translations/tr.po
+++ b/doc/translations/tr.po
@@ -4514,20 +4514,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4536,11 +4544,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4554,15 +4562,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -7125,13 +7133,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -7157,14 +7167,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -7302,26 +7314,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -7348,14 +7364,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -7364,14 +7383,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7972,7 +7994,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10715,7 +10737,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -13430,9 +13455,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -15257,7 +15281,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -15357,84 +15381,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15750,7 +15781,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -20378,117 +20413,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20659,7 +20698,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20785,7 +20825,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20963,18 +21004,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20984,119 +21027,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -21104,17 +21158,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -21444,30 +21498,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -21477,22 +21533,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -21500,68 +21556,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -21569,22 +21625,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21593,26 +21649,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -23257,53 +23313,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -23311,58 +23375,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -23373,19 +23437,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -23393,17 +23457,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -23411,24 +23475,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -23436,21 +23500,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -23458,65 +23522,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -23526,43 +23590,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -24099,20 +24163,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -24121,125 +24192,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25917,11 +25988,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -26381,7 +26452,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -27107,7 +27178,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27890,16 +27961,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27908,11 +27973,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27920,17 +27985,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27949,7 +28014,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27963,30 +28028,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27994,63 +28040,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28877,7 +28923,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -30362,171 +30408,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -30535,7 +30585,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -30544,26 +30594,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -30572,108 +30622,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -32359,20 +32409,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -32385,52 +32438,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -32452,100 +32505,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -32553,80 +32606,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32909,59 +32962,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32969,34 +33022,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -33149,70 +33202,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -33329,11 +33386,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -33381,53 +33438,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -34252,7 +34309,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -36150,22 +36207,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -36176,7 +36236,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -36193,7 +36253,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -36204,27 +36264,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -36232,7 +36292,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -36243,30 +36303,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -36276,7 +36336,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -36287,7 +36347,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -36301,7 +36361,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -36310,14 +36370,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -36330,7 +36390,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -36338,32 +36398,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -36371,13 +36431,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -36387,7 +36447,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -36396,11 +36456,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -36409,138 +36469,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37725,34 +37785,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37760,96 +37820,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -40492,20 +40552,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -44347,6 +44407,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -44354,7 +44426,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -44364,13 +44436,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -44384,14 +44456,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -44400,7 +44472,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -44408,7 +44480,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -44424,20 +44496,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -44445,75 +44517,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44523,7 +44595,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -44533,27 +44605,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -44561,81 +44633,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44643,109 +44715,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44756,91 +44828,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44849,13 +44921,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44865,7 +44937,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44873,19 +44945,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44899,45 +44971,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44946,7 +45018,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44957,7 +45029,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44973,14 +45045,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44988,49 +45060,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -45039,7 +45111,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45047,7 +45119,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45055,7 +45127,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -45065,7 +45137,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -45074,7 +45146,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -45083,7 +45155,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -45093,7 +45165,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45101,7 +45173,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -45111,7 +45183,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -45121,7 +45193,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45129,7 +45201,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -45138,7 +45210,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -45146,7 +45218,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -45158,477 +45230,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45636,92 +45708,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45731,33 +45803,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45770,7 +45842,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45782,7 +45854,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45794,7 +45866,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45807,7 +45879,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45815,28 +45887,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45846,25 +45918,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45877,7 +45949,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45889,7 +45961,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45901,7 +45973,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45914,13 +45986,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45928,11 +46000,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45946,7 +46018,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45955,7 +46027,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45971,7 +46043,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45981,7 +46053,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45991,7 +46063,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -46002,7 +46074,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -46012,7 +46084,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -46020,7 +46092,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -46031,7 +46103,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -46046,7 +46118,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -46055,13 +46127,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -46070,7 +46142,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -46080,7 +46152,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -46092,7 +46164,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -46102,24 +46174,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -46128,7 +46200,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -46136,7 +46208,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -46145,7 +46217,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -46155,7 +46227,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -46163,31 +46235,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -46195,7 +46267,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -46205,14 +46277,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -46220,31 +46292,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -46252,7 +46324,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -46262,7 +46334,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -46271,7 +46343,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -46280,20 +46352,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -46302,7 +46374,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -46310,7 +46382,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -46319,7 +46391,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -46329,20 +46401,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -46351,13 +46423,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -46367,46 +46439,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -46416,7 +46488,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -46428,7 +46500,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -46436,7 +46508,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -46444,7 +46516,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -46453,7 +46525,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -46467,7 +46539,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -46477,7 +46549,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -46486,7 +46558,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -46496,54 +46568,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -46554,61 +46626,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -46617,26 +46700,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46647,20 +46730,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46672,52 +46755,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46725,7 +46808,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46734,10 +46817,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46745,10 +46829,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46756,10 +46841,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46767,10 +46853,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46778,10 +46865,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -47609,23 +47697,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -47634,75 +47726,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -48581,121 +48673,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48703,11 +48799,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48718,7 +48814,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48726,7 +48822,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48738,14 +48834,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48754,17 +48850,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48772,36 +48868,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48809,7 +48905,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48818,111 +48914,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -49225,14 +49321,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49245,15 +49344,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -49490,14 +49592,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -49507,14 +49612,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -50123,27 +50231,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -50155,7 +50267,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -50165,7 +50277,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -50181,67 +50293,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -50252,7 +50364,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -50261,30 +50373,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -50292,37 +50404,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -50333,7 +50445,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -50344,7 +50456,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -50354,52 +50466,52 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -50407,110 +50519,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -50538,7 +50650,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50745,45 +50857,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -53051,32 +53172,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -55360,228 +55484,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55894,102 +56021,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -56005,311 +56135,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -56384,7 +56514,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -56397,19 +56527,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -56420,7 +56550,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -57272,12 +57402,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -57287,26 +57426,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -58050,16 +58191,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -64509,79 +64657,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -64589,18 +64737,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -64611,145 +64759,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Verilen değerin sinüsünü döndürür."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64759,25 +64907,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64788,79 +64936,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Verilen bir değerin ark-sinüsünü döndürür."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64872,7 +65020,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64881,31 +65029,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64914,62 +65062,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64981,7 +65129,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64993,7 +65141,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -65005,71 +65153,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -65078,19 +65226,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -65100,7 +65248,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65111,77 +65259,77 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Verilen değerin sinüsünü döndürür."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Verilen değerin zıt değerini döndürür."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65190,53 +65338,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -65247,100 +65395,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Verilen değerin tanjantını döndürür."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Verilen değerin zıt değerini döndürür."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -65348,7 +65496,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -65359,69 +65507,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -65436,20 +65584,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65460,7 +65608,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65471,23 +65619,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -65495,118 +65643,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65617,59 +65765,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65677,25 +65825,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65703,7 +65851,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65713,30 +65861,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65745,19 +65893,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65765,11 +65913,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65778,47 +65926,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65827,11 +65975,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65840,11 +65988,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65855,15 +66003,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65872,102 +66020,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Verilen değerin sinüsünü döndürür."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Verilen değerin sinüsünü döndürür."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "İki vektörün kalanını döndürür."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Verilen değerin tanjantını döndürür."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Verilen değerin tanjantını döndürür."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "İki vektörün kalanını döndürür."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Verilen değerin karekökünün tersini döndürür."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65989,7 +66137,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65998,88 +66146,88 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -66095,24 +66243,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -66122,34 +66270,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -66160,7 +66308,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -66170,210 +66318,210 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -66382,672 +66530,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -69353,8 +69501,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69883,55 +70031,58 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Parametrenin kosinüsünü döndürür."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -70203,6 +70354,10 @@ msgid ""
msgstr ""
"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Parametrenin kosinüsünü döndürür."
+
#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
diff --git a/doc/translations/uk.po b/doc/translations/uk.po
index 7622e3e8ae..d499992201 100644
--- a/doc/translations/uk.po
+++ b/doc/translations/uk.po
@@ -3852,20 +3852,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3874,11 +3882,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3892,15 +3900,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6469,13 +6477,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6501,14 +6511,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6646,26 +6658,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6692,14 +6708,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6708,14 +6727,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7316,7 +7338,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10059,7 +10081,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12772,9 +12797,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14600,7 +14624,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14700,84 +14724,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15093,7 +15124,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19721,117 +19756,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20002,7 +20041,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20128,7 +20168,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20306,18 +20347,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20327,119 +20370,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20447,17 +20501,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20787,30 +20841,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20820,22 +20876,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20843,68 +20899,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20912,22 +20968,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20936,26 +20992,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22598,53 +22654,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22652,58 +22716,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22714,19 +22778,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22734,17 +22798,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22752,24 +22816,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22777,21 +22841,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22799,65 +22863,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22867,43 +22931,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23436,20 +23500,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23458,125 +23529,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25253,11 +25324,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25720,7 +25791,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26446,7 +26517,7 @@ msgstr ""
"https://docs.godotengine.org/uk/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27229,16 +27300,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27247,11 +27312,11 @@ msgstr ""
"https://docs.godotengine.org/uk/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27259,17 +27324,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27288,7 +27353,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27302,30 +27367,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27333,63 +27379,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28216,7 +28262,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29699,171 +29745,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29872,7 +29922,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29881,26 +29931,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29909,108 +29959,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31697,20 +31747,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31723,52 +31776,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31790,100 +31843,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31891,80 +31944,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32247,59 +32300,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32307,34 +32360,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32487,70 +32540,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32667,11 +32724,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32719,53 +32776,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33590,7 +33647,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35486,22 +35543,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35512,7 +35572,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35529,7 +35589,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35540,27 +35600,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35568,7 +35628,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35579,30 +35639,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35612,7 +35672,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35623,7 +35683,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35637,7 +35697,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35646,14 +35706,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35666,7 +35726,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35674,32 +35734,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35707,13 +35767,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35723,7 +35783,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35732,11 +35792,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35745,138 +35805,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37061,34 +37121,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37096,96 +37156,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39822,20 +39882,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43675,6 +43735,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43682,7 +43754,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43692,13 +43764,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43712,14 +43784,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43728,7 +43800,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43736,7 +43808,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43752,20 +43824,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43773,75 +43845,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43851,7 +43923,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43861,27 +43933,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43889,81 +43961,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43971,109 +44043,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44084,91 +44156,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44177,13 +44249,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44193,7 +44265,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44201,19 +44273,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44227,45 +44299,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44274,7 +44346,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44285,7 +44357,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44301,14 +44373,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44316,49 +44388,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44367,7 +44439,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44375,7 +44447,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44383,7 +44455,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44393,7 +44465,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44402,7 +44474,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44411,7 +44483,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44421,7 +44493,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44429,7 +44501,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44439,7 +44511,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44449,7 +44521,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44457,7 +44529,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44466,7 +44538,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44474,7 +44546,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44486,477 +44558,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44964,92 +45036,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45059,33 +45131,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45098,7 +45170,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45110,7 +45182,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45122,7 +45194,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45135,7 +45207,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45143,28 +45215,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45174,25 +45246,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45205,7 +45277,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45217,7 +45289,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45229,7 +45301,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45242,13 +45314,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45256,11 +45328,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45274,7 +45346,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45283,7 +45355,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45299,7 +45371,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45309,7 +45381,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45319,7 +45391,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45330,7 +45402,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45340,7 +45412,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45348,7 +45420,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45359,7 +45431,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45374,7 +45446,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45383,13 +45455,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45398,7 +45470,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45408,7 +45480,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45420,7 +45492,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45430,24 +45502,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45456,7 +45528,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45464,7 +45536,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45473,7 +45545,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45483,7 +45555,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45491,31 +45563,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45523,7 +45595,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45533,14 +45605,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45548,31 +45620,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45580,7 +45652,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45590,7 +45662,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45599,7 +45671,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45608,20 +45680,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45630,7 +45702,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45638,7 +45710,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45647,7 +45719,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45657,20 +45729,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45679,13 +45751,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45695,46 +45767,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45744,7 +45816,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45756,7 +45828,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45764,7 +45836,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45772,7 +45844,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45781,7 +45853,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45795,7 +45867,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45805,7 +45877,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45814,7 +45886,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45824,54 +45896,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45882,61 +45954,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45945,26 +46028,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45975,20 +46058,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46000,52 +46083,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46053,7 +46136,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46062,10 +46145,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46073,10 +46157,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46084,10 +46169,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46095,10 +46181,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46106,10 +46193,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46930,23 +47018,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/uk/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46955,75 +47047,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47902,121 +47994,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48024,11 +48120,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48039,7 +48135,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48047,7 +48143,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48059,14 +48155,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48075,17 +48171,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48093,36 +48189,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48130,7 +48226,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48139,111 +48235,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48546,14 +48642,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48566,15 +48665,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48811,14 +48913,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48828,14 +48933,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49444,27 +49552,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49476,7 +49588,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49486,7 +49598,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49502,67 +49614,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49573,7 +49685,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49582,30 +49694,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49613,37 +49725,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49654,7 +49766,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49665,7 +49777,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49675,50 +49787,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49726,110 +49838,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49857,7 +49969,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50064,45 +50176,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52369,32 +52490,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54679,228 +54803,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55214,102 +55341,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55325,311 +55455,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55704,7 +55834,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55717,19 +55847,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55740,7 +55870,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56593,12 +56723,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56608,26 +56747,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57371,16 +57512,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63828,79 +63976,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63908,18 +64056,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63930,145 +64078,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64078,25 +64226,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64107,79 +64255,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Повертає аркÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64191,7 +64339,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64200,31 +64348,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64233,62 +64381,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64300,7 +64448,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64312,7 +64460,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64324,71 +64472,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64397,19 +64545,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64419,7 +64567,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64430,77 +64578,77 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Повертає значеннÑ, Ñке Ñ” протилежним до Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64509,53 +64657,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64566,100 +64714,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Повертає Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Повертає значеннÑ, Ñке Ñ” протилежним до Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64667,7 +64815,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64678,69 +64826,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64755,20 +64903,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64779,7 +64927,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64790,23 +64938,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64814,118 +64962,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64936,59 +65084,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64996,25 +65144,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65022,7 +65170,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65032,30 +65180,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65064,19 +65212,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65084,11 +65232,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65097,47 +65245,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65146,11 +65294,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65159,11 +65307,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65174,15 +65322,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65191,102 +65339,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Повертає лишок за двома векторами."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Повертає Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Повертає Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Повертає лишок за двома векторами."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Повертає одиницю поділену на квадратний корінь з параметра."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65308,7 +65456,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65317,84 +65465,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65410,24 +65558,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65437,34 +65585,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65475,7 +65623,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65485,208 +65633,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65695,672 +65843,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68670,8 +68818,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69200,53 +69348,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Повертає коÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69517,6 +69668,10 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Повертає коÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+
#~ msgid ""
#~ "https://docs.godotengine.org/en/latest/getting_started/step_by_step/"
#~ "animations.html"
diff --git a/doc/translations/vi.po b/doc/translations/vi.po
index 77a3b7f75c..f952cfdcc2 100644
--- a/doc/translations/vi.po
+++ b/doc/translations/vi.po
@@ -4154,20 +4154,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4176,11 +4184,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4194,15 +4202,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6771,13 +6779,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6803,14 +6813,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6944,26 +6956,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6990,14 +7006,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -7006,14 +7025,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7611,7 +7633,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10342,7 +10364,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -13033,9 +13058,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14854,7 +14878,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14954,84 +14978,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15347,7 +15378,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19958,117 +19993,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -20239,7 +20278,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20362,7 +20402,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20537,18 +20578,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20558,119 +20601,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20678,17 +20732,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -21016,30 +21070,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -21049,22 +21105,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -21072,68 +21128,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -21141,22 +21197,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -21165,26 +21221,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22818,53 +22874,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22872,58 +22936,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22934,19 +22998,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22954,17 +23018,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22972,24 +23036,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22997,21 +23061,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -23019,65 +23083,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -23087,43 +23151,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23656,20 +23720,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23678,125 +23749,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25462,11 +25533,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25925,7 +25996,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26646,7 +26717,7 @@ msgid ""
"html"
msgstr ""
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/ssl_certificates."
@@ -27426,26 +27497,20 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
"html"
msgstr ""
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27453,17 +27518,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27482,7 +27547,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27496,30 +27561,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27527,63 +27573,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28407,7 +28453,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29879,171 +29925,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -30052,7 +30102,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -30061,26 +30111,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -30089,108 +30139,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31860,20 +31910,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31886,52 +31939,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31953,100 +32006,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -32054,80 +32107,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32410,59 +32463,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32470,34 +32523,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32650,70 +32703,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32830,11 +32887,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32882,53 +32939,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33743,7 +33800,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35628,22 +35685,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35654,7 +35714,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35671,7 +35731,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35682,27 +35742,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35710,7 +35770,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35721,30 +35781,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35754,7 +35814,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35765,7 +35825,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35779,7 +35839,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35788,14 +35848,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35808,7 +35868,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35816,32 +35876,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35849,13 +35909,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35865,7 +35925,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35874,11 +35934,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35887,138 +35947,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37193,34 +37253,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37228,96 +37288,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39953,20 +40013,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43808,6 +43868,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43815,7 +43887,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43825,13 +43897,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43845,14 +43917,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43861,7 +43933,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43869,7 +43941,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43885,20 +43957,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43906,75 +43978,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43984,7 +44056,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43994,27 +44066,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -44022,81 +44094,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -44104,111 +44176,111 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44219,91 +44291,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44312,13 +44384,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44328,7 +44400,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44336,19 +44408,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44362,45 +44434,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44409,7 +44481,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44420,7 +44492,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44436,14 +44508,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44451,49 +44523,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44502,7 +44574,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44510,7 +44582,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44518,7 +44590,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44528,7 +44600,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44537,7 +44609,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44546,7 +44618,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44556,7 +44628,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44564,7 +44636,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44574,7 +44646,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44584,7 +44656,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44592,7 +44664,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44601,7 +44673,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44609,7 +44681,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44621,477 +44693,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -45099,92 +45171,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45194,33 +45266,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45233,7 +45305,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45245,7 +45317,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45257,7 +45329,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45270,7 +45342,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45278,28 +45350,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45309,25 +45381,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45340,7 +45412,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45352,7 +45424,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45364,7 +45436,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45377,13 +45449,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45391,11 +45463,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45409,7 +45481,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45418,7 +45490,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45434,7 +45506,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45444,7 +45516,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45454,7 +45526,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45465,7 +45537,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45475,7 +45547,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45483,7 +45555,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45494,7 +45566,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45509,7 +45581,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45518,13 +45590,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45533,7 +45605,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45543,7 +45615,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45555,7 +45627,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45565,24 +45637,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45591,7 +45663,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45599,7 +45671,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45608,7 +45680,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45618,7 +45690,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45626,31 +45698,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45658,7 +45730,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45668,14 +45740,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45683,31 +45755,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45715,7 +45787,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45725,7 +45797,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45734,7 +45806,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45743,20 +45815,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45765,7 +45837,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45773,7 +45845,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45782,7 +45854,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45792,20 +45864,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45814,13 +45886,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45830,46 +45902,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45879,7 +45951,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45891,7 +45963,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45899,7 +45971,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45907,7 +45979,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45916,7 +45988,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45930,7 +46002,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45940,7 +46012,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45949,7 +46021,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45959,54 +46031,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -46017,61 +46089,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -46080,26 +46163,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -46110,20 +46193,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -46135,52 +46218,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46188,7 +46271,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46197,10 +46280,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46208,10 +46292,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46219,10 +46304,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46230,10 +46316,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46241,10 +46328,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -47065,21 +47153,25 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -47088,75 +47180,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -48031,121 +48123,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48153,11 +48249,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48168,7 +48264,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48176,7 +48272,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48188,14 +48284,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48204,17 +48300,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48222,36 +48318,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48259,7 +48355,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48268,111 +48364,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48675,14 +48771,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48695,15 +48794,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48938,14 +49040,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48955,14 +49060,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49562,27 +49670,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49594,7 +49706,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49604,7 +49716,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49620,67 +49732,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49691,7 +49803,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49700,30 +49812,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49731,37 +49843,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49772,7 +49884,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49783,7 +49895,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49793,51 +49905,51 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49845,110 +49957,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49976,7 +50088,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50180,45 +50292,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52473,32 +52594,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54779,228 +54903,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55313,102 +55440,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55424,311 +55554,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55804,7 +55934,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55817,19 +55947,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55840,7 +55970,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56688,12 +56818,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56703,26 +56842,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57463,16 +57604,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63914,79 +64062,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63994,18 +64142,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -64016,145 +64164,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "Trả vỠsin của tham số."
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64164,25 +64312,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64193,79 +64341,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "Trả vỠsin nghịch đảo của tham số."
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64277,7 +64425,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64286,31 +64434,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64319,62 +64467,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64386,7 +64534,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64398,7 +64546,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64410,71 +64558,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64483,19 +64631,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64505,7 +64653,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64516,78 +64664,78 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "Trả vỠsin của tham số."
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "Trả vỠgiá trị đối của tham số."
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
#, fuzzy
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64596,53 +64744,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64653,100 +64801,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "Trả vỠtan của tham số."
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "Trả vỠ[Texture2D] của khung hình được cho."
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64754,7 +64902,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64765,69 +64913,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64842,20 +64990,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64866,7 +65014,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64877,23 +65025,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64901,118 +65049,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65023,59 +65171,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -65083,25 +65231,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65109,7 +65257,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65119,30 +65267,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65151,19 +65299,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65171,11 +65319,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65184,47 +65332,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65233,11 +65381,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65246,11 +65394,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65261,15 +65409,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65278,103 +65426,103 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "Trả vỠsin của tham số."
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "Trả vỠ[Texture2D] của khung hình được cho."
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "Trả vỠphần dư của hai vector."
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "Trả vỠ[Texture2D] của khung hình được cho."
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "Trả vỠtan của tham số."
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "Trả vỠphần dư của hai vector."
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "Trả vỠnghịch đảo căn bậc hai của tham số."
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
#, fuzzy
msgid "Returns the texture's width."
msgstr "Trả vỠ[Texture2D] của khung hình được cho."
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65396,7 +65544,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65405,86 +65553,86 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
#, fuzzy
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr "Nếu [code]true[/code] thì lật dá»c há»a tiết."
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
#, fuzzy
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65500,24 +65648,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65527,34 +65675,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65565,7 +65713,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65575,209 +65723,209 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
#, fuzzy
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr "Nếu [code]true[/code] thì lật dá»c há»a tiết."
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65786,672 +65934,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68755,8 +68903,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69285,54 +69433,57 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "Trả vỠ[Texture2D] của khung hình được cho."
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
#, fuzzy
msgid "If [code]true[/code], the user can resize the window."
msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69603,6 +69754,10 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "Trả vỠ[Texture2D] của khung hình được cho."
+
#~ msgid ""
#~ "Easing function, based on exponent. The curve values are: 0 is constant, "
#~ "1 is linear, 0 to 1 is ease-in, 1+ is ease out. Negative values are in-"
diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po
index 8941b39964..987dbc88ad 100644
--- a/doc/translations/zh_CN.po
+++ b/doc/translations/zh_CN.po
@@ -9,9 +9,9 @@
# 懵逼Kitty <m1330586660@163.com>, 2020, 2021.
# MintSoda <lionlxh@qq.com>, 2020.
# Gardner Belgrade <hapenia@sina.com>, 2020.
-# WangYi13 <wyi13@outlook.com>, 2020.
+# WangYi13 <wyi13@outlook.com>, 2020, 2021.
# UnluckyNinja <unluckyninja1994@gmail.com>, 2020.
-# idleman <1524328475@qq.com>, 2020.
+# idleman <1524328475@qq.com>, 2020, 2021.
# Oberon Zheng <360119124@qq.com>, 2020, 2021.
# li yong <liyonghelpme@gmail.com>, 2020.
# Pierre Stempin <pierre.stempin@gmail.com>, 2020.
@@ -56,8 +56,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2021-10-07 08:24+0000\n"
-"Last-Translator: Magian <magian1127@gmail.com>\n"
+"PO-Revision-Date: 2021-10-16 13:25+0000\n"
+"Last-Translator: WangYi13 <wyi13@outlook.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot-class-reference/zh_Hans/>\n"
"Language: zh_CN\n"
@@ -160,7 +160,6 @@ msgstr ""
"支æŒçš„颜色å称与 [Color] 中定义的常é‡ç›¸åŒã€‚"
#: modules/gdscript/doc_classes/@GDScript.xml:45
-#, fuzzy
msgid ""
"Returns the absolute value of parameter [code]s[/code] (i.e. positive "
"value).\n"
@@ -168,14 +167,12 @@ msgid ""
"a = abs(-1) # a is 1\n"
"[/codeblock]"
msgstr ""
-"è¿”å›žå‚æ•° [code]s[/code] çš„ç»å¯¹å€¼ï¼ˆå³éžè´Ÿå€¼ï¼Œé€‚用于整数和浮点数)。\n"
+"è¿”å›žå‚æ•° [code]s[/code] çš„ç»å¯¹å€¼ï¼ˆå³æ­£å€¼ï¼‰ã€‚\n"
"[codeblock]\n"
-"# a is 1\n"
-"a = abs(-1)\n"
+"a = abs(-1) # a 是 1\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:55
-#, 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 "
@@ -186,14 +183,15 @@ msgid ""
"c = acos(0.866025)\n"
"[/codeblock]"
msgstr ""
-"以弧度返回 [code]s[/code] çš„å余弦值。用于求余弦 [code]s[/code] 的角度。\n"
+"以弧度返回 [code]s[/code] çš„å余弦值。用于求余弦 [code]s[/code] 的角度。"
+"[code]s[/code] 必须在 [code]-1.0[/code] 到 [code]1.0[/code] 之间(闭区间),"
+"å¦åˆ™ [method acos] 将返回 [constant NAN]。\n"
"[codeblock]\n"
-"# c is 0.523599 or 30 degrees if converted with rad2deg(s)\n"
+"# c 是 0.523599,如果用 rad2deg(s) 转æ¢ä¸€ä¸‹å°±æ˜¯ 30 度\n"
"c = acos(0.866025)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:66
-#, 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 "
@@ -204,14 +202,15 @@ msgid ""
"s = asin(0.5)\n"
"[/codeblock]"
msgstr ""
-"以弧度返回 [code]s[/code] çš„åæ­£å¼¦å€¼ã€‚用于求正弦 [code]s[/code] 的角度。\n"
+"以弧度返回 [code]s[/code] çš„åæ­£å¼¦å€¼ã€‚用于求正弦 [code]s[/code] 的角度。"
+"[code]s[/code] 必须在 [code]-1.0[/code] 到 [code]1.0[/code] 之间(闭区间),"
+"å¦åˆ™ [method asin] 将返回 [constant NAN]。\n"
"[codeblock]\n"
-"# s is 0.523599 or 30 degrees if converted with rad2deg(s)\n"
+"# s 是 0.523599,如果用 rad2deg(s) 转æ¢ä¸€ä¸‹å°±æ˜¯ 30 度\n"
"s = asin(0.5)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:78
-#, 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 "
@@ -237,21 +236,23 @@ msgid ""
"a message with clarifying details\n"
"[/codeblock]"
msgstr ""
-"断言æ¡ä»¶ [code]condition[/code] 为 [code]true[/code] 。如果æ¡ä»¶ "
-"[code]condition[/code] 为 [code]false[/code] ,则会生æˆä¸€ä¸ªé”™è¯¯ï¼Œç¨‹åºå°†åœæ­¢è¿"
-"行,直到æ¢å¤ã€‚ä»…åœ¨è°ƒè¯•æž„å»ºç‰ˆæœ¬ã€æˆ–在从编辑器è¿è¡Œæ¸¸æˆæ—¶ï¼Œæ‰§è¡Œã€‚将其用于调试目"
-"的,以确ä¿åœ¨å¼€å‘è¿‡ç¨‹ä¸­è¯­å¥æ˜¯ [code]true[/code]。\n"
-"如果给出å¯é€‰çš„ä¿¡æ¯ [code]message[/code] 傿•°ï¼Œåœ¨é€šç”¨çš„â€œæ–­è¨€å¤±è´¥â€æ¶ˆæ¯ä¹‹å¤–,还"
-"会显示该信æ¯ã€‚您å¯ä»¥ä½¿ç”¨å®ƒæ¥æä¾›å…³äºŽæ–­è¨€å¤±è´¥åŽŸå› çš„å…¶ä»–è¯¦ç»†ä¿¡æ¯ã€‚\n"
-"[codeblock]\n"
-"# Imagine we always want speed to be between 0 and 20\n"
+"断言æ¡ä»¶ [code]condition[/code] 为 [code]true[/code]。如果æ¡ä»¶ "
+"[code]condition[/code] 为 [code]false[/code] ,则会生æˆä¸€ä¸ªé”™è¯¯ã€‚如果是从编辑"
+"器è¿è¡Œçš„,正在è¿è¡Œçš„项目还会被暂åœï¼Œç›´åˆ°æ‰‹åЍæ¢å¤ã€‚该函数å¯ä»¥ä½œä¸º [method "
+"push_error] 的加强版,用于å‘项目开å‘者或æ’件用户报错。\n"
+"[b]注æ„:[/b] 出于对性能的考虑,[method assert] 中的代ç åªä¼šåœ¨è°ƒè¯•版本或者从"
+"编辑器è¿è¡Œé¡¹ç›®æ—¶æ‰§è¡Œã€‚所以ä¸è¦åœ¨ [method assert] 调用中加入具有副作用的代ç ã€‚"
+"å¦åˆ™ï¼Œé¡¹ç›®åœ¨ä»¥å‘布模å¼å¯¼å‡ºåŽå°†æœ‰ä¸ä¸€è‡´çš„行为。\n"
+"如果给出了å¯é€‰çš„ [code]message[/code] 傿•°ï¼Œåœ¨é€šç”¨çš„“Assertion failedâ€æ¶ˆæ¯ä¹‹"
+"外,还会显示该信æ¯ã€‚ä½ å¯ä»¥ä½¿ç”¨å®ƒæ¥æä¾›å…³äºŽæ–­è¨€å¤±è´¥åŽŸå› çš„å…¶ä»–è¯¦ç»†ä¿¡æ¯ã€‚\n"
+"[codeblock]\n"
+"# 比如说我们希望 speed 始终在 0 和 20 之间\n"
"speed = -10\n"
-"assert(speed < 20) # True, the program will continue\n"
-"assert(speed >= 0) # False, the program will stop\n"
-"assert(speed >= 0 && speed < 20) # You can also combine the two conditional "
-"statements in one check\n"
-"assert(speed < 20, \"speed = %f, but the speed limit is 20\" % speed) # Show "
-"a message with clarifying details\n"
+"assert(speed < 20) # True,程åºä¼šç»§ç»­æ‰§è¡Œ\n"
+"assert(speed >= 0) # False,程åºä¼šåœæ­¢\n"
+"assert(speed >= 0 && speed < 20) # 你还å¯ä»¥åœ¨åŒä¸€æ¬¡åˆ¤æ–­ä¸­åˆå¹¶ä¸¤ä¸ªæ¡ä»¶è¯­å¥\n"
+"assert(speed < 20, \"speed = %f, but the speed limit is 20\" % speed) # 在消"
+"æ¯ä¸­æ˜¾ç¤ºè¯¦æƒ…\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:95
@@ -314,7 +315,6 @@ msgstr ""
"示。"
#: modules/gdscript/doc_classes/@GDScript.xml:135
-#, fuzzy
msgid ""
"Rounds [code]s[/code] upward (towards positive infinity), returning the "
"smallest whole number that is not less than [code]s[/code].\n"
@@ -327,9 +327,10 @@ msgstr ""
"å°† [code]s[/code] å‘上èˆå…¥ï¼ˆæœæ­£æ— ç©·å¤§ï¼‰ï¼Œè¿”回ä¸å°äºŽ [code]s[/code] çš„æœ€å°æ•´"
"数。\n"
"[codeblock]\n"
-"i = ceil(1.45) # i is 2\n"
-"i = ceil(1.001) # i is 2\n"
-"[/codeblock]"
+"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:147
msgid ""
@@ -351,7 +352,6 @@ msgstr ""
"这与 [method ord] 相å。"
#: modules/gdscript/doc_classes/@GDScript.xml:162
-#, fuzzy
msgid ""
"Clamps [code]value[/code] and returns a value not less than [code]min[/code] "
"and not more than [code]max[/code].\n"
@@ -361,16 +361,12 @@ msgid ""
"a = clamp(15, 1, 20) # a is 15\n"
"[/codeblock]"
msgstr ""
-"钳制 [code]value[/code],返回一个ä¸ä½ŽäºŽ [code]min[/code] 且ä¸é«˜äºŽ [code]max[/"
+"钳制 [code]value[/code],返回一个ä¸å°äºŽ [code]min[/code] 且ä¸å¤§äºŽ [code]max[/"
"code]的值。\n"
"[codeblock]\n"
-"speed = 1000\n"
-"# a is 20\n"
-"a = clamp(speed, 1, 20)\n"
-"\n"
-"speed = -10\n"
-"# a is 1\n"
-"a = clamp(speed, 1, 20)\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:175
@@ -398,7 +394,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:190
-#, fuzzy
msgid ""
"Returns the cosine of angle [code]s[/code] in radians.\n"
"[codeblock]\n"
@@ -408,11 +403,11 @@ msgid ""
msgstr ""
"返回弧度角 [code]s[/code] 的正弦值。\n"
"[codeblock]\n"
-"sin(0.523599) # Returns 0.5\n"
+"a = cos(TAU) # a = 1.0\n"
+"a = cos(PI) # a = -1.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:201
-#, fuzzy
msgid ""
"Returns the hyperbolic cosine of [code]s[/code] in radians.\n"
"[codeblock]\n"
@@ -421,8 +416,7 @@ msgid ""
msgstr ""
"返回弧度角 [code]s[/code] çš„åŒæ›²ä½™å¼¦å€¼ã€‚\n"
"[codeblock]\n"
-"# Prints 1.543081\n"
-"print(cosh(1))\n"
+"print(cosh(1)) # æ‰“å° 1.543081\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:211
@@ -431,10 +425,9 @@ msgstr "从分è´è½¬æ¢ä¸ºçº¿æ€§èƒ½é‡ï¼ˆéŸ³é¢‘)。"
#: modules/gdscript/doc_classes/@GDScript.xml:218
msgid "Deprecated alias for [method step_decimals]."
-msgstr ""
+msgstr "弃用的[method step_decimals]的别å。"
#: modules/gdscript/doc_classes/@GDScript.xml:227
-#, fuzzy
msgid ""
"[b]Note:[/b] [code]dectime[/code] has been deprecated and will be removed in "
"Godot 4.0, please use [method move_toward] instead.\n"
@@ -444,15 +437,14 @@ msgid ""
"a = dectime(60, 10, 0.1)) # a is 59.0\n"
"[/codeblock]"
msgstr ""
-"返回 [code]value[/code] å‡åŽ» [code]step[/code] * [code]amount[/code] 之åŽçš„结"
-"果。\n"
+"[b]注æ„:[/b][code]dectime[/code]已被废弃,将在Godot 4.0中删除,请使用"
+"[method move_toward]代替。\n"
+"返回值[code]value[/code]å‡åŽ»[code]step[/code]*[code]amount[/code]的结果。\n"
"[codeblock]\n"
-"# a = 59\n"
-"a = dectime(60, 10, 0.1))\n"
+"a = dectime(60, 10, 0.1))# a是59.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:238
-#, fuzzy
msgid ""
"Converts an angle expressed in degrees to radians.\n"
"[codeblock]\n"
@@ -461,16 +453,14 @@ msgid ""
msgstr ""
"将以度表示的角度转æ¢ä¸ºå¼§åº¦ã€‚\n"
"[codeblock]\n"
-"# r is 3.141593\n"
-"r = deg2rad(180)\n"
+"r = deg2rad(180) # r = 3.141593\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:248
-#, fuzzy
msgid ""
"Converts a dictionary (previously created with [method inst2dict]) back to "
"an instance. Useful for deserializing."
-msgstr "将先å‰ç”±å®žä¾‹è½¬æ¢æˆçš„字典,å†è½¬æ¢å›žå®žä¾‹ã€‚用于ååºåˆ—化。"
+msgstr "将字典(之å‰ä½¿ç”¨ [method inst2dict] 创建的)转æ¢å›žå®žä¾‹ã€‚用于ååºåˆ—化。"
#: modules/gdscript/doc_classes/@GDScript.xml:256
msgid ""
@@ -492,6 +482,23 @@ msgid ""
"See also [method smoothstep]. If you need to perform more advanced "
"transitions, use [Tween] or [AnimationPlayer]."
msgstr ""
+"基于用曲线[code]curve[/code]定义的缓和函数,返回[code]x[/code]的 \"缓和 "
+"\"值。这个缓和函数是基于指数。曲线[code]curve[/code]å¯ä»¥æ˜¯ä»»ä½•浮点数,具体数"
+"值会导致以下行为。\n"
+"[codeblock]\n"
+"- 低于-1.0(独å ï¼‰ã€‚缓进缓出\n"
+"- 1.0:线性\n"
+"- 在-1.0å’Œ0.0之间(独å ï¼‰ã€‚缓出-è¿›\n"
+"- 0.0: æ’定\n"
+"- 在0.0到1.0之间(ä¸åŒ…括)。缓进\n"
+"- 1.0:线性\n"
+"- 大于1.0(ä¸åŒ…括)。缓出\n"
+"[/codeblock]\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/3.4/img/"
+"ease_cheatsheet.png]ease()曲线值作弊表[/url]\n"
+"也请看[方法smoothstep]ã€‚å¦‚æžœä½ éœ€è¦æ‰§è¡Œæ›´é«˜çº§çš„转场,请使用[Tween]或"
+"[AnimationPlayer]。(å¦‚æžœåœ°å€æ— æ³•访问用raw.sevencdn.com替æ¢raw."
+"githubusercontent.comå¯åŠ é€Ÿè®¿é—®)。"
#: modules/gdscript/doc_classes/@GDScript.xml:274
msgid ""
@@ -512,7 +519,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:286
-#, fuzzy
msgid ""
"Rounds [code]s[/code] downward (towards negative infinity), returning the "
"largest whole number that is not more than [code]s[/code].\n"
@@ -529,16 +535,15 @@ msgstr ""
"å‘下èˆå…¥ [code]s[/code] (æœè´Ÿæ— ç©·å¤§ï¼‰ï¼Œè¿”回ä¸å¤§äºŽ [code]s[/code] 的最大整"
"数。\n"
"[codeblock]\n"
-"# a is 2.0\n"
-"a = floor(2.99)\n"
-"# a is -3.0\n"
-"a = floor(-2.99)\n"
+"a = floor(2.45) # a = 2.0\n"
+"a = floor(2.99) # a = 2.0\n"
+"a = floor(-2.99) # a = -3.0\n"
"[/codeblock]\n"
-"[b]注æ„:[/b] 这个方法返回一个浮点值,如果需è¦è¿”回一个整数,å¯ä»¥ç›´æŽ¥ä½¿ç”¨ "
-"[code]int(s)[/code] 。"
+"å¦è§ [method ceil]ã€[method round]ã€[method stepify] å’Œ [int]。\n"
+"[b]注æ„:[/b] 该方法返回一个浮点数。如果你需è¦ä¸€ä¸ªæ•´æ•°ï¼Œè€Œ [code]s[/code] 是"
+"一个éžè´Ÿæ•°ï¼Œä½ å¯ä»¥ç›´æŽ¥ä½¿ç”¨ [code]int(s)[/code]。"
#: modules/gdscript/doc_classes/@GDScript.xml:301
-#, fuzzy
msgid ""
"Returns the floating-point remainder of [code]a/b[/code], keeping the sign "
"of [code]a[/code].\n"
@@ -549,13 +554,11 @@ msgid ""
msgstr ""
"返回 [code]a/b[/code] 的浮点型余数, 符å·ä¸Ž [code]a[/code]一致。\n"
"[codeblock]\n"
-"# Remainder is 1.5\n"
-"var remainder = fmod(7, 5.5)\n"
+"r = fmod(7, 5.5) # r = 1.5\n"
"[/codeblock]\n"
"如果对整数进行å–ä½™æ“作,请使用æ“作符 % 。"
#: modules/gdscript/doc_classes/@GDScript.xml:313
-#, fuzzy
msgid ""
"Returns the floating-point modulus of [code]a/b[/code] that wraps equally in "
"positive and negative.\n"
@@ -575,26 +578,21 @@ msgid ""
" 1.5 0.0 0.0\n"
"[/codeblock]"
msgstr ""
-"返回 [code]a/b[/code] 的浮点型余数,该浮点型余数éžè´Ÿã€‚\n"
+"返回[code]a/b[/code]çš„æµ®ç‚¹æ¨¡æ•°ï¼Œè¯¥æ¨¡æ•°åœ¨æ­£æ•°å’Œè´Ÿæ•°ä¸­å‡æœ‰åŒ…裹。\n"
"[codeblock]\n"
-"var i = -6\n"
-"while i < 5:\n"
-" prints(i, fposmod(i, 3))\n"
-" i += 1\n"
+"for i in 7:\n"
+" var x = 0.5 * i - 1.5\n"
+" print(\"%4.1f %4.1f %4.1f\" % [x, fmod(x, 1.5), fposmod(x, 1.5)] )\n"
"[/codeblock]\n"
-"Produces:\n"
+"产生的结果:\n"
"[codeblock]\n"
-"-6 0\n"
-"-5 1\n"
-"-4 2\n"
-"-3 0\n"
-"-2 1\n"
-"-1 2\n"
-"0 0\n"
-"1 1\n"
-"2 2\n"
-"3 0\n"
-"4 1\n"
+"-1.5 -0.0 0.0\n"
+"-1.0 -1.0 0.5\n"
+"-0.5 -0.5 1.0\n"
+" 0.0 0.0 0.0\n"
+" 0.5 0.5 0.5\n"
+" 1.0 1.0 1.0\n"
+" 1.5 0.0 0.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:336
@@ -805,7 +803,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:482
-#, fuzzy
msgid ""
"Linearly interpolates between two values by a normalized value. This is the "
"opposite of [method inverse_lerp].\n"
@@ -819,14 +816,15 @@ msgid ""
"lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Returns Vector2(2, 3.5)\n"
"[/codeblock]"
msgstr ""
-"通过归一化值在两个值之间线性æ’值。这与 [method inverse_lerp] 相å。\n"
-"å¦‚æžœå‚æ•° [code]from[/code] å’Œ [code]to[/code] 的类型为 [int]或 [float],则返"
-"回值为 [float]。\n"
-"如果两者都是相åŒçš„å‘é‡ç±»åž‹ï¼ˆ[Vector2],[Vector3]或[Color]),则返回值将是相åŒ"
-"的类型([code]lerp[/code] ç„¶åŽè°ƒç”¨å‘é‡ç±»åž‹çš„ [code]lerp[/code] 方法)。\n"
+"用一个归一化的值在两个值之间进行线性æ’值。这与[method inverse_lerp]相å。\n"
+"如果[code]from[/code]å’Œ[code]to[/code]傿•°ç±»åž‹æ˜¯[int]或[float],返回值是"
+"[float]。\n"
+"如果两者都是相åŒçš„矢é‡ç±»åž‹ï¼ˆ[Vector2]ã€[Vector3]或[Color]),返回值将是相åŒçš„"
+"类型([code]lerp[/code]ç„¶åŽè°ƒç”¨è¯¥çŸ¢é‡ç±»åž‹çš„[code]linear_interpolate[/code]æ–¹"
+"法)。\n"
"[codeblock]\n"
-"lerp(0, 4, 0.75) # Returns 3.0\n"
-"lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Returns Vector2(2, 3.5)\n"
+"lerp(0, 4, 0.75) # 返回3.0\n"
+"lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # 返回 Vector2(2, 3.5)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:497
@@ -886,7 +884,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:527
-#, fuzzy
msgid ""
"Loads a resource from the filesystem located at [code]path[/code]. The "
"resource is loaded on the method call (unless it's referenced already "
@@ -908,19 +905,18 @@ msgid ""
"This method is a simplified version of [method ResourceLoader.load], which "
"can be used for more advanced scenarios."
msgstr ""
-"从ä½äºŽ [code]path[/code] 的文件系统中加载资æºã€‚资æºè¢«åŠ è½½åˆ°æ–¹æ³•è°ƒç”¨ä¸Šï¼ˆé™¤éžå·²"
-"ç»åœ¨å…¶ä»–地方引用了它,例如在å¦ä¸€ä¸ªè„šæœ¬æˆ–åœºæ™¯ä¸­ï¼‰ï¼Œè¿™å¯èƒ½ä¼šå¯¼è‡´è½»å¾®çš„延迟,尤"
-"其是在加载场景时。为é¿å…多次加载时ä¸å¿…è¦çš„延迟,请将资æºå­˜å‚¨åœ¨å˜é‡ä¸­æˆ–使用 "
-"[method preload]。\n"
-"[b]注æ„:[/b] å¯ä»¥é€šè¿‡å³å‡»æ–‡ä»¶ç³»ç»Ÿåœé é¢æ¿ä¸­çš„资æºå¹¶é€‰æ‹©â€œå¤åˆ¶è·¯å¾„â€ï¼Œæˆ–者将文"
-"件从文件系统åœé é¢æ¿æ‹–到脚本中æ¥èŽ·å¾—èµ„æºè·¯å¾„。\n"
+"从ä½äºŽ[code]path[/code]的文件系统中加载一个资æºã€‚该资æºåœ¨æ–¹æ³•调用时被加载(除"
+"éžå®ƒå·²ç»åœ¨å…¶ä»–地方被引用了,例如在å¦ä¸€ä¸ªè„šæœ¬æˆ–åœºæ™¯ä¸­ï¼‰ï¼Œè¿™å¯èƒ½ä¼šå¯¼è‡´è½»å¾®çš„å»¶"
+"迟,特别是在加载场景时。为了é¿å…在多次加载东西时出现ä¸å¿…è¦çš„延迟,å¯ä»¥å°†èµ„æº"
+"存储在一个å˜é‡ä¸­ï¼Œæˆ–者使用预加载[method preload]。\n"
+"[b]注æ„:[/b]资æºè·¯å¾„å¯ä»¥é€šè¿‡å³é”®å•击文件系统åœé åŒºä¸­çš„资æºå¹¶é€‰æ‹© \"å¤åˆ¶è·¯å¾„ "
+"\"或将文件从文件系统åœé åŒºæ‹–到脚本中获得。\n"
"[codeblock]\n"
-"# Load a scene called main located in the root of the project directory and "
-"cache it in a variable.\n"
-"var main = load(\"res://main.tscn\") # main will contain a PackedScene "
-"resource.\n"
+"# 加载ä½äºŽé¡¹ç›®ç›®å½•根部的一个å为main的场景,并将其缓存在一个å˜é‡ä¸­ã€‚\n"
+"var main = load(\"res://main.tscn\") # main将包å«ä¸€ä¸ªPackedScene资æºã€‚\n"
"[/codeblock]\n"
-"[b]é‡è¦ï¼š[/b] 路径必须是ç»å¯¹è·¯å¾„,本地路径åªä¼šè¿”回 [code]null[/code] 。"
+"[b]é‡è¦æç¤ºï¼š[/b]路径必须是ç»å¯¹çš„,本地路径将直接返回[code]null[/code]。\n"
+"这个方法是[method ResourceLoader.load]的简化版,它å¯ä»¥ç”¨äºŽæ›´é«˜çº§çš„场景。"
#: modules/gdscript/doc_classes/@GDScript.xml:541
msgid ""
@@ -1087,7 +1083,6 @@ msgstr ""
"code])转æ¢ä¸ºç¬›å¡å°”(cartesianï¼‰åæ ‡ç³»ï¼ˆXå’ŒY轴)。"
#: modules/gdscript/doc_classes/@GDScript.xml:648
-#, fuzzy
msgid ""
"Returns the integer modulus of [code]a/b[/code] that wraps equally in "
"positive and negative.\n"
@@ -1106,30 +1101,23 @@ msgid ""
" 3 0 0\n"
"[/codeblock]"
msgstr ""
-"返回 [code]a/b[/code] 的整数余数,该整数余数以正数和负数å‡ç­‰åœ°çŽ¯ç»•ã€‚\n"
+"返回[code]a/b[/code]的整数模,它在正数和负数中å‡ç­‰åœ°åŒ…裹。 \n"
"[codeblock]\n"
-"var i = -6\n"
-"while i < 5:\n"
-" prints(i, posmod(i, 3))\n"
-" i += 1\n"
+"for i in range(-3, 4):\n"
+" print(\"%2d %2d %2d\" % [i, i % 3, posmod(i, 3)] )\n"
"[/codeblock]\n"
-"Produces:\n"
+"结果:\n"
"[codeblock]\n"
-"-6 0\n"
-"-5 1\n"
-"-4 2\n"
-"-3 0\n"
-"-2 1\n"
-"-1 2\n"
-"0 0\n"
-"1 1\n"
-"2 2\n"
-"3 0\n"
-"4 1\n"
+"-3 0 0\n"
+"-2 -2 1\n"
+"-1 -1 2\n"
+" 0 0 0\n"
+" 1 1 1\n"
+" 2 2 2\n"
+" 3 0 0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:670
-#, fuzzy
msgid ""
"Returns the result of [code]base[/code] raised to the power of [code]exp[/"
"code].\n"
@@ -1137,9 +1125,9 @@ msgid ""
"pow(2, 5) # Returns 32.0\n"
"[/codeblock]"
msgstr ""
-"返回 [code]x[/code] æé«˜åˆ° [code]y[/code] 次幂的结果。\n"
+"返回[code]base[/code]的[code]exp[/code]次幂的结果。\n"
"[codeblock]\n"
-"pow(2, 5) # Returns 32\n"
+"pow(2, 5) # 返回 32.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:680
@@ -1181,6 +1169,14 @@ msgid ""
"distinguishes them from print messages used for debugging purposes, while "
"also displaying a stack trace when an error or warning is printed."
msgstr ""
+"以最佳方å¼å°†ä¸€ä¸ªæˆ–多个任æ„ç±»åž‹çš„å‚æ•°è½¬æ¢ä¸ºå­—符串,并将其打å°åˆ°æŽ§åˆ¶å°ã€‚\n"
+"[codeblock]\n"
+"a = [1, 2, 3]\n"
+"print(\"a\", \"=\", a) # Prints a=[1, 2, 3]\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b] 考虑使用[method push_error]å’Œ[method push_warning]æ¥æ‰“å°é”™è¯¯å’Œ"
+"警告信æ¯è€Œä¸æ˜¯[method print]。这将它们与用于调试的打å°ä¿¡æ¯åŒºåˆ†å¼€æ¥ï¼ŒåŒæ—¶åœ¨æ‰“"
+"å°é”™è¯¯æˆ–警告时还会显示堆栈跟踪。"
#: modules/gdscript/doc_classes/@GDScript.xml:702
msgid "Like [method print], but prints only when used in debug mode."
@@ -1263,7 +1259,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:758
-#, fuzzy
msgid ""
"Pushes an error message to Godot's built-in debugger and to the OS "
"terminal.\n"
@@ -1275,11 +1270,12 @@ msgid ""
"print an error message and pause project execution in debug builds, use "
"[code]assert(false, \"test error\")[/code] instead."
msgstr ""
-"å°†é”™è¯¯æ¶ˆæ¯æŽ¨é€åˆ°Godot的内置调试器和OS终端。\n"
+"å°†é”™è¯¯æ¶ˆæ¯æŽ¨é€åˆ° Godot 的内置调试器和 OS 终端。\n"
"[codeblock]\n"
-"push_error(\"test error\") # Prints \"test error\" to debugger and terminal "
-"as error call\n"
-"[/codeblock]"
+"push_error(\"test error\") # å‘è°ƒè¯•å™¨å’Œç»ˆç«¯æ‰“å° \"test error\" 作为错误调用\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b] ä»¥è¯¥æ–¹å¼æ‰“å°çš„错误ä¸ä¼šæš‚åœé¡¹ç›®çš„è¿è¡Œã€‚è¦åœ¨è°ƒè¯•版本中打å°é”™è¯¯æ¶ˆ"
+"æ¯å¹¶æš‚åœé¡¹ç›®è¿è¡Œï¼Œè¯·ä½¿ç”¨ [code]assert(false, \"test error\")[/code]。"
#: modules/gdscript/doc_classes/@GDScript.xml:769
msgid ""
@@ -1297,7 +1293,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:779
-#, fuzzy
msgid ""
"Converts an angle expressed in radians to degrees.\n"
"[codeblock]\n"
@@ -1306,7 +1301,7 @@ msgid ""
msgstr ""
"将以弧度表示的角度转æ¢ä¸ºåº¦ã€‚\n"
"[codeblock]\n"
-"rad2deg(0.523599) # Returns 30\n"
+"rad2deg(0.523599) # 返回 30.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:790
@@ -1345,7 +1340,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:815
-#, fuzzy
msgid ""
"Returns a random unsigned 32-bit integer. Use remainder to obtain a random "
"value in the interval [code][0, N - 1][/code] (where N is smaller than "
@@ -1360,10 +1354,10 @@ msgstr ""
"è¿”å›žä¸€ä¸ªéšæœºçš„æ— ç¬¦å·32使•´æ•°ã€‚使用余数获得区间 [code][0, N - 1][/code] (其中"
"Nå°äºŽ2^32ï¼‰çš„éšæœºå€¼ã€‚\n"
"[codeblock]\n"
-"randi() # Returns random integer between 0 and 2^32 - 1\n"
-"randi() % 20 # Returns random integer between 0 and 19\n"
-"randi() % 100 # Returns random integer between 0 and 99\n"
-"randi() % 100 + 1 # Returns random integer between 1 and 100\n"
+"randi() # 返回介于 0 到 2^32 - 1 ä¹‹é—´çš„éšæœºæ•´æ•°\n"
+"randi() % 20 # 返回介于 0 到 19ä¹‹é—´çš„éšæœºæ•´æ•°\n"
+"randi() % 100 # 返回介于 0 到 99 ä¹‹é—´çš„éšæœºæ•´æ•°\n"
+"randi() % 100 + 1 # 返回介于 0 到 100 ä¹‹é—´çš„éšæœºæ•´æ•°\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:827
@@ -1423,6 +1417,42 @@ msgid ""
"3\n"
"[/codeblock]"
msgstr ""
+"返回一个具有给定范围的数组。范围å¯ä»¥æ˜¯ä¸€ä¸ªå‚æ•°[code]N[/code](0到[code]N[/"
+"code]-1ï¼‰ï¼Œä¸¤ä¸ªå‚æ•°ï¼ˆåˆå§‹[code]initial[/code],最终[code]final -1[/code])或"
+"ä¸‰ä¸ªå‚æ•°ï¼ˆåˆå§‹[code]initial[/code],最终[code]final -1[/code],增é‡"
+"[code]increment[/code])。如果范围无效,返回一个空数组(例如,[code]range(2, "
+"5, -1)[/code]或[code]range(5, 5, 1)[/code])。\n"
+"返回一个具有给定范围的数组。[code]range()[/code]å¯ä»¥æ˜¯ä¸€ä¸ªå‚æ•°[code]N[/code]"
+"(0到[code]N[/code]-1ï¼‰ï¼Œä¸¤ä¸ªå‚æ•°ï¼ˆåˆå§‹[code]initial[/code],最终[code]final "
+"-1[/code]ï¼‰æˆ–ä¸‰ä¸ªå‚æ•°ï¼ˆåˆå§‹[code]initial[/code],最终[code]final -1[/code],"
+"增é‡[code]increment[/code])。增é‡[code]increment[/code]å¯ä»¥æ˜¯è´Ÿæ•°ã€‚如果增é‡"
+"[code]increment[/code]是负的,[code]final-1[/code]å°†å˜æˆ[code]final+1[/"
+"code]。å¦å¤–,åˆå§‹å€¼å¿…须大于最终值,循环æ‰èƒ½è¿è¡Œã€‚\n"
+"[codeblock]\n"
+"print(range(4))\n"
+"print(range(2, 5))\n"
+"print(range(0, 6, 2))\n"
+"[/codeblock]\n"
+"输出:\n"
+"[codeblock]\n"
+"[0, 1, 2, 3]\n"
+"[2, 3, 4]\n"
+"[0, 2, 4]\n"
+"[/codeblock]\n"
+"è¦å¯¹ä¸€ä¸ªæ•°ç»„[Array]进行逆å‘迭代,请使用:\n"
+"[codeblock]\n"
+"var array = [3, 6, 9]\n"
+"var i := array.size() - 1\n"
+"while i >= 0:\n"
+" print(array[i])\n"
+" i -= 1\n"
+"[/codeblock]\n"
+"输出:\n"
+"[codeblock]\n"
+"9\n"
+"6\n"
+"3\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:874
msgid ""
@@ -1439,7 +1469,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:884
-#, fuzzy
msgid ""
"Rounds [code]s[/code] to the nearest whole number, with halfway cases "
"rounded away from zero.\n"
@@ -1450,10 +1479,13 @@ msgid ""
"[/codeblock]\n"
"See also [method floor], [method ceil], [method stepify], and [int]."
msgstr ""
-"å°† [code]s[/code] èˆå…¥åˆ°æœ€æŽ¥è¿‘的整数,中间的情况èˆå…¥ä¸ºé›¶ã€‚\n"
+"å°† [code]s[/code] èˆå…¥åˆ°æœ€æŽ¥è¿‘的整数,中间情况å‘远离零的方å‘èˆå…¥ã€‚\n"
"[codeblock]\n"
-"round(2.6) # Returns 3\n"
-"[/codeblock]"
+"a = round(2.49) # a 是 2.0\n"
+"a = round(2.5) # a 是 3.0\n"
+"a = round(2.51) # a 是 3.0\n"
+"[/codeblock]\n"
+"å‚阅 [method floor]ã€[method ceil]ã€[method stepify]ã€ä»¥åŠ [int]。"
#: modules/gdscript/doc_classes/@GDScript.xml:897
msgid ""
@@ -1513,7 +1545,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:943
-#, fuzzy
msgid ""
"Returns the result of smoothly interpolating the value of [code]s[/code] "
"between [code]0[/code] and [code]1[/code], based on the where [code]s[/code] "
@@ -1538,23 +1569,28 @@ msgid ""
"smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, "
"-1.6521) return values[/url]"
msgstr ""
-"æ ¹æ® [code]s[/code] 相对于 [code]from[/code]å’Œ [code]to[/code] 的边缘所在的ä½"
-"置,返回在 [code]0[/code] å’Œ [code]1[/code] ä¹‹é—´å¹³æ»‘å†…æ’ [code]s[/code] 的值"
-"的结果 。\n"
-"如果 [code]s <= from[/code],则返回值为 [code]0[/code],如果 [code]s >= to[/"
-"code],则返回值为 [code]1[/code]。如果 [code]s[/code] ä½äºŽ [code]from[/code] "
-"å’Œ [code]to[/code] 之间,则返回值éµå¾ªS形曲线,该曲线将 [code]s[/code] 映射到 "
-"[code]0[/code] 和 [code]1[/code] 之间。\n"
-"该S形曲线是三次Hermite内æ’器,由 [code]f(s) = 3*s^2 - 2*s^3[/code] 给出。\n"
-"[codeblock]\n"
-"smoothstep(0, 2, -5.0) # Returns 0.0\n"
-"smoothstep(0, 2, 0.5) # Returns 0.15625\n"
-"smoothstep(0, 2, 1.0) # Returns 0.5\n"
-"smoothstep(0, 2, 2.0) # Returns 1.0\n"
-"[/codeblock]"
+"返回[code]s[/code]在[code]0[/code]å’Œ[code]1[/code]之间平滑æ’值的结果,基于"
+"[code]s[/code]相对于边从[code]from[/code]和到[code]to[/code]çš„ä½ç½®ã€‚\n"
+"如果[code]s <= from[/code],返回值为[code]0[/code];如果[code]s >= to[/"
+"code],返回值为[code]1[/code]。如果[code]s[/code]ä½äºŽ[code]from[/code]å’Œ"
+"[code]to[/code]之间,返回值éµå¾ªä¸€ä¸ªS型曲线,将[code]s[/code]映射到[code]0[/"
+"code]和[code]1[/code]之间。\n"
+"è¿™æ¡S形曲线是立方Hermiteæ’值器,由[code]f(y)=3*y^2-2*y^3[/code]给出,其中"
+"[code]y=(x-from)/(to-from)[/code]。\n"
+"[codeblock]。\n"
+"smoothstep(0, 2, -5.0) # 返回 0.0\n"
+"smoothstep(0, 2, 0.5) # 返回 0.15625\n"
+"smoothstep(0, 2, 1.0) # 返回 0.5\n"
+"smoothstep(0, 2, 2.0) # 返回1.0\n"
+"[/codeblock]\n"
+"与曲线值为[code]-1.6521[/code]的[method ease]相比,[method smoothstep]返回最"
+"平滑的曲线,导数没有çªç„¶å˜åŒ–ã€‚å¦‚æžœä½ éœ€è¦æ‰§è¡Œæ›´é«˜çº§çš„过渡,请使用[Tween]或"
+"[AnimationPlayer]。\n"
+"[url=https://raw.sevencdn.com/godotengine/godot-docs/3.4/img/"
+"smoothstep_ease_comparison.png]smoothstep()与 ease(x, -1.6521)返回值的比较[/"
+"url]"
#: modules/gdscript/doc_classes/@GDScript.xml:960
-#, fuzzy
msgid ""
"Returns the square root of [code]s[/code], where [code]s[/code] is a non-"
"negative number.\n"
@@ -1568,11 +1604,10 @@ msgstr ""
"[codeblock]\n"
"sqrt(9) # Returns 3\n"
"[/codeblock]\n"
-"[b]注æ„:[/b] [code]s[/code] 的负值返回NaN。如果需è¦è´Ÿè¾“入,请在 C# 中使用 "
+"[b]注æ„:[/b] [code]s[/code]的负值会返回NaN。如果你需è¦è´Ÿæ•°è¾“入,请在C#中使用"
"[code]System.Numerics.Complex[/code]。"
#: modules/gdscript/doc_classes/@GDScript.xml:971
-#, fuzzy
msgid ""
"Returns the position of the first non-zero digit, after the decimal point. "
"Note that the maximum return value is 10, which is a design decision in the "
@@ -1583,19 +1618,15 @@ msgid ""
"n = step_decimals(0.000000005) # n is 9\n"
"[/codeblock]"
msgstr ""
-"è¿”å›žå°æ•°ç‚¹åŽç¬¬ä¸€ä¸ªéžé›¶æ•°å­—çš„ä½ç½®ã€‚请注æ„,最大返回值为10,这是实现中的设计决"
-"策。\n"
+"è¿”å›žå°æ•°ç‚¹åŽç¬¬ä¸€ä¸ªéžé›¶æ•°å­—çš„ä½ç½®ã€‚æ³¨æ„æœ€å¤§è¿”回值是10,这是实现中的设计决"
+"定。\n"
"[codeblock]\n"
-"# n is 0\n"
-"n = step_decimals(5)\n"
-"# n is 4\n"
-"n = step_decimals(1.0005)\n"
-"# n is 9\n"
-"n = step_decimals(0.000000005)\n"
+"n = step_decimals(5) # n = 0\n"
+"n = step_decimals(1.0005) # n = 4\n"
+"n = step_decimals(0.000000005) # n = 9\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:984
-#, fuzzy
msgid ""
"Snaps float value [code]s[/code] to a given [code]step[/code]. This can also "
"be used to round a floating point number to an arbitrary number of "
@@ -1609,12 +1640,12 @@ msgstr ""
"将浮点值 [code]s[/code] 按照给定的 [code]step[/code] 对é½ã€‚也å¯ä»¥ç”¨äºŽå°†æµ®ç‚¹æ•°"
"å››èˆäº”入为任æ„çš„å°æ•°ä½æ•°ã€‚\n"
"[codeblock]\n"
-"stepify(100, 32) # Returns 96\n"
-"stepify(3.14159, 0.01) # Returns 3.14\n"
-"[/codeblock]"
+"stepify(100, 32) # 返回 96\n"
+"stepify(3.14159, 0.01) # 返回 3.14\n"
+"[/codeblock]\n"
+"å‚阅 [method ceil]ã€[method floor]ã€[method round]ã€ä»¥åŠ [int]。"
#: modules/gdscript/doc_classes/@GDScript.xml:995
-#, fuzzy
msgid ""
"Converts one or more arguments of any type to string in the best way "
"possible.\n"
@@ -1625,12 +1656,12 @@ msgid ""
"len(b) # Returns 12\n"
"[/codeblock]"
msgstr ""
-"以尽å¯èƒ½æœ€ä½³çš„æ–¹å¼å°†ä¸€ä¸ªæˆ–å¤šä¸ªå‚æ•°è½¬æ¢ä¸ºå­—符串。\n"
+"以最佳方å¼å°†ä¸€ä¸ªæˆ–多个任æ„ç±»åž‹çš„å‚æ•°è½¬æ¢ä¸ºå­—符串。\n"
"[codeblock]\n"
"var a = [10, 20, 30]\n"
"var b = str(a);\n"
-"len(a) # Returns 3\n"
-"len(b) # Returns 12\n"
+"len(a) # 返回 3\n"
+"len(b) # 返回 12\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:1008
@@ -1663,7 +1694,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:1030
-#, fuzzy
msgid ""
"Returns the hyperbolic tangent of [code]s[/code].\n"
"[codeblock]\n"
@@ -1671,10 +1701,10 @@ msgid ""
"b = tanh(a) # b is 0.6\n"
"[/codeblock]"
msgstr ""
-"返回 [code]s[/code] çš„åŒæ›²æ­£åˆ‡å€¼ã€‚\n"
+"返回[code]s[/code]çš„åŒæ›²æ­£åˆ‡ã€‚\n"
"[codeblock]\n"
-"a = log(2.0) # Returns 0.693147\n"
-"tanh(a) # Returns 0.6\n"
+"a = log(2.0) # a = 0.693147\n"
+"b = tanh(a) # b = 0.6\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:1041
@@ -1706,10 +1736,9 @@ msgstr ""
"[/codeblock]\n"
"[b]注æ„:[/b] JSON规范未定义整数或浮点类型,而仅定义了 [i]number[/i] 类型。 "
"因此,将 [Variant] 转æ¢ä¸ºJSON文本会将所有数值转æ¢ä¸º [float] 类型。\n"
-"å¦è¯·å‚è§ [JSON],以将 [Variant] 转æ¢ä¸ºJSON文本的å¦ä¸€ç§æ–¹æ³•。"
+"å¦è¯·å‚阅 [JSON],以将 [Variant] 转æ¢ä¸ºJSON文本的å¦ä¸€ç§æ–¹æ³•。"
#: modules/gdscript/doc_classes/@GDScript.xml:1057
-#, fuzzy
msgid ""
"Returns whether the given class exists in [ClassDB].\n"
"[codeblock]\n"
@@ -1719,8 +1748,8 @@ msgid ""
msgstr ""
"返回给定的类在 [ClassDB] 中是å¦å­˜åœ¨ã€‚\n"
"[codeblock]\n"
-"type_exists(\"Sprite2D\") # Returns true\n"
-"type_exists(\"Variant\") # Returns false\n"
+"type_exists(\"Sprite\") # 返回 true\n"
+"type_exists(\"Variant\") # 返回 false\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:1068
@@ -1937,6 +1966,42 @@ msgid ""
"[code]GDScriptFunctionState[/code]. Notice [code]yield(get_tree(), "
"\"idle_frame\")[/code] from the above example."
msgstr ""
+"åœæ­¢å‡½æ•°çš„æ‰§è¡Œå¹¶å°†å½“å‰çš„æš‚åœçжæ€è¿”回给调用函数。\n"
+"从调用者那里,对该状æ€è°ƒç”¨[method GDScriptFunctionState.resume]æ¥æ¢å¤æ‰§è¡Œã€‚è¿™"
+"å°†ä½¿è¯¥çŠ¶æ€æ— æ•ˆã€‚在æ¢å¤çš„函数中,[code]yield()[/code]返回传递给[code]resume()"
+"[/code]函数调用的东西。\n"
+"如果传递了一个对象和一个信å·ï¼Œå½“该对象å‘å‡ºç»™å®šçš„ä¿¡å·æ—¶ï¼Œå°±ä¼šæ¢å¤æ‰§è¡Œã€‚在这ç§"
+"情况下,[code]yield()[/code]返回传递给[code]emit_signal()[/code]çš„å‚æ•°ï¼Œå¦‚æžœ"
+"ä¿¡å·åªéœ€è¦ä¸€ä¸ªå‚数,则返回一个包å«ä¼ é€’ç»™[code]emit_signal()[/code]æ‰€æœ‰å‚æ•°çš„"
+"数组。\n"
+"你也å¯ä»¥ä½¿ç”¨[code]yield[/code]æ¥ç­‰å¾…一个函数完æˆã€‚\n"
+"[codeblock]\n"
+"func _ready():\n"
+" yield(countdown(), \"completed\")# 等待countdown()函数的完æˆ\n"
+" print('Ready')\n"
+"\n"
+"func countdown():\n"
+" yield(get_tree(), \"idle_frame\")# 返回一个GDScriptFunctionState对象给"
+"_ready()\n"
+" print(3)\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+" print(2)\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+" print(1)\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+"\n"
+"#打å°å‡ºæ¥ã€‚\n"
+"# 3\n"
+"# 2\n"
+"# 1\n"
+"#Ready\n"
+"[/codeblock]\n"
+"当对一个函数处于让步等待时,[code]completed[/code]ä¿¡å·å°†åœ¨å‡½æ•°è¿”回时自动å‘"
+"出。因此,它å¯ä»¥ä½œä¸º[code]signal[/code]çš„å‚æ•°ç”¨äºŽ[code]yield[/code]方法的æ¢"
+"å¤ã€‚\n"
+"为了在一个函数上让步等待,产生的函数也应该返回一个"
+"[code]GDScriptFunctionState[/code]。注æ„上é¢çš„例å­ä¸­[code]yield(get_tree(), "
+"\"idle_frame\")[/code]。"
#: modules/gdscript/doc_classes/@GDScript.xml:1207
msgid ""
@@ -1945,11 +2010,12 @@ msgid ""
msgstr "代表圆直径适åˆå…¶å‘¨é•¿å¤šå°‘å€çš„常é‡ã€‚这等效于 [code]TAU / 2[/code]。"
#: modules/gdscript/doc_classes/@GDScript.xml:1210
-#, fuzzy
msgid ""
"The circle constant, the circumference of the unit circle in radians. This "
"is equivalent to [code]PI * 2[/code], or 360 degrees in rotations."
-msgstr "圆常é‡ï¼Œå•ä½åœ†å‘¨çš„弧度。"
+msgstr ""
+"圆常数,å•ä½åœ†çš„周长,å•ä½ä¸ºå¼§åº¦ã€‚这相当于[code]PI * 2[/code],或360度的旋转"
+"值。"
#: modules/gdscript/doc_classes/@GDScript.xml:1213
msgid ""
@@ -1964,6 +2030,12 @@ msgid ""
"code] will not result in [constant INF] and will result in a run-time error "
"instead."
msgstr ""
+"正浮点无穷大。当除数为[code]0.0[/code]时,这就是浮点除法的结果。对于负无穷"
+"大,使用[code]-INF[/code]ã€‚å¦‚æžœåˆ†å­æ˜¯æ­£æ•°ï¼Œé™¤ä»¥[code]-0.0[/code]将导致负无穷"
+"大,所以除以[code]0.0[/code]与除以[code]-0.0[/code]ä¸åŒï¼ˆå°½ç®¡[code]0.0 == "
+"-0.0[/code]返回[code]true[/code])。\n"
+"[b]注æ„:[/b]æ•°å­—æ— ç©·å¤§åªæ˜¯æµ®ç‚¹æ•°çš„一个概念,对于整数æ¥è¯´æ²¡æœ‰å¯¹åº”的概念。整数"
+"除以[code]0[/code]ä¸ä¼šäº§ç”Ÿ[constant INF],而是会产生一个è¿è¡Œæ—¶é”™è¯¯ã€‚"
#: modules/gdscript/doc_classes/@GDScript.xml:1217
msgid ""
@@ -1977,27 +2049,31 @@ msgid ""
"[code]0[/code] will not result in [constant NAN] and will result in a run-"
"time error instead."
msgstr ""
+"\"䏿˜¯ä¸€ä¸ªæ•°å­—\",一个无效的浮点数值。[constant NAN]有特殊的属性,包括它ä¸ç­‰"
+"于自己([code]NAN == NAN[/code]返回[code]false[/code])。它是由一些无效的æ“作"
+"输出的,比如用浮点数[code]0.0[/code]除以[code]0.0[/code]。\n"
+"[b]注æ„:[/b]\"䏿˜¯ä¸€ä¸ªæ•° \"åªæ˜¯æµ®ç‚¹æ•°çš„æ¦‚念,对整数没有对应的概念。整数"
+"[code]0[/code]除以[code]0[/code]ä¸ä¼šäº§ç”Ÿ[constant NAN],而是会产生一个è¿è¡Œæ—¶"
+"错误。"
#: doc/classes/@GlobalScope.xml:4
msgid "Global scope constants and variables."
msgstr "全局范围常é‡å’Œå˜é‡ã€‚"
#: doc/classes/@GlobalScope.xml:7
-#, fuzzy
msgid ""
"Global scope constants and variables. This is all that resides in the "
"globals, constants regarding error codes, scancodes, property hints, etc.\n"
"Singletons are also documented here, since they can be accessed from "
"anywhere."
msgstr ""
-"全局范围常é‡å’Œå˜é‡ã€‚这就是所有驻留在全局å˜é‡ï¼Œæœ‰å…³é”™è¯¯ä»£ç ï¼Œé”®ç ï¼Œå±žæ€§æç¤ºç­‰"
-"的常é‡ä¸­çš„内容。\n"
-"å•例也记录在这里,因此å¯ä»¥ä»Žä»»ä½•地方访问它们。"
+"全局范围的常é‡å’Œå˜é‡ã€‚关于错误代ç ã€é”®ç›˜æ‰«æç (scancodes)ã€å±žæ€§æç¤ºç­‰çš„常é‡éƒ½"
+"驻留在这全局域中。\n"
+"å•例也被记录在这里,因为它们å¯ä»¥ä»Žä»»ä½•地方被访问。"
#: doc/classes/@GlobalScope.xml:16
-#, fuzzy
msgid "The [ARVRServer] singleton."
-msgstr "[XRServer]å•例。"
+msgstr "[ARVRServer]å•例。"
#: doc/classes/@GlobalScope.xml:19
msgid "The [AudioServer] singleton."
@@ -2016,9 +2092,8 @@ msgid "The [Engine] singleton."
msgstr "[Engine] å•例。"
#: doc/classes/@GlobalScope.xml:31
-#, fuzzy
msgid "The [Geometry] singleton."
-msgstr "[Geometry2D] å•例。"
+msgstr "[Geometry] å•例。"
#: doc/classes/@GlobalScope.xml:34
msgid "The [IP] singleton."
@@ -2057,9 +2132,8 @@ msgid "The [Marshalls] singleton."
msgstr "[Marshalls] å•例。"
#: doc/classes/@GlobalScope.xml:57
-#, fuzzy
msgid "The [EditorNavigationMeshGenerator] singleton."
-msgstr "[NavigationMeshGenerator] å•例。"
+msgstr "[EditorNavigationMeshGenerator] å•例。"
#: doc/classes/@GlobalScope.xml:60
msgid "The [OS] singleton."
@@ -2070,14 +2144,12 @@ msgid "The [Performance] singleton."
msgstr "[Performance] å•例。"
#: doc/classes/@GlobalScope.xml:66
-#, fuzzy
msgid "The [Physics2DServer] singleton."
-msgstr "[PhysicsServer2D] å•例。"
+msgstr "[Physics2DServer] å•例。"
#: doc/classes/@GlobalScope.xml:69
-#, fuzzy
msgid "The [PhysicsServer] singleton."
-msgstr "[PhysicsServer2D] å•例。"
+msgstr "[PhysicsServer] å•例。"
#: doc/classes/@GlobalScope.xml:72
msgid "The [ProjectSettings] singleton."
@@ -2100,9 +2172,8 @@ msgid "The [VisualScriptEditor] singleton."
msgstr "[VisualScriptEditor]å•例。"
#: doc/classes/@GlobalScope.xml:87
-#, fuzzy
msgid "The [VisualServer] singleton."
-msgstr "[DisplayServer] å•例。"
+msgstr "[VisualServer] å•例。"
#: doc/classes/@GlobalScope.xml:92
msgid "Left margin, usually used for [Control] or [StyleBox]-derived classes."
@@ -2187,7 +2258,6 @@ msgid "Tab key."
msgstr "Tab 键。"
#: doc/classes/@GlobalScope.xml:149
-#, fuzzy
msgid "Shift+Tab key."
msgstr "Shift + Tab 键。"
@@ -2446,21 +2516,19 @@ msgstr "峿–¹å‘键。"
#: doc/classes/@GlobalScope.xml:341
msgid ""
"Media back key. Not to be confused with the Back button on an Android device."
-msgstr ""
+msgstr "媒体返回键。ä¸è¦ä¸Žå®‰å“设备上的返回键相混淆。"
#: doc/classes/@GlobalScope.xml:344
-#, fuzzy
msgid "Media forward key."
-msgstr "媒体录制键。"
+msgstr "媒体å‰è¿›é”®ã€‚"
#: doc/classes/@GlobalScope.xml:347 doc/classes/@GlobalScope.xml:380
msgid "Media stop key."
msgstr "åª’ä½“åœæ­¢æ’­æ”¾é”®ã€‚"
#: doc/classes/@GlobalScope.xml:350
-#, fuzzy
msgid "Media refresh key."
-msgstr "媒体录制键。"
+msgstr "媒体刷新键。"
#: doc/classes/@GlobalScope.xml:353
msgid "Volume down key."
@@ -3178,8 +3246,8 @@ msgid ""
"KEY_MASK_CTRL] for system shortcuts as it handles all platforms correctly."
msgstr ""
"Command 键掩ç ã€‚在 macOS,这等åŒäºŽ [constant KEY_MASK_META]。而在其他平å°ï¼Œè¿™"
-"ç­‰åŒäºŽ [constant KEY_MASK_CTRL]ã€‚åœ¨ä½¿ç”¨æ­¤æŽ©ç æ—¶åº”优先使用 [constant "
-"KEY_MASK_META] 或 [constant KEY_MASK_CTRL] æ¥ä½œä¸ºç³»ç»Ÿå¿«æ·é”®ï¼Œä»¥ä¾¿èƒ½è®©æ‰€æœ‰å¹³å°"
+"ç­‰åŒäºŽ [constant KEY_MASK_CTRL]。相对使用 [constant KEY_MASK_META] 或 "
+"[constant KEY_MASK_CTRL] æ¥ä½œä¸ºç³»ç»Ÿå¿«æ·é”®ï¼Œåº”优先使用此掩ç ï¼Œä»¥ä¾¿èƒ½è®©æ‰€æœ‰å¹³å°"
"正确处ç†ã€‚"
#: doc/classes/@GlobalScope.xml:890
@@ -3247,361 +3315,332 @@ msgid "Extra mouse button 2 mask."
msgstr "é¼ æ ‡é¢å¤–é”®2掩ç ã€‚"
#: doc/classes/@GlobalScope.xml:938
-#, fuzzy
msgid "Invalid button or axis."
-msgstr "无效æŒç»­æ—¶é—´ã€‚"
+msgstr "无效按钮或轴。"
#: doc/classes/@GlobalScope.xml:941
msgid "Gamepad button 0."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮0。"
#: doc/classes/@GlobalScope.xml:944
-#, fuzzy
msgid "Gamepad button 1."
-msgstr "é¼ æ ‡é¢å¤–é”®1掩ç ã€‚"
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮1。"
#: doc/classes/@GlobalScope.xml:947
-#, fuzzy
msgid "Gamepad button 2."
-msgstr "é¼ æ ‡é¢å¤–é”®2掩ç ã€‚"
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮2。"
#: doc/classes/@GlobalScope.xml:950
msgid "Gamepad button 3."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮3。"
#: doc/classes/@GlobalScope.xml:953
msgid "Gamepad button 4."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮4。"
#: doc/classes/@GlobalScope.xml:956
msgid "Gamepad button 5."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮5。"
#: doc/classes/@GlobalScope.xml:959
msgid "Gamepad button 6."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮 6。"
#: doc/classes/@GlobalScope.xml:962
msgid "Gamepad button 7."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮 7。"
#: doc/classes/@GlobalScope.xml:965
msgid "Gamepad button 8."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮 8。"
#: doc/classes/@GlobalScope.xml:968
msgid "Gamepad button 9."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮 9。"
#: doc/classes/@GlobalScope.xml:971
msgid "Gamepad button 10."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮10。"
#: doc/classes/@GlobalScope.xml:974
msgid "Gamepad button 11."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮11。"
#: doc/classes/@GlobalScope.xml:977
msgid "Gamepad button 12."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮12。"
#: doc/classes/@GlobalScope.xml:980
msgid "Gamepad button 13."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮13。"
#: doc/classes/@GlobalScope.xml:983
msgid "Gamepad button 14."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮14。"
#: doc/classes/@GlobalScope.xml:986
msgid "Gamepad button 15."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮15。"
#: doc/classes/@GlobalScope.xml:989
msgid "Gamepad button 16."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮16。"
#: doc/classes/@GlobalScope.xml:992
msgid "Gamepad button 17."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮17。"
#: doc/classes/@GlobalScope.xml:995
msgid "Gamepad button 18."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮18。"
#: doc/classes/@GlobalScope.xml:998
msgid "Gamepad button 19."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮19。"
#: doc/classes/@GlobalScope.xml:1001
msgid "Gamepad button 20."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮20。"
#: doc/classes/@GlobalScope.xml:1004
msgid "Gamepad button 21."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮21。"
#: doc/classes/@GlobalScope.xml:1007
msgid "Gamepad button 22."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮22。"
#: doc/classes/@GlobalScope.xml:1010
-#, fuzzy
msgid "Represents the maximum number of joystick buttons supported."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨æŒ‰é’®æ•°é‡çš„æœ€å¤§å€¼ã€‚"
+msgstr "代表支æŒçš„æ“çºµæ†æŒ‰é’®çš„æœ€å¤§æ•°é‡ã€‚"
#: doc/classes/@GlobalScope.xml:1013
msgid "DualShock circle button."
-msgstr ""
+msgstr "DualShock 圆形按钮。"
#: doc/classes/@GlobalScope.xml:1016
msgid "DualShock X button."
-msgstr ""
+msgstr "DualShock X按钮。"
#: doc/classes/@GlobalScope.xml:1019
msgid "DualShock square button."
-msgstr ""
+msgstr "DualShock 方形按钮。"
#: doc/classes/@GlobalScope.xml:1022
msgid "DualShock triangle button."
-msgstr ""
+msgstr "DualShock 三角形按钮。"
#: doc/classes/@GlobalScope.xml:1025
-#, fuzzy
msgid "Xbox controller B button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 按钮 A。"
+msgstr "Xbox控制器B键。"
#: doc/classes/@GlobalScope.xml:1028
-#, fuzzy
msgid "Xbox controller A button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 按钮 A。"
+msgstr "Xbox控制器的A键。"
#: doc/classes/@GlobalScope.xml:1031
-#, fuzzy
msgid "Xbox controller X button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 按钮 A。"
+msgstr "Xbox控制器的X键。"
#: doc/classes/@GlobalScope.xml:1034
-#, fuzzy
msgid "Xbox controller Y button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 按钮 A。"
+msgstr "Xbox控制器的Y键。"
#: doc/classes/@GlobalScope.xml:1037
-#, fuzzy
msgid "Nintendo controller A button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 按钮 A。"
+msgstr "任天堂控制器A键。"
#: doc/classes/@GlobalScope.xml:1040
-#, fuzzy
msgid "Nintendo controller B button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 按钮 A。"
+msgstr "任天堂控制器B键。"
#: doc/classes/@GlobalScope.xml:1043
-#, fuzzy
msgid "Nintendo controller X button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 按钮 A。"
+msgstr "任天堂控制器的X键。"
#: doc/classes/@GlobalScope.xml:1046
-#, fuzzy
msgid "Nintendo controller Y button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 按钮 A。"
+msgstr "任天堂控制器Y键。"
#: doc/classes/@GlobalScope.xml:1049
msgid "Grip (side) buttons on a VR controller."
-msgstr ""
+msgstr "VRæŽ§åˆ¶å™¨ä¸Šçš„æ¡æŠŠï¼ˆä¾§é¢ï¼‰æŒ‰é’®ã€‚"
#: doc/classes/@GlobalScope.xml:1052
msgid "Push down on the touchpad or main joystick on a VR controller."
-msgstr ""
+msgstr "VR控制器上的触摸æ¿/主摇æ†çš„å‘下键。"
#: doc/classes/@GlobalScope.xml:1055
msgid "Trigger on a VR controller."
-msgstr ""
+msgstr "VR控制器上的扳机键。"
#: doc/classes/@GlobalScope.xml:1058
msgid ""
"A button on the right Oculus Touch controller, X button on the left "
"controller (also when used in OpenVR)."
-msgstr ""
+msgstr "å³ä¾§Oculus Touch控制器的A按钮,左控制器的X按钮(需当使用OpenVR时)。"
#: doc/classes/@GlobalScope.xml:1061
msgid ""
"B button on the right Oculus Touch controller, Y button on the left "
"controller (also when used in OpenVR)."
-msgstr ""
+msgstr "å³ä¾§Oculus Touch控制器的B按钮,左控制器的Y按钮(需当使用OpenVR时)。"
#: doc/classes/@GlobalScope.xml:1064
msgid "Menu button on either Oculus Touch controller."
-msgstr ""
+msgstr "ä»»æ„Oculus Touch控制器上的èœå•按钮。"
#: doc/classes/@GlobalScope.xml:1067
msgid "Menu button in OpenVR (Except when Oculus Touch controllers are used)."
-msgstr ""
+msgstr "OpenVR中的èœå•按钮(使用 Oculus Touch 控制器时除外)。"
#: doc/classes/@GlobalScope.xml:1070
msgid "Gamepad button Select."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮选择。"
#: doc/classes/@GlobalScope.xml:1073
msgid "Gamepad button Start."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„按钮开始。"
#: doc/classes/@GlobalScope.xml:1076
msgid "Gamepad DPad up."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„ DPad å‘上。"
#: doc/classes/@GlobalScope.xml:1079
msgid "Gamepad DPad down."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„ DPad å‘下。"
#: doc/classes/@GlobalScope.xml:1082
msgid "Gamepad DPad left."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„ DPad 左。"
#: doc/classes/@GlobalScope.xml:1085
msgid "Gamepad DPad right."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„ DPad å³ã€‚"
#: doc/classes/@GlobalScope.xml:1088
-#, fuzzy
msgid "Gamepad SDL guide button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL å‘导按钮。"
+msgstr "æ¸¸æˆæ‰‹æŸ„ SDL æŒ‡å—æŒ‰é’®ã€‚"
#: doc/classes/@GlobalScope.xml:1091
msgid "Gamepad SDL miscellaneous button."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„ SDL æ‚项按钮。"
#: doc/classes/@GlobalScope.xml:1094
-#, fuzzy
msgid "Gamepad SDL paddle 1 button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL æ–¹å‘左按钮。"
+msgstr "æ¸¸æˆæ‰‹æŸ„ SDL 拨片1按钮。"
#: doc/classes/@GlobalScope.xml:1097
-#, fuzzy
msgid "Gamepad SDL paddle 2 button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL æ–¹å‘左按钮。"
+msgstr "æ¸¸æˆæ‰‹æŸ„ SDL 拨片2按钮。"
#: doc/classes/@GlobalScope.xml:1100
-#, fuzzy
msgid "Gamepad SDL paddle 3 button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL æ–¹å‘左按钮。"
+msgstr "æ¸¸æˆæ‰‹æŸ„ SDL 拨片3按钮。"
#: doc/classes/@GlobalScope.xml:1103
-#, fuzzy
msgid "Gamepad SDL paddle 4 button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL æ–¹å‘左按钮。"
+msgstr "æ¸¸æˆæ‰‹æŸ„ SDL 拨片4按钮。"
#: doc/classes/@GlobalScope.xml:1106
-#, fuzzy
msgid "Gamepad SDL touchpad button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL æ–¹å‘上按钮。"
+msgstr "æ¸¸æˆæ‰‹æŸ„ SDL è§¦æ‘¸æ¿æŒ‰é’®ã€‚"
#: doc/classes/@GlobalScope.xml:1109
-#, fuzzy
msgid "Gamepad left Shoulder button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL 左肩按钮。"
+msgstr "æ¸¸æˆæ‰‹æŸ„左肩按钮。"
#: doc/classes/@GlobalScope.xml:1112
-#, fuzzy
msgid "Gamepad left trigger."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨å·¦æ‰³æœºè½´ã€‚"
+msgstr "æ¸¸æˆæ‰‹æŸ„的左扳机。"
#: doc/classes/@GlobalScope.xml:1115
msgid "Gamepad left stick click."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„左键点击。"
#: doc/classes/@GlobalScope.xml:1118
-#, fuzzy
msgid "Gamepad right Shoulder button."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL å³è‚©æŒ‰é’®ã€‚"
+msgstr "æ¸¸æˆæ‰‹æŸ„å³è‚©æŒ‰é’®ã€‚"
#: doc/classes/@GlobalScope.xml:1121
-#, fuzzy
msgid "Gamepad right trigger."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨å³æ‰³æœºè½´ã€‚"
+msgstr "æ¸¸æˆæ‰‹æŸ„çš„å³æ‰³æœºã€‚"
#: doc/classes/@GlobalScope.xml:1124
msgid "Gamepad right stick click."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„å³é”®å•击。"
#: doc/classes/@GlobalScope.xml:1127 doc/classes/@GlobalScope.xml:1160
msgid "Gamepad left stick horizontal axis."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„å·¦æ‘‡æ†æ°´å¹³è½´ã€‚"
#: doc/classes/@GlobalScope.xml:1130 doc/classes/@GlobalScope.xml:1163
-#, fuzzy
msgid "Gamepad left stick vertical axis."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨å·¦æ‘‡æ†X轴。"
+msgstr "æ¸¸æˆæ‰‹æŸ„左摇æ†åž‚直轴。"
#: doc/classes/@GlobalScope.xml:1133 doc/classes/@GlobalScope.xml:1166
msgid "Gamepad right stick horizontal axis."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„峿‘‡æ†æ°´å¹³è½´ã€‚"
#: doc/classes/@GlobalScope.xml:1136 doc/classes/@GlobalScope.xml:1169
-#, fuzzy
msgid "Gamepad right stick vertical axis."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨å³æ‘‡æ†X轴。"
+msgstr "æ¸¸æˆæ‰‹æŸ„峿‘‡æ†åž‚直轴。"
#: doc/classes/@GlobalScope.xml:1139
msgid "Generic gamepad axis 4."
-msgstr ""
+msgstr "é€šç”¨çš„æ¸¸æˆæ‰‹æŸ„è½´4。"
#: doc/classes/@GlobalScope.xml:1142
msgid "Generic gamepad axis 5."
-msgstr ""
+msgstr "é€šç”¨çš„æ¸¸æˆæ‰‹æŸ„è½´5。"
#: doc/classes/@GlobalScope.xml:1145
-#, fuzzy
msgid "Gamepad left trigger analog axis."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨å·¦æ‰³æœºè½´ã€‚"
+msgstr "æ¸¸æˆæ‰‹æŸ„å·¦è§¦å‘æ¨¡æ‹Ÿè½´ã€‚"
#: doc/classes/@GlobalScope.xml:1148
-#, fuzzy
msgid "Gamepad right trigger analog axis."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨å³æ‰³æœºè½´ã€‚"
+msgstr "æ¸¸æˆæ‰‹æŸ„å³è§¦å‘模拟轴。"
#: doc/classes/@GlobalScope.xml:1151
msgid "Generic gamepad axis 8."
-msgstr ""
+msgstr "é€šç”¨çš„æ¸¸æˆæ‰‹æŸ„è½´8。"
#: doc/classes/@GlobalScope.xml:1154
msgid "Generic gamepad axis 9."
-msgstr ""
+msgstr "é€šç”¨çš„æ¸¸æˆæ‰‹æŸ„è½´9。"
#: doc/classes/@GlobalScope.xml:1157
-#, fuzzy
msgid "Represents the maximum number of joystick axes supported."
-msgstr "支æŒçš„æœ€å¤§æŠ½å–次数。"
+msgstr "代表支æŒçš„æ“çºµæ†è½´çš„æœ€å¤§æ•°é‡ã€‚"
#: doc/classes/@GlobalScope.xml:1172
msgid "Gamepad left analog trigger."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„的左侧模拟触å‘器。"
#: doc/classes/@GlobalScope.xml:1175
msgid "Gamepad right analog trigger."
-msgstr ""
+msgstr "æ¸¸æˆæ‰‹æŸ„å³ä¾§æ¨¡æ‹Ÿè§¦å‘器。"
#: doc/classes/@GlobalScope.xml:1178
-#, fuzzy
msgid "VR Controller analog trigger."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨å·¦æ‰³æœºè½´ã€‚"
+msgstr "VR控制器模拟触å‘器。"
#: doc/classes/@GlobalScope.xml:1181
-#, fuzzy
msgid "VR Controller analog grip (side buttons)."
-msgstr "æ¸¸æˆæŽ§åˆ¶å™¨ SDL å‘导按钮。"
+msgstr "VRæŽ§åˆ¶å™¨çš„æ¨¡æ‹Ÿæ¡æŠŠï¼ˆä¾§é¢æŒ‰é’®ï¼‰ã€‚"
#: doc/classes/@GlobalScope.xml:1184
msgid ""
"OpenVR touchpad X axis (Joystick axis on Oculus Touch and Windows MR "
"controllers)."
-msgstr ""
+msgstr "OpenVR触摸æ¿X轴(Oculus Touchå’ŒWindows MR控制器的æ“纵æ†è½´ï¼‰ã€‚"
#: doc/classes/@GlobalScope.xml:1187
msgid ""
"OpenVR touchpad Y axis (Joystick axis on Oculus Touch and Windows MR "
"controllers)."
-msgstr ""
+msgstr "OpenVR触摸æ¿Y轴(Oculus Touchå’ŒWindows MR控制器的æ“纵æ†è½´ï¼‰ã€‚"
#: doc/classes/@GlobalScope.xml:1190
msgid "MIDI note OFF message."
@@ -3874,7 +3913,6 @@ msgstr ""
"å°å€¼ã€‚例如: [code]\"-360,360,1,or_greater,or_lesser\"[/code]。"
#: doc/classes/@GlobalScope.xml:1373
-#, fuzzy
msgid ""
"Hints that a float property should be within an exponential range specified "
"via the hint string [code]\"min,max\"[/code] or [code]\"min,max,step\"[/"
@@ -3883,10 +3921,10 @@ msgid ""
"above the max or below the min values. Example: [code]\"0.01,100,0.01,"
"or_greater\"[/code]."
msgstr ""
-"通过æç¤ºä¸²[code]\"min,max\"[/code] 或[code]\"min,max,step\"[/code]æ¥æç¤ºä¸€ä¸ª"
-"整数或浮点数属性应当è½åœ¨æŒ‡å®šçš„æŒ‡æ•°èŒƒå›´å†…。æç¤ºä¸²å¯ä»¥é€‰æ‹©æ€§åœ°åŒ…å« "
+"æç¤ºä¸€ä¸ªæ•´æ•°æˆ–浮点数属性应当è½åœ¨é€šè¿‡æç¤ºå­—符串[code]\"min,max\"[/code] 或"
+"[code]\"min,max,step\"[/code]æ¥æŒ‡å®šçš„范围内。æç¤ºå­—符串å¯ä»¥é€‰æ‹©æ€§åœ°åŒ…å« "
"[code]\"or_greater\"[/code] 与/或 [code]\"or_lesser\"[/code] æ¥å…许手动输入的"
-"值超过或低于最大最å°å€¼ã€‚例如: [code]\"0.01,100,0.01,or_greater\"[/code]。"
+"值超过最大值或低于最å°å€¼ã€‚例如: [code]\"0.01,100,0.01,or_greater\"[/code]。"
#: doc/classes/@GlobalScope.xml:1376
msgid ""
@@ -3983,15 +4021,14 @@ msgstr ""
"出å–å¾—æ–‡ä»¶è·¯å¾„çš„æ–‡ä»¶å¯¹è¯æ¡†ã€‚"
#: doc/classes/@GlobalScope.xml:1415
-#, fuzzy
msgid ""
"Hints that a property is an instance of a [Resource]-derived type, "
"optionally specified via the hint string (e.g. [code]\"Texture\"[/code]). "
"Editing it will show a popup menu of valid resource types to instantiate."
msgstr ""
-"æç¤ºä¸€ä¸ªå±žæ€§æ˜¯ä¸€ä¸ª[Resource]派生类的实例,å¯ä»¥é€šè¿‡æç¤ºä¸²æŒ‡å®šï¼ˆä¾‹å¦‚ "
-"[code]\"Texture2D\"[/code])。编辑该属性时会弹出一个列举了å¯ç”¨çš„待实例化的资"
-"æºç±»åž‹çš„èœå•。"
+"æç¤ºä¸€ä¸ªå±žæ€§æ˜¯ä¸€ä¸ª[Resource]派生类的实例,å¯ä»¥é€šè¿‡æç¤ºå­—符串指定(例如 "
+"[code]\"Texture\"[/code])。编辑该属性时会显示一个列举了å¯ç”¨çš„待实例化的资æº"
+"类型的弹出èœå•。"
#: doc/classes/@GlobalScope.xml:1418
msgid ""
@@ -4194,39 +4231,32 @@ msgid "Variable is of type [Array]."
msgstr "å˜é‡çš„类型为[Array]。"
#: doc/classes/@GlobalScope.xml:1562
-#, fuzzy
msgid "Variable is of type [PoolByteArray]."
-msgstr "å˜é‡çš„类型为[PackedByteArray]."
+msgstr "å˜é‡çš„类型是[PoolByteArray]。"
#: doc/classes/@GlobalScope.xml:1565
-#, fuzzy
msgid "Variable is of type [PoolIntArray]."
-msgstr "å˜é‡çš„类型为[Array]。"
+msgstr "å˜é‡çš„类型是[PoolIntArray]。"
#: doc/classes/@GlobalScope.xml:1568
-#, fuzzy
msgid "Variable is of type [PoolRealArray]."
-msgstr "å˜é‡çš„类型为[Array]。"
+msgstr "å˜é‡çš„类型是[PoolRealArray]。"
#: doc/classes/@GlobalScope.xml:1571
-#, fuzzy
msgid "Variable is of type [PoolStringArray]."
-msgstr "å˜é‡çš„类型为[PackedStringArray]。"
+msgstr "å˜é‡çš„类型是[PoolStringArray]。"
#: doc/classes/@GlobalScope.xml:1574
-#, fuzzy
msgid "Variable is of type [PoolVector2Array]."
-msgstr "å˜é‡çš„类型为[PackedVector2Array]。"
+msgstr "å˜é‡çš„类型是[PoolVector2Array]。"
#: doc/classes/@GlobalScope.xml:1577
-#, fuzzy
msgid "Variable is of type [PoolVector3Array]."
-msgstr "å˜é‡çš„类型为[PackedVector3Array]。"
+msgstr "å˜é‡çš„类型是[PoolVector3Array]。"
#: doc/classes/@GlobalScope.xml:1580
-#, fuzzy
msgid "Variable is of type [PoolColorArray]."
-msgstr "å˜é‡çš„类型为[PackedColorArray]。"
+msgstr "å˜é‡çš„类型是[PoolColorArray]。"
#: doc/classes/@GlobalScope.xml:1583
msgid "Represents the size of the [enum Variant.Type] enum."
@@ -4341,7 +4371,6 @@ msgid "Axis-Aligned Bounding Box."
msgstr "轴对é½åŒ…围盒。"
#: doc/classes/AABB.xml:7
-#, fuzzy
msgid ""
"[AABB] consists of a position, a size, and several utility functions. It is "
"typically used for fast overlap tests.\n"
@@ -4350,29 +4379,28 @@ msgid ""
"[b]Note:[/b] Unlike [Rect2], [AABB] does not have a variant that uses "
"integer coordinates."
msgstr ""
-"[Rect2] 由一个ä½ç½®ã€ä¸€ä¸ªå¤§å°å’Œå‡ ä¸ªå®žç”¨åŠŸèƒ½ç»„æˆã€‚它通常用于快速é‡å æµ‹è¯•。\n"
-"å®ƒä½¿ç”¨æµ®ç‚¹åæ ‡ã€‚"
+"[AABB] 由一个ä½ç½®ã€ä¸€ä¸ªå¤§å°å’Œå‡ ä¸ªå®žç”¨å‡½æ•°ç»„æˆã€‚它通常用于快速é‡å æµ‹è¯•。\n"
+"å®ƒä½¿ç”¨æµ®ç‚¹åæ ‡ã€‚[AABB]çš„2D对应物为[Rect2]。\n"
+"[b]注æ„:[/b] 与 [Rect2] ä¸åŒï¼Œ[AABB] æ²¡æœ‰ä½¿ç”¨æ•´æ•°åæ ‡çš„å˜ä½“。"
#: doc/classes/AABB.xml:12 doc/classes/Basis.xml:13 doc/classes/Plane.xml:10
#: doc/classes/Rect2.xml:12 doc/classes/Transform.xml:11
#: doc/classes/Transform2D.xml:11 doc/classes/Vector2.xml:11
#: doc/classes/Vector3.xml:11
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/math/index.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/math/index.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/math/index.html"
#: doc/classes/AABB.xml:13 doc/classes/Rect2.xml:13 doc/classes/Vector2.xml:12
#: doc/classes/Vector3.xml:12
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/math/vector_math.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/math/index.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/math/vector_math.html"
#: doc/classes/AABB.xml:14 doc/classes/Rect2.xml:14 doc/classes/Vector2.xml:13
#: doc/classes/Vector3.xml:13
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/math/vectors_advanced.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/math/index.html"
+msgstr ""
+"https://docs.godotengine.org/en/3.4/tutorials/math/vectors_advanced.html"
#: doc/classes/AABB.xml:22
msgid "Constructs an [AABB] from a position and size."
@@ -4503,13 +4531,12 @@ msgid "Beginning corner. Typically has values lower than [member end]."
msgstr "起点角。通常比 [member end] å°ã€‚"
#: doc/classes/AABB.xml:179 doc/classes/Rect2.xml:138
-#, fuzzy
msgid ""
"Size from [member position] to [member end]. Typically, all components are "
"positive.\n"
"If the size is negative, you can use [method abs] to fix it."
msgstr ""
-"ç”±[member position] 到 [member end] 的大å°ã€‚通常所有分é‡éƒ½æ˜¯æ­£æ•°ã€‚\n"
+"从[member position] 到 [member end] 的大å°ã€‚通常所有分é‡éƒ½æ˜¯æ­£æ•°ã€‚\n"
"如果大å°ä¸ºè´Ÿï¼Œå¯ä»¥ç”¨ [method abs] 修正。"
#: doc/classes/AcceptDialog.xml:4
@@ -4525,7 +4552,6 @@ msgstr ""
"åŒã€‚"
#: doc/classes/AcceptDialog.xml:18
-#, fuzzy
msgid ""
"Adds a button with label [code]text[/code] and a custom [code]action[/code] "
"to the dialog and returns the created button. [code]action[/code] will be "
@@ -4536,36 +4562,46 @@ msgid ""
"this method from the dialog."
msgstr ""
"å‘å¯¹è¯æ¡†ä¸­æ·»åŠ ä¸€ä¸ªå¸¦æœ‰æ ‡ç­¾[code] text [/code]和自定义[code] action [/code]çš„"
-"按钮,并返回创建的按钮。按下时,[code] action [/code]会被传递给[signal "
+"按钮,并返回该创建的按钮。按下时,[code] action [/code]会被传递给[signal "
"custom_action]ä¿¡å·ã€‚\n"
-"如果[code]right[/code]为[code]true[/code],按钮会被放置在所有åŒçº§æŒ‰é’®çš„å³è¾¹ã€‚"
+"如果[code]right[/code]为[code]true[/code],按钮会被放置在所有åŒçº§æŒ‰é’®çš„å³"
+"边。\n"
+"您å¯ä»¥ä½¿ç”¨ [method remove_button] æ–¹æ³•ä»Žå¯¹è¯æ¡†ä¸­åˆ é™¤ä½¿ç”¨æ­¤æ–¹æ³•创建的按钮。"
#: doc/classes/AcceptDialog.xml:27
-#, fuzzy
msgid ""
"Adds a button with label [code]name[/code] and a cancel action to the dialog "
"and returns the created button.\n"
"You can use [method remove_button] method to remove a button created with "
"this method from the dialog."
msgstr ""
-"å‘å¯¹è¯æ¡†ä¸­æ·»åŠ ä¸€ä¸ªæ ‡ç­¾ä¸º[code]name[/code]çš„æŒ‰é’®å’Œä¸€ä¸ªå–æ¶ˆåŠ¨ä½œï¼Œç„¶åŽè¿”回这个新"
-"创建的按钮。"
+"å‘å¯¹è¯æ¡†ä¸­æ·»åŠ ä¸€ä¸ªæ ‡ç­¾ä¸º[code]name[/code]å’Œä¸€ä¸ªå–æ¶ˆåŠ¨ä½œçš„æŒ‰é’®ï¼Œç„¶åŽè¿”回这个新"
+"创建的按钮。\n"
+"您å¯ä»¥ä½¿ç”¨ [method remove_button] æ–¹æ³•ä»Žå¯¹è¯æ¡†ä¸­åˆ é™¤ä½¿ç”¨æ­¤æ–¹æ³•创建的按钮。"
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
-msgstr "返回用于内置文本的标签。"
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
-msgstr "返回OK [Button]实例。"
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr "åœ¨å¯¹è¯æ¡†ä¸­æ³¨å†Œ[QLineEdit]。 å½“æŒ‰ä¸‹å›žè½¦é”®æ—¶ï¼Œå¯¹è¯æ¡†å°†è¢«æŽ¥å—。"
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -4573,12 +4609,16 @@ msgid ""
"the [code]button[/code] will no longer emit this dialog's [signal "
"custom_action] signal or cancel this dialog."
msgstr ""
+"ä»Žå¯¹è¯æ¡†ä¸­ç§»é™¤ [code]button[/code]。但ä¸é‡Šæ”¾ 该[code]button[/code]对象。"
+"[code]button[/code] 必须是添加有 [method add_button] 或 [method add_cancel] "
+"方法的 [Button]。移除åŽï¼ŒæŒ‰ä¸‹è¯¥[code]button[/code]å°†ä¸å†å‘å‡ºæ­¤å¯¹è¯æ¡†çš„"
+"[signal custom_action]ä¿¡å·æˆ–å–æ¶ˆæ­¤å¯¹è¯æ¡†ã€‚"
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr "ä¸ºå¯¹è¯æ¡†ä¸­çš„æ–‡æœ¬è®¾ç½®è‡ªåЍæ¢è¡Œã€‚"
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -4599,17 +4639,17 @@ msgstr ""
"时实现了自己的输入验è¯ä»£ç ï¼Œå¦‚果输入有效,最终将éšè—å¯¹è¯æ¡†ã€‚因此,ä¸èƒ½åœ¨ "
"[FileDialog] 中使用此属性æ¥ç¦æ­¢åœ¨æŒ‰OKæ—¶éšè—å¯¹è¯æ¡†ã€‚"
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr "å¯¹è¯æ¡†æ˜¾ç¤ºçš„æ–‡æœ¬ã€‚"
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr "接å—å¯¹è¯æ¡†æ—¶ï¼Œå³æŒ‰ä¸‹OK按钮时å‘出。"
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
-msgstr "按下自定义按钮时å‘出。 å‚è§[方法add_button]。"
+msgstr "按下自定义按钮时å‘出。 å‚阅[方法add_button]。"
#: doc/classes/AESContext.xml:4
msgid "Interface to low level AES encryption features."
@@ -4688,19 +4728,19 @@ msgstr ""
#: doc/classes/AESContext.xml:46
msgid "Close this AES context so it can be started again. See [method start]."
-msgstr "关闭此AES上下文,以便å¯ä»¥å†æ¬¡å¯åŠ¨å®ƒã€‚ å‚è§[method start]。"
+msgstr "关闭此AES上下文,以便å¯ä»¥å†æ¬¡å¯åŠ¨å®ƒã€‚ å‚阅[method start]。"
#: doc/classes/AESContext.xml:52
-#, fuzzy
msgid ""
"Get the current IV state for this context (IV gets updated when calling "
"[method update]). You normally don't need this function.\n"
"[b]Note:[/b] This function only makes sense when the context is started with "
"[constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT]."
msgstr ""
-"èŽ·å–æ­¤ä¸Šä¸‹æ–‡çš„当å‰IV状æ€ï¼ˆè°ƒç”¨[方法更新]时会更新IV。)通常ä¸éœ€è¦æ­¤å‡½æ•°ã€‚\n"
-"注æ„:仅当以[constant MODE_CBC_ENCRYPT]或[constant MODE_CBC_DECRYPT]开头上下"
-"æ–‡æ—¶ï¼Œæ­¤åŠŸèƒ½æ‰æœ‰æ„义。"
+"èŽ·å–æ­¤ä¸Šä¸‹æ–‡çš„当å‰IV状æ€ï¼ˆè°ƒç”¨[method update]时会更新IV)。通常ä¸éœ€è¦æ­¤å‡½"
+"数。\n"
+"[b]注æ„:[/b]仅当上下文以[constant MODE_CBC_ENCRYPT]或[constant "
+"MODE_CBC_DECRYPT]å¼€å¤´æ—¶ï¼Œæ­¤å‡½æ•°æ‰æœ‰æ„义。"
#: doc/classes/AESContext.xml:62
msgid ""
@@ -4715,7 +4755,6 @@ msgstr ""
"MODE_CBC_DECRYPT]。"
#: doc/classes/AESContext.xml:69
-#, fuzzy
msgid ""
"Run the desired operation for this AES context. Will return a "
"[PoolByteArray] containing the result of encrypting (or decrypting) the "
@@ -4723,9 +4762,9 @@ msgid ""
"[b]Note:[/b] The size of [code]src[/code] must be a multiple of 16. Apply "
"some padding if needed."
msgstr ""
-"è¿è¡Œæ­¤ AES 上下文所需的æ“作。将返回包å«åŠ å¯†ï¼ˆæˆ–è§£å¯†ï¼‰ç»™å®š [code] src [/code] "
-"结果的 [包装字节] 。有关æ“作模å¼ï¼Œè¯·å‚阅[方法å¯åЍ]。\n"
-"注æ„:[code]src[/code]的大å°å¿…须是16å€çš„倿•°ã€‚如果需è¦ï¼Œåº”用一些填充。"
+"è¿è¡Œæ­¤ AES 上下文所需的æ“作。将返回包å«åŠ å¯†ï¼ˆæˆ–è§£å¯†ï¼‰ç»™å®š [code]src[/code] 结"
+"果的[PoolByteArray] 。有关æ“作模å¼ï¼Œè¯·å‚阅[method start]。\n"
+"[b]注æ„:[/b][code]src[/code]的大å°å¿…须是16å€çš„倿•°ã€‚如果需è¦ï¼Œåº”用一些填充。"
#: doc/classes/AESContext.xml:76
msgid "AES electronic codebook encryption mode."
@@ -4760,14 +4799,19 @@ msgid ""
"having 2 [SpriteFrames] resources [code]run[/code] and [code]run_normal[/"
"code] will make it so the [code]run[/code] animation uses the normal map."
msgstr ""
+"动画通过一个[SpriteFrames]资æºåˆ›å»ºï¼Œè€Œè¯¥èµ„æºå¯ä»¥é€šè¿‡åŠ¨ç”»å¸§é¢æ¿åœ¨ç¼–辑器中é…"
+"置。\n"
+"[b]注æ„:[/b] 您å¯ä»¥é€šè¿‡åˆ›å»ºé™„加的带有[code]_normal[/code]åŽç¼€çš„"
+"[SpriteFrames]èµ„æºæ¥å…³è”一组法线贴图。例如,如有 2 个[SpriteFrames]资æº"
+"[code]run[/code]和[code]run_normal[/code],将使[code]run[/code]动画使用该法线"
+"贴图。"
#: doc/classes/AnimatedSprite.xml:11 doc/classes/AnimatedSprite3D.xml:10
#: doc/classes/AnimationPlayer.xml:13
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/2d/2d_sprite_animation.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/2d/2d_transforms.html"
+"https://docs.godotengine.org/en/3.4/tutorials/2d/2d_sprite_animation.html"
#: doc/classes/AnimatedSprite.xml:12 doc/classes/Area2D.xml:11
#: doc/classes/AudioStreamPlayer.xml:12 doc/classes/Button.xml:24
@@ -4776,9 +4820,8 @@ msgstr ""
#: doc/classes/InputEvent.xml:12 doc/classes/InputEventAction.xml:11
#: doc/classes/Label.xml:12 doc/classes/Particles2D.xml:15
#: doc/classes/Timer.xml:11 doc/classes/VisibilityNotifier2D.xml:12
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/515"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/515"
#: doc/classes/AnimatedSprite.xml:18 doc/classes/AnimatedSprite3D.xml:16
msgid "Returns [code]true[/code] if an animation is currently being played."
@@ -4837,7 +4880,7 @@ msgstr "纹ç†çš„绘图åç§»é‡ã€‚"
#: doc/classes/AnimatedSprite.xml:59 doc/classes/AnimatedSprite3D.xml:44
msgid "If [code]true[/code], the [member animation] is currently playing."
-msgstr "如果[code]true[/code]ï¼Œåˆ™è¡¨ç¤ºå½“å‰æ­£åœ¨æ’­æ”¾[æˆå‘˜åŠ¨ç”»]。"
+msgstr "如果[code]true[/code]ï¼Œåˆ™è¡¨ç¤ºå½“å‰æ­£åœ¨æ’­æ”¾[member 动画]。"
#: doc/classes/AnimatedSprite.xml:62
msgid "The animation speed is multiplied by this value."
@@ -4854,7 +4897,7 @@ msgstr ""
#: doc/classes/AnimatedSprite.xml:73 doc/classes/AnimatedSprite3D.xml:55
msgid "Emitted when [member frame] changed."
-msgstr "当[æˆå‘˜æ¡†æž¶]更改时å‘出。"
+msgstr "当[member frame]更改时å‘出。"
#: doc/classes/AnimatedSprite3D.xml:4
msgid ""
@@ -4901,7 +4944,7 @@ msgstr ""
"延迟链接多个纹ç†ã€‚与[AnimationPlayer]或[AnimatedSprite2D]ä¸åŒï¼Œå®ƒä¸æ˜¯[Node],"
"但具有å¯ä»¥åœ¨å¯ä»¥ä½¿ç”¨[Texture2D]资æºçš„任何地方使用的优点,例如在[TileSet]"
"中。\n"
-"动画的回放由[member fps]å±žæ€§ä»¥åŠæ¯å¸§çš„å¯é€‰å»¶è¿ŸæŽ§åˆ¶ï¼ˆè¯·å‚è§[method "
+"动画的回放由[member fps]å±žæ€§ä»¥åŠæ¯å¸§çš„å¯é€‰å»¶è¿ŸæŽ§åˆ¶ï¼ˆè¯·å‚阅[method "
"set_frame_delay])。动画循环播放,å³å®ƒå°†åœ¨æ’­æ”¾æœ€åŽä¸€å¸§åŽåœ¨ç¬¬0å¸§è‡ªåŠ¨é‡æ–°å¼€"
"始。\n"
"[AnimatedTexture]当å‰è¦æ±‚所有帧纹ç†å…·æœ‰ç›¸åŒçš„大å°ï¼Œå¦åˆ™è¾ƒå¤§çš„纹ç†å°†è¢«è£å‰ªä»¥åŒ¹"
@@ -4912,9 +4955,8 @@ msgid "Returns the given frame's delay value."
msgstr "返回给定帧的延迟值。"
#: doc/classes/AnimatedTexture.xml:26
-#, fuzzy
msgid "Returns the given frame's [Texture]."
-msgstr "返回给定帧的[Texture2D]。"
+msgstr "返回给定帧的[Texture]。"
#: doc/classes/AnimatedTexture.xml:34
msgid ""
@@ -4955,9 +4997,9 @@ msgid ""
"animation."
msgstr ""
"å°†[Texture2D]分é…给给定的帧。帧ID从0开始,因此第一帧的ID为0,动画的最åŽä¸€å¸§çš„"
-"ID为[æˆå‘˜å¸§]-1。\n"
-"您å¯ä»¥å®šä¹‰ä»»æ„æ•°é‡çš„纹ç†ï¼Œç›´åˆ°[constant MAX_FRAMES],但è¦è®°ä½ï¼Œåªæœ‰0到[æˆå‘˜"
-"帧]-1的帧会æˆä¸ºåŠ¨ç”»çš„ä¸€éƒ¨åˆ†ã€‚"
+"ID为[member 帧]-1。\n"
+"您å¯ä»¥å®šä¹‰ä»»æ„æ•°é‡çš„纹ç†ï¼Œç›´åˆ°[constant MAX_FRAMES],但è¦è®°ä½ï¼Œåªæœ‰0到"
+"[member 帧]-1的帧会æˆä¸ºåŠ¨ç”»çš„ä¸€éƒ¨åˆ†ã€‚"
#: doc/classes/AnimatedTexture.xml:56
msgid "Sets the currently visible frame of the texture."
@@ -4996,7 +5038,7 @@ msgid ""
"will not set [member pause] to [code]true[/code]."
msgstr ""
"如果[code] true [/code]ï¼Œåˆ™åŠ¨ç”»å°†åªæ’­æ”¾ä¸€æ¬¡ï¼Œå¹¶ä¸”在到达结尾åŽå°†ä¸ä¼šå¾ªçŽ¯å›žåˆ°ç¬¬"
-"一帧。请注æ„,到达终点ä¸ä¼šå°†[æˆå‘˜æš‚åœ]设置为[code] true [/code]。"
+"一帧。请注æ„,到达终点ä¸ä¼šå°†[member æš‚åœ]设置为[code] true [/code]。"
#: doc/classes/AnimatedTexture.xml:70
msgid ""
@@ -5008,13 +5050,12 @@ msgstr ""
"将此属性更改为[code] false [/code]时,动画将从暂åœå¤„继续播放。"
#: doc/classes/AnimatedTexture.xml:75
-#, fuzzy
msgid ""
"The maximum number of frames supported by [AnimatedTexture]. If you need "
"more frames in your animation, use [AnimationPlayer] or [AnimatedSprite]."
msgstr ""
"[AnimatedTexture]支æŒçš„æœ€å¤§å¸§æ•°ã€‚å¦‚æžœåŠ¨ç”»ä¸­éœ€è¦æ›´å¤šå¸§ï¼Œè¯·ä½¿ç”¨"
-"[AnimationPlayer]或[AnimatedSprite2D]。"
+"[AnimationPlayer]或[AnimatedSprite]。"
#: doc/classes/Animation.xml:4
msgid "Contains data used to animate everything in the engine."
@@ -5060,10 +5101,8 @@ msgstr ""
"类型。"
#: doc/classes/Animation.xml:20 doc/classes/AnimationPlayer.xml:12
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/animation/index.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/animation/index.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/animation/index.html"
#: doc/classes/Animation.xml:28
msgid "Adds a track to the Animation."
@@ -5156,13 +5195,12 @@ msgstr ""
"[code]track_idx[/code] 必须是音频轨é“的索引."
#: doc/classes/Animation.xml:119
-#, fuzzy
msgid ""
"Sets the stream of the key identified by [code]key_idx[/code] to value "
"[code]stream[/code]. The [code]track_idx[/code] must be the index of an "
"Audio Track."
msgstr ""
-"å°† [code]key_idx[/code] 所标识的键æµè®¾ç½®ä¸º [code]offset[/code] 值。"
+"å°† [code]key_idx[/code] 所标识的键æµè®¾ç½®ä¸º[code]stream[/code]值。"
"[code]track_idx[/code]必须是一个音频轨é“的索引。"
#: doc/classes/Animation.xml:127
@@ -5306,7 +5344,7 @@ msgstr "返回钥匙所在的时间。"
msgid ""
"Returns the transition curve (easing) for a specific key (see the built-in "
"math function [method @GDScript.ease])."
-msgstr "返回特定键的过渡曲线(缓动)(å‚è§å†…置数学函数[方法@GDScript.ease])。"
+msgstr "返回特定键的过渡曲线(缓动)(å‚阅内置数学函数[方法@GDScript.ease])。"
#: doc/classes/Animation.xml:303
msgid "Returns the value of a given key in a given track."
@@ -5316,7 +5354,7 @@ msgstr "返回给定轨é“中给定键的值。"
msgid ""
"Gets the path of a track. For more information on the path format, see "
"[method track_set_path]."
-msgstr "获å–轨迹的路径。有关路径格å¼çš„详细信æ¯ï¼Œè¯·å‚è§[方法 track_set_path]。"
+msgstr "获å–轨迹的路径。有关路径格å¼çš„详细信æ¯ï¼Œè¯·å‚阅[方法 track_set_path]。"
#: doc/classes/Animation.xml:317
msgid "Gets the type of a track."
@@ -5387,7 +5425,7 @@ msgstr "设置现有键的时间。"
msgid ""
"Sets the transition curve (easing) for a specific key (see the built-in math "
"function [method @GDScript.ease])."
-msgstr "设置特定键的过渡曲线(缓动)(å‚è§å†…置数学函数[方法@GDScript.ease])。"
+msgstr "设置特定键的过渡曲线(缓动)(å‚阅内置数学函数[方法@GDScript.ease])。"
#: doc/classes/Animation.xml:438
msgid "Sets the value of an existing key."
@@ -5441,17 +5479,16 @@ msgid "Returns the update mode of a value track."
msgstr "返回值跟踪的更新模å¼ã€‚"
#: doc/classes/Animation.xml:498
-#, fuzzy
msgid ""
"Returns the interpolated value at the given time (in seconds). The "
"[code]track_idx[/code] must be the index of a value track."
msgstr ""
-"返回给定 [code]time[/code]处的æ’值(以秒为å•ä½ï¼‰ã€‚ [code]track_idx[/code]å¿…é¡»"
-"是 Bezier轨é“的索引。"
+"返回给定时间处(以秒为å•ä½ï¼‰çš„æ’å€¼ã€‚[code]track_idx[/code]必须是一个值轨é“çš„"
+"索引。"
#: doc/classes/Animation.xml:506
msgid "Sets the update mode (see [enum UpdateMode]) of a value track."
-msgstr "设置值跟踪的更新模å¼ï¼ˆå‚è§[enum UpdateMode])。"
+msgstr "设置值跟踪的更新模å¼ï¼ˆå‚阅[enum UpdateMode])。"
#: doc/classes/Animation.xml:512
msgid ""
@@ -5585,12 +5622,10 @@ msgstr ""
#: doc/classes/AnimationNodeTimeSeek.xml:21
#: doc/classes/AnimationNodeTransition.xml:10 doc/classes/AnimationTree.xml:11
#: doc/classes/AnimationTreePlayer.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/animation/animation_tree.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/animation/animation_tree."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/animation/animation_tree.html"
#: doc/classes/AnimationNode.xml:18
msgid ""
@@ -5618,7 +5653,7 @@ msgid ""
msgstr ""
"æ··åˆä¸€ä¸ªè¾“入。这åªå¯¹ä¸º [AnimationNodeBlendTree] 创建的节点有用。[code]time[/"
"code]傿•°æ˜¯ä¸€ä¸ªç›¸å¯¹ä¸‰è§’ï¼Œé™¤éž [code]seek[/code] 是 [code]true[/code],在这ç§"
-"情况下,它是ç»å¯¹å€¼ã€‚å¯ä»¥é€‰æ‹©ä¼ é€’过滤模å¼(选项å‚è§[enum FilterAction])。"
+"情况下,它是ç»å¯¹å€¼ã€‚å¯ä»¥é€‰æ‹©ä¼ é€’过滤模å¼(选项å‚阅[enum FilterAction])。"
#: doc/classes/AnimationNode.xml:54
msgid ""
@@ -5829,9 +5864,8 @@ msgstr ""
#: doc/classes/Quat.xml:13 doc/classes/Skeleton.xml:13
#: doc/classes/SpotLight.xml:12 doc/classes/StaticBody.xml:12
#: doc/classes/WorldEnvironment.xml:15
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/678"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/678"
#: doc/classes/AnimationNodeAnimation.xml:4
msgid "Input animation to use in an [AnimationNodeBlendTree]."
@@ -5843,8 +5877,8 @@ msgid ""
"set using the [member animation] property. Use it as an input for "
"[AnimationNode] that blend animations together."
msgstr ""
-"添加到[AnimationNodeBlendTree]的资æºã€‚åªå…·æœ‰ä¸€ä¸ªä½¿ç”¨[æˆå‘˜åŠ¨ç”»]属性的输出集。"
-"将其作为[AnimationNode]的输入,将动画èžåˆåœ¨ä¸€èµ·ã€‚"
+"添加到[AnimationNodeBlendTree]的资æºã€‚åªå…·æœ‰ä¸€ä¸ªä½¿ç”¨[member 动画]属性的输出"
+"集。将其作为[AnimationNode]的输入,将动画èžåˆåœ¨ä¸€èµ·ã€‚"
#: doc/classes/AnimationNodeAnimation.xml:11
#: doc/classes/AnimationNodeBlend2.xml:11
@@ -5856,16 +5890,15 @@ msgstr ""
#: doc/classes/KinematicBody.xml:14 doc/classes/Mesh.xml:12
#: doc/classes/MeshInstance.xml:12 doc/classes/MeshLibrary.xml:11
#: doc/classes/ProjectSettings.xml:14 doc/classes/Transform.xml:15
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/125"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/125"
#: doc/classes/AnimationNodeAnimation.xml:18
msgid ""
"Animation to use as an output. It is one of the animations provided by "
"[member AnimationTree.anim_player]."
msgstr ""
-"作为输出使用的动画。它是[æˆå‘˜AnimationTree.anim_player]æä¾›çš„动画之一。"
+"作为输出使用的动画。它是[member AnimationTree.anim_player]æä¾›çš„动画之一。"
#: doc/classes/AnimationNodeBlend2.xml:4
msgid "Blends two animations linearly inside of an [AnimationNodeBlendTree]."
@@ -5977,13 +6010,13 @@ msgstr "æ›´æ–°æ··åˆè½´ä¸Šç´¢å¼•[code]point[/code]处的点的ä½ç½®ã€‚"
msgid ""
"The blend space's axis's upper limit for the points' position. See [method "
"add_blend_point]."
-msgstr "æ··åˆç©ºé—´çš„轴的点的ä½ç½®ä¸Šé™ã€‚å‚è§[method add_blend_point]。"
+msgstr "æ··åˆç©ºé—´çš„轴的点的ä½ç½®ä¸Šé™ã€‚å‚阅[method add_blend_point]。"
#: doc/classes/AnimationNodeBlendSpace1D.xml:74
msgid ""
"The blend space's axis's lower limit for the points' position. See [method "
"add_blend_point]."
-msgstr "æ··åˆç©ºé—´çš„轴的点的ä½ç½®ä¸‹é™ã€‚å‚è§[method add_blend_point]。"
+msgstr "æ··åˆç©ºé—´çš„轴的点的ä½ç½®ä¸‹é™ã€‚å‚阅[method add_blend_point]。"
#: doc/classes/AnimationNodeBlendSpace1D.xml:77
msgid "Position increment to snap to when moving a point on the axis."
@@ -6084,19 +6117,19 @@ msgstr ""
msgid ""
"Controls the interpolation between animations. See [enum BlendMode] "
"constants."
-msgstr "控制动画之间的æ’值。å‚è§ [enum BlendMode] 常é‡ã€‚"
+msgstr "控制动画之间的æ’值。å‚阅 [enum BlendMode] 常é‡ã€‚"
#: doc/classes/AnimationNodeBlendSpace2D.xml:108
msgid ""
"The blend space's X and Y axes' upper limit for the points' position. See "
"[method add_blend_point]."
-msgstr "æ··åˆç©ºé—´çš„Xè½´å’ŒY轴的点的ä½ç½®ä¸Šé™ã€‚å‚è§[method add_blend_point]。"
+msgstr "æ··åˆç©ºé—´çš„Xè½´å’ŒY轴的点的ä½ç½®ä¸Šé™ã€‚å‚阅[method add_blend_point]。"
#: doc/classes/AnimationNodeBlendSpace2D.xml:111
msgid ""
"The blend space's X and Y axes' lower limit for the points' position. See "
"[method add_blend_point]."
-msgstr "æ··åˆç©ºé—´çš„Xè½´å’ŒY轴的点的ä½ç½®ä¸‹é™ã€‚å‚è§[method add_blend_point]。"
+msgstr "æ··åˆç©ºé—´çš„Xè½´å’ŒY轴的点的ä½ç½®ä¸‹é™ã€‚å‚阅[method add_blend_point]。"
#: doc/classes/AnimationNodeBlendSpace2D.xml:114
msgid "Position increment to snap to when moving a point."
@@ -6356,8 +6389,9 @@ msgid "Renames the given node."
msgstr "é‡å‘½å给定的节点。"
#: doc/classes/AnimationNodeStateMachine.xml:152
+#, fuzzy
msgid "Replaces the node and keeps its transitions unchanged."
-msgstr ""
+msgstr "æ›´æ¢èŠ‚ç‚¹å¹¶ä¿æŒå…¶è¿‡æ¸¡ä¸å˜ã€‚"
#: doc/classes/AnimationNodeStateMachine.xml:159
msgid "Sets the given node as the graph end point."
@@ -6699,7 +6733,7 @@ msgstr ""
"å°†å‘åŽæ’­æ”¾ï¼ˆç›¸å½“于调用[method play_backwards])。\n"
"[AnimationPlayer]使用[member Assigned_animation]è·Ÿè¸ªå…¶å½“å‰æˆ–æœ€åŽæ’­æ”¾çš„动画。"
"如果使用相åŒçš„动画[code] name [/code]或没有[code] name [/code]傿•°è°ƒç”¨æ­¤æ–¹"
-"法,则分é…çš„åŠ¨ç”»å°†åœ¨æš‚åœæ—¶ç»§ç»­æ’­æ”¾ï¼Œæˆ–è€…åœ¨åœæ­¢æ—¶é‡æ–°å¯åŠ¨ï¼ˆè¯·å‚è§[方法]åœæ­¢],"
+"法,则分é…çš„åŠ¨ç”»å°†åœ¨æš‚åœæ—¶ç»§ç»­æ’­æ”¾ï¼Œæˆ–è€…åœ¨åœæ­¢æ—¶é‡æ–°å¯åŠ¨ï¼ˆè¯·å‚阅[方法]åœæ­¢],"
"åŒæ—¶æš‚åœå’Œåœæ­¢ã€‚如果动画已ç»åœ¨æ’­æ”¾ï¼Œå®ƒå°†ç»§ç»­æ’­æ”¾ã€‚\n"
"[b]注æ„:[/b]下次处ç†[AnimationPlayer]æ—¶ï¼ŒåŠ¨ç”»å°†è¢«æ›´æ–°ã€‚å¦‚æžœåœ¨è°ƒç”¨çš„åŒæ—¶æ›´æ–°"
"了其他å˜é‡ï¼Œåˆ™å®ƒä»¬å¯èƒ½æ›´æ–°å¾—太早。è¦ç«‹å³æ‰§è¡Œæ›´æ–°ï¼Œè¯·è°ƒç”¨[code] advance(0)[/"
@@ -6714,7 +6748,7 @@ msgid ""
msgstr ""
"å呿’­æ”¾æŒ‰é”®[code]name[/code]的动画。\n"
"这个方法是 [method play] 的简写,其中 [code]custom_speed = -1.0[/code] and "
-"[code]from_end = true[/code],所以更多信æ¯è¯·å‚è§å…¶æè¿°ã€‚"
+"[code]from_end = true[/code],所以更多信æ¯è¯·å‚阅其æè¿°ã€‚"
#: doc/classes/AnimationPlayer.xml:137
msgid ""
@@ -6777,7 +6811,7 @@ msgid ""
"playing. See also [member current_animation]."
msgstr ""
"如果正在播放,则为当å‰çš„动画;å¦åˆ™ä¸ºä¸Šæ¬¡æ’­æ”¾çš„动画。当设置时,将改å˜åŠ¨ç”»ï¼Œä½†"
-"ä¸ä¼šæ’­æ”¾å®ƒï¼Œé™¤éžå½“剿­£åœ¨æ’­æ”¾ã€‚å‚è§[method current_animation]。"
+"ä¸ä¼šæ’­æ”¾å®ƒï¼Œé™¤éžå½“剿­£åœ¨æ’­æ”¾ã€‚å‚阅[method current_animation]。"
#: doc/classes/AnimationPlayer.xml:187
msgid "The name of the animation to play when the scene loads."
@@ -6794,6 +6828,11 @@ msgid ""
"get the currently playing animation, and internally for animation playback "
"tracks. For more information, see [Animation]."
msgstr ""
+"当剿’­æ”¾çš„动画的å称。如果没有动画正在播放,该属性的值是一个空字符串。改å˜è¿™"
+"个值ä¸ä¼šé‡æ–°å¯åŠ¨åŠ¨ç”»ã€‚å…³äºŽæ’­æ”¾åŠ¨ç”»çš„æ›´å¤šä¿¡æ¯è¯·å‚阅[method play]。\n"
+"[b]注æ„:[/b] è™½ç„¶è¿™ä¸ªå±žæ€§å‡ºçŽ°åœ¨æ£€æŸ¥å™¨ä¸­ï¼Œä½†å®ƒä¸æ˜¯ç”¨æ¥ç¼–辑的,也ä¸ä¼šä¿å­˜åœ¨åœº"
+"景中。该属性主è¦ç”¨äºŽèŽ·å–当剿’­æ”¾çš„动画,内部用于动画播放轨é“。有关详细信æ¯ï¼Œ"
+"请å‚阅动画[Animation]。"
#: doc/classes/AnimationPlayer.xml:194
msgid "The length (in seconds) of the currently being played animation."
@@ -6853,6 +6892,8 @@ msgid ""
"[b]Note:[/b] The signal is not emitted when the animation is changed via "
"[method play] or from [AnimationTree]."
msgstr ""
+"当队列中å‰ä¸€ä¸ªåŠ¨ç”»æ’­æ”¾å®Œæ¯•ï¼Œä¸‹ä¸€ä¸ªåŠ¨ç”»æ’­æ”¾æ—¶è§¦å‘ä¿¡å·ï¼Œå‚考方法[queue]。\n"
+"[b]注:[/b]如果是通过[play]方法或[AnimationTree]改å˜åŠ¨ç”»ï¼Œè¯¥ä¿¡å·ä¸ä¼šè§¦å‘。"
#: doc/classes/AnimationPlayer.xml:234
msgid "Notifies when an animation finished playing."
@@ -6995,6 +7036,8 @@ msgid ""
"[i]Deprecated.[/i] Animation player that uses a node graph for blending "
"animations. Superseded by [AnimationTree]."
msgstr ""
+"[i]已弃用。[/i] 使用节点图(node graph)æ¥æ··åˆåŠ¨ç”»çš„åŠ¨ç”»æ’­æ”¾å™¨ã€‚ç”± "
+"[AnimationTree] å–代。"
#: doc/classes/AnimationTreePlayer.xml:7
msgid ""
@@ -7108,6 +7151,11 @@ 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 ""
+"设置一个Blend3节点的混åˆå€¼ï¼Œä¼ å…¥èŠ‚ç‚¹å和混åˆå€¼ã€‚\n"
+"Blend3节点使用-1~1ä¹‹é—´çš„ä¸€ä¸ªå€¼æ¥æ··åˆ3个动画 (A, B-, B+).\n"
+"值为-1时,输出动画为B-;值从-1到0时,B-的影å“å‡å¼±ï¼ŒA的影å“å˜å¼ºï¼ŒB+的影å“为0ï¼›"
+"值为0时,输出为动画A;值从0到1时,A的影å“å‡å¼±ï¼ŒB+的影å“å˜å¼ºï¼ŒB-的影å“为0;值"
+"为1时,输出为动画B+。"
#: doc/classes/AnimationTreePlayer.xml:132
#, fuzzy
@@ -7152,7 +7200,7 @@ msgstr ""
#: doc/classes/AnimationTreePlayer.xml:188
msgid "Check if a node exists (by name)."
-msgstr ""
+msgstr "按å称检查节点是å¦å­˜åœ¨ã€‚"
#: doc/classes/AnimationTreePlayer.xml:195
msgid ""
@@ -7274,7 +7322,7 @@ msgstr "移除按键[code]name[/code]的动画。"
#: doc/classes/AnimationTreePlayer.xml:357
msgid "Resets this [AnimationTreePlayer]."
-msgstr ""
+msgstr "é‡ç½®æ­¤ [AnimationTreePlayer]。"
#: doc/classes/AnimationTreePlayer.xml:364
#, fuzzy
@@ -7384,117 +7432,101 @@ msgid ""
msgstr ""
#: doc/classes/AnimationTreePlayer.xml:470
-#, fuzzy
msgid "The thread in which to update animations."
-msgstr "更新动画的过程通知。"
+msgstr "更新动画的线程。"
#: doc/classes/AnimationTreePlayer.xml:475
-#, fuzzy
msgid "Output node."
-msgstr "文本节点。"
+msgstr "输出节点。"
#: doc/classes/AnimationTreePlayer.xml:478
-#, fuzzy
msgid "Animation node."
-msgstr "未知节点。"
+msgstr "Animation节点。"
#: doc/classes/AnimationTreePlayer.xml:481
-#, fuzzy
msgid "OneShot node."
-msgstr "文本节点。"
+msgstr "OneShot节点。"
#: doc/classes/AnimationTreePlayer.xml:484
-#, fuzzy
msgid "Mix node."
-msgstr "文本节点。"
+msgstr "Mix 节点。"
#: doc/classes/AnimationTreePlayer.xml:487
-#, fuzzy
msgid "Blend2 node."
-msgstr "注释节点。"
+msgstr "Blend2节点。"
#: doc/classes/AnimationTreePlayer.xml:490
-#, fuzzy
msgid "Blend3 node."
-msgstr "注释节点。"
+msgstr "Blend3节点。"
#: doc/classes/AnimationTreePlayer.xml:493
-#, fuzzy
msgid "Blend4 node."
-msgstr "注释节点。"
+msgstr "Blend4节点。"
#: doc/classes/AnimationTreePlayer.xml:496
-#, fuzzy
msgid "TimeScale node."
-msgstr "文本节点。"
+msgstr "TimeScale节点。"
#: doc/classes/AnimationTreePlayer.xml:499
-#, fuzzy
msgid "TimeSeek node."
-msgstr "文本节点。"
+msgstr "TimeSeek节点。"
#: doc/classes/AnimationTreePlayer.xml:502
-#, fuzzy
msgid "Transition node."
-msgstr "过渡类型."
+msgstr "Transition节点。"
#: doc/classes/Area.xml:4
-#, fuzzy
msgid "3D area for detection and physics and audio influence."
-msgstr "用于检测和二维物ç†ä½œç”¨çš„二维区域。"
+msgstr "用于检测和物ç†åŠéŸ³é¢‘å½±å“çš„3D区域。"
#: doc/classes/Area.xml:7
-#, fuzzy
msgid ""
"3D area that detects [CollisionObject] nodes overlapping, entering, or "
"exiting. Can also alter or override local physics parameters (gravity, "
"damping) and route audio to custom audio buses."
msgstr ""
-"检测 [CollisionObject2D] 节点é‡å ã€è¿›å…¥ã€ç¦»å¼€çš„二维区域。还å¯ä»¥ä¿®æ”¹æˆ–覆盖本地"
-"的物ç†å‚数(é‡åŠ›ã€é˜»å°¼ï¼‰ã€‚"
+"检测[CollisionObject]节点é‡å ã€è¿›å…¥æˆ–退出的3D区域。还å¯ä»¥æ”¹å˜æˆ–覆盖局部物ç†å‚"
+"数(é‡åŠ›ã€é˜»å°¼ï¼‰ï¼Œå¹¶å°†éŸ³é¢‘路由到自定义音频总线。"
#: doc/classes/Area.xml:11 doc/classes/QuadMesh.xml:10
#: doc/classes/Viewport.xml:17 doc/classes/ViewportTexture.xml:11
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/127"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/127"
#: doc/classes/Area.xml:17
-#, fuzzy
msgid ""
"Returns a list of intersecting [Area]s. For performance reasons (collisions "
"are all processed at the same time) this list is modified once during the "
"physics step, not immediately after objects are moved. Consider using "
"signals instead."
msgstr ""
-"返回相交的 [Area2D] çš„åˆ—è¡¨ã€‚ç”±äºŽæ€§èƒ½åŽŸå› ï¼ˆç¢°æ’žéƒ½æ˜¯åŒæ—¶å¤„ç†çš„),该列表ä¸ä¼šåœ¨"
-"对象移动åŽç«‹å³æ›´æ–°ï¼Œåªä¼šåœ¨ç‰©ç†æ›´æ–°æ—¶è¿›è¡Œç»Ÿä¸€ä¿®æ”¹ã€‚å¯ä»¥è€ƒè™‘改用信å·ã€‚"
+"返回一个相交的区域[Area]çš„åˆ—è¡¨ã€‚ç”±äºŽæ€§èƒ½åŽŸå› ï¼ˆç¢°æ’žéƒ½æ˜¯åŒæ—¶å¤„ç†çš„),这个列表"
+"åœ¨ç‰©ç†æ­¥éª¤ä¸­è¢«ä¿®æ”¹ä¸€æ¬¡ï¼Œè€Œä¸æ˜¯åœ¨ç‰©ä½“被移动åŽç«‹å³ä¿®æ”¹ã€‚å¯ä»¥è€ƒè™‘ä½¿ç”¨ä¿¡å·æ¥ä»£"
+"替。"
#: doc/classes/Area.xml:23
-#, fuzzy
msgid ""
"Returns a list of intersecting [PhysicsBody]s. For performance reasons "
"(collisions are all processed at the same time) this list is modified once "
"during the physics step, not immediately after objects are moved. Consider "
"using signals instead."
msgstr ""
-"返回相交的 [PhysicsBody2D] çš„åˆ—è¡¨ã€‚ç”±äºŽæ€§èƒ½åŽŸå› ï¼ˆç¢°æ’žéƒ½æ˜¯åŒæ—¶å¤„ç†çš„),该列表"
-"ä¸ä¼šåœ¨å¯¹è±¡ç§»åЍåŽç«‹å³æ›´æ–°ï¼Œåªä¼šåœ¨ç‰©ç†æ›´æ–°æ—¶è¿›è¡Œç»Ÿä¸€ä¿®æ”¹ã€‚å¯ä»¥è€ƒè™‘改用信å·ã€‚"
+"返回一个相交的[PhysicsBody]的列表。由于性能的原因(碰撞都是在åŒä¸€æ—¶é—´å¤„ç†"
+"çš„ï¼‰ï¼Œè¿™ä¸ªåˆ—è¡¨åœ¨ç‰©ç†æ­¥éª¤ä¸­è¢«ä¿®æ”¹ä¸€æ¬¡ï¼Œè€Œä¸æ˜¯åœ¨ç‰©ä½“被移动åŽç«‹å³ä¿®æ”¹ã€‚å¯ä»¥è€ƒè™‘"
+"ä½¿ç”¨ä¿¡å·æ¥ä»£æ›¿ã€‚"
#: doc/classes/Area.xml:30
-#, fuzzy
msgid ""
"If [code]true[/code], the given area overlaps the Area.\n"
"[b]Note:[/b] The result of this test is not immediate after moving objects. "
"For performance, list of overlaps is updated once per frame and before the "
"physics step. Consider using signals instead."
msgstr ""
-"如果[code]true[/code],则给定区域与Area2Dé‡å ã€‚\n"
-"[b]注æ„:[/b]在移动物体åŽï¼Œè¿™ä¸ªæµ‹è¯•çš„ç»“æžœä¸æ˜¯ç«‹å³çš„。为了性能,é‡å åˆ—表æ¯å¸§æ›´"
-"æ–°ä¸€æ¬¡ï¼Œå¹¶ä¸”åœ¨ç‰©ç†æ­¥éª¤ä¹‹å‰æ›´æ–°ã€‚å¯ä»¥è€ƒè™‘ä½¿ç”¨ä¿¡å·æ¥ä»£æ›¿ã€‚"
+"如果 [code]true[/code],则给定区域与该区域é‡å ã€‚\n"
+" [b]注æ„:[/b]在移动物体åŽï¼Œè¿™ä¸ªæµ‹è¯•çš„ç»“æžœä¸æ˜¯å³æ—¶çš„。为了性能,é‡å åˆ—表在æ¯"
+"ä¸€å¸§å’Œç‰©ç†æ­¥éª¤ä¹‹å‰æ›´æ–°ä¸€æ¬¡ã€‚å¯ä»¥è€ƒè™‘用信å·ä»£æ›¿ã€‚"
#: doc/classes/Area.xml:38
-#, fuzzy
msgid ""
"If [code]true[/code], the given physics body overlaps the Area.\n"
"[b]Note:[/b] The result of this test is not immediate after moving objects. "
@@ -7504,26 +7536,26 @@ msgid ""
"instance (while GridMaps are not physics body themselves, they register "
"their tiles with collision shapes as a virtual physics body)."
msgstr ""
-"如果[code]true[/code],则给定的物ç†å®žä½“与Area3Dé‡å ã€‚\n"
-"[b]注æ„:[/b]移动物体åŽï¼Œè¯¥æµ‹è¯•çš„ç»“æžœä¸æ˜¯ç«‹å³äº§ç”Ÿçš„。为了æé«˜æ€§èƒ½ï¼Œé‡å åˆ—表æ¯"
-"å¸§æ›´æ–°ä¸€æ¬¡ï¼Œå¹¶åœ¨ç‰©ç†æ­¥éª¤ä¹‹å‰è¿›è¡Œæ›´æ–°ã€‚考虑改用信å·ã€‚\n"
-"[code] body [/code]傿•°å¯ä»¥æ˜¯[PhysicsBody3D]或[GridMap]实例(虽然GridMaps本身"
-"䏿˜¯ç‰©ç†ç‰©ä½“ï¼Œä½†å®ƒä»¬å°†å…·æœ‰ç¢°æ’žå½¢çŠ¶çš„å›¾å—æ³¨å†Œä¸ºè™šæ‹Ÿç‰©ç†ç‰©ä½“)。"
+"如果为[code]true[/code],则给定的物ç†ä½“与该区域é‡å ã€‚\n"
+"[b]注æ„:[/b]在移动物体åŽï¼Œè¿™ä¸ªæµ‹è¯•çš„ç»“æžœä¸æ˜¯å³æ—¶çš„。为了æé«˜æ€§èƒ½ï¼Œé‡å åˆ—表在"
+"æ¯ä¸€å¸§å’Œç‰©ç†æ­¥éª¤ä¹‹å‰æ›´æ–°ä¸€æ¬¡ã€‚å¯ä»¥è€ƒè™‘ä½¿ç”¨ä¿¡å·æ¥ä»£æ›¿ã€‚\n"
+"[code]body[/code]傿•°å¯ä»¥æ˜¯ä¸€ä¸ª[PhysicsBody]或一个[GridMap]实例(虽然GridMaps"
+"æœ¬èº«ä¸æ˜¯ç‰©ç†ä½“,但它们用碰撞形状注册它们的瓦片(tiles)作为一个虚拟物ç†ä½“)。"
#: doc/classes/Area.xml:46
-#, fuzzy
msgid ""
"The rate at which objects stop spinning in this area. Represents the angular "
"velocity lost per second.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
-"ç‰©ä½“åœ¨æ­¤åŒºåŸŸåœæ­¢æ—‹è½¬çš„速度。代表æ¯ç§’æŸå¤±çš„角速度。值的范围是[code]0[/code]"
-"(无阻尼)到[code]1[/code](全阻尼)。"
+"ç‰©ä½“åœ¨æ­¤åŒºåŸŸåœæ­¢æ—‹è½¬çš„速度。代表æ¯ç§’æŸå¤±çš„角速度。\n"
+"关于阻尼的更多细节,è§[member ProjectSettings.physics/3d/"
+"default_angular_damp]。"
#: doc/classes/Area.xml:50 doc/classes/Area2D.xml:52
msgid "The name of the area's audio bus."
-msgstr "该地区的音讯总线的å字。"
+msgstr "该区域音频总线的å称。"
#: doc/classes/Area.xml:53 doc/classes/Area2D.xml:55
msgid ""
@@ -7531,20 +7563,19 @@ msgid ""
msgstr "如果[code]true[/code],该区域的音频总线覆盖默认的音频总线。"
#: doc/classes/Area.xml:56
-#, fuzzy
msgid ""
"The area's gravity intensity (in meters per second squared). This value "
"multiplies the gravity vector. This is useful to alter the force of gravity "
"without altering its direction."
msgstr ""
-"该地区的é‡åŠ›å¼ºåº¦ï¼ˆèŒƒå›´ä»Ž-1024到1024)。这个值是é‡åŠ›å‘é‡çš„倿•°ã€‚è¿™å¯¹äºŽåœ¨ä¸æ”¹å˜"
-"é‡åŠ›æ–¹å‘的情况下改å˜é‡åŠ›çš„ä½œç”¨åŠ›å¾ˆæœ‰ç”¨ã€‚"
+"该区域内的é‡åŠ›å¼ºåº¦ï¼ˆå•ä½ï¼šç±³/秒平方)。这个值是é‡åŠ›å‘é‡çš„倿•°ã€‚è¿™å¯¹åªæ”¹å˜å¼•力"
+"大å°è€Œä¸æ”¹å˜å…¶æ–¹å‘很有用。"
#: doc/classes/Area.xml:59 doc/classes/Area2D.xml:61
msgid ""
"The falloff factor for point gravity. The greater the value, the faster "
"gravity decreases with distance."
-msgstr "点é‡åŠ›çš„è½å·®ç³»æ•°ã€‚该值越大,é‡åŠ›éšè·ç¦»ä¸‹é™è¶Šå¿«ã€‚"
+msgstr "点状é‡åŠ›çš„è¡°å‡ç³»æ•°ã€‚该值越大,é‡åЛ值éšè·ç¦»ä¸‹é™çš„速度就越快。"
#: doc/classes/Area.xml:62 doc/classes/Area2D.xml:64
msgid ""
@@ -7552,26 +7583,26 @@ msgid ""
"gravity_vec]). See also [member space_override]."
msgstr ""
"如果 [code]true[/code],则从一个点计算é‡åŠ›ï¼ˆé€šè¿‡ [member gravity_vec] 设"
-"置)。å‚è§ [member space_override]。"
+"置)。å‚阅 [member space_override]。"
#: doc/classes/Area.xml:65 doc/classes/Area2D.xml:67
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 ""
-"区域的é‡åŠ›å‘é‡ï¼ˆæœªè§„范化)。如果é‡åŠ›æ˜¯ä¸€ä¸ªç‚¹ï¼ˆè¯·å‚阅[membergravity_point]),"
+"区域的é‡åŠ›å‘é‡ï¼ˆæœªå½’一化)。如果é‡åŠ›æ˜¯ä¸€ä¸ªç‚¹ï¼ˆè¯·å‚阅[membergravity_point]),"
"则这将是å¸å¼•力点。"
#: doc/classes/Area.xml:68
-#, fuzzy
msgid ""
"The rate at which objects stop moving in this area. Represents the linear "
"velocity lost per second.\n"
"See [member ProjectSettings.physics/3d/default_linear_damp] for more details "
"about damping."
msgstr ""
-"ç‰©ä½“åœ¨æ­¤åŒºåŸŸåœæ­¢è¿åŠ¨çš„é€Ÿåº¦ã€‚ä»£è¡¨æ¯ç§’æŸå¤±çš„线性速度。数值范围从[code]0[/code]"
-"(无阻尼)到[code]1[/code](全阻尼)。"
+"ç‰©ä½“åœ¨æ­¤åŒºåŸŸåœæ­¢è¿åŠ¨çš„é€Ÿåº¦ã€‚ä»£è¡¨æ¯ç§’æŸå¤±çš„线速度。\n"
+"关于阻尼的更多细节,è§[member ProjectSettings.physics/3d/"
+"default_linear_damp]。"
#: doc/classes/Area.xml:72 doc/classes/Area2D.xml:74
msgid "If [code]true[/code], other monitoring areas can detect this area."
@@ -7618,37 +7649,49 @@ msgid ""
msgstr "该区域内é‡åŠ›å’Œé˜»å°¼è®¡ç®—çš„è¦†ç›–æ¨¡å¼ã€‚å¯èƒ½çš„值è§[enum SpaceOverride]。"
#: doc/classes/Area.xml:100
-#, fuzzy
msgid ""
"Emitted when another Area enters this Area. Requires [member monitoring] to "
"be set to [code]true[/code].\n"
"[code]area[/code] the other Area."
msgstr ""
-"当鼠标指针退出此对象的所有形状时å‘å‡ºã€‚è¦æ±‚[member input_pickable]为[code] "
-"true [/code],并且至少è¦è®¾ç½®ä¸€ä¸ª[code] collision_layer [/code]ä½ã€‚"
+"当å¦ä¸€ä¸ªåŒºåŸŸè¿›å…¥è¿™ä¸ªåŒºåŸŸæ—¶å‘出的。需è¦å°†ç›‘控[member monitoring]设置为"
+"[code]true[/code]。\n"
+"[code]area[/code]傿•°æ˜¯è¿›å…¥çš„其他区域。"
#: doc/classes/Area.xml:107
-#, fuzzy
msgid ""
"Emitted when another Area exits this Area. Requires [member monitoring] to "
"be set to [code]true[/code].\n"
"[code]area[/code] the other Area."
msgstr ""
-"当鼠标指针退出此对象的所有形状时å‘å‡ºã€‚è¦æ±‚[member input_pickable]为[code] "
-"true [/code],并且至少è¦è®¾ç½®ä¸€ä¸ª[code] collision_layer [/code]ä½ã€‚"
+"当å¦ä¸€ä¸ªåŒºåŸŸé€€å‡ºè¿™ä¸ªåŒºåŸŸæ—¶å‘å‡ºçš„ã€‚è¦æ±‚监控[member monitoring]被设置为"
+"[code]true[/code]。\n"
+"[code]area[/code]傿•°æ˜¯è¿›å…¥çš„其他区域。"
#: doc/classes/Area.xml:117 doc/classes/Area.xml:130
+#, fuzzy
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
-msgstr ""
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+"当å¦ä¸€ä¸ªåŒºåŸŸçš„一个形状[Shape]进入这个区域的一个形状[Shape]æ—¶å‘å‡ºçš„ã€‚è¦æ±‚监控"
+"[member monitoring]被设置为[code]true[/code]。\n"
+"[code] area_id[/code] 傿•°æ˜¯[PhysicsServer]使用的其他区域的[CollisionObject]"
+"的[RID]。\n"
+"[code]area[/code] 傿•°æ˜¯å…¶ä»–区域。\n"
+"[code]area_shape[/code] 傿•°æ˜¯è¢«[PhysicsServer]使用的其他区域的[Shape]的索"
+"引。\n"
+"[code]local_shape[/code]傿•°æ˜¯è¢«[PhysicsServer]使用的这个区域的[Shape]的索"
+"引。"
#: doc/classes/Area.xml:140
msgid ""
@@ -7658,6 +7701,11 @@ msgid ""
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap]."
msgstr ""
+"当[PhysicsBody]或[GridMap]进入这个区域时å‘出的。需è¦å°†ç›‘控[member monitoring]"
+"设置为[code]true[/code]。如果[MeshLibrary]有碰撞形状[Shape],就会检测到"
+"[GridMap]。\n"
+"[code]body[/code]是å¦ä¸€ä¸ª[PhysicsBody]或[GridMap]的节点[Node],如果它存在于场"
+"景树中。"
#: doc/classes/Area.xml:147
msgid ""
@@ -7667,21 +7715,39 @@ msgid ""
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap]."
msgstr ""
+"当[PhysicsBody]或[GridMap]离开这个区域时å‘出的。需è¦å°†ç›‘控[member monitoring]"
+"设置为[code]true[/code]。如果[MeshLibrary]有碰撞形状[Shape],就会检测到"
+"[GridMap]。\n"
+"[code]body[/code]是其他[PhysicsBody]或[GridMap]的[Node],如果它存在于场景树"
+"中。"
#: doc/classes/Area.xml:157 doc/classes/Area.xml:170
+#, fuzzy
msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
-msgstr ""
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+"当[PhysicsBody]或[GridMap]的一个形状[Shape]进入这个区域的一个形状[Shape]æ—¶å‘"
+"出的。需è¦å°†ç›‘控[member monitoring]设置为[code]true[/code]。如果[MeshLibrary]"
+"有碰撞形状[Shape],就会检测到[GridMap]。\n"
+"[code]body_id[/code]傿•°æ˜¯[PhysicsServer]使用的[PhysicsBody]或[MeshLibrary]çš„"
+"[CollisionObject]的RID。\n"
+"[code]body[/code] 傿•°æ˜¯[PhysicsBody]或[GridMap]çš„[Node],如果它存在于树"
+"中。\n"
+"[code]body_shape[/code] 傿•°æ˜¯ç”±[PhysicsServer]使用的[PhysicsBody]或[GridMap]"
+"的[Shape]的索引。\n"
+"[code]local_shape[/code] 傿•°æ˜¯[PhysicsServer]使用的这个区域的[Shape]的索引。"
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
msgid "This area does not affect gravity/damping."
@@ -7692,15 +7758,15 @@ msgid ""
"This area adds its gravity/damping values to whatever has been calculated so "
"far (in [member priority] order)."
msgstr ""
-"该区域将其é‡åŠ›/阻尼值加到迄今为止计算出的任何值上(按[æˆå‘˜ä¼˜å…ˆçº§]排åºï¼‰ã€‚"
+"该区域将其é‡åŠ›/阻尼值加到迄今为止计算出的任何值上(按[member 优先级]排åºï¼‰ã€‚"
#: doc/classes/Area.xml:186 doc/classes/Area2D.xml:176
msgid ""
"This area adds its gravity/damping values to whatever has been calculated so "
"far (in [member priority] order), ignoring any lower priority areas."
msgstr ""
-"该区域将其é‡åŠ›/阻尼值添加到到目å‰ä¸ºæ­¢å·²è®¡ç®—的任何内容(按[æˆå‘˜ä¼˜å…ˆçº§]顺åºï¼‰ï¼Œ"
-"而忽略任何较低优先级的区域。"
+"该区域将其é‡åŠ›/阻尼值添加到到目å‰ä¸ºæ­¢å·²è®¡ç®—的任何内容(按[member 优先级]顺"
+"åºï¼‰ï¼Œè€Œå¿½ç•¥ä»»ä½•较低优先级的区域。"
#: doc/classes/Area.xml:189 doc/classes/Area2D.xml:179
msgid ""
@@ -7713,44 +7779,38 @@ msgid ""
"This area replaces any gravity/damping calculated so far (in [member "
"priority] order), but keeps calculating the rest of the areas."
msgstr ""
-"这个区域å–代了到目å‰ä¸ºæ­¢è®¡ç®—出的任何é‡åŠ›/阻尼(按[æˆå‘˜ä¼˜å…ˆ]顺åºï¼‰ï¼Œä½†ç»§ç»­è®¡ç®—"
-"其余的区域。"
+"这个区域å–代了到目å‰ä¸ºæ­¢è®¡ç®—出的任何é‡åŠ›/阻尼(按[member 优先]顺åºï¼‰ï¼Œä½†ç»§ç»­"
+"计算其余的区域。"
#: doc/classes/Area2D.xml:4
-#, fuzzy
msgid "2D area for detection and physics and audio influence."
-msgstr "用于检测和二维物ç†ä½œç”¨çš„二维区域。"
+msgstr "用于检测ã€ç‰©ç†å’ŒéŸ³é¢‘å½±å“çš„ 2D 区域。"
#: doc/classes/Area2D.xml:7
-#, fuzzy
msgid ""
"2D area that detects [CollisionObject2D] nodes overlapping, entering, or "
"exiting. Can also alter or override local physics parameters (gravity, "
"damping) and route audio to a custom audio bus."
msgstr ""
-"检测 [CollisionObject2D] 节点é‡å ã€è¿›å…¥ã€ç¦»å¼€çš„二维区域。还å¯ä»¥ä¿®æ”¹æˆ–覆盖本地"
-"的物ç†å‚数(é‡åŠ›ã€é˜»å°¼ï¼‰ã€‚"
+"检测[CollisionObject2D]节点é‡å ã€è¿›å…¥æˆ–退出的2D区域。还å¯ä»¥æ”¹å˜æˆ–覆盖局部物ç†"
+"傿•°ï¼ˆé‡åŠ›ã€é˜»å°¼ï¼‰ï¼Œå¹¶å°†éŸ³é¢‘路由到一个自定义的音频总线。"
#: doc/classes/Area2D.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/physics/using_area_2d.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/physics/using_area_2d."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/physics/using_area_2d.html"
#: doc/classes/Area2D.xml:12 doc/classes/CollisionShape2D.xml:12
#: doc/classes/RectangleShape2D.xml:10
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/121"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/121"
#: doc/classes/Area2D.xml:13 doc/classes/Camera2D.xml:12
#: doc/classes/KinematicBody2D.xml:15 doc/classes/TileMap.xml:12
#: doc/classes/TileSet.xml:12
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/120"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/120"
#: doc/classes/Area2D.xml:19
msgid ""
@@ -7773,19 +7833,17 @@ msgstr ""
"ä¸ä¼šåœ¨å¯¹è±¡ç§»åЍåŽç«‹å³æ›´æ–°ï¼Œåªä¼šåœ¨ç‰©ç†æ›´æ–°æ—¶è¿›è¡Œç»Ÿä¸€ä¿®æ”¹ã€‚å¯ä»¥è€ƒè™‘改用信å·ã€‚"
#: doc/classes/Area2D.xml:32
-#, fuzzy
msgid ""
"If [code]true[/code], the given area overlaps the Area2D.\n"
"[b]Note:[/b] The result of this test is not immediate after moving objects. "
"For performance, the list of overlaps is updated once per frame and before "
"the physics step. Consider using signals instead."
msgstr ""
-"如果[code]true[/code],则给定区域与Area2Dé‡å ã€‚\n"
-"[b]注æ„:[/b]在移动物体åŽï¼Œè¿™ä¸ªæµ‹è¯•çš„ç»“æžœä¸æ˜¯ç«‹å³çš„。为了性能,é‡å åˆ—表æ¯å¸§æ›´"
-"æ–°ä¸€æ¬¡ï¼Œå¹¶ä¸”åœ¨ç‰©ç†æ­¥éª¤ä¹‹å‰æ›´æ–°ã€‚å¯ä»¥è€ƒè™‘ä½¿ç”¨ä¿¡å·æ¥ä»£æ›¿ã€‚"
+"如果 [code]true[/code],则给定区域与该区域é‡å ã€‚\n"
+"[b]注æ„:[/b]在移动物体åŽï¼Œè¿™ä¸ªæµ‹è¯•çš„ç»“æžœä¸æ˜¯å³æ—¶çš„。为了性能,é‡å åˆ—表在æ¯ä¸€"
+"å¸§å’Œç‰©ç†æ­¥éª¤ä¹‹å‰æ›´æ–°ä¸€æ¬¡ã€‚å¯ä»¥è€ƒè™‘用信å·ä»£æ›¿ã€‚"
#: doc/classes/Area2D.xml:40
-#, fuzzy
msgid ""
"If [code]true[/code], the given physics body overlaps the Area2D.\n"
"[b]Note:[/b] The result of this test is not immediate after moving objects. "
@@ -7795,89 +7853,112 @@ msgid ""
"[TileMap] instance (while TileMaps are not physics bodies themselves, they "
"register their tiles with collision shapes as a virtual physics body)."
msgstr ""
-"如果[code]true[/code],给定的物ç†ä½“与Area2Dé‡å ã€‚\n"
-"[b]注æ„:[/b]在移动物体åŽï¼Œè¿™ä¸ªæµ‹è¯•çš„ç»“æžœä¸æ˜¯ç«‹å³çš„。为了性能,é‡å åˆ—表æ¯å¸§æ›´"
-"æ–°ä¸€æ¬¡ï¼Œå¹¶ä¸”åœ¨ç‰©ç†æ­¥éª¤ä¹‹å‰æ›´æ–°ã€‚å¯ä»¥è€ƒè™‘ä½¿ç”¨ä¿¡å·æ¥ä»£æ›¿ã€‚\n"
+"如果[code]true[/code],给定的物ç†ä½“就与Area2Då‘生é‡å ã€‚\n"
+"[b]注æ„:[/b]在移动物体åŽï¼Œè¿™ä¸ªæµ‹è¯•çš„ç»“æžœä¸æ˜¯å³æ—¶çš„。为了性能,é‡å åˆ—表在æ¯ä¸€"
+"å¸§å’Œç‰©ç†æ­¥éª¤ä¹‹å‰æ›´æ–°ä¸€æ¬¡ã€‚å¯ä»¥è€ƒè™‘ä½¿ç”¨ä¿¡å·æ¥ä»£æ›¿ã€‚\n"
"[code]body[/code]傿•°å¯ä»¥æ˜¯ä¸€ä¸ª[PhysicsBody2D]或一个[TileMap]实例(虽然"
-"TileMapsæœ¬èº«ä¸æ˜¯ç‰©ç†ä½“,但它们将其带有碰撞形状的瓷砖注册为虚拟物ç†ä½“)。"
+"TileMapsæœ¬èº«ä¸æ˜¯ç‰©ç†ä½“,但它们用碰撞形状注册它们的瓦片作为一个虚拟物ç†ä½“)。"
#: doc/classes/Area2D.xml:48
-#, fuzzy
msgid ""
"The rate at which objects stop spinning in this area. Represents the angular "
"velocity lost per second.\n"
"See [member ProjectSettings.physics/2d/default_angular_damp] for more "
"details about damping."
msgstr ""
-"ç‰©ä½“åœ¨æ­¤åŒºåŸŸåœæ­¢æ—‹è½¬çš„速度。代表æ¯ç§’æŸå¤±çš„角速度。值的范围是[code]0[/code]"
-"(无阻尼)到[code]1[/code](全阻尼)。"
+"ç‰©ä½“åœ¨æ­¤åŒºåŸŸåœæ­¢æ—‹è½¬çš„速度。代表æ¯ç§’æŸå¤±çš„角速度。\n"
+"关于阻尼的更多细节,è§[member ProjectSettings.physics/2D/"
+"default_angular_damp]。"
#: doc/classes/Area2D.xml:58
-#, fuzzy
msgid ""
"The area's gravity intensity (in pixels per second squared). This value "
"multiplies the gravity vector. This is useful to alter the force of gravity "
"without altering its direction."
msgstr ""
-"该地区的é‡åŠ›å¼ºåº¦ï¼ˆèŒƒå›´ä»Ž-1024到1024)。这个值是é‡åŠ›å‘é‡çš„倿•°ã€‚è¿™å¯¹äºŽåœ¨ä¸æ”¹å˜"
-"é‡åŠ›æ–¹å‘的情况下改å˜é‡åŠ›çš„ä½œç”¨åŠ›å¾ˆæœ‰ç”¨ã€‚"
+"该区域的é‡åŠ›å¼ºåº¦ï¼ˆä»¥åƒç´ /秒的平方为å•ä½ï¼‰ã€‚这个值是é‡åŠ›å‘é‡çš„倿•°ã€‚这对改å˜å¼•"
+"力大å°è€Œä¸æ”¹å˜å…¶æ–¹å‘很有用。"
#: doc/classes/Area2D.xml:70
-#, fuzzy
msgid ""
"The rate at which objects stop moving in this area. Represents the linear "
"velocity lost per second.\n"
"See [member ProjectSettings.physics/2d/default_linear_damp] for more details "
"about damping."
msgstr ""
-"ç‰©ä½“åœ¨æ­¤åŒºåŸŸåœæ­¢è¿åŠ¨çš„é€Ÿåº¦ã€‚ä»£è¡¨æ¯ç§’æŸå¤±çš„线性速度。数值范围从[code]0[/code]"
-"(无阻尼)到[code]1[/code](全阻尼)。"
+"ç‰©ä½“åœ¨æ­¤åŒºåŸŸåœæ­¢è¿åŠ¨çš„é€Ÿåº¦ã€‚ä»£è¡¨æ¯ç§’æŸå¤±çš„线速度。\n"
+"关于阻尼的更多细节,è§[member ProjectSettings.physics/2D/"
+"default_linear_damp]。"
#: doc/classes/Area2D.xml:90
-#, fuzzy
msgid ""
"Emitted when another Area2D enters this Area2D. Requires [member monitoring] "
"to be set to [code]true[/code].\n"
"[code]area[/code] the other Area2D."
msgstr ""
-"当鼠标指针退出此对象的所有形状时å‘å‡ºã€‚è¦æ±‚[member input_pickable]为[code] "
-"true [/code],并且至少è¦è®¾ç½®ä¸€ä¸ª[code] collision_layer [/code]ä½ã€‚"
+"当å¦ä¸€ä¸ªArea2D进入这个Area2Dæ—¶å‘出的。需è¦å°†ç›‘控[member monitoring]设置为"
+"[code]true[/code]。\n"
+"[code]area[/code]傿•°æ˜¯å…¶ä»–Area2D。"
#: doc/classes/Area2D.xml:97
-#, fuzzy
msgid ""
"Emitted when another Area2D exits this Area2D. Requires [member monitoring] "
"to be set to [code]true[/code].\n"
"[code]area[/code] the other Area2D."
msgstr ""
-"当鼠标指针退出此对象的所有形状时å‘å‡ºã€‚è¦æ±‚[member input_pickable]为[code] "
-"true [/code],并且至少è¦è®¾ç½®ä¸€ä¸ª[code] collision_layer [/code]ä½ã€‚"
+"当å¦ä¸€ä¸ªArea2D离开这个Area2Dæ—¶å‘å‡ºçš„ã€‚è¦æ±‚监控[member monitoring]被设置为"
+"[code]true[/code]。\n"
+"[code]area[/code]傿•°æ˜¯å…¶ä»–Area2D。"
#: doc/classes/Area2D.xml:107
+#, fuzzy
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
-msgstr ""
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+"当å¦ä¸€ä¸ªArea2Dçš„[Shape2D]s进入这个Area2Dçš„[Shape2D]sæ—¶å‘å‡ºçš„ã€‚è¦æ±‚监控"
+"[member monitoring]被设置为[code]true[/code]。\n"
+"[code]area_id[/code] 傿•°æ˜¯ç”±[Physics2DServer]使用的其他Area2Dçš„"
+"[CollisionObject2D]的[RID]。\n"
+"[code]area[/code] 傿•°æ˜¯å…¶ä»–Area2D。\n"
+"[code]area_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的其他Area2Dçš„[Shape2D]çš„"
+"索引。\n"
+"[code]local_shape[/code]傿•°æ˜¯ ç”±[Physics2DServer]使用的这个Area2Dçš„[Shape2D]"
+"的索引。"
#: doc/classes/Area2D.xml:120
+#, fuzzy
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
-msgstr ""
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+"当å¦ä¸€ä¸ªArea2Dçš„[Shape2D]s离开这个Area2Dçš„[Shape2D]s之一时å‘å‡ºã€‚è¦æ±‚监控"
+"[member monitoring]被设置为[code]true[/code]。\n"
+"[code]area_id[/code] 傿•°æ˜¯ç”±[Physics2DServer]使用的其他Area2Dçš„"
+"[CollisionObject2D]的[RID]。\n"
+"[code]area[/code] 傿•°æ˜¯å…¶ä»–Area2D。\n"
+"[code]area_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的其他Area2Dçš„[Shape2D]çš„"
+"索引。\n"
+"[code]local_shape[/code] 傿•°æ˜¯ç”±[Physics2DServer]使用的这个Area2Dçš„[Shape2D]"
+"的索引。"
#: doc/classes/Area2D.xml:130
msgid ""
@@ -7887,6 +7968,11 @@ msgid ""
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap]."
msgstr ""
+"当一个[PhysicsBody2D]或[TileMap]进入这个Area2Dæ—¶å‘出的。需è¦å°†ç›‘控[member "
+"monitoring]设置为[code]true[/code]。如果[TileSet]有碰撞形状[Shape2D],则检测"
+"到[TileMap]。\n"
+"[code]body[/code]傿•°æ˜¯å…¶ä»–[PhysicsBody2D]或[TileMap]çš„[Node],如果它存在于树"
+"中。"
#: doc/classes/Area2D.xml:137
msgid ""
@@ -7896,46 +7982,79 @@ msgid ""
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap]."
msgstr ""
+"当 [PhysicsBody2D] 或 [TileMap] 离开此 Area2D æ—¶å‘出。需è¦å°†ç›‘控[member "
+"monitoring]设置为[code]true[/code]。如果 [TileSet] 具有碰撞形状 [Shape2D],则"
+"会检测到 [TileMap]。\n"
+"[code]body[/code] 傿•°æ˜¯å…¶ä»– [PhysicsBody2D] 或 [TileMap] çš„ [Node],如果它存"
+"在于树中。"
#: doc/classes/Area2D.xml:147
+#, fuzzy
msgid ""
"Emitted when one of a [PhysicsBody2D] or [TileMap]'s [Shape2D]s enters one "
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
-msgstr ""
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+"当[PhysicsBody2D]或[TileMap]çš„[Shape2D]之一进入此Area2Dçš„[Shape2D]之一时å‘"
+"出。需è¦å°†ç›‘控[member monitoring]设置为[code]true[/code]。如果[TileSet]有碰撞"
+"形状[Shape2D]s,就会检测到[TileMap]s。\n"
+"[code]body_id[/code]傿•°æ˜¯ [Physics2DServer]使用的[PhysicsBody2D]或[TileSet]"
+"的[CollisionObject2D]的RID。\n"
+"[code]body[/code]傿•°æ˜¯ [PhysicsBody2D]或[TileMap]çš„[节点],如果它在树上存在"
+"çš„è¯ã€‚\n"
+"[code]body_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的[PhysicsBody2D]或"
+"[TileMap]的[Shape2D]的索引。\n"
+"[code]local_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的这个Area2Dçš„[Shape2D]çš„"
+"索引。"
#: doc/classes/Area2D.xml:160
+#, fuzzy
msgid ""
"Emitted when one of a [PhysicsBody2D] or [TileMap]'s [Shape2D]s exits one of "
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
-msgstr ""
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+"当[PhysicsBody2D]或[TileMap]的一个[Shape2D]离开这个Area2D的一个[Shape2D]æ—¶å‘"
+"出的。需è¦å°†ç›‘控[member monitoring]设置为[code]true[/code]。如果[TileSet]有碰"
+"撞形状[Shape2D]s,就会检测到[TileMap]s。\n"
+"[code]body_id[/code] 傿•°æ˜¯[Physics2DServer]使用的[PhysicsBody2D]或[TileSet]"
+"的[CollisionObject2D]的RID。\n"
+"[code]body[/code]傿•°æ˜¯[PhysicsBody2D]或[TileMap]çš„[Node],如果它存在于树中的"
+"è¯ã€‚\n"
+"[code]body_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的[PhysicsBody2D]或"
+"[TileMap]的[Shape2D]的索引。\n"
+"[code]local_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的这个Area2Dçš„[Shape2D]çš„"
+"索引。"
#: doc/classes/Array.xml:4
-#, fuzzy
msgid "A generic array datatype."
msgstr "通用数组数æ®ç±»åž‹ã€‚"
#: doc/classes/Array.xml:7
-#, fuzzy
msgid ""
"A generic array that can contain several elements of any type, accessible by "
"a numerical index starting at 0. Negative indices can be used to count from "
@@ -7967,61 +8086,59 @@ msgid ""
"pushing/removing elements. Using [code]const[/code] will only prevent "
"assigning the constant with another value after it was initialized."
msgstr ""
-"通用数组,å¯ä»¥åŒ…å«è‹¥å¹²ä»»æ„类型的元素,通过由 0 开始的数字索引访问。负数索引从"
-"末尾开始计算,与 Python 类似(-1 为最åŽä¸€ä¸ªå…ƒç´ ï¼Œ-2 为倒数第二个元素,等"
-"等。)。\n"
-"[b]示例:[/b]\n"
+"一个通用数组,å¯ä»¥åŒ…å«å¤šä¸ªä»»ä½•类型的元素,å¯ä»¥é€šè¿‡ä»Ž0开始的数字索引进行访问。"
+"负数索引å¯ä»¥ç”¨æ¥ä»ŽåŽé¢æ•°èµ·ï¼Œå°±åƒåœ¨Python中一样(-1是最åŽä¸€ä¸ªå…ƒç´ ï¼Œ-2是倒数第"
+"二,等等)。\n"
+"[b]Example:[/b]\n"
"[codeblock]\n"
"var array = [\"One\", 2, 3, \"Four\"]\n"
-"print(array[0]) # One.\n"
+"print(array[0]) # One。\n"
"print(array[2]) # 3.\n"
"print(array[-1]) # Four.\n"
"array[2] = \"Three\"\n"
"print(array[-2]) # Three.\n"
"[/codeblock]\n"
-"Arrays can be concatenated using the [code]+[/code] operator:\n"
+"数组å¯ä»¥ä½¿ç”¨[code]+[/code]æ“作符进行连接。\n"
"[codeblock]\n"
"var array1 = [\"One\", 2]\n"
-"var array2 = [3, \"Four\"]\n"
+"var array2 = [3, \"4\"]\n"
"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n"
"[/codeblock]\n"
-"[b]注æ„:[/b] 数组总是传引用的。å¯ä»¥ä½¿ç”¨ [method duplicate] æ¥èŽ·å–æ•°ç»„的副"
-"本,这样就å¯ä»¥ä¸å½±å“原有数组,独立进行修改了。"
+"[b]注æ„:[/b] 用[code]+=[/code]æ“作符串è”将创建一个新的数组,这是有代价的。如"
+"果你想把å¦ä¸€ä¸ªæ•°ç»„追加到现有的数组中,[method append_array]会更有效。\n"
+"[b]注æ„:[/b] 数组总是通过引用æ¥ä¼ é€’。è¦èŽ·å¾—ä¸€ä¸ªå¯ä»¥ç‹¬ç«‹äºŽåŽŸå§‹æ•°ç»„è€Œè¢«ä¿®æ”¹çš„"
+"数组的副本,请使用[method duplicate]。\n"
+"[b]注æ„:[/b] 当用[code]const[/code]声明一个数组时,数组本身ä»ç„¶å¯ä»¥é€šè¿‡å®šä¹‰å„"
+"个索引上的值或推/移元素而被修改。使用[code]const[/code]åªèƒ½é˜²æ­¢åœ¨åˆå§‹åŒ–常数åŽ"
+"将其赋值给å¦ä¸€ä¸ªå€¼ã€‚"
#: doc/classes/Array.xml:34
-#, fuzzy
msgid "Constructs an array from a [PoolColorArray]."
-msgstr "从 [PackedColorArray] 构造数组。"
+msgstr "从[PoolColorArray]构建一个数组。"
#: doc/classes/Array.xml:41
-#, fuzzy
msgid "Constructs an array from a [PoolVector3Array]."
-msgstr "从 [PackedVector3Array] 构造数组。"
+msgstr "从一个[PoolVector3Array]构建一个数组。"
#: doc/classes/Array.xml:48
-#, fuzzy
msgid "Constructs an array from a [PoolVector2Array]."
-msgstr "从 [PackedVector2Array] 构造数组。"
+msgstr "从[PoolVector2Array]构造一个数组。"
#: doc/classes/Array.xml:55
-#, fuzzy
msgid "Constructs an array from a [PoolStringArray]."
-msgstr "从 [PackedStringArray] 构造数组。"
+msgstr "从[PoolStringArray]构建一个数组。"
#: doc/classes/Array.xml:62
-#, fuzzy
msgid "Constructs an array from a [PoolRealArray]."
-msgstr "从 [PackedColorArray] 构造数组。"
+msgstr "从[PoolRealArray]构造一个数组。"
#: doc/classes/Array.xml:69
-#, fuzzy
msgid "Constructs an array from a [PoolIntArray]."
-msgstr "从 [PackedInt64Array] 构造数组。"
+msgstr "从[PoolIntArray]构建一个数组。"
#: doc/classes/Array.xml:76
-#, fuzzy
msgid "Constructs an array from a [PoolByteArray]."
-msgstr "从 [PackedByteArray] 构造数组。"
+msgstr "从[PoolByteArray]构建一个数组。"
#: doc/classes/Array.xml:82 doc/classes/PoolByteArray.xml:23
#: doc/classes/PoolColorArray.xml:23 doc/classes/PoolIntArray.xml:24
@@ -8041,6 +8158,13 @@ msgid ""
"print(array1) # Prints [1, 2, 3, 4, 5, 6].\n"
"[/codeblock]"
msgstr ""
+"在此数组的末尾追加å¦ä¸€ä¸ªæ•°ç»„。\n"
+"[codeblock]\n"
+"var array1 = [1, 2, 3]\n"
+"var array2 = [4, 5, 6]\n"
+"array1.append_array(array2)\n"
+"print(array1) # æ‰“å° [1, 2, 3, 4, 5, 6].\n"
+"[/codeblock]"
#: doc/classes/Array.xml:100
msgid ""
@@ -8050,6 +8174,10 @@ msgid ""
"[/code]. If the array is empty, accessing by index will pause project "
"execution when running from the editor."
msgstr ""
+"返回数组的最åŽä¸€ä¸ªå…ƒç´ ã€‚如果数组为空,则打å°ä¸€ä¸ªé”™è¯¯å¹¶è¿”回[code]null[/"
+"code]。\n"
+"[b]注æ„:[/b] 调用这个函数与写入[code]array[-1][/code]ä¸ä¸€æ ·ï¼Œå¦‚果数组是空"
+"的,当从编辑器è¿è¡Œæ—¶ï¼ŒæŒ‰ç´¢å¼•访问将暂åœé¡¹ç›®çš„æ‰§è¡Œã€‚"
#: doc/classes/Array.xml:109
msgid ""
@@ -8067,7 +8195,6 @@ msgstr ""
"[b]注æ„:[/b] 在未排åºçš„æ•°ç»„上调用 [method bsearch] 会产生预料之外的行为。"
#: doc/classes/Array.xml:120
-#, fuzzy
msgid ""
"Finds the index of an existing value (or the insertion index that maintains "
"sorting order, if the value is not yet present in the array) using binary "
@@ -8105,12 +8232,36 @@ msgid ""
"[b]Note:[/b] Calling [method bsearch_custom] on an unsorted array results in "
"unexpected behavior."
msgstr ""
-"自定义比较函数,使用二分法查找已有值的索引(该值ä¸å­˜åœ¨æ—¶ï¼Œä¸ºçŽ°æœ‰é¡ºåºä¸‹çš„æ’å…¥"
-"索引)。[code]before[/code] 傿•°æ˜¯å¯é€‰çš„,为 [code]false[/code] 时返回的索引"
-"ä½äºŽæ•°ç»„中所有åŒå€¼å…ƒç´ ä¹‹åŽã€‚自定义的比较函数接å—ä¸¤ä¸ªå‚æ•°ï¼ˆä¸€ä¸ªæ˜¯æ•°ç»„中的元"
-"ç´ ã€ä¸€ä¸ªæ˜¯æŸ¥æ‰¾çš„ç›®æ ‡å€¼ï¼‰ï¼Œå¿…é¡»åœ¨ç¬¬ä¸€ä¸ªå‚æ•°å°äºŽç¬¬äºŒä¸ªå‚数时返回 [code]true[/"
-"code],å¦åˆ™è¿”回 [code]false[/code]。\n"
-"[b]注æ„:[/b] 在未排åºçš„æ•°ç»„上调用 [method bsearch] 会产生预料之外的行为。"
+"使用二分法查找以åŠåœ¨[code]obj[/code]中声明的自定义比较方法,已有值的索引(该"
+"值ä¸å­˜åœ¨æ—¶ï¼Œä¸ºçŽ°æœ‰é¡ºåºä¸‹çš„æ’å…¥ç´¢å¼•ï¼‰ã€‚[code]before[/code] 傿•°æ˜¯å¯é€‰çš„,为 "
+"[code]false[/code] 时返回的索引ä½äºŽæ•°ç»„中所有åŒå€¼å…ƒç´ ä¹‹åŽã€‚自定义方法接收两个"
+"傿•°ï¼ˆæ•°ç»„ä¸­çš„å€¼å’Œè¦æœç´¢çš„å€¼ï¼‰ï¼Œå¦‚æžœç¬¬ä¸€ä¸ªå‚æ•°å°äºŽç¬¬äºŒä¸ªå‚数,必须返回"
+"[code]true[/code],å¦åˆ™è¿”回[code]false[/code]。\n"
+"[codeblock]\n"
+"func cardinal_to_algebraic(a):\n"
+" match a:\n"
+" \"one\":\n"
+" return 1\n"
+" \"two\":\n"
+" return 2\n"
+" \"three\":\n"
+" return 3\n"
+" \"four\":\n"
+" return 4\n"
+" _:\n"
+" return 0\n"
+"\n"
+"func compare(a, b):\n"
+" return cardinal_to_algebraic(a) < cardinal_to_algebraic(b)\n"
+"\n"
+"func _ready():\n"
+" var a = [\"one\", \"two\", \"three\", \"four\"]\n"
+" # `compare`是在这个对象中定义的,所以我们用`self`作为`obj`傿•°ã€‚\n"
+" print(a.bsearch_custom(\"three\", self, \"compare\", true))# 预期的值是"
+"2。\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b] 在未排åºçš„æ•°ç»„上调用[method bsearch_custom]会导致预料之外的行"
+"为。"
#: doc/classes/Array.xml:148
msgid ""
@@ -8153,6 +8304,10 @@ 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 ""
+"ä»Žæ•°ç»„ä¸­åˆ é™¤ç¬¬ä¸€æ¬¡å‡ºçŽ°çš„å€¼ã€‚è¦æŒ‰ç´¢å¼•删除元素,请改用 [method remove]。\n"
+"[b]注æ„:[/b] 该方法就地æ“作,ä¸è¿”回值。\n"
+"[b]注æ„:[/b] 在大型数组上,如果移除的元素é è¿‘数组的开头(索引 0),则此方法"
+"会较慢。这是因为所有放置在删除元素之åŽçš„å…ƒç´ éƒ½å¿…é¡»é‡æ–°ç´¢å¼•。"
#: doc/classes/Array.xml:185
msgid ""
@@ -8177,9 +8332,11 @@ msgid ""
"[/code]. If the array is empty, accessing by index will pause project "
"execution when running from the editor."
msgstr ""
+"返回数组的第一个元素。如果数组为空,则打å°é”™è¯¯å¹¶è¿”回 [code]null[/code]。\n"
+"[b]注:[/b]调用这个函数和写[code]array[0][/code]是ä¸ä¸€æ ·çš„,如果数组为空,从"
+"编辑器è¿è¡Œæ—¶æŒ‰ç´¢å¼•访问将暂åœé¡¹ç›®æ‰§è¡Œã€‚"
#: doc/classes/Array.xml:206
-#, fuzzy
msgid ""
"Returns [code]true[/code] if the array contains the given value.\n"
"[codeblock]\n"
@@ -8196,19 +8353,18 @@ msgid ""
" pass\n"
"[/codeblock]"
msgstr ""
-"è¯¥æ•°ç»„åŒ…å«æŒ‡å®šå€¼æ—¶ï¼Œè¿”回 [code]true[/code]。\n"
+"å¦‚æžœæ•°ç»„åŒ…å«æŒ‡å®šå€¼æ—¶ï¼Œè¿”回 [code]true[/code]。\n"
"[codeblock]\n"
-"print([\"inside\", 7].has(\"inside\")) # True\n"
-"print([\"inside\", 7].has(\"outside\")) # False\n"
-"print([\"inside\", 7].has(7)) # True\n"
-"print([\"inside\", 7].has(\"7\")) # False\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] This is equivalent to using the [code]in[/code] operator as "
-"follows:\n"
-"[codeblock]\n"
-"# Will evaluate to `true`.\n"
+" [b]注æ„:[/b]这等åŒäºŽä½¿ç”¨[code]in[/code]æ“作符,如下所示。\n"
+"[codeblock] \n"
+"# 将评估为 `true`。 \n"
"if 2 in [2, 4, 6, 8]:\n"
-" pass\n"
+" pass \n"
"[/codeblock]"
#: doc/classes/Array.xml:224
@@ -8419,7 +8575,7 @@ msgstr ""
#: doc/classes/ArrayMesh.xml:4
msgid ""
"[Mesh] type that provides utility for constructing a surface from arrays."
-msgstr "[Mesh(网格)] 类型,æä¾›äº†ç”¨äºŽä»Žæ•°ç»„构造表é¢çš„实用程åºã€‚"
+msgstr "[Mesh] 网格类型,æä¾›äº†ç”¨äºŽä»Žæ•°ç»„构造表é¢çš„工具。"
#: doc/classes/ArrayMesh.xml:7
#, fuzzy
@@ -8473,13 +8629,12 @@ msgstr ""
"com/Advanced-OpenGL/Face-culling]winding order[/url]。"
#: doc/classes/ArrayMesh.xml:29
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/content/procedural_geometry/"
"arraymesh.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/content/"
-"procedural_geometry/arraymesh.html"
+"https://docs.godotengine.org/en/3.4/tutorials/content/procedural_geometry/"
+"arraymesh.html"
#: doc/classes/ArrayMesh.xml:36
msgid ""
@@ -8512,7 +8667,7 @@ msgstr ""
"PrimitiveType]中定义的任何类型。 (请注æ„,使用索引时,建议仅使用点,线或三角"
"形。)[method.Mesh.get_surface_count]å°†æˆä¸ºæ­¤æ–°æ›²é¢çš„[code] surf_idx [/"
"code]。\n"
-"[code] arrays [/code]傿•°æ˜¯ä¸€ä¸ªæ•°ç»„数组。有关此数组中使用的值,请å‚è§[enum "
+"[code] arrays [/code]傿•°æ˜¯ä¸€ä¸ªæ•°ç»„数组。有关此数组中使用的值,请å‚阅[enum "
"ArrayType]。例如,[code] arrays [0] [/code]是顶点的数组。始终需è¦ç¬¬ä¸€ä¸ªé¡¶ç‚¹å­"
"数组;其他是å¯é€‰çš„。添加索引数组会使此函数进入“索引模å¼â€ï¼Œåœ¨è¯¥æ¨¡å¼ä¸‹ï¼Œé¡¶ç‚¹å’Œ"
"其他数组æˆä¸ºæ•°æ®æºï¼Œè€Œç´¢å¼•数组定义了顶点顺åºã€‚æ‰€æœ‰å­æ•°ç»„的长度必须与顶点数组"
@@ -8558,7 +8713,7 @@ msgid ""
"Returns the length in indices of the index array in the requested surface "
"(see [method add_surface_from_arrays])."
msgstr ""
-"返回请求的曲é¢çš„索引数组的长度,以指数为å•ä½ï¼ˆå‚è§[method "
+"返回请求的曲é¢çš„索引数组的长度,以指数为å•ä½ï¼ˆå‚阅[method "
"add_surface_from_arrays])。"
#: doc/classes/ArrayMesh.xml:115
@@ -8566,14 +8721,14 @@ msgid ""
"Returns the length in vertices of the vertex array in the requested surface "
"(see [method add_surface_from_arrays])."
msgstr ""
-"返回所请求曲é¢ä¸­é¡¶ç‚¹æ•°ç»„的顶点长度(请å‚è§[method "
+"返回所请求曲é¢ä¸­é¡¶ç‚¹æ•°ç»„的顶点长度(请å‚阅[method "
"add_surface_from_arrays])。"
#: doc/classes/ArrayMesh.xml:122
msgid ""
"Returns the format mask of the requested surface (see [method "
"add_surface_from_arrays])."
-msgstr "返回所请求表é¢çš„æ ¼å¼æŽ©ç ï¼ˆè¯·å‚è§[method add_surface_from_arrays])。"
+msgstr "返回所请求表é¢çš„æ ¼å¼æŽ©ç ï¼ˆè¯·å‚阅[method add_surface_from_arrays])。"
#: doc/classes/ArrayMesh.xml:129
msgid "Gets the name assigned to this surface."
@@ -8583,7 +8738,7 @@ msgstr "获å–分é…给此表é¢çš„å称。"
msgid ""
"Returns the primitive type of the requested surface (see [method "
"add_surface_from_arrays])."
-msgstr "返回所请求曲é¢çš„基本类型(请å‚è§[method add_surface_from_arrays])。"
+msgstr "返回所请求曲é¢çš„基本类型(请å‚阅[method add_surface_from_arrays])。"
#: doc/classes/ArrayMesh.xml:143
#, fuzzy
@@ -8635,9 +8790,8 @@ msgid "[PoolVector3Array], [PoolVector2Array], or [Array] of vertex positions."
msgstr "顶点ä½ç½®çš„[PackedVector3Array]ã€[PackedVector2Array]或[Array]。"
#: doc/classes/ArrayMesh.xml:184
-#, fuzzy
msgid "[PoolVector3Array] of vertex normals."
-msgstr "顶点法线的[PackedVector3Array]。"
+msgstr "[PoolVector3Array] 顶点法线。"
#: doc/classes/ArrayMesh.xml:187
#, fuzzy
@@ -8650,14 +8804,12 @@ msgstr ""
"åŽä¸€ä¸ªåŒæ³•线方å‘为-1或1。"
#: doc/classes/ArrayMesh.xml:190
-#, fuzzy
msgid "[PoolColorArray] of vertex colors."
-msgstr "顶点颜色的[PackedColorArray]。"
+msgstr "[PoolColorArray] 顶点颜色。"
#: doc/classes/ArrayMesh.xml:193
-#, fuzzy
msgid "[PoolVector2Array] for UV coordinates."
-msgstr "UVåæ ‡çš„[PackedVector2Array]。"
+msgstr "[PoolVector2Array] 用于UVåæ ‡ã€‚"
#: doc/classes/ArrayMesh.xml:196
#, fuzzy
@@ -8700,7 +8852,7 @@ msgstr ""
"是æˆå¯¹çš„,指示æ¯è¡Œçš„开始和结æŸã€‚"
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr "表示[enum ArrayType]枚举的大å°ã€‚"
@@ -8861,9 +9013,8 @@ msgstr ""
#: doc/classes/ARVRCamera.xml:11 doc/classes/ARVRController.xml:12
#: doc/classes/ARVRInterface.xml:11 doc/classes/ARVROrigin.xml:13
#: doc/classes/ARVRPositionalTracker.xml:12 doc/classes/ARVRServer.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/vr/index.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/vr/index.html"
#: doc/classes/ARVRController.xml:4
msgid "A spatial node representing a spatially-tracked controller."
@@ -9116,9 +9267,8 @@ msgid "[code]true[/code] if this is the primary interface."
msgstr "[code]true[/code] 如果这是个主接å£ã€‚"
#: doc/classes/ARVRInterface.xml:80
-#, fuzzy
msgid "No ARVR capabilities."
-msgstr "没有XR功能。"
+msgstr "没有ARVR功能。"
#: doc/classes/ARVRInterface.xml:83
msgid ""
@@ -9364,7 +9514,7 @@ msgstr "AR/VRæœåŠ¡æ˜¯æˆ‘ä»¬é«˜çº§çš„è™šæ‹ŸçŽ°å®žè§£å†³æ–¹æ¡ˆçš„æ ¸å¿ƒï¼Œè´Ÿè´£å
#: doc/classes/ARVRServer.xml:17
msgid "Registers an [ARVRInterface] object."
-msgstr ""
+msgstr "注册一个[ARVRInterface]对象。"
#: doc/classes/ARVRServer.xml:24
msgid ""
@@ -9398,7 +9548,7 @@ msgstr ""
"å¯¹äºŽä¸æä¾›ç©ºé—´è·Ÿè¸ªçš„å¹³å°ï¼Œæˆ‘们的原点 (0,0,0) 是 HMD çš„ä½ç½®ï¼Œä½†æ‚¨å‡ ä¹Žæ— æ³•控制"
"玩家在现实世界中é¢å¯¹çš„æ–¹å‘。\n"
"对于æä¾›ç©ºé—´è·Ÿè¸ªçš„å¹³å°ï¼Œæˆ‘们的原点在很大程度上å–决于系统。对于 OpenVR,原点通"
-"常是地é¢ä¸Šè·Ÿè¸ªç©ºé—´çš„中心。对于其他平å°ï¼Œå®ƒé€šå¸¸æ˜¯è·Ÿè¸ªæ‘„åƒæœºçš„ä½ç½®ã€‚\n"
+"常是地é¢ä¸Šè·Ÿè¸ªç©ºé—´çš„中心。对于其他平å°ï¼Œå®ƒé€šå¸¸æ˜¯è·Ÿè¸ªç›¸æœºçš„ä½ç½®ã€‚\n"
"此方法å…许您将跟踪器置于 HMD çš„ä½ç½®ã€‚å®ƒå°†èŽ·å– HMD 的当å‰ä½ç½®å¹¶ä½¿ç”¨å®ƒæ¥è°ƒæ•´æ‚¨"
"的所有跟踪数æ®ï¼›ä»Žæœ¬è´¨ä¸Šè®²ï¼Œå°†çŽ°å®žä¸–ç•Œé‡æ–°è°ƒæ•´åˆ°çŽ©å®¶åœ¨æ¸¸æˆä¸–界中的当å‰ä½"
"置。\n"
@@ -9491,14 +9641,12 @@ msgid "Returns the number of trackers currently registered."
msgstr "è¿”å›žå½“å‰æ³¨å†Œçš„跟踪器的数é‡ã€‚"
#: doc/classes/ARVRServer.xml:120
-#, fuzzy
msgid "Removes this interface."
-msgstr "删除项目。"
+msgstr "移除此接å£ã€‚"
#: doc/classes/ARVRServer.xml:127
-#, fuzzy
msgid "Removes this positional tracker."
-msgstr "返回给定ID处的ä½ç½®è¿½è¸ªå™¨ã€‚"
+msgstr "移除此ä½ç½®è·Ÿè¸ªå™¨ã€‚"
#: doc/classes/ARVRServer.xml:133
#, fuzzy
@@ -9594,7 +9742,7 @@ msgstr "ä¸é‡ç½®HMD的方å‘,åªè®©çŽ©å®¶çš„ä½ç½®å±…中。"
#: doc/classes/AspectRatioContainer.xml:4
msgid "Container that preserves its child controls' aspect ratio."
-msgstr ""
+msgstr "ä¿ç•™å…¶å­æŽ§ä»¶é•¿å®½æ¯”的容器。"
#: doc/classes/AspectRatioContainer.xml:7
msgid ""
@@ -9603,6 +9751,8 @@ msgid ""
"the container size is dynamic and the contents' size needs to adjust "
"accordingly without losing proportions."
msgstr ""
+"ä»¥ä¸€ç§æ–¹å¼å®‰æŽ’å­æŽ§ä»¶ï¼Œä»¥ä¾¿åœ¨å®¹å™¨è°ƒæ•´å¤§å°æ—¶è‡ªåЍä¿ç•™å…¶é•¿å®½æ¯”ã€‚è§£å†³äº†å®¹å™¨å¤§å°æ˜¯"
+"动æ€çš„,而内容的大å°éœ€è¦ç›¸åº”调整而ä¸å¤±åŽ»æ¯”ä¾‹çš„é—®é¢˜ã€‚"
#: doc/classes/AspectRatioContainer.xml:15
#, fuzzy
@@ -9619,6 +9769,8 @@ msgid ""
"The aspect ratio to enforce on child controls. This is the width divided by "
"the height. The ratio depends on the [member stretch_mode]."
msgstr ""
+"å¯¹å­æŽ§ä»¶å¼ºåˆ¶å®žæ–½çš„é•¿å®½æ¯”ã€‚è¿™æ˜¯å®½åº¦é™¤ä»¥é«˜åº¦ã€‚è¿™ä¸ªæ¯”ä¾‹å–决于[member "
+"stretch_mode]。"
#: doc/classes/AspectRatioContainer.xml:24
#, fuzzy
@@ -9629,7 +9781,7 @@ msgstr "ç”¨äºŽâ€œå‘¼å«æ–¹æ³•â€è½¨é“çš„å‘¼å«æ¨¡å¼ã€‚"
msgid ""
"The height of child controls is automatically adjusted based on the width of "
"the container."
-msgstr ""
+msgstr "å­æŽ§ä»¶çš„é«˜åº¦ä¼šæ ¹æ®å®¹å™¨çš„宽度自动调整。"
#: doc/classes/AspectRatioContainer.xml:32
#, fuzzy
@@ -9642,7 +9794,7 @@ msgstr "如果为 [code]true[/code],控件将自动调整高度以适åˆå…¶å†…
msgid ""
"The bounding rectangle of child controls is automatically adjusted to fit "
"inside the container while keeping the aspect ratio."
-msgstr ""
+msgstr "å­æŽ§ä»¶çš„è¾¹ç•ŒçŸ©å½¢ä¼šè‡ªåŠ¨è°ƒæ•´ä»¥é€‚åº”å®¹å™¨ï¼ŒåŒæ—¶ä¿æŒé•¿å®½æ¯”。"
#: doc/classes/AspectRatioContainer.xml:38
msgid ""
@@ -9653,6 +9805,10 @@ 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 ""
+"å­æŽ§ä»¶çš„å®½åº¦å’Œé«˜åº¦è¢«è‡ªåŠ¨è°ƒæ•´ï¼Œä»¥ä½¿å…¶è¾¹ç•ŒçŸ©å½¢è¦†ç›–å®¹å™¨çš„æ•´ä¸ªåŒºåŸŸï¼ŒåŒæ—¶ä¿æŒé•¿å®½"
+"比。\n"
+"å½“å­æŽ§ä»¶çš„è¾¹ç•ŒçŸ©å½¢è¶…è¿‡å®¹å™¨çš„å¤§å°ï¼Œå¹¶ä¸”[member Control.rect_clip_content]被å¯"
+"用时,这仅å…许显示å—其自身边界矩形é™åˆ¶çš„容器区域。"
#: doc/classes/AspectRatioContainer.xml:42
#, fuzzy
@@ -10240,7 +10396,7 @@ msgstr ""
#: doc/classes/AtlasTexture.xml:4
msgid ""
"Crops out one part of a texture, such as a texture from a texture atlas."
-msgstr ""
+msgstr "将纹ç†çš„一部分è£å‰ªå‡ºæ¥ï¼Œä¾‹å¦‚æ¥è‡ªçº¹ç†å›¾é›†çš„纹ç†ã€‚"
#: doc/classes/AtlasTexture.xml:7
msgid ""
@@ -10295,7 +10451,7 @@ msgid ""
"the connections between buses. See [AudioServer] for usage."
msgstr ""
"存储ä½ç½®ã€é™éŸ³ã€ç‹¬å¥ã€æ—è·¯ã€æ•ˆæžœã€æ•ˆæžœä½ç½®ã€éŸ³é‡ä»¥åŠæ€»çº¿ä¹‹é—´çš„连接。使用方法"
-"å‚è§ [AudioServer] 。"
+"å‚阅 [AudioServer] 。"
#: doc/classes/AudioEffect.xml:4
msgid "Audio effect for audio."
@@ -10310,9 +10466,8 @@ msgstr "音频总线的基础资æºã€‚åœ¨è¯¥èµ„æºæ‰€åº”用的总线上应用音
#: doc/classes/AudioEffect.xml:10 doc/classes/AudioEffectRecord.xml:11
#: doc/classes/AudioServer.xml:12 doc/classes/AudioStream.xml:12
#: doc/classes/AudioStreamPlayer.xml:15
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/527"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/527"
#: doc/classes/AudioEffectAmplify.xml:4
msgid ""
@@ -10654,10 +10809,8 @@ msgstr ""
#: doc/classes/AudioEffectFilter.xml:10
#: doc/classes/AudioEffectHighShelfFilter.xml:9
#: doc/classes/AudioEffectLowShelfFilter.xml:9 doc/classes/AudioServer.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/audio/audio_buses.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/audio/audio_buses.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/audio/audio_buses.html"
#: doc/classes/AudioEffectDistortion.xml:18
msgid "Distortion power. Value can range from 0 to 1."
@@ -11126,12 +11279,11 @@ msgstr ""
"缩)。它检查录音是å¦å¤„于活动状æ€ï¼Œå¦‚果是,则记录声音。然åŽè¿”回记录的样本。"
#: doc/classes/AudioEffectRecord.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/audio/"
"recording_with_microphone.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/audio/"
+"https://docs.godotengine.org/en/3.4/tutorials/audio/"
"recording_with_microphone.html"
#: doc/classes/AudioEffectRecord.xml:17
@@ -11233,13 +11385,13 @@ msgstr ""
#: doc/classes/AudioEffectSpectrumAnalyzer.xml:11
msgid "Audio Spectrum Demo"
-msgstr ""
+msgstr "音频频谱演示"
#: doc/classes/AudioEffectSpectrumAnalyzer.xml:12
#: doc/classes/AudioStreamGenerator.xml:13
#: doc/classes/AudioStreamGeneratorPlayback.xml:11
msgid "Godot 3.2 will get new audio features"
-msgstr ""
+msgstr "Godot 3.2将获得新的音频功能"
#: doc/classes/AudioEffectSpectrumAnalyzer.xml:18
msgid ""
@@ -11278,15 +11430,13 @@ msgstr ""
"频)以åŠé€šè¿‡è¯­éŸ³æŽ¥å£è¿›è¡Œæ’­æ”¾ã€‚"
#: doc/classes/AudioServer.xml:11 doc/classes/AudioStreamPlayer.xml:13
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/525"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/525"
#: doc/classes/AudioServer.xml:13 doc/classes/AudioStream.xml:13
#: doc/classes/AudioStreamPlayer.xml:16 doc/classes/CanvasItem.xml:17
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/528"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/528"
#: doc/classes/AudioServer.xml:20
msgid "Adds a bus at [code]at_position[/code]."
@@ -11304,7 +11454,7 @@ msgstr ""
msgid ""
"Name of the current device for audio input (see [method "
"capture_get_device_list])."
-msgstr "当å‰éŸ³é¢‘输入设备的å称(å‚è§[method capture_get_device_list])。"
+msgstr "当å‰éŸ³é¢‘输入设备的å称(å‚阅[method capture_get_device_list])。"
#: doc/classes/AudioServer.xml:41
msgid "Returns the names of all audio input devices detected on the system."
@@ -11490,7 +11640,7 @@ msgstr "å¯ç”¨éŸ³é¢‘总线的数é‡ã€‚"
#: doc/classes/AudioServer.xml:312
msgid ""
"Name of the current device for audio output (see [method get_device_list])."
-msgstr "用于音频输出的当å‰è®¾å¤‡çš„å称(请å‚è§[method get_device_list])。"
+msgstr "用于音频输出的当å‰è®¾å¤‡çš„å称(请å‚阅[method get_device_list])。"
#: doc/classes/AudioServer.xml:315
msgid ""
@@ -11536,17 +11686,14 @@ msgstr ""
#: doc/classes/AudioStream.xml:10 doc/classes/AudioStreamPlayer.xml:11
#: doc/classes/AudioStreamPlayer2D.xml:12
#: doc/classes/AudioStreamPlayer3D.xml:13
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/audio/audio_streams.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/audio/audio_streams.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/audio/audio_streams.html"
#: doc/classes/AudioStream.xml:11 doc/classes/AudioStreamGenerator.xml:12
#: doc/classes/AudioStreamGeneratorPlayback.xml:10
#: doc/classes/AudioStreamPlayback.xml:10 doc/classes/AudioStreamPlayer.xml:14
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/526"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/526"
#: doc/classes/AudioStream.xml:19
msgid "Returns the length of the audio stream in seconds."
@@ -11554,7 +11701,7 @@ msgstr "返回音频æµçš„长度,å•ä½ä¸ºç§’。"
#: doc/classes/AudioStreamGenerator.xml:4
msgid "Audio stream that generates sounds procedurally."
-msgstr ""
+msgstr "ç¨‹åºæ€§åœ°äº§ç”Ÿå£°éŸ³çš„音频æµã€‚"
#: doc/classes/AudioStreamGenerator.xml:7
msgid ""
@@ -11595,7 +11742,7 @@ msgstr ""
#: doc/classes/AudioStreamGeneratorPlayback.xml:4
msgid "Plays back audio generated using [AudioStreamGenerator]."
-msgstr ""
+msgstr "播放使用[AudioStreamGenerator]生æˆçš„音频。"
#: doc/classes/AudioStreamGeneratorPlayback.xml:7
msgid ""
@@ -11610,8 +11757,8 @@ msgid ""
"pushed to the audio sample data buffer without overflowing it, [code]false[/"
"code] otherwise."
msgstr ""
-"如果[æˆå‘˜cull_mask]中给定的[code]layer[/code]被å¯ç”¨ï¼Œè¿”回[code]true[/code],"
-"å¦åˆ™è¿”回[code]false[/code]。"
+"如果[member cull_mask]中给定的[code]layer[/code]被å¯ç”¨ï¼Œè¿”回[code]true[/"
+"code],å¦åˆ™è¿”回[code]false[/code]。"
#: doc/classes/AudioStreamGeneratorPlayback.xml:24
#, fuzzy
@@ -11642,9 +11789,8 @@ msgstr ""
#: modules/minimp3/doc_classes/AudioStreamMP3.xml:4
#: modules/minimp3/doc_classes/AudioStreamMP3.xml:7
-#, fuzzy
msgid "MP3 audio stream driver."
-msgstr "OGG Vorbis音频æµé©±åŠ¨ç¨‹åºã€‚"
+msgstr "MP3 音频æµé©±åŠ¨ç¨‹åºã€‚"
#: modules/minimp3/doc_classes/AudioStreamMP3.xml:15
#: modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml:15
@@ -11677,7 +11823,7 @@ msgid ""
"Can play, loop, pause a scroll through audio. See [AudioStream] and "
"[AudioStreamOGGVorbis] for usage."
msgstr ""
-"å¯ä»¥æ’­æ”¾ï¼Œå¾ªçŽ¯ï¼Œæš‚åœæ»šåŠ¨éŸ³é¢‘ã€‚æœ‰å…³ç”¨æ³•ï¼Œè¯·å‚è§[AudioStream]å’Œ"
+"å¯ä»¥æ’­æ”¾ï¼Œå¾ªçŽ¯ï¼Œæš‚åœæ»šåŠ¨éŸ³é¢‘ã€‚æœ‰å…³ç”¨æ³•ï¼Œè¯·å‚阅[AudioStream]å’Œ"
"[AudioStreamOGGVorbis]。"
#: doc/classes/AudioStreamPlayer.xml:4
@@ -11898,7 +12044,7 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:73
msgid "The angle in which the audio reaches cameras undampened."
-msgstr "éŸ³é¢‘åˆ°è¾¾æ‘„åƒæœºçš„角度,ä¸å—è¡°å‡ã€‚"
+msgstr "音频到达相机的角度,ä¸å—è¡°å‡ã€‚"
#: doc/classes/AudioStreamPlayer3D.xml:76
msgid ""
@@ -11912,7 +12058,7 @@ msgid ""
"Dampens audio if camera is outside of [member emission_angle_degrees] and "
"[member emission_angle_enabled] is set by this factor, in decibels."
msgstr ""
-"å¦‚æžœæ‘„åƒæœºåœ¨[membermission_angle_degrees]ä¹‹å¤–ï¼Œå¹¶ä»¥æ­¤å‚æ•°è®¾ç½®"
+"如果相机在[membermission_angle_degrees]ä¹‹å¤–ï¼Œå¹¶ä»¥æ­¤å‚æ•°è®¾ç½®"
"[membermission_angle_enabled],则衰å‡éŸ³é¢‘,以dB为å•ä½ã€‚"
#: doc/classes/AudioStreamPlayer3D.xml:82
@@ -11972,7 +12118,10 @@ msgstr "æ ¹æ®è·ç¦»å¯¹æ•°é™ä½Žå“度。"
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12063,7 +12212,7 @@ msgstr ""
#: doc/classes/AudioStreamSample.xml:28
msgid "Audio format. See [enum Format] constants for values."
-msgstr "音频格å¼ã€‚å‚è§[enum Format]常é‡çš„值。"
+msgstr "音频格å¼ã€‚å‚阅[enum Format]常é‡çš„值。"
#: doc/classes/AudioStreamSample.xml:31
msgid ""
@@ -12086,7 +12235,7 @@ msgid ""
"The loop mode. This information will be imported automatically from the WAV "
"file if present. See [enum LoopMode] constants for values."
msgstr ""
-"循环模å¼ã€‚该信æ¯å°†è‡ªåŠ¨ä»ŽWAV文件中导入(如果存在)。有关值,请å‚è§[enum "
+"循环模å¼ã€‚该信æ¯å°†è‡ªåŠ¨ä»ŽWAV文件中导入(如果存在)。有关值,请å‚阅[enum "
"LoopMode]常é‡ã€‚"
#: doc/classes/AudioStreamSample.xml:40
@@ -12180,7 +12329,7 @@ msgstr ""
#: doc/classes/BackBufferCopy.xml:16
msgid "Buffer mode. See [enum CopyMode] constants."
-msgstr "缓冲区模å¼ã€‚å‚è§ [enum CopyMode] 常é‡ã€‚"
+msgstr "缓冲区模å¼ã€‚å‚阅 [enum CopyMode] 常é‡ã€‚"
#: doc/classes/BackBufferCopy.xml:19
msgid ""
@@ -12207,7 +12356,7 @@ msgstr "BackBufferCopyå¯ä»¥ç¼“冲整个å±å¹•。"
#: doc/classes/BakedLightmap.xml:4
msgid "Prerendered indirect light map for a scene."
-msgstr ""
+msgstr "场景的预渲染间接光照贴图。"
#: doc/classes/BakedLightmap.xml:7
msgid ""
@@ -12220,10 +12369,8 @@ msgid ""
msgstr ""
#: doc/classes/BakedLightmap.xml:11
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/baked_lightmaps.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/using_gridmaps.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/3d/baked_lightmaps.html"
#: doc/classes/BakedLightmap.xml:19
msgid ""
@@ -12288,7 +12435,7 @@ msgstr ""
#: doc/classes/BakedLightmap.xml:50
msgid "Bake quality of the capture data."
-msgstr ""
+msgstr "æ•获数æ®çš„烘焙质é‡ã€‚"
#: doc/classes/BakedLightmap.xml:53
msgid ""
@@ -12331,7 +12478,7 @@ msgstr ""
#: doc/classes/BakedLightmap.xml:71
msgid "Decides which environment to use during baking."
-msgstr ""
+msgstr "决定烘焙时使用哪个环境。"
#: doc/classes/BakedLightmap.xml:74
msgid ""
@@ -12347,9 +12494,8 @@ msgid ""
msgstr ""
#: doc/classes/BakedLightmap.xml:80
-#, fuzzy
msgid "The calculated light data."
-msgstr "胶囊的高度。"
+msgstr "计算出的光照数æ®ã€‚"
#: doc/classes/BakedLightmap.xml:83
msgid ""
@@ -12402,9 +12548,8 @@ msgid "The highest bake quality mode. Takes the longest to calculate."
msgstr ""
#: doc/classes/BakedLightmap.xml:110
-#, fuzzy
msgid "Baking was successful."
-msgstr "连接æˆåŠŸã€‚"
+msgstr "烘焙æˆåŠŸã€‚"
#: doc/classes/BakedLightmap.xml:113
msgid ""
@@ -12437,7 +12582,7 @@ msgstr "è¿”å›žå–æ¶ˆæŒ‰é’®ã€‚"
#: doc/classes/BakedLightmap.xml:133
msgid "No environment is used during baking."
-msgstr ""
+msgstr "烘焙过程中ä¸ä½¿ç”¨ä»»ä½•环境。"
#: doc/classes/BakedLightmap.xml:136
msgid "The baked environment is automatically picked from the current scene."
@@ -12680,26 +12825,22 @@ msgstr ""
#: doc/classes/Basis.xml:14 doc/classes/Transform.xml:12
#: doc/classes/Transform2D.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/math/matrices_and_transforms."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/math/"
-"matrices_and_transforms.html"
+"https://docs.godotengine.org/en/3.4/tutorials/math/matrices_and_transforms."
+"html"
#: doc/classes/Basis.xml:15 doc/classes/Transform.xml:13
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/using_transforms.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/using_transforms.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/3d/using_transforms.html"
#: doc/classes/Basis.xml:16 doc/classes/Line2D.xml:11
#: doc/classes/Transform.xml:14 doc/classes/Transform2D.xml:13
#: doc/classes/Vector2.xml:15 doc/classes/Vector3.xml:15
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/584"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/584"
#: doc/classes/Basis.xml:18 doc/classes/CylinderShape.xml:12
#: doc/classes/Dictionary.xml:88 doc/classes/DynamicFont.xml:18
@@ -12710,15 +12851,13 @@ msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
#: doc/classes/StaticBody.xml:13 doc/classes/SurfaceTool.xml:22
#: doc/classes/TextureButton.xml:12 doc/classes/TextureRect.xml:11
#: doc/classes/Thread.xml:13 doc/classes/VBoxContainer.xml:10
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/676"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/676"
#: doc/classes/Basis.xml:19 doc/classes/Line2D.xml:12
#: doc/classes/Transform.xml:16 doc/classes/Transform2D.xml:14
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/583"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/583"
#: doc/classes/Basis.xml:26
msgid "Constructs a pure rotation basis matrix from the given quaternion."
@@ -12793,7 +12932,7 @@ msgid ""
"get_euler] if you need Euler angles, but keep in mind quaternions should "
"generally be preferred to Euler angles."
msgstr ""
-"以四元数的形å¼è¿”å›žåŸºç¡€çš„æ—‹è½¬ã€‚å¦‚æžœä½ éœ€è¦æ¬§æ‹‰è§’,请å‚è§ [get_euler] 方法,但通"
+"以四元数的形å¼è¿”å›žåŸºç¡€çš„æ—‹è½¬ã€‚å¦‚æžœä½ éœ€è¦æ¬§æ‹‰è§’,请å‚阅 [get_euler] 方法,但通"
"å¸¸é¦–é€‰å››å…ƒæ•°è€Œä¸æ˜¯æ¬§æ‹‰è§’。"
#: doc/classes/Basis.xml:83
@@ -12995,7 +13134,7 @@ msgid ""
"[DynamicFont]."
msgstr ""
"使用[code]*.fnt[/code]包å«çº¹ç†å›¾åº“çš„å­—ä½“æ¥æ¸²æŸ“文本。支æŒè·ç¦»å­—段。关于直接使"
-"用TTF等矢é‡å­—体文件,请å‚è§[DynamicFont]。"
+"用TTF等矢é‡å­—体文件,请å‚阅[DynamicFont]。"
#: doc/classes/BitmapFont.xml:21
msgid ""
@@ -13091,7 +13230,7 @@ msgstr "将节点当å‰çš„å˜æ¢å­˜å‚¨åœ¨[member rest]中。"
#: doc/classes/Bone2D.xml:24
msgid ""
"Returns the node's index as part of the entire skeleton. See [Skeleton2D]."
-msgstr "返回节点的索引,作为整个骨架的一部分。å‚è§[Skeleton2D]。"
+msgstr "返回节点的索引,作为整个骨架的一部分。å‚阅[Skeleton2D]。"
#: doc/classes/Bone2D.xml:30
msgid ""
@@ -13316,17 +13455,15 @@ msgstr "3Dç›’å­å½¢çжå¯ä»¥æ˜¯[PhysicsBody3D]或[Area3D]çš„å­çº§ã€‚"
#: doc/classes/CylinderShape.xml:11 doc/classes/ProjectSettings.xml:13
#: doc/classes/RigidBody.xml:16 doc/classes/SphereShape.xml:10
#: doc/classes/StaticBody.xml:11
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/675"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/675"
#: doc/classes/BoxShape.xml:11 doc/classes/CollisionShape.xml:11
#: modules/gridmap/doc_classes/GridMap.xml:16 doc/classes/KinematicBody.xml:13
#: doc/classes/Mesh.xml:11 doc/classes/MeshInstance.xml:11
#: doc/classes/MeshLibrary.xml:10
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/126"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/126"
#: doc/classes/BoxShape.xml:18
msgid ""
@@ -13383,9 +13520,8 @@ msgstr ""
#: doc/classes/GridContainer.xml:12 doc/classes/OS.xml:10
#: doc/classes/PoolStringArray.xml:11 doc/classes/ProjectSettings.xml:15
#: doc/classes/ResourceLoader.xml:11 doc/classes/RichTextLabel.xml:17
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/677"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/677"
#: doc/classes/Button.xml:31
msgid ""
@@ -13500,7 +13636,7 @@ msgid ""
"Returns an [Array] of [Button]s who have this as their [ButtonGroup] (see "
"[member BaseButton.group])."
msgstr ""
-"返回一个[Button]çš„[Array],这些[Button]çš„[ButtonGroup]都有这个功能(å‚è§"
+"返回一个[Button]çš„[Array],这些[Button]çš„[ButtonGroup]都有这个功能(å‚阅"
"[member BaseButton.group])。"
#: doc/classes/ButtonGroup.xml:22
@@ -13514,7 +13650,7 @@ msgstr "当该控制器上的一个按钮被按下时触å‘。"
#: doc/classes/Camera.xml:4
msgid "Camera node, displays from a point of view."
-msgstr "æ‘„åƒæœºèŠ‚ç‚¹ï¼Œä»Žä¸€ä¸ªè§’åº¦æ˜¾ç¤ºã€‚"
+msgstr "相机节点,从一个角度显示。"
#: doc/classes/Camera.xml:7
#, fuzzy
@@ -13527,10 +13663,10 @@ msgid ""
"capabilities to a [Viewport], and, without one, a scene registered in that "
"[Viewport] (or higher viewports) can't be displayed."
msgstr ""
-"[Camera3D]是一个特殊节点,显示从其当å‰ä½ç½®å¯è§çš„å†…å®¹ã€‚æ‘„åƒæœºå°†è‡ªå·±æ³¨å†Œåœ¨æœ€è¿‘"
-"çš„[Viewport]节点中(å‡åºåœºæ™¯æ ‘)。æ¯ä¸ªè§†å£åªèƒ½æ¿€æ´»ä¸€ä¸ªæ‘„åƒæœºã€‚如果场景树上没"
-"有å¯ç”¨çš„视区,则摄影机将在全局视å£ä¸­æ³¨å†Œã€‚æ¢å¥è¯è¯´ï¼Œç›¸æœºä»…å‘[视å£]æä¾›3D显示"
-"功能,而没有一个相机,则无法显示在[Viewport](或更高视å£ï¼‰ä¸­æ³¨å†Œçš„场景。"
+"[Camera3D]是一个特殊节点,显示从其当å‰ä½ç½®å¯è§çš„内容。相机将自己注册在最近的"
+"[Viewport]节点中(å‡åºåœºæ™¯æ ‘)。æ¯ä¸ªè§†å£åªèƒ½æ¿€æ´»ä¸€ä¸ªç›¸æœºã€‚如果场景树上没有å¯"
+"用的视区,则摄影机将在全局视å£ä¸­æ³¨å†Œã€‚æ¢å¥è¯è¯´ï¼Œç›¸æœºä»…å‘[视å£]æä¾›3D显示功"
+"能,而没有一个相机,则无法显示在[Viewport](或更高视å£ï¼‰ä¸­æ³¨å†Œçš„场景。"
#: doc/classes/Camera.xml:17
msgid ""
@@ -13538,13 +13674,13 @@ msgid ""
"[code]enable_next[/code] is [code]true[/code], request to make the next "
"camera current, if any."
msgstr ""
-"å¦‚æžœè¿™æ˜¯å½“å‰æ‘„åƒæœºï¼Œåˆ™å°†å…¶ä»Žå½“剿‘„åƒæœºä¸­ç§»é™¤ã€‚如果[code]enable_next[/code]是"
-"[code]true[/code]ï¼Œè¯·æ±‚ä½¿ä¸‹ä¸€ä¸ªæ‘„åƒæœºæˆä¸ºå½“剿‘„åƒæœºï¼ˆå¦‚果有)。"
+"如果这是当å‰ç›¸æœºï¼Œåˆ™å°†å…¶ä»Žå½“å‰ç›¸æœºä¸­ç§»é™¤ã€‚如果[code]enable_next[/code]是"
+"[code]true[/code],请求使下一个相机æˆä¸ºå½“å‰ç›¸æœºï¼ˆå¦‚果有)。"
#: doc/classes/Camera.xml:23
#, fuzzy
msgid "Returns the camera's RID from the [VisualServer]."
-msgstr "从[RenderingServer]ä¸­è¿”å›žæ‘„åƒæœºçš„RID。"
+msgstr "从[RenderingServer]中返回相机的RID。"
#: doc/classes/Camera.xml:29
msgid ""
@@ -13559,8 +13695,8 @@ msgid ""
"Returns [code]true[/code] if the given [code]layer[/code] in the [member "
"cull_mask] is enabled, [code]false[/code] otherwise."
msgstr ""
-"如果[æˆå‘˜cull_mask]中给定的[code]layer[/code]被å¯ç”¨ï¼Œè¿”回[code]true[/code],"
-"å¦åˆ™è¿”回[code]false[/code]。"
+"如果[member cull_mask]中给定的[code]layer[/code]被å¯ç”¨ï¼Œè¿”回[code]true[/"
+"code],å¦åˆ™è¿”回[code]false[/code]。"
#: doc/classes/Camera.xml:42
#, fuzzy
@@ -13578,8 +13714,8 @@ msgid ""
"[b]Note:[/b] A position which returns [code]false[/code] may still be "
"outside the camera's field of view."
msgstr ""
-"如果给定的ä½ç½®åœ¨æ‘„åƒæœºåŽé¢ï¼Œè¿”回[code]true[/code]。\n"
-"[b]注æ„:[/b] 返回[code]false[/code]çš„ä½ç½®å¯èƒ½ä»ç„¶åœ¨æ‘„åƒæœºçš„视野之外。"
+"如果给定的ä½ç½®åœ¨ç›¸æœºåŽé¢ï¼Œè¿”回[code]true[/code]。\n"
+"[b]注æ„:[/b] 返回[code]false[/code]çš„ä½ç½®å¯èƒ½ä»ç„¶åœ¨ç›¸æœºçš„视野之外。"
#: doc/classes/Camera.xml:56
msgid ""
@@ -13587,8 +13723,8 @@ msgid ""
"description). If the camera node is outside the scene tree, it will attempt "
"to become current once it's added."
msgstr ""
-"ä½¿æ­¤æ‘„åƒæœºæˆä¸º[Viewport]çš„å½“å‰æ‘„åƒæœºï¼ˆè§ç±»çš„è¯´æ˜Žï¼‰ã€‚å¦‚æžœæ‘„åƒæœºèŠ‚ç‚¹åœ¨åœºæ™¯æ ‘ä¹‹"
-"外,一旦添加,它将å°è¯•æˆä¸ºå½“剿‘„åƒæœºã€‚"
+"使此相机æˆä¸º[Viewport]的当å‰ç›¸æœºï¼ˆè§ç±»çš„说明)。如果相机节点在场景树之外,一"
+"旦添加,它将å°è¯•æˆä¸ºå½“å‰ç›¸æœºã€‚"
#: doc/classes/Camera.xml:63
msgid ""
@@ -13596,8 +13732,8 @@ msgid ""
"camera. Orthogonal cameras are normalized. Perspective cameras account for "
"perspective, screen width/height, etc."
msgstr ""
-"返回从å±å¹•点ä½ç½®æ²¿æ‘„åƒæœºæ–¹å‘的法å‘é‡ã€‚æ­£äº¤æ‘„åƒæœºä¼šè¢«å½’一化。é€è§†æ‘„åƒæœºè€ƒè™‘到"
-"é€è§†ã€å±å¹•宽度/高度等因素。"
+"返回从å±å¹•点ä½ç½®æ²¿ç›¸æœºæ–¹å‘的法å‘é‡ã€‚正交相机会被归一化。é€è§†ç›¸æœºè€ƒè™‘到é€è§†ã€"
+"å±å¹•宽度/高度等因素。"
#: doc/classes/Camera.xml:71
#, fuzzy
@@ -13617,8 +13753,8 @@ msgid ""
"for casting rays in the form of (origin, normal) for object intersection or "
"picking."
msgstr ""
-"返回世界空间中的法线å‘é‡ï¼Œå³é€šè¿‡æ‘„åƒæœºæŠ•影在[Viewport]矩形上的一个点的结果。"
-"这对于以(原点,法线)çš„å½¢å¼æŠ•å°„å…‰çº¿ä»¥è¿›è¡Œç‰©ä½“äº¤æ±‡æˆ–é€‰å–很有用。"
+"返回世界空间中的法线å‘é‡ï¼Œå³é€šè¿‡ç›¸æœºæŠ•影在[Viewport]矩形上的一个点的结果。这"
+"对于以(原点,法线)çš„å½¢å¼æŠ•å°„å…‰çº¿ä»¥è¿›è¡Œç‰©ä½“äº¤æ±‡æˆ–é€‰å–很有用。"
#: doc/classes/Camera.xml:85
#, fuzzy
@@ -13628,8 +13764,8 @@ msgid ""
"for casting rays in the form of (origin, normal) for object intersection or "
"picking."
msgstr ""
-"返回世界空间中的3Dä½ç½®ï¼Œå³é€šè¿‡æ‘„åƒæœºæŠ•影在[Viewport]矩形上的一个点的结果。这"
-"对于以(åŽŸç‚¹ã€æ³•线)å½¢å¼æŠ•å°„å…‰çº¿ä»¥è¿›è¡Œç‰©ä½“äº¤æ±‡æˆ–é€‰å–很有用。"
+"返回世界空间中的3Dä½ç½®ï¼Œå³é€šè¿‡ç›¸æœºæŠ•影在[Viewport]矩形上的一个点的结果。这对"
+"于以(åŽŸç‚¹ã€æ³•线)å½¢å¼æŠ•å°„å…‰çº¿ä»¥è¿›è¡Œç‰©ä½“äº¤æ±‡æˆ–é€‰å–很有用。"
#: doc/classes/Camera.xml:93
msgid ""
@@ -13645,11 +13781,10 @@ msgid ""
"world space units."
msgstr ""
"通过指定 [code]size[/code]ã€[code]offset[/code]ï¼Œä»¥åŠ [code]z_near[/code] å’Œ "
-"[code]z_far[/code] 剪辑平é¢ï¼ˆä»¥ä¸–界空间为å•ä½ï¼‰ï¼Œå°†æ‘„åƒæœºæŠ•影设置为 frustum "
-"模å¼ï¼ˆè¯·å‚阅 [constant PROJECTION_FRUSTUM])。"
+"[code]z_far[/code] 剪辑平é¢ï¼ˆä»¥ä¸–界空间为å•ä½ï¼‰ï¼Œå°†ç›¸æœºæŠ•影设置为 frustum 模"
+"å¼ï¼ˆè¯·å‚阅 [constant PROJECTION_FRUSTUM])。"
#: doc/classes/Camera.xml:112
-#, fuzzy
msgid ""
"Sets the camera projection to orthogonal mode (see [constant "
"PROJECTION_ORTHOGONAL]), by specifying a [code]size[/code], and the "
@@ -13657,22 +13792,21 @@ msgid ""
"(As a hint, 2D games often use this projection, with values specified in "
"pixels.)"
msgstr ""
-"通过指定 [code] size[/code] 和 [code]z_near[/code] 和 [code]z_far[/code] 剪切"
-"å¹³é¢ï¼ˆä»¥ä¸–界空间为å•ä½ï¼‰ï¼Œå°†æ‘„åƒæœºæŠ•影设置为正交模å¼ï¼ˆå‚è§ [constant "
-"PROJECTION_ORTHOGONAL])。(æç¤ºä¸€ä¸‹ï¼Œ2D游æˆç»å¸¸ä½¿ç”¨è¿™ç§æŠ•影,数值以åƒç´ ä¸ºå•"
-"ä½ã€‚)"
+"通过在世界空间å•ä½ä¸­æŒ‡å®š [code]size[/code] å’Œ [code]z_near[/code] å’Œ "
+"[code]z_far[/code] 剪è£å¹³é¢ï¼Œå°†ç›¸æœºæŠ•影设置为正交模å¼ï¼Œè¯·å‚阅 [constant "
+"PROJECTION_ORTHOGONAL]。 (æç¤ºï¼š2D 游æˆç»å¸¸ä½¿ç”¨è¿™ç§æŠ•影,以åƒç´ ä¸ºå•使Œ‡å®š"
+"值。)"
#: doc/classes/Camera.xml:121
-#, fuzzy
msgid ""
"Sets the camera projection to perspective mode (see [constant "
"PROJECTION_PERSPECTIVE]), by specifying a [code]fov[/code] (field of view) "
"angle in degrees, and the [code]z_near[/code] and [code]z_far[/code] clip "
"planes in world space units."
msgstr ""
-"通过指定以角度为å•ä½çš„ [code]fov[/code] (视场角),以åŠä»¥ä¸–界空间为å•ä½çš„ "
-"[code]z_near[/code] å’Œ [code]z_far[/code] 剪辑平é¢ï¼Œå°†æ‘„åƒæœºçš„æŠ•影设置为é€è§†"
-"æ¨¡å¼ (å‚è§ [constant PROJECTION_PERSPECTIVE])。"
+"å°†æ‘„åƒæœºçš„æŠ•影设置为é€è§†æ¨¡å¼ï¼Œå‚阅[constant PROJECTION_PERSPECTIVE]),指定"
+"[code]fov[/code] 视野角度,å•ä½åº¦ï¼Œä»¥åŠä¸–界空间å•ä½çš„[code]z_near[/code]å’Œ"
+"[code]z_far[/code]è£å‰ªå¹³é¢ã€‚"
#: doc/classes/Camera.xml:128
msgid ""
@@ -13695,7 +13829,7 @@ msgstr ""
msgid ""
"The culling mask that describes which 3D render layers are rendered by this "
"camera."
-msgstr "æè¿°æ­¤æ‘„åƒæœºæ¸²æŸ“哪些 3D 渲染层的剔除掩ç ã€‚"
+msgstr "æè¿°æ­¤ç›¸æœºæ¸²æŸ“哪些 3D 渲染层的剔除掩ç ã€‚"
#: doc/classes/Camera.xml:144
msgid ""
@@ -13717,13 +13851,13 @@ msgstr ""
#: doc/classes/Camera.xml:151
msgid "The [Environment] to use for this camera."
-msgstr "æ­¤æ‘„åƒæœºè¦ä½¿ç”¨çš„[Environment]。"
+msgstr "此相机è¦ä½¿ç”¨çš„[Environment]。"
#: doc/classes/Camera.xml:154
msgid ""
"The distance to the far culling boundary for this camera relative to its "
"local Z axis."
-msgstr "è¯¥æ‘„åƒæœºç›¸å¯¹äºŽå…¶æœ¬åœ°Z轴的远è£è¾¹ç•Œçš„è·ç¦»ã€‚"
+msgstr "该相机相对于其本地Z轴的远è£è¾¹ç•Œçš„è·ç¦»ã€‚"
#: doc/classes/Camera.xml:157
#, fuzzy
@@ -13738,7 +13872,7 @@ msgid ""
"- ~102.45 degrees in a 16:9 viewport\n"
"- ~117.06 degrees in a 21:9 viewport"
msgstr ""
-"æ‘„åƒæœºçš„视场角(度)。仅适用于é€è§†æ¨¡å¼ã€‚由于[member keep_aspect]é”定一个轴,"
+"相机的视场角(度)。仅适用于é€è§†æ¨¡å¼ã€‚由于[member keep_aspect]é”定一个轴,"
"[code]fov[/code]设置å¦ä¸€ä¸ªè½´çš„视场角。\n"
"作为å‚考,默认的垂直视场角值([code]75.0[/code])相当于水平视场角。\n"
"- 在4:3的视å£ä¸­ï¼Œçº¦91.31度\n"
@@ -13752,12 +13886,12 @@ msgid ""
"\"tilted frustum\" effects such as [url=https://zdoom.org/wiki/Y-shearing]Y-"
"shearing[/url]."
msgstr ""
-"æ‘„åƒæœºçš„æœºèº«å移。å¯ä»¥æ›´æ”¹é»˜è®¤å€¼ï¼Œä»¥åˆ›å»º \"倾斜frustum \"效果,如"
-"[url=https://zdoom.org/wiki/Y-shearing]Y-shearing[/url]。"
+"相机的机身å移。å¯ä»¥æ›´æ”¹é»˜è®¤å€¼ï¼Œä»¥åˆ›å»º \"倾斜frustum \"效果,如[url=https://"
+"zdoom.org/wiki/Y-shearing]Y-shearing[/url]。"
#: doc/classes/Camera.xml:168
msgid "The horizontal (X) offset of the camera viewport."
-msgstr "æ‘„åƒæœºè§†çª—的水平(X)åç§»é‡ã€‚"
+msgstr "相机视窗的水平(X)åç§»é‡ã€‚"
#: doc/classes/Camera.xml:171
msgid ""
@@ -13771,7 +13905,7 @@ msgstr ""
msgid ""
"The distance to the near culling boundary for this camera relative to its "
"local Z axis."
-msgstr "è¯¥æ‘„åƒæœºç›¸å¯¹äºŽå…¶æœ¬åœ°Z轴到近è£è¾¹ç•Œçš„è·ç¦»ã€‚"
+msgstr "该相机相对于其本地Z轴到近è£è¾¹ç•Œçš„è·ç¦»ã€‚"
#: doc/classes/Camera.xml:177
msgid ""
@@ -13779,8 +13913,8 @@ msgid ""
"objects' Z distance from the camera's local space scales their perceived "
"size."
msgstr ""
-"æ‘„åƒæœºçš„æŠ•影模å¼ã€‚在[constant PROJECTION_PERSPECTIVE]模å¼ä¸‹ï¼Œç‰©ä½“ä¸Žæ‘„åƒæœºå±€éƒ¨"
-"空间的Zè·ç¦»ä¼šå½±å“其感知的大å°ã€‚"
+"相机的投影模å¼ã€‚在[constant PROJECTION_PERSPECTIVE]模å¼ä¸‹ï¼Œç‰©ä½“与相机局部空间"
+"çš„Zè·ç¦»ä¼šå½±å“其感知的大å°ã€‚"
#: doc/classes/Camera.xml:180
msgid ""
@@ -13788,12 +13922,12 @@ msgid ""
"orthogonal mode. Since [member keep_aspect] locks on axis, [code]size[/code] "
"sets the other axis' size length."
msgstr ""
-"æ‘„åƒæœºçš„尺寸,以1/2的宽度或高度测é‡ã€‚仅适用于正交模å¼ã€‚由于[member "
-"keep_aspect]é”定在轴上,因此[code]size[/code]设置其他轴的尺寸长度。"
+"相机的尺寸,以1/2的宽度或高度测é‡ã€‚仅适用于正交模å¼ã€‚由于[member keep_aspect]"
+"é”定在轴上,因此[code]size[/code]设置其他轴的尺寸长度。"
#: doc/classes/Camera.xml:183
msgid "The vertical (Y) offset of the camera viewport."
-msgstr "æ‘„åƒæœºè§†çª—的垂直(Y)åç§»é‡ã€‚"
+msgstr "相机视窗的垂直(Y)åç§»é‡ã€‚"
#: doc/classes/Camera.xml:188
msgid ""
@@ -13850,8 +13984,8 @@ msgid ""
"shift[/code])."
msgstr ""
"通过跟踪在[code]_process[/code]中改å˜çš„物体ä½ç½®æ¥æ¨¡æ‹Ÿ[url=https://en."
-"wikipedia.org/wiki/Doppler_effect]Doppler_effect[/url]。与这些物体相比,该摄"
-"åƒæœºçš„相对速度的å˜åŒ–会影å“音频的感知方å¼ï¼ˆæ”¹å˜éŸ³é¢‘çš„[code]pitch shift[/"
+"wikipedia.org/wiki/Doppler_effect]Doppler_effect[/url]。与这些物体相比,该相"
+"机的相对速度的å˜åŒ–会影å“音频的感知方å¼ï¼ˆæ”¹å˜éŸ³é¢‘çš„[code]pitch shift[/"
"code])。"
#: doc/classes/Camera.xml:209
@@ -13863,8 +13997,8 @@ msgid ""
"Audio's [code]pitch shift[/code])."
msgstr ""
"通过跟踪在[code]_process[/code]中改å˜çš„物体ä½ç½®æ¥æ¨¡æ‹Ÿ[url=https://en."
-"wikipedia.org/wiki/Doppler_effect]Doppler_effect[/url]。与这些物体相比,该摄"
-"åƒæœºçš„相对速度的å˜åŒ–会影å“音频的感知方å¼ï¼ˆæ”¹å˜éŸ³é¢‘çš„[code]pitch shift[/"
+"wikipedia.org/wiki/Doppler_effect]Doppler_effect[/url]。与这些物体相比,该相"
+"机的相对速度的å˜åŒ–会影å“音频的感知方å¼ï¼ˆæ”¹å˜éŸ³é¢‘çš„[code]pitch shift[/"
"code])。"
#: doc/classes/Camera2D.xml:4
@@ -13891,42 +14025,40 @@ msgstr ""
"二维场景的相机节点。它强制å±å¹•(当å‰å±‚)跟éšè¿™ä¸ªèŠ‚ç‚¹æ»šåŠ¨ã€‚è¿™ä½¿å¾—å¯¹å¯æ»šåŠ¨åœºæ™¯"
"进行编程比手动改å˜åŸºäºŽ[CanvasItem]节点的ä½ç½®æ›´å®¹æ˜“(也更快)。\n"
"这个节点的目的是作为一个简å•的帮手,让事情快速进行,å¯èƒ½ä¼šå‘ç”Ÿéœ€è¦æ›´å¤šçš„功能"
-"æ¥æ”¹å˜æ‘„åƒæœºçš„工作方å¼ã€‚è¦åˆ¶ä½œè‡ªå·±çš„自定义相机节点,请继承[Node2D],并通过设"
-"ç½®[Viewport]中的[member Viewport.canvas_transform]æ¥æ”¹å˜ç”»å¸ƒçš„å˜æ¢ï¼ˆæ‚¨å¯ä»¥é€š"
-"过[method Node.get_viewport]获得当å‰çš„[Viewport])。\n"
+"æ¥æ”¹å˜ç›¸æœºçš„工作方å¼ã€‚è¦åˆ¶ä½œè‡ªå·±çš„自定义相机节点,请继承[Node2D],并通过设置"
+"[Viewport]中的[member Viewport.canvas_transform]æ¥æ”¹å˜ç”»å¸ƒçš„å˜æ¢ï¼ˆæ‚¨å¯ä»¥é€šè¿‡"
+"[method Node.get_viewport]获得当å‰çš„[Viewport])。\n"
"注æ„,[Camera2D]节点的[code]position[/code]å¹¶ä¸ä»£è¡¨å±å¹•的实际ä½ç½®ï¼Œå®ƒå¯èƒ½ä¼šå› "
"为应用的平滑或é™åˆ¶è€Œæœ‰æ‰€ä¸åŒã€‚ä½ å¯ä»¥ä½¿ç”¨[method get_camera_screen_center]æ¥èŽ·"
"å–真实ä½ç½®ã€‚"
#: doc/classes/Camera2D.xml:13 doc/classes/TileMap.xml:13
#: doc/classes/TileSet.xml:13
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/112"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/112"
#: doc/classes/Camera2D.xml:14 doc/classes/Environment.xml:18
#: doc/classes/WorldEnvironment.xml:14
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/110"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/110"
#: doc/classes/Camera2D.xml:20
msgid "Aligns the camera to the tracked node."
-msgstr "å°†æ‘„åƒæœºä¸Žè·Ÿè¸ªçš„节点对é½ã€‚"
+msgstr "将相机与跟踪的节点对é½ã€‚"
#: doc/classes/Camera2D.xml:26
msgid ""
"Removes any [Camera2D] from the ancestor [Viewport]'s internal currently-"
"assigned camera."
-msgstr "从父级[Viewport]的内部当å‰åˆ†é…çš„æ‘„åƒæœºä¸­åˆ é™¤ä»»ä½•[Camera2D]。"
+msgstr "从父级[Viewport]的内部当å‰åˆ†é…的相机中删除任何[Camera2D]。"
#: doc/classes/Camera2D.xml:32
msgid "Forces the camera to update scroll immediately."
-msgstr "å¼ºåˆ¶æ‘„åƒæœºç«‹å³æ›´æ–°æ»šåŠ¨ã€‚"
+msgstr "å¼ºåˆ¶ç›¸æœºç«‹å³æ›´æ–°æ»šåŠ¨ã€‚"
#: doc/classes/Camera2D.xml:38
msgid "Returns the camera position."
-msgstr "è¿”å›žæ‘„åƒæœºçš„ä½ç½®ã€‚"
+msgstr "返回相机的ä½ç½®ã€‚"
#: doc/classes/Camera2D.xml:44
msgid ""
@@ -13939,7 +14071,7 @@ msgid ""
"Returns the specified margin. See also [member drag_margin_bottom], [member "
"drag_margin_top], [member drag_margin_left], and [member drag_margin_right]."
msgstr ""
-"返回指定的边è·ã€‚å¦è¯·å‚è§[member drag_margin_bottom],[member "
+"返回指定的边è·ã€‚å¦è¯·å‚阅[member drag_margin_bottom],[member "
"drag_margin_top],[member drag_margin_left]和[member drag_margin_right]。"
#: doc/classes/Camera2D.xml:58
@@ -13954,7 +14086,7 @@ msgstr ""
msgid ""
"Make this the current 2D camera for the scene (viewport and layer), in case "
"there are many cameras in the scene."
-msgstr "使之æˆä¸ºåœºæ™¯ï¼ˆè§†å£å’Œå›¾å±‚)的当å‰2Dæ‘„åƒæœºï¼Œä»¥é˜²åœºæ™¯ä¸­æœ‰å¾ˆå¤šæ‘„åƒæœºã€‚"
+msgstr "使之æˆä¸ºåœºæ™¯ï¼ˆè§†å£å’Œå›¾å±‚)的当å‰2D相机,以防场景中有很多相机。"
#: doc/classes/Camera2D.xml:70
msgid ""
@@ -13978,12 +14110,12 @@ msgid ""
"Sets the specified camera limit. See also [member limit_bottom], [member "
"limit_top], [member limit_left], and [member limit_right]."
msgstr ""
-"è®¾ç½®æŒ‡å®šçš„æ‘„åƒæœºé™åˆ¶ã€‚å¦è¯·å‚阅 [member limit_bottom]ã€[member limit_top]ã€"
+"设置指定的相机é™åˆ¶ã€‚å¦è¯·å‚阅 [member limit_bottom]ã€[member limit_top]ã€"
"[member limit_left]和[member limit_right]。"
#: doc/classes/Camera2D.xml:93
msgid "The Camera2D's anchor point. See [enum AnchorMode] constants."
-msgstr "Camera2D的锚点。å‚è§[enum AnchorMode]常é‡ã€‚"
+msgstr "Camera2D的锚点。å‚阅[enum AnchorMode]常é‡ã€‚"
#: doc/classes/Camera2D.xml:96
msgid ""
@@ -13991,8 +14123,8 @@ msgid ""
"Only one camera can be current, so setting a different camera [code]current[/"
"code] will disable this one."
msgstr ""
-"如果 [code]true[/code]ï¼Œæ‘„åƒæœºæ˜¯å½“å‰åœºæ™¯çš„æ´»åŠ¨æ‘„åƒæœºã€‚当å‰åªèƒ½æœ‰ä¸€å°æ‘„åƒæœºï¼Œ"
-"所以设置ä¸åŒçš„æ‘„åƒæœº[code]current[/code]å°†ç¦ç”¨è¿™å°æ‘„åƒæœºã€‚"
+"如果 [code]true[/code],相机是当å‰åœºæ™¯çš„æ´»åŠ¨ç›¸æœºã€‚å½“å‰åªèƒ½æœ‰ä¸€å°ç›¸æœºï¼Œæ‰€ä»¥è®¾"
+"ç½®ä¸åŒçš„相机[code]current[/code]å°†ç¦ç”¨è¿™å°ç›¸æœºã€‚"
#: doc/classes/Camera2D.xml:99
msgid ""
@@ -14007,8 +14139,7 @@ msgid ""
"Bottom margin needed to drag the camera. A value of [code]1[/code] makes the "
"camera move only when reaching the edge of the screen."
msgstr ""
-"æ‹–åŠ¨æ‘„åƒæœºæ‰€éœ€çš„底边è·ã€‚值为[code]1[/code]æ—¶ï¼Œæ‘„åƒæœºä»…在到达å±å¹•边缘时æ‰ä¼šç§»"
-"动。"
+"拖动相机所需的底边è·ã€‚值为[code]1[/code]时,相机仅在到达å±å¹•边缘时æ‰ä¼šç§»åŠ¨ã€‚"
#: doc/classes/Camera2D.xml:105
msgid ""
@@ -14016,7 +14147,7 @@ msgid ""
"drag margins. If [code]false[/code], the camera moves horizontally "
"regardless of margins."
msgstr ""
-"如果 [code]true[/code]ï¼Œæ‘„åƒæœºä»…åœ¨è¾¾åˆ°æ°´å¹³æ‹–åŠ¨è¾¹è·æ—¶æ‰ç§»åŠ¨ã€‚å¦‚æžœ[code]false[/"
+"如果 [code]true[/code]ï¼Œç›¸æœºä»…åœ¨è¾¾åˆ°æ°´å¹³æ‹–åŠ¨è¾¹è·æ—¶æ‰ç§»åŠ¨ã€‚å¦‚æžœ[code]false[/"
"code],相机会水平移动而ä¸ç®¡è¾¹è·ã€‚"
#: doc/classes/Camera2D.xml:108
@@ -14024,24 +14155,21 @@ msgid ""
"Left margin needed to drag the camera. A value of [code]1[/code] makes the "
"camera move only when reaching the edge of the screen."
msgstr ""
-"æ‹–åŠ¨æ‘„åƒæœºæ‰€éœ€çš„左边缘。值为[code]1[/code]æ—¶ï¼Œæ‘„åƒæœºä»…在到达å±å¹•边缘时æ‰ä¼šç§»"
-"动。"
+"拖动相机所需的左边缘。值为[code]1[/code]时,相机仅在到达å±å¹•边缘时æ‰ä¼šç§»åŠ¨ã€‚"
#: doc/classes/Camera2D.xml:111
msgid ""
"Right margin needed to drag the camera. A value of [code]1[/code] makes the "
"camera move only when reaching the edge of the screen."
msgstr ""
-"æ‹–åŠ¨æ‘„åƒæœºæ‰€éœ€çš„å³è¾¹ç¼˜ã€‚值为[code]1[/code]æ—¶ï¼Œæ‘„åƒæœºä»…在到达å±å¹•边缘时æ‰ä¼šç§»"
-"动。"
+"拖动相机所需的å³è¾¹ç¼˜ã€‚值为[code]1[/code]时,相机仅在到达å±å¹•边缘时æ‰ä¼šç§»åŠ¨ã€‚"
#: doc/classes/Camera2D.xml:114
msgid ""
"Top margin needed to drag the camera. A value of [code]1[/code] makes the "
"camera move only when reaching the edge of the screen."
msgstr ""
-"æ‹–åŠ¨æ‘„åƒæœºæ‰€éœ€çš„上边è·ã€‚值为[code]1[/code]æ—¶ï¼Œæ‘„åƒæœºä»…在到达å±å¹•边缘时æ‰ä¼šç§»"
-"动。"
+"拖动相机所需的上边è·ã€‚值为[code]1[/code]时,相机仅在到达å±å¹•边缘时æ‰ä¼šç§»åŠ¨ã€‚"
#: doc/classes/Camera2D.xml:117
msgid ""
@@ -14049,23 +14177,23 @@ msgid ""
"margins. If [code]false[/code], the camera moves vertically regardless of "
"margins."
msgstr ""
-"如果 [code]true[/code]ï¼Œæ‘„åƒæœºä»…åœ¨è¾¾åˆ°åž‚ç›´æ‹–åŠ¨è¾¹è·æ—¶æ‰ç§»åŠ¨ã€‚å¦‚æžœ[code]false[/"
+"如果 [code]true[/code]ï¼Œç›¸æœºä»…åœ¨è¾¾åˆ°åž‚ç›´æ‹–åŠ¨è¾¹è·æ—¶æ‰ç§»åŠ¨ã€‚å¦‚æžœ[code]false[/"
"code],相机会垂直移动而ä¸ç®¡è¾¹è·ã€‚"
#: doc/classes/Camera2D.xml:120
msgid ""
"If [code]true[/code], draws the camera's drag margin rectangle in the editor."
-msgstr "如果[code]true[/code]ï¼Œåœ¨ç¼–è¾‘å™¨ä¸­ç»˜åˆ¶æ‘„åƒæœºçš„æ‹–动边è·çŸ©å½¢ã€‚"
+msgstr "如果[code]true[/code],在编辑器中绘制相机的拖动边è·çŸ©å½¢ã€‚"
#: doc/classes/Camera2D.xml:123
msgid ""
"If [code]true[/code], draws the camera's limits rectangle in the editor."
-msgstr "如果[code]true[/code]ï¼Œåœ¨ç¼–è¾‘å™¨ä¸­ç»˜åˆ¶æ‘„åƒæœºçš„æžé™çŸ©å½¢ã€‚"
+msgstr "如果[code]true[/code],在编辑器中绘制相机的æžé™çŸ©å½¢ã€‚"
#: doc/classes/Camera2D.xml:126
msgid ""
"If [code]true[/code], draws the camera's screen rectangle in the editor."
-msgstr "如果[code]true[/code]ï¼Œåœ¨ç¼–è¾‘å™¨ä¸­ç»˜åˆ¶æ‘„åƒæœºçš„ç”»é¢çŸ©å½¢ã€‚"
+msgstr "如果[code]true[/code],在编辑器中绘制相机的画é¢çŸ©å½¢ã€‚"
#: doc/classes/Camera2D.xml:129
msgid ""
@@ -14097,12 +14225,12 @@ msgstr ""
#: doc/classes/Camera2D.xml:143
msgid ""
"Top scroll limit in pixels. The camera stops moving when reaching this value."
-msgstr "以åƒç´ ä¸ºå•ä½çš„顶部滚动é™åˆ¶ã€‚è¾¾åˆ°æ­¤å€¼æ—¶ï¼Œæ‘„åƒæœºåœæ­¢ç§»åŠ¨ã€‚"
+msgstr "以åƒç´ ä¸ºå•ä½çš„顶部滚动é™åˆ¶ã€‚è¾¾åˆ°æ­¤å€¼æ—¶ï¼Œç›¸æœºåœæ­¢ç§»åŠ¨ã€‚"
#: doc/classes/Camera2D.xml:146
msgid ""
"The camera's offset, useful for looking around or camera shake animations."
-msgstr "æ‘„åƒæœºçš„åç§»é‡ï¼Œå¯¹äºŽçŽ¯é¡¾å››å‘¨æˆ–æ‘„åƒæœºæ™ƒåŠ¨åŠ¨ç”»éžå¸¸æœ‰ç”¨ã€‚"
+msgstr "相机的åç§»é‡ï¼Œå¯¹äºŽçŽ¯é¡¾å››å‘¨æˆ–ç›¸æœºæ™ƒåŠ¨åŠ¨ç”»éžå¸¸æœ‰ç”¨ã€‚"
#: doc/classes/Camera2D.xml:149
msgid ""
@@ -14111,7 +14239,7 @@ msgid ""
"not updated in any way if drag margins are enabled and can be used to set "
"initial offset."
msgstr ""
-"æ‘„åƒæœºçš„æ°´å¹³å移,相对于拖动边è·ã€‚\n"
+"相机的水平å移,相对于拖动边è·ã€‚\n"
"[b]注:[/b] åç§»é‡ H 仅用于强制执行相对于边è·çš„å移,如果å¯ç”¨æ‹–动边è·ï¼Œå®ƒä¸ä¼š"
"ä»¥ä»»ä½•æ–¹å¼æ›´æ–°ï¼Œå¹¶å¯ç”¨äºŽè®¾ç½®åˆå§‹åç§»é‡ã€‚如果å¯ç”¨äº†æ‹–动边è·ï¼Œå®ƒä¸ä¼šä»¥ä»»ä½•æ–¹å¼"
"更新,å¯ä»¥ç”¨æ¥è®¾ç½®åˆå§‹å移。"
@@ -14121,24 +14249,23 @@ msgid ""
"The vertical offset of the camera, relative to the drag margins.\n"
"[b]Note:[/b] Used the same as [member offset_h]."
msgstr ""
-"æ‘„åƒæœºç›¸å¯¹äºŽæ‹–动边è·çš„垂直å移。\n"
+"相机相对于拖动边è·çš„垂直å移。\n"
"[b]注:[/b] 与[member offset_h]使用相åŒã€‚"
#: doc/classes/Camera2D.xml:157
msgid "The camera's process callback. See [enum Camera2DProcessMode]."
-msgstr "æ‘„åƒæœºçš„过程回调。请å‚è§[enum Camera2DProcessMode]。"
+msgstr "相机的过程回调。请å‚阅[enum Camera2DProcessMode]。"
#: doc/classes/Camera2D.xml:160
msgid "If [code]true[/code], the camera rotates with the target."
-msgstr "如果[code]true[/code]ï¼Œåˆ™æ‘„åƒæœºéšç›®æ ‡æ—‹è½¬ã€‚"
+msgstr "如果[code]true[/code],则相机éšç›®æ ‡æ—‹è½¬ã€‚"
#: doc/classes/Camera2D.xml:163
msgid ""
"If [code]true[/code], the camera smoothly moves towards the target at "
"[member smoothing_speed]."
msgstr ""
-"如果[code]true[/code]ï¼Œæ‘„åƒæœºä»¥[member smoothing_speed]的速度平滑地æœç›®æ ‡ç§»"
-"动。"
+"如果[code]true[/code],相机以[member smoothing_speed]的速度平滑地æœç›®æ ‡ç§»åŠ¨ã€‚"
#: doc/classes/Camera2D.xml:166
msgid ""
@@ -14163,21 +14290,21 @@ msgstr ""
msgid ""
"The camera's position is fixed so that the top-left corner is always at the "
"origin."
-msgstr "æ‘„åƒæœºçš„ä½ç½®æ˜¯å›ºå®šçš„,所以左上角总是在原点。"
+msgstr "相机的ä½ç½®æ˜¯å›ºå®šçš„,所以左上角总是在原点。"
#: doc/classes/Camera2D.xml:177
msgid ""
"The camera's position takes into account vertical/horizontal offsets and the "
"screen size."
-msgstr "æ‘„åƒæœºçš„ä½ç½®è¦è€ƒè™‘垂直/æ°´å¹³å移和å±å¹•尺寸。"
+msgstr "相机的ä½ç½®è¦è€ƒè™‘垂直/æ°´å¹³å移和å±å¹•尺寸。"
#: doc/classes/Camera2D.xml:180 doc/classes/ClippedCamera.xml:89
msgid "The camera updates with the [code]_physics_process[/code] callback."
-msgstr "æ‘„åƒæœºé€šè¿‡ [code]_physics_process[/code] 回调进行更新。"
+msgstr "相机通过 [code]_physics_process[/code] 回调进行更新。"
#: doc/classes/Camera2D.xml:183 doc/classes/ClippedCamera.xml:92
msgid "The camera updates with the [code]_process[/code] callback."
-msgstr "æ‘„åƒæœºé€šè¿‡ [code]_process[/code] 回调进行更新。"
+msgstr "相机通过 [code]_process[/code] 回调进行更新。"
#: doc/classes/CameraFeed.xml:4
msgid ""
@@ -14207,9 +14334,8 @@ msgid "Returns the unique ID for this feed."
msgstr "返回该对等体的IP。"
#: doc/classes/CameraFeed.xml:22
-#, fuzzy
msgid "Returns the camera's name."
-msgstr "返回项的å称。"
+msgstr "返回相机的å称。"
#: doc/classes/CameraFeed.xml:28
#, fuzzy
@@ -14233,7 +14359,7 @@ msgstr "没有关于已编辑属性的æç¤ºã€‚"
#: doc/classes/CameraFeed.xml:45
msgid "Feed supplies RGB images."
-msgstr ""
+msgstr "Feed æä¾› RGB 图åƒã€‚"
#: doc/classes/CameraFeed.xml:48
msgid "Feed supplies YCbCr images that need to be converted to RGB."
@@ -14246,9 +14372,8 @@ msgid ""
msgstr ""
#: doc/classes/CameraFeed.xml:54
-#, fuzzy
msgid "Unspecified position."
-msgstr "拖拽的ä½ç½®ã€‚"
+msgstr "æœªæŒ‡å®šåæ ‡ã€‚"
#: doc/classes/CameraFeed.xml:57
msgid "Camera is mounted at the front of the device."
@@ -14278,7 +14403,7 @@ msgstr ""
#: doc/classes/CameraServer.xml:17
#, fuzzy
msgid "Adds a camera feed to the camera server."
-msgstr "å°†æ‘„åƒæœº[code]feed[/code]æ·»åŠ åˆ°æ‘„åƒæœºæœåŠ¡å™¨ã€‚"
+msgstr "将相机[code]feed[/code]添加到相机æœåŠ¡å™¨ã€‚"
#: doc/classes/CameraServer.xml:23
msgid "Returns an array of [CameraFeed]s."
@@ -14294,9 +14419,8 @@ msgid "Returns the number of [CameraFeed]s registered."
msgstr "返回注册的[CameraFeed]的数é‡ã€‚"
#: doc/classes/CameraServer.xml:43
-#, fuzzy
msgid "Removes a [CameraFeed]."
-msgstr "纹ç†ç”±[CameraFeed]æä¾›ã€‚"
+msgstr "移除[CameraFeed]。"
#: doc/classes/CameraServer.xml:51
#, fuzzy
@@ -14313,9 +14437,8 @@ msgid "The RGBA camera image."
msgstr "RGBA相机的图åƒã€‚"
#: doc/classes/CameraServer.xml:66
-#, fuzzy
msgid "The YCbCr camera image."
-msgstr "CbCr分é‡ç›¸æœºçš„图åƒã€‚"
+msgstr "YCbCr相机图åƒã€‚"
#: doc/classes/CameraServer.xml:69
msgid "The Y component camera image."
@@ -14390,7 +14513,7 @@ msgstr ""
"由[Control]扩展为任何GUI相关的东西,由[Node2D]扩展为任何2D引擎相关的东西。\n"
"任何[CanvasItem]都å¯ä»¥ç»˜åˆ¶ã€‚为此,必须调用 [method update],然åŽåœ¨ç©ºé—²æ—¶æŽ¥æ”¶ "
"[constant NOTIFICATION_DRAW] æ¥è¯·æ±‚é‡ç»˜ã€‚正因为如此,画布项ä¸éœ€è¦æ¯ä¸€å¸§éƒ½é‡"
-"绘,大大æå‡äº†æ€§èƒ½ã€‚æä¾›äº†å‡ ä¸ªç”¨äºŽåœ¨ [CanvasItem] 上绘图的函数(å‚è§"
+"绘,大大æå‡äº†æ€§èƒ½ã€‚æä¾›äº†å‡ ä¸ªç”¨äºŽåœ¨ [CanvasItem] 上绘图的函数(å‚阅"
"[code]draw_*[/code]函数)。但是,它们åªèƒ½åœ¨ [method Object._notification]ã€ä¿¡"
"å·æˆ– [method _draw] 虚拟函数内部使用。\n"
"画布项目是按树状顺åºç»˜åˆ¶çš„。默认情况下,å­é¡¹ç›®åœ¨å…¶çˆ¶é¡¹ç›®çš„顶部,因此根"
@@ -14406,19 +14529,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml:15 doc/classes/CanvasLayer.xml:10
#: doc/classes/InputEvent.xml:11 doc/classes/Viewport.xml:15
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/2d/2d_transforms.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/2d/2d_transforms.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/2d/2d_transforms.html"
#: doc/classes/CanvasItem.xml:16 doc/classes/Control.xml:18
#: doc/classes/Node2D.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/2d/custom_drawing_in_2d.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/2d/custom_drawing_in_2d."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/2d/custom_drawing_in_2d.html"
#: doc/classes/CanvasItem.xml:23
msgid ""
@@ -14461,7 +14580,7 @@ msgid ""
"Draws a [Mesh] in 2D, using the provided texture. See [MeshInstance2D] for "
"related documentation."
msgstr ""
-"使用所æä¾›çš„纹ç†ä»¥2Dæ–¹å¼ç»˜åˆ¶ä¸€ä¸ª[Mesh]。相关文档请å‚è§[MeshInstance2D]。"
+"使用所æä¾›çš„纹ç†ä»¥2Dæ–¹å¼ç»˜åˆ¶ä¸€ä¸ª[Mesh]。相关文档请å‚阅[MeshInstance2D]。"
#: doc/classes/CanvasItem.xml:101
msgid ""
@@ -14580,7 +14699,7 @@ msgstr ""
"var default_font = Control.new().get_font(\"font\")\n"
"draw_string(default_font, Vector2(64, 64), \"Hello world\")\n"
"[/codeblock]\n"
-"å‚è§[method Font.draw]。"
+"å‚阅[method Font.draw]。"
#: doc/classes/CanvasItem.xml:222
msgid "Draws a styled rectangle."
@@ -14678,7 +14797,7 @@ msgid ""
"Returns [code]true[/code] if the node is set as top-level. See [method "
"set_as_toplevel]."
msgstr ""
-"如果节点设置为顶层,则返回[code] true [/code]。å‚è§[方法set_as_toplevel]。"
+"如果节点设置为顶层,则返回[code] true [/code]。å‚阅[方法set_as_toplevel]。"
#: doc/classes/CanvasItem.xml:353
msgid ""
@@ -14982,10 +15101,8 @@ msgstr ""
"中)或背景(在-1层或更低层中)éžå¸¸æœ‰ç”¨ã€‚"
#: doc/classes/CanvasLayer.xml:11
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/2d/canvas_layers.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/2d/canvas_layers.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/2d/canvas_layers.html"
#: doc/classes/CanvasLayer.xml:18
msgid "Returns the RID of the canvas used by this layer."
@@ -15121,13 +15238,12 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:10 doc/classes/RichTextEffect.xml:16
#: doc/classes/RichTextLabel.xml:15
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/gui/bbcode_in_richtextlabel."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/gui/"
-"bbcode_in_richtextlabel.html"
+"https://docs.godotengine.org/en/3.4/tutorials/gui/bbcode_in_richtextlabel."
+"html"
#: doc/classes/CharFXTransform.xml:11 doc/classes/RichTextEffect.xml:17
msgid ""
@@ -15165,11 +15281,11 @@ msgid "The color the character will be drawn with."
msgstr "绘制角色所用的颜色。"
#: doc/classes/CharFXTransform.xml:31
+#, fuzzy
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
"自从[RichTextLabel]添加到场景树以æ¥ç»è¿‡çš„æ—¶é—´ï¼ˆä»¥ç§’为å•ä½ï¼‰ã€‚除éžé¡¹ç›®"
@@ -15220,7 +15336,7 @@ msgstr ""
#: doc/classes/CheckBox.xml:4
msgid "Binary choice user interface widget. See also [CheckButton]."
-msgstr "二元选择(有或无)用户界é¢å°éƒ¨ä»¶ã€‚å¦è¯·å‚è§[CheckButton]。"
+msgstr "二元选择(有或无)用户界é¢å°éƒ¨ä»¶ã€‚å¦è¯·å‚阅[CheckButton]。"
#: doc/classes/CheckBox.xml:7
#, fuzzy
@@ -15323,7 +15439,7 @@ msgstr "未选中[CheckBox]时显示的å¤é€‰å›¾æ ‡ã€‚"
#: doc/classes/CheckButton.xml:4
msgid "Checkable button. See also [CheckBox]."
-msgstr "坿£€æŸ¥çš„æŒ‰é’®ã€‚å¦è¯·å‚è§[CheckBox]。"
+msgstr "坿£€æŸ¥çš„æŒ‰é’®ã€‚å¦è¯·å‚阅[CheckBox]。"
#: doc/classes/CheckButton.xml:7
#, fuzzy
@@ -15678,12 +15794,12 @@ msgstr ""
#: doc/classes/ClippedCamera.xml:72
#, fuzzy
msgid "If [code]true[/code], the camera stops on contact with [Area]s."
-msgstr "如果[code]true[/code]ï¼Œæ‘„åƒæœºä¸Ž[Area3D]sæŽ¥è§¦æ—¶åœæ­¢ã€‚"
+msgstr "如果[code]true[/code],相机与[Area3D]sæŽ¥è§¦æ—¶åœæ­¢ã€‚"
#: doc/classes/ClippedCamera.xml:75
#, fuzzy
msgid "If [code]true[/code], the camera stops on contact with [PhysicsBody]s."
-msgstr "如果[code]true[/code]ï¼Œæ‘„åƒæœºåœ¨æŽ¥è§¦[PhysicsBody3D]æ—¶åœæ­¢ã€‚"
+msgstr "如果[code]true[/code],相机在接触[PhysicsBody3D]æ—¶åœæ­¢ã€‚"
#: doc/classes/ClippedCamera.xml:78
msgid ""
@@ -15698,11 +15814,11 @@ msgstr ""
msgid ""
"The camera's collision margin. The camera can't get closer than this "
"distance to a colliding object."
-msgstr "æ‘„åƒæœºçš„碰撞è·ç¦»ã€‚æ‘„åƒæœºä¸Žç¢°æ’žç‰©ä½“çš„è·ç¦»ä¸èƒ½è¶…过这个è·ç¦»ã€‚"
+msgstr "相机的碰撞è·ç¦»ã€‚相机与碰撞物体的è·ç¦»ä¸èƒ½è¶…过这个è·ç¦»ã€‚"
#: doc/classes/ClippedCamera.xml:84
msgid "The camera's process callback. See [enum ProcessMode]."
-msgstr "æ‘„åƒæœºçš„过程回调。请å‚è§[enum ProcessMode]。"
+msgstr "相机的过程回调。请å‚阅[enum ProcessMode]。"
#: doc/classes/CollisionObject.xml:4
msgid "Base node for collision objects."
@@ -15855,7 +15971,7 @@ msgid ""
"masks[/url] in the documentation for more information."
msgstr ""
"区域的物ç†å±‚。å¯ç¢°æ’žçš„物体å¯ä»¥å­˜åœ¨äºŽ32个ä¸åŒå±‚中的任何一层。如果物体A在物体B"
-"扫æçš„任何一层中,或者物体B在物体A扫æçš„任何一层中,则检测到接触。也请å‚è§"
+"扫æçš„任何一层中,或者物体B在物体A扫æçš„任何一层中,则检测到接触。也请å‚阅"
"[member collision_mask]。"
#: doc/classes/CollisionObject.xml:178
@@ -15870,7 +15986,7 @@ msgid ""
"masks[/url] in the documentation for more information."
msgstr ""
"区域的物ç†å±‚。å¯ç¢°æ’žçš„物体å¯ä»¥å­˜åœ¨äºŽ32个ä¸åŒå±‚中的任何一层。如果物体A在物体B"
-"扫æçš„任何一层中,或者物体B在物体A扫æçš„任何一层中,则检测到接触。也请å‚è§"
+"扫æçš„任何一层中,或者物体B在物体A扫æçš„任何一层中,则检测到接触。也请å‚阅"
"[member collision_mask]。"
#: doc/classes/CollisionObject.xml:182
@@ -16006,7 +16122,7 @@ msgid ""
"masks[/url] in the documentation for more information."
msgstr ""
"区域的物ç†å±‚。å¯ç¢°æ’žçš„物体å¯ä»¥å­˜åœ¨äºŽ32个ä¸åŒå±‚中的任何一层。如果物体A在物体B"
-"扫æçš„任何一层中,或者物体B在物体A扫æçš„任何一层中,则检测到接触。也请å‚è§"
+"扫æçš„任何一层中,或者物体B在物体A扫æçš„任何一层中,则检测到接触。也请å‚阅"
"[member collision_mask]。"
#: doc/classes/CollisionObject2D.xml:206
@@ -16021,7 +16137,7 @@ msgid ""
"masks[/url] in the documentation for more information."
msgstr ""
"区域的物ç†å±‚。å¯ç¢°æ’žçš„物体å¯ä»¥å­˜åœ¨äºŽ32个ä¸åŒå±‚中的任何一层。如果物体A在物体B"
-"扫æçš„任何一层中,或者物体B在物体A扫æçš„任何一层中,则检测到接触。也请å‚è§"
+"扫æçš„任何一层中,或者物体B在物体A扫æçš„任何一层中,则检测到接触。也请å‚阅"
"[member collision_mask]。"
#: doc/classes/CollisionObject2D.xml:210
@@ -16042,7 +16158,7 @@ msgid ""
"set. See [method _input_event] for details."
msgstr ""
"在å‘生输入事件时å‘å‡ºã€‚è¦æ±‚[member input_pickable]为[code] true [/code],并且"
-"至少è¦è®¾ç½®ä¸€ä¸ª[code] collision_layer [/code]ä½ã€‚有关详细信æ¯ï¼Œè¯·å‚è§"
+"至少è¦è®¾ç½®ä¸€ä¸ª[code] collision_layer [/code]ä½ã€‚有关详细信æ¯ï¼Œè¯·å‚阅"
"[method_input_event]。"
#: doc/classes/CollisionObject2D.xml:224
@@ -16189,13 +16305,12 @@ msgstr ""
#: doc/classes/PhysicsBody2D.xml:10 doc/classes/PhysicsDirectBodyState.xml:10
#: doc/classes/PhysicsDirectSpaceState.xml:10 doc/classes/RigidBody.xml:14
#: doc/classes/Shape.xml:10 doc/classes/Shape2D.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/physics/"
-"physics_introduction.html"
+"https://docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction."
+"html"
#: doc/classes/CollisionShape.xml:19
#, fuzzy
@@ -16239,9 +16354,8 @@ msgstr ""
#: doc/classes/CollisionShape2D.xml:13 doc/classes/KinematicBody2D.xml:14
#: doc/classes/RectangleShape2D.xml:11 doc/classes/TileMap.xml:17
#: doc/classes/TileSet.xml:17
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/113"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/113"
#: doc/classes/CollisionShape2D.xml:19
#, fuzzy
@@ -16270,7 +16384,6 @@ msgid "Color in RGBA format using floats on the range of 0 to 1."
msgstr "RGBAæ ¼å¼çš„颜色使用0到1范围内的浮点数。"
#: doc/classes/Color.xml:7
-#, fuzzy
msgid ""
"A color represented by red, green, blue, and alpha (RGBA) components. The "
"alpha component is often used for transparency. Values are in floating-point "
@@ -16296,22 +16409,21 @@ msgstr ""
"如果你想æä¾›0到255范围内的值,你应该使用[method @GDScript.Color8]。\n"
"[b]注æ„:[/b] 在布尔上下文中,如果一个Color等于[code]Color(0, 0, 0, 1)[/code]"
"(ä¸é€æ˜Žçš„黑色),那么它将评估为[code]false[/code]。å¦åˆ™ï¼Œä¸€ä¸ªColor将始终评估为"
-"[code]true[/code]。"
+"[code]true[/code]。\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"color_constants.png]Color 常é‡é€ŸæŸ¥è¡¨[/url]"
#: doc/classes/Color.xml:14 doc/classes/ColorPickerButton.xml:13
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/517"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/517"
#: doc/classes/Color.xml:15 doc/classes/ColorPicker.xml:11
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/146"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/146"
#: doc/classes/Color.xml:16 doc/classes/ColorPickerButton.xml:12
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/133"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/133"
#: doc/classes/Color.xml:23
msgid ""
@@ -16325,7 +16437,7 @@ msgid ""
"var c4 = Color(\"b2d90a\") # RGB format.\n"
"[/codeblock]"
msgstr ""
-"从HTMLå六进制颜色字符串构造ARGB或RGBæ ¼å¼çš„颜色。å¦è¯·å‚è§[method @ GDScript."
+"从HTMLå六进制颜色字符串构造ARGB或RGBæ ¼å¼çš„颜色。å¦è¯·å‚阅[method @ GDScript."
"ColorN]。\n"
"[codeblock]\n"
"# Each of the following creates the same color RGBA(178, 217, 10, 255).\n"
@@ -17304,7 +17416,7 @@ msgstr "从这个颜色选择器的颜色预设列表中删除给定的颜色。
msgid "Returns the list of colors in the presets of the color picker."
msgstr "返回颜色选择器预设中的颜色列表。"
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr "当å‰é€‰æ‹©çš„颜色。"
@@ -17411,47 +17523,55 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
-msgstr "返回此节点切æ¢çš„[ColorPicker]。"
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
+#, fuzzy
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
"返回控件的[PopupPanel],å…许您连接到弹出信å·ã€‚这使您å¯ä»¥åœ¨æ˜¾ç¤ºæˆ–éšè—"
"ColorPicker时处ç†äº‹ä»¶ã€‚"
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr "如果[code]true[/code],则显示的[ColorPicker]中的alpha通é“å°†å¯è§ã€‚"
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr "é¢œè‰²æ”¹å˜æ—¶å‘出。"
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr "创建[ColorPicker]时(第一次按下按钮)å‘出。"
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr "当[ColorPicker]关闭时å‘出。"
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr "颜色预览的背景将在按钮上显示。"
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr "当[ColorPickerButton]被ç¦ç”¨æ—¶ä½¿ç”¨çš„[StyleBox]。"
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
@@ -17460,39 +17580,39 @@ msgstr ""
"当[ColorPickerButton]获得焦点时使用的[StyleBox]。它显示在当å‰çš„[StyleBox]上,"
"所以使用[StyleBoxEmpty]åªæ˜¯ç¦ç”¨ç„¦ç‚¹è§†è§‰æ•ˆæžœã€‚"
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr "[ColorPickerButton]文本的[Font]。"
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr "[ColorPickerButton]的默认文本[Color]。"
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr "ç¦ç”¨[ColorPickerButton]时使用的文本[Color]。"
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr "悬åœ[ColorPickerButton]时使用的文本[Color]。"
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr "按下[ColorPickerButton]时使用的文本[Color]。"
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr "悬åœ[ColorPickerButton]时使用的[StyleBox]。"
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr "[ColorPickerButton]的图标和文本之间的水平间è·ã€‚"
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr "[ColorPickerButton]的默认[StyleBox]。"
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr "按下[ColorPickerButton]时使用的[StyleBox]。"
@@ -17906,8 +18026,12 @@ msgstr ""
"[/codeblock]."
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
-msgstr "è¿”å›žå–æ¶ˆæŒ‰é’®ã€‚"
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
#: doc/classes/Container.xml:4
msgid "Base node for containers."
@@ -17990,7 +18114,7 @@ msgstr ""
"所有与UI相关的节点的基类。 [Control]具有定义其范围的边界矩形,相对于其父控件"
"或当å‰è§†å£çš„锚点ä½ç½®ä»¥åŠè¡¨ç¤ºé”šç‚¹å移的边è·ã€‚当节点,它的任何父节点或å±å¹•尺寸"
"更改时,边è·ä¼šè‡ªåŠ¨æ›´æ–°ã€‚\n"
-"有关Godotçš„UI系统,锚点,边è·å’Œå®¹å™¨çš„æ›´å¤šä¿¡æ¯ï¼Œè¯·å‚è§æ‰‹å†Œä¸­çš„ç›¸å…³æ•™ç¨‹ã€‚è¦æž„建"
+"有关Godotçš„UI系统,锚点,边è·å’Œå®¹å™¨çš„æ›´å¤šä¿¡æ¯ï¼Œè¯·å‚é˜…æ‰‹å†Œä¸­çš„ç›¸å…³æ•™ç¨‹ã€‚è¦æž„建"
"çµæ´»çš„UIï¼Œæ‚¨éœ€è¦æ··åˆä½¿ç”¨ä»Ž[Control]å’Œ[Container]节点继承的UI元素。\n"
"[b]用户界é¢èŠ‚ç‚¹å’Œè¾“å…¥[/b]\n"
"Godot首先通过调用[method Node._input]将输入事件å‘é€åˆ°åœºæ™¯çš„æ ¹èŠ‚ç‚¹ã€‚ [method "
@@ -18009,22 +18133,18 @@ msgstr ""
"之一,例如[method add_theme_font_override]。您å¯ä»¥ä½¿ç”¨æ£€æŸ¥å™¨è¦†ç›–主题。"
#: doc/classes/Control.xml:17
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/gui/index.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/gui/index.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/gui/index.html"
#: doc/classes/Control.xml:19
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/gui/control_node_gallery.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/gui/index.html"
+msgstr ""
+"https://docs.godotengine.org/en/3.4/tutorials/gui/control_node_gallery.html"
#: doc/classes/Control.xml:20
-#, fuzzy
msgid "https://github.com/godotengine/godot-demo-projects/tree/master/gui"
-msgstr ""
-"https://github.com/godotengine/godot-demo-projects/tree/master/audio/"
-"generator"
+msgstr "https://github.com/godotengine/godot-demo-projects/tree/master/gui"
#: doc/classes/Control.xml:26
msgid ""
@@ -18075,7 +18195,7 @@ msgid ""
"[member rect_clip_content] or [method _clips_input] enabled.\n"
"[b]Note:[/b] Event position is relative to the control origin."
msgstr ""
-"用户è¦å®žçŽ°çš„è™šæ‹Ÿæ–¹æ³•ã€‚ä½¿ç”¨æ­¤æ–¹æ³•æ¥å¤„ç†å’ŒæŽ¥å—UI元素上的输入。å‚è§[方法"
+"用户è¦å®žçŽ°çš„è™šæ‹Ÿæ–¹æ³•ã€‚ä½¿ç”¨æ­¤æ–¹æ³•æ¥å¤„ç†å’ŒæŽ¥å—UI元素上的输入。å‚阅[方法"
"accept_event]。\n"
"示例:å•击一个控件。\n"
"[codeblock]\n"
@@ -18328,7 +18448,7 @@ msgid ""
"Returns [member margin_left] and [member margin_top]. See also [member "
"rect_position]."
msgstr ""
-"返回[member margin_left]å’Œ[member margin_top]。å¦è¯·å‚è§[member "
+"返回[member margin_left]å’Œ[member margin_top]。å¦è¯·å‚阅[member "
"rect_position]。"
#: doc/classes/Control.xml:229
@@ -18372,7 +18492,7 @@ msgstr ""
msgid ""
"Returns the mouse cursor shape the control displays on mouse hover. See "
"[enum CursorShape]."
-msgstr "è¿”å›žæŽ§ä»¶åœ¨é¼ æ ‡æ‚¬åœæ—¶æ˜¾ç¤ºçš„鼠标指针形状。å‚è§[enum CursorShape]。"
+msgstr "è¿”å›žæŽ§ä»¶åœ¨é¼ æ ‡æ‚¬åœæ—¶æ˜¾ç¤ºçš„鼠标指针形状。å‚阅[enum CursorShape]。"
#: doc/classes/Control.xml:266
msgid ""
@@ -18460,7 +18580,7 @@ msgstr ""
#: doc/classes/Control.xml:329
msgid "Returns the minimum size for this control. See [member rect_min_size]."
-msgstr "返回此控件的最å°å°ºå¯¸ã€‚å‚è§[member rect_min_size]。"
+msgstr "返回此控件的最å°å°ºå¯¸ã€‚å‚阅[member rect_min_size]。"
#: doc/classes/Control.xml:335
msgid "Returns the width/height occupied in the parent control."
@@ -18576,7 +18696,7 @@ msgid ""
"Returns [code]true[/code] if this is the current focused control. See "
"[member focus_mode]."
msgstr ""
-"如果这是当å‰çš„焦点控件,则返回[code] true [/code]。å‚è§[member focus_mode]。"
+"如果这是当å‰çš„焦点控件,则返回[code] true [/code]。å‚阅[member focus_mode]。"
#: doc/classes/Control.xml:440
#, fuzzy
@@ -18720,7 +18840,7 @@ msgid ""
"Sets both anchor preset and margin preset. See [method set_anchors_preset] "
"and [method set_margins_preset]."
msgstr ""
-"设置锚定预设和边è·é¢„设。请å‚è§[method set_anchors_preset]å’Œ[method "
+"设置锚定预设和边è·é¢„设。请å‚阅[method set_anchors_preset]å’Œ[method "
"set_margins_preset]。"
#: doc/classes/Control.xml:551
@@ -18908,7 +19028,7 @@ msgid ""
"If [code]keep_margins[/code] is [code]true[/code], control's anchors will be "
"updated instead of margins."
msgstr ""
-"设置控件的大å°(å‚è§[member rect_size])。\n"
+"设置控件的大å°(å‚阅[member rect_size])。\n"
"如果[code]keep_margins[/code]是[code]true[/code]ï¼Œåˆ™ä¼šæ›´æ–°æŽ§ä»¶çš„é”šç‚¹è€Œä¸æ˜¯é¡µ"
"è¾¹è·ã€‚"
@@ -19176,7 +19296,7 @@ msgid ""
msgstr ""
"控制控件是å¦èƒ½å¤Ÿé€šè¿‡[method _gui_input]接收鼠标按钮输入事件,以åŠå¦‚何处ç†è¿™äº›"
"事件。还控制控件是å¦èƒ½æŽ¥æ”¶[signal mouse_entered]å’Œ[signal mouse_exited]ä¿¡å·ã€‚"
-"å‚è§å¸¸é‡æ¥äº†è§£æ¯ä¸ªå¸¸é‡çš„作用。"
+"å‚é˜…å¸¸é‡æ¥äº†è§£æ¯ä¸ªå¸¸é‡çš„作用。"
#: doc/classes/Control.xml:774
msgid ""
@@ -19322,7 +19442,7 @@ msgstr "当节点的最å°å¤§å°æ›´æ”¹æ—¶å‘出。"
#: doc/classes/Control.xml:836
#, fuzzy
msgid "Emitted when a modal [Control] is closed. See [method show_modal]."
-msgstr "按下自定义按钮时å‘出。 å‚è§[方法add_button]。"
+msgstr "按下自定义按钮时å‘出。 å‚阅[方法add_button]。"
#: doc/classes/Control.xml:841
msgid ""
@@ -19725,7 +19845,7 @@ msgid ""
"[member size_flags_vertical]."
msgstr ""
"告诉父级[Container]让该节点å ç”¨æ‚¨æ ‡è®°çš„轴上的所有å¯ç”¨ç©ºé—´ã€‚如果将多个相邻节点"
-"设置为扩展,它们将根æ®å…¶æ‹‰ä¼¸æ¯”共享空间。å‚è§[member "
+"设置为扩展,它们将根æ®å…¶æ‹‰ä¼¸æ¯”共享空间。å‚阅[member "
"size_flags_stretch_ratio]。与[member size_flags_horizontal]和[member "
"size_flags_vertical]一起使用。"
@@ -19734,7 +19854,7 @@ msgid ""
"Sets the node's size flags to both fill and expand. See the 2 constants "
"above for more information."
msgstr ""
-"å°†èŠ‚ç‚¹çš„å¤§å°æ ‡å¿—è®¾ç½®ä¸ºåŒæ—¶å¡«å……和扩展。有关更多信æ¯ï¼Œè¯·å‚è§ä¸Šé¢çš„2个常é‡ã€‚"
+"å°†èŠ‚ç‚¹çš„å¤§å°æ ‡å¿—è®¾ç½®ä¸ºåŒæ—¶å¡«å……和扩展。有关更多信æ¯ï¼Œè¯·å‚阅上é¢çš„2个常é‡ã€‚"
#: doc/classes/Control.xml:1020
msgid ""
@@ -19889,7 +20009,7 @@ msgid ""
"points. See [method Geometry.convex_hull_2d] for details."
msgstr ""
"基于æä¾›çš„点集,这将使用凸包算法创建并分é…[member points]属性。删除所有ä¸éœ€è¦"
-"的点。有关详细信æ¯ï¼Œè¯·å‚è§[method Geometry2D.convex_hull]。"
+"的点。有关详细信æ¯ï¼Œè¯·å‚阅[method Geometry2D.convex_hull]。"
#: doc/classes/ConvexPolygonShape2D.xml:23
msgid ""
@@ -19940,7 +20060,7 @@ msgstr "返回[enum Parameter]æŒ‡å®šçš„å‚æ•°çš„éšæœºæ€§ç³»æ•°ã€‚"
#: doc/classes/CPUParticles.xml:46 doc/classes/CPUParticles2D.xml:47
msgid ""
"Returns the enabled state of the given flag (see [enum Flags] for options)."
-msgstr "返回给定标志的å¯ç”¨çжæ€ï¼ˆæœ‰å…³é€‰é¡¹ï¼Œè¯·å‚è§[枚举标志])。"
+msgstr "返回给定标志的å¯ç”¨çжæ€ï¼ˆæœ‰å…³é€‰é¡¹ï¼Œè¯·å‚阅[枚举标志])。"
#: doc/classes/CPUParticles.xml:52 doc/classes/CPUParticles2D.xml:53
msgid "Restarts the particle emitter."
@@ -19961,7 +20081,7 @@ msgstr "设置[enum Parameter]æŒ‡å®šçš„å‚æ•°çš„éšæœºæ€§å› å­ã€‚"
#: doc/classes/CPUParticles.xml:84 doc/classes/CPUParticles2D.xml:85
msgid "Enables or disables the given flag (see [enum Flags] for options)."
-msgstr "å¯ç”¨æˆ–ç¦ç”¨ç»™å®šæ ‡å¿—(有关选项,请å‚è§[枚举标志])。"
+msgstr "å¯ç”¨æˆ–ç¦ç”¨ç»™å®šæ ‡å¿—(有关选项,请å‚阅[枚举标志])。"
#: doc/classes/CPUParticles.xml:90 doc/classes/CPUParticles2D.xml:91
#: doc/classes/Particles.xml:47 doc/classes/Particles2D.xml:33
@@ -20132,7 +20252,7 @@ msgstr "设置使用[constant EMISSION_SHAPE_DIRECTED_POINTS]æ—¶ç²’å­å‘å°„çš„æ
msgid ""
"Particles will be emitted inside this region. See [enum EmissionShape] for "
"possible values."
-msgstr "ç²’å­å°†åœ¨æ­¤åŒºåŸŸå†…å‘射。有关å¯èƒ½çš„值,请å‚è§[enum EmissionShape]。"
+msgstr "ç²’å­å°†åœ¨æ­¤åŒºåŸŸå†…å‘射。有关å¯èƒ½çš„值,请å‚阅[enum EmissionShape]。"
#: doc/classes/CPUParticles.xml:178
msgid ""
@@ -20184,7 +20304,7 @@ msgid ""
"Amount of [member spread] in Y/Z plane. A value of [code]1[/code] restricts "
"particles to X/Z plane."
msgstr ""
-"Y / Zå¹³é¢ä¸­çš„[æˆå‘˜ä¼ æ’­]æ•°é‡ã€‚值[code] 1 [/code]将粒å­é™åˆ¶åœ¨X / Zå¹³é¢ä¸Šã€‚"
+"Y / Zå¹³é¢ä¸­çš„[member ä¼ æ’­]æ•°é‡ã€‚值[code] 1 [/code]将粒å­é™åˆ¶åœ¨X / Zå¹³é¢ä¸Šã€‚"
#: doc/classes/CPUParticles.xml:202 doc/classes/CPUParticles2D.xml:182
#: doc/classes/Particles.xml:78 doc/classes/Particles2D.xml:49
@@ -20560,16 +20680,14 @@ msgid ""
"fly and doesn't need to be configured by the user."
msgstr ""
"基于CPUçš„2Dç²’å­èŠ‚ç‚¹ï¼Œç”¨äºŽåˆ›å»ºå„ç§ç²’å­ç³»ç»Ÿå’Œæ•ˆæžœã€‚\n"
-"å¦è¯·å‚è§[GPUParticles2D],它æä¾›ä¸Žç¡¬ä»¶åŠ é€Ÿç›¸åŒçš„功能,但å¯èƒ½æ— æ³•在较旧的设备"
+"å¦è¯·å‚阅[GPUParticles2D],它æä¾›ä¸Žç¡¬ä»¶åŠ é€Ÿç›¸åŒçš„功能,但å¯èƒ½æ— æ³•在较旧的设备"
"上è¿è¡Œã€‚"
#: doc/classes/CPUParticles2D.xml:12 doc/classes/Particles2D.xml:14
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/2d/particle_systems_2d.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/2d/particle_systems_2d."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/2d/particle_systems_2d.html"
#: doc/classes/CPUParticles2D.xml:19
#, fuzzy
@@ -20584,7 +20702,7 @@ msgstr ""
msgid ""
"Each particle's initial color. If [member texture] is defined, it will be "
"multiplied by this color."
-msgstr "æ¯ä¸ªç²’å­çš„åˆå§‹é¢œè‰²ã€‚如果定义了[æˆå‘˜çº¹ç†],它将乘以该颜色。"
+msgstr "æ¯ä¸ªç²’å­çš„åˆå§‹é¢œè‰²ã€‚如果定义了[member 纹ç†],它将乘以该颜色。"
#: doc/classes/CPUParticles2D.xml:134
#, fuzzy
@@ -21419,16 +21537,15 @@ msgid ""
msgstr ""
"此类表示C#脚本。它与[GDScript]类的C#等效,并且仅在å¯ç”¨äº†Monoçš„Godot版本中å¯"
"用。\n"
-"å¦è¯·å‚è§[GodotSharp]。"
+"å¦è¯·å‚阅[GodotSharp]。"
#: modules/mono/doc_classes/CSharpScript.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/scripting/c_sharp/index."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/scripting/c_sharp/"
-"index.html"
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/c_sharp/index."
+"html"
#: modules/mono/doc_classes/CSharpScript.xml:18
#: modules/gdnative/doc_classes/PluginScript.xml:13
@@ -21437,7 +21554,7 @@ msgstr "返回脚本的新实例。"
#: doc/classes/CubeMap.xml:4
msgid "A CubeMap is a 6-sided 3D texture."
-msgstr ""
+msgstr "CubeMap æ˜¯ä¸€ç§ 6 é¢ 3D 纹ç†ã€‚"
#: doc/classes/CubeMap.xml:7
msgid ""
@@ -21447,9 +21564,8 @@ msgid ""
msgstr ""
#: doc/classes/CubeMap.xml:15
-#, fuzzy
msgid "Returns the [CubeMap]'s height."
-msgstr "返回图åƒçš„高度。"
+msgstr "返回[CubeMap]的高度。"
#: doc/classes/CubeMap.xml:22
#, fuzzy
@@ -21459,9 +21575,8 @@ msgid ""
msgstr "使用[enum BodyMode]常é‡ä¹‹ä¸€è®¾ç½®body模å¼ã€‚"
#: doc/classes/CubeMap.xml:28
-#, fuzzy
msgid "Returns the [CubeMap]'s width."
-msgstr "返回图åƒçš„宽度。"
+msgstr "返回[CubeMap]的宽度。"
#: doc/classes/CubeMap.xml:36
#, fuzzy
@@ -21487,11 +21602,11 @@ msgstr ""
#: doc/classes/CubeMap.xml:48
#, fuzzy
msgid "The [CubeMap]'s storage mode. See [enum Storage] constants."
-msgstr "Camera2D的锚点。å‚è§[enum AnchorMode]常é‡ã€‚"
+msgstr "Camera2D的锚点。å‚阅[enum AnchorMode]常é‡ã€‚"
#: doc/classes/CubeMap.xml:53
msgid "Store the [CubeMap] without any compression."
-msgstr ""
+msgstr "存储[CubeMap]而ä¸è¿›è¡Œä»»ä½•压缩。"
#: doc/classes/CubeMap.xml:56
msgid "Store the [CubeMap] with strong compression that reduces image quality."
@@ -21538,7 +21653,7 @@ msgstr ""
#: doc/classes/CubeMap.xml:83
msgid "Repeat (instead of clamp to edge)."
-msgstr ""
+msgstr "é‡å¤ï¼ˆè€Œä¸æ˜¯é™åˆ¶åˆ°è¾¹ç¼˜ï¼‰ã€‚"
#: doc/classes/CubeMap.xml:86
msgid "Turn on magnifying filter, to enable smooth zooming in of the texture."
@@ -21818,7 +21933,7 @@ msgstr "曲线能达到的最å°å€¼ã€‚"
#: doc/classes/Curve.xml:166
msgid "Emitted when [member max_value] or [member min_value] is changed."
-msgstr "更改[æˆå‘˜çš„æœ€å¤§å€¼]或[æˆå‘˜çš„æœ€å°å€¼]æ—¶å‘出。"
+msgstr "更改[member 的最大值]或[member 的最å°å€¼]æ—¶å‘出。"
#: doc/classes/Curve.xml:172
msgid "The tangent on this side of the point is user-defined."
@@ -21873,7 +21988,7 @@ msgid ""
"Returns the total length of the curve, based on the cached points. Given "
"enough density (see [member bake_interval]), it should be approximate enough."
msgstr ""
-"æ ¹æ®ç¼“存的点,返回曲线的总长度。给予足够的密度(å‚è§[member bake_interval]),"
+"æ ¹æ®ç¼“存的点,返回曲线的总长度。给予足够的密度(å‚阅[member bake_interval]),"
"它应该是足够近似的。"
#: doc/classes/Curve2D.xml:39
@@ -22548,12 +22663,11 @@ msgstr ""
"[/codeblock]"
#: doc/classes/Dictionary.xml:87
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
"gdscript_basics.html#dictionary"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/scripting/gdscript/"
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
"gdscript_basics.html#dictionary"
#: doc/classes/Dictionary.xml:94
@@ -22663,7 +22777,7 @@ msgstr "返回[Dictionary]中的值列表。"
#: doc/classes/DirectionalLight.xml:4
msgid "Directional light from a distance, as from the Sun."
-msgstr "æ¥è‡ªè¿œå¤„的方å‘光,如æ¥è‡ªå¤ªé˜³çš„光。"
+msgstr "æ¥è‡ªè¿œå¤„的定å‘å…‰æºï¼Œå¦‚æ¥è‡ªå¤ªé˜³çš„光。"
#: doc/classes/DirectionalLight.xml:7
#, fuzzy
@@ -22680,12 +22794,10 @@ msgstr ""
#: doc/classes/DirectionalLight.xml:10 doc/classes/Light.xml:10
#: doc/classes/OmniLight.xml:11 doc/classes/SpotLight.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/3d/lights_and_shadows.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/lights_and_shadows."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/3d/lights_and_shadows.html"
#: doc/classes/DirectionalLight.xml:16
msgid ""
@@ -22704,7 +22816,7 @@ msgstr ""
msgid ""
"Optimizes shadow rendering for detail versus movement. See [enum "
"ShadowDepthRange]."
-msgstr "优化阴影渲染的细节与è¿åŠ¨ã€‚å‚è§[enum ShadowDepthRange]。"
+msgstr "优化阴影渲染的细节与è¿åŠ¨ã€‚å‚阅[enum ShadowDepthRange]。"
#: doc/classes/DirectionalLight.xml:25
msgid "The maximum distance for shadow splits."
@@ -22712,7 +22824,7 @@ msgstr "阴影分割的最大è·ç¦»ã€‚"
#: doc/classes/DirectionalLight.xml:28
msgid "The light's shadow rendering algorithm. See [enum ShadowMode]."
-msgstr "ç¯å…‰çš„阴影渲染算法。å‚è§[enum ShadowMode]。"
+msgstr "ç¯å…‰çš„阴影渲染算法。å‚阅[enum ShadowMode]。"
#: doc/classes/DirectionalLight.xml:31
msgid ""
@@ -22727,8 +22839,8 @@ msgid ""
"directional_shadow_mode] is [code]SHADOW_PARALLEL_2_SPLITS[/code] or "
"[code]SHADOW_PARALLEL_4_SPLITS[/code]."
msgstr ""
-"æ‘„åƒæœºåˆ°å½±å­åˆ†å‰²1çš„è·ç¦»ã€‚相对于[member directional_shadow_max_distance]ã€‚åªæœ‰"
-"当[member directional_shadow_mode]是[code]SHADOW_PARALLEL_2_SPLITS[/code]或"
+"相机到影å­åˆ†å‰²1çš„è·ç¦»ã€‚相对于[member directional_shadow_max_distance]ã€‚åªæœ‰å½“"
+"[member directional_shadow_mode]是[code]SHADOW_PARALLEL_2_SPLITS[/code]或"
"[code]SHADOW_PARALLEL_4_SPLITS[/code]æ—¶æ‰ä½¿ç”¨ã€‚"
#: doc/classes/DirectionalLight.xml:37
@@ -22782,7 +22894,7 @@ msgstr ""
msgid ""
"Keeps the shadow stable when the camera moves, at the cost of lower "
"effective shadow resolution."
-msgstr "å½“æ‘„åƒæœºç§»åŠ¨æ—¶ï¼Œä¿æŒå½±å­ç¨³å®šï¼Œä½†ä»£ä»·æ˜¯é™ä½Žæœ‰æ•ˆå½±å­åˆ†è¾¨çŽ‡ã€‚"
+msgstr "å½“ç›¸æœºç§»åŠ¨æ—¶ï¼Œä¿æŒå½±å­ç¨³å®šï¼Œä½†ä»£ä»·æ˜¯é™ä½Žæœ‰æ•ˆå½±å­åˆ†è¾¨çŽ‡ã€‚"
#: doc/classes/DirectionalLight.xml:58
msgid ""
@@ -22790,8 +22902,8 @@ msgid ""
"shadow edges. This mode typically works best in games where the camera will "
"often move at high speeds, such as most racing games."
msgstr ""
-"å°è¯•实现最大的阴影分辨率。å¯èƒ½å¯¼è‡´é˜´å½±è¾¹ç¼˜å‡ºçŽ°é”¯é½¿æ•ˆæžœã€‚æ­¤æ¨¡å¼é€šå¸¸åœ¨æ‘„åƒæœºç»"
-"常高速移动的游æˆä¸­æ•ˆæžœæœ€å¥½ï¼Œä¾‹å¦‚大多数赛车游æˆã€‚"
+"å°è¯•实现最大的阴影分辨率。å¯èƒ½å¯¼è‡´é˜´å½±è¾¹ç¼˜å‡ºçŽ°é”¯é½¿æ•ˆæžœã€‚æ­¤æ¨¡å¼é€šå¸¸åœ¨ç›¸æœºç»å¸¸"
+"高速移动的游æˆä¸­æ•ˆæžœæœ€å¥½ï¼Œä¾‹å¦‚大多数赛车游æˆã€‚"
#: doc/classes/Directory.xml:4
msgid "Type used to handle the filesystem."
@@ -22849,13 +22961,12 @@ msgstr ""
"[/codeblock]"
#: doc/classes/Directory.xml:28 doc/classes/File.xml:28
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/filesystem."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/step_by_step/"
-"filesystem.html"
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/filesystem."
+"html"
#: doc/classes/Directory.xml:35
msgid ""
@@ -22922,7 +23033,7 @@ msgid ""
"Returns the currently opened directory's drive index. See [method get_drive] "
"to convert returned index to the name of the drive."
msgstr ""
-"è¿”å›žå½“å‰æ‰“开的目录的驱动器索引。请å‚è§[method get_drive]将返回的索引转æ¢ä¸ºé©±"
+"è¿”å›žå½“å‰æ‰“开的目录的驱动器索引。请å‚阅[method get_drive]将返回的索引转æ¢ä¸ºé©±"
"动器的å称。"
#: doc/classes/Directory.xml:84
@@ -23004,7 +23115,7 @@ msgid ""
"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
msgstr ""
"åˆ›å»ºä¸€ä¸ªç›®å½•ã€‚å‚æ•°å¯ä»¥æ˜¯å½“å‰ç›®å½•的相对路径,也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„。目标目录应该放"
-"置在一个已ç»å­˜åœ¨çš„目录中(如果è¦é€’归创建完整的路径,请å‚è§[make_dir_recursive "
+"置在一个已ç»å­˜åœ¨çš„目录中(如果è¦é€’归创建完整的路径,请å‚阅[make_dir_recursive "
"method])。\n"
"返回[enum Error]代ç å¸¸é‡ä¹‹ä¸€(æˆåŠŸæ—¶è¿”å›ž[code]OK[/code])。"
@@ -23208,7 +23319,7 @@ msgid ""
"the new connections will be invalid due to cookie exchange."
msgstr ""
"å°è¯•与给定的 [code]udp_peer[/code] å¯åЍ DTLS æ¡æ‰‹ï¼Œè¯¥ peer 必须已ç»è¿žæŽ¥ï¼ˆå‚"
-"è§ [method PacketPeerUDP.connect_to_host])。\n"
+"阅 [method PacketPeerUDP.connect_to_host])。\n"
"[b]注æ„[/b]。你必须检查返回的PacketPeerUDPçš„çŠ¶æ€æ˜¯å¦ä¸º[常é‡PacketPeerDTLS."
"STATUS_HANDSHAKING],因为正常情况下,50%的新连接会因为cookie交æ¢è€Œæ— æ•ˆã€‚"
@@ -23285,7 +23396,7 @@ msgstr "返回åŽå¤‡å­—体的数é‡ã€‚"
#: doc/classes/DynamicFont.xml:52
msgid ""
"Returns the spacing for the given [code]type[/code] (see [enum SpacingType])."
-msgstr "返回给定[code]type[/code]的间è·(å‚è§[enum SpacingType])。"
+msgstr "返回给定[code]type[/code]的间è·(å‚阅[enum SpacingType])。"
#: doc/classes/DynamicFont.xml:59
msgid "Removes the fallback font at index [code]idx[/code]."
@@ -23300,7 +23411,7 @@ msgid ""
"Sets the spacing for [code]type[/code] (see [enum SpacingType]) to "
"[code]value[/code] in pixels (not relative to the font size)."
msgstr ""
-"ç»™[code]type[/code]设置间è·(å‚è§[enum SpacingType])为[code]value[/code],å•ä½"
+"ç»™[code]type[/code]设置间è·(å‚阅[enum SpacingType])为[code]value[/code],å•ä½"
"为åƒç´ (ä¸Žå­—ä½“å¤§å°æ— å…³)。"
#: doc/classes/DynamicFont.xml:81
@@ -23376,11 +23487,11 @@ msgstr "底部间è·ã€‚"
#: doc/classes/DynamicFont.xml:122
msgid "Spacing for each character."
-msgstr ""
+msgstr "æ¯ä¸ªå­—符的间è·ã€‚"
#: doc/classes/DynamicFont.xml:125
msgid "Spacing for the space character."
-msgstr ""
+msgstr "空格字符的间è·ã€‚"
#: doc/classes/DynamicFontData.xml:4
msgid "Used with [DynamicFont] to describe the location of a font file."
@@ -23406,7 +23517,7 @@ msgstr "矢é‡å­—体文件的路径。"
#: doc/classes/DynamicFontData.xml:22
msgid "The font hinting mode used by FreeType. See [enum Hinting] for options."
-msgstr "FreeType使用的字体æç¤ºæ¨¡å¼ã€‚å‚è§ [enum Hinting] 选项。"
+msgstr "FreeType使用的字体æç¤ºæ¨¡å¼ã€‚å‚阅 [enum Hinting] 选项。"
#: doc/classes/DynamicFontData.xml:27
msgid "Disables font hinting (smoother but less crisp)."
@@ -23505,7 +23616,7 @@ msgstr "在标签堆中添加一个æ¢è¡Œæ ‡ç­¾ã€‚"
#: doc/classes/EditorExportPlugin.xml:88
msgid "Adds content for iOS Property List files."
-msgstr ""
+msgstr "为iOS属性列表文件添加内容。"
#: doc/classes/EditorExportPlugin.xml:95
#, fuzzy
@@ -23720,17 +23831,21 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr "删除除“All Files(*)â€ç­›é€‰å™¨ä¹‹å¤–的所有筛选器。"
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
-msgstr "返回用于显示文件系统的 [code]VBoxContainer[/code] 。"
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
"通知[EditorFileDialog]它的数æ®è§†å›¾ä¸å†å‡†ç¡®ã€‚在下次视图更新时更新视图内容。"
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
@@ -23738,74 +23853,74 @@ msgstr ""
"用户å¯ä»¥é€‰æ‹©æ–‡ä»¶çš„ä½ç½®ï¼ŒåŒ…括[code]res://[/code]ã€[code]user://[/code]和本地文"
"件系统。"
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr "当å‰å ç”¨çš„目录。"
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr "当å‰é€‰æ‹©çš„æ–‡ä»¶ã€‚"
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr "åœ°å€æ ä¸­çš„æ–‡ä»¶ç³»ç»Ÿè·¯å¾„。"
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
"如果[code]true[/code],[EditorFileDialog]å°†ä¸ä¼šåœ¨è¦†ç›–文件之å‰è­¦å‘Šç”¨æˆ·ã€‚"
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr "[EditorFileDialog]å‘用户显示资æºçš„视图格å¼ã€‚"
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr "如果[code]true[/code],éšè—的文件和目录将在[EditorFileDialog]中å¯è§ã€‚"
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr "选择目录时触å‘。"
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr "选择文件时触å‘。"
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr "选择多个文件时触å‘。"
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr "[EditorFileDialog] ä»…å¯ä»¥é€‰æ‹©ä¸€ä¸ªæ–‡ä»¶ï¼Œé€‰æ‹©åŒæ„窗å£å°†ä¼šæ‰“开这个文件。"
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
"[EditorFileDialog] å¯ä»¥é€‰æ‹©å¤šä¸ªæ–‡ä»¶ï¼Œé€‰æ‹©åŒæ„窗å£å°†ä¼šæ‰“开所有选择的文件。"
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr "[EditorFileDialog] å¯ä»¥é€‰æ‹©ä¸€ä¸ªç›®å½•ï¼Œé€‰æ‹©åŒæ„窗å£å°†ä¼šæ‰“开这个目录。"
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
@@ -23813,31 +23928,31 @@ msgstr ""
"[EditorFileDialog] å¯ä»¥é€‰æ‹©ä¸€ä¸ªæ–‡ä»¶æˆ–è€…ç›®å½•ï¼Œé€‰æ‹©åŒæ„窗å£å°†ä¼šæ‰“开这个文件或目"
"录。"
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr "[EditorFileDialog] å¯ä»¥é€‰æ‹©ä¸€ä¸ªæ–‡ä»¶ï¼Œé€‰æ‹©åŒæ„窗å£å°†ä¼šä¿å­˜è¿™ä¸ªæ–‡ä»¶ã€‚"
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr "[EditorFileDialog] åªèƒ½æŸ¥çœ‹ [code]res://[/code] 目录里的内容。"
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr "[EditorFileDialog] åªèƒ½æŸ¥çœ‹[code]user://[/code] 目录里的内容。"
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr "[EditorFileDialog] å¯ä»¥æŸ¥çœ‹æ•´ä¸ªæœ¬åœ°æ–‡ä»¶ç³»ç»Ÿã€‚"
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr "[EditorFileDialog] ä»¥å›¾æ ‡çš„å½¢å¼æ˜¾ç¤ºèµ„æºã€‚"
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr "[EditorFileDialog] 以文件ååˆ—è¡¨çš„å½¢å¼æ˜¾ç¤ºèµ„æºã€‚"
@@ -24027,7 +24142,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -24074,7 +24190,7 @@ msgstr ""
"EditorImportPluginsæä¾›äº†ä¸€ç§æ‰©å±•编辑器资æºå¯¼å…¥åŠŸèƒ½çš„æ–¹æ³•ã€‚ä½¿ç”¨å®ƒä»¬ä»Žè‡ªå®šä¹‰æ–‡"
"件中导入资æºï¼Œæˆ–æä¾›ç¼–辑器现有导入器的替代方案。用[method EditorPlugin."
"add_import_plugin]注册你的[EditorPlugin]。\n"
-"EditorImportPlugins通过与特定的文件扩展å和资æºç±»åž‹å…³è”æ¥å·¥ä½œã€‚å‚è§[method "
+"EditorImportPlugins通过与特定的文件扩展å和资æºç±»åž‹å…³è”æ¥å·¥ä½œã€‚å‚阅[method "
"get_recognized_extensions]å’Œ[method get_resource_type]。它们å¯ä»¥é€‰æ‹©æ€§åœ°æŒ‡å®š"
"一些影å“导入过程的导入预设。EditorImportPlugins负责创建资æºå¹¶å°†å…¶ä¿å­˜åœ¨"
"[code].import[/code]目录下。\n"
@@ -24123,13 +24239,12 @@ msgstr ""
"[/codeblock]"
#: doc/classes/EditorImportPlugin.xml:51 doc/classes/ResourceImporter.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/import_plugins."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/plugins/editor/"
-"import_plugins.html"
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/import_plugins."
+"html"
#: doc/classes/EditorImportPlugin.xml:58
msgid ""
@@ -24228,9 +24343,11 @@ msgstr ""
"[code]\"Animation\"[/code]。"
#: doc/classes/EditorImportPlugin.xml:124
+#, fuzzy
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr "获å–用于将此资æºä¿å­˜åœ¨ [code].import[/code] 目录中的扩展å。"
#: doc/classes/EditorImportPlugin.xml:130
@@ -24250,7 +24367,7 @@ msgstr ""
"å°† [code]sourcã€e_file[/code] 导入到 [code]save_path[/code] 中,并指定导入 "
"[code] options[/code] 。[code]platform_variants[/code] 和 [code]gen_files[/"
"code] 数组将被此函数修改。\n"
-"这个方法必须被é‡å†™æ‰èƒ½å®Œæˆå®žé™…的导入工作。å‚è§æœ¬ç±»çš„æè¿°ä»¥äº†è§£å¦‚何é‡å†™è¯¥æ–¹"
+"这个方法必须被é‡å†™æ‰èƒ½å®Œæˆå®žé™…的导入工作。å‚阅本类的æè¿°ä»¥äº†è§£å¦‚何é‡å†™è¯¥æ–¹"
"法。"
#: doc/classes/EditorInspector.xml:4
@@ -24362,13 +24479,12 @@ msgstr ""
"在æ¯ä¸ªè°ƒç”¨ä¸­ï¼Œéƒ½å¯ä»¥è°ƒç”¨â€œaddâ€å‡½æ•°ã€‚"
#: doc/classes/EditorInspectorPlugin.xml:16
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/"
"inspector_plugins.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/plugins/editor/"
-"import_plugins.html"
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/"
+"inspector_plugins.html"
#: doc/classes/EditorInspectorPlugin.xml:23
#, fuzzy
@@ -24449,23 +24565,26 @@ msgid "Edits the given [Resource]."
msgstr "编辑给定的[Resource]。"
#: doc/classes/EditorInterface.xml:30
+#, fuzzy
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
"返回Godot编辑器窗å£çš„主容器。例如,您å¯ä»¥ç”¨å®ƒæ¥èŽ·å–容器的大å°ï¼Œå¹¶æ®æ­¤æ”¾ç½®æ‚¨çš„"
"控件。"
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr "返回在[FileSystemDock]中查看的当å‰è·¯å¾„。"
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr "返回已编辑的(当å‰ï¼‰åœºæ™¯çš„æ ¹èŠ‚ç‚¹[Node]。"
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -24475,50 +24594,62 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr "返回编辑器的[EditorSettings]实例。"
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
+#, fuzzy
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
"返回主编辑器控件。将其作为主å±å¹•的父å±å¹•。\n"
"[b]注æ„:[/b] è¿™å°†è¿”å›žåŒ…å«æ•´ä¸ªç¼–è¾‘å™¨çš„ä¸»ç¼–è¾‘å™¨æŽ§ä»¶ï¼Œè€Œä¸æ˜¯å…·ä½“çš„2D或3D视窗。"
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
-msgstr "返回编辑器的[FileSystemDock]实例。"
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
-msgstr "返回编辑器的[EditorInspector]实例。"
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr "返回包å«å½“剿‰“开的场景的文件路径的数组[Array]。"
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr "返回正在播放的场景åç§°ã€‚å¦‚æžœå½“å‰æ²¡æœ‰åœºæ™¯æ­£åœ¨æ’­æ”¾ï¼Œè¿”回一个空字符串。"
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr "返回编辑器的[EditorFileSystem]实例。"
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr "返回编辑器的[EditorResourcePreview]实例。"
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
-msgstr "返回编辑器的[ScriptEditor]实例。"
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
+msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
@@ -24528,11 +24659,11 @@ msgstr ""
"[method String.get_base_dir]返回其基本目录。如果选择了一个文件,将使用"
"[method String.get_base_dir]返回它的基本目录。"
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr "返回编辑器的[EditorSelection]实例。"
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
#, fuzzy
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
@@ -24540,7 +24671,7 @@ msgid ""
"will not attempt to edit [code]object[/code]."
msgstr "åœ¨ç¼–è¾‘å™¨çš„æ£€æŸ¥èµ·é¢æ¿ä¸­æ˜¾ç¤ºç»™å®š[code]object[/code]的属性。"
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
@@ -24548,7 +24679,7 @@ msgstr ""
"如果场景正在播放,返回[code]true[/code],å¦åˆ™è¿”回[code]false[/code]。暂åœçš„场"
"景将被视为正在播放。"
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
@@ -24556,51 +24687,51 @@ msgstr ""
"如果指定的æ’ä»¶ [code]plugin[/code] å·²å¯ç”¨æ—¶è¿”回 [code]true[/code]。æ’ä»¶å称与"
"其目录å称一致。"
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
#, fuzzy
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr "以[Texture2D]的数组[Array]å½¢å¼è¿”回以给定尺寸渲染的网格预览。"
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr "打开给定路径中的场景。"
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr "æ’­æ”¾å½“å‰æ´»åŠ¨çš„åœºæ™¯ã€‚"
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr "播放文件路径所指定的场景。"
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr "播放主场景。"
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr "釿–°åŠ è½½ç»™å®šè·¯å¾„çš„åœºæ™¯ã€‚"
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-"ä¿å­˜åœºæ™¯ã€‚返回 [code]OK[/code] 或 [code]ERR_CANT_CREATE[/code] (å‚è§ "
+"ä¿å­˜åœºæ™¯ã€‚返回 [code]OK[/code] 或 [code]ERR_CANT_CREATE[/code] (å‚阅 "
"[@GlobalScope] 常é‡)。"
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr "将场景ä¿å­˜ä¸º[code]path[/code]处的文件。"
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr "选择文件,路径由[code]file[/code]æä¾›ï¼Œåœ¨æ–‡ä»¶ç³»ç»Ÿé¢æ¿å¤„。"
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -24611,17 +24742,17 @@ msgstr ""
"必须与相关选项å¡çš„æ–‡æœ¬å®Œå…¨åŒ¹é…([code]2D[/code], [code]3D[/code], "
"[code]Script[/code], [code]AssetLib[/code])。"
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr "设置æ’ä»¶çš„å¯ç”¨çжæ€ã€‚æ’ä»¶å称与其目录å称相åŒã€‚"
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr "åœæ­¢å½“剿­£åœ¨æ’­æ”¾çš„场景。"
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -24641,13 +24772,12 @@ msgid ""
"editor."
msgstr ""
"编辑器使用æ’ä»¶æ¥æ‰©å±•功能。最常è§çš„æ’ä»¶ç±»åž‹æ˜¯ç¼–è¾‘ç»™å®šçš„èŠ‚ç‚¹æˆ–èµ„æºç±»åž‹ã€å¯¼å…¥æ’"
-"件和导出æ’件。å¦è¯·å‚è§[EditorScript]å‘编辑器添加函数。"
+"件和导出æ’件。å¦è¯·å‚阅[EditorScript]å‘编辑器添加函数。"
#: doc/classes/EditorPlugin.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/index.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/plugins/editor/index.html"
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/index.html"
#: doc/classes/EditorPlugin.xml:18
msgid ""
@@ -24679,7 +24809,7 @@ msgid ""
"with [method remove_control_from_container] and free it with [method Node."
"queue_free]."
msgstr ""
-"将自定义控件添加到容器中(å‚è§[enum CustomControlContainer])。在编辑器用户界"
+"将自定义控件添加到容器中(å‚阅[enum CustomControlContainer])。在编辑器用户界"
"é¢ä¸­ï¼Œæœ‰è®¸å¤šä½ç½®å¯ä»¥æ·»åŠ è‡ªå®šä¹‰æŽ§ä»¶ï¼Œè¯·è®°ä½ï¼Œæ‚¨å¿…é¡»è‡ªå·±ç®¡ç†æ‚¨çš„自定义控件的å¯"
"è§æ€§ï¼ˆå¹¶ä¸”很å¯èƒ½åœ¨æ·»åŠ åŽéšè—它)。\n"
"请记ä½ï¼Œæ‚¨å¿…é¡»è‡ªå·±ç®¡ç†æ‚¨çš„自定义控件的å¯è§æ€§ï¼ˆå¹¶ä¸”很å¯èƒ½åœ¨æ·»åŠ åŽéšè—它)。\n"
@@ -24695,7 +24825,7 @@ msgid ""
"with [method remove_control_from_docks] and free it with [method Node."
"queue_free]."
msgstr ""
-"将控件添加到特定的åœé é¢æ¿ï¼ˆæœ‰å…³é€‰é¡¹ï¼Œè¯·å‚è§[enum DockSlot])。\n"
+"将控件添加到特定的åœé é¢æ¿ï¼ˆæœ‰å…³é€‰é¡¹ï¼Œè¯·å‚阅[enum DockSlot])。\n"
"å¦‚æžœé‡æ–°æ”¾ç½®äº†åœé é¢æ¿ï¼Œå¹¶ä¸”åªè¦æ’件处于活动状æ€ï¼Œç¼–辑器就会在以åŽçš„会è¯ä¸­ä¿"
"å­˜åœé é¢æ¿çš„ä½ç½®ã€‚\n"
"åœç”¨æ’ä»¶åŽï¼Œè¯·ç¡®ä¿ä½¿ç”¨[method remove_control_from_docks]删除自定义控件,并使"
@@ -25047,14 +25177,17 @@ msgstr ""
"侧。"
#: doc/classes/EditorPlugin.xml:305
+#, fuzzy
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
"获å–ç”¨äºŽåˆ¶ä½œè„šæœ¬çš„ç¼–è¾‘å™¨å¯¹è¯æ¡†ã€‚\n"
"[b]注æ„:[/b]用户å¯ä»¥åœ¨ä½¿ç”¨å‰å¯¹å…¶è¿›è¡Œé…置。"
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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 "
@@ -25063,7 +25196,7 @@ msgstr ""
"èŽ·å–æ’件编辑器的状æ€ã€‚这用于ä¿å­˜åœºæ™¯æ—¶ï¼ˆä»Žè€Œå†æ¬¡æ‰“开时,它的状æ€è¢«ä¿æŒï¼‰å’Œåˆ‡"
"æ¢æ ‡ç­¾ï¼ˆä»Žè€Œçжæ€èƒ½å¤Ÿå½“拉片返回æ¢å¤ï¼‰æ—¶ä½¿ç”¨ã€‚"
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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."
@@ -25071,7 +25204,7 @@ msgstr ""
"èŽ·å–æ’¤æ¶ˆ/é‡åšå¯¹è±¡ã€‚编辑器中的大多数æ“作都是å¯ä»¥æ’¤æ¶ˆçš„,因此请使用此对象æ¥ç¡®ä¿"
"åœ¨éœ€è¦æ—¶æ‰§è¡Œæ­¤æ“作。"
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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 "
@@ -25080,7 +25213,7 @@ msgstr ""
"èŽ·å–æ’ä»¶çš„GUI布局。当调用[method queue_save_layout]更改了编辑器布局(例如,更"
"改åœé ç‚¹çš„ä½ç½®ï¼‰æ—¶æˆ–ä¿å­˜é¡¹ç›®çš„编辑器布局。"
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -25094,7 +25227,7 @@ msgstr ""
"make_visible]的函数。如果您已ç»å£°æ˜Žäº†æ–¹æ³•[method forward_canvas_gui_input]å’Œ"
"[method forward_spatial_gui_input],这些方法也将被调用。"
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
@@ -25103,16 +25236,16 @@ msgstr ""
"如果这是一个主å±å¹•编辑æ’件,返回[code]true[/code](它与[b]2D[/b]ã€[b]3D[/b]ã€"
"[b]Script[/b]和[b]AssetLib[/b]一起放在工作区选择器中)。"
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
-msgstr ""
+msgstr "最å°åŒ–åº•éƒ¨é¢æ¿ã€‚"
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
#, fuzzy
msgid "Makes a specific item in the bottom panel visible."
msgstr "将特定资æºç±»åž‹ä¿å­˜åˆ°æ–‡ä»¶ã€‚"
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -25122,67 +25255,67 @@ msgstr ""
"å½“ç¼–è¾‘å™¨è¢«è¦æ±‚å˜ä¸ºå¯è§æ—¶ï¼Œè¯¥å‡½æ•°å°†è¢«è°ƒç”¨ã€‚它用于编辑特定对象类型的æ’件。\n"
"è®°ä½ï¼Œä½ å¿…é¡»æ‰‹åŠ¨ç®¡ç†æ‰€æœ‰ç¼–辑器控件的å¯è§æ€§ã€‚"
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr "排队ä¿å­˜é¡¹ç›®çš„编辑器布局。"
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr "从列表中删除自动加载[code]name[/code]。"
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr "ä»Žåº•éƒ¨é¢æ¿ä¸Šåˆ é™¤æŽ§ä»¶ã€‚您必须手动[method Node.queue_free]释放控件。"
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr "从指定的容器中删除控件。您必须手动[method Node.queue_free]释放控件。"
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr "ä»Žæ‰©å±•é¢æ¿ä¸­åˆ é™¤æŽ§ä»¶ã€‚您必须手动[method Node.queue_free]释放控件。"
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr "删除由[method add_custom_type]添加的自定义类型。"
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
#, fuzzy
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr "删除由[method add_custom_type]添加的自定义类型。"
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
#, fuzzy
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr "删除由[method add_custom_type]添加的自定义类型。"
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
#, fuzzy
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr "删除由[method add_custom_type]添加的自定义类型。"
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
#, fuzzy
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr "删除由[method add_custom_type]添加的自定义类型。"
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
#, fuzzy
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr "删除由[method add_custom_type]添加的自定义类型。"
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr "从[b]项目 > 工具[/b]中删除èœå•[code]name[/code]。"
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
@@ -25190,7 +25323,7 @@ msgstr ""
"这个方法在编辑器ä¿å­˜é¡¹ç›®åŽæˆ–å…³é—­é¡¹ç›®æ—¶è¢«è°ƒç”¨ï¼Œå®ƒè¦æ±‚æ’ä»¶ä¿å­˜ç¼–辑的外部场景/资"
"æºã€‚"
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -25198,7 +25331,7 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
@@ -25208,15 +25341,15 @@ msgstr ""
"使用这个方法。如果你的æ’件想è¦åœ¨åœºæ™¯ä¸­ä½¿ç”¨å…‰çº¿å¹¿æ’­ï¼Œé‚£ä¹ˆè¿™ä¸ªæ–¹æ³•å¯èƒ½ç‰¹åˆ«æœ‰"
"用。"
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr "æ¢å¤[method get_state]ä¿å­˜çš„状æ€ã€‚"
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr "æ¢å¤[method get_window_layout]ä¿å­˜çš„æ’ä»¶GUI布局。"
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -25225,7 +25358,7 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
@@ -25233,7 +25366,7 @@ msgstr ""
"当用户改å˜å·¥ä½œç©ºé—´([b]2D[/b], [b]3D[/b], [b]Script[/b], [b]AssetLib[/b])时触"
"å‘。也适用于由æ’件定义的自定义å±å¹•。"
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
@@ -25242,13 +25375,13 @@ msgstr ""
"在编辑器中更改场景时触å‘ã€‚è¯¥å‚æ•°å°†è¿”回刚刚å˜ä¸ºæ´»åŠ¨çŠ¶æ€çš„场景的根节点。如果此"
"åœºæ™¯æ˜¯æ–°åœºæ™¯ä¸”ä¸ºç©ºï¼Œåˆ™å‚æ•°å°†ä¸º[code] null [/code]。"
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr "当用户关闭场景时触å‘ã€‚å‚æ•°æ˜¯å…³é—­åœºæ™¯çš„æ–‡ä»¶è·¯å¾„。"
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr "表示[enum DockSlot]枚举的大å°ã€‚"
@@ -25598,7 +25731,7 @@ msgstr "从第三方的3D文件中导入场景。"
#: modules/fbx/doc_classes/EditorSceneImporterFBX.xml:4
msgid "FBX 3D asset importer."
-msgstr ""
+msgstr "FBX 3D资产导入器。"
#: modules/fbx/doc_classes/EditorSceneImporterFBX.xml:7
#, fuzzy
@@ -25708,12 +25841,11 @@ msgstr ""
"[/codeblock]"
#: doc/classes/EditorScenePostImport.xml:29
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/workflow/assets/"
"importing_scenes.html#custom-script"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/workflow/assets/"
+"https://docs.godotengine.org/en/3.4/getting_started/workflow/assets/"
"importing_scenes.html#custom-script"
#: doc/classes/EditorScenePostImport.xml:35
@@ -25930,8 +26062,8 @@ msgid ""
msgstr ""
"å°†è‡ªå®šä¹‰å±žæ€§ä¿¡æ¯æ·»åŠ åˆ°å±žæ€§ã€‚è¯¥è¯å…¸å¿…须包å«ï¼š\n"
"-[code]åç§°[/code]:[字符串](属性å称)\n"
-"-[code]类型[/code]:[int](请å‚è§[enum Variant.Type])\n"
-"-(å¯é€‰ï¼‰[code]æç¤º[/code]:[int](请å‚è§[enum PropertyHint])和[code] "
+"-[code]类型[/code]:[int](请å‚阅[enum Variant.Type])\n"
+"-(å¯é€‰ï¼‰[code]æç¤º[/code]:[int](请å‚阅[enum PropertyHint])和[code] "
"hint_string [/code]:[String]\n"
"[b]示例:[/b]\n"
"[codeblock]\n"
@@ -26050,7 +26182,7 @@ msgid ""
msgstr ""
"设置项目特定的元数æ®ï¼Œå¹¶æŒ‡å®š [code]section[/code]ã€[code]key[/code] å’Œ "
"[code]data[/code]。这个元数æ®è¢«ä¿å­˜åœ¨é¡¹ç›®æ–‡ä»¶å¤¹ä¹‹å¤–,因此ä¸ä¼šè¢«æ£€æŸ¥åˆ°ç‰ˆæœ¬æŽ§åˆ¶"
-"中。å‚è§ [method get_project_metadata]。"
+"中。å‚阅 [method get_project_metadata]。"
#: doc/classes/EditorSettings.xml:146
msgid ""
@@ -26092,7 +26224,7 @@ msgid ""
"(handles) for 3D Spatial objects. See [EditorSpatialGizmoPlugin] for more "
"information."
msgstr ""
-"自定义å°å·¥å…·ï¼Œç”¨äºŽä¸ºNode3D对象æä¾›è‡ªå®šä¹‰å¯è§†åŒ–å’Œç¼–è¾‘ï¼ˆå¥æŸ„)。更多信æ¯è¯·å‚è§"
+"自定义å°å·¥å…·ï¼Œç”¨äºŽä¸ºNode3D对象æä¾›è‡ªå®šä¹‰å¯è§†åŒ–å’Œç¼–è¾‘ï¼ˆå¥æŸ„)。更多信æ¯è¯·å‚阅"
"[EditorNode3DGizmoPlugin]。"
#: doc/classes/EditorSpatialGizmo.xml:16
@@ -26140,8 +26272,8 @@ msgid ""
msgstr ""
"以指定的 [code]billboard[/code] 状æ€ã€[code]skeleton[/code] å’Œ "
"[code]materia[/code] 添加网格到å°å·¥å…·ã€‚如果 [code]billboard[/code] 为 "
-"[code]true[/code],则网格将旋转为始终é¢å‘æ‘„åƒæœºã€‚在 [method redraw] 时调用此"
-"函数。"
+"[code]true[/code],则网格将旋转为始终é¢å‘相机。在 [method redraw] 时调用此函"
+"数。"
#: doc/classes/EditorSpatialGizmo.xml:63
msgid ""
@@ -26254,16 +26386,15 @@ msgid ""
msgstr ""
"EditorNode3DGizmoPluginå…è®¸æ‚¨å®šä¹‰ä¸€ç§æ–°çš„辅助工具类型。这样åšçš„ä¸»è¦æ–¹æ³•有两"
"ç§ï¼šæ‰©å±•[EditorNode3DGizmoPlugin]以获得更简å•çš„Gizmos,或创建新的"
-"[EditorNode3DGizmo]类型。有关更多信æ¯ï¼Œè¯·å‚è§æ–‡æ¡£ä¸­çš„æ•™ç¨‹ã€‚"
+"[EditorNode3DGizmo]类型。有关更多信æ¯ï¼Œè¯·å‚阅文档中的教程。"
#: doc/classes/EditorSpatialGizmoPlugin.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/spatial_gizmos."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/plugins/editor/"
-"spatial_gizmos.html"
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/spatial_gizmos."
+"html"
#: doc/classes/EditorSpatialGizmoPlugin.xml:18
msgid ""
@@ -26294,7 +26425,7 @@ msgid ""
"also [method has_gizmo]."
msgstr ""
"é‡å†™æ­¤æ–¹æ³•å¯ä¸ºæ‚¨é€‰æ‹©çš„空间节点返回自定义[EditorNode3DGizmo],为其余节点返回"
-"[code] null [/code]。å¦è¯·å‚è§[method has_gizmo]。"
+"[code] null [/code]。å¦è¯·å‚阅[method has_gizmo]。"
#: doc/classes/EditorSpatialGizmoPlugin.xml:50
#, fuzzy
@@ -26660,7 +26791,7 @@ msgid ""
"get_idle_frames]."
msgstr ""
"返回绘制的总帧数。如果通过命令行使用[code]--disable-render-loop[/code]ç¦ç”¨æ¸²"
-"染循环,则返回[code]0[/code]。å‚è§[method get_idle_frames]。"
+"染循环,则返回[code]0[/code]。å‚阅[method get_idle_frames]。"
#: doc/classes/Engine.xml:46
msgid "Returns the frames per second of the running game."
@@ -26694,7 +26825,7 @@ msgstr "返回Godot许å¯è¯æ–‡æœ¬ã€‚"
#: doc/classes/Engine.xml:76
msgid "Returns the main loop object (see [MainLoop] and [SceneTree])."
-msgstr "返回主循环对象(请å‚è§[MainLoop]å’Œ[SceneTree])。"
+msgstr "返回主循环对象(请å‚阅[MainLoop]å’Œ[SceneTree])。"
#: doc/classes/Engine.xml:82
msgid ""
@@ -26915,28 +27046,24 @@ msgstr ""
"- 调整数"
#: doc/classes/Environment.xml:15 doc/classes/WorldEnvironment.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/3d/"
"environment_and_post_processing.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/"
+"https://docs.godotengine.org/en/3.4/tutorials/3d/"
"environment_and_post_processing.html"
#: doc/classes/Environment.xml:16
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/3d/high_dynamic_range.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/high_dynamic_range."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/3d/high_dynamic_range.html"
#: doc/classes/Environment.xml:17 doc/classes/Material.xml:10
#: doc/classes/Mesh.xml:10 doc/classes/MeshInstance.xml:10
#: doc/classes/WorldEnvironment.xml:13
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/123"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/123"
#: doc/classes/Environment.xml:26
msgid ""
@@ -27055,7 +27182,7 @@ msgstr "自动æ›å…‰æ•ˆæžœçš„速度。影å“相机执行自动æ›å…‰æ‰€éœ€çš„æ—¶
#: doc/classes/Environment.xml:79
msgid "The ID of the camera feed to show in the background."
-msgstr "åœ¨èƒŒæ™¯ä¸­æ˜¾ç¤ºçš„æ‘„åƒæœºä¿¡å·çš„ID。"
+msgstr "在背景中显示的相机信å·çš„ID。"
#: doc/classes/Environment.xml:82
msgid ""
@@ -27137,7 +27264,7 @@ msgstr "效果中的声音数é‡ã€‚"
#: doc/classes/Environment.xml:127
msgid ""
"Distance from the camera where the near blur effect affects the rendering."
-msgstr "è¿‘ä¼¼æ¨¡ç³Šæ•ˆæžœå½±å“æ¸²æŸ“çš„åœ°æ–¹ä¸Žæ‘„åƒæœºçš„è·ç¦»ã€‚"
+msgstr "è¿‘ä¼¼æ¨¡ç³Šæ•ˆæžœå½±å“æ¸²æŸ“的地方与相机的è·ç¦»ã€‚"
#: doc/classes/Environment.xml:130
#, fuzzy
@@ -27174,7 +27301,7 @@ msgid ""
"If [code]true[/code], the depth fog effect is enabled. When enabled, fog "
"will appear in the distance (relative to the camera)."
msgstr ""
-"如果为[code]true[/code],则å¯ç”¨æ·±åº¦é›¾æ•ˆæžœã€‚å¯ç”¨åŽï¼Œé›¾å°†å‡ºçŽ°åœ¨è¿œå¤„ï¼ˆç›¸å¯¹äºŽæ‘„åƒ"
+"如果为[code]true[/code],则å¯ç”¨æ·±åº¦é›¾æ•ˆæžœã€‚å¯ç”¨åŽï¼Œé›¾å°†å‡ºçŽ°åœ¨è¿œå¤„ï¼ˆç›¸å¯¹äºŽç›¸"
"机)。"
#: doc/classes/Environment.xml:151
@@ -27208,9 +27335,9 @@ msgid ""
"camera. This can be used to simulate \"deep water\" effects with a lower "
"performance cost compared to a dedicated shader."
msgstr ""
-"如果为[code]true[/code],则å¯ç”¨é«˜åº¦é›¾åŒ–效果。å¯ç”¨åŽï¼Œæ— è®ºä¸Žæ‘„åƒæœºçš„è·ç¦»æœ‰å¤š"
-"远,雾气都会出现在规定的高度范围内。这å¯ä»¥ç”¨æ¥æ¨¡æ‹Ÿ \"深水 \"效果,与专用ç€è‰²"
-"å™¨ç›¸æ¯”ï¼Œæ€§èƒ½æˆæœ¬æ›´ä½Žã€‚"
+"如果为[code]true[/code],则å¯ç”¨é«˜åº¦é›¾åŒ–效果。å¯ç”¨åŽï¼Œæ— è®ºä¸Žç›¸æœºçš„è·ç¦»æœ‰å¤šè¿œï¼Œ"
+"雾气都会出现在规定的高度范围内。这å¯ä»¥ç”¨æ¥æ¨¡æ‹Ÿ \"深水 \"效果,与专用ç€è‰²å™¨ç›¸"
+"æ¯”ï¼Œæ€§èƒ½æˆæœ¬æ›´ä½Žã€‚"
#: doc/classes/Environment.xml:163
msgid ""
@@ -27306,11 +27433,19 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr "å‘光强度。使用GLES2渲染器时,应将其增加到1.5以弥补HDR渲染的ä¸è¶³ã€‚"
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
@@ -27318,44 +27453,44 @@ msgstr ""
"如果为[code]true[/code],则å¯ç”¨ç¬¬1级glow。这是最 \"局部 \"çš„çº§åˆ«ï¼ˆæœ€ä¸æ¨¡"
"糊)。"
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr "如果为[code]true[/code],则å¯ç”¨ç¬¬2级glow。"
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr "如果[code]true[/code],则å¯ç”¨ç¬¬3几glow。"
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr "如果[code]true[/code],则å¯ç”¨ç¬¬å››çº§glow。"
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr "如果[code]true[/code],则å¯ç”¨ç¬¬äº”级glow。"
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr "如果[code]true[/code],则å¯ç”¨ç¬¬å…­çº§glow。"
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
"如果[code]true[/code],则å¯ç”¨ç¬¬ä¸ƒçº§glow。这是最 \"全局 \"的级别(最模糊)。"
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr "辉光强度。当使用GLES2渲染器时,应将其æé«˜åˆ°1.3,以弥补HDR渲染的ä¸è¶³ã€‚"
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr "å±å¹•空间å射的深度公差。"
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -27365,32 +27500,32 @@ msgstr ""
"如果[code]true[/code],å¯ç”¨å±å¹•空间å射。å±å¹•空间å射比[GIProbe]或"
"[ReflectionProbe]çš„å射更精确,但速度较慢,而且ä¸èƒ½åå°„è¢«å…¶ä»–ç‰©ä½“é®æŒ¡çš„表é¢ã€‚"
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr "å±å¹•空间å射的淡入è·ç¦»ã€‚å½±å“从åå°„ææ–™åˆ°å±å¹•空间å射的区域。"
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr "å±å¹•空间å射的淡出è·ç¦»ã€‚å½±å“从å±å¹•空间å射到 \"全局 \"å射的区域。"
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr "å±å¹•空间å射的最大步数。数值越高,速度越慢。"
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
#, fuzzy
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr "如果[code]true[/code],查询将考虑[Area2D]。"
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
@@ -27399,7 +27534,7 @@ msgstr ""
"定义了AO纹ç†çš„æè´¨çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡å¼ºåº¦ã€‚高于[code]0[/code]的值将使SSAO效果"
"在AO纹ç†å˜æš—的区域å¯è§ã€‚"
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
@@ -27407,22 +27542,22 @@ msgstr ""
"å±å¹•ç©ºé—´çš„çŽ¯å¢ƒé®æŒ¡åå·®ã€‚è¯¥å€¼åº”ä¿æŒåœ¨è¶³å¤Ÿé«˜çš„æ°´å¹³ï¼Œä»¥é˜²æ­¢ \"平滑 \"曲线å—到环"
"å¢ƒé®æŒ¡çš„å½±å“。"
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
-msgstr "å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡è´¨é‡ã€‚å¯èƒ½çš„值请å‚è§[enum SSAOBlur]。"
+msgstr "å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡è´¨é‡ã€‚å¯èƒ½çš„值请å‚阅[enum SSAOBlur]。"
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
#, fuzzy
msgid "The screen-space ambient occlusion color."
msgstr "å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡è¾¹ç¼˜é”度。"
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr "å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡è¾¹ç¼˜é”度。"
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -27437,20 +27572,20 @@ msgstr ""
"åœ¨å¤§åž‹é™æ€ç‰©ä½“ä¸Šï¼Œçƒ˜ç„™çš„ç…§æ˜Žæˆ–çŽ¯å¢ƒé®æŒ¡çº¹ç†ä¼šæ›´å¥½åœ°æ˜¾ç¤ºçŽ¯å¢ƒé®æŒ¡ã€‚这是一个昂贵"
"的效果,当é‡åˆ°æ€§èƒ½é—®é¢˜æ—¶ï¼Œåº”该首先ç¦ç”¨ã€‚"
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
-msgstr "主è¦çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡å¼ºåº¦ã€‚å‚è§[member ssao_radius]。"
+msgstr "主è¦çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡å¼ºåº¦ã€‚å‚阅[member ssao_radius]。"
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
#, fuzzy
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
-msgstr "主è¦çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡å¼ºåº¦ã€‚å‚è§[member ssao_radius]。"
+msgstr "主è¦çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡å¼ºåº¦ã€‚å‚阅[member ssao_radius]。"
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -27461,17 +27596,17 @@ msgstr ""
"说在直射光下无法看到其效果。高于[code]0[/code]的数值将使SSAO效果在直射光下å¯"
"è§ã€‚"
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr "主å±ç©ºé—´çŽ¯å¢ƒé®æŒ¡åŠå¾„。"
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -27479,11 +27614,11 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr "用于色调映射的默认æ›å…‰ã€‚"
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
@@ -27492,7 +27627,7 @@ msgstr ""
"è¦ä½¿ç”¨çš„色调映射模å¼ã€‚色调映射是“转æ¢â€ HDR值以适åˆåœ¨LDR显示器上呈现的过程。 "
"(Godotå°šä¸æ”¯æŒåœ¨HDR显示器上进行渲染。)"
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
@@ -27500,7 +27635,7 @@ msgstr ""
"调色映射的白色å‚è€ƒå€¼ã€‚åªæœ‰å½“[member tonemap_mode]没有设置为[constant "
"TONE_MAPPER_LINEAR]æ—¶æ‰æœ‰æ•ˆã€‚"
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -27508,10 +27643,10 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
"在å±å¹•上ä¿ç•™èƒŒæ™¯ä¸­ç»˜åˆ¶çš„æ¯ä¸ªåƒç´ ã€‚这是最快的背景模å¼ï¼Œä½†å®ƒåªèƒ½åœ¨å®Œå…¨å®¤å†…场景"
-"(没有å¯è§çš„天空或天空å射)中安全使用。如果在背景å¯è§çš„场景中å¯ç”¨ï¼Œå½“移动摄"
-"åƒæœºæ—¶ï¼Œ\"鬼影踪迹 \"伪影将å¯è§ã€‚"
+"(没有å¯è§çš„天空或天空å射)中安全使用。如果在背景å¯è§çš„场景中å¯ç”¨ï¼Œå½“移动相"
+"机时,\"鬼影踪迹 \"伪影将å¯è§ã€‚"
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
@@ -27519,15 +27654,15 @@ msgstr ""
"使用[member ProjectSettings.rendering/environment/default_clear_color]中定义"
"的底色清除背景。"
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr "使用自定义的底色清除背景。"
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr "在背景中显示用户自定义的天空。"
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -27535,36 +27670,36 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr "在背景中显示[CanvasLayer]。"
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr "在背景中显示相机信å·ã€‚"
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr "表示[enum BGMode]枚举的大å°ã€‚"
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr "添加glowæ··åˆæ¨¡å¼ã€‚主è¦ç”¨äºŽé¢—ç²’ã€è¾‰å…‰ï¼ˆå…‰æ™•)ã€é•œå¤´çœ©å…‰ã€äº®æºã€‚"
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr "å±å¹•å…‰æ™•æ··åˆæ¨¡å¼ã€‚增加亮度,ç»å¸¸ä¸Žå…‰æ™•一起使用。"
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr "æŸ”å’Œçš„å…‰æ™•æ··åˆæ¨¡å¼ã€‚修改对比度,æ›å…‰é˜´å½±å’Œé«˜å…‰ï¼ˆé«˜è´¨é‡å…‰æ™•)。"
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
@@ -27573,13 +27708,13 @@ msgstr ""
"替æ¢å…‰æ™•æ··åˆæ¨¡å¼ã€‚用glowå€¼æ›¿æ¢æ‰€æœ‰åƒç´ çš„颜色。这å¯ä»¥é€šè¿‡è°ƒæ•´glow傿•°æ¥æ¨¡æ‹Ÿå…¨"
"屿¨¡ç³Šæ•ˆæžœï¼Œä½¿å…¶ä¸ŽåŽŸå§‹å›¾åƒçš„亮度相匹é…。"
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr "线性音频映射器æ“作者。读å–线性数æ®å¹¶ä¸åŠ ä¿®æ”¹åœ°ä¼ é€’ã€‚"
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
@@ -27587,18 +27722,18 @@ msgstr ""
"Reinhardt tonemapperè¿ç®—器。通过这个公å¼å¯¹æ¸²æŸ“åƒç´ çš„颜色进行å˜åŒ–。"
"[code]color = color / (1 + color)[/code]."
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr "胶片色调映射器è¿ç®—符。"
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
#, fuzzy
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr "ACES 映射è¿ç®—符。"
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -27608,46 +27743,46 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
-msgstr ""
+msgstr "ä½Žè´¨é‡æ™¯æ·±æ¨¡ç³Šï¼ˆæœ€å¿«ï¼‰ã€‚"
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
-msgstr ""
+msgstr "中等景深的模糊质é‡ã€‚"
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
-msgstr ""
+msgstr "é«˜è´¨é‡æ™¯æ·±æ¨¡ç³Šï¼ˆæœ€æ…¢ï¼‰ã€‚"
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr "å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœä¸æ¨¡ç³Šï¼ˆæœ€å¿«ï¼‰ã€‚"
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr "1×1模糊的å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœã€‚"
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr "2×2模糊的å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœã€‚"
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
#, fuzzy
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr "å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœä¸æ¨¡ç³Šï¼ˆæœ€å¿«ï¼‰ã€‚"
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
#, fuzzy
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr "å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœä¸æ¨¡ç³Šï¼ˆæœ€å¿«ï¼‰ã€‚"
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
#, fuzzy
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr "1×1模糊的å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœã€‚"
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
#, fuzzy
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr "å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœä¸æ¨¡ç³Šï¼ˆæœ€å¿«ï¼‰ã€‚"
@@ -27736,7 +27871,7 @@ msgstr ""
#: doc/classes/ExternalTexture.xml:4
msgid "Enable OpenGL ES external texture extension."
-msgstr ""
+msgstr "å¯ç”¨OpenGL ESå¤–éƒ¨çº¹ç†æ‰©å±•。"
#: doc/classes/ExternalTexture.xml:7
msgid ""
@@ -27752,9 +27887,8 @@ msgid "Returns the external texture name."
msgstr "返回图å—的纹ç†ã€‚"
#: doc/classes/ExternalTexture.xml:23
-#, fuzzy
msgid "External texture size."
-msgstr "返回纹ç†å°ºå¯¸ã€‚"
+msgstr "外部纹ç†å¤§å°ã€‚"
#: doc/classes/File.xml:4
msgid "Type to handle file reading and writing operations."
@@ -27869,7 +28003,7 @@ msgid ""
"Returns the next 16 bits from the file as an integer. See [method store_16] "
"for details on what values can be stored and retrieved this way."
msgstr ""
-"以整数形å¼è¿”回文件中的åŽ16ä½ã€‚请å‚è§[method store_16]ï¼Œä»¥èŽ·å–æœ‰å…³å¯ä»¥é€šè¿‡è¿™ç§"
+"以整数形å¼è¿”回文件中的åŽ16ä½ã€‚请å‚阅[method store_16]ï¼Œä»¥èŽ·å–æœ‰å…³å¯ä»¥é€šè¿‡è¿™ç§"
"æ–¹å¼å­˜å‚¨å’Œæ£€ç´¢å“ªäº›å€¼çš„详细信æ¯ã€‚"
#: doc/classes/File.xml:73
@@ -27893,7 +28027,7 @@ msgid ""
"Returns the next 8 bits from the file as an integer. See [method store_8] "
"for details on what values can be stored and retrieved this way."
msgstr ""
-"以整数形å¼è¿”回文件的下一个8ä½ã€‚å‚è§[method store_8],详细了解哪些值å¯ä»¥é€šè¿‡è¿™"
+"以整数形å¼è¿”回文件的下一个8ä½ã€‚å‚阅[method store_8],详细了解哪些值å¯ä»¥é€šè¿‡è¿™"
"ç§æ–¹å¼å­˜å‚¨å’Œæ£€ç´¢ã€‚"
#: doc/classes/File.xml:91
@@ -28321,20 +28455,27 @@ msgid "Clear currently selected items in the dialog."
msgstr "æ¸…é™¤å¯¹è¯æ¡†ä¸­å½“å‰é€‰æ‹©çš„项目。"
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
-msgstr "返回所选文件的LineEdit。"
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
-msgstr "è¿”å›žå¯¹è¯æ¡†çš„垂直框容器,å¯ä»¥åœ¨å…¶ä¸­æ·»åŠ è‡ªå®šä¹‰æŽ§ä»¶ã€‚"
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr "使当å‰å¯¹è¯æ¡†å†…容列表无效并更新。"
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -28343,19 +28484,19 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr "æ–‡ä»¶å¯¹è¯æ¡†çš„当å‰å·¥ä½œç›®å½•。"
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr "æ–‡ä»¶å¯¹è¯æ¡†çš„当å‰é€‰å®šçš„æ–‡ä»¶ã€‚"
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr "当å‰é€‰æ‹©çš„æ–‡ä»¶å¯¹è¯æ¡†çš„æ–‡ä»¶è·¯å¾„。"
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
#, fuzzy
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
@@ -28366,14 +28507,14 @@ msgstr ""
"[code]set_filters(PackedStringArray([\"*.png ; PNG Images\", \"*.gd ; "
"GDScript Files\"])[/code]。"
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
#, fuzzy
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
-msgstr "å¯¹è¯æ¡†çš„æ‰“开或ä¿å­˜æ¨¡å¼ï¼Œå½±å“选择行为。å‚è§[enum FileMode]。"
+msgstr "å¯¹è¯æ¡†çš„æ‰“开或ä¿å­˜æ¨¡å¼ï¼Œå½±å“选择行为。å‚阅[enum FileMode]。"
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
#, fuzzy
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
@@ -28384,93 +28525,93 @@ msgstr ""
"将模å¼è®¾ç½®ä¸º[constant FILE_MODE_OPEN_FILE]将改å˜çª—壿 ‡é¢˜ä¸º \"打开一个文件"
"\")。"
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr "如果[code]true[/code]ï¼Œå¯¹è¯æ¡†å°†æ˜¾ç¤ºå‡ºéšè—文件。"
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr "当用户选择一个目录时触å‘的。"
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr "当用户通过åŒå‡»æ–‡ä»¶æˆ–按[b]OK[/b]按钮选择一个文件时触å‘。"
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr "当用户选择多个文件时触å‘。"
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr "è¯¥å¯¹è¯æ¡†åªå…许选择一个文件。"
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr "è¯¥å¯¹è¯æ¡†å…许选择多个文件。"
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr "è¯¥å¯¹è¯æ¡†åªå…许选择一个目录,ä¸å…许选择任何文件。"
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr "è¯¥å¯¹è¯æ¡†å…许选择一个文件或目录。"
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr "å½“æ–‡ä»¶å­˜åœ¨æ—¶ï¼Œå¯¹è¯æ¡†ä¼šå‘出警告。"
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr "è¯¥å¯¹è¯æ¡†åªå…许访问[资æº]路径下的文件([code]res://[/code])。"
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr "è¯¥å¯¹è¯æ¡†åªå…许访问用户数æ®è·¯å¾„([code]user://[/code])下的文件。"
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr "è¯¥å¯¹è¯æ¡†å…许访问文件系统上的文件。"
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr "文件的自定义图标。"
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr "应用于文件图标的颜色调制。"
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr "ç¦ç”¨æ–‡ä»¶çš„色调(当[FileDialog]在打开文件夹模å¼ä¸‹ä½¿ç”¨æ—¶ï¼‰ã€‚"
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr "文件夹的自定义图标。"
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr "应用于文件夹图标的颜色调制。"
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr "父文件夹箭头的自定义图标。"
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr "釿–°åŠ è½½æŒ‰é’®çš„è‡ªå®šä¹‰å›¾æ ‡ã€‚"
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr "切æ¢éšè—按钮的自定义图标。"
@@ -28498,11 +28639,11 @@ msgstr ""
#: doc/classes/float.xml:12
msgid "https://en.wikipedia.org/wiki/Double-precision_floating-point_format"
-msgstr ""
+msgstr "https://en.wikipedia.org/wiki/Double-precision_floating-point_format"
#: doc/classes/float.xml:13
msgid "https://en.wikipedia.org/wiki/Single-precision_floating-point_format"
-msgstr ""
+msgstr "https://en.wikipedia.org/wiki/Single-precision_floating-point_format"
#: doc/classes/float.xml:20
msgid ""
@@ -28569,7 +28710,7 @@ msgstr ""
"在给定ä½ç½®ä½¿ç”¨å­—体将[code]string[/code]绘制到画布项目中,并使用[code] "
"modulate [/code]颜色,并å¯ä»¥é€‰æ‹©è£å‰ªå®½åº¦ã€‚ [code]position[/code]指定基线,而"
"䏿˜¯é¡¶éƒ¨ã€‚è¦ä»Žé¡¶éƒ¨ç»˜åˆ¶ï¼Œå¿…须在[Y]轴上添加[i] ascent [/i]。\n"
-"å¦è¯·å‚è§[method CanvasItem.draw_string]。"
+"å¦è¯·å‚阅[method CanvasItem.draw_string]。"
#: doc/classes/Font.xml:37
msgid ""
@@ -28705,22 +28846,20 @@ msgstr ""
"å¹³å°å’Œæž¶æž„进行编译。"
#: modules/gdnative/doc_classes/GDNativeLibrary.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/plugins/gdnative/gdnative-c-"
"example.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/plugins/gdnative/"
-"gdnative-c-example.html"
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/gdnative/gdnative-c-"
+"example.html"
#: modules/gdnative/doc_classes/GDNativeLibrary.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/plugins/gdnative/gdnative-cpp-"
"example.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/plugins/gdnative/"
-"gdnative-cpp-example.html"
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/gdnative/gdnative-cpp-"
+"example.html"
#: modules/gdnative/doc_classes/GDNativeLibrary.xml:17
msgid ""
@@ -28811,13 +28950,12 @@ msgstr ""
"Object.set_script]会扩展该对象。"
#: modules/gdscript/doc_classes/GDScript.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/index."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/scripting/gdscript/"
-"index.html"
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/index."
+"html"
#: modules/gdscript/doc_classes/GDScript.xml:17
msgid "Returns byte code for the script source code."
@@ -29875,10 +30013,9 @@ msgstr ""
"基于几何图形的视觉实例的基础节点。分享一些共åŒçš„æœºåˆ¶ï¼Œå¦‚å¯è§æ€§å’Œè‡ªå®šä¹‰ææ–™ã€‚"
#: doc/classes/GeometryInstance.xml:16
-#, fuzzy
msgid ""
"Returns the [enum GeometryInstance.Flags] that have been set for this object."
-msgstr "返回已ç»ä¸ºç‰¹å®šå®žä¾‹è®¾ç½®çš„自定义数æ®ã€‚"
+msgstr "返回为此对象设置的[enum GeometryInstance.Flags] 。"
#: doc/classes/GeometryInstance.xml:23
msgid ""
@@ -29889,12 +30026,12 @@ msgstr ""
"设置为零。"
#: doc/classes/GeometryInstance.xml:31
-#, fuzzy
msgid ""
"Sets the [enum GeometryInstance.Flags] specified. See [enum GeometryInstance."
"Flags] for options."
msgstr ""
-"设置给定的[enum InstanceFlags]标志。更多细节请å‚è§[enum InstanceFlags]。"
+"设置指定的[enum GeometryInstance.Flags]。å‚阅[enum GeometryInstance.Flags]选"
+"项。"
#: doc/classes/GeometryInstance.xml:37
msgid ""
@@ -29904,11 +30041,10 @@ msgstr ""
"选择的阴影投射标志。转到 [enum ShadowCastingSetting] æ¥æŸ¥çœ‹è¯¥å±žæ€§å¯èƒ½çš„值。"
#: doc/classes/GeometryInstance.xml:40
-#, fuzzy
msgid ""
"The extra distance added to the GeometryInstance's bounding box ([AABB]) to "
"increase its cull box."
-msgstr "添加到GeometryInstance3D的包围盒([AABB])的é¢å¤–è·ç¦»ï¼Œä»¥å¢žåŠ å…¶å‰”é™¤ç›’ã€‚"
+msgstr "添加到GeometryInstance的包围盒([AABB])的é¢å¤–è·ç¦»ï¼Œä»¥å¢žåŠ å…¶å‰”é™¤ç›’ã€‚"
#: doc/classes/GeometryInstance.xml:43
msgid ""
@@ -29924,7 +30060,6 @@ msgid ""
msgstr ""
#: doc/classes/GeometryInstance.xml:49
-#, fuzzy
msgid ""
"The GeometryInstance's max LOD distance.\n"
"[b]Note:[/b] This property currently has no effect."
@@ -29933,30 +30068,27 @@ msgstr ""
"[b]注æ„:[/b] è¿™ä¸ªå±žæ€§ç›®å‰æ²¡æœ‰ä»»ä½•作用。"
#: doc/classes/GeometryInstance.xml:53
-#, fuzzy
msgid ""
"The GeometryInstance's max LOD margin.\n"
"[b]Note:[/b] This property currently has no effect."
msgstr ""
-"GeometryInstance3D的最大LODè·ç¦»ã€‚\n"
+"GeometryInstance3D的最大LOD è¾¹è·ã€‚\n"
"[b]注æ„:[/b] è¿™ä¸ªå±žæ€§ç›®å‰æ²¡æœ‰ä»»ä½•作用。"
#: doc/classes/GeometryInstance.xml:57
-#, fuzzy
msgid ""
"The GeometryInstance's min LOD distance.\n"
"[b]Note:[/b] This property currently has no effect."
msgstr ""
-"GeometryInstance3D的最大LODè·ç¦»ã€‚\n"
+"GeometryInstance3D的最å°LODè·ç¦»ã€‚\n"
"[b]注æ„:[/b] è¿™ä¸ªå±žæ€§ç›®å‰æ²¡æœ‰ä»»ä½•作用。"
#: doc/classes/GeometryInstance.xml:61
-#, fuzzy
msgid ""
"The GeometryInstance's min LOD margin.\n"
"[b]Note:[/b] This property currently has no effect."
msgstr ""
-"GeometryInstance3D的最å°LOD值。\n"
+"GeometryInstance3D的最å°LOD è¾¹è·ã€‚\n"
"[b]注æ„:[/b] è¿™ä¸ªå±žæ€§ç›®å‰æ²¡æœ‰ä»»ä½•作用。"
#: doc/classes/GeometryInstance.xml:65
@@ -29996,23 +30128,21 @@ msgid "Will not cast any shadows."
msgstr "å°†ä¸ä¼šæŠ•射任何阴影。"
#: doc/classes/GeometryInstance.xml:91
-#, fuzzy
msgid ""
"Will cast shadows from all visible faces in the GeometryInstance.\n"
"Will take culling into account, so faces not being rendered will not be "
"taken into account when shadow casting."
msgstr ""
-"将从GeometryInstance3D的所有å¯è§é¢æŠ•射阴影。\n"
+"将从GeometryInstance中的所有å¯è§é¢æŠ•射阴影。\n"
"将考虑剔除,所以在投射阴影时,没有被渲染的é¢å°†ä¸ä¼šè¢«è€ƒè™‘在内。"
#: doc/classes/GeometryInstance.xml:95
-#, fuzzy
msgid ""
"Will cast shadows from all visible faces in the GeometryInstance.\n"
"Will not take culling into account, so all faces will be taken into account "
"when shadow casting."
msgstr ""
-"将从GeometryInstance3D的所有å¯è§é¢æŠ•射阴影。\n"
+"将从GeometryInstance中的所有å¯è§é¢æŠ•射阴影。\n"
"ä¸ä¼šè€ƒè™‘剔除,所以在投射阴影时,所有的é¢éƒ½ä¼šè¢«è€ƒè™‘在内。"
#: doc/classes/GeometryInstance.xml:99
@@ -30069,9 +30199,8 @@ msgstr ""
"æ¢å–[ProjectSettings]中更好的性能。"
#: doc/classes/GIProbe.xml:13
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/gi_probes.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/3d/gi_probes.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/3d/gi_probes.html"
#: doc/classes/GIProbe.xml:22
#, fuzzy
@@ -30138,23 +30267,22 @@ msgstr ""
"分,æ¯ä¸ªå•元的大å°å°†å¢žåŠ ï¼Œå¹¶å¯¼è‡´ä½Žç»†èŠ‚ç…§æ˜Žã€‚"
#: doc/classes/GIProbe.xml:53
-#, fuzzy
msgid ""
"If [code]true[/code], ignores the sky contribution when calculating lighting."
-msgstr "如果 [code]true[/code],则包å«å…‰æ ‡çš„行会çªå‡ºæ˜¾ç¤ºã€‚"
+msgstr "如果为[code]true[/code],在计算照明时忽略天空的贡献。"
#: doc/classes/GIProbe.xml:56
-#, fuzzy
msgid ""
"Offsets the lookup into the [GIProbe] based on the object's normal "
"direction. Can be used to reduce some self-shadowing artifacts."
-msgstr "法线å移,用于抵消物体法线的阴影查找。å¯ä»¥ç”¨æ¥ä¿®å¤è‡ªé˜´å½±çš„伪影。"
+msgstr ""
+"æ ¹æ®ç‰©ä½“的法线方å‘,对[GIProbe]的查找进行å移。å¯ä»¥ç”¨æ¥å‡å°‘一些自阴影的å‡è±¡ã€‚"
#: doc/classes/GIProbe.xml:59
msgid ""
"How much light propagates through the probe internally. A higher value "
"allows light to spread further."
-msgstr ""
+msgstr "光在探针内部传播的程度。一个较高的值å¯ä»¥ä½¿å…‰ä¼ æ’­å¾—更远。"
#: doc/classes/GIProbe.xml:62
msgid ""
@@ -30490,11 +30618,11 @@ msgstr ""
#, fuzzy
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
"获å–包å«å›¾å½¢å·¦ä¸Šæ–¹çš„缩放和网格快照控制的[HBoxContainer]。\n"
"警告。这个函数的预期用途是å…è®¸ä½ é‡æ–°å®šä½æˆ–添加你自己的自定义控件到容器中。这"
@@ -30606,7 +30734,7 @@ msgstr "触å‘的信å·ã€‚"
#: doc/classes/GraphEdit.xml:170
msgid "The step of each zoom level."
-msgstr ""
+msgstr "æ¯ä¸ªç¼©æ”¾çº§åˆ«çš„æ­¥é•¿ã€‚"
#: doc/classes/GraphEdit.xml:176
msgid "Emitted at the beginning of a GraphNode movement."
@@ -30741,7 +30869,6 @@ msgstr ""
"æ§½ä½å¯ä»¥æœ‰ä¸åŒçš„ã€ä¸å…¼å®¹çš„类型。"
#: doc/classes/GraphNode.xml:7
-#, fuzzy
msgid ""
"A GraphNode is a container. Each GraphNode can have several input and output "
"slots, sometimes referred to as ports, allowing connections between "
@@ -30762,10 +30889,10 @@ msgid ""
msgstr ""
"图形节点GraphNode是一个容器。æ¯ä¸ªå›¾å½¢èŠ‚ç‚¹GraphNodeå¯ä»¥æœ‰å‡ ä¸ªè¾“入和输出槽,有"
"时被称为端å£ï¼Œå…许图形节点GraphNode之间的连接。è¦åœ¨å›¾å½¢èŠ‚ç‚¹GraphNode上添加一"
-"个槽,需è¦å‘它添加任何控件派生的å­èŠ‚ç‚¹ã€‚\n"
-"在为图形节点GraphNode添加至少一个å­èŠ‚ç‚¹åŽï¼Œå°†åœ¨æ£€æŸ¥å™¨ä¸­è‡ªåŠ¨åˆ›å»ºå为 \"æ’æ§½ "
-"\"的新部分。当 \"æ’æ§½\"被展开时,你会看到带有æ¯ä¸ªæ§½çš„索引å·çš„列表。你å¯ä»¥ç‚¹å‡»"
-"它们æ¥è¿›ä¸€æ­¥å±•开。\n"
+"个槽,需è¦å‘它添加任何控件[Control]派生的å­èŠ‚ç‚¹ã€‚\n"
+"在为图形节点GraphNode添加至少一个å­èŠ‚ç‚¹åŽï¼Œå°†åœ¨æ£€æŸ¥å™¨ä¸­è‡ªåŠ¨åˆ›å»ºå为 \"æ’æ§½"
+"Slot \"的新部分。当 \"æ’æ§½\"被展开时,你会看到带有æ¯ä¸ªæ§½ç´¢å¼•å·çš„列表。你å¯ä»¥"
+"点击它们æ¥è¿›ä¸€æ­¥å±•开。\n"
"在检查器中,你å¯ä»¥å¯ç”¨ï¼ˆæ˜¾ç¤ºï¼‰æˆ–ç¦ç”¨ï¼ˆéšè—ï¼‰æ’æ§½ã€‚默认情况下,所有槽都是ç¦ç”¨"
"的,所以你最åˆå¯èƒ½çœ‹ä¸åˆ°å›¾å½¢èŠ‚ç‚¹GraphNode上的任何槽。你å¯ä»¥ç»™æ¯ä¸ªæ’槽指定一个"
"ç±»åž‹ã€‚åªæœ‰ç›¸åŒç±»åž‹çš„æ’æ§½æ‰èƒ½å¤Ÿç›¸äº’连接。你还å¯ä»¥ç»™æ’槽指定颜色。为图形节点"
@@ -30781,9 +30908,8 @@ msgid "Disables input and output slot whose index is [code]idx[/code]."
msgstr "ç¦ç”¨ç´¢å¼•为[code]idx[/code]的输入和输出槽。"
#: doc/classes/GraphNode.xml:31
-#, fuzzy
msgid "Returns the [Color] of the input connection [code]idx[/code]."
-msgstr "返回输入连接[code]idx[/code]的颜色。"
+msgstr "返回输入连接[code]idx[/code]的颜色[Color]。"
#: doc/classes/GraphNode.xml:37
msgid ""
@@ -30799,9 +30925,8 @@ msgid "Returns the type of the input connection [code]idx[/code]."
msgstr "返回输入连接的类型[code]idx[/code]。"
#: doc/classes/GraphNode.xml:58
-#, fuzzy
msgid "Returns the [Color] of the output connection [code]idx[/code]."
-msgstr "返回输出连接[code]idx[/code]的颜色。"
+msgstr "返回输出连接[code]idx[/code]的颜色[Color]。"
#: doc/classes/GraphNode.xml:64
msgid ""
@@ -30817,41 +30942,34 @@ msgid "Returns the type of the output connection [code]idx[/code]."
msgstr "返回输出连接的类型[code]idx[/code]。"
#: doc/classes/GraphNode.xml:85
-#, fuzzy
msgid "Returns the left (input) [Color] of the slot [code]idx[/code]."
-msgstr "返回[code]idx[/code]处节点的类型。"
+msgstr "返回槽[code]idx[/code]的左边(输入)颜色[Color]。"
#: doc/classes/GraphNode.xml:92
-#, fuzzy
msgid "Returns the right (output) [Color] of the slot [code]idx[/code]."
-msgstr "返回[code]idx[/code]处节点的类型。"
+msgstr "返回槽[code]idx[/code]çš„å³è¾¹ï¼ˆè¾“出)颜色[Color]。"
#: doc/classes/GraphNode.xml:99
-#, fuzzy
msgid "Returns the left (input) type of the slot [code]idx[/code]."
-msgstr "返回[code]idx[/code]处节点的类型。"
+msgstr "返回槽[code]idx[/code]的左边(输入)类型。"
#: doc/classes/GraphNode.xml:106
-#, fuzzy
msgid "Returns the right (output) type of the slot [code]idx[/code]."
-msgstr "返回[code]idx[/code]处节点的类型。"
+msgstr "返回槽[code]idx[/code]çš„å³è¾¹ï¼ˆè¾“出)类型。"
#: doc/classes/GraphNode.xml:113
-#, fuzzy
msgid ""
"Returns [code]true[/code] if left (input) side of the slot [code]idx[/code] "
"is enabled."
-msgstr "如果å¯ç”¨äº†ç´¢å¼•[code]idx[/code]处的轨迹,则返回[code]true[/code]。"
+msgstr "å¦‚æžœæ’æ§½[code]idx[/code]的左侧(输入)被å¯ç”¨ï¼Œè¿”回[code]true[/code]。"
#: doc/classes/GraphNode.xml:120
-#, fuzzy
msgid ""
"Returns [code]true[/code] if right (output) side of the slot [code]idx[/"
"code] is enabled."
-msgstr "如果å¯ç”¨äº†ç´¢å¼•[code]idx[/code]处的轨迹,则返回[code]true[/code]。"
+msgstr "å¦‚æžœæ’æ§½[code]idx[/code]çš„å³ä¾§ï¼ˆè¾“出)被å¯ç”¨ï¼Œè¿”回[code]true[/code]。"
#: doc/classes/GraphNode.xml:135
-#, fuzzy
msgid ""
"Sets properties of the slot with ID [code]idx[/code].\n"
"If [code]enable_left[/code]/[code]right[/code], a port will appear and the "
@@ -30868,39 +30986,41 @@ msgid ""
"methods. You must enable at least one side of the slot to do so."
msgstr ""
"设置ID为[code]idx[/code]çš„æ’æ§½çš„属性。\n"
-"如果[code]enable_left[/code]/[code]right[/code],就会出现一个端å£ï¼Œæ’槽就å¯ä»¥"
-"从这一侧连接。\n"
+"如果[code]enable_left[/code]/[code]right[/code],就会出现一个端å£ï¼Œè¯¥æ’槽就å¯"
+"以从这一侧连接。\n"
"[code]type_left[/code]/[code]right[/code]是端å£çš„一个任æ„ç±»åž‹ã€‚åªæœ‰å…·æœ‰ç›¸åŒç±»"
"åž‹å€¼çš„ç«¯å£æ‰èƒ½è¢«è¿žæŽ¥ã€‚\n"
-"[code]color_left[/code]/[code]right[/code] 是端å£åœ¨è¿™ä¸€ä¾§çš„图标的色调。\n"
+"[code]color_left[/code]/[code]right[/code]是端å£åœ¨è¿™ä¸€ä¾§çš„图标的色调。\n"
"[code]custom_left[/code]/[code]right[/code]是这一侧的端å£çš„自定义纹ç†ã€‚\n"
-"[b]注æ„:[/b] 这个方法åªè®¾ç½®æ§½çš„属性。è¦åˆ›å»ºæ§½ï¼Œéœ€è¦åœ¨GraphNode上添加一个控件"
-"派生的å­èŠ‚ç‚¹ã€‚"
+"[b]注æ„:[/b] 这个方法åªè®¾ç½®æ§½çš„属性。è¦åˆ›å»ºæ§½ï¼Œéœ€è¦åœ¨GraphNode中添加一个"
+"[Control]的派生类。\n"
+"å¯ä»¥ä½¿ç”¨[code]set_slot_*[/code]方法之一æ¥è®¾ç½®å•个属性。你必须至少å¯ç”¨æ’槽的一"
+"è¾¹æ‰èƒ½è¿™æ ·åšã€‚"
#: doc/classes/GraphNode.xml:149
-#, fuzzy
msgid ""
"Sets the [Color] of the left (input) side of the slot [code]idx[/code] to "
"[code]color_left[/code]."
-msgstr "将索引为[code]idx[/code]的片段的åç§»é‡è®¾ç½®ä¸º[code]ofs[/code]。"
+msgstr ""
+"å°†æ’æ§½[code]idx[/code]左侧(输入)的颜色[Color]设置为[code]color_left[/"
+"code]。"
#: doc/classes/GraphNode.xml:157
-#, fuzzy
msgid ""
"Sets the [Color] of the right (output) side of the slot [code]idx[/code] to "
"[code]color_right[/code]."
-msgstr "将索引为[code]idx[/code]的片段的åç§»é‡è®¾ç½®ä¸º[code]ofs[/code]。"
+msgstr ""
+"å°†æ’æ§½[code]idx[/code]çš„å³ä¾§ï¼ˆè¾“出)的颜色[Color]设置为[code]color_right[/"
+"code]。"
#: doc/classes/GraphNode.xml:165
-#, fuzzy
msgid ""
"Toggles the left (input) side of the slot [code]idx[/code]. If "
"[code]enable_left[/code] is [code]true[/code], a port will appear on the "
"left side and the slot will be able to be connected from this side."
msgstr ""
-"返回[code]idx[/code]处的节点的路径。\n"
-"如果[code]for_parent[/code]是[code]true[/code],则返回[code]idx[/code]节点的"
-"父节点的路径。"
+"åˆ‡æ¢æ’槽的左侧(输入)[code]idx[/code]。\t如果[code]enable_left[/code]为"
+"[code]true[/code],左边将出现一个端å£ï¼Œæ’槽将能够从这一边连接。"
#: doc/classes/GraphNode.xml:173
msgid ""
@@ -30908,20 +31028,20 @@ msgid ""
"[code]enable_right[/code] is [code]true[/code], a port will appear on the "
"right side and the slot will be able to be connected from this side."
msgstr ""
+"åˆ‡æ¢æ’槽的å³ä¾§ï¼ˆè¾“出)[code]idx[/code]。如果[code]enable_right[/code]为"
+"[code]true[/code],å³ä¾§å°†å‡ºçŽ°ä¸€ä¸ªç«¯å£ï¼Œæ’槽将能够从这一侧连接。"
#: doc/classes/GraphNode.xml:181
-#, fuzzy
msgid ""
"Sets the left (input) type of the slot [code]idx[/code] to [code]type_left[/"
"code]."
-msgstr "将点的左切线角度设置为 [code]index [/code] 至 [code]tangent [/code]。"
+msgstr "å°†æ’æ§½[code]idx[/code]的左侧(输入)类型设置为[code]type_left[/code]。"
#: doc/classes/GraphNode.xml:189
-#, fuzzy
msgid ""
"Sets the right (output) type of the slot [code]idx[/code] to "
"[code]type_right[/code]."
-msgstr "设置[code]index[/code]至[code]tangent[/code]处的点的å³åˆ‡çº¿è§’。"
+msgstr "å°†æ’æ§½[code]idx[/code]çš„å³ï¼ˆè¾“出)类型设置为[code]type_right[/code]。"
#: doc/classes/GraphNode.xml:195
msgid "If [code]true[/code], the GraphNode is a comment node."
@@ -30939,7 +31059,7 @@ msgstr ""
#: doc/classes/GraphNode.xml:202
msgid "Sets the overlay shown above the GraphNode. See [enum Overlay]."
-msgstr "设置在图形节点GraphNode上方显示的å åŠ å±‚ã€‚å‚è§[enum Overlay]。"
+msgstr "设置在图形节点GraphNode上方显示的å åŠ å±‚ã€‚å‚阅[enum Overlay]。"
#: doc/classes/GraphNode.xml:205
msgid ""
@@ -31002,9 +31122,8 @@ msgstr ""
"resizable])。"
#: doc/classes/GraphNode.xml:251
-#, fuzzy
msgid "Emitted when any GraphNode's slot is updated."
-msgstr "当图形节点GraphNode被选择时å‘出。"
+msgstr "å½“ä»»ä½•å›¾å½¢èŠ‚ç‚¹çš„æ’æ§½æ›´æ–°æ—¶å‘出。"
#: doc/classes/GraphNode.xml:257
msgid "No overlay is shown."
@@ -31033,7 +31152,7 @@ msgstr "关闭按钮的图标会在å¯ç”¨[member show_close]æ—¶å¯è§ã€‚"
msgid "The color modulation applied to the close button icon."
msgstr "应用于关闭按钮图标的颜色调制(modulation)。"
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr "关闭按钮的垂直åç§»é‡ã€‚"
@@ -31168,10 +31287,8 @@ msgstr ""
"ç†ã€‚æ¯ä¸ªå…«è§’形都有相åŒçš„尺寸,å¯ä»¥åŒ…å«å¤šä¸ªå•元。"
#: modules/gridmap/doc_classes/GridMap.xml:14
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/using_gridmaps.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/using_gridmaps.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/3d/using_gridmaps.html"
#: modules/gridmap/doc_classes/GridMap.xml:22
msgid "Clear all cells."
@@ -31292,7 +31409,7 @@ msgid ""
"This does not affect the size of the meshes. See [member cell_scale]."
msgstr ""
"网格å•元的尺寸。\n"
-"这并ä¸å½±å“网格的尺寸大å°ã€‚å‚è§[member cell_scale]。"
+"这并ä¸å½±å“网格的尺寸大å°ã€‚å‚阅[member cell_scale]。"
#: modules/gridmap/doc_classes/GridMap.xml:177
msgid ""
@@ -31454,7 +31571,7 @@ msgstr "水平盒容器。"
#: doc/classes/HBoxContainer.xml:7
msgid "Horizontal box container. See [BoxContainer]."
-msgstr "水平的容器。å‚è§[BoxContainer]。"
+msgstr "水平的容器。å‚阅[BoxContainer]。"
#: doc/classes/HBoxContainer.xml:17
msgid "The horizontal space between the [HBoxContainer]'s elements."
@@ -31785,7 +31902,7 @@ msgstr "水平拆分容器。"
msgid ""
"Horizontal split container. See [SplitContainer]. This goes from left to "
"right."
-msgstr "水平拆分容器。å‚è§[SplitContainer]。从左到å³ã€‚"
+msgstr "水平拆分容器。å‚阅[SplitContainer]。从左到å³ã€‚"
#: doc/classes/HSplitContainer.xml:17 doc/classes/VSplitContainer.xml:17
msgid ""
@@ -31862,23 +31979,21 @@ msgstr ""
"[code]Access-Control-Allow-Origin: *[/code] HTTP 报头æ¥å…许站外请求。"
#: doc/classes/HTTPClient.xml:16
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_client_class."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/networking/"
-"http_client_class.html"
+"https://docs.godotengine.org/en/3.4/tutorials/networking/http_client_class."
+"html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/ssl_certificates."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/networking/"
-"ssl_certificates.html"
+"https://docs.godotengine.org/en/3.4/tutorials/networking/ssl_certificates."
+"html"
#: doc/classes/HTTPClient.xml:23
msgid "Closes the current connection, allowing reuse of this [HTTPClient]."
@@ -32854,13 +32969,7 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
"具有å‘é€ HTTP 请求能力的节点,内部使用 [HTTPClient]。\n"
"å¯ä»¥ç”¨æ¥å‘é€ HTTP 请求,å³é€šè¿‡ HTTP 下载上传文件和网页内容。\n"
@@ -32931,20 +33040,19 @@ msgstr ""
"url] çš„å…³ç³»è€Œç¦æ­¢æ¥è‡ªç«™å¤–的请求。如果æœåŠ¡å™¨æ˜¯ä½ è‡ªå·±æ­å»ºçš„,å¯ä»¥é€šè¿‡æ·»åŠ  "
"[code]Access-Control-Allow-Origin: *[/code] HTTP 报头æ¥å…许站外请求。"
-#: doc/classes/HTTPRequest.xml:74
-#, fuzzy
+#: doc/classes/HTTPRequest.xml:70
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/networking/"
-"http_request_class.html"
+"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
+"html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr "å–æ¶ˆå½“å‰è¯·æ±‚。"
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -32955,17 +33063,17 @@ msgstr ""
"[b]注æ„:[/b] 部分 Web æœåС噍å¯èƒ½ä¸å‘é€å“应体长度,此时返回值将为 [code]-1[/"
"code]。如果使用分å—传输编ç ï¼Œå“应体的长度也将为 [code]-1[/code]。"
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr "返回该 HTTPRequest 已下载的字节数。"
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr "返回内部 [HTTPClient] 的当å‰çжæ€ã€‚è§ [enum HTTPClient.Status]。"
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
#, fuzzy
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
@@ -32993,7 +33101,7 @@ msgstr ""
"ERR_INVALID_PARAMETER],未å¯ç”¨å¤šçº¿ç¨‹å¹¶ä¸” [HTTPClient] 无法连接到主机时返回 "
"[constant ERR_CANT_CONNECT]。"
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
#, fuzzy
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
@@ -33016,30 +33124,11 @@ msgstr ""
"ERR_INVALID_PARAMETER],未å¯ç”¨å¤šçº¿ç¨‹å¹¶ä¸” [HTTPClient] 无法连接到主机时返回 "
"[constant ERR_CANT_CONNECT]。"
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
-msgstr ""
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
+msgstr "å…许的最大å“应体大å°ã€‚"
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
#, fuzzy
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
@@ -33052,63 +33141,63 @@ msgstr ""
"下载大文件时将该值调大(例如下载 64 KiB 时设为 65536)å¯ä»¥ç”¨æ›´å¤§çš„内存消耗æ¢"
"å–æ›´å¿«çš„下载速度。"
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr "下载到的文件。将在其中写入任何收到的文件。"
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr "å…许的最大é‡å®šå‘数。"
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr "为 [code]true[/code] 时,将å¯ç”¨å¤šçº¿ç¨‹æé«˜æ€§èƒ½ã€‚"
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr "è¯·æ±‚å®Œæˆæ—¶è§¦å‘。"
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr "请求æˆåŠŸã€‚"
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr "连接时请求失败。"
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr "è§£æžæ—¶è¯·æ±‚失败。"
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr "因连接(读写)错误而失败。"
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr "SSL æ¡æ‰‹æ—¶è¯·æ±‚失败。"
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr "请求(目å‰è¿˜ï¼‰æ²¡æœ‰èŽ·å¾—ç›¸åº”ã€‚"
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr "请求超出了大å°ä¸Šé™ï¼Œè§ [member body_size_limit]。"
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr "è¯·æ±‚å¤±è´¥ï¼ˆç›®å‰æœªä½¿ç”¨ï¼‰ã€‚"
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr "HTTPRequest 无法打开下载文件。"
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr "HTTPRequest 无法写入下载文件。"
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr "请求超出了é‡å®šå‘次数上é™ï¼Œè§ [member max_redirects]。"
@@ -33135,13 +33224,12 @@ msgstr ""
"无法导入。"
#: doc/classes/Image.xml:12 doc/classes/ImageTexture.xml:31
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/workflow/assets/"
"importing_images.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/workflow/assets/"
-"importing_scenes.html#custom-script"
+"https://docs.godotengine.org/en/3.4/getting_started/workflow/assets/"
+"importing_images.html"
#: doc/classes/Image.xml:21
msgid ""
@@ -33211,12 +33299,12 @@ msgid ""
"constants."
msgstr ""
"压缩图åƒä»¥å‡å°‘内存的使用。当图åƒè¢«åŽ‹ç¼©æ—¶ï¼Œä¸èƒ½ç›´æŽ¥è®¿é—®åƒç´ æ•°æ®ã€‚如果选择的压"
-"缩模å¼ä¸å¯ç”¨ï¼Œåˆ™è¿”回错误。å‚è§ [enum CompressMode] å’Œ [enum CompressSource] "
+"缩模å¼ä¸å¯ç”¨ï¼Œåˆ™è¿”回错误。å‚阅 [enum CompressMode] å’Œ [enum CompressSource] "
"常é‡ã€‚"
#: doc/classes/Image.xml:79
msgid "Converts the image's format. See [enum Format] constants."
-msgstr "转æ¢å›¾åƒçš„æ ¼å¼ã€‚å‚è§[enum Format]常é‡ã€‚"
+msgstr "转æ¢å›¾åƒçš„æ ¼å¼ã€‚å‚阅[enum Format]常é‡ã€‚"
#: doc/classes/Image.xml:86
msgid "Copies [code]src[/code] image to this image."
@@ -33229,7 +33317,7 @@ msgid ""
"mipmaps for this image. See the [method generate_mipmaps]."
msgstr ""
"创建一个给定大å°å’Œæ ¼å¼çš„空图åƒã€‚è§[enum Format]常é‡ã€‚如果[code]use_mipmaps[/"
-"code]是[code]true[/code],那么为这个图åƒç”Ÿæˆmipmaps。å‚è§[method "
+"code]是[code]true[/code],那么为这个图åƒç”Ÿæˆmipmaps。å‚阅[method "
"generate_mipmaps]。"
#: doc/classes/Image.xml:107
@@ -33239,9 +33327,9 @@ msgid ""
"[code]true[/code] then loads mipmaps for this image from [code]data[/code]. "
"See [method generate_mipmaps]."
msgstr ""
-"创建一个给定大å°å’Œæ ¼å¼çš„æ–°å›¾åƒã€‚å‚è§[enum Format]常é‡ã€‚用给定的原始数æ®å¡«å……图"
+"创建一个给定大å°å’Œæ ¼å¼çš„æ–°å›¾åƒã€‚å‚阅[enum Format]常é‡ã€‚用给定的原始数æ®å¡«å……图"
"åƒã€‚如果[code]use_mipmaps[/code]是[code]true[/code],那么从[code]data[/code]"
-"为这个图åƒåŠ è½½mipmaps。å‚è§[method generate_mipmaps]。"
+"为这个图åƒåŠ è½½mipmaps。å‚阅[method generate_mipmaps]。"
#: doc/classes/Image.xml:115
msgid ""
@@ -33314,7 +33402,7 @@ msgstr "返回图åƒçš„原始数æ®ã€‚"
#: doc/classes/Image.xml:178
msgid "Returns the image's format. See [enum Format] constants."
-msgstr "返回图åƒçš„æ ¼å¼ã€‚å‚è§ [enum Format] 常é‡ã€‚"
+msgstr "返回图åƒçš„æ ¼å¼ã€‚å‚阅 [enum Format] 常é‡ã€‚"
#: doc/classes/Image.xml:184
msgid "Returns the image's height."
@@ -33404,7 +33492,7 @@ msgid ""
"the [code]user://[/code] directory, and may not work in exported projects.\n"
"See also [ImageTexture] description for usage examples."
msgstr ""
-"从文件路径[code]path[/code]加载图åƒã€‚有关支æŒçš„å›¾åƒæ ¼å¼å’Œé™åˆ¶çš„列表,请å‚è§"
+"从文件路径[code]path[/code]加载图åƒã€‚有关支æŒçš„å›¾åƒæ ¼å¼å’Œé™åˆ¶çš„列表,请å‚阅"
"[url=https://docs.godotengine.org/zh_CN/latest/getting_started/workflow/"
"assets/importing_images.html#supported-image-formats]支æŒçš„å›¾åƒæ ¼å¼[/url]。"
@@ -33554,14 +33642,14 @@ msgstr "将原始数æ®ä»Ž sRGB 色彩空间转æ¢ä¸ºçº¿æ€§æ¯”例。"
#: doc/classes/Image.xml:413
msgid "Unlocks the data and prevents changes."
-msgstr ""
+msgstr "è§£é”æ•°æ®å¹¶é˜²æ­¢æ›´æ”¹ã€‚"
#: doc/classes/Image.xml:419
#, fuzzy
msgid ""
"Holds all the image's color data in a given format. See [enum Format] "
"constants."
-msgstr "以给定的格å¼ä¿å­˜å›¾åƒçš„æ‰€æœ‰é¢œè‰²æ•°æ®ã€‚å‚è§[enum Format]常é‡ã€‚"
+msgstr "以给定的格å¼ä¿å­˜å›¾åƒçš„æ‰€æœ‰é¢œè‰²æ•°æ®ã€‚å‚阅[enum Format]常é‡ã€‚"
#: doc/classes/Image.xml:424
msgid "The maximal width allowed for [Image] resources."
@@ -34118,14 +34206,14 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
#, fuzzy
msgid "Resizes the texture to the specified dimensions."
msgstr "å°† [ImageTexture] 调整为指定的大å°ã€‚"
#: doc/classes/ImageTexture.xml:87
msgid "The storage quality for [constant STORAGE_COMPRESS_LOSSY]."
-msgstr ""
+msgstr "[constant STORAGE_COMPRESS_LOSSY]的存储质é‡ã€‚"
#: doc/classes/ImageTexture.xml:90
#, fuzzy
@@ -34168,7 +34256,7 @@ msgid ""
"rendering/limits/buffers/immediate_buffer_size_kb]."
msgstr ""
"通过代ç ç»˜åˆ¶ç®€å•的几何形状。使用类似于OpenGL 1.x.的绘制方å¼ã€‚\n"
-"关于几何形状的程åºåŒ–构建,å‚è§ [ArrayMesh],[MeshDataTool] ä»¥åŠ "
+"关于几何形状的程åºåŒ–构建,å‚阅 [ArrayMesh],[MeshDataTool] ä»¥åŠ "
"[SurfaceTool]。\n"
"[b]注æ„:[/b] ImmediateGeometry3D 最适用于æ¯å¸§å˜åŒ–的少é‡ç½‘格数æ®ã€‚如果处ç†å¤§"
"é‡ç½‘格数æ®å°†ä¼šå˜æ…¢ã€‚如果网格数æ®ä¸éœ€è¦ç»å¸¸å˜åŒ–,使用[ArrayMesh],"
@@ -34195,7 +34283,7 @@ msgid ""
msgstr ""
"开始绘制(å¯é€‰çº¹ç†é‡å†™ï¼‰ã€‚当调用结æŸ[method end]。对此如何实现的更多信æ¯ï¼Œæœ"
"索[code]glBegin()[/code]和[code]glEnd()[/code]引用。\n"
-"对于基本类型,å‚è§[enum Mesh.PrimitiveType]枚举。"
+"对于基本类型,å‚阅[enum Mesh.PrimitiveType]枚举。"
#: doc/classes/ImmediateGeometry.xml:45
msgid "Clears everything that was drawn using begin/end."
@@ -34241,9 +34329,8 @@ msgstr ""
"用 [InputMap] 类设置æ“作åŠå…¶äº‹ä»¶ã€‚"
#: doc/classes/Input.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/inputs/index.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/inputs/index.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/inputs/index.html"
#: doc/classes/Input.xml:20
msgid ""
@@ -34326,7 +34413,7 @@ msgstr "返回一个 [Array],包å«å½“剿‰€æœ‰è¿žæŽ¥æ‰‹æŸ„的设备 ID。"
#: doc/classes/Input.xml:84
msgid "Returns the currently assigned cursor shape (see [enum CursorShape])."
-msgstr "è¿”å›žå½“å‰æŒ‡å®šçš„光标形状(å‚è§ [enum CursorShape])。"
+msgstr "è¿”å›žå½“å‰æŒ‡å®šçš„光标形状(å‚阅 [enum CursorShape])。"
#: doc/classes/Input.xml:90
msgid ""
@@ -34352,14 +34439,13 @@ msgstr ""
msgid ""
"Returns the current value of the joypad axis at given index (see [enum "
"JoystickList])."
-msgstr "返回给定索引处的手柄(joypad)轴的当å‰å€¼ï¼ˆå‚è§ [enum JoyAxisList])。"
+msgstr "返回给定索引处的手柄(joypad)轴的当å‰å€¼ï¼ˆå‚阅 [enum JoyAxisList])。"
#: doc/classes/Input.xml:113
msgid "Returns the index of the provided axis name."
msgstr "返回æä¾›çš„è½´å称的索引。"
#: doc/classes/Input.xml:120
-#, fuzzy
msgid ""
"Receives a [enum JoystickList] axis and returns its equivalent name as a "
"string."
@@ -34534,7 +34620,7 @@ msgid ""
"triggered internally."
msgstr ""
"通知[Input]å•例连接已更改,以更新[code]device[/code]索引的状æ€ã€‚\n"
-"这是内部使用的,ä¸å¿…从用户脚本中调用。有关内部触å‘的信å·,请å‚è§"
+"这是内部使用的,ä¸å¿…从用户脚本中调用。有关内部触å‘的信å·,请å‚阅"
"[joy_connection_changed]。"
#: doc/classes/Input.xml:275
@@ -34579,7 +34665,7 @@ msgid ""
"compression mode can't be used for custom cursors."
msgstr ""
"设置一个自定义鼠标光标图åƒï¼Œè¯¥å›¾åƒä»…当游æˆçª—å£å†…å¯è§ã€‚还å¯ä»¥æŒ‡å®šçƒ­ç‚¹ã€‚å°†"
-"[code]null[/code]传递给image傿•°å°†é‡ç½®ä¸ºç³»ç»Ÿå…‰æ ‡ã€‚有关详细信æ¯ï¼Œè¯·å‚è§[enum "
+"[code]null[/code]传递给image傿•°å°†é‡ç½®ä¸ºç³»ç»Ÿå…‰æ ‡ã€‚有关详细信æ¯ï¼Œè¯·å‚阅[enum "
"CursorShape ]形状列表。\n"
"[code]image[/code]的大å°å¿…é¡»å°äºŽ256×256。\n"
"[code]hotspot[/code]的大å°å¿…须在[code]image[/code]的范围内。\n"
@@ -34604,7 +34690,7 @@ msgstr ""
#: doc/classes/Input.xml:318
msgid "Sets the mouse mode. See the constants for more information."
-msgstr "设置鼠标模å¼ã€‚有关更多信æ¯ï¼Œè¯·å‚è§å¸¸é‡ã€‚"
+msgstr "设置鼠标模å¼ã€‚有关更多信æ¯ï¼Œè¯·å‚阅常é‡ã€‚"
#: doc/classes/Input.xml:325
msgid ""
@@ -34809,17 +34895,15 @@ msgstr "通用输入事件。"
#: doc/classes/InputEvent.xml:7
msgid "Base class of all sort of input event. See [method Node._input]."
-msgstr "å„ç§è¾“入事件的基类。å‚è§[method Node._input]。"
+msgstr "å„ç§è¾“入事件的基类。å‚阅[method Node._input]。"
#: doc/classes/InputEvent.xml:10 doc/classes/InputEventJoypadButton.xml:10
#: doc/classes/InputEventJoypadMotion.xml:10 doc/classes/InputEventKey.xml:10
#: doc/classes/InputEventMouse.xml:10 doc/classes/InputEventScreenDrag.xml:10
#: doc/classes/InputEventScreenTouch.xml:11
#: doc/classes/InputEventWithModifiers.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/inputs/inputevent.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html"
#: doc/classes/InputEvent.xml:20
msgid ""
@@ -34958,15 +35042,13 @@ msgid ""
"[b]Project > Project Settings[/b] menu. See [method Node._input]."
msgstr ""
"包å«å¯ä»¥ä»Žå¤šç§ç±»åž‹çš„输入中定ä½çš„通用æ“作。å¯ä»¥ä»Ž [b] 项目 > 项目设置 [/b] èœ"
-"å•中的 [b] 键使˜ å°„ [/b] 选项å¡åˆ›å»ºåŠ¨ä½œã€‚å‚è§[method Node._input]。"
+"å•中的 [b] 键使˜ å°„ [/b] 选项å¡åˆ›å»ºåŠ¨ä½œã€‚å‚阅[method Node._input]。"
#: doc/classes/InputEventAction.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html#actions"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/inputs/inputevent."
-"html#actions"
+"https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html#actions"
#: doc/classes/InputEventAction.xml:18
msgid "The action's name. Actions are accessed via this [String]."
@@ -35085,7 +35167,7 @@ msgid ""
"get_physical_scancode_with_modifiers())[/code] where [code]event[/code] is "
"the [InputEventKey]."
msgstr ""
-"返回与修饰键(如[kbd]Shift[/kbd]或[kbd]Alt[/kbd])相结åˆçš„物ç†é”®ç ã€‚也请å‚è§"
+"返回与修饰键(如[kbd]Shift[/kbd]或[kbd]Alt[/kbd])相结åˆçš„物ç†é”®ç ã€‚也请å‚阅"
"[InputEventWithModifiers]。\n"
"è¦èŽ·å¾—å¸¦æœ‰ä¿®é¥°ç¬¦çš„[InputEventKey]的人类å¯è¯»è¡¨ç¤ºï¼Œä½¿ç”¨[code]OS."
"get_keycode_string(event.get_physical_keycode_with_modifiers())[/code],其中"
@@ -35203,12 +35285,11 @@ msgstr "包å«é¼ æ ‡ç‚¹å‡»ä¿¡æ¯ã€‚è§[method Node._input]。"
#: doc/classes/InputEventMouseButton.xml:10
#: doc/classes/InputEventMouseMotion.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/inputs/"
"mouse_and_input_coordinates.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/inputs/"
+"https://docs.godotengine.org/en/3.4/tutorials/inputs/"
"mouse_and_input_coordinates.html"
#: doc/classes/InputEventMouseButton.xml:16
@@ -35256,7 +35337,7 @@ msgid ""
"%27s_line_algorithm]Bresenham's line algorithm[/url] as well to avoid "
"visible gaps in lines if the user is moving the mouse quickly."
msgstr ""
-"包å«é¼ æ ‡å’Œç¬”çš„è¿åŠ¨ä¿¡æ¯ã€‚支æŒç›¸å¯¹ã€ç»å¯¹ä½ç½®å’Œé€Ÿåº¦ã€‚å‚è§[method Node."
+"包å«é¼ æ ‡å’Œç¬”çš„è¿åŠ¨ä¿¡æ¯ã€‚支æŒç›¸å¯¹ã€ç»å¯¹ä½ç½®å’Œé€Ÿåº¦ã€‚å‚阅[method Node."
"_input]。\n"
"[b]注æ„:[/b]默认情况下,这个事件最多åªèƒ½åœ¨æ¯ä¸€å¸§æ¸²æŸ“中å‘å‡ºä¸€æ¬¡ã€‚å¦‚æžœä½ éœ€è¦æ›´"
"精确的输入报告,请用[code]false[/code]调用[method Input."
@@ -35361,38 +35442,32 @@ msgid "Base class for keys events with modifiers."
msgstr "带有修饰符的键事件的基类。"
#: doc/classes/InputEventWithModifiers.xml:7
-#, fuzzy
msgid ""
"Contains keys events information with modifiers support like [code]Shift[/"
"code] or [code]Alt[/code]. See [method Node._input]."
msgstr ""
-"包å«å…·æœ‰ä¿®é¥°ç¬¦æ”¯æŒçš„æŒ‰é”®äº‹ä»¶ä¿¡æ¯ï¼Œå¦‚ [kbd]Shift[/kbd] 或 [kbd]Alt[/kbd]。å‚è§"
-"[method Node._input]。"
+"包å«å…·æœ‰ä¿®é¥°ç¬¦æ”¯æŒçš„æŒ‰é”®äº‹ä»¶ä¿¡æ¯ï¼Œå¦‚ [code]Shift[/code] 或 [code]Alt[/code]。"
+"è§[method Node._input]。"
#: doc/classes/InputEventWithModifiers.xml:16
-#, fuzzy
msgid "State of the [code]Alt[/code] modifier."
-msgstr "[kbd]Alt[/kbd] 修饰符的状æ€ã€‚"
+msgstr "[code]Alt[/code] 修饰符的状æ€ã€‚"
#: doc/classes/InputEventWithModifiers.xml:19
-#, fuzzy
msgid "State of the [code]Command[/code] modifier."
-msgstr "[kbd]Cmd[/kbd] 修饰符的状æ€ã€‚"
+msgstr "[code]Command[/code] 修饰符的状æ€ã€‚"
#: doc/classes/InputEventWithModifiers.xml:22
-#, fuzzy
msgid "State of the [code]Ctrl[/code] modifier."
-msgstr "[kbd]Ctrl[/kbd] 修饰符的状æ€ã€‚"
+msgstr "[code]Ctrl[/code] 修饰符的状æ€ã€‚"
#: doc/classes/InputEventWithModifiers.xml:25
-#, fuzzy
msgid "State of the [code]Meta[/code] modifier."
-msgstr "[kbd]Meta[/kbd] 修饰符的状æ€ã€‚"
+msgstr "[code]Meta[/code] 修饰符的状æ€ã€‚"
#: doc/classes/InputEventWithModifiers.xml:28
-#, fuzzy
msgid "State of the [code]Shift[/code] modifier."
-msgstr "[kbd]Shift[/kbd] 修饰符的状æ€ã€‚"
+msgstr "[code]Shift[/code] 修饰符的状æ€ã€‚"
#: doc/classes/InputMap.xml:4
msgid "Singleton that manages [InputEventAction]."
@@ -35406,16 +35481,14 @@ msgid ""
"Node._input]."
msgstr ""
"ç®¡ç†æ‰€æœ‰çš„[InputEventAction],å¯ä»¥é€šè¿‡é¡¹ç›®è®¾ç½®èœå•[b]项目>项目设置>键使˜ å°„[/"
-"b]或在代ç ä¸­ç”¨[method add_action]å’Œ[method action_add_event]创建/修改。å‚è§"
+"b]或在代ç ä¸­ç”¨[method add_action]å’Œ[method action_add_event]创建/修改。å‚阅"
"[method Node._input]。"
#: doc/classes/InputMap.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html#inputmap"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/inputs/inputevent."
-"html#inputmap"
+"https://docs.godotengine.org/en/3.4/tutorials/inputs/inputevent.html#inputmap"
#: doc/classes/InputMap.xml:18
msgid ""
@@ -35431,9 +35504,8 @@ msgid "Removes all events from an action."
msgstr "从动作中删除所有事件。"
#: doc/classes/InputMap.xml:40
-#, fuzzy
msgid "Returns a deadzone value for the action."
-msgstr "为该动作设置死区值。"
+msgstr "返回该æ“作的死区值。"
#: doc/classes/InputMap.xml:48
msgid ""
@@ -35460,7 +35532,6 @@ msgid "Removes an action from the [InputMap]."
msgstr "从[InputMap]中删除一个动作。"
#: doc/classes/InputMap.xml:81
-#, fuzzy
msgid ""
"Returns [code]true[/code] if the given event is part of an existing action. "
"This method ignores keyboard modifiers if the given [InputEvent] is not "
@@ -35470,9 +35541,12 @@ msgid ""
"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
"direction for [InputEventJoypadMotion] events."
msgstr ""
-"如果给定事件是现有æ“作的一部分,则返回 [code] true [/code]。如果未按下给定的 "
-"[InputEvent](用于适当的释放检测),此方法将忽略键盘修饰器。如果您ä¸å¸Œæœ›è¿™ç§"
-"行为,请å‚阅 [method action_has_event] 。"
+"如果给定的事件是现有动作的一部分,返回[code]true[/code]。如果给定的"
+"[InputEvent]æ²¡æœ‰è¢«æŒ‰ä¸‹ï¼Œè¿™ä¸ªæ–¹æ³•ä¼šå¿½ç•¥é”®ç›˜ï¼ˆä¸ºäº†æ­£ç¡®åœ°æ£€æµ‹é‡Šæ”¾ï¼‰ã€‚å¦‚æžœä½ ä¸æƒ³"
+"è¦è¿™ç§è¡Œä¸ºï¼Œè¯·å‚阅[method action_has_event]。\n"
+"如果[code]exact_match[/code]是[code]false[/code],它会忽略[InputEventKey]和"
+"[InputEventMouseButton]事件的输入修饰符,以åŠ[InputEventJoypadMotion]事件的方"
+"å‘。"
#: doc/classes/InputMap.xml:89
msgid "Returns an array of [InputEvent]s associated with a given action."
@@ -35501,7 +35575,6 @@ msgid "Placeholder for the root [Node] of a [PackedScene]."
msgstr "[PackedScene] æ ¹ [Node] çš„å ä½ã€‚"
#: doc/classes/InstancePlaceholder.xml:7
-#, fuzzy
msgid ""
"Turning on the option [b]Load As Placeholder[/b] for an instanced scene in "
"the editor causes it to be replaced by an InstancePlaceholder when running "
@@ -35515,26 +35588,26 @@ msgid ""
"again."
msgstr ""
"在编辑器中为实例化场景打开选项 [b] 加载为å ä½ç¬¦ [/b] 会导致在è¿è¡Œæ¸¸æˆæ—¶å°†å…¶æ›¿"
-"æ¢ä¸º [InstancePlaceholder]。这使得实际加载场景的时间å¯ä»¥æŽ¨è¿Ÿåˆ°è°ƒç”¨[method "
-"create_instance]。这对于通过选择性加载部分场景æ¥é¿å…一次性加载大场景很有"
-"用。\n"
-"[InstancePlaceholder] æ²¡æœ‰å˜æ¢(transform)属性。这导致任何å­èŠ‚ç‚¹ä»Žç‚¹ï¼ˆ0,0)开"
-"始相对于[视å£]进行定ä½ï¼Œè€Œä¸æ˜¯åœ¨ç¼–è¾‘å™¨ä¸­æ˜¾ç¤ºçš„çˆ¶èŠ‚ç‚¹ã€‚ç”¨ä¸€ä¸ªå…·æœ‰å˜æ¢åŠŸèƒ½çš„åœº"
-"æ™¯æ¥æ›¿æ¢å ä½ç¬¦ï¼Œå°†ä½¿å­èŠ‚ç‚¹å†æ¬¡ç›¸å¯¹äºŽå®ƒä»¬çš„çˆ¶èŠ‚ç‚¹è¿›è¡Œå˜æ¢ã€‚"
+"æ¢ä¸ºå®žä¾‹å ä½ç¬¦[InstancePlaceholder]。这使得实际加载场景的时间å¯ä»¥æŽ¨è¿Ÿåˆ°è°ƒç”¨"
+"[method replace_by_instance]。这对于通过选择性加载部分场景æ¥é¿å…一次性加载大"
+"场景很有用。\n"
+"实例å ä½ç¬¦æ²¡æœ‰å˜æ¢(transform)属性。这导致任何å­èŠ‚ç‚¹ä»Žç‚¹ï¼ˆ0,0)开始相对于视窗"
+"进行定ä½ï¼Œè€Œä¸æ˜¯åœ¨ç¼–è¾‘å™¨ä¸­æ˜¾ç¤ºçš„çˆ¶èŠ‚ç‚¹ã€‚ç”¨ä¸€ä¸ªå…·æœ‰å˜æ¢å±žæ€§çš„åœºæ™¯æ¥æ›¿æ¢å ä½"
+"符,将使å­èŠ‚ç‚¹å†æ¬¡ç›¸å¯¹äºŽå®ƒä»¬çš„çˆ¶èŠ‚ç‚¹è¿›è¡Œå˜æ¢ã€‚"
#: doc/classes/InstancePlaceholder.xml:18
msgid ""
"Not thread-safe. Use [method Object.call_deferred] if calling from a thread."
-msgstr ""
+msgstr "䏿˜¯çº¿ç¨‹å®‰å…¨çš„。如果从线程调用,请使用[method Object.call_deferred]。"
#: doc/classes/InstancePlaceholder.xml:24
-#, fuzzy
msgid ""
"Gets the path to the [PackedScene] resource file that is loaded by default "
"when calling [method replace_by_instance]. Not thread-safe. Use [method "
"Object.call_deferred] if calling from a thread."
msgstr ""
-"获å–调用[method create_instance]时默认加载的[PackedScene]èµ„æºæ–‡ä»¶çš„路径。"
+"获å–调用[method replace_by_instance]时默认加载的[PackedScene]èµ„æºæ–‡ä»¶çš„路径。"
+"䏿˜¯çº¿ç¨‹å®‰å…¨çš„。如果从线程调用,请使用[method Object.call_deferred]。"
#: doc/classes/InstancePlaceholder.xml:37
msgid ""
@@ -35543,6 +35616,9 @@ msgid ""
"loaded only if it's not loaded already. By manually loading the scene "
"beforehand, delays caused by this function can be avoided."
msgstr ""
+"ç”¨ä½œä¸ºå‚æ•°çš„场景替æ¢è¿™ä¸ªå ä½ç¬¦ï¼Œå¦‚æžœæ²¡æœ‰ç»™å‡ºå‚æ•°ï¼Œåˆ™æ›¿æ¢åŽŸå§‹åœºæ™¯ã€‚å¯¹äºŽæ‰€æœ‰çš„"
+"èµ„æºæ¥è¯´ï¼Œåªæœ‰å½“场景还没有被加载时æ‰ä¼šè¢«åŠ è½½ã€‚é€šè¿‡äº‹å…ˆæ‰‹åŠ¨åŠ è½½åœºæ™¯ï¼Œå¯ä»¥é¿å…"
+"由这个函数引起的延迟。"
#: doc/classes/int.xml:4
msgid "Integer built-in type."
@@ -35599,7 +35675,6 @@ msgstr ""
"[code]int(false)[/code] 将等于0。"
#: doc/classes/int.xml:37
-#, fuzzy
msgid ""
"Cast a float value to an integer value, this method simply removes the "
"number fractions (i.e. rounds [code]from[/code] towards zero), so for "
@@ -35607,9 +35682,9 @@ msgid ""
"will be equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This "
"operation is also called truncation."
msgstr ""
-"将浮点值转æ¢ä¸ºæ•´æ•°å€¼ï¼Œæ­¤æ–¹æ³•åªæ˜¯åˆ é™¤æ•°å­—çš„å°æ•°éƒ¨åˆ†ï¼Œå› æ­¤ä¾‹å¦‚ [code]int(2.7)[/"
-"code] 将等于 2,[code]int(.1)[/code] 将等于到 0 并且 [code]int(-2.7)[/code] "
-"将等于 -2。"
+"将浮点值转æ¢ä¸ºæ•´æ•°å€¼ï¼Œæ­¤æ–¹æ³•åªæ˜¯åˆ é™¤æ•°å­—çš„å°æ•°éƒ¨åˆ†ï¼ˆå³ï¼Œå°† [code]from[/code] "
+"å‘é›¶èˆå…¥ï¼‰ï¼Œå› æ­¤ä¾‹å¦‚ [code]int(2.7)[/code] 将等于 2,[code]int(0.1)[/code] å°†"
+"等于 0,而 [code]int(-2.7)[/code] 将等于 -2。此æ“作也称为截断。"
#: doc/classes/int.xml:44
msgid ""
@@ -35626,7 +35701,7 @@ msgstr ""
#: doc/classes/InterpolatedCamera.xml:4
msgid "[i]Deprecated.[/i] Camera which moves toward another node."
-msgstr ""
+msgstr "[i] 已弃用。 [/i] å‘å¦ä¸€ä¸ªèŠ‚ç‚¹ç§»åŠ¨çš„ç›¸æœºã€‚"
#: doc/classes/InterpolatedCamera.xml:7
msgid ""
@@ -35636,28 +35711,30 @@ msgid ""
"If it is not [member enabled] or does not have a valid target set, "
"InterpolatedCamera acts like a normal Camera."
msgstr ""
+"[i]å·²ç»å¼ƒç”¨ï¼ˆå°†åœ¨Godot 4.0 中删除)。[/i]æ’值相机是一ç§[Camera],å¯ä»¥å¹³ç¨³åœ°ç§»"
+"动,以匹é…目标节点的ä½ç½®å’Œæ—‹è½¬ã€‚\n"
+"å¦‚æžœå®ƒä¸æ˜¯[member enabled]或没有有效的目标集,InterpolatedCamera 的行为就åƒä¸€"
+"个正常的相机。"
#: doc/classes/InterpolatedCamera.xml:17
-#, fuzzy
msgid "Sets the node to move toward and orient with."
-msgstr "设置当å‰çº¿ç¨‹çš„å称。"
+msgstr "设置è¦ç§»åŠ¨å’Œå®šå‘的节点。"
#: doc/classes/InterpolatedCamera.xml:23
-#, fuzzy
msgid ""
"If [code]true[/code], and a target is set, the camera will move "
"automatically."
-msgstr "如果 [code]true[/code],则窗å£å‘下滚动以自动显示新内容。"
+msgstr "如果[code]true[/code],并且设置了目标,相机将自动移动。"
#: doc/classes/InterpolatedCamera.xml:26
msgid ""
"How quickly the camera moves toward its target. Higher values will result in "
"tighter camera motion."
-msgstr ""
+msgstr "相机å‘其目标移动的速度。较高的值将导致相机的è¿åŠ¨æ›´ç´§å¯†ã€‚"
#: doc/classes/InterpolatedCamera.xml:29
msgid "The target's [NodePath]."
-msgstr ""
+msgstr "目标的[NodePath]。"
#: doc/classes/IP.xml:4
msgid "Internet protocol (IP) support functions such as DNS resolution."
@@ -35690,9 +35767,8 @@ msgstr ""
"以便进行更多的查询。"
#: doc/classes/IP.xml:29
-#, fuzzy
msgid "Returns all the user's current IPv4 and IPv6 addresses as an array."
-msgstr "以数组形å¼è¿”回用户当å‰çš„æ‰€æœ‰ IPv4 å’Œ IPv6 地å€ã€‚"
+msgstr "以数组形å¼è¿”回所有用户的当å‰IPv4å’ŒIPv6地å€ã€‚"
#: doc/classes/IP.xml:35
msgid ""
@@ -35726,16 +35802,15 @@ msgid ""
"[method get_resolve_item_status])."
msgstr ""
"给定队列 [code]id[/code],返回排队主机åçš„ IP 地å€ã€‚出现错误或解æžå°šæœªå‘生时"
-"返回一个空字符串(å‚è§ [method get_resolve_item_status])。"
+"返回一个空字符串(å‚阅 [method get_resolve_item_status])。"
#: doc/classes/IP.xml:58
-#, fuzzy
msgid ""
"Return resolved addresses, or an empty array if an error happened or "
"resolution didn't happen yet (see [method get_resolve_item_status])."
msgstr ""
-"给定队列 [code]id[/code],返回排队主机åçš„ IP 地å€ã€‚出现错误或解æžå°šæœªå‘生时"
-"返回一个空字符串(å‚è§ [method get_resolve_item_status])。"
+"如果å‘生错误或尚未å‘生解æžï¼Œåˆ™è¿”回已解æžçš„åœ°å€æˆ–空数组(请å‚阅 [method "
+"get_resolve_item_status])。"
#: doc/classes/IP.xml:65
msgid ""
@@ -35759,6 +35834,8 @@ msgid ""
"Resolves a given hostname in a blocking way. Addresses are returned as an "
"[Array] of IPv4 or IPv6 depending on [code]ip_type[/code]."
msgstr ""
+"以阻塞方å¼è§£æžç»™å®šçš„主机å。地å€ä½œä¸º IPv4 或 IPv6 çš„ [Array] 数组返回,具体å–"
+"决于 [code] ip_type[/code]。"
#: doc/classes/IP.xml:89
msgid ""
@@ -35822,7 +35899,6 @@ msgstr ""
"该控件æä¾›äº†ä¸€ä¸ªå•列的å¯é€‰æ‹©é¡¹ç›®ï¼ˆå’Œ/或图标)的列表,也å¯ä»¥é€‰æ‹©å¤šåˆ—的。"
#: doc/classes/ItemList.xml:7
-#, fuzzy
msgid ""
"This control provides a selectable list of items that may be in a single (or "
"multiple columns) with option of text, icons, or both text and icon. "
@@ -35841,8 +35917,8 @@ msgstr ""
"本ã€å›¾æ ‡æˆ–åŒæ—¶é€‰æ‹©æ–‡æœ¬å’Œå›¾æ ‡ã€‚支æŒå·¥å…·æç¤ºï¼Œåˆ—表中的æ¯ä¸ªé¡¹ç›®éƒ½å¯ä»¥æ˜¯ä¸åŒ"
"的。\n"
"列表中å¯é€‰æ‹©çš„项目å¯ä»¥è¢«é€‰æ‹©æˆ–å–æ¶ˆé€‰æ‹©ï¼Œå¹¶ä¸”å¯ä»¥å¯ç”¨å¤šé‡é€‰æ‹©ã€‚用鼠标å³é”®é€‰æ‹©"
-"也å¯ä»¥è¢«å¯ç”¨ï¼Œä»¥å…许使用弹出å¼ä¸Šä¸‹æ–‡èœå•。项目也å¯ä»¥é€šè¿‡åŒå‡»å®ƒä»¬æˆ–按"
-"[kbd]Enter[/kbd]é”®æ¥ \"激活\"。\n"
+"也å¯ä»¥è¢«å¯ç”¨ï¼Œä»¥å…许使用弹出å¼ä¸Šä¸‹æ–‡èœå•。项目也å¯ä»¥é€šè¿‡åŒå‡»å®ƒä»¬æˆ–按Enter回车"
+"é”®æ¥ \"激活\"。\n"
"é¡¹ç›®æ–‡æœ¬åªæ”¯æŒå•行字符串,字符串中的æ¢è¡Œå­—符(例如[code]\\n[/code])ä¸ä¼šäº§ç”Ÿ"
"æ¢è¡Œã€‚在[constant ICON_MODE_TOP]模å¼ä¸‹ï¼Œæ–‡æœ¬è‡ªé€‚应(warp)是å¯ç”¨çš„,但默认情况"
"下会调整列的宽度以完全适åˆå…¶å†…容。你需è¦è®¾ç½®[member fixed_column_width]大于0"
@@ -35931,49 +36007,53 @@ msgid "Returns an array with the indexes of the selected items."
msgstr "è¿”å›žä¸€ä¸ªåŒ…å«æ‰€é€‰é¡¹ç›®ç´¢å¼•的数组。"
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
-msgstr "返回与列表相关的[Object]对象ID。"
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr "选中了一个或多个项目时,返回 [code]true[/code]。"
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr "索引所对应的项目被ç¦ç”¨æ—¶ï¼Œè¿”回 [code]true[/code]。"
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr "é¡¹ç›®å›¾æ ‡è¢«è½¬ç½®ç»˜åˆ¶ï¼Œå³ X å’Œ Y è½´äº’æ¢æ—¶ï¼Œè¿”回 [code]true[/code]。"
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr "索引所对应的项目å¯ä»¥è¢«é€‰ä¸­æ—¶ï¼Œè¿”回 [code]true[/code]。"
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr "索引所对应的项目已å¯ç”¨å·¥å…·æç¤ºæ—¶ï¼Œè¿”回 [code]true[/code]。"
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr "索引所对应的项目被选中时,返回 [code]true[/code]。"
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr "将项目从索引[code]from_idx[/code]移到[code]to_idx[/code]。"
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr "从列表中删除 [code]idx[/code] 索引指定的项目。"
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
@@ -35981,103 +36061,99 @@ msgstr ""
"选择指定索引处的项目。\n"
"[b]注:[/b]此方法ä¸è§¦å‘项目选择信å·ã€‚"
-#: doc/classes/ItemList.xml:197
-#, fuzzy
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
-msgstr "返回由[code]idx[/code]索引指定的项目的自定义背景颜色。"
+msgstr "将[code]idx[/code]索引指定的项目的背景色设置为指定的颜色[Color]。"
-#: doc/classes/ItemList.xml:205
-#, fuzzy
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
-msgstr "返回由[code]idx[/code]ç´¢å¼•æŒ‡å®šé¡¹ç›®çš„è‡ªå®šä¹‰å‰æ™¯é¢œè‰²ã€‚"
+msgstr "å°†[code]idx[/code]ç´¢å¼•æŒ‡å®šé¡¹ç›®çš„å‰æ™¯é¢œè‰²è®¾ç½®ä¸ºæŒ‡å®šçš„颜色[Color]。"
-#: doc/classes/ItemList.xml:213
-#, fuzzy
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
"ç¦ç”¨ï¼ˆæˆ–å¯ç”¨ï¼‰æŒ‡å®šç´¢å¼•上的项目。\n"
-"ç¦ç”¨çš„项目ä¸èƒ½è¢«é€‰æ‹©ï¼Œä¹Ÿä¸ä¼šè§¦å‘激活信å·ï¼ˆå½“åŒå‡»æˆ–按[kbd]Enter[/kbd])。"
+"ç¦ç”¨çš„项目ä¸èƒ½è¢«é€‰ä¸­ï¼Œä¹Ÿä¸ä¼šè§¦å‘激活信å·ï¼ˆå½“åŒå‡»æˆ–按Enter回车键)。"
-#: doc/classes/ItemList.xml:222
-#, fuzzy
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
-msgstr "设置(或替æ¢ï¼‰å›¾æ ‡ä¸ŽæŒ‡å®šç´¢å¼•相关的 [Texture2D]。"
+msgstr "设置(或替æ¢ï¼‰ä¸ŽæŒ‡å®šç´¢å¼•相关的图标的纹ç†[Texture]。"
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr "设置与指定索引相关的项目的调制颜色[Color]。"
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr "设置项目图标的使用区域。如果该区域大å°ä¸º 0, 将使用整个图标。"
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr "设置项目图标是å¦å°†è¢«è½¬ç½®ç»˜åˆ¶ã€‚"
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr "设置与指定索引相关的项目存储的值(任何类型的值)。"
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr "å…è®¸æˆ–ç¦æ­¢é€‰æ‹©ä¸ŽæŒ‡å®šç´¢å¼•å…³è”的项目。"
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr "设置与指定索引相关的项目的文本。"
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr "设置与指定索引相关的项目的工具æç¤ºã€‚"
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr "设置是å¦ä¸ºæŒ‡å®šçš„项目索引å¯ç”¨å·¥å…·æç¤ºã€‚"
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr "按文本对列表中的项目进行排åºã€‚"
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr "ç¡®ä¿ä¸ŽæŒ‡å®šç´¢å¼•相关的项目ä¸è¢«é€‰ä¸­ã€‚"
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr "ç¡®ä¿æ²¡æœ‰é€‰æ‹©ä»»ä½•项目。"
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr "如果为[code]true[/code],则å¯ä»¥å†æ¬¡é€‰æ‹©å½“å‰é€‰ä¸­çš„项目。"
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr "如果为[code]true[/code],点击鼠标å³é”®å¯ä»¥é€‰ä¸­é¡¹ç›®ã€‚"
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr "如果为 [code]true[/code],控件将自动调整高度以适åˆå…¶å†…容。"
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
@@ -36086,7 +36162,7 @@ msgstr ""
"所有列的宽度将调整为。\n"
"零值ç¦ç”¨è°ƒæ•´ï¼Œæ¯ä¸ªé¡¹ç›®çš„宽度将等于其内容的宽度,列的宽度将ä¸å‡åŒ€ã€‚"
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
@@ -36095,19 +36171,19 @@ msgstr ""
"所有图标将被调整到的尺寸。\n"
"如果X或Y分é‡ä¸å¤§äºŽ0,图标的大å°å°†ä¸ä¼šå—到影å“。"
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
-msgstr "图标的ä½ç½®ï¼Œæ˜¯åœ¨æ–‡æœ¬çš„上方还是在文本的左边。å‚è§[enum IconMode]常é‡ã€‚"
+msgstr "图标的ä½ç½®ï¼Œæ˜¯åœ¨æ–‡æœ¬çš„上方还是在文本的左边。å‚阅[enum IconMode]常é‡ã€‚"
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr "在[member fixed_icon_size]和转置生效åŽåº”用的图标比例。"
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -36119,7 +36195,7 @@ msgstr ""
"如果大于零,内容将被拆分为指定列。\n"
"零值æ„å‘³ç€æ— é™åˆ—ï¼Œå³æ‰€æœ‰é¡¹ç›®å°†æ”¾åœ¨åŒä¸€è¡Œä¸­ã€‚"
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -36131,7 +36207,7 @@ msgstr ""
"[b]注æ„:[/b] è¿™ä¸ªå±žæ€§åªæœ‰åœ¨[member icon_mode]是[constant ICON_MODE_TOP]æ—¶æ‰"
"会生效。è¦ä½¿æ–‡æœ¬åŒ…装(wrap)æ¢è¡Œï¼Œ[member fixed_column_width]应大于零。"
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
@@ -36140,20 +36216,19 @@ msgstr ""
"æ˜¯å¦æ‰€æœ‰åˆ—的宽度相åŒã€‚\n"
"如果为 [code] true [/code],则宽度等于所有列的最大列宽度。"
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr "å…许å•选或多选。å‚阅[enum SelectMode]常é‡ã€‚"
-#: doc/classes/ItemList.xml:356
-#, fuzzy
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
-msgstr "当指定的列表项目通过åŒå‡»æˆ–按[kbd]Enter[/kbd]激活时触å‘。"
+msgstr "当指定的列表项目通过åŒå‡»æˆ–按Enter激活时触å‘。"
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -36165,7 +36240,7 @@ msgstr ""
"还æä¾›äº†å•击ä½ç½®ï¼Œä»¥ä¾¿åœ¨æ­£ç¡®çš„ä½ç½®æ°å½“地弹出上下文èœå•。\n"
"å¿…é¡»å¯ç”¨ [member allow_rmb_select] 。"
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
@@ -36173,19 +36248,19 @@ msgstr ""
"选择指定项目时触å‘。\n"
"[member allow_reselect] å¿…é¡»å¯ç”¨æ‰èƒ½é‡æ–°é€‰æ‹©é¡¹ç›®ã€‚"
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr "在å…许多选的列表上更改多选时触å‘。"
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr "当鼠标左键在列表的矩形(rect)范围内但在空白处å•击时,会被触å‘。"
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
@@ -36194,84 +36269,83 @@ msgstr ""
"当在列表的矩形(rect)范围内但在空白处å•击鼠标å³é”®æ—¶è¢«è§¦å‘。\n"
"[member allow_rmb_select]必须被å¯ç”¨ã€‚"
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr "图标绘制在文本上方。"
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr "图标绘制在文本的左侧。"
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr "ä»…å…许选择å•个项目。"
-#: doc/classes/ItemList.xml:406
-#, fuzzy
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
-msgstr "å…许通过按ä½[kbd]Ctrl[/kbd]或[kbd]Shift[/kbd]选择多个项目。"
+msgstr "å…许通过按ä½Ctrl或Shift选择多个项目。"
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr "[ItemList] 的默认样å¼ç›’ [StyleBox],å³åœ¨æŽ§ä»¶æœªèŽ·å¾—ç„¦ç‚¹æ—¶ä½¿ç”¨ã€‚"
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr "当[ItemList]被èšç„¦æ—¶ä½¿ç”¨çš„æ ·å¼ç›’[StyleBox]。"
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr "当[ItemList]被èšç„¦æ—¶ï¼Œç”¨äºŽå…‰æ ‡çš„æ ·å¼ç›’[StyleBox]。"
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr "当[ItemList]没有被èšç„¦æ—¶ï¼Œç”¨äºŽå…‰æ ‡çš„æ ·å¼ç›’[StyleBox]。"
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr "项目文本的字体 [Font] 。"
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr "项目的默认文本颜色 [Color]。"
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr "选择项目时使用的文本颜色[Color]。"
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr "指导线的颜色[Color]。指导线是在æ¯è¡Œé¡¹ç›®ä¹‹é—´ç”»çš„一æ¡çº¿ã€‚"
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr "项目èœå•之间的水平间è·ã€‚"
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr "项目èœå•的图标和文本之间的间è·ã€‚"
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr "æ¯è¡Œæ–‡å­—之间的行è·ã€‚"
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr "所选项的样å¼ç›’[StyleBox],当[ItemList]没有获得焦点时使用。"
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr "所选项的样å¼ç›’[StyleBox],当[ItemList]没有获得焦点时使用。"
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr "项目èœå•之间的垂直间è·ã€‚"
@@ -36292,14 +36366,19 @@ msgid ""
"godotengine.org/en/3.4/development/compiling/compiling_for_web."
"html]Compiling for the Web[/url] in the documentation for more information."
msgstr ""
+"JavaScript å•例仅在 HTML5 导出中实现。它用于访问æµè§ˆå™¨çš„ JavaScript 上下文。"
+"è¿™å…许与嵌入页é¢äº¤äº’或调用第三方 JavaScript API。\n"
+"[b]注æ„:[/b] å¯ä»¥åœ¨æž„建时ç¦ç”¨æ­¤å•例以æé«˜å®‰å…¨æ€§ã€‚默认情况下,å¯ç”¨ "
+"JavaScript å•例。官方导出模æ¿ä¹Ÿå¯ç”¨äº† JavaScript å•例。有关详细信æ¯ï¼Œè¯·å‚阅文"
+"档中的 [url=https://docs.godotengine.org/en/3.4/development/compiling/"
+"compiling_for_web.html]为 Webå¹³å°ç¼–译[/url]。"
#: doc/classes/JavaScript.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/workflow/export/"
"exporting_for_web.html#calling-javascript-from-script"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/workflow/export/"
+"https://docs.godotengine.org/en/3.4/getting_started/workflow/export/"
"exporting_for_web.html#calling-javascript-from-script"
#: doc/classes/JavaScript.xml:19
@@ -36416,13 +36495,12 @@ msgid ""
msgstr ""
#: doc/classes/JNISingleton.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/plugins/android/android_plugin."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/plugins/editor/"
-"import_plugins.html"
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/android/android_plugin."
+"html"
#: doc/classes/Joint.xml:4
msgid "Base class for all 3D joints."
@@ -36439,9 +36517,8 @@ msgstr ""
#: doc/classes/Joint.xml:10 doc/classes/RigidBody.xml:15
#: doc/classes/VehicleBody.xml:12 doc/classes/VehicleWheel.xml:11
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/524"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/524"
#: doc/classes/Joint.xml:16
msgid ""
@@ -36726,13 +36803,12 @@ msgstr ""
"对于实现与世界å‘生碰撞但ä¸éœ€è¦é«˜çº§ç‰©ç†çš„角色éžå¸¸æœ‰ç”¨ã€‚"
#: doc/classes/KinematicBody.xml:12 doc/classes/KinematicBody2D.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/physics/kinematic_character_2d."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/physics/"
-"kinematic_character_2d.html"
+"https://docs.godotengine.org/en/3.4/tutorials/physics/kinematic_character_2d."
+"html"
#: doc/classes/KinematicBody.xml:23
#, fuzzy
@@ -36987,8 +37063,8 @@ msgid ""
"move_and_slide] or [method move_and_collide] functions."
msgstr ""
"如果为[code]true[/code],则物体的è¿åŠ¨å°†ä¸Žç‰©ç†å¸§åŒæ­¥ã€‚当通过[AnimationPlayer]"
-"为è¿åŠ¨è®¾ç½®åŠ¨ç”»æ—¶ï¼Œä¾‹å¦‚åœ¨ç§»åŠ¨å¹³å°ä¸Šï¼Œè¿™ä¸ªåŠŸèƒ½å¾ˆæœ‰ç”¨ã€‚ä¸è¦å°†[b]not[/b]与 "
-"[method move_and_slide]或 [method move_and_collide] 函数一起使用。"
+"为è¿åŠ¨è®¾ç½®åŠ¨ç”»æ—¶ï¼Œä¾‹å¦‚åœ¨ç§»åŠ¨å¹³å°ä¸Šï¼Œè¿™ä¸ªåŠŸèƒ½å¾ˆæœ‰ç”¨ã€‚è¯·[b]ä¸è¦[/b]与 [method "
+"move_and_slide] 或 [method move_and_collide] 函数一起使用。"
#: doc/classes/KinematicBody.xml:166
msgid ""
@@ -37041,12 +37117,11 @@ msgstr ""
"对于实现与世界å‘生碰撞但ä¸éœ€è¦é«˜çº§ç‰©ç†çš„角色éžå¸¸æœ‰ç”¨ã€‚"
#: doc/classes/KinematicBody2D.xml:13
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/physics/"
"using_kinematic_body_2d.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/physics/"
+"https://docs.godotengine.org/en/3.4/tutorials/physics/"
"using_kinematic_body_2d.html"
#: doc/classes/KinematicBody2D.xml:22
@@ -37599,7 +37674,7 @@ msgstr "如果 [code]true[/code],ç¯å…‰åªåœ¨ç¼–辑器中出现,在è¿è¡Œæ—¶
#: doc/classes/Light.xml:35
msgid "The light's bake mode. See [enum BakeMode]."
-msgstr "ç¯å…‰çš„烘焙模å¼ã€‚å‚è§[enum BakeMode]。"
+msgstr "ç¯å…‰çš„烘焙模å¼ã€‚å‚阅[enum BakeMode]。"
#: doc/classes/Light.xml:38
msgid ""
@@ -37822,12 +37897,10 @@ msgstr ""
"[b]注æ„:[/b] Light2D也å¯ä»¥ä½œä¸ºä¸€ä¸ªé®ç½©ä½¿ç”¨ã€‚"
#: doc/classes/Light2D.xml:11 doc/classes/LightOccluder2D.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/2d/2d_lights_and_shadows.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/2d/2d_lights_and_shadows."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/2d/2d_lights_and_shadows.html"
#: doc/classes/Light2D.xml:17
msgid "The Light2D's [Color]."
@@ -37904,7 +37977,7 @@ msgstr "阴影的平滑值。"
#: doc/classes/Light2D.xml:68
msgid "Smooth shadow gradient length."
-msgstr ""
+msgstr "平滑阴影æ¸å˜é•¿åº¦ã€‚"
#: doc/classes/Light2D.xml:71
msgid ""
@@ -38281,21 +38354,23 @@ msgstr "清除当å‰é€‰æ‹©ã€‚"
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"返回此[LineEdit]çš„[PopupMenu]。默认情况下,å³é”®å•击[LineEdit]时显示此èœå•。"
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr "执行[enum MenuItems]枚举中定义的给定æ“作。"
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -38316,29 +38391,29 @@ msgstr ""
"select(2, 5) #将选择 \"lco\".\n"
"[/codeblock]"
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr "选择整个 [String]。"
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr "在[enum Align]æžšä¸¾ä¸­å®šä¹‰æ–‡æœ¬å¯¹é½æ–¹å¼ã€‚"
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr "如果为[code]true[/code],æ’入符å·ï¼ˆå¯è§†å…‰æ ‡ï¼‰å°†é—ªçƒã€‚"
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr "æ’入符å·é—ªçƒå‘¨æœŸçš„æŒç»­æ—¶é—´ï¼ˆç§’ï¼‰ã€‚"
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr "光标在[LineEdit]中的ä½ç½®ã€‚设置åŽï¼Œæ–‡æœ¬å¯ä»¥æ»šåŠ¨ä»¥é€‚åº”å®ƒã€‚"
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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."
@@ -38346,17 +38421,17 @@ msgstr ""
"设置为[code]true[/code],[code]text[/code]ä¸ä¸ºç©ºçš„æ—¶å€™ï¼Œ[LineEdit]将显示一个"
"按钮,å¯ä»¥ç”¨æ¥å¿«é€Ÿæ¸…除文本。"
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr "如果为[code]true[/code],å³é”®å•击将出现上下文èœå•。"
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr "如果为[code]false[/code],则ä¸èƒ½ä¿®æ”¹çŽ°åœ¨çš„æ–‡æœ¬ï¼Œä¹Ÿä¸èƒ½æ·»åŠ æ–°æ–‡æœ¬ã€‚"
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
@@ -38365,7 +38440,7 @@ msgstr ""
"如果[code]true[/code],则[LineEdit]宽度将增加到比[member text]长。如果"
"[member text]被缩短,它将[b]ä¸[/b]压缩。"
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -38387,14 +38462,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
"[member placeholder_text]çš„ä¸é€æ˜Žåº¦ã€‚值从[code]0[/code]到[code]1[/code]。"
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
@@ -38402,7 +38477,7 @@ msgstr ""
"当[LineEdit]为空时显示的文本。它[b]䏿˜¯[/b][LineEdit]çš„é»˜è®¤å€¼ï¼ˆè§ [member "
"text])。"
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
@@ -38411,7 +38486,7 @@ msgstr ""
"如果没有[member text],或如果[member clear_button_enabled]设置为[code]false[/"
"code],则设置将出现在[LineEdit]å³ç«¯çš„图标。"
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
@@ -38419,23 +38494,23 @@ msgstr ""
"如果为[code]true[/code],æ¯ä¸ªå­—ç¬¦éƒ½ä¼šè¢«æ›¿æ¢æˆå¯†ç å­—符(å‚考[member "
"secret_character])。"
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr "用æ¥ä½œä¸ºå¯†ç è¾“入的字符(默认为 \"*\")。åªèƒ½ç”¨ä¸€ä¸ªå­—符作为密ç å­—符。"
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr "如果为[code]false[/code],则无法用鼠标或键盘选择文本。"
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr "如果为[code]false[/code],快æ·é”®å°†è¢«ç¦ç”¨ã€‚"
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
@@ -38444,52 +38519,52 @@ msgstr ""
"[LineEdit]的字符串值。\n"
"[b]注æ„:[/b]使用这个属性更改文本ä¸ä¼šè§¦å‘[signal text_changed]ä¿¡å·ã€‚"
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr "如果[code]true[/code],则本机虚拟键盘将显示在支æŒå®ƒçš„å¹³å°ä¸Šã€‚"
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr "当文本更改时触å‘。"
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr "当用户按[LineEdit]上的[constant KEY_ENTER]时触å‘。"
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr "[LineEdit]文本左对é½ã€‚"
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr "[LineEdit]文本居中。"
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr "[LineEdit]文本å³å¯¹é½ã€‚"
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr "拉伸空白以适应[LineEdit]的宽度。"
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr "剪切(å¤åˆ¶å¹¶åˆ é™¤)选定的文本。"
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr "å¤åˆ¶é€‰å®šçš„æ–‡æœ¬ã€‚"
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -38500,63 +38575,63 @@ msgstr ""
"ä¸å¯æ‰“å°çš„转义字符将通过[method String.strip_escapes]从æ“作系统剪贴æ¿ä¸­è‡ªåЍ剥"
"离。"
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr "删除整个[LineEdit]文本。"
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr "选择[LineEdit]中所有文本。"
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr "撤销之å‰çš„æ“ä½œã€‚"
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr "å转最åŽä¸€ä¸ªæ’¤é”€åŠ¨ä½œã€‚"
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr "表示[enum MenuItems]枚举的大å°ã€‚"
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr "â€œæ¸…é™¤â€æŒ‰é’®çš„纹ç†ã€‚请å‚阅[member clear_button_enabled]。"
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr "用作清除按钮默认色调的颜色。"
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr "按下清除按钮时使用的颜色。"
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr "[LineEdit]å¯è§†å…‰æ ‡(æ’入符å·)的颜色。"
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr "当[LineEdit]具有图形用户界é¢ç„¦ç‚¹æ—¶ä½¿ç”¨çš„背景。"
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr "文本使用的字体。"
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr "默认字体颜色。"
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr "选定文本的字体颜色(在选择矩形内)。"
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr "ç¦ç”¨ç¼–辑时的字体颜色。"
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
@@ -38565,11 +38640,11 @@ msgstr ""
"æ–‡æœ¬çš„æœ€å°æ°´å¹³ç©ºé—´(ä¸åŒ…括清除按钮和内容边è·)。该值以空格字符的计数æ¥è¡¡é‡(峿— "
"需滚动å³å¯æ˜¾ç¤ºç©ºæ ¼å­—符的数é‡)。"
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr "[LineEdit]的默认背景。"
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
@@ -38577,7 +38652,7 @@ msgstr ""
"[LineEdit]处于åªè¯»æ¨¡å¼æ—¶ä½¿ç”¨çš„背景([member editable]设置为[code]false[/"
"code])。"
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr "选择矩形的颜色。"
@@ -38619,7 +38694,7 @@ msgstr "è¿™ç§æŒ‰é’®ä¸»è¦ç”¨äºŽæŒ‰é’®çš„交互导致上下文更改(如链接
#: doc/classes/LinkButton.xml:21
msgid ""
"Determines when to show the underline. See [enum UnderlineMode] for options."
-msgstr "决定何时显示下划线。å‚è§[enum UnderlineMode]的选项。"
+msgstr "决定何时显示下划线。å‚阅[enum UnderlineMode]的选项。"
#: doc/classes/LinkButton.xml:26
msgid "The LinkButton will always show an underline at the bottom of its text."
@@ -38681,7 +38756,7 @@ msgstr ""
#: doc/classes/Listener.xml:15
msgid "Disables the listener to use the current camera's listener instead."
-msgstr "ç¦ç”¨ç›‘å¬å™¨ï¼Œç”¨å½“剿‘„åƒæœºçš„监å¬å™¨ä»£æ›¿ã€‚"
+msgstr "ç¦ç”¨ç›‘å¬å™¨ï¼Œç”¨å½“å‰ç›¸æœºçš„监å¬å™¨ä»£æ›¿ã€‚"
#: doc/classes/Listener.xml:21
msgid "Returns the listener's global orthonormalized [Transform]."
@@ -38702,7 +38777,7 @@ msgstr ""
#: doc/classes/Listener.xml:34
msgid "Enables the listener. This will override the current camera's listener."
-msgstr "å¯ç”¨ç›‘å¬å™¨ã€‚è¿™å°†è¦†ç›–å½“å‰æ‘„åƒæœºçš„监å¬å™¨ã€‚"
+msgstr "å¯ç”¨ç›‘å¬å™¨ã€‚这将覆盖当å‰ç›¸æœºçš„监å¬å™¨ã€‚"
#: doc/classes/Listener2D.xml:7
#, fuzzy
@@ -38935,7 +39010,7 @@ msgstr "ä¸åº”手动调用,而应覆盖[method _iteration]。在Godot 4.0中ä¼
msgid "Emitted when a user responds to a permission request."
msgstr "当用户对æƒé™è¯·æ±‚作出å应时å‘出。"
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
@@ -38943,7 +39018,7 @@ msgstr ""
"当鼠标进入游æˆçª—壿—¶ä»Žæ“作系统收到的通知。\n"
"在桌é¢å’Œç½‘络平å°ä¸Šå®žçŽ°ã€‚"
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
@@ -38951,7 +39026,7 @@ msgstr ""
"当鼠标离开游æˆçª—壿—¶ä»Žæ“作系统收到的通知。\n"
"在桌é¢å’Œç½‘络平å°ä¸Šå®žçŽ°ã€‚"
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
#, fuzzy
msgid ""
"Notification received from the OS when the game window is focused.\n"
@@ -38960,7 +39035,7 @@ msgstr ""
"当鼠标进入游æˆçª—壿—¶ä»Žæ“作系统收到的通知。\n"
"在桌é¢å’Œç½‘络平å°ä¸Šå®žçŽ°ã€‚"
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
#, fuzzy
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
@@ -38969,7 +39044,7 @@ msgstr ""
"当鼠标进入游æˆçª—壿—¶ä»Žæ“作系统收到的通知。\n"
"在桌é¢å’Œç½‘络平å°ä¸Šå®žçŽ°ã€‚"
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
#, fuzzy
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
@@ -38980,7 +39055,7 @@ msgstr ""
"kbd]关闭窗å£ï¼‰ã€‚\n"
"在桌é¢å¹³å°ä¸Šå®žçŽ°ã€‚"
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
@@ -38990,7 +39065,7 @@ msgstr ""
"钮)。\n"
"安å“å¹³å°ç‰¹ä¾›ã€‚"
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
#, fuzzy
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
@@ -39001,7 +39076,7 @@ msgstr ""
"kbd]关闭窗å£ï¼‰ã€‚\n"
"在桌é¢å¹³å°ä¸Šå®žçŽ°ã€‚"
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
@@ -39010,7 +39085,7 @@ msgstr ""
"当应用程åºè¶…过其分é…的内存时,从æ“作系统收到的通知。\n"
"专用于iOSå¹³å°ã€‚"
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -39021,7 +39096,7 @@ msgstr ""
"言的å˜åŒ–,例如,在飞行中改å˜UIå­—ç¬¦ä¸²ã€‚åœ¨ä½¿ç”¨å†…ç½®çš„ç¿»è¯‘æ”¯æŒæ—¶å¾ˆæœ‰ç”¨ï¼Œæ¯”如"
"[method Object.tr]。"
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
@@ -39030,7 +39105,7 @@ msgstr ""
"当å‘é€ \"关于 \"ä¿¡æ¯çš„请求时,从æ“作系统收到的通知。\n"
"特定于macOSå¹³å°ã€‚"
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
@@ -39039,7 +39114,7 @@ msgstr ""
"当引擎å³å°†å´©æºƒæ—¶ï¼Œä»ŽGodot的崩溃处ç†ç¨‹åºæ”¶åˆ°çš„通知。\n"
"如果崩溃处ç†ç¨‹åºè¢«å¯ç”¨ï¼Œè¿™åªä¼šåœ¨æ¡Œé¢å¹³å°ä¸Šå®žçŽ°ã€‚"
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
@@ -39049,7 +39124,7 @@ msgstr ""
"å˜åŒ–)。\n"
"特定于macOSå¹³å°ã€‚"
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
#, fuzzy
msgid ""
"Notification received from the OS when the app is resumed.\n"
@@ -39058,7 +39133,7 @@ msgstr ""
"应用æ¢å¤æ—¶ä»Žæ“作系统收到的通知。\n"
"特定于安å“å¹³å°ã€‚"
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
#, fuzzy
msgid ""
"Notification received from the OS when the app is paused.\n"
@@ -39262,16 +39337,20 @@ msgstr ""
"[b]Add[/b]。你将能够赋予æ¯ä¸ªé¡¹æ–°çš„属性。"
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
-msgstr "返回该按钮中包å«çš„[PopupMenu]。"
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr "如果[code]true[/code]ï¼Œå¿«æ·æ–¹å¼å°†è¢«ç¦ç”¨ï¼Œæ— æ³•ç”¨äºŽè§¦å‘æŒ‰é’®ã€‚"
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
@@ -39280,16 +39359,16 @@ msgstr ""
"如果[code]true[/code],当光标悬åœåœ¨åŒä¸€çˆ¶çº§ä¸­ä¹Ÿå¯ç”¨äº†[code]switch_on_hover[/"
"code]çš„å¦ä¸€ä¸ª[MenuButton]上方时,它将关闭当å‰çš„[MenuButton]并打开å¦ä¸€ä¸ªã€‚"
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
#, fuzzy
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr "当这个MenuButtonçš„[PopupMenu]å³å°†æ˜¾ç¤ºæ—¶å‘出。"
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr "当[MenuButton]被ç¦ç”¨æ—¶ä½¿ç”¨çš„[StyleBox]。"
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
@@ -39298,39 +39377,39 @@ msgstr ""
"当[MenuButton]被èšç„¦æ—¶ä½¿ç”¨çš„[StyleBox]。它显示在当å‰çš„[StyleBox]上,所以使用"
"[StyleBoxEmpty]å°†åªæ˜¯ç¦ç”¨ç„¦ç‚¹çš„视觉效果。"
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr "[MenuButton]文本的[Font]。"
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr "[MenuButton]默认的字体[Color]颜色。"
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr "[MenuButton]被ç¦ç”¨æ—¶çš„字体[Color]颜色。"
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr "当鼠标在[MenuButton]上徘徊时使用的字体[Color]颜色。"
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr "当[MenuButton]被按下时使用的字体[Color]颜色。"
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr "当鼠标在[MenuButton]上徘徊时使用的[StyleBox]æ ·å¼ç›’。"
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr "[MenuButton]的文字和图标之间的水平间隙。"
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr "[MenuButton]的默认[StyleBox]æ ·å¼ç›’。"
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr "[MenuButton]被按下时的[StyleBox]æ ·å¼ç›’。"
@@ -39406,7 +39485,7 @@ msgid ""
"Returns the arrays for the vertices, normals, uvs, etc. that make up the "
"requested surface (see [method ArrayMesh.add_surface_from_arrays])."
msgstr ""
-"返回所有组æˆé¢æ‰€éœ€çš„东西构æˆçš„æ•°ç»„的数组,例如顶点,法å‘,UV等。(å‚è§"
+"返回所有组æˆé¢æ‰€éœ€çš„东西构æˆçš„æ•°ç»„的数组,例如顶点,法å‘,UV等。(å‚阅"
"[method ArrayMesh.add_surface_from_arrays])。"
#: doc/classes/Mesh.xml:76
@@ -39461,11 +39540,11 @@ msgstr "将顶点组渲染为三角形线框。"
msgid "Render array as triangle fans."
msgstr "将顶点组渲染为三角形线框。"
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr "æ··åˆå½¢çŠ¶æ˜¯è¢«å½’ä¸€åŒ–äº†çš„ã€‚"
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr "æ··åˆå½¢çŠ¶ç›¸å¯¹äºŽåŸºç¡€çš„æƒé‡ã€‚"
@@ -39514,57 +39593,57 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
#, fuzzy
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr "曾ç»ç”¨äºŽæ ‡è®°åŽ‹ç¼©ï¼ˆåŠç²¾åº¦æµ®ç‚¹ï¼‰åˆ‡å‘数组的Flag。"
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr "曾ç»ç”¨äºŽæ ‡è®°åŽ‹ç¼©ï¼ˆåŠç²¾åº¦æµ®ç‚¹ï¼‰æ³•呿•°ç»„çš„ Flag。"
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr "曾ç»ç”¨äºŽæ ‡è®°åŽ‹ç¼©ï¼ˆåŠç²¾åº¦æµ®ç‚¹ï¼‰åˆ‡å‘数组的Flag。"
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr "曾用于标记压缩(åŠç²¾åº¦æµ®ç‚¹ï¼‰é¢œè‰²æ•°ç»„çš„Flag。"
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr "曾用于标记压缩(åŠç²¾åº¦æµ®ç‚¹ï¼‰UV åæ ‡æ•°ç»„çš„ Flag。"
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr "曾用于标记第二套UVåæ ‡çš„压缩(åŠç²¾åº¦æµ®ç‚¹ï¼‰UVåæ ‡æ•°ç»„çš„Flag。"
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
#, fuzzy
msgid "Flag used to mark a compressed bone array."
msgstr "曾用于标记压缩索引数组的Flag。"
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
#, fuzzy
msgid "Flag used to mark a compressed (half float) weight array."
msgstr "曾ç»ç”¨äºŽæ ‡è®°åŽ‹ç¼©ï¼ˆåŠç²¾åº¦æµ®ç‚¹ï¼‰åˆ‡å‘数组的Flag。"
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr "曾用于标记压缩索引数组的Flag。"
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr "曾用于标记包å«2D顶点的数组的Flag。"
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
#, fuzzy
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr "曾用于标记包å«2D顶点的数组的Flag。"
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -39673,7 +39752,7 @@ msgstr ""
"mesh.surface_remove(0)\n"
"mdt.commit_to_surface(mesh)\n"
"[/codeblock]\n"
-"è‹¥è¦è¿›è¡Œç¨‹åºå‡ ä½•生æˆï¼Œå‚è§[ArrayMesh],[ImmediateGeometry3D]å’Œ"
+"è‹¥è¦è¿›è¡Œç¨‹åºå‡ ä½•生æˆï¼Œå‚阅[ArrayMesh],[ImmediateGeometry3D]å’Œ"
"[SurfaceTool]。\n"
"[b]Note: [/b] Godot使用顺时针 [url=https://learnopengl.com/Advanced-OpenGL/"
"Face-culling]winding order[/url]顺åºä¸ºä¸‰è§’形的默认å‰é¢ã€‚"
@@ -39756,7 +39835,7 @@ msgstr ""
"å«é¡¶ç‚¹å’Œæ³•线的网格将返回[code]3[/code]æ ¼å¼ï¼Œå› ä¸º[[constant ArrayMesh."
"ARRAY_FORMAT_VERTEX] =[code]1[/code],[constant ArrayMesh."
"ARRAY_FORMAT_NORMAL]=[code]2[/code]。\n"
-"å‚è§ [enum ArrayMesh.ArrayFormat]的格å¼Flag列表。"
+"å‚阅 [enum ArrayMesh.ArrayFormat]的格å¼Flag列表。"
#: doc/classes/MeshDataTool.xml:132
msgid "Returns the material assigned to the [Mesh]."
@@ -39985,9 +40064,8 @@ msgstr ""
"按“Create Mesh2Dâ€ã€‚"
#: doc/classes/MeshInstance2D.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/2d/2d_meshes.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/2d/2d_meshes.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/2d/2d_meshes.html"
#: doc/classes/MeshInstance2D.xml:16
msgid "The [Mesh] that will be drawn by the [MeshInstance2D]."
@@ -40272,22 +40350,20 @@ msgstr ""
"由于实例å¯ä»¥æœ‰ä»»ä½•行为,用于å¯è§æ€§çš„AABB必须由用户æä¾›ã€‚"
#: doc/classes/MultiMesh.xml:13 doc/classes/MultiMeshInstance.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/3d/vertex_animation/"
"animating_thousands_of_fish.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/vertex_animation/"
+"https://docs.godotengine.org/en/3.4/tutorials/3d/vertex_animation/"
"animating_thousands_of_fish.html"
#: doc/classes/MultiMesh.xml:14 doc/classes/MultiMeshInstance.xml:13
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/optimization/using_multimesh."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/optimization/"
-"using_multimesh.html"
+"https://docs.godotengine.org/en/3.4/tutorials/optimization/using_multimesh."
+"html"
#: doc/classes/MultiMesh.xml:20
msgid ""
@@ -40363,7 +40439,7 @@ msgstr ""
#: doc/classes/MultiMesh.xml:99
msgid "Format of custom data in custom data array that gets passed to shader."
-msgstr ""
+msgstr "传递给ç€è‰²å™¨çš„è‡ªå®šä¹‰æ•°æ®æ•°ç»„ä¸­çš„è‡ªå®šä¹‰æ•°æ®æ ¼å¼ã€‚"
#: doc/classes/MultiMesh.xml:102
msgid ""
@@ -40399,23 +40475,27 @@ msgstr "使用 3D å˜æ¢æ—¶ä½¿ç”¨æ­¤é€‰é¡¹ã€‚"
#: doc/classes/MultiMesh.xml:122
msgid "Use when you are not using per-instance [Color]s."
-msgstr ""
+msgstr "当您ä¸ä½¿ç”¨æ¯ä¸ªå®žä¾‹çš„ [Color] 时使用。"
#: doc/classes/MultiMesh.xml:125
msgid ""
"Compress [Color] data into 8 bits when passing to shader. This uses less "
"memory and can be faster, but the [Color] loses precision."
msgstr ""
+"传递给ç€è‰²å™¨æ—¶å°† [Color] æ•°æ®åŽ‹ç¼©ä¸º 8 ä½ã€‚这使用更少的内存并且å¯ä»¥æ›´å¿«ï¼Œä½† "
+"[Color] 会失去精度。"
#: doc/classes/MultiMesh.xml:128
msgid ""
"The [Color] passed into [method set_instance_color] will use 4 floats. Use "
"this for highest precision [Color]."
msgstr ""
+"传递给 [method set_instance_color] 的 [Color] 将使用 4 个浮点数。使用它以获得"
+"最高精度 [Color]。"
#: doc/classes/MultiMesh.xml:131
msgid "Use when you are not using per-instance custom data."
-msgstr ""
+msgstr "当您ä¸ä½¿ç”¨æ¯ä¸ªå®žä¾‹çš„è‡ªå®šä¹‰æ•°æ®æ—¶ä½¿ç”¨ã€‚"
#: doc/classes/MultiMesh.xml:134
msgid ""
@@ -40424,12 +40504,17 @@ msgid ""
"8 bits can only represent values between 0 and 1, numbers outside that range "
"will be clamped."
msgstr ""
+"传递给ç€è‰²å™¨æ—¶å°† custom_data 压缩为 8 ä½ã€‚这使用更少的内存并且å¯ä»¥æ›´å¿«ï¼Œä½†ä¼š"
+"失去精度和范围。 8 使µ®ç‚¹æ•°åªèƒ½è¡¨ç¤º 0 到 1 之间的值,超出该范围的数字将被é™"
+"制。"
#: doc/classes/MultiMesh.xml:137
msgid ""
"The [Color] passed into [method set_instance_custom_data] will use 4 floats. "
"Use this for highest precision."
msgstr ""
+"传递给 [method set_instance_custom_data] 的 [Color] 将使用 4 个浮点数。使用它"
+"以获得最高精度。"
#: doc/classes/MultiMeshInstance.xml:4
msgid "Node that instances a [MultiMesh]."
@@ -40448,13 +40533,12 @@ msgstr ""
"这对于优化给定网格的大é‡å®žä¾‹ï¼ˆä¾‹å¦‚森林中的树木或è‰ä¸›ï¼‰çš„æ¸²æŸ“很有用。"
#: doc/classes/MultiMeshInstance.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/3d/using_multi_mesh_instance."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/"
-"using_multi_mesh_instance.html"
+"https://docs.godotengine.org/en/3.4/tutorials/3d/using_multi_mesh_instance."
+"html"
#: doc/classes/MultiMeshInstance.xml:19
#, fuzzy
@@ -40503,8 +40587,8 @@ msgstr ""
"这个类实现了高层多人游æˆAPI背åŽçš„大部分逻辑。\n"
"默认情况下,[SceneTree]有一个对该类的引用,用于在整个场景中æä¾›å¤šäººæ¸¸æˆåŠŸèƒ½"
"(å³RPC/RSET)。\n"
-"通过设置[æˆå‘˜Node.custom_multiplayer]属性,å¯ä»¥è¦†ç›–特定节点使用的多人游æˆAPI"
-"实例,有效地å…许在åŒä¸€åœºæ™¯ä¸­åŒæ—¶è¿è¡Œå®¢æˆ·ç«¯å’ŒæœåŠ¡å™¨ã€‚"
+"通过设置[member Node.custom_multiplayer]属性,å¯ä»¥è¦†ç›–特定节点使用的多人游æˆ"
+"API实例,有效地å…许在åŒä¸€åœºæ™¯ä¸­åŒæ—¶è¿è¡Œå®¢æˆ·ç«¯å’ŒæœåŠ¡å™¨ã€‚"
#: doc/classes/MultiplayerAPI.xml:18
msgid ""
@@ -40518,12 +40602,12 @@ msgstr ""
msgid ""
"Returns the peer IDs of all connected peers of this MultiplayerAPI's [member "
"network_peer]."
-msgstr "返回此MultiplayerAPIçš„[æˆå‘˜network_peer]的所有连接的对等体的ID。"
+msgstr "返回此MultiplayerAPI的[member network_peer]的所有连接的对等体的ID。"
#: doc/classes/MultiplayerAPI.xml:30
msgid ""
"Returns the unique peer ID of this MultiplayerAPI's [member network_peer]."
-msgstr "返回该多人游æˆAPIçš„[æˆå‘˜network_peer]的唯一对等体ID。"
+msgstr "返回该多人游æˆAPIçš„[member network_peer]的唯一对等体ID。"
#: doc/classes/MultiplayerAPI.xml:36
msgid ""
@@ -40533,7 +40617,7 @@ msgstr ""
"è¿”å›žå½“å‰æ­£åœ¨æ‰§è¡Œçš„RPCçš„å‘逿–¹çš„对等体ID。\n"
"[b]注æ„:[/b] 如果ä¸åœ¨RPC内,这个方法将返回0。"
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr "如果有一个[member network_peer]设置,返回[code]true[/code]。"
@@ -40629,16 +40713,16 @@ msgid ""
"Emitted when this MultiplayerAPI's [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-"当这个MultiplayerAPIçš„[æˆå‘˜network_peer]æˆåŠŸè¿žæŽ¥åˆ°ä¸€ä¸ªæœåŠ¡å™¨æ—¶è§¦å‘该信å·ã€‚è¿™"
-"åªåœ¨å®¢æˆ·ç«¯è§¦å‘。"
+"当这个MultiplayerAPIçš„[member network_peer]æˆåŠŸè¿žæŽ¥åˆ°ä¸€ä¸ªæœåŠ¡å™¨æ—¶è§¦å‘该信å·ã€‚"
+"è¿™åªåœ¨å®¢æˆ·ç«¯è§¦å‘。"
#: doc/classes/MultiplayerAPI.xml:93
msgid ""
"Emitted when this MultiplayerAPI's [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-"当这个MultiplayerAPIçš„[æˆå‘˜network_peer]无法与æœåŠ¡å™¨å»ºç«‹è¿žæŽ¥æ—¶è§¦å‘。åªåœ¨å®¢æˆ·"
-"端触å‘。"
+"当这个MultiplayerAPIçš„[member network_peer]无法与æœåŠ¡å™¨å»ºç«‹è¿žæŽ¥æ—¶è§¦å‘。åªåœ¨å®¢"
+"户端触å‘。"
#: doc/classes/MultiplayerAPI.xml:99
msgid ""
@@ -40647,9 +40731,9 @@ msgid ""
"clients connect to the same server. Upon connecting to a server, a client "
"also receives this signal for the server (with ID being 1)."
msgstr ""
-"当此多人播放器的 [æˆå‘˜network_peer] 与新对等连接时触å‘该信å·ã€‚ID 是新peerçš„ "
-"peer ID。当其他客户端连接到åŒä¸€æœåŠ¡å™¨æ—¶ï¼Œå®¢æˆ·ç«¯ä¼šæ”¶åˆ°é€šçŸ¥ã€‚è¿žæŽ¥åˆ°æœåС噍åŽï¼Œå®¢"
-"户端还会收到æœåŠ¡å™¨çš„æ­¤ä¿¡å·ï¼ˆID 为 1)。"
+"当此多人播放器的 [member network_peer] 与新对等连接时触å‘该信å·ã€‚ID 是新peer"
+"çš„ peer ID。当其他客户端连接到åŒä¸€æœåŠ¡å™¨æ—¶ï¼Œå®¢æˆ·ç«¯ä¼šæ”¶åˆ°é€šçŸ¥ã€‚è¿žæŽ¥åˆ°æœåС噍"
+"åŽï¼Œå®¢æˆ·ç«¯è¿˜ä¼šæ”¶åˆ°æœåŠ¡å™¨çš„æ­¤ä¿¡å·ï¼ˆID 为 1)。"
#: doc/classes/MultiplayerAPI.xml:105
msgid ""
@@ -40657,8 +40741,8 @@ msgid ""
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-"当这个MultiplayerAPIçš„[æˆå‘˜network_peer]与一个åŒä¼´æ–­å¼€è¿žæŽ¥æ—¶è§¦å‘该信å·ã€‚当其"
-"他客户端与åŒä¸€æœåŠ¡å™¨æ–­å¼€è¿žæŽ¥æ—¶ï¼Œå®¢æˆ·ç«¯ä¼šå¾—åˆ°é€šçŸ¥ã€‚"
+"当这个MultiplayerAPIçš„[member network_peer]与一个åŒä¼´æ–­å¼€è¿žæŽ¥æ—¶è§¦å‘该信å·ã€‚当"
+"其他客户端与åŒä¸€æœåŠ¡å™¨æ–­å¼€è¿žæŽ¥æ—¶ï¼Œå®¢æˆ·ç«¯ä¼šå¾—åˆ°é€šçŸ¥ã€‚"
#: doc/classes/MultiplayerAPI.xml:112
msgid ""
@@ -40666,16 +40750,16 @@ msgid ""
"[code]packet[/code] with custom data (see [method send_bytes]). ID is the "
"peer ID of the peer that sent the packet."
msgstr ""
-"当这个MultiplayerAPIçš„[æˆå‘˜network_peer]收到一个带有自定义数æ®çš„[code]æ•°æ®åŒ…"
-"[/code](è§[method send_bytes])时触å‘。ID是å‘é€è¯¥æ•°æ®åŒ…的对等体的ID。"
+"当这个MultiplayerAPIçš„[member network_peer]收到一个带有自定义数æ®çš„[code]æ•°æ®"
+"包[/code](è§[method send_bytes])时触å‘。ID是å‘é€è¯¥æ•°æ®åŒ…的对等体的ID。"
#: doc/classes/MultiplayerAPI.xml:117
msgid ""
"Emitted when this MultiplayerAPI's [member network_peer] disconnects from "
"server. Only emitted on clients."
msgstr ""
-"当这个MultiplayerAPIçš„[æˆå‘˜network_peer]与æœåŠ¡å™¨æ–­å¼€è¿žæŽ¥æ—¶è§¦å‘。åªåœ¨å®¢æˆ·ç«¯è§¦"
-"å‘。"
+"当这个MultiplayerAPIçš„[member network_peer]与æœåŠ¡å™¨æ–­å¼€è¿žæŽ¥æ—¶è§¦å‘。åªåœ¨å®¢æˆ·ç«¯"
+"触å‘。"
#: doc/classes/MultiplayerAPI.xml:123
msgid ""
@@ -40782,13 +40866,12 @@ msgstr ""
#: doc/classes/Mutex.xml:10 doc/classes/Semaphore.xml:10
#: doc/classes/Thread.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/threads/using_multiple_threads."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/threads/"
-"using_multiple_threads.html"
+"https://docs.godotengine.org/en/3.4/tutorials/threads/using_multiple_threads."
+"html"
#: doc/classes/Mutex.xml:16
msgid ""
@@ -40796,6 +40879,8 @@ msgid ""
"[b]Note:[/b] This function returns without blocking if the thread already "
"has ownership of the mutex."
msgstr ""
+"é”定此 [Mutex]ï¼Œç›´åˆ°è¢«å½“å‰æ‰€æœ‰è€…è§£é”为止。\n"
+"[b]注æ„:[/b] å¦‚æžœçº¿ç¨‹å·²ç»æ‹¥æœ‰äº’æ–¥é”的所有æƒï¼Œè¯¥å‡½æ•°å°†æ— é˜»å¡žåœ°è¿”回。"
#: doc/classes/Mutex.xml:23
#, fuzzy
@@ -40814,6 +40899,9 @@ msgid ""
"times while already having ownership of the mutex, it must also call [method "
"unlock] the same number of times in order to unlock it correctly."
msgstr ""
+"è§£é”这个 [Mutex],把它留给其他线程。\n"
+"[b]注æ„:[/b]å¦‚æžœä¸€ä¸ªçº¿ç¨‹åœ¨å·²ç»æ‹¥æœ‰äº’æ–¥é”的情况下多次调用[method lock]或"
+"[method try_lock]ï¼Œå®ƒä¹Ÿå¿…é¡»è°ƒç”¨ç›¸åŒæ¬¡æ•°çš„[method unlock]æ‰èƒ½æ­£ç¡®è§£é”."
#: modules/gdnative/doc_classes/NativeScript.xml:13
msgid ""
@@ -40881,9 +40969,8 @@ msgstr ""
"中被自动收集。除了基本的寻路,这个类还帮助导航代ç†ä¸Žå¯¼èˆªä¸Šçš„网格对é½ã€‚"
#: doc/classes/Navigation.xml:11 doc/classes/NavigationMesh.xml:10
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/124"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/124"
#: doc/classes/Navigation.xml:18 doc/classes/Navigation2D.xml:18
#, fuzzy
@@ -40898,6 +40985,8 @@ msgid ""
"given. Useful for rotating a navigation agent according to the navigation "
"mesh it moves on."
msgstr ""
+"è¿”å›žæœ€æŽ¥è¿‘ç»™å®šç‚¹çš„å¯¼èˆªç‚¹å¤„çš„è¡¨é¢æ³•线。用于根æ®å¯¼èˆªä»£ç†ç§»åŠ¨çš„å¯¼èˆªç½‘æ ¼æ—‹è½¬å¯¼èˆª"
+"代ç†ã€‚"
#: doc/classes/Navigation.xml:32
msgid ""
@@ -40907,6 +40996,9 @@ msgid ""
"the owner that was given (or [code]null[/code] if the [code]owner[/code] "
"parameter was omitted)."
msgstr ""
+"è¿”å›žåŒ…å«æœ€æŽ¥è¿‘给定点的导航点的 [NavigationMesh] 的所有者。这通常是一个 "
+"[NavigationMeshInstance]。对于通过 [method navmesh_add] 添加的网格,返回给定"
+"的所有者(如果çœç•¥ [code]owner[/code] 傿•°ï¼Œåˆ™è¿”回 [code]null[/code])。"
#: doc/classes/Navigation.xml:41
msgid ""
@@ -40915,6 +41007,8 @@ msgid ""
"between segment and navigation meshes. If multiple intersection points are "
"found, the one closest to the segment start point is returned."
msgstr ""
+"返回最接近给定线段的导航点。å¯ç”¨ [code]use_collision[/code] 时,仅考虑线段和"
+"导航网格之间的交点。如果找到多个交点,则返回最接近线段起点的交点。"
#: doc/classes/Navigation.xml:50
#, fuzzy
@@ -40937,6 +41031,9 @@ msgid ""
"the polygon. The optional [code]owner[/code] is used as return value for "
"[method get_closest_point_owner]."
msgstr ""
+"添加一个 [NavigationMesh]。返回用于 [method navmesh_remove] 或 [method "
+"navmesh_set_transform] çš„ ID。如果给定,则将 [Transform2D] 应用于多边形。å¯é€‰"
+"的 [code]owner[/code] 用作 [method get_closest_point_owner] 的返回值。"
#: doc/classes/Navigation.xml:67
#, fuzzy
@@ -40975,9 +41072,8 @@ msgstr ""
"åˆã€‚这些资æºè¢«è‡ªåŠ¨ä»Žå­[NavigationRegion2D]节点中收集。"
#: doc/classes/Navigation2D.xml:11 doc/classes/NavigationPolygon.xml:27
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/117"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/117"
#: doc/classes/Navigation2D.xml:25
msgid ""
@@ -40987,6 +41083,9 @@ msgid ""
"returns the owner that was given (or [code]null[/code] if the [code]owner[/"
"code] parameter was omitted)."
msgstr ""
+"è¿”å›žåŒ…å«æœ€æŽ¥è¿‘给定点的导航点的 [NavigationPolygon] 的所有者。这通常是一个 "
+"[NavigationPolygonInstance]。对于通过 [method navpoly_add] 添加的多边形,返回"
+"给定的所有者(如果çœç•¥ [code]owner[/code] 傿•°ï¼Œåˆ™è¿”回 [code]null[/code])。"
#: doc/classes/Navigation2D.xml:34
#, fuzzy
@@ -41007,6 +41106,9 @@ msgid ""
"is applied to the polygon. The optional [code]owner[/code] is used as return "
"value for [method get_closest_point_owner]."
msgstr ""
+"添加 [NavigationPolygon]。返回用于 [method navpoly_remove] 或 [method "
+"navpoly_set_transform] çš„ ID。如果给定,则将 [Transform2D] 应用于多边形。å¯é€‰"
+"的 [code]owner[/code] 用作 [method get_closest_point_owner] 的返回值。"
#: doc/classes/Navigation2D.xml:51
#, fuzzy
@@ -41021,7 +41123,7 @@ msgstr "返回应用于该项导航网格的转æ¢ã€‚"
#: doc/classes/NavigationMesh.xml:4
msgid "A mesh to approximate the walkable areas and obstacles."
-msgstr ""
+msgstr "ç”¨äºŽæ¨¡æ‹Ÿå¯æ­¥è¡ŒåŒºåŸŸå’Œéšœç¢ç‰©çš„网格。"
#: doc/classes/NavigationMesh.xml:7
msgid ""
@@ -41029,6 +41131,8 @@ msgid ""
"environment are traversable to aid agents in pathfinding through complicated "
"spaces."
msgstr ""
+"导航网格是多边形的集åˆï¼Œç”¨äºŽå®šä¹‰çŽ¯å¢ƒä¸­çš„å“ªäº›åŒºåŸŸæ˜¯å¯é历的,以帮助代ç†åœ¨å¤æ‚"
+"的空间中寻路。"
#: doc/classes/NavigationMesh.xml:17 doc/classes/NavigationPolygon.xml:49
msgid ""
@@ -41046,7 +41150,7 @@ msgstr "æ¸…é™¤å¤šè¾¹å½¢æ•°ç»„ï¼Œä½†ä¸æ¸…除轮廓和顶点数组。"
msgid ""
"Initializes the navigation mesh by setting the vertices and indices "
"according to a [Mesh]."
-msgstr ""
+msgstr "é€šè¿‡æ ¹æ® [Mesh] 设置顶点和索引æ¥åˆå§‹åŒ–导航网格。"
#: doc/classes/NavigationMesh.xml:37
#, fuzzy
@@ -41081,6 +41185,10 @@ msgid ""
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
"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]。"
#: doc/classes/NavigationMesh.xml:72 doc/classes/NavigationPolygon.xml:121
msgid ""
@@ -41095,6 +41203,8 @@ msgid ""
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
"multiple of [member cell/height]."
msgstr ""
+"地æ¿åˆ°å¤©èбæ¿çš„æœ€å°é«˜åº¦ï¼Œä»ç„¶å…许被认为是å¯è¡Œèµ°çš„地æ¿ã€‚\n"
+"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„[member cell/height]çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml:82
msgid ""
@@ -41102,6 +41212,8 @@ msgid ""
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
"multiple of [member cell/height]."
msgstr ""
+"被认为ä»å¯ç©¿è¶Šçš„æœ€å°å¢™å£é«˜åº¦ã€‚\n"
+"[b]注æ„:[/b]烘焙时,该值将å‘下èˆå…¥åˆ°æœ€æŽ¥è¿‘çš„[member cell/height]çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml:86
#, fuzzy
@@ -41115,6 +41227,8 @@ msgid ""
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
"multiple of [member cell/size]."
msgstr ""
+"侵蚀/缩å°è¿œç¦»éšœç¢ç‰©çš„高度场的å¯è¡Œèµ°åŒºåŸŸè·ç¦»ã€‚\n"
+"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„[member cell/size]çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml:93
#, fuzzy
@@ -41123,12 +41237,12 @@ msgstr "ç”¨äºŽâ€œå‘¼å«æ–¹æ³•â€è½¨é“çš„å‘¼å«æ¨¡å¼ã€‚"
#: doc/classes/NavigationMesh.xml:96
msgid "The XZ plane cell size to use for fields."
-msgstr ""
+msgstr "用于字段的XZå¹³é¢å•元尺寸。"
#: doc/classes/NavigationMesh.xml:99
msgid ""
"The sampling distance to use when generating the detail mesh, in cell unit."
-msgstr ""
+msgstr "生æˆç»†åˆ†ç½‘格时使用的采样è·ç¦»ï¼Œä»¥å•元为å•ä½ã€‚"
#: doc/classes/NavigationMesh.xml:102
msgid ""
@@ -41178,7 +41292,7 @@ msgstr ""
msgid ""
"Determines which type of nodes will be parsed as geometry. See [enum "
"ParsedGeometryType] for possible values."
-msgstr "设置关节类型。有关å¯èƒ½çš„值,请å‚è§[enum JointType]。"
+msgstr "设置关节类型。有关å¯èƒ½çš„值,请å‚阅[enum JointType]。"
#: doc/classes/NavigationMesh.xml:128
#, fuzzy
@@ -41263,6 +41377,8 @@ msgid ""
"Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS]."
msgstr ""
+"[constant PARSED_GEOMETRY_MESH_INSTANCES] 和 [constant "
+"PARSED_GEOMETRY_STATIC_COLLIDERS]."
#: doc/classes/NavigationMesh.xml:172
#, fuzzy
@@ -41465,12 +41581,11 @@ msgstr ""
#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:12
#: doc/classes/NetworkedMultiplayerPeer.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/"
"high_level_multiplayer.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/networking/"
+"https://docs.godotengine.org/en/3.4/tutorials/networking/"
"high_level_multiplayer.html"
#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:13
@@ -41700,7 +41815,7 @@ msgstr ""
"设置用于传输数æ®çš„默认通é“ã€‚ç¼ºçœæƒ…况下,该值为[code]-1[/code],表示ENetåªä½¿ç”¨"
"2个通é“:一个用于å¯é æŠ¥æ–‡ï¼Œä¸€ä¸ªç”¨äºŽä¸å¯é æŠ¥æ–‡ã€‚通é“[code]0[/code]被ä¿ç•™ï¼Œä¸èƒ½"
"使用。将该æˆå‘˜è®¾ç½®ä¸º[code]0[/code]å’Œ[member channel_count](ä¸åŒ…括)之间的任何"
-"值将强制ENet使用该通é“å‘逿•°æ®ã€‚有关ENet通é“的更多信æ¯ï¼Œè¯·å‚è§[member "
+"值将强制ENet使用该通é“å‘逿•°æ®ã€‚有关ENet通é“的更多信æ¯ï¼Œè¯·å‚阅[member "
"channel_count]。"
#: modules/enet/doc_classes/NetworkedMultiplayerENet.xml:139
@@ -41776,14 +41891,13 @@ msgid ""
msgstr ""
#: doc/classes/NetworkedMultiplayerPeer.xml:12
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/537"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/537"
#: doc/classes/NetworkedMultiplayerPeer.xml:18
msgid ""
"Returns the current state of the connection. See [enum ConnectionStatus]."
-msgstr "返回连接的当å‰çжæ€ã€‚å‚è§[enum ConnectionStatus]。"
+msgstr "返回连接的当å‰çжæ€ã€‚å‚阅[enum ConnectionStatus]。"
#: doc/classes/NetworkedMultiplayerPeer.xml:24
msgid ""
@@ -41824,7 +41938,7 @@ msgstr "如果[code]为真[/code],这个[NetworkedMultiplayerPeer]æ‹’ç»æ–°çš„
msgid ""
"The manner in which to send packets to the [code]target_peer[/code]. See "
"[enum TransferMode]."
-msgstr "å‘[code]target_peer[/code]å‘逿•°æ®åŒ…的方å¼ã€‚å‚è§[enum TransferMode]。"
+msgstr "å‘[code]target_peer[/code]å‘逿•°æ®åŒ…的方å¼ã€‚å‚阅[enum TransferMode]。"
#: doc/classes/NetworkedMultiplayerPeer.xml:59
msgid "Emitted when a connection attempt fails."
@@ -42050,7 +42164,6 @@ msgid "Base class for all [i]scene[/i] objects."
msgstr "所有[i]scene[/i]对象的基类。"
#: doc/classes/Node.xml:7
-#, fuzzy
msgid ""
"Nodes are Godot's building blocks. They can be assigned as the child of "
"another node, resulting in a tree arrangement. A given node can contain any "
@@ -42110,60 +42223,58 @@ msgid ""
"(make sure node names are the same on all peers). Also, take a look at the "
"high-level networking tutorial and corresponding demos."
msgstr ""
-"节点是Godot的构建模å—。它们å¯ä»¥è¢«æŒ‡å®šä¸ºå¦ä¸€ä¸ªèŠ‚ç‚¹çš„å­èŠ‚ç‚¹ï¼Œä»Žè€Œå½¢æˆæ ‘状结构。"
-"一个给定的节点å¯ä»¥åŒ…å«ä»»æ„æ•°é‡çš„节点作为å­èŠ‚ç‚¹ï¼Œè¦æ±‚所有的兄弟å§å¦¹ï¼ˆèŠ‚ç‚¹çš„ç›´"
-"接å­èŠ‚ç‚¹ï¼‰åº”è¯¥æœ‰å”¯ä¸€çš„å字。\n"
-"一棵节点树被称为[i]场景[/i]。场景å¯ä»¥è¢«ä¿å­˜åˆ°ç£ç›˜ä¸Šï¼Œç„¶åŽè¢«å®žä¾‹åŒ–到其他场景"
-"中。这使得Godoté¡¹ç›®çš„æž¶æž„å’Œæ•°æ®æ¨¡åž‹å…·æœ‰æžé«˜çš„çµæ´»æ€§ã€‚\n"
-"[b]场景树:[/b] [SceneTree]åŒ…å«æ´»åŠ¨çš„èŠ‚ç‚¹æ ‘ã€‚å½“ä¸€ä¸ªèŠ‚ç‚¹è¢«æ·»åŠ åˆ°åœºæ™¯æ ‘ä¸­æ—¶ï¼Œå®ƒ"
-"将收到[constant NOTIFICATION_ENTER_TREE]通知,其[method _enter_tree]回调被触"
-"å‘。å­èŠ‚ç‚¹æ€»æ˜¯åœ¨å…¶çˆ¶èŠ‚ç‚¹[i]之åŽ[/i]添加,å³çˆ¶èŠ‚ç‚¹çš„[method _enter_tree]回调将"
-"在其å­èŠ‚ç‚¹ä¹‹å‰è¢«è§¦å‘。\n"
+"节点是Godot的构建模å—。它们å¯ä»¥è¢«æŒ‡å®šä¸ºå¦ä¸€ä¸ªèŠ‚ç‚¹çš„å­èŠ‚ç‚¹ï¼Œä»Žè€Œå½¢æˆæ ‘状排列。"
+"一个给定的节点å¯ä»¥åŒ…å«ä»»æ„æ•°é‡çš„节点作为å­èŠ‚ç‚¹ï¼Œè¦æ±‚所有的兄弟å§å¦¹ï¼Œå³è¯¥èŠ‚ç‚¹"
+"的直接å­èŠ‚ç‚¹ï¼Œåº”è¯¥æœ‰å”¯ä¸€çš„å字。\n"
+"一个节点树被称为[i]场景[/i]。场景å¯ä»¥è¢«ä¿å­˜åˆ°ç£ç›˜ä¸Šï¼Œç„¶åŽè¢«å®žä¾‹åŒ–到其他场景"
+"中。这使得Godoté¡¹ç›®çš„æž¶æž„å’Œæ•°æ®æ¨¡åž‹å…·æœ‰éžå¸¸é«˜çš„çµæ´»æ€§ã€‚\n"
+"[b]Scene tree:[/b] [SceneTree]åŒ…å«æ´»åŠ¨çš„èŠ‚ç‚¹æ ‘ã€‚å½“ä¸€ä¸ªèŠ‚ç‚¹è¢«æ·»åŠ åˆ°åœºæ™¯æ ‘ä¸­"
+"时,它将收到[constant NOTIFICATION_ENTER_TREE]通知,并触å‘å…¶[method "
+"_enter_tree]回调。å­èŠ‚ç‚¹æ€»æ˜¯åœ¨å…¶çˆ¶èŠ‚ç‚¹[i]之åŽ[/i]被添加,å³çˆ¶èŠ‚ç‚¹çš„[method "
+"_enter_tree]回调将在其å­èŠ‚ç‚¹çš„ä¹‹å‰è¢«è§¦å‘。\n"
"一旦所有的节点被添加到场景树中,它们就会收到[constant NOTIFICATION_READY]通"
-"知,它们å„自的[method _ready]回调被触å‘。对于节点组,[method _ready]回调是按"
-"相å的顺åºè°ƒç”¨çš„,从å­èŠ‚ç‚¹å¼€å§‹ï¼Œå‘上移动到父节点。\n"
+"知,其å„自的[method _ready]回调被触å‘。对于节点组,[method _ready]回调是按相"
+"å的顺åºè°ƒç”¨çš„,从å­èŠ‚ç‚¹å¼€å§‹ï¼Œå‘上移动到父节点。\n"
"è¿™æ„味ç€ï¼Œå½“把一个节点添加到场景树中时,将使用下é¢çš„顺åºè¿›è¡Œå›žè°ƒã€‚父节点的"
"[method _enter_tree],å­èŠ‚ç‚¹çš„[method _enter_tree],å­èŠ‚ç‚¹çš„[method _ready],"
-"æœ€åŽæ˜¯çˆ¶èŠ‚ç‚¹çš„[method _ready](对整个场景树进行递归)。\n"
-"[b]处ç†ï¼š[/b] 节点å¯ä»¥è¦†ç›– \"process \"状æ€ï¼Œä»¥ä¾¿å®ƒä»¬åœ¨æ¯ä¸€å¸§ä¸Šæ”¶åˆ°ä¸€ä¸ªå›žè°ƒï¼Œ"
-"è¦æ±‚它们进行处ç†ï¼ˆåšä¸€äº›äº‹æƒ…)。普通处ç†ï¼ˆå›žè°ƒ[method _process],用[method "
-"set_process]切æ¢ï¼‰å°½å¯èƒ½å¿«åœ°å‘生,并且å–å†³äºŽå¸§é€ŸçŽ‡ï¼Œæ‰€ä»¥å¤„ç†æ—¶é—´[i]delta[/i]"
-"è¢«ä½œä¸ºä¸€ä¸ªå‚æ•°ä¼ é€’。物ç†å¤„ç†ï¼ˆå›žè°ƒ[method _physics_process],用[method "
-"set_physics_process]切æ¢ï¼‰æ¯ç§’å‘生固定次数(默认为60),对物ç†å¼•擎相关的代ç "
-"很有用。\n"
-"节点也å¯ä»¥å¤„ç†è¾“入事件。当出现时,[method _input]å‡½æ•°å°†ä¸ºç¨‹åºæ”¶åˆ°çš„æ¯ä¸ªè¾“å…¥è€Œ"
-"被调用。在许多情况下,这å¯èƒ½æ˜¯å¤šä½™çš„(除éžç”¨äºŽç®€å•的项目),[method "
-"_unhandled_input]函数å¯èƒ½æ˜¯é¦–选;当输入事件没有被其他任何人(通常是"
-"GUI[Control]èŠ‚ç‚¹ï¼‰å¤„ç†æ—¶ï¼Œå®ƒè¢«è°ƒç”¨ï¼Œç¡®ä¿èŠ‚ç‚¹åªæŽ¥æ”¶ä¸ºå®ƒå‡†å¤‡çš„äº‹ä»¶ã€‚\n"
-"为了跟踪场景的层次结构(特别是在将场景实例化到其他场景时),å¯ä»¥ç”¨[æˆå‘˜æ‰€æœ‰"
-"者]属性为节点设置一个 \"所有者\"。这å¯ä»¥è·Ÿè¸ªè°å®žä¾‹åŒ–了什么。ä¸è¿‡ï¼Œè¿™åœ¨ç¼–写编"
-"辑器和工具时éžå¸¸æœ‰ç”¨ã€‚\n"
-"最åŽï¼Œå½“一个节点被[method Object.free]或[method queue_free]释放时,它也将释放"
-"它的所有å­èŠ‚ç‚¹ã€‚\n"
-"[b]组:[/b] 节点å¯ä»¥è¢«æ·»åŠ åˆ°å°½å¯èƒ½å¤šçš„组中,以方便管ç†ï¼Œä½ å¯ä»¥åˆ›å»ºåƒ \"敌人 "
-"\"或 \"坿”¶é›†ç‰© \"这样的组,这å–决于你的游æˆã€‚å‚è§[method add_to_group], "
+"æœ€åŽæ˜¯çˆ¶èŠ‚ç‚¹çš„[method _ready],å³å¯¹æ•´ä¸ªåœºæ™¯æ ‘进行递归。\n"
+"[b]Processing:[/b] 节点å¯ä»¥é‡å†™ \"处ç†\" 状æ€ï¼Œä»¥ä¾¿å®ƒä»¬åœ¨æ¯ä¸€å¸§ä¸Šæ”¶åˆ°å›žè°ƒï¼Œè¦"
+"求它们进行处ç†ï¼Œå³åšä¸€äº›äº‹æƒ…。普通处ç†å°½å¯èƒ½å¿«åœ°å‘生,回调[method _process],"
+"用[method set_process]切æ¢ï¼Œå–å†³äºŽå¸§é€ŸçŽ‡ï¼Œæ‰€ä»¥å¤„ç†æ—¶é—´[i]delta[/i](å•ä½ï¼š"
+"ç§’ï¼‰ä½œä¸ºå‚æ•°ä¼ é€’。物ç†å¤„ç†æ¯ç§’å‘生固定次数(默认为60),回调[method "
+"_physics_process],用[method set_physics_process]切æ¢ï¼Œå¯¹ç‰©ç†å¼•擎相关的代ç å¾ˆ"
+"有用。\n"
+"节点也å¯ä»¥å¤„ç†è¾“å…¥äº‹ä»¶ã€‚å½“å‡ºçŽ°æ—¶ï¼Œç¨‹åºæ”¶åˆ°çš„æ¯ä¸ªè¾“å…¥è€Œè°ƒç”¨[method _input]函"
+"数。在许多情况下,这å¯èƒ½æ˜¯å¤šä½™çš„,除éžç”¨äºŽç®€å•的项目,而[method "
+"_unhandled_input]函数å¯èƒ½æ˜¯é¦–选;当输入事件没有被其他节点(通常是GUI[Control]"
+"èŠ‚ç‚¹ï¼‰å¤„ç†æ—¶ï¼Œå®ƒè¢«è°ƒç”¨ï¼Œç¡®ä¿èŠ‚ç‚¹åªæŽ¥æ”¶ä¸ºå®ƒå‡†å¤‡çš„äº‹ä»¶ã€‚\n"
+"为了跟踪场景的层次结构,特别在将场景实例化到其他场景时,å¯ä»¥ç”¨[member owner]"
+"属性为节点设置一个 \"所有者\"。这å¯ä»¥è·Ÿè¸ªè°å®žä¾‹åŒ–了什么。这在编写编辑器和工具"
+"æ—¶éžå¸¸æœ‰ç”¨ã€‚\n"
+"当一个节点被[method Object.free]或[method queue_free]释放时,它也将释放它的所"
+"有å­èŠ‚ç‚¹ã€‚\n"
+"[b]Groups:[/b] 节点å¯ä»¥è¢«æ·»åŠ åˆ°å¾ˆå¤šçš„ç»„ä¸­ï¼Œä»¥æ–¹ä¾¿ç®¡ç†ï¼Œä½ å¯ä»¥åˆ›å»ºæ¯”如\"敌人"
+"\" 或 \"坿”¶é›†ç‰©\" 这样的组,这å–决于你的游æˆã€‚å‚阅[method add_to_group], "
"[method is_in_group] å’Œ [method remove_from_group]。然åŽä½ å¯ä»¥æ£€ç´¢è¿™äº›ç»„中的"
-"所有节点,对它们进行迭代,甚至通过[SceneTree]上的方法调用组上的方法。\n"
-"[b]与节点è”网:[/b] 在连接到一个æœåŠ¡å™¨ï¼ˆæˆ–åˆ¶ä½œä¸€ä¸ªæœåŠ¡å™¨ï¼Œè§"
+"所有节点,对它们进行迭代,甚至通过[SceneTree]中的方法调用组内方法。\n"
+"[b]Networking with nodes:[/b] 在连接到æœåŠ¡å™¨ï¼ˆæˆ–åˆ¶ä½œæœåŠ¡å™¨ï¼Œå‚阅"
"[NetworkedMultiplayerENet])之åŽï¼Œå¯ä»¥ä½¿ç”¨å†…置的RPC(远程过程调用)系统在网络"
"上进行通信。通过调用[method rpc]的方法å,它将在本地和所有连接的对等体中被调"
"用(对等体=客户端和接å—连接的æœåŠ¡å™¨ï¼‰ã€‚ä¸ºäº†è¯†åˆ«å“ªä¸ªèŠ‚ç‚¹æ”¶åˆ°RPC调用,Godot将使"
-"用它的[NodePath]ï¼ˆç¡®ä¿æ‰€æœ‰å¯¹ç­‰ä½“上的节点å称是相åŒçš„)。å¦å¤–,请看一下高级网"
-"络a教程和相应的演示。"
+"用它的[NodePath]ï¼ˆç¡®ä¿æ‰€æœ‰å¯¹ç­‰ä½“上的节点å称相åŒï¼‰ã€‚å¦å¤–,请å‚阅高级网络教程"
+"和相应的演示。"
#: doc/classes/Node.xml:20
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/"
"scenes_and_nodes.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/step_by_step/"
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/"
"scenes_and_nodes.html"
#: doc/classes/Node.xml:21
-#, fuzzy
msgid "https://github.com/godotengine/godot-demo-projects/"
-msgstr "https://github.com/godotengine/tps-demo"
+msgstr "https://github.com/godotengine/godot-demo-projects/"
#: doc/classes/Node.xml:27
msgid ""
@@ -42303,8 +42414,8 @@ msgstr ""
"当节点 \"就绪 \"时被调用。å­èŠ‚ç‚¹çš„[method _ready]回调会首先被触å‘,而父节点会"
"åœ¨ä¹‹åŽæ”¶åˆ°å°±ç»ªé€šçŸ¥ã€‚\n"
"对应于[method Object._notification]中的[constant NOTIFICATION_READY]通知。也"
-"请å‚è§å˜é‡çš„[code]onready[/code]关键字。\n"
-"通常用于åˆå§‹åŒ–。对于更早的åˆå§‹åŒ–,å¯ä»¥ä½¿ç”¨[方法Object._init]。也请å‚è§[方法"
+"请å‚阅å˜é‡çš„[code]onready[/code]关键字。\n"
+"通常用于åˆå§‹åŒ–。对于更早的åˆå§‹åŒ–,å¯ä»¥ä½¿ç”¨[方法Object._init]。也请å‚阅[方法"
"_enter_tree]。\n"
"[b]注æ„:[/b] [method _ready] 对于æ¯ä¸ªèŠ‚ç‚¹åªèƒ½è°ƒç”¨ä¸€æ¬¡ã€‚在从场景树中删除一个"
"èŠ‚ç‚¹å¹¶å†æ¬¡æ·»åŠ åŽï¼Œ[code]_ready[/code]å°†ä¸ä¼šè¢«ç¬¬äºŒæ¬¡è°ƒç”¨ã€‚è¿™å¯ä»¥é€šè¿‡è¯·æ±‚冿¬¡è°ƒ"
@@ -42447,7 +42558,7 @@ msgid ""
msgstr ""
"将节点添加到一个组中。组是命å和组织节点å­é›†çš„辅助工具,例如 \"敌人 \"或 \"å¯"
"收集物\"。一个节点å¯ä»¥åœ¨ä»»ä½•æ•°é‡çš„组中。节点å¯ä»¥åœ¨ä»»ä½•时候被分é…到一个组中,"
-"但是在它们进入场景树(è§[method is_inside_tree])之å‰ä¸ä¼šè¢«æ·»åŠ ã€‚å‚è§æè¿°ä¸­çš„"
+"但是在它们进入场景树(è§[method is_inside_tree])之å‰ä¸ä¼šè¢«æ·»åŠ ã€‚å‚阅æè¿°ä¸­çš„"
"注释,以åŠ[SceneTree]中的组方法。\n"
"当把节点打包到[PackedScene]å¹¶ä¿å­˜åˆ°æ–‡ä»¶æ—¶ï¼Œä¼šä½¿ç”¨[code]persistent[/code]选"
"é¡¹ã€‚éžæŒä¹…化的组ä¸ä¼šè¢«å­˜å‚¨ã€‚"
@@ -42558,7 +42669,7 @@ msgstr ""
msgid ""
"Returns the peer ID of the network master for this node. See [method "
"set_network_master]."
-msgstr "返回此节点的网络主节点的对等 ID。å‚è§[method set _ network _ master]。"
+msgstr "返回此节点的网络主节点的对等 ID。å‚阅[method set _ network _ master]。"
#: doc/classes/Node.xml:223
msgid ""
@@ -42593,7 +42704,7 @@ msgstr ""
"(在场景树中)。如果路径ä¸å­˜åœ¨ï¼Œåˆ™è¿”回[code]null instance[/code],并记录错误。"
"å°è¯•访问返回值上的方法将导致“Attempt to call <method> on a null instanceâ€é”™"
"误。</method>\n"
-"[b]注æ„:[/b]获å–ç»å¯¹è·¯å¾„åªåœ¨èŠ‚ç‚¹åœ¨åœºæ™¯æ ‘ä¸­æ—¶ç”Ÿæ•ˆ(å‚è§[method "
+"[b]注æ„:[/b]获å–ç»å¯¹è·¯å¾„åªåœ¨èŠ‚ç‚¹åœ¨åœºæ™¯æ ‘ä¸­æ—¶ç”Ÿæ•ˆ(å‚阅[method "
"is_inside_tree])。\n"
"[b]示例:[/b]å‡è®¾ä½ å½“å‰çš„节点是Character,并且有一下树结构:\n"
"[codeblock]\n"
@@ -42671,7 +42782,7 @@ msgid ""
"Returns the absolute path of the current node. This only works if the "
"current node is inside the scene tree (see [method is_inside_tree])."
msgstr ""
-"返回当å‰èŠ‚ç‚¹çš„ç»å¯¹è·¯å¾„。这åªåœ¨å½“å‰èŠ‚ç‚¹åœ¨åœºæ™¯æ ‘ä¸­èµ·ä½œç”¨(å‚è§"
+"返回当å‰èŠ‚ç‚¹çš„ç»å¯¹è·¯å¾„。这åªåœ¨å½“å‰èŠ‚ç‚¹åœ¨åœºæ™¯æ ‘ä¸­èµ·ä½œç”¨(å‚阅"
"[is_inside_tree])。"
#: doc/classes/Node.xml:282
@@ -42690,7 +42801,7 @@ msgid ""
"processing unless the frames per second is changed via [member Engine."
"iterations_per_second]."
msgstr ""
-"返回从最åŽä¸€ä¸ªç‰©ç†ç»‘定帧开始ç»è¿‡çš„æ—¶é—´(å‚è§[method _physics_process])。这在物"
+"返回从最åŽä¸€ä¸ªç‰©ç†ç»‘定帧开始ç»è¿‡çš„æ—¶é—´(å‚阅[method _physics_process])。这在物"
"ç†å¤„ç†ä¸­æ€»æ˜¯ä¸€ä¸ªå¸¸é‡ï¼Œé™¤éžæ¯ç§’帧数通过[member Engine.iterations_per_second]被"
"改å˜ã€‚"
@@ -42764,7 +42875,7 @@ msgid ""
"Returns [code]true[/code] if this node is in the specified group. See notes "
"in the description, and the group methods in [SceneTree]."
msgstr ""
-"如果该节点在指定的组中,则返回[code]true[/code]。å‚è§æè¿°ä¸­çš„æ³¨é‡Šå’Œ"
+"如果该节点在指定的组中,则返回[code]true[/code]。å‚阅æè¿°ä¸­çš„æ³¨é‡Šå’Œ"
"[SceneTree]中的组方法。"
#: doc/classes/Node.xml:365
@@ -42783,7 +42894,7 @@ msgid ""
"Returns [code]true[/code] if physics processing is enabled (see [method "
"set_physics_process])."
msgstr ""
-"如果å¯ç”¨äº†ç‰©ç†å¤„ç†ï¼Œè¿”回[code]true[/code](å‚è§[method set_physics_process])。"
+"如果å¯ç”¨äº†ç‰©ç†å¤„ç†ï¼Œè¿”回[code]true[/code](å‚阅[method set_physics_process])。"
#: doc/classes/Node.xml:383
msgid ""
@@ -42797,21 +42908,21 @@ msgstr ""
msgid ""
"Returns [code]true[/code] if processing is enabled (see [method "
"set_process])."
-msgstr "如果开å¯äº†å¤„ç†ï¼Œè¿”回[code]true[/code](å‚è§[method set_process])。"
+msgstr "如果开å¯äº†å¤„ç†ï¼Œè¿”回[code]true[/code](å‚阅[method set_process])。"
#: doc/classes/Node.xml:395
msgid ""
"Returns [code]true[/code] if the node is processing input (see [method "
"set_process_input])."
msgstr ""
-"如果节点正在处ç†è¾“å…¥(å‚è§[set_process_input]),则返回[code]true[/code]。"
+"如果节点正在处ç†è¾“å…¥(å‚阅[set_process_input]),则返回[code]true[/code]。"
#: doc/classes/Node.xml:401
msgid ""
"Returns [code]true[/code] if internal processing is enabled (see [method "
"set_process_internal])."
msgstr ""
-"如果å¯ç”¨äº†å†…部处ç†ï¼Œè¿”回[code]true[/code](å‚è§[method "
+"如果å¯ç”¨äº†å†…部处ç†ï¼Œè¿”回[code]true[/code](å‚阅[method "
"set_process_internal])。"
#: doc/classes/Node.xml:407
@@ -42819,7 +42930,7 @@ msgid ""
"Returns [code]true[/code] if the node is processing unhandled input (see "
"[method set_process_unhandled_input])."
msgstr ""
-"å¦‚æžœèŠ‚ç‚¹æ­£åœ¨å¤„ç†æœªè¢«å¤„ç†çš„输入(å‚è§[方法set_process_unhandled_input]),则返回"
+"å¦‚æžœèŠ‚ç‚¹æ­£åœ¨å¤„ç†æœªè¢«å¤„ç†çš„输入(å‚阅[方法set_process_unhandled_input]),则返回"
"[code]true[/code]。"
#: doc/classes/Node.xml:413
@@ -42827,7 +42938,7 @@ msgid ""
"Returns [code]true[/code] if the node is processing unhandled key input (see "
"[method set_process_unhandled_key_input])."
msgstr ""
-"å¦‚æžœèŠ‚ç‚¹æ­£åœ¨å¤„ç†æœªè¢«å¤„ç†çš„键输入(å‚è§[方法set_process_unhandled_key_input]),"
+"å¦‚æžœèŠ‚ç‚¹æ­£åœ¨å¤„ç†æœªè¢«å¤„ç†çš„键输入(å‚阅[方法set_process_unhandled_key_input]),"
"则返回[code]true[/code]。"
#: doc/classes/Node.xml:421
@@ -42967,23 +43078,26 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
-msgstr "移除一个å­èŠ‚ç‚¹ã€‚è¯¥èŠ‚ç‚¹ä¸ä¼šè¢«åˆ é™¤ï¼Œå¿…须手动删除。"
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
+msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-"将一个节点从一个组中移除。å‚è§æè¿°ä¸­çš„æ³¨é‡Šï¼Œä»¥åŠ[SceneTree]中的组方法。"
+"将一个节点从一个组中移除。å‚阅æè¿°ä¸­çš„æ³¨é‡Šï¼Œä»¥åŠ[SceneTree]中的组方法。"
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr "用给定的节点替æ¢ä¸€ä¸ªåœºæ™¯ä¸­çš„节点。ç»è¿‡è¯¥èŠ‚ç‚¹ä¼ é€’çš„äº‹ä»¶è®¢é˜…å°†ä¼šä¸¢å¤±ã€‚"
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -42998,7 +43112,7 @@ msgstr ""
"节点调用,这æ„味ç€å¦‚果你想让æ¯ä¸ªå­èŠ‚ç‚¹ä¹Ÿè°ƒç”¨[code]_ready[/code],你需è¦ä¸ºå®ƒä»¬"
"请求readyï¼ˆåœ¨è¿™ç§æƒ…况下,[code]_ready[/code]的调用顺åºä¸Žæ­£å¸¸æƒ…况下相åŒï¼‰ã€‚"
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -43017,14 +43131,14 @@ msgstr ""
"为给定的[code]method[/code]å‘网络(和本地)上的对等体å‘é€è¿œç¨‹è¿‡ç¨‹è°ƒç”¨è¯·æ±‚,å¯"
"é€‰æ‹©å°†æ‰€æœ‰é™„åŠ å‚æ•°ä½œä¸ºå‚æ•°å‘é€ç»™RPC调用的方法。调用请求将åªè¢«å…·æœ‰ç›¸åŒ"
"[NodePath]的节点接收,包括完全相åŒçš„节点å称。行为å–决于给定方法的RPCé…置,è§"
-"[method rpc_config]。方法在默认情况下ä¸ä¼šæš´éœ²ç»™RPC。å‚è§[method rset]å’Œ"
+"[method rpc_config]。方法在默认情况下ä¸ä¼šæš´éœ²ç»™RPC。å‚阅[method rset]å’Œ"
"[method rset_config]的属性。返回一个空的[Variant]。\n"
"[b]注æ„:[/b]åªæœ‰åœ¨ä½ ä»Ž[SceneTree]收到[code]connected_to_server[/code]ä¿¡å·ä¹‹"
"åŽï¼Œä½ æ‰èƒ½å®‰å…¨åœ°åœ¨å®¢æˆ·ç«¯ä½¿ç”¨RPC。你还需è¦è·Ÿè¸ªè¿žæŽ¥çжæ€ï¼Œå¯ä»¥é€šè¿‡"
"[code]server_disconnected[/code]ç­‰[SceneTree]ä¿¡å·æˆ–者检查[code]SceneTree."
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]。"
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -43034,14 +43148,14 @@ msgid ""
"By default, methods are not exposed to networking (and RPCs). See also "
"[method rset] and [method rset_config] for properties."
msgstr ""
-"将指定的[code]方法[/code]çš„RPCæ¨¡å¼æ”¹ä¸ºæŒ‡å®šçš„[code]模å¼[/code]。å‚è§[enum "
+"将指定的[code]方法[/code]çš„RPCæ¨¡å¼æ”¹ä¸ºæŒ‡å®šçš„[code]模å¼[/code]。å‚阅[enum "
"MultiplayerAPI.RPCMode]。å¦ä¸€ç§æ–¹æ³•æ˜¯ç”¨ç›¸åº”çš„å…³é”®å­—æ¥æ³¨é‡Šæ–¹æ³•和属性"
"([code]remote[/code], [code]master[/code], [code]puppet[/code], "
"[code]remoteesync[/code], [code]masterync[/code], [code]puppetsync[/code])。"
-"é»˜è®¤æƒ…å†µä¸‹ï¼Œæ–¹æ³•ä¸æš´éœ²äºŽç½‘络(和RPC)。å‚è§[method rset]å’Œ[method "
+"é»˜è®¤æƒ…å†µä¸‹ï¼Œæ–¹æ³•ä¸æš´éœ²äºŽç½‘络(和RPC)。å‚阅[method rset]å’Œ[method "
"rset_config]的属性。"
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
@@ -43050,13 +43164,13 @@ msgstr ""
"å‘ç”±[code]peer_id[/code]确定的特定peerå‘é€ä¸€ä¸ª[method rpc](è§[method "
"NetworkedMultiplayerPeer.set_target_peer])。返回一个空的[Variant]。"
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr "使用一个ä¸å¯é çš„åè®®å‘é€ä¸€ä¸ª[method rpc]。返回一个空的[Variant]。"
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"using an unreliable protocol (see [method NetworkedMultiplayerPeer."
@@ -43066,7 +43180,7 @@ msgstr ""
"[code]peer_id[/code]标识的特定peerå‘é€ä¸€ä¸ª[method rpc]。返回一个空的"
"[Variant]。"
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -43074,10 +43188,10 @@ msgid ""
"applies to this method as well."
msgstr ""
"在其他对等体上远程改å˜ä¸€ä¸ªå±žæ€§çš„值(和本地)。行为å–决于给定属性的RPCé…置,è§"
-"[method rset_config]。关于方法的RPC,也请å‚è§[method rpc],大多数信æ¯ä¹Ÿé€‚用于"
+"[method rset_config]。关于方法的RPC,也请å‚阅[method rpc],大多数信æ¯ä¹Ÿé€‚用于"
"这个方法。"
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -43087,41 +43201,41 @@ msgid ""
"By default, properties are not exposed to networking (and RPCs). See also "
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-"将给定的[code]属性[/code]çš„RPCæ¨¡å¼æ”¹ä¸ºç»™å®šçš„[code]mode[/code]。å‚è§[enum "
+"将给定的[code]属性[/code]çš„RPCæ¨¡å¼æ”¹ä¸ºç»™å®šçš„[code]mode[/code]。å‚阅[enum "
"MultiplayerAPI.RPCMode]。å¦ä¸€ç§æ–¹æ³•是用相应的关键字([code]remote[/code], "
"[code]master[/code], [code]puppet[/code], [code]remoteesync[/code], "
"[code]masterync[/code], [code]puppetsync[/code]ï¼‰æ¥æ³¨é‡Šæ–¹æ³•和属性。默认情况"
-"下,属性ä¸ä¼šæš´éœ²ç»™ç½‘络(和RPC)。也请å‚è§[method rpc]å’Œ[method rpc_config]çš„"
+"下,属性ä¸ä¼šæš´éœ²ç»™ç½‘络(和RPC)。也请å‚阅[method rpc]å’Œ[method rpc_config]çš„"
"方法。"
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-"远程改å˜å±žæ€§çš„值在一个指定的peer上[code]peer_id[/code](å‚è§[method "
+"远程改å˜å±žæ€§çš„值在一个指定的peer上[code]peer_id[/code](å‚阅[method "
"networkkedmultiplayerpeer .set_target_peer])。"
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr "使用ä¸å¯é çš„å议远程更改其他对等点(和本地)上的属性值。"
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-"使用ä¸å¯é çš„åè®®(å‚è§[method networkkedmultiplayerpeer .set_target_peer])远程"
+"使用ä¸å¯é çš„åè®®(å‚阅[method networkkedmultiplayerpeer .set_target_peer])远程"
"更改指定对等体[code]peer_id[/code]上的属性值。"
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr "设置场景dock中节点的折å çжæ€ã€‚"
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -43136,7 +43250,7 @@ msgstr ""
"[code]recursive[/code],则递归地将给定的对等节点设置为该节点所有å­èŠ‚ç‚¹çš„ä¸»èŠ‚"
"点。"
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -43152,7 +43266,7 @@ msgstr ""
"将被调用)。如果[method _physics_process]被é‡å†™ï¼Œåˆ™è‡ªåЍå¯ç”¨ã€‚在[method "
"_ready]之å‰å¯¹å®ƒçš„任何调用都将被忽略。"
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
#, fuzzy
msgid ""
"Enables or disables internal physics for this node. Internal physics "
@@ -43172,7 +43286,7 @@ msgstr ""
"_physics_process]回调将被调用)。如果[method _physics_process]被é‡å†™ï¼Œåˆ™è‡ªåЍ"
"å¯ç”¨ã€‚在[method _ready]之å‰å¯¹å®ƒçš„任何调用都将被忽略。"
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -43185,7 +43299,7 @@ msgstr ""
"[method _process]被é‡å†™ï¼Œåˆ™è‡ªåЍå¯ç”¨ã€‚在 [method _ready] 之å‰å¯¹å®ƒçš„任何调用都"
"将被忽略。"
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
@@ -43194,7 +43308,7 @@ msgstr ""
"å¯ç”¨æˆ–ç¦ç”¨è¾“入处ç†ã€‚对于GUI控件æ¥è¯´ï¼Œè¿™ä¸æ˜¯å¿…需的。如果[method _input]被é‡"
"写,则自动å¯ç”¨ã€‚任何在[method _ready]之å‰å¯¹å®ƒçš„调用都将被忽略。"
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
#, fuzzy
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
@@ -43212,7 +43326,7 @@ msgstr ""
"本ç¦ç”¨ï¼ˆ[method set_process]),其内部处ç†ä»ä¼šè¿›è¡Œã€‚åªå¯¹é«˜çº§ç”¨é€”有用,å¯ä»¥æ“"
"纵内置节点的行为。"
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -43223,7 +43337,7 @@ msgstr ""
"处ç†çš„输入(通常是由[控制]处ç†çš„)。如果[method _unhandled_input]被é‡è½½ï¼Œåˆ™è‡ª"
"动å¯ç”¨ã€‚在[method _ready]之å‰å¯¹å®ƒçš„任何调用都将被忽略。"
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
@@ -43232,12 +43346,12 @@ msgstr ""
"å¯ç”¨æœªå¤„ç†çš„æŒ‰é”®è¾“入处ç†ã€‚如果[method _unhandled_key_input]被é‡å†™ï¼Œåˆ™è‡ªåЍå¯"
"用。任何在[method _ready]之å‰å¯¹å®ƒçš„调用都将被忽略。"
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
-msgstr "è®¾ç½®è¿™æ˜¯å¦æ˜¯ä¸€ä¸ªå®žä¾‹åŠ è½½å ä½ç¬¦ã€‚å‚è§[InstancePlaceholder]。"
+msgstr "è®¾ç½®è¿™æ˜¯å¦æ˜¯ä¸€ä¸ªå®žä¾‹åŠ è½½å ä½ç¬¦ã€‚å‚阅[InstancePlaceholder]。"
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
@@ -43246,7 +43360,7 @@ msgstr ""
"更新在Scene Dock中为这个节点显示的警告。\n"
"使用[method _get_configuration_warning]æ¥è®¾ç½®è¦æ˜¾ç¤ºçš„警告信æ¯ã€‚"
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
@@ -43254,7 +43368,7 @@ msgstr ""
"对默认的[MultiplayerAPI]çš„é‡å†™ã€‚设置为[code]null[/code]å¯ä»¥ä½¿ç”¨é»˜è®¤çš„"
"[SceneTree]。"
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -43262,7 +43376,7 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
@@ -43270,7 +43384,7 @@ msgstr ""
"与该节点相关的[MultiplayerAPI]实例。è¦ä¹ˆæ˜¯[member custom_multiplayer],è¦ä¹ˆæ˜¯"
"默认的SceneTree(如果在树内)。"
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
#, fuzzy
msgid ""
"The name of the node. This name is unique among the siblings (other child "
@@ -43283,7 +43397,7 @@ msgstr ""
"节点的å称。这个å字在兄弟å§å¦¹ä¸­æ˜¯å”¯ä¸€çš„(æ¥è‡ªåŒä¸€ä¸ªçˆ¶èŠ‚ç‚¹çš„å…¶ä»–å­èŠ‚ç‚¹ï¼‰ã€‚å½“"
"设置为现有å称时,节点将被自动é‡å‘½å。"
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -43295,11 +43409,11 @@ msgstr ""
"追溯到的有效父节点ã€ç¥–父节点等)。(使用 [PackedScene])ä¿å­˜èŠ‚ç‚¹æ—¶ï¼Œæ‰€æœ‰å®ƒæ‹¥"
"有的节点也会éšä¹‹ä¿å­˜ã€‚由此å³å¯é€šè¿‡å®žä¾‹åŒ–å’Œå­å®žä¾‹åŒ–æ¥åˆ›å»ºå¤æ‚çš„ [SceneTree]。"
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr "æš‚åœæ¨¡å¼ã€‚这将决定[SceneTree]è¢«æš‚åœæ—¶èŠ‚ç‚¹çš„è¡Œä¸ºã€‚"
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -43311,23 +43425,23 @@ msgstr ""
"NOTIFICATION_PHYSICS_PROCESS] åŠå…¶å†…部对应物)的执行顺åºä¸­çš„优先级。进程优先"
"级值[i]较低[/i]的节点将首先执行其处ç†å›žè°ƒã€‚"
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr "当节点准备好时触å‘。"
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr "在é‡å‘½å节点时触å‘。"
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr "当节点进入树时触å‘。"
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr "在节点退出树之åŽè§¦å‘,并且ä¸å†å¤„于活动状æ€ã€‚"
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
@@ -43335,31 +43449,31 @@ msgstr ""
"当节点ä»å¤„于活动状æ€ä½†å³å°†é€€å‡ºæ ‘æ—¶å‘出。这是ååˆå§‹åŒ–的正确ä½ç½®(如果愿æ„,也å¯"
"ä»¥ç§°ä¸ºâ€œæžæž„函数â€)。"
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr "当节点进入[SceneTree]时收到该通知。"
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr "当节点å³å°†é€€å‡º[SceneTree]时收到该通知。"
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr "在父节点中移动节点时收到该通知。"
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
-msgstr "当节点就绪时接收到通知。请å‚è§[method _ ready]。"
+msgstr "当节点就绪时接收到通知。请å‚阅[method _ ready]。"
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr "æš‚åœèŠ‚ç‚¹æ—¶æŽ¥æ”¶åˆ°çš„é€šçŸ¥ã€‚"
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr "èŠ‚ç‚¹æš‚åœæ—¶æ”¶åˆ°è¯¥é€šçŸ¥ã€‚"
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
@@ -43367,13 +43481,13 @@ msgstr ""
"当 physics process flag 被设置时,æ¯ä¸€å¸§éƒ½ä¼šæ”¶åˆ°è¯¥é€šçŸ¥ï¼ˆè§[方法"
"set_physics_process])。"
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr "当 process flag 被设置时,æ¯ä¸€å¸§éƒ½æ”¶åˆ°é€šçŸ¥ï¼ˆè§[方法set_process])。"
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
@@ -43381,29 +43495,29 @@ msgstr ""
"当一个节点被设置为å¦ä¸€ä¸ªèŠ‚ç‚¹çš„å­èŠ‚ç‚¹æ—¶æ”¶åˆ°è¯¥é€šçŸ¥ã€‚\n"
"[b]注æ„:[/b]è¿™å¹¶ä¸æ„味ç€ä¸€ä¸ªèŠ‚ç‚¹è¿›å…¥äº†[SceneTree]。"
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr "当节点失去父节点时收到的通知(父节点将其从å­èŠ‚ç‚¹åˆ—è¡¨ä¸­åˆ é™¤)。"
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr "节点被实例化时收到的通知。"
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr "拖动开始时收到的通知。"
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr "æ‹–åŠ¨ç»“æŸæ—¶æ”¶åˆ°çš„通知。"
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr "当节点的[NodePath]æ”¹å˜æ—¶æ”¶åˆ°çš„通知。"
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
@@ -43411,7 +43525,7 @@ msgstr ""
"当 internal process flag 被设置时,æ¯ä¸€å¸§éƒ½æ”¶åˆ°é€šçŸ¥ï¼ˆè§[方法"
"set_process_internal])。"
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
@@ -43419,14 +43533,14 @@ msgstr ""
"当 internal physics process flag 被设置时,æ¯ä¸€å¸§éƒ½ä¼šæ”¶åˆ°é€šçŸ¥ï¼ˆè§[方法"
"set_physics_process_internal])。"
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
@@ -43434,27 +43548,27 @@ msgstr ""
"ç»§æ‰¿èŠ‚ç‚¹çš„çˆ¶èŠ‚ç‚¹çš„æš‚åœæ¨¡å¼ã€‚对于根节点,它相当于[constant PAUSE_MODE_STOP]。"
"默认值。"
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr "当[SceneTree]è¢«æš‚åœæ—¶ï¼Œåœæ­¢ process。"
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr "ä¸ç®¡[SceneTree]的暂åœçжæ€å¦‚何,继续 process。"
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr "å¤åˆ¶è¯¥èŠ‚ç‚¹çš„ä¿¡å·ã€‚"
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr "å¤åˆ¶èŠ‚ç‚¹çš„ç»„ã€‚"
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr "å¤åˆ¶è¯¥èŠ‚ç‚¹çš„è„šæœ¬ã€‚"
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -43482,11 +43596,8 @@ msgstr ""
"点。还å¯ä»¥æŽ§åˆ¶èŠ‚ç‚¹çš„æ¸²æŸ“é¡ºåºã€‚"
#: doc/classes/Node2D.xml:11 doc/classes/Vector2.xml:16
-#, fuzzy
msgid "https://github.com/godotengine/godot-demo-projects/tree/master/2d"
-msgstr ""
-"https://github.com/godotengine/godot-demo-projects/tree/master/audio/"
-"generator"
+msgstr "https://github.com/godotengine/godot-demo-projects/tree/master/2d"
#: doc/classes/Node2D.xml:18
msgid "Multiplies the current scale by the [code]ratio[/code] vector."
@@ -43689,9 +43800,8 @@ msgstr ""
#: doc/classes/NodePath.xml:26 doc/classes/PackedScene.xml:41
#: doc/classes/Panel.xml:10 doc/classes/PanelContainer.xml:10
#: doc/classes/TileMap.xml:16 doc/classes/TileSet.xml:16
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/520"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/520"
#: doc/classes/NodePath.xml:33
#, fuzzy
@@ -44010,28 +44120,26 @@ msgstr ""
"åªè¦é”®å­˜åœ¨ï¼Œ[code]in[/code]æ“作符就会评估为[code]true[/code],å³ä½¿å€¼ä¸º"
"[code]null[/code]。\n"
"对象也会收到通知。通知是一ç§ç®€å•çš„æ–¹å¼æ¥é€šçŸ¥å¯¹è±¡å…³äºŽä¸åŒçš„事件,所以它们å¯ä»¥"
-"一起被处ç†ã€‚å‚è§[method _notification]。\n"
+"一起被处ç†ã€‚å‚阅[method _notification]。\n"
"[b]注æ„:[/b] 与对[引用]的引用ä¸åŒï¼Œå¯¹å­˜å‚¨åœ¨å˜é‡ä¸­çš„对象的引用å¯ä»¥åœ¨æ²¡æœ‰è­¦å‘Š"
"的情况下å˜å¾—无效。因此,建议对数æ®ç±»ä½¿ç”¨[引用]è€Œä¸æ˜¯[对象]。"
#: doc/classes/Object.xml:24 doc/classes/Reference.xml:13
#: doc/classes/Resource.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/workflow/best_practices/"
"node_alternatives.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/workflow/"
-"best_practices/node_alternatives.html"
+"https://docs.godotengine.org/en/3.4/getting_started/workflow/best_practices/"
+"node_alternatives.html"
#: doc/classes/Object.xml:25
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
"gdscript_exports.html#advanced-exports"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/scripting/gdscript/"
-"gdscript_basics.html#dictionary"
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
+"gdscript_exports.html#advanced-exports"
#: doc/classes/Object.xml:32
msgid ""
@@ -44175,7 +44283,7 @@ msgid ""
"Returns [code]true[/code] if the object can translate strings. See [method "
"set_message_translation] and [method tr]."
msgstr ""
-"如果该对象å¯ä»¥ç¿»è¯‘字符串,则返回[code]true[/code]。å‚è§[method "
+"如果该对象å¯ä»¥ç¿»è¯‘字符串,则返回[code]true[/code]。å‚阅[method "
"set_message_translation]和[method tr]。"
#: doc/classes/Object.xml:128
@@ -44216,7 +44324,7 @@ msgstr ""
"将一个[code]signal[/code]连接到一个[code]target[/code]对象的[code]method[/"
"code]。将å¯é€‰çš„[code]binds[/code]作为一个[Array]çš„å‚æ•°ä¼ é€’ç»™è°ƒç”¨ã€‚è¿™äº›å‚æ•°å°†"
"在调用[method emit_signal]æ—¶ä½¿ç”¨çš„ä»»ä½•å‚æ•°ä¹‹åŽè¢«ä¼ é€’到方法中。使用"
-"[code]flags[/code]æ¥è®¾ç½®å»¶è¿Ÿæˆ–一次性连接。å‚è§[enum ConnectFlags]常é‡ã€‚\n"
+"[code]flags[/code]æ¥è®¾ç½®å»¶è¿Ÿæˆ–一次性连接。å‚阅[enum ConnectFlags]常é‡ã€‚\n"
"一个[code]signal[/code]åªèƒ½è¢«è¿žæŽ¥åˆ°ä¸€ä¸ª[code]method[/code]上一次。如果已ç»è¿ž"
"接了,它将抛出一个错误,除éžè¯¥ä¿¡å·æ˜¯ç”¨[constant CONNECT_REFERENCE_COUNTED]连"
"接的。为了é¿å…è¿™ç§æƒ…况,首先,使用[method is_connected]æ¥æ£€æŸ¥çŽ°æœ‰çš„è¿žæŽ¥ã€‚\n"
@@ -44681,7 +44789,7 @@ msgstr ""
#: doc/classes/OccluderPolygon2D.xml:27
msgid "Culling is disabled. See [member cull_mode]."
-msgstr "ç¦ç”¨å‰”除。å‚è§[member cull_mode]。"
+msgstr "ç¦ç”¨å‰”除。å‚阅[member cull_mode]。"
#: doc/classes/OccluderPolygon2D.xml:30
msgid ""
@@ -44692,7 +44800,7 @@ msgstr "按顺时针方å‘进行剔除。è§[member cull_mode]。"
msgid ""
"Culling is performed in the counterclockwise direction. See [member "
"cull_mode]."
-msgstr "按逆时针方å‘进行剔除。å‚è§[member cull_mode]。"
+msgstr "按逆时针方å‘进行剔除。å‚阅[member cull_mode]。"
#: doc/classes/OccluderShape.xml:4
msgid ""
@@ -44771,13 +44879,12 @@ msgstr ""
"åŠå¾„以外的地方。"
#: doc/classes/OmniLight.xml:23
-#, fuzzy
msgid "See [enum ShadowDetail]."
-msgstr "å‚è§[enum ShadowMode]。"
+msgstr "å‚阅[enum ShadowDetail]。"
#: doc/classes/OmniLight.xml:26
msgid "See [enum ShadowMode]."
-msgstr "å‚è§[enum ShadowMode]。"
+msgstr "å‚阅[enum ShadowMode]。"
#: doc/classes/OmniLight.xml:31
msgid ""
@@ -45002,34 +45109,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr "返回索引[code]idx[/code]处项目的文本。"
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr "返回所选项目的ID,如果没有选择项目,则返回[code]0[/code]。"
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr "获å–选定项的元数æ®ã€‚å¯ä»¥ä½¿ç”¨[method set_item_metadata]设置项的元数æ®ã€‚"
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr "如果索引[code]idx[/code]项被ç¦ç”¨ï¼Œè¿”回[code]true[/code]。"
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr "移除索引[code]idx[/code]处的项目。"
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr "按索引选择项并使其为当å‰é€‰ä¸­é¡¹ã€‚å³ä½¿è¯¥é¡¹æ˜¯ç¦ç”¨çš„,这也将起作用。"
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -45040,15 +45147,15 @@ msgstr ""
"ç¦ç”¨çš„项目在下拉列表中绘制的方å¼ä¸åŒï¼Œç”¨æˆ·æ— æ³•选择。如果当å‰é€‰å®šçš„项目被设置"
"为ç¦ç”¨ï¼Œå®ƒå°†ä¿æŒé€‰ä¸­çжæ€ã€‚"
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr "设置在索引[code]idx[/code]处项的图标。"
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr "设置在索引[code]idx[/code]处项的ID。"
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
@@ -45056,17 +45163,17 @@ msgstr ""
"设置项的元数æ®ã€‚元数æ®å¯ä»¥æ˜¯ä»»ä½•类型,å¯ä»¥ç”¨æ¥å­˜å‚¨å…³äºŽé¡¹ç›®çš„é¢å¤–ä¿¡æ¯ï¼Œæ¯”如外"
"部字符串ID。"
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr "在索引[code]idx[/code]处设置项的文本。"
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr "当å‰é€‰å®šé¡¹çš„索引,如果没有选定项,则为[code]-1[/code]。"
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
#, fuzzy
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
@@ -45076,26 +45183,26 @@ msgstr ""
"当用户使用[code]ui_up[/code]或[code]ui_down[/code]æ“作导航到一个项目时触å‘。"
"æ‰€é€‰é¡¹ç›®çš„ç´¢å¼•ä½œä¸ºå‚æ•°ä¼ é€’。"
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr "当用户更改当å‰é¡¹æ—¶è§¦å‘ã€‚æ‰€é€‰é¡¹ç›®çš„ç´¢å¼•ä½œä¸ºå‚æ•°ä¼ é€’。"
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr "è¦ç»˜åˆ¶åœ¨æŒ‰é’®å³ä¾§çš„箭头图标。"
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr "箭头图标和按钮的å³è¾¹ç¼˜ä¹‹é—´çš„æ°´å¹³ç©ºé—´ã€‚"
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr "当[OptionButton]被ç¦ç”¨æ—¶ä½¿ç”¨çš„[StyleBox]。"
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
@@ -45104,39 +45211,39 @@ msgstr ""
"当[OptionButton]被èšç„¦æ—¶ä½¿ç”¨çš„[StyleBox]。它显示在当å‰çš„[StyleBox]上,所以使"
"用[StyleBoxEmpty]å°†åªæ˜¯ç¦ç”¨ç„¦ç‚¹çš„视觉效果。"
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr "[OptionButton]的文本的[Font]。"
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr "[OptionButton]的默认文本[Color]。"
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr "当[OptionButton]被ç¦ç”¨æ—¶ä½¿ç”¨çš„æ–‡æœ¬[Color]。"
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr "当鼠标悬åœ[OptionButton]时使用的文本[Color]。"
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr "当[OptionButton]被按下时使用的文本[Color]。"
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr "当[OptionButton]è¢«é¼ æ ‡æ‚¬åœæ—¶ä½¿ç”¨çš„[StyleBox]。"
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr "[OptionButton]图标与文本之间的水平间è·ã€‚"
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr "[OptionButton]的默认[StyleBox]。"
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr "当按下[OptionButton]时使用的[StyleBox]。"
@@ -45638,7 +45745,7 @@ msgid ""
msgstr ""
"以字符串的形å¼è¿”回给定的键ç (例如:返回值:[code]\"Escape\"[/code], "
"[code]\"Shift+Escape\"[/code])。\n"
-"å‚è§[member InputEventKey]。[method InputEventKey."
+"å‚阅[member InputEventKey]。[method InputEventKey."
"get_keycode_with_modifiers]。"
#: doc/classes/OS.xml:346
@@ -46639,12 +46746,11 @@ msgstr ""
#: doc/classes/OS.xml:1097
msgid "Landscape screen orientation."
-msgstr ""
+msgstr "横å‘å±å¹•æ–¹å‘。"
#: doc/classes/OS.xml:1100
-#, fuzzy
msgid "Portrait screen orientation."
-msgstr "ç­‰è·å®šå‘模å¼ã€‚"
+msgstr "纵å‘å±å¹•æ–¹å‘。"
#: doc/classes/OS.xml:1103
#, fuzzy
@@ -46701,25 +46807,24 @@ msgid "Ringtones directory path."
msgstr "铃声目录路径。"
#: doc/classes/OS.xml:1142
-#, fuzzy
msgid "Unknown powerstate."
-msgstr "未知节点。"
+msgstr "未知电æºçжæ€ã€‚"
#: doc/classes/OS.xml:1145
msgid "Unplugged, running on battery."
-msgstr ""
+msgstr "拔掉æ’头,用电池è¿è¡Œã€‚"
#: doc/classes/OS.xml:1148
msgid "Plugged in, no battery available."
-msgstr ""
+msgstr "æ’上电æºï¼Œæ²¡æœ‰ç”µæ± å¯ç”¨ã€‚"
#: doc/classes/OS.xml:1151
msgid "Plugged in, battery charging."
-msgstr ""
+msgstr "æ’上电æºï¼Œç”µæ± æ­£åœ¨å……电。"
#: doc/classes/OS.xml:1154
msgid "Plugged in, battery fully charged."
-msgstr ""
+msgstr "æ’上电æºï¼Œç”µæ± å……满电。"
#: doc/classes/PackedDataContainerRef.xml:4
msgid "Reference version of [PackedDataContainer]."
@@ -46777,7 +46882,7 @@ msgid ""
msgstr ""
"场景文件的一个简化接å£ã€‚æä¾›å¯¹å¯ä»¥åœ¨åœºæ™¯èµ„æºæœ¬èº«ä¸Šæ‰§è¡Œçš„æ“ä½œå’Œæ£€æŸ¥çš„è®¿é—®ã€‚\n"
"å¯ä»¥ç”¨æ¥å°†ä¸€ä¸ªèŠ‚ç‚¹ä¿å­˜åˆ°ä¸€ä¸ªæ–‡ä»¶ä¸­ã€‚当ä¿å­˜æ—¶ï¼Œè¯¥èŠ‚ç‚¹ä»¥åŠå®ƒæ‰€æ‹¥æœ‰çš„æ‰€æœ‰èŠ‚ç‚¹éƒ½"
-"会被ä¿å­˜ï¼ˆå‚è§[Node]中的属性[code]owner[/code])。\n"
+"会被ä¿å­˜ï¼ˆå‚阅[Node]中的属性[code]owner[/code])。\n"
"[b]注æ„:[/b] 节点ä¸éœ€è¦æ‹¥æœ‰è‡ªå·±ã€‚\n"
"[b]一个加载已ä¿å­˜åœºæ™¯çš„示例:[/b]\n"
"[codeblock]\n"
@@ -46838,7 +46943,7 @@ msgstr ""
msgid ""
"Pack will ignore any sub-nodes not owned by given node. See [member Node."
"owner]."
-msgstr "包将忽略ä¸å±žäºŽç»™å®šèŠ‚ç‚¹çš„ä»»ä½•å­èŠ‚ç‚¹ã€‚å‚è§[member Node.owner]。"
+msgstr "包将忽略ä¸å±žäºŽç»™å®šèŠ‚ç‚¹çš„ä»»ä½•å­èŠ‚ç‚¹ã€‚å‚阅[member Node.owner]。"
#: doc/classes/PackedScene.xml:73
msgid ""
@@ -47002,7 +47107,7 @@ msgstr "断开此对等体的连接,终止DTLS会è¯ã€‚"
#: doc/classes/PacketPeerDTLS.xml:32 doc/classes/StreamPeerSSL.xml:43
msgid "Returns the status of the connection. See [enum Status] for values."
-msgstr "返回连接的状æ€ã€‚有关值,请å‚è§[enum Status]。"
+msgstr "返回连接的状æ€ã€‚有关值,请å‚阅[enum Status]。"
#: doc/classes/PacketPeerDTLS.xml:38
msgid ""
@@ -47088,7 +47193,7 @@ msgstr ""
"际上是无连接的,因此此选项仅æ„å‘³ç€æ¥è‡ªä¸åŒåœ°å€çš„传入数æ®åŒ…将自动丢弃,并且传"
"出数æ®åŒ…始终å‘é€åˆ°è¿žæŽ¥çš„地å€ï¼ˆä¸å…许将æ¥è°ƒç”¨[method set_dest_address])。此方"
"法ä¸å‘远程对等方å‘é€ä»»ä½•æ•°æ®ï¼Œä¸ºæ­¤ï¼Œè¯·åƒå¾€å¸¸ä¸€æ ·ä½¿ç”¨[method PacketPeer."
-"put_var]或[method PacketPeer.put_packet]。å¦è¯·å‚è§[UDPServer]。\n"
+"put_var]或[method PacketPeer.put_packet]。å¦è¯·å‚阅[UDPServer]。\n"
"注æ„:连接到远程对等体无助于防止IPæ¬ºéª—ç­‰æ¶æ„æ”»å‡»ã€‚å¦‚æžœæ‚¨è§‰å¾—åº”ç”¨ç¨‹åºæ­£åœ¨ä¼ è¾“"
"æ•æ„Ÿä¿¡æ¯ï¼Œè¯·è€ƒè™‘使用SSL或DTLS等加密技术。"
@@ -47228,15 +47333,13 @@ msgstr ""
"点和容器。"
#: doc/classes/Panel.xml:11
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/516"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/516"
#: doc/classes/Panel.xml:12 doc/classes/Skeleton.xml:12
#: doc/classes/SkeletonIK.xml:29
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/523"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/523"
#: doc/classes/Panel.xml:20
msgid "The style of this [Panel]."
@@ -47415,12 +47518,11 @@ msgid ""
msgstr ""
#: doc/classes/Particles.xml:13
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/3d/vertex_animation/"
"controlling_thousands_of_fish.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/vertex_animation/"
+"https://docs.godotengine.org/en/3.4/tutorials/3d/vertex_animation/"
"controlling_thousands_of_fish.html"
#: doc/classes/Particles.xml:20
@@ -47606,7 +47708,7 @@ msgstr "è¿”å›žæŒ‡å®šå‚æ•°ä½¿ç”¨çš„[Texture2D]。"
msgid ""
"If [code]true[/code], enables the specified flag. See [enum Flags] for "
"options."
-msgstr "如果[code]true[/code],å¯ç”¨æŒ‡å®šçš„Flag。选项请å‚è§[enum Flags]。"
+msgstr "如果[code]true[/code],å¯ç”¨æŒ‡å®šçš„Flag。选项请å‚阅[enum Flags]。"
#: doc/classes/ParticlesMaterial.xml:55
msgid "Sets the specified [enum Parameter]."
@@ -47948,7 +48050,7 @@ msgid ""
"modulated by [member emission_color_texture]."
msgstr ""
"ç²’å­å°†åœ¨[member emission_point_texture]ä¸Šéšæœºé‡‡æ ·ç‚¹æ‰€å†³å®šçš„ä½ç½®å‘射。粒å­é¢œè‰²"
-"将由[æˆå‘˜emission_color_texture]调节。"
+"将由[member emission_color_texture]调节。"
#: doc/classes/ParticlesMaterial.xml:322
msgid ""
@@ -47958,7 +48060,7 @@ msgid ""
"be modulated by [member emission_color_texture]."
msgstr ""
"ç²’å­å°†åœ¨[member emission_point_texture]ä¸Šéšæœºé‡‡æ ·ç‚¹æ‰€å†³å®šçš„ä½ç½®å‘射。粒å­é€Ÿåº¦"
-"和旋转将基于[æˆå‘˜emission_normal_texture]进行设置。粒å­é¢œè‰²å°†ç”±[æˆå‘˜"
+"和旋转将基于[member emission_normal_texture]进行设置。粒å­é¢œè‰²å°†ç”±[member "
"emission_color_texture]调节。"
#: doc/classes/Path.xml:4
@@ -48000,7 +48102,7 @@ msgid ""
"of [PathFollow2D]). As such, the curve should usually start with a zero "
"vector ([code](0, 0)[/code])."
msgstr ""
-"å¯ä»¥è®©[PathFollow2D]å­èŠ‚ç‚¹æ²¿ç€[Curve2D]移动。有关用法的更多信æ¯ï¼Œè¯·å‚è§"
+"å¯ä»¥è®©[PathFollow2D]å­èŠ‚ç‚¹æ²¿ç€[Curve2D]移动。有关用法的更多信æ¯ï¼Œè¯·å‚阅"
"[PathFollow2D]。\n"
"[b]注:[/b]该路径被认为是相对于移动的节点([PathFollow2D]çš„å­èŠ‚ç‚¹)。因此,曲线"
"通常以零å‘é‡([code](0,0)[/code])开始。"
@@ -48119,7 +48221,7 @@ msgid ""
"rotation mode requires the [Path]'s [member Curve3D.up_vector_enabled] "
"property to be set to [code]true[/code]."
msgstr ""
-"使用[Curve3D]中的上å‘é‡ä¿¡æ¯æ¥åŠ å¼ºæ–¹å‘。这个旋转模å¼éœ€è¦[Path3D]çš„[æˆå‘˜"
+"使用[Curve3D]中的上å‘é‡ä¿¡æ¯æ¥åŠ å¼ºæ–¹å‘。这个旋转模å¼éœ€è¦[Path3D]çš„[member "
"Curve3D。Up_vector_enabled属性设置为[code]true[/code]。"
#: doc/classes/PathFollow2D.xml:4
@@ -48381,20 +48483,20 @@ msgstr "æ¯å¸§ç»˜åˆ¶3D对象的数é‡ã€‚"
msgid "Draw calls per frame."
msgstr "æ¯ä¸€å¸§çš„绘图调用。仅é™3D。"
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr "使用的视频内存的数é‡ï¼Œå³çº¹ç†å’Œé¡¶ç‚¹å†…存的总和。"
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr "使用的纹ç†å†…存的数é‡ã€‚"
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr "使用的顶点内存数é‡ã€‚"
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
#, fuzzy
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
@@ -48463,7 +48565,7 @@ msgid ""
"direct state of that body. See [method RigidBody2D._integrate_forces]."
msgstr ""
"æä¾›å¯¹[PhysicsServer2D]中的物ç†ä½“的直接访问,å…许安全地改å˜ç‰©ç†å±žæ€§ã€‚这个对象"
-"是通过刚性/字符体的直接状æ€å›žè°ƒä¼ é€’的,目的是为了改å˜è¯¥ä½“的直接状æ€ã€‚å‚è§"
+"是通过刚性/字符体的直接状æ€å›žè°ƒä¼ é€’的,目的是为了改å˜è¯¥ä½“的直接状æ€ã€‚å‚阅"
"[method RigidBody2D._integrate_forces]。"
#: doc/classes/Physics2DDirectBodyState.xml:11
@@ -48472,10 +48574,8 @@ msgstr ""
#: doc/classes/PhysicsDirectSpaceState.xml:11 doc/classes/RayCast.xml:14
#: doc/classes/RayCast2D.xml:14 doc/classes/World.xml:10
#: doc/classes/World2D.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/physics/ray-casting.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/physics/ray-casting.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/physics/ray-casting.html"
#: doc/classes/Physics2DDirectBodyState.xml:18 doc/classes/RigidBody2D.xml:30
msgid "Adds a constant directional force without affecting rotation."
@@ -48878,7 +48978,7 @@ msgstr "获å–区域分é…给的对象的实例ID。"
msgid ""
"Returns an area parameter value. See [enum AreaParameter] for a list of "
"available parameters."
-msgstr "è¿”å›žåŒºåŸŸå‚æ•°å€¼ã€‚有关å¯ç”¨å‚数的列表,请å‚è§[enum AreaParameter]。"
+msgstr "è¿”å›žåŒºåŸŸå‚æ•°å€¼ã€‚有关å¯ç”¨å‚数的列表,请å‚阅[enum AreaParameter]。"
#: doc/classes/Physics2DServer.xml:76 doc/classes/PhysicsServer.xml:63
msgid "Returns the [RID] of the nth shape of an area."
@@ -48943,7 +49043,7 @@ msgstr ""
msgid ""
"Sets the value for an area parameter. See [enum AreaParameter] for a list of "
"available parameters."
-msgstr "è®¾ç½®åŒºåŸŸå‚æ•°çš„值。有关å¯ç”¨å‚数的列表,请å‚è§[enum areparameter]。"
+msgstr "è®¾ç½®åŒºåŸŸå‚æ•°çš„值。有关å¯ç”¨å‚数的列表,请å‚阅[enum areparameter]。"
#: doc/classes/Physics2DServer.xml:183 doc/classes/PhysicsServer.xml:185
msgid ""
@@ -49036,7 +49136,7 @@ msgstr "返回body的[PhysicsDirectBodyState2D]。"
msgid ""
"Returns the maximum contacts that can be reported. See [method "
"body_set_max_contacts_reported]."
-msgstr "è¿”å›žå¯æŠ¥å‘Šçš„æœ€å¤§è”系数。å‚è§[method body_set_max_contacts_reported]。"
+msgstr "è¿”å›žå¯æŠ¥å‘Šçš„æœ€å¤§è”系数。å‚阅[method body_set_max_contacts_reported]。"
#: doc/classes/Physics2DServer.xml:365 doc/classes/PhysicsServer.xml:355
msgid "Returns the body mode."
@@ -49077,7 +49177,7 @@ msgid ""
"Returns whether a body uses a callback function to calculate its own physics "
"(see [method body_set_force_integration_callback])."
msgstr ""
-"返回一个body是å¦ä½¿ç”¨å›žè°ƒå‡½æ•°æ¥è®¡ç®—它自己的物ç†å€¼(å‚è§"
+"返回一个body是å¦ä½¿ç”¨å›žè°ƒå‡½æ•°æ¥è®¡ç®—它自己的物ç†å€¼(å‚阅"
"body_set_force_integration_callback方法)。"
#: doc/classes/Physics2DServer.xml:441
@@ -49145,7 +49245,7 @@ msgid ""
"Sets whether a body uses a callback function to calculate its own physics "
"(see [method body_set_force_integration_callback])."
msgstr ""
-"设置一个物体是å¦ä½¿ç”¨å›žè°ƒå‡½æ•°æ¥è®¡ç®—它自己的物ç†(å‚è§ [method "
+"设置一个物体是å¦ä½¿ç”¨å›žè°ƒå‡½æ•°æ¥è®¡ç®—它自己的物ç†(å‚阅 [method "
"body_set_force_integration_callback])。"
#: doc/classes/Physics2DServer.xml:525
@@ -49186,7 +49286,7 @@ msgstr "è®¾ç½®ç‰©ä½“å½¢çŠ¶çš„å˜æ¢çŸ©é˜µã€‚"
#: doc/classes/Physics2DServer.xml:579 doc/classes/PhysicsServer.xml:586
msgid "Assigns a space to the body (see [method space_create])."
-msgstr "给物体分é…一个空间(å‚è§[method space_create])。"
+msgstr "给物体分é…一个空间(å‚阅[method space_create])。"
#: doc/classes/Physics2DServer.xml:588
msgid ""
@@ -49226,7 +49326,7 @@ msgid ""
"Sets a damped spring joint parameter. See [enum DampedStringParam] for a "
"list of available parameters."
msgstr ""
-"è®¾ç½®ä¸€ä¸ªé˜»å°¼å¼¹ç°§å…³èŠ‚å‚æ•°ã€‚å‚è§[enum DampedSpringParam]获å–å¯ç”¨å‚数列表。"
+"è®¾ç½®ä¸€ä¸ªé˜»å°¼å¼¹ç°§å…³èŠ‚å‚æ•°ã€‚å‚阅[enum DampedSpringParam]获å–å¯ç”¨å‚数列表。"
#: doc/classes/Physics2DServer.xml:657
#, fuzzy
@@ -49243,7 +49343,7 @@ msgid ""
"Returns information about the current state of the 2D physics engine. See "
"[enum ProcessInfo] for a list of available states."
msgstr ""
-"返回关于2D物ç†å¼•擎当å‰çжæ€çš„ä¿¡æ¯ã€‚有关å¯ç”¨çжæ€åˆ—表,请å‚è§[enum "
+"返回关于2D物ç†å¼•擎当å‰çжæ€çš„ä¿¡æ¯ã€‚有关å¯ç”¨çжæ€åˆ—表,请å‚阅[enum "
"ProcessInfo]。"
#: doc/classes/Physics2DServer.xml:675
@@ -49264,7 +49364,7 @@ msgstr "返回一个关节的类型(è§[enum JointType])。"
msgid ""
"Sets a joint parameter. See [enum JointParam] for a list of available "
"parameters."
-msgstr "è®¾ç½®å…³èŠ‚å‚æ•°ã€‚有关å¯ç”¨å‚数的列表,请å‚è§[enum JointParam]。"
+msgstr "è®¾ç½®å…³èŠ‚å‚æ•°ã€‚有关å¯ç”¨å‚数的列表,请å‚阅[enum JointParam]。"
#: doc/classes/Physics2DServer.xml:713
msgid ""
@@ -49292,7 +49392,7 @@ msgstr "返回形状数æ®ã€‚"
#: doc/classes/Physics2DServer.xml:756
msgid "Returns a shape's type (see [enum ShapeType])."
-msgstr "返回一个形状的类型(å‚è§[enum ShapeType])。"
+msgstr "返回一个形状的类型(å‚阅[enum ShapeType])。"
#: doc/classes/Physics2DServer.xml:764 doc/classes/PhysicsServer.xml:874
msgid ""
@@ -49339,7 +49439,7 @@ msgstr "将空间标记为活动空间。它ä¸ä¼šæœ‰æ•ˆæžœï¼Œé™¤éžå®ƒè¢«åˆ†é…
msgid ""
"Sets the value for a space parameter. See [enum SpaceParameter] for a list "
"of available parameters."
-msgstr "è®¾ç½®ç©ºé—´å‚æ•°çš„值。å‚è§[enum SpaceParameter]获å–å¯ç”¨å‚数列表。"
+msgstr "è®¾ç½®ç©ºé—´å‚æ•°çš„值。å‚阅[enum SpaceParameter]获å–å¯ç”¨å‚数列表。"
#: doc/classes/Physics2DServer.xml:815 doc/classes/PhysicsServer.xml:1278
msgid ""
@@ -49707,7 +49807,7 @@ msgid ""
"This class contains the shape and other parameters for 2D intersection/"
"collision queries."
msgstr ""
-"这个类包å«äºŒç»´äº¤é›†/ç¢°æ’žæŸ¥è¯¢çš„å½¢çŠ¶å’Œå…¶ä»–å‚æ•°ã€‚å‚è§"
+"这个类包å«äºŒç»´äº¤é›†/ç¢°æ’žæŸ¥è¯¢çš„å½¢çŠ¶å’Œå…¶ä»–å‚æ•°ã€‚å‚阅"
"[PhysicsShapeQueryResult2D]。"
#: doc/classes/Physics2DShapeQueryParameters.xml:16
@@ -49825,7 +49925,7 @@ msgid ""
"direct state of that body. See [method RigidBody._integrate_forces]."
msgstr ""
"æä¾›å¯¹[PhysicsServer2D]中的物ç†ä½“的直接访问,å…许安全地改å˜ç‰©ç†å±žæ€§ã€‚这个对象"
-"是通过刚性/字符体的直接状æ€å›žè°ƒä¼ é€’的,目的是为了改å˜è¯¥ä½“的直接状æ€ã€‚å‚è§"
+"是通过刚性/字符体的直接状æ€å›žè°ƒä¼ é€’的,目的是为了改å˜è¯¥ä½“的直接状æ€ã€‚å‚阅"
"[method RigidBody2D._integrate_forces]。"
#: doc/classes/PhysicsDirectBodyState.xml:18
@@ -50067,9 +50167,8 @@ msgstr ""
"æ’入节点树。"
#: doc/classes/PhysicsServer.xml:40
-#, fuzzy
msgid "Creates an [Area]."
-msgstr "创建一个[Area2D]区域。"
+msgstr "创建一个[Area]区域。"
#: doc/classes/PhysicsServer.xml:55
msgid ""
@@ -50179,7 +50278,7 @@ msgstr "如果设置了[code]enabled[/code],则设置å¯ä½¿ç”¨å…‰çº¿æ‹¾å–çš„ç
#: doc/classes/PhysicsServer.xml:595
msgid "Sets a body state (see [enum BodyState] constants)."
-msgstr "设置主体状æ€ï¼ˆè¯·å‚è§[enum BodyState]常é‡ï¼‰ã€‚"
+msgstr "设置主体状æ€ï¼ˆè¯·å‚阅[enum BodyState]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:608
#, fuzzy
@@ -50196,12 +50295,12 @@ msgstr ""
#: doc/classes/PhysicsServer.xml:616
msgid ""
"Gets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants)."
-msgstr "获å–åœ†é”¥ä½“æ‰­æ›²å…³èŠ‚å‚æ•°ï¼ˆè¯·å‚è§[enum ConeTwistJointParam]常é‡ï¼‰ã€‚"
+msgstr "获å–åœ†é”¥ä½“æ‰­æ›²å…³èŠ‚å‚æ•°ï¼ˆè¯·å‚阅[enum ConeTwistJointParam]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:625
msgid ""
"Sets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants)."
-msgstr "è®¾ç½®åœ†é”¥ä½“æ‰­æ›²å…³èŠ‚å‚æ•°ï¼ˆè¯·å‚è§[enum ConeTwistJointParam]常é‡ï¼‰ã€‚"
+msgstr "è®¾ç½®åœ†é”¥ä½“æ‰­æ›²å…³èŠ‚å‚æ•°ï¼ˆè¯·å‚阅[enum ConeTwistJointParam]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:632
#, fuzzy
@@ -50223,18 +50322,18 @@ msgid ""
"Gets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
"constants)."
msgstr ""
-"èŽ·å– generic_6_DOF_joint 傿•°ï¼ˆè¯·å‚è§[enum G6DOFJointAxisParam]常é‡ï¼‰ã€‚"
+"èŽ·å– generic_6_DOF_joint 傿•°ï¼ˆè¯·å‚阅[enum G6DOFJointAxisParam]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:660
msgid ""
"Sets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
-msgstr "设置generic_6_DOF_joint flag(请å‚è§[enum G6DOFJointAxisFlag]常é‡ï¼‰ã€‚"
+msgstr "设置generic_6_DOF_joint flag(请å‚阅[enum G6DOFJointAxisFlag]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:670
msgid ""
"Sets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
"constants)."
-msgstr "设置 generic_6_DOF_joint傿•°ï¼ˆè¯·å‚è§[enum G6DOFJointAxisParam]常é‡ï¼‰ã€‚"
+msgstr "设置 generic_6_DOF_joint傿•°ï¼ˆè¯·å‚阅[enum G6DOFJointAxisParam]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:677
msgid "Returns an Info defined by the [enum ProcessInfo] input given."
@@ -50246,40 +50345,35 @@ msgstr "获å–铰链关节标志(请å‚阅[enum HingeJointFlag]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:693
msgid "Gets a hinge_joint parameter (see [enum HingeJointParam])."
-msgstr "获å–é“°é“¾å…³èŠ‚å‚æ•°ï¼ˆè¯·å‚è§[enum HingeJointParam])。"
+msgstr "获å–é“°é“¾å…³èŠ‚å‚æ•°ï¼ˆè¯·å‚阅[enum HingeJointParam])。"
#: doc/classes/PhysicsServer.xml:702
msgid "Sets a hinge_joint flag (see [enum HingeJointFlag] constants)."
-msgstr "设置铰链关节标志(请å‚è§[enum HingeJointFlag]常é‡ï¼‰ã€‚"
+msgstr "设置铰链关节标志(请å‚阅[enum HingeJointFlag]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:711
msgid "Sets a hinge_joint parameter (see [enum HingeJointParam] constants)."
-msgstr "è®¾ç½®é“°é“¾å…³èŠ‚å‚æ•°ï¼ˆè¯·å‚è§[enum HingeJointParam]常é‡ï¼‰ã€‚"
+msgstr "è®¾ç½®é“°é“¾å…³èŠ‚å‚æ•°ï¼ˆè¯·å‚阅[enum HingeJointParam]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:721
-#, fuzzy
msgid "Creates a [ConeTwistJoint]."
-msgstr "创建一个[ConeTwistJoint3D]圆锥扭曲关节。"
+msgstr "创建一个[ConeTwistJoint]。"
#: doc/classes/PhysicsServer.xml:731
-#, fuzzy
msgid "Creates a [Generic6DOFJoint]."
-msgstr "创建一个 [Generic6DOFJoint3D]通用6å‘关节。"
+msgstr "创建一个 [Generic6DOFJoint]通用6å‘关节。"
#: doc/classes/PhysicsServer.xml:741
-#, fuzzy
msgid "Creates a [HingeJoint]."
-msgstr "创建一个 [HingeJoint3D]铰链关节。"
+msgstr "创建一个 [HingeJoint]关节。"
#: doc/classes/PhysicsServer.xml:751
-#, fuzzy
msgid "Creates a [PinJoint]."
-msgstr "创建一个 [PinJoint3D]图钉关节。"
+msgstr "创建一个 [PinJoint]图钉关节。"
#: doc/classes/PhysicsServer.xml:761
-#, fuzzy
msgid "Creates a [SliderJoint]."
-msgstr "创建一个 [SliderJoint3D]滑动关节。"
+msgstr "创建一个 [SliderJoint]关节。"
#: doc/classes/PhysicsServer.xml:768
#, fuzzy
@@ -50320,7 +50414,7 @@ msgstr "设置关节在关节物体B的局部空间中的ä½ç½®ã€‚"
#: doc/classes/PhysicsServer.xml:830
msgid "Sets a pin_joint parameter (see [enum PinJointParam] constants)."
-msgstr "设置pin_joint傿•°ï¼ˆè¯·å‚è§[enum PinJointParam]常é‡ï¼‰ã€‚"
+msgstr "设置pin_joint傿•°ï¼ˆè¯·å‚阅[enum PinJointParam]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:837
msgid "Activates or deactivates the 3D physics engine."
@@ -50348,7 +50442,7 @@ msgstr ""
#: doc/classes/PhysicsServer.xml:866
msgid "Returns the type of shape (see [enum ShapeType] constants)."
-msgstr "返回形状的类型(请å‚è§[enum ShapeType]常é‡ï¼‰ã€‚"
+msgstr "返回形状的类型(请å‚阅[enum ShapeType]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml:882 doc/classes/PhysicsServer.xml:891
msgid "Gets a slider_joint parameter (see [enum SliderJointParam] constants)."
@@ -50675,7 +50769,7 @@ msgid ""
"This class contains the shape and other parameters for 3D intersection/"
"collision queries."
msgstr ""
-"此类包å«ä¸‰ç»´ç›¸äº¤/ç¢°æ’žæŸ¥è¯¢çš„å½¢çŠ¶å’Œå…¶ä»–å‚æ•°ã€‚å¦è¯·å‚è§"
+"此类包å«ä¸‰ç»´ç›¸äº¤/ç¢°æ’žæŸ¥è¯¢çš„å½¢çŠ¶å’Œå…¶ä»–å‚æ•°ã€‚å¦è¯·å‚阅"
"[PhysicsShapeQueryResult3d]。"
#: doc/classes/PhysicsShapeQueryParameters.xml:16
@@ -50763,8 +50857,8 @@ msgid ""
"[code]c[/code], and the plane has a distance of [code]d[/code] from the "
"origin."
msgstr ""
-"æ ¹æ®å››ä¸ªå‚数创建一个平é¢ã€‚产生的平é¢çš„[æˆå‘˜æ³•线]çš„ä¸‰ä¸ªåˆ†é‡æ˜¯[code]a[/code],"
-"[code]b[/code]å’Œ[code]c[/code],并且平é¢ä¸ŽåŽŸç‚¹çš„è·ç¦»ä¸º[code]d[/code]。"
+"æ ¹æ®å››ä¸ªå‚数创建一个平é¢ã€‚产生的平é¢çš„[member 法线]çš„ä¸‰ä¸ªåˆ†é‡æ˜¯[code]a[/"
+"code],[code]b[/code]å’Œ[code]c[/code],并且平é¢ä¸ŽåŽŸç‚¹çš„è·ç¦»ä¸º[code]d[/code]。"
#: doc/classes/Plane.xml:29
msgid "Creates a plane from the three points, given in clockwise order."
@@ -50976,7 +51070,7 @@ msgstr ""
"å°çš„告示牌精çµ(例如点云)。\n"
"pointmesh,必须与具有点大å°çš„æè´¨ä¸€èµ·ä½¿ç”¨ã€‚点大å°å¯ä»¥é€šè¿‡[code]POINT_SIZE[/"
"code]在ç€è‰²å™¨ä¸­è®¿é—®ï¼Œæˆ–者通过设置[member BaseMaterial3D]在[BaseMaterial3D]中"
-"访问。和å˜é‡[æˆå‘˜BaseMaterial3D.point_size]。\n"
+"访问。和å˜é‡[member BaseMaterial3D.point_size]。\n"
"当使用pointmesh时,通常改å˜é¡¶ç‚¹çš„属性将被忽略,包括广告牌模å¼ã€å¢žé•¿å’Œå‰”除é¢ã€‚"
#: doc/classes/Polygon2D.xml:4
@@ -51476,9 +51570,8 @@ msgstr ""
#: doc/classes/PoolVector2Array.xml:11 doc/classes/TileMap.xml:15
#: doc/classes/TileSet.xml:15
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/519"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/519"
#: doc/classes/PoolVector2Array.xml:18
#, fuzzy
@@ -51550,7 +51643,7 @@ msgid ""
"behavior. All popup methods ensure correct placement within the viewport."
msgstr ""
"å¼¹å‡ºæ¡†æ˜¯ä¸€ä¸ªç”¨äºŽæ˜¾ç¤ºå¯¹è¯æ¡†å’Œå…¶ä»–弹出框的基类[Control].默认,它是一个å­çª—å£å’Œæ¨¡"
-"æ€(å‚è§[Control]),并且有自定义弹出动作的帮助程åº."
+"æ€(å‚阅[Control]),并且有自定义弹出动作的帮助程åº."
#: doc/classes/Popup.xml:16
msgid "Popup (show the control in modal form)."
@@ -51661,10 +51754,10 @@ msgstr ""
"添加一个新的带有[code]label[/code]æ–‡æœ¬çš„å¯æ£€æŸ¥é¡¹ç›®.\n"
"å¯ä»¥é€‰æ‹©æä¾›ä¸€ä¸ª[code]id[/code]以åŠä¸€ä¸ªå¿«æ·é”®([code]accel[/code])加速.如果没"
"有æä¾›[code]id[/code],将从索引中创建一个.如果没有æä¾›[code]accel[/code],那么"
-"将为其分é…默认的[code]0[/code].å‚è§ [method get_item_accelerator]了解更多关于"
+"将为其分é…默认的[code]0[/code].å‚阅 [method get_item_accelerator]了解更多关于"
"å¿«æ·é”®çš„ä¿¡æ¯.\n"
"[b]注æ„:[/b]坿£€æŸ¥é¡¹ç›®åªæ˜¯æ˜¾ç¤ºä¸€ä¸ªæ£€æŸ¥æ ‡è®°,但没有任何内置的检查行为,必须手动"
-"æ£€æŸ¥æˆ–å–æ¶ˆæ£€æŸ¥.å‚è§[method set_item_checked]了解更多关于如何控制它的信æ¯."
+"æ£€æŸ¥æˆ–å–æ¶ˆæ£€æŸ¥.å‚阅[method set_item_checked]了解更多关于如何控制它的信æ¯."
#: doc/classes/PopupMenu.xml:29
msgid ""
@@ -51681,7 +51774,7 @@ msgstr ""
"å¯ä»¥é€‰æ‹©æä¾›ä¸€ä¸ª[code]id[/code].如果没有æä¾›[code]id[/code],将从索引中创建一"
"个.\n"
"[b]注æ„:[/b]坿£€æŸ¥é¡¹ç›®åªæ˜¯æ˜¾ç¤ºä¸€ä¸ªæ£€æŸ¥æ ‡è®°,但没有任何内置的检查行为,必须手动"
-"æ£€æŸ¥æˆ–å–æ¶ˆæ£€æŸ¥. å‚è§ [method set_item_checked]了解更多关于如何控制它的信æ¯."
+"æ£€æŸ¥æˆ–å–æ¶ˆæ£€æŸ¥. å‚阅 [method set_item_checked]了解更多关于如何控制它的信æ¯."
#: doc/classes/PopupMenu.xml:41
msgid ""
@@ -51700,10 +51793,10 @@ msgstr ""
"code]。\n"
"å¯ä»¥é€‰æ‹©æä¾›ä¸€ä¸ª[code]id[/code],以åŠä¸€ä¸ªåŠ é€Ÿå™¨ï¼ˆ[code]accel[/code])。如果没"
"有æä¾›[code]id[/code],将从索引中创建一个。如果没有æä¾›[code]accel[/code],那"
-"么默认的[code]0[/code]将被分é…给它。å‚è§[method get_item_accelerator]èŽ·å–æ›´å¤š"
+"么默认的[code]0[/code]将被分é…给它。å‚阅[method get_item_accelerator]èŽ·å–æ›´å¤š"
"关于加速器的信æ¯ã€‚\n"
"[b]注æ„:[/b] å¯é€‰é¡¹ç›®åªæ˜¯æ˜¾ç¤ºä¸€ä¸ªå¤é€‰æ ‡è®°ï¼Œä½†æ²¡æœ‰ä»»ä½•内置的检查行为,必须手"
-"动检查/å–æ¶ˆæ£€æŸ¥ã€‚å‚è§[method set_item_checked]èŽ·å–æ›´å¤šå…³äºŽå¦‚何控制它的信æ¯ã€‚"
+"动检查/å–æ¶ˆæ£€æŸ¥ã€‚å‚阅[method set_item_checked]èŽ·å–æ›´å¤šå…³äºŽå¦‚何控制它的信æ¯ã€‚"
#: doc/classes/PopupMenu.xml:53
msgid ""
@@ -51721,7 +51814,7 @@ msgstr ""
"å¯ä»¥é€‰æ‹©æä¾›ä¸€ä¸ª[code]id[/code]。如果没有æä¾›[code]id[/code],将从索引中创建"
"一个。\n"
"[b]注æ„:[/b] å¯é€‰é¡¹ç›®åªæ˜¯æ˜¾ç¤ºä¸€ä¸ªå¤é€‰æ ‡è®°ï¼Œä½†æ²¡æœ‰ä»»ä½•内置的检查行为,必须手"
-"动检查/å–æ¶ˆæ£€æŸ¥ã€‚å‚è§[method set_item_checked]èŽ·å–æ›´å¤šå…³äºŽå¦‚何控制它的信æ¯ã€‚"
+"动检查/å–æ¶ˆæ£€æŸ¥ã€‚å‚阅[method set_item_checked]èŽ·å–æ›´å¤šå…³äºŽå¦‚何控制它的信æ¯ã€‚"
#: doc/classes/PopupMenu.xml:65
msgid ""
@@ -51735,7 +51828,7 @@ msgstr ""
"添加带有文本[code]lable[/code]和图标[code]texture[/code]的新项目。\n"
"å¯ä»¥é€‰æ‹©æä¾›ä¸€ä¸ª[code]id[/code],以åŠä¸€ä¸ªåŠ é€Ÿå™¨([code]accel[/code])。如果没有"
"æä¾›[code]id[/code],将从索引中创建一个。如果没有æä¾›[code]accel[/code],则将"
-"为其分é…默认的[code]0[/code]。有关加速器的更多信æ¯ï¼Œè¯·å‚è§[method "
+"为其分é…默认的[code]0[/code]。有关加速器的更多信æ¯ï¼Œè¯·å‚阅[method "
"get_item_accelerator]。"
#: doc/classes/PopupMenu.xml:76
@@ -51771,7 +51864,7 @@ msgstr ""
"添加一个带有文本[code]label[/code]的新项目。\n"
"å¯ä»¥é€‰æ‹©æä¾›[code]id[/code],以åŠåŠ é€Ÿå™¨([code]accel[/code])。如果没有æä¾›"
"[code]id[/code],将从索引中创建一个。如果没有æä¾›[code]accel[/code],则默认的"
-"[code]0[/code]将被分é…给它。有关加速器的更多信æ¯ï¼Œè¯·å‚è§[method "
+"[code]0[/code]将被分é…给它。有关加速器的更多信æ¯ï¼Œè¯·å‚阅[method "
"get_item_accelerator]。"
#: doc/classes/PopupMenu.xml:118
@@ -51793,7 +51886,7 @@ msgstr ""
"code]定义。\n"
"å¯ä»¥é€‰æ‹©æä¾›[code]id[/code],以åŠåŠ é€Ÿå™¨([code]accel[/code])。如果没有æä¾›"
"[code]id[/code],将从索引中创建一个。如果没有æä¾›[code]accel[/code],则默认的"
-"[code]0[/code]将被分é…给它。有关加速器的更多信æ¯ï¼Œè¯·å‚è§[方法"
+"[code]0[/code]将被分é…给它。有关加速器的更多信æ¯ï¼Œè¯·å‚阅[方法"
"get_item_accelerator]。"
#: doc/classes/PopupMenu.xml:129
@@ -51811,10 +51904,10 @@ msgstr ""
"添加一个带有文本[code]label[/code]çš„å•选按钮。\n"
"å¯ä»¥é€‰æ‹©æä¾›[code]id[/code],以åŠåŠ é€Ÿå™¨([code]accel[/code])。如果没有æä¾›"
"[code]id[/code],将从索引中创建一个。如果没有æä¾›[code]accel[/code],则默认的"
-"[code]0[/code]将被分é…给它。有关加速器的更多信æ¯ï¼Œè¯·å‚è§[method "
+"[code]0[/code]将被分é…给它。有关加速器的更多信æ¯ï¼Œè¯·å‚阅[method "
"get_item_accelerator]。\n"
"[b]注:[/b] Checkableé¡¹ç›®åªæ˜¯æ˜¾ç¤ºä¸€ä¸ªå¤é€‰æ ‡è®°ï¼Œä½†æ²¡æœ‰ä»»ä½•内置的检查行为,必须"
-"手动检查/䏿£€æŸ¥ã€‚有关如何控制它的更多信æ¯ï¼Œè¯·å‚è§[set_item_checked方法]。"
+"手动检查/䏿£€æŸ¥ã€‚有关如何控制它的更多信æ¯ï¼Œè¯·å‚阅[set_item_checked方法]。"
#: doc/classes/PopupMenu.xml:140
msgid ""
@@ -51831,7 +51924,7 @@ msgstr ""
"å¯ä»¥é€‰æ‹©æä¾›[code]id[/code]。如果没有æä¾›[code]id[/code],将从索引中创建一"
"个。\n"
"[b]注:[/b] Checkableé¡¹ç›®åªæ˜¯æ˜¾ç¤ºä¸€ä¸ªå¤é€‰æ ‡è®°ï¼Œä½†æ²¡æœ‰ä»»ä½•内置的检查行为,必须"
-"手动检查/䏿£€æŸ¥ã€‚有关如何控制它的更多信æ¯ï¼Œè¯·å‚è§[method set_item_checked]。"
+"手动检查/䏿£€æŸ¥ã€‚有关如何控制它的更多信æ¯ï¼Œè¯·å‚阅[method set_item_checked]。"
#: doc/classes/PopupMenu.xml:150
msgid ""
@@ -51840,6 +51933,9 @@ msgid ""
"A [code]label[/code] can optionally be provided, which will appear at the "
"center of the separator."
msgstr ""
+"在项目之间添加一个分隔符。分隔符也å ç”¨ä¸€ä¸ªç´¢å¼•,你å¯ä»¥é€šè¿‡ä½¿ç”¨[code]id[/code]"
+"傿•°æ¥è®¾ç½®ã€‚\n"
+"å¯ä»¥é€‰æ‹©æä¾›ä¸€ä¸ªæ ‡ç­¾[code]label[/code],它将出现在分隔符的中心。"
#: doc/classes/PopupMenu.xml:160
msgid ""
@@ -51869,11 +51965,10 @@ msgid "Removes all items from the [PopupMenu]."
msgstr "从[PopupMenu]中移除所有项目。"
#: doc/classes/PopupMenu.xml:183
-#, fuzzy
msgid ""
"Returns the index of the currently focused item. Returns [code]-1[/code] if "
"no item is focused."
-msgstr "当å‰é€‰å®šé¡¹çš„索引,如果没有选定项,则为[code]-1[/code]。"
+msgstr "返回当å‰ç„¦ç‚¹é¡¹ç›®çš„索引。如果没有焦点,则返回 [code]-1[/code]。"
#: doc/classes/PopupMenu.xml:190
msgid ""
@@ -51924,7 +52019,7 @@ msgid ""
"add_submenu_item] for more info on how to add a submenu."
msgstr ""
"返回在索引[code]idx[/code]处的项目的å­èœå•å。更多关于如何添加å­èœå•的信æ¯ï¼Œ"
-"请å‚è§[method add_submenu_item]。"
+"请å‚阅[method add_submenu_item]。"
#: doc/classes/PopupMenu.xml:252
msgid ""
@@ -51937,7 +52032,7 @@ msgstr "返回与指定索引 [code]idx[/code]å…³è”的工具æç¤ºã€‚"
msgid ""
"Returns [code]true[/code] if the popup will be hidden when the window loses "
"focus or not."
-msgstr "该字符串以指定字符串开头时,返回 [code]true[/code]。"
+msgstr "返回[code]true[/code],如果窗å£å¤±åŽ»ç„¦ç‚¹æ—¶ï¼Œå¼¹å‡ºçª—å£ä¼šè¢«éšè—。"
#: doc/classes/PopupMenu.xml:265
msgid ""
@@ -51965,7 +52060,7 @@ msgid ""
msgstr ""
"如果索引[code]idx[/code]项被ç¦ç”¨ï¼Œè¿”回[code]true[/code]。当它被ç¦ç”¨æ—¶ï¼Œå°±æ— æ³•"
"选择它,或者调用它的æ“作。\n"
-"有关如何ç¦ç”¨ä¸€ä¸ªé¡¹ç›®çš„æ›´å¤šä¿¡æ¯ï¼Œè¯·å‚è§[method set_item_disabled]。"
+"有关如何ç¦ç”¨ä¸€ä¸ªé¡¹ç›®çš„æ›´å¤šä¿¡æ¯ï¼Œè¯·å‚阅[method set_item_disabled]。"
#: doc/classes/PopupMenu.xml:288
msgid ""
@@ -51985,7 +52080,7 @@ msgid ""
"a separator."
msgstr ""
"如果项目是分隔符,则返回[code]true[/code]。如果是,它将显示为一行。有关如何添"
-"加分隔符的更多信æ¯ï¼Œè¯·å‚è§[method add_separator]。"
+"加分隔符的更多信æ¯ï¼Œè¯·å‚阅[method add_separator]。"
#: doc/classes/PopupMenu.xml:303
msgid "Returns [code]true[/code] if the specified item's shortcut is disabled."
@@ -52001,9 +52096,8 @@ msgstr ""
"[b]注:[/b]被移除项åŽçš„项的索引将被移ä½1。"
#: doc/classes/PopupMenu.xml:318
-#, fuzzy
msgid "Hides the [PopupMenu] when the window loses focus."
-msgstr "当节点失去焦点时å‘é€ã€‚"
+msgstr "当窗å£å¤±åŽ»ç„¦ç‚¹æ—¶éšè—[PopupMenu]。"
#: doc/classes/PopupMenu.xml:326
msgid ""
@@ -52056,9 +52150,8 @@ msgstr ""
"作。"
#: doc/classes/PopupMenu.xml:375
-#, fuzzy
msgid "Replaces the [Texture] icon of the specified [code]idx[/code]."
-msgstr "æ›¿æ¢æŒ‡å®š[code]idx[/code]çš„[Texture2D]图标。"
+msgstr "æ›¿æ¢æŒ‡å®š[code]idx[/code]的纹ç†[Texture]图标。"
#: doc/classes/PopupMenu.xml:383
msgid "Sets the [code]id[/code] of the item at index [code]idx[/code]."
@@ -52074,11 +52167,10 @@ msgstr ""
"获å–它,它æä¾›äº†ä¸€ç§å°†ä¸Šä¸‹æ–‡æ•°æ®åˆ†é…ç»™é¡¹çš„ç®€å•æ–¹æ³•。"
#: doc/classes/PopupMenu.xml:399
-#, fuzzy
msgid ""
"Sets the state of a multistate item. See [method add_multistate_item] for "
"details."
-msgstr "设置多状æ€é¡¹çš„状æ€ã€‚详情请å‚è§[method add_multistate_item]。"
+msgstr "设置一个多æ€é¡¹ç›®çš„状æ€ã€‚详è§[method add_multistate_item]。"
#: doc/classes/PopupMenu.xml:408
msgid "Sets a [ShortCut] for the specified item [code]idx[/code]."
@@ -52109,16 +52201,14 @@ msgid ""
msgstr "åˆ‡æ¢æŒ‡å®šç´¢å¼•[code]idx[/code]项的检查状æ€ã€‚"
#: doc/classes/PopupMenu.xml:454
-#, fuzzy
msgid ""
"Cycle to the next state of a multistate item. See [method "
"add_multistate_item] for details."
-msgstr "循环到多状æ€é¡¹çš„下一个状æ€ã€‚详情请å‚è§[method add_multistate_item]。"
+msgstr "循环到一个多æ€é¡¹ç›®çš„下一个状æ€ã€‚详è§[method add_multistate_item]。"
#: doc/classes/PopupMenu.xml:460
-#, fuzzy
msgid "If [code]true[/code], allows navigating [PopupMenu] with letter keys."
-msgstr "如果[code]true[/code],å…许使用字æ¯é”®å¯¼èˆª[PopupMenu]。"
+msgstr "如果为[code]true[/code],å…许用字æ¯é”®å¯¼èˆª[PopupMenu]。"
#: doc/classes/PopupMenu.xml:464
msgid ""
@@ -52165,9 +52255,8 @@ msgid ""
msgstr "当按下æŸä¸ª[code]index[/code]的项或激活其加速器时触å‘。"
#: doc/classes/PopupMenu.xml:500
-#, fuzzy
msgid "[Texture] icon for the checked checkbox items."
-msgstr "选中的å¤é€‰æ¡†é¡¹ç›®çš„[Texture2D]图标。"
+msgstr "选中的å¤é€‰æ¡†é¡¹ç›®çš„ [Texture] 图标。"
#: doc/classes/PopupMenu.xml:503
msgid "[Font] used for the menu items."
@@ -52184,7 +52273,7 @@ msgid ""
"on accelerators."
msgstr ""
"文本[Color]用于快æ·é”®å’ŒåŠ é€Ÿå™¨ï¼Œå½“å®šä¹‰æ—¶æ˜¾ç¤ºåœ¨èœå•项åç§°æ—边。有关加速器的更多"
-"ä¿¡æ¯ï¼Œè¯·å‚è§[method get_item_accelerator]。"
+"ä¿¡æ¯ï¼Œè¯·å‚阅[method get_item_accelerator]。"
#: doc/classes/PopupMenu.xml:512
msgid "[Color] used for disabled menu items' text."
@@ -52195,9 +52284,8 @@ msgid "[Color] used for the hovered text."
msgstr "ç”¨äºŽæ‚¬åœæ–‡æœ¬çš„[Color]。"
#: doc/classes/PopupMenu.xml:518
-#, fuzzy
msgid "[Color] used for labeled separators' text. See [method add_separator]."
-msgstr "用于分隔符的[StyleBox]。请å‚è§[方法add_separator]。"
+msgstr "用于标注分隔符文本的颜色[Color]。è§[method add_separator]。"
#: doc/classes/PopupMenu.xml:521
msgid "[StyleBox] displayed when the [PopupMenu] item is hovered."
@@ -52213,13 +52301,13 @@ msgstr "项目åç§°ä¸Žå¿«æ·æ–‡æœ¬/å­èœå•箭头之间的水平空间。"
msgid ""
"[StyleBox] for the left side of labeled separator. See [method "
"add_separator]."
-msgstr "用于标签分隔器的左侧[StyleBox](æ ·å¼ç›’å­).å‚è§ [method add_separator]."
+msgstr "用于标签分隔器的左侧[StyleBox](æ ·å¼ç›’å­).å‚阅 [method add_separator]."
#: doc/classes/PopupMenu.xml:530
msgid ""
"[StyleBox] for the right side of labeled separator. See [method "
"add_separator]."
-msgstr "用于标签分隔器的å³ä¾§[StyleBox](æ ·å¼ç›’å­).å‚è§ [method add_separator]."
+msgstr "用于标签分隔器的å³ä¾§[StyleBox](æ ·å¼ç›’å­).å‚阅 [method add_separator]."
#: doc/classes/PopupMenu.xml:533
msgid "Default [StyleBox] of the [PopupMenu] items."
@@ -52230,28 +52318,24 @@ msgid "[StyleBox] used when the [PopupMenu] item is disabled."
msgstr "ç¦ç”¨[PopupMenu](弹出èœå•)项时使用的[StyleBox](æ ·å¼ç›’å­)."
#: doc/classes/PopupMenu.xml:539
-#, fuzzy
msgid "[Texture] icon for the checked radio button items."
-msgstr "选中å•选按钮项目的[Texture2D]图标。"
+msgstr "选中的å•选按钮项目的纹ç†[Texture]图标。"
#: doc/classes/PopupMenu.xml:542
-#, fuzzy
msgid "[Texture] icon for the unchecked radio button items."
-msgstr "选中å•选按钮项目的[Texture2D]图标。"
+msgstr "未选中的å•选按钮项目的 [Texture] 图标。"
#: doc/classes/PopupMenu.xml:545
msgid "[StyleBox] used for the separators. See [method add_separator]."
-msgstr "用于分隔符的[StyleBox]。请å‚è§[方法add_separator]。"
+msgstr "用于分隔符的[StyleBox]。请å‚阅[方法add_separator]。"
#: doc/classes/PopupMenu.xml:548
-#, fuzzy
msgid "[Texture] icon for the submenu arrow."
-msgstr "å­èœå•箭头的[Texture2D]图标。"
+msgstr "å­èœå•箭头的纹ç†[Texture]图标。"
#: doc/classes/PopupMenu.xml:551
-#, fuzzy
msgid "[Texture] icon for the unchecked checkbox items."
-msgstr "未选中å¤é€‰æ¡†é¡¹ç›®çš„[Texture2D]图标。"
+msgstr "未选中的å¤é€‰æ¡†é¡¹ç›®çš„纹ç†[Texture]图标。"
#: doc/classes/PopupMenu.xml:554
msgid "The vertical space between each menu item."
@@ -52262,14 +52346,13 @@ msgid "Class for displaying popups with a panel background."
msgstr "ç”¨äºŽæ˜¾ç¤ºå¸¦æœ‰é¢æ¿èƒŒæ™¯çš„弹出窗å£çš„类。"
#: doc/classes/PopupPanel.xml:7
-#, fuzzy
msgid ""
"Class for displaying popups with a panel background. In some cases it might "
"be simpler to use than [Popup], since it provides a configurable background. "
"If you are making windows, better check [WindowDialog]."
msgstr ""
-"ç”¨äºŽæ˜¾ç¤ºå¸¦æœ‰é¢æ¿èƒŒæ™¯çš„弹出窗å£çš„类。在æŸäº›æƒ…况下,它å¯èƒ½æ¯”[PopupWindow]更容易"
-"使用,因为它æä¾›äº†ä¸€ä¸ªå¯é…置的背景。如果你正在制作窗å£ï¼Œæœ€å¥½é€‰æ‹©[Window]。"
+"ç”¨äºŽæ˜¾ç¤ºå…·æœ‰é¢æ¿èƒŒæ™¯çš„弹出窗å£çš„类。在æŸäº›æƒ…况下,它å¯èƒ½æ¯”[Popup]更容易使用,"
+"因为它æä¾›äº†ä¸€ä¸ªå¯é…置的背景。如果你正在制作窗å£ï¼Œæœ€å¥½æ˜¯æŸ¥çœ‹[WindowDialog]。"
#: doc/classes/PopupPanel.xml:17
msgid "The background panel style of this [PopupPanel]."
@@ -52277,7 +52360,7 @@ msgstr "这个[PopupPanel]çš„èƒŒæ™¯é¢æ¿æ ·å¼ã€‚"
#: doc/classes/Portal.xml:4
msgid "Portal nodes are used to enable visibility between [Room]s."
-msgstr ""
+msgstr "门户节点用于实现房间[Room]之间的å¯è§æ€§ã€‚"
#: doc/classes/Portal.xml:7
msgid ""
@@ -52361,19 +52444,18 @@ msgid "Generic 3D position hint for editing."
msgstr "用于编辑的通用三维ä½ç½®æç¤ºã€‚"
#: doc/classes/Position3D.xml:7
-#, fuzzy
msgid ""
"Generic 3D position hint for editing. It's just like a plain [Spatial], but "
"it displays as a cross in the 3D editor at all times."
msgstr ""
-"用于编辑的通用三维ä½ç½®æç¤ºã€‚它就åƒä¸€ä¸ªæ™®é€šçš„[Node3D],但它在3D编辑器中始终显"
-"示为å字。"
+"用于编辑的通用 3D ä½ç½®æç¤ºã€‚它就åƒä¸€ä¸ªæ™®é€šçš„ [Spatial],但它始终在 3D 编辑器"
+"中显示为一个å字。"
#: doc/classes/PrimitiveMesh.xml:4
msgid ""
"Base class for all primitive meshes. Handles applying a [Material] to a "
"primitive mesh."
-msgstr "所有基本网格的基类。将[Material]æè´¨åº”用于基本网格。"
+msgstr "所有原始网格的基类。处ç†å°†æè´¨[Material]应用到原始网格的问题。"
#: doc/classes/PrimitiveMesh.xml:7
msgid ""
@@ -52498,9 +52580,8 @@ msgid "Amount of energy contribution from the ground."
msgstr "æ¥è‡ªåœ°é¢çš„能é‡è´¡çŒ®é‡ã€‚"
#: doc/classes/ProceduralSky.xml:25
-#, fuzzy
msgid "Color of the ground at the horizon."
-msgstr "å‚考线的[Color]颜色。"
+msgstr "地平线上的地é¢é¢œè‰²ã€‚"
#: doc/classes/ProceduralSky.xml:28
msgid ""
@@ -52513,14 +52594,12 @@ msgid "Amount of energy contribution from the sky."
msgstr "æ¥è‡ªå¤©ç©ºçš„能é‡è´¡çŒ®é‡ã€‚"
#: doc/classes/ProceduralSky.xml:34
-#, fuzzy
msgid "Color of the sky at the horizon."
-msgstr "标题文字的颜色。"
+msgstr "地平线上天空的颜色。"
#: doc/classes/ProceduralSky.xml:37
-#, fuzzy
msgid "Color of the sky at the top."
-msgstr "标题文字的颜色。"
+msgstr "顶部天空的颜色。"
#: doc/classes/ProceduralSky.xml:40
msgid "Distance from center of sun where it fades out completely."
@@ -52532,9 +52611,8 @@ msgid "Distance from sun where it goes from solid to starting to fade."
msgstr "è·ç¦»å¤ªé˜³ä¸­å¿ƒçš„è·ç¦»ï¼Œåœ¨é‚£é‡Œå®ƒå®Œå…¨æ¶ˆå¤±ã€‚"
#: doc/classes/ProceduralSky.xml:46
-#, fuzzy
msgid "The sun's color."
-msgstr "线的颜色。"
+msgstr "太阳的颜色。"
#: doc/classes/ProceduralSky.xml:49
#, fuzzy
@@ -52550,7 +52628,7 @@ msgstr "æ¥è‡ªå¤©ç©ºçš„能é‡è´¡çŒ®é‡ã€‚"
#: doc/classes/ProceduralSky.xml:55
msgid "The sun's height using polar coordinates."
-msgstr ""
+msgstr "用æžå标计算太阳的高度。"
#: doc/classes/ProceduralSky.xml:58
#, fuzzy
@@ -52565,28 +52643,27 @@ msgstr ""
#: doc/classes/ProceduralSky.xml:66
msgid "Sky texture will be 256x128."
-msgstr ""
+msgstr "天空纹ç†å°†ä¸º 256x128。"
#: doc/classes/ProceduralSky.xml:69
msgid "Sky texture will be 512x256."
-msgstr ""
+msgstr "天空纹ç†å°†ä¸º 512x256。"
#: doc/classes/ProceduralSky.xml:72
msgid "Sky texture will be 1024x512. This is the default size."
-msgstr ""
+msgstr "天空纹ç†å°†ä¸º 1024x512。这是默认大å°ã€‚"
#: doc/classes/ProceduralSky.xml:75
msgid "Sky texture will be 2048x1024."
-msgstr ""
+msgstr "天空纹ç†å°†æ˜¯2048x1024。"
#: doc/classes/ProceduralSky.xml:78
msgid "Sky texture will be 4096x2048."
-msgstr ""
+msgstr "天空纹ç†å°†æ˜¯4096x2048。"
#: doc/classes/ProceduralSky.xml:81
-#, fuzzy
msgid "Represents the size of the [enum TextureSize] enum."
-msgstr "表示[enum TextureFilter]枚举的大å°ã€‚"
+msgstr "代表[enum TextureSize]枚举的大å°ã€‚"
#: doc/classes/ProgressBar.xml:4
msgid "General-purpose progress bar."
@@ -52686,8 +52763,8 @@ msgid ""
msgstr ""
"å‘属性添加自定义属性信æ¯ã€‚字典必须包å«:\n"
"-[code]name[/code]:[String](属性的åç§°)\n"
-"-[code]type[/code]: [int](å‚è§[enum Variant.Type])\n"
-"-å¯é€‰åœ°[code]hint[/code]: [int](å‚è§ [enum PropertyHint])å’Œ"
+"-[code]type[/code]: [int](å‚阅[enum Variant.Type])\n"
+"-å¯é€‰åœ°[code]hint[/code]: [int](å‚阅 [enum PropertyHint])å’Œ"
"[code]hint_string[/code]: [String]\n"
"[b]示例:[/b]\n"
"[codeblock]\n"
@@ -52899,7 +52976,7 @@ msgid ""
"for this to take effect."
msgstr ""
"该用户目录用于存储æŒä¹…æ•°æ®([code]user://[/code]文件系统)。如果留空,"
-"[code]user://[/code]将解æžä¸ºGodot自己的é…置文件夹中特定于项目的文件夹(请å‚è§"
+"[code]user://[/code]将解æžä¸ºGodot自己的é…置文件夹中特定于项目的文件夹(请å‚阅"
"[method OS.get_user_data_dir])。如果定义了自定义目录å,将使用该å称并将其附"
"加到系统特定的用户数æ®ç›®å½•(与[method OS.get_user_data_dir]中记录的Godoté…置文"
"件夹相åŒçš„父文件夹)。\n"
@@ -52942,6 +53019,18 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml:204
+msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
#, fuzzy
msgid ""
"Specifies a file to override project settings. For example: [code]user://"
@@ -52952,9 +53041,9 @@ msgid ""
msgstr ""
"æŒ‡å®šè¦æ›¿ä»£é¡¹ç›®è®¾ç½®çš„æ–‡ä»¶ã€‚例如:[code]user://custom_settings.cfg[/code]。\n"
"[b] 注æ„:[/b]无论此设置的值是多少,[code]res://override.cfg[/code]ä»å°†è¢«è¯»å–"
-"以覆盖项目设置(请å‚è§é¡¶éƒ¨çš„æ­¤ç±»è¯´æ˜Žï¼‰ã€‚"
+"以覆盖项目设置(请å‚阅顶部的此类说明)。"
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -52963,13 +53052,13 @@ msgid ""
"effect. If [code]false[/code], the project will save user data to [code](OS "
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-"如果[code]true[/code],项目将把用户数æ®ä¿å­˜åˆ°è‡ªå·±çš„用户目录中(请å‚è§[member "
+"如果[code]true[/code],项目将把用户数æ®ä¿å­˜åˆ°è‡ªå·±çš„用户目录中(请å‚阅[member "
"application/config/custom_user_dir_name])。此设置仅在桌é¢å¹³å°ä¸Šæœ‰æ•ˆã€‚必须在"
"[member application/config/custom_user_dir_name]设置中设置åç§°æ‰èƒ½ç”Ÿæ•ˆã€‚如果"
"[code]false[/code],项目将把用户数æ®ä¿å­˜åˆ°[code] (OS user data directory)/"
"Godot/app_userdata/(project name)[/code]。"
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
#, fuzzy
msgid ""
"Icon set in [code].ico[/code] format used on Windows to set the game's icon. "
@@ -52978,7 +53067,7 @@ msgstr ""
"设置[code].ico[/code]æ ¼å¼å›¾æ ‡ï¼Œåœ¨Windows上用于设置游æˆå›¾æ ‡ã€‚这是在å¯åŠ¨æ—¶é€šè¿‡"
"调用[method DisplayServer.set_native_icon]自动完æˆçš„。"
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -52992,14 +53081,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -53008,7 +53097,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -53016,7 +53105,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -53032,14 +53121,14 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
@@ -53047,7 +53136,7 @@ msgstr ""
"强制主循环中帧之间的延迟(以毫秒为å•ä½ï¼‰ã€‚如果您计划ç¦ç”¨åž‚ç›´åŒæ­¥ï¼Œè¿™å¯èƒ½å¾ˆæœ‰"
"用。"
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -53058,17 +53147,17 @@ msgstr ""
"觉上没有任何å˜åŒ–,å±å¹•ä¸ä¼šè¢«é‡ç»˜ã€‚这是为了编写应用程åºå’Œç¼–辑器,但在大多数游"
"æˆä¸­è¿™æ˜¯éžå¸¸æ— ç”¨çš„(å¹¶å¯èƒ½æŸå®³æ€§èƒ½)。"
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr "å¯ç”¨ä½Žå¤„ç†å™¨ä½¿ç”¨æ¨¡å¼æ—¶å¸§é—´çš„ç¡çœ é‡(以微秒计)。值越高,CPUå ç”¨çŽ‡è¶Šä½Žã€‚"
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr "项目è¿è¡Œæ—¶å°†åŠ è½½çš„ä¸»åœºæ™¯æ–‡ä»¶çš„è·¯å¾„ã€‚"
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
@@ -53077,13 +53166,13 @@ msgstr ""
"当声音在给定的时间内低于给定的dB阈值时,音频总线将自动关闭。这å¯ä»¥èŠ‚çœCPU,因"
"为分é…给该总线的效果将ä¸å†åšä»»ä½•处ç†ã€‚"
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr "项目中使用的默认[AudioBusLayout]èµ„æºæ–‡ä»¶ï¼Œé™¤éžè¢«åœºæ™¯è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
@@ -53092,7 +53181,7 @@ msgstr ""
"指定è¦ä½¿ç”¨çš„音频驱动程åºã€‚此设置å–决于平å°ï¼Œå› ä¸ºæ¯ä¸ªå¹³å°æ”¯æŒä¸åŒçš„音频驱动程"
"åºã€‚如果留空,将使用默认音频驱动程åºã€‚"
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
@@ -53100,21 +53189,24 @@ msgstr ""
"如果[code]true[/code],将å…许麦克风输入。这需è¦åœ¨å¯¼å‡ºåˆ°Android或iOS时设置适当"
"çš„æƒé™ã€‚"
-#: doc/classes/ProjectSettings.xml:267
-#, fuzzy
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
-msgstr "用于音频的混åˆé€ŸçŽ‡ã€‚ä¸€èˆ¬æ¥è¯´ï¼Œæœ€å¥½ä¸è¦ç¢°è¿™ä¸ªï¼Œè®©æ“作系统æ¥å¤„ç†ã€‚"
+msgstr ""
+"用于音频的混åˆçŽ‡ï¼ˆå•ä½ï¼šHz)。一般æ¥è¯´ï¼Œæœ€å¥½ä¸è¦ç¢°è¿™ä¸ªï¼ŒæŠŠå®ƒç•™ç»™ä¸»æœºæ“作系"
+"统。"
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
+"更安全地覆盖 Web å¹³å°ä¸­çš„ [member audio/mix_rate]。这里 [code]0 [/code] çš„æ„"
+"æ€æ˜¯\"让æµè§ˆå™¨é€‰æ‹©\"(因为有些æµè§ˆå™¨ä¸å–œæ¬¢å¼ºåˆ¶æ··åˆé€ŸçŽ‡ï¼‰ã€‚"
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
@@ -53123,7 +53215,7 @@ msgstr ""
"音频的输出延迟(毫秒)。较低的值将导致较低的音频延迟,但代价是CPU使用率增加。较"
"低的值å¯èƒ½ä¼šå¯¼è‡´è¾ƒæ…¢ç¡¬ä»¶ä¸Šçš„声音破裂。"
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
@@ -53131,14 +53223,14 @@ msgstr ""
"在网络平å°ä¸­æ›´å®‰å…¨åœ°è¦†ç›– [member audio/output_latency],以é¿å…音频问题,尤其"
"是在移动设备上。"
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
"播放视频时设置为硬编ç éŸ³é¢‘延迟。除éžä½ çŸ¥é“自己在åšä»€ä¹ˆï¼Œå¦åˆ™æœ€å¥½ä¸è¦åŠ¨å®ƒã€‚"
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -53151,7 +53243,7 @@ msgstr ""
"ä»¶å˜å°ã€‚解压缩速度大多ä¸å—压缩级别的影å“。[code]-1[/code]使用默认的gzip压缩级"
"别,该级别与[code]6[/code]相åŒï¼Œä½†ç”±äºŽåº•层zlib更新,未æ¥å¯èƒ½ä¼šå‘生å˜åŒ–。"
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -53164,7 +53256,7 @@ msgstr ""
"ä»¶å˜å°ã€‚解压缩速度大多ä¸å—压缩级别的影å“。[code]-1[/code]使用默认的gzip压缩级"
"别,该级别与[code]6[/code]相åŒï¼Œä½†ç”±äºŽåº•层zlib更新,未æ¥å¯èƒ½ä¼šå‘生å˜åŒ–。"
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -53173,7 +53265,7 @@ msgstr ""
"Zstandard的默认压缩级别。影å“压缩的场景和资æºã€‚较高的级别会以压缩速度为代价导"
"致文件å˜å°ã€‚解压缩速度大多ä¸å—压缩级别的影å“。"
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
@@ -53181,7 +53273,7 @@ msgstr ""
"在Zstandard中å¯ç”¨ [url=https://github.com/facebook/zstd/releases/tag/"
"v1.3.2]long-distance matching[/url] 。"
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
@@ -53190,7 +53282,7 @@ msgstr ""
"使用与Zstandard的长è·ç¦»åŒ¹é…进行压缩时,å…许的最大大å°é™åˆ¶(2的幂)。更高的值å¯"
"ä»¥äº§ç”Ÿæ›´å¥½çš„åŽ‹ç¼©ï¼Œä½†æ˜¯åœ¨åŽ‹ç¼©å’Œè§£åŽ‹ç¼©æ—¶éœ€è¦æ›´å¤šçš„内存。"
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -53201,28 +53293,28 @@ msgstr ""
"ä¸ªè®¾ç½®æ˜¯ä¸ºäº†åœ¨ç§»æ¤æ—§é¡¹ç›®(戈多2)时使用,因为使用æˆå‘˜å˜é‡æ˜¯ä»Žæˆˆå¤š3开始的首选风"
"格。"
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr "如果[code]true[/code],则当常é‡ç”¨ä½œå‡½æ•°æ—¶ä¼šå‘出警告。"
-#: doc/classes/ProjectSettings.xml:303
-#, fuzzy
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
-msgstr "如果[code]true[/code]ï¼Œåˆ™åœ¨ä½¿ç”¨ä¸æŽ¨è使用的关键字时å¯ç”¨è­¦å‘Šã€‚"
+msgstr ""
+"如果[code]true[/code],当使用已废弃的关键字如[code]slave[/code]时,å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-"如果[code]true[/code],则å¯ç”¨ç‰¹å®šçš„GDScript警告(请å‚è§[code]debug/gdscript/"
+"如果[code]true[/code],则å¯ç”¨ç‰¹å®šçš„GDScript警告(请å‚阅[code]debug/gdscript/"
"warnings/*[/code]设置)。如果[code]为false[/code],则ç¦ç”¨æ‰€æœ‰GDScript警告。"
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
@@ -53230,43 +53322,43 @@ msgstr ""
"如果[code]true[/code],则[code]res://addons[/code]文件夹中的脚本ä¸ä¼šç”Ÿæˆè­¦"
"告。"
-#: doc/classes/ProjectSettings.xml:312
-#, fuzzy
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
-msgstr "如果[code]true[/code],则在使用函数时å¯ç”¨è­¦å‘Šï¼Œå°±åƒå®ƒæ˜¯å±žæ€§ä¸€æ ·ã€‚"
+msgstr "如果为[code]true[/code],当函数被声明为与常é‡åŒå时,å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
+"如果为[code]true[/code], 当一个函数与一个å˜é‡åŒå声明时,å¯ç”¨è­¦å‘Šã€‚在未æ¥çš„版"
+"本中,当GDScript支æŒç¬¬ä¸€ç±»å‡½æ•°æ—¶ï¼Œè¿™å°†å˜æˆä¸€ä¸ªé”™è¯¯ã€‚"
-#: doc/classes/ProjectSettings.xml:318
-#, fuzzy
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-"如果[code]true[/code],则在将返回[code]void[/code]的函数的结果赋值给å˜é‡æ—¶å¯"
-"用警告。"
+"如果[code]为true[/code],则当分é…ç»™å˜é‡çš„函数å¯èƒ½äº§ç”Ÿå¹¶è¿”回函数状æ€è€Œä¸æ˜¯å€¼"
+"时,å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr "如果[code]true[/code],则在使用函数时å¯ç”¨è­¦å‘Šï¼Œå°±åƒå®ƒæ˜¯å±žæ€§ä¸€æ ·ã€‚"
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
"如果[code]true[/code],则当三元è¿ç®—符å¯èƒ½å‘出类型ä¸å…¼å®¹çš„值时,将å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
@@ -53274,7 +53366,7 @@ msgstr ""
"如果[code]为true[/code],则在用一个整数除以å¦ä¸€ä¸ªæ•´æ•°æ—¶å¯ç”¨è­¦å‘Š(å°æ•°éƒ¨åˆ†å°†è¢«"
"丢弃)。"
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
@@ -53283,13 +53375,13 @@ msgstr ""
"如果[code]为true[/code]ï¼Œåˆ™åœ¨å°†æµ®ç‚¹å€¼ä¼ é€’ç»™éœ€è¦æ•´æ•°çš„函数时å¯ç”¨è­¦å‘Š(它将被转"
"æ¢å¹¶å¤±åŽ»ç²¾åº¦)。"
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr "如果[code]true[/code],则在将属性当作函数使用时å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -53300,7 +53392,7 @@ msgstr ""
"傿•°)调用函数时å¯ç”¨è­¦å‘Šã€‚这样的返回值有时使用[enum Error] 枚举æ¥è¡¨ç¤ºå¯èƒ½çš„é”™"
"误。"
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
@@ -53309,7 +53401,7 @@ msgstr ""
"如果[code]true[/code],则在定义局部或å­ç±»æˆå‘˜å˜é‡æ—¶å¯ç”¨è­¦å‘Šï¼Œè¯¥å±€éƒ¨æˆ–å­ç±»æˆå‘˜"
"å˜é‡å°†åœ¨ä¸Šå±‚阴影å˜é‡(如æˆå‘˜å˜é‡)。"
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
@@ -53318,7 +53410,7 @@ msgstr ""
"如果[code]true[/code]ï¼Œåˆ™åœ¨è°ƒç”¨å¯¹å‘¨å›´ä»£ç æ²¡æœ‰å½±å“çš„è¡¨è¾¾å¼æ—¶å¯ç”¨è­¦å‘Šï¼Œä¾‹å¦‚å°†"
"[code]2 + 2[/code]写æˆè¯­å¥ã€‚"
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
@@ -53327,18 +53419,18 @@ msgstr ""
"如果[code]true[/code]ï¼Œåˆ™åœ¨è°ƒç”¨å¯¹å‘¨å›´ä»£ç æ²¡æœ‰å½±å“çš„ä¸‰å…ƒè¡¨è¾¾å¼æ—¶å¯ç”¨è­¦å‘Šï¼Œä¾‹å¦‚"
"å°†[code]42(如果激活else 0[/code])写入语å¥ã€‚"
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr "如果[code]true[/code],所有警告将被报告为错误。"
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr "如果[code]true[/code]ï¼Œåˆ™åœ¨ä½¿ç”¨ä»¥å‰æ²¡æœ‰èµ‹å€¼çš„å˜é‡æ—¶å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
@@ -53347,7 +53439,7 @@ msgstr ""
"如果[code]true[/code],则在使用赋值æ“作符[code]+=[/code](如果å˜é‡ä¹‹å‰æ²¡æœ‰èµ‹"
"值)为å˜é‡èµ‹å€¼æ—¶å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
@@ -53355,7 +53447,7 @@ msgstr ""
"如果[code]true[/code],则在检测到ä¸å¯è¾¾çš„ä»£ç æ—¶å¯ç”¨è­¦å‘Š(例如在始终执行的"
"[code]return[/code]语å¥ä¹‹åŽ)。"
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
@@ -53363,52 +53455,52 @@ msgstr ""
"如果[code]true[/code],则在使用类型å¯èƒ½ä¸ŽæœŸæœ›çš„å‡½æ•°å‚æ•°ä¸å…¼å®¹çš„è¡¨è¾¾å¼æ—¶å¯ç”¨è­¦"
"告。"
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr "如果[code]true[/code],则在执行ä¸å®‰å…¨çš„å¼ºåˆ¶è½¬æ¢æ—¶å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
"如果[code]true[/code],则在调用类中ä¸èƒ½ä¿è¯åœ¨ç¼–译时存在的方法时å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
"如果[code]true[/code],则在访问类中ä¸èƒ½ä¿è¯åœ¨ç¼–译时存在的属性时å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr "如果[code]true[/code]ï¼Œåˆ™åœ¨ä¿¡å·æœªä½¿ç”¨æ—¶å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr "如果[code]true[/code],则在局部å˜é‡æœªä½¿ç”¨æ—¶å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr "如果[code]true[/code]ï¼Œåˆ™åœ¨ä¿¡å·æœªä½¿ç”¨æ—¶å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr "如果[code]true[/code],则在局部å˜é‡æœªä½¿ç”¨æ—¶å¯ç”¨è­¦å‘Šã€‚"
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
@@ -53416,11 +53508,11 @@ msgstr ""
"如果[code]true[/code],则在将返回[code]void[/code]的函数的结果赋值给å˜é‡æ—¶å¯"
"用警告。"
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr "å½“å¼•æ“Žå´©æºƒæ—¶ï¼Œåœ¨å›žæº¯ä¹‹å‰æ˜¾ç¤ºçš„æ¶ˆæ¯ã€‚"
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
#, fuzzy
msgid ""
"Maximum number of frames per second allowed. The actual number of frames per "
@@ -53437,19 +53529,19 @@ msgstr ""
"因此,这个设置主è¦ç”¨äºŽå°†æœ€å¤§FPSé™ä½Žåˆ°åž‚ç›´åŒæ­¥ä»¥ä¸‹ï¼Œä¾‹å¦‚æ‰§è¡Œé™æ€å¸§çš„éžå®žæ—¶æ¸²"
"染,或在延迟æ¡ä»¶ä¸‹æµ‹è¯•项目。"
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr "调试GDScriptæ—¶å…许的最大调用堆栈。"
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr "åˆ†æžæ—¶æ¯ä¸ªå¸§å…许的最大函数数é‡ã€‚"
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr "æ¯ç§’钟打å°å¸§åˆ°æ ‡å‡†è¾“出。"
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
@@ -53458,60 +53550,60 @@ msgstr ""
"è¿è¡Œæ—¶æ‰“å°æ›´å¤šä¿¡æ¯åˆ°æ ‡å‡†è¾“出。它显示诸如内存泄æ¼ã€å“ªäº›åœºæ™¯å’Œèµ„æºæ­£åœ¨åŠ è½½ç­‰ä¿¡"
"æ¯ã€‚"
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr "最大的å¯è§†è„šæœ¬è°ƒç”¨å †æ ˆï¼Œä»¥é¿å…æ— é™é€’归。"
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr "碰撞形状之间接触点的颜色,在调试èœå•中å¯ç”¨â€œå¯è§ç¢°æ’žå½¢çŠ¶â€æ—¶å¯è§ã€‚"
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
#, fuzzy
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr "碰撞形状的颜色,当在调试èœå•中å¯ç”¨â€œå¯è§ç¢°æ’žå½¢çŠ¶â€æ—¶å¯è§ã€‚"
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr "当在调试èœå•中å¯ç”¨â€œå¯è§ç¢°æ’žå½¢çŠ¶â€æ—¶ï¼Œç¢°æ’žå½¢çŠ¶ä¹‹é—´æ˜¾ç¤ºçš„æœ€å¤§æŽ¥è§¦ç‚¹æ•°ã€‚"
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr "碰撞形状的颜色,当在调试èœå•中å¯ç”¨â€œå¯è§ç¢°æ’žå½¢çŠ¶â€æ—¶å¯è§ã€‚"
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr "被ç¦ç”¨çš„导航几何图形的颜色,在调试èœå•中å¯ç”¨â€œå¯è§å¯¼èˆªâ€æ—¶å¯è§ã€‚"
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr "导航几何图形的颜色,在调试èœå•中å¯ç”¨â€œå¯è§å¯¼èˆªâ€æ—¶å¯è§ã€‚"
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr "鼠标光标的自定义图åƒ(最大256×256)。"
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr "自定义鼠标光标图åƒçš„热点。"
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr "工具æç¤ºç›¸å¯¹äºŽé¼ æ ‡å…‰æ ‡çƒ­ç‚¹çš„ä½ç½®åç§»é‡ã€‚"
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
#, fuzzy
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
@@ -53521,7 +53613,7 @@ msgstr ""
"如果[code]true[/code],å…许在Windowså’ŒmacOS上显示HiDPI。这个设置对桌é¢Linux没"
"有影å“,因为dpi感知回退在那里ä¸å—支æŒã€‚"
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
@@ -53529,7 +53621,7 @@ msgstr ""
"如果[code]true[/code]ï¼Œåˆ™ä¿æŒå±å¹•打开(å³ä½¿åœ¨ä¸æ´»åŠ¨çš„æƒ…å†µä¸‹),因此å±å¹•ä¿æŠ¤ç¨‹åº"
"ä¸ä¼šæŽ¥ç®¡ã€‚适用于桌é¢å’Œç§»åЍ平å°ã€‚"
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -53538,7 +53630,7 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
@@ -53546,7 +53638,7 @@ msgstr ""
"如果[code]true[/code],主指示器将自动éšè—。这åªä¼šå½±å“没有物ç†home键的iOS设"
"备。"
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -53556,7 +53648,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -53564,19 +53656,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -53590,7 +53682,7 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
@@ -53599,26 +53691,26 @@ msgstr ""
"设置游æˆçš„主视å£é«˜åº¦ã€‚在桌é¢å¹³å°ä¸Šï¼Œè¿™æ˜¯é»˜è®¤çš„窗å£å¤§å°ã€‚当å¯ç”¨æ‹‰ä¼¸æ¨¡å¼è®¾ç½®"
"æ—¶ï¼Œä¹Ÿä½¿ç”¨æ­¤å‚æ•°ä½œä¸ºå‚考。"
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
#, fuzzy
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr "默认情况下å…许窗å£å¯è°ƒæ•´å¤§å°ã€‚"
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr "如果大于0,则在è¿è¡Œæ¸¸æˆæ—¶è¦†ç›–窗å£é«˜åº¦ã€‚用于测试拉伸模å¼ã€‚"
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr "如果大于0,则在è¿è¡Œæ¸¸æˆæ—¶è¦†ç›–窗å£å®½åº¦ã€‚用于测试拉伸模å¼ã€‚"
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
@@ -53627,13 +53719,13 @@ msgstr ""
"设置游æˆçš„主视窗宽度。在桌é¢å¹³å°ä¸Šï¼Œè¿™æ˜¯é»˜è®¤çš„窗å£å¤§å°ã€‚当å¯ç”¨æ‹‰ä¼¸æ¨¡å¼è®¾ç½®"
"æ—¶ï¼Œä¹Ÿä½¿ç”¨æ­¤å‚æ•°ä½œä¸ºå‚考。"
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr "指定è¦ä½¿ç”¨çš„å¹³æ¿é©±åŠ¨ç¨‹åºã€‚如果为空,将使用默认驱动程åºã€‚"
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -53645,7 +53737,7 @@ msgstr ""
"较高的输入延迟和较低的帧率为代价。如果[code]false[/code]ï¼Œåž‚ç›´åŒæ­¥å°†è¢«ç¦ç”¨ï¼Œ"
"然而,许多平å°ä»å°†æ‰§è¡Œå®ƒ(如手机平å°å’ŒHTML5)。"
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -53661,7 +53753,7 @@ msgstr ""
"[b]注:[/b]这个选项是实验性的,旨在缓解一些用户的å¡é¡¿ä½“验。然而,有些用户在使"
"ç”¨å®ƒæ—¶ä½“éªŒåˆ°åž‚ç›´åŒæ­¥å¸§çއå‡åŠ(例如从60 FPSé™è‡³30 FPS)。"
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -53677,7 +53769,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
#, fuzzy
msgid ""
"Search path for project-specific script templates. Godot will search for "
@@ -53687,7 +53779,7 @@ msgstr ""
"æœç´¢ç‰¹å®šäºŽé¡¹ç›®çš„脚本模æ¿è·¯å¾„。脚本模æ¿å°†åœ¨ç‰¹å®šäºŽç¼–辑器的路径和特定于项目的路"
"径中进行æœç´¢ã€‚"
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -53698,7 +53790,7 @@ msgstr ""
"[code]tscn[/code],如果你也想解æžä½ çš„场景文件,特别是如果你使用的是在场景文件"
"中åºåˆ—化的内置脚本。"
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
@@ -53706,7 +53798,7 @@ msgstr ""
"[member ScrollContainer.scroll_deadzone],它将用于所有[ScrollContainer]s,除"
"éžé‡å†™ã€‚"
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
#, fuzzy
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
@@ -53715,7 +53807,7 @@ msgstr ""
"如果[code]为true[/code],则切æ¢Windowså’ŒUWPå¯¹è¯æ¡†ä¸­çš„Cancelå’ŒOK按钮,以éµå¾ªç•Œ"
"é¢çº¦å®šã€‚"
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
@@ -53723,31 +53815,31 @@ msgstr ""
"用于项目的自定义[Theme]èµ„æºæ–‡ä»¶çš„路径([code]theme[/code]或通用[code]tres[/"
"code]/[code]res[/code]扩展å)。"
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr "自定义[Font]资æºçš„路径,用于项目的所有GUI元素的默认字体。"
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr "如果[code]true[/code],确ä¿ä½¿ç”¨çš„主题将在HiDPI下工作。"
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr "在[Tree], [ItemList]ç­‰æŽ§ä»¶ä¸­ä¸ºå¢žé‡æœç´¢è®¾ç½®è®¡æ—¶å™¨(以毫秒为å•ä½)。"
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr "检测[TextEdit]空闲的计时器(å•ä½ä¸ºç§’)。"
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr "工具æç¤ºçš„默认延迟(以秒为å•ä½)。"
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -53759,7 +53851,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -53770,7 +53862,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -53781,7 +53873,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -53795,7 +53887,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -53808,7 +53900,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -53821,7 +53913,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -53835,7 +53927,7 @@ msgstr ""
"[b]注æ„:[/b] 默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬å¯¹äºŽå‡ ä¸ª"
"[Control]的内部逻辑是必è¦çš„。然而,分é…给动作的事件å¯ä»¥è¢«ä¿®æ”¹ã€‚"
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -53846,7 +53938,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -53860,7 +53952,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -53874,7 +53966,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -53885,7 +53977,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -53897,7 +53989,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -53908,7 +54000,7 @@ msgstr ""
"[b]注æ„:[/b]默认的[code]ui_*[/code]动作ä¸èƒ½è¢«åˆ é™¤ï¼Œå› ä¸ºå®ƒä»¬æ˜¯å‡ ä¸ª[Control]çš„"
"内部逻辑所必需的。但是,å¯ä»¥ä¿®æ”¹åˆ†é…给该æ“作的事件。"
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -53920,464 +54012,464 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr "如果[code]true[/code]ï¼Œåˆ™åœ¨ç‚¹å‡»æˆ–æ»‘åŠ¨è§¦æ‘¸å±æ—¶å‘é€é¼ æ ‡è¾“入事件。"
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr "如果[code]true[/code],则在点击或拖动鼠标时å‘é€è§¦æ‘¸è¾“入事件。"
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
#, fuzzy
msgid "Default delay for touch events. This only affects iOS devices."
msgstr "工具æç¤ºçš„默认延迟(以秒为å•ä½)。"
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr "2D物ç†å±‚1çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr "2D物ç†å±‚10çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr "2D物ç†å±‚11çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr "2D物ç†å±‚12çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr "2D物ç†å±‚13çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr "2D物ç†å±‚14çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr "2D物ç†å±‚15çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr "2D物ç†å±‚16çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr "2D物ç†å±‚17çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr "2D物ç†å±‚18çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr "2D物ç†å±‚19çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr "2D物ç†å±‚20çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
#, fuzzy
msgid "Optional name for the 2D physics layer 21."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
#, fuzzy
msgid "Optional name for the 2D physics layer 22."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
#, fuzzy
msgid "Optional name for the 2D physics layer 23."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
#, fuzzy
msgid "Optional name for the 2D physics layer 24."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
#, fuzzy
msgid "Optional name for the 2D physics layer 25."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
#, fuzzy
msgid "Optional name for the 2D physics layer 26."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
#, fuzzy
msgid "Optional name for the 2D physics layer 27."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
#, fuzzy
msgid "Optional name for the 2D physics layer 28."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
#, fuzzy
msgid "Optional name for the 2D physics layer 29."
msgstr "2D物ç†å±‚2çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr "2D物ç†å±‚3çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
#, fuzzy
msgid "Optional name for the 2D physics layer 30."
msgstr "2D物ç†å±‚3çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
#, fuzzy
msgid "Optional name for the 2D physics layer 31."
msgstr "2D物ç†å±‚3çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
#, fuzzy
msgid "Optional name for the 2D physics layer 32."
msgstr "2D物ç†å±‚3çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr "2D物ç†å±‚4çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr "2D物ç†å±‚5çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr "2D物ç†å±‚6çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr "2D物ç†å±‚7çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr "2D物ç†å±‚8çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr "2D物ç†å±‚9çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr "2D物ç†å±‚1çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr "2D渲染层10çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr "2D渲染层11çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr "2D渲染层12çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr "2D渲染层13çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr "2D渲染层14çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr "2D渲染层15çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr "2D渲染层16çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr "2D渲染层17çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr "2D渲染层18çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr "2D渲染层19çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr "2D 渲染层 2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr "2D 渲染层 20 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr "2D 渲染层 3 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr "2D 渲染层 4 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr "2D 渲染层 5 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr "2D 渲染层 6 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr "2D 渲染层 7 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr "2D 渲染层 8 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr "2D 渲染层 9 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr "3D物ç†å±‚1 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr "3D物ç†å±‚10 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr "3D物ç†å±‚11 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr "3D物ç†å±‚12 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr "3D物ç†å±‚13 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr "3D物ç†å±‚14 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr "3D物ç†å±‚15 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr "3D物ç†å±‚16 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr "3D物ç†å±‚17 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr "3D物ç†å±‚18 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr "3D物ç†å±‚19 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr "3D物ç†å±‚20 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
#, fuzzy
msgid "Optional name for the 3D physics layer 21."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
#, fuzzy
msgid "Optional name for the 3D physics layer 22."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
#, fuzzy
msgid "Optional name for the 3D physics layer 23."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
#, fuzzy
msgid "Optional name for the 3D physics layer 24."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
#, fuzzy
msgid "Optional name for the 3D physics layer 25."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
#, fuzzy
msgid "Optional name for the 3D physics layer 26."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
#, fuzzy
msgid "Optional name for the 3D physics layer 27."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
#, fuzzy
msgid "Optional name for the 3D physics layer 28."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
#, fuzzy
msgid "Optional name for the 3D physics layer 29."
msgstr "3D物ç†å±‚2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr "3D物ç†å±‚3 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
#, fuzzy
msgid "Optional name for the 3D physics layer 30."
msgstr "3D物ç†å±‚3 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
#, fuzzy
msgid "Optional name for the 3D physics layer 31."
msgstr "3D物ç†å±‚3 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
#, fuzzy
msgid "Optional name for the 3D physics layer 32."
msgstr "3D物ç†å±‚3 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr "3D物ç†å±‚4 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr "3D物ç†å±‚5 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr "3D物ç†å±‚6 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr "3D物ç†å±‚7 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr "3D物ç†å±‚8 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr "3D物ç†å±‚9 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr "3D渲染层1 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr "3D渲染层10 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr "3D渲染层11 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr "3D渲染层12 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr "3D渲染层13 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr "3D渲染层14 çš„å¯é€‰åç§°"
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr "3D渲染层15 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr "3D渲染层16 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr "3D渲染层17 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr "3D渲染层18 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr "3D渲染层19 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr "3D渲染层2 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr "3D渲染层20 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr "3D渲染层3 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr "3D渲染层4 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr "3D渲染层5 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr "3D渲染层6 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr "3D渲染层7 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr "3D渲染层8 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr "3D渲染层9 çš„å¯é€‰å称。"
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
@@ -54385,33 +54477,33 @@ msgstr ""
"如果给定语言的翻译ä¸å¯ç”¨ï¼Œåˆ™ä½¿ç”¨é»˜è®¤åœ°åŸŸã€‚如果留空,将使用 [code]en[/code],"
"å³è‹±æ–‡ã€‚"
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr "如果ä¸ä¸ºç©ºï¼Œé‚£ä¹ˆå½“从编辑器中è¿è¡Œé¡¹ç›®æ—¶ï¼Œå°†ä½¿ç”¨è¯¥è¯­è¨€ã€‚"
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr "如果[code]true[/code],将所有输出记录到文件中。"
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr "项目中的日志的路径。建议使用[code]user://[/code]作为路径。"
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr "指定å…许的日志文件的最大数é‡(用于旋转)。"
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
@@ -54419,7 +54511,7 @@ msgstr ""
"Godot使用一个消æ¯é˜Ÿåˆ—æ¥å»¶è¿Ÿä¸€äº›å‡½æ•°è°ƒç”¨ã€‚如果你的空间用完了(你会看到一个错"
"误),你å¯ä»¥åœ¨è¿™é‡Œå¢žåР大å°ã€‚"
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -54430,7 +54522,7 @@ msgstr ""
"以é¿å…åœ¨çº¿ç¨‹ä¸Šåœæ­¢è¯·æ±‚它们的æœåŠ¡å™¨ã€‚å¦‚æžœåœ¨çº¿ç¨‹ä¸­åŠ è½½èµ„æºæ—¶æœåС噍ç»å¸¸å¡é¡¿ï¼Œè¯·"
"增加此数字。"
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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 "
@@ -54439,7 +54531,7 @@ msgstr ""
"å…许调试器输出的最大字符é‡ã€‚超过这个值,内容就会被放弃。这有助于é¿å…调试器的"
"è¿žæŽ¥åœæ»žã€‚"
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
#, fuzzy
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
@@ -54449,7 +54541,7 @@ msgstr ""
"å…许调试器å‘é€çš„æœ€å¤§é”™è¯¯æ•°ã€‚超过这个值,内容就会被抛弃。这有助于é¿å…调试器的"
"è¿žæŽ¥åœæ»žã€‚"
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
#, fuzzy
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
@@ -54459,7 +54551,7 @@ msgstr ""
"å…许调试器输出的最大字符é‡ã€‚超过这个值,内容就会被放弃。这有助于é¿å…调试器的"
"è¿žæŽ¥åœæ»žã€‚"
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
#, fuzzy
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
@@ -54469,7 +54561,7 @@ msgstr ""
"å…许从调试器å‘é€çš„æœ€å¤§è­¦å‘Šæ•°ã€‚超过这个值,内容就会被抛弃。这有助于é¿å…调试器"
"çš„è¿žæŽ¥åœæ»žã€‚"
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
#, fuzzy
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
@@ -54478,51 +54570,51 @@ msgid ""
msgstr ""
"用于ååºåˆ—化Godotæ•°æ®çš„æ•°æ®åŒ…对等æµçš„默认大å°ã€‚超过这个大å°ï¼Œæ•°æ®ä¼šè¢«ä¸¢å¼ƒã€‚"
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr "使用TCP的连接å°è¯•的超时(以秒为å•ä½ï¼‰ã€‚"
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr "[WebRTCDataChannel]输入缓冲区的最大尺寸(å•ä½ï¼šåƒå­—节)。"
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
#, fuzzy
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr "[WebRTCDataChannel]输入缓冲区的最大尺寸(å•ä½ï¼šåƒå­—节)。"
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
#, fuzzy
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr "[WebRTCDataChannel]输入缓冲区的最大尺寸(å•ä½ï¼šåƒå­—节)。"
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
#, fuzzy
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr "[WebRTCDataChannel]输入缓冲区的最大尺寸(å•ä½ï¼šåƒå­—节)。"
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
#, fuzzy
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr "[WebRTCDataChannel]输入缓冲区的最大尺寸(å•ä½ï¼šåƒå­—节)。"
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
@@ -54530,11 +54622,11 @@ msgstr ""
"对远程文件系统的预读å–é‡ã€‚更高的值å¯ä»¥å‡å°‘延迟的影å“,但代价是更高的带宽消"
"耗。"
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr "远程文件系统使用的页é¢å¤§å°ï¼ˆå­—节)。"
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -54548,20 +54640,20 @@ msgstr ""
"certificates.crt]Mozillaè¯ä¹¦åŒ…[/url]。如果留空,将使用默认的è¯ä¹¦åŒ…。\n"
"如果有疑问,让这个设置为空。"
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
"当自动创建节点å称时,在这个项目中设置大å°å†™çš„ç±»åž‹ã€‚è¿™ä¸»è¦æ˜¯ç¼–辑器设置。"
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr "用什么æ¥åˆ†éš”节点å称和编å·ã€‚è¿™ä¸»è¦æ˜¯ä¸€ä¸ªç¼–辑器的设置。"
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
#, fuzzy
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
@@ -54569,14 +54661,14 @@ msgid ""
"enabled."
msgstr "用于broad-phase 2D 哈希网格算法的哈希表的大å°ã€‚"
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -54589,7 +54681,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
#, fuzzy
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
@@ -54610,7 +54702,7 @@ msgstr ""
"PhysicsServer2D.area_PARAM_GRAVITY, 98)\n"
"[/codeblock]"
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
#, fuzzy
msgid ""
"The default gravity direction in 2D.\n"
@@ -54631,7 +54723,7 @@ msgstr ""
"PhysicsServer2D.area_PARAM_GRAVITY_VECTOR, Vector2(0, 1))\n"
"[/codeblock]"
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -54644,7 +54736,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
#, fuzzy
msgid ""
"Threshold defining the surface size that constitutes a large object with "
@@ -54655,7 +54747,7 @@ msgstr ""
"在broad-phase 2D哈希网格算法中,定义相对于å•元而言的构æˆå¤§åž‹ç‰©ä½“的表é¢å°ºå¯¸çš„"
"阈值。"
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
#, fuzzy
msgid ""
"Sets which physics engine to use for 2D physics.\n"
@@ -54666,27 +54758,27 @@ msgstr ""
"\"DEFAULT \"å’Œ \"GodotPhysics2D \"是一样的,因为目å‰è¿˜æ²¡æœ‰ä½¿ç”¨å…¶ä»–çš„2D物ç†å¼•"
"擎。"
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
#, fuzzy
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-"角速度阈值。在此阈值以下,2D物ç†ä½“å°†è¢«è§†ä¸ºä¸æ´»åŠ¨ã€‚å‚è§[constant "
+"角速度阈值。在此阈值以下,2D物ç†ä½“å°†è¢«è§†ä¸ºä¸æ´»åŠ¨ã€‚å‚阅[constant "
"physicsServer2D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]。"
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
#, fuzzy
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-"线性速度的阈值。在此阈值下二维物ç†ä½“è¢«è®¤ä¸ºæ˜¯ä¸æ´»åŠ¨çš„ã€‚å‚è§[constant "
+"线性速度的阈值。在此阈值下二维物ç†ä½“è¢«è®¤ä¸ºæ˜¯ä¸æ´»åŠ¨çš„ã€‚å‚阅[constant "
"PhysicsServer2D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]。"
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -54700,22 +54792,22 @@ msgstr ""
"[b]警告:[/b] 从Godot 3.2开始,关于物ç†è¿ç®—使用多线程的å馈ä¸ä¸€ã€‚请务必评估它"
"是å¦ç¡®å®žç»™ä½ å¸¦æ¥äº†é¢å¤–的性能,并且在使用它时没有过时。"
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
#, fuzzy
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-"2D物ç†ç‰©ä½“䏿´»åŠ¨çš„æ—¶é—´ï¼ˆä»¥ç§’ä¸ºå•ä½ï¼‰ã€‚在此之å‰ï¼Œ2D物ç†ä½“将进入ç¡çœ çжæ€ã€‚å‚è§"
+"2D物ç†ç‰©ä½“䏿´»åŠ¨çš„æ—¶é—´ï¼ˆä»¥ç§’ä¸ºå•ä½ï¼‰ã€‚在此之å‰ï¼Œ2D物ç†ä½“将进入ç¡çœ çжæ€ã€‚å‚阅"
"[constant PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP]。"
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
#, fuzzy
msgid ""
"Sets whether the 3D physics world will be created with support for "
@@ -54723,7 +54815,7 @@ msgid ""
msgstr ""
"设置三维物ç†ä¸–ç•Œçš„åˆ›å»ºæ˜¯å¦æ”¯æŒ[SoftBody3D]物ç†è¿ç®—(åªé€‚用于Bullet物ç†å¼•擎)。"
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -54736,7 +54828,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
#, fuzzy
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
@@ -54757,7 +54849,7 @@ msgstr ""
"PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)\n"
"[/codeblock]"
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
#, fuzzy
msgid ""
"The default gravity direction in 3D.\n"
@@ -54778,7 +54870,7 @@ msgstr ""
"PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3(0, -1, 0))\n"
"[/codeblock]"
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -54791,13 +54883,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
#, fuzzy
msgid ""
"Sets which physics engine to use for 3D physics.\n"
@@ -54809,11 +54901,11 @@ msgstr ""
"ç›®å‰ \"DEFAULT \"是[url=https://bulletphysics.org]Bullet[/url]物ç†å¼•擎。ä»ç„¶"
"æ”¯æŒ \"GodotPhysics3D \"引擎作为替代。"
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr "在根视图上å¯ç”¨ [member Viewport.physics_object_picking]。"
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -54827,7 +54919,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -54840,7 +54932,7 @@ msgstr ""
"[b]注æ„:[/b] 这个属性åªåœ¨é¡¹ç›®å¯åŠ¨æ—¶è¢«è¯»å–。è¦åœ¨è¿è¡Œæ—¶æ”¹å˜ç‰©ç†FPS,请设置"
"[member Engine.iterations_per_second]æ¥ä»£æ›¿ã€‚"
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
#, fuzzy
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
@@ -54861,7 +54953,7 @@ msgstr ""
"但å…许平滑帧率抖动。默认值0.5对大多数人æ¥è¯´åº”该是没有问题的;高于2的值å¯èƒ½ä¼š"
"导致游æˆå¯¹æŽ‰å¸§çš„å应有明显的延迟,ä¸å»ºè®®ä½¿ç”¨ã€‚"
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -54871,7 +54963,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -54881,7 +54973,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -54892,7 +54984,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -54902,7 +54994,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -54910,7 +55002,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
#, fuzzy
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
@@ -54928,7 +55020,7 @@ msgstr ""
"径,但会牺牲性能。这个选项åªå½±å“GLES2渲染åŽç«¯ï¼Œè€Œä¸”åªå½±å“桌é¢å¹³å°ã€‚在使用"
"VulkanåŽç«¯æ—¶ï¼Œå®ƒæ˜¯ä¸å¿…è¦çš„。"
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -54943,7 +55035,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -54952,13 +55044,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -54967,7 +55059,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -54977,7 +55069,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -54989,7 +55081,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -54999,24 +55091,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -55025,7 +55117,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -55033,7 +55125,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -55042,7 +55134,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -55052,7 +55144,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -55060,31 +55152,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
#, fuzzy
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
@@ -55092,12 +55184,12 @@ msgid ""
"Environment.background_color] in particular. To change this default color "
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-"é»˜è®¤èƒŒæ™¯é€æ˜Žé¢œè‰²ã€‚使用[Environment]å¯è¦†ç›–æ¯ä¸ª[Viewport]。具体请å‚è§[member "
+"é»˜è®¤èƒŒæ™¯é€æ˜Žé¢œè‰²ã€‚使用[Environment]å¯è¦†ç›–æ¯ä¸ª[Viewport]。具体请å‚阅[member "
"Environment.background_mode]å’Œ[member Environment.background_color]。è¦ä»¥ä»£ç "
"æ–¹å¼æ›´æ”¹æ­¤é»˜è®¤é¢œè‰²ï¼Œè¯·ä½¿ç”¨use [method RenderingServer."
"set_default_clear_color]。"
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -55110,14 +55202,14 @@ msgstr ""
"境,都会在场景加载时加载默认环境。如果ä¸ä¾èµ–默认环境,最好删除"
"[code]default_env.tres[/code],或者在这里指定ä¸åŒçš„默认环境。"
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -55125,31 +55217,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -55157,7 +55249,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -55167,7 +55259,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -55176,7 +55268,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -55185,14 +55277,14 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
@@ -55201,7 +55293,7 @@ msgstr ""
"如果[code]true[/code],纹ç†å¯¼å…¥å™¨å°†ä½¿ç”¨S3纹ç†åŽ‹ç¼©ç®—æ³•å¯¼å…¥VRAM压缩的纹ç†ã€‚è¿™ç§"
"算法åªåœ¨æ¡Œé¢å¹³å°å’Œæ¸¸æˆæœºä¸Šæ”¯æŒã€‚"
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
#, fuzzy
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
@@ -55214,7 +55306,7 @@ msgstr ""
"ä»¶å˜å°ã€‚解压缩速度大多ä¸å—压缩级别的影å“。[code]-1[/code]使用默认的gzip压缩级"
"别,该级别与[code]6[/code]相åŒï¼Œä½†ç”±äºŽåº•层zlib更新,未æ¥å¯èƒ½ä¼šå‘生å˜åŒ–。"
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -55222,7 +55314,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -55231,7 +55323,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -55241,13 +55333,13 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
#, fuzzy
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
@@ -55257,7 +55349,7 @@ msgstr ""
"如果[code]true[/code],图å—地图的碰撞将被当作è¿åЍ体处ç†ã€‚如果[code]false[/"
"code]ï¼Œç¢°æ’žå°†è¢«å½“ä½œé™æ€ä½“æ¥å¤„ç†ã€‚"
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -55266,13 +55358,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -55282,14 +55374,14 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
#, fuzzy
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
@@ -55298,14 +55390,14 @@ msgstr ""
"由于性能或驱动支æŒé—®é¢˜ï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹ [member rendering/quality/"
"shadow_atlas/size]ä»¥ä½Žé…æ•°å€¼è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
"对一些GPU供应商(通常是移动设备)ç¦ç”¨æ·±åº¦é¢„处ç†ï¼Œå› ä¸ºä»–们的架构已ç»åšäº†è¿™ä¸ªã€‚"
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
@@ -55314,7 +55406,7 @@ msgstr ""
"如果 [code]true[/code],则在渲染æè´¨ä¹‹å‰æ‰§è¡Œå…ˆå‰çš„æ·±åº¦ä¼ é€’ã€‚å½“ä½¿ç”¨å¤æ‚çš„ææ–™"
"和照明时,这会æé«˜é«˜é€æ”¯åœºæ™¯çš„æ€§èƒ½ã€‚"
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
@@ -55323,7 +55415,7 @@ msgstr ""
"æ–¹å‘æ€§é˜´å½±çš„大å°ï¼Œä»¥åƒç´ ä¸ºå•ä½ã€‚更高的值会导致更清晰的阴影,但会以性能为代"
"价。该值将被四èˆäº”入到最接近的2次方。"
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
@@ -55331,7 +55423,7 @@ msgstr ""
"由于性能和驱动支æŒçš„问题,在移动设备上会对[member rendering/quality/"
"directional_shadow/size] ä»¥ä½Žé…æ•°å€¼è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
#, fuzzy
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
@@ -55348,7 +55440,7 @@ msgstr ""
"åœ¨è¿™ç§æƒ…况下,这个属性ä¸ä¼šè¢«æ›´æ–°ï¼Œæ‰€ä»¥ä½¿ç”¨[code]OS.get_current_video_driver[/"
"code]æ¥åœ¨è¿è¡Œæ—¶æŸ¥è¯¢å®ƒã€‚"
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -55360,7 +55452,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -55368,7 +55460,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
#, fuzzy
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
@@ -55380,7 +55472,7 @@ msgstr ""
"值å¯ä»¥ä½¿è¾¹ç¼˜æ›´å¹³æ»‘,但在æŸäº›ç¡¬ä»¶ä¸Šä¼šæ˜Žæ˜¾å˜æ…¢ã€‚\n"
"[b]注æ„:[/b] MSAA在使用GLES2åŽç«¯çš„HTML5导出中ä¸å¯ç”¨ã€‚"
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -55389,7 +55481,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -55403,7 +55495,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
#, fuzzy
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
@@ -55417,7 +55509,7 @@ msgstr ""
"使图åƒçœ‹èµ·æ¥å¾ˆæ¨¡ç³Šï¼Œç‰¹åˆ«æ˜¯åœ¨è¾ƒä½Žçš„分辨率。在1440på’Œ4K等大分辨率下,ä»ç„¶å¯ä»¥ç›¸"
"对良好地工作。"
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -55430,7 +55522,7 @@ msgstr ""
"å¯èƒ½ä¼šæé«˜ç§»åŠ¨è®¾å¤‡çš„æ€§èƒ½ã€‚å¦‚æžœ [code]false[/code],则使用线性 mipmap 过滤(也"
"称为“三线性过滤â€ï¼‰ã€‚"
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -55444,7 +55536,7 @@ msgstr ""
"[code]SCREEN_TEXTURE[/code]å’Œ[code]DEPTH_TEXTURE[/code]å°†ä¸èƒ½åœ¨ç€è‰²å™¨ä¸­ä½¿ç”¨ï¼Œ"
"而åŽå¤„ç†æ•ˆæžœå°†ä¸èƒ½åœ¨[Environment]中使用。"
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
@@ -55453,14 +55545,14 @@ msgstr ""
"由于性能或驱动支æŒé—®é¢˜ï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå¯¹[member rendering/quality/"
"intended_usage/framebuffer_allocation]ä»¥ä½Žé…æ•°å€¼è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
#, fuzzy
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
@@ -55469,27 +55561,27 @@ msgstr ""
"由于性能问题或驱动支æŒï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹[member rendering/quality/shading/"
"force_vertex_shading]ä»¥ä½Žé…æ•°å€¼è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
#, fuzzy
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
@@ -55499,7 +55591,7 @@ msgstr ""
"ç”±äºŽæ€§èƒ½é—®é¢˜æˆ–é©±åŠ¨ç¨‹åºæ”¯æŒï¼Œç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹ [member rendering/quality/"
"reflections/ggx_samples] 以低性能数值覆盖。"
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -55510,18 +55602,18 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
#, fuzzy
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-"如果 [code]true[/code],则对åå°„æŽ¢æµ‹å™¨å’Œå…¨æ™¯èƒŒæ™¯ï¼ˆå¤©ç©ºï¼‰ä½¿ç”¨çº¹ç†æ•°ç»„è€Œä¸æ˜¯ "
+"如果 [code]true[/code],则对åå°„æŽ¢é’ˆå’Œå…¨æ™¯èƒŒæ™¯ï¼ˆå¤©ç©ºï¼‰ä½¿ç”¨çº¹ç†æ•°ç»„è€Œä¸æ˜¯ "
"mipmap。这å‡å°‘了åå°„ä¸Šçš„æŠ–åŠ¨å™ªå£°å’Œæ”¾å¤§ä¼ªå½±ï¼Œä½†è®¡ç®—é€Ÿåº¦è¦æ…¢å¾—多,并且使用 "
"[member rendering/quality/reflections/roughness_layers]æ—¶è¦èŠ±è´¹æ›´å¤šçš„å†…å­˜ã€‚"
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
@@ -55530,7 +55622,7 @@ msgstr ""
"由于性能问题或驱动支æŒï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹[member rendering/quality/"
"reflections/texture_array_reflections]以低性能数值覆盖。"
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
@@ -55538,7 +55630,7 @@ msgstr ""
"如果 [code]true[/code],则使用速度更快但质é‡è¾ƒä½Žçš„ Blinn æ¨¡åž‹è€Œä¸æ˜¯ GGX 模型"
"æ¥ç”Ÿæˆæ¨¡ç³Šå射。"
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
@@ -55547,7 +55639,7 @@ msgstr ""
"由于性能或驱动支æŒé—®é¢˜ï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹[member rendering/quality/shading/"
"force_blinn_over_ggx]以低值覆盖。"
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
@@ -55555,7 +55647,7 @@ msgstr ""
"如果 [code]true[/code],则使用速度更快但质é‡è¾ƒä½Žçš„ Lambert æè´¨ç…§æ˜Žæ¨¡åž‹è€Œä¸"
"是 Burley。"
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
@@ -55564,7 +55656,7 @@ msgstr ""
"由于性能问题或驱动支æŒï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹[member rendering/quality/shading/"
"force_lambert_over_burley]ä»¥ä½Žé…æ•°å€¼è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
@@ -55573,7 +55665,7 @@ msgstr ""
"如果 [code]true[/code],则为所有渲染强制顶点ç€è‰²ã€‚è¿™å¯ä»¥å¤§å¤§æé«˜æ€§èƒ½ï¼Œä½†ä¹Ÿä¼š"
"æžå¤§åœ°é™ä½Žè´¨é‡ã€‚å¯ç”¨äºŽä¼˜åŒ–低端移动设备的性能。"
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
@@ -55582,7 +55674,18 @@ msgstr ""
"由于性能问题或驱动支æŒï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹[member rendering/quality/shading/"
"force_vertex_shading]ä»¥ä½Žé…æ•°å€¼è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -55591,20 +55694,20 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr "阴影贴图的细分象é™å¤§å°ã€‚请å‚阅阴影映射文档。"
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr "阴影图集的尺寸(用于OmniLightså’ŒSpotLightsï¼‰ã€‚è§æ–‡æ¡£ã€‚"
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
@@ -55612,7 +55715,7 @@ msgstr ""
"由于性能或驱动支æŒé—®é¢˜ï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹ [member rendering/quality/"
"shadow_atlas/size]ä»¥ä½Žé…æ•°å€¼è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -55623,7 +55726,7 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
#, fuzzy
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
@@ -55632,14 +55735,14 @@ msgstr ""
"由于性能或驱动支æŒé—®é¢˜ï¼Œåœ¨ç§»åŠ¨è®¾å¤‡ä¸Šå°†å¯¹ [member rendering/quality/"
"shadow_atlas/size]ä»¥ä½Žé…æ•°å€¼è¦†ç›–。"
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -55651,47 +55754,47 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
#, fuzzy
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr "地下散射效应的强度。"
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
#, fuzzy
msgid "Max radius used for subsurface scattering samples."
msgstr "地下散射效应的强度。"
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
@@ -55700,7 +55803,7 @@ msgstr ""
"渲染的线程模型。在线程上进行渲染å¯ä»¥æžå¤§åœ°æé«˜æ€§èƒ½ï¼Œä½†åŒæ­¥åˆ°ä¸»çº¿ç¨‹ä¸Šä¼šå¯¼è‡´æ›´"
"多的抖动。"
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -55708,7 +55811,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
@@ -55718,12 +55821,14 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
"如果[code]true[/code],纹ç†å¯¼å…¥å™¨å°†ä½¿ç”¨BPTC算法导入VRAM压缩的纹ç†ã€‚è¿™ç§çº¹ç†åŽ‹"
"缩算法åªåœ¨æ¡Œé¢å¹³å°ä¸Šæ”¯æŒï¼Œè€Œä¸”åªåœ¨ä½¿ç”¨Vulkan渲染器时支æŒã€‚"
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
+#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -55731,10 +55836,14 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
+"如果[code]true[/code],纹ç†å¯¼å…¥å™¨å°†ä½¿ç”¨BPTC算法导入VRAM压缩的纹ç†ã€‚è¿™ç§çº¹ç†åŽ‹"
+"缩算法åªåœ¨æ¡Œé¢å¹³å°ä¸Šæ”¯æŒï¼Œè€Œä¸”åªåœ¨ä½¿ç”¨Vulkan渲染器时支æŒã€‚"
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
+#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -55742,10 +55851,14 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
+"如果[code]true[/code],纹ç†å¯¼å…¥å™¨å°†ä½¿ç”¨BPTC算法导入VRAM压缩的纹ç†ã€‚è¿™ç§çº¹ç†åŽ‹"
+"缩算法åªåœ¨æ¡Œé¢å¹³å°ä¸Šæ”¯æŒï¼Œè€Œä¸”åªåœ¨ä½¿ç”¨Vulkan渲染器时支æŒã€‚"
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
+#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -55753,10 +55866,14 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
+"如果[code]true[/code],纹ç†å¯¼å…¥å™¨å°†ä½¿ç”¨BPTC算法导入VRAM压缩的纹ç†ã€‚è¿™ç§çº¹ç†åŽ‹"
+"缩算法åªåœ¨æ¡Œé¢å¹³å°ä¸Šæ”¯æŒï¼Œè€Œä¸”åªåœ¨ä½¿ç”¨Vulkan渲染器时支æŒã€‚"
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
+#, fuzzy
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -55764,10 +55881,13 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
+"如果[code]true[/code],纹ç†å¯¼å…¥å™¨å°†ä½¿ç”¨BPTC算法导入VRAM压缩的纹ç†ã€‚è¿™ç§çº¹ç†åŽ‹"
+"缩算法åªåœ¨æ¡Œé¢å¹³å°ä¸Šæ”¯æŒï¼Œè€Œä¸”åªåœ¨ä½¿ç”¨Vulkan渲染器时支æŒã€‚"
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
#, fuzzy
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
@@ -55795,9 +55915,8 @@ msgstr ""
#: doc/classes/QuadMesh.xml:11 doc/classes/Viewport.xml:19
#: doc/classes/ViewportTexture.xml:13
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/129"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/129"
#: doc/classes/QuadMesh.xml:17
#, fuzzy
@@ -55830,12 +55949,11 @@ msgstr ""
"有效,并且对浮点错误有很强的抵抗力。"
#: doc/classes/Quat.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/3d/using_transforms."
"html#interpolating-with-quaternions"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/using_transforms."
+"https://docs.godotengine.org/en/3.4/tutorials/3d/using_transforms."
"html#interpolating-with-quaternions"
#: doc/classes/Quat.xml:20
@@ -56043,11 +56161,12 @@ msgstr ""
"[/codeblock]"
#: doc/classes/RandomNumberGenerator.xml:19
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/math/random_number_generation."
"html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/math/index.html"
+msgstr ""
+"https://docs.godotengine.org/en/3.4/tutorials/math/random_number_generation."
+"html"
#: doc/classes/RandomNumberGenerator.xml:25
msgid ""
@@ -56741,7 +56860,11 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
"将其周围环境æ•获为立方体图,并存储其版本,使其模糊程度增加,以模拟ä¸åŒçš„ææ–™"
"粗糙度。\n"
@@ -56750,13 +56873,12 @@ msgstr ""
"的所有对象,因此更新它们å¯èƒ½ç›¸å½“昂贵。最好用é‡è¦çš„陿€å¯¹è±¡æ›´æ–°å®ƒä»¬ä¸€æ¬¡ï¼Œç„¶åŽ"
"放下它们。"
-#: doc/classes/ReflectionProbe.xml:12
-#, fuzzy
+#: doc/classes/ReflectionProbe.xml:13
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/reflection_probes.html"
+"https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
@@ -56765,7 +56887,7 @@ msgstr ""
"如果 [code]true[/code],则å¯ç”¨ç®±ä½“投影。通过根æ®ç›¸æœºçš„ä½ç½®åç§»å射中心,这使"
"得在矩形房间中的åå°„çœ‹èµ·æ¥æ›´æ­£ç¡®ã€‚"
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
#, fuzzy
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
@@ -56778,7 +56900,7 @@ msgstr ""
"[VisualInstance3D]éƒ½å°†è¢«æŽ¢é’ˆæ¸²æŸ“ã€‚ä¸ºäº†èŠ‚çœæ¸²æŸ“æˆæœ¬ï¼Œæœ€å¥½åªåŒ…å«å¤§çš„物体,因为"
"它们很å¯èƒ½ä¼šå ç”¨å¤§é‡çš„å射空间。"
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
@@ -56787,41 +56909,41 @@ msgstr ""
"如果[code]true[/code],则在å射探测中计算阴影。这使得å射探针渲染更慢;如果想"
"ç¦ç”¨å®ƒ,å¯ä»¥ä½¿ç”¨[constant UPDATE ALWAYS] [member update_mode]。"
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-"å射探测器的大å°ã€‚范围越大,探测器覆盖的空间就越大,这将é™ä½Žæ„ŸçŸ¥çš„分辨率。最"
-"å¥½çš„åŠžæ³•æ˜¯æŠŠèŒƒå›´ä¿æŒåœ¨ä½ éœ€è¦çš„程度上。"
+"å射探针的大å°ã€‚范围越大,探针覆盖的空间就越大,这将é™ä½Žæ„ŸçŸ¥çš„分辨率。最好的"
+"åŠžæ³•æ˜¯æŠŠèŒƒå›´ä¿æŒåœ¨ä½ éœ€è¦çš„程度上。"
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr "定义å射强度。"
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
#, fuzzy
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
@@ -56831,19 +56953,19 @@ msgstr ""
"如果 [code]true[/code],å射将忽略天空因素。等效于 [member ReflectionProbe."
"interior]。"
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
-msgstr "设置对象在被删除之å‰ä¸ŽæŽ¢æµ‹å™¨çš„æœ€å¤§è·ç¦»ã€‚"
+msgstr "设置对象在被删除之å‰ä¸ŽæŽ¢é’ˆçš„æœ€å¤§è·ç¦»ã€‚"
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
-msgstr "设置该å射探测器在盒å¼(box)项目模å¼ä¸‹ä½¿ç”¨çš„原点å移。"
+msgstr "设置该å射探针在盒å¼(box)项目模å¼ä¸‹ä½¿ç”¨çš„原点å移。"
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
@@ -56851,12 +56973,12 @@ msgstr ""
"设置探测更新的频率。å¯ä»¥æ˜¯[constant UPDATE ONCE](一次)或[constant UPDATE "
"ALWAYS](一直)。"
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
#, fuzzy
msgid "Update the probe once on the next frame."
msgstr "更新一次视窗,然åŽè®¾ç½®ä¸ºç¦ç”¨ã€‚"
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -57139,43 +57261,38 @@ msgid ""
msgstr "与æœç´¢æ¨¡å¼ä¸€èµ·ä½¿ç”¨çš„æºå­—ç¬¦ä¸²ï¼Œä»¥æ‰¾åˆ°è¿™ä¸ªåŒ¹é…结果。"
#: doc/classes/RemoteTransform.xml:4
-#, fuzzy
msgid ""
"RemoteTransform pushes its own [Transform] to another [Spatial] derived Node "
"in the scene."
msgstr ""
-"RemoteTransform3D 将自己的 [Transform] 推é€åˆ°åœºæ™¯ä¸­çš„å¦ä¸€ä¸ª [Node3D] 派生节"
-"点。"
+"RemoteTransform将自己的[Transform]推é€åˆ°åœºæ™¯ä¸­å¦ä¸€ä¸ª[Spatial]派生节点。"
#: doc/classes/RemoteTransform.xml:7
-#, fuzzy
msgid ""
"RemoteTransform pushes its own [Transform] to another [Spatial] derived Node "
"(called the remote node) in the scene.\n"
"It can be set to update another Node's position, rotation and/or scale. It "
"can use either global or local coordinates."
msgstr ""
-"RemoteTransform3D将自己的[Transform]推é€åˆ°åœºæ™¯ä¸­å¦ä¸€ä¸ª[Node3D]派生的节点(称"
-"为远程节点)。\n"
-"它å¯ä»¥è¢«è®¾ç½®ä¸ºæ›´æ–°å¦ä¸€ä¸ªNodeçš„ä½ç½®ã€æ—‹è½¬å’Œ/或比例。它å¯ä»¥ä½¿ç”¨å…¨å±€å标或局部å"
+"RemoteTransform将自己的[Transform]推é€åˆ°åœºæ™¯ä¸­å¦ä¸€ä¸ª[Spatial]派生节点(称为远"
+"程节点)。\n"
+"它å¯ä»¥è¢«è®¾ç½®ä¸ºæ›´æ–°å¦ä¸€ä¸ªèŠ‚ç‚¹çš„ä½ç½®ã€æ—‹è½¬å’Œ/或比例。它å¯ä»¥ä½¿ç”¨å…¨å±€å标或局部å"
"标。"
#: doc/classes/RemoteTransform.xml:16
-#, fuzzy
msgid ""
"[RemoteTransform] caches the remote node. It may not notice if the remote "
"node disappears; [method force_update_cache] forces it to update the cache "
"again."
msgstr ""
-"[RemoteTransform2D] 缓存了远程节点。如果远程节点消失了,它å¯èƒ½ä¸ä¼šé€šçŸ¥ï¼›"
+"[RemoteTransform3D] 缓存了远程节点。如果远程节点消失了,它å¯èƒ½ä¸ä¼šæ³¨æ„到;"
"[method force_update_cache] å¼ºåˆ¶å®ƒå†æ¬¡æ›´æ–°ç¼“存。"
#: doc/classes/RemoteTransform.xml:22
-#, fuzzy
msgid ""
"The [NodePath] to the remote node, relative to the RemoteTransform's "
"position in the scene."
-msgstr "到远程节点的[NodePath],相对于远程Transform2D在场景中的ä½ç½®ã€‚"
+msgstr "远程节点的节点ä½ç½® [NodePath],相对于 RemoteTransform 在场景中的ä½ç½®ã€‚"
#: doc/classes/RemoteTransform.xml:25 doc/classes/RemoteTransform2D.xml:25
msgid "If [code]true[/code], the remote node's position is updated."
@@ -57237,7 +57354,6 @@ msgid "Base class for all resources."
msgstr "所有资æºçš„基类。"
#: doc/classes/Resource.xml:7
-#, fuzzy
msgid ""
"Resource is the base class for all Godot-specific resource types, serving "
"primarily as data containers. Since they inherit from [Reference], resources "
@@ -57252,20 +57368,21 @@ msgid ""
"free resources that are no longer in use. This means that unused resources "
"will linger on for a while before being removed."
msgstr ""
-"èµ„æºæ˜¯æ‰€æœ‰Godot特定资æºç±»åž‹çš„基类,主è¦ä½œä¸ºæ•°æ®å®¹å™¨ã€‚与[Object]ä¸åŒçš„æ˜¯ï¼Œå®ƒä»¬"
-"被引用计数,并在ä¸å†ä½¿ç”¨æ—¶è¢«é‡Šæ”¾ã€‚一旦从ç£ç›˜åŠ è½½ï¼Œå®ƒä»¬ä¹Ÿä¼šè¢«ç¼“å­˜ï¼Œå› æ­¤ä»»ä½•ä»Ž"
-"给定路径加载资æºçš„å°è¯•都会返回相åŒçš„引用(这与[Node]相å,[Node]没有引用计"
-"数,å¯ä»¥æ ¹æ®éœ€è¦å¤šæ¬¡ä»Žç£ç›˜å®žä¾‹åŒ–)。资æºå¯ä»¥ä»Žå¤–部ä¿å­˜åœ¨ç£ç›˜ä¸Šï¼Œä¹Ÿå¯ä»¥æ†ç»‘在"
-"å¦ä¸€ä¸ªå¯¹è±¡ä¸­ï¼Œå¦‚[Node]或å¦ä¸€ä¸ªèµ„æºã€‚"
+"èµ„æºæ˜¯æ‰€æœ‰Godot特定资æºç±»åž‹çš„基类,主è¦ä½œä¸ºæ•°æ®å®¹å™¨ã€‚由于它们继承自"
+"[Reference],资æºè¢«å¼•用计数,并在ä¸å†ä½¿ç”¨æ—¶è¢«é‡Šæ”¾ã€‚一旦从ç£ç›˜åŠ è½½ï¼Œå®ƒä»¬ä¹Ÿä¼šè¢«"
+"缓存,因此任何从给定路径加载资æºçš„å°è¯•都会返回相åŒçš„引用(这与[Node]相å,"
+"[Node]没有引用计数,å¯ä»¥æ ¹æ®éœ€è¦ä»Žç£ç›˜å®žä¾‹åŒ–多次)。资æºå¯ä»¥ä»Žå¤–部ä¿å­˜åœ¨ç£ç›˜"
+"上,也å¯ä»¥æ†ç»‘在å¦ä¸€ä¸ªå¯¹è±¡ä¸­ï¼Œå¦‚[Node]或å¦ä¸€ä¸ªèµ„æºã€‚\n"
+"[b]注æ„:[/b] 在C#中,资æºä¸å†è¢«ä½¿ç”¨åŽä¸ä¼šç«‹å³è¢«é‡Šæ”¾ã€‚相å,垃圾回收将定期è¿"
+"行,并释放ä¸å†ä½¿ç”¨çš„资æºã€‚è¿™æ„å‘³ç€æœªä½¿ç”¨çš„资æºåœ¨è¢«åˆ é™¤ä¹‹å‰ä¼šåœç•™ä¸€æ®µæ—¶é—´ã€‚"
#: doc/classes/Resource.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/resources."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/step_by_step/"
-"resources.html"
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/resources."
+"html"
#: doc/classes/Resource.xml:18
msgid ""
@@ -57274,7 +57391,6 @@ msgid ""
msgstr "å¯ä»¥é‡å†™çš„虚拟函数,用于自定义 [method setup_local_to_scene] 的行为值。"
#: doc/classes/Resource.xml:25
-#, fuzzy
msgid ""
"Duplicates the resource, returning a new resource with the exported members "
"copied. [b]Note:[/b] To duplicate the resource the constructor is called "
@@ -57290,11 +57406,14 @@ msgid ""
"properties are copied. Other properties will be set to their default value "
"in the new resource."
msgstr ""
-"å¤åˆ¶èµ„æºï¼Œè¿”回一个新的资æºã€‚默认情况下,为了æé«˜æ•ˆçŽ‡ï¼Œå­èµ„æºä¼šåœ¨èµ„æºå‰¯æœ¬ä¹‹é—´"
-"共享。这å¯ä»¥é€šè¿‡å‘[code]subresources[/code]傿•°ä¼ é€’[code]true[/code]æ¥æ”¹å˜ï¼Œ"
-"它将å¤åˆ¶å­èµ„æºã€‚\n"
-"[b]注æ„:[/b]如果[code]subresources[/code]是[code]true[/code]ï¼Œè¿™ä¸ªæ–¹æ³•å°†åªæ‰§"
-"行一个浅层拷è´ã€‚嵌套在å­èµ„æºä¸­çš„资æºå°†ä¸ä¼šè¢«å¤åˆ¶ï¼Œä»å°†è¢«å…±äº«ã€‚"
+"å¤åˆ¶èµ„æºï¼Œè¿”回一个å¤åˆ¶äº†å¯¼å‡ºæˆå‘˜å±žæ€§çš„æ–°èµ„æºã€‚[b]注æ„:[/b]为了å¤åˆ¶èµ„æºï¼Œæž„造"
+"å‡½æ•°è¢«è°ƒç”¨ï¼Œæ²¡æœ‰å‚æ•°ã€‚当构造函数没有默认值时,这个方法会出错。\n"
+"默认情况下,为了æé«˜æ•ˆçŽ‡ï¼Œå­èµ„æºåœ¨èµ„æºå‰¯æœ¬ä¹‹é—´è¢«å…±äº«ã€‚è¿™å¯ä»¥é€šè¿‡å‘"
+"[code]subresources[/code]傿•°ä¼ é€’[code]true[/code]æ¥æ”¹å˜ï¼Œå®ƒå°†å¤åˆ¶å­èµ„æºã€‚\n"
+"[b]注æ„:[/b] 如果[code]subresources[/code]是[code]true[/code],这个方法将åª"
+"执行一个浅层拷è´ã€‚å­èµ„æºä¸­çš„嵌套资æºä¸ä¼šè¢«å¤åˆ¶ï¼Œä»ç„¶ä¼šè¢«å…±äº«ã€‚\n"
+"[b]注æ„:[/b]当å¤åˆ¶ä¸€ä¸ªèµ„æºæ—¶ï¼Œåªæœ‰å¯¼å‡º[code]export[/code]的属性被å¤åˆ¶ã€‚å…¶ä»–"
+"属性将被设置为新资æºä¸­çš„默认值。"
#: doc/classes/Resource.xml:34
msgid ""
@@ -57308,6 +57427,14 @@ msgid ""
"[/codeblock]\n"
"[b]Note:[/b] This method is called automatically for built-in resources."
msgstr ""
+"å‘出[signal changed]更改信å·ã€‚\n"
+"如果ä¾èµ–该资æºçš„外部对象应该被更新,那么æ¯å½“该资æºçš„状æ€å‘生å˜åŒ–(如属性的修"
+"改)时,必须手动调用该方法。\n"
+"该方法等åŒäºŽã€‚\n"
+"[codeblock]\n"
+"emit_signal(\"change\")\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b] è¿™ä¸ªæ–¹æ³•å¯¹äºŽå†…ç½®èµ„æºæ¥è¯´æ˜¯è‡ªåŠ¨è°ƒç”¨çš„ã€‚"
#: doc/classes/Resource.xml:46
msgid ""
@@ -57320,14 +57447,13 @@ msgstr ""
"code]。"
#: doc/classes/Resource.xml:52
-#, fuzzy
msgid ""
"Returns the RID of the resource (or an empty RID). Many resources (such as "
"[Texture], [Mesh], etc) are high-level abstractions of resources stored in a "
"server, so this function will return the original RID."
msgstr ""
-"返回资æºçš„RID(或者一个空的RID)。许多资æºï¼ˆå¦‚[Texture2D]ã€[Mesh]等)是存储在"
-"æœåŠ¡å™¨ä¸­çš„èµ„æºçš„高级抽象,所以这个函数将返回原始的RID。"
+"返回资æºçš„RID(或者一个空的RID)。许多资æºï¼ˆå¦‚[Texture]ã€[Mesh]等)是存储在æœ"
+"务器server中的资æºçš„高级抽象,所以这个函数将返回原始的RID。"
#: doc/classes/Resource.xml:58
msgid ""
@@ -57370,6 +57496,9 @@ msgid ""
"current resource in the editor inspector. For built-in scripts, the [member "
"resource_name] will be displayed as the tab name in the script editor."
msgstr ""
+"资æºå称。这是一个å¯é€‰çš„æ ‡è¯†ç¬¦ã€‚如果 [member resource_name] 资æºå䏿˜¯ç©ºçš„,"
+"则将显示其值,以表示编辑器检查器中的当å‰èµ„æºã€‚对于内置脚本,[member "
+"resource_name]将作为脚本编辑器中的选项å¡å称显示。"
#: doc/classes/Resource.xml:78
msgid ""
@@ -57386,13 +57515,15 @@ msgid ""
"[b]Note:[/b] This signal is not emitted automatically for custom resources, "
"which means that you need to create a setter and emit the signal yourself."
msgstr ""
+"æ¯å½“资æºå‘生å˜åŒ–时就会å‘射。\n"
+"[b]注æ„:[/b]对于自定义资æºï¼Œè¿™ä¸ªä¿¡å·ä¸ä¼šè‡ªåЍå‘射,这æ„味ç€ä½ éœ€è¦è‡ªå·±åˆ›å»ºä¸€ä¸ª"
+"设置器setterå¹¶å‘å°„ä¿¡å·ã€‚"
#: doc/classes/ResourceFormatLoader.xml:4
msgid "Loads a specific resource type from a file."
msgstr "从文件中加载特定资æºç±»åž‹ã€‚"
#: doc/classes/ResourceFormatLoader.xml:7
-#, fuzzy
msgid ""
"Godot loads resources in the editor or in exported games using "
"ResourceFormatLoaders. They are queried automatically via the "
@@ -57416,14 +57547,14 @@ msgstr ""
"[ResourceLoader]å•例自动查询,或者在加载具有内部ä¾èµ–æ€§çš„èµ„æºæ—¶è¢«æŸ¥è¯¢ã€‚æ¯ä¸ªæ–‡"
"件类型å¯ä»¥ä½œä¸ºä¸åŒçš„资æºç±»åž‹åŠ è½½ï¼Œå› æ­¤åœ¨å¼•æ“Žä¸­æ³¨å†Œäº†å¤šä¸ª"
"ResourceFormatLoaders。\n"
-"扩展这个类å…许你定义你自己的加载器。请确ä¿éµç…§æ–‡æ¡£ä¸­çš„返回类型和值进行处ç†ã€‚"
-"你应该给它一个带有[code]class_name[/code]的全局类å,这样它æ‰èƒ½è¢«æ³¨å†Œã€‚åƒå†…ç½®"
-"çš„ResourceFormatLoaders一样,它将在加载其处ç†çš„ç±»åž‹çš„èµ„æºæ—¶è¢«è‡ªåŠ¨è°ƒç”¨ã€‚ä½ ä¹Ÿå¯"
-"以实现一个[ResourceFormatSaver]。\n"
+"扩展这个类å…许你定义你自己的加载器。请确ä¿å°Šé‡æ–‡æ¡£ä¸­çš„返回类型和值。你应该给"
+"它一个带有[code]class_name[/code]的全局类å,这样它æ‰èƒ½è¢«æ³¨å†Œã€‚åƒå†…置的"
+"ResourceFormatLoaders一样,它将在加载其处ç†çš„ç±»åž‹çš„èµ„æºæ—¶è¢«è‡ªåŠ¨è°ƒç”¨ã€‚ä½ ä¹Ÿå¯ä»¥"
+"实现一个[ResourceFormatSaver]。\n"
"[b]注æ„:[/b] 如果你需è¦çš„资æºç±»åž‹å­˜åœ¨ï¼Œä½†Godot无法加载其格å¼ï¼Œä½ ä¹Ÿå¯ä»¥æ‰©å±•"
-"[EditorImportPlugin]ã€‚é€‰æ‹©ä¸€ç§æ–¹å¼è€Œä¸æ˜¯å¦ä¸€ç§æ–¹å¼å–å†³äºŽè¯¥æ ¼å¼æ˜¯å¦é€‚åˆäºŽæœ€ç»ˆ"
-"导出的游æˆã€‚例如,最好先把[code].png[/code]纹ç†å¯¼å…¥ä¸º[code].stex[/code]"
-"([StreamTexture2D]),这样它们在显å¡ä¸Šçš„加载效率会更好。"
+"[EditorImportPlugin]ã€‚é€‰æ‹©ä¸€ç§æ–¹å¼è€Œä¸æ˜¯å¦ä¸€ç§æ–¹å¼ï¼Œå–å†³äºŽè¯¥æ ¼å¼æ˜¯å¦é€‚åˆäºŽæœ€"
+"终导出的游æˆã€‚例如,最好先把[code].png[/code]纹ç†å¯¼å…¥ä¸º[code].stex[/code]"
+"([StreamTexture]),这样它们在显å¡ä¸Šçš„加载效率会更好。"
#: doc/classes/ResourceFormatLoader.xml:19
msgid ""
@@ -57539,9 +57670,8 @@ msgstr ""
"æˆåŠŸæ—¶è¿”å›ž[constant OK],失败时返回[enum Error]常é‡ã€‚"
#: doc/classes/ResourceImporter.xml:4
-#, fuzzy
msgid "Base class for the implementation of core resource importers."
-msgstr "所有 3D 形状资æºçš„基类。"
+msgstr "用于实现核心资æºå¯¼å…¥å™¨çš„基类。"
#: doc/classes/ResourceImporter.xml:7
msgid ""
@@ -57549,11 +57679,12 @@ msgid ""
"implement your own resource importers using editor plugins, see "
"[EditorImportPlugin]."
msgstr ""
+"这是在核心部分实现的资æºå¯¼å…¥å™¨çš„基类。è¦ä½¿ç”¨ç¼–辑器æ’件实现你自己的资æºå¯¼å…¥"
+"器,请å‚阅[EditorImportPlugin]。"
#: doc/classes/ResourceImporter.xml:16
-#, fuzzy
msgid "The default import order."
-msgstr "默认文本颜色。"
+msgstr "默认导入顺åºã€‚"
#: doc/classes/ResourceImporter.xml:19
msgid ""
@@ -57562,11 +57693,13 @@ msgid ""
"have an import order lower than [code]100[/code] to avoid issues when "
"importing scenes that rely on custom resources."
msgstr ""
+"场景的导入顺åºï¼Œç¡®ä¿åœºæ™¯è¢«å¯¼å…¥åœ¨æ‰€æœ‰å…¶ä»–核心资æºï¼ˆå¦‚纹ç†ï¼‰[i]之åŽ[/i]。自定义"
+"导入器的导入顺åºä¸€èˆ¬åº”低于[code]100[/code],以é¿å…导入ä¾èµ–自定义资æºçš„场景时"
+"出现问题。"
#: doc/classes/ResourceInteractiveLoader.xml:4
-#, fuzzy
msgid "Interactive [Resource] loader."
-msgstr "è¦åŠ è½½çš„[Resource]资æºã€‚"
+msgstr "äº¤äº’å¼ [Resource] 加载器。"
#: doc/classes/ResourceInteractiveLoader.xml:7
msgid ""
@@ -57575,28 +57708,27 @@ msgid ""
"granularity, which makes it mainly useful for displaying loading bars or "
"percentages."
msgstr ""
+"交互å¼èµ„æº[Resource]加载器。这个对象在执行交互å¼åŠ è½½æ—¶ç”±[ResourceLoader]è¿”"
+"回。它å…许以高粒度(high granularity)加载资æºï¼Œè¿™ä½¿å¾—它主è¦ç”¨äºŽæ˜¾ç¤ºåŠ è½½æ¡æˆ–"
+"百分比。"
#: doc/classes/ResourceInteractiveLoader.xml:15
-#, fuzzy
msgid ""
"Returns the loaded resource if the load operation completed successfully, "
"[code]null[/code] otherwise."
-msgstr ""
-"如果域正在被最终确定,返回 [code]true[/code] ,å¦åˆ™è¿”回 [code]false[/code] 。"
+msgstr "如果加载æ“作æˆåŠŸå®Œæˆï¼Œè¿”回加载的资æºï¼Œå¦åˆ™ä¸ºç©º[code]null[/code]。"
#: doc/classes/ResourceInteractiveLoader.xml:21
-#, fuzzy
msgid ""
"Returns the load stage. The total amount of stages can be queried with "
"[method get_stage_count]."
-msgstr ""
-"如果已ç»ä½¿ç”¨ [method set_popup] 设置了节点实例,则返回 [Popup] 节点实例。"
+msgstr "返回加载阶段。å¯ä»¥ä½¿ç”¨[method get_stage_count]查询阶段总数。"
#: doc/classes/ResourceInteractiveLoader.xml:27
msgid ""
"Returns the total amount of stages (calls to [method poll]) needed to "
"completely load this resource."
-msgstr ""
+msgstr "è¿”å›žå®Œå…¨åŠ è½½æ­¤èµ„æºæ‰€éœ€çš„阶段总数(调用 [method poll])。"
#: doc/classes/ResourceInteractiveLoader.xml:33
msgid ""
@@ -57609,6 +57741,12 @@ msgid ""
"get_resource].\n"
"Returns another [enum Error] code if the poll has failed."
msgstr ""
+"对加载æ“作进行轮询,å³åŠ è½½ä¸€ä¸ªæ•°æ®å—到下一个阶段。\n"
+"如果轮询æˆåŠŸï¼Œä½†åŠ è½½æ“作还没有完æˆï¼ˆä¸­é—´é˜¶æ®µï¼‰ï¼Œåˆ™è¿”回[constant OK]。这æ„味ç€"
+"[method poll]å°†ä¸å¾—ä¸å†æ¬¡è¢«è°ƒç”¨ï¼Œç›´åˆ°æœ€åŽé˜¶æ®µå®Œæˆã€‚\n"
+"如果加载æ“ä½œå·²ç»æˆåŠŸå®Œæˆï¼Œè¿”回[constant ERR_FILE_EOF]。å¯ä»¥é€šè¿‡è°ƒç”¨[method "
+"get_resource]获得加载的资æºã€‚\n"
+"如果轮询失败,返回å¦ä¸€ä¸ª[enum Error]错误代ç ã€‚"
#: doc/classes/ResourceInteractiveLoader.xml:42
msgid ""
@@ -57620,13 +57758,16 @@ msgid ""
"Returns another [enum Error] code if a poll has failed, aborting the "
"operation."
msgstr ""
+"连续地对加载æ“作进行轮询,直到资æºè¢«å®Œå…¨åŠ è½½æˆ–æ–¹æ³•[method poll]轮询失败。\n"
+"如果加载æ“作æˆåŠŸå®Œæˆï¼Œè¿”回[constant ERR_FILE_EOF]。å¯ä»¥é€šè¿‡è°ƒç”¨[method "
+"get_resource]获得加载的资æºã€‚\n"
+"如果轮询失败,返回å¦ä¸€ä¸ª[enum Error]错误代ç ï¼Œä¸­æ­¢æ“作。"
#: doc/classes/ResourceLoader.xml:4
msgid "Singleton used to load resource files."
msgstr "ç”¨äºŽåŠ è½½èµ„æºæ–‡ä»¶çš„å•例。"
#: doc/classes/ResourceLoader.xml:7
-#, fuzzy
msgid ""
"Singleton used to load resource files from the filesystem.\n"
"It uses the many [ResourceFormatLoader] classes registered in the engine "
@@ -57634,10 +57775,8 @@ msgid ""
"them to a format that can be used by the engine."
msgstr ""
"ç”¨äºŽä»Žæ–‡ä»¶ç³»ç»ŸåŠ è½½èµ„æºæ–‡ä»¶çš„å•例。\n"
-"它使用引擎中注册的许多[ResourceFormatLoader]类(无论是内置的还是æ¥è‡ªæ’件的)"
-"将文件加载到内存中,并将其转æ¢ä¸ºå¼•擎å¯ä»¥ä½¿ç”¨çš„æ ¼å¼ã€‚\n"
-"GDScript有一个简化的[method @GDScript.load]内置方法,å¯ä»¥åœ¨å¤§å¤šæ•°æƒ…况下使用,"
-"把[ResourceLoader]的使用留给更高级的场景。"
+"它使用在引擎中注册的许多[ResourceFormatLoader]类(无论是内置的还是æ¥è‡ªæ’ä»¶"
+"的)æ¥å°†æ–‡ä»¶åŠ è½½åˆ°å†…å­˜ä¸­ï¼Œå¹¶å°†å®ƒä»¬è½¬æ¢ä¸ºå¼•擎å¯ä»¥ä½¿ç”¨çš„æ ¼å¼ã€‚"
#: doc/classes/ResourceLoader.xml:19
msgid ""
@@ -57662,10 +57801,9 @@ msgstr "返回资æºç±»åž‹çš„已识别扩展å列表。"
#: doc/classes/ResourceLoader.xml:41
msgid ""
"[i]Deprecated method.[/i] Use [method has_cached] or [method exists] instead."
-msgstr ""
+msgstr "[i]废弃的方法。[/i]使用[method has_cached]或[method exists]代替。"
#: doc/classes/ResourceLoader.xml:48
-#, fuzzy
msgid ""
"Returns whether a cached resource is available for the given [code]path[/"
"code].\n"
@@ -57675,13 +57813,12 @@ msgid ""
"can be overridden by using [method Resource.take_over_path] on a new "
"resource for that same path."
msgstr ""
-"返回给定[code]path[/code]çš„ç¼“å­˜èµ„æºæ˜¯å¦å¯ç”¨ã€‚\n"
-"一旦一个资æºè¢«å¼•擎加载,它就会被缓存在内存中,以便更快地访问,未æ¥å¯¹[method "
-"load]方法的调用将使用缓存的版本。缓存的资æºå¯ä»¥é€šè¿‡å¯¹åŒä¸€è·¯å¾„的新资æºä½¿ç”¨"
-"[method Resource.take_over_path]æ¥è¦†ç›–。"
+"返回给定路径[code]path[/code]çš„ç¼“å­˜èµ„æºæ˜¯å¦å¯ç”¨ã€‚\n"
+"一旦资æºè¢«å¼•擎加载,它就会被缓存在内存中,以便更快地访问,未æ¥å¯¹[method load]"
+"或[method load_interactive]方法的调用将使用缓存的版本。缓存的资æºå¯ä»¥é€šè¿‡å¯¹åŒ"
+"一路径的新资æºä½¿ç”¨[method Resource.take_over_path]æ¥è¦†ç›–。"
#: doc/classes/ResourceLoader.xml:58
-#, fuzzy
msgid ""
"Loads a resource at the given [code]path[/code], caching the result for "
"further access.\n"
@@ -57701,14 +57838,17 @@ msgid ""
"be used in most situations, leaving the use of [ResourceLoader] for more "
"advanced scenarios."
msgstr ""
-"在给定的[code]path[/code]上加载一个资æºï¼Œç¼“存结果以便进一步访问。\n"
-"便¬¡æŸ¥è¯¢æ³¨å†Œçš„[ResourceFormatLoader],找到第一个å¯ä»¥å¤„ç†è¯¥æ–‡ä»¶æ‰©å±•å的,然åŽ"
-"å°è¯•加载。如果加载失败,其余的ResourceFormatLoaders也会被å°è¯•。\n"
-"一个å¯é€‰çš„[code]type_hint[/code]å¯ä»¥ç”¨æ¥è¿›ä¸€æ­¥æŒ‡å®šåº”该由"
-"[ResourceFormatLoader]处ç†çš„[Resource]类型。\n"
+"在给定的路径[code]path[/code]上加载一个资æºï¼Œç¼“存结果以便进一步访问。\n"
+"便¬¡æŸ¥è¯¢æ³¨å†Œçš„[ResourceFormatLoader],找到第一个å¯ä»¥å¤„ç†è¯¥æ–‡ä»¶æ‰©å±•å的加载"
+"器,然åŽå°è¯•加载。如果加载失败,其余的ResourceFormatLoaders也会被å°è¯•。\n"
+"一个å¯é€‰çš„[code]type_hint[/code]类型æç¤ºå¯ä»¥ç”¨æ¥è¿›ä¸€æ­¥æŒ‡å®š"
+"[ResourceFormatLoader]应处ç†çš„[Resource]资æºç±»åž‹ã€‚任何继承自[Resource]的东西"
+"都å¯ä»¥è¢«ç”¨ä½œç±»åž‹æç¤ºï¼Œä¾‹å¦‚图åƒ[Image]。\n"
"如果[code]no_cache[/code]是[code]true[/code],资æºç¼“存将被绕过,资æºå°†è¢«é‡æ–°"
"加载。å¦åˆ™ï¼Œå¦‚果缓存的资æºå­˜åœ¨ï¼Œå°†è¢«è¿”回。\n"
-"如果没有ResourceFormatLoaderå¯ä»¥å¤„ç†è¯¥æ–‡ä»¶ï¼Œåˆ™è¿”回一个空资æºã€‚"
+"如果没有[ResourceFormatLoader]å¯ä»¥å¤„ç†è¯¥æ–‡ä»¶ï¼Œåˆ™è¿”回一个空资æºã€‚\n"
+"GDScript有一个简化的[method @GDScript.load]内置方法,å¯ä»¥åœ¨å¤§å¤šæ•°æƒ…况下使用,"
+"把[ResourceLoader]的使用留给更高级的场景。"
#: doc/classes/ResourceLoader.xml:71
msgid ""
@@ -57721,6 +57861,11 @@ msgid ""
"Anything that inherits from [Resource] can be used as a type hint, for "
"example [Image]."
msgstr ""
+"开始交互å¼åŠ è½½ä¸€ä¸ªèµ„æºã€‚返回的[ResourceInteractiveLoader]对象å…许以高粒度加"
+"载,连续调用其[method ResourceInteractiveLoader.poll]轮询方法æ¥åŠ è½½åˆ†å—。\n"
+"一个å¯é€‰çš„[code]type_hint[/code]类型æç¤ºå¯ä»¥ç”¨æ¥è¿›ä¸€æ­¥æŒ‡å®šåº”该由"
+"[ResourceFormatLoader]处ç†çš„资æº[Resource]类型。任何继承自[Resource]的东西都"
+"å¯ä»¥è¢«ç”¨ä½œç±»åž‹æç¤ºï¼Œä¾‹å¦‚[Image]。"
#: doc/classes/ResourceLoader.xml:79
msgid ""
@@ -57840,7 +57985,7 @@ msgstr "ä¸è¦ä¿å­˜ç¼–辑器特定的元数æ®ï¼ˆç”±å…¶ [code]__editor [/code]
#: doc/classes/ResourceSaver.xml:46
msgid "Save as big endian (see [member File.endian_swap])."
-msgstr "ä¿å­˜ä¸ºå¤§ç«¯ï¼ˆå‚è§ [member File.endian_swap])。"
+msgstr "ä¿å­˜ä¸ºå¤§ç«¯ï¼ˆå‚阅 [member File.endian_swap])。"
#: doc/classes/ResourceSaver.xml:49
msgid ""
@@ -57925,9 +58070,8 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:16
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/132"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/132"
#: doc/classes/RichTextLabel.xml:26
#, fuzzy
@@ -57979,25 +58123,29 @@ msgid ""
msgstr "返回文本标签的总字符数。ä¸åŒ…括 BBCode。"
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
-msgstr "返回垂直滚动æ¡ã€‚"
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr "返回å¯è§è¡Œæ•°ã€‚"
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
"安装自定义效果。 [code]effect[/code] 应该是一个有效的 [RichTextEffect]。"
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr "在标签堆中添加一个æ¢è¡Œæ ‡ç­¾ã€‚"
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
@@ -58006,11 +58154,11 @@ msgstr ""
"[method append_bbcode] 的指定版本。清除标记堆栈并æ’入新内容。如果æˆåŠŸè§£æž "
"[code]bbcode[/code],则返回 [constant OK]。"
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr "å°† BBCode 傿•° [code]expressions[/code] è§£æžä¸ºå­—典。"
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
@@ -58018,7 +58166,7 @@ msgstr ""
"ç»ˆæ­¢å½“å‰æ ‡ç­¾ã€‚使用 [code]push_*[/code] æ–¹æ³•ä¹‹åŽæ‰‹åЍ关闭 BBCodes。ä¸éœ€è¦éµå¾ª "
"[code]add_*[/code] 方法。"
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
@@ -58026,7 +58174,7 @@ msgstr ""
"æ ¹æ®ç»™å®šçš„[code][align][/code]值,添加一个[code]align[/code]标签。å¯èƒ½çš„值è§"
"[enum Align]。"
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
@@ -58035,12 +58183,12 @@ msgstr ""
"在标签堆中添加一个[code][font][/code]æ ‡ç­¾ï¼Œå­—ä½“ä¸ºé»‘ä½“ã€‚å¦‚æžœå½“å‰æ²¡æœ‰[code][i]"
"[/code]标签,这与添加一个[code][b][/code]标签相åŒã€‚"
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr "在标签堆中添加一个[code][font][/code]标签,字体为粗斜体。"
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
@@ -58048,18 +58196,18 @@ msgstr ""
"将一个[code][cell][/code]标签添加到标签堆中。必须在一个[code][table][/code]标"
"签内。详情è§[method push_table]。"
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr "将一个[code][color][/code]标签添加到标签堆。"
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
"将一个[code][font][/code]标签添加到标签堆中。在其有效期内覆盖默认字体。"
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
@@ -58067,7 +58215,7 @@ msgstr ""
"å°† [code][indent][/code] 标签添加到标签堆栈。将 [code]level[/code] ä¹˜ä»¥å½“å‰ "
"[member tab_size] 以确定新的边è·é•¿åº¦ã€‚"
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
@@ -58076,7 +58224,7 @@ msgstr ""
"在标签堆中添加一个[code][font][/code]æ ‡ç­¾ï¼Œå­—ä½“ä¸ºæ–œä½“ã€‚å¦‚æžœå½“å‰æ²¡æœ‰[code][b]"
"[/code]标签,这与添加[code][i][/code]标签相åŒã€‚"
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
@@ -58085,7 +58233,7 @@ msgstr ""
"在标签栈中添加一个[code][list][/code]标签。类似于BBCodes [code][ol][/code] "
"或 [code][ul][/code] ï¼Œä½†æ”¯æŒæ›´å¤šçš„列表类型。未完全实现!"
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
@@ -58093,27 +58241,27 @@ msgstr ""
"添加一个[code][meta][/code]标签到标签堆中。类似于BBCode [code][url=something]"
"{text}[/url][/code],但支æŒéž[String]元数æ®ç±»åž‹ã€‚"
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr "在标签堆中添加一个[code][font][/code]标签,该标签为等宽字体。"
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr "在标签堆中添加一个具有正常字体的[code][font][/code]标签。"
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr "将一个[code][s][/code]标签添加到标签堆中。"
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr "将一个[code][table=columns][/code]标签添加到标签栈。"
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr "将一个[code][u][/code]标签添加到标签堆中。"
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -58124,11 +58272,11 @@ msgstr ""
"[code]line[/code]傿•°æ˜¯è¦åˆ é™¤çš„行的索引,它å¯ä»¥åœ¨[code][0, get_line_count() "
"- 1][/code]的区间内å–值。"
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr "滚动窗å£çš„顶行以匹é…[code]line[/code]。"
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -58143,7 +58291,7 @@ msgstr ""
"例如,2个比率为3å’Œ4的列加上70åƒç´ çš„å¯ç”¨å®½åº¦å°†åˆ†åˆ«æ‰©å±•30å’Œ40åƒç´ ã€‚\n"
"如果[code]expand[/code]是[code]false[/code],该列将ä¸ä¼šå¯¹æ€»çš„æ¯”例产生影å“。"
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -58151,7 +58299,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
#, fuzzy
msgid ""
"The label's text in BBCode format. Is not representative of manual "
@@ -58169,7 +58317,7 @@ msgstr ""
"[code]bbcode_text += \"some string\"[/code]),因为它å–代了整个文本,会导致速"
"度é™ä½Žã€‚使用[method append_bbcode]æ¥ä»£æ›¿æ·»åŠ æ–‡æœ¬ã€‚"
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
@@ -58178,7 +58326,7 @@ msgstr ""
"当å‰é…置的自定义效果。这是一个[RichTextEffect]的数组。\n"
"è¦æ·»åŠ ä¸€ä¸ªè‡ªå®šä¹‰æ•ˆæžœï¼Œä½¿ç”¨[method install_effect]会更方便。"
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -58190,7 +58338,7 @@ msgstr ""
"[b]注æ„:[/b] 此属性用作解决 [Container] 中 [RichTextLabel] 问题的解决方法,"
"但在æŸäº›æƒ…况下ä¸å¯é ï¼Œå°†åœ¨æœªæ¥ç‰ˆæœ¬ä¸­åˆ é™¤ã€‚"
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
@@ -58198,11 +58346,11 @@ msgstr ""
"如果 [code]true[/code],则会在元标签下划线,例如 [code][url]{text}[/url][/"
"code]。"
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr "如果 [code]true[/code],则标签使用自定义字体颜色。"
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -58214,7 +58362,7 @@ msgstr ""
"[b]注æ„:[/b] 设置这个属性会根æ®å½“å‰çš„[method get_total_character_count]æ›´æ–°"
"[member visible_characters]。"
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
@@ -58222,17 +58370,17 @@ msgstr ""
"如果 [code]true[/code],则滚动æ¡å¯è§ã€‚将此设置为 [code]false[/code] ä¸ä¼šå®Œå…¨"
"阻止滚动。è§[method scroll_to_line]。"
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr "如果 [code]true[/code],则窗å£å‘下滚动以自动显示新内容。"
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr "如果 [code]true[/code],标签å…许文本选择。"
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
@@ -58240,7 +58388,7 @@ msgstr ""
"与å•个制表符长度关è”的空格数。ä¸å½±å“文本标签中的 [code]\\t[/code],åªå½±å“缩进"
"标签。"
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
@@ -58250,7 +58398,7 @@ msgstr ""
"设置åŽï¼Œæ¸…除标签堆栈并在其顶部添加一个原始文本标签。ä¸è§£æž BBCode。ä¸ä¿®æ”¹ "
"[member bbcode_text]。"
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
#, fuzzy
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
@@ -58263,7 +58411,7 @@ msgstr ""
"[b]注æ„:[/b] 设置这个属性会根æ®å½“å‰çš„[method get_total_character_count]æ›´æ–°"
"[member visible_characters]。"
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -58275,113 +58423,113 @@ msgstr ""
"[url={\"data\"=\"hi\"}]hi[/url][/code],则该信å·çš„傿•°ä¸º[String]类型。如果需"
"è¦ç‰¹å®šç±»åž‹æˆ–对象,则必须使用 [method push_meta] æ–¹æ³•å°†æ•°æ®æ‰‹åЍæ’入标签堆栈。"
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr "当鼠标退出元标签时触å‘。"
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr "当鼠标进入元标签时触å‘。"
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr "使文本左对é½ã€‚"
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr "使文本居中。"
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr "使文本å³å¯¹é½ã€‚"
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr "使文本填充宽度。"
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr "æ¯ä¸ªåˆ—表项都有一个数字标记。"
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr "æ¯ä¸ªåˆ—è¡¨é¡¹éƒ½æœ‰ä¸€ä¸ªå­—æ¯æ ‡è®°ã€‚"
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr "æ¯ä¸ªåˆ—表项都有一个实心圆圈标记。"
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr "用于粗体字的字体。"
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr "用于粗斜体文字的字体。"
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr "默认文本颜色。"
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr "[RichTextLabel] 获得焦点时使用的背景。"
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
"选定文本的颜色(当[member selection_enabled]为[code]true[/code]时使用)。"
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr "字体阴影的颜色。"
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr "用于斜体字的字体。"
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr "行之间的垂直空间。"
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr "用于等宽文本的字体。"
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr "[RichTextLabel] 的正常背景。"
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr "默认的文本字体。"
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr "选择框的颜色。"
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
"布尔值。如果是1([code]true[/code]),阴影将以轮廓的形å¼å›´ç»•整个文本显示。"
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr "字体阴影的水平åç§»é‡ã€‚"
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr "字体阴影的垂直å移。"
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr "表中元素的水平间è·ã€‚"
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr "表中元素的垂直间è·ã€‚"
@@ -58419,7 +58567,6 @@ msgid ""
msgstr "物ç†ç‰©ä½“,其ä½ç½®æ˜¯é€šè¿‡ 3D ç©ºé—´ä¸­çš„ç‰©ç†æ¨¡æ‹Ÿç¡®å®šçš„。"
#: doc/classes/RigidBody.xml:7
-#, fuzzy
msgid ""
"This is the node that implements full 3D physics. This means that you do not "
"control a RigidBody directly. Instead, you can apply forces to it (gravity, "
@@ -58439,16 +58586,17 @@ msgid ""
"center. With GodotPhysics, the center of mass is the average of the "
"[CollisionShape] centers."
msgstr ""
-"这是实现完整 3D 物ç†çš„节点。这æ„å‘³ç€æ‚¨ä¸åº”直接控制 RigidBody3D。相å,您å¯ä»¥"
-"对其施加力(é‡åŠ›ã€å†²é‡ç­‰ï¼‰ï¼Œç‰©ç†æ¨¡æ‹Ÿå°†è®¡ç®—由此产生的è¿åЍã€ç¢°æ’žã€å¼¹è·³ã€æ—‹è½¬"
-"等。\n"
-"RigidBody3D 有 4 ç§è¡Œä¸º [member mode]:刚体ã€é™æ€ã€è§’色和è¿åŠ¨ã€‚\n"
-"[b]注æ„:[/b] ä¸è¦æ¯å¸§æˆ–éžå¸¸é¢‘ç¹åœ°æ›´æ”¹ RigidBody3D çš„ä½ç½®ã€‚零星的更改工作正"
-"常,但物ç†è¿è¡Œçš„粒度(固定 Hz)与通常的渲染(进程回调)ä¸åŒï¼Œç”šè‡³å¯èƒ½åœ¨å•独的"
-"线程中è¿è¡Œï¼Œå› æ­¤ä»Žè¿›ç¨‹å¾ªçŽ¯æ›´æ”¹å®ƒå¯èƒ½ä¼šå¯¼è‡´å¥‡æ€ªçš„行为。如果需è¦ç›´æŽ¥å½±å“bodyçš„"
-"状æ€ï¼Œä½¿ç”¨[method _integrate_forces],å¯ä»¥ç›´æŽ¥è®¿é—®ç‰©ç†çжæ€ã€‚\n"
-"如果您需è¦è¦†ç›–默认的物ç†è¡Œä¸ºï¼Œæ‚¨å¯ä»¥ç¼–写自定义力积分函数。è§[member "
-"custom_integrator]。"
+"这是实现完整 3D 物ç†çš„节点。这æ„味ç€ä½ æ˜¯ä¸ç›´æŽ¥æŽ§åˆ¶åˆšä½“。而是,å¯ä»¥å¯¹å…¶æ–½åŠ "
+"力,é‡åŠ›ã€å†²åŠ›ç­‰ï¼Œæ¨¡æ‹Ÿç‰©ç†å°†è®¡ç®—由此产生的è¿åЍã€ç¢°æ’žã€å¼¹è·³ã€æ—‹è½¬ç­‰ã€‚\n"
+"刚体有 4 ç§è¡Œä¸º [member mode]:刚体ã€é™æ€ã€è§’色和è¿åŠ¨ã€‚\n"
+"[b]注æ„:[/b]ä¸è¦æ¯å¸§æˆ–éžå¸¸é¢‘ç¹åœ°æ”¹å˜åˆšä½“çš„ä½ç½®ã€‚零星的更改将正常工作,但物ç†"
+"è¿è¡Œçš„粒度(固定 Hz)与通常的渲染(进程回调)ä¸åŒï¼Œç”šè‡³å¯èƒ½åœ¨å•独的线程中è¿"
+"行,因此从进程循环更改它å¯èƒ½ä¼šå¯¼è‡´å¼‚常。如果需è¦ç›´æŽ¥å½±å“物体的状æ€ï¼Œä½¿ç”¨"
+"[method _integrate_forces],å¯ä»¥ç›´æŽ¥è®¿é—®ç‰©ç†çжæ€ã€‚\n"
+"如果你需è¦è¦†ç›–默认的物ç†è¡Œä¸ºï¼Œå¯ä»¥ç¼–写自定义的力积分函数。å‚阅[member "
+"custom_integrator]。\n"
+"对于å­å¼¹ç‰©ç†ï¼ˆé»˜è®¤ï¼‰ï¼Œè´¨å¿ƒæ˜¯ RigidBody3D 中心。对于 GodotPhysics,质心是 "
+"[CollisionShape] 中心的平å‡å€¼ã€‚"
#: doc/classes/RigidBody.xml:23
msgid ""
@@ -58534,12 +58682,11 @@ msgstr ""
"在物ç†è¿ç®—之剿›´æ–°ä¸€æ¬¡ã€‚å¯ä»¥è€ƒè™‘ä½¿ç”¨ä¿¡å·æ¥ä»£æ›¿ã€‚"
#: doc/classes/RigidBody.xml:90
-#, fuzzy
msgid ""
"Returns the inverse inertia tensor basis. This is used to calculate the "
"angular acceleration resulting from a torque applied to the RigidBody."
msgstr ""
-"è¿”å›žåæƒ¯æ€§å¼ é‡åŸºæ•°ã€‚这被用æ¥è®¡ç®—施加在[RigidBody3D]上的力矩所产生的角加速度。"
+"返回逆惯性张力基矩阵(Basis)。这用于计算由施加到刚体的扭矩产生的角加速度。"
#: doc/classes/RigidBody.xml:98
msgid "Locks the specified linear or rotational axis."
@@ -58551,11 +58698,13 @@ msgid ""
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
+"阻尼刚体的旋转力。\n"
+"关于阻尼的更多细节,请å‚è§[member ProjectSettings.physics/3d/"
+"default_angular_damp]。"
#: doc/classes/RigidBody.xml:115
-#, fuzzy
msgid "RigidBody's rotational velocity."
-msgstr "RigidBody3D的旋转速度。"
+msgstr "刚体的旋转速度。"
#: doc/classes/RigidBody.xml:118
msgid "Lock the body's rotation in the X axis."
@@ -58583,14 +58732,15 @@ msgstr "é”定实体在Z轴上的移动。"
#: doc/classes/RigidBody.xml:136 doc/classes/RigidBody2D.xml:110
#: doc/classes/StaticBody.xml:19 doc/classes/StaticBody2D.xml:16
-#, fuzzy
msgid ""
"The body's bounciness. Values range from [code]0[/code] (no bounce) to "
"[code]1[/code] (full bounciness).\n"
"Deprecated, use [member PhysicsMaterial.bounce] instead via [member "
"physics_material_override]."
msgstr ""
-"实体的弹性。值的范围从[code]0[/code](无å弹)到[code]1[/code](完全å弹)。"
+"实体的弹性。值范围从[code]0[/code](无弹跳)到[code]1[/code](完全弹跳)。\n"
+"已被废弃,请通过[member physics_material_override]使用[member "
+"PhysicsMaterial.bounce]代替。"
#: doc/classes/RigidBody.xml:140
msgid ""
@@ -58600,15 +58750,19 @@ msgid ""
"[member mode] is [constant MODE_CHARACTER]. It can still be put to sleep "
"manually by setting its [member sleeping] property to [code]true[/code]."
msgstr ""
+"如果[code]true[/code],实体å¯ä»¥åœ¨æ²¡æœ‰è¿åŠ¨çš„æƒ…å†µä¸‹è¿›å…¥ç¡çœ æ¨¡å¼ã€‚è§[member "
+"sleeping]。\n"
+"[b]注æ„:[/b] RigidBody3D 的模å¼[member mode] 为常é‡[constant "
+"MODE_CHARACTER] æ—¶ä¸ä¼šè‡ªåŠ¨è¿›å…¥ä¼‘çœ æ¨¡å¼ã€‚ä»ç„¶å¯ä»¥é€šè¿‡å°†å…¶ [member sleep] 属性"
+"设置为 [code]true[/code] æ¥æ‰‹åŠ¨ä½¿å…¶è¿›å…¥ä¼‘çœ çŠ¶æ€ã€‚"
#: doc/classes/RigidBody.xml:144
-#, fuzzy
msgid ""
"If [code]true[/code], the RigidBody will emit signals when it collides with "
"another RigidBody. See also [member contacts_reported]."
msgstr ""
-"如果 [code]true[/code],当 RigidBody3D 与å¦ä¸€ä¸ª RigidBody3D 碰撞时,它会å‘出"
-"ä¿¡å·ã€‚å¦è§[member contacts_reported]。"
+"如果[code]true[/code],当RigidBody与å¦ä¸€ä¸ªRigidBody碰撞时会å‘出信å·ã€‚å¦è§æŽ¥è§¦"
+"报告[member contacts_reported]。"
#: doc/classes/RigidBody.xml:147
msgid ""
@@ -58655,9 +58809,11 @@ msgid ""
"Deprecated, use [member PhysicsMaterial.friction] instead via [member "
"physics_material_override]."
msgstr ""
+"实体的摩擦力,从0(无摩擦)到1(最大摩擦)。\n"
+"å·²ç»åºŸå¼ƒï¼Œè¯·é€šè¿‡[member physics_material_override]使用[member "
+"PhysicsMaterial.mores]代替。"
#: doc/classes/RigidBody.xml:162
-#, fuzzy
msgid ""
"This is multiplied by the global 3D gravity setting found in [b]Project > "
"Project Settings > Physics > 3d[/b] to produce RigidBody's gravity. For "
@@ -58669,7 +58825,6 @@ msgstr ""
"力,2将应用åŒå€çš„é‡åŠ›ï¼Œ0.5将对这个物体应用一åŠçš„é‡åŠ›ã€‚"
#: doc/classes/RigidBody.xml:165
-#, fuzzy
msgid ""
"The body's linear damp. Cannot be less than -1.0. If this value is different "
"from -1.0, any linear damp derived from the world or areas will be "
@@ -58677,8 +58832,10 @@ msgid ""
"See [member ProjectSettings.physics/3d/default_linear_damp] for more details "
"about damping."
msgstr ""
-"物体的线性阻尼。ä¸èƒ½å°äºŽ-1.0。如果这个值与-1.0ä¸åŒï¼Œä»»ä½•从world或area派生出æ¥"
-"的线性阻尼都会被覆盖。"
+"实体的线性阻尼。ä¸èƒ½å°äºŽ-1.0。如果这个值与-1.0ä¸åŒï¼Œä»»ä½•从世界或区域派生的线"
+"性阻尼将被覆盖。\n"
+"关于阻尼的更多细节,请å‚阅[member ProjectSettings.physics/3d/"
+"default_linear_damp]。"
#: doc/classes/RigidBody.xml:169
msgid ""
@@ -58762,45 +58919,73 @@ msgstr ""
"([code]local_shape[/code]) å¦ä¸€ä¸ªèº«ä½“碰撞。"
#: doc/classes/RigidBody.xml:209
+#, fuzzy
msgid ""
"Emitted when one of this RigidBody's [Shape]s collides with another "
"[PhysicsBody] or [GridMap]'s [Shape]s. Requires [member contact_monitor] to "
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
msgstr ""
+"当[PhysicsBody]或[GridMap]的一个形状[Shape]进入这个区域的一个形状[Shape]æ—¶å‘"
+"出的。需è¦å°†ç›‘控[member monitoring]设置为[code]true[/code]。如果[MeshLibrary]"
+"有碰撞形状[Shape],就会检测到[GridMap]。\n"
+"[code]body_id[/code]傿•°æ˜¯[PhysicsServer]使用的[PhysicsBody]或[MeshLibrary]çš„"
+"[CollisionObject]的RID。\n"
+"[code]body[/code] 傿•°æ˜¯[PhysicsBody]或[GridMap]çš„[Node],如果它存在于树"
+"中。\n"
+"[code]body_shape[/code] 傿•°æ˜¯ç”±[PhysicsServer]使用的[PhysicsBody]或[GridMap]"
+"的[Shape]的索引。\n"
+"[code]local_shape[/code] 傿•°æ˜¯[PhysicsServer]使用的这个区域的[Shape]的索引。"
#: doc/classes/RigidBody.xml:223
+#, fuzzy
msgid ""
"Emitted when the collision between one of this RigidBody's [Shape]s and "
"another [PhysicsBody] or [GridMap]'s [Shape]s ends. Requires [member "
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
msgstr ""
+"当[PhysicsBody]或[GridMap]的一个形状[Shape]进入这个区域的一个形状[Shape]æ—¶å‘"
+"出的。需è¦å°†ç›‘控[member monitoring]设置为[code]true[/code]。如果[MeshLibrary]"
+"有碰撞形状[Shape],就会检测到[GridMap]。\n"
+"[code]body_id[/code]傿•°æ˜¯[PhysicsServer]使用的[PhysicsBody]或[MeshLibrary]çš„"
+"[CollisionObject]的RID。\n"
+"[code]body[/code] 傿•°æ˜¯[PhysicsBody]或[GridMap]çš„[Node],如果它存在于树"
+"中。\n"
+"[code]body_shape[/code] 傿•°æ˜¯ç”±[PhysicsServer]使用的[PhysicsBody]或[GridMap]"
+"的[Shape]的索引。\n"
+"[code]local_shape[/code] 傿•°æ˜¯[PhysicsServer]使用的这个区域的[Shape]的索引。"
#: doc/classes/RigidBody.xml:233 doc/classes/RigidBody2D.xml:208
msgid ""
@@ -58823,11 +59008,10 @@ msgstr ""
"到用户代ç çš„å½±å“。"
#: doc/classes/RigidBody.xml:243
-#, fuzzy
msgid ""
"Static mode. The body behaves like a [StaticBody], and can only move by user "
"code."
-msgstr "陿€æ¨¡å¼ã€‚物体的行为就åƒä¸€ä¸ª[StaticBody3D],åªèƒ½é€šè¿‡ç”¨æˆ·ä»£ç æ¥ç§»åŠ¨ã€‚"
+msgstr "陿­¢æ¨¡å¼ã€‚实体的行为就åƒä¸€ä¸ª[StaticBody],åªèƒ½é€šè¿‡ç”¨æˆ·ä»£ç ç§»åŠ¨ã€‚"
#: doc/classes/RigidBody.xml:246
msgid ""
@@ -58835,12 +59019,11 @@ msgid ""
msgstr "角色模å¼ã€‚这与刚体的行为类似,但ä¸èƒ½æ—‹è½¬ã€‚"
#: doc/classes/RigidBody.xml:249
-#, fuzzy
msgid ""
"Kinematic body mode. The body behaves like a [KinematicBody], and can only "
"move by user code."
msgstr ""
-"è¿åŠ¨å­¦æ¨¡å¼ã€‚这个物体的行为就åƒä¸€ä¸ª[KinematicBody2D]ï¼Œå¿…é¡»é€šè¿‡ä»£ç æ¥ç§»åŠ¨ã€‚"
+"è¿åŠ¨ä½“æ¨¡å¼ã€‚这个实体的行为就åƒä¸€ä¸ª[KinematicBody],åªèƒ½é€šè¿‡ç”¨æˆ·ä»£ç æ¥ç§»åŠ¨ã€‚"
#: doc/classes/RigidBody2D.xml:4
msgid "A body that is controlled by the 2D physics engine."
@@ -58879,17 +59062,15 @@ msgstr ""
"也请记ä½ï¼Œç‰©ç†ä½“管ç†è‡ªå·±çš„å˜æ¢ï¼Œå®ƒè¦†ç›–äº†ä½ è®¾ç½®çš„å˜æ¢ã€‚所以任何直接或间接的å˜"
"æ¢ï¼ˆåŒ…括节点或其父体的缩放)将åªåœ¨ç¼–辑器中å¯è§ï¼Œå¹¶åœ¨è¿è¡Œæ—¶ç«‹å³é‡ç½®ã€‚\n"
"如果你需è¦è¦†ç›–默认的物ç†è¡Œä¸ºæˆ–者在è¿è¡Œæ—¶æ·»åŠ ä¸€ä¸ªå˜æ¢ï¼Œä½ å¯ä»¥å†™ä¸€ä¸ªè‡ªå®šä¹‰çš„åˆ"
-"力。å‚è§[member custom_integrator]。"
+"力。å‚阅[member custom_integrator]。"
#: doc/classes/RigidBody2D.xml:15
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/119"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/119"
#: doc/classes/RigidBody2D.xml:16 doc/classes/Sprite.xml:10
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/148"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/148"
#: doc/classes/RigidBody2D.xml:23
msgid ""
@@ -59107,38 +59288,68 @@ msgstr ""
"([code]local_shape[/code]) å¦ä¸€ä¸ªèº«ä½“碰撞。"
#: doc/classes/RigidBody2D.xml:186
+#, fuzzy
msgid ""
"Emitted when one of this RigidBody2D's [Shape2D]s collides with another "
"[PhysicsBody2D] or [TileMap]'s [Shape2D]s. Requires [member contact_monitor] "
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
-msgstr ""
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+"当[PhysicsBody2D]或[TileMap]的一个[Shape2D]离开这个Area2D的一个[Shape2D]æ—¶å‘"
+"出的。需è¦å°†ç›‘控[member monitoring]设置为[code]true[/code]。如果[TileSet]有碰"
+"撞形状[Shape2D]s,就会检测到[TileMap]s。\n"
+"[code]body_id[/code] 傿•°æ˜¯[Physics2DServer]使用的[PhysicsBody2D]或[TileSet]"
+"的[CollisionObject2D]的RID。\n"
+"[code]body[/code]傿•°æ˜¯[PhysicsBody2D]或[TileMap]çš„[Node],如果它存在于树中的"
+"è¯ã€‚\n"
+"[code]body_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的[PhysicsBody2D]或"
+"[TileMap]的[Shape2D]的索引。\n"
+"[code]local_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的这个Area2Dçš„[Shape2D]çš„"
+"索引。"
#: doc/classes/RigidBody2D.xml:199
+#, fuzzy
msgid ""
"Emitted when the collision between one of this RigidBody2D's [Shape2D]s and "
"another [PhysicsBody2D] or [TileMap]'s [Shape2D]s ends. Requires [member "
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
-msgstr ""
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
+msgstr ""
+"当[PhysicsBody2D]或[TileMap]çš„[Shape2D]之一进入此Area2Dçš„[Shape2D]之一时å‘"
+"出。需è¦å°†ç›‘控[member monitoring]设置为[code]true[/code]。如果[TileSet]有碰撞"
+"形状[Shape2D]s,就会检测到[TileMap]s。\n"
+"[code]body_id[/code]傿•°æ˜¯ [Physics2DServer]使用的[PhysicsBody2D]或[TileSet]"
+"的[CollisionObject2D]的RID。\n"
+"[code]body[/code]傿•°æ˜¯ [PhysicsBody2D]或[TileMap]çš„[节点],如果它在树上存在"
+"çš„è¯ã€‚\n"
+"[code]body_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的[PhysicsBody2D]或"
+"[TileMap]的[Shape2D]的索引。\n"
+"[code]local_shape[/code] 傿•°æ˜¯[Physics2DServer]使用的这个Area2Dçš„[Shape2D]çš„"
+"索引。"
#: doc/classes/RigidBody2D.xml:215
msgid ""
@@ -59522,13 +59733,12 @@ msgid ""
msgstr ""
#: doc/classes/RootMotionView.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/latest/tutorials/animation/animation_tree."
"html#root-motion"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/animation/animation_tree."
-"html"
+"https://docs.godotengine.org/en/latest/tutorials/animation/animation_tree."
+"html#root-motion"
#: doc/classes/RootMotionView.xml:17
msgid "Path to an [AnimationTree] node to use as a basis for root motion."
@@ -59540,9 +59750,8 @@ msgid "The grid's cell size in 3D units."
msgstr "图å—地图的å•元大å°ã€‚"
#: doc/classes/RootMotionView.xml:23
-#, fuzzy
msgid "The grid's color."
-msgstr "线的颜色。"
+msgstr "网格的颜色。"
#: doc/classes/RootMotionView.xml:26
msgid ""
@@ -59596,7 +59805,7 @@ msgid ""
"Returns the connection flags for the signal at [code]idx[/code]. See [enum "
"Object.ConnectFlags] constants."
msgstr ""
-"返回[code]idx[/code]处的信å·çš„连接标志。å‚è§[enum Object.ConnectFlags]常数。"
+"返回[code]idx[/code]处的信å·çš„连接标志。å‚阅[enum Object.ConnectFlags]常数。"
#: doc/classes/SceneState.xml:38
msgid "Returns the method connected to the signal at [code]idx[/code]."
@@ -59771,22 +59980,20 @@ msgstr ""
"[SceneTree]是场景使用的默认[MainLoop]实现,因此负责游æˆçš„循环。"
#: doc/classes/SceneTree.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/scene_tree."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/step_by_step/"
-"scene_tree.html"
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/scene_tree."
+"html"
#: doc/classes/SceneTree.xml:13
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/viewports/multiple_resolutions."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/viewports/"
-"multiple_resolutions.html"
+"https://docs.godotengine.org/en/3.4/tutorials/viewports/multiple_resolutions."
+"html"
#: doc/classes/SceneTree.xml:21
msgid ""
@@ -59796,27 +60003,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
#, fuzzy
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
@@ -59833,7 +60044,7 @@ msgstr ""
"æˆåŠŸæ—¶è¿”å›ž[constant OK],如果[code]path[/code]ä¸èƒ½è¢«åŠ è½½åˆ°ä¸€ä¸ª[PackedScene]"
"中,则返回[constant ERR_CANT_CREATE],如果该场景ä¸èƒ½è¢«å®žä¾‹åŒ–。"
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
#, fuzzy
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
@@ -59847,7 +60058,7 @@ msgstr ""
"æˆåŠŸæ—¶è¿”å›ž[constant OK],如果场景ä¸èƒ½è¢«å®žä¾‹åŒ–,则返回[constant "
"ERR_CANT_CREATE]。"
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
#, fuzzy
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
@@ -59874,49 +60085,49 @@ msgstr ""
" print(\"end\")\n"
"[/codeblock]"
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr "返回当å‰çš„帧数,å³è‡ªåº”用程åºå¯åЍ以æ¥çš„æ€»å¸§æ•°ã€‚"
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
"返回此 [SceneTree] 的 [member network_peer] 的所有连接对等方的对等 ID。"
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr "返回此 [SceneTree] 的 [member network_peer] 的唯一对等 ID。"
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr "返回此[SceneTree]中的节点数。"
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr "返回一个分é…给给定组的所有节点的列表。"
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr "返回最近收到的RPC调用的å‘é€è€…的对等ID。"
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr "如果给定的组存在,返回[code]true[/code]。"
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
#, fuzzy
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-"å¦‚æžœèŠ‚ç‚¹æ­£åœ¨å¤„ç†æœªè¢«å¤„ç†çš„输入(å‚è§[方法set_process_unhandled_input]),则返回"
+"å¦‚æžœèŠ‚ç‚¹æ­£åœ¨å¤„ç†æœªè¢«å¤„ç†çš„输入(å‚阅[方法set_process_unhandled_input]),则返回"
"[code]true[/code]。"
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
@@ -59924,11 +60135,11 @@ msgstr ""
"如果此 [SceneTree] çš„ [member network_peer] 处于æœåŠ¡å™¨æ¨¡å¼ï¼ˆä¾¦å¬è¿žæŽ¥ï¼‰ï¼Œåˆ™è¿”"
"回 [code]true[/code]。"
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr "将给定的通知å‘é€ç»™ [code] group [/code] 的所有æˆå‘˜ã€‚"
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
@@ -59936,13 +60147,13 @@ msgstr ""
"将给定的通知å‘é€ç»™ [code] group [/code] 的所有æˆå‘˜ï¼Œéµä»Žç»™å®šçš„ [enum "
"GroupCallFlags]。"
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr "将给定的对象排队准备删除,å³åœ¨å½“å‰å¸§ä¹‹åŽè°ƒç”¨ [method Object.free] 。"
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
#, fuzzy
msgid ""
"Quits the application at the end of the current iteration. A process "
@@ -59957,7 +60168,7 @@ msgstr ""
"[code]0[/code] 或更大,它将覆盖在退出应用程åºä¹‹å‰å®šä¹‰çš„ [member OS."
"exit_code]。"
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -59971,16 +60182,16 @@ msgstr ""
"[PackedScene] 中,则返回 [constant ERR_CANT_OPEN],如果场景无法加载,则返回 "
"[constant ERR_CANT_CREATE]。"
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
"如果[code]true[/code],应用程åºè‡ªåŠ¨æŽ¥å—退出。默认å¯ç”¨ã€‚\n"
-"对于移动平å°ï¼Œè¯·å‚è§ [method set_quit_on_go_back]。"
+"对于移动平å°ï¼Œè¯·å‚阅 [method set_quit_on_go_back]。"
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
@@ -59988,7 +60199,7 @@ msgstr ""
"在给定组的所有æˆå‘˜ä¸Šå°†ç»™å®šçš„ [code] property [/code] 设置为 [code] value [/"
"code]。"
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
@@ -59996,12 +60207,12 @@ msgstr ""
"将给定的 [code] property [/code] 设置为给定组的所有æˆå‘˜çš„ [code] value [/"
"code],尊é‡ç»™å®šçš„ [enum GroupCallFlags]。"
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
#, fuzzy
msgid "Marks the most recent [InputEvent] as handled."
msgstr "å°†å¿«æ·æ–¹å¼çš„ [InputEvent] 作为 [String] 返回。"
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
#, fuzzy
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
@@ -60014,24 +60225,24 @@ msgstr ""
"è¦åœ¨ç¦ç”¨æ­¤é€‰é¡¹æ—¶å¤„ç†â€œè¿”å›žâ€æŒ‰é’®ï¼Œè¯·ä½¿ç”¨ [constant DisplayServer."
"WINDOW_EVENT_GO_BACK_REQUEST]。"
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr "当å‰åœºæ™¯ã€‚"
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
"如果 [code]true[/code],以调试为目的从编辑器è¿è¡Œæ¸¸æˆæ—¶ï¼Œç¢°æ’žå½¢çŠ¶å°†æ˜¯å¯è§çš„。"
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
@@ -60039,15 +60250,15 @@ msgstr ""
"如果 [code]true[/code],以调试为目的从编辑器è¿è¡Œæ¸¸æˆæ—¶ï¼Œå¯¼èˆªå¤šè¾¹å½¢å°†æ˜¯å¯è§"
"的。"
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr "编辑场景的根。"
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr "此 [SceneTree] 的默认 [MultiplayerAPI] 实例。"
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -60063,7 +60274,7 @@ msgstr ""
"æ•°æ®åŒ…并投递RPCs/RSETs。这å…许在ä¸åŒçš„循环(例如物ç†ã€çº¿ç¨‹ã€ç‰¹å®šæ—¶é—´æ­¥é•¿ï¼‰ä¸­"
"è¿è¡Œ RPC/RSET,并在从线程访问 [MultiplayerAPI] 时进行手动 [Mutex] ä¿æŠ¤ã€‚"
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -60079,7 +60290,7 @@ msgstr ""
"认设置为继承网络模å¼ã€‚ä¸Žç½‘ç»œç›¸å…³çš„äº‹ä»¶ï¼ˆè¿žæŽ¥ã€æ–­å¼€è¿žæŽ¥ã€æ–°å®¢æˆ·ç«¯ï¼‰çš„å¤„ç†æ˜¯é€š"
"过连接到 [SceneTree] çš„ä¿¡å·æ¥å®Œæˆçš„。"
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
#, fuzzy
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
@@ -60094,7 +60305,7 @@ msgstr ""
"- [method Node._process]ã€[method Node._physics_process] å’Œ[method Node."
"_input] å°†ä¸å†åœ¨èŠ‚ç‚¹ä¸­è°ƒç”¨ã€‚"
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
@@ -60102,17 +60313,17 @@ msgstr ""
"如果 [code]true[/code],则 [SceneTree] çš„ [member network_peer] æ‹’ç»æ–°çš„ä¼ å…¥"
"连接。"
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
#, fuzzy
msgid "The [SceneTree]'s root [Viewport]."
msgstr "[SceneTree] 的根 [Window]。"
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
#, fuzzy
msgid "If [code]true[/code], font oversampling is used."
msgstr "如果[code]true[/code],则å¯ç”¨æ³•线映射。"
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
@@ -60120,7 +60331,7 @@ msgstr ""
"当这个[SceneTree]çš„[member network_peer]æˆåŠŸè¿žæŽ¥åˆ°ä¸€ä¸ªæœåŠ¡å™¨æ—¶å‘出。åªåœ¨å®¢æˆ·"
"端å‘出。"
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
@@ -60128,7 +60339,7 @@ msgstr ""
"æ¯å½“æ­¤ [SceneTree] çš„ [member network_peer] 无法与æœåŠ¡å™¨å»ºç«‹è¿žæŽ¥æ—¶å‘出。仅在"
"客户端上å‘出。"
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
@@ -60137,18 +60348,18 @@ msgstr ""
"当文件从æ“作系统的文件管ç†å™¨ä¸­è¢«æ‹–到游æˆçª—å£ä¸­æ—¶å‘å‡ºã€‚å‚æ•°æ˜¯ä¸€ä¸ªæ–‡ä»¶è·¯å¾„列表"
"和拖动文件的å±å¹•标识符。"
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
#, fuzzy
msgid "Emitted whenever global menu item is clicked."
msgstr "当项目被选中时触å‘。"
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr "在对[SceneTree]中的æ¯ä¸ªèŠ‚ç‚¹è°ƒç”¨[method Node._process]之å‰ç«‹å³å‘出。"
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -60159,7 +60370,7 @@ msgstr ""
"等体的对等体ID。当其他客户端连接到åŒä¸€ä¸ªæœåŠ¡å™¨æ—¶ï¼Œå®¢æˆ·ç«¯ä¼šå¾—åˆ°é€šçŸ¥ã€‚å½“è¿žæŽ¥åˆ°"
"一个æœåŠ¡å™¨æ—¶ï¼Œå®¢æˆ·ç«¯ä¹Ÿä¼šæ”¶åˆ°è¯¥æœåŠ¡å™¨çš„è¿™ä¸ªä¿¡å·ï¼ˆID为1)。"
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
@@ -60168,25 +60379,25 @@ msgstr ""
"æ¯å½“æ­¤ [SceneTree] çš„ [member network_peer] 与对等方断开连接时å‘出。当其他客"
"户端与åŒä¸€æœåŠ¡å™¨æ–­å¼€è¿žæŽ¥æ—¶ï¼Œå®¢æˆ·ç«¯ä¼šæ”¶åˆ°é€šçŸ¥ã€‚"
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr "当将节点添加到 [SceneTree] æ—¶å‘出。"
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr "当节点的é…置更改时å‘出。仅在 [code]tool[/code] 模å¼ä¸‹å‘射。"
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr "当从 [SceneTree] 中删除节点时å‘出。"
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr "当节点é‡å‘½åæ—¶å‘出。"
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
@@ -60194,13 +60405,13 @@ msgstr ""
"在 [SceneTree] 中的æ¯ä¸ªèŠ‚ç‚¹ä¸Šè°ƒç”¨ [method Node._physics_process] 之å‰ç«‹å³å‘"
"出。"
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
@@ -60208,68 +60419,67 @@ msgstr ""
"当此 [SceneTree] çš„ [member network_peer] 与æœåŠ¡å™¨æ–­å¼€è¿žæŽ¥æ—¶å‘出。仅在客户端"
"上å‘出。"
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr "当 [SceneTree] 层次结构å‘生å˜åŒ–(移动或é‡å‘½åå­é¡¹ç­‰ï¼‰æ—¶å‘出。"
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr "调用没有标志的组(默认)。"
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr "以相å的场景顺åºè°ƒç”¨ç»„。"
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr "ç«‹å³è°ƒç”¨ä¸€ä¸ªç»„(调用通常在空闲时进行)。"
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr "å³ä½¿è°ƒç”¨å¤šæ¬¡æ‰§è¡Œï¼Œä¹Ÿåªè°ƒç”¨ä¸€æ¬¡ç»„。"
-#: doc/classes/SceneTree.xml:365
-#, fuzzy
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
-msgstr "åœæ­¢ç›‘å¬ã€‚"
+msgstr "未拉伸。"
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
-msgstr ""
+msgstr "以更高的分辨率渲染拉伸(æ’值)。"
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -60292,7 +60502,7 @@ msgid ""
" print(\"Timer ended.\")\n"
"[/codeblock]"
msgstr ""
-"一个由场景树管ç†çš„ä¸€æ¬¡æ€§å®šæ—¶å™¨ï¼Œå®ƒåœ¨å®Œæˆæ—¶å‘出[signal timeout]。也请å‚è§"
+"一个由场景树管ç†çš„ä¸€æ¬¡æ€§å®šæ—¶å™¨ï¼Œå®ƒåœ¨å®Œæˆæ—¶å‘出[signal timeout]。也请å‚阅"
"[method SceneTree.create_timer]。\n"
"与[Timer]相å,它ä¸éœ€è¦å®žä¾‹åŒ–节点。常用于创建一个一次性的延迟定时器,如下é¢çš„"
"例å­ã€‚\n"
@@ -60307,7 +60517,7 @@ msgstr ""
msgid "The time remaining."
msgstr "剩余时间。"
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr "当计时器到 0 æ—¶å‘出。"
@@ -60328,13 +60538,12 @@ msgstr ""
"的基类之一相匹é…,[method Object.set_script] 会扩展该对象。"
#: doc/classes/Script.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/scripting."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/step_by_step/"
-"scripting.html"
+"https://docs.godotengine.org/en/3.4/getting_started/step_by_step/scripting."
+"html"
#: doc/classes/Script.xml:17
msgid "Returns [code]true[/code] if the script can be instanced."
@@ -60546,14 +60755,23 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
-msgstr "返回此 [ScrollContainer] çš„æ°´å¹³æ»šåŠ¨æ¡ [HScrollBar]。"
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
-msgstr "返回此 [ScrollContainer] çš„åž‚ç›´æ»šåŠ¨æ¡ [VScrollBar]。"
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
@@ -60562,31 +60780,31 @@ msgstr ""
"如果 [code]true[/code],则 ScrollContainer 将自动滚动到获得焦点的å­é¡¹ï¼ˆåŒ…括间"
"接å­é¡¹ï¼‰ä»¥ç¡®ä¿å®ƒä»¬å®Œå…¨å¯è§ã€‚"
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr "当剿°´å¹³æ»šåŠ¨å€¼ã€‚"
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr "如果 [code]true[/code],å¯ç”¨æ°´å¹³æ»šåŠ¨ã€‚"
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr "当å‰åž‚直滚动值。"
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr "如果 [code]true[/code],则å¯ç”¨åž‚直滚动。"
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr "æ»šåŠ¨åœæ­¢æ—¶å‘出。"
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr "滚动开始时å‘出。"
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr "[ScrollContainer] 的背景 [StyleBox]。"
@@ -60666,18 +60884,16 @@ msgstr ""
"链接的教程。"
#: doc/classes/Shader.xml:10 doc/classes/ShaderMaterial.xml:11
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/shading/index.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/shading/index.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/shading/index.html"
#: doc/classes/Shader.xml:11
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/shading/your_first_shader/"
"what_are_shaders.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/shading/"
-"your_first_shader/what_are_shaders.html"
+"https://docs.godotengine.org/en/3.4/tutorials/shading/your_first_shader/"
+"what_are_shaders.html"
#: doc/classes/Shader.xml:18
msgid ""
@@ -60783,14 +60999,13 @@ msgid ""
msgstr "返回具有给定 [code] name [/code] çš„æè´¨å±žæ€§çš„默认值。"
#: doc/classes/ShaderMaterial.xml:40
-#, fuzzy
msgid ""
"Changes the value set for this material of a uniform in the shader.\n"
"[b]Note:[/b] [code]param[/code] must match the name of the uniform in the "
"code exactly."
msgstr ""
-"改å˜ç€è‰²å™¨ä¸­uniformçš„æè´¨çš„值。[b]注æ„:[/b] [code]param[/code]必须与代ç ä¸­çš„"
-"uniformå称完全匹é…。"
+"改å˜ç€è‰²å™¨ä¸­æè´¨çš„uniform值。\n"
+"[b]注æ„:[/b] [code]param[/code]必须与代ç ä¸­çš„uniformå称完全匹é…。"
#: doc/classes/ShaderMaterial.xml:47
msgid "The [Shader] program used to render this material."
@@ -60962,7 +61177,7 @@ msgid ""
"with respect to skeleton, so it not the actual global/world transform of the "
"bone."
msgstr ""
-"Skeleton3D æä¾›äº†ç”¨äºŽç®¡ç†éª¨éª¼çš„分层界é¢ï¼ŒåŒ…括姿势ã€ä¼‘æ¯å’ŒåŠ¨ç”»ï¼ˆå‚è§ "
+"Skeleton3D æä¾›äº†ç”¨äºŽç®¡ç†éª¨éª¼çš„分层界é¢ï¼ŒåŒ…括姿势ã€ä¼‘æ¯å’ŒåŠ¨ç”»ï¼ˆå‚阅 "
"[Animation])。它还å¯ä»¥ä½¿ç”¨å¸ƒå¨ƒå¨ƒç‰©ç†(ragdoll physics)。\n"
"éª¨éª¼ç›¸å¯¹äºŽéª¨æž¶çš„æ•´ä½“å˜æ¢ç”±ä»¥ä¸‹å±‚次顺åºç¡®å®šï¼šé™æ­¢å§¿åŠ¿ã€è‡ªå®šä¹‰å§¿åŠ¿å’Œå§¿åŠ¿ã€‚\n"
"请注æ„,下é¢çš„â€œå…¨å±€å§¿åŠ¿â€æ˜¯æŒ‡éª¨éª¼ç›¸å¯¹äºŽéª¨éª¼çš„æ•´ä½“å˜æ¢ï¼Œå› æ­¤å®ƒä¸æ˜¯éª¨éª¼çš„实际全"
@@ -61078,12 +61293,10 @@ msgstr ""
"项的休æ¯å§¿åŠ¿çš„å¼•ç”¨ï¼Œå¹¶ä½œä¸ºå¯¹å…¶éª¨éª¼çš„å•一访问点。"
#: doc/classes/Skeleton2D.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/animation/2d_skeletons.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/animation/2d_skeletons."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/animation/2d_skeletons.html"
#: doc/classes/Skeleton2D.xml:17
msgid ""
@@ -61410,20 +61623,16 @@ msgstr ""
"一个å¯å˜å½¢çš„物ç†ä½“。用于创建弹性或å¯å˜å½¢çš„ç‰©ä½“ï¼Œå¦‚å¸ƒã€æ©¡èƒ¶æˆ–å…¶ä»–æŸ”æ€§ææ–™ã€‚"
#: doc/classes/SoftBody.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/physics/soft_body.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/physics/soft_body.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/physics/soft_body.html"
#: doc/classes/SoftBody.xml:44
-#, fuzzy
msgid "Returns local translation of a vertex in the surface array."
-msgstr "返回当å‰åœ°åŸŸå¯¹æŒ‡å®šä¿¡æ¯ï¼Œå³key的翻译。"
+msgstr "è¿”å›žè¡¨é¢æ•°ç»„中顶点的局部平移。"
#: doc/classes/SoftBody.xml:51
-#, fuzzy
msgid "Returns [code]true[/code] if vertex is set to pinned."
-msgstr "å¦‚æžœå®šæ—¶å™¨è¢«åœæ­¢ï¼Œè¿”回[code]true[/code]。"
+msgstr "如果顶点设置为固定,则返回 [code]true[/code]。"
#: doc/classes/SoftBody.xml:83
msgid ""
@@ -61431,9 +61640,11 @@ msgid ""
"the optional [code]attachment_path[/code] can define a [Spatial] the pinned "
"vertex will be attached to."
msgstr ""
+"设置表é¢é¡¶ç‚¹çš„固定状æ€ã€‚当设置为 [code] true [/code] 时,å¯é€‰çš„"
+"[code]attachment_path[/code]å¯ä»¥å®šä¹‰ä¸€ä¸ªç©ºé—´[Spatial],被固定的顶点将连接到这"
+"个空间。"
#: doc/classes/SoftBody.xml:91
-#, fuzzy
msgid ""
"The physics layers this SoftBody is in.\n"
"Collidable objects can exist in any of 32 different layers. These layers "
@@ -61446,12 +61657,14 @@ msgid ""
"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
"documentation for more information."
msgstr ""
-"SoftBody3D 所在的物ç†å±‚。\n"
-"å¯ç¢°æ’žå¯¹è±¡å¯ä»¥å­˜åœ¨äºŽ 32 个ä¸åŒå±‚ä¸­çš„ä»»ä½•å±‚ä¸­ã€‚è¿™äº›å±‚åƒæ ‡è®°ç³»ç»Ÿä¸€æ ·å·¥ä½œï¼Œè€Œä¸"
-"是å¯è§†åŒ–的。 collidable å¯ä»¥ä½¿ç”¨è¿™äº›å±‚æ¥é€‰æ‹©å®ƒå¯ä»¥ä¸Žå“ªäº›å¯¹è±¡å‘生碰撞,使用"
-"collids_mask 属性。\n"
-"如果对象 A ä½äºŽå¯¹è±¡ B 扫æçš„任何层中,或者对象 B ä½äºŽå¯¹è±¡ A 扫æçš„任何层中,"
-"则会检测到接触。"
+"这个SoftBody所处的物ç†å±‚。\n"
+"å¯ç¢°æ’žçš„物体å¯ä»¥å­˜åœ¨äºŽ32个ä¸åŒå±‚中的任何一个。这些层的工作就åƒä¸€ä¸ªæ ‡ç­¾ç³»ç»Ÿï¼Œ"
+"并䏿˜¯å¯è§†åŒ–的。一个å¯ç¢°æ’žç‰©ä½“å¯ä»¥ä½¿ç”¨è¿™äº›å±‚æ¥é€‰æ‹©å®ƒå¯ä»¥ä¸Žå“ªäº›ç‰©ä½“碰撞,使用"
+"collision_mask属性。\n"
+"如果对象A在对象B所扫æçš„任何层中,或者对象B在对象A所扫æçš„任何层中,就会检测"
+"到接触。更多信æ¯è¯·å‚è§æ–‡æ¡£ä¸­çš„[url=https://docs.godotengine.org/en/3.4/"
+"tutorials/physics/physics_introduction.html#collision-layers-and-masks]碰撞层"
+"和掩ç [/url]。"
#: doc/classes/SoftBody.xml:96
msgid ""
@@ -61487,9 +61700,8 @@ msgid ""
msgstr "å¢žåŠ è¿™ä¸ªå€¼ä¼šæ”¹å–„æ¨¡æ‹Ÿç»“æžœï¼Œä½†ä¼šå½±å“æ€§èƒ½ã€‚ä½¿ç”¨æ—¶è¦æ³¨æ„。"
#: doc/classes/SoftBody.xml:121
-#, fuzzy
msgid "The SoftBody's mass."
-msgstr "SoftBody3D的质é‡ã€‚"
+msgstr "软体的质é‡ã€‚"
#: doc/classes/Spatial.xml:4
msgid "Most basic 3D game object, parent of all 3D-related nodes."
@@ -61522,34 +61734,27 @@ msgstr ""
"è¦å°†åº¦æ•°è½¬æ¢ä¸ºå¼§åº¦ï¼Œè¯·ä½¿ç”¨[method @GDScript.deg2rad]。"
#: doc/classes/Spatial.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/3d/introduction_to_3d.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/introduction_to_3d."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/3d/introduction_to_3d.html"
#: doc/classes/Spatial.xml:13 doc/classes/Vector3.xml:16
-#, fuzzy
msgid "https://github.com/godotengine/godot-demo-projects/tree/master/3d"
-msgstr ""
-"https://github.com/godotengine/godot-demo-projects/tree/master/audio/"
-"generator"
+msgstr "https://github.com/godotengine/godot-demo-projects/tree/master/3d"
#: doc/classes/Spatial.xml:25
-#, fuzzy
msgid ""
"Returns the parent [Spatial], or an empty [Object] if no parent exists or "
"parent is not of type [Spatial]."
msgstr ""
-"返回父节点[Node3D],如果ä¸å­˜åœ¨çˆ¶èŠ‚ç‚¹æˆ–è€…çˆ¶èŠ‚ç‚¹ä¸æ˜¯[Node3D]类型,则返回空的"
-"[Object]。"
+"返回父对象 [Spatial],如果ä¸å­˜åœ¨çˆ¶å¯¹è±¡æˆ–çˆ¶å¯¹è±¡ä¸æ˜¯ [Spatial] 类型,则返回一个"
+"空的 [Object]。"
#: doc/classes/Spatial.xml:31
-#, fuzzy
msgid ""
"Returns the current [World] resource this [Spatial] node is registered to."
-msgstr "返回这个[Node3D]节点所注册的当å‰[World3D]资æºã€‚"
+msgstr "返回此 [Spatial] èŠ‚ç‚¹æ‰€æ³¨å†Œçš„å½“å‰ [World] 资æºã€‚"
#: doc/classes/Spatial.xml:39
msgid ""
@@ -61888,10 +62093,8 @@ msgstr ""
"下é¢çš„æ•™ç¨‹ã€‚"
#: doc/classes/SpatialMaterial.xml:10
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/spatial_material.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/3d/spatial_material.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/3d/spatial_material.html"
#: doc/classes/SpatialMaterial.xml:17
msgid "Returns [code]true[/code], if the specified [enum Feature] is enabled."
@@ -61902,7 +62105,7 @@ msgid ""
"Returns [code]true[/code], if the specified flag is enabled. See [enum "
"Flags] enumerator for options."
msgstr ""
-"如果指定的标志被å¯ç”¨ï¼Œè¿”回 [code]true[/code]。å‚è§ [enum Flags] 枚举器的选"
+"如果指定的标志被å¯ç”¨ï¼Œè¿”回 [code]true[/code]。å‚阅 [enum Flags] 枚举器的选"
"项。"
#: doc/classes/SpatialMaterial.xml:31
@@ -61934,7 +62137,7 @@ msgid ""
msgstr ""
"如果 [code]true[/code],å¯ç”¨æŒ‡å®šçš„æ ‡å¿—。标志是å¯é€‰çš„行为,å¯ä»¥æ‰“开和关闭。使"
"用该函数一次åªèƒ½å¯ç”¨ä¸€ä¸ªæ ‡å¿—,ä¸èƒ½å°†æ ‡å¿—æžšä¸¾å™¨è¿›è¡Œä½æŽ©ç ï¼Œä»¥ä¸€æ¬¡å¯ç”¨æˆ–ç¦ç”¨å¤š"
-"个标志。也å¯ä»¥é€šè¿‡å°†ç›¸åº”çš„æˆå‘˜è®¾ç½®ä¸º[code]true[/code]æ¥å¯ç”¨æ ‡å¿—。选项å‚è§ "
+"个标志。也å¯ä»¥é€šè¿‡å°†ç›¸åº”çš„æˆå‘˜è®¾ç½®ä¸º[code]true[/code]æ¥å¯ç”¨æ ‡å¿—。选项å‚阅 "
"[enum Flags] 枚举器。"
#: doc/classes/SpatialMaterial.xml:55
@@ -62120,7 +62323,7 @@ msgid ""
"Specifies how the [member detail_albedo] should blend with the current "
"[code]ALBEDO[/code]. See [enum BlendMode] for options."
msgstr ""
-"指定 [member detail_albedo] åº”å¦‚ä½•ä¸Žå½“å‰ [code]ALBEDO[/code] æ··åˆã€‚å‚è§ "
+"指定 [member detail_albedo] åº”å¦‚ä½•ä¸Žå½“å‰ [code]ALBEDO[/code] æ··åˆã€‚å‚阅 "
"[enum BlendMode] 选项。"
#: doc/classes/SpatialMaterial.xml:135
@@ -62159,7 +62362,7 @@ msgid ""
"Specifies whether to use [code]UV[/code] or [code]UV2[/code] for the detail "
"layer. See [enum DetailUV] for options."
msgstr ""
-"指定细节层是使用[code]UV[/code]还是[code]UV2[/code]。选项请å‚è§[enum "
+"指定细节层是使用[code]UV[/code]还是[code]UV2[/code]。选项请å‚阅[enum "
"DetailUV]。"
#: doc/classes/SpatialMaterial.xml:148
@@ -62191,7 +62394,7 @@ msgstr "指定è¦ä½¿ç”¨çš„æ·¡å…¥æ·¡å‡ºç±»åž‹ã€‚å¯ä»¥æ˜¯ä»»ä½•一个[enum Distan
#: doc/classes/SpatialMaterial.xml:159
msgid "The emitted light's color. See [member emission_enabled]."
-msgstr "å‘出的光的颜色。å‚è§[member emission_enabled]。"
+msgstr "å‘出的光的颜色。å‚阅[member emission_enabled]。"
#: doc/classes/SpatialMaterial.xml:162
#, fuzzy
@@ -62206,7 +62409,7 @@ msgstr ""
#: doc/classes/SpatialMaterial.xml:165
msgid "The emitted light's strength. See [member emission_enabled]."
-msgstr "å‘出的光的强度。å‚è§[member emission_enabled]。"
+msgstr "å‘出的光的强度。å‚阅[member emission_enabled]。"
#: doc/classes/SpatialMaterial.xml:168
msgid "Use [code]UV2[/code] to read from the [member emission_texture]."
@@ -62218,7 +62421,7 @@ msgid ""
"either add or multiply. See [enum EmissionOperator] for options."
msgstr ""
"设置[member emission]与[member emission_texture]的交互方å¼ã€‚å¯ä»¥æ˜¯åŠ æ³•æˆ–ä¹˜"
-"法。选项å‚è§ [enum EmissionOperator] 。"
+"法。选项å‚阅 [enum EmissionOperator] 。"
#: doc/classes/SpatialMaterial.xml:174
msgid "Texture that specifies how much surface emits light at a given point."
@@ -62290,8 +62493,8 @@ msgid ""
"AR."
msgstr ""
"如果 [code]true[/code],å¯ç”¨ \"阴影到ä¸é€æ˜Žåº¦ \"的渲染模å¼ï¼Œåœ¨è¯¥æ¨¡å¼ä¸‹ï¼Œå…‰ç…§"
-"会修改 alpha,使阴影区域ä¸é€æ˜Žï¼Œéžé˜´å½±åŒºåŸŸé€æ˜Žã€‚对于在AR中把阴影å åŠ åˆ°æ‘„åƒæœº"
-"ç”»é¢ä¸Šå¾ˆæœ‰ç”¨ã€‚"
+"会修改 alpha,使阴影区域ä¸é€æ˜Žï¼Œéžé˜´å½±åŒºåŸŸé€æ˜Žã€‚对于在AR中把阴影å åŠ åˆ°ç›¸æœºç”»"
+"é¢ä¸Šå¾ˆæœ‰ç”¨ã€‚"
#: doc/classes/SpatialMaterial.xml:208
msgid ""
@@ -62385,7 +62588,7 @@ msgid ""
msgstr ""
"纹ç†ç”¨äºŽæŒ‡å®šç»™å®šåƒç´ çš„æ³•线。[code]normal_texture[/code] åªä½¿ç”¨çº¢è‰²å’Œç»¿è‰²é€š"
"é“。从[code]normal_texture[/code]读å–的法线是围绕[Mesh]æä¾›çš„è¡¨é¢æ³•线的。\n"
-"[b]注æ„:[/b] Godot希望法线图使用X+ã€Y-å’ŒZ+åæ ‡ã€‚å‚è§[url=http://wiki."
+"[b]注æ„:[/b] Godot希望法线图使用X+ã€Y-å’ŒZ+åæ ‡ã€‚å‚阅[url=http://wiki."
"polycount.com/wiki/"
"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url],以了"
"è§£æµè¡Œå¼•æ“Žæ‰€æœŸæœ›çš„æ³•çº¿å›¾åæ ‡çš„æ¯”较。"
@@ -62421,14 +62624,14 @@ msgid ""
"transparent pipeline. See [enum BlendMode]."
msgstr ""
"æè´¨çš„æ··åˆæ¨¡å¼ã€‚\n"
-"[b]注æ„:[/b]除 [code]Mix[/code] ä»¥å¤–çš„å€¼ä¼šå¼ºåˆ¶å¯¹è±¡è¿›å…¥é€æ˜Žç®¡é“。å‚è§ [enum "
+"[b]注æ„:[/b]除 [code]Mix[/code] ä»¥å¤–çš„å€¼ä¼šå¼ºåˆ¶å¯¹è±¡è¿›å…¥é€æ˜Žç®¡é“。å‚阅 [enum "
"BlendMode]。"
#: doc/classes/SpatialMaterial.xml:252
msgid ""
"Which side of the object is not drawn when backfaces are rendered. See [enum "
"CullMode]."
-msgstr "æ¸²æŸ“èƒŒé¢æ—¶ï¼Œä¸ç»˜åˆ¶å¯¹è±¡çš„哪一é¢ã€‚å‚è§ [enum CullMode]。"
+msgstr "æ¸²æŸ“èƒŒé¢æ—¶ï¼Œä¸ç»˜åˆ¶å¯¹è±¡çš„哪一é¢ã€‚å‚阅 [enum CullMode]。"
#: doc/classes/SpatialMaterial.xml:255
#, fuzzy
@@ -62436,20 +62639,20 @@ msgid ""
"Determines when depth rendering takes place. See [enum DepthDrawMode]. See "
"also [member flags_transparent]."
msgstr ""
-"确定何时进行深度渲染。å‚è§ [enum DepthDrawMode]。也请å‚è§ [member "
+"确定何时进行深度渲染。å‚阅 [enum DepthDrawMode]。也请å‚阅 [member "
"transparency]。"
#: doc/classes/SpatialMaterial.xml:258
msgid ""
"The algorithm used for diffuse light scattering. See [enum DiffuseMode]."
-msgstr "用于漫射光散射的算法。å‚è§[enum DiffuseMode]。"
+msgstr "用于漫射光散射的算法。å‚阅[enum DiffuseMode]。"
#: doc/classes/SpatialMaterial.xml:261
#, fuzzy
msgid ""
"If [code]true[/code], enables the vertex grow setting. See [member "
"params_grow_amount]."
-msgstr "如果[code]true[/code],å¯ç”¨é¡¶ç‚¹ç”Ÿé•¿è®¾ç½®ã€‚å‚è§[member grow_amount]。"
+msgstr "如果[code]true[/code],å¯ç”¨é¡¶ç‚¹ç”Ÿé•¿è®¾ç½®ã€‚å‚阅[member grow_amount]。"
#: doc/classes/SpatialMaterial.xml:264
msgid "Grows object vertices in the direction of their normals."
@@ -62463,11 +62666,11 @@ msgstr "ç›®å‰åœ¨ Godot 3.x 中未实现。"
#: doc/classes/SpatialMaterial.xml:270
#, fuzzy
msgid "The point size in pixels. See [member flags_use_point_size]."
-msgstr "点的大å°ï¼Œå•ä½ä¸ºåƒç´ ã€‚å‚è§[member use_point_size]。"
+msgstr "点的大å°ï¼Œå•ä½ä¸ºåƒç´ ã€‚å‚阅[member use_point_size]。"
#: doc/classes/SpatialMaterial.xml:273
msgid "The method for rendering the specular blob. See [enum SpecularMode]."
-msgstr "镜é¢å°çƒçš„æ¸²æŸ“方法。å‚è§[enum SpecularMode]。"
+msgstr "镜é¢å°çƒçš„æ¸²æŸ“方法。å‚阅[enum SpecularMode]。"
#: doc/classes/SpatialMaterial.xml:276
msgid ""
@@ -62482,7 +62685,7 @@ msgid ""
"when using [constant BILLBOARD_PARTICLES]. See [member "
"params_billboard_mode]."
msgstr ""
-"ç²’å­ç²¾çµè¡¨çš„æ°´å¹³å¸§æ•°ã€‚仅当使用[constant BILLBOARD_PARTICLES]æ—¶å¯ç”¨ã€‚å‚è§"
+"ç²’å­ç²¾çµè¡¨çš„æ°´å¹³å¸§æ•°ã€‚仅当使用[constant BILLBOARD_PARTICLES]æ—¶å¯ç”¨ã€‚å‚阅"
"[member billboard_mode]。"
#: doc/classes/SpatialMaterial.xml:282
@@ -62492,7 +62695,7 @@ msgid ""
"using [constant BILLBOARD_PARTICLES]. See [member params_billboard_mode]."
msgstr ""
"如果[code]true[/code],则循环播放粒å­åŠ¨ç”»ã€‚ä»…å½“ä½¿ç”¨[constant "
-"BILLBOARD_PARTICLES]æ—¶å¯ç”¨ã€‚å‚è§[member billboard_mode]。"
+"BILLBOARD_PARTICLES]æ—¶å¯ç”¨ã€‚å‚阅[member billboard_mode]。"
#: doc/classes/SpatialMaterial.xml:285
#, fuzzy
@@ -62501,7 +62704,7 @@ msgid ""
"when using [constant BILLBOARD_PARTICLES]. See [member "
"params_billboard_mode]."
msgstr ""
-"ç²’å­ç²¾çµè¡¨çš„垂直帧数。仅当使用[constant BILLBOARD_PARTICLES]æ—¶å¯ç”¨ã€‚å‚è§"
+"ç²’å­ç²¾çµè¡¨çš„垂直帧数。仅当使用[constant BILLBOARD_PARTICLES]æ—¶å¯ç”¨ã€‚å‚阅"
"[member billboard_mode]。"
#: doc/classes/SpatialMaterial.xml:288
@@ -63050,11 +63253,11 @@ msgstr "广告牌模å¼è¢«ç¦ç”¨ã€‚"
#: doc/classes/SpatialMaterial.xml:600
msgid "The object's Z axis will always face the camera."
-msgstr "对象的Z轴将始终é¢å‘æ‘„åƒæœºã€‚"
+msgstr "对象的Z轴将始终é¢å‘相机。"
#: doc/classes/SpatialMaterial.xml:603
msgid "The object's X axis will always face the camera."
-msgstr "对象的X轴将始终é¢å‘æ‘„åƒæœºã€‚"
+msgstr "对象的X轴将始终é¢å‘相机。"
#: doc/classes/SpatialMaterial.xml:606
#, fuzzy
@@ -63101,7 +63304,7 @@ msgstr "ä¸è¦ä½¿ç”¨è·ç¦»æ·¡åŒ–。"
msgid ""
"Smoothly fades the object out based on each pixel's distance from the camera "
"using the alpha channel."
-msgstr "æ ¹æ®æ¯ä¸ªåƒç´ ä¸Žæ‘„åƒæœºçš„è·ç¦»ï¼Œä½¿ç”¨alpha通é“平滑地淡化对象。"
+msgstr "æ ¹æ®æ¯ä¸ªåƒç´ ä¸Žç›¸æœºçš„è·ç¦»ï¼Œä½¿ç”¨alpha通é“平滑地淡化对象。"
#: doc/classes/SpatialMaterial.xml:637
msgid ""
@@ -63121,8 +63324,8 @@ msgid ""
"smoothly fade without enabling transparency. On certain hardware this can be "
"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]."
msgstr ""
-"æ ¹æ®å¯¹è±¡ä¸Žæ‘„åƒæœºçš„è·ç¦»ï¼Œä½¿ç”¨æŠ–动的方法平滑地淡化对象。抖动根æ®è®¾å®šçš„æ¨¡å¼ä¸¢å¼ƒ"
-"åƒç´ ï¼Œåœ¨ä¸å¯ç”¨é€æ˜Žåº¦çš„æƒ…况下平滑淡化。在æŸäº›ç¡¬ä»¶ä¸Šï¼Œè¿™å¯èƒ½æ¯”[constant "
+"æ ¹æ®å¯¹è±¡ä¸Žç›¸æœºçš„è·ç¦»ï¼Œä½¿ç”¨æŠ–动的方法平滑地淡化对象。抖动根æ®è®¾å®šçš„æ¨¡å¼ä¸¢å¼ƒåƒ"
+"素,在ä¸å¯ç”¨é€æ˜Žåº¦çš„æƒ…况下平滑淡化。在æŸäº›ç¡¬ä»¶ä¸Šï¼Œè¿™å¯èƒ½æ¯”[constant "
"DISTANCE_FADE_PIXEL_ALPHA]更快。"
#: doc/classes/SphereMesh.xml:4 doc/classes/SphereMesh.xml:7
@@ -63205,7 +63408,7 @@ msgstr ""
"[/codeblock]\n"
"上é¢çš„代ç å°†åˆ›å»ºä¸€ä¸ª[SpinBox],ç¦ç”¨å…¶ä¸Šçš„上下文èœå•ï¼Œå¹¶å°†æ–‡æœ¬å¯¹é½æ–¹å¼è®¾ç½®ä¸ºå³"
"对é½ã€‚\n"
-"关于[SpinBox]的更多选项,请å‚è§[Range]类。"
+"关于[SpinBox]的更多选项,请å‚阅[Range]类。"
#: doc/classes/SpinBox.xml:26
msgid "Applies the current value of this [SpinBox]."
@@ -63214,35 +63417,36 @@ msgstr "应用此 [SpinBox] 的当å‰å€¼ã€‚"
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"从此 [SpinBox] 返回 [LineEdit] 实例。您å¯ä»¥ä½¿ç”¨å®ƒæ¥è®¿é—® [LineEdit] 的属性和方"
-"法。"
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr "设置 [SpinBox] çš„æ–‡æœ¬å¯¹é½æ–¹å¼ã€‚"
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
"如果 [code]true[/code],则 [SpinBox] 将是å¯ç¼–辑的。å¦åˆ™ï¼Œå®ƒå°†æ˜¯åªè¯»çš„。"
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr "在 [SpinBox] çš„æ•°å€¼å‰æ·»åŠ æŒ‡å®šçš„ [code]prefix[/code] 字符串。"
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr "在 [SpinBox] çš„æ•°å€¼åŽæ·»åŠ æŒ‡å®šçš„ [code] suffix [/code] 字符串。"
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
#, fuzzy
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr "为 [SpinBox] 的上下箭头设置自定义 [Texture2D]。"
@@ -63527,7 +63731,7 @@ msgid ""
"a comparison of normal map coordinates expected by popular engines."
msgstr ""
"为 Sprite2D æä¾›æ·±åº¦çš„æ³•线贴图。\n"
-"[b]注:[/b] Godot 期望法线贴图使用 X+ã€Y- å’Œ Z+ åæ ‡ã€‚å‚è§[url=http://wiki."
+"[b]注:[/b] Godot 期望法线贴图使用 X+ã€Y- å’Œ Z+ åæ ‡ã€‚å‚阅[url=http://wiki."
"polycount.com/wiki/Normal_Map_Technical_Details#Common_Swizzle_Coordinates]è¿™"
"个页é¢[/url] 比较æµè¡Œå¼•æ“Žæ‰€æœŸæœ›çš„æ³•çº¿åœ°å›¾åæ ‡ã€‚"
@@ -63536,7 +63740,7 @@ msgid ""
"If [code]true[/code], texture is cut from a larger atlas texture. See "
"[member region_rect]."
msgstr ""
-"如果 [code]true[/code],则从较大的图集纹ç†ä¸­å‰ªåˆ‡çº¹ç†ã€‚å‚è§ [member "
+"如果 [code]true[/code],则从较大的图集纹ç†ä¸­å‰ªåˆ‡çº¹ç†ã€‚å‚阅 [member "
"region_rect]。"
#: doc/classes/Sprite.xml:64
@@ -63586,7 +63790,7 @@ msgid ""
"If [code]true[/code], texture will be cut from a larger atlas texture. See "
"[member region_rect]."
msgstr ""
-"如果 [code]true[/code],纹ç†å°†ä»Žè¾ƒå¤§çš„图集纹ç†ä¸­å‰ªåˆ‡ã€‚å‚è§ [member "
+"如果 [code]true[/code],纹ç†å°†ä»Žè¾ƒå¤§çš„图集纹ç†ä¸­å‰ªåˆ‡ã€‚å‚阅 [member "
"region_rect]。"
#: doc/classes/Sprite3D.xml:30
@@ -64239,12 +64443,11 @@ msgstr ""
"资æºä¸Šä¼ é€’它们很节çœèµ„æºã€‚"
#: doc/classes/String.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
"gdscript_format_string.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/scripting/gdscript/"
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/gdscript/"
"gdscript_format_string.html"
#: doc/classes/String.xml:17
@@ -64808,7 +65011,7 @@ msgstr "æ ¼å¼åŒ–æ•°å­—ï¼Œåœ¨å°æ•°ç‚¹å‰å…·æœ‰ [code]digits[/code] 的确切数
#: doc/classes/String.xml:559
msgid "Decode a percent-encoded string. See [method percent_encode]."
-msgstr "è§£ç ä¸€ä¸ªç™¾åˆ†æ¯”ç¼–ç çš„字符串。å‚è§[method percent_encode]。"
+msgstr "è§£ç ä¸€ä¸ªç™¾åˆ†æ¯”ç¼–ç çš„字符串。å‚阅[method percent_encode]。"
#: doc/classes/String.xml:565
msgid ""
@@ -64927,7 +65130,7 @@ msgstr "返回与此字符串相比的文本的相似度指数。 1表示完全ç
#: doc/classes/String.xml:682
msgid "Returns a simplified canonical path."
-msgstr ""
+msgstr "返回简化的规范路径。"
#: doc/classes/String.xml:691
msgid ""
@@ -65677,7 +65880,7 @@ msgid ""
"a comparison of normal map coordinates expected by popular engines."
msgstr ""
"绘制此StyleBox时使用的法线贴图。\n"
-"[b]注:[/b] Godot 期望法线贴图使用 X+ã€Y- å’Œ Z+ åæ ‡ã€‚å‚è§[url=http://wiki."
+"[b]注:[/b] Godot 期望法线贴图使用 X+ã€Y- å’Œ Z+ åæ ‡ã€‚å‚阅[url=http://wiki."
"polycount.com/wiki/Normal_Map_Technical_Details#Common_Swizzle_Coordinates]è¿™"
"个页é¢[/url] 比较æµè¡Œå¼•æ“Žæ‰€æœŸæœ›çš„æ³•çº¿åœ°å›¾åæ ‡ã€‚"
@@ -65968,37 +66171,39 @@ msgstr "返回ä½äºŽæ´»åЍ选项å¡ç´¢å¼•å¤„çš„å­ [Control] 节点。"
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"如果已ç»ä½¿ç”¨ [method set_popup] 设置了节点实例,则返回 [Popup] 节点实例。"
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr "返回以å‰å·²æ¿€æ´»çš„选项å¡ç´¢å¼•。"
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr "从索引 [code]tab_idx[/code] 处的选项å¡è¿”回 [Control] 节点。"
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr "返回选项å¡çš„æ•°é‡ã€‚"
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
"如果索引 [code]tab_idx[/code] 处的选项å¡è¢«ç¦ç”¨ï¼Œåˆ™è¿”回 [code]true[/code]。"
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
#, fuzzy
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
"如果索引 [code]tab_idx[/code] 处的选项å¡è¢«ç¦ç”¨ï¼Œåˆ™è¿”回 [code]true[/code]。"
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
#, fuzzy
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
@@ -66007,14 +66212,14 @@ msgstr ""
"å¦‚æžœé€‰é¡¹å¡æ²¡æœ‰ [Texture2D],则返回索引 [code]tab_idx[/code] 或 [code]null[/"
"code] 处的选项å¡çš„ [Texture2D]。"
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
@@ -66023,11 +66228,11 @@ msgstr ""
"返回索引 [code]tab_idx[/code] 处的选项å¡çš„æ ‡é¢˜ã€‚标签标题默认为索引å­èŠ‚ç‚¹çš„å"
"称,但这å¯ä»¥ç”¨ [method set_tab_title] 覆盖。"
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr "返回 [TabContainer] 釿–°æŽ’列组 ID。"
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
@@ -66035,7 +66240,7 @@ msgstr ""
"如果在 [Popup] 节点实例上设置,则在 [TabContainer] çš„å³ä¸Šè§’会出现一个弹出èœå•"
"图标。å•击它会展开 [Popup] 节点。"
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
#, fuzzy
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
@@ -66043,7 +66248,7 @@ msgid ""
msgstr ""
"如果索引 [code]tab_idx[/code] 处的选项å¡è¢«ç¦ç”¨ï¼Œåˆ™è¿”回 [code]true[/code]。"
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
#, fuzzy
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
@@ -66051,11 +66256,11 @@ msgid ""
msgstr ""
"如果索引 [code]tab_idx[/code] 处的选项å¡è¢«ç¦ç”¨ï¼Œåˆ™è¿”回 [code]true[/code]。"
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr "为索引 [code]tab_idx[/code] 处的选项å¡è®¾ç½®å›¾æ ‡ã€‚"
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
#, fuzzy
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
@@ -66064,7 +66269,7 @@ msgstr ""
"为索引 [code]tab_idx[/code] 处的选项å¡è®¾ç½®æ ‡é¢˜ã€‚标签标题默认为索引å­èŠ‚ç‚¹çš„å"
"称,但这å¯ä»¥ç”¨ [method set_tab_title] 覆盖。"
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
#, fuzzy
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
@@ -66074,7 +66279,7 @@ msgstr ""
"å®šä¹‰é‡æ–°æŽ’列组id,为æ¯ä¸ª[TabContainer]选择相åŒçš„值以å¯ç”¨[TabContainer]之间的"
"标签拖动。使用 [code]set_drag_to_rearrange_enabled(true)[/code] å¯ç”¨æ‹–动。"
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
#, fuzzy
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
@@ -66083,7 +66288,7 @@ msgstr ""
"如果 [code]true[/code],选项å¡å¯è§ã€‚如果 [code]false[/code],选项å¡çš„内容和标"
"题被éšè—。"
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
@@ -66092,18 +66297,18 @@ msgstr ""
"当剿 ‡ç­¾ç´¢å¼•。设置åŽï¼Œæ­¤ç´¢å¼•çš„ [Control] 节点的 [code]visible[/code] 属性设置"
"为 [code]true[/code],其他所有设置为 [code]false[/code]。"
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr "如果 [code]true[/code],å¯ä»¥é€šè¿‡é¼ æ ‡æ‹–åŠ¨é‡æ–°æŽ’列选项å¡ã€‚"
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
"选项å¡å®¹å™¨ä¸­æ‰€æœ‰é€‰é¡¹å¡çš„坹齿–¹å¼ã€‚有关详细信æ¯ï¼Œè¯·å‚阅 [enum TabAlign] 常é‡ã€‚"
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
@@ -66111,7 +66316,7 @@ msgstr ""
"如果 [code]true[/code],选项å¡å¯è§ã€‚如果 [code]false[/code],选项å¡çš„内容和标"
"题被éšè—。"
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
@@ -66120,7 +66325,7 @@ msgstr ""
"如果 [code]true[/code],éšè—çš„å­ [Control] 节点在总数中考虑其最å°å¤§å°ï¼Œè€Œä¸æ˜¯"
"仅考虑当å‰å¯è§çš„一个。"
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
@@ -66128,27 +66333,27 @@ msgstr ""
"å•击 [TabContainer] çš„ [Popup] 按钮时å‘出。有关详细信æ¯ï¼Œè¯·å‚阅 [method "
"set_popup]。"
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr "切æ¢åˆ°å¦ä¸€ä¸ªé€‰é¡¹å¡æ—¶å‘出。"
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr "é€‰æ‹©é€‰é¡¹å¡æ—¶å‘出,å³ä½¿å®ƒæ˜¯å½“å‰é€‰é¡¹å¡ã€‚"
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr "将选项å¡å¯¹é½åˆ°å·¦ä¾§ã€‚"
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr "将选项å¡å¯¹é½åˆ°ä¸­å¿ƒã€‚"
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr "将标签对é½åˆ°å³ä¾§ã€‚"
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
@@ -66157,7 +66362,7 @@ msgstr ""
"左边的箭头按钮的图标,当有太多的标签无法容纳在容器的宽度内时出现。当该按钮被"
"ç¦ç”¨æ—¶ï¼ˆå³ç¬¬ä¸€ä¸ªæ ‡ç­¾æ˜¯å¯è§çš„),它显示为åŠé€æ˜Žçš„。"
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
@@ -66165,28 +66370,27 @@ msgid ""
msgstr ""
"当标签太多无法适应容器宽度时出现的左箭头按钮图标。当鼠标悬åœåœ¨æŒ‰é’®ä¸Šæ—¶ä½¿ç”¨ã€‚"
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr "用于绘制选项å¡å称的字体。"
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr "éžæ´»åŠ¨æ ‡ç­¾çš„å­—ä½“é¢œè‰²ã€‚"
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr "ç¦ç”¨é€‰é¡¹å¡çš„字体颜色。"
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr "当剿‰€é€‰é€‰é¡¹å¡çš„字体颜色。"
-#: doc/classes/TabContainer.xml:202
-#, fuzzy
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
-msgstr "选项å¡ä¹‹é—´çš„æ°´å¹³é—´éš”。"
+msgstr "选项å¡ä¹‹é—´çš„æ°´å¹³åˆ†ç¦»ã€‚"
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
@@ -66195,7 +66399,7 @@ msgstr ""
"å³ç®­å¤´æŒ‰é’®çš„图标,当有太多的标签无法容纳在容器的宽度内时出现。当该按钮被ç¦ç”¨"
"æ—¶ï¼ˆå³æœ€åŽä¸€ä¸ªæ ‡ç­¾æ˜¯å¯è§çš„),它显示为åŠé€æ˜Žçš„。"
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
@@ -66203,33 +66407,33 @@ msgid ""
msgstr ""
"当标签太多无法适应容器宽度时出现的å³ç®­å¤´æŒ‰é’®å›¾æ ‡ã€‚当鼠标悬åœåœ¨æŒ‰é’®ä¸Šæ—¶ä½¿ç”¨ã€‚"
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr "èœå•按钮的图标(è§[method set_popup])。"
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
-msgstr "å½“å…‰æ ‡æ‚¬åœæ—¶èœå•按钮的图标(å‚è§ [method set_popup])。"
+msgstr "å½“å…‰æ ‡æ‚¬åœæ—¶èœå•按钮的图标(å‚阅 [method set_popup])。"
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr "背景填充的样å¼ã€‚"
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr "标签æ å·¦å³è¾¹ç¼˜çš„空间。"
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr "éžæ´»åЍ选项å¡çš„æ ·å¼ã€‚"
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr "ç¦ç”¨æ ‡ç­¾çš„æ ·å¼ã€‚"
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr "当剿‰€é€‰æ ‡ç­¾çš„æ ·å¼ã€‚"
@@ -66238,11 +66442,11 @@ msgid "Tabs control."
msgstr "é€‰é¡¹å¡æŽ§ä»¶ã€‚"
#: doc/classes/Tabs.xml:7
-#, fuzzy
msgid ""
"Simple tabs control, similar to [TabContainer] but is only in charge of "
"drawing tabs, not interacting with children."
-msgstr "简å•的标签控件,类似于[TabContainer],但åªè´Ÿè´£ç»˜åˆ¶æ ‡ç­¾ï¼Œä¸ä¸Žå­é¡¹äº’动。"
+msgstr ""
+"简å•çš„é€‰é¡¹å¡æŽ§åˆ¶ï¼Œç±»ä¼¼äºŽ[TabContainer],但åªè´Ÿè´£ç»˜åˆ¶é€‰é¡¹å¡ï¼Œä¸ä¸Žå­èŠ‚ç‚¹äº’åŠ¨ã€‚"
#: doc/classes/Tabs.xml:17
msgid "Adds a new tab."
@@ -66273,9 +66477,8 @@ msgid "Returns tab [Rect2] with local position and size."
msgstr "返回带有局部ä½ç½®å’Œå¤§å°çš„é€‰é¡¹å¡ [Rect2]。"
#: doc/classes/Tabs.xml:82
-#, fuzzy
msgid "Returns the title of the tab at index [code]tab_idx[/code]."
-msgstr "返回索引[code]idx[/code]处项目的文本。"
+msgstr "返回索引 [code]tab_idx[/code] 处的选项å¡çš„æ ‡é¢˜ã€‚"
#: doc/classes/Tabs.xml:88
msgid "Returns the [Tabs]' rearrange group ID."
@@ -66303,25 +66506,23 @@ msgid "Sets a [code]title[/code] for the tab at index [code]tab_idx[/code]."
msgstr "为索引 [code]tab_idx[/code] 处的选项å¡è®¾ç½® [code]title[/code]。"
#: doc/classes/Tabs.xml:141
-#, fuzzy
msgid ""
"Defines the rearrange group ID. Choose for each [Tabs] the same value to "
"dragging tabs between [Tabs]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-"å®šä¹‰é‡æ–°æŽ’列组 ID。为æ¯ä¸ª [Tabs] 选择相åŒçš„值以在 [Tabs] 之间拖动标签。使用 "
-"[code]set_drag_to_rearrange_enabled(true)[/code] å¯ç”¨æ‹–动。"
+"å®šä¹‰é‡æ–°æŽ’列组的ID。为æ¯ä¸ª[Tabs]选择相åŒçš„值,以便在[Tabs]之间拖动标签。用"
+"[member drag_to_rearrange_enabled]å¯ç”¨æ‹–动。"
#: doc/classes/Tabs.xml:147
msgid "Select tab at index [code]tab_idx[/code]."
msgstr "选择索引 [code]tab_idx[/code] 处的选项å¡ã€‚"
#: doc/classes/Tabs.xml:153
-#, fuzzy
msgid ""
"if [code]true[/code], the mouse's scroll wheel can be used to navigate the "
"scroll view."
-msgstr "如果[code]true[/code],鼠标的滚轮用于导航滚动视图。"
+msgstr "如果 [code]true[/code],鼠标的滚轮å¯ç”¨äºŽå¯¼èˆªæ»šåŠ¨è§†å›¾ã€‚"
#: doc/classes/Tabs.xml:156
msgid "The alignment of all tabs. See [enum TabAlign] for details."
@@ -66340,7 +66541,7 @@ msgid ""
"Emitted when the active tab is rearranged via mouse drag. See [member "
"drag_to_rearrange_enabled]."
msgstr ""
-"é€šè¿‡é¼ æ ‡æ‹–åŠ¨é‡æ–°æŽ’åˆ—æ´»åŠ¨é€‰é¡¹å¡æ—¶å‘出。å‚è§ [member "
+"é€šè¿‡é¼ æ ‡æ‹–åŠ¨é‡æ–°æŽ’åˆ—æ´»åŠ¨é€‰é¡¹å¡æ—¶å‘出。å‚阅 [member "
"drag_to_rearrange_enabled]。"
#: doc/classes/Tabs.xml:172
@@ -66389,7 +66590,7 @@ msgstr "按下关闭按钮时的背景。"
#: doc/classes/Tabs.xml:234
msgid "The icon for the close button (see [member tab_close_display_policy])."
-msgstr "关闭按钮的图标(å‚è§ [member tab_close_display_policy])。"
+msgstr "关闭按钮的图标(å‚阅 [member tab_close_display_policy])。"
#: doc/classes/Tabs.xml:255
msgid "The horizontal separation between the tabs."
@@ -66461,7 +66662,6 @@ msgid "Multiline text editing control."
msgstr "多行文本编辑控件。"
#: doc/classes/TextEdit.xml:7
-#, fuzzy
msgid ""
"TextEdit is meant for editing large, multiline text. It also has facilities "
"for editing code, such as syntax highlighting support and multiple levels of "
@@ -66470,17 +66670,18 @@ msgid ""
"will scroll 5 times as fast as it would normally do. This also works in the "
"Godot script editor."
msgstr ""
-"TextEdit 用于编辑大的多行文本。它还具有编辑代ç çš„功能,例如语法高亮支æŒå’Œå¤šçº§"
-"撤消/é‡åšã€‚"
+"TextEdit是用æ¥ç¼–辑大型多行文本的。它也有编辑代ç çš„功能,如支æŒè¯­æ³•高亮和多级"
+"撤销/é‡åšã€‚\n"
+"[b]注æ„:[/b]当按ä½[code]Alt[/code]时,垂直滚轮的滚动速度是平时的5å€ã€‚这在"
+"Godot脚本编辑器中也适用。"
#: doc/classes/TextEdit.xml:20
msgid "Adds color region (given the delimiters) and its colors."
-msgstr ""
+msgstr "添加给定分隔符划分区域的颜色。"
#: doc/classes/TextEdit.xml:28
-#, fuzzy
msgid "Adds a [code]keyword[/code] and its [Color]."
-msgstr "将一个[code][color][/code]标签添加到标签堆。"
+msgstr "添加一个关键字[code]keyword[/code]和它的颜色[Color]。"
#: doc/classes/TextEdit.xml:35
msgid ""
@@ -66501,6 +66702,8 @@ msgid ""
"Clears all custom syntax coloring information previously added with [method "
"add_color_region] or [method add_keyword_color]."
msgstr ""
+"清除之å‰ç”¨[method add_color_region]或[method add_keyword_color]添加的所有自定"
+"义语法ç€è‰²ä¿¡æ¯ã€‚"
#: doc/classes/TextEdit.xml:53
msgid "Clears the undo history."
@@ -66552,20 +66755,19 @@ msgstr "å–æ¶ˆå½“å‰é€‰æ‹©ã€‚"
#: doc/classes/TextEdit.xml:110
msgid "Folds all lines that are possible to be folded (see [method can_fold])."
-msgstr "æŠ˜å æ‰€æœ‰å¯èƒ½è¢«æŠ˜å çš„行(å‚è§ [method can_fold])。"
+msgstr "æŠ˜å æ‰€æœ‰å¯èƒ½è¢«æŠ˜å çš„行(å‚阅 [method can_fold])。"
#: doc/classes/TextEdit.xml:117
msgid "Folds the given line, if possible (see [method can_fold])."
-msgstr "如果å¯èƒ½ï¼ŒæŠ˜å ç»™å®šçš„行(å‚è§ [method can_fold])。"
+msgstr "如果å¯èƒ½ï¼ŒæŠ˜å ç»™å®šçš„行(å‚阅 [method can_fold])。"
#: doc/classes/TextEdit.xml:123
msgid "Returns an array containing the line number of each breakpoint."
msgstr "è¿”å›žä¸€ä¸ªåŒ…å«æ¯ä¸ªæ–­ç‚¹è¡Œå·çš„æ•°ç»„。"
#: doc/classes/TextEdit.xml:130
-#, fuzzy
msgid "Returns the [Color] of the specified [code]keyword[/code]."
-msgstr "返回带有指定[code]name[/code]çš„å­èŠ‚ç‚¹ã€‚"
+msgstr "返回指定的关键字[code]keyword[/code]的颜色[Color]。"
#: doc/classes/TextEdit.xml:137
msgid "Returns the text of a specific line."
@@ -66578,89 +66780,85 @@ msgstr "返回文本中的总行数。"
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-"返回此 [TextEdit] çš„ [PopupMenu]。默认情况下,å³é”®å•击 [TextEdit] 时会显示此"
-"èœå•。"
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr "返回选择的开始列。"
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr "返回选择开始行。"
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr "返回选择内的文本。"
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr "返回选择结æŸåˆ—。"
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr "返回选择结æŸè¡Œã€‚"
-#: doc/classes/TextEdit.xml:185
-#, fuzzy
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
-msgstr "返回带有鼠标光标ä½ç½®ä¸‹çš„å•è¯çš„ [String] 文本。"
+msgstr "返回一个[String]文本,该文本中的å•è¯ä½äºŽcaret(文本光标)的ä½ç½®ã€‚"
-#: doc/classes/TextEdit.xml:192
-#, fuzzy
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
-msgstr "返回指定的[code] class [/code]是å¦å¯ç”¨ã€‚"
+msgstr "返回指定的关键字[code]keyword[/code]æ˜¯å¦æœ‰ä¸€ä¸ªé¢œè‰²è¢«è®¾ç½®ä¸ºå®ƒã€‚"
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr "如果有 \"redo\" 动作,返回[code]true[/code]。"
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr "如果有 \"undo\" 动作,返回[code]true[/code]。"
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr "在光标ä½ç½®æ’入指定的文本。"
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr "è¿”å›žæŒ‡å®šç´¢å¼•å¤„çš„è¡Œæ˜¯å¦æŠ˜å ã€‚"
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr "返回指定索引处的行是å¦éšè—。"
-#: doc/classes/TextEdit.xml:232
-#, fuzzy
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
-msgstr "如果存在指定[code]name[/code]çš„å­èŠ‚ç‚¹ï¼Œè¿”å›ž[code]true[/code]。"
+msgstr "当指定的行[code]line[/code]被标记为书签时,返回[code]true[/code]。"
-#: doc/classes/TextEdit.xml:239
-#, fuzzy
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
-msgstr "如果存在指定[code]name[/code]çš„å­èŠ‚ç‚¹ï¼Œè¿”å›ž[code]true[/code]。"
+msgstr "当指定的行[code]line[/code]有断点时返回[code]true[/code]。"
-#: doc/classes/TextEdit.xml:246
-#, fuzzy
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
-msgstr "如果存在指定[code]name[/code]çš„å­èŠ‚ç‚¹ï¼Œè¿”å›ž[code]true[/code]。"
+msgstr "当指定的行[code]line[/code]被标记为安全时返回[code]true[/code]。"
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr "如果选择处于活动状æ€ï¼Œåˆ™è¿”回 [code]true[/code]。"
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
@@ -66668,22 +66866,21 @@ msgstr ""
"按指定的索引触å‘å³é”®å•击èœå•æ“作。有关å¯ç”¨ç´¢å¼•的列表,请å‚阅 [enum "
"MenuItems]。"
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr "粘贴当å‰é€‰æ‹©ã€‚"
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr "执行é‡åšæ“作。"
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr "删除所有断点。这ä¸ä¼šè§¦å‘ [signal breakpoint_toggled] ä¿¡å·ã€‚"
-#: doc/classes/TextEdit.xml:287
-#, fuzzy
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -66698,19 +66895,18 @@ msgid ""
" var res_column = result[TextEdit.SEARCH_RESULT_COLUMN]\n"
"[/codeblock]"
msgstr ""
-"在文本内执行æœç´¢ã€‚å¯ä»¥åœ¨ [enum SearchFlags] 枚举中指定æœç´¢æ ‡å¿—。\n"
-"如果未找到结果,则返回空的 [code]Dictionary[/code]。å¦åˆ™ï¼Œè¿”回一个 "
-"[code]Dictionary[/code] åŒ…å« [code]line[/code] å’Œ [code]column[/code] æ¡ç›®ï¼Œ"
-"例如:\n"
+"在文本内部进行æœç´¢ã€‚æœç´¢æ ‡å¿—å¯ä»¥åœ¨[enum SearchFlags]枚举中指定。\n"
+"如果没有找到结果,返回一个空的[code]PoolIntArray[/code]。å¦åˆ™ï¼Œå¯ä»¥é€šè¿‡[enum "
+"SearchResult]枚举中指定的索引访问结果行和列,例如。\n"
"[codeblock]\n"
"var result = search(key, flags, line, column)\n"
-"if !result.empty():\n"
-" # Result found.\n"
-" var line_number = result.line\n"
-" var column_number = result.column\n"
+"if result.size() > 0:\n"
+" # 找到的结果。\n"
+" var res_line = result[TextEdit.SEARCH_RESULT_LINE)\n"
+" var res_column = result[TextEdit.SEARCH_RESULT_COLUMN]\n"
"[/codeblock]"
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
@@ -66718,7 +66914,7 @@ msgstr ""
"执行选择,从行/列到行/列。\n"
"如果 [member selection_enabled] 为 [code]false[/code],则ä¸ä¼šå‘生选择。"
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
@@ -66726,57 +66922,63 @@ msgstr ""
"选择所有文本。\n"
"如果 [member selection_enabled] 为 [code]false[/code],则ä¸ä¼šå‘生选择。"
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr "设置特定行的文本。"
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
+"如果书签[code]bookmark[/code]为真,则将行[code]line[/code]作为书签。如果"
+"[code]bookmark[/code]为false,则删除该书签。\n"
+"书签显示在[member breakpoint_gutter]中。"
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
+"添加或删除[code]line[/code]中的断点。断点显示在[member breakpoint_gutter]中。"
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr "如果[code]true[/code],éšè—指定索引的行。"
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
+"如果为[code]true[/code],将行[code]line[/code]标记为安全。\n"
+"这将以[code]safe_line_number_color[/code]主题属性中æä¾›çš„颜色显示行å·ã€‚"
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr "在给定行切æ¢ä»£ç å—的折å ã€‚"
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr "执行撤销æ“作。"
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr "如果折å ï¼Œå±•开给定的线。"
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr "å–æ¶ˆéšè—之å‰ç”± [method set_line_as_hidden] 设置为éšè—的所有行。"
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr "如果 [code]true[/code],断点所在的空白æ å¯è§ã€‚"
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
@@ -66784,7 +66986,7 @@ msgstr ""
"如果 [code]true[/code],æ’å…¥ç¬¦å·æ˜¾ç¤ºä¸ºçŸ©å½¢ã€‚\n"
"如果 [code]false[/code],æ’å…¥ç¬¦å·æ˜¾ç¤ºä¸ºæ¡å½¢ã€‚"
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
@@ -66794,29 +66996,29 @@ msgstr ""
"置。\n"
"如果 [code]false[/code],上下文èœå•忽略鼠标ä½ç½®ã€‚"
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr "如果 [code]true[/code],å³é”®å•击会显示上下文èœå•。"
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr "如果 [code]true[/code],“空格â€å­—符将具有å¯è§è¡¨ç¤ºå½¢å¼ã€‚"
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr "如果 [code]true[/code],“制表符â€å­—符将具有å¯è§è¡¨ç¤ºå½¢å¼ã€‚"
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr "如果 [code]true[/code],则折å è¾¹æ å¯è§ã€‚è¿™å…许折å ç¼©è¿›è¡Œã€‚"
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
@@ -66824,27 +67026,27 @@ msgstr ""
"如果 [code]true[/code],所有已被 [method set_line_as_hidden] 设置为éšè—的行将"
"ä¸å¯è§ã€‚"
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr "如果 [code]true[/code],所选文本的所有匹é…项都将çªå‡ºæ˜¾ç¤ºã€‚"
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr "如果 [code]true[/code],则包å«å…‰æ ‡çš„行会çªå‡ºæ˜¾ç¤ºã€‚"
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr "如果 [code]true[/code],则显示å°åœ°å›¾ï¼Œæä¾›æºä»£ç çš„æ¦‚è¦ã€‚"
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr "å°åœ°å›¾çš„宽度(以åƒç´ ä¸ºå•ä½ï¼‰ã€‚"
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
@@ -66852,7 +67054,7 @@ msgstr ""
"如果 [code]true[/code],自定义 [code]font_color_selected[/code] 将用于所选文"
"本。"
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
@@ -66860,19 +67062,20 @@ msgstr ""
"如果[code]true[/code],å¯ç”¨åªè¯»æ¨¡å¼ã€‚现有的文本ä¸èƒ½è¢«ä¿®æ”¹ï¼Œæ–°çš„æ–‡æœ¬ä¸èƒ½è¢«æ·»"
"加。"
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
-msgstr ""
+msgstr "如果有一个水平滚动æ¡ï¼Œè¿™å†³å®šäº†å½“å‰çš„æ°´å¹³æ»šåŠ¨å€¼ï¼Œå•使˜¯åƒç´ ã€‚"
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
+"如果有一个垂直滚动æ¡ï¼Œè¿™å°±å†³å®šäº†å½“å‰çš„垂直滚动值,以行数为å•ä½ï¼Œé¡¶è¡Œä»Ž0开始。"
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
@@ -66882,7 +67085,7 @@ msgstr ""
"如果[code]false[/code],用户或使用[method select]或[method select_all]方法都"
"ä¸èƒ½é€‰æ‹©æ–‡æœ¬ã€‚"
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
@@ -66890,12 +67093,12 @@ msgstr ""
"为 [code]true[/code] 时,å³ä½¿ä¸Šä¸‹æ–‡èœå•已被ç¦ç”¨ï¼Œä¹Ÿä¼šå¯ç”¨è¯¥ä¸Šä¸‹æ–‡èœå•的快æ·"
"键。"
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr "如果 [code]true[/code]ï¼Œè¡Œå·æ˜¾ç¤ºåœ¨æ–‡æœ¬çš„左侧。"
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
@@ -66903,80 +67106,78 @@ msgstr ""
"如果 [code]true[/code],将滚动æ¡çš„æ­¥é•¿ [code]step[/code] 设置为 [code]0.25[/"
"code],从而使滚动更加平滑。"
-#: doc/classes/TextEdit.xml:458
-#, fuzzy
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-"如果 [code]true[/code],所有已被 [method set_line_as_hidden] 设置为éšè—的行将"
-"ä¸å¯è§ã€‚"
+"如果 [code]true[/code],为此 [TextEdit] 设置的任何自定义颜色属性都将å¯è§ã€‚"
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr "[TextEdit] 的字符串值。"
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr "åž‚ç›´æ»šåŠ¨çš„çµæ•度。"
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr "如果 [code]true[/code],当文本超出å¯è§è¾¹ç¼˜æ—¶å¯ç”¨æ–‡æœ¬æ¢è¡Œã€‚"
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr "å½“é€šè¿‡æ–­ç‚¹è¾¹æ æ”¾ç½®æ–­ç‚¹æ—¶å‘出。"
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr "光标更改时å‘出。"
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr "å•击信æ¯å›¾æ ‡æ—¶å‘出。"
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr "æœç´¢æ—¶åŒ¹é…大å°å†™ã€‚"
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr "æœç´¢æ—¶åŒ¹é…整个å•è¯ã€‚"
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr "从头到尾æœç´¢ã€‚"
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
-msgstr ""
+msgstr "用æ¥è®¿é—®æœç´¢[method search]的结果列。"
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
-msgstr ""
+msgstr "用于访问æœç´¢[method search]的结果行。"
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr "将剪贴æ¿ä¸Šçš„æ–‡æœ¬ç²˜è´´åœ¨é€‰å®šçš„æ–‡æœ¬ä¸Šï¼ˆæˆ–光标的ä½ç½®ï¼‰ã€‚"
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr "擦除整个[TextEdit]文本。"
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr "选择整个[TextEdit]文本。"
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr "é‡åšå‰ä¸€ä¸ªåŠ¨ä½œã€‚"
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
@@ -66984,28 +67185,28 @@ msgstr ""
"设置这个[TextEdit]的背景颜色[Color]。必须å¯ç”¨è¯­æ³•高亮[member "
"syntax_highlighting]。"
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
"设置书签标记的颜色[Color]。必须å¯ç”¨è¯­æ³•高亮[member syntax_highlighting]。"
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr "设置断点的颜色[Color]。必须å¯ç”¨æ–­ç‚¹æ§½[member breakpoint_gutter]。"
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr "设置默认的字体[Font]。"
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr "设置字体颜色[Color]。"
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
@@ -67013,39 +67214,38 @@ msgstr ""
"设置所选文本的颜色[Color]。必须å¯ç”¨è¦†ç›–所选文字字体颜色[member "
"override_selected_font_color]。"
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr "设置行å·é¢œè‰²[Color]。[member show_line_numbers] 显示行å·å¿…须被å¯ç”¨ã€‚"
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr "设置行间è·ã€‚"
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr "设置标记文本的颜色[Color]。"
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr "设置这个[TextEdit]的[StyleBox]。"
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr "当[member readonly]å¯ç”¨æ—¶ï¼Œè®¾ç½®è¿™ä¸ª[TextEdit]çš„[StyleBox]。"
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr "设置文本选择的高亮[Color]颜色。"
-#: doc/classes/TextEdit.xml:639
-#, fuzzy
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
-msgstr "ä¸ºé€‰é¡¹å¡æ–‡æœ¬å­—符设置一个自定义的[Texture2D]。"
+msgstr "为制表符tab字符设置自定义纹ç†[Texture] 。"
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -67057,7 +67257,6 @@ msgid "Texture for 2D and 3D."
msgstr "用于2Då’Œ3D的纹ç†ã€‚"
#: doc/classes/Texture.xml:7
-#, fuzzy
msgid ""
"A texture works by registering an image in the video hardware, which then "
"can be used in 3D models or 2D [Sprite] or GUI [Control].\n"
@@ -67067,10 +67266,12 @@ msgid ""
"[b]Note:[/b] The maximum texture size is 16384×16384 pixels due to graphics "
"hardware limitations. Larger textures may fail to import."
msgstr ""
-"纹ç†çš„作用是在视频硬件中注册一个图åƒï¼Œè€ŒåŽåœ¨3D模型或2D[Sprite2D]或"
+"纹ç†çš„作用是在视频硬件中注册一个图åƒï¼Œç„¶åŽå¯ä»¥åœ¨3D模型或2D[Sprite]或"
"GUI[Control]中使用。\n"
-"纹ç†é€šå¸¸é€šè¿‡ä»Žæ–‡ä»¶ä¸­åŠ è½½æ¥åˆ›å»ºã€‚å‚è§[method @GDScript.load]。\n"
-"[Texture2D]是其他资æºçš„基础。它ä¸èƒ½è¢«ç›´æŽ¥ä½¿ç”¨ã€‚"
+"纹ç†é€šå¸¸æ˜¯é€šè¿‡ä»Žæ–‡ä»¶ä¸­åŠ è½½æ¥åˆ›å»ºçš„。å‚è§[方法 @GDScript.load]。\n"
+"[Texture]是其他资æºçš„基础。它ä¸èƒ½è¢«ç›´æŽ¥ä½¿ç”¨ã€‚\n"
+"[b]注æ„:[/b] 由于图形硬件的é™åˆ¶ï¼Œæœ€å¤§çš„纹ç†å°ºå¯¸æ˜¯16384×16384åƒç´ ã€‚较大的纹ç†"
+"å¯èƒ½æ— æ³•导入。"
#: doc/classes/Texture.xml:23
msgid ""
@@ -67079,31 +67280,33 @@ msgid ""
"canvas_item_add_texture_rect] with a rect at [code]position[/code] and the "
"size of this [Texture]."
msgstr ""
+"在指定的ä½ç½®[code]position[/code]使用[VisualServer]APIçš„[CanvasItem]æ¥ç»˜åˆ¶çº¹"
+"ç†ã€‚相当于[method VisualServer.canvas_item_add_texture_rect],在ä½ç½®"
+"[code]position[/code]有一个矩形,尺寸为这个[Texture]。"
#: doc/classes/Texture.xml:35
-#, fuzzy
msgid ""
"Draws the texture using a [CanvasItem] with the [VisualServer] API. "
"Equivalent to [method VisualServer.canvas_item_add_texture_rect]."
msgstr ""
-"使用[RenderingServer]API在指定的[code]position[/code]åæ ‡ç”¨[CanvasItem]绘制纹"
-"ç†ã€‚"
+"使用[VisualServer]APIçš„[CanvasItem]æ¥ç»˜åˆ¶çº¹ç†ã€‚相当于方法[method "
+"VisualServer.canvas_item_add_texture_rect]。"
#: doc/classes/Texture.xml:48
-#, fuzzy
msgid ""
"Draws a part of the texture using a [CanvasItem] with the [VisualServer] "
"API. Equivalent to [method VisualServer.canvas_item_add_texture_rect_region]."
msgstr ""
-"使用[RenderingServer]API在指定的[code]position[/code]åæ ‡ç”¨[CanvasItem]绘制纹"
-"ç†ã€‚"
+"使用[VisualServer]APIçš„[CanvasItem]æ¥ç»˜åˆ¶çº¹ç†çš„一个部分。相当于方法[method "
+"VisualServer.canvas_item_add_texture_rect_region]。"
#: doc/classes/Texture.xml:54
-#, fuzzy
msgid ""
"Returns an [Image] that is a copy of data from this [Texture]. [Image]s can "
"be accessed and manipulated directly."
-msgstr "返回一个带有该[Texture2D]æ•°æ®çš„[Image]。å¯ä»¥ç›´æŽ¥è®¿é—®å’Œæ“作[Image]。"
+msgstr ""
+"返回一个 [Image],它是此 [Texture] 中数æ®çš„副本。 [Image] 图åƒå¯ä»¥ç›´æŽ¥è®¿é—®å’Œ"
+"æ“作。"
#: doc/classes/Texture.xml:60
msgid "Returns the texture height."
@@ -67118,7 +67321,6 @@ msgid "Returns the texture width."
msgstr "返回纹ç†å®½åº¦ã€‚"
#: doc/classes/Texture.xml:78
-#, fuzzy
msgid "Returns [code]true[/code] if this [Texture] has an alpha channel."
msgstr "如果这个[Texture2D]有一个alpha通é“,返回[code]true[/code]。"
@@ -67126,19 +67328,21 @@ msgstr "如果这个[Texture2D]有一个alpha通é“,返回[code]true[/code]。
msgid ""
"The texture's [enum Flags]. [enum Flags] are used to set various properties "
"of the [Texture]."
-msgstr ""
+msgstr "纹ç†çš„[enum Flags]。[enum Flags]用于设置[Texture]çš„å„ç§å±žæ€§ã€‚"
#: doc/classes/Texture.xml:89
msgid ""
"Default flags. [constant FLAG_MIPMAPS], [constant FLAG_REPEAT] and [constant "
"FLAG_FILTER] are enabled."
msgstr ""
+"默认的标志。[constant FLAG_MIPMAPS]ã€[constant FLAG_REPEAT]å’Œ[constant "
+"FLAG_FILTER]å‡è¢«å¯ç”¨ã€‚"
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
-msgstr ""
+msgstr "生æˆmipmaps,它是åŒä¸€çº¹ç†çš„较å°ç‰ˆæœ¬ï¼Œåœ¨æ”¾å¤§æ—¶ä½¿ç”¨ï¼Œä¿æŒé•¿å®½æ¯”。"
#: doc/classes/Texture.xml:95
msgid ""
@@ -67147,19 +67351,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
#, fuzzy
msgid "Converts the texture to the sRGB color space."
msgstr "将原始数æ®ä»Ž sRGB 色彩空间转æ¢ä¸ºçº¿æ€§æ¯”例。"
@@ -67171,7 +67375,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
#, fuzzy
msgid "Texture is a video surface."
msgstr "设置给定曲é¢çš„å称。"
@@ -67235,7 +67439,6 @@ msgid ""
msgstr "基于纹ç†çš„æŒ‰é’®ã€‚æ”¯æŒæŒ‰ä¸‹ã€æ‚¬åœã€åœç”¨å’Œç„¦ç‚¹çжæ€ã€‚"
#: doc/classes/TextureButton.xml:7
-#, fuzzy
msgid ""
"[TextureButton] has the same functionality as [Button], except it uses "
"sprites instead of Godot's [Theme] resource. It is faster to create, but it "
@@ -67245,9 +67448,11 @@ msgid ""
"See also [BaseButton] which contains common properties and methods "
"associated with this node."
msgstr ""
-"[TextureButton]的功能与[Button]相åŒï¼Œåªæ˜¯å®ƒä½¿ç”¨ç²¾çµè€Œä¸æ˜¯Godotçš„[Theme]资æºã€‚"
-"它的创建速度更快,但它ä¸åƒæ›´å¤æ‚çš„[Control]é‚£æ ·æ”¯æŒæœ¬åœ°åŒ–。\n"
-"\"正常\"状æ€å¿…须包å«ä¸€ä¸ªçº¹ç†[member texture_normal]ï¼›å…¶ä»–çº¹ç†æ˜¯å¯é€‰çš„。"
+"[TextureButton]的功能与[Button]相åŒï¼Œåªæ˜¯å®ƒä½¿ç”¨ç²¾çµspritesè€Œä¸æ˜¯Godotçš„"
+"[Theme]主题资æºã€‚它的创建速度更快,但它ä¸åƒæ›´å¤æ‚çš„[Control]é‚£æ ·æ”¯æŒæœ¬åœŸåŒ–"
+"(localization)。\n"
+"\"正常\"状æ€å¿…须包å«ä¸€ä¸ªçº¹ç†ï¼ˆ[member texture_normal]ï¼‰ï¼›å…¶ä»–çº¹ç†æ˜¯å¯é€‰çš„。\n"
+"也请å‚è§[BaseButton],它包å«äº†ä¸Žè¯¥èŠ‚ç‚¹ç›¸å…³çš„é€šç”¨å±žæ€§å’Œæ–¹æ³•ã€‚"
#: doc/classes/TextureButton.xml:18
msgid ""
@@ -67281,7 +67486,7 @@ msgstr ""
msgid ""
"Texture to display when the node is disabled. See [member BaseButton."
"disabled]."
-msgstr "节点被ç¦ç”¨æ—¶æ˜¾ç¤ºçš„纹ç†ã€‚å‚è§[member BaseButton.disabled]。"
+msgstr "节点被ç¦ç”¨æ—¶æ˜¾ç¤ºçš„纹ç†ã€‚å‚阅[member BaseButton.disabled]。"
#: doc/classes/TextureButton.xml:36
msgid "Texture to display when the node has mouse or keyboard focus."
@@ -67407,33 +67612,32 @@ msgid ""
msgstr "返回[Mesh]èµ„æºæŒ‡å®šè¡¨é¢çš„覆盖åŽçš„[Material]。"
#: doc/classes/TextureLayered.xml:65
-#, fuzzy
msgid "Returns a dictionary with all the data used by this texture."
-msgstr "返回此层使用的画布的RID。"
+msgstr "返回字典,其中带有此纹ç†ä½¿ç”¨çš„æ‰€æœ‰æ•°æ®ã€‚"
#: doc/classes/TextureLayered.xml:68
msgid "Specifies which [enum Flags] apply to this texture."
-msgstr ""
+msgstr "指定应用于此纹ç†çš„ [enum Flags]。"
#: doc/classes/TextureLayered.xml:73
msgid ""
"Default flags for [TextureArray]. [constant FLAG_MIPMAPS], [constant "
"FLAG_REPEAT] and [constant FLAG_FILTER] are enabled."
msgstr ""
+"[TextureArray]的默认标记。 å¯ç”¨[constant FLAG_MIPMAPS], [constant "
+"FLAG_REPEAT] 和 [constant FLAG_FILTER]。"
#: doc/classes/TextureLayered.xml:76
msgid "Default flags for [Texture3D]. [constant FLAG_FILTER] is enabled."
-msgstr ""
+msgstr "默认为[Texture3D]的标记。å¯ç”¨[constant FLAG_FILTER]。"
#: doc/classes/TextureLayered.xml:79
-#, fuzzy
msgid "Texture will generate mipmaps on creation."
-msgstr "纹ç†ä¸ä¼šé‡å¤ã€‚"
+msgstr "纹ç†å°†åœ¨åˆ›å»ºæ—¶ç”Ÿæˆmipmaps。"
#: doc/classes/TextureLayered.xml:82
-#, fuzzy
msgid "Texture will repeat when UV used is outside the 0-1 range."
-msgstr "该指示器用于指示颜色值在0-1范围之外。"
+msgstr "当使用的UV超出0-1范围时,纹ç†å°†é‡å¤ã€‚"
#: doc/classes/TextureLayered.xml:85
msgid ""
@@ -67441,6 +67645,8 @@ msgid ""
"Turning filtering off is slightly faster and more appropriate when you need "
"access to individual pixels."
msgstr ""
+"在从纹ç†ä¸­è¯»å–时使用过滤。过滤使åƒç´ å˜å¾—平滑。当你需è¦è®¿é—®å•个åƒç´ æ—¶ï¼Œå…³é—­è¿‡"
+"滤会ç¨å¿«ä¸€äº›ï¼Œä¹Ÿæ›´åˆé€‚。"
#: doc/classes/TextureProgress.xml:4
msgid ""
@@ -67459,7 +67665,7 @@ msgstr ""
#: doc/classes/TextureProgress.xml:28
msgid "The fill direction. See [enum FillMode] for possible values."
-msgstr "å¡«å……æ–¹å‘。有关å¯èƒ½çš„值,å‚è§[enum FillMode]。"
+msgstr "å¡«å……æ–¹å‘。有关å¯èƒ½çš„值,å‚阅[enum FillMode]。"
#: doc/classes/TextureProgress.xml:32
msgid ""
@@ -67491,7 +67697,7 @@ msgstr ""
"如果[member fill_mode]是[constant FILL_CLOCKWISE]或[constant "
"FILL_COUNTER_CLOCKWISE],则为[member texture_progress]的填充上é™ã€‚当节点的"
"[code]value[/code]等于其[code]max_value[/code]时,纹ç†ä¼šå¡«å……到这个角度。\n"
-"å‚è§[member Range.value], [member Range.max_value]。"
+"å‚阅[member Range.value], [member Range.max_value]。"
#: doc/classes/TextureProgress.xml:42
msgid ""
@@ -67529,16 +67735,14 @@ msgid "The height of the 9-patch's top row."
msgstr "ä¹å®«æ ¼é¡¶è¡Œçš„高度。"
#: doc/classes/TextureProgress.xml:57
-#, fuzzy
msgid ""
"[Texture] that draws over the progress bar. Use it to add highlights or an "
"upper-frame that hides part of [member texture_progress]."
msgstr ""
-"在进度æ¡ä¸Šç»˜åˆ¶çš„[Texture2D]ã€‚ç”¨å®ƒæ¥æ·»åŠ é«˜äº®æˆ–ä¸€ä¸ªéšè—部分[member "
+"在进度æ¡ä¹‹ä¸Šç»˜åˆ¶çš„[Texture2D]ã€‚ç”¨å®ƒæ¥æ·»åŠ é«˜äº®æˆ–éšè—部分[member "
"texture_progress]上é¢çš„帧。"
#: doc/classes/TextureProgress.xml:60
-#, fuzzy
msgid ""
"[Texture] that clips based on the node's [code]value[/code] and [member "
"fill_mode]. As [code]value[/code] increased, the texture fills up. It shows "
@@ -67547,12 +67751,12 @@ msgid ""
"The [code]value[/code] property comes from [Range]. See [member Range."
"value], [member Range.min_value], [member Range.max_value]."
msgstr ""
-"[Texture2D],根æ®èŠ‚ç‚¹çš„[code]value[/code]å’Œ[member fill_mode]进行è£å‰ªã€‚éšç€"
-"[code]value[/code]的增加,纹ç†å°†è¢«å¡«æ»¡ã€‚当[code]value[/code]达到"
-"[code]max_value[/code]时,将完全显示。如果[code]value[/code]等于"
-"[code]min_value[/code]ï¼Œå°±å®Œå…¨ä¸æ˜¾ç¤ºäº†ã€‚\n"
-"[code]value[/code]属性æ¥è‡ª[Range]。å‚è§[member Range.value],[member Range."
-"min_value],[member Range.max_value]。"
+"基于节点的[code]value[/code]å’Œ[member fill_mode]进行è£å‰ª[Texture]。éšç€"
+"[code]value[/code]的增加,纹ç†ä¼šè¢«å¡«æ»¡ã€‚当[code]value[/code]达到"
+"[code]max_value[/code]时,它完全显示。如果[code]value[/code]等于"
+"[code]min_value[/code]ï¼Œå®ƒå°±å®Œå…¨ä¸æ˜¾ç¤ºäº†ã€‚\n"
+"[code]value[/code]属性æ¥è‡ª[Range]。å‚阅[member Range.value], [member Range."
+"min_value], [member Range.max_value]。"
#: doc/classes/TextureProgress.xml:64
msgid ""
@@ -67560,11 +67764,12 @@ msgid ""
"and [member texture_under] with fancy borders, to avoid transparent margins "
"in your progress texture."
msgstr ""
+"[member texture_progress]çš„åç§»é‡ã€‚对于带有花哨的边框的[member texture_over]"
+"å’Œ[member texture_under]很有用,å¯ä»¥é¿å…进度纹ç†çš„è¾¹ç¼˜é€æ˜Žã€‚"
#: doc/classes/TextureProgress.xml:67
-#, fuzzy
msgid "[Texture] that draws under the progress bar. The bar's background."
-msgstr "[Texture2D],在进度æ¡ä¸‹é¢ç»˜åˆ¶çš„背景。"
+msgstr "在进度æ¡ä¸‹é¢ç»˜åˆ¶çš„[Texture]。å³èƒŒæ™¯ã€‚"
#: doc/classes/TextureProgress.xml:70
msgid ""
@@ -67606,7 +67811,7 @@ msgid ""
"clockwise. See [member radial_center_offset], [member radial_initial_angle] "
"and [member radial_fill_degrees] to control the way the bar fills up."
msgstr ""
-"å°†èŠ‚ç‚¹å˜æˆå¾„呿¡å½¢ã€‚[member texture_progress] 顺时针填充。å‚è§[member "
+"å°†èŠ‚ç‚¹å˜æˆå¾„呿¡å½¢ã€‚[member texture_progress] 顺时针填充。å‚阅[member "
"radial_center_offset]ã€[member radial_initial_angle]å’Œ[member "
"radial_fill_degrees]æ¥æŽ§åˆ¶æ¡å½¢å¡«å……的方å¼ã€‚"
@@ -67617,7 +67822,7 @@ msgid ""
"radial_initial_angle] and [member radial_fill_degrees] to control the way "
"the bar fills up."
msgstr ""
-"å°†èŠ‚ç‚¹å˜æˆå¾„呿¡å½¢ã€‚[member texture_progress]逆时针填充。å‚è§[member "
+"å°†èŠ‚ç‚¹å˜æˆå¾„呿¡å½¢ã€‚[member texture_progress]逆时针填充。å‚阅[member "
"radial_center_offset]ã€[member radial_initial_angle]å’Œ[member "
"radial_fill_degrees]æ¥æŽ§åˆ¶æ¡å½¢å¡«å……的方å¼ã€‚"
@@ -67641,7 +67846,7 @@ msgid ""
"radial_fill_degrees] to control the way the bar fills up."
msgstr ""
"å°†èŠ‚ç‚¹å˜æˆå¾„呿¡å½¢ã€‚[member texture_progress]从中心径å‘填充,顺时针和逆时针扩"
-"展。å‚è§[member radial_center_offset]ã€[member radial_initial_angle]å’Œ"
+"展。å‚阅[member radial_center_offset]ã€[member radial_initial_angle]å’Œ"
"[member radial_fill_degrees]æ¥æŽ§åˆ¶æ¡å½¢å¡«å……的方å¼ã€‚"
#: doc/classes/TextureRect.xml:4
@@ -67649,7 +67854,6 @@ msgid "Control for drawing textures."
msgstr "控件绘制纹ç†ã€‚"
#: doc/classes/TextureRect.xml:7
-#, fuzzy
msgid ""
"Used to draw icons and sprites in a user interface. The texture's placement "
"can be controlled with the [member stretch_mode] property. It can scale, "
@@ -67660,7 +67864,10 @@ msgid ""
"upside down."
msgstr ""
"用于在用户界é¢ä¸Šç»˜åˆ¶å›¾æ ‡å’Œç²¾çµã€‚纹ç†çš„ä½ç½®å¯ä»¥é€šè¿‡[member stretch_mode]属性æ¥"
-"控制。它å¯ä»¥ç¼©æ”¾ã€å¹³é“ºï¼Œæˆ–在其边界矩形内居中。"
+"控制。它å¯ä»¥ç¼©æ”¾ã€å¹³é“ºï¼Œæˆ–è€…åœ¨å…¶è¾¹ç•ŒçŸ©å½¢å†…ä¿æŒå±…中。\n"
+"[b]注æ„:[/b] 当使用TextureRectæ¥æ˜¾ç¤º[ViewportTexture]时,你应该å¯ç”¨[member "
+"flip_v]。或者,你也å¯ä»¥åœ¨è§†çª—上å¯ç”¨[member Viewport.render_target_v_flip]。å¦"
+"则,图åƒä¼šå‡ºçŽ°é¢ å€’çš„æƒ…å†µã€‚"
#: doc/classes/TextureRect.xml:17
msgid "If [code]true[/code], the texture scales to fit its bounding rectangle."
@@ -67670,12 +67877,11 @@ msgstr "如果为 [code]true[/code],纹ç†ç¼©æ”¾ä»¥é€‚åˆå…¶è¾¹ç•ŒçŸ©å½¢ã€‚"
msgid ""
"Controls the texture's behavior when resizing the node's bounding rectangle. "
"See [enum StretchMode]."
-msgstr "控件纹ç†åœ¨è°ƒæ•´èŠ‚ç‚¹è¾¹ç•ŒçŸ©å½¢æ—¶çš„è¡Œä¸ºã€‚å‚è§[enum StretchMode]。"
+msgstr "控件纹ç†åœ¨è°ƒæ•´èŠ‚ç‚¹è¾¹ç•ŒçŸ©å½¢æ—¶çš„è¡Œä¸ºã€‚å‚阅[enum StretchMode]。"
#: doc/classes/TextureRect.xml:30
-#, fuzzy
msgid "The node's [Texture] resource."
-msgstr "节点的 [Texture2D] 资æºã€‚"
+msgstr "节点的 [Texture] 纹ç†èµ„æºã€‚"
#: doc/classes/TextureRect.xml:35
msgid ""
@@ -67713,59 +67919,57 @@ msgstr ""
"还å¯ä»¥é€šè¿‡ç¼–写 [code].theme[/code] 文件加载主题资æºï¼Œæ›´å¤šä¿¡æ¯è§æ–‡æ¡£ã€‚"
#: doc/classes/Theme.xml:11
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/gui/gui_skinning.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/gui/gui_skinning.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/gui/gui_skinning.html"
#: doc/classes/Theme.xml:17
msgid "Clears all values on the theme."
msgstr "清除主题上的所有值。"
#: doc/classes/Theme.xml:25
-#, fuzzy
msgid ""
"Clears the [Color] at [code]name[/code] if the theme has [code]node_type[/"
"code]."
msgstr ""
-"å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则清除å为 [code]name[/code] çš„ [Color]颜色。"
+"å¦‚æžœä¸»é¢˜åŒ…å« [code]node_type[/code],则清除å为 [code]name[/code] çš„ [Color]"
+"颜色。"
#: doc/classes/Theme.xml:33
-#, fuzzy
msgid ""
"Clears the constant at [code]name[/code] if the theme has [code]node_type[/"
"code]."
-msgstr "å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则清除å为 [code]name[/code] 的常é‡ã€‚"
+msgstr ""
+"å¦‚æžœä¸»é¢˜åŒ…å« [code]node_type[/code],则清除å为 [code]name[/code] 的常é‡ã€‚"
#: doc/classes/Theme.xml:41
-#, fuzzy
msgid ""
"Clears the [Font] at [code]name[/code] if the theme has [code]node_type[/"
"code]."
msgstr ""
-"å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则清除å为 [code]name[/code] çš„ [Font]字体。"
+"å¦‚æžœä¸»é¢˜åŒ…å« [code]node_type[/code],则清除å为 [code]name[/code] çš„ [Font]å­—"
+"体。"
#: doc/classes/Theme.xml:49
-#, fuzzy
msgid ""
"Clears the icon at [code]name[/code] if the theme has [code]node_type[/code]."
-msgstr "å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则清除å为 [code]name[/code] 的图标。"
+msgstr ""
+"å¦‚æžœä¸»é¢˜åŒ…å« [code]node_type[/code],则清除å为 [code]name[/code] 的图标。"
#: doc/classes/Theme.xml:57
-#, fuzzy
msgid ""
"Clears [StyleBox] at [code]name[/code] if the theme has [code]node_type[/"
"code]."
msgstr ""
-"å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则清除å为 [code]name[/code] çš„ [StyleBox]æ ·"
-"å¼ç›’。"
+"å¦‚æžœä¸»é¢˜åŒ…å« [code]node_type[/code],则清除å为 [code]name[/code] çš„ "
+"[StyleBox]æ ·å¼ç›’。"
#: doc/classes/Theme.xml:66
-#, fuzzy
msgid ""
"Clears the theme item of [code]data_type[/code] at [code]name[/code] if the "
"theme has [code]node_type[/code]."
-msgstr "å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则清除å为 [code]name[/code] 的常é‡ã€‚"
+msgstr ""
+"如果主题具有 [code]node_type[/code],则清除 [code]name[/code] 处的 "
+"[code]data_type[/code] 主题项。"
#: doc/classes/Theme.xml:72
msgid "Sets the theme's values to a copy of the default theme values."
@@ -67776,110 +67980,95 @@ msgid "Sets the theme's values to a copy of a given theme."
msgstr "将主题的å–值设置为指定主题的副本。"
#: doc/classes/Theme.xml:87
-#, fuzzy
msgid ""
"Returns the [Color] at [code]name[/code] if the theme has [code]node_type[/"
"code]."
-msgstr ""
-"å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则返回å为 [code]name[/code] çš„ [Color]颜色。"
+msgstr "如果主题有[code]node_type[/code],返回[code]name[/code]处的[Color]。"
#: doc/classes/Theme.xml:94
-#, fuzzy
msgid ""
"Returns all the [Color]s as a [PoolStringArray] filled with each [Color]'s "
"name, for use in [method get_color], if the theme has [code]node_type[/code]."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的[Color]颜"
-"色,并填入æ¯ä¸ª[Color]颜色的å称,供[method get_color]使用。"
+"如果主题有[code]node_type[/code],将所有的[Color]作为[PoolStringArray]返回,"
+"å¹¶å¡«å……æ¯ä¸ª[Color]çš„å称,用于[method get_color]使用。"
#: doc/classes/Theme.xml:100
-#, fuzzy
msgid ""
"Returns all the [Color] types as a [PoolStringArray] filled with unique type "
"names, for use in [method get_color] and/or [method get_color_list]."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的[Color]颜"
-"色,并填入æ¯ä¸ª[Color]颜色的å称,供[method get_color]使用。"
+"返回所有的[Color]类型为[PoolStringArray],其中填充了唯一类型å称,供[method "
+"get_color]和/或[method get_color_list]使用。"
#: doc/classes/Theme.xml:108
-#, fuzzy
msgid ""
"Returns the constant at [code]name[/code] if the theme has [code]node_type[/"
"code]."
-msgstr "å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则返回å为 [code]name[/code] 的常é‡ã€‚"
+msgstr "如果主题有[code]node_type[/code],返回[code]name[/code]处的常é‡ã€‚"
#: doc/classes/Theme.xml:115
-#, fuzzy
msgid ""
"Returns all the constants as a [PoolStringArray] filled with each constant's "
"name, for use in [method get_constant], if the theme has [code]node_type[/"
"code]."
msgstr ""
-"如果主题包å«[code]type[/code],则将所有常é‡ä½œä¸º[PackedStringArray]返回,并填"
-"å……æ¯ä¸ªå¸¸é‡çš„å称,供[method get_constant]使用。"
+"如果主题有[code]node_type[/code],将所有常é‡ä½œä¸º[PoolStringArray]返回,并填充"
+"æ¯ä¸ªå¸¸é‡çš„å称,以供[method get_constant]使用。"
#: doc/classes/Theme.xml:121
-#, fuzzy
msgid ""
"Returns all the constant types as a [PoolStringArray] filled with unique "
"type names, for use in [method get_constant] and/or [method "
"get_constant_list]."
msgstr ""
-"如果主题包å«[code]type[/code],则将所有常é‡ä½œä¸º[PackedStringArray]返回,并填"
-"å……æ¯ä¸ªå¸¸é‡çš„å称,供[method get_constant]使用。"
+"返回所有的常é‡ç±»åž‹ä¸º[PoolStringArray],其中填充唯一的类型å称,以供[method "
+"get_constant]和/或[method get_constant_list]使用。"
#: doc/classes/Theme.xml:129
-#, fuzzy
msgid ""
"Returns the [Font] at [code]name[/code] if the theme has [code]node_type[/"
"code]."
-msgstr ""
-"å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则返回å为 [code]name[/code] çš„ [Font]字体。"
+msgstr "如果主题有[code]node_type[/code],返回[code]name[/code]处的[Font]。"
#: doc/classes/Theme.xml:136
-#, fuzzy
msgid ""
"Returns all the [Font]s as a [PoolStringArray] filled with each [Font]'s "
"name, for use in [method get_font], if the theme has [code]node_type[/code]."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的[Font]å­—"
-"体,并填入æ¯ä¸ª[Font]çš„å称,供[method get_font]使用。"
+"如果主题有[code]node_type[/code],将所有的[Font]作为[PoolStringArray]返回,并"
+"å¡«å…¥æ¯ä¸ª[Font]çš„å称,以供[method get_font]使用。"
#: doc/classes/Theme.xml:142
-#, fuzzy
msgid ""
"Returns all the [Font] types as a [PoolStringArray] filled with unique type "
"names, for use in [method get_font] and/or [method get_font_list]."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的[Font]å­—"
-"体,并填入æ¯ä¸ª[Font]çš„å称,供[method get_font]使用。"
+"返回所有的[Font]类型为[PoolStringArray],其中填充唯一的类型å称,以供[method "
+"get_font]和/或[method get_font_list]使用。"
#: doc/classes/Theme.xml:150
-#, fuzzy
msgid ""
"Returns the icon [Texture] at [code]name[/code] if the theme has "
"[code]node_type[/code]."
msgstr ""
-"å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则返回å为 [code]name[/code] çš„ [Texture2D] "
-"图标。"
+"如果主题有[code]node_type[/code],返回[code]name[/code]处的图标[Texture]。"
#: doc/classes/Theme.xml:157
-#, fuzzy
msgid ""
"Returns all the icons as a [PoolStringArray] filled with each [Texture]'s "
"name, for use in [method get_icon], if the theme has [code]node_type[/code]."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的图标,并填"
-"å……æ¯ä¸ª[Texture2D]çš„å称,供[method get_icon]使用。"
+"如果主题有[code]node_type[/code],则返回所有的图标为一个[PoolStringArray],并"
+"å¡«å…¥æ¯ä¸ª[Texture]çš„å称,以供[method get_icon]使用。"
#: doc/classes/Theme.xml:163
-#, fuzzy
msgid ""
"Returns all the icon types as a [PoolStringArray] filled with unique type "
"names, for use in [method get_icon] and/or [method get_icon_list]."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的图标,并填"
-"å……æ¯ä¸ª[Texture2D]çš„å称,供[method get_icon]使用。"
+"返回所有的图标类型为[PoolStringArray],其中填充唯一的类型å称,以供[method "
+"get_icon]和/或[method get_icon_list]使用。"
#: doc/classes/Theme.xml:171
msgid ""
@@ -67888,28 +68077,29 @@ msgid ""
"Valid [code]name[/code]s may be found using [method get_stylebox_list]. "
"Valid [code]node_type[/code]s may be found using [method get_stylebox_types]."
msgstr ""
+"如果主题有[code]node_type[/code],返回[code]name[/code]处的[StyleBox]。\n"
+"å¯ä»¥ä½¿ç”¨[method get_stylebox_list]找到有效的[code]name[/code]。å¯ä»¥é€šè¿‡"
+"[method get_stylebox_types]æ¥æ‰¾åˆ°æœ‰æ•ˆçš„[code]node_type[/code]。"
#: doc/classes/Theme.xml:179
-#, fuzzy
msgid ""
"Returns all the [StyleBox]s as a [PoolStringArray] filled with each "
"[StyleBox]'s name, for use in [method get_stylebox], if the theme has "
"[code]node_type[/code].\n"
"Valid [code]node_type[/code]s may be found using [method get_stylebox_types]."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的"
-"[StyleBox],并填充æ¯ä¸ª[StyleBox]çš„å称,供[method get_stylebox]使用。"
+"如果主题有[code]node_type[/code],则返回所有[StyleBox]的[PoolStringArray],并"
+"å¡«å…¥æ¯ä¸ª[StyleBox]çš„å称,以供[method get_stylebox]使用。\n"
+"å¯ä»¥ä½¿ç”¨[method get_stylebox_types]找到有效的[code]node_type[/code]。"
#: doc/classes/Theme.xml:186
-#, fuzzy
msgid ""
"Returns all the [StyleBox] types as a [PoolStringArray] filled with unique "
"type names, for use in [method get_stylebox] and/or [method "
"get_stylebox_list]."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的[StyleBox]"
-"类型,填充æ¯ä¸ª[StyleBox]的类型,供[method get_stylebox]å’Œ[method "
-"get_stylebox_list]使用。"
+"返回所有[StyleBox]类型为[PoolStringArray],其中填充了唯一的类型å称,以供"
+"[method get_stylebox]和/或[method get_stylebox_list]使用。"
#: doc/classes/Theme.xml:195
msgid ""
@@ -67919,6 +68109,11 @@ msgid ""
"a data type specific method. Valid [code]node_type[/code]s may be found "
"using [method get_theme_item_types] or a data type specific method."
msgstr ""
+"如果主题有 [code]node_type [/code],则以 [code]name[/code] 返回 "
+"[code]data_type [/code] 的主题项目。\n"
+"使用 [method get_theme_item_list] 或数æ®ç±»åž‹ç‰¹å®šæ–¹æ³•,å¯èƒ½ä¼šæ‰¾åˆ°æœ‰æ•ˆçš„ "
+"[code]name[/code]。å¯ä»¥ä½¿ç”¨ [method get_theme_item_types] 或数æ®ç±»åž‹ç‰¹å®šæ–¹"
+"法,找到有效的 [code]node_type[/code]。"
#: doc/classes/Theme.xml:204
msgid ""
@@ -67928,101 +68123,99 @@ msgid ""
"Valid [code]node_type[/code]s may be found using [method "
"get_theme_item_types] or a data type specific method."
msgstr ""
+"返回所有[code]data_type[/code]的主题项目,以[PoolStringArray]的形å¼å¡«å…¥æ¯ä¸ªä¸»"
+"题项目的å称,如果主题有[code]node_type[/code],å¯ä»¥åœ¨[method get_theme_item]"
+"或特定数æ®ç±»åž‹æ–¹æ³•中使用。\n"
+"å¯ä»¥é€šè¿‡[method get_theme_item_types]或特定数æ®ç±»åž‹çš„æ–¹æ³•找到有效的"
+"[code]node_type[/code]。"
#: doc/classes/Theme.xml:212
-#, fuzzy
msgid ""
"Returns all the theme items of [code]data_type[/code] types as a "
"[PoolStringArray] filled with unique type names, for use in [method "
"get_theme_item], [method get_theme_item_list] or data type specific methods."
msgstr ""
-"如果主题包å«[code]type[/code],则返回[PackedStringArray],是所有的[StyleBox]"
-"类型,填充æ¯ä¸ª[StyleBox]的类型,供[method get_stylebox]å’Œ[method "
-"get_stylebox_list]使用。"
+"返回所有[code]data_type[/code]类型的主题项,作为填入唯一类型åç§°çš„"
+"[PoolStringArray],以供[method get_theme_item]ã€[method get_theme_item_list]"
+"或数æ®ç±»åž‹ç‰¹å®šæ–¹æ³•使用。"
#: doc/classes/Theme.xml:219
-#, fuzzy
msgid ""
"Returns all the theme types as a [PoolStringArray] filled with unique type "
"names, for use in other [code]get_*[/code] functions of this theme.\n"
"[b]Note:[/b] [code]node_type[/code] has no effect and will be removed in "
"future version."
msgstr ""
-"如果该主题包å«[code]type[/code],将[code]type[/code]中的所有类型作为"
-"[PackedStringArray]返回,以便在任何[code]get_*[/code]函数中使用。"
+"将所有的主题类型作为一个[PoolStringArray]返回,其中填入了唯一的类型å称,以供"
+"这个主题的其他[code]get_*[/code]函数使用。\n"
+"[b]注æ„:[/b][code]node_type[/code]没有生效,在未æ¥çš„版本中会被删除。"
#: doc/classes/Theme.xml:228
-#, 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 ""
-"如果[code]type[/code]中有带[code]name[/code]的[Color],则返回[code]true[/"
-"code]。\n"
-"如果主题没有该[code]type[/code],则返回[code]false[/code]。"
+"如果带有[code]name[/code]的[Color]在[code]node_type[/code]中,则返回"
+"[code]true[/code]。\n"
+"如果主题没有[code]node_type[/code],则返回[code]false[/code]。"
#: doc/classes/Theme.xml:237
-#, fuzzy
msgid ""
"Returns [code]true[/code] if constant 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 ""
-"如果[code]type[/code]中有带[code]name[/code]的常é‡ï¼Œåˆ™è¿”回[code]true[/"
+"如果带有[code]name[/code]的常é‡åœ¨[code]node_type[/code]中,则返回[code]true[/"
"code]。\n"
-"如果主题没有该[code]type[/code],则返回[code]false[/code]。"
+"如果主题没有[code]node_type[/code],则返回[code]false[/code]。"
#: doc/classes/Theme.xml:244
-#, fuzzy
msgid ""
"Returns [code]true[/code] if this theme has a valid [member default_font] "
"value."
-msgstr "如果有一个[member network_peer]设置,返回[code]true[/code]。"
+msgstr ""
+"如果这个主题有一个有效的[member default_font]值,返回[code]true[/code]。"
#: doc/classes/Theme.xml:252
-#, 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 ""
-"如果[code]type[/code]中有带[code]name[/code]的[Font]字体,则返回[code]true[/"
-"code]。\n"
-"如果主题没有该[code]type[/code],则返回[code]false[/code]。"
+"如果带有[code]name[/code]的[Font]在[code]node_type[/code]中,则返回"
+"[code]true[/code]。\n"
+"如果主题没有[code]node_type[/code],则返回[code]false[/code]。"
#: doc/classes/Theme.xml:261
-#, fuzzy
msgid ""
"Returns [code]true[/code] if icon [Texture] 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 ""
-"如果[code]type[/code]中有带[code]name[/code]的图标[Texture2D],则返回"
+"如果带有[code]name[/code]的图标[Texture]在[code]node_type[/code]中,则返回"
"[code]true[/code]。\n"
-"如果主题没有该[code]type[/code],则返回[code]false[/code]。"
+"如果主题没有[code]node_type[/code],则返回[code]false[/code]。"
#: doc/classes/Theme.xml:270
-#, fuzzy
msgid ""
"Returns [code]true[/code] if [StyleBox] 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 ""
-"如果[code]type[/code]中有带[code]name[/code]çš„[StyleBox]æ ·å¼ç›’,则返回"
+"如果带有[code]name[/code]的[StyleBox]在[code]node_type[/code]中,返回"
"[code]true[/code]。\n"
-"如果主题没有该[code]type[/code],则返回[code]false[/code]。"
+"如果主题没有[code]node_type[/code],则返回[code]false[/code]。"
#: doc/classes/Theme.xml:280
-#, fuzzy
msgid ""
"Returns [code]true[/code] if a theme item of [code]data_type[/code] 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 ""
-"如果[code]type[/code]中有带[code]name[/code]çš„[StyleBox]æ ·å¼ç›’,则返回"
-"[code]true[/code]。\n"
-"如果主题没有该[code]type[/code],则返回[code]false[/code]。"
+"如果一个[code]data_type[/code]的主题项目与[code]name[/code]在"
+"[code]node_type[/code]中,则返回[code]true[/code]。\n"
+"如果该主题没有[code]node_type[/code],则返回[code]false[/code]。"
#: doc/classes/Theme.xml:288
msgid ""
@@ -68032,122 +68225,116 @@ msgid ""
"themes together without modifying either one, create a new empty theme and "
"merge the other two into it one after another."
msgstr ""
+"用[code]other[/code][Theme]的值添加缺失的,和覆盖现有的定义。\n"
+"[b]注æ„:[/b] 这将修改当å‰çš„主题。如果你想在ä¸ä¿®æ”¹ä»»ä½•一个主题的情况下将两个"
+"主题åˆå¹¶åœ¨ä¸€èµ·ï¼Œè¯·åˆ›å»ºä¸€ä¸ªæ–°çš„空主题,然åŽå°†å¦å¤–两个主题é€ä¸ªåˆå¹¶åˆ°å…¶ä¸­ã€‚"
#: doc/classes/Theme.xml:298
-#, fuzzy
msgid ""
"Renames the [Color] at [code]old_name[/code] to [code]name[/code] if the "
"theme has [code]node_type[/code]. If [code]name[/code] is already taken, "
"this method fails."
msgstr ""
-"å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则返回å为 [code]name[/code] çš„ [Color]颜色。"
+"如果主题有[code]node_type[/code],则将[code]old_name[/code]çš„[Color]é‡å‘½å为"
+"[code]name[/code]。如果[code]name[/code]å·²ç»è¢«å ç”¨ï¼Œåˆ™æ­¤æ–¹æ³•将失败。"
#: doc/classes/Theme.xml:307
-#, fuzzy
msgid ""
"Renames the constant at [code]old_name[/code] to [code]name[/code] if the "
"theme has [code]node_type[/code]. If [code]name[/code] is already taken, "
"this method fails."
-msgstr "å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则返回å为 [code]name[/code] 的常é‡ã€‚"
+msgstr ""
+"如果主题有[code]node_type[/code],则将[code]old_name[/code]的常é‡é‡å‘½å为"
+"[code]name[/code]。如果[code]name[/code]å·²ç»è¢«å ç”¨ï¼Œåˆ™æ­¤æ–¹æ³•失败。"
#: doc/classes/Theme.xml:316
-#, fuzzy
msgid ""
"Renames the [Font] at [code]old_name[/code] to [code]name[/code] if the "
"theme has [code]node_type[/code]. If [code]name[/code] is already taken, "
"this method fails."
msgstr ""
-"å¦‚æžœä¸»é¢˜åŒ…å« [code]type[/code],则返回å为 [code]name[/code] çš„ [Font]字体。"
+"如果主题有[code]node_type[/code],则将[code]old_name[/code]çš„[Font]é‡å‘½å为"
+"[code]name[/code]。如果[code]name[/code]å·²ç»è¢«å ç”¨ï¼Œåˆ™æ­¤æ–¹æ³•失败。"
#: doc/classes/Theme.xml:325
-#, fuzzy
msgid ""
"Renames the icon at [code]old_name[/code] to [code]name[/code] if the theme "
"has [code]node_type[/code]. If [code]name[/code] is already taken, this "
"method fails."
msgstr ""
-"如果主题包å«[code]type[/code],返回[code]name[/code]处图标[StyleBox]的样å¼"
-"盒。"
+"如果主题有[code]node_type[/code],将[code]old_name[/code]的图标é‡å‘½å为"
+"[code]name[/code]。如果[code]name[/code]å·²ç»è¢«å ç”¨ï¼Œåˆ™æ­¤æ–¹æ³•失败。"
#: doc/classes/Theme.xml:334
-#, fuzzy
msgid ""
"Renames [StyleBox] at [code]old_name[/code] to [code]name[/code] if the "
"theme has [code]node_type[/code]. If [code]name[/code] is already taken, "
"this method fails."
msgstr ""
-"在[code]type[/code]的[code]name[/code]处,将主题的[StyleBox]设置为"
-"[code]stylebox[/code]。\n"
-"如果主题没有该[code]type[/code],则没有任何作用。"
+"如果主题有[code]node_type[/code],则将[StyleBox]在[code]old_name[/code]é‡å‘½å"
+"为[code]name[/code]。如果[code]name[/code]å·²ç»è¢«å ç”¨ï¼Œæ­¤æ–¹æ³•会失败。"
#: doc/classes/Theme.xml:344
-#, fuzzy
msgid ""
"Renames the theme item of [code]data_type[/code] at [code]old_name[/code] to "
"[code]name[/code] if the theme has [code]node_type[/code]. If [code]name[/"
"code] is already taken, this method fails."
msgstr ""
-"在[code]type[/code]中的[code]name[/code]处,将主题的常é‡è®¾ç½®ä¸º"
-"[code]constant[/code]。\n"
-"如果主题没有该[code]type[/code],则没有任何作用。"
+"如果主题具有 [code]node_type[/code],则将 [code]old_name[/code] 处的 "
+"[code]data_type[/code] 的主题项é‡å‘½å为 [code]name[/code]。如果 [code]name[/"
+"code] å·²ç»è¢«å ç”¨ï¼Œåˆ™æ­¤æ–¹æ³•失败。"
#: doc/classes/Theme.xml:353
-#, fuzzy
msgid ""
"Sets the theme's [Color] to [code]color[/code] at [code]name[/code] in "
"[code]node_type[/code].\n"
"Creates [code]node_type[/code] if the theme does not have it."
msgstr ""
-"在[code]type[/code]中的[code]name[/code]处,将主题的[Color]颜色设置为"
+"在[code]node_type[/code]中的[code]name[/code]处,设置主题的[Color]为"
"[code]color[/code]。\n"
-"如果主题没有该[code]type[/code],则没有任何作用。"
+"如果主题没有[code]node_type[/code],则创建该节点。"
#: doc/classes/Theme.xml:363
-#, fuzzy
msgid ""
"Sets the theme's constant to [code]constant[/code] at [code]name[/code] in "
"[code]node_type[/code].\n"
"Creates [code]node_type[/code] if the theme does not have it."
msgstr ""
-"在[code]type[/code]中的[code]name[/code]处,将主题的常é‡è®¾ç½®ä¸º"
+"在[code]node_type[/code]中的[code]name[/code]处,将主题的常é‡è®¾ç½®ä¸º"
"[code]constant[/code]。\n"
-"如果主题没有该[code]type[/code],则没有任何作用。"
+"如果主题没有,则创建[code]node_type[/code]。"
#: doc/classes/Theme.xml:373
-#, fuzzy
msgid ""
"Sets the theme's [Font] to [code]font[/code] at [code]name[/code] in "
"[code]node_type[/code].\n"
"Creates [code]node_type[/code] if the theme does not have it."
msgstr ""
-"在[code]type[/code]中的[code]name[/code]处,将主题的[Font]字体设置为"
+"在[code]node_type[/code]中的[code]name[/code]处将主题的[font]设置为"
"[code]font[/code]。\n"
-"如果主题没有该[code]type[/code],则没有任何作用。"
+"如果主题没有[code]node_type[/code],则创建该节点。"
#: doc/classes/Theme.xml:383
-#, fuzzy
msgid ""
"Sets the theme's icon [Texture] to [code]texture[/code] at [code]name[/code] "
"in [code]node_type[/code].\n"
"Creates [code]node_type[/code] if the theme does not have it."
msgstr ""
-"在[code]type[/code]的[code]name[/code]处,将主题的图标[Texture2D]设置为"
+"在[code]node_type[/code]中的[code]name[/code]处设置主题的图标[Texture]为"
"[code]texture[/code]。\n"
-"如果主题没有该[code]type[/code],则没有任何作用。"
+"如果主题没有[code]node_type[/code],则创建该节点。"
#: doc/classes/Theme.xml:393
-#, fuzzy
msgid ""
"Sets theme's [StyleBox] to [code]stylebox[/code] at [code]name[/code] in "
"[code]node_type[/code].\n"
"Creates [code]node_type[/code] if the theme does not have it."
msgstr ""
-"在[code]type[/code]的[code]name[/code]处,将主题的[StyleBox]设置为"
-"[code]stylebox[/code]。\n"
-"如果主题没有该[code]type[/code],则没有任何作用。"
+"将主题的[StyleBox]设置为[code]stylebox[/code],在[code]node_type[/code]的"
+"[code]name[/code]处。\n"
+"如果主题没有[code]node_type[/code],则创建该节点。"
#: doc/classes/Theme.xml:404
-#, fuzzy
msgid ""
"Sets the theme item of [code]data_type[/code] to [code]value[/code] at "
"[code]name[/code] in [code]node_type[/code].\n"
@@ -68155,9 +68342,10 @@ msgid ""
"code].\n"
"Creates [code]node_type[/code] if the theme does not have it."
msgstr ""
-"在[code]type[/code]的[code]name[/code]处,将主题的图标[Texture2D]设置为"
-"[code]texture[/code]。\n"
-"如果主题没有该[code]type[/code],则没有任何作用。"
+"将[code]data_type[/code]的主题项目设置为[code]value[/code],在"
+"[code]node_type[/code]中的[code]name[/code]。\n"
+"如果[code]value[/code]类型与[code]data_type[/code]ä¸åŒ¹é…,则ä¸åšä»»ä½•处ç†ã€‚\n"
+"如果主题没有[code]node_type[/code],则创建该类型。"
#: doc/classes/Theme.xml:412
msgid ""
@@ -68166,42 +68354,39 @@ msgid ""
"also invalid, the global default value is used.\n"
"Use [method has_default_font] to check if this value is valid."
msgstr ""
+"æ­¤ [Theme] 资æºçš„默认字体。用作此主题中定义的字体项的åŽå¤‡å€¼ï¼Œä½†å…·æœ‰æ— æ•ˆå€¼ã€‚如"
+"果此值也无效,则使用全局默认值。\n"
+"使用 [method has_default_font] æ¥æ£€æŸ¥è¿™ä¸ªå€¼æ˜¯å¦æœ‰æ•ˆã€‚"
#: doc/classes/Theme.xml:418
-#, fuzzy
msgid "Theme's [Color] item type."
-msgstr "雾的[Color]。"
+msgstr "主题的 [Color] 颜色项类型。"
#: doc/classes/Theme.xml:421
-#, fuzzy
msgid "Theme's constant item type."
-msgstr "常é‡çš„类型。"
+msgstr "主题的常é‡é¡¹ç±»åž‹ã€‚"
#: doc/classes/Theme.xml:424
-#, fuzzy
msgid "Theme's [Font] item type."
-msgstr "常é‡çš„类型。"
+msgstr "主题的 [Font] 字体项类型。"
#: doc/classes/Theme.xml:427
-#, fuzzy
msgid "Theme's icon [Texture] item type."
-msgstr "节点的 [Texture2D] 资æºã€‚"
+msgstr "主题的图标[Texture]项类型。"
#: doc/classes/Theme.xml:430
msgid "Theme's [StyleBox] item type."
-msgstr ""
+msgstr "主题的[StyleBox]项目类型。"
#: doc/classes/Theme.xml:433
-#, fuzzy
msgid "Maximum value for the DataType enum."
-msgstr "模å¼åˆ—举的最大值。"
+msgstr "æ•°æ®ç±»åž‹æžšä¸¾çš„æœ€å¤§å€¼ã€‚"
#: doc/classes/Thread.xml:4
msgid "A unit of execution in a process."
msgstr "执行过程中的执行å•元。"
#: doc/classes/Thread.xml:7
-#, fuzzy
msgid ""
"A unit of execution in a process. Can run methods on [Object]s "
"simultaneously. The use of synchronization via [Mutex] or [Semaphore] is "
@@ -68209,34 +68394,42 @@ msgid ""
"[b]Note:[/b] Breakpoints won't break on code if it's running in a thread. "
"This is a current limitation of the GDScript debugger."
msgstr ""
-"执行过程中的执行å•元。å¯ä»¥åŒæ—¶è¿è¡Œæ•°ä¸ª[Object]上的方法。如果与共享对象一起工"
-"作,建议通过[Mutex]或[Semaphore]è¿›è¡ŒåŒæ­¥ã€‚"
+"进程中的执行å•元。å¯ä»¥åŒæ—¶åœ¨ [Object] 上è¿è¡Œæ–¹æ³•。如果使用共享对象,建议通过 "
+"[Mutex] 或 [Semaphore] ä½¿ç”¨åŒæ­¥ã€‚\n"
+"[b]注æ„:[/b] 如果代ç åœ¨çº¿ç¨‹ä¸­è¿è¡Œï¼Œæ–­ç‚¹ä¸ä¼šä¸­æ–­ã€‚这是 GDScript 调试器的当å‰"
+"é™åˆ¶ã€‚"
#: doc/classes/Thread.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/threads/thread_safe_apis.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/threads/thread_safe_apis."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/threads/thread_safe_apis.html"
#: doc/classes/Thread.xml:19
-#, fuzzy
msgid ""
"Returns the current [Thread]'s ID, uniquely identifying it among all "
"threads. If the [Thread] is not running this returns an empty string."
-msgstr "返回当å‰[Thread]çš„ID,在所有线程中唯一的标识。"
+msgstr ""
+"è¿”å›žå½“å‰ [Thread] çš„ ID,在所有线程中唯一标识它。如果 [Thread] 未è¿è¡Œï¼Œåˆ™è¿”回"
+"空字符串。"
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-"如果这个[Thread]线程当å‰å¤„于激活状æ€ï¼Œè¿”回[code]true[/code]。一个激活的"
-"[Thread]ä¸èƒ½åœ¨ä¸€ä¸ªæ–°æ–¹æ³•上开始è¿è¡Œï¼Œä½†å¯ä»¥ä¸Ž[method wait_to_finish]一起。"
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -68251,26 +68444,34 @@ msgstr ""
"先级å¯ä»¥é€šè¿‡ä¼ é€’[enum Priority]æžšä¸¾ä¸­çš„ä¸€ä¸ªå€¼æ¥æ”¹å˜ã€‚\n"
"æˆåŠŸæ—¶è¿”å›ž[constant OK],失败时返回[constant ERR_CANT_CREATE] 。"
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
+#, fuzzy
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
+"加入 [Thread] 并等待它完æˆã€‚返回方法调用返回的内容。\n"
+"åº”è¯¥åœ¨æ‚¨æƒ³è¦æ£€ç´¢ä»Ž [Thread] è°ƒç”¨çš„æ–¹æ³•è¿”å›žçš„å€¼æ—¶ä½¿ç”¨ï¼Œæˆ–è€…åœ¨é‡Šæ”¾åŒ…å« "
+"[Thread] 的实例之å‰ä½¿ç”¨ã€‚\n"
+"[b]注:[/b][Thread]连接完æˆåŽå°†è¢«é”€æ¯ã€‚如果è¦å†æ¬¡ä½¿ç”¨å®ƒï¼Œåˆ™å¿…须创建它的新实"
+"例。"
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr "一个线程以比正常情况下更低的优先级è¿è¡Œã€‚"
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr "具有标准优先级的线程。"
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr "以比正常情况更高的优先级è¿è¡Œçš„线程。"
@@ -68288,17 +68489,19 @@ msgid ""
"by methods such as [method Physics2DDirectSpaceState.intersect_shape], "
"[method Physics2DDirectBodyState.get_contact_collider_shape_metadata], etc."
msgstr ""
+"二维图å—地图的节点。图å—地图使用一个[TileSet],其中包å«å›¾å—列表,纹ç†èƒ½åŠ ä¸Šå¯"
+"选的碰撞ã€å¯¼èˆªå’Œ/æˆ–é®æŒ¡å½¢çŠ¶ï¼Œç”¨äºŽåˆ›å»ºåŸºäºŽç½‘æ ¼çš„åœ°å›¾ã€‚\n"
+"当对图å—åœ°å›¾è¿›è¡Œç‰©ç†æŸ¥è¯¢æ—¶ï¼Œå•å…ƒåæ ‡è¢«ç¼–ç ä¸º[code]metadata[/code],这些碰撞形"
+"状由 [method Physics2DDirectSpaceState.intersect_shape]ã€[method "
+"Physics2DDirectBodyState.get_contact_collider_shape_metadata] 等方法返回。"
#: doc/classes/TileMap.xml:11 doc/classes/TileSet.xml:11
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/2d/using_tilemaps.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/2d/using_tilemaps.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/2d/using_tilemaps.html"
#: doc/classes/TileMap.xml:14 doc/classes/TileSet.xml:14
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/111"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/111"
#: doc/classes/TileMap.xml:23
msgid "Clears all cells."
@@ -68349,11 +68552,10 @@ msgstr ""
"code])。"
#: doc/classes/TileMap.xml:79
-#, fuzzy
msgid ""
"Returns an array of all cells with the given tile index specified in "
"[code]id[/code]."
-msgstr "返回所有具有指定图å—[code]index[/code]索引的å•元格的数组。"
+msgstr "返回所有具有[code]id[/code]中指定的图å—索引的å•元格的数组。"
#: doc/classes/TileMap.xml:85
msgid "Returns a rectangle enclosing the used (non-empty) tiles of the map."
@@ -68384,9 +68586,15 @@ msgid ""
"[/codeblock]\n"
"Optionally, the tilemap's half offset can be ignored."
msgstr ""
+"返回与指定的图å—åœ°å›¾ï¼ˆåŸºäºŽç½‘æ ¼ï¼‰åæ ‡ç›¸å¯¹åº”çš„å•å…ƒæ ¼å·¦ä¸Šè§’çš„å±€éƒ¨åæ ‡ã€‚\n"
+"è¦è޷得免局忠‡ï¼Œè¯·ä½¿ç”¨[method Node2D.to_global]。\n"
+"[codeblock]\n"
+"var local_position = my_tilemap.map_to_world(map_position)\n"
+"var global_position = my_tilemap.to_global(local_position)\n"
+"[/codeblock]\n"
+"å¯ä»¥é€‰æ‹©å¿½ç•¥å›¾å—地图的åŠå移。"
#: doc/classes/TileMap.xml:136
-#, fuzzy
msgid ""
"Sets the tile index for the cell given by a Vector2.\n"
"An index of [code]-1[/code] clears the cell.\n"
@@ -68407,16 +68615,18 @@ msgid ""
" .set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord)\n"
"[/codeblock]"
msgstr ""
-"设置由Vector2指定的å•元格的图å—索引。\n"
-"索引[code]-1[/code]将清除该å•元。\n"
-"也å¯ä»¥é€‰æ‹©ç¿»è½¬ã€ç§»ä½ï¼Œæˆ–者指定自动图å—ã€‚è‡ªåŠ¨å›¾å—æŒ‡çš„æ˜¯å­å›¾å—的列和行。\n"
+"设置由Vector2给出的å•元格的图å—索引。\n"
+"[code]-1[/code]的索引将清除该å•元。\n"
+"也å¯ä»¥é€‰æ‹©ç¿»è½¬ã€ç§»ä½ï¼Œæˆ–者指定自动图å—åæ ‡ã€‚自动图å—åæ ‡æŒ‡çš„æ˜¯å­å›¾å—的列和"
+"行。\n"
"[b]注æ„:[/b] 由于性能原因,导航多边形和碰撞形状等数æ®ä¸ä¼šç«‹å³æ›´æ–°ã€‚\n"
-"如果你需è¦è¿™äº›è¢«ç«‹å³æ›´æ–°ï¼Œå¯ä»¥è°ƒç”¨[method update_dirty_quadrants]。\n"
-"é‡å†™è¿™ä¸ªæ–¹æ³•也会在内部é‡å†™å®ƒï¼Œå…许在放置/ç§»é™¤å›¾å—æ—¶ï¼Œå®žçŽ°è‡ªå®šä¹‰é€»è¾‘ã€‚\n"
+"如果你需è¦è¿™äº›è¢«ç«‹å³æ›´æ–°ï¼Œä½ å¯ä»¥è°ƒç”¨[method update_dirty_quadrants]。\n"
+"é‡å†™è¯¥æ–¹æ³•会在内部é‡å†™å®ƒï¼Œå…许在放置/ç§»é™¤å›¾å—æ—¶å®žçŽ°è‡ªå®šä¹‰é€»è¾‘ã€‚\n"
"[codeblock]\n"
-"func set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord)\n"
-" # 在这里写下你的自定义逻辑。\n"
-" # 调用默认方法。\n"
+"func set_cell(x, y, tile, flip_x=false, flip_y=false, transpose=false, "
+"autotile_coord=Vector2()):\n"
+" # 在这里写下你的自定义逻辑。 \n"
+" # 调用默认方法:\n"
" .set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord)\n"
"[/codeblock]"
@@ -68477,6 +68687,12 @@ msgid ""
"var map_position = my_tilemap.world_to_map(local_position)\n"
"[/codeblock]"
msgstr ""
+"è¿”å›žä¸ŽæŒ‡å®šçš„å±€éƒ¨åæ ‡ç›¸å¯¹åº”的图å—åœ°å›¾åæ ‡ï¼ŒåŸºäºŽç½‘格。\n"
+"è¦ä½¿ç”¨è¿™ä¸ªå…¨å±€å标,首先è¦ç”¨[method Node2D.to_local]ç¡®å®šå±€éƒ¨åæ ‡ã€‚\n"
+"[codeblock]\n"
+"var local_position = my_tilemap.to_local(global_position)\n"
+"var map_position = my_tilemap.world_to_map(local_position)\n"
+"[/codeblock]"
#: doc/classes/TileMap.xml:218
msgid "If [code]true[/code], the cell's UVs will be clipped."
@@ -68507,11 +68723,10 @@ msgid "Position for tile origin. See [enum TileOrigin] for possible values."
msgstr "图å—åŽŸç‚¹çš„åæ ‡ã€‚有关å¯èƒ½çš„值,å‚阅[enum TileOrigin]。"
#: doc/classes/TileMap.xml:236
-#, fuzzy
msgid ""
"If [code]true[/code], the TileMap's direct children will be drawn in order "
"of their Y coordinate."
-msgstr "如果[code]true[/code],图å—地图的å­èŠ‚ç‚¹å°†æŒ‰å…¶Yåæ ‡çš„顺åºç»˜åˆ¶ã€‚"
+msgstr "如果[code]true[/code],图å—地图的直接å­èŠ‚ç‚¹å°†æŒ‰å…¶Yåæ ‡é¡ºåºç»˜åˆ¶ã€‚"
#: doc/classes/TileMap.xml:239
msgid ""
@@ -68549,6 +68764,9 @@ msgid ""
"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
"documentation for more information."
msgstr ""
+"图å—地图中所有碰撞器的碰撞层。更多信æ¯è¯·å‚阅文档中的[url=https://docs."
+"godotengine.org/en/3.4/tutorials/physics/physics_introduction.html#collision-"
+"layers-and-masks]碰撞层和掩ç [/url]。"
#: doc/classes/TileMap.xml:252
msgid ""
@@ -68557,6 +68775,9 @@ msgid ""
"html#collision-layers-and-masks]Collision layers and masks[/url] in the "
"documentation for more information."
msgstr ""
+"图å—地图中所有碰撞器的碰撞掩ç ã€‚更多信æ¯è¯·å‚阅文档中的[url=https://docs."
+"godotengine.org/en/3.4/tutorials/physics/physics_introduction.html#collision-"
+"layers-and-masks]碰撞层和掩ç [/url]。"
#: doc/classes/TileMap.xml:255
msgid ""
@@ -68621,6 +68842,9 @@ msgid ""
"runtime, enable [b]Visible Collision Shapes[/b] in the [b]Debug[/b] menu "
"instead."
msgstr ""
+"如果[code]true[/code],碰撞形状在编辑器中是å¯è§çš„。ä¸å½±å“碰撞形状在è¿è¡Œæ—¶çš„å¯"
+"è§æ€§ã€‚è¦åœ¨è¿è¡Œæ—¶æ˜¾ç¤ºç¢°æ’žå½¢çŠ¶ï¼Œè¯·åœ¨[b]调试[/b]èœå•中å¯ç”¨[b]å¯è§çš„碰撞形状[/"
+"b]。"
#: doc/classes/TileMap.xml:275
msgid "The assigned [TileSet]."
@@ -69050,15 +69274,14 @@ msgid "A countdown timer."
msgstr "倒数计时器。"
#: doc/classes/Timer.xml:7
-#, fuzzy
msgid ""
"Counts down a specified interval and emits a signal on reaching 0. Can be "
"set to repeat or \"one-shot\" mode.\n"
"[b]Note:[/b] To create a one-shot timer without instantiating a node, use "
"[method SceneTree.create_timer]."
msgstr ""
-"按指定间隔进行计数,在达到0时触å‘ä¿¡å·ã€‚ å¯è®¾ç½®ä¸ºé‡å¤æˆ–â€œä¸€æ¬¡æ€§â€æ¨¡å¼ã€‚\n"
-"[b]注æ„:[/b]è¦åˆ›å»ºä¸€ä¸ªä¸€æ¬¡æ€§å®šæ—¶å™¨ï¼Œè€Œä¸éœ€è¦å®žä¾‹åŒ–一个节点,请使用[method "
+"å¯ä»¥è®¾ç½®ä¸ºé‡å¤æˆ– \"一次性\" 模å¼ã€‚\n"
+"[b]注æ„:[/b]è¦åˆ›å»ºä¸€ä¸ªä¸€æ¬¡æ€§å®šæ—¶å™¨è€Œä¸éœ€è¦å®žä¾‹åŒ–一个节点,请使用[method "
"SceneTree.create_timer]。"
#: doc/classes/Timer.xml:17
@@ -69066,7 +69289,6 @@ msgid "Returns [code]true[/code] if the timer is stopped."
msgstr "å¦‚æžœå®šæ—¶å™¨è¢«åœæ­¢ï¼Œè¿”回[code]true[/code]。"
#: doc/classes/Timer.xml:24
-#, fuzzy
msgid ""
"Starts the timer. Sets [code]wait_time[/code] to [code]time_sec[/code] if "
"[code]time_sec > 0[/code]. This also resets the remaining time to "
@@ -69075,7 +69297,7 @@ msgid ""
msgstr ""
"å¯åŠ¨å®šæ—¶å™¨ã€‚å¦‚æžœ[code]time_sec>0[/code],将[code]wait_time[/code]设置为"
"[code]time_sec[/code]。这也会将剩余时间é‡ç½®ä¸º[code]wait_time[/code]。\n"
-"[b]注æ„:[/b]这个方法ä¸ä¼šæ¢å¤ä¸€ä¸ªæš‚åœçš„定时器。å‚阅[member paused]。"
+"[b]注æ„:[/b] 这个方法ä¸ä¼šæ¢å¤ä¸€ä¸ªæš‚åœçš„定时器。å‚阅 [member paused]。"
#: doc/classes/Timer.xml:31
msgid "Stops the timer."
@@ -69123,22 +69345,29 @@ msgstr ""
"start]。"
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
-msgstr "以秒为å•ä½çš„等待时间。"
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
+msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr "在æ¯ä¸€å¸§çš„物ç†è¿ç®—步骤中更新定时器,å³å›ºå®šå¸§çއ处ç†ã€‚"
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr "在æ¯ä¸€å¸§ç©ºé—²æ—¶é—´å†…更新定时器。"
#: doc/classes/ToolButton.xml:4
msgid "Flat button helper class."
-msgstr ""
+msgstr "æ‰å¹³åŒ–按钮辅助类。"
#: doc/classes/ToolButton.xml:7
msgid ""
@@ -69149,71 +69378,65 @@ msgid ""
"btn.flat = true\n"
"[/codeblock]"
msgstr ""
+"这是一个辅助类,用于生æˆä¸€ä¸ªæ‰å¹³çš„[Button],å‚阅 [member Button.flat],创建一"
+"个[ToolButton]就相当于:\n"
+"[codeblock]\n"
+"var btn = Button.new()\n"
+"btn.flat = true\n"
+"[/codeblock]"
#: doc/classes/ToolButton.xml:24
-#, fuzzy
msgid "[StyleBox] used when the [ToolButton] is disabled."
-msgstr "当[Button]被ç¦ç”¨æ—¶ï¼Œä½¿ç”¨[StyleBox]。"
+msgstr "当[ToolButton]被ç¦ç”¨æ—¶ä½¿ç”¨çš„[StyleBox]。"
#: doc/classes/ToolButton.xml:27
-#, fuzzy
msgid ""
"[StyleBox] used when the [ToolButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-"当[Button]获得焦点时使用的[StyleBox]。它显示在当å‰çš„[StyleBox]之上,所以使用"
-"[StyleBoxEmpty]åªæ˜¯ç¦ç”¨ç„¦ç‚¹è§†è§‰æ•ˆæžœã€‚"
+"当 [ToolButton] 获得焦点时使用的 [StyleBox]。它显示在当å‰çš„ [StyleBox] 之上,"
+"所以使用 [StyleBoxEmpty] å°†åªç¦ç”¨ç„¦ç‚¹çš„视觉效果。"
#: doc/classes/ToolButton.xml:30
-#, fuzzy
msgid "[Font] of the [ToolButton]'s text."
-msgstr "[Button]文本的[Font]。"
+msgstr "[ToolButton]的文本的[Font]字体。"
#: doc/classes/ToolButton.xml:33
-#, fuzzy
msgid "Default text [Color] of the [ToolButton]."
-msgstr "[Button]的默认文本[Color]。"
+msgstr "[ToolButton] 的默认文本 [Color]颜色。"
#: doc/classes/ToolButton.xml:36
-#, fuzzy
msgid "Text [Color] used when the [ToolButton] is disabled."
-msgstr "ç¦ç”¨[Button]时使用的文本[Color]。"
+msgstr "ç¦ç”¨ [ToolButton] 时使用的文本 [Color]颜色。"
#: doc/classes/ToolButton.xml:39
-#, fuzzy
msgid "Text [Color] used when the [ToolButton] is being hovered."
-msgstr "悬åœ[Button]时使用的文本[Color]。"
+msgstr "[ToolButton] æ‚¬åœæ—¶ä½¿ç”¨çš„æ–‡æœ¬ [Color]颜色。"
#: doc/classes/ToolButton.xml:42
-#, fuzzy
msgid "Text [Color] used when the [ToolButton] is being pressed."
-msgstr "正在按下 [Button] 时使用的文本 [Color] 。"
+msgstr "按下 [ToolButton] 时使用的文本 [Color]颜色。"
#: doc/classes/ToolButton.xml:45
-#, fuzzy
msgid "[StyleBox] used when the [ToolButton] is being hovered."
-msgstr "悬åœ[Button]时使用的[StyleBox]。"
+msgstr "当[ToolButton]è¢«æ‚¬åœæ—¶ä½¿ç”¨çš„[StyleBox]。"
#: doc/classes/ToolButton.xml:48
-#, fuzzy
msgid "The horizontal space between [ToolButton]'s icon and text."
-msgstr "[Button]的图标和文本之间的水平间è·ã€‚"
+msgstr "[ToolButton] 的图标和文本之间的水平间è·ã€‚"
#: doc/classes/ToolButton.xml:51
-#, fuzzy
msgid "Default [StyleBox] for the [ToolButton]."
-msgstr "[Button]的默认[StyleBox]。"
+msgstr "[ToolButton] 的默认 [StyleBox]。"
#: doc/classes/ToolButton.xml:54
-#, fuzzy
msgid "[StyleBox] used when the [ToolButton] is being pressed."
-msgstr "按下[Button]时使用的[StyleBox]。"
+msgstr "当[ToolButton]被按下时使用的[StyleBox]。"
#: doc/classes/TouchScreenButton.xml:4
-#, fuzzy
msgid "Button for touch screen devices for gameplay use."
-msgstr "触摸å±è®¾å¤‡çš„æŒ‰é’®ã€‚"
+msgstr "触摸å±è®¾å¤‡çš„æŒ‰é’®ï¼Œä¾›æ¸¸æˆä½¿ç”¨ã€‚"
#: doc/classes/TouchScreenButton.xml:7
msgid ""
@@ -69229,6 +69452,14 @@ msgid ""
"You can configure TouchScreenButton to be visible only on touch devices, "
"helping you develop your game both for desktop and mobile devices."
msgstr ""
+"TouchScreenButtonå…许你为触摸设备创建å±å¹•上的按钮。其为游æˆä½¿ç”¨ï¼Œæ¯”如在必须触"
+"摸æ‰èƒ½ç§»åŠ¨çš„è®¾å¤‡ã€‚ä¸Ž[Button]ä¸åŒï¼ŒTouchScreenButton原生支æŒå¤šç‚¹è§¦æ‘¸ã€‚几个"
+"TouchScreenButtonå¯ä»¥é€šè¿‡è§¦æ‘¸è¾“å…¥åŒæ—¶è¢«æŒ‰ä¸‹ã€‚\n"
+"这个节点继承自[Node2D]。与[Control]节点ä¸åŒï¼Œä½ ä¸èƒ½åœ¨å®ƒä¸Šé¢è®¾ç½®é”šç‚¹ã€‚如果è¦åˆ›"
+"建èœå•或用户界é¢ï¼Œå¯ç”¨[Button]节点代替。为了使按钮节点对触摸事件作出å应,å¯"
+"在项目设置中å¯ç”¨æ¨¡æ‹Ÿé¼ æ ‡é€‰é¡¹ã€‚\n"
+"å¯å°†TouchScreenButtoné…置为åªåœ¨è§¦æ‘¸è®¾å¤‡ä¸Šå¯è§ï¼Œæœ‰åŠ©ä½ åŒæ—¶ä¸ºæ¡Œé¢å’Œç§»åŠ¨è®¾å¤‡å¼€å‘"
+"游æˆã€‚"
#: doc/classes/TouchScreenButton.xml:17
msgid "Returns [code]true[/code] if this button is currently pressed."
@@ -69253,6 +69484,9 @@ msgid ""
"pressure started outside the active area of the button.\n"
"[b]Note:[/b] This is a \"pass-by\" (not \"bypass\") press mode."
msgstr ""
+"如果[code]true[/code],åªè¦æŒ‰ä¸‹çš„æ‰‹æŒ‡è¿›å‡ºæŒ‰é’®ï¼Œå°±ä¼šå‘出 [signal pressed] å’Œ"
+"[signal released] ]ä¿¡å·ï¼Œå³ä½¿åŽ‹åŠ›å¼€å§‹äºŽæŒ‰é’®çš„æœ‰æ•ˆåŒºåŸŸä¹‹å¤–ã€‚\n"
+"[b]注æ„:[/b]è¿™æ˜¯ä¸€ç§ \"pass-by\" çš„æŒ‰åŽ‹æ¨¡å¼ ï¼Œè€Œä¸æ˜¯ \"bypass\"。"
#: doc/classes/TouchScreenButton.xml:36
msgid "The button's texture for the pressed state."
@@ -69414,22 +69648,19 @@ msgstr ""
"与[method rotated]å’Œ[method scaled]ä¸åŒï¼Œå®ƒä¸ä½¿ç”¨çŸ©é˜µä¹˜æ³•。"
#: doc/classes/Transform.xml:128
-#, fuzzy
msgid ""
"Transforms the given [Vector3], [Plane], [AABB], or [PoolVector3Array] by "
"this transform."
msgstr ""
-"é€šè¿‡è¿™ä¸ªå˜æ¢å¯¹æŒ‡å®šçš„[Vector3]ã€[Plane]ã€[AABB]或[PackedVector3Array]进行å˜"
-"æ¢ã€‚"
+"é€šè¿‡è¿™ä¸ªå˜æ¢å¯¹æŒ‡å®šçš„[Vector3]ã€[Plane]ã€[AABB]或[PoolVector3Array]è¿›è¡Œå˜æ¢ã€‚"
#: doc/classes/Transform.xml:135
-#, fuzzy
msgid ""
"Inverse-transforms the given [Vector3], [Plane], [AABB], or "
"[PoolVector3Array] by this transform."
msgstr ""
-"é€šè¿‡è¿™ä¸ªå˜æ¢å¯¹æŒ‡å®šçš„[Vector3]ã€[Plane]ã€[AABB]或[PackedVector3Array]进行逆å‘"
-"å˜æ¢ã€‚"
+"é€šè¿‡è¿™ä¸ªå˜æ¢å¯¹æŒ‡å®šçš„[Vector3]ã€[Plane]ã€[AABB]或[PoolVector3Array]进行逆å˜"
+"æ¢ã€‚"
#: doc/classes/Transform.xml:141
msgid ""
@@ -69471,7 +69702,6 @@ msgid "2D transformation (2×3 matrix)."
msgstr "2Då˜æ¢ï¼Œå³2×3矩阵。"
#: doc/classes/Transform2D.xml:7
-#, fuzzy
msgid ""
"2×3 matrix (2 rows, 3 columns) used for 2D linear transformations. It can "
"represent transformations such as translation, rotation, or scaling. It "
@@ -69480,9 +69710,9 @@ msgid ""
"For more information, read the \"Matrices and transforms\" documentation "
"article."
msgstr ""
-"2×3矩阵,å³2行3列,用于2dçº¿æ€§å˜æ¢ã€‚它å¯ä»¥è¡¨ç¤ºè¯¸å¦‚å¹³ç§»ã€æ—‹è½¬æˆ–ç¼©æ”¾ç­‰å˜æ¢ã€‚它由"
-"三个[Vector2]值组æˆã€‚[member x], [member y], [member origin]。\n"
-"欲了解更多信æ¯ï¼Œè¯·é˜…读文档文章 \"Matrices and transforms\" çŸ©é˜µå’Œå˜æ¢ã€‚"
+"2×3矩阵,å³2行,3åˆ—ï¼Œç”¨äºŽäºŒç»´çº¿æ€§å˜æ¢ã€‚它å¯ä»¥è¡¨ç¤ºè¯¸å¦‚å¹³ç§»ã€æ—‹è½¬æˆ–ç¼©æ”¾çš„å˜æ¢ã€‚"
+"由三个[Vector2]值组æˆã€‚[member x],[member y],和[member origin]。\n"
+"欲了解更多信æ¯ï¼Œè¯·é˜…读 \"Matrices and transforms\" çŸ©é˜µå’Œå˜æ¢æ–‡æ¡£æ–‡ç« ã€‚"
#: doc/classes/Transform2D.xml:21
msgid "Constructs the transform from a 3D [Transform]."
@@ -69529,11 +69759,12 @@ msgid "Returns the scale."
msgstr "返回缩放。"
#: doc/classes/Transform2D.xml:86
-#, fuzzy
msgid ""
"Returns a transform interpolated between this transform and another by a "
"given [code]weight[/code] (on the range of 0.0 to 1.0)."
-msgstr "以给定æƒé‡ï¼Œè¿”å›žä¸€ä¸ªå˜æ¢å’Œå¦ä¸€ä¸ªå˜æ¢ä¹‹é—´æ’å€¼çš„å˜æ¢ï¼Œå³èŒƒå›´ä¸º0.0到1.0。"
+msgstr ""
+"è¿”å›žåœ¨æ­¤å˜æ¢å’Œå¦ä¸€ä¸ªå˜æ¢ä¹‹é—´é€šè¿‡ç»™å®šçš„[code]weight[/code]æ’å€¼çš„å˜æ¢ï¼ŒèŒƒå›´ä¸º"
+"0.0到1.0。"
#: doc/classes/Transform2D.xml:92
msgid ""
@@ -69562,19 +69793,16 @@ msgid ""
msgstr "使用矩阵乘法,用给定的缩放系数æ¥ç¼©æ”¾å˜æ¢ã€‚"
#: doc/classes/Transform2D.xml:134
-#, fuzzy
msgid ""
"Transforms the given [Vector2], [Rect2], or [PoolVector2Array] by this "
"transform."
-msgstr "é€šè¿‡è¿™ä¸ªå˜æ¢å¯¹æŒ‡å®šçš„[Vector2]ã€[Rect2]或[PackedVector2Array]è¿›è¡Œå˜æ¢ã€‚"
+msgstr "é€šè¿‡æ­¤å˜æ¢å¯¹æŒ‡å®šçš„[Vector2]ã€[Rect2]或[PoolVector2Array]è¿›è¡Œå˜æ¢ã€‚"
#: doc/classes/Transform2D.xml:141
-#, fuzzy
msgid ""
"Inverse-transforms the given [Vector2], [Rect2], or [PoolVector2Array] by "
"this transform."
-msgstr ""
-"é€šè¿‡è¿™ä¸ªå˜æ¢å¯¹æŒ‡å®šçš„[Vector2]ã€[Rect2]或[PackedVector2Array]进行åå‘å˜æ¢ã€‚"
+msgstr "é€šè¿‡æ­¤å˜æ¢å¯¹æŒ‡å®šçš„[Vector2]ã€[Rect2]或[PoolVector2Array]è¿›è¡Œé€†å˜æ¢ã€‚"
#: doc/classes/Transform2D.xml:147
msgid ""
@@ -69610,22 +69838,20 @@ msgid ""
msgstr "翻译是å¯ä»¥æŒ‰éœ€åŠ è½½å’Œå¸è½½çš„资æºã€‚是将一个字符串映射到å¦ä¸€ä¸ªå­—符串。"
#: doc/classes/Translation.xml:10 doc/classes/TranslationServer.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/i18n/internationalizing_games."
"html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/i18n/"
-"internationalizing_games.html"
+"https://docs.godotengine.org/en/3.4/tutorials/i18n/internationalizing_games."
+"html"
#: doc/classes/Translation.xml:11 doc/classes/TranslationServer.xml:11
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/i18n/locales.html"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/i18n/locales.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/i18n/locales.html"
#: doc/classes/Translation.xml:18
msgid "Virtual method to override [method get_message]."
-msgstr ""
+msgstr "é‡å†™[method get_message]虚方法。"
#: doc/classes/Translation.xml:26
msgid "Adds a message if nonexistent, followed by its translation."
@@ -69670,9 +69896,8 @@ msgid "Clears the server from all translations."
msgstr "清除æœåŠ¡ä¸­çš„æ‰€æœ‰ç¿»è¯‘ã€‚"
#: doc/classes/TranslationServer.xml:30
-#, fuzzy
msgid "Returns an array of all loaded locales of the project."
-msgstr "返回游æˆä¸­æ‰€æœ‰åŠ è½½çš„åœ°åŸŸçš„æ•°ç»„ã€‚"
+msgstr "返回项目中所有已加载的语言的数组。"
#: doc/classes/TranslationServer.xml:36
msgid ""
@@ -69680,6 +69905,9 @@ msgid ""
"See also [method OS.get_locale] and [method OS.get_locale_language] to query "
"the locale of the user system."
msgstr ""
+"返回项目的当å‰è¯­è¨€ç‰ˆæœ¬ã€‚\n"
+"å‚阅[method OS.get_locale]å’Œ[method OS.get_locale_language]æ¥æŸ¥è¯¢ç”¨æˆ·ç³»ç»Ÿçš„区"
+"域设置。"
#: doc/classes/TranslationServer.xml:44
msgid ""
@@ -69701,6 +69929,9 @@ msgid ""
"If translations have been loaded beforehand for the new locale, they will be "
"applied."
msgstr ""
+"设置项目的语言环境。[code]locale[/code]字符串将被标准化,以匹é…已知的区域,例"
+"如,[code]en-US[/code]将被匹é…到[code]en_US[/code]。\n"
+"如果事先已ç»åŠ è½½äº†æ–°åŒºåŸŸçš„ç¿»è¯‘ï¼Œå…¶å°†è¢«åº”ç”¨ã€‚"
#: doc/classes/TranslationServer.xml:66
msgid "Returns the current locale's translation for the given message (key)."
@@ -69780,6 +70011,8 @@ msgid ""
"editable with [method TreeItem.set_editable]. Returns [code]true[/code] if "
"the item could be edited. Fails if no item is selected."
msgstr ""
+"编辑选中的树项,就åƒå®ƒè¢«ç‚¹å‡»ä¸€æ ·ã€‚该项必须通过[method TreeItem.set_editable]"
+"设置为å¯ç¼–辑。其å¯è¢«ç¼–辑,则返回[code]true[/code]。如果没有项被选中,则失败。"
#: doc/classes/Tree.xml:55
msgid ""
@@ -69844,11 +70077,18 @@ msgid ""
" print($Tree.get_edited()) # This item just got edited (e.g. checked).\n"
"[/codeblock]"
msgstr ""
+"返回当å‰è¢«ç¼–辑的项。å¯ä»¥å’Œ[signal item_edited]一起使用,获得被修改的项。\n"
+"[codeblock]\n"
+"func _ready():\n"
+" $Tree.item_edited.connect(on_Tree_item_edited)\n"
+"\n"
+"func on_Tree_item_edited():\n"
+" print($Tree.get_edited()) # This item just got edited (e.g. checked).\n"
+"[/codeblock]"
#: doc/classes/Tree.xml:112
-#, fuzzy
msgid "Returns the column for the currently edited item."
-msgstr "返回当å‰åˆ—表中的项目数。"
+msgstr "返回当å‰ç¼–辑项的列。"
#: doc/classes/Tree.xml:120
msgid ""
@@ -69919,9 +70159,8 @@ msgstr ""
"è¦åˆ¤æ–­ä¸€ä¸ªé¡¹çš„æŸä¸€åˆ—æ˜¯å¦è¢«é€‰ä¸­ï¼Œè¯·ä½¿ç”¨[method TreeItem.is_selected]。"
#: doc/classes/Tree.xml:176
-#, fuzzy
msgid "Causes the [Tree] to jump to the specified item."
-msgstr "返回指定实例的[Transform]。"
+msgstr "使 [Tree] 跳转到指定的项。"
#: doc/classes/Tree.xml:184
msgid ""
@@ -69971,7 +70210,7 @@ msgid ""
"This controls the drop sections, i.e. the decision and drawing of possible "
"drop locations based on the mouse position."
msgstr ""
-"作为一个标志的OR组åˆçš„æ”¾ç½®æ¨¡å¼ã€‚å‚è§[enum DropModeFlags]常é‡ã€‚一旦拖动完æˆï¼Œ"
+"作为一个标志的OR组åˆçš„æ”¾ç½®æ¨¡å¼ã€‚å‚阅[enum DropModeFlags]常é‡ã€‚一旦拖动完æˆï¼Œ"
"å°†æ¢å¤åˆ°[constant DROP_MODE_DISABLED]。建议在[method Control.can_drop_data]中"
"设置这个。\n"
"æŽ§ä»¶æ”¾ç½®éƒ¨åˆ†ï¼Œå³æ ¹æ®é¼ æ ‡ä½ç½®å†³å®šå’Œç»˜åˆ¶å¯èƒ½çš„æ”¾ç½®ä½ç½®ã€‚"
@@ -70335,7 +70574,6 @@ msgstr ""
"您å¯ä»¥ä½¿ç”¨[method Object.free]删除[TreeItem]。"
#: doc/classes/TreeItem.xml:21
-#, fuzzy
msgid ""
"Adds a button with [Texture] [code]button[/code] at column [code]column[/"
"code]. The [code]button_idx[/code] index is used to identify the button when "
@@ -70344,10 +70582,10 @@ msgid ""
"after this method. Optionally, the button can be [code]disabled[/code] and "
"have a [code]tooltip[/code]."
msgstr ""
-"在[code]column[/code]添加一个带有[Texture2D] [code]button[/code]的按钮。"
-"[code]button_idx[/code]索引用于在调用其他方法时识别按钮。如果没有指定,将使用"
-"下一个å¯ç”¨çš„索引,å¯ä»¥é€šè¿‡åœ¨æ­¤æ–¹æ³•之åŽç«‹å³è°ƒç”¨[method get_button_count]æ¥æ£€"
-"索。å¯é€‰ï¼ŒæŒ‰é’®å¯ä»¥[code]disabled[/code],并有[code]tooltip[/code]。"
+"在 [code]column[/code] 列添加一个带有 [Texture] [code]button[/code] 的按钮。 "
+"[code]button_idx[/code] 索引用于在调用其他方法时标识按钮。如果未指定,则使用"
+"下一个å¯ç”¨ç´¢å¼•,å¯ä»¥é€šè¿‡åœ¨æ­¤æ–¹æ³•之åŽè°ƒç”¨ [method get_button_count] æ¥æ£€ç´¢è¯¥ç´¢"
+"引。å¯é€‰ï¼Œè¯¥æŒ‰é’®å¯ä»¥ [code]disabled[/code] 和具有 [code]tooltip[/code]。"
#: doc/classes/TreeItem.xml:28
msgid ""
@@ -70376,12 +70614,11 @@ msgid ""
msgstr "删除列[code]column[/code]中索引[code]button_idx[/code]处的按钮。"
#: doc/classes/TreeItem.xml:65
-#, fuzzy
msgid ""
"Returns the [Texture] of the button at index [code]button_idx[/code] in "
"column [code]column[/code]."
msgstr ""
-"返回ä½äºŽ[code]button_idx[/code] [code]column[/code]列中按钮的[Texture2D]。"
+"返回在[code]column[/code]中索引[code]button_idx[/code]按钮的[Texture]。"
#: doc/classes/TreeItem.xml:72
msgid ""
@@ -70420,9 +70657,8 @@ msgid "Returns [code]true[/code] if [code]expand_right[/code] is set."
msgstr "如果设置了[code]expand_right[/code],返回[code]true[/code]。"
#: doc/classes/TreeItem.xml:121
-#, fuzzy
msgid "Returns the given column's icon [Texture]. Error if no icon is set."
-msgstr "返回给定列的图标[Texture2D]。如果没有设置图标,则出错。"
+msgstr "返回给定列图标的 [Texture]。如果未设置图标,则出错。"
#: doc/classes/TreeItem.xml:128
msgid "Returns the column's icon's maximum width."
@@ -70433,16 +70669,14 @@ msgid "Returns the [Color] modulating the column's icon."
msgstr "返回调制列的图标的[Color]颜色。"
#: doc/classes/TreeItem.xml:142
-#, fuzzy
msgid "Returns the icon [Texture] region as [Rect2]."
-msgstr "以[Rect2]返回图标的[Texture2D]区域。"
+msgstr "将图标 [Texture] 区域返回为 [Rect2]。"
#: doc/classes/TreeItem.xml:149
-#, fuzzy
msgid ""
"Returns the metadata value that was set for the given column using [method "
"set_metadata]."
-msgstr "获å–选定项的元数æ®ã€‚å¯ä»¥ä½¿ç”¨[method set_item_metadata]设置项的元数æ®ã€‚"
+msgstr "返回使用 [method set_metadata] 为指定列设置的元数æ®ã€‚"
#: doc/classes/TreeItem.xml:155
msgid ""
@@ -70483,19 +70717,19 @@ msgstr ""
"åŽä¸€ä¸ªå¯è§å…ƒç´ ï¼Œå¦åˆ™å®ƒå°†è¿”回[code]null[/code]。"
#: doc/classes/TreeItem.xml:190
-#, fuzzy
msgid "Returns the value of a [constant CELL_MODE_RANGE] column."
-msgstr "è¿”å›žå…³èŠ‚å‚æ•°çš„值。"
+msgstr "返回 [constant CELL_MODE_RANGE] 列的值。"
#: doc/classes/TreeItem.xml:197
msgid ""
"Returns a dictionary containing the range parameters for a given column. The "
"keys are \"min\", \"max\", \"step\", and \"expr\"."
msgstr ""
+"返回包å«ç»™å®šåˆ—çš„èŒƒå›´å‚æ•°çš„字典。键是 \"min\"ã€\"max\"ã€\"step \"å’Œ \"expr\"。"
#: doc/classes/TreeItem.xml:204
msgid "Gets the suffix string shown after the column value."
-msgstr ""
+msgstr "èŽ·å–æ˜¾ç¤ºåœ¨åˆ—值åŽé¢çš„åŽç¼€å­—符串。"
#: doc/classes/TreeItem.xml:211
msgid "Returns the given column's text."
@@ -70556,13 +70790,11 @@ msgid "Selects the column [code]column[/code]."
msgstr "选择列[code]column[/code]。"
#: doc/classes/TreeItem.xml:302
-#, fuzzy
msgid ""
"Sets the given column's button [Texture] at index [code]button_idx[/code] to "
"[code]button[/code]."
msgstr ""
-"在索引[code]button_idx[/code]处[code]button[/code],设置给定列的按钮"
-"[Texture2D]。"
+"设置索引[code]button_idx[/code]的给定列的按钮[code]button[/code]的[Texture]。"
#: doc/classes/TreeItem.xml:311
msgid ""
@@ -70615,9 +70847,8 @@ msgid ""
msgstr "如果[code]true[/code],列[code]column[/code]å°†å‘峿‰©å±•。"
#: doc/classes/TreeItem.xml:385
-#, fuzzy
msgid "Sets the given column's icon [Texture]."
-msgstr "设置给定列的图标[Texture2D]。"
+msgstr "设置给定列的图标 [Texture]。"
#: doc/classes/TreeItem.xml:393
msgid "Sets the given column's icon's maximum width."
@@ -70637,10 +70868,12 @@ msgid ""
"using [method get_metadata]. This can be used, for example, to store a "
"reference to the original data."
msgstr ""
+"设置给定列的元数æ®ï¼Œä¹‹åŽå¯ç”¨ [method get_metadata] 进行检索。例如,这å¯ç”¨äºŽå­˜"
+"储对原始数æ®çš„引用。"
#: doc/classes/TreeItem.xml:425
msgid "Sets the value of a [constant CELL_MODE_RANGE] column."
-msgstr ""
+msgstr "设置 [constant CELL_MODE_RANGE] 列的值。"
#: doc/classes/TreeItem.xml:436
msgid ""
@@ -70649,6 +70882,9 @@ msgid ""
"If [code]expr[/code] is [code]true[/code], the edit mode slider will use an "
"exponential scale as with [member Range.exp_edit]."
msgstr ""
+"è®¾ç½®åˆ—çš„å¯æŽ¥å—值的范围。该列必须处于 [constant CELL_MODE_RANGE] 模å¼ã€‚\n"
+"如果 [code]expr[/code] 是 [code]true[/code]ï¼Œç¼–è¾‘æ¨¡å¼æ»‘å—将使用指数刻度,与 "
+"[member Range.exp_edit] 一样。"
#: doc/classes/TreeItem.xml:445
msgid "If [code]true[/code], the given column is selectable."
@@ -70658,12 +70894,11 @@ msgstr "如果[code]true[/code],给定的列是å¯é€‰æ‹©çš„。"
msgid ""
"Sets a string to be shown after a column's value (for example, a unit "
"abbreviation)."
-msgstr ""
+msgstr "设置字符串,显示在列的值之åŽï¼Œä¾‹å¦‚,å•ä½çš„缩写。"
#: doc/classes/TreeItem.xml:461
-#, fuzzy
msgid "Sets the given column's text value."
-msgstr "返回给定列的文本。"
+msgstr "设置给定列的文本值。"
#: doc/classes/TreeItem.xml:469
msgid ""
@@ -70692,9 +70927,8 @@ msgid "Cell contains a string."
msgstr "å•元包å«å­—符串。"
#: doc/classes/TreeItem.xml:497
-#, fuzzy
msgid "Cell contains a checkbox."
-msgstr "å•元包å«å›¾æ ‡ã€‚"
+msgstr "å•元格包å«å¤é€‰æ¡†ã€‚"
#: doc/classes/TreeItem.xml:500
msgid "Cell contains a range."
@@ -70729,7 +70963,6 @@ msgid "Smoothly animates a node's properties over time."
msgstr "å¹³æ»‘åœ°ä½¿ä¸€ä¸ªèŠ‚ç‚¹çš„å±žæ€§éšæ—¶é—´å˜åŒ–。"
#: doc/classes/Tween.xml:7
-#, fuzzy
msgid ""
"Tweens are useful for animations requiring a numerical property to be "
"interpolated over a range of values. The name [i]tween[/i] comes from [i]in-"
@@ -70766,13 +70999,13 @@ msgid ""
"tween_cheatsheet.png]Tween easing and transition types cheatsheet[/url]"
msgstr ""
"Tweens对于需è¦åœ¨ä¸€ä¸ªæ•°å€¼èŒƒå›´å†…æ’值的,数值属性的动画很有用。[i]Tween[/i]这个"
-"åå­—æ¥è‡ª[i]in-betweening[/i],这是一ç§åŠ¨ç”»æŠ€æœ¯ï¼Œä½ æŒ‡å®š[i]keyframes[/i]关键"
+"åå­—æ¥è‡ª[i]in-betweening[/i],这是一ç§åŠ¨ç”»æŠ€æœ¯ï¼Œé€šè¿‡æŒ‡å®š[i]keyframes[/i]关键"
"帧,计算机在它们之间æ’补出帧。\n"
"[Tween]比[AnimationPlayer]更适åˆäºŽï¼Œä½ äº‹å…ˆä¸çŸ¥é“最终数值的动画。例如,æ’值动"
"æ€é€‰æ‹©çš„相机å˜ç„¦å€¼æœ€å¥½ç”¨[Tween]节点完æˆï¼›ç”¨[AnimationPlayer]节点åšåŒæ ·çš„事情"
"会很困难。\n"
-"䏋颿˜¯ä¸€ä¸ªç®€çŸ­çš„使用例å­ï¼Œå®ƒä½¿ä¸€ä¸ª2D节点在两个ä½ç½®ä¹‹é—´å¹³ç¼“移动。\n"
-"[codeblock]\n"
+"䏋颿˜¯ä¸€ä¸ªç®€çŸ­çš„使用例å­ï¼Œå®ƒä½¿ä¸€ä¸ª2D节点在两个ä½ç½®ä¹‹é—´å¹³ç¼“移动:\n"
+"[[codeblock]\n"
"var tween = get_node(\"Tween\")\n"
"tween.interpolate_property($Node2D, \"position\",\n"
" Vector2(0, 0), Vector2(100, 100), 1,\n"
@@ -71538,6 +71771,55 @@ msgid ""
" thread.wait_to_finish()\n"
"[/codeblock]"
msgstr ""
+"æä¾›UPNP功能æ¥å‘现本地网络上的[UPNPDevice],并对它们执行指令,如管ç†ç«¯å£æ˜ å°„"
+"(端å£è½¬å‘)和查询本地和远程网络IP地å€ã€‚注æ„ï¼Œè¿™ä¸ªç±»çš„æ–¹æ³•æ˜¯åŒæ­¥çš„,会阻塞调"
+"用线程。\n"
+"è¦è½¬å‘一个特定的端å£:\n"
+"[codeblock]\n"
+"const PORT = 7777\n"
+"var upnp = UPNP.new()\n"
+"upnp.discover(2000, 2, \"InternetGatewayDevice\")\n"
+"upnp.add_port_mapping(port)\n"
+"[/codeblock]\n"
+"è¦å…³é—­ä¸€ä¸ªç‰¹å®šçš„端å£ï¼ˆä¾‹å¦‚,在你使用完它之åŽï¼‰:\n"
+"[codeblock]\n"
+"upnp.delete_port_mapping(port)\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b] UPnPå‘现会阻塞当å‰çº¿ç¨‹ã€‚è¦åœ¨ä¸é˜»å¡žä¸»çº¿ç¨‹çš„æƒ…况下执行å‘现,å¯ä»¥"
+"åƒè¿™æ ·ä½¿ç”¨[Thread]:\n"
+"[codeblock]\n"
+"# 当完æˆUPnPç«¯å£æ˜ å°„设置时å‘出(无论æˆåŠŸæˆ–å¤±è´¥)。 \n"
+"signal upnp_completed(error)\n"
+"\n"
+"# 将其替æ¢ä¸ºæ‚¨è‡ªå·±çš„æœåŠ¡å™¨ç«¯å£å·(介于1025å’Œ65535之间)。 \n"
+"const SERVER_PORT = 3928\n"
+"var thread = null\n"
+"\n"
+"func _upnp_setup(server_port):\n"
+" # UPNP 查询需è¦ä¸€äº›æ—¶é—´ã€‚\n"
+" var upnp = UPNP.new()\n"
+" var err = upnp.discover()\n"
+"\n"
+" if err != OK:\n"
+" push_error(str(err))\n"
+" emit_signal(\"upnp_completed\", err)\n"
+" return\n"
+"\n"
+" if upnp.get_gateway() and upnp.get_gateway().is_valid_gateway():\n"
+" upnp.add_port_mapping(server_port, server_port, ProjectSettings."
+"get_setting(\"application/config/name\"), \"UDP\")\n"
+" upnp.add_port_mapping(server_port, server_port, ProjectSettings."
+"get_setting(\"application/config/name\"), \"TCP\")\n"
+" emit_signal(\"upnp_completed\", OK)\n"
+"\n"
+"func _ready():\n"
+" thread = Thread.new()\n"
+" thread.start(self, \"_upnp_setup\", SERVER_PORT)\n"
+"\n"
+"func _exit_tree():\n"
+" # 当线程正在è¿è¡Œæ—¶ï¼Œåœ¨è¿™é‡Œç­‰å¾…çº¿ç¨‹ç»“æŸæ¥å¤„ç†æ¸¸æˆé€€å‡ºã€‚ \n"
+" thread.wait_to_finish()\n"
+"[/codeblock]"
#: modules/upnp/doc_classes/UPNP.xml:59
msgid "Adds the given [UPNPDevice] to the list of discovered devices."
@@ -72071,10 +72353,8 @@ msgstr ""
"æ¥é”定它。"
#: doc/classes/Variant.xml:53
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/development/cpp/variant_class.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/development/cpp/variant_class.html"
+msgstr "https://docs.godotengine.org/en/3.4/development/cpp/variant_class.html"
#: doc/classes/VBoxContainer.xml:4
msgid "Vertical box container."
@@ -72089,12 +72369,10 @@ msgid "The vertical space between the [VBoxContainer]'s elements."
msgstr "[VBoxContainer]的元素之间的垂直空间。"
#: doc/classes/Vector2.xml:4
-#, fuzzy
msgid "Vector used for 2D math."
-msgstr "ç”¨äºŽä½¿ç”¨æ•´æ•°åæ ‡çš„二维数学的å‘é‡ã€‚"
+msgstr "用于二维数学的å‘é‡ã€‚"
#: doc/classes/Vector2.xml:7
-#, fuzzy
msgid ""
"2-element structure that can be used to represent positions in 2D space or "
"any other pair of numeric values.\n"
@@ -72102,21 +72380,20 @@ msgid ""
"code] if it's equal to [code]Vector2(0, 0)[/code]. Otherwise, a Vector2 will "
"always evaluate to [code]true[/code]."
msgstr ""
-"2元素结构,å¯ç”¨äºŽè¡¨ç¤ºäºŒç»´ç©ºé—´ä¸­çš„ä½ç½®æˆ–一对数字值。\n"
-"å®ƒä½¿ç”¨æµ®ç‚¹åæ ‡ã€‚关于它对应的整数形å¼ï¼Œå‚阅[Vector2i]。\n"
-"[b]注æ„:[/b]在布尔语境中,如果一个Vector2等于[code]Vector2(0, 0)[/code],它"
-"将计算为[code]false[/code]。å¦åˆ™ï¼Œä¸€ä¸ªVector2将总是计算为[code]true[/code]。"
+"2元素结构,å¯ç”¨äºŽè¡¨ç¤ºäºŒç»´ç©ºé—´ä¸­çš„åæ ‡æˆ–其他任何一对数字值。\n"
+"[b]注æ„:[/b]在一个布尔语境中,如果Vector2等于[code]Vector2(0, 0)[/code],它"
+"将评估为[code]false[/code]。å¦åˆ™ï¼ŒVector2将总是评估为[code]true[/code]。"
#: doc/classes/Vector2.xml:14 doc/classes/Vector3.xml:14
msgid ""
"https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab"
msgstr ""
+"https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab"
#: doc/classes/Vector2.xml:24
-#, fuzzy
msgid ""
"Constructs a new Vector2 from the given [code]x[/code] and [code]y[/code]."
-msgstr "从给定的[code]x[/code]和[code]y[/code]构建一个新的[Vector2]。"
+msgstr "从给定的[code]x[/code]和[code]y[/code]构建新的Vector2。"
#: doc/classes/Vector2.xml:30 doc/classes/Vector3.xml:31
msgid ""
@@ -72136,6 +72413,14 @@ msgid ""
"Equivalent to the result of [method @GDScript.atan2] when called with the "
"vector's [member y] and [member x] as parameters: [code]atan2(y, x)[/code]."
msgstr ""
+"返回这个å‘é‡ç›¸å¯¹äºŽæ­£X轴的角度,或[code](1, 0)[/code]å‘é‡ï¼Œå•ä½ä¸ºå¼§åº¦ã€‚\n"
+"例如,[code]Vector2.RIGHT.angle()[/code]将返回0,[code]Vector2.DOWN.angle()[/"
+"code]将返回[code]PI / 2[/code](四分之一转,或90度),[code]Vector2(1, -1)."
+"angle()[/code]将返回[code]-PI / 4[/code] (负八分之一转,或-45度)。\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"vector2_angle.png]返回角度的说明。[/url]\n"
+"相当于以å‘é‡çš„[member y] å’Œ [member x]ä¸ºå‚æ•°è°ƒç”¨[method @GDScript.atan2]æ—¶çš„"
+"结果。[code]atan2(y, x)[/code]。"
#: doc/classes/Vector2.xml:46
msgid ""
@@ -72143,6 +72428,9 @@ msgid ""
"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
"vector2_angle_to.png]Illustration of the returned angle.[/url]"
msgstr ""
+"返回与给定å‘é‡çš„角度,å•ä½ä¸ºå¼§åº¦ã€‚\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"vector2_angle_to.png]返回角度的说明。[/url]"
#: doc/classes/Vector2.xml:54
msgid ""
@@ -72151,6 +72439,9 @@ msgid ""
"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
"vector2_angle_to_point.png]Illustration of the returned angle.[/url]"
msgstr ""
+"返回连接两点的直线与X轴的夹角,å•ä½ä¸ºå¼§åº¦ã€‚\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"vector2_angle_to_point.png]返回角度的图示。[/url]"
#: doc/classes/Vector2.xml:61
msgid ""
@@ -72180,7 +72471,6 @@ msgid "Returns the cross product of this vector and [code]with[/code]."
msgstr "返回此å‘é‡ä¸Ž[code]with[/code]çš„å‰ç§¯ã€‚"
#: doc/classes/Vector2.xml:98
-#, fuzzy
msgid ""
"Cubically interpolates between this vector and [code]b[/code] using "
"[code]pre_a[/code] and [code]post_b[/code] as handles, and returns the "
@@ -72188,15 +72478,16 @@ msgid ""
"of 0.0 to 1.0, representing the amount of interpolation."
msgstr ""
"用[code]pre_a[/code]å’Œ[code]post_b[/code]ä½œä¸ºå¥æŸ„,在这个å‘é‡å’Œ[code]b[/code]"
-"之间进行三次æ’值,并在[code]t[/code]ä½ç½®è¿”回结果。[code]t[/code]的范围是0.0到"
-"1.0,表示æ’值é‡ã€‚"
+"之间进行三次æ’值,并在[code]weight[/code]ä½ç½®è¿”回结果。[code]weight[/code]çš„"
+"范围是0.0到1.0,表示æ’值的é‡ã€‚"
#: doc/classes/Vector2.xml:105 doc/classes/Vector3.xml:75
-#, fuzzy
msgid ""
"Returns the normalized vector pointing from this vector to [code]b[/code]. "
"This is equivalent to using [code](b - a).normalized()[/code]."
-msgstr "返回从这个å‘釿Œ‡å‘[code]b[/code]的归一化å‘é‡ã€‚"
+msgstr ""
+"返回从这个å‘釿Œ‡å‘[code]b[/code]的归一化å‘é‡ã€‚这相当于使用[code](b-a)."
+"normalized()[/code]。"
#: doc/classes/Vector2.xml:112 doc/classes/Vector3.xml:82
msgid ""
@@ -72250,11 +72541,10 @@ msgstr ""
"code]近似相等,返回[code]true[/code]。"
#: doc/classes/Vector2.xml:149 doc/classes/Vector3.xml:125
-#, fuzzy
msgid ""
"Returns [code]true[/code] if the vector is normalized, [code]false[/code] "
"otherwise."
-msgstr "如果å‘é‡å½’一化,则返回[code]true[/code],å¦åˆ™è¿”回false。"
+msgstr "如果å‘é‡è¢«å½’一化,返回[code]true[/code],å¦åˆ™è¿”回[code]false[/code]。"
#: doc/classes/Vector2.xml:155 doc/classes/Vector3.xml:131
msgid "Returns the length (magnitude) of this vector."
@@ -72271,14 +72561,13 @@ msgstr ""
"æ–¹è·ç¦»æ—¶ï¼Œæ›´å–œæ¬¢ç”¨å®ƒã€‚"
#: doc/classes/Vector2.xml:170
-#, fuzzy
msgid ""
"Returns the result of the linear interpolation between this vector and "
"[code]to[/code] by amount [code]weight[/code]. [code]weight[/code] is on the "
"range of 0.0 to 1.0, representing the amount of interpolation."
msgstr ""
-"返回这个å‘é‡å’Œ[code]b[/code]之间的线性æ’值的结果,æ’值釿˜¯[code]t[/code]。"
-"[code]t[/code]的范围是0.0到1.0,表示æ’值é‡ã€‚"
+"返回这个å‘é‡ä¸Ž[code]to[/code]之间线性æ’值的结果,æ’值é‡ä¸º[code]weight[/"
+"code]。[code]weight[/code]的范围是0.0到1.0,表示æ’值的数é‡ã€‚"
#: doc/classes/Vector2.xml:178
msgid ""
@@ -72329,25 +72618,22 @@ msgid ""
msgstr "返回所有分é‡éƒ½è¢«å››èˆäº”入为最接近的整数的å‘é‡ï¼Œä¸­é—´æƒ…况下四èˆäº”入为零。"
#: doc/classes/Vector2.xml:231
-#, fuzzy
msgid ""
"Returns the vector with each component set to one or negative one, depending "
"on the signs of the components. If a component is zero, it returns positive "
"one."
msgstr ""
-"通过对æ¯ä¸ªåˆ†é‡è°ƒç”¨[method @GDScript.sign],返回æ¯ä¸ªåˆ†é‡è¢«è®¾ç½®ä¸º1或负1çš„å‘é‡ï¼Œ"
-"如果分é‡ä¸º0,则返回零。"
+"æ ¹æ®åˆ†é‡çš„符å·ï¼Œè¿”回æ¯ä¸ªåˆ†é‡è®¾ç½®ä¸º 1 或负1çš„å‘é‡ã€‚如果分é‡ä¸ºé›¶ï¼Œåˆ™è¿”回正1。"
#: doc/classes/Vector2.xml:239 doc/classes/Vector3.xml:243
-#, fuzzy
msgid ""
"Returns the result of spherical linear interpolation between this vector and "
"[code]to[/code], by amount [code]weight[/code]. [code]weight[/code] is on "
"the range of 0.0 to 1.0, representing the amount of interpolation.\n"
"[b]Note:[/b] Both vectors must be normalized."
msgstr ""
-"返回此å‘é‡å’Œ[code]b[/code]之间的çƒå½¢çº¿æ€§æ’值的结果,é‡ä¸º[code]t[/code]。"
-"[code]t[/code]的范围是0.0到1.0,表示æ’值é‡ã€‚\n"
+"返回这个å‘é‡ä¸Ž[code]to[/code]之间的çƒé¢çº¿æ€§æ’值的结果,按[code]weight[/code]"
+"的数é‡ã€‚[code]weight[/code]的范围是0.0到1.0,表示æ’值的数é‡ã€‚\n"
"[b]注æ„:[/b]两个å‘é‡éƒ½å¿…须被归一化。"
#: doc/classes/Vector2.xml:247 doc/classes/Vector3.xml:251
@@ -72420,12 +72706,10 @@ msgid "Down unit vector. Y is down in 2D, so this vector points +Y."
msgstr "å‘下å•ä½å‘é‡ã€‚在2D中Y是å‘下的,所以这个å‘釿Œ‡å‘+Y。"
#: doc/classes/Vector3.xml:4
-#, fuzzy
msgid "Vector used for 3D math."
-msgstr "ä½¿ç”¨æ•´æ•°åæ ‡çš„3D数学的å‘é‡ã€‚"
+msgstr "用于 3D 数学的å‘é‡ã€‚"
#: doc/classes/Vector3.xml:7
-#, fuzzy
msgid ""
"3-element structure that can be used to represent positions in 3D space or "
"any other pair of numeric values.\n"
@@ -72433,21 +72717,18 @@ msgid ""
"code] if it's equal to [code]Vector3(0, 0, 0)[/code]. Otherwise, a Vector3 "
"will always evaluate to [code]true[/code]."
msgstr ""
-"3元素结构,å¯ç”¨äºŽè¡¨ç¤ºä¸‰ç»´ç©ºé—´ä¸­çš„ä½ç½®æˆ–一对数字值。\n"
-"å®ƒä½¿ç”¨æµ®ç‚¹åæ ‡ã€‚关于它对应的整数形å¼ï¼Œå‚阅[Vector3i]。\n"
-"[b]注æ„:[/b]在布尔语境中,如果一个Vector3等于[code]Vector3(0, 0, 0)[/code],"
-"它将计算为[code]false[/code]。å¦åˆ™ï¼Œä¸€ä¸ªVector3将总是计算为[code]true[/"
+"å¯ç”¨äºŽè¡¨ç¤º 3D 空间中的ä½ç½®æˆ–任何其他数值对的 3 元素结构。\n"
+"[b]注æ„:[/b] 在布尔上下文中,如果 Vector3 等于 [code]Vector3(0, 0, 0)[/"
+"code],将评估为 [code]false[/code]。å¦åˆ™ï¼Œ Vector3 将始终评估为 [code]true[/"
"code]。"
#: doc/classes/Vector3.xml:25
-#, fuzzy
msgid "Returns a Vector3 with the given components."
-msgstr "返回一个具有给定分é‡çš„[Vector3]。"
+msgstr "返回具有给定分é‡çš„Vector3。"
#: doc/classes/Vector3.xml:38
-#, fuzzy
msgid "Returns the unsigned minimum angle to the given vector, in radians."
-msgstr "返回与给定å‘é‡çš„æœ€å°è§’度,å•ä½ä¸ºå¼§åº¦ã€‚"
+msgstr "返回与给定å‘é‡çš„æ— ç¬¦å·æœ€å°è§’度,å•ä½ä¸ºå¼§åº¦ã€‚"
#: doc/classes/Vector3.xml:51
msgid ""
@@ -72460,7 +72741,6 @@ msgid "Returns the cross product of this vector and [code]b[/code]."
msgstr "返回此å‘é‡ä¸Ž[code]b[/code]çš„å‰ç§¯ã€‚"
#: doc/classes/Vector3.xml:68
-#, fuzzy
msgid ""
"Performs a cubic interpolation between vectors [code]pre_a[/code], [code]a[/"
"code], [code]b[/code], [code]post_b[/code] ([code]a[/code] is current), by "
@@ -72468,8 +72748,8 @@ msgid ""
"0.0 to 1.0, representing the amount of interpolation."
msgstr ""
"在å‘é‡[code]pre_a[/code], [code]a[/code], [code]b[/code], [code]post_b[/code]"
-"([code]a[/code]是当å‰çš„)之间,通过给定的é‡[code]t[/code]进行三次æ’值。"
-"[code]t[/code]的范围是0.0到1.0,表示æ’值é‡ã€‚"
+"([code]a[/code]是当å‰çš„)之间,通过给定的é‡[code]weight[/code]进行三次æ’值。"
+"[code]weight[/code]的范围是0.0到1.0,表示æ’值的数é‡ã€‚"
#: doc/classes/Vector3.xml:90
msgid "Returns the distance between this vector and [code]b[/code]."
@@ -72512,14 +72792,13 @@ msgstr ""
"åŒã€‚"
#: doc/classes/Vector3.xml:146
-#, fuzzy
msgid ""
"Returns the result of the linear interpolation between this vector and "
"[code]to[/code] by amount [code]t[/code]. [code]weight[/code] is on the "
"range of 0.0 to 1.0, representing the amount of interpolation."
msgstr ""
-"返回这个å‘é‡å’Œ[code]b[/code]之间的线性æ’值的结果,æ’值釿˜¯[code]t[/code]。"
-"[code]t[/code]的范围是0.0到1.0,表示æ’值é‡ã€‚"
+"返回这个å‘é‡ä¸Ž[code]to[/code]之间的线性æ’值的结果,æ’值é‡ä¸º[code]t[/code]。"
+"[code]weight[/code]的范围是0.0到1.0,表示æ’值的数é‡ã€‚"
#: doc/classes/Vector3.xml:152
msgid ""
@@ -72571,14 +72850,13 @@ msgstr ""
"返回这个å‘é‡çš„æ‰€æœ‰åˆ†é‡éƒ½è¢«å››èˆäº”入为最接近的整数,中间情况下四èˆäº”入为零。"
#: doc/classes/Vector3.xml:227
-#, fuzzy
msgid ""
"Returns a vector with each component set to one or negative one, depending "
"on the signs of this vector's components. If a component is zero, it returns "
"positive one."
msgstr ""
-"通过对æ¯ä¸ªåˆ†é‡è°ƒç”¨[method @GDScript.sign],返回一个æ¯ä¸ªåˆ†é‡éƒ½è¢«è®¾ç½®ä¸º1或负1çš„"
-"å‘é‡ï¼Œè¿™å–决于å‘é‡çš„分é‡ç¬¦å·ï¼Œå¦‚果分é‡ä¸ºé›¶ï¼Œåˆ™è¿”回0。"
+"返回一个å‘é‡ï¼Œæ¯ä¸ªåˆ†é‡è®¾ç½®ä¸º1或负1,å–决于这个å‘é‡çš„分é‡çš„符å·ã€‚如果分é‡ä¸º0,"
+"则返回正1。"
#: doc/classes/Vector3.xml:235
msgid ""
@@ -72587,6 +72865,8 @@ msgid ""
"clockwise direction when viewed from the side specified by the [code]axis[/"
"code]."
msgstr ""
+"返回给定å‘é‡çš„带符å·çš„角度,å•使˜¯å¼§åº¦ã€‚当从[code]axis[/code]指定的一侧看,该"
+"角度的符å·åœ¨é€†æ—¶é’ˆæ–¹å‘æ˜¯æ­£çš„ï¼Œåœ¨é¡ºæ—¶é’ˆæ–¹å‘æ˜¯è´Ÿçš„。"
#: doc/classes/Vector3.xml:264
msgid ""
@@ -72658,7 +72938,6 @@ msgid "Physics body that simulates the behavior of a car."
msgstr "模拟汽车行为的物ç†ä½“。"
#: doc/classes/VehicleBody.xml:7
-#, fuzzy
msgid ""
"This node implements all the physics logic needed to simulate a car. It is "
"based on the raycast vehicle system commonly found in physics engines. You "
@@ -72677,20 +72956,18 @@ msgid ""
"probably have to write your own physics integration using another "
"[PhysicsBody] class."
msgstr ""
-"这个节点实现了模拟汽车所需的所有物ç†é€»è¾‘。它是基于物ç†å¼•擎中常è§çš„raycast车辆"
-"系统。你需è¦ä¸ºä½ çš„车辆主体添加一个[CollisionShape3D],为车轮添加"
-"[VehicleWheel3D]节点。还应该为汽车的三维模型添加一个[MeshInstance3D]的节点,"
-"但这个模型ä¸åº”该包括车轮的网格。应该通过使用[member brake]ã€[member "
-"engine_force]å’Œ[member steering]å±žæ€§æ¥æŽ§åˆ¶è½¦è¾†ï¼Œè€Œä¸æ˜¯ç›´æŽ¥æ”¹å˜è¿™ä¸ªèŠ‚ç‚¹çš„åæ ‡"
-"或方å‘。\n"
-"[b]注æ„:[/b] ä½ çš„VehicleBody3D的原点将决定车辆的é‡å¿ƒï¼Œæ‰€ä»¥æœ€å¥½ä¿æŒä½Žä½ï¼Œå¹¶å°†"
-"[CollisionShape3D]和[MeshInstance3D]往上移。\n"
-"[b]注æ„:[/b] è¿™ä¸ªç±»æœ‰å·²çŸ¥çš„é—®é¢˜ï¼Œå¹¶ä¸æ˜¯ä¸ºäº†æä¾›çœŸå®žçš„3D车辆物ç†è¿ç®—。如果你"
-"想è¦é«˜çº§çš„车辆物ç†è¿ç®—,å¯èƒ½éœ€è¦ä½¿ç”¨å¦ä¸€ä¸ª[PhysicsBody3D]ç±»æ¥ç¼–写你自己的物ç†"
-"è¿ç®—集æˆã€‚"
+"此节点实现了模拟汽车所需的所有物ç†é€»è¾‘。它是基于物ç†å¼•擎中常è§çš„射线投射的车"
+"辆系统。你需è¦ä¸ºè½¦çš„主体添加一个[CollisionShape],并为车轮添加[VehicleWheel]"
+"节点。还应该为汽车的三维模型添加一个[MeshInstance]节点,但这个模型ä¸åº”该包括"
+"车轮的网格。你应该通过使用[member brake]ã€[member engine_force]å’Œ [member "
+"steering] å±žæ€§æ¥æŽ§åˆ¶è½¦è¾†ï¼Œè€Œä¸æ˜¯ç›´æŽ¥æ”¹å˜è¿™ä¸ªèŠ‚ç‚¹çš„ä½ç½®æˆ–æ–¹å‘。\n"
+"[b]注æ„:[/b] ä½ çš„VehicleBody的原点将决定你的车辆的é‡å¿ƒï¼Œæ‰€ä»¥æœ€å¥½ä¿æŒä½Žä½ï¼Œå¹¶"
+"将[CollisionShape]和[MeshInstance]往上移。\n"
+"[b]注æ„:[/b] è¿™ä¸ªç±»æœ‰å·²çŸ¥çš„é—®é¢˜ï¼Œå¹¶ä¸æ˜¯ä¸ºäº†æä¾›çœŸå®žçš„3D车辆物ç†è€Œè®¾è®¡ã€‚如果"
+"你想è¦é«˜çº§çš„车辆物ç†ï¼Œä½ å¯èƒ½éœ€è¦ä½¿ç”¨å¦ä¸€ä¸ª[PhysicsBody]ç±»æ¥ç¼–写你自己的物ç†é›†"
+"æˆã€‚"
#: doc/classes/VehicleBody.xml:18
-#, fuzzy
msgid ""
"Slows down the vehicle by applying a braking force. The vehicle is only "
"slowed down if the wheels are in contact with a surface. The force you need "
@@ -72698,12 +72975,11 @@ msgid ""
"RigidBody.mass] of the vehicle. For a vehicle with a mass set to 1000, try a "
"value in the 25 - 30 range for hard braking."
msgstr ""
-"通过施加一个制动力使车辆å‡é€Ÿã€‚åªæœ‰å½“è½¦è½®ä¸Žè¡¨é¢æŽ¥è§¦æ—¶ï¼Œè½¦è¾†æ‰ä¼šå‡é€Ÿã€‚你需è¦åº”"
-"用多少力æ¥ä½¿è½¦è¾†å……分å‡é€Ÿï¼Œå–决于车辆 [member RigidBody3D.mass] 。对于一个质é‡"
-"设置为1000的车辆,å°è¯•在25-30的范围内进行刹车。"
+"通过施加一个制动力使车辆å‡é€Ÿã€‚åªæœ‰å½“è½¦è½®æŽ¥è§¦åˆ°è¡¨é¢æ—¶ï¼Œè½¦è¾†æ‰ä¼šå‡é€Ÿã€‚ä½ éœ€è¦æ–½"
+"加多少力æ¥ä½¿ä½ çš„车辆充分å‡é€Ÿï¼Œå–决于车辆的[member RigidBody.mass]。对于一个质"
+"é‡è®¾ç½®ä¸º1000的车辆,å°è¯•在25-30的范围内进行硬制动。"
#: doc/classes/VehicleBody.xml:21
-#, fuzzy
msgid ""
"Accelerates the vehicle by applying an engine force. The vehicle is only "
"speed up if the wheels that have [member VehicleWheel.use_as_traction] set "
@@ -72715,30 +72991,28 @@ msgid ""
"you will need to add logic for this if you wish to simulate gears.\n"
"A negative value will result in the vehicle reversing."
msgstr ""
-"通过施加一个引擎力æ¥åŠ é€Ÿè½¦è¾†ã€‚åªæœ‰å½“ [member VehicleWheel3D.use_as_traction] "
-"设置为 [code]true[/code] å¹¶ä¸Žè¡¨é¢æŽ¥è§¦çš„è½¦è½®æ‰ä¼šåŠ é€Ÿã€‚è½¦è¾†çš„ [member "
-"RigidBody3D.mass] 对车辆的加速度有影å“。对于一个质é‡è®¾ç½®ä¸º1000的车辆,å¯ä»¥å°"
-"试在25-50的范围内选择加速度的值。\n"
+"通过施加一个引擎力æ¥åŠ é€Ÿè½¦è¾†ã€‚åªæœ‰å½“[member VehicleWheel.use_as_traction]设置"
+"为[code]true[/code]å¹¶ä¸Žè¡¨é¢æŽ¥è§¦çš„è½¦è½®æ‰ä¼šåŠ é€Ÿã€‚è½¦è¾†çš„[member RigidBody.mass]"
+"对车辆的加速度有影å“。对于一个质é‡è®¾ç½®ä¸º1000的车辆,å¯ä»¥å°è¯•在25-50的范围内选"
+"择加速度的值。\n"
"[b]注æ„:[/b]模拟ä¸è€ƒè™‘齿轮的影å“,如果你想模拟齿轮,将需è¦ä¸ºå…¶æ·»åŠ é€»è¾‘ã€‚\n"
"负值将导致车辆倒车。"
#: doc/classes/VehicleBody.xml:27
-#, fuzzy
msgid ""
"The steering angle for the vehicle. Setting this to a non-zero value will "
"result in the vehicle turning when it's moving. Wheels that have [member "
"VehicleWheel.use_as_steering] set to [code]true[/code] will automatically be "
"rotated."
msgstr ""
-"车辆的转å‘角度。将此设置为éžé›¶å€¼å°†å¯¼è‡´è½¦è¾†åœ¨ç§»åŠ¨æ—¶è½¬å‘。将 [member "
-"VehicleWheel3D.use_as_steering] 设置为 [code]true[/code] 的车轮会自动旋转。"
+"车辆的转å‘角。将此设置为éžé›¶å€¼å°†å¯¼è‡´è½¦è¾†åœ¨ç§»åŠ¨æ—¶è½¬å‘。将[member VehicleWheel."
+"use_as_steering]设置为[code]true[/code]的车轮会自动旋转。"
#: doc/classes/VehicleWheel.xml:4
msgid "Physics object that simulates the behavior of a wheel."
msgstr "模拟车轮行为的物ç†å¯¹è±¡ã€‚"
#: doc/classes/VehicleWheel.xml:7
-#, fuzzy
msgid ""
"This node needs to be used as a child node of [VehicleBody] and simulates "
"the behavior of one of its wheels. This node also acts as a collider to "
@@ -72748,11 +73022,10 @@ msgid ""
"probably have to write your own physics integration using another "
"[PhysicsBody] class."
msgstr ""
-"这个节点需è¦ä½œä¸º [VehicleBody3D] çš„å­èŠ‚ç‚¹æ¥ä½¿ç”¨ï¼Œå¹¶æ¨¡æ‹Ÿå…¶ä¸€ä¸ªè½¦è½®çš„行为。也作"
-"ä¸ºç¢°æ’žå™¨æ¥æ£€æµ‹è½¦è½®æ˜¯å¦æŽ¥è§¦åˆ°è¡¨é¢ã€‚\n"
-"[b]注æ„:[/b] è¿™ä¸ªç±»æœ‰å·²çŸ¥çš„é—®é¢˜ï¼Œå¹¶ä¸æ˜¯ä¸ºäº†æä¾›çœŸå®žçš„三维车辆物ç†è¿ç®—而设计"
-"的。如果你想è¦å…ˆè¿›çš„车辆物ç†è¿ç®—,需è¦ä½¿ç”¨å¦ä¸€ä¸ª[PhysicsBody3D]ç±»æ¥ç¼–写你自己"
-"的物ç†è¿ç®—集æˆã€‚"
+"此节点需è¦ä½œä¸º[VehicleBody]çš„å­èŠ‚ç‚¹ä½¿ç”¨ï¼Œå¹¶æ¨¡æ‹Ÿå…¶è½¦è½®çš„è¡Œä¸ºã€‚å…¶èŠ‚ç‚¹ä¹Ÿä½œä¸ºç¢°æ’ž"
+"å™¨æ¥æ£€æµ‹è½¦è½®æ˜¯å¦æŽ¥è§¦åˆ°è¡¨é¢ã€‚\n"
+"[b]注æ„:[/b] è¿™ä¸ªç±»æœ‰å·²çŸ¥çš„é—®é¢˜ï¼Œå¹¶ä¸æ˜¯ä¸ºäº†æä¾›çœŸå®žçš„三维车辆物ç†è€Œè®¾è®¡çš„。"
+"如果你想è¦å…ˆè¿›çš„车辆物ç†ï¼Œé¡»ä½¿ç”¨å¦ä¸€ä¸ª[PhysicsBody]ç±»æ¥ç¼–写你自己的物ç†é›†æˆã€‚"
#: doc/classes/VehicleWheel.xml:17
msgid "Returns the rotational speed of the wheel in revolutions per minute."
@@ -72772,7 +73045,6 @@ msgid "Returns [code]true[/code] if this wheel is in contact with a surface."
msgstr "如果轮å­ä¸Žè¡¨é¢æŽ¥è§¦ï¼Œè¿”回[code]true[/code]。"
#: doc/classes/VehicleWheel.xml:35
-#, fuzzy
msgid ""
"Slows down the wheel by applying a braking force. The wheel is only slowed "
"down if it is in contact with a surface. The force you need to apply to "
@@ -72780,9 +73052,9 @@ msgid ""
"the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - "
"30 range for hard braking."
msgstr ""
-"通过施加一个制动力使车轮å‡é€Ÿã€‚åªæœ‰å½“è½¦è½®ä¸Žè¡¨é¢æŽ¥è§¦æ—¶æ‰ä¼šå‡é€Ÿã€‚ä½ éœ€è¦æ–½åŠ å¤šå¤§"
-"的力æ¥ä½¿è½¦è¾†å……分å‡é€Ÿï¼Œå–决于车辆的 [member RigidBody3D.mass] 。对于一个质é‡è®¾"
-"置为1000的车辆,å°è¯•在25-30的范围内进行制动。"
+"通过施加制动力使车轮å‡é€Ÿã€‚åªæœ‰å½“è½¦è½®ä¸Žè¡¨é¢æŽ¥è§¦æ—¶ï¼Œå®ƒæ‰ä¼šå‡é€Ÿã€‚ä½ éœ€è¦æ–½åŠ å¤šå¤§"
+"的力æ¥ä½¿è½¦è¾†å……分å‡é€Ÿï¼Œå–决于车辆的[member RigidBody.mass]。对于质é‡è®¾ç½®ä¸º1000"
+"的车辆,å°è¯•在25-30的范围内进行硬制动。"
#: doc/classes/VehicleWheel.xml:38
msgid ""
@@ -72807,7 +73079,6 @@ msgstr ""
"值0.3,å°è¯•放æ¾å€¼ä¸º0.5。"
#: doc/classes/VehicleWheel.xml:44
-#, fuzzy
msgid ""
"Accelerates the wheel by applying an engine force. The wheel is only speed "
"up if it is in contact with a surface. The [member RigidBody.mass] of the "
@@ -72817,10 +73088,10 @@ msgid ""
"you will need to add logic for this if you wish to simulate gears.\n"
"A negative value will result in the wheel reversing."
msgstr ""
-"é€šè¿‡æ–½åŠ å¼•æ“ŽåŠ›ä½¿è½¦è½®åŠ é€Ÿã€‚è½¦è½®åªæœ‰åœ¨ä¸Žè¡¨é¢æŽ¥è§¦æ—¶æ‰ä¼šåŠ é€Ÿã€‚è½¦è¾†çš„ [member "
-"RigidBody3D.mass] 对车辆加速度有影å“。对于质é‡è®¾ç½®ä¸º1000的车辆,请å°è¯•在25-50"
-"的范围内选择加速度值。\n"
-"[b]注æ„:[/b]模拟ä¸è€ƒè™‘齿轮的影å“,如果你想模拟齿轮,将需è¦ä¸ºæ­¤æ·»åŠ é€»è¾‘ã€‚\n"
+"é€šè¿‡æ–½åŠ å¼•æ“ŽåŠ›ä½¿è½¦è½®åŠ é€Ÿã€‚è½¦è½®åªæœ‰åœ¨ä¸Žè¡¨é¢æŽ¥è§¦æ—¶æ‰ä¼šåŠ é€Ÿã€‚è½¦è¾†çš„[member "
+"RigidBody.mass]对车辆的加速度有影å“。对于质é‡è®¾ç½®ä¸º1000的车辆,å°è¯•在25-50范"
+"围内的加速度值。\n"
+"[b]注æ„:[/b]模拟ä¸è€ƒè™‘齿轮的影å“,如果你想模拟齿轮,将需è¦ä¸ºå…¶æ·»åŠ é€»è¾‘ã€‚\n"
"负值将导致车轮倒转。"
#: doc/classes/VehicleWheel.xml:49
@@ -72830,16 +73101,15 @@ msgid ""
msgstr "车轮的转å‘角。将此设置为éžé›¶å€¼å°†å¯¼è‡´è½¦è¾†åœ¨ç§»åŠ¨æ—¶è½¬å‘。"
#: doc/classes/VehicleWheel.xml:52
-#, fuzzy
msgid ""
"The maximum force the spring can resist. This value should be higher than a "
"quarter of the [member RigidBody.mass] of the [VehicleBody] or the spring "
"will not carry the weight of the vehicle. Good results are often obtained by "
"a value that is about 3× to 4× this number."
msgstr ""
-"弹簧å¯ä»¥æ‰¿å—的最大力。这个值应该高于[VehicleBody3D]çš„[member RigidBody3D."
-"mass]的四分之一,å¦åˆ™å¼¹ç°§å°†æ— æ³•承载车辆的é‡é‡ã€‚良好的效果,通常由一个大约3×到"
-"4×这个数字的值获得。"
+"弹簧所能抵抗的最大力。此值应该高于[VehicleBody]的[member RigidBody.mass]的四"
+"分之一,å¦åˆ™å¼¹ç°§å°†æ— æ³•承载车辆的é‡é‡ã€‚通常由大约3×到4×这个数字的值,以获得良"
+"好的效果。"
#: doc/classes/VehicleWheel.xml:55
msgid ""
@@ -72860,27 +73130,25 @@ msgstr ""
"æ ¹æ®æ±½è½¦çš„类型,试试0.1å’Œ0.3之间的值。"
#: doc/classes/VehicleWheel.xml:61
-#, fuzzy
msgid ""
"If [code]true[/code], this wheel will be turned when the car steers. This "
"value is used in conjunction with [member VehicleBody.steering] and ignored "
"if you are using the per-wheel [member steering] value instead."
msgstr ""
-"如果[code]true[/code]ï¼Œå½“æ±½è½¦è½¬å‘æ—¶ï¼Œè¿™ä¸ªè½®å­å°†è¢«è½¬åŠ¨ã€‚è¿™ä¸ªå€¼å’Œ [member "
-"VehicleBody3D.steering] 一起使用,如果你使用æ¯ä¸ªè½®å­çš„ [member steering] 值æ¥"
-"代替,则忽略该值。"
+"如果[code]true[/code]ï¼Œå½“æ±½è½¦è½¬å‘æ—¶ï¼Œå…¶è½®å­å°†è¢«è½¬åŠ¨ã€‚æ­¤å€¼å’Œ[member "
+"VehicleBody.steering]一起使用,如果使用æ¯ä¸ªè½®å­çš„[member steering]值æ¥ä»£æ›¿ï¼Œ"
+"则会被忽略。"
#: doc/classes/VehicleWheel.xml:64
-#, fuzzy
msgid ""
"If [code]true[/code], this wheel transfers engine force to the ground to "
"propel the vehicle forward. This value is used in conjunction with [member "
"VehicleBody.engine_force] and ignored if you are using the per-wheel [member "
"engine_force] value instead."
msgstr ""
-"如果[code]true[/code],这个轮å­å°†å¼•擎力传递给地é¢ï¼ŒæŽ¨åŠ¨è½¦è¾†å‰è¿›ã€‚这个值和"
-"[member VehicleBody3D.engine_force]一起使用,如果你使用æ¯ä¸ªè½®å­çš„[member "
-"engine_force]值,则忽略该值。"
+"如果[code]true[/code],此轮å­å°†å¼•擎力传递给地é¢ï¼ŒæŽ¨åŠ¨è½¦è¾†å‰è¿›ã€‚此值和[member "
+"VehicleBody.engine_force]一起使用,如果使用æ¯ä¸ªè½®å­çš„[member engine_force]"
+"值,则忽略该值。"
#: doc/classes/VehicleWheel.xml:67
msgid ""
@@ -72926,7 +73194,6 @@ msgid "Control for playing video streams."
msgstr "用于播放视频æµçš„æŽ§ä»¶ã€‚"
#: doc/classes/VideoPlayer.xml:7
-#, fuzzy
msgid ""
"Control node for playing video streams using [VideoStream] resources.\n"
"Supported video formats are [url=https://www.webmproject.org/]WebM[/url] "
@@ -72938,11 +73205,14 @@ msgid ""
"[b]Warning:[/b] On HTML5, video playback [i]will[/i] perform poorly due to "
"missing architecture-specific assembly optimizations, especially for VP8/VP9."
msgstr ""
-"用于播放使用[VideoStream]资æºçš„视频æµçš„æŽ§ä»¶èŠ‚ç‚¹ã€‚\n"
-"支æŒçš„è§†é¢‘æ ¼å¼æœ‰[url=https://www.webmproject.org/]WebM[/url]"
-"([VideoStreamWebm])ã€[url=https://www.theora.org/]Ogg Theora[/url]"
-"([VideoStreamTheora])以åŠä»»ä½•通过使用[VideoStreamGDNative]çš„GDNativeæ’ä»¶å…¬"
-"开的格å¼ã€‚"
+"用于播放使用[VideoStream]资æºè§†é¢‘æµçš„æŽ§ä»¶èŠ‚ç‚¹ã€‚\n"
+"支æŒçš„è§†é¢‘æ ¼å¼æœ‰ [url=https://www.webmproject.org/]WebM[/url] ([code].webm[/"
+"code], [VideoStreamWebm]), [url=https://www.theora.org/]Ogg Theora[/url] "
+"([code].ogv[/code], [VideoStreamTheora] ) 以åŠä»»ä½•通过GDNativeæ’件使用"
+"[VideoStreamGDNative]公开的格å¼ã€‚\n"
+"[b]注æ„:[/b] 由于一个错误,VideoPlayerè¿˜ä¸æ”¯æŒæœ¬åœ°åŒ–釿˜ å°„。\n"
+"[b]警告:[/b] 在HTML5上,视频播放[i]å°†[/i]表现ä¸ä½³ï¼Œå› ä¸ºç¼ºå°‘特定架构的汇编优"
+"化,特别是对于VP8/VP9。"
#: doc/classes/VideoPlayer.xml:18
msgid ""
@@ -72952,9 +73222,8 @@ msgstr ""
"返回视频æµçš„å称,如果没有指定视频æµï¼Œåˆ™è¿”回[code]\"<No Stream>\"[/code]。"
#: doc/classes/VideoPlayer.xml:24
-#, fuzzy
msgid "Returns the current frame as a [Texture]."
-msgstr "将当å‰å¸§ä½œä¸º[Texture2D]返回。"
+msgstr "将当å‰å¸§ä½œä¸º[Texture]返回。"
#: doc/classes/VideoPlayer.xml:30
msgid ""
@@ -73018,6 +73287,9 @@ msgid ""
"[b]Note:[/b] Changing this value won't have any effect as seeking is not "
"implemented yet, except in video formats implemented by a GDNative add-on."
msgstr ""
+"æµçš„当å‰ä½ç½®ï¼Œä»¥ç§’为å•ä½ã€‚\n"
+"[b]注æ„:[/b] 更改此值ä¸ä¼šäº§ç”Ÿä»»ä½•å½±å“,因为æœç´¢å°šæœªå®žçŽ°ï¼Œé™¤äº†ç”± GDNative 附"
+"加组件实现的视频格å¼ã€‚"
#: doc/classes/VideoPlayer.xml:75
msgid "Audio volume as a linear value."
@@ -73086,20 +73358,24 @@ msgid ""
"extension, you will have to rename the extension to [code].ogv[/code] to use "
"those videos within Godot."
msgstr ""
+"[VideoStream]资æºå¤„ç†[url=https://www.theora.org/]Ogg Theora[/url]视频格å¼ï¼Œ"
+"扩展å为[code].ogv[/code]。Theoraç¼–è§£ç å™¨æ¯”[VideoStreamWebm]çš„VP8å’ŒVP9效率"
+"低,但它以较少的CPUèµ„æºæ¥è§£ç ã€‚Theoraç¼–è§£ç å™¨æ˜¯åœ¨CPU上解ç ã€‚\n"
+"[b]注æ„:[/b] 虽然Ogg Theora视频也å¯ä»¥æœ‰[code].ogg[/code]扩展å,但必须将扩展"
+"åæ”¹ä¸º[code].ogv[/code],以便在Godot内使用。"
#: modules/theora/doc_classes/VideoStreamTheora.xml:16
msgid "Returns the Ogg Theora video file handled by this [VideoStreamTheora]."
msgstr "返回由这个[VideoStreamTheora]处ç†çš„Ogg Theora视频文件。"
#: modules/theora/doc_classes/VideoStreamTheora.xml:23
-#, fuzzy
msgid ""
"Sets the Ogg Theora video file that this [VideoStreamTheora] resource "
"handles. The [code]file[/code] name should have the [code].ogv[/code] "
"extension."
msgstr ""
"设置该[VideoStreamTheora]资æºå¤„ç†çš„Ogg Theora视频文件。[code]file[/code]çš„å"
-"称应该有[code].o[/code]扩展å。"
+"称应该有[code].ogv[/code]扩展å。"
#: modules/webm/doc_classes/VideoStreamWebm.xml:4
msgid "[VideoStream] resource for WebM videos."
@@ -73119,6 +73395,14 @@ msgid ""
"playback in Godot. If you run into problems, try using the Ogg Theora format "
"instead: [VideoStreamTheora]"
msgstr ""
+"[VideoStream]资æºå¤„ç†[url=https://www.webmproject.org/]WebM[/url]视频格å¼ï¼Œæ‰©"
+"展å为[code].webm[/code]。支æŒVP8å’ŒVP9ç¼–è§£ç å™¨ã€‚VP8å’ŒVP9ç¼–è§£ç å™¨æ¯”"
+"[VideoStreamTheora]æ›´æœ‰æ•ˆï¼Œä½†å…¶éœ€è¦æ›´å¤šçš„CPUèµ„æºæ¥è§£ç ï¼Œå°¤å…¶æ˜¯VP9。VP8å’ŒVP9ç¼–"
+"è§£ç å™¨æ˜¯åœ¨CPU上解ç çš„。\n"
+"[b]注æ„:[/b] 䏿”¯æŒAlpha通é“ï¼Œä¹Ÿç§°ä¸ºé€æ˜Žåº¦ã€‚视频将始终显示为黑色背景,å³ä½¿å®ƒ"
+"最åˆåŒ…å«alpha通é“。\n"
+"[b]注æ„:[/b] Godot中的WebM视频播放存在已知的错误和性能问题。如果你é‡åˆ°é—®é¢˜ï¼Œ"
+"å¯ä»¥å°è¯•用Ogg Theoraæ ¼å¼ä»£æ›¿:[VideoStreamTheora]"
#: modules/webm/doc_classes/VideoStreamWebm.xml:17
msgid "Returns the WebM video file handled by this [VideoStreamWebm]."
@@ -73137,7 +73421,6 @@ msgid "Creates a sub-view into the screen."
msgstr "在å±å¹•中创建一个å­è§†å›¾ã€‚"
#: doc/classes/Viewport.xml:7
-#, fuzzy
msgid ""
"A Viewport creates a different view into the screen, or a sub-view inside "
"another viewport. Children 2D Nodes will display on it, and children Camera "
@@ -73153,43 +73436,37 @@ msgid ""
"Finally, viewports can also behave as render targets, in which case they "
"will not be visible unless the associated texture is used to draw."
msgstr ""
-"视窗在å±å¹•上创建了一个ä¸åŒçš„视图,或者是å¦ä¸€ä¸ªè§†çª—中的å­è§†å›¾ã€‚其上显示å­çº§2D"
-"节点会,也会在其上渲染å­çº§Camera3Dçš„3D节点。\n"
-"å¯é€‰çš„æ˜¯ï¼Œä¸€ä¸ªè§†çª—å¯ä»¥æœ‰è‡ªå·±çš„2D或3D世界,所以它们ä¸ä¼šä¸Žå…¶ä»–视窗共享它们所绘"
-"制的内容。\n"
-"如果视窗是[SubViewportContainer]的一个å­èŠ‚ç‚¹ï¼Œå®ƒå°†è‡ªåŠ¨å ç”¨å…¶å¤§å°ï¼Œå¦åˆ™å¿…须手"
-"动设置。\n"
-"视窗也å¯ä»¥é€‰æ‹©æˆä¸ºéŸ³é¢‘监å¬è€…,它们会根æ®ä¸€ä¸ª2D或3Dæ‘„åƒæœºçš„å­èŠ‚ç‚¹æ¥äº§ç”Ÿä½ç½®éŸ³"
+"视窗在å±å¹•上创建ä¸åŒçš„视图,或者是å¦ä¸€ä¸ªè§†çª—中的å­è§†å›¾ã€‚å­ä»£2D节点会在其上显"
+"示,å­ä»£ç›¸æœº3D节点也会在其上渲染。\n"
+"å¦å¤–,视窗å¯ä»¥æœ‰è‡ªå·±çš„2D或3D世界,所以它们ä¸ä¼šä¸Žå…¶ä»–视窗共享其所绘制的内"
+"容。\n"
+"如果视窗是[ViewportContainer]çš„å­èŠ‚ç‚¹ï¼Œå®ƒå°†è‡ªåŠ¨å ç”¨å…¶å¤§å°ï¼Œå¦åˆ™å¿…须手动设"
+"置。\n"
+"视窗也å¯ä»¥é€‰æ‹©æˆä¸ºéŸ³é¢‘监å¬è€…,会根æ®å®ƒçš„2D或3Dæ‘„åƒæœºçš„å­èŠ‚ç‚¹æ¥äº§ç”Ÿä½ç½®éŸ³"
"频。\n"
"å¦å¤–,如果设备有多个å±å¹•,视窗å¯ä»¥è¢«åˆ†é…到ä¸åŒçš„å±å¹•。\n"
-"最åŽï¼Œè§†çª—也å¯ä»¥ä½œä¸ºæ¸²æŸ“ç›®æ ‡ï¼Œåœ¨è¿™ç§æƒ…况下,除éžç”¨æ¥ç»˜åˆ¶ç›¸å…³çš„纹ç†ï¼Œå¦åˆ™å®ƒä»¬"
-"å°†ä¸å¯è§ã€‚"
+"最åŽï¼Œè§†çª—也å¯ä»¥ä½œä¸ºæ¸²æŸ“ç›®æ ‡ï¼Œåœ¨è¿™ç§æƒ…况下,除éžç›¸å…³çš„纹ç†è¢«ç”¨äºŽç»˜åˆ¶ï¼Œå¦åˆ™å®ƒ"
+"们将ä¸å¯è§ã€‚"
#: doc/classes/Viewport.xml:16
-#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/viewports/index.html"
-msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/viewports/index.html"
+msgstr "https://docs.godotengine.org/en/3.4/tutorials/viewports/index.html"
#: doc/classes/Viewport.xml:18 doc/classes/ViewportTexture.xml:12
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/128"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/128"
#: doc/classes/Viewport.xml:20
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/130"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/130"
#: doc/classes/Viewport.xml:21
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/541"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/541"
#: doc/classes/Viewport.xml:22 doc/classes/ViewportTexture.xml:14
-#, fuzzy
msgid "https://godotengine.org/asset-library/asset/586"
-msgstr "https://docs.godotengine.org/zh_CN/latest/tutorials/vr/index.html"
+msgstr "https://godotengine.org/asset-library/asset/586"
#: doc/classes/Viewport.xml:28
msgid ""
@@ -73203,16 +73480,15 @@ msgstr "返回视窗的2D世界。"
#: doc/classes/Viewport.xml:40
msgid "Returns the active 3D camera."
-msgstr "返回激活的3Dæ‘„åƒæœºã€‚"
+msgstr "返回激活的3D相机。"
#: doc/classes/Viewport.xml:46
msgid "Returns the total transform of the viewport."
msgstr "è¿”å›žè§†çª—çš„æ€»çš„å˜æ¢ã€‚"
#: doc/classes/Viewport.xml:52
-#, fuzzy
msgid "Returns the topmost modal in the stack."
-msgstr "返回[AudioStream]中的ä½ç½®ã€‚"
+msgstr "返回堆栈中最顶层的模型。"
#: doc/classes/Viewport.xml:58
msgid "Returns the mouse position relative to the viewport."
@@ -73227,12 +73503,10 @@ msgid "Returns the [enum ShadowAtlasQuadrantSubdiv] of the specified quadrant."
msgstr "返回指定象é™çš„[enum ShadowAtlasQuadrantSubdiv]。"
#: doc/classes/Viewport.xml:78
-#, fuzzy
msgid "Returns the size override set with [method set_size_override]."
-msgstr "如果[method parse]失败了,返回错误文本。"
+msgstr "返回用[method set_size_override]设置的尺寸é‡å†™ã€‚"
#: doc/classes/Viewport.xml:84
-#, fuzzy
msgid ""
"Returns the viewport's texture.\n"
"[b]Note:[/b] Due to the way OpenGL works, the resulting [ViewportTexture] is "
@@ -73245,17 +73519,16 @@ msgid ""
msgstr ""
"返回视窗的纹ç†ã€‚\n"
"[b]注æ„:[/b] 由于OpenGL的工作方å¼ï¼Œäº§ç”Ÿçš„[ViewportTexture]是垂直翻转的。你å¯"
-"以在[method Texture2D.get_data]的结果上使用[method Image.flip_y]æ¥å°†å…¶ç¿»è½¬å›ž"
-"æ¥ï¼Œä¾‹å¦‚。\n"
+"以在[method Texture.get_data]的结果上使用[method Image.flip_y]æ¥å°†å…¶ç¿»è½¬å›ž"
+"去,例如。\n"
"[codeblock]\n"
"var img = get_viewport().get_texture().get_data()\n"
"img.flip_y()\n"
"[/codeblock]"
#: doc/classes/Viewport.xml:95
-#, fuzzy
msgid "Returns the viewport's RID from the [VisualServer]."
-msgstr "从[RenderingServer]返回视窗的RID。"
+msgstr "从[VisualServer]返回视窗的RID。"
#: doc/classes/Viewport.xml:101
msgid "Returns the visible rectangle in global screen coordinates."
@@ -73269,9 +73542,8 @@ msgstr ""
"返回GUI中的拖动数æ®ï¼Œè¯¥æ•°æ®ä¹‹å‰ç”± [method Control.get_drag_data] 返回。"
#: doc/classes/Viewport.xml:113
-#, fuzzy
msgid "Returns [code]true[/code] if there are visible modals on-screen."
-msgstr "如果场景文件有节点,返回[code]true[/code]。"
+msgstr "如果å±å¹•上有å¯è§çš„æ¨¡åž‹ï¼Œè¿”回[code]true[/code]。"
#: doc/classes/Viewport.xml:119
msgid ""
@@ -73280,12 +73552,11 @@ msgid ""
msgstr "如果当å‰è§†çª—正在执行拖动æ“作,则返回[code]true[/code]。"
#: doc/classes/Viewport.xml:136
-#, fuzzy
msgid ""
"Returns [code]true[/code] if the size override is enabled. See [method "
"set_size_override]."
msgstr ""
-"如果节点设置为顶层,则返回[code] true [/code]。å‚è§[方法set_as_toplevel]。"
+"如果å¯ç”¨äº†å°ºå¯¸é‡å†™ï¼Œè¿”回[code]true[/code]。å‚阅[method set_size_override]。"
#: doc/classes/Viewport.xml:143
msgid ""
@@ -73294,6 +73565,8 @@ msgid ""
"[Viewport] but makes you responsible for updating the position of this "
"[Viewport] manually."
msgstr ""
+"用指定的矩形将这个[Viewport]附加到根[Viewport]视窗上。这就绕过了å¦ä¸€ä¸ªèŠ‚ç‚¹æ¥"
+"显示这个[Viewport]的需è¦ï¼Œä½†è®©ä½ è´Ÿè´£æ‰‹åŠ¨æ›´æ–°è¿™ä¸ª[Viewport]çš„åæ ‡ã€‚"
#: doc/classes/Viewport.xml:149
msgid "Stops the input from propagating further down the [SceneTree]."
@@ -73318,6 +73591,9 @@ msgid ""
"size. If the size parameter is [code](-1, -1)[/code], it won't update the "
"size."
msgstr ""
+"设置视窗的尺寸é‡å†™ã€‚如果[code]enable[/code]傿•°æ˜¯[code]true[/code],就会使用"
+"é‡å†™ï¼Œå¦åˆ™å°±ä½¿ç”¨é»˜è®¤å°ºå¯¸ã€‚å¦‚æžœå°ºå¯¸å‚æ•°æ˜¯[code](-1, -1)[/code],它将ä¸ä¼šæ›´æ–°å°º"
+"寸。"
#: doc/classes/Viewport.xml:178
msgid "Forces update of the 2D and 3D worlds."
@@ -73328,9 +73604,8 @@ msgid "Warps the mouse to a position relative to the viewport."
msgstr "将鼠标å移到相对于视窗的ä½ç½®ã€‚"
#: doc/classes/Viewport.xml:191
-#, fuzzy
msgid "If [code]true[/code], the viewport will be used in AR/VR process."
-msgstr "如果 [code]true[/code],则å­è§†å£å°†ç”¨äºŽ AR/VR 过程。"
+msgstr "如果[code]true[/code],视窗将用于AR/VR进程。"
#: doc/classes/Viewport.xml:194
msgid "If [code]true[/code], the viewport will process 2D audio streams."
@@ -73359,22 +73634,25 @@ msgid ""
"[b]Note:[/b] Only available on the GLES3 backend. [member hdr] must also be "
"[code]true[/code] for debanding to be effective."
msgstr ""
+"如果[code]true[/code]ï¼Œåˆ™ä½¿ç”¨ä¸€ä¸ªå¿«é€Ÿçš„åŽæœŸå¤„ç†æ»¤æ³¢å™¨ï¼Œä½¿å¸¦çŠ¶çŽ°è±¡æ˜Žæ˜¾å‡å°‘。在"
+"æŸäº›æƒ…况下,去带å¯èƒ½ä¼šå¼•å…¥ç¨å¾®æ˜Žæ˜¾çš„æŠ–动模å¼ã€‚å»ºè®®åªæœ‰åœ¨å®žé™…éœ€è¦æ—¶æ‰å¯ç”¨åŽ»"
+"带,因为抖动模å¼ä¼šä½¿æ— æŸåŽ‹ç¼©çš„å±å¹•截图å˜å¤§ã€‚\n"
+"[b]注æ„:[/b] 仅在GLES3åŽç«¯å¯ç”¨ã€‚[member hdr]也必须是[code]true[/code]æ‰èƒ½ä½¿"
+"debanding去带生效。"
#: doc/classes/Viewport.xml:207
msgid "The overlay mode for test rendered geometry in debug purposes."
msgstr "在调试时,用于测试渲染的几何图形的å åŠ æ¨¡å¼ã€‚"
#: doc/classes/Viewport.xml:210
-#, fuzzy
msgid ""
"If [code]true[/code], the viewport will disable 3D rendering. For actual "
"disabling use [code]usage[/code]."
msgstr ""
-"如果 [code]true[/code],则会在元标签下划线,例如 [code][url]{text}[/url][/"
+"如果[code]true[/code],视窗将ç¦ç”¨3D渲染。对于实际ç¦ç”¨ï¼Œä½¿ç”¨[code]usage[/"
"code]。"
#: doc/classes/Viewport.xml:213
-#, fuzzy
msgid ""
"Enables fast approximate antialiasing. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -73383,9 +73661,10 @@ msgid ""
"recovered by enabling contrast-adaptive sharpening (see [member "
"sharpen_intensity])."
msgstr ""
-"使用快速的近似抗锯齿。FXAAæ˜¯ä¸€ç§æµè¡Œçš„å±å¹•空间抗锯齿方法,它的速度很快,但会"
-"使图åƒçœ‹èµ·æ¥å¾ˆæ¨¡ç³Šï¼Œç‰¹åˆ«æ˜¯åœ¨è¾ƒä½Žçš„分辨率。在1440på’Œ4K等大分辨率下,ä»ç„¶å¯ä»¥ç›¸"
-"对良好地工作。"
+"å¯ç”¨å¿«é€Ÿè¿‘似抗锯齿。FXAAæ˜¯ä¸€ç§æµè¡Œçš„å±å¹•空间抗锯齿方法,它的速度很快,但会使"
+"图åƒçœ‹èµ·æ¥å¾ˆæ¨¡ç³Šï¼Œç‰¹åˆ«æ˜¯åœ¨è¾ƒä½Žçš„分辨率。在1440på’Œ4K这样的大分辨率下,它ä»ç„¶å¯"
+"以较好工作。一些æŸå¤±çš„é”度å¯ä»¥é€šè¿‡å¯ç”¨å¯¹æ¯”度适应性é”åŒ–æ¥æ¢å¤ï¼Œå‚阅[member "
+"sharpen_intensity]。"
#: doc/classes/Viewport.xml:216
msgid ""
@@ -73394,7 +73673,6 @@ msgid ""
msgstr "è§†çª—çš„å…¨å±€ç”»å¸ƒå˜æ¢ã€‚ç”»å¸ƒå˜æ¢æ˜¯ç›¸å¯¹äºŽè¿™ä¸ªçš„。"
#: doc/classes/Viewport.xml:219
-#, fuzzy
msgid "If [code]true[/code], the viewport will not receive input events."
msgstr "如果[code]true[/code]ï¼Œè§†çª—å°†ä¸æŽ¥æ”¶è¾“å…¥äº‹ä»¶ã€‚"
@@ -73413,6 +73691,11 @@ msgid ""
"[b]Note:[/b] Requires [member usage] to be set to [constant USAGE_3D] or "
"[constant USAGE_3D_NO_EFFECTS], since HDR is not supported for 2D."
msgstr ""
+"如果[code]true[/code],视窗的渲染将获得高动æ€èŒƒå›´ç®—法的收益。高动æ€èŒƒå›´å…许视"
+"窗接收0-1范围以外的数值。在Godot中HDR使用16比特,这æ„味ç€å®ƒä¸èƒ½å­˜å‚¨æµ®ç‚¹æ•°çš„å…¨"
+"部范围。\n"
+"[b]注æ„:[/b] 需è¦å°† [member usage]设置为[constant USAGE_3D]或[constant "
+"USAGE_3D_NO_EFFECTS],2D䏿”¯æŒHDR。"
#: doc/classes/Viewport.xml:231
msgid ""
@@ -73426,6 +73709,12 @@ msgid ""
"the sRGB output to linear, this should only be used for VR plugins that "
"require input in linear color space!"
msgstr ""
+"如果[code]true[/code],3D渲染åŽçš„结果将ä¸ä¼šåº”用线性到sRGB的颜色转æ¢ã€‚当视窗被"
+"用作渲染目标时,这点很é‡è¦ï¼Œå› ä¸ºæ¸²æŸ“结果会被用作å¦ä¸€ä¸ªè§†çª—中渲染的三维物体的"
+"纹ç†ã€‚如果视窗被用æ¥åˆ›å»ºä¸åŸºäºŽé¢œè‰²çš„æ•°æ®ï¼Œå™ªå£°ã€é«˜åº¦å›¾ã€é‡‡å›¾ç­‰ï¼Œè¿™ä¹Ÿå¾ˆé‡è¦ã€‚"
+"当视窗被用作2Då¯¹è±¡çš„çº¹ç†æ—¶ï¼Œæˆ–者视窗是你的最终输出时,请ä¸è¦å¯ç”¨è¿™ä¸ªåŠŸèƒ½ã€‚å¯¹"
+"于GLES2驱动æ¥è¯´ï¼Œè¿™å°†æŠŠsRGB输出转æ¢ä¸ºçº¿æ€§è¾“出,这应该åªç”¨äºŽéœ€è¦çº¿æ€§è‰²å½©ç©ºé—´è¾“"
+"入的VRæ’ä»¶!"
#: doc/classes/Viewport.xml:234
msgid ""
@@ -73437,11 +73726,11 @@ msgstr ""
"是针对éžå¸¸é«˜ç«¯çš„系统,å¦åˆ™æ•°å€¼ä¸º4是最好的。"
#: doc/classes/Viewport.xml:237
-#, fuzzy
msgid ""
"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
"code] property."
-msgstr "如果[code]true[/code],视窗将使用[member world_3d]中定义的[World3D]。"
+msgstr ""
+"如果[code]true[/code],视窗将使用[code]world[/code]属性中定义的[World]。"
#: doc/classes/Viewport.xml:240
msgid ""
@@ -73457,24 +73746,27 @@ msgid ""
"Viewport or from [code]SCREEN_TEXTURE[/code] becomes unavailable. For more "
"information see [method VisualServer.viewport_set_render_direct_to_screen]."
msgstr ""
+"如果[code]true[/code],直接将视窗渲染到å±å¹•ä¸Šï¼Œè€Œä¸æ˜¯æ¸²æŸ“到根视窗上。åªåœ¨"
+"GLES2中å¯ç”¨ã€‚这是一个低级别的优化,在大多数情况下ä¸åº”该使用。如果使用,从视窗"
+"或从[code]SCREEN_TEXTURE[/code]读å–å°†å˜å¾—ä¸å¯ç”¨ã€‚更多信æ¯å‚阅[method "
+"VisualServer.viewport_set_render_direct_to_screen]。"
#: doc/classes/Viewport.xml:246
-#, fuzzy
msgid ""
"The clear mode when viewport used as a render target.\n"
"[b]Note:[/b] This property is intended for 2D usage."
-msgstr "å­è§†å£ç”¨ä½œæ¸²æŸ“目标时的清除模å¼ã€‚"
+msgstr ""
+"视窗用作渲染目标时的清除模å¼ã€‚\n"
+"[b]注æ„:[/b] 此属性适用于 2D 使用。"
#: doc/classes/Viewport.xml:250
-#, fuzzy
msgid "The update mode when viewport used as a render target."
-msgstr "å­è§†å£ç”¨ä½œæ¸²æŸ“目标时的更新模å¼ã€‚"
+msgstr "视窗用作渲染目标时的更新模å¼ã€‚"
#: doc/classes/Viewport.xml:253
-#, fuzzy
msgid ""
"If [code]true[/code], the result of rendering will be flipped vertically."
-msgstr "如果为 [code]true[/code],纹ç†å°†è¢«åž‚直翻转。"
+msgstr "如果[code]true[/code],渲染的结果将被垂直翻转。"
#: doc/classes/Viewport.xml:256
msgid "The subdivision amount of the first quadrant on the shadow atlas."
@@ -73512,17 +73804,21 @@ msgid ""
"Values around [code]0.5[/code] generally give the best results. See also "
"[member fxaa]."
msgstr ""
+"如果设置为大于[code]0.0[/code]的值,对比度适应性é”化将被应用到3D视窗中。这具"
+"æœ‰è¾ƒä½Žçš„æ€§èƒ½æˆæœ¬ï¼Œå¯ä»¥ç”¨æ¥æ¢å¤ä½¿ç”¨FXAA所æŸå¤±çš„一些é”度。一般æ¥è¯´ï¼Œ[code]0.5[/"
+"code]å·¦å³çš„æ•°å€¼å¯ä»¥å¾—到最好的效果。å‚阅[member fxaa]。"
#: doc/classes/Viewport.xml:275
msgid ""
"The width and height of viewport. Must be set to a value greater than or "
"equal to 2 pixels on both dimensions. Otherwise, nothing will be displayed."
msgstr ""
+"视窗的宽度和高度。必须在两个维度上设置为大于或等于2åƒç´ çš„值。å¦åˆ™ï¼Œå°†ä¸ä¼šæ˜¾ç¤º"
+"任何东西。"
#: doc/classes/Viewport.xml:278
-#, fuzzy
msgid "If [code]true[/code], the size override affects stretch as well."
-msgstr "如果 [code]true[/code],2D å°ºå¯¸è¦†ç›–ä¹Ÿä¼šå½±å“æ‹‰ä¼¸ã€‚"
+msgstr "如果[code]true[/code],尺寸é‡å†™ä¹Ÿä¼šå½±å“拉伸。"
#: doc/classes/Viewport.xml:281
msgid ""
@@ -73531,14 +73827,12 @@ msgid ""
msgstr "如果 [code]true[/code]ï¼Œè§†çª—åº”ä½¿å…¶èƒŒæ™¯æ¸²æŸ“ä¸ºé€æ˜Žã€‚"
#: doc/classes/Viewport.xml:284
-#, fuzzy
msgid "The rendering mode of viewport."
-msgstr "è¦ä½¿ç”¨çš„剔除模å¼ã€‚"
+msgstr "视窗的渲染模å¼ã€‚"
#: doc/classes/Viewport.xml:287
-#, fuzzy
msgid "The custom [World] which can be used as 3D environment source."
-msgstr "自定义的[World3D],å¯ä»¥ä½œä¸º3D环境æºã€‚"
+msgstr "自定义的[World],å¯ä»¥ä½œä¸º3D环境æºã€‚"
#: doc/classes/Viewport.xml:290
msgid "The custom [World2D] which can be used as 2D environment source."
@@ -73549,11 +73843,12 @@ msgid "Emitted when a Control node grabs keyboard focus."
msgstr "当控件节点获å–键盘焦点时触å‘。"
#: doc/classes/Viewport.xml:302
-#, fuzzy
msgid ""
"Emitted when the size of the viewport is changed, whether by [method "
"set_size_override], resize of window, or some other means."
-msgstr "å½“è§†çª—çš„å¤§å°æ”¹å˜æ—¶è§¦å‘,无论是通过调整窗å£çš„大å°ï¼Œè¿˜æ˜¯å…¶ä»–æ–¹å¼ã€‚"
+msgstr ""
+"当视窗的大å°è¢«æ”¹å˜æ—¶ï¼Œæ— è®ºæ˜¯é€šè¿‡[method set_size_override],调整窗å£çš„大å°ï¼Œ"
+"还是其他方å¼ï¼Œéƒ½ä¼šè§¦å‘。"
#: doc/classes/Viewport.xml:308
msgid "Do not update the render target."
@@ -73640,9 +73935,8 @@ msgid "Amount of draw calls in frame."
msgstr "帧中的绘制调用é‡ã€‚"
#: doc/classes/Viewport.xml:362
-#, fuzzy
msgid "Amount of items or joined items in frame."
-msgstr "帧中对象的数é‡ã€‚"
+msgstr "帧中的项或è”åˆé¡¹çš„æ•°é‡ã€‚"
#: doc/classes/Viewport.xml:368
msgid "Represents the size of the [enum RenderInfo] enum."
@@ -73660,16 +73954,15 @@ msgstr "显示的对象没有光照信æ¯ã€‚"
msgid ""
"Objected are displayed semi-transparent with additive blending so you can "
"see where they intersect."
-msgstr ""
+msgstr "对象以åŠé€æ˜Žçš„æ–¹å¼æ˜¾ç¤ºï¼Œå¹¶è¿›è¡ŒåŠ æ³•æ··åˆï¼Œå› æ­¤ä½ å¯ä»¥çœ‹åˆ°å®ƒä»¬çš„相交处。"
#: doc/classes/Viewport.xml:380
msgid "Objects are displayed in wireframe style."
msgstr "对象以线框风格显示。"
#: doc/classes/Viewport.xml:383
-#, fuzzy
msgid "Multisample anti-aliasing mode disabled. This is the default value."
-msgstr "ç¦ç”¨å¤šé‡é‡‡æ ·æŠ—锯齿模å¼ã€‚这是默认值,也是最快的设置。"
+msgstr "ç¦ç”¨å¤šé‡é‡‡æ ·æŠ—锯齿模å¼ã€‚这是默认值。"
#: doc/classes/Viewport.xml:386
msgid "Use 2x Multisample Antialiasing."
@@ -73697,6 +73990,8 @@ msgid ""
"than the 3D usage modes. Note that 3D rendering effects such as glow and HDR "
"are not available when using this mode."
msgstr ""
+"分é…绘制2D场景所需的所有缓冲区。这比3D使用模å¼å ç”¨æ›´å°‘çš„VRAM。请注æ„,使用这"
+"ç§æ¨¡å¼æ—¶ï¼Œè¯¸å¦‚辉光和HDRç­‰3D渲染效果是ä¸å¯ç”¨çš„。"
#: doc/classes/Viewport.xml:401
msgid ""
@@ -73705,12 +74000,16 @@ msgid ""
"Usage] types, this requires the least VRAM. Note that 3D rendering effects "
"such as glow and HDR are not available when using this mode."
msgstr ""
+"分é…2D场景所需的缓冲区,而ä¸åˆ†é…å±å¹•æ‹·è´çš„缓冲区。相应地,你ä¸èƒ½ä»Žå±å¹•上读"
+"å–。在[enum Usage]ç±»åž‹ä¸­ï¼Œè¿™éœ€è¦æœ€å°‘çš„VRAM。注æ„ï¼Œä½¿ç”¨è¿™ç§æ¨¡å¼æ—¶ï¼Œè¯¸å¦‚辉光和"
+"HDRç­‰3D渲染效果是ä¸å¯ç”¨çš„。"
#: doc/classes/Viewport.xml:404
msgid ""
"Allocates full buffers for drawing 3D scenes and all 3D effects including "
"buffers needed for 2D scenes and effects."
msgstr ""
+"为绘制3D场景和所有3D效果分é…完整的缓冲区,包括2D场景和效果所需的缓冲区。"
#: doc/classes/Viewport.xml:407
msgid ""
@@ -73718,6 +74017,8 @@ msgid ""
"buffers needed for reading from the screen and post-processing effects. "
"Saves some VRAM."
msgstr ""
+"分é…绘制3D场景所需的缓冲区。但ä¸åˆ†é…从å±å¹•上读å–å’ŒåŽæœŸå¤„ç†æ•ˆæžœæ‰€éœ€çš„缓冲区。"
+"节çœäº†ä¸€äº›VRAM。"
#: doc/classes/Viewport.xml:410
msgid "Always clear the render target before drawing."
@@ -73734,12 +74035,10 @@ msgid ""
msgstr "在下一帧清除渲染目标,然åŽåˆ‡æ¢åˆ° [constant CLEAR_MODE_NEVER]。"
#: doc/classes/ViewportContainer.xml:4
-#, fuzzy
msgid "Control for holding [Viewport]s."
-msgstr "ç”¨äºŽä¿æŒ [SubViewport] 的控件。"
+msgstr "ç”¨äºŽæŒæœ‰[Viewport]的控件。"
#: doc/classes/ViewportContainer.xml:7
-#, fuzzy
msgid ""
"A [Container] node that holds a [Viewport], automatically setting its size.\n"
"[b]Note:[/b] Changing a ViewportContainer's [member Control.rect_scale] will "
@@ -73747,19 +74046,17 @@ msgid ""
"causing distortion, adjust the node's margins instead (if it's not already "
"in a container)."
msgstr ""
-"容纳[SubViewport]çš„[Container]节点,自动设置其大å°ã€‚\n"
-"[b]注æ„:[/b] 改å˜SubViewportContainerçš„[member Control.rect_scale]会导致其内"
-"å®¹å‡ºçŽ°å¤±çœŸã€‚è¦æ”¹å˜å®ƒçš„视觉尺寸而ä¸å¼•起失真,å¯ä»¥è°ƒæ•´èŠ‚ç‚¹çš„è¾¹è·æ¥ä»£æ›¿ï¼ˆå¦‚果它"
-"还没有在一个容器中的è¯ï¼‰ã€‚"
+"容纳[Viewport]çš„[Container]节点,自动设置其大å°ã€‚\n"
+"[b]注æ„:[/b] 改å˜ViewportContainerçš„[member Control.rect_scale]会导致其内容"
+"å‡ºçŽ°æ‰­æ›²ã€‚è¦æ”¹å˜å®ƒçš„视觉尺寸而ä¸å¼•起失真,å¯ä»¥è°ƒæ•´èŠ‚ç‚¹çš„è¾¹è·æ¥ä»£æ›¿ï¼Œå¦‚果它还"
+"未在容器中时。"
#: doc/classes/ViewportContainer.xml:16
-#, fuzzy
msgid ""
"If [code]true[/code], the viewport will be scaled to the control's size."
-msgstr "如果 [code]true[/code],å­è§†å£å°†è¢«ç¼©æ”¾åˆ°æŽ§ä»¶çš„大å°ã€‚"
+msgstr "如果[code]true[/code],视窗将被缩放到控件的大å°ã€‚"
#: doc/classes/ViewportContainer.xml:19
-#, fuzzy
msgid ""
"Divides the viewport's effective resolution by this value while preserving "
"its scale. This can be used to speed up rendering.\n"
@@ -73769,25 +74066,25 @@ msgid ""
"[b]Note:[/b] [member stretch] must be [code]true[/code] for this property to "
"work."
msgstr ""
-"å°†å­è§†å£çš„æœ‰æ•ˆåˆ†è¾¨çŽ‡é™¤ä»¥è¯¥å€¼ï¼ŒåŒæ—¶ä¿ç•™å…¶æ¯”例。这å¯ç”¨äºŽåŠ é€Ÿæ¸²æŸ“ã€‚\n"
-"例如,一个 1280×720 çš„å­è§†å£ [member stretch_shrink] 设置为 [code]2[/code] å°†"
-"在 640×360 æ¸²æŸ“ï¼ŒåŒæ—¶åœ¨å®¹å™¨ä¸­å æ®ç›¸åŒçš„大å°ã€‚\n"
-"[b]注æ„:[/b] [member stretch] 必须为 [code]true[/code] æ‰èƒ½ä½¿è¯¥å±žæ€§èµ·ä½œç”¨ã€‚"
+"å°†è§†çª—çš„æœ‰æ•ˆåˆ†è¾¨çŽ‡é™¤ä»¥è¿™ä¸ªå€¼ï¼ŒåŒæ—¶ä¿ç•™å…¶æ¯”例。这å¯ä»¥ç”¨æ¥åŠ å¿«æ¸²æŸ“é€Ÿåº¦ã€‚\n"
+"例如,一个1280×720的视窗,如果[member stretch_shrink]设置为[code]2[/code],将"
+"以640×360çš„å°ºå¯¸è¿›è¡Œæ¸²æŸ“ï¼ŒåŒæ—¶åœ¨å®¹å™¨ä¸­å æ®åŒæ ·çš„尺寸。\n"
+"[b]注æ„:[/b][member stretch]拉伸必须是[code]true[/code],这个属性æ‰èƒ½å‘挥作"
+"用。"
#: doc/classes/ViewportTexture.xml:4
msgid "Texture which displays the content of a [Viewport]."
msgstr "显示[Viewport]内容的纹ç†ã€‚"
#: doc/classes/ViewportTexture.xml:7
-#, fuzzy
msgid ""
"Displays the content of a [Viewport] node as a dynamic [Texture]. This can "
"be used to mix controls, 2D, and 3D elements in the same scene.\n"
"To create a ViewportTexture in code, use the [method Viewport.get_texture] "
"method on the target viewport."
msgstr ""
-"å°†[Viewport]节点的内容显示为一个动æ€çš„[Texture2D]。这å¯ä»¥ç”¨æ¥åœ¨åŒä¸€ä¸ªåœºæ™¯ä¸­æ··"
-"åˆæŽ§ä»¶ã€2Då’Œ3D元素。\n"
+"å°†[Viewport]节点的内容显示为一个动æ€çš„[Texture]。这å¯ä»¥ç”¨æ¥åœ¨åŒä¸€ä¸ªåœºæ™¯ä¸­æ··åˆ"
+"控件,2D和3D元素。\n"
"è¦åœ¨ä»£ç ä¸­åˆ›å»ºä¸€ä¸ªViewportTexture,请使用目标视窗上的[method Viewport."
"get_texture]方法。"
@@ -73803,7 +74100,6 @@ msgid "Enables certain nodes only when approximately visible."
msgstr "åªåœ¨å¤§çº¦å¯è§æ—¶å¯ç”¨æŸäº›èŠ‚ç‚¹ã€‚"
#: doc/classes/VisibilityEnabler.xml:7
-#, fuzzy
msgid ""
"The VisibilityEnabler will disable [RigidBody] and [AnimationPlayer] nodes "
"when they are not visible. It will only affect other nodes within the same "
@@ -73818,14 +74114,14 @@ msgid ""
"[b]Note:[/b] VisibilityEnabler will not affect nodes added after scene "
"initialization."
msgstr ""
-"VisibilityEnabler3D将在[RigidBody3D]å’Œ[AnimationPlayer]节点ä¸å¯è§æ—¶ç¦ç”¨å®ƒä»¬ã€‚"
-"它åªä¼šå½±å“与VisibilityEnabler3D本身相åŒåœºæ™¯ä¸­çš„其他节点。\n"
-"å¦‚æžœä½ åªæ˜¯æƒ³æŽ¥æ”¶é€šçŸ¥ï¼Œè¯·ä½¿ç”¨[VisibilityNotifier3D]代替。\n"
-"[b]注æ„:[/b] VisibilityEnabler3D由于性能原因使用了一个近似的å¯å‘弿–¹æ³•。它没"
-"æœ‰è€ƒè™‘åˆ°å¢™å’Œå…¶ä»–é®æŒ¡ç‰©ã€‚å¯å‘å¼è¿™ä¸€å®žçŽ°ç»†èŠ‚ï¼Œåœ¨æœªæ¥çš„版本中å¯èƒ½ä¼šæ”¹å˜ã€‚如果你"
-"需è¦ç²¾ç¡®çš„å¯è§åº¦æ£€æŸ¥ï¼Œè¯·ä½¿ç”¨å¦ä¸€ç§æ–¹æ³•,例如添加一个[Area3D]节点作为"
-"[Camera3D]节点的å­èŠ‚ç‚¹æˆ–[method Vector3.dot]。\n"
-"[b]注æ„:[/b] VisibilityEnabler3Dä¸ä¼šå½±å“场景åˆå§‹åŒ–åŽæ·»åŠ çš„èŠ‚ç‚¹ã€‚"
+"当[RigidBody]å’Œ[AnimationPlayer]节点ä¸å¯è§æ—¶ï¼ŒVisibilityEnablerå°†ç¦ç”¨å®ƒä»¬ã€‚它"
+"åªä¼šå½±å“与VisibilityEnabler本身相åŒåœºæ™¯ä¸­çš„其他节点。\n"
+"å¦‚æžœä½ åªæ˜¯æƒ³æŽ¥æ”¶é€šçŸ¥ï¼Œè¯·ä½¿ç”¨[VisibilityNotifier]代替。\n"
+"[b]注æ„:[/b] VisibilityEnabler由于性能原因使用了一个近似的å¯å‘弿–¹æ³•。它没有"
+"è€ƒè™‘åˆ°å¢™å’Œå…¶ä»–é®æŒ¡ç‰©ã€‚å¯å‘å¼è¿™ä¸€å®žçŽ°ç»†èŠ‚ï¼Œåœ¨æœªæ¥çš„版本中å¯èƒ½ä¼šæ”¹å˜ã€‚如果你需"
+"è¦ç²¾ç¡®çš„å¯è§æ€§æ£€æŸ¥ï¼Œè¯·ä½¿ç”¨å¦ä¸€ç§æ–¹æ³•,例如添加一个[Area]节点作为[Camera]节点"
+"çš„å­èŠ‚ç‚¹å’Œ/或[method Vector3.dot]。\n"
+"[b]注æ„:[/b] VisibilityEnablerä¸ä¼šå½±å“场景åˆå§‹åŒ–åŽæ·»åŠ çš„èŠ‚ç‚¹ã€‚"
#: doc/classes/VisibilityEnabler.xml:19 doc/classes/VisibilityEnabler2D.xml:19
msgid ""
@@ -73839,9 +74135,8 @@ msgid ""
msgstr "设置由给定的[enum Enabler]常é‡è¯†åˆ«çš„å¯ç”¨ç¨‹åºçš„æ´»åŠ¨çŠ¶æ€ã€‚"
#: doc/classes/VisibilityEnabler.xml:33
-#, fuzzy
msgid "If [code]true[/code], [RigidBody] nodes will be paused."
-msgstr "如果[code]true[/code],[RigidBody2D]节点将被暂åœã€‚"
+msgstr "如果[code]true[/code],[RigidBody]节点将被暂åœã€‚"
#: doc/classes/VisibilityEnabler.xml:36 doc/classes/VisibilityEnabler2D.xml:39
msgid "If [code]true[/code], [AnimationPlayer] nodes will be paused."
@@ -73852,9 +74147,8 @@ msgid "This enabler will pause [AnimationPlayer] nodes."
msgstr "这个å¯ç”¨ç¨‹åºå°†æš‚åœ[AnimationPlayer]节点。"
#: doc/classes/VisibilityEnabler.xml:44
-#, fuzzy
msgid "This enabler will freeze [RigidBody] nodes."
-msgstr "这个å¯ç”¨ç¨‹åºå°†å†»ç»“[RigidBody2D]节点。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†å†»ç»“[RigidBody]节点。"
#: doc/classes/VisibilityEnabler.xml:47 doc/classes/VisibilityEnabler2D.xml:71
msgid "Represents the size of the [enum Enabler] enum."
@@ -73887,14 +74181,12 @@ msgid "If [code]true[/code], [RigidBody2D] nodes will be paused."
msgstr "如果[code]true[/code],[RigidBody2D]节点将被暂åœã€‚"
#: doc/classes/VisibilityEnabler2D.xml:36
-#, fuzzy
msgid "If [code]true[/code], [AnimatedSprite] nodes will be paused."
-msgstr "如果[code]true[/code],[AnimatedSprite2D]节点将被暂åœã€‚"
+msgstr "如果[code]true[/code],[AnimatedSprite]节点将被暂åœã€‚"
#: doc/classes/VisibilityEnabler2D.xml:42
-#, fuzzy
msgid "If [code]true[/code], [Particles2D] nodes will be paused."
-msgstr "如果[code]true[/code],[GPUParticles2D]节点将被暂åœã€‚"
+msgstr "如果[code]true[/code],[Particles2D]节点将被暂åœã€‚"
#: doc/classes/VisibilityEnabler2D.xml:45
msgid ""
@@ -73912,9 +74204,8 @@ msgid "This enabler will freeze [RigidBody2D] nodes."
msgstr "这个å¯ç”¨ç¨‹åºå°†å†»ç»“[RigidBody2D]节点。"
#: doc/classes/VisibilityEnabler2D.xml:59
-#, fuzzy
msgid "This enabler will stop [Particles2D] nodes."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢[GPUParticles2D]节点。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢[Particles2D]节点。"
#: doc/classes/VisibilityEnabler2D.xml:62
msgid "This enabler will stop the parent's _process function."
@@ -73925,16 +74216,14 @@ msgid "This enabler will stop the parent's _physics_process function."
msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„_physics_process函数。"
#: doc/classes/VisibilityEnabler2D.xml:68
-#, fuzzy
msgid "This enabler will stop [AnimatedSprite] nodes animations."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢[AnimatedSprite2D]节点的动画。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢[AnimatedSprite]节点的动画。"
#: doc/classes/VisibilityNotifier.xml:4 doc/classes/VisibilityNotifier2D.xml:4
msgid "Detects approximately when the node is visible on screen."
msgstr "大约在节点在å±å¹•上å¯è§æ—¶è¿›è¡Œæ£€æµ‹ã€‚"
#: doc/classes/VisibilityNotifier.xml:7
-#, fuzzy
msgid ""
"The VisibilityNotifier detects when it is visible on the screen. It also "
"notifies when its bounding rectangle enters or exits the screen or a "
@@ -73947,13 +74236,13 @@ msgid ""
"If you need precise visibility checking, use another method such as adding "
"an [Area] node as a child of a [Camera] node and/or [method Vector3.dot]."
msgstr ""
-"VisibilityNotifier3D检测它在å±å¹•上是å¦å¯è§ã€‚当它的边界矩形进入或退出å±å¹•或"
-"[Camera3D]的视图时,它也会å‘出通知。\n"
-"如果你想让节点在退出å±å¹•时自动ç¦ç”¨ï¼Œè¯·ä½¿ç”¨[VisibilityEnabler3D]代替。\n"
-"[b]注æ„:[/b] VisibilityNotifier3D出于性能考虑,使用了一个近似的å¯å‘弿–¹æ³•。"
-"它没有考虑到墙å£å’Œå…¶ä»–鮿Œ¡ç‰©ã€‚å¯å‘å¼è¿™ä¸€å®žçŽ°ç»†èŠ‚ï¼Œåœ¨æœªæ¥çš„版本中å¯èƒ½ä¼šæ”¹å˜ã€‚"
-"如果你需è¦ç²¾ç¡®çš„å¯è§æ€§æ£€æŸ¥ï¼Œè¯·ä½¿ç”¨å¦ä¸€ç§æ–¹æ³•,如添加一个[Area3D]节点作为"
-"[Camera3D]节点的å­èŠ‚ç‚¹æˆ–[method Vector3.dot]。"
+"VisibilityNotifier检测它在å±å¹•上是å¦å¯è§ã€‚当它的边界矩形进入或退出å±å¹•或"
+"[Camera]的视图时,它也会å‘出通知。\n"
+"如果你想让节点在退出å±å¹•时自动ç¦ç”¨ï¼Œè¯·ä½¿ç”¨[VisibilityEnabler]代替。\n"
+"[b]注æ„:[/b] VisibilityNotifier由于性能原因使用了一个近似的å¯å‘弿–¹æ³•。它没"
+"æœ‰è€ƒè™‘åˆ°å¢™å’Œå…¶ä»–é®æŒ¡ç‰©ã€‚å¯å‘å¼è¿™ä¸€å®žçŽ°ç»†èŠ‚ï¼Œåœ¨æœªæ¥çš„版本中å¯èƒ½ä¼šæ”¹å˜ã€‚如果你"
+"需è¦ç²¾ç¡®çš„å¯è§æ€§æ£€æŸ¥ï¼Œè¯·ä½¿ç”¨å¦ä¸€ç§æ–¹æ³•,例如添加一个[Area]节点作为[Camera]节"
+"点的å­èŠ‚ç‚¹å’Œ/或[method Vector3.dot]。"
#: doc/classes/VisibilityNotifier.xml:17
msgid ""
@@ -73968,29 +74257,24 @@ msgstr ""
"它被实例化åŽç«‹å³è¿”回[code]false[/code],å³ä½¿å±å¹•在绘制过程中。"
#: doc/classes/VisibilityNotifier.xml:24
-#, fuzzy
msgid "The VisibilityNotifier's bounding box."
-msgstr "VisibilityNotifier3D的边界框。"
+msgstr "VisibilityNotifier的边界框。"
#: doc/classes/VisibilityNotifier.xml:31
-#, fuzzy
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
-msgstr "当VisibilityNotifier3D进入到[Camera3D]的视图中时触å‘。"
+msgstr "当VisibilityNotifier进入[Camera]的视图时触å‘。"
#: doc/classes/VisibilityNotifier.xml:37
-#, fuzzy
msgid "Emitted when the VisibilityNotifier exits a [Camera]'s view."
-msgstr "当VisibilityNotifier3D退出[Camera3D]的视图时触å‘。"
+msgstr "当VisibilityNotifier退出[Camera]的视图时触å‘。"
#: doc/classes/VisibilityNotifier.xml:42
-#, fuzzy
msgid "Emitted when the VisibilityNotifier enters the screen."
-msgstr "当VisibilityNotifier2D进入å±å¹•时触å‘。"
+msgstr "当VisibilityNotifier进入å±å¹•时触å‘。"
#: doc/classes/VisibilityNotifier.xml:47
-#, fuzzy
msgid "Emitted when the VisibilityNotifier exits the screen."
-msgstr "当VisibilityNotifier2D退出å±å¹•时触å‘。"
+msgstr "当VisibilityNotifier退出å±å¹•时触å‘。"
#: doc/classes/VisibilityNotifier2D.xml:7
msgid ""
@@ -74048,7 +74332,6 @@ msgid "Parent of all visual 3D nodes."
msgstr "所有å¯è§†3D节点的父节点。"
#: doc/classes/VisualInstance.xml:7
-#, fuzzy
msgid ""
"The [VisualInstance] is used to connect a resource to a visual "
"representation. All visual 3D nodes inherit from the [VisualInstance]. In "
@@ -74057,38 +74340,37 @@ msgid ""
"[VisualInstance]. [VisualInstance] is the node representation of the "
"[VisualServer] instance."
msgstr ""
-"[VisualInstance3D]用于连接一个资æºå’Œä¸€ä¸ªå¯è§†è¡¨çŽ°ã€‚æ‰€æœ‰çš„å¯è§†åŒ–3D节点都继承自"
-"[VisualInstance3D]。一般æ¥è¯´ï¼Œä½ ä¸åº”该直接访问[VisualInstance3D]的属性,因为"
-"它们是由继承自[VisualInstance3D]的节点访问和管ç†çš„。[VisualInstance3D]是"
-"[RenderingServer]实例的节点表示。"
+"[VisualInstance]用于连接一个资æºå’Œä¸€ä¸ªè§†è§‰æ˜¾ç¤ºã€‚所有的å¯è§†åŒ–三维节点都继承自"
+"[VisualInstance]。你ä¸åº”该直接访问[VisualInstance]的属性,一般æ¥è¯´ï¼Œå®ƒä»¬æ˜¯ç”±"
+"继承自[VisualInstance]的节点访问和管ç†çš„。[VisualInstance]是[VisualServer]实"
+"例的节点表示。"
#: doc/classes/VisualInstance.xml:15
-#, fuzzy
msgid ""
"Returns the [AABB] (also known as the bounding box) for this "
"[VisualInstance]. See also [method get_transformed_aabb]."
-msgstr "返回此[VisualInstance3D]的[AABB],也称为包围盒或边界框。"
+msgstr ""
+"返回此[VisualInstance]çš„[AABB],也称为边界框。å‚阅[method "
+"get_transformed_aabb]。"
#: doc/classes/VisualInstance.xml:21
-#, fuzzy
msgid ""
"Returns the RID of the resource associated with this [VisualInstance]. For "
"example, if the Node is a [MeshInstance], this will return the RID of the "
"associated [Mesh]."
msgstr ""
-"返回与此[VisualInstance3D]相关的资æºçš„RID。例如,如果节点是一个"
-"[MeshInstance3D],这将返回相关的[Mesh]的RID。"
+"返回与此[VisualInstance]相关的资æºçš„RID。例如,如果该节点是一个"
+"[MeshInstance],这将返回相关的[Mesh]的RID。"
#: doc/classes/VisualInstance.xml:27
-#, fuzzy
msgid ""
"Returns the RID of this instance. This RID is the same as the RID returned "
"by [method VisualServer.instance_create]. This RID is needed if you want to "
"call [VisualServer] functions directly on this [VisualInstance]."
msgstr ""
-"返回这个实例的RID。这个RID与[method RenderingServer.instance_create]所返回的"
-"RID相åŒã€‚如果你想在这个[VisualInstance3D]上直接调用[RenderingServer]函数,就"
-"需è¦è¿™ä¸ªRID。"
+"返回这个实例的RID。这个RID与[method VisualServer.instance_create]所返回的RID"
+"相åŒã€‚如果你想在这个[VisualInstance]上直接调用[VisualServer]函数,就需è¦è¿™ä¸ª"
+"RID。"
#: doc/classes/VisualInstance.xml:34
msgid ""
@@ -74099,47 +74381,43 @@ msgstr ""
"[code]false[/code]。"
#: doc/classes/VisualInstance.xml:40
-#, fuzzy
msgid ""
"Returns the transformed [AABB] (also known as the bounding box) for this "
"[VisualInstance].\n"
"Transformed in this case means the [AABB] plus the position, rotation, and "
"scale of the [Spatial]'s [Transform]. See also [method get_aabb]."
msgstr ""
-"返回此[VisualInstance3D]å˜æ¢åŽçš„[AABB],也称为包围盒或边界框。\n"
-"è¿™é‡Œçš„å˜æ¢æ„味ç€[AABB]加上[Node3D]çš„[Transform]çš„ä½ç½®ã€æ—‹è½¬å’Œç¼©æ”¾ã€‚"
+"返回此[VisualInstance]çš„å˜æ¢åŽçš„[AABB],也称为边界框。\n"
+"è¿™é‡Œçš„å˜æ¢æ˜¯æŒ‡[AABB]加上[Spatial]çš„[Transform]çš„ä½ç½®ã€æ—‹è½¬å’Œç¼©æ”¾ã€‚å‚阅"
+"[method get_aabb]。"
#: doc/classes/VisualInstance.xml:48
-#, fuzzy
msgid ""
"Sets the resource that is instantiated by this [VisualInstance], which "
"changes how the engine handles the [VisualInstance] under the hood. "
"Equivalent to [method VisualServer.instance_set_base]."
msgstr ""
-"设置由这个[VisualInstance3D]实例化的资æºï¼Œè¿™å°†æ”¹å˜å¼•擎中处ç†"
-"[VisualInstance3D]的方å¼ã€‚相当于[method RenderingServer.instance_set_base]。"
+"设置由该[VisualInstance]实例化的资æºï¼Œè¿™å°†æ”¹å˜å¼•擎对该[VisualInstance]的处ç†"
+"æ–¹å¼ã€‚相当于[method VisualServer.instance_set_base]。"
#: doc/classes/VisualInstance.xml:56
msgid "Enables a particular layer in [member layers]."
msgstr "å¯ç”¨ [member layers] 中的特定层。"
#: doc/classes/VisualInstance.xml:62
-#, fuzzy
msgid ""
"The render layer(s) this [VisualInstance] is drawn on.\n"
"This object will only be visible for [Camera]s whose cull mask includes the "
"render object this [VisualInstance] is set to."
msgstr ""
-"这个[VisualInstance3D]所绘制的渲染层。\n"
-"此对象åªå¯¹[Camera3D]å¯è§ï¼Œå…¶å‰”é™¤è’™ç‰ˆåŒ…å«æ­¤ [VisualInstance3D] 设置的渲染对"
-"象。"
+"绘制此 [VisualInstance] 的渲染层。\n"
+"此对象仅对[Camera]å¯è§ï¼Œå…¶å‰”除é®ç½©åŒ…括此[VisualInstance]设置的渲染对象。"
#: modules/visual_script/doc_classes/VisualScript.xml:4
msgid "A script implemented in the Visual Script programming environment."
msgstr "一个在å¯è§†åŒ–脚本编程环境中实现的脚本。"
#: modules/visual_script/doc_classes/VisualScript.xml:7
-#, fuzzy
msgid ""
"A script implemented in the Visual Script programming environment. The "
"script extends the functionality of all objects that instance it.\n"
@@ -74148,19 +74426,19 @@ msgid ""
"You are most likely to use this class via the Visual Script editor or when "
"writing plugins for it."
msgstr ""
-"一个在å¯è§†åŒ–脚本环境中实现的脚本。脚本扩展了所有以它为实例的对象的功能。\n"
-"如果该对象的类与脚本的基类之一相匹é…,[method Object.set_script] 扩展一个现有"
-"的对象。\n"
-"你最有å¯èƒ½é€šè¿‡å¯è§†åŒ–脚本编辑器或为其编写æ’件时使用这个类。"
+"在 Visual Script 编程环境中实现的脚本。该脚本扩展了所有实例化它的对象的功"
+"能。\n"
+"[method Object.set_script] 扩展现有对象,如果该对象的类与脚本的基类之一匹"
+"é…。\n"
+"您最有å¯èƒ½é€šè¿‡ Visual Script 编辑器或在为其编写æ’件时使用此类。"
#: modules/visual_script/doc_classes/VisualScript.xml:12
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/getting_started/scripting/visual_script/"
"index.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/getting_started/scripting/"
-"visual_script/index.html"
+"https://docs.godotengine.org/en/3.4/getting_started/scripting/visual_script/"
+"index.html"
#: modules/visual_script/doc_classes/VisualScript.xml:19
msgid "Add a custom signal with the specified name to the VisualScript."
@@ -74673,18 +74951,15 @@ msgstr ""
"从一个使用 [constant VAR_TO_STR]åºåˆ—化的字符串中ååºåˆ—化一个 [Variant] 。"
#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:200
-#, fuzzy
msgid "Serialize a [Variant] to a [PoolByteArray]."
-msgstr "å°† [Variant] åºåˆ—化为 [PackedByteArray]。"
+msgstr "å°† [Variant] åºåˆ—化为 [PoolByteArray]。"
#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:203
-#, fuzzy
msgid ""
"Deserialize a [Variant] from a [PoolByteArray] serialized using [constant "
"VAR_TO_BYTES]."
msgstr ""
-"从使用 [constant VAR_TO_BYTES]åºåˆ—化的[PackedByteArray]ååºåˆ—化一个"
-"[Variant]。"
+"从使用 [constant VAR_TO_BYTES] åºåˆ—化的 [PoolByteArray] ååºåˆ—化 [Variant]。"
#: modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml:206
msgid ""
@@ -74867,16 +75142,14 @@ msgid "Return the count of input value ports."
msgstr "返回输入值端å£çš„æ•°é‡ã€‚"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:34
-#, fuzzy
msgid ""
"Return the specified input port's hint. See the [enum @GlobalScope."
"PropertyHint] hints."
-msgstr "返回指定输入端å£çš„类型。å‚阅[enum Variant.Type]值。"
+msgstr "返回指定输入端å£çš„æç¤ºã€‚å‚阅 [enum @GlobalScope.PropertyHint] æç¤ºã€‚"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:41
-#, fuzzy
msgid "Return the specified input port's hint string."
-msgstr "返回指定的输入端å£çš„å称。"
+msgstr "返回指定输入端å£çš„æç¤ºå­—符串。"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:48
msgid "Return the specified input port's name."
@@ -74900,27 +75173,23 @@ msgid "Return the amount of output value ports."
msgstr "返回输出值端å£çš„æ•°é‡ã€‚"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:81
-#, fuzzy
msgid ""
"Return the specified output port's hint. See the [enum @GlobalScope."
"PropertyHint] hints."
-msgstr "返回指定输入端å£çš„类型。å‚阅[enum Variant.Type]值。"
+msgstr "返回指定输出端å£çš„æç¤ºã€‚å‚阅[enum @GlobalScope.PropertyHint] æç¤ºã€‚"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:88
-#, fuzzy
msgid "Return the specified output port's hint string."
-msgstr "返回指定的输入端å£çš„å称。"
+msgstr "返回指定输出端å£çš„æç¤ºå­—符串。"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:95
-#, fuzzy
msgid "Return the specified output port's name."
-msgstr "返回指定的输入端å£çš„å称。"
+msgstr "返回指定输出端å£çš„å称。"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:102
-#, fuzzy
msgid ""
"Return the specified output port's type. See the [enum Variant.Type] values."
-msgstr "返回指定输入端å£çš„类型。å‚阅[enum Variant.Type]值。"
+msgstr "返回指定输出端å£çš„类型。å‚阅[enum Variant.Type]值。"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:108
msgid ""
@@ -74942,7 +75211,6 @@ msgid "Return whether the custom node has an input [b]sequence[/b] port."
msgstr "è¿”å›žè‡ªå®šä¹‰èŠ‚ç‚¹æ˜¯å¦æœ‰è¾“å…¥[b]sequence[/b]åºåˆ—端å£ã€‚"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:130
-#, fuzzy
msgid ""
"Execute the custom node's logic, returning the index of the output sequence "
"port to use or a [String] when there is an error.\n"
@@ -74961,10 +75229,10 @@ msgstr ""
"[String]。\n"
"[code]inputs[/code]数组包å«è¾“入端å£çš„值。\n"
"[code]output[/code]是一个数组,其索引应被设置为相应的输出。\n"
-"[code]start_mode[/code]通常是[constant START_MODE_BEGIN_SEQUENCE],除éžä½ ä½¿ç”¨"
+"[code]start_mode[/code]通常是[constantSTART_MODE_BEGIN_SEQUENCE],除éžä½ ä½¿ç”¨"
"了[code]STEP_*[/code]常é‡ã€‚\n"
-"[code]working_mem[/code]是一个数组,å¯ä»¥ç”¨æ¥åœ¨è‡ªå®šä¹‰èŠ‚ç‚¹çš„è¿è¡Œä¸­æŒä¹…ä¿å­˜ä¿¡"
-"æ¯ã€‚\n"
+"[code]working_mem[/code]是一个数组,å¯ä»¥ç”¨æ¥åœ¨è‡ªå®šä¹‰èŠ‚ç‚¹çš„è¿è¡Œä¹‹é—´æŒç»­ä¿å­˜ä¿¡"
+"æ¯ã€‚其大å°éœ€è¦ç”¨[method _get_working_memory_size]æ¥é¢„定义。\n"
"当返回时,你å¯ä»¥ç”¨[code]STEP_*[/code]ä¸­çš„ä¸€ä¸ªå¸¸é‡æ¥å±è”½è¿”回值。"
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml:141
@@ -75081,9 +75349,8 @@ msgid "The singleton's name."
msgstr "å•例的å称。"
#: modules/visual_script/doc_classes/VisualScriptExpression.xml:4
-#, fuzzy
msgid "A Visual Script node that can execute a custom expression."
-msgstr "用于调用内置函数的å¯è§†åŒ–脚本节点。"
+msgstr "å¯ä»¥æ‰§è¡Œè‡ªå®šä¹‰è¡¨è¾¾å¼çš„å¯è§†åŒ–脚本节点。"
#: modules/visual_script/doc_classes/VisualScriptExpression.xml:7
msgid ""
@@ -75091,11 +75358,12 @@ msgid ""
"provided for the input and the expression result can be retrieved from the "
"output."
msgstr ""
+"å¯ä»¥æ‰§è¡Œè‡ªå®šä¹‰è¡¨è¾¾å¼çš„å¯è§†åŒ–脚本节点。å¯ä»¥ä¸ºè¾“å…¥æä¾›å€¼ï¼Œå¹¶ä¸”å¯ä»¥ä»Žè¾“出中检索"
+"表达å¼ç»“果。"
#: modules/visual_script/doc_classes/VisualScriptFunction.xml:4
-#, fuzzy
msgid "A Visual Script node representing a function."
-msgstr "用于调用内置函数的å¯è§†åŒ–脚本节点。"
+msgstr "一个Visual Script节点,表示一个函数。"
#: modules/visual_script/doc_classes/VisualScriptFunction.xml:7
msgid ""
@@ -75103,11 +75371,12 @@ msgid ""
"point for the function body and can be used to tweak the function's "
"properties (e.g. RPC mode)."
msgstr ""
+"[VisualScriptFunction] 表示函数头。它是函数体的起点,å¯ç”¨äºŽè°ƒæ•´å‡½æ•°çš„属性,例"
+"如 RPC 模å¼ã€‚"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:4
-#, fuzzy
msgid "A Visual Script node for calling a function."
-msgstr "用于调用内置函数的å¯è§†åŒ–脚本节点。"
+msgstr "用于调用函数的å¯è§†åŒ–脚本节点。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:7
msgid ""
@@ -75115,60 +75384,65 @@ msgid ""
"function onto the Visual Script graph. It allows to tweak parameters of the "
"call, e.g. what object the function is called on."
msgstr ""
+"[VisualScriptFunctionCall]是在你添加或拖放一个函数到Visual Script图形中时创"
+"建。它å…è®¸å¯¹è°ƒç”¨çš„å‚æ•°è¿›è¡Œè°ƒæ•´ï¼Œä¾‹å¦‚,函数被调用的对象。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:15
-#, fuzzy
msgid ""
"The script to be used when [member call_mode] is set to [constant "
"CALL_MODE_INSTANCE]."
-msgstr "当[member overlay]设置为[constant OVERLAY_POSITION]时使用的背景。"
+msgstr "[member call_mode] 设置为 [constant CALL_MODE_INSTANCE] 时使用的脚本。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:18
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:15
-#, fuzzy
msgid ""
"The base type to be used when [member call_mode] is set to [constant "
"CALL_MODE_INSTANCE]."
-msgstr "当[member overlay]设置为[constant OVERLAY_POSITION]时使用的背景。"
+msgstr ""
+"[member call_mode] 设置为 [constant CALL_MODE_INSTANCE] æ—¶è¦ä½¿ç”¨çš„基本类型。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:21
-#, fuzzy
msgid ""
"The type to be used when [member call_mode] is set to [constant "
"CALL_MODE_BASIC_TYPE]."
-msgstr "当[member overlay]被设置为[constant OVERLAY_BREAKPOINT]时使用的背景。"
+msgstr ""
+"[member call_mode] 设置为 [constant CALL_MODE_BASIC_TYPE] 时使用的类型。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:24
msgid ""
"[code]call_mode[/code] determines the target object on which the method will "
"be called. See [enum CallMode] for options."
msgstr ""
+"[code]call_mode[/code] 决定了方法将被调用的目标对象。å‚阅[enum CallMode]的选"
+"项。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:27
-#, fuzzy
msgid "The name of the function to be called."
-msgstr "è¦æ‰§è¡Œçš„函数。"
+msgstr "è¦è°ƒç”¨çš„函数的å称。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:30
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:21
-#, fuzzy
msgid ""
"The node path to use when [member call_mode] is set to [constant "
"CALL_MODE_NODE_PATH]."
-msgstr "[member mode]为[constant MODE_DEPTH]时的挤出深度。"
+msgstr ""
+"[member call_mode] 设置为 [constant CALL_MODE_NODE_PATH] 时使用的节点路径。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:33
msgid ""
"The mode for RPC calls. See [method Node.rpc] for more details and [enum "
"RPCCallMode] for available options."
msgstr ""
+"RPC 调用的模å¼ã€‚有关更多详细信æ¯ï¼Œè¯·å‚阅 [method Node.rpc],有关å¯ç”¨é€‰é¡¹ï¼Œè¯·"
+"å‚阅 [enum RPCCallMode]。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:36
-#, fuzzy
msgid ""
"The singleton to call the method on. Used when [member call_mode] is set to "
"[constant CALL_MODE_SINGLETON]."
-msgstr "当[member overlay]设置为[constant OVERLAY_POSITION]时使用的背景。"
+msgstr ""
+"调用方法的å•例。当 [member call_mode] 设置为 [constant CALL_MODE_SINGLETON] "
+"时使用。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:39
msgid ""
@@ -75176,162 +75450,149 @@ msgid ""
"Can't be higher than the number of available default arguments in the "
"method's declaration."
msgstr ""
+"è°ƒç”¨å‡½æ•°æ—¶å°†ä½¿ç”¨çš„é»˜è®¤å‚æ•°çš„æ•°é‡ã€‚ä¸èƒ½å¤§äºŽæ–¹æ³•声明中å¯ç”¨é»˜è®¤å‚数的数é‡ã€‚"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:42
-#, fuzzy
msgid ""
"If [code]false[/code], call errors (e.g. wrong number of arguments) will be "
"ignored."
-msgstr "如果为[code]false[/code],快æ·é”®å°†è¢«ç¦ç”¨ã€‚"
+msgstr "如果[code]false[/code]ï¼Œè°ƒç”¨é”™è¯¯å°†è¢«å¿½ç•¥ï¼Œä¾‹å¦‚å‚æ•°æ•°é‡é”™è¯¯ã€‚"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:47
-#, fuzzy
msgid "The method will be called on this [Object]."
-msgstr "注册一个方法,当动作被æäº¤æ—¶å°†è¢«è°ƒç”¨ã€‚"
+msgstr "将在此 [Object] 上调用该方法。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:50
-#, fuzzy
msgid "The method will be called on the given [Node] in the scene tree."
-msgstr "节点在场景树中的路径。"
+msgstr "该方法将在场景树中的指定 [Node] 上调用。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:53
msgid ""
"The method will be called on an instanced node with the given type and "
"script."
-msgstr ""
+msgstr "该方法将在具有指定类型和脚本的实例化节点上调用。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:56
msgid "The method will be called on a GDScript basic type (e.g. [Vector2])."
-msgstr ""
+msgstr "该方法将在 GDScript 基本类型上调用,例如 [Vector2]。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:59
-#, fuzzy
msgid "The method will be called on a singleton."
-msgstr "注册一个方法,当动作被撤销时将被调用。"
+msgstr "该方法将在å•例上调用。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:62
msgid "The method will be called locally."
-msgstr ""
+msgstr "该方法将被本地调用。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:65
msgid "The method will be called remotely."
-msgstr ""
+msgstr "该方法将被远程调用。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:68
msgid "The method will be called remotely using an unreliable protocol."
-msgstr ""
+msgstr "该方法将使用ä¸å¯é çš„å议远程调用。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:71
-#, fuzzy
msgid "The method will be called remotely for the given peer."
-msgstr "返回给定对等体的远程端å£ã€‚"
+msgstr "该方法将被远程调用,用于给定的对等体。"
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml:74
-#, fuzzy
msgid ""
"The method will be called remotely for the given peer, using an unreliable "
"protocol."
-msgstr "使用ä¸å¯é çš„å议远程更改其他对等点(和本地)上的属性值。"
+msgstr "该方法将被远程调用,用于给定的对等体,使用一个ä¸å¯é çš„å议。"
#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:4
-#, fuzzy
msgid "A Visual Script node representing a function state."
-msgstr "一个å¯è§†åŒ–脚本节点,表示基本类型中的一个常é‡ã€‚"
+msgstr "一个Visual Script节点,表示函数状æ€ã€‚"
#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:7
msgid ""
"[VisualScriptFunctionState] is returned from [VisualScriptYield] and can be "
"used to resume a paused function call."
msgstr ""
+"[VisualScriptFunctionState]从[VisualScriptYield]返回,å¯ç”¨äºŽæ¢å¤æš‚åœçš„函数调"
+"用。"
#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:18
msgid ""
"Connects this [VisualScriptFunctionState] to a signal in the given object to "
"automatically resume when it's emitted."
msgstr ""
+"将此 [VisualScriptFunctionState] 连接到给定对象中的信å·ï¼Œä»¥åœ¨å®ƒè§¦å‘时自动æ¢"
+"å¤ã€‚"
#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:24
-#, fuzzy
msgid "Returns whether the function state is valid."
-msgstr "è¿”å›žè¯¥ç©ºé—´æ˜¯å¦æ˜¯æ´»åŠ¨çš„ã€‚"
+msgstr "è¿”å›žå‡½æ•°çŠ¶æ€æ˜¯å¦æœ‰æ•ˆã€‚"
#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml:31
msgid "Resumes the function to run from the point it was yielded."
-msgstr ""
+msgstr "æ¢å¤å‡½æ•°çš„è¿è¡Œï¼Œä»Žå®ƒè¢«yield返回的地方开始。"
#: modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml:4
#: modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml:7
-#, fuzzy
msgid "A Visual Script node returning a constant from [@GlobalScope]."
-msgstr "从 [@GlobalScope] 返回å•例的å¯è§†åŒ–脚本节点。"
+msgstr "从 [@GlobalScope] 返回常é‡çš„ Visual Script 节点。"
#: modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml:15
-#, fuzzy
msgid "The constant to be used."
-msgstr "常é‡çš„类型。"
+msgstr "è¦ä½¿ç”¨çš„常é‡ã€‚"
#: modules/visual_script/doc_classes/VisualScriptIndexGet.xml:4
-#, fuzzy
msgid "A Visual Script node for getting a value from an array or a dictionary."
-msgstr "从 [@GlobalScope] 返回å•例的å¯è§†åŒ–脚本节点。"
+msgstr "一个Visual Script节点,用于从数组或字典中获å–值。"
#: modules/visual_script/doc_classes/VisualScriptIndexGet.xml:7
msgid ""
"[VisualScriptIndexGet] will return the value stored in an array or a "
"dictionary under the given index."
-msgstr ""
+msgstr "[VisualScriptIndexGet]将返回存储在指定索引下的数组或字典的值。"
#: modules/visual_script/doc_classes/VisualScriptIndexSet.xml:4
-#, fuzzy
msgid "A Visual Script node for setting a value in an array or a dictionary."
-msgstr "一个å¯è§†åŒ–脚本节点,表示基本类型中的一个常é‡ã€‚"
+msgstr "一个Visual Script节点,用于设置数组或字典中的值。"
#: modules/visual_script/doc_classes/VisualScriptIndexSet.xml:7
msgid ""
"[VisualScriptIndexSet] will set the value stored in an array or a dictionary "
"under the given index to the provided new value."
msgstr ""
+"[VisualScriptIndexSet] 将指定索引下存储在数组或字典中的值设置为æä¾›çš„æ–°å€¼ã€‚"
#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:4
-#, fuzzy
msgid "A Visual Script node returning a state of an action."
-msgstr "从 [@GlobalScope] 返回å•例的å¯è§†åŒ–脚本节点。"
+msgstr "返回动作状æ€çš„å¯è§†åŒ–脚本节点。"
#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:7
msgid ""
"[VisualScriptInputAction] can be used to check if an action is pressed or "
"released."
-msgstr ""
+msgstr "[VisualScriptInputAction] å¯ç”¨äºŽæ£€æŸ¥æ“作是å¦è¢«æŒ‰ä¸‹æˆ–释放。"
#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:15
-#, fuzzy
msgid "Name of the action."
-msgstr "é‡åšä¸Šä¸€ä¸ªåŠ¨ä½œã€‚"
+msgstr "动作的å称。"
#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:18
-#, fuzzy
msgid "State of the action to check. See [enum Mode] for options."
-msgstr "è¦è®¡ç®—的函数。选项å‚阅[enum Function]。"
+msgstr "检查动作的状æ€ã€‚有关选项,请å‚阅 [enum Mode]。"
#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:23
-#, fuzzy
msgid "[code]True[/code] if action is pressed."
-msgstr "如果图åƒè¢«åŽ‹ç¼©ï¼Œè¿”å›ž[code]true[/code]。"
+msgstr "如果动作被按下为[code]True[/code] 。"
#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:26
-#, fuzzy
msgid "[code]True[/code] if action is released (i.e. not pressed)."
-msgstr "如果这个按钮当å‰è¢«æŒ‰ä¸‹ï¼Œåˆ™è¿”回[code]true[/code]。"
+msgstr "å¦‚æžœåŠ¨ä½œè¢«é‡Šæ”¾ï¼Œå³æœªæŒ‰ä¸‹ï¼Œä¸º[code]True[/code] 。"
#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:29
-#, fuzzy
msgid "[code]True[/code] on the frame the action was pressed."
-msgstr "如果 [code]true[/code],则更新远程节点的旋转。"
+msgstr "在动作被按下的帧上为[code]True[/code]。"
#: modules/visual_script/doc_classes/VisualScriptInputAction.xml:32
-#, fuzzy
msgid "[code]True[/code] on the frame the action was released."
-msgstr "如果[code]true[/code],TreeItem树项被折å ã€‚"
+msgstr "在动作被释放的帧上为[code]True[/code]。"
#: modules/visual_script/doc_classes/VisualScriptIterator.xml:4
msgid "Steps through items in a given input."
@@ -75365,51 +75626,43 @@ msgid "A Visual Script virtual class for in-graph editable nodes."
msgstr "图内å¯ç¼–辑节点的å¯è§†åŒ–脚本虚拟类。"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:7
-#, fuzzy
msgid ""
"A Visual Script virtual class that defines the shape and the default "
"behavior of the nodes that have to be in-graph editable nodes."
-msgstr "一个å¯è§†åŒ–脚本虚拟类,用于定义必须是图内å¯ç¼–辑节点的形状和默认行为。"
+msgstr ""
+"一个 Visual Script å¯è§†åŒ–类,用于定义必须是图形内å¯ç¼–辑节点的形状和默认行为。"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:18
-#, fuzzy
msgid "Adds an input port to the Visual Script node."
-msgstr "有脚本的å¯è§†åŒ–脚本节点。"
+msgstr "å°†è¾“å…¥ç«¯å£æ·»åŠ åˆ° Visual Script 节点。"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:27
-#, fuzzy
msgid "Adds an output port to the Visual Script node."
-msgstr "å‘å¯è§†åŒ–脚本的函数添加节点。"
+msgstr "å°†è¾“å‡ºç«¯å£æ·»åŠ åˆ° Visual Script 节点。"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:34
-#, fuzzy
msgid "Removes an input port from the Visual Script node."
-msgstr "移除直线上的所有点。"
+msgstr "从 Visual Script 节点中删除输入端å£ã€‚"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:41
-#, fuzzy
msgid "Removes an output port from the Visual Script node."
-msgstr "移除直线上的所有点。"
+msgstr "从 Visual Script 节点移除输出端å£ã€‚"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:49
-#, fuzzy
msgid "Sets the name of an input port."
-msgstr "通过索引获å–输入的å称。"
+msgstr "设置输入端å£çš„å称。"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:57
-#, fuzzy
msgid "Sets the type of an input port."
-msgstr "获å–轨é“的类型。"
+msgstr "设置输入端å£çš„类型。"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:65
-#, fuzzy
msgid "Sets the name of an output port."
-msgstr "通过索引获å–输入的å称。"
+msgstr "设置输出端å£çš„å称。"
#: modules/visual_script/doc_classes/VisualScriptLists.xml:73
-#, fuzzy
msgid "Sets the type of an output port."
-msgstr "获å–轨é“的类型。"
+msgstr "设置输出端å£çš„类型。"
#: modules/visual_script/doc_classes/VisualScriptLocalVar.xml:4
msgid "Gets a local variable's value."
@@ -75559,9 +75812,8 @@ msgid "Emitted when the available input/output ports are changed."
msgstr "当å¯ç”¨çš„输入/è¾“å‡ºç«¯å£æ›´æ”¹æ—¶è§¦å‘。"
#: modules/visual_script/doc_classes/VisualScriptOperator.xml:4
-#, fuzzy
msgid "A Visual Script node that performs an operation on two values."
-msgstr "å¯è§†åŒ–脚本节点,用于从项目列表中创建数组。"
+msgstr "一个Visual Script节点,对两个值执行æ“作。"
#: modules/visual_script/doc_classes/VisualScriptOperator.xml:7
msgid ""
@@ -75578,18 +75830,16 @@ msgstr ""
"- Data (variant): [code]result[/code]"
#: modules/visual_script/doc_classes/VisualScriptOperator.xml:19
-#, fuzzy
msgid ""
"The operation to be performed. See [enum Variant.Operator] for available "
"options."
-msgstr "è¦ä½¿ç”¨çš„è¿ç®—符。å‚阅[enum Operator]的选项。"
+msgstr "è¦æ‰§è¡Œçš„æ“ä½œç¬¦ã€‚æœ‰å…³å¯ç”¨é€‰é¡¹ï¼Œè¯·å‚阅 [enum Variant.Operator]。"
#: modules/visual_script/doc_classes/VisualScriptOperator.xml:22
-#, fuzzy
msgid ""
"The type of the values for this operation. See [enum Variant.Type] for "
"available options."
-msgstr "在比较中è¦ä½¿ç”¨çš„类型。å‚阅[enum ComparisonType]的选项。"
+msgstr "æ­¤æ“作符值的类型。有关å¯ç”¨é€‰é¡¹ï¼Œè¯·å‚阅 [enum Variant.Type]。"
#: modules/visual_script/doc_classes/VisualScriptPreload.xml:4
msgid "Creates a new [Resource] or loads one from the filesystem."
@@ -75614,205 +75864,201 @@ msgid "The [Resource] to load."
msgstr "è¦åŠ è½½çš„[Resource]资æºã€‚"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:4
-#, fuzzy
msgid "A Visual Script node returning a value of a property from an [Object]."
-msgstr "从 [@GlobalScope] 返回å•例的å¯è§†åŒ–脚本节点。"
+msgstr "一个Visual Script节点,从[Object]返回属性值。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:7
msgid ""
"[VisualScriptPropertyGet] can return a value of any property from the "
"current object or other objects."
-msgstr ""
+msgstr "[VisualScriptPropertyGet]å¯ä»¥ä»Žå½“å‰å¯¹è±¡æˆ–其他对象返回任何属性的值。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:15
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:18
-#, fuzzy
msgid ""
"The script to be used when [member set_mode] is set to [constant "
"CALL_MODE_INSTANCE]."
-msgstr "当[member overlay]设置为[constant OVERLAY_POSITION]时使用的背景。"
+msgstr ""
+"[member set_mode] 设置为 [constant CALL_MODE_INSTANCE] æ—¶è¦ä½¿ç”¨çš„脚本。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:18
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:21
-#, fuzzy
msgid ""
"The base type to be used when [member set_mode] is set to [constant "
"CALL_MODE_INSTANCE]."
-msgstr "当[member overlay]设置为[constant OVERLAY_POSITION]时使用的背景。"
+msgstr ""
+"[member set_mode] 设置为 [constant CALL_MODE_INSTANCE] æ—¶è¦ä½¿ç”¨çš„基本类型。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:21
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:24
-#, fuzzy
msgid ""
"The type to be used when [member set_mode] is set to [constant "
"CALL_MODE_BASIC_TYPE]."
-msgstr "当[member overlay]被设置为[constant OVERLAY_BREAKPOINT]时使用的背景。"
+msgstr ""
+"[member set_mode] 设置为 [constant CALL_MODE_BASIC_TYPE] 时使用的类型。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:24
msgid ""
"The indexed name of the property to retrieve. See [method Object."
"get_indexed] for details."
msgstr ""
+"è¦æ£€ç´¢çš„属性的索引å称。有关详细信æ¯ï¼Œè¯·å‚阅 [method Object.get_indexed]。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:27
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:30
-#, fuzzy
msgid ""
"The node path to use when [member set_mode] is set to [constant "
"CALL_MODE_NODE_PATH]."
-msgstr "[member mode]为[constant MODE_DEPTH]时的挤出深度。"
+msgstr ""
+"[member set_mode] 设置为 [constant CALL_MODE_NODE_PATH] æ—¶è¦ä½¿ç”¨çš„节点路径。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:30
-#, fuzzy
msgid ""
"The name of the property to retrieve. Changing this will clear [member "
"index]."
-msgstr "高度图数æ®çš„æ·±åº¦ã€‚更改此设置将调整 [member map_data] 的大å°ã€‚"
+msgstr "è¦æ£€ç´¢çš„属性的å称。更改此项将清除 [member index]。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:33
msgid ""
"[code]set_mode[/code] determines the target object from which the property "
"will be retrieved. See [enum CallMode] for options."
msgstr ""
+"[code]set_mode[/code] 决定从哪个目标对象中获å–属性。å‚阅[enum CallMode]的选"
+"项。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:38
-#, fuzzy
msgid "The property will be retrieved from this [Object]."
-msgstr "当属性从属性检查器中移除时触å‘。"
+msgstr "将从该 [Object] 中检索该属性。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:41
-#, fuzzy
msgid "The property will be retrieved from the given [Node] in the scene tree."
-msgstr "将属性åºåˆ—化并ä¿å­˜åˆ°åœºæ™¯æ–‡ä»¶ä¸­ï¼ˆé»˜è®¤ï¼‰ã€‚"
+msgstr "该属性将从场景树中的给定 [Node] 中检索。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:44
msgid ""
"The property will be retrieved from an instanced node with the given type "
"and script."
-msgstr ""
+msgstr "该属性将从具有指定类型和脚本的实例化节点中检索。"
#: modules/visual_script/doc_classes/VisualScriptPropertyGet.xml:47
msgid ""
"The property will be retrieved from a GDScript basic type (e.g. [Vector2])."
-msgstr ""
+msgstr "该属性将从 GDScript 基本类型中检索,例如 [Vector2]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:4
-#, fuzzy
msgid "A Visual Script node that sets a property of an [Object]."
-msgstr "用于注释脚本的å¯è§†åŒ–脚本节点。"
+msgstr "一个Visual Script节点,用于设置[Object]的属性。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:7
msgid ""
"[VisualScriptPropertySet] can set the value of any property from the current "
"object or other objects."
-msgstr ""
+msgstr "[VisualScriptPropertySet]å¯ä»¥è®¾ç½®å½“å‰å¯¹è±¡æˆ–其他对象的任何属性的值。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:15
-#, fuzzy
msgid ""
"The additional operation to perform when assigning. See [enum AssignOp] for "
"options."
-msgstr "è¦æ‰§è¡Œçš„函数。å‚阅[enum Function]的选项。"
+msgstr "èµ‹å€¼æ—¶è¦æ‰§è¡Œçš„é¢å¤–æ“作。å‚阅[enum AssignOp]的选项。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:27
msgid ""
"The indexed name of the property to set. See [method Object.set_indexed] for "
"details."
-msgstr ""
+msgstr "è¦è®¾ç½®çš„属性的索引å称。详è§[method Object.set_indexed]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:33
-#, fuzzy
msgid ""
"The name of the property to set. Changing this will clear [member index]."
-msgstr "高度图数æ®çš„æ·±åº¦ã€‚更改此设置将调整 [member map_data] 的大å°ã€‚"
+msgstr "è¦è®¾ç½®çš„属性的å称。改å˜è¿™ä¸ªå°†æ¸…除 [member index]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:36
msgid ""
"[code]set_mode[/code] determines the target object on which the property "
"will be set. See [enum CallMode] for options."
msgstr ""
+"[code]set_mode[/code] 决定了将被设置属性的目标对象。å‚阅[enum CallMode]的选"
+"项。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:41
-#, fuzzy
msgid "The property will be set on this [Object]."
-msgstr "该属性在编辑器的检查器中已ç»å‹¾é€‰ã€‚"
+msgstr "在此 [Object] 上设置该属性。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:44
-#, fuzzy
msgid "The property will be set on the given [Node] in the scene tree."
-msgstr "将属性åºåˆ—化并ä¿å­˜åˆ°åœºæ™¯æ–‡ä»¶ä¸­ï¼ˆé»˜è®¤ï¼‰ã€‚"
+msgstr "在场景树中指定的[Node]上设置该属性。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:47
msgid ""
"The property will be set on an instanced node with the given type and script."
-msgstr ""
+msgstr "在具有指定类型和脚本的实例化节点上设置该属性。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:50
msgid "The property will be set on a GDScript basic type (e.g. [Vector2])."
-msgstr ""
+msgstr "该属性将设置为 GDScript 基本类型,例如 [Vector2]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:53
msgid "The property will be assigned regularly."
-msgstr ""
+msgstr "该属性将定期分é…。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:56
msgid ""
"The value will be added to the property. Equivalent of doing [code]+=[/code]."
-msgstr ""
+msgstr "è¯¥å€¼å°†æ·»åŠ åˆ°è¯¥å±žæ€§ä¸­ã€‚ç›¸å½“äºŽåš [code]+=[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:59
msgid ""
"The value will be subtracted from the property. Equivalent of doing [code]-"
"=[/code]."
-msgstr ""
+msgstr "该值将从属性中å‡åŽ»ã€‚ç›¸å½“äºŽåš [code]-=[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:62
msgid ""
"The property will be multiplied by the value. Equivalent of doing [code]*=[/"
"code]."
-msgstr ""
+msgstr "è¯¥å±žæ€§å°†ä¹˜ä»¥è¯¥å€¼ã€‚ç›¸å½“äºŽåš [code]*=[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:65
msgid ""
"The property will be divided by the value. Equivalent of doing [code]/=[/"
"code]."
-msgstr ""
+msgstr "å±žæ€§å°†é™¤ä»¥è¯¥å€¼ã€‚ç›¸å½“äºŽåš [code]/=[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:68
msgid ""
"A modulo operation will be performed on the property and the value. "
"Equivalent of doing [code]%=[/code]."
-msgstr ""
+msgstr "对属性和值执行模è¿ç®—ã€‚ç›¸å½“äºŽåš [code]%=[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:71
msgid ""
"The property will be binarly shifted to the left by the given value. "
"Equivalent of doing [code]<<[/code]."
-msgstr ""
+msgstr "该属性将按给定值å‘å·¦äºŒè¿›åˆ¶ç§»åŠ¨ã€‚ç›¸å½“äºŽåš [code]<<[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:74
msgid ""
"The property will be binarly shifted to the right by the given value. "
"Equivalent of doing [code]>>[/code]."
-msgstr ""
+msgstr "该属性将按给定值å‘å³äºŒè¿›åˆ¶ç§»åŠ¨ã€‚ç›¸å½“äºŽåš [code]>>[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:77
msgid ""
"A binary [code]AND[/code] operation will be performed on the property. "
"Equivalent of doing [code]&=[/code]."
-msgstr ""
+msgstr "将对该属性执行二进制 [code]AND[/code] è¿ç®—ã€‚ç›¸å½“äºŽåš [code]&=[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:80
msgid ""
"A binary [code]OR[/code] operation will be performed on the property. "
"Equivalent of doing [code]|=[/code]."
-msgstr ""
+msgstr "对属性执行二进制 [code]OR[/code] æ“ä½œã€‚ç›¸å½“äºŽåš [code]|=[/code]。"
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml:83
msgid ""
"A binary [code]XOR[/code] operation will be performed on the property. "
"Equivalent of doing [code]^=[/code]."
-msgstr ""
+msgstr "对该属性执行二进制 [code]XOR[/code] æ“ä½œã€‚ç›¸å½“äºŽåš [code]^=[/code]。"
#: modules/visual_script/doc_classes/VisualScriptReturn.xml:4
msgid "Exits a function and returns an optional value."
@@ -75868,9 +76114,8 @@ msgstr "节点在场景树中的路径。"
#: modules/visual_script/doc_classes/VisualScriptSceneTree.xml:4
#: modules/visual_script/doc_classes/VisualScriptSceneTree.xml:7
-#, fuzzy
msgid "A Visual Script node for accessing [SceneTree] methods."
-msgstr "å¯è§†åŒ–脚本节点,它是æµç¨‹çš„分支。"
+msgstr "用于访问[SceneTree]方法的Visual Script节点。"
#: modules/visual_script/doc_classes/VisualScriptSelect.xml:4
msgid "Chooses between two input values."
@@ -75945,9 +76190,8 @@ msgid "The number of steps in the sequence."
msgstr "åºåˆ—中的步骤数。"
#: modules/visual_script/doc_classes/VisualScriptSubCall.xml:4
-#, fuzzy
msgid "Calls a method called [code]_subcall[/code] in this object."
-msgstr "在给定对象中创建一个å为 [code]signal_name[/code] 的新信å·ã€‚"
+msgstr "在此对象中调用å为 [code]_subcall[/code] 的方法。"
#: modules/visual_script/doc_classes/VisualScriptSubCall.xml:7
msgid ""
@@ -75955,10 +76199,12 @@ msgid ""
"current script. It will fail if the method doesn't exist or the provided "
"arguments are wrong."
msgstr ""
+"[VisualScriptSubCall] 将调用当å‰è„šæœ¬ä¸­å为 [code]_subcall[/code] 的方法。如果"
+"该方法ä¸å­˜åœ¨æˆ–æä¾›çš„傿•°é”™è¯¯ï¼Œå®ƒå°†å¤±è´¥ã€‚"
#: modules/visual_script/doc_classes/VisualScriptSubCall.xml:16
msgid "Called by this node."
-msgstr ""
+msgstr "由该节点调用。"
#: modules/visual_script/doc_classes/VisualScriptSwitch.xml:4
msgid "Branches program flow based on a given input's value."
@@ -75992,26 +76238,24 @@ msgstr ""
"- Sequence: [code]done[/code]"
#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml:4
-#, fuzzy
msgid "A Visual Script node that casts the given value to another type."
-msgstr "用于注释脚本的å¯è§†åŒ–脚本节点。"
+msgstr "一个Visual Script节点,将给定的值转æ¢ä¸ºå¦ä¸€ç§ç±»åž‹ã€‚"
#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml:7
msgid ""
"[VisualScriptTypeCast] will perform a type conversion to an [Object]-derived "
"type."
-msgstr ""
+msgstr "[VisualScriptTypeCast] 将执行到 [Object] 派生类型的类型转æ¢ã€‚"
#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml:15
msgid ""
"The target script class to be converted to. If none, only the [member "
"base_type] will be used."
-msgstr ""
+msgstr "è¦è½¬æ¢çš„目标脚本类。如果没有,将åªä½¿ç”¨[member base_type]。"
#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml:18
-#, fuzzy
msgid "The target type to be converted to."
-msgstr "è¦è§£æž„的类型。"
+msgstr "è¦è½¬æ¢ä¸ºçš„目标类型。"
#: modules/visual_script/doc_classes/VisualScriptVariableGet.xml:4
msgid "Gets a variable's value."
@@ -76082,82 +76326,77 @@ msgstr ""
"- Sequence: [code]exit[/code]"
#: modules/visual_script/doc_classes/VisualScriptYield.xml:4
-#, fuzzy
msgid "A Visual Script node used to pause a function execution."
-msgstr "用于调用内置函数的å¯è§†åŒ–脚本节点。"
+msgstr "一个Visual Script节点,用于暂åœå‡½æ•°çš„æ‰§è¡Œã€‚"
#: modules/visual_script/doc_classes/VisualScriptYield.xml:7
msgid ""
"[VisualScriptYield] will pause the function call and return "
"[VisualScriptFunctionState], which can be used to resume the function."
msgstr ""
+"[VisualScriptYield]将暂åœå‡½æ•°è°ƒç”¨å¹¶è¿”回[VisualScriptFunctionState],å¯ç”¨äºŽæ¢"
+"å¤å‡½æ•°ã€‚"
#: modules/visual_script/doc_classes/VisualScriptYield.xml:15
-#, fuzzy
msgid ""
"The mode to use for yielding. See [enum YieldMode] for available options."
-msgstr "è¦æ‰§è¡Œçš„函数。å‚阅[enum Function]的选项。"
+msgstr "用于yield返回的模å¼ã€‚å‚阅[enum YieldMode]中的å¯ç”¨é€‰é¡¹ã€‚"
#: modules/visual_script/doc_classes/VisualScriptYield.xml:18
-#, fuzzy
msgid "The time to wait when [member mode] is set to [constant YIELD_WAIT]."
-msgstr "当[member overlay]被设置为[constant OVERLAY_BREAKPOINT]时使用的背景。"
+msgstr "[member mode] 设置为 [constant YIELD_WAIT] 时的等待时间。"
#: modules/visual_script/doc_classes/VisualScriptYield.xml:23
msgid "Yields during an idle frame."
-msgstr ""
+msgstr "在空闲帧中的Yields。"
#: modules/visual_script/doc_classes/VisualScriptYield.xml:26
-#, fuzzy
msgid "Yields during a physics frame."
-msgstr "此帧期间的绘制调用数。"
+msgstr "物ç†å¸§æœŸé—´Yield。"
#: modules/visual_script/doc_classes/VisualScriptYield.xml:29
-#, fuzzy
msgid "Yields a function and waits the given time."
-msgstr "返回指定å称的动画节点。"
+msgstr "一个函数Yields并等待给定的时间。"
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:4
-#, fuzzy
msgid "A Visual Script node yielding for a signal."
-msgstr "用于注释脚本的å¯è§†åŒ–脚本节点。"
+msgstr "一个Visual Script节点yieldä¿¡å·ã€‚"
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:7
msgid ""
"[VisualScriptYieldSignal] will pause the function execution until the "
"provided signal is emitted."
-msgstr ""
+msgstr "[VisualScriptYieldSignal] 将暂åœå‡½æ•°æ‰§è¡Œï¼Œç›´åˆ°è§¦å‘æä¾›çš„ä¿¡å·ã€‚"
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:18
-#, fuzzy
msgid ""
"[code]call_mode[/code] determines the target object to wait for the signal "
"emission. See [enum CallMode] for options."
-msgstr "决定何时显示下划线。å‚è§[enum UnderlineMode]的选项。"
+msgstr ""
+"[code]call_mode[/code] 确定等待信å·å‘射的目标对象。有关选项,请å‚阅 [enum "
+"CallMode] 。"
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:24
-#, fuzzy
msgid "The signal name to be waited for."
-msgstr "触å‘的信å·ã€‚"
+msgstr "è¦ç­‰å¾…的信å·å称。"
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:29
msgid "A signal from this [Object] will be used."
-msgstr ""
+msgstr "将使用æ¥è‡ªæ­¤ [Object] 的信å·ã€‚"
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:32
msgid "A signal from the given [Node] in the scene tree will be used."
-msgstr ""
+msgstr "将使用æ¥è‡ªåœºæ™¯æ ‘中给定 [Node] 的信å·ã€‚"
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml:35
msgid "A signal from an instanced node with the given type will be used."
-msgstr ""
+msgstr "将使用æ¥è‡ªå…·æœ‰ç»™å®šç±»åž‹çš„实例节点的信å·ã€‚"
#: doc/classes/VisualServer.xml:4
msgid "Server for anything visible."
msgstr "任何å¯è§çš„东西的æœåŠ¡å™¨ã€‚"
#: doc/classes/VisualServer.xml:7
-#, fuzzy
msgid ""
"Server for anything visible. The visual server is the API backend for "
"everything visible. The whole scene system mounts on it to display.\n"
@@ -76186,34 +76425,31 @@ msgid ""
"viewport, or it needs to be the child of another canvas item that is "
"eventually attached to the canvas."
msgstr ""
-"任何å¯è§äº‹ç‰©çš„æœåŠ¡å™¨ã€‚æ¸²æŸ“æœåŠ¡å™¨æ˜¯æ‰€æœ‰å¯è§äº‹ç‰©çš„APIåŽç«¯ã€‚整个场景系统都安装在"
-"å®ƒä¸Šé¢æ¥æ˜¾ç¤ºã€‚\n"
-"渲染æœåŠ¡å™¨æ˜¯å®Œå…¨ä¸é€æ˜Žçš„,其内部结构完全是特定的实现,ä¸èƒ½è¢«è®¿é—®ã€‚\n"
-"渲染æœåС噍å¯ä»¥è¢«ç”¨æ¥å®Œå…¨ç»•过场景系统。\n"
-"èµ„æºæ˜¯ä½¿ç”¨[code]*_create[/code]函数创建的。\n"
-"所有对象都被绘制到视å£ä¸­ã€‚ä½ å¯ä»¥ä½¿ç”¨é™„在[SceneTree]上的[Viewport],或者你å¯ä»¥"
-"用[method viewport_create]自己创建一个。当使用自定义场景或画布时,需è¦ä½¿ç”¨"
+"任何å¯è§å¯¹è±¡çš„æœåŠ¡ã€‚VisualServer是所有å¯è§å¯¹è±¡çš„APIåŽç«¯ã€‚整个场景系统安装在它"
+"ä¸Šé¢æ¥æ˜¾ç¤ºã€‚\n"
+"VisualServer是完全ä¸é€æ˜Žçš„,它的内部结构的完全的具体实现ä¸èƒ½è¢«è®¿é—®ã€‚\n"
+"VisualServerå¯ä»¥ç”¨æ¥å®Œå…¨ç»•过场景系统。\n"
+"å¯ä½¿ç”¨[code]*_create[/code]函数创建资æºã€‚\n"
+"所有的对象都被绘制到视窗中。你å¯ä»¥ä½¿ç”¨é™„在[SceneTree]上的[Viewport],或者用"
+"[method viewport_create]自己创建一个。当使用自定义场景或画布时,需è¦ä½¿ç”¨"
"[method viewport_set_scenario]或[method viewport_attach_canvas]将场景或画布附"
-"加到视å£ä¸Šã€‚\n"
+"加到视窗上。\n"
"在3D中,所有的视觉对象都必须与一个场景相关è”。场景是世界的一个视觉表现。如果"
-"从一个正在è¿è¡Œçš„æ¸¸æˆä¸­è®¿é—®æ¸²æŸ“æœåŠ¡å™¨ï¼Œå¯ä»¥é€šè¿‡[method Node3D.get_world_3d]从"
-"场景树中的任何[Node3D]节点访问场景。å¦åˆ™ï¼Œå¯ä»¥ç”¨[method scenario_create]创建"
-"一个场景。\n"
-"类似地,在2D中,需è¦ä¸€ä¸ªç”»å¸ƒæ¥ç»˜åˆ¶æ‰€æœ‰çš„画布项目。\n"
-"在3D中,所有å¯è§çš„对象都是由一个资æºå’Œä¸€ä¸ªå®žä¾‹ç»„æˆçš„。一个资æºå¯ä»¥æ˜¯ä¸€ä¸ªç½‘"
-"æ ¼ã€ä¸€ä¸ªç²’å­ç³»ç»Ÿã€ä¸€ä¸ªå…‰æˆ–任何其他3D对象。为了使资æºå¯è§ï¼Œå¿…须使用[method "
-"instance_set_base]连接到一个实例。实例也必须使用[method "
-"instance_set_scenario]附加到场景中,以便å¯è§ã€‚\n"
+"从一个正在è¿è¡Œçš„æ¸¸æˆä¸­è®¿é—®è§†è§‰æœåŠ¡ï¼Œåœºæ™¯å¯ä»¥é€šè¿‡[method Spatial.get_world]从"
+"场景树中的任何[Spatial]节点访问。å¦å¤–,å¯ä»¥ç”¨[method scenario_create]创建一个"
+"场景。\n"
+"相类似地,在2D中,需è¦ä¸€ä¸ªç”»å¸ƒæ¥ç»˜åˆ¶æ‰€æœ‰çš„画布项目。\n"
+"在3D中,所有å¯è§çš„对象都是由资æºå’Œå®žä¾‹ç»„æˆã€‚资æºå¯ä»¥æ˜¯ç½‘æ ¼ã€ç²’å­ç³»ç»Ÿã€å…‰æˆ–ä»»"
+"何其他3D对象。为了使资æºå¯è§ï¼Œå¿…须使用[method instance_set_base]连接到一个实"
+"例。实例也必须使用[method instance_set_scenario]附加到场景中,以便å¯è§ã€‚\n"
"在2D中,所有å¯è§å¯¹è±¡éƒ½æ˜¯æŸç§å½¢å¼çš„画布项目。为了å¯è§ï¼Œä¸€ä¸ªç”»å¸ƒé¡¹éœ€è¦æ˜¯è¿žæŽ¥åˆ°"
-"视å£çš„画布的å­é¡¹ï¼Œæˆ–è€…å®ƒéœ€è¦æ˜¯æœ€ç»ˆè¿žæŽ¥åˆ°ç”»å¸ƒçš„å¦ä¸€ä¸ªç”»å¸ƒé¡¹çš„å­é¡¹ã€‚"
+"视窗的画布的å­é¡¹ï¼Œæˆ–è€…å®ƒéœ€è¦æ˜¯æœ€ç»ˆè¿žæŽ¥åˆ°ç”»å¸ƒçš„å¦ä¸€ä¸ªç”»å¸ƒé¡¹çš„å­é¡¹ã€‚"
#: doc/classes/VisualServer.xml:18
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/optimization/using_servers.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/optimization/"
-"using_servers.html"
+"https://docs.godotengine.org/en/3.4/tutorials/optimization/using_servers.html"
#: doc/classes/VisualServer.xml:28
msgid "Sets images to be rendered in the window margin."
@@ -76228,7 +76464,6 @@ msgstr ""
"black_bars_set_images])。"
#: doc/classes/VisualServer.xml:44
-#, fuzzy
msgid ""
"Creates a camera and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]camera_*[/code] "
@@ -76236,27 +76471,25 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个相机并将其添加到 RenderingServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 RID "
-"将用于所有 [code]camera_*[/code] RenderingServer 功能。\n"
-"å®Œæˆ RID åŽï¼Œæ‚¨å°†å¸Œæœ›ä½¿ç”¨ RenderingServer çš„ [method free_rid] 陿€æ–¹æ³•释放 "
-"RID。"
+"创建一个相机并将其添加到VisualServer中。它å¯ä»¥é€šè¿‡è¿”回的RID进行访问。这个RID"
+"将用于所有[code]camera_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œä½ å°†éœ€è¦ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释"
+"放RID。"
#: doc/classes/VisualServer.xml:53
-#, fuzzy
msgid ""
"Sets the cull mask associated with this camera. The cull mask describes "
"which 3D layers are rendered by this camera. Equivalent to [member Camera."
"cull_mask]."
msgstr ""
-"è®¾ç½®ä¸Žæ­¤æ‘„åƒæœºç›¸å…³çš„é®ç½©ã€‚é®ç½©æè¿°äº†å“ªäº›ä¸‰ç»´å›¾å±‚是由这个相机渲染的。等åŒäºŽ"
-"[member Camera3D.cull_mask]。"
+"设置与此相机相关的剔除é®ç½©ã€‚剔除é®ç½©æè¿°äº†æ­¤ç›¸æœºæ¸²æŸ“çš„ 3D 层。相当于[member "
+"Camera.cull_mask]。"
#: doc/classes/VisualServer.xml:61
-#, fuzzy
msgid ""
"Sets the environment used by this camera. Equivalent to [member Camera."
"environment]."
-msgstr "设置此相机所使用的环境。等åŒäºŽ[[member Camera3D.environment]。"
+msgstr "设置此相机所使用的环境。等åŒäºŽ[member Camera.environment]。"
#: doc/classes/VisualServer.xml:72
msgid ""
@@ -76272,33 +76505,30 @@ msgid ""
"projection. Objects remain the same size on the screen no matter how far "
"away they are."
msgstr ""
-"å°†æ‘„åƒæœºè®¾ç½®ä¸ºä½¿ç”¨æ­£äº¤æŠ•影,也称为正射投影。物体在å±å¹•ä¸Šä¿æŒç›¸åŒçš„尺寸,无论"
-"它们有多远。"
+"将相机设置为使用正交投影,也称为正射投影。物体在å±å¹•ä¸Šä¿æŒç›¸åŒçš„尺寸,无论它"
+"们有多远。"
#: doc/classes/VisualServer.xml:92
msgid ""
"Sets camera to use perspective projection. Objects on the screen becomes "
"smaller when they are far away."
-msgstr "å°†æ‘„åƒæœºè®¾ç½®ä¸ºä½¿ç”¨é€è§†æŠ•影。å±å¹•上的物体在远处时å˜å¾—æ›´å°ã€‚"
+msgstr "将相机设置为使用é€è§†æŠ•影。å±å¹•上的物体在远处时å˜å¾—æ›´å°ã€‚"
#: doc/classes/VisualServer.xml:100
msgid "Sets [Transform] of camera."
msgstr "设置相机的[Transform]。"
#: doc/classes/VisualServer.xml:108
-#, fuzzy
msgid ""
"If [code]true[/code], preserves the horizontal aspect ratio which is "
"equivalent to [constant Camera.KEEP_WIDTH]. If [code]false[/code], preserves "
"the vertical aspect ratio which is equivalent to [constant Camera."
"KEEP_HEIGHT]."
msgstr ""
-"如果[code]true[/code],ä¿ç•™æ°´å¹³é•¿å®½æ¯”,相当于[constant Camera3D.KEEP_WIDTH]。"
-"如果[code]false[/code],ä¿ç•™åž‚直长宽比,相当于[constant Camera3D."
-"KEEP_HEIGHT]。"
+"如果 [code]true[/code], ä¿ç•™æ°´å¹³é•¿å®½æ¯”,相当于 [constant Camera.KEEP_WIDTH]。"
+"如果[code]false[/code],ä¿ç•™åž‚直长宽比,相当于[constant Camera.KEEP_HEIGHT]。"
#: doc/classes/VisualServer.xml:114
-#, fuzzy
msgid ""
"Creates a canvas and returns the assigned [RID]. It can be accessed with the "
"RID that is returned. This RID will be used in all [code]canvas_*[/code] "
@@ -76306,67 +76536,64 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个画布并返回指定的[RID]。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RID将被用于所有的"
-"[code]canvas_*[/code] RenderingServer函数中。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]è¿™ä¸€é™æ€æ–¹æ³•释放RID。"
+"创建一个画布并返回指定的[RID]。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RIDå¯åœ¨æ‰€æœ‰"
+"[code]canvas_*[/code]VisualServer函数中使用。\n"
+"你一旦完æˆäº†RID处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
#: doc/classes/VisualServer.xml:125
-#, fuzzy
msgid "Adds a circle command to the [CanvasItem]'s draw commands."
-msgstr "清除[CanvasItem]并删除其中的所有命令。"
+msgstr "在 [CanvasItem] 的绘制命令中添加圆形指令。"
#: doc/classes/VisualServer.xml:133
-#, fuzzy
msgid ""
"If ignore is [code]true[/code], the VisualServer does not perform clipping."
-msgstr "如果[code]true[/code],标签使用BBCodeæ ¼å¼ã€‚"
+msgstr "如果ignore是[code]true[/code],VisualServerå°†ä¸ä¼šæ‰§è¡Œå‰ªè£ã€‚"
#: doc/classes/VisualServer.xml:145
-#, fuzzy
msgid "Adds a line command to the [CanvasItem]'s draw commands."
-msgstr "为 [CanvasItem] 设置新æè´¨ã€‚"
+msgstr "在 [CanvasItem] 的绘图命令中添加一æ¡ç›´çº¿æŒ‡ä»¤ã€‚"
#: doc/classes/VisualServer.xml:157
-#, fuzzy
msgid "Adds a mesh command to the [CanvasItem]'s draw commands."
-msgstr "为 [CanvasItem] 设置新æè´¨ã€‚"
+msgstr "在 [CanvasItem] 的绘图指令中加入网格指令。"
#: doc/classes/VisualServer.xml:167
msgid ""
"Adds a [MultiMesh] to the [CanvasItem]'s draw commands. Only affects its "
"aabb at the moment."
-msgstr ""
+msgstr "在[CanvasItem]的绘制指令中添加一个[MultiMesh]。目å‰åªå½±å“å…¶aabb。"
#: doc/classes/VisualServer.xml:184
msgid ""
"Adds a nine patch image to the [CanvasItem]'s draw commands.\n"
"See [NinePatchRect] for more explanation."
msgstr ""
+"在 [CanvasItem] 的绘制指令中添加ä¹å®«æ ¼å›¾åƒã€‚\n"
+"请å‚阅 [NinePatchRect] 。"
#: doc/classes/VisualServer.xml:195
msgid "Adds a particle system to the [CanvasItem]'s draw commands."
-msgstr ""
+msgstr "为[CanvasItem]的绘制指令添加粒å­ç³»ç»Ÿã€‚"
#: doc/classes/VisualServer.xml:208
-#, fuzzy
msgid "Adds a polygon to the [CanvasItem]'s draw commands."
-msgstr "清除[CanvasItem]并删除其中的所有命令。"
+msgstr "在 [CanvasItem] 的绘图指令中添加多边形。"
#: doc/classes/VisualServer.xml:219
msgid ""
"Adds a polyline, which is a line from multiple points with a width, to the "
"[CanvasItem]'s draw commands."
msgstr ""
+"在 [CanvasItem] 的绘制指令中添加多线段,多线段是指由多个点组æˆçš„具有一定宽度"
+"的线。"
#: doc/classes/VisualServer.xml:232
-#, fuzzy
msgid "Adds a primitive to the [CanvasItem]'s draw commands."
-msgstr "清除[CanvasItem]并删除其中的所有命令。"
+msgstr "å‘ [CanvasItem] 的绘图指令添加一个基本网格。"
#: doc/classes/VisualServer.xml:241
-#, fuzzy
msgid "Adds a rectangle to the [CanvasItem]'s draw commands."
-msgstr "为 [CanvasItem] 设置新æè´¨ã€‚"
+msgstr "在 [CanvasItem] 的绘图指令中添加矩形。"
#: doc/classes/VisualServer.xml:249
msgid ""
@@ -76374,28 +76601,27 @@ msgid ""
"This sets the extra_matrix uniform when executed. This affects the later "
"commands of the canvas item."
msgstr ""
+"在[CanvasItem]的绘图指令中添加[Transform2D]指令。\n"
+"这在执行时设置extra_matrix uniform 。这会影å“到画布项的åŽç»­æŒ‡ä»¤ã€‚"
#: doc/classes/VisualServer.xml:263
-#, fuzzy
msgid "Adds a textured rect to the [CanvasItem]'s draw commands."
-msgstr "为[BitmapFont]添加一个纹ç†ã€‚"
+msgstr "在 [CanvasItem] 的绘图指令中添加纹ç†çŸ©å½¢ã€‚"
#: doc/classes/VisualServer.xml:277
msgid ""
"Adds a texture rect with region setting to the [CanvasItem]'s draw commands."
-msgstr ""
+msgstr "在[CanvasItem]的绘制命令中添加带有区域设置的纹ç†çŸ©å½¢ã€‚"
#: doc/classes/VisualServer.xml:295
-#, fuzzy
msgid "Adds a triangle array to the [CanvasItem]'s draw commands."
-msgstr "为 [CanvasItem] 设置新æè´¨ã€‚"
+msgstr "为 [CanvasItem] 的绘图命令添加三角形组。"
#: doc/classes/VisualServer.xml:302
msgid "Clears the [CanvasItem] and removes all commands in it."
msgstr "清除[CanvasItem]并删除其中的所有命令。"
#: doc/classes/VisualServer.xml:308
-#, fuzzy
msgid ""
"Creates a new [CanvasItem] and returns its [RID]. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]canvas_item_*[/"
@@ -76403,34 +76629,31 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个画布并返回指定的[RID]。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RID将被用于所有的"
-"[code]canvas_*[/code] RenderingServer函数中。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]è¿™ä¸€é™æ€æ–¹æ³•释放RID。"
+"创建新的 [CanvasItem] 并返回其 [RID]。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RIDå¯ç”¨äºŽ"
+"所有[code]canvas_item_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†ä½ çš„RID处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
#: doc/classes/VisualServer.xml:317
-#, fuzzy
msgid "Sets clipping for the [CanvasItem]."
-msgstr "设置 [CanvasItem] 的索引。"
+msgstr "为[CanvasItem]设置剪è£ã€‚"
#: doc/classes/VisualServer.xml:326
msgid "Sets the [CanvasItem] to copy a rect to the backbuffer."
msgstr "设置 [CanvasItem] 以将矩形å¤åˆ¶åˆ°åŽå°ç¼“冲区。"
#: doc/classes/VisualServer.xml:335
-#, fuzzy
msgid "Defines a custom drawing rectangle for the [CanvasItem]."
-msgstr "设置 [CanvasItem] 的索引。"
+msgstr "为 [CanvasItem] 定义一个自定义的绘图矩形。"
#: doc/classes/VisualServer.xml:343
msgid ""
"Enables the use of distance fields for GUI elements that are rendering "
"distance field based fonts."
-msgstr ""
+msgstr "为正在渲染基于è·ç¦»å­—段的字体的GUI元素,å¯ç”¨è·ç¦»å­—段。"
#: doc/classes/VisualServer.xml:351
-#, fuzzy
msgid "Sets [CanvasItem] to be drawn behind its parent."
-msgstr "如果[code]true[/code],则对象在其父对象åŽé¢ç»˜åˆ¶ã€‚"
+msgstr "å°† [CanvasItem] 设置为在其父项åŽé¢ç»˜åˆ¶ã€‚"
#: doc/classes/VisualServer.xml:359
msgid "Sets the index for the [CanvasItem]."
@@ -76440,45 +76663,43 @@ msgstr "设置 [CanvasItem] 的索引。"
#: doc/classes/VisualServer.xml:549
msgid ""
"The light mask. See [LightOccluder2D] for more information on light masks."
-msgstr "光线é®ç½©ã€‚关于其更多信æ¯ï¼Œè¯·å‚è§[LightOccluder2D]。"
+msgstr "光线é®ç½©ã€‚关于其更多信æ¯ï¼Œè¯·å‚阅[LightOccluder2D]。"
#: doc/classes/VisualServer.xml:375
msgid "Sets a new material to the [CanvasItem]."
msgstr "为 [CanvasItem] 设置新æè´¨ã€‚"
#: doc/classes/VisualServer.xml:383
-#, fuzzy
msgid "Sets the color that modulates the [CanvasItem] and its children."
-msgstr "设置画布ç¯çš„阴影颜色。"
+msgstr "设置调制 [CanvasItem] åŠå…¶å­ä»£çš„颜色。"
#: doc/classes/VisualServer.xml:391
msgid ""
"Sets the parent for the [CanvasItem]. The parent can be another canvas item, "
"or it can be the root canvas that is attached to the viewport."
msgstr ""
+"设置[CanvasItem]的父级。父级å¯ä»¥æ˜¯å¦ä¸€ä¸ªç”»å¸ƒé¡¹ç›®ï¼Œä¹Ÿå¯ä»¥æ˜¯è¿žæŽ¥åˆ°è§†çª—的根画"
+"布。"
#: doc/classes/VisualServer.xml:399
-#, fuzzy
msgid "Sets the color that modulates the [CanvasItem] without children."
-msgstr "设置画布ç¯çš„阴影颜色。"
+msgstr "设置在没有å­ä»£çš„æƒ…况下调制 [CanvasItem] 的颜色。"
#: doc/classes/VisualServer.xml:407
msgid "Sets if [CanvasItem]'s children should be sorted by y-position."
-msgstr ""
+msgstr "设置 [CanvasItem] çš„å­ä»£æ˜¯å¦åº”按 y åæ ‡æŽ’åºã€‚"
#: doc/classes/VisualServer.xml:415
-#, fuzzy
msgid "Sets the [CanvasItem]'s [Transform2D]."
-msgstr "设置画布ç¯çš„ [Transform2D]。"
+msgstr "设置 [CanvasItem] 的 [Transform2D]。"
#: doc/classes/VisualServer.xml:423
msgid "Sets if the [CanvasItem] uses its parent's material."
msgstr "设置 [CanvasItem] 是å¦ä½¿ç”¨å…¶çˆ¶çº§çš„æè´¨ã€‚"
#: doc/classes/VisualServer.xml:431
-#, fuzzy
msgid "Sets if the canvas item (including its children) is visible."
-msgstr "如果[CanvasItem]当å‰å¯è§ï¼Œåˆ™éšè—它。"
+msgstr "设置画布项是å¦å¯è§ï¼ŒåŒ…括其å­ä»£ã€‚"
#: doc/classes/VisualServer.xml:439
msgid ""
@@ -76499,7 +76720,6 @@ msgid ""
msgstr "将画布ç¯è¿žæŽ¥åˆ°ç”»å¸ƒä¸Š,并将其从以å‰çš„画布中å–出。"
#: doc/classes/VisualServer.xml:461
-#, fuzzy
msgid ""
"Creates a canvas light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all "
@@ -76507,9 +76727,9 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个canvas light并将其添加到RenderingServer。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。"
-"这个RID将在所有[code]canvas_light_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
+"创建画布ç¯å¹¶å°†å…¶æ·»åŠ åˆ° VisualServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 RID å¯ç”¨äºŽ"
+"所有 [code]canvas_light_*[/code] VisualServer 函数。\n"
+"å®Œæˆ RID 处ç†åŽï¼Œå¯ä½¿ç”¨ VisualServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。"
#: doc/classes/VisualServer.xml:470
msgid ""
@@ -76517,7 +76737,6 @@ msgid ""
msgstr "将光鮿Œ¡ç‰©æ·»åŠ åˆ°ç”»å¸ƒä¸Š,并将其从之å‰çš„画布中移除。"
#: doc/classes/VisualServer.xml:476
-#, fuzzy
msgid ""
"Creates a light occluder and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all "
@@ -76525,10 +76744,9 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个光é®è”½å™¨å¹¶å°†å…¶æ·»åŠ åˆ°RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这"
-"个RID将在所有[code]canvas_light_ocluder_*[/code] RenderingServer函数中使"
-"用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
+"创建ç¯å…‰é®æŒ¡å™¨å¹¶å°†å…¶æ·»åŠ åˆ°VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RIDå¯"
+"用于所有[code]canvas_light_ocluder_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†RID处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
#: doc/classes/VisualServer.xml:485
msgid "Enables or disables light occluder."
@@ -76563,7 +76781,7 @@ msgid ""
"The binary mask used to determine which layers this canvas light's shadows "
"affects. See [LightOccluder2D] for more information on light masks."
msgstr ""
-"用于确定此画布ç¯å…‰é˜´å½±å½±å“哪些图层的二进制蒙版。有关光é®ç½©çš„æ›´å¤šä¿¡æ¯ï¼Œè¯·å‚è§ "
+"用于确定此画布ç¯å…‰é˜´å½±å½±å“哪些图层的二进制蒙版。有关光é®ç½©çš„æ›´å¤šä¿¡æ¯ï¼Œè¯·å‚阅 "
"[LightOccluder2D]。"
#: doc/classes/VisualServer.xml:566
@@ -76601,9 +76819,8 @@ msgid ""
msgstr "设置画布ç¯çš„é˜´å½±è¿‡æ»¤å™¨ï¼Œè¯¦è§ [enum CanvasLightShadowFilter] 。"
#: doc/classes/VisualServer.xml:622
-#, fuzzy
msgid "Sets the length of the shadow's gradient."
-msgstr "返回音频æµçš„长度,å•ä½ä¸ºç§’。"
+msgstr "设置阴影æ¸å˜çš„长度。"
#: doc/classes/VisualServer.xml:630
msgid "Smoothens the shadow. The lower, the smoother."
@@ -76633,7 +76850,6 @@ msgstr ""
"[member Light2D.range_z_max]。"
#: doc/classes/VisualServer.xml:669
-#, fuzzy
msgid ""
"Creates a new light occluder polygon and adds it to the VisualServer. It can "
"be accessed with the RID that is returned. This RID will be used in all "
@@ -76641,10 +76857,9 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"åˆ›å»ºä¸€ä¸ªæ–°çš„å…‰é®æŒ¡å¤šè¾¹å½¢å¹¶å°†å…¶æ·»åŠ åˆ° RenderingServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问"
-"它。此 RID 将用于所有 [code]canvas_occluder_polygon_*[/code] RenderingServer "
-"函数。\n"
-"ä½ å¯ä»¥ä½¿ç”¨ RenderingServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。"
+"创建新的光é®è”½å™¨å¤šè¾¹å½¢å¹¶å°†å…¶æ·»åŠ åˆ°VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚è¿™"
+"个RIDå¯ç”¨äºŽæ‰€æœ‰[code]canvas_occluder_polygon_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†RID处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
#: doc/classes/VisualServer.xml:678
msgid ""
@@ -76671,7 +76886,6 @@ msgid "Modulates all colors in the given canvas."
msgstr "调制给定画布中的所有颜色。"
#: doc/classes/VisualServer.xml:718
-#, fuzzy
msgid ""
"Creates a directional light and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID can be used in most "
@@ -76681,20 +76895,20 @@ msgid ""
"To place in a scene, attach this directional light to an instance using "
"[method instance_set_base] using the returned RID."
msgstr ""
-"åˆ›å»ºä¸€ä¸ªæ–¹å‘æ€§ç¯å…‰å¹¶å°†å…¶æ·»åŠ åˆ°RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。"
-"这个RIDå¯ä»¥åœ¨å¤§å¤šæ•°[code]light_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•æ¥é‡Šæ”¾RID。\n"
-"è¦æ”¾ç½®åœ¨åœºæ™¯ä¸­ï¼Œåº”使用返回的RID,用[method instance_set_base]把这个定å‘ç¯é™„加"
-"到一个实例上。"
+"创建定å‘ç¯å¹¶å°†å…¶æ·»åŠ åˆ°VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RIDå¯ç”¨äºŽ"
+"大多数[code]light_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放"
+"RID。\n"
+"è¦åœ¨åœºæ™¯ä¸­æ”¾ç½®ï¼Œä½¿ç”¨è¿”回的RID,用[method instance_set_base]将这个定å‘ç¯é™„加到"
+"一个实例上。"
#: doc/classes/VisualServer.xml:728
msgid ""
"Draws a frame. [i]This method is deprecated[/i], please use [method "
"force_draw] instead."
-msgstr ""
+msgstr "绘制一帧。[i]此方法已被废弃[/i],请使用[method force_draw]代替。"
#: doc/classes/VisualServer.xml:734
-#, fuzzy
msgid ""
"Creates an environment and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all "
@@ -76702,20 +76916,19 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个环境并将其添加到RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这个RID"
-"将在所有[code]environment_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•æ¥é‡Šæ”¾RID。"
+"创建一个环境并将其添加到VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RIDå¯åœ¨"
+"所有[code]environment_*[/code]VisualServer函数中使用。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
#: doc/classes/VisualServer.xml:747
msgid ""
"Sets the values to be used with the \"Adjustment\" post-process effect. See "
"[Environment] for more details."
-msgstr "设置用于 \"调整 \"åŽå¤„ç†æ•ˆæžœçš„æ•°å€¼ã€‚å‚è§[Environment]以了解更多细节。"
+msgstr "设置用于 \"调整 \"åŽå¤„ç†æ•ˆæžœçš„æ•°å€¼ã€‚å‚阅[Environment]以了解更多细节。"
#: doc/classes/VisualServer.xml:757
-#, fuzzy
msgid "Sets the ambient light parameters. See [Environment] for more details."
-msgstr "设置用于场景雾化的å˜é‡ã€‚更多细节è§[Environment]。"
+msgstr "è®¾ç½®çŽ¯å¢ƒå…‰å‚æ•°ã€‚å‚阅[Environment]。"
#: doc/classes/VisualServer.xml:765
msgid ""
@@ -76738,19 +76951,16 @@ msgid "Sets the maximum layer to use if using Canvas background mode."
msgstr "如果使用画布背景模å¼ï¼Œè®¾ç½®è¦ä½¿ç”¨çš„æœ€å¤§å±‚数。"
#: doc/classes/VisualServer.xml:801
-#, fuzzy
msgid ""
"Sets the values to be used with the \"DoF Far Blur\" post-process effect. "
"See [Environment] for more details."
-msgstr "设置用于 \"调整 \"åŽå¤„ç†æ•ˆæžœçš„æ•°å€¼ã€‚å‚è§[Environment]以了解更多细节。"
+msgstr "设置用于 \"DoF Far Blur\" åŽæœŸå¤„ç†æ•ˆæžœçš„æ•°å€¼ã€‚å‚阅[Environment]。"
#: doc/classes/VisualServer.xml:813
-#, fuzzy
msgid ""
"Sets the values to be used with the \"DoF Near Blur\" post-process effect. "
"See [Environment] for more details."
-msgstr ""
-"设置用于 \"tonemap \"åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚å‚è§[Environment]以了解更多细节。"
+msgstr "设置用于 \"DoF Near Blur\" åŽå¤„ç†æ•ˆæžœçš„æ•°å€¼ã€‚å‚阅[Environment]。"
#: doc/classes/VisualServer.xml:824
msgid ""
@@ -76762,73 +76972,69 @@ msgstr "设置用于场景雾化的å˜é‡ã€‚更多细节è§[Environment]。"
msgid ""
"Sets the variables to be used with the fog depth effect. See [Environment] "
"for more details."
-msgstr "设置用于雾化深度效果的å˜é‡ã€‚å‚è§[Environment]以了解更多细节。"
+msgstr "设置用于雾化深度效果的å˜é‡ã€‚å‚阅[Environment]以了解更多细节。"
#: doc/classes/VisualServer.xml:848
msgid ""
"Sets the variables to be used with the fog height effect. See [Environment] "
"for more details."
-msgstr "设置用于雾化高度效果的å˜é‡ã€‚å‚è§[Environment]以了解更多细节。"
+msgstr "设置用于雾化高度效果的å˜é‡ã€‚å‚阅[Environment]以了解更多细节。"
-#: doc/classes/VisualServer.xml:865
-#, fuzzy
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
-msgstr ""
-"设置用于 \"tonemap \"åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚å‚è§[Environment]以了解更多细节。"
+msgstr "设置用于 \"glow\" åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚å‚阅[Environment]。"
-#: doc/classes/VisualServer.xml:873
-#, fuzzy
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
"当使用[i]BGMode[/i]天空时,设置[Sky]作为环境的背景。相当于[member "
-"Environment.sky]。"
+"Environment.background_sky]。"
-#: doc/classes/VisualServer.xml:881
-#, fuzzy
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-"为背景[Sky]设置一个自定义视场。相当于[member Environment.sky_custom_fov]。"
+"为背景 [Sky] 设置自定义字段。相当于 [member Environment."
+"background_sky_custom_fov]。"
-#: doc/classes/VisualServer.xml:889
-#, fuzzy
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-"设置以 [Basis] 表示的背景 [Sky] 的旋转。相当于[member Environment."
-"sky_rotation],其中旋转å‘é‡ç”¨äºŽæž„造[Basis]。"
+"设置背景[Sky]的旋转,以[Basis]表示。相当于[member Environment."
+"background_sky_orientation]。"
-#: doc/classes/VisualServer.xml:908
-#, fuzzy
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
-msgstr "设置用于 \"å±å¹•空间åå°„ \"åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚更多细节è§[Environment]。"
+msgstr ""
+"设置用于 \"å±å¹•空间环境é®è”½ï¼ˆSSAO)\"åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚å‚阅[Environment]。"
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr "设置用于 \"å±å¹•空间åå°„ \"åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚更多细节è§[Environment]。"
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-"设置用于 \"tonemap \"åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚å‚è§[Environment]以了解更多细节。"
+"设置用于 \"tonemap \"åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚å‚阅[Environment]以了解更多细节。"
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr "删除缓冲区并清除测试立方体。"
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
@@ -76836,28 +77042,27 @@ msgstr ""
"å½“å‡½æ•°è¢«è°ƒç”¨æ—¶ï¼Œå¼ºåˆ¶ç»˜åˆ¶ä¸€ä¸ªæ¡†æž¶ã€‚ç»˜åˆ¶ä¸€ä¸ªæ¡†æž¶ä¼šæ›´æ–°æ‰€æœ‰è¢«è®¾ç½®ä¸ºè¦æ›´æ–°çš„"
"[Viewport]。使用时è¦ç‰¹åˆ«å°å¿ƒã€‚"
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr "åŒæ­¥çº¿ç¨‹ã€‚"
-#: doc/classes/VisualServer.xml:963
-#, fuzzy
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
-msgstr "å°è¯•释放 RenderingServer 中的对象。"
+msgstr "å°è¯•释放 VisualServer 中的对象。"
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr "返回特定信æ¯ï¼Œè¯·å‚阅 [enum RenderInfo] 。"
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr "返回测试立方体的ID。如果ä¸å­˜åœ¨ï¼Œåˆ™åˆ›å»ºä¸€ä¸ªã€‚"
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr "返回测试纹ç†çš„id。如果ä¸å­˜åœ¨ï¼Œåˆ™åˆ›å»ºä¸€ä¸ªã€‚"
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -76867,7 +77072,7 @@ msgstr ""
"返回视频适é…器的å称(例如:\"GeForce GTX 1080/PCIe/SSE2\")。\n"
"[b]注æ„:[/b]当è¿è¡Œä¸€ä¸ªæ— å¤´æˆ–æœåС噍坿‰§è¡Œæ–‡ä»¶æ—¶ï¼Œè¿™ä¸ªå‡½æ•°è¿”回一个空字符串。"
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
@@ -76876,12 +77081,11 @@ msgstr ""
"返回视频适é…器的供应商(例如,\"NVIDIA Corporation\")。\n"
"[b]注æ„:[/b] 当è¿è¡Œæ— å¤´æˆ–æœåС噍坿‰§è¡Œæ–‡ä»¶æ—¶ï¼Œè¯¥å‡½æ•°è¿”回一个空字符串。"
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr "返回白色纹ç†çš„id。如果ä¸å­˜åœ¨ï¼Œåˆ™åˆ›å»ºä¸€ä¸ªã€‚"
-#: doc/classes/VisualServer.xml:1008
-#, fuzzy
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -76891,171 +77095,171 @@ msgid ""
"To place in a scene, attach this GI probe to an instance using [method "
"instance_set_base] using the returned RID."
msgstr ""
-"创建一个å射探针并将其添加到RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这"
-"个RID将在所有[code]reflection_probe_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
-"为了放置在场景中,使用返回的RID,用[method instance_set_base]将这个å射探针附"
-"加到一个实例上。"
+"创建 GI 探针并将其添加到 VisualServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 RID å¯ç”¨"
+"于所有 [code]gi_probe_*[/code] VisualServer 函数。\n"
+"å®Œæˆ RID 处ç†åŽï¼Œå¯ä½¿ç”¨ VisualServer çš„ [method free_rid] 陿€æ–¹æ³•释放 "
+"RID。\n"
+"è¦æ”¾ç½®åœ¨åœºæ™¯ä¸­ï¼Œè¯·ä½¿ç”¨è¿”回的 RID, 使用 [method instance_set_base] 将此 GI 探"
+"针附加到实例。"
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
+"返回GI探针的å置值。å置是用æ¥é¿å…è‡ªæˆ‘é®æŒ¡çš„。相当于[member GIProbeData."
+"bias]。"
-#: doc/classes/VisualServer.xml:1024
-#, fuzzy
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
-msgstr "返回包å«å½“å‰å¸§ä¸­æ‰€æœ‰æ´»åŠ¨ç²’å­çš„轴对é½è¾¹ç•Œç›’。"
+msgstr "返回覆盖GI探针全部范围的轴对é½çš„边界框。"
-#: doc/classes/VisualServer.xml:1031
-#, fuzzy
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
-msgstr "æ¢å¤[method get_state]ä¿å­˜çš„状æ€ã€‚"
+msgstr "返回由[method gi_probe_set_cell_size]设置的å•元大å°ã€‚"
-#: doc/classes/VisualServer.xml:1038
-#, fuzzy
+#: doc/classes/VisualServer.xml:1039
msgid "Returns the data used by the GI probe."
-msgstr "返回分é…给该区域的空间。"
+msgstr "返回GI探针所使用的数æ®ã€‚"
-#: doc/classes/VisualServer.xml:1045
-#, fuzzy
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
-msgstr "设置此相机所使用的环境。等åŒäºŽ[[member Camera3D.environment]。"
+msgstr "返回该GI探针的动æ€èŒƒå›´è®¾ç½®ã€‚相当于[member GIProbe.dynamic_range]。"
-#: doc/classes/VisualServer.xml:1052
-#, fuzzy
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
-msgstr "设置爆炸率。相当于[member GPUParticles3D.explosiveness]。"
+msgstr "返回这个GI探针的能é‡ä¹˜æ•°ã€‚相当于[member GIProbe.energy]。"
-#: doc/classes/VisualServer.xml:1059
-#, fuzzy
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
-msgstr "è®¾ç½®å®žä¾‹çš„ä¸–ç•Œç©ºé—´å˜æ¢ã€‚ç­‰åŒäºŽ[member Node3D.transform]。"
+msgstr "返回该GI探针的法线å置。相当于[member GIProbe.normal_bias]。"
-#: doc/classes/VisualServer.xml:1066
-#, fuzzy
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
-msgstr "设置爆炸率。相当于[member GPUParticles3D.explosiveness]。"
+msgstr "返回这个GI探针的传播值。相当于[member GIProbe.propagation]。"
-#: doc/classes/VisualServer.xml:1073
-#, fuzzy
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
-msgstr "返回由[方法get_closest_point]返回的点的法线。"
+msgstr "返回由[method gi_probe_set_to_cell_xform]è®¾ç½®çš„å˜æ¢ã€‚"
-#: doc/classes/VisualServer.xml:1080
-#, fuzzy
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-"如果预加载器包å«ä¸€ä¸ªä¸Ž[code]name[/code]相关的资æºï¼Œåˆ™è¿”回[code]true[/code]。"
+"如果与此GI探针相关的数æ®è¢«åŽ‹ç¼©ï¼Œè¿”å›ž[code]true[/code]。相当于[member GIProbe."
+"compress]。"
-#: doc/classes/VisualServer.xml:1087
-#, fuzzy
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-"如果 [code]true[/code],å射将忽略天空因素。等效于 [member ReflectionProbe."
-"interior]。"
+"如果 GI 探针设置为内部,则返回 [code]true[/code],这æ„味ç€å®ƒä¸è€ƒè™‘天空光。相"
+"当于[member GIProbe.interior]。"
-#: doc/classes/VisualServer.xml:1095
-#, fuzzy
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
-msgstr "设置è¦ä½¿ç”¨çš„绘制次数。等åŒäºŽ[member GPUParticles3D.draw_passes]。"
+msgstr "设置å置值以é¿å…è‡ªé®æŒ¡ã€‚相当于[member GIProbe.bias]。"
-#: doc/classes/VisualServer.xml:1103
-#, fuzzy
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
-msgstr "返回包å«å½“å‰å¸§ä¸­æ‰€æœ‰æ´»åŠ¨ç²’å­çš„轴对é½è¾¹ç•Œç›’。"
+msgstr "设置覆盖 GI 探针范围的轴对é½è¾¹ç•Œæ¡†ã€‚"
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
-msgstr ""
+msgstr "设置 GI 探针内å•个å•元的大å°ã€‚"
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
+"设置GI探针数æ®çš„压缩设置。压缩åŽçš„æ•°æ®å°†å ç”¨æ›´å°‘的空间,但å¯èƒ½çœ‹èµ·æ¥æ›´ç³Ÿç³•。"
+"相当于[member GIProbe.compress]。"
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
+"设置用于照明计算的GI探针的数æ®ã€‚通常这是在[GIProbe]节点内部创建和调用的。你ä¸"
+"应该å°è¯•自己设置。"
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
+"设定GI探针的动æ€èŒƒå›´ã€‚动æ€èŒƒå›´è®¾å®šäº†ç¯å…‰çš„亮度é™åˆ¶ã€‚较å°çš„范围å¯ä»¥æ•æ‰åˆ°æ›´å¤š"
+"的细节,但是é™åˆ¶äº†ç¯å…‰çš„亮度。相当于[member GIProbe.dynamic_range]。"
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
+"设置该GI探针的能é‡ä¹˜æ•°ã€‚较高的能é‡ä½¿GI探针的间接光更亮。相当于[member "
+"GIProbe.energy]。"
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
+"设置该GI探针的内部值。设置为内部的GI探针在计算照明时ä¸åŒ…括天空。相当于"
+"[member GIProbe.internal]。"
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
+"设置该GI探针的法线å置。法线å置的行为类似于其他形å¼çš„åç½®ï¼Œå¯æœ‰åŠ©äºŽå‡å°‘自我"
+"鮿Œ¡ã€‚相当于[member GIProbe.normal_bias]。"
-#: doc/classes/VisualServer.xml:1167
-#, fuzzy
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
-msgstr "设置ç¯å…‰çº¹ç†çš„åç§»é‡ã€‚ç­‰åŒäºŽ[member Light2D.offset]。"
+msgstr "设置光在这个GI探针中的传播。相当于[member GIProbe.propagation]。"
-#: doc/classes/VisualServer.xml:1175
-#, fuzzy
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
-msgstr "设置给定形状所有者的[Transform]。"
+msgstr "为这个GI探针设置å•å…ƒ[Transform]。"
-#: doc/classes/VisualServer.xml:1181
-#, fuzzy
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-"如果对RenderingServer的数æ®è¿›è¡Œäº†ä¿®æ”¹ï¼Œåˆ™è¿”回[code]true[/code]。如果å‘生这ç§"
-"情况,通常会调用[method force_draw]。"
+"如果VisualServer的数æ®è¢«æ›´æ”¹ï¼Œåˆ™è¿”回[code]true[/code]。如果å‘ç”Ÿè¿™ç§æƒ…况,通常"
+"会调用[method draw]。"
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr "还没有实现。总是返回[code]false[/code]。"
-#: doc/classes/VisualServer.xml:1195
-#, fuzzy
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -77064,37 +77268,35 @@ msgid ""
"[code]skinning_fallback[/code] in case the hardware doesn't support the "
"default GPU skinning process."
msgstr ""
-"如果æ“ä½œç³»ç»Ÿæ”¯æŒæŸé¡¹åŠŸèƒ½ï¼Œåˆ™è¿”å›ž[code]true[/code]。功能å¯èƒ½æ˜¯[code]s3tc[/"
-"code],[code]etc[/code],[code]etc2[/code]和[code]pvrtc[/code]。"
+"如果æ“ä½œç³»ç»Ÿæ”¯æŒæŸé¡¹åŠŸèƒ½ï¼Œåˆ™è¿”å›ž[code]true[/code]。特性å¯èƒ½æ˜¯[code]s3tc[/"
+"code], [code]etc[/code], [code]etc2[/code], [code]pvrtc[/code] 和 "
+"[code]skinning_fallback[/code]。\n"
+"当使用GLES2æ¸²æŸ“æ—¶ï¼Œåœ¨ç¡¬ä»¶ä¸æ”¯æŒé»˜è®¤çš„GPU蒙皮过程的情况下,返回[code]true[/"
+"code]与[code]skinning_fallback[/code]。"
-#: doc/classes/VisualServer.xml:1205
-#, fuzzy
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-"设置[ImmediateGeometry3D]的内部结构,为绘图åšå‡†å¤‡ã€‚相当于[method "
-"ImmediateGeometry3D.begin]。"
+"设置[ImmediateGeometry]的内部结构,为绘图åšå‡†å¤‡ã€‚相当于[method "
+"ImmediateGeometry.begin]。"
-#: doc/classes/VisualServer.xml:1212
-#, fuzzy
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-"清除在[method immediate_begin]和[method immediate_end]之间设置的一切。相当于"
-"[method ImmediateGeometry3D.clear]。"
+"清除在 [methodimmediate_begin] 和 [methodimmediate_end] 之间设置的所有内容。"
+"等效于 [method ImmediateGeometry.clear]。"
-#: doc/classes/VisualServer.xml:1220
-#, fuzzy
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
-msgstr ""
-"设置用于下一个顶点的颜色。等效于 [method ImmediateGeometry3D.set_color]。"
+msgstr "设置用于下一个顶点的颜色。相当于[method ImmediateGeometry.set_color]。"
-#: doc/classes/VisualServer.xml:1226
-#, fuzzy
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -77104,91 +77306,81 @@ msgid ""
"To place in a scene, attach this immediate geometry to an instance using "
"[method instance_set_base] using the returned RID."
msgstr ""
-"åˆ›å»ºä¸€ä¸ªå³æ—¶å‡ ä½•体并将其添加到 RenderingServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。"
-"此 RID 将用于所有 [code]immediate_*[/code] RenderingServer 函数。\n"
-"ä½ å¯ä»¥ä½¿ç”¨ RenderingServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。\n"
-"è¦æ”¾ç½®åœ¨åœºæ™¯ä¸­ï¼Œè¯·ä½¿ç”¨è¿”回的 RID 使用 [method instance_set_base] å°†æ­¤å³æ—¶å‡ ä½•"
-"体附加到实例。"
+"创建直接几何图形并将其添加到VisualServer中。它å¯ä»¥é€šè¿‡è¿”回的RID进行访问。这个"
+"RIDå¯åœ¨æ‰€æœ‰[code]immediate_*[/code]VisualServer函数中使用。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放"
+"RID。\n"
+"è¦åœ¨åœºæ™¯ä¸­æ”¾ç½®ï¼Œä½¿ç”¨è¿”回的RID用[method instance_set_base]将这个直接几何体附加"
+"到一个实例上。"
-#: doc/classes/VisualServer.xml:1235
-#, fuzzy
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-"结æŸç»˜åˆ¶[ImmediateGeometry3D]并显示它。相当于[method ImmediateGeometry3D."
-"end]。"
+"结æŸç»˜åˆ¶[ImmediateGeometry]并显示它。相当于[method ImmediateGeometry.end]。"
-#: doc/classes/VisualServer.xml:1242
-#, fuzzy
+#: doc/classes/VisualServer.xml:1243
msgid "Returns the material assigned to the [ImmediateGeometry]."
-msgstr "返回分é…ç»™[ImmediateGeometry3D]çš„æè´¨ã€‚"
+msgstr "返回分é…ç»™[ImmediateGeometry]çš„æè´¨ã€‚"
-#: doc/classes/VisualServer.xml:1250
-#, fuzzy
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-"设置用于下一个顶点的法线。相当于[method ImmediateGeometry3D.set_normal]。"
+"设置用于下一个顶点的法线。相当于[method ImmediateGeometry.set_normal]。"
-#: doc/classes/VisualServer.xml:1258
-#, fuzzy
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
-msgstr "设置用于绘制[ImmediateGeometry3D]çš„æè´¨ã€‚"
+msgstr "设置用于绘制[ImmediateGeometry]çš„æè´¨ã€‚"
-#: doc/classes/VisualServer.xml:1266
-#, fuzzy
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-"设置将用于下一个顶点的切线。相当于[method ImmediateGeometry3D.set_tangent]。"
+"设置用于下一个顶点的切线。相当于[method ImmediateGeometry.set_tangent]。"
-#: doc/classes/VisualServer.xml:1274
-#, fuzzy
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
-msgstr "设置用于下一个顶点的UV。相当于[method ImmediateGeometry3D.set_uv]。"
+msgstr "设置用于下一个顶点的UV。相当于[method ImmediateGeometry.set_uv]。"
-#: doc/classes/VisualServer.xml:1282
-#, fuzzy
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
-msgstr "设置用于下一个顶点的UV2。相当于[method ImmediateGeometry3D.set_uv2]。"
+msgstr "设置用于下一个顶点的UV2。相当于[method ImmediateGeometry.set_uv2]。"
-#: doc/classes/VisualServer.xml:1290
-#, fuzzy
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-"使用事先æä¾›çš„ä¿¡æ¯æ·»åŠ ä¸‹ä¸€ä¸ªé¡¶ç‚¹ã€‚ç›¸å½“äºŽ[method ImmediateGeometry3D."
+"使用预先æä¾›çš„ä¿¡æ¯æ·»åŠ ä¸‹ä¸€ä¸ªé¡¶ç‚¹ã€‚ç›¸å½“äºŽ[method ImmediateGeometry."
"add_vertex]。"
-#: doc/classes/VisualServer.xml:1298
-#, fuzzy
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-"使用事先æä¾›çš„ä¿¡æ¯æ·»åŠ ä¸‹ä¸€ä¸ªé¡¶ç‚¹ã€‚è¿™æ˜¯ä¸€ä¸ªåœ¨åŽå°è°ƒç”¨[method immediate_vertex]"
-"的辅助类。相当于[method ImmediateGeometry3D.add_vertex]。"
+"使用预先æä¾›çš„ä¿¡æ¯æ·»åŠ ä¸‹ä¸€ä¸ªé¡¶ç‚¹ã€‚è¿™æ˜¯ä¸€ä¸ªè¾…åŠ©ç±»ï¼Œå®ƒåœ¨åŽå°è°ƒç”¨[method "
+"immediate_vertex]。相当于[method ImmediateGeometry.add_vertex]。"
-#: doc/classes/VisualServer.xml:1304
-#, fuzzy
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-"åˆå§‹åŒ–渲染æœåŠ¡å™¨ã€‚è¯¥å‡½æ•°åœ¨å¼•æ“Žåˆå§‹åŒ–期间由平å°ç›¸å…³ä»£ç åœ¨å†…部调用。如果从正在"
-"è¿è¡Œçš„æ¸¸æˆä¸­è°ƒç”¨ï¼Œå®ƒä¸ä¼šåšä»»ä½•事情。"
+"åˆå§‹åŒ–visual server.。这个函数是在引擎åˆå§‹åŒ–过程中由ä¾èµ–å¹³å°çš„代ç å†…部调用。"
+"如果从一个正在è¿è¡Œçš„æ¸¸æˆä¸­è°ƒç”¨ï¼Œå®ƒå°†ä¸ä¼šåšä»»ä½•事情。"
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
@@ -77198,14 +77390,13 @@ msgstr ""
"instances_cull_aabb]ã€[method instances_cull_convex]å’Œ[method "
"instances_cull_ray]进行正确的筛除。"
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr "将骨架附加到实例。并从实例中移除之å‰éª¨æž¶ã€‚"
-#: doc/classes/VisualServer.xml:1326
-#, fuzzy
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -77216,14 +77407,14 @@ msgid ""
"particles, meshes, and reflection probes need to be associated with an "
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-"创建一个å¯è§†åŒ–实例并将其添加到RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。"
-"这个RID将在所有[code]instance_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
-"一个实例是在场景中放置一个3D对象的方å¼ã€‚åƒç²’å­ã€ç½‘格和å射探针这样的对象需è¦"
-"与一个实例相关è”,以便使用[method instance_set_base]在场景中å¯è§ã€‚"
+"创建一个å¯è§†åŒ–实例并将其添加到VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个"
+"RIDå¯åœ¨æ‰€æœ‰[code]instance_*[/code]VisualServer函数中使用。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放"
+"RID。\n"
+"实例是在场景中放置 3D å¯¹è±¡çš„ä¸€ç§æ–¹å¼ã€‚ç²’å­ã€ç½‘格和å射探针等对象需è¦ä¸Žä½¿ç”¨ "
+"[method instance_set_base] çš„å®žä¾‹å…³è”æ‰èƒ½åœ¨åœºæ™¯ä¸­å¯è§ã€‚"
-#: doc/classes/VisualServer.xml:1336
-#, fuzzy
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -77231,44 +77422,40 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个å¯è§†åŒ–实例,将其添加到RenderingServer中,并设置基础和场景。å¯ä»¥é€šè¿‡è¿”"
-"回的RIDæ¥è®¿é—®å®ƒã€‚这个RID将在所有[code]instance_*[/code] RenderingServer函数中"
-"使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
+"创建一个å¯è§†åŒ–实例,将其添加到VisualServer中,并设置基本和效果。å¯ä»¥ç”¨è¿”回的"
+"RIDæ¥è®¿é—®å®ƒã€‚这个RIDå¯åœ¨æ‰€æœ‰[code]instance_*[/code]VisualServer函数中使用。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr "在Godot 3.x中没有实现。"
-#: doc/classes/VisualServer.xml:1353
-#, fuzzy
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-"将阴影投射设置为[enum ShadowCastingSetting]中的一个。等价于[member "
-"GeometryInstance3D.cast_shadow]。"
+"将阴影投射设置为[enum ShadowCastingSetting]中的一个。相当于[member "
+"GeometryInstance.cast_shadow]。"
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-"设置给定的[enum InstanceFlags]标志。更多细节请å‚è§[enum InstanceFlags]。"
+"设置给定的[enum InstanceFlags]标志。更多细节请å‚阅[enum InstanceFlags]。"
-#: doc/classes/VisualServer.xml:1381
-#, fuzzy
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-"设置一个æè´¨ï¼Œè¦†ç›–与此实例关è”的网格上的所有表é¢çš„æè´¨ã€‚ç­‰åŒäºŽ[member "
-"GeometryInstance3D.material_override]。"
+"设置一个æè´¨ï¼Œè¦†ç›–与此实例关è”的网格上的所有表é¢çš„æè´¨ã€‚相当于[member "
+"GeometryInstance.material_override]。"
-#: doc/classes/VisualServer.xml:1389
-#, fuzzy
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -77276,80 +77463,70 @@ msgid ""
"reflection probe, lightmap capture, and the GI probe are all types that can "
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-"设置实例的基础。基础å¯ä»¥æ˜¯åœ¨å¯æ˜¾ç¤ºçš„ RenderingServer 中创建的任何 3D 对象。例"
-"如,任何ç¯å…‰ç±»åž‹ã€ç½‘æ ¼ã€å¤šç½‘æ ¼ã€å³æ—¶å‡ ä½•ã€ç²’å­ç³»ç»Ÿã€å射探针ã€å…‰ç…§è´´å›¾å’Œ GI "
-"探针都是å¯ä»¥è®¾ç½®ä¸ºå®žä¾‹çš„基础的类型,以便在场景中显示。"
+"设置实例的基类。基类å¯ä»¥æ˜¯VisualServer中创建的任何å¯ä»¥æ˜¾ç¤ºçš„3D对象。例如,光"
+"照类型ã€ç½‘æ ¼ã€å¤šç½‘æ ¼ã€åŸºæœ¬å‡ ä½•ã€ç²’å­ç³»ç»Ÿã€å射探针ã€å…‰ç…§å›¾æ•æ‰å’ŒGI探针等类型"
+"都å¯ä»¥è¢«è®¾ç½®ä¸ºå®žä¾‹çš„基类,以便在场景中显示。"
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr "设置与该实例相关的特定混åˆå½¢çŠ¶çš„æƒé‡ã€‚"
-#: doc/classes/VisualServer.xml:1406
-#, fuzzy
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-"设置一个自定义的AABB,当从视图中删除物体时使用。相当于[method "
-"GeometryInstance3D.set_custom_aabb]。"
+"设置自定义的AABB,当从视图中剔除对象时使用。相当于[method GeometryInstance."
+"set_custom_aabb]。"
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr "在Godot 3.x中没有实现的功能。"
-#: doc/classes/VisualServer.xml:1422
-#, fuzzy
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-"设置边è·ï¼Œå½“从视图中删除物体时,增加AABB的大å°ã€‚è¿™å¯ä»¥è®©ä½ é¿å…删除è½åœ¨è§†åŸŸèŒƒ"
-"围外的物体。等åŒäºŽ[member GeometryInstance3D.extra_cull_margin]。"
+"设置边è·ï¼Œåœ¨å‰”除视域范围内的对象时增加AABB的大å°ã€‚è¿™å¯ä»¥è®©ä½ é¿å…剔除è½åœ¨è§†åŸŸ"
+"范围外的物体。相当于[member GeometryInstance.extra_cull_margin]。"
-#: doc/classes/VisualServer.xml:1430
-#, fuzzy
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
-msgstr ""
-"设置此实例将被绘制到的渲染层。等效于 [member VisualInstance3D.layers]。"
+msgstr "设置该实例将被绘制的渲染层。相当于[member VisualInstance.layers]。"
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr "设置实例所在的场景。场景是对象将在其中显示的 3D 世界。"
-#: doc/classes/VisualServer.xml:1447
-#, fuzzy
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
-msgstr ""
-"设置特定表é¢çš„æè´¨ã€‚相当于[method MeshInstance3D.set_surface_material]。"
+msgstr "设置特定表é¢çš„æè´¨ã€‚相当于[method MeshInstance.set_surface_material]。"
-#: doc/classes/VisualServer.xml:1455
-#, fuzzy
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
-msgstr "è®¾ç½®å®žä¾‹çš„ä¸–ç•Œç©ºé—´å˜æ¢ã€‚ç­‰åŒäºŽ[member Node3D.transform]。"
+msgstr "è®¾ç½®å®žä¾‹çš„ä¸–ç•Œç©ºé—´å˜æ¢ã€‚相当于[member Spatial.transform]。"
-#: doc/classes/VisualServer.xml:1466
-#, fuzzy
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
-msgstr "设置此实例è¦ä½¿ç”¨çš„蒙皮。"
+msgstr "设置该实例使用的光照图。"
-#: doc/classes/VisualServer.xml:1474
-#, fuzzy
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
-msgstr "设置一个实例是å¦è¢«ç»˜åˆ¶ã€‚ç­‰åŒäºŽ[member Node3D.visible]。"
+msgstr "设置是å¦ç»˜åˆ¶å®žä¾‹ã€‚相当于 [member Spatial.visible]。"
-#: doc/classes/VisualServer.xml:1482
-#, fuzzy
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -77360,15 +77537,14 @@ msgid ""
"[b]Warning:[/b] This function is primarily intended for editor usage. For in-"
"game use cases, prefer physics collision."
msgstr ""
-"返回一个与所æä¾›çš„AABB相交的物体ID数组。åªè€ƒè™‘å¯è§†åŒ–çš„3D节点,如"
-"[MeshInstance3D]或[DirectionalLight3D]。使用[method @GDScript."
-"instance_from_id]æ¥èŽ·å–实际节点。必须æä¾›ä¸€ä¸ªåœºæ™¯çš„RID,且这个RID在你想查询的"
-"[World3D]中是å¯ç”¨çš„。这将强制更新所有排队等待更新的资æºã€‚\n"
-"[b]警告:[/b] 这个函数主è¦ç”¨äºŽç¼–辑器的使用。对于游æˆä¸­çš„使用情况,最好使用物"
-"ç†å­¦ç¢°æ’žã€‚"
+"返回一个与所æä¾›çš„AABB相交的物体ID数组。åªè€ƒè™‘å¯è§†åŒ–çš„3D节点,例如"
+"[MeshInstance]或[DirectionalLight]。使用[method @GDScript.instance_from_id]æ¥"
+"获å–实际节点。这必须æä¾›ä¸€ä¸ªåœºæ™¯çš„RID,该RID在你想查询的[World]中是å¯ç”¨çš„。这"
+"将强制更新所有排队等待更新的资æºã€‚\n"
+"[b]警告:[/b] 这个函数主è¦ç”¨äºŽç¼–辑器使用。对于游æˆä¸­çš„使用情况,最好是物ç†ç¢°"
+"撞。"
-#: doc/classes/VisualServer.xml:1491
-#, fuzzy
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -77380,14 +77556,13 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
"返回一个与所æä¾›çš„凸形相交的物体ID数组。åªè€ƒè™‘å¯è§†åŒ–çš„3D节点,如"
-"[MeshInstance3D]或[DirectionalLight3D]。使用[method @GDScript."
-"instance_from_id]æ¥èŽ·å–实际节点。必须æä¾›ä¸€ä¸ªåœºæ™¯çš„RID,这个RID在你想查询的"
-"[World3D]中是å¯ç”¨çš„。这将强制更新所有排队等待更新的资æºã€‚\n"
-"[b]警告:[/b] 这个函数主è¦ç”¨äºŽç¼–辑器的使用。对于游æˆä¸­çš„使用情况,最好使用物"
-"ç†å­¦ç¢°æ’žã€‚"
+"[MeshInstance]或[DirectionalLight]。使用[method @GDScript.instance_from_id]æ¥"
+"获å–实际节点。必须æä¾›ä¸€ä¸ªåœºæ™¯çš„RID,这个RID在你想查询的[World]中是å¯ç”¨çš„。这"
+"将强制更新所有排队等待更新的资æºã€‚\n"
+"[b]警告:[/b] 这个函数主è¦ç”¨äºŽç¼–辑器使用。对于游æˆä¸­çš„使用情况,最好是物ç†ç¢°"
+"撞。"
-#: doc/classes/VisualServer.xml:1501
-#, fuzzy
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -77398,105 +77573,97 @@ msgid ""
"[b]Warning:[/b] This function is primarily intended for editor usage. For in-"
"game use cases, prefer physics collision."
msgstr ""
-"返回一个与所æä¾›çš„3D射线相交的物体ID数组。åªè€ƒè™‘å¯è§†åŒ–çš„3D节点,如"
-"[MeshInstance3D]或[DirectionalLight3D]。使用[method @GDScript."
-"instance_from_id]æ¥èŽ·å–实际节点。必须æä¾›ä¸€ä¸ªåœºæ™¯çš„RID,且这个RID在你想查询的"
-"[World3D]中是å¯ç”¨çš„。这将强制更新所有排队等待更新的资æºã€‚\n"
-"[b]警告:[/b] 这个函数主è¦ç”¨äºŽç¼–辑器的使用。对于游æˆä¸­çš„使用情况,最好使用物"
-"ç†å­¦ç¢°æ’žã€‚"
+"返回一个与所æä¾›çš„3D射线相交的物体ID数组。åªè€ƒè™‘å¯è§†åŒ–çš„3D节点,例如"
+"[MeshInstance]或[DirectionalLight]。使用[method @GDScript.instance_from_id]æ¥"
+"获å–实际节点。必须æä¾›ä¸€ä¸ªåœºæ™¯çš„RID,这个RID在你想查询的[World]中是å¯ç”¨çš„。这"
+"将强制更新所有排队等待更新的资æºã€‚\n"
+"[b]警告:[/b] 这个函数主è¦ç”¨äºŽç¼–辑器的使用。对于游æˆä¸­çš„使用情况,最好是物ç†"
+"碰撞。"
-#: doc/classes/VisualServer.xml:1510
-#, fuzzy
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-"如果 [code]true[/code],此定å‘光将在阴影贴图分割之间混åˆï¼Œä»Žè€Œä½¿å®ƒä»¬ä¹‹é—´çš„过"
-"渡更平滑。相当于[member DirectionalLight3D.directional_shadow_blend_splits]。"
+"如果[code]true[/code],这个定å‘光会在阴影贴图分割之间混åˆï¼Œä»¥ä½¿å®ƒä»¬ä¹‹é—´çš„过渡"
+"更加平滑。相当于[member DirectionalLight.directional_shadow_blend_splits]。"
-#: doc/classes/VisualServer.xml:1518
-#, fuzzy
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-"设置此平行光的阴影深度范围模å¼ã€‚相当于[member DirectionalLight3D."
-"directional_shadow_depth_range]。有关选项,请å‚阅 [enum "
-"LightDirectionalShadowDepthRangeMode]。"
+"设置这个定å‘å…‰æºçš„阴影深度范围模å¼ã€‚相当于[member DirectionalLight."
+"directional_shadow_depth_range]。å‚阅[enum "
+"LightDirectionalShadowDepthRangeMode]的选项。"
-#: doc/classes/VisualServer.xml:1526
-#, fuzzy
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-"设置此有å‘ç¯å…‰çš„阴影模å¼ã€‚ç­‰åŒäºŽ[member DirectionalLight3D."
-"directional_shadow_mode]。å‚è§[enum LightDirectionalShadowMode]的选项。"
+"设置此定å‘å…‰æºçš„阴影模å¼ã€‚相当于[member DirectionalLight3D."
+"directional_shadow_mode]。å‚阅[enum LightDirectionalShadowMode]的选项。"
-#: doc/classes/VisualServer.xml:1534
-#, fuzzy
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-"è®¾ç½®é˜´å½±è´´å›¾æ˜¯ä½¿ç”¨åŒæŠ›ç‰©é¢è¿˜æ˜¯ç«‹æ–¹ä½“è´´å›¾ã€‚åŒæŠ›ç‰©é¢é€Ÿåº¦æ›´å¿«ï¼Œä½†å¯èƒ½ä¼šå‡ºçŽ°ä¼ª"
-"影。相当于[member OmniLight3D.omni_shadow_mode]。"
+"设置是å¦ä¸ºæ­¤æ³›å…‰ç¯ä½¿ç”¨åž‚直或水平细节。这å¯ç”¨äºŽå‡è½»é˜´å½±è´´å›¾ä¸­çš„伪影。相当于 "
+"[member OmniLight.omni_shadow_detail]。"
-#: doc/classes/VisualServer.xml:1542
-#, fuzzy
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
"è®¾ç½®é˜´å½±è´´å›¾æ˜¯ä½¿ç”¨åŒæŠ›ç‰©é¢è¿˜æ˜¯ç«‹æ–¹ä½“è´´å›¾ã€‚åŒæŠ›ç‰©é¢é€Ÿåº¦æ›´å¿«ï¼Œä½†å¯èƒ½ä¼šå‡ºçŽ°ä¼ª"
-"影。相当于[member OmniLight3D.omni_shadow_mode]。"
+"影。相当于[member OmniLight.omni_shadow_mode]。"
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
+"设置此ç¯çš„烘焙模å¼ï¼Œå‚阅 [enum LightBakeMode] 的选项。烘焙模å¼ä¼šå½±å“ç¯å…‰åœ¨ "
+"[BakedLightmap] å’Œ [GIProbe] 中的烘焙方å¼ã€‚"
-#: doc/classes/VisualServer.xml:1558
-#, fuzzy
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
-msgstr "设置ç¯å…‰çš„颜色。等åŒäºŽ[member Light3D.light_color]。"
+msgstr "设置ç¯å…‰çš„颜色。相当于[member Light.light_color]。"
-#: doc/classes/VisualServer.xml:1566
-#, fuzzy
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-"为这个 Light3D 设置剔除蒙版。ç¯å…‰ä»…å½±å“选定图层中的对象。相当于 [member "
-"Light3D.light_cull_mask]。"
+"设置此ç¯å…‰çš„剔除é®ç½©ã€‚ç¯å…‰ä»…å½±å“选定图层中的对象。相当于[member Light."
+"light_cull_mask]。"
-#: doc/classes/VisualServer.xml:1574
-#, fuzzy
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-"如果 [code]true[/code],将å‡åŽ»å…‰è€Œä¸æ˜¯æ·»åŠ å…‰ã€‚ç›¸å½“äºŽ [member Light3D."
+"如果[code]true[/code],光将å‡åŽ»å…‰è€Œä¸æ˜¯å¢žåŠ å…‰ã€‚ç›¸å½“äºŽ[member Light."
"light_negative]。"
-#: doc/classes/VisualServer.xml:1583
-#, fuzzy
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-"设置指定的ç¯å…‰å‚数。选项è§[enum LightParam]。相当于[method Light3D."
+"设置指定的ç¯å…‰å‚数。å‚阅[enum LightParam]的选项。相当于[method Light."
"set_param]。"
-#: doc/classes/VisualServer.xml:1599
-#, fuzzy
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -77504,28 +77671,25 @@ msgid ""
"shadows with [method instance_geometry_set_cast_shadows_setting]. Equivalent "
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-"如果[code]true[/code],将å转网格的背é¢å‰”除。当你有一个åŽé¢æœ‰ç¯å…‰çš„å¹³å¦ç½‘æ ¼"
-"时,这å¯èƒ½å¾ˆæœ‰ç”¨ã€‚如果你需è¦åœ¨ç½‘格的两边都投下阴影,å¯ä»¥ç”¨[method "
-"instance_geometry_set_cast_shadows_setting]设置网格为使用åŒé¢é˜´å½±ã€‚相当于"
-"[member Light3D.shadow_reverse_cull_face]。"
+"如果[code]true[/code],å转网格的背é¢å‰”除。当你有一个平é¢ç½‘æ ¼åŽé¢æœ‰ç¯å…‰æ—¶ï¼Œè¿™"
+"å¯èƒ½å¾ˆæœ‰ç”¨ã€‚如果你需è¦åœ¨ç½‘格的两é¢éƒ½æŠ•下阴影,å¯ä»¥ç”¨[method "
+"instance_geometry_set_cast_shadows_setting]将网格设置为使用åŒé¢é˜´å½±ã€‚相当于"
+"[member Light.shadow_reverse_cull_face]。"
-#: doc/classes/VisualServer.xml:1607
-#, fuzzy
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-"如果 [code]true[/code],ç¯å…‰ä¼šæŠ•射阴影。相当于 [member Light3D."
-"shadow_enabled]。"
+"如果[code]true[/code],光线会投射阴影。相当于[member Light.shadow_enabled]。"
-#: doc/classes/VisualServer.xml:1615
-#, fuzzy
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
-msgstr "设置ç¯å…‰æŠ•射的阴影颜色。相当于 [member Light3D.shadow_color]。"
+msgstr "设置ç¯å…‰æŠ•射阴影的颜色。相当于[member Light.shadow_color]。"
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -77534,9 +77698,12 @@ msgid ""
"LIGHT_BAKE_DISABLED] or [constant LIGHT_BAKE_INDIRECT] depending on the "
"given parameter."
msgstr ""
+"设置GI探针是å¦ä»Žè¿™ä¸ªç¯ä¸­æ•æ‰å…‰çº¿ä¿¡æ¯ã€‚[i]废弃的方法。[/i]使用[method "
+"light_set_bake_mode]ä»£æ›¿ã€‚è¿™ä¸ªæ–¹æ³•åªæ˜¯å‡ºäºŽå…¼å®¹æ€§è€ƒè™‘而被ä¿ç•™ï¼Œå®ƒåœ¨å†…部调用"
+"[method light_set_bake_mode],根æ®ç»™å®šçš„傿•°å°†çƒ˜çƒ¤æ¨¡å¼è®¾ç½®ä¸º[constant "
+"LIGHT_BAKE_DISABLED]或[constant LIGHT_BAKE_INDIRECT]。"
-#: doc/classes/VisualServer.xml:1629
-#, fuzzy
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -77546,92 +77713,91 @@ msgid ""
"To place in a scene, attach this lightmap capture to an instance using "
"[method instance_set_base] using the returned RID."
msgstr ""
-"创建一个新的网格并将其添加到RenderingServer。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RID"
-"将在所有[code]Mesh_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•æ¥é‡Šæ”¾è¿™ä¸ªRID。\n"
-"è¦æ”¾ç½®åœ¨ä¸€ä¸ªåœºæ™¯ä¸­ï¼Œä½¿ç”¨è¿”回的RID用[method instance_set_base]将这个网格附加到"
-"一个实例上。"
+"创建一个光照贴图æ•获并将其添加到VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个"
+"RIDå¯ç”¨äºŽæ‰€æœ‰[code]lightmap_capture_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†RID处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
+"è¦åœ¨åœºæ™¯ä¸­æ”¾ç½®ï¼Œä½¿ç”¨è¿”回的RID,用[method instance_set_base]将这个lightmap "
+"capture附加到一个实例上。"
-#: doc/classes/VisualServer.xml:1638
-#, fuzzy
+#: doc/classes/VisualServer.xml:1639
msgid "Returns the size of the lightmap capture area."
-msgstr "返回数组的大å°ã€‚"
+msgstr "返回光照贴图æ•获区域的大å°ã€‚"
-#: doc/classes/VisualServer.xml:1645
-#, fuzzy
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
-msgstr "返回一个被矩阵转æ¢ï¼ˆä¹˜æ³•)的å‘é‡ã€‚"
+msgstr "返回光照贴图æ•获使用的能é‡ä¹˜æ•°ã€‚"
-#: doc/classes/VisualServer.xml:1652
-#, fuzzy
+#: doc/classes/VisualServer.xml:1653
msgid "Returns the octree used by the lightmap capture."
-msgstr "è¿”å›žæŒ‡å®šå‚æ•°ä½¿ç”¨çš„[Texture2D]。"
+msgstr "返回光照贴图æ•èŽ·ä½¿ç”¨çš„å…«å‰æ ‘。"
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
-msgstr ""
+msgstr "返回此光照贴图æ•èŽ·çš„å…«å‰æ ‘使用的å•元细分é‡ã€‚"
-#: doc/classes/VisualServer.xml:1666
-#, fuzzy
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
-msgstr "è¿”å›žæ­¤é¡¹ç›®ç”»å¸ƒçš„å˜æ¢çŸ©é˜µã€‚"
+msgstr "返回此光照贴图æ•èŽ·çš„å…«å‰æ ‘çš„å•å…ƒå˜æ¢ã€‚"
-#: doc/classes/VisualServer.xml:1673
-#, fuzzy
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
-msgstr "如果场景文件有节点,返回[code]true[/code]。"
+msgstr "如果æ•获处于\"interior\"内部模å¼ï¼Œåˆ™è¿”回 [code]true[/code]。"
-#: doc/classes/VisualServer.xml:1681
-#, fuzzy
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
-msgstr "设置ç¯å…‰çº¹ç†çš„åç§»é‡ã€‚ç­‰åŒäºŽ[member Light2D.offset]。"
+msgstr ""
+"设置光照贴图æ•获所覆盖区域的大å°ã€‚相当于 [member BakedLightmapData.bounds]。"
-#: doc/classes/VisualServer.xml:1689
-#, fuzzy
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
-msgstr "设置ç¯å…‰çº¹ç†çš„åç§»é‡ã€‚ç­‰åŒäºŽ[member Light2D.offset]。"
+msgstr ""
+"设置此光照贴图æ•获的能é‡ä¹˜æ•°ã€‚相当于[member BakedLightmapData.energy]。"
-#: doc/classes/VisualServer.xml:1697
-#, fuzzy
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
-msgstr "设置ç¯å…‰çš„颜色。等åŒäºŽ[member Light3D.light_color]。"
+msgstr ""
+"设置此光照贴图æ•获的 \"interior\"内部模å¼ã€‚相当于 [member BakedLightmapData."
+"interior]。"
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
+"设置此光照贴图æ•获è¦ä½¿ç”¨çš„八剿 ‘。该函数通常由 [BakedLightmap] 节点使用。相当"
+"于[member BakedLightmapData.octree]。"
-#: doc/classes/VisualServer.xml:1713
-#, fuzzy
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
-msgstr "设置ç¯å…‰çº¹ç†çš„åç§»é‡ã€‚ç­‰åŒäºŽ[member Light2D.offset]。"
+msgstr ""
+"设置此光照贴图æ•èŽ·å…«å‰æ ‘的细分级别。相当于[member BakedLightmapData."
+"cell_subdiv]。"
-#: doc/classes/VisualServer.xml:1721
-#, fuzzy
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
-msgstr "è®¾ç½®å®žä¾‹çš„ä¸–ç•Œç©ºé—´å˜æ¢ã€‚ç­‰åŒäºŽ[member Node3D.transform]。"
+msgstr ""
+"设置此光照贴图æ•èŽ·çš„å…«å‰æ ‘çš„å…«å‰æ ‘å•å…ƒå˜æ¢ã€‚相当于[member BakedLightmapData."
+"cell_space_transform]。"
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr "返回具有给定水平和垂直细分的çƒä½“网格。"
-#: doc/classes/VisualServer.xml:1736
-#, fuzzy
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -77639,60 +77805,59 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个空æè´¨å¹¶å°†å…¶æ·»åŠ åˆ° RenderingServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 "
-"RID 将用于所有 [code]material_*[/code] RenderingServer 函数。\n"
-"å¯ä»¥ä½¿ç”¨ RenderingServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。"
+"创建一个空æè´¨å¹¶å°†å…¶æ·»åŠ åˆ° VisualServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 RID å¯"
+"用于所有 [code]material_*[/code] VisualServer 函数。\n"
+"å®Œæˆ RID 处ç†åŽï¼Œå¯ä½¿ç”¨ VisualServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。"
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr "返回特定æè´¨çš„傿•°å€¼ã€‚"
-#: doc/classes/VisualServer.xml:1753
-#, fuzzy
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
-msgstr "返回指定 [enum Margin] 的默认值。"
+msgstr "如果å¯ç”¨ï¼Œè¿”å›žå‚æ•°çš„默认值。å¦åˆ™è¿”回一个空的 [Variant]。"
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
-msgstr ""
+msgstr "返回æŸä¸ªæè´¨ç€è‰²çš„ç€è‰²å™¨ã€‚如果æè´¨æ²¡æœ‰ç€è‰²å™¨ï¼Œåˆ™è¿”回一个空的 RID。"
-#: doc/classes/VisualServer.xml:1768
-#, fuzzy
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
-msgstr "设置æè´¨çš„æ¸²æŸ“优先级。"
+msgstr "设置æè´¨çš„线宽。"
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr "设置对象的下一个æè´¨ã€‚"
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr "设置æè´¨çš„傿•°ã€‚"
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr "设置æè´¨çš„æ¸²æŸ“优先级。"
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr "设置ç€è‰²å™¨æè´¨çš„ç€è‰²å™¨ã€‚"
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
+"将从Arrays数组生æˆçš„è¡¨é¢æ·»åŠ åˆ°ç½‘æ ¼ã€‚æœ‰å…³ç±»åž‹ï¼Œè¯·å‚阅 [enum PrimitiveType] 常"
+"é‡ã€‚"
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr "移除网格中的所有表é¢ã€‚"
-#: doc/classes/VisualServer.xml:1825
-#, fuzzy
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -77702,107 +77867,98 @@ msgid ""
"To place in a scene, attach this mesh to an instance using [method "
"instance_set_base] using the returned RID."
msgstr ""
-"创建一个新的网格并将其添加到RenderingServer。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RID"
-"将在所有[code]Mesh_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•æ¥é‡Šæ”¾è¿™ä¸ªRID。\n"
-"è¦æ”¾ç½®åœ¨ä¸€ä¸ªåœºæ™¯ä¸­ï¼Œä½¿ç”¨è¿”回的RID用[method instance_set_base]将这个网格附加到"
-"一个实例上。"
+"创建一个新网格并将其添加到 VisualServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 RID å¯"
+"用于所有 [code]mesh_*[/code] VisualServer 函数。\n"
+"å®Œæˆ RID 处ç†åŽï¼Œå¯ä½¿ç”¨ VisualServer çš„ [method free_rid] 陿€æ–¹æ³•释放 "
+"RID。\n"
+"è¦æ”¾ç½®åœ¨åœºæ™¯ä¸­ï¼Œè¯·ä½¿ç”¨è¿”回的 RID 使用 [method instance_set_base] 将此网格附加"
+"到实例。"
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr "返回一个网格的混åˆå½¢çŠ¶æ•°é‡ã€‚"
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr "返回网格的混åˆå½¢çŠ¶æ¨¡å¼ã€‚"
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr "返回网格的自定义 AABB。"
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr "è¿”å›žç½‘æ ¼çš„é¢æ•°ã€‚"
-#: doc/classes/VisualServer.xml:1863
-#, fuzzy
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
-msgstr "设置网格表é¢çš„æè´¨ã€‚"
+msgstr "移除网格的表é¢ã€‚"
-#: doc/classes/VisualServer.xml:1871
-#, fuzzy
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
-msgstr "返回一个网格的混åˆå½¢çŠ¶æ•°é‡ã€‚"
+msgstr "设置网格的混åˆå½¢çŠ¶è®¡æ•°ã€‚"
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr "设置网格的混åˆå½¢çŠ¶æ¨¡å¼ã€‚"
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr "设置网格的自定义 AABB。"
-#: doc/classes/VisualServer.xml:1895
-#, fuzzy
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
-msgstr "返回网格表é¢çš„æè´¨ã€‚"
+msgstr "返回网格表é¢çš„ aabb。"
-#: doc/classes/VisualServer.xml:1903
-#, fuzzy
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
-msgstr "返回网格表é¢çš„缓冲区数组。"
+msgstr "返回网格表é¢çš„顶点缓冲区。"
-#: doc/classes/VisualServer.xml:1911
-#, fuzzy
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
-msgstr "返回网格表é¢çš„æè´¨ã€‚"
+msgstr "返回网格的表é¢çš„索引数é‡ã€‚"
-#: doc/classes/VisualServer.xml:1919
-#, fuzzy
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
-msgstr "返回网格表é¢çš„æè´¨ã€‚"
+msgstr "返回网格表é¢çš„顶点数é‡ã€‚"
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr "返回网格表é¢çš„缓冲区数组。"
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr "返回网格表é¢çš„æ··åˆå½¢çŠ¶æ•°ç»„ã€‚"
-#: doc/classes/VisualServer.xml:1943
-#, fuzzy
+#: doc/classes/VisualServer.xml:1944
msgid "Returns the format of a mesh's surface."
-msgstr "返回图å—形状的åç§»é‡ã€‚"
+msgstr "返回网格表é¢çš„æ ¼å¼ã€‚"
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr "这个函数在 Godot 3.x 中未使用。"
-#: doc/classes/VisualServer.xml:1970
-#, fuzzy
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
-msgstr "返回网格表é¢çš„缓冲区数组。"
+msgstr "返回网格表é¢çš„索引缓冲区。"
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr "返回网格表é¢çš„æè´¨ã€‚"
-#: doc/classes/VisualServer.xml:1986
-#, fuzzy
+#: doc/classes/VisualServer.xml:1987
msgid "Returns the primitive type of a mesh's surface."
-msgstr "返回ç€è‰²å™¨çš„傿•°ã€‚"
+msgstr "返回网格表é¢çš„基本网格类型。"
-#: doc/classes/VisualServer.xml:1994
-#, fuzzy
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
-msgstr "返回网格表é¢çš„æè´¨ã€‚"
+msgstr "返回网格表é¢éª¨æž¶çš„ aabb。"
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr "设置网格表é¢çš„æè´¨ã€‚"
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
@@ -77811,16 +77967,18 @@ msgstr ""
"更新指定曲é¢çš„顶点缓冲区的一个特定区域。警告:这个函数直接改å˜äº†é¡¶ç‚¹ç¼“冲区,"
"没有安全机制,你很容易破å你的网格。"
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
"MultimeshColorFormat], and [enum MultimeshCustomDataFormat] for usage. "
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
+"为多网格数æ®åˆ†é…空间。格å¼å‚数决定了 OpenGL 如何存储数æ®ã€‚有关用法,请å‚阅 "
+"[enum MultimeshTransformFormat]ã€[enum MultimeshColorFormat] å’Œ [enum "
+"MultimeshCustomDataFormat]。相当于 [member MultiMesh.instance_count]。"
-#: doc/classes/VisualServer.xml:2030
-#, fuzzy
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -77830,13 +77988,14 @@ msgid ""
"To place in a scene, attach this multimesh to an instance using [method "
"instance_set_base] using the returned RID."
msgstr ""
-"在RenderingServer上创建一个新的multimesh并返回一个[RID]奿Ÿ„。这个RID将在所有"
-"[code]multimesh_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
-"è¦æ”¾ç½®åœ¨ä¸€ä¸ªåœºæ™¯ä¸­ï¼Œä½¿ç”¨è¿”回的RID用[method instance_set_base]将这个multimesh"
-"附加到一个实例上。"
+"在 VisualServer 上创建一个新的多网格并返回一个 [RID] 奿Ÿ„。此 RID å¯ç”¨äºŽæ‰€æœ‰ "
+"[code]multimesh_*[/code] VisualServer 函数。\n"
+"å®Œæˆ RID 处ç†åŽï¼Œå¯ä½¿ç”¨ VisualServer çš„ [method free_rid] 陿€æ–¹æ³•释放 "
+"RID。\n"
+"è¦æ”¾ç½®åœ¨åœºæ™¯ä¸­ï¼Œè¯·ä½¿ç”¨è¿”回的 RID 使用 [method instance_set_base] 将此多网格附"
+"加到实例。"
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
@@ -77844,44 +78003,44 @@ msgstr ""
"计算并返回轴对é½çš„边界框(包围盒),该边界框(包围盒)将所有的实例都包å«åœ¨"
"multimesh中。"
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr "返回分é…给这个multimesh的实例的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr "返回用于绘制此multimesh的RID。"
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr "返回此multimeshçš„å¯è§å®žä¾‹æ•°ã€‚"
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr "返回指定实例将被调制的颜色。"
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr "返回与指定实例相关的自定义数æ®ã€‚"
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr "返回指定实例的[Transform]。"
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr "返回指定实例的 [Transform2D]。åªåœ¨multimesh设置为使用 2D å˜æ¢æ—¶ä½¿ç”¨ã€‚"
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr "设置这个实例的调制颜色。等åŒäºŽ[method MultiMesh.set_instance_color]。"
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
@@ -77890,14 +78049,14 @@ msgstr ""
"为这个实例设置自定义数æ®ã€‚自定义数æ®ä»¥[Color]的形å¼ä¼ é€’,但在ç€è‰²å™¨ä¸­ä¼šè¢«è§£é‡Š"
"为[code]vec4[/code]。等åŒäºŽ[method MultiMesh.set_instance_custom_data]。"
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
"设置此实例的 [Transform]。相当于[method MultiMesh.set_instance_transform]。"
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
@@ -77905,7 +78064,7 @@ msgstr ""
"为此实例设置 [Transform2D]。用于在 2D 中使用multimesh时。相当于[method "
"MultiMesh.set_instance_transform_2d]。"
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -77919,14 +78078,24 @@ msgid ""
"(4 bytes as is) and [code]COLOR_FLOAT[/code] / [code]CUSTOM_DATA_FLOAT[/"
"code] is stored as 4 floats."
msgstr ""
+"一次性设置所有与实例相关的数æ®ã€‚这在从ç£ç›˜åŠ è½½æ•°æ®æˆ–从GDNativeå‡†å¤‡æ•°æ®æ—¶ç‰¹åˆ«"
+"有用。\n"
+"\n"
+"所有的数æ®éƒ½è¢«æ‰“包在一个大型浮点数组中。一个数组å¯èƒ½çœ‹èµ·æ¥åƒè¿™æ ·: 实例1çš„å˜"
+"æ¢ï¼Œå®žä¾‹1的颜色数æ®ï¼Œå®žä¾‹1的自定义数æ®ï¼Œå®žä¾‹2çš„å˜æ¢ï¼Œå®žä¾‹2的颜色数æ®ï¼Œç­‰"
+"等。\n"
+"\n"
+"[Transform]存储为12个浮点数,[Transform2D]存储为8个浮点数,[code]COLOR_8BIT[/"
+"code] / [code]CUSTOM_DATA_8BIT[/code]存储为1个浮点数(按4字节),"
+"[code]COLOR_FLOAT[/code] / [code]CUSTOM_DATA_FLOAT[/code] 存储为4个浮点数。"
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr "设置Multimesh所è¦ç»˜åˆ¶çš„网格。等åŒäºŽ [member MultiMesh.mesh]。"
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
@@ -77935,8 +78104,7 @@ msgstr ""
"设置在给定时间内å¯è§çš„实例的数é‡ã€‚如果是-1,所有被分é…的实例都会被画出æ¥ã€‚ç­‰"
"åŒäºŽ[member MultiMesh.visible_instance_count]。"
-#: doc/classes/VisualServer.xml:2162
-#, fuzzy
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -77946,14 +78114,14 @@ msgid ""
"To place in a scene, attach this omni light to an instance using [method "
"instance_set_base] using the returned RID."
msgstr ""
-"创建一个新的泛光ç¯å¹¶æŠŠå®ƒæ·»åŠ åˆ°RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。"
-"这个RIDå¯ä»¥åœ¨å¤§å¤šæ•°[code]light_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
-"为了在场景中放置,使用返回的RID,用[method instance_set_base]把这个泛光ç¯é™„加"
-"到一个实例上。"
+"创建一个新的泛光ç¯å¹¶å°†å…¶æ·»åŠ åˆ° VisualServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 "
+"RID å¯ç”¨äºŽå¤§å¤šæ•° [code]light_*[/code] VisualServer 函数。\n"
+"å®Œæˆ RID 处ç†åŽï¼Œå¯ä½¿ç”¨ VisualServer çš„ [method free_rid] 陿€æ–¹æ³•释放 "
+"RID。\n"
+"è¦æ”¾ç½®åœ¨åœºæ™¯ä¸­ï¼Œè¯·ä½¿ç”¨è¿”回的 RID 使用 [method instance_set_base] 将此泛光ç¯é™„"
+"加到实例。"
-#: doc/classes/VisualServer.xml:2170
-#, fuzzy
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -77963,32 +78131,30 @@ msgid ""
"To place in a scene, attach these particles to an instance using [method "
"instance_set_base] using the returned RID."
msgstr ""
-"创建一个粒å­ç³»ç»Ÿå¹¶å°†å…¶æ·»åŠ åˆ°RenderingServer。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这个"
-"RID将在所有的[code]particles_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
-"è¦æ”¾ç½®åœ¨åœºæ™¯ä¸­ï¼Œä½¿ç”¨è¿”回的RID,用[method instance_set_base]将这些粒å­é™„加到一"
-"个实例上。"
+"创建一个粒å­ç³»ç»Ÿå¹¶å°†å…¶æ·»åŠ åˆ° VisualServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 RID "
+"å¯ç”¨äºŽæ‰€æœ‰ [code]particles_*[/code] VisualServer 函数。\n"
+"å®Œæˆ RID åŽï¼Œå¯ä½¿ç”¨ VisualServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。\n"
+"è¦æ”¾ç½®åœ¨åœºæ™¯ä¸­ï¼Œè¯·ä½¿ç”¨è¿”回的 RID 使用 [method instance_set_base] 将这些粒å­é™„"
+"加到实例。"
-#: doc/classes/VisualServer.xml:2179
-#, fuzzy
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-"è®¡ç®—å¹¶è¿”å›žåŒ…å«æ‰€æœ‰ç²’å­çš„轴对é½è¾¹ç•Œæ¡†ã€‚相当于 [method GPUParticles3D."
-"capture_aabb]。"
+"è®¡ç®—å¹¶è¿”å›žåŒ…å«æ‰€æœ‰ç²’å­çš„轴对é½è¾¹ç•Œæ¡†ã€‚相当于[method Particles.capture_aabb]。"
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr "如果当å‰ç²’å­è¢«è®¾ç½®å‘射,则返回[code]true[/code]。"
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr "å¦‚æžœç²’å­æ²¡æœ‰å‘射并且粒å­è®¾ç½®ä¸ºéžæ´»åŠ¨çŠ¶æ€ï¼Œåˆ™è¿”回 [code]true[/code]。"
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -77999,158 +78165,140 @@ msgstr ""
"instances_cull_aabb]ã€[method instances_cull_convex] 或 [method "
"instances_cull_ray] 时进行。"
-#: doc/classes/VisualServer.xml:2207
-#, fuzzy
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
-msgstr "在下次更新时é‡ç½®ç²’å­ã€‚相当于[method GPUParticles3D.restart]。"
+msgstr "在下次更新时é‡ç½®ç²’å­ã€‚相当于[method Particles.restart]。"
-#: doc/classes/VisualServer.xml:2215
-#, fuzzy
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-"设置è¦ç»˜åˆ¶çš„ç²’å­æ•°å¹¶ä¸ºå®ƒä»¬åˆ†é…内存。相当于[member GPUParticles3D.amount]。"
+"设置è¦ç»˜åˆ¶çš„ç²’å­çš„æ•°é‡ï¼Œå¹¶ä¸ºå…¶åˆ†é…内存。相当于[member Particles.amount]。"
-#: doc/classes/VisualServer.xml:2223
-#, fuzzy
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-"为粒å­ç³»ç»Ÿè®¾ç½®è‡ªå®šä¹‰è½´å¯¹é½è¾¹ç•Œæ¡†ã€‚相当于[member GPUParticles3D."
-"visibility_aabb]。"
+"为粒å­ç³»ç»Ÿè®¾ç½®è‡ªå®šä¹‰è½´å¯¹é½è¾¹ç•Œæ¡†ã€‚相当于 [member Particles.visibility_aabb]。"
-#: doc/classes/VisualServer.xml:2231
-#, fuzzy
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-"将粒å­çš„绘制顺åºè®¾ç½®ä¸º [enum ParticlesDrawOrder] ä¸­çš„å‘½åæžšä¸¾ä¹‹ä¸€ã€‚有关选项,"
-"请å‚阅 [enum ParticlesDrawOrder]。相当于[member GPUParticles3D.draw_order]。"
+"将粒å­çš„绘制顺åºè®¾ç½®ä¸º [enum ParticlesDrawOrder] 中的枚举之一。有关选项,请å‚"
+"阅 [enum ParticlesDrawOrder]。相当于 [member Particles.draw_order]。"
-#: doc/classes/VisualServer.xml:2240
-#, fuzzy
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-"设置用于指定绘制通é“的网格。相当于[member GPUParticles3D.draw_pass_1]ã€"
-"[member GPUParticles3D.draw_pass_2]ã€[member GPUParticles3D.draw_pass_3] å’Œ "
-"[member GPUParticles3D.draw_pass_4]。"
+"设置用于指定绘制通é“的网格。相当于 [member Particles.draw_pass_1]ã€[member "
+"Particles.draw_pass_2]ã€[member Particles.draw_pass_3] å’Œ [member Particles."
+"draw_pass_4]。"
-#: doc/classes/VisualServer.xml:2248
-#, fuzzy
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
-msgstr "设置è¦ä½¿ç”¨çš„绘制次数。等åŒäºŽ[member GPUParticles3D.draw_passes]。"
+msgstr "设置è¦ä½¿ç”¨çš„ç»˜åˆ¶é€šé“æ•°ã€‚相当于 [member Particles.draw_passes]。"
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr "设置粒å­é¦–次å‘射时将使用的 [Transform]。"
-#: doc/classes/VisualServer.xml:2264
-#, fuzzy
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-"如果 [code]true[/code],粒å­ä¼šéšç€æ—¶é—´å‘射。设置为 false ä¸ä¼šé‡ç½®ç²’å­ï¼Œè€Œåªä¼š"
-"åœæ­¢å®ƒä»¬çš„å‘射。等效于 [member GPUParticles3D.Emitting]。"
+"如果[code]true[/code],粒å­ä¼šéšç€æ—¶é—´çš„æŽ¨ç§»è€Œå‘射出æ¥ã€‚设置为falseä¸ä¼šé‡ç½®ç²’"
+"å­ï¼Œè€Œåªæ˜¯åœæ­¢å…¶å‘射。相当于[member Particles.emitting]。"
-#: doc/classes/VisualServer.xml:2272
-#, fuzzy
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
-msgstr "设置爆炸率。相当于[member GPUParticles3D.explosiveness]。"
+msgstr "设置爆炸率。相当于[member Particles.explosiveness]。"
-#: doc/classes/VisualServer.xml:2280
-#, fuzzy
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
-msgstr "设置粒å­ç³»ç»Ÿæ¸²æŸ“的帧速率。相当于[member GPUParticles3D.fixed_fps]。"
+msgstr "设置粒å­ç³»ç»Ÿæ¸²æŸ“的固定帧率。相当于[member Particles.fixed_fps]。"
-#: doc/classes/VisualServer.xml:2288
-#, fuzzy
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
"如果 [code]true[/code]ï¼Œåˆ™ä½¿ç”¨åˆ†æ•°å¢žé‡æ¥å¹³æ»‘ç²’å­çš„è¿åŠ¨ã€‚ç›¸å½“äºŽ [member "
-"GPUParticles3D.fract_delta]。"
+"Particles.fract_delta]。"
-#: doc/classes/VisualServer.xml:2296
-#, fuzzy
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
-msgstr "设置系统中æ¯ä¸ªç²’å­çš„寿命。等åŒäºŽ[member GPUParticles3D.lifetime]。"
+msgstr "设置系统中æ¯ä¸ªç²’å­çš„寿命。相当于 [member Particles.lifetime]。"
-#: doc/classes/VisualServer.xml:2304
-#, fuzzy
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-"如果 [code]true[/code],粒å­å°†å‘射一次然åŽåœæ­¢ã€‚相当于[member GPUParticles3D."
+"如果 [code]true[/code],粒å­å°†å‘射一次然åŽåœæ­¢ã€‚相当于 [member Particles."
"one_shot]。"
-#: doc/classes/VisualServer.xml:2312
-#, fuzzy
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-"设置粒å­åŠ¨ç”»çš„é¢„å¤„ç†æ—¶é—´ã€‚è¿™å¯ä»¥è®©ä½ å»¶è¿Ÿå¯åŠ¨åŠ¨ç”»ï¼Œç›´åˆ°ç²’å­å¼€å§‹å‘射之åŽã€‚ç­‰åŒ"
-"于[member GPUParticles3D.preprocess]。"
+"设置粒å­åŠ¨ç”»çš„é¢„å¤„ç†æ—¶é—´ã€‚这使您å¯ä»¥å»¶è¿Ÿå¯åŠ¨åŠ¨ç”»ï¼Œç›´åˆ°ç²’å­å¼€å§‹å‘射。相当于"
+"[member Particles.preprocess]。"
-#: doc/classes/VisualServer.xml:2320
-#, fuzzy
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-"设置用于处ç†ç²’å­çš„æè´¨ã€‚注æ„ï¼šè¿™ä¸æ˜¯ç”¨äºŽç»˜åˆ¶æè´¨çš„æè´¨ã€‚ç­‰åŒäºŽ[member "
-"GPUParticles3D.process_material]。"
+"设置用于处ç†ç²’å­çš„æè´¨ã€‚\n"
+"[b]注æ„:[/b] è¿™ä¸æ˜¯ç”¨äºŽç»˜åˆ¶æè´¨çš„æè´¨ã€‚相当于[member Particles."
+"process_material]。"
-#: doc/classes/VisualServer.xml:2329
-#, fuzzy
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-"设置å‘å°„éšæœºæ€§æ¯”率。这å¯ä»¥éšæœºåŒ–ç²’å­çš„å‘射。等åŒäºŽ[member GPUParticles3D."
+"设置å‘å°„éšæœºçŽ‡ã€‚è¿™å°†éšæœºåŒ–ç²’å­åœ¨å…¶ç›¸ä½å†…çš„å‘射。相当于 [member Particles."
"randomness]。"
-#: doc/classes/VisualServer.xml:2337
-#, fuzzy
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
-msgstr "设置粒å­ç³»ç»Ÿçš„速度比例。相当于[member GPUParticles3D.speed_scale]。"
+msgstr "设置粒å­ç³»ç»Ÿçš„速度缩放。相当于 [member Particles.speed_scale]。"
-#: doc/classes/VisualServer.xml:2345
-#, fuzzy
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-"如果[code]true[/code],粒å­ä½¿ç”¨å±€éƒ¨å标。如果[code]false[/code],它们使用全局"
-"åæ ‡ã€‚相当于[member GPUParticles3D.local_coords]。"
+"如果 [code]true[/code],粒å­ä½¿ç”¨å±€éƒ¨å标。如果 [code]false[/code] 其使用全局"
+"åæ ‡ã€‚相当于 [member Particles.local_coords]。"
-#: doc/classes/VisualServer.xml:2351
-#, fuzzy
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -78160,22 +78308,21 @@ msgid ""
"To place in a scene, attach this reflection probe to an instance using "
"[method instance_set_base] using the returned RID."
msgstr ""
-"创建一个å射探针并将其添加到RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这"
-"个RID将在所有[code]reflection_probe_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
-"为了放置在场景中,使用返回的RID,用[method instance_set_base]将这个å射探针附"
-"加到一个实例上。"
+"创建一个å射探针并将其添加到VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RID"
+"å¯ç”¨äºŽæ‰€æœ‰[code]reflection_probe_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†RID处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
+"è¦åœ¨åœºæ™¯ä¸­æ”¾ç½®ï¼Œä½¿ç”¨è¿”回的RID,用[method instance_set_base]将这个å射探针附加"
+"到一个实例上。"
-#: doc/classes/VisualServer.xml:2361
-#, fuzzy
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-"如果 [code]true[/code],å射将忽略天空因素。等效于 [member ReflectionProbe."
-"interior]。"
+"如果[code]true[/code],å射将忽略天空的贡献。相当于[member ReflectionProbe."
+"internal_enable]。"
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
@@ -78184,7 +78331,7 @@ msgstr ""
"为这个å射探针设置渲染é®è”½ã€‚åªæœ‰å…·æœ‰åŒ¹é…çš„é®è”½ç½©çš„实例æ‰ä¼šè¢«è¿™ä¸ªæŽ¢é’ˆæ¸²æŸ“。等"
"åŒäºŽ[member ReflectionProbe.cull_mask]。"
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
@@ -78193,7 +78340,7 @@ msgstr ""
"如果 [code]true[/code],则使用箱体投影。这å¯ä»¥ä½¿å射在æŸäº›æƒ…å†µä¸‹çœ‹èµ·æ¥æ›´æ­£"
"确。相当于 [member ReflectionProbe.box_projection]。"
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
@@ -78202,14 +78349,14 @@ msgstr ""
"如果 [code]true[/code],计算å射探针中的阴影。这会使得å射的计算速度慢得多。"
"相当于 [member ReflectionProbe.enable_shadows]。"
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-"设置å射探头将æ•获的区域的大å°ã€‚等效于 [member ReflectionProbe.extents]。"
+"设置å射探针将æ•获的区域的大å°ã€‚等效于 [member ReflectionProbe.extents]。"
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
@@ -78217,34 +78364,35 @@ msgstr ""
"设置å射探针的强度。强度调节å射的强度。等效于 [member ReflectionProbe."
"intensity]。"
-#: doc/classes/VisualServer.xml:2409
-#, fuzzy
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-"设置当此åå°„æŽ¢é’ˆå¤„äºŽæ¡†é¡¹ç›®æ¨¡å¼æ—¶è¦ä½¿ç”¨çš„æºå移。相当于[member "
-"ReflectionProbe.origin_offset]。"
+"è®¾ç½®ä¸ºå†…éƒ¨æ¨¡å¼æ—¶ï¼Œä¸ºæ­¤å射探针设置环境光颜色。相当于[member ReflectionProbe."
+"interior_ambient_color]。"
-#: doc/classes/VisualServer.xml:2417
-#, fuzzy
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-"设置å射探针的强度。强度调节å射的强度。等效于 [member ReflectionProbe."
-"intensity]。"
+"å½“è®¾ç½®ä¸ºå†…éƒ¨æ¨¡å¼æ—¶ï¼Œè®¾ç½®æ­¤å射探针环境光贡献的能é‡ä¹˜æ•°ã€‚相当于[member "
+"ReflectionProbe.interior_ambient_energy]。"
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
"ambient light matches the color of the room. Equivalent to [member "
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
+"设置贡献值,å³å½“è®¾ç½®ä¸ºå†…éƒ¨æ¨¡å¼æ—¶ï¼Œå射对该å射探针的环境光的影å“程度。这样å¯"
+"以使环境光与房间的颜色一致。相当于 [member ReflectionProbe."
+"interior_ambient_contrib]。"
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
@@ -78252,7 +78400,7 @@ msgstr ""
"设置物体在被删除å‰ä¸ŽæŽ¢é’ˆçš„æœ€å¤§è·ç¦»ã€‚ç­‰åŒäºŽ[member ReflectionProbe."
"max_distance]。"
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
@@ -78260,15 +78408,15 @@ msgstr ""
"设置当此åå°„æŽ¢é’ˆå¤„äºŽæ¡†é¡¹ç›®æ¨¡å¼æ—¶è¦ä½¿ç”¨çš„æºå移。相当于[member "
"ReflectionProbe.origin_offset]。"
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-"设置å射探针的更新频率。å¯ä»¥æ˜¯ä¸€æ¬¡ï¼Œä¹Ÿå¯ä»¥æ˜¯æ¯ä¸€å¸§ã€‚å‚è§[enum "
+"设置å射探针的更新频率。å¯ä»¥æ˜¯ä¸€æ¬¡ï¼Œä¹Ÿå¯ä»¥æ˜¯æ¯ä¸€å¸§ã€‚å‚阅[enum "
"ReflectionProbeUpdateMode]选项。"
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -78279,8 +78427,7 @@ msgstr ""
"code]。\n"
"回调方法必须åªä½¿ç”¨1ä¸ªå‚æ•°ï¼Œå®ƒå°†ä¸Ž[code]userdata[/code]一起被调用。"
-#: doc/classes/VisualServer.xml:2465
-#, fuzzy
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -78289,22 +78436,23 @@ msgid ""
"VisualServer's [method free_rid] static method.\n"
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-"创建一个场景并将其添加到RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这个RID"
-"将在所有[code]scenario_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。\n"
+"创建一个场景并将其添加到VisualServer中。它å¯ä»¥é€šè¿‡è¿”回的RID进行访问。这个RID"
+"å¯åœ¨æ‰€æœ‰[code]scenario_*[/code]VisualServer函数中使用。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放"
+"RID。\n"
"场景是所有视觉实例所存在的三维世界。"
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr "设置该场景的[enum ScenarioDebugMode]。"
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr "设置将用于此场景的环境。"
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
@@ -78313,13 +78461,13 @@ msgstr ""
"设置此方案所使用的åŽå¤‡çŽ¯å¢ƒã€‚å¦‚æžœæ²¡æœ‰è®¾ç½®çŽ¯å¢ƒï¼Œåˆ™ä½¿ç”¨åŽå¤‡çŽ¯å¢ƒã€‚è¿™è¢«ç¼–è¾‘å™¨ç”¨æ¥"
"æä¾›ä¸€ä¸ªé»˜è®¤çŽ¯å¢ƒã€‚"
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
-msgstr ""
+msgstr "设置此场景中所有å射探针共享的å射图集的大å°ã€‚"
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -78332,33 +78480,34 @@ msgstr ""
"code],图åƒå°†ä»¥çº¿æ€§æ’值进行缩放。如果[code]use_filter[/code]是[code]false[/"
"code],图åƒå°†ä»¥è¿‘é‚»æ’值的方å¼ç¼©æ”¾ã€‚"
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr "如果 [code]true[/code],引擎将生æˆç”¨äºŽçº¿æ¡†è°ƒè¯•模å¼çš„线框。"
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr "è®¾ç½®æœªé€‰æ‹©ç‰¹å®šé€æ˜Žè‰²æ—¶ä½¿ç”¨çš„é»˜è®¤é€æ˜Žè‰²ã€‚"
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
"The default value is [code]1.0[/code], which means [code]TIME[/code] will "
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
+"设置应用于ç€è‰²å™¨ [code]TIME[/code] 内置时间æµé€çš„æ¯”例。\n"
+"默认值是[code]1.0[/code],表示[code]TIME[/code]会éšç€æ—¶é—´çš„æŽ¨ç§»è®¡ç®—实时时间,"
+"ä¸ä¼šç¼©å°æˆ–拉伸它。"
-#: doc/classes/VisualServer.xml:2539
-#, fuzzy
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
-msgstr "å¯ç”¨æˆ–ç¦ç”¨ç”»å¸ƒç¯ã€‚"
+msgstr "å¯ç”¨æˆ–ç¦ç”¨é®æŒ¡å‰”除。"
-#: doc/classes/VisualServer.xml:2545
-#, fuzzy
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -78366,52 +78515,51 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个空的ç€è‰²å™¨å¹¶å°†å…¶æ·»åŠ åˆ° RenderingServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。"
-"此 RID 将用于所有 [code]shader_*[/code] RenderingServer 函数。\n"
-"ä½ å¯ä»¥ä½¿ç”¨ RenderingServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。"
+"创建一个空的ç€è‰²å™¨å¹¶å°†å…¶æ·»åŠ åˆ° VisualServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 "
+"RID å¯ç”¨äºŽæ‰€æœ‰ [code]shader_*[/code] VisualServer 函数。\n"
+"å®Œæˆ RID 处ç†åŽï¼Œå¯ä½¿ç”¨ VisualServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。"
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr "返回ç€è‰²å™¨çš„代ç ã€‚"
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr "从按åç§°æœç´¢çš„ç€è‰²å™¨ä¸­è¿”回一个默认纹ç†ã€‚"
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr "返回ç€è‰²å™¨çš„傿•°ã€‚"
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr "设置ç€è‰²å™¨çš„代ç ã€‚"
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr "设置ç€è‰²å™¨çš„默认纹ç†ã€‚覆盖以å字命å的纹ç†ã€‚"
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr "ä¸ºè¿™ä¸ªéª¨æž¶åˆ†é… GPU 缓冲区。"
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr "返回这个骨架的特定骨骼的[Transform]集åˆã€‚"
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr "返回此骨架的特定骨骼的[Transform2D]集åˆã€‚"
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr "设置此骨架特定骨骼的 [Transform]集åˆã€‚"
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr "设置此骨架特定骨骼的 [Transform2D]集åˆã€‚"
-#: doc/classes/VisualServer.xml:2634
-#, fuzzy
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -78419,16 +78567,15 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个骨架并将其添加到RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这个RID"
-"将被用于所有[code]skeleton_*[/code] RenderingServer函数中。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•æ¥é‡Šæ”¾RID。"
+"创建一个骨架并将其添加到VisualServer中。它å¯ä»¥é€šè¿‡è¿”回的RID进行访问。这个RID"
+"å¯ç”¨äºŽæ‰€æœ‰[code]skeleton_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr "返回分é…给这个骨架的骨骼数é‡ã€‚"
-#: doc/classes/VisualServer.xml:2648
-#, fuzzy
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -78436,17 +78583,15 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个空的天空并将其添加到RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这"
-"个RID将在所有[code]sky_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•æ¥é‡Šæ”¾RID。"
+"创建一个空的天空并将其添加到VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RID"
+"å¯ç”¨äºŽæ‰€æœ‰[code]sky_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
-#: doc/classes/VisualServer.xml:2658
-#, fuzzy
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
-msgstr "设置图å—的纹ç†ã€‚"
+msgstr "设置天空的纹ç†ã€‚"
-#: doc/classes/VisualServer.xml:2664
-#, fuzzy
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -78456,24 +78601,22 @@ msgid ""
"To place in a scene, attach this spot light to an instance using [method "
"instance_set_base] using the returned RID."
msgstr ""
-"创建一个èšå…‰ç¯å¹¶å°†å…¶æ·»åŠ åˆ°RenderingServer中。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这个"
-"RIDå¯ä»¥åœ¨å¤§å¤šæ•°[code]light_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•æ¥é‡Šæ”¾RID。\n"
-"为了在场景中放置,使用返回的RID用[method instance_set_base]将这个èšå…‰ç¯é™„加到"
+"创建一个èšå…‰ç¯å¹¶å°†å…¶æ·»åŠ åˆ°VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RIDå¯"
+"用于大多数[code]light_*[/code] VisualServer函数。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放"
+"RID。\n"
+"è¦åœ¨åœºæ™¯ä¸­æ”¾ç½®ï¼Œè¯·ä½¿ç”¨è¿”回的RID,用[method instance_set_base]将该èšå…‰ç¯é™„加到"
"一个实例上。"
-#: doc/classes/VisualServer.xml:2685
-#, fuzzy
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
-msgstr "ä¸ºè¿™ä¸ªéª¨æž¶åˆ†é… GPU 缓冲区。"
+msgstr "为纹ç†åˆ†é…GPU内存。"
-#: doc/classes/VisualServer.xml:2693
-#, fuzzy
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
-msgstr "将文本å‘左对é½ã€‚"
+msgstr "将纹ç†ç»‘å®šåˆ°çº¹ç†æ§½ã€‚"
-#: doc/classes/VisualServer.xml:2699
-#, fuzzy
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -78481,113 +78624,103 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个空æè´¨å¹¶å°†å…¶æ·»åŠ åˆ° RenderingServer。å¯ä»¥ä½¿ç”¨è¿”回的 RID 访问它。此 "
-"RID 将用于所有 [code]material_*[/code] RenderingServer 函数。\n"
-"å¯ä»¥ä½¿ç”¨ RenderingServer çš„ [method free_rid] 陿€æ–¹æ³•释放 RID。"
+"创建一个空纹ç†å¹¶å°†å…¶æ·»åŠ åˆ°VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RIDå¯"
+"用于所有[code]texture_*[/code] VisualServer函数中。\n"
+"一旦完æˆäº†å¯¹RID的处ç†ï¼Œå¯ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
-msgstr ""
+msgstr "创建纹ç†ï¼Œä¸ºå›¾åƒåˆ†é…空间,并填充图åƒã€‚"
-#: doc/classes/VisualServer.xml:2714
-#, fuzzy
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
-msgstr "返回[Dictionary]中的值列表。"
+msgstr "返回所有纹ç†åŠå…¶ä¿¡æ¯çš„列表。"
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
+"返回纹ç†å›¾åƒçš„副本,除éžå®ƒæ˜¯ CubeMapï¼Œåœ¨è¿™ç§æƒ…况下,它返回立方体一侧的图åƒçš„ "
+"[RID]。"
-#: doc/classes/VisualServer.xml:2729
-#, fuzzy
+#: doc/classes/VisualServer.xml:2730
msgid "Returns the depth of the texture."
-msgstr "返回内容的高度。"
+msgstr "返回纹ç†çš„æ·±åº¦ã€‚"
-#: doc/classes/VisualServer.xml:2736
-#, fuzzy
+#: doc/classes/VisualServer.xml:2737
msgid "Returns the flags of a texture."
-msgstr "返回图å—的纹ç†ã€‚"
+msgstr "返回一个纹ç†çš„æ ‡å¿—flags。"
-#: doc/classes/VisualServer.xml:2743
-#, fuzzy
+#: doc/classes/VisualServer.xml:2744
msgid "Returns the format of the texture's image."
-msgstr "返回两个å‘é‡çš„余数。"
+msgstr "返回纹ç†çš„å›¾åƒæ ¼å¼ã€‚"
-#: doc/classes/VisualServer.xml:2750
-#, fuzzy
+#: doc/classes/VisualServer.xml:2751
msgid "Returns the texture's height."
-msgstr "返回纹ç†é«˜åº¦ã€‚"
+msgstr "返回纹ç†çš„高度。"
-#: doc/classes/VisualServer.xml:2757
-#, fuzzy
+#: doc/classes/VisualServer.xml:2758
msgid "Returns the texture's path."
-msgstr "返回纹ç†å®½åº¦ã€‚"
+msgstr "返回纹ç†çš„路径。"
-#: doc/classes/VisualServer.xml:2764
-#, fuzzy
+#: doc/classes/VisualServer.xml:2765
msgid "Returns the opengl id of the texture's image."
-msgstr "返回四元数的长度。"
+msgstr "返回纹ç†å›¾åƒçš„opengl id。"
-#: doc/classes/VisualServer.xml:2771
-#, fuzzy
+#: doc/classes/VisualServer.xml:2772
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
-msgstr "返回队列中下一个动画的å称。"
+msgstr "返回纹ç†çš„类型,å¯ä»¥æ˜¯[enum TextureType]中的任何一ç§ã€‚"
-#: doc/classes/VisualServer.xml:2778
-#, fuzzy
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
-msgstr "返回纹ç†å®½åº¦ã€‚"
+msgstr "返回纹ç†çš„宽度。"
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
-msgstr ""
+msgstr "设置纹ç†çš„å›¾åƒæ•°æ®ã€‚如果是CubeMapï¼Œå®ƒå°†è®¾ç½®ç«‹æ–¹ä½“è¾¹ä¸Šçš„å›¾åƒæ•°æ®ã€‚"
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
+"设置一个纹ç†çš„部分数æ®ã€‚警告:这个函数直接调用底层图形API,如果使用ä¸å½“å¯èƒ½ä¼š"
+"ç ´å你的纹ç†ã€‚"
-#: doc/classes/VisualServer.xml:2811
-#, fuzzy
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
-msgstr "纹ç†çš„é‡å¤æ ‡å¿—。å‚è§[enum TextureFilter]的选项。"
+msgstr "设置纹ç†çš„æ ‡å¿—flags。选项è§[enum TextureFlags]。"
-#: doc/classes/VisualServer.xml:2819
-#, fuzzy
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
-msgstr "返回纹ç†å®½åº¦ã€‚"
+msgstr "设置纹ç†çš„路径。"
-#: doc/classes/VisualServer.xml:2826
-#, fuzzy
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
-msgstr "如果 [code]true[/code]ï¼Œè¡Œå·æ˜¾ç¤ºåœ¨æ–‡æœ¬çš„左侧。"
+msgstr "如果为[code]true[/code]ï¼Œè®¾ç½®å†…éƒ¨è¿›ç¨‹ï¼Œå°†æ‰€æœ‰å›¾åƒæ•°æ®ç¼©å°åˆ°ä¸€åŠå¤§å°ã€‚"
-#: doc/classes/VisualServer.xml:2843
-#, fuzzy
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
-msgstr "如果[code]true[/code],所有警告将被报告为错误。"
+msgstr "如果为[code]true[/code],如果被覆盖,图åƒå°†å­˜å‚¨åœ¨çº¹ç†çš„å›¾åƒæ•°ç»„中。"
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr "设置视图的相机。"
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr "设置视窗的画布。"
-#: doc/classes/VisualServer.xml:2868
-#, fuzzy
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -78608,12 +78741,11 @@ msgid ""
"manually. For a further optimization see, [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
-"将视å£å¤åˆ¶åˆ°å±å¹•上由[code]rect[/code]指定的区域。如果[method "
-"viewport_set_render_direct_to_screen]是[code]true[/code],那么视å£å°±ä¸ä¼šä½¿ç”¨"
-"帧缓冲器,视å£çš„内容会直接渲染到å±å¹•上。然而,请注æ„ï¼Œæ ¹è§†å£æ˜¯æœ€åŽç»˜åˆ¶çš„,因"
-"此它将在å±å¹•上绘制。因此,你必须将根视å£è®¾ç½®ä¸ºä¸€ä¸ªä¸è¦†ç›–你所附加的这个视å£çš„"
-"区域。\n"
-"例如,你å¯ä»¥ç”¨ä»¥ä¸‹ä»£ç å°†æ ¹è§†å£è®¾ç½®ä¸ºå®Œå…¨ä¸æ¸²æŸ“。\n"
+"将视窗å¤åˆ¶åˆ°å±å¹•上由[code]rect[/code]指定的区域。如果[member Viewport."
+"render_direct_to_screen]是[code]true[/code],那么视窗就ä¸ä¼šä½¿ç”¨å¸§ç¼“冲器,视窗"
+"的内容会直接渲染到å±å¹•上。然而,请注æ„,根视窗是最åŽç»˜åˆ¶çš„,因此它将在å±å¹•上"
+"绘制。因此,你必须将根视å£è®¾ç½®ä¸ºä¸€ä¸ªä¸è¦†ç›–你所附加的这个视å£çš„区域。\n"
+"例如,你å¯ä»¥ç”¨ä»¥ä¸‹ä»£ç å°†æ ¹è§†çª—è®¾ç½®ä¸ºå®Œå…¨ä¸æ¸²æŸ“。\n"
"[codeblock]\n"
"func _ready():\n"
" get_viewport().set_attach_to_screen_rect(Rect2())\n"
@@ -78623,8 +78755,7 @@ msgstr ""
"管ç†ä½ çš„视å£ã€‚对于进一步的优化,请看,[method "
"viewport_set_render_direct_to_screen]。"
-#: doc/classes/VisualServer.xml:2881
-#, fuzzy
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -78632,35 +78763,34 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"创建一个空的视å£å¹¶å°†å…¶æ·»åŠ åˆ°RenderingServer。它å¯ä»¥é€šè¿‡è¿”回的RID被访问。这个"
-"RID将在所有[code]viewport_*[/code] RenderingServer函数中使用。\n"
-"ä½ å¯ä»¥ä½¿ç”¨RenderingServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
+"创建一个空视å£å¹¶å°†å…¶æ·»åŠ åˆ°VisualServer中。å¯ä»¥ç”¨è¿”回的RIDæ¥è®¿é—®å®ƒã€‚这个RIDå°†"
+"用于所有[code]viewport_*[/code] 的VisualServer函数。\n"
+"一旦你用完了RID,你è¦ä½¿ç”¨VisualServerçš„[method free_rid]陿€æ–¹æ³•释放RID。"
-#: doc/classes/VisualServer.xml:2889
-#, fuzzy
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
-msgstr "从画布分离视å£ï¼Œå之亦然。"
+msgstr "将视窗从å±å¹•上分离。"
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr "返回视窗的渲染信æ¯ã€‚有关选项,请å‚阅 [enum ViewportRenderInfo] 常é‡ã€‚"
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr "è¿”å›žè§†çª—çš„æœ€åŽæ¸²æŸ“帧。"
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr "从画布分离视å£ï¼Œå之亦然。"
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
"如果 [code]true[/code],则将视窗设置为活动状æ€ï¼Œå¦åˆ™å°†å…¶è®¾ç½®ä¸ºéžæ´»åŠ¨çŠ¶æ€ã€‚"
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
@@ -78670,57 +78800,55 @@ msgstr ""
"[code]layer[/code]是实际的画布层,而[code]sublayer[/code]则指定画布在åŒä¸€å±‚中"
"的堆å é¡ºåºã€‚"
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr "è®¾ç½®è§†çª—ç”»å¸ƒçš„å˜æ¢ã€‚"
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr "设置视窗的清除模å¼ã€‚详è§[enum ViewportClearMode]。"
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr "设置视窗的调试绘图模å¼ã€‚详è§[enum ViewportDebugDraw]。"
-#: doc/classes/VisualServer.xml:2964
-#, fuzzy
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
-msgstr "如果 [code]true[/code],则ç¦ç”¨è§†çª—环境的渲染。"
+msgstr "如果为 [code]true[/code],则视窗的 3D 渲染将ç¦ç”¨ã€‚"
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr "如果 [code]true[/code],则ç¦ç”¨è§†çª—环境的渲染。"
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr "è®¾ç½®è§†çª—çš„å…¨å±€å˜æ¢çŸ©é˜µã€‚"
-#: doc/classes/VisualServer.xml:2988
-#, fuzzy
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
-msgstr "如果 [code]true[/code]ï¼Œåˆ™ä¸æ¸²æŸ“视窗的画布。"
+msgstr "如果 [code] true [/code],视窗将呈现为 hdr。"
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr "如果 [code]true[/code]ï¼Œåˆ™ä¸æ¸²æŸ“视窗的画布。"
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr "ç›®å‰åœ¨ Godot 3.x 中未实现。"
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr "设置抗锯齿模å¼ã€‚详è§[enum ViewportMSAA]。"
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr "设置视窗的父视窗到å¦ä¸€ä¸ªè§†çª—。"
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -78743,7 +78871,7 @@ msgstr ""
"个两å€äºŽçª—å£å¤§å°çš„视å£ï¼Œå¹¶ä¸”ä½ è®¾ç½®äº†è¿™ä¸ªï¼Œé‚£ä¹ˆåªæœ‰é€‚åˆçª—å£çš„部分æ‰ä¼šè¢«ç»˜åˆ¶ï¼Œ"
"没有自动缩放的å¯èƒ½ï¼Œå³ä½¿ä½ çš„æ¸¸æˆåœºæ™¯æ˜Žæ˜¾å¤§äºŽçª—å£å¤§å°ã€‚"
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
@@ -78752,11 +78880,11 @@ msgstr ""
"设置一个视窗的场景。\n"
"场景包å«[enum ScenarioDebugMode]的信æ¯ã€çŽ¯å¢ƒä¿¡æ¯ã€å射图集等。"
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr "设置阴影图集象é™çš„细分。"
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
@@ -78764,7 +78892,7 @@ msgstr ""
"设置阴影图集的图åƒå¤§å°ï¼ˆç”¨äºŽæ³›å…‰ç¯å’Œèšå…‰ç¯ï¼‰ã€‚该值将被四èˆäº”入到最接近的2çš„n"
"次方。"
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -78773,38 +78901,40 @@ msgid ""
"[code]0.5[/code] generally give the best results. See also [method "
"viewport_set_use_fxaa]."
msgstr ""
+"为视å£[code]viewport[/code]设定é”化强度[code]intensity[/code]。如果设置为大于"
+"[code]0.0[/code]的值,对比度适应性é”化将被应用到3D视å£ä¸­ã€‚这具有较低的性能æˆ"
+"本,å¯ä»¥ç”¨æ¥æ¢å¤ä½¿ç”¨FXAAæ—¶æŸå¤±çš„一些é”度。一般æ¥è¯´ï¼Œ[code]0.5[/code]å·¦å³çš„值"
+"å¯ä»¥å¾—到最好的效果。å‚阅[method viewport_set_use_fxaa]。"
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr "设置视窗的宽度和高度。"
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr "如果 [code]true[/code]ï¼Œè§†çª—å°†å…¶èƒŒæ™¯æ¸²æŸ“ä¸ºé€æ˜Žã€‚"
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr "设置应更新视窗的时间。请å‚阅 [enum ViewportUpdateMode] 。"
-#: doc/classes/VisualServer.xml:3095
-#, fuzzy
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
-msgstr "设置应更新视窗的时间。请å‚阅 [enum ViewportUpdateMode] 。"
+msgstr "设置视窗的2D/3D模å¼ã€‚选项è§[enum ViewportUsage]视窗使用常数。"
-#: doc/classes/VisualServer.xml:3103
-#, fuzzy
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-"如果 [code]true[/code],则视窗使用增强或虚拟现实技术。请å‚阅 [XR 接å£]。"
+"如果 [code]true[/code],则视窗使用增强或虚拟现实技术。å‚阅 [ARVRInterface]。"
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -78814,9 +78944,13 @@ msgid ""
"[b]Note:[/b] Only available on the GLES3 backend. [member Viewport.hdr] must "
"also be [code]true[/code] for debanding to be effective."
msgstr ""
+"如果为真[code]true[/code],则使用一个快速的åŽå¤„ç†æ»¤æ³¢å™¨ï¼Œä½¿å¸¦çŠ¶çŽ°è±¡æ˜Žæ˜¾å‡å°‘。"
+"在æŸäº›æƒ…况下,去带å¯èƒ½ä¼šå¼•入一个ç¨å¾®æ˜Žæ˜¾çš„æŠ–动模å¼ã€‚å»ºè®®åªæœ‰åœ¨å®žé™…éœ€è¦æ—¶æ‰å¯"
+"用去带,因为抖动模å¼ä¼šä½¿æ— æŸåŽ‹ç¼©çš„å±å¹•截图å˜å¤§ã€‚\n"
+"[b]注æ„:[/b] 仅在GLES3åŽç«¯å¯ç”¨ã€‚[member Viewport.hdr]也必须是[code]true[/"
+"code]æ‰èƒ½ä½¿debanding生效。"
-#: doc/classes/VisualServer.xml:3120
-#, fuzzy
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -78825,16 +78959,16 @@ msgid ""
"recovered by enabling contrast-adaptive sharpening (see [method "
"viewport_set_sharpen_intensity])."
msgstr ""
-"使用快速的近似抗锯齿。FXAAæ˜¯ä¸€ç§æµè¡Œçš„å±å¹•空间抗锯齿方法,它的速度很快,但会"
-"使图åƒçœ‹èµ·æ¥å¾ˆæ¨¡ç³Šï¼Œç‰¹åˆ«æ˜¯åœ¨è¾ƒä½Žçš„分辨率。在1440på’Œ4K等大分辨率下,ä»ç„¶å¯ä»¥ç›¸"
-"对良好地工作。"
+"å¯ç”¨è¯¥è§†çª—的快速近似抗锯齿。FXAAæ˜¯ä¸€ç§æµè¡Œçš„å±å¹•空间抗锯齿方法,它速度快,但"
+"会使图åƒçœ‹èµ·æ¥å¾ˆæ¨¡ç³Šï¼Œç‰¹åˆ«æ˜¯åœ¨ä½Žåˆ†è¾¨çŽ‡ä¸‹ã€‚åœ¨å¤§çš„åˆ†è¾¨çŽ‡ä¸‹ï¼Œå¦‚1440på’Œ4K,它ä»ç„¶"
+"å¯ä»¥å·¥ä½œå¾—比较好。一些æŸå¤±çš„é”度å¯ä»¥é€šè¿‡å¯ç”¨å¯¹æ¯”度适应性é”åŒ–æ¥æ¢å¤ï¼ˆè§"
+"[method viewport_set_sharpen_intensity])。"
-#: doc/classes/VisualServer.xml:3128
-#, fuzzy
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
-msgstr "如果为 [code]true[/code],纹ç†å°†è¢«åž‚直翻转。"
+msgstr "如果 [code]true[/code],则视窗的渲染垂直翻转。"
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
@@ -78843,208 +78977,199 @@ msgstr ""
"如果[code]false[/code],则完全ç¦ç”¨æ¸²æŸ“,但引擎逻辑ä»åœ¨å¤„ç†ä¸­ã€‚å³ä½¿ç¦ç”¨æ¸²æŸ“,"
"您也å¯ä»¥è°ƒç”¨ [method force_draw] æ¥ç»˜åˆ¶å¸§ã€‚"
-#: doc/classes/VisualServer.xml:3140
-#, fuzzy
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
-msgstr "在 RenderingServer å®Œæˆæ›´æ–°æ‰€æœ‰è§†å£åŽï¼Œåœ¨å¸§çš„æœ«å°¾å‘出。"
+msgstr "在VisualServerå®Œæˆæ›´æ–°æ‰€æœ‰è§†çª—åŽï¼Œåœ¨å¸§çš„æœ€åŽå‘出。"
-#: doc/classes/VisualServer.xml:3145
-#, fuzzy
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
-msgstr "在RenderingServer更新所有视å£ä¹‹å‰ï¼Œåœ¨å¸§çš„开始å‘出。"
+msgstr "在VisualServer更新所有视窗之å‰ï¼Œåœ¨å¸§çš„开始å‘出。"
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr "标记一个错误,表明索引数组为空。"
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr "æ¯ä¸ªé¡¶ç‚¹çš„æƒé‡/骨骼数。"
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr "ç”»å¸ƒé¡¹ç›®çš„æœ€å° Z 层。"
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr "帆布项目的最大 Z 层。"
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr "å¯ç”¨äºŽå‘å…‰åŽæœŸå¤„ç†æ•ˆæžœçš„æœ€å¤§å‘光级别数。"
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr "在Godot 3.x中未使用的枚举。"
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr "所有æè´¨çš„æœ€å°æ¸²æŸ“优先级。"
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr "所有æè´¨çš„æœ€å¤§æ¸²æŸ“优先级。"
-#: doc/classes/VisualServer.xml:3175
-#, fuzzy
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
-msgstr "设置一个列的标题。"
+msgstr "标记立方体贴图的左侧。"
-#: doc/classes/VisualServer.xml:3178
-#, fuzzy
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
-msgstr "设置一个列的标题。"
+msgstr "标记立方体贴图cubemapçš„å³ä¾§ã€‚"
-#: doc/classes/VisualServer.xml:3181
-#, fuzzy
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
-msgstr "设置一个列的标题。"
+msgstr "标记立方体图cubemap的底部。"
-#: doc/classes/VisualServer.xml:3184
-#, fuzzy
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
-msgstr "设置一个列的标题。"
+msgstr "标记cubemap的顶é¢ã€‚"
-#: doc/classes/VisualServer.xml:3187
-#, fuzzy
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
-msgstr "设置一个列的标题。"
+msgstr "标记立方体贴图的正é¢ã€‚"
-#: doc/classes/VisualServer.xml:3190
-#, fuzzy
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
-msgstr "设置一个列的标题。"
+msgstr "标记立方体贴图的背é¢ã€‚"
-#: doc/classes/VisualServer.xml:3193
-#, fuzzy
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
-msgstr "返回图åƒçš„大å°ï¼ˆå®½åº¦å’Œé«˜åº¦ï¼‰ã€‚"
+msgstr "具有 2 个维度,宽度和高度的法线纹ç†ã€‚"
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
-msgstr ""
+msgstr "由六个é¢ç»„æˆçš„纹ç†ï¼Œå¯ä»¥åœ¨ç€è‰²å™¨ä¸­ä½¿ç”¨ [code]vec3[/code] 查找。"
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
-msgstr ""
+msgstr "一组二维纹ç†ã€‚"
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
-msgstr ""
+msgstr "具有宽度ã€é«˜åº¦å’Œæ·±åº¦çš„ 3 维纹ç†ã€‚"
-#: doc/classes/VisualServer.xml:3208
-#, fuzzy
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
-msgstr "返回图å—的纹ç†åç§»é‡ã€‚"
+msgstr "é‡å¤çº¹ç†ï¼Œè€Œä¸æ˜¯é™åˆ¶åœ¨è¾¹ç¼˜ã€‚"
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
-msgstr ""
+msgstr "使用镜åƒçš„交替部分é‡å¤çº¹ç†ã€‚"
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
+"默认标志。å¯ç”¨ [constant TEXTURE_FLAG_MIPMAPS]ã€[constant "
+"TEXTURE_FLAG_REPEAT] 和 [constant TEXTURE_FLAG_FILTER] 。"
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr "ç€è‰²å™¨æ˜¯ä¸€ä¸ª 3D ç€è‰²å™¨ã€‚"
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr "ç€è‰²å™¨æ˜¯ä¸€ä¸ª 2D ç€è‰²å™¨ã€‚"
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr "ç€è‰²å™¨æ˜¯ä¸€ä¸ªç²’å­ç€è‰²å™¨ã€‚"
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr "代表[enum ShaderMode]枚举的大å°ã€‚"
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr "数组是一个顶点数组。"
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr "数组是普通数组。"
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr "数组是一个切线数组。"
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr "数组是一个颜色数组。"
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr "数组是一个 UV åæ ‡æ•°ç»„。"
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr "数组是第二个 UV åæ ‡çš„ UV åæ ‡æ•°ç»„。"
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr "数组包å«éª¨éª¼ä¿¡æ¯ã€‚"
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr "数组是é‡é‡ä¿¡æ¯ã€‚"
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr "数组是索引数组。"
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr "用于标记顶点数组的标志。"
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr "用于标记正常数组的标志。"
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr "用于标记切线数组的标志。"
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr "用于标记颜色数组的标记。"
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr "用于标记 UV åæ ‡æ•°ç»„的标志。"
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr "用于标记第二个UVåæ ‡çš„UVåæ ‡æ•°ç»„的标志。"
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr "ç”¨æ¥æ ‡è®°éª¨éª¼ä¿¡æ¯æ•°ç»„的标志。"
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr "用于标记é‡é‡æ•°ç»„的标记。"
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr "用于标记索引数组的标志。"
-#: doc/classes/VisualServer.xml:3335
-#, fuzzy
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -79052,326 +79177,320 @@ msgid ""
"ARRAY_COMPRESS_WEIGHTS], and [constant "
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-"曾用于快速设置 flags [constant ARRAY_COMPRESS_NORMAL], [constant "
-"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
-"ARRAY_COMPRESS_TEX_UV] 和 [constant ARRAY_COMPRESS_TEX_UV2] 。"
+"用于快速设置标志[constant ARRAY_COMPRESS_NORMAL]ã€[constant "
+"ARRAY_COMPRESS_TANGENT]ã€[constant ARRAY_COMPRESS_COLOR]ã€[constant "
+"ARRAY_COMPRESS_TEX_UV]ã€[constant ARRAY_COMPRESS_TEX_UV2]ã€[constant "
+"ARRAY_COMPRESS_WEIGHTS] 和[constant ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] 。"
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr "基本网格绘制由点组æˆã€‚"
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr "基本网格绘制由线æ¡ç»„æˆã€‚"
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr "基本网格的绘制由一æ¡é¦–尾闭åˆçš„线æ¡ç»„æˆã€‚"
-#: doc/classes/VisualServer.xml:3347
-#, fuzzy
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
-msgstr "基本网格绘制由一个三角形æ¡ç»„æˆï¼ˆæœ€åŽ3ä¸ªé¡¶ç‚¹æ€»æ˜¯ç»„åˆæˆä¸€ä¸ªä¸‰è§’形)。"
+msgstr "绘制的图元包括一个线环,å³åœ¨æœ€åŽä¸€ä¸ªå’Œç¬¬ä¸€ä¸ªé¡¶ç‚¹ä¹‹é—´æœ‰ä¸€æ¡çº¿çš„线æ¡ã€‚"
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr "基本网格的绘制由三角形组æˆã€‚"
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr "基本网格绘制由一个三角形æ¡ç»„æˆï¼ˆæœ€åŽ3ä¸ªé¡¶ç‚¹æ€»æ˜¯ç»„åˆæˆä¸€ä¸ªä¸‰è§’形)。"
-#: doc/classes/VisualServer.xml:3356
-#, fuzzy
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
-msgstr "基本网格绘制由一个三角形æ¡ç»„æˆï¼ˆæœ€åŽ3ä¸ªé¡¶ç‚¹æ€»æ˜¯ç»„åˆæˆä¸€ä¸ªä¸‰è§’形)。"
+msgstr "图元绘制由三角形æ¡ç»„æˆï¼Œæœ€åŽ3ä¸ªé¡¶ç‚¹æ€»æ˜¯ç»„åˆæˆä¸€ä¸ªä¸‰è§’形。"
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr "表示 [enum PrimitiveType] 枚举的大å°ã€‚"
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr "是定å‘(日光)ç¯ã€‚"
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr "是泛光ç¯ã€‚"
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr "是èšå…‰ç¯ã€‚"
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr "ç¯å…‰çš„能é‡ã€‚"
-#: doc/classes/VisualServer.xml:3380
-#, fuzzy
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
-msgstr "与间接光(光å弹)一起使用的二级å€å¢žå™¨ã€‚与[GIProbe]一起使用。"
+msgstr "与间接光(光å射)一起使用的二次å€å¢žå™¨ã€‚"
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
-msgstr ""
+msgstr "ç¯å…‰çš„大å°ï¼Œç›®å‰ä»…用于烘焙光照贴图中的柔和阴影。"
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr "ç¯å…‰å¯¹é•œé¢å射的影å“。"
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr "ç¯å…‰çš„范围。"
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr "光线的衰å‡ã€‚"
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr "èšå…‰ç¯çš„角度。"
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr "èšå…‰ç¯çš„è¡°å‡ã€‚"
-#: doc/classes/VisualServer.xml:3401
-#, fuzzy
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
-msgstr "设置字体颜色[Color]。"
+msgstr "缩放阴影的颜色。"
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr "阴影被渲染的最大è·ç¦»ã€‚"
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr "ç¬¬ä¸€æ¬¡æ‹†åˆ†æ‰€å æ®çš„阴影图集的比例。"
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr "第二次拆分所å ç”¨çš„阴影图集的比例。"
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr "第三次拆分所å ç”¨çš„é˜´å½±å›¾é›†çš„æ¯”ä¾‹ã€‚ç¬¬å››ä¸ªæ‹†åˆ†å æ®äº†å…¶ä½™éƒ¨åˆ†ã€‚"
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr "法线å移,用于抵消物体法线的阴影查找。å¯ä»¥ç”¨æ¥ä¿®å¤è‡ªé˜´å½±çš„伪影。"
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr "对阴影查找进行å移,以修å¤è‡ªæˆ‘阴影的å‡è±¡ã€‚"
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
-msgstr ""
+msgstr "增加对进一步分割的å差,以修å¤ä»…在远离相机的地方å‘生的自身阴影。"
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr "代表[enum LightParam]枚举的大å°ã€‚"
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr "对泛光ç¯ä½¿ç”¨åŒæŠ›ç‰©é¢é˜´å½±è´´å›¾ã€‚"
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr "对泛光ç¯ä½¿ç”¨ç«‹æ–¹ä½“è´´å›¾é˜´å½±è´´å›¾ã€‚æ¯”åŒæŠ›ç‰©é¢æ›´æ…¢ä½†è´¨é‡æ›´å¥½ã€‚"
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
-msgstr ""
+msgstr "在计算阴影贴图时,在垂直方å‘上使用更多的细节。"
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
-msgstr ""
+msgstr "在计算阴影贴图时,在水平方å‘上使用更多的细节。"
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr "对定å‘光使用正交阴影投影。"
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr "使用定å‘光时,使用 2 个分割进行阴影投影。"
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr "使用定å‘光时,使用 4 个分割进行阴影投影。"
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
-msgstr "å½“æ‘„åƒæœºç§»åŠ¨æ—¶ï¼Œä¿æŒé˜´å½±ç¨³å®šï¼Œä½†æœ‰æ•ˆåˆ†è¾¨çŽ‡è¾ƒä½Žã€‚"
+msgstr "å½“ç›¸æœºç§»åŠ¨æ—¶ï¼Œä¿æŒé˜´å½±ç¨³å®šï¼Œä½†æœ‰æ•ˆåˆ†è¾¨çŽ‡è¾ƒä½Žã€‚"
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr "优化阴影贴图的使用,æé«˜æœ‰æ•ˆåˆ†è¾¨çŽ‡ã€‚ä½†å¯èƒ½ä¼šå¯¼è‡´é˜´å½±è½»å¾®ç§»åŠ¨æˆ–é—ªçƒã€‚"
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr "ä¸è¦æ›´æ–°è§†çª—。"
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr "更新一次视窗,然åŽè®¾ç½®ä¸ºç¦ç”¨ã€‚"
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr "åªè¦è§†çª—是å¯è§çš„,就更新视窗。"
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr "始终更新视窗。"
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr "在绘图之å‰ï¼Œè§†çª—总是被清空。"
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr "在绘图之å‰ï¼Œè§†çª—永远ä¸ä¼šè¢«æ¸…空。"
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr "è§†çª—è¢«æ¸…é™¤ä¸€æ¬¡ï¼Œç„¶åŽæ¸…除模å¼è®¾ç½®ä¸º [constant VIEWPORT_CLEAR_NEVER]。"
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr "多é‡é‡‡æ ·æŠ—锯齿被ç¦ç”¨ã€‚"
-#: doc/classes/VisualServer.xml:3485
-#, fuzzy
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
-msgstr "多é‡é‡‡æ ·æŠ—锯齿被ç¦ç”¨ã€‚"
+msgstr "多é‡é‡‡æ ·æŠ—锯齿设置为 2×。"
-#: doc/classes/VisualServer.xml:3488
-#, fuzzy
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
-msgstr "多é‡é‡‡æ ·æŠ—锯齿被ç¦ç”¨ã€‚"
+msgstr "多é‡é‡‡æ ·æŠ—锯齿设置为 4×。"
-#: doc/classes/VisualServer.xml:3491
-#, fuzzy
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
-msgstr "多é‡é‡‡æ ·æŠ—锯齿被ç¦ç”¨ã€‚"
+msgstr "多é‡é‡‡æ ·æŠ—锯齿设置为 8×。"
-#: doc/classes/VisualServer.xml:3494
-#, fuzzy
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
-msgstr "多é‡é‡‡æ ·æŠ—锯齿被ç¦ç”¨ã€‚"
+msgstr "多采样抗锯齿设置为16×。"
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
+"多é‡é‡‡æ ·æŠ—锯齿设置为外部纹ç†çš„2å€ã€‚为GLES2 Android VR(Oculus Questå’ŒGo)æä¾›"
+"的特殊模å¼ã€‚"
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
+"多é‡é‡‡æ ·æŠ—锯齿在外部纹ç†ä¸Šè¢«è®¾ç½®ä¸º4å€ã€‚为GLES2 Android VR(Oculus Questå’ŒGo)"
+"æä¾›çš„特殊模å¼ã€‚"
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
-msgstr ""
+msgstr "è§†çª—å¹¶ä¸æ¸²æŸ“3D,而是渲染采样。"
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
-msgstr ""
+msgstr "è§†çª—å¹¶ä¸æ¸²æŸ“3D,也ä¸è¿›è¡Œé‡‡æ ·ã€‚"
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
-msgstr ""
+msgstr "视窗渲染 3D 效果。"
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
-msgstr ""
+msgstr "视窗渲染的是3D,但没有效果。"
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr "在å•帧中绘制的对象的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr "在å•个帧中绘制的顶点数。"
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr "此帧期间æè´¨æ›´æ”¹çš„æ•°é‡ã€‚"
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr "这一帧中ç€è‰²å™¨å˜åŒ–的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr "这一帧中表é¢å˜åŒ–的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr "此帧期间的绘制调用数。"
-#: doc/classes/VisualServer.xml:3533
-#, fuzzy
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
-msgstr "此帧期间的绘制调用数。"
+msgstr "此帧所绘制的2d项的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3536
-#, fuzzy
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
-msgstr "此帧期间的绘制调用数。"
+msgstr "在这一帧中,2d绘制所调用的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr "代表[enum ViewportRenderInfo]枚举的大å°ã€‚"
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr "调试绘制被ç¦ç”¨ã€‚默认设置。"
-#: doc/classes/VisualServer.xml:3545
-#, fuzzy
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
-msgstr "调试绘制 在线框中绘制对象。"
+msgstr "调试绘制将对象设置为无阴影。"
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
-msgstr ""
+msgstr "将清除颜色覆盖为[code](0,0,0,0)[/code]。"
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr "调试绘制 在线框中绘制对象。"
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr "ä¸è¦ä½¿ç”¨è°ƒè¯•模å¼ã€‚"
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr "以线框模型绘制所有对象。"
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
@@ -79380,371 +79499,366 @@ msgstr ""
"以显示有多少过度绘制的方å¼ç»˜åˆ¶å¯¹è±¡ã€‚当一个åƒç´ éƒ¨åˆ†è¢«ç»˜åˆ¶å’Œç€è‰²ï¼Œç„¶åŽå¦ä¸€ä¸ªç‰©"
"体将其覆盖时,就会å‘生过度绘制。为了优化一个场景,你应该å‡å°‘过度绘制。"
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
"绘制没有阴影的所有物体。相当于将所有物体的ç€è‰²å™¨è®¾ç½®ä¸º[code]unshaded[/code]。"
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr "实例没有类型。"
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr "该实例是一个网格。"
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr "该实例是一个多网格。"
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr "è¯¥å®žä¾‹æ˜¯ä¸€ä¸ªå³æ—¶å‡ ä½•图形。"
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr "该实例是一个粒å­å‘射器。"
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr "该实例是一个ç¯ã€‚"
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr "该实例是一个å射探针。"
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr "该实例是一个GI探针。"
-#: doc/classes/VisualServer.xml:3590
-#, fuzzy
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
-msgstr "该实例是一个光照贴图。"
+msgstr "该实例是一个光照贴图æ•获。"
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr "代表[enum InstanceType]枚举的大å°ã€‚"
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr "几何体实例(网格ã€å¤šç½‘æ ¼ã€å³æ—¶å’Œç²’å­ï¼‰çš„æ ‡å¿—的组åˆã€‚"
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr "å…许在烘焙照明中使用实例。"
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr "当设置时,手动请求在下一帧绘制几何图形。"
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr "代表[enum InstanceFlags]枚举的大å°ã€‚"
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr "ç¦ç”¨è¿™ä¸ªå®žä¾‹çš„阴影。"
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr "从此实例投下阴影。"
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
"在渲染对象的阴影时ç¦ç”¨èƒŒé¢å‰”除。这会ç¨å¾®æ…¢ä¸€äº›ï¼Œä½†å¯èƒ½ä¼šäº§ç”Ÿæ›´æ­£ç¡®çš„阴影。"
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr "仅渲染对象的阴影。对象本身ä¸ä¼šè¢«ç»˜åˆ¶ã€‚"
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr "ä¹å®«æ ¼åœ¨éœ€è¦çš„地方被拉伸。"
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr "ä¹å®«æ ¼åœ¨éœ€è¦çš„地方填充瓷砖。"
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr "ä¹å®«æ ¼åœ¨éœ€è¦çš„åœ°æ–¹å¡«å……ç“·ç –ï¼Œå¹¶åœ¨éœ€è¦æ—¶å°†å®ƒä»¬æ‹‰ä¼¸ä¸€ç‚¹ã€‚"
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr "å‘画布添加浅色。"
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr "从画布中å‡åŽ»æµ…è‰²ã€‚"
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr "ç¯å…‰æ ¹æ®é€æ˜Žåº¦å¢žåŠ é¢œè‰²ã€‚"
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr "ç¯å…‰æ ¹æ®é®ç½©å¢žåŠ é¢œè‰²ã€‚"
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr "ä¸è¦å¯¹ç”»å¸ƒä¸Šçš„光影应用滤镜。"
-#: doc/classes/VisualServer.xml:3644
-#, fuzzy
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
-msgstr "使用PCF13过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
+msgstr "使用PCF3过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr "使用PCF5过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
-#: doc/classes/VisualServer.xml:3650
-#, fuzzy
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
-msgstr "使用PCF5过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
+msgstr "使用PCF7过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
-#: doc/classes/VisualServer.xml:3653
-#, fuzzy
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
-msgstr "使用PCF5过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
+msgstr "使用PCF9过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr "使用PCF13过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr "ç¦ç”¨ç”»å¸ƒé®æŒ¡ç‰©çš„剔除。"
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr "ç”»å¸ƒé®æŒ¡å™¨çš„剔除是顺时针的。"
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr "ç”»å¸ƒé®æŒ¡ç‰©çš„剔除是逆时针的。"
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr "框架中的对象数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr "框架中顶点的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr "æ¡†æž¶ä¸­ä¿®æ”¹ææ–™çš„æ•°é‡ã€‚"
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr "叧䏭釿–°ç»‘定的ç€è‰²å™¨æ•°é‡ã€‚"
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr "å¸§ä¸­çš„è¡¨é¢æ›´æ”¹é‡ã€‚"
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr "帧中绘制调用的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3686
-#, fuzzy
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
-msgstr "框架中顶点的数é‡ã€‚"
+msgstr "帧中2d项的数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3689
-#, fuzzy
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
-msgstr "帧中绘制调用的数é‡ã€‚"
+msgstr "帧中2d绘制调用数é‡ã€‚"
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr "硬件支æŒç€è‰²å™¨ã€‚这个枚举目å‰åœ¨Godot 3.x中没有使用。"
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr "硬件支æŒå¤šçº¿ç¨‹ã€‚这个枚举目å‰åœ¨Godot 3.x中没有使用。"
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr "使用 [Transform2D] 存储 MultiMesh å˜æ¢ã€‚"
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr "使用 [Transform] 存储 MultiMesh å˜æ¢ã€‚"
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
-msgstr ""
+msgstr "MultiMeshä¸ä½¿ç”¨æ¯ä¸ªå®žä¾‹çš„颜色。"
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
-msgstr ""
+msgstr "多网格颜色使用æ¯ä¸ªç»„ä»¶ 8 ä½ã€‚这将颜色打包æˆä¸€ä¸ªæµ®ç‚¹æ•°ã€‚"
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
-msgstr ""
+msgstr "多网格颜色使用æ¯ä¸ªé€šé“的浮点数。"
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
-msgstr ""
+msgstr "MultiMeshä¸ä½¿ç”¨è‡ªå®šä¹‰æ•°æ®ã€‚"
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
+"å¤šç½‘æ ¼è‡ªå®šä¹‰æ•°æ®æ¯ä¸ªç»„件使用 8 ä½ã€‚这将 4 ä¸ªç»„ä»¶çš„è‡ªå®šä¹‰æ•°æ®æ‰“包到一个浮点数"
+"中。"
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
-msgstr ""
+msgstr "多网格自定义数æ®ä½¿ç”¨æ¯ä¸ªç»„件的浮点数。"
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
-msgstr "å射探测器将更新一次å射,然åŽåœæ­¢ã€‚"
+msgstr "å射探针将更新一次å射,然åŽåœæ­¢ã€‚"
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr "å射探针将æ¯å¸§æ›´æ–°ã€‚è¿™ç§æ¨¡å¼å¯¹äºŽæ•æ‰ç§»åŠ¨ç‰©ä½“æ˜¯å¿…è¦çš„。"
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr "æŒ‰ç…§ç²’å­æ•°ç»„中出现的顺åºç»˜åˆ¶ç²’å­ã€‚"
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr "æ ¹æ®ç²’å­çš„寿命对其进行分类。"
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr "æ ¹æ®ç²’å­ä¸Žç›¸æœºçš„è·ç¦»å¯¹å…¶è¿›è¡ŒæŽ’åºã€‚"
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr "ç”¨é€æ˜Žçš„颜色作为背景。"
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr "使用指定的颜色作为背景。"
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr "使用天空资æºä½œä¸ºèƒŒæ™¯ã€‚"
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
-msgstr ""
+msgstr "使用自定义颜色作为背景,但使用天空作为阴影和å射。"
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
"使用一个指定的画布层作为背景。这对在三维世界中实例化一个二维场景很有用。"
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr "ä¸è¦æ¸…除背景,使用上一帧渲染的东西作为背景。"
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr "代表[enum EnvironmentBG]枚举的大å°ã€‚"
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
-msgstr ""
+msgstr "使用最低的模糊质é‡ã€‚最快,但å¯èƒ½çœ‹èµ·æ¥ä¸å¥½ã€‚"
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
-msgstr ""
+msgstr "使用中等模糊质é‡ã€‚"
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
-msgstr ""
+msgstr "使用最高的模糊质é‡ã€‚çœ‹èµ·æ¥æœ€å¥½ï¼Œä½†é€Ÿåº¦æœ€æ…¢ã€‚"
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
-msgstr ""
+msgstr "在场景的顶部添加辉光的效果。"
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
-msgstr ""
+msgstr "将辉光效果与å±å¹•相èžåˆã€‚ä¸åƒæ·»åŠ ç‰©é‚£æ ·æ˜Žäº®ã€‚"
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
-msgstr ""
+msgstr "在物体周围产生微妙的颜色扰动。"
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
-msgstr ""
+msgstr "在没有底层场景的情况下,å•独显示辉光效果。"
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr "颜色怎么进æ¥å°±æ€Žä¹ˆè¾“出。"
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr "使用 Reinhard 色调映射器。"
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr "使用电影色调映射器。"
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr "使用 ACES 色调映射器。"
-#: doc/classes/VisualServer.xml:3803
-#, fuzzy
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
-msgstr "使用 ACES 色调映射器。"
+msgstr "使用ACES的拟åˆè‰²è°ƒå›¾ã€‚"
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr "最低的å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡è´¨é‡ã€‚"
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr "中等质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡ã€‚"
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr "最高质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡ã€‚"
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr "ç¦ç”¨ SSAO 的模糊设置。会使 SSAO 看起æ¥å™ªç‚¹æ›´å¤šã€‚"
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr "对 SSAO 输出执行 1x1 模糊。"
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr "对 SSAO 输出执行 2x2 模糊。"
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr "对SSAO输出执行3x3模糊。使用它å¯ä»¥èŽ·å¾—æœ€å¹³æ»‘çš„SSAO。"
@@ -79848,14 +79962,15 @@ msgid ""
"and a set of properties. Each node has also connection ports that allow to "
"connect it to another nodes and control the flow of the shader."
msgstr ""
+"å¯è§†åŒ–ç€è‰²å™¨å›¾ç”±å„ç§èŠ‚ç‚¹ç»„æˆã€‚图中的æ¯ä¸ªèŠ‚ç‚¹éƒ½æ˜¯ä¸€ä¸ªç‹¬ç«‹çš„å¯¹è±¡ï¼Œå®ƒä»¬è¢«è¡¨ç¤ºä¸º"
+"带有标题和一系列属性的矩形框。æ¯ä¸ªèŠ‚ç‚¹éƒ½æœ‰è¿žæŽ¥ç«¯å£ï¼Œå¯ä»¥å°†å…¶è¿žæŽ¥åˆ°å¦ä¸€ä¸ªèŠ‚ç‚¹"
+"并控制ç€è‰²å™¨çš„æµç¨‹ã€‚"
#: doc/classes/VisualShaderNode.xml:10
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/shading/visual_shaders.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/shading/visual_shaders."
-"html"
+"https://docs.godotengine.org/en/3.4/tutorials/shading/visual_shaders.html"
#: doc/classes/VisualShaderNode.xml:16
msgid ""
@@ -79891,7 +80006,6 @@ msgstr ""
"开进行预览。"
#: doc/classes/VisualShaderNode.xml:50
-#, fuzzy
msgid ""
"Emitted when the node requests an editor refresh. Currently called only in "
"setter of [member VisualShaderNodeTexture.source], "
@@ -79899,8 +80013,8 @@ msgid ""
"derivatives)."
msgstr ""
"当节点请求刷新编辑器时触å‘。目å‰åªåœ¨[member VisualShaderNodeTexture.source]ã€"
-"[VisualShaderNodeTexture]å’Œ[VisualShaderNodeCubemap](以åŠå®ƒä»¬çš„æ´¾ç”Ÿå“)的"
-"setter中调用。"
+"[VisualShaderNodeTexture]å’Œ[VisualShaderNodeCubeMap]åŠå…¶æ´¾ç”Ÿå¯¹è±¡çš„setter中调"
+"用。"
#: doc/classes/VisualShaderNode.xml:56
msgid ""
@@ -80284,13 +80398,12 @@ msgstr ""
"CTYPE_BOOLEAN]或 [constant CTYPE_TRANSFORM]则ä¸èƒ½ä½¿ç”¨ã€‚"
#: doc/classes/VisualShaderNodeCompare.xml:53
-#, fuzzy
msgid ""
"Comparison for less than or equal ([code]a < b[/code]). Cannot be used if "
"[member type] set to [constant CTYPE_BOOLEAN] or [constant CTYPE_TRANSFORM]."
msgstr ""
-"å°äºŽæˆ–等于的比较,å³[code]a <= b[/code]。如果 [member type] 设置为 [constant "
-"CTYPE_BOOLEAN] 或 [constant CTYPE_TRANSFORM]则ä¸èƒ½ä½¿ç”¨ã€‚"
+"å°äºŽæˆ–等于的比较,å³[code]a < b[/code]。如果[member type] 设置为[constant "
+"CTYPE_BOOLEAN]或[constant CTYPE_TRANSFORM]则ä¸èƒ½ä½¿ç”¨ã€‚"
#: doc/classes/VisualShaderNodeCompare.xml:56
msgid ""
@@ -80305,9 +80418,8 @@ msgid ""
msgstr "如果å‘é‡ä¸­çš„ä»»æ„åˆ†é‡æ»¡è¶³æ¯”较æ¡ä»¶ï¼Œåˆ™ç»“果为真。"
#: doc/classes/VisualShaderNodeCubeMap.xml:4
-#, fuzzy
msgid "A [CubeMap] sampling node to be used within the visual shader graph."
-msgstr "一个[Cubemap]采样节点,用于å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ã€‚"
+msgstr "[CubeMap]采样节点,在å¯è§†åŒ–ç€è‰²å™¨å›¾å½¢ä¸­ä½¿ç”¨ã€‚"
#: doc/classes/VisualShaderNodeCubeMap.xml:7
msgid ""
@@ -80318,13 +80430,12 @@ msgstr ""
"alpha通é“的标é‡ã€‚"
#: doc/classes/VisualShaderNodeCubeMap.xml:15
-#, fuzzy
msgid ""
"The [CubeMap] texture to sample when using [constant SOURCE_TEXTURE] as "
"[member source]."
msgstr ""
-"当使用[constant SOURCE_TEXTURE]作为 [member source] 时,需è¦å¯¹[Cubemap]纹ç†è¿›"
-"行采样。"
+"当使用[constant SOURCE_TEXTURE]作为 [member source] 时,è¦é‡‡æ ·çš„[CubeMap]纹"
+"ç†ã€‚"
#: doc/classes/VisualShaderNodeCubeMap.xml:18
msgid ""
@@ -80340,23 +80451,21 @@ msgid ""
msgstr "定义æºçº¹ç†æä¾›çš„æ•°æ®ç±»åž‹ã€‚选项å‚阅[enum TextureType]。"
#: doc/classes/VisualShaderNodeCubeMap.xml:26
-#, fuzzy
msgid ""
"Use the [CubeMap] set via [member cube_map]. If this is set to [member "
"source], the [code]samplerCube[/code] port is ignored."
msgstr ""
-"通过使用[member cube_map]设置的[Cubemap]。如果设置为[member source],"
-"[code]samplerCube[/code]端å£å°†è¢«å¿½ç•¥ã€‚"
+"使用通过[member cube_map]设置的[CubeMap]。如果这被设置为[member source],"
+"[code]samplerCube[/code]端å£å°±ä¼šè¢«å¿½ç•¥ã€‚"
#: doc/classes/VisualShaderNodeCubeMap.xml:29
-#, fuzzy
msgid ""
"Use the [CubeMap] sampler reference passed via the [code]samplerCube[/code] "
"port. If this is set to [member source], the [member cube_map] texture is "
"ignored."
msgstr ""
-"通过使用[code]samplerCube[/code]端å£ä¼ é€’çš„[Cubemap]采样器引用。如果设置为"
-"[member source],那么[member cube_map]纹ç†å°†è¢«å¿½ç•¥ã€‚"
+"使用通过[code]samplerCube[/code]端å£ä¼ é€’çš„[CubeMap]采样器引用。如果这被设置为"
+"[member source],[member cube_map]纹ç†å°±ä¼šè¢«å¿½ç•¥ã€‚"
#: doc/classes/VisualShaderNodeCubeMap.xml:32
#: doc/classes/VisualShaderNodeTexture.xml:44
@@ -80384,18 +80493,16 @@ msgstr ""
"为法线贴图。"
#: doc/classes/VisualShaderNodeCubeMapUniform.xml:4
-#, fuzzy
msgid "A [CubeMap] uniform node to be used within the visual shader graph."
-msgstr "[Cubemap] uniform节点,用于å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ã€‚"
+msgstr "[CubeMap] uniform 节点,在å¯è§†åŒ–ç€è‰²å™¨å›¾å½¢ä¸­ä½¿ç”¨ã€‚"
#: doc/classes/VisualShaderNodeCubeMapUniform.xml:7
-#, fuzzy
msgid ""
"Translated to [code]uniform samplerCube[/code] in the shader language. The "
"output value can be used as port for [VisualShaderNodeCubeMap]."
msgstr ""
-"在ç€è‰²å™¨è¯­è¨€ä¸­è¢«è½¬æ¢æˆ[code]uniform samplerCube[/code]。其输出值å¯ä»¥ä½œä¸º"
-"[VisualShaderNodeCubemap]的端å£ã€‚"
+"在ç€è‰²å™¨è¯­è¨€ä¸­è¢«ç¿»è¯‘æˆ[code]uniform samplerCube[/code]。其输出值å¯ä»¥ä½œä¸º"
+"[VisualShaderNodeCubeMap]的端å£ã€‚"
#: doc/classes/VisualShaderNodeCustom.xml:4
msgid ""
@@ -80431,16 +80538,14 @@ msgstr ""
"[/codeblock]"
#: doc/classes/VisualShaderNodeCustom.xml:16
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/"
"visual_shader_plugins.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/latest/tutorials/plugins/editor/"
+"https://docs.godotengine.org/en/3.4/tutorials/plugins/editor/"
"visual_shader_plugins.html"
#: doc/classes/VisualShaderNodeCustom.xml:22
-#, fuzzy
msgid ""
"Override this method to define the category of the associated custom node in "
"the Visual Shader Editor's members dialog. The path may look like "
@@ -80448,10 +80553,10 @@ msgid ""
"Defining this method is [b]optional[/b]. If not overridden, the node will be "
"filed under the \"Custom\" category."
msgstr ""
-"é‡å†™æ­¤æ–¹æ³•,在å¯è§†åŒ–ç€è‰²å™¨ç¼–辑器的æˆå‘˜å¯¹è¯æ¡†ä¸­å®šä¹‰ç›¸å…³è‡ªå®šä¹‰èŠ‚ç‚¹çš„è·¯å¾„ã€‚è¯¥è·¯"
-"径å¯èƒ½ç±»ä¼¼ [code]\"MyGame/MyFunctions/Noise\"[/code]。\n"
-"定义这个方法是[b]optional[/b]å¯é€‰ 的。如果没有被é‡å†™ï¼Œè¯¥èŠ‚ç‚¹å°†è¢«å½’å…¥ \"Addons"
-"\" 类别。"
+"é‡å†™æ­¤æ–¹æ³•,在å¯è§†åŒ–ç€è‰²å™¨ç¼–辑器的æˆå‘˜å¯¹è¯æ¡†ä¸­å®šä¹‰ç›¸å…³è‡ªå®šä¹‰èŠ‚ç‚¹çš„ç±»åˆ«ã€‚è·¯å¾„"
+"å¯èƒ½çœ‹èµ·æ¥åƒ [code]\"MyGame/MyFunctions/Noise\"[/code]这样。\n"
+"定义这个方法是[b]å¯é€‰çš„[/b]。如果未é‡å†™ï¼Œè¯¥èŠ‚ç‚¹å°†è¢«å½’å…¥ \"Custom\" 自定义类"
+"别。"
#: doc/classes/VisualShaderNodeCustom.xml:33
msgid ""
@@ -80612,15 +80717,15 @@ msgstr ""
"定义这个方法是[b]å¯é€‰çš„[/b]。如果ä¸é‡å†™ï¼Œå°±ä¸ä¼šæ˜¾ç¤ºè¿”回图标。"
#: doc/classes/VisualShaderNodeCustom.xml:120
-#, fuzzy
msgid ""
"Override this method to define the subcategory of the associated custom node "
"in the Visual Shader Editor's members dialog.\n"
"Defining this method is [b]optional[/b]. If not overridden, the node will be "
"filed under the root of the main category (see [method _get_category])."
msgstr ""
-"é‡å†™æ­¤æ–¹æ³•æ¥å®šä¹‰å¯è§†åŒ–ç€è‰²å™¨ç¼–辑器的æˆå‘˜å¯¹è¯æ¡†ä¸­ç›¸å…³è‡ªå®šä¹‰èŠ‚ç‚¹çš„è¿”å›žå›¾æ ‡ã€‚\n"
-"定义这个方法是[b]å¯é€‰çš„[/b]。如果ä¸é‡å†™ï¼Œå°±ä¸ä¼šæ˜¾ç¤ºè¿”回图标。"
+"é‡å†™æ­¤æ–¹æ³•æ¥å®šä¹‰å¯è§†åŒ–ç€è‰²å™¨ç¼–辑器的æˆå‘˜å¯¹è¯æ¡†ä¸­ç›¸å…³è‡ªå®šä¹‰èŠ‚ç‚¹çš„å­ç±»åˆ«ã€‚\n"
+"定义这个方法是[b]å¯é€‰çš„[/b]。如果ä¸é‡å†™ï¼ŒèŠ‚ç‚¹å°†è¢«å½’å…¥ä¸»ç±»åˆ«çš„æ ¹ä¸‹ï¼Œå‚阅"
+"[method _get_category]。"
#: doc/classes/VisualShaderNodeDeterminant.xml:4
msgid ""
@@ -80628,9 +80733,8 @@ msgid ""
msgstr "计算å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­çš„[Transform]的行列å¼ã€‚"
#: doc/classes/VisualShaderNodeDeterminant.xml:7
-#, fuzzy
msgid "Translates to [code]determinant(x)[/code] in the shader language."
-msgstr "在ç€è‰²å™¨è¯­è¨€ä¸­è½¬æ¢æˆ[code]deteminant(x)[/code]。"
+msgstr "在ç€è‰²å™¨è¯­è¨€ä¸­ç¿»è¯‘æˆ[code]determinant(x)[/code]。"
#: doc/classes/VisualShaderNodeDotProduct.xml:4
msgid "Calculates a dot product of two vectors within the visual shader graph."
@@ -80646,7 +80750,6 @@ msgid ""
msgstr "用Godotç€è‰²è¯­è¨€ç¼–写的自定义å¯è§†åŒ–ç€è‰²å™¨å›¾å½¢è¡¨è¾¾å¼ã€‚"
#: doc/classes/VisualShaderNodeExpression.xml:7
-#, fuzzy
msgid ""
"Custom Godot Shading Language expression, with a custom amount of input and "
"output ports.\n"
@@ -80656,11 +80759,11 @@ msgid ""
"global constants. See [VisualShaderNodeGlobalExpression] for such global "
"definitions."
msgstr ""
-"自定义Godotç€è‰²è¯­è¨€è¡¨è¾¾å¼ï¼Œæœ‰è‡ªå®šä¹‰æ•°é‡çš„输入和输出端å£ã€‚\n"
-"所æä¾›çš„代ç ç›´æŽ¥æ³¨å…¥åˆ°å›¾å½¢åŒ¹é…ç€è‰²å™¨å‡½æ•°ä¸­ï¼ˆ[code]vertex[/code], "
-"[code]fragment[/code], 或[code]light[/code]),所以它ä¸èƒ½ç”¨äºŽå£°æ˜Žå‡½æ•°ã€"
-"varyingsã€uniforms或全局常é‡ã€‚请å‚阅[VisualShaderNodeGlobalExpression]以了解"
-"此类全局定义。"
+"自定义Godotç€è‰²å™¨è¯­è¨€è¡¨è¾¾å¼ï¼Œæœ‰è‡ªå®šä¹‰æ•°é‡çš„输入和输出端å£ã€‚\n"
+"所æä¾›çš„代ç ç›´æŽ¥æ³¨å…¥åˆ°å›¾å½¢åŒ¹é…ç€è‰²å™¨å‡½æ•°ä¸­ï¼Œå³[code]vertex[/code], "
+"[code]fragment[/code], or [code]light[/code],所以它ä¸èƒ½ç”¨äºŽå£°æ˜Žå‡½æ•°ã€å˜ä½“ã€"
+"uniforms或全局常é‡ã€‚请å‚阅[VisualShaderNodeGlobalExpression]以了解此类全局定"
+"义。"
#: doc/classes/VisualShaderNodeExpression.xml:16
msgid ""
@@ -80680,7 +80783,6 @@ msgid ""
msgstr "返回与å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­çš„å‚考å‘釿Œ‡å‘ç›¸åŒæ–¹å‘çš„å‘é‡ã€‚"
#: doc/classes/VisualShaderNodeFaceForward.xml:7
-#, fuzzy
msgid ""
"Translates to [code]faceforward(N, I, Nref)[/code] in the shader language. "
"The function has three vector parameters: [code]N[/code], the vector to "
@@ -80690,9 +80792,9 @@ msgid ""
"N[/code] is returned."
msgstr ""
"在ç€è‰²å™¨è¯­è¨€ä¸­ç¿»è¯‘为[code]faceforward(N, I, Nref)[/code]。该函数有三个å‘é‡å‚"
-"数。[code]N[/code],è¦å®šå‘çš„å‘é‡ï¼Œ[code]I[/code],入射å‘é‡ï¼Œä»¥åŠ[code]Nref[/"
-"code],å‚考å‘é‡ã€‚如果[code]I[/code]å’Œ[code]Nref[/code]的点积å°äºŽé›¶ï¼Œè¿”回值为"
-"[code]N[/code]。å¦åˆ™å°†è¿”回[code]-N[/code]。"
+"数。[code]N[/code],定å‘矢é‡ï¼Œ[code]I[/code],入射矢é‡ï¼Œä»¥åŠ[code]Nref[/"
+"code],å‚考矢é‡ã€‚如果[code]I[/code]å’Œ[code]Nref[/code]的点积å°äºŽé›¶ï¼Œè¿”回值为"
+"[code]N[/code]。å¦åˆ™ï¼Œå°†è¿”回[code]-N[/code]。"
#: doc/classes/VisualShaderNodeFresnel.xml:4
msgid "A Fresnel effect to be used within the visual shader graph."
@@ -80773,13 +80875,12 @@ msgid ""
msgstr "返回正在使用的输入端å£çš„æ•°é‡ã€‚替代[method get_free_input_port_id]。"
#: doc/classes/VisualShaderNodeGroupBase.xml:63
-#, fuzzy
msgid ""
"Returns a [String] description of the input ports as a colon-separated list "
"using the format [code]id,type,name;[/code] (see [method add_input_port])."
msgstr ""
-"返回输入端å£çš„[String]æè¿°ï¼Œä»¥å†’å·åˆ†éš”的列表,使用[code]id,type,name;[/code]"
-"æ ¼å¼ï¼Œå‚阅[method add_input_port]。"
+"返回输入端å£çš„[String]æè¿°ï¼Œæ˜¯ä¸€ä¸ªç”¨å†’å·åˆ†éš”的列表,格å¼ä¸º[code]id,type,name;"
+"[/code],å‚阅[method add_input_port]。"
#: doc/classes/VisualShaderNodeGroupBase.xml:69
msgid ""
@@ -80788,13 +80889,12 @@ msgid ""
msgstr "返回正在使用的输出端å£çš„æ•°é‡ã€‚替代[method get_free_output_port_id]。"
#: doc/classes/VisualShaderNodeGroupBase.xml:75
-#, fuzzy
msgid ""
"Returns a [String] description of the output ports as a colon-separated list "
"using the format [code]id,type,name;[/code] (see [method add_output_port])."
msgstr ""
-"返回输出端å£çš„[String]æè¿°ï¼Œä»¥å†’å·åˆ†éš”的列表,使用[code]id,type,name;[/code]"
-"æ ¼å¼ï¼Œå‚阅[method add_output_port]。"
+"返回输出端å£çš„[String]æè¿°ï¼Œä½œä¸ºä¸€ä¸ªç”¨å†’å·åˆ†éš”的列表,格å¼ä¸º[code]id,type,"
+"name;[/code],å‚阅[method add_output_port]。"
#: doc/classes/VisualShaderNodeGroupBase.xml:82
msgid "Returns [code]true[/code] if the specified input port exists."
@@ -80868,13 +80968,12 @@ msgstr ""
"表,请å‚阅ç€è‰²å™¨å‚è€ƒï¼Œå³æŸ¥çœ‹[code]Tutorials[/code]教程部分的链接。"
#: doc/classes/VisualShaderNodeInput.xml:9
-#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/shading/shading_reference/"
"index.html"
msgstr ""
-"https://docs.godotengine.org/zh_CN/stable/tutorials/shading/"
-"shading_reference/index.html"
+"https://docs.godotengine.org/en/3.4/tutorials/shading/shading_reference/"
+"index.html"
#: doc/classes/VisualShaderNodeInput.xml:20
msgid ""
@@ -81065,11 +81164,10 @@ msgid "Use the current viewport's texture as the source."
msgstr "使用当å‰è§†çª—的纹ç†ä½œä¸ºæºã€‚"
#: doc/classes/VisualShaderNodeTexture.xml:32
-#, fuzzy
msgid ""
"Use the texture from this shader's texture built-in (e.g. a texture of a "
"[Sprite])."
-msgstr "使用该ç€è‰²å™¨å†…置的纹ç†ï¼Œä¾‹å¦‚,[Sprite2D]的纹ç†ã€‚"
+msgstr "使用该ç€è‰²å™¨å†…置的纹ç†ï¼Œä¾‹å¦‚,[Sprite]的纹ç†ã€‚"
#: doc/classes/VisualShaderNodeTexture.xml:35
msgid "Use the texture from this shader's normal map built-in."
@@ -81773,6 +81871,9 @@ msgid ""
"[b]Note:[/b] The [signal Range.changed] and [signal Range.value_changed] "
"signals are part of the [Range] class which this class inherits from."
msgstr ""
+"垂直滑å—。å‚阅[Slider]。这个从底部(最å°ï¼‰åˆ°é¡¶éƒ¨ï¼ˆæœ€å¤§ï¼‰ã€‚\n"
+"[b]注æ„:[/b] [signal Range.changed]å’Œ[signal Range.value_changed]ä¿¡å·æ˜¯"
+"[Range]类的一部分,该类继承自它。"
#: doc/classes/VSlider.xml:25
msgid "The background of the area below the grabber."
@@ -81827,10 +81928,9 @@ msgid "Closes this data channel, notifying the other peer."
msgstr "关闭此数æ®é€šé“,通知å¦ä¸€ä¸ªå¯¹ç­‰ä½“。"
#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:19
-#, fuzzy
msgid ""
"Returns the number of bytes currently queued to be sent over this channel."
-msgstr "返回当å‰åˆ—表中的项目数。"
+msgstr "è¿”å›žå½“å‰æŽ’é˜Ÿåœ¨æ­¤é€šé“上å‘é€çš„字节数。"
#: modules/webrtc/doc_classes/WebRTCDataChannel.xml:25
msgid ""
@@ -82105,17 +82205,16 @@ msgstr ""
"ice_candidate_created]。"
#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:29
-#, fuzzy
msgid ""
"Close the peer connection and all data channels associated with it.\n"
"[b]Note:[/b] You cannot reuse this object for a new connection unless you "
"call [method initialize]."
msgstr ""
-"关闭对等体连接和与之相关的所有数æ®é€šé“。注æ„,你ä¸èƒ½ä¸ºä¸€ä¸ªæ–°çš„连接é‡ç”¨è¿™ä¸ªå¯¹"
-"象,除éžä½ è°ƒç”¨[method initialize]。"
+"关闭对等体连接和与之相关的所有数æ®é€šé“。\n"
+"[b]注æ„:[/b]ä½ ä¸èƒ½ä¸ºä¸€ä¸ªæ–°çš„连接é‡å¤ä½¿ç”¨è¿™ä¸ªå¯¹è±¡ï¼Œé™¤éžä½ è°ƒç”¨[method "
+"initialize]。"
#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:39
-#, fuzzy
msgid ""
"Returns a new [WebRTCDataChannel] (or [code]null[/code] on failure) with "
"given [code]label[/code] and optionally configured via the [code]options[/"
@@ -82152,32 +82251,32 @@ msgid ""
"[b]Note:[/b] You must keep a reference to channels created this way, or it "
"will be closed."
msgstr ""
-"返回一个新的[WebRTCDataChannel],或在失败时返回[code]null[/code],带有给定的"
+"返回新的[WebRTCDataChannel],或在失败时返回[code]null[/code],具有给定的 "
"[code]label[/code],并通过[code]options[/code]字典进行é…ç½®ã€‚è¿™ä¸ªæ–¹æ³•åªæœ‰åœ¨è¿ž"
"接处于[constant STATE_NEW]çŠ¶æ€æ—¶æ‰èƒ½è¢«è°ƒç”¨ã€‚\n"
"æœ‰ä¸¤ç§æ–¹æ³•æ¥åˆ›å»ºå·¥ä½œæ•°æ®é€šé“:è¦ä¹ˆåªåœ¨å…¶ä¸­ä¸€ä¸ªå¯¹ç­‰ä½“上调用[method "
"create_data_channel],并在å¦ä¸€ä¸ªå¯¹ç­‰ä½“上监å¬[signal data_channel_received],"
"è¦ä¹ˆåœ¨ä¸¤ä¸ªå¯¹ç­‰ä½“上调用[method create_data_channel],数值相åŒï¼Œå¹¶å°†"
"[code]negotiated[/code]选项设置为[code]true[/code]。\n"
-"有效的[code]options[/code]选项是:\n"
+"有效的[code]options[/code]是:\n"
"[codeblock]\n"
"{\n"
-" \"negotiated\": true, # 当设置为 \"true\"(默认关闭)时,æ„味ç€è¯¥é€šé“是在带"
-"外å商的。\n"
-" \"id\": 1, # 当“negotiationâ€ä¸ºtrue时,该值也必须在对等体上设置为相åŒçš„"
-"值。 \n"
+" \"negotiated\": true, # 当设置为 \"true\"时,默认关闭,æ„味ç€è¯¥é€šé“是在频"
+"带外å商的。\"id\"也必须被设置。\"data_channel_received\" å°†ä¸ä¼šè¢«è°ƒç”¨ã€‚\n"
+" \"id\":1, # 当 \"negotiated\"为真时,这个值也必须被设置为两个对等体的相åŒ"
+"值。\n"
"\n"
-" # maxretransmitå’ŒmaxPacketLifeTimeåªèƒ½æŒ‡å®šå…¶ä¸­ä¸€ä¸ªï¼Œä¸èƒ½åŒæ—¶æŒ‡å®šã€‚ 它们使"
-"通é“ä¸å¯é (ä½†åœ¨å®žæ—¶æ€§æ–¹é¢æ›´å¥½)。 .\n"
-" \"maxRetransmits\": 1, # 指定对端在未被确认的情况下é‡ä¼ æ•°æ®åŒ…的最大å°è¯•次"
-"数。 \n"
-" \"maxPacketLifeTime\": 100, # 指定放弃未确认数æ®åŒ…é‡ä¼ çš„æœ€å¤§æ—¶é—´(以毫秒为"
-"å•ä½) .\n"
-" \"ordered\": true, # 当处于ä¸å¯é æ¨¡å¼æ—¶(例如,设置"
-"了“maxretransmitâ€æˆ–“maxPacketLifetimeâ€),“orderedâ€(默认为true)指定是å¦å¼ºåˆ¶æŽ’"
-"åºæ•°æ®åŒ…。 \n"
+" # åªèƒ½æŒ‡å®šmaxRetransmitså’ŒmaxPacketLifeTime中的一个,ä¸èƒ½åŒæ—¶æŒ‡å®šã€‚它们会"
+"使信é“å˜å¾—ä¸å¯é ï¼Œä½†åœ¨å®žæ—¶æ€§æ–¹é¢ä¼šæ›´å¥½ã€‚\n"
+" \"maxRetransmits\":1, # 指定对等体在数æ®åŒ…未被确认时å°è¯•é‡ä¼ çš„æœ€å¤§æ¬¡"
+"数。\n"
+" \"maxPacketLifeTime\":100, # 指定放弃é‡ä¼ æœªè¢«ç¡®è®¤çš„æ•°æ®åŒ…之å‰çš„æœ€å¤§æ—¶é—´ï¼Œ"
+"以毫秒为å•ä½ã€‚\n"
+" \"ordered\": true, # 当处于ä¸å¯é æ¨¡å¼æ—¶ï¼Œå³ \"maxRetransmits \"或 "
+"\"maxPacketLifetime \"被设置,\"ordered\"指定是å¦è¦å¼ºåˆ¶æ‰§è¡Œæ•°æ®åŒ…排åºï¼Œé»˜è®¤ä¸º"
+"true。\n"
"\n"
-" \"protocol\": \"my-custom-protocol\", # 此通é“的自定义å­å议字符串。 \n"
+" \"protocol\":\"my-custom-protocol\", #这个通é“的自定义å­å议字符串。\n"
"}\n"
"[/codeblock]\n"
"[b]注æ„:[/b] ä½ å¿…é¡»ä¿æŒå¯¹ä»¥è¿™ç§æ–¹å¼åˆ›å»ºçš„通é“的引用,å¦åˆ™å®ƒå°†è¢«å…³é—­ã€‚"
@@ -82201,7 +82300,6 @@ msgid "Returns the connection state. See [enum ConnectionState]."
msgstr "返回连接状æ€ã€‚å‚阅[enum ConnectionState]。"
#: modules/webrtc/doc_classes/WebRTCPeerConnection.xml:76
-#, fuzzy
msgid ""
"Re-initialize this peer connection, closing any previously active "
"connection, and going back to state [constant STATE_NEW]. A dictionary of "
@@ -82227,22 +82325,20 @@ msgid ""
"[/codeblock]"
msgstr ""
"釿–°åˆå§‹åŒ–è¿™ä¸ªå¯¹ç­‰ä½“è¿žæŽ¥ï¼Œå…³é—­ä»»ä½•å…ˆå‰æ´»åŠ¨çš„è¿žæŽ¥ï¼Œå¹¶å›žåˆ°çŠ¶æ€[constant "
-"STATE_NEW]。å¯ä»¥é€šè¿‡ä¸€ä¸ª[code]options[/code]选项的字典æ¥é…置对等连接。\n"
-"有效的[code]options[/code]选项是:\n"
+"STATE_NEW]。å¯ä»¥é€šè¿‡[code]options[/code]的字典æ¥é…置对等连接。\n"
+"有效的[code]options[/code]是:\n"
"[codeblock]\n"
"{\n"
" \"iceServers\": [\n"
" {\n"
-" \"urls\": [ \"stun:stun.example.com:3478\" ], # One or more STUN "
-"servers.\n"
+" \"urls\":[\"stun:stun.example.com:3478\"], # 一个或多个STUNæœ"
+"务。\n"
" },\n"
" {\n"
-" \"urls\": [ \"turn:turn.example.com:3478\" ], # One or more TURN "
-"servers.\n"
-" \"username\": \"a_username\", # Optional username for the TURN "
-"server.\n"
-" \"credentials\": \"a_password\", # Optional password for the "
-"TURN server.\n"
+" \"urls\":[\"turn:turn.example.com:3478\"], # 一个或多个TURNæœ"
+"务。\n"
+" \"username\":\"a_username\", # TURNæœåŠ¡çš„å¯é€‰ç”¨æˆ·å。\n"
+" \"credential\":\"a_password\", # TURNæœåŠ¡çš„å¯é€‰å¯†ç ã€‚\n"
" }\n"
" ]\n"
"}\n"
@@ -82369,7 +82465,6 @@ msgstr ""
"å½“è¿žæŽ¥ã€æ–­å¼€è¿žæŽ¥æˆ–æœ‰æ–°æ•°æ®æ—¶ï¼Œä½ å°†æ”¶åˆ°é€‚当的信å·ã€‚"
#: modules/websocket/doc_classes/WebSocketClient.xml:22
-#, fuzzy
msgid ""
"Connects to the given URL requesting one of the given [code]protocols[/code] "
"as sub-protocol. If the list empty (default), no sub-protocol will be "
@@ -82393,19 +82488,23 @@ msgid ""
"[b]Note:[/b] Specifying [code]custom_headers[/code] is not supported in "
"HTML5 exports due to browsers restrictions."
msgstr ""
-"连接到给定的URL,请求给定的[code]protocols[/code]中的一个作为å­å议。如果列表"
-"为空(默认),将ä¸è¯·æ±‚å­å议。\n"
-"如果[code]true[/code]作为[code]gd_mp_api[/code]被传递,客户端将表现得åƒä¸€ä¸ª"
+"连接到给定的URL,请求给定的[code]protocols[/code]之一作为å­å议。如果列表为"
+"空,默认为空,将ä¸è¯·æ±‚å­å议。\n"
+"如果[code]true[/code]作为[code]gd_mp_api[/code]被传递,客户端将表现得åƒ"
"[MultiplayerAPI]的网络对等体,与éžGodotæœåŠ¡å™¨çš„è¿žæŽ¥å°†ä¸å·¥ä½œï¼Œå¹¶ä¸”[signal "
"data_received]å°†ä¸è¢«è§¦å‘。\n"
-"如果[code]false[/code]被传递(默认),你必须调用[PacketPeer]函数"
-"([code]put_packet[/code], [code]get_packet[/code], etc.)对通过"
-"[code]get_peer(1)[/code]返回的[WebSocketPeer]ï¼Œè€Œä¸æ˜¯ç›´æŽ¥å¯¹è¯¥å¯¹è±¡ï¼Œä¾‹å¦‚,"
-"[code]get_peer(1).put_packet(data)[/code]。\n"
+"如果[code]false[/code]被传递,默认传递,你必须调用[PacketPeer]函数,"
+"[code]put_packet[/code], [code]get_packet[/code]等,对通过[code]get_peer(1)[/"
+"code]返回的[WebSocketPeer]ï¼Œè€Œä¸æ˜¯ç›´æŽ¥å¯¹è¯¥å¯¹è±¡ï¼Œä¾‹å¦‚,[code]get_peer(1)."
+"put_packet(data)[/code]。\n"
"ä½ å¯ä»¥é€‰æ‹©ä¼ é€’一个[code]custom_headers[/code]çš„åˆ—è¡¨ï¼Œä»¥æ·»åŠ åˆ°æ¡æ‰‹çš„HTTP请求"
"中。\n"
-"[b]注æ„:[/b] 由于æµè§ˆå™¨çš„é™åˆ¶ï¼Œåœ¨HTML5è¾“å‡ºä¸­ä¸æ”¯æŒæŒ‡å®š[code]custom_headers[/"
-"code]。"
+"[b]注æ„:[/b] 为了é¿å…HTML5中的混åˆå†…容警告或错误,须使用以[code]wss://[/"
+"code](安全)开头的[code]url[/code]ï¼Œè€Œä¸æ˜¯[code]ws://[/code]ã€‚è¿™æ ·åšæ—¶ï¼Œç¡®ä¿"
+"使用与æœåŠ¡å™¨çš„SSLè¯ä¹¦ä¸­å®šä¹‰çš„å®Œå…¨åˆæ ¼çš„域å。ä¸è¦ç›´æŽ¥é€šè¿‡IP地å€è¿›è¡Œ"
+"[code]wss://[/code]连接,因为它ä¸ä¼šä¸ŽSSLè¯ä¹¦ç›¸åŒ¹é…。\n"
+"[b]注æ„:[/b]由于æµè§ˆå™¨çš„é™åˆ¶ï¼ŒæŒ‡å®š[code]custom_headers[/code]在HTML5导出中ä¸"
+"被支æŒã€‚"
#: modules/websocket/doc_classes/WebSocketClient.xml:35
msgid ""
@@ -82534,9 +82633,10 @@ msgid "A class representing a specific WebSocket connection."
msgstr "表示特定WebSocket连接的类。"
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
+#, fuzzy
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -82586,6 +82686,8 @@ msgid ""
"[/b] HTML5 exports use WebSocket.bufferedAmount, while other platforms use "
"an internal buffer."
msgstr ""
+"返回输出的websocketç¼“å†²åŒºä¸­çš„å½“å‰æ•°æ®é‡ã€‚[b]注æ„:[/b] HTML5导出使用"
+"WebSocket.bufferedAmount,而其他平å°ä½¿ç”¨å†…部缓冲区。"
#: modules/websocket/doc_classes/WebSocketPeer.xml:46
msgid "Gets the current selected write mode. See [enum WriteMode]."
@@ -82719,6 +82821,8 @@ msgid ""
"The time in seconds before a pending client (i.e. a client that has not yet "
"finished the HTTP handshake) is considered stale and forcefully disconnected."
msgstr ""
+"挂起客户端,å³å°šæœªå®Œæˆ HTTP æ¡æ‰‹çš„客户端之å‰çš„æ—¶é—´è¢«è®¤ä¸ºæ˜¯é™ˆæ—§çš„并强制断开连"
+"接,时间以秒为å•ä½ã€‚"
#: modules/websocket/doc_classes/WebSocketServer.xml:80
msgid ""
@@ -82774,7 +82878,7 @@ msgstr ""
#: modules/webxr/doc_classes/WebXRInterface.xml:4
msgid "AR/VR interface using WebXR."
-msgstr ""
+msgstr "使用 WebXR çš„ AR/VR 接å£ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:7
msgid ""
@@ -82901,10 +83005,118 @@ msgid ""
"a wider or narrower set of devices and input methods, or to allow more "
"advanced interations with more advanced devices."
msgstr ""
+"WebXR是一个开放标准,å…许创建在网络æµè§ˆå™¨ä¸­è¿è¡Œçš„VRå’ŒAR应用程åºã€‚\n"
+"因此,这个界é¢åªæœ‰åœ¨HTML5导出中è¿è¡Œæ—¶æ‰èƒ½ä½¿ç”¨ã€‚\n"
+"WebXR支æŒå¹¿æ³›çš„设备,从能力很强的设备(如Valve Indexã€HTC Viveã€Oculus Riftå’Œ"
+"Quest)到能力较弱的设备(如Google Cardboardã€Oculus Goã€GearVR或普通智能手"
+"机)。\n"
+"由于WebXR是基于Javascript的,它大é‡ä½¿ç”¨å›žè°ƒï¼Œè¿™æ„味ç€[WebXRInterface]被迫使用"
+"ä¿¡å·ï¼Œè€Œå…¶ä»–AR/VR界é¢ä¼šä½¿ç”¨ç«‹å³è¿”回结果的函数。这使得[WebXRInterface]çš„åˆå§‹åŒ–"
+"比其他AR/VR接å£è¦å¤æ‚很多。\n"
+"䏋颿˜¯å¯åŠ¨ä¸€ä¸ªæ²‰æµ¸å¼VRä¼šè¯æ‰€éœ€çš„æœ€å°ä»£ç ã€‚\n"
+"[codeblock]\n"
+"extends Spatial\n"
+"\n"
+"var webxr_interface\n"
+"var vr_supported = false\n"
+"\n"
+"func _ready():\n"
+" # 我们å‡è®¾è¿™ä¸ªèŠ‚ç‚¹æœ‰ä¸€ä¸ªæŒ‰é’®ä½œä¸ºå­èŠ‚ç‚¹ã€‚\n"
+" # è¿™ä¸ªæŒ‰é’®æ˜¯è®©ç”¨æˆ·åŒæ„进入沉浸å¼VR模å¼ã€‚\n"
+" $Button.connect(\"pressed\", self, \"_on_Button_pressed\")\n"
+"\n"
+" webxr_interface = ARVRServer.find_interface(\"WebXR\")\n"
+" if webxr_interface:\n"
+" # WebXR使用了大é‡çš„异步回调,\n"
+" # 所以我们è¦è¿žæŽ¥å„ç§ä¿¡å·æ¥æŽ¥æ”¶å®ƒä»¬ã€‚ \n"
+" webxr_interface.connect(\"session_supported\", self, "
+"\"_webxr_session_supported\")\n"
+" webxr_interface.connect(\"session_started\", self, "
+"\"_webxr_session_started\")\n"
+" webxr_interface.connect(\"session_ended\", self, "
+"\"_webxr_session_ended\")\n"
+" webxr_interface.connect(\"session_failed\", self, "
+"\"_webxr_session_failed\")\n"
+"\n"
+" # 这将立å³è¿”回——自身的_webxr_session_supported()方法\n"
+" # (我们在上é¢è¿žæŽ¥äº†'session_supported' ä¿¡å·)将在ç¨åŽè¢«è°ƒç”¨\n"
+" # 让我们知é“它是å¦è¢«æ”¯æŒã€‚ \n"
+" webxr_interface.is_session_supported(\"immersive-vr\")\n"
+"\n"
+"func _webxr_session_supported(session_mode, supported):\n"
+" if session_mode == 'immersive-vr':\n"
+" vr_supported = supported\n"
+"\n"
+"func _on_Button_pressed():\n"
+" if not vr_supported:\n"
+" OS.alert(\"Your browser doesn't support VR\")\n"
+" return\n"
+"\n"
+" # 获得沉浸å¼çš„VRä½“éªŒï¼Œè€Œä¸æ˜¯AR('immersive-ar')\n"
+" # 或一个简å•çš„3DoF查看器('viewer')。 \n"
+" webxr_interface.session_mode = 'immersive-vr'\n"
+" # 'bounded-floor'是房间大å°ï¼Œ'local-floor'æ˜¯ç«™ç€æˆ–åç€çš„\n"
+" # 体验(如果你有3DoF耳机,它会让你离地é¢1.6米)。\n"
+" # 而'local'则是让你在ARVROrigin处。\n"
+" # 这个列表æ„味ç€å®ƒå°†é¦–å…ˆå°è¯•请求 \"bounded-floor\",\n"
+" # 如果没有其他支æŒçš„è¯ï¼Œå°±é€€è€Œæ±‚其次,选择 \"local-floor\",\n"
+" # 如果没有别的就选 \"local\" 支æŒã€‚\n"
+" webxr_interface.requested_reference_space_types = 'bounded-floor, local-"
+"floor, local'\n"
+" # 为了使用'local-floor'或'bounded-floor',\n"
+" # 我们须标记这些特å¾ã€‚\n"
+" webxr_interface.required_features = 'local-floor'\n"
+" webxr_interface.optional_features = 'bounded-floor'\n"
+"\n"
+" # 如果无法请求会è¯ï¼Œè¿™å°†è¿”回false。\n"
+" # 然而,在这个过程中,它ä»ç„¶å¯èƒ½å¼‚步失败\n"
+" # åªæœ‰åœ¨\n"
+" # _webxr_session_started()或_webxr_session_failed()方法被调用时,æ‰çŸ¥é“它"
+"是å¦çœŸçš„æˆåŠŸæˆ–å¤±è´¥ã€‚\n"
+" if not webxr_interface.initialize():\n"
+" OS.alert(\"Failed to initialize\")\n"
+" return\n"
+"\n"
+"func _webxr_session_started():\n"
+" $Button.visible = false\n"
+" # 这告诉Godot开始进行渲染。\n"
+" get_viewport().arvr = true\n"
+" # 这将是您从上é¢è¯·æ±‚的类型中最终得到的引用空间类型。\n"
+" # 如果你想让游æˆåœ¨'bounded-floor'å’Œ 'local-floor' 中有一点ä¸åŒï¼Œ\n"
+" # 这是很有用的。 \n"
+" print (\"Reference space type: \" + webxr_interface."
+"reference_space_type)\n"
+"\n"
+"func _webxr_session_ended():\n"
+" $Button.visible = true\n"
+" # 如果用户退出沉浸模å¼ï¼Œ\n"
+" # 我们就会告诉Godot釿–°æ¸²æŸ“到网页上。\n"
+" get_viewport().arvr = false\n"
+"\n"
+"func _webxr_session_failed(message):\n"
+" OS.alert(\"Failed to initialize: \" + message)\n"
+"[/codeblock]\n"
+"æœ‰å‡ ç§æ–¹æ³•æ¥å¤„ç† \"controller\" 控制器的输入。\n"
+"- 使用[ARVRController]节点和它们的[signal ARVRController.button_pressed]和"
+"[signal ARVRController.button_release]ä¿¡å·ã€‚这是Godotçš„AR/VRåº”ç”¨ä¸­é€šå¸¸å¤„ç†æŽ§"
+"制器的方å¼ï¼Œç„¶è€Œï¼Œè¿™åªé€‚用于高级VR控制器,例如Oculus Touch或Index控制器。按钮"
+"代ç ç”±[url=https://immersive-web.github.io/webxr-gamepads-module/#xr-"
+"standard-gamepad-mapping]WebXR Gamepads模å—[/url]çš„3.3节定义。\n"
+"- 使用[method Node._unhandled_input]和[InputEventJoypadButton]或"
+"[InputEventJoypadMotion]ã€‚è¿™å’Œæ™®é€šçš„æ¸¸æˆæ‰‹æŸ„工作原ç†ä¸€æ ·ï¼Œåªæ˜¯[member "
+"InputEvent.device]从100开始,所以左边的控制器是100,å³è¾¹çš„æŽ§åˆ¶å™¨æ˜¯101,按钮代"
+"ç ç”±[url=https://immersive-web.github.io/webxr-gamepads-module/#xr-standard-"
+"gamepad-mapping]WebXR Gamepads模å—[/url]çš„3.3节定义。\n"
+"- 使用[signal select]ã€[signal squeeze]和相关信å·ã€‚è¿™ç§æ–¹æ³•既适用于高级的VR控"
+"制器,也适用于éžä¼ ç»Ÿçš„ \"controller\" 控制器,如在å±å¹•上的点击ã€å£è¯­åŒ–的语音"
+"命令或设备本身的按键。传递给这些信å·çš„[code]controller_id[/code]是与[member "
+"ARVRController.controller_id]中使用的id相åŒã€‚\n"
+"ä½ å¯ä»¥ä½¿ç”¨è¿™äº›æ–¹æ³•ä¸­çš„ä¸€ä¸ªæˆ–å…¨éƒ¨ï¼Œè®©ä½ çš„æ¸¸æˆæˆ–åº”ç”¨ç¨‹åºæ”¯æŒæ›´å¹¿æ³›æˆ–更窄的设备"
+"和输入方法,或者å…许与更高级的设备进行更高级的交互。"
#: modules/webxr/doc_classes/WebXRInterface.xml:94
msgid "https://www.snopekgames.com/blog/2020/how-make-vr-game-webxr-godot"
-msgstr ""
+msgstr "https://www.snopekgames.com/blog/2020/how-make-vr-game-webxr-godot"
#: modules/webxr/doc_classes/WebXRInterface.xml:101
msgid ""
@@ -82924,6 +83136,18 @@ msgid ""
"- [signal squeeze]\n"
"- [signal squeezestart]"
msgstr ""
+"获å–给定 [code]controller_id[/code] çš„ [ARVRPositionalTracker]。\n"
+"在 WebXR 的上下文中, \"controller\"控制器å¯ä»¥æ˜¯é«˜çº§ VR 控制器,如 Oculus "
+"Touch 或 Index 控制器,甚至å¯ä»¥æ˜¯å±å¹•上的点击ã€è¯­éŸ³å‘½ä»¤æˆ–设备本身的按钮按下。"
+"当使用éžä¼ ç»ŸæŽ§åˆ¶å™¨æ—¶ï¼Œå°† [ARVRPositionalTracker] çš„ä½ç½®å’Œæ–¹å‘解释为指å‘用户希"
+"望与之交互的对象的射线。\n"
+"ä½¿ç”¨æ­¤æ–¹æ³•èŽ·å–æœ‰å…³è§¦å‘以下信å·ä¹‹ä¸€çš„æŽ§åˆ¶å™¨çš„ä¿¡æ¯ï¼š\n"
+"- [signal selectstart]\n"
+"- [signal select]\n"
+"- [signal selectend]\n"
+"- [signal squeezestart]\n"
+"- [signal squeeze]\n"
+"- [signal squeezestart]"
#: modules/webxr/doc_classes/WebXRInterface.xml:116
msgid ""
@@ -82935,6 +83159,11 @@ msgid ""
"This method returns nothing, instead it emits the [signal session_supported] "
"signal with the result."
msgstr ""
+"检查给定的[code]session_mode[/code]是å¦è¢«ç”¨æˆ·çš„æµè§ˆå™¨æ”¯æŒã€‚\n"
+"å¯èƒ½çš„值æ¥è‡ª[url=https://developer.mozilla.org/en-US/docs/Web/API/"
+"XRSessionMode]WebXR的XRSessionMode[/url],包括:[code]\"immersive-vr\"[/"
+"code], [code]\"immersive-ar\"[/code], 和[code]\"inline\"[/code]。\n"
+"此方法ä¸è¿”回任何东西,而是将结果å‘é€ç»™[signal session_supported]ä¿¡å·ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:124
msgid ""
@@ -82945,6 +83174,10 @@ msgid ""
"support it.\n"
"The [signal reference_space_reset] signal may indicate when this changes."
msgstr ""
+"定义用户游æˆåŒºåŸŸè¾¹ç•Œçš„多边形的顶点。\n"
+"这仅在 [member reference_space_type] 是 [code]\"bounded-floor\"[/code] ,并且"
+"仅在支æŒå®ƒçš„æŸäº›æµè§ˆå™¨å’Œè®¾å¤‡ä¸Šå¯ç”¨ã€‚\n"
+"[signal reference_space_reset] ä¿¡å·å¯ä»¥æŒ‡ç¤ºä½•时改å˜ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:129
msgid ""
@@ -82959,6 +83192,15 @@ msgid ""
"use a particular reference space type, it must be listed in either [member "
"required_features] or [member optional_features]."
msgstr ""
+"[method ARVRInterface.initialize] 设置 WebXR ä¼šè¯æ—¶ä½¿ç”¨çš„å¯é€‰åŠŸèƒ½çš„é€—å·åˆ†éš”列"
+"表。\n"
+"如果用户的æµè§ˆå™¨æˆ–è®¾å¤‡ä¸æ”¯æŒæŒ‡å®šçš„功能,åˆå§‹åŒ–将继续,但您将无法使用请求的功"
+"能。\n"
+"这对已ç»åˆå§‹åŒ–çš„æŽ¥å£æ²¡æœ‰ä»»ä½•å½±å“。\n"
+"å¯èƒ½çš„值æ¥è‡ª [url=https://developer.mozilla.org/en-US/docs/Web/API/"
+"XRReferenceSpaceType]WebXR çš„ XRReferenceSpaceType[/url]。如果è¦ä½¿ç”¨ç‰¹å®šçš„引"
+"用空间类型,则必须将其列在 [member required_features] 或 [member "
+"optional_features] 中。"
#: modules/webxr/doc_classes/WebXRInterface.xml:135
msgid ""
@@ -82970,6 +83212,12 @@ msgid ""
"use a particular reference space type, it must be listed in either [member "
"required_features] or [member optional_features]."
msgstr ""
+"引用空间类型,æ¥è‡ª[member requested_reference_space_types]属性中设置的请求类"
+"型列表,最终由[method ARVRInterface.initialize]在设置WebXRä¼šè¯æ—¶ä½¿ç”¨ã€‚\n"
+"å¯èƒ½çš„值æ¥è‡ª[url=https://developer.mozilla.org/en-US/docs/Web/API/"
+"XRReferenceSpaceType]WebXR的XRReferenceSpaceType[/url]。如果你想使用一个特定"
+"的引用空间类型,它必须被列入[member required_features]或[member "
+"optional_features]中。"
#: modules/webxr/doc_classes/WebXRInterface.xml:139
msgid ""
@@ -82985,6 +83233,15 @@ msgid ""
"use a particular reference space type, it must be listed in either [member "
"required_features] or [member optional_features]."
msgstr ""
+"[method ARVRInterface.initialize] 设置 WebXR ä¼šè¯æ—¶ä½¿ç”¨çš„引用空间类型的逗å·åˆ†"
+"隔列表。\n"
+"按顺åºè¯·æ±‚引用空间类型,将使用用户设备或æµè§ˆå™¨æ”¯æŒçš„第一个。 [member "
+"reference_space_type] å±žæ€§åŒ…å«æœ€ç»ˆä½¿ç”¨çš„引用空间类型。\n"
+"这对已ç»åˆå§‹åŒ–çš„æŽ¥å£æ²¡æœ‰ä»»ä½•å½±å“。\n"
+"å¯èƒ½çš„值æ¥è‡ª [url=https://developer.mozilla.org/en-US/docs/Web/API/"
+"XRReferenceSpaceType]WebXR çš„ XRReferenceSpaceType[/url]。如果è¦ä½¿ç”¨ç‰¹å®šçš„å‚"
+"考空间类型,则必须将其列入 [member required_features] 或 [member "
+"optional_features] 中。"
#: modules/webxr/doc_classes/WebXRInterface.xml:145
msgid ""
@@ -82998,6 +83255,15 @@ msgid ""
"use a particular reference space type, it must be listed in either [member "
"required_features] or [member optional_features]."
msgstr ""
+"[method ARVRInterface.initialize] 设置 WebXR ä¼šè¯æ—¶ä½¿ç”¨çš„æ‰€éœ€åŠŸèƒ½çš„é€—å·åˆ†éš”列"
+"表。\n"
+"如果用户的æµè§ˆå™¨æˆ–è®¾å¤‡ä¸æ”¯æŒæŒ‡å®šçš„功能,åˆå§‹åŒ–将失败并å‘出 [signal "
+"session_failed]。\n"
+"这对已ç»åˆå§‹åŒ–çš„æŽ¥å£æ²¡æœ‰ä»»ä½•å½±å“。\n"
+"å¯èƒ½çš„值æ¥è‡ª [url=https://developer.mozilla.org/en-US/docs/Web/API/"
+"XRReferenceSpaceType]WebXR çš„ XRReferenceSpaceType[/url]。如果è¦ä½¿ç”¨ç‰¹å®šçš„å‚"
+"考空间类型,则必须将其列入 [member required_features] 或 [member "
+"optional_features] 中。"
#: modules/webxr/doc_classes/WebXRInterface.xml:151
msgid ""
@@ -83008,6 +83274,11 @@ msgid ""
"API/XRSessionMode]WebXR's XRSessionMode[/url], including: [code]\"immersive-"
"vr\"[/code], [code]\"immersive-ar\"[/code], and [code]\"inline\"[/code]."
msgstr ""
+"设置WebXRä¼šè¯æ—¶ï¼Œ[method ARVRInterface.initialize]æ‰€ä½¿ç”¨çš„ä¼šè¯æ¨¡å¼ã€‚\n"
+"在已ç»åˆå§‹åŒ–çš„æƒ…å†µä¸‹ï¼Œè¿™å¯¹æŽ¥å£æ²¡æœ‰ä»»ä½•å½±å“。\n"
+"å¯èƒ½çš„值æ¥è‡ª[url=https://developer.mozilla.org/en-US/docs/Web/API/"
+"XRSessionMode]WebXR的XRSessionMode[/url],包括:[code]\"immersive-vr\"[/"
+"code], [code]\"immersive-ar\"[/code], 和[code]\"inline\"[/code]。"
#: modules/webxr/doc_classes/WebXRInterface.xml:156
msgid ""
@@ -83017,6 +83288,10 @@ msgid ""
"[code]\"hidden\"[/code], [code]\"visible\"[/code], and [code]\"visible-"
"blurred\"[/code]."
msgstr ""
+"指示用户是å¦å¯ä»¥çœ‹åˆ° WebXR 会è¯çš„图åƒã€‚\n"
+"å¯èƒ½çš„值æ¥è‡ª [url=https://developer.mozilla.org/en-US/docs/Web/API/"
+"XRVisibilityState]WebXR 的 XRVisibilityState[/url],包括 [code]\"hidden\"[/"
+"code], [code]\"visible\"[/code], 和 [code]\"visible-blurred\"[/code]。"
#: modules/webxr/doc_classes/WebXRInterface.xml:163
msgid ""
@@ -83029,6 +83304,12 @@ msgid ""
"See [url=https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace/"
"reset_event]WebXR's XRReferenceSpace reset event[/url] for more information."
msgstr ""
+"å‘出该消æ¯ä»¥è¡¨æ˜Žå¼•用空间已被é‡ç½®æˆ–釿–°é…置。\n"
+"何时或是å¦å‘出å–决于用户的æµè§ˆå™¨æˆ–设备,但å¯èƒ½åŒ…括当用户改å˜äº†ä»–们的游æˆç©ºé—´"
+"的尺寸,你å¯ä»¥é€šè¿‡[member bounds_geometry]访问,或按下/按ä½ä¸€ä¸ªæŒ‰é’®æ¥é‡æ–°å®šä½"
+"他们的ä½ç½®ã€‚\n"
+"å‚阅[url=https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace/"
+"reset_event]WebXRçš„XRReferenceSpaceé‡ç½®äº‹ä»¶[/url]。"
#: modules/webxr/doc_classes/WebXRInterface.xml:171
msgid ""
@@ -83036,6 +83317,8 @@ msgid ""
"\".\n"
"Use [method get_controller] to get more information about the controller."
msgstr ""
+"在其中一个 \"controllers\"控制器完æˆå…¶ \"primary action\"主è¦åŠ¨ä½œåŽè§¦å‘。\n"
+"使用[method get_controller]æ¥èŽ·å¾—æ›´å¤šå…³äºŽæŽ§åˆ¶å™¨çš„ä¿¡æ¯ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:178
msgid ""
@@ -83043,12 +83326,16 @@ msgid ""
"\".\n"
"Use [method get_controller] to get more information about the controller."
msgstr ""
+"当其中一个 \"controllers\"控制器完æˆå…¶ \"primary action\" 主è¦åŠ¨ä½œæ—¶è§¦å‘。\n"
+"使用[method get_controller]æ¥èŽ·å¾—æ›´å¤šå…³äºŽæŽ§åˆ¶å™¨çš„ä¿¡æ¯ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:185
msgid ""
"Emitted when one of the \"controllers\" has started its \"primary action\".\n"
"Use [method get_controller] to get more information about the controller."
msgstr ""
+"当一个 \"controllers\" 控制器开始其 \"primary action\" 主è¦åŠ¨ä½œæ—¶è§¦å‘。\n"
+"使用[method get_controller]æ¥èŽ·å¾—æ›´å¤šå…³äºŽæŽ§åˆ¶å™¨çš„ä¿¡æ¯ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:191
msgid ""
@@ -83057,6 +83344,9 @@ msgid ""
"At this point, you should do [code]get_viewport().arvr = false[/code] to "
"instruct Godot to resume rendering to the screen."
msgstr ""
+"当用户结æŸWebXRä¼šè¯æ—¶è§¦å‘,å¯ä»¥ä½¿ç”¨æµè§ˆå™¨æˆ–è®¾å¤‡çš„ç”¨æˆ·ç•Œé¢æ¥å®Œæˆã€‚\n"
+"此时,你应该执行[code]get_viewport().arvr = false[/code]æ¥æŒ‡ç¤ºGodotæ¢å¤å¯¹å±å¹•"
+"的渲染。"
#: modules/webxr/doc_classes/WebXRInterface.xml:198
msgid ""
@@ -83064,6 +83354,9 @@ msgid ""
"[code]message[/code] may optionally contain an error message from WebXR, or "
"an empty string if no message is available."
msgstr ""
+"如果会è¯å¯åŠ¨å¤±è´¥ï¼Œç”±[method ARVRInterface.initialize]触å‘。\n"
+"[code]message[/code]å¯ä»¥é€‰æ‹©åŒ…å«ä¸€ä¸ªæ¥è‡ªWebXR的错误信æ¯ï¼Œå¦‚果没有信æ¯ï¼Œåˆ™ä¸ºç©º"
+"字符串。"
#: modules/webxr/doc_classes/WebXRInterface.xml:204
msgid ""
@@ -83072,12 +83365,17 @@ msgid ""
"At this point, it's safe to do [code]get_viewport().arvr = true[/code] to "
"instruct Godot to start rendering to the AR/VR device."
msgstr ""
+"å¦‚æžœä¼šè¯æˆåŠŸå¯åŠ¨ï¼Œç”±[method ARVRInterface.initialize]触å‘。\n"
+"此时,应该执行[code]get_viewport().arvr = true[/code]æ¥æŒ‡ç¤ºGodot开始å‘AR/VR设"
+"备进行渲染是安全的。"
#: modules/webxr/doc_classes/WebXRInterface.xml:212
msgid ""
"Emitted by [method is_session_supported] to indicate if the given "
"[code]session_mode[/code] is supported or not."
msgstr ""
+"ç”±[method is_session_supported]触å‘ï¼Œè¡¨ç¤ºæ˜¯å¦æ”¯æŒæŒ‡å®šçš„[code]session_mode[/"
+"code]。"
#: modules/webxr/doc_classes/WebXRInterface.xml:218
msgid ""
@@ -83085,6 +83383,9 @@ msgid ""
"action\".\n"
"Use [method get_controller] to get more information about the controller."
msgstr ""
+"在其中一个 \"controllers\" 控制器完æˆå…¶ \"primary squeeze action\"ä¸»è¦æŒ‰åŽ‹åŠ¨"
+"作åŽè§¦å‘。\n"
+"使用[method get_controller]æ¥èŽ·å¾—æ›´å¤šå…³äºŽæŽ§åˆ¶å™¨çš„ä¿¡æ¯ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:225
msgid ""
@@ -83092,6 +83393,9 @@ msgid ""
"action\".\n"
"Use [method get_controller] to get more information about the controller."
msgstr ""
+"当其中一个 \"controllers\" 控制器完æˆå…¶ \"primary squeeze action\" ä¸»è¦æŒ‰åŽ‹åŠ¨"
+"作时触å‘。\n"
+"使用[method get_controller]æ¥èŽ·å¾—æ›´å¤šå…³äºŽæŽ§åˆ¶å™¨çš„ä¿¡æ¯ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:232
msgid ""
@@ -83099,16 +83403,17 @@ msgid ""
"action\".\n"
"Use [method get_controller] to get more information about the controller."
msgstr ""
+"当其中一个 \"controllers\" 控制器开始其 \"primary squeeze action\" ä¸»è¦æŒ‰åŽ‹åŠ¨"
+"作时触å‘。\n"
+"使用[method get_controller]æ¥èŽ·å¾—æ›´å¤šå…³äºŽæŽ§åˆ¶å™¨çš„ä¿¡æ¯ã€‚"
#: modules/webxr/doc_classes/WebXRInterface.xml:238
-#, fuzzy
msgid "Emitted when [member visibility_state] has changed."
-msgstr "当[æˆå‘˜æ¡†æž¶]更改时å‘出。"
+msgstr "当[member visibility_state]已更改时触å‘。"
#: doc/classes/WindowDialog.xml:4
-#, fuzzy
msgid "Base class for window dialogs."
-msgstr "音频æµçš„基类。"
+msgstr "窗å£å¯¹è¯æ¡†çš„基类。"
#: doc/classes/WindowDialog.xml:7
msgid ""
@@ -83116,113 +83421,103 @@ msgid ""
"default toplevel [Control] that draws a window decoration and allows motion "
"and resizing."
msgstr ""
+"Windowdialog是所有基于窗å£çš„å¯¹è¯æ¡†çš„基类。它是一个默认的顶层[Control]控件,å¯"
+"以绘制一个窗å£è£…饰,并å…许移动和调整大å°ã€‚"
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "返回图å—的纹ç†ã€‚"
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
-#, fuzzy
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
-msgstr "如果[code]true[/code]ï¼Œåˆ™æ‘„åƒæœºéšç›®æ ‡æ—‹è½¬ã€‚"
+msgstr "如果[code]true[/code],用户å¯ä»¥è°ƒæ•´çª—å£å¤§å°ã€‚"
-#: doc/classes/WindowDialog.xml:24
-#, fuzzy
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
-msgstr "显示在图形节点GraphNode标题æ ä¸­çš„æ–‡æœ¬ã€‚"
+msgstr "æ˜¾ç¤ºåœ¨çª—å£æ ‡é¢˜æ çš„æ–‡å­—。"
-#: doc/classes/WindowDialog.xml:31
-#, fuzzy
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
-msgstr "缩放é‡ç½®æŒ‰é’®çš„图标。"
+msgstr "关闭按钮的图标。"
-#: doc/classes/WindowDialog.xml:34
-#, fuzzy
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
-msgstr "关闭按钮的垂直åç§»é‡ã€‚"
+msgstr "关闭按钮的水平å移。"
-#: doc/classes/WindowDialog.xml:37
-#, fuzzy
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
-msgstr "å½“å…‰æ ‡æ‚¬åœæ—¶å…³é—­æŒ‰é’®çš„背景。"
+msgstr "å½“ç”¨é¼ æ ‡å…‰æ ‡æ‚¬åœæ—¶ï¼Œå…³é—­æŒ‰é’®ä½¿ç”¨çš„图标。"
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
+"[WindowDialog] 和标题æ çš„内容背景的样å¼ã€‚标题æ ä½¿ç”¨ [code]panel [/code] æ ·å¼"
+"框创建,具有顶部边框和扩展边è·ã€‚"
-#: doc/classes/WindowDialog.xml:46
-#, fuzzy
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
-msgstr "用于调整大å°çš„图标,在 [member resizable]被å¯ç”¨æ—¶å¯è§ã€‚"
+msgstr "ç¼©æ”¾çª—å£æ—¶å¯ä»¥æ‹–动的边框的粗细,如果å¯ç”¨äº†[member resizable]。"
-#: doc/classes/WindowDialog.xml:49
-#, fuzzy
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
-msgstr "标题文字的颜色。"
+msgstr "标题文本的颜色。"
-#: doc/classes/WindowDialog.xml:52
-#, fuzzy
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
-msgstr "用于绘制选项å¡å称的字体。"
+msgstr "用于绘制标题的字体。"
-#: doc/classes/WindowDialog.xml:55
-#, fuzzy
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
-msgstr "标题文本的垂直åç§»é‡ã€‚"
+msgstr "标题文本的垂直å移。"
#: doc/classes/World.xml:4
msgid "Class that has everything pertaining to a world."
msgstr "拥有与世界相关的一切的类。"
#: doc/classes/World.xml:7
-#, 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."
msgstr ""
-"拥有与世界相关的一切的类。一个物ç†ç©ºé—´ã€ä¸€ä¸ªå¯è§†åŒ–场景和一个声音空间。Node3D"
-"èŠ‚ç‚¹å°†å…¶èµ„æºæ³¨å†Œåˆ°å½“å‰ä¸–界中。"
+"拥有与世界相关的一切的类。物ç†ç©ºé—´ã€è§†è§‰åœºæ™¯å’Œå£°éŸ³ç©ºé—´ã€‚ç©ºé—´èŠ‚ç‚¹å°†å…¶èµ„æºæ³¨å†Œ"
+"到当å‰ä¸–界中。"
#: doc/classes/World.xml:16
-#, fuzzy
msgid ""
"Direct access to the world's physics 3D space state. Used for querying "
"current and potential collisions."
-msgstr ""
-"直接访问世界的物ç†ä¸‰ç»´ç©ºé—´çжæ€ã€‚用于查询当å‰å’Œæ½œåœ¨çš„碰撞。åªèƒ½ä»Ž"
-"[code]_physics_process(delta)[/code]中访问。"
+msgstr "ç›´æŽ¥è®¿é—®ä¸–ç•Œç‰©ç† 3D 空间状æ€ã€‚用于查询当å‰å’Œæ½œåœ¨çš„碰撞。"
#: doc/classes/World.xml:19
-#, fuzzy
msgid "The World's [Environment]."
-msgstr "World3D的[Environment]环境。"
+msgstr "World的[Environment]环境。"
#: doc/classes/World.xml:22
-#, fuzzy
msgid ""
"The World's fallback_environment will be used if the World's [Environment] "
"fails or is missing."
msgstr ""
-"如果World3D的[Environment]环境失效或丢失,将使用World3D的"
+"如果 World 的 [Environment] 失败或丢失,将使用 World 的 "
"fallback_environment。"
#: doc/classes/World.xml:25
-#, fuzzy
msgid "The World's visual scenario."
-msgstr "World3Dçš„å¯è§†åŒ–场景。"
+msgstr "世界的视觉场景。"
#: doc/classes/World.xml:28
-#, fuzzy
msgid "The World's physics space."
-msgstr "World3D的物ç†ç©ºé—´ã€‚"
+msgstr "世界的物ç†ç©ºé—´ã€‚"
#: doc/classes/World2D.xml:4
msgid "Class that has everything pertaining to a 2D world."
@@ -83238,29 +83533,26 @@ msgstr ""
"å°†å…¶èµ„æºæ³¨å†Œåˆ°å½“å‰çš„2D世界中。"
#: doc/classes/World2D.xml:16
-#, fuzzy
msgid ""
"The [RID] of this world's canvas resource. Used by the [VisualServer] for 2D "
"drawing."
-msgstr "这个世界的画布资æºçš„[RID]。由[RenderingServer]用于2D绘制。"
+msgstr "这个世界的画布资æºçš„[RID]。由[VisualServer]用于2D绘制。"
#: doc/classes/World2D.xml:19
-#, fuzzy
msgid ""
"Direct access to the world's physics 2D space state. Used for querying "
"current and potential collisions. When using multi-threaded physics, access "
"is limited to [code]_physics_process(delta)[/code] in the main thread."
msgstr ""
-"直接访问世界的物ç†ä¸‰ç»´ç©ºé—´çжæ€ã€‚用于查询当å‰å’Œæ½œåœ¨çš„碰撞。åªèƒ½ä»Ž"
-"[code]_physics_process(delta)[/code]中访问。"
+"直接访问世界物ç†äºŒç»´ç©ºé—´çжæ€ã€‚用于查询当å‰å’Œæ½œåœ¨çš„ç¢°æ’žã€‚ä½¿ç”¨å¤šçº¿ç¨‹ç‰©ç†æ—¶ï¼Œè®¿"
+"问仅é™äºŽä¸»çº¿ç¨‹ä¸­çš„ [code]_physics_process(delta)[/code]。"
#: doc/classes/World2D.xml:22
-#, 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 ""
-"这个世界的物ç†ç©ºé—´èµ„æºçš„[RID]。由[PhysicsServer2D]用于2d物ç†ï¼Œå°†å…¶è§†ä¸ºç©ºé—´å’Œ"
+"这个世界物ç†ç©ºé—´èµ„æºçš„[RID]。 [Physics2DServer] 用于 2D 物ç†ï¼Œå°†å…¶è§†ä¸ºç©ºé—´å’Œ"
"区域。"
#: doc/classes/WorldEnvironment.xml:4
@@ -83270,7 +83562,6 @@ msgid ""
msgstr "æ•´ä¸ªåœºæ™¯çš„é»˜è®¤çŽ¯å¢ƒå±žæ€§ï¼ŒåŽæœŸå¤„ç†æ•ˆæžœã€ç…§æ˜Žå’ŒèƒŒæ™¯è®¾ç½®ã€‚"
#: doc/classes/WorldEnvironment.xml:7
-#, fuzzy
msgid ""
"The [WorldEnvironment] node is used to configure the default [Environment] "
"for the scene.\n"
@@ -83284,12 +83575,11 @@ msgid ""
"balance of the scene."
msgstr ""
"[WorldEnvironment]节点用于é…置场景的默认[Environment]环境。\n"
-"在[WorldEnvironment]ä¸–ç•ŒçŽ¯å¢ƒä¸­å®šä¹‰çš„å‚æ•°å¯ä»¥è¢«è®¾ç½®åœ¨å½“å‰[Camera3D]上的"
-"[Environment]节点覆盖。此外,在一个给定的场景中,一次åªèƒ½æœ‰ä¸€ä¸ª"
-"[WorldEnvironment]实例。\n"
-"[WorldEnvironment]å…è®¸ç”¨æˆ·æŒ‡å®šé»˜è®¤çš„ç…§æ˜Žå‚æ•°ï¼Œä¾‹å¦‚环境照明,å„ç§åŽæœŸå¤„ç†æ•ˆ"
-"果,例如SSAOã€DOFã€Tonemapping,以åŠå¦‚何绘制背景例如纯色ã€å¤©ç©ºç›’。通常,这些"
-"都是为了æé«˜åœºæ™¯çš„真实性åŠè‰²å½©å¹³è¡¡è€Œæ·»åŠ çš„ã€‚"
+"在[WorldEnvironment]ä¸­å®šä¹‰çš„å‚æ•°å¯ä»¥è¢«è®¾ç½®åœ¨å½“å‰[Camera]上的[Environment]节点"
+"è¦†ç›–ã€‚æ­¤å¤–ï¼Œåœ¨ä¸€ä¸ªç»™å®šçš„åœºæ™¯ä¸­ï¼ŒåŒæ—¶åªèƒ½å®žä¾‹åŒ–一个[WorldEnvironment]实例。\n"
+"[WorldEnvironment]å…è®¸ç”¨æˆ·æŒ‡å®šé»˜è®¤çš„ç…§æ˜Žå‚æ•°ï¼ˆä¾‹å¦‚环境照明),å„ç§åŽæœŸå¤„ç†æ•ˆ"
+"果(例如SSAOã€DOFã€Tonemapping),以åŠå¦‚何绘制背景(例如纯色ã€å¤©ç©ºç›’)。通"
+"常,这些都是为了æé«˜åœºæ™¯çš„真实性åŠè‰²å½©å¹³è¡¡è€Œæ·»åŠ çš„ã€‚"
#: doc/classes/WorldEnvironment.xml:21
msgid ""
@@ -83496,6 +83786,102 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr "如果为[code]true[/code],则对å­èŠ‚ç‚¹è¿›è¡ŒæŽ’åºï¼Œå¦åˆ™ç¦ç”¨æŽ’åºã€‚"
+#~ msgid "Returns the label used for built-in text."
+#~ msgstr "返回用于内置文本的标签。"
+
+#~ msgid "Returns the OK [Button] instance."
+#~ msgstr "返回OK [Button]实例。"
+
+#~ msgid "Returns the [ColorPicker] that this node toggles."
+#~ msgstr "返回此节点切æ¢çš„[ColorPicker]。"
+
+#~ msgid "Returns the cancel button."
+#~ msgstr "è¿”å›žå–æ¶ˆæŒ‰é’®ã€‚"
+
+#~ msgid ""
+#~ "Returns the [code]VBoxContainer[/code] used to display the file system."
+#~ msgstr "返回用于显示文件系统的 [code]VBoxContainer[/code] 。"
+
+#~ msgid "Returns the editor's [FileSystemDock] instance."
+#~ msgstr "返回编辑器的[FileSystemDock]实例。"
+
+#~ msgid "Returns the editor's [EditorInspector] instance."
+#~ msgstr "返回编辑器的[EditorInspector]实例。"
+
+#~ msgid "Returns the editor's [ScriptEditor] instance."
+#~ msgstr "返回编辑器的[ScriptEditor]实例。"
+
+#~ msgid "Returns the LineEdit for the selected file."
+#~ msgstr "返回所选文件的LineEdit。"
+
+#~ msgid ""
+#~ "Returns the vertical box container of the dialog, custom controls can be "
+#~ "added to it."
+#~ msgstr "è¿”å›žå¯¹è¯æ¡†çš„垂直框容器,å¯ä»¥åœ¨å…¶ä¸­æ·»åŠ è‡ªå®šä¹‰æŽ§ä»¶ã€‚"
+
+#~ msgid "Returns the [Object] ID associated with the list."
+#~ msgstr "返回与列表相关的[Object]对象ID。"
+
+#~ msgid ""
+#~ "Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
+#~ "displayed when right-clicking on the [LineEdit]."
+#~ msgstr ""
+#~ "返回此[LineEdit]çš„[PopupMenu]。默认情况下,å³é”®å•击[LineEdit]时显示此èœ"
+#~ "å•。"
+
+#~ msgid "Returns the [PopupMenu] contained in this button."
+#~ msgstr "返回该按钮中包å«çš„[PopupMenu]。"
+
+#~ msgid ""
+#~ "Removes a child node. The node is NOT deleted and must be deleted "
+#~ "manually."
+#~ msgstr "移除一个å­èŠ‚ç‚¹ã€‚è¯¥èŠ‚ç‚¹ä¸ä¼šè¢«åˆ é™¤ï¼Œå¿…须手动删除。"
+
+#~ msgid "Returns the vertical scrollbar."
+#~ msgstr "返回垂直滚动æ¡ã€‚"
+
+#~ msgid ""
+#~ "Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+#~ msgstr "返回此 [ScrollContainer] çš„æ°´å¹³æ»šåŠ¨æ¡ [HScrollBar]。"
+
+#~ msgid ""
+#~ "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#~ msgstr "返回此 [ScrollContainer] çš„åž‚ç›´æ»šåŠ¨æ¡ [VScrollBar]。"
+
+#~ msgid ""
+#~ "Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
+#~ "access properties and methods of [LineEdit]."
+#~ msgstr ""
+#~ "从此 [SpinBox] 返回 [LineEdit] 实例。您å¯ä»¥ä½¿ç”¨å®ƒæ¥è®¿é—® [LineEdit] 的属性"
+#~ "和方法。"
+
+#~ msgid ""
+#~ "Returns the [Popup] node instance if one has been set already with "
+#~ "[method set_popup]."
+#~ msgstr ""
+#~ "如果已ç»ä½¿ç”¨ [method set_popup] 设置了节点实例,则返回 [Popup] 节点实例。"
+
+#~ msgid ""
+#~ "Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
+#~ "displayed when right-clicking on the [TextEdit]."
+#~ msgstr ""
+#~ "返回此 [TextEdit] çš„ [PopupMenu]。默认情况下,å³é”®å•击 [TextEdit] 时会显示"
+#~ "æ­¤èœå•。"
+
+#~ msgid ""
+#~ "Returns [code]true[/code] if this [Thread] is currently active. An active "
+#~ "[Thread] cannot start work on a new method but can be joined with [method "
+#~ "wait_to_finish]."
+#~ msgstr ""
+#~ "如果这个[Thread]线程当å‰å¤„于激活状æ€ï¼Œè¿”回[code]true[/code]。一个激活的"
+#~ "[Thread]ä¸èƒ½åœ¨ä¸€ä¸ªæ–°æ–¹æ³•上开始è¿è¡Œï¼Œä½†å¯ä»¥ä¸Ž[method wait_to_finish]一起。"
+
+#~ msgid "Wait time in seconds."
+#~ msgstr "以秒为å•ä½çš„等待时间。"
+
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "返回关闭的[TextureButton]。"
+
#~ msgid ""
#~ "Returns the cosine of angle [code]s[/code] in radians.\n"
#~ "[codeblock]\n"
@@ -85576,9 +85962,6 @@ msgstr "如果为[code]true[/code],则对å­èŠ‚ç‚¹è¿›è¡ŒæŽ’åºï¼Œå¦åˆ™ç¦ç”¨æ
#~ "(max)."
#~ msgstr "水平滑å—。è§[Slider]。水平滑å—从左(最å°å€¼ï¼‰åˆ°å³ï¼ˆæœ€å¤§å€¼ï¼‰æ»‘动。"
-#~ msgid "Maximum allowed size for response bodies."
-#~ msgstr "å…许的最大å“应体大å°ã€‚"
-
#~ msgid ""
#~ "A [Texture2D] based on an [Image]. Can be created from an [Image] with "
#~ "[method create_from_image].\n"
diff --git a/doc/translations/zh_TW.po b/doc/translations/zh_TW.po
index 6b1223decf..456c9be89c 100644
--- a/doc/translations/zh_TW.po
+++ b/doc/translations/zh_TW.po
@@ -9,12 +9,13 @@
# Pierre Stempin <pierre.stempin@gmail.com>, 2020.
# Lihan Zhu <lihan@proctorio.com>, 2021.
# jixun <jingshinglai@gmail.com>, 2021.
+# Nick Chu <nickchu35@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2021-09-16 18:16+0000\n"
-"Last-Translator: jixun <jingshinglai@gmail.com>\n"
+"PO-Revision-Date: 2021-10-10 14:03+0000\n"
+"Last-Translator: Nick Chu <nickchu35@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"godot-engine/godot-class-reference/zh_Hant/>\n"
"Language: zh_TW\n"
@@ -118,14 +119,17 @@ msgstr ""
"支æ´çš„色彩å稱與 [Color] 中定義的常數相åŒã€‚"
#: modules/gdscript/doc_classes/@GDScript.xml:45
-#, fuzzy
msgid ""
"Returns the absolute value of parameter [code]s[/code] (i.e. positive "
"value).\n"
"[codeblock]\n"
"a = abs(-1) # a is 1\n"
"[/codeblock]"
-msgstr "**hello**"
+msgstr ""
+"å›žå‚³åƒæ•¸ [code]s[/code] 的絕å°å€¼ï¼ˆæ­£æ•¸ï¼‰ã€‚\n"
+"[codeblock]\n"
+"a = abs(-1) # a 是 1\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml:55
#, fuzzy
@@ -3834,20 +3838,28 @@ msgid ""
msgstr ""
#: doc/classes/AcceptDialog.xml:34
-msgid "Returns the label used for built-in text."
+msgid ""
+"Returns the label used for built-in text.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:40
-msgid "Returns the OK [Button] instance."
+#: doc/classes/AcceptDialog.xml:41
+msgid ""
+"Returns the OK [Button] instance.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/AcceptDialog.xml:47
+#: doc/classes/AcceptDialog.xml:49
msgid ""
"Registers a [LineEdit] in the dialog. When the enter key is pressed, the "
"dialog will be accepted."
msgstr ""
-#: doc/classes/AcceptDialog.xml:54
+#: doc/classes/AcceptDialog.xml:56
msgid ""
"Removes the [code]button[/code] from the dialog. Does NOT free the "
"[code]button[/code]. The [code]button[/code] must be a [Button] added with "
@@ -3856,11 +3868,11 @@ msgid ""
"custom_action] signal or cancel this dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:60
+#: doc/classes/AcceptDialog.xml:62
msgid "Sets autowrapping for the text in the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:63
+#: doc/classes/AcceptDialog.xml:65
msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
@@ -3874,15 +3886,15 @@ msgid ""
"[FileDialog] to disable hiding the dialog when pressing OK."
msgstr ""
-#: doc/classes/AcceptDialog.xml:67
+#: doc/classes/AcceptDialog.xml:69
msgid "The text displayed by the dialog."
msgstr ""
-#: doc/classes/AcceptDialog.xml:74
+#: doc/classes/AcceptDialog.xml:76
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
-#: doc/classes/AcceptDialog.xml:80
+#: doc/classes/AcceptDialog.xml:82
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr ""
@@ -6448,13 +6460,15 @@ msgstr ""
msgid ""
"Emitted when one of another Area's [Shape]s enters one of this Area's "
"[Shape]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area's [CollisionObject] used by "
-"the [PhysicsServer].\n"
+"[code]area_rid[/code] the [RID] of the other Area's [CollisionObject] used "
+"by the [PhysicsServer].\n"
"[code]area[/code] the other Area.\n"
-"[code]area_shape[/code] the index of the [Shape] of the other Area used by "
-"the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]area_shape_index[/code] the index of the [Shape] of the other Area "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]area."
+"shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:140
@@ -6480,14 +6494,16 @@ msgid ""
"Emitted when one of a [PhysicsBody] or [GridMap]'s [Shape]s enters one of "
"this Area's [Shape]s. Requires [member monitoring] to be set to [code]true[/"
"code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody] or [MeshLibrary]'s "
"[CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the [PhysicsBody] "
"or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the [PhysicsBody] or "
-"[GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this Area used by the "
-"[PhysicsServer]."
+"[code]body_shape_index[/code] the index of the [Shape] of the [PhysicsBody] "
+"or [GridMap] used by the [PhysicsServer]. Get the [CollisionShape] node with "
+"[code]body.shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this Area used by "
+"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area.xml:180 doc/classes/Area2D.xml:170
@@ -6625,26 +6641,30 @@ msgstr ""
msgid ""
"Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:120
msgid ""
"Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's "
"[Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].\n"
-"[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] "
+"[code]area_rid[/code] the [RID] of the other Area2D's [CollisionObject2D] "
"used by the [Physics2DServer].\n"
"[code]area[/code] the other Area2D.\n"
-"[code]area_shape[/code] the index of the [Shape2D] of the other Area2D used "
-"by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]area_shape_index[/code] the index of the [Shape2D] of the other Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:130
@@ -6671,14 +6691,17 @@ msgid ""
"of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Area2D.xml:160
@@ -6687,14 +6710,17 @@ msgid ""
"this Area2D's [Shape2D]s. Requires [member monitoring] to be set to "
"[code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision "
"[Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the [PhysicsBody2D] or "
-"[TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this Area2D used by "
-"the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this Area2D "
+"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/Array.xml:4
@@ -7295,7 +7321,7 @@ msgid ""
msgstr ""
#: doc/classes/ArrayMesh.xml:209 doc/classes/Mesh.xml:225
-#: doc/classes/VisualServer.xml:3269
+#: doc/classes/VisualServer.xml:3270
msgid "Represents the size of the [enum ArrayType] enum."
msgstr ""
@@ -10038,7 +10064,10 @@ msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:127
msgid ""
"No dampening of loudness according to distance. The sound will still be "
-"heard positionally, unlike an [AudioStreamPlayer]."
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
msgstr ""
#: doc/classes/AudioStreamPlayer3D.xml:130
@@ -12751,9 +12780,8 @@ msgstr ""
#: doc/classes/CharFXTransform.xml:31
msgid ""
"The time elapsed since the [RichTextLabel] was added to the scene tree (in "
-"seconds). Time stops when the project is paused, unless the "
-"[RichTextLabel]'s [member Node.pause_mode] is set to [constant Node."
-"PAUSE_MODE_PROCESS].\n"
+"seconds). Time stops when the [RichTextLabel] is paused (see [member Node."
+"pause_mode]). Resets when the text in the [RichTextLabel] is changed.\n"
"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."
msgstr ""
@@ -14579,7 +14607,7 @@ msgstr ""
msgid "Returns the list of colors in the presets of the color picker."
msgstr ""
-#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:31
+#: doc/classes/ColorPicker.xml:38 doc/classes/ColorPickerButton.xml:33
msgid "The currently selected color."
msgstr ""
@@ -14679,84 +14707,91 @@ msgid ""
msgstr ""
#: doc/classes/ColorPickerButton.xml:19
-msgid "Returns the [ColorPicker] that this node toggles."
+msgid ""
+"Returns the [ColorPicker] that this node toggles.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:25
+#: doc/classes/ColorPickerButton.xml:26
msgid ""
"Returns the control's [PopupPanel] which allows you to connect to popup "
"signals. This allows you to handle events when the ColorPicker is shown or "
-"hidden."
+"hidden.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:34
+#: doc/classes/ColorPickerButton.xml:36
msgid ""
"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will "
"be visible."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:42
+#: doc/classes/ColorPickerButton.xml:44
msgid "Emitted when the color changes."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:47
+#: doc/classes/ColorPickerButton.xml:49
msgid ""
"Emitted when the [ColorPicker] is created (the button is pressed for the "
"first time)."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:52
+#: doc/classes/ColorPickerButton.xml:54
msgid "Emitted when the [ColorPicker] is closed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:60
+#: doc/classes/ColorPickerButton.xml:62
msgid "The background of the color preview rect on the button."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:63
+#: doc/classes/ColorPickerButton.xml:65
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:66
+#: doc/classes/ColorPickerButton.xml:68
msgid ""
"[StyleBox] used when the [ColorPickerButton] is focused. It is displayed "
"over the current [StyleBox], so using [StyleBoxEmpty] will just disable the "
"focus visual effect."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:69
+#: doc/classes/ColorPickerButton.xml:71
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:72
+#: doc/classes/ColorPickerButton.xml:74
msgid "Default text [Color] of the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:75
+#: doc/classes/ColorPickerButton.xml:77
msgid "Text [Color] used when the [ColorPickerButton] is disabled."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:78
+#: doc/classes/ColorPickerButton.xml:80
msgid "Text [Color] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:81
+#: doc/classes/ColorPickerButton.xml:83
msgid "Text [Color] used when the [ColorPickerButton] is being pressed."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:84
+#: doc/classes/ColorPickerButton.xml:86
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:87
+#: doc/classes/ColorPickerButton.xml:89
msgid "The horizontal space between [ColorPickerButton]'s icon and text."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:90
+#: doc/classes/ColorPickerButton.xml:92
msgid "Default [StyleBox] for the [ColorPickerButton]."
msgstr ""
-#: doc/classes/ColorPickerButton.xml:93
+#: doc/classes/ColorPickerButton.xml:95
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
msgstr ""
@@ -15072,7 +15107,11 @@ msgid ""
msgstr ""
#: doc/classes/ConfirmationDialog.xml:19
-msgid "Returns the cancel button."
+msgid ""
+"Returns the cancel button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/Container.xml:4
@@ -19700,117 +19739,121 @@ msgid "Removes all filters except for \"All Files (*)\"."
msgstr ""
#: doc/classes/EditorFileDialog.xml:28
-msgid "Returns the [code]VBoxContainer[/code] used to display the file system."
+msgid ""
+"Returns the [code]VBoxContainer[/code] used to display the file system.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:34
+#: doc/classes/EditorFileDialog.xml:35
msgid ""
"Notify the [EditorFileDialog] that its view of the data is no longer "
"accurate. Updates the view contents on next view update."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:40
+#: doc/classes/EditorFileDialog.xml:41
msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:43
+#: doc/classes/EditorFileDialog.xml:44
msgid "The currently occupied directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:46
+#: doc/classes/EditorFileDialog.xml:47
msgid "The currently selected file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:49
+#: doc/classes/EditorFileDialog.xml:50
msgid "The file system path in the address bar."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:53
+#: doc/classes/EditorFileDialog.xml:54
msgid ""
"If [code]true[/code], the [EditorFileDialog] will not warn the user before "
"overwriting files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:56
+#: doc/classes/EditorFileDialog.xml:57
msgid ""
"The view format in which the [EditorFileDialog] displays resources to the "
"user."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:59
+#: doc/classes/EditorFileDialog.xml:60
msgid ""
"The purpose of the [EditorFileDialog], which defines the allowed behaviors."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:63
+#: doc/classes/EditorFileDialog.xml:64
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:71
+#: doc/classes/EditorFileDialog.xml:72
msgid "Emitted when a directory is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:77
+#: doc/classes/EditorFileDialog.xml:78
msgid "Emitted when a file is selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:83
+#: doc/classes/EditorFileDialog.xml:84
msgid "Emitted when multiple files are selected."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:89
+#: doc/classes/EditorFileDialog.xml:90
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"open the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:92
+#: doc/classes/EditorFileDialog.xml:93
msgid ""
"The [EditorFileDialog] can select multiple files. Accepting the window will "
"open all files."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:95
+#: doc/classes/EditorFileDialog.xml:96
msgid ""
"The [EditorFileDialog] can select only one directory. Accepting the window "
"will open the directory."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:98
+#: doc/classes/EditorFileDialog.xml:99
msgid ""
"The [EditorFileDialog] can select a file or directory. Accepting the window "
"will open it."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:101
+#: doc/classes/EditorFileDialog.xml:102
msgid ""
"The [EditorFileDialog] can select only one file. Accepting the window will "
"save the file."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:104
+#: doc/classes/EditorFileDialog.xml:105
msgid ""
"The [EditorFileDialog] can only view [code]res://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:107
+#: doc/classes/EditorFileDialog.xml:108
msgid ""
"The [EditorFileDialog] can only view [code]user://[/code] directory contents."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:110
+#: doc/classes/EditorFileDialog.xml:111
msgid "The [EditorFileDialog] can view the entire local file system."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:113
+#: doc/classes/EditorFileDialog.xml:114
msgid "The [EditorFileDialog] displays resources as thumbnails."
msgstr ""
-#: doc/classes/EditorFileDialog.xml:116
+#: doc/classes/EditorFileDialog.xml:117
msgid "The [EditorFileDialog] displays resources as a list of filenames."
msgstr ""
@@ -19981,7 +20024,8 @@ msgid ""
"resource type. See [method get_recognized_extensions] and [method "
"get_resource_type]. They may optionally specify some import presets that "
"affect the import process. EditorImportPlugins are responsible for creating "
-"the resources and saving them in the [code].import[/code] directory.\n"
+"the resources and saving them in the [code].import[/code] directory (see "
+"[member ProjectSettings.application/config/project_data_dir_name]).\n"
"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
"with the extension \".special\" or \".spec\":\n"
"[codeblock]\n"
@@ -20107,7 +20151,8 @@ msgstr ""
#: doc/classes/EditorImportPlugin.xml:124
msgid ""
"Gets the extension used to save this resource in the [code].import[/code] "
-"directory."
+"directory (see [member ProjectSettings.application/config/"
+"project_data_dir_name])."
msgstr ""
#: doc/classes/EditorImportPlugin.xml:130
@@ -20285,18 +20330,20 @@ msgstr ""
msgid ""
"Returns the main container of Godot editor's window. For example, you can "
"use it to retrieve the size of the container and place your controls "
-"accordingly."
+"accordingly.\n"
+"[b]Warning:[/b] Removing and freeing this node will render the editor "
+"useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:36
+#: doc/classes/EditorInterface.xml:37
msgid "Returns the current path being viewed in the [FileSystemDock]."
msgstr ""
-#: doc/classes/EditorInterface.xml:42
+#: doc/classes/EditorInterface.xml:43
msgid "Returns the edited (current) scene's root [Node]."
msgstr ""
-#: doc/classes/EditorInterface.xml:48
+#: doc/classes/EditorInterface.xml:49
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -20306,119 +20353,130 @@ msgid ""
"settings. Editor must be restarted for changes to be properly applied."
msgstr ""
-#: doc/classes/EditorInterface.xml:55
+#: doc/classes/EditorInterface.xml:56
msgid "Returns the editor's [EditorSettings] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:61
+#: doc/classes/EditorInterface.xml:62
msgid ""
"Returns the main editor control. Use this as a parent for main screens.\n"
"[b]Note:[/b] This returns the main editor control containing the whole "
-"editor, not the 2D or 3D viewports specifically."
+"editor, not the 2D or 3D viewports specifically.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:68
-msgid "Returns the editor's [FileSystemDock] instance."
+#: doc/classes/EditorInterface.xml:70
+msgid ""
+"Returns the editor's [FileSystemDock] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:74
-msgid "Returns the editor's [EditorInspector] instance."
+#: doc/classes/EditorInterface.xml:77
+msgid ""
+"Returns the editor's [EditorInspector] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:80
+#: doc/classes/EditorInterface.xml:84
msgid "Returns an [Array] with the file paths of the currently opened scenes."
msgstr ""
-#: doc/classes/EditorInterface.xml:86
+#: doc/classes/EditorInterface.xml:90
msgid ""
"Returns the name of the scene that is being played. If no scene is currently "
"being played, returns an empty string."
msgstr ""
-#: doc/classes/EditorInterface.xml:92
+#: doc/classes/EditorInterface.xml:96
msgid "Returns the editor's [EditorFileSystem] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:98
+#: doc/classes/EditorInterface.xml:102
msgid "Returns the editor's [EditorResourcePreview] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:104
-msgid "Returns the editor's [ScriptEditor] instance."
+#: doc/classes/EditorInterface.xml:108
+msgid ""
+"Returns the editor's [ScriptEditor] instance.\n"
+"[b]Warning:[/b] Removing and freeing this node will render a part of the "
+"editor useless and may cause a crash."
msgstr ""
-#: doc/classes/EditorInterface.xml:110
+#: doc/classes/EditorInterface.xml:115
msgid ""
"Returns the path of the directory currently selected in the "
"[FileSystemDock]. If a file is selected, its base directory will be returned "
"using [method String.get_base_dir] instead."
msgstr ""
-#: doc/classes/EditorInterface.xml:116
+#: doc/classes/EditorInterface.xml:121
msgid "Returns the editor's [EditorSelection] instance."
msgstr ""
-#: doc/classes/EditorInterface.xml:125
+#: doc/classes/EditorInterface.xml:130
msgid ""
"Shows the given property on the given [code]object[/code] in the editor's "
"Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins "
"will not attempt to edit [code]object[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:131
+#: doc/classes/EditorInterface.xml:136
msgid ""
"Returns [code]true[/code] if a scene is currently being played, [code]false[/"
"code] otherwise. Paused scenes are considered as being played."
msgstr ""
-#: doc/classes/EditorInterface.xml:138
+#: doc/classes/EditorInterface.xml:143
msgid ""
"Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. "
"The plugin name is the same as its directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:146
+#: doc/classes/EditorInterface.xml:151
msgid ""
"Returns mesh previews rendered at the given size as an [Array] of [Texture]s."
msgstr ""
-#: doc/classes/EditorInterface.xml:153
+#: doc/classes/EditorInterface.xml:158
msgid "Opens the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:159
+#: doc/classes/EditorInterface.xml:164
msgid "Plays the currently active scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:166
+#: doc/classes/EditorInterface.xml:171
msgid "Plays the scene specified by its filepath."
msgstr ""
-#: doc/classes/EditorInterface.xml:172
+#: doc/classes/EditorInterface.xml:177
msgid "Plays the main scene."
msgstr ""
-#: doc/classes/EditorInterface.xml:179
+#: doc/classes/EditorInterface.xml:184
msgid "Reloads the scene at the given path."
msgstr ""
-#: doc/classes/EditorInterface.xml:185
+#: doc/classes/EditorInterface.xml:190
msgid ""
"Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/"
"code] (see [@GlobalScope] constants)."
msgstr ""
-#: doc/classes/EditorInterface.xml:193
+#: doc/classes/EditorInterface.xml:198
msgid "Saves the scene as a file at [code]path[/code]."
msgstr ""
-#: doc/classes/EditorInterface.xml:200
+#: doc/classes/EditorInterface.xml:205
msgid ""
"Selects the file, with the path provided by [code]file[/code], in the "
"FileSystem dock."
msgstr ""
-#: doc/classes/EditorInterface.xml:207
+#: doc/classes/EditorInterface.xml:212
msgid ""
"Sets the editor's current main screen to the one specified in [code]name[/"
"code]. [code]name[/code] must match the text of the tab in question exactly "
@@ -20426,17 +20484,17 @@ msgid ""
"code])."
msgstr ""
-#: doc/classes/EditorInterface.xml:215
+#: doc/classes/EditorInterface.xml:220
msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr ""
-#: doc/classes/EditorInterface.xml:221
+#: doc/classes/EditorInterface.xml:226
msgid "Stops the scene that is currently playing."
msgstr ""
-#: doc/classes/EditorInterface.xml:227
+#: doc/classes/EditorInterface.xml:232
msgid ""
"If [code]true[/code], enables distraction-free mode which hides side docks "
"to increase the space available for the main view."
@@ -20766,30 +20824,32 @@ msgstr ""
#: doc/classes/EditorPlugin.xml:305
msgid ""
"Gets the Editor's dialogue used for making scripts.\n"
-"[b]Note:[/b] Users can configure it before use."
+"[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 ""
-#: doc/classes/EditorPlugin.xml:312
+#: doc/classes/EditorPlugin.xml:313
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:318
+#: doc/classes/EditorPlugin.xml:319
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 ""
-#: doc/classes/EditorPlugin.xml:325
+#: doc/classes/EditorPlugin.xml:326
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)."
msgstr ""
-#: doc/classes/EditorPlugin.xml:332
+#: doc/classes/EditorPlugin.xml:333
msgid ""
"Implement this function if your plugin edits a specific type of object "
"(Resource or Node). If you return [code]true[/code], then you will get the "
@@ -20799,22 +20859,22 @@ msgid ""
"be called too."
msgstr ""
-#: doc/classes/EditorPlugin.xml:338
+#: doc/classes/EditorPlugin.xml:339
msgid ""
"Returns [code]true[/code] if this is a main screen editor plugin (it goes in "
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
-#: doc/classes/EditorPlugin.xml:344
+#: doc/classes/EditorPlugin.xml:345
msgid "Minimizes the bottom panel."
msgstr ""
-#: doc/classes/EditorPlugin.xml:351
+#: doc/classes/EditorPlugin.xml:352
msgid "Makes a specific item in the bottom panel visible."
msgstr ""
-#: doc/classes/EditorPlugin.xml:358
+#: doc/classes/EditorPlugin.xml:359
msgid ""
"This function will be called when the editor is requested to become visible. "
"It is used for plugins that edit a specific object type.\n"
@@ -20822,68 +20882,68 @@ msgid ""
"manually."
msgstr ""
-#: doc/classes/EditorPlugin.xml:365
+#: doc/classes/EditorPlugin.xml:366
msgid "Queue save the project's editor layout."
msgstr ""
-#: doc/classes/EditorPlugin.xml:372
+#: doc/classes/EditorPlugin.xml:373
msgid "Removes an Autoload [code]name[/code] from the list."
msgstr ""
-#: doc/classes/EditorPlugin.xml:379
+#: doc/classes/EditorPlugin.xml:380
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:387
+#: doc/classes/EditorPlugin.xml:388
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:394
+#: doc/classes/EditorPlugin.xml:395
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
-#: doc/classes/EditorPlugin.xml:401
+#: doc/classes/EditorPlugin.xml:402
msgid "Removes a custom type added by [method add_custom_type]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:408
+#: doc/classes/EditorPlugin.xml:409
msgid "Removes an export plugin registered by [method add_export_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:415
+#: doc/classes/EditorPlugin.xml:416
msgid "Removes an import plugin registered by [method add_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:422
+#: doc/classes/EditorPlugin.xml:423
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr ""
-#: doc/classes/EditorPlugin.xml:429
+#: doc/classes/EditorPlugin.xml:430
msgid ""
"Removes a scene importer registered by [method add_scene_import_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:436
+#: doc/classes/EditorPlugin.xml:437
msgid "Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:443
+#: doc/classes/EditorPlugin.xml:444
msgid "Removes a menu [code]name[/code] from [b]Project > Tools[/b]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:449
+#: doc/classes/EditorPlugin.xml:450
msgid ""
"This method is called after the editor saves the project or when it's "
"closed. It asks the plugin to save edited external scenes/resources."
msgstr ""
-#: doc/classes/EditorPlugin.xml:455
+#: doc/classes/EditorPlugin.xml:456
msgid ""
"Enables calling of [method forward_canvas_force_draw_over_viewport] for the "
"2D editor and [method forward_spatial_force_draw_over_viewport] for the 3D "
@@ -20891,22 +20951,22 @@ msgid ""
"once and it will work permanently for this plugin."
msgstr ""
-#: doc/classes/EditorPlugin.xml:461
+#: doc/classes/EditorPlugin.xml:462
msgid ""
"Use this method if you always want to receive inputs from 3D view screen "
"inside [method forward_spatial_gui_input]. It might be especially usable if "
"your plugin will want to use raycast in the scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:468
+#: doc/classes/EditorPlugin.xml:469
msgid "Restore the state saved by [method get_state]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:475
+#: doc/classes/EditorPlugin.xml:476
msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:481
+#: doc/classes/EditorPlugin.xml:482
msgid ""
"Updates the overlays of the 2D and 3D editor viewport. Causes methods "
"[method forward_canvas_draw_over_viewport], [method "
@@ -20915,26 +20975,26 @@ msgid ""
"forward_spatial_force_draw_over_viewport] to be called."
msgstr ""
-#: doc/classes/EditorPlugin.xml:489
+#: doc/classes/EditorPlugin.xml:490
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
msgstr ""
-#: doc/classes/EditorPlugin.xml:500
+#: doc/classes/EditorPlugin.xml:501
msgid ""
"Emitted when the scene is changed in the editor. The argument will return "
"the root node of the scene that has just become active. If this scene is new "
"and empty, the argument will be [code]null[/code]."
msgstr ""
-#: doc/classes/EditorPlugin.xml:506
+#: doc/classes/EditorPlugin.xml:507
msgid ""
"Emitted when user closes a scene. The argument is file path to a closed "
"scene."
msgstr ""
-#: doc/classes/EditorPlugin.xml:552
+#: doc/classes/EditorPlugin.xml:553
msgid "Represents the size of the [enum DockSlot] enum."
msgstr ""
@@ -22577,53 +22637,61 @@ msgstr ""
#: doc/classes/Environment.xml:203
msgid ""
+"Takes more samples during downsample pass of glow. This ensures that single "
+"pixels are captured by glow which makes the glow look smoother and more "
+"stable during movement. However, it is very expensive and makes the glow "
+"post process take twice as long."
+msgstr ""
+
+#: doc/classes/Environment.xml:206
+msgid ""
"The glow intensity. When using the GLES2 renderer, this should be increased "
"to 1.5 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:206
+#: doc/classes/Environment.xml:209
msgid ""
"If [code]true[/code], the 1st level of glow is enabled. This is the most "
"\"local\" level (least blurry)."
msgstr ""
-#: doc/classes/Environment.xml:209
+#: doc/classes/Environment.xml:212
msgid "If [code]true[/code], the 2th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:212
+#: doc/classes/Environment.xml:215
msgid "If [code]true[/code], the 3th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:215
+#: doc/classes/Environment.xml:218
msgid "If [code]true[/code], the 4th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:218
+#: doc/classes/Environment.xml:221
msgid "If [code]true[/code], the 5th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:221
+#: doc/classes/Environment.xml:224
msgid "If [code]true[/code], the 6th level of glow is enabled."
msgstr ""
-#: doc/classes/Environment.xml:224
+#: doc/classes/Environment.xml:227
msgid ""
"If [code]true[/code], the 7th level of glow is enabled. This is the most "
"\"global\" level (blurriest)."
msgstr ""
-#: doc/classes/Environment.xml:227
+#: doc/classes/Environment.xml:230
msgid ""
"The glow strength. When using the GLES2 renderer, this should be increased "
"to 1.3 to compensate for the lack of HDR rendering."
msgstr ""
-#: doc/classes/Environment.xml:230
+#: doc/classes/Environment.xml:233
msgid "The depth tolerance for screen-space reflections."
msgstr ""
-#: doc/classes/Environment.xml:233
+#: doc/classes/Environment.xml:236
msgid ""
"If [code]true[/code], screen-space reflections are enabled. Screen-space "
"reflections are more accurate than reflections from [GIProbe]s or "
@@ -22631,58 +22699,58 @@ msgid ""
"others."
msgstr ""
-#: doc/classes/Environment.xml:236
+#: doc/classes/Environment.xml:239
msgid ""
"The fade-in distance for screen-space reflections. Affects the area from the "
"reflected material to the screen-space reflection)."
msgstr ""
-#: doc/classes/Environment.xml:239
+#: doc/classes/Environment.xml:242
msgid ""
"The fade-out distance for screen-space reflections. Affects the area from "
"the screen-space reflection to the \"global\" reflection."
msgstr ""
-#: doc/classes/Environment.xml:242
+#: doc/classes/Environment.xml:245
msgid ""
"The maximum number of steps for screen-space reflections. Higher values are "
"slower."
msgstr ""
-#: doc/classes/Environment.xml:245
+#: doc/classes/Environment.xml:248
msgid ""
"If [code]true[/code], screen-space reflections will take the material "
"roughness into account."
msgstr ""
-#: doc/classes/Environment.xml:248
+#: doc/classes/Environment.xml:251
msgid ""
"The screen-space ambient occlusion intensity on materials that have an AO "
"texture defined. Values higher than [code]0[/code] will make the SSAO effect "
"visible in areas darkened by AO textures."
msgstr ""
-#: doc/classes/Environment.xml:251
+#: doc/classes/Environment.xml:254
msgid ""
"The screen-space ambient occlusion bias. This should be kept high enough to "
"prevent \"smooth\" curves from being affected by ambient occlusion."
msgstr ""
-#: doc/classes/Environment.xml:254
+#: doc/classes/Environment.xml:257
msgid ""
"The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for "
"possible values."
msgstr ""
-#: doc/classes/Environment.xml:257
+#: doc/classes/Environment.xml:260
msgid "The screen-space ambient occlusion color."
msgstr ""
-#: doc/classes/Environment.xml:260
+#: doc/classes/Environment.xml:263
msgid "The screen-space ambient occlusion edge sharpness."
msgstr ""
-#: doc/classes/Environment.xml:263
+#: doc/classes/Environment.xml:266
msgid ""
"If [code]true[/code], the screen-space ambient occlusion effect is enabled. "
"This darkens objects' corners and cavities to simulate ambient light not "
@@ -22693,19 +22761,19 @@ msgid ""
"issues."
msgstr ""
-#: doc/classes/Environment.xml:266
+#: doc/classes/Environment.xml:269
msgid ""
"The primary screen-space ambient occlusion intensity. See also [member "
"ssao_radius]."
msgstr ""
-#: doc/classes/Environment.xml:269
+#: doc/classes/Environment.xml:272
msgid ""
"The secondary screen-space ambient occlusion intensity. See also [member "
"ssao_radius2]."
msgstr ""
-#: doc/classes/Environment.xml:272
+#: doc/classes/Environment.xml:275
msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
@@ -22713,17 +22781,17 @@ msgid ""
"the SSAO effect visible in direct light."
msgstr ""
-#: doc/classes/Environment.xml:275
+#: doc/classes/Environment.xml:278
msgid ""
"The screen-space ambient occlusion quality. Higher qualities will make "
"better use of small objects for ambient occlusion, but are slower."
msgstr ""
-#: doc/classes/Environment.xml:278
+#: doc/classes/Environment.xml:281
msgid "The primary screen-space ambient occlusion radius."
msgstr ""
-#: doc/classes/Environment.xml:281
+#: doc/classes/Environment.xml:284
msgid ""
"The secondary screen-space ambient occlusion radius. If set to a value "
"higher than [code]0[/code], enables the secondary screen-space ambient "
@@ -22731,24 +22799,24 @@ msgid ""
"the cost of performance)."
msgstr ""
-#: doc/classes/Environment.xml:284
+#: doc/classes/Environment.xml:287
msgid "The default exposure used for tonemapping."
msgstr ""
-#: doc/classes/Environment.xml:287
+#: doc/classes/Environment.xml:290
msgid ""
"The tonemapping mode to use. Tonemapping is the process that \"converts\" "
"HDR values to be suitable for rendering on a LDR display. (Godot doesn't "
"support rendering on HDR displays yet.)"
msgstr ""
-#: doc/classes/Environment.xml:290
+#: doc/classes/Environment.xml:293
msgid ""
"The white reference value for tonemapping. Only effective if the [member "
"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]."
msgstr ""
-#: doc/classes/Environment.xml:295
+#: doc/classes/Environment.xml:298
msgid ""
"Keeps on screen every pixel drawn in the background. This is the fastest "
"background mode, but it can only be safely used in fully-interior scenes (no "
@@ -22756,21 +22824,21 @@ msgid ""
"is visible, \"ghost trail\" artifacts will be visible when moving the camera."
msgstr ""
-#: doc/classes/Environment.xml:298
+#: doc/classes/Environment.xml:301
msgid ""
"Clears the background using the clear color defined in [member "
"ProjectSettings.rendering/environment/default_clear_color]."
msgstr ""
-#: doc/classes/Environment.xml:301
+#: doc/classes/Environment.xml:304
msgid "Clears the background using a custom clear color."
msgstr ""
-#: doc/classes/Environment.xml:304
+#: doc/classes/Environment.xml:307
msgid "Displays a user-defined sky in the background."
msgstr ""
-#: doc/classes/Environment.xml:307
+#: doc/classes/Environment.xml:310
msgid ""
"Clears the background using a custom clear color and allows defining a sky "
"for shading and reflection. This mode is slightly faster than [constant "
@@ -22778,65 +22846,65 @@ msgid ""
"but the sky itself never is (e.g. top-down camera)."
msgstr ""
-#: doc/classes/Environment.xml:310
+#: doc/classes/Environment.xml:313
msgid "Displays a [CanvasLayer] in the background."
msgstr ""
-#: doc/classes/Environment.xml:313
+#: doc/classes/Environment.xml:316
msgid "Displays a camera feed in the background."
msgstr ""
-#: doc/classes/Environment.xml:316
+#: doc/classes/Environment.xml:319
msgid "Represents the size of the [enum BGMode] enum."
msgstr ""
-#: doc/classes/Environment.xml:319
+#: doc/classes/Environment.xml:322
msgid ""
"Additive glow blending mode. Mostly used for particles, glows (bloom), lens "
"flare, bright sources."
msgstr ""
-#: doc/classes/Environment.xml:322
+#: doc/classes/Environment.xml:325
msgid ""
"Screen glow blending mode. Increases brightness, used frequently with bloom."
msgstr ""
-#: doc/classes/Environment.xml:325
+#: doc/classes/Environment.xml:328
msgid ""
"Soft light glow blending mode. Modifies contrast, exposes shadows and "
"highlights (vivid bloom)."
msgstr ""
-#: doc/classes/Environment.xml:328
+#: doc/classes/Environment.xml:331
msgid ""
"Replace glow blending mode. Replaces all pixels' color by the glow value. "
"This can be used to simulate a full-screen blur effect by tweaking the glow "
"parameters to match the original image's brightness."
msgstr ""
-#: doc/classes/Environment.xml:331
+#: doc/classes/Environment.xml:334
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
"unmodified."
msgstr ""
-#: doc/classes/Environment.xml:334
+#: doc/classes/Environment.xml:337
msgid ""
"Reinhardt tonemapper operator. Performs a variation on rendered pixels' "
"colors by this formula: [code]color = color / (1 + color)[/code]."
msgstr ""
-#: doc/classes/Environment.xml:337
+#: doc/classes/Environment.xml:340
msgid "Filmic tonemapper operator."
msgstr ""
-#: doc/classes/Environment.xml:340
+#: doc/classes/Environment.xml:343
msgid ""
"Academy Color Encoding System tonemapper operator. Performs an aproximation "
"of the ACES tonemapping curve."
msgstr ""
-#: doc/classes/Environment.xml:343
+#: doc/classes/Environment.xml:346
msgid ""
"High quality Academy Color Encoding System tonemapper operator that matches "
"the industry standard. Performs a more physically accurate curve fit which "
@@ -22846,43 +22914,43 @@ msgid ""
"camera sensor."
msgstr ""
-#: doc/classes/Environment.xml:346
+#: doc/classes/Environment.xml:349
msgid "Low depth-of-field blur quality (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:349
+#: doc/classes/Environment.xml:352
msgid "Medium depth-of-field blur quality."
msgstr ""
-#: doc/classes/Environment.xml:352
+#: doc/classes/Environment.xml:355
msgid "High depth-of-field blur quality (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:355
+#: doc/classes/Environment.xml:358
msgid "No blur for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:358
+#: doc/classes/Environment.xml:361
msgid "1×1 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:361
+#: doc/classes/Environment.xml:364
msgid "2×2 blur for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:364
+#: doc/classes/Environment.xml:367
msgid "3×3 blur for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-#: doc/classes/Environment.xml:367
+#: doc/classes/Environment.xml:370
msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
-#: doc/classes/Environment.xml:370
+#: doc/classes/Environment.xml:373
msgid "Low quality for the screen-space ambient occlusion effect."
msgstr ""
-#: doc/classes/Environment.xml:373
+#: doc/classes/Environment.xml:376
msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
@@ -23415,20 +23483,27 @@ msgid "Clear currently selected items in the dialog."
msgstr ""
#: doc/classes/FileDialog.xml:34
-msgid "Returns the LineEdit for the selected file."
+msgid ""
+"Returns the LineEdit for the selected file.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:40
+#: doc/classes/FileDialog.xml:41
msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
-"added to it."
+"added to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/FileDialog.xml:46
+#: doc/classes/FileDialog.xml:48
msgid "Invalidate and update the current dialog content list."
msgstr ""
-#: doc/classes/FileDialog.xml:52
+#: doc/classes/FileDialog.xml:54
msgid ""
"The file system access scope. See enum [code]Access[/code] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as HTML5 builds or "
@@ -23437,125 +23512,125 @@ msgid ""
"proposals#1123[/url]."
msgstr ""
-#: doc/classes/FileDialog.xml:56
+#: doc/classes/FileDialog.xml:58
msgid "The current working directory of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:59
+#: doc/classes/FileDialog.xml:61
msgid "The currently selected file of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:62
+#: doc/classes/FileDialog.xml:64
msgid "The currently selected file path of the file dialog."
msgstr ""
-#: doc/classes/FileDialog.xml:66
+#: doc/classes/FileDialog.xml:68
msgid ""
"The available file type filters. For example, this shows only [code].png[/"
"code] and [code].gd[/code] files: [code]set_filters(PoolStringArray([\"*."
"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]."
msgstr ""
-#: doc/classes/FileDialog.xml:69
+#: doc/classes/FileDialog.xml:71
msgid ""
"The dialog's open or save mode, which affects the selection behavior. See "
"enum [code]Mode[/code] constants."
msgstr ""
-#: doc/classes/FileDialog.xml:72
+#: doc/classes/FileDialog.xml:74
msgid ""
"If [code]true[/code], changing the [code]Mode[/code] property will set the "
"window title accordingly (e.g. setting mode to [constant MODE_OPEN_FILE] "
"will change the window title to \"Open a File\")."
msgstr ""
-#: doc/classes/FileDialog.xml:75
+#: doc/classes/FileDialog.xml:77
msgid "If [code]true[/code], the dialog will show hidden files."
msgstr ""
-#: doc/classes/FileDialog.xml:83
+#: doc/classes/FileDialog.xml:85
msgid "Emitted when the user selects a directory."
msgstr ""
-#: doc/classes/FileDialog.xml:89
+#: doc/classes/FileDialog.xml:91
msgid ""
"Emitted when the user selects a file by double-clicking it or pressing the "
"[b]OK[/b] button."
msgstr ""
-#: doc/classes/FileDialog.xml:95
+#: doc/classes/FileDialog.xml:97
msgid "Emitted when the user selects multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:101
+#: doc/classes/FileDialog.xml:103
msgid "The dialog allows selecting one, and only one file."
msgstr ""
-#: doc/classes/FileDialog.xml:104
+#: doc/classes/FileDialog.xml:106
msgid "The dialog allows selecting multiple files."
msgstr ""
-#: doc/classes/FileDialog.xml:107
+#: doc/classes/FileDialog.xml:109
msgid ""
"The dialog only allows selecting a directory, disallowing the selection of "
"any file."
msgstr ""
-#: doc/classes/FileDialog.xml:110
+#: doc/classes/FileDialog.xml:112
msgid "The dialog allows selecting one file or directory."
msgstr ""
-#: doc/classes/FileDialog.xml:113
+#: doc/classes/FileDialog.xml:115
msgid "The dialog will warn when a file exists."
msgstr ""
-#: doc/classes/FileDialog.xml:116
+#: doc/classes/FileDialog.xml:118
msgid ""
"The dialog only allows accessing files under the [Resource] path "
"([code]res://[/code])."
msgstr ""
-#: doc/classes/FileDialog.xml:119
+#: doc/classes/FileDialog.xml:121
msgid ""
"The dialog only allows accessing files under user data path ([code]user://[/"
"code])."
msgstr ""
-#: doc/classes/FileDialog.xml:122
+#: doc/classes/FileDialog.xml:124
msgid "The dialog allows accessing files on the whole file system."
msgstr ""
-#: doc/classes/FileDialog.xml:127
+#: doc/classes/FileDialog.xml:129
msgid "Custom icon for files."
msgstr ""
-#: doc/classes/FileDialog.xml:130
+#: doc/classes/FileDialog.xml:132
msgid "The color modulation applied to the file icon."
msgstr ""
-#: doc/classes/FileDialog.xml:133
+#: doc/classes/FileDialog.xml:135
msgid ""
"The color tint for disabled files (when the [FileDialog] is used in open "
"folder mode)."
msgstr ""
-#: doc/classes/FileDialog.xml:136
+#: doc/classes/FileDialog.xml:138
msgid "Custom icon for folders."
msgstr ""
-#: doc/classes/FileDialog.xml:139
+#: doc/classes/FileDialog.xml:141
msgid "The color modulation applied to the folder icon."
msgstr ""
-#: doc/classes/FileDialog.xml:142
+#: doc/classes/FileDialog.xml:144
msgid "Custom icon for the parent folder arrow."
msgstr ""
-#: doc/classes/FileDialog.xml:145
+#: doc/classes/FileDialog.xml:147
msgid "Custom icon for the reload button."
msgstr ""
-#: doc/classes/FileDialog.xml:148
+#: doc/classes/FileDialog.xml:150
msgid "Custom icon for the toggle hidden button."
msgstr ""
@@ -25232,11 +25307,11 @@ msgstr ""
#: doc/classes/GraphEdit.xml:70
msgid ""
"Gets the [HBoxContainer] that contains the zooming and grid snap controls in "
-"the top left of the graph.\n"
-"Warning: The intended usage of this function is to allow you to reposition "
-"or add your own custom controls to the container. This is an internal "
-"control and as such should not be freed. If you wish to hide this or any of "
-"its children, use their [member CanvasItem.visible] property instead."
+"the top left of the graph. You can use this method to reposition the toolbar "
+"or to add your own custom controls to it.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
#: doc/classes/GraphEdit.xml:81
@@ -25699,7 +25774,7 @@ msgstr ""
msgid "The color modulation applied to the close button icon."
msgstr ""
-#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:40
+#: doc/classes/GraphNode.xml:277 doc/classes/WindowDialog.xml:41
msgid "The vertical offset of the close button."
msgstr ""
@@ -26425,7 +26500,7 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_client_class.html"
-#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:75
+#: doc/classes/HTTPClient.xml:17 doc/classes/HTTPRequest.xml:71
#: doc/classes/StreamPeerSSL.xml:10
#, fuzzy
msgid ""
@@ -27208,16 +27283,10 @@ msgid ""
" var texture_rect = TextureRect.new()\n"
" add_child(texture_rect)\n"
" texture_rect.texture = texture\n"
-"[/codeblock]\n"
-"[b]Gzipped response bodies[/b]\n"
-"HttpRequest will automatically handle decompression of response bodies.\n"
-"A \"Accept-Encoding\" header will be automatically added to each of your "
-"requests, unless one is already specified.\n"
-"Any response with a \"Content-Encoding: gzip\" header will automatically be "
-"decompressed and delivered to you as a uncompressed bytes."
+"[/codeblock]"
msgstr ""
-#: doc/classes/HTTPRequest.xml:74
+#: doc/classes/HTTPRequest.xml:70
#, fuzzy
msgid ""
"https://docs.godotengine.org/en/3.4/tutorials/networking/http_request_class."
@@ -27226,11 +27295,11 @@ msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/networking/"
"http_request_class.html"
-#: doc/classes/HTTPRequest.xml:81
+#: doc/classes/HTTPRequest.xml:77
msgid "Cancels the current request."
msgstr ""
-#: doc/classes/HTTPRequest.xml:87
+#: doc/classes/HTTPRequest.xml:83
msgid ""
"Returns the response body length.\n"
"[b]Note:[/b] Some Web servers may not send a body length. In this case, the "
@@ -27238,17 +27307,17 @@ msgid ""
"the body length will also be [code]-1[/code]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:94
+#: doc/classes/HTTPRequest.xml:90
msgid "Returns the amount of bytes this HTTPRequest downloaded."
msgstr ""
-#: doc/classes/HTTPRequest.xml:100
+#: doc/classes/HTTPRequest.xml:96
msgid ""
"Returns the current status of the underlying [HTTPClient]. See [enum "
"HTTPClient.Status]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:111
+#: doc/classes/HTTPRequest.xml:107
msgid ""
"Creates request on the underlying [HTTPClient]. If there is no configuration "
"errors, it tries to connect using [method HTTPClient.connect_to_host] and "
@@ -27267,7 +27336,7 @@ msgid ""
"in the URL. See [method String.http_escape] for an example."
msgstr ""
-#: doc/classes/HTTPRequest.xml:124
+#: doc/classes/HTTPRequest.xml:120
msgid ""
"Creates request on the underlying [HTTPClient] using a raw array of bytes "
"for the request body. If there is no configuration errors, it tries to "
@@ -27281,30 +27350,11 @@ msgid ""
"connect to host."
msgstr ""
-#: doc/classes/HTTPRequest.xml:131
-msgid ""
-"If [code]true[/code], this header will be added to each request: "
-"[code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay "
-"to compress response bodies.\n"
-"Any Reponse body declaring a [code]Content-Encoding[/code] of either "
-"[code]gzip[/code] or [code]deflate[/code] will then be automatically "
-"decompressed, and the uncompressed bytes will be delivered via "
-"[code]request_completed[/code].\n"
-"If the user has specified their own [code]Accept-Encoding[/code] header, "
-"then no header will be added regaurdless of [code]accept_gzip[/code].\n"
-"If [code]false[/code] no header will be added, and no decompression will be "
-"performed on response bodies. The raw bytes of the response body will be "
-"returned via [code]request_completed[/code]."
-msgstr ""
-
-#: doc/classes/HTTPRequest.xml:137
-msgid ""
-"Maximum allowed size for response bodies. If the response body is "
-"compressed, this will be used as the maximum allowed size for the "
-"decompressed body."
+#: doc/classes/HTTPRequest.xml:127
+msgid "Maximum allowed size for response bodies."
msgstr ""
-#: doc/classes/HTTPRequest.xml:140
+#: doc/classes/HTTPRequest.xml:130
msgid ""
"The size of the buffer used and maximum bytes to read per iteration. See "
"[member HTTPClient.read_chunk_size].\n"
@@ -27312,63 +27362,63 @@ msgid ""
"to decrease memory usage at the cost of download speeds."
msgstr ""
-#: doc/classes/HTTPRequest.xml:144
+#: doc/classes/HTTPRequest.xml:134
msgid "The file to download into. Will output any received file into it."
msgstr ""
-#: doc/classes/HTTPRequest.xml:147
+#: doc/classes/HTTPRequest.xml:137
msgid "Maximum number of allowed redirects."
msgstr ""
-#: doc/classes/HTTPRequest.xml:152
+#: doc/classes/HTTPRequest.xml:142
msgid "If [code]true[/code], multithreading is used to improve performance."
msgstr ""
-#: doc/classes/HTTPRequest.xml:162
+#: doc/classes/HTTPRequest.xml:152
msgid "Emitted when a request is completed."
msgstr ""
-#: doc/classes/HTTPRequest.xml:168
+#: doc/classes/HTTPRequest.xml:158
msgid "Request successful."
msgstr ""
-#: doc/classes/HTTPRequest.xml:173
+#: doc/classes/HTTPRequest.xml:163
msgid "Request failed while connecting."
msgstr ""
-#: doc/classes/HTTPRequest.xml:176
+#: doc/classes/HTTPRequest.xml:166
msgid "Request failed while resolving."
msgstr ""
-#: doc/classes/HTTPRequest.xml:179
+#: doc/classes/HTTPRequest.xml:169
msgid "Request failed due to connection (read/write) error."
msgstr ""
-#: doc/classes/HTTPRequest.xml:182
+#: doc/classes/HTTPRequest.xml:172
msgid "Request failed on SSL handshake."
msgstr ""
-#: doc/classes/HTTPRequest.xml:185
+#: doc/classes/HTTPRequest.xml:175
msgid "Request does not have a response (yet)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:190
+#: doc/classes/HTTPRequest.xml:178
msgid "Request exceeded its maximum size limit, see [member body_size_limit]."
msgstr ""
-#: doc/classes/HTTPRequest.xml:193
+#: doc/classes/HTTPRequest.xml:181
msgid "Request failed (currently unused)."
msgstr ""
-#: doc/classes/HTTPRequest.xml:196
+#: doc/classes/HTTPRequest.xml:184
msgid "HTTPRequest couldn't open the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:199
+#: doc/classes/HTTPRequest.xml:187
msgid "HTTPRequest couldn't write to the download file."
msgstr ""
-#: doc/classes/HTTPRequest.xml:202
+#: doc/classes/HTTPRequest.xml:190
msgid "Request reached its maximum redirect limit, see [member max_redirects]."
msgstr ""
@@ -28195,7 +28245,7 @@ msgid ""
"new texture each time."
msgstr ""
-#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2836
+#: doc/classes/ImageTexture.xml:80 doc/classes/VisualServer.xml:2837
msgid "Resizes the texture to the specified dimensions."
msgstr ""
@@ -29678,171 +29728,175 @@ msgid "Returns an array with the indexes of the selected items."
msgstr ""
#: doc/classes/ItemList.xml:124
-msgid "Returns the [Object] ID associated with the list."
+msgid ""
+"Returns the [Object] ID associated with the list.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ItemList.xml:130
+#: doc/classes/ItemList.xml:131
msgid "Returns [code]true[/code] if one or more items are selected."
msgstr ""
-#: doc/classes/ItemList.xml:137
+#: doc/classes/ItemList.xml:138
msgid ""
"Returns [code]true[/code] if the item at the specified index is disabled."
msgstr ""
-#: doc/classes/ItemList.xml:144
+#: doc/classes/ItemList.xml:145
msgid ""
"Returns [code]true[/code] if the item icon will be drawn transposed, i.e. "
"the X and Y axes are swapped."
msgstr ""
-#: doc/classes/ItemList.xml:151
+#: doc/classes/ItemList.xml:152
msgid ""
"Returns [code]true[/code] if the item at the specified index is selectable."
msgstr ""
-#: doc/classes/ItemList.xml:158
+#: doc/classes/ItemList.xml:159
msgid ""
"Returns [code]true[/code] if the tooltip is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:165
+#: doc/classes/ItemList.xml:166
msgid ""
"Returns [code]true[/code] if the item at the specified index is currently "
"selected."
msgstr ""
-#: doc/classes/ItemList.xml:173
+#: doc/classes/ItemList.xml:174
msgid "Moves item from index [code]from_idx[/code] to [code]to_idx[/code]."
msgstr ""
-#: doc/classes/ItemList.xml:180
+#: doc/classes/ItemList.xml:181
msgid "Removes the item specified by [code]idx[/code] index from the list."
msgstr ""
-#: doc/classes/ItemList.xml:188
+#: doc/classes/ItemList.xml:189
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
msgstr ""
-#: doc/classes/ItemList.xml:197
+#: doc/classes/ItemList.xml:198
msgid ""
"Sets the background color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:205
+#: doc/classes/ItemList.xml:206
msgid ""
"Sets the foreground color of the item specified by [code]idx[/code] index to "
"the specified [Color]."
msgstr ""
-#: doc/classes/ItemList.xml:213
+#: doc/classes/ItemList.xml:214
msgid ""
"Disables (or enables) the item at the specified index.\n"
"Disabled items cannot be selected and do not trigger activation signals "
"(when double-clicking or pressing Enter)."
msgstr ""
-#: doc/classes/ItemList.xml:222
+#: doc/classes/ItemList.xml:223
msgid ""
"Sets (or replaces) the icon's [Texture] associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:230
+#: doc/classes/ItemList.xml:231
msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:238
+#: doc/classes/ItemList.xml:239
msgid ""
"Sets the region of item's icon used. The whole icon will be used if the "
"region has no area."
msgstr ""
-#: doc/classes/ItemList.xml:246
+#: doc/classes/ItemList.xml:247
msgid "Sets whether the item icon will be drawn transposed."
msgstr ""
-#: doc/classes/ItemList.xml:254
+#: doc/classes/ItemList.xml:255
msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr ""
-#: doc/classes/ItemList.xml:262
+#: doc/classes/ItemList.xml:263
msgid ""
"Allows or disallows selection of the item associated with the specified "
"index."
msgstr ""
-#: doc/classes/ItemList.xml:270
+#: doc/classes/ItemList.xml:271
msgid "Sets text of the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:278
+#: doc/classes/ItemList.xml:279
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr ""
-#: doc/classes/ItemList.xml:286
+#: doc/classes/ItemList.xml:287
msgid "Sets whether the tooltip hint is enabled for specified item index."
msgstr ""
-#: doc/classes/ItemList.xml:292
+#: doc/classes/ItemList.xml:293
msgid "Sorts items in the list by their text."
msgstr ""
-#: doc/classes/ItemList.xml:299
+#: doc/classes/ItemList.xml:300
msgid "Ensures the item associated with the specified index is not selected."
msgstr ""
-#: doc/classes/ItemList.xml:305
+#: doc/classes/ItemList.xml:306
msgid "Ensures there are no items selected."
msgstr ""
-#: doc/classes/ItemList.xml:311
+#: doc/classes/ItemList.xml:312
msgid ""
"If [code]true[/code], the currently selected item can be selected again."
msgstr ""
-#: doc/classes/ItemList.xml:314
+#: doc/classes/ItemList.xml:315
msgid "If [code]true[/code], right mouse button click can select items."
msgstr ""
-#: doc/classes/ItemList.xml:317
+#: doc/classes/ItemList.xml:318
msgid ""
"If [code]true[/code], the control will automatically resize the height to "
"fit its content."
msgstr ""
-#: doc/classes/ItemList.xml:320
+#: doc/classes/ItemList.xml:321
msgid ""
"The width all columns will be adjusted to.\n"
"A value of zero disables the adjustment, each item will have a width equal "
"to the width of its content and the columns will have an uneven width."
msgstr ""
-#: doc/classes/ItemList.xml:324
+#: doc/classes/ItemList.xml:325
msgid ""
"The size all icons will be adjusted to.\n"
"If either X or Y component is not greater than zero, icon size won't be "
"affected."
msgstr ""
-#: doc/classes/ItemList.xml:329
+#: doc/classes/ItemList.xml:330
msgid ""
"The icon position, whether above or to the left of the text. See the [enum "
"IconMode] constants."
msgstr ""
-#: doc/classes/ItemList.xml:332
+#: doc/classes/ItemList.xml:333
msgid ""
"The scale of icon applied after [member fixed_icon_size] and transposing "
"takes effect."
msgstr ""
-#: doc/classes/ItemList.xml:335
+#: doc/classes/ItemList.xml:336
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -29851,7 +29905,7 @@ msgid ""
"same row."
msgstr ""
-#: doc/classes/ItemList.xml:340
+#: doc/classes/ItemList.xml:341
msgid ""
"Maximum lines of text allowed in each item. Space will be reserved even when "
"there is not enough lines of text to display.\n"
@@ -29860,26 +29914,26 @@ msgid ""
"should be greater than zero."
msgstr ""
-#: doc/classes/ItemList.xml:345
+#: doc/classes/ItemList.xml:346
msgid ""
"Whether all columns will have the same width.\n"
"If [code]true[/code], the width is equal to the largest column width of all "
"columns."
msgstr ""
-#: doc/classes/ItemList.xml:349
+#: doc/classes/ItemList.xml:350
msgid ""
"Allows single or multiple item selection. See the [enum SelectMode] "
"constants."
msgstr ""
-#: doc/classes/ItemList.xml:356
+#: doc/classes/ItemList.xml:357
msgid ""
"Triggered when specified list item is activated via double-clicking or by "
"pressing Enter."
msgstr ""
-#: doc/classes/ItemList.xml:363
+#: doc/classes/ItemList.xml:364
msgid ""
"Triggered when specified list item has been selected via right mouse "
"clicking.\n"
@@ -29888,108 +29942,108 @@ msgid ""
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:371
+#: doc/classes/ItemList.xml:372
msgid ""
"Triggered when specified item has been selected.\n"
"[member allow_reselect] must be enabled to reselect an item."
msgstr ""
-#: doc/classes/ItemList.xml:379
+#: doc/classes/ItemList.xml:380
msgid ""
"Triggered when a multiple selection is altered on a list allowing multiple "
"selection."
msgstr ""
-#: doc/classes/ItemList.xml:384
+#: doc/classes/ItemList.xml:385
msgid ""
"Triggered when a left mouse click is issued within the rect of the list but "
"on empty space."
msgstr ""
-#: doc/classes/ItemList.xml:390
+#: doc/classes/ItemList.xml:391
msgid ""
"Triggered when a right mouse click is issued within the rect of the list but "
"on empty space.\n"
"[member allow_rmb_select] must be enabled."
msgstr ""
-#: doc/classes/ItemList.xml:397
+#: doc/classes/ItemList.xml:398
msgid "Icon is drawn above the text."
msgstr ""
-#: doc/classes/ItemList.xml:400
+#: doc/classes/ItemList.xml:401
msgid "Icon is drawn to the left of the text."
msgstr ""
-#: doc/classes/ItemList.xml:403
+#: doc/classes/ItemList.xml:404
msgid "Only allow selecting a single item."
msgstr ""
-#: doc/classes/ItemList.xml:406
+#: doc/classes/ItemList.xml:407
msgid "Allows selecting multiple items by holding Ctrl or Shift."
msgstr ""
-#: doc/classes/ItemList.xml:411
+#: doc/classes/ItemList.xml:412
msgid ""
"Default [StyleBox] for the [ItemList], i.e. used when the control is not "
"being focused."
msgstr ""
-#: doc/classes/ItemList.xml:414
+#: doc/classes/ItemList.xml:415
msgid "[StyleBox] used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:417
+#: doc/classes/ItemList.xml:418
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:420
+#: doc/classes/ItemList.xml:421
msgid ""
"[StyleBox] used for the cursor, when the [ItemList] is not being focused."
msgstr ""
-#: doc/classes/ItemList.xml:423 doc/classes/Tree.xml:407
+#: doc/classes/ItemList.xml:424 doc/classes/Tree.xml:407
msgid "[Font] of the item's text."
msgstr ""
-#: doc/classes/ItemList.xml:426 doc/classes/Tree.xml:410
+#: doc/classes/ItemList.xml:427 doc/classes/Tree.xml:410
msgid "Default text [Color] of the item."
msgstr ""
-#: doc/classes/ItemList.xml:429 doc/classes/Tree.xml:413
+#: doc/classes/ItemList.xml:430 doc/classes/Tree.xml:413
msgid "Text [Color] used when the item is selected."
msgstr ""
-#: doc/classes/ItemList.xml:432
+#: doc/classes/ItemList.xml:433
msgid ""
"[Color] of the guideline. The guideline is a line drawn between each row of "
"items."
msgstr ""
-#: doc/classes/ItemList.xml:435
+#: doc/classes/ItemList.xml:436
msgid "The horizontal spacing between items."
msgstr ""
-#: doc/classes/ItemList.xml:438
+#: doc/classes/ItemList.xml:439
msgid "The spacing between item's icon and text."
msgstr ""
-#: doc/classes/ItemList.xml:441
+#: doc/classes/ItemList.xml:442
msgid "The vertical spacing between each line of text."
msgstr ""
-#: doc/classes/ItemList.xml:444
+#: doc/classes/ItemList.xml:445
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr ""
-#: doc/classes/ItemList.xml:447
+#: doc/classes/ItemList.xml:448
msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr ""
-#: doc/classes/ItemList.xml:450
+#: doc/classes/ItemList.xml:451
msgid "The vertical spacing between items."
msgstr ""
@@ -31676,20 +31730,23 @@ msgstr ""
#: doc/classes/LineEdit.xml:67
msgid ""
"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is "
-"displayed when right-clicking on the [LineEdit]."
+"displayed when right-clicking on the [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/LineEdit.xml:73
+#: doc/classes/LineEdit.xml:74
msgid ""
"Returns the scroll offset due to [member caret_position], as a number of "
"characters."
msgstr ""
-#: doc/classes/LineEdit.xml:80
+#: doc/classes/LineEdit.xml:81
msgid "Executes a given action as defined in the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:88
+#: doc/classes/LineEdit.xml:89
msgid ""
"Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/"
"code]. By default, [code]from[/code] is at the beginning and [code]to[/code] "
@@ -31702,52 +31759,52 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:100
+#: doc/classes/LineEdit.xml:101
msgid "Selects the whole [String]."
msgstr ""
-#: doc/classes/LineEdit.xml:106
+#: doc/classes/LineEdit.xml:107
msgid "Text alignment as defined in the [enum Align] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:109 doc/classes/TextEdit.xml:390
+#: doc/classes/LineEdit.xml:110 doc/classes/TextEdit.xml:391
msgid "If [code]true[/code], the caret (visual cursor) blinks."
msgstr ""
-#: doc/classes/LineEdit.xml:112 doc/classes/TextEdit.xml:393
+#: doc/classes/LineEdit.xml:113 doc/classes/TextEdit.xml:394
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr ""
-#: doc/classes/LineEdit.xml:115
+#: doc/classes/LineEdit.xml:116
msgid ""
"The cursor's position inside the [LineEdit]. When set, the text may scroll "
"to accommodate it."
msgstr ""
-#: doc/classes/LineEdit.xml:118
+#: doc/classes/LineEdit.xml:119
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 ""
-#: doc/classes/LineEdit.xml:121
+#: doc/classes/LineEdit.xml:122
msgid "If [code]true[/code], the context menu will appear when right-clicked."
msgstr ""
-#: doc/classes/LineEdit.xml:124
+#: doc/classes/LineEdit.xml:125
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
msgstr ""
-#: doc/classes/LineEdit.xml:127
+#: doc/classes/LineEdit.xml:128
msgid ""
"If [code]true[/code], the [LineEdit] width will increase to stay longer than "
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-#: doc/classes/LineEdit.xml:131
+#: doc/classes/LineEdit.xml:132
msgid ""
"Maximum amount of characters that can be entered inside the [LineEdit]. If "
"[code]0[/code], there is no limit.\n"
@@ -31769,100 +31826,100 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/LineEdit.xml:146
+#: doc/classes/LineEdit.xml:147
msgid ""
"Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/"
"code]."
msgstr ""
-#: doc/classes/LineEdit.xml:149
+#: doc/classes/LineEdit.xml:150
msgid ""
"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s "
"default value (see [member text])."
msgstr ""
-#: doc/classes/LineEdit.xml:152
+#: doc/classes/LineEdit.xml:153
msgid ""
"Sets the icon that will appear in the right end of the [LineEdit] if there's "
"no [member text], or always, if [member clear_button_enabled] is set to "
"[code]false[/code]."
msgstr ""
-#: doc/classes/LineEdit.xml:155
+#: doc/classes/LineEdit.xml:156
msgid ""
"If [code]true[/code], every character is replaced with the secret character "
"(see [member secret_character])."
msgstr ""
-#: doc/classes/LineEdit.xml:158
+#: doc/classes/LineEdit.xml:159
msgid ""
"The character to use to mask secret input (defaults to \"*\"). Only a single "
"character can be used as the secret character."
msgstr ""
-#: doc/classes/LineEdit.xml:161
+#: doc/classes/LineEdit.xml:162
msgid ""
"If [code]false[/code], it's impossible to select the text using mouse nor "
"keyboard."
msgstr ""
-#: doc/classes/LineEdit.xml:164
+#: doc/classes/LineEdit.xml:165
msgid "If [code]false[/code], using shortcuts will be disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:167
+#: doc/classes/LineEdit.xml:168
msgid ""
"String value of the [LineEdit].\n"
"[b]Note:[/b] Changing text using this property won't emit the [signal "
"text_changed] signal."
msgstr ""
-#: doc/classes/LineEdit.xml:171 doc/classes/TextEdit.xml:467
+#: doc/classes/LineEdit.xml:172 doc/classes/TextEdit.xml:468
msgid ""
"If [code]true[/code], the native virtual keyboard is shown when focused on "
"platforms that support it."
msgstr ""
-#: doc/classes/LineEdit.xml:178
+#: doc/classes/LineEdit.xml:179
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
"couldn't fit is passed as the [code]rejected_substring[/code] argument."
msgstr ""
-#: doc/classes/LineEdit.xml:184 doc/classes/TextEdit.xml:505
+#: doc/classes/LineEdit.xml:185 doc/classes/TextEdit.xml:506
msgid "Emitted when the text changes."
msgstr ""
-#: doc/classes/LineEdit.xml:190
+#: doc/classes/LineEdit.xml:191
msgid "Emitted when the user presses [constant KEY_ENTER] on the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:196
+#: doc/classes/LineEdit.xml:197
msgid "Aligns the text on the left-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:199
+#: doc/classes/LineEdit.xml:200
msgid "Centers the text in the middle of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:202
+#: doc/classes/LineEdit.xml:203
msgid "Aligns the text on the right-hand side of the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:205
+#: doc/classes/LineEdit.xml:206
msgid "Stretches whitespaces to fit the [LineEdit]'s width."
msgstr ""
-#: doc/classes/LineEdit.xml:208 doc/classes/TextEdit.xml:526
+#: doc/classes/LineEdit.xml:209 doc/classes/TextEdit.xml:527
msgid "Cuts (copies and clears) the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:211 doc/classes/TextEdit.xml:529
+#: doc/classes/LineEdit.xml:212 doc/classes/TextEdit.xml:530
msgid "Copies the selected text."
msgstr ""
-#: doc/classes/LineEdit.xml:214
+#: doc/classes/LineEdit.xml:215
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position).\n"
@@ -31870,80 +31927,80 @@ msgid ""
"clipboard via [method String.strip_escapes]."
msgstr ""
-#: doc/classes/LineEdit.xml:218
+#: doc/classes/LineEdit.xml:219
msgid "Erases the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:221
+#: doc/classes/LineEdit.xml:222
msgid "Selects the whole [LineEdit] text."
msgstr ""
-#: doc/classes/LineEdit.xml:224 doc/classes/TextEdit.xml:541
+#: doc/classes/LineEdit.xml:225 doc/classes/TextEdit.xml:542
msgid "Undoes the previous action."
msgstr ""
-#: doc/classes/LineEdit.xml:227
+#: doc/classes/LineEdit.xml:228
msgid "Reverse the last undo action."
msgstr ""
-#: doc/classes/LineEdit.xml:230 doc/classes/TextEdit.xml:547
+#: doc/classes/LineEdit.xml:231 doc/classes/TextEdit.xml:548
msgid "Represents the size of the [enum MenuItems] enum."
msgstr ""
-#: doc/classes/LineEdit.xml:235
+#: doc/classes/LineEdit.xml:236
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr ""
-#: doc/classes/LineEdit.xml:238
+#: doc/classes/LineEdit.xml:239
msgid "Color used as default tint for the clear button."
msgstr ""
-#: doc/classes/LineEdit.xml:241
+#: doc/classes/LineEdit.xml:242
msgid "Color used for the clear button when it's pressed."
msgstr ""
-#: doc/classes/LineEdit.xml:244
+#: doc/classes/LineEdit.xml:245
msgid "Color of the [LineEdit]'s visual cursor (caret)."
msgstr ""
-#: doc/classes/LineEdit.xml:247
+#: doc/classes/LineEdit.xml:248
msgid "Background used when [LineEdit] has GUI focus."
msgstr ""
-#: doc/classes/LineEdit.xml:250
+#: doc/classes/LineEdit.xml:251
msgid "Font used for the text."
msgstr ""
-#: doc/classes/LineEdit.xml:253
+#: doc/classes/LineEdit.xml:254
msgid "Default font color."
msgstr ""
-#: doc/classes/LineEdit.xml:256
+#: doc/classes/LineEdit.xml:257
msgid "Font color for selected text (inside the selection rectangle)."
msgstr ""
-#: doc/classes/LineEdit.xml:259
+#: doc/classes/LineEdit.xml:260
msgid "Font color when editing is disabled."
msgstr ""
-#: doc/classes/LineEdit.xml:262
+#: doc/classes/LineEdit.xml:263
msgid ""
"Minimum horizontal space for the text (not counting the clear button and "
"content margins). This value is measured in count of space characters (i.e. "
"this amount of space characters can be displayed without scrolling)."
msgstr ""
-#: doc/classes/LineEdit.xml:265
+#: doc/classes/LineEdit.xml:266
msgid "Default background for the [LineEdit]."
msgstr ""
-#: doc/classes/LineEdit.xml:268
+#: doc/classes/LineEdit.xml:269
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-#: doc/classes/LineEdit.xml:271
+#: doc/classes/LineEdit.xml:272
msgid "Color of the selection rectangle."
msgstr ""
@@ -32226,59 +32283,59 @@ msgstr ""
msgid "Emitted when a user responds to a permission request."
msgstr ""
-#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:790
+#: doc/classes/MainLoop.xml:156 doc/classes/Node.xml:791
msgid ""
"Notification received from the OS when the mouse enters the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:794
+#: doc/classes/MainLoop.xml:160 doc/classes/Node.xml:795
msgid ""
"Notification received from the OS when the mouse leaves the game window.\n"
"Implemented on desktop and web platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:798
+#: doc/classes/MainLoop.xml:164 doc/classes/Node.xml:799
msgid ""
"Notification received from the OS when the game window is focused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:802
+#: doc/classes/MainLoop.xml:168 doc/classes/Node.xml:803
msgid ""
"Notification received from the OS when the game window is unfocused.\n"
"Implemented on all platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:806
+#: doc/classes/MainLoop.xml:172 doc/classes/Node.xml:807
msgid ""
"Notification received from the OS when a quit request is sent (e.g. closing "
"the window with a \"Close\" button or Alt+F4).\n"
"Implemented on desktop platforms."
msgstr ""
-#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:810
+#: doc/classes/MainLoop.xml:176 doc/classes/Node.xml:811
msgid ""
"Notification received from the OS when a go back request is sent (e.g. "
"pressing the \"Back\" button on Android).\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:814
+#: doc/classes/MainLoop.xml:180 doc/classes/Node.xml:815
msgid ""
"Notification received from the OS when an unfocus request is sent (e.g. "
"another OS window wants to take the focus).\n"
"No supported platforms currently send this notification."
msgstr ""
-#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:818
+#: doc/classes/MainLoop.xml:184 doc/classes/Node.xml:819
msgid ""
"Notification received from the OS when the application is exceeding its "
"allocated memory.\n"
"Specific to the iOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:822
+#: doc/classes/MainLoop.xml:188 doc/classes/Node.xml:823
msgid ""
"Notification received when translations may have changed. Can be triggered "
"by the user changing the locale. Can be used to respond to language changes, "
@@ -32286,34 +32343,34 @@ msgid ""
"the built-in translation support, like [method Object.tr]."
msgstr ""
-#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:825
+#: doc/classes/MainLoop.xml:191 doc/classes/Node.xml:826
msgid ""
"Notification received from the OS when a request for \"About\" information "
"is sent.\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:829
+#: doc/classes/MainLoop.xml:195 doc/classes/Node.xml:830
msgid ""
"Notification received from Godot's crash handler when the engine is about to "
"crash.\n"
"Implemented on desktop platforms if the crash handler is enabled."
msgstr ""
-#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:833
+#: doc/classes/MainLoop.xml:199 doc/classes/Node.xml:834
msgid ""
"Notification received from the OS when an update of the Input Method Engine "
"occurs (e.g. change of IME cursor position or composition string).\n"
"Specific to the macOS platform."
msgstr ""
-#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:837
+#: doc/classes/MainLoop.xml:203 doc/classes/Node.xml:838
msgid ""
"Notification received from the OS when the app is resumed.\n"
"Specific to the Android platform."
msgstr ""
-#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:841
+#: doc/classes/MainLoop.xml:207 doc/classes/Node.xml:842
msgid ""
"Notification received from the OS when the app is paused.\n"
"Specific to the Android platform."
@@ -32466,70 +32523,74 @@ msgid ""
msgstr ""
#: doc/classes/MenuButton.xml:17 doc/classes/OptionButton.xml:86
-msgid "Returns the [PopupMenu] contained in this button."
+msgid ""
+"Returns the [PopupMenu] contained in this button.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/MenuButton.xml:24
+#: doc/classes/MenuButton.xml:25
msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr ""
-#: doc/classes/MenuButton.xml:33
+#: doc/classes/MenuButton.xml:34
msgid ""
"If [code]true[/code], when the cursor hovers above another [MenuButton] "
"within the same parent which also has [code]switch_on_hover[/code] enabled, "
"it will close the current [MenuButton] and open the other one."
msgstr ""
-#: doc/classes/MenuButton.xml:40
+#: doc/classes/MenuButton.xml:41
msgid "Emitted when [PopupMenu] of this MenuButton is about to show."
msgstr ""
-#: doc/classes/MenuButton.xml:48
+#: doc/classes/MenuButton.xml:49
msgid "[StyleBox] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:51
+#: doc/classes/MenuButton.xml:52
msgid ""
"[StyleBox] used when the [MenuButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/MenuButton.xml:54
+#: doc/classes/MenuButton.xml:55
msgid "[Font] of the [MenuButton]'s text."
msgstr ""
-#: doc/classes/MenuButton.xml:57
+#: doc/classes/MenuButton.xml:58
msgid "Default text [Color] of the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:60
+#: doc/classes/MenuButton.xml:61
msgid "Text [Color] used when the [MenuButton] is disabled."
msgstr ""
-#: doc/classes/MenuButton.xml:63
+#: doc/classes/MenuButton.xml:64
msgid "Text [Color] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:66
+#: doc/classes/MenuButton.xml:67
msgid "Text [Color] used when the [MenuButton] is being pressed."
msgstr ""
-#: doc/classes/MenuButton.xml:69
+#: doc/classes/MenuButton.xml:70
msgid "[StyleBox] used when the [MenuButton] is being hovered."
msgstr ""
-#: doc/classes/MenuButton.xml:72
+#: doc/classes/MenuButton.xml:73
msgid "The horizontal space between [MenuButton]'s icon and text."
msgstr ""
-#: doc/classes/MenuButton.xml:75
+#: doc/classes/MenuButton.xml:76
msgid "Default [StyleBox] for the [MenuButton]."
msgstr ""
-#: doc/classes/MenuButton.xml:78
+#: doc/classes/MenuButton.xml:79
msgid "[StyleBox] used when the [MenuButton] is being pressed."
msgstr ""
@@ -32646,11 +32707,11 @@ msgstr ""
msgid "Render array as triangle fans."
msgstr ""
-#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3362
+#: doc/classes/Mesh.xml:123 doc/classes/VisualServer.xml:3363
msgid "Blend shapes are normalized."
msgstr ""
-#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3365
+#: doc/classes/Mesh.xml:126 doc/classes/VisualServer.xml:3366
msgid "Blend shapes are relative to base weight."
msgstr ""
@@ -32698,53 +32759,53 @@ msgid ""
"values. Do not use."
msgstr ""
-#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3299
+#: doc/classes/Mesh.xml:159 doc/classes/VisualServer.xml:3300
msgid "Flag used to mark a compressed (half float) vertex array."
msgstr ""
-#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3302
+#: doc/classes/Mesh.xml:162 doc/classes/VisualServer.xml:3303
msgid "Flag used to mark a compressed (half float) normal array."
msgstr ""
-#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3305
+#: doc/classes/Mesh.xml:165 doc/classes/VisualServer.xml:3306
msgid "Flag used to mark a compressed (half float) tangent array."
msgstr ""
-#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3308
+#: doc/classes/Mesh.xml:168 doc/classes/VisualServer.xml:3309
msgid "Flag used to mark a compressed (half float) color array."
msgstr ""
-#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3311
+#: doc/classes/Mesh.xml:171 doc/classes/VisualServer.xml:3312
msgid "Flag used to mark a compressed (half float) UV coordinates array."
msgstr ""
-#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3314
+#: doc/classes/Mesh.xml:174 doc/classes/VisualServer.xml:3315
msgid ""
"Flag used to mark a compressed (half float) UV coordinates array for the "
"second UV coordinates."
msgstr ""
-#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3317
+#: doc/classes/Mesh.xml:177 doc/classes/VisualServer.xml:3318
msgid "Flag used to mark a compressed bone array."
msgstr ""
-#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3320
+#: doc/classes/Mesh.xml:180 doc/classes/VisualServer.xml:3321
msgid "Flag used to mark a compressed (half float) weight array."
msgstr ""
-#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3323
+#: doc/classes/Mesh.xml:183 doc/classes/VisualServer.xml:3324
msgid "Flag used to mark a compressed index array."
msgstr ""
-#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3326
+#: doc/classes/Mesh.xml:186 doc/classes/VisualServer.xml:3327
msgid "Flag used to mark that the array contains 2D vertices."
msgstr ""
-#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3329
+#: doc/classes/Mesh.xml:189 doc/classes/VisualServer.xml:3330
msgid "Flag used to mark that the array uses 16-bit bones instead of 8-bit."
msgstr ""
-#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3332
+#: doc/classes/Mesh.xml:192 doc/classes/VisualServer.xml:3333
msgid ""
"Flag used to mark that the array uses an octahedral representation of normal "
"and tangent vectors rather than cartesian."
@@ -33569,7 +33630,7 @@ msgid ""
"[b]Note:[/b] If not inside an RPC this method will return 0."
msgstr ""
-#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:120
+#: doc/classes/MultiplayerAPI.xml:43 doc/classes/SceneTree.xml:123
msgid "Returns [code]true[/code] if there is a [member network_peer] set."
msgstr ""
@@ -35464,22 +35525,25 @@ msgstr ""
#: doc/classes/Node.xml:499
msgid ""
-"Removes a child node. The node is NOT deleted and must be deleted manually."
+"Removes a child node. The node is NOT deleted and must be deleted manually.\n"
+"[b]Note:[/b] This function may set the [member owner] of the removed Node "
+"(or its descendants) to be [code]null[/code], if that [member owner] is no "
+"longer a parent or ancestor."
msgstr ""
-#: doc/classes/Node.xml:506
+#: doc/classes/Node.xml:507
msgid ""
"Removes a node from a group. See notes in the description, and the group "
"methods in [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:514
+#: doc/classes/Node.xml:515
msgid ""
"Replaces a node in a scene by the given one. Subscriptions that pass through "
"this node will be lost."
msgstr ""
-#: doc/classes/Node.xml:520
+#: doc/classes/Node.xml:521
msgid ""
"Requests that [code]_ready[/code] be called again. Note that the method "
"won't be called immediately, but is scheduled for when the node is added to "
@@ -35490,7 +35554,7 @@ msgid ""
"normally)."
msgstr ""
-#: doc/classes/Node.xml:527
+#: doc/classes/Node.xml:528
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -35507,7 +35571,7 @@ msgid ""
"network_peer.get_connection_status() == CONNECTION_CONNECTED[/code]."
msgstr ""
-#: doc/classes/Node.xml:536
+#: doc/classes/Node.xml:537
msgid ""
"Changes the RPC mode for the given [code]method[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35518,27 +35582,27 @@ msgid ""
"[method rset] and [method rset_config] for properties."
msgstr ""
-#: doc/classes/Node.xml:544
+#: doc/classes/Node.xml:545
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:551
+#: doc/classes/Node.xml:552
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns an empty "
"[Variant]."
msgstr ""
-#: doc/classes/Node.xml:559
+#: doc/classes/Node.xml:560
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 an empty [Variant]."
msgstr ""
-#: doc/classes/Node.xml:567
+#: doc/classes/Node.xml:568
msgid ""
"Remotely changes a property's value on other peers (and locally). Behaviour "
"depends on the RPC configuration for the given property, see [method "
@@ -35546,7 +35610,7 @@ msgid ""
"applies to this method as well."
msgstr ""
-#: doc/classes/Node.xml:575
+#: doc/classes/Node.xml:576
msgid ""
"Changes the RPC mode for the given [code]property[/code] to the given "
"[code]mode[/code]. See [enum MultiplayerAPI.RPCMode]. An alternative is "
@@ -35557,30 +35621,30 @@ msgid ""
"[method rpc] and [method rpc_config] for methods."
msgstr ""
-#: doc/classes/Node.xml:584
+#: doc/classes/Node.xml:585
msgid ""
"Remotely changes the property's value on a specific peer identified by "
"[code]peer_id[/code] (see [method NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:592
+#: doc/classes/Node.xml:593
msgid ""
"Remotely changes the property's value on other peers (and locally) using an "
"unreliable protocol."
msgstr ""
-#: doc/classes/Node.xml:601
+#: doc/classes/Node.xml:602
msgid ""
"Remotely changes property's value on a specific peer identified by "
"[code]peer_id[/code] using an unreliable protocol (see [method "
"NetworkedMultiplayerPeer.set_target_peer])."
msgstr ""
-#: doc/classes/Node.xml:608
+#: doc/classes/Node.xml:609
msgid "Sets the folded state of the node in the Scene dock."
msgstr ""
-#: doc/classes/Node.xml:616
+#: doc/classes/Node.xml:617
msgid ""
"Sets the node's network master to the peer with the given peer ID. The "
"network master is the peer that has authority over the node on the network. "
@@ -35590,7 +35654,7 @@ msgid ""
"peer is recursively set as the master for all children of this node."
msgstr ""
-#: doc/classes/Node.xml:623
+#: doc/classes/Node.xml:624
msgid ""
"Enables or disables physics (i.e. fixed framerate) processing. When a node "
"is being processed, it will receive a [constant "
@@ -35601,7 +35665,7 @@ msgid ""
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:630
+#: doc/classes/Node.xml:631
msgid ""
"Enables or disables internal physics for this node. Internal physics "
"processing happens in isolation from the normal [method _physics_process] "
@@ -35615,7 +35679,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:638
+#: doc/classes/Node.xml:639
msgid ""
"Enables or disables processing. When a node is being processed, it will "
"receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the "
@@ -35624,14 +35688,14 @@ msgid ""
"will be ignored."
msgstr ""
-#: doc/classes/Node.xml:645
+#: doc/classes/Node.xml:646
msgid ""
"Enables or disables input processing. This is not required for GUI controls! "
"Enabled automatically if [method _input] is overridden. Any calls to this "
"before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:652
+#: doc/classes/Node.xml:653
msgid ""
"Enables or disabled internal processing for this node. Internal processing "
"happens in isolation from the normal [method _process] calls and is used by "
@@ -35644,7 +35708,7 @@ msgid ""
"advanced uses, but is unsafe and not supported."
msgstr ""
-#: doc/classes/Node.xml:660
+#: doc/classes/Node.xml:661
msgid ""
"Enables unhandled input processing. This is not required for GUI controls! "
"It enables the node to receive all input that was not previously handled "
@@ -35652,32 +35716,32 @@ msgid ""
"is overridden. Any calls to this before [method _ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:667
+#: doc/classes/Node.xml:668
msgid ""
"Enables unhandled key input processing. Enabled automatically if [method "
"_unhandled_key_input] is overridden. Any calls to this before [method "
"_ready] will be ignored."
msgstr ""
-#: doc/classes/Node.xml:674
+#: doc/classes/Node.xml:675
msgid ""
"Sets whether this is an instance load placeholder. See [InstancePlaceholder]."
msgstr ""
-#: doc/classes/Node.xml:680
+#: doc/classes/Node.xml:681
msgid ""
"Updates the warning displayed for this node in the Scene Dock.\n"
"Use [method _get_configuration_warning] to setup the warning message to "
"display."
msgstr ""
-#: doc/classes/Node.xml:687
+#: doc/classes/Node.xml:688
msgid ""
"The override to the default [MultiplayerAPI]. Set to [code]null[/code] to "
"use the default [SceneTree] one."
msgstr ""
-#: doc/classes/Node.xml:690
+#: doc/classes/Node.xml:691
msgid ""
"If a scene is instantiated from a file, its topmost node contains the "
"absolute file path from which it was loaded in [member filename] (e.g. "
@@ -35685,13 +35749,13 @@ msgid ""
"empty string."
msgstr ""
-#: doc/classes/Node.xml:693
+#: doc/classes/Node.xml:694
msgid ""
"The [MultiplayerAPI] instance associated with this node. Either the [member "
"custom_multiplayer], or the default SceneTree one (if inside tree)."
msgstr ""
-#: doc/classes/Node.xml:696
+#: doc/classes/Node.xml:697
msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
@@ -35701,7 +35765,7 @@ msgid ""
"When setting the name manually, any [code]@[/code] will be removed."
msgstr ""
-#: doc/classes/Node.xml:700
+#: doc/classes/Node.xml:701
msgid ""
"The node owner. A node can have any other node as owner (as long as it is a "
"valid parent, grandparent, etc. ascending in the tree). When saving a node "
@@ -35710,11 +35774,11 @@ msgid ""
"subinstancing."
msgstr ""
-#: doc/classes/Node.xml:703
+#: doc/classes/Node.xml:704
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:706
+#: doc/classes/Node.xml:707
msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
@@ -35723,138 +35787,138 @@ msgid ""
"executed first."
msgstr ""
-#: doc/classes/Node.xml:712
+#: doc/classes/Node.xml:713
msgid "Emitted when the node is ready."
msgstr ""
-#: doc/classes/Node.xml:717
+#: doc/classes/Node.xml:718
msgid "Emitted when the node is renamed."
msgstr ""
-#: doc/classes/Node.xml:722
+#: doc/classes/Node.xml:723
msgid "Emitted when the node enters the tree."
msgstr ""
-#: doc/classes/Node.xml:727
+#: doc/classes/Node.xml:728
msgid "Emitted after the node exits the tree and is no longer active."
msgstr ""
-#: doc/classes/Node.xml:732
+#: doc/classes/Node.xml:733
msgid ""
"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)."
msgstr ""
-#: doc/classes/Node.xml:738
+#: doc/classes/Node.xml:739
msgid "Notification received when the node enters a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:741
+#: doc/classes/Node.xml:742
msgid "Notification received when the node is about to exit a [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:744
+#: doc/classes/Node.xml:745
msgid "Notification received when the node is moved in the parent."
msgstr ""
-#: doc/classes/Node.xml:747
+#: doc/classes/Node.xml:748
msgid "Notification received when the node is ready. See [method _ready]."
msgstr ""
-#: doc/classes/Node.xml:750
+#: doc/classes/Node.xml:751
msgid "Notification received when the node is paused."
msgstr ""
-#: doc/classes/Node.xml:753
+#: doc/classes/Node.xml:754
msgid "Notification received when the node is unpaused."
msgstr ""
-#: doc/classes/Node.xml:756
+#: doc/classes/Node.xml:757
msgid ""
"Notification received every frame when the physics process flag is set (see "
"[method set_physics_process])."
msgstr ""
-#: doc/classes/Node.xml:759
+#: doc/classes/Node.xml:760
msgid ""
"Notification received every frame when the process flag is set (see [method "
"set_process])."
msgstr ""
-#: doc/classes/Node.xml:762
+#: doc/classes/Node.xml:763
msgid ""
"Notification received when a node is set as a child of another node.\n"
"[b]Note:[/b] This doesn't mean that a node entered the [SceneTree]."
msgstr ""
-#: doc/classes/Node.xml:766
+#: doc/classes/Node.xml:767
msgid ""
"Notification received when a node is unparented (parent removed it from the "
"list of children)."
msgstr ""
-#: doc/classes/Node.xml:769
+#: doc/classes/Node.xml:770
msgid "Notification received when the node is instanced."
msgstr ""
-#: doc/classes/Node.xml:772
+#: doc/classes/Node.xml:773
msgid "Notification received when a drag begins."
msgstr ""
-#: doc/classes/Node.xml:775
+#: doc/classes/Node.xml:776
msgid "Notification received when a drag ends."
msgstr ""
-#: doc/classes/Node.xml:778
+#: doc/classes/Node.xml:779
msgid "Notification received when the node's [NodePath] changed."
msgstr ""
-#: doc/classes/Node.xml:781
+#: doc/classes/Node.xml:782
msgid ""
"Notification received every frame when the internal process flag is set (see "
"[method set_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:784
+#: doc/classes/Node.xml:785
msgid ""
"Notification received every frame when the internal physics process flag is "
"set (see [method set_physics_process_internal])."
msgstr ""
-#: doc/classes/Node.xml:787
+#: doc/classes/Node.xml:788
msgid ""
"Notification received when the node is ready, just before [constant "
"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the "
"node enters tree, instead of only once."
msgstr ""
-#: doc/classes/Node.xml:845
+#: doc/classes/Node.xml:846
msgid ""
"Inherits pause mode from the node's parent. For the root node, it is "
"equivalent to [constant PAUSE_MODE_STOP]. Default."
msgstr ""
-#: doc/classes/Node.xml:848
+#: doc/classes/Node.xml:849
msgid "Stops processing when the [SceneTree] is paused."
msgstr ""
-#: doc/classes/Node.xml:851
+#: doc/classes/Node.xml:852
msgid "Continue to process regardless of the [SceneTree] pause state."
msgstr ""
-#: doc/classes/Node.xml:854
+#: doc/classes/Node.xml:855
msgid "Duplicate the node's signals."
msgstr ""
-#: doc/classes/Node.xml:857
+#: doc/classes/Node.xml:858
msgid "Duplicate the node's groups."
msgstr ""
-#: doc/classes/Node.xml:860
+#: doc/classes/Node.xml:861
msgid "Duplicate the node's scripts."
msgstr ""
-#: doc/classes/Node.xml:863
+#: doc/classes/Node.xml:864
msgid ""
"Duplicate using instancing.\n"
"An instance stays linked to the original so when the original changes, the "
@@ -37039,34 +37103,34 @@ msgstr ""
msgid "Returns the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:92
+#: doc/classes/OptionButton.xml:93
msgid ""
"Returns the ID of the selected item, or [code]0[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:98
+#: doc/classes/OptionButton.xml:99
msgid ""
"Gets the metadata of the selected item. Metadata for items can be set using "
"[method set_item_metadata]."
msgstr ""
-#: doc/classes/OptionButton.xml:105
+#: doc/classes/OptionButton.xml:106
msgid ""
"Returns [code]true[/code] if the item at index [code]idx[/code] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:112
+#: doc/classes/OptionButton.xml:113
msgid "Removes the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:119
+#: doc/classes/OptionButton.xml:120
msgid ""
"Selects an item by index and makes it the current item. This will work even "
"if the item is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:127
+#: doc/classes/OptionButton.xml:128
msgid ""
"Sets whether the item at index [code]idx[/code] is disabled.\n"
"Disabled items are drawn differently in the dropdown and are not selectable "
@@ -37074,96 +37138,96 @@ msgid ""
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:136
+#: doc/classes/OptionButton.xml:137
msgid "Sets the icon of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:144
+#: doc/classes/OptionButton.xml:145
msgid "Sets the ID of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:152
+#: doc/classes/OptionButton.xml:153
msgid ""
"Sets the metadata of an item. Metadata may be of any type and can be used to "
"store extra information about an item, such as an external string ID."
msgstr ""
-#: doc/classes/OptionButton.xml:160 doc/classes/PopupMenu.xml:432
+#: doc/classes/OptionButton.xml:161 doc/classes/PopupMenu.xml:432
msgid "Sets the text of the item at index [code]idx[/code]."
msgstr ""
-#: doc/classes/OptionButton.xml:168
+#: doc/classes/OptionButton.xml:169
msgid ""
"The index of the currently selected item, or [code]-1[/code] if no item is "
"selected."
msgstr ""
-#: doc/classes/OptionButton.xml:176
+#: doc/classes/OptionButton.xml:177
msgid ""
"Emitted when the user navigates to an item using the [code]ui_up[/code] or "
"[code]ui_down[/code] actions. The index of the item selected is passed as "
"argument."
msgstr ""
-#: doc/classes/OptionButton.xml:182
+#: doc/classes/OptionButton.xml:183
msgid ""
"Emitted when the current item has been changed by the user. The index of the "
"item selected is passed as argument."
msgstr ""
-#: doc/classes/OptionButton.xml:190
+#: doc/classes/OptionButton.xml:191
msgid "The arrow icon to be drawn on the right end of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:193
+#: doc/classes/OptionButton.xml:194
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
-#: doc/classes/OptionButton.xml:196
+#: doc/classes/OptionButton.xml:197
msgid "[StyleBox] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:199
+#: doc/classes/OptionButton.xml:200
msgid ""
"[StyleBox] used when the [OptionButton] is focused. It is displayed over the "
"current [StyleBox], so using [StyleBoxEmpty] will just disable the focus "
"visual effect."
msgstr ""
-#: doc/classes/OptionButton.xml:202
+#: doc/classes/OptionButton.xml:203
msgid "[Font] of the [OptionButton]'s text."
msgstr ""
-#: doc/classes/OptionButton.xml:205
+#: doc/classes/OptionButton.xml:206
msgid "Default text [Color] of the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:208
+#: doc/classes/OptionButton.xml:209
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr ""
-#: doc/classes/OptionButton.xml:211
+#: doc/classes/OptionButton.xml:212
msgid "Text [Color] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:214
+#: doc/classes/OptionButton.xml:215
msgid "Text [Color] used when the [OptionButton] is being pressed."
msgstr ""
-#: doc/classes/OptionButton.xml:217
+#: doc/classes/OptionButton.xml:218
msgid "[StyleBox] used when the [OptionButton] is being hovered."
msgstr ""
-#: doc/classes/OptionButton.xml:220
+#: doc/classes/OptionButton.xml:221
msgid "The horizontal space between [OptionButton]'s icon and text."
msgstr ""
-#: doc/classes/OptionButton.xml:223
+#: doc/classes/OptionButton.xml:224
msgid "Default [StyleBox] for the [OptionButton]."
msgstr ""
-#: doc/classes/OptionButton.xml:226
+#: doc/classes/OptionButton.xml:227
msgid "[StyleBox] used when the [OptionButton] is being pressed."
msgstr ""
@@ -39798,20 +39862,20 @@ msgstr ""
msgid "Draw calls per frame."
msgstr ""
-#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3695
+#: doc/classes/Performance.xml:87 doc/classes/VisualServer.xml:3696
msgid ""
"The amount of video memory used, i.e. texture and vertex memory combined."
msgstr ""
-#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3698
+#: doc/classes/Performance.xml:90 doc/classes/VisualServer.xml:3699
msgid "The amount of texture memory used."
msgstr ""
-#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3701
+#: doc/classes/Performance.xml:93 doc/classes/VisualServer.xml:3702
msgid "The amount of vertex memory used."
msgstr ""
-#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3692
+#: doc/classes/Performance.xml:96 doc/classes/VisualServer.xml:3693
msgid ""
"Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0."
msgstr ""
@@ -43651,6 +43715,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml:204
msgid ""
+"The project data directory is used for storing project-specific data "
+"(metadata, shader cache, etc.).\n"
+"[b]Note:[/b] Restart the application after changing this setting.\n"
+"[b]Note:[/b] Changing this value can help on platforms or with third-party "
+"tools where specific directory patterns are disallowed. Only modify this "
+"setting if you know that your environment requires it, as changing the "
+"default can impact compatibility with some external tools or plugins which "
+"expect the default [code].import[/code] folder."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:209
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -43658,7 +43734,7 @@ msgid ""
"code] will still be read to override the project settings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:208
+#: doc/classes/ProjectSettings.xml:213
msgid ""
"If [code]true[/code], the project will save user data to its own user "
"directory (see [member application/config/custom_user_dir_name]). This "
@@ -43668,13 +43744,13 @@ msgid ""
"user data directory)/Godot/app_userdata/(project name)[/code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:211
+#: doc/classes/ProjectSettings.xml:216
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 ""
-#: doc/classes/ProjectSettings.xml:214
+#: doc/classes/ProjectSettings.xml:219
msgid ""
"Time samples for frame deltas are subject to random variation introduced by "
"the platform, even when frames are displayed at regular intervals thanks to "
@@ -43688,14 +43764,14 @@ msgid ""
"adequate to render frames at the refresh rate."
msgstr ""
-#: doc/classes/ProjectSettings.xml:219
+#: doc/classes/ProjectSettings.xml:224
msgid ""
"[b]Experimental.[/b] Shifts the measurement of delta time for each frame to "
"just after the drawing has taken place. This may lead to more consistent "
"deltas and a reduction in frame stutters."
msgstr ""
-#: doc/classes/ProjectSettings.xml:222
+#: doc/classes/ProjectSettings.xml:227
msgid ""
"If [code]true[/code], disables printing to standard error. If [code]true[/"
"code], this also hides error and warning messages printed by [method "
@@ -43704,7 +43780,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:226
+#: doc/classes/ProjectSettings.xml:231
msgid ""
"If [code]true[/code], disables printing to standard output. This is "
"equivalent to starting the editor or project with the [code]--quiet[/code] "
@@ -43712,7 +43788,7 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:230
+#: doc/classes/ProjectSettings.xml:235
msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
@@ -43728,20 +43804,20 @@ msgid ""
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:236
+#: doc/classes/ProjectSettings.xml:241
msgid ""
"Debug build override for [member application/run/flush_stdout_on_print], as "
"performance is less important during debugging.\n"
"Changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:240
+#: doc/classes/ProjectSettings.xml:245
msgid ""
"Forces a delay between frames in the main loop (in milliseconds). This may "
"be useful if you plan to disable vertical synchronization."
msgstr ""
-#: doc/classes/ProjectSettings.xml:243
+#: doc/classes/ProjectSettings.xml:248
msgid ""
"If [code]true[/code], enables low-processor usage mode. This setting only "
"works on desktop platforms. The screen is not redrawn if nothing changes "
@@ -43749,75 +43825,75 @@ msgid ""
"useless (and can hurt performance) in most games."
msgstr ""
-#: doc/classes/ProjectSettings.xml:246
+#: doc/classes/ProjectSettings.xml:251
msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:249
+#: doc/classes/ProjectSettings.xml:254
msgid "Path to the main scene file that will be loaded when the project runs."
msgstr ""
-#: doc/classes/ProjectSettings.xml:252 doc/classes/ProjectSettings.xml:255
+#: doc/classes/ProjectSettings.xml:257 doc/classes/ProjectSettings.xml:260
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
"threshold for a given time. This saves CPU as effects assigned to that bus "
"will no longer do any processing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:258
+#: doc/classes/ProjectSettings.xml:263
msgid ""
"Default [AudioBusLayout] resource file to use in the project, unless "
"overridden by the scene."
msgstr ""
-#: doc/classes/ProjectSettings.xml:261
+#: doc/classes/ProjectSettings.xml:266
msgid ""
"Specifies the audio driver to use. This setting is platform-dependent as "
"each platform supports different audio drivers. If left empty, the default "
"audio driver will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:264
+#: doc/classes/ProjectSettings.xml:269
msgid ""
"If [code]true[/code], microphone input will be allowed. This requires "
"appropriate permissions to be set when exporting to Android or iOS."
msgstr ""
-#: doc/classes/ProjectSettings.xml:267
+#: doc/classes/ProjectSettings.xml:272
msgid ""
"The mixing rate used for audio (in Hz). In general, it's better to not touch "
"this and leave it to the host operating system."
msgstr ""
-#: doc/classes/ProjectSettings.xml:270
+#: doc/classes/ProjectSettings.xml:275
msgid ""
"Safer override for [member audio/mix_rate] in the Web platform. Here "
"[code]0[/code] means \"let the browser choose\" (since some browsers do not "
"like forcing the mix rate)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:273
+#: doc/classes/ProjectSettings.xml:278
msgid ""
"Output latency in milliseconds for audio. Lower values will result in lower "
"audio latency at the cost of increased CPU usage. Low values may result in "
"audible cracking on slower hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:276
+#: doc/classes/ProjectSettings.xml:281
msgid ""
"Safer override for [member audio/output_latency] in the Web platform, to "
"avoid audio issues especially on mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:279
+#: doc/classes/ProjectSettings.xml:284
msgid ""
"Setting to hardcode audio delay when playing video. Best to leave this "
"untouched unless you know what you are doing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:282
+#: doc/classes/ProjectSettings.xml:287
msgid ""
"The default compression level for gzip. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43827,7 +43903,7 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:285
+#: doc/classes/ProjectSettings.xml:290
msgid ""
"The default compression level for Zlib. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
@@ -43837,27 +43913,27 @@ msgid ""
"updates."
msgstr ""
-#: doc/classes/ProjectSettings.xml:288
+#: doc/classes/ProjectSettings.xml:293
msgid ""
"The default compression level for Zstandard. Affects compressed scenes and "
"resources. Higher levels result in smaller files at the cost of compression "
"speed. Decompression speed is mostly unaffected by the compression level."
msgstr ""
-#: doc/classes/ProjectSettings.xml:291
+#: doc/classes/ProjectSettings.xml:296
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-#: doc/classes/ProjectSettings.xml:294
+#: doc/classes/ProjectSettings.xml:299
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
"distance matching with Zstandard. Higher values can result in better "
"compression, but will require more memory when compressing and decompressing."
msgstr ""
-#: doc/classes/ProjectSettings.xml:297
+#: doc/classes/ProjectSettings.xml:302
msgid ""
"If [code]true[/code], displays getters and setters in autocompletion results "
"in the script editor. This setting is meant to be used when porting old "
@@ -43865,81 +43941,81 @@ msgid ""
"Godot 3 onwards."
msgstr ""
-#: doc/classes/ProjectSettings.xml:300
+#: doc/classes/ProjectSettings.xml:305
msgid ""
"If [code]true[/code], enables warnings when a constant is used as a function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:303
+#: doc/classes/ProjectSettings.xml:308
msgid ""
"If [code]true[/code], enables warnings when deprecated keywords such as "
"[code]slave[/code] are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:306
+#: doc/classes/ProjectSettings.xml:311
msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:309
+#: doc/classes/ProjectSettings.xml:314
msgid ""
"If [code]true[/code], scripts in the [code]res://addons[/code] folder will "
"not generate warnings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:312
+#: doc/classes/ProjectSettings.xml:317
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a constant."
msgstr ""
-#: doc/classes/ProjectSettings.xml:315
+#: doc/classes/ProjectSettings.xml:320
msgid ""
"If [code]true[/code], enables warnings when a function is declared with the "
"same name as a variable. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:318
+#: doc/classes/ProjectSettings.xml:323
msgid ""
"If [code]true[/code], enables warnings when a function assigned to a "
"variable may yield and return a function state instead of a value."
msgstr ""
-#: doc/classes/ProjectSettings.xml:321
+#: doc/classes/ProjectSettings.xml:326
msgid ""
"If [code]true[/code], enables warnings when using a function as if it was a "
"property."
msgstr ""
-#: doc/classes/ProjectSettings.xml:324
+#: doc/classes/ProjectSettings.xml:329
msgid ""
"If [code]true[/code], enables warnings when a ternary operator may emit "
"values with incompatible types."
msgstr ""
-#: doc/classes/ProjectSettings.xml:327
+#: doc/classes/ProjectSettings.xml:332
msgid ""
"If [code]true[/code], enables warnings when dividing an integer by another "
"integer (the decimal part will be discarded)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:330
+#: doc/classes/ProjectSettings.xml:335
msgid ""
"If [code]true[/code], enables warnings when passing a floating-point value "
"to a function that expects an integer (it will be converted and lose "
"precision)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:333
+#: doc/classes/ProjectSettings.xml:338
msgid ""
"If [code]true[/code], enables warnings when using a property as if it was a "
"function."
msgstr ""
-#: doc/classes/ProjectSettings.xml:336
+#: doc/classes/ProjectSettings.xml:341
msgid ""
"If [code]true[/code], enables warnings when calling a function without using "
"its return value (by assigning it to a variable or using it as a function "
@@ -43947,109 +44023,109 @@ msgid ""
"using the [enum Error] enum."
msgstr ""
-#: doc/classes/ProjectSettings.xml:339
+#: doc/classes/ProjectSettings.xml:344
msgid ""
"If [code]true[/code], enables warnings when defining a local or subclass "
"member variable that would shadow a variable at an upper level (such as a "
"member variable)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:342
+#: doc/classes/ProjectSettings.xml:347
msgid ""
"If [code]true[/code], enables warnings when calling an expression that has "
"no effect on the surrounding code, such as writing [code]2 + 2[/code] as a "
"statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:345
+#: doc/classes/ProjectSettings.xml:350
msgid ""
"If [code]true[/code], enables warnings when calling a ternary expression "
"that has no effect on the surrounding code, such as writing [code]42 if "
"active else 0[/code] as a statement."
msgstr ""
-#: doc/classes/ProjectSettings.xml:348
+#: doc/classes/ProjectSettings.xml:353
msgid ""
"If [code]true[/code], all warnings will be reported as if they were errors."
msgstr ""
-#: doc/classes/ProjectSettings.xml:351
+#: doc/classes/ProjectSettings.xml:356
msgid ""
"If [code]true[/code], enables warnings when using a variable that wasn't "
"previously assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:354
+#: doc/classes/ProjectSettings.xml:359
msgid ""
"If [code]true[/code], enables warnings when assigning a variable using an "
"assignment operator like [code]+=[/code] if the variable wasn't previously "
"assigned."
msgstr ""
-#: doc/classes/ProjectSettings.xml:357
+#: doc/classes/ProjectSettings.xml:362
msgid ""
"If [code]true[/code], enables warnings when unreachable code is detected "
"(such as after a [code]return[/code] statement that will always be executed)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:360
+#: doc/classes/ProjectSettings.xml:365
msgid ""
"If [code]true[/code], enables warnings when using an expression whose type "
"may not be compatible with the function parameter expected."
msgstr ""
-#: doc/classes/ProjectSettings.xml:363
+#: doc/classes/ProjectSettings.xml:368
msgid "If [code]true[/code], enables warnings when performing an unsafe cast."
msgstr ""
-#: doc/classes/ProjectSettings.xml:366
+#: doc/classes/ProjectSettings.xml:371
msgid ""
"If [code]true[/code], enables warnings when calling a method whose presence "
"is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:369
+#: doc/classes/ProjectSettings.xml:374
msgid ""
"If [code]true[/code], enables warnings when accessing a property whose "
"presence is not guaranteed at compile-time in the class."
msgstr ""
-#: doc/classes/ProjectSettings.xml:372
+#: doc/classes/ProjectSettings.xml:377
msgid ""
"If [code]true[/code], enables warnings when a function parameter is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:375
+#: doc/classes/ProjectSettings.xml:380
msgid ""
"If [code]true[/code], enables warnings when a member variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:378
+#: doc/classes/ProjectSettings.xml:383
msgid "If [code]true[/code], enables warnings when a signal is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:381
+#: doc/classes/ProjectSettings.xml:386
msgid "If [code]true[/code], enables warnings when a local variable is unused."
msgstr ""
-#: doc/classes/ProjectSettings.xml:384
+#: doc/classes/ProjectSettings.xml:389
msgid ""
"If [code]true[/code], enables warnings when a variable is declared with the "
"same name as a function. This will turn into an error in a future version "
"when first-class functions become supported in GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:387
+#: doc/classes/ProjectSettings.xml:392
msgid ""
"If [code]true[/code], enables warnings when assigning the result of a "
"function that returns [code]void[/code] to a variable."
msgstr ""
-#: doc/classes/ProjectSettings.xml:390
+#: doc/classes/ProjectSettings.xml:395
msgid "Message to be displayed before the backtrace when the engine crashes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:393
+#: doc/classes/ProjectSettings.xml:398
msgid ""
"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.\n"
@@ -44060,91 +44136,91 @@ msgid ""
"project under lag conditions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:398
+#: doc/classes/ProjectSettings.xml:403
msgid "Maximum call stack allowed for debugging GDScript."
msgstr ""
-#: doc/classes/ProjectSettings.xml:401
+#: doc/classes/ProjectSettings.xml:406
msgid "Maximum amount of functions per frame allowed when profiling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:404
+#: doc/classes/ProjectSettings.xml:409
msgid "Print frames per second to standard output every second."
msgstr ""
-#: doc/classes/ProjectSettings.xml:407
+#: doc/classes/ProjectSettings.xml:412
msgid ""
"Print more information to standard output when running. It displays "
"information such as memory leaks, which scenes and resources are being "
"loaded, etc."
msgstr ""
-#: doc/classes/ProjectSettings.xml:410
+#: doc/classes/ProjectSettings.xml:415
msgid "Maximum call stack in visual scripting, to avoid infinite recursion."
msgstr ""
-#: doc/classes/ProjectSettings.xml:413
+#: doc/classes/ProjectSettings.xml:418
msgid ""
"Color of the contact points between collision shapes, visible when \"Visible "
"Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:416
+#: doc/classes/ProjectSettings.xml:421
msgid ""
"Sets whether 2D physics will display collision outlines in game when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:419
+#: doc/classes/ProjectSettings.xml:424
msgid ""
"Maximum number of contact points between collision shapes to display when "
"\"Visible Collision Shapes\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:422
+#: doc/classes/ProjectSettings.xml:427
msgid ""
"Color of the collision shapes, visible when \"Visible Collision Shapes\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:425
+#: doc/classes/ProjectSettings.xml:430
msgid ""
"Color of the disabled navigation geometry, visible when \"Visible Navigation"
"\" is enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:428
+#: doc/classes/ProjectSettings.xml:433
msgid ""
"Color of the navigation geometry, visible when \"Visible Navigation\" is "
"enabled in the Debug menu."
msgstr ""
-#: doc/classes/ProjectSettings.xml:431
+#: doc/classes/ProjectSettings.xml:436
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:434
+#: doc/classes/ProjectSettings.xml:439
msgid "Hotspot for the custom mouse cursor image."
msgstr ""
-#: doc/classes/ProjectSettings.xml:437
+#: doc/classes/ProjectSettings.xml:442
msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr ""
-#: doc/classes/ProjectSettings.xml:440
+#: doc/classes/ProjectSettings.xml:445
msgid ""
"If [code]true[/code], allows HiDPI display on Windows, macOS, and the HTML5 "
"platform. This setting has no effect on desktop Linux, as DPI-awareness "
"fallbacks are not supported there."
msgstr ""
-#: doc/classes/ProjectSettings.xml:443
+#: doc/classes/ProjectSettings.xml:448
msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:446
+#: doc/classes/ProjectSettings.xml:451
msgid ""
"The default screen orientation to use on mobile devices.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -44153,13 +44229,13 @@ msgid ""
"window/size/height] accordingly."
msgstr ""
-#: doc/classes/ProjectSettings.xml:450
+#: doc/classes/ProjectSettings.xml:455
msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
-#: doc/classes/ProjectSettings.xml:453
+#: doc/classes/ProjectSettings.xml:458
msgid ""
"If [code]true[/code], allows per-pixel transparency for the window "
"background. This affects performance, so leave it on [code]false[/code] "
@@ -44169,7 +44245,7 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:458
+#: doc/classes/ProjectSettings.xml:463
msgid ""
"Sets the window background to transparent when it starts.\n"
"See [member OS.window_per_pixel_transparency_enabled] for more details.\n"
@@ -44177,19 +44253,19 @@ msgid ""
"and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:463
+#: doc/classes/ProjectSettings.xml:468
msgid ""
"Forces the main window to be always on top.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:467
+#: doc/classes/ProjectSettings.xml:472
msgid ""
"Forces the main window to be borderless.\n"
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:471
+#: doc/classes/ProjectSettings.xml:476
msgid ""
"Sets the main window to full screen when the project starts. Note that this "
"is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless "
@@ -44203,45 +44279,45 @@ msgid ""
"[b]Note:[/b] This setting is ignored on iOS, Android, and HTML5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:476
+#: doc/classes/ProjectSettings.xml:481
msgid ""
"Sets the game's main viewport height. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:479
+#: doc/classes/ProjectSettings.xml:484
msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS and Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:483
+#: doc/classes/ProjectSettings.xml:488
msgid ""
"If greater than zero, overrides the window height when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:486
+#: doc/classes/ProjectSettings.xml:491
msgid ""
"If greater than zero, overrides the window width when running the game. "
"Useful for testing stretch modes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:489
+#: doc/classes/ProjectSettings.xml:494
msgid ""
"Sets the game's main viewport width. On desktop platforms, this is the "
"default window size. Stretch mode settings also use this as a reference when "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:492
+#: doc/classes/ProjectSettings.xml:497
msgid ""
"Specifies the tablet driver to use. If left empty, the default driver will "
"be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:495
+#: doc/classes/ProjectSettings.xml:500
msgid ""
"If [code]true[/code], enables vertical synchronization. This eliminates "
"tearing that may appear in moving scenes, at the cost of higher input "
@@ -44250,7 +44326,7 @@ msgid ""
"regardless (such as mobile platforms and HTML5)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:498
+#: doc/classes/ProjectSettings.xml:503
msgid ""
"If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], "
"enables vertical synchronization via the operating system's window "
@@ -44261,7 +44337,7 @@ msgid ""
"framerate halving (e.g. from 60 FPS to 30 FPS) when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:502
+#: doc/classes/ProjectSettings.xml:507
msgid ""
"The command-line arguments to append to Godot's own command line when "
"running the project. This doesn't affect the editor itself.\n"
@@ -44277,14 +44353,14 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:510
+#: doc/classes/ProjectSettings.xml:515
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:513
+#: doc/classes/ProjectSettings.xml:518
msgid ""
"Text-based file extensions to include in the script editor's \"Find in Files"
"\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
@@ -44292,49 +44368,49 @@ msgid ""
"serialized in the scene files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:516
+#: doc/classes/ProjectSettings.xml:521
msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
-#: doc/classes/ProjectSettings.xml:519
+#: doc/classes/ProjectSettings.xml:524
msgid ""
"If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and "
"UWP to follow interface conventions."
msgstr ""
-#: doc/classes/ProjectSettings.xml:524
+#: doc/classes/ProjectSettings.xml:529
msgid ""
"Path to a custom [Theme] resource file to use for the project ([code]theme[/"
"code] or generic [code]tres[/code]/[code]res[/code] extension)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:527
+#: doc/classes/ProjectSettings.xml:532
msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
msgstr ""
-#: doc/classes/ProjectSettings.xml:530
+#: doc/classes/ProjectSettings.xml:535
msgid "If [code]true[/code], makes sure the theme used works with HiDPI."
msgstr ""
-#: doc/classes/ProjectSettings.xml:533
+#: doc/classes/ProjectSettings.xml:538
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
"(in milliseconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:536
+#: doc/classes/ProjectSettings.xml:541
msgid "Timer for detecting idle in [TextEdit] (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:539
+#: doc/classes/ProjectSettings.xml:544
msgid "Default delay for tooltips (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:542
+#: doc/classes/ProjectSettings.xml:547
msgid ""
"Default [InputEventAction] to confirm a focused button, menu or list item, "
"or validate input.\n"
@@ -44343,7 +44419,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:546
+#: doc/classes/ProjectSettings.xml:551
msgid ""
"Default [InputEventAction] to discard a modal or pending input.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44351,7 +44427,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:550
+#: doc/classes/ProjectSettings.xml:555
msgid ""
"Default [InputEventAction] to move down in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44359,7 +44435,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:554
+#: doc/classes/ProjectSettings.xml:559
msgid ""
"Default [InputEventAction] to go to the end position of a [Control] (e.g. "
"last item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44369,7 +44445,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:558
+#: doc/classes/ProjectSettings.xml:563
msgid ""
"Default [InputEventAction] to focus the next [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_next].\n"
@@ -44378,7 +44454,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:562
+#: doc/classes/ProjectSettings.xml:567
msgid ""
"Default [InputEventAction] to focus the previous [Control] in the scene. The "
"focus behavior can be configured via [member Control.focus_previous].\n"
@@ -44387,7 +44463,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:566
+#: doc/classes/ProjectSettings.xml:571
msgid ""
"Default [InputEventAction] to go to the start position of a [Control] (e.g. "
"first item in an [ItemList] or a [Tree]), matching the behavior of [constant "
@@ -44397,7 +44473,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:570
+#: doc/classes/ProjectSettings.xml:575
msgid ""
"Default [InputEventAction] to move left in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44405,7 +44481,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:574
+#: doc/classes/ProjectSettings.xml:579
msgid ""
"Default [InputEventAction] to go down a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on "
@@ -44415,7 +44491,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:578
+#: doc/classes/ProjectSettings.xml:583
msgid ""
"Default [InputEventAction] to go up a page in a [Control] (e.g. in an "
"[ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on "
@@ -44425,7 +44501,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:582
+#: doc/classes/ProjectSettings.xml:587
msgid ""
"Default [InputEventAction] to move right in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44433,7 +44509,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:586
+#: doc/classes/ProjectSettings.xml:591
msgid ""
"Default [InputEventAction] to select an item in a [Control] (e.g. in an "
"[ItemList] or a [Tree]).\n"
@@ -44442,7 +44518,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:590
+#: doc/classes/ProjectSettings.xml:595
msgid ""
"Default [InputEventAction] to move up in the UI.\n"
"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are "
@@ -44450,7 +44526,7 @@ msgid ""
"to the action can however be modified."
msgstr ""
-#: doc/classes/ProjectSettings.xml:594
+#: doc/classes/ProjectSettings.xml:599
msgid ""
"If [code]true[/code], key/touch/joystick events will be flushed just before "
"every idle and physics frame.\n"
@@ -44462,477 +44538,477 @@ msgid ""
"[b]Note:[/b] Currently implemented only in Android."
msgstr ""
-#: doc/classes/ProjectSettings.xml:600
+#: doc/classes/ProjectSettings.xml:605
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:603
+#: doc/classes/ProjectSettings.xml:608
msgid ""
"If [code]true[/code], sends touch input events when clicking or dragging the "
"mouse."
msgstr ""
-#: doc/classes/ProjectSettings.xml:606
+#: doc/classes/ProjectSettings.xml:611
msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:609
+#: doc/classes/ProjectSettings.xml:614
msgid "Optional name for the 2D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:612
+#: doc/classes/ProjectSettings.xml:617
msgid "Optional name for the 2D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:615
+#: doc/classes/ProjectSettings.xml:620
msgid "Optional name for the 2D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:618
+#: doc/classes/ProjectSettings.xml:623
msgid "Optional name for the 2D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:621
+#: doc/classes/ProjectSettings.xml:626
msgid "Optional name for the 2D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:624
+#: doc/classes/ProjectSettings.xml:629
msgid "Optional name for the 2D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:627
+#: doc/classes/ProjectSettings.xml:632
msgid "Optional name for the 2D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:630
+#: doc/classes/ProjectSettings.xml:635
msgid "Optional name for the 2D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:633
+#: doc/classes/ProjectSettings.xml:638
msgid "Optional name for the 2D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:636
+#: doc/classes/ProjectSettings.xml:641
msgid "Optional name for the 2D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:639
+#: doc/classes/ProjectSettings.xml:644
msgid "Optional name for the 2D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:642
+#: doc/classes/ProjectSettings.xml:647
msgid "Optional name for the 2D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:645
+#: doc/classes/ProjectSettings.xml:650
msgid "Optional name for the 2D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:648
+#: doc/classes/ProjectSettings.xml:653
msgid "Optional name for the 2D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:651
+#: doc/classes/ProjectSettings.xml:656
msgid "Optional name for the 2D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:654
+#: doc/classes/ProjectSettings.xml:659
msgid "Optional name for the 2D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:657
+#: doc/classes/ProjectSettings.xml:662
msgid "Optional name for the 2D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:660
+#: doc/classes/ProjectSettings.xml:665
msgid "Optional name for the 2D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:663
+#: doc/classes/ProjectSettings.xml:668
msgid "Optional name for the 2D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:666
+#: doc/classes/ProjectSettings.xml:671
msgid "Optional name for the 2D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:669
+#: doc/classes/ProjectSettings.xml:674
msgid "Optional name for the 2D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:672
+#: doc/classes/ProjectSettings.xml:677
msgid "Optional name for the 2D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:675
+#: doc/classes/ProjectSettings.xml:680
msgid "Optional name for the 2D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:678
+#: doc/classes/ProjectSettings.xml:683
msgid "Optional name for the 2D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:681
+#: doc/classes/ProjectSettings.xml:686
msgid "Optional name for the 2D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:684
+#: doc/classes/ProjectSettings.xml:689
msgid "Optional name for the 2D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:687
+#: doc/classes/ProjectSettings.xml:692
msgid "Optional name for the 2D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:690
+#: doc/classes/ProjectSettings.xml:695
msgid "Optional name for the 2D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:693
+#: doc/classes/ProjectSettings.xml:698
msgid "Optional name for the 2D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:696
+#: doc/classes/ProjectSettings.xml:701
msgid "Optional name for the 2D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:699
+#: doc/classes/ProjectSettings.xml:704
msgid "Optional name for the 2D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:702
+#: doc/classes/ProjectSettings.xml:707
msgid "Optional name for the 2D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:705
+#: doc/classes/ProjectSettings.xml:710
msgid "Optional name for the 2D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:708
+#: doc/classes/ProjectSettings.xml:713
msgid "Optional name for the 2D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:711
+#: doc/classes/ProjectSettings.xml:716
msgid "Optional name for the 2D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:714
+#: doc/classes/ProjectSettings.xml:719
msgid "Optional name for the 2D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:717
+#: doc/classes/ProjectSettings.xml:722
msgid "Optional name for the 2D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:720
+#: doc/classes/ProjectSettings.xml:725
msgid "Optional name for the 2D render layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:723
+#: doc/classes/ProjectSettings.xml:728
msgid "Optional name for the 2D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:726
+#: doc/classes/ProjectSettings.xml:731
msgid "Optional name for the 2D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:729
+#: doc/classes/ProjectSettings.xml:734
msgid "Optional name for the 2D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:732
+#: doc/classes/ProjectSettings.xml:737
msgid "Optional name for the 2D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:735
+#: doc/classes/ProjectSettings.xml:740
msgid "Optional name for the 2D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:738
+#: doc/classes/ProjectSettings.xml:743
msgid "Optional name for the 2D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:741
+#: doc/classes/ProjectSettings.xml:746
msgid "Optional name for the 2D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:744
+#: doc/classes/ProjectSettings.xml:749
msgid "Optional name for the 2D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:747
+#: doc/classes/ProjectSettings.xml:752
msgid "Optional name for the 2D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:750
+#: doc/classes/ProjectSettings.xml:755
msgid "Optional name for the 2D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:753
+#: doc/classes/ProjectSettings.xml:758
msgid "Optional name for the 2D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:756
+#: doc/classes/ProjectSettings.xml:761
msgid "Optional name for the 2D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:759
+#: doc/classes/ProjectSettings.xml:764
msgid "Optional name for the 2D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:762
+#: doc/classes/ProjectSettings.xml:767
msgid "Optional name for the 2D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:765
+#: doc/classes/ProjectSettings.xml:770
msgid "Optional name for the 3D physics layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:768
+#: doc/classes/ProjectSettings.xml:773
msgid "Optional name for the 3D physics layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:771
+#: doc/classes/ProjectSettings.xml:776
msgid "Optional name for the 3D physics layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:774
+#: doc/classes/ProjectSettings.xml:779
msgid "Optional name for the 3D physics layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:777
+#: doc/classes/ProjectSettings.xml:782
msgid "Optional name for the 3D physics layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:780
+#: doc/classes/ProjectSettings.xml:785
msgid "Optional name for the 3D physics layer 14."
msgstr ""
-#: doc/classes/ProjectSettings.xml:783
+#: doc/classes/ProjectSettings.xml:788
msgid "Optional name for the 3D physics layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:786
+#: doc/classes/ProjectSettings.xml:791
msgid "Optional name for the 3D physics layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:789
+#: doc/classes/ProjectSettings.xml:794
msgid "Optional name for the 3D physics layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:792
+#: doc/classes/ProjectSettings.xml:797
msgid "Optional name for the 3D physics layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:795
+#: doc/classes/ProjectSettings.xml:800
msgid "Optional name for the 3D physics layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:798
+#: doc/classes/ProjectSettings.xml:803
msgid "Optional name for the 3D physics layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:801
+#: doc/classes/ProjectSettings.xml:806
msgid "Optional name for the 3D physics layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:804
+#: doc/classes/ProjectSettings.xml:809
msgid "Optional name for the 3D physics layer 21."
msgstr ""
-#: doc/classes/ProjectSettings.xml:807
+#: doc/classes/ProjectSettings.xml:812
msgid "Optional name for the 3D physics layer 22."
msgstr ""
-#: doc/classes/ProjectSettings.xml:810
+#: doc/classes/ProjectSettings.xml:815
msgid "Optional name for the 3D physics layer 23."
msgstr ""
-#: doc/classes/ProjectSettings.xml:813
+#: doc/classes/ProjectSettings.xml:818
msgid "Optional name for the 3D physics layer 24."
msgstr ""
-#: doc/classes/ProjectSettings.xml:816
+#: doc/classes/ProjectSettings.xml:821
msgid "Optional name for the 3D physics layer 25."
msgstr ""
-#: doc/classes/ProjectSettings.xml:819
+#: doc/classes/ProjectSettings.xml:824
msgid "Optional name for the 3D physics layer 26."
msgstr ""
-#: doc/classes/ProjectSettings.xml:822
+#: doc/classes/ProjectSettings.xml:827
msgid "Optional name for the 3D physics layer 27."
msgstr ""
-#: doc/classes/ProjectSettings.xml:825
+#: doc/classes/ProjectSettings.xml:830
msgid "Optional name for the 3D physics layer 28."
msgstr ""
-#: doc/classes/ProjectSettings.xml:828
+#: doc/classes/ProjectSettings.xml:833
msgid "Optional name for the 3D physics layer 29."
msgstr ""
-#: doc/classes/ProjectSettings.xml:831
+#: doc/classes/ProjectSettings.xml:836
msgid "Optional name for the 3D physics layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:834
+#: doc/classes/ProjectSettings.xml:839
msgid "Optional name for the 3D physics layer 30."
msgstr ""
-#: doc/classes/ProjectSettings.xml:837
+#: doc/classes/ProjectSettings.xml:842
msgid "Optional name for the 3D physics layer 31."
msgstr ""
-#: doc/classes/ProjectSettings.xml:840
+#: doc/classes/ProjectSettings.xml:845
msgid "Optional name for the 3D physics layer 32."
msgstr ""
-#: doc/classes/ProjectSettings.xml:843
+#: doc/classes/ProjectSettings.xml:848
msgid "Optional name for the 3D physics layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:846
+#: doc/classes/ProjectSettings.xml:851
msgid "Optional name for the 3D physics layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:849
+#: doc/classes/ProjectSettings.xml:854
msgid "Optional name for the 3D physics layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:852
+#: doc/classes/ProjectSettings.xml:857
msgid "Optional name for the 3D physics layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:855
+#: doc/classes/ProjectSettings.xml:860
msgid "Optional name for the 3D physics layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:858
+#: doc/classes/ProjectSettings.xml:863
msgid "Optional name for the 3D physics layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:861
+#: doc/classes/ProjectSettings.xml:866
msgid "Optional name for the 3D render layer 1."
msgstr ""
-#: doc/classes/ProjectSettings.xml:864
+#: doc/classes/ProjectSettings.xml:869
msgid "Optional name for the 3D render layer 10."
msgstr ""
-#: doc/classes/ProjectSettings.xml:867
+#: doc/classes/ProjectSettings.xml:872
msgid "Optional name for the 3D render layer 11."
msgstr ""
-#: doc/classes/ProjectSettings.xml:870
+#: doc/classes/ProjectSettings.xml:875
msgid "Optional name for the 3D render layer 12."
msgstr ""
-#: doc/classes/ProjectSettings.xml:873
+#: doc/classes/ProjectSettings.xml:878
msgid "Optional name for the 3D render layer 13."
msgstr ""
-#: doc/classes/ProjectSettings.xml:876
+#: doc/classes/ProjectSettings.xml:881
msgid "Optional name for the 3D render layer 14"
msgstr ""
-#: doc/classes/ProjectSettings.xml:879
+#: doc/classes/ProjectSettings.xml:884
msgid "Optional name for the 3D render layer 15."
msgstr ""
-#: doc/classes/ProjectSettings.xml:882
+#: doc/classes/ProjectSettings.xml:887
msgid "Optional name for the 3D render layer 16."
msgstr ""
-#: doc/classes/ProjectSettings.xml:885
+#: doc/classes/ProjectSettings.xml:890
msgid "Optional name for the 3D render layer 17."
msgstr ""
-#: doc/classes/ProjectSettings.xml:888
+#: doc/classes/ProjectSettings.xml:893
msgid "Optional name for the 3D render layer 18."
msgstr ""
-#: doc/classes/ProjectSettings.xml:891
+#: doc/classes/ProjectSettings.xml:896
msgid "Optional name for the 3D render layer 19."
msgstr ""
-#: doc/classes/ProjectSettings.xml:894
+#: doc/classes/ProjectSettings.xml:899
msgid "Optional name for the 3D render layer 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:897
+#: doc/classes/ProjectSettings.xml:902
msgid "Optional name for the 3D render layer 20."
msgstr ""
-#: doc/classes/ProjectSettings.xml:900
+#: doc/classes/ProjectSettings.xml:905
msgid "Optional name for the 3D render layer 3."
msgstr ""
-#: doc/classes/ProjectSettings.xml:903
+#: doc/classes/ProjectSettings.xml:908
msgid "Optional name for the 3D render layer 4."
msgstr ""
-#: doc/classes/ProjectSettings.xml:906
+#: doc/classes/ProjectSettings.xml:911
msgid "Optional name for the 3D render layer 5."
msgstr ""
-#: doc/classes/ProjectSettings.xml:909
+#: doc/classes/ProjectSettings.xml:914
msgid "Optional name for the 3D render layer 6."
msgstr ""
-#: doc/classes/ProjectSettings.xml:912
+#: doc/classes/ProjectSettings.xml:917
msgid "Optional name for the 3D render layer 7."
msgstr ""
-#: doc/classes/ProjectSettings.xml:915
+#: doc/classes/ProjectSettings.xml:920
msgid "Optional name for the 3D render layer 8."
msgstr ""
-#: doc/classes/ProjectSettings.xml:918
+#: doc/classes/ProjectSettings.xml:923
msgid "Optional name for the 3D render layer 9."
msgstr ""
-#: doc/classes/ProjectSettings.xml:921
+#: doc/classes/ProjectSettings.xml:926
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:924
+#: doc/classes/ProjectSettings.xml:929
msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:927
+#: doc/classes/ProjectSettings.xml:932
msgid "If [code]true[/code], logs all output to files."
msgstr ""
-#: doc/classes/ProjectSettings.xml:930
+#: doc/classes/ProjectSettings.xml:935
msgid ""
"Desktop override for [member logging/file_logging/enable_file_logging], as "
"log files are not readily accessible on mobile/Web platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:933
+#: doc/classes/ProjectSettings.xml:938
msgid ""
"Path to logs within the project. Using an [code]user://[/code] path is "
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:936
+#: doc/classes/ProjectSettings.xml:941
msgid "Specifies the maximum amount of log files allowed (used for rotation)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:941
+#: doc/classes/ProjectSettings.xml:946
msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:944
+#: doc/classes/ProjectSettings.xml:949
msgid ""
"This is used by servers when used in multi-threading mode (servers and "
"visual). RIDs are preallocated to avoid stalling the server requesting them "
@@ -44940,92 +45016,92 @@ msgid ""
"thread, increase this number."
msgstr ""
-#: doc/classes/ProjectSettings.xml:947
+#: doc/classes/ProjectSettings.xml:952
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."
msgstr ""
-#: doc/classes/ProjectSettings.xml:950
+#: doc/classes/ProjectSettings.xml:955
msgid ""
"Maximum number of errors allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:953
+#: doc/classes/ProjectSettings.xml:958
msgid ""
"Maximum amount of messages allowed to send as output from the debugger. Over "
"this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:956
+#: doc/classes/ProjectSettings.xml:961
msgid ""
"Maximum number of warnings allowed to be sent as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
msgstr ""
-#: doc/classes/ProjectSettings.xml:959
+#: doc/classes/ProjectSettings.xml:964
msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
msgstr ""
-#: doc/classes/ProjectSettings.xml:962
+#: doc/classes/ProjectSettings.xml:967
msgid "Timeout (in seconds) for connection attempts using TCP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:965
+#: doc/classes/ProjectSettings.xml:970
msgid "Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:968
+#: doc/classes/ProjectSettings.xml:973
msgid "Maximum size (in kiB) for the [WebSocketClient] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:971
+#: doc/classes/ProjectSettings.xml:976
msgid "Maximum number of concurrent input packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:974
+#: doc/classes/ProjectSettings.xml:979
msgid "Maximum size (in kiB) for the [WebSocketClient] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:977
+#: doc/classes/ProjectSettings.xml:982
msgid "Maximum number of concurrent output packets for [WebSocketClient]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:980
+#: doc/classes/ProjectSettings.xml:985
msgid "Maximum size (in kiB) for the [WebSocketServer] input buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:983
+#: doc/classes/ProjectSettings.xml:988
msgid "Maximum number of concurrent input packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:986
+#: doc/classes/ProjectSettings.xml:991
msgid "Maximum size (in kiB) for the [WebSocketServer] output buffer."
msgstr ""
-#: doc/classes/ProjectSettings.xml:989
+#: doc/classes/ProjectSettings.xml:994
msgid "Maximum number of concurrent output packets for [WebSocketServer]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:992
+#: doc/classes/ProjectSettings.xml:997
msgid ""
"Amount of read ahead used by remote filesystem. Higher values decrease the "
"effects of latency at the cost of higher bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:995
+#: doc/classes/ProjectSettings.xml:1000
msgid "Page size used by remote filesystem (in bytes)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:998
+#: doc/classes/ProjectSettings.xml:1003
msgid ""
"The CA certificates bundle to use for SSL connections. If this is set to a "
"non-empty value, this will [i]override[/i] Godot's default [url=https://"
@@ -45035,33 +45111,33 @@ msgid ""
"If in doubt, leave this setting empty."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1002
+#: doc/classes/ProjectSettings.xml:1007
msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1005
+#: doc/classes/ProjectSettings.xml:1010
msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1008
+#: doc/classes/ProjectSettings.xml:1013
msgid ""
"Size of the hash table used for the broad-phase 2D hash grid algorithm.\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1012
+#: doc/classes/ProjectSettings.xml:1017
msgid ""
"Cell size used for the broad-phase 2D hash grid algorithm (in pixels).\n"
"[b]Note:[/b] Not used if [member ProjectSettings.physics/2d/use_bvh] is "
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1016
+#: doc/classes/ProjectSettings.xml:1021
msgid ""
"The default angular damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45074,7 +45150,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1020
+#: doc/classes/ProjectSettings.xml:1025
msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45086,7 +45162,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1028
+#: doc/classes/ProjectSettings.xml:1033
msgid ""
"The default gravity direction in 2D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45098,7 +45174,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1036
+#: doc/classes/ProjectSettings.xml:1041
msgid ""
"The default linear damp in 2D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45111,7 +45187,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1040
+#: doc/classes/ProjectSettings.xml:1045
msgid ""
"Threshold defining the surface size that constitutes a large object with "
"regard to cells in the broad-phase 2D hash grid algorithm.\n"
@@ -45119,28 +45195,28 @@ msgid ""
"enabled."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1044
+#: doc/classes/ProjectSettings.xml:1049
msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics\" are the same, as there is currently no "
"alternative 2D physics server implemented."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1048
+#: doc/classes/ProjectSettings.xml:1053
msgid ""
"Threshold angular velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1051
+#: doc/classes/ProjectSettings.xml:1056
msgid ""
"Threshold linear velocity under which a 2D physics body will be considered "
"inactive. See [constant Physics2DServer."
"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1054
+#: doc/classes/ProjectSettings.xml:1059
msgid ""
"Sets whether physics is run on the main thread or a separate one. Running "
"the server on a thread increases performance, but restricts API access to "
@@ -45150,25 +45226,25 @@ msgid ""
"give you extra performance and no regressions when using it."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1058
+#: doc/classes/ProjectSettings.xml:1063
msgid ""
"Time (in seconds) of inactivity before which a 2D physics body will put to "
"sleep. See [constant Physics2DServer.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1061
+#: doc/classes/ProjectSettings.xml:1066
msgid ""
"Enables the use of bounding volume hierarchy instead of hash grid for 2D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1064
+#: doc/classes/ProjectSettings.xml:1069
msgid ""
"Sets whether the 3D physics world will be created with support for "
"[SoftBody] physics. Only applies to the Bullet physics engine."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1067
+#: doc/classes/ProjectSettings.xml:1072
msgid ""
"The default angular damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45181,7 +45257,7 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1071
+#: doc/classes/ProjectSettings.xml:1076
msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45193,7 +45269,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1079
+#: doc/classes/ProjectSettings.xml:1084
msgid ""
"The default gravity direction in 3D.\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
@@ -45205,7 +45281,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/ProjectSettings.xml:1087
+#: doc/classes/ProjectSettings.xml:1092
msgid ""
"The default linear damp in 3D.\n"
"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. "
@@ -45218,13 +45294,13 @@ msgid ""
"stop in one iteration."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1091
+#: doc/classes/ProjectSettings.xml:1096
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for 3D "
"physics spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1094
+#: doc/classes/ProjectSettings.xml:1099
msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" is currently the [url=https://bulletphysics.org]Bullet[/url] "
@@ -45232,11 +45308,11 @@ msgid ""
"alternative."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1098
+#: doc/classes/ProjectSettings.xml:1103
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1101
+#: doc/classes/ProjectSettings.xml:1106
msgid ""
"If enabled, 2D and 3D physics picking behaves this way in relation to "
"pause:\n"
@@ -45250,7 +45326,7 @@ msgid ""
"that queue on resume, against the state of the 2D/3D world at that point."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1107
+#: doc/classes/ProjectSettings.xml:1112
msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run.\n"
@@ -45259,7 +45335,7 @@ msgid ""
"instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1111
+#: doc/classes/ProjectSettings.xml:1116
msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
@@ -45275,7 +45351,7 @@ msgid ""
"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1116
+#: doc/classes/ProjectSettings.xml:1121
msgid ""
"[b]Experimental.[/b] Calls [code]glBufferData[/code] with NULL data prior to "
"uploading batching data. This may not be necessary but can be used for "
@@ -45285,7 +45361,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1120
+#: doc/classes/ProjectSettings.xml:1125
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for batching buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45295,7 +45371,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1124
+#: doc/classes/ProjectSettings.xml:1129
msgid ""
"[b]Experimental.[/b] If set to on, this applies buffer orphaning - "
"[code]glBufferData[/code] is called with NULL data and the full buffer size "
@@ -45306,7 +45382,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1128
+#: doc/classes/ProjectSettings.xml:1133
msgid ""
"[b]Experimental.[/b] If set to on, uses the [code]GL_STREAM_DRAW[/code] flag "
"for legacy buffer uploads. If off, uses the [code]GL_DYNAMIC_DRAW[/code] "
@@ -45316,7 +45392,7 @@ msgid ""
"adversely affect performance for end users."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1132
+#: doc/classes/ProjectSettings.xml:1137
msgid ""
"Choose between fixed mode where corner scalings are preserved matching the "
"artwork, and scaling mode.\n"
@@ -45324,7 +45400,7 @@ msgid ""
"is off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1136
+#: doc/classes/ProjectSettings.xml:1141
msgid ""
"Some NVIDIA GPU drivers have a bug which produces flickering issues for the "
"[code]draw_rect[/code] method, especially as used in [TileMap]. Refer to "
@@ -45335,7 +45411,7 @@ msgid ""
"rendering, but only on desktop platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1140
+#: doc/classes/ProjectSettings.xml:1145
msgid ""
"If [code]true[/code], performs 2D skinning on the CPU rather than the GPU. "
"This provides greater compatibility with a wide range of hardware, and also "
@@ -45350,7 +45426,7 @@ msgid ""
"skinning."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1146
+#: doc/classes/ProjectSettings.xml:1151
msgid ""
"If [code]true[/code], forces snapping of vertices to pixels in 2D rendering. "
"May help in some pixel art styles.\n"
@@ -45359,13 +45435,13 @@ msgid ""
"uv_contract] to prevent artifacts."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1151
+#: doc/classes/ProjectSettings.xml:1156
msgid ""
"When batching is on, this regularly prints a frame diagnosis log. Note that "
"this will degrade performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1154
+#: doc/classes/ProjectSettings.xml:1159
msgid ""
"[b]Experimental.[/b] For regression testing against the old renderer. If "
"this is switched on, and [code]use_batching[/code] is set, the renderer will "
@@ -45374,7 +45450,7 @@ msgid ""
"Performance will be degraded."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1157
+#: doc/classes/ProjectSettings.xml:1162
msgid ""
"Lights have the potential to prevent joining items, and break many of the "
"performance benefits of batching. This setting enables some complex logic to "
@@ -45384,7 +45460,7 @@ msgid ""
"returns."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1160
+#: doc/classes/ProjectSettings.xml:1165
msgid ""
"Sets the proportion of the total screen area (in pixels) that must be saved "
"by a scissor operation in order to activate light scissoring. This can "
@@ -45396,7 +45472,7 @@ msgid ""
"a lot of lighting."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1163
+#: doc/classes/ProjectSettings.xml:1168
msgid ""
"Enabling this setting uses the legacy method to draw batches containing only "
"one rect. The legacy method is faster (approx twice as fast), but can cause "
@@ -45406,24 +45482,24 @@ msgid ""
"this method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1166
+#: doc/classes/ProjectSettings.xml:1171
msgid ""
"Turns 2D batching on and off. Batching increases performance by reducing the "
"amount of graphics API drawcalls."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1169
+#: doc/classes/ProjectSettings.xml:1174
msgid "Switches on 2D batching within the editor."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1172
+#: doc/classes/ProjectSettings.xml:1177
msgid ""
"Size of buffer reserved for batched vertices. Larger size enables larger "
"batches, but there are diminishing returns for the memory used. This should "
"only have a minor effect on performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1175
+#: doc/classes/ProjectSettings.xml:1180
msgid ""
"Including color in the vertex format has a cost, however, not including "
"color prevents batching across color changes. This threshold determines the "
@@ -45432,7 +45508,7 @@ msgid ""
"0 will always use colored vertices, 1 will never use colored vertices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1178
+#: doc/classes/ProjectSettings.xml:1183
msgid ""
"In certain circumstances, the batcher can reorder items in order to better "
"join them. This may result in better performance. An overlap test is needed "
@@ -45440,7 +45516,7 @@ msgid ""
"returns. If you are getting no benefit, setting this to 0 will switch it off."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1181
+#: doc/classes/ProjectSettings.xml:1186
msgid ""
"Sets the number of commands to lookahead to determine whether to batch "
"render items. A value of 1 can join items consisting of single commands, 0 "
@@ -45449,7 +45525,7 @@ msgid ""
"recommended."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1184
+#: doc/classes/ProjectSettings.xml:1189
msgid ""
"On some platforms (especially mobile), precision issues in shaders can lead "
"to reading 1 texel outside of bounds, particularly where rects are scaled. "
@@ -45459,7 +45535,7 @@ msgid ""
"texels."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1188
+#: doc/classes/ProjectSettings.xml:1193
msgid ""
"The amount of UV contraction. This figure is divided by 1000000, and is a "
"proportion of the total texture dimensions, where the width and height are "
@@ -45467,31 +45543,31 @@ msgid ""
"Use the default unless correcting for a problem on particular hardware."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1192
+#: doc/classes/ProjectSettings.xml:1197
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_HIGH]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1195
+#: doc/classes/ProjectSettings.xml:1200
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_LOW]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1198
+#: doc/classes/ProjectSettings.xml:1203
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_MEDIUM]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1201
+#: doc/classes/ProjectSettings.xml:1206
msgid ""
"Amount of light samples taken when using [constant BakedLightmap."
"BAKE_QUALITY_ULTRA]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1204
+#: doc/classes/ProjectSettings.xml:1209
msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
@@ -45499,7 +45575,7 @@ msgid ""
"programmatically, use [method VisualServer.set_default_clear_color]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1207
+#: doc/classes/ProjectSettings.xml:1212
msgid ""
"[Environment] that will be used as a fallback environment in case a scene "
"does not specify its own environment. The default environment is loaded in "
@@ -45509,14 +45585,14 @@ msgid ""
"here."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1210
+#: doc/classes/ProjectSettings.xml:1215
msgid ""
"The use of half-float vertex compression may be producing rendering errors "
"on some platforms (especially iOS). These have been seen particularly in "
"particles. Disabling half-float may resolve these problems."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1213
+#: doc/classes/ProjectSettings.xml:1218
msgid ""
"If [code]true[/code] and available on the target device, enables high "
"floating point precision for all shader computations in GLES2.\n"
@@ -45524,31 +45600,31 @@ msgid ""
"devices and is often not available at all. Use with caution."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1217
+#: doc/classes/ProjectSettings.xml:1222
msgid ""
"Max buffer size for blend shapes. Any blend shape bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1220
+#: doc/classes/ProjectSettings.xml:1225
msgid ""
"Max buffer size for drawing polygons. Any polygon bigger than this will not "
"work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1223
+#: doc/classes/ProjectSettings.xml:1228
msgid ""
"Max index buffer size for drawing polygons. Any polygon bigger than this "
"will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1226
+#: doc/classes/ProjectSettings.xml:1231
msgid ""
"Max buffer size for drawing immediate objects (ImmediateGeometry nodes). "
"Nodes using more than this size will not work."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1229
+#: doc/classes/ProjectSettings.xml:1234
msgid ""
"Max number of lights renderable per object. This is further limited by "
"hardware support. Most devices only support 409 lights, while many devices "
@@ -45556,7 +45632,7 @@ msgid ""
"memory usage and may decrease shader compile times."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1232
+#: doc/classes/ProjectSettings.xml:1237
msgid ""
"Max amount of elements renderable in a frame. If more elements than this are "
"visible per frame, they will not be drawn. Keep in mind elements refer to "
@@ -45566,7 +45642,7 @@ msgid ""
"much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1235
+#: doc/classes/ProjectSettings.xml:1240
msgid ""
"Max number of lights renderable in a frame. If more lights than this number "
"are used, they will be ignored. Setting this low will slightly reduce memory "
@@ -45575,7 +45651,7 @@ msgid ""
"possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1238
+#: doc/classes/ProjectSettings.xml:1243
msgid ""
"Max number of reflection probes renderable in a frame. If more reflection "
"probes than this number are used, they will be ignored. Setting this low "
@@ -45584,20 +45660,20 @@ msgid ""
"consider lowering as much as possible on web export."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1241
+#: doc/classes/ProjectSettings.xml:1246
msgid ""
"Shaders have a time variable that constantly increases. At some point, it "
"needs to be rolled back to zero to avoid precision errors on shader "
"animations. This setting specifies when (in seconds)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1244
+#: doc/classes/ProjectSettings.xml:1249
msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1247
+#: doc/classes/ProjectSettings.xml:1252
msgid ""
"The default compression level for lossless WebP. Higher levels result in "
"smaller files at the cost of compression speed. Decompression speed is "
@@ -45606,7 +45682,7 @@ msgid ""
"savings."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1250
+#: doc/classes/ProjectSettings.xml:1255
msgid ""
"On import, mesh vertex data will be split into two streams within a single "
"vertex buffer, one for position data and the other for interleaved "
@@ -45614,7 +45690,7 @@ msgid ""
"Requires manual reimport of meshes after toggling."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1253
+#: doc/classes/ProjectSettings.xml:1258
msgid ""
"Determines the maximum number of sphere occluders that will be used at any "
"one time.\n"
@@ -45623,7 +45699,7 @@ msgid ""
"to give the best overall performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1257
+#: doc/classes/ProjectSettings.xml:1262
msgid ""
"The default convention is for portal normals to point outward (face outward) "
"from the source room.\n"
@@ -45633,20 +45709,20 @@ msgid ""
"convertion to [Portal] nodes."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1262
+#: doc/classes/ProjectSettings.xml:1267
msgid ""
"Show conversion logs.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1266
+#: doc/classes/ProjectSettings.xml:1271
msgid ""
"If [code]true[/code], gameplay callbacks will be sent as [code]signals[/"
"code]. If [code]false[/code], they will be sent as [code]notifications[/"
"code]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1269
+#: doc/classes/ProjectSettings.xml:1274
msgid ""
"If enabled, while merging meshes, the system will also attempt to remove "
"[Spatial] nodes that no longer have any children.\n"
@@ -45655,13 +45731,13 @@ msgid ""
"for markers or some other purpose."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1273
+#: doc/classes/ProjectSettings.xml:1278
msgid ""
"Show logs during PVS generation.\n"
"[b]Note:[/b] This will automatically be disabled in exports."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1277
+#: doc/classes/ProjectSettings.xml:1282
msgid ""
"Uses a simplified method of generating PVS (potentially visible set) data. "
"The results may not be accurate where more than one portal join adjacent "
@@ -45671,46 +45747,46 @@ msgid ""
"default method."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1281
+#: doc/classes/ProjectSettings.xml:1286
msgid ""
"If [code]true[/code], allocates the main framebuffer with high dynamic "
"range. High dynamic range allows the use of [Color] values greater than 1.\n"
"[b]Note:[/b] Only available on the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1285
+#: doc/classes/ProjectSettings.xml:1290
msgid ""
"Lower-end override for [member rendering/quality/depth/hdr] on mobile "
"devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1288
+#: doc/classes/ProjectSettings.xml:1293
msgid ""
"Disables depth pre-pass for some GPU vendors (usually mobile), as their "
"architecture already does this."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1291
+#: doc/classes/ProjectSettings.xml:1296
msgid ""
"If [code]true[/code], performs a previous depth pass before rendering "
"materials. This increases performance in scenes with high overdraw, when "
"complex materials and lighting are used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1294
+#: doc/classes/ProjectSettings.xml:1299
msgid ""
"The directional shadow's size in pixels. Higher values will result in "
"sharper shadows, at the cost of performance. The value will be rounded up to "
"the nearest power of 2."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1297
+#: doc/classes/ProjectSettings.xml:1302
msgid ""
"Lower-end override for [member rendering/quality/directional_shadow/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1300
+#: doc/classes/ProjectSettings.xml:1305
msgid ""
"The video driver to use (\"GLES2\" or \"GLES3\").\n"
"[b]Note:[/b] The backend in use can be overridden at runtime via the [code]--"
@@ -45720,7 +45796,7 @@ msgid ""
"updated, so use [method OS.get_current_video_driver] to query it at run-time."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1304
+#: doc/classes/ProjectSettings.xml:1309
msgid ""
"If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 "
"driver is not supported.\n"
@@ -45732,7 +45808,7 @@ msgid ""
"data pack's size."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1308
+#: doc/classes/ProjectSettings.xml:1313
msgid ""
"Maximum anisotropic filter level used for textures with anisotropy enabled. "
"Higher values will result in sharper textures when viewed from oblique "
@@ -45740,7 +45816,7 @@ msgid ""
"4, 8, 16)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1311
+#: doc/classes/ProjectSettings.xml:1316
msgid ""
"Sets the number of MSAA samples to use. MSAA is used to reduce aliasing "
"around the edges of polygons. A higher MSAA value results in smoother edges "
@@ -45748,7 +45824,7 @@ msgid ""
"[b]Note:[/b] MSAA is not available on HTML5 export using the GLES2 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1315
+#: doc/classes/ProjectSettings.xml:1320
msgid ""
"If set to a value greater than [code]0.0[/code], contrast-adaptive "
"sharpening will be applied to the 3D viewport. This has a low performance "
@@ -45757,7 +45833,7 @@ msgid ""
"[member rendering/quality/filters/use_fxaa]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1318
+#: doc/classes/ProjectSettings.xml:1323
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -45771,7 +45847,7 @@ msgid ""
"disabled when targeting mobile platforms."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1323
+#: doc/classes/ProjectSettings.xml:1328
msgid ""
"Enables FXAA in the root Viewport. FXAA is a popular screen-space "
"antialiasing method, which is fast but will make the image look blurry, "
@@ -45781,7 +45857,7 @@ msgid ""
"quality/filters/sharpen_intensity])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1326
+#: doc/classes/ProjectSettings.xml:1331
msgid ""
"If [code]true[/code], uses nearest-neighbor mipmap filtering when using "
"mipmaps (also called \"bilinear filtering\"), which will result in visible "
@@ -45790,7 +45866,7 @@ msgid ""
"mipmap filtering (also called \"trilinear filtering\") is used."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1329
+#: doc/classes/ProjectSettings.xml:1334
msgid ""
"Strategy used for framebuffer allocation. The simpler it is, the less "
"resources it uses (but the less features it supports). If set to \"2D "
@@ -45800,54 +45876,54 @@ msgid ""
"be available in the [Environment]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1332
+#: doc/classes/ProjectSettings.xml:1337
msgid ""
"Lower-end override for [member rendering/quality/intended_usage/"
"framebuffer_allocation] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1335
+#: doc/classes/ProjectSettings.xml:1340
msgid ""
"Enable usage of bicubic sampling in baked lightmaps. This results in "
"smoother looking lighting at the expense of more bandwidth usage. On GLES2, "
"changes to this setting will only be applied upon restarting the application."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1338
+#: doc/classes/ProjectSettings.xml:1343
msgid ""
"Lower-end override for [member rendering/quality/lightmapping/"
"use_bicubic_sampling] on mobile devices, in order to reduce bandwidth usage."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1341
+#: doc/classes/ProjectSettings.xml:1346
msgid ""
"Size of the atlas used by reflection probes. A larger size can result in "
"higher visual quality, while a smaller size will be faster and take up less "
"memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1344
+#: doc/classes/ProjectSettings.xml:1349
msgid ""
"Number of subdivisions to use for the reflection atlas. A higher number "
"lowers the quality of each atlas, but allows you to use more."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1347
+#: doc/classes/ProjectSettings.xml:1352
msgid ""
"If [code]true[/code], uses a high amount of samples to create blurred "
"variants of reflection probes and panorama backgrounds (sky). Those blurred "
"variants are used by rough materials."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1350
+#: doc/classes/ProjectSettings.xml:1355
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"high_quality_ggx] on mobile devices, due to performance concerns or driver "
"support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1353
+#: doc/classes/ProjectSettings.xml:1358
msgid ""
"Limits the size of the irradiance map which is normally determined by "
"[member Sky.radiance_size]. A higher size results in a higher quality "
@@ -45858,61 +45934,72 @@ msgid ""
"maps well and may crash if this is set too high."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1357
+#: doc/classes/ProjectSettings.xml:1362
msgid ""
"If [code]true[/code], uses texture arrays instead of mipmaps for reflection "
"probes and panorama backgrounds (sky). This reduces jitter noise on "
"reflections, but costs more performance and memory."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1360
+#: doc/classes/ProjectSettings.xml:1365
msgid ""
"Lower-end override for [member rendering/quality/reflections/"
"texture_array_reflections] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1363
+#: doc/classes/ProjectSettings.xml:1368
msgid ""
"If [code]true[/code], uses faster but lower-quality Blinn model to generate "
"blurred reflections instead of the GGX model."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1366
+#: doc/classes/ProjectSettings.xml:1371
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_blinn_over_ggx] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1369
+#: doc/classes/ProjectSettings.xml:1374
msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1372
+#: doc/classes/ProjectSettings.xml:1377
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_lambert_over_burley] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1375
+#: doc/classes/ProjectSettings.xml:1380
msgid ""
"If [code]true[/code], forces vertex shading for all rendering. This can "
"increase performance a lot, but also reduces quality immensely. Can be used "
"to optimize performance on low-end mobile devices."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1378
+#: doc/classes/ProjectSettings.xml:1383
msgid ""
"Lower-end override for [member rendering/quality/shading/"
"force_vertex_shading] on mobile devices, due to performance concerns or "
"driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1381
+#: doc/classes/ProjectSettings.xml:1386
+msgid ""
+"If [code]true[/code], enables new physical light attenuation for "
+"[OmniLight]s and [SpotLight]s. This results in more realistic lighting "
+"appearance with a very small performance cost. When physical light "
+"attenuation is enabled, lights will appear to be darker as a result of the "
+"new attenuation formula. This can be compensated by adjusting the lights' "
+"energy or attenuation values.\n"
+"Changes to this setting will only be applied upon restarting the application."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml:1390
msgid ""
"Size for cubemap into which the shadow is rendered before being copied into "
"the shadow atlas. A higher number can result in higher resolution shadows "
@@ -45921,26 +46008,26 @@ msgid ""
"size] will not result in a perceptible increase in visual quality."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1384 doc/classes/ProjectSettings.xml:1387
-#: doc/classes/ProjectSettings.xml:1390 doc/classes/ProjectSettings.xml:1393
+#: doc/classes/ProjectSettings.xml:1393 doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1399 doc/classes/ProjectSettings.xml:1402
msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1396
+#: doc/classes/ProjectSettings.xml:1405
msgid ""
"Size for shadow atlas (used for OmniLights and SpotLights). See "
"documentation."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1399
+#: doc/classes/ProjectSettings.xml:1408
msgid ""
"Lower-end override for [member rendering/quality/shadow_atlas/size] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1402
+#: doc/classes/ProjectSettings.xml:1411
msgid ""
"Shadow filter mode. Higher-quality settings result in smoother shadows that "
"flicker less when moving. \"Disabled\" is the fastest option, but also has "
@@ -45951,20 +46038,20 @@ msgid ""
"shadow appearance similar to the one produced by the GLES3 backend."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1406
+#: doc/classes/ProjectSettings.xml:1415
msgid ""
"Lower-end override for [member rendering/quality/shadows/filter_mode] on "
"mobile devices, due to performance concerns or driver support."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1409
+#: doc/classes/ProjectSettings.xml:1418
msgid ""
"Forces [MeshInstance] to always perform skinning on the CPU (applies to both "
"GLES2 and GLES3).\n"
"See also [member rendering/quality/skinning/software_skinning_fallback]."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1413
+#: doc/classes/ProjectSettings.xml:1422
msgid ""
"Allows [MeshInstance] to perform skinning on the CPU when the hardware "
"doesn't support the default GPU skinning process with GLES2.\n"
@@ -45976,52 +46063,52 @@ msgid ""
"already applied to the modelview matrix."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1419
+#: doc/classes/ProjectSettings.xml:1428
msgid ""
"The rendering octree balance can be changed to favor smaller ([code]0[/"
"code]), or larger ([code]1[/code]) branches.\n"
"Larger branches can increase performance significantly in some projects."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1423
+#: doc/classes/ProjectSettings.xml:1432
msgid ""
"Enables the use of bounding volume hierarchy instead of octree for rendering "
"spatial partitioning. This may give better performance."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1426
+#: doc/classes/ProjectSettings.xml:1435
msgid ""
"Improves quality of subsurface scattering, but cost significantly increases."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1429
+#: doc/classes/ProjectSettings.xml:1438
msgid "Quality setting for subsurface scattering (samples taken)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1432
+#: doc/classes/ProjectSettings.xml:1441
msgid "Max radius used for subsurface scattering samples."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1435
+#: doc/classes/ProjectSettings.xml:1444
msgid ""
"Weight subsurface scattering samples. Helps to avoid reading samples from "
"unrelated parts of the screen."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1438
+#: doc/classes/ProjectSettings.xml:1447
msgid ""
"Use high-quality voxel cone tracing. This results in better-looking "
"reflections, but is much more expensive on the GPU."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1441
+#: doc/classes/ProjectSettings.xml:1450
msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1444
+#: doc/classes/ProjectSettings.xml:1453
msgid ""
"If [code]true[/code], a thread safe version of BVH (bounding volume "
"hierarchy) will be used in rendering and Godot physics.\n"
@@ -46029,7 +46116,7 @@ msgid ""
"incorrect object visibility)."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1448
+#: doc/classes/ProjectSettings.xml:1457
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the BPTC algorithm. This texture compression algorithm is "
@@ -46038,10 +46125,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1452
+#: doc/classes/ProjectSettings.xml:1461
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression algorithm. This algorithm "
@@ -46049,10 +46137,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1456
+#: doc/classes/ProjectSettings.xml:1465
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the Ericsson Texture Compression 2 algorithm. This texture "
@@ -46060,10 +46149,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1460
+#: doc/classes/ProjectSettings.xml:1469
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the PowerVR Texture Compression algorithm. This texture "
@@ -46071,10 +46161,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1464
+#: doc/classes/ProjectSettings.xml:1473
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm. This algorithm is only "
@@ -46082,10 +46173,11 @@ msgid ""
"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
"already imported before. To make this setting apply to textures that were "
"already imported, exit the editor, remove the [code].import/[/code] folder "
-"located inside the project folder then restart the editor."
+"located inside the project folder then restart the editor (see [member "
+"application/config/project_data_dir_name])."
msgstr ""
-#: doc/classes/ProjectSettings.xml:1468
+#: doc/classes/ProjectSettings.xml:1477
msgid ""
"Cell size used for the 2D hash grid that [VisibilityNotifier2D] uses (in "
"pixels)."
@@ -46906,23 +46998,27 @@ msgid ""
"and then leave them.\n"
"[b]Note:[/b] By default Godot will only render 16 reflection probes. If you "
"need more, increase the number of atlas subdivisions. This setting can be "
-"found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv]."
+"found in [member ProjectSettings.rendering/quality/reflections/"
+"atlas_subdiv].\n"
+"[b]Note:[/b] The GLES2 backend will only display two reflection probes at "
+"the same time for a single mesh. If possible, split up large meshes that "
+"span over multiple reflection probes into smaller ones."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:12
+#: doc/classes/ReflectionProbe.xml:13
#, fuzzy
msgid "https://docs.godotengine.org/en/3.4/tutorials/3d/reflection_probes.html"
msgstr ""
"https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html"
-#: doc/classes/ReflectionProbe.xml:18
+#: doc/classes/ReflectionProbe.xml:19
msgid ""
"If [code]true[/code], enables box projection. This makes reflections look "
"more correct in rectangle-shaped rooms by offsetting the reflection center "
"depending on the camera's location."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:21
+#: doc/classes/ReflectionProbe.xml:22
msgid ""
"Sets the cull mask which determines what objects are drawn by this probe. "
"Every [VisualInstance] with a layer included in this cull mask will be "
@@ -46931,75 +47027,75 @@ msgid ""
"rendering cost."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:24
+#: doc/classes/ReflectionProbe.xml:25
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection probe slower to render; you may want to disable this if using "
"the [constant UPDATE_ALWAYS] [member update_mode]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:27
+#: doc/classes/ReflectionProbe.xml:28
msgid ""
"The size of the reflection probe. The larger the extents the more space "
"covered by the probe which will lower the perceived resolution. It is best "
"to keep the extents only as large as you need them."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:30
+#: doc/classes/ReflectionProbe.xml:31
msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:33
+#: doc/classes/ReflectionProbe.xml:34
msgid ""
"Sets the ambient light color to be used when this probe is set to [member "
"interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:36
+#: doc/classes/ReflectionProbe.xml:37
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to [member interior_enable]. Useful "
"so that ambient light matches the color of the room."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:39
+#: doc/classes/ReflectionProbe.xml:40
msgid ""
"Sets the energy multiplier for this reflection probe's ambient light "
"contribution when set to [member interior_enable]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:42
+#: doc/classes/ReflectionProbe.xml:43
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Ambient "
"lighting is then controlled by the [code]interior_ambient_*[/code] "
"properties."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:45
+#: doc/classes/ReflectionProbe.xml:46
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:48
+#: doc/classes/ReflectionProbe.xml:49
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:51
+#: doc/classes/ReflectionProbe.xml:52
msgid ""
"Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or "
"[constant UPDATE_ALWAYS]."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:56
+#: doc/classes/ReflectionProbe.xml:57
msgid "Update the probe once on the next frame."
msgstr ""
-#: doc/classes/ReflectionProbe.xml:59
+#: doc/classes/ReflectionProbe.xml:60
msgid ""
"Update the probe every frame. This is needed when you want to capture "
"dynamic objects. However, it results in an increased render time. Use "
@@ -47878,121 +47974,125 @@ msgid ""
msgstr ""
#: doc/classes/RichTextLabel.xml:72
-msgid "Returns the vertical scrollbar."
+msgid ""
+"Returns the vertical scrollbar.\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/RichTextLabel.xml:78
+#: doc/classes/RichTextLabel.xml:79
msgid "Returns the number of visible lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:85
+#: doc/classes/RichTextLabel.xml:86
msgid ""
"Installs a custom effect. [code]effect[/code] should be a valid "
"[RichTextEffect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:91
+#: doc/classes/RichTextLabel.xml:92
msgid "Adds a newline tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:98
+#: doc/classes/RichTextLabel.xml:99
msgid ""
"The assignment version of [method append_bbcode]. Clears the tag stack and "
"inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] "
"successfully."
msgstr ""
-#: doc/classes/RichTextLabel.xml:105
+#: doc/classes/RichTextLabel.xml:106
msgid "Parses BBCode parameter [code]expressions[/code] into a dictionary."
msgstr ""
-#: doc/classes/RichTextLabel.xml:111
+#: doc/classes/RichTextLabel.xml:112
msgid ""
"Terminates the current tag. Use after [code]push_*[/code] methods to close "
"BBCodes manually. Does not need to follow [code]add_*[/code] methods."
msgstr ""
-#: doc/classes/RichTextLabel.xml:118
+#: doc/classes/RichTextLabel.xml:119
msgid ""
"Adds an [code][align][/code] tag based on the given [code]align[/code] "
"value. See [enum Align] for possible values."
msgstr ""
-#: doc/classes/RichTextLabel.xml:124
+#: doc/classes/RichTextLabel.xml:125
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:130
+#: doc/classes/RichTextLabel.xml:131
msgid ""
"Adds a [code][font][/code] tag with a bold italics font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:136
+#: doc/classes/RichTextLabel.xml:137
msgid ""
"Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code]"
"[table][/code] tag. See [method push_table] for details."
msgstr ""
-#: doc/classes/RichTextLabel.xml:143
+#: doc/classes/RichTextLabel.xml:144
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:150
+#: doc/classes/RichTextLabel.xml:151
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
msgstr ""
-#: doc/classes/RichTextLabel.xml:157
+#: doc/classes/RichTextLabel.xml:158
msgid ""
"Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/"
"code] by current [member tab_size] to determine new margin length."
msgstr ""
-#: doc/classes/RichTextLabel.xml:163
+#: doc/classes/RichTextLabel.xml:164
msgid ""
"Adds a [code][font][/code] tag with a italics font to the tag stack. This is "
"the same as adding a [code][i][/code] tag if not currently in a [code][b][/"
"code] tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:170
+#: doc/classes/RichTextLabel.xml:171
msgid ""
"Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes "
"[code][ol][/code] or [code][ul][/code], but supports more list types. Not "
"fully implemented!"
msgstr ""
-#: doc/classes/RichTextLabel.xml:177
+#: doc/classes/RichTextLabel.xml:178
msgid ""
"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
msgstr ""
-#: doc/classes/RichTextLabel.xml:183
+#: doc/classes/RichTextLabel.xml:184
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:189
+#: doc/classes/RichTextLabel.xml:190
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:195
+#: doc/classes/RichTextLabel.xml:196
msgid "Adds a [code][s][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:202
+#: doc/classes/RichTextLabel.xml:203
msgid "Adds a [code][table=columns][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:208
+#: doc/classes/RichTextLabel.xml:209
msgid "Adds a [code][u][/code] tag to the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:215
+#: doc/classes/RichTextLabel.xml:216
msgid ""
"Removes a line of content from the label. Returns [code]true[/code] if the "
"line exists.\n"
@@ -48000,11 +48100,11 @@ msgid ""
"take values in the interval [code][0, get_line_count() - 1][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:223
+#: doc/classes/RichTextLabel.xml:224
msgid "Scrolls the window's top line to match [code]line[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:232
+#: doc/classes/RichTextLabel.xml:233
msgid ""
"Edits the selected column's expansion options. If [code]expand[/code] is "
"[code]true[/code], the column expands in proportion to its expansion ratio "
@@ -48015,7 +48115,7 @@ msgid ""
"to the total ratio."
msgstr ""
-#: doc/classes/RichTextLabel.xml:240
+#: doc/classes/RichTextLabel.xml:241
msgid ""
"If [code]true[/code], the label uses BBCode formatting.\n"
"[b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method "
@@ -48023,7 +48123,7 @@ msgid ""
"append_bbcode] to preserve BBCode formatting."
msgstr ""
-#: doc/classes/RichTextLabel.xml:244
+#: doc/classes/RichTextLabel.xml:245
msgid ""
"The label's text in BBCode format. Is not representative of manual "
"modifications to the internal tag stack. Erases changes made by other "
@@ -48035,14 +48135,14 @@ msgid ""
"a tag that was opened in an earlier method call."
msgstr ""
-#: doc/classes/RichTextLabel.xml:248
+#: doc/classes/RichTextLabel.xml:249
msgid ""
"The currently installed custom effects. This is an array of "
"[RichTextEffect]s.\n"
"To add a custom effect, it's more convenient to use [method install_effect]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:252
+#: doc/classes/RichTextLabel.xml:253
msgid ""
"If [code]true[/code], the label's height will be automatically updated to "
"fit its content.\n"
@@ -48051,17 +48151,17 @@ msgid ""
"be removed in future versions."
msgstr ""
-#: doc/classes/RichTextLabel.xml:256
+#: doc/classes/RichTextLabel.xml:257
msgid ""
"If [code]true[/code], the label underlines meta tags such as [code][url]"
"{text}[/url][/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:259
+#: doc/classes/RichTextLabel.xml:260
msgid "If [code]true[/code], the label uses the custom font color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:262
+#: doc/classes/RichTextLabel.xml:263
msgid ""
"The range of characters to display, as a [float] between 0.0 and 1.0. When "
"assigned an out of range value, it's the same as assigning 1.0.\n"
@@ -48069,36 +48169,36 @@ msgid ""
"on current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:267
+#: doc/classes/RichTextLabel.xml:268
msgid ""
"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/"
"code] does not block scrolling completely. See [method scroll_to_line]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:270
+#: doc/classes/RichTextLabel.xml:271
msgid ""
"If [code]true[/code], the window scrolls down to display new content "
"automatically."
msgstr ""
-#: doc/classes/RichTextLabel.xml:273
+#: doc/classes/RichTextLabel.xml:274
msgid "If [code]true[/code], the label allows text selection."
msgstr ""
-#: doc/classes/RichTextLabel.xml:276
+#: doc/classes/RichTextLabel.xml:277
msgid ""
"The number of spaces associated with a single tab length. Does not affect "
"[code]\\t[/code] in text tags, only indent tags."
msgstr ""
-#: doc/classes/RichTextLabel.xml:279
+#: doc/classes/RichTextLabel.xml:280
msgid ""
"The raw text of the label.\n"
"When set, clears the tag stack and adds a raw text tag to the top of it. "
"Does not parse BBCodes. Does not modify [member bbcode_text]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:283
+#: doc/classes/RichTextLabel.xml:284
msgid ""
"The restricted number of characters to display in the label. If [code]-1[/"
"code], all characters will be displayed.\n"
@@ -48106,7 +48206,7 @@ msgid ""
"current [method get_total_character_count]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:291
+#: doc/classes/RichTextLabel.xml:292
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -48115,111 +48215,111 @@ msgid ""
"insert the data into the tag stack."
msgstr ""
-#: doc/classes/RichTextLabel.xml:297
+#: doc/classes/RichTextLabel.xml:298
msgid "Triggers when the mouse exits a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:303
+#: doc/classes/RichTextLabel.xml:304
msgid "Triggers when the mouse enters a meta tag."
msgstr ""
-#: doc/classes/RichTextLabel.xml:309
+#: doc/classes/RichTextLabel.xml:310
msgid "Makes text left aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:312
+#: doc/classes/RichTextLabel.xml:313
msgid "Makes text centered."
msgstr ""
-#: doc/classes/RichTextLabel.xml:315
+#: doc/classes/RichTextLabel.xml:316
msgid "Makes text right aligned."
msgstr ""
-#: doc/classes/RichTextLabel.xml:318
+#: doc/classes/RichTextLabel.xml:319
msgid "Makes text fill width."
msgstr ""
-#: doc/classes/RichTextLabel.xml:321
+#: doc/classes/RichTextLabel.xml:322
msgid "Each list item has a number marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:324
+#: doc/classes/RichTextLabel.xml:325
msgid "Each list item has a letter marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:327
+#: doc/classes/RichTextLabel.xml:328
msgid "Each list item has a filled circle marker."
msgstr ""
-#: doc/classes/RichTextLabel.xml:370
+#: doc/classes/RichTextLabel.xml:371
msgid "The font used for bold text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:373
+#: doc/classes/RichTextLabel.xml:374
msgid "The font used for bold italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:376
+#: doc/classes/RichTextLabel.xml:377
msgid "The default text color."
msgstr ""
-#: doc/classes/RichTextLabel.xml:379
+#: doc/classes/RichTextLabel.xml:380
msgid "The background The background used when the [RichTextLabel] is focused."
msgstr ""
-#: doc/classes/RichTextLabel.xml:382
+#: doc/classes/RichTextLabel.xml:383
msgid ""
"The color of selected text, used when [member selection_enabled] is "
"[code]true[/code]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:385
+#: doc/classes/RichTextLabel.xml:386
msgid "The color of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:388
+#: doc/classes/RichTextLabel.xml:389
msgid "The font used for italics text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:391
+#: doc/classes/RichTextLabel.xml:392
msgid "The vertical space between lines."
msgstr ""
-#: doc/classes/RichTextLabel.xml:394
+#: doc/classes/RichTextLabel.xml:395
msgid "The font used for monospace text."
msgstr ""
-#: doc/classes/RichTextLabel.xml:397
+#: doc/classes/RichTextLabel.xml:398
msgid "The normal background for the [RichTextLabel]."
msgstr ""
-#: doc/classes/RichTextLabel.xml:400
+#: doc/classes/RichTextLabel.xml:401
msgid "The default text font."
msgstr ""
-#: doc/classes/RichTextLabel.xml:403
+#: doc/classes/RichTextLabel.xml:404
msgid "The color of the selection box."
msgstr ""
-#: doc/classes/RichTextLabel.xml:406
+#: doc/classes/RichTextLabel.xml:407
msgid ""
"Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around "
"the whole text as an outline."
msgstr ""
-#: doc/classes/RichTextLabel.xml:409
+#: doc/classes/RichTextLabel.xml:410
msgid "The horizontal offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:412
+#: doc/classes/RichTextLabel.xml:413
msgid "The vertical offset of the font's shadow."
msgstr ""
-#: doc/classes/RichTextLabel.xml:415
+#: doc/classes/RichTextLabel.xml:416
msgid "The horizontal separation of elements in a table."
msgstr ""
-#: doc/classes/RichTextLabel.xml:418
+#: doc/classes/RichTextLabel.xml:419
msgid "The vertical separation of elements in a table."
msgstr ""
@@ -48522,14 +48622,17 @@ msgid ""
"be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [GridMap]s are detected if the "
"[MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer].\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48542,15 +48645,18 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody] or [MeshLibrary]'s "
-"[CollisionObject] used by the [PhysicsServer]. [GridMap]s are detected if "
-"the Meshes have [Shape]s.\n"
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody] or "
+"[MeshLibrary]'s [CollisionObject] used by the [PhysicsServer]. [GridMap]s "
+"are detected if the Meshes have [Shape]s.\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap].\n"
-"[code]body_shape[/code] the index of the [Shape] of the other [PhysicsBody] "
-"or [GridMap] used by the [PhysicsServer].\n"
-"[code]local_shape[/code] the index of the [Shape] of this RigidBody used by "
-"the [PhysicsServer].\n"
+"[code]body_shape_index[/code] the index of the [Shape] of the other "
+"[PhysicsBody] or [GridMap] used by the [PhysicsServer]. Get the "
+"[CollisionShape] node with [code]body.shape_owner_get_owner(body_shape_index)"
+"[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape] of this RigidBody "
+"used by the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
+"shape_owner_get_owner(local_shape_index)[/code].\n"
"[b]Note:[/b] Bullet physics cannot identify the shape index when using a "
"[ConcavePolygonShape]. Don't use multiple [CollisionShape]s when using a "
"[ConcavePolygonShape] with Bullet physics if you need shape indices."
@@ -48787,14 +48893,17 @@ msgid ""
"to be set to [code]true[/code] and [member contacts_reported] to be set high "
"enough to detect all the collisions. [TileMap]s are detected if the "
"[TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:199
@@ -48804,14 +48913,17 @@ msgid ""
"contact_monitor] to be set to [code]true[/code] and [member "
"contacts_reported] to be set high enough to detect all the collisions. "
"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n"
-"[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
+"[code]body_rid[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s "
"[CollisionObject2D] used by the [Physics2DServer].\n"
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody2D] or [TileMap].\n"
-"[code]body_shape[/code] the index of the [Shape2D] of the other "
-"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer].\n"
-"[code]local_shape[/code] the index of the [Shape2D] of this RigidBody2D used "
-"by the [Physics2DServer]."
+"[code]body_shape_index[/code] the index of the [Shape2D] of the other "
+"[PhysicsBody2D] or [TileMap] used by the [Physics2DServer]. Get the "
+"[CollisionShape2D] node with [code]body."
+"shape_owner_get_owner(body_shape_index)[/code].\n"
+"[code]local_shape_index[/code] the index of the [Shape2D] of this "
+"RigidBody2D used by the [Physics2DServer]. Get the [CollisionShape2D] node "
+"with [code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
#: doc/classes/RigidBody2D.xml:215
@@ -49420,27 +49532,31 @@ msgid ""
"[constant GROUP_CALL_DEFAULT] flag.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (7 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[b]Note:[/b] [method call_group] will always call methods with an one-frame "
"delay, in a way similar to [method Object.call_deferred]. To call methods "
"immediately, use [method call_group_flags] with the [constant "
"GROUP_CALL_REALTIME] flag."
msgstr ""
-#: doc/classes/SceneTree.xml:32
+#: doc/classes/SceneTree.xml:33
msgid ""
"Calls [code]method[/code] on each member of the given group, respecting the "
"given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] "
"by specifying them at the end of the method call.\n"
"[b]Note:[/b] [code]method[/code] may only have 5 arguments at most (8 "
"arguments passed to this method in total).\n"
+"[b]Note:[/b] Due to design limitations, [method call_group_flags] will fail "
+"silently if one of the arguments is [code]null[/code].\n"
"[codeblock]\n"
+"# Call the method immediately and in reverse order.\n"
"get_tree().call_group_flags(SceneTree.GROUP_CALL_REALTIME | SceneTree."
-"GROUP_CALL_REVERSE, \"bases\", \"destroy\") # Call the method immediately "
-"and in reverse order.\n"
+"GROUP_CALL_REVERSE, \"bases\", \"destroy\")\n"
"[/codeblock]"
msgstr ""
-#: doc/classes/SceneTree.xml:43
+#: doc/classes/SceneTree.xml:46
msgid ""
"Changes the running scene to the one at the given [code]path[/code], after "
"loading it into a [PackedScene] and creating a new instance.\n"
@@ -49452,7 +49568,7 @@ msgid ""
"immediately after the [method change_scene] call."
msgstr ""
-#: doc/classes/SceneTree.xml:52
+#: doc/classes/SceneTree.xml:55
msgid ""
"Changes the running scene to a new instance of the given [PackedScene].\n"
"Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene "
@@ -49462,7 +49578,7 @@ msgid ""
"immediately after the [method change_scene_to] call."
msgstr ""
-#: doc/classes/SceneTree.xml:62
+#: doc/classes/SceneTree.xml:65
msgid ""
"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after "
"the given time in seconds elapsed in this [SceneTree]. If "
@@ -49478,67 +49594,67 @@ msgid ""
"The timer will be automatically freed after its time elapses."
msgstr ""
-#: doc/classes/SceneTree.xml:76
+#: doc/classes/SceneTree.xml:79
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
msgstr ""
-#: doc/classes/SceneTree.xml:82
+#: doc/classes/SceneTree.xml:85
msgid ""
"Returns the peer IDs of all connected peers of this [SceneTree]'s [member "
"network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:88
+#: doc/classes/SceneTree.xml:91
msgid "Returns the unique peer ID of this [SceneTree]'s [member network_peer]."
msgstr ""
-#: doc/classes/SceneTree.xml:94
+#: doc/classes/SceneTree.xml:97
msgid "Returns the number of nodes in this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:101
+#: doc/classes/SceneTree.xml:104
msgid "Returns a list of all nodes assigned to the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:107
+#: doc/classes/SceneTree.xml:110
msgid "Returns the sender's peer ID for the most recently received RPC call."
msgstr ""
-#: doc/classes/SceneTree.xml:114
+#: doc/classes/SceneTree.xml:117
msgid "Returns [code]true[/code] if the given group exists."
msgstr ""
-#: doc/classes/SceneTree.xml:126
+#: doc/classes/SceneTree.xml:129
msgid ""
"Returns [code]true[/code] if the most recent [InputEvent] was marked as "
"handled with [method set_input_as_handled]."
msgstr ""
-#: doc/classes/SceneTree.xml:132
+#: doc/classes/SceneTree.xml:135
msgid ""
"Returns [code]true[/code] if this [SceneTree]'s [member network_peer] is in "
"server mode (listening for connections)."
msgstr ""
-#: doc/classes/SceneTree.xml:140
+#: doc/classes/SceneTree.xml:143
msgid "Sends the given notification to all members of the [code]group[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:149
+#: doc/classes/SceneTree.xml:152
msgid ""
"Sends the given notification to all members of the [code]group[/code], "
"respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:156
+#: doc/classes/SceneTree.xml:159
msgid ""
"Queues the given object for deletion, delaying the call to [method Object."
"free] to after the current frame."
msgstr ""
-#: doc/classes/SceneTree.xml:163
+#: doc/classes/SceneTree.xml:166
msgid ""
"Quits the application at the end of the current iteration. A process "
"[code]exit_code[/code] can optionally be passed as an argument. If this "
@@ -49549,7 +49665,7 @@ msgid ""
"Home button."
msgstr ""
-#: doc/classes/SceneTree.xml:170
+#: doc/classes/SceneTree.xml:173
msgid ""
"Reloads the currently active scene.\n"
"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
@@ -49558,30 +49674,30 @@ msgid ""
"ERR_CANT_CREATE] if the scene cannot be instantiated."
msgstr ""
-#: doc/classes/SceneTree.xml:178
+#: doc/classes/SceneTree.xml:181
msgid ""
"If [code]true[/code], the application automatically accepts quitting. "
"Enabled by default.\n"
"For mobile platforms, see [method set_quit_on_go_back]."
msgstr ""
-#: doc/classes/SceneTree.xml:188
+#: doc/classes/SceneTree.xml:191
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group."
msgstr ""
-#: doc/classes/SceneTree.xml:198
+#: doc/classes/SceneTree.xml:201
msgid ""
"Sets the given [code]property[/code] to [code]value[/code] on all members of "
"the given group, respecting the given [enum GroupCallFlags]."
msgstr ""
-#: doc/classes/SceneTree.xml:204
+#: doc/classes/SceneTree.xml:207
msgid "Marks the most recent [InputEvent] as handled."
msgstr ""
-#: doc/classes/SceneTree.xml:211
+#: doc/classes/SceneTree.xml:214
msgid ""
"If [code]true[/code], the application quits automatically on going back (e."
"g. on Android). Enabled by default.\n"
@@ -49589,37 +49705,37 @@ msgid ""
"MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST]."
msgstr ""
-#: doc/classes/SceneTree.xml:222
+#: doc/classes/SceneTree.xml:225
msgid ""
"Configures screen stretching to the given [enum StretchMode], [enum "
"StretchAspect], minimum size and [code]scale[/code]."
msgstr ""
-#: doc/classes/SceneTree.xml:228
+#: doc/classes/SceneTree.xml:231
msgid "The current scene."
msgstr ""
-#: doc/classes/SceneTree.xml:231
+#: doc/classes/SceneTree.xml:234
msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:234
+#: doc/classes/SceneTree.xml:237
msgid ""
"If [code]true[/code], navigation polygons will be visible when running the "
"game from the editor for debugging purposes."
msgstr ""
-#: doc/classes/SceneTree.xml:237
+#: doc/classes/SceneTree.xml:240
msgid "The root of the edited scene."
msgstr ""
-#: doc/classes/SceneTree.xml:240
+#: doc/classes/SceneTree.xml:243
msgid "The default [MultiplayerAPI] instance for this [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:243
+#: doc/classes/SceneTree.xml:246
msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal idle_frame].\n"
@@ -49630,7 +49746,7 @@ msgid ""
"threads."
msgstr ""
-#: doc/classes/SceneTree.xml:247
+#: doc/classes/SceneTree.xml:250
msgid ""
"The peer object to handle the RPC system (effectively enabling networking "
"when set). Depending on the peer itself, the [SceneTree] will become a "
@@ -49641,7 +49757,7 @@ msgid ""
"disconnection, new clients) is done by connecting to [SceneTree]'s signals."
msgstr ""
-#: doc/classes/SceneTree.xml:250
+#: doc/classes/SceneTree.xml:253
msgid ""
"If [code]true[/code], the [SceneTree] is paused. Doing so will have the "
"following behavior:\n"
@@ -49651,50 +49767,50 @@ msgid ""
"_input] will not be called anymore in nodes."
msgstr ""
-#: doc/classes/SceneTree.xml:255
+#: doc/classes/SceneTree.xml:258
msgid ""
"If [code]true[/code], the [SceneTree]'s [member network_peer] refuses new "
"incoming connections."
msgstr ""
-#: doc/classes/SceneTree.xml:258
+#: doc/classes/SceneTree.xml:261
msgid "The [SceneTree]'s root [Viewport]."
msgstr ""
-#: doc/classes/SceneTree.xml:261
+#: doc/classes/SceneTree.xml:264
msgid "If [code]true[/code], font oversampling is used."
msgstr ""
-#: doc/classes/SceneTree.xml:267
+#: doc/classes/SceneTree.xml:270
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] successfully "
"connected to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:272
+#: doc/classes/SceneTree.xml:275
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] fails to establish "
"a connection to a server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:279
+#: doc/classes/SceneTree.xml:282
msgid ""
"Emitted when files are dragged from the OS file manager and dropped in the "
"game window. The arguments are a list of file paths and the identifier of "
"the screen where the drag originated."
msgstr ""
-#: doc/classes/SceneTree.xml:286
+#: doc/classes/SceneTree.xml:289
msgid "Emitted whenever global menu item is clicked."
msgstr ""
-#: doc/classes/SceneTree.xml:291
+#: doc/classes/SceneTree.xml:294
msgid ""
"Emitted immediately before [method Node._process] is called on every node in "
"the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:297
+#: doc/classes/SceneTree.xml:300
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] connects with a "
"new peer. ID is the peer ID of the new peer. Clients get notified when other "
@@ -49702,110 +49818,110 @@ msgid ""
"also receives this signal for the server (with ID being 1)."
msgstr ""
-#: doc/classes/SceneTree.xml:303
+#: doc/classes/SceneTree.xml:306
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnects from a "
"peer. Clients get notified when other clients disconnect from the same "
"server."
msgstr ""
-#: doc/classes/SceneTree.xml:309
+#: doc/classes/SceneTree.xml:312
msgid "Emitted whenever a node is added to the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:315
+#: doc/classes/SceneTree.xml:318
msgid ""
"Emitted when a node's configuration changed. Only emitted in [code]tool[/"
"code] mode."
msgstr ""
-#: doc/classes/SceneTree.xml:321
+#: doc/classes/SceneTree.xml:324
msgid "Emitted whenever a node is removed from the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:327
+#: doc/classes/SceneTree.xml:330
msgid "Emitted whenever a node is renamed."
msgstr ""
-#: doc/classes/SceneTree.xml:332
+#: doc/classes/SceneTree.xml:335
msgid ""
"Emitted immediately before [method Node._physics_process] is called on every "
"node in the [SceneTree]."
msgstr ""
-#: doc/classes/SceneTree.xml:337
+#: doc/classes/SceneTree.xml:340
msgid ""
"Emitted when the screen resolution (fullscreen) or window size (windowed) "
"changes."
msgstr ""
-#: doc/classes/SceneTree.xml:342
+#: doc/classes/SceneTree.xml:345
msgid ""
"Emitted whenever this [SceneTree]'s [member network_peer] disconnected from "
"server. Only emitted on clients."
msgstr ""
-#: doc/classes/SceneTree.xml:347
+#: doc/classes/SceneTree.xml:350
msgid ""
"Emitted whenever the [SceneTree] hierarchy changed (children being moved or "
"renamed, etc.)."
msgstr ""
-#: doc/classes/SceneTree.xml:353
+#: doc/classes/SceneTree.xml:356
msgid "Call a group with no flags (default)."
msgstr ""
-#: doc/classes/SceneTree.xml:356
+#: doc/classes/SceneTree.xml:359
msgid "Call a group in reverse scene order."
msgstr ""
-#: doc/classes/SceneTree.xml:359
+#: doc/classes/SceneTree.xml:362
msgid "Call a group immediately (calls are normally made on idle)."
msgstr ""
-#: doc/classes/SceneTree.xml:362
+#: doc/classes/SceneTree.xml:365
msgid "Call a group only once even if the call is executed many times."
msgstr ""
-#: doc/classes/SceneTree.xml:365
+#: doc/classes/SceneTree.xml:368
msgid "No stretching."
msgstr ""
-#: doc/classes/SceneTree.xml:368
+#: doc/classes/SceneTree.xml:371
msgid "Render stretching in higher resolution (interpolated)."
msgstr ""
-#: doc/classes/SceneTree.xml:371
+#: doc/classes/SceneTree.xml:374
msgid ""
"Keep the specified display resolution. No interpolation. Content may appear "
"pixelated."
msgstr ""
-#: doc/classes/SceneTree.xml:374
+#: doc/classes/SceneTree.xml:377
msgid ""
"Fill the window with the content stretched to cover excessive space. Content "
"may appear stretched."
msgstr ""
-#: doc/classes/SceneTree.xml:377
+#: doc/classes/SceneTree.xml:380
msgid ""
"Retain the same aspect ratio by padding with black bars on either axis. This "
"prevents distortion."
msgstr ""
-#: doc/classes/SceneTree.xml:380
+#: doc/classes/SceneTree.xml:383
msgid ""
"Expand vertically. Left/right black bars may appear if the window is too "
"wide."
msgstr ""
-#: doc/classes/SceneTree.xml:383
+#: doc/classes/SceneTree.xml:386
msgid ""
"Expand horizontally. Top/bottom black bars may appear if the window is too "
"tall."
msgstr ""
-#: doc/classes/SceneTree.xml:386
+#: doc/classes/SceneTree.xml:389
msgid ""
"Expand in both directions, retaining the same aspect ratio. This prevents "
"distortion while avoiding black bars."
@@ -49833,7 +49949,7 @@ msgstr ""
msgid "The time remaining."
msgstr ""
-#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:60
+#: doc/classes/SceneTreeTimer.xml:28 doc/classes/Timer.xml:61
msgid "Emitted when the timer reaches 0."
msgstr ""
@@ -50040,45 +50156,54 @@ msgstr ""
#: doc/classes/ScrollContainer.xml:22
msgid ""
-"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer]."
+"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the horizontal scrollbar, use "
+"[member scroll_horizontal_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:28
-msgid "Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer]."
+#: doc/classes/ScrollContainer.xml:29
+msgid ""
+"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to disable the vertical scrollbar, use "
+"[member scroll_vertical_enabled]. If you want to only hide it instead, use "
+"its [member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/ScrollContainer.xml:34
+#: doc/classes/ScrollContainer.xml:36
msgid ""
"If [code]true[/code], the ScrollContainer will automatically scroll to "
"focused children (including indirect children) to make sure they are fully "
"visible."
msgstr ""
-#: doc/classes/ScrollContainer.xml:40
+#: doc/classes/ScrollContainer.xml:42
msgid "The current horizontal scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:43
+#: doc/classes/ScrollContainer.xml:45
msgid "If [code]true[/code], enables horizontal scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:46
+#: doc/classes/ScrollContainer.xml:48
msgid "The current vertical scroll value."
msgstr ""
-#: doc/classes/ScrollContainer.xml:49
+#: doc/classes/ScrollContainer.xml:51
msgid "If [code]true[/code], enables vertical scrolling."
msgstr ""
-#: doc/classes/ScrollContainer.xml:55
+#: doc/classes/ScrollContainer.xml:57
msgid "Emitted when scrolling stops."
msgstr ""
-#: doc/classes/ScrollContainer.xml:60
+#: doc/classes/ScrollContainer.xml:62
msgid "Emitted when scrolling is started."
msgstr ""
-#: doc/classes/ScrollContainer.xml:68
+#: doc/classes/ScrollContainer.xml:70
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr ""
@@ -52345,32 +52470,35 @@ msgstr ""
#: doc/classes/SpinBox.xml:32
msgid ""
"Returns the [LineEdit] instance from this [SpinBox]. You can use it to "
-"access properties and methods of [LineEdit]."
+"access properties and methods of [LineEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/SpinBox.xml:38
+#: doc/classes/SpinBox.xml:39
msgid "Sets the text alignment of the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:41
+#: doc/classes/SpinBox.xml:42
msgid ""
"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be "
"read only."
msgstr ""
-#: doc/classes/SpinBox.xml:44
+#: doc/classes/SpinBox.xml:45
msgid ""
"Adds the specified [code]prefix[/code] string before the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:47
+#: doc/classes/SpinBox.xml:48
msgid ""
"Adds the specified [code]suffix[/code] string after the numerical value of "
"the [SpinBox]."
msgstr ""
-#: doc/classes/SpinBox.xml:54
+#: doc/classes/SpinBox.xml:55
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
@@ -54655,228 +54783,231 @@ msgstr ""
#: doc/classes/TabContainer.xml:22
msgid ""
"Returns the [Popup] node instance if one has been set already with [method "
-"set_popup]."
+"set_popup].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TabContainer.xml:28 doc/classes/Tabs.xml:36
+#: doc/classes/TabContainer.xml:29 doc/classes/Tabs.xml:36
msgid "Returns the previously active tab index."
msgstr ""
-#: doc/classes/TabContainer.xml:35
+#: doc/classes/TabContainer.xml:36
msgid "Returns the [Control] node from the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:41 doc/classes/Tabs.xml:48
+#: doc/classes/TabContainer.xml:42 doc/classes/Tabs.xml:48
msgid "Returns the number of tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:48 doc/classes/Tabs.xml:55
+#: doc/classes/TabContainer.xml:49 doc/classes/Tabs.xml:55
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is "
"disabled."
msgstr ""
-#: doc/classes/TabContainer.xml:55
+#: doc/classes/TabContainer.xml:56
msgid ""
"Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:62 doc/classes/Tabs.xml:62
+#: doc/classes/TabContainer.xml:63 doc/classes/Tabs.xml:62
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-#: doc/classes/TabContainer.xml:69
+#: doc/classes/TabContainer.xml:70
msgid ""
"Returns the index of the tab at local coordinates [code]point[/code]. "
"Returns [code]-1[/code] if the point is outside the control boundaries or if "
"there's no tab at the queried position."
msgstr ""
-#: doc/classes/TabContainer.xml:76
+#: doc/classes/TabContainer.xml:77
msgid ""
"Returns the title of the tab at index [code]tab_idx[/code]. Tab titles "
"default to the name of the indexed child node, but this can be overridden "
"with [method set_tab_title]."
msgstr ""
-#: doc/classes/TabContainer.xml:82
+#: doc/classes/TabContainer.xml:83
msgid "Returns the [TabContainer] rearrange group id."
msgstr ""
-#: doc/classes/TabContainer.xml:89
+#: doc/classes/TabContainer.xml:90
msgid ""
"If set on a [Popup] node instance, a popup menu icon appears in the top-"
"right corner of the [TabContainer]. Clicking it will expand the [Popup] node."
msgstr ""
-#: doc/classes/TabContainer.xml:97 doc/classes/Tabs.xml:118
+#: doc/classes/TabContainer.xml:98 doc/classes/Tabs.xml:118
msgid ""
"If [code]disabled[/code] is [code]true[/code], disables the tab at index "
"[code]tab_idx[/code], making it non-interactable."
msgstr ""
-#: doc/classes/TabContainer.xml:105
+#: doc/classes/TabContainer.xml:106
msgid ""
"If [code]hidden[/code] is [code]true[/code], hides the tab at index "
"[code]tab_idx[/code], making it disappear from the tab area."
msgstr ""
-#: doc/classes/TabContainer.xml:113
+#: doc/classes/TabContainer.xml:114
msgid "Sets an icon for the tab at index [code]tab_idx[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:121
+#: doc/classes/TabContainer.xml:122
msgid ""
"Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default "
"to the name of the indexed child node."
msgstr ""
-#: doc/classes/TabContainer.xml:128
+#: doc/classes/TabContainer.xml:129
msgid ""
"Defines rearrange group id, choose for each [TabContainer] the same value to "
"enable tab drag between [TabContainer]. Enable drag with [member "
"drag_to_rearrange_enabled]."
msgstr ""
-#: doc/classes/TabContainer.xml:134
+#: doc/classes/TabContainer.xml:135
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
msgstr ""
-#: doc/classes/TabContainer.xml:137
+#: doc/classes/TabContainer.xml:138
msgid ""
"The current tab index. When set, this index's [Control] node's "
"[code]visible[/code] property is set to [code]true[/code] and all others are "
"set to [code]false[/code]."
msgstr ""
-#: doc/classes/TabContainer.xml:140 doc/classes/Tabs.xml:150
+#: doc/classes/TabContainer.xml:141 doc/classes/Tabs.xml:150
msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr ""
-#: doc/classes/TabContainer.xml:143
+#: doc/classes/TabContainer.xml:144
msgid ""
"The alignment of all tabs in the tab container. See the [enum TabAlign] "
"constants for details."
msgstr ""
-#: doc/classes/TabContainer.xml:146
+#: doc/classes/TabContainer.xml:147
msgid ""
"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content "
"and titles are hidden."
msgstr ""
-#: doc/classes/TabContainer.xml:149
+#: doc/classes/TabContainer.xml:150
msgid ""
"If [code]true[/code], children [Control] nodes that are hidden have their "
"minimum size take into account in the total, instead of only the currently "
"visible one."
msgstr ""
-#: doc/classes/TabContainer.xml:155
+#: doc/classes/TabContainer.xml:156
msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
-#: doc/classes/TabContainer.xml:161 doc/classes/Tabs.xml:178
+#: doc/classes/TabContainer.xml:162 doc/classes/Tabs.xml:178
msgid "Emitted when switching to another tab."
msgstr ""
-#: doc/classes/TabContainer.xml:167
+#: doc/classes/TabContainer.xml:168
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr ""
-#: doc/classes/TabContainer.xml:173 doc/classes/Tabs.xml:202
+#: doc/classes/TabContainer.xml:174 doc/classes/Tabs.xml:202
msgid "Align the tabs to the left."
msgstr ""
-#: doc/classes/TabContainer.xml:176 doc/classes/Tabs.xml:205
+#: doc/classes/TabContainer.xml:177 doc/classes/Tabs.xml:205
msgid "Align the tabs to the center."
msgstr ""
-#: doc/classes/TabContainer.xml:179 doc/classes/Tabs.xml:208
+#: doc/classes/TabContainer.xml:180 doc/classes/Tabs.xml:208
msgid "Align the tabs to the right."
msgstr ""
-#: doc/classes/TabContainer.xml:184 doc/classes/Tabs.xml:237
+#: doc/classes/TabContainer.xml:185 doc/classes/Tabs.xml:237
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the first tab "
"is visible), it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:187 doc/classes/Tabs.xml:240
+#: doc/classes/TabContainer.xml:188 doc/classes/Tabs.xml:240
msgid ""
"Icon for the left arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:190 doc/classes/Tabs.xml:243
+#: doc/classes/TabContainer.xml:191 doc/classes/Tabs.xml:243
msgid "The font used to draw tab names."
msgstr ""
-#: doc/classes/TabContainer.xml:193 doc/classes/Tabs.xml:246
+#: doc/classes/TabContainer.xml:194 doc/classes/Tabs.xml:246
msgid "Font color of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:196 doc/classes/Tabs.xml:249
+#: doc/classes/TabContainer.xml:197 doc/classes/Tabs.xml:249
msgid "Font color of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:199 doc/classes/Tabs.xml:252
+#: doc/classes/TabContainer.xml:200 doc/classes/Tabs.xml:252
msgid "Font color of the currently selected tab."
msgstr ""
-#: doc/classes/TabContainer.xml:202
+#: doc/classes/TabContainer.xml:203
msgid "Horizontal separation between tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:205 doc/classes/Tabs.xml:258
+#: doc/classes/TabContainer.xml:206 doc/classes/Tabs.xml:258
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. When the button is disabled (i.e. the last tab "
"is visible) it appears semi-transparent."
msgstr ""
-#: doc/classes/TabContainer.xml:208 doc/classes/Tabs.xml:261
+#: doc/classes/TabContainer.xml:209 doc/classes/Tabs.xml:261
msgid ""
"Icon for the right arrow button that appears when there are too many tabs to "
"fit in the container width. Used when the button is being hovered with the "
"cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:215
+#: doc/classes/TabContainer.xml:216
msgid "The icon for the menu button (see [method set_popup])."
msgstr ""
-#: doc/classes/TabContainer.xml:218
+#: doc/classes/TabContainer.xml:219
msgid ""
"The icon for the menu button (see [method set_popup]) when it's being "
"hovered with the cursor."
msgstr ""
-#: doc/classes/TabContainer.xml:221
+#: doc/classes/TabContainer.xml:222
msgid "The style for the background fill."
msgstr ""
-#: doc/classes/TabContainer.xml:224
+#: doc/classes/TabContainer.xml:225
msgid "The space at the left and right edges of the tab bar."
msgstr ""
-#: doc/classes/TabContainer.xml:227
+#: doc/classes/TabContainer.xml:228
msgid "The style of inactive tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:230
+#: doc/classes/TabContainer.xml:231
msgid "The style of disabled tabs."
msgstr ""
-#: doc/classes/TabContainer.xml:233 doc/classes/Tabs.xml:274
+#: doc/classes/TabContainer.xml:234 doc/classes/Tabs.xml:274
msgid "The style of the currently selected tab."
msgstr ""
@@ -55190,102 +55321,105 @@ msgstr ""
#: doc/classes/TextEdit.xml:149
msgid ""
"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is "
-"displayed when right-clicking on the [TextEdit]."
+"displayed when right-clicking on the [TextEdit].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
msgstr ""
-#: doc/classes/TextEdit.xml:155
+#: doc/classes/TextEdit.xml:156
msgid "Returns the selection begin column."
msgstr ""
-#: doc/classes/TextEdit.xml:161
+#: doc/classes/TextEdit.xml:162
msgid "Returns the selection begin line."
msgstr ""
-#: doc/classes/TextEdit.xml:167
+#: doc/classes/TextEdit.xml:168
msgid "Returns the text inside the selection."
msgstr ""
-#: doc/classes/TextEdit.xml:173
+#: doc/classes/TextEdit.xml:174
msgid "Returns the selection end column."
msgstr ""
-#: doc/classes/TextEdit.xml:179
+#: doc/classes/TextEdit.xml:180
msgid "Returns the selection end line."
msgstr ""
-#: doc/classes/TextEdit.xml:185
+#: doc/classes/TextEdit.xml:186
msgid ""
"Returns a [String] text with the word under the caret (text cursor) location."
msgstr ""
-#: doc/classes/TextEdit.xml:192
+#: doc/classes/TextEdit.xml:193
msgid ""
"Returns whether the specified [code]keyword[/code] has a color set to it or "
"not."
msgstr ""
-#: doc/classes/TextEdit.xml:198 doc/classes/UndoRedo.xml:121
+#: doc/classes/TextEdit.xml:199 doc/classes/UndoRedo.xml:121
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:204 doc/classes/UndoRedo.xml:127
+#: doc/classes/TextEdit.xml:205 doc/classes/UndoRedo.xml:127
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr ""
-#: doc/classes/TextEdit.xml:211
+#: doc/classes/TextEdit.xml:212
msgid "Insert the specified text at the cursor position."
msgstr ""
-#: doc/classes/TextEdit.xml:218
+#: doc/classes/TextEdit.xml:219
msgid "Returns whether the line at the specified index is folded or not."
msgstr ""
-#: doc/classes/TextEdit.xml:225
+#: doc/classes/TextEdit.xml:226
msgid "Returns whether the line at the specified index is hidden or not."
msgstr ""
-#: doc/classes/TextEdit.xml:232
+#: doc/classes/TextEdit.xml:233
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is bookmarked."
msgstr ""
-#: doc/classes/TextEdit.xml:239
+#: doc/classes/TextEdit.xml:240
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] has a "
"breakpoint."
msgstr ""
-#: doc/classes/TextEdit.xml:246
+#: doc/classes/TextEdit.xml:247
msgid ""
"Returns [code]true[/code] when the specified [code]line[/code] is marked as "
"safe."
msgstr ""
-#: doc/classes/TextEdit.xml:252
+#: doc/classes/TextEdit.xml:253
msgid "Returns [code]true[/code] if the selection is active."
msgstr ""
-#: doc/classes/TextEdit.xml:259
+#: doc/classes/TextEdit.xml:260
msgid ""
"Triggers a right-click menu action by the specified index. See [enum "
"MenuItems] for a list of available indexes."
msgstr ""
-#: doc/classes/TextEdit.xml:265
+#: doc/classes/TextEdit.xml:266
msgid "Paste the current selection."
msgstr ""
-#: doc/classes/TextEdit.xml:271
+#: doc/classes/TextEdit.xml:272
msgid "Perform redo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:277
+#: doc/classes/TextEdit.xml:278
msgid ""
"Removes all the breakpoints. This will not fire the [signal "
"breakpoint_toggled] signal."
msgstr ""
-#: doc/classes/TextEdit.xml:287
+#: doc/classes/TextEdit.xml:288
msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
@@ -55301,311 +55435,311 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/TextEdit.xml:305
+#: doc/classes/TextEdit.xml:306
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:312
+#: doc/classes/TextEdit.xml:313
msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
-#: doc/classes/TextEdit.xml:321
+#: doc/classes/TextEdit.xml:322
msgid "Sets the text for a specific line."
msgstr ""
-#: doc/classes/TextEdit.xml:329
+#: doc/classes/TextEdit.xml:330
msgid ""
"Bookmarks the [code]line[/code] if [code]bookmark[/code] is true. Deletes "
"the bookmark if [code]bookmark[/code] is false.\n"
"Bookmarks are shown in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:338
+#: doc/classes/TextEdit.xml:339
msgid ""
"Adds or removes the breakpoint in [code]line[/code]. Breakpoints are shown "
"in the [member breakpoint_gutter]."
msgstr ""
-#: doc/classes/TextEdit.xml:346
+#: doc/classes/TextEdit.xml:347
msgid "If [code]true[/code], hides the line of the specified index."
msgstr ""
-#: doc/classes/TextEdit.xml:354
+#: doc/classes/TextEdit.xml:355
msgid ""
"If [code]true[/code], marks the [code]line[/code] as safe.\n"
"This will show the line number with the color provided in the "
"[code]safe_line_number_color[/code] theme property."
msgstr ""
-#: doc/classes/TextEdit.xml:362
+#: doc/classes/TextEdit.xml:363
msgid "Toggle the folding of the code block at the given line."
msgstr ""
-#: doc/classes/TextEdit.xml:368
+#: doc/classes/TextEdit.xml:369
msgid "Perform undo operation."
msgstr ""
-#: doc/classes/TextEdit.xml:375
+#: doc/classes/TextEdit.xml:376
msgid "Unfolds the given line, if folded."
msgstr ""
-#: doc/classes/TextEdit.xml:381
+#: doc/classes/TextEdit.xml:382
msgid ""
"Unhide all lines that were previously set to hidden by [method "
"set_line_as_hidden]."
msgstr ""
-#: doc/classes/TextEdit.xml:387
+#: doc/classes/TextEdit.xml:388
msgid "If [code]true[/code], the breakpoint gutter is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:396
+#: doc/classes/TextEdit.xml:397
msgid ""
"If [code]true[/code], the caret displays as a rectangle.\n"
"If [code]false[/code], the caret displays as a bar."
msgstr ""
-#: doc/classes/TextEdit.xml:400
+#: doc/classes/TextEdit.xml:401
msgid ""
"If [code]true[/code], a right-click moves the cursor at the mouse position "
"before displaying the context menu.\n"
"If [code]false[/code], the context menu disregards mouse location."
msgstr ""
-#: doc/classes/TextEdit.xml:404
+#: doc/classes/TextEdit.xml:405
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr ""
-#: doc/classes/TextEdit.xml:407
+#: doc/classes/TextEdit.xml:408
msgid ""
"If [code]true[/code], the \"space\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:410
+#: doc/classes/TextEdit.xml:411
msgid ""
"If [code]true[/code], the \"tab\" character will have a visible "
"representation."
msgstr ""
-#: doc/classes/TextEdit.xml:414
+#: doc/classes/TextEdit.xml:415
msgid ""
"If [code]true[/code], the fold gutter is visible. This enables folding "
"groups of indented lines."
msgstr ""
-#: doc/classes/TextEdit.xml:417
+#: doc/classes/TextEdit.xml:418
msgid ""
"If [code]true[/code], all lines that have been set to hidden by [method "
"set_line_as_hidden], will not be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:420
+#: doc/classes/TextEdit.xml:421
msgid ""
"If [code]true[/code], all occurrences of the selected text will be "
"highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:423
+#: doc/classes/TextEdit.xml:424
msgid "If [code]true[/code], the line containing the cursor is highlighted."
msgstr ""
-#: doc/classes/TextEdit.xml:426
+#: doc/classes/TextEdit.xml:427
msgid ""
"If [code]true[/code], a minimap is shown, providing an outline of your "
"source code."
msgstr ""
-#: doc/classes/TextEdit.xml:429
+#: doc/classes/TextEdit.xml:430
msgid "The width, in pixels, of the minimap."
msgstr ""
-#: doc/classes/TextEdit.xml:433
+#: doc/classes/TextEdit.xml:434
msgid ""
"If [code]true[/code], custom [code]font_color_selected[/code] will be used "
"for selected text."
msgstr ""
-#: doc/classes/TextEdit.xml:436
+#: doc/classes/TextEdit.xml:437
msgid ""
"If [code]true[/code], read-only mode is enabled. Existing text cannot be "
"modified and new text cannot be added."
msgstr ""
-#: doc/classes/TextEdit.xml:439
+#: doc/classes/TextEdit.xml:440
msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr ""
-#: doc/classes/TextEdit.xml:442
+#: doc/classes/TextEdit.xml:443
msgid ""
"If there is a vertical scrollbar, this determines the current vertical "
"scroll value in line numbers, starting at 0 for the top line."
msgstr ""
-#: doc/classes/TextEdit.xml:445
+#: doc/classes/TextEdit.xml:446
msgid ""
"If [code]true[/code], text can be selected.\n"
"If [code]false[/code], text can not be selected by the user or by the "
"[method select] or [method select_all] methods."
msgstr ""
-#: doc/classes/TextEdit.xml:449
+#: doc/classes/TextEdit.xml:450
msgid ""
"If [code]true[/code], shortcut keys for context menu items are enabled, even "
"if the context menu is disabled."
msgstr ""
-#: doc/classes/TextEdit.xml:452
+#: doc/classes/TextEdit.xml:453
msgid ""
"If [code]true[/code], line numbers are displayed to the left of the text."
msgstr ""
-#: doc/classes/TextEdit.xml:455
+#: doc/classes/TextEdit.xml:456
msgid ""
"If [code]true[/code], sets the [code]step[/code] of the scrollbars to "
"[code]0.25[/code] which results in smoother scrolling."
msgstr ""
-#: doc/classes/TextEdit.xml:458
+#: doc/classes/TextEdit.xml:459
msgid ""
"If [code]true[/code], any custom color properties that have been set for "
"this [TextEdit] will be visible."
msgstr ""
-#: doc/classes/TextEdit.xml:461
+#: doc/classes/TextEdit.xml:462
msgid "String value of the [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:464
+#: doc/classes/TextEdit.xml:465
msgid "Vertical scroll sensitivity."
msgstr ""
-#: doc/classes/TextEdit.xml:470
+#: doc/classes/TextEdit.xml:471
msgid ""
"If [code]true[/code], enables text wrapping when it goes beyond the edge of "
"what is visible."
msgstr ""
-#: doc/classes/TextEdit.xml:477
+#: doc/classes/TextEdit.xml:478
msgid "Emitted when a breakpoint is placed via the breakpoint gutter."
msgstr ""
-#: doc/classes/TextEdit.xml:482
+#: doc/classes/TextEdit.xml:483
msgid "Emitted when the cursor changes."
msgstr ""
-#: doc/classes/TextEdit.xml:489
+#: doc/classes/TextEdit.xml:490
msgid "Emitted when the info icon is clicked."
msgstr ""
-#: doc/classes/TextEdit.xml:511
+#: doc/classes/TextEdit.xml:512
msgid "Match case when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:514
+#: doc/classes/TextEdit.xml:515
msgid "Match whole words when searching."
msgstr ""
-#: doc/classes/TextEdit.xml:517
+#: doc/classes/TextEdit.xml:518
msgid "Search from end to beginning."
msgstr ""
-#: doc/classes/TextEdit.xml:520
+#: doc/classes/TextEdit.xml:521
msgid "Used to access the result column from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:523
+#: doc/classes/TextEdit.xml:524
msgid "Used to access the result line from [method search]."
msgstr ""
-#: doc/classes/TextEdit.xml:532
+#: doc/classes/TextEdit.xml:533
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
msgstr ""
-#: doc/classes/TextEdit.xml:535
+#: doc/classes/TextEdit.xml:536
msgid "Erases the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:538
+#: doc/classes/TextEdit.xml:539
msgid "Selects the whole [TextEdit] text."
msgstr ""
-#: doc/classes/TextEdit.xml:544
+#: doc/classes/TextEdit.xml:545
msgid "Redoes the previous action."
msgstr ""
-#: doc/classes/TextEdit.xml:552
+#: doc/classes/TextEdit.xml:553
msgid ""
"Sets the background [Color] of this [TextEdit]. [member syntax_highlighting] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:555
+#: doc/classes/TextEdit.xml:556
msgid ""
"Sets the [Color] of the bookmark marker. [member syntax_highlighting] has to "
"be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:560 doc/classes/TextEdit.xml:587
+#: doc/classes/TextEdit.xml:561 doc/classes/TextEdit.xml:588
msgid ""
"Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:598
+#: doc/classes/TextEdit.xml:599
msgid "Sets the default [Font]."
msgstr ""
-#: doc/classes/TextEdit.xml:601
+#: doc/classes/TextEdit.xml:602
msgid "Sets the font [Color]."
msgstr ""
-#: doc/classes/TextEdit.xml:606
+#: doc/classes/TextEdit.xml:607
msgid ""
"Sets the [Color] of the selected text. [member override_selected_font_color] "
"has to be enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:611
+#: doc/classes/TextEdit.xml:612
msgid ""
"Sets the [Color] of the line numbers. [member show_line_numbers] has to be "
"enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:614
+#: doc/classes/TextEdit.xml:615
msgid "Sets the spacing between the lines."
msgstr ""
-#: doc/classes/TextEdit.xml:617
+#: doc/classes/TextEdit.xml:618
msgid "Sets the [Color] of marked text."
msgstr ""
-#: doc/classes/TextEdit.xml:622
+#: doc/classes/TextEdit.xml:623
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr ""
-#: doc/classes/TextEdit.xml:627
+#: doc/classes/TextEdit.xml:628
msgid ""
"Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled."
msgstr ""
-#: doc/classes/TextEdit.xml:632
+#: doc/classes/TextEdit.xml:633
msgid "Sets the highlight [Color] of text selections."
msgstr ""
-#: doc/classes/TextEdit.xml:639
+#: doc/classes/TextEdit.xml:640
msgid "Sets a custom [Texture] for tab text characters."
msgstr ""
-#: doc/classes/TextEdit.xml:642
+#: doc/classes/TextEdit.xml:643
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -55680,7 +55814,7 @@ msgid ""
"FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3205
+#: doc/classes/Texture.xml:92 doc/classes/VisualServer.xml:3206
msgid ""
"Generates mipmaps, which are smaller versions of the same texture to use "
"when zoomed out, keeping the aspect ratio."
@@ -55693,19 +55827,19 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3211
+#: doc/classes/Texture.xml:99 doc/classes/VisualServer.xml:3212
msgid "Uses a magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
#: doc/classes/Texture.xml:102 doc/classes/TextureLayered.xml:88
-#: doc/classes/VisualServer.xml:3214
+#: doc/classes/VisualServer.xml:3215
msgid ""
"Uses anisotropic mipmap filtering. Generates smaller versions of the same "
"texture with different aspect ratios.\n"
"This results in better-looking textures when viewed from oblique angles."
msgstr ""
-#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3218
+#: doc/classes/Texture.xml:106 doc/classes/VisualServer.xml:3219
msgid "Converts the texture to the sRGB color space."
msgstr ""
@@ -55716,7 +55850,7 @@ msgid ""
"repetition."
msgstr ""
-#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3224
+#: doc/classes/Texture.xml:113 doc/classes/VisualServer.xml:3225
msgid "Texture is a video surface."
msgstr ""
@@ -56569,12 +56703,21 @@ msgstr ""
#: doc/classes/Thread.xml:25
msgid ""
-"Returns [code]true[/code] if this [Thread] is currently active. An active "
-"[Thread] cannot start work on a new method but can be joined with [method "
-"wait_to_finish]."
+"Returns [code]true[/code] if this [Thread] has been started. Once started, "
+"this will return [code]true[/code] until it is joined using [method "
+"wait_to_finish]. For checking if a [Thread] is still executing its task, use "
+"[method is_alive]."
msgstr ""
-#: doc/classes/Thread.xml:35
+#: doc/classes/Thread.xml:31
+msgid ""
+"Returns [code]true[/code] if this [Thread] is currently running. This is "
+"useful for determining if [method wait_to_finish] can be called without "
+"blocking the calling thread.\n"
+"To check if a [Thread] is joinable, use [method is_active]."
+msgstr ""
+
+#: doc/classes/Thread.xml:42
msgid ""
"Starts a new [Thread] that runs [code]method[/code] on object "
"[code]instance[/code] with [code]userdata[/code] passed as an argument. Even "
@@ -56584,26 +56727,28 @@ msgid ""
"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure."
msgstr ""
-#: doc/classes/Thread.xml:42
+#: doc/classes/Thread.xml:49
msgid ""
-"Joins the [Thread] and waits for it to finish. Returns what the method "
-"called returned.\n"
+"Joins the [Thread] and waits for it to finish. Returns the output of the "
+"method passed to [method start].\n"
"Should either be used when you want to retrieve the value returned from the "
"method called by the [Thread] or before freeing the instance that contains "
"the [Thread].\n"
+"To determine if this can be called without blocking the calling thread, "
+"check if [method is_alive] is [code]false[/code].\n"
"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you "
"want to use it again you will have to create a new instance of it."
msgstr ""
-#: doc/classes/Thread.xml:50
+#: doc/classes/Thread.xml:58
msgid "A thread running with lower priority than normally."
msgstr ""
-#: doc/classes/Thread.xml:53
+#: doc/classes/Thread.xml:61
msgid "A thread with a standard priority."
msgstr ""
-#: doc/classes/Thread.xml:56
+#: doc/classes/Thread.xml:64
msgid "A thread running with higher priority than normally."
msgstr ""
@@ -57347,16 +57492,23 @@ msgid ""
msgstr ""
#: doc/classes/Timer.xml:54
-msgid "Wait time in seconds."
+msgid ""
+"The wait time in seconds.\n"
+"[b]Note:[/b] Timers can only emit once per rendered frame at most (or once "
+"per physics frame if [member process_mode] is [constant "
+"TIMER_PROCESS_PHYSICS]). This means very low wait times (lower than 0.05 "
+"seconds) will behave in significantly different ways depending on the "
+"rendered framerate. For very low wait times, it is recommended to use a "
+"process loop in a script instead of using a Timer node."
msgstr ""
-#: doc/classes/Timer.xml:66
+#: doc/classes/Timer.xml:67
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
msgstr ""
-#: doc/classes/Timer.xml:69
+#: doc/classes/Timer.xml:70
msgid "Update the timer during the idle time at each frame."
msgstr ""
@@ -63807,79 +63959,79 @@ msgid ""
"for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:865
+#: doc/classes/VisualServer.xml:866
msgid ""
"Sets the variables to be used with the \"glow\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:873
+#: doc/classes/VisualServer.xml:874
msgid ""
"Sets the [Sky] to be used as the environment's background when using "
"[i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]."
msgstr ""
-#: doc/classes/VisualServer.xml:881
+#: doc/classes/VisualServer.xml:882
msgid ""
"Sets a custom field of view for the background [Sky]. Equivalent to [member "
"Environment.background_sky_custom_fov]."
msgstr ""
-#: doc/classes/VisualServer.xml:889
+#: doc/classes/VisualServer.xml:890
msgid ""
"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent "
"to [member Environment.background_sky_orientation]."
msgstr ""
-#: doc/classes/VisualServer.xml:908
+#: doc/classes/VisualServer.xml:909
msgid ""
"Sets the variables to be used with the \"Screen Space Ambient Occlusion "
"(SSAO)\" post-process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:921
+#: doc/classes/VisualServer.xml:922
msgid ""
"Sets the variables to be used with the \"screen space reflections\" post-"
"process effect. See [Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:936
+#: doc/classes/VisualServer.xml:937
msgid ""
"Sets the variables to be used with the \"tonemap\" post-process effect. See "
"[Environment] for more details."
msgstr ""
-#: doc/classes/VisualServer.xml:942
+#: doc/classes/VisualServer.xml:943
msgid "Removes buffers and clears testcubes."
msgstr ""
-#: doc/classes/VisualServer.xml:950
+#: doc/classes/VisualServer.xml:951
msgid ""
"Forces a frame to be drawn when the function is called. Drawing a frame "
"updates all [Viewport]s that are set to update. Use with extreme caution."
msgstr ""
-#: doc/classes/VisualServer.xml:956
+#: doc/classes/VisualServer.xml:957
msgid "Synchronizes threads."
msgstr ""
-#: doc/classes/VisualServer.xml:963
+#: doc/classes/VisualServer.xml:964
msgid "Tries to free an object in the VisualServer."
msgstr ""
-#: doc/classes/VisualServer.xml:970
+#: doc/classes/VisualServer.xml:971
msgid "Returns a certain information, see [enum RenderInfo] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:976
+#: doc/classes/VisualServer.xml:977
msgid "Returns the id of the test cube. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:982
+#: doc/classes/VisualServer.xml:983
msgid "Returns the id of the test texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:988
+#: doc/classes/VisualServer.xml:989
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -63887,18 +64039,18 @@ msgid ""
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:995
+#: doc/classes/VisualServer.xml:996
msgid ""
"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n"
"[b]Note:[/b] When running a headless or server binary, this function returns "
"an empty string."
msgstr ""
-#: doc/classes/VisualServer.xml:1002
+#: doc/classes/VisualServer.xml:1003
msgid "Returns the id of a white texture. Creates one if none exists."
msgstr ""
-#: doc/classes/VisualServer.xml:1008
+#: doc/classes/VisualServer.xml:1009
msgid ""
"Creates a GI probe and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]gi_probe_*[/"
@@ -63909,145 +64061,145 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1017
+#: doc/classes/VisualServer.xml:1018
msgid ""
"Returns the bias value for the GI probe. Bias is used to avoid self "
"occlusion. Equivalent to [member GIProbeData.bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1024
+#: doc/classes/VisualServer.xml:1025
msgid ""
"Returns the axis-aligned bounding box that covers the full extent of the GI "
"probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1031
+#: doc/classes/VisualServer.xml:1032
msgid "Returns the cell size set by [method gi_probe_set_cell_size]."
msgstr ""
-#: doc/classes/VisualServer.xml:1038
+#: doc/classes/VisualServer.xml:1039
#, fuzzy
msgid "Returns the data used by the GI probe."
msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
-#: doc/classes/VisualServer.xml:1045
+#: doc/classes/VisualServer.xml:1046
msgid ""
"Returns the dynamic range set for this GI probe. Equivalent to [member "
"GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1052
+#: doc/classes/VisualServer.xml:1053
msgid ""
"Returns the energy multiplier for this GI probe. Equivalent to [member "
"GIProbe.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1059
+#: doc/classes/VisualServer.xml:1060
msgid ""
"Returns the normal bias for this GI probe. Equivalent to [member GIProbe."
"normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1066
+#: doc/classes/VisualServer.xml:1067
msgid ""
"Returns the propagation value for this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1073
+#: doc/classes/VisualServer.xml:1074
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1080
+#: doc/classes/VisualServer.xml:1081
msgid ""
"Returns [code]true[/code] if the GI probe data associated with this GI probe "
"is compressed. Equivalent to [member GIProbe.compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1087
+#: doc/classes/VisualServer.xml:1088
msgid ""
"Returns [code]true[/code] if the GI probe is set to interior, meaning it "
"does not account for sky light. Equivalent to [member GIProbe.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1095
+#: doc/classes/VisualServer.xml:1096
msgid ""
"Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe."
"bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1103
+#: doc/classes/VisualServer.xml:1104
msgid ""
"Sets the axis-aligned bounding box that covers the extent of the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1111
+#: doc/classes/VisualServer.xml:1112
msgid "Sets the size of individual cells within the GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1119
+#: doc/classes/VisualServer.xml:1120
msgid ""
"Sets the compression setting for the GI probe data. Compressed data will "
"take up less space but may look worse. Equivalent to [member GIProbe."
"compress]."
msgstr ""
-#: doc/classes/VisualServer.xml:1127
+#: doc/classes/VisualServer.xml:1128
msgid ""
"Sets the data to be used in the GI probe for lighting calculations. Normally "
"this is created and called internally within the [GIProbe] node. You should "
"not try to set this yourself."
msgstr ""
-#: doc/classes/VisualServer.xml:1135
+#: doc/classes/VisualServer.xml:1136
msgid ""
"Sets the dynamic range of the GI probe. Dynamic range sets the limit for how "
"bright lights can be. A smaller range captures greater detail but limits how "
"bright lights can be. Equivalent to [member GIProbe.dynamic_range]."
msgstr ""
-#: doc/classes/VisualServer.xml:1143
+#: doc/classes/VisualServer.xml:1144
msgid ""
"Sets the energy multiplier for this GI probe. A higher energy makes the "
"indirect light from the GI probe brighter. Equivalent to [member GIProbe."
"energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1151
+#: doc/classes/VisualServer.xml:1152
msgid ""
"Sets the interior value of this GI probe. A GI probe set to interior does "
"not include the sky when calculating lighting. Equivalent to [member GIProbe."
"interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1159
+#: doc/classes/VisualServer.xml:1160
msgid ""
"Sets the normal bias for this GI probe. Normal bias behaves similar to the "
"other form of bias and may help reduce self-occlusion. Equivalent to [member "
"GIProbe.normal_bias]."
msgstr ""
-#: doc/classes/VisualServer.xml:1167
+#: doc/classes/VisualServer.xml:1168
msgid ""
"Sets the propagation of light within this GI probe. Equivalent to [member "
"GIProbe.propagation]."
msgstr ""
-#: doc/classes/VisualServer.xml:1175
+#: doc/classes/VisualServer.xml:1176
msgid "Sets the to cell [Transform] for this GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:1181
+#: doc/classes/VisualServer.xml:1182
msgid ""
"Returns [code]true[/code] if changes have been made to the VisualServer's "
"data. [method draw] is usually called if this happens."
msgstr ""
-#: doc/classes/VisualServer.xml:1188
+#: doc/classes/VisualServer.xml:1189
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:1195
+#: doc/classes/VisualServer.xml:1196
msgid ""
"Returns [code]true[/code] if the OS supports a certain feature. Features "
"might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], "
@@ -64057,25 +64209,25 @@ msgid ""
"default GPU skinning process."
msgstr ""
-#: doc/classes/VisualServer.xml:1205
+#: doc/classes/VisualServer.xml:1206
msgid ""
"Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to "
"[method ImmediateGeometry.begin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1212
+#: doc/classes/VisualServer.xml:1213
msgid ""
"Clears everything that was set up between [method immediate_begin] and "
"[method immediate_end]. Equivalent to [method ImmediateGeometry.clear]."
msgstr ""
-#: doc/classes/VisualServer.xml:1220
+#: doc/classes/VisualServer.xml:1221
msgid ""
"Sets the color to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1226
+#: doc/classes/VisualServer.xml:1227
msgid ""
"Creates an immediate geometry and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64086,79 +64238,79 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1235
+#: doc/classes/VisualServer.xml:1236
msgid ""
"Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method "
"ImmediateGeometry.end]."
msgstr ""
-#: doc/classes/VisualServer.xml:1242
+#: doc/classes/VisualServer.xml:1243
#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
msgstr "å›žå‚³åƒæ•¸çš„åæ­£å¼¦å€¼ã€‚"
-#: doc/classes/VisualServer.xml:1250
+#: doc/classes/VisualServer.xml:1251
msgid ""
"Sets the normal to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_normal]."
msgstr ""
-#: doc/classes/VisualServer.xml:1258
+#: doc/classes/VisualServer.xml:1259
msgid "Sets the material to be used to draw the [ImmediateGeometry]."
msgstr ""
-#: doc/classes/VisualServer.xml:1266
+#: doc/classes/VisualServer.xml:1267
msgid ""
"Sets the tangent to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_tangent]."
msgstr ""
-#: doc/classes/VisualServer.xml:1274
+#: doc/classes/VisualServer.xml:1275
msgid ""
"Sets the UV to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1282
+#: doc/classes/VisualServer.xml:1283
msgid ""
"Sets the UV2 to be used with next vertex. Equivalent to [method "
"ImmediateGeometry.set_uv2]."
msgstr ""
-#: doc/classes/VisualServer.xml:1290
+#: doc/classes/VisualServer.xml:1291
msgid ""
"Adds the next vertex using the information provided in advance. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1298
+#: doc/classes/VisualServer.xml:1299
msgid ""
"Adds the next vertex using the information provided in advance. This is a "
"helper class that calls [method immediate_vertex] under the hood. Equivalent "
"to [method ImmediateGeometry.add_vertex]."
msgstr ""
-#: doc/classes/VisualServer.xml:1304
+#: doc/classes/VisualServer.xml:1305
msgid ""
"Initializes the visual server. This function is called internally by "
"platform-dependent code during engine initialization. If called from a "
"running game, it will not do anything."
msgstr ""
-#: doc/classes/VisualServer.xml:1312
+#: doc/classes/VisualServer.xml:1313
msgid ""
"Attaches a unique Object ID to instance. Object ID must be attached to "
"instance for proper culling with [method instances_cull_aabb], [method "
"instances_cull_convex], and [method instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:1320
+#: doc/classes/VisualServer.xml:1321
msgid ""
"Attaches a skeleton to an instance. Removes the previous skeleton from the "
"instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1326
+#: doc/classes/VisualServer.xml:1327
msgid ""
"Creates a visual instance and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64170,7 +64322,7 @@ msgid ""
"instance to be visible in the scenario using [method instance_set_base]."
msgstr ""
-#: doc/classes/VisualServer.xml:1336
+#: doc/classes/VisualServer.xml:1337
msgid ""
"Creates a visual instance, adds it to the VisualServer, and sets both base "
"and scenario. It can be accessed with the RID that is returned. This RID "
@@ -64179,31 +64331,31 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1345 doc/classes/VisualServer.xml:1364
-#: doc/classes/VisualServer.xml:1591 doc/classes/VisualServer.xml:2672
+#: doc/classes/VisualServer.xml:1346 doc/classes/VisualServer.xml:1365
+#: doc/classes/VisualServer.xml:1592 doc/classes/VisualServer.xml:2673
msgid "Not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1353
+#: doc/classes/VisualServer.xml:1354
msgid ""
"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. "
"Equivalent to [member GeometryInstance.cast_shadow]."
msgstr ""
-#: doc/classes/VisualServer.xml:1373
+#: doc/classes/VisualServer.xml:1374
msgid ""
"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for "
"more details."
msgstr ""
-#: doc/classes/VisualServer.xml:1381
+#: doc/classes/VisualServer.xml:1382
msgid ""
"Sets a material that will override the material for all surfaces on the mesh "
"associated with this instance. Equivalent to [member GeometryInstance."
"material_override]."
msgstr ""
-#: doc/classes/VisualServer.xml:1389
+#: doc/classes/VisualServer.xml:1390
msgid ""
"Sets the base of the instance. A base can be any of the 3D objects that are "
"created in the VisualServer that can be displayed. For example, any of the "
@@ -64212,62 +64364,62 @@ msgid ""
"be set as the base of an instance in order to be displayed in the scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:1398
+#: doc/classes/VisualServer.xml:1399
msgid "Sets the weight for a given blend shape associated with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1406
+#: doc/classes/VisualServer.xml:1407
msgid ""
"Sets a custom AABB to use when culling objects from the view frustum. "
"Equivalent to [method GeometryInstance.set_custom_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:1414
+#: doc/classes/VisualServer.xml:1415
msgid "Function not implemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1422
+#: doc/classes/VisualServer.xml:1423
msgid ""
"Sets a margin to increase the size of the AABB when culling objects from the "
"view frustum. This allows you to avoid culling objects that fall outside the "
"view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]."
msgstr ""
-#: doc/classes/VisualServer.xml:1430
+#: doc/classes/VisualServer.xml:1431
msgid ""
"Sets the render layers that this instance will be drawn to. Equivalent to "
"[member VisualInstance.layers]."
msgstr ""
-#: doc/classes/VisualServer.xml:1438
+#: doc/classes/VisualServer.xml:1439
msgid ""
"Sets the scenario that the instance is in. The scenario is the 3D world that "
"the objects will be displayed in."
msgstr ""
-#: doc/classes/VisualServer.xml:1447
+#: doc/classes/VisualServer.xml:1448
msgid ""
"Sets the material of a specific surface. Equivalent to [method MeshInstance."
"set_surface_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:1455
+#: doc/classes/VisualServer.xml:1456
msgid ""
"Sets the world space transform of the instance. Equivalent to [member "
"Spatial.transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1466
+#: doc/classes/VisualServer.xml:1467
msgid "Sets the lightmap to use with this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:1474
+#: doc/classes/VisualServer.xml:1475
msgid ""
"Sets whether an instance is drawn or not. Equivalent to [member Spatial."
"visible]."
msgstr ""
-#: doc/classes/VisualServer.xml:1482
+#: doc/classes/VisualServer.xml:1483
msgid ""
"Returns an array of object IDs intersecting with the provided AABB. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64279,7 +64431,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1491
+#: doc/classes/VisualServer.xml:1492
msgid ""
"Returns an array of object IDs intersecting with the provided convex shape. "
"Only visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64291,7 +64443,7 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1501
+#: doc/classes/VisualServer.xml:1502
msgid ""
"Returns an array of object IDs intersecting with the provided 3D ray. Only "
"visual 3D nodes are considered, such as [MeshInstance] or "
@@ -64303,71 +64455,71 @@ msgid ""
"game use cases, prefer physics collision."
msgstr ""
-#: doc/classes/VisualServer.xml:1510
+#: doc/classes/VisualServer.xml:1511
msgid ""
"If [code]true[/code], this directional light will blend between shadow map "
"splits resulting in a smoother transition between them. Equivalent to "
"[member DirectionalLight.directional_shadow_blend_splits]."
msgstr ""
-#: doc/classes/VisualServer.xml:1518
+#: doc/classes/VisualServer.xml:1519
msgid ""
"Sets the shadow depth range mode for this directional light. Equivalent to "
"[member DirectionalLight.directional_shadow_depth_range]. See [enum "
"LightDirectionalShadowDepthRangeMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1526
+#: doc/classes/VisualServer.xml:1527
msgid ""
"Sets the shadow mode for this directional light. Equivalent to [member "
"DirectionalLight.directional_shadow_mode]. See [enum "
"LightDirectionalShadowMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:1534
+#: doc/classes/VisualServer.xml:1535
msgid ""
"Sets whether to use vertical or horizontal detail for this omni light. This "
"can be used to alleviate artifacts in the shadow map. Equivalent to [member "
"OmniLight.omni_shadow_detail]."
msgstr ""
-#: doc/classes/VisualServer.xml:1542
+#: doc/classes/VisualServer.xml:1543
msgid ""
"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual "
"paraboloid is faster but may suffer from artifacts. Equivalent to [member "
"OmniLight.omni_shadow_mode]."
msgstr ""
-#: doc/classes/VisualServer.xml:1550
+#: doc/classes/VisualServer.xml:1551
msgid ""
"Sets the bake mode for this light, see [enum LightBakeMode] for options. The "
"bake mode affects how the light will be baked in [BakedLightmap]s and "
"[GIProbe]s."
msgstr ""
-#: doc/classes/VisualServer.xml:1558
+#: doc/classes/VisualServer.xml:1559
msgid "Sets the color of the light. Equivalent to [member Light.light_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1566
+#: doc/classes/VisualServer.xml:1567
msgid ""
"Sets the cull mask for this Light. Lights only affect objects in the "
"selected layers. Equivalent to [member Light.light_cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:1574
+#: doc/classes/VisualServer.xml:1575
msgid ""
"If [code]true[/code], light will subtract light instead of adding light. "
"Equivalent to [member Light.light_negative]."
msgstr ""
-#: doc/classes/VisualServer.xml:1583
+#: doc/classes/VisualServer.xml:1584
msgid ""
"Sets the specified light parameter. See [enum LightParam] for options. "
"Equivalent to [method Light.set_param]."
msgstr ""
-#: doc/classes/VisualServer.xml:1599
+#: doc/classes/VisualServer.xml:1600
msgid ""
"If [code]true[/code], reverses the backface culling of the mesh. This can be "
"useful when you have a flat mesh that has a light behind it. If you need to "
@@ -64376,19 +64528,19 @@ msgid ""
"to [member Light.shadow_reverse_cull_face]."
msgstr ""
-#: doc/classes/VisualServer.xml:1607
+#: doc/classes/VisualServer.xml:1608
msgid ""
"If [code]true[/code], light will cast shadows. Equivalent to [member Light."
"shadow_enabled]."
msgstr ""
-#: doc/classes/VisualServer.xml:1615
+#: doc/classes/VisualServer.xml:1616
msgid ""
"Sets the color of the shadow cast by the light. Equivalent to [member Light."
"shadow_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:1623
+#: doc/classes/VisualServer.xml:1624
msgid ""
"Sets whether GI probes capture light information from this light. "
"[i]Deprecated method.[/i] Use [method light_set_bake_mode] instead. This "
@@ -64398,7 +64550,7 @@ msgid ""
"given parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1629
+#: doc/classes/VisualServer.xml:1630
msgid ""
"Creates a lightmap capture and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64409,77 +64561,77 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1638
+#: doc/classes/VisualServer.xml:1639
#, fuzzy
msgid "Returns the size of the lightmap capture area."
msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
-#: doc/classes/VisualServer.xml:1645
+#: doc/classes/VisualServer.xml:1646
msgid "Returns the energy multiplier used by the lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:1652
+#: doc/classes/VisualServer.xml:1653
#, fuzzy
msgid "Returns the octree used by the lightmap capture."
msgstr "å›žå‚³åƒæ•¸çš„相å值。"
-#: doc/classes/VisualServer.xml:1659
+#: doc/classes/VisualServer.xml:1660
msgid ""
"Returns the cell subdivision amount used by this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1666
+#: doc/classes/VisualServer.xml:1667
msgid "Returns the cell transform for this lightmap capture's octree."
msgstr ""
-#: doc/classes/VisualServer.xml:1673
+#: doc/classes/VisualServer.xml:1674
msgid "Returns [code]true[/code] if capture is in \"interior\" mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1681
+#: doc/classes/VisualServer.xml:1682
msgid ""
"Sets the size of the area covered by the lightmap capture. Equivalent to "
"[member BakedLightmapData.bounds]."
msgstr ""
-#: doc/classes/VisualServer.xml:1689
+#: doc/classes/VisualServer.xml:1690
msgid ""
"Sets the energy multiplier for this lightmap capture. Equivalent to [member "
"BakedLightmapData.energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:1697
+#: doc/classes/VisualServer.xml:1698
msgid ""
"Sets the \"interior\" mode for this lightmap capture. Equivalent to [member "
"BakedLightmapData.interior]."
msgstr ""
-#: doc/classes/VisualServer.xml:1705
+#: doc/classes/VisualServer.xml:1706
msgid ""
"Sets the octree to be used by this lightmap capture. This function is "
"normally used by the [BakedLightmap] node. Equivalent to [member "
"BakedLightmapData.octree]."
msgstr ""
-#: doc/classes/VisualServer.xml:1713
+#: doc/classes/VisualServer.xml:1714
msgid ""
"Sets the subdivision level of this lightmap capture's octree. Equivalent to "
"[member BakedLightmapData.cell_subdiv]."
msgstr ""
-#: doc/classes/VisualServer.xml:1721
+#: doc/classes/VisualServer.xml:1722
msgid ""
"Sets the octree cell transform for this lightmap capture's octree. "
"Equivalent to [member BakedLightmapData.cell_space_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:1730
+#: doc/classes/VisualServer.xml:1731
msgid ""
"Returns a mesh of a sphere with the given amount of horizontal and vertical "
"subdivisions."
msgstr ""
-#: doc/classes/VisualServer.xml:1736
+#: doc/classes/VisualServer.xml:1737
msgid ""
"Creates an empty material and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64488,53 +64640,53 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:1745
+#: doc/classes/VisualServer.xml:1746
msgid "Returns the value of a certain material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1753
+#: doc/classes/VisualServer.xml:1754
msgid ""
"Returns the default value for the param if available. Otherwise returns an "
"empty [Variant]."
msgstr ""
-#: doc/classes/VisualServer.xml:1760
+#: doc/classes/VisualServer.xml:1761
msgid ""
"Returns the shader of a certain material's shader. Returns an empty RID if "
"the material doesn't have a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1768
+#: doc/classes/VisualServer.xml:1769
msgid "Sets a material's line width."
msgstr ""
-#: doc/classes/VisualServer.xml:1776
+#: doc/classes/VisualServer.xml:1777
msgid "Sets an object's next material."
msgstr ""
-#: doc/classes/VisualServer.xml:1785
+#: doc/classes/VisualServer.xml:1786
msgid "Sets a material's parameter."
msgstr ""
-#: doc/classes/VisualServer.xml:1793
+#: doc/classes/VisualServer.xml:1794
msgid "Sets a material's render priority."
msgstr ""
-#: doc/classes/VisualServer.xml:1801
+#: doc/classes/VisualServer.xml:1802
msgid "Sets a shader material's shader."
msgstr ""
-#: doc/classes/VisualServer.xml:1812
+#: doc/classes/VisualServer.xml:1813
msgid ""
"Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] "
"constants for types."
msgstr ""
-#: doc/classes/VisualServer.xml:1819
+#: doc/classes/VisualServer.xml:1820
msgid "Removes all surfaces from a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:1825
+#: doc/classes/VisualServer.xml:1826
msgid ""
"Creates a new mesh and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]mesh_*[/code] "
@@ -64545,100 +64697,100 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:1834
+#: doc/classes/VisualServer.xml:1835
msgid "Returns a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1841
+#: doc/classes/VisualServer.xml:1842
msgid "Returns a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1848
+#: doc/classes/VisualServer.xml:1849
msgid "Returns a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1855
+#: doc/classes/VisualServer.xml:1856
msgid "Returns a mesh's number of surfaces."
msgstr ""
-#: doc/classes/VisualServer.xml:1863
+#: doc/classes/VisualServer.xml:1864
msgid "Removes a mesh's surface."
msgstr ""
-#: doc/classes/VisualServer.xml:1871
+#: doc/classes/VisualServer.xml:1872
msgid "Sets a mesh's blend shape count."
msgstr ""
-#: doc/classes/VisualServer.xml:1879
+#: doc/classes/VisualServer.xml:1880
msgid "Sets a mesh's blend shape mode."
msgstr ""
-#: doc/classes/VisualServer.xml:1887
+#: doc/classes/VisualServer.xml:1888
msgid "Sets a mesh's custom aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1895
+#: doc/classes/VisualServer.xml:1896
msgid "Returns a mesh's surface's aabb."
msgstr ""
-#: doc/classes/VisualServer.xml:1903
+#: doc/classes/VisualServer.xml:1904
msgid "Returns a mesh's surface's vertex buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1911
+#: doc/classes/VisualServer.xml:1912
msgid "Returns a mesh's surface's amount of indices."
msgstr ""
-#: doc/classes/VisualServer.xml:1919
+#: doc/classes/VisualServer.xml:1920
msgid "Returns a mesh's surface's amount of vertices."
msgstr ""
-#: doc/classes/VisualServer.xml:1927
+#: doc/classes/VisualServer.xml:1928
msgid "Returns a mesh's surface's buffer arrays."
msgstr ""
-#: doc/classes/VisualServer.xml:1935
+#: doc/classes/VisualServer.xml:1936
msgid "Returns a mesh's surface's arrays for blend shapes."
msgstr ""
-#: doc/classes/VisualServer.xml:1943
+#: doc/classes/VisualServer.xml:1944
#, fuzzy
msgid "Returns the format of a mesh's surface."
msgstr "å›žå‚³åƒæ•¸çš„æ­£åˆ‡å€¼ã€‚"
-#: doc/classes/VisualServer.xml:1953
+#: doc/classes/VisualServer.xml:1954
msgid "Function is unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:1970
+#: doc/classes/VisualServer.xml:1971
msgid "Returns a mesh's surface's index buffer."
msgstr ""
-#: doc/classes/VisualServer.xml:1978
+#: doc/classes/VisualServer.xml:1979
msgid "Returns a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:1986
+#: doc/classes/VisualServer.xml:1987
#, fuzzy
msgid "Returns the primitive type of a mesh's surface."
msgstr "å›žå‚³åƒæ•¸çš„相å值。"
-#: doc/classes/VisualServer.xml:1994
+#: doc/classes/VisualServer.xml:1995
msgid "Returns the aabb of a mesh's surface's skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2003
+#: doc/classes/VisualServer.xml:2004
msgid "Sets a mesh's surface's material."
msgstr ""
-#: doc/classes/VisualServer.xml:2013
+#: doc/classes/VisualServer.xml:2014
msgid ""
"Updates a specific region of a vertex buffer for the specified surface. "
"Warning: this function alters the vertex buffer directly with no safety "
"mechanisms, you can easily corrupt your mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2024
+#: doc/classes/VisualServer.xml:2025
msgid ""
"Allocates space for the multimesh data. Format parameters determine how the "
"data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum "
@@ -64646,7 +64798,7 @@ msgid ""
"Equivalent to [member MultiMesh.instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2030
+#: doc/classes/VisualServer.xml:2031
msgid ""
"Creates a new multimesh on the VisualServer and returns an [RID] handle. "
"This RID will be used in all [code]multimesh_*[/code] VisualServer "
@@ -64657,69 +64809,69 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2039
+#: doc/classes/VisualServer.xml:2040
msgid ""
"Calculates and returns the axis-aligned bounding box that encloses all "
"instances within the multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2046
+#: doc/classes/VisualServer.xml:2047
msgid "Returns the number of instances allocated for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2053
+#: doc/classes/VisualServer.xml:2054
msgid ""
"Returns the RID of the mesh that will be used in drawing this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2060
+#: doc/classes/VisualServer.xml:2061
msgid "Returns the number of visible instances for this multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:2068
+#: doc/classes/VisualServer.xml:2069
msgid "Returns the color by which the specified instance will be modulated."
msgstr ""
-#: doc/classes/VisualServer.xml:2076
+#: doc/classes/VisualServer.xml:2077
msgid "Returns the custom data associated with the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2084
+#: doc/classes/VisualServer.xml:2085
msgid "Returns the [Transform] of the specified instance."
msgstr ""
-#: doc/classes/VisualServer.xml:2092
+#: doc/classes/VisualServer.xml:2093
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
msgstr ""
-#: doc/classes/VisualServer.xml:2101
+#: doc/classes/VisualServer.xml:2102
msgid ""
"Sets the color by which this instance will be modulated. Equivalent to "
"[method MultiMesh.set_instance_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2110
+#: doc/classes/VisualServer.xml:2111
msgid ""
"Sets the custom data for this instance. Custom data is passed as a [Color], "
"but is interpreted as a [code]vec4[/code] in the shader. Equivalent to "
"[method MultiMesh.set_instance_custom_data]."
msgstr ""
-#: doc/classes/VisualServer.xml:2119
+#: doc/classes/VisualServer.xml:2120
msgid ""
"Sets the [Transform] for this instance. Equivalent to [method MultiMesh."
"set_instance_transform]."
msgstr ""
-#: doc/classes/VisualServer.xml:2128
+#: doc/classes/VisualServer.xml:2129
msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
-#: doc/classes/VisualServer.xml:2136
+#: doc/classes/VisualServer.xml:2137
msgid ""
"Sets all data related to the instances in one go. This is especially useful "
"when loading the data from disk or preparing the data from GDNative.\n"
@@ -64734,20 +64886,20 @@ msgid ""
"code] is stored as 4 floats."
msgstr ""
-#: doc/classes/VisualServer.xml:2148
+#: doc/classes/VisualServer.xml:2149
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr ""
-#: doc/classes/VisualServer.xml:2156
+#: doc/classes/VisualServer.xml:2157
msgid ""
"Sets the number of instances visible at a given time. If -1, all instances "
"that have been allocated are drawn. Equivalent to [member MultiMesh."
"visible_instance_count]."
msgstr ""
-#: doc/classes/VisualServer.xml:2162
+#: doc/classes/VisualServer.xml:2163
msgid ""
"Creates a new omni light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -64758,7 +64910,7 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2170
+#: doc/classes/VisualServer.xml:2171
msgid ""
"Creates a particle system and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64769,23 +64921,23 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2179
+#: doc/classes/VisualServer.xml:2180
msgid ""
"Calculates and returns the axis-aligned bounding box that contains all the "
"particles. Equivalent to [method Particles.capture_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2186
+#: doc/classes/VisualServer.xml:2187
msgid "Returns [code]true[/code] if particles are currently set to emitting."
msgstr ""
-#: doc/classes/VisualServer.xml:2193
+#: doc/classes/VisualServer.xml:2194
msgid ""
"Returns [code]true[/code] if particles are not emitting and particles are "
"set to inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2200
+#: doc/classes/VisualServer.xml:2201
msgid ""
"Add particle system to list of particle systems that need to be updated. "
"Update will take place on the next frame, or on the next call to [method "
@@ -64793,118 +64945,118 @@ msgid ""
"instances_cull_ray]."
msgstr ""
-#: doc/classes/VisualServer.xml:2207
+#: doc/classes/VisualServer.xml:2208
msgid ""
"Reset the particles on the next update. Equivalent to [method Particles."
"restart]."
msgstr ""
-#: doc/classes/VisualServer.xml:2215
+#: doc/classes/VisualServer.xml:2216
msgid ""
"Sets the number of particles to be drawn and allocates the memory for them. "
"Equivalent to [member Particles.amount]."
msgstr ""
-#: doc/classes/VisualServer.xml:2223
+#: doc/classes/VisualServer.xml:2224
msgid ""
"Sets a custom axis-aligned bounding box for the particle system. Equivalent "
"to [member Particles.visibility_aabb]."
msgstr ""
-#: doc/classes/VisualServer.xml:2231
+#: doc/classes/VisualServer.xml:2232
msgid ""
"Sets the draw order of the particles to one of the named enums from [enum "
"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent "
"to [member Particles.draw_order]."
msgstr ""
-#: doc/classes/VisualServer.xml:2240
+#: doc/classes/VisualServer.xml:2241
msgid ""
"Sets the mesh to be used for the specified draw pass. Equivalent to [member "
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
-#: doc/classes/VisualServer.xml:2248
+#: doc/classes/VisualServer.xml:2249
msgid ""
"Sets the number of draw passes to use. Equivalent to [member Particles."
"draw_passes]."
msgstr ""
-#: doc/classes/VisualServer.xml:2256
+#: doc/classes/VisualServer.xml:2257
msgid ""
"Sets the [Transform] that will be used by the particles when they first emit."
msgstr ""
-#: doc/classes/VisualServer.xml:2264
+#: doc/classes/VisualServer.xml:2265
msgid ""
"If [code]true[/code], particles will emit over time. Setting to false does "
"not reset the particles, but only stops their emission. Equivalent to "
"[member Particles.emitting]."
msgstr ""
-#: doc/classes/VisualServer.xml:2272
+#: doc/classes/VisualServer.xml:2273
msgid ""
"Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2280
+#: doc/classes/VisualServer.xml:2281
msgid ""
"Sets the frame rate that the particle system rendering will be fixed to. "
"Equivalent to [member Particles.fixed_fps]."
msgstr ""
-#: doc/classes/VisualServer.xml:2288
+#: doc/classes/VisualServer.xml:2289
msgid ""
"If [code]true[/code], uses fractional delta which smooths the movement of "
"the particles. Equivalent to [member Particles.fract_delta]."
msgstr ""
-#: doc/classes/VisualServer.xml:2296
+#: doc/classes/VisualServer.xml:2297
msgid ""
"Sets the lifetime of each particle in the system. Equivalent to [member "
"Particles.lifetime]."
msgstr ""
-#: doc/classes/VisualServer.xml:2304
+#: doc/classes/VisualServer.xml:2305
msgid ""
"If [code]true[/code], particles will emit once and then stop. Equivalent to "
"[member Particles.one_shot]."
msgstr ""
-#: doc/classes/VisualServer.xml:2312
+#: doc/classes/VisualServer.xml:2313
msgid ""
"Sets the preprocess time for the particles' animation. This lets you delay "
"starting an animation until after the particles have begun emitting. "
"Equivalent to [member Particles.preprocess]."
msgstr ""
-#: doc/classes/VisualServer.xml:2320
+#: doc/classes/VisualServer.xml:2321
msgid ""
"Sets the material for processing the particles.\n"
"[b]Note:[/b] This is not the material used to draw the materials. Equivalent "
"to [member Particles.process_material]."
msgstr ""
-#: doc/classes/VisualServer.xml:2329
+#: doc/classes/VisualServer.xml:2330
msgid ""
"Sets the emission randomness ratio. This randomizes the emission of "
"particles within their phase. Equivalent to [member Particles.randomness]."
msgstr ""
-#: doc/classes/VisualServer.xml:2337
+#: doc/classes/VisualServer.xml:2338
msgid ""
"Sets the speed scale of the particle system. Equivalent to [member Particles."
"speed_scale]."
msgstr ""
-#: doc/classes/VisualServer.xml:2345
+#: doc/classes/VisualServer.xml:2346
msgid ""
"If [code]true[/code], particles use local coordinates. If [code]false[/code] "
"they use global coordinates. Equivalent to [member Particles.local_coords]."
msgstr ""
-#: doc/classes/VisualServer.xml:2351
+#: doc/classes/VisualServer.xml:2352
msgid ""
"Creates a reflection probe and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -64915,59 +65067,59 @@ msgid ""
"[method instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2361
+#: doc/classes/VisualServer.xml:2362
msgid ""
"If [code]true[/code], reflections will ignore sky contribution. Equivalent "
"to [member ReflectionProbe.interior_enable]."
msgstr ""
-#: doc/classes/VisualServer.xml:2369
+#: doc/classes/VisualServer.xml:2370
msgid ""
"Sets the render cull mask for this reflection probe. Only instances with a "
"matching cull mask will be rendered by this probe. Equivalent to [member "
"ReflectionProbe.cull_mask]."
msgstr ""
-#: doc/classes/VisualServer.xml:2377
+#: doc/classes/VisualServer.xml:2378
msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
msgstr ""
-#: doc/classes/VisualServer.xml:2385
+#: doc/classes/VisualServer.xml:2386
msgid ""
"If [code]true[/code], computes shadows in the reflection probe. This makes "
"the reflection much slower to compute. Equivalent to [member ReflectionProbe."
"enable_shadows]."
msgstr ""
-#: doc/classes/VisualServer.xml:2393
+#: doc/classes/VisualServer.xml:2394
msgid ""
"Sets the size of the area that the reflection probe will capture. Equivalent "
"to [member ReflectionProbe.extents]."
msgstr ""
-#: doc/classes/VisualServer.xml:2401
+#: doc/classes/VisualServer.xml:2402
msgid ""
"Sets the intensity of the reflection probe. Intensity modulates the strength "
"of the reflection. Equivalent to [member ReflectionProbe.intensity]."
msgstr ""
-#: doc/classes/VisualServer.xml:2409
+#: doc/classes/VisualServer.xml:2410
msgid ""
"Sets the ambient light color for this reflection probe when set to interior "
"mode. Equivalent to [member ReflectionProbe.interior_ambient_color]."
msgstr ""
-#: doc/classes/VisualServer.xml:2417
+#: doc/classes/VisualServer.xml:2418
msgid ""
"Sets the energy multiplier for this reflection probes ambient light "
"contribution when set to interior mode. Equivalent to [member "
"ReflectionProbe.interior_ambient_energy]."
msgstr ""
-#: doc/classes/VisualServer.xml:2425
+#: doc/classes/VisualServer.xml:2426
msgid ""
"Sets the contribution value for how much the reflection affects the ambient "
"light for this reflection probe when set to interior mode. Useful so that "
@@ -64975,25 +65127,25 @@ msgid ""
"ReflectionProbe.interior_ambient_contrib]."
msgstr ""
-#: doc/classes/VisualServer.xml:2433
+#: doc/classes/VisualServer.xml:2434
msgid ""
"Sets the max distance away from the probe an object can be before it is "
"culled. Equivalent to [member ReflectionProbe.max_distance]."
msgstr ""
-#: doc/classes/VisualServer.xml:2441
+#: doc/classes/VisualServer.xml:2442
msgid ""
"Sets the origin offset to be used when this reflection probe is in box "
"project mode. Equivalent to [member ReflectionProbe.origin_offset]."
msgstr ""
-#: doc/classes/VisualServer.xml:2449
+#: doc/classes/VisualServer.xml:2450
msgid ""
"Sets how often the reflection probe updates. Can either be once or every "
"frame. See [enum ReflectionProbeUpdateMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2458
+#: doc/classes/VisualServer.xml:2459
msgid ""
"Schedules a callback to the corresponding named [code]method[/code] on "
"[code]where[/code] after a frame has been drawn.\n"
@@ -65001,7 +65153,7 @@ msgid ""
"[code]userdata[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:2465
+#: doc/classes/VisualServer.xml:2466
msgid ""
"Creates a scenario and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]scenario_*[/"
@@ -65011,30 +65163,30 @@ msgid ""
"The scenario is the 3D world that all the visual instances exist in."
msgstr ""
-#: doc/classes/VisualServer.xml:2475
+#: doc/classes/VisualServer.xml:2476
msgid ""
"Sets the [enum ScenarioDebugMode] for this scenario. See [enum "
"ScenarioDebugMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2483
+#: doc/classes/VisualServer.xml:2484
msgid "Sets the environment that will be used with this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2491
+#: doc/classes/VisualServer.xml:2492
msgid ""
"Sets the fallback environment to be used by this scenario. The fallback "
"environment is used if no environment is set. Internally, this is used by "
"the editor to provide a default environment."
msgstr ""
-#: doc/classes/VisualServer.xml:2500
+#: doc/classes/VisualServer.xml:2501
msgid ""
"Sets the size of the reflection atlas shared by all reflection probes in "
"this scenario."
msgstr ""
-#: doc/classes/VisualServer.xml:2510
+#: doc/classes/VisualServer.xml:2511
msgid ""
"Sets a boot image. The color defines the background color. If [code]scale[/"
"code] is [code]true[/code], the image will be scaled to fit the screen size. "
@@ -65043,19 +65195,19 @@ msgid ""
"the image will be scaled with nearest-neighbor interpolation."
msgstr ""
-#: doc/classes/VisualServer.xml:2517
+#: doc/classes/VisualServer.xml:2518
msgid ""
"If [code]true[/code], the engine will generate wireframes for use with the "
"wireframe debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:2524
+#: doc/classes/VisualServer.xml:2525
msgid ""
"Sets the default clear color which is used when a specific clear color has "
"not been selected."
msgstr ""
-#: doc/classes/VisualServer.xml:2531
+#: doc/classes/VisualServer.xml:2532
msgid ""
"Sets the scale to apply to the passage of time for the shaders' [code]TIME[/"
"code] builtin.\n"
@@ -65063,11 +65215,11 @@ msgid ""
"count the real time as it goes by, without narrowing or stretching it."
msgstr ""
-#: doc/classes/VisualServer.xml:2539
+#: doc/classes/VisualServer.xml:2540
msgid "Enables or disables occlusion culling."
msgstr ""
-#: doc/classes/VisualServer.xml:2545
+#: doc/classes/VisualServer.xml:2546
msgid ""
"Creates an empty shader and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]shader_*[/"
@@ -65076,47 +65228,47 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2553
+#: doc/classes/VisualServer.xml:2554
msgid "Returns a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2561
+#: doc/classes/VisualServer.xml:2562
msgid "Returns a default texture from a shader searched by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2568
+#: doc/classes/VisualServer.xml:2569
msgid "Returns the parameters of a shader."
msgstr ""
-#: doc/classes/VisualServer.xml:2576
+#: doc/classes/VisualServer.xml:2577
msgid "Sets a shader's code."
msgstr ""
-#: doc/classes/VisualServer.xml:2585
+#: doc/classes/VisualServer.xml:2586
msgid "Sets a shader's default texture. Overwrites the texture given by name."
msgstr ""
-#: doc/classes/VisualServer.xml:2594
+#: doc/classes/VisualServer.xml:2595
msgid "Allocates the GPU buffers for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2602
+#: doc/classes/VisualServer.xml:2603
msgid "Returns the [Transform] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2610
+#: doc/classes/VisualServer.xml:2611
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2619
+#: doc/classes/VisualServer.xml:2620
msgid "Sets the [Transform] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2628
+#: doc/classes/VisualServer.xml:2629
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2634
+#: doc/classes/VisualServer.xml:2635
msgid ""
"Creates a skeleton and adds it to the VisualServer. It can be accessed with "
"the RID that is returned. This RID will be used in all [code]skeleton_*[/"
@@ -65125,11 +65277,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2642
+#: doc/classes/VisualServer.xml:2643
msgid "Returns the number of bones allocated for this skeleton."
msgstr ""
-#: doc/classes/VisualServer.xml:2648
+#: doc/classes/VisualServer.xml:2649
msgid ""
"Creates an empty sky and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]sky_*[/"
@@ -65138,11 +65290,11 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2658
+#: doc/classes/VisualServer.xml:2659
msgid "Sets a sky's texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2664
+#: doc/classes/VisualServer.xml:2665
msgid ""
"Creates a spot light and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID can be used in most [code]light_*[/"
@@ -65153,15 +65305,15 @@ msgid ""
"instance_set_base] using the returned RID."
msgstr ""
-#: doc/classes/VisualServer.xml:2685
+#: doc/classes/VisualServer.xml:2686
msgid "Allocates the GPU memory for the texture."
msgstr ""
-#: doc/classes/VisualServer.xml:2693
+#: doc/classes/VisualServer.xml:2694
msgid "Binds the texture to a texture slot."
msgstr ""
-#: doc/classes/VisualServer.xml:2699
+#: doc/classes/VisualServer.xml:2700
msgid ""
"Creates an empty texture and adds it to the VisualServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]texture_*[/"
@@ -65170,102 +65322,102 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2708
+#: doc/classes/VisualServer.xml:2709
msgid ""
"Creates a texture, allocates the space for an image, and fills in the image."
msgstr ""
-#: doc/classes/VisualServer.xml:2714
+#: doc/classes/VisualServer.xml:2715
msgid "Returns a list of all the textures and their information."
msgstr ""
-#: doc/classes/VisualServer.xml:2722
+#: doc/classes/VisualServer.xml:2723
msgid ""
"Returns a copy of a texture's image unless it's a CubeMap, in which case it "
"returns the [RID] of the image at one of the cubes sides."
msgstr ""
-#: doc/classes/VisualServer.xml:2729
+#: doc/classes/VisualServer.xml:2730
#, fuzzy
msgid "Returns the depth of the texture."
msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
-#: doc/classes/VisualServer.xml:2736
+#: doc/classes/VisualServer.xml:2737
#, fuzzy
msgid "Returns the flags of a texture."
msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
-#: doc/classes/VisualServer.xml:2743
+#: doc/classes/VisualServer.xml:2744
#, fuzzy
msgid "Returns the format of the texture's image."
msgstr "å›žå‚³åƒæ•¸çš„åæ­£åˆ‡å€¼ã€‚"
-#: doc/classes/VisualServer.xml:2750
+#: doc/classes/VisualServer.xml:2751
#, fuzzy
msgid "Returns the texture's height."
msgstr "å›žå‚³åƒæ•¸çš„æ­£åˆ‡å€¼ã€‚"
-#: doc/classes/VisualServer.xml:2757
+#: doc/classes/VisualServer.xml:2758
#, fuzzy
msgid "Returns the texture's path."
msgstr "å›žå‚³åƒæ•¸çš„æ­£åˆ‡å€¼ã€‚"
-#: doc/classes/VisualServer.xml:2764
+#: doc/classes/VisualServer.xml:2765
#, fuzzy
msgid "Returns the opengl id of the texture's image."
msgstr "å›žå‚³åƒæ•¸çš„雙曲正弦值。"
-#: doc/classes/VisualServer.xml:2771
+#: doc/classes/VisualServer.xml:2772
#, fuzzy
msgid "Returns the type of the texture, can be any of the [enum TextureType]."
msgstr "å›žå‚³åƒæ•¸çš„平方根之倒數。"
-#: doc/classes/VisualServer.xml:2778
+#: doc/classes/VisualServer.xml:2779
msgid "Returns the texture's width."
msgstr ""
-#: doc/classes/VisualServer.xml:2787
+#: doc/classes/VisualServer.xml:2788
msgid ""
"Sets the texture's image data. If it's a CubeMap, it sets the image data at "
"a cube side."
msgstr ""
-#: doc/classes/VisualServer.xml:2803
+#: doc/classes/VisualServer.xml:2804
msgid ""
"Sets a part of the data for a texture. Warning: this function calls the "
"underlying graphics API directly and may corrupt your texture if used "
"improperly."
msgstr ""
-#: doc/classes/VisualServer.xml:2811
+#: doc/classes/VisualServer.xml:2812
msgid "Sets the texture's flags. See [enum TextureFlags] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2819
+#: doc/classes/VisualServer.xml:2820
msgid "Sets the texture's path."
msgstr ""
-#: doc/classes/VisualServer.xml:2826
+#: doc/classes/VisualServer.xml:2827
msgid ""
"If [code]true[/code], sets internal processes to shrink all image data to "
"half the size."
msgstr ""
-#: doc/classes/VisualServer.xml:2843
+#: doc/classes/VisualServer.xml:2844
msgid ""
"If [code]true[/code], the image will be stored in the texture's images array "
"if overwritten."
msgstr ""
-#: doc/classes/VisualServer.xml:2851
+#: doc/classes/VisualServer.xml:2852
msgid "Sets a viewport's camera."
msgstr ""
-#: doc/classes/VisualServer.xml:2859
+#: doc/classes/VisualServer.xml:2860
msgid "Sets a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2868
+#: doc/classes/VisualServer.xml:2869
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 "
@@ -65287,7 +65439,7 @@ msgid ""
"viewport_set_render_direct_to_screen]."
msgstr ""
-#: doc/classes/VisualServer.xml:2881
+#: doc/classes/VisualServer.xml:2882
msgid ""
"Creates an empty viewport and adds it to the VisualServer. It can be "
"accessed with the RID that is returned. This RID will be used in all "
@@ -65296,84 +65448,84 @@ msgid ""
"VisualServer's [method free_rid] static method."
msgstr ""
-#: doc/classes/VisualServer.xml:2889
+#: doc/classes/VisualServer.xml:2890
msgid "Detaches the viewport from the screen."
msgstr ""
-#: doc/classes/VisualServer.xml:2897
+#: doc/classes/VisualServer.xml:2898
msgid ""
"Returns a viewport's render information. For options, see the [enum "
"ViewportRenderInfo] constants."
msgstr ""
-#: doc/classes/VisualServer.xml:2904
+#: doc/classes/VisualServer.xml:2905
msgid "Returns the viewport's last rendered frame."
msgstr ""
-#: doc/classes/VisualServer.xml:2912
+#: doc/classes/VisualServer.xml:2913
msgid "Detaches a viewport from a canvas and vice versa."
msgstr ""
-#: doc/classes/VisualServer.xml:2920
+#: doc/classes/VisualServer.xml:2921
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
-#: doc/classes/VisualServer.xml:2930
+#: doc/classes/VisualServer.xml:2931
msgid ""
"Sets the stacking order for a viewport's canvas.\n"
"[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] "
"specifies the stacking order of the canvas among those in the same layer."
msgstr ""
-#: doc/classes/VisualServer.xml:2940
+#: doc/classes/VisualServer.xml:2941
msgid "Sets the transformation of a viewport's canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:2948
+#: doc/classes/VisualServer.xml:2949
msgid ""
"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:2956
+#: doc/classes/VisualServer.xml:2957
msgid ""
"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:2964
+#: doc/classes/VisualServer.xml:2965
msgid "If [code]true[/code], a viewport's 3D rendering is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2972
+#: doc/classes/VisualServer.xml:2973
msgid ""
"If [code]true[/code], rendering of a viewport's environment is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:2980
+#: doc/classes/VisualServer.xml:2981
msgid "Sets the viewport's global transformation matrix."
msgstr ""
-#: doc/classes/VisualServer.xml:2988
+#: doc/classes/VisualServer.xml:2989
msgid "If [code]true[/code], the viewport renders to hdr."
msgstr ""
-#: doc/classes/VisualServer.xml:2996
+#: doc/classes/VisualServer.xml:2997
msgid "If [code]true[/code], the viewport's canvas is not rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3004
+#: doc/classes/VisualServer.xml:3005
msgid "Currently unimplemented in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3012
+#: doc/classes/VisualServer.xml:3013
msgid "Sets the anti-aliasing mode. See [enum ViewportMSAA] for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3020
+#: doc/classes/VisualServer.xml:3021
msgid "Sets the viewport's parent to another viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3028
+#: doc/classes/VisualServer.xml:3029
msgid ""
"If [code]true[/code], render the contents of the viewport directly to "
"screen. This allows a low-level optimization where you can skip drawing a "
@@ -65389,24 +65541,24 @@ msgid ""
"significantly larger than the window size."
msgstr ""
-#: doc/classes/VisualServer.xml:3036
+#: doc/classes/VisualServer.xml:3037
msgid ""
"Sets a viewport's scenario.\n"
"The scenario contains information about the [enum ScenarioDebugMode], "
"environment information, reflection atlas etc."
msgstr ""
-#: doc/classes/VisualServer.xml:3046
+#: doc/classes/VisualServer.xml:3047
msgid "Sets the shadow atlas quadrant's subdivision."
msgstr ""
-#: doc/classes/VisualServer.xml:3054
+#: doc/classes/VisualServer.xml:3055
msgid ""
"Sets the size of the shadow atlas's images (used for omni and spot lights). "
"The value will be rounded up to the nearest power of 2."
msgstr ""
-#: doc/classes/VisualServer.xml:3062
+#: doc/classes/VisualServer.xml:3063
msgid ""
"Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If "
"set to a value greater than [code]0.0[/code], contrast-adaptive sharpening "
@@ -65416,34 +65568,34 @@ msgid ""
"viewport_set_use_fxaa]."
msgstr ""
-#: doc/classes/VisualServer.xml:3071
+#: doc/classes/VisualServer.xml:3072
msgid "Sets the viewport's width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3079
+#: doc/classes/VisualServer.xml:3080
msgid ""
"If [code]true[/code], the viewport renders its background as transparent."
msgstr ""
-#: doc/classes/VisualServer.xml:3087
+#: doc/classes/VisualServer.xml:3088
msgid ""
"Sets when the viewport should be updated. See [enum ViewportUpdateMode] "
"constants for options."
msgstr ""
-#: doc/classes/VisualServer.xml:3095
+#: doc/classes/VisualServer.xml:3096
msgid ""
"Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for "
"options."
msgstr ""
-#: doc/classes/VisualServer.xml:3103
+#: doc/classes/VisualServer.xml:3104
msgid ""
"If [code]true[/code], the viewport uses augmented or virtual reality "
"technologies. See [ARVRInterface]."
msgstr ""
-#: doc/classes/VisualServer.xml:3111
+#: doc/classes/VisualServer.xml:3112
msgid ""
"If [code]true[/code], uses a fast post-processing filter to make banding "
"significantly less visible. In some cases, debanding may introduce a "
@@ -65454,7 +65606,7 @@ msgid ""
"also be [code]true[/code] for debanding to be effective."
msgstr ""
-#: doc/classes/VisualServer.xml:3120
+#: doc/classes/VisualServer.xml:3121
msgid ""
"Enables fast approximate antialiasing for this viewport. FXAA is a popular "
"screen-space antialiasing method, which is fast but will make the image look "
@@ -65464,208 +65616,208 @@ msgid ""
"viewport_set_sharpen_intensity])."
msgstr ""
-#: doc/classes/VisualServer.xml:3128
+#: doc/classes/VisualServer.xml:3129
msgid "If [code]true[/code], the viewport's rendering is flipped vertically."
msgstr ""
-#: doc/classes/VisualServer.xml:3134
+#: doc/classes/VisualServer.xml:3135
msgid ""
"If [code]false[/code], disables rendering completely, but the engine logic "
"is still being processed. You can call [method force_draw] to draw a frame "
"even with rendering disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3140
+#: doc/classes/VisualServer.xml:3141
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3145
+#: doc/classes/VisualServer.xml:3146
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
msgstr ""
-#: doc/classes/VisualServer.xml:3151
+#: doc/classes/VisualServer.xml:3152
msgid "Marks an error that shows that the index array is empty."
msgstr ""
-#: doc/classes/VisualServer.xml:3154
+#: doc/classes/VisualServer.xml:3155
msgid "Number of weights/bones per vertex."
msgstr ""
-#: doc/classes/VisualServer.xml:3157
+#: doc/classes/VisualServer.xml:3158
msgid "The minimum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3160
+#: doc/classes/VisualServer.xml:3161
msgid "The maximum Z-layer for canvas items."
msgstr ""
-#: doc/classes/VisualServer.xml:3163
+#: doc/classes/VisualServer.xml:3164
msgid ""
"Max number of glow levels that can be used with glow post-process effect."
msgstr ""
-#: doc/classes/VisualServer.xml:3166
+#: doc/classes/VisualServer.xml:3167
msgid "Unused enum in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3169
+#: doc/classes/VisualServer.xml:3170
msgid "The minimum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3172
+#: doc/classes/VisualServer.xml:3173
msgid "The maximum renderpriority of all materials."
msgstr ""
-#: doc/classes/VisualServer.xml:3175
+#: doc/classes/VisualServer.xml:3176
msgid "Marks the left side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3178
+#: doc/classes/VisualServer.xml:3179
msgid "Marks the right side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3181
+#: doc/classes/VisualServer.xml:3182
msgid "Marks the bottom side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3184
+#: doc/classes/VisualServer.xml:3185
msgid "Marks the top side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3187
+#: doc/classes/VisualServer.xml:3188
msgid "Marks the front side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3190
+#: doc/classes/VisualServer.xml:3191
msgid "Marks the back side of a cubemap."
msgstr ""
-#: doc/classes/VisualServer.xml:3193
+#: doc/classes/VisualServer.xml:3194
msgid "Normal texture with 2 dimensions, width and height."
msgstr ""
-#: doc/classes/VisualServer.xml:3196
+#: doc/classes/VisualServer.xml:3197
msgid ""
"Texture made up of six faces, can be looked up with a [code]vec3[/code] in "
"shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3199
+#: doc/classes/VisualServer.xml:3200
msgid "An array of 2-dimensional textures."
msgstr ""
-#: doc/classes/VisualServer.xml:3202
+#: doc/classes/VisualServer.xml:3203
msgid "A 3-dimensional texture with width, height, and depth."
msgstr ""
-#: doc/classes/VisualServer.xml:3208
+#: doc/classes/VisualServer.xml:3209
msgid "Repeats the texture (instead of clamp to edge)."
msgstr ""
-#: doc/classes/VisualServer.xml:3221
+#: doc/classes/VisualServer.xml:3222
msgid "Repeats the texture with alternate sections mirrored."
msgstr ""
-#: doc/classes/VisualServer.xml:3227
+#: doc/classes/VisualServer.xml:3228
msgid ""
"Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant "
"TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3230
+#: doc/classes/VisualServer.xml:3231
msgid "Shader is a 3D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3233
+#: doc/classes/VisualServer.xml:3234
msgid "Shader is a 2D shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3236
+#: doc/classes/VisualServer.xml:3237
msgid "Shader is a particle shader."
msgstr ""
-#: doc/classes/VisualServer.xml:3239
+#: doc/classes/VisualServer.xml:3240
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3242
+#: doc/classes/VisualServer.xml:3243
msgid "Array is a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3245
+#: doc/classes/VisualServer.xml:3246
msgid "Array is a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3248
+#: doc/classes/VisualServer.xml:3249
msgid "Array is a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3251
+#: doc/classes/VisualServer.xml:3252
msgid "Array is a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3254
+#: doc/classes/VisualServer.xml:3255
msgid "Array is an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3257
+#: doc/classes/VisualServer.xml:3258
msgid "Array is an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3260
+#: doc/classes/VisualServer.xml:3261
msgid "Array contains bone information."
msgstr ""
-#: doc/classes/VisualServer.xml:3263
+#: doc/classes/VisualServer.xml:3264
msgid "Array is weight information."
msgstr ""
-#: doc/classes/VisualServer.xml:3266
+#: doc/classes/VisualServer.xml:3267
msgid "Array is index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3272
+#: doc/classes/VisualServer.xml:3273
msgid "Flag used to mark a vertex array."
msgstr ""
-#: doc/classes/VisualServer.xml:3275
+#: doc/classes/VisualServer.xml:3276
msgid "Flag used to mark a normal array."
msgstr ""
-#: doc/classes/VisualServer.xml:3278
+#: doc/classes/VisualServer.xml:3279
msgid "Flag used to mark a tangent array."
msgstr ""
-#: doc/classes/VisualServer.xml:3281
+#: doc/classes/VisualServer.xml:3282
msgid "Flag used to mark a color array."
msgstr ""
-#: doc/classes/VisualServer.xml:3284
+#: doc/classes/VisualServer.xml:3285
msgid "Flag used to mark an UV coordinates array."
msgstr ""
-#: doc/classes/VisualServer.xml:3287
+#: doc/classes/VisualServer.xml:3288
msgid ""
"Flag used to mark an UV coordinates array for the second UV coordinates."
msgstr ""
-#: doc/classes/VisualServer.xml:3290
+#: doc/classes/VisualServer.xml:3291
msgid "Flag used to mark a bone information array."
msgstr ""
-#: doc/classes/VisualServer.xml:3293
+#: doc/classes/VisualServer.xml:3294
msgid "Flag used to mark a weights array."
msgstr ""
-#: doc/classes/VisualServer.xml:3296
+#: doc/classes/VisualServer.xml:3297
msgid "Flag used to mark an index array."
msgstr ""
-#: doc/classes/VisualServer.xml:3335
+#: doc/classes/VisualServer.xml:3336
msgid ""
"Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant "
"ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant "
@@ -65674,672 +65826,672 @@ msgid ""
"ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly."
msgstr ""
-#: doc/classes/VisualServer.xml:3338
+#: doc/classes/VisualServer.xml:3339
msgid "Primitive to draw consists of points."
msgstr ""
-#: doc/classes/VisualServer.xml:3341
+#: doc/classes/VisualServer.xml:3342
msgid "Primitive to draw consists of lines."
msgstr ""
-#: doc/classes/VisualServer.xml:3344
+#: doc/classes/VisualServer.xml:3345
msgid "Primitive to draw consists of a line strip from start to end."
msgstr ""
-#: doc/classes/VisualServer.xml:3347
+#: doc/classes/VisualServer.xml:3348
msgid ""
"Primitive to draw consists of a line loop (a line strip with a line between "
"the last and the first vertex)."
msgstr ""
-#: doc/classes/VisualServer.xml:3350
+#: doc/classes/VisualServer.xml:3351
msgid "Primitive to draw consists of triangles."
msgstr ""
-#: doc/classes/VisualServer.xml:3353
+#: doc/classes/VisualServer.xml:3354
msgid ""
"Primitive to draw consists of a triangle strip (the last 3 vertices are "
"always combined to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3356
+#: doc/classes/VisualServer.xml:3357
msgid ""
"Primitive to draw consists of a triangle strip (the last 2 vertices are "
"always combined with the first to make a triangle)."
msgstr ""
-#: doc/classes/VisualServer.xml:3359
+#: doc/classes/VisualServer.xml:3360
msgid "Represents the size of the [enum PrimitiveType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3368
+#: doc/classes/VisualServer.xml:3369
msgid "Is a directional (sun) light."
msgstr ""
-#: doc/classes/VisualServer.xml:3371
+#: doc/classes/VisualServer.xml:3372
msgid "Is an omni light."
msgstr ""
-#: doc/classes/VisualServer.xml:3374
+#: doc/classes/VisualServer.xml:3375
msgid "Is a spot light."
msgstr ""
-#: doc/classes/VisualServer.xml:3377
+#: doc/classes/VisualServer.xml:3378
msgid "The light's energy."
msgstr ""
-#: doc/classes/VisualServer.xml:3380
+#: doc/classes/VisualServer.xml:3381
msgid "Secondary multiplier used with indirect light (light bounces)."
msgstr ""
-#: doc/classes/VisualServer.xml:3383
+#: doc/classes/VisualServer.xml:3384
msgid ""
"The light's size, currently only used for soft shadows in baked lightmaps."
msgstr ""
-#: doc/classes/VisualServer.xml:3386
+#: doc/classes/VisualServer.xml:3387
msgid "The light's influence on specularity."
msgstr ""
-#: doc/classes/VisualServer.xml:3389
+#: doc/classes/VisualServer.xml:3390
msgid "The light's range."
msgstr ""
-#: doc/classes/VisualServer.xml:3392
+#: doc/classes/VisualServer.xml:3393
msgid "The light's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3395
+#: doc/classes/VisualServer.xml:3396
msgid "The spotlight's angle."
msgstr ""
-#: doc/classes/VisualServer.xml:3398
+#: doc/classes/VisualServer.xml:3399
msgid "The spotlight's attenuation."
msgstr ""
-#: doc/classes/VisualServer.xml:3401
+#: doc/classes/VisualServer.xml:3402
msgid "Scales the shadow color."
msgstr ""
-#: doc/classes/VisualServer.xml:3404
+#: doc/classes/VisualServer.xml:3405
msgid "Max distance that shadows will be rendered."
msgstr ""
-#: doc/classes/VisualServer.xml:3407
+#: doc/classes/VisualServer.xml:3408
msgid "Proportion of shadow atlas occupied by the first split."
msgstr ""
-#: doc/classes/VisualServer.xml:3410
+#: doc/classes/VisualServer.xml:3411
msgid "Proportion of shadow atlas occupied by the second split."
msgstr ""
-#: doc/classes/VisualServer.xml:3413
+#: doc/classes/VisualServer.xml:3414
msgid ""
"Proportion of shadow atlas occupied by the third split. The fourth split "
"occupies the rest."
msgstr ""
-#: doc/classes/VisualServer.xml:3416
+#: doc/classes/VisualServer.xml:3417
msgid ""
"Normal bias used to offset shadow lookup by object normal. Can be used to "
"fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3419
+#: doc/classes/VisualServer.xml:3420
msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr ""
-#: doc/classes/VisualServer.xml:3422
+#: doc/classes/VisualServer.xml:3423
msgid ""
"Increases bias on further splits to fix self-shadowing that only occurs far "
"away from the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3425
+#: doc/classes/VisualServer.xml:3426
msgid "Represents the size of the [enum LightParam] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3434
+#: doc/classes/VisualServer.xml:3435
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr ""
-#: doc/classes/VisualServer.xml:3437
+#: doc/classes/VisualServer.xml:3438
msgid ""
"Use a cubemap shadow map for omni lights. Slower but better quality than "
"dual paraboloid."
msgstr ""
-#: doc/classes/VisualServer.xml:3440
+#: doc/classes/VisualServer.xml:3441
msgid "Use more detail vertically when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3443
+#: doc/classes/VisualServer.xml:3444
msgid "Use more detail horizontally when computing shadow map."
msgstr ""
-#: doc/classes/VisualServer.xml:3446
+#: doc/classes/VisualServer.xml:3447
msgid "Use orthogonal shadow projection for directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3449
+#: doc/classes/VisualServer.xml:3450
msgid "Use 2 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3452
+#: doc/classes/VisualServer.xml:3453
msgid "Use 4 splits for shadow projection when using directional light."
msgstr ""
-#: doc/classes/VisualServer.xml:3455
+#: doc/classes/VisualServer.xml:3456
msgid ""
"Keeps shadows stable as camera moves but has lower effective resolution."
msgstr ""
-#: doc/classes/VisualServer.xml:3458
+#: doc/classes/VisualServer.xml:3459
msgid ""
"Optimize use of shadow maps, increasing the effective resolution. But may "
"result in shadows moving or flickering slightly."
msgstr ""
-#: doc/classes/VisualServer.xml:3461
+#: doc/classes/VisualServer.xml:3462
msgid "Do not update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3464
+#: doc/classes/VisualServer.xml:3465
msgid "Update the viewport once then set to disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3467
+#: doc/classes/VisualServer.xml:3468
msgid "Update the viewport whenever it is visible."
msgstr ""
-#: doc/classes/VisualServer.xml:3470
+#: doc/classes/VisualServer.xml:3471
msgid "Always update the viewport."
msgstr ""
-#: doc/classes/VisualServer.xml:3473
+#: doc/classes/VisualServer.xml:3474
msgid "The viewport is always cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3476
+#: doc/classes/VisualServer.xml:3477
msgid "The viewport is never cleared before drawing."
msgstr ""
-#: doc/classes/VisualServer.xml:3479
+#: doc/classes/VisualServer.xml:3480
msgid ""
"The viewport is cleared once, then the clear mode is set to [constant "
"VIEWPORT_CLEAR_NEVER]."
msgstr ""
-#: doc/classes/VisualServer.xml:3482
+#: doc/classes/VisualServer.xml:3483
msgid "Multisample antialiasing is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3485
+#: doc/classes/VisualServer.xml:3486
msgid "Multisample antialiasing is set to 2×."
msgstr ""
-#: doc/classes/VisualServer.xml:3488
+#: doc/classes/VisualServer.xml:3489
msgid "Multisample antialiasing is set to 4×."
msgstr ""
-#: doc/classes/VisualServer.xml:3491
+#: doc/classes/VisualServer.xml:3492
msgid "Multisample antialiasing is set to 8×."
msgstr ""
-#: doc/classes/VisualServer.xml:3494
+#: doc/classes/VisualServer.xml:3495
msgid "Multisample antialiasing is set to 16×."
msgstr ""
-#: doc/classes/VisualServer.xml:3497
+#: doc/classes/VisualServer.xml:3498
msgid ""
"Multisample antialiasing is set to 2× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3500
+#: doc/classes/VisualServer.xml:3501
msgid ""
"Multisample antialiasing is set to 4× on external texture. Special mode for "
"GLES2 Android VR (Oculus Quest and Go)."
msgstr ""
-#: doc/classes/VisualServer.xml:3503
+#: doc/classes/VisualServer.xml:3504
msgid "The Viewport does not render 3D but samples."
msgstr ""
-#: doc/classes/VisualServer.xml:3506
+#: doc/classes/VisualServer.xml:3507
msgid "The Viewport does not render 3D and does not sample."
msgstr ""
-#: doc/classes/VisualServer.xml:3509
+#: doc/classes/VisualServer.xml:3510
msgid "The Viewport renders 3D with effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3512
+#: doc/classes/VisualServer.xml:3513
msgid "The Viewport renders 3D but without effects."
msgstr ""
-#: doc/classes/VisualServer.xml:3515
+#: doc/classes/VisualServer.xml:3516
msgid "Number of objects drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3518
+#: doc/classes/VisualServer.xml:3519
msgid "Number of vertices drawn in a single frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3521
+#: doc/classes/VisualServer.xml:3522
msgid "Number of material changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3524
+#: doc/classes/VisualServer.xml:3525
msgid "Number of shader changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3527
+#: doc/classes/VisualServer.xml:3528
msgid "Number of surface changes during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3530
+#: doc/classes/VisualServer.xml:3531
msgid "Number of draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3533
+#: doc/classes/VisualServer.xml:3534
msgid "Number of 2d items drawn this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3536
+#: doc/classes/VisualServer.xml:3537
msgid "Number of 2d draw calls during this frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3539
+#: doc/classes/VisualServer.xml:3540
msgid "Represents the size of the [enum ViewportRenderInfo] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3542
+#: doc/classes/VisualServer.xml:3543
msgid "Debug draw is disabled. Default setting."
msgstr ""
-#: doc/classes/VisualServer.xml:3545
+#: doc/classes/VisualServer.xml:3546
msgid "Debug draw sets objects to unshaded."
msgstr ""
-#: doc/classes/VisualServer.xml:3548
+#: doc/classes/VisualServer.xml:3549
msgid "Overwrites clear color to [code](0,0,0,0)[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3551
+#: doc/classes/VisualServer.xml:3552
msgid "Debug draw draws objects in wireframe."
msgstr ""
-#: doc/classes/VisualServer.xml:3554
+#: doc/classes/VisualServer.xml:3555
msgid "Do not use a debug mode."
msgstr ""
-#: doc/classes/VisualServer.xml:3557
+#: doc/classes/VisualServer.xml:3558
msgid "Draw all objects as wireframe models."
msgstr ""
-#: doc/classes/VisualServer.xml:3560
+#: doc/classes/VisualServer.xml:3561
msgid ""
"Draw all objects in a way that displays how much overdraw is occurring. "
"Overdraw occurs when a section of pixels is drawn and shaded and then "
"another object covers it up. To optimize a scene, you should reduce overdraw."
msgstr ""
-#: doc/classes/VisualServer.xml:3563
+#: doc/classes/VisualServer.xml:3564
msgid ""
"Draw all objects without shading. Equivalent to setting all objects shaders "
"to [code]unshaded[/code]."
msgstr ""
-#: doc/classes/VisualServer.xml:3566
+#: doc/classes/VisualServer.xml:3567
msgid "The instance does not have a type."
msgstr ""
-#: doc/classes/VisualServer.xml:3569
+#: doc/classes/VisualServer.xml:3570
msgid "The instance is a mesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3572
+#: doc/classes/VisualServer.xml:3573
msgid "The instance is a multimesh."
msgstr ""
-#: doc/classes/VisualServer.xml:3575
+#: doc/classes/VisualServer.xml:3576
msgid "The instance is an immediate geometry."
msgstr ""
-#: doc/classes/VisualServer.xml:3578
+#: doc/classes/VisualServer.xml:3579
msgid "The instance is a particle emitter."
msgstr ""
-#: doc/classes/VisualServer.xml:3581
+#: doc/classes/VisualServer.xml:3582
msgid "The instance is a light."
msgstr ""
-#: doc/classes/VisualServer.xml:3584
+#: doc/classes/VisualServer.xml:3585
msgid "The instance is a reflection probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3587
+#: doc/classes/VisualServer.xml:3588
msgid "The instance is a GI probe."
msgstr ""
-#: doc/classes/VisualServer.xml:3590
+#: doc/classes/VisualServer.xml:3591
msgid "The instance is a lightmap capture."
msgstr ""
-#: doc/classes/VisualServer.xml:3593
+#: doc/classes/VisualServer.xml:3594
msgid "Represents the size of the [enum InstanceType] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3596
+#: doc/classes/VisualServer.xml:3597
msgid ""
"A combination of the flags of geometry instances (mesh, multimesh, immediate "
"and particles)."
msgstr ""
-#: doc/classes/VisualServer.xml:3599
+#: doc/classes/VisualServer.xml:3600
msgid "Allows the instance to be used in baked lighting."
msgstr ""
-#: doc/classes/VisualServer.xml:3602
+#: doc/classes/VisualServer.xml:3603
msgid "When set, manually requests to draw geometry on next frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3605
+#: doc/classes/VisualServer.xml:3606
msgid "Represents the size of the [enum InstanceFlags] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3608
+#: doc/classes/VisualServer.xml:3609
msgid "Disable shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3611
+#: doc/classes/VisualServer.xml:3612
msgid "Cast shadows from this instance."
msgstr ""
-#: doc/classes/VisualServer.xml:3614
+#: doc/classes/VisualServer.xml:3615
msgid ""
"Disable backface culling when rendering the shadow of the object. This is "
"slightly slower but may result in more correct shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3617
+#: doc/classes/VisualServer.xml:3618
msgid ""
"Only render the shadows from the object. The object itself will not be drawn."
msgstr ""
-#: doc/classes/VisualServer.xml:3620
+#: doc/classes/VisualServer.xml:3621
msgid "The nine patch gets stretched where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3623
+#: doc/classes/VisualServer.xml:3624
msgid "The nine patch gets filled with tiles where needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3626
+#: doc/classes/VisualServer.xml:3627
msgid ""
"The nine patch gets filled with tiles where needed and stretches them a bit "
"if needed."
msgstr ""
-#: doc/classes/VisualServer.xml:3629
+#: doc/classes/VisualServer.xml:3630
msgid "Adds light color additive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3632
+#: doc/classes/VisualServer.xml:3633
msgid "Adds light color subtractive to the canvas."
msgstr ""
-#: doc/classes/VisualServer.xml:3635
+#: doc/classes/VisualServer.xml:3636
msgid "The light adds color depending on transparency."
msgstr ""
-#: doc/classes/VisualServer.xml:3638
+#: doc/classes/VisualServer.xml:3639
msgid "The light adds color depending on mask."
msgstr ""
-#: doc/classes/VisualServer.xml:3641
+#: doc/classes/VisualServer.xml:3642
msgid "Do not apply a filter to canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3644
+#: doc/classes/VisualServer.xml:3645
msgid "Use PCF3 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3647
+#: doc/classes/VisualServer.xml:3648
msgid "Use PCF5 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3650
+#: doc/classes/VisualServer.xml:3651
msgid "Use PCF7 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3653
+#: doc/classes/VisualServer.xml:3654
msgid "Use PCF9 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3656
+#: doc/classes/VisualServer.xml:3657
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr ""
-#: doc/classes/VisualServer.xml:3659
+#: doc/classes/VisualServer.xml:3660
msgid "Culling of the canvas occluder is disabled."
msgstr ""
-#: doc/classes/VisualServer.xml:3662
+#: doc/classes/VisualServer.xml:3663
msgid "Culling of the canvas occluder is clockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3665
+#: doc/classes/VisualServer.xml:3666
msgid "Culling of the canvas occluder is counterclockwise."
msgstr ""
-#: doc/classes/VisualServer.xml:3668
+#: doc/classes/VisualServer.xml:3669
msgid "The amount of objects in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3671
+#: doc/classes/VisualServer.xml:3672
msgid "The amount of vertices in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3674
+#: doc/classes/VisualServer.xml:3675
msgid "The amount of modified materials in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3677
+#: doc/classes/VisualServer.xml:3678
msgid "The amount of shader rebinds in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3680
+#: doc/classes/VisualServer.xml:3681
msgid "The amount of surface changes in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3683
+#: doc/classes/VisualServer.xml:3684
msgid "The amount of draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3686
+#: doc/classes/VisualServer.xml:3687
msgid "The amount of 2d items in the frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3689
+#: doc/classes/VisualServer.xml:3690
msgid "The amount of 2d draw calls in frame."
msgstr ""
-#: doc/classes/VisualServer.xml:3704
+#: doc/classes/VisualServer.xml:3705
msgid "Hardware supports shaders. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3707
+#: doc/classes/VisualServer.xml:3708
msgid ""
"Hardware supports multithreading. This enum is currently unused in Godot 3.x."
msgstr ""
-#: doc/classes/VisualServer.xml:3710
+#: doc/classes/VisualServer.xml:3711
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3713
+#: doc/classes/VisualServer.xml:3714
msgid "Use [Transform] to store MultiMesh transform."
msgstr ""
-#: doc/classes/VisualServer.xml:3716
+#: doc/classes/VisualServer.xml:3717
msgid "MultiMesh does not use per-instance color."
msgstr ""
-#: doc/classes/VisualServer.xml:3719
+#: doc/classes/VisualServer.xml:3720
msgid ""
"MultiMesh color uses 8 bits per component. This packs the color into a "
"single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3722
+#: doc/classes/VisualServer.xml:3723
msgid "MultiMesh color uses a float per channel."
msgstr ""
-#: doc/classes/VisualServer.xml:3725
+#: doc/classes/VisualServer.xml:3726
msgid "MultiMesh does not use custom data."
msgstr ""
-#: doc/classes/VisualServer.xml:3728
+#: doc/classes/VisualServer.xml:3729
msgid ""
"MultiMesh custom data uses 8 bits per component. This packs the 4-component "
"custom data into a single float."
msgstr ""
-#: doc/classes/VisualServer.xml:3731
+#: doc/classes/VisualServer.xml:3732
msgid "MultiMesh custom data uses a float per component."
msgstr ""
-#: doc/classes/VisualServer.xml:3734
+#: doc/classes/VisualServer.xml:3735
msgid "Reflection probe will update reflections once and then stop."
msgstr ""
-#: doc/classes/VisualServer.xml:3737
+#: doc/classes/VisualServer.xml:3738
msgid ""
"Reflection probe will update each frame. This mode is necessary to capture "
"moving objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3740
+#: doc/classes/VisualServer.xml:3741
msgid "Draw particles in the order that they appear in the particles array."
msgstr ""
-#: doc/classes/VisualServer.xml:3743
+#: doc/classes/VisualServer.xml:3744
msgid "Sort particles based on their lifetime."
msgstr ""
-#: doc/classes/VisualServer.xml:3746
+#: doc/classes/VisualServer.xml:3747
msgid "Sort particles based on their distance to the camera."
msgstr ""
-#: doc/classes/VisualServer.xml:3749
+#: doc/classes/VisualServer.xml:3750
msgid "Use the clear color as background."
msgstr ""
-#: doc/classes/VisualServer.xml:3752
+#: doc/classes/VisualServer.xml:3753
msgid "Use a specified color as the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3755
+#: doc/classes/VisualServer.xml:3756
msgid "Use a sky resource for the background."
msgstr ""
-#: doc/classes/VisualServer.xml:3758
+#: doc/classes/VisualServer.xml:3759
msgid ""
"Use a custom color for background, but use a sky for shading and reflections."
msgstr ""
-#: doc/classes/VisualServer.xml:3761
+#: doc/classes/VisualServer.xml:3762
msgid ""
"Use a specified canvas layer as the background. This can be useful for "
"instantiating a 2D scene in a 3D world."
msgstr ""
-#: doc/classes/VisualServer.xml:3764
+#: doc/classes/VisualServer.xml:3765
msgid ""
"Do not clear the background, use whatever was rendered last frame as the "
"background."
msgstr ""
-#: doc/classes/VisualServer.xml:3767
+#: doc/classes/VisualServer.xml:3768
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr ""
-#: doc/classes/VisualServer.xml:3770
+#: doc/classes/VisualServer.xml:3771
msgid "Use lowest blur quality. Fastest, but may look bad."
msgstr ""
-#: doc/classes/VisualServer.xml:3773
+#: doc/classes/VisualServer.xml:3774
msgid "Use medium blur quality."
msgstr ""
-#: doc/classes/VisualServer.xml:3776
+#: doc/classes/VisualServer.xml:3777
msgid "Used highest blur quality. Looks the best, but is the slowest."
msgstr ""
-#: doc/classes/VisualServer.xml:3779
+#: doc/classes/VisualServer.xml:3780
msgid "Add the effect of the glow on top of the scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3782
+#: doc/classes/VisualServer.xml:3783
msgid ""
"Blends the glow effect with the screen. Does not get as bright as additive."
msgstr ""
-#: doc/classes/VisualServer.xml:3785
+#: doc/classes/VisualServer.xml:3786
msgid "Produces a subtle color disturbance around objects."
msgstr ""
-#: doc/classes/VisualServer.xml:3788
+#: doc/classes/VisualServer.xml:3789
msgid "Shows the glow effect by itself without the underlying scene."
msgstr ""
-#: doc/classes/VisualServer.xml:3791
+#: doc/classes/VisualServer.xml:3792
msgid "Output color as they came in."
msgstr ""
-#: doc/classes/VisualServer.xml:3794
+#: doc/classes/VisualServer.xml:3795
msgid "Use the Reinhard tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3797
+#: doc/classes/VisualServer.xml:3798
msgid "Use the filmic tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3800
+#: doc/classes/VisualServer.xml:3801
msgid "Use the ACES tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3803
+#: doc/classes/VisualServer.xml:3804
msgid "Use the ACES Fitted tonemapper."
msgstr ""
-#: doc/classes/VisualServer.xml:3806
+#: doc/classes/VisualServer.xml:3807
msgid "Lowest quality of screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3809
+#: doc/classes/VisualServer.xml:3810
msgid "Medium quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3812
+#: doc/classes/VisualServer.xml:3813
msgid "Highest quality screen space ambient occlusion."
msgstr ""
-#: doc/classes/VisualServer.xml:3815
+#: doc/classes/VisualServer.xml:3816
msgid "Disables the blur set for SSAO. Will make SSAO look noisier."
msgstr ""
-#: doc/classes/VisualServer.xml:3818
+#: doc/classes/VisualServer.xml:3819
msgid "Perform a 1x1 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3821
+#: doc/classes/VisualServer.xml:3822
msgid "Performs a 2x2 blur on the SSAO output."
msgstr ""
-#: doc/classes/VisualServer.xml:3824
+#: doc/classes/VisualServer.xml:3825
msgid "Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO."
msgstr ""
@@ -68643,8 +68795,8 @@ msgstr ""
#: modules/websocket/doc_classes/WebSocketPeer.xml:7
msgid ""
-"This class represent a specific WebSocket connection, you can do lower level "
-"operations with it.\n"
+"This class represents a specific WebSocket connection, allowing you to do "
+"lower level operations with it.\n"
"You can choose to write to the socket in binary or text mode, and you can "
"recognize the mode used for writing by the other peer."
msgstr ""
@@ -69173,53 +69325,56 @@ msgid ""
msgstr ""
#: doc/classes/WindowDialog.xml:15
-#, fuzzy
-msgid "Returns the close [TextureButton]."
-msgstr "å›žå‚³åƒæ•¸çš„餘弦值。"
+msgid ""
+"Returns the close [TextureButton].\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member CanvasItem.visible] property."
+msgstr ""
-#: doc/classes/WindowDialog.xml:21
+#: doc/classes/WindowDialog.xml:22
msgid "If [code]true[/code], the user can resize the window."
msgstr ""
-#: doc/classes/WindowDialog.xml:24
+#: doc/classes/WindowDialog.xml:25
msgid "The text displayed in the window's title bar."
msgstr ""
-#: doc/classes/WindowDialog.xml:31
+#: doc/classes/WindowDialog.xml:32
msgid "The icon for the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:34
+#: doc/classes/WindowDialog.xml:35
msgid "The horizontal offset of the close button."
msgstr ""
-#: doc/classes/WindowDialog.xml:37
+#: doc/classes/WindowDialog.xml:38
msgid ""
"The icon used for the close button when it's hovered with the mouse cursor."
msgstr ""
-#: doc/classes/WindowDialog.xml:43
+#: doc/classes/WindowDialog.xml:44
msgid ""
"The style for both the content background of the [WindowDialog] and the "
"title bar. The title bar is created with a top border and an expand margin "
"using the [code]panel[/code] stylebox."
msgstr ""
-#: doc/classes/WindowDialog.xml:46
+#: doc/classes/WindowDialog.xml:47
msgid ""
"The thickness of the border that can be dragged when scaling the window (if "
"[member resizable] is enabled)."
msgstr ""
-#: doc/classes/WindowDialog.xml:49
+#: doc/classes/WindowDialog.xml:50
msgid "The color of the title text."
msgstr ""
-#: doc/classes/WindowDialog.xml:52
+#: doc/classes/WindowDialog.xml:53
msgid "The font used to draw the title."
msgstr ""
-#: doc/classes/WindowDialog.xml:55
+#: doc/classes/WindowDialog.xml:56
msgid "The vertical offset of the title text."
msgstr ""
@@ -69490,6 +69645,10 @@ msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
msgstr ""
+#, fuzzy
+#~ msgid "Returns the close [TextureButton]."
+#~ msgstr "å›žå‚³åƒæ•¸çš„餘弦值。"
+
#~ msgid ""
#~ "Easing function, based on exponent. The curve values are: 0 is constant, "
#~ "1 is linear, 0 to 1 is ease-in, 1+ is ease out. Negative values are in-"
diff --git a/drivers/png/SCsub b/drivers/png/SCsub
index 26508dc612..39d296e7cf 100644
--- a/drivers/png/SCsub
+++ b/drivers/png/SCsub
@@ -36,7 +36,8 @@ if env["builtin_libpng"]:
# Currently .ASM filter_neon.S does not compile on NT.
import os
- use_neon = "neon_enabled" in env and env["neon_enabled"] and os.name != "nt"
+ # Enable ARM NEON instructions on 32-bit Android to compile more optimized code.
+ use_neon = "android_arch" in env and env["android_arch"] == "armv7" and os.name != "nt"
if use_neon:
env_png.Append(CPPDEFINES=[("PNG_ARM_NEON_OPT", 2)])
else:
diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp
index d32592e81a..42b5bbfaf2 100644
--- a/drivers/unix/ip_unix.cpp
+++ b/drivers/unix/ip_unix.cpp
@@ -110,7 +110,7 @@ void IPUnix::_resolve_hostname(List<IPAddress> &r_addresses, const String &p_hos
struct addrinfo *next = result;
do {
- if (next->ai_addr == NULL) {
+ if (next->ai_addr == nullptr) {
next = next->ai_next;
continue;
}
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp
index 3032c31629..193825a73f 100644
--- a/drivers/unix/os_unix.cpp
+++ b/drivers/unix/os_unix.cpp
@@ -528,7 +528,7 @@ String OS_Unix::get_executable_path() const {
#endif
}
-void UnixTerminalLogger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type) {
+void UnixTerminalLogger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, ErrorType p_type) {
if (!should_log(true)) {
return;
}
diff --git a/drivers/unix/os_unix.h b/drivers/unix/os_unix.h
index bf82019d38..eb36bf4255 100644
--- a/drivers/unix/os_unix.h
+++ b/drivers/unix/os_unix.h
@@ -102,7 +102,7 @@ public:
class UnixTerminalLogger : public StdLogger {
public:
- virtual void log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type = ERR_ERROR);
+ virtual void log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, ErrorType p_type = ERR_ERROR);
virtual ~UnixTerminalLogger();
};
diff --git a/drivers/vulkan/rendering_device_vulkan.cpp b/drivers/vulkan/rendering_device_vulkan.cpp
index 8743135f89..e7ac447426 100644
--- a/drivers/vulkan/rendering_device_vulkan.cpp
+++ b/drivers/vulkan/rendering_device_vulkan.cpp
@@ -8913,6 +8913,8 @@ void RenderingDeviceVulkan::initialize(VulkanContext *p_context, bool p_local_de
}
}
+ // Note: If adding new project settings here, also duplicate their definition in
+ // rendering_server.cpp for headless doctool.
staging_buffer_block_size = GLOBAL_DEF("rendering/vulkan/staging_buffer/block_size_kb", 256);
staging_buffer_block_size = MAX(4, staging_buffer_block_size);
staging_buffer_block_size *= 1024; //kb -> bytes
diff --git a/drivers/vulkan/vulkan_context.cpp b/drivers/vulkan/vulkan_context.cpp
index 152efc7807..44fed02f41 100644
--- a/drivers/vulkan/vulkan_context.cpp
+++ b/drivers/vulkan/vulkan_context.cpp
@@ -525,7 +525,7 @@ Error VulkanContext::_check_capabilities() {
// check our extended features
VkPhysicalDeviceMultiviewFeatures multiview_features;
multiview_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
- multiview_features.pNext = NULL;
+ multiview_features.pNext = nullptr;
VkPhysicalDeviceFeatures2 device_features;
device_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
diff --git a/editor/SCsub b/editor/SCsub
index d149cc6273..6b18eeae93 100644
--- a/editor/SCsub
+++ b/editor/SCsub
@@ -5,7 +5,6 @@ Import("env")
env.editor_sources = []
import os
-import os.path
import glob
import editor_builders
@@ -59,7 +58,7 @@ if env["tools"]:
else:
docs += Glob(d + "/*.xml") # Custom.
- _make_doc_data_class_path(os.path.join(env.Dir("#").abspath, "editor"))
+ _make_doc_data_class_path(env.Dir("#editor").abspath)
docs = sorted(docs)
env.Depends("#editor/doc_data_compressed.gen.h", docs)
@@ -69,10 +68,17 @@ if env["tools"]:
env.Run(editor_builders.make_doc_header, "Generating documentation header."),
)
- path = env.Dir(".").abspath
+ # Editor interface and class reference translations incur a significant size
+ # cost for the editor binary (see godot-proposals#3421).
+ # To limit it, we only include translations with a high enough completion
+ # ratio (30% for the editor UI, 10% for the class reference).
+ # Generated with `make include-list` for each resource.
# Editor translations
- tlist = glob.glob(path + "/translations/*.po")
+ to_include = (
+ "ar,bg,bn,ca,cs,de,el,eo,es_AR,es,fi,fr,gl,he,hu,id,it,ja,ko,ms,nb,nl,pl,pt_BR,pt,ro,ru,sk,sv,th,tr,uk,vi,zh_CN,zh_TW"
+ ).split(",")
+ tlist = [env.Dir("#editor/translations").abspath + "/" + f + ".po" for f in to_include]
env.Depends("#editor/editor_translations.gen.h", tlist)
env.CommandNoCache(
"#editor/editor_translations.gen.h",
@@ -81,7 +87,8 @@ if env["tools"]:
)
# Documentation translations
- tlist = glob.glob(env.Dir("#doc").abspath + "/translations/*.po")
+ to_include = "es,fr,ja,zh_CN".split(",")
+ tlist = [env.Dir("#doc/translations").abspath + "/" + f + ".po" for f in to_include]
env.Depends("#editor/doc_translations.gen.h", tlist)
env.CommandNoCache(
"#editor/doc_translations.gen.h",
@@ -90,8 +97,8 @@ if env["tools"]:
)
# Fonts
- flist = glob.glob(path + "/../thirdparty/fonts/*.ttf")
- flist.extend(glob.glob(path + "/../thirdparty/fonts/*.otf"))
+ flist = glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.ttf")
+ flist.extend(glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.otf"))
flist.sort()
env.Depends("#editor/builtin_fonts.gen.h", flist)
env.CommandNoCache(
@@ -101,6 +108,7 @@ if env["tools"]:
)
env.add_source_files(env.editor_sources, "*.cpp")
+ env.add_source_files(env.editor_sources, "register_exporters.gen.cpp")
SConscript("debugger/SCsub")
SConscript("fileserver/SCsub")
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp
index 14ca35a664..e773510797 100644
--- a/editor/animation_track_editor.cpp
+++ b/editor/animation_track_editor.cpp
@@ -165,21 +165,40 @@ public:
}
switch (animation->track_get_type(track)) {
- case Animation::TYPE_TRANSFORM3D: {
- Dictionary d_old = animation->track_get_key_value(track, key);
- Dictionary d_new = d_old.duplicate();
- d_new[p_name] = p_value;
- setting = true;
- undo_redo->create_action(TTR("Anim Change Transform"));
- undo_redo->add_do_method(animation.ptr(), "track_set_key_value", track, key, d_new);
- undo_redo->add_undo_method(animation.ptr(), "track_set_key_value", track, key, d_old);
- undo_redo->add_do_method(this, "_update_obj", animation);
- undo_redo->add_undo_method(this, "_update_obj", animation);
- undo_redo->commit_action();
+ case Animation::TYPE_POSITION_3D:
+ case Animation::TYPE_ROTATION_3D:
+ case Animation::TYPE_SCALE_3D: {
+ if (name == "position" || name == "rotation" || name == "scale") {
+ Variant old = animation->track_get_key_value(track, key);
+ setting = true;
+ String chan;
+ switch (animation->track_get_type(track)) {
+ case Animation::TYPE_POSITION_3D:
+ chan = "Position3D";
+ break;
+ case Animation::TYPE_ROTATION_3D:
+ chan = "Rotation3D";
+ break;
+ case Animation::TYPE_SCALE_3D:
+ chan = "Scale3D";
+ break;
+ default: {
+ }
+ }
+
+ undo_redo->create_action(vformat(TTR("Anim Change %s"), chan));
+ undo_redo->add_do_method(animation.ptr(), "track_set_key_value", track, key, p_value);
+ undo_redo->add_undo_method(animation.ptr(), "track_set_key_value", track, key, old);
+ undo_redo->add_do_method(this, "_update_obj", animation);
+ undo_redo->add_undo_method(this, "_update_obj", animation);
+ undo_redo->commit_action();
+
+ setting = false;
+ return true;
+ }
- setting = false;
- return true;
} break;
+ case Animation::TYPE_BLEND_SHAPE:
case Animation::TYPE_VALUE: {
if (name == "value") {
Variant value = p_value;
@@ -412,13 +431,15 @@ public:
}
switch (animation->track_get_type(track)) {
- case Animation::TYPE_TRANSFORM3D: {
- Dictionary d = animation->track_get_key_value(track, key);
- ERR_FAIL_COND_V(!d.has(name), false);
- r_ret = d[p_name];
- return true;
-
+ case Animation::TYPE_POSITION_3D:
+ case Animation::TYPE_ROTATION_3D:
+ case Animation::TYPE_SCALE_3D: {
+ if (name == "position" || name == "rotation" || name == "scale") {
+ r_ret = animation->track_get_key_value(track, key);
+ return true;
+ }
} break;
+ case Animation::TYPE_BLEND_SHAPE:
case Animation::TYPE_VALUE: {
if (name == "value") {
r_ret = animation->track_get_key_value(track, key);
@@ -523,11 +544,17 @@ public:
}
switch (animation->track_get_type(track)) {
- case Animation::TYPE_TRANSFORM3D: {
- p_list->push_back(PropertyInfo(Variant::VECTOR3, "location"));
- p_list->push_back(PropertyInfo(Variant::QUATERNION, "rotation"));
+ case Animation::TYPE_POSITION_3D: {
+ p_list->push_back(PropertyInfo(Variant::VECTOR3, "position"));
+ } break;
+ case Animation::TYPE_ROTATION_3D: {
+ p_list->push_back(PropertyInfo(Variant::VECTOR3, "rotation"));
+ } break;
+ case Animation::TYPE_SCALE_3D: {
p_list->push_back(PropertyInfo(Variant::VECTOR3, "scale"));
-
+ } break;
+ case Animation::TYPE_BLEND_SHAPE: {
+ p_list->push_back(PropertyInfo(Variant::FLOAT, "value"));
} break;
case Animation::TYPE_VALUE: {
Variant v = animation->track_get_key_value(track, key);
@@ -557,7 +584,8 @@ public:
} break;
case Animation::TYPE_METHOD: {
p_list->push_back(PropertyInfo(Variant::STRING_NAME, "name"));
- p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,5,1"));
+ static_assert(VARIANT_ARG_MAX == 8, "PROPERTY_HINT_RANGE needs to be updated if VARIANT_ARG_MAX != 8");
+ p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,8,1"));
Dictionary d = animation->track_get_key_value(track, key);
ERR_FAIL_COND(!d.has("args"));
@@ -779,19 +807,34 @@ public:
}
switch (animation->track_get_type(track)) {
- case Animation::TYPE_TRANSFORM3D: {
- Dictionary d_old = animation->track_get_key_value(track, key);
- Dictionary d_new = d_old.duplicate();
- d_new[p_name] = p_value;
-
+ case Animation::TYPE_POSITION_3D:
+ case Animation::TYPE_ROTATION_3D:
+ case Animation::TYPE_SCALE_3D: {
+ Variant old = animation->track_get_key_value(track, key);
if (!setting) {
+ String chan;
+ switch (animation->track_get_type(track)) {
+ case Animation::TYPE_POSITION_3D:
+ chan = "Position3D";
+ break;
+ case Animation::TYPE_ROTATION_3D:
+ chan = "Rotation3D";
+ break;
+ case Animation::TYPE_SCALE_3D:
+ chan = "Scale3D";
+ break;
+ default: {
+ }
+ }
+
setting = true;
- undo_redo->create_action(TTR("Anim Multi Change Transform"));
+ undo_redo->create_action(vformat(TTR("Anim Multi Change %s"), chan));
}
- undo_redo->add_do_method(animation.ptr(), "track_set_key_value", track, key, d_new);
- undo_redo->add_undo_method(animation.ptr(), "track_set_key_value", track, key, d_old);
+ undo_redo->add_do_method(animation.ptr(), "track_set_key_value", track, key, p_value);
+ undo_redo->add_undo_method(animation.ptr(), "track_set_key_value", track, key, old);
update_obj = true;
} break;
+ case Animation::TYPE_BLEND_SHAPE:
case Animation::TYPE_VALUE: {
if (name == "value") {
Variant value = p_value;
@@ -1009,13 +1052,16 @@ public:
}
switch (animation->track_get_type(track)) {
- case Animation::TYPE_TRANSFORM3D: {
- Dictionary d = animation->track_get_key_value(track, key);
- ERR_FAIL_COND_V(!d.has(name), false);
- r_ret = d[p_name];
- return true;
+ case Animation::TYPE_POSITION_3D:
+ case Animation::TYPE_ROTATION_3D:
+ case Animation::TYPE_SCALE_3D: {
+ if (name == "position" || name == "rotation" || name == "scale") {
+ r_ret = animation->track_get_key_value(track, key);
+ return true;
+ }
} break;
+ case Animation::TYPE_BLEND_SHAPE:
case Animation::TYPE_VALUE: {
if (name == "value") {
r_ret = animation->track_get_key_value(track, key);
@@ -1159,11 +1205,18 @@ public:
if (same_track_type) {
switch (animation->track_get_type(first_track)) {
- case Animation::TYPE_TRANSFORM3D: {
- p_list->push_back(PropertyInfo(Variant::VECTOR3, "location"));
- p_list->push_back(PropertyInfo(Variant::QUATERNION, "rotation"));
+ case Animation::TYPE_POSITION_3D: {
+ p_list->push_back(PropertyInfo(Variant::VECTOR3, "position"));
+ } break;
+ case Animation::TYPE_ROTATION_3D: {
+ p_list->push_back(PropertyInfo(Variant::QUATERNION, "scale"));
+ } break;
+ case Animation::TYPE_SCALE_3D: {
p_list->push_back(PropertyInfo(Variant::VECTOR3, "scale"));
} break;
+ case Animation::TYPE_BLEND_SHAPE: {
+ p_list->push_back(PropertyInfo(Variant::FLOAT, "value"));
+ } break;
case Animation::TYPE_VALUE: {
if (same_key_type) {
Variant v = animation->track_get_key_value(first_track, first_key);
@@ -1195,7 +1248,8 @@ public:
} break;
case Animation::TYPE_METHOD: {
p_list->push_back(PropertyInfo(Variant::STRING_NAME, "name"));
- p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,5,1"));
+ static_assert(VARIANT_ARG_MAX == 8, "PROPERTY_HINT_RANGE needs to be updated if VARIANT_ARG_MAX != 8");
+ p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,8,1"));
Dictionary d = animation->track_get_key_value(first_track, first_key);
ERR_FAIL_COND(!d.has("args"));
@@ -1359,7 +1413,10 @@ void AnimationTimelineEdit::_notification(int p_what) {
add_track->get_popup()->clear();
add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyValue"), SNAME("EditorIcons")), TTR("Property Track"));
- add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyXform"), SNAME("EditorIcons")), TTR("3D Transform Track"));
+ add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyXPosition"), SNAME("EditorIcons")), TTR("3D Position Track"));
+ add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyXRotation"), SNAME("EditorIcons")), TTR("3D Rotation Track"));
+ add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyXScale"), SNAME("EditorIcons")), TTR("3D Scale Track"));
+ add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyBlendShape"), SNAME("EditorIcons")), TTR("Blend Shape Track"));
add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyCall"), SNAME("EditorIcons")), TTR("Call Method Track"));
add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyBezier"), SNAME("EditorIcons")), TTR("Bezier Curve Track"));
add_track->get_popup()->add_icon_item(get_theme_icon(SNAME("KeyAudio"), SNAME("EditorIcons")), TTR("Audio Playback Track"));
@@ -1828,9 +1885,12 @@ void AnimationTrackEdit::_notification(int p_what) {
Ref<Font> font = get_theme_font(SNAME("font"), SNAME("Label"));
int font_size = get_theme_font_size(SNAME("font_size"), SNAME("Label"));
Color color = get_theme_color(SNAME("font_color"), SNAME("Label"));
- Ref<Texture2D> type_icons[6] = {
+ Ref<Texture2D> type_icons[9] = {
get_theme_icon(SNAME("KeyValue"), SNAME("EditorIcons")),
- get_theme_icon(SNAME("KeyXform"), SNAME("EditorIcons")),
+ get_theme_icon(SNAME("KeyTrackPosition"), SNAME("EditorIcons")),
+ get_theme_icon(SNAME("KeyTrackRotation"), SNAME("EditorIcons")),
+ get_theme_icon(SNAME("KeyTrackScale"), SNAME("EditorIcons")),
+ get_theme_icon(SNAME("KeyTrackBlendShape"), SNAME("EditorIcons")),
get_theme_icon(SNAME("KeyCall"), SNAME("EditorIcons")),
get_theme_icon(SNAME("KeyBezier"), SNAME("EditorIcons")),
get_theme_icon(SNAME("KeyAudio"), SNAME("EditorIcons")),
@@ -2021,7 +2081,7 @@ void AnimationTrackEdit::_notification(int p_what) {
interp_mode_rect.position.y = int(get_size().height - icon->get_height()) / 2;
interp_mode_rect.size = icon->get_size();
- if (animation->track_get_type(track) == Animation::TYPE_VALUE || animation->track_get_type(track) == Animation::TYPE_TRANSFORM3D) {
+ if (animation->track_get_type(track) == Animation::TYPE_VALUE || animation->track_get_type(track) == Animation::TYPE_BLEND_SHAPE || animation->track_get_type(track) == Animation::TYPE_POSITION_3D || animation->track_get_type(track) == Animation::TYPE_SCALE_3D || animation->track_get_type(track) == Animation::TYPE_ROTATION_3D) {
draw_texture(icon, interp_mode_rect.position);
}
// Make it easier to click.
@@ -2031,7 +2091,7 @@ void AnimationTrackEdit::_notification(int p_what) {
ofs += icon->get_width() + hsep;
interp_mode_rect.size.x += hsep;
- if (animation->track_get_type(track) == Animation::TYPE_VALUE || animation->track_get_type(track) == Animation::TYPE_TRANSFORM3D) {
+ if (animation->track_get_type(track) == Animation::TYPE_VALUE || animation->track_get_type(track) == Animation::TYPE_BLEND_SHAPE || animation->track_get_type(track) == Animation::TYPE_POSITION_3D || animation->track_get_type(track) == Animation::TYPE_SCALE_3D || animation->track_get_type(track) == Animation::TYPE_ROTATION_3D) {
draw_texture(down_icon, Vector2(ofs, int(get_size().height - down_icon->get_height()) / 2));
interp_mode_rect.size.x += down_icon->get_width();
} else {
@@ -2054,7 +2114,7 @@ void AnimationTrackEdit::_notification(int p_what) {
loop_mode_rect.position.y = int(get_size().height - icon->get_height()) / 2;
loop_mode_rect.size = icon->get_size();
- if (animation->track_get_type(track) == Animation::TYPE_VALUE || animation->track_get_type(track) == Animation::TYPE_TRANSFORM3D) {
+ if (animation->track_get_type(track) == Animation::TYPE_VALUE || animation->track_get_type(track) == Animation::TYPE_BLEND_SHAPE || animation->track_get_type(track) == Animation::TYPE_POSITION_3D || animation->track_get_type(track) == Animation::TYPE_SCALE_3D || animation->track_get_type(track) == Animation::TYPE_ROTATION_3D) {
draw_texture(icon, loop_mode_rect.position);
}
@@ -2064,7 +2124,7 @@ void AnimationTrackEdit::_notification(int p_what) {
ofs += icon->get_width() + hsep;
loop_mode_rect.size.x += hsep;
- if (animation->track_get_type(track) == Animation::TYPE_VALUE || animation->track_get_type(track) == Animation::TYPE_TRANSFORM3D) {
+ if (animation->track_get_type(track) == Animation::TYPE_VALUE || animation->track_get_type(track) == Animation::TYPE_BLEND_SHAPE || animation->track_get_type(track) == Animation::TYPE_POSITION_3D || animation->track_get_type(track) == Animation::TYPE_SCALE_3D || animation->track_get_type(track) == Animation::TYPE_ROTATION_3D) {
draw_texture(down_icon, Vector2(ofs, int(get_size().height - down_icon->get_height()) / 2));
loop_mode_rect.size.x += down_icon->get_width();
} else {
@@ -2284,9 +2344,12 @@ void AnimationTrackEdit::set_animation_and_track(const Ref<Animation> &p_animati
track = p_track;
update();
- Ref<Texture2D> type_icons[6] = {
+ Ref<Texture2D> type_icons[9] = {
get_theme_icon(SNAME("KeyValue"), SNAME("EditorIcons")),
- get_theme_icon(SNAME("KeyXform"), SNAME("EditorIcons")),
+ get_theme_icon(SNAME("KeyXPosition"), SNAME("EditorIcons")),
+ get_theme_icon(SNAME("KeyXRotation"), SNAME("EditorIcons")),
+ get_theme_icon(SNAME("KeyXScale"), SNAME("EditorIcons")),
+ get_theme_icon(SNAME("KeyBlendShape"), SNAME("EditorIcons")),
get_theme_icon(SNAME("KeyCall"), SNAME("EditorIcons")),
get_theme_icon(SNAME("KeyBezier"), SNAME("EditorIcons")),
get_theme_icon(SNAME("KeyAudio"), SNAME("EditorIcons")),
@@ -2456,17 +2519,21 @@ 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";
switch (animation->track_get_type(track)) {
- case Animation::TYPE_TRANSFORM3D: {
- Dictionary d = animation->track_get_key_value(track, key_idx);
- if (d.has("location")) {
- text += "Pos: " + String(d["location"]) + "\n";
- }
- if (d.has("rotation")) {
- text += "Rot: " + String(d["rotation"]) + "\n";
- }
- if (d.has("scale")) {
- text += "Scale: " + String(d["scale"]) + "\n";
- }
+ case Animation::TYPE_POSITION_3D: {
+ Vector3 t = animation->track_get_key_value(track, key_idx);
+ text += "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";
+ } break;
+ case Animation::TYPE_SCALE_3D: {
+ Vector3 t = animation->track_get_key_value(track, key_idx);
+ text += "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";
} break;
case Animation::TYPE_VALUE: {
const Variant &v = animation->track_get_key_value(track, key_idx);
@@ -3321,9 +3388,15 @@ static bool track_type_is_resettable(Animation::TrackType p_type) {
switch (p_type) {
case Animation::TYPE_VALUE:
[[fallthrough]];
+ case Animation::TYPE_BLEND_SHAPE:
+ [[fallthrough]];
case Animation::TYPE_BEZIER:
[[fallthrough]];
- case Animation::TYPE_TRANSFORM3D:
+ case Animation::TYPE_POSITION_3D:
+ [[fallthrough]];
+ case Animation::TYPE_ROTATION_3D:
+ [[fallthrough]];
+ case Animation::TYPE_SCALE_3D:
return true;
default:
return false;
@@ -3416,7 +3489,7 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) {
for (const InsertData &E : insert_data) {
// Prevent insertion of multiple tracks.
- if (E.path == p_id.path) {
+ if (E.path == p_id.path && E.type == p_id.type) {
return; // Already inserted a track this frame.
}
}
@@ -3466,7 +3539,11 @@ void AnimationTrackEditor::_insert_track(bool p_create_reset, bool p_create_bezi
}
}
-void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_sub, const Transform3D &p_xform) {
+void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_sub, const Animation::TrackType p_type, const Variant p_value) {
+ ERR_FAIL_COND(!root);
+ ERR_FAIL_COND_MSG(
+ (p_type != Animation::TYPE_POSITION_3D && p_type != Animation::TYPE_ROTATION_3D && p_type != Animation::TYPE_SCALE_3D),
+ "Track type must be Position/Rotation/Scale 3D.");
if (!keying) {
return;
}
@@ -3474,7 +3551,6 @@ void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_
return;
}
- ERR_FAIL_COND(!root);
// Let's build a node path.
String path = root->get_path_to(p_node);
if (p_sub != "") {
@@ -3486,53 +3562,44 @@ void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_
int track_idx = -1;
for (int i = 0; i < animation->get_track_count(); i++) {
- if (animation->track_get_type(i) != Animation::TYPE_TRANSFORM3D) {
+ if (animation->track_get_path(i) != np) {
continue;
}
- if (animation->track_get_path(i) != np) {
+ if (animation->track_get_type(i) != p_type) {
continue;
}
-
track_idx = i;
- break;
}
InsertData id;
- Dictionary val;
-
id.path = np;
- id.track_idx = track_idx;
- id.value = p_xform;
- id.type = Animation::TYPE_TRANSFORM3D;
// TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
id.query = vformat(TTR("node '%s'"), p_node->get_name());
id.advance = false;
-
- // Dialog insert.
+ id.track_idx = track_idx;
+ id.value = p_value;
+ id.type = p_type;
_query_insert(id);
}
-bool AnimationTrackEditor::has_transform_track(Node3D *p_node, const String &p_sub) {
+bool AnimationTrackEditor::has_track(Node3D *p_node, const String &p_sub, const Animation::TrackType p_type) {
+ ERR_FAIL_COND_V(!root, false);
if (!keying) {
return false;
}
if (!animation.is_valid()) {
return false;
}
- if (!root) {
- return false;
- }
- //let's build a node path
+ // Let's build a node path.
String path = root->get_path_to(p_node);
if (p_sub != "") {
path += ":" + p_sub;
}
- int track_id = animation->find_track(path);
+
+ int track_id = animation->find_track(path, p_type);
if (track_id >= 0) {
- if (animation->track_get_type(track_id) == Animation::TYPE_TRANSFORM3D) {
- return true;
- }
+ return true;
}
return false;
}
@@ -3977,18 +4044,14 @@ AnimationTrackEditor::TrackIndices AnimationTrackEditor::_confirm_insert(InsertD
Variant value;
switch (p_id.type) {
+ case Animation::TYPE_POSITION_3D:
+ case Animation::TYPE_ROTATION_3D:
+ case Animation::TYPE_SCALE_3D:
+ case Animation::TYPE_BLEND_SHAPE:
case Animation::TYPE_VALUE: {
value = p_id.value;
} break;
- case Animation::TYPE_TRANSFORM3D: {
- Transform3D tr = p_id.value;
- Dictionary d;
- d["location"] = tr.origin;
- d["scale"] = tr.basis.get_scale();
- d["rotation"] = Quaternion(tr.basis);
- value = d;
- } break;
case Animation::TYPE_BEZIER: {
Array array;
array.resize(5);
@@ -4404,8 +4467,13 @@ void AnimationTrackEditor::_new_track_node_selected(NodePath p_path) {
ERR_FAIL_COND(!node);
NodePath path_to = root->get_path_to(node);
- if (adding_track_type == Animation::TYPE_TRANSFORM3D && !node->is_class("Node3D")) {
- EditorNode::get_singleton()->show_warning(TTR("Transform3D tracks only apply to 3D-based nodes."));
+ if (adding_track_type == Animation::TYPE_BLEND_SHAPE && !node->is_class("MeshInstance3D")) {
+ EditorNode::get_singleton()->show_warning(TTR("Blend Shape tracks only apply to MeshInstance3D nodes."));
+ return;
+ }
+
+ if ((adding_track_type == Animation::TYPE_POSITION_3D || adding_track_type == Animation::TYPE_ROTATION_3D || adding_track_type == Animation::TYPE_SCALE_3D) && !node->is_class("Node3D")) {
+ EditorNode::get_singleton()->show_warning(TTR("Position/Rotation/Scale 3D tracks only apply to 3D-based nodes."));
return;
}
@@ -4415,7 +4483,16 @@ void AnimationTrackEditor::_new_track_node_selected(NodePath p_path) {
prop_selector->set_type_filter(Vector<Variant::Type>());
prop_selector->select_property_from_instance(node);
} break;
- case Animation::TYPE_TRANSFORM3D:
+ case Animation::TYPE_BLEND_SHAPE: {
+ adding_track_path = path_to;
+ Vector<Variant::Type> filter;
+ filter.push_back(Variant::FLOAT);
+ prop_selector->set_type_filter(filter);
+ prop_selector->select_property_from_instance(node);
+ } break;
+ case Animation::TYPE_POSITION_3D:
+ case Animation::TYPE_ROTATION_3D:
+ case Animation::TYPE_SCALE_3D:
case Animation::TYPE_METHOD: {
undo_redo->create_action(TTR("Add Track"));
undo_redo->add_do_method(animation.ptr(), "add_track", adding_track_type);
@@ -4584,7 +4661,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
}
switch (animation->track_get_type(p_track)) {
- case Animation::TYPE_TRANSFORM3D: {
+ case Animation::TYPE_POSITION_3D: {
if (!root->has_node(animation->track_get_path(p_track))) {
EditorNode::get_singleton()->show_warning(TTR("Track path is invalid, so can't add a key."));
return;
@@ -4596,18 +4673,55 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
return;
}
- Transform3D xf = base->get_transform();
+ Vector3 pos = base->get_position();
- Vector3 loc = xf.get_origin();
- Vector3 scale = xf.basis.get_scale_local();
- Quaternion rot = xf.basis;
+ undo_redo->create_action(TTR("Add Position Key"));
+ undo_redo->add_do_method(animation.ptr(), "position_track_insert_key", p_track, p_ofs, pos);
+ undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_track, p_ofs);
+ undo_redo->commit_action();
- undo_redo->create_action(TTR("Add Transform Track Key"));
- undo_redo->add_do_method(animation.ptr(), "transform_track_insert_key", p_track, p_ofs, loc, rot, scale);
+ } break;
+ case Animation::TYPE_ROTATION_3D: {
+ if (!root->has_node(animation->track_get_path(p_track))) {
+ EditorNode::get_singleton()->show_warning(TTR("Track path is invalid, so can't add a key."));
+ return;
+ }
+ Node3D *base = Object::cast_to<Node3D>(root->get_node(animation->track_get_path(p_track)));
+
+ if (!base) {
+ EditorNode::get_singleton()->show_warning(TTR("Track is not of type Node3D, can't insert key"));
+ return;
+ }
+
+ Quaternion rot = base->get_transform().basis.operator Quaternion();
+
+ undo_redo->create_action(TTR("Add Rotation Key"));
+ undo_redo->add_do_method(animation.ptr(), "rotation_track_insert_key", p_track, p_ofs, rot);
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_track, p_ofs);
undo_redo->commit_action();
} break;
+ case Animation::TYPE_SCALE_3D: {
+ if (!root->has_node(animation->track_get_path(p_track))) {
+ EditorNode::get_singleton()->show_warning(TTR("Track path is invalid, so can't add a key."));
+ return;
+ }
+ Node3D *base = Object::cast_to<Node3D>(root->get_node(animation->track_get_path(p_track)));
+
+ if (!base) {
+ EditorNode::get_singleton()->show_warning(TTR("Track is not of type Node3D, can't insert key"));
+ return;
+ }
+
+ Vector3 scale = base->get_scale();
+
+ undo_redo->create_action(TTR("Add Scale Key"));
+ undo_redo->add_do_method(animation.ptr(), "scale_track_insert_key", p_track, p_ofs, scale);
+ undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_track, p_ofs);
+ undo_redo->commit_action();
+
+ } break;
+ case Animation::TYPE_BLEND_SHAPE:
case Animation::TYPE_VALUE: {
NodePath bp;
Variant value;
@@ -5277,8 +5391,17 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
}
switch (animation->track_get_type(i)) {
- case Animation::TYPE_TRANSFORM3D:
- text += " (Transform)";
+ case Animation::TYPE_POSITION_3D:
+ text += " (Position)";
+ break;
+ case Animation::TYPE_ROTATION_3D:
+ text += " (Rotation)";
+ break;
+ case Animation::TYPE_SCALE_3D:
+ text += " (Scale)";
+ break;
+ case Animation::TYPE_BLEND_SHAPE:
+ text += " (BlendShape)";
break;
case Animation::TYPE_METHOD:
text += " (Methods)";
diff --git a/editor/animation_track_editor.h b/editor/animation_track_editor.h
index 576edef0c8..05cf91de1d 100644
--- a/editor/animation_track_editor.h
+++ b/editor/animation_track_editor.h
@@ -35,7 +35,7 @@
#include "editor/editor_spin_slider.h"
#include "editor/property_editor.h"
#include "editor/property_selector.h"
-#include "scene/animation/animation_cache.h"
+
#include "scene/gui/control.h"
#include "scene/gui/file_dialog.h"
#include "scene/gui/menu_button.h"
@@ -527,8 +527,8 @@ public:
void set_anim_pos(float p_pos);
void insert_node_value_key(Node *p_node, const String &p_property, const Variant &p_value, bool p_only_if_exists = false);
void insert_value_key(const String &p_property, const Variant &p_value, bool p_advance);
- void insert_transform_key(Node3D *p_node, const String &p_sub, const Transform3D &p_xform);
- bool has_transform_track(Node3D *p_node, const String &p_sub);
+ void insert_transform_key(Node3D *p_node, const String &p_sub, const Animation::TrackType p_type, const Variant p_value);
+ bool has_track(Node3D *p_node, const String &p_sub, const Animation::TrackType p_type);
void make_insert_queue();
void commit_insert_queue();
diff --git a/editor/animation_track_editor_plugins.cpp b/editor/animation_track_editor_plugins.cpp
index 4ee8b991e4..70ba806c37 100644
--- a/editor/animation_track_editor_plugins.cpp
+++ b/editor/animation_track_editor_plugins.cpp
@@ -419,7 +419,7 @@ Rect2 AnimationTrackEditSpriteFrame::get_key_rect(int p_index, float p_pixels_se
// Go through other track to find if animation is set
String animation_path = get_animation()->track_get_path(get_track());
animation_path = animation_path.replace(":frame", ":animation");
- int animation_track = get_animation()->find_track(animation_path);
+ int animation_track = get_animation()->find_track(animation_path, get_animation()->track_get_type(get_track()));
float track_time = get_animation()->track_get_key_time(get_track(), p_index);
int animaiton_index = get_animation()->track_find_key(animation_track, track_time);
animation = get_animation()->track_get_key_value(animation_track, animaiton_index);
@@ -511,7 +511,7 @@ void AnimationTrackEditSpriteFrame::draw_key(int p_index, float p_pixels_sec, in
// Go through other track to find if animation is set
String animation_path = get_animation()->track_get_path(get_track());
animation_path = animation_path.replace(":frame", ":animation");
- int animation_track = get_animation()->find_track(animation_path);
+ int animation_track = get_animation()->find_track(animation_path, get_animation()->track_get_type(get_track()));
float track_time = get_animation()->track_get_key_time(get_track(), p_index);
int animaiton_index = get_animation()->track_find_key(animation_track, track_time);
animation = get_animation()->track_get_key_value(animation_track, animaiton_index);
diff --git a/editor/code_editor.h b/editor/code_editor.h
index 3c52a0c6e8..6e3bd88112 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -53,7 +53,6 @@ public:
void popup_find_line(CodeEdit *p_edit);
int get_line() const;
- void set_text_editor(CodeEdit *p_text_editor);
GotoLineDialog();
};
@@ -101,7 +100,6 @@ class FindReplaceBar : public HBoxContainer {
void _search_text_changed(const String &p_text);
void _search_text_submitted(const String &p_text);
void _replace_text_submitted(const String &p_text);
- void _update_size();
protected:
void _notification(int p_what);
diff --git a/editor/debugger/editor_visual_profiler.cpp b/editor/debugger/editor_visual_profiler.cpp
index f17ad0d36c..f25f18b7e4 100644
--- a/editor/debugger/editor_visual_profiler.cpp
+++ b/editor/debugger/editor_visual_profiler.cpp
@@ -370,8 +370,8 @@ void EditorVisualProfiler::_update_frame(bool p_focus_selected) {
float total_gpu = E->get_metadata(2);
total_cpu += cpu_time;
total_gpu += gpu_time;
- E->set_metadata(1, cpu_time);
- E->set_metadata(2, gpu_time);
+ E->set_metadata(1, total_cpu);
+ E->set_metadata(2, total_gpu);
}
category->set_icon(0, track_icon);
diff --git a/editor/editor_command_palette.cpp b/editor/editor_command_palette.cpp
index e69ced8522..71e9fac219 100644
--- a/editor/editor_command_palette.cpp
+++ b/editor/editor_command_palette.cpp
@@ -212,6 +212,12 @@ void EditorCommandPalette::_add_command(String p_command_name, String p_key_name
command.callable = p_binded_action;
command.shortcut = p_shortcut_text;
+ // Commands added from plugins don't exist yet when the history is loaded, so we assign the last use time here if it was recorded.
+ Dictionary command_history = EditorSettings::get_singleton()->get_project_metadata("command_palette", "command_history", Dictionary());
+ if (command_history.has(p_key_name)) {
+ command.last_used = command_history[p_key_name];
+ }
+
commands[p_key_name] = command;
}
@@ -242,7 +248,9 @@ void EditorCommandPalette::register_shortcuts_as_command() {
Array history_entries = command_history.keys();
for (int i = 0; i < history_entries.size(); i++) {
const String &history_key = history_entries[i];
- commands[history_key].last_used = command_history[history_key];
+ if (commands.has(history_key)) {
+ commands[history_key].last_used = command_history[history_key];
+ }
}
}
diff --git a/editor/editor_data.h b/editor/editor_data.h
index 9184ddcf39..976d718b8e 100644
--- a/editor/editor_data.h
+++ b/editor/editor_data.h
@@ -135,8 +135,6 @@ private:
Vector<Callable> undo_redo_callbacks;
Map<StringName, Callable> move_element_functions;
- void _cleanup_history();
-
Vector<EditedScene> edited_scene;
int current_edited_scene;
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index 767856f939..3d6b523733 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -2163,7 +2163,8 @@ Error EditorFileSystem::_resource_import(const String &p_path) {
}
bool EditorFileSystem::_should_skip_directory(const String &p_path) {
- if (p_path.begins_with(ProjectSettings::get_singleton()->get_project_data_path())) {
+ String project_data_path = ProjectSettings::get_singleton()->get_project_data_path();
+ if (p_path == project_data_path || p_path.begins_with(project_data_path + "/")) {
return true;
}
diff --git a/editor/editor_help.h b/editor/editor_help.h
index 7a45b1abc1..46605b6763 100644
--- a/editor/editor_help.h
+++ b/editor/editor_help.h
@@ -57,7 +57,6 @@ class FindBar : public HBoxContainer {
int results_count;
- void _show_search();
void _hide_bar();
void _search_text_changed(const String &p_text);
@@ -66,8 +65,6 @@ class FindBar : public HBoxContainer {
void _update_results_count();
void _update_matches_label();
- void _update_size();
-
protected:
void _notification(int p_what);
virtual void unhandled_input(const Ref<InputEvent> &p_event) override;
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index 4d0f27c5d4..9f049a0e58 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -245,13 +245,15 @@ void EditorProperty::_notification(int p_what) {
}
Color color;
- if (draw_red) {
- color = get_theme_color(is_read_only() ? SNAME("readonly_error_color") : SNAME("error_color"));
+ if (draw_warning) {
+ color = get_theme_color(is_read_only() ? SNAME("readonly_warning_color") : SNAME("warning_color"));
} else {
color = get_theme_color(is_read_only() ? SNAME("readonly_color") : SNAME("property_color"));
}
if (label.find(".") != -1) {
- color.a = 0.5; //this should be un-hacked honestly, as it's used for editor overrides
+ // FIXME: Move this to the project settings editor, as this is only used
+ // for project settings feature tag overrides.
+ color.a = 0.5;
}
int ofs = get_theme_constant(SNAME("font_offset"));
@@ -625,8 +627,8 @@ bool EditorProperty::is_checked() const {
return checked;
}
-void EditorProperty::set_draw_red(bool p_draw_red) {
- draw_red = p_draw_red;
+void EditorProperty::set_draw_warning(bool p_draw_warning) {
+ draw_warning = p_draw_warning;
update();
}
@@ -650,8 +652,8 @@ bool EditorProperty::is_keying() const {
return keying;
}
-bool EditorProperty::is_draw_red() const {
- return draw_red;
+bool EditorProperty::is_draw_warning() const {
+ return draw_warning;
}
void EditorProperty::_focusable_focused(int p_index) {
@@ -969,8 +971,8 @@ void EditorProperty::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_checked", "checked"), &EditorProperty::set_checked);
ClassDB::bind_method(D_METHOD("is_checked"), &EditorProperty::is_checked);
- ClassDB::bind_method(D_METHOD("set_draw_red", "draw_red"), &EditorProperty::set_draw_red);
- ClassDB::bind_method(D_METHOD("is_draw_red"), &EditorProperty::is_draw_red);
+ ClassDB::bind_method(D_METHOD("set_draw_warning", "draw_warning"), &EditorProperty::set_draw_warning);
+ ClassDB::bind_method(D_METHOD("is_draw_warning"), &EditorProperty::is_draw_warning);
ClassDB::bind_method(D_METHOD("set_keying", "keying"), &EditorProperty::set_keying);
ClassDB::bind_method(D_METHOD("is_keying"), &EditorProperty::is_keying);
@@ -993,7 +995,7 @@ void EditorProperty::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "read_only"), "set_read_only", "is_read_only");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "checkable"), "set_checkable", "is_checkable");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "checked"), "set_checked", "is_checked");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_red"), "set_draw_red", "is_draw_red");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_warning"), "set_draw_warning", "is_draw_warning");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "keying"), "set_keying", "is_keying");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "deletable"), "set_deletable", "is_deletable");
ADD_SIGNAL(MethodInfo("property_changed", PropertyInfo(Variant::STRING_NAME, "property"), PropertyInfo(Variant::NIL, "value", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NIL_IS_VARIANT)));
@@ -1018,7 +1020,7 @@ EditorProperty::EditorProperty() {
read_only = false;
checkable = false;
checked = false;
- draw_red = false;
+ draw_warning = false;
keying = false;
deletable = false;
keying_hover = false;
@@ -2393,14 +2395,15 @@ void EditorInspector::update_tree() {
valid_plugins.push_back(inspector_plugins[i]);
}
- // Decide if properties should be drawn in red.
- bool draw_red = false;
+ // Decide if properties should be drawn with the warning color (yellow).
+ bool draw_warning = false;
if (is_inside_tree()) {
Node *nod = Object::cast_to<Node>(object);
Node *es = EditorNode::get_singleton()->get_edited_scene();
if (nod && es != nod && nod->get_owner() != es) {
- // Draw in red edited nodes that are not in the currently edited scene.
- draw_red = true;
+ // Draw in warning color edited nodes that are not in the currently edited scene,
+ // as changes may be lost in the future.
+ draw_warning = true;
}
}
@@ -2855,7 +2858,7 @@ void EditorInspector::update_tree() {
editor_property_map[prop].push_back(ep);
}
}
- ep->set_draw_red(draw_red);
+ ep->set_draw_warning(draw_warning);
ep->set_use_folding(use_folding);
ep->set_checkable(checkable);
ep->set_checked(checked);
diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h
index b71efe8f19..124ea31302 100644
--- a/editor/editor_inspector.h
+++ b/editor/editor_inspector.h
@@ -74,7 +74,7 @@ private:
bool read_only;
bool checkable;
bool checked;
- bool draw_red;
+ bool draw_warning;
bool keying;
bool deletable;
@@ -96,8 +96,6 @@ private:
bool draw_top_bg;
void _ensure_popup();
- bool _is_property_different(const Variant &p_current, const Variant &p_orig);
- bool _get_instantiated_node_original_property(const StringName &p_prop, Variant &value);
void _focusable_focused(int p_index);
bool selectable;
@@ -150,8 +148,8 @@ public:
void set_checked(bool p_checked);
bool is_checked() const;
- void set_draw_red(bool p_draw_red);
- bool is_draw_red() const;
+ void set_draw_warning(bool p_draw_warning);
+ bool is_draw_warning() const;
void set_keying(bool p_keying);
bool is_keying() const;
@@ -281,8 +279,6 @@ public:
void unfold();
void fold();
- Object *get_edited_object();
-
EditorInspectorSection();
~EditorInspectorSection();
};
diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp
index 346b93a87c..251e1c2385 100644
--- a/editor/editor_log.cpp
+++ b/editor/editor_log.cpp
@@ -37,7 +37,7 @@
#include "scene/gui/center_container.h"
#include "scene/resources/font.h"
-void EditorLog::_error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, ErrorHandlerType p_type) {
+void EditorLog::_error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) {
EditorLog *self = (EditorLog *)p_self;
if (self->current != Thread::get_caller_id()) {
return;
@@ -50,6 +50,10 @@ void EditorLog::_error_handler(void *p_self, const char *p_func, const char *p_f
err_str = String(p_file) + ":" + itos(p_line) + " - " + String(p_error);
}
+ if (p_editor_notify) {
+ err_str += " (User)";
+ }
+
if (p_type == ERR_HANDLER_WARNING) {
self->add_message(err_str, MSG_TYPE_WARNING);
} else {
diff --git a/editor/editor_log.h b/editor/editor_log.h
index 6cbf4bedee..43cc5680bd 100644
--- a/editor/editor_log.h
+++ b/editor/editor_log.h
@@ -136,7 +136,7 @@ private:
bool is_loading_state = false; // Used to disable saving requests while loading (some signals from buttons will try trigger a save, which happens during loading).
Timer *save_state_timer;
- static void _error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, ErrorHandlerType p_type);
+ static void _error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, bool p_editor_notify, ErrorHandlerType p_type);
ErrorHandlerList eh;
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 5fd0a41788..891705da98 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -59,8 +59,8 @@
#include "scene/gui/panel.h"
#include "scene/gui/panel_container.h"
#include "scene/gui/split_container.h"
+#include "scene/gui/tab_bar.h"
#include "scene/gui/tab_container.h"
-#include "scene/gui/tabs.h"
#include "scene/gui/texture_progress_bar.h"
#include "scene/main/window.h"
#include "scene/resources/packed_scene.h"
@@ -95,6 +95,7 @@
#include "editor/editor_settings.h"
#include "editor/editor_spin_slider.h"
#include "editor/editor_themes.h"
+#include "editor/editor_toaster.h"
#include "editor/editor_translation_parser.h"
#include "editor/export_template_manager.h"
#include "editor/filesystem_dock.h"
@@ -657,7 +658,7 @@ void EditorNode::_notification(int p_what) {
} break;
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
- scene_tabs->set_tab_close_display_policy((bool(EDITOR_GET("interface/scene_tabs/always_show_close_button")) ? Tabs::CLOSE_BUTTON_SHOW_ALWAYS : Tabs::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
+ scene_tabs->set_tab_close_display_policy((bool(EDITOR_GET("interface/scene_tabs/always_show_close_button")) ? TabBar::CLOSE_BUTTON_SHOW_ALWAYS : TabBar::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
theme = create_custom_theme(theme_base->get_theme());
theme_base->set_theme(theme);
@@ -837,7 +838,7 @@ void EditorNode::_resources_changed(const Vector<String> &p_resources) {
}
if (res->get_import_path() != String()) {
- //this is an imported resource, will be reloaded if reimported via the _resources_reimported() callback
+ // this is an imported resource, will be reloaded if reimported via the _resources_reimported() callback
continue;
}
@@ -941,21 +942,21 @@ void EditorNode::_fs_changed() {
}
void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
- List<String> scenes; //will load later
+ List<String> scenes; // will load later
int current_tab = scene_tabs->get_current_tab();
for (int i = 0; i < p_resources.size(); i++) {
String file_type = ResourceLoader::get_resource_type(p_resources[i]);
if (file_type == "PackedScene") {
scenes.push_back(p_resources[i]);
- //reload later if needed, first go with normal resources
+ // reload later if needed, first go with normal resources
continue;
}
if (!ResourceCache::has(p_resources[i])) {
- continue; //not loaded, no need to reload
+ continue; // not loaded, no need to reload
}
- //reload normally
+ // reload normally
Resource *resource = ResourceCache::get(p_resources[i]);
if (resource) {
resource->reload_from_file();
@@ -1139,7 +1140,7 @@ Error EditorNode::load_resource(const String &p_resource, bool p_ignore_broken_d
ERR_FAIL_COND_V(!res.is_valid(), ERR_CANT_OPEN);
if (!p_ignore_broken_deps && dependency_errors.has(p_resource)) {
- //current_option = -1;
+ // current_option = -1;
Vector<String> errors;
for (Set<String>::Element *E = dependency_errors[p_resource].front(); E; E = E->next()) {
errors.push_back(E->get());
@@ -1215,7 +1216,7 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
List<String> preferred;
for (const String &E : extensions) {
if (p_resource->is_class("Script") && (E == "tres" || E == "res")) {
- //this serves no purpose and confused people
+ // this serves no purpose and confused people
continue;
}
file->add_filter("*." + E + " ; " + E.to_upper());
@@ -1324,7 +1325,7 @@ void EditorNode::_get_scene_metadata(const String &p_file) {
Error err = cf->load(path);
if (err != OK || !cf->has_section("editor_states")) {
- return; //must not exist
+ return; // must not exist
}
List<String> esl;
@@ -1348,7 +1349,7 @@ void EditorNode::_set_scene_metadata(const String &p_file, int p_idx) {
return;
}
- scene->set_meta("__editor_run_settings__", Variant()); //clear it (no point in keeping it)
+ scene->set_meta("__editor_run_settings__", Variant()); // clear it (no point in keeping it)
scene->set_meta("__editor_plugin_states__", Variant());
String path = EditorSettings::get_singleton()->get_project_settings_dir().plus_file(p_file.get_file() + "-editstate-" + p_file.md5_text() + ".cfg");
@@ -1391,10 +1392,10 @@ bool EditorNode::_find_and_save_resource(RES p_res, Map<RES, bool> &processed, i
if (p_res->get_path().is_resource_file()) {
if (changed || subchanged) {
- //save
+ // save
ResourceSaver::save(p_res->get_path(), p_res, flags);
}
- processed[p_res] = false; //because it's a file
+ processed[p_res] = false; // because it's a file
return false;
} else {
processed[p_res] = changed;
@@ -1492,7 +1493,7 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
_find_node_types(editor_data.get_edited_scene_root(), c2d, c3d);
save.step(TTR("Creating Thumbnail"), 1);
- //current view?
+ // current view?
Ref<Image> img;
// If neither 3D or 2D nodes are present, make a 1x1 black texture.
@@ -1545,12 +1546,12 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
}
img->convert(Image::FORMAT_RGB8);
- //save thumbnail directly, as thumbnailer may not update due to actual scene not changing md5
+ // save thumbnail directly, as thumbnailer may not update due to actual scene not changing md5
String temp_path = EditorPaths::get_singleton()->get_cache_dir();
String cache_base = ProjectSettings::get_singleton()->globalize_path(p_file).md5_text();
cache_base = temp_path.plus_file("resthumb-" + cache_base);
- //does not have it, try to load a cached thumbnail
+ // does not have it, try to load a cached thumbnail
String file = cache_base + ".png";
@@ -1598,7 +1599,7 @@ static bool _find_edited_resources(const Ref<Resource> &p_resource, Set<Ref<Reso
if (res.is_null()) {
continue;
}
- if (res->get_path().is_resource_file()) { //not a subresource, continue
+ if (res->get_path().is_resource_file()) { // not a subresource, continue
continue;
}
if (_find_edited_resources(res, edited_resources)) {
@@ -1611,7 +1612,7 @@ static bool _find_edited_resources(const Ref<Resource> &p_resource, Set<Ref<Reso
}
int EditorNode::_save_external_resources() {
- //save external resources and its subresources if any was modified
+ // save external resources and its subresources if any was modified
int flg = 0;
if (EditorSettings::get_singleton()->get("filesystem/on_save/compress_binary_resources")) {
@@ -1627,7 +1628,7 @@ int EditorNode::_save_external_resources() {
if (!res->get_path().is_resource_file()) {
continue;
}
- //not only check if this resource is edited, check contained subresources too
+ // not only check if this resource is edited, check contained subresources too
if (_find_edited_resources(res, edited_subresources)) {
ResourceSaver::save(res->get_path(), res, flg);
saved++;
@@ -1776,19 +1777,25 @@ void EditorNode::restart_editor() {
}
void EditorNode::_save_all_scenes() {
+ bool all_saved = true;
for (int i = 0; i < editor_data.get_edited_scene_count(); i++) {
Node *scene = editor_data.get_edited_scene_root(i);
- if (scene && scene->get_scene_file_path() != "" && DirAccess::exists(scene->get_scene_file_path().get_base_dir())) {
- if (i != editor_data.get_edited_scene()) {
- _save_scene(scene->get_scene_file_path(), i);
+ if (scene) {
+ if (scene->get_scene_file_path() != "" && DirAccess::exists(scene->get_scene_file_path().get_base_dir())) {
+ if (i != editor_data.get_edited_scene()) {
+ _save_scene(scene->get_scene_file_path(), i);
+ } else {
+ _save_scene_with_preview(scene->get_scene_file_path());
+ }
} else {
- _save_scene_with_preview(scene->get_scene_file_path());
+ all_saved = false;
}
- } else {
- show_warning(TTR("Could not save one or more scenes!"), TTR("Save All Scenes"));
}
}
+ if (!all_saved) {
+ show_warning(TTR("Could not save one or more scenes!"), TTR("Save All Scenes"));
+ }
_save_default_environment();
}
@@ -1830,7 +1837,7 @@ void EditorNode::_dialog_action(String p_file) {
case SETTINGS_PICK_MAIN_SCENE: {
ProjectSettings::get_singleton()->set("application/run/main_scene", p_file);
ProjectSettings::get_singleton()->save();
- //would be nice to show the project manager opened with the highlighted field..
+ // would be nice to show the project manager opened with the highlighted field..
if (pick_main_scene->has_meta("from_native") && (bool)pick_main_scene->get_meta("from_native")) {
run_native->resume_run_native();
@@ -1973,7 +1980,7 @@ void EditorNode::_dialog_action(String p_file) {
}
} break;
- default: { //save scene?
+ default: { // save scene?
if (file->get_file_mode() == EditorFileDialog::FILE_MODE_SAVE_FILE) {
_save_scene_with_preview(p_file);
@@ -2134,7 +2141,7 @@ void EditorNode::_edit_current() {
bool is_resource = current_obj->is_class("Resource");
bool is_node = current_obj->is_class("Node");
- String editable_warning; //none by default
+ String editable_warning; // none by default
if (is_resource) {
Resource *current_res = Object::cast_to<Resource>(current_obj);
@@ -2236,7 +2243,7 @@ void EditorNode::_edit_current() {
for (; plugin_index < editor_table.size(); plugin_index++) {
if (editor_table[plugin_index] == main_plugin) {
if (!main_editor_buttons[plugin_index]->is_visible()) {
- main_plugin = nullptr; //if button is not visible, then no plugin active
+ main_plugin = nullptr; // if button is not visible, then no plugin active
}
break;
@@ -2322,7 +2329,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
}
if (run_filename == "") {
- //evidently, run the scene
+ // evidently, run the scene
if (!ensure_main_scene(false)) {
return;
}
@@ -2405,7 +2412,7 @@ void EditorNode::_android_build_source_selected(const String &p_file) {
export_template_manager->install_android_template_from_file(p_file);
}
void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
- if (!p_confirmed) { //this may be a hack..
+ if (!p_confirmed) { // this may be a hack..
current_option = (MenuOptions)p_option;
}
@@ -2974,7 +2981,7 @@ int EditorNode::_next_unsaved_scene(bool p_valid_filename, int p_start) {
void EditorNode::_exit_editor() {
exiting = true;
- resource_preview->stop(); //stop early to avoid crashes
+ resource_preview->stop(); // stop early to avoid crashes
_save_docks();
// Dim the editor window while it's quitting to make it clearer that it's busy
@@ -3080,7 +3087,7 @@ void EditorNode::_editor_select(int p_which) {
ERR_FAIL_INDEX(p_which, editor_table.size());
- if (!main_editor_buttons[p_which]->is_visible()) { //button hidden, no editor
+ if (!main_editor_buttons[p_which]->is_visible()) { // button hidden, no editor
return;
}
@@ -3222,7 +3229,7 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled,
if (!p_enabled) {
EditorPlugin *addon = plugin_addons[p_addon];
remove_editor_plugin(addon, p_config_changed);
- memdelete(addon); //bye
+ memdelete(addon); // bye
plugin_addons.erase(p_addon);
_update_addon_config();
return;
@@ -3314,10 +3321,10 @@ void EditorNode::_remove_edited_scene(bool p_change_tab) {
void EditorNode::_remove_scene(int index, bool p_change_tab) {
if (editor_data.get_edited_scene() == index) {
- //Scene to remove is current scene
+ // Scene to remove is current scene
_remove_edited_scene(p_change_tab);
} else {
- //Scene to remove is not active scene
+ // Scene to remove is not active scene
editor_data.remove_scene(index);
}
}
@@ -3331,7 +3338,7 @@ void EditorNode::set_edited_scene(Node *p_scene) {
get_editor_data().set_edited_scene_root(p_scene);
if (Object::cast_to<Popup>(p_scene)) {
- Object::cast_to<Popup>(p_scene)->show(); //show popups
+ Object::cast_to<Popup>(p_scene)->show(); // show popups
}
scene_tree_dock->set_edited_scene(p_scene);
if (get_tree()) {
@@ -3367,7 +3374,7 @@ Dictionary EditorNode::_get_main_scene_state() {
void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
if (get_edited_scene() != p_for_scene && p_for_scene != nullptr) {
- return; //not for this scene
+ return; // not for this scene
}
changing_scene = false;
@@ -3382,7 +3389,7 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
if (p_state.has("editor_index")) {
int index = p_state["editor_index"];
- if (current < 2) { //if currently in spatial/2d, only switch to spatial/2d. if currently in script, stay there
+ if (current < 2) { // if currently in spatial/2d, only switch to spatial/2d. if currently in script, stay there
if (index < 2 || !get_edited_scene()) {
_editor_select(index);
}
@@ -3391,7 +3398,7 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
if (get_edited_scene()) {
if (current < 2) {
- //use heuristic instead
+ // use heuristic instead
int n2d = 0, n3d = 0;
_find_node_types(get_edited_scene(), n2d, n3d);
if (n2d > n3d) {
@@ -3413,7 +3420,7 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
scene_tree_dock->set_filter(p_state["node_filter"]);
}
- //this should only happen at the very end
+ // this should only happen at the very end
EditorDebuggerNode::get_singleton()->update_live_edit_root();
ScriptEditor::get_singleton()->set_scene_root_script(editor_data.get_scene_root_script(editor_data.get_edited_scene()));
@@ -3434,7 +3441,7 @@ void EditorNode::_clear_undo_history() {
}
void EditorNode::set_current_scene(int p_idx) {
- //Save the folding in case the scene gets reloaded.
+ // Save the folding in case the scene gets reloaded.
if (editor_data.get_scene_path(p_idx) != "" && editor_data.get_edited_scene_root(p_idx)) {
editor_folding.save_scene_folding(editor_data.get_edited_scene_root(p_idx), editor_data.get_scene_path(p_idx));
}
@@ -3462,7 +3469,7 @@ void EditorNode::set_current_scene(int p_idx) {
Node *new_scene = editor_data.get_edited_scene_root();
if (Object::cast_to<Popup>(new_scene)) {
- Object::cast_to<Popup>(new_scene)->show(); //show popups
+ Object::cast_to<Popup>(new_scene)->show(); // show popups
}
scene_tree_dock->set_edited_scene(new_scene);
@@ -3481,7 +3488,7 @@ void EditorNode::set_current_scene(int p_idx) {
_update_title();
- call_deferred(SNAME("_set_main_scene_state"), state, get_edited_scene()); //do after everything else is done setting up
+ call_deferred(SNAME("_set_main_scene_state"), state, get_edited_scene()); // do after everything else is done setting up
}
bool EditorNode::is_scene_open(const String &p_path) {
@@ -3583,7 +3590,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
return ERR_FILE_MISSING_DEPENDENCIES;
}
- dependency_errors.erase(lpath); //at least not self path
+ dependency_errors.erase(lpath); // at least not self path
for (KeyValue<String, Set<String>> &E : dependency_errors) {
String txt = vformat(TTR("Scene '%s' has broken dependencies:"), E.key) + "\n";
@@ -3594,7 +3601,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
}
if (ResourceCache::has(lpath)) {
- //used from somewhere else? no problem! update state and replace sdata
+ // used from somewhere else? no problem! update state and replace sdata
Ref<PackedScene> ps = Ref<PackedScene>(Object::cast_to<PackedScene>(ResourceCache::get(lpath)));
if (ps.is_valid()) {
ps->replace_state(sdata->get_state());
@@ -3603,7 +3610,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
}
} else {
- sdata->set_path(lpath, true); //take over path
+ sdata->set_path(lpath, true); // take over path
}
Node *new_scene = sdata->instantiate(PackedScene::GEN_EDIT_STATE_MAIN);
@@ -3842,7 +3849,8 @@ void EditorNode::register_editor_types() {
GDREGISTER_VIRTUAL_CLASS(EditorInterface);
GDREGISTER_CLASS(EditorExportPlugin);
GDREGISTER_CLASS(EditorResourceConversionPlugin);
- GDREGISTER_CLASS(EditorSceneImporter);
+ GDREGISTER_CLASS(EditorSceneFormatImporter);
+ GDREGISTER_CLASS(EditorScenePostImportPlugin);
GDREGISTER_CLASS(EditorInspector);
GDREGISTER_CLASS(EditorInspectorPlugin);
GDREGISTER_CLASS(EditorProperty);
@@ -4216,7 +4224,7 @@ void EditorNode::_dock_make_float() {
ERR_FAIL_COND(!dock);
const Size2i borders = Size2i(4, 4) * EDSCALE;
- Size2 dock_size = dock->get_size() + borders * 2; //remember size
+ Size2 dock_size = dock->get_size() + borders * 2; // remember size
Point2 dock_screen_pos = dock->get_global_position() + get_tree()->get_root()->get_position() - borders;
print_line("dock pos: " + dock->get_global_position() + " window pos: " + get_tree()->get_root()->get_position());
@@ -4456,7 +4464,7 @@ void EditorNode::_dock_select_draw() {
void EditorNode::_save_docks() {
if (waiting_for_first_scan) {
- return; //scanning, do not touch docks
+ return; // scanning, do not touch docks
}
Ref<ConfigFile> config;
config.instantiate();
@@ -4527,7 +4535,7 @@ void EditorNode::_load_docks() {
config.instantiate();
Error err = config->load(EditorSettings::get_singleton()->get_project_settings_dir().plus_file("editor_layout.cfg"));
if (err != OK) {
- //no config
+ // no config
if (overridden_default_layout >= 0) {
_layout_menu_option(overridden_default_layout);
}
@@ -4640,7 +4648,7 @@ void EditorNode::_load_docks_from_config(Ref<ConfigFile> p_layout, const String
for (int j = 0; j < names.size(); j++) {
String name = names[j];
- //find it, in a horribly inefficient way
+ // find it, in a horribly inefficient way
int atidx = -1;
Control *node = nullptr;
for (int k = 0; k < DOCK_SLOT_MAX; k++) {
@@ -4654,7 +4662,7 @@ void EditorNode::_load_docks_from_config(Ref<ConfigFile> p_layout, const String
atidx = k;
break;
}
- if (atidx == -1) { //well, it's not anywhere
+ if (atidx == -1) { // well, it's not anywhere
continue;
}
@@ -4770,7 +4778,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
+ 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", "");
if (main_scene == "") {
@@ -4891,7 +4899,7 @@ void EditorNode::_update_layouts_menu() {
config.instantiate();
Error err = config->load(EditorSettings::get_singleton()->get_editor_layouts_config());
if (err != OK) {
- return; //no config
+ return; // no config
}
List<String> layouts;
@@ -4932,7 +4940,7 @@ void EditorNode::_layout_menu_option(int p_id) {
config.instantiate();
Error err = config->load(EditorSettings::get_singleton()->get_editor_layouts_config());
if (err != OK) {
- return; //no config
+ return; // no config
}
_load_docks_from_config(config, editor_layouts->get_item_text(p_id));
@@ -5073,7 +5081,7 @@ void EditorNode::_scene_tab_changed(int p_tab) {
bool unsaved = (saved_version != editor_data.get_undo_redo().get_version());
if (p_tab == editor_data.get_edited_scene()) {
- return; //pointless
+ return; // pointless
}
uint64_t next_scene_version = editor_data.get_scene_version(p_tab);
@@ -5276,11 +5284,11 @@ Variant EditorNode::drag_resource(const Ref<Resource> &p_res, Control *p_from) {
Ref<Texture2D> preview;
{
- //todo make proper previews
+ // todo make proper previews
Ref<ImageTexture> texture = gui_base->get_theme_icon(SNAME("FileBigThumb"), SNAME("EditorIcons"));
Ref<Image> img = texture->get_image();
img = img->duplicate();
- img->resize(48, 48); //meh
+ img->resize(48, 48); // meh
Ref<ImageTexture> resized_pic = Ref<ImageTexture>(memnew(ImageTexture));
resized_pic->create_from_image(img);
preview = resized_pic;
@@ -5298,7 +5306,7 @@ Variant EditorNode::drag_resource(const Ref<Resource> &p_res, Control *p_from) {
drag_control->add_child(label);
- p_from->set_drag_preview(drag_control); //wait until it enters scene
+ p_from->set_drag_preview(drag_control); // wait until it enters scene
label->set_position(Point2((preview->get_width() - label->get_minimum_size().width) / 2, preview->get_height()));
@@ -5352,7 +5360,7 @@ Variant EditorNode::drag_files_and_dirs(const Vector<String> &p_paths, Control *
}
vbox->add_child(label);
}
- p_from->set_drag_preview(vbox); //wait until it enters scene
+ p_from->set_drag_preview(vbox); // wait until it enters scene
Dictionary drag_data;
drag_data["type"] = has_folder ? "files_and_dirs" : "files";
@@ -5469,7 +5477,7 @@ void EditorNode::reload_scene(const String &p_path) {
if (scene_idx == -1) {
if (get_edited_scene()) {
- //scene is not open, so at it might be instantiated. We'll refresh the whole scene later.
+ // scene is not open, so at it might be instantiated. We'll refresh the whole scene later.
editor_data.get_undo_redo().clear_history();
}
return;
@@ -5480,17 +5488,17 @@ void EditorNode::reload_scene(const String &p_path) {
_set_scene_metadata(p_path);
}
- //remove scene
+ // remove scene
_remove_scene(scene_idx, false);
- //reload scene
+ // reload scene
load_scene(p_path, true, false, true, true);
- //adjust index so tab is back a the previous position
+ // adjust index so tab is back a the previous position
editor_data.move_edited_scene_to_index(scene_idx);
get_undo_redo()->clear_history();
- //recover the tab
+ // recover the tab
scene_tabs->set_current_tab(current_tab);
}
@@ -5590,7 +5598,7 @@ void EditorNode::_update_video_driver_color() {
void EditorNode::_video_driver_selected(int p_which) {
String driver = video_driver->get_item_metadata(p_which);
- String current = ""; //OS::get_singleton()->get_video_driver_name(OS::get_singleton()->get_current_video_driver());
+ String current = ""; // OS::get_singleton()->get_video_driver_name(OS::get_singleton()->get_current_video_driver());
if (driver == current) {
return;
@@ -5779,9 +5787,9 @@ EditorNode::EditorNode() {
PhysicsServer2D::get_singleton()->set_active(false); // no physics by default if editor
ScriptServer::set_scripting_enabled(false); // no scripting by default if editor
- EditorHelp::generate_doc(); //before any editor classes are created
+ EditorHelp::generate_doc(); // before any editor classes are created
SceneState::set_disable_placeholders(true);
- ResourceLoader::clear_translation_remaps(); //no remaps using during editor
+ ResourceLoader::clear_translation_remaps(); // no remaps using during editor
ResourceLoader::clear_path_remaps();
Input *id = Input::get_singleton();
@@ -5795,8 +5803,8 @@ EditorNode::EditorNode() {
}
if (!found_touchscreen && Input::get_singleton()) {
- //only if no touchscreen ui hint, set emulation
- id->set_emulate_touch_from_mouse(false); //just disable just in case
+ // only if no touchscreen ui hint, set emulation
+ id->set_emulate_touch_from_mouse(false); // just disable just in case
}
DisplayServer::get_singleton()->cursor_set_custom_image(RES());
}
@@ -5863,7 +5871,7 @@ EditorNode::EditorNode() {
ResourceLoader::set_error_notify_func(this, _load_error_notify);
ResourceLoader::set_dependency_error_notify_func(this, _dependency_error_report);
- { //register importers at the beginning, so dialogs are created with the right extensions
+ { // register importers at the beginning, so dialogs are created with the right extensions
Ref<ResourceImporterTexture> import_texture;
import_texture.instantiate();
ResourceFormatImporter::get_singleton()->add_importer(import_texture);
@@ -5929,7 +5937,7 @@ EditorNode::EditorNode() {
ResourceFormatImporter::get_singleton()->add_importer(import_scene);
{
- Ref<EditorSceneImporterCollada> import_collada;
+ Ref<EditorSceneFormatImporterCollada> import_collada;
import_collada.instantiate();
import_scene->add_importer(import_collada);
@@ -5937,7 +5945,7 @@ EditorNode::EditorNode() {
import_obj2.instantiate();
import_scene->add_importer(import_obj2);
- Ref<EditorSceneImporterESCN> import_escn;
+ Ref<EditorSceneFormatImporterESCN> import_escn;
import_escn.instantiate();
import_scene->add_importer(import_escn);
}
@@ -5966,7 +5974,7 @@ EditorNode::EditorNode() {
EditorFileSystem *efs = memnew(EditorFileSystem);
add_child(efs);
- //used for previews
+ // used for previews
FileDialog::get_icon_func = _file_dialog_get_icon;
FileDialog::register_func = _file_dialog_register;
FileDialog::unregister_func = _file_dialog_unregister;
@@ -5985,7 +5993,7 @@ EditorNode::EditorNode() {
ClassDB::set_class_enabled("RootMotionView", true);
- //defs here, use EDITOR_GET in logic
+ // defs here, use EDITOR_GET in logic
EDITOR_DEF_RST("interface/scene_tabs/always_show_close_button", false);
EDITOR_DEF_RST("interface/scene_tabs/resize_if_many_tabs", true);
EDITOR_DEF_RST("interface/scene_tabs/minimum_width", 50);
@@ -6209,13 +6217,13 @@ EditorNode::EditorNode() {
tab_preview->set_position(Point2(2, 2) * EDSCALE);
tab_preview_panel->add_child(tab_preview);
- scene_tabs = memnew(Tabs);
+ scene_tabs = memnew(TabBar);
scene_tabs->add_theme_style_override("tab_selected", gui_base->get_theme_stylebox(SNAME("SceneTabFG"), SNAME("EditorStyles")));
scene_tabs->add_theme_style_override("tab_unselected", gui_base->get_theme_stylebox(SNAME("SceneTabBG"), SNAME("EditorStyles")));
scene_tabs->set_select_with_rmb(true);
scene_tabs->add_tab("unsaved");
- scene_tabs->set_tab_align(Tabs::ALIGN_LEFT);
- scene_tabs->set_tab_close_display_policy((bool(EDITOR_DEF("interface/scene_tabs/always_show_close_button", false)) ? Tabs::CLOSE_BUTTON_SHOW_ALWAYS : Tabs::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
+ scene_tabs->set_tab_align(TabBar::ALIGN_LEFT);
+ scene_tabs->set_tab_close_display_policy((bool(EDITOR_DEF("interface/scene_tabs/always_show_close_button", false)) ? TabBar::CLOSE_BUTTON_SHOW_ALWAYS : TabBar::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
scene_tabs->set_min_width(int(EDITOR_DEF("interface/scene_tabs/minimum_width", 50)) * EDSCALE);
scene_tabs->set_drag_to_rearrange_enabled(true);
scene_tabs->connect("tab_changed", callable_mp(this, &EditorNode::_scene_tab_changed));
@@ -6741,6 +6749,9 @@ EditorNode::EditorNode() {
bottom_panel_hb_editors->set_h_size_flags(Control::SIZE_EXPAND_FILL);
bottom_panel_hb->add_child(bottom_panel_hb_editors);
+ editor_toaster = memnew(EditorToaster);
+ bottom_panel_hb->add_child(editor_toaster);
+
VBoxContainer *version_info_vbc = memnew(VBoxContainer);
bottom_panel_hb->add_child(version_info_vbc);
@@ -6913,7 +6924,7 @@ EditorNode::EditorNode() {
EditorAudioBuses *audio_bus_editor = EditorAudioBuses::register_editor();
- ScriptTextEditor::register_editor(); //register one for text scripts
+ ScriptTextEditor::register_editor(); // register one for text scripts
TextEditor::register_editor();
if (StreamPeerSSL::is_available()) {
@@ -6922,12 +6933,12 @@ EditorNode::EditorNode() {
WARN_PRINT("Asset Library not available, as it requires SSL to work.");
}
- //add interface before adding plugins
+ // add interface before adding plugins
editor_interface = memnew(EditorInterface);
add_child(editor_interface);
- //more visually meaningful to have this later
+ // more visually meaningful to have this later
raise_bottom_panel_item(AnimationPlayerEditor::get_singleton());
add_editor_plugin(VersionControlEditorPlugin::get_singleton());
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 73feeecfee..c64bcc0460 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -37,6 +37,7 @@
#include "editor/editor_folding.h"
#include "editor/editor_native_shader_source_visualizer.h"
#include "editor/editor_run.h"
+#include "editor/editor_toaster.h"
#include "editor/inspector_dock.h"
#include "editor/property_editor.h"
#include "editor/scene_tree_dock.h"
@@ -84,7 +85,7 @@ class ProjectSettingsEditor;
class RunSettingsDialog;
class ScriptCreateDialog;
class TabContainer;
-class Tabs;
+class TabBar;
class TextureProgressBar;
class Button;
class VSplitContainer;
@@ -215,7 +216,7 @@ private:
TOOL_MENU_BASE = 1000
};
- SubViewport *scene_root; //root of the scene being edited
+ SubViewport *scene_root; // root of the scene being edited
PanelContainer *scene_root_parent;
Control *theme_base;
@@ -249,7 +250,7 @@ private:
// Main tabs
- Tabs *scene_tabs;
+ TabBar *scene_tabs;
PopupMenu *scene_tabs_context_menu;
Panel *tab_preview_panel;
TextureRect *tab_preview;
@@ -323,7 +324,7 @@ private:
EditorSettingsDialog *settings_config_dialog;
ProjectSettingsEditor *project_settings;
- bool settings_changed = true; //make it update settings on first frame
+ bool settings_changed = true; // make it update settings on first frame
void _update_from_settings();
PopupMenu *vcs_actions_menu;
@@ -438,6 +439,7 @@ private:
HBoxContainer *bottom_panel_hb;
HBoxContainer *bottom_panel_hb_editors;
VBoxContainer *bottom_panel_vb;
+ EditorToaster *editor_toaster;
LinkButton *version_btn;
Button *bottom_panel_raise;
@@ -518,9 +520,6 @@ private:
void _run(bool p_current = false, const String &p_custom = "");
void _run_native(const Ref<EditorExportPreset> &p_preset);
- void _save_optimized();
- void _import_action(const String &p_action);
- void _import(const String &p_file);
void _add_to_recent_scenes(const String &p_scene);
void _update_recent_scenes();
void _open_recent_scene(int p_idx);
@@ -558,7 +557,6 @@ private:
static void _editor_file_dialog_register(EditorFileDialog *p_dialog);
static void _editor_file_dialog_unregister(EditorFileDialog *p_dialog);
- void _cleanup_scene();
void _remove_edited_scene(bool p_change_tab = true);
void _remove_scene(int index, bool p_change_tab = true);
bool _find_and_save_resource(RES p_res, Map<RES, bool> &processed, int32_t flags);
@@ -656,8 +654,6 @@ private:
static int build_callback_count;
static EditorBuildCallback build_callbacks[MAX_BUILD_CALLBACKS];
- void _license_tree_selected();
-
void _update_update_spinner();
Vector<Ref<EditorResourceConversionPlugin>> resource_conversion_plugins;
@@ -773,10 +769,9 @@ public:
Node *get_edited_scene() { return editor_data.get_edited_scene_root(); }
- SubViewport *get_scene_root() { return scene_root; } //root of the scene being edited
+ SubViewport *get_scene_root() { return scene_root; } // root of the scene being edited
void fix_dependencies(const String &p_for_file);
- void clear_scene() { _cleanup_scene(); }
int new_scene();
Error load_scene(const String &p_scene, bool p_ignore_broken_deps = false, bool p_set_inherited = false, bool p_clear_errors = true, bool p_force_open_imported = false, bool p_silent_change_tab = false);
Error load_resource(const String &p_resource, bool p_ignore_broken_deps = false);
@@ -849,8 +844,6 @@ public:
bool is_scene_in_use(const String &p_path);
- void scan_import_changes();
-
void save_layout();
void open_export_template_manager();
@@ -892,7 +885,6 @@ public:
EditorNode();
~EditorNode();
- void get_singleton(const char *arg1, bool arg2);
void add_resource_conversion_plugin(const Ref<EditorResourceConversionPlugin> &p_plugin);
void remove_resource_conversion_plugin(const Ref<EditorResourceConversionPlugin> &p_plugin);
diff --git a/editor/editor_path.h b/editor/editor_path.h
index cabfa931d6..07f8b7244e 100644
--- a/editor/editor_path.h
+++ b/editor/editor_path.h
@@ -47,7 +47,6 @@ class EditorPath : public Button {
PopupMenu *sub_objects_menu;
Vector<ObjectID> objects;
- EditorPath();
void _show_popup();
void _id_pressed(int p_idx);
diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp
index aee8322a97..61c01993ae 100644
--- a/editor/editor_plugin.cpp
+++ b/editor/editor_plugin.cpp
@@ -762,16 +762,23 @@ void EditorPlugin::remove_inspector_plugin(const Ref<EditorInspectorPlugin> &p_p
EditorInspector::remove_inspector_plugin(p_plugin);
}
-void EditorPlugin::add_scene_import_plugin(const Ref<EditorSceneImporter> &p_importer) {
+void EditorPlugin::add_scene_format_importer_plugin(const Ref<EditorSceneFormatImporter> &p_importer) {
ERR_FAIL_COND(!p_importer.is_valid());
ResourceImporterScene::get_singleton()->add_importer(p_importer);
}
-void EditorPlugin::remove_scene_import_plugin(const Ref<EditorSceneImporter> &p_importer) {
+void EditorPlugin::remove_scene_format_importer_plugin(const Ref<EditorSceneFormatImporter> &p_importer) {
ERR_FAIL_COND(!p_importer.is_valid());
ResourceImporterScene::get_singleton()->remove_importer(p_importer);
}
+void EditorPlugin::add_scene_post_import_plugin(const Ref<EditorScenePostImportPlugin> &p_plugin) {
+ ResourceImporterScene::get_singleton()->add_post_importer_plugin(p_plugin);
+}
+void EditorPlugin::remove_scene_post_import_plugin(const Ref<EditorScenePostImportPlugin> &p_plugin) {
+ ResourceImporterScene::get_singleton()->remove_post_importer_plugin(p_plugin);
+}
+
int find(const PackedStringArray &a, const String &v) {
const String *r = a.ptr();
for (int j = 0; j < a.size(); ++j) {
@@ -879,8 +886,10 @@ void EditorPlugin::_bind_methods() {
ClassDB::bind_method(D_METHOD("remove_translation_parser_plugin", "parser"), &EditorPlugin::remove_translation_parser_plugin);
ClassDB::bind_method(D_METHOD("add_import_plugin", "importer"), &EditorPlugin::add_import_plugin);
ClassDB::bind_method(D_METHOD("remove_import_plugin", "importer"), &EditorPlugin::remove_import_plugin);
- ClassDB::bind_method(D_METHOD("add_scene_import_plugin", "scene_importer"), &EditorPlugin::add_scene_import_plugin);
- ClassDB::bind_method(D_METHOD("remove_scene_import_plugin", "scene_importer"), &EditorPlugin::remove_scene_import_plugin);
+ ClassDB::bind_method(D_METHOD("add_scene_format_importer_plugin", "scene_format_importer"), &EditorPlugin::add_scene_format_importer_plugin);
+ ClassDB::bind_method(D_METHOD("remove_scene_format_importer_plugin", "scene_format_importer"), &EditorPlugin::remove_scene_format_importer_plugin);
+ ClassDB::bind_method(D_METHOD("add_scene_post_import_plugin", "scene_import_plugin"), &EditorPlugin::add_scene_post_import_plugin);
+ ClassDB::bind_method(D_METHOD("remove_scene_post_import_plugin", "scene_import_plugin"), &EditorPlugin::remove_scene_post_import_plugin);
ClassDB::bind_method(D_METHOD("add_export_plugin", "plugin"), &EditorPlugin::add_export_plugin);
ClassDB::bind_method(D_METHOD("remove_export_plugin", "plugin"), &EditorPlugin::remove_export_plugin);
ClassDB::bind_method(D_METHOD("add_spatial_gizmo_plugin", "plugin"), &EditorPlugin::add_spatial_gizmo_plugin);
diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h
index 57830df327..278059f8c4 100644
--- a/editor/editor_plugin.h
+++ b/editor/editor_plugin.h
@@ -288,8 +288,11 @@ public:
void add_inspector_plugin(const Ref<EditorInspectorPlugin> &p_plugin);
void remove_inspector_plugin(const Ref<EditorInspectorPlugin> &p_plugin);
- void add_scene_import_plugin(const Ref<EditorSceneImporter> &p_importer);
- void remove_scene_import_plugin(const Ref<EditorSceneImporter> &p_importer);
+ void add_scene_format_importer_plugin(const Ref<EditorSceneFormatImporter> &p_importer);
+ void remove_scene_format_importer_plugin(const Ref<EditorSceneFormatImporter> &p_importer);
+
+ void add_scene_post_import_plugin(const Ref<EditorScenePostImportPlugin> &p_importer);
+ void remove_scene_post_import_plugin(const Ref<EditorScenePostImportPlugin> &p_importer);
void add_autoload_singleton(const String &p_name, const String &p_path);
void remove_autoload_singleton(const String &p_name);
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 43d458c58e..1da9213b89 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -140,32 +140,37 @@ bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const {
if (p_name == "shortcuts") {
Array save_array;
+ const OrderedHashMap<String, List<Ref<InputEvent>>> &builtin_list = InputMap::get_singleton()->get_builtins();
for (const KeyValue<String, Ref<Shortcut>> &shortcut_definition : shortcuts) {
Ref<Shortcut> sc = shortcut_definition.value;
- if (builtin_action_overrides.has(shortcut_definition.key)) {
+ if (builtin_list.has(shortcut_definition.key)) {
// This shortcut was auto-generated from built in actions: don't save.
+ // If the builtin is overriden, it will be saved in the "builtin_action_overrides" section below.
continue;
}
- if (optimize_save) {
- if (!sc->has_meta("original")) {
- continue; //this came from settings but is not any longer used
- }
+ Array shortcut_events = sc->get_events();
+
+ Dictionary dict;
+ dict["name"] = shortcut_definition.key;
+ dict["shortcuts"] = shortcut_events;
+
+ if (!sc->has_meta("original")) {
+ // Getting the meta when it doesn't exist will return an empty array. If the 'shortcut_events' have been cleared,
+ // we still want save the shortcut in this case so that shortcuts that the user has customised are not reset,
+ // even if the 'original' has not been populated yet. This can happen when calling save() from the Project Manager.
+ save_array.push_back(dict);
+ continue;
}
Array original_events = sc->get_meta("original");
- Array shortcut_events = sc->get_events();
bool is_same = Shortcut::is_event_array_equal(original_events, shortcut_events);
if (is_same) {
continue; // Not changed from default; don't save.
}
- Dictionary dict;
- dict["name"] = shortcut_definition.key;
- dict["shortcuts"] = shortcut_events;
-
save_array.push_back(dict);
}
r_ret = save_array;
@@ -437,6 +442,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("interface/editor/hide_console_window", false);
_initial_set("interface/editor/mouse_extra_buttons_navigate_history", true);
_initial_set("interface/editor/save_each_scene_on_quit", true); // Regression
+ EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/show_internal_errors_in_toast_notifications", 0, "Auto,Enabled,Disabled")
// Inspector
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "interface/inspector/max_array_dictionary_items_per_page", 20, "10,100,1")
@@ -1511,7 +1517,7 @@ void ED_SHORTCUT_OVERRIDE_ARRAY(const String &p_path, const String &p_feature, c
// Directly override the existing shortcut.
sc->set_events(events);
- sc->set_meta("original", events);
+ sc->set_meta("original", events.duplicate(true));
}
Ref<Shortcut> ED_SHORTCUT(const String &p_path, const String &p_name, Key p_keycode) {
@@ -1545,21 +1551,21 @@ Ref<Shortcut> ED_SHORTCUT_ARRAY(const String &p_path, const String &p_name, cons
sc.instantiate();
sc->set_name(p_name);
sc->set_events(events);
- sc->set_meta("original", events);
+ sc->set_meta("original", events.duplicate(true));
return sc;
}
Ref<Shortcut> sc = EditorSettings::get_singleton()->get_shortcut(p_path);
if (sc.is_valid()) {
sc->set_name(p_name); //keep name (the ones that come from disk have no name)
- sc->set_meta("original", events); //to compare against changes
+ sc->set_meta("original", events.duplicate(true)); //to compare against changes
return sc;
}
sc.instantiate();
sc->set_name(p_name);
sc->set_events(events);
- sc->set_meta("original", events); //to compare against changes
+ sc->set_meta("original", events.duplicate(true)); //to compare against changes
EditorSettings::get_singleton()->add_shortcut(p_path, sc);
return sc;
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index 2d4db48f2a..fdcc0438ae 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -403,7 +403,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
float prev_icon_saturation = theme->has_color("icon_saturation", "Editor") ? theme->get_color("icon_saturation", "Editor").r : 1.0;
- theme->set_color("icon_saturation", "Editor", Color(icon_saturation, icon_saturation, icon_saturation)); //can't save single float in theme, so using color
+ theme->set_color("icon_saturation", "Editor", Color(icon_saturation, icon_saturation, icon_saturation)); // can't save single float in theme, so using color
theme->set_color("accent_color", "Editor", accent_color);
theme->set_color("highlight_color", "Editor", highlight_color);
theme->set_color("disabled_highlight_color", "Editor", disabled_highlight_color);
@@ -431,7 +431,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
Color error_color = Color(1, 0.47, 0.42);
Color property_color = font_color.lerp(Color(0.5, 0.5, 0.5), 0.5);
Color readonly_color = property_color.lerp(dark_theme ? Color(0, 0, 0) : Color(1, 1, 1), 0.5);
- Color readonly_error_color = error_color.lerp(dark_theme ? Color(0, 0, 0) : Color(1, 1, 1), 0.5);
+ Color readonly_warning_color = error_color.lerp(dark_theme ? Color(0, 0, 0) : Color(1, 1, 1), 0.5);
if (!dark_theme) {
// Darken some colors to be readable on a light background
@@ -445,7 +445,6 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("error_color", "Editor", error_color);
theme->set_color("property_color", "Editor", property_color);
theme->set_color("readonly_color", "Editor", readonly_color);
- theme->set_color("readonly_error_color", "EditorProperty", readonly_error_color);
if (!dark_theme) {
theme->set_color("vulkan_color", "Editor", Color::hex(0xad1128ff));
@@ -549,7 +548,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
Ref<StyleBoxEmpty> style_empty = make_empty_stylebox(default_margin_size, default_margin_size, default_margin_size, default_margin_size);
- // Tabs
+ // TabBar
Ref<StyleBoxFlat> style_tab_selected = style_widget->duplicate();
@@ -819,10 +818,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_stylebox("bg_selected", "EditorProperty", style_property_bg);
theme->set_stylebox("bg", "EditorProperty", Ref<StyleBoxEmpty>(memnew(StyleBoxEmpty)));
theme->set_constant("vseparation", "EditorProperty", (extra_spacing + default_margin_size) * EDSCALE);
- theme->set_color("error_color", "EditorProperty", error_color);
+ theme->set_color("warning_color", "EditorProperty", warning_color);
theme->set_color("property_color", "EditorProperty", property_color);
theme->set_color("readonly_color", "EditorProperty", readonly_color);
- theme->set_color("readonly_error_color", "EditorProperty", readonly_error_color);
+ theme->set_color("readonly_warning_color", "EditorProperty", readonly_warning_color);
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);
@@ -950,33 +949,33 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_constant("icon_margin", "ItemList", 6 * EDSCALE);
theme->set_constant("line_separation", "ItemList", 3 * EDSCALE);
- // Tabs & TabContainer
+ // TabBar & TabContainer
theme->set_stylebox("tab_selected", "TabContainer", style_tab_selected);
theme->set_stylebox("tab_unselected", "TabContainer", style_tab_unselected);
theme->set_stylebox("tab_disabled", "TabContainer", style_tab_disabled);
- theme->set_stylebox("tab_selected", "Tabs", style_tab_selected);
- theme->set_stylebox("tab_unselected", "Tabs", style_tab_unselected);
- theme->set_stylebox("tab_disabled", "Tabs", style_tab_disabled);
+ theme->set_stylebox("tab_selected", "TabBar", style_tab_selected);
+ theme->set_stylebox("tab_unselected", "TabBar", style_tab_unselected);
+ theme->set_stylebox("tab_disabled", "TabBar", style_tab_disabled);
theme->set_color("font_selected_color", "TabContainer", font_color);
theme->set_color("font_unselected_color", "TabContainer", font_disabled_color);
- theme->set_color("font_selected_color", "Tabs", font_color);
- theme->set_color("font_unselected_color", "Tabs", font_disabled_color);
+ theme->set_color("font_selected_color", "TabBar", font_color);
+ theme->set_color("font_unselected_color", "TabBar", font_disabled_color);
theme->set_icon("menu", "TabContainer", theme->get_icon("GuiTabMenu", "EditorIcons"));
theme->set_icon("menu_highlight", "TabContainer", theme->get_icon("GuiTabMenuHl", "EditorIcons"));
theme->set_stylebox("SceneTabFG", "EditorStyles", style_tab_selected);
theme->set_stylebox("SceneTabBG", "EditorStyles", style_tab_unselected);
- theme->set_icon("close", "Tabs", theme->get_icon("GuiClose", "EditorIcons"));
- theme->set_stylebox("close_bg_pressed", "Tabs", style_menu);
- theme->set_stylebox("close_bg_highlight", "Tabs", style_menu);
+ theme->set_icon("close", "TabBar", theme->get_icon("GuiClose", "EditorIcons"));
+ theme->set_stylebox("close_bg_pressed", "TabBar", style_menu);
+ theme->set_stylebox("close_bg_highlight", "TabBar", style_menu);
theme->set_icon("increment", "TabContainer", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
theme->set_icon("decrement", "TabContainer", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
- theme->set_icon("increment", "Tabs", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
- theme->set_icon("decrement", "Tabs", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
- theme->set_icon("increment_highlight", "Tabs", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
- theme->set_icon("decrement_highlight", "Tabs", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
+ theme->set_icon("increment", "TabBar", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
+ theme->set_icon("decrement", "TabBar", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
+ theme->set_icon("increment_highlight", "TabBar", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
+ theme->set_icon("decrement_highlight", "TabBar", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
theme->set_icon("increment_highlight", "TabContainer", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
theme->set_icon("decrement_highlight", "TabContainer", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
- theme->set_constant("hseparation", "Tabs", 4 * EDSCALE);
+ theme->set_constant("hseparation", "TabBar", 4 * EDSCALE);
// Content of each tab
Ref<StyleBoxFlat> style_content_panel = style_default->duplicate();
diff --git a/editor/editor_toaster.cpp b/editor/editor_toaster.cpp
new file mode 100644
index 0000000000..9de0ea40fe
--- /dev/null
+++ b/editor/editor_toaster.cpp
@@ -0,0 +1,513 @@
+/*************************************************************************/
+/* editor_toaster.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "editor/editor_node.h"
+#include "editor/editor_scale.h"
+#include "scene/gui/label.h"
+#include "scene/gui/panel_container.h"
+
+#include "editor_toaster.h"
+
+EditorToaster *EditorToaster::singleton = nullptr;
+
+void EditorToaster::_notification(int p_what) {
+ switch (p_what) {
+ case NOTIFICATION_INTERNAL_PROCESS: {
+ double delta = get_process_delta_time();
+
+ // Check if one element is hovered, if so, don't elapse time.
+ bool hovered = false;
+ for (const KeyValue<Control *, Toast> &element : toasts) {
+ if (Rect2(Vector2(), element.key->get_size()).has_point(element.key->get_local_mouse_position())) {
+ hovered = true;
+ break;
+ }
+ }
+
+ // Elapses the time and remove toasts if needed.
+ if (!hovered) {
+ for (const KeyValue<Control *, Toast> &element : toasts) {
+ if (!element.value.popped || element.value.duration <= 0) {
+ continue;
+ }
+ toasts[element.key].remaining_time -= delta;
+ if (toasts[element.key].remaining_time < 0) {
+ close(element.key);
+ }
+ element.key->update();
+ }
+ } else {
+ // Reset the timers when hovered.
+ for (const KeyValue<Control *, Toast> &element : toasts) {
+ if (!element.value.popped || element.value.duration <= 0) {
+ continue;
+ }
+ toasts[element.key].remaining_time = element.value.duration;
+ element.key->update();
+ }
+ }
+
+ // Change alpha over time.
+ bool needs_update = false;
+ for (const KeyValue<Control *, Toast> &element : toasts) {
+ Color modulate = element.key->get_modulate();
+
+ // Change alpha over time.
+ if (element.value.popped && modulate.a < 1.0) {
+ modulate.a += delta * 3;
+ element.key->set_modulate(modulate);
+ } else if (!element.value.popped && modulate.a > 0.0) {
+ modulate.a -= delta * 2;
+ element.key->set_modulate(modulate);
+ }
+
+ // Hide element if it is not visible anymore.
+ if (modulate.a <= 0) {
+ if (element.key->is_visible()) {
+ element.key->hide();
+ needs_update = true;
+ }
+ }
+ }
+
+ if (needs_update) {
+ _update_vbox_position();
+ _update_disable_notifications_button();
+ main_button->update();
+ }
+ } break;
+ case NOTIFICATION_ENTER_TREE:
+ case NOTIFICATION_THEME_CHANGED: {
+ if (vbox_container->is_visible()) {
+ main_button->set_icon(get_theme_icon(SNAME("Notification"), SNAME("EditorIcons")));
+ } else {
+ main_button->set_icon(get_theme_icon(SNAME("NotificationDisabled"), SNAME("EditorIcons")));
+ }
+ disable_notifications_button->set_icon(get_theme_icon(SNAME("NotificationDisabled"), SNAME("EditorIcons")));
+
+ // Styleboxes background.
+ info_panel_style_background->set_bg_color(get_theme_color("base_color", "Editor"));
+
+ warning_panel_style_background->set_bg_color(get_theme_color("base_color", "Editor"));
+ warning_panel_style_background->set_border_color(get_theme_color("warning_color", "Editor"));
+
+ error_panel_style_background->set_bg_color(get_theme_color("base_color", "Editor"));
+ error_panel_style_background->set_border_color(get_theme_color("error_color", "Editor"));
+
+ // Styleboxes progress.
+ info_panel_style_progress->set_bg_color(get_theme_color("base_color", "Editor").lightened(0.03));
+
+ warning_panel_style_progress->set_bg_color(get_theme_color("base_color", "Editor").lightened(0.03));
+ warning_panel_style_progress->set_border_color(get_theme_color("warning_color", "Editor"));
+
+ error_panel_style_progress->set_bg_color(get_theme_color("base_color", "Editor").lightened(0.03));
+ error_panel_style_progress->set_border_color(get_theme_color("error_color", "Editor"));
+
+ main_button->update();
+ disable_notifications_button->update();
+ } break;
+ case NOTIFICATION_TRANSFORM_CHANGED: {
+ _update_vbox_position();
+ _update_disable_notifications_button();
+ } break;
+ default:
+ break;
+ }
+}
+
+void EditorToaster::_error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) {
+ if (!EditorToaster::get_singleton() || !EditorToaster::get_singleton()->is_inside_tree()) {
+ return;
+ }
+
+#ifdef DEV_ENABLED
+ bool in_dev = true;
+#else
+ bool in_dev = false;
+#endif
+
+ int show_all_setting = EDITOR_GET("interface/editor/show_internal_errors_in_toast_notifications");
+
+ if (p_editor_notify || (show_all_setting == 0 && in_dev) || show_all_setting == 1) {
+ String err_str;
+ if (p_errorexp && p_errorexp[0]) {
+ err_str = p_errorexp;
+ } else {
+ err_str = String(p_error);
+ }
+ String tooltip_str = String(p_file) + ":" + itos(p_line);
+
+ if (!p_editor_notify) {
+ if (p_type == ERR_HANDLER_WARNING) {
+ err_str = "INTERNAL WARNING: " + err_str;
+ } else {
+ err_str = "INTERNAL ERROR: " + err_str;
+ }
+ }
+
+ if (p_type == ERR_HANDLER_WARNING) {
+ EditorToaster::get_singleton()->popup_str(err_str, SEVERITY_WARNING, tooltip_str);
+ } else {
+ EditorToaster::get_singleton()->popup_str(err_str, SEVERITY_ERROR, tooltip_str);
+ }
+ }
+}
+
+void EditorToaster::_update_vbox_position() {
+ // This is kind of a workaround because it's hard to keep the VBox anchroed to the bottom.
+ vbox_container->set_size(Vector2());
+ vbox_container->set_position(get_global_position() - vbox_container->get_size() + Vector2(get_size().x, -5 * EDSCALE));
+}
+
+void EditorToaster::_update_disable_notifications_button() {
+ bool any_visible = false;
+ for (KeyValue<Control *, Toast> element : toasts) {
+ if (element.key->is_visible()) {
+ any_visible = true;
+ break;
+ }
+ }
+
+ if (!any_visible || !vbox_container->is_visible()) {
+ disable_notifications_panel->hide();
+ } else {
+ disable_notifications_panel->show();
+ disable_notifications_panel->set_position(get_global_position() + Vector2(5 * EDSCALE, -disable_notifications_panel->get_minimum_size().y) + Vector2(get_size().x, -5 * EDSCALE));
+ }
+}
+
+void EditorToaster::_auto_hide_or_free_toasts() {
+ // Hide or free old temporary items.
+ int visible_temporary = 0;
+ int temporary = 0;
+ LocalVector<Control *> to_delete;
+ for (int i = vbox_container->get_child_count() - 1; i >= 0; i--) {
+ Control *control = Object::cast_to<Control>(vbox_container->get_child(i));
+ if (toasts[control].duration <= 0) {
+ continue; // Ignore non-temporary toasts.
+ }
+
+ temporary++;
+ if (control->is_visible()) {
+ visible_temporary++;
+ }
+
+ // Hide
+ if (visible_temporary > max_temporary_count) {
+ close(control);
+ }
+
+ // Free
+ if (temporary > max_temporary_count * 2) {
+ to_delete.push_back(control);
+ }
+ }
+
+ // Delete the control right away (removed as child) as it might cause issues otherwise when iterative over the vbox_container children.
+ for (unsigned int i = 0; i < to_delete.size(); i++) {
+ vbox_container->remove_child(to_delete[i]);
+ to_delete[i]->queue_delete();
+ toasts.erase(to_delete[i]);
+ }
+}
+
+void EditorToaster::_draw_button() {
+ bool has_one = false;
+ Severity highest_severity = SEVERITY_INFO;
+ for (const KeyValue<Control *, Toast> &element : toasts) {
+ if (!element.key->is_visible()) {
+ continue;
+ }
+ has_one = true;
+ if (element.value.severity > highest_severity) {
+ highest_severity = element.value.severity;
+ }
+ }
+
+ if (!has_one) {
+ return;
+ }
+
+ Color color;
+ real_t button_radius = main_button->get_size().x / 8;
+ switch (highest_severity) {
+ case SEVERITY_INFO:
+ color = get_theme_color("accent_color", "Editor");
+ break;
+ case SEVERITY_WARNING:
+ color = get_theme_color("warning_color", "Editor");
+ break;
+ case SEVERITY_ERROR:
+ color = get_theme_color("error_color", "Editor");
+ break;
+ default:
+ break;
+ }
+ main_button->draw_circle(Vector2(button_radius * 2, button_radius * 2), button_radius, color);
+}
+
+void EditorToaster::_draw_progress(Control *panel) {
+ if (toasts.has(panel) && toasts[panel].remaining_time > 0 && toasts[panel].duration > 0) {
+ Size2 size = panel->get_size();
+ size.x *= MIN(1, Math::range_lerp(toasts[panel].remaining_time, 0, toasts[panel].duration, 0, 2));
+
+ Ref<StyleBoxFlat> stylebox;
+ switch (toasts[panel].severity) {
+ case SEVERITY_INFO:
+ stylebox = info_panel_style_progress;
+ break;
+ case SEVERITY_WARNING:
+ stylebox = warning_panel_style_progress;
+ break;
+ case SEVERITY_ERROR:
+ stylebox = error_panel_style_progress;
+ break;
+ default:
+ break;
+ }
+ panel->draw_style_box(stylebox, Rect2(Vector2(), size));
+ }
+}
+
+void EditorToaster::_set_notifications_enabled(bool p_enabled) {
+ vbox_container->set_visible(p_enabled);
+ if (p_enabled) {
+ main_button->set_icon(get_theme_icon(SNAME("Notification"), SNAME("EditorIcons")));
+ } else {
+ main_button->set_icon(get_theme_icon(SNAME("NotificationDisabled"), SNAME("EditorIcons")));
+ }
+ _update_disable_notifications_button();
+}
+
+void EditorToaster::_repop_old() {
+ // Repop olds, up to max_temporary_count
+ bool needs_update = false;
+ int visible = 0;
+ for (int i = vbox_container->get_child_count() - 1; i >= 0; i--) {
+ Control *control = Object::cast_to<Control>(vbox_container->get_child(i));
+ if (!control->is_visible()) {
+ control->show();
+ toasts[control].remaining_time = toasts[control].duration;
+ toasts[control].popped = true;
+ needs_update = true;
+ }
+ visible++;
+ if (visible >= max_temporary_count) {
+ break;
+ }
+ }
+ if (needs_update) {
+ _update_vbox_position();
+ _update_disable_notifications_button();
+ main_button->update();
+ }
+}
+
+Control *EditorToaster::popup(Control *p_control, Severity p_severity, double p_time, String p_tooltip) {
+ // Create the panel according to the severity.
+ PanelContainer *panel = memnew(PanelContainer);
+ panel->set_tooltip(p_tooltip);
+ switch (p_severity) {
+ case SEVERITY_INFO:
+ panel->add_theme_style_override("panel", info_panel_style_background);
+ break;
+ case SEVERITY_WARNING:
+ panel->add_theme_style_override("panel", warning_panel_style_background);
+ break;
+ case SEVERITY_ERROR:
+ panel->add_theme_style_override("panel", error_panel_style_background);
+ break;
+ default:
+ break;
+ }
+ panel->set_modulate(Color(1, 1, 1, 0));
+ panel->connect("draw", callable_bind(callable_mp(this, &EditorToaster::_draw_progress), panel));
+
+ // Horizontal container.
+ HBoxContainer *hbox_container = memnew(HBoxContainer);
+ hbox_container->set_h_size_flags(SIZE_EXPAND_FILL);
+ panel->add_child(hbox_container);
+
+ // Content control.
+ p_control->set_h_size_flags(SIZE_EXPAND_FILL);
+ hbox_container->add_child(p_control);
+
+ // Close button.
+ if (p_time > 0.0) {
+ Button *close_button = memnew(Button);
+ close_button->set_flat(true);
+ close_button->set_icon(get_theme_icon("Close", "EditorIcons"));
+ close_button->connect("pressed", callable_bind(callable_mp(this, &EditorToaster::close), panel));
+ hbox_container->add_child(close_button);
+ }
+
+ toasts[panel].severity = p_severity;
+ if (p_time > 0.0) {
+ toasts[panel].duration = p_time;
+ toasts[panel].remaining_time = p_time;
+ } else {
+ toasts[panel].duration = -1.0;
+ }
+ toasts[panel].popped = true;
+ vbox_container->add_child(panel);
+ _auto_hide_or_free_toasts();
+ _update_vbox_position();
+ _update_disable_notifications_button();
+ main_button->update();
+
+ return panel;
+}
+
+void EditorToaster::popup_str(String p_message, Severity p_severity, String p_tooltip) {
+ // Check if we already have a popup with the given message.
+ Control *control = nullptr;
+ for (KeyValue<Control *, Toast> element : toasts) {
+ if (element.value.message == p_message && element.value.severity == p_severity && element.value.tooltip == p_tooltip) {
+ control = element.key;
+ break;
+ }
+ }
+
+ // Create a new message if needed.
+ if (control == nullptr) {
+ Label *label = memnew(Label);
+
+ control = popup(label, p_severity, default_message_duration, p_tooltip);
+ toasts[control].message = p_message;
+ toasts[control].tooltip = p_tooltip;
+ toasts[control].count = 1;
+ } else {
+ if (toasts[control].popped) {
+ toasts[control].count += 1;
+ } else {
+ toasts[control].count = 1;
+ }
+ toasts[control].remaining_time = toasts[control].duration;
+ toasts[control].popped = true;
+ control->show();
+ vbox_container->move_child(control, vbox_container->get_child_count());
+ _auto_hide_or_free_toasts();
+ _update_vbox_position();
+ _update_disable_notifications_button();
+ main_button->update();
+ }
+
+ // Retrieve the label back then update the text.
+ Label *label = Object::cast_to<Label>(control->get_child(0)->get_child(0));
+ ERR_FAIL_COND(!label);
+ if (toasts[control].count == 1) {
+ label->set_text(p_message);
+ } else {
+ label->set_text(vformat("%s (%d)", p_message, toasts[control].count));
+ }
+}
+
+void EditorToaster::close(Control *p_control) {
+ ERR_FAIL_COND(!toasts.has(p_control));
+ toasts[p_control].remaining_time = -1.0;
+ toasts[p_control].popped = false;
+}
+
+EditorToaster *EditorToaster::get_singleton() {
+ return singleton;
+}
+
+EditorToaster::EditorToaster() {
+ set_notify_transform(true);
+ set_process_internal(true);
+
+ // VBox.
+ vbox_container = memnew(VBoxContainer);
+ vbox_container->set_as_top_level(true);
+ vbox_container->connect("resized", callable_mp(this, &EditorToaster::_update_vbox_position));
+ add_child(vbox_container);
+
+ // Theming (background).
+ info_panel_style_background.instantiate();
+ info_panel_style_background->set_corner_radius_all(stylebox_radius * EDSCALE);
+
+ warning_panel_style_background.instantiate();
+ warning_panel_style_background->set_border_width(SIDE_LEFT, stylebox_radius * EDSCALE);
+ warning_panel_style_background->set_corner_radius_all(stylebox_radius * EDSCALE);
+
+ error_panel_style_background.instantiate();
+ error_panel_style_background->set_border_width(SIDE_LEFT, stylebox_radius * EDSCALE);
+ error_panel_style_background->set_corner_radius_all(stylebox_radius * EDSCALE);
+
+ Ref<StyleBoxFlat> boxes[] = { info_panel_style_background, warning_panel_style_background, error_panel_style_background };
+ for (int i = 0; i < 3; i++) {
+ boxes[i]->set_default_margin(SIDE_LEFT, int(stylebox_radius * 2.5));
+ boxes[i]->set_default_margin(SIDE_RIGHT, int(stylebox_radius * 2.5));
+ boxes[i]->set_default_margin(SIDE_TOP, 3);
+ boxes[i]->set_default_margin(SIDE_BOTTOM, 3);
+ }
+
+ // Theming (progress).
+ info_panel_style_progress.instantiate();
+ info_panel_style_progress->set_corner_radius_all(stylebox_radius * EDSCALE);
+
+ warning_panel_style_progress.instantiate();
+ warning_panel_style_progress->set_border_width(SIDE_LEFT, stylebox_radius * EDSCALE);
+ warning_panel_style_progress->set_corner_radius_all(stylebox_radius * EDSCALE);
+
+ error_panel_style_progress.instantiate();
+ error_panel_style_progress->set_border_width(SIDE_LEFT, stylebox_radius * EDSCALE);
+ error_panel_style_progress->set_corner_radius_all(stylebox_radius * EDSCALE);
+
+ // Main button.
+ main_button = memnew(Button);
+ 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));
+ main_button->connect("draw", callable_mp(this, &EditorToaster::_draw_button));
+ add_child(main_button);
+
+ // Disable notification button.
+ disable_notifications_panel = memnew(PanelContainer);
+ disable_notifications_panel->set_as_top_level(true);
+ disable_notifications_panel->add_theme_style_override("panel", info_panel_style_background);
+ add_child(disable_notifications_panel);
+
+ disable_notifications_button = memnew(Button);
+ 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);
+
+ // Other
+ singleton = this;
+
+ eh.errfunc = _error_handler;
+ add_error_handler(&eh);
+};
+
+EditorToaster::~EditorToaster() {
+ singleton = nullptr;
+ remove_error_handler(&eh);
+}
diff --git a/editor/editor_toaster.h b/editor/editor_toaster.h
new file mode 100644
index 0000000000..aac80d8fb1
--- /dev/null
+++ b/editor/editor_toaster.h
@@ -0,0 +1,116 @@
+/*************************************************************************/
+/* editor_toaster.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef EDITOR_TOASTER_H
+#define EDITOR_TOASTER_H
+
+#include "scene/gui/box_container.h"
+#include "scene/gui/button.h"
+#include "scene/gui/popup.h"
+
+#include "core/string/ustring.h"
+#include "core/templates/local_vector.h"
+
+class EditorToaster : public HBoxContainer {
+ GDCLASS(EditorToaster, HBoxContainer);
+
+public:
+ enum Severity {
+ SEVERITY_INFO = 0,
+ SEVERITY_WARNING,
+ SEVERITY_ERROR,
+ };
+
+private:
+ ErrorHandlerList eh;
+
+ const int stylebox_radius = 3;
+
+ Ref<StyleBoxFlat> info_panel_style_background;
+ Ref<StyleBoxFlat> warning_panel_style_background;
+ Ref<StyleBoxFlat> error_panel_style_background;
+
+ Ref<StyleBoxFlat> info_panel_style_progress;
+ Ref<StyleBoxFlat> warning_panel_style_progress;
+ Ref<StyleBoxFlat> error_panel_style_progress;
+
+ Button *main_button;
+ PanelContainer *disable_notifications_panel;
+ Button *disable_notifications_button;
+
+ VBoxContainer *vbox_container;
+ const int max_temporary_count = 5;
+ struct Toast {
+ Severity severity = SEVERITY_INFO;
+
+ // Timing.
+ real_t duration = -1.0;
+ real_t remaining_time = 0.0;
+ bool popped = false;
+
+ // Messages
+ String message;
+ String tooltip;
+ int count = 0;
+ };
+ Map<Control *, Toast> toasts;
+
+ const double default_message_duration = 5.0;
+
+ static void _error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, bool p_editor_notify, ErrorHandlerType p_type);
+ void _update_vbox_position();
+ void _update_disable_notifications_button();
+ void _auto_hide_or_free_toasts();
+
+ void _draw_button();
+ void _draw_progress(Control *panel);
+
+ void _set_notifications_enabled(bool p_enabled);
+ void _repop_old();
+
+protected:
+ static EditorToaster *singleton;
+
+ void _notification(int p_what);
+
+public:
+ static EditorToaster *get_singleton();
+
+ Control *popup(Control *p_control, Severity p_severity = SEVERITY_INFO, double p_time = 0.0, String p_tooltip = String());
+ void popup_str(String p_message, Severity p_severity = SEVERITY_INFO, String p_tooltip = String());
+ void close(Control *p_control);
+
+ EditorToaster();
+ ~EditorToaster();
+};
+
+VARIANT_ENUM_CAST(EditorToaster::Severity);
+
+#endif // EDITOR_TOASTER_H
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index 1d1976d7e5..cdf0f6e391 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -688,9 +688,11 @@ void FileSystemDock::_sort_file_info_list(List<FileSystemDock::FileInfo> &r_file
r_file_list.reverse();
break;
case FILE_SORT_NAME_REVERSE:
+ r_file_list.sort();
r_file_list.reverse();
break;
default: // FILE_SORT_NAME
+ r_file_list.sort();
break;
}
}
diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h
index 73bdd685b7..7c3851b94f 100644
--- a/editor/filesystem_dock.h
+++ b/editor/filesystem_dock.h
@@ -205,8 +205,6 @@ private:
void _set_file_display(bool p_active);
void _fs_changed();
- void _tree_toggle_collapsed();
-
void _select_file(const String &p_path, bool p_select_in_favorites = false);
void _tree_activate_file();
void _file_list_activate_file(int p_idx);
@@ -228,8 +226,6 @@ private:
void _file_removed(String p_file);
void _folder_removed(String p_folder);
- void _files_moved(String p_old_file, String p_new_file);
- void _folder_moved(String p_old_folder, String p_new_folder);
void _resource_created();
void _make_dir_confirm();
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp
index b61f6e12eb..283496c0f1 100644
--- a/editor/find_in_files.cpp
+++ b/editor/find_in_files.cpp
@@ -235,7 +235,7 @@ void FindInFiles::_scan_dir(String path, PackedStringArray &out_folders) {
// Ignore special dirs (such as .git and project data directory)
String project_data_dir_name = ProjectSettings::get_singleton()->get_project_data_dir_name();
- if (file.begins_with(".") || file.begins_with(project_data_dir_name)) {
+ if (file.begins_with(".") || file == project_data_dir_name) {
continue;
}
if (dir->current_is_hidden()) {
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index 113306fc8a..f01c7f50f7 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -204,7 +204,8 @@ void GroupDialog::_add_group(String p_name) {
TreeItem *new_group = groups->create_item(groups_root);
new_group->set_text(0, name);
- new_group->add_button(0, groups->get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), 0);
+ new_group->add_button(0, groups->get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), DELETE_GROUP);
+ new_group->add_button(0, groups->get_theme_icon(SNAME("ActionCopy"), SNAME("EditorIcons")), COPY_GROUP);
new_group->set_editable(0, true);
new_group->select(0);
groups->ensure_cursor_is_visible();
@@ -297,43 +298,50 @@ void GroupDialog::_load_groups(Node *p_current) {
}
}
-void GroupDialog::_delete_group_pressed(Object *p_item, int p_column, int p_id) {
+void GroupDialog::_modify_group_pressed(Object *p_item, int p_column, int p_id) {
TreeItem *ti = Object::cast_to<TreeItem>(p_item);
if (!ti) {
return;
}
- String name = ti->get_text(0);
+ switch (p_id) {
+ case DELETE_GROUP: {
+ String name = ti->get_text(0);
- undo_redo->create_action(TTR("Delete Group"));
+ undo_redo->create_action(TTR("Delete Group"));
- List<Node *> nodes;
- scene_tree->get_nodes_in_group(name, &nodes);
- bool removed_all = true;
- for (Node *E : nodes) {
- if (_can_edit(E, name)) {
- undo_redo->add_do_method(E, "remove_from_group", name);
- undo_redo->add_undo_method(E, "add_to_group", name, true);
- } else {
- removed_all = false;
- }
- }
+ List<Node *> nodes;
+ scene_tree->get_nodes_in_group(name, &nodes);
+ bool removed_all = true;
+ for (Node *E : nodes) {
+ if (_can_edit(E, name)) {
+ undo_redo->add_do_method(E, "remove_from_group", name);
+ undo_redo->add_undo_method(E, "add_to_group", name, true);
+ } else {
+ removed_all = false;
+ }
+ }
- if (removed_all) {
- undo_redo->add_do_method(this, "_delete_group_item", name);
- undo_redo->add_undo_method(this, "_add_group", name);
- }
+ if (removed_all) {
+ undo_redo->add_do_method(this, "_delete_group_item", name);
+ undo_redo->add_undo_method(this, "_add_group", name);
+ }
- undo_redo->add_do_method(this, "_group_selected");
- undo_redo->add_undo_method(this, "_group_selected");
- undo_redo->add_do_method(this, "emit_signal", "group_edited");
- undo_redo->add_undo_method(this, "emit_signal", "group_edited");
+ undo_redo->add_do_method(this, "_group_selected");
+ undo_redo->add_undo_method(this, "_group_selected");
+ undo_redo->add_do_method(this, "emit_signal", "group_edited");
+ undo_redo->add_undo_method(this, "emit_signal", "group_edited");
- // To force redraw of scene tree.
- undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
- undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
+ // To force redraw of scene tree.
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
- undo_redo->commit_action();
+ undo_redo->commit_action();
+ } break;
+ case COPY_GROUP: {
+ DisplayServer::get_singleton()->clipboard_set(ti->get_text(p_column));
+ } break;
+ }
}
void GroupDialog::_delete_group_item(const String &p_name) {
@@ -437,7 +445,7 @@ GroupDialog::GroupDialog() {
groups->set_v_size_flags(Control::SIZE_EXPAND_FILL);
groups->add_theme_constant_override("draw_guides", 1);
groups->connect("item_selected", callable_mp(this, &GroupDialog::_group_selected));
- groups->connect("button_pressed", callable_mp(this, &GroupDialog::_delete_group_pressed));
+ groups->connect("button_pressed", callable_mp(this, &GroupDialog::_modify_group_pressed));
groups->connect("item_edited", callable_mp(this, &GroupDialog::_group_renamed));
HBoxContainer *chbc = memnew(HBoxContainer);
@@ -582,7 +590,7 @@ void GroupsEditor::_add_group(const String &p_group) {
group_name->clear();
}
-void GroupsEditor::_remove_group(Object *p_item, int p_column, int p_id) {
+void GroupsEditor::_modify_group(Object *p_item, int p_column, int p_id) {
if (!node) {
return;
}
@@ -591,21 +599,26 @@ void GroupsEditor::_remove_group(Object *p_item, int p_column, int p_id) {
if (!ti) {
return;
}
+ switch (p_id) {
+ case DELETE_GROUP: {
+ String name = ti->get_text(0);
+ undo_redo->create_action(TTR("Remove from Group"));
- String name = ti->get_text(0);
-
- undo_redo->create_action(TTR("Remove from Group"));
-
- undo_redo->add_do_method(node, "remove_from_group", name);
- undo_redo->add_undo_method(node, "add_to_group", name, true);
- undo_redo->add_do_method(this, "update_tree");
- undo_redo->add_undo_method(this, "update_tree");
+ undo_redo->add_do_method(node, "remove_from_group", name);
+ undo_redo->add_undo_method(node, "add_to_group", name, true);
+ undo_redo->add_do_method(this, "update_tree");
+ undo_redo->add_undo_method(this, "update_tree");
- // To force redraw of scene tree.
- undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
- undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
+ // To force redraw of scene tree.
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
- undo_redo->commit_action();
+ undo_redo->commit_action();
+ } break;
+ case COPY_GROUP: {
+ DisplayServer::get_singleton()->clipboard_set(ti->get_text(p_column));
+ } break;
+ }
}
struct _GroupInfoComparator {
@@ -653,7 +666,8 @@ void GroupsEditor::update_tree() {
TreeItem *item = tree->create_item(root);
item->set_text(0, gi.name);
if (can_be_deleted) {
- item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), 0);
+ item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), DELETE_GROUP);
+ item->add_button(0, get_theme_icon(SNAME("ActionCopy"), SNAME("EditorIcons")), COPY_GROUP);
} else {
item->set_selectable(0, false);
}
@@ -706,7 +720,7 @@ GroupsEditor::GroupsEditor() {
tree->set_hide_root(true);
tree->set_v_size_flags(Control::SIZE_EXPAND_FILL);
vbc->add_child(tree);
- tree->connect("button_pressed", callable_mp(this, &GroupsEditor::_remove_group));
+ tree->connect("button_pressed", callable_mp(this, &GroupsEditor::_modify_group));
tree->add_theme_constant_override("draw_guides", 1);
add_theme_constant_override("separation", 3 * EDSCALE);
}
diff --git a/editor/groups_editor.h b/editor/groups_editor.h
index 69f746801f..f0a5b4a794 100644
--- a/editor/groups_editor.h
+++ b/editor/groups_editor.h
@@ -82,7 +82,7 @@ class GroupDialog : public AcceptDialog {
void _rename_group_item(const String &p_old_name, const String &p_new_name);
void _add_group(String p_name);
- void _delete_group_pressed(Object *p_item, int p_column, int p_id);
+ void _modify_group_pressed(Object *p_item, int p_column, int p_id);
void _delete_group_item(const String &p_name);
bool _can_edit(Node *p_node, String p_group);
@@ -95,6 +95,11 @@ protected:
static void _bind_methods();
public:
+ enum ModifyButton {
+ DELETE_GROUP,
+ COPY_GROUP,
+ };
+
void edit();
void set_undo_redo(UndoRedo *p_undoredo) { undo_redo = p_undoredo; }
@@ -116,8 +121,7 @@ class GroupsEditor : public VBoxContainer {
void update_tree();
void _add_group(const String &p_group = "");
- void _remove_group(Object *p_item, int p_column, int p_id);
- void _close();
+ void _modify_group(Object *p_item, int p_column, int p_id);
void _show_group_dialog();
@@ -125,6 +129,11 @@ protected:
static void _bind_methods();
public:
+ enum ModifyButton {
+ DELETE_GROUP,
+ COPY_GROUP,
+ };
+
void set_undo_redo(UndoRedo *p_undoredo) { undo_redo = p_undoredo; }
void set_current(Node *p_node);
diff --git a/editor/icons/KeyBlendShape.svg b/editor/icons/KeyBlendShape.svg
new file mode 100644
index 0000000000..42f7341942
--- /dev/null
+++ b/editor/icons/KeyBlendShape.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="10"
+ viewBox="0 0 10 10"
+ width="10"
+ version="1.1"
+ id="svg80"
+ sodipodi:docname="KeyBlendShape.svg"
+ inkscape:version="1.1 (1:1.1+202106031931+af4d65493e)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs84" />
+ <sodipodi:namedview
+ id="namedview82"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="84.4"
+ inkscape:cx="2.6599526"
+ inkscape:cy="5.0059242"
+ inkscape:window-width="1848"
+ inkscape:window-height="1016"
+ inkscape:window-x="72"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg80" />
+ <rect
+ fill="#3cf34e"
+ height="6.1027"
+ ry=".76286"
+ transform="matrix(.70710678 -.70710678 .70710678 .70710678 0 -1042.4)"
+ width="6.1027"
+ x="-740.13947"
+ y="741.10779"
+ id="rect78"
+ style="fill:#5ad5c4;fill-opacity:1" />
+</svg>
diff --git a/editor/icons/KeyTrackBlendShape.svg b/editor/icons/KeyTrackBlendShape.svg
new file mode 100644
index 0000000000..e82f0d6a6f
--- /dev/null
+++ b/editor/icons/KeyTrackBlendShape.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="10"
+ viewBox="0 0 10 10"
+ width="10"
+ version="1.1"
+ id="svg12"
+ sodipodi:docname="KeyTrackBlendShape.svg"
+ inkscape:version="1.1 (1:1.1+202106031931+af4d65493e)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs16" />
+ <sodipodi:namedview
+ id="namedview14"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="29.839906"
+ inkscape:cx="-3.5690461"
+ inkscape:cy="9.0985541"
+ inkscape:window-width="1848"
+ inkscape:window-height="1016"
+ inkscape:window-x="72"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg12" />
+ <ellipse
+ style="fill:none;fill-opacity:0.401212;stroke:none;stroke-width:4.7811;stroke-linejoin:round"
+ id="path921"
+ cx="-0.88986981"
+ cy="6.0959954"
+ rx="1.2495773"
+ ry="1.0867468" />
+ <path
+ id="path1910"
+ style="color:#000000;fill:#5ad5c4;stroke-linejoin:round;-inkscape-stroke:none"
+ d="m 4.5230825,1.1341567 c -2.1310744,0.017055 -3.86718737,1.7635044 -3.86718737,3.8984375 0,1.8778511 1.34348597,3.4523891 3.11718737,3.8164061 L 3.95277,7.5794693 C 2.7929991,7.3095662 1.9351921,6.2780435 1.9351921,5.0325942 c 0,-1.4262775 1.123493,-2.5732858 2.5390622,-2.6152344 v 0.017578 h 0.2011719 l 0.1796875,-1.28125 H 4.5230825 v -0.011719 c 0,-0.00263 -2.64e-5,-0.00518 0,-0.00781 z m 1.6816406,0.019531 -0.1796875,1.28125 h 1.3085937 c 0.078866,0 0.1230469,0.044181 0.1230469,0.1230469 v 4.9882815 c 0,0.07887 -0.044181,0.121093 -0.1230469,0.121094 H 5.2887075 L 5.10902,8.9486103 h 2.2246093 c 0.7663818,0 1.4042969,-0.635962 1.4042969,-1.402344 V 2.5579848 c 0,-0.7663818 -0.637915,-1.4042969 -1.4042969,-1.4042969 z" />
+</svg>
diff --git a/editor/icons/KeyTrackPosition.svg b/editor/icons/KeyTrackPosition.svg
new file mode 100644
index 0000000000..05c6e88841
--- /dev/null
+++ b/editor/icons/KeyTrackPosition.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="10"
+ viewBox="0 0 10 10"
+ width="10"
+ version="1.1"
+ id="svg12"
+ sodipodi:docname="KeyTrackPosition.svg"
+ inkscape:version="1.1 (1:1.1+202106031931+af4d65493e)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs16" />
+ <sodipodi:namedview
+ id="namedview14"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="42.2"
+ inkscape:cx="12.78436"
+ inkscape:cy="6.1729858"
+ inkscape:window-width="1848"
+ inkscape:window-height="1016"
+ inkscape:window-x="72"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg12" />
+ <ellipse
+ style="fill:none;fill-opacity:0.401212;stroke:none;stroke-width:4.7811;stroke-linejoin:round"
+ id="path921"
+ cx="-0.88986981"
+ cy="6.0959954"
+ rx="1.2495773"
+ ry="1.0867468" />
+ <path
+ d="M 4.949661,0.60426977 A 0.6444116,0.6444116 0 0 0 4.504153,0.79178767 L 3.215459,2.0804819 4.12663,2.9916532 4.95977,2.1585124 5.792911,2.9916532 6.704083,2.0804819 5.415388,0.79178767 A 0.6444116,0.6444116 0 0 0 4.949744,0.60426977 Z M 1.926771,3.3691634 0.638077,4.6578577 a 0.6444116,0.6444116 0 0 0 0,0.9111713 L 1.926771,6.8577233 2.837942,5.946552 2.004801,5.1134111 2.837942,4.2802702 1.926771,3.3690989 Z m 6.065948,0 -0.911171,0.9111713 0.83314,0.8331409 -0.83314,0.8331408 0.911171,0.9111714 1.288694,-1.2886944 a 0.6444116,0.6444116 0 0 0 0,-0.9111713 L 7.992719,3.3692278 Z M 4.959777,3.8247361 A 1.2886943,1.2886943 0 0 0 3.671083,5.1134305 1.2886943,1.2886943 0 0 0 4.959777,6.4021248 1.2886943,1.2886943 0 0 0 6.248471,5.1134305 1.2886943,1.2886943 0 0 0 4.959777,3.8247361 Z m -0.83314,3.4105296 -0.911172,0.9111715 1.288694,1.288694 a 0.6444116,0.6444116 0 0 0 0.911171,0 L 6.704025,8.1464372 5.792853,7.2352657 4.959712,8.0684062 4.126572,7.2352657 Z"
+ fill="#e0e0e0"
+ fill-opacity="0.99608"
+ id="path1400"
+ style="fill:#ea7940;fill-opacity:1;stroke-width:0.644347" />
+</svg>
diff --git a/editor/icons/KeyTrackRotation.svg b/editor/icons/KeyTrackRotation.svg
new file mode 100644
index 0000000000..d05e381eb2
--- /dev/null
+++ b/editor/icons/KeyTrackRotation.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="10"
+ viewBox="0 0 10 10"
+ width="10"
+ version="1.1"
+ id="svg12"
+ sodipodi:docname="KeyTrackRotation.svg"
+ inkscape:version="1.1 (1:1.1+202106031931+af4d65493e)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs16" />
+ <sodipodi:namedview
+ id="namedview14"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="42.2"
+ inkscape:cx="1.9075829"
+ inkscape:cy="5.8175355"
+ inkscape:window-width="1848"
+ inkscape:window-height="1016"
+ inkscape:window-x="72"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg12" />
+ <ellipse
+ style="fill:none;fill-opacity:0.401212;stroke:none;stroke-width:4.7811;stroke-linejoin:round"
+ id="path921"
+ cx="-0.88986981"
+ cy="6.0959954"
+ rx="1.2495773"
+ ry="1.0867468" />
+ <path
+ d="m 5.0711986,0.88214062 a 4.1086779,4.1086779 0 0 0 -0.178839,0.00115 4.1086779,4.1086779 0 0 0 -0.409265,0.033245 A 4.1086779,4.1086779 0 0 0 0.99001362,4.1883346 4.1086779,4.1086779 0 0 0 2.1467236,7.9244144 h -0.648877 v 1.1739077 h 2.347816 a 0.58701268,0.58701268 0 0 0 0.569756,-0.729119 l -0.586953,-2.3478164 -1.139514,0.2854534 0.165082,0.6580347 a 2.9347699,2.9347699 0 0 1 -0.769204,-1.9752178 2.9347699,2.9347699 0 0 1 2.93477,-2.93477 2.9347699,2.9347699 0 0 1 2.93477,2.93477 2.9347699,2.9347699 0 0 1 -0.860944,2.0738257 l 0.831127,0.8311266 A 4.1086779,4.1086779 0 0 0 8.7040866,3.1726236 4.1086779,4.1086779 0 0 0 5.0711336,0.88215292 Z m -0.05159,2.93359608 a 1.173908,1.173908 0 0 0 -1.173907,1.173908 1.173908,1.173908 0 0 0 1.173907,1.173908 1.173908,1.173908 0 0 0 1.173909,-1.173908 1.173908,1.173908 0 0 0 -1.173909,-1.173908 z"
+ fill="#e0e0e0"
+ fill-opacity="0.99608"
+ id="path1165"
+ style="fill:#ff2b88;fill-opacity:1;stroke-width:0.586954" />
+</svg>
diff --git a/editor/icons/KeyTrackScale.svg b/editor/icons/KeyTrackScale.svg
new file mode 100644
index 0000000000..9269ccbca2
--- /dev/null
+++ b/editor/icons/KeyTrackScale.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="10"
+ viewBox="0 0 10 10"
+ width="10"
+ version="1.1"
+ id="svg12"
+ sodipodi:docname="KeyTrackScale.svg"
+ inkscape:version="1.1 (1:1.1+202106031931+af4d65493e)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs16" />
+ <sodipodi:namedview
+ id="namedview14"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="42.2"
+ inkscape:cx="1.9075829"
+ inkscape:cy="5.8175355"
+ inkscape:window-width="1848"
+ inkscape:window-height="1016"
+ inkscape:window-x="72"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg12" />
+ <ellipse
+ style="fill:none;fill-opacity:0.401212;stroke:none;stroke-width:4.7811;stroke-linejoin:round"
+ id="path921"
+ cx="-0.88986981"
+ cy="6.0959954"
+ rx="1.2495773"
+ ry="1.0867468" />
+ <path
+ d="M 5.5742494,0.94786723 A 0.58774585,0.58774585 0 0 0 4.9865036,1.535613 0.58774585,0.58774585 0 0 0 5.5742494,2.1233589 h 1.519852 L 6.334146,2.8833142 7.1652774,3.7144456 7.9252328,2.9544903 V 4.4743422 A 0.58774585,0.58774585 0 0 0 8.5129787,5.0620881 0.58774585,0.58774585 0 0 0 9.1007245,4.4743422 V 1.535613 A 0.58780462,0.58780462 0 0 0 8.5129787,0.94786723 Z M 4.9865036,3.8865964 A 1.1754917,1.1754917 0 0 0 3.8110119,5.0620881 1.1754917,1.1754917 0 0 0 4.9865036,6.2375798 1.1754917,1.1754917 0 0 0 6.1619953,5.0620881 1.1754917,1.1754917 0 0 0 4.9865036,3.8865964 Z M 1.4600285,5.0620881 A 0.58774585,0.58774585 0 0 0 0.8722826,5.6498339 V 8.5885638 A 0.58780462,0.58780462 0 0 0 1.4600285,9.1763092 H 4.3987577 A 0.58774585,0.58774585 0 0 0 4.9865036,8.5885638 0.58774585,0.58774585 0 0 0 4.3987577,8.0008173 H 2.8789057 L 3.6388611,7.2408619 2.8077297,6.4097305 2.0477743,7.1696859 V 5.6498339 A 0.58774585,0.58774585 0 0 0 1.4600285,5.0620881 Z"
+ fill="#e0e0e0"
+ fill-opacity="0.99608"
+ id="path7"
+ style="fill:#eac840;fill-opacity:1;stroke-width:0.587745" />
+</svg>
diff --git a/editor/icons/KeyXPosition.svg b/editor/icons/KeyXPosition.svg
new file mode 100644
index 0000000000..5816a241c9
--- /dev/null
+++ b/editor/icons/KeyXPosition.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="10"
+ viewBox="0 0 10 10"
+ width="10"
+ version="1.1"
+ id="svg1678"
+ sodipodi:docname="KeyXPosition.svg"
+ inkscape:version="1.1 (1:1.1+202106031931+af4d65493e)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs1682" />
+ <sodipodi:namedview
+ id="namedview1680"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="84.4"
+ inkscape:cx="4.9940758"
+ inkscape:cy="5.0059242"
+ inkscape:window-width="1848"
+ inkscape:window-height="1016"
+ inkscape:window-x="72"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg1678" />
+ <rect
+ fill="#ea7940"
+ height="6.1027"
+ ry=".76286"
+ transform="matrix(.70710678 -.70710678 .70710678 .70710678 0 -1042.4)"
+ width="6.1027"
+ x="-740.13947"
+ y="741.10779"
+ id="rect1676" />
+</svg>
diff --git a/editor/icons/KeyXRotation.svg b/editor/icons/KeyXRotation.svg
new file mode 100644
index 0000000000..6cd5a67ac0
--- /dev/null
+++ b/editor/icons/KeyXRotation.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="10"
+ viewBox="0 0 10 10"
+ width="10"
+ version="1.1"
+ id="svg1678"
+ sodipodi:docname="KeyXRotation.svg"
+ inkscape:version="1.1 (1:1.1+202106031931+af4d65493e)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs1682" />
+ <sodipodi:namedview
+ id="namedview1680"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="84.4"
+ inkscape:cx="0.32582938"
+ inkscape:cy="5.0059242"
+ inkscape:window-width="1848"
+ inkscape:window-height="1016"
+ inkscape:window-x="72"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg1678" />
+ <rect
+ fill="#ea7940"
+ height="6.1027002"
+ ry="0.76286"
+ transform="rotate(-45,-1258.2881,-521.2)"
+ width="6.1030002"
+ x="-740.13947"
+ y="741.10779"
+ id="rect1676"
+ style="fill:#ee3c94;fill-opacity:1" />
+</svg>
diff --git a/editor/icons/KeyXScale.svg b/editor/icons/KeyXScale.svg
new file mode 100644
index 0000000000..588fa5d2f3
--- /dev/null
+++ b/editor/icons/KeyXScale.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="10"
+ viewBox="0 0 10 10"
+ width="10"
+ version="1.1"
+ id="svg1678"
+ sodipodi:docname="KeyXScale.svg"
+ inkscape:version="1.1 (1:1.1+202106031931+af4d65493e)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs1682" />
+ <sodipodi:namedview
+ id="namedview1680"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="84.4"
+ inkscape:cx="2.6658768"
+ inkscape:cy="5.0059242"
+ inkscape:window-width="1473"
+ inkscape:window-height="752"
+ inkscape:window-x="122"
+ inkscape:window-y="114"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1678" />
+ <rect
+ fill="#ea7940"
+ height="6.1027002"
+ ry="0.76286"
+ transform="rotate(-45,-1258.2881,-521.2)"
+ width="6.1030002"
+ x="-740.13947"
+ y="741.10779"
+ id="rect1676"
+ style="fill:#dbbf4f;fill-opacity:1" />
+</svg>
diff --git a/editor/icons/NewKey.svg b/editor/icons/NewKey.svg
new file mode 100644
index 0000000000..fc8507e6c4
--- /dev/null
+++ b/editor/icons/NewKey.svg
@@ -0,0 +1 @@
+<svg enable-background="new 0 0 16 16" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="#e0e0e0" fill-opacity=".9961"><path d="m13 9h-2v2h-2v2h2v2h2v-2h2v-2h-2z"/><path d="m10 9.723c-.596-.347-1-.985-1-1.723 0-1.104.896-2 2-2s2 .896 2 2h1v2h.445c.344-.591.555-1.268.555-2 0-2.209-1.791-4-4-4-1.822.002-3.414 1.235-3.869 3h-6.131v2h1v2h3v-2h2.133c.16.62.466 1.169.867 1.627v-.627h2z"/></g></svg>
diff --git a/editor/icons/Notification.svg b/editor/icons/Notification.svg
new file mode 100644
index 0000000000..1f1f9c3e15
--- /dev/null
+++ b/editor/icons/Notification.svg
@@ -0,0 +1 @@
+<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m12.089506 1.2353795c-.498141-.2384823-1.095292-.027987-1.333775.4701537-.01372.028981-.02341.059557-.03428.089693-.01467.023016-.02777.046925-.04071.071459-.04899-.00527-.09728-.00862-.146087-.011473-1.4730257-.6255101-3.1777024.0153376-3.8738627 1.4563251l-1.7272425 3.6078572s-.3364181.7034345-.8079671 1.1268133c-.00105.0009371-.00239.00174-.00344.00268-.2721193.1337295-.5707545.185826-.8605632.0470816-.4981411-.2384824-1.0952924-.0279876-1.3337749.4701537-.01605.033526-.029907.066894-.041944.1011828-.018769.030371-.036749.06319-.052515.096122-.2384825.4981412-.027988 1.0952923.4701537 1.3337751l9.0196437 4.318106c.498141.238482 1.095292.02799 1.333775-.470154.01577-.03293.0301-.0675.04191-.1012.0192-.03086.0365-.06257.05255-.0961.238483-.498141.02799-1.095292-.470153-1.333775-.901965-.43181-.03834-2.235739-.03834-2.235739l1.727237-3.6078618c.715447-1.4944233.08396-3.2858776-1.410461-4.0013247.238482-.4981411.02799-1.0952926-.470154-1.333775zm-5.5145786 11.3714015c-.322341.673306-.037829 1.480435.6354753 1.802775.6733031.32234 1.4804334.03783 1.8027749-.635476z" fill="#e6e6e6"/></svg>
diff --git a/editor/icons/NotificationDisabled.svg b/editor/icons/NotificationDisabled.svg
new file mode 100644
index 0000000000..0e4465bee8
--- /dev/null
+++ b/editor/icons/NotificationDisabled.svg
@@ -0,0 +1 @@
+<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m11.705078 1.1386719c-.389281-.0180576-.770356.1928007-.949219.5664062-.01372.028981-.024286.0597078-.035156.0898438-.01467.023016-.026122.0477316-.039062.0722656-.04899-.00527-.097678-.0088657-.146485-.0117187-1.4730253-.6255102-3.1788394.0160437-3.8749998 1.4570312l-1.7265624 3.6074219s-.3370448.7035743-.8085938 1.1269531l-.0019531.0019531c-.2721193.1337295-.5715196.1856194-.8613281.046875-.4981413-.2384824-1.0955019-.0274382-1.3339844.4707031-.01605.0335262-.0289787.0672737-.0410156.1015626-.0187691.0303709-.0369684.0627711-.0527344.0957031-.2384825.4981412-.0293917 1.0955019.46875 1.3339841l.3398437.16211 10.8984379-6.9394535c-.263272-.3070418-.592225-.5660832-.980469-.7519531.238482-.4981411.027441-1.0935489-.470703-1.3320313-.124536-.0596206-.255006-.091637-.384766-.0976562zm2.435547 2.8652343a.94188849 1 0 0 0 -.566406.1386719l-12.1171878 7.7148439a.94188849 1 0 0 0 -.3222656 1.373047.94188849 1 0 0 0 1.2910156.341797l12.1171878-7.7148441a.94188849 1 0 0 0 .322265-1.3710938.94188849 1 0 0 0 -.724609-.4824219zm-.509766 3.2753907-7.3867184 4.7050781 5.0781254 2.431641c.498141.238482 1.095501.027442 1.333984-.470704.01577-.03293.031159-.067862.042969-.101562.0192-.03086.036684-.062173.052734-.095703.238483-.498141.02744-1.095501-.470703-1.333985-.901965-.431809-.039063-2.236328-.039062-2.236328zm-7.0566402 5.3281251c-.322341.673306-.0365856 1.480394.6367187 1.802734.6733031.32234 1.4803929.036588 1.8027344-.636718z" fill="#e6e6e6"/></svg>
diff --git a/editor/icons/Tabs.svg b/editor/icons/TabBar.svg
index e20a1a0131..e20a1a0131 100644
--- a/editor/icons/Tabs.svg
+++ b/editor/icons/TabBar.svg
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp
index 4b01595028..ac8adedf2f 100644
--- a/editor/import/editor_import_collada.cpp
+++ b/editor/import/editor_import_collada.cpp
@@ -91,8 +91,8 @@ struct ColladaImport {
Error _create_mesh_surfaces(bool p_optimize, Ref<ImporterMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform3D &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *p_skin_controller, const Collada::MorphControllerData *p_morph_data, Vector<Ref<ImporterMesh>> p_morph_meshes = Vector<Ref<ImporterMesh>>(), bool p_use_compression = false, bool p_use_mesh_material = false);
Error load(const String &p_path, int p_flags, bool p_force_make_tangents = false, bool p_use_compression = false);
void _fix_param_animation_tracks();
- void create_animation(int p_clip, bool p_make_tracks_in_all_bones, bool p_import_value_tracks);
- void create_animations(bool p_make_tracks_in_all_bones, bool p_import_value_tracks);
+ void create_animation(int p_clip, bool p_import_value_tracks);
+ void create_animations(bool p_import_value_tracks);
Set<String> tracks_in_clips;
Vector<String> missing_textures;
@@ -120,6 +120,15 @@ Error ColladaImport::_populate_skeleton(Skeleton3D *p_skeleton, Collada::Node *p
skeleton_bone_map[p_skeleton][joint->sid] = r_bone;
+ {
+ Transform3D xform = joint->compute_transform(collada);
+ xform = collada.fix_transform(xform) * joint->post_transform;
+
+ p_skeleton->set_bone_pose_position(r_bone, xform.origin);
+ p_skeleton->set_bone_pose_rotation(r_bone, xform.basis.get_rotation_quaternion());
+ p_skeleton->set_bone_pose_scale(r_bone, xform.basis.get_scale());
+ }
+
if (collada.state.bone_rest_map.has(joint->sid)) {
p_skeleton->set_bone_rest(r_bone, collada.fix_transform(collada.state.bone_rest_map[joint->sid]));
//should map this bone to something for animation?
@@ -1384,7 +1393,7 @@ void ColladaImport::_fix_param_animation_tracks() {
}
}
-void ColladaImport::create_animations(bool p_make_tracks_in_all_bones, bool p_import_value_tracks) {
+void ColladaImport::create_animations(bool p_import_value_tracks) {
_fix_param_animation_tracks();
for (int i = 0; i < collada.state.animation_clips.size(); i++) {
for (int j = 0; j < collada.state.animation_clips[i].tracks.size(); j++) {
@@ -1417,13 +1426,13 @@ void ColladaImport::create_animations(bool p_make_tracks_in_all_bones, bool p_im
}
}
- create_animation(-1, p_make_tracks_in_all_bones, p_import_value_tracks);
+ create_animation(-1, p_import_value_tracks);
for (int i = 0; i < collada.state.animation_clips.size(); i++) {
- create_animation(i, p_make_tracks_in_all_bones, p_import_value_tracks);
+ create_animation(i, p_import_value_tracks);
}
}
-void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones, bool p_import_value_tracks) {
+void ColladaImport::create_animation(int p_clip, bool p_import_value_tracks) {
Ref<Animation> animation = Ref<Animation>(memnew(Animation));
if (p_clip == -1) {
@@ -1522,10 +1531,55 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
continue;
}
- animation->add_track(Animation::TYPE_TRANSFORM3D);
- int track = animation->get_track_count() - 1;
- animation->track_set_path(track, path);
- animation->track_set_imported(track, true); //helps merging later
+ bool has_position = false;
+ bool has_rotation = false;
+ bool has_scale = false;
+
+ for (int i = 0; cn->xform_list.size(); i++) {
+ switch (cn->xform_list[i].op) {
+ case Collada::Node::XForm::OP_ROTATE: {
+ has_rotation = true;
+ } break;
+ case Collada::Node::XForm::OP_SCALE: {
+ has_scale = true;
+ } break;
+ case Collada::Node::XForm::OP_TRANSLATE: {
+ has_position = true;
+ } break;
+ case Collada::Node::XForm::OP_MATRIX: {
+ has_position = true;
+ has_rotation = true;
+ has_scale = true;
+ } break;
+ case Collada::Node::XForm::OP_VISIBILITY: {
+ } break;
+ }
+ }
+
+ int base_track = animation->get_track_count();
+ int position_idx = -1;
+ if (has_position) {
+ position_idx = animation->get_track_count();
+ animation->add_track(Animation::TYPE_POSITION_3D);
+ animation->track_set_path(position_idx, path);
+ animation->track_set_imported(position_idx, true); //helps merging later
+ }
+
+ int rotation_idx = -1;
+ if (has_rotation) {
+ rotation_idx = animation->get_track_count();
+ animation->add_track(Animation::TYPE_ROTATION_3D);
+ animation->track_set_path(rotation_idx, path);
+ animation->track_set_imported(rotation_idx, true); //helps merging later
+ }
+
+ int scale_idx = -1;
+ if (has_scale) {
+ scale_idx = animation->get_track_count();
+ animation->add_track(Animation::TYPE_SCALE_3D);
+ animation->track_set_path(scale_idx, path);
+ animation->track_set_imported(scale_idx, true); //helps merging later
+ }
Vector<real_t> snapshots = base_snapshots;
@@ -1594,22 +1648,21 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
Transform3D xform = cn->compute_transform(collada);
xform = collada.fix_transform(xform) * cn->post_transform;
- if (nm.bone >= 0) {
- //make bone transform relative to rest (in case of skeleton)
- Skeleton3D *sk = Object::cast_to<Skeleton3D>(nm.node);
- if (sk) {
- xform = sk->get_bone_rest(nm.bone).affine_inverse() * xform;
- } else {
- ERR_PRINT("Collada: Invalid skeleton");
- }
- }
-
Vector3 s = xform.basis.get_scale();
bool singular_matrix = Math::is_zero_approx(s.x) || Math::is_zero_approx(s.y) || Math::is_zero_approx(s.z);
- Quaternion q = singular_matrix ? Quaternion() : xform.basis.get_rotation_quaternion();
+ Quaternion q = singular_matrix ? Quaternion() :
+ xform.basis.get_rotation_quaternion();
Vector3 l = xform.origin;
- animation->transform_track_insert_key(track, snapshots[i], l, q, s);
+ if (position_idx >= 0) {
+ animation->position_track_insert_key(position_idx, snapshots[i], l);
+ }
+ if (rotation_idx >= 0) {
+ animation->rotation_track_insert_key(rotation_idx, snapshots[i], q);
+ }
+ if (scale_idx >= 0) {
+ animation->scale_track_insert_key(scale_idx, snapshots[i], s);
+ }
}
if (nm.bone >= 0) {
@@ -1621,48 +1674,15 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
if (found_anim) {
tracks_found = true;
} else {
- animation->remove_track(track);
- }
- }
-
- if (p_make_tracks_in_all_bones) {
- //some bones may lack animation, but since we don't store pose as a property, we must add keyframes!
- for (const KeyValue<String, bool> &E : bones_with_animation) {
- if (E.value) {
- continue;
+ if (position_idx >= 0) {
+ animation->remove_track(base_track);
}
-
- NodeMap &nm = node_map[E.key];
- String path = scene->get_path_to(nm.node);
- ERR_CONTINUE(nm.bone < 0);
- Skeleton3D *sk = static_cast<Skeleton3D *>(nm.node);
- String name = sk->get_bone_name(nm.bone);
- path = path + ":" + name;
-
- Collada::Node *cn = collada.state.scene_map[E.key];
- if (cn->ignore_anim) {
- WARN_PRINT("Collada: Ignoring animation on node: " + path);
- continue;
+ if (rotation_idx >= 0) {
+ animation->remove_track(base_track);
+ }
+ if (scale_idx >= 0) {
+ animation->remove_track(base_track);
}
-
- animation->add_track(Animation::TYPE_TRANSFORM3D);
- int track = animation->get_track_count() - 1;
- animation->track_set_path(track, path);
- animation->track_set_imported(track, true); //helps merging later
-
- Transform3D xform = cn->compute_transform(collada);
- xform = collada.fix_transform(xform) * cn->post_transform;
-
- xform = sk->get_bone_rest(nm.bone).affine_inverse() * xform;
-
- Vector3 s = xform.basis.get_scale();
- bool singular_matrix = Math::is_zero_approx(s.x) || Math::is_zero_approx(s.y) || Math::is_zero_approx(s.z);
- Quaternion q = singular_matrix ? Quaternion() : xform.basis.get_rotation_quaternion();
- Vector3 l = xform.origin;
-
- animation->transform_track_insert_key(track, 0, l, q, s);
-
- tracks_found = true;
}
}
@@ -1690,7 +1710,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
NodeMap &nm = node_map[at.target];
String path = scene->get_path_to(nm.node);
- animation->add_track(Animation::TYPE_VALUE);
+ animation->add_track(Animation::TYPE_BLEND_SHAPE);
int track = animation->get_track_count() - 1;
path = path + ":" + at.param;
@@ -1712,7 +1732,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
WARN_PRINT("Collada: Unexpected amount of value keys: " + itos(data.size()));
}
- animation->track_insert_key(track, time, value);
+ animation->blend_shape_track_insert_key(track, time, value);
}
tracks_found = true;
@@ -1728,15 +1748,15 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
/*************************************** SCENE ***********************************/
/*********************************************************************************/
-uint32_t EditorSceneImporterCollada::get_import_flags() const {
+uint32_t EditorSceneFormatImporterCollada::get_import_flags() const {
return IMPORT_SCENE | IMPORT_ANIMATION;
}
-void EditorSceneImporterCollada::get_extensions(List<String> *r_extensions) const {
+void EditorSceneFormatImporterCollada::get_extensions(List<String> *r_extensions) const {
r_extensions->push_back("dae");
}
-Node *EditorSceneImporterCollada::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err) {
+Node *EditorSceneFormatImporterCollada::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err) {
if (r_err) {
*r_err = OK;
}
@@ -1749,7 +1769,7 @@ Node *EditorSceneImporterCollada::import_scene(const String &p_path, uint32_t p_
state.use_mesh_builtin_materials = true;
state.bake_fps = p_bake_fps;
- Error err = state.load(p_path, flags, p_flags & EditorSceneImporter::IMPORT_GENERATE_TANGENT_ARRAYS, false);
+ Error err = state.load(p_path, flags, p_flags & EditorSceneFormatImporter::IMPORT_GENERATE_TANGENT_ARRAYS, false);
if (r_err) {
*r_err = err;
@@ -1773,7 +1793,7 @@ Node *EditorSceneImporterCollada::import_scene(const String &p_path, uint32_t p_
}
if (p_flags & IMPORT_ANIMATION) {
- state.create_animations(true, true);
+ state.create_animations(true);
AnimationPlayer *ap = memnew(AnimationPlayer);
for (int i = 0; i < state.animations.size(); i++) {
String name;
@@ -1792,15 +1812,15 @@ Node *EditorSceneImporterCollada::import_scene(const String &p_path, uint32_t p_
return state.scene;
}
-Ref<Animation> EditorSceneImporterCollada::import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) {
+Ref<Animation> EditorSceneFormatImporterCollada::import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) {
ColladaImport state;
state.use_mesh_builtin_materials = false;
- Error err = state.load(p_path, Collada::IMPORT_FLAG_ANIMATION, p_flags & EditorSceneImporter::IMPORT_GENERATE_TANGENT_ARRAYS);
+ Error err = state.load(p_path, Collada::IMPORT_FLAG_ANIMATION, p_flags & EditorSceneFormatImporter::IMPORT_GENERATE_TANGENT_ARRAYS);
ERR_FAIL_COND_V_MSG(err != OK, RES(), "Cannot load animation from file '" + p_path + "'.");
- state.create_animations(true, true);
+ state.create_animations(true);
if (state.scene) {
memdelete(state.scene);
}
@@ -1813,5 +1833,5 @@ Ref<Animation> EditorSceneImporterCollada::import_animation(const String &p_path
return anim;
}
-EditorSceneImporterCollada::EditorSceneImporterCollada() {
+EditorSceneFormatImporterCollada::EditorSceneFormatImporterCollada() {
}
diff --git a/editor/import/editor_import_collada.h b/editor/import/editor_import_collada.h
index bf45322765..055a6fe178 100644
--- a/editor/import/editor_import_collada.h
+++ b/editor/import/editor_import_collada.h
@@ -33,8 +33,8 @@
#include "editor/import/resource_importer_scene.h"
-class EditorSceneImporterCollada : public EditorSceneImporter {
- GDCLASS(EditorSceneImporterCollada, EditorSceneImporter);
+class EditorSceneFormatImporterCollada : public EditorSceneFormatImporter {
+ GDCLASS(EditorSceneFormatImporterCollada, EditorSceneFormatImporter);
public:
virtual uint32_t get_import_flags() const override;
@@ -42,7 +42,7 @@ public:
virtual Node *import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps = nullptr, Error *r_err = nullptr) override;
virtual Ref<Animation> import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) override;
- EditorSceneImporterCollada();
+ EditorSceneFormatImporterCollada();
};
#endif
diff --git a/editor/import/editor_importer_bake_reset.cpp b/editor/import/editor_importer_bake_reset.cpp
deleted file mode 100644
index 451a07351c..0000000000
--- a/editor/import/editor_importer_bake_reset.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/*************************************************************************/
-/* editor_importer_bake_reset.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "editor/import/editor_importer_bake_reset.h"
-
-#include "core/error/error_list.h"
-#include "core/error/error_macros.h"
-#include "core/math/transform_3d.h"
-#include "resource_importer_scene.h"
-#include "scene/3d/importer_mesh_instance_3d.h"
-#include "scene/3d/mesh_instance_3d.h"
-#include "scene/3d/node_3d.h"
-#include "scene/3d/skeleton_3d.h"
-#include "scene/animation/animation_player.h"
-
-// Given that an engineering team has made a reference character, one wants ten animators to create animations.
-// Currently, a tech artist needs to combine the ten files into one exported gltf2 to import into Godot Engine.
-// We bake the RESET animation and then set it to identity,
-// so that rigs with corresponding RESET animation can have their animations transferred with ease.
-//
-// The original algorithm for the code was used to change skeleton bone rolls to be parent to child.
-//
-// Reference https://github.com/godotengine/godot-proposals/issues/2961
-void BakeReset::_bake_animation_pose(Node *scene, const String &p_bake_anim) {
- Map<StringName, BakeResetRestBone> r_rest_bones;
- Vector<Node3D *> r_meshes;
- List<Node *> queue;
- queue.push_back(scene);
- while (!queue.is_empty()) {
- List<Node *>::Element *E = queue.front();
- Node *node = E->get();
- AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(node);
- // Step 1: import scene with animations into the rest bones data structure.
- _fetch_reset_animation(ap, r_rest_bones, p_bake_anim);
-
- int child_count = node->get_child_count();
- for (int i = 0; i < child_count; i++) {
- queue.push_back(node->get_child(i));
- }
- queue.pop_front();
- }
-
- queue.push_back(scene);
- while (!queue.is_empty()) {
- List<Node *>::Element *E = queue.front();
- Node *node = E->get();
- ImporterMeshInstance3D *editor_mesh_3d = scene->cast_to<ImporterMeshInstance3D>(node);
- MeshInstance3D *mesh_3d = scene->cast_to<MeshInstance3D>(node);
- if (scene->cast_to<Skeleton3D>(node)) {
- Skeleton3D *skeleton = Object::cast_to<Skeleton3D>(node);
-
- // Step 2: Bake the RESET animation from the RestBone to the skeleton.
- _fix_skeleton(skeleton, r_rest_bones);
- }
- if (editor_mesh_3d) {
- NodePath path = editor_mesh_3d->get_skeleton_path();
- if (!path.is_empty() && editor_mesh_3d->get_node_or_null(path) && Object::cast_to<Skeleton3D>(editor_mesh_3d->get_node_or_null(path))) {
- r_meshes.push_back(editor_mesh_3d);
- }
- } else if (mesh_3d) {
- NodePath path = mesh_3d->get_skeleton_path();
- if (!path.is_empty() && mesh_3d->get_node_or_null(path) && Object::cast_to<Skeleton3D>(mesh_3d->get_node_or_null(path))) {
- r_meshes.push_back(mesh_3d);
- }
- }
- int child_count = node->get_child_count();
- for (int i = 0; i < child_count; i++) {
- queue.push_back(node->get_child(i));
- }
- queue.pop_front();
- }
-
- queue.push_back(scene);
- while (!queue.is_empty()) {
- List<Node *>::Element *E = queue.front();
- Node *node = E->get();
- AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(node);
- if (ap) {
- // Step 3: Key all RESET animation frames to identity.
- _align_animations(ap, r_rest_bones);
- }
-
- int child_count = node->get_child_count();
- for (int i = 0; i < child_count; i++) {
- queue.push_back(node->get_child(i));
- }
- queue.pop_front();
- }
-}
-
-void BakeReset::_align_animations(AnimationPlayer *p_ap, const Map<StringName, BakeResetRestBone> &r_rest_bones) {
- ERR_FAIL_NULL(p_ap);
- List<StringName> anim_names;
- p_ap->get_animation_list(&anim_names);
- for (List<StringName>::Element *anim_i = anim_names.front(); anim_i; anim_i = anim_i->next()) {
- Ref<Animation> a = p_ap->get_animation(anim_i->get());
- ERR_CONTINUE(a.is_null());
- for (const KeyValue<StringName, BakeResetRestBone> &rest_bone_i : r_rest_bones) {
- int track = a->find_track(NodePath(rest_bone_i.key));
- if (track == -1) {
- continue;
- }
- int new_track = a->add_track(Animation::TYPE_TRANSFORM3D);
- NodePath new_path = NodePath(rest_bone_i.key);
- const BakeResetRestBone rest_bone = rest_bone_i.value;
- a->track_set_path(new_track, new_path);
- for (int key_i = 0; key_i < a->track_get_key_count(track); key_i++) {
- Vector3 loc;
- Quaternion rot;
- Vector3 scale;
- Error err = a->transform_track_get_key(track, key_i, &loc, &rot, &scale);
- ERR_CONTINUE(err);
- real_t time = a->track_get_key_time(track, key_i);
- rot.normalize();
- loc = loc - rest_bone.loc;
- rot = rest_bone.rest_delta.get_rotation_quaternion().inverse() * rot;
- rot.normalize();
- scale = Vector3(1, 1, 1) - (rest_bone.rest_delta.get_scale() - scale);
- // Apply the reverse of the rest changes to make the key be close to identity transform.
- a->transform_track_insert_key(new_track, time, loc, rot, scale);
- }
- a->remove_track(track);
- }
- }
-}
-
-void BakeReset::_fetch_reset_animation(AnimationPlayer *p_ap, Map<StringName, BakeResetRestBone> &r_rest_bones, const String &p_bake_anim) {
- if (!p_ap) {
- return;
- }
- List<StringName> anim_names;
- p_ap->get_animation_list(&anim_names);
- Node *root = p_ap->get_owner();
- ERR_FAIL_NULL(root);
- if (!p_ap->has_animation(p_bake_anim)) {
- return;
- }
- Ref<Animation> a = p_ap->get_animation(p_bake_anim);
- if (a.is_null()) {
- return;
- }
- for (int32_t track = 0; track < a->get_track_count(); track++) {
- NodePath path = a->track_get_path(track);
- String string_path = path;
- Skeleton3D *skeleton = root->cast_to<Skeleton3D>(root->get_node(string_path.get_slice(":", 0)));
- if (!skeleton) {
- continue;
- }
- String bone_name = string_path.get_slice(":", 1);
- for (int key_i = 0; key_i < a->track_get_key_count(track); key_i++) {
- Vector3 loc;
- Quaternion rot;
- Vector3 scale;
- Error err = a->transform_track_get_key(track, key_i, &loc, &rot, &scale);
- if (err != OK) {
- ERR_PRINT_ONCE("Reset animation baker can't get key.");
- continue;
- }
- rot.normalize();
- Basis rot_basis = Basis(rot, scale);
- BakeResetRestBone rest_bone;
- rest_bone.rest_delta = rot_basis;
- rest_bone.loc = loc;
- // Store the animation into the RestBone.
- r_rest_bones[StringName(String(skeleton->get_owner()->get_path_to(skeleton)) + ":" + bone_name)] = rest_bone;
- break;
- }
- }
-}
-
-void BakeReset::_fix_skeleton(Skeleton3D *p_skeleton, Map<StringName, BakeReset::BakeResetRestBone> &r_rest_bones) {
- int bone_count = p_skeleton->get_bone_count();
-
- // First iterate through all the bones and update the RestBone.
- for (int j = 0; j < bone_count; j++) {
- StringName final_path = String(p_skeleton->get_owner()->get_path_to(p_skeleton)) + String(":") + p_skeleton->get_bone_name(j);
- BakeResetRestBone &rest_bone = r_rest_bones[final_path];
- rest_bone.rest_local = p_skeleton->get_bone_rest(j);
- }
- for (int i = 0; i < bone_count; i++) {
- int parent_bone = p_skeleton->get_bone_parent(i);
- String path = p_skeleton->get_owner()->get_path_to(p_skeleton);
- StringName final_path = String(path) + String(":") + p_skeleton->get_bone_name(parent_bone);
- if (parent_bone >= 0) {
- r_rest_bones[path].children.push_back(i);
- }
- }
-
- // When we apply transform to a bone, we also have to move all of its children in the opposite direction.
- for (int i = 0; i < bone_count; i++) {
- StringName final_path = String(p_skeleton->get_owner()->get_path_to(p_skeleton)) + String(":") + p_skeleton->get_bone_name(i);
- r_rest_bones[final_path].rest_local = r_rest_bones[final_path].rest_local * Transform3D(r_rest_bones[final_path].rest_delta, r_rest_bones[final_path].loc);
- // Iterate through the children and move in the opposite direction.
- for (int j = 0; j < r_rest_bones[final_path].children.size(); j++) {
- int child_index = r_rest_bones[final_path].children[j];
- StringName children_path = String(p_skeleton->get_name()) + String(":") + p_skeleton->get_bone_name(child_index);
- r_rest_bones[children_path].rest_local = Transform3D(r_rest_bones[final_path].rest_delta, r_rest_bones[final_path].loc).affine_inverse() * r_rest_bones[children_path].rest_local;
- }
- }
-
- for (int i = 0; i < bone_count; i++) {
- StringName final_path = String(p_skeleton->get_owner()->get_path_to(p_skeleton)) + String(":") + p_skeleton->get_bone_name(i);
- ERR_CONTINUE(!r_rest_bones.has(final_path));
- Transform3D rest_transform = r_rest_bones[final_path].rest_local;
- p_skeleton->set_bone_rest(i, rest_transform);
- }
-}
diff --git a/editor/import/resource_importer_layered_texture.h b/editor/import/resource_importer_layered_texture.h
index 86e9c5bde8..7d8fb3cac5 100644
--- a/editor/import/resource_importer_layered_texture.h
+++ b/editor/import/resource_importer_layered_texture.h
@@ -91,8 +91,6 @@ public:
virtual Error import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) override;
- void update_imports();
-
virtual bool are_import_settings_valid(const String &p_path) const override;
virtual String get_import_settings_string() const override;
diff --git a/editor/import/resource_importer_obj.h b/editor/import/resource_importer_obj.h
index 1bb5ef33ce..d9f2f79903 100644
--- a/editor/import/resource_importer_obj.h
+++ b/editor/import/resource_importer_obj.h
@@ -33,8 +33,8 @@
#include "resource_importer_scene.h"
-class EditorOBJImporter : public EditorSceneImporter {
- GDCLASS(EditorOBJImporter, EditorSceneImporter);
+class EditorOBJImporter : public EditorSceneFormatImporter {
+ GDCLASS(EditorOBJImporter, EditorSceneFormatImporter);
public:
virtual uint32_t get_import_flags() const override;
diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp
index 1e93113488..319e5ee25f 100644
--- a/editor/import/resource_importer_scene.cpp
+++ b/editor/import/resource_importer_scene.cpp
@@ -32,7 +32,7 @@
#include "core/io/resource_saver.h"
#include "editor/editor_node.h"
-#include "editor/import/editor_importer_bake_reset.h"
+
#include "editor/import/scene_import_settings.h"
#include "scene/3d/area_3d.h"
#include "scene/3d/collision_shape_3d.h"
@@ -52,7 +52,7 @@
#include "scene/resources/surface_tool.h"
#include "scene/resources/world_boundary_shape_3d.h"
-uint32_t EditorSceneImporter::get_import_flags() const {
+uint32_t EditorSceneFormatImporter::get_import_flags() const {
int ret;
if (GDVIRTUAL_CALL(_get_import_flags, ret)) {
return ret;
@@ -61,7 +61,7 @@ uint32_t EditorSceneImporter::get_import_flags() const {
ERR_FAIL_V(0);
}
-void EditorSceneImporter::get_extensions(List<String> *r_extensions) const {
+void EditorSceneFormatImporter::get_extensions(List<String> *r_extensions) const {
Vector<String> arr;
if (GDVIRTUAL_CALL(_get_extensions, arr)) {
for (int i = 0; i < arr.size(); i++) {
@@ -73,7 +73,7 @@ void EditorSceneImporter::get_extensions(List<String> *r_extensions) const {
ERR_FAIL();
}
-Node *EditorSceneImporter::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err) {
+Node *EditorSceneFormatImporter::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err) {
Object *ret;
if (GDVIRTUAL_CALL(_import_scene, p_path, p_flags, p_bake_fps, ret)) {
return Object::cast_to<Node>(ret);
@@ -82,7 +82,7 @@ Node *EditorSceneImporter::import_scene(const String &p_path, uint32_t p_flags,
ERR_FAIL_V(nullptr);
}
-Ref<Animation> EditorSceneImporter::import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) {
+Ref<Animation> EditorSceneFormatImporter::import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) {
Ref<Animation> ret;
if (GDVIRTUAL_CALL(_import_animation, p_path, p_flags, p_bake_fps, ret)) {
return ret;
@@ -94,17 +94,17 @@ Ref<Animation> EditorSceneImporter::import_animation(const String &p_path, uint3
//for documenters, these functions are useful when an importer calls an external conversion helper (like, fbx2gltf),
//and you want to load the resulting file
-Node *EditorSceneImporter::import_scene_from_other_importer(const String &p_path, uint32_t p_flags, int p_bake_fps) {
+Node *EditorSceneFormatImporter::import_scene_from_other_importer(const String &p_path, uint32_t p_flags, int p_bake_fps) {
return ResourceImporterScene::get_singleton()->import_scene_from_other_importer(this, p_path, p_flags, p_bake_fps);
}
-Ref<Animation> EditorSceneImporter::import_animation_from_other_importer(const String &p_path, uint32_t p_flags, int p_bake_fps) {
+Ref<Animation> EditorSceneFormatImporter::import_animation_from_other_importer(const String &p_path, uint32_t p_flags, int p_bake_fps) {
return ResourceImporterScene::get_singleton()->import_animation_from_other_importer(this, p_path, p_flags, p_bake_fps);
}
-void EditorSceneImporter::_bind_methods() {
- ClassDB::bind_method(D_METHOD("import_scene_from_other_importer", "path", "flags", "bake_fps"), &EditorSceneImporter::import_scene_from_other_importer);
- ClassDB::bind_method(D_METHOD("import_animation_from_other_importer", "path", "flags", "bake_fps"), &EditorSceneImporter::import_animation_from_other_importer);
+void EditorSceneFormatImporter::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("import_scene_from_other_importer", "path", "flags", "bake_fps"), &EditorSceneFormatImporter::import_scene_from_other_importer);
+ ClassDB::bind_method(D_METHOD("import_animation_from_other_importer", "path", "flags", "bake_fps"), &EditorSceneFormatImporter::import_animation_from_other_importer);
GDVIRTUAL_BIND(_get_import_flags);
GDVIRTUAL_BIND(_get_extensions);
@@ -144,6 +144,105 @@ void EditorScenePostImport::init(const String &p_source_file) {
EditorScenePostImport::EditorScenePostImport() {
}
+///////////////////////////////////////////////////////
+
+Variant EditorScenePostImportPlugin::get_option_value(const StringName &p_name) const {
+ ERR_FAIL_COND_V_MSG(current_options == nullptr && current_options_dict == nullptr, Variant(), "get_option_value called from a function where option values are not available.");
+ ERR_FAIL_COND_V_MSG(current_options && !current_options->has(p_name), Variant(), "get_option_value called with unexisting option argument: " + String(p_name));
+ ERR_FAIL_COND_V_MSG(current_options_dict && !current_options_dict->has(p_name), Variant(), "get_option_value called with unexisting option argument: " + String(p_name));
+ if (current_options) {
+ (*current_options)[p_name];
+ }
+ if (current_options_dict) {
+ (*current_options_dict)[p_name];
+ }
+ return Variant();
+}
+void EditorScenePostImportPlugin::add_import_option(const String &p_name, Variant p_default_value) {
+ ERR_FAIL_COND_MSG(current_option_list == nullptr, "add_import_option() can only be called from get_import_options()");
+ add_import_option_advanced(p_default_value.get_type(), p_name, p_default_value);
+}
+void EditorScenePostImportPlugin::add_import_option_advanced(Variant::Type p_type, const String &p_name, Variant p_default_value, PropertyHint p_hint, const String &p_hint_string, int p_usage_flags) {
+ ERR_FAIL_COND_MSG(current_option_list == nullptr, "add_import_option_advanced() can only be called from get_import_options()");
+ current_option_list->push_back(ResourceImporter::ImportOption(PropertyInfo(p_type, p_name, p_hint, p_hint_string, p_usage_flags), p_default_value));
+}
+
+void EditorScenePostImportPlugin::get_internal_import_options(InternalImportCategory p_category, List<ResourceImporter::ImportOption> *r_options) {
+ current_option_list = r_options;
+ GDVIRTUAL_CALL(_get_internal_import_options, p_category);
+ current_option_list = nullptr;
+}
+Variant EditorScenePostImportPlugin::get_internal_option_visibility(InternalImportCategory p_category, const String &p_option, const Map<StringName, Variant> &p_options) const {
+ current_options = &p_options;
+ Variant ret;
+ GDVIRTUAL_CALL(_get_internal_option_visibility, p_category, p_option, ret);
+ current_options = nullptr;
+ return ret;
+}
+Variant EditorScenePostImportPlugin::get_internal_option_update_view_required(InternalImportCategory p_category, const String &p_option, const Map<StringName, Variant> &p_options) const {
+ current_options = &p_options;
+ Variant ret;
+ GDVIRTUAL_CALL(_get_internal_option_update_view_required, p_category, p_option, ret);
+ current_options = nullptr;
+ return ret;
+}
+
+void EditorScenePostImportPlugin::internal_process(InternalImportCategory p_category, Node *p_base_scene, Node *p_node, RES p_resource, const Dictionary &p_options) {
+ current_options_dict = &p_options;
+ GDVIRTUAL_CALL(_internal_process, p_category, p_base_scene, p_node, p_resource);
+ current_options_dict = nullptr;
+}
+
+void EditorScenePostImportPlugin::get_import_options(List<ResourceImporter::ImportOption> *r_options) {
+ current_option_list = r_options;
+ GDVIRTUAL_CALL(_get_import_options);
+ current_option_list = nullptr;
+}
+Variant EditorScenePostImportPlugin::get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const {
+ current_options = &p_options;
+ Variant ret;
+ GDVIRTUAL_CALL(_get_option_visibility, p_option, ret);
+ current_options = nullptr;
+ return ret;
+}
+
+void EditorScenePostImportPlugin::pre_process(Node *p_scene, const Map<StringName, Variant> &p_options) {
+ current_options = &p_options;
+ GDVIRTUAL_CALL(_pre_process, p_scene);
+ current_options = nullptr;
+}
+void EditorScenePostImportPlugin::post_process(Node *p_scene, const Map<StringName, Variant> &p_options) {
+ current_options = &p_options;
+ GDVIRTUAL_CALL(_post_process, p_scene);
+ current_options = nullptr;
+}
+
+void EditorScenePostImportPlugin::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("get_option_value", "name"), &EditorScenePostImportPlugin::get_option_value);
+
+ ClassDB::bind_method(D_METHOD("add_import_option", "name", "value"), &EditorScenePostImportPlugin::add_import_option);
+ ClassDB::bind_method(D_METHOD("add_import_option_advanced", "type", "name", "default_value", "hint", "hint_string", "usage_flags"), &EditorScenePostImportPlugin::add_import_option_advanced, DEFVAL(PROPERTY_HINT_NONE), DEFVAL(""), DEFVAL(PROPERTY_USAGE_DEFAULT));
+
+ GDVIRTUAL_BIND(_get_internal_import_options, "category");
+ GDVIRTUAL_BIND(_get_internal_option_visibility, "category", "option");
+ GDVIRTUAL_BIND(_get_internal_option_update_view_required, "category", "option");
+ GDVIRTUAL_BIND(_internal_process, "category", "base_node", "node", "resource");
+ GDVIRTUAL_BIND(_get_import_options);
+ GDVIRTUAL_BIND(_get_option_visibility, "option");
+ GDVIRTUAL_BIND(_pre_process, "scene");
+ GDVIRTUAL_BIND(_post_process, "scene");
+
+ BIND_ENUM_CONSTANT(INTERNAL_IMPORT_CATEGORY_NODE);
+ BIND_ENUM_CONSTANT(INTERNAL_IMPORT_CATEGORY_MESH_3D_NODE);
+ BIND_ENUM_CONSTANT(INTERNAL_IMPORT_CATEGORY_MESH);
+ BIND_ENUM_CONSTANT(INTERNAL_IMPORT_CATEGORY_MATERIAL);
+ BIND_ENUM_CONSTANT(INTERNAL_IMPORT_CATEGORY_ANIMATION);
+ BIND_ENUM_CONSTANT(INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE);
+ BIND_ENUM_CONSTANT(INTERNAL_IMPORT_CATEGORY_MAX);
+}
+
+/////////////////////////////////////////////////////////
+
String ResourceImporterScene::get_importer_name() const {
return "scene";
}
@@ -153,7 +252,7 @@ String ResourceImporterScene::get_visible_name() const {
}
void ResourceImporterScene::get_recognized_extensions(List<String> *p_extensions) const {
- for (Set<Ref<EditorSceneImporter>>::Element *E = importers.front(); E; E = E->next()) {
+ for (Set<Ref<EditorSceneFormatImporter>>::Element *E = importers.front(); E; E = E->next()) {
E->get()->get_extensions(p_extensions);
}
}
@@ -181,6 +280,13 @@ bool ResourceImporterScene::get_option_visibility(const String &p_option, const
return false;
}
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ Variant ret = post_importer_plugins.write[i]->get_option_visibility(p_option, p_options);
+ if (ret.get_type() == Variant::BOOL) {
+ return ret;
+ }
+ }
+
return true;
}
@@ -547,6 +653,26 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
return nullptr;
}
+ {
+ ObjectID node_id = p_node->get_instance_id();
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->internal_process(EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_NODE, p_root, p_node, RES(), node_settings);
+ if (ObjectDB::get_instance(node_id) == nullptr) { //may have been erased, so do not continue
+ break;
+ }
+ }
+ }
+
+ if (Object::cast_to<ImporterMeshInstance3D>(p_node)) {
+ ObjectID node_id = p_node->get_instance_id();
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->internal_process(EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_MESH_3D_NODE, p_root, p_node, RES(), node_settings);
+ if (ObjectDB::get_instance(node_id) == nullptr) { //may have been erased, so do not continue
+ break;
+ }
+ }
+ }
+
if (Object::cast_to<ImporterMeshInstance3D>(p_node)) {
ImporterMeshInstance3D *mi = Object::cast_to<ImporterMeshInstance3D>(p_node);
@@ -566,6 +692,11 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
if (mat_id != String() && p_material_data.has(mat_id)) {
Dictionary matdata = p_material_data[mat_id];
+
+ for (int j = 0; j < post_importer_plugins.size(); j++) {
+ post_importer_plugins.write[j]->internal_process(EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_MATERIAL, p_root, p_node, mat, matdata);
+ }
+
if (matdata.has("use_external/enabled") && bool(matdata["use_external/enabled"]) && matdata.has("use_external/path")) {
String path = matdata["use_external/path"];
Ref<Material> external_mat = ResourceLoader::load(path);
@@ -715,6 +846,10 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
}
}
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->internal_process(EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE, p_root, p_node, RES(), node_settings);
+ }
+
bool use_optimizer = node_settings["optimizer/enabled"];
float anim_optimizer_linerr = node_settings["optimizer/max_linear_error"];
float anim_optimizer_angerr = node_settings["optimizer/max_angular_error"];
@@ -779,6 +914,41 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
}
}
}
+
+ AnimationImportTracks import_tracks_mode[TRACK_CHANNEL_MAX] = {
+ AnimationImportTracks(int(node_settings["import_tracks/position"])),
+ AnimationImportTracks(int(node_settings["import_tracks/rotation"])),
+ AnimationImportTracks(int(node_settings["import_tracks/scale"]))
+ };
+
+ if (anims.size() > 1 && (import_tracks_mode[0] != ANIMATION_IMPORT_TRACKS_IF_PRESENT || import_tracks_mode[1] != ANIMATION_IMPORT_TRACKS_IF_PRESENT || import_tracks_mode[2] != ANIMATION_IMPORT_TRACKS_IF_PRESENT)) {
+ _optimize_track_usage(ap, import_tracks_mode);
+ }
+ }
+
+ if (post_importer_plugins.size()) {
+ List<StringName> anims;
+ ap->get_animation_list(&anims);
+ for (const StringName &name : anims) {
+ if (p_animation_data.has(name)) {
+ Ref<Animation> anim = ap->get_animation(name);
+ Dictionary anim_settings = p_animation_data[name];
+ {
+ //fill with default values
+ List<ImportOption> iopts;
+ get_internal_import_options(INTERNAL_IMPORT_CATEGORY_ANIMATION, &iopts);
+ for (const ImportOption &F : iopts) {
+ if (!anim_settings.has(F.option.name)) {
+ anim_settings[F.option.name] = F.default_value;
+ }
+ }
+ }
+
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->internal_process(EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_ANIMATION, p_root, p_node, anim, node_settings);
+ }
+ }
+ }
}
}
@@ -851,44 +1021,71 @@ void ResourceImporterScene::_create_clips(AnimationPlayer *anim, const Array &p_
new_anim->track_set_path(dtrack, default_anim->track_get_path(j));
if (kt > (from + 0.01) && k > 0) {
- if (default_anim->track_get_type(j) == Animation::TYPE_TRANSFORM3D) {
- Quaternion q;
+ if (default_anim->track_get_type(j) == Animation::TYPE_POSITION_3D) {
Vector3 p;
+ default_anim->position_track_interpolate(j, from, &p);
+ new_anim->position_track_insert_key(dtrack, 0, p);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_ROTATION_3D) {
+ Quaternion r;
+ default_anim->rotation_track_interpolate(j, from, &r);
+ new_anim->rotation_track_insert_key(dtrack, 0, r);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_SCALE_3D) {
Vector3 s;
- default_anim->transform_track_interpolate(j, from, &p, &q, &s);
- new_anim->transform_track_insert_key(dtrack, 0, p, q, s);
- }
- if (default_anim->track_get_type(j) == Animation::TYPE_VALUE) {
+ default_anim->scale_track_interpolate(j, from, &s);
+ new_anim->scale_track_insert_key(dtrack, 0, s);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_VALUE) {
Variant var = default_anim->value_track_interpolate(j, from);
new_anim->track_insert_key(dtrack, 0, var);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_BLEND_SHAPE) {
+ float interp;
+ default_anim->blend_shape_track_interpolate(j, from, &interp);
+ new_anim->blend_shape_track_insert_key(dtrack, 0, interp);
}
}
}
- if (default_anim->track_get_type(j) == Animation::TYPE_TRANSFORM3D) {
- Quaternion q;
+ if (default_anim->track_get_type(j) == Animation::TYPE_POSITION_3D) {
Vector3 p;
+ default_anim->position_track_get_key(j, k, &p);
+ new_anim->position_track_insert_key(dtrack, kt - from, p);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_ROTATION_3D) {
+ Quaternion r;
+ default_anim->rotation_track_get_key(j, k, &r);
+ new_anim->rotation_track_insert_key(dtrack, kt - from, r);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_SCALE_3D) {
Vector3 s;
- default_anim->transform_track_get_key(j, k, &p, &q, &s);
- new_anim->transform_track_insert_key(dtrack, kt - from, p, q, s);
- }
- if (default_anim->track_get_type(j) == Animation::TYPE_VALUE) {
+ default_anim->scale_track_get_key(j, k, &s);
+ new_anim->scale_track_insert_key(dtrack, kt - from, s);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_VALUE) {
Variant var = default_anim->track_get_key_value(j, k);
new_anim->track_insert_key(dtrack, kt - from, var);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_BLEND_SHAPE) {
+ float interp;
+ default_anim->blend_shape_track_get_key(j, k, &interp);
+ new_anim->blend_shape_track_insert_key(dtrack, kt - from, interp);
}
}
if (dtrack != -1 && kt >= to) {
- if (default_anim->track_get_type(j) == Animation::TYPE_TRANSFORM3D) {
- Quaternion q;
+ if (default_anim->track_get_type(j) == Animation::TYPE_POSITION_3D) {
Vector3 p;
+ default_anim->position_track_interpolate(j, to, &p);
+ new_anim->position_track_insert_key(dtrack, to - from, p);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_ROTATION_3D) {
+ Quaternion r;
+ default_anim->rotation_track_interpolate(j, to, &r);
+ new_anim->rotation_track_insert_key(dtrack, to - from, r);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_SCALE_3D) {
Vector3 s;
- default_anim->transform_track_interpolate(j, to, &p, &q, &s);
- new_anim->transform_track_insert_key(dtrack, to - from, p, q, s);
- }
- if (default_anim->track_get_type(j) == Animation::TYPE_VALUE) {
+ default_anim->scale_track_interpolate(j, to, &s);
+ new_anim->scale_track_insert_key(dtrack, to - from, s);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_VALUE) {
Variant var = default_anim->value_track_interpolate(j, to);
new_anim->track_insert_key(dtrack, to - from, var);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_BLEND_SHAPE) {
+ float interp;
+ default_anim->blend_shape_track_interpolate(j, to, &interp);
+ new_anim->blend_shape_track_insert_key(dtrack, to - from, interp);
}
}
}
@@ -897,20 +1094,35 @@ void ResourceImporterScene::_create_clips(AnimationPlayer *anim, const Array &p_
new_anim->add_track(default_anim->track_get_type(j));
dtrack = new_anim->get_track_count() - 1;
new_anim->track_set_path(dtrack, default_anim->track_get_path(j));
- if (default_anim->track_get_type(j) == Animation::TYPE_TRANSFORM3D) {
- Quaternion q;
+ if (default_anim->track_get_type(j) == Animation::TYPE_POSITION_3D) {
Vector3 p;
+ default_anim->position_track_interpolate(j, from, &p);
+ new_anim->position_track_insert_key(dtrack, 0, p);
+ default_anim->position_track_interpolate(j, to, &p);
+ new_anim->position_track_insert_key(dtrack, to - from, p);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_ROTATION_3D) {
+ Quaternion r;
+ default_anim->rotation_track_interpolate(j, from, &r);
+ new_anim->rotation_track_insert_key(dtrack, 0, r);
+ default_anim->rotation_track_interpolate(j, to, &r);
+ new_anim->rotation_track_insert_key(dtrack, to - from, r);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_SCALE_3D) {
Vector3 s;
- default_anim->transform_track_interpolate(j, from, &p, &q, &s);
- new_anim->transform_track_insert_key(dtrack, 0, p, q, s);
- default_anim->transform_track_interpolate(j, to, &p, &q, &s);
- new_anim->transform_track_insert_key(dtrack, to - from, p, q, s);
- }
- if (default_anim->track_get_type(j) == Animation::TYPE_VALUE) {
+ default_anim->scale_track_interpolate(j, from, &s);
+ new_anim->scale_track_insert_key(dtrack, 0, s);
+ default_anim->scale_track_interpolate(j, to, &s);
+ new_anim->scale_track_insert_key(dtrack, to - from, s);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_VALUE) {
Variant var = default_anim->value_track_interpolate(j, from);
new_anim->track_insert_key(dtrack, 0, var);
Variant to_var = default_anim->value_track_interpolate(j, to);
new_anim->track_insert_key(dtrack, to - from, to_var);
+ } else if (default_anim->track_get_type(j) == Animation::TYPE_BLEND_SHAPE) {
+ float interp;
+ default_anim->blend_shape_track_interpolate(j, from, &interp);
+ new_anim->blend_shape_track_insert_key(dtrack, 0, interp);
+ default_anim->blend_shape_track_interpolate(j, to, &interp);
+ new_anim->blend_shape_track_insert_key(dtrack, to - from, interp);
}
}
}
@@ -1000,6 +1212,9 @@ void ResourceImporterScene::get_internal_import_options(InternalImportCategory p
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "optimizer/max_linear_error"), 0.05));
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "optimizer/max_angular_error"), 0.01));
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "optimizer/max_angle"), 22));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "import_tracks/position", PROPERTY_HINT_ENUM, "IfPresent,IfPresentForAll,Never"), 1));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "import_tracks/rotation", PROPERTY_HINT_ENUM, "IfPresent,IfPresentForAll,Never"), 1));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "import_tracks/scale", PROPERTY_HINT_ENUM, "IfPresent,IfPresentForAll,Never"), 1));
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "slices/amount", PROPERTY_HINT_RANGE, "0,256,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), 0));
for (int i = 0; i < 256; i++) {
@@ -1015,6 +1230,10 @@ void ResourceImporterScene::get_internal_import_options(InternalImportCategory p
default: {
}
}
+
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->get_internal_import_options(EditorScenePostImportPlugin::InternalImportCategory(p_category), r_options);
+ }
}
bool ResourceImporterScene::get_internal_option_visibility(InternalImportCategory p_category, const String &p_option, const Map<StringName, Variant> &p_options) const {
@@ -1117,6 +1336,13 @@ bool ResourceImporterScene::get_internal_option_visibility(InternalImportCategor
}
}
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ Variant ret = post_importer_plugins.write[i]->get_internal_option_visibility(EditorScenePostImportPlugin::InternalImportCategory(p_category), p_option, p_options);
+ if (ret.get_type() == Variant::BOOL) {
+ return ret;
+ }
+ }
+
return true;
}
@@ -1144,6 +1370,14 @@ bool ResourceImporterScene::get_internal_option_update_view_required(InternalImp
default: {
}
}
+
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ Variant ret = post_importer_plugins.write[i]->get_internal_option_update_view_required(EditorScenePostImportPlugin::InternalImportCategory(p_category), p_option, p_options);
+ if (ret.get_type() == Variant::BOOL) {
+ return ret;
+ }
+ }
+
return false;
}
@@ -1171,11 +1405,14 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "meshes/lightmap_texel_size", PROPERTY_HINT_RANGE, "0.001,100,0.001"), 0.1));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "skins/use_named_skins"), true));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/import"), true));
- r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/bake_reset_animation"), true));
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "animation/fps", PROPERTY_HINT_RANGE, "1,120,1"), 15));
r_options->push_back(ImportOption(PropertyInfo(Variant::STRING, "import_script/path", PROPERTY_HINT_FILE, script_ext_hint), ""));
r_options->push_back(ImportOption(PropertyInfo(Variant::DICTIONARY, "_subresources", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), Dictionary()));
+
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->get_import_options(r_options);
+ }
}
void ResourceImporterScene::_replace_owner(Node *p_node, Node *p_scene, Node *p_new_owner) {
@@ -1189,11 +1426,11 @@ void ResourceImporterScene::_replace_owner(Node *p_node, Node *p_scene, Node *p_
}
}
-Node *ResourceImporterScene::import_scene_from_other_importer(EditorSceneImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps) {
- Ref<EditorSceneImporter> importer;
+Node *ResourceImporterScene::import_scene_from_other_importer(EditorSceneFormatImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps) {
+ Ref<EditorSceneFormatImporter> importer;
String ext = p_path.get_extension().to_lower();
- for (Set<Ref<EditorSceneImporter>>::Element *E = importers.front(); E; E = E->next()) {
+ for (Set<Ref<EditorSceneFormatImporter>>::Element *E = importers.front(); E; E = E->next()) {
if (E->get().ptr() == p_exception) {
continue;
}
@@ -1219,11 +1456,11 @@ Node *ResourceImporterScene::import_scene_from_other_importer(EditorSceneImporte
return importer->import_scene(p_path, p_flags, p_bake_fps, &missing, &err);
}
-Ref<Animation> ResourceImporterScene::import_animation_from_other_importer(EditorSceneImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps) {
- Ref<EditorSceneImporter> importer;
+Ref<Animation> ResourceImporterScene::import_animation_from_other_importer(EditorSceneFormatImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps) {
+ Ref<EditorSceneFormatImporter> importer;
String ext = p_path.get_extension().to_lower();
- for (Set<Ref<EditorSceneImporter>>::Element *E = importers.front(); E; E = E->next()) {
+ for (Set<Ref<EditorSceneFormatImporter>>::Element *E = importers.front(); E; E = E->next()) {
if (E->get().ptr() == p_exception) {
continue;
}
@@ -1320,6 +1557,10 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_m
save_to_file = "";
}
}
+
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->internal_process(EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_MESH, nullptr, src_mesh_node, src_mesh_node->get_mesh(), mesh_settings);
+ }
}
if (generate_lods) {
@@ -1422,14 +1663,164 @@ void ResourceImporterScene::_add_shapes(Node *p_node, const Vector<Ref<Shape3D>>
}
}
+void ResourceImporterScene::_optimize_track_usage(AnimationPlayer *p_player, AnimationImportTracks *p_track_actions) {
+ List<StringName> anims;
+ p_player->get_animation_list(&anims);
+ Node *parent = p_player->get_parent();
+ ERR_FAIL_COND(parent == nullptr);
+ OrderedHashMap<NodePath, uint32_t> used_tracks[TRACK_CHANNEL_MAX];
+ bool tracks_to_add = false;
+ static const Animation::TrackType track_types[TRACK_CHANNEL_MAX] = { Animation::TYPE_POSITION_3D, Animation::TYPE_ROTATION_3D, Animation::TYPE_SCALE_3D, Animation::TYPE_BLEND_SHAPE };
+ for (const StringName &I : anims) {
+ Ref<Animation> anim = p_player->get_animation(I);
+ for (int i = 0; i < anim->get_track_count(); i++) {
+ for (int j = 0; j < TRACK_CHANNEL_MAX; j++) {
+ if (anim->track_get_type(i) != track_types[j]) {
+ continue;
+ }
+ switch (p_track_actions[j]) {
+ case ANIMATION_IMPORT_TRACKS_IF_PRESENT: {
+ // Do Nothing.
+ } break;
+ case ANIMATION_IMPORT_TRACKS_IF_PRESENT_FOR_ALL: {
+ used_tracks[j].insert(anim->track_get_path(i), 0);
+ tracks_to_add = true;
+ } break;
+ case ANIMATION_IMPORT_TRACKS_NEVER: {
+ anim->remove_track(i);
+ i--;
+ } break;
+ }
+ }
+ }
+ }
+
+ if (!tracks_to_add) {
+ return;
+ }
+
+ uint32_t pass = 0;
+ for (const StringName &I : anims) {
+ Ref<Animation> anim = p_player->get_animation(I);
+ for (int j = 0; j < TRACK_CHANNEL_MAX; j++) {
+ if (p_track_actions[j] != ANIMATION_IMPORT_TRACKS_IF_PRESENT_FOR_ALL) {
+ continue;
+ }
+
+ pass++;
+
+ for (int i = 0; i < anim->get_track_count(); i++) {
+ if (anim->track_get_type(i) != track_types[j]) {
+ continue;
+ }
+
+ NodePath path = anim->track_get_path(i);
+
+ ERR_CONTINUE(!used_tracks[j].has(path)); // Should never happen.
+
+ used_tracks[j][path] = pass;
+ }
+
+ for (OrderedHashMap<NodePath, uint32_t>::Element J = used_tracks[j].front(); J; J = J.next()) {
+ if (J.get() == pass) {
+ continue;
+ }
+
+ NodePath path = J.key();
+ Node *n = parent->get_node(path);
+
+ if (j == TRACK_CHANNEL_BLEND_SHAPE) {
+ MeshInstance3D *mi = Object::cast_to<MeshInstance3D>(n);
+ if (mi && path.get_subname_count() > 0) {
+ StringName bs = path.get_subname(0);
+ bool valid;
+ float value = mi->get(bs, &valid);
+ if (valid) {
+ int track_idx = anim->add_track(track_types[j]);
+ anim->track_set_path(track_idx, path);
+ anim->track_set_imported(track_idx, true);
+ anim->blend_shape_track_insert_key(track_idx, 0, value);
+ }
+ }
+
+ } else {
+ Skeleton3D *skel = Object::cast_to<Skeleton3D>(n);
+ Node3D *n3d = Object::cast_to<Node3D>(n);
+ Vector3 loc;
+ Quaternion rot;
+ Vector3 scale;
+ if (skel && path.get_subname_count() > 0) {
+ StringName bone = path.get_subname(0);
+ int bone_idx = skel->find_bone(bone);
+ if (bone_idx == -1) {
+ continue;
+ }
+ skel->get_bone_pose(bone_idx);
+ loc = skel->get_bone_pose_position(bone_idx);
+ rot = skel->get_bone_pose_rotation(bone_idx);
+ scale = skel->get_bone_pose_scale(bone_idx);
+ } else if (n3d) {
+ loc = n3d->get_position();
+ rot = n3d->get_transform().basis.get_rotation_quaternion();
+ scale = n3d->get_scale();
+ } else {
+ continue;
+ }
+
+ // Ensure insertion keeps tracks together and ordered by type (loc/rot/scale)
+ int insert_at_pos = -1;
+ for (int k = 0; k < anim->get_track_count(); k++) {
+ NodePath tpath = anim->track_get_path(k);
+
+ if (path == tpath) {
+ Animation::TrackType ttype = anim->track_get_type(k);
+ if (insert_at_pos == -1) {
+ // First insert, determine whether replacing or kicking back
+ if (track_types[j] < ttype) {
+ insert_at_pos = k;
+ break; // No point in continuing.
+ } else {
+ insert_at_pos = k + 1;
+ }
+ } else if (ttype < track_types[j]) {
+ // Kick back.
+ insert_at_pos = k + 1;
+ }
+ } else if (insert_at_pos >= 0) {
+ break;
+ }
+ }
+ int track_idx = anim->add_track(track_types[j], insert_at_pos);
+
+ anim->track_set_path(track_idx, path);
+ anim->track_set_imported(track_idx, true);
+ switch (j) {
+ case TRACK_CHANNEL_POSITION: {
+ anim->position_track_insert_key(track_idx, 0, loc);
+ } break;
+ case TRACK_CHANNEL_ROTATION: {
+ anim->rotation_track_insert_key(track_idx, 0, rot);
+ } break;
+ case TRACK_CHANNEL_SCALE: {
+ anim->scale_track_insert_key(track_idx, 0, scale);
+ } break;
+ default: {
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
Node *ResourceImporterScene::pre_import(const String &p_source_file) {
- Ref<EditorSceneImporter> importer;
+ Ref<EditorSceneFormatImporter> importer;
String ext = p_source_file.get_extension().to_lower();
EditorProgress progress("pre-import", TTR("Pre-Import Scene"), 0);
progress.step(TTR("Importing Scene..."), 0);
- for (Set<Ref<EditorSceneImporter>>::Element *E = importers.front(); E; E = E->next()) {
+ for (Set<Ref<EditorSceneFormatImporter>>::Element *E = importers.front(); E; E = E->next()) {
List<String> extensions;
E->get()->get_extensions(&extensions);
@@ -1448,7 +1839,7 @@ Node *ResourceImporterScene::pre_import(const String &p_source_file) {
ERR_FAIL_COND_V(!importer.is_valid(), nullptr);
Error err = OK;
- Node *scene = importer->import_scene(p_source_file, EditorSceneImporter::IMPORT_ANIMATION | EditorSceneImporter::IMPORT_GENERATE_TANGENT_ARRAYS, 15, nullptr, &err);
+ Node *scene = importer->import_scene(p_source_file, EditorSceneFormatImporter::IMPORT_ANIMATION | EditorSceneFormatImporter::IMPORT_GENERATE_TANGENT_ARRAYS, 15, nullptr, &err);
if (!scene || err != OK) {
return nullptr;
}
@@ -1463,13 +1854,13 @@ Node *ResourceImporterScene::pre_import(const String &p_source_file) {
Error ResourceImporterScene::import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
const String &src_path = p_source_file;
- Ref<EditorSceneImporter> importer;
+ Ref<EditorSceneFormatImporter> importer;
String ext = src_path.get_extension().to_lower();
EditorProgress progress("import", TTR("Import Scene"), 104);
progress.step(TTR("Importing Scene..."), 0);
- for (Set<Ref<EditorSceneImporter>>::Element *E = importers.front(); E; E = E->next()) {
+ for (Set<Ref<EditorSceneFormatImporter>>::Element *E = importers.front(); E; E = E->next()) {
List<String> extensions;
E->get()->get_extensions(&extensions);
@@ -1492,16 +1883,16 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
int import_flags = 0;
if (bool(p_options["animation/import"])) {
- import_flags |= EditorSceneImporter::IMPORT_ANIMATION;
+ import_flags |= EditorSceneFormatImporter::IMPORT_ANIMATION;
}
if (bool(p_options["skins/use_named_skins"])) {
- import_flags |= EditorSceneImporter::IMPORT_USE_NAMED_SKIN_BINDS;
+ import_flags |= EditorSceneFormatImporter::IMPORT_USE_NAMED_SKIN_BINDS;
}
bool ensure_tangents = p_options["meshes/ensure_tangents"];
if (ensure_tangents) {
- import_flags |= EditorSceneImporter::IMPORT_GENERATE_TANGENT_ARRAYS;
+ import_flags |= EditorSceneFormatImporter::IMPORT_GENERATE_TANGENT_ARRAYS;
}
Error err = OK;
@@ -1532,13 +1923,13 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
Map<Ref<ImporterMesh>, Vector<Ref<Shape3D>>> collision_map;
_pre_fix_node(scene, scene, collision_map);
- _post_fix_node(scene, scene, collision_map, scanned_meshes, node_data, material_data, animation_data, fps);
- bool use_bake_reset_animation = p_options["animation/bake_reset_animation"];
- if (use_bake_reset_animation) {
- BakeReset bake_reset;
- bake_reset._bake_animation_pose(scene, "RESET");
+
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->pre_process(scene, p_options);
}
+ _post_fix_node(scene, scene, collision_map, scanned_meshes, node_data, material_data, animation_data, fps);
+
String root_type = p_options["nodes/root_type"];
root_type = root_type.split(" ")[0]; // full root_type is "ClassName (filename.gd)" for a script global class.
@@ -1640,6 +2031,10 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
}
}
+ for (int i = 0; i < post_importer_plugins.size(); i++) {
+ post_importer_plugins.write[i]->post_process(scene, p_options);
+ }
+
progress.step(TTR("Saving..."), 104);
Ref<PackedScene> packer = memnew(PackedScene);
@@ -1671,15 +2066,15 @@ ResourceImporterScene::ResourceImporterScene() {
///////////////////////////////////////
-uint32_t EditorSceneImporterESCN::get_import_flags() const {
+uint32_t EditorSceneFormatImporterESCN::get_import_flags() const {
return IMPORT_SCENE;
}
-void EditorSceneImporterESCN::get_extensions(List<String> *r_extensions) const {
+void EditorSceneFormatImporterESCN::get_extensions(List<String> *r_extensions) const {
r_extensions->push_back("escn");
}
-Node *EditorSceneImporterESCN::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err) {
+Node *EditorSceneFormatImporterESCN::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err) {
Error error;
Ref<PackedScene> ps = ResourceFormatLoaderText::singleton->load(p_path, p_path, &error);
ERR_FAIL_COND_V_MSG(!ps.is_valid(), nullptr, "Cannot load scene as text resource from path '" + p_path + "'.");
@@ -1690,6 +2085,6 @@ Node *EditorSceneImporterESCN::import_scene(const String &p_path, uint32_t p_fla
return scene;
}
-Ref<Animation> EditorSceneImporterESCN::import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) {
+Ref<Animation> EditorSceneFormatImporterESCN::import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) {
ERR_FAIL_V(Ref<Animation>());
}
diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h
index 2a67fa9aae..e1e7046be5 100644
--- a/editor/import/resource_importer_scene.h
+++ b/editor/import/resource_importer_scene.h
@@ -42,8 +42,8 @@ class Material;
class AnimationPlayer;
class ImporterMesh;
-class EditorSceneImporter : public RefCounted {
- GDCLASS(EditorSceneImporter, RefCounted);
+class EditorSceneFormatImporter : public RefCounted {
+ GDCLASS(EditorSceneFormatImporter, RefCounted);
protected:
static void _bind_methods();
@@ -70,7 +70,7 @@ public:
virtual Node *import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err = nullptr);
virtual Ref<Animation> import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps);
- EditorSceneImporter() {}
+ EditorSceneFormatImporter() {}
};
class EditorScenePostImport : public RefCounted {
@@ -90,10 +90,64 @@ public:
EditorScenePostImport();
};
+class EditorScenePostImportPlugin : public RefCounted {
+ GDCLASS(EditorScenePostImportPlugin, RefCounted);
+
+public:
+ enum InternalImportCategory {
+ INTERNAL_IMPORT_CATEGORY_NODE,
+ INTERNAL_IMPORT_CATEGORY_MESH_3D_NODE,
+ INTERNAL_IMPORT_CATEGORY_MESH,
+ INTERNAL_IMPORT_CATEGORY_MATERIAL,
+ INTERNAL_IMPORT_CATEGORY_ANIMATION,
+ INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE,
+ INTERNAL_IMPORT_CATEGORY_MAX
+ };
+
+private:
+ mutable const Map<StringName, Variant> *current_options = nullptr;
+ mutable const Dictionary *current_options_dict = nullptr;
+ List<ResourceImporter::ImportOption> *current_option_list = nullptr;
+ InternalImportCategory current_category = INTERNAL_IMPORT_CATEGORY_MAX;
+
+protected:
+ GDVIRTUAL1(_get_internal_import_options, int)
+ GDVIRTUAL2RC(Variant, _get_internal_option_visibility, int, String)
+ GDVIRTUAL2RC(Variant, _get_internal_option_update_view_required, int, String)
+ GDVIRTUAL4(_internal_process, int, Node *, Node *, RES)
+ GDVIRTUAL0(_get_import_options)
+ GDVIRTUAL1RC(Variant, _get_option_visibility, String)
+ GDVIRTUAL1(_pre_process, Node *)
+ GDVIRTUAL1(_post_process, Node *)
+
+ static void _bind_methods();
+
+public:
+ Variant get_option_value(const StringName &p_name) const;
+ void add_import_option(const String &p_name, Variant p_default_value);
+ void add_import_option_advanced(Variant::Type p_type, const String &p_name, Variant p_default_value, PropertyHint p_hint = PROPERTY_HINT_NONE, const String &p_hint_string = String(), int p_usage_flags = PROPERTY_USAGE_DEFAULT);
+
+ virtual void get_internal_import_options(InternalImportCategory p_category, List<ResourceImporter::ImportOption> *r_options);
+ virtual Variant get_internal_option_visibility(InternalImportCategory p_category, const String &p_option, const Map<StringName, Variant> &p_options) const;
+ virtual Variant get_internal_option_update_view_required(InternalImportCategory p_category, const String &p_option, const Map<StringName, Variant> &p_options) const;
+
+ virtual void internal_process(InternalImportCategory p_category, Node *p_base_scene, Node *p_node, RES p_resource, const Dictionary &p_options);
+
+ virtual void get_import_options(List<ResourceImporter::ImportOption> *r_options);
+ virtual Variant get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const;
+
+ virtual void pre_process(Node *p_scene, const Map<StringName, Variant> &p_options);
+ virtual void post_process(Node *p_scene, const Map<StringName, Variant> &p_options);
+
+ EditorScenePostImportPlugin() {}
+};
+
+VARIANT_ENUM_CAST(EditorScenePostImportPlugin::InternalImportCategory)
+
class ResourceImporterScene : public ResourceImporter {
GDCLASS(ResourceImporterScene, ResourceImporter);
- Set<Ref<EditorSceneImporter>> importers;
+ Set<Ref<EditorSceneFormatImporter>> importers;
static ResourceImporterScene *singleton;
@@ -144,13 +198,33 @@ class ResourceImporterScene : public ResourceImporter {
void _generate_meshes(Node *p_node, const Dictionary &p_mesh_data, bool p_generate_lods, bool p_create_shadow_meshes, LightBakeMode p_light_bake_mode, float p_lightmap_texel_size, const Vector<uint8_t> &p_src_lightmap_cache, Vector<Vector<uint8_t>> &r_lightmap_caches);
void _add_shapes(Node *p_node, const Vector<Ref<Shape3D>> &p_shapes);
+ enum AnimationImportTracks {
+ ANIMATION_IMPORT_TRACKS_IF_PRESENT,
+ ANIMATION_IMPORT_TRACKS_IF_PRESENT_FOR_ALL,
+ ANIMATION_IMPORT_TRACKS_NEVER,
+ };
+ enum TrackChannel {
+ TRACK_CHANNEL_POSITION,
+ TRACK_CHANNEL_ROTATION,
+ TRACK_CHANNEL_SCALE,
+ TRACK_CHANNEL_BLEND_SHAPE,
+ TRACK_CHANNEL_MAX
+ };
+
+ void _optimize_track_usage(AnimationPlayer *p_player, AnimationImportTracks *p_track_actions);
+
+ mutable Vector<Ref<EditorScenePostImportPlugin>> post_importer_plugins;
+
public:
static ResourceImporterScene *get_singleton() { return singleton; }
- const Set<Ref<EditorSceneImporter>> &get_importers() const { return importers; }
+ void add_post_importer_plugin(const Ref<EditorScenePostImportPlugin> &p_plugin) { post_importer_plugins.push_back(p_plugin); }
+ void remove_post_importer_plugin(const Ref<EditorScenePostImportPlugin> &p_plugin) { post_importer_plugins.erase(p_plugin); }
+
+ const Set<Ref<EditorSceneFormatImporter>> &get_importers() const { return importers; }
- void add_importer(Ref<EditorSceneImporter> p_importer) { importers.insert(p_importer); }
- void remove_importer(Ref<EditorSceneImporter> p_importer) { importers.erase(p_importer); }
+ void add_importer(Ref<EditorSceneFormatImporter> p_importer) { importers.insert(p_importer); }
+ void remove_importer(Ref<EditorSceneFormatImporter> p_importer) { importers.erase(p_importer); }
virtual String get_importer_name() const override;
virtual String get_visible_name() const override;
@@ -163,13 +237,13 @@ public:
virtual String get_preset_name(int p_idx) const override;
enum InternalImportCategory {
- INTERNAL_IMPORT_CATEGORY_NODE,
- INTERNAL_IMPORT_CATEGORY_MESH_3D_NODE,
- INTERNAL_IMPORT_CATEGORY_MESH,
- INTERNAL_IMPORT_CATEGORY_MATERIAL,
- INTERNAL_IMPORT_CATEGORY_ANIMATION,
- INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE,
- INTERNAL_IMPORT_CATEGORY_MAX
+ INTERNAL_IMPORT_CATEGORY_NODE = EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_NODE,
+ INTERNAL_IMPORT_CATEGORY_MESH_3D_NODE = EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_MESH_3D_NODE,
+ INTERNAL_IMPORT_CATEGORY_MESH = EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_MESH,
+ INTERNAL_IMPORT_CATEGORY_MATERIAL = EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_MATERIAL,
+ INTERNAL_IMPORT_CATEGORY_ANIMATION = EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_ANIMATION,
+ INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE = EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE,
+ INTERNAL_IMPORT_CATEGORY_MAX = EditorScenePostImportPlugin::INTERNAL_IMPORT_CATEGORY_MAX
};
void get_internal_import_options(InternalImportCategory p_category, List<ImportOption> *r_options) const;
@@ -191,8 +265,8 @@ public:
Node *pre_import(const String &p_source_file);
virtual Error import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) override;
- Node *import_scene_from_other_importer(EditorSceneImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps);
- Ref<Animation> import_animation_from_other_importer(EditorSceneImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps);
+ Node *import_scene_from_other_importer(EditorSceneFormatImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps);
+ Ref<Animation> import_animation_from_other_importer(EditorSceneFormatImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps);
virtual bool has_advanced_options() const override;
virtual void show_advanced_options(const String &p_path) override;
@@ -208,8 +282,8 @@ public:
static Transform3D get_collision_shapes_transform(const M &p_options);
};
-class EditorSceneImporterESCN : public EditorSceneImporter {
- GDCLASS(EditorSceneImporterESCN, EditorSceneImporter);
+class EditorSceneFormatImporterESCN : public EditorSceneFormatImporter {
+ GDCLASS(EditorSceneFormatImporterESCN, EditorSceneFormatImporter);
public:
virtual uint32_t get_import_flags() const override;
diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp
index 59d0b92ba0..5622d0b145 100644
--- a/editor/inspector_dock.cpp
+++ b/editor/inspector_dock.cpp
@@ -391,7 +391,9 @@ void InspectorDock::_transform_keyed(Object *sp, const String &p_sub, const Tran
if (!s) {
return;
}
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(s, p_sub, p_key);
+ AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_POSITION_3D, p_key.origin);
+ AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_ROTATION_3D, p_key.basis.get_rotation_quaternion());
+ AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_SCALE_3D, p_key.basis.get_scale());
}
void InspectorDock::_warning_pressed() {
diff --git a/editor/plugin_config_dialog.cpp b/editor/plugin_config_dialog.cpp
index a3ff312497..91ca1465df 100644
--- a/editor/plugin_config_dialog.cpp
+++ b/editor/plugin_config_dialog.cpp
@@ -124,6 +124,10 @@ void PluginConfigDialog::_on_cancelled() {
_clear_fields();
}
+void PluginConfigDialog::_on_language_changed(const int) {
+ _on_required_text_changed(String());
+}
+
void PluginConfigDialog::_on_required_text_changed(const String &) {
int lang_idx = script_option_edit->get_selected();
String ext = ScriptServer::get_language(lang_idx)->get_extension();
@@ -161,6 +165,9 @@ void PluginConfigDialog::_on_required_text_changed(const String &) {
is_valid = false;
subfolder_validation->set_texture(invalid_icon);
subfolder_validation->set_tooltip(TTR("Subfolder cannot be blank."));
+ } else if (!subfolder_edit->get_text().is_valid_filename()) {
+ subfolder_validation->set_texture(invalid_icon);
+ subfolder_validation->set_tooltip(TTR("Subfolder name is not a valid folder name."));
} else {
DirAccessRef dir = DirAccess::create(DirAccess::ACCESS_RESOURCES);
String path = "res://addons/" + subfolder_edit->get_text();
@@ -330,6 +337,7 @@ PluginConfigDialog::PluginConfigDialog() {
}
script_option_edit->select(default_lang);
grid->add_child(script_option_edit);
+ script_option_edit->connect("item_selected", callable_mp(this, &PluginConfigDialog::_on_language_changed));
// Plugin Script Name
Label *script_lb = memnew(Label);
diff --git a/editor/plugin_config_dialog.h b/editor/plugin_config_dialog.h
index ad5b96735f..45fcdb6b6e 100644
--- a/editor/plugin_config_dialog.h
+++ b/editor/plugin_config_dialog.h
@@ -59,6 +59,7 @@ class PluginConfigDialog : public ConfirmationDialog {
void _clear_fields();
void _on_confirmed();
void _on_cancelled();
+ void _on_language_changed(const int p_language);
void _on_required_text_changed(const String &p_text);
static String _to_absolute_plugin_path(const String &p_plugin_name);
diff --git a/editor/plugins/abstract_polygon_2d_editor.h b/editor/plugins/abstract_polygon_2d_editor.h
index 4f9adfff25..5fea8b75d6 100644
--- a/editor/plugins/abstract_polygon_2d_editor.h
+++ b/editor/plugins/abstract_polygon_2d_editor.h
@@ -106,7 +106,6 @@ protected:
void _wip_changed();
void _wip_close();
void _wip_cancel();
- bool _delete_point(const Vector2 &p_gpoint);
void _notification(int p_what);
void _node_removed(Node *p_node);
diff --git a/editor/plugins/animation_blend_space_1d_editor.h b/editor/plugins/animation_blend_space_1d_editor.h
index fe98a91ab3..503e066894 100644
--- a/editor/plugins/animation_blend_space_1d_editor.h
+++ b/editor/plugins/animation_blend_space_1d_editor.h
@@ -109,8 +109,6 @@ class AnimationNodeBlendSpace1DEditor : public AnimationTreeNodeEditorPlugin {
void _edit_point_pos(double);
void _open_editor();
- void _goto_parent();
-
EditorFileDialog *open_file;
Ref<AnimationNode> file_loaded;
void _file_opened(const String &p_file);
diff --git a/editor/plugins/animation_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h
index eb8db2eaba..26bcff891d 100644
--- a/editor/plugins/animation_player_editor_plugin.h
+++ b/editor/plugins/animation_player_editor_plugin.h
@@ -187,7 +187,6 @@ class AnimationPlayerEditor : public VBoxContainer {
void _scale_changed(const String &p_scale);
void _save_animation(String p_file);
void _load_animations(Vector<String> p_files);
- void _seek_frame_changed(const String &p_frame);
void _seek_value_changed(float p_value, bool p_set = false, bool p_timeline_only = false);
void _blend_editor_next_changed(const int p_idx);
@@ -217,7 +216,6 @@ class AnimationPlayerEditor : public VBoxContainer {
void _pin_pressed();
- AnimationPlayerEditor();
~AnimationPlayerEditor();
protected:
diff --git a/editor/plugins/asset_library_editor_plugin.h b/editor/plugins/asset_library_editor_plugin.h
index 286546f962..5fbf2833b2 100644
--- a/editor/plugins/asset_library_editor_plugin.h
+++ b/editor/plugins/asset_library_editor_plugin.h
@@ -285,7 +285,6 @@ class EditorAssetLibrary : public PanelContainer {
void _search_text_submitted(const String &p_text = "");
void _api_request(const String &p_request, RequestType p_request_type, const String &p_arguments = "");
void _http_request_completed(int p_status, int p_code, const PackedStringArray &headers, const PackedByteArray &p_data);
- void _http_download_completed(int p_status, int p_code, const PackedStringArray &headers, const PackedByteArray &p_data);
void _filter_debounce_timer_timeout();
void _repository_changed(int p_repository_id);
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index ef872bcead..8935f715e6 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -1174,7 +1174,6 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo
if (!panning) {
if (b->is_pressed() &&
(b->get_button_index() == MOUSE_BUTTON_MIDDLE ||
- b->get_button_index() == MOUSE_BUTTON_RIGHT ||
(b->get_button_index() == MOUSE_BUTTON_LEFT && tool == TOOL_PAN) ||
(b->get_button_index() == MOUSE_BUTTON_LEFT && !EditorSettings::get_singleton()->get("editors/2d/simple_panning") && pan_pressed))) {
// Pan the viewport
@@ -1232,8 +1231,9 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo
}
}
- if (is_pan_key) {
+ if (is_pan_key && pan_pressed != k->is_pressed()) {
pan_pressed = k->is_pressed();
+ _update_cursor();
}
}
@@ -2615,7 +2615,19 @@ void CanvasItemEditor::_update_cursor() {
c = CURSOR_HSIZE;
}
- viewport->set_default_cursor_shape(c);
+ if (pan_pressed) {
+ c = CURSOR_DRAG;
+ }
+
+ if (c != viewport->get_default_cursor_shape()) {
+ viewport->set_default_cursor_shape(c);
+
+ // Force refresh cursor if it's over the viewport.
+ if (viewport->get_global_rect().has_point(get_global_mouse_position())) {
+ DisplayServer::CursorShape ds_cursor_shape = (DisplayServer::CursorShape)viewport->get_default_cursor_shape();
+ DisplayServer::get_singleton()->cursor_set_shape(ds_cursor_shape);
+ }
+ }
}
void CanvasItemEditor::_draw_text_at_position(Point2 p_position, String p_string, Side p_side) {
@@ -4254,10 +4266,6 @@ void CanvasItemEditor::_button_tool_select(int p_index) {
viewport->update();
_update_cursor();
-
- // Request immediate refresh of cursor when using hot-keys to switch between tools
- DisplayServer::CursorShape ds_cursor_shape = (DisplayServer::CursorShape)viewport->get_default_cursor_shape();
- DisplayServer::get_singleton()->cursor_set_shape(ds_cursor_shape);
}
void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation, bool p_scale, bool p_on_existing) {
@@ -5384,7 +5392,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
pan_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_button_tool_select), make_binds(TOOL_PAN));
pan_button->set_shortcut(ED_SHORTCUT("canvas_item_editor/pan_mode", TTR("Pan Mode"), KEY_G));
pan_button->set_shortcut_context(this);
- pan_button->set_tooltip(TTR("Pan Mode"));
+ pan_button->set_tooltip(TTR("You can also use Pan View shortcut (Space by default) to pan in any mode."));
ruler_button = memnew(Button);
ruler_button->set_flat(true);
diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h
index 1965efbf30..286771ee08 100644
--- a/editor/plugins/canvas_item_editor_plugin.h
+++ b/editor/plugins/canvas_item_editor_plugin.h
@@ -421,8 +421,6 @@ private:
CanvasItem *ref_item;
- void _add_canvas_item(CanvasItem *p_canvas_item);
-
void _save_canvas_item_state(List<CanvasItem *> p_canvas_items, bool save_bones = false);
void _restore_canvas_item_state(List<CanvasItem *> p_canvas_items, bool restore_bones = false);
void _commit_canvas_item_state(List<CanvasItem *> p_canvas_items, String action_name, bool commit_bones = false);
@@ -434,7 +432,6 @@ private:
bool updating_scroll;
void _update_scroll(real_t);
void _update_scrollbars();
- void _append_canvas_item(CanvasItem *p_item);
void _snap_changed();
void _selection_result_pressed(int);
void _selection_menu_hide();
@@ -519,7 +516,6 @@ private:
const Node *p_current);
void _set_anchors_preset(Control::LayoutPreset p_preset);
- void _set_offsets_preset(Control::LayoutPreset p_preset);
void _set_anchors_and_offsets_preset(Control::LayoutPreset p_preset);
void _set_anchors_and_offsets_to_keep_ratio();
@@ -551,15 +547,9 @@ protected:
void _notification(int p_what);
static void _bind_methods();
- void end_drag();
- void box_selection_start(Point2 &click);
- bool box_selection_end();
HBoxContainer *get_panel_hb() { return hb; }
- template <class P, class C>
- void space_selected_items();
-
static CanvasItemEditor *singleton;
public:
diff --git a/editor/plugins/collision_polygon_3d_editor_plugin.cpp b/editor/plugins/collision_polygon_3d_editor_plugin.cpp
index 1ee834a974..53314db1e9 100644
--- a/editor/plugins/collision_polygon_3d_editor_plugin.cpp
+++ b/editor/plugins/collision_polygon_3d_editor_plugin.cpp
@@ -112,7 +112,7 @@ EditorPlugin::AfterGUIInput CollisionPolygon3DEditor::forward_spatial_gui_input(
Transform3D gi = gt.affine_inverse();
float depth = _get_depth() * 0.5;
Vector3 n = gt.basis.get_axis(2).normalized();
- Plane p(gt.origin + n * depth, n);
+ Plane p(n, gt.origin + n * depth);
Ref<InputEventMouseButton> mb = p_event;
diff --git a/editor/plugins/editor_preview_plugins.h b/editor/plugins/editor_preview_plugins.h
index 6e8b9a34cf..091feae5fb 100644
--- a/editor/plugins/editor_preview_plugins.h
+++ b/editor/plugins/editor_preview_plugins.h
@@ -173,4 +173,22 @@ public:
EditorFontPreviewPlugin();
~EditorFontPreviewPlugin();
};
+
+class EditorTileMapPatternPreviewPlugin : public EditorResourcePreviewGenerator {
+ GDCLASS(EditorTileMapPatternPreviewPlugin, EditorResourcePreviewGenerator);
+
+ mutable SafeFlag preview_done;
+
+ void _preview_done(const Variant &p_udata);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual bool handles(const String &p_type) const override;
+ virtual Ref<Texture2D> generate(const RES &p_from, const Size2 &p_size) const override;
+
+ EditorTileMapPatternPreviewPlugin();
+ ~EditorTileMapPatternPreviewPlugin();
+};
#endif // EDITORPREVIEWPLUGINS_H
diff --git a/editor/plugins/node_3d_editor_gizmos.cpp b/editor/plugins/node_3d_editor_gizmos.cpp
index 4d2fc29fe0..b28f3e134c 100644
--- a/editor/plugins/node_3d_editor_gizmos.cpp
+++ b/editor/plugins/node_3d_editor_gizmos.cpp
@@ -682,7 +682,7 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point,
}
if (collision_segments.size()) {
- Plane camp(p_camera->get_transform().origin, (-p_camera->get_transform().basis.get_axis(2)).normalized());
+ Plane camp(-p_camera->get_transform().basis.get_axis(2).normalized(), p_camera->get_transform().origin);
int vc = collision_segments.size();
const Vector3 *vptr = collision_segments.ptr();
@@ -1313,7 +1313,7 @@ void Light3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id,
light->set_param(Light3D::PARAM_RANGE, d);
} else if (Object::cast_to<OmniLight3D>(light)) {
- Plane cp = Plane(gt.origin, p_camera->get_transform().basis.get_axis(2));
+ Plane cp = Plane(p_camera->get_transform().basis.get_axis(2), gt.origin);
Vector3 inters;
if (cp.intersects_ray(ray_from, ray_dir, &inters)) {
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index ea6ef8ab84..e8086e2fea 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -252,6 +252,14 @@ void ViewportRotationControl::set_viewport(Node3DEditorViewport *p_viewport) {
viewport = p_viewport;
}
+void Node3DEditorViewport::_view_settings_confirmed(real_t p_interp_delta) {
+ // Set FOV override multiplier back to the default, so that the FOV
+ // setting specified in the View menu is correctly applied.
+ cursor.fov_scale = 1.0;
+
+ _update_camera(p_interp_delta);
+}
+
void Node3DEditorViewport::_update_camera(real_t p_interp_delta) {
bool is_orthogonal = camera->get_projection() == Camera3D::PROJECTION_ORTHOGONAL;
@@ -318,6 +326,8 @@ void Node3DEditorViewport::_update_camera(real_t p_interp_delta) {
equal = false;
} else if (!Math::is_equal_approx(old_camera_cursor.distance, camera_cursor.distance, tolerance)) {
equal = false;
+ } else if (!Math::is_equal_approx(old_camera_cursor.fov_scale, camera_cursor.fov_scale, tolerance)) {
+ equal = false;
}
if (!equal || p_interp_delta == 0 || is_orthogonal != orthogonal) {
@@ -383,7 +393,7 @@ float Node3DEditorViewport::get_zfar() const {
}
float Node3DEditorViewport::get_fov() const {
- return CLAMP(spatial_editor->get_fov(), MIN_FOV, MAX_FOV);
+ return CLAMP(spatial_editor->get_fov() * cursor.fov_scale, MIN_FOV, MAX_FOV);
}
Transform3D Node3DEditorViewport::_get_camera_transform() const {
@@ -651,13 +661,13 @@ void Node3DEditorViewport::_select_region() {
Vector3 a = _get_screen_to_space(box[i]);
Vector3 b = _get_screen_to_space(box[(i + 1) % 4]);
if (orthogonal) {
- frustum.push_back(Plane(a, (a - b).normalized()));
+ frustum.push_back(Plane((a - b).normalized(), a));
} else {
frustum.push_back(Plane(a, b, cam_pos));
}
}
- Plane near(cam_pos, -_get_camera_normal());
+ Plane near(-_get_camera_normal(), cam_pos);
near.d -= get_znear();
frustum.push_back(near);
@@ -972,7 +982,7 @@ bool Node3DEditorViewport::_transform_gizmo_select(const Vector2 &p_screenpos, b
const Vector3 grabber_pos = gt.origin + (ivec2 + ivec3) * gizmo_scale * (GIZMO_PLANE_SIZE + GIZMO_PLANE_DST * 0.6667);
Vector3 r;
- Plane plane(gt.origin, gt.basis.get_axis(i).normalized());
+ Plane plane(gt.basis.get_axis(i).normalized(), gt.origin);
if (plane.intersects_ray(ray_pos, ray, &r)) {
const real_t dist = r.distance_to(grabber_pos);
@@ -1010,7 +1020,7 @@ bool Node3DEditorViewport::_transform_gizmo_select(const Vector2 &p_screenpos, b
float col_d = 1e20;
for (int i = 0; i < 3; i++) {
- Plane plane(gt.origin, gt.basis.get_axis(i).normalized());
+ Plane plane(gt.basis.get_axis(i).normalized(), gt.origin);
Vector3 r;
if (!plane.intersects_ray(ray_pos, ray, &r)) {
continue;
@@ -1076,7 +1086,7 @@ bool Node3DEditorViewport::_transform_gizmo_select(const Vector2 &p_screenpos, b
const Vector3 grabber_pos = gt.origin + (ivec2 + ivec3) * gizmo_scale * (GIZMO_PLANE_SIZE + GIZMO_PLANE_DST * 0.6667);
Vector3 r;
- Plane plane(gt.origin, gt.basis.get_axis(i).normalized());
+ Plane plane(gt.basis.get_axis(i).normalized(), gt.origin);
if (plane.intersects_ray(ray_pos, ray, &r)) {
const real_t dist = r.distance_to(grabber_pos);
@@ -1327,17 +1337,25 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
const real_t zoom_factor = 1 + (ZOOM_FREELOOK_MULTIPLIER - 1) * b->get_factor();
switch (b->get_button_index()) {
case MOUSE_BUTTON_WHEEL_UP: {
- if (is_freelook_active()) {
- scale_freelook_speed(zoom_factor);
+ if (b->is_alt_pressed()) {
+ scale_fov(-0.05);
} else {
- scale_cursor_distance(1.0 / zoom_factor);
+ if (is_freelook_active()) {
+ scale_freelook_speed(zoom_factor);
+ } else {
+ scale_cursor_distance(1.0 / zoom_factor);
+ }
}
} break;
case MOUSE_BUTTON_WHEEL_DOWN: {
- if (is_freelook_active()) {
- scale_freelook_speed(1.0 / zoom_factor);
+ if (b->is_alt_pressed()) {
+ scale_fov(0.05);
} else {
- scale_cursor_distance(zoom_factor);
+ if (is_freelook_active()) {
+ scale_freelook_speed(1.0 / zoom_factor);
+ } else {
+ scale_cursor_distance(zoom_factor);
+ }
}
} break;
case MOUSE_BUTTON_RIGHT: {
@@ -1761,33 +1779,33 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
switch (_edit.plane) {
case TRANSFORM_VIEW:
motion_mask = Vector3(0, 0, 0);
- plane = Plane(_edit.center, _get_camera_normal());
+ plane = Plane(_get_camera_normal(), _edit.center);
break;
case TRANSFORM_X_AXIS:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(0);
- plane = Plane(_edit.center, motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized());
+ plane = Plane(motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized(), _edit.center);
break;
case TRANSFORM_Y_AXIS:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(1);
- plane = Plane(_edit.center, motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized());
+ plane = Plane(motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized(), _edit.center);
break;
case TRANSFORM_Z_AXIS:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(2);
- plane = Plane(_edit.center, motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized());
+ plane = Plane(motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized(), _edit.center);
break;
case TRANSFORM_YZ:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(2) + spatial_editor->get_gizmo_transform().basis.get_axis(1);
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(0));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(0), _edit.center);
plane_mv = true;
break;
case TRANSFORM_XZ:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(2) + spatial_editor->get_gizmo_transform().basis.get_axis(0);
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(1));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(1), _edit.center);
plane_mv = true;
break;
case TRANSFORM_XY:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(0) + spatial_editor->get_gizmo_transform().basis.get_axis(1);
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(2));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(2), _edit.center);
plane_mv = true;
break;
}
@@ -1882,30 +1900,30 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
switch (_edit.plane) {
case TRANSFORM_VIEW:
- plane = Plane(_edit.center, _get_camera_normal());
+ plane = Plane(_get_camera_normal(), _edit.center);
break;
case TRANSFORM_X_AXIS:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(0);
- plane = Plane(_edit.center, motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized());
+ plane = Plane(motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized(), _edit.center);
break;
case TRANSFORM_Y_AXIS:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(1);
- plane = Plane(_edit.center, motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized());
+ plane = Plane(motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized(), _edit.center);
break;
case TRANSFORM_Z_AXIS:
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(2);
- plane = Plane(_edit.center, motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized());
+ plane = Plane(motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized(), _edit.center);
break;
case TRANSFORM_YZ:
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(0));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(0), _edit.center);
plane_mv = true;
break;
case TRANSFORM_XZ:
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(1));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(1), _edit.center);
plane_mv = true;
break;
case TRANSFORM_XY:
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(2));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(2), _edit.center);
plane_mv = true;
break;
}
@@ -1978,18 +1996,18 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
switch (_edit.plane) {
case TRANSFORM_VIEW:
- plane = Plane(_edit.center, _get_camera_normal());
+ plane = Plane(_get_camera_normal(), _edit.center);
break;
case TRANSFORM_X_AXIS:
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(0));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(0), _edit.center);
axis = Vector3(1, 0, 0);
break;
case TRANSFORM_Y_AXIS:
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(1));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(1), _edit.center);
axis = Vector3(0, 1, 0);
break;
case TRANSFORM_Z_AXIS:
- plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(2));
+ plane = Plane(spatial_editor->get_gizmo_transform().basis.get_axis(2), _edit.center);
axis = Vector3(0, 0, 1);
break;
case TRANSFORM_YZ:
@@ -2226,6 +2244,31 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (ED_IS_SHORTCUT("spatial_editor/right_view", p_event)) {
_menu_option(VIEW_RIGHT);
}
+ if (ED_IS_SHORTCUT("spatial_editor/orbit_view_down", p_event)) {
+ cursor.x_rot -= Math_PI / 12.0;
+ view_type = VIEW_TYPE_USER;
+ _update_name();
+ }
+ if (ED_IS_SHORTCUT("spatial_editor/orbit_view_up", p_event)) {
+ cursor.x_rot += Math_PI / 12.0;
+ view_type = VIEW_TYPE_USER;
+ _update_name();
+ }
+ if (ED_IS_SHORTCUT("spatial_editor/orbit_view_right", p_event)) {
+ cursor.y_rot -= Math_PI / 12.0;
+ view_type = VIEW_TYPE_USER;
+ _update_name();
+ }
+ if (ED_IS_SHORTCUT("spatial_editor/orbit_view_left", p_event)) {
+ cursor.y_rot += Math_PI / 12.0;
+ view_type = VIEW_TYPE_USER;
+ _update_name();
+ }
+ if (ED_IS_SHORTCUT("spatial_editor/orbit_view_180", p_event)) {
+ cursor.y_rot += Math_PI;
+ view_type = VIEW_TYPE_USER;
+ _update_name();
+ }
if (ED_IS_SHORTCUT("spatial_editor/focus_origin", p_event)) {
_menu_option(VIEW_CENTER_TO_ORIGIN);
}
@@ -2280,6 +2323,18 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
emit_signal(SNAME("toggle_maximize_view"), this);
}
}
+
+ if (ED_IS_SHORTCUT("spatial_editor/decrease_fov", p_event)) {
+ scale_fov(-0.05);
+ }
+
+ if (ED_IS_SHORTCUT("spatial_editor/increase_fov", p_event)) {
+ scale_fov(0.05);
+ }
+
+ if (ED_IS_SHORTCUT("spatial_editor/reset_fov", p_event)) {
+ reset_fov();
+ }
}
// freelook uses most of the useful shortcuts, like save, so its ok
@@ -2447,6 +2502,16 @@ void Node3DEditorViewport::set_freelook_active(bool active_now) {
freelook_active = active_now;
}
+void Node3DEditorViewport::scale_fov(real_t p_fov_offset) {
+ cursor.fov_scale = CLAMP(cursor.fov_scale + p_fov_offset, 0.1, 2.5);
+ surface->update();
+}
+
+void Node3DEditorViewport::reset_fov() {
+ cursor.fov_scale = 1.0;
+ surface->update();
+}
+
void Node3DEditorViewport::scale_cursor_distance(real_t scale) {
real_t min_distance = MAX(camera->get_near() * 4, ZOOM_FREELOOK_MIN);
real_t max_distance = MIN(camera->get_far() / 4, ZOOM_FREELOOK_MAX);
@@ -3588,7 +3653,7 @@ void Node3DEditorViewport::update_transform_gizmo_view() {
const Vector3 camz = -camera_xform.get_basis().get_axis(2).normalized();
const Vector3 camy = -camera_xform.get_basis().get_axis(1).normalized();
- const Plane p(camera_xform.origin, camz);
+ const Plane p = Plane(camz, camera_xform.origin);
const real_t gizmo_d = MAX(Math::abs(p.distance_to(xform.origin)), CMP_EPSILON);
const real_t d0 = camera->unproject_position(camera_xform.origin + camz * gizmo_d).y;
const real_t d1 = camera->unproject_position(camera_xform.origin + camz * gizmo_d + camy).y;
@@ -3863,7 +3928,7 @@ void Node3DEditorViewport::assign_pending_data_pointers(Node3D *p_preview_node,
}
Vector3 Node3DEditorViewport::_get_instance_position(const Point2 &p_pos) const {
- const float MAX_DISTANCE = 10;
+ const float MAX_DISTANCE = 50.0;
Vector3 world_ray = _get_ray(p_pos);
Vector3 world_pos = _get_ray_pos(p_pos);
@@ -6171,7 +6236,7 @@ void Node3DEditor::_init_grid() {
if (orthogonal) {
camera_distance = camera->get_size() / 2.0;
Vector3 camera_direction = -camera->get_global_transform().get_basis().get_axis(2);
- Plane grid_plane = Plane(Vector3(), normal);
+ Plane grid_plane = Plane(normal);
Vector3 intersection;
if (grid_plane.intersects_ray(camera_position, camera_direction, &intersection)) {
camera_position = intersection;
@@ -6469,7 +6534,7 @@ void Node3DEditor::snap_selected_nodes_to_floor() {
// We add a bit of margin to the from position to avoid it from snapping
// when the spatial is already on a floor and there's another floor under
// it
- from = from + Vector3(0.0, 0.2, 0.0);
+ from = from + Vector3(0.0, 1, 0.0);
Dictionary d;
@@ -6485,7 +6550,7 @@ void Node3DEditor::snap_selected_nodes_to_floor() {
Array keys = snap_data.keys();
// The maximum height an object can travel to be snapped
- const float max_snap_height = 20.0;
+ const float max_snap_height = 500.0;
// Will be set to `true` if at least one node from the selection was successfully snapped
bool snapped_to_floor = false;
@@ -7306,6 +7371,11 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
ED_SHORTCUT("spatial_editor/front_view", TTR("Front View"), KEY_KP_1);
ED_SHORTCUT("spatial_editor/left_view", TTR("Left View"), KEY_MASK_ALT + KEY_KP_3);
ED_SHORTCUT("spatial_editor/right_view", TTR("Right View"), KEY_KP_3);
+ ED_SHORTCUT("spatial_editor/orbit_view_down", TTR("Orbit View Down"), KEY_KP_2);
+ ED_SHORTCUT("spatial_editor/orbit_view_left", TTR("Orbit View Left"), KEY_KP_4);
+ ED_SHORTCUT("spatial_editor/orbit_view_right", TTR("Orbit View Right"), KEY_KP_6);
+ ED_SHORTCUT("spatial_editor/orbit_view_up", TTR("Orbit View Up"), KEY_KP_8);
+ ED_SHORTCUT("spatial_editor/orbit_view_180", TTR("Orbit View 180"), KEY_KP_9);
ED_SHORTCUT("spatial_editor/switch_perspective_orthogonal", TTR("Switch Perspective/Orthogonal View"), KEY_KP_5);
ED_SHORTCUT("spatial_editor/insert_anim_key", TTR("Insert Animation Key"), KEY_K);
ED_SHORTCUT("spatial_editor/focus_origin", TTR("Focus Origin"), KEY_O);
@@ -7313,6 +7383,9 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
ED_SHORTCUT("spatial_editor/align_transform_with_view", TTR("Align Transform with View"), KEY_MASK_ALT + KEY_MASK_CMD + KEY_M);
ED_SHORTCUT("spatial_editor/align_rotation_with_view", TTR("Align Rotation with View"), KEY_MASK_ALT + KEY_MASK_CMD + KEY_F);
ED_SHORTCUT("spatial_editor/freelook_toggle", TTR("Toggle Freelook"), KEY_MASK_SHIFT + KEY_F);
+ ED_SHORTCUT("spatial_editor/decrease_fov", TTR("Decrease Field of View"), KEY_MASK_CMD + KEY_EQUAL); // Usually direct access key for `KEY_PLUS`.
+ ED_SHORTCUT("spatial_editor/increase_fov", TTR("Increase Field of View"), KEY_MASK_CMD + KEY_MINUS);
+ ED_SHORTCUT("spatial_editor/reset_fov", TTR("Reset Field of View to Default"), KEY_MASK_CMD + KEY_0);
PopupMenu *p;
@@ -7460,7 +7533,7 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
settings_vbc->add_margin_child(TTR("View Z-Far:"), settings_zfar);
for (uint32_t i = 0; i < VIEWPORTS_COUNT; ++i) {
- settings_dialog->connect("confirmed", callable_mp(viewports[i], &Node3DEditorViewport::_update_camera), varray(0.0));
+ settings_dialog->connect("confirmed", callable_mp(viewports[i], &Node3DEditorViewport::_view_settings_confirmed), varray(0.0));
}
/* XFORM DIALOG */
diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h
index 2d5aeaa981..e1318f52a8 100644
--- a/editor/plugins/node_3d_editor_plugin.h
+++ b/editor/plugins/node_3d_editor_plugin.h
@@ -315,7 +315,7 @@ private:
struct Cursor {
Vector3 pos;
- real_t x_rot, y_rot, distance;
+ real_t x_rot, y_rot, distance, fov_scale;
Vector3 eye_pos; // Used in freelook mode
bool region_select;
Point2 region_begin, region_end;
@@ -325,6 +325,7 @@ private:
x_rot = 0.5;
y_rot = -0.5;
distance = 4;
+ fov_scale = 1.0;
region_select = false;
}
};
@@ -333,6 +334,8 @@ private:
Cursor cursor; // Immediate cursor
Cursor camera_cursor; // That one may be interpolated (don't modify this one except for smoothing purposes)
+ void scale_fov(real_t p_fov_offset);
+ void reset_fov();
void scale_cursor_distance(real_t scale);
void set_freelook_active(bool active_now);
@@ -349,6 +352,7 @@ private:
void set_message(String p_message, float p_time = 5);
+ void _view_settings_confirmed(real_t p_interp_delta);
void _update_camera(real_t p_interp_delta);
Transform3D to_camera_transform(const Cursor &p_cursor) const;
void _draw();
@@ -677,8 +681,6 @@ private:
void _register_all_gizmos();
- Node3DEditor();
-
void _selection_changed();
void _refresh_menu_icons();
diff --git a/editor/plugins/path_3d_editor_plugin.cpp b/editor/plugins/path_3d_editor_plugin.cpp
index 0268b6e5ea..e2902feba1 100644
--- a/editor/plugins/path_3d_editor_plugin.cpp
+++ b/editor/plugins/path_3d_editor_plugin.cpp
@@ -101,7 +101,7 @@ void Path3DGizmo::set_handle(int p_id, Camera3D *p_camera, const Point2 &p_point
// Setting curve point positions
if (p_id < c->get_point_count()) {
- Plane p(gt.xform(original), p_camera->get_transform().basis.get_axis(2));
+ const Plane p = Plane(p_camera->get_transform().basis.get_axis(2), gt.xform(original));
Vector3 inters;
@@ -125,7 +125,7 @@ void Path3DGizmo::set_handle(int p_id, Camera3D *p_camera, const Point2 &p_point
Vector3 base = c->get_point_position(idx);
- Plane p(gt.xform(original), p_camera->get_transform().basis.get_axis(2));
+ Plane p(p_camera->get_transform().basis.get_axis(2), gt.xform(original));
Vector3 inters;
@@ -389,13 +389,13 @@ EditorPlugin::AfterGUIInput Path3DEditorPlugin::forward_spatial_gui_input(Camera
return EditorPlugin::AFTER_GUI_INPUT_STOP;
} else {
- Vector3 org;
+ Vector3 origin;
if (c->get_point_count() == 0) {
- org = path->get_transform().get_origin();
+ origin = path->get_transform().get_origin();
} else {
- org = gt.xform(c->get_point_position(c->get_point_count() - 1));
+ origin = gt.xform(c->get_point_position(c->get_point_count() - 1));
}
- Plane p(org, p_camera->get_transform().basis.get_axis(2));
+ Plane p(p_camera->get_transform().basis.get_axis(2), origin);
Vector3 ray_from = p_camera->project_ray_origin(mbpos);
Vector3 ray_dir = p_camera->project_ray_normal(mbpos);
diff --git a/editor/plugins/resource_preloader_editor_plugin.h b/editor/plugins/resource_preloader_editor_plugin.h
index 04ab458eb5..943765d4e0 100644
--- a/editor/plugins/resource_preloader_editor_plugin.h
+++ b/editor/plugins/resource_preloader_editor_plugin.h
@@ -59,7 +59,6 @@ class ResourcePreloaderEditor : public PanelContainer {
ResourcePreloader *preloader;
void _load_pressed();
- void _load_scene_pressed();
void _files_load_request(const Vector<String> &p_paths);
void _paste_pressed();
void _remove_resource(const String &p_to_remove);
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index ca6ecfbd3a..677a5f1f2c 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -763,20 +763,24 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save, bool p_history_back) {
ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tselected);
if (current) {
- Ref<Script> script = current->get_edited_resource();
- if (p_save && script.is_valid()) {
+ RES file = current->get_edited_resource();
+ if (p_save && file.is_valid()) {
// Do not try to save internal scripts, but prompt to save in-memory
// scripts which are not saved to disk yet (have empty path).
- if (script->get_path().find("local://") == -1 && script->get_path().find("::") == -1) {
+ if (file->get_path().find("local://") == -1 && file->get_path().find("::") == -1) {
save_current_script();
}
}
- if (script.is_valid()) {
- if (!script->get_path().is_empty()) {
+ if (file.is_valid()) {
+ if (!file->get_path().is_empty()) {
// Only saved scripts can be restored.
- previous_scripts.push_back(script->get_path());
+ previous_scripts.push_back(file->get_path());
+ }
+
+ Ref<Script> script = file;
+ if (script.is_valid()) {
+ notify_script_close(script);
}
- notify_script_close(script);
}
}
@@ -1080,7 +1084,6 @@ void ScriptEditor::_file_dialog_action(String p_file) {
memdelete(file);
if (EditorFileSystem::get_singleton()) {
- const Vector<String> textfile_extensions = ((String)(EditorSettings::get_singleton()->get("docks/filesystem/textfile_extensions"))).split(",", false);
if (textfile_extensions.has(p_file.get_extension())) {
EditorFileSystem::get_singleton()->update_file(p_file);
}
@@ -1168,9 +1171,8 @@ void ScriptEditor::_menu_option(int p_option) {
file_dialog_option = FILE_NEW_TEXTFILE;
file_dialog->clear_filters();
- const Vector<String> textfile_ext = ((String)(EditorSettings::get_singleton()->get("docks/filesystem/textfile_extensions"))).split(",", false);
- for (int i = 0; i < textfile_ext.size(); i++) {
- file_dialog->add_filter("*." + textfile_ext[i] + " ; " + textfile_ext[i].to_upper());
+ for (const String &E : textfile_extensions) {
+ file_dialog->add_filter("*." + E + " ; " + E.to_upper());
}
file_dialog->popup_file_dialog();
file_dialog->set_title(TTR("New Text File..."));
@@ -1188,9 +1190,8 @@ void ScriptEditor::_menu_option(int p_option) {
file_dialog->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
}
- const Vector<String> textfile_ext = ((String)(EditorSettings::get_singleton()->get("docks/filesystem/textfile_extensions"))).split(",", false);
- for (int i = 0; i < textfile_ext.size(); i++) {
- file_dialog->add_filter("*." + textfile_ext[i] + " ; " + textfile_ext[i].to_upper());
+ for (const String &E : textfile_extensions) {
+ file_dialog->add_filter("*." + E + " ; " + E.to_upper());
}
file_dialog->popup_file_dialog();
@@ -1543,6 +1544,7 @@ void ScriptEditor::_notification(int p_what) {
EditorSettings::get_singleton()->connect("settings_changed", callable_mp(this, &ScriptEditor::_editor_settings_changed));
EditorFileSystem::get_singleton()->connect("filesystem_changed", callable_mp(this, &ScriptEditor::_filesystem_changed));
+ _editor_settings_changed();
[[fallthrough]];
}
case NOTIFICATION_TRANSLATION_CHANGED:
@@ -2118,7 +2120,7 @@ void ScriptEditor::_update_script_connections() {
}
}
-Ref<TextFile> ScriptEditor::_load_text_file(const String &p_path, Error *r_error) {
+Ref<TextFile> ScriptEditor::_load_text_file(const String &p_path, Error *r_error) const {
if (r_error) {
*r_error = ERR_FILE_CANT_OPEN;
}
@@ -2602,6 +2604,12 @@ void ScriptEditor::_save_layout() {
}
void ScriptEditor::_editor_settings_changed() {
+ textfile_extensions.clear();
+ const Vector<String> textfile_ext = ((String)(EditorSettings::get_singleton()->get("docks/filesystem/textfile_extensions"))).split(",", false);
+ for (const String &E : textfile_ext) {
+ textfile_extensions.insert(E);
+ }
+
trim_trailing_whitespace_on_save = EditorSettings::get_singleton()->get("text_editor/behavior/files/trim_trailing_whitespace_on_save");
convert_indent_on_save = EditorSettings::get_singleton()->get("text_editor/behavior/files/convert_indent_on_save");
use_space_indentation = EditorSettings::get_singleton()->get("text_editor/behavior/indent/type");
@@ -2808,12 +2816,22 @@ bool ScriptEditor::can_drop_data_fw(const Point2 &p_point, const Variant &p_data
if (file == "" || !FileAccess::exists(file)) {
continue;
}
- Ref<Script> scr = ResourceLoader::load(file);
- if (scr.is_valid()) {
- return true;
+ if (ResourceLoader::exists(file, "Script")) {
+ Ref<Script> scr = ResourceLoader::load(file);
+ if (scr.is_valid()) {
+ return true;
+ }
+ }
+
+ if (textfile_extensions.has(file.get_extension())) {
+ Error err;
+ Ref<TextFile> text_file = _load_text_file(file, &err);
+ if (text_file.is_valid() && err == OK) {
+ return true;
+ }
}
}
- return true;
+ return false;
}
return false;
@@ -2878,9 +2896,13 @@ void ScriptEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data, Co
if (file == "" || !FileAccess::exists(file)) {
continue;
}
- Ref<Script> scr = ResourceLoader::load(file);
- if (scr.is_valid()) {
- edit(scr);
+
+ if (!ResourceLoader::exists(file, "Script") && !textfile_extensions.has(file.get_extension())) {
+ continue;
+ }
+
+ RES res = open_file(file);
+ if (res.is_valid()) {
if (tab_container->get_child_count() > num_tabs_before) {
tab_container->move_child(tab_container->get_child(tab_container->get_child_count() - 1), new_index);
num_tabs_before = tab_container->get_child_count();
diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h
index ce26699280..2b0bdfd109 100644
--- a/editor/plugins/script_editor_plugin.h
+++ b/editor/plugins/script_editor_plugin.h
@@ -371,14 +371,11 @@ class ScriptEditor : public PanelContainer {
bool use_space_indentation;
bool convert_indent_on_save;
- void _trim_trailing_whitespace(TextEdit *tx);
-
void _goto_script_line2(int p_line);
void _goto_script_line(REF p_script, int p_line);
void _set_execution(REF p_script, int p_line);
void _clear_execution(REF p_script);
void _breaked(bool p_breaked, bool p_can_debug);
- void _update_window_menu();
void _script_created(Ref<Script> p_script);
void _set_breakpoint(REF p_scrpt, int p_line, bool p_enabled);
void _clear_breakpoints();
@@ -430,7 +427,6 @@ class ScriptEditor : public PanelContainer {
void _make_script_list_context_menu();
void _help_search(String p_text);
- void _help_index(String p_text);
void _history_forward();
void _history_back();
@@ -453,7 +449,8 @@ class ScriptEditor : public PanelContainer {
Ref<Script> _get_current_script();
Array _get_open_scripts() const;
- Ref<TextFile> _load_text_file(const String &p_path, Error *r_error);
+ Set<String> textfile_extensions;
+ Ref<TextFile> _load_text_file(const String &p_path, Error *r_error) const;
Error _save_text_file(Ref<TextFile> p_text_file, const String &p_path);
void _on_find_in_files_requested(String text);
diff --git a/editor/plugins/skeleton_3d_editor_plugin.cpp b/editor/plugins/skeleton_3d_editor_plugin.cpp
index 531ffc6a73..0b8a56503c 100644
--- a/editor/plugins/skeleton_3d_editor_plugin.cpp
+++ b/editor/plugins/skeleton_3d_editor_plugin.cpp
@@ -49,296 +49,159 @@ void BoneTransformEditor::create_editors() {
section = memnew(EditorInspectorSection);
section->setup("trf_properties", label, this, section_color, true);
+ section->unfold();
add_child(section);
- enabled_checkbox = memnew(CheckBox(TTR("Pose Enabled")));
- enabled_checkbox->set_flat(true);
- enabled_checkbox->set_visible(toggle_enabled);
+ enabled_checkbox = memnew(EditorPropertyCheck());
+ enabled_checkbox->set_label("Pose Enabled");
+ enabled_checkbox->set_selectable(false);
+ enabled_checkbox->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed));
section->get_vbox()->add_child(enabled_checkbox);
- key_button = memnew(Button);
- key_button->set_text(TTR("Key Transform"));
- key_button->set_visible(keyable);
- key_button->set_icon(get_theme_icon(SNAME("Key"), SNAME("EditorIcons")));
- key_button->set_flat(true);
- section->get_vbox()->add_child(key_button);
-
- // Translation property.
- translation_property = memnew(EditorPropertyVector3());
- translation_property->setup(-10000, 10000, 0.001f, true);
- translation_property->set_label("Translation");
- translation_property->set_use_folding(true);
- translation_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed_vector3));
- section->get_vbox()->add_child(translation_property);
+ // Position property.
+ position_property = memnew(EditorPropertyVector3());
+ position_property->setup(-10000, 10000, 0.001f, true);
+ position_property->set_label("Position");
+ position_property->set_selectable(false);
+ position_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed));
+ position_property->connect("property_keyed", callable_mp(this, &BoneTransformEditor::_property_keyed));
+ section->get_vbox()->add_child(position_property);
// Rotation property.
- rotation_property = memnew(EditorPropertyVector3());
+ rotation_property = memnew(EditorPropertyQuaternion());
rotation_property->setup(-10000, 10000, 0.001f, true);
- rotation_property->set_label("Rotation Degrees");
- rotation_property->set_use_folding(true);
- rotation_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed_vector3));
+ rotation_property->set_label("Rotation");
+ rotation_property->set_selectable(false);
+ rotation_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed));
+ rotation_property->connect("property_keyed", callable_mp(this, &BoneTransformEditor::_property_keyed));
section->get_vbox()->add_child(rotation_property);
// Scale property.
scale_property = memnew(EditorPropertyVector3());
scale_property->setup(-10000, 10000, 0.001f, true);
scale_property->set_label("Scale");
- scale_property->set_use_folding(true);
- scale_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed_vector3));
+ scale_property->set_selectable(false);
+ scale_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed));
+ scale_property->connect("property_keyed", callable_mp(this, &BoneTransformEditor::_property_keyed));
section->get_vbox()->add_child(scale_property);
// Transform/Matrix section.
- transform_section = memnew(EditorInspectorSection);
- transform_section->setup("trf_properties_transform", "Matrix", this, section_color, true);
- section->get_vbox()->add_child(transform_section);
+ rest_section = memnew(EditorInspectorSection);
+ rest_section->setup("trf_properties_transform", "Rest", this, section_color, true);
+ section->get_vbox()->add_child(rest_section);
// Transform/Matrix property.
- transform_property = memnew(EditorPropertyTransform3D());
- transform_property->setup(-10000, 10000, 0.001f, true);
- transform_property->set_label("Transform");
- transform_property->set_use_folding(true);
- transform_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed_transform));
- transform_section->get_vbox()->add_child(transform_property);
+ rest_matrix = memnew(EditorPropertyTransform3D());
+ rest_matrix->setup(-10000, 10000, 0.001f, true);
+ rest_matrix->set_label("Transform");
+ rest_matrix->set_selectable(false);
+ rest_section->get_vbox()->add_child(rest_matrix);
}
void BoneTransformEditor::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE: {
create_editors();
- key_button->connect("pressed", callable_mp(this, &BoneTransformEditor::_key_button_pressed));
- enabled_checkbox->connect("pressed", callable_mp(this, &BoneTransformEditor::_checkbox_pressed));
- [[fallthrough]];
- }
- case NOTIFICATION_SORT_CHILDREN: {
- const Ref<Font> font = get_theme_font(SNAME("font"), SNAME("Tree"));
- int font_size = get_theme_font_size(SNAME("font_size"), SNAME("Tree"));
-
- Point2 buffer;
- buffer.x += get_theme_constant(SNAME("inspector_margin"), SNAME("Editor"));
- buffer.y += font->get_height(font_size);
- buffer.y += get_theme_constant(SNAME("vseparation"), SNAME("Tree"));
-
- const float vector_height = translation_property->get_size().y;
- const float transform_height = transform_property->get_size().y;
- const float button_height = key_button->get_size().y;
-
- const float width = get_size().x - get_theme_constant(SNAME("inspector_margin"), SNAME("Editor"));
- Vector<Rect2> input_rects;
- if (keyable && section->get_vbox()->is_visible()) {
- input_rects.push_back(Rect2(key_button->get_position() + buffer, Size2(width, button_height)));
- } else {
- input_rects.push_back(Rect2(0, 0, 0, 0));
- }
-
- if (section->get_vbox()->is_visible()) {
- input_rects.push_back(Rect2(translation_property->get_position() + buffer, Size2(width, vector_height)));
- input_rects.push_back(Rect2(rotation_property->get_position() + buffer, Size2(width, vector_height)));
- input_rects.push_back(Rect2(scale_property->get_position() + buffer, Size2(width, vector_height)));
- input_rects.push_back(Rect2(transform_property->get_position() + buffer, Size2(width, transform_height)));
- } else {
- const int32_t start = input_rects.size();
- const int32_t empty_input_rect_elements = 4;
- const int32_t end = start + empty_input_rect_elements;
- for (int i = start; i < end; ++i) {
- input_rects.push_back(Rect2(0, 0, 0, 0));
- }
- }
-
- for (int32_t i = 0; i < input_rects.size(); i++) {
- background_rects[i] = input_rects[i];
- }
-
- update();
- break;
- }
- case NOTIFICATION_DRAW: {
- const Color dark_color = get_theme_color(SNAME("dark_color_2"), SNAME("Editor"));
-
- for (int i = 0; i < 5; ++i) {
- draw_rect(background_rects[i], dark_color);
- }
-
break;
}
}
}
-void BoneTransformEditor::_value_changed(const double p_value) {
- if (updating) {
- return;
- }
-
- Transform3D tform = compute_transform_from_vector3s();
- _change_transform(tform);
-}
-
-void BoneTransformEditor::_value_changed_vector3(const String p_property_name, const Vector3 p_vector, const StringName p_edited_property_name, const bool p_boolean) {
- if (updating) {
- return;
- }
- Transform3D tform = compute_transform_from_vector3s();
- _change_transform(tform);
-}
-
-Transform3D BoneTransformEditor::compute_transform_from_vector3s() const {
- // Convert rotation from degrees to radians.
- Vector3 prop_rotation = rotation_property->get_vector();
- prop_rotation.x = Math::deg2rad(prop_rotation.x);
- prop_rotation.y = Math::deg2rad(prop_rotation.y);
- prop_rotation.z = Math::deg2rad(prop_rotation.z);
-
- return Transform3D(
- Basis(prop_rotation, scale_property->get_vector()),
- translation_property->get_vector());
-}
-
-void BoneTransformEditor::_value_changed_transform(const String p_property_name, const Transform3D p_transform, const StringName p_edited_property_name, const bool p_boolean) {
+void BoneTransformEditor::_value_changed(const String &p_property, Variant p_value, const String &p_name, bool p_changing) {
if (updating) {
return;
}
- _change_transform(p_transform);
-}
-
-void BoneTransformEditor::_change_transform(Transform3D p_new_transform) {
- if (property.get_slicec('/', 0) == "bones" && property.get_slicec('/', 2) == "custom_pose") {
- undo_redo->create_action(TTR("Set Custom Bone Pose Transform"), UndoRedo::MERGE_ENDS);
- undo_redo->add_undo_method(skeleton, "set_bone_custom_pose", property.get_slicec('/', 1).to_int(), skeleton->get_bone_custom_pose(property.get_slicec('/', 1).to_int()));
- undo_redo->add_do_method(skeleton, "set_bone_custom_pose", property.get_slicec('/', 1).to_int(), p_new_transform);
- undo_redo->commit_action();
- } else if (property.get_slicec('/', 0) == "bones") {
+ if (skeleton) {
undo_redo->create_action(TTR("Set Bone Transform"), UndoRedo::MERGE_ENDS);
- undo_redo->add_undo_property(skeleton, property, skeleton->get(property));
- undo_redo->add_do_property(skeleton, property, p_new_transform);
+ undo_redo->add_undo_property(skeleton, p_property, skeleton->get(p_property));
+ undo_redo->add_do_property(skeleton, p_property, p_value);
undo_redo->commit_action();
}
}
-void BoneTransformEditor::update_enabled_checkbox() {
- if (enabled_checkbox) {
- const String path = "bones/" + property.get_slicec('/', 1) + "/enabled";
- const bool is_enabled = skeleton->get(path);
- enabled_checkbox->set_pressed(is_enabled);
- }
-}
-
-void BoneTransformEditor::_update_properties() {
- if (updating) {
- return;
- }
-
- if (!skeleton) {
- return;
- }
-
- updating = true;
-
- Transform3D tform = skeleton->get(property);
- _update_transform_properties(tform);
-}
-
-void BoneTransformEditor::_update_custom_pose_properties() {
- if (updating) {
- return;
- }
-
- if (!skeleton) {
- return;
- }
-
- updating = true;
-
- Transform3D tform = skeleton->get_bone_custom_pose(property.to_int());
- _update_transform_properties(tform);
-}
-
-void BoneTransformEditor::_update_transform_properties(Transform3D tform) {
- Basis rotation_basis = tform.get_basis();
- Vector3 rotation_radians = rotation_basis.get_rotation_euler();
- Vector3 rotation_degrees = Vector3(Math::rad2deg(rotation_radians.x), Math::rad2deg(rotation_radians.y), Math::rad2deg(rotation_radians.z));
- Vector3 translation = tform.get_origin();
- Vector3 scale = tform.basis.get_scale();
-
- translation_property->update_using_vector(translation);
- rotation_property->update_using_vector(rotation_degrees);
- scale_property->update_using_vector(scale);
- transform_property->update_using_transform(tform);
-
- update_enabled_checkbox();
- updating = false;
-}
-
BoneTransformEditor::BoneTransformEditor(Skeleton3D *p_skeleton) :
skeleton(p_skeleton) {
undo_redo = EditorNode::get_undo_redo();
}
-void BoneTransformEditor::set_target(const String &p_prop) {
- property = p_prop;
-}
-
void BoneTransformEditor::set_keyable(const bool p_keyable) {
- keyable = p_keyable;
+ position_property->set_keying(p_keyable);
+ rotation_property->set_keying(p_keyable);
+ scale_property->set_keying(p_keyable);
}
-void BoneTransformEditor::_update_key_button(const bool p_keyable) {
- bool is_keyable = keyable && p_keyable;
- if (key_button) {
- key_button->set_visible(is_keyable);
- }
-}
+void BoneTransformEditor::set_target(const String &p_prop) {
+ enabled_checkbox->set_object_and_property(skeleton, p_prop + "enabled");
+ enabled_checkbox->update_property();
-void BoneTransformEditor::set_properties_read_only(const bool p_readonly) {
- enabled_checkbox->set_disabled(p_readonly);
- enabled_checkbox->update();
-}
+ position_property->set_object_and_property(skeleton, p_prop + "position");
+ position_property->update_property();
-void BoneTransformEditor::set_transform_read_only(const bool p_readonly) {
- translation_property->set_read_only(p_readonly);
- rotation_property->set_read_only(p_readonly);
- scale_property->set_read_only(p_readonly);
- transform_property->set_read_only(p_readonly);
- translation_property->update();
- rotation_property->update();
- scale_property->update();
- transform_property->update();
- _update_key_button(!p_readonly);
-}
+ rotation_property->set_object_and_property(skeleton, p_prop + "rotation");
+ rotation_property->update_property();
-void BoneTransformEditor::set_toggle_enabled(const bool p_enabled) {
- toggle_enabled = p_enabled;
- if (enabled_checkbox) {
- enabled_checkbox->set_visible(p_enabled);
- }
-}
+ scale_property->set_object_and_property(skeleton, p_prop + "scale");
+ scale_property->update_property();
-void BoneTransformEditor::_key_button_pressed() {
- if (!skeleton) {
- return;
- }
-
- const BoneId bone_id = property.get_slicec('/', 1).to_int();
- const String name = skeleton->get_bone_name(bone_id);
+ rest_matrix->set_object_and_property(skeleton, p_prop + "rest");
+ rest_matrix->update_property();
+}
- if (name.is_empty()) {
- return;
+void BoneTransformEditor::_property_keyed(const String &p_path, bool p_advance) {
+ AnimationTrackEditor *te = AnimationPlayerEditor::get_singleton()->get_track_editor();
+ PackedStringArray split = p_path.split("/");
+ if (split.size() == 3 && split[0] == "bones") {
+ int bone_idx = split[1].to_int();
+ if (split[2] == "position") {
+ te->insert_transform_key(skeleton, skeleton->get_bone_name(bone_idx), Animation::TYPE_POSITION_3D, skeleton->get(p_path));
+ }
+ if (split[2] == "rotation") {
+ te->insert_transform_key(skeleton, skeleton->get_bone_name(bone_idx), Animation::TYPE_ROTATION_3D, skeleton->get(p_path));
+ }
+ if (split[2] == "scale") {
+ te->insert_transform_key(skeleton, skeleton->get_bone_name(bone_idx), Animation::TYPE_SCALE_3D, skeleton->get(p_path));
+ }
}
-
- Transform3D tform = compute_transform_from_vector3s();
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(skeleton, name, tform);
}
-void BoneTransformEditor::_checkbox_pressed() {
+void BoneTransformEditor::_update_properties() {
if (!skeleton) {
return;
}
-
- const BoneId bone_id = property.get_slicec('/', 1).to_int();
- if (enabled_checkbox) {
- undo_redo->create_action(TTR("Set Pose Enabled"));
- bool enabled = skeleton->is_bone_enabled(bone_id);
- undo_redo->add_do_method(skeleton, "set_bone_enabled", bone_id, !enabled);
- undo_redo->add_undo_method(skeleton, "set_bone_enabled", bone_id, enabled);
- undo_redo->commit_action();
+ int selected = Skeleton3DEditor::get_singleton()->get_selected_bone();
+ List<PropertyInfo> props;
+ skeleton->get_property_list(&props);
+ for (const PropertyInfo &E : props) {
+ PackedStringArray split = E.name.split("/");
+ if (split.size() == 3 && split[0] == "bones") {
+ if (split[1].to_int() == selected) {
+ if (split[2] == "enabled") {
+ enabled_checkbox->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY);
+ enabled_checkbox->update_property();
+ enabled_checkbox->update();
+ }
+ if (split[2] == "position") {
+ position_property->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY);
+ position_property->update_property();
+ position_property->update();
+ }
+ if (split[2] == "rotation") {
+ rotation_property->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY);
+ rotation_property->update_property();
+ rotation_property->update();
+ }
+ if (split[2] == "scale") {
+ scale_property->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY);
+ scale_property->update_property();
+ scale_property->update();
+ }
+ if (split[2] == "rest") {
+ rest_matrix->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY);
+ rest_matrix->update_property();
+ rest_matrix->update();
+ }
+ }
+ }
}
}
@@ -346,89 +209,94 @@ Skeleton3DEditor *Skeleton3DEditor::singleton = nullptr;
void Skeleton3DEditor::set_keyable(const bool p_keyable) {
keyable = p_keyable;
- skeleton_options->get_popup()->set_item_disabled(SKELETON_OPTION_INSERT_KEYS, !p_keyable);
- skeleton_options->get_popup()->set_item_disabled(SKELETON_OPTION_INSERT_KEYS_EXISTED, !p_keyable);
+ if (p_keyable) {
+ animation_hb->show();
+ } else {
+ animation_hb->hide();
+ }
};
-void Skeleton3DEditor::set_rest_options_enabled(const bool p_rest_options_enabled) {
- rest_options->get_popup()->set_item_disabled(REST_OPTION_POSE_TO_REST, !p_rest_options_enabled);
+void Skeleton3DEditor::set_bone_options_enabled(const bool p_bone_options_enabled) {
+ skeleton_options->get_popup()->set_item_disabled(SKELETON_OPTION_INIT_SELECTED_POSES, !p_bone_options_enabled);
+ skeleton_options->get_popup()->set_item_disabled(SKELETON_OPTION_SELECTED_POSES_TO_RESTS, !p_bone_options_enabled);
};
-void Skeleton3DEditor::_update_show_rest_only() {
- _update_pose_enabled(-1);
-}
-
-void Skeleton3DEditor::_update_pose_enabled(int p_bone) {
- if (!skeleton) {
- return;
- }
- if (pose_editor) {
- pose_editor->set_properties_read_only(skeleton->is_show_rest_only());
-
- if (selected_bone > 0) {
- pose_editor->set_transform_read_only(skeleton->is_show_rest_only() || !(skeleton->is_bone_enabled(selected_bone)));
- }
- }
- _update_gizmo_visible();
-}
-
void Skeleton3DEditor::_on_click_skeleton_option(int p_skeleton_option) {
if (!skeleton) {
return;
}
switch (p_skeleton_option) {
- case SKELETON_OPTION_CREATE_PHYSICAL_SKELETON: {
- create_physical_skeleton();
+ case SKELETON_OPTION_INIT_ALL_POSES: {
+ init_pose(true);
+ break;
+ }
+ case SKELETON_OPTION_INIT_SELECTED_POSES: {
+ init_pose(false);
break;
}
- case SKELETON_OPTION_INIT_POSE: {
- init_pose();
+ case SKELETON_OPTION_ALL_POSES_TO_RESTS: {
+ pose_to_rest(true);
break;
}
- case SKELETON_OPTION_INSERT_KEYS: {
- insert_keys(true);
+ case SKELETON_OPTION_SELECTED_POSES_TO_RESTS: {
+ pose_to_rest(false);
break;
}
- case SKELETON_OPTION_INSERT_KEYS_EXISTED: {
- insert_keys(false);
+ case SKELETON_OPTION_CREATE_PHYSICAL_SKELETON: {
+ create_physical_skeleton();
break;
}
}
}
-void Skeleton3DEditor::_on_click_rest_option(int p_rest_option) {
+void Skeleton3DEditor::init_pose(const bool p_all_bones) {
if (!skeleton) {
return;
}
-
- switch (p_rest_option) {
- case REST_OPTION_POSE_TO_REST: {
- pose_to_rest();
- break;
- }
- }
-}
-
-void Skeleton3DEditor::init_pose() {
const int bone_len = skeleton->get_bone_count();
if (!bone_len) {
return;
}
+
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
ur->create_action(TTR("Set Bone Transform"), UndoRedo::MERGE_ENDS);
- for (int i = 0; i < bone_len; i++) {
- ur->add_do_method(skeleton, "set_bone_pose", i, Transform3D());
- ur->add_undo_method(skeleton, "set_bone_pose", i, skeleton->get_bone_pose(i));
+ if (p_all_bones) {
+ for (int i = 0; i < bone_len; i++) {
+ Transform3D rest = skeleton->get_bone_rest(i);
+ ur->add_do_method(skeleton, "set_bone_pose_position", i, rest.origin);
+ ur->add_do_method(skeleton, "set_bone_pose_rotation", i, rest.basis.get_rotation_quaternion());
+ ur->add_do_method(skeleton, "set_bone_pose_scale", i, rest.basis.get_scale());
+ ur->add_undo_method(skeleton, "set_bone_pose_position", i, skeleton->get_bone_pose_position(i));
+ ur->add_undo_method(skeleton, "set_bone_pose_rotation", i, skeleton->get_bone_pose_rotation(i));
+ ur->add_undo_method(skeleton, "set_bone_pose_scale", i, skeleton->get_bone_pose_scale(i));
+ }
+ } else {
+ // Todo: Do method with multiple bone selection.
+ if (selected_bone == -1) {
+ ur->commit_action();
+ return;
+ }
+ Transform3D rest = skeleton->get_bone_rest(selected_bone);
+ ur->add_do_method(skeleton, "set_bone_pose_position", selected_bone, rest.origin);
+ ur->add_do_method(skeleton, "set_bone_pose_rotation", selected_bone, rest.basis.get_rotation_quaternion());
+ ur->add_do_method(skeleton, "set_bone_pose_scale", selected_bone, rest.basis.get_scale());
+ ur->add_undo_method(skeleton, "set_bone_pose_position", selected_bone, skeleton->get_bone_pose_position(selected_bone));
+ ur->add_undo_method(skeleton, "set_bone_pose_rotation", selected_bone, skeleton->get_bone_pose_rotation(selected_bone));
+ ur->add_undo_method(skeleton, "set_bone_pose_scale", selected_bone, skeleton->get_bone_pose_scale(selected_bone));
}
ur->commit_action();
}
-void Skeleton3DEditor::insert_keys(bool p_all_bones) {
+void Skeleton3DEditor::insert_keys(const bool p_all_bones) {
if (!skeleton) {
return;
}
+ bool pos_enabled = key_loc_button->is_pressed();
+ bool rot_enabled = key_rot_button->is_pressed();
+ bool scl_enabled = key_scale_button->is_pressed();
+
int bone_len = skeleton->get_bone_count();
Node *root = EditorNode::get_singleton()->get_tree()->get_root();
String path = root->get_path_to(skeleton);
@@ -442,32 +310,44 @@ void Skeleton3DEditor::insert_keys(bool p_all_bones) {
continue;
}
- if (!p_all_bones && !te->has_transform_track(skeleton, name)) {
- continue;
+ if (pos_enabled && (p_all_bones || te->has_track(skeleton, name, Animation::TYPE_POSITION_3D))) {
+ te->insert_transform_key(skeleton, name, Animation::TYPE_POSITION_3D, skeleton->get_bone_pose_position(i));
+ }
+ if (rot_enabled && (p_all_bones || te->has_track(skeleton, name, Animation::TYPE_ROTATION_3D))) {
+ te->insert_transform_key(skeleton, name, Animation::TYPE_ROTATION_3D, skeleton->get_bone_pose_rotation(i));
+ }
+ if (scl_enabled && (p_all_bones || te->has_track(skeleton, name, Animation::TYPE_SCALE_3D))) {
+ te->insert_transform_key(skeleton, name, Animation::TYPE_SCALE_3D, skeleton->get_bone_pose_scale(i));
}
-
- Transform3D tform = skeleton->get_bone_pose(i);
- te->insert_transform_key(skeleton, name, tform);
}
te->commit_insert_queue();
}
-void Skeleton3DEditor::pose_to_rest() {
+void Skeleton3DEditor::pose_to_rest(const bool p_all_bones) {
if (!skeleton) {
return;
}
+ const int bone_len = skeleton->get_bone_count();
+ if (!bone_len) {
+ return;
+ }
- // Todo: Do method with multiple bone selection.
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action(TTR("Set Bone Transform"), UndoRedo::MERGE_ENDS);
-
- ur->add_do_method(skeleton, "set_bone_pose", selected_bone, Transform3D());
- ur->add_undo_method(skeleton, "set_bone_pose", selected_bone, skeleton->get_bone_pose(selected_bone));
- ur->add_do_method(skeleton, "set_bone_custom_pose", selected_bone, Transform3D());
- ur->add_undo_method(skeleton, "set_bone_custom_pose", selected_bone, skeleton->get_bone_custom_pose(selected_bone));
- ur->add_do_method(skeleton, "set_bone_rest", selected_bone, skeleton->get_bone_rest(selected_bone) * skeleton->get_bone_custom_pose(selected_bone) * skeleton->get_bone_pose(selected_bone));
- ur->add_undo_method(skeleton, "set_bone_rest", selected_bone, skeleton->get_bone_rest(selected_bone));
-
+ ur->create_action(TTR("Set Bone Rest"), UndoRedo::MERGE_ENDS);
+ if (p_all_bones) {
+ for (int i = 0; i < bone_len; i++) {
+ ur->add_do_method(skeleton, "set_bone_rest", i, skeleton->get_bone_pose(i));
+ ur->add_undo_method(skeleton, "set_bone_rest", i, skeleton->get_bone_rest(i));
+ }
+ } else {
+ // Todo: Do method with multiple bone selection.
+ if (selected_bone == -1) {
+ ur->commit_action();
+ return;
+ }
+ ur->add_do_method(skeleton, "set_bone_rest", selected_bone, skeleton->get_bone_pose(selected_bone));
+ ur->add_undo_method(skeleton, "set_bone_rest", selected_bone, skeleton->get_bone_rest(selected_bone));
+ }
ur->commit_action();
}
@@ -652,20 +532,15 @@ void Skeleton3DEditor::_joint_tree_selection_changed() {
const int b_idx = path.get_slicec('/', 1).to_int();
const String bone_path = "bones/" + itos(b_idx) + "/";
- pose_editor->set_target(bone_path + "pose");
- rest_editor->set_target(bone_path + "rest");
- custom_pose_editor->set_target(bone_path + "custom_pose");
-
- pose_editor->set_visible(true);
- rest_editor->set_visible(true);
- custom_pose_editor->set_visible(true);
-
+ pose_editor->set_target(bone_path);
+ pose_editor->set_keyable(keyable);
selected_bone = b_idx;
}
}
- set_rest_options_enabled(selected);
+ pose_editor->set_visible(selected);
+ set_bone_options_enabled(selected);
_update_properties();
- _update_pose_enabled();
+ _update_gizmo_visible();
}
// May be not used with single select mode.
@@ -673,16 +548,10 @@ void Skeleton3DEditor::_joint_tree_rmb_select(const Vector2 &p_pos) {
}
void Skeleton3DEditor::_update_properties() {
- if (rest_editor) {
- rest_editor->_update_properties();
- }
if (pose_editor) {
pose_editor->_update_properties();
}
- if (custom_pose_editor) {
- custom_pose_editor->_update_custom_pose_properties();
- }
- _update_gizmo_transform();
+ Node3DEditor::get_singleton()->update_transform_gizmo();
}
void Skeleton3DEditor::update_joint_tree() {
@@ -748,43 +617,82 @@ void Skeleton3DEditor::create_editors() {
skeleton_options->set_text(TTR("Skeleton3D"));
skeleton_options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Skeleton3D"), SNAME("EditorIcons")));
- skeleton_options->get_popup()->add_item(TTR("Init pose"), SKELETON_OPTION_INIT_POSE);
- skeleton_options->get_popup()->add_item(TTR("Insert key of all bone poses"), SKELETON_OPTION_INSERT_KEYS);
- skeleton_options->get_popup()->add_item(TTR("Insert key of bone poses already exist track"), SKELETON_OPTION_INSERT_KEYS_EXISTED);
- skeleton_options->get_popup()->add_item(TTR("Create physical skeleton"), SKELETON_OPTION_CREATE_PHYSICAL_SKELETON);
-
- skeleton_options->get_popup()->connect("id_pressed", callable_mp(this, &Skeleton3DEditor::_on_click_skeleton_option));
-
- // Create Rest Option in Top Menu Bar.
- rest_options = memnew(MenuButton);
- ne->add_control_to_menu_panel(rest_options);
-
- rest_options->set_text(TTR("Edit Rest"));
- rest_options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("BoneAttachment3D"), SNAME("EditorIcons")));
+ // Skeleton options.
+ PopupMenu *p = skeleton_options->get_popup();
+ p->add_shortcut(ED_SHORTCUT("skeleton_3d_editor/init_all_poses", TTR("Init all Poses")), SKELETON_OPTION_INIT_ALL_POSES);
+ p->add_shortcut(ED_SHORTCUT("skeleton_3d_editor/init_selected_poses", TTR("Init selected Poses")), SKELETON_OPTION_INIT_SELECTED_POSES);
+ p->add_shortcut(ED_SHORTCUT("skeleton_3d_editor/all_poses_to_rests", TTR("Apply all poses to rests")), SKELETON_OPTION_ALL_POSES_TO_RESTS);
+ p->add_shortcut(ED_SHORTCUT("skeleton_3d_editor/selected_poses_to_rests", TTR("Apply selected poses to rests")), SKELETON_OPTION_SELECTED_POSES_TO_RESTS);
+ p->add_item(TTR("Create physical skeleton"), SKELETON_OPTION_CREATE_PHYSICAL_SKELETON);
- rest_options->get_popup()->add_item(TTR("Apply current pose to rest"), REST_OPTION_POSE_TO_REST);
- rest_options->get_popup()->connect("id_pressed", callable_mp(this, &Skeleton3DEditor::_on_click_rest_option));
- set_rest_options_enabled(false);
+ p->connect("id_pressed", callable_mp(this, &Skeleton3DEditor::_on_click_skeleton_option));
+ set_bone_options_enabled(false);
Vector<Variant> button_binds;
button_binds.resize(1);
edit_mode_button = memnew(Button);
ne->add_control_to_menu_panel(edit_mode_button);
- edit_mode_button->set_tooltip(TTR("Edit Mode\nShow buttons on joints."));
- edit_mode_button->set_toggle_mode(true);
edit_mode_button->set_flat(true);
+ edit_mode_button->set_toggle_mode(true);
+ edit_mode_button->set_focus_mode(FOCUS_NONE);
+ edit_mode_button->set_tooltip(TTR("Edit Mode\nShow buttons on joints."));
edit_mode_button->connect("toggled", callable_mp(this, &Skeleton3DEditor::edit_mode_toggled));
edit_mode = false;
- set_keyable(te->has_keying());
-
if (skeleton) {
skeleton->add_child(handles_mesh_instance);
handles_mesh_instance->set_skeleton_path(NodePath(""));
}
+ // Keying buttons.
+ animation_hb = memnew(HBoxContainer);
+ ne->add_control_to_menu_panel(animation_hb);
+ animation_hb->add_child(memnew(VSeparator));
+ animation_hb->hide();
+
+ key_loc_button = memnew(Button);
+ key_loc_button->set_flat(true);
+ key_loc_button->set_toggle_mode(true);
+ key_loc_button->set_pressed(false);
+ key_loc_button->set_focus_mode(FOCUS_NONE);
+ key_loc_button->set_tooltip(TTR("Translation mask for inserting keys."));
+ animation_hb->add_child(key_loc_button);
+
+ key_rot_button = memnew(Button);
+ key_rot_button->set_flat(true);
+ key_rot_button->set_toggle_mode(true);
+ key_rot_button->set_pressed(true);
+ key_rot_button->set_focus_mode(FOCUS_NONE);
+ key_rot_button->set_tooltip(TTR("Rotation mask for inserting keys."));
+ animation_hb->add_child(key_rot_button);
+
+ key_scale_button = memnew(Button);
+ key_scale_button->set_flat(true);
+ key_scale_button->set_toggle_mode(true);
+ key_scale_button->set_pressed(false);
+ key_scale_button->set_focus_mode(FOCUS_NONE);
+ key_scale_button->set_tooltip(TTR("Scale mask for inserting keys."));
+ animation_hb->add_child(key_scale_button);
+
+ key_insert_button = memnew(Button);
+ key_insert_button->set_flat(true);
+ key_insert_button->set_focus_mode(FOCUS_NONE);
+ key_insert_button->connect("pressed", callable_mp(this, &Skeleton3DEditor::insert_keys), varray(false));
+ key_insert_button->set_tooltip(TTR("Insert key of bone poses already exist track."));
+ key_insert_button->set_shortcut(ED_SHORTCUT("skeleton_3d_editor/insert_key_to_existing_tracks", TTR("Insert Key (Existing Tracks)"), KEY_INSERT));
+ animation_hb->add_child(key_insert_button);
+
+ key_insert_all_button = memnew(Button);
+ key_insert_all_button->set_flat(true);
+ key_insert_all_button->set_focus_mode(FOCUS_NONE);
+ key_insert_all_button->connect("pressed", callable_mp(this, &Skeleton3DEditor::insert_keys), varray(true));
+ key_insert_all_button->set_tooltip(TTR("Insert key of all bone poses."));
+ key_insert_all_button->set_shortcut(ED_SHORTCUT("skeleton_3d_editor/insert_key_of_all_bones", TTR("Insert Key (All Bones)"), KEY_MASK_CMD + KEY_INSERT));
+ animation_hb->add_child(key_insert_all_button);
+
+ // Bone tree.
const Color section_color = get_theme_color(SNAME("prop_subsection"), SNAME("Editor"));
EditorInspectorSection *bones_section = memnew(EditorInspectorSection);
@@ -809,29 +717,22 @@ void Skeleton3DEditor::create_editors() {
s_con->add_child(joint_tree);
pose_editor = memnew(BoneTransformEditor(skeleton));
- pose_editor->set_label(TTR("Bone Pose"));
- pose_editor->set_toggle_enabled(true);
- pose_editor->set_keyable(te->has_keying());
+ pose_editor->set_label(TTR("Bone Transform"));
pose_editor->set_visible(false);
add_child(pose_editor);
- rest_editor = memnew(BoneTransformEditor(skeleton));
- rest_editor->set_label(TTR("Bone Rest"));
- rest_editor->set_visible(false);
- add_child(rest_editor);
- rest_editor->set_transform_read_only(true);
-
- custom_pose_editor = memnew(BoneTransformEditor(skeleton));
- custom_pose_editor->set_label(TTR("Bone Custom Pose"));
- custom_pose_editor->set_visible(false);
- add_child(custom_pose_editor);
- custom_pose_editor->set_transform_read_only(true);
+ set_keyable(te->has_keying());
}
void Skeleton3DEditor::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_READY: {
- edit_mode_button->set_icon(get_theme_icon("ToolBoneSelect", "EditorIcons"));
+ edit_mode_button->set_icon(get_theme_icon(SNAME("ToolBoneSelect"), SNAME("EditorIcons")));
+ key_loc_button->set_icon(get_theme_icon(SNAME("KeyPosition"), SNAME("EditorIcons")));
+ key_rot_button->set_icon(get_theme_icon(SNAME("KeyRotation"), SNAME("EditorIcons")));
+ key_scale_button->set_icon(get_theme_icon(SNAME("KeyScale"), SNAME("EditorIcons")));
+ key_insert_button->set_icon(get_theme_icon(SNAME("Key"), SNAME("EditorIcons")));
+ key_insert_all_button->set_icon(get_theme_icon(SNAME("NewKey"), SNAME("EditorIcons")));
get_tree()->connect("node_removed", callable_mp(this, &Skeleton3DEditor::_node_removed), Vector<Variant>(), Object::CONNECT_ONESHOT);
break;
}
@@ -844,8 +745,8 @@ void Skeleton3DEditor::_notification(int p_what) {
#ifdef TOOLS_ENABLED
skeleton->connect("pose_updated", callable_mp(this, &Skeleton3DEditor::_draw_gizmo));
skeleton->connect("pose_updated", callable_mp(this, &Skeleton3DEditor::_update_properties));
- skeleton->connect("bone_enabled_changed", callable_mp(this, &Skeleton3DEditor::_update_pose_enabled));
- skeleton->connect("show_rest_only_changed", callable_mp(this, &Skeleton3DEditor::_update_show_rest_only));
+ skeleton->connect("bone_enabled_changed", callable_mp(this, &Skeleton3DEditor::_bone_enabled_changed));
+ skeleton->connect("show_rest_only_changed", callable_mp(this, &Skeleton3DEditor::_update_gizmo_visible));
#endif
break;
}
@@ -856,7 +757,6 @@ void Skeleton3DEditor::_node_removed(Node *p_node) {
if (skeleton && p_node == skeleton) {
skeleton = nullptr;
skeleton_options->hide();
- rest_options->hide();
}
_update_properties();
@@ -866,11 +766,8 @@ void Skeleton3DEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_node_removed"), &Skeleton3DEditor::_node_removed);
ClassDB::bind_method(D_METHOD("_joint_tree_selection_changed"), &Skeleton3DEditor::_joint_tree_selection_changed);
ClassDB::bind_method(D_METHOD("_joint_tree_rmb_select"), &Skeleton3DEditor::_joint_tree_rmb_select);
- ClassDB::bind_method(D_METHOD("_update_show_rest_only"), &Skeleton3DEditor::_update_show_rest_only);
- ClassDB::bind_method(D_METHOD("_update_pose_enabled"), &Skeleton3DEditor::_update_pose_enabled);
ClassDB::bind_method(D_METHOD("_update_properties"), &Skeleton3DEditor::_update_properties);
ClassDB::bind_method(D_METHOD("_on_click_skeleton_option"), &Skeleton3DEditor::_on_click_skeleton_option);
- ClassDB::bind_method(D_METHOD("_on_click_rest_option"), &Skeleton3DEditor::_on_click_rest_option);
ClassDB::bind_method(D_METHOD("get_drag_data_fw"), &Skeleton3DEditor::get_drag_data_fw);
ClassDB::bind_method(D_METHOD("can_drop_data_fw"), &Skeleton3DEditor::can_drop_data_fw);
@@ -938,7 +835,9 @@ void Skeleton3DEditor::update_bone_original() {
if (skeleton->get_bone_count() == 0 || selected_bone == -1) {
return;
}
- bone_original = skeleton->get_bone_pose(selected_bone);
+ bone_original_position = skeleton->get_bone_pose_position(selected_bone);
+ bone_original_rotation = skeleton->get_bone_pose_rotation(selected_bone);
+ bone_original_scale = skeleton->get_bone_pose_scale(selected_bone);
}
void Skeleton3DEditor::_hide_handles() {
@@ -1066,8 +965,8 @@ void Skeleton3DEditor::select_bone(int p_idx) {
Skeleton3DEditor::~Skeleton3DEditor() {
if (skeleton) {
#ifdef TOOLS_ENABLED
- skeleton->disconnect("show_rest_only_changed", callable_mp(this, &Skeleton3DEditor::_update_show_rest_only));
- skeleton->disconnect("bone_enabled_changed", callable_mp(this, &Skeleton3DEditor::_update_pose_enabled));
+ skeleton->disconnect("show_rest_only_changed", callable_mp(this, &Skeleton3DEditor::_update_gizmo_visible));
+ skeleton->disconnect("bone_enabled_changed", callable_mp(this, &Skeleton3DEditor::_bone_enabled_changed));
skeleton->disconnect("pose_updated", callable_mp(this, &Skeleton3DEditor::_draw_gizmo));
skeleton->disconnect("pose_updated", callable_mp(this, &Skeleton3DEditor::_update_properties));
skeleton->set_transform_gizmo_visible(true);
@@ -1079,6 +978,11 @@ Skeleton3DEditor::~Skeleton3DEditor() {
Node3DEditor *ne = Node3DEditor::get_singleton();
+ if (animation_hb) {
+ ne->remove_control_from_menu_panel(animation_hb);
+ memdelete(animation_hb);
+ }
+
if (separator) {
ne->remove_control_from_menu_panel(separator);
memdelete(separator);
@@ -1089,11 +993,6 @@ Skeleton3DEditor::~Skeleton3DEditor() {
memdelete(skeleton_options);
}
- if (rest_options) {
- ne->remove_control_from_menu_panel(rest_options);
- memdelete(rest_options);
- }
-
if (edit_mode_button) {
ne->remove_control_from_menu_panel(edit_mode_button);
memdelete(edit_mode_button);
@@ -1148,9 +1047,9 @@ bool Skeleton3DEditorPlugin::handles(Object *p_object) const {
return p_object->is_class("Skeleton3D");
}
-void Skeleton3DEditor::_update_gizmo_transform() {
- Node3DEditor::get_singleton()->update_transform_gizmo();
-};
+void Skeleton3DEditor::_bone_enabled_changed(const int p_bone_id) {
+ _update_gizmo_visible();
+}
void Skeleton3DEditor::_update_gizmo_visible() {
_subgizmo_selection_change();
@@ -1289,7 +1188,6 @@ void Skeleton3DGizmoPlugin::set_subgizmo_transform(const EditorNode3DGizmo *p_gi
if (parent_idx >= 0) {
original_to_local = original_to_local * skeleton->get_bone_global_pose(parent_idx);
}
- original_to_local = original_to_local * skeleton->get_bone_rest(p_id) * skeleton->get_bone_custom_pose(p_id);
Basis to_local = original_to_local.get_basis().inverse();
// Prepare transform.
@@ -1305,7 +1203,9 @@ void Skeleton3DGizmoPlugin::set_subgizmo_transform(const EditorNode3DGizmo *p_gi
t.origin = orig + to_local.xform(sub);
// Apply transform.
- skeleton->set_bone_pose(p_id, t);
+ skeleton->set_bone_pose_position(p_id, t.origin);
+ skeleton->set_bone_pose_rotation(p_id, t.basis.get_rotation_quaternion());
+ skeleton->set_bone_pose_scale(p_id, t.basis.get_scale());
}
void Skeleton3DGizmoPlugin::commit_subgizmos(const EditorNode3DGizmo *p_gizmo, const Vector<int> &p_ids, const Vector<Transform3D> &p_restore, bool p_cancel) {
@@ -1313,12 +1213,30 @@ void Skeleton3DGizmoPlugin::commit_subgizmos(const EditorNode3DGizmo *p_gizmo, c
ERR_FAIL_COND(!skeleton);
Skeleton3DEditor *se = Skeleton3DEditor::get_singleton();
+ Node3DEditor *ne = Node3DEditor::get_singleton();
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- for (int i = 0; i < p_ids.size(); i++) {
- ur->create_action(TTR("Set Bone Transform"));
- ur->add_do_method(skeleton, "set_bone_pose", p_ids[i], skeleton->get_bone_pose(p_ids[i]));
- ur->add_undo_method(skeleton, "set_bone_pose", p_ids[i], se->get_bone_original());
+ ur->create_action(TTR("Set Bone Transform"));
+ if (ne->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || ne->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE) {
+ for (int i = 0; i < p_ids.size(); i++) {
+ ur->add_do_method(skeleton, "set_bone_pose_position", p_ids[i], skeleton->get_bone_pose_position(p_ids[i]));
+ ur->add_undo_method(skeleton, "set_bone_pose_position", p_ids[i], se->get_bone_original_position());
+ }
+ }
+ if (ne->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || ne->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE) {
+ for (int i = 0; i < p_ids.size(); i++) {
+ ur->add_do_method(skeleton, "set_bone_pose_rotation", p_ids[i], skeleton->get_bone_pose_rotation(p_ids[i]));
+ ur->add_undo_method(skeleton, "set_bone_pose_rotation", p_ids[i], se->get_bone_original_rotation());
+ }
+ }
+ if (ne->get_tool_mode() == Node3DEditor::TOOL_MODE_SCALE) {
+ for (int i = 0; i < p_ids.size(); i++) {
+ // If the axis is swapped by scaling, the rotation can be changed.
+ ur->add_do_method(skeleton, "set_bone_pose_rotation", p_ids[i], skeleton->get_bone_pose_rotation(p_ids[i]));
+ ur->add_undo_method(skeleton, "set_bone_pose_rotation", p_ids[i], se->get_bone_original_rotation());
+ ur->add_do_method(skeleton, "set_bone_pose_scale", p_ids[i], skeleton->get_bone_pose_scale(p_ids[i]));
+ ur->add_undo_method(skeleton, "set_bone_pose_scale", p_ids[i], se->get_bone_original_scale());
+ }
}
ur->commit_action();
}
@@ -1516,5 +1434,5 @@ void Skeleton3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
}
Ref<ArrayMesh> m = surface_tool->commit();
- p_gizmo->add_mesh(m, Ref<Material>(), Transform3D(), skeleton->register_skin(Ref<Skin>()));
+ p_gizmo->add_mesh(m, Ref<Material>(), Transform3D(), skeleton->register_skin(skeleton->create_skin_from_rest_transforms()));
}
diff --git a/editor/plugins/skeleton_3d_editor_plugin.h b/editor/plugins/skeleton_3d_editor_plugin.h
index e2a1d9a628..1dd2d2281d 100644
--- a/editor/plugins/skeleton_3d_editor_plugin.h
+++ b/editor/plugins/skeleton_3d_editor_plugin.h
@@ -45,30 +45,27 @@ class Joint;
class PhysicalBone3D;
class Skeleton3DEditorPlugin;
class Button;
-class CheckBox;
class BoneTransformEditor : public VBoxContainer {
GDCLASS(BoneTransformEditor, VBoxContainer);
EditorInspectorSection *section = nullptr;
- EditorPropertyVector3 *translation_property = nullptr;
- EditorPropertyVector3 *rotation_property = nullptr;
+ EditorPropertyCheck *enabled_checkbox = nullptr;
+ EditorPropertyVector3 *position_property = nullptr;
+ EditorPropertyQuaternion *rotation_property = nullptr;
EditorPropertyVector3 *scale_property = nullptr;
- EditorInspectorSection *transform_section = nullptr;
- EditorPropertyTransform3D *transform_property = nullptr;
+
+ EditorInspectorSection *rest_section = nullptr;
+ EditorPropertyTransform3D *rest_matrix = nullptr;
Rect2 background_rects[5];
Skeleton3D *skeleton;
- String property;
+ // String property;
UndoRedo *undo_redo;
- Button *key_button = nullptr;
- CheckBox *enabled_checkbox = nullptr;
-
- bool keyable = false;
bool toggle_enabled = false;
bool updating = false;
@@ -76,20 +73,9 @@ class BoneTransformEditor : public VBoxContainer {
void create_editors();
- // Called when one of the EditorSpinSliders are changed.
- void _value_changed(const double p_value);
- // Called when the one of the EditorPropertyVector3 are updated.
- void _value_changed_vector3(const String p_property_name, const Vector3 p_vector, const StringName p_edited_property_name, const bool p_boolean);
- // Called when the transform_property is updated.
- void _value_changed_transform(const String p_property_name, const Transform3D p_transform, const StringName p_edited_property_name, const bool p_boolean);
- // Changes the transform to the given transform and updates the UI accordingly.
- void _change_transform(Transform3D p_new_transform);
- // Update it is truely keyable then.
- void _update_key_button(const bool p_keyable);
- // Creates a Transform using the EditorPropertyVector3 properties.
- Transform3D compute_transform_from_vector3s() const;
-
- void update_enabled_checkbox();
+ void _value_changed(const String &p_property, Variant p_value, const String &p_name, bool p_changing);
+
+ void _property_keyed(const String &p_path, bool p_advance);
protected:
void _notification(int p_what);
@@ -100,26 +86,9 @@ public:
// Which transform target to modify.
void set_target(const String &p_prop);
void set_label(const String &p_label) { label = p_label; }
-
- void _update_properties();
- void _update_custom_pose_properties();
- void _update_transform_properties(Transform3D p_transform);
-
- // Transform can be keyed, whether or not to show the button.
void set_keyable(const bool p_keyable);
- // When rest mode, pose and custom_pose editor are diasbled.
- void set_properties_read_only(const bool p_readonly);
- void set_transform_read_only(const bool p_readonly);
-
- // Bone can be toggled enabled or disabled, whether or not to show the checkbox.
- void set_toggle_enabled(const bool p_enabled);
-
- // Key Transform Button pressed.
- void _key_button_pressed();
-
- // Bone Enabled Checkbox toggled.
- void _checkbox_pressed();
+ void _update_properties();
};
class Skeleton3DEditor : public VBoxContainer {
@@ -128,14 +97,11 @@ class Skeleton3DEditor : public VBoxContainer {
friend class Skeleton3DEditorPlugin;
enum SkeletonOption {
- SKELETON_OPTION_INIT_POSE,
- SKELETON_OPTION_INSERT_KEYS,
- SKELETON_OPTION_INSERT_KEYS_EXISTED,
- SKELETON_OPTION_CREATE_PHYSICAL_SKELETON
- };
-
- enum RestOption {
- REST_OPTION_POSE_TO_REST
+ SKELETON_OPTION_INIT_ALL_POSES,
+ SKELETON_OPTION_INIT_SELECTED_POSES,
+ SKELETON_OPTION_ALL_POSES_TO_RESTS,
+ SKELETON_OPTION_SELECTED_POSES_TO_RESTS,
+ SKELETON_OPTION_CREATE_PHYSICAL_SKELETON,
};
struct BoneInfo {
@@ -151,15 +117,20 @@ class Skeleton3DEditor : public VBoxContainer {
Tree *joint_tree = nullptr;
BoneTransformEditor *rest_editor = nullptr;
BoneTransformEditor *pose_editor = nullptr;
- BoneTransformEditor *custom_pose_editor = nullptr;
VSeparator *separator;
MenuButton *skeleton_options = nullptr;
- MenuButton *rest_options = nullptr;
Button *edit_mode_button;
bool edit_mode = false;
+ HBoxContainer *animation_hb;
+ Button *key_loc_button;
+ Button *key_rot_button;
+ Button *key_scale_button;
+ Button *key_insert_button;
+ Button *key_insert_all_button;
+
EditorFileDialog *file_dialog = nullptr;
bool keyable;
@@ -167,7 +138,6 @@ class Skeleton3DEditor : public VBoxContainer {
static Skeleton3DEditor *singleton;
void _on_click_skeleton_option(int p_skeleton_option);
- void _on_click_rest_option(int p_rest_option);
void _file_selected(const String &p_file);
TreeItem *_find(TreeItem *p_node, const NodePath &p_path);
void edit_mode_toggled(const bool pressed);
@@ -179,9 +149,10 @@ class Skeleton3DEditor : public VBoxContainer {
void create_editors();
- void init_pose();
- void insert_keys(bool p_all_bones);
- void pose_to_rest();
+ void init_pose(const bool p_all_bones);
+ void pose_to_rest(const bool p_all_bones);
+
+ void insert_keys(const bool p_all_bones);
void create_physical_skeleton();
PhysicalBone3D *create_physical_bone(int bone_id, int bone_child_id, const Vector<BoneInfo> &bones_infos);
@@ -191,7 +162,7 @@ class Skeleton3DEditor : public VBoxContainer {
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
void set_keyable(const bool p_keyable);
- void set_rest_options_enabled(const bool p_rest_options_enabled);
+ void set_bone_options_enabled(const bool p_bone_options_enabled);
// Handle.
MeshInstance3D *handles_mesh_instance;
@@ -199,13 +170,12 @@ class Skeleton3DEditor : public VBoxContainer {
Ref<ShaderMaterial> handle_material;
Ref<Shader> handle_shader;
- Transform3D bone_original;
-
- void _update_pose_enabled(int p_bone = -1);
- void _update_show_rest_only();
+ Vector3 bone_original_position;
+ Quaternion bone_original_rotation;
+ Vector3 bone_original_scale;
- void _update_gizmo_transform();
void _update_gizmo_visible();
+ void _bone_enabled_changed(const int p_bone_id);
void _hide_handles();
@@ -239,7 +209,9 @@ public:
bool is_edit_mode() const { return edit_mode; }
void update_bone_original();
- Transform3D get_bone_original() { return bone_original; };
+ Vector3 get_bone_original_position() const { return bone_original_position; };
+ Quaternion get_bone_original_rotation() const { return bone_original_rotation; };
+ Vector3 get_bone_original_scale() const { return bone_original_scale; };
Skeleton3DEditor(EditorInspectorPluginSkeleton *e_plugin, EditorNode *p_editor, Skeleton3D *skeleton);
~Skeleton3DEditor();
diff --git a/editor/plugins/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h
index 5e3b2fb8c1..9732384000 100644
--- a/editor/plugins/sprite_frames_editor_plugin.h
+++ b/editor/plugins/sprite_frames_editor_plugin.h
@@ -100,7 +100,6 @@ class SpriteFramesEditor : public HSplitContainer {
float min_sheet_zoom;
void _load_pressed();
- void _load_scene_pressed();
void _file_load_request(const Vector<String> &p_path, int p_at_pos = -1);
void _copy_pressed();
void _paste_pressed();
@@ -128,7 +127,6 @@ class SpriteFramesEditor : public HSplitContainer {
UndoRedo *undo_redo;
- bool _is_drop_valid(const Dictionary &p_drag_data, const Dictionary &p_item_data) const;
Variant get_drag_data_fw(const Point2 &p_point, Control *p_from);
bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp
index 19e1b40a0d..127219546d 100644
--- a/editor/plugins/theme_editor_plugin.cpp
+++ b/editor/plugins/theme_editor_plugin.cpp
@@ -3204,7 +3204,7 @@ void ThemeEditor::_add_preview_tab(ThemeEditorPreview *p_preview_tab, const Stri
preview_tabs->add_tab(p_preview_name, p_icon);
preview_tabs_content->add_child(p_preview_tab);
- preview_tabs->set_tab_right_button(preview_tabs->get_tab_count() - 1, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("close"), SNAME("Tabs")));
+ preview_tabs->set_tab_right_button(preview_tabs->get_tab_count() - 1, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("close"), SNAME("TabBar")));
p_preview_tab->connect("control_picked", callable_mp(this, &ThemeEditor::_preview_control_picked));
preview_tabs->set_current_tab(preview_tabs->get_tab_count() - 1);
@@ -3328,8 +3328,8 @@ ThemeEditor::ThemeEditor() {
preview_tabs_content->set_draw_behind_parent(true);
preview_tabs_vb->add_child(preview_tabs_content);
- preview_tabs = memnew(Tabs);
- preview_tabs->set_tab_align(Tabs::ALIGN_LEFT);
+ preview_tabs = memnew(TabBar);
+ preview_tabs->set_tab_align(TabBar::ALIGN_LEFT);
preview_tabs->set_h_size_flags(SIZE_EXPAND_FILL);
preview_tabbar_hb->add_child(preview_tabs);
preview_tabs->connect("tab_changed", callable_mp(this, &ThemeEditor::_change_preview_tab));
diff --git a/editor/plugins/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h
index 5b0357e3f8..b6becbb1c7 100644
--- a/editor/plugins/theme_editor_plugin.h
+++ b/editor/plugins/theme_editor_plugin.h
@@ -34,7 +34,7 @@
#include "scene/gui/margin_container.h"
#include "scene/gui/option_button.h"
#include "scene/gui/scroll_container.h"
-#include "scene/gui/tabs.h"
+#include "scene/gui/tab_bar.h"
#include "scene/gui/texture_rect.h"
#include "scene/resources/theme.h"
#include "theme_editor_preview.h"
@@ -347,7 +347,6 @@ class ThemeTypeEditor : public MarginContainer {
void _update_type_items();
void _list_type_selected(int p_index);
- void _select_type(String p_type_name);
void _add_type_button_cbk();
void _add_default_type_items();
@@ -391,7 +390,7 @@ class ThemeEditor : public VBoxContainer {
Ref<Theme> theme;
- Tabs *preview_tabs;
+ TabBar *preview_tabs;
PanelContainer *preview_tabs_content;
Button *add_preview_button;
EditorFileDialog *preview_scene_dialog;
diff --git a/editor/plugins/tiles/atlas_merging_dialog.cpp b/editor/plugins/tiles/atlas_merging_dialog.cpp
index 2a8a3216ed..efccac7b74 100644
--- a/editor/plugins/tiles/atlas_merging_dialog.cpp
+++ b/editor/plugins/tiles/atlas_merging_dialog.cpp
@@ -118,6 +118,7 @@ void AtlasMergingDialog::_generate_merged(Vector<Ref<TileSetAtlasSource>> p_atla
output_image_texture.instantiate();
output_image_texture->create_from_image(output_image);
+ merged->set_name(p_atlas_sources[0]->get_name());
merged->set_texture(output_image_texture);
merged->set_texture_region_size(new_texture_region_size);
}
diff --git a/editor/plugins/tiles/tile_atlas_view.cpp b/editor/plugins/tiles/tile_atlas_view.cpp
index f21d5098d3..c064073b77 100644
--- a/editor/plugins/tiles/tile_atlas_view.cpp
+++ b/editor/plugins/tiles/tile_atlas_view.cpp
@@ -97,15 +97,6 @@ Size2i TileAtlasView::_compute_base_tiles_control_size() {
if (texture.is_valid()) {
size = texture->get_size();
}
-
- // Extend the size to all existing tiles.
- Size2i grid_size = tile_set_atlas_source->get_atlas_grid_size();
- for (int i = 0; i < tile_set_atlas_source->get_tiles_count(); i++) {
- Vector2i tile_id = tile_set_atlas_source->get_tile_id(i);
- grid_size = grid_size.max(tile_id + Vector2i(1, 1));
- }
- size = size.max(grid_size * (tile_set_atlas_source->get_texture_region_size() + tile_set_atlas_source->get_separation()) + tile_set_atlas_source->get_margins());
-
return size;
}
@@ -213,43 +204,56 @@ void TileAtlasView::_draw_base_tiles() {
Ref<Texture2D> texture = tile_set_atlas_source->get_texture();
if (texture.is_valid()) {
Vector2i margins = tile_set_atlas_source->get_margins();
+ Vector2i separation = tile_set_atlas_source->get_separation();
Vector2i texture_region_size = tile_set_atlas_source->get_texture_region_size();
-
- // Draw the texture, square by square.
Size2i grid_size = tile_set_atlas_source->get_atlas_grid_size();
+
+ // Draw the texture where there is no tile.
for (int x = 0; x < grid_size.x; x++) {
for (int y = 0; y < grid_size.y; y++) {
Vector2i coords = Vector2i(x, y);
if (tile_set_atlas_source->get_tile_at_coords(coords) == TileSetSource::INVALID_ATLAS_COORDS) {
- Rect2i rect = Rect2i(texture_region_size * coords + margins, texture_region_size);
- base_tiles_draw->draw_texture_rect_region(texture, rect, rect);
+ Rect2i rect = Rect2i((texture_region_size + separation) * coords + margins, texture_region_size + separation);
+ rect = rect.intersection(Rect2i(Vector2(), texture->get_size()));
+ if (rect.size.x > 0 && rect.size.y > 0) {
+ base_tiles_draw->draw_texture_rect_region(texture, rect, rect);
+ base_tiles_draw->draw_rect(rect, Color(0.0, 0.0, 0.0, 0.5));
+ }
}
}
}
// Draw the texture around the grid.
Rect2i rect;
+
// Top.
rect.position = Vector2i();
rect.set_end(Vector2i(texture->get_size().x, margins.y));
base_tiles_draw->draw_texture_rect_region(texture, rect, rect);
+ base_tiles_draw->draw_rect(rect, Color(0.0, 0.0, 0.0, 0.5));
+
// Bottom
- int bottom_border = margins.y + (grid_size.y * texture_region_size.y);
+ int bottom_border = margins.y + (grid_size.y * (texture_region_size.y + separation.y));
if (bottom_border < texture->get_size().y) {
rect.position = Vector2i(0, bottom_border);
rect.set_end(texture->get_size());
base_tiles_draw->draw_texture_rect_region(texture, rect, rect);
+ base_tiles_draw->draw_rect(rect, Color(0.0, 0.0, 0.0, 0.5));
}
+
// Left
rect.position = Vector2i(0, margins.y);
- rect.set_end(Vector2i(margins.x, margins.y + (grid_size.y * texture_region_size.y)));
+ rect.set_end(Vector2i(margins.x, margins.y + (grid_size.y * (texture_region_size.y + separation.y))));
base_tiles_draw->draw_texture_rect_region(texture, rect, rect);
+ base_tiles_draw->draw_rect(rect, Color(0.0, 0.0, 0.0, 0.5));
+
// Right.
- int right_border = margins.x + (grid_size.x * texture_region_size.x);
+ int right_border = margins.x + (grid_size.x * (texture_region_size.x + separation.x));
if (right_border < texture->get_size().x) {
rect.position = Vector2i(right_border, margins.y);
- rect.set_end(Vector2i(texture->get_size().x, margins.y + (grid_size.y * texture_region_size.y)));
+ rect.set_end(Vector2i(texture->get_size().x, margins.y + (grid_size.y * (texture_region_size.y + separation.y))));
base_tiles_draw->draw_texture_rect_region(texture, rect, rect);
+ base_tiles_draw->draw_rect(rect, Color(0.0, 0.0, 0.0, 0.5));
}
// Draw actual tiles, using their properties (modulation, etc...)
@@ -258,12 +262,30 @@ void TileAtlasView::_draw_base_tiles() {
for (int frame = 0; frame < tile_set_atlas_source->get_tile_animation_frames_count(atlas_coords); frame++) {
// Update the y to max value.
- int animation_columns = tile_set_atlas_source->get_tile_animation_columns(atlas_coords);
- Vector2i frame_coords = atlas_coords + (tile_set_atlas_source->get_tile_size_in_atlas(atlas_coords) + tile_set_atlas_source->get_tile_animation_separation(atlas_coords)) * ((animation_columns > 0) ? Vector2i(frame % animation_columns, frame / animation_columns) : Vector2i(frame, 0));
- Vector2i offset_pos = (margins + (frame_coords * texture_region_size) + tile_set_atlas_source->get_tile_texture_region(atlas_coords, frame).size / 2 + tile_set_atlas_source->get_tile_effective_texture_offset(atlas_coords, 0));
+ Rect2i base_frame_rect = tile_set_atlas_source->get_tile_texture_region(atlas_coords, frame);
+ Vector2i offset_pos = base_frame_rect.get_center() + tile_set_atlas_source->get_tile_effective_texture_offset(atlas_coords, 0);
// Draw the tile.
TileMap::draw_tile(base_tiles_draw->get_canvas_item(), offset_pos, tile_set, source_id, atlas_coords, 0, frame);
+
+ // Draw, the texture in the separation areas
+ if (separation.x > 0) {
+ Rect2i right_sep_rect = Rect2i(base_frame_rect.get_position() + Vector2i(base_frame_rect.size.x, 0), Vector2i(separation.x, base_frame_rect.size.y));
+ right_sep_rect = right_sep_rect.intersection(Rect2i(Vector2(), texture->get_size()));
+ if (right_sep_rect.size.x > 0 && right_sep_rect.size.y > 0) {
+ base_tiles_draw->draw_texture_rect_region(texture, right_sep_rect, right_sep_rect);
+ base_tiles_draw->draw_rect(right_sep_rect, Color(0.0, 0.0, 0.0, 0.5));
+ }
+ }
+
+ if (separation.y > 0) {
+ Rect2i bottom_sep_rect = Rect2i(base_frame_rect.get_position() + Vector2i(0, base_frame_rect.size.y), Vector2i(base_frame_rect.size.x + separation.x, separation.y));
+ bottom_sep_rect = bottom_sep_rect.intersection(Rect2i(Vector2(), texture->get_size()));
+ if (bottom_sep_rect.size.x > 0 && bottom_sep_rect.size.y > 0) {
+ base_tiles_draw->draw_texture_rect_region(texture, bottom_sep_rect, bottom_sep_rect);
+ base_tiles_draw->draw_rect(bottom_sep_rect, Color(0.0, 0.0, 0.0, 0.5));
+ }
+ }
}
}
}
@@ -299,30 +321,6 @@ void TileAtlasView::_draw_base_tiles_texture_grid() {
}
}
-void TileAtlasView::_draw_base_tiles_dark() {
- Ref<Texture2D> texture = tile_set_atlas_source->get_texture();
- if (texture.is_valid()) {
- Vector2i margins = tile_set_atlas_source->get_margins();
- Vector2i separation = tile_set_atlas_source->get_separation();
- Vector2i texture_region_size = tile_set_atlas_source->get_texture_region_size();
-
- Size2i grid_size = tile_set_atlas_source->get_atlas_grid_size();
-
- // Draw each tile texture region.
- for (int x = 0; x < grid_size.x; x++) {
- for (int y = 0; y < grid_size.y; y++) {
- Vector2i origin = margins + (Vector2i(x, y) * (texture_region_size + separation));
- Vector2i base_tile_coords = tile_set_atlas_source->get_tile_at_coords(Vector2i(x, y));
-
- if (base_tile_coords == TileSetSource::INVALID_ATLAS_COORDS) {
- // Draw the grid.
- base_tiles_dark->draw_rect(Rect2i(origin, texture_region_size), Color(0.0, 0.0, 0.0, 0.5), true);
- }
- }
- }
- }
-}
-
void TileAtlasView::_draw_base_tiles_shape_grid() {
// Draw the shapes.
Color grid_color = EditorSettings::get_singleton()->get("editors/tiles_editor/grid_color");
@@ -453,7 +451,6 @@ void TileAtlasView::set_atlas_source(TileSet *p_tile_set, TileSetAtlasSource *p_
base_tiles_draw->update();
base_tiles_texture_grid->update();
base_tiles_shape_grid->update();
- base_tiles_dark->update();
alternatives_draw->update();
background_left->update();
background_right->update();
@@ -544,7 +541,6 @@ void TileAtlasView::update() {
base_tiles_draw->update();
base_tiles_texture_grid->update();
base_tiles_shape_grid->update();
- base_tiles_dark->update();
alternatives_draw->update();
background_left->update();
background_right->update();
@@ -660,12 +656,6 @@ TileAtlasView::TileAtlasView() {
base_tiles_shape_grid->connect("draw", callable_mp(this, &TileAtlasView::_draw_base_tiles_shape_grid));
base_tiles_drawing_root->add_child(base_tiles_shape_grid);
- base_tiles_dark = memnew(Control);
- base_tiles_dark->set_mouse_filter(Control::MOUSE_FILTER_IGNORE);
- base_tiles_dark->set_anchors_and_offsets_preset(Control::PRESET_WIDE);
- base_tiles_dark->connect("draw", callable_mp(this, &TileAtlasView::_draw_base_tiles_dark));
- base_tiles_drawing_root->add_child(base_tiles_dark);
-
// Alternative tiles.
Label *alternative_tiles_label = memnew(Label);
alternative_tiles_label->set_mouse_filter(Control::MOUSE_FILTER_IGNORE);
diff --git a/editor/plugins/tiles/tile_atlas_view.h b/editor/plugins/tiles/tile_atlas_view.h
index 5b0df366ae..e1ca3eebee 100644
--- a/editor/plugins/tiles/tile_atlas_view.h
+++ b/editor/plugins/tiles/tile_atlas_view.h
@@ -93,9 +93,6 @@ private:
Control *base_tiles_shape_grid;
void _draw_base_tiles_shape_grid();
- Control *base_tiles_dark;
- void _draw_base_tiles_dark();
-
Size2i _compute_base_tiles_control_size();
// Right side.
@@ -124,7 +121,6 @@ public:
// Left side.
void set_texture_grid_visible(bool p_visible) { base_tiles_texture_grid->set_visible(p_visible); };
- void set_dark_visible(bool p_visible) { base_tiles_dark->set_visible(p_visible); };
void set_tile_shape_grid_visible(bool p_visible) { base_tiles_shape_grid->set_visible(p_visible); };
Vector2i get_atlas_tile_coords_at_pos(const Vector2 p_pos) const;
diff --git a/editor/plugins/tiles/tile_data_editors.cpp b/editor/plugins/tiles/tile_data_editors.cpp
index 1a69d19d3c..104f46f773 100644
--- a/editor/plugins/tiles/tile_data_editors.cpp
+++ b/editor/plugins/tiles/tile_data_editors.cpp
@@ -38,8 +38,16 @@
#include "editor/editor_properties.h"
#include "editor/editor_scale.h"
-void TileDataEditor::_call_tile_set_changed() {
- _tile_set_changed();
+void TileDataEditor::_tile_set_changed_plan_update() {
+ _tile_set_changed_update_needed = true;
+ call_deferred("_tile_set_changed_deferred_update");
+}
+
+void TileDataEditor::_tile_set_changed_deferred_update() {
+ if (_tile_set_changed_update_needed) {
+ _tile_set_changed();
+ _tile_set_changed_update_needed = false;
+ }
}
TileData *TileDataEditor::_get_tile_data(TileMapCell p_cell) {
@@ -59,18 +67,20 @@ TileData *TileDataEditor::_get_tile_data(TileMapCell p_cell) {
}
void TileDataEditor::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("_tile_set_changed_deferred_update"), &TileDataEditor::_tile_set_changed_deferred_update);
+
ADD_SIGNAL(MethodInfo("needs_redraw"));
}
void TileDataEditor::set_tile_set(Ref<TileSet> p_tile_set) {
if (tile_set.is_valid()) {
- tile_set->disconnect("changed", callable_mp(this, &TileDataEditor::_call_tile_set_changed));
+ tile_set->disconnect("changed", callable_mp(this, &TileDataEditor::_tile_set_changed_plan_update));
}
tile_set = p_tile_set;
if (tile_set.is_valid()) {
- tile_set->connect("changed", callable_mp(this, &TileDataEditor::_call_tile_set_changed));
+ tile_set->connect("changed", callable_mp(this, &TileDataEditor::_tile_set_changed_plan_update));
}
- _call_tile_set_changed();
+ _tile_set_changed_plan_update();
}
bool DummyObject::_set(const StringName &p_name, const Variant &p_value) {
diff --git a/editor/plugins/tiles/tile_data_editors.h b/editor/plugins/tiles/tile_data_editors.h
index 99998dc779..acb4c5882d 100644
--- a/editor/plugins/tiles/tile_data_editors.h
+++ b/editor/plugins/tiles/tile_data_editors.h
@@ -45,7 +45,9 @@ class TileDataEditor : public VBoxContainer {
GDCLASS(TileDataEditor, VBoxContainer);
private:
- void _call_tile_set_changed();
+ bool _tile_set_changed_update_needed = false;
+ void _tile_set_changed_plan_update();
+ void _tile_set_changed_deferred_update();
protected:
Ref<TileSet> tile_set;
diff --git a/editor/plugins/tiles/tile_map_editor.cpp b/editor/plugins/tiles/tile_map_editor.cpp
index c2e86f8b43..5dfa44a353 100644
--- a/editor/plugins/tiles/tile_map_editor.cpp
+++ b/editor/plugins/tiles/tile_map_editor.cpp
@@ -36,6 +36,7 @@
#include "editor/editor_scale.h"
#include "editor/plugins/canvas_item_editor_plugin.h"
+#include "scene/2d/camera_2d.h"
#include "scene/gui/center_container.h"
#include "scene/gui/split_container.h"
@@ -43,31 +44,11 @@
#include "core/math/geometry_2d.h"
#include "core/os/keyboard.h"
-void TileMapEditorTilesPlugin::_notification(int p_what) {
- switch (p_what) {
- case NOTIFICATION_ENTER_TREE:
- case NOTIFICATION_THEME_CHANGED:
- select_tool_button->set_icon(get_theme_icon(SNAME("ToolSelect"), SNAME("EditorIcons")));
- paint_tool_button->set_icon(get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")));
- line_tool_button->set_icon(get_theme_icon(SNAME("CurveLinear"), SNAME("EditorIcons")));
- rect_tool_button->set_icon(get_theme_icon(SNAME("Rectangle"), SNAME("EditorIcons")));
- bucket_tool_button->set_icon(get_theme_icon(SNAME("Bucket"), SNAME("EditorIcons")));
-
- picker_button->set_icon(get_theme_icon(SNAME("ColorPick"), SNAME("EditorIcons")));
- erase_button->set_icon(get_theme_icon(SNAME("Eraser"), SNAME("EditorIcons")));
-
- missing_atlas_texture_icon = get_theme_icon(SNAME("TileSet"), SNAME("EditorIcons"));
- break;
- case NOTIFICATION_VISIBILITY_CHANGED:
- _stop_dragging();
- break;
- }
-}
-
void TileMapEditorTilesPlugin::tile_set_changed() {
_update_fix_selected_and_hovered();
_update_tile_set_sources_list();
- _update_bottom_panel();
+ _update_source_display();
+ _update_patterns_list();
}
void TileMapEditorTilesPlugin::_on_random_tile_checkbox_toggled(bool p_pressed) {
@@ -125,8 +106,19 @@ void TileMapEditorTilesPlugin::_update_toolbar() {
}
}
-Control *TileMapEditorTilesPlugin::get_toolbar() const {
- return toolbar;
+Vector<TileMapEditorPlugin::TabData> TileMapEditorTilesPlugin::get_tabs() const {
+ Vector<TileMapEditorPlugin::TabData> tabs;
+ tabs.push_back({ toolbar, tiles_bottom_panel });
+ tabs.push_back({ toolbar, patterns_bottom_panel });
+ return tabs;
+}
+
+void TileMapEditorTilesPlugin::_tab_changed() {
+ if (tiles_bottom_panel->is_visible_in_tree()) {
+ _update_selection_pattern_from_tileset_tiles_selection();
+ } else if (patterns_bottom_panel->is_visible_in_tree()) {
+ _update_selection_pattern_from_tileset_pattern_selection();
+ }
}
void TileMapEditorTilesPlugin::_update_tile_set_sources_list() {
@@ -152,22 +144,31 @@ void TileMapEditorTilesPlugin::_update_tile_set_sources_list() {
Ref<Texture2D> texture;
String item_text;
+ // Common to all type of sources.
+ if (!source->get_name().is_empty()) {
+ item_text = vformat(TTR("%s (id:%d)"), source->get_name(), source_id);
+ }
+
// Atlas source.
TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
if (atlas_source) {
texture = atlas_source->get_texture();
- if (texture.is_valid()) {
- item_text = vformat("%s (ID: %d)", texture->get_path().get_file(), source_id);
- } else {
- item_text = vformat("No Texture Atlas Source (ID: %d)", source_id);
+ if (item_text.is_empty()) {
+ if (texture.is_valid()) {
+ item_text = vformat("%s (ID: %d)", texture->get_path().get_file(), source_id);
+ } else {
+ item_text = vformat("No Texture Atlas Source (ID: %d)", source_id);
+ }
}
}
// Scene collection source.
TileSetScenesCollectionSource *scene_collection_source = Object::cast_to<TileSetScenesCollectionSource>(source);
if (scene_collection_source) {
- texture = get_theme_icon(SNAME("PackedScene"), SNAME("EditorIcons"));
- item_text = vformat(TTR("Scene Collection Source (ID: %d)"), source_id);
+ texture = tiles_bottom_panel->get_theme_icon(SNAME("PackedScene"), SNAME("EditorIcons"));
+ if (item_text.is_empty()) {
+ item_text = vformat(TTR("Scene Collection Source (ID: %d)"), source_id);
+ }
}
// Use default if not valid.
@@ -193,10 +194,10 @@ void TileMapEditorTilesPlugin::_update_tile_set_sources_list() {
}
// Synchronize
- TilesEditor::get_singleton()->set_sources_lists_current(sources_list->get_current());
+ TilesEditorPlugin::get_singleton()->set_sources_lists_current(sources_list->get_current());
}
-void TileMapEditorTilesPlugin::_update_bottom_panel() {
+void TileMapEditorTilesPlugin::_update_source_display() {
// Update the atlas display.
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (!tile_map) {
@@ -243,6 +244,81 @@ void TileMapEditorTilesPlugin::_update_bottom_panel() {
}
}
+void TileMapEditorTilesPlugin::_patterns_item_list_gui_input(const Ref<InputEvent> &p_event) {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (!tile_map) {
+ return;
+ }
+
+ Ref<TileSet> tile_set = tile_map->get_tileset();
+ if (!tile_set.is_valid()) {
+ return;
+ }
+
+ if (ED_IS_SHORTCUT("tiles_editor/paste", p_event) && p_event->is_pressed() && !p_event->is_echo()) {
+ select_last_pattern = true;
+ int new_pattern_index = tile_set->get_patterns_count();
+ undo_redo->create_action(TTR("Add TileSet pattern"));
+ undo_redo->add_do_method(*tile_set, "add_pattern", tile_map_clipboard, new_pattern_index);
+ undo_redo->add_undo_method(*tile_set, "remove_pattern", new_pattern_index);
+ undo_redo->commit_action();
+ patterns_item_list->accept_event();
+ }
+
+ if (ED_IS_SHORTCUT("tiles_editor/delete", p_event) && p_event->is_pressed() && !p_event->is_echo()) {
+ Vector<int> selected = patterns_item_list->get_selected_items();
+ undo_redo->create_action(TTR("Remove TileSet patterns"));
+ for (int i = 0; i < selected.size(); i++) {
+ int pattern_index = selected[i];
+ undo_redo->add_do_method(*tile_set, "remove_pattern", pattern_index);
+ undo_redo->add_undo_method(*tile_set, "add_pattern", tile_set->get_pattern(pattern_index), pattern_index);
+ }
+ undo_redo->commit_action();
+ patterns_item_list->accept_event();
+ }
+}
+
+void TileMapEditorTilesPlugin::_pattern_preview_done(Ref<TileMapPattern> p_pattern, Ref<Texture2D> p_texture) {
+ // TODO optimize ?
+ for (int i = 0; i < patterns_item_list->get_item_count(); i++) {
+ if (patterns_item_list->get_item_metadata(i) == p_pattern) {
+ patterns_item_list->set_item_icon(i, p_texture);
+ break;
+ }
+ }
+}
+
+void TileMapEditorTilesPlugin::_update_patterns_list() {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (!tile_map) {
+ return;
+ }
+
+ Ref<TileSet> tile_set = tile_map->get_tileset();
+ if (!tile_set.is_valid()) {
+ return;
+ }
+
+ // Recreate the items.
+ patterns_item_list->clear();
+ for (int i = 0; i < tile_set->get_patterns_count(); i++) {
+ int id = patterns_item_list->add_item("");
+ patterns_item_list->set_item_metadata(id, tile_set->get_pattern(i));
+ TilesEditorPlugin::get_singleton()->queue_pattern_preview(tile_set, tile_set->get_pattern(i), callable_mp(this, &TileMapEditorTilesPlugin::_pattern_preview_done));
+ }
+
+ // Update the label visibility.
+ patterns_help_label->set_visible(patterns_item_list->get_item_count() == 0);
+
+ // Added a new pattern, thus select the last one.
+ if (select_last_pattern) {
+ patterns_item_list->select(tile_set->get_patterns_count() - 1);
+ patterns_item_list->grab_focus();
+ _update_selection_pattern_from_tileset_pattern_selection();
+ }
+ select_last_pattern = false;
+}
+
void TileMapEditorTilesPlugin::_update_atlas_view() {
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (!tile_map) {
@@ -260,7 +336,7 @@ void TileMapEditorTilesPlugin::_update_atlas_view() {
ERR_FAIL_COND(!atlas_source);
tile_atlas_view->set_atlas_source(*tile_map->get_tileset(), atlas_source, source_id);
- TilesEditor::get_singleton()->synchronize_atlas_view(tile_atlas_view);
+ TilesEditorPlugin::get_singleton()->synchronize_atlas_view(tile_atlas_view);
tile_atlas_control->update();
}
@@ -295,7 +371,7 @@ void TileMapEditorTilesPlugin::_update_scenes_collection_view() {
Variant udata = i;
EditorResourcePreview::get_singleton()->queue_edited_resource_preview(scene, this, "_scene_thumbnail_done", udata);
} else {
- item_index = scene_tiles_list->add_item(TTR("Tile with Invalid Scene"), get_theme_icon(SNAME("PackedScene"), SNAME("EditorIcons")));
+ item_index = scene_tiles_list->add_item(TTR("Tile with Invalid Scene"), tiles_bottom_panel->get_theme_icon(SNAME("PackedScene"), SNAME("EditorIcons")));
}
scene_tiles_list->set_item_metadata(item_index, scene_id);
@@ -351,19 +427,32 @@ void TileMapEditorTilesPlugin::_scenes_list_multi_selected(int p_index, bool p_s
}
}
- _update_selection_pattern_from_tileset_selection();
+ _update_selection_pattern_from_tileset_tiles_selection();
}
void TileMapEditorTilesPlugin::_scenes_list_nothing_selected() {
scene_tiles_list->deselect_all();
tile_set_selection.clear();
tile_map_selection.clear();
- selection_pattern->clear();
- _update_selection_pattern_from_tileset_selection();
+ selection_pattern.instantiate();
+ _update_selection_pattern_from_tileset_tiles_selection();
+}
+
+void TileMapEditorTilesPlugin::_update_theme() {
+ select_tool_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("ToolSelect"), SNAME("EditorIcons")));
+ paint_tool_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")));
+ line_tool_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("CurveLinear"), SNAME("EditorIcons")));
+ rect_tool_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("Rectangle"), SNAME("EditorIcons")));
+ bucket_tool_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("Bucket"), SNAME("EditorIcons")));
+
+ picker_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("ColorPick"), SNAME("EditorIcons")));
+ erase_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("Eraser"), SNAME("EditorIcons")));
+
+ missing_atlas_texture_icon = tiles_bottom_panel->get_theme_icon(SNAME("TileSet"), SNAME("EditorIcons"));
}
bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
- if (!is_visible_in_tree()) {
+ if (!(tiles_bottom_panel->is_visible_in_tree() || patterns_bottom_panel->is_visible_in_tree())) {
// If the bottom editor is not visible, we ignore inputs.
return false;
}
@@ -391,7 +480,7 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
if (ED_IS_SHORTCUT("tiles_editor/cut", p_event) || ED_IS_SHORTCUT("tiles_editor/copy", p_event)) {
// Fill in the clipboard.
if (!tile_map_selection.is_empty()) {
- memdelete(tile_map_clipboard);
+ tile_map_clipboard.instantiate();
TypedArray<Vector2i> coords_array;
for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
coords_array.push_back(E->get());
@@ -456,7 +545,7 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
case DRAG_TYPE_PAINT: {
Map<Vector2i, TileMapCell> to_draw = _draw_line(drag_start_mouse_pos, drag_last_mouse_pos, mpos);
for (const KeyValue<Vector2i, TileMapCell> &E : to_draw) {
- if (!erase_button->is_pressed() && E.value.source_id == TileSet::INVALID_SOURCE) {
+ if (!_is_erasing() && E.value.source_id == TileSet::INVALID_SOURCE) {
continue;
}
Vector2i coords = E.key;
@@ -473,7 +562,7 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
if (!drag_modified.has(line[i])) {
Map<Vector2i, TileMapCell> to_draw = _draw_bucket_fill(line[i], bucket_continuous_checkbox->is_pressed());
for (const KeyValue<Vector2i, TileMapCell> &E : to_draw) {
- if (!erase_button->is_pressed() && E.value.source_id == TileSet::INVALID_SOURCE) {
+ if (!_is_erasing() && E.value.source_id == TileSet::INVALID_SOURCE) {
continue;
}
Vector2i coords = E.key;
@@ -501,8 +590,12 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
Transform2D xform = CanvasItemEditor::get_singleton()->get_canvas_transform() * tile_map->get_global_transform();
Vector2 mpos = xform.affine_inverse().xform(mb->get_position());
- if (mb->get_button_index() == MOUSE_BUTTON_LEFT) {
+ if (mb->get_button_index() == MOUSE_BUTTON_LEFT || mb->get_button_index() == MOUSE_BUTTON_RIGHT) {
if (mb->is_pressed()) {
+ if (mb->get_button_index() == MOUSE_BUTTON_RIGHT) {
+ rmb_erasing = true;
+ }
+
// Pressed
if (drag_type == DRAG_TYPE_CLIPBOARD_PASTE) {
// Do nothing.
@@ -524,18 +617,18 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
}
} else {
// Check if we are picking a tile.
- if (picker_button->is_pressed()) {
+ if (picker_button->is_pressed() || (Input::get_singleton()->is_key_pressed(KEY_CTRL) && !Input::get_singleton()->is_key_pressed(KEY_SHIFT))) {
drag_type = DRAG_TYPE_PICK;
drag_start_mouse_pos = mpos;
} else {
// Paint otherwise.
- if (tool_buttons_group->get_pressed_button() == paint_tool_button) {
+ 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)) {
drag_type = DRAG_TYPE_PAINT;
drag_start_mouse_pos = mpos;
drag_modified.clear();
Map<Vector2i, TileMapCell> to_draw = _draw_line(drag_start_mouse_pos, mpos, mpos);
for (const KeyValue<Vector2i, TileMapCell> &E : to_draw) {
- if (!erase_button->is_pressed() && E.value.source_id == TileSet::INVALID_SOURCE) {
+ if (!_is_erasing() && E.value.source_id == TileSet::INVALID_SOURCE) {
continue;
}
Vector2i coords = E.key;
@@ -545,11 +638,11 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
tile_map->set_cell(tile_map_layer, coords, E.value.source_id, E.value.get_atlas_coords(), E.value.alternative_tile);
}
_fix_invalid_tiles_in_tile_map_selection();
- } else if (tool_buttons_group->get_pressed_button() == line_tool_button) {
+ } 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))) {
drag_type = DRAG_TYPE_LINE;
drag_start_mouse_pos = mpos;
drag_modified.clear();
- } else if (tool_buttons_group->get_pressed_button() == rect_tool_button) {
+ } 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))) {
drag_type = DRAG_TYPE_RECT;
drag_start_mouse_pos = mpos;
drag_modified.clear();
@@ -562,7 +655,7 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
if (!drag_modified.has(line[i])) {
Map<Vector2i, TileMapCell> to_draw = _draw_bucket_fill(line[i], bucket_continuous_checkbox->is_pressed());
for (const KeyValue<Vector2i, TileMapCell> &E : to_draw) {
- if (!erase_button->is_pressed() && E.value.source_id == TileSet::INVALID_SOURCE) {
+ if (!_is_erasing() && E.value.source_id == TileSet::INVALID_SOURCE) {
continue;
}
Vector2i coords = E.key;
@@ -581,6 +674,9 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
} else {
// Released
_stop_dragging();
+ if (mb->get_button_index() == MOUSE_BUTTON_RIGHT) {
+ rmb_erasing = false;
+ }
}
CanvasItemEditor::get_singleton()->update_viewport();
@@ -617,7 +713,7 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
Vector2i tile_shape_size = tile_set->get_tile_size();
// Draw the selection.
- if (is_visible_in_tree() && tool_buttons_group->get_pressed_button() == select_tool_button) {
+ if ((tiles_bottom_panel->is_visible_in_tree() || patterns_bottom_panel->is_visible_in_tree()) && tool_buttons_group->get_pressed_button() == select_tool_button) {
// In select mode, we only draw the current selection if we are modifying it (pressing control or shift).
if (drag_type == DRAG_TYPE_MOVE || (drag_type == DRAG_TYPE_SELECT && !Input::get_singleton()->is_key_pressed(KEY_CTRL) && !Input::get_singleton()->is_key_pressed(KEY_SHIFT))) {
// Do nothing
@@ -629,7 +725,7 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
}
// Handle the preview of the tiles to be placed.
- if (is_visible_in_tree() && has_mouse) { // Only if the tilemap editor is opened and the viewport is hovered.
+ if ((tiles_bottom_panel->is_visible_in_tree() || patterns_bottom_panel->is_visible_in_tree()) && has_mouse) { // Only if the tilemap editor is opened and the viewport is hovered.
Map<Vector2i, TileMapCell> preview;
Rect2i drawn_grid_rect;
@@ -663,21 +759,23 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
}
tile_map->draw_cells_outline(p_overlay, to_draw, Color(1.0, 1.0, 1.0), xform);
} else if (drag_type == DRAG_TYPE_MOVE) {
- // Preview when moving.
- Vector2i top_left;
- if (!tile_map_selection.is_empty()) {
- top_left = tile_map_selection.front()->get();
- }
- for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
- top_left = top_left.min(E->get());
- }
- Vector2i offset = drag_start_mouse_pos - tile_map->map_to_world(top_left);
- offset = tile_map->world_to_map(drag_last_mouse_pos - offset) - tile_map->world_to_map(drag_start_mouse_pos - offset);
+ if (!(patterns_item_list->is_visible_in_tree() && patterns_item_list->has_point(patterns_item_list->get_local_mouse_position()))) {
+ // Preview when moving.
+ Vector2i top_left;
+ if (!tile_map_selection.is_empty()) {
+ top_left = tile_map_selection.front()->get();
+ }
+ for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
+ top_left = top_left.min(E->get());
+ }
+ Vector2i offset = drag_start_mouse_pos - tile_map->map_to_world(top_left);
+ offset = tile_map->world_to_map(drag_last_mouse_pos - offset) - tile_map->world_to_map(drag_start_mouse_pos - offset);
- TypedArray<Vector2i> selection_used_cells = selection_pattern->get_used_cells();
- for (int i = 0; i < selection_used_cells.size(); i++) {
- Vector2i coords = tile_map->map_pattern(offset + top_left, selection_used_cells[i], selection_pattern);
- preview[coords] = TileMapCell(selection_pattern->get_cell_source_id(selection_used_cells[i]), selection_pattern->get_cell_atlas_coords(selection_used_cells[i]), selection_pattern->get_cell_alternative_tile(selection_used_cells[i]));
+ TypedArray<Vector2i> selection_used_cells = selection_pattern->get_used_cells();
+ for (int i = 0; i < selection_used_cells.size(); i++) {
+ Vector2i coords = tile_map->map_pattern(offset + top_left, selection_used_cells[i], selection_pattern);
+ preview[coords] = TileMapCell(selection_pattern->get_cell_source_id(selection_used_cells[i]), selection_pattern->get_cell_atlas_coords(selection_used_cells[i]), selection_pattern->get_cell_alternative_tile(selection_used_cells[i]));
+ }
}
} else if (drag_type == DRAG_TYPE_CLIPBOARD_PASTE) {
// Preview when pasting.
@@ -687,13 +785,13 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
Vector2i coords = tile_map->map_pattern(tile_map->world_to_map(drag_last_mouse_pos - mouse_offset), clipboard_used_cells[i], tile_map_clipboard);
preview[coords] = TileMapCell(tile_map_clipboard->get_cell_source_id(clipboard_used_cells[i]), tile_map_clipboard->get_cell_atlas_coords(clipboard_used_cells[i]), tile_map_clipboard->get_cell_alternative_tile(clipboard_used_cells[i]));
}
- } else if (!picker_button->is_pressed()) {
+ } else if (!picker_button->is_pressed() && !(drag_type == DRAG_TYPE_NONE && Input::get_singleton()->is_key_pressed(KEY_CTRL) && !Input::get_singleton()->is_key_pressed(KEY_SHIFT))) {
bool expand_grid = false;
if (tool_buttons_group->get_pressed_button() == paint_tool_button && drag_type == DRAG_TYPE_NONE) {
// Preview for a single pattern.
preview = _draw_line(drag_last_mouse_pos, drag_last_mouse_pos, drag_last_mouse_pos);
expand_grid = true;
- } else if (tool_buttons_group->get_pressed_button() == line_tool_button) {
+ } else if (tool_buttons_group->get_pressed_button() == line_tool_button || drag_type == DRAG_TYPE_LINE) {
if (drag_type == DRAG_TYPE_NONE) {
// Preview for a single pattern.
preview = _draw_line(drag_last_mouse_pos, drag_last_mouse_pos, drag_last_mouse_pos);
@@ -703,12 +801,12 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
preview = _draw_line(drag_start_mouse_pos, drag_start_mouse_pos, drag_last_mouse_pos);
expand_grid = true;
}
- } else if (tool_buttons_group->get_pressed_button() == rect_tool_button && drag_type == DRAG_TYPE_RECT) {
- // Preview for a line pattern.
+ } else if (drag_type == DRAG_TYPE_RECT) {
+ // Preview for a rect pattern.
preview = _draw_rect(tile_map->world_to_map(drag_start_mouse_pos), tile_map->world_to_map(drag_last_mouse_pos));
expand_grid = true;
} else if (tool_buttons_group->get_pressed_button() == bucket_tool_button && drag_type == DRAG_TYPE_NONE) {
- // Preview for a line pattern.
+ // Preview for a fill pattern.
preview = _draw_bucket_fill(tile_map->world_to_map(drag_last_mouse_pos), bucket_continuous_checkbox->is_pressed());
}
@@ -757,7 +855,7 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
Transform2D tile_xform;
tile_xform.set_origin(tile_map->map_to_world(E.key));
tile_xform.set_scale(tile_set->get_tile_size());
- if (!erase_button->is_pressed() && random_tile_checkbox->is_pressed()) {
+ if (!_is_erasing() && random_tile_checkbox->is_pressed()) {
tile_set->draw_tile_shape(p_overlay, xform * tile_xform, Color(1.0, 1.0, 1.0, 0.5), true);
} else {
if (tile_set->has_source(E.value.source_id)) {
@@ -816,7 +914,7 @@ void TileMapEditorTilesPlugin::_mouse_exited_viewport() {
CanvasItemEditor::get_singleton()->update_viewport();
}
-TileMapCell TileMapEditorTilesPlugin::_pick_random_tile(const TileMapPattern *p_pattern) {
+TileMapCell TileMapEditorTilesPlugin::_pick_random_tile(Ref<TileMapPattern> p_pattern) {
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (!tile_map) {
return TileMapCell();
@@ -880,14 +978,15 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_line(Vector2 p_start_
}
// Get or create the pattern.
- TileMapPattern erase_pattern;
- erase_pattern.set_cell(Vector2i(0, 0), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
- TileMapPattern *pattern = erase_button->is_pressed() ? &erase_pattern : selection_pattern;
+ Ref<TileMapPattern> erase_pattern;
+ erase_pattern.instantiate();
+ erase_pattern->set_cell(Vector2i(0, 0), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
+ Ref<TileMapPattern> pattern = _is_erasing() ? erase_pattern : selection_pattern;
Map<Vector2i, TileMapCell> output;
if (!pattern->is_empty()) {
// Paint the tiles on the tile map.
- if (!erase_button->is_pressed() && random_tile_checkbox->is_pressed()) {
+ if (!_is_erasing() && random_tile_checkbox->is_pressed()) {
// Paint a random tile.
Vector<Vector2i> line = TileMapEditor::get_line(tile_map, tile_map->world_to_map(p_from_mouse_pos), tile_map->world_to_map(p_to_mouse_pos));
for (int i = 0; i < line.size(); i++) {
@@ -932,9 +1031,11 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_rect(Vector2i p_start
rect.size += Vector2i(1, 1);
// Get or create the pattern.
- TileMapPattern erase_pattern;
- erase_pattern.set_cell(Vector2i(0, 0), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
- TileMapPattern *pattern = erase_button->is_pressed() ? &erase_pattern : selection_pattern;
+ Ref<TileMapPattern> erase_pattern;
+ erase_pattern.instantiate();
+ erase_pattern->set_cell(Vector2i(0, 0), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
+ Ref<TileMapPattern> pattern = _is_erasing() ? erase_pattern : selection_pattern;
+
Map<Vector2i, TileMapCell> err_output;
ERR_FAIL_COND_V(pattern->is_empty(), err_output);
@@ -945,7 +1046,7 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_rect(Vector2i p_start
Map<Vector2i, TileMapCell> output;
if (!pattern->is_empty()) {
- if (!erase_button->is_pressed() && random_tile_checkbox->is_pressed()) {
+ if (!_is_erasing() && random_tile_checkbox->is_pressed()) {
// Paint a random tile.
for (int x = 0; x < rect.size.x; x++) {
for (int y = 0; y < rect.size.y; y++) {
@@ -991,9 +1092,10 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i
}
// Get or create the pattern.
- TileMapPattern erase_pattern;
- erase_pattern.set_cell(Vector2i(0, 0), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
- TileMapPattern *pattern = erase_button->is_pressed() ? &erase_pattern : selection_pattern;
+ Ref<TileMapPattern> erase_pattern;
+ erase_pattern.instantiate();
+ erase_pattern->set_cell(Vector2i(0, 0), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
+ Ref<TileMapPattern> pattern = _is_erasing() ? erase_pattern : selection_pattern;
if (!pattern->is_empty()) {
TileMapCell source = tile_map->get_cell(tile_map_layer, p_coords);
@@ -1017,7 +1119,7 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i
source.get_atlas_coords() == tile_map->get_cell_atlas_coords(tile_map_layer, coords) &&
source.alternative_tile == tile_map->get_cell_alternative_tile(tile_map_layer, coords) &&
(source.source_id != TileSet::INVALID_SOURCE || boundaries.has_point(coords))) {
- if (!erase_button->is_pressed() && random_tile_checkbox->is_pressed()) {
+ if (!_is_erasing() && random_tile_checkbox->is_pressed()) {
// Paint a random tile.
output.insert(coords, _pick_random_tile(pattern));
} else {
@@ -1063,7 +1165,7 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i
source.get_atlas_coords() == tile_map->get_cell_atlas_coords(tile_map_layer, coords) &&
source.alternative_tile == tile_map->get_cell_alternative_tile(tile_map_layer, coords) &&
(source.source_id != TileSet::INVALID_SOURCE || boundaries.has_point(coords))) {
- if (!erase_button->is_pressed() && random_tile_checkbox->is_pressed()) {
+ if (!_is_erasing() && random_tile_checkbox->is_pressed()) {
// Paint a random tile.
output.insert(coords, _pick_random_tile(pattern));
} else {
@@ -1137,60 +1239,80 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
_update_tileset_selection_from_selection_pattern();
} break;
case DRAG_TYPE_MOVE: {
- Vector2i top_left;
- if (!tile_map_selection.is_empty()) {
- top_left = tile_map_selection.front()->get();
- }
- for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
- top_left = top_left.min(E->get());
- }
+ if (patterns_item_list->is_visible_in_tree() && patterns_item_list->has_point(patterns_item_list->get_local_mouse_position())) {
+ // Restore the cells.
+ for (KeyValue<Vector2i, TileMapCell> kv : drag_modified) {
+ tile_map->set_cell(tile_map_layer, kv.key, kv.value.source_id, kv.value.get_atlas_coords(), kv.value.alternative_tile);
+ }
+
+ // Creating a pattern in the pattern list.
+ select_last_pattern = true;
+ int new_pattern_index = tile_set->get_patterns_count();
+ undo_redo->create_action(TTR("Add TileSet pattern"));
+ undo_redo->add_do_method(*tile_set, "add_pattern", selection_pattern, new_pattern_index);
+ undo_redo->add_undo_method(*tile_set, "remove_pattern", new_pattern_index);
+ undo_redo->commit_action();
+ } else {
+ // Get the top-left cell.
+ Vector2i top_left;
+ if (!tile_map_selection.is_empty()) {
+ top_left = tile_map_selection.front()->get();
+ }
+ for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
+ top_left = top_left.min(E->get());
+ }
- Vector2i offset = drag_start_mouse_pos - tile_map->map_to_world(top_left);
- offset = tile_map->world_to_map(mpos - offset) - tile_map->world_to_map(drag_start_mouse_pos - offset);
+ // Get the offset from the mouse.
+ Vector2i offset = drag_start_mouse_pos - tile_map->map_to_world(top_left);
+ offset = tile_map->world_to_map(mpos - offset) - tile_map->world_to_map(drag_start_mouse_pos - offset);
- TypedArray<Vector2i> selection_used_cells = selection_pattern->get_used_cells();
+ TypedArray<Vector2i> selection_used_cells = selection_pattern->get_used_cells();
- Vector2i coords;
- Map<Vector2i, TileMapCell> cells_undo;
- for (int i = 0; i < selection_used_cells.size(); i++) {
- coords = tile_map->map_pattern(top_left, selection_used_cells[i], selection_pattern);
- cells_undo[coords] = TileMapCell(drag_modified[coords].source_id, drag_modified[coords].get_atlas_coords(), drag_modified[coords].alternative_tile);
- coords = tile_map->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern);
- cells_undo[coords] = TileMapCell(tile_map->get_cell_source_id(tile_map_layer, coords), tile_map->get_cell_atlas_coords(tile_map_layer, coords), tile_map->get_cell_alternative_tile(tile_map_layer, coords));
- }
+ // Build the list of cells to undo.
+ Vector2i coords;
+ Map<Vector2i, TileMapCell> cells_undo;
+ for (int i = 0; i < selection_used_cells.size(); i++) {
+ coords = tile_map->map_pattern(top_left, selection_used_cells[i], selection_pattern);
+ cells_undo[coords] = TileMapCell(drag_modified[coords].source_id, drag_modified[coords].get_atlas_coords(), drag_modified[coords].alternative_tile);
+ coords = tile_map->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern);
+ cells_undo[coords] = TileMapCell(tile_map->get_cell_source_id(tile_map_layer, coords), tile_map->get_cell_atlas_coords(tile_map_layer, coords), tile_map->get_cell_alternative_tile(tile_map_layer, coords));
+ }
- Map<Vector2i, TileMapCell> cells_do;
- for (int i = 0; i < selection_used_cells.size(); i++) {
- coords = tile_map->map_pattern(top_left, selection_used_cells[i], selection_pattern);
- cells_do[coords] = TileMapCell();
- }
- for (int i = 0; i < selection_used_cells.size(); i++) {
- coords = tile_map->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern);
- cells_do[coords] = TileMapCell(selection_pattern->get_cell_source_id(selection_used_cells[i]), selection_pattern->get_cell_atlas_coords(selection_used_cells[i]), selection_pattern->get_cell_alternative_tile(selection_used_cells[i]));
- }
- undo_redo->create_action(TTR("Move tiles"));
- // Move the tiles.
- for (const KeyValue<Vector2i, TileMapCell> &E : cells_do) {
- undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E.key, E.value.source_id, E.value.get_atlas_coords(), E.value.alternative_tile);
- }
- for (const KeyValue<Vector2i, TileMapCell> &E : cells_undo) {
- undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E.key, E.value.source_id, E.value.get_atlas_coords(), E.value.alternative_tile);
- }
+ // Build the list of cells to do.
+ Map<Vector2i, TileMapCell> cells_do;
+ for (int i = 0; i < selection_used_cells.size(); i++) {
+ coords = tile_map->map_pattern(top_left, selection_used_cells[i], selection_pattern);
+ cells_do[coords] = TileMapCell();
+ }
+ for (int i = 0; i < selection_used_cells.size(); i++) {
+ coords = tile_map->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern);
+ cells_do[coords] = TileMapCell(selection_pattern->get_cell_source_id(selection_used_cells[i]), selection_pattern->get_cell_atlas_coords(selection_used_cells[i]), selection_pattern->get_cell_alternative_tile(selection_used_cells[i]));
+ }
- // Update the selection.
- undo_redo->add_undo_method(this, "_set_tile_map_selection", _get_tile_map_selection());
- tile_map_selection.clear();
- for (int i = 0; i < selection_used_cells.size(); i++) {
- coords = tile_map->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern);
- tile_map_selection.insert(coords);
+ // Move the tiles.
+ undo_redo->create_action(TTR("Move tiles"));
+ for (Map<Vector2i, TileMapCell>::Element *E = cells_do.front(); E; E = E->next()) {
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ }
+ for (Map<Vector2i, TileMapCell>::Element *E = cells_undo.front(); E; E = E->next()) {
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ }
+
+ // Update the selection.
+ undo_redo->add_undo_method(this, "_set_tile_map_selection", _get_tile_map_selection());
+ tile_map_selection.clear();
+ for (int i = 0; i < selection_used_cells.size(); i++) {
+ coords = tile_map->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern);
+ tile_map_selection.insert(coords);
+ }
+ undo_redo->add_do_method(this, "_set_tile_map_selection", _get_tile_map_selection());
+ undo_redo->commit_action();
}
- undo_redo->add_do_method(this, "_set_tile_map_selection", _get_tile_map_selection());
- undo_redo->commit_action();
} break;
case DRAG_TYPE_PICK: {
Rect2i rect = Rect2i(tile_map->world_to_map(drag_start_mouse_pos), tile_map->world_to_map(mpos) - tile_map->world_to_map(drag_start_mouse_pos)).abs();
rect.size += Vector2i(1, 1);
- memdelete(selection_pattern);
+
TypedArray<Vector2i> coords_array;
for (int x = rect.position.x; x < rect.get_end().x; x++) {
for (int y = rect.position.y; y < rect.get_end().y; y++) {
@@ -1200,11 +1322,10 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
}
}
}
- selection_pattern = tile_map->get_pattern(tile_map_layer, coords_array);
- if (!selection_pattern->is_empty()) {
+ Ref<TileMapPattern> new_selection_pattern = tile_map->get_pattern(tile_map_layer, coords_array);
+ if (!new_selection_pattern->is_empty()) {
+ selection_pattern = new_selection_pattern;
_update_tileset_selection_from_selection_pattern();
- } else {
- _update_selection_pattern_from_tileset_selection();
}
picker_button->set_pressed(false);
} break;
@@ -1220,7 +1341,7 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
Map<Vector2i, TileMapCell> to_draw = _draw_line(drag_start_mouse_pos, drag_start_mouse_pos, mpos);
undo_redo->create_action(TTR("Paint tiles"));
for (const KeyValue<Vector2i, TileMapCell> &E : to_draw) {
- if (!erase_button->is_pressed() && E.value.source_id == TileSet::INVALID_SOURCE) {
+ if (!_is_erasing() && E.value.source_id == TileSet::INVALID_SOURCE) {
continue;
}
undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E.key, E.value.source_id, E.value.get_atlas_coords(), E.value.alternative_tile);
@@ -1232,7 +1353,7 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
Map<Vector2i, TileMapCell> to_draw = _draw_rect(tile_map->world_to_map(drag_start_mouse_pos), tile_map->world_to_map(mpos));
undo_redo->create_action(TTR("Paint tiles"));
for (const KeyValue<Vector2i, TileMapCell> &E : to_draw) {
- if (!erase_button->is_pressed() && E.value.source_id == TileSet::INVALID_SOURCE) {
+ if (!_is_erasing() && E.value.source_id == TileSet::INVALID_SOURCE) {
continue;
}
undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E.key, E.value.source_id, E.value.get_atlas_coords(), E.value.alternative_tile);
@@ -1272,8 +1393,9 @@ void TileMapEditorTilesPlugin::_update_fix_selected_and_hovered() {
hovered_tile.set_atlas_coords(TileSetSource::INVALID_ATLAS_COORDS);
hovered_tile.alternative_tile = TileSetSource::INVALID_TILE_ALTERNATIVE;
tile_set_selection.clear();
+ patterns_item_list->deselect_all();
tile_map_selection.clear();
- selection_pattern->clear();
+ selection_pattern.instantiate();
return;
}
@@ -1283,8 +1405,9 @@ void TileMapEditorTilesPlugin::_update_fix_selected_and_hovered() {
hovered_tile.set_atlas_coords(TileSetSource::INVALID_ATLAS_COORDS);
hovered_tile.alternative_tile = TileSetSource::INVALID_TILE_ALTERNATIVE;
tile_set_selection.clear();
+ patterns_item_list->deselect_all();
tile_map_selection.clear();
- selection_pattern->clear();
+ selection_pattern.instantiate();
return;
}
@@ -1294,8 +1417,9 @@ void TileMapEditorTilesPlugin::_update_fix_selected_and_hovered() {
hovered_tile.set_atlas_coords(TileSetSource::INVALID_ATLAS_COORDS);
hovered_tile.alternative_tile = TileSetSource::INVALID_TILE_ALTERNATIVE;
tile_set_selection.clear();
+ patterns_item_list->deselect_all();
tile_map_selection.clear();
- selection_pattern->clear();
+ selection_pattern.instantiate();
return;
}
@@ -1323,8 +1447,10 @@ void TileMapEditorTilesPlugin::_update_fix_selected_and_hovered() {
if (!tile_map_selection.is_empty()) {
_update_selection_pattern_from_tilemap_selection();
+ } else if (tiles_bottom_panel->is_visible_in_tree()) {
+ _update_selection_pattern_from_tileset_tiles_selection();
} else {
- _update_selection_pattern_from_tileset_selection();
+ _update_selection_pattern_from_tileset_pattern_selection();
}
}
@@ -1347,15 +1473,24 @@ void TileMapEditorTilesPlugin::_fix_invalid_tiles_in_tile_map_selection() {
}
}
+bool TileMapEditorTilesPlugin::_is_erasing() const {
+ return erase_button->is_pressed() || rmb_erasing;
+}
+
void TileMapEditorTilesPlugin::_update_selection_pattern_from_tilemap_selection() {
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (!tile_map) {
return;
}
+ Ref<TileSet> tile_set = tile_map->get_tileset();
+ if (!tile_set.is_valid()) {
+ return;
+ }
+
ERR_FAIL_INDEX(tile_map_layer, tile_map->get_layers_count());
- memdelete(selection_pattern);
+ selection_pattern.instantiate();
TypedArray<Vector2i> coords_array;
for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
@@ -1364,7 +1499,7 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tilemap_selection(
selection_pattern = tile_map->get_pattern(tile_map_layer, coords_array);
}
-void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_selection() {
+void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_tiles_selection() {
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (!tile_map) {
return;
@@ -1379,7 +1514,7 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_selection(
tile_map_selection.clear();
// Clear the selected pattern.
- selection_pattern->clear();
+ selection_pattern.instantiate();
// Group per source.
Map<int, List<const TileMapCell *>> per_source;
@@ -1437,6 +1572,30 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_selection(
CanvasItemEditor::get_singleton()->update_viewport();
}
+void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_pattern_selection() {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (!tile_map) {
+ return;
+ }
+
+ Ref<TileSet> tile_set = tile_map->get_tileset();
+ if (!tile_set.is_valid()) {
+ return;
+ }
+
+ // Clear the tilemap selection.
+ tile_map_selection.clear();
+
+ // Clear the selected pattern.
+ selection_pattern.instantiate();
+
+ if (patterns_item_list->get_selected_items().size() >= 1) {
+ selection_pattern = patterns_item_list->get_item_metadata(patterns_item_list->get_selected_items()[0]);
+ }
+
+ CanvasItemEditor::get_singleton()->update_viewport();
+}
+
void TileMapEditorTilesPlugin::_update_tileset_selection_from_selection_pattern() {
tile_set_selection.clear();
TypedArray<Vector2i> used_cells = selection_pattern->get_used_cells();
@@ -1446,7 +1605,7 @@ void TileMapEditorTilesPlugin::_update_tileset_selection_from_selection_pattern(
tile_set_selection.insert(TileMapCell(selection_pattern->get_cell_source_id(coords), selection_pattern->get_cell_atlas_coords(coords), selection_pattern->get_cell_alternative_tile(coords)));
}
}
- _update_bottom_panel();
+ _update_source_display();
tile_atlas_control->update();
alternative_tiles_control->update();
}
@@ -1596,7 +1755,7 @@ void TileMapEditorTilesPlugin::_tile_atlas_control_gui_input(const Ref<InputEven
tile_set_selection.insert(TileMapCell(source_id, hovered_tile.get_atlas_coords(), 0));
}
}
- _update_selection_pattern_from_tileset_selection();
+ _update_selection_pattern_from_tileset_tiles_selection();
} else { // Released
if (tile_set_dragging_selection) {
if (!mb->is_shift_pressed()) {
@@ -1633,7 +1792,7 @@ void TileMapEditorTilesPlugin::_tile_atlas_control_gui_input(const Ref<InputEven
}
}
}
- _update_selection_pattern_from_tileset_selection();
+ _update_selection_pattern_from_tileset_tiles_selection();
}
tile_set_dragging_selection = false;
}
@@ -1753,7 +1912,7 @@ void TileMapEditorTilesPlugin::_tile_alternatives_control_gui_input(const Ref<In
tile_set_selection.insert(TileMapCell(source_id, hovered_tile.get_atlas_coords(), hovered_tile.alternative_tile));
}
}
- _update_selection_pattern_from_tileset_selection();
+ _update_selection_pattern_from_tileset_tiles_selection();
}
tile_atlas_control->update();
alternative_tiles_control->update();
@@ -1786,8 +1945,9 @@ void TileMapEditorTilesPlugin::edit(ObjectID p_tile_map_id, int p_tile_map_layer
// Clear the selection.
tile_set_selection.clear();
+ patterns_item_list->deselect_all();
tile_map_selection.clear();
- selection_pattern->clear();
+ selection_pattern.instantiate();
}
tile_map_layer = p_tile_map_layer;
@@ -1809,9 +1969,13 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
ED_SHORTCUT("tiles_editor/cancel", TTR("Cancel"), KEY_ESCAPE);
ED_SHORTCUT("tiles_editor/delete", TTR("Delete"), KEY_DELETE);
+ // --- Initialize references ---
+ tile_map_clipboard.instantiate();
+ selection_pattern.instantiate();
+
// --- Toolbar ---
toolbar = memnew(HBoxContainer);
- toolbar->set_h_size_flags(SIZE_EXPAND_FILL);
+ toolbar->set_h_size_flags(Control::SIZE_EXPAND_FILL);
HBoxContainer *tilemap_tiles_tools_buttons = memnew(HBoxContainer);
@@ -1830,6 +1994,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
paint_tool_button->set_toggle_mode(true);
paint_tool_button->set_button_group(tool_buttons_group);
paint_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/paint_tool", "Paint", KEY_D));
+ paint_tool_button->set_tooltip(TTR("Shift: Draw line.") + "\n" + TTR("Shift+Ctrl: Draw rectangle."));
paint_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
tilemap_tiles_tools_buttons->add_child(paint_tool_button);
@@ -1870,6 +2035,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
picker_button->set_flat(true);
picker_button->set_toggle_mode(true);
picker_button->set_shortcut(ED_SHORTCUT("tiles_editor/picker", "Picker", KEY_P));
+ picker_button->set_tooltip(TTR("Alternatively hold Ctrl with other tools to pick tile."));
picker_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
tools_settings->add_child(picker_button);
@@ -1878,6 +2044,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
erase_button->set_flat(true);
erase_button->set_toggle_mode(true);
erase_button->set_shortcut(ED_SHORTCUT("tiles_editor/eraser", "Eraser", KEY_E));
+ erase_button->set_tooltip(TTR("Alternatively use RMB to erase tiles."));
erase_button->connect("pressed", callable_mp(CanvasItemEditor::get_singleton(), &CanvasItemEditor::update_viewport));
tools_settings->add_child(erase_button);
@@ -1919,42 +2086,47 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
paint_tool_button->set_pressed(true);
_update_toolbar();
- // --- Bottom panel ---
- set_name("Tiles");
+ // --- Bottom panel tiles ---
+ tiles_bottom_panel = memnew(VBoxContainer);
+ tiles_bottom_panel->connect("tree_entered", callable_mp(this, &TileMapEditorTilesPlugin::_update_theme));
+ tiles_bottom_panel->connect("theme_changed", callable_mp(this, &TileMapEditorTilesPlugin::_update_theme));
+ tiles_bottom_panel->connect("visibility_changed", callable_mp(this, &TileMapEditorTilesPlugin::_stop_dragging));
+ tiles_bottom_panel->connect("visibility_changed", callable_mp(this, &TileMapEditorTilesPlugin::_tab_changed));
+ tiles_bottom_panel->set_name(TTR("Tiles"));
missing_source_label = memnew(Label);
missing_source_label->set_text(TTR("This TileMap's TileSet has no source configured. Edit the TileSet resource to add one."));
- missing_source_label->set_h_size_flags(SIZE_EXPAND_FILL);
- missing_source_label->set_v_size_flags(SIZE_EXPAND_FILL);
+ missing_source_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ missing_source_label->set_v_size_flags(Control::SIZE_EXPAND_FILL);
missing_source_label->set_align(Label::ALIGN_CENTER);
missing_source_label->set_valign(Label::VALIGN_CENTER);
missing_source_label->hide();
- add_child(missing_source_label);
+ tiles_bottom_panel->add_child(missing_source_label);
atlas_sources_split_container = memnew(HSplitContainer);
- atlas_sources_split_container->set_h_size_flags(SIZE_EXPAND_FILL);
- atlas_sources_split_container->set_v_size_flags(SIZE_EXPAND_FILL);
- add_child(atlas_sources_split_container);
+ atlas_sources_split_container->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ atlas_sources_split_container->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ tiles_bottom_panel->add_child(atlas_sources_split_container);
sources_list = memnew(ItemList);
sources_list->set_fixed_icon_size(Size2i(60, 60) * EDSCALE);
- sources_list->set_h_size_flags(SIZE_EXPAND_FILL);
+ sources_list->set_h_size_flags(Control::SIZE_EXPAND_FILL);
sources_list->set_stretch_ratio(0.25);
sources_list->set_custom_minimum_size(Size2i(70, 0) * EDSCALE);
sources_list->set_texture_filter(CanvasItem::TEXTURE_FILTER_NEAREST);
sources_list->connect("item_selected", callable_mp(this, &TileMapEditorTilesPlugin::_update_fix_selected_and_hovered).unbind(1));
- sources_list->connect("item_selected", callable_mp(this, &TileMapEditorTilesPlugin::_update_bottom_panel).unbind(1));
- sources_list->connect("item_selected", callable_mp(TilesEditor::get_singleton(), &TilesEditor::set_sources_lists_current));
- sources_list->connect("visibility_changed", callable_mp(TilesEditor::get_singleton(), &TilesEditor::synchronize_sources_list), varray(sources_list));
+ sources_list->connect("item_selected", callable_mp(this, &TileMapEditorTilesPlugin::_update_source_display).unbind(1));
+ sources_list->connect("item_selected", callable_mp(TilesEditorPlugin::get_singleton(), &TilesEditorPlugin::set_sources_lists_current));
+ sources_list->connect("visibility_changed", callable_mp(TilesEditorPlugin::get_singleton(), &TilesEditorPlugin::synchronize_sources_list), varray(sources_list));
atlas_sources_split_container->add_child(sources_list);
// Tile atlas source.
tile_atlas_view = memnew(TileAtlasView);
- tile_atlas_view->set_h_size_flags(SIZE_EXPAND_FILL);
- tile_atlas_view->set_v_size_flags(SIZE_EXPAND_FILL);
+ tile_atlas_view->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ tile_atlas_view->set_v_size_flags(Control::SIZE_EXPAND_FILL);
tile_atlas_view->set_texture_grid_visible(false);
tile_atlas_view->set_tile_shape_grid_visible(false);
- tile_atlas_view->connect("transform_changed", callable_mp(TilesEditor::get_singleton(), &TilesEditor::set_atlas_view_transform));
+ tile_atlas_view->connect("transform_changed", callable_mp(TilesEditorPlugin::get_singleton(), &TilesEditorPlugin::set_atlas_view_transform));
atlas_sources_split_container->add_child(tile_atlas_view);
tile_atlas_control = memnew(Control);
@@ -1971,8 +2143,8 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
// Scenes collection source.
scene_tiles_list = memnew(ItemList);
- scene_tiles_list->set_h_size_flags(SIZE_EXPAND_FILL);
- scene_tiles_list->set_v_size_flags(SIZE_EXPAND_FILL);
+ scene_tiles_list->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ scene_tiles_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
scene_tiles_list->set_drag_forwarding(this);
scene_tiles_list->set_select_mode(ItemList::SELECT_MULTI);
scene_tiles_list->connect("multi_selected", callable_mp(this, &TileMapEditorTilesPlugin::_scenes_list_multi_selected));
@@ -1983,30 +2155,42 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
// Invalid source label.
invalid_source_label = memnew(Label);
invalid_source_label->set_text(TTR("Invalid source selected."));
- invalid_source_label->set_h_size_flags(SIZE_EXPAND_FILL);
- invalid_source_label->set_v_size_flags(SIZE_EXPAND_FILL);
+ invalid_source_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ invalid_source_label->set_v_size_flags(Control::SIZE_EXPAND_FILL);
invalid_source_label->set_align(Label::ALIGN_CENTER);
invalid_source_label->set_valign(Label::VALIGN_CENTER);
invalid_source_label->hide();
atlas_sources_split_container->add_child(invalid_source_label);
- _update_bottom_panel();
+ // --- Bottom panel patterns ---
+ patterns_bottom_panel = memnew(VBoxContainer);
+ patterns_bottom_panel->set_name(TTR("Patterns"));
+ patterns_bottom_panel->connect("visibility_changed", callable_mp(this, &TileMapEditorTilesPlugin::_tab_changed));
+
+ int thumbnail_size = 64;
+ patterns_item_list = memnew(ItemList);
+ patterns_item_list->set_max_columns(0);
+ patterns_item_list->set_icon_mode(ItemList::ICON_MODE_TOP);
+ patterns_item_list->set_fixed_column_width(thumbnail_size * 3 / 2);
+ patterns_item_list->set_max_text_lines(2);
+ patterns_item_list->set_fixed_icon_size(Size2(thumbnail_size, thumbnail_size));
+ patterns_item_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ patterns_item_list->connect("gui_input", callable_mp(this, &TileMapEditorTilesPlugin::_patterns_item_list_gui_input));
+ patterns_item_list->connect("item_selected", callable_mp(this, &TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_pattern_selection).unbind(1));
+ patterns_item_list->connect("item_activated", callable_mp(this, &TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_pattern_selection));
+ patterns_item_list->connect("nothing_selected", callable_mp(this, &TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_pattern_selection));
+ patterns_bottom_panel->add_child(patterns_item_list);
+
+ patterns_help_label = memnew(Label);
+ patterns_help_label->set_text(TTR("Drag and drop or paste a TileMap selection here to store a pattern."));
+ patterns_help_label->set_anchors_and_offsets_preset(Control::PRESET_CENTER);
+ patterns_item_list->add_child(patterns_help_label);
+
+ // Update.
+ _update_source_display();
}
TileMapEditorTilesPlugin::~TileMapEditorTilesPlugin() {
- memdelete(selection_pattern);
- memdelete(tile_map_clipboard);
-}
-
-void TileMapEditorTerrainsPlugin::_notification(int p_what) {
- switch (p_what) {
- case NOTIFICATION_ENTER_TREE:
- case NOTIFICATION_THEME_CHANGED:
- paint_tool_button->set_icon(get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")));
- picker_button->set_icon(get_theme_icon(SNAME("ColorPick"), SNAME("EditorIcons")));
- erase_button->set_icon(get_theme_icon(SNAME("Eraser"), SNAME("EditorIcons")));
- break;
- }
}
void TileMapEditorTerrainsPlugin::tile_set_changed() {
@@ -2029,8 +2213,10 @@ void TileMapEditorTerrainsPlugin::_update_toolbar() {
}
}
-Control *TileMapEditorTerrainsPlugin::get_toolbar() const {
- return toolbar;
+Vector<TileMapEditorPlugin::TabData> TileMapEditorTerrainsPlugin::get_tabs() const {
+ Vector<TileMapEditorPlugin::TabData> tabs;
+ tabs.push_back({ toolbar, main_vbox_container });
+ return tabs;
}
Map<Vector2i, TileSet::CellNeighbor> TileMapEditorTerrainsPlugin::Constraint::get_overlapping_coords_and_peering_bits() const {
@@ -2788,7 +2974,7 @@ void TileMapEditorTerrainsPlugin::_stop_dragging() {
}
bool TileMapEditorTerrainsPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
- if (!is_visible_in_tree()) {
+ if (!main_vbox_container->is_visible_in_tree()) {
// If the bottom editor is not visible, we ignore inputs.
return false;
}
@@ -3060,13 +3246,13 @@ void TileMapEditorTerrainsPlugin::_update_terrains_tree() {
TreeItem *terrain_set_tree_item = terrains_tree->create_item();
String matches;
if (tile_set->get_terrain_set_mode(terrain_set_index) == TileSet::TERRAIN_MODE_MATCH_CORNERS_AND_SIDES) {
- terrain_set_tree_item->set_icon(0, get_theme_icon(SNAME("TerrainMatchCornersAndSides"), SNAME("EditorIcons")));
+ terrain_set_tree_item->set_icon(0, main_vbox_container->get_theme_icon(SNAME("TerrainMatchCornersAndSides"), SNAME("EditorIcons")));
matches = String(TTR("Matches Corners and Sides"));
} else if (tile_set->get_terrain_set_mode(terrain_set_index) == TileSet::TERRAIN_MODE_MATCH_CORNERS) {
- terrain_set_tree_item->set_icon(0, get_theme_icon(SNAME("TerrainMatchCorners"), SNAME("EditorIcons")));
+ terrain_set_tree_item->set_icon(0, main_vbox_container->get_theme_icon(SNAME("TerrainMatchCorners"), SNAME("EditorIcons")));
matches = String(TTR("Matches Corners Only"));
} else {
- terrain_set_tree_item->set_icon(0, get_theme_icon(SNAME("TerrainMatchSides"), SNAME("EditorIcons")));
+ terrain_set_tree_item->set_icon(0, main_vbox_container->get_theme_icon(SNAME("TerrainMatchSides"), SNAME("EditorIcons")));
matches = String(TTR("Matches Sides Only"));
}
terrain_set_tree_item->set_text(0, vformat("Terrain Set %d (%s)", terrain_set_index, matches));
@@ -3171,6 +3357,12 @@ void TileMapEditorTerrainsPlugin::_update_tiles_list() {
}
}
+void TileMapEditorTerrainsPlugin::_update_theme() {
+ paint_tool_button->set_icon(main_vbox_container->get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")));
+ 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")));
+}
+
void TileMapEditorTerrainsPlugin::edit(ObjectID p_tile_map_id, int p_tile_map_layer) {
_stop_dragging(); // Avoids staying in a wrong drag state.
@@ -3183,15 +3375,18 @@ void TileMapEditorTerrainsPlugin::edit(ObjectID p_tile_map_id, int p_tile_map_la
}
TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
- set_name("Terrains");
+ main_vbox_container = memnew(VBoxContainer);
+ main_vbox_container->connect("tree_entered", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_theme));
+ main_vbox_container->connect("theme_changed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_theme));
+ main_vbox_container->set_name("Terrains");
HSplitContainer *tilemap_tab_terrains = memnew(HSplitContainer);
- tilemap_tab_terrains->set_h_size_flags(SIZE_EXPAND_FILL);
- tilemap_tab_terrains->set_v_size_flags(SIZE_EXPAND_FILL);
- add_child(tilemap_tab_terrains);
+ tilemap_tab_terrains->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ tilemap_tab_terrains->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ main_vbox_container->add_child(tilemap_tab_terrains);
terrains_tree = memnew(Tree);
- terrains_tree->set_h_size_flags(SIZE_EXPAND_FILL);
+ terrains_tree->set_h_size_flags(Control::SIZE_EXPAND_FILL);
terrains_tree->set_stretch_ratio(0.25);
terrains_tree->set_custom_minimum_size(Size2i(70, 0) * EDSCALE);
terrains_tree->set_texture_filter(CanvasItem::TEXTURE_FILTER_NEAREST);
@@ -3200,7 +3395,7 @@ TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
tilemap_tab_terrains->add_child(terrains_tree);
terrains_tile_list = memnew(ItemList);
- terrains_tile_list->set_h_size_flags(SIZE_EXPAND_FILL);
+ 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);
@@ -3267,7 +3462,7 @@ void TileMapEditor::_notification(int p_what) {
if (is_visible_in_tree() && tileset_changed_needs_update) {
_update_bottom_panel();
_update_layers_selection();
- tile_map_editor_plugins[tabs->get_current_tab()]->tile_set_changed();
+ tabs_plugins[tabs_bar->get_current_tab()]->tile_set_changed();
CanvasItemEditor::get_singleton()->update_viewport();
tileset_changed_needs_update = false;
}
@@ -3391,14 +3586,11 @@ void TileMapEditor::_update_bottom_panel() {
// Update the visibility of controls.
missing_tileset_label->set_visible(!tile_set.is_valid());
- if (!tile_set.is_valid()) {
- for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
- tile_map_editor_plugins[i]->hide();
- }
- } else {
- for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
- tile_map_editor_plugins[i]->set_visible(i == tabs->get_current_tab());
- }
+ for (unsigned int tab_index = 0; tab_index < tabs_data.size(); tab_index++) {
+ tabs_data[tab_index].panel->hide();
+ }
+ if (tile_set.is_valid()) {
+ tabs_data[tabs_bar->get_current_tab()].panel->show();
}
}
@@ -3481,27 +3673,25 @@ void TileMapEditor::_tile_map_changed() {
void TileMapEditor::_tab_changed(int p_tab_id) {
// Make the plugin edit the correct tilemap.
- tile_map_editor_plugins[tabs->get_current_tab()]->edit(tile_map_id, tile_map_layer);
+ tabs_plugins[tabs_bar->get_current_tab()]->edit(tile_map_id, tile_map_layer);
// Update toolbar.
- for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
- tile_map_editor_plugins[i]->get_toolbar()->set_visible(i == p_tab_id);
+ for (unsigned int tab_index = 0; tab_index < tabs_data.size(); tab_index++) {
+ tabs_data[tab_index].toolbar->hide();
}
+ tabs_data[p_tab_id].toolbar->show();
// Update visible panel.
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
- if (!tile_map || !tile_map->get_tileset().is_valid()) {
- for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
- tile_map_editor_plugins[i]->hide();
- }
- } else {
- for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
- tile_map_editor_plugins[i]->set_visible(i == tabs->get_current_tab());
- }
+ for (unsigned int tab_index = 0; tab_index < tabs_data.size(); tab_index++) {
+ tabs_data[tab_index].panel->hide();
+ }
+ if (tile_map && tile_map->get_tileset().is_valid()) {
+ tabs_data[tabs_bar->get_current_tab()].panel->show();
}
// Graphical update.
- tile_map_editor_plugins[tabs->get_current_tab()]->update();
+ tabs_data[tabs_bar->get_current_tab()].panel->update();
CanvasItemEditor::get_singleton()->update_viewport();
}
@@ -3588,7 +3778,7 @@ void TileMapEditor::_update_layers_selection() {
layers_selection_button->set_custom_minimum_size(min_button_size);
layers_selection_button->update();
- tile_map_editor_plugins[tabs->get_current_tab()]->edit(tile_map_id, tile_map_layer);
+ tabs_plugins[tabs_bar->get_current_tab()]->edit(tile_map_id, tile_map_layer);
}
void TileMapEditor::_move_tile_map_array_element(Object *p_undo_redo, Object *p_edited, String p_array_prefix, int p_from_index, int p_to_pos) {
@@ -3674,7 +3864,7 @@ bool TileMapEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
return true;
}
- return tile_map_editor_plugins[tabs->get_current_tab()]->forward_canvas_gui_input(p_event);
+ return tabs_plugins[tabs_bar->get_current_tab()]->forward_canvas_gui_input(p_event);
}
void TileMapEditor::forward_canvas_draw_over_viewport(Control *p_overlay) {
@@ -3809,7 +3999,7 @@ void TileMapEditor::forward_canvas_draw_over_viewport(Control *p_overlay) {
}*/
// Draw the plugins.
- tile_map_editor_plugins[tabs->get_current_tab()]->forward_canvas_draw_over_viewport(p_overlay);
+ tabs_plugins[tabs_bar->get_current_tab()]->forward_canvas_draw_over_viewport(p_overlay);
}
void TileMapEditor::edit(TileMap *p_tile_map) {
@@ -3843,7 +4033,7 @@ void TileMapEditor::edit(TileMap *p_tile_map) {
_update_layers_selection();
// Call the plugins.
- tile_map_editor_plugins[tabs->get_current_tab()]->edit(tile_map_id, tile_map_layer);
+ tabs_plugins[tabs_bar->get_current_tab()]->edit(tile_map_id, tile_map_layer);
_tile_map_changed();
}
@@ -3859,25 +4049,33 @@ TileMapEditor::TileMapEditor() {
tile_map_editor_plugins.push_back(memnew(TileMapEditorTilesPlugin));
tile_map_editor_plugins.push_back(memnew(TileMapEditorTerrainsPlugin));
- // Tabs.
- tabs = memnew(Tabs);
- tabs->set_clip_tabs(false);
- for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
- tabs->add_tab(tile_map_editor_plugins[i]->get_name());
+ // TabBar.
+ tabs_bar = memnew(TabBar);
+ 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();
+ for (int tab_index = 0; tab_index < tabs_vector.size(); tab_index++) {
+ tabs_bar->add_tab(tabs_vector[tab_index].panel->get_name());
+ tabs_data.push_back(tabs_vector[tab_index]);
+ tabs_plugins.push_back(tile_map_editor_plugins[plugin_index]);
+ }
}
- tabs->connect("tab_changed", callable_mp(this, &TileMapEditor::_tab_changed));
+ tabs_bar->connect("tab_changed", callable_mp(this, &TileMapEditor::_tab_changed));
// --- TileMap toolbar ---
tile_map_toolbar = memnew(HBoxContainer);
tile_map_toolbar->set_h_size_flags(SIZE_EXPAND_FILL);
+ add_child(tile_map_toolbar);
// Tabs.
- tile_map_toolbar->add_child(tabs);
+ tile_map_toolbar->add_child(tabs_bar);
// Tabs toolbars.
- for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
- tile_map_editor_plugins[i]->get_toolbar()->hide();
- tile_map_toolbar->add_child(tile_map_editor_plugins[i]->get_toolbar());
+ for (unsigned int tab_index = 0; tab_index < tabs_data.size(); tab_index++) {
+ tabs_data[tab_index].toolbar->hide();
+ if (!tabs_data[tab_index].toolbar->get_parent()) {
+ tile_map_toolbar->add_child(tabs_data[tab_index].toolbar);
+ }
}
// Wide empty separation control.
@@ -3933,11 +4131,11 @@ TileMapEditor::TileMapEditor() {
missing_tileset_label->hide();
add_child(missing_tileset_label);
- for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
- add_child(tile_map_editor_plugins[i]);
- tile_map_editor_plugins[i]->set_h_size_flags(SIZE_EXPAND_FILL);
- tile_map_editor_plugins[i]->set_v_size_flags(SIZE_EXPAND_FILL);
- tile_map_editor_plugins[i]->set_visible(i == 0);
+ for (unsigned int tab_index = 0; tab_index < tabs_data.size(); tab_index++) {
+ add_child(tabs_data[tab_index].panel);
+ tabs_data[tab_index].panel->set_v_size_flags(SIZE_EXPAND_FILL);
+ tabs_data[tab_index].panel->set_visible(tab_index == 0);
+ tabs_data[tab_index].panel->set_h_size_flags(SIZE_EXPAND_FILL);
}
_tab_changed(0);
@@ -3947,4 +4145,7 @@ TileMapEditor::TileMapEditor() {
}
TileMapEditor::~TileMapEditor() {
+ for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
+ memdelete(tile_map_editor_plugins[i]);
+ }
}
diff --git a/editor/plugins/tiles/tile_map_editor.h b/editor/plugins/tiles/tile_map_editor.h
index a1ab3db318..1f1a560113 100644
--- a/editor/plugins/tiles/tile_map_editor.h
+++ b/editor/plugins/tiles/tile_map_editor.h
@@ -33,17 +33,24 @@
#include "tile_atlas_view.h"
+#include "core/os/thread.h"
#include "core/typedefs.h"
#include "editor/editor_node.h"
#include "scene/2d/tile_map.h"
#include "scene/gui/box_container.h"
-#include "scene/gui/tabs.h"
+#include "scene/gui/tab_bar.h"
-class TileMapEditorPlugin : public VBoxContainer {
+class TileMapEditorPlugin : public Object {
public:
- virtual Control *get_toolbar() const {
- return memnew(Control);
+ struct TabData {
+ Control *toolbar;
+ Control *panel;
};
+
+ virtual Vector<TabData> get_tabs() const {
+ return Vector<TabData>();
+ };
+
virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return false; };
virtual void forward_canvas_draw_over_viewport(Control *p_overlay){};
virtual void tile_set_changed(){};
@@ -104,29 +111,36 @@ private:
Vector2 drag_start_mouse_pos;
Vector2 drag_last_mouse_pos;
Map<Vector2i, TileMapCell> drag_modified;
+ bool rmb_erasing = false;
- TileMapCell _pick_random_tile(const TileMapPattern *p_pattern);
+ TileMapCell _pick_random_tile(Ref<TileMapPattern> p_pattern);
Map<Vector2i, TileMapCell> _draw_line(Vector2 p_start_drag_mouse_pos, Vector2 p_from_mouse_pos, Vector2 p_to_mouse_pos);
Map<Vector2i, TileMapCell> _draw_rect(Vector2i p_start_cell, Vector2i p_end_cell);
Map<Vector2i, TileMapCell> _draw_bucket_fill(Vector2i p_coords, bool p_contiguous);
void _stop_dragging();
+ bool _is_erasing() const;
///// Selection system. /////
Set<Vector2i> tile_map_selection;
- TileMapPattern *tile_map_clipboard = memnew(TileMapPattern);
- TileMapPattern *selection_pattern = memnew(TileMapPattern);
+ Ref<TileMapPattern> tile_map_clipboard;
+ Ref<TileMapPattern> selection_pattern;
void _set_tile_map_selection(const TypedArray<Vector2i> &p_selection);
TypedArray<Vector2i> _get_tile_map_selection() const;
Set<TileMapCell> tile_set_selection;
void _update_selection_pattern_from_tilemap_selection();
- void _update_selection_pattern_from_tileset_selection();
+ void _update_selection_pattern_from_tileset_tiles_selection();
+ void _update_selection_pattern_from_tileset_pattern_selection();
void _update_tileset_selection_from_selection_pattern();
void _update_fix_selected_and_hovered();
void _fix_invalid_tiles_in_tile_map_selection();
- ///// Bottom panel. ////.
+ ///// Bottom panel common ////
+ void _tab_changed();
+
+ ///// Bottom panel tiles ////
+ VBoxContainer *tiles_bottom_panel;
Label *missing_source_label;
Label *invalid_source_label;
@@ -135,7 +149,7 @@ private:
Ref<Texture2D> missing_atlas_texture_icon;
void _update_tile_set_sources_list();
- void _update_bottom_panel();
+ void _update_source_display();
// Atlas sources.
TileMapCell hovered_tile;
@@ -165,15 +179,26 @@ private:
void _scenes_list_multi_selected(int p_index, bool p_selected);
void _scenes_list_nothing_selected();
+ ///// Bottom panel patterns ////
+ VBoxContainer *patterns_bottom_panel;
+ ItemList *patterns_item_list;
+ Label *patterns_help_label;
+ void _patterns_item_list_gui_input(const Ref<InputEvent> &p_event);
+ void _pattern_preview_done(Ref<TileMapPattern> p_pattern, Ref<Texture2D> p_texture);
+ bool select_last_pattern = false;
+ void _update_patterns_list();
+
+ // General
+ void _update_theme();
+
// Update callback
virtual void tile_set_changed() override;
protected:
- void _notification(int p_what);
static void _bind_methods();
public:
- virtual Control *get_toolbar() const override;
+ virtual Vector<TabData> get_tabs() const override;
virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) override;
virtual void forward_canvas_draw_over_viewport(Control *p_overlay) override;
@@ -203,6 +228,9 @@ private:
void _update_toolbar();
+ // Main vbox.
+ VBoxContainer *main_vbox_container;
+
// TileMap editing.
enum DragType {
DRAG_TYPE_NONE = 0,
@@ -279,16 +307,13 @@ private:
void _update_terrains_cache();
void _update_terrains_tree();
void _update_tiles_list();
+ void _update_theme();
// Update callback
virtual void tile_set_changed() override;
-protected:
- void _notification(int p_what);
- // static void _bind_methods();
-
public:
- virtual Control *get_toolbar() const override;
+ virtual Vector<TabData> get_tabs() const override;
virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) override;
//virtual void forward_canvas_draw_over_viewport(Control *p_overlay) override;
@@ -326,7 +351,9 @@ private:
// Bottom panel.
Label *missing_tileset_label;
- Tabs *tabs;
+ TabBar *tabs_bar;
+ LocalVector<TileMapEditorPlugin::TabData> tabs_data;
+ LocalVector<TileMapEditorPlugin *> tabs_plugins;
void _update_bottom_panel();
// TileMap.
@@ -353,7 +380,6 @@ public:
void forward_canvas_draw_over_viewport(Control *p_overlay);
void edit(TileMap *p_tile_map);
- Control *get_toolbar() { return tile_map_toolbar; };
TileMapEditor();
~TileMapEditor();
diff --git a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
index 3fbd315aec..c8892bceaa 100644
--- a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
+++ b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
@@ -66,10 +66,15 @@ int TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::get_id() {
}
bool TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_set(const StringName &p_name, const Variant &p_value) {
+ String name = p_name;
+ if (name == "name") {
+ // Use the resource_name property to store the source's name.
+ name = "resource_name";
+ }
bool valid = false;
- tile_set_atlas_source->set(p_name, p_value, &valid);
+ tile_set_atlas_source->set(name, p_value, &valid);
if (valid) {
- emit_signal(SNAME("changed"), String(p_name).utf8().get_data());
+ emit_signal(SNAME("changed"), String(name).utf8().get_data());
}
return valid;
}
@@ -78,12 +83,18 @@ bool TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_get(const StringN
if (!tile_set_atlas_source) {
return false;
}
+ String name = p_name;
+ if (name == "name") {
+ // Use the resource_name property to store the source's name.
+ name = "resource_name";
+ }
bool valid = false;
- r_ret = tile_set_atlas_source->get(p_name, &valid);
+ r_ret = tile_set_atlas_source->get(name, &valid);
return valid;
}
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, ""));
@@ -106,6 +117,10 @@ void TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::edit(Ref<TileSet>
ERR_FAIL_COND(p_source_id < 0);
ERR_FAIL_COND(p_tile_set->get_source(p_source_id) != p_tile_set_atlas_source);
+ if (p_tile_set == tile_set && p_tile_set_atlas_source == tile_set_atlas_source && p_source_id == source_id) {
+ return;
+ }
+
// Disconnect to changes.
if (tile_set_atlas_source) {
tile_set_atlas_source->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed));
@@ -157,7 +172,7 @@ bool TileSetAtlasSourceEditor::AtlasTileProxyObject::_set(const StringName &p_na
} else if (p_name == "size_in_atlas") {
Vector2i as_vector2i = Vector2i(p_value);
bool has_room_for_tile = tile_set_atlas_source->has_room_for_tile(coords, as_vector2i, tile_set_atlas_source->get_tile_animation_columns(coords), tile_set_atlas_source->get_tile_animation_separation(coords), tile_set_atlas_source->get_tile_animation_frames_count(coords), coords);
- ERR_FAIL_COND_V(!has_room_for_tile, false);
+ ERR_FAIL_COND_V_EDMSG(!has_room_for_tile, false, "Invalid size or not enough room in the atlas for the tile.");
tile_set_atlas_source->move_tile_in_atlas(coords, TileSetSource::INVALID_ATLAS_COORDS, as_vector2i);
emit_signal(SNAME("changed"), "size_in_atlas");
return true;
@@ -520,9 +535,6 @@ void TileSetAtlasSourceEditor::_update_tile_id_label() {
void TileSetAtlasSourceEditor::_update_source_inspector() {
// Update the proxy object.
atlas_source_proxy_object->edit(tile_set, tile_set_atlas_source, tile_set_atlas_source_id);
-
- // Update the "clear outside texture" button.
- tool_advanced_menu_buttom->get_popup()->set_item_disabled(0, !tile_set_atlas_source->has_tiles_outside_texture());
}
void TileSetAtlasSourceEditor::_update_fix_selected_and_hovered_tiles() {
@@ -763,7 +775,11 @@ void TileSetAtlasSourceEditor::_update_tile_data_editors() {
// Update visibility.
bool is_visible = tools_button_group->get_pressed_button() == tool_paint_button;
tile_data_editor_dropdown_button->set_visible(is_visible);
- tile_data_editor_dropdown_button->set_text(TTR("Select a property editor"));
+ if (tile_data_editors_tree->get_selected()) {
+ tile_data_editor_dropdown_button->set_text(tile_data_editors_tree->get_selected()->get_text(0));
+ } else {
+ tile_data_editor_dropdown_button->set_text(TTR("Select a property editor"));
+ }
tile_data_editors_label->set_visible(is_visible);
}
@@ -908,7 +924,7 @@ void TileSetAtlasSourceEditor::_update_atlas_view() {
tile_atlas_view->update();
// Synchronize atlas view.
- TilesEditor::get_singleton()->synchronize_atlas_view(tile_atlas_view);
+ TilesEditorPlugin::get_singleton()->synchronize_atlas_view(tile_atlas_view);
}
void TileSetAtlasSourceEditor::_update_toolbar() {
@@ -959,7 +975,7 @@ void TileSetAtlasSourceEditor::_tile_atlas_control_gui_input(const Ref<InputEven
current_tile_data_editor->forward_painting_atlas_gui_input(tile_atlas_view, tile_set_atlas_source, p_event);
}
// Update only what's needed.
- tile_set_atlas_source_changed_needs_update = false;
+ tile_set_changed_needs_update = false;
tile_atlas_control->update();
tile_atlas_control_unscaled->update();
@@ -1061,7 +1077,7 @@ void TileSetAtlasSourceEditor::_tile_atlas_control_gui_input(const Ref<InputEven
drag_current_tile = coords;
// Update only what's needed.
- tile_set_atlas_source_changed_needs_update = false;
+ tile_set_changed_needs_update = false;
_update_tile_inspector();
_update_atlas_view();
_update_tile_id_label();
@@ -1101,7 +1117,7 @@ void TileSetAtlasSourceEditor::_tile_atlas_control_gui_input(const Ref<InputEven
drag_current_tile = new_rect.position;
// Update only what's needed.
- tile_set_atlas_source_changed_needs_update = false;
+ tile_set_changed_needs_update = false;
_update_tile_inspector();
_update_atlas_view();
_update_tile_id_label();
@@ -1600,9 +1616,6 @@ void TileSetAtlasSourceEditor::_menu_option(int p_option) {
undo_redo->commit_action();
_update_tile_id_label();
} break;
- case ADVANCED_CLEANUP_TILES_OUTSIDE_TEXTURE: {
- tile_set_atlas_source->clear_tiles_outside_texture();
- } break;
case ADVANCED_AUTO_CREATE_TILES: {
_auto_create_tiles();
} break;
@@ -2012,12 +2025,12 @@ void TileSetAtlasSourceEditor::_tile_alternatives_control_unscaled_draw() {
}
}
-void TileSetAtlasSourceEditor::_tile_set_atlas_source_changed() {
- tile_set_atlas_source_changed_needs_update = true;
+void TileSetAtlasSourceEditor::_tile_set_changed() {
+ tile_set_changed_needs_update = true;
}
void TileSetAtlasSourceEditor::_tile_proxy_object_changed(String p_what) {
- tile_set_atlas_source_changed_needs_update = false; // Avoid updating too many things.
+ tile_set_changed_needs_update = false; // Avoid updating too many things.
_update_atlas_view();
}
@@ -2035,30 +2048,66 @@ void TileSetAtlasSourceEditor::_undo_redo_inspector_callback(Object *p_undo_redo
#define ADD_UNDO(obj, property) undo_redo->add_undo_property(obj, property, obj->get(property));
- AtlasTileProxyObject *tile_data = Object::cast_to<AtlasTileProxyObject>(p_edited);
- if (tile_data) {
+ undo_redo->start_force_keep_in_merge_ends();
+ AtlasTileProxyObject *tile_data_proxy = Object::cast_to<AtlasTileProxyObject>(p_edited);
+ if (tile_data_proxy) {
Vector<String> components = String(p_property).split("/", true, 2);
if (components.size() == 2 && components[1] == "polygons_count") {
int layer_index = components[0].trim_prefix("physics_layer_").to_int();
int new_polygons_count = p_new_value;
- int old_polygons_count = tile_data->get(vformat("physics_layer_%d/polygons_count", layer_index));
+ int old_polygons_count = tile_data_proxy->get(vformat("physics_layer_%d/polygons_count", layer_index));
if (new_polygons_count < old_polygons_count) {
for (int i = new_polygons_count - 1; i < old_polygons_count; i++) {
- ADD_UNDO(tile_data, vformat("physics_layer_%d/polygon_%d/points", layer_index, i));
- ADD_UNDO(tile_data, vformat("physics_layer_%d/polygon_%d/one_way", layer_index, i));
- ADD_UNDO(tile_data, vformat("physics_layer_%d/polygon_%d/one_way_margin", layer_index, i));
+ ADD_UNDO(tile_data_proxy, vformat("physics_layer_%d/polygon_%d/points", layer_index, i));
+ ADD_UNDO(tile_data_proxy, vformat("physics_layer_%d/polygon_%d/one_way", layer_index, i));
+ ADD_UNDO(tile_data_proxy, vformat("physics_layer_%d/polygon_%d/one_way_margin", layer_index, i));
}
}
} else if (p_property == "terrain_set") {
- int current_terrain_set = tile_data->get("terrain_set");
+ int current_terrain_set = tile_data_proxy->get("terrain_set");
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)) {
- ADD_UNDO(tile_data, "terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]));
+ ADD_UNDO(tile_data_proxy, "terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]));
}
}
}
}
+
+ TileSetAtlasSourceProxyObject *atlas_source_proxy = Object::cast_to<TileSetAtlasSourceProxyObject>(p_edited);
+ if (atlas_source_proxy) {
+ TileSetAtlasSource *atlas_source = atlas_source_proxy->get_edited();
+ ERR_FAIL_COND(!atlas_source);
+
+ PackedVector2Array arr;
+ if (p_property == "texture") {
+ arr = atlas_source->get_tiles_to_be_removed_on_change(p_new_value, atlas_source->get_margins(), atlas_source->get_separation(), atlas_source->get_texture_region_size());
+ } else if (p_property == "margins") {
+ arr = atlas_source->get_tiles_to_be_removed_on_change(atlas_source->get_texture(), p_new_value, atlas_source->get_separation(), atlas_source->get_texture_region_size());
+ } else if (p_property == "separation") {
+ arr = atlas_source->get_tiles_to_be_removed_on_change(atlas_source->get_texture(), atlas_source->get_margins(), p_new_value, atlas_source->get_texture_region_size());
+ } else if (p_property == "texture_region_size") {
+ arr = atlas_source->get_tiles_to_be_removed_on_change(atlas_source->get_texture(), atlas_source->get_margins(), atlas_source->get_separation(), p_new_value);
+ }
+
+ if (!arr.is_empty()) {
+ // Get all properties assigned to a tile.
+ List<PropertyInfo> properties;
+ atlas_source->get_property_list(&properties);
+
+ for (int i = 0; i < arr.size(); i++) {
+ Vector2i coords = arr[i];
+ String prefix = vformat("%d:%d/", coords.x, coords.y);
+ for (PropertyInfo pi : properties) {
+ if (pi.name.begins_with(prefix)) {
+ ADD_UNDO(atlas_source, pi.name);
+ }
+ }
+ }
+ }
+ }
+ undo_redo->end_force_keep_in_merge_ends();
+
#undef ADD_UNDO
}
@@ -2073,8 +2122,8 @@ void TileSetAtlasSourceEditor::edit(Ref<TileSet> p_tile_set, TileSetAtlasSource
}
// Remove listener for old objects.
- if (tile_set_atlas_source) {
- tile_set_atlas_source->disconnect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_set_atlas_source_changed));
+ if (tile_set.is_valid()) {
+ tile_set->disconnect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_set_changed));
}
// Clear the selection.
@@ -2086,8 +2135,8 @@ void TileSetAtlasSourceEditor::edit(Ref<TileSet> p_tile_set, TileSetAtlasSource
tile_set_atlas_source_id = p_source_id;
// Add the listener again.
- if (tile_set_atlas_source) {
- tile_set_atlas_source->connect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_set_atlas_source_changed));
+ if (tile_set.is_valid()) {
+ tile_set->connect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_set_changed));
}
// Update everything.
@@ -2228,7 +2277,7 @@ void TileSetAtlasSourceEditor::_notification(int p_what) {
resize_handle_disabled = get_theme_icon(SNAME("EditorHandleDisabled"), SNAME("EditorIcons"));
break;
case NOTIFICATION_INTERNAL_PROCESS:
- if (tile_set_atlas_source_changed_needs_update) {
+ if (tile_set_changed_needs_update) {
// Update everything.
_update_source_inspector();
@@ -2241,7 +2290,7 @@ void TileSetAtlasSourceEditor::_notification(int p_what) {
_update_tile_data_editors();
_update_current_tile_data_editor();
- tile_set_atlas_source_changed_needs_update = false;
+ tile_set_changed_needs_update = false;
}
break;
default:
@@ -2406,8 +2455,6 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
tool_advanced_menu_buttom = memnew(MenuButton);
tool_advanced_menu_buttom->set_flat(true);
- tool_advanced_menu_buttom->get_popup()->add_item(TTR("Cleanup Tiles Outside Texture"), ADVANCED_CLEANUP_TILES_OUTSIDE_TEXTURE);
- tool_advanced_menu_buttom->get_popup()->set_item_disabled(0, true);
tool_advanced_menu_buttom->get_popup()->add_item(TTR("Create Tiles in Non-Transparent Texture Regions"), ADVANCED_AUTO_CREATE_TILES);
tool_advanced_menu_buttom->get_popup()->add_item(TTR("Remove Tiles in Fully Transparent Texture Regions"), ADVANCED_AUTO_REMOVE_TILES);
tool_advanced_menu_buttom->get_popup()->connect("id_pressed", callable_mp(this, &TileSetAtlasSourceEditor::_menu_option));
@@ -2429,7 +2476,7 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
tile_atlas_view = memnew(TileAtlasView);
tile_atlas_view->set_h_size_flags(SIZE_EXPAND_FILL);
tile_atlas_view->set_v_size_flags(SIZE_EXPAND_FILL);
- tile_atlas_view->connect("transform_changed", callable_mp(TilesEditor::get_singleton(), &TilesEditor::set_atlas_view_transform));
+ tile_atlas_view->connect("transform_changed", callable_mp(TilesEditorPlugin::get_singleton(), &TilesEditorPlugin::set_atlas_view_transform));
tile_atlas_view->connect("transform_changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_atlas_view_transform_changed).unbind(2));
right_panel->add_child(tile_atlas_view);
@@ -2481,6 +2528,8 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
tile_atlas_view_missing_source_label->set_v_size_flags(SIZE_EXPAND_FILL);
tile_atlas_view_missing_source_label->hide();
right_panel->add_child(tile_atlas_view_missing_source_label);
+
+ EditorNode::get_singleton()->get_editor_data().add_undo_redo_inspector_hook_callback(callable_mp(this, &TileSetAtlasSourceEditor::_undo_redo_inspector_callback));
}
TileSetAtlasSourceEditor::~TileSetAtlasSourceEditor() {
diff --git a/editor/plugins/tiles/tile_set_atlas_source_editor.h b/editor/plugins/tiles/tile_set_atlas_source_editor.h
index 6448b55feb..ea6f2847ae 100644
--- a/editor/plugins/tiles/tile_set_atlas_source_editor.h
+++ b/editor/plugins/tiles/tile_set_atlas_source_editor.h
@@ -78,6 +78,7 @@ private:
int get_id();
void edit(Ref<TileSet> p_tile_set, TileSetAtlasSource *p_tile_set_atlas_source, int p_source_id);
+ TileSetAtlasSource *get_edited() { return tile_set_atlas_source; };
};
// -- Proxy object for a tile, needed by the inspector --
@@ -112,7 +113,7 @@ private:
UndoRedo *undo_redo = EditorNode::get_undo_redo();
- bool tile_set_atlas_source_changed_needs_update = false;
+ bool tile_set_changed_needs_update = false;
// -- Properties painting --
VBoxContainer *tile_data_painting_editor_container;
@@ -189,7 +190,6 @@ private:
TILE_CREATE_ALTERNATIVE,
TILE_DELETE,
- ADVANCED_CLEANUP_TILES_OUTSIDE_TEXTURE,
ADVANCED_AUTO_CREATE_TILES,
ADVANCED_AUTO_REMOVE_TILES,
};
@@ -263,7 +263,7 @@ private:
void _auto_remove_tiles();
AcceptDialog *confirm_auto_create_tiles;
- void _tile_set_atlas_source_changed();
+ void _tile_set_changed();
void _tile_proxy_object_changed(String p_what);
void _atlas_source_proxy_object_changed(String p_what);
diff --git a/editor/plugins/tiles/tile_set_editor.cpp b/editor/plugins/tiles/tile_set_editor.cpp
index 48d0d9b333..0fbb9a98c7 100644
--- a/editor/plugins/tiles/tile_set_editor.cpp
+++ b/editor/plugins/tiles/tile_set_editor.cpp
@@ -145,14 +145,21 @@ void TileSetEditor::_update_sources_list(int force_selected_id) {
Ref<Texture2D> texture;
String item_text;
+ // Common to all type of sources.
+ if (!source->get_name().is_empty()) {
+ item_text = vformat(TTR("%s (id:%d)"), source->get_name(), source_id);
+ }
+
// Atlas source.
TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
if (atlas_source) {
texture = atlas_source->get_texture();
- if (texture.is_valid()) {
- item_text = vformat("%s (id:%d)", texture->get_path().get_file(), source_id);
- } else {
- item_text = vformat(TTR("No Texture Atlas Source (id:%d)"), source_id);
+ if (item_text.is_empty()) {
+ if (texture.is_valid()) {
+ item_text = vformat("%s (ID:%d)", texture->get_path().get_file(), source_id);
+ } else {
+ item_text = vformat(TTR("No Texture Atlas Source (ID:%d)"), source_id);
+ }
}
}
@@ -160,12 +167,14 @@ void TileSetEditor::_update_sources_list(int force_selected_id) {
TileSetScenesCollectionSource *scene_collection_source = Object::cast_to<TileSetScenesCollectionSource>(source);
if (scene_collection_source) {
texture = get_theme_icon(SNAME("PackedScene"), SNAME("EditorIcons"));
- item_text = vformat(TTR("Scene Collection Source (id:%d)"), source_id);
+ if (item_text.is_empty()) {
+ item_text = vformat(TTR("Scene Collection Source (ID:%d)"), source_id);
+ }
}
// Use default if not valid.
if (item_text.is_empty()) {
- item_text = vformat(TTR("Unknown Type Source (id:%d)"), source_id);
+ item_text = vformat(TTR("Unknown Type Source (ID:%d)"), source_id);
}
if (!texture.is_valid()) {
texture = missing_texture_texture;
@@ -200,7 +209,7 @@ void TileSetEditor::_update_sources_list(int force_selected_id) {
_source_selected(sources_list->get_current());
// Synchronize the lists.
- TilesEditor::get_singleton()->set_sources_lists_current(sources_list->get_current());
+ TilesEditorPlugin::get_singleton()->set_sources_lists_current(sources_list->get_current());
}
void TileSetEditor::_source_selected(int p_source_index) {
@@ -318,6 +327,7 @@ void TileSetEditor::_notification(int p_what) {
tile_set->set_edited(true);
}
_update_sources_list();
+ _update_patterns_list();
tile_set_changed_needs_update = false;
}
break;
@@ -326,10 +336,56 @@ void TileSetEditor::_notification(int p_what) {
}
}
+void TileSetEditor::_patterns_item_list_gui_input(const Ref<InputEvent> &p_event) {
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ if (ED_IS_SHORTCUT("tiles_editor/delete", p_event) && p_event->is_pressed() && !p_event->is_echo()) {
+ Vector<int> selected = patterns_item_list->get_selected_items();
+ undo_redo->create_action(TTR("Remove TileSet patterns"));
+ for (int i = 0; i < selected.size(); i++) {
+ int pattern_index = selected[i];
+ undo_redo->add_do_method(*tile_set, "remove_pattern", pattern_index);
+ undo_redo->add_undo_method(*tile_set, "add_pattern", tile_set->get_pattern(pattern_index), pattern_index);
+ }
+ undo_redo->commit_action();
+ patterns_item_list->accept_event();
+ }
+}
+
+void TileSetEditor::_pattern_preview_done(Ref<TileMapPattern> p_pattern, Ref<Texture2D> p_texture) {
+ // TODO optimize ?
+ for (int i = 0; i < patterns_item_list->get_item_count(); i++) {
+ if (patterns_item_list->get_item_metadata(i) == p_pattern) {
+ patterns_item_list->set_item_icon(i, p_texture);
+ break;
+ }
+ }
+}
+
+void TileSetEditor::_update_patterns_list() {
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ // Recreate the items.
+ patterns_item_list->clear();
+ for (int i = 0; i < tile_set->get_patterns_count(); i++) {
+ int id = patterns_item_list->add_item("");
+ patterns_item_list->set_item_metadata(id, tile_set->get_pattern(i));
+ TilesEditorPlugin::get_singleton()->queue_pattern_preview(tile_set, tile_set->get_pattern(i), callable_mp(this, &TileSetEditor::_pattern_preview_done));
+ }
+
+ // Update the label visibility.
+ patterns_help_label->set_visible(patterns_item_list->get_item_count() == 0);
+}
+
void TileSetEditor::_tile_set_changed() {
tile_set_changed_needs_update = true;
}
+void TileSetEditor::_tab_changed(int p_tab_changed) {
+ split_container->set_visible(p_tab_changed == 0);
+ patterns_item_list->set_visible(p_tab_changed == 1);
+}
+
void TileSetEditor::_move_tile_set_array_element(Object *p_undo_redo, Object *p_edited, String p_array_prefix, int p_from_index, int p_to_pos) {
UndoRedo *undo_redo = Object::cast_to<UndoRedo>(p_undo_redo);
ERR_FAIL_COND(!undo_redo);
@@ -573,6 +629,7 @@ void TileSetEditor::edit(Ref<TileSet> p_tile_set) {
if (tile_set.is_valid()) {
tile_set->connect("changed", callable_mp(this, &TileSetEditor::_tile_set_changed));
_update_sources_list();
+ _update_patterns_list();
}
tile_set_atlas_source_editor->hide();
@@ -585,8 +642,21 @@ TileSetEditor::TileSetEditor() {
set_process_internal(true);
+ // TabBar.
+ tabs_bar = memnew(TabBar);
+ tabs_bar->set_clip_tabs(false);
+ tabs_bar->add_tab(TTR("Tiles"));
+ tabs_bar->add_tab(TTR("Patterns"));
+ tabs_bar->connect("tab_changed", callable_mp(this, &TileSetEditor::_tab_changed));
+
+ tile_set_toolbar = memnew(HBoxContainer);
+ tile_set_toolbar->set_h_size_flags(SIZE_EXPAND_FILL);
+ tile_set_toolbar->add_child(tabs_bar);
+ add_child(tile_set_toolbar);
+
+ //// Tiles ////
// Split container.
- HSplitContainer *split_container = memnew(HSplitContainer);
+ split_container = memnew(HSplitContainer);
split_container->set_name(TTR("Tiles"));
split_container->set_h_size_flags(SIZE_EXPAND_FILL);
split_container->set_v_size_flags(SIZE_EXPAND_FILL);
@@ -605,8 +675,8 @@ TileSetEditor::TileSetEditor() {
sources_list->set_h_size_flags(SIZE_EXPAND_FILL);
sources_list->set_v_size_flags(SIZE_EXPAND_FILL);
sources_list->connect("item_selected", callable_mp(this, &TileSetEditor::_source_selected));
- sources_list->connect("item_selected", callable_mp(TilesEditor::get_singleton(), &TilesEditor::set_sources_lists_current));
- sources_list->connect("visibility_changed", callable_mp(TilesEditor::get_singleton(), &TilesEditor::synchronize_sources_list), varray(sources_list));
+ sources_list->connect("item_selected", callable_mp(TilesEditorPlugin::get_singleton(), &TilesEditorPlugin::set_sources_lists_current));
+ sources_list->connect("visibility_changed", callable_mp(TilesEditorPlugin::get_singleton(), &TilesEditorPlugin::synchronize_sources_list), varray(sources_list));
sources_list->set_texture_filter(CanvasItem::TEXTURE_FILTER_NEAREST);
sources_list->set_drag_forwarding(this);
split_container_left_side->add_child(sources_list);
@@ -672,6 +742,24 @@ TileSetEditor::TileSetEditor() {
split_container_right_side->add_child(tile_set_scenes_collection_source_editor);
tile_set_scenes_collection_source_editor->hide();
+ //// Patterns ////
+ int thumbnail_size = 64;
+ patterns_item_list = memnew(ItemList);
+ patterns_item_list->set_max_columns(0);
+ patterns_item_list->set_icon_mode(ItemList::ICON_MODE_TOP);
+ patterns_item_list->set_fixed_column_width(thumbnail_size * 3 / 2);
+ patterns_item_list->set_max_text_lines(2);
+ patterns_item_list->set_fixed_icon_size(Size2(thumbnail_size, thumbnail_size));
+ patterns_item_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ patterns_item_list->connect("gui_input", callable_mp(this, &TileSetEditor::_patterns_item_list_gui_input));
+ add_child(patterns_item_list);
+ patterns_item_list->hide();
+
+ patterns_help_label = memnew(Label);
+ patterns_help_label->set_text(TTR("Add new patterns in the TileMap editing mode."));
+ patterns_help_label->set_anchors_and_offsets_preset(Control::PRESET_CENTER);
+ patterns_item_list->add_child(patterns_help_label);
+
// Registers UndoRedo inspector callback.
EditorNode::get_singleton()->get_editor_data().add_move_array_element_function(SNAME("TileSet"), callable_mp(this, &TileSetEditor::_move_tile_set_array_element));
EditorNode::get_singleton()->get_editor_data().add_undo_redo_inspector_hook_callback(callable_mp(this, &TileSetEditor::_undo_redo_inspector_callback));
diff --git a/editor/plugins/tiles/tile_set_editor.h b/editor/plugins/tiles/tile_set_editor.h
index fe854b2281..cda38760cf 100644
--- a/editor/plugins/tiles/tile_set_editor.h
+++ b/editor/plugins/tiles/tile_set_editor.h
@@ -46,7 +46,13 @@ class TileSetEditor : public VBoxContainer {
private:
Ref<TileSet> tile_set;
bool tile_set_changed_needs_update = false;
+ HSplitContainer *split_container;
+ // TabBar.
+ HBoxContainer *tile_set_toolbar;
+ TabBar *tabs_bar;
+
+ // Tiles.
Label *no_source_selected_label;
TileSetAtlasSourceEditor *tile_set_atlas_source_editor;
TileSetScenesCollectionSourceEditor *tile_set_scenes_collection_source_editor;
@@ -69,7 +75,16 @@ private:
AtlasMergingDialog *atlas_merging_dialog;
TileProxiesManagerDialog *tile_proxies_manager_dialog;
+ // Patterns.
+ ItemList *patterns_item_list;
+ Label *patterns_help_label;
+ void _patterns_item_list_gui_input(const Ref<InputEvent> &p_event);
+ void _pattern_preview_done(Ref<TileMapPattern> p_pattern, Ref<Texture2D> p_texture);
+ bool select_last_pattern = false;
+ void _update_patterns_list();
+
void _tile_set_changed();
+ void _tab_changed(int p_tab_changed);
void _move_tile_set_array_element(Object *p_undo_redo, Object *p_edited, String p_array_prefix, int p_from_index, int p_to_pos);
void _undo_redo_inspector_callback(Object *p_undo_redo, Object *p_edited, String p_property, Variant p_new_value);
@@ -82,6 +97,7 @@ public:
_FORCE_INLINE_ static TileSetEditor *get_singleton() { return singleton; }
void edit(Ref<TileSet> p_tile_set);
+
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
diff --git a/editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp b/editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp
index f74b3bf9c2..dc26d380b8 100644
--- a/editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp
+++ b/editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp
@@ -56,10 +56,15 @@ int TileSetScenesCollectionSourceEditor::TileSetScenesCollectionProxyObject::get
}
bool TileSetScenesCollectionSourceEditor::TileSetScenesCollectionProxyObject::_set(const StringName &p_name, const Variant &p_value) {
+ String name = p_name;
+ if (name == "name") {
+ // Use the resource_name property to store the source's name.
+ name = "resource_name";
+ }
bool valid = false;
- tile_set_scenes_collection_source->set(p_name, p_value, &valid);
+ tile_set_scenes_collection_source->set(name, p_value, &valid);
if (valid) {
- emit_signal(SNAME("changed"), String(p_name).utf8().get_data());
+ emit_signal(SNAME("changed"), String(name).utf8().get_data());
}
return valid;
}
@@ -68,11 +73,20 @@ bool TileSetScenesCollectionSourceEditor::TileSetScenesCollectionProxyObject::_g
if (!tile_set_scenes_collection_source) {
return false;
}
+ String name = p_name;
+ if (name == "name") {
+ // Use the resource_name property to store the source's name.
+ name = "resource_name";
+ }
bool valid = false;
- r_ret = tile_set_scenes_collection_source->get(p_name, &valid);
+ r_ret = tile_set_scenes_collection_source->get(name, &valid);
return valid;
}
+void TileSetScenesCollectionSourceEditor::TileSetScenesCollectionProxyObject::_get_property_list(List<PropertyInfo> *p_list) const {
+ p_list->push_back(PropertyInfo(Variant::STRING, "name", PROPERTY_HINT_NONE, ""));
+}
+
void TileSetScenesCollectionSourceEditor::TileSetScenesCollectionProxyObject::_bind_methods() {
// -- Shape and layout --
ClassDB::bind_method(D_METHOD("set_id", "id"), &TileSetScenesCollectionSourceEditor::TileSetScenesCollectionProxyObject::set_id);
@@ -89,6 +103,10 @@ void TileSetScenesCollectionSourceEditor::TileSetScenesCollectionProxyObject::ed
ERR_FAIL_COND(p_source_id < 0);
ERR_FAIL_COND(p_tile_set->get_source(p_source_id) != p_tile_set_scenes_collection_source);
+ if (tile_set == p_tile_set && tile_set_scenes_collection_source == p_tile_set_scenes_collection_source && source_id == p_source_id) {
+ return;
+ }
+
// Disconnect to changes.
if (tile_set_scenes_collection_source) {
tile_set_scenes_collection_source->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed));
@@ -174,6 +192,10 @@ void TileSetScenesCollectionSourceEditor::SceneTileProxyObject::edit(TileSetScen
ERR_FAIL_COND(!p_tile_set_scenes_collection_source);
ERR_FAIL_COND(!p_tile_set_scenes_collection_source->has_scene_tile_id(p_scene_id));
+ if (tile_set_scenes_collection_source == p_tile_set_scenes_collection_source && scene_id == p_scene_id) {
+ return;
+ }
+
tile_set_scenes_collection_source = p_tile_set_scenes_collection_source;
scene_id = p_scene_id;
diff --git a/editor/plugins/tiles/tile_set_scenes_collection_source_editor.h b/editor/plugins/tiles/tile_set_scenes_collection_source_editor.h
index 195aa79bc4..3be7bee714 100644
--- a/editor/plugins/tiles/tile_set_scenes_collection_source_editor.h
+++ b/editor/plugins/tiles/tile_set_scenes_collection_source_editor.h
@@ -51,6 +51,7 @@ private:
protected:
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
+ void _get_property_list(List<PropertyInfo> *p_list) const;
static void _bind_methods();
public:
diff --git a/editor/plugins/tiles/tiles_editor_plugin.cpp b/editor/plugins/tiles/tiles_editor_plugin.cpp
index d0d01a8d49..f1918073fb 100644
--- a/editor/plugins/tiles/tiles_editor_plugin.cpp
+++ b/editor/plugins/tiles/tiles_editor_plugin.cpp
@@ -30,99 +30,183 @@
#include "tiles_editor_plugin.h"
+#include "core/os/mutex.h"
+
#include "editor/editor_node.h"
#include "editor/editor_scale.h"
#include "editor/plugins/canvas_item_editor_plugin.h"
#include "scene/2d/tile_map.h"
-#include "scene/resources/tile_set.h"
-
#include "scene/gui/box_container.h"
#include "scene/gui/button.h"
#include "scene/gui/control.h"
#include "scene/gui/separator.h"
+#include "scene/resources/tile_set.h"
#include "tile_set_editor.h"
-TilesEditor *TilesEditor::singleton = nullptr;
+TilesEditorPlugin *TilesEditorPlugin::singleton = nullptr;
+
+void TilesEditorPlugin::_pattern_preview_done(const Variant &p_udata) {
+ pattern_preview_done.set();
+}
+
+void TilesEditorPlugin::_thread_func(void *ud) {
+ TilesEditorPlugin *te = (TilesEditorPlugin *)ud;
+ te->_thread();
+}
+
+void TilesEditorPlugin::_thread() {
+ pattern_thread_exited.clear();
+ while (!pattern_thread_exit.is_set()) {
+ pattern_preview_sem.wait();
+
+ pattern_preview_mutex.lock();
+ if (pattern_preview_queue.size()) {
+ QueueItem item = pattern_preview_queue.front()->get();
+ pattern_preview_queue.pop_front();
+ pattern_preview_mutex.unlock();
+
+ int thumbnail_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size");
+ thumbnail_size *= EDSCALE;
+ Vector2 thumbnail_size2 = Vector2(thumbnail_size, thumbnail_size);
+
+ if (item.pattern.is_valid() && !item.pattern->is_empty()) {
+ // Generate the pattern preview
+ SubViewport *viewport = memnew(SubViewport);
+ viewport->set_size(thumbnail_size2);
+ viewport->set_disable_input(true);
+ viewport->set_transparent_background(true);
+ viewport->set_update_mode(SubViewport::UPDATE_ONCE);
+
+ TileMap *tile_map = memnew(TileMap);
+ tile_map->set_tileset(item.tile_set);
+ tile_map->set_pattern(0, Vector2(), item.pattern);
+ viewport->add_child(tile_map);
+
+ TypedArray<Vector2i> used_cells = tile_map->get_used_cells(0);
+
+ Rect2 encompassing_rect = Rect2();
+ encompassing_rect.set_position(tile_map->map_to_world(used_cells[0]));
+ for (int i = 0; i < used_cells.size(); i++) {
+ Vector2i cell = used_cells[i];
+ Vector2 world_pos = tile_map->map_to_world(cell);
+ encompassing_rect.expand_to(world_pos);
+
+ // Texture.
+ Ref<TileSetAtlasSource> atlas_source = tile_set->get_source(tile_map->get_cell_source_id(0, cell));
+ if (atlas_source.is_valid()) {
+ Vector2i coords = tile_map->get_cell_atlas_coords(0, cell);
+ int alternative = tile_map->get_cell_alternative_tile(0, cell);
+
+ Vector2 center = world_pos - atlas_source->get_tile_effective_texture_offset(coords, alternative);
+ encompassing_rect.expand_to(center - atlas_source->get_tile_texture_region(coords).size / 2);
+ encompassing_rect.expand_to(center + atlas_source->get_tile_texture_region(coords).size / 2);
+ }
+ }
+
+ Vector2 scale = thumbnail_size2 / MAX(encompassing_rect.size.x, encompassing_rect.size.y);
+ tile_map->set_scale(scale);
+ tile_map->set_position(-(scale * encompassing_rect.get_center()) + thumbnail_size2 / 2);
-void TilesEditor::_notification(int p_what) {
+ // Add the viewport at the lasst moment to avoid rendering too early.
+ EditorNode::get_singleton()->add_child(viewport);
+
+ pattern_preview_done.clear();
+ RS::get_singleton()->request_frame_drawn_callback(const_cast<TilesEditorPlugin *>(this), "_pattern_preview_done", Variant());
+
+ while (!pattern_preview_done.is_set()) {
+ OS::get_singleton()->delay_usec(10);
+ }
+
+ Ref<Image> image = viewport->get_texture()->get_image();
+ Ref<ImageTexture> image_texture;
+ image_texture.instantiate();
+ image_texture->create_from_image(image);
+
+ // Find the index for the given pattern. TODO: optimize.
+ Variant args[] = { item.pattern, image_texture };
+ const Variant *args_ptr[] = { &args[0], &args[1] };
+ Variant r;
+ Callable::CallError error;
+ item.callback.call(args_ptr, 2, r, error);
+
+ viewport->queue_delete();
+ } else {
+ pattern_preview_mutex.unlock();
+ }
+ }
+ }
+ pattern_thread_exited.set();
+}
+
+void TilesEditorPlugin::_tile_map_changed() {
+ tile_map_changed_needs_update = true;
+}
+
+void TilesEditorPlugin::_update_editors() {
+ // If tile_map is not edited, we change the edited only if we are not editing a tile_set.
+ tileset_editor->edit(tile_set);
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (tile_map) {
+ tilemap_editor->edit(tile_map);
+ } else {
+ tilemap_editor->edit(nullptr);
+ }
+
+ // Update the viewport.
+ CanvasItemEditor::get_singleton()->update_viewport();
+}
+
+void TilesEditorPlugin::_notification(int p_what) {
switch (p_what) {
- case NOTIFICATION_ENTER_TREE:
- case NOTIFICATION_THEME_CHANGED: {
- tileset_tilemap_switch_button->set_icon(get_theme_icon(SNAME("TileSet"), SNAME("EditorIcons")));
- } break;
case NOTIFICATION_INTERNAL_PROCESS: {
if (tile_map_changed_needs_update) {
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (tile_map) {
tile_set = tile_map->get_tileset();
}
- _update_switch_button();
_update_editors();
+ tile_map_changed_needs_update = false;
}
} break;
}
}
-void TilesEditor::_tile_map_changed() {
- tile_map_changed_needs_update = true;
-}
-
-void TilesEditor::_update_switch_button() {
- // Force the buttons status if needed.
- TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
- if (tile_map && !tile_set.is_valid()) {
- tileset_tilemap_switch_button->set_pressed(false);
- } else if (!tile_map && tile_set.is_valid()) {
- tileset_tilemap_switch_button->set_pressed(true);
- }
-}
-
-void TilesEditor::_update_editors() {
- // Set editors visibility.
- tilemap_toolbar->set_visible(!tileset_tilemap_switch_button->is_pressed());
- tilemap_editor->set_visible(!tileset_tilemap_switch_button->is_pressed());
- tileset_editor->set_visible(tileset_tilemap_switch_button->is_pressed());
-
- // Enable/disable the switch button.
- if (!tileset_tilemap_switch_button->is_pressed()) {
- if (!tile_set.is_valid()) {
- tileset_tilemap_switch_button->set_disabled(true);
- tileset_tilemap_switch_button->set_tooltip(TTR("This TileMap has no assigned TileSet, assign a TileSet to this TileMap to edit it."));
- } else {
- tileset_tilemap_switch_button->set_disabled(false);
- tileset_tilemap_switch_button->set_tooltip(TTR("Switch between TileSet/TileMap editor."));
- }
- } else {
+void TilesEditorPlugin::make_visible(bool p_visible) {
+ if (p_visible) {
+ // Disable and hide invalid editors.
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
- if (!tile_map) {
- tileset_tilemap_switch_button->set_disabled(true);
- tileset_tilemap_switch_button->set_tooltip(TTR("You are editing a TileSet resource. Select a TileMap node to paint."));
+ tileset_editor_button->set_visible(tile_set.is_valid());
+ tilemap_editor_button->set_visible(tile_map);
+ if (tile_map) {
+ editor_node->make_bottom_panel_item_visible(tilemap_editor);
} else {
- tileset_tilemap_switch_button->set_disabled(false);
- tileset_tilemap_switch_button->set_tooltip(TTR("Switch between TileSet/TileMap editor."));
+ editor_node->make_bottom_panel_item_visible(tileset_editor);
}
- }
- // If tile_map is not edited, we change the edited only if we are not editing a tile_set.
- TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
- if (tile_map) {
- tilemap_editor->edit(tile_map);
} else {
- tilemap_editor->edit(nullptr);
+ tileset_editor_button->hide();
+ tilemap_editor_button->hide();
+ editor_node->hide_bottom_panel();
}
- tileset_editor->edit(tile_set);
+}
- // Update the viewport
- CanvasItemEditor::get_singleton()->update_viewport();
+void TilesEditorPlugin::queue_pattern_preview(Ref<TileSet> p_tile_set, Ref<TileMapPattern> p_pattern, Callable p_callback) {
+ ERR_FAIL_COND(!p_tile_set.is_valid());
+ ERR_FAIL_COND(!p_pattern.is_valid());
+ {
+ MutexLock lock(pattern_preview_mutex);
+ pattern_preview_queue.push_back({ p_tile_set, p_pattern, p_callback });
+ }
+ pattern_preview_sem.post();
}
-void TilesEditor::set_sources_lists_current(int p_current) {
+void TilesEditorPlugin::set_sources_lists_current(int p_current) {
atlas_sources_lists_current = p_current;
}
-void TilesEditor::synchronize_sources_list(Object *p_current) {
+void TilesEditorPlugin::synchronize_sources_list(Object *p_current) {
ItemList *item_list = Object::cast_to<ItemList>(p_current);
ERR_FAIL_COND(!item_list);
@@ -136,12 +220,12 @@ void TilesEditor::synchronize_sources_list(Object *p_current) {
}
}
-void TilesEditor::set_atlas_view_transform(float p_zoom, Vector2 p_scroll) {
+void TilesEditorPlugin::set_atlas_view_transform(float p_zoom, Vector2 p_scroll) {
atlas_view_zoom = p_zoom;
atlas_view_scroll = p_scroll;
}
-void TilesEditor::synchronize_atlas_view(Object *p_current) {
+void TilesEditorPlugin::synchronize_atlas_view(Object *p_current) {
TileAtlasView *tile_atlas_view = Object::cast_to<TileAtlasView>(p_current);
ERR_FAIL_COND(!tile_atlas_view);
@@ -150,11 +234,11 @@ void TilesEditor::synchronize_atlas_view(Object *p_current) {
}
}
-void TilesEditor::edit(Object *p_object) {
+void TilesEditorPlugin::edit(Object *p_object) {
// Disconnect to changes.
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (tile_map) {
- tile_map->disconnect("changed", callable_mp(this, &TilesEditor::_tile_map_changed));
+ tile_map->disconnect("changed", callable_mp(this, &TilesEditorPlugin::_tile_map_changed));
}
// Update edited objects.
@@ -164,112 +248,79 @@ void TilesEditor::edit(Object *p_object) {
tile_map_id = p_object->get_instance_id();
tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
tile_set = tile_map->get_tileset();
+ editor_node->make_bottom_panel_item_visible(tilemap_editor);
} else if (p_object->is_class("TileSet")) {
tile_set = Ref<TileSet>(p_object);
if (tile_map) {
- if (tile_map->get_tileset() != tile_set) {
+ if (tile_map->get_tileset() != tile_set || !tile_map->is_inside_tree()) {
tile_map = nullptr;
+ tile_map_id = ObjectID();
}
}
- }
-
- // Update pressed status button.
- if (p_object->is_class("TileMap")) {
- tileset_tilemap_switch_button->set_pressed(false);
- } else if (p_object->is_class("TileSet")) {
- tileset_tilemap_switch_button->set_pressed(true);
+ editor_node->make_bottom_panel_item_visible(tileset_editor);
}
}
// Update the editors.
- _update_switch_button();
_update_editors();
// Add change listener.
if (tile_map) {
- tile_map->connect("changed", callable_mp(this, &TilesEditor::_tile_map_changed));
+ tile_map->connect("changed", callable_mp(this, &TilesEditorPlugin::_tile_map_changed));
}
}
-void TilesEditor::_bind_methods() {
+bool TilesEditorPlugin::handles(Object *p_object) const {
+ return p_object->is_class("TileMap") || p_object->is_class("TileSet");
+}
+
+void TilesEditorPlugin::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("_pattern_preview_done", "pattern"), &TilesEditorPlugin::_pattern_preview_done);
}
-TilesEditor::TilesEditor(EditorNode *p_editor) {
+TilesEditorPlugin::TilesEditorPlugin(EditorNode *p_node) {
set_process_internal(true);
// Update the singleton.
singleton = this;
- // Toolbar.
- HBoxContainer *toolbar = memnew(HBoxContainer);
- toolbar->set_h_size_flags(SIZE_EXPAND_FILL);
- add_child(toolbar);
+ editor_node = p_node;
- // Switch button.
- tileset_tilemap_switch_button = memnew(Button);
- tileset_tilemap_switch_button->set_flat(true);
- tileset_tilemap_switch_button->set_toggle_mode(true);
- tileset_tilemap_switch_button->connect("toggled", callable_mp(this, &TilesEditor::_update_editors).unbind(1));
- toolbar->add_child(tileset_tilemap_switch_button);
+ // Tileset editor.
+ tileset_editor = memnew(TileSetEditor);
+ tileset_editor->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ tileset_editor->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ tileset_editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE);
+ tileset_editor->hide();
// Tilemap editor.
tilemap_editor = memnew(TileMapEditor);
- tilemap_editor->set_h_size_flags(SIZE_EXPAND_FILL);
- tilemap_editor->set_v_size_flags(SIZE_EXPAND_FILL);
+ tilemap_editor->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ tilemap_editor->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ tilemap_editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE);
tilemap_editor->hide();
- add_child(tilemap_editor);
- tilemap_toolbar = tilemap_editor->get_toolbar();
- toolbar->add_child(tilemap_toolbar);
+ // Pattern preview generation thread.
+ pattern_preview_thread.start(_thread_func, this);
- // Tileset editor.
- tileset_editor = memnew(TileSetEditor);
- tileset_editor->set_h_size_flags(SIZE_EXPAND_FILL);
- tileset_editor->set_v_size_flags(SIZE_EXPAND_FILL);
- tileset_editor->hide();
- add_child(tileset_editor);
+ // Bottom buttons.
+ tileset_editor_button = p_node->add_bottom_panel_item(TTR("TileSet"), tileset_editor);
+ tileset_editor_button->hide();
+ tilemap_editor_button = p_node->add_bottom_panel_item(TTR("TileMap"), tilemap_editor);
+ tilemap_editor_button->hide();
// Initialization.
- _update_switch_button();
_update_editors();
}
-TilesEditor::~TilesEditor() {
-}
-
-///////////////////////////////////////////////////////////////
-
-void TilesEditorPlugin::_notification(int p_what) {
-}
-
-void TilesEditorPlugin::make_visible(bool p_visible) {
- if (p_visible) {
- tiles_editor_button->show();
- editor_node->make_bottom_panel_item_visible(tiles_editor);
- } else {
- editor_node->hide_bottom_panel();
- tiles_editor_button->hide();
- }
-}
-
-void TilesEditorPlugin::edit(Object *p_object) {
- tiles_editor->edit(p_object);
-}
-
-bool TilesEditorPlugin::handles(Object *p_object) const {
- return p_object->is_class("TileMap") || p_object->is_class("TileSet");
-}
-
-TilesEditorPlugin::TilesEditorPlugin(EditorNode *p_node) {
- editor_node = p_node;
-
- tiles_editor = memnew(TilesEditor(p_node));
- tiles_editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE);
- tiles_editor->hide();
-
- tiles_editor_button = p_node->add_bottom_panel_item(TTR("Tiles"), tiles_editor);
- tiles_editor_button->hide();
-}
-
TilesEditorPlugin::~TilesEditorPlugin() {
+ if (pattern_preview_thread.is_started()) {
+ pattern_thread_exit.set();
+ pattern_preview_sem.post();
+ while (!pattern_thread_exited.is_set()) {
+ OS::get_singleton()->delay_usec(10000);
+ RenderingServer::get_singleton()->sync(); //sync pending stuff, as thread may be blocked on visual server
+ }
+ pattern_preview_thread.wait_to_finish();
+ }
}
diff --git a/editor/plugins/tiles/tiles_editor_plugin.h b/editor/plugins/tiles/tiles_editor_plugin.h
index f976d68938..dd52bdc31a 100644
--- a/editor/plugins/tiles/tiles_editor_plugin.h
+++ b/editor/plugins/tiles/tiles_editor_plugin.h
@@ -38,24 +38,24 @@
#include "tile_map_editor.h"
#include "tile_set_editor.h"
-class TilesEditor : public VBoxContainer {
- GDCLASS(TilesEditor, VBoxContainer);
+class TilesEditorPlugin : public EditorPlugin {
+ GDCLASS(TilesEditorPlugin, EditorPlugin);
- static TilesEditor *singleton;
+ static TilesEditorPlugin *singleton;
private:
+ EditorNode *editor_node;
+
bool tile_map_changed_needs_update = false;
ObjectID tile_map_id;
Ref<TileSet> tile_set;
- Button *tileset_tilemap_switch_button;
-
- Control *tilemap_toolbar;
+ Button *tilemap_editor_button;
TileMapEditor *tilemap_editor;
+ Button *tileset_editor_button;
TileSetEditor *tileset_editor;
- void _update_switch_button();
void _update_editors();
// For synchronization.
@@ -65,15 +65,35 @@ private:
void _tile_map_changed();
+ // Patterns preview generation.
+ struct QueueItem {
+ Ref<TileSet> tile_set;
+ Ref<TileMapPattern> pattern;
+ Callable callback;
+ };
+ List<QueueItem> pattern_preview_queue;
+ Mutex pattern_preview_mutex;
+ Semaphore pattern_preview_sem;
+ Thread pattern_preview_thread;
+ SafeFlag pattern_thread_exit;
+ SafeFlag pattern_thread_exited;
+ mutable SafeFlag pattern_preview_done;
+ void _pattern_preview_done(const Variant &p_udata);
+ static void _thread_func(void *ud);
+ void _thread();
+
protected:
void _notification(int p_what);
static void _bind_methods();
public:
- _FORCE_INLINE_ static TilesEditor *get_singleton() { return singleton; }
+ _FORCE_INLINE_ static TilesEditorPlugin *get_singleton() { return singleton; }
- bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return tilemap_editor->forward_canvas_gui_input(p_event); }
- void forward_canvas_draw_over_viewport(Control *p_overlay) { tilemap_editor->forward_canvas_draw_over_viewport(p_overlay); }
+ virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) override { return tilemap_editor->forward_canvas_gui_input(p_event); }
+ virtual void forward_canvas_draw_over_viewport(Control *p_overlay) override { tilemap_editor->forward_canvas_draw_over_viewport(p_overlay); }
+
+ // Pattern preview API.
+ void queue_pattern_preview(Ref<TileSet> p_tile_set, Ref<TileMapPattern> p_pattern, Callable p_callback);
// To synchronize the atlas sources lists.
void set_sources_lists_current(int p_current);
@@ -82,27 +102,6 @@ public:
void set_atlas_view_transform(float p_zoom, Vector2 p_scroll);
void synchronize_atlas_view(Object *p_current);
- void edit(Object *p_object);
-
- TilesEditor(EditorNode *p_editor);
- ~TilesEditor();
-};
-
-class TilesEditorPlugin : public EditorPlugin {
- GDCLASS(TilesEditorPlugin, EditorPlugin);
-
-private:
- EditorNode *editor_node;
- TilesEditor *tiles_editor;
- Button *tiles_editor_button;
-
-protected:
- void _notification(int p_what);
-
-public:
- virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) override { return tiles_editor->forward_canvas_gui_input(p_event); }
- virtual void forward_canvas_draw_over_viewport(Control *p_overlay) override { tiles_editor->forward_canvas_draw_over_viewport(p_overlay); }
-
virtual void edit(Object *p_object) override;
virtual bool handles(Object *p_object) const override;
virtual void make_visible(bool p_visible) override;
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index b1b64564bb..09ca1f7608 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -31,6 +31,7 @@
#include "visual_shader_editor_plugin.h"
#include "core/config/project_settings.h"
+#include "core/core_string_names.h"
#include "core/input/input.h"
#include "core/io/resource_loader.h"
#include "core/math/math_defs.h"
@@ -212,19 +213,27 @@ void VisualShaderGraphPlugin::set_uniform_name(VisualShader::Type p_type, int p_
void VisualShaderGraphPlugin::update_curve(int p_node_id) {
if (links.has(p_node_id) && links[p_node_id].curve_editors[0]) {
- if (((VisualShaderNodeCurveTexture *)links[p_node_id].visual_node)->get_texture().is_valid()) {
- links[p_node_id].curve_editors[0]->set_curve(((VisualShaderNodeCurveTexture *)links[p_node_id].visual_node)->get_texture()->get_curve());
+ Ref<VisualShaderNodeCurveTexture> tex = Object::cast_to<VisualShaderNodeCurveTexture>(links[p_node_id].visual_node);
+ ERR_FAIL_COND(!tex.is_valid());
+
+ if (tex->get_texture().is_valid()) {
+ links[p_node_id].curve_editors[0]->set_curve(tex->get_texture()->get_curve());
}
+ tex->emit_signal(CoreStringNames::get_singleton()->changed);
}
}
void VisualShaderGraphPlugin::update_curve_xyz(int p_node_id) {
if (links.has(p_node_id) && links[p_node_id].curve_editors[0] && links[p_node_id].curve_editors[1] && links[p_node_id].curve_editors[2]) {
- if (((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture().is_valid()) {
- links[p_node_id].curve_editors[0]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_x());
- links[p_node_id].curve_editors[1]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_y());
- links[p_node_id].curve_editors[2]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_z());
+ Ref<VisualShaderNodeCurveXYZTexture> tex = Object::cast_to<VisualShaderNodeCurveXYZTexture>(links[p_node_id].visual_node);
+ ERR_FAIL_COND(!tex.is_valid());
+
+ if (tex->get_texture().is_valid()) {
+ links[p_node_id].curve_editors[0]->set_curve(tex->get_texture()->get_curve_x());
+ links[p_node_id].curve_editors[1]->set_curve(tex->get_texture()->get_curve_y());
+ links[p_node_id].curve_editors[2]->set_curve(tex->get_texture()->get_curve_z());
}
+ tex->emit_signal(CoreStringNames::get_singleton()->changed);
}
}
@@ -491,6 +500,35 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
bool is_curve = curve.is_valid() || curve_xyz.is_valid();
if (is_curve) {
+ // a default value handling
+ {
+ Variant default_value;
+ bool port_left_used = false;
+
+ for (const VisualShader::Connection &E : connections) {
+ if (E.to_node == p_id && E.to_port == 0) {
+ port_left_used = true;
+ break;
+ }
+ }
+
+ if (!port_left_used) {
+ default_value = vsnode->get_input_port_default_value(0);
+ }
+
+ Button *button = memnew(Button);
+ custom_editor->add_child(button);
+ register_default_input_button(p_id, 0, button);
+ custom_editor->move_child(button, 0);
+
+ button->connect("pressed", callable_mp(VisualShaderEditor::get_singleton(), &VisualShaderEditor::_edit_port_default_input), varray(button, p_id, 0));
+ if (default_value.get_type() != Variant::NIL) {
+ set_input_port_default_value(p_type, p_id, 0, default_value);
+ } else {
+ button->hide();
+ }
+ }
+
VisualShaderEditor::get_singleton()->graph->add_child(node);
VisualShaderEditor::get_singleton()->_update_created_node(node);
@@ -643,6 +681,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
for (const VisualShader::Connection &E : connections) {
if (E.to_node == p_id && E.to_port == j) {
port_left_used = true;
+ break;
}
}
}
@@ -777,7 +816,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
expand->connect("pressed", callable_mp(VisualShaderEditor::get_singleton(), &VisualShaderEditor::_expand_output_port), varray(p_id, i, !vsnode->_is_output_port_expanded(i)), CONNECT_DEFERRED);
hb->add_child(expand);
}
- if (visual_shader->get_shader_type() == VisualShader::TYPE_FRAGMENT && port_right != VisualShaderNode::PORT_TYPE_TRANSFORM && port_right != VisualShaderNode::PORT_TYPE_SAMPLER) {
+ if (vsnode->has_output_port_preview(i) && port_right != VisualShaderNode::PORT_TYPE_TRANSFORM && port_right != VisualShaderNode::PORT_TYPE_SAMPLER) {
TextureButton *preview = memnew(TextureButton);
preview->set_toggle_mode(true);
preview->set_normal_texture(VisualShaderEditor::get_singleton()->get_theme_icon(SNAME("GuiVisibilityHidden"), SNAME("EditorIcons")));
diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h
index 9f24c5af72..5788959a77 100644
--- a/editor/plugins/visual_shader_editor_plugin.h
+++ b/editor/plugins/visual_shader_editor_plugin.h
@@ -335,8 +335,6 @@ class VisualShaderEditor : public VBoxContainer {
void _delete_node_request(int p_type, int p_node);
void _delete_nodes_request();
- void _removed_from_graph();
-
void _node_changed(int p_id);
void _edit_port_default_input(Object *p_button, int p_node, int p_port);
diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h
index eb6c300d5b..f90db02c46 100644
--- a/editor/project_settings_editor.h
+++ b/editor/project_settings_editor.h
@@ -100,8 +100,6 @@ class ProjectSettingsEditor : public AcceptDialog {
void _action_reordered(const String &p_action_name, const String &p_relative_to, bool p_before);
void _update_action_map_editor();
- ProjectSettingsEditor();
-
protected:
void _notification(int p_what);
static void _bind_methods();
diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp
index fc3abbb87e..f0ec78bde6 100644
--- a/editor/quick_open.cpp
+++ b/editor/quick_open.cpp
@@ -55,16 +55,23 @@ void EditorQuickOpen::_build_search_cache(EditorFileSystemDirectory *p_efsd) {
_build_search_cache(p_efsd->get_subdir(i));
}
+ Vector<String> base_types = String(base_type).split(String(","));
for (int i = 0; i < p_efsd->get_file_count(); i++) {
String file_type = p_efsd->get_file_type(i);
- if (ClassDB::is_parent_class(file_type, base_type)) {
- String file = p_efsd->get_file_path(i);
- files.push_back(file.substr(6, file.length()));
-
- // Store refs to used icons.
- String ext = file.get_extension();
- if (!icons.has(ext)) {
- icons.insert(ext, get_theme_icon((has_theme_icon(file_type, SNAME("EditorIcons")) ? file_type : String("Object")), SNAME("EditorIcons")));
+ // Iterate all possible base types.
+ for (String &parent_type : base_types) {
+ if (ClassDB::is_parent_class(file_type, parent_type)) {
+ String file = p_efsd->get_file_path(i);
+ files.push_back(file.substr(6, file.length()));
+
+ // Store refs to used icons.
+ String ext = file.get_extension();
+ if (!icons.has(ext)) {
+ icons.insert(ext, get_theme_icon((has_theme_icon(file_type, SNAME("EditorIcons")) ? file_type : String("Object")), SNAME("EditorIcons")));
+ }
+
+ // Stop testing base types as soon as we got a match.
+ break;
}
}
}
diff --git a/editor/rename_dialog.cpp b/editor/rename_dialog.cpp
index 9063b5c6f8..a5e1b0eab8 100644
--- a/editor/rename_dialog.cpp
+++ b/editor/rename_dialog.cpp
@@ -459,7 +459,7 @@ String RenameDialog::_substitute(const String &subject, const Node *node, int co
return result;
}
-void RenameDialog::_error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, ErrorHandlerType p_type) {
+void RenameDialog::_error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) {
RenameDialog *self = (RenameDialog *)p_self;
String source_file(p_file);
diff --git a/editor/rename_dialog.h b/editor/rename_dialog.h
index 7990862b37..4db3ef6740 100644
--- a/editor/rename_dialog.h
+++ b/editor/rename_dialog.h
@@ -63,7 +63,7 @@ class RenameDialog : public ConfirmationDialog {
String _postprocess(const String &subject);
void _update_preview(String new_text = "");
void _update_preview_int(int new_value = 0);
- static void _error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, ErrorHandlerType p_type);
+ static void _error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, bool p_editor_notify, ErrorHandlerType p_type);
SceneTreeEditor *scene_tree_editor;
UndoRedo *undo_redo;
diff --git a/editor/reparent_dialog.h b/editor/reparent_dialog.h
index 5c3a65a522..3fcdda7bed 100644
--- a/editor/reparent_dialog.h
+++ b/editor/reparent_dialog.h
@@ -46,7 +46,6 @@ class ReparentDialog : public ConfirmationDialog {
SceneTreeEditor *tree;
CheckBox *keep_transform;
- void update_tree();
void _reparent();
void _cancel();
@@ -56,7 +55,6 @@ protected:
public:
void set_current(const Set<Node *> &p_selection);
- String get_selected_type();
ReparentDialog();
~ReparentDialog();
diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h
index 255e026887..66000602fa 100644
--- a/editor/scene_tree_dock.h
+++ b/editor/scene_tree_dock.h
@@ -246,8 +246,6 @@ class SceneTreeDock : public VBoxContainer {
void _perform_instantiate_scenes(const Vector<String> &p_files, Node *parent, int p_pos);
void _replace_with_branch_scene(const String &p_file, Node *base);
- void _file_selected(String p_file);
-
void _remote_tree_selected();
void _local_tree_selected();
diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h
index 4acd5d8486..b4c40ab17a 100644
--- a/editor/scene_tree_editor.h
+++ b/editor/scene_tree_editor.h
@@ -114,8 +114,6 @@ class SceneTreeEditor : public Control {
void _node_visibility_changed(Node *p_node);
void _update_visibility_color(Node *p_node, TreeItem *p_item);
- void _node_replace_owner(Node *p_base, Node *p_node, Node *p_root);
-
void _selection_changed();
Node *get_scene_node();
@@ -173,7 +171,6 @@ class SceneTreeDialog : public ConfirmationDialog {
//Button *cancel;
LineEdit *filter;
- void update_tree();
void _select();
void _cancel();
void _filter_changed(const String &p_filter);
diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp
index 9062169e06..78dc85aa7d 100644
--- a/editor/settings_config_dialog.cpp
+++ b/editor/settings_config_dialog.cpp
@@ -433,7 +433,7 @@ void EditorSettingsDialog::_update_shortcuts() {
}
Array original = sc->get_meta("original");
- Array shortcuts_array = sc->get_events();
+ Array shortcuts_array = sc->get_events().duplicate(true);
bool same_as_defaults = Shortcut::is_event_array_equal(original, shortcuts_array);
bool collapse = !collapsed.has(E) || (collapsed.has(E) && collapsed[E]);
diff --git a/editor/translations/Makefile b/editor/translations/Makefile
index 1843114f06..82b3d49c59 100644
--- a/editor/translations/Makefile
+++ b/editor/translations/Makefile
@@ -18,3 +18,24 @@ merge:
check:
@for po in $(POFILES); do msgfmt -c $$po -o /dev/null; done
+
+# Generate completion ratio from statistics string such as:
+# 2775 translated messages, 272 fuzzy translations, 151 untranslated messages.
+# First number can be 0, second and third numbers are only present if non-zero.
+include-list:
+ @list=""; \
+ threshold=0.30; \
+ for po in $(POFILES); do \
+ res=`msgfmt --statistics $$po -o /dev/null 2>&1 | sed 's/[^0-9,]*//g'`; \
+ complete=`cut -d',' -f1 <<< $$res`; \
+ fuzzy_or_untranslated=`cut -d',' -f2 <<< $$res`; \
+ untranslated_maybe=`cut -d',' -f3 <<< $$res`; \
+ if [ -z "$$fuzzy_or_untranslated" ]; then fuzzy_or_untranslated=0; fi; \
+ if [ -z "$$untranslated_maybe" ]; then untranslated_maybe=0; fi; \
+ incomplete=`expr $$fuzzy_or_untranslated + $$untranslated_maybe`; \
+ if `awk "BEGIN {exit !($$complete / ($$complete + $$incomplete) > $$threshold)}"`; then \
+ lang=`basename $$po .po`; \
+ list+="$$lang,"; \
+ fi; \
+ done; \
+ echo $$list;
diff --git a/editor/translations/af.po b/editor/translations/af.po
index 223a1b1c45..a38a5103d2 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -10,6 +10,7 @@
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-04-05 14:28+0000\n"
"Last-Translator: Henry LeRoux <henry.leroux@ocsbstudent.ca>\n"
@@ -2475,6 +2476,15 @@ msgid ""
"be satisfied."
msgstr ""
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save All Scenes"
+msgstr "Stoor As"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr ""
@@ -2592,6 +2602,10 @@ 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."
@@ -2918,11 +2932,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Save All Scenes"
-msgstr "Stoor As"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4389,6 +4398,18 @@ 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 ""
@@ -4398,10 +4419,6 @@ msgid "Preset"
msgstr "Herset Zoem"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr ""
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7412,12 +7429,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Deursoek Hulp"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Voorskou:"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7852,7 +7871,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7860,6 +7879,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8204,6 +8227,26 @@ 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 ""
@@ -14320,6 +14363,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14329,7 +14380,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 16cc1fd0a7..67b76771d2 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -59,6 +59,7 @@
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-09-19 11:14+0000\n"
"Last-Translator: Mohammed Mubarak <modymu9@gmail.com>\n"
@@ -1007,7 +1008,7 @@ msgstr "لا نتائج من أجل \"%s\"."
#: editor/create_dialog.cpp editor/property_selector.cpp
msgid "No description available for %s."
-msgstr "ليس هناك وص٠مناسب لأجل s%."
+msgstr "ليس هناك وص٠مناسب لأجل %s."
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -2441,6 +2442,15 @@ msgid ""
"be satisfied."
msgstr "لا يمكن Ø­ÙØ¸ المشهد. على الأرجح لا يمكن Ø¥Ø³ØªÙŠÙØ§Ø¡ التبعيات (مجسّدات)."
+#: editor/editor_node.cpp
+#, fuzzy
+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 "لا يمكن الكتابة عنوة (استبدال overwrite ) المشهد كونه ما زال Ù…ÙØªÙˆØ­Ø§Ù‹!"
@@ -2577,6 +2587,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "هل تريد Ø­ÙØ¸ التغييرات إلي'%s' قبل الإغلاق؟"
#: 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."
@@ -2924,10 +2938,6 @@ msgid "Save Scene"
msgstr "Ø­ÙØ¸ المشهد"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Ø­ÙØ¸ جميع المشاهد"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "تحويل إلى..."
@@ -4252,15 +4262,15 @@ msgstr "جاري البحث..."
#: editor/find_in_files.cpp
msgid "%d match in %d file."
-msgstr "d% تطابق ÙÙŠ d% الملÙ."
+msgstr "%d تطابق ÙÙŠ %d الملÙ."
#: editor/find_in_files.cpp
msgid "%d matches in %d file."
-msgstr "d% تطابقات ÙÙŠ d% الملÙ."
+msgstr "%d تطابقات ÙÙŠ %d الملÙ."
#: editor/find_in_files.cpp
msgid "%d matches in %d files."
-msgstr "d% تطابقات ÙÙŠ d% الملÙ."
+msgstr "%d تطابقات ÙÙŠ %d الملÙ."
#: editor/groups_editor.cpp
msgid "Add to Group"
@@ -4425,6 +4435,18 @@ msgid "Clear Default for '%s'"
msgstr "إخلاء Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ù„ '%s'"
#: 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 "إستيراد ك:"
@@ -4433,10 +4455,6 @@ msgid "Preset"
msgstr "إعداد Ù…ÙØ³Ø¨Ù‚"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "إعادة إستيراد"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Ø§Ø­ÙØ¸ المشاهد، إعادة-الإستيراد، وإعادة التشغيل"
@@ -7430,11 +7448,13 @@ msgid "Move Down"
msgstr "تحريك لأسÙÙ„"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "النص البرمجي التالي"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "النص البرمجي السابق"
#: editor/plugins/script_editor_plugin.cpp
@@ -7857,7 +7877,7 @@ msgstr "متعامد"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "منظوري"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7867,6 +7887,11 @@ msgstr "متعامد"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "منظوري"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "متعامد"
@@ -8230,6 +8255,27 @@ msgid "Right View"
msgstr "الواجهة View اليÙمنى"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "الواجهة View الأمامية"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "التبديل بين الرؤية المنظورية / الإسقاطية Orthogonal"
@@ -14648,6 +14694,14 @@ 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14660,7 +14714,10 @@ msgstr ""
"اجعلها RenderTarget وقم بتعيين نسيجها الداخلي لبعض العقد لعرضها."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "ينبغي أن يكون حجم إطار العرض أكبر من 0 ليتم الإخراج البصري لأي شيء."
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/az.po b/editor/translations/az.po
index 1965e41921..76fb760ac1 100644
--- a/editor/translations/az.po
+++ b/editor/translations/az.po
@@ -8,6 +8,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2021-09-16 14:36+0000\n"
"Last-Translator: Lucifer25x <umudyt2006@gmail.com>\n"
"Language-Team: Azerbaijani <https://hosted.weblate.org/projects/godot-engine/"
@@ -2403,6 +2404,14 @@ msgid ""
"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 ""
@@ -2519,6 +2528,10 @@ 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."
@@ -2838,10 +2851,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4245,15 +4254,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7146,12 +7163,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "SkriptÉ™ qoÅŸulun:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "ÆvvÉ™lki addıma keç"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7560,7 +7579,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7568,6 +7587,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7905,6 +7928,26 @@ 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 ""
@@ -13771,6 +13814,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13780,7 +13831,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index 7aab99c847..c4ad5a3993 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -16,8 +16,9 @@
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-09-20 14:46+0000\n"
+"PO-Revision-Date: 2021-10-11 15:44+0000\n"
"Last-Translator: Любомир ВаÑилев <lyubomirv@gmx.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/bg/>\n"
@@ -2336,6 +2337,14 @@ msgid ""
"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 ""
@@ -2452,6 +2461,10 @@ 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."
@@ -2793,10 +2806,6 @@ msgid "Save Scene"
msgstr "Запазване на Ñцената"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Запазване на вÑички Ñцени"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4202,6 +4211,18 @@ msgid "Clear Default for '%s'"
msgstr "ИзчиÑтване на подразбирането за „%s“"
#: 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 "ВнаÑÑне като:"
@@ -4210,10 +4231,6 @@ msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Повторно внаÑÑне"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -5481,15 +5498,13 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Заключване на избраното"
+msgstr "Заключено"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Групи"
+msgstr "Групирано"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -7143,11 +7158,13 @@ msgid "Move Down"
msgstr "ПремеÑтване надолу"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Следващ Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Предишен Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
@@ -7564,8 +7581,9 @@ msgid "Left Orthogonal"
msgstr "ЛÑв бутон"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
+#, fuzzy
+msgid "Left Perspective"
+msgstr "Долу влÑво"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -7573,6 +7591,10 @@ msgid "Right Orthogonal"
msgstr "ДеÑен бутон"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7910,6 +7932,26 @@ 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 ""
@@ -13854,6 +13896,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13863,7 +13913,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index 6c958956bc..96a57f9dd5 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -14,6 +14,7 @@
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"
@@ -2513,6 +2514,16 @@ msgstr ""
"দৃশà§à¦¯à¦Ÿà¦¿ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না। সমà§à¦­à¦¬à¦¤ যেসবের (ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸) উপর নিরà§à¦­à¦° করছে তাদের "
"সনà§à¦¤à§à¦·à§à¦Ÿ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না।"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "রূপানà§à¦¤à¦°à¦¿à¦¤ গঠনবিনà§à¦¯à¦¾à¦¸ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save All Scenes"
+msgstr "সকল দৃশà§à¦¯ সংরকà§à¦·à¦£ করà§à¦¨"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr ""
@@ -2646,6 +2657,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "'%s' বনà§à¦§ করার পূরà§à¦¬à§‡ পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ সংরকà§à¦·à¦£ করবেন?"
#: 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."
@@ -3009,11 +3024,6 @@ msgid "Save Scene"
msgstr "দৃশà§à¦¯ সংরকà§à¦·à¦£ করà§à¦¨"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Save All Scenes"
-msgstr "সকল দৃশà§à¦¯ সংরকà§à¦·à¦£ করà§à¦¨"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "à¦à¦¤à§‡ রূপানà§à¦¤à¦° করà§à¦¨..."
@@ -4622,6 +4632,19 @@ msgstr "'%s' à¦à¦° জনà§à¦¯ ডিফলà§à¦Ÿ কà§à¦²à¦¿à§Ÿà¦¾à¦° কà¦
#: editor/import_dock.cpp
#, fuzzy
+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
+#, fuzzy
msgid "Import As:"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
@@ -4631,11 +4654,6 @@ msgid "Preset"
msgstr "পà§à¦°à¦¿à¦¸à§‡à¦Ÿ..."
#: editor/import_dock.cpp
-#, fuzzy
-msgid "Reimport"
-msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7820,11 +7838,13 @@ msgid "Move Down"
msgstr "নীচে যান"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
#: editor/plugins/script_editor_plugin.cpp
@@ -8285,7 +8305,7 @@ msgstr "সমকোণীয় (Orthogonal)"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "পরিপà§à¦°à§‡à¦•à§à¦·à¦¿à¦¤ (Perspective)"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8295,6 +8315,11 @@ msgstr "সমকোণীয় (Orthogonal)"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "পরিপà§à¦°à§‡à¦•à§à¦·à¦¿à¦¤ (Perspective)"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "সমকোণীয় (Orthogonal)"
@@ -8669,6 +8694,27 @@ 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "সনà§à¦®à§à¦– দরà§à¦¶à¦¨"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Switch Perspective/Orthogonal View"
msgstr "পরিপà§à¦°à§‡à¦•à§à¦·à¦¿à¦¤/সমকোণীয় (Perspective/Orthogonal) দরà§à¦¶à¦¨ পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -15215,6 +15261,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -15228,7 +15282,9 @@ msgstr ""
"দৃশà§à¦¯à¦¾à¦¬à¦²à¦¿à¦•ে (texture) দৃশà§à¦¯à¦®à¦¾à¦¨ করতে কোনো নোডে হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨à¥¤"
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -16860,9 +16916,6 @@ msgstr ""
#~ msgid "Couldn't save atlas image:"
#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° ছবি সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "রূপানà§à¦¤à¦°à¦¿à¦¤ গঠনবিনà§à¦¯à¦¾à¦¸ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "অকারà§à¦¯à¦•র অনà§à¦¬à¦¾à¦¦à§‡à¦° উৎস!"
diff --git a/editor/translations/br.po b/editor/translations/br.po
index 4db566b371..071e1f021c 100644
--- a/editor/translations/br.po
+++ b/editor/translations/br.po
@@ -7,6 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2020-12-29 15:03+0000\n"
"Last-Translator: Feufoll <feufoll@gmail.com>\n"
"Language-Team: Breton <https://hosted.weblate.org/projects/godot-engine/"
@@ -2337,6 +2338,14 @@ msgid ""
"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 ""
@@ -2453,6 +2462,10 @@ 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."
@@ -2772,10 +2785,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4177,15 +4186,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7069,11 +7086,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7483,7 +7500,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7491,6 +7508,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7828,6 +7849,26 @@ 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 ""
@@ -13686,6 +13727,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13695,7 +13744,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index e2580e35d9..26f7646086 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -9,7 +9,7 @@
# roger <616steam@gmail.com>, 2019, 2020.
# Roger BR <drai_kin@hotmail.com>, 2019.
# Adolfo Jayme Barrientos <fitojb@ubuntu.com>, 2020.
-# Xavier Gomez <hiulit@gmail.com>, 2020.
+# Xavier Gomez <hiulit@gmail.com>, 2020, 2021.
# Aina <ainasoga@gmail.com>, 2020.
# Alex Mancha <codingstain@gmail.com>, 2020, 2021.
# Carles Pastor Badosa <cpbadosa@gmail.com>, 2021.
@@ -19,9 +19,10 @@
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-06-29 12:48+0000\n"
-"Last-Translator: DFC <damiafluixacanals28@gmail.com>\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
+"Last-Translator: Xavier Gomez <hiulit@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/"
"godot/ca/>\n"
"Language: ca\n"
@@ -29,7 +30,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.7.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -52,7 +53,7 @@ msgstr "L'entrada %i en l'expressió no és vàlida (no transmesa)"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr "No es pot emprar \"self\" car l'instància és nul·la (no transmesa)"
+msgstr "self no es pot utilitzar perquè la instància és nul·la (no aprovada)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -588,7 +589,7 @@ msgstr "Escala amb el Cursor"
#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
-msgstr "Duplicar la Selecció"
+msgstr "Duplica la Selecció"
#: editor/animation_track_editor.cpp
msgid "Duplicate Transposed"
@@ -596,7 +597,7 @@ msgstr "Duplica'l Transposat"
#: editor/animation_track_editor.cpp
msgid "Delete Selection"
-msgstr "Suprimir la Selecció"
+msgstr "Suprimeix la Selecció"
#: editor/animation_track_editor.cpp
msgid "Go to Next Step"
@@ -746,7 +747,6 @@ msgid "Whole Words"
msgstr "Paraules senceres"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Replace"
msgstr "Reemplaçar"
@@ -979,7 +979,7 @@ msgstr "No hi ha cap resultat per a «%s»."
#: editor/create_dialog.cpp editor/property_selector.cpp
msgid "No description available for %s."
-msgstr ""
+msgstr "Cap descripció disponible per a %s."
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -1079,15 +1079,16 @@ msgid "Owners Of:"
msgstr "Propietaris de:"
#: editor/dependency_editor.cpp
-#, fuzzy
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 "Eliminar els fitxers seleccionats del projecte? (No es pot restaurar)"
+msgstr ""
+"Voleu eliminar els fitxers seleccionats del projecte? (No es pot desfer.)\n"
+"Depenent de la configuració del vostre sistema de fitxers, els fitxers es "
+"mouran a la paperera del sistema o se suprimiran permanentment."
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -1095,8 +1096,11 @@ msgid ""
"Depending on your filesystem configuration, the files will either be moved "
"to the system trash or deleted permanently."
msgstr ""
-"Els fitxers seleccionats són utilitzats per altres recursos.\n"
-"Voleu Eliminar-los de totes maneres? (No es pot desfer!)"
+"Els fitxers que s’eliminen són requerits per altres recursos perquè "
+"funcionin.\n"
+"Voleu eliminar-los de totes maneres? (No es pot desfer.)\n"
+"Depenent de la configuració del vostre sistema de fitxers, els fitxers es "
+"mouran a la paperera del sistema o se suprimiran permanentment."
#: editor/dependency_editor.cpp
msgid "Cannot remove:"
@@ -1750,7 +1754,6 @@ msgid "Node Dock"
msgstr "Nodes"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "FileSystem Dock"
msgstr "Sistema de Fitxers"
@@ -1892,7 +1895,7 @@ msgstr "Fés l'actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
-msgstr "Importa"
+msgstr "Importar"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
msgid "Export"
@@ -2154,7 +2157,6 @@ msgid "Constants"
msgstr "Constants"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
msgstr "Descripcions de la Propietat"
@@ -2171,9 +2173,8 @@ msgstr ""
"$color][url=$url] totaportant-ne una[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Descripcions del Mètode"
+msgstr "Descripcions dels Mètodes"
#: editor/editor_help.cpp
msgid ""
@@ -2435,6 +2436,15 @@ msgstr ""
"No s'ha pogut desar l'escena. Probablement, no s'han pogut establir totes "
"les dependències (instàncies o herències)."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "No s'ha pogut començar el subprocés!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Desar Totes les Escenes"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "No es pot sobreescriure la escena si encara està oberta!"
@@ -2570,6 +2580,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Desar els canvis a '%s' abans de tancar?"
#: 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."
@@ -2646,7 +2660,6 @@ msgid "Reload Saved Scene"
msgstr "Desa Escena"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"The current scene has unsaved changes.\n"
"Reload the saved scene anyway? This action cannot be undone."
@@ -2727,14 +2740,14 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Error carregant l'Script complement des del camí: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
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 ""
-"No es pot carregar l'script d'addon des del camí: '%s' Sembla que hi ha un "
-"error en el codi, si us plau comproveu la sintaxi."
+"No es pot carregar l'script de complement (addon) del camí: '%s'. Això pot "
+"ser degut a un error de codi en aquest script.\n"
+"Es desactivarà el complement (addon) a '% s' per a evitar més errors."
#: editor/editor_node.cpp
msgid ""
@@ -2927,10 +2940,6 @@ msgid "Save Scene"
msgstr "Desa Escena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Desar Totes les Escenes"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Converteix a..."
@@ -3182,9 +3191,8 @@ msgid "Suggest a Feature"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Send Docs Feedback"
-msgstr "Enviar suggeriments sobre la documentació"
+msgstr "Enviar suggeriments sobre la Documentació"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
msgid "Community"
@@ -3208,9 +3216,8 @@ msgid "Play"
msgstr "Reprodueix"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Pause the scene execution for debugging."
-msgstr "Pausa l’execució d’escena per a la depuració."
+msgstr "Posa en pausa l'execució de l'escena per a depurar-la."
#: editor/editor_node.cpp
msgid "Pause Scene"
@@ -3254,9 +3261,8 @@ msgid "Update When Changed"
msgstr "Actualitzar quan es canvia"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Hide Update Spinner"
-msgstr "Desactiva l'Indicador d'Actualització"
+msgstr "Amaga l'Indicador d'Actualització"
#: editor/editor_node.cpp
msgid "FileSystem"
@@ -3268,7 +3274,7 @@ msgstr "Inspector"
#: editor/editor_node.cpp
msgid "Expand Bottom Panel"
-msgstr "Expandeix el Quadre inferior"
+msgstr "Desplega el Tauler Inferior"
#: editor/editor_node.cpp
msgid "Output"
@@ -3289,14 +3295,12 @@ msgid "Manage Templates"
msgstr "Administrar Plantilles"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Install from file"
-msgstr "Instal·lar des d'un Fitxer"
+msgstr "Instal·la des d'un fitxer"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Select android sources file"
-msgstr "Selecciona una Malla d'Origen:"
+msgstr "Selecciona el fitxer de fonts d'Android"
#: editor/editor_node.cpp
msgid ""
@@ -3316,7 +3320,6 @@ msgstr ""
"d'exportació per a Android per personalitzar la compilació."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"The Android build template is already installed in this project and it won't "
"be overwritten.\n"
@@ -3325,17 +3328,16 @@ msgid ""
msgstr ""
"La plantilla de compilació d'Android ja està instal·lada i no se "
"sobreescriurà.\n"
-"Elimineu el directori 'build' manualment abans de tornar a intentar aquesta "
-"operació."
+"Elimineu el directori \"res://android/build\" manualment abans de tornar a "
+"intentar aquesta operació."
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Importa Plantilles des d'un Fitxer ZIP"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Template Package"
-msgstr "Gestor de Plantilles d'Exportació"
+msgstr "Paquet de Plantilles"
#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
@@ -3346,9 +3348,8 @@ msgid "Merge With Existing"
msgstr "Combina amb Existents"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Modifica la Transformació de l'Animació"
+msgstr "Apliqueu Transformacions de MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3385,9 +3386,8 @@ msgid "Select"
msgstr "Selecciona"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Select Current"
-msgstr "Selecciona el Directori Actual"
+msgstr "Selecciona Actual"
#: editor/editor_node.cpp
msgid "Open 2D Editor"
@@ -3414,9 +3414,8 @@ msgid "Open the previous Editor"
msgstr "Obre l'Editor precedent"
#: editor/editor_node.h
-#, fuzzy
msgid "Warning!"
-msgstr "Avís"
+msgstr "Atenció!"
#: editor/editor_path.cpp
#, fuzzy
@@ -3778,12 +3777,11 @@ msgid "Cannot remove temporary file:"
msgstr "No es pot desar el Tema:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid ""
"Templates installation failed.\n"
"The problematic templates archives can be found at '%s'."
msgstr ""
-"No s'han pogut instal·lar les plantilles. \n"
+"No s'han pogut instal·lar les plantilles.\n"
"Les plantilles problemàtics es troben a '%s'."
#: editor/export_template_manager.cpp
@@ -4472,6 +4470,18 @@ msgid "Clear Default for '%s'"
msgstr "Neteja el valor Predeterminat de '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "ReImportar"
+
+#: 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 "Importar com a:"
@@ -4481,10 +4491,6 @@ msgid "Preset"
msgstr "Configuracions prestablertes"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "ReImportar"
-
-#: editor/import_dock.cpp
#, fuzzy
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Guardar escenes, reimportar i reiniciar"
@@ -4894,11 +4900,10 @@ msgstr ""
"els noms de les pistes."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Player path set is invalid, so unable to retrieve track names."
msgstr ""
-"El camí del reproductor assignat no és vàlid, de manera que no pot recuperar "
-"els noms de les pistes."
+"El camí del reproductor assignat no és vàlid, de manera que no s'ha pogut "
+"recuperar els noms de les pistes."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/root_motion_editor_plugin.cpp
@@ -5124,7 +5129,6 @@ msgid "Include Gizmos (3D)"
msgstr "Inclou Gizmos (3D)"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Pin AnimationPlayer"
msgstr "Fixar AnimationPlayer"
@@ -5456,14 +5460,12 @@ msgid "Redirect loop."
msgstr "Bucle de redirecció."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, timeout"
msgstr "La sol·licitud ha fallat, s'ha esgotat el temps d'espera"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Timeout."
-msgstr "Temps esgotat."
+msgstr "Temps d'espera esgotat."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Failed:"
@@ -5527,7 +5529,6 @@ msgid "Download for this asset is already in progress!"
msgstr "Ja s'està baixant aquest actiu!"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Recently Updated"
msgstr "Actualitzat Recentment"
@@ -5536,12 +5537,10 @@ msgid "Least Recently Updated"
msgstr "Actualitzacions menys recents"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Name (A-Z)"
msgstr "Nom (A-Z)"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Name (Z-A)"
msgstr "Nom (Z-A)"
@@ -5695,9 +5694,8 @@ msgid "Grid Step:"
msgstr "Pas de la Graella:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Primary Line Every:"
-msgstr "Línia principal cada:"
+msgstr "Línia Principal Cada:"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -6018,11 +6016,10 @@ msgstr "Eliminar el node o transició seleccionats."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Mostra la llista de tots els objectes en la posició clicada\n"
-"(Tal com Alt+Clic Dreta en el mode de Selecció)."
+"Alt + RMB: Mostra la llista de tots els nodes a la posició en què es fa "
+"clic, inclòs el bloquejat."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "RMB: Add node at position clicked."
@@ -6089,7 +6086,6 @@ msgid "Snapping Options"
msgstr "Opcions d'Ajustament"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Use Rotation Snap"
msgstr "Utilitzar Ajustament de Rotació"
@@ -6120,7 +6116,6 @@ msgid "Snap to Parent"
msgstr "Ajustar al Pare"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Node Anchor"
msgstr "Ajustar a l'Àncora del Node"
@@ -6133,9 +6128,8 @@ msgid "Snap to Node Center"
msgstr "Ajustar al centre del node"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Other Nodes"
-msgstr "Ajustar als altres nodes"
+msgstr "Ajustar a altres Nodes"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to Guides"
@@ -6170,9 +6164,8 @@ msgid "Show Bones"
msgstr "Mostra els Ossos"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Make Custom Bone(s) from Node(s)"
-msgstr "Fer os(sos) personalitzat(s) a partir de Node(s)"
+msgstr "Crear os(sos) personalitzat(s) a partir de Node(s)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -6222,9 +6215,8 @@ msgid "Frame Selection"
msgstr "Enquadra la Selecció"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Preview Canvas Scale"
-msgstr "Vista prèvia de l'escala del llenç"
+msgstr "Vista prèvia de l'Escala del Llenç"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
@@ -6436,20 +6428,18 @@ msgstr "Píxels sòlids"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Border Pixels"
-msgstr "Píxels de la vora"
+msgstr "Píxels de la Vora"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Directed Border Pixels"
-msgstr "Directoris i Fitxers:"
+msgstr "Píxels de la Vora Dirigits"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Capture from Pixel"
-msgstr "Captura des d'un Píxel"
+msgstr "Captura des de Píxel"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -6457,9 +6447,8 @@ msgid "Emission Colors"
msgstr "Colors d'Emissió"
#: editor/plugins/cpu_particles_editor_plugin.cpp
-#, fuzzy
msgid "CPUParticles"
-msgstr "ParticulesCPU"
+msgstr "PartículesCPU"
#: editor/plugins/cpu_particles_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
@@ -6472,14 +6461,12 @@ msgid "Create Emission Points From Node"
msgstr "Crea Punts d'Emissió des d'un Node"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Flat 0"
-msgstr "Flat0"
+msgstr "Flat 0"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Flat 1"
-msgstr "Flat1"
+msgstr "Flat 1"
#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
msgid "Ease In"
@@ -6572,9 +6559,8 @@ msgid "Mesh is empty!"
msgstr "La malla és buida!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't create a Trimesh collision shape."
-msgstr "Crea una Col·lisió entre malles de triangles germanes."
+msgstr "No s'ha pogut crear una forma de col·lisió Trimesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Trimesh Body"
@@ -6766,18 +6752,16 @@ msgid "Remove item %d?"
msgstr "Elimina l'element %d?"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid ""
"Update from existing scene?:\n"
"%s"
msgstr ""
-"Actualitzar des d'una 'Escena existent?:\n"
+"Actualitzar des de l'Escena existent?:\n"
"%s"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Mesh Library"
-msgstr "Biblioteca de Models (MeshLibrary)"
+msgstr "Biblioteca de Malles"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -6900,7 +6884,6 @@ msgstr "Crea un Polígon de Navegació"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Convert to CPUParticles"
msgstr "Convertir a ParticulesCPU"
@@ -6936,9 +6919,8 @@ msgid "The geometry doesn't contain any faces."
msgstr "El Node no conté cap geometria (cares)."
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "\"%s\" doesn't inherit from Spatial."
-msgstr "\"% s\" no hereta de Spatial."
+msgstr "\"%s\" no hereta de Spatial."
#: editor/plugins/particles_editor_plugin.cpp
#, fuzzy
@@ -7247,14 +7229,12 @@ msgid "Scale Polygon"
msgstr "Escala el Polígon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Create a custom polygon. Enables custom polygon rendering."
msgstr ""
-"Crear polígon personalitzat. Habilita el renderitzat de polígons "
+"Crear un polígon personalitzat. S'habilita el renderitzat de polígons "
"personalitzats."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid ""
"Remove a custom polygon. If none remain, custom polygon rendering is "
"disabled."
@@ -7267,9 +7247,8 @@ msgid "Paint weights with specified intensity."
msgstr "Pinta pesos amb la intensitat especificada."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Unpaint weights with specified intensity."
-msgstr "Despinta el pes amb la intensitat especificada."
+msgstr "Despinta pesos amb la intensitat especificada."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Radius:"
@@ -7418,7 +7397,6 @@ msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "L'AnimationTree no té ruta assignada cap a un AnimationPlayer"
#: editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Path to AnimationPlayer is invalid"
msgstr "El camí cap a l'AnimationPlayer no és vàlid"
@@ -7552,11 +7530,13 @@ msgid "Move Down"
msgstr "Mou avall"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Script Següent"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Script Anterior"
#: editor/plugins/script_editor_plugin.cpp
@@ -7743,7 +7723,6 @@ msgstr ""
"No s'hi poden afegir els nodes ja que l'escena no utilitza l'script '%s' ."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Lookup Symbol"
msgstr "Cercar Símbol"
@@ -7828,9 +7807,8 @@ msgid "Complete Symbol"
msgstr "Completa el Símbol"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Evaluate Selection"
-msgstr "Escala la Selecció"
+msgstr "Evalua la Selecció"
#: editor/plugins/script_text_editor.cpp
msgid "Trim Trailing Whitespace"
@@ -7857,7 +7835,6 @@ msgid "Contextual Help"
msgstr "Ajuda Contextual"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Toggle Bookmark"
msgstr "Commutar Marcador"
@@ -7866,9 +7843,8 @@ msgid "Go to Next Bookmark"
msgstr "Anar al marcador següent"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Bookmark"
-msgstr "Anar al marcador anterior"
+msgstr "Anar al Marcador Anterior"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Bookmarks"
@@ -7912,9 +7888,8 @@ msgid "Shader"
msgstr "Shader"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr "Aquest esquelet no té ossos, crea alguns nodes fill Bone2D."
+msgstr "Aquest esquelet no té ossos, crea alguns nodes Bone2D fills."
#: editor/plugins/skeleton_2d_editor_plugin.cpp
#, fuzzy
@@ -7922,9 +7897,8 @@ msgid "Create Rest Pose from Bones"
msgstr "Crea Punts d'Emissió des d'una Malla"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Set Rest Pose to Bones"
-msgstr "Estableix la postura de repòs als ossos"
+msgstr "Estableix la Postura de Repòs als Ossos"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Skeleton2D"
@@ -7953,7 +7927,6 @@ msgid "Create physical skeleton"
msgstr "Crea esquelet físic"
#: editor/plugins/skeleton_ik_editor_plugin.cpp
-#, fuzzy
msgid "Play IK"
msgstr "Reproduir IK"
@@ -7992,7 +7965,7 @@ msgstr "Ortogonal"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspectiva"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8002,6 +7975,11 @@ msgstr "Ortogonal"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspectiva"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Ortogonal"
@@ -8102,9 +8080,8 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Size:"
-msgstr "Mida: "
+msgstr "Mida:"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -8241,7 +8218,6 @@ msgid "Cinematic Preview"
msgstr "Previsualització Cinemàtica"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Not available when using the GLES2 renderer."
msgstr "No disponible quan s'utilitza el renderitzador GLES2."
@@ -8293,13 +8269,13 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
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 ""
-"Nota: el valor FPS mostrat és la taxa de fotogrames de l'editor.\n"
-"No es pot utilitzar com una indicació fiable del rendiment en el joc."
+"Nota: El valor FPS que es mostra és el percentatge de fotogrames de "
+"l'editor.\n"
+"No es pot utilitzar com a indicació fiable del rendiment del joc."
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -8325,9 +8301,8 @@ msgid "Snap Nodes to Floor"
msgstr "Ajustar Nodes al Terra"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't find a solid floor to snap the selection to."
-msgstr "No ha pogut trobar un terra sòlid per ajustar la selecció."
+msgstr "No s'ha pogut trobar un sòl sòlid on ajustar la selecció."
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -8367,6 +8342,27 @@ msgid "Right View"
msgstr "Vista Dreta"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Vista Frontal"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Canviar Vista Perspectiva/Ortogonal"
@@ -8424,7 +8420,6 @@ msgid "4 Viewports"
msgstr "4 Vistes"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Gizmos"
msgstr "Gizmos"
@@ -8456,17 +8451,14 @@ msgid "Snap Settings"
msgstr "Configuració d'Ajustament"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translate Snap:"
msgstr "Ajustament de Translació:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rotate Snap (deg.):"
msgstr "Ajustament de Rotació (graus):"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Scale Snap (%):"
msgstr "Ajustament d'Escala (%):"
@@ -8557,9 +8549,8 @@ msgid "LightOccluder2D Preview"
msgstr "Crea un Polígon Oclusor"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Sprite is empty!"
-msgstr "El Sprite està buit!"
+msgstr "L'Sprite està buit!"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Can't convert a sprite using animation frames to mesh."
@@ -8592,9 +8583,8 @@ msgid "Create CollisionPolygon2D Sibling"
msgstr "Crea un Polígon de Navegació"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Invalid geometry, can't create light occluder."
-msgstr "La geometria no és vàlida, no es pot crear oclusor de llum."
+msgstr "La geometria no és vàlida; no es pot crear un oclusor de llum."
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
@@ -8626,12 +8616,10 @@ msgid "Settings:"
msgstr "Configuració:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "No Frames Selected"
-msgstr "No hi ha Fotogrames Seleccionats"
+msgstr "No s'ha seleccionat cap fotograma"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Add %d Frame(s)"
msgstr "Afegir %d Fotograma(es)"
@@ -8698,9 +8686,8 @@ msgid "Add a Texture from File"
msgstr "Afegir Textura des de Fitxer"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Add Frames from a Sprite Sheet"
-msgstr "Afegir fotogrames des d'una fulla de Sprites"
+msgstr "Afegir fotogrames des d'un full d'Sprites"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Insert Empty (Before)"
@@ -8719,7 +8706,6 @@ msgid "Move (After)"
msgstr "Mou (Després)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Select Frames"
msgstr "Seleccionar Fotogrames"
@@ -8758,9 +8744,8 @@ msgid "Snap Mode:"
msgstr "Mode d'ajustament:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Pixel Snap"
-msgstr "Ajustar amb els Píxels"
+msgstr "Ajustament de Píxels"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Grid Snap"
@@ -8831,18 +8816,16 @@ msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "No fonts found."
-msgstr "No s'ha trobat!"
+msgstr "No s'ha trobat cap tipus de lletra."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "No icons found."
-msgstr "No s'ha trobat!"
+msgstr "No s'ha trobat cap icona."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} stylebox(es)"
@@ -8871,9 +8854,8 @@ msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Updating the editor"
-msgstr "Voleu Sortir de l'editor?"
+msgstr "S'està actualitzant l'editor"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -8881,9 +8863,8 @@ msgid "Finalizing"
msgstr "S'està Analitzant"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Filter:"
-msgstr "Filtre: "
+msgstr "Filtre:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "With Data"
@@ -8895,9 +8876,8 @@ msgid "Select by data type:"
msgstr "Selecciona un Node"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible color items."
-msgstr "Cal seleccionar un Element!"
+msgstr "Seleccioneu tots els elements de color visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible color items and their data."
@@ -8908,9 +8888,8 @@ msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible constant items."
-msgstr "Cal seleccionar un Element!"
+msgstr "Seleccioneu tots els elements constants visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible constant items and their data."
@@ -8921,9 +8900,8 @@ msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible font items."
-msgstr "Cal seleccionar un Element!"
+msgstr "Seleccioneu tots els elements de tipus de lletra visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items and their data."
@@ -8934,19 +8912,16 @@ msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible icon items."
-msgstr "Cal seleccionar un Element!"
+msgstr "Seleccioneu tots els elements d'icona visibles."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible icon items and their data."
-msgstr "Cal seleccionar un Element!"
+msgstr "Seleccioneu tots els elements d'icona visibles i les seves dades."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Deselect all visible icon items."
-msgstr "Cal seleccionar un Element!"
+msgstr "Desmarqueu tots els elements d'icona visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible stylebox items."
@@ -9289,9 +9264,8 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Toggle Button"
-msgstr "Botó de commutació"
+msgstr "Botó de Commutació"
#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
@@ -9370,7 +9344,6 @@ msgid "Editable Item"
msgstr "Element Editable"
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Subtree"
msgstr "Subarbre"
@@ -9400,9 +9373,8 @@ msgid "Erase Selection"
msgstr "Elimina la Selecció"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Fix Invalid Tiles"
-msgstr "Arreglar Rajoles no Valides"
+msgstr "Arreglar Tiles no vàlides"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -9423,7 +9395,7 @@ msgstr "Pinta Rectangle"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket Fill"
-msgstr "Cubell de pintura"
+msgstr "Cubell de Farcit"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -9431,7 +9403,7 @@ msgstr "Elimina Mapa de Rajoles"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Find Tile"
-msgstr "Trobar Rajola"
+msgstr "Troba el Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
@@ -9447,9 +9419,8 @@ msgid "Enable Priority"
msgstr "Habilitar Prioritat"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Filter tiles"
-msgstr "Filtrat de Fitxers"
+msgstr "Filtrar tiles"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Give a TileSet resource to this TileMap to use its tiles."
@@ -9479,37 +9450,35 @@ msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
-msgstr "Escollir Rajola"
+msgstr "Escollir Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate Left"
-msgstr "Girar a l'Esquerra"
+msgstr "Gira cap a l'Esquerra"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate Right"
-msgstr "Girar a la Dreta"
+msgstr "Gira cap a la Dreta"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip Horizontally"
-msgstr "Invertir Horitzontalment"
+msgstr "Volteja Horitzontalment"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip Vertically"
-msgstr "Invertir Verticalment"
+msgstr "Volteja Verticalment"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Clear Transform"
msgstr "Restablir Transformació"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Add Texture(s) to TileSet."
-msgstr "Afegeix Nodes des d'Arbre."
+msgstr "Afegir Textura(es) al TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove selected Texture from TileSet."
-msgstr "Elimineu la textura seleccionada de TileSet."
+msgstr "Eliminar la textura seleccionada del TileSet."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -9538,18 +9507,16 @@ msgid "Next Coordinate"
msgstr "Coordenada Següent"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Select the next shape, subtile, or Tile."
-msgstr "Seleccioneu la forma, sub-rajola o rajola següent."
+msgstr "Seleccioneu la següent forma, subtile o Tile."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Previous Coordinate"
msgstr "Coordenada Anterior"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Select the previous shape, subtile, or Tile."
-msgstr "Seleccioneu la forma, sub-rajola o rajola anterior."
+msgstr "Seleccioneu la forma, el subtile o el Tile anterior."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -9607,36 +9574,30 @@ msgid "Navigation Mode"
msgstr "Mode Navegació"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Bitmask Mode"
msgstr "Mode màscara de bits"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Priority Mode"
msgstr "Mode Prioritat"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Icon Mode"
msgstr "Mode Icona"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Z Index Mode"
-msgstr "Mode Index Z"
+msgstr "Mode Ãndex Z"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Copy bitmask."
msgstr "Copiar màscara de bits."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Paste bitmask."
msgstr "Enganxar màscara de bits."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Erase bitmask."
msgstr "Esborrar màscara de bits."
@@ -9664,9 +9625,8 @@ msgid "Delete Selected Shape"
msgstr "Elimina Seleccionats"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Keep polygon inside region Rect."
-msgstr "Mantenir polígon dins de la regió Rect."
+msgstr "Mantenir el polígon dins de la regió Rect."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Enable snap and show grid (configurable via the Inspector)."
@@ -9720,9 +9680,8 @@ msgstr ""
"Clica en una altra Peça per a editar-lo."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Delete selected Rect."
-msgstr "Suprimir Rectangle seleccionat."
+msgstr "Suprimir el Rect seleccionat."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -9916,9 +9875,8 @@ msgid "Detect new changes"
msgstr "Detectar nous canvis"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Changes"
-msgstr "Modifica"
+msgstr "Canvis"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Modified"
@@ -9961,9 +9919,8 @@ msgstr ""
"versió"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "No file diff is active"
-msgstr "Cap fitxer seleccionat!"
+msgstr "No hi ha cap diferència de fitxer activa"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect changes in file diff"
@@ -10370,9 +10327,8 @@ msgid "Returns the arc-sine of the parameter."
msgstr "Retorna l'arc sinus del paràmetre."
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr "(Només GLES3) Retorna el sinus hiperbòlic invers del paràmetre."
+msgstr "Retorna el sinus hiperbòlic invers del paràmetre."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-tangent of the parameter."
@@ -10887,7 +10843,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
-msgstr "VisualShader"
+msgstr "ShaderVisual"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
@@ -11349,14 +11305,12 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Esteu segur que voleu executar %d projectes de cop?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove %d projects from the list?"
-msgstr "Selecciona un dispositiu de la llista"
+msgstr "Voleu eliminar %d projectes de la llista?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove this project from the list?"
-msgstr "Selecciona un dispositiu de la llista"
+msgstr "Voleu eliminar aquest projecte de la llista?"
#: editor/project_manager.cpp
#, fuzzy
@@ -11890,9 +11844,8 @@ msgid "Select Method"
msgstr "Selecciona un Mètode"
#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Batch Rename"
-msgstr "Reanomena"
+msgstr "Reanomena en lot"
#: editor/rename_dialog.cpp
msgid "Replace:"
@@ -12096,9 +12049,8 @@ msgid "Instance Child Scene"
msgstr "Instancia una Escena Filla"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Can't paste root node into the same scene."
-msgstr "No es pot operar en Nodes d'una escena externa!"
+msgstr "No es pot enganxar el node arrel a la mateixa escena."
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -12334,9 +12286,8 @@ msgid "Reparent to New Node"
msgstr "Torna a Parentar el Node"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Make Scene Root"
-msgstr "Entesos!"
+msgstr "Convertir a Arrel d'Escena"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
@@ -12596,9 +12547,8 @@ msgid "Will load an existing script file."
msgstr "Es carregarà un fitxer de script existent."
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script file already exists."
-msgstr "L'Acció '%s' ja existeix!"
+msgstr "El fitxer script ja existeix."
#: editor/script_create_dialog.cpp
msgid ""
@@ -13765,9 +13715,8 @@ msgid "Installing to device, please wait..."
msgstr "S'estan buscant rèpliques..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not install to device: %s"
-msgstr "No s'ha pogut començar el subprocés!"
+msgstr "No s'ha pogut instal·lar al dispositiu: %s"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13889,11 +13838,8 @@ msgid "Signing debug %s..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Signing release %s..."
-msgstr ""
-"Analitzant Fitxers,\n"
-"Si Us Plau Espereu..."
+msgstr "S'està signant la versió %s ..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13963,14 +13909,12 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files to gradle project\n"
-msgstr "No es pot trobat el el fitxer 'project.godot' en el camí del projecte."
+msgstr "No s'han pogut exportar fitxers de projecte a gradle project\n"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not write expansion package file!"
-msgstr "No s'ha pogut escriure el fitxer:"
+msgstr "No s'ha pogut escriure el fitxer del paquet d'expansió!"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -14009,11 +13953,12 @@ msgid "Creating APK..."
msgstr "Creant els contorns..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Could not find template APK to export:\n"
"%s"
-msgstr "No es pot obrir la plantilla per exportar:"
+msgstr ""
+"No s'ha trobat la plantilla APK per a exportar:\n"
+"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -14303,9 +14248,9 @@ msgstr ""
"(occluder) faci efecte."
#: scene/2d/light_occluder_2d.cpp
-#, fuzzy
msgid "The occluder polygon for this occluder is empty. Please draw a polygon."
-msgstr "El polígon oclusiu és buit. Dibuixeu un polígon!"
+msgstr ""
+"El polígon oclusor d'aquest oclusor és buit. Si us plau, dibuixeu un polígon."
#: scene/2d/navigation_polygon.cpp
msgid ""
@@ -14508,13 +14453,12 @@ msgstr ""
"StaticBody, RigidBody, KinematicBody, etc."
#: scene/3d/collision_shape.cpp
-#, fuzzy
msgid ""
"A shape must be provided for CollisionShape to function. Please create a "
"shape resource for it."
msgstr ""
-"Cal proveir una forma perquè CollisionShape funcioni. Creeu-li un recurs de "
-"forma!"
+"Cal proporcionar una forma perquè CollisionShape funcioni. Creeu-ne un "
+"recurs de forma."
#: scene/3d/collision_shape.cpp
#, fuzzy
@@ -14777,9 +14721,8 @@ msgid ""
"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
"it as a child of a VehicleBody."
msgstr ""
-"El motor de físiques sobreescriurà els canvis en la mida dels nodes "
-"RigidBody(Caràcter o Rígid). \n"
-"Modifica la mida de les Formes de Col·lisió Filles."
+"VehicleWheel serveix per a proporcionar un sistema de rodes a un "
+"VehicleBody. Utilitzeu-lo com a fill d'un VehicleBody."
#: scene/3d/world_environment.cpp
msgid ""
@@ -14910,7 +14853,7 @@ msgstr "Cal utilitzar una extensió vàlida."
#: scene/gui/graph_edit.cpp
msgid "Enable grid minimap."
-msgstr "Activar graella del minimapa"
+msgstr "Activa el minimapa de quadrícula."
#: scene/gui/nine_patch_rect.cpp
msgid ""
@@ -14959,6 +14902,14 @@ msgstr ""
"No es pot carregar l'Entorn per Defecte especificat en la Configuració del "
"Projecte (Renderització->Entorn->Entorn Per Defecte)."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14972,7 +14923,9 @@ msgstr ""
"de Renderització i assigneu-ne la textura interna a algun node."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index eb257b0af6..598ff4163c 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -29,6 +29,7 @@
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-09-15 00:46+0000\n"
"Last-Translator: Zbyněk <zbynek.fiala@gmail.com>\n"
@@ -2431,6 +2432,15 @@ msgstr ""
"Nepodařilo se uložit scénu. Nejspíše se nepodařilo uspokojit závislosti "
"(instance nebo dÄ›diÄnosti)."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Nelze spustit podproces!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Uložit všechny scény"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Nelze přepsat scénu, která je stále otevřená!"
@@ -2566,6 +2576,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Uložit změny '%s' před zavřením?"
#: 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."
@@ -2910,10 +2924,6 @@ msgid "Save Scene"
msgstr "Uložit scénu"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Uložit všechny scény"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Konvertovat na..."
@@ -4420,6 +4430,18 @@ msgid "Clear Default for '%s'"
msgstr "VyÄistit výchozí pro '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Znovu importovat"
+
+#: 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 "Importovat jako:"
@@ -4428,10 +4450,6 @@ msgid "Preset"
msgstr "Profil"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Znovu importovat"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Uložit scény, znovu importovat a restartovat"
@@ -7412,11 +7430,13 @@ msgid "Move Down"
msgstr "Přesunout dolů"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Další skript"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Předchozí skript"
#: editor/plugins/script_editor_plugin.cpp
@@ -7838,7 +7858,7 @@ msgstr "Ortogonální"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspektivní"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7848,6 +7868,11 @@ msgstr "Ortogonální"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspektivní"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Ortogonální"
@@ -8209,6 +8234,27 @@ msgid "Right View"
msgstr "Pohled zprava"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Pohled zepředu"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Přepnout perspektivní/ortogonální pohled"
@@ -14519,6 +14565,14 @@ msgstr ""
"Výchozí prostředí specifikované v nastavení projektu (Vykreslování -> "
"Zobrazovací výřez -> Výchozí prostÅ™edí) se nepodaÅ™ilo naÄíst."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14532,7 +14586,10 @@ msgstr ""
"vnitřní texturu nějakému uzlu k zobrazení."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
"Velikost pohledu musí být větší než 0, aby bylo možné cokoliv renderovat."
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 008f3b947c..af1038552e 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -21,6 +21,7 @@
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-04-26 22:31+0000\n"
"Last-Translator: Kim Nielsen <kimmowich@stofanet.dk>\n"
@@ -2509,6 +2510,15 @@ msgstr ""
"Kunne ikke gemme scene. Der er nogle afhængigheder (forekomster) som ikke "
"kunne opfyldes."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Kunne ikke starte underproces!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Gem alle Scener"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr ""
@@ -2645,6 +2655,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Gem ændringer til '%s' før lukning?"
#: 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."
@@ -2995,10 +3009,6 @@ msgid "Save Scene"
msgstr "Gem Scene"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Gem alle Scener"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Konverter Til..."
@@ -4540,6 +4550,18 @@ msgid "Clear Default for '%s'"
msgstr "Fjern Standard for '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Genimporter"
+
+#: 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 "Importer Som:"
@@ -4549,10 +4571,6 @@ msgid "Preset"
msgstr "Forudindstillet..."
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Genimporter"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7612,12 +7630,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Ã…ben script"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Forrige fane"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -8060,7 +8080,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8069,6 +8089,10 @@ msgid "Right Orthogonal"
msgstr "Højre knap."
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8419,6 +8443,26 @@ 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 ""
@@ -14728,6 +14772,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14741,7 +14793,9 @@ msgstr ""
"indre textur til en node så den kan vises."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/de.po b/editor/translations/de.po
index b0ca136093..9f6f7ee0bf 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -72,12 +72,14 @@
# Philipp Wabnitz <philipp.wabnitz@s2011.tu-chemnitz.de>, 2021.
# jmih03 <joerni@mail.de>, 2021.
# Dominik Moos <dominik.moos@protonmail.com>, 2021.
+# Zae Chao <zaevi@live.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-08-27 08:25+0000\n"
-"Last-Translator: Dominik Moos <dominik.moos@protonmail.com>\n"
+"PO-Revision-Date: 2021-10-23 10:13+0000\n"
+"Last-Translator: Zae Chao <zaevi@live.com>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
"Language: de\n"
@@ -85,7 +87,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.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2485,6 +2487,14 @@ msgstr ""
"Szene konnte nicht gespeichert werden. Wahrscheinlich werden Abhängigkeiten "
"(Instanzen oder Vererbungen) nicht erfüllt."
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr "Eine oder mehrere Szenen konnten nicht gespeichert werden!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Alle Szenen speichern"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Momentan geöffnete Szenen können nicht überschrieben werden!"
@@ -2621,6 +2631,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Änderungen in ‚%s‘ vor dem Schließen speichern?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr "%s existiert nicht mehr! Bitte anderen Ort zum Speichern wählen."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2666,29 +2680,27 @@ msgstr "Die aktuelle Szene ist nicht gespeichert. Trotzdem öffnen?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Kann nicht rückgängig gemacht werden während Maustasten gedrückt sind."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Nichts rückgängig zu machen."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Rückgängig machen"
+msgstr "Rückgängig machen: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Kann nicht wiederhergestellt werden solange Maustasten gedrückt sind."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Nichts wiederherzustellen."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Wiederherstellen"
+msgstr "Wiederherstellen: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2983,10 +2995,6 @@ msgid "Save Scene"
msgstr "Szene speichern"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Alle Szenen speichern"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Umwandeln zu..."
@@ -3388,9 +3396,8 @@ msgid "Merge With Existing"
msgstr "Mit existierendem vereinen"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Transformation bearbeiten"
+msgstr "MeshInstance-Transforms anwenden"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3653,7 +3660,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Schnell laden"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4474,6 +4481,24 @@ msgid "Clear Default for '%s'"
msgstr "Standard für ‚%s‘ löschen"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Neuimport"
+
+#: 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 ""
+"Es existieren ausstehende Änderungen die noch nicht angewandt wurden. Um "
+"Änderungen der Importoptionen anzuwenden, bitte den Reimportieren-Knopf "
+"klicken.\n"
+"Eine andere Ressource in der Dateisystemleiste auszuwählen, ohne zuvor den "
+"Reimportieren-Knopf zu betätigen, verwirft sämtliche ausstehende Änderungen "
+"der Importoptionen."
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "Importiere als:"
@@ -4482,10 +4507,6 @@ msgid "Preset"
msgstr "Vorlage"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Neuimport"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Szenen speichern, reimportieren und neu starten"
@@ -5760,19 +5781,17 @@ msgstr "%d CanvasItems verschieben"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem \"%s\" to (%d, %d)"
-msgstr "CanvasItem „%s“ zu (%d, d%) verschieben"
+msgstr "CanvasItem „%s“ zu (%d, %d) verschieben"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Sperren ausgewählt"
+msgstr "Gesperrt"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Gruppe"
+msgstr "Gruppiert"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6722,14 +6741,12 @@ msgid "Remove Selected Item"
msgstr "Ausgewähltes Element entfernen"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Aus Szene importieren"
+msgstr "Aus Szene importieren (Transforms ignorieren)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Aus Szene importieren"
+msgstr "Aus Szene importieren (Transforms anwenden)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7323,14 +7340,12 @@ msgid "Flip Portal"
msgstr "Portal umdrehen"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Transform leeren"
+msgstr "Occluder-Set-Transform"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Erzeuge Node"
+msgstr "Mittel-Node"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7467,11 +7482,11 @@ msgid "Move Down"
msgstr "Schiebe runter"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "Nächstes Skript"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr "Vorheriges Skript"
#: editor/plugins/script_editor_plugin.cpp
@@ -7838,14 +7853,12 @@ msgid "Skeleton2D"
msgstr "Skelett2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Kochen in Ruhe-Pose setzen"
+msgstr "Zu Ruhepose zurücksetzen"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Überschreiben"
+msgstr "Ruhepose überschreiben"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7872,69 +7885,62 @@ msgid "Perspective"
msgstr "Perspektivisch"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Senkrecht"
+msgstr "Oben orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspektivisch"
+msgstr "Oben perspektivisch"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Senkrecht"
+msgstr "Unten orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspektivisch"
+msgstr "Unten perspektivisch"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Senkrecht"
+msgstr "Links orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "Perspektivisch"
+msgid "Left Perspective"
+msgstr "Linke Perspektive"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Senkrecht"
+msgstr "Rechts orthogonal"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Rechts perspektivisch"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Senkrecht"
+msgstr "Vorne orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspektivisch"
+msgstr "Vorne perspektivisch"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Senkrecht"
+msgstr "Hinten orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspektivisch"
+msgstr "Hinten perspektivisch"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [auto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [Portale aktiv]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8261,6 +8267,26 @@ msgid "Right View"
msgstr "Sicht von rechts"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Down"
+msgstr "Orbitsicht unten"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Left"
+msgstr "Orbitsicht links"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Right"
+msgstr "Orbitsicht rechts"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Up"
+msgstr "Orbitsicht oben"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr "Orbitsicht 180"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Zwischen perspektivischer und orthogonaler Sicht wechseln"
@@ -8334,9 +8360,8 @@ msgid "View Portal Culling"
msgstr "Portal-Culling anzeigen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Portal-Culling anzeigen"
+msgstr "Occlusion-Culling anzeigen"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8404,9 +8429,8 @@ msgid "Post"
msgstr "Nachher"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Unbenanntes Projekt"
+msgstr "Unbenannter Griff"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -12552,14 +12576,12 @@ msgid "Set Portal Point Position"
msgstr "Portal-Point-Position festlegen"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Zylinderformradius ändern"
+msgstr "Occluder-Sphärenradius festlegen"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Kurven-Eingangsposition festlegen"
+msgstr "Occluder-Sphärenposition festlegen"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12844,9 +12866,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "Der Klassenname kann nicht ein reserviertes Schlüsselwort sein"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Auswahl füllen"
+msgstr "Solution bauen"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -14211,11 +14232,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Es wurde keine Form festgelegt."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Es werden nur gleichförmige Skalierungen unterstützt."
#: scene/3d/particles.cpp
msgid ""
@@ -14581,6 +14602,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Die Achsenstreckungsoptionen „Tile“ und „Tile Fit“ sind nur aktiv, wenn das "
+"GLES3-Rendering-Backend genutzt wird.\n"
+"Zur Zeit wird das GLES2-Backend genutzt und diese Optionen verhalten sich "
+"wie „Stretch“."
#: scene/gui/popup.cpp
msgid ""
@@ -14621,6 +14646,18 @@ msgstr ""
"Das Standard-Environment wie festgelegt in den Projekteinstellungen "
"(Rendering→Environment→Standard-Environment) konnte nicht geladen werden."
+#: 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 ""
+"Sehr kurze Schaltzeiten (< 0,05 Sekunden) können instabile Ergebnisse "
+"abhängig von der Bildfrequenz liefern.\n"
+"Für sehr kurze Schaltzeiten wird empfohlen, statt eines Timers, die "
+"›process‹-Schleife eines Skripts zu benutzen."
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14635,13 +14672,16 @@ msgstr ""
"irgendeinem Node zum Anzeigen zugewiesen werden."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
-"Die Größe des Viewports muss größer als 0 sein um etwas rendern zu können."
+"Die Größe des Viewports muss mindestes 2 Pixel in beiden Dimensionen "
+"betragen um überhaupt irgendetwas rendern zu können."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphere-Spheres festlegen"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -16530,9 +16570,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "Atlas-Bild konnte nicht gespeichert werden:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "Konvertierte Textur konnte nicht gespeichert werden:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "Fehlerhafte Übersetzungsquelle!"
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index 47aa1d3a22..60507c472d 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -9,6 +9,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
@@ -2314,6 +2316,14 @@ msgid ""
"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 ""
@@ -2430,6 +2440,10 @@ 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."
@@ -2749,10 +2763,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4152,15 +4162,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7041,11 +7059,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7455,7 +7473,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7463,6 +7481,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7800,6 +7822,26 @@ 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 ""
@@ -13657,6 +13699,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13666,7 +13716,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/el.po b/editor/translations/el.po
index ea1c91f4b5..d8d6251838 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -16,6 +16,7 @@
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-07-09 14:32+0000\n"
"Last-Translator: Shadofer <shadowrlrs@gmail.com>\n"
@@ -2432,6 +2433,15 @@ msgstr ""
"ΑδÏνατη η αποθήκευση σκηνής. Πιθανώς οι εξαÏτήσεις (στιγμιότυπα ή "
"κληÏονομιά) να μην μποÏοÏσαν να ικανοποιηθοÏν."
+#: editor/editor_node.cpp
+#, fuzzy
+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 "ΑδÏνατη η αντικατάσταση σκηνής που είναι ακόμα ανοιχτή!"
@@ -2573,6 +2583,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Αποθήκευση αλλαγών στο '%s' Ï€Ïιν το κλείσιμο;"
#: 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."
@@ -2929,10 +2943,6 @@ msgid "Save Scene"
msgstr "ΑποθηκεÏση σκηνής"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Αποθήκευση Ολων των Σκηνών"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "ΜετατÏοπή σε..."
@@ -4455,6 +4465,18 @@ msgid "Clear Default for '%s'"
msgstr "ΕκκαθάÏιση Ï€Ïοεπιλογής για '%s'"
#: 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 "Εισαγωγή ώς:"
@@ -4463,10 +4485,6 @@ msgid "Preset"
msgstr "ΠÏοÏÏθμιση"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Επανεισαγωγή"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Αποθήκευση Σκηνών, Επανεισαγωγή και Επανεκκίνηση"
@@ -7484,11 +7502,13 @@ msgid "Move Down"
msgstr "Μετακίνηση κάτω"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Επόμενη Δέμη ΕνεÏγειών"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "ΠÏοηγοÏμενη Δέσμη ΕνεÏγειών"
#: editor/plugins/script_editor_plugin.cpp
@@ -7915,7 +7935,7 @@ msgstr "ΑξονομετÏική"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "ΠÏοοπτική"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7925,6 +7945,11 @@ msgstr "ΑξονομετÏική"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "ΠÏοοπτική"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "ΑξονομετÏική"
@@ -8290,6 +8315,27 @@ 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
+#, fuzzy
+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 "Εναλλαγή ΠÏοοπτικής/ΑξονομετÏικής ΠÏοβολής"
@@ -14696,6 +14742,14 @@ msgstr ""
"Το Ï€Ïοεπιλεγμένο πεÏιβάλλον, όπως έχει οÏισθεί στις Ïυθμίσεις έÏγου "
"(Rendering -> Environment -> Default Environment) δεν μποÏοÏσε να φοÏτωθεί."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14709,7 +14763,10 @@ msgstr ""
"έναν κόμβο για απεικόνιση."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
"Το μέγεθος της οπτικής γωνίας Ï€Ïέπει να είναι μεγαλÏτεÏο του 0 για να γίνει "
"απόδοση."
@@ -16573,9 +16630,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Couldn't save atlas image:"
#~ msgstr "Δεν ήταν δυνατή η αποθήκευση εικόνας άτλαντα:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "Δεν ήταν δυνατή η αποθήκευση υφής που έχει μετατÏαπεί:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "Μη έγκυÏη πηγή μετάφÏασης!"
diff --git a/editor/translations/eo.po b/editor/translations/eo.po
index 5987003cb7..c0aa10e89f 100644
--- a/editor/translations/eo.po
+++ b/editor/translations/eo.po
@@ -17,15 +17,16 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2021-08-14 19:04+0000\n"
-"Last-Translator: mourning20s <mourning20s@protonmail.com>\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"
"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.8-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2404,6 +2405,15 @@ msgstr ""
"Ne eble konservi scenon. VerÅajne dependoj (ekzemploj aÅ­ heredito) ne "
"verigus."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Ne eble komencas subprocezon!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Konservi ĉiujn scenojn"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Ne eble anstataÅ­igas scenon ke estas ankoraÅ­ malferma!"
@@ -2539,6 +2549,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Konservi ÅanÄojn al '%s' antaÅ­ fermo?"
#: 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."
@@ -2584,7 +2598,7 @@ msgstr "Nuna sceno ne estas konservita. Malfermi ĉuikaze?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Ne povu malfari dum musbutonoj estas premitaj."
#: editor/editor_node.cpp
msgid "Nothing to undo."
@@ -2888,10 +2902,6 @@ msgid "Save Scene"
msgstr "Konservi scenon"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Konservi ĉiujn scenojn"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Konverti al..."
@@ -4395,6 +4405,18 @@ msgid "Clear Default for '%s'"
msgstr "Vakigi defaÅ­lton por '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reenporti"
+
+#: 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 "Enporti kiel:"
@@ -4403,10 +4425,6 @@ msgid "Preset"
msgstr "AntaÅ­agordo"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reenporti"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Konservi scenojn, reenporti, kaj rekomenci"
@@ -7375,12 +7393,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Nova skripto"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "AntaÅ­a tabo"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7795,8 +7815,9 @@ msgid "Left Orthogonal"
msgstr "Maldekstra butono"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
+#, fuzzy
+msgid "Left Perspective"
+msgstr "Malsupre maldekstre"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -7804,6 +7825,10 @@ msgid "Right Orthogonal"
msgstr "Dekstra butono"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8159,6 +8184,26 @@ 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 ""
@@ -14196,6 +14241,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14205,7 +14258,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 95a4a08bfd..bc314e8294 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -73,9 +73,10 @@
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-27 08:25+0000\n"
-"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
+"PO-Revision-Date: 2021-10-23 10:13+0000\n"
+"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -83,7 +84,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.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1574,7 +1575,7 @@ msgstr "Renombrar Autoload"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
-msgstr "Act./Desact. Globales de Autoload"
+msgstr "Act./Desact. Globales de AutoLoad"
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
@@ -2481,6 +2482,14 @@ msgstr ""
"No se pudo guardar la escena. Las posibles dependencias (instancias o "
"herencias) no se pudieron resolver."
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr "¡No se ha podido guardar una o varias escenas!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Guardar Todas las Escenas"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "¡No se puede sobrescribir una escena que todavía está abierta!"
@@ -2618,6 +2627,11 @@ msgid "Save changes to '%s' before closing?"
msgstr "¿Guardar cambios de '%s' antes de cerrar?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr ""
+"¡%s ya no existe! Por favor, especifica una nueva ubicación de guardado."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2663,29 +2677,27 @@ msgstr "Escena actual no guardada ¿Abrir de todos modos?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "No se puede deshacer mientras se pulsan los botones del mouse."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "No hay nada que deshacer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Deshacer"
+msgstr "Deshacer: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "No se puede rehacer mientras los botones del mouse están presionados."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "No hay nada que rehacer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Rehacer"
+msgstr "Rehacer: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2975,10 +2987,6 @@ msgid "Save Scene"
msgstr "Guardar Escena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Guardar Todas las Escenas"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Convertir a..."
@@ -3383,9 +3391,8 @@ msgid "Merge With Existing"
msgstr "Combinar Con Existentes"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Cambiar Transformación de la Animación"
+msgstr "Aplicar Transformaciones al MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3647,7 +3654,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Carga Rápida"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4474,6 +4481,23 @@ msgid "Clear Default for '%s'"
msgstr "Restablecer Predeterminado para '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimportar"
+
+#: 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 ""
+"Tienes cambios pendientes que aún no se han aplicado. Haz clic en Reimportar "
+"para aplicar los cambios realizados en las opciones de importación.\n"
+"Si seleccionas otro recurso en el dock Sistema de Archivos sin hacer clic en "
+"Reimportar primero, se descartarán los cambios realizados en el dock "
+"Importar."
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "Importar como:"
@@ -4482,10 +4506,6 @@ msgid "Preset"
msgstr "Preajuste"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimportar"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Guardar Escenas, Reimportar y Reiniciar"
@@ -5064,7 +5084,7 @@ msgstr "Mostrar la lista de animaciones en el reproductor."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Autoplay on Load"
-msgstr "Autoreproducir al Cargar"
+msgstr "Reproducción Automática al Cargar"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Enable Onion Skinning"
@@ -5766,15 +5786,13 @@ msgstr "Mover CanvasItem \"%s\" a (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Bloqueo Seleccionado"
+msgstr "Bloqueado"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Grupo"
+msgstr "Agrupado"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6722,14 +6740,12 @@ msgid "Remove Selected Item"
msgstr "Eliminar Elemento Seleccionado"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Importar desde escena"
+msgstr "Importar desde Escena (Ignorar Transformaciones)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Importar desde escena"
+msgstr "Importar desde Escena (Aplicar Transformaciones)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7327,14 +7343,12 @@ msgid "Flip Portal"
msgstr "Voltear Portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Reestablecer Transformación"
+msgstr "Ocluir Conjunto de Transformación"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Crear Nodo"
+msgstr "Centrar Nodo"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7470,12 +7484,12 @@ msgid "Move Down"
msgstr "Bajar"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr "Script siguiente"
+msgid "Next Script"
+msgstr "Siguiente Script"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr "Script anterior"
+msgid "Previous Script"
+msgstr "Script Anterior"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7839,14 +7853,12 @@ msgid "Skeleton2D"
msgstr "Skeleton2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Asignar Pose de Descanso a Huesos"
+msgstr "Reiniciar a la Pose de Reposo"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Sobreescribir"
+msgstr "Sobrescribir la Pose de Reposo"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7873,69 +7885,62 @@ msgid "Perspective"
msgstr "Perspectiva"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Superior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Superior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Inferior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Inferior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "Perspectiva"
+msgid "Left Perspective"
+msgstr "Perspectiva Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Derecha"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Perspectiva Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Frontal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Frontal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Trasera"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Trasera"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [auto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portals active]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8259,6 +8264,26 @@ msgid "Right View"
msgstr "Vista Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Down"
+msgstr "Vista de Órbita Inferior"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Left"
+msgstr "Vista de Órbita Izquierda"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Right"
+msgstr "Vista de Órbita Derecha"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Up"
+msgstr "Vista de Órbita Superior"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr "Vista de Órbita 180"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Cambiar Vista Perspectiva/Ortogonal"
@@ -8332,9 +8357,8 @@ msgid "View Portal Culling"
msgstr "Ver Eliminación de Portales"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Ver Eliminación de Portales"
+msgstr "Ver Eliminación de Oclusión"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8402,9 +8426,8 @@ msgid "Post"
msgstr "Posterior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Proyecto Sin Nombre"
+msgstr "Gizmo Sin Nombre"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -11510,7 +11533,7 @@ msgstr "Idiomas:"
#: editor/project_settings_editor.cpp
msgid "AutoLoad"
-msgstr "AutoCarga"
+msgstr "AutoLoad"
#: editor/project_settings_editor.cpp
msgid "Plugins"
@@ -12545,14 +12568,12 @@ msgid "Set Portal Point Position"
msgstr "Establecer Posición del Portal Point"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Cambiar Radio de la Forma del Cilindro"
+msgstr "Establecer Radio de la Esfera de Oclusión"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Establecer Posición de Entrada de Curva"
+msgstr "Establecer Posición de la Esfera de Oclusión"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12840,9 +12861,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "El nombre de la clase no puede ser una palabra reservada"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Rellenar Selección"
+msgstr "Crear Solución"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -13509,11 +13529,11 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
-msgstr "Firma de depuración %s..."
+msgstr "Firmando %s debug..."
#: platform/android/export/export_plugin.cpp
msgid "Signing release %s..."
-msgstr "Firmando liberación %s..."
+msgstr "Firmando %s release..."
#: platform/android/export/export_plugin.cpp
msgid "Could not find keystore, unable to export."
@@ -14210,11 +14230,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "No se ha establecido ninguna forma."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Sólo se admiten escalas uniformes."
#: scene/3d/particles.cpp
msgid ""
@@ -14573,6 +14593,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Las opciones Tile y Tile Fit para las propiedades Axis Stretch sólo son "
+"efectivas cuando se utiliza el backend de renderizado GLES3.\n"
+"El backend GLES2 está actualmente en uso, por lo que estos modos actuarán "
+"como Stretch en su lugar."
#: scene/gui/popup.cpp
msgid ""
@@ -14610,6 +14634,19 @@ msgstr ""
"El Entorno por Defecto como se especifica en Configuración del Proyecto "
"(Rendering -> Environment -> Default Environment) no se ha podido cargar."
+#: 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 ""
+"Los tiempos de espera del temporizador muy bajos (< 0,05 segundos) pueden "
+"comportarse de manera significativamente diferente dependiendo de la "
+"velocidad de fotogramas renderizados o de la física.\n"
+"Considera la posibilidad de utilizar un bucle en process dentro del script "
+"en lugar de depender de un Timer para tiempos de espera muy bajos."
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14624,14 +14661,16 @@ msgstr ""
"nodo para que se muestre."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
-"El tamaño del Viewport debe ser mayor que 0 para poder renderizar cualquier "
-"cosa."
+"El tamaño del Viewport debe ser mayor o igual a 2 píxeles en ambas "
+"dimensiones para renderizar cualquier cosa."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "Establecer Esferas OccluderShapeSphere"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -16532,9 +16571,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "No se pudo guardar la imagen de atlas:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "No se pudo guardar la textura convertida:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "¡Origen de traducción incorrecto!"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index 0decc83e9f..dbff18af4e 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -18,12 +18,14 @@
# Skarline <lihue-molina@hotmail.com>, 2020.
# Joakker <joaquinandresleon108@gmail.com>, 2020.
# M3CG <cgmario1999@gmail.com>, 2021.
+# Manuel González <mgoopazo@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-09-06 16:32+0000\n"
-"Last-Translator: M3CG <cgmario1999@gmail.com>\n"
+"PO-Revision-Date: 2021-10-23 10:13+0000\n"
+"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/"
"godot-engine/godot/es_AR/>\n"
"Language: es_AR\n"
@@ -31,7 +33,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2424,6 +2426,14 @@ msgstr ""
"No se pudo guardar la escena. Probablemente no se hayan podido satisfacer "
"dependencias (instancias o herencia)."
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr "¡No se ha podido guardar una o varias escenas!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Guardar Todas las Escenas"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "No se puede sobrescribir una escena que todavía esta abierta!"
@@ -2562,6 +2572,11 @@ msgid "Save changes to '%s' before closing?"
msgstr "Guardar cambios a '%s' antes de cerrar?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr ""
+"¡%s ya no existe! Por favor, especificá una nueva ubicación de guardado."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2607,29 +2622,27 @@ msgstr "Escena actual sin guardar. Abrir de todos modos?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "No se puede deshacer mientras los botones del mouse están presionados."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Nada para deshacer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Deshacer"
+msgstr "Deshacer: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "No se puede rehacer mientras los botones del mouse están presionados."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "No hay nada que rehacer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Rehacer"
+msgstr "Rehacer: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2919,10 +2932,6 @@ msgid "Save Scene"
msgstr "Guardar Escena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Guardar Todas las Escenas"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Convertir A..."
@@ -3325,9 +3334,8 @@ msgid "Merge With Existing"
msgstr "Mergear Con Existentes"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Cambiar Transform de Anim"
+msgstr "Aplicar Transformaciones al MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3588,7 +3596,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Carga Rápida"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -3873,7 +3881,7 @@ msgstr "Abrir Carpeta"
#: editor/export_template_manager.cpp
msgid "Open the folder containing installed templates for the current version."
msgstr ""
-"Abra la carpeta que contiene las plantillas instaladas para la versión "
+"Abrir la carpeta que contiene las plantillas instaladas para la versión "
"actual."
#: editor/export_template_manager.cpp
@@ -4415,6 +4423,23 @@ msgid "Clear Default for '%s'"
msgstr "Restablecer Predeterminados para '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimportar"
+
+#: 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 ""
+"Tenés cambios pendientes que aún no se han aplicado. Hacé clic en Reimportar "
+"para aplicar los cambios realizados en las opciones de importación.\n"
+"Si seleccionás otro recurso en el dock Sistema de Archivos sin hacer clic en "
+"Reimportar primero, se descartarán los cambios realizados en el dock "
+"Importar."
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "Importar Como:"
@@ -4423,10 +4448,6 @@ msgid "Preset"
msgstr "Preset"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimportar"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Guardar Escenas, Reimportar y Reiniciar"
@@ -5708,15 +5729,13 @@ msgstr "Mover CanvasItem \"%s\" a (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Bloqueo Seleccionado"
+msgstr "Bloqueado"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Grupo"
+msgstr "Agrupado"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -5910,7 +5929,7 @@ msgstr "Arrastrar: Rotar el nodo seleccionado alrededor del pivote."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+Drag: Move selected node."
-msgstr "Alt+Arrastrar: Mover el nodo seleccionado"
+msgstr "Alt+Arrastrar: Mover el nodo seleccionado."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "V: Set selected node's pivot position."
@@ -6662,14 +6681,12 @@ msgid "Remove Selected Item"
msgstr "Remover Item Seleccionado"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Importar desde Escena"
+msgstr "Importar desde Escena (Ignorar Transformaciones)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Importar desde Escena"
+msgstr "Importar desde Escena (Aplicar Transformaciones)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7256,21 +7273,19 @@ msgstr "Generar Puntos en la Room"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Generate Points"
-msgstr "Conteo de Puntos Generados:"
+msgstr "Generar puntos"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portal"
msgstr "Invertir Portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Reestablecer Transform"
+msgstr "Transform de Occluder Set"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Crear Nodo"
+msgstr "Centrar Nodo"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7406,12 +7421,12 @@ msgid "Move Down"
msgstr "Bajar"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr "Script siguiente"
+msgid "Next Script"
+msgstr "Script Siguiente"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr "Script anterior"
+msgid "Previous Script"
+msgstr "Script Anterior"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7775,14 +7790,12 @@ msgid "Skeleton2D"
msgstr "Skeleton2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Setear Huesos a la Pose de Descanso"
+msgstr "Restablecer a la Pose de Reposo"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Sobreescribir"
+msgstr "Sobrescribir la Pose de Reposo"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7809,69 +7822,62 @@ msgid "Perspective"
msgstr "Perspectiva"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Superior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Superior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Inferior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Inferior"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "Perspectiva"
+msgid "Left Perspective"
+msgstr "Perspectiva Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Derecha"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Perspectiva Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Frontal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Frontal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Trasera"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Trasera"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [auto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portales activos]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -7970,7 +7976,7 @@ msgstr "Vértices:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "FPS: %d (%s ms)"
-msgstr ""
+msgstr "FPS: %d (%s ms)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
@@ -8195,6 +8201,26 @@ msgid "Right View"
msgstr "Vista Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Down"
+msgstr "Orbitar Vista Hacia Abajo"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Left"
+msgstr "Orbitar Vista Hacia La Izquierda"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Right"
+msgstr "Orbitar Vista Hacia La Derecha"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Up"
+msgstr "Orbitar Vista Hacia Arriba"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr "Orbitar Vista 180"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Intercambiar entre Vista Perspectiva/Orthogonal"
@@ -8268,9 +8294,8 @@ msgid "View Portal Culling"
msgstr "Ver Culling de Portales"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Ver Culling de Portales"
+msgstr "Ver Occlusion Culling"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8338,9 +8363,8 @@ msgid "Post"
msgstr "Post"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Proyecto Sin Nombre"
+msgstr "Gizmo Sin Nombre"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -8608,7 +8632,7 @@ msgstr "Styleboxes"
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} color(s)"
-msgstr ""
+msgstr "{num} color(es)"
#: editor/plugins/theme_editor_plugin.cpp
msgid "No colors found."
@@ -8640,7 +8664,7 @@ msgstr "No se encontraron íconos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} stylebox(es)"
-msgstr ""
+msgstr "{num} stylebox(es)"
#: editor/plugins/theme_editor_plugin.cpp
msgid "No styleboxes found."
@@ -8692,7 +8716,7 @@ msgstr "Seleccione todos los elementos visibles de color y sus datos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible color items."
-msgstr "Quitar selección a todos los elementos visibles de color."
+msgstr "Quitar selección a todos los items de color visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible constant items."
@@ -8700,11 +8724,11 @@ msgstr "Seleccionar todos elementos constant visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible constant items and their data."
-msgstr ""
+msgstr "Seleccionar todos los items visibles constantes y sus datos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible constant items."
-msgstr ""
+msgstr "Quitar selección a todos los items visibles constantes."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items."
@@ -8712,11 +8736,11 @@ msgstr "Seleccionar todos los elementos font visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items and their data."
-msgstr ""
+msgstr "Seleccionar todos los items visibles y sus datos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible font items."
-msgstr ""
+msgstr "Deseleccionar todos los elementos font visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible icon items."
@@ -8732,21 +8756,23 @@ msgstr "Deseleccionar todos los elementos icon visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible stylebox items."
-msgstr ""
+msgstr "Seleccionar todos los elementos stylebox visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible stylebox items and their data."
-msgstr ""
+msgstr "Seleccionar todos los elementos stylebox visibles y sus datos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible stylebox items."
-msgstr ""
+msgstr "Deseleccionar todos los elementos stylebox visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
"Caution: Adding icon data may considerably increase the size of your Theme "
"resource."
msgstr ""
+"Precaución: Añadir datos de iconos puede aumentar considerablemente el "
+"tamaño de su recurso Theme."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Collapse types."
@@ -8786,6 +8812,9 @@ msgid ""
"closing this window.\n"
"Close anyway?"
msgstr ""
+"En la pestaña de Elementos de Importación se han seleccionado algunos "
+"elementos. La selección se perderá al cerrar esta ventana.\n"
+"¿Cerrar de todos modos?"
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
@@ -8825,6 +8854,8 @@ msgid ""
"This theme type is empty.\n"
"Add more items to it manually or by importing from another theme."
msgstr ""
+"Este tipo de theme está vacío.\n"
+"Añadí más propiedades manualmente o importalas desde otro Theme."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Color Item"
@@ -8956,81 +8987,78 @@ msgstr "Reemplazar Elemento"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Unpin this StyleBox as a main style."
-msgstr ""
+msgstr "Quitar este StyleBox como estilo principal."
#: 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 ""
+"Establecer este StyleBox como un estilo principal. La edición de sus "
+"propiedades actualizará las mismas propiedades en todos los demás StyleBoxes "
+"de este tipo."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Type"
-msgstr "Tipo"
+msgstr "Añadir Tipo"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Item Type"
-msgstr "Agregar Item"
+msgstr "Añadir Tipo de Elemento"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Node Types:"
-msgstr "Tipo de nodo"
+msgstr "Tipos de Nodo:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Show Default"
-msgstr "Cargar Valores por Defecto"
+msgstr "Mostrar Valores por Defecto"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Show default type items alongside items that have been overridden."
msgstr ""
+"Mostrar los elementos de tipo por defecto junto a los elementos que han sido "
+"sobrescritos."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Override All"
-msgstr "Reemplazos(Overrides)"
+msgstr "Anular Todo"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Override all default type items."
-msgstr ""
+msgstr "Anular todos los elementos de tipo por defecto."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Theme:"
-msgstr "Tema"
+msgstr "Theme:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Manage Items..."
-msgstr "Administrar Plantillas de Exportación..."
+msgstr "Administrar Elementos..."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add, remove, organize and import Theme items."
-msgstr ""
+msgstr "Añadir, eliminar, organizar e importar elementos del Theme."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Preview"
-msgstr "Vista Previa"
+msgstr "Añadir Vista Previa"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Default Preview"
-msgstr "Actualizar Vista Previa"
+msgstr "Vista Previa Por Defecto"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select UI Scene:"
-msgstr "Seleccioná una Mesh de Origen:"
+msgstr "Seleccionar Escena de UI:"
#: editor/plugins/theme_editor_preview.cpp
msgid ""
"Toggle the control picker, allowing to visually select control types for "
"edit."
msgstr ""
+"Activar el selector de controles, lo que permite seleccionar visualmente los "
+"tipos de control para su edición."
#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
@@ -9065,9 +9093,8 @@ msgid "Checked Radio Item"
msgstr "Radio Ãtem Tildado"
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Named Separator"
-msgstr "Separador con nombre."
+msgstr "Separador Nomenclado"
#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
@@ -9120,19 +9147,19 @@ msgstr "Tiene,Muchas,Opciones"
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid path, the PackedScene resource was probably moved or removed."
msgstr ""
+"Ruta inválida, el recurso PackedScene probablemente fue movido o eliminado."
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid PackedScene resource, must have a Control node at its root."
-msgstr ""
+msgstr "Recurso PackedScene inválido, debe tener un nodo Control en la raíz."
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Invalid file, not a PackedScene resource."
-msgstr "Archivo inválido. No es un layout de bus de audio."
+msgstr "Archivo inválido, no es un recurso PackedScene."
#: editor/plugins/theme_editor_preview.cpp
msgid "Reload the scene to reflect its most actual state."
-msgstr ""
+msgstr "Recargar la escena para reflejar su estado actual."
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -10534,9 +10561,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Edit Visual Property:"
-msgstr "Editar Propiedad Visual"
+msgstr "Editar Propiedad Visual:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -10664,9 +10690,8 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-#, fuzzy
msgid "GDScript Export Mode:"
-msgstr "Modo de Exportación de Scipts:"
+msgstr "Modo de Exportación GDScript:"
#: editor/project_export.cpp
msgid "Text"
@@ -10674,21 +10699,21 @@ msgstr "Texto"
#: editor/project_export.cpp
msgid "Compiled Bytecode (Faster Loading)"
-msgstr ""
+msgstr "Bytecode Compilado (Carga Más Rápida)"
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Encriptado (Proveer la Clave Debajo)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
-msgstr "Clave de Encriptación Inválida (debe tener 64 caracteres de largo)"
+msgstr ""
+"Clave de Encriptación Inválida (debe tener 64 caracteres hexadecimales de "
+"largo)"
#: editor/project_export.cpp
-#, fuzzy
msgid "GDScript Encryption Key (256-bits as hexadecimal):"
-msgstr "Clave de Encriptación de Script (256-bits como hex):"
+msgstr "Clave de Encriptación de Script (256-bits en hexadecimal):"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -10762,9 +10787,8 @@ msgid "Imported Project"
msgstr "Proyecto Importado"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project name."
-msgstr "Nombre de Proyecto Inválido."
+msgstr "Nombre de proyecto Inválido."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -10990,14 +11014,12 @@ msgid "Are you sure to run %d projects at once?"
msgstr "¿Estás seguro/a que querés ejecutar %d proyectos a la vez?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove %d projects from the list?"
-msgstr "Seleccionar dispositivo de la lista"
+msgstr "¿Quitar %d proyectos de la lista?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove this project from the list?"
-msgstr "Seleccionar dispositivo de la lista"
+msgstr "¿Quitar este proyecto de la lista?"
#: editor/project_manager.cpp
msgid ""
@@ -11031,9 +11053,8 @@ msgid "Project Manager"
msgstr "Gestor de Proyectos"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Local Projects"
-msgstr "Proyectos"
+msgstr "Proyectos Locales"
#: editor/project_manager.cpp
msgid "Loading, please wait..."
@@ -11044,23 +11065,20 @@ msgid "Last Modified"
msgstr "Ultima Modificación"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Edit Project"
-msgstr "Exportar Proyecto"
+msgstr "Editar Proyecto"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Run Project"
-msgstr "Renombrar Proyecto"
+msgstr "Reproducir Proyecto"
#: editor/project_manager.cpp
msgid "Scan"
msgstr "Examinar"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Scan Projects"
-msgstr "Proyectos"
+msgstr "Encontrar Proyectos"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
@@ -11071,14 +11089,12 @@ msgid "New Project"
msgstr "Proyecto Nuevo"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Import Project"
-msgstr "Proyecto Importado"
+msgstr "Importar Proyecto"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove Project"
-msgstr "Renombrar Proyecto"
+msgstr "Eliminar Proyecto"
#: editor/project_manager.cpp
msgid "Remove Missing"
@@ -11089,9 +11105,8 @@ msgid "About"
msgstr "Acerca de"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Asset Library Projects"
-msgstr "Biblioteca de Assets"
+msgstr "Proyectos de la Librería de Assets"
#: editor/project_manager.cpp
msgid "Restart Now"
@@ -11103,7 +11118,7 @@ msgstr "Quitar Todos"
#: editor/project_manager.cpp
msgid "Also delete project contents (no undo!)"
-msgstr ""
+msgstr "También eliminar el contenido del proyecto (¡no se puede deshacer!)"
#: editor/project_manager.cpp
msgid "Can't run project"
@@ -11118,21 +11133,19 @@ msgstr ""
"¿Te gustaría explorar los ejemplos oficiales en la Biblioteca de Assets?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Filter projects"
-msgstr "Filtrar propiedades"
+msgstr "Filtrar proyectos"
#: editor/project_manager.cpp
-#, fuzzy
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 ""
-"La casilla de búsqueda filtra los proyectos por nombre y el último "
-"componente de la ruta.\n"
-"Para filtrar los proyectos por nombre y ruta completa, la consulta debe "
-"contener al menos un carácter `/`."
+"Este campo filtra los proyectos por nombre y por el último componente de la "
+"ruta.\n"
+"Para filtrar proyectos por nombre y ruta completa, la consulta debe contener "
+"al menos un carácter `/`."
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -11140,7 +11153,7 @@ msgstr "Tecla "
#: editor/project_settings_editor.cpp
msgid "Physical Key"
-msgstr ""
+msgstr "Tecla Física"
#: editor/project_settings_editor.cpp
msgid "Joy Button"
@@ -11188,7 +11201,7 @@ msgstr "Dispositivo"
#: editor/project_settings_editor.cpp
msgid " (Physical)"
-msgstr ""
+msgstr " (Física)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
@@ -11331,23 +11344,20 @@ msgid "Override for Feature"
msgstr "Sobreescribir para Característica"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add %d Translations"
-msgstr "Agregar Traducción"
+msgstr "Añadir %d Traducciones"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Quitar Traducción"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Translation Resource Remap: Add %d Path(s)"
-msgstr "Remapear Recurso Agregar Remap"
+msgstr "Remapeo de Recursos de Traducción: Añadir %d Ruta(s)"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Translation Resource Remap: Add %d Remap(s)"
-msgstr "Remapear Recurso Agregar Remap"
+msgstr "Remapeo de Recursos de Traducción: Añadir %d Remapeo(s)"
#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
@@ -11792,12 +11802,16 @@ msgstr "¿Eliminar nodo \"%s\"?"
msgid ""
"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
+"Guardar la rama como una escena requiere tener una escena abierta en el "
+"editor."
#: editor/scene_tree_dock.cpp
msgid ""
"Saving the branch as a scene requires selecting only one node, but you have "
"selected %d nodes."
msgstr ""
+"Guardar la rama como una escena requiere seleccionar sólo un nodo, pero "
+"seleccionaste %d nodos."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11806,6 +11820,11 @@ msgid ""
"FileSystem dock context menu\n"
"or create an inherited scene using Scene > New Inherited Scene... instead."
msgstr ""
+"No se puede guardar la rama del nodo raíz como una escena instanciada.\n"
+"Para crear una copia editable de la escena actual, duplicala usando el menú "
+"contextual del dock Sistema de Archivos\n"
+"o crea una escena heredada usando Escena > Nueva Escena Heredada... en su "
+"lugar."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11813,6 +11832,10 @@ msgid ""
"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 ""
+"No se puede guardar la rama de una escena ya instanciada.\n"
+"Para crear una variación de una escena, puedes hacer una escena heredada "
+"basada en la escena instanciada usando Escena > Nueva Escena Heredada... en "
+"su lugar."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -12295,7 +12318,7 @@ msgstr "Copiar Error"
#: editor/script_editor_debugger.cpp
msgid "Open C++ Source on GitHub"
-msgstr ""
+msgstr "Abrir Fuente C++ en GitHub"
#: editor/script_editor_debugger.cpp
msgid "Video RAM"
@@ -12474,24 +12497,20 @@ msgid "Change Ray Shape Length"
msgstr "Cambiar Largo de Shape Rayo"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Room Point Position"
-msgstr "Setear Posición de Punto de Curva"
+msgstr "Establecer Posición del Room Point"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Portal Point Position"
-msgstr "Setear Posición de Punto de Curva"
+msgstr "Establecer Posición del Portal Point"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Cambiar Radio de Shape Cilindro"
+msgstr "Establecer Radio de la Esfera de Oclusión"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Setear Posición de Entrada de Curva"
+msgstr "Establecer Posición de la Esfera de Oclusión"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12605,14 +12624,12 @@ msgid "Object can't provide a length."
msgstr "El objeto no puede proveer un largo."
#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-#, fuzzy
msgid "Export Mesh GLTF2"
-msgstr "Exportar Librería de Meshes"
+msgstr "Exportar Malla GLTF2"
#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-#, fuzzy
msgid "Export GLTF..."
-msgstr "Exportar..."
+msgstr "Exportar GLTF..."
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
@@ -12655,9 +12672,8 @@ msgid "GridMap Paint"
msgstr "Pintar GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Selection"
-msgstr "Llenar Selección en GridMap"
+msgstr "Selección de GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
@@ -12780,9 +12796,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "El nombre de la clase no puede ser una palabra reservada"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Llenar la Selección"
+msgstr "Construir Solución"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -12914,14 +12929,12 @@ msgid "Add Output Port"
msgstr "Agregar Puerto de Salida"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Port Type"
-msgstr "Cambiar Tipo"
+msgstr "Cambiar Tipo de Puerto"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Port Name"
-msgstr "Cambiar nombre del puerto de entrada"
+msgstr "Cambiar Nombre de Puerto"
#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
@@ -13036,9 +13049,8 @@ msgid "Add Preload Node"
msgstr "Agregar Nodo Preload"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Add Node(s)"
-msgstr "Agregar Nodo"
+msgstr "Agregar Nodo(s)"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
@@ -13305,37 +13317,31 @@ msgstr "Seleccionar dispositivo de la lista"
#: platform/android/export/export_plugin.cpp
msgid "Running on %s"
-msgstr ""
+msgstr "Ejecutando en %s"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Exporting APK..."
-msgstr "Exportar Todo"
+msgstr "Exportar APK..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Uninstalling..."
-msgstr "Desinstalar"
+msgstr "Desinstalando..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Installing to device, please wait..."
-msgstr "Cargando, esperá, por favor..."
+msgstr "Instalando en el dispositivo, espera por favor..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not install to device: %s"
-msgstr "No se pudo instanciar la escena!"
+msgstr "No se pudo instalar en el dispositivo: %s"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Running on device..."
-msgstr "Ejecutando Script Personalizado..."
+msgstr "Ejecutando en el dispositivo..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not execute on device."
-msgstr "No se pudo crear la carpeta."
+msgstr "No se ha podido ejecutar en el dispositivo."
#: platform/android/export/export_plugin.cpp
msgid "Unable to find the 'apksigner' tool."
@@ -13446,40 +13452,38 @@ msgid ""
"directory.\n"
"The resulting %s is unsigned."
msgstr ""
+"No se ha encontrado 'apksigner'.\n"
+"Por favor, comprobá que el comando esté disponible en el directorio Android "
+"SDK build-tools.\n"
+"El %s resultante está sin firmar."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
-msgstr ""
+msgstr "Firmando %s debug..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Signing release %s..."
-msgstr ""
-"Examinando Archivos,\n"
-"Aguardá, por favor."
+msgstr "Firmando %s release..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not find keystore, unable to export."
-msgstr "No se pudo abrir la plantilla para exportar:"
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
-msgstr ""
+msgstr "'apksigner' ha retornado con error #%d"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Verifying %s..."
-msgstr "Agregando %s..."
+msgstr "Verificando %s..."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' verification of %s failed."
-msgstr ""
+msgstr "La verificación de 'apksigner' de %s ha fallado."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Exporting for Android"
-msgstr "Exportar Todo"
+msgstr "Exportando para Android"
#: platform/android/export/export_plugin.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
@@ -13496,7 +13500,7 @@ 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 ""
+msgstr "¡Formato de exportación no soportado!\n"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13524,16 +13528,17 @@ msgstr ""
msgid ""
"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
-#, fuzzy
msgid "Could not export project files to gradle project\n"
-msgstr "No se pudo obtener project.godot en la ruta de proyecto."
+msgstr ""
+"No se pudieron exportar los archivos del proyecto a un proyecto gradle\n"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not write expansion package file!"
-msgstr "No se pudo escribir el archivo:"
+msgstr "¡No se pudo escribir el archivo del paquete de expansión!"
#: platform/android/export/export_plugin.cpp
msgid "Building Android Project (gradle)"
@@ -13561,21 +13566,20 @@ msgstr ""
"directorio del proyecto de gradle para ver los resultados."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Package not found: %s"
-msgstr "No se encontró la animación: '%s'"
+msgstr "Paquete no encontrado:% s"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Creating APK..."
-msgstr "Creando contornos..."
+msgstr "Creando APK..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Could not find template APK to export:\n"
"%s"
-msgstr "No se pudo abrir la plantilla para exportar:"
+msgstr ""
+"No se pudo encontrar la plantilla APK para exportar:\n"
+"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13584,24 +13588,26 @@ msgid ""
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
+"Bibliotecas faltantes 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 faltantes en el preset de exportación."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Adding files..."
-msgstr "Agregando %s..."
+msgstr "Agregando archivos..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files"
-msgstr "No se pudo escribir el archivo:"
+msgstr "No se pudieron exportar los archivos del proyecto"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
-msgstr ""
+msgstr "Alineando APK..."
#: platform/android/export/export_plugin.cpp
msgid "Could not unzip temporary unaligned APK."
-msgstr ""
+msgstr "No se pudo descomprimir el APK temporal no alineado."
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
@@ -13649,45 +13655,40 @@ msgid "Could not write file:"
msgstr "No se pudo escribir el archivo:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read file:"
-msgstr "No se pudo escribir el archivo:"
+msgstr "No se pudo leer el archivo:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read HTML shell:"
-msgstr "No se pudo leer el shell HTML personalizado:"
+msgstr "No se pudo leer el shell HTML:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not create HTTP server directory:"
-msgstr "No se pudo crear la carpeta."
+msgstr "No se pudo crear el directorio del servidor HTTP:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Error starting HTTP server:"
-msgstr "Error al guardar escena."
+msgstr "Error al iniciar el servidor HTTP:"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Invalid bundle identifier:"
-msgstr "Identificador inválido:"
+msgstr "Identificador de paquete no válido:"
#: platform/osx/export/export.cpp
msgid "Notarization: code signing required."
-msgstr ""
+msgstr "Notarización: se requiere firma de código."
#: platform/osx/export/export.cpp
msgid "Notarization: hardened runtime required."
-msgstr ""
+msgstr "Notarización: se requiere hardened runtime."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID name not specified."
-msgstr ""
+msgstr "Notarización: nombre de ID de Apple no especificado."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID password not specified."
-msgstr ""
+msgstr "Notarización: contraseña de ID de Apple no especificada."
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -14132,6 +14133,9 @@ msgid ""
"longer has any effect.\n"
"To remove this warning, disable the GIProbe's Compress property."
msgstr ""
+"La propiedad Compress de GIProbe ha quedado obsoleta debido a errores "
+"conocidos y ya no tiene ningún efecto.\n"
+"Para eliminar esta advertencia, desactiva la propiedad Compress de GIProbe."
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -14154,11 +14158,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "No se ha establecido ninguna forma."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Sólo se admiten escalas uniformes."
#: scene/3d/particles.cpp
msgid ""
@@ -14229,15 +14233,15 @@ msgstr "El nodo A y el nodo B deben ser diferentes PhysicsBody"
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "El RoomManager no debe ser hijo o nieto de un Portal."
#: scene/3d/portal.cpp
msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "Una Room no debe ser hijo o nieto de un Portal."
#: scene/3d/portal.cpp
msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "Un RoomGroup no debe ser hijo o nieto de un Portal."
#: scene/3d/remote_transform.cpp
msgid ""
@@ -14249,79 +14253,98 @@ msgstr ""
#: scene/3d/room.cpp
msgid "A Room cannot have another Room as a child or grandchild."
-msgstr ""
+msgstr "Una Room no puede tener otra Room como hija o nieta."
#: scene/3d/room.cpp
msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
+msgstr "El RoomManager no debe ubicarse dentro de una Room."
#: scene/3d/room.cpp
msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
+msgstr "Un RoomGroup no debe colocarse dentro de una Room."
#: 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 ""
+"El cuerpo convexo de la room contiene un gran número de planos.\n"
+"Considera la posibilidad de simplificar los límites de la room para aumentar "
+"el rendimiento."
#: scene/3d/room_group.cpp
msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
+msgstr "El RoomManager no debe colocarse dentro de un RoomGroup."
#: scene/3d/room_manager.cpp
msgid "The RoomList has not been assigned."
-msgstr ""
+msgstr "La RoomList no ha sido asignada."
#: scene/3d/room_manager.cpp
msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
+msgstr "El nodo RoomList debe ser un Spatial (o derivado de Spatial)."
#: 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 ""
+"El Límite de Profundidad del Portal está ajustado a cero.\n"
+"Sólo se renderizará la room en la que se encuentra la cámara."
#: scene/3d/room_manager.cpp
msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
+msgstr "Sólo debe haber un RoomManager en el SceneTree."
#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
msgstr ""
+"La ruta del RoomList no es válida.\n"
+"Por favor, comprueba que la rama de la RoomList ha sido asignada al "
+"RoomManager."
#: scene/3d/room_manager.cpp
msgid "RoomList contains no Rooms, aborting."
-msgstr ""
+msgstr "La RoomList no contiene Rooms, abortando."
#: scene/3d/room_manager.cpp
msgid "Misnamed nodes detected, check output log for details. Aborting."
msgstr ""
+"Nodos con nombres incorrectos detectados, comprueba la salida del Log para "
+"más detalles. Abortando."
#: scene/3d/room_manager.cpp
msgid "Portal link room not found, check output log for details."
msgstr ""
+"No se encuentra Portal link room, comprueba la salida del Log para más "
+"detalles."
#: 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 ""
+"Fallo en el Portal autolink, comprueba la salida del Log para más detalles.\n"
+"Comprueba si el portal está mirando hacia fuera de la room de origen."
#: scene/3d/room_manager.cpp
msgid ""
"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
"Check output log for details."
msgstr ""
+"Detectada superposición de la Room, las cámaras pueden funcionar "
+"incorrectamente en las zonas donde hay superposición.\n"
+"Comrpueba la salida del Log para más detalles."
#: scene/3d/room_manager.cpp
msgid ""
"Error calculating room bounds.\n"
"Ensure all rooms contain geometry or manual bounds."
msgstr ""
+"Error al calcular los límites de la room.\n"
+"Asegurate de que todas las rooms contengan geometría o límites manuales."
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
@@ -14387,7 +14410,7 @@ msgstr "No se encontró la animación: '%s'"
#: scene/animation/animation_player.cpp
msgid "Anim Apply Reset"
-msgstr ""
+msgstr "Aplicar Reset de Animación"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
@@ -14496,6 +14519,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Las opciones Tile y Tile Fit para las propiedades Axis Stretch sólo son "
+"efectivas cuando se utiliza el backend de renderizado GLES3.\n"
+"El backend GLES2 está actualmente en uso, por lo que estos modos actuarán "
+"como Stretch en su lugar."
#: scene/gui/popup.cpp
msgid ""
@@ -14533,6 +14560,19 @@ msgstr ""
"El Entorno por Defecto especificado en Configuración del Editor (Rendering -"
"> Viewport -> Entorno por Defecto) no pudo ser cargado."
+#: 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 ""
+"Los tiempos de espera del temporizador muy bajos (< 0,05 segundos) pueden "
+"comportarse de manera significativamente diferente dependiendo de la "
+"velocidad de fotogramas renderizados o de la física.\n"
+"Considera la posibilidad de utilizar un bucle en process dentro del script "
+"en lugar de depender de un Timer para tiempos de espera muy bajos."
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14546,12 +14586,16 @@ msgstr ""
"textura interna a algún otro nodo para mostrar."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
-msgstr "El tamaño del viewport debe ser mayor a 0 para poder renderizar."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
+msgstr ""
+"El tamaño del Viewport debe ser mayor o igual a 2 píxeles en ambas "
+"dimensiones para renderizar cualquier cosa."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "Establecer Esferas OccluderShapeSphere"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -14574,25 +14618,29 @@ msgid "Invalid comparison function for that type."
msgstr "Función de comparación inválida para este tipo."
#: servers/visual/shader_language.cpp
-#, fuzzy
msgid "Varying may not be assigned in the '%s' function."
-msgstr "Solo se pueden asignar variaciones en funciones de vértice."
+msgstr "No se pueden asignar varyings a la función '%s'."
#: servers/visual/shader_language.cpp
msgid ""
"Varyings which assigned in 'vertex' function may not be reassigned in "
"'fragment' or 'light'."
msgstr ""
+"Las varyings que fueron asignadas en una función 'vertex' no pueden ser "
+"reasignadas en 'fragment' o 'light'."
#: servers/visual/shader_language.cpp
msgid ""
"Varyings which assigned in 'fragment' function may not be reassigned in "
"'vertex' or 'light'."
msgstr ""
+"Las varyings que fueron asignadas en una función 'fragment' no pueden ser "
+"reasignadas en 'vertex' o 'light'."
#: servers/visual/shader_language.cpp
msgid "Fragment-stage varying could not been accessed in custom function!"
msgstr ""
+"¡No se pudo acceder a la fragment-stage varying en la función personalizada!"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
@@ -16244,9 +16292,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "No se pudo guardar la imagen de atlas:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "No se pudo guardar la textura convertida:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "Fuente de traducción inválida!"
diff --git a/editor/translations/et.po b/editor/translations/et.po
index 2c59035681..ccc2681d0f 100644
--- a/editor/translations/et.po
+++ b/editor/translations/et.po
@@ -10,6 +10,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2021-07-16 05:47+0000\n"
"Last-Translator: Kritzmensch <streef.gtx@gmail.com>\n"
"Language-Team: Estonian <https://hosted.weblate.org/projects/godot-engine/"
@@ -2377,6 +2378,14 @@ msgid ""
"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 "Salvesta kõik stseenid"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Avatud stseeni ei saa üle kirjutada!"
@@ -2494,6 +2503,10 @@ 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."
@@ -2823,10 +2836,6 @@ msgid "Save Scene"
msgstr "Salvesta stseen"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Salvesta kõik stseenid"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Teisenda..."
@@ -4245,6 +4254,18 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Taasimpordi"
+
+#: 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 "Impordi kui:"
@@ -4253,10 +4274,6 @@ msgid "Preset"
msgstr "Eelseadistus"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Taasimpordi"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7145,11 +7162,13 @@ msgid "Move Down"
msgstr "Liiguta allapoole"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Järgmine skript"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Eelmine skript"
#: editor/plugins/script_editor_plugin.cpp
@@ -7563,7 +7582,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspektiiv"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7571,6 +7590,11 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspektiiv"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7922,6 +7946,27 @@ msgid "Right View"
msgstr "Paremvaade"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Eesvaade"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr ""
@@ -13859,6 +13904,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13868,7 +13921,10 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "Vaateakne suurus peab olema suurem kui 0, et kuvada."
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/eu.po b/editor/translations/eu.po
index ddcf8f5d37..9a2948582e 100644
--- a/editor/translations/eu.po
+++ b/editor/translations/eu.po
@@ -9,6 +9,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2021-07-29 02:34+0000\n"
"Last-Translator: Sergio Varela <sergitroll9@gmail.com>\n"
"Language-Team: Basque <https://hosted.weblate.org/projects/godot-engine/"
@@ -2354,6 +2355,14 @@ msgid ""
"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 ""
@@ -2470,6 +2479,10 @@ 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."
@@ -2792,10 +2805,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4223,15 +4232,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7123,11 +7140,12 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Scripta"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7538,7 +7556,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7546,6 +7564,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7887,6 +7909,26 @@ 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 ""
@@ -13814,6 +13856,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13823,7 +13873,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index 2d086fe827..e61aa0a6c7 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -22,12 +22,14 @@
# YASAN <yasandev@gmail.com>, 2021.
# duniyal ras <duniyalr@gmail.com>, 2021.
# عبدالرئو٠عابدی <abdolraoofabedi@gmail.com>, 2021.
+# Alireza Khodabande <alirezakhodabande74@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-08-27 08:25+0000\n"
-"Last-Translator: عبدالرئو٠عابدی <abdolraoofabedi@gmail.com>\n"
+"PO-Revision-Date: 2021-09-29 02:21+0000\n"
+"Last-Translator: Alireza Khodabande <alirezakhodabande74@gmail.com>\n"
"Language-Team: Persian <https://hosted.weblate.org/projects/godot-engine/"
"godot/fa/>\n"
"Language: fa\n"
@@ -35,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.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -361,7 +363,7 @@ 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 "یک ترک جدید برای s% بساز و کلید را درج کن؟"
+msgstr "یک ترک جدید برای %s بساز و کلید را درج کن؟"
#: editor/animation_track_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
@@ -902,11 +904,11 @@ msgstr "سیگنال:"
#: editor/connections_dialog.cpp
msgid "Connect '%s' to '%s'"
-msgstr "'s%' را به 's%' متصل کن"
+msgstr "'%s' را به '%s' متصل کن"
#: editor/connections_dialog.cpp
msgid "Disconnect '%s' from '%s'"
-msgstr "'s%' را از 's%' جدا کن"
+msgstr "'%s' را از '%s' جدا کن"
#: editor/connections_dialog.cpp
msgid "Disconnect all from signal: '%s'"
@@ -1022,7 +1024,7 @@ msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"ویرایش صحنه 's%' شروع شده است.\n"
+"ویرایش صحنه '%s' شروع شده است.\n"
"تغییرات تنها وقتی جلوه گرند که از نو بارگیری شوند."
#: editor/dependency_editor.cpp
@@ -1030,7 +1032,7 @@ msgid ""
"Resource '%s' is in use.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"منابع 's%' بکار Ø±ÙØªÙ‡â€ŒØ§Ù†Ø¯.\n"
+"منابع '%s' بکار Ø±ÙØªÙ‡â€ŒØ§Ù†Ø¯.\n"
"تغییرات تنها وقتی جلوه گرند که از نو بارگیری شوند."
#: editor/dependency_editor.cpp
@@ -1132,7 +1134,7 @@ msgstr "خطا در بارگذاری!"
#: editor/dependency_editor.cpp
msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr "به طور دائمی تعداد 'd%' آیتم را حذ٠کند؟ (بدون undo !)"
+msgstr "به طور دائمی تعداد '%d' آیتم را حذ٠کند؟ (بدون undo !)"
#: editor/dependency_editor.cpp
msgid "Show Dependencies"
@@ -1517,7 +1519,7 @@ msgstr "کلمه کلیدی نمی تواند به عنوان یک نام خود
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
@@ -2396,6 +2398,14 @@ msgid ""
"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 ""
@@ -2512,6 +2522,10 @@ 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."
@@ -2834,10 +2848,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "ذخیره صحنه"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4181,7 +4191,7 @@ msgstr ""
#: editor/groups_editor.cpp
#, fuzzy
msgid "Group name already exists."
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/groups_editor.cpp
#, fuzzy
@@ -4213,11 +4223,11 @@ msgstr "صاÙÛŒ کردن گره‌ها"
#: editor/groups_editor.cpp
msgid "Nodes in Group"
-msgstr ""
+msgstr "گره ها در گروه"
#: editor/groups_editor.cpp
msgid "Empty groups will be automatically removed."
-msgstr ""
+msgstr "گروه های خالی به طور خودکار حذ٠خواهند شد."
#: editor/groups_editor.cpp
#, fuzzy
@@ -4262,7 +4272,7 @@ msgstr "وارد کردن با اشیا و مواد و انیمیشن ها"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
-msgstr ""
+msgstr "وارد کردن به عنوان صحنه های چندگانه"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
@@ -4275,7 +4285,7 @@ msgstr ""
#: editor/import/resource_importer_scene.cpp
msgid "Importing Scene..."
-msgstr ""
+msgstr "وارد کردن صحنه..."
#: editor/import/resource_importer_scene.cpp
msgid "Generating Lightmaps"
@@ -4342,6 +4352,18 @@ 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 ""
@@ -4351,10 +4373,6 @@ msgid "Preset"
msgstr "بازنشانی بزرگنمایی"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "وارد کردن دوباره"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -4652,7 +4670,7 @@ msgstr "گره انیمیشن"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
msgid "Triangle already exists."
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
@@ -4857,7 +4875,7 @@ msgstr "نام نامعتبر."
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Animation name already exists!"
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -7413,12 +7431,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "صحنه جدید"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "زبانه قبلی"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7586,7 +7606,7 @@ msgstr ""
#, fuzzy
msgid ""
"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
-msgstr "'s%' را از 's%' جدا کن"
+msgstr "'%s' را از '%s' جدا کن"
#: editor/plugins/script_text_editor.cpp
msgid "[Ignore]"
@@ -7862,7 +7882,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7871,6 +7891,10 @@ msgid "Right Orthogonal"
msgstr "دکمهٔ راست."
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8228,6 +8252,26 @@ 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 ""
@@ -11233,7 +11277,7 @@ msgstr ""
#: editor/project_settings_editor.cpp
#, fuzzy
msgid "An action with the name '%s' already exists."
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
@@ -13384,7 +13428,7 @@ msgstr "مسیر به یک نود نمیرسد!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
-msgstr "نام دارایی ایندکس نامعتبر 's%' در نود s%."
+msgstr "نام دارایی ایندکس نامعتبر '%s' در نود %s."
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
@@ -14452,14 +14496,13 @@ msgid "In node '%s', invalid animation: '%s'."
msgstr ""
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Invalid animation: '%s'."
-msgstr "اندازهٔ قلم نامعتبر."
+msgstr "انیمیشن نامعتبر: '%s'."
#: scene/animation/animation_tree.cpp
#, fuzzy
msgid "Nothing connected to input '%s' of node '%s'."
-msgstr "'s%' را از 's%' جدا کن"
+msgstr "'%s' را از '%s' جدا کن"
#: scene/animation/animation_tree.cpp
msgid "No root AnimationNode for the graph is set."
@@ -14500,7 +14543,7 @@ msgstr ""
#: scene/gui/color_picker.cpp
msgid "Raw"
-msgstr ""
+msgstr "خام"
#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
@@ -14537,7 +14580,7 @@ msgstr "باید یک پسوند معتبر بکار گیرید."
#: scene/gui/graph_edit.cpp
msgid "Enable grid minimap."
-msgstr ""
+msgstr "ÙØ¹Ø§Ù„ سازی شبکه نقشه Ú©ÙˆÚ†Ú©."
#: scene/gui/nine_patch_rect.cpp
msgid ""
@@ -14579,6 +14622,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14592,7 +14643,9 @@ msgstr ""
"Ø¨Ø§ÙØª داخلی آن را برای نمایش به تعدادی گره تخصیص دهید."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -14606,19 +14659,16 @@ msgid ""
msgstr ""
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Invalid source for preview."
-msgstr "اندازهٔ قلم نامعتبر."
+msgstr "منبع نامعتبر برای پیش نمایش."
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Invalid source for shader."
-msgstr "اندازهٔ قلم نامعتبر."
+msgstr "منبع نامعتبر برای شیدر."
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Invalid comparison function for that type."
-msgstr "اندازهٔ قلم نامعتبر."
+msgstr "عمل مقایسه نامعتبر بزای این نوع."
#: servers/visual/shader_language.cpp
msgid "Varying may not be assigned in the '%s' function."
@@ -14776,7 +14826,7 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgstr "صحنه جدید"
#~ msgid "Replaced %d occurrence(s)."
-#~ msgstr "تعداد d% رخداد جایگزین شد."
+#~ msgstr "تعداد %d رخداد جایگزین شد."
#, fuzzy
#~ msgid "Brief Description"
@@ -15182,7 +15232,7 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ "اسپرایت تنظیم شود تا کار کند."
#~ msgid "Method List For '%s':"
-#~ msgstr "لیست متد برای 's%' :"
+#~ msgstr "لیست متد برای '%s' :"
#~ msgid "Return:"
#~ msgstr "بازگشت:"
@@ -15223,7 +15273,7 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ "SpatialSamplePlayer آهنگ را پخش کند."
#~ msgid "Replaced %d Ocurrence(s)."
-#~ msgstr "تعداد d% رخداد جایگزین شد."
+#~ msgstr "تعداد %d رخداد جایگزین شد."
#, fuzzy
#~ msgid "Create Android keystore"
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index 79a1e722b5..a7dca1dd0d 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -15,8 +15,9 @@
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-09-21 15:22+0000\n"
+"PO-Revision-Date: 2021-10-18 15:35+0000\n"
"Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
@@ -2405,6 +2406,14 @@ msgstr ""
"Skeneä ei voitu tallentaa. Mahdollisia riippuvuuksia (ilmentymiä tai "
"perintää) ei voida toteuttaa."
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr "Yhtä tai useampaa skeneä ei voitu tallentaa!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Tallenna kaikki skenet"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Ei voida ylikirjoittaa vielä auki olevaa skeneä!"
@@ -2540,6 +2549,11 @@ msgid "Save changes to '%s' before closing?"
msgstr "Tallennetaanko muutokset tiedostoon '%s' ennen sulkemista?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr ""
+"%s ei ole enää olemassa! Ole hyvä ja määrittele uusi tallennussijainti."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2585,29 +2599,27 @@ msgstr "Nykyistä skeneä ei ole tallennettu. Avaa joka tapauksessa?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Ei voida kumota hiiren painikkeiden ollessa painettuina."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Ei ole mitään kumottavaa."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Peru"
+msgstr "Kumoa: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Ei voida tehdä uudelleen hiiren painikkeiden ollessa painettuina."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Ei ole mitään uudelleen tehtävää."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Tee uudelleen"
+msgstr "Tee uudelleen: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2886,10 +2898,6 @@ msgid "Save Scene"
msgstr "Tallenna skene"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Tallenna kaikki skenet"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Muunna..."
@@ -3289,9 +3297,8 @@ msgid "Merge With Existing"
msgstr "Yhdistä olemassaolevaan"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Animaatio: muuta muunnosta"
+msgstr "Käytä MeshInstance muunnoksia"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3554,7 +3561,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Pikalataus"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4373,6 +4380,23 @@ msgid "Clear Default for '%s'"
msgstr "Poista oletus valinnalta '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Tuo uudelleen"
+
+#: 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 ""
+"Sinulla on avoinna olevia muutoksia, joita ei ole vielä otettu käyttöön. "
+"Napsauta Tuo uudelleen ottaaksesi tuontivalinnoissa tehdyt muutokset "
+"käyttöön.\n"
+"Toisen resurssin valitseminen Tiedostojärjestelmä-telakassa ilman, että Tuo "
+"uudelleen on tehty hylkää Tuonti-telakassa tehdyt muutokset."
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "Tuo nimellä:"
@@ -4381,10 +4405,6 @@ msgid "Preset"
msgstr "Esiasetukset"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Tuo uudelleen"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Tallenna skenet, tuo uudelleen ja käynnistä uudelleen"
@@ -5661,15 +5681,13 @@ msgstr "Siirrä CanvasItem \"%s\" koordinaattiin (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Lukitse valitut"
+msgstr "Lukittu"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Ryhmät"
+msgstr "Ryhmitetty"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6612,14 +6630,12 @@ msgid "Remove Selected Item"
msgstr "Poista valitut kohteet"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Tuo skenestä"
+msgstr "Tuo skenestä (sivuuta muunnokset)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Tuo skenestä"
+msgstr "Tuo skenestä (käytä muunnoksia)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7213,14 +7229,12 @@ msgid "Flip Portal"
msgstr "Käännä portaali"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Tyhjennä muunnos"
+msgstr "Aseta peittäjän muunnos"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Luo solmu"
+msgstr "Keskitä solmu"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7357,11 +7371,11 @@ msgid "Move Down"
msgstr "Siirrä alas"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "Seuraava skripti"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr "Edellinen skripti"
#: editor/plugins/script_editor_plugin.cpp
@@ -7725,14 +7739,12 @@ msgid "Skeleton2D"
msgstr "Skeleton2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Aseta luut lepoasentoon"
+msgstr "Palauta lepoasentoon"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Ylikirjoita"
+msgstr "Ylikirjoita lepoasento"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7759,69 +7771,62 @@ msgid "Perspective"
msgstr "Perspektiivi"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Ortogonaalinen"
+msgstr "Yläortogonaalinen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspektiivi"
+msgstr "Yläperspektiivi"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Ortogonaalinen"
+msgstr "Alaortogonaalinen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspektiivi"
+msgstr "Alaperspektiivi"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Ortogonaalinen"
+msgstr "Vasen ortogonaalinen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "Perspektiivi"
+msgid "Left Perspective"
+msgstr "Vasen perspektiivi"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Ortogonaalinen"
+msgstr "Oikea ortogonaalinen"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Oikea perspektiivi"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Ortogonaalinen"
+msgstr "Etuortogonaalinen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspektiivi"
+msgstr "Etuperspektiivi"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Ortogonaalinen"
+msgstr "Takaortogonaalinen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspektiivi"
+msgstr "Takaperspektiivi"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [automaattinen]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portaalit aktiivisia]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8145,6 +8150,26 @@ msgid "Right View"
msgstr "Oikea näkymä"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Down"
+msgstr "Kiertoratanäkymä alas"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Left"
+msgstr "Kiertoratanäkymä vasemmalle"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Right"
+msgstr "Kiertoratanäkymä oikealle"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Up"
+msgstr "Kiertoratanäkymä ylös"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr "Kiertoratanäkymä 180"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Vaihda perspektiiviseen/ortogonaaliseen näkymään"
@@ -8215,12 +8240,11 @@ msgstr "Näytä ruudukko"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Portal Culling"
-msgstr "Näytä portaalien harvennus"
+msgstr "Näytä portaaliharvennus"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Näytä portaalien harvennus"
+msgstr "Näytä peittoharvennus"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8288,9 +8312,8 @@ msgid "Post"
msgstr "Jälki"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Nimetön projekti"
+msgstr "Nimetön muokkain"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -12414,14 +12437,12 @@ msgid "Set Portal Point Position"
msgstr "Aseta portaalin pisteen sijainti"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Muuta sylinterimuodon sädettä"
+msgstr "Aseta peittopallon säde"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Aseta käyrän aloitussijainti"
+msgstr "Aseta peittopallon sijainti"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12709,9 +12730,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "Luokan nimi ei voi olla varattu avainsana"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Täytä valinta"
+msgstr "Muodosta ratkaisu"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -14051,11 +14071,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Mitään muotoa ei ole asetettu."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Vain uniform-skaalat ovat tuettuja."
#: scene/3d/particles.cpp
msgid ""
@@ -14408,6 +14428,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Tile ja Tile Fit valinnat Axis Stretch ominaisuuksille vaikuttavat "
+"ainoastaan GLES3 renderöintiä käytettäessä.\n"
+"GLES2 on parhaillaan käytössä, joten nämä tilat toimivat sen sijaan samaan "
+"tapaan kuin Stretch."
#: scene/gui/popup.cpp
msgid ""
@@ -14445,6 +14469,19 @@ msgstr ""
"Projektin asetuksissa määriteltyä oletusympäristöä (Rendering -> Environment "
"-> Default Environment) ei voitu ladata."
+#: 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 ""
+"Hyvin alhaiset ajastimen odotusajat (< 0,05 sekuntia) saattavat käyttäytyä "
+"merkittävästi eri tavoilla riippuen renderöinnin tai fysiikan "
+"päivitystaajuudesta.\n"
+"Harkitse skriptin prosessointisilmukan käyttöä Timer solmun hyvin alhaiseen "
+"odotusaikaan luottamisen sijaan."
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14458,13 +14495,16 @@ msgstr ""
"johonkin solmuun näkyväksi."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
-"Näyttöruudun koko on oltava suurempi kuin 0, jotta mitään renderöidään."
+"Näyttöruudun koko on oltava suurempi tai yhtä suuri kuin kaksi pikseliä "
+"kummassakin suunnassa, jotta mitään renderöidään."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "Aseta pallot OccluderShapeSpherelle"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
diff --git a/editor/translations/fil.po b/editor/translations/fil.po
index c227244f65..44176ea6bc 100644
--- a/editor/translations/fil.po
+++ b/editor/translations/fil.po
@@ -10,6 +10,7 @@
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: Sven Sorupia <stsorupia@gmail.com>\n"
"Language-Team: Filipino <https://hosted.weblate.org/projects/godot-engine/"
@@ -2333,6 +2334,14 @@ msgid ""
"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 ""
@@ -2449,6 +2458,10 @@ 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."
@@ -2768,10 +2781,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4178,15 +4187,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7077,11 +7094,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7491,7 +7508,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7499,6 +7516,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7836,6 +7857,26 @@ 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 ""
@@ -13717,6 +13758,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13726,7 +13775,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 9416a14cdc..872b22322e 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -35,7 +35,7 @@
# Rémi Verschelde <rverschelde@gmail.com>, 2016-2017.
# Robin Arys <robinarys@hotmail.com>, 2017.
# Roger BR <drai_kin@hotmail.com>, 2016.
-# salty64 <cedric.arrabie@univ-pau.fr>, 2018, 2020.
+# salty64 <cedric.arrabie@univ-pau.fr>, 2018, 2020, 2021.
# Thomas Baijot <thomasbaijot@gmail.com>, 2016, 2019.
# Tommy Melançon-Roy <tommel1234@hotmail.com>, 2017-2018.
# Willow <theotimefd@aol.com>, 2018.
@@ -49,7 +49,7 @@
# Brice Lobet <tempo.data@gmail.com>, 2018.
# Florent Wijanto <f_wijanto@hotmail.com>, 2018.
# Olivier gareau <olivier.gareau@protonmail.com>, 2018.
-# Rémi Verschelde <akien@godotengine.org>, 2018, 2019, 2020.
+# Rémi Verschelde <akien@godotengine.org>, 2018, 2019, 2020, 2021.
# Rémi Bintein <reminus5@hotmail.fr>, 2018, 2019.
# Sylvain Corsini <sylvain.corsini@gmail.com>, 2018.
# Caye Pierre <pierrecaye@laposte.net>, 2019.
@@ -83,12 +83,14 @@
# Clément Topy <topy72.mine@gmail.com>, 2021.
# Cold <coldragon78@gmail.com>, 2021.
# Blackiris <divjvc@free.fr>, 2021.
+# Olivier Monnom <olivier.monnom@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-08-20 06:04+0000\n"
-"Last-Translator: Pierre Caye <pierrecaye@laposte.net>\n"
+"PO-Revision-Date: 2021-10-23 12:20+0200\n"
+"Last-Translator: salty64 <cedric.arrabie@univ-pau.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -96,7 +98,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.8-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2371,7 +2373,7 @@ msgstr "Monter"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
msgid "Node"
-msgstr "Nœud"
+msgstr "Node"
#: editor/editor_network_profiler.cpp
msgid "Incoming RPC"
@@ -2498,6 +2500,14 @@ msgstr ""
"Impossible d'enregistrer la scène. Les dépendances (instances ou héritage) "
"n'ont sans doute pas pu être satisfaites."
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr "Impossible de sauver la (les) scènes(s) !"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Enregistrer toutes les scènes"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Impossible de ré-écrire une scène tant que celle-ci est ouverte !"
@@ -2640,6 +2650,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Sauvegarder les modifications effectuées à « %s » avant de quitter ?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr "%s n'existe plus ! Veuillez spécifier un nouvel endroit de sauvegarde."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2685,29 +2699,27 @@ msgstr "La scène actuelle n'est pas enregistrée. Ouvrir quand même ?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Impossible d'annuler quand les boutons de la souris sont activés."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Rien à annuler."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Annuler"
+msgstr "Annuler %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Impossible de rétablir quand les boutons de la souris sont activés."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Rien à rétablir."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Refaire"
+msgstr "Refaire %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2743,7 +2755,7 @@ msgstr "Quitter l'éditeur ?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
-msgstr "Ouvrir gestionnaire de projets ?"
+msgstr "Ouvrir le gestionnaire de projets ?"
#: editor/editor_node.cpp
msgid "Save & Quit"
@@ -3000,10 +3012,6 @@ msgid "Save Scene"
msgstr "Enregistrer la scène"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Enregistrer toutes les scènes"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Convertir vers…"
@@ -3408,9 +3416,8 @@ msgid "Merge With Existing"
msgstr "Fusionner avec l'existant"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Changer la transformation de l’animation"
+msgstr "Appliquer la transformation du MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3673,7 +3680,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Chargement rapide"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4499,6 +4506,24 @@ msgid "Clear Default for '%s'"
msgstr "Effacer le préréglage pour « %s »"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Réimporter"
+
+#: 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 ""
+"Vous avez des changements en attente qui n'ont pas encore été appliqués. "
+"Cliquez sur réimporter pour appliquer les changements des options "
+"d'importation\n"
+"Sélectionner une autre ressource dans le \"FileSystem dock\" sans cliquer "
+"sur réimport avant va annuler les changements faits dans le dock "
+"d'importation."
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "Importer comme :"
@@ -4507,10 +4532,6 @@ msgid "Preset"
msgstr "Préréglage"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Réimporter"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Enregistrer les scènes, réimporter, puis redémarrer"
@@ -5581,7 +5602,7 @@ msgstr "Dernier"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "All"
-msgstr "All"
+msgstr "Tous"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Search templates, projects, and demos"
@@ -5794,15 +5815,13 @@ msgstr "Déplacer le CanvasItem « %s » vers (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Verrouillage Sélectionné"
+msgstr "Verrouillé"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Groupes"
+msgstr "Groupé"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6755,14 +6774,12 @@ msgid "Remove Selected Item"
msgstr "Supprimer l'élément sélectionné"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Importer depuis la scène"
+msgstr "Importer depuis la scène (Ignore les transformations)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Importer depuis la scène"
+msgstr "Importer depuis la scène (Applique les transformations)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7360,14 +7377,12 @@ msgid "Flip Portal"
msgstr "Retourner le Portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Supprimer la transformation"
+msgstr "Définir la transformation pour l'occulteur"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Créer un nœud"
+msgstr "Centrer le nœud"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7503,11 +7518,11 @@ msgid "Move Down"
msgstr "Déplacer vers le bas"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "Script suivant"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr "Script précédent"
#: editor/plugins/script_editor_plugin.cpp
@@ -7873,14 +7888,12 @@ msgid "Skeleton2D"
msgstr "Squelette 2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Assigner les os à la position de repos"
+msgstr "Remettre à la position de repos"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Écraser"
+msgstr "Écraser la position de repos"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7907,69 +7920,62 @@ msgid "Perspective"
msgstr "Perspective"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Orthogonale"
+msgstr "Haut Orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspective"
+msgstr "Perspective haute"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Orthogonale"
+msgstr "Bas Orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspective"
+msgstr "Perspective basse"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Orthogonale"
+msgstr "Gauche Orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "Perspective"
+msgid "Left Perspective"
+msgstr "Perspective Gauche"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Orthogonale"
+msgstr "Orthogonal Droit"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Perspective Droite"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Orthogonale"
+msgstr "Orthogonal avant"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspective"
+msgstr "Perspective Avant"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Orthogonale"
+msgstr "Orthogonale arrière"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspective"
+msgstr "Perspective arrière"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [auto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portails actifs]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8296,6 +8302,26 @@ msgid "Right View"
msgstr "Vue de droite"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Down"
+msgstr "Vue de l'orbite vers le bas"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Left"
+msgstr "Vue de l'orbite vers la gauche"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Right"
+msgstr "Vue de l'orbite vers la droite"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Up"
+msgstr "Vue de l'orbite vers le devant"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr "Vue de l'orbite à 180°"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Basculer entre la vue perspective et orthogonale"
@@ -8369,9 +8395,8 @@ msgid "View Portal Culling"
msgstr "Afficher le Portal culling"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Afficher le Portal culling"
+msgstr "Voir la suppression de l'occlusion"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8439,9 +8464,8 @@ msgid "Post"
msgstr "Post"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Projet sans titre"
+msgstr "Gizmo sans nom"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -12602,14 +12626,12 @@ msgid "Set Portal Point Position"
msgstr "Définir la position du point du Portal"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Changer le rayon de la forme du cylindre"
+msgstr "Définir le rayon de la sphère de l'occulteur"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Définir position d'entrée de la courbe"
+msgstr "Définir la position de la sphère de l'occulteur"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12897,9 +12919,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "Le nom de classe ne peut pas être un mot-clé réservé"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Remplir la sélection"
+msgstr "Compiler la solution"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -14279,11 +14300,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Aucune forme n'est définie."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Seules les échelles uniformes sont prises en charge."
#: scene/3d/particles.cpp
msgid ""
@@ -14647,6 +14668,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Les options Tile et Tile Fit pour les propriétés d'extension d'axe ne sont "
+"efficaces que si vous utilisez le rendu GLES3.\n"
+"Le rendu GLES2 étant actuellement utilisé, ces modes se comporteront comme "
+"un étirement."
#: scene/gui/popup.cpp
msgid ""
@@ -14686,6 +14711,18 @@ msgstr ""
"L'environnement par défaut spécifié dans les réglages du projet (Rendu -> "
"Environnement -> Environnement par défaut) ne peut pas être chargé."
+#: 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 ""
+"Les temps d'attente très faibles des timers(< 0,05 seconde) peuvent se "
+"comporter de manière très différente selon la vitesse du rendu ou physique.\n"
+"Envisagez d'utiliser la boucle de traitement d'un script au lieu de vous "
+"fier à un timer pour les temps d'attente très faibles."
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14699,14 +14736,16 @@ msgstr ""
"RenderTarget et assignez sa texture à un nœud pouvant l'afficher."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
-"La taille de la fenêtre d'affichage doit être supérieure à 0 pour pouvoir "
-"afficher quoi que ce soit."
+"La taille de la fenêtre d'affichage doit être supérieure ou égale à 2 pixels "
+"dans les deux sens pour que le rendu soit possible."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "Définir les sphères pour OccluderShapeSphere"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
diff --git a/editor/translations/ga.po b/editor/translations/ga.po
index da5c9051ed..de8d178967 100644
--- a/editor/translations/ga.po
+++ b/editor/translations/ga.po
@@ -6,6 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2020-06-15 01:48+0000\n"
"Last-Translator: Rónán Quill <ronan085@gmail.com>\n"
"Language-Team: Irish <https://hosted.weblate.org/projects/godot-engine/godot/"
@@ -2325,6 +2326,14 @@ msgid ""
"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 ""
@@ -2441,6 +2450,10 @@ 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."
@@ -2761,10 +2774,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4167,15 +4176,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7060,11 +7077,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7474,7 +7491,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7482,6 +7499,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7820,6 +7841,26 @@ 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 ""
@@ -13696,6 +13737,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13705,7 +13754,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/gl.po b/editor/translations/gl.po
index 285cdf4e3b..ff6fc36818 100644
--- a/editor/translations/gl.po
+++ b/editor/translations/gl.po
@@ -10,6 +10,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2021-08-12 21:32+0000\n"
"Last-Translator: davidrogel <david.rogel.pernas@icloud.com>\n"
"Language-Team: Galician <https://hosted.weblate.org/projects/godot-engine/"
@@ -2412,6 +2413,15 @@ msgstr ""
"Non se puido gardar a escena. Posiblemente as dependencias (instancias ou "
"herenzas) non puideron satisfacerse."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Non se puido iniciar subproceso!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Gardar Todas as Escenas"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Non se pode sobreescribir escena que sigue aberta!"
@@ -2549,6 +2559,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Gardar os cambios de '%s' antes de pechar?"
#: 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."
@@ -2904,10 +2918,6 @@ msgid "Save Scene"
msgstr "Gardar Escena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Gardar Todas as Escenas"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Converter a..."
@@ -4383,6 +4393,18 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimportar"
+
+#: 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 "Importar Como:"
@@ -4391,10 +4413,6 @@ msgid "Preset"
msgstr "Axustes de Importación"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimportar"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7334,11 +7352,13 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Seguinte script"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Anterior script"
#: editor/plugins/script_editor_plugin.cpp
@@ -7758,7 +7778,7 @@ msgstr "Ortogonal"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspetiva"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7768,6 +7788,11 @@ msgstr "Ortogonal"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspetiva"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Ortogonal"
@@ -8130,6 +8155,27 @@ msgid "Right View"
msgstr "Vista Dereita"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Vista Frontal"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Vista Perspectiva/Ortogonal"
@@ -14260,6 +14306,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14273,7 +14327,10 @@ msgstr ""
"Ou ben, fágao un RenderTarget e asigne a súa textura a algún nodo."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
"As dimensións da Mini-Ventá (Viewport) deben de ser maior que 0 para poder "
"renderizar nada."
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 15c4694949..9e41b7f9c4 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -23,6 +23,7 @@
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-05-14 11:20+0000\n"
"Last-Translator: Ram Tourgeman <ramtorgeman@gmail.com>\n"
@@ -965,7 +966,7 @@ msgstr "מעבר למתודה"
#: editor/create_dialog.cpp
msgid "Change %s Type"
-msgstr "שנה ×ת הסוג של s%"
+msgstr "שנה ×ת הסוג של %s"
#: editor/create_dialog.cpp editor/project_settings_editor.cpp
msgid "Change"
@@ -1025,7 +1026,7 @@ msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"סצנה 's%' נמצ×ת כרגע בעריכה.\n"
+"סצנה '%s' נמצ×ת כרגע בעריכה.\n"
"×©×™× ×•×™×™× ×™×›× ×¡×• לתוקף בטעינה מחדש."
#: editor/dependency_editor.cpp
@@ -1033,7 +1034,7 @@ msgid ""
"Resource '%s' is in use.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"מש×ב 's%' × ×ž×¦× ×‘×©×™×ž×•×©.\n"
+"מש×ב '%s' × ×ž×¦× ×‘×©×™×ž×•×©.\n"
"×©×™× ×•×™×™× ×™×›× ×¡×• לתוקף רק בטעינה מחדש."
#: editor/dependency_editor.cpp
@@ -2425,6 +2426,15 @@ msgid ""
"be satisfied."
msgstr "×œ× × ×™×ª×Ÿ לשמור ×ת הסצנה. כנר××” עקב תלות (מופע ×ו ירושה) ×©×œ× ×ž×¡×•×¤×§×ª."
+#: editor/editor_node.cpp
+#, fuzzy
+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 "×œ× × ×™×ª×Ÿ להחליף סצנה שעדיין פתוחה!"
@@ -2553,6 +2563,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "לשמור ×ת ×”×©×™× ×•×™×™× ×œÖ¾'%s' לפני הסגירה?"
#: 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."
@@ -2893,10 +2907,6 @@ msgid "Save Scene"
msgstr "שמירת סצנה"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "שמירת כל הסצנות"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "המרה ×ל…"
@@ -4401,6 +4411,18 @@ msgid "Clear Default for '%s'"
msgstr "מחיקת בררת מחדל עבור ‚%s’"
#: 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 "×™×™×‘×•× ×‘×ª×•×¨:"
@@ -4410,10 +4432,6 @@ msgid "Preset"
msgstr "ערכה מוגדרת…"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "×™×™×‘×•× ×ž×—×“×©"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7433,11 +7451,13 @@ msgid "Move Down"
msgstr "העברה למטה"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "הסקריפט הב×"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "הסקריפט הקוד×"
#: editor/plugins/script_editor_plugin.cpp
@@ -7884,8 +7904,9 @@ msgid "Left Orthogonal"
msgstr "כפתור שמ×לי"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
+#, fuzzy
+msgid "Left Perspective"
+msgstr "מבט תחתי"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -7893,6 +7914,10 @@ msgid "Right Orthogonal"
msgstr "כפתור ימני"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8247,6 +8272,27 @@ 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "מבט קדמי"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Switch Perspective/Orthogonal View"
msgstr "החלפה בין תצוגה פרספקטיבה/×נכית"
@@ -14520,6 +14566,14 @@ msgstr ""
"×œ× ×”×™×ª×” ×פשרות לטעון ×ת הסביבה שנקבעה כברירת המחדל בהגדרות ×”×ž×™×–× (Rendering -"
"> Environment -> Default Environment)."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14532,7 +14586,10 @@ msgstr ""
"הפנימי שלו למפרק כלשהו לתצוגה."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "גודל חלון התצוגה חייב להיות גדול מ-0 על מנת להציג משהו."
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index e6a2a76f37..585fb5e33c 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -17,6 +17,7 @@
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-05-03 21:29+0000\n"
"Last-Translator: harvinder rathor <harvinderr09@gmail.com>\n"
@@ -2403,6 +2404,15 @@ msgid ""
"be satisfied."
msgstr "दृशà¥à¤¯ नहीं बचा सका । संभावित निरà¥à¤­à¤°à¤¤à¤¾ (उदाहरण या विरासत) संतà¥à¤·à¥à¤Ÿ नहीं हो सकीं।"
+#: editor/editor_node.cpp
+#, fuzzy
+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 "दृशà¥à¤¯ है कि अभी भी खà¥à¤²à¤¾ है ओवरराइट नहीं कर सकते!"
@@ -2537,6 +2547,10 @@ 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."
@@ -2876,10 +2890,6 @@ msgid "Save Scene"
msgstr "दृशà¥à¤¯ बचाओ"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "सभी दृशà¥à¤¯à¥‹à¤‚ को सहेजें"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "बदलने के लिà¤..."
@@ -4371,18 +4381,26 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
-msgstr "पà¥à¤°à¥€à¤¸à¥‡à¤Ÿ"
+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 "Reimport"
+msgid "Import As:"
msgstr ""
#: editor/import_dock.cpp
+msgid "Preset"
+msgstr "पà¥à¤°à¥€à¤¸à¥‡à¤Ÿ"
+
+#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7301,12 +7319,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "नई सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "पिछला टैब"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7725,7 +7745,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7733,6 +7753,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8076,6 +8100,26 @@ 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 ""
@@ -14150,6 +14194,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14159,7 +14211,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/hr.po b/editor/translations/hr.po
index c5fcf3ab6e..a61ff60a0e 100644
--- a/editor/translations/hr.po
+++ b/editor/translations/hr.po
@@ -9,6 +9,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2021-08-13 19:05+0000\n"
"Last-Translator: LeoClose <leoclose575@gmail.com>\n"
"Language-Team: Croatian <https://hosted.weblate.org/projects/godot-engine/"
@@ -2350,6 +2351,14 @@ msgid ""
"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 ""
@@ -2466,6 +2475,10 @@ 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."
@@ -2785,10 +2798,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4205,15 +4214,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7107,12 +7124,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Odspoji Skriptu"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Idi na prethodni korak"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7522,7 +7541,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7530,6 +7549,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7870,6 +7893,26 @@ 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 ""
@@ -13779,6 +13822,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13788,7 +13839,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index 2df1fc98b0..3ceb60fa99 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -16,12 +16,14 @@
# Czmorek Dávid <czmdav.soft@gmail.com>, 2020.
# Újvári Marcell <mmarci72@gmail.com>, 2021.
# Gergő Pistai <gergopistai@gmail.com>, 2021.
+# Misi <varady.misi@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-03-31 03:53+0000\n"
-"Last-Translator: Gergő Pistai <gergopistai@gmail.com>\n"
+"PO-Revision-Date: 2021-10-09 16:52+0000\n"
+"Last-Translator: Misi <varady.misi@gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/hu/>\n"
"Language: hu\n"
@@ -29,7 +31,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.6-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2137,12 +2139,14 @@ msgid "Methods"
msgstr "Metódusok"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Theme Properties"
-msgstr "Téma tulajdonságai"
+msgstr "Téma Tulajdonságok"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations"
-msgstr "Felsorolások"
+msgstr "Számlálók"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
@@ -2150,7 +2154,7 @@ msgstr "Konstansok"
#: editor/editor_help.cpp
msgid "Property Descriptions"
-msgstr "Tulajdonságleírások"
+msgstr "Tulajdonság leírások"
#: editor/editor_help.cpp
msgid "(value)"
@@ -2166,7 +2170,7 @@ msgstr ""
#: editor/editor_help.cpp
msgid "Method Descriptions"
-msgstr "Metódusleírások"
+msgstr "Metódus leírások"
#: editor/editor_help.cpp
msgid ""
@@ -2429,6 +2433,15 @@ msgstr ""
"Nem sikerült a Scene mentése. Valószínű, hogy a függőségei (példányok vagy "
"öröklések) nem voltak megfelelőek."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Az összes jelenet mentése"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Nem lehet felülírni a még nyitott jelenetet!"
@@ -2571,6 +2584,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Bezárás előtt menti a '%s'-n végzett módosításokat?"
#: 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."
@@ -2926,10 +2943,6 @@ msgid "Save Scene"
msgstr "Jelenet Mentése"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Az összes jelenet mentése"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Ãtkonvertálás..."
@@ -4404,6 +4417,18 @@ msgid "Clear Default for '%s'"
msgstr "Alapértelmezett Törlése '%s'-nél"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Újraimportálás"
+
+#: 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 "Importálás Mint:"
@@ -4412,10 +4437,6 @@ msgid "Preset"
msgstr "Előre beállított"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Újraimportálás"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Jelenetek mentése, újraimportálás és újraindítás"
@@ -7359,11 +7380,13 @@ msgid "Move Down"
msgstr "Mozgatás Lefelé"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Következő Szkript"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Előző Szkript"
#: editor/plugins/script_editor_plugin.cpp
@@ -7783,7 +7806,7 @@ msgstr "Ortogonális"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspektíva"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7793,6 +7816,11 @@ msgstr "Ortogonális"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspektíva"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Ortogonális"
@@ -8146,6 +8174,26 @@ 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 ""
@@ -14129,6 +14177,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14142,7 +14198,9 @@ msgstr ""
"té, és állítsa hozzá a belső textúráját valamilyen node-hoz kirajzolásra."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/id.po b/editor/translations/id.po
index 83b80592b1..b45942a7c4 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -33,12 +33,14 @@
# Naufal Adriansyah <naufaladrn90@gmail.com>, 2021.
# undisputedgoose <diablodvorak@gmail.com>, 2021.
# Tsaqib Fadhlurrahman Soka <sokatsaqib@gmail.com>, 2021.
+# Hilman Hazazi <hafizd.muhammad.kren.403@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-09-20 14:46+0000\n"
-"Last-Translator: Sofyan Sugianto <sofyanartem@gmail.com>\n"
+"PO-Revision-Date: 2021-10-15 04:32+0000\n"
+"Last-Translator: Tsaqib Fadhlurrahman Soka <sokatsaqib@gmail.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/"
"godot/id/>\n"
"Language: id\n"
@@ -55,13 +57,13 @@ msgstr "Tipe argumen tidak valid untuk convert(), gunakan konstanta TYPE_*."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
-msgstr "String dengan panjang 1 (karakter) yang diharapkan."
+msgstr "String dengan panjang 1 (karakter) diharapkan."
#: 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 "Tidak cukup byte untuk mendekode byte, atau format tidak valid."
+msgstr "Tidak cukup bita untuk mendekode bita, atau format tidak valid."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
@@ -70,7 +72,7 @@ msgstr "Masukkan tidak sah %i (tidak diberikan) dalam ekspresi"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
msgstr ""
-"self tidak dapat digunakan karena instance bernilai null (tidak di-passing)"
+"self tidak dapat digunakan karena nilai instansi adalah null (tidak lolos)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -122,7 +124,7 @@ msgstr "EiB"
#: editor/animation_bezier_editor.cpp
msgid "Free"
-msgstr "Bebaskan"
+msgstr "Bebas"
#: editor/animation_bezier_editor.cpp
msgid "Balanced"
@@ -557,7 +559,7 @@ msgstr "Susun Track-track dengan node atau tampilkan sebagai daftar biasa."
#: editor/animation_track_editor.cpp
msgid "Snap:"
-msgstr "Snap:"
+msgstr "Senap:"
#: editor/animation_track_editor.cpp
msgid "Animation step value."
@@ -581,7 +583,7 @@ msgstr "FPS"
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
-msgstr "Edit"
+msgstr "Sunting"
#: editor/animation_track_editor.cpp
msgid "Animation properties."
@@ -1054,7 +1056,7 @@ msgstr "Resource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
#: editor/project_manager.cpp editor/project_settings_editor.cpp
msgid "Path"
-msgstr "Path"
+msgstr "Jalur"
#: editor/dependency_editor.cpp
msgid "Dependencies:"
@@ -1547,7 +1549,7 @@ msgstr "Mengatur kembali Autoload-autoload"
#: editor/editor_autoload_settings.cpp
msgid "Can't add autoload:"
-msgstr "Tidak dapat menambahkan autoload"
+msgstr "Tidak dapat menambahkan autoload:"
#: editor/editor_autoload_settings.cpp
msgid "%s is an invalid path. File does not exist."
@@ -1567,7 +1569,7 @@ msgstr "Tambahkan AutoLoad"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp
msgid "Path:"
-msgstr "Path:"
+msgstr "Jalur:"
#: editor/editor_autoload_settings.cpp
msgid "Node Name:"
@@ -2130,7 +2132,7 @@ msgstr "baku:"
#: editor/editor_help.cpp
msgid "Methods"
-msgstr "Method"
+msgstr "Metode"
#: editor/editor_help.cpp
msgid "Theme Properties"
@@ -2427,6 +2429,15 @@ msgstr ""
"Tidak dapat menyimpan skena Dependensi (instance atau turunannya) mungkin "
"tidak terpenuhi."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Tidak dapat memulai subproses!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Simpan Semua Skena"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Tidak bisa menimpa skena yang masih terbuka!"
@@ -2548,7 +2559,7 @@ msgstr "Buka Cepat..."
#: editor/editor_node.cpp
msgid "Quick Open Scene..."
-msgstr "Buka Cepat Skena..."
+msgstr "Buka Cepat Skenario..."
#: editor/editor_node.cpp
msgid "Quick Open Script..."
@@ -2563,6 +2574,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Simpan perubahan '%s' sebelum menutupnya?"
#: 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."
@@ -2608,29 +2623,27 @@ msgstr "Skena saat ini belum disimpan. Buka saja?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Tidak bisa membatalkan ketika tombol mouse ditekan."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Tidak ada yang bisa dibatalkan."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Batal"
+msgstr "Batal: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Tidak bisa mengulangi ketika tombol mouse ditekan."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Tidak ada yang perlu diulang."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Ulangi"
+msgstr "Ulangi: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2721,8 +2734,9 @@ msgid ""
"error in that script.\n"
"Disabling the addon at '%s' to prevent further errors."
msgstr ""
-"Tidak dapat memuat script addon dari path: '%s' Mungkin ada kesalahan dalam "
-"kode, mohon periksa sintaks."
+"Tidak dapat memuat script addon dari jalur: '%s' Hal ini terjadi karena "
+"kesalahan koda dalam skrip.\n"
+"Lepaskan addon di '%s' to mencegah kesalahan kedepan."
#: editor/editor_node.cpp
msgid ""
@@ -2913,10 +2927,6 @@ msgid "Save Scene"
msgstr "Simpan Skena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Simpan Semua Skena"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Ubah ke..."
@@ -3315,9 +3325,8 @@ msgid "Merge With Existing"
msgstr "Gabung dengan yang Ada"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Ubah Transformasi Animasi"
+msgstr "Aplikasi Transformasi MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3468,6 +3477,12 @@ msgid ""
"functions called by that function.\n"
"Use this to find individual functions to optimize."
msgstr ""
+"Inklusif: Termasuk waktu dari fungsi lain yang terpanggil oleh fungsi ini.\n"
+"Gunakan ini untuk menemukan perlambatan.\n"
+"\n"
+"Sendiri: Hanya menghitung waktu terpakai oleh fungsi tersendiri, tidak "
+"termasuk fungsi yang dipanggil.\n"
+"Gunakan ini untuk menemukan fungsi individual untuk optimalisasi."
#: editor/editor_profiler.cpp
msgid "Frame #:"
@@ -3573,7 +3588,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Muat Cepat"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4026,7 +4041,7 @@ msgstr "Buka Skena"
#: editor/filesystem_dock.cpp
msgid "Instance"
-msgstr "Instance"
+msgstr "Instansi"
#: editor/filesystem_dock.cpp
msgid "Add to Favorites"
@@ -4388,6 +4403,18 @@ msgid "Clear Default for '%s'"
msgstr "Bersihkan Baku untuk '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Impor ulang"
+
+#: 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 "Impor sebagai:"
@@ -4396,10 +4423,6 @@ msgid "Preset"
msgstr "Prasetel"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Impor ulang"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Simpan Skena, Impor Ulang, dan Mulai Ulang"
@@ -5521,13 +5544,12 @@ msgstr ""
"Simpan skena Anda dan coba lagi."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
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 ""
-"Tidak ada mesh-mesh untuk di bake. Pastikan mereka punya kanal UV2 dan 'Bake "
-"Cahaya' menyala."
+"Tidak ada mesh untuk di bake. Pastikan mesh mempunyai kanal UV2 dengan flag "
+"'Use In Baked Light' dan 'Generate Lightmap' aktif."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5668,15 +5690,13 @@ msgstr "Pindahkan CanvasItem \"%s\" ke (%d,%d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Kunci yang Dipilih"
+msgstr "Terkunci"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Kelompok"
+msgstr "Terkelompok"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6529,9 +6549,8 @@ msgstr ""
"deteksi collision."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Create Simplified Convex Collision Sibling"
-msgstr "Buat Saudara Tunggal Convex Collision"
+msgstr "Buat saudara Convex Collision yang dipermudah"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
@@ -6539,20 +6558,23 @@ msgid ""
"This is similar to single collision shape, but can result in a simpler "
"geometry in some cases, at the cost of accuracy."
msgstr ""
+"Buat bentuk convex collision dipermudah.\n"
+"Ini serupa dengan bentuk collision tunggal, namun dapat menghasilkan "
+"geometri mudah dalam beberapa kasus, dengan biaya pada akurasi."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Buat Beberapa Saudara Convex Collision"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
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 ""
-"Buat collision shape berbasis poligon.\n"
-"Opsi ini kinerjanya berada di antara dua opsi di atas."
+"Buat bentuk collision berbasis poligon.\n"
+"Ini adalah opsi tengah performa antara convex collision tunggal dan "
+"collision berbasis poligon."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh..."
@@ -6619,14 +6641,12 @@ msgid "Remove Selected Item"
msgstr "Hapus Item yang Dipilih"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Impor dari Skena"
+msgstr "Impor dari Skenario (Hiraukan Transforms)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Impor dari Skena"
+msgstr "Impor dari Skenario (Aplikasikan Transforms)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7207,28 +7227,24 @@ msgid "Flip Portals"
msgstr "Balikkan Portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Room Generate Points"
-msgstr "Jumlah Titik yang Dihasilkan:"
+msgstr "Jumlah Titik Dihasilkan"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Generate Points"
-msgstr "Jumlah Titik yang Dihasilkan:"
+msgstr "Menghasilkan Nilai"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portal"
msgstr "Balikkan Portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Bersihkan Transformasi"
+msgstr "Tutup Set Transformasi"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Buat Node"
+msgstr "Node Tengah"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7364,11 +7380,13 @@ msgid "Move Down"
msgstr "Turunkan"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Skrip berikutnya"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Skrip sebelumnya"
#: editor/plugins/script_editor_plugin.cpp
@@ -7520,7 +7538,7 @@ msgstr "Sumber"
#: editor/plugins/script_text_editor.cpp
msgid "Target"
-msgstr "Target"
+msgstr "Sasaran"
#: editor/plugins/script_text_editor.cpp
msgid ""
@@ -7735,14 +7753,12 @@ msgid "Skeleton2D"
msgstr "Skeleton2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Atur Tulang ke Pose Istirahat"
+msgstr "Atur ulang ke Pose Duduk"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Timpa"
+msgstr "Timpa Pose Duduk"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7769,69 +7785,63 @@ msgid "Perspective"
msgstr "Perspektif"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Atas"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspektif"
+msgstr "Perspektif Atas"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Bawah"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspektif"
+msgstr "Perspektif Bawah"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Kiri"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspektif"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Kanan"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Perspektif Kanan"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Depan"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspektif"
+msgstr "Perspektif Depan"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Belakang"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspektif"
+msgstr "Perspektif Belakang"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [auto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portal aktif]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -7893,9 +7903,8 @@ msgid "Animation Key Inserted."
msgstr "Kunci Animasi Dimasukkan."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Pitch:"
-msgstr "Dongak"
+msgstr "Dongak:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw:"
@@ -7906,34 +7915,28 @@ msgid "Size:"
msgstr "Ukuran:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Objects Drawn:"
-msgstr "Objek Digambar"
+msgstr "Objek Digambar:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes:"
-msgstr "Perubahan Material"
+msgstr "Perubahan Material:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes:"
-msgstr "Perubahan Shader"
+msgstr "Perubahan Shader:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes:"
-msgstr "Perubahan Permukaan"
+msgstr "Perubahan Permukaan:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Draw Calls:"
-msgstr "Gambarkan Panggilan"
+msgstr "Gambarkan Panggilan:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices:"
-msgstr "Titik"
+msgstr "Sudut:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "FPS: %d (%s ms)"
@@ -8166,6 +8169,27 @@ msgid "Right View"
msgstr "Tampilan Kanan"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Tampilan Depan"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Beralih Tampilan Ortogonal/Perspektif"
@@ -8607,18 +8631,16 @@ msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "No fonts found."
-msgstr "Tidak ditemukan!"
+msgstr "Font tidak ditemukan."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "No icons found."
-msgstr "Tidak ditemukan!"
+msgstr "Ikon tidak ditemukan."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} stylebox(es)"
@@ -8647,9 +8669,8 @@ msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Updating the editor"
-msgstr "Keluar editor?"
+msgstr "Memperbarui editor"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -8666,14 +8687,12 @@ msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select by data type:"
-msgstr "Pilih Node"
+msgstr "Pilih berdasarkan tipe data:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible color items."
-msgstr "Pilih Berkas untuk Dipindai"
+msgstr "Pilih semua benda warna terlihat."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible color items and their data."
@@ -8684,9 +8703,8 @@ msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible constant items."
-msgstr "Pilih item pengaturan terlebih dahulu!"
+msgstr "Pilih semua benda konstan terlihat."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible constant items and their data."
@@ -8697,9 +8715,8 @@ msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible font items."
-msgstr "Pilih item pengaturan terlebih dahulu!"
+msgstr "Pilih semua benda font terlihat."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items and their data."
@@ -8710,19 +8727,16 @@ msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible icon items."
-msgstr "Pilih item pengaturan terlebih dahulu!"
+msgstr "Pilih semua benda ikon terlihat."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible icon items and their data."
-msgstr "Pilih item pengaturan terlebih dahulu!"
+msgstr "Pilih semua benda ikon terlihat dan data mereka."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Deselect all visible icon items."
-msgstr "Pilih item pengaturan terlebih dahulu!"
+msgstr "Batal pilih semua benda ikon terlihat."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible stylebox items."
@@ -8743,19 +8757,16 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Collapse types."
-msgstr "Lipat Semua"
+msgstr "Lipat Semua."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Expand types."
-msgstr "Bentangkan Semua"
+msgstr "Bentangkan Semua."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all Theme items."
-msgstr "Pilih berkas templat"
+msgstr "Pilih semua benda Tema."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -8909,9 +8920,8 @@ msgid "Add Type:"
msgstr "Jenis:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Item:"
-msgstr "Tambah Item"
+msgstr "Tambah benda:"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -8919,9 +8929,8 @@ msgid "Add StyleBox Item"
msgstr "Tambahkan Semua Item"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove Items:"
-msgstr "Hapus item"
+msgstr "Hapus benda:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
@@ -8962,9 +8971,8 @@ msgid "Editor Theme"
msgstr "Sunting Tema"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select Another Theme Resource:"
-msgstr "Hapus Resource"
+msgstr "Pilih Tema Lain Aset:"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -9007,9 +9015,8 @@ msgid "Add Item Type"
msgstr "Tambah Item"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Node Types:"
-msgstr "Jenis node"
+msgstr "Tipe node:"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -9030,9 +9037,8 @@ msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Theme:"
-msgstr "Tema"
+msgstr "Tema:"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -9097,9 +9103,8 @@ msgid "Checked Radio Item"
msgstr "Item Radio yang Dicentang"
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Named Separator"
-msgstr "Pemisah yang diberi nama."
+msgstr "Pemisah yang diberi nama"
#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
@@ -10572,9 +10577,8 @@ msgid "VisualShader"
msgstr "ShaderVisual"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Edit Visual Property:"
-msgstr "Sunting Properti Visual"
+msgstr "Sunting Properti Visual:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -11023,14 +11027,12 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Apakah Anda yakin menjalankan %d proyek sekaligus?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove %d projects from the list?"
-msgstr "Pilih perangkat pada daftar"
+msgstr "Buang proyek %d dari daftar?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove this project from the list?"
-msgstr "Pilih perangkat pada daftar"
+msgstr "Buang proyek ini dari daftar?"
#: editor/project_manager.cpp
msgid ""
@@ -11272,7 +11274,7 @@ msgstr "Indeks Sumbu Joypad:"
#: editor/project_settings_editor.cpp
msgid "Axis"
-msgstr "Axis"
+msgstr "Sumbu"
#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
@@ -11511,11 +11513,11 @@ msgstr "Nol"
#: editor/property_editor.cpp
msgid "Easing In-Out"
-msgstr "Easing In-Out"
+msgstr "Mempermudah Masuk-Keluar"
#: editor/property_editor.cpp
msgid "Easing Out-In"
-msgstr "Easing Out-In"
+msgstr "Mempermudah Keluar-Masuk"
#: editor/property_editor.cpp
msgid "File..."
@@ -11636,7 +11638,7 @@ msgstr "Jumlah penghitung bertambah untuk setiap node"
#: editor/rename_dialog.cpp
msgid "Padding"
-msgstr "Padding"
+msgstr "Lapisan"
#: editor/rename_dialog.cpp
msgid ""
@@ -12306,7 +12308,7 @@ msgstr "Sumber C++ :"
#: editor/script_editor_debugger.cpp
msgid "Stack Trace"
-msgstr "Stack Trace"
+msgstr "Jejak Tumpukan"
#: editor/script_editor_debugger.cpp
msgid "Errors"
@@ -12648,7 +12650,7 @@ msgstr "Plane Sebelumnya"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Plane:"
-msgstr "Plane:"
+msgstr "Dataran:"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Floor"
@@ -12660,7 +12662,7 @@ msgstr "Floor Sebelumnya"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Floor:"
-msgstr "Floor:"
+msgstr "Lantai:"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Delete Selection"
@@ -12685,7 +12687,7 @@ msgstr "Isi Seleksi GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
-msgstr "Grid Map"
+msgstr "Peta Grid"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
@@ -12815,7 +12817,7 @@ msgstr "Akhir dari inner exception stack trace"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr "Bake NavMesh"
+msgstr "Panggang NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -13329,14 +13331,12 @@ msgid "Running on %s"
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Exporting APK..."
-msgstr "Mengekspor Semua"
+msgstr "Mengekspor APK..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Uninstalling..."
-msgstr "Copot Pemasangan"
+msgstr "Copot Pemasangan..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13344,9 +13344,8 @@ msgid "Installing to device, please wait..."
msgstr "Memuat, tunggu sejenak..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not install to device: %s"
-msgstr "Tidak dapat memulai subproses!"
+msgstr "Tidak dapat instalasi ke perangkat: %s"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13466,16 +13465,12 @@ msgid "Signing debug %s..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Signing release %s..."
-msgstr ""
-"Memindai Berkas,\n"
-"Silakan Tunggu..."
+msgstr "Menandatangani rilis %s..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not find keystore, unable to export."
-msgstr "Tidak dapat membuka templat untuk ekspor:"
+msgstr "Tidak dapat menemukan keystore, tidak bisa ekspor."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
@@ -13541,9 +13536,8 @@ msgid "Could not export project files to gradle project\n"
msgstr "Tidak dapat menyunting proyek gradle dalam lokasi proyek\n"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not write expansion package file!"
-msgstr "Tidak dapat menulis berkas:"
+msgstr "Tidak dapat menulis berkas paket ekspansi!"
#: platform/android/export/export_plugin.cpp
msgid "Building Android Project (gradle)"
@@ -13580,11 +13574,12 @@ msgid "Creating APK..."
msgstr "Membuat kontur..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Could not find template APK to export:\n"
"%s"
-msgstr "Tidak dapat membuka templat untuk ekspor:"
+msgstr ""
+"Tidak dapat menemukan contoh APK untuk ekspor:\n"
+"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13600,9 +13595,8 @@ msgid "Adding files..."
msgstr "Menambahkan %s..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files"
-msgstr "Tidak dapat menulis berkas:"
+msgstr "Tidak dapat ekspor berkas proyek"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -13668,14 +13662,12 @@ msgid "Could not read HTML shell:"
msgstr "Tidak dapat membaca shell HTML kustom:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not create HTTP server directory:"
-msgstr "Tidak dapat membuat folder."
+msgstr "Tidak dapat menciptakan direktori server HTTP:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Error starting HTTP server:"
-msgstr "Galat menyimpan skena."
+msgstr "Kesalahan memulai server HTTP:"
#: platform/osx/export/export.cpp
#, fuzzy
@@ -14539,6 +14531,14 @@ msgstr ""
"Lingkungan Baku yang ditetapkan di Pengaturan Proyek (Rendering -> Viewport -"
"> Lingkungan Baku) tidak dapat dimuat."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14553,7 +14553,10 @@ msgstr ""
"beberapa node untuk ditampilkan."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "Ukuran viewport harus lebih besar dari 0 untuk me-render apa pun."
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/is.po b/editor/translations/is.po
index 33fee00267..0d4f9a00f5 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -8,6 +8,7 @@
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-11-20 23:08+0000\n"
"Last-Translator: Jóhannes G. Þorsteinsson <johannesg@johannesg.com>\n"
@@ -2364,6 +2365,14 @@ msgid ""
"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 ""
@@ -2480,6 +2489,10 @@ 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."
@@ -2801,10 +2814,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4216,15 +4225,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7143,11 +7160,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7558,7 +7575,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7566,6 +7583,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7904,6 +7925,26 @@ 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 ""
@@ -13859,6 +13900,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13868,7 +13917,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 0b25d41fa0..8ec6f16734 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -60,12 +60,14 @@
# Jusef Azzolina <rosarioazzolina33@gmail.com>, 2021.
# Daniele Basso <tiziodcaio@gmail.com>, 2021.
# Riteo Siuga <riteo@posteo.net>, 2021.
+# Luigi <luibass92@live.it>, 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-08-22 22:46+0000\n"
-"Last-Translator: Riteo Siuga <riteo@posteo.net>\n"
+"PO-Revision-Date: 2021-10-11 15:44+0000\n"
+"Last-Translator: Luigi <luibass92@live.it>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
"Language: it\n"
@@ -73,7 +75,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.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -652,9 +654,8 @@ msgid "Go to Previous Step"
msgstr "Vai al passo precedente"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Apply Reset"
-msgstr "Applica reset"
+msgstr "Reimposta"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -1555,7 +1556,9 @@ msgstr "Non deve collidere con il nome di una costante globale esistente."
#: editor/editor_autoload_settings.cpp
#, fuzzy
msgid "Keyword cannot be used as an autoload name."
-msgstr "Una parola chiave non può essere utilizzata come nome di un Autoload."
+msgstr ""
+"Una parola chiave non può essere utilizzata come nome di un caricamento "
+"automatico."
#: editor/editor_autoload_settings.cpp
#, fuzzy
@@ -1595,17 +1598,18 @@ msgid "Can't add autoload:"
msgstr "Non è possibile aggiungere l'autoload:"
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "%s is an invalid path. File does not exist."
-msgstr "File inesistente."
+msgstr "%s è un path non valido. File inesistente."
#: editor/editor_autoload_settings.cpp
msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr "%s non è una strada valida. Essa non punta nelle risorse (res://)."
+msgstr ""
+"%s non è un percorso valido. Non si trova nel percorso delle risorse "
+"(res://)."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr "Aggiungi un Autoload"
+msgstr "Aggiungi un AutoLoad"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
#: editor/editor_plugin_settings.cpp
@@ -1616,7 +1620,7 @@ msgstr "Percorso:"
#: editor/editor_autoload_settings.cpp
msgid "Node Name:"
-msgstr "Nome del nodo:"
+msgstr "Nome del Nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
@@ -1625,9 +1629,8 @@ msgid "Name"
msgstr "Nome"
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "Global Variable"
-msgstr "Valiabile"
+msgstr "Valiabile globale"
#: editor/editor_data.cpp
msgid "Paste Params"
@@ -1659,7 +1662,7 @@ msgstr "Si prega di selezionare prima una cartella di base."
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
-msgstr "Scegliere una cartella"
+msgstr "Scegli una cartella"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp editor/project_manager.cpp
@@ -1700,8 +1703,8 @@ msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
msgstr ""
-"La piattaforma di destinazione richiede la compressione \"ETC\" delle "
-"texture per GLES2. Attiva \"Import Etc\" nelle impostazioni del progetto."
+"La piattaforma di destinazione richiede la compressione 'ETC' delle texture "
+"per GLES2. Attiva 'Import Etc' nelle impostazioni del progetto."
#: editor/editor_export.cpp
msgid ""
@@ -2496,6 +2499,15 @@ msgstr ""
"Impossibile salvare la scena. È probabile che le dipendenze (instanze o "
"eredità) non siano state soddisfatte."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Impossibile salvare la texture convertita:"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Salva tutte le scene"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Impossibile sovrascrivere una scena ancora aperta!"
@@ -2633,6 +2645,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Salvare le modifiche a \"%s\" prima di chiudere?"
#: 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."
@@ -2989,10 +3005,6 @@ msgid "Save Scene"
msgstr "Salva la scena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Salva tutte le scene"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Converti in..."
@@ -4536,6 +4548,18 @@ msgid "Clear Default for '%s'"
msgstr "Elimina Predefinito per \"%s\""
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimporta"
+
+#: 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 "Importa Come:"
@@ -4544,10 +4568,6 @@ msgid "Preset"
msgstr "Preimpostazione"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimporta"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Salva scene, re-importa e riavvia"
@@ -7586,11 +7606,13 @@ msgid "Move Down"
msgstr "Sposta giù"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Script successivo"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Script precedente"
#: editor/plugins/script_editor_plugin.cpp
@@ -8017,7 +8039,7 @@ msgstr "Ortogonale"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Prospettiva"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8027,6 +8049,11 @@ msgstr "Ortogonale"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Prospettiva"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Ortogonale"
@@ -8394,6 +8421,27 @@ msgid "Right View"
msgstr "Vista laterale destra"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Vista frontale"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Cambia tra vista prospettica/ortogonale"
@@ -14822,6 +14870,14 @@ msgstr ""
"Non è stato possibile caricare l'Ambiente predefinito come specificato nelle "
"Impostazioni Progetto (Rendering -> Ambiente -> Ambiente Predefinito)."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14835,7 +14891,10 @@ msgstr ""
"RenderTarget e assegnare alla sua texture interna qualche nodo da mostrare."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
"La dimensione del Viewport deve essere maggiore di 0 affinché qualcosa sia "
"visibile."
@@ -16535,9 +16594,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "Impossibile salvare l'immagine di atlas:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "Impossibile salvare la texture convertita:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "Sorgente traduzione invalida!"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 20cd8fc7da..4a2075e20b 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -34,11 +34,13 @@
# BinotaLIU <me@binota.org>, 2020, 2021.
# 都築 æœ¬æˆ <motonari728@gmail.com>, 2021.
# Nanjakkun <nanjakkun@gmail.com>, 2021.
+# Lemoney <railkill@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-09-11 20:05+0000\n"
+"PO-Revision-Date: 2021-10-22 06:04+0000\n"
"Last-Translator: nitenook <admin@alterbaum.net>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
@@ -74,15 +76,15 @@ msgstr "インスタンス㌠null (渡ã•れãªã„) ã§ã‚ã‚‹ãŸã‚ã€self ã¯ä
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
-msgstr "æ¼”ç®—å­ %s ã«å¯¾ã™ã‚‹ç„¡åйãªã‚ªãƒšãƒ©ãƒ³ãƒ‰ã§ã™: %s 㨠%s。"
+msgstr "æ¼”ç®—å­ %s ã«å¯¾ã™ã‚‹ã‚ªãƒšãƒ©ãƒ³ãƒ‰ %s ãŠã‚ˆã³ %s ã¯ç„¡åйã§ã™ã€‚"
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
-msgstr "åž‹ %s ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒç„¡åйã€ã“れã¯åŸºåº•åž‹ %s 用ã§ã™"
+msgstr "%såž‹ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¯ã€å…ƒã®%såž‹ã«å¯¾ã—ã¦ç„¡åйã§ã™"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
-msgstr "インデックス '%s' (基底型 %s) ã¯ç„¡åйãªåå‰ã§ã™"
+msgstr "åå‰ä»˜ãインデックス '%s' ã¯ã€å…ƒã®%såž‹ã«å¯¾ã—ã¦ç„¡åйã§ã™"
#: core/math/expression.cpp
msgid "Invalid arguments to construct '%s'"
@@ -186,7 +188,7 @@ msgstr "アニメーションキーフレームã®å€¤ã‚’変更"
#: editor/animation_track_editor.cpp
msgid "Anim Change Call"
-msgstr "アニメーション呼出ã—ã®å¤‰æ›´"
+msgstr "アニメーション呼ã³å‡ºã—ã®å¤‰æ›´"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Keyframe Time"
@@ -206,7 +208,7 @@ msgstr "アニメーションキーフレームã®å€¤ã‚’複数変更"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Call"
-msgstr "アニメーション呼出ã—を複数変更"
+msgstr "アニメーション呼ã³å‡ºã—を複数変更"
#: editor/animation_track_editor.cpp
msgid "Change Animation Length"
@@ -227,7 +229,7 @@ msgstr "3Dトランスフォームトラック"
#: editor/animation_track_editor.cpp
msgid "Call Method Track"
-msgstr "メソッド呼出ã—トラック"
+msgstr "メソッド呼ã³å‡ºã—トラック"
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
@@ -406,8 +408,8 @@ msgstr "アニメーション"
#: editor/animation_track_editor.cpp
msgid "AnimationPlayer can't animate itself, only other players."
msgstr ""
-"アニメーションプレイヤーã¯ä»–ã®ãƒ—レイヤーã ã‘をアニメーション化ã™ã‚‹ã“ã¨ã¯ã§ã"
-"ã¾ã›ã‚“。"
+"AnimationPlayerã¯è‡ªåˆ†è‡ªèº«ã‚’アニメーションã™ã‚‹ã“ã¨ã¯ã§ããšã€ä»–ã®ãƒ—レイヤーをア"
+"ニメーションã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
@@ -452,8 +454,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
-"アニメーショントラックã¯ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ—レイヤーノードã®ã¿æŒ‡å®šã§ãã¾ã™ã€‚"
+msgstr "アニメーショントラックã¯AnimationPlayerノードã®ã¿æŒ‡å®šã§ãã¾ã™ã€‚"
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
@@ -546,7 +547,8 @@ msgstr "警告:インãƒãƒ¼ãƒˆã—ãŸã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’編集ã—ã¦ã„ã¾ã
#: editor/animation_track_editor.cpp
msgid "Select an AnimationPlayer node to create and edit animations."
msgstr ""
-"アニメーションを作ã£ã¦ç·¨é›†ã™ã‚‹ã«ã¯ã€ AnimationPlayer ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„。"
+"アニメーションを作ã£ã¦ç·¨é›†ã™ã‚‹ã«ã¯ã€ AnimationPlayer ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠžã—ã¦ãã ã•"
+"ã„。"
#: editor/animation_track_editor.cpp
msgid "Only show tracks from nodes selected in tree."
@@ -643,9 +645,8 @@ msgid "Use Bezier Curves"
msgstr "ベジェ曲線を使用"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Create RESET Track(s)"
-msgstr "トラックを貼り付ã‘"
+msgstr "RESETトラックを作æˆ"
#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
@@ -742,7 +743,7 @@ msgstr "行番å·:"
#: editor/code_editor.cpp
msgid "%d replaced."
-msgstr "%d ã‚’ç½®æ›ã—ã¾ã—ãŸã€‚"
+msgstr "%dä»¶ã‚’ç½®æ›ã—ã¾ã—ãŸã€‚"
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "%d match."
@@ -856,11 +857,11 @@ msgstr "除去"
#: editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr "呼出ã—引数を追加:"
+msgstr "呼ã³å‡ºã—引数を追加:"
#: editor/connections_dialog.cpp
msgid "Extra Call Arguments:"
-msgstr "追加ã®å‘¼å‡ºã—引数:"
+msgstr "追加ã®å‘¼ã³å‡ºã—引数:"
#: editor/connections_dialog.cpp
msgid "Receiver Method:"
@@ -1034,7 +1035,7 @@ msgid ""
"Changes will only take effect when reloaded."
msgstr ""
"シーン '%s' ã¯ç¾åœ¨ç·¨é›†ä¸­ã§ã™ã€‚\n"
-"変更ã¯å†èª­è¾¼ã¿å¾Œã«å映ã•れã¾ã™ã€‚"
+"変更ã¯å†èª­ã¿è¾¼ã¿å¾Œã«å映ã•れã¾ã™ã€‚"
#: editor/dependency_editor.cpp
msgid ""
@@ -1042,7 +1043,7 @@ msgid ""
"Changes will only take effect when reloaded."
msgstr ""
"リソース '%s' ã¯ä½¿ç”¨ä¸­ã§ã™ã€‚\n"
-"変更ã¯å†èª­è¾¼ã¿å¾Œã«å映ã•れã¾ã™ã€‚"
+"変更ã¯å†èª­ã¿è¾¼ã¿å¾Œã«å映ã•れã¾ã™ã€‚"
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -1068,7 +1069,7 @@ msgstr "修復"
#: editor/dependency_editor.cpp
msgid "Dependency Editor"
-msgstr "ä¾å­˜é–¢ä¿‚エディタ"
+msgstr "ä¾å­˜é–¢ä¿‚エディター"
#: editor/dependency_editor.cpp
msgid "Search Replacement Resource:"
@@ -1117,11 +1118,11 @@ msgstr "除去ä¸å¯:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
-msgstr "読込ã¿ã‚¨ãƒ©ãƒ¼:"
+msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:"
#: editor/dependency_editor.cpp
msgid "Load failed due to missing dependencies:"
-msgstr "ä¾å­˜é–¢ä¿‚ãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚ã€ã‚·ãƒ¼ãƒ³ã‚’読込ã‚ã¾ã›ã‚“:"
+msgstr "ä¾å­˜é–¢ä¿‚ãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚ã€èª­ã¿è¾¼ã‚ã¾ã›ã‚“:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1292,7 +1293,7 @@ msgstr "アセットã®å†…容 \"%s\" - %d 個ã®ãƒ•ァイルãŒãƒ—ロジェクãƒ
#: editor/editor_asset_installer.cpp
msgid "Contents of asset \"%s\" - No files conflict with your project:"
-msgstr "アセットã®å†…容 \"%s\" - %d 個ã®ãƒ•ァイルãŒãƒ—ロジェクトã¨ç«¶åˆã—ã¾ã™:"
+msgstr "アセットã®å†…容 \"%s\" - プロジェクトã¨ç«¶åˆã™ã‚‹ãƒ•ァイルã¯ã‚りã¾ã›ã‚“:"
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
@@ -1304,7 +1305,7 @@ msgstr "次ã®ãƒ•ァイルをアセット \"%s\" ã‹ã‚‰å±•é–‹ã§ãã¾ã›ã‚“ã§ã
#: editor/editor_asset_installer.cpp
msgid "(and %s more files)"
-msgstr "(ãŠã‚ˆã³ %s 個ã®ãƒ•ァイル)"
+msgstr "(ã•ら㫠%s個ã®ãƒ•ァイル)"
#: editor/editor_asset_installer.cpp
msgid "Asset \"%s\" installed successfully!"
@@ -1468,11 +1469,11 @@ msgstr "æ–°è¦ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒã‚¹ã‚’ã“ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã«è¿½åŠ ã™ã‚‹ã€‚"
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
-msgstr "読込ã¿"
+msgstr "読ã¿è¾¼ã¿"
#: editor/editor_audio_buses.cpp
msgid "Load an existing Bus Layout."
-msgstr "既存ã®ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’読込む。"
+msgstr "既存ã®ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’読ã¿è¾¼ã‚€ã€‚"
#: editor/editor_audio_buses.cpp
msgid "Save As"
@@ -1484,11 +1485,11 @@ msgstr "ã“ã®ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’ファイルã«ä¿å­˜ã€‚"
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
msgid "Load Default"
-msgstr "デフォルトを読込む"
+msgstr "デフォルトを読ã¿è¾¼ã‚€"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr "デフォルトã®ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’読込ã¿ã¾ã™ã€‚"
+msgstr "デフォルトã®ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’読ã¿è¾¼ã‚€ã€‚"
#: editor/editor_audio_buses.cpp
msgid "Create a new Bus Layout."
@@ -1508,7 +1509,7 @@ msgstr "既存ã®ã‚¨ãƒ³ã‚¸ãƒ³ã‚¯ãƒ©ã‚¹åã¨é‡è¤‡ã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。"
#: editor/editor_autoload_settings.cpp
msgid "Must not collide with an existing built-in type name."
-msgstr "既存ã®çµ„è¾¼ã¿åž‹åã¨é‡è¤‡ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。"
+msgstr "既存ã®çµ„ã¿è¾¼ã¿åž‹åã¨é‡è¤‡ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。"
#: editor/editor_autoload_settings.cpp
msgid "Must not collide with an existing global constant name."
@@ -1520,23 +1521,23 @@ msgstr "キーワードã¯è‡ªå‹•ロードåã¨ã—ã¦ä½¿ç”¨ã§ãã¾ã›ã‚“。"
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
-msgstr "自動読込㿠'%s' ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ï¼"
+msgstr "自動読ã¿è¾¼ã¿ '%s' ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ï¼"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
-msgstr "自動読込ã¿ã®åå‰å¤‰æ›´"
+msgstr "自動読ã¿è¾¼ã¿ã®åå‰å¤‰æ›´"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
-msgstr "グローãƒãƒ«ã®è‡ªå‹•読込ã¿ã‚’オン / オフ"
+msgstr "グローãƒãƒ«ã®è‡ªå‹•読ã¿è¾¼ã¿ã‚’オン / オフ"
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
-msgstr "自動読込ã¿ã‚’移動"
+msgstr "自動読ã¿è¾¼ã¿ã‚’移動"
#: editor/editor_autoload_settings.cpp
msgid "Remove Autoload"
-msgstr "自動読込ã¿ã‚’除去"
+msgstr "自動読ã¿è¾¼ã¿ã‚’除去"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
msgid "Enable"
@@ -1544,7 +1545,7 @@ msgstr "有効"
#: editor/editor_autoload_settings.cpp
msgid "Rearrange Autoloads"
-msgstr "自動読込ã¿ã®ä¸¦ã¹æ›¿ãˆ"
+msgstr "自動読ã¿è¾¼ã¿ã®ä¸¦ã¹æ›¿ãˆ"
#: editor/editor_autoload_settings.cpp
msgid "Can't add autoload:"
@@ -1560,7 +1561,7 @@ msgstr "%s ã¯ç„¡åйãªãƒ‘スã§ã™ã€‚リソースパス (res://) ã«å­˜åœ¨ã—ã
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr "自動読込ã¿ã‚’追加"
+msgstr "自動読ã¿è¾¼ã¿ã‚’追加"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
#: editor/editor_plugin_settings.cpp
@@ -1619,7 +1620,7 @@ msgstr "ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’é¸æŠž"
#: editor/filesystem_dock.cpp editor/project_manager.cpp
#: scene/gui/file_dialog.cpp
msgid "Create Folder"
-msgstr "フォルダを作æˆ"
+msgstr "フォルダーを作æˆ"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
@@ -1631,7 +1632,7 @@ msgstr "åå‰:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
-msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+msgstr "フォルダーを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: editor/editor_dir_dialog.cpp
msgid "Choose"
@@ -1729,11 +1730,11 @@ msgstr ""
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
-msgstr "3Dエディタ"
+msgstr "3Dエディター"
#: editor/editor_feature_profile.cpp
msgid "Script Editor"
-msgstr "スクリプトエディタ"
+msgstr "スクリプトエディター"
#: editor/editor_feature_profile.cpp
msgid "Asset Library"
@@ -1761,7 +1762,7 @@ msgstr "3Dシーンã®è¡¨ç¤ºã¨ç·¨é›†ãŒã§ãã¾ã™ã€‚"
#: editor/editor_feature_profile.cpp
msgid "Allows to edit scripts using the integrated script editor."
-msgstr "内臓ã®ã‚¹ã‚¯ãƒªãƒ—トエディタを使用ã—ã¦ã‚¹ã‚¯ãƒªãƒ—トを編集ã§ãã¾ã™ã€‚"
+msgstr "内臓ã®ã‚¹ã‚¯ãƒªãƒ—トエディターを使用ã—ã¦ã‚¹ã‚¯ãƒªãƒ—トを編集ã§ãã¾ã™ã€‚"
#: editor/editor_feature_profile.cpp
msgid "Provides built-in access to the Asset Library."
@@ -1809,11 +1810,11 @@ msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile with this name already exists."
-msgstr "ã“ã®åå‰ã®ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚"
+msgstr "ã“ã®åå‰ã®ãƒ—ロファイルã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
#: editor/editor_feature_profile.cpp
msgid "(Editor Disabled, Properties Disabled)"
-msgstr "(エディタ無効ã€ãƒ—ロパティ無効)"
+msgstr "(エディター無効ã€ãƒ—ロパティ無効)"
#: editor/editor_feature_profile.cpp
msgid "(Properties Disabled)"
@@ -1821,7 +1822,7 @@ msgstr "(プロパティ無効)"
#: editor/editor_feature_profile.cpp
msgid "(Editor Disabled)"
-msgstr "(エディタ無効)"
+msgstr "(エディター無効)"
#: editor/editor_feature_profile.cpp
msgid "Class Options:"
@@ -1829,7 +1830,7 @@ msgstr "クラスオプション:"
#: editor/editor_feature_profile.cpp
msgid "Enable Contextual Editor"
-msgstr "コンテキストエディタを有効ã«ã™ã‚‹"
+msgstr "コンテキストエディターを有効ã«ã™ã‚‹"
#: editor/editor_feature_profile.cpp
msgid "Class Properties:"
@@ -1924,19 +1925,19 @@ msgstr "プロファイルã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/editor_feature_profile.cpp
msgid "Manage Editor Feature Profiles"
-msgstr "エディタ機能ã®ãƒ—ロファイルã®ç®¡ç†"
+msgstr "エディター機能ã®ãƒ—ロファイルã®ç®¡ç†"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
-msgstr "ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠž"
+msgstr "ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠž"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File exists, overwrite?"
-msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ"
+msgstr "ファイルãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select This Folder"
-msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠž"
+msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠž"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
@@ -1953,12 +1954,12 @@ msgstr "ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§è¡¨ç¤º"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
-msgstr "æ–°è¦ãƒ•ォルダ..."
+msgstr "æ–°è¦ãƒ•ォルダー..."
#: editor/editor_file_dialog.cpp editor/find_in_files.cpp
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Refresh"
-msgstr "å†èª­è¾¼"
+msgstr "å†èª­ã¿è¾¼ã¿"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
@@ -2018,7 +2019,7 @@ msgstr "ãŠæ°—ã«å…¥ã‚Šã«ã™ã‚‹ / ã—ãªã„"
#: editor/editor_file_dialog.cpp
msgid "Toggle Mode"
-msgstr "モード切替ãˆ"
+msgstr "モード切り替ãˆ"
#: editor/editor_file_dialog.cpp
msgid "Focus Path"
@@ -2034,15 +2035,15 @@ msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’下ã¸"
#: editor/editor_file_dialog.cpp
msgid "Go to previous folder."
-msgstr "å‰ã®ãƒ•ォルダã¸ç§»å‹•ã™ã‚‹ã€‚"
+msgstr "å‰ã®ãƒ•ォルダーã¸ç§»å‹•ã™ã‚‹ã€‚"
#: editor/editor_file_dialog.cpp
msgid "Go to next folder."
-msgstr "次ã®ãƒ•ォルダã¸ç§»å‹•ã™ã‚‹ã€‚"
+msgstr "次ã®ãƒ•ォルダーã¸ç§»å‹•ã™ã‚‹ã€‚"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Go to parent folder."
-msgstr "親フォルダã¸ç§»å‹•ã™ã‚‹ã€‚"
+msgstr "親フォルダーã¸ç§»å‹•ã™ã‚‹ã€‚"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Refresh files."
@@ -2050,7 +2051,7 @@ msgstr "ファイルã®ä¸€è¦§ã‚’リフレッシュã™ã‚‹ã€‚"
#: editor/editor_file_dialog.cpp
msgid "(Un)favorite current folder."
-msgstr "ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’ãŠæ°—ã«å…¥ã‚Šã«ã™ã‚‹ / ã—ãªã„。"
+msgstr "ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’ãŠæ°—ã«å…¥ã‚Šã«ã™ã‚‹ / ã—ãªã„。"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Toggle the visibility of hidden files."
@@ -2086,8 +2087,8 @@ msgid ""
"There are multiple importers for different types pointing to file %s, import "
"aborted"
msgstr ""
-"ファイル %s ã‚’ãƒã‚¤ãƒ³ãƒˆã—ã¦ã„ã‚‹ç•°ãªã‚‹ã‚¿ã‚¤ãƒ—ã®è¤‡æ•°ã®ã‚¤ãƒ³ãƒãƒ¼ã‚¿ãŒã‚りã¾ã™ã€‚イン"
-"ãƒãƒ¼ãƒˆã¯ä¸­æ–­ã•れã¾ã—ãŸ"
+"ファイル %s ã‚’ãƒã‚¤ãƒ³ãƒˆã—ã¦ã„ã‚‹ç•°ãªã‚‹ã‚¿ã‚¤ãƒ—ã®è¤‡æ•°ã®ã‚¤ãƒ³ãƒãƒ¼ã‚¿ãƒ¼ãŒã‚りã¾ã™ã€‚イ"
+"ンãƒãƒ¼ãƒˆã¯ä¸­æ–­ã•れã¾ã—ãŸ"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
@@ -2294,11 +2295,11 @@ msgstr "%s/s"
#: editor/editor_network_profiler.cpp
msgid "Down"
-msgstr "下"
+msgstr "下り"
#: editor/editor_network_profiler.cpp
msgid "Up"
-msgstr "上"
+msgstr "上り"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
msgid "Node"
@@ -2306,19 +2307,19 @@ msgstr "ノード"
#: editor/editor_network_profiler.cpp
msgid "Incoming RPC"
-msgstr "RPC入力"
+msgstr "RPCå—ä¿¡"
#: editor/editor_network_profiler.cpp
msgid "Incoming RSET"
-msgstr "入力RSET"
+msgstr "RSETå—ä¿¡"
#: editor/editor_network_profiler.cpp
msgid "Outgoing RPC"
-msgstr "出力RPC"
+msgstr "RPCé€ä¿¡"
#: editor/editor_network_profiler.cpp
msgid "Outgoing RSET"
-msgstr "出力RSET"
+msgstr "RSETé€ä¿¡"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "New Window"
@@ -2330,13 +2331,13 @@ msgid ""
"Update Continuously is enabled, which can increase power usage. Click to "
"disable it."
msgstr ""
-"エディタウィンドウã®å†æç”»æ™‚ã«ã‚¹ãƒ”ンã—ã¾ã™ã€‚\n"
+"エディターウィンドウã®å†æç”»æ™‚ã«ã‚¹ãƒ”ンã—ã¾ã™ã€‚\n"
"ç¶™ç¶šçš„ã«æ›´æ–° ãŒæœ‰åйã«ãªã£ã¦ãŠã‚Šã€é›»åŠ›æ¶ˆè²»é‡ãŒå¢—加ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚クリッ"
"クã§ç„¡åŠ¹åŒ–ã—ã¾ã™ã€‚"
#: editor/editor_node.cpp
msgid "Spins when the editor window redraws."
-msgstr "エディタ ウィンドウã®å†æç”»æ™‚ã«ã‚¹ãƒ”ンã—ã¾ã™ã€‚"
+msgstr "エディター ウィンドウã®å†æç”»æ™‚ã«ã‚¹ãƒ”ンã—ã¾ã™ã€‚"
#: editor/editor_node.cpp
msgid "Imported resources can't be saved."
@@ -2357,8 +2358,8 @@ 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..."
@@ -2366,7 +2367,7 @@ msgstr "リソースを別åã§ä¿å­˜..."
#: editor/editor_node.cpp
msgid "Can't open file for writing:"
-msgstr "書込むファイルを開ã‘ã¾ã›ã‚“:"
+msgstr "書ã込むファイルを開ã‘ã¾ã›ã‚“:"
#: editor/editor_node.cpp
msgid "Requested file format unknown:"
@@ -2391,11 +2392,11 @@ msgstr "ファイル '%s' ãŒäºˆæœŸã›ãšçµ‚了ã—ã¾ã—ãŸã€‚"
#: editor/editor_node.cpp
msgid "Missing '%s' or its dependencies."
-msgstr "'%s' ã€ã¾ãŸã¯ä¾å­˜é–¢ä¿‚ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+msgstr "'%s' ã¾ãŸã¯ãã®ä¾å­˜é–¢ä¿‚ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
#: editor/editor_node.cpp
msgid "Error while loading '%s'."
-msgstr "'%s' ã®èª­è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
+msgstr "'%s' ã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
#: editor/editor_node.cpp
msgid "Saving Scene"
@@ -2407,7 +2408,7 @@ msgstr "分æžä¸­"
#: editor/editor_node.cpp
msgid "Creating Thumbnail"
-msgstr "サムãƒã‚¤ãƒ«ã‚’作æˆ"
+msgstr "サムãƒã‚¤ãƒ«ã‚’作æˆä¸­"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
@@ -2429,13 +2430,21 @@ 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 "マージã™ã‚‹ãƒ¡ãƒƒã‚·ãƒ¥ãƒ©ã‚¤ãƒ–ラリーãŒèª­è¾¼ã‚ã¾ã›ã‚“ï¼"
+msgstr "マージã™ã‚‹ãƒ¡ãƒƒã‚·ãƒ¥ãƒ©ã‚¤ãƒ–ラリーãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“ï¼"
#: editor/editor_node.cpp
msgid "Error saving MeshLibrary!"
@@ -2443,7 +2452,7 @@ msgstr "メッシュライブラリーã®ä¿å­˜ã‚¨ãƒ©ãƒ¼ï¼"
#: editor/editor_node.cpp
msgid "Can't load TileSet for merging!"
-msgstr "マージã™ã‚‹ã‚¿ã‚¤ãƒ«ã‚»ãƒƒãƒˆãŒèª­è¾¼ã‚ã¾ã›ã‚“ï¼"
+msgstr "マージã™ã‚‹ã‚¿ã‚¤ãƒ«ã‚»ãƒƒãƒˆãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“ï¼"
#: editor/editor_node.cpp
msgid "Error saving TileSet!"
@@ -2454,8 +2463,8 @@ msgid ""
"An error occurred while trying to save the editor layout.\n"
"Make sure the editor's user data path is writable."
msgstr ""
-"エディタã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’ä¿å­˜ã—よã†ã¨ã—ãŸéš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\n"
-"エディタã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ç”¨ãƒ‘ã‚¹ãŒæ›¸ãè¾¼ã¿å¯èƒ½ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
+"エディターã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’ä¿å­˜ã—よã†ã¨ã—ãŸéš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\n"
+"エディターã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ç”¨ãƒ‘ã‚¹ãŒæ›¸ãè¾¼ã¿å¯èƒ½ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
#: editor/editor_node.cpp
msgid ""
@@ -2463,7 +2472,7 @@ msgid ""
"To restore the Default layout to its base settings, use the Delete Layout "
"option and delete the Default layout."
msgstr ""
-"既定ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãŒä¸Šæ›¸ãã•れã¾ã—ãŸã€‚\n"
+"既定ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãŒä¸Šæ›¸ãã•れã¾ã—ãŸã€‚\n"
"既定ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’åŸºæœ¬è¨­å®šã«æˆ»ã™ã«ã¯ã€[レイアウトã®å‰Šé™¤] オプションを使用ã—"
"ã¦ã€æ—¢å®šã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’削除ã—ã¾ã™ã€‚"
@@ -2565,6 +2574,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "é–‰ã˜ã‚‹å‰ã«ã€'%s' ã¸ã®å¤‰æ›´ã‚’ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr "%s ã¯å­˜åœ¨ã—ãªããªã‚Šã¾ã—ãŸï¼æ–°ã—ã„ä¿å­˜å…ˆã‚’指定ã—ã¦ãã ã•ã„。"
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2610,29 +2623,27 @@ msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•れã¦ã„ã¾ã›ã‚“。ãれã§ã‚‚é–‹ãã¾
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "ãƒžã‚¦ã‚¹ãƒœã‚¿ãƒ³ãŒæŠ¼ã•れã¦ã„ã‚‹é–“ã¯å…ƒã«æˆ»ã›ã¾ã›ã‚“。"
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "å…ƒã«æˆ»ã™ã‚‚ã®ãŒã‚りã¾ã›ã‚“。"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "å…ƒã«æˆ»ã™"
+msgstr "å…ƒã«æˆ»ã™: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "ãƒžã‚¦ã‚¹ãƒœã‚¿ãƒ³ãŒæŠ¼ã•れã¦ã„ã‚‹é–“ã¯ã‚„り直ã›ã¾ã›ã‚“。"
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "やり直ã™ã‚‚ã®ãŒã‚りã¾ã›ã‚“。"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "やり直ã™"
+msgstr "やり直ã™: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2664,7 +2675,7 @@ msgstr "ã¯ã„"
#: editor/editor_node.cpp
msgid "Exit the editor?"
-msgstr "エディタを終了ã—ã¾ã™ã‹ï¼Ÿ"
+msgstr "エディターを終了ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
@@ -2713,7 +2724,7 @@ msgstr "アドオンプラグインã®ã‚¹ã‚¯ãƒªãƒ—トフィールド㌠'%s' ã§
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s'."
-msgstr "パス '%s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読込ã‚ã¾ã›ã‚“。"
+msgstr "パス '%s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã‚ã¾ã›ã‚“。"
#: editor/editor_node.cpp
msgid ""
@@ -2729,14 +2740,14 @@ msgstr ""
msgid ""
"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
-"パス '%s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読込ã‚ã¾ã›ã‚“。基底型㌠EditorPlugin ã§ã¯ã‚"
-"りã¾ã›ã‚“。"
+"パス '%s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã‚ã¾ã›ã‚“。基底型㌠EditorPlugin ã§ã¯"
+"ã‚りã¾ã›ã‚“。"
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
-"パス '%s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読込ã‚ã¾ã›ã‚“。スクリプトãŒãƒ„ールモードã§ã¯"
-"ã‚りã¾ã›ã‚“。"
+"パス '%s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã‚ã¾ã›ã‚“。スクリプトãŒãƒ„ールモードã§"
+"ã¯ã‚りã¾ã›ã‚“。"
#: editor/editor_node.cpp
msgid ""
@@ -2751,7 +2762,7 @@ 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 ""
-"シーン読込ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚プロジェクトパス内ã«ã‚ã‚‹å¿…è¦ãŒã‚りã¾"
+"シーン読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚プロジェクトパス内ã«ã‚ã‚‹å¿…è¦ãŒã‚りã¾"
"ã™ã€‚ã“ã®ã‚·ãƒ¼ãƒ³ã‚’é–‹ãã«ã¯ 'インãƒãƒ¼ãƒˆ' を使用ã—ã€ãƒ—ロジェクトパス内ã«ä¿å­˜ã—ã¦"
"ãã ã•ã„。"
@@ -2839,15 +2850,15 @@ msgstr "シーンタブを切り替ãˆ"
#: editor/editor_node.cpp
msgid "%d more files or folders"
-msgstr "%d 以上ã®ãƒ•ァイルã¨ãƒ•ォルダ"
+msgstr "ã•ら㫠%d個ã®ãƒ•ァイルã¨ãƒ•ォルダー"
#: editor/editor_node.cpp
msgid "%d more folders"
-msgstr "%d 以上ã®ãƒ•ォルダ"
+msgstr "ã•ら㫠%d個ã®ãƒ•ォルダー"
#: editor/editor_node.cpp
msgid "%d more files"
-msgstr "%d 以上ã®ãƒ•ァイル"
+msgstr "ã•ら㫠%d個ã®ãƒ•ァイル"
#: editor/editor_node.cpp
msgid "Dock Position"
@@ -2914,10 +2925,6 @@ msgid "Save Scene"
msgstr "シーンをä¿å­˜"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "ã™ã¹ã¦ã®ã‚·ãƒ¼ãƒ³ã‚’ä¿å­˜"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "変æ›..."
@@ -2974,7 +2981,7 @@ msgstr "Androidビルドテンプレートã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«..."
#: editor/editor_node.cpp
msgid "Open Project Data Folder"
-msgstr "プロジェクトã®ãƒ‡ãƒ¼ã‚¿ãƒ•ォルダを開ã"
+msgstr "プロジェクトã®ãƒ‡ãƒ¼ã‚¿ãƒ•ォルダーを開ã"
#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
@@ -3015,7 +3022,7 @@ msgstr ""
"ã‚°ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\n"
"ã“ã®ã‚ªãƒ—ションã¯ã€ãƒªãƒ¢ãƒ¼ãƒˆãƒ‡ãƒãƒƒã‚°ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã‚’æ„図ã—ã¦ã„ã¾ã™ (通常ã¯ãƒ¢ãƒ"
"イルデãƒã‚¤ã‚¹ã«ãŠã„ã¦)。\n"
-"ローカル㧠GDScript デãƒãƒƒã‚¬ã‚’使用ã™ã‚‹ãŸã‚ã«ã¯æœ‰åйã«ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。"
+"ローカル㧠GDScript デãƒãƒƒã‚¬ãƒ¼ã‚’使用ã™ã‚‹ãŸã‚ã«ã¯æœ‰åйã«ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。"
#: editor/editor_node.cpp
msgid "Small Deploy with Network Filesystem"
@@ -3032,8 +3039,8 @@ msgid ""
msgstr ""
"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€Androidã¸ã®ãƒ¯ãƒ³ã‚¯ãƒªãƒƒã‚¯ãƒ»ãƒ‡ãƒ—ロイ時ã«ãƒ—ロジェク"
"ト用データ無ã—ã®å®Ÿè¡Œå¯èƒ½ãƒ•ァイルã®ã¿ã‚’エクスãƒãƒ¼ãƒˆã—ã¾ã™ã€‚\n"
-"ファイルシステムã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ã«ã‚ˆã£ã¦ãƒ—ロジェクトã‹ã‚‰ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’通ã˜ã¦ä¾›çµ¦"
-"ã•れã¾ã™ã€‚\n"
+"ファイルシステムã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã«ã‚ˆã£ã¦ãƒ—ロジェクトã‹ã‚‰ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’通ã˜ã¦ä¾›"
+"給ã•れã¾ã™ã€‚\n"
"Androidã§ã¯ã€ãƒ‡ãƒ—ロイã¯USBケーブルã®åˆ©ç”¨ã§ã•らã«é«˜é€Ÿã«ãªã‚Šã¾ã™ã€‚ã“ã®ã‚ªãƒ—ショ"
"ンã¯å¤§ããªã‚¢ã‚»ãƒƒãƒˆã®ã‚るプロジェクトã§ãƒ†ã‚¹ãƒˆã‚’高速化ã§ãã¾ã™ã€‚"
@@ -3072,8 +3079,8 @@ msgid ""
"When used remotely on a device, this is more efficient when the network "
"filesystem option is enabled."
msgstr ""
-"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ã‚¨ãƒ‡ã‚£ã‚¿ã‹ã‚‰ã‚·ãƒ¼ãƒ³ã«åŠ ãˆã‚‰ã‚ŒãŸå¤‰æ›´ãŒã€å®Ÿè¡Œä¸­ã®"
-"プロジェクトã«å映ã•れるよã†ã«ãªã‚Šã¾ã™ã€‚\n"
+"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‹ã‚‰ã‚·ãƒ¼ãƒ³ã«åŠ ãˆã‚‰ã‚ŒãŸå¤‰æ›´ãŒã€å®Ÿè¡Œä¸­"
+"ã®ãƒ—ロジェクトã«å映ã•れるよã†ã«ãªã‚Šã¾ã™ã€‚\n"
"リモートã®ãƒ‡ãƒã‚¤ã‚¹ä¸Šã§ä½¿ç”¨ã™ã‚‹å ´åˆã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ•ァイルシステムã®ã‚ªãƒ—ション"
"も有効ã§ã‚れã°ã‚ˆã‚ŠåŠ¹çŽ‡çš„ã«ãªã‚Šã¾ã™ã€‚"
@@ -3095,15 +3102,15 @@ msgstr ""
#: editor/editor_node.cpp editor/script_create_dialog.cpp
msgid "Editor"
-msgstr "エディタ"
+msgstr "エディター"
#: editor/editor_node.cpp
msgid "Editor Settings..."
-msgstr "エディタ設定..."
+msgstr "エディター設定..."
#: editor/editor_node.cpp
msgid "Editor Layout"
-msgstr "エディタレイアウト"
+msgstr "エディターレイアウト"
#: editor/editor_node.cpp
msgid "Take Screenshot"
@@ -3111,7 +3118,8 @@ msgstr "スクリーンショットを撮る"
#: editor/editor_node.cpp
msgid "Screenshots are stored in the Editor Data/Settings Folder."
-msgstr "スクリーンショットã¯Editor Data / Settingsフォルダã«ä¿å­˜ã•れã¦ã„ã¾ã™ã€‚"
+msgstr ""
+"スクリーンショット㯠エディターã®ãƒ‡ãƒ¼ã‚¿ / 設定フォルダー ã«ä¿å­˜ã•れã¦ã„ã¾ã™ã€‚"
#: editor/editor_node.cpp
msgid "Toggle Fullscreen"
@@ -3123,19 +3131,19 @@ msgstr "システムコンソールを有効化 / 無効化"
#: editor/editor_node.cpp
msgid "Open Editor Data/Settings Folder"
-msgstr "エディタã®ãƒ‡ãƒ¼ã‚¿ / 設定フォルダを開ã"
+msgstr "エディターã®ãƒ‡ãƒ¼ã‚¿ / 設定フォルダーを開ã"
#: editor/editor_node.cpp
msgid "Open Editor Data Folder"
-msgstr "エディタã®ãƒ‡ãƒ¼ã‚¿ãƒ•ォルダを開ã"
+msgstr "エディターã®ãƒ‡ãƒ¼ã‚¿ãƒ•ォルダーを開ã"
#: editor/editor_node.cpp
msgid "Open Editor Settings Folder"
-msgstr "エディタ設定ã®ãƒ•ォルダを開ã"
+msgstr "エディター設定ã®ãƒ•ォルダーを開ã"
#: editor/editor_node.cpp
msgid "Manage Editor Features..."
-msgstr "エディタ機能ã®ç®¡ç†..."
+msgstr "エディター機能ã®ç®¡ç†..."
#: editor/editor_node.cpp
msgid "Manage Export Templates..."
@@ -3215,7 +3223,7 @@ msgstr "カスタムシーンを実行"
#: editor/editor_node.cpp
msgid "Changing the video driver requires restarting the editor."
-msgstr "ビデオドライãƒã®å¤‰æ›´ã«ã¯ã‚¨ãƒ‡ã‚£ã‚¿ã®å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚"
+msgstr "ビデオドライãƒãƒ¼ã®å¤‰æ›´ã«ã¯ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã®å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚"
#: editor/editor_node.cpp editor/project_settings_editor.cpp
#: editor/settings_config_dialog.cpp
@@ -3240,7 +3248,7 @@ msgstr "ファイルシステム"
#: editor/editor_node.cpp
msgid "Inspector"
-msgstr "インスペクタ"
+msgstr "インスペクター"
#: editor/editor_node.cpp
msgid "Expand Bottom Panel"
@@ -3283,12 +3291,12 @@ msgid ""
"preset."
msgstr ""
"ã“ã®æ“作㯠\"res://android/build\" ã«ã‚½ãƒ¼ã‚¹ãƒ†ãƒ³ãƒ—レートをインストールã—ã€"
-"Androidã®ã‚«ã‚¹ã‚¿ãƒ ãƒ“ルドを設定ã—ã¾ã™ã€‚\n"
+"Androidã®ã‚«ã‚¹ã‚¿ãƒ ãƒ“ルドã®è¨­å®šãŒãƒ—ロジェクトã«ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã•れã¾ã™ã€‚\n"
"後ã‹ã‚‰è¨­å®šã«å¤‰æ›´ã‚’加ãˆãŸã‚Šã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆæ™‚ã«ã‚«ã‚¹ã‚¿ãƒ APKをビルドã§ãã¾ã™ (モ"
-"ジュールを追加ã™ã‚‹ã€AndroidManifest.xmlを変更ã™ã‚‹ç­‰)。\n"
-"APKビルドã®åˆæœŸè¨­å®šã®ä»£ã‚りã«ã‚«ã‚¹ã‚¿ãƒ ãƒ“ルド設定を使ã†ãŸã‚ã«ã¯ã€Androidã®ã‚¨ã‚¯"
-"スãƒãƒ¼ãƒˆè¨­å®šã®ã€ŒUse Custom Build (カスタムビルドを使用ã™ã‚‹)ã€ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæœ‰"
-"効化ã•れã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+"ジュールを追加ã™ã‚‹ã€AndroidManifest.xmlを変更ã™ã‚‹ãªã©)。\n"
+"ビルド済ã¿APKã®ä»£ã‚りã«ã‚«ã‚¹ã‚¿ãƒ ãƒ“ルドをã™ã‚‹ãŸã‚ã«ã¯ã€Androidã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆè¨­"
+"定ã®ã€ŒUse Custom Build (カスタムビルドを使用ã™ã‚‹)ã€ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæœ‰åŠ¹åŒ–ã•れã¦"
+"ã„ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
#: editor/editor_node.cpp
msgid ""
@@ -3315,12 +3323,11 @@ msgstr "ライブラリã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/editor_node.cpp
msgid "Merge With Existing"
-msgstr "既存ã®(ライブラリを)マージ"
+msgstr "既存ã®ã‚‚ã®ã¨ãƒžãƒ¼ã‚¸ã™ã‚‹"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "アニメーションã®ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォームを変更"
+msgstr "MeshInstanceã®ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォームをé©ç”¨"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3337,7 +3344,7 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Reload"
-msgstr "å†èª­è¾¼"
+msgstr "å†èª­ã¿è¾¼ã¿"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -3350,28 +3357,27 @@ msgstr "æ–°è¦ã®ç¶™æ‰¿"
#: editor/editor_node.cpp
msgid "Load Errors"
-msgstr "読込ã¿ã‚¨ãƒ©ãƒ¼"
+msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Select"
msgstr "é¸æŠž"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Select Current"
-msgstr "ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠž"
+msgstr "ç¾åœ¨ã®ã‚‚ã®ã‚’é¸æŠž"
#: editor/editor_node.cpp
msgid "Open 2D Editor"
-msgstr "2Dエディタを開ã"
+msgstr "2Dエディターを開ã"
#: editor/editor_node.cpp
msgid "Open 3D Editor"
-msgstr "3Dエディタを開ã"
+msgstr "3Dエディターを開ã"
#: editor/editor_node.cpp
msgid "Open Script Editor"
-msgstr "スクリプトエディタを開ã"
+msgstr "スクリプトエディターを開ã"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "Open Asset Library"
@@ -3379,11 +3385,11 @@ msgstr "アセットライブラリを開ã"
#: editor/editor_node.cpp
msgid "Open the next Editor"
-msgstr "次ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã"
+msgstr "次ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‚’é–‹ã"
#: editor/editor_node.cpp
msgid "Open the previous Editor"
-msgstr "å‰ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã"
+msgstr "å‰ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‚’é–‹ã"
#: editor/editor_node.h
msgid "Warning!"
@@ -3399,7 +3405,7 @@ msgstr "サブリソースã®ãƒªã‚¹ãƒˆã‚’é–‹ã。"
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
-msgstr "メッシュプレビューを作æˆ"
+msgstr "メッシュプレビューを作æˆä¸­"
#: editor/editor_plugin.cpp
msgid "Thumbnail..."
@@ -3489,7 +3495,7 @@ msgstr "時間"
#: editor/editor_profiler.cpp
msgid "Calls"
-msgstr "呼出ã—"
+msgstr "呼ã³å‡ºã—"
#: editor/editor_properties.cpp
msgid "Edit Text:"
@@ -3501,7 +3507,7 @@ msgstr "オン"
#: editor/editor_properties.cpp
msgid "Layer"
-msgstr "レイヤ"
+msgstr "レイヤー"
#: editor/editor_properties.cpp
msgid "Bit %d, value %d"
@@ -3517,7 +3523,7 @@ msgstr "割り当ã¦.."
#: editor/editor_properties.cpp
msgid "Invalid RID"
-msgstr "無効㪠RID"
+msgstr "無効ãªRID"
#: editor/editor_properties.cpp
msgid ""
@@ -3536,8 +3542,8 @@ msgid ""
msgstr ""
"ã“ã®ãƒªã‚½ãƒ¼ã‚¹ã¯ã‚·ãƒ¼ãƒ³ã«å¯¾ã—ã¦ãƒ­ãƒ¼ã‚«ãƒ«ã«è¨­å®šã•れã¦ã„ãªã„ãŸã‚ã€ViewportTextureã‚’"
"作æˆã§ãã¾ã›ã‚“。\n"
-"'シーンã«ãƒ­ãƒ¼ã‚«ãƒ« 'プロパティをオンã«ã—ã¦ãã ã•ã„(ノードã¾ã§ã‚’å«ã‚€ã™ã¹ã¦ã®ãƒª"
-"ソース)。"
+"'local to scene'プロパティをオンã«ã—ã¦ãã ã•ã„(ノードã¾ã§ã‚’å«ã‚€ã™ã¹ã¦ã®ãƒªã‚½ãƒ¼"
+"ス)。"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
@@ -3582,7 +3588,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "クイックロード"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -3634,7 +3640,7 @@ msgstr "ロジックを _run() メソッドã«è¨˜è¿°ã™ã‚‹ã€‚"
#: editor/editor_run_script.cpp
msgid "There is an edited scene already."
-msgstr "æ—¢ã«ç·¨é›†ã•れãŸã‚·ãƒ¼ãƒ³ãŒã‚りã¾ã™ã€‚"
+msgstr "ã™ã§ã«ç·¨é›†ã•れãŸã‚·ãƒ¼ãƒ³ãŒã‚りã¾ã™ã€‚"
#: editor/editor_run_script.cpp
msgid "Couldn't instance script:"
@@ -3674,7 +3680,7 @@ msgstr "ノードã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ:"
#: editor/export_template_manager.cpp
msgid "Open the folder containing these templates."
-msgstr "ã“れらã®ãƒ†ãƒ³ãƒ—レートãŒã‚るフォルダを開ãã¾ã™ã€‚"
+msgstr "ã“れらã®ãƒ†ãƒ³ãƒ—レートãŒã‚るフォルダーを開ãã¾ã™ã€‚"
#: editor/export_template_manager.cpp
msgid "Uninstall these templates."
@@ -3751,7 +3757,7 @@ msgstr "ミラーリストã®JSONã®è§£æžã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã“ã®å•題ã
#: editor/export_template_manager.cpp
msgid "Best available mirror"
-msgstr "æœ‰åŠ¹ãªæœ€è‰¯ã®ãƒŸãƒ©ãƒ¼"
+msgstr "利用å¯èƒ½ãªæœ€è‰¯ã®ãƒŸãƒ©ãƒ¼"
#: editor/export_template_manager.cpp
msgid ""
@@ -3855,11 +3861,12 @@ msgstr "エクスãƒãƒ¼ãƒˆ テンプレートã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ãŠã‚
#: editor/export_template_manager.cpp
msgid "Open Folder"
-msgstr "フォルダを開ã"
+msgstr "フォルダーを開ã"
#: editor/export_template_manager.cpp
msgid "Open the folder containing installed templates for the current version."
-msgstr "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ†ãƒ³ãƒ—レートãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れãŸãƒ•ォルダを開ãã¾ã™ã€‚"
+msgstr ""
+"ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ†ãƒ³ãƒ—レートãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れãŸãƒ•ォルダーを開ãã¾ã™ã€‚"
#: editor/export_template_manager.cpp
msgid "Uninstall"
@@ -3879,7 +3886,7 @@ msgstr "Webブラウザã§é–‹ã"
#: editor/export_template_manager.cpp
msgid "Copy Mirror URL"
-msgstr "エラーã®URLをコピー"
+msgstr "ミラーã®URLをコピー"
#: editor/export_template_manager.cpp
msgid "Download and Install"
@@ -3895,7 +3902,7 @@ msgstr ""
#: editor/export_template_manager.cpp
msgid "Official export templates aren't available for development builds."
-msgstr "å…¬å¼ã®æ›¸ã出ã—テンプレートã¯é–‹ç™ºç”¨ãƒ“ルドã®å ´åˆã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
+msgstr "å…¬å¼ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ†ãƒ³ãƒ—レートã¯é–‹ç™ºç”¨ãƒ“ルドã®å ´åˆã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
#: editor/export_template_manager.cpp
msgid "Install from File"
@@ -3936,7 +3943,7 @@ msgid ""
"You may experience a short editor freeze when they finish."
msgstr ""
"テンプレートã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯ç¶™ç¶šã•れã¾ã™ã€‚\n"
-"完了時ã«ã€çŸ­ã„間エディタãŒãƒ•リーズã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚"
+"完了時ã«ã€çŸ­ã„間エディターãŒãƒ•リーズã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3946,7 +3953,7 @@ msgstr "ãŠæ°—ã«å…¥ã‚Š"
msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"ステータス: ファイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚ファイルを修正ã—ã¦æ‰‹å‹•ã§å†ã‚¤"
-"ンãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„。"
+"ンãƒãƒ¼ãƒˆã—ã¦ãã ã•ã„。"
#: editor/filesystem_dock.cpp
msgid ""
@@ -3961,7 +3968,7 @@ msgstr "ルートã®ãƒªã‚½ãƒ¼ã‚¹ã¯ç§»å‹•/リãƒãƒ¼ãƒ ã§ãã¾ã›ã‚“。"
#: editor/filesystem_dock.cpp
msgid "Cannot move a folder into itself."
-msgstr "フォルダをフォルダ自身ã®ä¸­ã«ç§»å‹•ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+msgstr "フォルダーをフォルダー自身ã®ä¸­ã«ç§»å‹•ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
#: editor/filesystem_dock.cpp
msgid "Error moving:"
@@ -3985,7 +3992,7 @@ msgstr "åå‰ã«ä½¿ç”¨ã§ããªã„文字ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚"
#: editor/filesystem_dock.cpp
msgid "A file or folder with this name already exists."
-msgstr "åŒåã®ãƒ•ァイルã¾ãŸã¯ãƒ•ォルダãŒã‚りã¾ã™ã€‚"
+msgstr "åŒåã®ãƒ•ァイルã¾ãŸã¯ãƒ•ォルダーãŒã‚りã¾ã™ã€‚"
#: editor/filesystem_dock.cpp
msgid "Name contains invalid characters."
@@ -4000,7 +4007,7 @@ msgid ""
"\n"
"Do you wish to overwrite them?"
msgstr ""
-"以下ã®ãƒ•ァイルã¾ãŸã¯ãƒ•ォルダã¯ã€å¯¾è±¡ã®å ´æ‰€ '%s' ã«ã‚ã‚‹é …ç›®ã¨ç«¶åˆã—ã¦ã„ã¾"
+"以下ã®ãƒ•ァイルã¾ãŸã¯ãƒ•ォルダーã¯ã€å¯¾è±¡ã®å ´æ‰€ '%s' ã«ã‚ã‚‹é …ç›®ã¨ç«¶åˆã—ã¦ã„ã¾"
"ã™ã€‚\n"
"\n"
"%s\n"
@@ -4013,7 +4020,7 @@ msgstr "ファイルåを変更:"
#: editor/filesystem_dock.cpp
msgid "Renaming folder:"
-msgstr "フォルダåを変更:"
+msgstr "フォルダーåを変更:"
#: editor/filesystem_dock.cpp
msgid "Duplicating file:"
@@ -4021,7 +4028,7 @@ msgstr "ファイルを複製:"
#: editor/filesystem_dock.cpp
msgid "Duplicating folder:"
-msgstr "フォルダを複製:"
+msgstr "フォルダーを複製:"
#: editor/filesystem_dock.cpp
msgid "New Inherited Scene"
@@ -4125,11 +4132,11 @@ msgstr "検索ボックスã«ãƒ•ォーカス"
#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
-msgstr "å‰ã®ãƒ•ォルダ/ファイル"
+msgstr "å‰ã®ãƒ•ォルダー/ファイル"
#: editor/filesystem_dock.cpp
msgid "Next Folder/File"
-msgstr "次ã®ãƒ•ォルダ/ファイル"
+msgstr "次ã®ãƒ•ォルダー/ファイル"
#: editor/filesystem_dock.cpp
msgid "Re-Scan Filesystem"
@@ -4149,7 +4156,7 @@ msgid ""
"Please Wait..."
msgstr ""
"ファイルã®ã‚¹ã‚­ãƒ£ãƒ³ä¸­\n"
-"ã—ã°ã‚‰ããŠå¾…ã¡ä¸‹ã•ã„..."
+"ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..."
#: editor/filesystem_dock.cpp
msgid "Move"
@@ -4184,11 +4191,11 @@ msgstr "検索:"
#: editor/find_in_files.cpp
msgid "Folder:"
-msgstr "フォルダ:"
+msgstr "フォルダー:"
#: editor/find_in_files.cpp
msgid "Filters:"
-msgstr "フィルタ:"
+msgstr "フィルター:"
#: editor/find_in_files.cpp
msgid ""
@@ -4244,7 +4251,7 @@ msgstr "グループã‹ã‚‰é™¤åŽ»"
#: editor/groups_editor.cpp
msgid "Group name already exists."
-msgstr "グループåãŒæ—¢ã«ã‚りã¾ã™ã€‚"
+msgstr "グループåãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
#: editor/groups_editor.cpp
msgid "Invalid group name."
@@ -4264,12 +4271,12 @@ msgstr "グループ"
#: editor/groups_editor.cpp
msgid "Nodes Not in Group"
-msgstr "グループãŒãƒŽãƒ¼ãƒ‰ã‚りã¾ã›ã‚“"
+msgstr "グループ内ã«ãªã„ノード"
#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
#: editor/scene_tree_editor.cpp
msgid "Filter nodes"
-msgstr "ノードã®ãƒ•ィルタ"
+msgstr "ノードを絞り込む"
#: editor/groups_editor.cpp
msgid "Nodes in Group"
@@ -4281,7 +4288,7 @@ msgstr "空ã®ã‚°ãƒ«ãƒ¼ãƒ—ã¯è‡ªå‹•çš„ã«å‰Šé™¤ã•れã¾ã™ã€‚"
#: editor/groups_editor.cpp
msgid "Group Editor"
-msgstr "グループエディタ"
+msgstr "グループエディター"
#: editor/groups_editor.cpp
msgid "Manage Groups"
@@ -4289,7 +4296,7 @@ msgstr "グループã®ç®¡ç†"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
-msgstr "å˜ä¸€ã®ã‚·ãƒ¼ãƒ³ã¨ã—ã¦èª­è¾¼ã‚€"
+msgstr "å˜ä¸€ã®ã‚·ãƒ¼ãƒ³ã¨ã—ã¦èª­ã¿è¾¼ã‚€"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Animations"
@@ -4350,7 +4357,7 @@ msgstr "カスタムスクリプトã®å®Ÿè¡Œä¸­..."
#: editor/import/resource_importer_scene.cpp
msgid "Couldn't load post-import script:"
-msgstr "インãƒãƒ¼ãƒˆæ¸ˆã®ã‚¹ã‚¯ãƒªãƒ—トを読込ã‚ã¾ã›ã‚“ã§ã—ãŸï¼š"
+msgstr "インãƒãƒ¼ãƒˆæ¸ˆã®ã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸï¼š"
#: editor/import/resource_importer_scene.cpp
msgid "Invalid/broken script for post-import (check console):"
@@ -4371,11 +4378,11 @@ msgstr "ä¿å­˜ä¸­..."
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
-msgstr "インãƒãƒ¼ã‚¿ã‚’é¸æŠž"
+msgstr "インãƒãƒ¼ã‚¿ãƒ¼ã‚’é¸æŠž"
#: editor/import_defaults_editor.cpp
msgid "Importer:"
-msgstr "インãƒãƒ¼ã‚¿:"
+msgstr "インãƒãƒ¼ã‚¿ãƒ¼:"
#: editor/import_defaults_editor.cpp
msgid "Reset to Defaults"
@@ -4398,6 +4405,22 @@ msgid "Clear Default for '%s'"
msgstr "'%s' ã®ãƒ‡ãƒ•ォルトをクリア"
#: 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 ""
+"ã¾ã é©ç”¨ã•れã¦ã„ãªã„ä¿ç•™ä¸­ã®å¤‰æ›´ãŒã‚りã¾ã™ã€‚å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’クリックã™ã‚‹ã¨ã€ã‚¤"
+"ンãƒãƒ¼ãƒˆã®ã‚ªãƒ—ションã«åŠ ãˆãŸå¤‰æ›´ã‚’é©ç”¨ã—ã¾ã™ã€‚\n"
+"å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’クリックã›ãšã«ãƒ•ァイルシステム ドックã‹ã‚‰ä»–ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’é¸æŠžã™ã‚‹"
+"ã¨ã€ã‚¤ãƒ³ãƒãƒ¼ãƒˆã®ãƒ‰ãƒƒã‚¯ã§åŠ ãˆãŸå¤‰æ›´ã¯ç ´æ£„ã•れã¾ã™ã€‚"
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "åå‰ã‚’付ã‘ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆ:"
@@ -4406,16 +4429,12 @@ msgid "Preset"
msgstr "プリセット"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "シーンをä¿å­˜ã—ã€å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ã¦ã‹ã‚‰ã€å†èµ·å‹•ã—ã¾ã™"
#: editor/import_dock.cpp
msgid "Changing the type of an imported file requires editor restart."
-msgstr "インãƒãƒ¼ãƒˆã—ãŸãƒ•ァイルã®ã‚¿ã‚¤ãƒ—ã®å¤‰æ›´ã«ã¯ã‚¨ãƒ‡ã‚£ã‚¿ã®å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚"
+msgstr "インãƒãƒ¼ãƒˆã—ãŸãƒ•ァイルã®ã‚¿ã‚¤ãƒ—ã®å¤‰æ›´ã«ã¯ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã®å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚"
#: editor/import_dock.cpp
msgid ""
@@ -4426,7 +4445,7 @@ msgstr ""
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
-msgstr "リソースã®èª­è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
+msgstr "リソースã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: editor/inspector_dock.cpp
msgid "Copy Properties"
@@ -4446,7 +4465,7 @@ msgstr "æ–°è¦ãƒªã‚½ãƒ¼ã‚¹ã‚’メモリ上ã«ä½œæˆã—ã¦ç·¨é›†ã™ã‚‹ã€‚"
#: editor/inspector_dock.cpp
msgid "Load an existing resource from disk and edit it."
-msgstr "既存ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ディスクã‹ã‚‰èª­è¾¼ã¿ç·¨é›†ã™ã‚‹ã€‚"
+msgstr "既存ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ディスクã‹ã‚‰èª­ã¿è¾¼ã¿ç·¨é›†ã™ã‚‹ã€‚"
#: editor/inspector_dock.cpp
msgid "Save the currently edited resource."
@@ -4476,11 +4495,11 @@ msgstr "リソースを組ã¿è¾¼ã¿ã«ã™ã‚‹"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
-msgstr "履歴内ã®ç·¨é›†æ¸ˆã‚ªãƒ–ジェクトをå‰ã¸ã€‚"
+msgstr "履歴内ã®å‰ã«ç·¨é›†ã—ãŸã‚ªãƒ–ジェクトã«ç§»å‹•ã™ã‚‹ã€‚"
#: editor/inspector_dock.cpp
msgid "Go to the next edited object in history."
-msgstr "履歴内ã®ç·¨é›†æ¸ˆã‚ªãƒ–ジェクトを次ã¸ã€‚"
+msgstr "å±¥æ­´å†…ã®æ¬¡ã«ç·¨é›†ã—ãŸã‚ªãƒ–ジェクトã«ç§»å‹•ã™ã‚‹ã€‚"
#: editor/inspector_dock.cpp
msgid "History of recently edited objects."
@@ -4496,7 +4515,7 @@ msgstr "ドキュメントを開ã"
#: editor/inspector_dock.cpp
msgid "Filter properties"
-msgstr "フィルタプロパティ"
+msgstr "プロパティを絞り込む"
#: editor/inspector_dock.cpp
msgid "Manage object properties."
@@ -4528,7 +4547,7 @@ msgstr "プラグインå:"
#: editor/plugin_config_dialog.cpp
msgid "Subfolder:"
-msgstr "サブフォルダ:"
+msgstr "サブフォルダー:"
#: editor/plugin_config_dialog.cpp
msgid "Author:"
@@ -4654,8 +4673,8 @@ msgid ""
"Activate to enable playback, check node warnings if activation fails."
msgstr ""
"アニメーションツリーãŒéžã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã§ã™ã€‚\n"
-"å†ç”Ÿã‚’有効ã«ã™ã‚‹ãŸã‚ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ãƒˆã—ã¾ã™ã€‚アクティベートã«å¤±æ•—ã—ãŸå ´åˆã¯"
-"ノードã®è­¦å‘Šã‚’確èªã—ã¦ãã ã•ã„。"
+"å†ç”Ÿã‚’有効ã«ã™ã‚‹ãŸã‚ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ–化ã—ã¾ã™ã€‚アクティブ化ã«å¤±æ•—ã—ãŸå ´åˆã¯ãƒŽãƒ¼ãƒ‰"
+"ã®è­¦å‘Šã‚’確èªã—ã¦ãã ã•ã„。"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -4681,7 +4700,7 @@ msgstr "点"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Open Editor"
-msgstr "エディタã§é–‹ã"
+msgstr "エディターã§é–‹ã"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -4692,7 +4711,7 @@ msgstr "アニメーションノードを開ã"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Triangle already exists."
-msgstr "ä¸‰è§’å½¢ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚"
+msgstr "三角形ãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Add Triangle"
@@ -4716,7 +4735,7 @@ msgstr "BlendSpace2Dã®ä¸‰è§’形を削除ã™ã‚‹"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr "ブレンドシェイプ2Dã¯ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ„リー ノードã«å±žã—ã¾ã›ã‚“。"
+msgstr "BlendSpace2Dã¯ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ„リー ノードã«å±žã—ã¾ã›ã‚“。"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "No triangles exist, so no blending can take place."
@@ -4745,12 +4764,12 @@ msgstr "ブレンド:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Parameter Changed:"
-msgstr "パラメータãŒå¤‰æ›´ã•れã¾ã—ãŸ:"
+msgstr "パラメーターãŒå¤‰æ›´ã•れã¾ã—ãŸ:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Edit Filters"
-msgstr "フィルタã®ç·¨é›†"
+msgstr "フィルターã®ç·¨é›†"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Output node can't be added to the blend tree."
@@ -4794,16 +4813,15 @@ msgstr "ノードを削除"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Toggle Filter On/Off"
-msgstr "フィルタ㮠オン/オフ を切り替ãˆ"
+msgstr "フィルター㮠オン/オフ を切り替ãˆ"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Change Filter"
-msgstr "フィルタを変更"
+msgstr "フィルターを変更"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "No animation player set, so unable to retrieve track names."
-msgstr ""
-"アニメーションプレイヤーãŒè¨­å®šã•れã¦ã„ãªã„ãŸã‚ã€ãƒˆãƒ©ãƒƒã‚¯åã‚’å–å¾—ã§ãã¾ã›ã‚“。"
+msgstr "AnimationPlayerãŒè¨­å®šã•れã¦ã„ãªã„ãŸã‚ã€ãƒˆãƒ©ãƒƒã‚¯åã‚’å–å¾—ã§ãã¾ã›ã‚“。"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Player path set is invalid, so unable to retrieve track names."
@@ -4881,7 +4899,7 @@ msgstr "アニメーションåãŒç„¡åйã§ã™ï¼"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation name already exists!"
-msgstr "アニメーションåã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ï¼"
+msgstr "アニメーションåã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ï¼"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -4898,7 +4916,7 @@ msgstr "ブレンド時間ã®å¤‰æ›´"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load Animation"
-msgstr "アニメーション読込ã¿"
+msgstr "アニメーション読ã¿è¾¼ã¿"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Duplicate Animation"
@@ -4971,7 +4989,7 @@ msgstr "トランジションã®ç·¨é›†..."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Open in Inspector"
-msgstr "インスペクタã§é–‹ã"
+msgstr "インスペクターã§é–‹ã"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -4979,7 +4997,7 @@ msgstr "プレーヤーã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹ã€‚"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Autoplay on Load"
-msgstr "読込ã¿å¾Œã€è‡ªå‹•å†ç”Ÿ"
+msgstr "読ã¿è¾¼ã¿å¾Œã€è‡ªå‹•å†ç”Ÿ"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Enable Onion Skinning"
@@ -5292,11 +5310,11 @@ msgstr "アニメーションをインãƒãƒ¼ãƒˆ..."
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Edit Node Filters"
-msgstr "ノードフィルタã®ç·¨é›†"
+msgstr "ノードフィルターã®ç·¨é›†"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Filters..."
-msgstr "フィルタ..."
+msgstr "フィルター..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Contents:"
@@ -5348,7 +5366,7 @@ msgstr "レスãƒãƒ³ã‚¹ã‚’ä¿å­˜ã§ãã¾ã›ã‚“:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Write error."
-msgstr "エラーを書ã„ã¦ãã ã•ã„。"
+msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
@@ -5360,11 +5378,11 @@ msgstr "リダイレクトã®ãƒ«ãƒ¼ãƒ—。"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Request failed, timeout"
-msgstr "ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤±æ•—ã€æ™‚間切れ"
+msgstr "リクエスト失敗ã€ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Timeout."
-msgstr "時間切れ。"
+msgstr "タイムアウト。"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Failed:"
@@ -5425,7 +5443,7 @@ msgstr "ダウンロードエラー"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr "ã“ã®ã‚¢ã‚»ãƒƒãƒˆã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯æ—¢ã«é€²è¡Œä¸­ï¼"
+msgstr "ã“ã®ã‚¢ã‚»ãƒƒãƒˆã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯ã™ã§ã«é€²è¡Œä¸­ã§ã™ï¼"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Recently Updated"
@@ -5564,7 +5582,7 @@ msgstr ""
msgid ""
"Godot editor was built without ray tracing support, lightmaps can't be baked."
msgstr ""
-"GodotエディタãŒãƒ¬ã‚¤ãƒˆãƒ¬ãƒ¼ã‚·ãƒ³ã‚°ã®ã‚µãƒãƒ¼ãƒˆãªã—ã§ãƒ“ルドã•れã¦ã„ã‚‹ãŸã‚ã€ãƒ©ã‚¤ãƒˆ"
+"GodotエディターãŒãƒ¬ã‚¤ãƒˆãƒ¬ãƒ¼ã‚·ãƒ³ã‚°ã®ã‚µãƒãƒ¼ãƒˆãªã—ã§ãƒ“ルドã•れã¦ã„ã‚‹ãŸã‚ã€ãƒ©ã‚¤ãƒˆ"
"マップã®ãƒ™ã‚¤ã‚¯ãŒã§ãã¾ã›ã‚“。"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5682,15 +5700,13 @@ msgstr "CanvasItem \"%s\" ã‚’ (%d, %d) ã«ç§»å‹•"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "é¸æŠžå¯¾è±¡ã‚’ãƒ­ãƒƒã‚¯"
+msgstr "ロック済ã¿"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "グループ"
+msgstr "グループ化済ã¿"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -5798,8 +5814,8 @@ msgid ""
"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"プロジェクトã®ã‚«ãƒ¡ãƒ©ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰\n"
-"実行中ã®ãƒ—ロジェクトã®ã‚«ãƒ¡ãƒ©ã‚’ã€ã‚¨ãƒ‡ã‚£ã‚¿ã®ãƒ“ューãƒãƒ¼ãƒˆã‚«ãƒ¡ãƒ©ã§ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰"
-"ã—ã¾ã™ã€‚"
+"実行中ã®ãƒ—ロジェクトã®ã‚«ãƒ¡ãƒ©ã‚’ã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã®ãƒ“ューãƒãƒ¼ãƒˆã‚«ãƒ¡ãƒ©ã§ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤"
+"ドã—ã¾ã™ã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5940,7 +5956,7 @@ msgstr "スマート スナッピングをオン / オフ。"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Smart Snap"
-msgstr "スマートスナップを使ã†"
+msgstr "スマートスナップを使用"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Toggle grid snapping."
@@ -5948,7 +5964,7 @@ msgstr "グリッド スナッピングをオン / オフ。"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Grid Snap"
-msgstr "グリッドスナップを使ã†"
+msgstr "グリッドスナップを使用"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snapping Options"
@@ -5956,11 +5972,11 @@ msgstr "スナッピングオプション"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Rotation Snap"
-msgstr "回転スナップを使ã†"
+msgstr "回転スナップを使用"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Scale Snap"
-msgstr "スケールスナップを使ã†"
+msgstr "スケールスナップを使用"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap Relative"
@@ -6263,7 +6279,7 @@ msgstr "放出マスクをクリア"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Particles"
-msgstr "Particles"
+msgstr "パーティクル"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -6356,11 +6372,11 @@ msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’削除"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Left Linear"
-msgstr "左線形文法"
+msgstr "左線形"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Right Linear"
-msgstr "å³ç·šå½¢æ–‡æ³•"
+msgstr "å³ç·šå½¢"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load Preset"
@@ -6400,7 +6416,7 @@ msgstr "アイテム"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item List Editor"
-msgstr "アイテムリストã®ã‚¨ãƒ‡ã‚£ã‚¿"
+msgstr "アイテムリストã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
@@ -6557,14 +6573,14 @@ msgid "Create Multiple Convex Collision Siblings"
msgstr "複数ã®å‡¸åž‹ã‚³ãƒªã‚¸ãƒ§ãƒ³ã®å…„弟を作æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
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 ""
"ãƒãƒªã‚´ãƒ³ãƒ™ãƒ¼ã‚¹ã®ã‚³ãƒªã‚¸ãƒ§ãƒ³ã‚·ã‚§ã‚¤ãƒ—を作æˆã—ã¾ã™ã€‚\n"
-"ã“れã¯ã€ä¸Šè¨˜ã®2ã¤ã®ã‚ªãƒ—ションã®ä¸­é–“çš„ãªãƒ‘フォーマンスã§ã™ã€‚"
+"ã“れã¯ã€å˜ä¸€ã®å‡¸åž‹ã‚³ãƒªã‚¸ãƒ§ãƒ³ã¨ãƒãƒªã‚´ãƒ³ãƒ™ãƒ¼ã‚¹ã®ã‚³ãƒªã‚¸ãƒ§ãƒ³ã®ä¸­é–“çš„ãªãƒ‘フォーマ"
+"ンスã§ã™ã€‚"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh..."
@@ -6608,7 +6624,7 @@ msgstr "UVãƒãƒ£ãƒ³ãƒãƒ« デãƒãƒƒã‚°"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Remove item %d?"
-msgstr "アイテム%dã‚’å–り除ãã¾ã™ã‹ï¼Ÿ"
+msgstr "アイテム %d ã‚’å–り除ãã¾ã™ã‹ï¼Ÿ"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid ""
@@ -6631,14 +6647,12 @@ msgid "Remove Selected Item"
msgstr "é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’å–り除ã"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "シーンã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+msgstr "シーンã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ (トランスフォームを無視)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "シーンã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+msgstr "シーンã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ (トランスフォームをé©ç”¨)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -6693,11 +6707,11 @@ msgstr "ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚µãƒ¼ãƒ•ã‚§ã‚¹ã‚’é¸æŠž:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate Surface"
-msgstr "サーフェスを満ãŸã™"
+msgstr "サーフェスを投入ã™ã‚‹"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate MultiMesh"
-msgstr "マルãƒãƒ¡ãƒƒã‚·ãƒ¥ã®è¨­å®š"
+msgstr "MultiMeshを投入ã™ã‚‹"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Target Surface:"
@@ -7024,11 +7038,11 @@ msgstr "ボーンウェイトをペイント"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Open Polygon 2D UV editor."
-msgstr "Polygon 2D UV エディタを開ã。"
+msgstr "Polygon 2D UV エディターを開ã。"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
-msgstr "Polygon 2D UV エディタ"
+msgstr "Polygon 2D UV エディター"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "UV"
@@ -7202,7 +7216,7 @@ msgstr "åž‹:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
-msgstr "エディタã§é–‹ã"
+msgstr "エディターã§é–‹ã"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Load Resource"
@@ -7217,28 +7231,24 @@ msgid "Flip Portals"
msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚’å転"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Room Generate Points"
-msgstr "生æˆã—ãŸãƒã‚¤ãƒ³ãƒˆã®æ•°:"
+msgstr "Roomã®ãƒã‚¤ãƒ³ãƒˆã‚’生æˆ"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Generate Points"
-msgstr "生æˆã—ãŸãƒã‚¤ãƒ³ãƒˆã®æ•°:"
+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 "トランスフォームをクリア"
+msgstr "オクルーダーã®ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォームをセット"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "ノードを生æˆ"
+msgstr "中央ノード"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7348,7 +7358,7 @@ msgstr "å‰ã‚’検索"
#: editor/plugins/script_editor_plugin.cpp
msgid "Filter scripts"
-msgstr "スクリプトã®ãƒ•ィルタ"
+msgstr "スクリプトを絞り込む"
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle alphabetical sorting of the method list."
@@ -7356,7 +7366,7 @@ msgstr "メソッドリストã®ã‚¢ãƒ«ãƒ•ァベット順ソートを切り替ãˆ
#: editor/plugins/script_editor_plugin.cpp
msgid "Filter methods"
-msgstr "フィルタメソッド"
+msgstr "メソッドを絞り込む"
#: editor/plugins/script_editor_plugin.cpp
msgid "Sort"
@@ -7375,12 +7385,12 @@ msgid "Move Down"
msgstr "下ã«ç§»å‹•"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "次ã®ã‚¹ã‚¯ãƒªãƒ—ト"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr "ç›´å‰ã®ã‚¹ã‚¯ãƒªãƒ—ト"
+msgid "Previous Script"
+msgstr "å‰ã®ã‚¹ã‚¯ãƒªãƒ—ト"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7470,11 +7480,11 @@ msgstr "続行"
#: editor/plugins/script_editor_plugin.cpp
msgid "Keep Debugger Open"
-msgstr "デãƒãƒƒã‚¬ã‚’é–‹ã„ãŸã¾ã¾ã«ã™ã‚‹"
+msgstr "デãƒãƒƒã‚¬ãƒ¼ã‚’é–‹ã„ãŸã¾ã¾ã«ã™ã‚‹"
#: editor/plugins/script_editor_plugin.cpp
msgid "Debug with External Editor"
-msgstr "外部エディタã§ãƒ‡ãƒãƒƒã‚°"
+msgstr "外部エディターã§ãƒ‡ãƒãƒƒã‚°"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -7511,7 +7521,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Debugger"
-msgstr "デãƒãƒƒã‚¬"
+msgstr "デãƒãƒƒã‚¬ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search Results"
@@ -7738,21 +7748,19 @@ msgstr "ボーンã‹ã‚‰ãƒ¬ã‚¹ãƒˆãƒãƒ¼ã‚ºã‚’作æˆ"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Set Rest Pose to Bones"
-msgstr "ボーンã¸ãƒ¬ã‚¹ãƒˆãƒ»ãƒãƒ¼ã‚ºã‚’設定ã™ã‚‹"
+msgstr "ボーンã¸ãƒ¬ã‚¹ãƒˆãƒãƒ¼ã‚ºã‚’設定ã™ã‚‹"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Skeleton2D"
msgstr "Skeleton2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "レスト・ãƒãƒ¼ã‚ºã¸ãƒœãƒ¼ãƒ³ã‚’設定ã™ã‚‹"
+msgstr "レストãƒãƒ¼ã‚ºã¸ãƒªã‚»ãƒƒãƒˆ"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "上書ã"
+msgstr "レストãƒãƒ¼ã‚ºã‚’上書ã"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7768,7 +7776,7 @@ msgstr "物ç†ã‚¹ã‚±ãƒ«ãƒˆãƒ³ã‚’作æˆã™ã‚‹"
#: editor/plugins/skeleton_ik_editor_plugin.cpp
msgid "Play IK"
-msgstr "IK(Inverse kinematics)を実行ã™ã‚‹"
+msgstr "IKã‚’å†ç”Ÿ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
@@ -7779,69 +7787,62 @@ msgid "Perspective"
msgstr "é€è¦–投影"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "平行投影"
+msgstr "ä¸Šé¢ å¹³è¡ŒæŠ•å½±"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "é€è¦–投影"
+msgstr "ä¸Šé¢ é€è¦–投影"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "平行投影"
+msgstr "ä¸‹é¢ å¹³è¡ŒæŠ•å½±"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "é€è¦–投影"
+msgstr "ä¸‹é¢ é€è¦–投影"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "平行投影"
+msgstr "å·¦å´é¢ 平行投影"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "é€è¦–投影"
+msgid "Left Perspective"
+msgstr "å·¦å´é¢ é€è¦–投影"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "平行投影"
+msgstr "å³å´é¢ 平行投影"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "å³å´é¢ é€è¦–投影"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "平行投影"
+msgstr "æ­£é¢ å¹³è¡ŒæŠ•å½±"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "é€è¦–投影"
+msgstr "æ­£é¢ é€è¦–投影"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "平行投影"
+msgstr "å¾Œé¢ å¹³è¡ŒæŠ•å½±"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "é€è¦–投影"
+msgstr "å¾Œé¢ é€è¦–投影"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+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 ""
+msgstr " [ãƒãƒ¼ã‚¿ãƒ«æœ‰åй]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -7980,7 +7981,7 @@ msgstr "å­ã‚’インスタンス化ã™ã‚‹ãŸã‚ã®è¦ªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
-msgstr "å˜ä¸€ã®é¸æŠžã•れãŸãƒŽãƒ¼ãƒ‰ãŒãªã„ã¨ã€ã“ã®æ“作ã¯è¡Œãˆã¾ã›ã‚“。"
+msgstr "ã“ã®æ“作ã«ã¯é¸æŠžã•れãŸãƒŽãƒ¼ãƒ‰ãŒ1ã¤å¿…è¦ã§ã™ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Auto Orthogonal Enabled"
@@ -8094,13 +8095,12 @@ msgid ""
"Note: The FPS value displayed is the editor's framerate.\n"
"It cannot be used as a reliable indication of in-game performance."
msgstr ""
-"注æ„: 表示ã•れるFPS値ã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ã®ãƒ•レームレートã§ã™ã€‚\n"
+"注æ„: 表示ã•れるFPS値ã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã®ãƒ•レームレートã§ã™ã€‚\n"
"ゲーム内ã®ãƒ‘フォーマンスを確実ã«ç¤ºã™ã‚‚ã®ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Convert Rooms"
-msgstr "%s ã«å¤‰æ›"
+msgstr "Roomを変æ›"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -8134,11 +8134,11 @@ msgstr "ローカル空間を使用"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Snap"
-msgstr "スナップを使ã†"
+msgstr "スナップを使用"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Converts rooms for portal culling."
-msgstr ""
+msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚«ãƒªãƒ³ã‚°ç”¨ã«Roomを変æ›ã—ã¾ã™ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -8165,6 +8165,26 @@ 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 "オービットビュー 180"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "é€è¦–投影 / 平行投影ã®åˆ‡ã‚Šæ›¿ãˆ"
@@ -8238,9 +8258,8 @@ msgid "View Portal Culling"
msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚«ãƒªãƒ³ã‚°ã‚’表示"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚«ãƒªãƒ³ã‚°ã‚’表示"
+msgstr "オクルージョンカリングを表示"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8253,7 +8272,7 @@ msgstr "スナップã®è¨­å®š"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate Snap:"
-msgstr "スナップを移動:"
+msgstr "スナップã®ç§»å‹•:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Snap (deg.):"
@@ -8308,9 +8327,8 @@ msgid "Post"
msgstr "後"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "åç„¡ã—ã®ãƒ—ロジェクト"
+msgstr "åç„¡ã—ã®ã‚®ã‚ºãƒ¢"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -8634,7 +8652,7 @@ msgstr "アイテムをインãƒãƒ¼ãƒˆä¸­ {n}/{n}"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Updating the editor"
-msgstr "エディタをアップデート中"
+msgstr "エディターをアップデート中"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Finalizing"
@@ -8642,16 +8660,15 @@ msgstr "終了処ç†ä¸­"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Filter:"
-msgstr "フィルタ:"
+msgstr "フィルター:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "With Data"
msgstr "データ付"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select by data type:"
-msgstr "ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠž"
+msgstr "データã®ã‚¿ã‚¤ãƒ—ã‹ã‚‰é¸æŠž:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible color items."
@@ -8718,21 +8735,20 @@ msgid ""
"Caution: Adding icon data may considerably increase the size of your Theme "
"resource."
msgstr ""
-"注æ„: アイコンデータを追加ã™ã‚‹ã¨ãƒ†ãƒ¼ãƒž リソースã®ã‚µã‚¤ã‚ºãŒå¤§å¹…ã«å¢—加ã—ã¾ã™ã€‚"
+"注æ„: アイコンデータを追加ã™ã‚‹ã¨ãƒ†ãƒ¼ãƒžãƒªã‚½ãƒ¼ã‚¹ã®ã‚µã‚¤ã‚ºãŒå¤§å¹…ã«å¢—加ã™ã‚‹å¯èƒ½æ€§"
+"ãŒã‚りã¾ã™ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Collapse types."
-msgstr "ã™ã¹ã¦æŠ˜ã‚ŠãŸãŸã‚€"
+msgstr "タイプを折りãŸãŸã‚€ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Expand types."
-msgstr "ã™ã¹ã¦å±•é–‹"
+msgstr "タイプを展開。"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all Theme items."
-msgstr "ã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒž ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã™ã‚‹ã€‚"
+msgstr "ã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒžã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã™ã‚‹ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select With Data"
@@ -8740,7 +8756,7 @@ msgstr "データ付ãã§é¸æŠž"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all Theme items with item data."
-msgstr "ã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒž アイテムをã€ã‚¢ã‚¤ãƒ†ãƒ ã®ãƒ‡ãƒ¼ã‚¿ä»˜ãã§é¸æŠžã™ã‚‹ã€‚"
+msgstr "ã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒžã‚¢ã‚¤ãƒ†ãƒ ã‚’ã€ã‚¢ã‚¤ãƒ†ãƒ ã®ãƒ‡ãƒ¼ã‚¿ä»˜ãã§é¸æŠžã™ã‚‹ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect All"
@@ -8748,12 +8764,11 @@ msgstr "ã™ã¹ã¦é¸æŠžè§£é™¤"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all Theme items."
-msgstr "ã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒž アイテムã®é¸æŠžã‚’解除ã™ã‚‹ã€‚"
+msgstr "ã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒžã‚¢ã‚¤ãƒ†ãƒ ã®é¸æŠžã‚’解除ã™ã‚‹ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Import Selected"
-msgstr "シーンをインãƒãƒ¼ãƒˆ"
+msgstr "é¸æŠžã•れãŸã‚‚ã®ã‚’インãƒãƒ¼ãƒˆ"
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
@@ -8761,12 +8776,18 @@ msgid ""
"closing this window.\n"
"Close anyway?"
msgstr ""
+"アイテムã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ タブã§ã‚¢ã‚¤ãƒ†ãƒ ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚ウィンドウを閉ã˜ã‚‹ã¨é¸"
+"択ã¯å¤±ã‚れã¾ã™ã€‚\n"
+"ãれã§ã‚‚é–‰ã˜ã¾ã™ã‹ï¼Ÿ"
#: 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 ""
+"リストã‹ã‚‰ãƒ†ãƒ¼ãƒžã‚¿ã‚¤ãƒ—ã‚’é¸æŠžã—ã¦ã€ãã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’編集ã§ãã¾ã™ã€‚\n"
+"カスタムタイプを追加ã—ãŸã‚Šã€ä»–ã®ãƒ†ãƒ¼ãƒžã‹ã‚‰ã‚¿ã‚¤ãƒ—ã¨ãã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’インãƒãƒ¼ãƒˆã§"
+"ãã¾ã™ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All Color Items"
@@ -8797,6 +8818,8 @@ msgid ""
"This theme type is empty.\n"
"Add more items to it manually or by importing from another theme."
msgstr ""
+"ã“ã®ãƒ†ãƒ¼ãƒžã‚¿ã‚¤ãƒ—ã¯ç©ºã§ã™ã€‚\n"
+"手動もã—ãã¯ä»–ã®ãƒ†ãƒ¼ãƒžã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ã¦ã€ã‚¢ã‚¤ãƒ†ãƒ ã‚’追加ã—ã¦ãã ã•ã„。"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Color Item"
@@ -8840,15 +8863,15 @@ msgstr "StyleBox アイテムåã®å¤‰æ›´"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Invalid file, not a Theme resource."
-msgstr "無効ãªãƒ•ァイルã§ã™ã€‚テーマ リソースã§ã¯ã‚りã¾ã›ã‚“。"
+msgstr "無効ãªãƒ•ァイルã§ã™ã€‚テーマリソースã§ã¯ã‚りã¾ã›ã‚“。"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Invalid file, same as the edited Theme resource."
-msgstr ""
+msgstr "無効ãªãƒ•ァイルã§ã™ã€‚編集済ã¿ã®ãƒ†ãƒ¼ãƒžãƒªã‚½ãƒ¼ã‚¹ã¨åŒã˜ã§ã™ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Manage Theme Items"
-msgstr "テーマ アイテムã®ç®¡ç†"
+msgstr "テーマアイテムã®ç®¡ç†"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Edit Items"
@@ -8876,11 +8899,11 @@ msgstr "アイテムを除去:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
-msgstr "クラスアイテム削除"
+msgstr "クラスアイテムを除去"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Custom Items"
-msgstr ""
+msgstr "カスタムアイテムを除去"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All Items"
@@ -8888,7 +8911,7 @@ msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’除去"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Theme Item"
-msgstr "テーマ アイテムを追加"
+msgstr "テーマアイテムを追加"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Old Name:"
@@ -8928,28 +8951,27 @@ msgstr "アイテムを上書ã"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Unpin this StyleBox as a main style."
-msgstr ""
+msgstr "ã“ã®StyleBoxをメインスタイルã‹ã‚‰å›ºå®šè§£é™¤ã—ã¾ã™ã€‚"
#: 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 ""
+"ã“ã®StyleBoxをメインスタイルã«å›ºå®šã—ã¾ã™ã€‚ãã®ãƒ—ロパティを編集ã™ã‚‹ã¨ã€ä»–ã™ã¹"
+"ã¦ã®ã“ã®ã‚¿ã‚¤ãƒ—ã®StyleBoxã§åŒã˜ãƒ—ãƒ­ãƒ‘ãƒ†ã‚£ãŒæ›´æ–°ã•れã¾ã™ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Type"
-msgstr "タイプ(型)"
+msgstr "タイプを追加"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Item Type"
-msgstr "アイテムを追加"
+msgstr "アイテムã®ã‚¿ã‚¤ãƒ—を追加"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Node Types:"
-msgstr "ノードタイプ"
+msgstr "ノードã®ã‚¿ã‚¤ãƒ—:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Show Default"
@@ -8958,6 +8980,7 @@ 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"
@@ -8965,7 +8988,7 @@ msgstr "ã™ã¹ã¦ä¸Šæ›¸ã"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Override all default type items."
-msgstr ""
+msgstr "ã™ã¹ã¦ã®ãƒ‡ãƒ•ォルトタイプã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme:"
@@ -8996,6 +9019,8 @@ msgid ""
"Toggle the control picker, allowing to visually select control types for "
"edit."
msgstr ""
+"コントロールピッカーを切り替ãˆã¦ã€ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚¿ã‚¤ãƒ—を視覚的ã«é¸æŠžã—ã¦ç·¨é›†ã§"
+"ãるよã†ã«ã—ã¾ã™ã€‚"
#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
@@ -9030,9 +9055,8 @@ msgid "Checked Radio Item"
msgstr "ãƒã‚§ãƒƒã‚¯æ¸ˆã¿ãƒ©ã‚¸ã‚ª アイテム"
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Named Separator"
-msgstr "åå‰ä»˜ã分類。"
+msgstr "åå‰ä»˜ãセパレーター"
#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
@@ -9085,6 +9109,7 @@ msgstr "Has,Many,Options"
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid path, the PackedScene resource was probably moved or removed."
msgstr ""
+"無効ãªãƒ‘スã§ã™ã€‚ãŠãらãPackedSceneリソースã¯ç§»å‹•ã¾ãŸã¯å‰Šé™¤ã•れã¦ã„ã¾ã™ã€‚"
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid PackedScene resource, must have a Control node at its root."
@@ -9096,7 +9121,7 @@ msgstr "無効ãªãƒ•ァイルã§ã™ã€‚PackedScene ã®ãƒªã‚½ãƒ¼ã‚¹ã§ã¯ã‚りã¾
#: editor/plugins/theme_editor_preview.cpp
msgid "Reload the scene to reflect its most actual state."
-msgstr ""
+msgstr "最も実際ã®çŠ¶æ…‹ã‚’åæ˜ ã•ã›ã‚‹ãŸã‚ã«ã‚·ãƒ¼ãƒ³ã‚’リロードã—ã¾ã™ã€‚"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -9347,7 +9372,7 @@ msgstr "領域 Rect 内ã®ãƒãƒªã‚´ãƒ³ã‚’ä¿æŒã—ã¾ã™ã€‚"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Enable snap and show grid (configurable via the Inspector)."
-msgstr "スナップã¨ã‚°ãƒªãƒƒãƒ‰ã®è¡¨ç¤ºã‚’有効ã«ã™ã‚‹ (インスペクタã‹ã‚‰è¨­å®šå¯èƒ½)。"
+msgstr "スナップã¨ã‚°ãƒªãƒƒãƒ‰ã®è¡¨ç¤ºã‚’有効ã«ã™ã‚‹ (インスペクターã‹ã‚‰è¨­å®šå¯èƒ½)。"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Display Tile Names (Hold Alt Key)"
@@ -9373,7 +9398,7 @@ 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?"
@@ -9583,19 +9608,19 @@ msgstr "変更点"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Modified"
-msgstr "変更ã•れãŸç®‡æ‰€"
+msgstr "変更済ã¿"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Renamed"
-msgstr "åå‰ã®å¤‰æ›´ã•れãŸ"
+msgstr "åå‰å¤‰æ›´æ¸ˆã¿"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Deleted"
-msgstr "削除ã•れãŸ"
+msgstr "削除済ã¿"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Typechange"
-msgstr "タイプã®å¤‰æ›´"
+msgstr "タイプ変更"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Stage Selected"
@@ -9611,7 +9636,7 @@ msgstr "変更をコミットã™ã‚‹"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
-msgstr "最新ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚³ãƒŸãƒƒãƒˆã™ã‚‹å‰ã«ãƒ•ァイルã®å·®åˆ†ã‚’見る"
+msgstr "最新ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚³ãƒŸãƒƒãƒˆã™ã‚‹å‰ã«ãƒ•ァイルã®å·®åˆ†ã‚’表示"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "No file diff is active"
@@ -9619,7 +9644,7 @@ msgstr "有効ãªãƒ•ァイル差分ã¯ã‚りã¾ã›ã‚“"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect changes in file diff"
-msgstr "ファイルã®å·®åˆ†ã«å¤‰æ›´ã‚’確èª"
+msgstr "ファイル差分ã®å¤‰æ›´ã‚’検知"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "(GLES3 only)"
@@ -9687,7 +9712,7 @@ msgstr "VisualShaderノードã®ã‚µã‚¤ã‚ºã‚’変更"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Set Uniform Name"
-msgstr "統一åを設定"
+msgstr "Uniformåを設定"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Set Input Default Port"
@@ -9792,7 +9817,7 @@ msgstr "Lighten演算å­ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Overlay operator."
-msgstr "オーãƒãƒ¼ãƒ¬ã‚¤å‡¦ç†ã€‚"
+msgstr "オーãƒãƒ¼ãƒ¬ã‚¤æ¼”ç®—å­ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Screen operator."
@@ -9812,7 +9837,7 @@ msgstr "Colorã®uniform。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the boolean result of the %s comparison between two parameters."
-msgstr "2ã¤ã®ãƒ‘ラメータ間㮠%s 比較ã®ãƒ–ãƒ¼ãƒ«çµæžœã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "2ã¤ã®ãƒ‘ラメーター間㮠%s 比較ã®ãƒ–ãƒ¼ãƒ«çµæžœã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Equal (==)"
@@ -9838,13 +9863,13 @@ msgstr ""
msgid ""
"Returns the boolean result of the comparison between INF and a scalar "
"parameter."
-msgstr "INFã¨ã‚¹ã‚«ãƒ©ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã®æ¯”較ã®çµæžœã‚’ブール値ã§è¿”ã—ã¾ã™ã€‚"
+msgstr "INFã¨ã‚¹ã‚«ãƒ©ãƒ¼ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã®æ¯”較ã®çµæžœã‚’ブール値ã§è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Returns the boolean result of the comparison between NaN and a scalar "
"parameter."
-msgstr "NaNã¨ã‚¹ã‚«ãƒ©ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã®æ¯”較ã®çµæžœã‚’ブール値ã§è¿”ã—ã¾ã™ã€‚"
+msgstr "NaNã¨ã‚¹ã‚«ãƒ©ãƒ¼ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã®æ¯”較ã®çµæžœã‚’ブール値ã§è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Less Than (<)"
@@ -9872,13 +9897,13 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the boolean result of the comparison between two parameters."
-msgstr "2ã¤ã®ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿é–“ã®æ¯”較ã®çµæžœã‚’ブール値ã§è¿”ã—ã¾ã™ã€‚"
+msgstr "2ã¤ã®ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼é–“ã®æ¯”較ã®çµæžœã‚’ブール値ã§è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Returns the boolean result of the comparison between INF (or NaN) and a "
"scalar parameter."
-msgstr "INF(ã¾ãŸã¯NaN)ã¨ã‚¹ã‚«ãƒ©ãƒ‘ラメータã¨ã®æ¯”較ã®ãƒ–ãƒ¼ãƒ«çµæžœã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "INF(ã¾ãŸã¯NaN)ã¨ã‚¹ã‚«ãƒ©ãƒ‘ラメーターã¨ã®æ¯”較ã®ãƒ–ãƒ¼ãƒ«çµæžœã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Boolean constant."
@@ -9894,16 +9919,15 @@ msgstr "ã™ã¹ã¦ã®ã‚·ã‚§ãƒ¼ãƒ€ãƒ¼ãƒ¢ãƒ¼ãƒ‰ã® '%s' 入力パラメーター。
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Input parameter."
-msgstr "入力パラメータ。"
+msgstr "入力パラメーター。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for vertex and fragment shader modes."
-msgstr ""
-"'%s' ã¯é ‚点シェーダーã¨ãƒ•ラグメントシェーダーã®ãŸã‚ã®ãƒ‘ラメータを入力ã—ã¾ã™ã€‚"
+msgstr "頂点ã€ãƒ•ラグメントシェーダーモード(複数)ã® '%s' 入力パラメーター。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for fragment and light shader modes."
-msgstr "フラグメントモードã¨ãƒ©ã‚¤ãƒˆã‚·ã‚§ãƒ¼ãƒ€ãƒ¼ãƒ¢ãƒ¼ãƒ‰ã® '%s' 入力パラメーター。"
+msgstr "フラグメントã€ãƒ©ã‚¤ãƒˆã‚·ã‚§ãƒ¼ãƒ€ãƒ¼ãƒ¢ãƒ¼ãƒ‰(複数)ã® '%s' 入力パラメーター。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for fragment shader mode."
@@ -9911,16 +9935,15 @@ msgstr "フラグメントシェーダーモード㮠'%s' 入力パラメータ
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for light shader mode."
-msgstr "ライトシェーダーモード㮠'%s' 入力パラメータ。"
+msgstr "ライトシェーダーモード㮠'%s' 入力パラメーター。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for vertex shader mode."
-msgstr "頂点シェーダーモード㮠'%s' 入力パラメータ。"
+msgstr "頂点シェーダーモード㮠'%s' 入力パラメーター。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for vertex and fragment shader mode."
-msgstr ""
-"頂点シェーダーモードã€ãƒ•ラグメントシェーダーモード㮠'%s' 入力パラメータ。"
+msgstr "頂点ã€ãƒ•ラグメントシェーダーモード㮠'%s' 入力パラメーター。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Scalar function."
@@ -9964,40 +9987,40 @@ msgstr "Sqrt2定数(1.414214)。2ã®å¹³æ–¹æ ¹ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the absolute value of the parameter."
-msgstr "パラメータã®çµ¶å¯¾å€¤ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®çµ¶å¯¾å€¤ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-cosine of the parameter."
-msgstr "パラメータã®é€†ã‚³ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®é€†ã‚³ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic cosine of the parameter."
-msgstr "パラメータã®é€†åŒæ›²ç·šä½™å¼¦ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®é€†åŒæ›²ç·šä½™å¼¦ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-sine of the parameter."
-msgstr "パラメータã®é€†ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®é€†ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr "パラメータã®åŒæ›²ç·šé€†ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®åŒæ›²ç·šé€†ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-tangent of the parameter."
-msgstr "パラメータã®é€†ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®é€†ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-tangent of the parameters."
-msgstr "複数パラメータã®é€†ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "複数パラメーターã®é€†ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic tangent of the parameter."
-msgstr "パラメータã®åŒæ›²ç·šé€†ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®åŒæ›²ç·šé€†ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Finds the nearest integer that is greater than or equal to the parameter."
-msgstr "ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ä»¥ä¸Šã®æœ€ã‚‚è¿‘ã„æ•´æ•°ã‚’検索ã—ã¾ã™ã€‚"
+msgstr "パラメーターã¨ç­‰ã—ã„ã‹ã‚ˆã‚Šå¤§ãã„ã€æœ€ã‚‚è¿‘ã„æ•´æ•°ã‚’求ã‚ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Constrains a value to lie between two further values."
@@ -10005,11 +10028,11 @@ msgstr "値をã•らã«2ã¤ã®å€¤ã®é–“ã«ã‚るよã†ã«åˆ¶ç´„ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the cosine of the parameter."
-msgstr "パラメータã®ã‚³ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®ã‚³ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the hyperbolic cosine of the parameter."
-msgstr "パラメータã®åŒæ›²ç·šã‚³ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®åŒæ›²ç·šã‚³ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts a quantity in radians to degrees."
@@ -10025,7 +10048,7 @@ msgstr "2を底ã¨ã™ã‚‹æŒ‡æ•°ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the nearest integer less than or equal to the parameter."
-msgstr "ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ä»¥ä¸‹ã®æœ€ã‚‚è¿‘ã„æ•´æ•°ã‚’検索ã—ã¾ã™ã€‚"
+msgstr "パラメーターã¨ç­‰ã—ã„ã‹ã‚ˆã‚Šå°ã•ã„ã€æœ€ã‚‚è¿‘ã„æ•´æ•°ã‚’求ã‚ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Computes the fractional part of the argument."
@@ -10033,7 +10056,7 @@ msgstr "引数ã®å°æ•°éƒ¨ã‚’計算ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse of the square root of the parameter."
-msgstr "パラメータã®å¹³æ–¹æ ¹ã®é€†æ•°ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®å¹³æ–¹æ ¹ã®é€†æ•°ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Natural logarithm."
@@ -10053,11 +10076,11 @@ msgstr "2ã¤ã®å€¤ã®ã†ã¡å°ã•ã„æ–¹ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Linear interpolation between two scalars."
-msgstr "2ã¤ã®ã‚¹ã‚«ãƒ©é–“ã®ãƒªãƒ‹ã‚¢è£œé–“。"
+msgstr "2ã¤ã®ã‚¹ã‚«ãƒ©ãƒ¼é–“ã®ãƒªãƒ‹ã‚¢è£œé–“。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the opposite value of the parameter."
-msgstr "パラメータã®å対ã®å€¤ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®å対ã®å€¤ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "1.0 - scalar"
@@ -10066,7 +10089,7 @@ msgstr "1.0 - スカラー"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Returns the value of the first parameter raised to the power of the second."
-msgstr "最åˆã®ãƒ‘ラメータã®å€¤ã‚’2ã®ã¹ãä¹—ã§è¿”ã—ãŸå€¤ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "最åˆã®ãƒ‘ラメーターã®å€¤ã‚’2ã®ã¹ãä¹—ã§è¿”ã—ãŸå€¤ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts a quantity in degrees to radians."
@@ -10078,11 +10101,11 @@ msgstr "1.0 / スカラー"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the nearest integer to the parameter."
-msgstr "ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã«æœ€ã‚‚è¿‘ã„æ•´æ•°ã‚’検索ã—ã¾ã™ã€‚"
+msgstr "ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã«æœ€ã‚‚è¿‘ã„æ•´æ•°ã‚’求ã‚ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the nearest even integer to the parameter."
-msgstr "ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã«æœ€ã‚‚è¿‘ã„å¶æ•°ã®æ•´æ•°ã‚’検索ã—ã¾ã™ã€‚"
+msgstr "ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã«æœ€ã‚‚è¿‘ã„å¶æ•°ã®æ•´æ•°ã‚’求ã‚ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Clamps the value between 0.0 and 1.0."
@@ -10090,19 +10113,19 @@ msgstr "値を0.0ã‹ã‚‰1.0ã®é–“ã«å›ºå®šã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Extracts the sign of the parameter."
-msgstr "パラメータã®ç¬¦å·ã‚’抽出ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®ç¬¦å·ã‚’抽出ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the sine of the parameter."
-msgstr "パラメータã®ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the hyperbolic sine of the parameter."
-msgstr "パラメータã®åŒæ›²ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®åŒæ›²ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the square root of the parameter."
-msgstr "パラメータã®å¹³æ–¹æ ¹ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®å¹³æ–¹æ ¹ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
@@ -10130,15 +10153,15 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the tangent of the parameter."
-msgstr "パラメータã®ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the hyperbolic tangent of the parameter."
-msgstr "パラメータã®åŒæ›²ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメーターã®åŒæ›²ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the truncated value of the parameter."
-msgstr "パラメータã®ãƒˆãƒ©ãƒ³ã‚±ãƒ¼ãƒˆã•れãŸå€¤ã‚’検索ã—ã¾ã™ã€‚"
+msgstr "パラメーターを切りæ¨ã¦ãŸå€¤ã‚’求ã‚ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Adds scalar to scalar."
@@ -10204,10 +10227,10 @@ msgid ""
msgstr ""
"ベクトルã®ãƒšã‚¢ã®å¤–ç©ã‚’計算ã—ã¾ã™ã€‚\n"
"\n"
-"OuterProductã¯ã€æœ€åˆã®ãƒ‘ラメータ 'c' を列ベクトル(1列ã®è¡Œåˆ—)ã¨ã—ã¦ã€2番目ã®ãƒ‘"
-"ラメータ 'r' を行ベクトル(1行ã®è¡Œåˆ—)ã¨ã—ã¦å‡¦ç†ã—ã€ç·šå½¢ä»£æ•°è¡Œåˆ—ä¹—ç®— 'c * r' ã‚’"
-"実行ã—ã¦ã€è¡Œã®æ•°ãŒ 'c' ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®æ•°ã§ã€åˆ—ã®æ•°ãŒ 'r' ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ"
-"ã®æ•°ã§ã‚る行列を生æˆã—ã¾ã™ã€‚"
+"OuterProductã¯ã€æœ€åˆã®ãƒ‘ラメーター 'c' を列ベクトル(1列ã®è¡Œåˆ—)ã¨ã—ã¦ã€2番目ã®"
+"パラメータ 'r' を行ベクトル(1行ã®è¡Œåˆ—)ã¨ã—ã¦å‡¦ç†ã—ã€ç·šå½¢ä»£æ•°è¡Œåˆ—ä¹—ç®— 'c * r' "
+"を実行ã—ã¦ã€è¡Œã®æ•°ãŒ 'c' ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®æ•°ã§ã€åˆ—ã®æ•°ãŒ 'r' ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³"
+"ãƒˆã®æ•°ã§ã‚る行列を生æˆã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Composes transform from four vectors."
@@ -10421,8 +10444,8 @@ msgid ""
"it later in the Expressions. You can also declare varyings, uniforms and "
"constants."
msgstr ""
-"カスタムGodotシェーダー言語ã®è¡¨ç¾ã¯ã€ã‚·ã‚§ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°çµæžœã®æœ€å¾Œã«ä½ç½®ã—ã¾ã™ã€‚"
-"様々ãªé–¢æ•°ã‚’ãã®ä¸­ã§å®šç¾©ã—ã€è¡¨ç¾ã®ä¸­ã§å‘¼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸvarying変"
+"カスタムGodotシェーダー言語ã®è¡¨ç¾ã¯ã€ã‚·ã‚§ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°çµæžœã®æœ€å¾Œã«ä½ç½®ã—ã¾ã™ã€‚ã•"
+"ã¾ã–ã¾ãªé–¢æ•°ã‚’ãã®ä¸­ã§å®šç¾©ã—ã€è¡¨ç¾ã®ä¸­ã§å‘¼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸvarying変"
"æ•°ã€uniform変数ã€å®šæ•°ã‚’宣言ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -10552,8 +10575,8 @@ msgid ""
"If checked, the preset will be available for use in one-click deploy.\n"
"Only one preset per platform may be marked as runnable."
msgstr ""
-"ãƒã‚§ãƒƒã‚¯ã‚’入れるã¨ã€ï¼‘クリック・デプロイã§ã‚‚ã“ã®ãƒ—リセットãŒä½¿ã‚れるよã†ã«ãª"
-"りã¾ã™ã€‚\n"
+"ãƒã‚§ãƒƒã‚¯ã‚’入れるã¨ã€ãƒ¯ãƒ³ã‚¯ãƒªãƒƒã‚¯ãƒ»ãƒ‡ãƒ—ロイã§ã‚‚ã“ã®ãƒ—リセットãŒä½¿ã‚れるよã†ã«"
+"ãªã‚Šã¾ã™ã€‚\n"
"ã²ã¨ã¤ã®ãƒ—ラットフォームã«å¯¾ã—ã€ã²ã¨ã¤ã®ãƒ—リセットã®ã¿ãŒå®Ÿè¡Œå¯èƒ½ã¨ã—ã¦ãƒžãƒ¼ã‚¯"
"ã§ãã¾ã™ã€‚"
@@ -10590,7 +10613,7 @@ msgid ""
"Filters to export non-resource files/folders\n"
"(comma-separated, e.g: *.json, *.txt, docs/*)"
msgstr ""
-"リソース以外ã®ãƒ•ァイル/フォルダをエクスãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ãƒ•ィルタ\n"
+"リソース以外ã®ãƒ•ァイル/フォルダーをエクスãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ãƒ•ィルター\n"
"(コンマ区切り〠例: *.json, *.txt, docs/*)"
#: editor/project_export.cpp
@@ -10598,7 +10621,7 @@ msgid ""
"Filters to exclude files/folders from project\n"
"(comma-separated, e.g: *.json, *.txt, docs/*)"
msgstr ""
-"プロジェクトã‹ã‚‰ãƒ•ァイル/フォルダを除外ã™ã‚‹ãƒ•ィルタ\n"
+"プロジェクトã‹ã‚‰ãƒ•ァイル/フォルダーを除外ã™ã‚‹ãƒ•ィルター\n"
"(コンマ区切り〠例: *.json, *.txt, docs/*)"
#: editor/project_export.cpp
@@ -10631,7 +10654,7 @@ msgstr "コンパイルã•れãŸãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰ (より高速ãªãƒ­ãƒ¼ãƒ‡ã‚£ã
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
-msgstr "æš—å·åŒ–(下ã«ã‚­ãƒ¼ã‚’入力)"
+msgstr "æš—å·åŒ– (下ã«ã‚­ãƒ¼ã‚’入力)"
#: editor/project_export.cpp
msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
@@ -10651,7 +10674,7 @@ msgstr "プロジェクトã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/project_export.cpp
msgid "Export mode?"
-msgstr "エクスãƒãƒ¼ãƒˆ モード?"
+msgstr "エクスãƒãƒ¼ãƒˆã®ãƒ¢ãƒ¼ãƒ‰ã¯ï¼Ÿ"
#: editor/project_export.cpp
msgid "Export All"
@@ -10695,7 +10718,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Please choose an empty folder."
-msgstr "空ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦ãã ã•ã„。"
+msgstr "空ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„。"
#: editor/project_manager.cpp
msgid "Please choose a \"project.godot\" or \".zip\" file."
@@ -10719,11 +10742,11 @@ msgstr "無効ãªãƒ—ロジェクトåã§ã™ã€‚"
#: editor/project_manager.cpp
msgid "Couldn't create folder."
-msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+msgstr "フォルダーを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: editor/project_manager.cpp
msgid "There is already a folder in this path with the specified name."
-msgstr "ã“ã®ãƒ‘スã«ã¯ã€æŒ‡å®šã•れãŸåå‰ã®ãƒ•ã‚©ãƒ«ãƒ€ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚"
+msgstr "ã“ã®ãƒ‘スã«ã¯ã€æŒ‡å®šã•れãŸåå‰ã®ãƒ•ォルダーãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
@@ -10811,7 +10834,7 @@ msgstr "OpenGL ES 3.0"
#: editor/project_manager.cpp
msgid "Not supported by your GPU drivers."
-msgstr "ãŠä½¿ã„ã®GPUドライãƒã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。"
+msgstr "ãŠä½¿ã„ã®GPUドライãƒãƒ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。"
#: editor/project_manager.cpp
msgid ""
@@ -10856,7 +10879,7 @@ msgstr "プロジェクトãŒã‚りã¾ã›ã‚“"
#: editor/project_manager.cpp
msgid "Error: Project is missing on the filesystem."
-msgstr "エラー: プロジェクトã¯ãƒ•ァイルシステムを見ã¤ã‘られã¾ã›ã‚“。"
+msgstr "エラー: ファイルシステム上ã«ãƒ—ロジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
#: editor/project_manager.cpp
msgid "Can't open project at '%s'."
@@ -10949,7 +10972,7 @@ msgid ""
"The project folders' contents won't be modified."
msgstr ""
"見ã¤ã‹ã‚‰ãªã„ã™ã¹ã¦ã®ãƒ—ロジェクトを一覧ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ\n"
-"プロジェクトフォルダã®å†…容ã¯å¤‰æ›´ã•れã¾ã›ã‚“。"
+"プロジェクトフォルダーã®å†…容ã¯å¤‰æ›´ã•れã¾ã›ã‚“。"
#: editor/project_manager.cpp
msgid ""
@@ -10957,15 +10980,15 @@ msgid ""
"The interface will update after restarting the editor or project manager."
msgstr ""
"言語ãŒå¤‰æ›´ã•れã¾ã—ãŸã€‚\n"
-"エディタã¾ãŸã¯ãƒ—ロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®å†èµ·å‹•後ã«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒæ›´æ–°ã•れ"
-"ã¾ã™ã€‚"
+"エディターã¾ãŸã¯ãƒ—ロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®å†èµ·å‹•後ã«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒæ›´æ–°ã•"
+"れã¾ã™ã€‚"
#: editor/project_manager.cpp
msgid ""
"Are you sure to scan %s folders for existing Godot projects?\n"
"This could take a while."
msgstr ""
-"既存ã®Godotプロジェクトã®%sフォルダをスキャンã—ã¾ã™ã‹ï¼Ÿ\n"
+"%s個ã®ãƒ•ォルダー内ã«å­˜åœ¨ã™ã‚‹Godotプロジェクトをスキャンã—ã¾ã™ã‹ï¼Ÿ\n"
"ã“れã«ã¯ã—ã°ã‚‰ã時間ãŒã‹ã‹ã‚Šã¾ã™ã€‚"
#. TRANSLATORS: This refers to the application where users manage their Godot projects.
@@ -10975,7 +10998,7 @@ msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
#: editor/project_manager.cpp
msgid "Local Projects"
-msgstr "ローカル プロジェクト"
+msgstr "ローカルã®ãƒ—ロジェクト"
#: editor/project_manager.cpp
msgid "Loading, please wait..."
@@ -11003,7 +11026,7 @@ msgstr "プロジェクトをスキャン"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
-msgstr "スキャンã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠž"
+msgstr "スキャンã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠž"
#: editor/project_manager.cpp
msgid "New Project"
@@ -11039,7 +11062,7 @@ msgstr "ã™ã¹ã¦é™¤åŽ»"
#: editor/project_manager.cpp
msgid "Also delete project contents (no undo!)"
-msgstr "プロジェクトã®å†…容も削除ã•れã¾ã™ (ã‚‚ã¨ã«æˆ»ã›ã¾ã›ã‚“ï¼)"
+msgstr "プロジェクトã®å†…容も削除ã™ã‚‹ (ã‚‚ã¨ã«æˆ»ã›ã¾ã›ã‚“ï¼)"
#: editor/project_manager.cpp
msgid "Can't run project"
@@ -11055,7 +11078,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Filter projects"
-msgstr "プロジェクトã®ãƒ•ィルタ"
+msgstr "プロジェクトを絞り込む"
#: editor/project_manager.cpp
msgid ""
@@ -11074,7 +11097,7 @@ msgstr "キー "
#: editor/project_settings_editor.cpp
msgid "Physical Key"
-msgstr ""
+msgstr "物ç†ã‚­ãƒ¼"
#: editor/project_settings_editor.cpp
msgid "Joy Button"
@@ -11098,7 +11121,7 @@ msgstr ""
#: editor/project_settings_editor.cpp
msgid "An action with the name '%s' already exists."
-msgstr "'%s' ã¨ã„ã†åå‰ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚"
+msgstr "'%s' ã¨ã„ã†åå‰ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
@@ -11122,7 +11145,7 @@ msgstr "デãƒã‚¤ã‚¹"
#: editor/project_settings_editor.cpp
msgid " (Physical)"
-msgstr ""
+msgstr " (物ç†çš„)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
@@ -11174,7 +11197,7 @@ msgstr "ã‚¸ãƒ§ã‚¤ãƒ‘ãƒƒãƒ‰ã®æ–¹å‘キー/スティックã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹:"
#: editor/project_settings_editor.cpp
msgid "Axis"
-msgstr "アナログ"
+msgstr "軸"
#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
@@ -11241,8 +11264,8 @@ msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'."
msgstr ""
-"無効ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³åã§ã™ã€‚空もã—ãã¯'/'ã€':'ã€'='ã€'\\' ã€'\"'ã‚’å«ã‚ã‚‹ã“ã¨ã¯ã§"
-"ãã¾ã›ã‚“。"
+"無効ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³åã§ã™ã€‚空もã—ãã¯'/'ã€':'ã€'='ã€'\\'ã€'\"'ã‚’å«ã‚ã‚‹ã“ã¨ã¯ã§ã"
+"ã¾ã›ã‚“。"
#: editor/project_settings_editor.cpp
msgid "Add Input Action"
@@ -11273,22 +11296,20 @@ msgid "Remove Translation"
msgstr "翻訳を除去"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Translation Resource Remap: Add %d Path(s)"
-msgstr "リソースå†ãƒžãƒƒãƒ—ãŒå†ãƒžãƒƒãƒ—を追加"
+msgstr "翻訳リソースã®å†ãƒžãƒƒãƒ—: %d個ã®ãƒ‘スを追加"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Translation Resource Remap: Add %d Remap(s)"
-msgstr "リソースå†ãƒžãƒƒãƒ—ãŒå†ãƒžãƒƒãƒ—を追加"
+msgstr "翻訳リソースã®å†ãƒžãƒƒãƒ—: %d個ã®å†ãƒžãƒƒãƒ—を追加"
#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
-msgstr "リソースリマップ言語を変更"
+msgstr "リソースã®å†ãƒžãƒƒãƒ—言語を変更"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
-msgstr "リソースã®ãƒªãƒžãƒƒãƒ—を削除"
+msgstr "リソースã®å†ãƒžãƒƒãƒ—を削除"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
@@ -11296,11 +11317,11 @@ msgstr "リソースå†ãƒžãƒƒãƒ—オプションを削除"
#: editor/project_settings_editor.cpp
msgid "Changed Locale Filter"
-msgstr "ロケールフィルタã®å¤‰æ›´"
+msgstr "ロケールフィルターã®å¤‰æ›´"
#: editor/project_settings_editor.cpp
msgid "Changed Locale Filter Mode"
-msgstr "ロケールフィルタモードã®å¤‰æ›´"
+msgstr "ロケールフィルターモードã®å¤‰æ›´"
#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
@@ -11316,7 +11337,7 @@ msgstr "上書ãã—ã¾ã™..."
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "The editor must be restarted for changes to take effect."
-msgstr "変更を有効ã«ã™ã‚‹ã«ã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ã‚’å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
+msgstr "変更を有効ã«ã™ã‚‹ã«ã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‚’å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -11356,7 +11377,7 @@ msgstr "翻訳:"
#: editor/project_settings_editor.cpp
msgid "Remaps"
-msgstr "リマップ"
+msgstr "å†ãƒžãƒƒãƒ—"
#: editor/project_settings_editor.cpp
msgid "Resources:"
@@ -11364,7 +11385,7 @@ msgstr "リソース:"
#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
-msgstr "ロケールã«å¾“ã„リマップ:"
+msgstr "ロケールã«å¾“ã„å†ãƒžãƒƒãƒ—:"
#: editor/project_settings_editor.cpp
msgid "Locale"
@@ -11372,7 +11393,7 @@ msgstr "ロケール"
#: editor/project_settings_editor.cpp
msgid "Locales Filter"
-msgstr "ロケールフィルタ"
+msgstr "ロケールフィルター"
#: editor/project_settings_editor.cpp
msgid "Show All Locales"
@@ -11384,7 +11405,7 @@ msgstr "é¸æŠžã—ãŸãƒ­ã‚±ãƒ¼ãƒ«ã®ã¿è¡¨ç¤º"
#: editor/project_settings_editor.cpp
msgid "Filter mode:"
-msgstr "フィルタモード:"
+msgstr "フィルターモード:"
#: editor/project_settings_editor.cpp
msgid "Locales:"
@@ -11511,8 +11532,8 @@ msgid ""
"Sequential integer counter.\n"
"Compare counter options."
msgstr ""
-"シーケンシャル整数カウンタ。\n"
-"カウンタオプションを比較ã—ã¾ã™ã€‚"
+"シーケンシャル整数カウンター。\n"
+"カウンターオプションを比較ã—ã¾ã™ã€‚"
#: editor/rename_dialog.cpp
msgid "Per-level Counter"
@@ -11520,11 +11541,11 @@ msgstr "レベルã”ã¨ã®ã‚«ã‚¦ãƒ³ã‚¿ãƒ¼"
#: editor/rename_dialog.cpp
msgid "If set, the counter restarts for each group of child nodes."
-msgstr "設定ã™ã‚‹ã¨ã€å­ãƒŽãƒ¼ãƒ‰ã®ã‚°ãƒ«ãƒ¼ãƒ—ã”ã¨ã«ã‚«ã‚¦ãƒ³ã‚¿ãŒå†èµ·å‹•ã—ã¾ã™ã€‚"
+msgstr "設定ã™ã‚‹ã¨ã€å­ãƒŽãƒ¼ãƒ‰ã®ã‚°ãƒ«ãƒ¼ãƒ—ã”ã¨ã«ã‚«ã‚¦ãƒ³ã‚¿ãƒ¼ãŒå†èµ·å‹•ã—ã¾ã™ã€‚"
#: editor/rename_dialog.cpp
msgid "Initial value for the counter"
-msgstr "カウンタã®åˆæœŸå€¤"
+msgstr "カウンターã®åˆæœŸå€¤"
#: editor/rename_dialog.cpp
msgid "Step"
@@ -11532,7 +11553,7 @@ msgstr "ステップ"
#: editor/rename_dialog.cpp
msgid "Amount by which counter is incremented for each node"
-msgstr "å„ノードã®ã‚«ã‚¦ãƒ³ã‚¿ã®å¢—分é‡"
+msgstr "å„ノードã®ã‚«ã‚¦ãƒ³ã‚¿ãƒ¼ã®å¢—分é‡"
#: editor/rename_dialog.cpp
msgid "Padding"
@@ -11543,7 +11564,7 @@ msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
msgstr ""
-"ã‚«ã‚¦ãƒ³ã‚¿ã®æœ€å°æ¡æ•°ã€‚\n"
+"ã‚«ã‚¦ãƒ³ã‚¿ãƒ¼ã®æœ€å°æ¡æ•°ã€‚\n"
"欠è½ã—ãŸæ•°å­—ã¯ã€å…ˆé ­ã«ã‚¼ãƒ­ãŒåŸ‹ã‚è¾¼ã¾ã‚Œã¾ã™ã€‚"
#: editor/rename_dialog.cpp
@@ -11701,11 +11722,11 @@ msgstr "ノードをルートã«ã™ã‚‹"
#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes and any children?"
-msgstr "%d ノードã¨ãã®å­ãƒŽãƒ¼ãƒ‰ã™ã¹ã¦ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ"
+msgstr "%d個ã®ãƒŽãƒ¼ãƒ‰ã¨ãã®å­ãƒŽãƒ¼ãƒ‰ã™ã¹ã¦ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
-msgstr "%d ノードを削除ã—ã¾ã™ã‹ï¼Ÿ"
+msgstr "%d個ã®ãƒŽãƒ¼ãƒ‰ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/scene_tree_dock.cpp
msgid "Delete the root node \"%s\"?"
@@ -11723,8 +11744,8 @@ msgstr "\"%s\" ノードを削除ã—ã¾ã™ã‹ï¼Ÿ"
msgid ""
"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
-"ブランãƒã‚’シーンã¨ã—ã¦ä¿å­˜ã™ã‚‹ã«ã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ã§ã‚·ãƒ¼ãƒ³ã‚’é–‹ã„ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾"
-"ã™ã€‚"
+"ブランãƒã‚’シーンã¨ã—ã¦ä¿å­˜ã™ã‚‹ã«ã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã§ã‚·ãƒ¼ãƒ³ã‚’é–‹ã„ã¦ã„ã‚‹å¿…è¦ãŒã‚り"
+"ã¾ã™ã€‚"
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11741,6 +11762,11 @@ msgid ""
"FileSystem dock context menu\n"
"or create an inherited scene using Scene > New Inherited Scene... instead."
msgstr ""
+"ルートノードã®ãƒ–ランãƒã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•れãŸã‚·ãƒ¼ãƒ³ã¨ã—ã¦ä¿å­˜ã§ãã¾ã›ã‚“。\n"
+"ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã®ç·¨é›†å¯èƒ½ãªã‚³ãƒ”ーを作æˆã™ã‚‹ã«ã¯ã€FileSystemドックã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ"
+"メニューを使用ã—ã¦è¤‡è£½ã™ã‚‹ã‹ã€\n"
+"代ã‚り㫠シーン > æ–°ã—ã„継承シーン... を使用ã—ã¦ç¶™æ‰¿ã‚·ãƒ¼ãƒ³ã‚’作æˆã—ã¦ãã ã•"
+"ã„。"
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11748,6 +11774,9 @@ msgid ""
"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 ""
+"ã™ã§ã«ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•れã¦ã„るシーンã®ãƒ–ランãƒã¯ä¿å­˜ã§ãã¾ã›ã‚“。\n"
+"ãã®ã‚·ãƒ¼ãƒ³ã®ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã‚’作æˆã™ã‚‹ã«ã¯ã€ä»£ã‚りã«ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•れãŸã‚·ãƒ¼ãƒ³"
+"をベース㫠シーン > æ–°ã—ã„継承シーン... ã‹ã‚‰ç¶™æ‰¿ã‚·ãƒ¼ãƒ³ã‚’作æˆã—ã¦ãã ã•ã„。"
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -11864,7 +11893,7 @@ msgid ""
"disabled."
msgstr ""
"スクリプトをアタッãƒã§ãã¾ã›ã‚“: 言語ãŒã²ã¨ã¤ã‚‚登録ã•れã¦ã„ã¾ã›ã‚“。\n"
-"ãŠãらãã“ã®ã‚¨ãƒ‡ã‚£ã‚¿ã¯ã€ã™ã¹ã¦ã®è¨€èªžãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’無効化ã—ã¦ãƒ“ルドã•れã¦ã„ã¾"
+"ãŠãらãã“ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã¯ã€ã™ã¹ã¦ã®è¨€èªžãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’無効化ã—ã¦ãƒ“ルドã•れã¦ã„ã¾"
"ã™ã€‚"
#: editor/scene_tree_dock.cpp
@@ -11933,6 +11962,10 @@ msgid ""
"every time it updates.\n"
"Switch back to the Local scene tree dock to improve performance."
msgstr ""
+"é¸æŠžã—ãŸå ´åˆã€ãƒªãƒ¢ãƒ¼ãƒˆã®ã‚·ãƒ¼ãƒ³ãƒ„ãƒªãƒ¼ãƒ‰ãƒƒã‚¯ãŒæ›´æ–°ã•れるãŸã³ã«ã€ãƒ—ロジェクトã«"
+"カクã¤ããŒç™ºç”Ÿã—ã¾ã™ã€‚\n"
+"パフォーマンスをå‘上ã•ã›ã‚‹ã«ã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«ã®ã‚·ãƒ¼ãƒ³ãƒ„リードックã«åˆ‡ã‚Šæ›¿ãˆã¦ãã "
+"ã•ã„。"
#: editor/scene_tree_dock.cpp
msgid "Local"
@@ -11996,7 +12029,7 @@ msgid ""
"Click to unlock it."
msgstr ""
"ノードã¯ãƒ­ãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚\n"
-"クリックã—ã¦ãƒ­ãƒƒã‚¯ã‚’外ã—ã¦ãã ã•ã„。"
+"クリックã§ãƒ­ãƒƒã‚¯ã‚’外ã™ã€‚"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -12020,7 +12053,7 @@ msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
-msgstr "䏿­£ãªãƒŽãƒ¼ãƒ‰å.ä»¥ä¸‹ã®æ–‡å­—ã¯ä½¿ãˆã¾ã›ã‚“:"
+msgstr "無効ãªãƒŽãƒ¼ãƒ‰åã€‚ä»¥ä¸‹ã®æ–‡å­—ã¯ä½¿ãˆã¾ã›ã‚“:"
#: editor/scene_tree_editor.cpp
msgid "Rename Node"
@@ -12056,7 +12089,7 @@ msgstr "無効ãªãƒ™ãƒ¼ã‚¹ãƒ‘スã§ã™ã€‚"
#: editor/script_create_dialog.cpp
msgid "A directory with the same name exists."
-msgstr "åŒåã®ãƒ•ォルダãŒå­˜åœ¨ã—ã¾ã™ã€‚"
+msgstr "åŒåã®ãƒ•ォルダーãŒå­˜åœ¨ã—ã¾ã™ã€‚"
#: editor/script_create_dialog.cpp
msgid "File does not exist."
@@ -12100,7 +12133,7 @@ msgstr "スクリプトを開ã"
#: editor/script_create_dialog.cpp
msgid "File exists, it will be reused."
-msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚ãã¡ã‚‰ã‚’å†åˆ©ç”¨ã—ã¾ã™ã€‚"
+msgstr "ファイルãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚ãã¡ã‚‰ã‚’å†åˆ©ç”¨ã—ã¾ã™ã€‚"
#: editor/script_create_dialog.cpp
msgid "Invalid path."
@@ -12108,7 +12141,7 @@ msgstr "パスãŒç„¡åйã§ã™ã€‚"
#: editor/script_create_dialog.cpp
msgid "Invalid class name."
-msgstr "無効ãªã‚¯ãƒ©ã‚¹å。"
+msgstr "無効ãªã‚¯ãƒ©ã‚¹åã§ã™ã€‚"
#: editor/script_create_dialog.cpp
msgid "Invalid inherited parent name or path."
@@ -12120,7 +12153,7 @@ msgstr "スクリプトã®ãƒ‘ス/åå‰ã¯æœ‰åйã§ã™ã€‚"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9, _ and ."
-msgstr "使用å¯èƒ½: a-zã€A-Zã€0-9ã€_ åŠã³ ."
+msgstr "使用å¯èƒ½: a-zã€A-Zã€0-9ã€_ ãŠã‚ˆã³ ."
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)."
@@ -12132,26 +12165,27 @@ msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—トファイルを作æˆã€‚"
#: editor/script_create_dialog.cpp
msgid "Will load an existing script file."
-msgstr "既存ã®ã‚¹ã‚¯ãƒªãƒ—トファイルを読ã¿è¾¼ã‚€ã€‚"
+msgstr "既存ã®ã‚¹ã‚¯ãƒªãƒ—トファイルãŒèª­ã¿è¾¼ã¾ã‚Œã¾ã™ã€‚"
#: editor/script_create_dialog.cpp
msgid "Script file already exists."
-msgstr "ã‚¹ã‚¯ãƒªãƒ—ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«ã‚りã¾ã™ã€‚"
+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:"
@@ -12279,7 +12313,7 @@ msgstr "åˆè¨ˆ:"
#: editor/script_editor_debugger.cpp
msgid "Export list to a CSV file"
-msgstr "CSVファイルã«ãƒªã‚¹ãƒˆã‚’エクスãƒãƒ¼ãƒˆ"
+msgstr "リストをCSVファイルã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/script_editor_debugger.cpp
msgid "Resource Path"
@@ -12335,7 +12369,7 @@ msgstr "ショートカットを変更"
#: editor/settings_config_dialog.cpp
msgid "Editor Settings"
-msgstr "エディタ設定"
+msgstr "エディター設定"
#: editor/settings_config_dialog.cpp
msgid "Shortcuts"
@@ -12410,14 +12444,12 @@ msgid "Set Portal Point Position"
msgstr "Portal ãƒã‚¤ãƒ³ãƒˆã®ä½ç½®ã‚’設定"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "円柱シェイプã®åŠå¾„を変更"
+msgstr "オクルーダーã®çƒå½¢ã®åŠå¾„をセット"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "曲線ã®In-Controlã®ä½ç½®ã‚’指定"
+msgstr "オクルーダーã®çƒå½¢ã®ä½ç½®ã‚’セット"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12702,9 +12734,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "クラスåを予約キーワードã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "é¸æŠžéƒ¨ã®å¡—り潰ã—"
+msgstr "ソリューションをビルド"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -12716,7 +12747,7 @@ msgstr "NavMeshを焼ã込む"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
-msgstr "ナビメッシュ(ナビゲーションメッシュ)ã®æ¶ˆåŽ»ã€‚"
+msgstr "ãƒŠãƒ“ã‚²ãƒ¼ã‚·ãƒ§ãƒ³ãƒ¡ãƒƒã‚·ãƒ¥ã®æ¶ˆåŽ»ã€‚"
#: modules/recast/navigation_mesh_generator.cpp
msgid "Setting up Configuration..."
@@ -12760,7 +12791,7 @@ msgstr "ãƒã‚¤ãƒ†ã‚£ãƒ–ナビゲーションメッシュã«å¤‰æ›ã—ã¦ã„ã¾ã™
#: modules/recast/navigation_mesh_generator.cpp
msgid "Navigation Mesh Generator Setup:"
-msgstr "ナビメッシュ(ナビゲーションメッシュ)生æˆè¨­å®š:"
+msgstr "ナビゲーションメッシュ生æˆè¨­å®š:"
#: modules/recast/navigation_mesh_generator.cpp
msgid "Parsing Geometry..."
@@ -12790,22 +12821,22 @@ msgid ""
"Return value must be assigned to first element of node working memory! Fix "
"your node please."
msgstr ""
-"戻り値ã¯ãƒŽãƒ¼ãƒ‰ã®ä½œæ¥­ç”¨ãƒ¡ãƒ¢ãƒªã®æœ€åˆã®è¦ç´ ã«å‰²ã‚Šå½“ã¦ãªã‘れã°ãªã‚Šã¾ã›ã‚“!ノードを"
-"修正ã—ã¦ãã ã•ã„。"
+"戻り値ã¯ãƒŽãƒ¼ãƒ‰ã®ä½œæ¥­ç”¨ãƒ¡ãƒ¢ãƒªã®æœ€åˆã®è¦ç´ ã«å‰²ã‚Šå½“ã¦ãªã‘れã°ãªã‚Šã¾ã›ã‚“ï¼ãƒŽãƒ¼ãƒ‰"
+"を修正ã—ã¦ãã ã•ã„。"
#: modules/visual_script/visual_script.cpp
msgid "Node returned an invalid sequence output: "
-msgstr "ノードã¯ç„¡åйãªã‚·ãƒ¼ã‚¯ã‚¨ãƒ³ã‚¹å‡ºåŠ›ã‚’è¿”ã—ã¾ã—ãŸ: "
+msgstr "ノードã¯ç„¡åйãªã‚·ãƒ¼ã‚±ãƒ³ã‚¹å‡ºåŠ›ã‚’è¿”ã—ã¾ã—ãŸ: "
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
-"スタックã«ã‚·ãƒ¼ã‚¯ã‚¨ãƒ³ã‚¹ãƒ“ットを見ã¤ã‘ã¾ã—ãŸãŒã€ãƒŽãƒ¼ãƒ‰ã§ã¯ã‚りã¾ã›ã‚“。ãƒã‚°å ±å‘Š"
+"スタックã«ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ãƒ“ットを見ã¤ã‘ã¾ã—ãŸãŒã€ãƒŽãƒ¼ãƒ‰ã§ã¯ã‚りã¾ã›ã‚“。ãƒã‚°å ±å‘Š"
"ã‚’ï¼"
#: modules/visual_script/visual_script.cpp
msgid "Stack overflow with stack depth: "
-msgstr "スタックオーãƒãƒ¼ãƒ•ロー ã‚¹ã‚¿ãƒƒã‚¯ã®æ·±ã•: "
+msgstr "スタックオーãƒãƒ¼ãƒ•ロー発生 ã‚¹ã‚¿ãƒƒã‚¯ã®æ·±ã•: "
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Signal Arguments"
@@ -12845,7 +12876,7 @@ msgstr "ãƒãƒ¼ãƒˆåを変更"
#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
-msgstr "既存ã®çµ„è¾¼ã¿é–¢æ•°ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã€‚"
+msgstr "既存ã®çµ„ã¿è¾¼ã¿é–¢æ•°ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã€‚"
#: modules/visual_script/visual_script_editor.cpp
msgid "Create a new function."
@@ -12873,7 +12904,7 @@ msgstr "ã“ã®åå‰ã¯ç„¡åйãªè­˜åˆ¥å­ã§ã™:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name already in use by another func/var/signal:"
-msgstr "ä»–ã®é–¢æ•°/変数/シグナルã«ã‚ˆã‚Šæ—¢ã«ä½¿ã‚れã¦ã„ã‚‹åå‰:"
+msgstr "ä»–ã®é–¢æ•°/変数/シグナルã«ã‚ˆã‚Šã™ã§ã«ä½¿ã‚れã¦ã„ã‚‹åå‰:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Rename Function"
@@ -12885,7 +12916,7 @@ msgstr "変数åを変更"
#: modules/visual_script/visual_script_editor.cpp
msgid "Rename Signal"
-msgstr "シグナルã®åå‰ã‚’変ãˆã‚‹"
+msgstr "シグナルåを変更"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Function"
@@ -12926,8 +12957,8 @@ msgstr "VisualScriptノードを複製"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
-"%sを押ã—ãŸã¾ã¾Getterã‚’(ドラッグ&)ドロップã™ã‚‹ã€‚Shiftを押ã—ãŸã¾ã¾æ±Žç”¨ç½²åã‚’"
-"(ドラッグ&)ドロップã™ã‚‹ã€‚"
+"%sを押ã—ãŸã¾ã¾Getterã‚’(ドラッグ&)ドロップã™ã‚‹ã€‚Shiftを押ã—ãŸã¾ã¾æ±Žç”¨ã‚·ã‚°ãƒ"
+"ãƒãƒ£ã‚’(ドラッグ&)ドロップã™ã‚‹ã€‚"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
@@ -12971,8 +13002,8 @@ msgid ""
"Can't drop properties because script '%s' is not used in this scene.\n"
"Drop holding 'Shift' to just copy the signature."
msgstr ""
-"ã“ã®ã‚·ãƒ¼ãƒ³ã§ã¯ã‚¹ã‚¯ãƒªãƒ—ト '%s'ãŒä½¿ç”¨ã•れã¦ã„ãªã„ãŸã‚ã€ãƒ—ロパティを削除ã§ãã¾ã›"
-"ん。\n"
+"ã“ã®ã‚·ãƒ¼ãƒ³ã§ã¯ã‚¹ã‚¯ãƒªãƒ—ト '%s'ãŒä½¿ç”¨ã•れã¦ã„ãªã„ãŸã‚ã€ãƒ—ロパティをドロップã§ã"
+"ã¾ã›ã‚“。\n"
"「Shiftã€ã‚’押ã—ãªãŒã‚‰ãƒ‰ãƒ­ãƒƒãƒ—ã™ã‚‹ã¨ã€ç½²åãŒã‚³ãƒ”ーã•れã¾ã™ã€‚"
#: modules/visual_script/visual_script_editor.cpp
@@ -13013,7 +13044,7 @@ msgstr "ãƒŽãƒ¼ãƒ‰ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã«æŽ¥ç¶š"
#: modules/visual_script/visual_script_editor.cpp
msgid "Script already has function '%s'"
-msgstr "スクリプトã«é–¢æ•° '%s'ãŒæ—¢ã«ã‚りã¾ã™"
+msgstr "スクリプトã«é–¢æ•° '%s'ãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
@@ -13045,7 +13076,7 @@ msgstr "シーケンス ãƒãƒ¼ãƒˆã‚’æŒã¤ãƒŽãƒ¼ãƒ‰ã‚’å°‘ãªãã¨ã‚‚ 1 ã¤é¸æŠ
#: modules/visual_script/visual_script_editor.cpp
msgid "Try to only have one sequence input in selection."
-msgstr "セクションã§ã¯å”¯ä¸€ã¤ã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹å…¥åŠ›ã‚’æŒã¤ã‚ˆã†ã«ã—ã¦ãã ã•ã„。"
+msgstr "é¸æŠžã™ã‚‹ã‚·ãƒ¼ã‚±ãƒ³ã‚¹å…¥åŠ›ã¯1ã¤ã ã‘ã«ã—ã¦ãã ã•ã„。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Create Function"
@@ -13129,11 +13160,11 @@ msgstr "メンãƒãƒ¼ã‚’編集"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Input type not iterable: "
-msgstr "入力タイプをå復ã§ãã¾ã›ã‚“: "
+msgstr "入力タイプã¯å復å¯èƒ½ã§ã¯ã‚りã¾ã›ã‚“: "
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
-msgstr "イテレータãŒç„¡åйã«ãªã‚Šã¾ã—ãŸ"
+msgstr "イテレーターãŒç„¡åйã«ãªã‚Šã¾ã—ãŸ"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid: "
@@ -13141,7 +13172,7 @@ msgstr "イテレーターãŒç„¡åйã«ãªã‚Šã¾ã—ãŸ: "
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name."
-msgstr "インデックスプロパティåãŒç„¡åйã§ã™ã€‚"
+msgstr "インデックスã®ãƒ—ロパティåãŒç„¡åйã§ã™ã€‚"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Base object is not a Node!"
@@ -13180,8 +13211,8 @@ msgid ""
"Invalid return value from _step(), must be integer (seq out), or string "
"(error)."
msgstr ""
-"_step()ã®ç„¡åŠ¹ãªæˆ»ã‚Šå€¤ã€€integer (seq out)ã¾ãŸã¯string (error)ã§ãªã„ã¨ã„ã‘ã¾ã›"
-"ん。"
+"_step()ã®æˆ»ã‚Šå€¤ãŒç„¡åйã§ã™ã€‚integer (seq out)ã¾ãŸã¯string (error)ã§ãªã‘れã°ãª"
+"りã¾ã›ã‚“。"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search VisualScript"
@@ -13264,16 +13295,20 @@ msgid ""
"Either Debug Keystore, Debug User AND Debug Password settings must be "
"configured OR none of them."
msgstr ""
+"Debug Keystore, Debug User, Debug Passwordã¯ã€ã™ã¹ã¦è¨­å®šã•れã¦ã„ã‚‹ã‹ã€ã™ã¹ã¦"
+"空ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
#: platform/android/export/export_plugin.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
-msgstr "デãƒãƒƒã‚°ã‚­ãƒ¼ã‚¹ãƒˆã‚¢ãŒã‚¨ãƒ‡ã‚£ã‚¿è¨­å®šã«ã‚‚プリセットã«ã‚‚設定ã•れã¦ã„ã¾ã›ã‚“。"
+msgstr "Debug KeystoreãŒã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼è¨­å®šã«ã‚‚プリセットã«ã‚‚設定ã•れã¦ã„ã¾ã›ã‚“。"
#: platform/android/export/export_plugin.cpp
msgid ""
"Either Release Keystore, Release User AND Release Password settings must be "
"configured OR none of them."
msgstr ""
+"Release Keystore, Release User, Release Passwordã¯ã€ã™ã¹ã¦è¨­å®šã•れã¦ã„ã‚‹ã‹ã€"
+"ã™ã¹ã¦ç©ºã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
#: platform/android/export/export_plugin.cpp
msgid "Release keystore incorrectly configured in the export preset."
@@ -13281,11 +13316,11 @@ msgstr "エクスãƒãƒ¼ãƒˆè¨­å®šã«ã¦ãƒªãƒªãƒ¼ã‚¹ キーストアãŒèª¤ã£ã¦è¨
#: platform/android/export/export_plugin.cpp
msgid "A valid Android SDK path is required in Editor Settings."
-msgstr "エディタ設定ã§Android SDKãƒ‘ã‚¹ã®æŒ‡å®šãŒå¿…è¦ã§ã™ã€‚"
+msgstr "エディター設定ã§Android SDKãƒ‘ã‚¹ã®æŒ‡å®šãŒå¿…è¦ã§ã™ã€‚"
#: platform/android/export/export_plugin.cpp
msgid "Invalid Android SDK path in Editor Settings."
-msgstr "エディタ設定ã®Android SDKパスãŒç„¡åйã§ã™ã€‚"
+msgstr "エディター設定ã®Android SDKパスãŒç„¡åйã§ã™ã€‚"
#: platform/android/export/export_plugin.cpp
msgid "Missing 'platform-tools' directory!"
@@ -13297,7 +13332,8 @@ msgstr "Android SDK platform-toolsã®adbコマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
#: platform/android/export/export_plugin.cpp
msgid "Please check in the Android SDK directory specified in Editor Settings."
-msgstr "ã‚¨ãƒ‡ã‚£ã‚¿è¨­å®šã§æŒ‡å®šã•れãŸAndroid SDKã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’確èªã—ã¦ãã ã•ã„。"
+msgstr ""
+"ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼è¨­å®šã§æŒ‡å®šã•れãŸAndroid SDKã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’確èªã—ã¦ãã ã•ã„。"
#: platform/android/export/export_plugin.cpp
msgid "Missing 'build-tools' directory!"
@@ -13383,8 +13419,7 @@ msgstr "Android用ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆä¸­"
#: platform/android/export/export_plugin.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
-msgstr ""
-"無効ãªãƒ•ァイルåã§ã™ï¼ Android App Bundle ã«ã¯æ‹¡å¼µå­ *.aab ãŒå¿…è¦ã§ã™ã€‚"
+msgstr "無効ãªãƒ•ァイルåã§ã™ï¼Android App Bundle ã«ã¯æ‹¡å¼µå­ *.aab ãŒå¿…è¦ã§ã™ã€‚"
#: platform/android/export/export_plugin.cpp
msgid "APK Expansion not compatible with Android App Bundle."
@@ -13423,6 +13458,7 @@ msgstr ""
msgid ""
"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"
@@ -13481,6 +13517,10 @@ msgid ""
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
+"é¸æŠžã•れãŸã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£: %s ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ†ãƒ³ãƒ—レートã®ãƒ©ã‚¤ãƒ–ラリãŒä¸è¶³ã—ã¦"
+"ã„ã¾ã™ã€‚\n"
+"å¿…è¦ãªãƒ©ã‚¤ãƒ–ラリをã™ã¹ã¦å«ã‚€ãƒ†ãƒ³ãƒ—レートを作æˆã™ã‚‹ã‹ã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã®ãƒ—リセッ"
+"トã§ã€ä¸è¶³ã—ã¦ã„るアーキテクãƒãƒ£ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã¦ãã ã•ã„。"
#: platform/android/export/export_plugin.cpp
msgid "Adding files..."
@@ -13496,7 +13536,7 @@ msgstr "APKを最é©åŒ–..."
#: platform/android/export/export_plugin.cpp
msgid "Could not unzip temporary unaligned APK."
-msgstr ""
+msgstr "temporary unaligned APKを展開ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
@@ -13604,35 +13644,38 @@ msgstr "無効ãªèƒŒæ™¯è‰²ã§ã™ã€‚"
#: platform/uwp/export/export.cpp
msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Storeロゴã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横50x50ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)。"
+msgstr "Storeロゴã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横50x50ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“)。"
#: platform/uwp/export/export.cpp
msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "44X44ã®æ­£æ–¹å½¢ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横44x44ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)。"
+msgstr ""
+"44X44ã®æ­£æ–¹å½¢ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横44x44ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“)。"
#: platform/uwp/export/export.cpp
msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "71x71ã®æ­£æ–¹å½¢ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横71x71ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)。"
+msgstr ""
+"71x71ã®æ­£æ–¹å½¢ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横71x71ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“)。"
#: platform/uwp/export/export.cpp
msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
msgstr ""
-"150X150ã®æ­£æ–¹å½¢ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横150x150ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)。"
+"150X150ã®æ­£æ–¹å½¢ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横150x150ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“)。"
#: platform/uwp/export/export.cpp
msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
msgstr ""
-"310X310ã®æ­£æ–¹å½¢ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横310x310ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)。"
+"310X310ã®æ­£æ–¹å½¢ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横310x310ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“)。"
#: platform/uwp/export/export.cpp
msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
msgstr ""
-"310X150ã®ãƒ¯ã‚¤ãƒ‰ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横310x150ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)。"
+"310X150ã®ãƒ¯ã‚¤ãƒ‰ãƒ­ã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横310x150ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“)。"
#: platform/uwp/export/export.cpp
msgid "Invalid splash screen image dimensions (should be 620x300)."
msgstr ""
-"スプラッシュスクリーンã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横620x300ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)。"
+"スプラッシュスクリーンã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横620x300ã§ãªã‘れã°ãªã‚Šã¾ã›"
+"ん)。"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -13679,10 +13722,12 @@ msgstr "空㮠CollisionPolygon2D ã¯ã€è¡çªåˆ¤å®šã‚’æŒã¡ã¾ã›ã‚“。"
#: scene/2d/collision_polygon_2d.cpp
msgid "Invalid polygon. At least 3 points are needed in 'Solids' build mode."
msgstr ""
+"無効ãªãƒãƒªã‚´ãƒ³ã§ã™ã€‚'Solids' ビルドモードã§ã¯æœ€ä½Ž3ã¤ã®ãƒã‚¤ãƒ³ãƒˆãŒå¿…è¦ã§ã™ã€‚"
#: scene/2d/collision_polygon_2d.cpp
msgid "Invalid polygon. At least 2 points are needed in 'Segments' build mode."
msgstr ""
+"無効ãªãƒãƒªã‚´ãƒ³ã§ã™ã€‚'Segments' ビルドモードã§ã¯æœ€ä½Ž2ã¤ã®ãƒã‚¤ãƒ³ãƒˆãŒå¿…è¦ã§ã™ã€‚"
#: scene/2d/collision_shape_2d.cpp
msgid ""
@@ -13699,8 +13744,8 @@ msgid ""
"A shape must be provided for CollisionShape2D to function. Please create a "
"shape resource for it!"
msgstr ""
-"関数ã«å¯¾ã—㦠CollisionShape2D ã®å½¢çж (シェイプ) を指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã"
-"ã®ãŸã‚ã®ã‚·ã‚§ã‚¤ãƒ—リソースを作æˆã—ã¦ãã ã•ã„ï¼"
+"CollisionShape2D ãŒæ©Ÿèƒ½ã™ã‚‹ã«ã¯ã‚·ã‚§ã‚¤ãƒ—を指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãã®ãŸã‚ã®"
+"シェイプリソースを作æˆã—ã¦ãã ã•ã„ï¼"
#: scene/2d/collision_shape_2d.cpp
msgid ""
@@ -13749,8 +13794,8 @@ msgstr ""
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."
@@ -13785,7 +13830,8 @@ msgid ""
"Use the CPUParticles2D node instead. You can use the \"Convert to "
"CPUParticles\" option for this purpose."
msgstr ""
-"GPUベースã®ãƒ‘ーティクルã¯ã€GLES2ビデオドライãƒã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。\n"
+"GPUベースã®ãƒ‘ーティクルã¯ã€GLES2ビデオドライãƒãƒ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›"
+"ん。\n"
"代ã‚りã«CPUParticles2Dノードを使用ã—ã¦ãã ã•ã„。ã“ã®ç›®çš„ã®ãŸã‚ã« \"CPUパー"
"ティクルã«å¤‰æ›\" オプションを使用ã§ãã¾ã™ã€‚"
@@ -13794,8 +13840,8 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
-"パーティクルを処ç†ã™ã‚‹ãƒžãƒ†ãƒªã‚¢ãƒ«ã¯å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ãªã„ãŸã‚ã€å‹•作ã¯ã‚¤ãƒ³ãƒ—リン"
-"トã•れã¾ã›ã‚“。"
+"パーティクルを処ç†ã™ã‚‹ãƒžãƒ†ãƒªã‚¢ãƒ«ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ãªã„ãŸã‚ã€å‹•ä½œã‚’åæ˜ ã§ãã¾"
+"ã›ã‚“ã§ã—ãŸã€‚"
#: scene/2d/particles_2d.cpp
msgid ""
@@ -13818,7 +13864,7 @@ msgid ""
msgstr ""
"RigidBody2D (Characterモードã¾ãŸã¯Rigidモード) ã«å¯¾ã™ã‚‹ã‚µã‚¤ã‚ºå¤‰æ›´ã¯ã€å®Ÿè¡Œæ™‚ã«"
"物ç†ã‚¨ãƒ³ã‚¸ãƒ³ã«ã‚ˆã£ã¦ä¸Šæ›¸ãã•れã¾ã™ã€‚\n"
-"代ã‚りã«ã€å­ã®ã‚³ãƒªã‚¸ãƒ§ãƒ³ シェイプã®ã‚µã‚¤ã‚ºã‚’変更ã—ã¦ãã ã•ã„。"
+"代ã‚りã«ã€å­ã®ã‚³ãƒªã‚¸ãƒ§ãƒ³ã‚·ã‚§ã‚¤ãƒ—ã®ã‚µã‚¤ã‚ºã‚’変更ã—ã¦ãã ã•ã„。"
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -13873,8 +13919,8 @@ msgid ""
"The controller ID must not be 0 or this controller won't be bound to an "
"actual controller."
msgstr ""
-"コントローラIDã‚’0ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。0ã«ã™ã‚‹ã¨ã€ã“ã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ã¯å®Ÿéš›ã®"
-"コントローラã«ãƒã‚¤ãƒ³ãƒ‰ã•れã¾ã›ã‚“。"
+"コントローラーIDã‚’0ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。0ã«ã™ã‚‹ã¨ã€ã“ã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ãƒ¼ã¯å®Ÿ"
+"éš›ã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ãƒ¼ã«ãƒã‚¤ãƒ³ãƒ‰ã•れã¾ã›ã‚“。"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent."
@@ -13905,9 +13951,8 @@ msgid "Preparing environment"
msgstr "環境を準備中"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Generating capture"
-msgstr "ライトマップã®ç”Ÿæˆ"
+msgstr "キャプãƒãƒ£ãƒ¼ã‚’生æˆä¸­"
#: scene/3d/baked_lightmap.cpp
msgid "Saving lightmaps"
@@ -13957,8 +14002,8 @@ msgid ""
"A shape must be provided for CollisionShape to function. Please create a "
"shape resource for it."
msgstr ""
-"関数㮠CollisionShape ã®å½¢çŠ¶ã‚’æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãれã®ãŸã‚ã®ã‚·ã‚§ã‚¤ãƒ—リ"
-"ソースを作æˆã—ã¦ãã ã•ã„。"
+"CollisionShape ãŒæ©Ÿèƒ½ã™ã‚‹ã«ã¯ã‚·ã‚§ã‚¤ãƒ—を指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãã®ãŸã‚ã®ã‚·ã‚§"
+"イプリソースを作æˆã—ã¦ãã ã•ã„。"
#: scene/3d/collision_shape.cpp
msgid ""
@@ -14000,7 +14045,7 @@ msgid ""
"GIProbes are not supported by the GLES2 video driver.\n"
"Use a BakedLightmap instead."
msgstr ""
-"GIProbesã¯GLES2ビデオドライãƒã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。\n"
+"GIProbesã¯GLES2ビデオドライãƒãƒ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。\n"
"代ã‚りã«BakedLightmapを使用ã—ã¦ãã ã•ã„。"
#: scene/3d/gi_probe.cpp
@@ -14033,11 +14078,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "シェイプãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“。"
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "uniform スケールã®ã¿ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™ã€‚"
#: scene/3d/particles.cpp
msgid ""
@@ -14045,7 +14090,8 @@ msgid ""
"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles"
"\" option for this purpose."
msgstr ""
-"GPUベースã®ãƒ‘ーティクルã¯ã€GLES2ビデオドライãƒã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。\n"
+"GPUベースã®ãƒ‘ーティクルã¯ã€GLES2ビデオドライãƒãƒ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›"
+"ん。\n"
"代ã‚りã«CPUParticlesノードを使用ã—ã¦ãã ã•ã„。ã“ã®ç›®çš„ã®ãŸã‚ã« \"CPUパーティ"
"クルã«å¤‰æ›\" オプションを使用ã§ãã¾ã™ã€‚"
@@ -14141,6 +14187,8 @@ msgid ""
"Room convex hull contains a large number of planes.\n"
"Consider simplifying the room bound in order to increase performance."
msgstr ""
+"Roomã®å‡¸åŒ…ã«å¤§é‡ã®å¹³é¢ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚\n"
+"パフォーマンスã®å‘上ã®ãŸã‚ã«ã€Roomã®å¢ƒç•Œã®å˜ç´”化を検討ã—ã¦ãã ã•ã„。"
#: scene/3d/room_group.cpp
msgid "The RoomManager should not be placed inside a RoomGroup."
@@ -14187,13 +14235,15 @@ msgstr ""
#: scene/3d/room_manager.cpp
msgid "Portal link room not found, check output log for details."
-msgstr ""
+msgstr "Portal link room ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。詳細ã¯å‡ºåŠ›ãƒ­ã‚°ã‚’ç¢ºèªã—ã¦ãã ã•ã„。"
#: 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 ""
+"Portalã®è‡ªå‹•リンクã«å¤±æ•—ã—ã¾ã—ãŸã€‚詳細ã¯å‡ºåŠ›ãƒ­ã‚°ã‚’ç¢ºèªã—ã¦ãã ã•ã„。\n"
+"ãƒãƒ¼ã‚¿ãƒ«ãŒå…ƒã®Roomã‹ã‚‰å¤–å´ã‚’å‘ã„ã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
#: scene/3d/room_manager.cpp
msgid ""
@@ -14209,6 +14259,9 @@ msgid ""
"Error calculating room bounds.\n"
"Ensure all rooms contain geometry or manual bounds."
msgstr ""
+"Roomã®å¢ƒç•Œã®è¨ˆç®—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n"
+"ã™ã¹ã¦ã®Roomã«ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¾ãŸã¯ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã®å¢ƒç•ŒãŒå«ã¾ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ã"
+"ã ã•ã„。"
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
@@ -14245,8 +14298,8 @@ msgid ""
"WorldEnvironment requires its \"Environment\" property to contain an "
"Environment to have a visible effect."
msgstr ""
-"EnvironmentãŒå¯è¦–エフェクトをæŒã¤ãŸã‚ã«ã€WorldEnvironmentã®ã€ŒEnvironmentã€ãƒ—"
-"ロパティãŒå¿…è¦ã§ã™ã€‚"
+"WorldEnvironmentã«ã¯ã€è¦–覚効果を与ãˆã‚‹ãŸã‚ã«\"Environment\"プロパティã«"
+"EnvironmentãŒå«ã¾ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
#: scene/3d/world_environment.cpp
msgid ""
@@ -14321,7 +14374,7 @@ msgstr ""
#: scene/gui/color_picker.cpp
msgid "Pick a color from the editor window."
-msgstr "エディタウィンドウã‹ã‚‰è‰²ã‚’é¸æŠžã€‚"
+msgstr "エディターウィンドウã‹ã‚‰è‰²ã‚’é¸æŠžã€‚"
#: scene/gui/color_picker.cpp
msgid "HSV"
@@ -14347,17 +14400,17 @@ msgid ""
msgstr ""
"コンテナ自体ã¯ã€ã‚¹ã‚¯ãƒªãƒ—トã§å­ã®é…置動作を設定ã—ãªã„é™ã‚Šã€ä½•ã®å½¹å‰²ã‚‚æžœãŸã—ã¾"
"ã›ã‚“。\n"
-"スクリプトを追加ã—ãªã„å ´åˆã¯ã€ä»£ã‚ã‚Šã«æ™®é€šã®ã€Œã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ« ã€ãƒŽãƒ¼ãƒ‰ã‚’使用ã—ã¦"
-"ãã ã•ã„。"
+"スクリプトを追加ã—ãªã„å ´åˆã¯ã€ä»£ã‚りã«ç”Ÿã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒŽãƒ¼ãƒ‰ã‚’使用ã—ã¦ãã ã•"
+"ã„。"
#: scene/gui/control.cpp
msgid ""
"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to "
"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"."
msgstr ""
-"コントロールã®ãƒžã‚¦ã‚¹ãƒ•ィルタãŒã€Œç„¡è¦–ã€ã«è¨­å®šã•れã¦ã„ã‚‹ãŸã‚ã€ãƒ’ントツールãƒãƒƒ"
-"プã¯è¡¨ç¤ºã•れã¾ã›ã‚“。ã“れを解決ã™ã‚‹ã«ã¯ã€ãƒžã‚¦ã‚¹ãƒ•ã‚£ãƒ«ã‚¿ã‚’ã€Œåœæ­¢ã€ã¾ãŸã¯ã€Œãƒ‘"
-"スã€ã«è¨­å®šã—ã¾ã™ã€‚"
+"コントロールã®ãƒžã‚¦ã‚¹ãƒ•ィルターãŒã€Œç„¡è¦–ã€ã«è¨­å®šã•れã¦ã„ã‚‹ãŸã‚ã€ãƒ’ントツール"
+"ãƒãƒƒãƒ—ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。ã“れを解決ã™ã‚‹ã«ã¯ã€ãƒžã‚¦ã‚¹ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚’ã€Œåœæ­¢ã€ã¾ãŸã¯"
+"「パスã€ã«è¨­å®šã—ã¾ã™ã€‚"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -14382,6 +14435,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Axis Stretchプロパティã®TileãŠã‚ˆã³Tile Fitオプションã¯ã€GLES3レンダリングãƒãƒƒ"
+"クエンドを使用ã—ã¦ã„ã‚‹å ´åˆã«ã®ã¿æœ‰åйã§ã™ã€‚\n"
+"ç¾åœ¨GLES2ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒä½¿ç”¨ã•れã¦ã„ã‚‹ãŸã‚ã€ã“れらã®ãƒ¢ãƒ¼ãƒ‰ã¯ä»£ã‚りã«Stretchã®"
+"よã†ã«æŒ¯ã‚‹èˆžã„ã¾ã™ã€‚"
#: scene/gui/popup.cpp
msgid ""
@@ -14419,6 +14476,18 @@ msgstr ""
"ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆè¨­å®šã§æŒ‡å®šã•れã¦ã„る既定ã®ç’°å¢ƒ (Rendering -> Environment -> "
"Default Environment) を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚"
+#: 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 ""
+"タイマーã®å¾…ã¡æ™‚é–“ãŒéžå¸¸ã«çŸ­ã„ (0.05秒未満) ã®å ´åˆã€æç”»ã¾ãŸã¯ç‰©ç†ãƒ•レーム"
+"レートã«å¿œã˜ã¦å¤§å¹…ã«å‹•作ãŒç•°ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n"
+"éžå¸¸ã«çŸ­ã„å¾…ã¡æ™‚é–“ã®å ´åˆã€Timerを使用ã›ãšã«ã‚¹ã‚¯ãƒªãƒ—トã®processループを使用ã™"
+"ã‚‹ã“ã¨ã‚’検討ã—ã¦ãã ã•ã„。"
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14432,18 +14501,23 @@ msgstr ""
"当ã¦ã¾ã™ã€‚"
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
-msgstr "レンダーã™ã‚‹ã«ã¯ãƒ“ューãƒãƒ¼ãƒˆã®ã‚µã‚¤ã‚ºãŒ 0 より大ãã„å¿…è¦ãŒã‚りã¾ã™ã€‚"
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
+msgstr ""
+"レンダーã™ã‚‹ã«ã¯Viewportã®ç¸¦æ¨ªãれãžã‚ŒãŒ2ピクセル以上ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphereã®çƒå½¢ã‚’セット"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
"The sampler port is connected but not used. Consider changing the source to "
"'SamplerPort'."
msgstr ""
+"サンプラーãƒãƒ¼ãƒˆã¯æŽ¥ç¶šã•れã¦ã„ã¾ã™ãŒã€ä½¿ç”¨ã•れã¦ã„ã¾ã›ã‚“。ソースを "
+"'SamplerPort'ã«å¤‰æ›´ã™ã‚‹ã“ã¨æ¤œè¨Žã—ã¦ãã ã•ã„。"
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for preview."
@@ -14479,7 +14553,7 @@ msgstr ""
#: servers/visual/shader_language.cpp
msgid "Fragment-stage varying could not been accessed in custom function!"
-msgstr ""
+msgstr "カスタム関数内ã§Fragment-stageã®Varyingã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—ãŸï¼"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
@@ -16232,10 +16306,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Couldn't save atlas image:"
#~ msgstr "アトラスイメージをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
-#, fuzzy
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "変æ›ã—ãŸãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "䏿­£ãªç¿»è¨³ã‚½ãƒ¼ã‚¹!"
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index 5e4f5d0094..548e016719 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -9,6 +9,7 @@
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: 2019-03-10 09:58+0000\n"
"Last-Translator: Rati Nikolaishvili <rati.nikolaishvili@gmail.com>\n"
@@ -2443,6 +2444,14 @@ msgid ""
"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 ""
@@ -2560,6 +2569,10 @@ 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."
@@ -2885,10 +2898,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4328,6 +4337,18 @@ 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 ""
@@ -4337,10 +4358,6 @@ msgid "Preset"
msgstr "ზუმის სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ–ე დáƒáƒ§áƒ”ნებáƒ"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr ""
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7315,12 +7332,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "დáƒáƒ›áƒáƒ™áƒ˜áƒ“ებულებების შემსწáƒáƒ áƒ”ბელი"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "წინáƒáƒ›áƒ“ებáƒáƒ áƒ” ნáƒáƒ‘იჯზე გáƒáƒ“áƒáƒ¡áƒ•ლáƒ"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7746,7 +7765,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7754,6 +7773,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8096,6 +8119,26 @@ 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 ""
@@ -14150,6 +14193,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14159,7 +14210,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/km.po b/editor/translations/km.po
index a5b6139d08..860accd0c5 100644
--- a/editor/translations/km.po
+++ b/editor/translations/km.po
@@ -7,6 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2021-04-19 22:33+0000\n"
"Last-Translator: Withuse <withuse@gmail.com>\n"
"Language-Team: Khmer (Central) <https://hosted.weblate.org/projects/godot-"
@@ -2320,6 +2321,14 @@ msgid ""
"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 ""
@@ -2436,6 +2445,10 @@ 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."
@@ -2755,10 +2768,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4159,15 +4168,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7051,11 +7068,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7465,7 +7482,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7473,6 +7490,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7810,6 +7831,26 @@ 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 ""
@@ -13667,6 +13708,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13676,7 +13725,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index c288a2b7e7..b9faa4762e 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -24,12 +24,14 @@
# Henry LeRoux <henry.leroux@ocsbstudent.ca>, 2021.
# Postive_ Cloud <postive12@gmail.com>, 2021.
# dewcked <dewcked@protonmail.ch>, 2021.
+# SteamB23 <steamb23@outlook.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-09-21 15:22+0000\n"
-"Last-Translator: Myeongjin Lee <aranet100@gmail.com>\n"
+"PO-Revision-Date: 2021-10-07 10:25+0000\n"
+"Last-Translator: SteamB23 <steamb23@outlook.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
"Language: ko\n"
@@ -43,7 +45,7 @@ msgstr ""
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
-"convert() ë©”ì„œë“œì˜ ì¸ìˆ˜ ìœ í˜•ì´ ì˜¬ë°”ë¥´ì§€ 않습니다. TYPE_* ìƒìˆ˜ë¥¼ 사용하세요."
+"convert() ë©”ì„œë“œì˜ ì¸ìˆ˜ íƒ€ìž…ì´ ì˜¬ë°”ë¥´ì§€ 않습니다. TYPE_* ìƒìˆ˜ë¥¼ 사용하세요."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
@@ -69,11 +71,11 @@ msgstr "ì—°ì‚°ìž %s, %s, %sì˜ í”¼ì—°ì‚°ìžê°€ 올바르지 않습니다."
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
-msgstr "ìžë£Œí˜• %s ì˜ ì¸ë±ìŠ¤ê°€ 기본형 %s 기준으로 올바르지 않습니다"
+msgstr "타입 %sì˜ ì¸ë±ìŠ¤ê°€ 기본 타입 %sì— ì˜¬ë°”ë¥´ì§€ 않습니다"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
-msgstr "ì¸ë±ìФ ì´ë¦„ '%s' ì´ ê¸°ë³¸í˜• %s 기준으로 올바르지 않습니다"
+msgstr "타입 '%s'ì˜ ì¸ë±ìФ ì´ë¦„ì´ ê¸°ë³¸ 타입 %sì— ì˜¬ë°”ë¥´ì§€ 않습니다"
#: core/math/expression.cpp
msgid "Invalid arguments to construct '%s'"
@@ -436,7 +438,7 @@ msgid ""
"-AudioStreamPlayer2D\n"
"-AudioStreamPlayer3D"
msgstr ""
-"오디오 íŠ¸ëž™ì€ ë‹¤ìŒ í˜•ì‹ì˜ 노드만 가리킬 수 있습니다.\n"
+"오디오 íŠ¸ëž™ì€ ë‹¤ìŒ íƒ€ìž…ì˜ ë…¸ë“œë§Œ 가리킬 수 있습니다:\n"
"-AudioStreamPlayer\n"
"-AudioStreamPlayer2D\n"
"-AudioStreamPlayer3D"
@@ -463,7 +465,7 @@ msgstr "트랙 경로가 올바르지 않아 키를 추가할 수 없습니다."
#: editor/animation_track_editor.cpp
msgid "Track is not of type Spatial, can't insert key"
-msgstr "íŠ¸ëž™ì´ Spatial 형ì‹ì´ 아니어서 키를 추가할 수 없습니다"
+msgstr "íŠ¸ëž™ì´ Spatial íƒ€ìž…ì´ ì•„ë‹ˆë¯€ë¡œ 키를 추가할 수 없습니다"
#: editor/animation_track_editor.cpp
msgid "Add Transform Track Key"
@@ -520,17 +522,18 @@ msgid ""
"Alternatively, use an import preset that imports animations to separate "
"files."
msgstr ""
-"ì´ ì• ë‹ˆë©”ì´ì…˜ì€ 가져온 ì”¬ì— ì†í•´ 있습니다. 가져온 íŠ¸ëž™ì˜ ë³€ê²½ ì‚¬í•­ì€ ì €ìž¥ë˜"
-"지 않습니다.\n"
+"ì´ ì• ë‹ˆë©”ì´ì…˜ì€ 불러온 ì”¬ì— ì†í•´ 있습니다. 불러온 íŠ¸ëž™ì˜ ë³€ê²½ì‚¬í•­ì€ ì €ìž¥ë˜ì§€ "
+"않습니다.\n"
"\n"
-"저장 ê¸°ëŠ¥ì„ í™œì„±í™”í•˜ë ¤ë©´ 맞춤 íŠ¸ëž™ì„ ì¶”ê°€í•˜ê³ , ì”¬ì˜ ê°€ì ¸ì˜¤ê¸° 설정으로 가서\n"
+"저장 ê¸°ëŠ¥ì„ í™œì„±í™”í•˜ë ¤ë©´ 커스텀 íŠ¸ëž™ì„ ì¶”ê°€í•˜ê³ , ì”¬ì˜ ë¶ˆëŸ¬ì˜¤ê¸°ê¸° 설정으로 ê°€"
+"서\n"
"\"Animation > Storage\" ì„¤ì •ì„ \"Files\"로, \"Animation > Keep Custom Tracks"
"\" ì„¤ì •ì„ í™œì„±í™”í•œ ë’¤, 다시 가져오십시오.\n"
-"아니면 가져오기 프리셋으로 애니메ì´ì…˜ì„ 별ë„ì˜ íŒŒì¼ë¡œ 가져올 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤."
+"아니면 불러오기 프리셋으로 애니메ì´ì…˜ì„ 별ë„ì˜ íŒŒì¼ë¡œ 불러올 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤."
#: editor/animation_track_editor.cpp
msgid "Warning: Editing imported animation"
-msgstr "경고: 가져온 애니메ì´ì…˜ì„ 편집하고 있ìŒ"
+msgstr "경고: 불러온 애니메ì´ì…˜ì„ 편집하고 있ìŒ"
#: editor/animation_track_editor.cpp
msgid "Select an AnimationPlayer node to create and edit animations."
@@ -712,7 +715,7 @@ msgstr "ë°°ì—´ í¬ê¸° 바꾸기"
#: editor/array_property_edit.cpp
msgid "Change Array Value Type"
-msgstr "배열 값 유형 바꾸기"
+msgstr "배열 값 타입 바꾸기"
#: editor/array_property_edit.cpp
msgid "Change Array Value"
@@ -961,7 +964,7 @@ msgstr "메서드로 ì´ë™"
#: editor/create_dialog.cpp
msgid "Change %s Type"
-msgstr "%s 유형 바꾸기"
+msgstr "%s 타입 바꾸기"
#: editor/create_dialog.cpp editor/project_settings_editor.cpp
msgid "Change"
@@ -1022,7 +1025,7 @@ msgid ""
"Changes will only take effect when reloaded."
msgstr ""
"씬 '%s'ì´(ê°€) 현재 편집ë˜ê³  있습니다.\n"
-"변경 ì‚¬í•­ì€ ë‹¤ì‹œ 불러온 ë’¤ì— ë°˜ì˜ë©ë‹ˆë‹¤."
+"ë³€ê²½ì‚¬í•­ì€ ë‹¤ì‹œ 불러온 ë’¤ì— ë°˜ì˜ë©ë‹ˆë‹¤."
#: editor/dependency_editor.cpp
msgid ""
@@ -1030,7 +1033,7 @@ msgid ""
"Changes will only take effect when reloaded."
msgstr ""
"리소스 '%s'ì´(ê°€) 현재 사용 중입니다.\n"
-"변경 ì‚¬í•­ì€ ë‹¤ì‹œ 불러온 ë’¤ì— ë°˜ì˜ë©ë‹ˆë‹¤."
+"ë³€ê²½ì‚¬í•­ì€ ë‹¤ì‹œ 불러온 ë’¤ì— ë°˜ì˜ë©ë‹ˆë‹¤."
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -1494,7 +1497,7 @@ msgstr "ì—”ì§„ì— ì´ë¯¸ 있는 í´ëž˜ìФ ì´ë¦„ê³¼ 겹치지 않아야 합니ë‹
#: editor/editor_autoload_settings.cpp
msgid "Must not collide with an existing built-in type name."
-msgstr "기존 내장 ìžë£Œí˜•ê³¼ ì´ë¦„ê³¼ 겹치지 않아야 합니다."
+msgstr "기존 내장 타입과 ì´ë¦„ê³¼ 겹치지 않아야 합니다."
#: editor/editor_autoload_settings.cpp
msgid "Must not collide with an existing global constant name."
@@ -1579,7 +1582,7 @@ msgstr "씬 ì—…ë°ì´íЏ 중"
#: editor/editor_data.cpp
msgid "Storing local changes..."
-msgstr "지역 변경 ì‚¬í•­ì„ ì €ìž¥ 중..."
+msgstr "로컬 ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ëŠ” 중..."
#: editor/editor_data.cpp
msgid "Updating scene..."
@@ -1633,7 +1636,7 @@ msgstr "ì˜ˆìƒ ê²½ë¡œì—서 내보내기 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:"
#: editor/editor_export.cpp
msgid "Packing"
-msgstr "묶는 중"
+msgstr "패킹 중"
#: editor/editor_export.cpp
msgid ""
@@ -1695,13 +1698,13 @@ msgstr ""
#: 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 "ì‚¬ìš©ìž ì§€ì • 디버그 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
+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 "ì‚¬ìš©ìž ì§€ì • 출시 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
+msgstr "커스텀 릴리스 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -1737,7 +1740,7 @@ msgstr "파ì¼ì‹œìŠ¤í…œ ë…"
#: editor/editor_feature_profile.cpp
msgid "Import Dock"
-msgstr "ë… ê°€ì ¸ì˜¤ê¸°"
+msgstr "ë… ë¶ˆëŸ¬ì˜¤ê¸°"
#: editor/editor_feature_profile.cpp
msgid "Allows to view and edit 3D scenes."
@@ -1770,7 +1773,7 @@ msgid ""
"Allows to configure import settings for individual assets. Requires the "
"FileSystem dock to function."
msgstr ""
-"개별 ì• ì…‹ì— ëŒ€í•œ 가져오기 ì„¤ì •ì„ êµ¬ì„±í•  수 있게 합니다. ìž‘ë™í•˜ë ¤ë©´ 파ì¼ì‹œìФ"
+"개별 ì• ì…‹ì— ëŒ€í•œ 불러오기 ì„¤ì •ì„ êµ¬ì„±í•  수 있게 합니다. ìž‘ë™í•˜ë ¤ë©´ 파ì¼ì‹œìФ"
"í…œ ë…ì´ í•„ìš”í•©ë‹ˆë‹¤."
#: editor/editor_feature_profile.cpp
@@ -1827,15 +1830,15 @@ msgstr "노드와 í´ëž˜ìФ:"
#: editor/editor_feature_profile.cpp
msgid "File '%s' format is invalid, import aborted."
-msgstr "íŒŒì¼ '%s' 형ì‹ì´ 올바르지 않습니다. 가져오기를 중단합니다."
+msgstr "íŒŒì¼ '%s' 형ì‹ì´ 올바르지 않습니다. 불러오기를 중단합니다."
#: editor/editor_feature_profile.cpp
msgid ""
"Profile '%s' already exists. Remove it first before importing, import "
"aborted."
msgstr ""
-"프로필 '%s'ì´(ê°€) ì´ë¯¸ 있습니다. 가져오기 ì „ì— ì´ë¯¸ 있는 í”„ë¡œí•„ì„ ë¨¼ì € 제거하"
-"세요. 가져오기를 중단합니다."
+"프로필 '%s'ì´(ê°€) ì´ë¯¸ 있습니다. 불러오기 ì „ì— ì´ë¯¸ 있는 í”„ë¡œí•„ì„ ë¨¼ì € 제거하"
+"세요. 불러오기를 중단합니다."
#: editor/editor_feature_profile.cpp
msgid "Error saving profile to path: '%s'."
@@ -1868,7 +1871,7 @@ msgstr "현재 프로필로 설정"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
-msgstr "가져오기"
+msgstr "불러오기"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
msgid "Export"
@@ -1884,7 +1887,7 @@ msgstr "별ë„ì˜ ì˜µì…˜:"
#: editor/editor_feature_profile.cpp
msgid "Create or import a profile to edit available classes and properties."
-msgstr "사용 가능한 í´ëž˜ìŠ¤ì™€ ì†ì„±ì„ 편집하려면 í”„ë¡œí•„ì„ ë§Œë“¤ê±°ë‚˜ 가져오세요."
+msgstr "사용 가능한 í´ëž˜ìŠ¤ì™€ ì†ì„±ì„ 편집하려면 í”„ë¡œí•„ì„ ë§Œë“¤ê±°ë‚˜ 불러오세요."
#: editor/editor_feature_profile.cpp
msgid "New profile name:"
@@ -1896,7 +1899,7 @@ msgstr "Godot 기능 프로필"
#: editor/editor_feature_profile.cpp
msgid "Import Profile(s)"
-msgstr "프로필 가져오기"
+msgstr "프로필 불러오기"
#: editor/editor_feature_profile.cpp
msgid "Export Profile"
@@ -1924,12 +1927,12 @@ msgstr "경로 복사"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Open in File Manager"
-msgstr "íŒŒì¼ íƒìƒ‰ê¸°ì—서 열기"
+msgstr "íŒŒì¼ ë§¤ë‹ˆì €ì—서 열기"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/filesystem_dock.cpp editor/project_manager.cpp
msgid "Show in File Manager"
-msgstr "íŒŒì¼ íƒìƒ‰ê¸°ì—서 보기"
+msgstr "íŒŒì¼ ë§¤ë‹ˆì €ì—서 보기"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -2051,7 +2054,7 @@ 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 "미리 보기:"
+msgstr "미리보기:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File:"
@@ -2065,11 +2068,13 @@ msgstr "소스 스캔중"
msgid ""
"There are multiple importers for different types pointing to file %s, import "
"aborted"
-msgstr "íŒŒì¼ % ì— í•´ë‹¹í•˜ëŠ” 가져오기 í¬ë§·ì´ 여러 종류입니다. 가져오기 중단ë¨"
+msgstr ""
+"íŒŒì¼ %sì„(를) 가리키고 있는 다른 íƒ€ìž…ì˜ ì—¬ëŸ¬ ê°œì˜ ìž„í¬í„°ê°€ 있으므로 가져오기"
+"ê°€ 중단ë˜ì—ˆìŠµë‹ˆë‹¤"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
-msgstr "애셋 (다시) 가져오기"
+msgstr "애셋 (다시) 불러오기"
#: editor/editor_help.cpp
msgid "Top"
@@ -2102,7 +2107,7 @@ msgstr "ì†ì„±"
#: editor/editor_help.cpp
msgid "override:"
-msgstr "재정ì˜:"
+msgstr "오버ë¼ì´ë“œ:"
#: editor/editor_help.cpp
msgid "default:"
@@ -2195,7 +2200,7 @@ msgstr "테마 ì†ì„±ë§Œ 표시"
#: editor/editor_help_search.cpp
msgid "Member Type"
-msgstr "멤버 유형"
+msgstr "멤버 타입"
#: editor/editor_help_search.cpp
msgid "Class"
@@ -2318,7 +2323,7 @@ msgstr "ì—디터 ì°½ì— ë³€í™”ê°€ ìžˆì„ ë•Œë§ˆë‹¤ 회전합니다."
#: editor/editor_node.cpp
msgid "Imported resources can't be saved."
-msgstr "가져온 리소스를 저장할 수 없습니다."
+msgstr "불러온 리소스를 저장할 수 없습니다."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -2406,6 +2411,15 @@ msgstr ""
"ì”¬ì„ ì €ìž¥í•  수 없습니다. (ì¸ìŠ¤í„´ìŠ¤ ë˜ëŠ” ìƒì†ê³¼ ê°™ì€) ì¢…ì† ê´€ê³„ë¥¼ 성립할 수 ì—†"
"는 것 같습니다."
+#: editor/editor_node.cpp
+#, fuzzy
+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 "열려있는 ì”¬ì€ ë®ì–´ì“¸ 수 없습니다!"
@@ -2458,8 +2472,8 @@ msgid ""
"Please read the documentation relevant to importing scenes to better "
"understand this workflow."
msgstr ""
-"ì´ ë¦¬ì†ŒìŠ¤ëŠ” 가져온 ì”¬ì— ì†í•œ 리소스ì´ë¯€ë¡œ 편집할 수 없습니다.\n"
-"ì´ ì›Œí¬í”Œë¡œë¥¼ ì´í•´í•˜ë ¤ë©´ 씬 가져오기(Importing Scenes)와 ê´€ë ¨ëœ ë¬¸ì„œë¥¼ ì½ì–´ì£¼"
+"ì´ ë¦¬ì†ŒìŠ¤ëŠ” 불러온 ì”¬ì— ì†í•œ 리소스ì´ë¯€ë¡œ 편집할 수 없습니다.\n"
+"ì´ ì›Œí¬í”Œë¡œë¥¼ ì´í•´í•˜ë ¤ë©´ 씬 불러오기(Importing Scenes)와 ê´€ë ¨ëœ ë¬¸ì„œë¥¼ ì½ì–´ì£¼"
"세요."
#: editor/editor_node.cpp
@@ -2468,15 +2482,15 @@ msgid ""
"Changes to it won't be kept when saving the current scene."
msgstr ""
"ì´ ë¦¬ì†ŒìŠ¤ëŠ” ì¸ìŠ¤í„´ìŠ¤ë˜ê±°ë‚˜ ìƒì†ëœ ì”¬ì— ì†í•´ 있습니다.\n"
-"현재 ì”¬ì„ ì €ìž¥í•´ë„ ë¦¬ì†ŒìŠ¤ì˜ ë³€ê²½ ì‚¬í•­ì´ ìœ ì§€ë˜ì§€ ì•Šì„ ê²ƒìž…ë‹ˆë‹¤."
+"현재 ì”¬ì„ ì €ìž¥í•´ë„ ë¦¬ì†ŒìŠ¤ì˜ ë³€ê²½ì‚¬í•­ì´ ìœ ì§€ë˜ì§€ ì•Šì„ ê²ƒìž…ë‹ˆë‹¤."
#: 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 ""
@@ -2485,9 +2499,9 @@ msgid ""
"Please read the documentation relevant to importing scenes to better "
"understand this workflow."
msgstr ""
-"ì´ ì”¬ì€ ê°€ì ¸ì˜¨ 것ì´ë¯€ë¡œ 변경 ì‚¬í•­ì´ ìœ ì§€ë˜ì§€ 않습니다.\n"
+"ì´ ì”¬ì€ ë¶ˆëŸ¬ì˜¨ 것ì´ë¯€ë¡œ ë³€ê²½ì‚¬í•­ì´ ìœ ì§€ë˜ì§€ 않습니다.\n"
"ì´ ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤í™”í•˜ê±°ë‚˜ ìƒì†í•˜ë©´ 편집할 수 있습니다.\n"
-"ì´ ì›Œí¬í”Œë¡œë¥¼ ì´í•´í•˜ë ¤ë©´ 씬 가져오기(Importing Scenes)와 ê´€ë ¨ëœ ë¬¸ì„œë¥¼ ì½ì–´ì£¼"
+"ì´ ì›Œí¬í”Œë¡œë¥¼ ì´í•´í•˜ë ¤ë©´ 씬 불러오기(Importing Scenes)와 ê´€ë ¨ëœ ë¬¸ì„œë¥¼ ì½ì–´ì£¼"
"세요."
#: editor/editor_node.cpp
@@ -2537,7 +2551,11 @@ msgstr "저장 & 닫기"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr "닫기 ì „ì— '%s'ì— ë³€ê²½ ì‚¬í•­ì„ ì €ìž¥í• ê¹Œìš”?"
+msgstr "닫기 ì „ì— '%s'ì— ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+
+#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr ""
#: editor/editor_node.cpp
msgid ""
@@ -2585,29 +2603,27 @@ msgstr "현재 ì”¬ì´ ì €ìž¥ë˜ì–´ 있지 않습니다. 무시하고 여시겠ìŠ
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "마우스 ë²„íŠ¼ì„ ëˆ„ë¥´ê³  있는 ë™ì•ˆì—는 실행 취소할 수 없습니다."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "실행 취소할 ê²ƒì´ ì—†ìŠµë‹ˆë‹¤."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "ë˜ëŒë¦¬ê¸°"
+msgstr "실행 취소: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "마우스 ë²„íŠ¼ì„ ëˆ„ë¥´ê³  있는 ë™ì•ˆì—는 다시 실행할 수 없습니다."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "다시 실행할 ê²ƒì´ ì—†ìŠµë‹ˆë‹¤."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "다시 실행"
+msgstr "다시 실행: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2651,19 +2667,19 @@ msgstr "저장 & 종료"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr "종료하기 ì „ì— í•´ë‹¹ ì”¬ì˜ ë³€ê²½ ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+msgstr "종료하기 ì „ì— í•´ë‹¹ ì”¬ì˜ ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before opening Project Manager?"
-msgstr "프로ì íЏ 매니터를 열기 ì „ì— í•´ë‹¹ ì”¬ì˜ ë³€ê²½ ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+msgstr "프로ì íЏ 매니저를 열기 ì „ì— í•´ë‹¹ ì”¬ì˜ ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
#: editor/editor_node.cpp
msgid ""
"This option is deprecated. Situations where refresh must be forced are now "
"considered a bug. Please report."
msgstr ""
-"ì´ ì˜µì…˜ì€ ì‚¬ìš©ë˜ì§€ 않습니다. 강제로 새로 고침해야 하는 ìƒí™©ì€ ì´ì œ 버그로 ê°„"
-"주ë©ë‹ˆë‹¤. 신고해주세요."
+"ì´ ì˜µì…˜ì€ ì‚¬ìš©ë˜ì§€ 않습니다. 강제로 새로고침해야 하는 ìƒí™©ì€ ì´ì œ 버그로 간주"
+"ë©ë‹ˆë‹¤. 신고해주세요."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
@@ -2706,7 +2722,7 @@ msgstr ""
msgid ""
"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
-"ë‹¤ìŒ ê²½ë¡œì—서 애드온 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 ì—†ìŒ: '%s' 기본 ìœ í˜•ì´ EditorPlugin"
+"ë‹¤ìŒ ê²½ë¡œì—서 애드온 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 ì—†ìŒ: '%s' 기본 íƒ€ìž…ì´ EditorPlugin"
"ì´ ì•„ë‹™ë‹ˆë‹¤."
#: editor/editor_node.cpp
@@ -2720,7 +2736,7 @@ msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
msgstr ""
-"씬 '%s'ì„(를) ìžë™ìœ¼ë¡œ 가져왔으므로 수정할 수 없습니다.\n"
+"씬 '%s'ì„(를) ìžë™ìœ¼ë¡œ 불러왔으므로 수정할 수 없습니다.\n"
"ì´ ì”¬ì„ íŽ¸ì§‘í•˜ë ¤ë©´ 새로운 ìƒì† ì”¬ì„ ë§Œë“¤ì–´ì•¼ 합니다."
#: editor/editor_node.cpp
@@ -2729,7 +2745,7 @@ msgid ""
"open the scene, then save it inside the project path."
msgstr ""
"ì”¬ì„ ë¶ˆëŸ¬ì˜¤ëŠ” 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. ì”¬ì€ í”„ë¡œì íЏ 경로 ì•ˆì— ìžˆì–´ì•¼ 합니다. "
-"'가져오기'를 사용해서 ì”¬ì„ ì—´ê³ , ê·¸ ì”¬ì„ í”„ë¡œì íЏ 경로 ì•ˆì— ì €ìž¥í•˜ì„¸ìš”."
+"'불러오기'를 사용해서 ì”¬ì„ ì—´ê³ , ê·¸ ì”¬ì„ í”„ë¡œì íЏ 경로 ì•ˆì— ì €ìž¥í•˜ì„¸ìš”."
#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
@@ -2889,10 +2905,6 @@ msgid "Save Scene"
msgstr "씬 저장"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "모든 씬 저장"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "다ìŒìœ¼ë¡œ 변환..."
@@ -2907,7 +2919,7 @@ msgstr "타ì¼ì…‹..."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Undo"
-msgstr "ë˜ëŒë¦¬ê¸°"
+msgstr "실행 취소"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
@@ -3180,7 +3192,7 @@ msgstr "씬 실행"
#: editor/editor_node.cpp
msgid "Play custom scene"
-msgstr "ì”¬ì„ ì§€ì •í•´ì„œ 실행합니다"
+msgstr "커스텀 씬 실행"
#: editor/editor_node.cpp
msgid "Play Custom Scene"
@@ -3253,12 +3265,12 @@ msgid ""
"the \"Use Custom Build\" option should be enabled in the Android export "
"preset."
msgstr ""
-"\"res://android/build\"ì— ì†ŒìŠ¤ í…œí”Œë¦¿ì„ ì„¤ì¹˜í•´ì„œ, 프로ì íŠ¸ë¥¼ 맞춤 Android 빌"
-"ë“œì— ë§žê²Œ 설정할 것입니다.\n"
-"그런 ë‹¤ìŒ ìˆ˜ì • ì‚¬í•­ì„ ì ìš©í•˜ê³  맞춤 APK를 만들어 내보낼 수 있습니다 (모듈 ì¶”"
-"가, AndroidManifest.xml 바꾸기 등).\n"
-"미리 ë¹Œë“œëœ APK를 사용하는 대신 맞춤 빌드를 만들려면, Android 내보내기 프리셋"
-"ì—서 \"맞춤 빌드 사용\" ì„¤ì •ì„ í™œì„±í™”í•´ì•¼ 합니다."
+"\"res://android/build\"ì— ì†ŒìŠ¤ í…œí”Œë¦¿ì„ ì„¤ì¹˜í•´ì„œ 프로ì íŠ¸ë¥¼ 커스텀 Android 빌"
+"ë“œì— ë§žê²Œ 설정합니다.\n"
+"그런 ë‹¤ìŒ ìˆ˜ì • ì‚¬í•­ì„ ì ìš©í•˜ê³  커스텀 APK를 빌드해서 내보낼 수 있습니다(모듈 "
+"추가, AndroidManifest.xml 변경 등).\n"
+"미리 ë¹Œë“œëœ APK를 사용하는 대신 커스텀 빌드를 만들려면, Android 내보내기 프리"
+"ì…‹ì—서 \"커스텀 빌드 사용(Use Custom Build)\" ì„¤ì •ì„ í™œì„±í™”í•´ì•¼ 합니다."
#: editor/editor_node.cpp
msgid ""
@@ -3273,7 +3285,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
-msgstr "ZIP 파ì¼ì—서 템플릿 가져오기"
+msgstr "ZIP 파ì¼ì—서 템플릿 불러오기"
#: editor/editor_node.cpp
msgid "Template Package"
@@ -3285,12 +3297,11 @@ msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기"
#: editor/editor_node.cpp
msgid "Merge With Existing"
-msgstr "ê¸°ì¡´ì˜ ê²ƒê³¼ 병합"
+msgstr "ê¸°ì¡´ì˜ ê²ƒê³¼ 병합하기"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "애니메ì´ì…˜ 변형 바꾸기"
+msgstr "MeshInstance 변형 ì ìš©"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3368,7 +3379,7 @@ msgstr "하위 ë¦¬ì†ŒìŠ¤ì˜ ëª©ë¡ì„ 엽니다."
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
-msgstr "메시 미리 보기 만드는 중"
+msgstr "메시 미리보기 만드는 중"
#: editor/editor_plugin.cpp
msgid "Thumbnail..."
@@ -3545,11 +3556,11 @@ msgstr "키/ê°’ ìŒ ì¶”ê°€"
msgid ""
"The selected resource (%s) does not match any type expected for this "
"property (%s)."
-msgstr "ì„ íƒí•œ 리소스(%s)ê°€ ì´ ì†ì„±(%s)ì— ì í•©í•œ 모든 ìœ í˜•ì— ë§žì§€ 않습니다."
+msgstr "ì„ íƒí•œ 리소스(%s)ê°€ ì´ ì†ì„±(%s)ì— ì í•©í•œ 모든 íƒ€ìž…ì— ë§žì§€ 않습니다."
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "빠른 불러오기"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -3625,7 +3636,7 @@ msgstr "%s를 눌러 정수로 반올림합니다. Shift를 눌러 좀 ë” ì •ë°
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
-msgstr "가져올 노드 ì„ íƒ"
+msgstr "불러올 노드 ì„ íƒ"
#: editor/editor_sub_scene.cpp editor/project_manager.cpp
msgid "Browse"
@@ -3637,7 +3648,7 @@ msgstr "씬 경로:"
#: editor/editor_sub_scene.cpp
msgid "Import From Node:"
-msgstr "노드ì—서 가져오기:"
+msgstr "노드ì—서 불러오기:"
#: editor/export_template_manager.cpp
msgid "Open the folder containing these templates."
@@ -3694,7 +3705,7 @@ msgstr "요청 실패ë¨:"
#: editor/export_template_manager.cpp
msgid "Download complete; extracting templates..."
-msgstr "다운로드를 완료하여 í…œí”Œë¦¿ì„ ì••ì¶• í•´ì œ 중..."
+msgstr "다운로드 완료. 템플릿 압축 해제 중..."
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3792,7 +3803,7 @@ msgstr "내보내기 템플릿 압축 푸는 중"
#: editor/export_template_manager.cpp
msgid "Importing:"
-msgstr "가져오는 중:"
+msgstr "불러오는 중:"
#: editor/export_template_manager.cpp
msgid "Remove templates for the version '%s'?"
@@ -3910,14 +3921,14 @@ 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."
@@ -4060,11 +4071,11 @@ msgstr "ì´ë¦„순 ì •ë ¬ (내림차순)"
#: editor/filesystem_dock.cpp
msgid "Sort by Type (Ascending)"
-msgstr "유형별 정렬 (오름차순)"
+msgstr "타입별 정렬 (오름차순)"
#: editor/filesystem_dock.cpp
msgid "Sort by Type (Descending)"
-msgstr "유형별 정렬 (내림차순)"
+msgstr "타입별 정렬 (내림차순)"
#: editor/filesystem_dock.cpp
msgid "Sort by Last Modified"
@@ -4112,7 +4123,7 @@ msgid ""
"Please Wait..."
msgstr ""
"íŒŒì¼ ìŠ¤ìº”ì¤‘.\n"
-"기다려주십시오..."
+"잠시만 기다려주세요..."
#: editor/filesystem_dock.cpp
msgid "Move"
@@ -4158,8 +4169,8 @@ msgid ""
"Include the files with the following extensions. Add or remove them in "
"ProjectSettings."
msgstr ""
-"해당 í™•ìž¥ìž ì´ë¦„ì„ ê°–ëŠ” 파ì¼ì´ í¬í•¨ë˜ì–´ 있습니다. 프로ì íЏ ì„¤ì •ì— íŒŒì¼ì„ 추가"
-"하거나 제거하세요."
+"ë‹¤ìŒ í™•ìž¥ìžì˜ 파ì¼ì„ í¬í•¨í•˜ì„¸ìš”. 프로ì íЏ 설정ì—서 파ì¼ì„ 추가하거나 제거하세"
+"ìš”."
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4253,52 +4264,52 @@ msgstr "그룹 관리"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
-msgstr "ë‹¨ì¼ ì”¬ìœ¼ë¡œ 가져오기"
+msgstr "ë‹¨ì¼ ì”¬ìœ¼ë¡œ 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Animations"
-msgstr "애니메ì´ì…˜ì„ 분리해서 가져오기"
+msgstr "별ë„ì˜ ì• ë‹ˆë©”ì´ì…˜ìœ¼ë¡œ 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr "ë¨¸í‹°ë¦¬ì–¼ì„ ë¶„ë¦¬í•´ì„œ 가져오기"
+msgstr "별ë„ì˜ ë¨¸í‹°ë¦¬ì–¼ë¡œ 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr "오브ì íŠ¸ë¥¼ 분리해서 가져오기"
+msgstr "별ë„ì˜ ì˜¤ë¸Œì íŠ¸ë¡œ 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr "오브ì íŠ¸ì™€ ë¨¸í‹°ë¦¬ì–¼ì„ ë¶„ë¦¬í•´ì„œ 가져오기"
+msgstr "별ë„ì˜ ì˜¤ë¸Œì íŠ¸ì™€ 머티리얼로 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Animations"
-msgstr "오브ì íŠ¸ì™€ 애니메ì´ì…˜ì„ 분리해서 가져오기"
+msgstr "별ë„ì˜ ì˜¤ë¸Œì íŠ¸ì™€ 애니메ì´ì…˜ìœ¼ë¡œ 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials+Animations"
-msgstr "머티리얼과 애니메ì´ì…˜ì„ 분리해서 가져오기"
+msgstr "별ë„ì˜ ë¨¸í‹°ë¦¬ì–¼ê³¼ 애니메ì´ì…˜ìœ¼ë¡œ 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials+Animations"
-msgstr "오브ì íЏ, 머티리얼, 애니메ì´ì…˜ì„ 분리해서 가져오기"
+msgstr "별ë„ì˜ ì˜¤ë¸Œì íЏ, 머티리얼과 애니메ì´ì…˜ìœ¼ë¡œ 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
-msgstr "여러 ê°œì˜ ì”¬ìœ¼ë¡œ 가져오기"
+msgstr "여러 ê°œì˜ ì”¬ìœ¼ë¡œ 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr "여러 ê°œì˜ ì”¬ê³¼ 머티리얼로 가져오기"
+msgstr "여러 ê°œì˜ ì”¬ê³¼ 머티리얼로 불러오기"
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
-msgstr "씬 가져오기"
+msgstr "씬 불러오기"
#: editor/import/resource_importer_scene.cpp
msgid "Importing Scene..."
-msgstr "씬 가져오는 중..."
+msgstr "씬 불러오는 중..."
#: editor/import/resource_importer_scene.cpp
msgid "Generating Lightmaps"
@@ -4310,23 +4321,23 @@ msgstr "메시 용으로 ìƒì„± 중: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
-msgstr "맞춤 스í¬ë¦½íЏ 실행 중..."
+msgstr "커스텀 스í¬ë¦½íЏ 실행 중..."
#: editor/import/resource_importer_scene.cpp
msgid "Couldn't load post-import script:"
-msgstr "후 가져오기 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 ì—†ìŒ:"
+msgstr "post-import 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 ì—†ìŒ:"
#: editor/import/resource_importer_scene.cpp
msgid "Invalid/broken script for post-import (check console):"
-msgstr "후 가져오기 ìš© 스í¬ë¦½íŠ¸ê°€ 잘못ë¨/ë§ê°€ì§ (ì½˜ì†”ì„ í™•ì¸í•˜ì„¸ìš”):"
+msgstr "post-impotìš© 스í¬ë¦½íŠ¸ê°€ 잘못ë˜ê±°ë‚˜ ë§ê°€ì§ (ì½˜ì†”ì„ í™•ì¸í•˜ì„¸ìš”):"
#: editor/import/resource_importer_scene.cpp
msgid "Error running post-import script:"
-msgstr "후 가져오기 스í¬ë¦½íЏ 실행 중 오류:"
+msgstr "post-import 스í¬ë¦½íЏ 실행 중 오류:"
#: editor/import/resource_importer_scene.cpp
msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr "`post_import()` 메소드ì—서 Nodeì—서 ìƒì†ë°›ì€ 오브ì íŠ¸ë¥¼ 반환했습니까?"
+msgstr "`post_import()` 메서드ì—서 Nodeì—서 ìƒì†ë°›ì€ 오브ì íŠ¸ë¥¼ 반환했습니까?"
#: editor/import/resource_importer_scene.cpp
msgid "Saving..."
@@ -4346,7 +4357,7 @@ msgstr "ë””í´íŠ¸ë¡œ 재설정"
#: editor/import_dock.cpp
msgid "Keep File (No Import)"
-msgstr "íŒŒì¼ ìœ ì§€ (가져오기 ì—†ìŒ)"
+msgstr "íŒŒì¼ ìœ ì§€ (불러오기 ì—†ìŒ)"
#: editor/import_dock.cpp
msgid "%d Files"
@@ -4361,24 +4372,32 @@ msgid "Clear Default for '%s'"
msgstr "'%s'ì„(를) ë””í´íЏì—서 지우기"
#: 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 "ë‹¤ìŒ í˜•ì‹ìœ¼ë¡œ 가져오기:"
+msgstr "ë‹¤ìŒ í˜•ì‹ìœ¼ë¡œ 불러오기:"
#: editor/import_dock.cpp
msgid "Preset"
msgstr "프리셋"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "다시 가져오기"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
-msgstr "씬 저장, 다시 가져오기 ë° ë‹¤ì‹œ 시작"
+msgstr "씬 저장, 다시 불러오기 ë° ë‹¤ì‹œ 시작"
#: editor/import_dock.cpp
msgid "Changing the type of an imported file requires editor restart."
-msgstr "가져온 파ì¼ì˜ ìœ í˜•ì„ ë°”ê¾¸ë ¤ë©´ ì—디터를 다시 시작해야 합니다."
+msgstr "불러온 파ì¼ì˜ íƒ€ìž…ì„ ë°”ê¾¸ë ¤ë©´ ì—디터를 다시 시작해야 합니다."
#: editor/import_dock.cpp
msgid ""
@@ -4467,7 +4486,7 @@ msgstr "오브ì íЏ ì†ì„±ì„ 관리합니다."
#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
-msgstr "변경 ì‚¬í•­ì„ ìžƒì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤!"
+msgstr "ë³€ê²½ì‚¬í•­ì„ ìžƒì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤!"
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
@@ -4588,7 +4607,7 @@ msgstr "BlendSpace1D ë¼ë²¨ 바꾸기"
#: 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 "ì´ ìœ í˜•ì˜ ë…¸ë“œë¥¼ 사용할 수 없습니다. 루트 노드만 쓸 수 있습니다."
+msgstr "ì´ íƒ€ìž…ì˜ ë…¸ë“œë¥¼ 사용할 수 없습니다. 루트 노드만 쓸 수 있습니다."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -4780,8 +4799,8 @@ 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"
@@ -4984,7 +5003,7 @@ msgstr "3단계"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Differences Only"
-msgstr "변경 사항만"
+msgstr "ì°¨ì´ë§Œ"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Force White Modulate"
@@ -5252,7 +5271,7 @@ msgstr "전환 노드"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Import Animations..."
-msgstr "애니메ì´ì…˜ 가져오기..."
+msgstr "애니메ì´ì…˜ 불러오기..."
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Edit Node Filters"
@@ -5444,7 +5463,7 @@ msgstr "ì• ì…‹ 검색 (템플릿, 프로ì íЏ, ë° ë°ëª¨ 제외)"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
-msgstr "가져오기..."
+msgstr "불러오기..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Plugins..."
@@ -5484,7 +5503,7 @@ msgstr "ì• ì…‹ ZIP 파ì¼"
#: editor/plugins/audio_stream_editor_plugin.cpp
msgid "Audio Preview Play/Pause"
-msgstr "오디오 미리 보기 재ìƒ/ì¼ì‹œ ì •ì§€"
+msgstr "오디오 미리보기 재ìƒ/ì¼ì‹œ ì •ì§€"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
@@ -5537,7 +5556,7 @@ msgstr "ë¼ì´íŠ¸ë§µì„ êµ¬ìš¸ íŒŒì¼ ì„ íƒ:"
#: editor/plugins/camera_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
-msgstr "미리 보기"
+msgstr "미리보기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap"
@@ -5641,21 +5660,19 @@ msgstr "CanvasItem \"%s\"를 (%d, %d)로 ì´ë™"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "ì„ íƒ í•­ëª© 잠그기"
+msgstr "ìž ê¹€"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "그룹"
+msgstr "그룹ë¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Children of containers have their anchors and margins values overridden by "
"their parent."
-msgstr "컨테ì´ë„ˆì˜ ìžì†ì€ 부모로 ì¸í•´ 재정ì˜ëœ 앵커와 여백 ê°’ì„ ê°€ì§‘ë‹ˆë‹¤."
+msgstr "컨테ì´ë„ˆì˜ ìžì‹ì€ 부모로 ì¸í•´ 오버ë¼ì´ë“œëœ 앵커와 여백 ê°’ì„ ê°€ì§‘ë‹ˆë‹¤."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Presets for the anchors and margins values of a Control node."
@@ -5753,8 +5770,8 @@ msgid ""
"Project Camera Override\n"
"Overrides the running project's camera with the editor viewport camera."
msgstr ""
-"프로ì íЏ ì¹´ë©”ë¼ ìž¬ì •ì˜\n"
-"실행 ì¤‘ì¸ í”„ë¡œì íŠ¸ì˜ ì¹´ë©”ë¼ë¥¼ ì—디터 ë·°í¬íЏ ì¹´ë©”ë¼ë¡œ 재정ì˜í•©ë‹ˆë‹¤."
+"프로ì íЏ ì¹´ë©”ë¼ ì˜¤ë²„ë¼ì´ë“œ\n"
+"실행 ì¤‘ì¸ í”„ë¡œì íŠ¸ì˜ ì¹´ë©”ë¼ë¥¼ ì—디터 ë·°í¬íЏ ì¹´ë©”ë¼ë¡œ 오버ë¼ì´ë“œí•©ë‹ˆë‹¤."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5763,7 +5780,7 @@ msgid ""
"No project instance running. Run the project from the editor to use this "
"feature."
msgstr ""
-"프로ì íЏ ì¹´ë©”ë¼ ìž¬ì •ì˜\n"
+"프로ì íЏ ì¹´ë©”ë¼ ì˜¤ë²„ë¼ì´ë“œ\n"
"실행 ì¤‘ì¸ í”„ë¡œì íЏ ì¸ìŠ¤í„´ìŠ¤ê°€ 없습니다. ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ë©´ ì—디터ì—서 프로"
"ì íŠ¸ë¥¼ 실행하세요."
@@ -5797,7 +5814,7 @@ msgstr "ê°€ì´ë“œ 지우기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Create Custom Bone(s) from Node(s)"
-msgstr "노드ì—서 맞춤 본 만들기"
+msgstr "노드ì—서 커스텀 본 만들기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Bones"
@@ -5947,7 +5964,7 @@ msgstr "노드 ì˜†ë©´ì— ìŠ¤ëƒ…"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to Node Center"
-msgstr "노드 ì¤‘ì‹¬ì— ìŠ¤ëƒ…"
+msgstr "노드 ì¤‘ì•™ì— ìŠ¤ëƒ…"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to Other Nodes"
@@ -5987,11 +6004,11 @@ msgstr "본 ë³´ì´ê¸°"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Custom Bone(s) from Node(s)"
-msgstr "노드ì—서 맞춤 본 만들기"
+msgstr "노드ì—서 커스텀 본 만들기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Custom Bones"
-msgstr "맞춤 본 지우기"
+msgstr "커스텀 본 지우기"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6036,7 +6053,7 @@ msgstr "프레임 ì„ íƒ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Preview Canvas Scale"
-msgstr "캔버스 ìŠ¤ì¼€ì¼ ë¯¸ë¦¬ 보기"
+msgstr "캔버스 ìŠ¤ì¼€ì¼ ë¯¸ë¦¬ë³´ê¸°"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
@@ -6170,7 +6187,7 @@ msgstr "'%s'ì—서 씬 ì¸ìŠ¤í„´ìŠ¤ 중 오류"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change Default Type"
-msgstr "ë””í´íЏ 유형 바꾸기"
+msgstr "ë””í´íЏ 타입 바꾸기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6178,7 +6195,7 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
"드래그 & 드롭 + Shift : ë™ê¸° 노드로 추가\n"
-"드래그 & 드롭 + Alt : 노드 유형 바꾸기"
+"드래그 & 드롭 + Alt : 노드 타입 바꾸기"
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Polygon3D"
@@ -6414,7 +6431,7 @@ msgstr "내비게ì´ì…˜ 메시 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr "ê°–ê³  있는 메시가 ArrayMesh ìœ í˜•ì´ ì•„ë‹™ë‹ˆë‹¤."
+msgstr "í¬í•¨ëœ 메시가 ArrayMesh íƒ€ìž…ì´ ì•„ë‹™ë‹ˆë‹¤."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
@@ -6438,7 +6455,7 @@ msgstr "ë©”ì‹œì— ìœ¤ê³½ì„ ì„ ë§Œë“¤ í‘œë©´ì´ ì—†ìŠµë‹ˆë‹¤!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!"
-msgstr "메시 기본 ìœ í˜•ì´ PRIMITIVE_TRIANGLESì´ ì•„ë‹™ë‹ˆë‹¤!"
+msgstr "메시 기본 íƒ€ìž…ì´ PRIMITIVE_TRIANGLESì´ ì•„ë‹™ë‹ˆë‹¤!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
@@ -6582,14 +6599,12 @@ msgid "Remove Selected Item"
msgstr "ì„ íƒí•œ 항목 제거"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "씬ì—서 가져오기"
+msgstr "씬ì—서 불러오기 (변형 무시)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "씬ì—서 가져오기"
+msgstr "씬ì—서 불러오기 (변형 ì ìš©)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -6766,7 +6781,7 @@ msgstr "방출 소스: "
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr "'ParticlesMaterial' ìœ í˜•ì˜ í”„ë¡œì„¸ì„œ ë¨¸í‹°ë¦¬ì–¼ì´ í•„ìš”í•©ë‹ˆë‹¤."
+msgstr "'ParticlesMaterial' íƒ€ìž…ì˜ í”„ë¡œì„¸ì„œ ë¨¸í‹°ë¦¬ì–¼ì´ í•„ìš”í•©ë‹ˆë‹¤."
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generating AABB"
@@ -6826,7 +6841,7 @@ msgstr "í´ë¦­: ì  ì¶”ê°€"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Left Click: Split Segment (in curve)"
-msgstr "좌í´ë¦­: (곡선ì—서) ì„ ë¶„ 가르기"
+msgstr "좌í´ë¦­: (곡선ì—서) 세그먼트 가르기"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -6903,7 +6918,7 @@ msgstr "ì¸-컨트롤 ì  ì œê±°"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Segment (in curve)"
-msgstr "(곡선ì—서) ì„ ë¶„ 가르기"
+msgstr "(곡선ì—서) 세그먼트 가르기"
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move Joint"
@@ -6955,11 +6970,11 @@ msgstr "ìž˜ëª»ëœ í´ë¦¬ê³¤ (3ê°œì˜ ë‹¤ë¥¸ ê¼­ì§“ì ì´ 필요합니다)"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Add Custom Polygon"
-msgstr "맞춤 í´ë¦¬ê³¤ 추가"
+msgstr "커스텀 í´ë¦¬ê³¤ 추가"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Remove Custom Polygon"
-msgstr "맞춤 í´ë¦¬ê³¤ 제거"
+msgstr "커스텀 í´ë¦¬ê³¤ 제거"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Transform UV Map"
@@ -7035,15 +7050,15 @@ msgstr "í´ë¦¬ê³¤ ìŠ¤ì¼€ì¼ ì¡°ì ˆ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create a custom polygon. Enables custom polygon rendering."
-msgstr "맞춤 í´ë¦¬ê³¤ì„ 만듭니다. 맞춤 í´ë¦¬ê³¤ ë Œë”ë§ì„ 활성화합니다."
+msgstr "커스텀 í´ë¦¬ê³¤ì„ 만듭니다. 커스텀 í´ë¦¬ê³¤ ë Œë”ë§ì„ 활성화합니다."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid ""
"Remove a custom polygon. If none remain, custom polygon rendering is "
"disabled."
msgstr ""
-"맞춤 í´ë¦¬ê³¤ì„ 제거합니다. 남아있는 맞춤 í´ë¦¬ê³¤ì´ 없으면, 맞춤 í´ë¦¬ê³¤ ë Œë”ë§"
-"ì€ ë¹„í™œì„±í™”ë©ë‹ˆë‹¤."
+"커스텀 í´ë¦¬ê³¤ì„ 제거합니다. 남아있는 커스텀 í´ë¦¬ê³¤ì´ 없으면 커스텀 í´ë¦¬ê³¤ ë Œ"
+"ë”ë§ì€ 비활성화ë©ë‹ˆë‹¤."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Paint weights with specified intensity."
@@ -7148,7 +7163,7 @@ msgstr "ì¸ìŠ¤í„´ìŠ¤:"
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Type:"
-msgstr "유형:"
+msgstr "타입:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
@@ -7180,14 +7195,12 @@ msgid "Flip Portal"
msgstr "í¬í„¸ 뒤집기"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "변형 지우기"
+msgstr "ì–´í´ë£¨ë” 세트 변형"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "노드 만들기"
+msgstr "중앙 노드"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7227,11 +7240,11 @@ msgstr "저장 중 오류"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error importing theme."
-msgstr "테마 가져오는 중 오류."
+msgstr "테마 불러오는 중 오류."
#: editor/plugins/script_editor_plugin.cpp
msgid "Error Importing"
-msgstr "가져오는 중 오류"
+msgstr "불러오는 중 오류"
#: editor/plugins/script_editor_plugin.cpp
msgid "New Text File..."
@@ -7266,7 +7279,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Import Theme"
-msgstr "테마 가져오기"
+msgstr "테마 불러오기"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -7323,11 +7336,13 @@ msgid "Move Down"
msgstr "아래로 ì´ë™"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "ë‹¤ìŒ ìŠ¤í¬ë¦½íЏ"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "ì´ì „ 스í¬ë¦½íЏ"
#: editor/plugins/script_editor_plugin.cpp
@@ -7369,7 +7384,7 @@ msgstr "테마"
#: editor/plugins/script_editor_plugin.cpp
msgid "Import Theme..."
-msgstr "테마 가져오기..."
+msgstr "테마 불러오기..."
#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
@@ -7692,14 +7707,12 @@ msgid "Skeleton2D"
msgstr "스켈레톤2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "ë³¸ì„ ëŒ€ê¸° ìžì„¸ë¡œ 설정"
+msgstr "대기 ìžì„¸ë¡œ 재설정"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "ë®ì–´ 쓰기"
+msgstr "대기 ìžì„¸ ë®ì–´ 쓰기"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7726,69 +7739,63 @@ msgid "Perspective"
msgstr "ì›ê·¼"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "ì§êµ"
+msgstr "ìƒë‹¨ ì§êµ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "ì›ê·¼"
+msgstr "ìƒë‹¨ ì›ê·¼"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "ì§êµ"
+msgstr "하단 ì§êµ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "ì›ê·¼"
+msgstr "하단 ì›ê·¼"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "ì§êµ"
+msgstr "좌측 ì§êµ"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "ì›ê·¼"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "ì§êµ"
+msgstr "우측 ì§êµ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "우측 ì›ê·¼"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "ì§êµ"
+msgstr "ì •ë©´ ì§êµ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "ì›ê·¼"
+msgstr "ì •ë©´ ì›ê·¼"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "ì§êµ"
+msgstr "후면 ì§êµ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "ì›ê·¼"
+msgstr "후면 ì›ê·¼"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+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 ""
+msgstr " [í¬í„¸ 활성]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -7983,7 +7990,7 @@ msgstr "íŒŒë™ ì™œê³¡ 활성화"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Cinematic Preview"
-msgstr "시네마틱 미리 보기"
+msgstr "시네마틱 미리보기"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Not available when using the GLES2 renderer."
@@ -8023,7 +8030,7 @@ msgstr "ìžìœ  ì‹œì  ëŠë¦° 수정ìž"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Toggle Camera Preview"
-msgstr "ì¹´ë©”ë¼ ë¯¸ë¦¬ 보기 토글"
+msgstr "ì¹´ë©”ë¼ ë¯¸ë¦¬ë³´ê¸° 토글"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
@@ -8109,6 +8116,27 @@ 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
+#, fuzzy
+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 "ì›ê·¼/ì§êµ ë·° 전환"
@@ -8182,9 +8210,8 @@ msgid "View Portal Culling"
msgstr "í¬í„¸ ì»¬ë§ ë³´ê¸°"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "í¬í„¸ ì»¬ë§ ë³´ê¸°"
+msgstr "ì–´í´ë£¨ì „ ì»¬ë§ ë³´ê¸°"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8241,7 +8268,7 @@ msgstr "ìŠ¤ì¼€ì¼ (비율):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Type"
-msgstr "변형 유형"
+msgstr "변형 타입"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pre"
@@ -8252,9 +8279,8 @@ msgid "Post"
msgstr "후"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "ì´ë¦„ 없는 프로ì íЏ"
+msgstr "ì´ë¦„ 없는 기즈모"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -8262,7 +8288,7 @@ msgstr "Mesh2D 만들기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Mesh2D Preview"
-msgstr "Mesh2D 미리 보기"
+msgstr "Mesh2D 미리보기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Polygon2D"
@@ -8270,7 +8296,7 @@ msgstr "Polygon2D 만들기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Polygon2D Preview"
-msgstr "Polygon2D 미리 보기"
+msgstr "Polygon2D 미리보기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create CollisionPolygon2D"
@@ -8278,7 +8304,7 @@ msgstr "CollisionPolygon2D 만들기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "CollisionPolygon2D Preview"
-msgstr "CollisionPolygon2D 미리 보기"
+msgstr "CollisionPolygon2D 미리보기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create LightOccluder2D"
@@ -8286,7 +8312,7 @@ msgstr "LightOccluder2D 만들기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "LightOccluder2D Preview"
-msgstr "LightOccluder2D 미리 보기"
+msgstr "LightOccluder2D 미리보기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Sprite is empty!"
@@ -8346,7 +8372,7 @@ msgstr "성장 (픽셀): "
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
-msgstr "ì—…ë°ì´íЏ 미리 보기"
+msgstr "ì—…ë°ì´íЏ 미리보기"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Settings:"
@@ -8566,15 +8592,15 @@ msgstr "현재 ì„ íƒ {num}ê°œ"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Nothing was selected for the import."
-msgstr "가져올 ê²ƒì´ ì„ íƒë˜ì§€ 않았습니다."
+msgstr "불러올 ê²ƒì´ ì„ íƒë˜ì§€ 않았습니다."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Importing Theme Items"
-msgstr "테마 í•­ëª©ì„ ê°€ì ¸ì˜¤ëŠ” 중"
+msgstr "테마 í•­ëª©ì„ ë¶ˆëŸ¬ì˜¤ëŠ” 중"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Importing items {n}/{n}"
-msgstr "항목 {n}/{n} 가져오는 중"
+msgstr "í•­ëª©ì„ ë¶ˆëŸ¬ì˜¤ëŠ” 중 {n}/{n}"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Updating the editor"
@@ -8594,7 +8620,7 @@ msgstr "ë°ì´í„°ì™€ 함께"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select by data type:"
-msgstr "ë°ì´í„° 유형 별 ì„ íƒ:"
+msgstr "ë°ì´í„° 타입별 ì„ íƒ:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible color items."
@@ -8665,11 +8691,11 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Collapse types."
-msgstr "ìœ í˜•ì„ ì ‘ìŠµë‹ˆë‹¤."
+msgstr "íƒ€ìž…ì„ ì ‘ìŠµë‹ˆë‹¤."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Expand types."
-msgstr "ìœ í˜•ì„ íŽ¼ì¹©ë‹ˆë‹¤."
+msgstr "íƒ€ìž…ì„ íŽ¼ì¹©ë‹ˆë‹¤."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all Theme items."
@@ -8693,7 +8719,7 @@ msgstr "모든 테마 í•­ëª©ì„ ì„ íƒ í•´ì œí•©ë‹ˆë‹¤."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Import Selected"
-msgstr "ì„ íƒëœ 항목 가져오기"
+msgstr "ì„ íƒëœ 항목 불러오기"
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
@@ -8701,7 +8727,7 @@ msgid ""
"closing this window.\n"
"Close anyway?"
msgstr ""
-"항목 가져오기 íƒ­ì— ì¼ë¶€ í•­ëª©ì´ ì„ íƒë˜ì–´ 있습니다. ì´ ì°½ì„ ë‹«ìœ¼ë©´ ì„ íƒì„ 잃게 "
+"항목 불러오기 íƒ­ì— ì¼ë¶€ í•­ëª©ì´ ì„ íƒë˜ì–´ 있습니다. ì´ ì°½ì„ ë‹«ìœ¼ë©´ ì„ íƒì„ 잃게 "
"ë©ë‹ˆë‹¤.\n"
"무시하고 닫으시겠습니까?"
@@ -8710,8 +8736,8 @@ 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 ""
-"í…Œë§ˆì˜ í•­ëª©ì„ íŽ¸ì§‘í•˜ë ¤ë©´ 목ë¡ì—서 테마 ìœ í˜•ì„ ì„ íƒí•˜ì„¸ìš”.\n"
-"맞춤 ìœ í˜•ì„ ì¶”ê°€í•˜ê±°ë‚˜ 다른 테마ì—서 테마 항목으로 ìœ í˜•ì„ ê°€ì ¸ì˜¬ 수 있습니다."
+"í…Œë§ˆì˜ í•­ëª©ì„ íŽ¸ì§‘í•˜ë ¤ë©´ 목ë¡ì—서 테마 íƒ€ìž…ì„ ì„ íƒí•˜ì„¸ìš”.\n"
+"커스텀 íƒ€ìž…ì„ ì¶”ê°€í•˜ê±°ë‚˜ 다른 í…Œë§ˆì˜ í•­ëª©ê³¼ 함께 íƒ€ìž…ì„ ë¶ˆëŸ¬ì˜¬ 수 있습니다."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All Color Items"
@@ -8742,8 +8768,8 @@ msgid ""
"This theme type is empty.\n"
"Add more items to it manually or by importing from another theme."
msgstr ""
-"ì´ í…Œë§ˆ ìœ í˜•ì€ ë¹„ì–´ 있습니다.\n"
-"ì§ì ‘ ë˜ëŠ” 다른 테마ì—서 가져와서 í…Œë§ˆì— ë” ë§Žì€ í•­ëª©ì„ ì¶”ê°€í•˜ì„¸ìš”."
+"ì´ í…Œë§ˆ íƒ€ìž…ì€ ë¹„ì–´ 있습니다.\n"
+"ì§ì ‘ ë˜ëŠ” 다른 테마ì—서 불러와서 í…Œë§ˆì— ë” ë§Žì€ í•­ëª©ì„ ì¶”ê°€í•˜ì„¸ìš”."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Color Item"
@@ -8803,11 +8829,11 @@ msgstr "항목 편집"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Types:"
-msgstr "유형:"
+msgstr "타입:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Type:"
-msgstr "유형 추가:"
+msgstr "타입 추가:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item:"
@@ -8827,7 +8853,7 @@ msgstr "í´ëž˜ìФ 항목 제거"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Custom Items"
-msgstr "맞춤 항목 제거"
+msgstr "커스텀 항목 제거"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All Items"
@@ -8843,7 +8869,7 @@ msgstr "ì´ì „ ì´ë¦„:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Import Items"
-msgstr "항목 가져오기"
+msgstr "항목 불러오기"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Default Theme"
@@ -8871,7 +8897,7 @@ msgstr "항목 ì´ë¦„ 바꾸기 취소"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Override Item"
-msgstr "항목 재정ì˜"
+msgstr "항목 오버ë¼ì´ë“œ"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Unpin this StyleBox as a main style."
@@ -8882,20 +8908,20 @@ 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 Type"
-msgstr "유형 추가"
+msgstr "타입 추가"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item Type"
-msgstr "항목 유형 추가"
+msgstr "항목 타입 추가"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Node Types:"
-msgstr "노드 유형:"
+msgstr "노드 타입:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Show Default"
@@ -8903,15 +8929,15 @@ msgstr "ë””í´íЏ ë³´ì´ê¸°"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Show default type items alongside items that have been overridden."
-msgstr "재정ì˜ëœ 항목 ì˜†ì— ë””í´íЏ 유형 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆë‹¤."
+msgstr "오버ë¼ì´ë“œëœ 항목 ì˜†ì— ë””í´íЏ 타입 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆë‹¤."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Override All"
-msgstr "ëª¨ë‘ ìž¬ì •ì˜"
+msgstr "ëª¨ë‘ ì˜¤ë²„ë¼ì´ë“œ"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Override all default type items."
-msgstr "모든 ë””í´íЏ 유형 í•­ëª©ì„ ìž¬ì •ì˜í•©ë‹ˆë‹¤."
+msgstr "모든 ë””í´íЏ 타입 í•­ëª©ì„ ì˜¤ë²„ë¼ì´ë“œí•©ë‹ˆë‹¤."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme:"
@@ -8923,15 +8949,15 @@ msgstr "항목 관리..."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add, remove, organize and import Theme items."
-msgstr "테마 í•­ëª©ì„ ì¶”ê°€, 제거, 구성 ë° ê°€ì ¸ì˜µë‹ˆë‹¤."
+msgstr "테마 í•­ëª©ì„ ì¶”ê°€, 제거, 구성 ë° ë¶ˆëŸ¬ì˜µë‹ˆë‹¤."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Preview"
-msgstr "미리 보기 추가"
+msgstr "미리보기 추가"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Default Preview"
-msgstr "ë””í´íЏ 미리 보기"
+msgstr "ë””í´íЏ 미리보기"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select UI Scene:"
@@ -8942,7 +8968,7 @@ msgid ""
"Toggle the control picker, allowing to visually select control types for "
"edit."
msgstr ""
-"컨트롤 ì„ íƒê¸°ë¥¼ 토글하여, 편집할 컨트롤 ìœ í˜•ì„ ì‹œê°ì ìœ¼ë¡œ ì„ íƒí•  수 있게 합니"
+"컨트롤 ì„ íƒê¸°ë¥¼ 토글하여, 편집할 컨트롤 íƒ€ìž…ì„ ì‹œê°ì ìœ¼ë¡œ ì„ íƒí•  수 있게 합니"
"다."
#: editor/plugins/theme_editor_preview.cpp
@@ -8994,6 +9020,7 @@ msgid "Subitem 2"
msgstr "하위 항목 2"
#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid "Has"
msgstr "갖춤"
@@ -9026,6 +9053,7 @@ msgid "Subtree"
msgstr "하위 트리"
#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid "Has,Many,Options"
msgstr "ë§Žì€,옵션,갖춤"
@@ -9518,11 +9546,11 @@ msgstr "스테ì´ì§• ì˜ì—­"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect new changes"
-msgstr "새 변경 사항 ê°ì§€"
+msgstr "새 변경사항 ê°ì§€"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Changes"
-msgstr "변경 사항"
+msgstr "변경사항"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Modified"
@@ -9550,7 +9578,7 @@ msgstr "ëª¨ë‘ ìŠ¤í…Œì´ì§€ë¡œ 보내기"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Commit Changes"
-msgstr "커밋 변경 사항"
+msgstr "커밋 변경사항"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
@@ -9562,7 +9590,7 @@ msgstr "íŒŒì¼ diffê°€ 켜져 있지 않습니다"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect changes in file diff"
-msgstr "íŒŒì¼ diffì—서 ê°ì§€í•œ 변경 사항"
+msgstr "íŒŒì¼ ì°¨ì´ì—서 ê°ì§€í•œ 변경사항"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "(GLES3 only)"
@@ -9598,11 +9626,11 @@ msgstr "출력 í¬íЏ 추가"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Change input port type"
-msgstr "ìž…ë ¥ í¬íЏ 유형 바꾸기"
+msgstr "ìž…ë ¥ í¬íЏ 타입 바꾸기"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Change output port type"
-msgstr "출력 í¬íЏ 유형 바꾸기"
+msgstr "출력 í¬íЏ 타입 바꾸기"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Change input port name"
@@ -9659,7 +9687,7 @@ msgstr "노드 삭제"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Input Type Changed"
-msgstr "비주얼 ì…°ì´ë” ìž…ë ¥ 유형 변경ë¨"
+msgstr "비주얼 ì…°ì´ë” ìž…ë ¥ 타입 변경ë¨"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "UniformRef Name Changed"
@@ -9675,7 +9703,7 @@ msgstr "프래그먼트"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Light"
-msgstr "조명"
+msgstr "ë¼ì´íЏ"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Show resulted shader code."
@@ -9731,7 +9759,7 @@ msgstr "하드 ë¼ì´íЏ ì—°ì‚°ìž."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Lighten operator."
-msgstr "ë°ìŒ ì—°ì‚°ìž."
+msgstr "Lighten ì—°ì‚°ìž."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Overlay operator."
@@ -9844,7 +9872,7 @@ msgstr "ê¼­ì§“ì ê³¼ 프래그먼트 ì…°ì´ë” ëª¨ë“œì— ëŒ€í•œ '%s' ìž…ë ¥ 매ê
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for fragment and light shader modes."
-msgstr "프래그먼트과 조명 ì…°ì´ë” ëª¨ë“œì— ëŒ€í•œ '%s' ìž…ë ¥ 매개변수."
+msgstr "프래그먼트와 ë¼ì´íЏ ì…°ì´ë” ëª¨ë“œì— ëŒ€í•œ '%s' ìž…ë ¥ 매개변수."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for fragment shader mode."
@@ -10145,8 +10173,8 @@ msgstr ""
"\n"
"OuterProduct는 첫 매개변수 'c'를 ì—´ 벡터로 취급하고 (1열로 ì´ë£¨ì–´ì§„ 행렬) ë‘ "
"번째 매개변수 'r'ì„ í–‰ 벡터로 취급합니다 (1행으로 ì´ë£¨ì–´ì§„ 행렬), 그리고 ì„ "
-"형 대수 í–‰ë ¬ì— 'c * r'ì„ ê³±í•´ì„œ í–‰ë ¬ì„ ì‚°ì¶œí•˜ëŠ”ë°, í–‰ 수는 'c'ì˜ êµ¬ì„± 요소 수"
-"ì´ê³  ì—´ 수는 'r'ì˜ êµ¬ì„± 요소 수가 ë©ë‹ˆë‹¤."
+"형 대수 í–‰ë ¬ì— 'c * r'ì„ ê³±í•´ì„œ í–‰ë ¬ì„ ì‚°ì¶œí•˜ëŠ”ë°, í–‰ 수는 'c'ì˜ ì»´í¬ë„ŒíЏ 수"
+"ì´ê³  ì—´ 수는 'r'ì˜ ì»´í¬ë„ŒíЏ 수가 ë©ë‹ˆë‹¤."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Composes transform from four vectors."
@@ -10339,9 +10367,9 @@ msgid ""
"output ports. This is a direct injection of code into the vertex/fragment/"
"light function, do not use it to write the function declarations inside."
msgstr ""
-"맞춤 ìž…ë ¥ ë° ì¶œë ¥ í¬íŠ¸ë¡œ ì´ë£¨ì–´ì§„, 맞춤 Godot ì…°ì´ë” 언어 명령문. ê¼­ì§“ì /프래"
-"그먼트/조명 í•¨ìˆ˜ì— ì§ì ‘ 코드를 넣는 것ì´ë¯€ë¡œ 코드 ì•ˆì— í•¨ìˆ˜ ì„ ì–¸ì„ ìž‘ì„±í•˜ëŠ” "
-"ìš©ë„로 ì“°ì§€ 마세요."
+"커스텀 ìž…ë ¥ ë° ì¶œë ¥ í¬íŠ¸ë¡œ ì´ë£¨ì–´ì§„, 커스텀 Godot ì…°ì´ë” 언어 표현ì‹. ê¼­ì§“ì /"
+"프래그먼트/ë¼ì´íЏ í•¨ìˆ˜ì— ì§ì ‘ 코드를 넣는 것ì´ë¯€ë¡œ 코드 ì•ˆì— í•¨ìˆ˜ ì„ ì–¸ì„ ìž‘ì„±"
+"하는 ìš©ë„로 ì“°ì§€ 마세요."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
@@ -10358,59 +10386,62 @@ msgid ""
"it later in the Expressions. You can also declare varyings, uniforms and "
"constants."
msgstr ""
-"ê²°ê³¼ ì…°ì´ë” ìœ„ì— ë°°ì¹˜ëœ, 맞춤 Godot ì…°ì´ë” 언어 표현ì‹. 다양한 함수 ì„ ì–¸ì„ ì•ˆ"
-"ì— ë†“ì€ ë’¤ ë‚˜ì¤‘ì— í‘œí˜„ì‹ì—서 호출할 수 있습니다. Varying, Uniform, ìƒìˆ˜ë„ ì„ "
-"언할 수 있습니다."
+"ê²°ê³¼ ì…°ì´ë” ìœ„ì— ë°°ì¹˜ë˜ëŠ”, 커스텀 Godot ì…°ì´ë” 언어 표현ì‹. ì•ˆì— ë‹¤ì–‘í•œ 함수 "
+"ì„ ì–¸ì„ ìž‘ì„±í•˜ê³  표현ì‹ì—서 호출할 수 있습니다. Varying, Uniform, ìƒìˆ˜ë„ ì„ ì–¸"
+"할 수 있습니다."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "A reference to an existing uniform."
-msgstr "기존 유니í¼ì— 대한 참조입니다."
+msgstr "기존 Uniformì— ëŒ€í•œ 참조입니다."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "(Fragment/Light mode only) Scalar derivative function."
-msgstr "(프래그먼트/조명 모드만 가능) ìŠ¤ì¹¼ë¼ ë¯¸ë¶„ 함수."
+msgstr "(프래그먼트/ë¼ì´íЏ 모드만 가능) ìŠ¤ì¹¼ë¼ ë¯¸ë¶„ 함수."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "(Fragment/Light mode only) Vector derivative function."
-msgstr "(프래그먼트/조명 모드만 가능) 벡터 미분 함수."
+msgstr "(프래그먼트/ë¼ì´íЏ 모드만 가능) 벡터 미분 함수."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"(Fragment/Light mode only) (Vector) Derivative in 'x' using local "
"differencing."
-msgstr "(프래그먼트/조명 모드만 가능) 지역 ì°¨ë¶„ì„ ì´ìš©í•œ 'x'ì˜ (벡터) ë„함수."
+msgstr ""
+"(프래그먼트/ë¼ì´íЏ 모드만 가능) 지역 ì°¨ë¶„ì„ ì´ìš©í•œ 'x'ì˜ (벡터) ë„함수."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local "
"differencing."
msgstr ""
-"(프래그먼트/조명 모드만 가능) 지역 ì°¨ë¶„ì„ ì´ìš©í•œ 'x'ì˜ (스칼ë¼) ë„함수."
+"(프래그먼트/ë¼ì´íЏ 모드만 가능) 지역 ì°¨ë¶„ì„ ì´ìš©í•œ 'x'ì˜ (스칼ë¼) ë„함수."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"(Fragment/Light mode only) (Vector) Derivative in 'y' using local "
"differencing."
-msgstr "(프래그먼트/조명 모드만 가능) 지역 ì°¨ë¶„ì„ ì´ìš©í•œ 'y'ì˜ (벡터) ë„함수."
+msgstr ""
+"(프래그먼트/ë¼ì´íЏ 모드만 가능) 지역 ì°¨ë¶„ì„ ì´ìš©í•œ 'y'ì˜ (벡터) ë„함수."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local "
"differencing."
msgstr ""
-"(프래그먼트/조명 모드만 가능) 지역 ì°¨ë¶„ì„ ì´ìš©í•œ 'y'ì˜ (스칼ë¼) ë„함수."
+"(프래그먼트/ë¼ì´íЏ 모드만 가능) 지역 ì°¨ë¶„ì„ ì´ìš©í•œ 'y'ì˜ (스칼ë¼) ë„함수."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and "
"'y'."
-msgstr "(프래그먼트/조명 모드만 가능) (벡터) 'x'와 'y'ì˜ ì ˆëŒ€ 미분 ê°’ì˜ í•©."
+msgstr "(프래그먼트/ë¼ì´íЏ 모드만 가능) (벡터) 'x'와 'y'ì˜ ì ˆëŒ€ 미분 ê°’ì˜ í•©."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and "
"'y'."
-msgstr "(프래그먼트/조명 모드만 가능) (스칼ë¼) 'x'와 'y'ì˜ ì ˆëŒ€ 미분 ê°’ì˜ í•©."
+msgstr ""
+"(프래그먼트/ë¼ì´íЏ 모드만 가능) (스칼ë¼) 'x'와 'y'ì˜ ì ˆëŒ€ 미분 ê°’ì˜ í•©."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
@@ -10531,7 +10562,7 @@ msgstr "기능"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr "맞춤 (쉼표로 구분):"
+msgstr "커스텀(쉼표로 구분):"
#: editor/project_export.cpp
msgid "Feature List:"
@@ -10634,7 +10665,7 @@ msgstr "새 게임 프로ì íЏ"
#: editor/project_manager.cpp
msgid "Imported Project"
-msgstr "가져온 프로ì íЏ"
+msgstr "불러온 프로ì íЏ"
#: editor/project_manager.cpp
msgid "Invalid project name."
@@ -10690,11 +10721,11 @@ msgstr "프로ì íЏ ì´ë¦„ 바꾸기"
#: editor/project_manager.cpp
msgid "Import Existing Project"
-msgstr "기존 프로ì íЏ 가져오기"
+msgstr "기존 프로ì íЏ 불러오기"
#: editor/project_manager.cpp
msgid "Import & Edit"
-msgstr "가져오기 & 편집"
+msgstr "불러오기 & 편집"
#: editor/project_manager.cpp
msgid "Create New Project"
@@ -10849,8 +10880,8 @@ msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
-"프로ì íŠ¸ë¥¼ 실행할 수 ì—†ìŒ: ì• ì…‹ì„ ê°€ì ¸ì™€ì•¼ 합니다.\n"
-"프로ì íŠ¸ë¥¼ 편집해서 최초 가져오기가 실행ë˜ë„ë¡ í•˜ì„¸ìš”."
+"프로ì íŠ¸ë¥¼ 실행할 수 ì—†ìŒ: ì• ì…‹ì„ ë¶ˆëŸ¬ì™€ì•¼ 합니다.\n"
+"프로ì íŠ¸ë¥¼ 편집해서 최초 불러오기가 실행ë˜ë„ë¡ í•˜ì„¸ìš”."
#: editor/project_manager.cpp
msgid "Are you sure to run %d projects at once?"
@@ -10931,7 +10962,7 @@ msgstr "새 프로ì íЏ"
#: editor/project_manager.cpp
msgid "Import Project"
-msgstr "프로ì íЏ 가져오기"
+msgstr "프로ì íЏ 불러오기"
#: editor/project_manager.cpp
msgid "Remove Project"
@@ -11113,7 +11144,7 @@ msgstr "ì´ë²¤íЏ 추가"
#: editor/project_settings_editor.cpp
msgid "Button"
-msgstr "버튼"
+msgstr "Button"
#: editor/project_settings_editor.cpp
msgid "Left Button."
@@ -11181,7 +11212,7 @@ msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ ì´ë™í•¨"
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr "기능 재정ì˜"
+msgstr "기능 오버ë¼ì´ë“œ"
#: editor/project_settings_editor.cpp
msgid "Add %d Translations"
@@ -11229,11 +11260,11 @@ msgstr "ì¼ë°˜"
#: editor/project_settings_editor.cpp
msgid "Override For..."
-msgstr "ìž¬ì •ì˜ ëŒ€ìƒ..."
+msgstr "오버ë¼ì´ë“œ 대ìƒ..."
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "The editor must be restarted for changes to take effect."
-msgstr "변경 ì‚¬í•­ì„ ë°˜ì˜í•˜ë ¤ë©´ ì—디터를 다시 시작해야 합니다."
+msgstr "ë³€ê²½ì‚¬í•­ì„ ë°˜ì˜í•˜ë ¤ë©´ ì—디터를 다시 시작해야 합니다."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -11317,7 +11348,7 @@ msgstr "플러그ì¸(Plugin)"
#: editor/project_settings_editor.cpp
msgid "Import Defaults"
-msgstr "ë””í´íЏ 가져오기"
+msgstr "ë””í´íЏ 불러오기"
#: editor/property_editor.cpp
msgid "Preset..."
@@ -11413,7 +11444,7 @@ msgstr "ë…¸ë“œì˜ ë¶€ëª¨ ì´ë¦„ (사용 가능한 경우)"
#: editor/rename_dialog.cpp
msgid "Node type"
-msgstr "노드 유형"
+msgstr "노드 타입"
#: editor/rename_dialog.cpp
msgid "Current scene name"
@@ -11711,7 +11742,7 @@ msgstr "3D 씬"
#: editor/scene_tree_dock.cpp
msgid "User Interface"
-msgstr "ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ"
+msgstr "유저 ì¸í„°íŽ˜ì´ìФ"
#: editor/scene_tree_dock.cpp
msgid "Other Node"
@@ -11743,7 +11774,7 @@ msgstr "노드 제거"
#: editor/scene_tree_dock.cpp
msgid "Change type of node(s)"
-msgstr "노드 유형 바꾸기"
+msgstr "노드 타입 바꾸기"
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11795,7 +11826,7 @@ msgstr "ëª¨ë‘ íŽ¼ì¹˜ê¸°/접기"
#: editor/scene_tree_dock.cpp
msgid "Change Type"
-msgstr "유형 바꾸기"
+msgstr "타입 바꾸기"
#: editor/scene_tree_dock.cpp
msgid "Reparent to New Node"
@@ -11887,16 +11918,16 @@ msgid ""
"Node has %s connection(s) and %s group(s).\n"
"Click to show signals dock."
msgstr ""
-"노드가 %s ì—°ê²°ê³¼ %s ê·¸ë£¹ì„ ê°–ê³  있습니다.\n"
-"í´ë¦­í•˜ë©´ ì‹œê·¸ë„ ë…ì„ ë³´ì—¬ì¤˜ìš”."
+"ë…¸ë“œì— %s ì—°ê²°ê³¼ %s ê·¸ë£¹ì´ ìžˆìŠµë‹ˆë‹¤.\n"
+"í´ë¦­í•˜ì—¬ ì‹œê·¸ë„ ë…ì„ ë´…ë‹ˆë‹¤."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has %s connection(s).\n"
"Click to show signals dock."
msgstr ""
-"노드가 %s ì—°ê²°ì„ ê°–ê³  있습니다.\n"
-"í´ë¦­í•˜ë©´ ì‹œê·¸ë„ ë…ì„ ë³´ì—¬ì¤˜ìš”."
+"ë…¸ë“œì— %s ì—°ê²°ì´ ìžˆìŠµë‹ˆë‹¤.\n"
+"í´ë¦­í•˜ì—¬ ì‹œê·¸ë„ ë…ì„ ë´…ë‹ˆë‹¤."
#: editor/scene_tree_editor.cpp
msgid ""
@@ -12004,7 +12035,7 @@ msgstr "'%s' 스í¬ë¦½íЏ 불러오는 중 오류"
#: editor/script_create_dialog.cpp
msgid "Overrides"
-msgstr "재정ì˜"
+msgstr "오버ë¼ì´ë“œ"
#: editor/script_create_dialog.cpp
msgid "N/A"
@@ -12020,11 +12051,11 @@ msgstr "스í¬ë¦½íЏ 열기"
#: editor/script_create_dialog.cpp
msgid "File exists, it will be reused."
-msgstr "파ì¼ì´ 있습니다. 다시 사용할 것입니다."
+msgstr "파ì¼ì´ 있습니다. ìž¬ì‚¬ìš©ë  ê²ƒìž…ë‹ˆë‹¤."
#: editor/script_create_dialog.cpp
msgid "Invalid path."
-msgstr "올바르지 ì•Šì€ ê²½ë¡œìž…ë‹ˆë‹¤."
+msgstr "ìž˜ëª»ëœ ê²½ë¡œ."
#: editor/script_create_dialog.cpp
msgid "Invalid class name."
@@ -12071,7 +12102,7 @@ msgid ""
"Warning: Having the script name be the same as a built-in type is usually "
"not desired."
msgstr ""
-"경고: 스í¬ë¦½íЏ ì´ë¦„ì„ ë‚´ìž¥ 유형과 같게 정하는 ì ì€ ì¼ë°˜ì ìœ¼ë¡œ 바람ì§í•˜ì§€ 않습"
+"경고: 스í¬ë¦½íЏ ì´ë¦„ì„ ë‚´ìž¥ 타입과 같게 정하는 ê²ƒì€ ì¼ë°˜ì ìœ¼ë¡œ 바람ì§í•˜ì§€ 않습"
"니다."
#: editor/script_create_dialog.cpp
@@ -12140,7 +12171,7 @@ msgstr "ìžì† 프로세스 ì—°ê²°ë¨."
#: editor/script_editor_debugger.cpp
msgid "Copy Error"
-msgstr "복사 오류"
+msgstr "오류 복사"
#: editor/script_editor_debugger.cpp
msgid "Open C++ Source on GitHub"
@@ -12208,7 +12239,7 @@ msgstr "리소스 경로"
#: editor/script_editor_debugger.cpp
msgid "Type"
-msgstr "유형"
+msgstr "타입"
#: editor/script_editor_debugger.cpp
msgid "Format"
@@ -12228,7 +12259,7 @@ msgstr "í´ë¦­ëœ Control:"
#: editor/script_editor_debugger.cpp
msgid "Clicked Control Type:"
-msgstr "í´ë¦­ëœ Control 유형:"
+msgstr "í´ë¦­ëœ 컨트롤 타입:"
#: editor/script_editor_debugger.cpp
msgid "Live Edit Root:"
@@ -12268,7 +12299,7 @@ msgstr "ë°”ì¸ë”©"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
-msgstr "조명 반경 바꾸기"
+msgstr "ë¼ì´íЏ 반경 바꾸기"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
@@ -12331,14 +12362,12 @@ msgid "Set Portal Point Position"
msgstr "í¬í„¸ ì  ìœ„ì¹˜ 설정"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "ìº¡ìŠ ëª¨ì–‘ 반지름 바꾸기"
+msgstr "ì–´í´ë£¨ë” 구체 반지름 설정"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "ê³¡ì„ ì˜ ì¸ ìœ„ì¹˜ 설정"
+msgstr "ì–´í´ë£¨ë” 구체 위치 설정"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12602,7 +12631,7 @@ msgstr "ë²„í¼ ìƒì„±"
#: modules/lightmapper_cpu/lightmapper_cpu.cpp
msgid "Direct lighting"
-msgstr "조명 방향"
+msgstr "ì§ì ‘ 조명"
#: modules/lightmapper_cpu/lightmapper_cpu.cpp
msgid "Indirect lighting"
@@ -12614,16 +12643,15 @@ msgstr "후처리"
#: modules/lightmapper_cpu/lightmapper_cpu.cpp
msgid "Plotting lightmaps"
-msgstr "구분하는 조명"
+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 "ì„ íƒ í•­ëª© 채우기"
+msgstr "솔루션 빌드"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -12731,7 +12759,7 @@ msgstr "ì‹œê·¸ë„ ì¸ìˆ˜ 바꾸기"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Argument Type"
-msgstr "ì¸ìˆ˜ 유형 바꾸기"
+msgstr "ì¸ìˆ˜ 타입 바꾸기"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Argument name"
@@ -12743,7 +12771,7 @@ msgstr "변수 기본값 설정"
#: modules/visual_script/visual_script_editor.cpp
msgid "Set Variable Type"
-msgstr "변수 유형 설정"
+msgstr "변수 타입 설정"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Input Port"
@@ -12755,7 +12783,7 @@ msgstr "출력 í¬íЏ 추가하기"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Port Type"
-msgstr "í¬íЏ 유형 바꾸기"
+msgstr "í¬íЏ 타입 바꾸기"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Port Name"
@@ -12763,7 +12791,7 @@ msgstr "í¬íЏ ì´ë¦„ 바꾸기"
#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
-msgstr "존재하는 내장 함수를 재정ì˜í•©ë‹ˆë‹¤."
+msgstr "ê¸°ì¡´ì˜ ë‚´ìž¥ 함수를 오버ë¼ì´ë“œí•©ë‹ˆë‹¤."
#: modules/visual_script/visual_script_editor.cpp
msgid "Create a new function."
@@ -12900,7 +12928,7 @@ msgstr "Setter ì†ì„± 추가"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Base Type"
-msgstr "기본 유형 바꾸기"
+msgstr "기본 타입 바꾸기"
#: modules/visual_script/visual_script_editor.cpp
msgid "Move Node(s)"
@@ -12928,7 +12956,7 @@ msgstr "노드 시퀀스 연결"
#: modules/visual_script/visual_script_editor.cpp
msgid "Script already has function '%s'"
-msgstr "스í¬ë¦½íŠ¸ê°€ ì´ë¯¸ '%s' 함수를 ê°–ê³  있습니다"
+msgstr "스í¬ë¦½íŠ¸ì— ì´ë¯¸ '%s' 함수가 있습니다"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
@@ -12996,7 +13024,7 @@ msgstr "멤버:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Base Type:"
-msgstr "기본 유형 바꾸기:"
+msgstr "기본 타입 바꾸기:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Nodes..."
@@ -13020,7 +13048,7 @@ msgstr "ì„ íƒ í•­ëª© ì‚­ì œ"
#: modules/visual_script/visual_script_editor.cpp
msgid "Find Node Type"
-msgstr "노드 유형 찾기"
+msgstr "노드 타입 찾기"
#: modules/visual_script/visual_script_editor.cpp
msgid "Copy Nodes"
@@ -13044,7 +13072,7 @@ msgstr "멤버 편집"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Input type not iterable: "
-msgstr "반복할 수 없는 입력 유형: "
+msgstr "반복할 수 없는 입력 타입: "
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
@@ -13072,7 +13100,7 @@ msgstr "노드 %s ì•ˆì— ì¸ë±ìФ ì†ì„± ì´ë¦„ '%s'ì´(ê°€) 잘못ë˜ì—ˆìŠµë‹ˆ
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
-msgstr ": ìž˜ëª»ëœ ì¸ìˆ˜ 유형: "
+msgstr ": ìž˜ëª»ëœ ì¸ìˆ˜ 타입: "
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid arguments: "
@@ -13088,7 +13116,7 @@ msgstr "VariableSetì„ ìŠ¤í¬ë¦½íЏì—서 ì°¾ì„ ìˆ˜ ì—†ìŒ: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Custom node has no _step() method, can't process graph."
-msgstr "맞춤 ë…¸ë“œì— _step() 메서드가 없습니다. 그래프를 처리할 수 없습니다."
+msgstr "커스텀 ë…¸ë“œì— _step() 메서드가 없습니다. 그래프를 처리할 수 없습니다."
#: modules/visual_script/visual_script_nodes.cpp
msgid ""
@@ -13316,8 +13344,8 @@ msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
msgstr ""
-"맞춤 빌드 템플릿으로 빌드하려 했으나, 버전 ì •ë³´ê°€ 없습니다. '프로ì íЏ' 메뉴ì—"
-"서 다시 설치해주세요."
+"커스텀 빌드 템플릿으로 빌드하려 했으나, 버전 ì •ë³´ê°€ 없습니다. '프로ì íЏ"
+"(Project)' 메뉴ì—서 다시 설치해주세요."
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13651,7 +13679,7 @@ msgstr "노드 A와 노드 B는 서로 다른 PhysicsBody2D여야 합니다"
msgid ""
"A texture with the shape of the light must be supplied to the \"Texture\" "
"property."
-msgstr "ì¡°ëª…ì˜ ëª¨ì–‘ì„ ë‚˜íƒ€ë‚¼ í…스처를 \"Texture\" ì†ì„±ì— 지정해야 합니다."
+msgstr "ë¼ì´íЏ ëª¨ì–‘ì˜ í…스처는 반드시 \"Texture\" ì†ì„±ì— 지정해야 합니다."
#: scene/2d/light_occluder_2d.cpp
msgid ""
@@ -13764,11 +13792,11 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent."
-msgstr "ARVRCamera는 반드시 ARVROrigin 노드를 부모로 갖고 있어야 합니다."
+msgstr "ARVRCameraì˜ ë¶€ëª¨ 노드는 반드시 ARVROriginì´ì–´ì•¼ 합니다."
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent."
-msgstr "ARVRController는 반드시 ARVROrigin 노드를 부모로 갖고 있어야 합니다."
+msgstr "ARVRControllerì˜ ë¶€ëª¨ 노드는 반드시 ARVROriginì´ì–´ì•¼ 합니다."
#: scene/3d/arvr_nodes.cpp
msgid ""
@@ -13779,7 +13807,7 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent."
-msgstr "ARVRAnchor는 반드시 ARVROrigin 노드를 부모로 갖고 있어야 합니다."
+msgstr "ARVRAnchorì˜ ë¶€ëª¨ 노드는 반드시 ARVROriginì´ì–´ì•¼ 합니다."
#: scene/3d/arvr_nodes.cpp
msgid ""
@@ -13793,7 +13821,7 @@ msgstr "ARVROriginì€ ìžì†ìœ¼ë¡œ ARVRCamera 노드가 필요합니다."
#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
-msgstr "메시 ë° ì¡°ëª…ì„ ì°¾ëŠ” 중"
+msgstr "메시 ë° ë¼ì´íŠ¸ë¥¼ 찾는 중"
#: scene/3d/baked_lightmap.cpp
msgid "Preparing geometry (%d/%d)"
@@ -13809,7 +13837,7 @@ msgstr "캡처 ìƒì„± 중"
#: scene/3d/baked_lightmap.cpp
msgid "Saving lightmaps"
-msgstr "ë¼ì´íŠ¸ë§µì„ ì €ìž¥ 중"
+msgstr "ë¼ì´íŠ¸ë§µ 저장 중"
#: scene/3d/baked_lightmap.cpp
msgid "Done"
@@ -13912,7 +13940,7 @@ msgstr ""
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
-msgstr "SpotLightì˜ ê°ë„를 90ë„ ì´ìƒìœ¼ë¡œ 잡게ë˜ë©´ 그림ìžë¥¼ 투ì˜í•  수 없습니다."
+msgstr "SpotLightì˜ ê°ë„를 90ë„ ì´ìƒìœ¼ë¡œ 잡으면 그림ìžë¥¼ 투ì˜í•  수 없습니다."
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
@@ -13929,11 +13957,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "설정할 ëª¨ì–‘ì´ ì—†ìŠµë‹ˆë‹¤."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Uniform 스케ì¼ë§Œ ì§€ì›ë©ë‹ˆë‹¤."
#: scene/3d/particles.cpp
msgid ""
@@ -14120,8 +14148,8 @@ msgid ""
"running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"실행 ì¤‘ì— SoftBodyì˜ í¬ê¸° ë³€ê²½ì€ ë¬¼ë¦¬ ì—”ì§„ì— ì˜í•´ 재정ì˜ë©ë‹ˆë‹¤.\n"
-"대신 ìžì† 콜리전 ëª¨ì–‘ì˜ í¬ê¸°ë¥¼ 변경하세요."
+"실행 ì¤‘ì— SoftBodyì˜ í¬ê¸° ë³€ê²½ì€ ë¬¼ë¦¬ ì—”ì§„ì— ì˜í•´ 오버ë¼ì´ë“œë©ë‹ˆë‹¤.\n"
+"대신 ìžì‹ 콜리전 ëª¨ì–‘ì˜ í¬ê¸°ë¥¼ 변경하세요."
#: scene/3d/sprite_3d.cpp
msgid ""
@@ -14191,8 +14219,7 @@ msgstr "그래프를 위한 루트 AnimationNode를 설정하지 않았습니다
#: scene/animation/animation_tree.cpp
msgid "Path to an AnimationPlayer node containing animations is not set."
-msgstr ""
-"애니메ì´ì…˜ì„ ê°–ê³  있는 AnimationPlayer ë…¸ë“œì˜ ê²½ë¡œë¥¼ 설정하지 않았습니다."
+msgstr "애니메ì´ì…˜ì„ í¬í•¨í•œ AnimationPlayer ë…¸ë“œì˜ ê²½ë¡œë¥¼ 설정하지 않았습니다."
#: scene/animation/animation_tree.cpp
msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node."
@@ -14279,6 +14306,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"ì¶• 스트레치 ì†ì„±ì— 대한 íƒ€ì¼ ë° íƒ€ì¼ ë§žì¶¤ ì˜µì…˜ì€ GLES3 ë Œë”ë§ ë°±ì—”ë“œë¥¼ 사용"
+"í•  때만 효과ì ìž…니다.\n"
+"GLES2 백엔드가 현재 사용 중ì´ë¯€ë¡œ, ì´ëŸ¬í•œ 모드는 대신 스트레치처럼 ìž‘ë™í•©ë‹ˆ"
+"다."
#: scene/gui/popup.cpp
msgid ""
@@ -14300,8 +14331,8 @@ msgid ""
"minimum size manually."
msgstr ""
"ScrollContainer는 ë‹¨ì¼ ìžì† Controlì„ ìž‘ì—…í•˜ê¸° 위한 것입니다.\n"
-"(VBox, HBox 등) 컨테ì´ë„ˆë¥¼ ìžì†ìœ¼ë¡œ 사용하거나, Controlì„ ì‚¬ìš©í•˜ê³  맞춤 최소 "
-"수치를 수ë™ìœ¼ë¡œ 설정하세요."
+"(VBox, HBox 등) 컨테ì´ë„ˆë¥¼ ìžì†ìœ¼ë¡œ 사용하거나, Controlì„ ì‚¬ìš©í•˜ê³  ì‚¬ìš©ìž ì§€"
+"ì • 최소 수치를 수ë™ìœ¼ë¡œ 설정하세요."
#: scene/gui/tree.cpp
msgid "(Other)"
@@ -14315,6 +14346,14 @@ msgstr ""
"프로ì íЏ 설정 (Rendering -> Environment -> Default Environment)ì— ì§€ì •í•œ ë””í´"
"트 í™˜ê²½ì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14328,12 +14367,15 @@ msgstr ""
"를 다른 ë…¸ë“œì— ì§€ì •í•´ì•¼ 합니다."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "무엇ì´ë“  ë Œë”ë§í•˜ë ¤ë©´ ë·°í¬íЏ í¬ê¸°ê°€ 0보다 커야 합니다."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphere를 구체로 설정"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -14345,7 +14387,7 @@ msgstr ""
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for preview."
-msgstr "미리 ë³´ê¸°ì— ìž˜ëª»ëœ ì†ŒìŠ¤."
+msgstr "ë¯¸ë¦¬ë³´ê¸°ì— ìž˜ëª»ëœ ì†ŒìŠ¤."
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
@@ -14353,7 +14395,7 @@ msgstr "ì…°ì´ë”ì— ìž˜ëª»ëœ ì†ŒìŠ¤."
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid comparison function for that type."
-msgstr "해당 ìœ í˜•ì— ìž˜ëª»ëœ ë¹„êµ í•¨ìˆ˜."
+msgstr "해당 íƒ€ìž…ì— ìž˜ëª»ëœ ë¹„êµ í•¨ìˆ˜."
#: servers/visual/shader_language.cpp
msgid "Varying may not be assigned in the '%s' function."
@@ -14377,7 +14419,7 @@ msgstr ""
#: servers/visual/shader_language.cpp
msgid "Fragment-stage varying could not been accessed in custom function!"
-msgstr "맞춤 함수ì—서 Fragment-stage varyingì— ì ‘ê·¼í•  수 없습니다!"
+msgstr "커스텀 함수ì—서 Fragment-stage varyingì— ì ‘ê·¼í•  수 없습니다!"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
@@ -16167,9 +16209,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "ì•„í‹€ë¼ìФ ì´ë¯¸ì§€ë¥¼ 저장할 수 ì—†ìŒ:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "ë³€í™˜ëœ í…스ì³ë¥¼ 저장할 수 ì—†ìŒ:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "유효하지 ì•Šì€ ë²ˆì—­ 소스!"
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index a853757f43..404f9f5096 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -6,12 +6,14 @@
# Kornelijus <kornelijus.github@gmail.com>, 2017, 2018.
# Ignotas Gražys <ignotas.gr@gmail.com>, 2020.
# Kornelijus TvarijanaviÄius <kornelitvari@protonmail.com>, 2020, 2021.
+# Lukas Hamm <ideallygrey@tuta.io>, 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-21 10:51+0000\n"
-"Last-Translator: Kornelijus TvarijanaviÄius <kornelitvari@protonmail.com>\n"
+"PO-Revision-Date: 2021-10-15 04:33+0000\n"
+"Last-Translator: Lukas Hamm <ideallygrey@tuta.io>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/godot-engine/"
"godot/lt/>\n"
"Language: lt\n"
@@ -20,7 +22,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n%10>=2 && (n%100<10 || n"
"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3;\n"
-"X-Generator: Weblate 4.5\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -640,7 +642,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Optimize"
-msgstr ""
+msgstr "Optimizuoti"
#: editor/animation_track_editor.cpp
msgid "Remove invalid keys"
@@ -660,7 +662,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Clean-Up"
-msgstr ""
+msgstr "Išvalyti"
#: editor/animation_track_editor.cpp
msgid "Scale Ratio:"
@@ -711,11 +713,11 @@ msgstr ""
#: editor/code_editor.cpp
msgid "Go to Line"
-msgstr ""
+msgstr "Eik į Eilutę"
#: editor/code_editor.cpp
msgid "Line Number:"
-msgstr ""
+msgstr "EilÄ—s Numeris:"
#: editor/code_editor.cpp
msgid "%d replaced."
@@ -739,11 +741,11 @@ msgstr ""
#: editor/code_editor.cpp
msgid "Replace"
-msgstr ""
+msgstr "Pakeisti"
#: editor/code_editor.cpp
msgid "Replace All"
-msgstr ""
+msgstr "Pakeisti Visus"
#: editor/code_editor.cpp
msgid "Selection Only"
@@ -892,7 +894,7 @@ msgstr "Užverti"
#: editor/connections_dialog.cpp
msgid "Connect"
-msgstr ""
+msgstr "Prijungti"
#: editor/connections_dialog.cpp
#, fuzzy
@@ -996,7 +998,7 @@ msgstr "Naujausi:"
#: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
-msgstr ""
+msgstr "Ieškoti:"
#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
#: editor/property_selector.cpp editor/quick_open.cpp
@@ -1035,16 +1037,16 @@ msgstr ""
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Dependencies"
-msgstr ""
+msgstr "PriklausomybÄ—s"
#: editor/dependency_editor.cpp editor/editor_resource_picker.cpp
msgid "Resource"
-msgstr ""
+msgstr "Ištekliai"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
#: editor/project_manager.cpp editor/project_settings_editor.cpp
msgid "Path"
-msgstr ""
+msgstr "Takas"
#: editor/dependency_editor.cpp
msgid "Dependencies:"
@@ -1052,7 +1054,7 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid "Fix Broken"
-msgstr ""
+msgstr "Pataisymas Sugedęs"
#: editor/dependency_editor.cpp
msgid "Dependency Editor"
@@ -1138,11 +1140,11 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
-msgstr ""
+msgstr "Ištrinti"
#: editor/dependency_editor.cpp
msgid "Owns"
-msgstr ""
+msgstr "Priklauso"
#: editor/dependency_editor.cpp
msgid "Resources Without Explicit Ownership:"
@@ -1185,11 +1187,11 @@ msgstr ""
#: editor/editor_about.cpp
msgid "Developers"
-msgstr ""
+msgstr "Kūrėjai"
#: editor/editor_about.cpp
msgid "Authors"
-msgstr ""
+msgstr "Autoriai"
#: editor/editor_about.cpp
msgid "Platinum Sponsors"
@@ -1225,11 +1227,11 @@ msgstr ""
#: editor/editor_about.cpp
msgid "Donors"
-msgstr ""
+msgstr "Donorai"
#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "Licencija"
#: editor/editor_about.cpp
msgid "Third-party Licenses"
@@ -1253,7 +1255,7 @@ msgstr ""
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Licencijas"
#: editor/editor_asset_installer.cpp
msgid "Error opening asset file for \"%s\" (not in ZIP format)."
@@ -1290,11 +1292,11 @@ msgstr ""
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Success!"
-msgstr ""
+msgstr "SÄ—kmÄ—!"
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
-msgstr ""
+msgstr "Diegti"
#: editor/editor_asset_installer.cpp
#, fuzzy
@@ -1303,7 +1305,7 @@ msgstr "(Įdiegta)"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Garsiakalbiai"
#: editor/editor_audio_buses.cpp
msgid "Add Effect"
@@ -1351,7 +1353,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
@@ -1359,7 +1361,7 @@ msgstr "Nutildyti"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Apeiti"
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -1448,7 +1450,7 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
-msgstr ""
+msgstr "Įkelti"
#: editor/editor_audio_buses.cpp
msgid "Load an existing Bus Layout."
@@ -1520,7 +1522,7 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
msgid "Enable"
-msgstr ""
+msgstr "Įgalinti"
#: editor/editor_autoload_settings.cpp
msgid "Rearrange Autoloads"
@@ -1547,7 +1549,7 @@ msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp
msgid "Path:"
-msgstr ""
+msgstr "Kelias:"
#: editor/editor_autoload_settings.cpp
msgid "Node Name:"
@@ -1557,7 +1559,7 @@ msgstr ""
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
-msgstr ""
+msgstr "Vardas"
#: editor/editor_autoload_settings.cpp
msgid "Global Variable"
@@ -1606,7 +1608,7 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp
msgid "Name:"
-msgstr ""
+msgstr "Vardas:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
@@ -1615,7 +1617,7 @@ msgstr ""
#: editor/editor_dir_dialog.cpp
msgid "Choose"
-msgstr ""
+msgstr "Pasirinkite"
#: editor/editor_export.cpp
msgid "Storing File:"
@@ -2399,6 +2401,14 @@ msgid ""
"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 ""
@@ -2516,6 +2526,10 @@ 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."
@@ -2841,10 +2855,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4300,6 +4310,18 @@ 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 ""
@@ -4309,10 +4331,6 @@ msgid "Preset"
msgstr "Atstatyti PriartinimÄ…"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr ""
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7297,12 +7315,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Atidaryti Skriptų Editorių"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7374,7 +7394,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
-msgstr ""
+msgstr "Ieškoti"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Into"
@@ -7721,7 +7741,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7729,6 +7749,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8070,6 +8094,26 @@ 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 ""
@@ -14136,6 +14180,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14145,7 +14197,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index 26674cb5b8..68dd8370bd 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -11,6 +11,7 @@
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-11-15 12:43+0000\n"
"Last-Translator: Rihards Kubilis <oldcar@inbox.lv>\n"
@@ -2381,6 +2382,14 @@ msgid ""
"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 "SaglabÄt Visas Ainas"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr ""
@@ -2497,6 +2506,10 @@ 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."
@@ -2817,10 +2830,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "SaglabÄt Visas Ainas"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4235,18 +4244,26 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
-msgstr "Sagatave"
+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 "Reimport"
+msgid "Import As:"
msgstr ""
#: editor/import_dock.cpp
+msgid "Preset"
+msgstr "Sagatave"
+
+#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7154,12 +7171,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Galvenais Skripts:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Izvēlēties šo Mapi"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7578,7 +7597,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7586,6 +7605,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7928,6 +7951,26 @@ 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 ""
@@ -13929,6 +13972,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13938,7 +13989,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -14047,10 +14100,6 @@ msgstr ""
#~ msgstr "Nederīgs fonta izmērs."
#, fuzzy
-#~ msgid "Previous Folder"
-#~ msgstr "Izvēlēties šo Mapi"
-
-#, fuzzy
#~ msgid "Next Folder"
#~ msgstr "Izvēlēties šo Mapi"
diff --git a/editor/translations/mi.po b/editor/translations/mi.po
index 456d89671e..b51c143856 100644
--- a/editor/translations/mi.po
+++ b/editor/translations/mi.po
@@ -6,6 +6,7 @@
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"
@@ -2312,6 +2313,14 @@ msgid ""
"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 ""
@@ -2428,6 +2437,10 @@ 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."
@@ -2747,10 +2760,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4150,15 +4159,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7039,11 +7056,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7453,7 +7470,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7461,6 +7478,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7798,6 +7819,26 @@ 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 ""
@@ -13655,6 +13696,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13664,7 +13713,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/mk.po b/editor/translations/mk.po
index 26d14a75ba..d9663ce943 100644
--- a/editor/translations/mk.po
+++ b/editor/translations/mk.po
@@ -7,6 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2021-01-22 10:21+0000\n"
"Last-Translator: Kristijan Fremen Velkovski <me@krisfremen.com>\n"
"Language-Team: Macedonian <https://hosted.weblate.org/projects/godot-engine/"
@@ -2320,6 +2321,14 @@ msgid ""
"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 ""
@@ -2436,6 +2445,10 @@ 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."
@@ -2755,10 +2768,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4159,15 +4168,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7054,11 +7071,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7468,7 +7485,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7476,6 +7493,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7813,6 +7834,26 @@ 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 ""
@@ -13670,6 +13711,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13679,7 +13728,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index b9f86d4cf2..21a19ba01b 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -8,6 +8,7 @@
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: 2019-11-09 22:04+0000\n"
"Last-Translator: Anvar Nazar <anvarnasar@ymail.com>\n"
@@ -2327,6 +2328,14 @@ msgid ""
"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 ""
@@ -2443,6 +2452,10 @@ 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."
@@ -2762,10 +2775,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4166,15 +4175,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7063,11 +7080,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7477,7 +7494,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7485,6 +7502,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7822,6 +7843,26 @@ 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 ""
@@ -13682,6 +13723,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13691,7 +13740,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/mr.po b/editor/translations/mr.po
index e305a8b937..0d02f7b34a 100644
--- a/editor/translations/mr.po
+++ b/editor/translations/mr.po
@@ -7,6 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2020-12-23 22:57+0000\n"
"Last-Translator: Prachi Joshi <josprachi@yahoo.com>\n"
"Language-Team: Marathi <https://hosted.weblate.org/projects/godot-engine/"
@@ -2320,6 +2321,14 @@ msgid ""
"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 ""
@@ -2436,6 +2445,10 @@ 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."
@@ -2755,10 +2768,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4159,15 +4168,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7052,11 +7069,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7466,7 +7483,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7474,6 +7491,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7812,6 +7833,26 @@ 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 ""
@@ -13674,6 +13715,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13683,7 +13732,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index ca77c01937..cc9f6f797b 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -10,12 +10,14 @@
# keviinx <keviinx@yahoo.com>, 2020.
# Keviindran Ramachandran <keviinx@yahoo.com>, 2020, 2021.
# Jacque Fresco <aidter@use.startmail.com>, 2021.
+# Lemoney <railkill@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-08-22 22:46+0000\n"
-"Last-Translator: Keviindran Ramachandran <keviinx@yahoo.com>\n"
+"PO-Revision-Date: 2021-10-10 10:18+0000\n"
+"Last-Translator: Lemoney <railkill@gmail.com>\n"
"Language-Team: Malay <https://hosted.weblate.org/projects/godot-engine/godot/"
"ms/>\n"
"Language: ms\n"
@@ -23,7 +25,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -376,9 +378,8 @@ msgstr "nod '%s'"
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "animation"
-msgstr "Set Peralihan ke:"
+msgstr "animasi"
#: editor/animation_track_editor.cpp
msgid "AnimationPlayer can't animate itself, only other players."
@@ -386,9 +387,8 @@ msgstr "AnimationPlayer tidak animasikan dirinya sendiri, hanya pemain lain."
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "property '%s'"
-msgstr "Sifat"
+msgstr "sifat '%s'"
#: editor/animation_track_editor.cpp
msgid "Anim Create & Insert"
@@ -618,9 +618,8 @@ msgid "Use Bezier Curves"
msgstr "Guna Lengkung Bezier"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Create RESET Track(s)"
-msgstr "Tampal Trek"
+msgstr "Cipta Trek RESET"
#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
@@ -948,7 +947,6 @@ msgid "Edit..."
msgstr "Edit..."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go to Method"
msgstr "Pergi ke Kaedah"
@@ -1070,18 +1068,16 @@ msgid "Owners Of:"
msgstr "Pemilik:"
#: editor/dependency_editor.cpp
-#, fuzzy
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 ""
-"Alih keluar fail terpilih dari projek? (Tidak boleh buat asal)\n"
-"Anda boleh mencari fail yang dikeluarkan dalam tong sampah untuk "
-"memulihkannya."
+"Keluarkan fail terpilih dari projek? (Tidak boleh buat asal.)\n"
+"Bergantung kepada konfigurasi sistem fail anda, fail yang dikeluarkan akan "
+"dipindah ke tong sampah atau dipadamkan secara kekal."
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -1091,9 +1087,9 @@ msgid ""
msgstr ""
"Fail yang akan dikeluarkan diperlukan oleh sumber lain agar dapat "
"berfungsi.\n"
-"Masih mahu keluarkan fail tersebut? (tidak boleh buat asal)\n"
-"Anda boleh mencari fail yang dikeluarkan dalam tong sampah untuk "
-"memulihkannya."
+"Masih mahu keluarkan fail tersebut? (Tidak boleh buat asal.)\n"
+"Bergantung kepada konfigurasi sistem fail anda, fail yang dikeluarkan akan "
+"dipindah ke tong sampah atau dipadamkan secara kekal."
#: editor/dependency_editor.cpp
msgid "Cannot remove:"
@@ -1263,14 +1259,12 @@ msgid "Licenses"
msgstr "Lesen"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Error opening asset file for \"%s\" (not in ZIP format)."
-msgstr "Ralat semasa membuka fail pakej, bukan dalam format ZIP."
+msgstr "Ralat membuka fail aset untuk \"%s\" (bukan dalam format ZIP)."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "%s (already exists)"
-msgstr "%s (Sudah Wujud)"
+msgstr "%s (sudah wujud)"
#: editor/editor_asset_installer.cpp
msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
@@ -1285,19 +1279,16 @@ msgid "Uncompressing Assets"
msgstr "Nyahmampatkan Aset"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "The following files failed extraction from asset \"%s\":"
-msgstr "Fail berikut gagal diekstrak dari pakej:"
+msgstr "Fail berikut gagal diekstrak dari aset \"%s\":"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "(and %s more files)"
-msgstr "Dan sebanyak %s fail."
+msgstr "(dan %s fail lagi)"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Asset \"%s\" installed successfully!"
-msgstr "Pakej berjaya dipasang!"
+msgstr "Aset \"%s\" berjaya dipasang!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -1309,9 +1300,8 @@ msgid "Install"
msgstr "Pasang"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Asset Installer"
-msgstr "Pemasang Pakej"
+msgstr "Pemasang Aset"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
@@ -1374,9 +1364,8 @@ msgid "Bypass"
msgstr "Pintas"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Bus Options"
-msgstr "Pilihan bas"
+msgstr "Pilihan Bas"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1761,36 +1750,39 @@ msgstr "Memberikan akses terbina dalam kepada Perpustakaan Aset."
#: editor/editor_feature_profile.cpp
msgid "Allows editing the node hierarchy in the Scene dock."
-msgstr ""
+msgstr "Membenarkan suntingan hierarki nod di dalam dok Adegan."
#: editor/editor_feature_profile.cpp
msgid ""
"Allows to work with signals and groups of the node selected in the Scene "
"dock."
msgstr ""
+"Membenarkan fungsi isyarat dan kumpulan nod yang telah dipilih di dalam dok "
+"Adegan."
#: editor/editor_feature_profile.cpp
msgid "Allows to browse the local file system via a dedicated dock."
-msgstr ""
+msgstr "Membenarkan semakan sistem fail lokal melalui dok yang khas."
#: editor/editor_feature_profile.cpp
msgid ""
"Allows to configure import settings for individual assets. Requires the "
"FileSystem dock to function."
msgstr ""
+"Membenarkan konfigurasi tetapan import untuk setiap aset. Memerlukan dok "
+"FileSystem untuk berfungsi."
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "(current)"
-msgstr "(Semasa)"
+msgstr "(semasa)"
#: editor/editor_feature_profile.cpp
msgid "(none)"
-msgstr ""
+msgstr "(tiada)"
#: editor/editor_feature_profile.cpp
msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr ""
+msgstr "Keluarkan profil, '%s' yang sedang dipilih? Tidak boleh dibuat asal."
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1821,19 +1813,16 @@ msgid "Enable Contextual Editor"
msgstr "Aktifkan Editor Kontekstual"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Class Properties:"
-msgstr "Tutup Semua Sifat-sifat"
+msgstr "Sifat-sifat Kelas:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Main Features:"
-msgstr "Ciri Diaktifkan:"
+msgstr "Ciri-ciri Utama:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Nodes and Classes:"
-msgstr "Kelas Diaktifkan:"
+msgstr "Nod-nod dan Kelas-kelas:"
#: editor/editor_feature_profile.cpp
msgid "File '%s' format is invalid, import aborted."
@@ -1861,14 +1850,12 @@ msgid "Current Profile:"
msgstr "Profil Semasa:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Create Profile"
-msgstr "Padam Profil"
+msgstr "Cipta Profil"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Remove Profile"
-msgstr "Buang Trek Anim"
+msgstr "Keluarkan Profil"
#: editor/editor_feature_profile.cpp
msgid "Available Profiles:"
@@ -1888,18 +1875,18 @@ msgid "Export"
msgstr "Eksport"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Configure Selected Profile:"
-msgstr "Profil Semasa:"
+msgstr "Kemas Kini Profil Terpilih:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Extra Options:"
-msgstr "Pilihan Kelas:"
+msgstr "Pilihan Tambahan:"
#: editor/editor_feature_profile.cpp
msgid "Create or import a profile to edit available classes and properties."
msgstr ""
+"Cipta atau import sebuah profil untuk menyunting kelas-kelas dan sifat-sifat "
+"yang ada."
#: editor/editor_feature_profile.cpp
msgid "New profile name:"
@@ -1926,9 +1913,8 @@ msgid "Select Current Folder"
msgstr "Pilih Folder Semasa"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "File exists, overwrite?"
-msgstr "Fail Wujud, Tulis Ganti?"
+msgstr "Fail wujud, tulis ganti?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select This Folder"
@@ -2246,7 +2232,7 @@ msgstr "Sifat:"
#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Set %s"
-msgstr ""
+msgstr "Tetapkan %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2326,6 +2312,9 @@ msgid ""
"Update Continuously is enabled, which can increase power usage. Click to "
"disable it."
msgstr ""
+"Berputar apabila tingkap editor dilukis semula.\n"
+"Kemas Kini Secara Berterusan adalah aktif, ia boleh meningkatkan penggunaan "
+"kuasa. Klik untuk nyahaktifkannya."
#: editor/editor_node.cpp
msgid "Spins when the editor window redraws."
@@ -2423,6 +2412,15 @@ msgstr ""
"Tidak dapat menyimpan adegan. Kemungkinan kebergantungan (instance atau "
"warisan) tidak dapat dipenuhi."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Tidak dapat memulakan subproses!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Simpan Semua Adegan-adegan"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Tidak boleh tulis ganti adegan yang masih terbuka!"
@@ -2559,6 +2557,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Simpan perubahan pada '%s' sebelum menutup?"
#: 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."
@@ -2908,10 +2910,6 @@ msgid "Save Scene"
msgstr "Simpan Adegan"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Simpan Semua Adegan-adegan"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Tukar Kepada..."
@@ -2979,9 +2977,8 @@ msgid "Orphan Resource Explorer..."
msgstr "Penjelajah Sumber Yatim..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Reload Current Project"
-msgstr "Profil Semasa:"
+msgstr "Muat Semula Projek Semasa"
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -3422,9 +3419,8 @@ msgid "Update"
msgstr "Kemas kini"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Version"
-msgstr "Versi:"
+msgstr "Versi"
#: editor/editor_plugin_settings.cpp
#, fuzzy
@@ -3711,9 +3707,8 @@ msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't connect to the mirror."
-msgstr "Tidak dapat menyambung."
+msgstr "Tidak dapat menyambung ke tapak web."
#: editor/export_template_manager.cpp
#, fuzzy
@@ -4418,6 +4413,18 @@ msgid "Clear Default for '%s'"
msgstr "Kosongkan Lalai untuk '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Import semula"
+
+#: 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 "Import Sebagai:"
@@ -4426,10 +4433,6 @@ msgid "Preset"
msgstr "Pratetap"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Import semula"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Simpan Adegan, Import semula, dan Mula Semula"
@@ -7348,12 +7351,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Skrip Baru"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Tab sebelumnya"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7765,7 +7770,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7773,6 +7778,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8119,6 +8128,26 @@ 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 ""
@@ -14089,6 +14118,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14098,7 +14135,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 0b9333655f..660c01fed9 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -21,6 +21,7 @@
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-12 21:32+0000\n"
"Last-Translator: Petter Reinholdtsen <pere-weblate@hungry.com>\n"
@@ -2504,6 +2505,15 @@ msgstr ""
"Kunne ikke lagre scene. Sannsynligvis kunne ikke avhengigheter (instanser "
"eller arvinger) oppfylles."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Kunne ikke starta subprosess!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Lagre Alle Scener"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Kan ikke overskrive en scene som fortsatt er åpen!"
@@ -2640,6 +2650,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Lagre endringer til '%s' før lukking?"
#: 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."
@@ -2993,10 +3007,6 @@ msgid "Save Scene"
msgstr "Lagre Scene"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Lagre Alle Scener"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Konverter Til..."
@@ -4552,6 +4562,18 @@ msgid "Clear Default for '%s'"
msgstr "Fjern Standard for '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimporter"
+
+#: 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 "Importer Som:"
@@ -4561,10 +4583,6 @@ msgid "Preset"
msgstr "Preset..."
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimporter"
-
-#: editor/import_dock.cpp
#, fuzzy
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Lagre scener, om-importer og start om"
@@ -7694,11 +7712,13 @@ msgid "Move Down"
msgstr "Flytt Ned"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Neste skript"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Forrige skript"
#: editor/plugins/script_editor_plugin.cpp
@@ -8134,7 +8154,7 @@ msgstr "Venstre knapp"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspektiv"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8143,6 +8163,11 @@ msgid "Right Orthogonal"
msgstr "Høyre knapp"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspektiv"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8501,6 +8526,27 @@ msgid "Right View"
msgstr "Høyrevisning"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Frontvisning"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Bytt Perspektiv/Ortogonal Fremvisning"
@@ -14779,6 +14825,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14788,7 +14842,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index d588afb791..abbf9a02bf 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -49,12 +49,14 @@
# Vancha March <tjipkevdh@gmail.com>, 2021.
# Hugo van de Kuilen <hugo.vandekuilen1234567890@gmail.com>, 2021.
# tobeqz <vanveenjorik+tobeqz@gmail.com>, 2021.
+# Edgar <Edgar@anotherfoxguy.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-08-06 19:42+0000\n"
-"Last-Translator: tobeqz <vanveenjorik+tobeqz@gmail.com>\n"
+"PO-Revision-Date: 2021-10-04 13:31+0000\n"
+"Last-Translator: Edgar <Edgar@anotherfoxguy.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/"
"nl/>\n"
"Language: nl\n"
@@ -62,7 +64,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -412,9 +414,8 @@ msgstr "Anim Invoegen"
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "node '%s'"
-msgstr "Kan '%s' niet openen."
+msgstr "node '%s'"
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
@@ -428,9 +429,8 @@ msgstr "Animatie-Speler kan zichzelf niet animeren, alleen andere spelers."
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "property '%s'"
-msgstr "Eigenschap '%s' bestaat niet."
+msgstr "Eigenschap '%s'"
#: editor/animation_track_editor.cpp
msgid "Anim Create & Insert"
@@ -1608,9 +1608,8 @@ msgid "Name"
msgstr "Naam"
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "Global Variable"
-msgstr "Hernoem Variabele"
+msgstr "Globale Variabele"
#: editor/editor_data.cpp
msgid "Paste Params"
@@ -2458,6 +2457,15 @@ msgstr ""
"Kon de scène niet opslaan. Waarschijnlijk konden afhankelijkheden "
"(instanties of erfelijkheden) niet voldaan worden."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Kon het subproces niet opstarten!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Alle scènes opslaan"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Kan geen scènes overschrijven die nog open zijn!"
@@ -2595,6 +2603,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Sla wijzigen aan '%s' op voor het afsluiten?"
#: 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."
@@ -2942,10 +2954,6 @@ msgid "Save Scene"
msgstr "Scène opslaan"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Alle scènes opslaan"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Omzetten naar..."
@@ -4459,6 +4467,18 @@ msgid "Clear Default for '%s'"
msgstr "Wis Standaard voor '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Opnieuw importeren"
+
+#: 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 "Importeer als:"
@@ -4467,10 +4487,6 @@ msgid "Preset"
msgstr "Voorinstellingen"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Opnieuw importeren"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Sla scènes op, importeer opnieuw en start dan opnieuw op"
@@ -7467,11 +7483,13 @@ msgid "Move Down"
msgstr "Plaats Omlaag"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Volgend script"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Vorig script"
#: editor/plugins/script_editor_plugin.cpp
@@ -7894,7 +7912,7 @@ msgstr "Orthogonaal"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspectief"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7904,6 +7922,11 @@ msgstr "Orthogonaal"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspectief"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Orthogonaal"
@@ -8266,6 +8289,27 @@ msgid "Right View"
msgstr "Rechter Zijaanzicht"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Vooraanzicht"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Schakel Perspectief/Orthogonaal Zicht"
@@ -14633,6 +14677,14 @@ msgstr ""
"De standaard Environment zoals aangegeven in Projectinstellingen "
"(Rendering→Environment→Default Environment) kon niet worden geladen."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14646,7 +14698,10 @@ msgstr ""
"van en wijs zijn interne textuur toe aan een knoop om te tonen."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
"De grootte van een Viewport moet groter zijn dan 0 om iets weer te geven."
diff --git a/editor/translations/or.po b/editor/translations/or.po
index c1036fa702..00e5009221 100644
--- a/editor/translations/or.po
+++ b/editor/translations/or.po
@@ -6,6 +6,7 @@
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/"
@@ -2318,6 +2319,14 @@ msgid ""
"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 ""
@@ -2434,6 +2443,10 @@ 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."
@@ -2753,10 +2766,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4156,15 +4165,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7045,11 +7062,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7459,7 +7476,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7467,6 +7484,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7804,6 +7825,26 @@ 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 ""
@@ -13661,6 +13702,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13670,7 +13719,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index 7a5a0eb037..5c55b0c86f 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -16,14 +16,14 @@
# Karol Walasek <coreconviction@gmail.com>, 2016.
# Maksymilian Świąć <maksymilian.swiac@gmail.com>, 2017-2018.
# Mietek Szcześniak <ravaging@go2.pl>, 2016.
-# NeverK <neverkoxu@gmail.com>, 2018, 2019, 2020.
+# NeverK <neverkoxu@gmail.com>, 2018, 2019, 2020, 2021.
# Rafal Brozio <rafal.brozio@gmail.com>, 2016, 2019, 2020, 2021.
# Rafał Ziemniak <synaptykq@gmail.com>, 2017.
# RM <synaptykq@gmail.com>, 2018, 2020.
# Sebastian Krzyszkowiak <dos@dosowisko.net>, 2017.
# Sebastian Pasich <sebastian.pasich@gmail.com>, 2017, 2019, 2020.
# siatek papieros <sbigneu@gmail.com>, 2016.
-# Zatherz <zatherz@linux.pl>, 2017, 2020.
+# Zatherz <zatherz@linux.pl>, 2017, 2020, 2021.
# Tomek <kobewi4e@gmail.com>, 2018, 2019, 2020, 2021.
# Wojcieh Er Zet <wojcieh.rzepecki@gmail.com>, 2018.
# Dariusz Siek <dariuszynski@gmail.com>, 2018, 2019, 2020, 2021.
@@ -38,7 +38,7 @@
# Myver <igormakarowicz@gmail.com>, 2019.
# Maciej Chamera <chameramaciej@gmail.com>, 2019.
# Cezary Stasiak <cezary.p.stasiak@gmail.com>, 2019.
-# Jan Ligudziński <jan.ligudzinski@gmail.com>, 2020.
+# Jan Ligudziński <jan.ligudzinski@gmail.com>, 2020, 2021.
# Adam Jagoda <kontakt@lukasz.xyz>, 2020.
# Filip Glura <mcmr.slendy@gmail.com>, 2020.
# Roman Skiba <romanskiba0@gmail.com>, 2020.
@@ -49,11 +49,13 @@
# vrid <patryksoon@live.com>, 2021.
# Suchy Talerz <kacperkubis06@gmail.com>, 2021.
# Bartosz Stasiak <bs97086@amu.edu.pl>, 2021.
+# Marek Malaria <to.tylko.dla.kont@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-09-15 00:46+0000\n"
+"PO-Revision-Date: 2021-10-06 00:12+0000\n"
"Last-Translator: Tomek <kobewi4e@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
@@ -2436,6 +2438,15 @@ msgstr ""
"Nie udało się zapisać sceny. Najprawdopodobniej pewne zależności "
"(instancjonowanie lub dziedziczenie) nie są spełnione."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Nie można zapisać zkonwertowanej tekstury:"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Zapisz wszystkie sceny"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Nie można nadpisać sceny, która wciąż jest otwarta!"
@@ -2573,6 +2584,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Zapisać zmiany w \"%s\" przed zamknięciem?"
#: 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."
@@ -2618,29 +2633,27 @@ msgstr "Aktualna scena nie została zapisana. Otworzyć mimo to?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Nie można cofnąć akcji kiedy przyciski myszy są wciśnięte."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Nie ma nic do cofnięcia."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Cofnij"
+msgstr "Cofnij: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Nie można ponowić kiedy przyciski myszy są wciśnięte."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Nie ma nic do ponowienia."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Ponów"
+msgstr "Ponów: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2923,10 +2936,6 @@ msgid "Save Scene"
msgstr "Zapisz scenÄ™"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Zapisz wszystkie sceny"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Konwertuj na..."
@@ -3324,9 +3333,8 @@ msgid "Merge With Existing"
msgstr "Połącz z Istniejącym"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Zmiana transformacji"
+msgstr "Zastosuj transformacje MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3442,7 +3450,7 @@ msgstr "Status"
#: editor/editor_profiler.cpp
msgid "Measure:"
-msgstr "Zmierzono:"
+msgstr "Pomiar:"
#: editor/editor_profiler.cpp
msgid "Frame Time (ms)"
@@ -3587,7 +3595,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Szybkie załadowanie"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4407,6 +4415,18 @@ msgid "Clear Default for '%s'"
msgstr "Usuń domyślne dla \"%s\""
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Importuj ponownie"
+
+#: 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 "Importuj jako:"
@@ -4415,10 +4435,6 @@ msgid "Preset"
msgstr "Profil"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Importuj ponownie"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Zapisz sceny, reimportuj i uruchom ponownie"
@@ -5012,7 +5028,7 @@ msgstr "Poprzedni"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
-msgstr "Następny"
+msgstr "Przyszłe"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Depth"
@@ -5040,7 +5056,7 @@ msgstr "Wymuś białe cieniowanie"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Include Gizmos (3D)"
-msgstr "Dołącz Gizmo (3D)"
+msgstr "Dołącz uchwyty (3D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Pin AnimationPlayer"
@@ -5063,7 +5079,7 @@ msgstr "Błąd!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Blend Times:"
-msgstr "Czasy przejścia:"
+msgstr "Czasy Blendowania:"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Next (Auto Queue):"
@@ -5071,7 +5087,7 @@ msgstr "Następny (automatyczna kolejka):"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Cross-Animation Blend Times"
-msgstr "Czasy przejścia pomiędzy animacjami"
+msgstr "Czasy Blendowania Pomiędzy Animacjami"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Move Node"
@@ -5186,11 +5202,11 @@ msgstr "Skala:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
-msgstr "Pojawianie siÄ™ (s):"
+msgstr "Fade In (s):"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade Out (s):"
-msgstr "Zanikanie (s):"
+msgstr "Fade Out (s):"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Blend"
@@ -5273,7 +5289,7 @@ msgstr "Jednorazowy Węzeł"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Mix Node"
-msgstr "Wezeł Mieszania"
+msgstr "Węzeł Mieszania"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Blend2 Node"
@@ -5297,7 +5313,7 @@ msgstr "Węzeł Przewijania w Czasie"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Transition Node"
-msgstr "Węzeł Przejścia"
+msgstr "Węzeł Przeobrażenia"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Import Animations..."
@@ -5694,15 +5710,13 @@ msgstr "Przesuń CanvasItem \"%s\" na (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Zablokuj wybrane"
+msgstr "Zablokowany"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Grupa"
+msgstr "Zgrupowany"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -5795,7 +5809,7 @@ msgstr "Zachowaj proporcje"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Anchors only"
-msgstr "Tylko zakotwiczenia"
+msgstr "Tylko zakotwiczenie"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change Anchors and Margins"
@@ -5882,7 +5896,7 @@ msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
-msgstr "Zresetuj powiększenie"
+msgstr "Wyzeruj zbliżenie"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6158,11 +6172,11 @@ msgstr "Instancjonuj scenÄ™ tutaj"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
-msgstr "Podwój wielkość siatki"
+msgstr "Zwiększ krok siatki 2 razy"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Divide grid step by 2"
-msgstr "Zmniejsz wielkość siatki dwukrotnie"
+msgstr "Zmniejsz krok siatki 2 razy"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Pan View"
@@ -6218,7 +6232,7 @@ msgstr "Dodawanie %s..."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Cannot instantiate multiple nodes without root."
-msgstr "Nie można utworzyć wielu węzłów bez węzła głównego."
+msgstr "Nie można utworzyć instancji wielu węzłów bez węzła głównego."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -6336,7 +6350,7 @@ msgstr "Płaskie 0"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat 1"
-msgstr "Płaskie 1"
+msgstr "Flat 1"
#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
msgid "Ease In"
@@ -6648,14 +6662,12 @@ msgid "Remove Selected Item"
msgstr "Usuń zaznaczony element"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Import ze sceny"
+msgstr "Import ze sceny (ignoruj transformacje)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Import ze sceny"
+msgstr "Import ze sceny (zastosuj transformacje)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7245,14 +7257,12 @@ msgid "Flip Portal"
msgstr "Odbij portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Wyczyść przekształcenie"
+msgstr "Ustaw transformację przesłaniacza"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Utwórz węzeł"
+msgstr "Wycentruj węzeł"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7388,11 +7398,13 @@ msgid "Move Down"
msgstr "Przesuń w dół"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Następny skrypt"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Poprzedni skrypt"
#: editor/plugins/script_editor_plugin.cpp
@@ -7757,14 +7769,12 @@ msgid "Skeleton2D"
msgstr "Szkielet 2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Ustaw kości do pozy spoczynkowej"
+msgstr "Resetuj do pozy spoczynkowej"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Nadpisz"
+msgstr "Nadpisz pozÄ™ spoczynkowÄ…"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7791,69 +7801,63 @@ msgid "Perspective"
msgstr "Perspektywa"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Ortogonalna"
+msgstr "Góra ortogonalnie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspektywa"
+msgstr "Góra perspektywicznie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Ortogonalna"
+msgstr "Spód ortogonalnie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspektywa"
+msgstr "Spód perspektywicznie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Ortogonalna"
+msgstr "Lewo ortogonalnie"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspektywa"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Ortogonalna"
+msgstr "Prawo ortogonalnie"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Prawo perspektywicznie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Ortogonalna"
+msgstr "Przód ortogonalnie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspektywa"
+msgstr "Przód perspektywicznie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Ortogonalna"
+msgstr "Tył ortogonalnie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspektywa"
+msgstr "Tył perspektywicznie"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [auto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portale aktywne]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8024,7 +8028,7 @@ msgstr "Wyświetlaj środowisko"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Gizmos"
-msgstr "Pokaż ikony węzłów"
+msgstr "Pokaż uchwyty"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
@@ -8177,6 +8181,27 @@ msgid "Right View"
msgstr "Widok z prawej"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Widok z przodu"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Przełącz widok perspektywiczny/ortogonalny"
@@ -8235,7 +8260,7 @@ msgstr "4 widoki"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Gizmos"
-msgstr "Ikony węzłów"
+msgstr "Uchwyty"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Origin"
@@ -8250,9 +8275,8 @@ msgid "View Portal Culling"
msgstr "Culling portali widoku"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Culling portali widoku"
+msgstr "Pokaż Occlusion Culling"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8320,9 +8344,8 @@ msgid "Post"
msgstr "Po"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Projekt bez nazwy"
+msgstr "Nienazwany uchwyt"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -12446,14 +12469,12 @@ msgid "Set Portal Point Position"
msgstr "Ustaw pozycjÄ™ punktu portalu"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Zmień promień kształtu cylindra"
+msgstr "Ustaw promień sfery przesłaniacza"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Ustaw punkt kontrolny wchodzÄ…cy z krzywej"
+msgstr "Ustaw pozycję sfery przesłaniacza"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12738,9 +12759,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "Nazwa klasy nie może być słowem zastrzeżonym"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Wypełnij zaznaczone"
+msgstr "Zbuduj rozwiÄ…zanie"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -14085,11 +14105,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Żaden kształt nie jest ustawiony."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Obsługiwane są tylko jednolite skale."
#: scene/3d/particles.cpp
msgid ""
@@ -14440,6 +14460,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Opcje Kafelkowanie i Dopasowane kafelkowanie dla właściwości Rozciąganie Osi "
+"sÄ… skuteczne tylko w przypadku korzystania z backendu renderowania GLES3.\n"
+"Backend GLES2 jest obecnie używany, więc te tryby będą zamiast tego działać "
+"jak Rozciągnięcie."
#: scene/gui/popup.cpp
msgid ""
@@ -14477,6 +14501,14 @@ msgstr ""
"Domyślne środowisko określone w Ustawieniach Projektu (Renderowanie -> "
"Environment -> Default Environment) nie mogło zostać załadowane."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14490,12 +14522,15 @@ msgstr ""
"przyporządkuj jego teksturę dla któregoś węzła."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "Rozmiar węzła Viewport musi być większy niż 0, by coś wyrenderować."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphere ustaw sfery"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -16182,10 +16217,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "Nie można zapisać obrazu atlasu:"
-#, fuzzy
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "Nie można zapisać zkonwertowanej tekstury:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "Nieprawidłowe źródło tłumaczenia!"
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index 8f2aa04183..9ea671ae8f 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -10,6 +10,7 @@
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-06-11 14:49+0000\n"
"Last-Translator: Nathan Franke <natfra@pm.me>\n"
@@ -2404,6 +2405,14 @@ msgid ""
"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 ""
@@ -2520,6 +2529,10 @@ 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."
@@ -2845,10 +2858,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4306,15 +4315,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7293,12 +7310,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Discharge ye' Variable"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Slit th' Node"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7726,7 +7745,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7734,6 +7753,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8079,6 +8102,26 @@ 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 ""
@@ -14198,6 +14241,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14207,7 +14258,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -14338,10 +14391,6 @@ msgstr ""
#~ msgstr "Yer Calligraphy be wrongly sized."
#, fuzzy
-#~ msgid "Previous Folder"
-#~ msgstr "Slit th' Node"
-
-#, fuzzy
#~ msgid "Custom Node"
#~ msgstr "Slit th' Node"
diff --git a/editor/translations/pt.po b/editor/translations/pt.po
index 94bcea301b..e78f560111 100644
--- a/editor/translations/pt.po
+++ b/editor/translations/pt.po
@@ -22,8 +22,9 @@
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-09-15 00:46+0000\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
"Last-Translator: João Lopes <linux-man@hotmail.com>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/"
"godot/pt/>\n"
@@ -422,7 +423,7 @@ msgstr "Reorganizar Pistas"
#: editor/animation_track_editor.cpp
msgid "Transform tracks only apply to Spatial-based nodes."
-msgstr "Pistas de Transformação só se aplicam a nós de base Espacial."
+msgstr "Pistas de transformação só se aplicam a nós de base Espacial."
#: editor/animation_track_editor.cpp
msgid ""
@@ -1079,7 +1080,7 @@ msgid ""
"Depending on your filesystem configuration, the files will either be moved "
"to the system trash or deleted permanently."
msgstr ""
-"Remover ficheiros selecionados do Projeto? (Não pode ser revertido.)\n"
+"Remover ficheiros selecionados do Projeto? (Não pode ser desfeito.)\n"
"Dependendo da configuração, pode encontrar os ficheiros removidos na "
"Reciclagem do sistema ou apagados permanentemente."
@@ -1093,7 +1094,7 @@ msgid ""
msgstr ""
"Os ficheiros a serem removidos são necessários para que outros recursos "
"funcionem.\n"
-"Remover mesmo assim? (Não pode ser revertido.)\n"
+"Removê-los mesmo assim? (Não pode ser desfeito.)\n"
"Dependendo da configuração, pode encontrar os ficheiros removidos na "
"Reciclagem do sistema ou apagados permanentemente."
@@ -1111,7 +1112,7 @@ msgstr "Falha no carregamento devido a dependências em falta:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
-msgstr "Abrir De Qualquer Maneira"
+msgstr "Abrir Em Qualquer Caso"
#: editor/dependency_editor.cpp
msgid "Which action should be taken?"
@@ -1127,7 +1128,7 @@ msgstr "Erros ao carregar!"
#: editor/dependency_editor.cpp
msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr "Apagar permanentemente %d itens? (Sem desfazer!)"
+msgstr "Apagar permanentemente %d itens? (Definitivo!)"
#: editor/dependency_editor.cpp
msgid "Show Dependencies"
@@ -1789,7 +1790,7 @@ msgstr "(nada)"
#: editor/editor_feature_profile.cpp
msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr "Remover perfil selecionado, '%s'? Não pode ser revertido."
+msgstr "Remover perfil selecionado, '%s'? Não pode ser desfeito."
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -2110,7 +2111,7 @@ msgstr "Propriedades"
#: editor/editor_help.cpp
msgid "override:"
-msgstr "Sobrepõe:"
+msgstr "sobrepor:"
#: editor/editor_help.cpp
msgid "default:"
@@ -2316,6 +2317,9 @@ msgid ""
"Update Continuously is enabled, which can increase power usage. Click to "
"disable it."
msgstr ""
+"Roda quando a janela do editor redesenha.\n"
+"Atualização Contínua está ativa, o que pode aumentar o consumo de energia. "
+"Clique para a desativar."
#: editor/editor_node.cpp
msgid "Spins when the editor window redraws."
@@ -2412,6 +2416,14 @@ msgstr ""
"Incapaz de guardar cena. Provavelmente, as dependências (instâncias ou "
"heranças) não puderam ser satisfeitas."
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr "Incapaz de guardar uma ou mais cenas!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Guardar todas as Cenas"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Não se consegue sobrescrever cena ainda aberta!"
@@ -2446,7 +2458,7 @@ msgid ""
"To restore the Default layout to its base settings, use the Delete Layout "
"option and delete the Default layout."
msgstr ""
-"Layout predefinido do editor anulado.\n"
+"Layout predefinido do editor sobreposto.\n"
"Para restaurar o layout predefinido nas configurações base, use a opção "
"Apagar Layout e remova o layout Predefinido."
@@ -2549,12 +2561,16 @@ msgid "Save changes to '%s' before closing?"
msgstr "Guardar alterações a '%s' antes de fechar?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr "% não existe mais! Especifique uma nova localização para guardar."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
msgstr ""
"A cena atual não tem nó raiz, mas %d recurso(s) externo(s) modificados foram "
-"guardados."
+"mesmo assim guardados."
#: editor/editor_node.cpp
msgid ""
@@ -2594,29 +2610,27 @@ msgstr "A cena atual não foi guardada. Abrir na mesma?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Incapaz de desfazer enquanto os botões do rato estão premidos."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Nada para desfazer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Desfazer"
+msgstr "Desfazer: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Incapaz de refazer enquanto os botões do rato estão premidos."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Nada para refazer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Refazer"
+msgstr "Refazer: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2632,7 +2646,7 @@ msgid ""
"Reload the saved scene anyway? This action cannot be undone."
msgstr ""
"A cena atual tem alterações não guardadas.\n"
-"Recarregar a cena guardada? Esta ação não pode ser revertida."
+"Recarregar na mesma a cena guardada? Esta ação não pode ser desfeita."
#: editor/editor_node.cpp
msgid "Quick Run Scene..."
@@ -2900,10 +2914,6 @@ msgid "Save Scene"
msgstr "Guardar Cena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Guardar todas as Cenas"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Converter Para..."
@@ -3303,9 +3313,8 @@ msgid "Merge With Existing"
msgstr "Combinar com o Existente"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Anim Mudar Transformação"
+msgstr "Aplicar Transformações do MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3456,6 +3465,12 @@ msgid ""
"functions called by that function.\n"
"Use this to find individual functions to optimize."
msgstr ""
+"Inclusiva: Inclui tempo de outras funções chamadas por esta função.\n"
+"Use-o para detetar congestionamentos.\n"
+"\n"
+"Próprio: Conta apenas o tempo gasto na própria função, não em outras funções "
+"chamadas pela função.\n"
+"Use-o para encontrar funções individuais a otimizar."
#: editor/editor_profiler.cpp
msgid "Frame #:"
@@ -3560,7 +3575,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Carregamento Rápido"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4203,7 +4218,7 @@ msgstr "Substituir: "
#: editor/find_in_files.cpp
msgid "Replace all (no undo)"
-msgstr "Substituir tudo (não há desfazer)"
+msgstr "Substituir tudo (definitivo)"
#: editor/find_in_files.cpp
msgid "Searching..."
@@ -4384,6 +4399,22 @@ msgid "Clear Default for '%s'"
msgstr "Limpar Predefinição para '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimportar"
+
+#: 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 ""
+"Há alterações pendentes que ainda não foram aplicadas. Clique Reimportar "
+"para aplicar alterações feitas nas opções de importação.\n"
+"Se selecionar outro recurso na doca FileSystem sem Reimportar primeiro, "
+"serão rejeitadas alterações feitas na doca Import."
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "Importar Como:"
@@ -4392,10 +4423,6 @@ msgid "Preset"
msgstr "Predefinições"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimportar"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Guardar Cenas, Reimportar e Reiniciar"
@@ -5667,22 +5694,20 @@ msgstr "Mover CanvasItem \"%s\" para (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Bloquear Seleção"
+msgstr "Bloqueado"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Grupos"
+msgstr "Agrupado"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Children of containers have their anchors and margins values overridden by "
"their parent."
msgstr ""
-"As âncoras e margens de filhos de um contentores são sobrescritas pelo seu "
+"As âncoras e margens de filhos de um contentores são sobrepostas pelo seu "
"progenitor."
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5793,6 +5818,9 @@ msgid ""
"No project instance running. Run the project from the editor to use this "
"feature."
msgstr ""
+"Sobreposição da Câmara do Projeto.\n"
+"Nenhuma instância do projeto em execução. Execute o projeto pelo editor para "
+"usar este recurso."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6389,7 +6417,7 @@ msgstr "Editor da lista de itens"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
-msgstr "Criar Polígono oclusor"
+msgstr "Criar Polígono Oclusor"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
@@ -6532,6 +6560,9 @@ msgid ""
"This is similar to single collision shape, but can result in a simpler "
"geometry in some cases, at the cost of accuracy."
msgstr ""
+"Cria uma forma convexa de colisão simplificada.\n"
+"É similar à forma de colisão única, mas pode ter uma geometria mais simples "
+"em alguns casos, ao custo da precisão."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
@@ -6612,14 +6643,12 @@ msgid "Remove Selected Item"
msgstr "Remover item selecionado"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Importar da Cena"
+msgstr "Importar da Cena (Ignorar Transformações)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Importar da Cena"
+msgstr "Importar da Cena (Aplicar Transformações)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7198,7 +7227,7 @@ msgstr "Inverter Portais"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Room Generate Points"
-msgstr "Quarto Gerar Pontos"
+msgstr "Room Gerar Pontos"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Generate Points"
@@ -7209,14 +7238,12 @@ msgid "Flip Portal"
msgstr "Inverter Portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Limpar Transformação"
+msgstr "Oclusor Definir Transformação"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Criar Nó"
+msgstr "Centrar Nó"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7352,12 +7379,12 @@ msgid "Move Down"
msgstr "Mover para baixo"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "Próximo Script"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr "Script anterior"
+msgid "Previous Script"
+msgstr "Script Anterior"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7718,14 +7745,12 @@ msgid "Skeleton2D"
msgstr "Esqueleto2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
msgstr "Pôr Ossos em Pose de Descanso"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Sobrescrever"
+msgstr "Sobrescrever Pose de Descanso"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7752,73 +7777,66 @@ msgid "Perspective"
msgstr "Perspetiva"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Topo"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspetiva"
+msgstr "Perspetiva Topo"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Fundo"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspetiva"
+msgstr "Perspetiva Fundo"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Esquerda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "Perspetiva"
+msgid "Left Perspective"
+msgstr "Perspetiva Esquerda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Direita"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Perspetiva Direita"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Frente"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspetiva"
+msgstr "Perspetiva Frente"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Ortogonal"
+msgstr "Ortogonal Traseira"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspetiva"
+msgstr "Perspetiva Traseira"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [auto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portais ativos]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
-msgstr "Transformação abortada."
+msgstr "Transformação Abortada."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "X-Axis Transform."
@@ -7921,7 +7939,7 @@ msgstr "Vista de topo."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View."
-msgstr "Vista de fundo."
+msgstr "Vista de Fundo."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left View."
@@ -8072,7 +8090,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Convert Rooms"
-msgstr "Converter Quartos"
+msgstr "Converter Rooms"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -8095,7 +8113,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Nodes to Floor"
-msgstr "Ajustar Nós ao Fundo"
+msgstr "Ajustar Nós ao Chão"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
@@ -8111,7 +8129,7 @@ msgstr "Usar Ajuste"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Converts rooms for portal culling."
-msgstr ""
+msgstr "Converte rooms para culling de portal."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -8138,6 +8156,26 @@ msgid "Right View"
msgstr "Vista Direita"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Down"
+msgstr "Vista Órbita Baixo"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Left"
+msgstr "Vista Órbita Esquerda"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Right"
+msgstr "Vista Órbita Direita"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View Up"
+msgstr "Vista de Órbita Cima"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr "Vista Órbita 180"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Alternar Vista Perspetiva/Ortogonal"
@@ -8168,7 +8206,7 @@ msgstr "Ajustar Objetos ao Chão"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Dialog..."
-msgstr "Diálogo de transformação..."
+msgstr "Diálogo de Transformação..."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "1 Viewport"
@@ -8211,9 +8249,8 @@ msgid "View Portal Culling"
msgstr "Ver Culling do Portal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Ver Culling do Portal"
+msgstr "Ver Culling da Oclusão"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8270,7 +8307,7 @@ msgstr "Escala (prop.):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Type"
-msgstr "Tipo de transformação"
+msgstr "Tipo de Transformação"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pre"
@@ -8281,9 +8318,8 @@ msgid "Post"
msgstr "Pós"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Projeto sem nome"
+msgstr "Gizmo sem nome"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -8731,12 +8767,18 @@ msgid ""
"closing this window.\n"
"Close anyway?"
msgstr ""
+"O separador de Importação de Itens tem alguns itens selecionados. A seleção "
+"será perdida ao fechar esta janela.\n"
+"Fechar na mesma?"
#: 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 ""
+"Selecione um tipo de tema da lista para editar os seus itens.\n"
+"Pode adicionar um tipo personalizado ou importar um tipo com os seus itens "
+"de outro tema."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All Color Items"
@@ -8767,6 +8809,8 @@ msgid ""
"This theme type is empty.\n"
"Add more items to it manually or by importing from another theme."
msgstr ""
+"Este tipo de tema está vazio.\n"
+"Adicione-lhe mais itens manualmente ou importando-os de outro tema."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Color Item"
@@ -8927,6 +8971,7 @@ msgstr "Mostrar Predefinição"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Show default type items alongside items that have been overridden."
msgstr ""
+"Mostrar itens do tipo predefinido ao lado de itens que foram sobrepostos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Override All"
@@ -8934,7 +8979,7 @@ msgstr "Sobrepor Tudo"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Override all default type items."
-msgstr ""
+msgstr "Sobrepõe todos os itens de tipo predefinido."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme:"
@@ -8965,6 +9010,8 @@ msgid ""
"Toggle the control picker, allowing to visually select control types for "
"edit."
msgstr ""
+"Alternar o selecionador de controlo, permitindo escolher o tipo de controlo "
+"para editar."
#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
@@ -8984,7 +9031,7 @@ msgstr "Item Desativado"
#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
-msgstr "Verificar item"
+msgstr "Marcar item"
#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
@@ -9053,10 +9100,11 @@ msgstr "Tem,Muitas,Opções"
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid path, the PackedScene resource was probably moved or removed."
msgstr ""
+"Caminho inválido, o recurso PackedScene foi provavelmente movido ou removido."
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid PackedScene resource, must have a Control node at its root."
-msgstr ""
+msgstr "Recurso PackedScene inválido, tem de ter um nó Control na sua raíz."
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid file, not a PackedScene resource."
@@ -9064,7 +9112,7 @@ msgstr "Ficheiro inválido, não é um recurso PackedScene."
#: editor/plugins/theme_editor_preview.cpp
msgid "Reload the scene to reflect its most actual state."
-msgstr ""
+msgstr "Recarregar a cena para refletir o seu estado atual."
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -10157,7 +10205,7 @@ msgstr "Consulta uniforme de textura 2D com triplanar."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Transform function."
-msgstr "Função Transformação."
+msgstr "Função transformação."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
@@ -10207,11 +10255,11 @@ msgstr "Multiplica vetor por transformação."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Transform constant."
-msgstr "Constante Transformação."
+msgstr "Constante transformação."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Transform uniform."
-msgstr "Uniforme Transformação."
+msgstr "Uniforme transformação."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Vector function."
@@ -11009,7 +11057,7 @@ msgstr "Remover tudo"
#: editor/project_manager.cpp
msgid "Also delete project contents (no undo!)"
-msgstr ""
+msgstr "Também apaga conteúdos do projeto (definitivo!)"
#: editor/project_manager.cpp
msgid "Can't run project"
@@ -11568,7 +11616,7 @@ msgstr "Reassociar Localização (Selecionar novo Progenitor):"
#: editor/reparent_dialog.cpp
msgid "Keep Global Transform"
-msgstr "Manter transformação global"
+msgstr "Manter Transformação Global"
#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
msgid "Reparent"
@@ -11691,12 +11739,15 @@ msgstr "Apagar nó \"%s\"?"
msgid ""
"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
+"Para guardar o ramo como cena é necessário ter uma cena aberta no editor."
#: editor/scene_tree_dock.cpp
msgid ""
"Saving the branch as a scene requires selecting only one node, but you have "
"selected %d nodes."
msgstr ""
+"Para guardar o ramo como cena é necessário selecionar apenas um nó, mas "
+"estão selecionados %d nós."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11705,6 +11756,10 @@ msgid ""
"FileSystem dock context menu\n"
"or create an inherited scene using Scene > New Inherited Scene... instead."
msgstr ""
+"Incapaz de guardar o ramo do nó raiz como uma cena instanciada.\n"
+"Para criar uma cópia editável da cena atual, duplique-a usando o menu de "
+"contexto da doca FileSystem\n"
+"ou crie uma cena herdada usando Cena > Nova Cena Herdada..."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11712,6 +11767,9 @@ msgid ""
"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 ""
+"Incapaz de guardar o ramo de uma cena já instanciada.\n"
+"Para criar a variação de uma cena, pode fazer uma cena herdada baseada na "
+"cena instanciada usando Cena > Nova Cena Herdada..."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -11908,7 +11966,7 @@ msgstr "Local"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance? (No Undo!)"
-msgstr "Limpar herança? (Sem retrocesso!)"
+msgstr "Limpar herança? (Definitivo!)"
#: editor/scene_tree_editor.cpp
msgid "Toggle Visible"
@@ -12119,6 +12177,8 @@ msgid ""
"Warning: Having the script name be the same as a built-in type is usually "
"not desired."
msgstr ""
+"Aviso: Não é habitualmente desejável que o nome do script seja o mesmo do "
+"que o de um tipo incorporado."
#: editor/script_create_dialog.cpp
msgid "Class Name:"
@@ -12370,21 +12430,19 @@ msgstr "Mudar comprimento da forma raio"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Room Point Position"
-msgstr "Definir Posição do Ponto do Quarto"
+msgstr "Definir Posição do Ponto do Room"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Portal Point Position"
msgstr "Definir Posição do Ponto do Portal"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Mudar Raio da Forma Cilindro"
+msgstr "Definir Raio da Esfera do Oclusor"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Definir curva na posição"
+msgstr "Definir Posição da Esfera do Oclusor"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12669,9 +12727,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "Nome de classe não pode ser uma palavra-chave reservada"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Preencher Seleção"
+msgstr "Construir Solução"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -13230,6 +13287,8 @@ msgid ""
"Either Debug Keystore, Debug User AND Debug Password settings must be "
"configured OR none of them."
msgstr ""
+"Tanto a Keystore de Depuração, Utilizador de Depuração E Senha de Depuração "
+"têm de ser configuradas OU nenhuma delas."
#: platform/android/export/export_plugin.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
@@ -13242,11 +13301,13 @@ msgid ""
"Either Release Keystore, Release User AND Release Password settings must be "
"configured OR none of them."
msgstr ""
+"Tanto a Keystore de Lançamento, Utilizador de Lançamento E Senha de "
+"Lançamento têm de ser configuradas OU nenhuma delas."
#: platform/android/export/export_plugin.cpp
msgid "Release keystore incorrectly configured in the export preset."
msgstr ""
-"Lançamento de keystore configurado incorretamente na predefinição exportada."
+"Keystore de lançamento configurado incorretamente na predefinição exportada."
#: platform/android/export/export_plugin.cpp
msgid "A valid Android SDK path is required in Editor Settings."
@@ -13320,6 +13381,10 @@ msgid ""
"directory.\n"
"The resulting %s is unsigned."
msgstr ""
+"'apksigner' não foi encontrado.\n"
+"Verifique se o comando está disponível na diretoria Android SDK build-"
+"tools.\n"
+"O % resultante não está assinado."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -13390,6 +13455,8 @@ msgstr ""
msgid ""
"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"
@@ -13447,6 +13514,10 @@ msgid ""
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
+"Bibliotecas em falta no modelo de exportação para as arquiteturas "
+"selecionadas: %s.\n"
+"Construa um modelo com todas as bibliotecas necessárias, ou desmarque as "
+"arquiteturas em falta na predefinição de exportação."
#: platform/android/export/export_plugin.cpp
msgid "Adding files..."
@@ -13531,19 +13602,19 @@ msgstr "Identificador de pacote inválido:"
#: platform/osx/export/export.cpp
msgid "Notarization: code signing required."
-msgstr ""
+msgstr "Notarização: assinatura de código necessária."
#: platform/osx/export/export.cpp
msgid "Notarization: hardened runtime required."
-msgstr ""
+msgstr "Notarização: hardened runtime necessário."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID name not specified."
-msgstr ""
+msgstr "Notarização: nome Apple ID não especificado."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID password not specified."
-msgstr ""
+msgstr "Notarização: senha Apple ID não especificada."
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -13790,7 +13861,7 @@ msgid ""
"Change the size in children collision shapes instead."
msgstr ""
"Mudanças no tamanho do RigidBody2D (em modos carácter ou rígido) serão "
-"reescritas pelo motor de física na execução.\n"
+"sobrepostas pelo motor de física na execução.\n"
"Mude antes o tamanho das formas de colisão filhas."
#: scene/2d/remote_transform_2d.cpp
@@ -13975,6 +14046,9 @@ msgid ""
"longer has any effect.\n"
"To remove this warning, disable the GIProbe's Compress property."
msgstr ""
+"A propriedade GIProbe Compress foi descontinuada devido a bugs conhecidos e "
+"não tem qualquer efeito.\n"
+"Para remover este aviso desative a propriedade Compress de GIProbe."
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -13996,11 +14070,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Nenhuma forma está definida."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Apenas são suportadas escalas uniformes."
#: scene/3d/particles.cpp
msgid ""
@@ -14045,7 +14119,7 @@ msgid ""
"Change the size in children collision shapes instead."
msgstr ""
"Mudanças no tamanho do RigidBody (em modos carácter ou rígido) serão "
-"reescritas pelo motor de física na execução.\n"
+"sobrepostas pelo motor de física na execução.\n"
"Mude antes o tamanho das formas de colisão filhas."
#: scene/3d/physics_joint.cpp
@@ -14070,15 +14144,15 @@ msgstr "Nó A e Nó B têm de ser PhysicsBodies diferentes"
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "O RoomManager não deve ser filho ou neto de um Portal."
#: scene/3d/portal.cpp
msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "Um Room não deve ser filho ou neto de um Portal."
#: scene/3d/portal.cpp
msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "Um RoomGroup não deve ser filho ou neto de um Portal."
#: scene/3d/remote_transform.cpp
msgid ""
@@ -14090,79 +14164,95 @@ msgstr ""
#: scene/3d/room.cpp
msgid "A Room cannot have another Room as a child or grandchild."
-msgstr "Um Quarto não pode ter outro Quarto como filho ou neto."
+msgstr "Um Room não pode ter outro Room como filho ou neto."
#: scene/3d/room.cpp
msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
+msgstr "O RoomManager não deve ser colocado dentro de um Room."
#: scene/3d/room.cpp
msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
+msgstr "Um RoomGroup não deve ser colocado dentro de um Room."
#: 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 ""
+"O casco convexo do quarto contem um grande número de planos.\n"
+"Pense em simplificar os limites do quarto para melhorar o desempenho."
#: scene/3d/room_group.cpp
msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
+msgstr "O RoomManager não deve ser colocado dentro de um RoomGroup."
#: scene/3d/room_manager.cpp
msgid "The RoomList has not been assigned."
-msgstr ""
+msgstr "A RoomList não foi atribuída."
#: scene/3d/room_manager.cpp
msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
+msgstr "O nó RoomList deve ser um Spatial (ou derivado de Spatial)."
#: 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 ""
+"Limite de Profundidade do Portal está definido como Zero.\n"
+"Só vai ser renderizado o quarto onde a Câmara está."
#: scene/3d/room_manager.cpp
msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
+msgstr "Só deve existir um RoomManager na SceneTree."
#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
msgstr ""
+"Caminho do RoomList é inválido.\n"
+"Verifique se o ramo RoomList foi atribuído no RoomManager."
#: scene/3d/room_manager.cpp
msgid "RoomList contains no Rooms, aborting."
-msgstr ""
+msgstr "A RoomList não contem Rooms, a abortar."
#: scene/3d/room_manager.cpp
msgid "Misnamed nodes detected, check output log for details. Aborting."
msgstr ""
+"Nomes de nós errados detetados, verifique o log de saída para detalhes. A "
+"abortar."
#: scene/3d/room_manager.cpp
msgid "Portal link room not found, check output log for details."
msgstr ""
+"Room portal link não encontrado, verifique o log de saída para detalhes."
#: 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 ""
+"Autolink do Portal falhou, verifique o log de saída para detalhes.\n"
+"Verifique se o portal está voltado para fora do room de origem."
#: scene/3d/room_manager.cpp
msgid ""
"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
"Check output log for details."
msgstr ""
+"Sobreposição de room detetada, câmaras podem trabalhar mal na área de "
+"sobreposição.\n"
+"Verifique o log de saída para detalhes."
#: scene/3d/room_manager.cpp
msgid ""
"Error calculating room bounds.\n"
"Ensure all rooms contain geometry or manual bounds."
msgstr ""
+"Erro ao calcular limites do room.\n"
+"Garanta que todos os rooms contêm geometria ou limites manuais."
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
@@ -14174,7 +14264,7 @@ msgid ""
"running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"Mudanças no tamanho do SoftBody serão reescritas pelo motor de física na "
+"Mudanças no tamanho do SoftBody serão sobrepostas pelo motor de física na "
"execução.\n"
"Em vez disso, mude o tamanho das formas de colisão filhas."
@@ -14227,7 +14317,7 @@ msgstr "Animação não encontrada: '%s'"
#: scene/animation/animation_player.cpp
msgid "Anim Apply Reset"
-msgstr ""
+msgstr "Anim Aplicar Reinicialização"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
@@ -14335,6 +14425,9 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"As opções Tile e Tile Fit para as propriedades Axis Stretch só são efetivas "
+"na renderização GLES3.\n"
+"Como GLES2 está a ser usado atualmente, estes modos funcionarão como Stretch."
#: scene/gui/popup.cpp
msgid ""
@@ -14372,6 +14465,19 @@ msgstr ""
"Ambiente predefinido especificado em Configurações do Projeto (Rendering -> "
"Environment -> Default Environment) não pode ser carregado."
+#: 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 ""
+"Tempos de espera do Timer muito baixos (< 0.05 segundos) podem originar "
+"comportamentos muito diferentes dependendo do renderizador ou da taxa de "
+"frames física.\n"
+"Considere usar um ciclo de processo de script em vez de depender de um Timer "
+"para tempos de espera muito baixos."
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14385,12 +14491,16 @@ msgstr ""
"RenderTarget e atribua a sua textura interna a outro nó para visualizar."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
-msgstr "O tamanho do viewport tem de ser maior do que 0 para renderizar."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
+msgstr ""
+"O tamanho do Viewport tem de ser maior ou igual a 2 pixeis em ambas as "
+"dimensões para renderizar."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphere Definir Esferas"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -14421,16 +14531,20 @@ msgid ""
"Varyings which assigned in 'vertex' function may not be reassigned in "
"'fragment' or 'light'."
msgstr ""
+"Variantes atribuídas na função 'vertex' não podem ser reatribuídas em "
+"'fragment' ou 'light'."
#: servers/visual/shader_language.cpp
msgid ""
"Varyings which assigned in 'fragment' function may not be reassigned in "
"'vertex' or 'light'."
msgstr ""
+"Variantes atribuídas na função 'fragment' não podem ser reatribuídas em "
+"'vertex' ou 'light'."
#: servers/visual/shader_language.cpp
msgid "Fragment-stage varying could not been accessed in custom function!"
-msgstr ""
+msgstr "Variante fragment-stage não pode ser acedida em função personalizada!"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index 87c8792cbf..9e7d53c52e 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -122,12 +122,16 @@
# Alkoarism <Alkoarism@gmail.com>, 2021.
# リーLee <kaualee304@gmail.com>, 2021.
# William Weber Berrutti <wwberrutti@protonmail.ch>, 2021.
+# Zenvasca <zenvasca@gmail.com>, 2021.
+# Wladimir Roberto Barbosa <wladrbarbosa@gmail.com>, 2021.
+# Mário Victor Ribeiro Silva <mariovictorrs@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: 2016-05-30\n"
-"PO-Revision-Date: 2021-09-11 20:05+0000\n"
-"Last-Translator: William Weber Berrutti <wwberrutti@protonmail.ch>\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
+"Last-Translator: Mário Victor Ribeiro Silva <mariovictorrs@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -2417,6 +2421,9 @@ msgid ""
"Update Continuously is enabled, which can increase power usage. Click to "
"disable it."
msgstr ""
+"Gira quando a janela do editor é redesenhada.\n"
+"Atualização contínua está habilitada, o que pode aumentar o uso de energia. "
+"Clique para desativá-lo."
#: editor/editor_node.cpp
msgid "Spins when the editor window redraws."
@@ -2514,6 +2521,14 @@ msgstr ""
"Não se pôde salvar a cena. É provável que dependências (instâncias ou "
"herança) não foram satisfeitas."
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr "Não foi possível salvar um ou mais cenas!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Salvar Todas as Cenas"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Não é possível sobrescrever a cena que ainda está aberta!"
@@ -2649,6 +2664,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Salvar alterações em '%s' antes de fechar?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr "%s não existe! Por favor especifique um novo local para salvar."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2694,29 +2713,27 @@ msgstr "Cena atual não salva. Abrir mesmo assim?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Não pode desfazer enquanto os botões do mouse estiverem pressionados."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Nada para desfazer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Desfazer"
+msgstr "Desfazer: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Não pode refazer enquanto os botões do mouse estiverem pressionados."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Nada para refazer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Refazer"
+msgstr "Refazer: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -3004,10 +3021,6 @@ msgid "Save Scene"
msgstr "Salvar Cena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Salvar Todas as Cenas"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Converter Para..."
@@ -3359,9 +3372,8 @@ msgid "Install from file"
msgstr "Instalar do arquivo"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Select android sources file"
-msgstr "Selecione o arquivo de fontes do Android"
+msgstr "Selecione os arquivos fontes do Android"
#: editor/editor_node.cpp
msgid ""
@@ -3448,7 +3460,6 @@ msgid "Select"
msgstr "Selecionar"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Select Current"
msgstr "Selecione Atual"
@@ -3563,6 +3574,12 @@ msgid ""
"functions called by that function.\n"
"Use this to find individual functions to optimize."
msgstr ""
+"Inclusivo: inclui o tempo de outras funções chamadas por esta função.\n"
+"Use isso para detectar restrições.\n"
+"\n"
+"Próprio: conta apenas o tempo gasto na função em si, não em outras funções "
+"chamadas por essa função.\n"
+"Use isso para encontrar funções individuais para otimizar."
#: editor/editor_profiler.cpp
msgid "Frame #:"
@@ -3668,7 +3685,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Carregamento Rápido"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -3770,9 +3787,8 @@ msgid "Uninstall these templates."
msgstr "Desinstalar esses modelos."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "There are no mirrors available."
-msgstr "Não existe o arquivo '%s'."
+msgstr "Não há espelhos disponíveis."
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3788,23 +3804,20 @@ msgid "Error requesting URL:"
msgstr "Erro ao solicitar URL:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Connecting to the mirror..."
-msgstr "Conectando..."
+msgstr "Conectando ao espelho..."
#: editor/export_template_manager.cpp
msgid "Can't resolve the requested address."
msgstr "Não é possível resolver o endereço solicitado."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't connect to the mirror."
-msgstr "Não foi possível conectar ao host:"
+msgstr "Não foi possível conectar ao espelho."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "No response from the mirror."
-msgstr "Sem resposta do host:"
+msgstr "Sem resposta do espelho."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -3957,9 +3970,8 @@ msgstr ""
"As exportações de modelos estão instaladas e prontas para serem usadas."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Open Folder"
-msgstr "Abrir um arquivo"
+msgstr "Abrir Pasta"
#: editor/export_template_manager.cpp
msgid "Open the folder containing installed templates for the current version."
@@ -3975,14 +3987,12 @@ msgid "Uninstall templates for the current version."
msgstr "Valor inicial para o contador"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download from:"
-msgstr "Erro ao baixar"
+msgstr "Baixar de:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Open in Web Browser"
-msgstr "Rodar no Navegador"
+msgstr "Abrir no Navegador"
#: editor/export_template_manager.cpp
#, fuzzy
@@ -4008,7 +4018,6 @@ msgstr ""
"desenvolvimento."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install from File"
msgstr "Instalar a Partir do Arquivo"
@@ -4028,14 +4037,12 @@ msgid "Cancel the download of the templates."
msgstr "Não se pôde abrir zip dos modelos de exportação."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Other Installed Versions:"
-msgstr "Versões Instaladas:"
+msgstr "Outras Versões Instaladas:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall Template"
-msgstr "Desinstalar"
+msgstr "Desinstalar Template"
#: editor/export_template_manager.cpp
msgid "Select Template File"
@@ -4199,25 +4206,24 @@ msgid "Collapse All"
msgstr "Recolher Tudo"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Sort files"
-msgstr "Pesquisar arquivos"
+msgstr "Ordenar arquivos"
#: editor/filesystem_dock.cpp
msgid "Sort by Name (Ascending)"
-msgstr ""
+msgstr "Ordenar por Nome (Ascendente)"
#: editor/filesystem_dock.cpp
msgid "Sort by Name (Descending)"
-msgstr ""
+msgstr "Ordenar por Nome (Descendente)"
#: editor/filesystem_dock.cpp
msgid "Sort by Type (Ascending)"
-msgstr ""
+msgstr "Ordenar por Tipo (Ascendente)"
#: editor/filesystem_dock.cpp
msgid "Sort by Type (Descending)"
-msgstr ""
+msgstr "Ordenar por Tipo (Descendente)"
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -4516,6 +4522,18 @@ msgid "Clear Default for '%s'"
msgstr "Limpar Padrão para '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimportar"
+
+#: 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 "Importar como:"
@@ -4524,10 +4542,6 @@ msgid "Preset"
msgstr "Predefinição"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimportar"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Salvar cenas, reimportar e reiniciar"
@@ -4548,14 +4562,12 @@ msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Copy Properties"
-msgstr "Propriedades"
+msgstr "Copiar Propriedades"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Paste Properties"
-msgstr "Propriedades"
+msgstr "Colar Propriedades"
#: editor/inspector_dock.cpp
msgid "Make Sub-Resources Unique"
@@ -4611,9 +4623,8 @@ msgid "History of recently edited objects."
msgstr "Histórico dos objetos editados recentemente."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Open documentation for this object."
-msgstr "Abrir Documentação"
+msgstr "Abrir documentação para esse objeto."
#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
msgid "Open Documentation"
@@ -4871,9 +4882,8 @@ msgid "Blend:"
msgstr "Misturar:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Parameter Changed:"
-msgstr "Parâmetro Modificado"
+msgstr "Parâmetro Modificado:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -5611,7 +5621,7 @@ msgstr "Pesquisar modelos, projetos e demonstrações"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Search assets (excluding templates, projects, and demos)"
-msgstr ""
+msgstr "Pesquisar recursos (excluindo modelos, projetos e demonstrações)"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -6015,9 +6025,8 @@ msgid "Drag: Rotate selected node around pivot."
msgstr "Remover nó ou trilha selecionada."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Alt+Drag: Move selected node."
-msgstr "Alt+Arrastar: Mover"
+msgstr "Alt+Arrastar: Mover nó selecionado."
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -6026,15 +6035,14 @@ msgstr "Remover nó ou trilha selecionada."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Mostrar uma lista de todos os objetos na posição clicada\n"
-"(mesmo como Alt + botão direito do mouse no Modo de seleção)."
+"Alt+BDM: Mostra uma lista de todos os nodes na posição clicada, incluindo "
+"os bloqueados."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "RMB: Add node at position clicked."
-msgstr ""
+msgstr "BDM: Adiciona node à posição clicada."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6272,14 +6280,12 @@ msgid "Clear Pose"
msgstr "Limpar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Add Node Here"
-msgstr "Adicionar Nó"
+msgstr "Adicionar Nó Aqui"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Instance Scene Here"
-msgstr "Instanciar Cena(s)"
+msgstr "Instanciar Cena Aqui"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
@@ -6295,49 +6301,43 @@ msgstr "Deslocar Visão"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom to 3.125%"
-msgstr ""
+msgstr "Zoom para 3.125%"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom to 6.25%"
-msgstr ""
+msgstr "Zoom para 6.25%"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom to 12.5%"
-msgstr ""
+msgstr "Zoom para 12.5%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 25%"
-msgstr "Reduzir"
+msgstr "Zoom de 25%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 50%"
-msgstr "Reduzir"
+msgstr "Zoom de 50%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 100%"
-msgstr "Reduzir"
+msgstr "Zoom de 100%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 200%"
-msgstr "Reduzir"
+msgstr "Zoom de 200%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 400%"
-msgstr "Reduzir"
+msgstr "Zoom de 400%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 800%"
-msgstr "Reduzir"
+msgstr "Zoom de 800%"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom to 1600%"
-msgstr ""
+msgstr "Zoom para 1600%"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -6696,6 +6696,9 @@ msgid ""
"This is similar to single collision shape, but can result in a simpler "
"geometry in some cases, at the cost of accuracy."
msgstr ""
+"Cria uma forma de colisão convexa simplificada.\n"
+"É semelhante à forma de colisão única, mas pode resultar em uma geometria "
+"mais simples em alguns casos, com menos precisão."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
@@ -7387,9 +7390,8 @@ msgid "Occluder Set Transform"
msgstr "Limpar Transformação"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Criar Nó"
+msgstr "Centralizar Nó"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7525,11 +7527,11 @@ msgid "Move Down"
msgstr "Mover para Baixo"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "Próximo Script"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr "Script anterior"
#: editor/plugins/script_editor_plugin.cpp
@@ -7952,7 +7954,7 @@ msgstr "Ortogonal"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspectiva"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7962,6 +7964,11 @@ msgstr "Ortogonal"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspectiva"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Ortogonal"
@@ -8017,19 +8024,17 @@ msgid "None"
msgstr "Nenhum"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rotate"
-msgstr "Status:"
+msgstr "Rotacionar"
#. TRANSLATORS: This refers to the movement that changes the position of an object.
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translate"
-msgstr "Translação:"
+msgstr "Translação"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale"
-msgstr "Scale"
+msgstr "Escala"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
@@ -8065,38 +8070,32 @@ msgid "Size:"
msgstr "Tamanho:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Objects Drawn:"
-msgstr "Objetos Desenhados"
+msgstr "Objetos Desenhados:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes:"
-msgstr "Alterações de Material"
+msgstr "Alterações de Material:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes:"
-msgstr "Alterações de Shader"
+msgstr "Alterações de Shader:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes:"
-msgstr "Alterações de Superfície"
+msgstr "Alterações de Superfície:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Draw Calls:"
-msgstr "Chamadas de Desenho"
+msgstr "Chamadas de Desenho:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices:"
-msgstr "Vértices"
+msgstr "Vértices:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "FPS: %d (%s ms)"
-msgstr ""
+msgstr "FPS: %d (%s ms)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
@@ -8132,7 +8131,7 @@ msgstr "Alinhar Rotação com a Vista"
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
-msgstr "Sem pai onde instanciar um filho."
+msgstr "Sem pai para instanciar um filho."
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
@@ -8231,13 +8230,12 @@ msgid "Freelook Slow Modifier"
msgstr "Modificador de velocidade lenta da Visão Livre"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Camera Preview"
-msgstr "Alterar Tamanho da Câmera"
+msgstr "Alternar pré-visualização da câmera"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
-msgstr "Ver Rotação Bloqueada"
+msgstr "Rotação de Vista Bloqueada"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -8274,7 +8272,7 @@ msgstr ""
"Clique para alternar entre estados de visibilidade.\n"
"\n"
"Olhos abertos: Gizmo está visível.\n"
-"Olhos fechados: Gizmo não está visível.\n"
+"Olhos fechados: Gizmo está escondido.\n"
"Olhos semi-abertos: Gizmo está visível através de superficies opacas (\"raio-"
"x\")."
@@ -8324,6 +8322,27 @@ msgid "Right View"
msgstr "Visão Direita"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Visão Frontal"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Alternar Visão Perspectiva/Ortogonal"
@@ -8884,21 +8903,23 @@ msgstr "Selecione um item de configuração primeiro!"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible stylebox items."
-msgstr ""
+msgstr "Selecionar todos os itens visíveis da caixa de estilo."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible stylebox items and their data."
-msgstr ""
+msgstr "Selecionar todos os itens visíveis da caixa de estilo e seus dados."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible stylebox items."
-msgstr ""
+msgstr "Deselecionar todos os itens visíveis da caixa de estilo."
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
"Caution: Adding icon data may considerably increase the size of your Theme "
"resource."
msgstr ""
+"Atenção: Adicionar dados de ícone pode aumentar consideravelmente o tamanho "
+"do recurso do Tema."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -8922,7 +8943,7 @@ msgstr "Selecionar Pontos"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all Theme items with item data."
-msgstr ""
+msgstr "Selecionar todos os itens do Tema com dados."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -8931,7 +8952,7 @@ msgstr "Selecionar tudo"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all Theme items."
-msgstr ""
+msgstr "Desselecionar todos os itens do Tema."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -8944,6 +8965,9 @@ msgid ""
"closing this window.\n"
"Close anyway?"
msgstr ""
+"A guia de Importação de itens possui alguns itens selecionados. A seleção "
+"será perdida ao fechar esta janela.\n"
+"Fechar mesmo assim?"
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
@@ -8986,6 +9010,8 @@ msgid ""
"This theme type is empty.\n"
"Add more items to it manually or by importing from another theme."
msgstr ""
+"Este tipo de tema está vazio.\n"
+"Adicione mais itens manualmente ou importe de outro tema."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -13209,9 +13235,8 @@ msgid "Add Preload Node"
msgstr "Adicionar Nó de Pré-carregamento"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Add Node(s)"
-msgstr "Adicionar Nó"
+msgstr "Adicionar Nó(s)"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
@@ -13478,17 +13503,15 @@ msgstr "Selecione um dispositivo da lista"
#: platform/android/export/export_plugin.cpp
msgid "Running on %s"
-msgstr ""
+msgstr "Executando em %s"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Exporting APK..."
-msgstr "Exportando tudo"
+msgstr "Exportando APK..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Uninstalling..."
-msgstr "Desinstalar"
+msgstr "Desinstalando..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13501,14 +13524,12 @@ msgid "Could not install to device: %s"
msgstr "Não foi possível instanciar cena!"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Running on device..."
-msgstr "Rodando Script Personalizado..."
+msgstr "Executando no dispositivo..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not execute on device."
-msgstr "Não foi possível criar a pasta."
+msgstr "Não foi possível executar no dispositivo."
#: platform/android/export/export_plugin.cpp
msgid "Unable to find the 'apksigner' tool."
@@ -13630,11 +13651,8 @@ msgid "Signing debug %s..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Signing release %s..."
-msgstr ""
-"Escaneando arquivos,\n"
-"Por favor aguarde..."
+msgstr "Assinando lançamento %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13646,9 +13664,8 @@ msgid "'apksigner' returned with error #%d"
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Verifying %s..."
-msgstr "Adicionando %s..."
+msgstr "Verificando %s..."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' verification of %s failed."
@@ -13736,9 +13753,8 @@ msgstr ""
"diretório do projeto gradle por saídas."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Package not found: %s"
-msgstr "Animação não encontrada: '%s'"
+msgstr "Pacote não encontrado: '%s'"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13746,11 +13762,12 @@ msgid "Creating APK..."
msgstr "Criando contornos..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Could not find template APK to export:\n"
"%s"
-msgstr "Não foi possível abrir o modelo para exportar:"
+msgstr ""
+"Não foi possível encontrar o modelo de APK para exportar:\n"
+"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13761,9 +13778,8 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Adding files..."
-msgstr "Adicionando %s..."
+msgstr "Adicionando arquivos..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -14692,6 +14708,14 @@ msgstr ""
"O Ambiente Padrão especificado nas Configurações de Projeto (Rendering -> "
"Environment -> Default Environment) não pôde ser carregado."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14705,7 +14729,10 @@ msgstr ""
"render e atribua sua textura interna a algum nó para exibir."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
"O tamanho da Viewport deve ser maior do que 0 para renderizar qualquer coisa."
@@ -16394,9 +16421,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "Não se pôde salva imagem de atlas:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "Não se pôde salvar textura convertida:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "Origem de tradução inválida!"
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index ecf041058c..12102e12dc 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -18,6 +18,7 @@
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-03-20 04:18+0000\n"
"Last-Translator: R3ktGamerRO <bluegamermc1@gmail.com>\n"
@@ -2434,6 +2435,15 @@ msgstr ""
"Nu am putut salva scena. Probabil dependenţe (instanţe sau moşteniri) nu au "
"putut fi satisfăcute."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Salvați toate scenele"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Nu pot salva peste scena care este înca deschisă!"
@@ -2568,6 +2578,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Salvează schimbările la ’%s’ înainte de ieșire?"
#: 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."
@@ -2918,10 +2932,6 @@ msgid "Save Scene"
msgstr "Salvează Scena"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Salvați toate scenele"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Convertește În..."
@@ -4405,6 +4415,18 @@ msgid "Clear Default for '%s'"
msgstr "Curăță setarea Implicită pentru '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimportă"
+
+#: 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 "Importă Ca:"
@@ -4413,10 +4435,6 @@ msgid "Preset"
msgstr "Presetare"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimportă"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7489,12 +7507,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Extinde Script"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Fila anterioară"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7930,14 +7950,19 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
+#, fuzzy
+msgid "Left Perspective"
+msgstr "Mod Rotație"
#: 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 ""
@@ -8291,6 +8316,26 @@ 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 ""
@@ -14452,6 +14497,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14461,7 +14514,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index c402e80ff1..df2c3c1cdf 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -70,7 +70,7 @@
# Ivan Kuzmenko <kuzmenko.ivan2002@yandex.com>, 2020.
# Super Pracion <superpracion2@gmail.com>, 2020.
# PizzArt <7o7goo7o7@gmail.com>, 2020.
-# TheGracekale <mrsmailbot.lg@gmail.com>, 2020.
+# TheGracekale <mrsmailbot.lg@gmail.com>, 2020, 2021.
# Климентий Титов <titoffklim@cclc.tech>, 2020.
# Richard Urban <redasuio1@gmail.com>, 2020.
# Nikita <Kulacnikita@ya.ru>, 2020.
@@ -98,11 +98,13 @@
# enderlorde <madel.laboratories@gmail.com>, 2021.
# Олег Довгер <oleg.a.dovger@gmail.com>, 2021.
# Anna Malinovskaia <tacitcoast@gmail.com>, 2021.
+# mrvladus <mrvladus@yandex.ru>, 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-08-14 19:04+0000\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
"Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -112,7 +114,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2495,6 +2497,14 @@ 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 "Ðевозможно перезапиÑать Ñцену, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ñе еще открыта!"
@@ -2632,6 +2642,11 @@ msgid "Save changes to '%s' before closing?"
msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² «%s» перед закрытием?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr ""
+"%s больше не ÑущеÑтвует! ПожалуйÑта укажите новое меÑто Ð´Ð»Ñ ÑохранениÑ."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2677,29 +2692,27 @@ msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена не Ñохранена. Открыть в лÑ
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Ðевозможно отменить пока кнопки мыши нажаты."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Ðечего отменить."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Отменить"
+msgstr "Отменить: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Ðевозможно повторить пока кнопки мыши нажаты."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Ðечего повторить."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Повторить"
+msgstr "Повторить: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2773,7 +2786,7 @@ msgstr "Открыть закрытую Ñцену"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
-"Ðе удаётÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ плагин: «%s». Ошибка ÑинтакÑичеÑкого разбора "
+"Ðе удаётÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ плагин: «%s». Ошибка ÑинтакÑичеÑкого разбора файла "
"конфигурации."
#: editor/editor_node.cpp
@@ -2983,10 +2996,6 @@ msgid "Save Scene"
msgstr "Сохранить Ñцену"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Сохранить вÑе Ñцены"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Конвертировать в..."
@@ -3387,9 +3396,8 @@ msgid "Merge With Existing"
msgstr "Объединить Ñ ÑущеÑтвующей"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Изменить положение"
+msgstr "Применить Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3650,7 +3658,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "БыÑтро загрузить"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4469,6 +4477,23 @@ msgid "Clear Default for '%s'"
msgstr "ОчиÑтить по умолчанию Ð´Ð»Ñ Â«%s»"
#: 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 ""
+"У Ð²Ð°Ñ ÐµÑть изменениÑ, которые ещё не были применены. Ðажмите "
+"«Переимпортировать», чтобы применить изменениÑ, внеÑённые в параметры "
+"импорта.\n"
+"ЕÑли выбрать другой реÑÑƒÑ€Ñ Ð² панели Â«Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема», не нажав Ñначала "
+"«Переимпортировать», то Ñделанные в панели «Импорт» Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны."
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "Импортировать как:"
@@ -4477,10 +4502,6 @@ msgid "Preset"
msgstr "ПреÑет"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Переимпортировать"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Сохранить Ñцены, переимпортировать и перезапуÑтить"
@@ -5754,15 +5775,13 @@ msgstr "Передвинуть CanvasItem «%s» в (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Заблокировать выбранное"
+msgstr "Заблокирован"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Группа"
+msgstr "Сгруппирован"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6703,14 +6722,12 @@ msgid "Remove Selected Item"
msgstr "Удалить выбранный Ñлемент"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Импортировать из Ñцены"
+msgstr "Импортировать из Ñцены (Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Импортировать из Ñцены"
+msgstr "Импортировать из Ñцены (применÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7301,14 +7318,12 @@ msgid "Flip Portal"
msgstr "Перевернуть портал"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "ОчиÑтить преобразование"
+msgstr "Преобразование набора окклюдеров"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Создать узел"
+msgstr "Центрировать узел"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7444,11 +7459,11 @@ msgid "Move Down"
msgstr "ПеремеÑтить вниз"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "Следующий Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr "Предыдущий Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
@@ -7814,14 +7829,12 @@ msgid "Skeleton2D"
msgstr "2D Ñкелет"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "УÑтановить коÑти в позу покоÑ"
+msgstr "СброÑить к позе покоÑ"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "ПерезапиÑать ÑущеÑтвующую Ñцену"
+msgstr "ПерезапиÑать позу покоÑ"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7848,69 +7861,62 @@ msgid "Perspective"
msgstr "ПерÑпективный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Ортогональный"
+msgstr "Верхний ортогональный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "ПерÑпективный"
+msgstr "Верхний перÑпективный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Ортогональный"
+msgstr "Ðижний ортогональный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "ПерÑпективный"
+msgstr "Ðижний перÑпективный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Ортогональный"
+msgstr "Левый ортогональный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "ПерÑпективный"
+msgid "Left Perspective"
+msgstr "Левый перÑпективный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Ортогональный"
+msgstr "Правый ортогональный"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Правый перÑпективный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Ортогональный"
+msgstr "Передний ортогональный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "ПерÑпективный"
+msgstr "Передний перÑпективный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Ортогональный"
+msgstr "Задний ортогональный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "ПерÑпективный"
+msgstr "Задний перÑпективный"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+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 ""
+msgstr " [порталы активны]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8101,7 +8107,7 @@ msgstr "ПроÑлушиватель звука"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Enable Doppler"
-msgstr "Включить Ñффект Doppler"
+msgstr "Включить Ñффект Доплера"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Cinematic Preview"
@@ -8235,6 +8241,26 @@ 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 "Вид Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ñ‹ 180"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Переключение перÑпективного/ортогонального вида"
@@ -8308,9 +8334,8 @@ msgid "View Portal Culling"
msgstr "Отображать portal culling"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Отображать portal culling"
+msgstr "ПроÑмотр Occlusion Culling"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8378,9 +8403,8 @@ msgid "Post"
msgstr "ПоÑле"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "БезымÑнный проект"
+msgstr "БезымÑнный гизмо"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -11644,19 +11668,19 @@ msgstr "ОÑтавить оригинал"
#: editor/rename_dialog.cpp
msgid "PascalCase to snake_case"
-msgstr "ВерблюжийРегиÑтр в змеиный_региÑтр"
+msgstr "PascalCase в snake_case"
#: editor/rename_dialog.cpp
msgid "snake_case to PascalCase"
-msgstr "змеиный_региÑтр в ВерблюжийРегиÑтр"
+msgstr "snake_case в PascalCase"
#: editor/rename_dialog.cpp
msgid "Case"
-msgstr "Случай"
+msgstr "РегиÑтр"
#: editor/rename_dialog.cpp
msgid "To Lowercase"
-msgstr "К нижнему региÑтру"
+msgstr "Ð’ нижний региÑтр"
#: editor/rename_dialog.cpp
msgid "To Uppercase"
@@ -12060,7 +12084,7 @@ msgstr "(ИÑточник)"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr "Конфигурации узла, предупреждение:"
+msgstr "Предупреждение о конфигурации узла:"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -12512,14 +12536,12 @@ msgid "Set Portal Point Position"
msgstr "Задать положение точки портала"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Изменить Ñ€Ð°Ð´Ð¸ÑƒÑ Ñ†Ð¸Ð»Ð¸Ð½Ð´Ñ€Ð°"
+msgstr "Задать Ñ€Ð°Ð´Ð¸ÑƒÑ Ñферы окклюдера"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "УÑтановить позицию входа кривой"
+msgstr "Задать положение Ñферы окклюдера"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12804,9 +12826,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "Ð˜Ð¼Ñ ÐºÐ»Ð°ÑÑа не может быть зарезервированным ключевым Ñловом"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Заполнить выбранное"
+msgstr "Собрать решение"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -14140,11 +14161,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Форма не задана."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "ПоддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ маÑштабирование uniform."
#: scene/3d/particles.cpp
msgid ""
@@ -14497,6 +14518,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Опции Tile и Tile Fit Ð´Ð»Ñ ÑвойÑтв Axis Stretch работают только при "
+"иÑпользовании бÑкенда рендеринга GLES3.\n"
+"Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¸ÑпользуетÑÑ Ð±Ñкенд GLES2, поÑтому Ñти режимы будут "
+"работать как Stretch."
#: scene/gui/popup.cpp
msgid ""
@@ -14535,6 +14560,19 @@ msgstr ""
"Окружение по умолчанию, указанное в ÐаÑтройках проекта (Rendering -> "
"Environment -> Default Environment) не может быть загружено."
+#: 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 ""
+"Очень низкое Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñ‚Ð°Ð¹Ð¼ÐµÑ€Ð° (< 0,05 Ñекунды) может привеÑти к "
+"значительно разному поведению, в завиÑимоÑти от чаÑтоты кадров рендеринга "
+"или физики.\n"
+"РаÑÑмотрите возможноÑть иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ†Ð¸ÐºÐ»Ð° обработки в Ñкрипте вмеÑто "
+"таймера Ñ Ð¾Ñ‡ÐµÐ½ÑŒ низким временем ожиданиÑ."
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14549,12 +14587,16 @@ msgstr ""
"либо узлу Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
-msgstr "Размер окна проÑмотра должен быть больше 0 Ð´Ð»Ñ Ñ€ÐµÐ½Ð´ÐµÑ€Ð¸Ð½Ð³Ð°."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
+msgstr ""
+"Размер облаÑти проÑмотра должен быть больше или равен 2 пикÑелÑм в обоих "
+"измерениÑÑ…, чтобы отобразить что-либо."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphere Задать Ñферы"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -16244,9 +16286,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "Ðевозможно Ñохранить изображение атлаÑа:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "Ðевозможно Ñохранить конвертированную текÑтуру:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "Ðеверный иÑточник перевода!"
diff --git a/editor/translations/si.po b/editor/translations/si.po
index 7ff9aee6fb..c19727905b 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -7,6 +7,7 @@
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-05 09:20+0000\n"
"Last-Translator: thushariii <thusharipahalage@gmail.com>\n"
@@ -2349,6 +2350,14 @@ msgid ""
"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 ""
@@ -2465,6 +2474,10 @@ 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."
@@ -2785,10 +2798,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4193,15 +4202,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7112,11 +7129,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7527,7 +7544,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7535,6 +7552,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7872,6 +7893,26 @@ 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 ""
@@ -13787,6 +13828,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13796,7 +13845,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index 2395e28105..93e2cf40ab 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -15,6 +15,7 @@
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-07-07 15:34+0000\n"
"Last-Translator: Eliška Fichnová <eliska@fichna.sk>\n"
@@ -2413,6 +2414,15 @@ msgstr ""
"Nedá sa uložiÅ¥ scéna. Pravdepodobne (inÅ¡tancie alebo dediÄstvo) nemôžu byÅ¥ "
"spokojné."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Subprocess sa nedá spustiť!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Uložiť Všetky Scény"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Scéna sa nedá predpísaÅ¥ keÄ je stále otvorená!"
@@ -2549,6 +2559,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Chcete uložiť zmeny do '%s' pred zatvorením?"
#: 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."
@@ -2894,10 +2908,6 @@ msgid "Save Scene"
msgstr "Uložiť Scénu"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Uložiť Všetky Scény"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Konvertovať Do..."
@@ -4398,6 +4408,18 @@ msgid "Clear Default for '%s'"
msgstr "VyÄistiÅ¥ Å tandardné pre '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Reimportovať"
+
+#: 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 "Importovať Ako:"
@@ -4406,10 +4428,6 @@ msgid "Preset"
msgstr "Preset"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Reimportovať"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Uložiť Scény, Re-Importovať, a Reštartovať"
@@ -7398,12 +7416,13 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "Next script"
+msgid "Next Script"
msgstr "Popis:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Minulá karta"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7831,14 +7850,19 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
+#, fuzzy
+msgid "Left Perspective"
+msgstr "Vľavo Dole"
#: 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 ""
@@ -8192,6 +8216,26 @@ 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 ""
@@ -14361,6 +14405,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14370,7 +14422,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index d505ee913c..dc381b7d0a 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -16,6 +16,7 @@
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"
@@ -2513,6 +2514,16 @@ msgstr ""
"Ni mogoÄe shraniti scene. Najverjetneje odvisnosti (primeri ali dedovanja) "
"ne morejo biti izpolnjene."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save All Scenes"
+msgstr "Shrani vse Prizore"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr ""
@@ -2645,6 +2656,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Shranim spremembe v '%s' pred zapiranjem?"
#: 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."
@@ -2999,11 +3014,6 @@ msgid "Save Scene"
msgstr "Shrani Prizor"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Save All Scenes"
-msgstr "Shrani vse Prizore"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Pretvori V..."
@@ -4541,6 +4551,18 @@ msgid "Clear Default for '%s'"
msgstr "PoÄisti privzeto za '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Ponovno Uvozi"
+
+#: 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 "Uvozi Kot:"
@@ -4550,10 +4572,6 @@ msgid "Preset"
msgstr "Prednastavitev..."
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Ponovno Uvozi"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7661,12 +7679,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Zaženi Skripto"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Prejšnji zavihek"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -8105,14 +8125,19 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
+#, fuzzy
+msgid "Left Perspective"
+msgstr "NaÄin Vrtenja"
#: 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 ""
@@ -8464,6 +8489,26 @@ 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 ""
@@ -14735,6 +14780,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14744,7 +14797,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/sq.po b/editor/translations/sq.po
index 2cc63728a3..2cf0327ec4 100644
--- a/editor/translations/sq.po
+++ b/editor/translations/sq.po
@@ -7,6 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2019-03-24 17:38+0000\n"
"Last-Translator: Enrik Qose <enrikqose@gmail.com>\n"
"Language-Team: Albanian <https://hosted.weblate.org/projects/godot-engine/"
@@ -2448,6 +2449,15 @@ msgstr ""
"Nuk mund ta ruante skenën. Me shumë mundësi varësitë (instancat ose "
"trashgimit) nuk mund të plotësohej."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Ruaj të Gjitha Skenat"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Nuk mund të mbishkruash skenën që është akoma e hapur!"
@@ -2585,6 +2595,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Ruaji ndryshimet në '%s' para se ta mbyllësh?"
#: 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."
@@ -2940,10 +2954,6 @@ msgid "Save Scene"
msgstr "Ruaj Skenën"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Ruaj të Gjitha Skenat"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Konverto në..."
@@ -4464,6 +4474,18 @@ msgid "Clear Default for '%s'"
msgstr "Pastro të Parazgjedhurat për '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Ri-importo"
+
+#: 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 "Importo Si:"
@@ -4473,10 +4495,6 @@ msgid "Preset"
msgstr "Ngarko Gabimet"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Ri-importo"
-
-#: editor/import_dock.cpp
#, fuzzy
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Ruaj skenat, ri-importo dhe rifillo"
@@ -7422,12 +7440,14 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
-msgstr ""
+#, fuzzy
+msgid "Next Script"
+msgstr "Shkrim i Ri"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Tabi i mëparshëm"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7848,7 +7868,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7856,6 +7876,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8202,6 +8226,26 @@ 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 ""
@@ -14266,6 +14310,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14275,7 +14327,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index bb56bcbe29..53a3dc6761 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -9,6 +9,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2020-05-22 21:01+0000\n"
"Last-Translator: Младен Габић <cupakabra@protonmail.com>\n"
"Language-Team: Serbian (cyrillic) <https://hosted.weblate.org/projects/godot-"
@@ -2626,6 +2627,16 @@ msgid ""
"be satisfied."
msgstr "Ðе могу Ñачувати Ñцену. Вероватно завиÑноÑти ниÑу задовољене."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Ðе могу покренути подпроцеÑ!"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save All Scenes"
+msgstr "Сачувај Ñве Ñцене"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "Can't overwrite scene that is still open!"
@@ -2762,6 +2773,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Сачувај промене '%s' пре излаÑка?"
#: 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."
@@ -3117,11 +3132,6 @@ msgid "Save Scene"
msgstr "Сачувај Ñцену"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Save All Scenes"
-msgstr "Сачувај Ñве Ñцене"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Конвертуј у..."
@@ -4748,6 +4758,18 @@ msgid "Clear Default for '%s'"
msgstr "Обриши уобичајено за „%s“"
#: 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 "Увези као:"
@@ -4757,10 +4779,6 @@ msgid "Preset"
msgstr "ПоÑтавке"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Поново увези"
-
-#: editor/import_dock.cpp
#, fuzzy
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Упамти Сцену, Опет Увези, и РеÑтартуј"
@@ -8054,11 +8072,13 @@ msgid "Move Down"
msgstr "Помери доле"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Следећа Ñкриптица"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Претходна Ñкриптица"
#: editor/plugins/script_editor_plugin.cpp
@@ -8525,7 +8545,7 @@ msgstr "Ортогонална пројекција"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "ПерÑпективна пројекција"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8535,6 +8555,11 @@ msgstr "Ортогонална пројекција"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "ПерÑпективна пројекција"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Ортогонална пројекција"
@@ -8904,6 +8929,27 @@ 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Поглед иÑпред"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Switch Perspective/Orthogonal View"
msgstr "Пребаци у перÑпективни/ортогонални поглед"
@@ -16151,6 +16197,14 @@ 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/viewport.cpp
#, fuzzy
msgid ""
@@ -16166,7 +16220,9 @@ msgstr ""
#: scene/main/viewport.cpp
#, fuzzy
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "Величина Viewport-а мора бити већа од 0 да би Ñе нешто иÑцртало."
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index eee30eb977..668ee7d7de 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -9,6 +9,7 @@
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: 2019-07-29 19:21+0000\n"
"Last-Translator: LT <lakizvezdas@gmail.com>\n"
@@ -2361,6 +2362,14 @@ msgid ""
"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 ""
@@ -2477,6 +2486,10 @@ 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."
@@ -2798,10 +2811,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4212,15 +4221,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7157,12 +7174,13 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "Otiđi Na Prethodni Korak"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7579,7 +7597,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7587,6 +7605,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7926,6 +7948,26 @@ 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 ""
@@ -13902,6 +13944,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13911,7 +13961,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index 3b0b8a97dd..f22e9500e1 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -3,7 +3,7 @@
# Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).
# This file is distributed under the same license as the Godot source code.
# bergmarklund <davemcgroin@gmail.com>, 2017, 2018.
-# Christoffer Sundbom <christoffer_karlsson@live.se>, 2017.
+# Christoffer Sundbom <christoffer_karlsson@live.se>, 2017, 2021.
# Jakob Sinclair <sinclair.jakob@mailbox.org>, 2018.
# . <grenoscar@gmail.com>, 2018, 2020.
# Kristoffer Grundström <kristoffer.grundstrom1983@gmail.com>, 2018.
@@ -26,9 +26,10 @@
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-10 21:40+0000\n"
-"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
+"Last-Translator: Christoffer Sundbom <christoffer_karlsson@live.se>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/godot-engine/"
"godot/sv/>\n"
"Language: sv\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.8-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2145,9 +2146,8 @@ msgid "Methods"
msgstr "Metoder"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Egenskaper"
+msgstr "Tema Egenskaper"
#: editor/editor_help.cpp
msgid "Enumerations"
@@ -2454,6 +2454,16 @@ msgstr ""
"Kunde inte spara scenen. Förmodligen kunde inte beroenden (instanser) "
"uppfyllas."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Kunde inte starta underprocess!"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save All Scenes"
+msgstr "Spara alla Scener"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Kan inte skriva över en scen som fortfarande är öppen!"
@@ -2595,6 +2605,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Spara ändringar i '%s' innan stängning?"
#: 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."
@@ -2953,11 +2967,6 @@ msgid "Save Scene"
msgstr "Spara Scen"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Save All Scenes"
-msgstr "Spara alla Scener"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Konvertera Till..."
@@ -4453,6 +4462,18 @@ msgid "Clear Default for '%s'"
msgstr "Rensa Standarden för '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Importera om"
+
+#: 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 "Importera Som:"
@@ -4462,10 +4483,6 @@ msgid "Preset"
msgstr "Återställ Zoom"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Importera om"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7490,11 +7507,13 @@ msgid "Move Down"
msgstr "Flytta Ner"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Nästa Skript"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Föregående Skript"
#: editor/plugins/script_editor_plugin.cpp
@@ -7931,7 +7950,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Perspektiv"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7939,6 +7958,11 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Right Perspective"
+msgstr "Perspektiv"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8295,6 +8319,27 @@ msgid "Right View"
msgstr "Vy från höger"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Vy framifrån"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr ""
@@ -14486,6 +14531,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14495,7 +14548,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
index f0a34987a2..d9114adc60 100644
--- a/editor/translations/ta.po
+++ b/editor/translations/ta.po
@@ -9,6 +9,7 @@
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"
@@ -2352,6 +2353,14 @@ msgid ""
"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 ""
@@ -2468,6 +2477,10 @@ 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."
@@ -2788,10 +2801,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4199,15 +4208,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7114,11 +7131,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7529,7 +7546,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7537,6 +7554,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7874,6 +7895,26 @@ 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 ""
@@ -13793,6 +13834,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13802,7 +13851,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/te.po b/editor/translations/te.po
index a77af85920..39cda33625 100644
--- a/editor/translations/te.po
+++ b/editor/translations/te.po
@@ -6,6 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
+"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"PO-Revision-Date: 2020-09-15 07:17+0000\n"
"Last-Translator: suresh p <suresh9247@gmail.com>\n"
"Language-Team: Telugu <https://hosted.weblate.org/projects/godot-engine/"
@@ -2321,6 +2322,14 @@ msgid ""
"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 ""
@@ -2437,6 +2446,10 @@ 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."
@@ -2756,10 +2769,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4160,15 +4169,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7049,11 +7066,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7463,7 +7480,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7471,6 +7488,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7808,6 +7829,26 @@ 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 ""
@@ -13666,6 +13707,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13675,7 +13724,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/th.po b/editor/translations/th.po
index 3042188001..ef1bb3b2bb 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -14,6 +14,7 @@
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-06-07 23:43+0000\n"
"Last-Translator: Atirut Wattanamongkol <artjang301@gmail.com>\n"
@@ -2405,6 +2406,15 @@ msgid ""
"be satisfied."
msgstr "บันทึà¸à¸‰à¸²à¸à¹„ม่ได้ อาจจะมีà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¹„ม่สมบูรณ์ (อินสà¹à¸•นซ์หรือà¸à¸²à¸£à¸ªà¸·à¸šà¸—อด)"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "บันทึภTexture ที่à¹à¸›à¸¥à¸‡à¹à¸¥à¹‰à¸§à¹„ม่ได้:"
+
+#: 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 "ไม่สามารถเขียนทับฉาà¸à¸—ี่à¸à¸³à¸¥à¸±à¸‡à¹€à¸›à¸´à¸”อยู่ได้!"
@@ -2535,6 +2545,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "บันทึภ'%s' à¸à¹ˆà¸­à¸™à¸›à¸´à¸”โปรà¹à¸à¸£à¸¡à¸«à¸£à¸·à¸­à¹„ม่?"
#: 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."
@@ -2873,10 +2887,6 @@ msgid "Save Scene"
msgstr "บันทึà¸à¸‰à¸²à¸"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "บันทึà¸à¸‰à¸²à¸à¸—ั้งหมด"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™..."
@@ -4360,6 +4370,18 @@ msgid "Clear Default for '%s'"
msgstr "ลบค่าเริ่มต้นของ '%s'"
#: 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 "นำเข้าเป็น:"
@@ -4368,10 +4390,6 @@ msgid "Preset"
msgstr "พรีเซ็ต (ค่าตั้งล่วงหน้า)"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "นำเข้าใหม่"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "บันทึà¸à¸‰à¸²à¸, นำเข้าà¹à¸¥à¸°à¹€à¸£à¸´à¹ˆà¸¡à¸•้นใหม่"
@@ -7326,11 +7344,13 @@ msgid "Move Down"
msgstr "เลื่อนลง"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "สคริปต์ถัดไป"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "สคริปต์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
#: editor/plugins/script_editor_plugin.cpp
@@ -7752,7 +7772,7 @@ msgstr "ขนาน"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "เพอร์สเปà¸à¸—ีฟ"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7762,6 +7782,11 @@ msgstr "ขนาน"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "เพอร์สเปà¸à¸—ีฟ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "ขนาน"
@@ -8123,6 +8148,27 @@ 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
+#, fuzzy
+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 "สลับมุมมองเพอร์สเปà¸à¸—ีฟ/ออโธโà¸à¸™à¸­à¸¥"
@@ -14324,6 +14370,14 @@ msgstr ""
"ไม่สามารถโหลด Environment ปริยายที่à¸à¸³à¸«à¸™à¸”ในตัวเลือà¸à¹‚ปรเจà¸à¸•์ได้ (Rendering -> "
"Environment -> Default Environment)"
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14336,7 +14390,10 @@ msgstr ""
"texture ของโหนดอื่น"
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "ขนาดวิวพอร์ตจะต้องมาà¸à¸à¸§à¹ˆà¸² 0 เพื่อที่จะเรนเดอร์ได้"
#: scene/resources/occluder_shape.cpp
@@ -15959,9 +16016,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Couldn't save atlas image:"
#~ msgstr "บันทึภAtlas ไม่ได้:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "บันทึภTexture ที่à¹à¸›à¸¥à¸‡à¹à¸¥à¹‰à¸§à¹„ม่ได้:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "ต้นฉบับà¸à¸²à¸£à¹à¸›à¸¥à¹„ม่ถูà¸à¸•้อง!"
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index e5a65500d1..5f8a365768 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -62,12 +62,14 @@
# Cannur Daşkıran <canndask@gmail.com>, 2021.
# kahveciderin <kahveciderin@gmail.com>, 2021.
# Lucifer25x <umudyt2006@gmail.com>, 2021.
+# Kadir Berk YaÄŸar <ykadirberk2@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-09-15 00:46+0000\n"
-"Last-Translator: Lucifer25x <umudyt2006@gmail.com>\n"
+"PO-Revision-Date: 2021-10-01 03:16+0000\n"
+"Last-Translator: Kadir Berk YaÄŸar <ykadirberk2@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
"Language: tr\n"
@@ -423,15 +425,13 @@ msgstr "Animasyon Ekle"
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "node '%s'"
-msgstr "'%s' açılamıyor."
+msgstr "'%s' düğümü"
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "animation"
-msgstr "Animasyon"
+msgstr "animasyon"
#: editor/animation_track_editor.cpp
msgid "AnimationPlayer can't animate itself, only other players."
@@ -440,9 +440,8 @@ msgstr ""
#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "property '%s'"
-msgstr "'%s' özelliği mevcut değil."
+msgstr "'%s' özelliği"
#: editor/animation_track_editor.cpp
msgid "Anim Create & Insert"
@@ -652,7 +651,6 @@ msgid "Go to Previous Step"
msgstr "Önceki Adıma Git"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Apply Reset"
msgstr "Sıfırla"
@@ -673,9 +671,8 @@ msgid "Use Bezier Curves"
msgstr "Bezier EÄŸrileri Kullan"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Create RESET Track(s)"
-msgstr "İzleri Yapıştır"
+msgstr "RESET İz(ler)i oluşturun"
#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
@@ -999,7 +996,6 @@ msgid "Edit..."
msgstr "Düzenle..."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go to Method"
msgstr "Yönteme Git"
@@ -1121,18 +1117,16 @@ msgid "Owners Of:"
msgstr "Şunların sahipleri:"
#: editor/dependency_editor.cpp
-#, fuzzy
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 ""
-"Seçilen dosyalar kaldırılsın mı? (geri alınamaz)\n"
-"Kaldırılan dosyaları sistemin geri dönüşüm kutusunda bulabilir ve geri "
-"yükleyebilirsiniz."
+"Seçilen dosyalar projeden kaldırılsın mı? (Geri alınamaz.)\n"
+"Sahip olduğunuz dosya sistemine bağlı olarak bu dosyalar sonsuza dek "
+"silinebilir ya da geri dönüşüm kutusuna gönderilebilir."
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -1140,10 +1134,11 @@ msgid ""
"Depending on your filesystem configuration, the files will either be moved "
"to the system trash or deleted permanently."
msgstr ""
-"Diğer kimi dosyaların çalışması için kaldırdığınız dosyalar gerekli "
-"görülmekte.\n"
-"Yine de kaldırılsın mı? (geri alınamaz)\n"
-"Kaldırılan dosyaların sistemin geri dönüşüm kutusunda bulabilirsiniz."
+"Kaldırmaya çalıştığınız dosyalar projenin bazı parçalarının çalışması için "
+"gerekli görülmekte.\n"
+"Yine de kaldırılsın mı? (Geri alınamaz.)\n"
+"Sisteminizin dosya sistemine bağlı olarak silmeye çalıştığınız dosyalar "
+"kalıcı olarak silinebilir ya da geri dönüşüm kutusuna gönderilebilir."
#: editor/dependency_editor.cpp
msgid "Cannot remove:"
@@ -1215,7 +1210,7 @@ msgstr "Godot topluluğundan teşekkürler!"
#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
msgid "Click to copy."
-msgstr "Kopyalamak için tıklayın."
+msgstr "Kopyalamak için tıkla."
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
@@ -1314,12 +1309,10 @@ msgid "Licenses"
msgstr "Lisanslar"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Error opening asset file for \"%s\" (not in ZIP format)."
-msgstr "Paket dosyası açılırken hata (ZIP formatında değil)."
+msgstr "\"%s\" açılırken hata ile karşılaşıldı (dosya ZIP formatında değil)."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "%s (already exists)"
msgstr "%s (Zaten Var)"
@@ -1337,9 +1330,8 @@ msgid "Uncompressing Assets"
msgstr "Varlıklar Çıkartılıyor"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "The following files failed extraction from asset \"%s\":"
-msgstr "Aşağıdaki dosyaların, çıkından ayıklanma işlemi başarısız oldu:"
+msgstr "Aşağıdaki dosyaların \"%s\" kaynağından ayıklanmasında hata oluştu:"
#: editor/editor_asset_installer.cpp
#, fuzzy
@@ -1347,9 +1339,8 @@ msgid "(and %s more files)"
msgstr "Ve %s kadar dosya daha."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Asset \"%s\" installed successfully!"
-msgstr "Paket Başarı ile Kuruldu!"
+msgstr "\"%s\" Başarı ile kuruldu!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -1594,14 +1585,12 @@ msgid "Can't add autoload:"
msgstr "Otomatik yükleme eklenemiyor:"
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "%s is an invalid path. File does not exist."
-msgstr "Dosya yok."
+msgstr "%s geçerli bir dizin değil. Dosya yok."
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr "%s geçersiz bir yol. Kaynak yolunda değil (res://)."
+msgstr "%s geçersiz bir dizin. Kaynak dizinde değil (res://)."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
@@ -1625,9 +1614,8 @@ msgid "Name"
msgstr "İsim"
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "Global Variable"
-msgstr "DeÄŸiÅŸken"
+msgstr "Global DeÄŸiÅŸken"
#: editor/editor_data.cpp
msgid "Paste Params"
@@ -1810,7 +1798,6 @@ msgstr ""
"düzenlemeye izin verir."
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Provides built-in access to the Asset Library."
msgstr "Varlık Kitaplığına yerleşik erişim sağlar."
@@ -1827,33 +1814,29 @@ msgstr ""
"Scene dock'ta seçilen düğümün sinyalleri ve gruplarıyla çalışmaya izin verir."
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Allows to browse the local file system via a dedicated dock."
msgstr ""
"Özel bir dock aracılığıyla yerel dosya sistemine göz atılmasına izin verir."
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid ""
"Allows to configure import settings for individual assets. Requires the "
"FileSystem dock to function."
msgstr ""
-"Bireysel varlıklar için içe aktarma ayarlarını yapılandırmaya izin verir. "
+"Tekil paketler için içe aktarma ayarlarını yapılandırmaya izin verir. "
"Çalışması için FileSystem fonksiyonunu gerektirir."
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "(current)"
-msgstr "(Åžuanki)"
+msgstr "(Åžu anki)"
#: editor/editor_feature_profile.cpp
msgid "(none)"
-msgstr ""
+msgstr "(hiç)"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr "Seçili olan '%s' profili kaldırılsın mı? (Geri alınamayan.)"
+msgstr "Seçili olan '%s' profili kaldırılsın mı? (Geri alınamaz.)"
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1884,14 +1867,12 @@ msgid "Enable Contextual Editor"
msgstr "İçeriksel Düzenleyiciyi Etkinleştir"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Class Properties:"
-msgstr "Özellikler:"
+msgstr "Sınıf Özellikleri:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Main Features:"
-msgstr "Özellikler"
+msgstr "Ana Özellikler:"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1914,7 +1895,6 @@ msgid "Error saving profile to path: '%s'."
msgstr "Profil '%s' yoluna kaydedilirken hata oluÅŸtu."
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Reset to Default"
msgstr "Varsayılanlara dön"
@@ -1923,14 +1903,12 @@ msgid "Current Profile:"
msgstr "Åžu Anki Profil:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Create Profile"
-msgstr "Profili Sil"
+msgstr "Profil OluÅŸtur"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Remove Profile"
-msgstr "Döşemeyi Kaldır"
+msgstr "Profili Kaldır"
#: editor/editor_feature_profile.cpp
msgid "Available Profiles:"
@@ -1950,14 +1928,12 @@ msgid "Export"
msgstr "Dışa Aktar"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Configure Selected Profile:"
-msgstr "Åžu Anki Profil:"
+msgstr "Seçilen Profili Yapılandır:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Extra Options:"
-msgstr "Doku Seçenekleri"
+msgstr "İlave Seçenekler:"
#: editor/editor_feature_profile.cpp
msgid "Create or import a profile to edit available classes and properties."
@@ -1990,7 +1966,6 @@ msgid "Select Current Folder"
msgstr "Geçerli Klasörü Seç"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "File exists, overwrite?"
msgstr "Dosya var. Üzerine Yazılsın mı?"
@@ -2385,7 +2360,6 @@ msgid "New Window"
msgstr "Yeni Pencere"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Spins when the editor window redraws.\n"
"Update Continuously is enabled, which can increase power usage. Click to "
@@ -2489,6 +2463,15 @@ msgstr ""
"Sahne kaydedilemedi. Anlaşılan bağımlılıklar (örnekler ve kalıtımlar) "
"karşılanamadı."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Dönüştürülmüş doku kaydedilemedi:"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Tüm Sahneleri Kaydet"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Açık olan sahnenin üzerine yazılamıyor!"
@@ -2625,6 +2608,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Kapatmadan önce değişklikler buraya '%s' kaydedilsin mi?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
@@ -2670,29 +2657,27 @@ msgstr "Var olan sahne kaydedilmedi. Yine de açılsın mı?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Fare düğmelerine basıldığında geri alınamaz."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Geri alınacak bir şey yok."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Geri al"
+msgstr "Geri al: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Fare düğmelerine basıldığında yeniden yapılamaz."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Yeniden yapılacak bir şey yok."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Yeniden yap"
+msgstr "İleri al: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2772,7 +2757,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Unable to find script field for addon plugin at: '%s'."
-msgstr "Eklenti için betik alanı şu konumda bulunamıyor: '%s'."
+msgstr "Eklentideki betik alanı bulunamıyor: '%s'."
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s'."
@@ -2976,10 +2961,6 @@ msgid "Save Scene"
msgstr "Sahne Kaydet"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Tüm Sahneleri Kaydet"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Şuna Dönüştür..."
@@ -3047,9 +3028,8 @@ msgid "Orphan Resource Explorer..."
msgstr "Orphan Kaynak Göstericisi..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Reload Current Project"
-msgstr "Projeyi Yeniden Adlandır"
+msgstr "Projeyi Tekrar Yükle"
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -3210,9 +3190,8 @@ msgid "Help"
msgstr "Yardım"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Online Documentation"
-msgstr "Klavuzu Aç"
+msgstr "Çevrimiçi Dokümanlar"
#: editor/editor_node.cpp
msgid "Questions & Answers"
@@ -3223,9 +3202,8 @@ msgid "Report a Bug"
msgstr "Hata Bildir"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Suggest a Feature"
-msgstr "Bir DeÄŸer Ata"
+msgstr "Yeni bir özellik öner"
#: editor/editor_node.cpp
msgid "Send Docs Feedback"
@@ -3236,9 +3214,8 @@ msgid "Community"
msgstr "Topluluk"
#: editor/editor_node.cpp
-#, fuzzy
msgid "About Godot"
-msgstr "Hakkında"
+msgstr "Godot Hakkında"
#: editor/editor_node.cpp
msgid "Support Godot Development"
@@ -3331,14 +3308,12 @@ msgid "Manage Templates"
msgstr "Şablonlarını Yönet"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Install from file"
msgstr "Dosyadan Kur"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Select android sources file"
-msgstr "Bir Kaynak Örüntü Seçin:"
+msgstr "Bir android kaynak dosyası seçin"
#: editor/editor_node.cpp
msgid ""
@@ -3463,9 +3438,8 @@ msgid "No sub-resources found."
msgstr "Alt kaynağı bulunamadı."
#: editor/editor_path.cpp
-#, fuzzy
msgid "Open a list of sub-resources."
-msgstr "Alt kaynağı bulunamadı."
+msgstr "Kaynağın alt dizinini liste halinde aç."
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
@@ -3492,14 +3466,12 @@ msgid "Update"
msgstr "Güncelle"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Version"
-msgstr "Sürüm:"
+msgstr "Sürüm"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Author"
-msgstr "Yazarlar"
+msgstr "Yaratıcı"
#: editor/editor_plugin_settings.cpp
#: editor/plugins/version_control_editor_plugin.cpp
@@ -3512,14 +3484,12 @@ msgid "Measure:"
msgstr "Ölçüm:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Frame Time (ms)"
-msgstr "Kare Zamanı (sn)"
+msgstr "Kare Zamanı (milisaniye)"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Average Time (ms)"
-msgstr "Ortalama Zaman (sn)"
+msgstr "Ortalama Zaman (milisaniye)"
#: editor/editor_profiler.cpp
msgid "Frame %"
@@ -3546,6 +3516,12 @@ msgid ""
"functions called by that function.\n"
"Use this to find individual functions to optimize."
msgstr ""
+"Dahili: Bu işlev tarafından çağrılan diğer işlevlerden gelen zamanı içerir.\n"
+"Darboğazları tespit etmek için bunu kullanın.\n"
+"\n"
+"Self: Sadece fonksiyonun kendisinde geçirilen zamanı sayın, o fonksiyon "
+"tarafından çağrılan diğer fonksiyonlarda değil.\n"
+"Eniyileştirilecek edilecek tekil işlevleri bulmak için bunu kullanın."
#: editor/editor_profiler.cpp
msgid "Frame #:"
@@ -3651,7 +3627,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Hızlı yükleme"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -3672,9 +3648,8 @@ msgid "Paste"
msgstr "Yapıştır"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Convert to %s"
-msgstr "Şuna Dönüştür %s"
+msgstr "%s 'e dönüştür"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "New %s"
@@ -3723,11 +3698,10 @@ msgid "Did you forget the '_run' method?"
msgstr "'_run()' metodunu unuttunuz mu?"
#: editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
-"Tam sayıya yuvarlamak için Ctrl tuşuna basılı tutun. Hassas değişiklikler "
-"için Shift tuşuna basılı tutun."
+"Tam sayıya yuvarlamak için %s tuşuna basılı tutun. Hassas değişiklikler için "
+"Shift tuşuna basılı tutun."
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -3759,9 +3733,8 @@ msgid "There are no mirrors available."
msgstr "'%s' dosyası bulunamadı."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Retrieving the mirror list..."
-msgstr "Aynalar alınıyor, lütfen bekleyin..."
+msgstr "Alternatif kaynak listesi alınıyor..."
#: editor/export_template_manager.cpp
msgid "Starting the download..."
@@ -3772,24 +3745,20 @@ msgid "Error requesting URL:"
msgstr "URL isteği hatası:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Connecting to the mirror..."
-msgstr "Aynaya bağlanılıyor..."
+msgstr "Alternatif kaynağa bağlanılıyor..."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't resolve the requested address."
-msgstr "Ana makine adı çözümlenemedi:"
+msgstr "Talep edilen adres çözümlenemedi."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't connect to the mirror."
-msgstr "Ana makineye bağlanılamadı:"
+msgstr "Ana makineye bağlanılamadı."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "No response from the mirror."
-msgstr "Ana makineden cevap yok:"
+msgstr "Ana makineden cevap yok."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -3797,17 +3766,14 @@ msgid "Request failed."
msgstr "İstek başarısız."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Request ended up in a redirect loop."
-msgstr "İstem Başarısız, çok fazla yönlendirme"
+msgstr "İstek sonsuz bir döngüye dönüştü."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Request failed:"
-msgstr "İstek başarısız."
+msgstr "Talep başarısız oldu:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download complete; extracting templates..."
msgstr "İndirme tamamlandı; şablonlar ayıklanıyor..."
@@ -3828,14 +3794,14 @@ msgid "Error getting the list of mirrors."
msgstr "Kaynaklar listesini alırken hata."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
-msgstr "JSON sunucuları listesini alırken hata. Lütfen bu hatayı bildirin!"
+msgstr ""
+"Sağlanan kaynak listesiyle JSON dosyasını çözümlemeye çalışırken hata ile "
+"karşılaşıldı. Lütfen bu hatayı bildirin!"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Best available mirror"
-msgstr "Mevcut en iyi ayna"
+msgstr "Mevcut en iyi alternatif kaynak"
#: editor/export_template_manager.cpp
msgid ""
@@ -3888,24 +3854,20 @@ msgid "SSL Handshake Error"
msgstr "SSL El Sıkışma Hatası"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't open the export templates file."
-msgstr "Dışa aktarım kalıplarının zipi açılamadı."
+msgstr "Dışa aktarım kalıpları dosyası açılamadı."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Invalid version.txt format inside the export templates file: %s."
-msgstr "Şablonların içinde geçersiz version.txt formatı: %s."
+msgstr "Dışa aktarım şablonlarının içinde geçersiz version.txt formatı: %s."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "No version.txt found inside the export templates file."
-msgstr "Şablonların içinde version.txt bulunamadı."
+msgstr "Dışa aktarım şablonlarının içinde version.txt bulunamadı."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error creating path for extracting templates:"
-msgstr "Şablonlar için yol oluşturulurken hata:"
+msgstr "Ayıklama şablonları için dizin oluşturulurken hata ile karşılaşıldı:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -3916,9 +3878,8 @@ msgid "Importing:"
msgstr "İçe Aktarım:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Remove templates for the version '%s'?"
-msgstr "Şablon sürümünü kaldır '%s'?"
+msgstr "'%s' sürümü için şablonlar kaldırılsın mı?"
#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
@@ -3933,7 +3894,6 @@ msgid "Current Version:"
msgstr "Şu Anki Sürüm:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Export templates are missing. Download them or install from a file."
msgstr ""
"Dışa aktarma şablonları eksik. Bunları indirin veya bir dosyadan yükleyin."
@@ -3943,9 +3903,8 @@ msgid "Export templates are installed and ready to be used."
msgstr "Dışa aktarma şablonları yüklenir ve kullanıma hazırdır."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Open Folder"
-msgstr "Dosya Aç"
+msgstr "Klasör Aç"
#: editor/export_template_manager.cpp
msgid "Open the folder containing installed templates for the current version."
@@ -3956,24 +3915,20 @@ msgid "Uninstall"
msgstr "Kaldır"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall templates for the current version."
-msgstr "Sayaç için başlangıç değeri"
+msgstr "Güncel sürüm için şablonları kaldır."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download from:"
-msgstr "İndirme Hatası"
+msgstr "Åžuradan indir:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Open in Web Browser"
-msgstr "Tarayıcıda Çalıştır"
+msgstr "İnternet Tarayıcıda Çalıştır"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Copy Mirror URL"
-msgstr "Hatayı Kopyala"
+msgstr "Alternatif kaynak URL'sini kopyala"
#: editor/export_template_manager.cpp
msgid "Download and Install"
@@ -3993,14 +3948,12 @@ msgstr ""
"deÄŸildir."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install from File"
msgstr "Dosyadan Kur"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install templates from a local file."
-msgstr "Şablonları Zip Dosyasından İçeri Aktar"
+msgstr "Şablonları yerel bir dosyadan kur."
#: editor/export_template_manager.cpp editor/find_in_files.cpp
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
@@ -4008,19 +3961,16 @@ msgid "Cancel"
msgstr "Vazgeç"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Cancel the download of the templates."
-msgstr "Dışa aktarım kalıplarının zipi açılamadı."
+msgstr "Åžablon indirme iÅŸlemini iptal et."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Other Installed Versions:"
msgstr "Yüklü Sürümler:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall Template"
-msgstr "Kaldır"
+msgstr "Şablonu Kaldır"
#: editor/export_template_manager.cpp
msgid "Select Template File"
@@ -4204,14 +4154,12 @@ msgid "Sort by Type (Descending)"
msgstr "Türe Göre Sırala (Artan)"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Sort by Last Modified"
-msgstr "Son DeÄŸiÅŸiklik"
+msgstr "Son Değişiklik Tarihi'ne göre sırala"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Sort by First Modified"
-msgstr "Son DeÄŸiÅŸiklik"
+msgstr "İlk Değişiklik Tarihi'ne göre sırala"
#: editor/filesystem_dock.cpp
msgid "Duplicate..."
@@ -4502,6 +4450,18 @@ msgid "Clear Default for '%s'"
msgstr "'%s' İçin Varsayılanı Temizle"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Yeniden İçe Aktar"
+
+#: 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 "Şu Şekilde İçe Aktar:"
@@ -4510,10 +4470,6 @@ msgid "Preset"
msgstr "Ön ayar"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Yeniden İçe Aktar"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Sahneleri kaydet, tekrar içe aktar ve baştan başlat"
@@ -4535,14 +4491,12 @@ msgid "Failed to load resource."
msgstr "Kaynak yükleme başarısız oldu."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Copy Properties"
-msgstr "Özellikler"
+msgstr "Özellikleri Kopyala"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Paste Properties"
-msgstr "Özellikler"
+msgstr "Özellikleri Yapıştır"
#: editor/inspector_dock.cpp
msgid "Make Sub-Resources Unique"
@@ -4567,9 +4521,8 @@ msgid "Save As..."
msgstr "Farklı Kaydet..."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Extra resource options."
-msgstr "Kaynak yolunda deÄŸil."
+msgstr "İlave kaynak ayarları."
#: editor/inspector_dock.cpp
msgid "Edit Resource from Clipboard"
@@ -4580,9 +4533,8 @@ msgid "Copy Resource"
msgstr "Kaynağı Tıpkıla"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Make Resource Built-In"
-msgstr "Gömülü Yap"
+msgstr "Kaynağı gömülü hale getir"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -5791,15 +5743,13 @@ msgstr "CanvasItem \"%s\" öğesini (%d,%d) konumuna taşı"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Seçimi Kilitle"
+msgstr "Kilitli"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Öbek"
+msgstr "Gruplanmış"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -5903,7 +5853,6 @@ msgstr "Çapaları Değiştir"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Project Camera Override\n"
"Overrides the running project's camera with the editor viewport camera."
@@ -5918,6 +5867,9 @@ msgid ""
"No project instance running. Run the project from the editor to use this "
"feature."
msgstr ""
+"Proje Kamera Geçersiz Kılma\n"
+"Çalışan proje örneği yok. Bu özelliği kullanmak için projeyi düzenleyiciden "
+"çalıştırın."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6312,7 +6264,7 @@ msgstr "Uzaklaştır"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom to 1600%"
-msgstr ""
+msgstr "%1600'e yakınlaştır"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -6557,9 +6509,8 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Tek dışbükey çarpışma şekli oluşturulamadı."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Create Simplified Convex Shape"
-msgstr "Tekil Dışbükey Şekil Oluştur"
+msgstr "Basitleştirilmiş Dışbükey Şekil Oluştur"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
@@ -6594,9 +6545,8 @@ msgid "No mesh to debug."
msgstr "Hata ayıklaöma için örüntü yok."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Mesh has no UV in layer %d."
-msgstr "Model bu katmanda UV'ye sahip deÄŸil"
+msgstr "Model %d katmanında UV'ye sahip değil."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -6754,14 +6704,12 @@ msgid "Remove Selected Item"
msgstr "Seçilen Öğeyi Kaldır"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Sahneden İçe Aktar"
+msgstr "Sahneden İçe Aktar (Transformları yoksay)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Sahneden İçe Aktar"
+msgstr "Sahneden İçe Aktar (Transformları uygula)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7360,9 +7308,8 @@ msgid "Occluder Set Transform"
msgstr "Dönüşümü Temizle"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Düğüm Oluştur"
+msgstr "Node'u Ortala"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7498,11 +7445,13 @@ msgid "Move Down"
msgstr "Aşağı Taşı"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Sonraki betik"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Önceki betik"
#: editor/plugins/script_editor_plugin.cpp
@@ -7926,7 +7875,7 @@ msgstr "Dikey"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Derinlik"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7936,6 +7885,11 @@ msgstr "Dikey"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Derinlik"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Dikey"
@@ -7957,12 +7911,12 @@ msgstr "Derinlik"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [Oto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portallar aktif]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8032,9 +7986,8 @@ msgid "Yaw:"
msgstr "Sapma:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Size:"
-msgstr "Boyut: "
+msgstr "Boyut:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
@@ -8053,16 +8006,14 @@ msgid "Surface Changes:"
msgstr "Yüzey Değişiklikleri:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Draw Calls:"
-msgstr "Çizim Çağrıları"
+msgstr "Çizim Çağrıları:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Vertices:"
msgstr "Köşenoktalar:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "FPS: %d (%s ms)"
msgstr "Kare hızı: %d (%s ms)"
@@ -8199,9 +8150,8 @@ msgid "Freelook Slow Modifier"
msgstr "Serbest Bakış Hız Değiştirici"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Camera Preview"
-msgstr "Kamera Boyutunu DeÄŸiÅŸtir"
+msgstr "Kamera Görünürlüğünü Değiştir"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
@@ -8292,6 +8242,27 @@ msgid "Right View"
msgstr "Sağdan Görünüm"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Önden Görünüm"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Derinlikli / Sığ Görünüme Değiştir"
@@ -8436,9 +8407,8 @@ msgid "Post"
msgstr "Sonrası"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Adsız Proje"
+msgstr "Adsız Aygıt"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -8698,12 +8668,10 @@ msgid "Fonts"
msgstr "Yazı Tipleri"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Icons"
-msgstr "Simge"
+msgstr "Simgeler"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Styleboxes"
msgstr "StilKutusu"
@@ -8712,23 +8680,20 @@ msgid "{num} color(s)"
msgstr "{num} renk(lar)"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "No colors found."
-msgstr "Alt kaynağı bulunamadı."
+msgstr "Renk bulunamadı."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "{num} constant(s)"
-msgstr "Sabitler"
+msgstr "{num} Sabitler"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "No constants found."
-msgstr "Renk Sabiti."
+msgstr "Sabitler bulunamadı."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} font(s)"
-msgstr ""
+msgstr "{num} yazı tipi(leri)"
#: editor/plugins/theme_editor_plugin.cpp
msgid "No fonts found."
@@ -8736,16 +8701,15 @@ msgstr "Yazı tipi bulunamadı."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} icon(s)"
-msgstr ""
+msgstr "{num} simge(ler)"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "No icons found."
-msgstr "Bulunamadı!"
+msgstr "Simge bulunamadı."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} stylebox(es)"
-msgstr ""
+msgstr "{num} stil kutusu(lar)"
#: editor/plugins/theme_editor_plugin.cpp
msgid "No styleboxes found."
@@ -8753,48 +8717,43 @@ msgstr "Stil kutusu bulunamadı."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} currently selected"
-msgstr ""
+msgstr "{num} şuan seçili"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Nothing was selected for the import."
msgstr "İçe aktarma için hiçbir şey seçilmedi."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Importing Theme Items"
-msgstr "Kalıbı İçe Aktar"
+msgstr "Tema Ögeleri İçe Aktarılıyor"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Importing items {n}/{n}"
-msgstr ""
+msgstr "{n}/{n} öğeleri içe aktarılıyor"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Updating the editor"
-msgstr "Düzenleyiciden çık?"
+msgstr "Editörün güncellenmesi"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Finalizing"
msgstr "Çözümleniyor"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Filter:"
msgstr "Süzgeç:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "With Data"
-msgstr ""
+msgstr "Veri ile"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select by data type:"
msgstr "Veri türüne göre seçin:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible color items."
-msgstr "Önce bir ayar öğesi seçin!"
+msgstr "Tüm görünür renk öğelerini seçin."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible color items and their data."
@@ -8805,9 +8764,8 @@ msgid "Deselect all visible color items."
msgstr "Tüm görünür renk öğelerinin seçimini kaldırın."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible constant items."
-msgstr "Önce bir ayar öğesi seçin!"
+msgstr "Tüm görünür sabit öğeleri seçin."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible constant items and their data."
@@ -8818,9 +8776,8 @@ msgid "Deselect all visible constant items."
msgstr "Tüm görünür sabit öğelerin seçimini kaldırın."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible font items."
-msgstr "Önce bir ayar öğesi seçin!"
+msgstr "Tüm görünür yazı tipi öğelerini seçin."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items and their data."
@@ -8831,19 +8788,16 @@ msgid "Deselect all visible font items."
msgstr "Tüm görünür yazı tipi öğelerinin seçimini kaldırın."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible icon items."
-msgstr "Önce bir ayar öğesi seçin!"
+msgstr "Tüm görünür simge öğelerini seçin."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all visible icon items and their data."
-msgstr "Önce bir ayar öğesi seçin!"
+msgstr "Tüm görünür simge öğelerini ve verilerini seçin."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Deselect all visible icon items."
-msgstr "Önce bir ayar öğesi seçin!"
+msgstr "Tüm görünür simge öğelerinin seçimini kaldırın."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible stylebox items."
@@ -8878,9 +8832,8 @@ msgid "Select all Theme items."
msgstr "Şablon Dosyası Seç."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select With Data"
-msgstr "Noktaları Seç"
+msgstr "Veri ile Seç"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all Theme items with item data."
@@ -8895,9 +8848,8 @@ msgid "Deselect all Theme items."
msgstr "Tüm Tema öğelerinin seçimini kaldırın."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Import Selected"
-msgstr "Sahneyi İçe Aktar"
+msgstr "Seçileni İçe Aktar"
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
@@ -9079,7 +9031,6 @@ msgid "Override Item"
msgstr "Öğeyi Geçersiz Kıl"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Unpin this StyleBox as a main style."
msgstr "Bu Stil Kutusunun ana stil olarak sabitlemesini kaldırın."
@@ -9184,9 +9135,8 @@ msgid "Checked Radio Item"
msgstr "Seçili Radyo Ögesi"
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Named Separator"
-msgstr "İsimli Ayraç."
+msgstr "İsimli Ayraç"
#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
@@ -9238,20 +9188,19 @@ msgstr "Var,Çok,Seçenekler"
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid path, the PackedScene resource was probably moved or removed."
-msgstr ""
+msgstr "Geçersiz yol, PackedScene kaynağı muhtemelen taşındı veya kaldırıldı."
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid PackedScene resource, must have a Control node at its root."
-msgstr ""
+msgstr "Geçersiz PackedScene kaynağı, kökünde bir Kontrol düğümü olmalıdır."
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Invalid file, not a PackedScene resource."
-msgstr "Geçersiz dosya, bu bir audio bus yerleşim düzeni değil."
+msgstr "Geçersiz dosya, bu bir PackedScene kaynağı değil."
#: editor/plugins/theme_editor_preview.cpp
msgid "Reload the scene to reflect its most actual state."
-msgstr ""
+msgstr "Sahneyi en gerçek durumunu yansıtacak şekilde yeniden yükleyin."
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -10649,9 +10598,8 @@ msgid "VisualShader"
msgstr "GörselShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Edit Visual Property:"
-msgstr "Görsel Niteliği Düzenle"
+msgstr "Görsel Niteliği Düzenle:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -10777,9 +10725,8 @@ msgid "Script"
msgstr "Betik"
#: editor/project_export.cpp
-#, fuzzy
msgid "GDScript Export Mode:"
-msgstr "Betik Dışa Aktarım Biçimi:"
+msgstr "GDScript Dışa Aktarım Modu:"
#: editor/project_export.cpp
msgid "Text"
@@ -10787,21 +10734,21 @@ msgstr "Yazı"
#: editor/project_export.cpp
msgid "Compiled Bytecode (Faster Loading)"
-msgstr ""
+msgstr "Derlenmiş Bayt Kodu (Daha Hızlı Yükleme)"
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Şifreli (Açarı Aşağıda Belirtin)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
-msgstr "Geçersiz Şifreleme Anahtarı (64 karakter uzunluğunda olmalı)"
+msgstr ""
+"Geçersiz Şifreleme Anahtarı (On altılı sayı sisteminde 64 karakter "
+"uzunluğunda olmalı)"
#: editor/project_export.cpp
-#, fuzzy
msgid "GDScript Encryption Key (256-bits as hexadecimal):"
-msgstr "Betik Şifreleme Açarı (Hex olarak 256-bit):"
+msgstr "GDScript Şifreleme Anahtarı (On altılı sayı sisteminde 256-bit):"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -10873,7 +10820,6 @@ msgid "Imported Project"
msgstr "İçe Aktarılan Proje"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project name."
msgstr "Geçersiz Proje Adı."
@@ -11098,14 +11044,12 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Birden fazla projeyi çalıştırmak istediğinize emin misiniz?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove %d projects from the list?"
-msgstr "Listeden aygıt seç"
+msgstr "%d proje listeden kaldırılsın mı?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove this project from the list?"
-msgstr "Listeden aygıt seç"
+msgstr "Bu proje listeden kaldırılsın mı?"
#: editor/project_manager.cpp
msgid ""
@@ -11139,9 +11083,8 @@ msgid "Project Manager"
msgstr "Proje Yöneticisi"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Local Projects"
-msgstr "Projeler"
+msgstr "Yerel Projeler"
#: editor/project_manager.cpp
msgid "Loading, please wait..."
@@ -11152,23 +11095,20 @@ msgid "Last Modified"
msgstr "Son DeÄŸiÅŸiklik"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Edit Project"
-msgstr "Projeyi Dışa Aktar"
+msgstr "Projjeyi Düzenle"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Run Project"
-msgstr "Projeyi Yeniden Adlandır"
+msgstr "Projeyi Çalıştır"
#: editor/project_manager.cpp
msgid "Scan"
msgstr "Tara"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Scan Projects"
-msgstr "Projeler"
+msgstr "Projeleri Tara"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
@@ -11179,14 +11119,12 @@ msgid "New Project"
msgstr "Yeni Proje"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Import Project"
-msgstr "İçe Aktarılan Proje"
+msgstr "Projeyi İçe Aktar"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Remove Project"
-msgstr "Projeyi Yeniden Adlandır"
+msgstr "Projeyi Kaldır"
#: editor/project_manager.cpp
msgid "Remove Missing"
@@ -11197,9 +11135,8 @@ msgid "About"
msgstr "Hakkında"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Asset Library Projects"
-msgstr "Varlık Kütüphanesi"
+msgstr "Kaynak Kütüphanesi Projeleri"
#: editor/project_manager.cpp
msgid "Restart Now"
@@ -11211,7 +11148,7 @@ msgstr "Tümünü Kaldır"
#: editor/project_manager.cpp
msgid "Also delete project contents (no undo!)"
-msgstr ""
+msgstr "Ayrıca proje içeriğini silin (geri alma yok!)"
#: editor/project_manager.cpp
msgid "Can't run project"
@@ -11226,20 +11163,18 @@ msgstr ""
"Varlık Kütüphanesi'ndeki resmî örnek projeleri incelemek ister misin?"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Filter projects"
-msgstr "Özellikleri süz"
+msgstr "Projeleri Ayıkla"
#: editor/project_manager.cpp
-#, fuzzy
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 ""
-"Arama kutusu, projeleri adına ve son yol bileşenine göre filtreler.\n"
-"Projeleri adına ve tam yoluna göre filtrelemek için, sorgunun en az bir `/` "
-"karakteri içermesi gereklidir."
+"Arama kutusu, projeleri adına ve son dizin bileşenine göre filtreler.\n"
+"Projeleri adına ve tam dizinine göre filtrelemek için, sorgunun en az bir `/"
+"` karakteri içermesi gereklidir."
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -11247,7 +11182,7 @@ msgstr "Anahtar "
#: editor/project_settings_editor.cpp
msgid "Physical Key"
-msgstr ""
+msgstr "Fiziksel Anahtar"
#: editor/project_settings_editor.cpp
msgid "Joy Button"
@@ -11294,7 +11229,7 @@ msgstr "Aygıt"
#: editor/project_settings_editor.cpp
msgid " (Physical)"
-msgstr ""
+msgstr " (Fiziksel)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
@@ -11436,9 +11371,8 @@ msgid "Override for Feature"
msgstr "Özelliğin Üzerine Yaz"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add %d Translations"
-msgstr "Çeviri Ekle"
+msgstr "%d Çeviri Ekle"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
@@ -11898,12 +11832,16 @@ msgstr "\"%s\" düğümü silinsin mi?"
msgid ""
"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
+"Dalın sahne olarak kaydedilmesi, düzenleyicide bir sahnenin açık olmasını "
+"gerektirir."
#: editor/scene_tree_dock.cpp
msgid ""
"Saving the branch as a scene requires selecting only one node, but you have "
"selected %d nodes."
msgstr ""
+"Dalın sahne olarak kaydedilmesi yalnızca bir düğümün seçilmesini gerektirir, "
+"ancak %d düğüm seçtiniz."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11912,6 +11850,11 @@ msgid ""
"FileSystem dock context menu\n"
"or create an inherited scene using Scene > New Inherited Scene... instead."
msgstr ""
+"Kök düğüm dalı, örneklenmiş bir sahne olarak kaydedilemiyor.\n"
+"Geçerli sahnenin düzenlenebilir bir kopyasını oluşturmak için, onu "
+"FileSystem dock bağlam menüsünü kullanarak çoğaltın\n"
+"veya bunun yerine Sahne > Yeni Devralınan Sahne...'yi kullanarak devralınan "
+"bir sahne oluÅŸturun."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11919,6 +11862,10 @@ msgid ""
"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 ""
+"Halihazırda örneklenmiş bir sahnenin dalı kaydedilemez.\n"
+"Bir sahnenin varyasyonunu oluşturmak için, bunun yerine Sahne > Yeni "
+"Devralınan Sahne... seçeneğini kullanarak örneklenen sahneye dayalı olarak "
+"devralınan bir sahne oluşturabilirsiniz."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -12103,9 +12050,9 @@ msgid ""
"every time it updates.\n"
"Switch back to the Local scene tree dock to improve performance."
msgstr ""
-"Seçilirse, Uzak sahne ağacı yuvası, projenin her güncellendiğinde "
-"takılmasına neden olur.\n"
-"Performansı artırmak için Yerel sahne ağaç yuvasına geri dönün."
+"Seçilirse, Uzak sahne ağacı dok-u projenin her güncelleme anında takılmasına "
+"neden olur.\n"
+"Performansı artırmak için Yerel sahne ağacı dok-una geri dönün."
#: editor/scene_tree_dock.cpp
msgid "Local"
@@ -12324,6 +12271,7 @@ msgid ""
"Warning: Having the script name be the same as a built-in type is usually "
"not desired."
msgstr ""
+"Uyarı: Komut dosyası adının yerleşik türle aynı olması genellikle istenmez."
#: editor/script_create_dialog.cpp
msgid "Class Name:"
@@ -12395,7 +12343,7 @@ msgstr "Hatayı Kopyala"
#: editor/script_editor_debugger.cpp
msgid "Open C++ Source on GitHub"
-msgstr ""
+msgstr "GitHub'da C++ Kaynağını Açın"
#: editor/script_editor_debugger.cpp
msgid "Video RAM"
@@ -13395,7 +13343,7 @@ msgstr "Listeden aygıt seç"
#: platform/android/export/export_plugin.cpp
msgid "Running on %s"
-msgstr ""
+msgstr "%s üzerinde çalışıyor"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13413,9 +13361,8 @@ msgid "Installing to device, please wait..."
msgstr "Yükleniyor, lütfen bekleyin..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not install to device: %s"
-msgstr "Sahne Örneklenemedi!"
+msgstr "Cihaza yüklenemedi: %s"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13444,7 +13391,7 @@ msgid ""
"configured OR none of them."
msgstr ""
"Hata Ayıklama Anahtar Deposu, Hata Ayıklama Kullanıcısı VE Hata Ayıklama "
-"Şifresi konfigüre edilmelidir VEYA hiçbiri konfigüre edilmemelidir."
+"Şifresi konfigüre edilmeli VEYA hiçbiri konfigüre edilmemelidir."
#: platform/android/export/export_plugin.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
@@ -13536,17 +13483,18 @@ msgid ""
"directory.\n"
"The resulting %s is unsigned."
msgstr ""
+"'apksigner' bulunamadı.\n"
+"Lütfen komutun Android SDK build-tools dizininde bulunup bulunmadığını "
+"kontrol edin.\n"
+"Elde edilen %s imzasız."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
-msgstr ""
+msgstr "%s hata ayıklaması imzalanıyor..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Signing release %s..."
-msgstr ""
-"Dosyalar Taranıyor,\n"
-"Lütfen Bekleyiniz..."
+msgstr "%s sürümü imzalanıyor..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13555,7 +13503,7 @@ msgstr "Dışa aktarma için şablon açılamadı:"
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
-msgstr ""
+msgstr "'apksigner', #%d hatasıyla döndürüldü"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13564,7 +13512,7 @@ msgstr "Ekliyor %s..."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' verification of %s failed."
-msgstr ""
+msgstr "%s için 'apksigner' doğrulaması başarısız oldu."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13585,7 +13533,7 @@ msgstr "Geçersiz dosya adı! Android APK, * .apk uzantısını gerektirir."
#: platform/android/export/export_plugin.cpp
msgid "Unsupported export format!\n"
-msgstr ""
+msgstr "Desteklenmeyen dışa aktarma biçimi!\n"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13611,16 +13559,15 @@ msgstr ""
msgid ""
"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
-#, fuzzy
msgid "Could not export project files to gradle project\n"
-msgstr "Proje yolunda proje.godot alınamadı."
+msgstr "Proje dosyaları gradle projesine aktarılamadı\n"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not write expansion package file!"
-msgstr "Dosya yazılamadı:"
+msgstr "Genişletme paketi dosyası yazılamadı!"
#: platform/android/export/export_plugin.cpp
msgid "Building Android Project (gradle)"
@@ -13659,11 +13606,12 @@ msgid "Creating APK..."
msgstr "Konturlar oluÅŸturuluyor..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Could not find template APK to export:\n"
"%s"
-msgstr "Dışa aktarma için şablon açılamadı:"
+msgstr ""
+"Dışa aktarılacak şablon APK bulunamadı:\n"
+"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13672,6 +13620,9 @@ msgid ""
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
+"Seçili mimariler için dışa aktarma şablonunda eksik kitaplıklar: %s.\n"
+"Lütfen tüm gerekli kitaplıkları içeren bir şablon oluşturun veya dışa "
+"aktarma ön ayarındaki eksik mimarilerin işaretini kaldırın."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13689,7 +13640,7 @@ msgstr "APK hizalanıyor ..."
#: platform/android/export/export_plugin.cpp
msgid "Could not unzip temporary unaligned APK."
-msgstr ""
+msgstr "Geçici olarak hizalanmamış APK'nın sıkıştırması açılamadı."
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
@@ -13762,19 +13713,19 @@ msgstr "Geçersiz Tanımlayıcı:"
#: platform/osx/export/export.cpp
msgid "Notarization: code signing required."
-msgstr ""
+msgstr "Noter tasdiki: kod imzalama gerekli."
#: platform/osx/export/export.cpp
msgid "Notarization: hardened runtime required."
-msgstr ""
+msgstr "Noter onayı: sertleştirilmiş çalışma zamanı gerekli."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID name not specified."
-msgstr ""
+msgstr "Noter tasdik: Apple Kimliği adı belirtilmedi."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID password not specified."
-msgstr ""
+msgstr "Noter tasdik: Apple Kimliği parolası belirtilmedi."
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -14205,6 +14156,10 @@ msgid ""
"longer has any effect.\n"
"To remove this warning, disable the GIProbe's Compress property."
msgstr ""
+"GIProbe Sıkıştırma özelliği, bilinen hatalar nedeniyle kullanımdan "
+"kaldırılmıştır ve artık herhangi bir etkisi yoktur.\n"
+"Bu uyarıyı kaldırmak için GIProbe'un Sıkıştırma özelliğini devre dışı "
+"bırakın."
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -14226,11 +14181,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Hiçbir şekil ayarlanmadı."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Yalnızca tek tip ölçekler desteklenir."
#: scene/3d/particles.cpp
msgid ""
@@ -14301,15 +14256,15 @@ msgstr "Düğüm A ve Düğüm B, farklı PhysicsBody olmalıdır"
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "RoomManager, bir Portal'ın çocuğu veya torunu olmamalıdır."
#: scene/3d/portal.cpp
msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "Bir Oda, bir Portal'ın çocuğu veya torunu olmamalıdır."
#: scene/3d/portal.cpp
msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "Bir RoomGroup, bir Portal'ın çocuğu veya torunu olmamalıdır."
#: scene/3d/remote_transform.cpp
msgid ""
@@ -14321,79 +14276,96 @@ msgstr ""
#: scene/3d/room.cpp
msgid "A Room cannot have another Room as a child or grandchild."
-msgstr ""
+msgstr "Bir Oda'nın çocuk veya torun olarak başka bir Odası olamaz."
#: scene/3d/room.cpp
msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
+msgstr "RoomManager bir Odanın içine yerleştirilmemelidir."
#: scene/3d/room.cpp
msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
+msgstr "Bir Oda Grubu, bir Odanın içine yerleştirilmemelidir."
#: 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 ""
+"Oda dışbükey gövde, çok sayıda uçak içerir.\n"
+"Performansı artırmak için oda sınırını basitleştirmeyi düşünün."
#: scene/3d/room_group.cpp
msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
+msgstr "RoomManager, bir RoomGroup içine yerleştirilmemelidir."
#: scene/3d/room_manager.cpp
msgid "The RoomList has not been assigned."
-msgstr ""
+msgstr "RoomList atanmadı."
#: scene/3d/room_manager.cpp
msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
+msgstr "RoomList düğümü bir Uzamsal (veya Uzamsal'dan türetilmiş) olmalıdır."
#: 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 ""
+"Portal Derinlik Sınırı Sıfır olarak ayarlanmıştır.\n"
+"Yalnızca Kameranın bulunduğu Oda görüntülenecektir."
#: scene/3d/room_manager.cpp
msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
+msgstr "SceneTree'de yalnızca bir RoomManager olmalıdır."
#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
msgstr ""
+"RoomList yolu geçersiz.\n"
+"Lütfen RoomManager'da RoomList şubesinin atandığını kontrol edin."
#: scene/3d/room_manager.cpp
msgid "RoomList contains no Rooms, aborting."
-msgstr ""
+msgstr "RoomList hiç Oda içermiyor, iptal ediliyor."
#: scene/3d/room_manager.cpp
msgid "Misnamed nodes detected, check output log for details. Aborting."
msgstr ""
+"Yanlış adlandırılmış düğümler algılandı, ayrıntılar için çıktı günlüğünü "
+"kontrol edin. İptal ediliyor."
#: scene/3d/room_manager.cpp
msgid "Portal link room not found, check output log for details."
msgstr ""
+"Portal bağlantı odası bulunamadı, ayrıntılar için çıktı günlüğünü kontrol "
+"edin."
#: 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 ""
+"Portal otomatik bağlantısı başarısız oldu, ayrıntılar için çıktı günlüğünü "
+"kontrol edin.\n"
+"Portalın kaynak odadan dışa doğru baktığını kontrol edin."
#: scene/3d/room_manager.cpp
msgid ""
"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
"Check output log for details."
msgstr ""
+"Oda çakışması algılandı, kameralar çakışan alanda hatalı çalışabilir.\n"
+"Ayrıntılar için çıktı günlüğünü kontrol edin."
#: scene/3d/room_manager.cpp
msgid ""
"Error calculating room bounds.\n"
"Ensure all rooms contain geometry or manual bounds."
msgstr ""
+"Oda sınırları hesaplanırken hata oluştu.\n"
+"Tüm odaların geometri veya manuel sınırlar içerdiğinden emin olun."
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
@@ -14457,8 +14429,9 @@ msgid "Animation not found: '%s'"
msgstr "Animasyon bulunamadı: '%s'"
#: scene/animation/animation_player.cpp
+#, fuzzy
msgid "Anim Apply Reset"
-msgstr ""
+msgstr "Animasyonu Sıfırla"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
@@ -14567,6 +14540,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Eksen Uzatma özellikleri için Döşeme ve Döşeme Sığdırma seçenekleri yalnızca "
+"GLES3 işleme arka ucunu kullanırken etkilidir.\n"
+"GLES2 arka ucu şu anda kullanımda olduğundan, bu modlar bunun yerine Stretch "
+"gibi davranacaktır."
#: scene/gui/popup.cpp
msgid ""
@@ -14604,6 +14581,14 @@ msgstr ""
"Proje Ayarlarında tanımlanmış Varsayılan Ortam (İşleme -> Görüntükapısı -> "
"Varsayılan Ortam) yüklenemedi."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14617,13 +14602,16 @@ msgstr ""
"bir RenderTarget yap ve dahili dokusunu herhangi bir düğüme ata."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
"Herhangi bir şeyi işlemek için görüntükapısı boyutu 0'dan büyük olmalıdır."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphere Küre Kümeleri"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -14655,16 +14643,19 @@ msgid ""
"Varyings which assigned in 'vertex' function may not be reassigned in "
"'fragment' or 'light'."
msgstr ""
+"'Köşe' işlevinde atanan varyasyonlar, 'parça' veya 'ışık' olarak yeniden "
+"atanamaz."
#: servers/visual/shader_language.cpp
msgid ""
"Varyings which assigned in 'fragment' function may not be reassigned in "
"'vertex' or 'light'."
msgstr ""
+"'Parça' işlevinde atanan varyasyonlar, 'köşe' veya 'ışık'ta yeniden atanamaz."
#: servers/visual/shader_language.cpp
msgid "Fragment-stage varying could not been accessed in custom function!"
-msgstr ""
+msgstr "Özel işlevde parça aşaması değişikliğine erişilemedi!"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
@@ -16283,9 +16274,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Couldn't save atlas image:"
#~ msgstr "Atlas bedizi kaydedilemedi:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "Dönüştürülmüş doku kaydedilemedi:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "Geçersiz çeviri kaynağı!"
diff --git a/editor/translations/tt.po b/editor/translations/tt.po
index b169cafdc7..fc5064a395 100644
--- a/editor/translations/tt.po
+++ b/editor/translations/tt.po
@@ -7,6 +7,7 @@
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/"
@@ -2321,6 +2322,14 @@ msgid ""
"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 ""
@@ -2437,6 +2446,10 @@ 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."
@@ -2756,10 +2769,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4159,15 +4168,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7048,11 +7065,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7462,7 +7479,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7470,6 +7487,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7807,6 +7828,26 @@ 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 ""
@@ -13664,6 +13705,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13673,7 +13722,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po
index b0d9d05525..1911f0fde6 100644
--- a/editor/translations/tzm.po
+++ b/editor/translations/tzm.po
@@ -7,6 +7,7 @@
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/"
@@ -2319,6 +2320,14 @@ msgid ""
"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 ""
@@ -2435,6 +2444,10 @@ 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."
@@ -2754,10 +2767,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4157,15 +4166,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7046,11 +7063,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -7460,7 +7477,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7468,6 +7485,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -7805,6 +7826,26 @@ 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 ""
@@ -13662,6 +13703,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -13671,7 +13720,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index fd9f2a1b8a..db324bbc2c 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -20,8 +20,9 @@
msgid ""
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: 2021-08-12 21:32+0000\n"
+"PO-Revision-Date: 2021-10-18 15:35+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
@@ -31,7 +32,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2424,6 +2425,14 @@ 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 "Ðеможливо перезапиÑати Ñцену, Ñка Ñ” ще відкритою!"
@@ -2560,6 +2569,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Зберегти зміни, внеÑені до '%s' перед закриттÑм?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr "%s вже не Ñ–Ñнує! Будь лаÑка, вкажіть нове міÑце Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ."
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2605,29 +2618,27 @@ msgstr "Поточна Ñцена не збережена. Відкрити в Ð
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "СкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ, доки натиÑнуто кнопки миші."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Ðічого ÑкаÑовувати."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "СкаÑувати"
+msgstr "СкаÑувати: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ñ–Ð¹ неможливе, доки натиÑнуто кнопки миші."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Ðічого повторювати."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Повернути"
+msgstr "Повторити: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2914,10 +2925,6 @@ msgid "Save Scene"
msgstr "Зберегти Ñцену"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Зберегти вÑÑ– Ñцени"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Перетворити на..."
@@ -3319,9 +3326,8 @@ msgid "Merge With Existing"
msgstr "Об'єднати з Ñ–Ñнуючим"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Змінити перетвореннÑ"
+msgstr "Змінити Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñра Ñітки"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3583,7 +3589,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Швидке завантаженнÑ"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4404,6 +4410,23 @@ msgid "Clear Default for '%s'"
msgstr "ОчиÑтити типове Ð´Ð»Ñ '%s'"
#: 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 ""
+"ВнеÑені вами зміни ще не заÑтоÑовано. ÐатиÑніть кнопку «Імпортувати "
+"повторно», щоб заÑтоÑувати зміни у параметрах імпортуваннÑ.\n"
+"Вибір іншого реÑурÑу на бічній панелі файлової ÑиÑтеми без натиÑÐºÐ°Ð½Ð½Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ "
+"«Імпортувати повторно» призведе до Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½, Ñкі було внеÑено на "
+"бічній панелі імпортуваннÑ."
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "Імпортувати Ñк:"
@@ -4412,10 +4435,6 @@ msgid "Preset"
msgstr "Ðабір"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Переімпортувати"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Зберегти Ñцени, повторно імпортувати Ñ– перезапуÑтити"
@@ -5696,15 +5715,13 @@ msgstr "ПереÑунути CanvasItem «%s» до (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Заблокувати позначене"
+msgstr "Заблоковано"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Групи"
+msgstr "Згруповано"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6647,14 +6664,12 @@ msgid "Remove Selected Item"
msgstr "Вилучити вибраний елемент"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Імпортувати зі Ñцени"
+msgstr "Імпортувати зі Ñцени (ігнорувати перетвореннÑ)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Імпортувати зі Ñцени"
+msgstr "Імпортувати зі Ñцени (заÑтоÑувати перетвореннÑ)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7246,14 +7261,12 @@ msgid "Flip Portal"
msgstr "Віддзеркалити портал"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "ЗнÑти перетвореннÑ"
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð°Ð±Ð¾Ñ€Ñƒ закупорювача"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Створити вузол"
+msgstr "Центрувати вузол"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7391,11 +7404,11 @@ msgid "Move Down"
msgstr "ПереміÑтити вниз"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "ÐаÑтупний Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr "Попередній Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
@@ -7761,14 +7774,12 @@ msgid "Skeleton2D"
msgstr "ПлоÑкий каркаÑ"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Ð’Ñтановити кіÑтки Ð´Ð»Ñ Ð²Ñ–Ð»ÑŒÐ½Ð¾Ñ— пози"
+msgstr "Відновити вільну позу"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "ПерезапиÑати"
+msgstr "ПерезапиÑати вільну позу"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7795,69 +7806,62 @@ msgid "Perspective"
msgstr "ПерÑпектива"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Ортогонально"
+msgstr "Верхній ортогональний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "ПерÑпектива"
+msgstr "Верхній перÑпективний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Ортогонально"
+msgstr "Ðижній ортогональний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "ПерÑпектива"
+msgstr "Ðижній перÑпективний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Ортогонально"
+msgstr "Лівий ортогональний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "ПерÑпектива"
+msgid "Left Perspective"
+msgstr "Ліва перÑпектива"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Ортогонально"
+msgstr "Правий ортогональний"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "Правий перÑпективний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Ортогонально"
+msgstr "Передній ортогональний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "ПерÑпектива"
+msgstr "Передній перÑпективний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Ортогонально"
+msgstr "Задній ортогональний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "ПерÑпектива"
+msgstr "Задній перÑпективний"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+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 ""
+msgstr " [портали активні]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8181,6 +8185,26 @@ 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 "Орбітальний вид 180"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr "Перемкнути переглÑд перÑпективи/ортогональний переглÑд"
@@ -8254,9 +8278,8 @@ msgid "View Portal Culling"
msgstr "ПереглÑнути Ð²Ñ–Ð´Ð±Ñ€Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Portal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "ПереглÑнути Ð²Ñ–Ð´Ð±Ñ€Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Portal"
+msgstr "ПереглÑнути Ð²Ñ–Ð´Ð±Ñ€Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8324,9 +8347,8 @@ msgid "Post"
msgstr "ПіÑлÑ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Проєкт без назви"
+msgstr "Гаджет без назви"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -12465,14 +12487,12 @@ msgid "Set Portal Point Position"
msgstr "Задати Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ порталу"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ñ„Ð¾Ñ€Ð¼Ð¸ циліндра"
+msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ñфери закупорюваннÑ"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Ð’Ñтановити криву в позиції"
+msgstr "Ð’Ñтановити позицію Ñфери закупорюваннÑ"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12758,9 +12778,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "Ðазвою клаÑу не може бути зарезервоване ключове Ñлово"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Заповнити позначене"
+msgstr "Зібрати рішеннÑ"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -14119,11 +14138,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Форму не вÑтановлено."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Передбачено підтримку лише однорідних маÑштабів."
#: scene/3d/particles.cpp
msgid ""
@@ -14486,6 +14505,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Варіанти «Плитка» Ñ– «За плиткою» Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑтей розтÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÑÑ– працюють "
+"лише при викориÑтанні Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ даних GLES3.\n"
+"Зараз викориÑтано модуль обробки GLES2, тому ці режими працюватимуть проÑто "
+"Ñк «РозтÑгнути»."
#: scene/gui/popup.cpp
msgid ""
@@ -14524,6 +14547,19 @@ 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 ""
+"Дуже малі проміжки чаÑу Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° таймером (< 0.05 Ñекунд) можуть "
+"призводити до Ñуттєво різних результатів Ð´Ð»Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… оброблених або фізичних "
+"чаÑтот кадрів.\n"
+"Вам варто ÑкориÑтатиÑÑ Ñ†Ð¸ÐºÐ»Ð¾Ð¼ процеÑу Ñкрипту заміÑть Timer Ð´Ð»Ñ Ð´ÑƒÐ¶Ðµ малих "
+"проміжків очікуваннÑ."
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14537,14 +14573,16 @@ msgstr ""
"пов'Ñзати Ñ—Ñ— внутрішню текÑтуру з одним із вузлів Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ."
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
"Щоб програма могла хоч щоÑÑŒ показати, розмір Ð¿Ð¾Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду має бути більшим "
-"за 0."
+"або рівним 2 пікÑелÑм в обох вимірах."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "Сфери набору OccluderShapeSphere"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index 332f5bd681..b192d4b651 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -8,6 +8,7 @@
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: 2018-12-13 14:44+0100\n"
"Last-Translator: Muhammad Ali <ali@codeonion.com>\n"
@@ -2372,6 +2373,14 @@ msgid ""
"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 ""
@@ -2488,6 +2497,10 @@ 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."
@@ -2812,10 +2825,6 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr ""
@@ -4250,15 +4259,23 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-msgid "Import As:"
+msgid "Reimport"
msgstr ""
#: editor/import_dock.cpp
-msgid "Preset"
+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 "Reimport"
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Preset"
msgstr ""
#: editor/import_dock.cpp
@@ -7228,12 +7245,13 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "Next script"
+msgid "Next Script"
msgstr "سب سکریپشن بنائیں"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "سب سکریپشن بنائیں"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7652,7 +7670,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7660,6 +7678,10 @@ msgid "Right Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8004,6 +8026,26 @@ 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 ""
@@ -14057,6 +14099,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14066,7 +14116,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index 518c301ca6..e1aa97d317 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -23,6 +23,7 @@
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-09-15 00:46+0000\n"
"Last-Translator: IoeCmcomc <hopdaigia2004@gmail.com>\n"
@@ -2405,6 +2406,15 @@ msgstr ""
"Không thể lưu cảnh. Các phần phụ thuá»™c (trưá»ng hợp hoặc kế thừa) không thoả "
"mãn."
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Could not save one or more scenes!"
+msgstr "Không thể bắt đầu quá trình phụ!"
+
+#: editor/editor_node.cpp
+msgid "Save All Scenes"
+msgstr "Lưu hết các Cảnh"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr "Không thể ghi đè cảnh vẫn đang mở!"
@@ -2537,6 +2547,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "Lưu thay đổi vào '%s' trước khi đóng?"
#: 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."
@@ -2881,10 +2895,6 @@ msgid "Save Scene"
msgstr "Lưu Cảnh"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "Lưu hết các Cảnh"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "Chuyển thành..."
@@ -4366,6 +4376,18 @@ msgid "Clear Default for '%s'"
msgstr "Dá»n Mặc định cho '%s'"
#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr "Nhập vào lại"
+
+#: 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 "Nhập vào với:"
@@ -4374,10 +4396,6 @@ msgid "Preset"
msgstr "Cài sẵn"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "Nhập vào lại"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Lưu các cảnh, nhập lại, rồi tái khởi động"
@@ -7338,11 +7356,13 @@ msgid "Move Down"
msgstr "Hạ nút xuống"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "Tệp lệnh tiếp theo"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "Tệp lệnh trước đó"
#: editor/plugins/script_editor_plugin.cpp
@@ -7768,7 +7788,7 @@ msgstr "Vuông góc"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "Phối cảnh"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7778,6 +7798,11 @@ msgstr "Vuông góc"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "Phối cảnh"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "Vuông góc"
@@ -8134,6 +8159,27 @@ msgid "Right View"
msgstr "Góc nhìn phải"
#: 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
+#, fuzzy
+msgid "Orbit View Up"
+msgstr "Góc nhìn trực diện"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orbit View 180"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
msgstr ""
@@ -14387,6 +14433,14 @@ msgstr ""
"Environment mặc định được chỉ định trong Cài đặt Dự án (Rendering -> "
"Environment -> Default Environment) không thể nạp được."
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14396,7 +14450,9 @@ msgid ""
msgstr ""
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr ""
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index e8084b8856..82159d534e 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -79,11 +79,15 @@
# suplife <2634557184@qq.com>, 2021.
# luoji <564144019@qq.com>, 2021.
# zeng haochen <m18621006730@163.com>, 2021.
+# Sam Sun <oppositenormal@outlook.com>, 2021.
+# è‹è½¼ <youwanyuyu@gmail.com>, 2021.
+# nitenook <admin@alterbaum.net>, 2021.
msgid ""
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: 2021-09-06 16:32+0000\n"
+"PO-Revision-Date: 2021-10-21 10:31+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"
@@ -92,7 +96,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.8.1-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2433,6 +2437,14 @@ msgid ""
"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 "无法覆盖ä»å¤„于打开状æ€çš„场景ï¼"
@@ -2562,6 +2574,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "是å¦åœ¨å…³é—­å‰ä¿å­˜å¯¹ “%s†的更改?"
#: editor/editor_node.cpp
+msgid "%s no longer exists! Please specify a new save location."
+msgstr "路径 %s å·²ä¸å­˜åœ¨ï¼è¯·é‡æ–°é€‰æ‹©æ–°çš„ä¿å­˜è·¯å¾„。"
+
+#: editor/editor_node.cpp
msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
@@ -2603,29 +2619,27 @@ msgstr "当å‰åœºæ™¯å°šæœªä¿å­˜ã€‚是å¦ä»è¦æ‰“开?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "鼠标按下时无法撤销。"
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "æ— å¯æ’¤é”€ã€‚"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "撤销"
+msgstr "撤销:%s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "鼠标按下时无法é‡åšã€‚"
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "æ— å¯é‡åšã€‚"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "é‡åš"
+msgstr "é‡åšï¼š%s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2897,10 +2911,6 @@ msgid "Save Scene"
msgstr "ä¿å­˜åœºæ™¯"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "ä¿å­˜æ‰€æœ‰åœºæ™¯"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "转æ¢ä¸º..."
@@ -3285,9 +3295,8 @@ msgid "Merge With Existing"
msgstr "与现有åˆå¹¶"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "ä¿®æ”¹åŠ¨ç”»å˜æ¢"
+msgstr "应用 MeshInstance å˜æ¢"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3543,7 +3552,7 @@ msgstr "所选资æºï¼ˆ%s)与该属性(%s)所需的类型都ä¸åŒ¹é…。"
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "快速加载"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4345,6 +4354,20 @@ msgid "Clear Default for '%s'"
msgstr "清除 “%s†的默认值"
#: 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 ""
+"æœ‰äº›ä¿®æ”¹æœªè¢«åº”ç”¨ã€‚ç‚¹å‡»â€œé‡æ–°å¯¼å…¥â€æ¥åº”用导入的修改。\n"
+"若在选择å¦ä¸€ä¸ªèµ„æºå‰æ²¡æœ‰ç‚¹å‡»â€œé‡æ–°å¯¼å…¥â€ï¼Œåˆ™ä¼šå¿½ç•¥å¯¼å…¥çš„修改。"
+
+#: editor/import_dock.cpp
msgid "Import As:"
msgstr "导入为:"
@@ -4353,10 +4376,6 @@ msgid "Preset"
msgstr "预设"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "釿–°å¯¼å…¥"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "ä¿å­˜åœºæ™¯ã€é‡æ–°å¯¼å…¥ï¼Œç„¶åŽé‡å¯"
@@ -4383,7 +4402,7 @@ msgstr "粘贴属性"
#: editor/inspector_dock.cpp
msgid "Make Sub-Resources Unique"
-msgstr "转为独立å­èµ„æº"
+msgstr "唯一化å­èµ„æº"
#: editor/inspector_dock.cpp
msgid "Create a new resource in memory and edit it."
@@ -5612,15 +5631,13 @@ msgstr "移动 CanvasItem “%s†至 (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "é”定所选项"
+msgstr "å·²é”定"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "分组"
+msgstr "已分组"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6546,14 +6563,12 @@ msgid "Remove Selected Item"
msgstr "移除选中项目"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "从场景中导入"
+msgstr "ä»Žåœºæ™¯ä¸­å¯¼å…¥ï¼ˆå¿½ç•¥å˜æ¢ï¼‰"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "从场景中导入"
+msgstr "ä»Žåœºæ™¯ä¸­å¯¼å…¥ï¼ˆåº”ç”¨å˜æ¢ï¼‰"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7139,14 +7154,12 @@ msgid "Flip Portal"
msgstr "翻转入å£"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "æ¸…é™¤å˜æ¢"
+msgstr "鮿Œ¡é›†å˜æ¢"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "创建节点"
+msgstr "居中节点"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7280,11 +7293,11 @@ msgid "Move Down"
msgstr "å‘下移动"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+msgid "Next Script"
msgstr "下一个脚本"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+msgid "Previous Script"
msgstr "上一个脚本"
#: editor/plugins/script_editor_plugin.cpp
@@ -7646,14 +7659,12 @@ msgid "Skeleton2D"
msgstr "2D 骨骼节点"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "将骨骼é‡ç½®ä¸ºæ”¾æ¾å§¿åŠ¿"
+msgstr "é‡ç½®ä¸ºæ”¾æ¾å§¿åŠ¿"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "覆盖"
+msgstr "覆盖放æ¾å§¿åŠ¿"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7680,69 +7691,62 @@ msgid "Perspective"
msgstr "é€è§†"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "正交"
+msgstr "正交顶视图"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "é€è§†"
+msgstr "é€è§†é¡¶è§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "正交"
+msgstr "正交底视图"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "é€è§†"
+msgstr "é€è§†åº•视图"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "正交"
+msgstr "正交左视图"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Right Perspective"
-msgstr "é€è§†"
+msgid "Left Perspective"
+msgstr "é€è§†å·¦è§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "正交"
+msgstr "正交å³è§†å›¾"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr "é€è§†å³è§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "正交"
+msgstr "正交å‰è§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "é€è§†"
+msgstr "é€è§†å‰è§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "正交"
+msgstr "正交åŽè§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "é€è§†"
+msgstr "é€è§†åŽè§†å›¾"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+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 ""
+msgstr " [å…¥å£ç”Ÿæ•ˆ]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8063,6 +8067,26 @@ 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 "切æ¢é€è§†å›¾/正交视图"
@@ -8136,9 +8160,8 @@ msgid "View Portal Culling"
msgstr "显示入å£å‰”除"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "显示入å£å‰”除"
+msgstr "æ˜¾ç¤ºé®æŒ¡å‰”除"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8206,9 +8229,8 @@ msgid "Post"
msgstr "åŽç½®"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "未命å项目"
+msgstr "æœªå‘½åæŽ§åˆ¶å™¨"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -12239,14 +12261,12 @@ msgid "Set Portal Point Position"
msgstr "设置入å£ç‚¹ä½ç½®"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "修改圆柱体åŠå¾„"
+msgstr "è®¾ç½®é®æŒ¡çƒä½“åŠå¾„"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "设置曲线内控点ä½ç½®"
+msgstr "è®¾ç½®é®æŒ¡çƒä½“ä½ç½®"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12529,9 +12549,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "ç±»åä¸èƒ½æ˜¯ä¿ç•™å…³é”®å­—"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "填充选中项"
+msgstr "构建解决方案"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -13092,11 +13111,11 @@ msgstr "用于å‘布的密钥存储在导出预设中未被正确设置。"
#: platform/android/export/export_plugin.cpp
msgid "A valid Android SDK path is required in Editor Settings."
-msgstr "ç¼–è¾‘å™¨è®¾ç½®ä¸­éœ€è¦æœ‰æ•ˆçš„Android SDK路径。"
+msgstr "ç¼–è¾‘å™¨è®¾ç½®ä¸­éœ€è¦æœ‰æ•ˆçš„ Android SDK 路径。"
#: platform/android/export/export_plugin.cpp
msgid "Invalid Android SDK path in Editor Settings."
-msgstr "编辑器设置中的Android SDK路径无效。"
+msgstr "编辑器设置中的 Android SDK 路径无效。"
#: platform/android/export/export_plugin.cpp
msgid "Missing 'platform-tools' directory!"
@@ -13104,11 +13123,11 @@ msgstr "缺失“platform-toolsâ€ç›®å½•ï¼"
#: platform/android/export/export_plugin.cpp
msgid "Unable to find Android SDK platform-tools' adb command."
-msgstr "找ä¸åˆ°Android SDKå¹³å°å·¥å…·çš„adb命令。"
+msgstr "找ä¸åˆ° Android SDK å¹³å°å·¥å…·çš„ adb 命令。"
#: platform/android/export/export_plugin.cpp
msgid "Please check in the Android SDK directory specified in Editor Settings."
-msgstr "请签入编辑器设置中指定的Android SDK目录。"
+msgstr "请签入编辑器设置中指定的 Android SDK 目录。"
#: platform/android/export/export_plugin.cpp
msgid "Missing 'build-tools' directory!"
@@ -13116,7 +13135,7 @@ msgstr "缺失“build-toolsâ€ç›®å½•ï¼"
#: platform/android/export/export_plugin.cpp
msgid "Unable to find Android SDK build-tools' apksigner command."
-msgstr "找ä¸åˆ°Android SDK生æˆå·¥å…·çš„apksigner命令。"
+msgstr "找ä¸åˆ° Android SDK 生æˆå·¥å…·çš„ apksigner 命令。"
#: platform/android/export/export_plugin.cpp
msgid "Invalid public key for APK expansion."
@@ -13320,7 +13339,7 @@ msgstr "预设中未指定必需的图标。"
#: platform/javascript/export/export.cpp
msgid "Stop HTTP Server"
-msgstr "åœæ­¢ HTTP æœåŠ¡"
+msgstr "åœæ­¢ HTTP æœåС噍"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -13790,11 +13809,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "未设置形状。"
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "仅支æŒç»Ÿä¸€çš„缩放。"
#: scene/3d/particles.cpp
msgid ""
@@ -14131,6 +14150,8 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Axis Stretch 属性的 Tile å’Œ Tile Fit 选项仅在使用 GLES3 渲染åŽç«¯æ—¶æœ‰æ•ˆã€‚\n"
+"当å‰ä½¿ç”¨çš„æ˜¯ GLES2 åŽç«¯ï¼Œå°†ä½¿ç”¨ Stretch 的行为代替这些模å¼ã€‚"
#: scene/gui/popup.cpp
msgid ""
@@ -14167,6 +14188,17 @@ msgstr ""
"无法加载项目设置中的默认环境 (Rendering -> Environment -> Default "
"Environment)。"
+#: 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 ""
+"计时器等待时间éžå¸¸çŸ­ï¼ˆå°äºŽ 0.05 秒)时å¯èƒ½ä¼šæ ¹æ®æ¸²æŸ“帧率和物ç†å¸§çŽ‡çš„ä¸åŒè€Œè¡¨"
+"现得æžä¸ºä¸åŒã€‚\n"
+"建议使用脚本的 process 循环代替此类计时器。"
+
#: scene/main/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14174,17 +14206,19 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
-"这个 Viewport 未被设置为渲染目标。如果你想让其直接在å±å¹•上显示内容,请使其æˆ"
-"为 Control çš„å­èŠ‚ç‚¹ï¼Œè¿™æ ·ä¸€æ¥è¯¥ Viewport æ‰ä¼šæœ‰å¤§å°ã€‚å¦åˆ™è¯·ä¸ºå…¶è®¾ç½® "
+"这个视窗未被设置为渲染目标。如果你想让其直接在å±å¹•上显示内容,请使其æˆä¸º "
+"Control çš„å­èŠ‚ç‚¹ï¼Œè¿™æ ·ä¸€æ¥è¯¥ Viewport æ‰ä¼šæœ‰å¤§å°ã€‚å¦åˆ™è¯·ä¸ºå…¶è®¾ç½® "
"RenderTarget 并分é…å…¶å†…éƒ¨çº¹ç†æ¥æ˜¾ç¤ºã€‚"
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
-msgstr "Viewport 大å°å¤§äºŽ 0 æ—¶æ‰èƒ½è¿›è¡Œæ¸²æŸ“。"
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
+msgstr "Viewport 的宽高都大于等于 2 åƒç´ æ—¶æ‰èƒ½è¿›è¡Œæ¸²æŸ“。"
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphere 设置 Spheres"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -15857,9 +15891,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Couldn't save atlas image:"
#~ msgstr "无法ä¿å­˜ç²¾çµé›†å›¾ç‰‡:"
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "无法ä¿å­˜è½¬æ¢çš„贴图:"
-
#~ msgid "Invalid translation source!"
#~ msgstr "æºè¯­è¨€æ–‡ä»¶éžæ³•ï¼"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index b9461bffd0..b3ac6dcf79 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -7,6 +7,7 @@
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-05-01 11:43+0000\n"
"Last-Translator: zx-wt <ZX_WT@ymail.com>\n"
@@ -2485,6 +2486,15 @@ msgid ""
"be satisfied."
msgstr ""
+#: editor/editor_node.cpp
+msgid "Could not save one or more scenes!"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save All Scenes"
+msgstr "儲存所有場景"
+
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
msgstr ""
@@ -2606,6 +2616,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "關閉å‰è¦å…ˆå„²å­˜å° '%s' 任何更改嗎?"
#: 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."
@@ -2958,11 +2972,6 @@ msgid "Save Scene"
msgstr "儲存場景"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Save All Scenes"
-msgstr "儲存所有場景"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "轉為..."
@@ -4489,20 +4498,28 @@ msgstr ""
#: editor/import_dock.cpp
#, fuzzy
-msgid "Import As:"
+msgid "Reimport"
msgstr "å°Žå…¥"
#: editor/import_dock.cpp
-#, fuzzy
-msgid "Preset"
-msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
+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
#, fuzzy
-msgid "Reimport"
+msgid "Import As:"
msgstr "å°Žå…¥"
#: editor/import_dock.cpp
+#, fuzzy
+msgid "Preset"
+msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
+
+#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr ""
@@ -7573,12 +7590,14 @@ msgid "Move Down"
msgstr "下移"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "下一個腳本"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
-msgstr ""
+#, fuzzy
+msgid "Previous Script"
+msgstr "上一個tab"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -8026,7 +8045,7 @@ msgid "Left Orthogonal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8035,6 +8054,10 @@ msgid "Right Orthogonal"
msgstr "å³ð¨«¡"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front Orthogonal"
msgstr ""
@@ -8389,6 +8412,26 @@ 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 ""
@@ -14654,6 +14697,14 @@ msgid ""
"Environment -> Default Environment) could not be loaded."
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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14664,7 +14715,9 @@ msgstr ""
#: scene/main/viewport.cpp
#, fuzzy
-msgid "Viewport size must be greater than 0 to render anything."
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "viewport大å°å¿…須大於ï¼ä»¥æ¸²æŸ“任何æ±è¥¿ã€‚"
#: scene/resources/occluder_shape.cpp
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index db1603cc9b..6ec9a2671a 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -29,6 +29,7 @@
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-07-13 06:13+0000\n"
"Last-Translator: meowmeowmeowcat <meowmeowcat1211@gmail.com>\n"
@@ -2407,6 +2408,15 @@ msgid ""
"be satisfied."
msgstr "無法ä¿å­˜å ´æ™¯ã€‚å¯èƒ½æ˜¯ç”±æ–¼ç›¸ä¾æ€§ï¼ˆå¯¦é«”或繼承)無法滿足。"
+#: editor/editor_node.cpp
+#, fuzzy
+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 "無法複寫未關閉的場景ï¼"
@@ -2536,6 +2546,10 @@ msgid "Save changes to '%s' before closing?"
msgstr "é—œé–‰å‰æ˜¯å¦ä¿å­˜å°ã€Œ%sã€çš„æ›´æ”¹ï¼Ÿ"
#: 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."
@@ -2871,10 +2885,6 @@ msgid "Save Scene"
msgstr "ä¿å­˜å ´æ™¯"
#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr "ä¿å­˜æ‰€æœ‰å ´æ™¯"
-
-#: editor/editor_node.cpp
msgid "Convert To..."
msgstr "è½‰æ›æˆâ€¦"
@@ -4352,6 +4362,18 @@ msgid "Clear Default for '%s'"
msgstr "清除「%sã€çš„é è¨­"
#: 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 "匯入為:"
@@ -4360,10 +4382,6 @@ msgid "Preset"
msgstr "é è¨­è¨­å®š"
#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr "釿–°åŒ¯å…¥"
-
-#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
msgstr "ä¿å­˜å ´æ™¯ã€é‡æ–°åŒ¯å…¥ã€ä¸¦é‡æ–°å•Ÿå‹•"
@@ -7315,11 +7333,13 @@ msgid "Move Down"
msgstr "下移"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Next script"
+#, fuzzy
+msgid "Next Script"
msgstr "下一個腳本"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous script"
+#, fuzzy
+msgid "Previous Script"
msgstr "上一個腳本"
#: editor/plugins/script_editor_plugin.cpp
@@ -7741,7 +7761,7 @@ msgstr "正交"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Right Perspective"
+msgid "Left Perspective"
msgstr "é€è¦–"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7751,6 +7771,11 @@ msgstr "正交"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Right Perspective"
+msgstr "é€è¦–"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Front Orthogonal"
msgstr "正交"
@@ -8112,6 +8137,27 @@ 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
+#, fuzzy
+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 "åˆ‡æ›æŠ•å½±æˆ–æ­£äº¤è¦–åœ–"
@@ -14306,6 +14352,14 @@ msgstr ""
"無法載入專案設定中指定的é è¨­ç’°å¢ƒ (Rendering -> Environment -> Default "
"Environment)。"
+#: 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/viewport.cpp
msgid ""
"This viewport is not set as render target. If you intend for it to display "
@@ -14318,7 +14372,10 @@ msgstr ""
"為其他節點以顯示。"
#: scene/main/viewport.cpp
-msgid "Viewport size must be greater than 0 to render anything."
+#, fuzzy
+msgid ""
+"The Viewport size must be greater than or equal to 2 pixels on both "
+"dimensions to render anything."
msgstr "Viewport 大å°å¿…須大於 0 æ‰å¯é€²è¡Œç®—繪。"
#: scene/resources/occluder_shape.cpp
diff --git a/main/main.cpp b/main/main.cpp
index 3cc7923cc2..d4a6216e35 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -376,7 +376,9 @@ void Main::print_help(const char *p_binary) {
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");
+ OS::get_singleton()->print(" --dump-extension-api Generate JSON dump of the Godot API for GDExtension bindings named 'extension_api.json' in the current folder.\n");
#ifdef DEBUG_METHODS_ENABLED
+ // TODO: Should be removed together with nativescript eventually.
OS::get_singleton()->print(" --gdnative-generate-json-api <path> Generate JSON dump of the Godot API for GDNative bindings and save it on the file specified in <path>.\n");
OS::get_singleton()->print(" --gdnative-generate-json-builtin-api <path> Generate JSON dump of the Godot API of the builtin Variant types and utility functions for GDNative bindings and save it on the file specified in <path>.\n");
#endif
@@ -901,20 +903,24 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
auto_build_solutions = true;
editor = true;
cmdline_tool = true;
-
+#ifdef DEBUG_METHODS_ENABLED
} else if (I->get() == "--gdnative-generate-json-api" || I->get() == "--gdnative-generate-json-builtin-api") {
// Register as an editor instance to use low-end fallback if relevant.
editor = true;
cmdline_tool = true;
-
- // We still pass it to the main arguments since the argument handling itself is not done in this function
+ // We still pass it to the main arguments since the argument handling itself is not done in this function,
+ // it's done in nativescript init code.
main_args.push_back(I->get());
+#endif
} else if (I->get() == "--dump-extension-api") {
// Register as an editor instance to use low-end fallback if relevant.
editor = true;
cmdline_tool = true;
dump_extension_api = true;
- print_line("dump extension?");
+ print_line("Dumping Extension API");
+ // Hack. Not needed but otherwise we end up detecting that this should
+ // run the project instead of a cmdline tool.
+ // Needs full refactoring to fix properly.
main_args.push_back(I->get());
} else if (I->get() == "--export" || I->get() == "--export-debug" ||
I->get() == "--export-pack") { // Export project
@@ -1341,8 +1347,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
display_driver_idx = 0;
}
- if (audio_driver == "") { // specified in project.godot
- audio_driver = GLOBAL_DEF_RST_NOVAL("audio/driver/driver", AudioDriverManager::get_driver(0)->get_name());
+ GLOBAL_DEF_RST_NOVAL("audio/driver/driver", AudioDriverManager::get_driver(0)->get_name());
+ if (audio_driver == "") { // Specified in project.godot.
+ audio_driver = GLOBAL_GET("audio/driver/driver");
}
for (int i = 0; i < AudioDriverManager::get_driver_count(); i++) {
@@ -2065,6 +2072,8 @@ bool Main::start() {
if (check_only) {
if (!script_res->is_valid()) {
OS::get_singleton()->set_exit_code(EXIT_FAILURE);
+ } else {
+ OS::get_singleton()->set_exit_code(EXIT_SUCCESS);
}
return false;
}
@@ -2137,7 +2146,7 @@ bool Main::start() {
}
#endif
- bool embed_subwindows = GLOBAL_DEF("display/window/subwindows/embed_subwindows", false);
+ bool embed_subwindows = GLOBAL_DEF("display/window/subwindows/embed_subwindows", true);
if (OS::get_singleton()->is_single_window() || (!project_manager && !editor && embed_subwindows)) {
sml->get_root()->set_embed_subwindows_hint(true);
@@ -2522,6 +2531,9 @@ bool Main::iteration() {
bool exit = false;
+ // process all our active interfaces
+ XRServer::get_singleton()->_process();
+
for (int iters = 0; iters < advance.physics_steps; ++iters) {
if (Input::get_singleton()->is_using_input_buffering() && agile_input_event_flushing) {
Input::get_singleton()->flush_buffered_events();
diff --git a/methods.py b/methods.py
index 0e71adb40d..77a1085baf 100644
--- a/methods.py
+++ b/methods.py
@@ -1,8 +1,10 @@
+import collections
import os
import re
import glob
import subprocess
from collections import OrderedDict
+from typing import Iterator
# We need to define our own `Action` method to control the verbosity of output
# and whenever we need to run those commands in a subprocess on some platforms.
@@ -14,7 +16,7 @@ from SCons.Variables.BoolVariable import _text2bool
from platform_methods import run_in_subprocess
-def add_source_files(self, sources, files, warn_duplicates=True):
+def add_source_files(self, sources, files):
# Convert string to list of absolute paths (including expanding wildcard)
if isinstance(files, (str, bytes)):
# Keep SCons project-absolute path as they are (no wildcard support)
@@ -24,17 +26,20 @@ def add_source_files(self, sources, files, warn_duplicates=True):
return
files = [files]
else:
+ # Exclude .gen.cpp files from globbing, to avoid including obsolete ones.
+ # They should instead be added manually.
+ skip_gen_cpp = "*" in files
dir_path = self.Dir(".").abspath
files = sorted(glob.glob(dir_path + "/" + files))
+ if skip_gen_cpp:
+ files = [f for f in files if not f.endswith(".gen.cpp")]
# Add each path as compiled Object following environment (self) configuration
for path in files:
obj = self.Object(path)
if obj in sources:
- if warn_duplicates:
- print('WARNING: Object "{}" already included in environment sources.'.format(obj))
- else:
- continue
+ print('WARNING: Object "{}" already included in environment sources.'.format(obj))
+ continue
sources.append(obj)
@@ -601,7 +606,11 @@ def detect_visual_c_compiler_version(tools_env):
def find_visual_c_batch_file(env):
- from SCons.Tool.MSCommon.vc import get_default_version, get_host_target, find_batch_file
+ from SCons.Tool.MSCommon.vc import (
+ get_default_version,
+ get_host_target,
+ find_batch_file,
+ )
version = get_default_version(env)
(host_platform, target_platform, _) = get_host_target(env)
@@ -653,36 +662,107 @@ def generate_vs_project(env, num_jobs):
batch_file = find_visual_c_batch_file(env)
if batch_file:
- def build_commandline(commands):
- common_build_prefix = [
- 'cmd /V /C set "plat=$(PlatformTarget)"',
- '(if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64"))',
- 'set "tools=%s"' % env["tools"],
- '(if "$(Configuration)"=="release" (set "tools=no"))',
- 'call "' + batch_file + '" !plat!',
- ]
-
- # Windows allows us to have spaces in paths, so we need
- # to double quote off the directory. However, the path ends
- # in a backslash, so we need to remove this, lest it escape the
- # last double quote off, confusing MSBuild
- common_build_postfix = [
- "--directory=\"$(ProjectDir.TrimEnd('\\'))\"",
- "platform=windows",
- "target=$(Configuration)",
- "progress=no",
- "tools=!tools!",
- "-j%s" % num_jobs,
- ]
-
- if env["tests"]:
- common_build_postfix.append("tests=yes")
-
- if env["custom_modules"]:
- common_build_postfix.append("custom_modules=%s" % env["custom_modules"])
-
- result = " ^& ".join(common_build_prefix + [" ".join([commands] + common_build_postfix)])
- return result
+ class ModuleConfigs(collections.Mapping):
+ # This version information (Win32, x64, Debug, Release, Release_Debug seems to be
+ # required for Visual Studio to understand that it needs to generate an NMAKE
+ # project. Do not modify without knowing what you are doing.
+ PLATFORMS = ["Win32", "x64"]
+ PLATFORM_IDS = ["32", "64"]
+ CONFIGURATIONS = ["debug", "release", "release_debug"]
+ CONFIGURATION_IDS = ["tools", "opt", "opt.tools"]
+
+ @staticmethod
+ def for_every_variant(value):
+ return [value for _ in range(len(ModuleConfigs.CONFIGURATIONS) * len(ModuleConfigs.PLATFORMS))]
+
+ def __init__(self):
+
+ shared_targets_array = []
+ self.names = []
+ self.arg_dict = {
+ "variant": [],
+ "runfile": shared_targets_array,
+ "buildtarget": shared_targets_array,
+ "cpppaths": [],
+ "cppdefines": [],
+ "cmdargs": [],
+ }
+ self.add_mode() # default
+
+ def add_mode(
+ self,
+ name: str = "",
+ includes: str = "",
+ cli_args: str = "",
+ defines=None,
+ ):
+ if defines is None:
+ defines = []
+ self.names.append(name)
+ self.arg_dict["variant"] += [
+ f'{config}{f"_[{name}]" if name else ""}|{platform}'
+ for config in ModuleConfigs.CONFIGURATIONS
+ for platform in ModuleConfigs.PLATFORMS
+ ]
+ self.arg_dict["runfile"] += [
+ f'bin\\godot.windows.{config_id}.{plat_id}{f".{name}" if name else ""}.exe'
+ for config_id in ModuleConfigs.CONFIGURATION_IDS
+ for plat_id in ModuleConfigs.PLATFORM_IDS
+ ]
+ self.arg_dict["cpppaths"] += ModuleConfigs.for_every_variant(env["CPPPATH"] + [includes])
+ self.arg_dict["cppdefines"] += ModuleConfigs.for_every_variant(env["CPPDEFINES"] + defines)
+ self.arg_dict["cmdargs"] += ModuleConfigs.for_every_variant(cli_args)
+
+ def build_commandline(self, commands):
+
+ configuration_getter = (
+ "$(Configuration"
+ + "".join([f'.Replace("{name}", "")' for name in self.names[1:]])
+ + '.Replace("_[]", "")'
+ + ")"
+ )
+
+ common_build_prefix = [
+ 'cmd /V /C set "plat=$(PlatformTarget)"',
+ '(if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64"))',
+ 'set "tools=%s"' % env["tools"],
+ f'(if "{configuration_getter}"=="release" (set "tools=no"))',
+ 'call "' + batch_file + '" !plat!',
+ ]
+
+ # Windows allows us to have spaces in paths, so we need
+ # to double quote off the directory. However, the path ends
+ # in a backslash, so we need to remove this, lest it escape the
+ # last double quote off, confusing MSBuild
+ common_build_postfix = [
+ "--directory=\"$(ProjectDir.TrimEnd('\\'))\"",
+ "platform=windows",
+ f"target={configuration_getter}",
+ "progress=no",
+ "tools=!tools!",
+ "-j%s" % num_jobs,
+ ]
+
+ if env["tests"]:
+ common_build_postfix.append("tests=yes")
+
+ if env["custom_modules"]:
+ common_build_postfix.append("custom_modules=%s" % env["custom_modules"])
+
+ result = " ^& ".join(common_build_prefix + [" ".join([commands] + common_build_postfix)])
+ return result
+
+ # Mappings interface definitions
+
+ def __iter__(self) -> Iterator[str]:
+ for x in self.arg_dict:
+ yield x
+
+ def __len__(self) -> int:
+ return len(self.names)
+
+ def __getitem__(self, k: str):
+ return self.arg_dict[k]
add_to_vs_project(env, env.core_sources)
add_to_vs_project(env, env.drivers_sources)
@@ -697,21 +777,24 @@ def generate_vs_project(env, num_jobs):
for header in glob_recursive("**/*.h"):
env.vs_incs.append(str(header))
- env["MSVSBUILDCOM"] = build_commandline("scons")
- env["MSVSREBUILDCOM"] = build_commandline("scons vsproj=yes")
- env["MSVSCLEANCOM"] = build_commandline("scons --clean")
-
- # This version information (Win32, x64, Debug, Release, Release_Debug seems to be
- # required for Visual Studio to understand that it needs to generate an NMAKE
- # project. Do not modify without knowing what you are doing.
- debug_variants = ["debug|Win32"] + ["debug|x64"]
- release_variants = ["release|Win32"] + ["release|x64"]
- release_debug_variants = ["release_debug|Win32"] + ["release_debug|x64"]
- variants = debug_variants + release_variants + release_debug_variants
- debug_targets = ["bin\\godot.windows.tools.32.exe"] + ["bin\\godot.windows.tools.64.exe"]
- release_targets = ["bin\\godot.windows.opt.32.exe"] + ["bin\\godot.windows.opt.64.exe"]
- release_debug_targets = ["bin\\godot.windows.opt.tools.32.exe"] + ["bin\\godot.windows.opt.tools.64.exe"]
- targets = debug_targets + release_targets + release_debug_targets
+ module_configs = ModuleConfigs()
+ import modules.mono.build_scripts.mono_reg_utils as mono_reg
+
+ if env.get("module_mono_enabled"):
+ mono_root = env.get("mono_prefix") or mono_reg.find_mono_root_dir(env["bits"])
+ if mono_root:
+ module_configs.add_mode(
+ "mono",
+ includes=os.path.join(mono_root, "include", "mono-2.0"),
+ cli_args="module_mono_enabled=yes mono_glue=yes",
+ defines=[("MONO_GLUE_ENABLED",)],
+ )
+ else:
+ print("Mono installation directory not found. Generated project will not have build variants for Mono.")
+
+ env["MSVSBUILDCOM"] = module_configs.build_commandline("scons")
+ env["MSVSREBUILDCOM"] = module_configs.build_commandline("scons vsproj=yes")
+ env["MSVSCLEANCOM"] = module_configs.build_commandline("scons --clean")
if not env.get("MSVS"):
env["MSVS"]["PROJECTSUFFIX"] = ".vcxproj"
env["MSVS"]["SOLUTIONSUFFIX"] = ".sln"
@@ -719,10 +802,8 @@ def generate_vs_project(env, num_jobs):
target=["#godot" + env["MSVSPROJECTSUFFIX"]],
incs=env.vs_incs,
srcs=env.vs_srcs,
- runfile=targets,
- buildtarget=targets,
auto_build_solution=1,
- variant=variants,
+ **module_configs,
)
else:
print("Could not locate Visual Studio batch file to set up the build environment. Not generating VS project.")
diff --git a/misc/dist/html/editor.html b/misc/dist/html/editor.html
index 2cae215951..69e267f665 100644
--- a/misc/dist/html/editor.html
+++ b/misc/dist/html/editor.html
@@ -14,7 +14,7 @@
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="msapplication-starturl" content="/latest" />
<meta property="og:site_name" content="Godot Engine Web Editor" />
- <meta property="og:url" name="twitter:url" content="https://editor.godotengine.org/releases/latest/" />
+ <meta property="og:url" name="twitter:url" content="https://editor.godotengine.org/releases/latest/" />
<meta property="og:title" name="twitter:title" content="Free and open source 2D and 3D game engine" />
<meta property="og:description" name="twitter:description" content="Use the Godot Engine editor directly in your web browser, without having to install anything." />
<meta property="og:image" name="twitter:image" content="https://godotengine.org/themes/godotengine/assets/og_image.png" />
@@ -269,11 +269,6 @@
<div id="tabs">
<div id="tab-loader">
<div style="color: #e0e0e0;" id="persistence">
- <label for="videoMode" style="display: none;">Select video driver:</label><br />
- <select id="videoMode" style="display: none;">
- <option value="GLES2" selected="selected">WebGL</option>
- <option value="GLES3">WebGL 2</option>
- </select>
<br />
<img src="logo.svg" alt="Godot Engine logo" width="1024" height="414" style="width: auto; height: auto; max-width: 85%; max-height: 250px" />
<br />
@@ -283,6 +278,14 @@
<br />
<br />
<br />
+ <label for="videoMode" style="margin-right: 1rem">Video driver:</label>
+ <select id="videoMode">
+ <option value="" selected="selected">Auto</option>
+ <option value="GLES2">WebGL</option>
+ <option value="GLES3">WebGL 2</option>
+ </select>
+ <br />
+ <br />
<label for="zip-file" style="margin-right: 1rem">Preload project ZIP:</label> <input id="zip-file" type="file" name="files" style="margin-bottom: 1rem"/>
<br />
<a href="demo.zip">(Try this for example)</a>
@@ -348,7 +351,7 @@
var game = null;
var setStatusMode;
var setStatusNotice;
- var video_driver = "GLES2";
+ var video_driver = "";
function clearPersistence() {
function deleteDB(path) {
@@ -479,6 +482,15 @@
animationCallbacks.push(adjustCanvasDimensions);
adjustCanvasDimensions();
+ function replaceCanvas(from) {
+ const out = document.createElement("canvas");
+ out.id = from.id;
+ out.tabIndex = from.tabIndex;
+ from.parentNode.replaceChild(out, from);
+ lastScale = 0;
+ return out;
+ }
+
setStatusMode = function setStatusMode(mode) {
if (statusMode === mode || !initializing)
return;
@@ -534,6 +546,7 @@
'canvas': gameCanvas,
'canvasResizePolicy': 1,
'onExit': function () {
+ gameCanvas = replaceCanvas(gameCanvas);
setGameTabEnabled(false);
showTab('editor');
game = null;
@@ -548,7 +561,7 @@
const is_editor = args.filter(function(v) { return v == '--editor' || v == '-e' }).length != 0;
const is_project_manager = args.filter(function(v) { return v == '--project-manager' }).length != 0;
const is_game = !is_editor && !is_project_manager;
- if (is_project_manager) {
+ if (video_driver) {
args.push('--video-driver', video_driver);
}
if (is_game) {
@@ -561,7 +574,7 @@
showTab('game');
game.init().then(function() {
requestAnimationFrame(function() {
- game.start({'args': args}).then(function() {
+ game.start({'args': args, 'canvas': gameCanvas}).then(function() {
gameCanvas.focus();
});
});
@@ -576,7 +589,7 @@
showTab('loader');
setLoaderEnabled(true);
};
- editor.start({'args': args, 'persistentDrops': is_project_manager});
+ editor.start({'args': args, 'persistentDrops': is_project_manager, 'canvas': editorCanvas});
});
}, 0);
OnEditorExit = null;
@@ -603,6 +616,7 @@
'canvas': editorCanvas,
'canvasResizePolicy': 0,
'onExit': function() {
+ editorCanvas = replaceCanvas(editorCanvas);
if (OnEditorExit) {
OnEditorExit();
}
@@ -634,10 +648,14 @@
} catch(e) {
// File exists
}
- //selectVideoMode();
+ selectVideoMode();
showTab('editor');
setLoaderEnabled(false);
- editor.start({'args': ['--project-manager', '--video-driver', video_driver], 'persistentDrops': true}).then(function() {
+ const args = ['--project-manager'];
+ if (video_driver) {
+ args.push('--video-driver', video_driver);
+ }
+ editor.start({'args': args, 'persistentDrops': true}).then(function() {
setStatusMode('hidden');
initializing = false;
});
diff --git a/misc/dist/osx/editor.entitlements b/misc/dist/osx/editor.entitlements
index 5496f65dcc..d0137910a3 100644
--- a/misc/dist/osx/editor.entitlements
+++ b/misc/dist/osx/editor.entitlements
@@ -2,11 +2,19 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
- <key>com.apple.security.device.audio-input</key>
+ <key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
- <key>com.apple.security.device.camera</key>
+ <key>com.apple.security.cs.allow-jit</key>
+ <true/>
+ <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
+ <true/>
+ <key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
+ <key>com.apple.security.device.audio-input</key>
+ <true/>
+ <key>com.apple.security.device.camera</key>
+ <true/>
</dict>
</plist>
diff --git a/misc/dist/osx/editor_mono.entitlements b/misc/dist/osx/editor_mono.entitlements
deleted file mode 100644
index c61c287652..0000000000
--- a/misc/dist/osx/editor_mono.entitlements
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>com.apple.security.cs.allow-dyld-environment-variables</key>
- <true/>
- <key>com.apple.security.cs.allow-jit</key>
- <true/>
- <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
- <true/>
- <key>com.apple.security.cs.disable-library-validation</key>
- <true/>
- <key>com.apple.security.device.audio-input</key>
- <true/>
- <key>com.apple.security.device.camera</key>
- <true/>
-</dict>
-</plist>
diff --git a/misc/hooks/pre-commit-clang-format b/misc/hooks/pre-commit-clang-format
index 81bc412944..3112f1af5f 100755
--- a/misc/hooks/pre-commit-clang-format
+++ b/misc/hooks/pre-commit-clang-format
@@ -77,10 +77,10 @@ fi
# To get consistent formatting, we recommend contributors to use the same
# clang-format version as CI.
RECOMMENDED_CLANG_FORMAT_MAJOR_MIN="11"
-RECOMMENDED_CLANG_FORMAT_MAJOR_MAX="12"
+RECOMMENDED_CLANG_FORMAT_MAJOR_MAX="13"
if [ ! -x "$CLANG_FORMAT" ] ; then
- message="Error: clang-format executable not found. Please install clang-format $RECOMMENDED_CLANG_FORMAT_MAJOR.x.x."
+ message="Error: clang-format executable not found. Please install clang-format $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX."
if [ ! -t 1 ] ; then
if [ -x "$ZENITY" ] ; then
@@ -108,7 +108,7 @@ CLANG_FORMAT_VERSION="$(clang-format --version | sed "s/[^0-9\.]*\([0-9\.]*\).*/
CLANG_FORMAT_MAJOR="$(echo "$CLANG_FORMAT_VERSION" | cut -d. -f1)"
if [[ "$CLANG_FORMAT_MAJOR" -lt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MIN" || "$CLANG_FORMAT_MAJOR" -gt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MAX" ]]; then
- echo "Warning: Your clang-format binary is the wrong version ($CLANG_FORMAT_VERSION, expected between $RECOMMENDED_CLANG_FORMAT_MAJOR_MIN.x.x and $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX.x.x)."
+ echo "Warning: Your clang-format binary is the wrong version ($CLANG_FORMAT_VERSION, expected between $RECOMMENDED_CLANG_FORMAT_MAJOR_MIN and $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX)."
echo " Consider upgrading or downgrading clang-format as formatting may not be applied correctly."
fi
diff --git a/misc/scripts/compare_extension_api.py b/misc/scripts/compare_extension_api.py
new file mode 100755
index 0000000000..f96db4278c
--- /dev/null
+++ b/misc/scripts/compare_extension_api.py
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import sys
+
+# TODO:
+# Add a process that compares the original godot-cpp/godot-headers/extension_api.json with the new extension_api.json (both passed as arguments) and reports any API calls that have been removed.
+# If we only have additions or no changes to the file, we pass
+# For now we deem this too early because the API isn't stable enough yet.
+
+sys.exit(0)
diff --git a/modules/bullet/area_bullet.h b/modules/bullet/area_bullet.h
index 7cf666c119..c8b516c951 100644
--- a/modules/bullet/area_bullet.h
+++ b/modules/bullet/area_bullet.h
@@ -145,7 +145,6 @@ public:
virtual void dispatch_callbacks();
void call_event(CollisionObjectBullet *p_otherObject, PhysicsServer3D::AreaBodyStatus p_status);
- void set_on_state_change(ObjectID p_id, const StringName &p_method, const Variant &p_udata = Variant());
void scratch();
void clear_overlaps(bool p_notify);
diff --git a/modules/bullet/soft_body_bullet.cpp b/modules/bullet/soft_body_bullet.cpp
index 81b832fb42..3a2370ff31 100644
--- a/modules/bullet/soft_body_bullet.cpp
+++ b/modules/bullet/soft_body_bullet.cpp
@@ -116,6 +116,7 @@ void SoftBodyBullet::set_soft_mesh(RID p_mesh) {
}
Array arrays = RenderingServer::get_singleton()->mesh_surface_get_arrays(soft_mesh, 0);
+ ERR_FAIL_COND(arrays.is_empty());
bool success = set_trimesh_body_shape(arrays[RS::ARRAY_INDEX], arrays[RS::ARRAY_VERTEX]);
if (!success) {
diff --git a/modules/denoise/config.py b/modules/denoise/config.py
index 49a1f036ed..6f650354cb 100644
--- a/modules/denoise/config.py
+++ b/modules/denoise/config.py
@@ -1,11 +1,12 @@
def can_build(env, platform):
# Thirdparty dependency OpenImage Denoise includes oneDNN library
- # which only supports 64-bit architectures.
+ # and the version we use only supports x86_64.
# It's also only relevant for tools build and desktop platforms,
# as doing lightmap generation and denoising on Android or HTML5
# would be a bit far-fetched.
desktop_platforms = ["linuxbsd", "osx", "windows"]
- return env["tools"] and platform in desktop_platforms and env["bits"] == "64" and env["arch"] != "arm64"
+ supported_arch = env["bits"] == "64" and env["arch"] != "arm64" and not env["arch"].startswith("rv")
+ return env["tools"] and platform in desktop_platforms and supported_arch
def configure(env):
diff --git a/modules/fbx/data/fbx_mesh_data.cpp b/modules/fbx/data/fbx_mesh_data.cpp
index 7343bf87af..e1eacc68b3 100644
--- a/modules/fbx/data/fbx_mesh_data.cpp
+++ b/modules/fbx/data/fbx_mesh_data.cpp
@@ -357,7 +357,6 @@ ImporterMeshInstance3D *FBXMeshData::create_fbx_mesh(const ImportState &state, c
mesh->set_blend_shape_mode(Mesh::BLEND_SHAPE_MODE_NORMALIZED);
// Add surfaces.
- int in_mesh_surface_id = 0;
for (const SurfaceId *surface_id = surfaces.next(nullptr); surface_id != nullptr; surface_id = surfaces.next(surface_id)) {
SurfaceData *surface = surfaces.getptr(*surface_id);
@@ -377,8 +376,6 @@ ImporterMeshInstance3D *FBXMeshData::create_fbx_mesh(const ImportState &state, c
} else {
mesh->add_surface(Mesh::PRIMITIVE_TRIANGLES, mesh_array, blend_shapes);
}
-
- in_mesh_surface_id += 1;
}
ImporterMeshInstance3D *godot_mesh = memnew(ImporterMeshInstance3D);
diff --git a/modules/fbx/data/fbx_skeleton.cpp b/modules/fbx/data/fbx_skeleton.cpp
index 3dc163964c..11eed2576f 100644
--- a/modules/fbx/data/fbx_skeleton.cpp
+++ b/modules/fbx/data/fbx_skeleton.cpp
@@ -104,6 +104,13 @@ void FBXSkeleton::init_skeleton(const ImportState &state) {
print_verbose("working on bone: " + itos(bone_index) + " bone name:" + bone->bone_name);
skeleton->set_bone_rest(bone->godot_bone_id, get_unscaled_transform(bone->node->pivot_transform->LocalTransform, state.scale));
+ {
+ Transform3D base_xform = bone->node->pivot_transform->LocalTransform;
+
+ skeleton->set_bone_pose_position(bone_index, base_xform.origin);
+ skeleton->set_bone_pose_rotation(bone_index, base_xform.basis.get_rotation_quaternion());
+ skeleton->set_bone_pose_scale(bone_index, base_xform.basis.get_scale());
+ }
// lookup parent ID
if (bone->valid_parent && state.fbx_bone_map.has(bone->parent_bone_id)) {
diff --git a/modules/fbx/editor_scene_importer_fbx.cpp b/modules/fbx/editor_scene_importer_fbx.cpp
index e4de204cf1..9bdeafbf91 100644
--- a/modules/fbx/editor_scene_importer_fbx.cpp
+++ b/modules/fbx/editor_scene_importer_fbx.cpp
@@ -56,7 +56,7 @@
#include <string>
-void EditorSceneImporterFBX::get_extensions(List<String> *r_extensions) const {
+void EditorSceneFormatImporterFBX::get_extensions(List<String> *r_extensions) const {
// register FBX as the one and only format for FBX importing
const String import_setting_string = "filesystem/import/fbx/";
const String fbx_str = "fbx";
@@ -65,7 +65,7 @@ void EditorSceneImporterFBX::get_extensions(List<String> *r_extensions) const {
_register_project_setting_import(fbx_str, import_setting_string, exts, r_extensions, true);
}
-void EditorSceneImporterFBX::_register_project_setting_import(const String generic,
+void EditorSceneFormatImporterFBX::_register_project_setting_import(const String generic,
const String import_setting_string,
const Vector<String> &exts,
List<String> *r_extensions,
@@ -79,11 +79,11 @@ void EditorSceneImporterFBX::_register_project_setting_import(const String gener
}
}
-uint32_t EditorSceneImporterFBX::get_import_flags() const {
+uint32_t EditorSceneFormatImporterFBX::get_import_flags() const {
return IMPORT_SCENE;
}
-Node3D *EditorSceneImporterFBX::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps,
+Node3D *EditorSceneFormatImporterFBX::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps,
List<String> *r_missing_deps, Error *r_err) {
// done for performance when re-importing lots of files when testing importer in verbose only!
if (OS::get_singleton()->is_stdout_verbose()) {
@@ -232,7 +232,7 @@ Node3D *EditorSceneImporterFBX::import_scene(const String &p_path, uint32_t p_fl
}
template <class T>
-struct EditorSceneImporterAssetImportInterpolate {
+struct EditorSceneFormatImporterAssetImportInterpolate {
T lerp(const T &a, const T &b, float c) const {
return a + (b - a) * c;
}
@@ -258,7 +258,7 @@ struct EditorSceneImporterAssetImportInterpolate {
//thank you for existing, partial specialization
template <>
-struct EditorSceneImporterAssetImportInterpolate<Quaternion> {
+struct EditorSceneFormatImporterAssetImportInterpolate<Quaternion> {
Quaternion lerp(const Quaternion &a, const Quaternion &b, float c) const {
ERR_FAIL_COND_V(!a.is_normalized(), Quaternion());
ERR_FAIL_COND_V(!b.is_normalized(), Quaternion());
@@ -282,7 +282,7 @@ struct EditorSceneImporterAssetImportInterpolate<Quaternion> {
};
template <class T>
-T EditorSceneImporterFBX::_interpolate_track(const Vector<float> &p_times, const Vector<T> &p_values, float p_time,
+T EditorSceneFormatImporterFBX::_interpolate_track(const Vector<float> &p_times, const Vector<T> &p_values, float p_time,
AssetImportAnimation::Interpolation p_interp) {
//could use binary search, worth it?
int idx = -1;
@@ -293,7 +293,7 @@ T EditorSceneImporterFBX::_interpolate_track(const Vector<float> &p_times, const
idx++;
}
- EditorSceneImporterAssetImportInterpolate<T> interp;
+ EditorSceneFormatImporterAssetImportInterpolate<T> interp;
switch (p_interp) {
case AssetImportAnimation::INTERP_LINEAR: {
@@ -352,7 +352,7 @@ T EditorSceneImporterFBX::_interpolate_track(const Vector<float> &p_times, const
ERR_FAIL_V(p_values[0]);
}
-Node3D *EditorSceneImporterFBX::_generate_scene(
+Node3D *EditorSceneFormatImporterFBX::_generate_scene(
const String &p_path,
const FBXDocParser::Document *p_document,
const uint32_t p_flags,
@@ -1011,9 +1011,7 @@ Node3D *EditorSceneImporterFBX::_generate_scene(
// track count is 5.
// next track id is 5.
const uint64_t target_id = track.key;
- int track_idx = animation->add_track(Animation::TYPE_TRANSFORM3D);
- // animation->track_set_path(track_idx, node_path);
Ref<FBXBone> bone;
// note we must not run the below code if the entry doesn't exist, it will create dummy entries which is very bad.
@@ -1037,22 +1035,21 @@ Node3D *EditorSceneImporterFBX::_generate_scene(
// if this is a skeleton mapped track we can just set the path for the track.
// todo: implement node paths here at some
+ NodePath track_path;
if (state.fbx_bone_map.size() > 0 && state.fbx_bone_map.has(target_id)) {
if (bone->fbx_skeleton.is_valid() && bone.is_valid()) {
Ref<FBXSkeleton> fbx_skeleton = bone->fbx_skeleton;
String bone_path = state.root->get_path_to(fbx_skeleton->skeleton);
bone_path += ":" + fbx_skeleton->skeleton->get_bone_name(bone->godot_bone_id);
print_verbose("[doc] track bone path: " + bone_path);
- NodePath path = bone_path;
- animation->track_set_path(track_idx, path);
+ track_path = bone_path;
}
} else if (state.fbx_target_map.has(target_id)) {
//print_verbose("[doc] we have a valid target for a node animation");
Ref<FBXNode> target_node = state.fbx_target_map[target_id];
if (target_node.is_valid() && target_node->godot_node != nullptr) {
String node_path = state.root->get_path_to(target_node->godot_node);
- NodePath path = node_path;
- animation->track_set_path(track_idx, path);
+ track_path = node_path;
//print_verbose("[doc] node animation path: " + node_path);
}
} else {
@@ -1186,6 +1183,30 @@ Node3D *EditorSceneImporterFBX::_generate_scene(
const Vector3 def_scale = scale_keys.has_default ? scale_keys.default_value : bone_rest.basis.get_scale();
print_verbose("track defaults: p(" + def_pos + ") s(" + def_scale + ") r(" + def_rot + ")");
+ int position_idx = -1;
+ if (pos_values.size()) {
+ position_idx = animation->get_track_count();
+ animation->add_track(Animation::TYPE_POSITION_3D);
+ animation->track_set_path(position_idx, track_path);
+ animation->track_set_imported(position_idx, true);
+ }
+
+ int rotation_idx = -1;
+ if (pos_values.size()) {
+ rotation_idx = animation->get_track_count();
+ animation->add_track(Animation::TYPE_ROTATION_3D);
+ animation->track_set_path(rotation_idx, track_path);
+ animation->track_set_imported(rotation_idx, true);
+ }
+
+ int scale_idx = -1;
+ if (pos_values.size()) {
+ scale_idx = animation->get_track_count();
+ animation->add_track(Animation::TYPE_SCALE_3D);
+ animation->track_set_path(scale_idx, track_path);
+ animation->track_set_imported(scale_idx, true);
+ }
+
while (true) {
Vector3 pos = def_pos;
Quaternion rot = def_rot;
@@ -1206,21 +1227,15 @@ Node3D *EditorSceneImporterFBX::_generate_scene(
AssetImportAnimation::INTERP_LINEAR);
}
- // node animations must also include pivots
- if (skeleton_bone >= 0) {
- Transform3D xform = Transform3D();
- xform.basis.set_quaternion_scale(rot, scale);
- xform.origin = pos;
- const Transform3D t = bone_rest.affine_inverse() * xform;
-
- // populate this again
- rot = t.basis.get_rotation_quaternion();
- rot.normalize();
- scale = t.basis.get_scale();
- pos = t.origin;
+ if (position_idx >= 0) {
+ animation->position_track_insert_key(position_idx, time, pos);
+ }
+ if (rotation_idx >= 0) {
+ animation->rotation_track_insert_key(rotation_idx, time, rot);
+ }
+ if (scale_idx >= 0) {
+ animation->scale_track_insert_key(scale_idx, time, scale);
}
-
- animation->transform_track_insert_key(track_idx, time, pos, rot, scale);
if (last) {
break;
@@ -1279,7 +1294,7 @@ Node3D *EditorSceneImporterFBX::_generate_scene(
return scene_root;
}
-void EditorSceneImporterFBX::BuildDocumentBones(Ref<FBXBone> p_parent_bone,
+void EditorSceneFormatImporterFBX::BuildDocumentBones(Ref<FBXBone> p_parent_bone,
ImportState &state, const FBXDocParser::Document *p_doc,
uint64_t p_id) {
const std::vector<const FBXDocParser::Connection *> &conns = p_doc->GetConnectionsByDestinationSequenced(p_id, "Model");
@@ -1368,7 +1383,7 @@ void EditorSceneImporterFBX::BuildDocumentBones(Ref<FBXBone> p_parent_bone,
}
}
-void EditorSceneImporterFBX::BuildDocumentNodes(
+void EditorSceneFormatImporterFBX::BuildDocumentNodes(
Ref<PivotTransform> parent_transform,
ImportState &state,
const FBXDocParser::Document *p_doc,
diff --git a/modules/fbx/editor_scene_importer_fbx.h b/modules/fbx/editor_scene_importer_fbx.h
index 4a3b78480b..7845e079c2 100644
--- a/modules/fbx/editor_scene_importer_fbx.h
+++ b/modules/fbx/editor_scene_importer_fbx.h
@@ -57,9 +57,9 @@
#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000LL
-class EditorSceneImporterFBX : public EditorSceneImporter {
+class EditorSceneFormatImporterFBX : public EditorSceneFormatImporter {
private:
- GDCLASS(EditorSceneImporterFBX, EditorSceneImporter);
+ GDCLASS(EditorSceneFormatImporterFBX, EditorSceneFormatImporter);
struct AssetImportAnimation {
enum Interpolation {
@@ -122,8 +122,8 @@ private:
void _register_project_setting_import(const String generic, const String import_setting_string, const Vector<String> &exts, List<String> *r_extensions, const bool p_enabled) const;
public:
- EditorSceneImporterFBX() {}
- ~EditorSceneImporterFBX() {}
+ EditorSceneFormatImporterFBX() {}
+ ~EditorSceneFormatImporterFBX() {}
virtual void get_extensions(List<String> *r_extensions) const override;
virtual uint32_t get_import_flags() const override;
diff --git a/modules/fbx/register_types.cpp b/modules/fbx/register_types.cpp
index a75da8f3a9..d5e520a060 100644
--- a/modules/fbx/register_types.cpp
+++ b/modules/fbx/register_types.cpp
@@ -35,7 +35,7 @@
#ifdef TOOLS_ENABLED
static void _editor_init() {
- Ref<EditorSceneImporterFBX> import_fbx;
+ Ref<EditorSceneFormatImporterFBX> import_fbx;
import_fbx.instantiate();
ResourceImporterScene::get_singleton()->add_importer(import_fbx);
}
@@ -46,7 +46,7 @@ void register_fbx_types() {
ClassDB::APIType prev_api = ClassDB::get_current_api();
ClassDB::set_current_api(ClassDB::API_EDITOR);
- GDREGISTER_CLASS(EditorSceneImporterFBX);
+ GDREGISTER_CLASS(EditorSceneFormatImporterFBX);
ClassDB::set_current_api(prev_api);
diff --git a/modules/gdnative/gdnative/gdnative.cpp b/modules/gdnative/gdnative/gdnative.cpp
index b84ce2d192..e0de1a0505 100644
--- a/modules/gdnative/gdnative/gdnative.cpp
+++ b/modules/gdnative/gdnative/gdnative.cpp
@@ -129,13 +129,13 @@ void GDAPI godot_free(void *p_ptr) {
// Helper print functions.
void GDAPI godot_print_error(const char *p_description, const char *p_function, const char *p_file, int p_line) {
- _err_print_error(p_function, p_file, p_line, p_description, ERR_HANDLER_ERROR);
+ _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_ERROR);
}
void GDAPI godot_print_warning(const char *p_description, const char *p_function, const char *p_file, int p_line) {
- _err_print_error(p_function, p_file, p_line, p_description, ERR_HANDLER_WARNING);
+ _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_WARNING);
}
void GDAPI godot_print_script_error(const char *p_description, const char *p_function, const char *p_file, int p_line) {
- _err_print_error(p_function, p_file, p_line, p_description, ERR_HANDLER_SCRIPT);
+ _err_print_error(p_function, p_file, p_line, p_description, false, ERR_HANDLER_SCRIPT);
}
void _gdnative_report_version_mismatch(const godot_object *p_library, const char *p_ext, godot_gdnative_api_version p_want, godot_gdnative_api_version p_have) {
diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp
index fb46bafb3c..368eb67fa6 100644
--- a/modules/gdnative/nativescript/nativescript.cpp
+++ b/modules/gdnative/nativescript/nativescript.cpp
@@ -1139,15 +1139,12 @@ void NativeScriptLanguage::profiling_start() {
MutexLock lock(mutex);
profile_data.clear();
- profiling = true;
#endif
}
void NativeScriptLanguage::profiling_stop() {
#ifdef DEBUG_ENABLED
MutexLock lock(mutex);
-
- profiling = false;
#endif
}
diff --git a/modules/gdnative/nativescript/nativescript.h b/modules/gdnative/nativescript/nativescript.h
index a7647e8c59..2364c6c0f6 100644
--- a/modules/gdnative/nativescript/nativescript.h
+++ b/modules/gdnative/nativescript/nativescript.h
@@ -269,7 +269,6 @@ private:
};
Map<StringName, ProfileData> profile_data;
- bool profiling = false;
public:
// These two maps must only be touched on the main thread
@@ -295,8 +294,6 @@ public:
return singleton;
}
- void _hacky_api_anchor();
-
_FORCE_INLINE_ void set_language_index(int p_idx) { lang_idx = p_idx; }
#ifndef NO_THREADS
diff --git a/modules/gdnative/pluginscript/pluginscript_instance.h b/modules/gdnative/pluginscript/pluginscript_instance.h
index bdae265db2..81e711bafc 100644
--- a/modules/gdnative/pluginscript/pluginscript_instance.h
+++ b/modules/gdnative/pluginscript/pluginscript_instance.h
@@ -69,8 +69,6 @@ public:
virtual ScriptLanguage *get_language();
- void set_path(const String &p_path);
-
virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const;
virtual void refcount_incremented();
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp
index 2bae838543..42865242d3 100644
--- a/modules/gdscript/gdscript.cpp
+++ b/modules/gdscript/gdscript.cpp
@@ -545,7 +545,7 @@ void GDScript::_update_doc() {
for (int i = 0; i < signals.size(); i++) {
DocData::MethodDoc signal_doc;
if (doc_signals.has(signals[i].name)) {
- DocData::signal_doc_from_methodinfo(signal_doc, signals[i], signals[i].name);
+ DocData::signal_doc_from_methodinfo(signal_doc, signals[i], doc_signals[signals[i].name]);
} else {
DocData::signal_doc_from_methodinfo(signal_doc, signals[i], String());
}
@@ -835,7 +835,7 @@ Error GDScript::reload(bool p_keep_state) {
GDScriptLanguage::get_singleton()->debug_break_parse(get_path(), parser.get_errors().front()->get().line, "Parser Error: " + parser.get_errors().front()->get().message);
}
// TODO: Show all error messages.
- _err_print_error("GDScript::reload", path.is_empty() ? "built-in" : (const char *)path.utf8().get_data(), parser.get_errors().front()->get().line, ("Parse Error: " + parser.get_errors().front()->get().message).utf8().get_data(), ERR_HANDLER_SCRIPT);
+ _err_print_error("GDScript::reload", path.is_empty() ? "built-in" : (const char *)path.utf8().get_data(), parser.get_errors().front()->get().line, ("Parse Error: " + parser.get_errors().front()->get().message).utf8().get_data(), false, ERR_HANDLER_SCRIPT);
ERR_FAIL_V(ERR_PARSE_ERROR);
}
@@ -849,7 +849,7 @@ Error GDScript::reload(bool p_keep_state) {
const List<GDScriptParser::ParserError>::Element *e = parser.get_errors().front();
while (e != nullptr) {
- _err_print_error("GDScript::reload", path.is_empty() ? "built-in" : (const char *)path.utf8().get_data(), e->get().line, ("Parse Error: " + e->get().message).utf8().get_data(), ERR_HANDLER_SCRIPT);
+ _err_print_error("GDScript::reload", path.is_empty() ? "built-in" : (const char *)path.utf8().get_data(), e->get().line, ("Parse Error: " + e->get().message).utf8().get_data(), false, ERR_HANDLER_SCRIPT);
e = e->next();
}
ERR_FAIL_V(ERR_PARSE_ERROR);
@@ -869,7 +869,7 @@ Error GDScript::reload(bool p_keep_state) {
if (EngineDebugger::is_active()) {
GDScriptLanguage::get_singleton()->debug_break_parse(get_path(), compiler.get_error_line(), "Parser Error: " + compiler.get_error());
}
- _err_print_error("GDScript::reload", path.is_empty() ? "built-in" : (const char *)path.utf8().get_data(), compiler.get_error_line(), ("Compile Error: " + compiler.get_error()).utf8().get_data(), ERR_HANDLER_SCRIPT);
+ _err_print_error("GDScript::reload", path.is_empty() ? "built-in" : (const char *)path.utf8().get_data(), compiler.get_error_line(), ("Compile Error: " + compiler.get_error()).utf8().get_data(), false, ERR_HANDLER_SCRIPT);
ERR_FAIL_V(ERR_COMPILATION_FAILED);
} else {
return err;
@@ -879,7 +879,7 @@ Error GDScript::reload(bool p_keep_state) {
for (const GDScriptWarning &warning : parser.get_warnings()) {
if (EngineDebugger::is_active()) {
Vector<ScriptLanguage::StackInfo> si;
- EngineDebugger::get_script_debugger()->send_error("", get_path(), warning.start_line, warning.get_name(), warning.get_message(), ERR_HANDLER_WARNING, si);
+ EngineDebugger::get_script_debugger()->send_error("", get_path(), warning.start_line, warning.get_name(), warning.get_message(), false, ERR_HANDLER_WARNING, si);
}
}
#endif
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index fd7664049a..cd8fd361c5 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -470,6 +470,8 @@ GDScriptParser::DataType GDScriptAnalyzer::resolve_datatype(GDScriptParser::Type
GDScriptParser::DataType container_type = resolve_datatype(p_type->container_type);
if (container_type.kind != GDScriptParser::DataType::VARIANT) {
+ container_type.is_meta_type = false;
+ container_type.is_constant = false;
result.set_container_element_type(container_type);
}
}
@@ -893,11 +895,13 @@ void GDScriptAnalyzer::resolve_class_body(GDScriptParser::ClassNode *p_class) {
resolve_function_body(member.variable->getter);
}
if (member.variable->setter != nullptr) {
+ resolve_function_signature(member.variable->setter);
+
if (member.variable->setter->parameters.size() > 0) {
member.variable->setter->parameters[0]->datatype_specifier = member.variable->datatype_specifier;
+ member.variable->setter->parameters[0]->set_datatype(member.get_datatype());
}
- resolve_function_signature(member.variable->setter);
resolve_function_body(member.variable->setter);
}
}
@@ -976,7 +980,7 @@ void GDScriptAnalyzer::resolve_class_body(GDScriptParser::ClassNode *p_class) {
has_valid_setter = true;
#ifdef DEBUG_ENABLED
- if (member.variable->datatype.builtin_type == Variant::INT && setter_function->return_type->datatype.builtin_type == Variant::FLOAT) {
+ if (member.variable->datatype.builtin_type == Variant::FLOAT && setter_function->parameters[0]->datatype.builtin_type == Variant::INT) {
parser->push_warning(member.variable, GDScriptWarning::NARROWING_CONVERSION);
}
#endif
@@ -1066,7 +1070,7 @@ void GDScriptAnalyzer::resolve_node(GDScriptParser::Node *p_node) {
case GDScriptParser::Node::SUBSCRIPT:
case GDScriptParser::Node::TERNARY_OPERATOR:
case GDScriptParser::Node::UNARY_OPERATOR:
- reduce_expression(static_cast<GDScriptParser::ExpressionNode *>(p_node));
+ reduce_expression(static_cast<GDScriptParser::ExpressionNode *>(p_node), true);
break;
case GDScriptParser::Node::BREAK:
case GDScriptParser::Node::BREAKPOINT:
@@ -1655,7 +1659,7 @@ void GDScriptAnalyzer::resolve_return(GDScriptParser::ReturnNode *p_return) {
p_return->set_datatype(result);
}
-void GDScriptAnalyzer::reduce_expression(GDScriptParser::ExpressionNode *p_expression) {
+void GDScriptAnalyzer::reduce_expression(GDScriptParser::ExpressionNode *p_expression, bool p_is_root) {
// This one makes some magic happen.
if (p_expression == nullptr) {
@@ -1683,7 +1687,7 @@ void GDScriptAnalyzer::reduce_expression(GDScriptParser::ExpressionNode *p_expre
reduce_binary_op(static_cast<GDScriptParser::BinaryOpNode *>(p_expression));
break;
case GDScriptParser::Node::CALL:
- reduce_call(static_cast<GDScriptParser::CallNode *>(p_expression));
+ reduce_call(static_cast<GDScriptParser::CallNode *>(p_expression), p_is_root);
break;
case GDScriptParser::Node::CAST:
reduce_cast(static_cast<GDScriptParser::CastNode *>(p_expression));
@@ -1799,6 +1803,7 @@ void GDScriptAnalyzer::update_array_literal_element_type(const GDScriptParser::D
}
}
if (all_same_type) {
+ element_type.is_constant = false;
array_type.set_container_element_type(element_type);
} else if (all_have_type) {
push_error(vformat(R"(Variant array is not compatible with an array of type "%s".)", p_base_type.get_container_element_type().to_string()), p_array_literal);
@@ -1924,16 +1929,25 @@ void GDScriptAnalyzer::reduce_await(GDScriptParser::AwaitNode *p_await) {
p_await->set_datatype(await_type);
return;
}
+
+ GDScriptParser::DataType awaiting_type;
+
if (p_await->to_await->type == GDScriptParser::Node::CALL) {
reduce_call(static_cast<GDScriptParser::CallNode *>(p_await->to_await), true);
+ awaiting_type = p_await->to_await->get_datatype();
} else {
reduce_expression(p_await->to_await);
}
- p_await->is_constant = p_await->to_await->is_constant;
- p_await->reduced_value = p_await->to_await->reduced_value;
+ if (p_await->to_await->is_constant) {
+ p_await->is_constant = p_await->to_await->is_constant;
+ p_await->reduced_value = p_await->to_await->reduced_value;
- GDScriptParser::DataType awaiting_type = p_await->to_await->get_datatype();
+ awaiting_type = p_await->to_await->get_datatype();
+ } else {
+ awaiting_type.kind = GDScriptParser::DataType::VARIANT;
+ awaiting_type.type_source = GDScriptParser::DataType::UNDETECTED;
+ }
p_await->set_datatype(awaiting_type);
@@ -2053,7 +2067,7 @@ void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_o
p_binary_op->set_datatype(result);
}
-void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool is_await) {
+void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_await, bool p_is_root) {
bool all_is_constant = true;
Map<int, GDScriptParser::ArrayNode *> arrays; // For array literal to potentially type when passing.
for (int i = 0; i < p_call->arguments.size(); i++) {
@@ -2412,7 +2426,7 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool is_awa
}
}
- if (call_type.is_coroutine && !is_await) {
+ if (call_type.is_coroutine && !p_is_await && !p_is_root) {
push_error(vformat(R"*(Function "%s()" is a coroutine, so it must be called with "await".)*", p_call->function_name), p_call->callee);
}
@@ -2680,6 +2694,11 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
p_identifier->is_constant = false;
return;
} break;
+ case GDScriptParser::ClassNode::Member::CLASS: {
+ resolve_class_interface(member.m_class);
+ p_identifier->set_datatype(member.m_class->get_datatype());
+ return;
+ } break;
default:
break;
}
@@ -3481,6 +3500,7 @@ GDScriptParser::DataType GDScriptAnalyzer::type_from_property(const PropertyInfo
} else {
ERR_FAIL_V_MSG(result, "Could not find element type from property hint of a typed array.");
}
+ elem_type.is_constant = false;
result.set_container_element_type(elem_type);
}
}
diff --git a/modules/gdscript/gdscript_analyzer.h b/modules/gdscript/gdscript_analyzer.h
index 2e17e15452..ce4525190b 100644
--- a/modules/gdscript/gdscript_analyzer.h
+++ b/modules/gdscript/gdscript_analyzer.h
@@ -78,12 +78,12 @@ class GDScriptAnalyzer {
void resolve_return(GDScriptParser::ReturnNode *p_return);
// Reduction functions.
- void reduce_expression(GDScriptParser::ExpressionNode *p_expression);
+ void reduce_expression(GDScriptParser::ExpressionNode *p_expression, bool p_is_root = false);
void reduce_array(GDScriptParser::ArrayNode *p_array);
void reduce_assignment(GDScriptParser::AssignmentNode *p_assignment);
void reduce_await(GDScriptParser::AwaitNode *p_await);
void reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_op);
- void reduce_call(GDScriptParser::CallNode *p_call, bool is_await = false);
+ void reduce_call(GDScriptParser::CallNode *p_call, bool p_is_await = false, bool p_is_root = false);
void reduce_cast(GDScriptParser::CastNode *p_cast);
void reduce_dictionary(GDScriptParser::DictionaryNode *p_dictionary);
void reduce_get_node(GDScriptParser::GetNodeNode *p_get_node);
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index 1f9aad40af..ab0fe5c37d 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -488,6 +488,9 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
const GDScriptParser::CallNode *call = static_cast<const GDScriptParser::CallNode *>(p_expression);
GDScriptDataType type = _gdtype_from_datatype(call->get_datatype());
GDScriptCodeGenerator::Address result = codegen.add_temporary(type);
+ GDScriptCodeGenerator::Address nil = GDScriptCodeGenerator::Address(GDScriptCodeGenerator::Address::NIL);
+
+ GDScriptCodeGenerator::Address return_addr = p_root ? nil : result;
Vector<GDScriptCodeGenerator::Address> arguments;
for (int i = 0; i < call->arguments.size(); i++) {
@@ -538,13 +541,13 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
if (within_await) {
gen->write_call_async(result, self, call->function_name, arguments);
} else {
- gen->write_call(result, self, call->function_name, arguments);
+ gen->write_call(return_addr, self, call->function_name, arguments);
}
} else {
if (within_await) {
gen->write_call_self_async(result, call->function_name, arguments);
} else {
- gen->write_call_self(result, call->function_name, arguments);
+ gen->write_call_self(return_addr, call->function_name, arguments);
}
}
} else if (callee->type == GDScriptParser::Node::SUBSCRIPT) {
@@ -579,12 +582,12 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
gen->write_call_method_bind(result, base, method, arguments);
}
} else {
- gen->write_call(result, base, call->function_name, arguments);
+ gen->write_call(return_addr, base, call->function_name, arguments);
}
} else if (base.type.has_type && base.type.kind == GDScriptDataType::BUILTIN) {
gen->write_call_builtin_type(result, base, base.type.builtin_type, call->function_name, arguments);
} else {
- gen->write_call(result, base, call->function_name, arguments);
+ gen->write_call(return_addr, base, call->function_name, arguments);
}
if (base.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
gen->pop_temporary();
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index 40be5cb324..7ddb9b93b4 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -967,15 +967,17 @@ void GDScriptParser::parse_property_setter(VariableNode *p_variable) {
ParameterNode *parameter = alloc_node<ParameterNode>();
parameter->identifier = p_variable->setter_parameter;
- function->parameters_indices[parameter->identifier->name] = 0;
- function->parameters.push_back(parameter);
+ if (parameter->identifier != nullptr) {
+ function->parameters_indices[parameter->identifier->name] = 0;
+ function->parameters.push_back(parameter);
- SuiteNode *body = alloc_node<SuiteNode>();
- body->add_local(parameter, function);
+ SuiteNode *body = alloc_node<SuiteNode>();
+ body->add_local(parameter, function);
- function->body = parse_suite("setter declaration", body);
+ function->body = parse_suite("setter declaration", body);
+ p_variable->setter = function;
+ }
- p_variable->setter = function;
current_function = previous_function;
break;
}
diff --git a/modules/gdscript/gdscript_vm.cpp b/modules/gdscript/gdscript_vm.cpp
index 1bc7ae086f..40f03979c6 100644
--- a/modules/gdscript/gdscript_vm.cpp
+++ b/modules/gdscript/gdscript_vm.cpp
@@ -2098,8 +2098,10 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
}
if (result.get_type() != Variant::SIGNAL) {
+ // Not async, return immediately using the target from OPCODE_AWAIT_RESUME.
+ GET_VARIANT_PTR(target, 3);
+ *target = result;
ip += 4; // Skip OPCODE_AWAIT_RESUME and its data.
- // The stack pointer should be the same, so we don't need to set a return value.
is_signal = false;
} else {
sig = result;
@@ -3313,7 +3315,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
if (!GDScriptLanguage::get_singleton()->debug_break(err_text, false)) {
// debugger break did not happen
- _err_print_error(err_func.utf8().get_data(), err_file.utf8().get_data(), err_line, err_text.utf8().get_data(), ERR_HANDLER_SCRIPT);
+ _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
diff --git a/modules/gdscript/language_server/gdscript_language_server.h b/modules/gdscript/language_server/gdscript_language_server.h
index 85a44a8cc1..f1413f0133 100644
--- a/modules/gdscript/language_server/gdscript_language_server.h
+++ b/modules/gdscript/language_server/gdscript_language_server.h
@@ -50,10 +50,8 @@ class GDScriptLanguageServer : public EditorPlugin {
private:
void _notification(int p_what);
- void _iteration();
public:
- Error parse_script_file(const String &p_path);
GDScriptLanguageServer();
void start();
void stop();
diff --git a/modules/gdscript/tests/gdscript_test_runner.cpp b/modules/gdscript/tests/gdscript_test_runner.cpp
index 50c1f68440..d2e71efee7 100644
--- a/modules/gdscript/tests/gdscript_test_runner.cpp
+++ b/modules/gdscript/tests/gdscript_test_runner.cpp
@@ -334,7 +334,7 @@ void GDScriptTest::print_handler(void *p_this, const String &p_message, bool p_e
result->output += p_message + "\n";
}
-void GDScriptTest::error_handler(void *p_this, const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_explanation, ErrorHandlerType p_type) {
+void GDScriptTest::error_handler(void *p_this, const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_explanation, bool p_editor_notify, ErrorHandlerType p_type) {
ErrorHandlerData *data = (ErrorHandlerData *)p_this;
GDScriptTest *self = data->self;
TestResult *result = data->result;
diff --git a/modules/gdscript/tests/gdscript_test_runner.h b/modules/gdscript/tests/gdscript_test_runner.h
index 9b2d14a371..98c57dc97c 100644
--- a/modules/gdscript/tests/gdscript_test_runner.h
+++ b/modules/gdscript/tests/gdscript_test_runner.h
@@ -87,7 +87,7 @@ private:
public:
static void print_handler(void *p_this, const String &p_message, bool p_error);
- static void error_handler(void *p_this, const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_explanation, ErrorHandlerType p_type);
+ static void error_handler(void *p_this, const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_explanation, bool p_editor_notify, ErrorHandlerType p_type);
TestResult run_test();
bool generate_output();
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.gd b/modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.gd
new file mode 100644
index 0000000000..3bbee5f5f7
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.gd
@@ -0,0 +1,8 @@
+var with_setter := 0:
+ set(val):
+ var x: String = val
+ with_setter = val
+
+func test():
+ with_setter = 1
+ print(with_setter)
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.out b/modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.out
new file mode 100644
index 0000000000..9eb2a42ccd
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.out
@@ -0,0 +1,2 @@
+GDTEST_ANALYZER_ERROR
+Value of type "int" cannot be assigned to a variable of type "String".
diff --git a/modules/gdscript/tests/scripts/analyzer/features/class_from_parent.gd b/modules/gdscript/tests/scripts/analyzer/features/class_from_parent.gd
new file mode 100644
index 0000000000..30e7deb05a
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/class_from_parent.gd
@@ -0,0 +1,19 @@
+class A:
+ var x = 3
+
+class B:
+ var x = 4
+
+class C:
+ var x = 5
+
+class Test:
+ var a = A.new()
+ var b: B = B.new()
+ var c := C.new()
+
+func test():
+ var test_instance := Test.new()
+ prints(test_instance.a.x)
+ prints(test_instance.b.x)
+ prints(test_instance.c.x)
diff --git a/modules/gdscript/tests/scripts/analyzer/features/class_from_parent.out b/modules/gdscript/tests/scripts/analyzer/features/class_from_parent.out
new file mode 100644
index 0000000000..a078e62cc7
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/class_from_parent.out
@@ -0,0 +1,4 @@
+GDTEST_OK
+3
+4
+5
diff --git a/modules/gdscript/tests/scripts/analyzer/features/typed_array_inferred_access_isnt_constant.gd b/modules/gdscript/tests/scripts/analyzer/features/typed_array_inferred_access_isnt_constant.gd
new file mode 100644
index 0000000000..55c40cb971
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/typed_array_inferred_access_isnt_constant.gd
@@ -0,0 +1,6 @@
+# https://github.com/godotengine/godot/issues/53640
+
+func test():
+ var arr := [0]
+ arr[0] = 1
+ print(arr[0])
diff --git a/modules/gdscript/tests/scripts/analyzer/features/typed_array_inferred_access_isnt_constant.out b/modules/gdscript/tests/scripts/analyzer/features/typed_array_inferred_access_isnt_constant.out
new file mode 100644
index 0000000000..a7f1357bb2
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/typed_array_inferred_access_isnt_constant.out
@@ -0,0 +1,2 @@
+GDTEST_OK
+1
diff --git a/modules/gdscript/tests/scripts/analyzer/features/typed_array_with_custom_class.gd b/modules/gdscript/tests/scripts/analyzer/features/typed_array_with_custom_class.gd
new file mode 100644
index 0000000000..9502f6e196
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/typed_array_with_custom_class.gd
@@ -0,0 +1,10 @@
+class Inner:
+ var prop = "Inner"
+
+
+var array: Array[Inner] = [Inner.new()]
+
+
+func test():
+ var element: Inner = array[0]
+ print(element.prop)
diff --git a/modules/gdscript/tests/scripts/analyzer/features/typed_array_with_custom_class.out b/modules/gdscript/tests/scripts/analyzer/features/typed_array_with_custom_class.out
new file mode 100644
index 0000000000..8f250d2632
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/typed_array_with_custom_class.out
@@ -0,0 +1,2 @@
+GDTEST_OK
+Inner
diff --git a/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.gd b/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.gd
new file mode 100644
index 0000000000..18174eae67
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.gd
@@ -0,0 +1,32 @@
+# https://github.com/godotengine/godot/issues/48121
+
+func test():
+ var x := []
+ var y := []
+ x.push_back(y)
+ print("TEST ARRAY ADD TO SELF: " + str(len(y)))
+ x.clear()
+
+ x = Array()
+ y = Array()
+ x.push_back(y)
+ print("TEST ARRAY ADD TO SELF: " + str(len(y)))
+ x.clear()
+
+ x = Array().duplicate()
+ y = Array().duplicate()
+ x.push_back(y)
+ print("TEST ARRAY ADD TO SELF: " + str(len(y)))
+ x.clear()
+
+ x = [].duplicate()
+ y = [].duplicate()
+ x.push_back(y)
+ print("TEST ARRAY ADD TO SELF: " + str(len(y)))
+ x.clear()
+
+ x = Array()
+ y = Array()
+ x.push_back(y)
+ print("TEST ARRAY ADD TO SELF: " + str(len(y)))
+ x.clear()
diff --git a/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.out b/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.out
new file mode 100644
index 0000000000..f6b7d3cc39
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.out
@@ -0,0 +1,6 @@
+GDTEST_OK
+TEST ARRAY ADD TO SELF: 0
+TEST ARRAY ADD TO SELF: 0
+TEST ARRAY ADD TO SELF: 0
+TEST ARRAY ADD TO SELF: 0
+TEST ARRAY ADD TO SELF: 0
diff --git a/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.gd b/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.gd
new file mode 100644
index 0000000000..9da61ab184
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.gd
@@ -0,0 +1,8 @@
+# https://github.com/godotengine/godot/issues/50894
+
+func test():
+ print(await not_coroutine())
+
+
+func not_coroutine():
+ return "awaited"
diff --git a/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.out b/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.out
new file mode 100644
index 0000000000..c2ac488e9b
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.out
@@ -0,0 +1,6 @@
+GDTEST_OK
+>> WARNING
+>> Line: 4
+>> REDUNDANT_AWAIT
+>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
+awaited
diff --git a/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.gd b/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.gd
new file mode 100644
index 0000000000..d5a5f8de64
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.gd
@@ -0,0 +1,19 @@
+# https://github.com/godotengine/godot/issues/48121
+
+func test():
+ var x := Dictionary()
+ var y := Dictionary()
+ y[0]=1
+ y[1]=1
+ y[2]=1
+ print("TEST OTHER DICTIONARY: " + str(len(x)))
+ x.clear()
+
+ x = Dictionary().duplicate()
+ y = Dictionary().duplicate()
+ y[0]=1
+ y[1]=1
+ y[2]=1
+ print("TEST OTHER DICTIONARY: " + str(len(x)))
+ x.clear()
+ return
diff --git a/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.out b/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.out
new file mode 100644
index 0000000000..0bf49f5934
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.out
@@ -0,0 +1,3 @@
+GDTEST_OK
+TEST OTHER DICTIONARY: 0
+TEST OTHER DICTIONARY: 0
diff --git a/modules/gltf/editor_scene_importer_gltf.cpp b/modules/gltf/editor_scene_importer_gltf.cpp
index 25875e7396..1a172877a0 100644
--- a/modules/gltf/editor_scene_importer_gltf.cpp
+++ b/modules/gltf/editor_scene_importer_gltf.cpp
@@ -38,16 +38,16 @@
#include "scene/animation/animation_player.h"
#include "scene/resources/animation.h"
-uint32_t EditorSceneImporterGLTF::get_import_flags() const {
+uint32_t EditorSceneFormatImporterGLTF::get_import_flags() const {
return ImportFlags::IMPORT_SCENE | ImportFlags::IMPORT_ANIMATION;
}
-void EditorSceneImporterGLTF::get_extensions(List<String> *r_extensions) const {
+void EditorSceneFormatImporterGLTF::get_extensions(List<String> *r_extensions) const {
r_extensions->push_back("gltf");
r_extensions->push_back("glb");
}
-Node *EditorSceneImporterGLTF::import_scene(const String &p_path,
+Node *EditorSceneFormatImporterGLTF::import_scene(const String &p_path,
uint32_t p_flags, int p_bake_fps,
List<String> *r_missing_deps,
Error *r_err) {
@@ -56,7 +56,7 @@ Node *EditorSceneImporterGLTF::import_scene(const String &p_path,
return doc->import_scene_gltf(p_path, p_flags, p_bake_fps, Ref<GLTFState>(), r_missing_deps, r_err);
}
-Ref<Animation> EditorSceneImporterGLTF::import_animation(const String &p_path,
+Ref<Animation> EditorSceneFormatImporterGLTF::import_animation(const String &p_path,
uint32_t p_flags,
int p_bake_fps) {
return Ref<Animation>();
diff --git a/modules/gltf/editor_scene_importer_gltf.h b/modules/gltf/editor_scene_importer_gltf.h
index 90663612a1..28963adc28 100644
--- a/modules/gltf/editor_scene_importer_gltf.h
+++ b/modules/gltf/editor_scene_importer_gltf.h
@@ -41,8 +41,8 @@
class Animation;
-class EditorSceneImporterGLTF : public EditorSceneImporter {
- GDCLASS(EditorSceneImporterGLTF, EditorSceneImporter);
+class EditorSceneFormatImporterGLTF : public EditorSceneFormatImporter {
+ GDCLASS(EditorSceneFormatImporterGLTF, EditorSceneFormatImporter);
public:
virtual uint32_t get_import_flags() const override;
diff --git a/modules/gltf/gltf_document.cpp b/modules/gltf/gltf_document.cpp
index ba98592600..0df08a7996 100644
--- a/modules/gltf/gltf_document.cpp
+++ b/modules/gltf/gltf_document.cpp
@@ -247,7 +247,7 @@ Error GLTFDocument::_parse_json(const String &p_path, Ref<GLTFState> state) {
JSON json;
err = json.parse(text);
if (err != OK) {
- _err_print_error("", p_path.utf8().get_data(), json.get_error_line(), json.get_error_message().utf8().get_data(), ERR_HANDLER_SCRIPT);
+ _err_print_error("", p_path.utf8().get_data(), json.get_error_line(), json.get_error_message().utf8().get_data(), false, ERR_HANDLER_SCRIPT);
return err;
}
state->json = json.get_data();
@@ -282,7 +282,7 @@ Error GLTFDocument::_parse_glb(const String &p_path, Ref<GLTFState> state) {
JSON json;
err = json.parse(text);
if (err != OK) {
- _err_print_error("", p_path.utf8().get_data(), json.get_error_line(), json.get_error_message().utf8().get_data(), ERR_HANDLER_SCRIPT);
+ _err_print_error("", p_path.utf8().get_data(), json.get_error_line(), json.get_error_message().utf8().get_data(), false, ERR_HANDLER_SCRIPT);
return err;
}
@@ -4319,6 +4319,9 @@ Error GLTFDocument::_create_skeletons(Ref<GLTFState> state) {
skeleton->add_bone(node->get_name());
skeleton->set_bone_rest(bone_index, node->xform);
+ skeleton->set_bone_pose_position(bone_index, node->position);
+ skeleton->set_bone_pose_rotation(bone_index, node->rotation.normalized());
+ skeleton->set_bone_pose_scale(bone_index, node->scale);
if (node->parent >= 0 && state->nodes[node->parent]->skeleton == skel_i) {
const int bone_parent = skeleton->find_bone(state->nodes[node->parent]->get_name());
@@ -5470,7 +5473,7 @@ void GLTFDocument::_convert_skeleton_to_gltf(Skeleton3D *p_skeleton3d, Ref<GLTFS
// Note that we cannot use _gen_unique_bone_name here, because glTF spec requires all node
// names to be unique regardless of whether or not they are used as joints.
joint_node->set_name(_gen_unique_name(state, skeleton->get_bone_name(bone_i)));
- Transform3D xform = skeleton->get_bone_rest(bone_i) * skeleton->get_bone_pose(bone_i);
+ Transform3D xform = skeleton->get_bone_pose(bone_i);
joint_node->scale = xform.basis.get_scale();
joint_node->rotation = xform.basis.get_rotation_quaternion();
joint_node->position = xform.origin;
@@ -5681,7 +5684,7 @@ void GLTFDocument::_generate_skeleton_bone_node(Ref<GLTFState> state, Node *scen
}
template <class T>
-struct EditorSceneImporterGLTFInterpolate {
+struct EditorSceneFormatImporterGLTFInterpolate {
T lerp(const T &a, const T &b, float c) const {
return a + (b - a) * c;
}
@@ -5707,7 +5710,7 @@ struct EditorSceneImporterGLTFInterpolate {
// thank you for existing, partial specialization
template <>
-struct EditorSceneImporterGLTFInterpolate<Quaternion> {
+struct EditorSceneFormatImporterGLTFInterpolate<Quaternion> {
Quaternion lerp(const Quaternion &a, const Quaternion &b, const float c) const {
ERR_FAIL_COND_V_MSG(!a.is_normalized(), Quaternion(), "The quaternion \"a\" must be normalized.");
ERR_FAIL_COND_V_MSG(!b.is_normalized(), Quaternion(), "The quaternion \"b\" must be normalized.");
@@ -5733,7 +5736,7 @@ struct EditorSceneImporterGLTFInterpolate<Quaternion> {
template <class T>
T GLTFDocument::_interpolate_track(const Vector<float> &p_times, const Vector<T> &p_values, const float p_time, const GLTFAnimation::Interpolation p_interp) {
ERR_FAIL_COND_V(!p_values.size(), T());
- if (p_times.size() != p_values.size()) {
+ if (p_times.size() != (p_values.size() / (p_interp == GLTFAnimation::INTERP_CUBIC_SPLINE ? 3 : 1))) {
ERR_PRINT_ONCE("The interpolated values are not corresponding to its times.");
return p_values[0];
}
@@ -5746,7 +5749,7 @@ T GLTFDocument::_interpolate_track(const Vector<float> &p_times, const Vector<T>
idx++;
}
- EditorSceneImporterGLTFInterpolate<T> interp;
+ EditorSceneFormatImporterGLTFInterpolate<T> interp;
switch (p_interp) {
case GLTFAnimation::INTERP_LINEAR: {
@@ -5868,9 +5871,67 @@ void GLTFDocument::_import_animation(Ref<GLTFState> state, AnimationPlayer *ap,
const bool transform_affects_skinned_mesh_instance = gltf_node->skeleton < 0 && gltf_node->skin >= 0;
if ((track.rotation_track.values.size() || track.position_track.values.size() || track.scale_track.values.size()) && !transform_affects_skinned_mesh_instance) {
//make transform track
- int track_idx = animation->get_track_count();
- animation->add_track(Animation::TYPE_TRANSFORM3D);
- animation->track_set_path(track_idx, transform_node_path);
+ int base_idx = animation->get_track_count();
+ int position_idx = -1;
+ int rotation_idx = -1;
+ int scale_idx = -1;
+
+ if (track.position_track.values.size()) {
+ Vector3 base_pos = state->nodes[track_i.key]->position;
+ bool not_default = false; //discard the track if all it contains is default values
+ for (int i = 0; i < track.position_track.times.size(); i++) {
+ Vector3 value = track.position_track.values[track.position_track.interpolation == GLTFAnimation::INTERP_CUBIC_SPLINE ? (1 + i * 3) : i];
+ if (!value.is_equal_approx(base_pos)) {
+ not_default = true;
+ break;
+ }
+ }
+ if (not_default) {
+ position_idx = base_idx;
+ animation->add_track(Animation::TYPE_POSITION_3D);
+ animation->track_set_path(position_idx, transform_node_path);
+ animation->track_set_imported(position_idx, true); //helps merging later
+
+ base_idx++;
+ }
+ }
+ if (track.rotation_track.values.size()) {
+ Quaternion base_rot = state->nodes[track_i.key]->rotation.normalized();
+ bool not_default = false; //discard the track if all it contains is default values
+ for (int i = 0; i < track.rotation_track.times.size(); i++) {
+ Quaternion value = track.rotation_track.values[track.rotation_track.interpolation == GLTFAnimation::INTERP_CUBIC_SPLINE ? (1 + i * 3) : i].normalized();
+ if (!value.is_equal_approx(base_rot)) {
+ not_default = true;
+ break;
+ }
+ }
+ if (not_default) {
+ rotation_idx = base_idx;
+ animation->add_track(Animation::TYPE_ROTATION_3D);
+ animation->track_set_path(rotation_idx, transform_node_path);
+ animation->track_set_imported(rotation_idx, true); //helps merging later
+ base_idx++;
+ }
+ }
+ if (track.scale_track.values.size()) {
+ Vector3 base_scale = state->nodes[track_i.key]->scale;
+ bool not_default = false; //discard the track if all it contains is default values
+ for (int i = 0; i < track.scale_track.times.size(); i++) {
+ Vector3 value = track.scale_track.values[track.scale_track.interpolation == GLTFAnimation::INTERP_CUBIC_SPLINE ? (1 + i * 3) : i];
+ if (!value.is_equal_approx(base_scale)) {
+ not_default = true;
+ break;
+ }
+ }
+ if (not_default) {
+ scale_idx = base_idx;
+ animation->add_track(Animation::TYPE_SCALE_3D);
+ animation->track_set_path(scale_idx, transform_node_path);
+ animation->track_set_imported(scale_idx, true); //helps merging later
+ base_idx++;
+ }
+ }
+
//first determine animation length
const double increment = 1.0 / bake_fps;
@@ -5880,15 +5941,15 @@ void GLTFDocument::_import_animation(Ref<GLTFState> state, AnimationPlayer *ap,
Quaternion base_rot;
Vector3 base_scale = Vector3(1, 1, 1);
- if (!track.rotation_track.values.size()) {
+ if (rotation_idx == -1) {
base_rot = state->nodes[track_i.key]->rotation.normalized();
}
- if (!track.position_track.values.size()) {
+ if (position_idx == -1) {
base_pos = state->nodes[track_i.key]->position;
}
- if (!track.scale_track.values.size()) {
+ if (scale_idx == -1) {
base_scale = state->nodes[track_i.key]->scale;
}
@@ -5898,35 +5959,21 @@ void GLTFDocument::_import_animation(Ref<GLTFState> state, AnimationPlayer *ap,
Quaternion rot = base_rot;
Vector3 scale = base_scale;
- if (track.position_track.times.size()) {
+ if (position_idx >= 0) {
pos = _interpolate_track<Vector3>(track.position_track.times, track.position_track.values, time, track.position_track.interpolation);
+ animation->position_track_insert_key(position_idx, time, pos);
}
- if (track.rotation_track.times.size()) {
+ if (rotation_idx >= 0) {
rot = _interpolate_track<Quaternion>(track.rotation_track.times, track.rotation_track.values, time, track.rotation_track.interpolation);
+ animation->rotation_track_insert_key(rotation_idx, time, rot);
}
- if (track.scale_track.times.size()) {
+ if (scale_idx >= 0) {
scale = _interpolate_track<Vector3>(track.scale_track.times, track.scale_track.values, time, track.scale_track.interpolation);
+ animation->scale_track_insert_key(scale_idx, time, scale);
}
- if (gltf_node->skeleton >= 0) {
- Transform3D xform;
- xform.basis.set_quaternion_scale(rot, scale);
- xform.origin = pos;
-
- const Skeleton3D *skeleton = state->skeletons[gltf_node->skeleton]->godot_skeleton;
- const int bone_idx = skeleton->find_bone(gltf_node->get_name());
- xform = skeleton->get_bone_rest(bone_idx).affine_inverse() * xform;
-
- rot = xform.basis.get_rotation_quaternion();
- rot.normalize();
- scale = xform.basis.get_scale();
- pos = xform.origin;
- }
-
- animation->transform_track_insert_key(track_idx, time, pos, rot, scale);
-
if (last) {
break;
}
@@ -5944,12 +5991,11 @@ void GLTFDocument::_import_animation(Ref<GLTFState> state, AnimationPlayer *ap,
ERR_CONTINUE(mesh.is_null());
ERR_CONTINUE(mesh->get_mesh().is_null());
ERR_CONTINUE(mesh->get_mesh()->get_mesh().is_null());
- const String prop = "blend_shapes/" + mesh->get_mesh()->get_blend_shape_name(i);
- const String blend_path = String(node_path) + ":" + prop;
+ const String blend_path = String(node_path) + ":" + String(mesh->get_mesh()->get_blend_shape_name(i));
const int track_idx = animation->get_track_count();
- animation->add_track(Animation::TYPE_VALUE);
+ animation->add_track(Animation::TYPE_BLEND_SHAPE);
animation->track_set_path(track_idx, blend_path);
// Only LINEAR and STEP (NEAREST) can be supported out of the box by Godot's Animation,
@@ -5960,7 +6006,7 @@ void GLTFDocument::_import_animation(Ref<GLTFState> state, AnimationPlayer *ap,
for (int j = 0; j < track.weight_tracks[i].times.size(); j++) {
const float t = track.weight_tracks[i].times[j];
const float attribs = track.weight_tracks[i].values[j];
- animation->track_insert_key(track_idx, t, attribs);
+ animation->blend_shape_track_insert_key(track_idx, t, attribs);
}
} else {
// CATMULLROMSPLINE or CUBIC_SPLINE have to be baked, apologies.
@@ -5968,7 +6014,8 @@ void GLTFDocument::_import_animation(Ref<GLTFState> state, AnimationPlayer *ap,
double time = 0.0;
bool last = false;
while (true) {
- _interpolate_track<float>(track.weight_tracks[i].times, track.weight_tracks[i].values, time, gltf_interp);
+ float blend = _interpolate_track<float>(track.weight_tracks[i].times, track.weight_tracks[i].values, time, gltf_interp);
+ animation->blend_shape_track_insert_key(track_idx, time, blend);
if (last) {
break;
}
@@ -6042,7 +6089,7 @@ void GLTFDocument::_convert_mesh_instances(Ref<GLTFState> state) {
} else {
if (skin.is_null()) {
// Note that gltf_skin_key should remain null, so these can share a reference.
- skin = skeleton->register_skin(nullptr)->get_skin();
+ skin = skeleton->create_skin_from_rest_transforms();
}
gltf_skin.instantiate();
gltf_skin->godot_skin = skin;
@@ -6145,7 +6192,7 @@ void GLTFDocument::_process_mesh_instances(Ref<GLTFState> state, Node *scene_roo
}
}
-GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state, GLTFAnimation::Track p_track, Ref<Animation> p_animation, Transform3D p_bone_rest, int32_t p_track_i, GLTFNodeIndex p_node_i) {
+GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state, GLTFAnimation::Track p_track, Ref<Animation> p_animation, int32_t p_track_i, GLTFNodeIndex p_node_i) {
Animation::InterpolationType interpolation = p_animation->track_get_interpolation_type(p_track_i);
GLTFAnimation::Interpolation gltf_interpolation = GLTFAnimation::INTERP_LINEAR;
@@ -6164,33 +6211,35 @@ GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state
for (int32_t key_i = 0; key_i < key_count; key_i++) {
times.write[key_i] = p_animation->track_get_key_time(p_track_i, key_i);
}
- if (track_type == Animation::TYPE_TRANSFORM3D) {
- p_track.position_track.times = times;
- p_track.position_track.interpolation = gltf_interpolation;
- p_track.rotation_track.times = times;
- p_track.rotation_track.interpolation = gltf_interpolation;
+ if (track_type == Animation::TYPE_SCALE_3D) {
p_track.scale_track.times = times;
p_track.scale_track.interpolation = gltf_interpolation;
-
p_track.scale_track.values.resize(key_count);
- p_track.scale_track.interpolation = gltf_interpolation;
+ for (int32_t key_i = 0; key_i < key_count; key_i++) {
+ Vector3 scale;
+ Error err = p_animation->scale_track_get_key(p_track_i, key_i, &scale);
+ ERR_CONTINUE(err != OK);
+ p_track.scale_track.values.write[key_i] = scale;
+ }
+ } else if (track_type == Animation::TYPE_POSITION_3D) {
+ p_track.position_track.times = times;
p_track.position_track.values.resize(key_count);
p_track.position_track.interpolation = gltf_interpolation;
- p_track.rotation_track.values.resize(key_count);
- p_track.rotation_track.interpolation = gltf_interpolation;
for (int32_t key_i = 0; key_i < key_count; key_i++) {
Vector3 position;
+ Error err = p_animation->position_track_get_key(p_track_i, key_i, &position);
+ ERR_CONTINUE(err != OK);
+ p_track.position_track.values.write[key_i] = position;
+ }
+ } else if (track_type == Animation::TYPE_ROTATION_3D) {
+ p_track.rotation_track.times = times;
+ p_track.rotation_track.interpolation = gltf_interpolation;
+ p_track.rotation_track.values.resize(key_count);
+ for (int32_t key_i = 0; key_i < key_count; key_i++) {
Quaternion rotation;
- Vector3 scale;
- Error err = p_animation->transform_track_get_key(p_track_i, key_i, &position, &rotation, &scale);
+ Error err = p_animation->rotation_track_get_key(p_track_i, key_i, &rotation);
ERR_CONTINUE(err != OK);
- Transform3D xform;
- xform.basis.set_quaternion_scale(rotation, scale);
- xform.origin = position;
- xform = p_bone_rest * xform;
- p_track.position_track.values.write[key_i] = xform.get_origin();
- p_track.rotation_track.values.write[key_i] = xform.basis.get_rotation_quaternion();
- p_track.scale_track.values.write[key_i] = xform.basis.get_scale();
+ p_track.rotation_track.values.write[key_i] = rotation;
}
} else if (path.find(":transform") != -1) {
p_track.position_track.times = times;
@@ -6282,13 +6331,10 @@ GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state
Vector3 bezier_track = p_track.scale_track.values[key_i];
if (path.find("/scale:x") != -1) {
bezier_track.x = p_animation->bezier_track_interpolate(p_track_i, key_i / BAKE_FPS);
- bezier_track.x = p_bone_rest.affine_inverse().basis.get_scale().x * bezier_track.x;
} else if (path.find("/scale:y") != -1) {
bezier_track.y = p_animation->bezier_track_interpolate(p_track_i, key_i / BAKE_FPS);
- bezier_track.y = p_bone_rest.affine_inverse().basis.get_scale().y * bezier_track.y;
} else if (path.find("/scale:z") != -1) {
bezier_track.z = p_animation->bezier_track_interpolate(p_track_i, key_i / BAKE_FPS);
- bezier_track.z = p_bone_rest.affine_inverse().basis.get_scale().z * bezier_track.z;
}
p_track.scale_track.values.write[key_i] = bezier_track;
}
@@ -6311,19 +6357,15 @@ GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state
Vector3 bezier_track = p_track.position_track.values[key_i];
if (path.find("/position:x") != -1) {
bezier_track.x = p_animation->bezier_track_interpolate(p_track_i, key_i / BAKE_FPS);
- bezier_track.x = p_bone_rest.affine_inverse().origin.x * bezier_track.x;
} else if (path.find("/position:y") != -1) {
bezier_track.y = p_animation->bezier_track_interpolate(p_track_i, key_i / BAKE_FPS);
- bezier_track.y = p_bone_rest.affine_inverse().origin.y * bezier_track.y;
} else if (path.find("/position:z") != -1) {
bezier_track.z = p_animation->bezier_track_interpolate(p_track_i, key_i / BAKE_FPS);
- bezier_track.z = p_bone_rest.affine_inverse().origin.z * bezier_track.z;
}
p_track.position_track.values.write[key_i] = bezier_track;
}
}
}
-
return p_track;
}
@@ -6350,7 +6392,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
if (position_track_i) {
track = position_track_i->get();
}
- track = _convert_animation_track(state, track, animation, Transform3D(), track_i, node_index);
+ track = _convert_animation_track(state, track, animation, track_i, node_index);
gltf_animation->get_tracks().insert(node_index, track);
}
}
@@ -6366,7 +6408,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
if (rotation_degree_track_i) {
track = rotation_degree_track_i->get();
}
- track = _convert_animation_track(state, track, animation, Transform3D(), track_i, node_index);
+ track = _convert_animation_track(state, track, animation, track_i, node_index);
gltf_animation->get_tracks().insert(node_index, track);
}
}
@@ -6382,7 +6424,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
if (scale_track_i) {
track = scale_track_i->get();
}
- track = _convert_animation_track(state, track, animation, Transform3D(), track_i, node_index);
+ track = _convert_animation_track(state, track, animation, track_i, node_index);
gltf_animation->get_tracks().insert(node_index, track);
}
}
@@ -6393,7 +6435,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
for (const KeyValue<GLTFNodeIndex, Node *> &transform_track_i : state->scene_nodes) {
if (transform_track_i.value == node) {
GLTFAnimation::Track track;
- track = _convert_animation_track(state, track, animation, Transform3D(), track_i, transform_track_i.key);
+ track = _convert_animation_track(state, track, animation, track_i, transform_track_i.key);
gltf_animation->get_tracks().insert(transform_track_i.key, track);
}
}
@@ -6417,8 +6459,8 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
if (!tracks.has(mesh_index)) {
for (int32_t shape_i = 0; shape_i < mesh->get_blend_shape_count(); shape_i++) {
String shape_name = mesh->get_blend_shape_name(shape_i);
- NodePath shape_path = String(path) + ":blend_shapes/" + shape_name;
- int32_t shape_track_i = animation->find_track(shape_path);
+ NodePath shape_path = String(path) + ":" + shape_name;
+ int32_t shape_track_i = animation->find_track(shape_path, Animation::TYPE_BLEND_SHAPE);
if (shape_track_i == -1) {
GLTFAnimation::Channel<float> weight;
weight.interpolation = GLTFAnimation::INTERP_LINEAR;
@@ -6470,7 +6512,6 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
Ref<GLTFSkeleton> skeleton_gltf = state->skeletons[skeleton_gltf_i];
int32_t bone = skeleton->find_bone(suffix);
ERR_CONTINUE(bone == -1);
- Transform3D xform = skeleton->get_bone_rest(bone);
if (!skeleton_gltf->godot_bone_node.has(bone)) {
continue;
}
@@ -6480,27 +6521,24 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
if (property_track_i) {
track = property_track_i->get();
}
- track = _convert_animation_track(state, track, animation, xform, track_i, node_i);
+ track = _convert_animation_track(state, track, animation, track_i, node_i);
gltf_animation->get_tracks()[node_i] = track;
}
}
} else if (String(orig_track_path).find(":") == -1) {
ERR_CONTINUE(!ap->get_parent());
- for (int32_t node_i = 0; node_i < ap->get_parent()->get_child_count(); node_i++) {
- const Node *child = ap->get_parent()->get_child(node_i);
- const Node *node = child->get_node_or_null(orig_track_path);
- for (const KeyValue<GLTFNodeIndex, Node *> &scene_node_i : state->scene_nodes) {
- if (scene_node_i.value == node) {
- GLTFNodeIndex node_index = scene_node_i.key;
- Map<int, GLTFAnimation::Track>::Element *node_track_i = gltf_animation->get_tracks().find(node_index);
- GLTFAnimation::Track track;
- if (node_track_i) {
- track = node_track_i->get();
- }
- track = _convert_animation_track(state, track, animation, Transform3D(), track_i, node_index);
- gltf_animation->get_tracks().insert(node_index, track);
- break;
+ Node *godot_node = ap->get_parent()->get_node_or_null(orig_track_path);
+ for (const KeyValue<GLTFNodeIndex, Node *> &scene_node_i : state->scene_nodes) {
+ if (scene_node_i.value == godot_node) {
+ GLTFNodeIndex node_i = scene_node_i.key;
+ Map<int, GLTFAnimation::Track>::Element *node_track_i = gltf_animation->get_tracks().find(node_i);
+ GLTFAnimation::Track track;
+ if (node_track_i) {
+ track = node_track_i->get();
}
+ track = _convert_animation_track(state, track, animation, track_i, node_i);
+ gltf_animation->get_tracks()[node_i] = track;
+ break;
}
}
}
@@ -6795,7 +6833,7 @@ Node *GLTFDocument::import_scene_gltf(const String &p_path, uint32_t p_flags, in
r_state.instantiate();
}
r_state->use_named_skin_binds =
- p_flags & EditorSceneImporter::IMPORT_USE_NAMED_SKIN_BINDS;
+ p_flags & EditorSceneFormatImporter::IMPORT_USE_NAMED_SKIN_BINDS;
Ref<GLTFDocument> gltf_document;
gltf_document.instantiate();
diff --git a/modules/gltf/gltf_document.h b/modules/gltf/gltf_document.h
index 7317c6a9a3..f2f0b439a5 100644
--- a/modules/gltf/gltf_document.h
+++ b/modules/gltf/gltf_document.h
@@ -269,8 +269,6 @@ private:
Error _reparent_non_joint_skeleton_subtrees(
Ref<GLTFState> state, Ref<GLTFSkeleton> skeleton,
const Vector<GLTFNodeIndex> &non_joints);
- Error _reparent_to_fake_joint(Ref<GLTFState> state, Ref<GLTFSkeleton> skeleton,
- const GLTFNodeIndex node_index);
Error _determine_skeleton_roots(Ref<GLTFState> state,
const GLTFSkeletonIndex skel_i);
Error _create_skeletons(Ref<GLTFState> state);
@@ -357,7 +355,7 @@ private:
String interpolation_to_string(const GLTFAnimation::Interpolation p_interp);
GLTFAnimation::Track _convert_animation_track(Ref<GLTFState> state,
GLTFAnimation::Track p_track,
- Ref<Animation> p_animation, Transform3D p_bone_rest,
+ Ref<Animation> p_animation,
int32_t p_track_i,
GLTFNodeIndex p_node_i);
Error _encode_buffer_bins(Ref<GLTFState> state, const String &p_path);
diff --git a/modules/gltf/gltf_document_extension_convert_importer_mesh.cpp b/modules/gltf/gltf_document_extension_convert_importer_mesh.cpp
index 78a98dfa3e..56c8f5ca27 100644
--- a/modules/gltf/gltf_document_extension_convert_importer_mesh.cpp
+++ b/modules/gltf/gltf_document_extension_convert_importer_mesh.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "gltf_document_extension_convert_importer_mesh.h"
+#include "core/error/error_macros.h"
#include "scene/3d/mesh_instance_3d.h"
#include "scene/resources/importer_mesh.h"
@@ -38,6 +39,8 @@ void GLTFDocumentExtensionConvertImporterMesh::_bind_methods() {
}
Error GLTFDocumentExtensionConvertImporterMesh::import_post(Ref<GLTFDocument> p_document, Node *p_node) {
+ ERR_FAIL_NULL_V(p_document, ERR_INVALID_PARAMETER);
+ ERR_FAIL_NULL_V(p_node, ERR_INVALID_PARAMETER);
List<Node *> queue;
queue.push_back(p_node);
List<Node *> delete_queue;
diff --git a/modules/gltf/register_types.cpp b/modules/gltf/register_types.cpp
index 0aceb838f7..5a60c2d328 100644
--- a/modules/gltf/register_types.cpp
+++ b/modules/gltf/register_types.cpp
@@ -52,7 +52,7 @@
#ifndef _3D_DISABLED
#ifdef TOOLS_ENABLED
static void _editor_init() {
- Ref<EditorSceneImporterGLTF> import_gltf;
+ Ref<EditorSceneFormatImporterGLTF> import_gltf;
import_gltf.instantiate();
ResourceImporterScene::get_singleton()->add_importer(import_gltf);
}
@@ -64,7 +64,7 @@ void register_gltf_types() {
#ifdef TOOLS_ENABLED
ClassDB::APIType prev_api = ClassDB::get_current_api();
ClassDB::set_current_api(ClassDB::API_EDITOR);
- GDREGISTER_CLASS(EditorSceneImporterGLTF);
+ GDREGISTER_CLASS(EditorSceneFormatImporterGLTF);
GDREGISTER_CLASS(GLTFMesh);
EditorPlugins::add_by_type<SceneExporterGLTFPlugin>();
ClassDB::set_current_api(prev_api);
diff --git a/modules/lightmapper_rd/lightmapper_rd.cpp b/modules/lightmapper_rd/lightmapper_rd.cpp
index ba4ef3be8d..37e969db4d 100644
--- a/modules/lightmapper_rd/lightmapper_rd.cpp
+++ b/modules/lightmapper_rd/lightmapper_rd.cpp
@@ -611,6 +611,61 @@ void LightmapperRD::_raster_geometry(RenderingDevice *rd, Size2i atlas_size, int
}
}
+LightmapperRD::BakeError LightmapperRD::_dilate(RenderingDevice *rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices) {
+ Vector<RD::Uniform> uniforms;
+ {
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
+ u.binding = 0;
+ u.ids.push_back(dest_light_tex);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.binding = 1;
+ u.ids.push_back(source_light_tex);
+ uniforms.push_back(u);
+ }
+ }
+
+ RID compute_shader_dilate = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("dilate"));
+ ERR_FAIL_COND_V(compute_shader_dilate.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); //internal check, should not happen
+ RID compute_shader_dilate_pipeline = rd->compute_pipeline_create(compute_shader_dilate);
+
+ RID dilate_uniform_set = rd->uniform_set_create(uniforms, compute_shader_dilate, 1);
+
+ RD::ComputeListID compute_list = rd->compute_list_begin();
+ rd->compute_list_bind_compute_pipeline(compute_list, compute_shader_dilate_pipeline);
+ rd->compute_list_bind_uniform_set(compute_list, compute_base_uniform_set, 0);
+ rd->compute_list_bind_uniform_set(compute_list, dilate_uniform_set, 1);
+ push_constant.region_ofs[0] = 0;
+ push_constant.region_ofs[1] = 0;
+ Vector3i group_size((atlas_size.x - 1) / 8 + 1, (atlas_size.y - 1) / 8 + 1, 1); //restore group size
+
+ for (int i = 0; i < atlas_slices; i++) {
+ push_constant.atlas_slice = i;
+ rd->compute_list_set_push_constant(compute_list, &push_constant, sizeof(PushConstant));
+ rd->compute_list_dispatch(compute_list, group_size.x, group_size.y, group_size.z);
+ //no barrier, let them run all together
+ }
+ rd->compute_list_end();
+ rd->free(compute_shader_dilate);
+
+#ifdef DEBUG_TEXTURES
+ for (int i = 0; i < atlas_slices; i++) {
+ Vector<uint8_t> s = rd->texture_get_data(light_accum_tex, i);
+ Ref<Image> img;
+ img.instantiate();
+ img->create(atlas_size.width, atlas_size.height, false, Image::FORMAT_RGBAH, s);
+ img->convert(Image::FORMAT_RGBA8);
+ img->save_png("res://5_dilated_" + itos(i) + ".png");
+ }
+#endif
+ return BAKE_OK;
+}
+
LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_denoiser, int p_bounces, float p_bias, int p_max_texture_size, bool p_bake_sh, GenerateProbes p_generate_probes, const Ref<Image> &p_environment_panorama, const Basis &p_environment_transform, BakeStepFunc p_step_function, void *p_bake_userdata) {
if (p_step_function) {
p_step_function(0.0, TTR("Begin Bake"), p_bake_userdata, true);
@@ -943,11 +998,6 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
ERR_FAIL_COND_V(compute_shader_secondary.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); //internal check, should not happen
RID compute_shader_secondary_pipeline = rd->compute_pipeline_create(compute_shader_secondary);
- // Dilate
- RID compute_shader_dilate = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("dilate"));
- ERR_FAIL_COND_V(compute_shader_dilate.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); //internal check, should not happen
- RID compute_shader_dilate_pipeline = rd->compute_pipeline_create(compute_shader_dilate);
-
// Light probes
RID compute_shader_light_probes = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("light_probes"));
ERR_FAIL_COND_V(compute_shader_light_probes.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); //internal check, should not happen
@@ -959,7 +1009,6 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
rd->free(compute_shader_unocclude); \
rd->free(compute_shader_primary); \
rd->free(compute_shader_secondary); \
- rd->free(compute_shader_dilate); \
rd->free(compute_shader_light_probes);
PushConstant push_constant;
@@ -1270,7 +1319,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
push_constant.environment_xform[3] = 0.0f;
}
- /* LIGHPROBES */
+ /* LIGHTPROBES */
RID light_probe_buffer;
@@ -1377,6 +1426,14 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
}
#endif
+ {
+ SWAP(light_accum_tex, light_accum_tex2);
+ BakeError error = _dilate(rd, compute_shader, compute_base_uniform_set, push_constant, light_accum_tex2, light_accum_tex, atlas_size, atlas_slices * (p_bake_sh ? 4 : 1));
+ if (unlikely(error != BAKE_OK)) {
+ return error;
+ }
+ }
+
/* DENOISE */
if (p_use_denoiser) {
@@ -1409,58 +1466,14 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
}
}
}
- }
-#ifdef DEBUG_TEXTURES
-
- for (int i = 0; i < atlas_slices * (p_bake_sh ? 4 : 1); i++) {
- Vector<uint8_t> s = rd->texture_get_data(light_accum_tex, i);
- Ref<Image> img;
- img.instantiate();
- img->create(atlas_size.width, atlas_size.height, false, Image::FORMAT_RGBAH, s);
- img->save_exr("res://4_light_secondary_" + itos(i) + ".exr", false);
- }
-#endif
-
- /* DILATE LIGHTMAP */
- {
- SWAP(light_accum_tex, light_accum_tex2);
-
- Vector<RD::Uniform> uniforms;
{
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
- u.binding = 0;
- u.ids.push_back(light_accum_tex);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.binding = 1;
- u.ids.push_back(light_accum_tex2);
- uniforms.push_back(u);
+ SWAP(light_accum_tex, light_accum_tex2);
+ BakeError error = _dilate(rd, compute_shader, compute_base_uniform_set, push_constant, light_accum_tex2, light_accum_tex, atlas_size, atlas_slices * (p_bake_sh ? 4 : 1));
+ if (unlikely(error != BAKE_OK)) {
+ return error;
}
}
-
- RID dilate_uniform_set = rd->uniform_set_create(uniforms, compute_shader_dilate, 1);
-
- RD::ComputeListID compute_list = rd->compute_list_begin();
- rd->compute_list_bind_compute_pipeline(compute_list, compute_shader_dilate_pipeline);
- rd->compute_list_bind_uniform_set(compute_list, compute_base_uniform_set, 0);
- rd->compute_list_bind_uniform_set(compute_list, dilate_uniform_set, 1);
- push_constant.region_ofs[0] = 0;
- push_constant.region_ofs[1] = 0;
- group_size = Vector3i((atlas_size.x - 1) / 8 + 1, (atlas_size.y - 1) / 8 + 1, 1); //restore group size
-
- for (int i = 0; i < atlas_slices * (p_bake_sh ? 4 : 1); i++) {
- push_constant.atlas_slice = i;
- rd->compute_list_set_push_constant(compute_list, &push_constant, sizeof(PushConstant));
- rd->compute_list_dispatch(compute_list, group_size.x, group_size.y, group_size.z);
- //no barrier, let them run all together
- }
- rd->compute_list_end();
}
#ifdef DEBUG_TEXTURES
@@ -1470,8 +1483,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
Ref<Image> img;
img.instantiate();
img->create(atlas_size.width, atlas_size.height, false, Image::FORMAT_RGBAH, s);
- img->convert(Image::FORMAT_RGBA8);
- img->save_png("res://5_dilated_" + itos(i) + ".png");
+ img->save_exr("res://4_light_secondary_" + itos(i) + ".exr", false);
}
#endif
diff --git a/modules/lightmapper_rd/lightmapper_rd.h b/modules/lightmapper_rd/lightmapper_rd.h
index a6a3740051..e1657b2069 100644
--- a/modules/lightmapper_rd/lightmapper_rd.h
+++ b/modules/lightmapper_rd/lightmapper_rd.h
@@ -36,6 +36,7 @@
#include "scene/resources/mesh.h"
#include "servers/rendering/rendering_device.h"
+class RDShaderFile;
class LightmapperRD : public Lightmapper {
GDCLASS(LightmapperRD, Lightmapper)
@@ -231,6 +232,8 @@ class LightmapperRD : public Lightmapper {
void _create_acceleration_structures(RenderingDevice *rd, Size2i atlas_size, int atlas_slices, AABB &bounds, int grid_size, Vector<Probe> &probe_positions, GenerateProbes p_generate_probes, Vector<int> &slice_triangle_count, Vector<int> &slice_seam_count, RID &vertex_buffer, RID &triangle_buffer, RID &lights_buffer, RID &triangle_cell_indices_buffer, RID &probe_positions_buffer, RID &grid_texture, RID &seams_buffer, BakeStepFunc p_step_function, void *p_bake_userdata);
void _raster_geometry(RenderingDevice *rd, Size2i atlas_size, int atlas_slices, int grid_size, AABB bounds, float p_bias, Vector<int> slice_triangle_count, RID position_tex, RID unocclude_tex, RID normal_tex, RID raster_depth_buffer, RID rasterize_shader, RID raster_base_uniform);
+ BakeError _dilate(RenderingDevice *rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices);
+
public:
virtual void add_mesh(const MeshData &p_mesh) override;
virtual void add_directional_light(bool p_static, const Vector3 &p_direction, const Color &p_color, float p_energy, float p_angular_distance) override;
diff --git a/modules/lightmapper_rd/lm_common_inc.glsl b/modules/lightmapper_rd/lm_common_inc.glsl
index 22172d50e4..58523dc1f8 100644
--- a/modules/lightmapper_rd/lm_common_inc.glsl
+++ b/modules/lightmapper_rd/lm_common_inc.glsl
@@ -81,3 +81,7 @@ layout(set = 0, binding = 8) uniform texture2DArray albedo_tex;
layout(set = 0, binding = 9) uniform texture2DArray emission_tex;
layout(set = 0, binding = 10) uniform sampler linear_sampler;
+
+// Fragment action constants
+const uint FA_NONE = 0;
+const uint FA_SMOOTHEN_POSITION = 1;
diff --git a/modules/lightmapper_rd/lm_compute.glsl b/modules/lightmapper_rd/lm_compute.glsl
index 25b334c5eb..158cd960c4 100644
--- a/modules/lightmapper_rd/lm_compute.glsl
+++ b/modules/lightmapper_rd/lm_compute.glsl
@@ -94,13 +94,14 @@ params;
//check it, but also return distance and barycentric coords (for uv lookup)
bool ray_hits_triangle(vec3 from, vec3 dir, float max_dist, vec3 p0, vec3 p1, vec3 p2, out float r_distance, out vec3 r_barycentric) {
+ const float EPSILON = 0.00001;
const vec3 e0 = p1 - p0;
const vec3 e1 = p0 - p2;
vec3 triangle_normal = cross(e1, e0);
float n_dot_dir = dot(triangle_normal, dir);
- if (abs(n_dot_dir) < 0.01) {
+ if (abs(n_dot_dir) < EPSILON) {
return false;
}
@@ -148,7 +149,7 @@ uint trace_ray(vec3 p_from, vec3 p_to
ivec3 icell = ivec3(from_cell);
ivec3 iendcell = ivec3(to_cell);
vec3 dir_cell = normalize(rel_cell);
- vec3 delta = abs(1.0 / dir_cell); //vec3(length(rel_cell)) / rel_cell);
+ vec3 delta = min(abs(1.0 / dir_cell), params.grid_size); // use params.grid_size as max to prevent infinity values
ivec3 step = ivec3(sign(rel_cell));
vec3 side = (sign(rel_cell) * (vec3(icell) - from_cell) + (sign(rel_cell) * 0.5) + 0.5) * delta;
@@ -420,20 +421,22 @@ void main() {
light = textureLod(sampler2DArray(source_light, linear_sampler), uvw, 0.0).rgb;
active_rays += 1.0;
- } else if (trace_result == RAY_MISS && params.env_transform[0][3] == 0.0) { // Use env_transform[0][3] to indicate when we are computing the first bounce
- // Did not hit a triangle, reach out for the sky
- vec3 sky_dir = normalize(mat3(params.env_transform) * ray_dir);
+ } else if (trace_result == RAY_MISS) {
+ if (params.env_transform[0][3] == 0.0) { // Use env_transform[0][3] to indicate when we are computing the first bounce
+ // Did not hit a triangle, reach out for the sky
+ vec3 sky_dir = normalize(mat3(params.env_transform) * ray_dir);
- vec2 st = vec2(
- atan(sky_dir.x, sky_dir.z),
- acos(sky_dir.y));
+ vec2 st = vec2(
+ atan(sky_dir.x, sky_dir.z),
+ acos(sky_dir.y));
- if (st.x < 0.0)
- st.x += PI * 2.0;
+ if (st.x < 0.0)
+ st.x += PI * 2.0;
- st /= vec2(PI * 2.0, PI);
+ st /= vec2(PI * 2.0, PI);
- light = textureLod(sampler2D(environment, linear_sampler), st, 0.0).rgb;
+ light = textureLod(sampler2D(environment, linear_sampler), st, 0.0).rgb;
+ }
active_rays += 1.0;
}
diff --git a/modules/lightmapper_rd/lm_raster.glsl b/modules/lightmapper_rd/lm_raster.glsl
index 55ca193cc1..a86968a4f3 100644
--- a/modules/lightmapper_rd/lm_raster.glsl
+++ b/modules/lightmapper_rd/lm_raster.glsl
@@ -12,6 +12,7 @@ layout(location = 2) out vec2 uv_interp;
layout(location = 3) out vec3 barycentric;
layout(location = 4) flat out uvec3 vertex_indices;
layout(location = 5) flat out vec3 face_normal;
+layout(location = 6) flat out uint fragment_action;
layout(push_constant, binding = 0, std430) uniform Params {
vec2 atlas_size;
@@ -49,6 +50,14 @@ void main() {
face_normal = -normalize(cross((vertices.data[vertex_indices.x].position - vertices.data[vertex_indices.y].position), (vertices.data[vertex_indices.x].position - vertices.data[vertex_indices.z].position)));
+ {
+ const float FLAT_THRESHOLD = 0.99;
+ const vec3 norm_a = vec3(vertices.data[vertex_indices.x].normal_xy, vertices.data[vertex_indices.x].normal_z);
+ const vec3 norm_b = vec3(vertices.data[vertex_indices.y].normal_xy, vertices.data[vertex_indices.y].normal_z);
+ const vec3 norm_c = vec3(vertices.data[vertex_indices.z].normal_xy, vertices.data[vertex_indices.z].normal_z);
+ fragment_action = (dot(norm_a, norm_b) < FLAT_THRESHOLD || dot(norm_a, norm_c) < FLAT_THRESHOLD || dot(norm_b, norm_c) < FLAT_THRESHOLD) ? FA_SMOOTHEN_POSITION : FA_NONE;
+ }
+
gl_Position = vec4((uv_interp + params.uv_offset) * 2.0 - 1.0, 0.0001, 1.0);
}
@@ -78,6 +87,7 @@ layout(location = 2) in vec2 uv_interp;
layout(location = 3) in vec3 barycentric;
layout(location = 4) in flat uvec3 vertex_indices;
layout(location = 5) in flat vec3 face_normal;
+layout(location = 6) in flat uint fragment_action;
layout(location = 0) out vec4 position;
layout(location = 1) out vec4 normal;
@@ -86,7 +96,7 @@ layout(location = 2) out vec4 unocclude;
void main() {
vec3 vertex_pos = vertex_interp;
- {
+ if (fragment_action == FA_SMOOTHEN_POSITION) {
// smooth out vertex position by interpolating its projection in the 3 normal planes (normal plane is created by vertex pos and normal)
// because we don't want to interpolate inwards, normals found pointing inwards are pushed out.
vec3 pos_a = vertices.data[vertex_indices.x].position;
diff --git a/modules/mbedtls/packet_peer_mbed_dtls.h b/modules/mbedtls/packet_peer_mbed_dtls.h
index 6554c74a21..92e6ab88c4 100644
--- a/modules/mbedtls/packet_peer_mbed_dtls.h
+++ b/modules/mbedtls/packet_peer_mbed_dtls.h
@@ -59,8 +59,6 @@ protected:
Ref<SSLContextMbedTLS> ssl_ctx;
mbedtls_timing_delay_context timer;
- static void _bind_methods();
-
Error _do_handshake();
int _set_cookie();
diff --git a/modules/mbedtls/ssl_context_mbedtls.h b/modules/mbedtls/ssl_context_mbedtls.h
index 1b55a54a10..5692dec1b6 100644
--- a/modules/mbedtls/ssl_context_mbedtls.h
+++ b/modules/mbedtls/ssl_context_mbedtls.h
@@ -67,8 +67,6 @@ class SSLContextMbedTLS : public RefCounted {
protected:
bool inited = false;
- static PackedByteArray _read_file(String p_path);
-
public:
static void print_mbedtls_error(int p_ret);
diff --git a/modules/mbedtls/stream_peer_mbedtls.h b/modules/mbedtls/stream_peer_mbedtls.h
index b89d7fb238..407479e3cc 100644
--- a/modules/mbedtls/stream_peer_mbedtls.h
+++ b/modules/mbedtls/stream_peer_mbedtls.h
@@ -50,8 +50,6 @@ private:
protected:
Ref<SSLContextMbedTLS> ssl_ctx;
- static void _bind_methods();
-
Error _do_handshake();
public:
diff --git a/modules/mobile_vr/doc_classes/MobileVRInterface.xml b/modules/mobile_vr/doc_classes/MobileVRInterface.xml
index 04ba82ef51..18a77c8b8d 100644
--- a/modules/mobile_vr/doc_classes/MobileVRInterface.xml
+++ b/modules/mobile_vr/doc_classes/MobileVRInterface.xml
@@ -37,5 +37,6 @@
<member name="oversample" type="float" setter="set_oversample" getter="get_oversample" default="1.5">
The oversample setting. Because of the lens distortion we have to render our buffers at a higher resolution then the screen can natively handle. A value between 1.5 and 2.0 often provides good results but at the cost of performance.
</member>
+ <member name="xr_play_area_mode" type="int" setter="set_play_area_mode" getter="get_play_area_mode" override="true" enum="XRInterface.PlayAreaMode" default="1" />
</members>
</class>
diff --git a/modules/mobile_vr/mobile_vr_interface.cpp b/modules/mobile_vr/mobile_vr_interface.cpp
index fc1a118e4f..ba7353ace2 100644
--- a/modules/mobile_vr/mobile_vr_interface.cpp
+++ b/modules/mobile_vr/mobile_vr_interface.cpp
@@ -126,6 +126,8 @@ void MobileVRInterface::set_position_from_sensors() {
// 9dof is a misleading marketing term coming from 3 accelerometer axis + 3 gyro axis + 3 magnetometer axis = 9 axis
// but in reality this only offers 3 dof (yaw, pitch, roll) orientation
+ Basis orientation;
+
uint64_t ticks = OS::get_singleton()->get_ticks_usec();
uint64_t ticks_elapsed = ticks - last_ticks;
float delta_time = (double)ticks_elapsed / 1000000.0;
@@ -207,8 +209,8 @@ void MobileVRInterface::set_position_from_sensors() {
};
};
- // JIC
- orientation.orthonormalize();
+ // and copy to our head transform
+ head_transform.basis = orientation.orthonormalized();
last_ticks = ticks;
};
@@ -318,7 +320,7 @@ bool MobileVRInterface::initialize() {
ERR_FAIL_NULL_V(xr_server, false);
if (!initialized) {
- // reset our sensor data and orientation
+ // reset our sensor data
mag_count = 0;
has_gyro = false;
sensor_first = true;
@@ -326,9 +328,15 @@ bool MobileVRInterface::initialize() {
mag_next_max = Vector3(-10000, -10000, -10000);
mag_current_min = Vector3(0, 0, 0);
mag_current_max = Vector3(0, 0, 0);
+ head_transform.basis = Basis();
+ head_transform.origin = Vector3(0.0, eye_height, 0.0);
- // reset our orientation
- orientation = Basis();
+ // we must create a tracker for our head
+ head.instantiate();
+ head->set_tracker_type(XRServer::TRACKER_HEAD);
+ head->set_tracker_name("head");
+ head->set_tracker_desc("Players head");
+ xr_server->add_tracker(head);
// make this our primary interface
xr_server->set_primary_interface(this);
@@ -343,16 +351,38 @@ bool MobileVRInterface::initialize() {
void MobileVRInterface::uninitialize() {
if (initialized) {
+ // do any cleanup here...
XRServer *xr_server = XRServer::get_singleton();
- if (xr_server != nullptr && xr_server->get_primary_interface() == this) {
- // no longer our primary interface
- xr_server->set_primary_interface(nullptr);
+ if (xr_server != nullptr) {
+ if (head.is_valid()) {
+ xr_server->remove_tracker(head);
+
+ head.unref();
+ }
+
+ if (xr_server->get_primary_interface() == this) {
+ // no longer our primary interface
+ xr_server->set_primary_interface(nullptr);
+ }
}
initialized = false;
};
};
+bool MobileVRInterface::supports_play_area_mode(XRInterface::PlayAreaMode p_mode) {
+ // This interface has no positional tracking so fix this to 3DOF
+ return p_mode == XR_PLAY_AREA_3DOF;
+}
+
+XRInterface::PlayAreaMode MobileVRInterface::get_play_area_mode() const {
+ return XR_PLAY_AREA_3DOF;
+}
+
+bool MobileVRInterface::set_play_area_mode(XRInterface::PlayAreaMode p_mode) {
+ return p_mode == XR_PLAY_AREA_3DOF;
+}
+
Size2 MobileVRInterface::get_render_target_size() {
_THREAD_SAFE_METHOD_
@@ -377,11 +407,10 @@ Transform3D MobileVRInterface::get_camera_transform() {
float world_scale = xr_server->get_world_scale();
// just scale our origin point of our transform
- Transform3D hmd_transform;
- hmd_transform.basis = orientation;
- hmd_transform.origin = Vector3(0.0, eye_height * world_scale, 0.0);
+ Transform3D _head_transform = head_transform;
+ _head_transform.origin *= world_scale;
- transform_for_eye = (xr_server->get_reference_frame()) * hmd_transform;
+ transform_for_eye = (xr_server->get_reference_frame()) * _head_transform;
}
return transform_for_eye;
@@ -409,11 +438,10 @@ Transform3D MobileVRInterface::get_transform_for_view(uint32_t p_view, const Tra
};
// just scale our origin point of our transform
- Transform3D hmd_transform;
- hmd_transform.basis = orientation;
- hmd_transform.origin = Vector3(0.0, eye_height * world_scale, 0.0);
+ Transform3D _head_transform = head_transform;
+ _head_transform.origin *= world_scale;
- transform_for_eye = p_cam_transform * (xr_server->get_reference_frame()) * hmd_transform * transform_for_eye;
+ transform_for_eye = p_cam_transform * (xr_server->get_reference_frame()) * _head_transform * transform_for_eye;
} else {
// huh? well just return what we got....
transform_for_eye = p_cam_transform;
@@ -476,7 +504,16 @@ void MobileVRInterface::process() {
_THREAD_SAFE_METHOD_
if (initialized) {
+ // update our head transform orientation
set_position_from_sensors();
+
+ // update our head transform position (should be constant)
+ head_transform.origin = Vector3(0.0, eye_height, 0.0);
+
+ if (head.is_valid()) {
+ // Set our head position, note in real space, reference frame and world scale is applied later
+ head->set_pose("default", head_transform, Vector3(), Vector3());
+ }
};
};
diff --git a/modules/mobile_vr/mobile_vr_interface.h b/modules/mobile_vr/mobile_vr_interface.h
index a843e1188b..b5bf966247 100644
--- a/modules/mobile_vr/mobile_vr_interface.h
+++ b/modules/mobile_vr/mobile_vr_interface.h
@@ -53,7 +53,6 @@ class MobileVRInterface : public XRInterface {
private:
bool initialized = false;
XRInterface::TrackingStatus tracking_state;
- Basis orientation;
// Just set some defaults for these. At some point we need to look at adding a lookup table for common device + headset combos and/or support reading cardboard QR codes
double eye_height = 1.85;
@@ -68,6 +67,10 @@ private:
double k2 = 0.215;
double aspect = 1.0;
+ // at a minimum we need a tracker for our head
+ Ref<XRPositionalTracker> head;
+ Transform3D head_transform;
+
/*
logic for processing our sensor data, this was originally in our positional tracker logic but I think
that doesn't make sense in hindsight. It only makes marginally more sense to park it here for now,
@@ -140,6 +143,10 @@ public:
virtual bool initialize() override;
virtual void uninitialize() override;
+ virtual bool supports_play_area_mode(XRInterface::PlayAreaMode p_mode) override;
+ virtual XRInterface::PlayAreaMode get_play_area_mode() const override;
+ virtual bool set_play_area_mode(XRInterface::PlayAreaMode p_mode) override;
+
virtual Size2 get_render_target_size() override;
virtual uint32_t get_view_count() override;
virtual Transform3D get_camera_transform() override;
diff --git a/modules/mono/SCsub b/modules/mono/SCsub
index 3b94949470..95c959235c 100644
--- a/modules/mono/SCsub
+++ b/modules/mono/SCsub
@@ -49,6 +49,7 @@ if env_mono["tools"] and env_mono["mono_glue"] and env_mono["build_cil"]:
env_mono.add_source_files(env.modules_sources, "*.cpp")
env_mono.add_source_files(env.modules_sources, "glue/*.cpp")
+env_mono.add_source_files(env.modules_sources, "glue/mono_glue.gen.cpp")
env_mono.add_source_files(env.modules_sources, "mono_gd/*.cpp")
env_mono.add_source_files(env.modules_sources, "utils/*.cpp")
@@ -57,6 +58,8 @@ env_mono.add_source_files(env.modules_sources, "mono_gd/support/*.cpp")
if env["platform"] in ["osx", "iphone"]:
env_mono.add_source_files(env.modules_sources, "mono_gd/support/*.mm")
env_mono.add_source_files(env.modules_sources, "mono_gd/support/*.m")
+elif env["platform"] == "android":
+ env_mono.add_source_files(env.modules_sources, "mono_gd/android_mono_config.gen.cpp")
if env["tools"]:
env_mono.add_source_files(env.modules_sources, "editor/*.cpp")
diff --git a/modules/mono/build_scripts/mono_reg_utils.py b/modules/mono/build_scripts/mono_reg_utils.py
index 0ec7e2f433..93a66ebf6f 100644
--- a/modules/mono/build_scripts/mono_reg_utils.py
+++ b/modules/mono/build_scripts/mono_reg_utils.py
@@ -2,7 +2,6 @@ import os
import platform
if os.name == "nt":
- import sys
import winreg
diff --git a/modules/mono/config.py b/modules/mono/config.py
index 4c851a2989..df02d9a309 100644
--- a/modules/mono/config.py
+++ b/modules/mono/config.py
@@ -2,7 +2,7 @@ supported_platforms = ["windows", "osx", "linuxbsd", "server", "android", "haiku
def can_build(env, platform):
- return True
+ return not env["arch"].startswith("rv")
def configure(env):
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index 247eee4280..531f600c3f 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -1660,7 +1660,7 @@ bool CSharpInstance::set(const StringName &p_name, const Variant &p_value) {
GDMonoProperty *property = top->get_property(p_name);
if (property) {
- property->set_value(mono_object, GDMonoMarshal::variant_to_mono_object(p_value, property->get_type()));
+ property->set_value_from_variant(mono_object, p_value);
return true;
}
@@ -1813,8 +1813,8 @@ void CSharpInstance::get_event_signals_state_for_reloading(List<Pair<StringName,
}
void CSharpInstance::get_property_list(List<PropertyInfo> *p_properties) const {
- for (const KeyValue<StringName, PropertyInfo> &E : script->member_info) {
- p_properties->push_back(E.value);
+ for (OrderedHashMap<StringName, PropertyInfo>::ConstElement E = script->member_info.front(); E; E = E.next()) {
+ p_properties->push_front(E.value());
}
// Call _get_property_list
@@ -1839,10 +1839,9 @@ void CSharpInstance::get_property_list(List<PropertyInfo> *p_properties) const {
for (int i = 0, size = array.size(); i < size; i++) {
p_properties->push_back(PropertyInfo::from_dict(array.get(i)));
}
- return;
}
- break;
+ return;
}
top = top->get_parent_class();
@@ -1865,8 +1864,9 @@ Variant::Type CSharpInstance::get_property_type(const StringName &p_name, bool *
}
void CSharpInstance::get_method_list(List<MethodInfo> *p_list) const {
- if (!script->is_valid() || !script->script_class)
+ if (!script->is_valid() || !script->script_class) {
return;
+ }
GD_MONO_SCOPE_THREAD_ATTACH;
@@ -3499,9 +3499,9 @@ Ref<Script> CSharpScript::get_base_script() const {
return Ref<Script>();
}
-void CSharpScript::get_script_property_list(List<PropertyInfo> *p_list) const {
- for (const KeyValue<StringName, PropertyInfo> &E : member_info) {
- p_list->push_back(E.value);
+void CSharpScript::get_script_property_list(List<PropertyInfo> *r_list) const {
+ for (OrderedHashMap<StringName, PropertyInfo>::ConstElement E = member_info.front(); E; E = E.next()) {
+ r_list->push_front(E.value());
}
}
diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h
index afc17f694a..c998d9c1e4 100644
--- a/modules/mono/csharp_script.h
+++ b/modules/mono/csharp_script.h
@@ -154,7 +154,7 @@ private:
Set<StringName> exported_members_names;
#endif
- Map<StringName, PropertyInfo> member_info;
+ OrderedHashMap<StringName, PropertyInfo> member_info;
void _clear();
@@ -215,7 +215,7 @@ public:
void get_script_signal_list(List<MethodInfo> *r_signals) const override;
bool get_property_default_value(const StringName &p_property, Variant &r_value) const override;
- void get_script_property_list(List<PropertyInfo> *p_list) const override;
+ void get_script_property_list(List<PropertyInfo> *r_list) const override;
void update_exports() override;
void get_members(Set<StringName> *p_members) override;
diff --git a/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs b/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs
index 1d7bfaf0a4..bc09e1ebf9 100644
--- a/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs
+++ b/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs
@@ -121,15 +121,20 @@ namespace GodotTools.IdeMessaging
this.messageHandler = messageHandler;
this.logger = logger;
- // TODO: Need to fetch the project data dir name from ProjectSettings instead of defaulting to ".godot"
string projectMetadataDir = Path.Combine(godotProjectDir, ".godot", "mono", "metadata");
+ // FileSystemWatcher requires an existing directory
+ if (!Directory.Exists(projectMetadataDir)) {
+ // Check if the non hidden version exists
+ string nonHiddenProjectMetadataDir = Path.Combine(godotProjectDir, "godot", "mono", "metadata");
+ if (Directory.Exists(nonHiddenProjectMetadataDir)) {
+ projectMetadataDir = nonHiddenProjectMetadataDir;
+ } else {
+ Directory.CreateDirectory(projectMetadataDir);
+ }
+ }
MetaFilePath = Path.Combine(projectMetadataDir, GodotIdeMetadata.DefaultFileName);
- // FileSystemWatcher requires an existing directory
- if (!Directory.Exists(projectMetadataDir))
- Directory.CreateDirectory(projectMetadataDir);
-
fsWatcher = new FileSystemWatcher(projectMetadataDir, GodotIdeMetadata.DefaultFileName);
}
diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp
index c9789bf270..1904634132 100644
--- a/modules/mono/mono_gd/gd_mono_marshal.cpp
+++ b/modules/mono/mono_gd/gd_mono_marshal.cpp
@@ -139,49 +139,65 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type, bool *r_nil_is_
case MONO_TYPE_ARRAY:
case MONO_TYPE_SZARRAY: {
- MonoArrayType *array_type = mono_type_get_array_type(p_type.type_class->get_mono_type());
+ MonoClass *elem_class = mono_class_get_element_class(p_type.type_class->get_mono_ptr());
- if (array_type->eklass == CACHED_CLASS_RAW(MonoObject)) {
+ if (elem_class == CACHED_CLASS_RAW(MonoObject)) {
return Variant::ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(uint8_t)) {
+ if (elem_class == CACHED_CLASS_RAW(uint8_t)) {
return Variant::PACKED_BYTE_ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(int32_t)) {
+ if (elem_class == CACHED_CLASS_RAW(int32_t)) {
return Variant::PACKED_INT32_ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(int64_t)) {
+ if (elem_class == CACHED_CLASS_RAW(int64_t)) {
return Variant::PACKED_INT64_ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(float)) {
+ if (elem_class == CACHED_CLASS_RAW(float)) {
return Variant::PACKED_FLOAT32_ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(double)) {
+ if (elem_class == CACHED_CLASS_RAW(double)) {
return Variant::PACKED_FLOAT64_ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(String)) {
+ if (elem_class == CACHED_CLASS_RAW(String)) {
return Variant::PACKED_STRING_ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(Vector2)) {
+ if (elem_class == CACHED_CLASS_RAW(Vector2)) {
return Variant::PACKED_VECTOR2_ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(Vector3)) {
+ if (elem_class == CACHED_CLASS_RAW(Vector3)) {
return Variant::PACKED_VECTOR3_ARRAY;
}
- if (array_type->eklass == CACHED_CLASS_RAW(Color)) {
+ if (elem_class == CACHED_CLASS_RAW(Color)) {
return Variant::PACKED_COLOR_ARRAY;
}
- GDMonoClass *array_type_class = GDMono::get_singleton()->get_class(array_type->eklass);
+ if (elem_class == CACHED_CLASS_RAW(StringName)) {
+ return Variant::ARRAY;
+ }
+
+ if (elem_class == CACHED_CLASS_RAW(NodePath)) {
+ return Variant::ARRAY;
+ }
+
+ if (elem_class == CACHED_CLASS_RAW(RID)) {
+ return Variant::ARRAY;
+ }
+
+ if (mono_class_is_enum(elem_class)) {
+ return Variant::ARRAY;
+ }
+
+ GDMonoClass *array_type_class = GDMono::get_singleton()->get_class(elem_class);
if (CACHED_CLASS(GodotObject)->is_assignable_from(array_type_class)) {
return Variant::ARRAY;
}
@@ -266,6 +282,12 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type, bool *r_nil_is_
if (GDMonoUtils::Marshal::type_is_generic_icollection(reftype) || GDMonoUtils::Marshal::type_is_generic_ienumerable(reftype)) {
return Variant::ARRAY;
}
+
+ // GodotObject
+ GDMonoClass *type_class = p_type.type_class;
+ if (CACHED_CLASS(GodotObject)->is_assignable_from(type_class)) {
+ return Variant::OBJECT;
+ }
} break;
default: {
@@ -284,9 +306,8 @@ bool try_get_array_element_type(const ManagedType &p_array_type, ManagedType &r_
switch (p_array_type.type_encoding) {
case MONO_TYPE_ARRAY:
case MONO_TYPE_SZARRAY: {
- MonoArrayType *array_type = mono_type_get_array_type(p_array_type.type_class->get_mono_type());
- GDMonoClass *array_type_class = GDMono::get_singleton()->get_class(array_type->eklass);
- r_elem_type = ManagedType::from_class(array_type_class);
+ MonoClass *elem_class = mono_class_get_element_class(p_array_type.type_class->get_mono_ptr());
+ r_elem_type = ManagedType::from_class(elem_class);
return true;
} break;
case MONO_TYPE_GENERICINST: {
@@ -361,6 +382,18 @@ MonoArray *variant_to_mono_array(const Variant &p_var, GDMonoClass *p_type_class
return PackedColorArray_to_mono_array(p_var.operator PackedColorArray());
}
+ if (array_type->eklass == CACHED_CLASS_RAW(StringName)) {
+ return Array_to_mono_array(p_var.operator Array());
+ }
+
+ if (array_type->eklass == CACHED_CLASS_RAW(NodePath)) {
+ return Array_to_mono_array(p_var.operator Array());
+ }
+
+ if (array_type->eklass == CACHED_CLASS_RAW(RID)) {
+ return Array_to_mono_array(p_var.operator Array());
+ }
+
if (mono_class_is_assignable_from(CACHED_CLASS(GodotObject)->get_mono_ptr(), array_type->eklass)) {
return Array_to_mono_array(p_var.operator ::Array(), array_type->eklass);
}
@@ -450,6 +483,11 @@ MonoObject *variant_to_mono_object_of_genericinst(const Variant &p_var, GDMonoCl
return GDMonoUtils::create_managed_from(p_var.operator Array(), godot_array_class);
}
+ // GodotObject
+ if (CACHED_CLASS(GodotObject)->is_assignable_from(p_type_class)) {
+ return GDMonoUtils::unmanaged_get_managed(p_var.operator Object *());
+ }
+
ERR_FAIL_V_MSG(nullptr, "Attempted to convert Variant to unsupported generic type: '" +
p_type_class->get_full_name() + "'.");
}
@@ -1118,6 +1156,18 @@ Variant mono_object_to_variant_impl(MonoObject *p_obj, const ManagedType &p_type
return mono_array_to_PackedColorArray((MonoArray *)p_obj);
}
+ if (array_type->eklass == CACHED_CLASS_RAW(StringName)) {
+ return mono_array_to_Array((MonoArray *)p_obj);
+ }
+
+ if (array_type->eklass == CACHED_CLASS_RAW(NodePath)) {
+ return mono_array_to_Array((MonoArray *)p_obj);
+ }
+
+ if (array_type->eklass == CACHED_CLASS_RAW(RID)) {
+ return mono_array_to_Array((MonoArray *)p_obj);
+ }
+
GDMonoClass *array_type_class = GDMono::get_singleton()->get_class(array_type->eklass);
if (CACHED_CLASS(GodotObject)->is_assignable_from(array_type_class)) {
return mono_array_to_Array((MonoArray *)p_obj);
@@ -1206,6 +1256,17 @@ Variant mono_object_to_variant_impl(MonoObject *p_obj, const ManagedType &p_type
GDMonoUtils::Marshal::array_get_element_type(reftype, &elem_reftype);
return system_generic_list_to_Array_variant(p_obj, p_type.type_class, elem_reftype);
}
+
+ // GodotObject
+ GDMonoClass *type_class = p_type.type_class;
+ if (CACHED_CLASS(GodotObject)->is_assignable_from(type_class)) {
+ Object *ptr = unbox<Object *>(CACHED_FIELD(GodotObject, ptr)->get_value(p_obj));
+ if (ptr != nullptr) {
+ RefCounted *rc = Object::cast_to<RefCounted>(ptr);
+ return rc ? Variant(Ref<RefCounted>(rc)) : Variant(ptr);
+ }
+ return Variant();
+ }
} break;
}
@@ -1315,7 +1376,6 @@ Dictionary system_generic_dict_to_Dictionary(MonoObject *p_obj, [[maybe_unused]]
MonoObject *Array_to_system_generic_list(const Array &p_array, GDMonoClass *p_class, MonoReflectionType *p_elem_reftype) {
MonoType *elem_type = mono_reflection_type_get_type(p_elem_reftype);
- MonoClass *elem_class = mono_class_from_mono_type(elem_type);
String ctor_desc = ":.ctor(System.Collections.Generic.IEnumerable`1<" + GDMonoUtils::get_type_desc(elem_type) + ">)";
GDMonoMethod *ctor = p_class->get_method_with_desc(ctor_desc, true);
@@ -1324,7 +1384,10 @@ MonoObject *Array_to_system_generic_list(const Array &p_array, GDMonoClass *p_cl
MonoObject *mono_object = mono_object_new(mono_domain_get(), p_class->get_mono_ptr());
ERR_FAIL_NULL_V(mono_object, nullptr);
- void *ctor_args[1] = { Array_to_mono_array(p_array, elem_class) };
+ GDMonoClass *godot_array_class = GDMonoUtils::Marshal::make_generic_array_type(p_elem_reftype);
+ MonoObject *godot_array = GDMonoUtils::create_managed_from(p_array, godot_array_class);
+
+ void *ctor_args[1] = { godot_array };
MonoException *exc = nullptr;
ctor->invoke_raw(mono_object, ctor_args, &exc);
diff --git a/modules/mono/mono_gd/gd_mono_property.cpp b/modules/mono/mono_gd/gd_mono_property.cpp
index 5391b7775e..5c7cf29e88 100644
--- a/modules/mono/mono_gd/gd_mono_property.cpp
+++ b/modules/mono/mono_gd/gd_mono_property.cpp
@@ -65,6 +65,8 @@ GDMonoProperty::GDMonoProperty(MonoProperty *p_mono_property, GDMonoClass *p_own
type.type_class = GDMono::get_singleton()->get_class(param_type_class);
}
+ param_buffer_size = GDMonoMarshal::variant_get_managed_unboxed_size(type);
+
attrs_fetched = false;
attributes = nullptr;
}
@@ -147,24 +149,20 @@ bool GDMonoProperty::has_setter() {
return mono_property_get_set_method(mono_property) != nullptr;
}
-void GDMonoProperty::set_value(MonoObject *p_object, MonoObject *p_value, MonoException **r_exc) {
- MonoMethod *prop_method = mono_property_get_set_method(mono_property);
- void *params[1] = { p_value };
- MonoException *exc = nullptr;
- GDMonoUtils::runtime_invoke(prop_method, p_object, params, &exc);
- if (exc) {
- if (r_exc) {
- *r_exc = exc;
- } else {
- GDMonoUtils::set_pending_exception(exc);
- }
- }
-}
+void GDMonoProperty::set_value_from_variant(MonoObject *p_object, const Variant &p_value, MonoException **r_exc) {
+ uint8_t *buffer = (uint8_t *)alloca(param_buffer_size);
+ unsigned int offset = 0;
-void GDMonoProperty::set_value(MonoObject *p_object, void **p_params, MonoException **r_exc) {
- MonoException *exc = nullptr;
- GDMonoUtils::property_set_value(mono_property, p_object, p_params, &exc);
+ void *params[1] = {
+ GDMonoMarshal::variant_to_managed_unboxed(p_value, type, buffer, offset)
+ };
+
+#ifdef DEBUG_ENABLED
+ CRASH_COND(offset != param_buffer_size);
+#endif
+ MonoException *exc = nullptr;
+ GDMonoUtils::property_set_value(mono_property, p_object, params, &exc);
if (exc) {
if (r_exc) {
*r_exc = exc;
diff --git a/modules/mono/mono_gd/gd_mono_property.h b/modules/mono/mono_gd/gd_mono_property.h
index af7a2c02e5..9bb1caa759 100644
--- a/modules/mono/mono_gd/gd_mono_property.h
+++ b/modules/mono/mono_gd/gd_mono_property.h
@@ -45,6 +45,8 @@ class GDMonoProperty : public IMonoClassMember {
bool attrs_fetched;
MonoCustomAttrInfo *attributes;
+ unsigned int param_buffer_size;
+
public:
virtual GDMonoClass *get_enclosing_class() const final { return owner; }
@@ -64,8 +66,7 @@ public:
_FORCE_INLINE_ ManagedType get_type() const { return type; }
- void set_value(MonoObject *p_object, MonoObject *p_value, MonoException **r_exc = nullptr);
- void set_value(MonoObject *p_object, void **p_params, MonoException **r_exc = nullptr);
+ void set_value_from_variant(MonoObject *p_object, const Variant &p_value, MonoException **r_exc = nullptr);
MonoObject *get_value(MonoObject *p_object, MonoException **r_exc = nullptr);
bool get_bool_value(MonoObject *p_object);
diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp
index 13939bd014..09aa9ad948 100644
--- a/modules/mono/mono_gd/gd_mono_utils.cpp
+++ b/modules/mono/mono_gd/gd_mono_utils.cpp
@@ -450,7 +450,7 @@ void debug_send_unhandled_exception_error(MonoException *p_exc) {
int line = si.size() ? si[0].line : __LINE__;
String error_msg = "Unhandled exception";
- EngineDebugger::get_script_debugger()->send_error(func, file, line, error_msg, exc_msg, ERR_HANDLER_ERROR, si);
+ EngineDebugger::get_script_debugger()->send_error(func, file, line, error_msg, exc_msg, true, ERR_HANDLER_ERROR, si);
#endif
}
diff --git a/modules/navigation/navigation_mesh_generator.cpp b/modules/navigation/navigation_mesh_generator.cpp
index bb6bc578a4..8fd3a13e1f 100644
--- a/modules/navigation/navigation_mesh_generator.cpp
+++ b/modules/navigation/navigation_mesh_generator.cpp
@@ -489,7 +489,7 @@ NavigationMeshGenerator::~NavigationMeshGenerator() {
}
void NavigationMeshGenerator::bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node) {
- ERR_FAIL_COND(!p_nav_mesh.is_valid());
+ ERR_FAIL_COND_MSG(!p_nav_mesh.is_valid(), "Invalid navigation mesh.");
#ifdef TOOLS_ENABLED
EditorProgress *ep(nullptr);
diff --git a/modules/ogg/SCsub b/modules/ogg/SCsub
index e415d92498..f15525648f 100644
--- a/modules/ogg/SCsub
+++ b/modules/ogg/SCsub
@@ -3,9 +3,6 @@
Import("env")
Import("env_modules")
-# Only kept to build the thirdparty library used by the theora and webm
-# modules.
-
env_ogg = env_modules.Clone()
# Thirdparty source files
diff --git a/modules/opus/SCsub b/modules/opus/SCsub
deleted file mode 100644
index 1437cd86df..0000000000
--- a/modules/opus/SCsub
+++ /dev/null
@@ -1,252 +0,0 @@
-#!/usr/bin/env python
-
-Import("env")
-Import("env_modules")
-
-# Only kept to build the thirdparty library used by the webm module.
-# AudioStreamOpus was dropped in 3.0 due to incompatibility with the new audio
-# engine. If you want to port it, fetch it from the Git history.
-
-env_opus = env_modules.Clone()
-
-# Thirdparty source files
-
-thirdparty_obj = []
-
-# Thirdparty source files
-if env["builtin_opus"]:
- thirdparty_dir = "#thirdparty/opus/"
-
- thirdparty_sources = [
- # Sync with opus_sources.mk
- "opus.c",
- "opus_decoder.c",
- "opus_encoder.c",
- "opus_multistream.c",
- "opus_multistream_encoder.c",
- "opus_multistream_decoder.c",
- "repacketizer.c",
- "analysis.c",
- "mlp.c",
- "mlp_data.c",
- # Sync with libopusfile Makefile.am
- "info.c",
- "internal.c",
- "opusfile.c",
- "stream.c",
- # Sync with celt_sources.mk
- "celt/bands.c",
- "celt/celt.c",
- "celt/celt_encoder.c",
- "celt/celt_decoder.c",
- "celt/cwrs.c",
- "celt/entcode.c",
- "celt/entdec.c",
- "celt/entenc.c",
- "celt/kiss_fft.c",
- "celt/laplace.c",
- "celt/mathops.c",
- "celt/mdct.c",
- "celt/modes.c",
- "celt/pitch.c",
- "celt/celt_lpc.c",
- "celt/quant_bands.c",
- "celt/rate.c",
- "celt/vq.c",
- # "celt/arm/arm_celt_map.c",
- # "celt/arm/armcpu.c",
- # "celt/arm/celt_ne10_fft.c",
- # "celt/arm/celt_ne10_mdct.c",
- # "celt/arm/celt_neon_intr.c",
- # Sync with silk_sources.mk
- "silk/CNG.c",
- "silk/code_signs.c",
- "silk/init_decoder.c",
- "silk/decode_core.c",
- "silk/decode_frame.c",
- "silk/decode_parameters.c",
- "silk/decode_indices.c",
- "silk/decode_pulses.c",
- "silk/decoder_set_fs.c",
- "silk/dec_API.c",
- "silk/enc_API.c",
- "silk/encode_indices.c",
- "silk/encode_pulses.c",
- "silk/gain_quant.c",
- "silk/interpolate.c",
- "silk/LP_variable_cutoff.c",
- "silk/NLSF_decode.c",
- "silk/NSQ.c",
- "silk/NSQ_del_dec.c",
- "silk/PLC.c",
- "silk/shell_coder.c",
- "silk/tables_gain.c",
- "silk/tables_LTP.c",
- "silk/tables_NLSF_CB_NB_MB.c",
- "silk/tables_NLSF_CB_WB.c",
- "silk/tables_other.c",
- "silk/tables_pitch_lag.c",
- "silk/tables_pulses_per_block.c",
- "silk/VAD.c",
- "silk/control_audio_bandwidth.c",
- "silk/quant_LTP_gains.c",
- "silk/VQ_WMat_EC.c",
- "silk/HP_variable_cutoff.c",
- "silk/NLSF_encode.c",
- "silk/NLSF_VQ.c",
- "silk/NLSF_unpack.c",
- "silk/NLSF_del_dec_quant.c",
- "silk/process_NLSFs.c",
- "silk/stereo_LR_to_MS.c",
- "silk/stereo_MS_to_LR.c",
- "silk/check_control_input.c",
- "silk/control_SNR.c",
- "silk/init_encoder.c",
- "silk/control_codec.c",
- "silk/A2NLSF.c",
- "silk/ana_filt_bank_1.c",
- "silk/biquad_alt.c",
- "silk/bwexpander_32.c",
- "silk/bwexpander.c",
- "silk/debug.c",
- "silk/decode_pitch.c",
- "silk/inner_prod_aligned.c",
- "silk/lin2log.c",
- "silk/log2lin.c",
- "silk/LPC_analysis_filter.c",
- "silk/LPC_inv_pred_gain.c",
- "silk/table_LSF_cos.c",
- "silk/NLSF2A.c",
- "silk/NLSF_stabilize.c",
- "silk/NLSF_VQ_weights_laroia.c",
- "silk/pitch_est_tables.c",
- "silk/resampler.c",
- "silk/resampler_down2_3.c",
- "silk/resampler_down2.c",
- "silk/resampler_private_AR2.c",
- "silk/resampler_private_down_FIR.c",
- "silk/resampler_private_IIR_FIR.c",
- "silk/resampler_private_up2_HQ.c",
- "silk/resampler_rom.c",
- "silk/sigm_Q15.c",
- "silk/sort.c",
- "silk/sum_sqr_shift.c",
- "silk/stereo_decode_pred.c",
- "silk/stereo_encode_pred.c",
- "silk/stereo_find_predictor.c",
- "silk/stereo_quant_pred.c",
- ]
-
- opus_sources_silk = []
-
- if env["platform"] in ["android", "iphone", "javascript"]:
- env_opus.Append(CPPDEFINES=["FIXED_POINT"])
- opus_sources_silk = [
- "silk/fixed/LTP_analysis_filter_FIX.c",
- "silk/fixed/LTP_scale_ctrl_FIX.c",
- "silk/fixed/corrMatrix_FIX.c",
- "silk/fixed/encode_frame_FIX.c",
- "silk/fixed/find_LPC_FIX.c",
- "silk/fixed/find_LTP_FIX.c",
- "silk/fixed/find_pitch_lags_FIX.c",
- "silk/fixed/find_pred_coefs_FIX.c",
- "silk/fixed/noise_shape_analysis_FIX.c",
- "silk/fixed/prefilter_FIX.c",
- "silk/fixed/process_gains_FIX.c",
- "silk/fixed/regularize_correlations_FIX.c",
- "silk/fixed/residual_energy16_FIX.c",
- "silk/fixed/residual_energy_FIX.c",
- "silk/fixed/solve_LS_FIX.c",
- "silk/fixed/warped_autocorrelation_FIX.c",
- "silk/fixed/apply_sine_window_FIX.c",
- "silk/fixed/autocorr_FIX.c",
- "silk/fixed/burg_modified_FIX.c",
- "silk/fixed/k2a_FIX.c",
- "silk/fixed/k2a_Q16_FIX.c",
- "silk/fixed/pitch_analysis_core_FIX.c",
- "silk/fixed/vector_ops_FIX.c",
- "silk/fixed/schur64_FIX.c",
- "silk/fixed/schur_FIX.c",
- ]
- else:
- opus_sources_silk = [
- "silk/float/apply_sine_window_FLP.c",
- "silk/float/corrMatrix_FLP.c",
- "silk/float/encode_frame_FLP.c",
- "silk/float/find_LPC_FLP.c",
- "silk/float/find_LTP_FLP.c",
- "silk/float/find_pitch_lags_FLP.c",
- "silk/float/find_pred_coefs_FLP.c",
- "silk/float/LPC_analysis_filter_FLP.c",
- "silk/float/LTP_analysis_filter_FLP.c",
- "silk/float/LTP_scale_ctrl_FLP.c",
- "silk/float/noise_shape_analysis_FLP.c",
- "silk/float/prefilter_FLP.c",
- "silk/float/process_gains_FLP.c",
- "silk/float/regularize_correlations_FLP.c",
- "silk/float/residual_energy_FLP.c",
- "silk/float/solve_LS_FLP.c",
- "silk/float/warped_autocorrelation_FLP.c",
- "silk/float/wrappers_FLP.c",
- "silk/float/autocorrelation_FLP.c",
- "silk/float/burg_modified_FLP.c",
- "silk/float/bwexpander_FLP.c",
- "silk/float/energy_FLP.c",
- "silk/float/inner_product_FLP.c",
- "silk/float/k2a_FLP.c",
- "silk/float/levinsondurbin_FLP.c",
- "silk/float/LPC_inv_pred_gain_FLP.c",
- "silk/float/pitch_analysis_core_FLP.c",
- "silk/float/scale_copy_vector_FLP.c",
- "silk/float/scale_vector_FLP.c",
- "silk/float/schur_FLP.c",
- "silk/float/sort_FLP.c",
- ]
-
- thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources + opus_sources_silk]
-
- # also requires libogg
- if env["builtin_libogg"]:
- env_opus.Prepend(CPPPATH=["#thirdparty/libogg"])
-
- env_opus.Append(CPPDEFINES=["HAVE_CONFIG_H"])
-
- thirdparty_include_paths = [
- "",
- "celt",
- "opus",
- "silk",
- "silk/fixed",
- "silk/float",
- ]
- env_opus.Prepend(CPPPATH=[thirdparty_dir + "/" + dir for dir in thirdparty_include_paths])
-
- if env["platform"] == "android":
- if "android_arch" in env and env["android_arch"] == "armv7":
- env_opus.Append(CPPDEFINES=["OPUS_ARM_OPT"])
- elif "android_arch" in env and env["android_arch"] == "arm64v8":
- env_opus.Append(CPPDEFINES=["OPUS_ARM64_OPT"])
- elif env["platform"] == "iphone":
- if "arch" in env and env["arch"] == "arm":
- env_opus.Append(CPPDEFINES=["OPUS_ARM_OPT"])
- elif "arch" in env and env["arch"] == "arm64":
- env_opus.Append(CPPDEFINES=["OPUS_ARM64_OPT"])
- elif env["platform"] == "osx":
- if "arch" in env and env["arch"] == "arm64":
- env_opus.Append(CPPDEFINES=["OPUS_ARM64_OPT"])
-
- env_thirdparty = env_opus.Clone()
- env_thirdparty.disable_warnings()
- env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
- env.modules_sources += thirdparty_obj
-
-
-# Godot source files
-
-module_obj = []
-
-env_opus.add_source_files(module_obj, "*.cpp")
-env.modules_sources += module_obj
-
-# Needed to force rebuilding the module files when the thirdparty library is updated.
-env.Depends(module_obj, thirdparty_obj)
diff --git a/modules/opus/config.py b/modules/opus/config.py
deleted file mode 100644
index 9ff7b2dece..0000000000
--- a/modules/opus/config.py
+++ /dev/null
@@ -1,6 +0,0 @@
-def can_build(env, platform):
- return env.module_check_dependencies("opus", ["ogg"])
-
-
-def configure(env):
- pass
diff --git a/modules/opus/register_types.cpp b/modules/opus/register_types.cpp
deleted file mode 100644
index 02874a9a4b..0000000000
--- a/modules/opus/register_types.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*************************************************************************/
-/* register_types.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "register_types.h"
-
-// Dummy module as libvorbis is needed by other modules (theora ...)
-
-void register_opus_types() {}
-
-void unregister_opus_types() {}
diff --git a/modules/opus/register_types.h b/modules/opus/register_types.h
deleted file mode 100644
index af889cf809..0000000000
--- a/modules/opus/register_types.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*************************************************************************/
-/* register_types.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (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 OPUS_REGISTER_TYPES_H
-#define OPUS_REGISTER_TYPES_H
-
-void register_opus_types();
-void unregister_opus_types();
-
-#endif // OPUS_REGISTER_TYPES_H
diff --git a/modules/raycast/config.py b/modules/raycast/config.py
index 5de36c5322..2f8bacd4ae 100644
--- a/modules/raycast/config.py
+++ b/modules/raycast/config.py
@@ -1,5 +1,7 @@
def can_build(env, platform):
# Depends on Embree library, which only supports x86_64 and aarch64.
+ if env["arch"].startswith("rv"):
+ return False
if platform == "android":
return env["android_arch"] in ["arm64v8", "x86_64"]
diff --git a/modules/regex/config.py b/modules/regex/config.py
index df9f44cb95..1248a8374d 100644
--- a/modules/regex/config.py
+++ b/modules/regex/config.py
@@ -1,5 +1,5 @@
def can_build(env, platform):
- return True
+ return not env["arch"].startswith("rv")
def configure(env):
diff --git a/modules/text_server_adv/SCsub b/modules/text_server_adv/SCsub
index 7cd4db6f67..68d1af84df 100644
--- a/modules/text_server_adv/SCsub
+++ b/modules/text_server_adv/SCsub
@@ -7,7 +7,6 @@ env_text_server_adv = env_modules.Clone()
def make_icu_data(target, source, env):
- import os
dst = target[0].srcnode().abspath
@@ -24,7 +23,6 @@ def make_icu_data(target, source, env):
f = open(source[0].srcnode().abspath, "rb")
buf = f.read()
- import os.path
g.write('extern "C" U_EXPORT const size_t U_ICUDATA_SIZE = ' + str(len(buf)) + ";\n")
g.write('extern "C" U_EXPORT const unsigned char U_ICUDATA_ENTRY_POINT[] = {\n')
diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp
index f5d159040f..e95369ead7 100644
--- a/modules/text_server_adv/text_server_adv.cpp
+++ b/modules/text_server_adv/text_server_adv.cpp
@@ -46,13 +46,13 @@
#endif
/*************************************************************************/
-/* hb_bmp_font_t HarfBuzz Bitmap font interface */
+/* bmp_font_t HarfBuzz Bitmap font interface */
/*************************************************************************/
hb_font_funcs_t *TextServerAdvanced::funcs = nullptr;
-TextServerAdvanced::hb_bmp_font_t *TextServerAdvanced::_hb_bmp_font_create(TextServerAdvanced::FontDataForSizeAdvanced *p_face, bool p_unref) {
- hb_bmp_font_t *bm_font = memnew(hb_bmp_font_t);
+TextServerAdvanced::bmp_font_t *TextServerAdvanced::_bmp_font_create(TextServerAdvanced::FontDataForSizeAdvanced *p_face, bool p_unref) {
+ bmp_font_t *bm_font = memnew(bmp_font_t);
if (!bm_font) {
return nullptr;
@@ -64,13 +64,13 @@ TextServerAdvanced::hb_bmp_font_t *TextServerAdvanced::_hb_bmp_font_create(TextS
return bm_font;
}
-void TextServerAdvanced::_hb_bmp_font_destroy(void *p_data) {
- hb_bmp_font_t *bm_font = reinterpret_cast<hb_bmp_font_t *>(p_data);
+void TextServerAdvanced::_bmp_font_destroy(void *p_data) {
+ bmp_font_t *bm_font = reinterpret_cast<bmp_font_t *>(p_data);
memdelete(bm_font);
}
-hb_bool_t TextServerAdvanced::hb_bmp_get_nominal_glyph(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_unicode, hb_codepoint_t *r_glyph, void *p_user_data) {
- const hb_bmp_font_t *bm_font = reinterpret_cast<const hb_bmp_font_t *>(p_font_data);
+hb_bool_t TextServerAdvanced::_bmp_get_nominal_glyph(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_unicode, hb_codepoint_t *r_glyph, void *p_user_data) {
+ const bmp_font_t *bm_font = reinterpret_cast<const bmp_font_t *>(p_font_data);
if (!bm_font->face) {
return false;
@@ -89,8 +89,8 @@ hb_bool_t TextServerAdvanced::hb_bmp_get_nominal_glyph(hb_font_t *p_font, void *
return true;
}
-hb_position_t TextServerAdvanced::hb_bmp_get_glyph_h_advance(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, void *p_user_data) {
- const hb_bmp_font_t *bm_font = reinterpret_cast<const hb_bmp_font_t *>(p_font_data);
+hb_position_t TextServerAdvanced::_bmp_get_glyph_h_advance(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, void *p_user_data) {
+ const bmp_font_t *bm_font = reinterpret_cast<const bmp_font_t *>(p_font_data);
if (!bm_font->face) {
return 0;
@@ -103,8 +103,8 @@ hb_position_t TextServerAdvanced::hb_bmp_get_glyph_h_advance(hb_font_t *p_font,
return bm_font->face->glyph_map[p_glyph].advance.x * 64;
}
-hb_position_t TextServerAdvanced::hb_bmp_get_glyph_v_advance(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, void *p_user_data) {
- const hb_bmp_font_t *bm_font = reinterpret_cast<const hb_bmp_font_t *>(p_font_data);
+hb_position_t TextServerAdvanced::_bmp_get_glyph_v_advance(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, void *p_user_data) {
+ const bmp_font_t *bm_font = reinterpret_cast<const bmp_font_t *>(p_font_data);
if (!bm_font->face) {
return 0;
@@ -117,8 +117,8 @@ hb_position_t TextServerAdvanced::hb_bmp_get_glyph_v_advance(hb_font_t *p_font,
return -bm_font->face->glyph_map[p_glyph].advance.y * 64;
}
-hb_position_t TextServerAdvanced::hb_bmp_get_glyph_h_kerning(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_left_glyph, hb_codepoint_t p_right_glyph, void *p_user_data) {
- const hb_bmp_font_t *bm_font = reinterpret_cast<const hb_bmp_font_t *>(p_font_data);
+hb_position_t TextServerAdvanced::_bmp_get_glyph_h_kerning(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_left_glyph, hb_codepoint_t p_right_glyph, void *p_user_data) {
+ const bmp_font_t *bm_font = reinterpret_cast<const bmp_font_t *>(p_font_data);
if (!bm_font->face) {
return 0;
@@ -131,8 +131,8 @@ hb_position_t TextServerAdvanced::hb_bmp_get_glyph_h_kerning(hb_font_t *p_font,
return bm_font->face->kerning_map[Vector2i(p_left_glyph, p_right_glyph)].x * 64;
}
-hb_bool_t TextServerAdvanced::hb_bmp_get_glyph_v_origin(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, hb_position_t *r_x, hb_position_t *r_y, void *p_user_data) {
- const hb_bmp_font_t *bm_font = reinterpret_cast<const hb_bmp_font_t *>(p_font_data);
+hb_bool_t TextServerAdvanced::_bmp_get_glyph_v_origin(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, hb_position_t *r_x, hb_position_t *r_y, void *p_user_data) {
+ const bmp_font_t *bm_font = reinterpret_cast<const bmp_font_t *>(p_font_data);
if (!bm_font->face) {
return false;
@@ -148,8 +148,8 @@ hb_bool_t TextServerAdvanced::hb_bmp_get_glyph_v_origin(hb_font_t *p_font, void
return true;
}
-hb_bool_t TextServerAdvanced::hb_bmp_get_glyph_extents(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, hb_glyph_extents_t *r_extents, void *p_user_data) {
- const hb_bmp_font_t *bm_font = reinterpret_cast<const hb_bmp_font_t *>(p_font_data);
+hb_bool_t TextServerAdvanced::_bmp_get_glyph_extents(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, hb_glyph_extents_t *r_extents, void *p_user_data) {
+ const bmp_font_t *bm_font = reinterpret_cast<const bmp_font_t *>(p_font_data);
if (!bm_font->face) {
return false;
@@ -167,8 +167,8 @@ hb_bool_t TextServerAdvanced::hb_bmp_get_glyph_extents(hb_font_t *p_font, void *
return true;
}
-hb_bool_t TextServerAdvanced::hb_bmp_get_font_h_extents(hb_font_t *p_font, void *p_font_data, hb_font_extents_t *r_metrics, void *p_user_data) {
- const hb_bmp_font_t *bm_font = reinterpret_cast<const hb_bmp_font_t *>(p_font_data);
+hb_bool_t TextServerAdvanced::_bmp_get_font_h_extents(hb_font_t *p_font, void *p_font_data, hb_font_extents_t *r_metrics, void *p_user_data) {
+ const bmp_font_t *bm_font = reinterpret_cast<const bmp_font_t *>(p_font_data);
if (!bm_font->face) {
return false;
@@ -181,40 +181,40 @@ hb_bool_t TextServerAdvanced::hb_bmp_get_font_h_extents(hb_font_t *p_font, void
return true;
}
-void TextServerAdvanced::hb_bmp_create_font_funcs() {
+void TextServerAdvanced::_bmp_create_font_funcs() {
if (funcs == nullptr) {
funcs = hb_font_funcs_create();
- hb_font_funcs_set_font_h_extents_func(funcs, hb_bmp_get_font_h_extents, nullptr, nullptr);
- hb_font_funcs_set_nominal_glyph_func(funcs, hb_bmp_get_nominal_glyph, nullptr, nullptr);
- hb_font_funcs_set_glyph_h_advance_func(funcs, hb_bmp_get_glyph_h_advance, nullptr, nullptr);
- hb_font_funcs_set_glyph_v_advance_func(funcs, hb_bmp_get_glyph_v_advance, nullptr, nullptr);
- hb_font_funcs_set_glyph_v_origin_func(funcs, hb_bmp_get_glyph_v_origin, nullptr, nullptr);
- hb_font_funcs_set_glyph_h_kerning_func(funcs, hb_bmp_get_glyph_h_kerning, nullptr, nullptr);
- hb_font_funcs_set_glyph_extents_func(funcs, hb_bmp_get_glyph_extents, nullptr, nullptr);
+ hb_font_funcs_set_font_h_extents_func(funcs, _bmp_get_font_h_extents, nullptr, nullptr);
+ hb_font_funcs_set_nominal_glyph_func(funcs, _bmp_get_nominal_glyph, nullptr, nullptr);
+ hb_font_funcs_set_glyph_h_advance_func(funcs, _bmp_get_glyph_h_advance, nullptr, nullptr);
+ hb_font_funcs_set_glyph_v_advance_func(funcs, _bmp_get_glyph_v_advance, nullptr, nullptr);
+ hb_font_funcs_set_glyph_v_origin_func(funcs, _bmp_get_glyph_v_origin, nullptr, nullptr);
+ hb_font_funcs_set_glyph_h_kerning_func(funcs, _bmp_get_glyph_h_kerning, nullptr, nullptr);
+ hb_font_funcs_set_glyph_extents_func(funcs, _bmp_get_glyph_extents, nullptr, nullptr);
hb_font_funcs_make_immutable(funcs);
}
}
-void TextServerAdvanced::hb_bmp_free_font_funcs() {
+void TextServerAdvanced::_bmp_free_font_funcs() {
if (funcs != nullptr) {
hb_font_funcs_destroy(funcs);
funcs = nullptr;
}
}
-void TextServerAdvanced::_hb_bmp_font_set_funcs(hb_font_t *p_font, TextServerAdvanced::FontDataForSizeAdvanced *p_face, bool p_unref) {
- hb_font_set_funcs(p_font, funcs, _hb_bmp_font_create(p_face, p_unref), _hb_bmp_font_destroy);
+void TextServerAdvanced::_bmp_font_set_funcs(hb_font_t *p_font, TextServerAdvanced::FontDataForSizeAdvanced *p_face, bool p_unref) {
+ hb_font_set_funcs(p_font, funcs, _bmp_font_create(p_face, p_unref), _bmp_font_destroy);
}
-hb_font_t *TextServerAdvanced::hb_bmp_font_create(TextServerAdvanced::FontDataForSizeAdvanced *p_face, hb_destroy_func_t p_destroy) {
+hb_font_t *TextServerAdvanced::_bmp_font_create(TextServerAdvanced::FontDataForSizeAdvanced *p_face, hb_destroy_func_t p_destroy) {
hb_font_t *font;
hb_face_t *face = hb_face_create(nullptr, 0);
font = hb_font_create(face);
hb_face_destroy(face);
- _hb_bmp_font_set_funcs(font, p_face, false);
+ _bmp_font_set_funcs(font, p_face, false);
return font;
}
@@ -442,9 +442,7 @@ bool TextServerAdvanced::is_locale_right_to_left(const String &p_locale) const {
}
}
-static Map<StringName, int32_t> feature_sets;
-
-static void _insert_feature_sets() {
+void TextServerAdvanced::_insert_feature_sets() {
// Registered OpenType feature tags.
feature_sets.insert("access_all_alternates", HB_TAG('a', 'a', 'l', 't'));
feature_sets.insert("above_base_forms", HB_TAG('a', 'b', 'v', 'f'));
@@ -740,6 +738,10 @@ _FORCE_INLINE_ TextServerAdvanced::FontTexturePosition TextServerAdvanced::find_
continue;
}
+ if (ct.offsets.size() < ct.texture_w) {
+ continue;
+ }
+
ret.y = 0x7FFFFFFF;
ret.x = 0;
@@ -956,7 +958,6 @@ _FORCE_INLINE_ TextServerAdvanced::FontGlyph TextServerAdvanced::rasterize_msdf(
edgeColoringSimple(shape, 3.0); // Max. angle.
msdfgen::Bitmap<float, 4> image(w, h); // Texture size.
- //msdfgen::generateMTSDF(image, shape, p_pixel_range, 1.0, msdfgen::Vector2(-bounds.l, -bounds.b)); // Range, scale, translation.
DistancePixelConversion distancePixelConversion(p_pixel_range);
msdfgen::Projection projection(msdfgen::Vector2(1.0, 1.0), msdfgen::Vector2(-bounds.l, -bounds.b));
@@ -986,10 +987,6 @@ _FORCE_INLINE_ TextServerAdvanced::FontGlyph TextServerAdvanced::rasterize_msdf(
wr[ofs + 1] = (uint8_t)(CLAMP(image(j, i)[1] * 256.f, 0.f, 255.f));
wr[ofs + 2] = (uint8_t)(CLAMP(image(j, i)[2] * 256.f, 0.f, 255.f));
wr[ofs + 3] = (uint8_t)(CLAMP(image(j, i)[3] * 256.f, 0.f, 255.f));
- //wr[ofs + 0] = 100;
- //wr[ofs + 1] = 100;
- //wr[ofs + 2] = 100;
- //wr[ofs + 3] = 100;
}
}
}
@@ -1054,13 +1051,12 @@ _FORCE_INLINE_ TextServerAdvanced::FontGlyph TextServerAdvanced::rasterize_bitma
case FT_PIXEL_MODE_MONO: {
int byte = i * bitmap.pitch + (j >> 3);
int bit = 1 << (7 - (j % 8));
- wr[ofs + 0] = 255; //grayscale as 1
+ wr[ofs + 0] = 255; // grayscale as 1
wr[ofs + 1] = (bitmap.buffer[byte] & bit) ? 255 : 0;
} break;
case FT_PIXEL_MODE_GRAY:
- wr[ofs + 0] = 255; //grayscale as 1
+ wr[ofs + 0] = 255; // grayscale as 1
wr[ofs + 1] = bitmap.buffer[i * bitmap.pitch + j];
- //wr[ofs + 1] = 100;
break;
case FT_PIXEL_MODE_BGRA: {
int ofs_color = i * bitmap.pitch + (j << 2);
@@ -1221,7 +1217,7 @@ _FORCE_INLINE_ bool TextServerAdvanced::_ensure_cache_for_size(FontDataAdvanced
FontDataForSizeAdvanced *fd = memnew(FontDataForSizeAdvanced);
fd->size = p_size;
- if (p_font_data->data_ptr) {
+ if (p_font_data->data_ptr && (p_font_data->data_size > 0)) {
// Init dynamic font.
#ifdef MODULE_FREETYPE_ENABLED
int error = 0;
@@ -1594,7 +1590,7 @@ _FORCE_INLINE_ bool TextServerAdvanced::_ensure_cache_for_size(FontDataAdvanced
#endif
} else {
// Init bitmap font.
- fd->hb_handle = hb_bmp_font_create(fd, nullptr);
+ fd->hb_handle = _bmp_font_create(fd, nullptr);
}
p_font_data->cache[p_size] = fd;
return true;
@@ -2123,6 +2119,7 @@ void TextServerAdvanced::font_set_texture_offsets(RID p_font_rid, const Vector2i
MutexLock lock(fd->mutex);
Vector2i size = _get_size_outline(fd, p_size);
ERR_FAIL_COND(!_ensure_cache_for_size(fd, size));
+ ERR_FAIL_COND(p_texture_index < 0);
if (p_texture_index >= fd->cache[size]->textures.size()) {
fd->cache[size]->textures.resize(p_texture_index + 1);
}
@@ -2480,6 +2477,8 @@ Vector2 TextServerAdvanced::font_get_kerning(RID p_font_rid, int p_size, const V
int32_t TextServerAdvanced::font_get_glyph_index(RID p_font_rid, int p_size, char32_t p_char, char32_t p_variation_selector) const {
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
ERR_FAIL_COND_V(!fd, 0);
+ ERR_FAIL_COND_V_MSG((p_char >= 0xd800 && p_char <= 0xdfff) || (p_char > 0x10ffff), 0, "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_char, 16) + ".");
+ ERR_FAIL_COND_V_MSG((p_variation_selector >= 0xd800 && p_variation_selector <= 0xdfff) || (p_variation_selector > 0x10ffff), 0, "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_variation_selector, 16) + ".");
MutexLock lock(fd->mutex);
Vector2i size = _get_size(fd, p_size);
@@ -2503,6 +2502,7 @@ int32_t TextServerAdvanced::font_get_glyph_index(RID p_font_rid, int p_size, cha
bool TextServerAdvanced::font_has_char(RID p_font_rid, char32_t p_char) const {
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
ERR_FAIL_COND_V(!fd, false);
+ ERR_FAIL_COND_V_MSG((p_char >= 0xd800 && p_char <= 0xdfff) || (p_char > 0x10ffff), false, "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_char, 16) + ".");
MutexLock lock(fd->mutex);
if (fd->cache.is_empty()) {
@@ -2555,6 +2555,8 @@ String TextServerAdvanced::font_get_supported_chars(RID p_font_rid) const {
void TextServerAdvanced::font_render_range(RID p_font_rid, const Vector2i &p_size, char32_t p_start, char32_t p_end) {
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
ERR_FAIL_COND(!fd);
+ ERR_FAIL_COND_MSG((p_start >= 0xd800 && p_start <= 0xdfff) || (p_start > 0x10ffff), "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_start, 16) + ".");
+ ERR_FAIL_COND_MSG((p_end >= 0xd800 && p_end <= 0xdfff) || (p_end > 0x10ffff), "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_end, 16) + ".");
MutexLock lock(fd->mutex);
Vector2i size = _get_size_outline(fd, p_size);
@@ -3161,7 +3163,7 @@ bool TextServerAdvanced::shaped_text_resize_object(RID p_shaped, Variant p_key,
E.value.rect.position.y -= E.value.rect.size.y / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.y);
@@ -3189,7 +3191,7 @@ bool TextServerAdvanced::shaped_text_resize_object(RID p_shaped, Variant p_key,
E.value.rect.position.x -= E.value.rect.size.x / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.x);
@@ -3351,7 +3353,7 @@ RID TextServerAdvanced::shaped_text_substr(RID p_shaped, int p_start, int p_leng
E.value.rect.position.y -= E.value.rect.size.y / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.y);
@@ -3379,7 +3381,7 @@ RID TextServerAdvanced::shaped_text_substr(RID p_shaped, int p_start, int p_leng
E.value.rect.position.x -= E.value.rect.size.x / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.x);
@@ -4485,7 +4487,7 @@ bool TextServerAdvanced::shaped_text_shape(RID p_shaped) {
E.value.rect.position.y -= E.value.rect.size.y / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.y);
@@ -4513,7 +4515,7 @@ bool TextServerAdvanced::shaped_text_shape(RID p_shaped) {
E.value.rect.position.x -= E.value.rect.size.x / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.x);
@@ -4679,76 +4681,186 @@ float TextServerAdvanced::shaped_text_get_underline_thickness(RID p_shaped) cons
return sd->uthk;
}
-struct num_system_data {
- Set<String> lang;
- String digits;
- String percent_sign;
- String exp;
-};
+void TextServerAdvanced::_insert_num_systems_lang() {
+ // Eastern Arabic numerals.
+ {
+ NumSystemData ar;
+ ar.lang.insert(StringName("ar")); // Arabic
+ ar.lang.insert(StringName("ar_AE"));
+ ar.lang.insert(StringName("ar_BH"));
+ ar.lang.insert(StringName("ar_DJ"));
+ ar.lang.insert(StringName("ar_EG"));
+ ar.lang.insert(StringName("ar_ER"));
+ ar.lang.insert(StringName("ar_IL"));
+ ar.lang.insert(StringName("ar_IQ"));
+ ar.lang.insert(StringName("ar_JO"));
+ ar.lang.insert(StringName("ar_KM"));
+ ar.lang.insert(StringName("ar_KW"));
+ ar.lang.insert(StringName("ar_LB"));
+ ar.lang.insert(StringName("ar_MR"));
+ ar.lang.insert(StringName("ar_OM"));
+ ar.lang.insert(StringName("ar_PS"));
+ ar.lang.insert(StringName("ar_QA"));
+ ar.lang.insert(StringName("ar_SA"));
+ ar.lang.insert(StringName("ar_SD"));
+ ar.lang.insert(StringName("ar_SO"));
+ ar.lang.insert(StringName("ar_SS"));
+ ar.lang.insert(StringName("ar_SY"));
+ ar.lang.insert(StringName("ar_TD"));
+ ar.lang.insert(StringName("ar_YE"));
+ ar.lang.insert(StringName("ckb")); // Central Kurdish
+ ar.lang.insert(StringName("ckb_IQ"));
+ ar.lang.insert(StringName("ckb_IR"));
+ ar.lang.insert(StringName("sd")); // Sindhi
+ ar.lang.insert(StringName("sd_PK"));
+ ar.lang.insert(StringName("sd_Arab"));
+ ar.lang.insert(StringName("sd_Arab_PK"));
+ ar.digits = U"٠١٢٣٤٥٦٧٨٩٫";
+ ar.percent_sign = U"Ùª";
+ ar.exp = U"اس";
+ num_systems.push_back(ar);
+ }
+
+ // Persian and Urdu numerals.
+ {
+ NumSystemData pr;
+ pr.lang.insert(StringName("fa")); // Persian
+ pr.lang.insert(StringName("fa_AF"));
+ pr.lang.insert(StringName("fa_IR"));
+ pr.lang.insert(StringName("ks")); // Kashmiri
+ pr.lang.insert(StringName("ks_IN"));
+ pr.lang.insert(StringName("ks_Arab"));
+ pr.lang.insert(StringName("ks_Arab_IN"));
+ pr.lang.insert(StringName("lrc")); // Northern Luri
+ pr.lang.insert(StringName("lrc_IQ"));
+ pr.lang.insert(StringName("lrc_IR"));
+ pr.lang.insert(StringName("mzn")); // Mazanderani
+ pr.lang.insert(StringName("mzn_IR"));
+ pr.lang.insert(StringName("pa_PK")); // Panjabi
+ pr.lang.insert(StringName("pa_Arab"));
+ pr.lang.insert(StringName("pa_Arab_PK"));
+ pr.lang.insert(StringName("ps")); // Pushto
+ pr.lang.insert(StringName("ps_AF"));
+ pr.lang.insert(StringName("ps_PK"));
+ pr.lang.insert(StringName("ur_IN")); // Urdu
+ pr.lang.insert(StringName("uz_AF")); // Uzbek
+ pr.lang.insert(StringName("uz_Arab"));
+ pr.lang.insert(StringName("uz_Arab_AF"));
+ pr.digits = U"Û°Û±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹Ù«";
+ pr.percent_sign = U"Ùª";
+ pr.exp = U"اس";
+ num_systems.push_back(pr);
+ }
+
+ // Bengali numerals.
+ {
+ NumSystemData bn;
+ bn.lang.insert(StringName("as")); // Assamese
+ bn.lang.insert(StringName("as_IN"));
+ bn.lang.insert(StringName("bn")); // Bengali
+ bn.lang.insert(StringName("bn_BD"));
+ bn.lang.insert(StringName("bn_IN"));
+ bn.lang.insert(StringName("mni")); // Manipuri
+ bn.lang.insert(StringName("mni_IN"));
+ bn.lang.insert(StringName("mni_Beng"));
+ bn.lang.insert(StringName("mni_Beng_IN"));
+ bn.digits = U"০১২৩৪৫৬৭৮৯.";
+ bn.percent_sign = U"%";
+ bn.exp = U"e";
+ num_systems.push_back(bn);
+ }
+
+ // Devanagari numerals.
+ {
+ NumSystemData mr;
+ mr.lang.insert(StringName("mr")); // Marathi
+ mr.lang.insert(StringName("mr_IN"));
+ mr.lang.insert(StringName("ne")); // Nepali
+ mr.lang.insert(StringName("ne_IN"));
+ mr.lang.insert(StringName("ne_NP"));
+ mr.lang.insert(StringName("sa")); // Sanskrit
+ mr.lang.insert(StringName("sa_IN"));
+ mr.digits = U"०१२३४५६७८९.";
+ mr.percent_sign = U"%";
+ mr.exp = U"e";
+ num_systems.push_back(mr);
+ }
+
+ // Dzongkha numerals.
+ {
+ NumSystemData dz;
+ dz.lang.insert(StringName("dz")); // Dzongkha
+ dz.lang.insert(StringName("dz_BT"));
+ dz.digits = U"༠༡༢༣༤༥༦༧༨༩.";
+ dz.percent_sign = U"%";
+ dz.exp = U"e";
+ num_systems.push_back(dz);
+ }
-static num_system_data num_systems[]{
- { Set<String>(), U"٠١٢٣٤٥٦٧٨٩٫", U"٪", U"اس" },
- { Set<String>(), U"۰۱۲۳۴۵۶۷۸۹٫", U"٪", U"اس" },
- { Set<String>(), U"০১২৩৪৫৬৭৮৯.", U"%", U"e" },
- { Set<String>(), U"०१२३४५६७८९.", U"%", U"e" },
- { Set<String>(), U"༠༡༢༣༤༥༦༧༨༩.", U"%", U"e" },
- { Set<String>(), U"á±á±‘᱒᱓᱔᱕᱖᱗᱘᱙.", U"%", U"e" },
- { Set<String>(), U"á€áá‚áƒá„á…á†á‡áˆá‰.", U"%", U"e" },
- { Set<String>(), String(), String(), String() },
-};
+ // Santali numerals.
+ {
+ NumSystemData sat;
+ sat.lang.insert(StringName("sat")); // Santali
+ sat.lang.insert(StringName("sat_IN"));
+ sat.lang.insert(StringName("sat_Olck"));
+ sat.lang.insert(StringName("sat_Olck_IN"));
+ sat.digits = U"á±á±‘᱒᱓᱔᱕᱖᱗᱘᱙.";
+ sat.percent_sign = U"%";
+ sat.exp = U"e";
+ num_systems.push_back(sat);
+ }
+
+ // Burmese numerals.
+ {
+ NumSystemData my;
+ my.lang.insert(StringName("my")); // Burmese
+ my.lang.insert(StringName("my_MM"));
+ my.digits = U"á€áá‚áƒá„á…á†á‡áˆá‰.";
+ my.percent_sign = U"%";
+ my.exp = U"e";
+ num_systems.push_back(my);
+ }
-static void _insert_num_systems_lang() {
- num_systems[0].lang.insert(StringName("ar"));
- num_systems[0].lang.insert(StringName("ar_AR"));
- num_systems[0].lang.insert(StringName("ar_BH"));
- num_systems[0].lang.insert(StringName("ar_DJ"));
- num_systems[0].lang.insert(StringName("ar_EG"));
- num_systems[0].lang.insert(StringName("ar_ER"));
- num_systems[0].lang.insert(StringName("ar_IL"));
- num_systems[0].lang.insert(StringName("ar_IQ"));
- num_systems[0].lang.insert(StringName("ar_JO"));
- num_systems[0].lang.insert(StringName("ar_KM"));
- num_systems[0].lang.insert(StringName("ar_KW"));
- num_systems[0].lang.insert(StringName("ar_LB"));
- num_systems[0].lang.insert(StringName("ar_MR"));
- num_systems[0].lang.insert(StringName("ar_OM"));
- num_systems[0].lang.insert(StringName("ar_PS"));
- num_systems[0].lang.insert(StringName("ar_QA"));
- num_systems[0].lang.insert(StringName("ar_SA"));
- num_systems[0].lang.insert(StringName("ar_SD"));
- num_systems[0].lang.insert(StringName("ar_SO"));
- num_systems[0].lang.insert(StringName("ar_SS"));
- num_systems[0].lang.insert(StringName("ar_SY"));
- num_systems[0].lang.insert(StringName("ar_TD"));
- num_systems[0].lang.insert(StringName("ar_YE"));
-
- num_systems[1].lang.insert(StringName("fa"));
- num_systems[1].lang.insert(StringName("ks"));
- num_systems[1].lang.insert(StringName("pa_Arab"));
- num_systems[1].lang.insert(StringName("ug"));
- num_systems[1].lang.insert(StringName("ur_IN"));
- num_systems[1].lang.insert(StringName("ur"));
- num_systems[1].lang.insert(StringName("uz_Arab"));
-
- num_systems[2].lang.insert(StringName("as"));
- num_systems[2].lang.insert(StringName("bn"));
- num_systems[2].lang.insert(StringName("mni"));
-
- num_systems[3].lang.insert(StringName("mr"));
- num_systems[3].lang.insert(StringName("ne"));
-
- num_systems[4].lang.insert(StringName("dz"));
-
- num_systems[5].lang.insert(StringName("sat"));
-
- num_systems[6].lang.insert(StringName("my"));
+ // Chakma numerals.
+ {
+ NumSystemData ccp;
+ ccp.lang.insert(StringName("ccp")); // Chakma
+ ccp.lang.insert(StringName("ccp_BD"));
+ ccp.lang.insert(StringName("ccp_IN"));
+ ccp.digits = U"𑄶𑄷𑄸𑄹𑄺𑄻𑄼𑄽𑄾𑄿.";
+ ccp.percent_sign = U"%";
+ ccp.exp = U"e";
+ num_systems.push_back(ccp);
+ }
+
+ // Adlam numerals.
+ {
+ NumSystemData ff;
+ ff.lang.insert(StringName("ff")); // Fulah
+ ff.lang.insert(StringName("ff_Adlm_BF"));
+ ff.lang.insert(StringName("ff_Adlm_CM"));
+ ff.lang.insert(StringName("ff_Adlm_GH"));
+ ff.lang.insert(StringName("ff_Adlm_GM"));
+ ff.lang.insert(StringName("ff_Adlm_GN"));
+ ff.lang.insert(StringName("ff_Adlm_GW"));
+ ff.lang.insert(StringName("ff_Adlm_LR"));
+ ff.lang.insert(StringName("ff_Adlm_MR"));
+ ff.lang.insert(StringName("ff_Adlm_NE"));
+ ff.lang.insert(StringName("ff_Adlm_NG"));
+ ff.lang.insert(StringName("ff_Adlm_SL"));
+ ff.lang.insert(StringName("ff_Adlm_SN"));
+ ff.digits = U"ðž¥ðž¥‘𞥒𞥓𞥔𞥕𞥖𞥗𞥘𞥙.";
+ ff.percent_sign = U"%";
+ ff.exp = U"e";
+ num_systems.push_back(ff);
+ }
}
String TextServerAdvanced::format_number(const String &p_string, const String &p_language) const {
const StringName lang = (p_language == "") ? TranslationServer::get_singleton()->get_tool_locale() : p_language;
String res = p_string;
- for (int i = 0; num_systems[i].lang.size() != 0; i++) {
+ for (int i = 0; i < num_systems.size(); i++) {
if (num_systems[i].lang.has(lang)) {
if (num_systems[i].digits == String()) {
return p_string;
@@ -4773,7 +4885,7 @@ String TextServerAdvanced::parse_number(const String &p_string, const String &p_
const StringName lang = (p_language == "") ? TranslationServer::get_singleton()->get_tool_locale() : p_language;
String res = p_string;
- for (int i = 0; num_systems[i].lang.size() != 0; i++) {
+ for (int i = 0; i < num_systems.size(); i++) {
if (num_systems[i].lang.has(lang)) {
if (num_systems[i].digits == String()) {
return p_string;
@@ -4800,7 +4912,7 @@ String TextServerAdvanced::parse_number(const String &p_string, const String &p_
String TextServerAdvanced::percent_sign(const String &p_language) const {
const StringName lang = (p_language == "") ? TranslationServer::get_singleton()->get_tool_locale() : p_language;
- for (int i = 0; num_systems[i].lang.size() != 0; i++) {
+ for (int i = 0; i < num_systems.size(); i++) {
if (num_systems[i].lang.has(lang)) {
if (num_systems[i].percent_sign == String()) {
return "%";
@@ -4814,11 +4926,11 @@ String TextServerAdvanced::percent_sign(const String &p_language) const {
TextServerAdvanced::TextServerAdvanced() {
_insert_num_systems_lang();
_insert_feature_sets();
- hb_bmp_create_font_funcs();
+ _bmp_create_font_funcs();
}
TextServerAdvanced::~TextServerAdvanced() {
- hb_bmp_free_font_funcs();
+ _bmp_free_font_funcs();
if (library != nullptr) {
FT_Done_FreeType(library);
}
diff --git a/modules/text_server_adv/text_server_adv.h b/modules/text_server_adv/text_server_adv.h
index 1feeada76d..333b68e074 100644
--- a/modules/text_server_adv/text_server_adv.h
+++ b/modules/text_server_adv/text_server_adv.h
@@ -79,6 +79,19 @@ class TextServerAdvanced : public TextServer {
static String interface_name;
static uint32_t interface_features;
+ struct NumSystemData {
+ Set<StringName> lang;
+ String digits;
+ String percent_sign;
+ String exp;
+ };
+
+ Vector<NumSystemData> num_systems;
+ Map<StringName, int32_t> feature_sets;
+
+ void _insert_num_systems_lang();
+ void _insert_feature_sets();
+
// ICU support data.
uint8_t *icu_data = nullptr;
@@ -258,24 +271,24 @@ class TextServerAdvanced : public TextServer {
static hb_font_funcs_t *funcs;
- struct hb_bmp_font_t {
+ struct bmp_font_t {
TextServerAdvanced::FontDataForSizeAdvanced *face = nullptr;
bool unref = false; /* Whether to destroy bm_face when done. */
};
- static hb_bmp_font_t *_hb_bmp_font_create(TextServerAdvanced::FontDataForSizeAdvanced *p_face, bool p_unref);
- static void _hb_bmp_font_destroy(void *p_data);
- static hb_bool_t hb_bmp_get_nominal_glyph(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_unicode, hb_codepoint_t *r_glyph, void *p_user_data);
- static hb_position_t hb_bmp_get_glyph_h_advance(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, void *p_user_data);
- static hb_position_t hb_bmp_get_glyph_v_advance(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, void *p_user_data);
- static hb_position_t hb_bmp_get_glyph_h_kerning(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_left_glyph, hb_codepoint_t p_right_glyph, void *p_user_data);
- static hb_bool_t hb_bmp_get_glyph_v_origin(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, hb_position_t *r_x, hb_position_t *r_y, void *p_user_data);
- static hb_bool_t hb_bmp_get_glyph_extents(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, hb_glyph_extents_t *r_extents, void *p_user_data);
- static hb_bool_t hb_bmp_get_font_h_extents(hb_font_t *p_font, void *p_font_data, hb_font_extents_t *r_metrics, void *p_user_data);
- static void hb_bmp_create_font_funcs();
- static void hb_bmp_free_font_funcs();
- static void _hb_bmp_font_set_funcs(hb_font_t *p_font, TextServerAdvanced::FontDataForSizeAdvanced *p_face, bool p_unref);
- static hb_font_t *hb_bmp_font_create(TextServerAdvanced::FontDataForSizeAdvanced *p_face, hb_destroy_func_t p_destroy);
+ static bmp_font_t *_bmp_font_create(TextServerAdvanced::FontDataForSizeAdvanced *p_face, bool p_unref);
+ static void _bmp_font_destroy(void *p_data);
+ static hb_bool_t _bmp_get_nominal_glyph(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_unicode, hb_codepoint_t *r_glyph, void *p_user_data);
+ static hb_position_t _bmp_get_glyph_h_advance(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, void *p_user_data);
+ static hb_position_t _bmp_get_glyph_v_advance(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, void *p_user_data);
+ static hb_position_t _bmp_get_glyph_h_kerning(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_left_glyph, hb_codepoint_t p_right_glyph, void *p_user_data);
+ static hb_bool_t _bmp_get_glyph_v_origin(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, hb_position_t *r_x, hb_position_t *r_y, void *p_user_data);
+ static hb_bool_t _bmp_get_glyph_extents(hb_font_t *p_font, void *p_font_data, hb_codepoint_t p_glyph, hb_glyph_extents_t *r_extents, void *p_user_data);
+ static hb_bool_t _bmp_get_font_h_extents(hb_font_t *p_font, void *p_font_data, hb_font_extents_t *r_metrics, void *p_user_data);
+ static void _bmp_create_font_funcs();
+ static void _bmp_free_font_funcs();
+ static void _bmp_font_set_funcs(hb_font_t *p_font, TextServerAdvanced::FontDataForSizeAdvanced *p_face, bool p_unref);
+ static hb_font_t *_bmp_font_create(TextServerAdvanced::FontDataForSizeAdvanced *p_face, hb_destroy_func_t p_destroy);
protected:
static void _bind_methods(){};
diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp
index 3d868d7be3..193588c4ed 100644
--- a/modules/text_server_fb/text_server_fb.cpp
+++ b/modules/text_server_fb/text_server_fb.cpp
@@ -111,22 +111,14 @@ bool TextServerFallback::is_locale_right_to_left(const String &p_locale) const {
return false; // No RTL support.
}
-#define OT_TAG(c1, c2, c3, c4) ((int32_t)((((uint32_t)(c1)&0xFF) << 24) | (((uint32_t)(c2)&0xFF) << 16) | (((uint32_t)(c3)&0xFF) << 8) | ((uint32_t)(c4)&0xFF)))
-
-struct FeatureInfo {
- int32_t tag;
- String name;
-};
-
-static FeatureInfo feature_set[] = {
- // Registered OpenType variation tags.
- { OT_TAG('i', 't', 'a', 'l'), "italic" },
- { OT_TAG('o', 'p', 's', 'z'), "optical_size" },
- { OT_TAG('s', 'l', 'n', 't'), "slant" },
- { OT_TAG('w', 'd', 't', 'h'), "width" },
- { OT_TAG('w', 'g', 'h', 't'), "weight" },
- { 0, String() },
-};
+void TextServerFallback::_insert_feature_sets() {
+ // Registered OpenType variation tag.
+ feature_sets.insert("italic", OT_TAG('i', 't', 'a', 'l'));
+ feature_sets.insert("optical_size", OT_TAG('o', 'p', 's', 'z'));
+ feature_sets.insert("slant", OT_TAG('s', 'l', 'n', 't'));
+ feature_sets.insert("width", OT_TAG('w', 'd', 't', 'h'));
+ feature_sets.insert("weight", OT_TAG('w', 'g', 'h', 't'));
+}
_FORCE_INLINE_ int32_t ot_tag_from_string(const char *p_str, int p_len) {
char tag[4];
@@ -150,10 +142,8 @@ _FORCE_INLINE_ int32_t ot_tag_from_string(const char *p_str, int p_len) {
}
int32_t TextServerFallback::name_to_tag(const String &p_name) const {
- for (int i = 0; feature_set[i].tag != 0; i++) {
- if (feature_set[i].name == p_name) {
- return feature_set[i].tag;
- }
+ if (feature_sets.has(p_name)) {
+ return feature_sets[p_name];
}
// No readable name, use tag string.
@@ -168,9 +158,9 @@ _FORCE_INLINE_ void ot_tag_to_string(int32_t p_tag, char *p_buf) {
}
String TextServerFallback::tag_to_name(int32_t p_tag) const {
- for (int i = 0; feature_set[i].tag != 0; i++) {
- if (feature_set[i].tag == p_tag) {
- return feature_set[i].name;
+ for (const KeyValue<StringName, int32_t> &E : feature_sets) {
+ if (E.value == p_tag) {
+ return E.key;
}
}
@@ -205,6 +195,10 @@ _FORCE_INLINE_ TextServerFallback::FontTexturePosition TextServerFallback::find_
continue;
}
+ if (ct.offsets.size() < ct.texture_w) {
+ continue;
+ }
+
ret.y = 0x7FFFFFFF;
ret.x = 0;
@@ -421,7 +415,6 @@ _FORCE_INLINE_ TextServerFallback::FontGlyph TextServerFallback::rasterize_msdf(
edgeColoringSimple(shape, 3.0); // Max. angle.
msdfgen::Bitmap<float, 4> image(w, h); // Texture size.
- //msdfgen::generateMTSDF(image, shape, p_pixel_range, 1.0, msdfgen::Vector2(-bounds.l, -bounds.b)); // Range, scale, translation.
DistancePixelConversion distancePixelConversion(p_pixel_range);
msdfgen::Projection projection(msdfgen::Vector2(1.0, 1.0), msdfgen::Vector2(-bounds.l, -bounds.b));
@@ -515,11 +508,11 @@ _FORCE_INLINE_ TextServerFallback::FontGlyph TextServerFallback::rasterize_bitma
case FT_PIXEL_MODE_MONO: {
int byte = i * bitmap.pitch + (j >> 3);
int bit = 1 << (7 - (j % 8));
- wr[ofs + 0] = 255; //grayscale as 1
+ wr[ofs + 0] = 255; // grayscale as 1
wr[ofs + 1] = (bitmap.buffer[byte] & bit) ? 255 : 0;
} break;
case FT_PIXEL_MODE_GRAY:
- wr[ofs + 0] = 255; //grayscale as 1
+ wr[ofs + 0] = 255; // grayscale as 1
wr[ofs + 1] = bitmap.buffer[i * bitmap.pitch + j];
break;
case FT_PIXEL_MODE_BGRA: {
@@ -683,7 +676,7 @@ _FORCE_INLINE_ bool TextServerFallback::_ensure_cache_for_size(FontDataFallback
FontDataForSizeFallback *fd = memnew(FontDataForSizeFallback);
fd->size = p_size;
- if (p_font_data->data_ptr) {
+ if (p_font_data->data_ptr && (p_font_data->data_size > 0)) {
// Init dynamic font.
#ifdef MODULE_FREETYPE_ENABLED
int error = 0;
@@ -1304,6 +1297,7 @@ void TextServerFallback::font_set_texture_offsets(RID p_font_rid, const Vector2i
MutexLock lock(fd->mutex);
Vector2i size = _get_size_outline(fd, p_size);
ERR_FAIL_COND(!_ensure_cache_for_size(fd, size));
+ ERR_FAIL_COND(p_texture_index < 0);
if (p_texture_index >= fd->cache[size]->textures.size()) {
fd->cache[size]->textures.resize(p_texture_index + 1);
}
@@ -1661,12 +1655,14 @@ Vector2 TextServerFallback::font_get_kerning(RID p_font_rid, int p_size, const V
}
int32_t TextServerFallback::font_get_glyph_index(RID p_font_rid, int p_size, char32_t p_char, char32_t p_variation_selector) const {
+ ERR_FAIL_COND_V_MSG((p_char >= 0xd800 && p_char <= 0xdfff) || (p_char > 0x10ffff), 0, "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_char, 16) + ".");
return (int32_t)p_char;
}
bool TextServerFallback::font_has_char(RID p_font_rid, char32_t p_char) const {
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
ERR_FAIL_COND_V(!fd, false);
+ ERR_FAIL_COND_V_MSG((p_char >= 0xd800 && p_char <= 0xdfff) || (p_char > 0x10ffff), false, "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_char, 16) + ".");
MutexLock lock(fd->mutex);
if (fd->cache.is_empty()) {
@@ -1719,6 +1715,8 @@ String TextServerFallback::font_get_supported_chars(RID p_font_rid) const {
void TextServerFallback::font_render_range(RID p_font_rid, const Vector2i &p_size, char32_t p_start, char32_t p_end) {
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
ERR_FAIL_COND(!fd);
+ ERR_FAIL_COND_MSG((p_start >= 0xd800 && p_start <= 0xdfff) || (p_start > 0x10ffff), "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_start, 16) + ".");
+ ERR_FAIL_COND_MSG((p_end >= 0xd800 && p_end <= 0xdfff) || (p_end > 0x10ffff), "Unicode parsing error: Invalid unicode codepoint " + String::num_int64(p_end, 16) + ".");
MutexLock lock(fd->mutex);
Vector2i size = _get_size_outline(fd, p_size);
@@ -2269,7 +2267,7 @@ bool TextServerFallback::shaped_text_resize_object(RID p_shaped, Variant p_key,
E.value.rect.position.y -= E.value.rect.size.y / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.y);
@@ -2297,7 +2295,7 @@ bool TextServerFallback::shaped_text_resize_object(RID p_shaped, Variant p_key,
E.value.rect.position.x -= E.value.rect.size.x / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.x);
@@ -2420,7 +2418,7 @@ RID TextServerFallback::shaped_text_substr(RID p_shaped, int p_start, int p_leng
E.value.rect.position.y -= E.value.rect.size.y / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.y);
@@ -2448,7 +2446,7 @@ RID TextServerFallback::shaped_text_substr(RID p_shaped, int p_start, int p_leng
E.value.rect.position.x -= E.value.rect.size.x / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.x);
@@ -2960,7 +2958,7 @@ bool TextServerFallback::shaped_text_shape(RID p_shaped) {
E.value.rect.position.y -= E.value.rect.size.y / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.y);
@@ -2988,7 +2986,7 @@ bool TextServerFallback::shaped_text_shape(RID p_shaped) {
E.value.rect.position.x -= E.value.rect.size.x / 2;
} break;
case INLINE_ALIGN_TOP_TO: {
- //NOP
+ // NOP
} break;
}
full_ascent = MAX(full_ascent, -E.value.rect.position.x);
@@ -3148,7 +3146,9 @@ float TextServerFallback::shaped_text_get_underline_thickness(RID p_shaped) cons
return sd->uthk;
}
-TextServerFallback::TextServerFallback(){};
+TextServerFallback::TextServerFallback() {
+ _insert_feature_sets();
+};
TextServerFallback::~TextServerFallback() {
if (library != nullptr) {
diff --git a/modules/text_server_fb/text_server_fb.h b/modules/text_server_fb/text_server_fb.h
index 992ce5018f..fb7de8f443 100644
--- a/modules/text_server_fb/text_server_fb.h
+++ b/modules/text_server_fb/text_server_fb.h
@@ -54,6 +54,8 @@
#include FT_BBOX_H
#endif
+#define OT_TAG(c1, c2, c3, c4) ((int32_t)((((uint32_t)(c1)&0xFF) << 24) | (((uint32_t)(c2)&0xFF) << 16) | (((uint32_t)(c3)&0xFF) << 8) | ((uint32_t)(c4)&0xFF)))
+
class TextServerFallback : public TextServer {
GDCLASS(TextServerFallback, TextServer);
_THREAD_SAFE_CLASS_
@@ -61,6 +63,10 @@ class TextServerFallback : public TextServer {
static String interface_name;
static uint32_t interface_features;
+ Map<StringName, int32_t> feature_sets;
+
+ void _insert_feature_sets();
+
// Font cache data.
#ifdef MODULE_FREETYPE_ENABLED
diff --git a/modules/theora/config.py b/modules/theora/config.py
index b063ed51f9..7f354a8fda 100644
--- a/modules/theora/config.py
+++ b/modules/theora/config.py
@@ -1,4 +1,6 @@
def can_build(env, platform):
+ if env["arch"].startswith("rv"):
+ return False
return env.module_check_dependencies("theora", ["ogg", "vorbis"])
diff --git a/modules/theora/doc_classes/VideoStreamTheora.xml b/modules/theora/doc_classes/VideoStreamTheora.xml
index 2dfcd27dff..725f87b046 100644
--- a/modules/theora/doc_classes/VideoStreamTheora.xml
+++ b/modules/theora/doc_classes/VideoStreamTheora.xml
@@ -4,7 +4,7 @@
[VideoStream] resource for Ogg Theora videos.
</brief_description>
<description>
- [VideoStream] resource handling the [url=https://www.theora.org/]Ogg Theora[/url] video format with [code].ogv[/code] extension. The Theora codec is less efficient than [VideoStreamWebm]'s VP8 and VP9, but it requires less CPU resources to decode. The Theora codec is decoded on the CPU.
+ [VideoStream] resource handling the [url=https://www.theora.org/]Ogg Theora[/url] video format with [code].ogv[/code] extension. The Theora codec is decoded on the CPU.
[b]Note:[/b] While Ogg Theora videos can also have an [code].ogg[/code] extension, you will have to rename the extension to [code].ogv[/code] to use those videos within Godot.
</description>
<tutorials>
diff --git a/modules/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp
index 8e80dfffca..ef434f107e 100644
--- a/modules/theora/video_stream_theora.cpp
+++ b/modules/theora/video_stream_theora.cpp
@@ -603,7 +603,7 @@ float VideoStreamPlaybackTheora::get_playback_position() const {
};
void VideoStreamPlaybackTheora::seek(float p_time) {
- WARN_PRINT_ONCE("Seeking in Theora and WebM videos is not implemented yet (it's only supported for GDNative-provided video streams).");
+ WARN_PRINT_ONCE("Seeking in Theora videos is not implemented yet (it's only supported for GDNative-provided video streams).");
}
void VideoStreamPlaybackTheora::set_mix_callback(AudioMixCallback p_callback, void *p_userdata) {
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index 54d310e636..8f4e807295 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -1688,7 +1688,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
// debugger break did not happen
if (!VisualScriptLanguage::singleton->debug_break(error_str, false)) {
- _err_print_error(err_func.utf8().get_data(), err_file.utf8().get_data(), err_line, error_str.utf8().get_data(), ERR_HANDLER_SCRIPT);
+ _err_print_error(err_func.utf8().get_data(), err_file.utf8().get_data(), err_line, error_str.utf8().get_data(), false, ERR_HANDLER_SCRIPT);
}
//}
diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h
index bf2d8e9683..78881f0a53 100644
--- a/modules/visual_script/visual_script_nodes.h
+++ b/modules/visual_script/visual_script_nodes.h
@@ -90,12 +90,6 @@ public:
void set_stack_size(int p_size);
int get_stack_size() const;
- void set_return_type_enabled(bool p_returns);
- bool is_return_type_enabled() const;
-
- void set_return_type(Variant::Type p_type);
- Variant::Type get_return_type() const;
-
void set_rpc_mode(Multiplayer::RPCMode p_mode);
Multiplayer::RPCMode get_rpc_mode() const;
diff --git a/modules/webm/SCsub b/modules/webm/SCsub
deleted file mode 100644
index 44e80e2870..0000000000
--- a/modules/webm/SCsub
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-
-Import("env")
-Import("env_modules")
-
-env_webm = env_modules.Clone()
-
-# Thirdparty source files
-
-thirdparty_obj = []
-
-thirdparty_dir = "#thirdparty/libsimplewebm/"
-thirdparty_sources = [
- "libwebm/mkvparser/mkvparser.cc",
- "OpusVorbisDecoder.cpp",
- "VPXDecoder.cpp",
- "WebMDemuxer.cpp",
-]
-thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
-
-env_webm.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "libwebm/"])
-
-# also requires libogg, libvorbis and libopus
-if env["builtin_libogg"]:
- env_webm.Prepend(CPPPATH=["#thirdparty/libogg"])
-if env["builtin_libvorbis"]:
- env_webm.Prepend(CPPPATH=["#thirdparty/libvorbis"])
-if env["builtin_opus"]:
- env_webm.Prepend(CPPPATH=["#thirdparty/opus"])
-
-if env["builtin_libvpx"]:
- env_webm.Prepend(CPPPATH=["#thirdparty/libvpx"])
- SConscript("libvpx/SCsub")
-
-env_thirdparty = env_webm.Clone()
-env_thirdparty.disable_warnings()
-env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
-env.modules_sources += thirdparty_obj
-
-# Godot source files
-
-module_obj = []
-
-env_webm.add_source_files(module_obj, "*.cpp")
-env.modules_sources += module_obj
-
-# Needed to force rebuilding the module files when the thirdparty library is updated.
-env.Depends(module_obj, thirdparty_obj)
diff --git a/modules/webm/config.py b/modules/webm/config.py
deleted file mode 100644
index 99f8ace114..0000000000
--- a/modules/webm/config.py
+++ /dev/null
@@ -1,19 +0,0 @@
-def can_build(env, platform):
- if platform in ["iphone"]:
- return False
-
- return env.module_check_dependencies("webm", ["ogg", "opus", "vorbis"])
-
-
-def configure(env):
- pass
-
-
-def get_doc_classes():
- return [
- "VideoStreamWebm",
- ]
-
-
-def get_doc_path():
- return "doc_classes"
diff --git a/modules/webm/doc_classes/VideoStreamWebm.xml b/modules/webm/doc_classes/VideoStreamWebm.xml
deleted file mode 100644
index e04d02d6ab..0000000000
--- a/modules/webm/doc_classes/VideoStreamWebm.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VideoStreamWebm" inherits="VideoStream" version="4.0">
- <brief_description>
- [VideoStream] resource for WebM videos.
- </brief_description>
- <description>
- [VideoStream] resource handling the [url=https://www.webmproject.org/]WebM[/url] video format with [code].webm[/code] extension. Both the VP8 and VP9 codecs are supported. The VP8 and VP9 codecs are more efficient than [VideoStreamTheora], but they require more CPU resources to decode (especially VP9). Both the VP8 and VP9 codecs are decoded on the CPU.
- [b]Note:[/b] Alpha channel (also known as transparency) is not supported. The video will always appear to have a black background, even if it originally contains an alpha channel.
- [b]Note:[/b] There are known bugs and performance issues with WebM video playback in Godot. If you run into problems, try using the Ogg Theora format instead: [VideoStreamTheora]
- </description>
- <tutorials>
- </tutorials>
- <methods>
- <method name="get_file">
- <return type="String" />
- <description>
- Returns the WebM video file handled by this [VideoStreamWebm].
- </description>
- </method>
- <method name="set_file">
- <return type="void" />
- <argument index="0" name="file" type="String" />
- <description>
- Sets the WebM video file that this [VideoStreamWebm] resource handles. The [code]file[/code] name should have the [code].webm[/code] extension.
- </description>
- </method>
- </methods>
-</class>
diff --git a/modules/webm/libvpx/SCsub b/modules/webm/libvpx/SCsub
deleted file mode 100644
index 4334cf732b..0000000000
--- a/modules/webm/libvpx/SCsub
+++ /dev/null
@@ -1,382 +0,0 @@
-#!/usr/bin/env python
-
-Import("env")
-Import("env_modules")
-
-# Thirdparty sources
-
-libvpx_dir = "#thirdparty/libvpx/"
-
-libvpx_sources = [
- "vp8/vp8_dx_iface.c",
- "vp8/common/generic/systemdependent.c",
- "vp8/common/alloccommon.c",
- "vp8/common/blockd.c",
- "vp8/common/copy_c.c",
- "vp8/common/debugmodes.c",
- "vp8/common/dequantize.c",
- "vp8/common/entropy.c",
- "vp8/common/entropymode.c",
- "vp8/common/entropymv.c",
- "vp8/common/extend.c",
- "vp8/common/filter.c",
- "vp8/common/findnearmv.c",
- "vp8/common/idct_blk.c",
- "vp8/common/idctllm.c",
- "vp8/common/loopfilter_filters.c",
- "vp8/common/mbpitch.c",
- "vp8/common/modecont.c",
- "vp8/common/quant_common.c",
- "vp8/common/reconinter.c",
- "vp8/common/reconintra.c",
- "vp8/common/reconintra4x4.c",
- "vp8/common/rtcd.c",
- "vp8/common/setupintrarecon.c",
- "vp8/common/swapyv12buffer.c",
- "vp8/common/treecoder.c",
- "vp8/common/vp8_loopfilter.c",
- "vp8/decoder/dboolhuff.c",
- "vp8/decoder/decodeframe.c",
- "vp8/decoder/decodemv.c",
- "vp8/decoder/detokenize.c",
- "vp8/decoder/onyxd_if.c",
- "vp9/vp9_dx_iface.c",
- "vp9/common/vp9_alloccommon.c",
- "vp9/common/vp9_blockd.c",
- "vp9/common/vp9_common_data.c",
- "vp9/common/vp9_debugmodes.c",
- "vp9/common/vp9_entropy.c",
- "vp9/common/vp9_entropymode.c",
- "vp9/common/vp9_entropymv.c",
- "vp9/common/vp9_filter.c",
- "vp9/common/vp9_frame_buffers.c",
- "vp9/common/vp9_idct.c",
- "vp9/common/vp9_loopfilter.c",
- "vp9/common/vp9_mvref_common.c",
- "vp9/common/vp9_pred_common.c",
- "vp9/common/vp9_quant_common.c",
- "vp9/common/vp9_reconinter.c",
- "vp9/common/vp9_reconintra.c",
- "vp9/common/vp9_rtcd.c",
- "vp9/common/vp9_scale.c",
- "vp9/common/vp9_scan.c",
- "vp9/common/vp9_seg_common.c",
- "vp9/common/vp9_thread_common.c",
- "vp9/common/vp9_tile_common.c",
- "vp9/decoder/vp9_decodeframe.c",
- "vp9/decoder/vp9_decodemv.c",
- "vp9/decoder/vp9_decoder.c",
- "vp9/decoder/vp9_detokenize.c",
- "vp9/decoder/vp9_dsubexp.c",
- "vp9/decoder/vp9_dthread.c",
- "vpx/src/vpx_codec.c",
- "vpx/src/vpx_decoder.c",
- "vpx/src/vpx_image.c",
- "vpx/src/vpx_psnr.c",
- "vpx_dsp/bitreader.c",
- "vpx_dsp/bitreader_buffer.c",
- "vpx_dsp/intrapred.c",
- "vpx_dsp/inv_txfm.c",
- "vpx_dsp/loopfilter.c",
- "vpx_dsp/prob.c",
- "vpx_dsp/vpx_convolve.c",
- "vpx_dsp/vpx_dsp_rtcd.c",
- "vpx_mem/vpx_mem.c",
- "vpx_scale/vpx_scale_rtcd.c",
- "vpx_scale/generic/yv12config.c",
- "vpx_scale/generic/yv12extend.c",
- "vpx_util/vpx_thread.c",
-]
-
-libvpx_sources_mt = [
- "vp8/decoder/threading.c",
-]
-
-libvpx_sources_intrin_x86 = [
- "vp8/common/x86/filter_x86.c",
- "vp8/common/x86/loopfilter_x86.c",
- "vp8/common/x86/vp8_asm_stubs.c",
- "vpx_dsp/x86/vpx_asm_stubs.c",
-]
-libvpx_sources_intrin_x86_mmx = [
- "vp8/common/x86/idct_blk_mmx.c",
-]
-libvpx_sources_intrin_x86_sse2 = [
- "vp8/common/x86/idct_blk_sse2.c",
- "vp9/common/x86/vp9_idct_intrin_sse2.c",
- "vpx_dsp/x86/inv_txfm_sse2.c",
- "vpx_dsp/x86/loopfilter_sse2.c",
-]
-libvpx_sources_intrin_x86_ssse3 = [
- "vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c",
-]
-libvpx_sources_intrin_x86_avx2 = [
- "vpx_dsp/x86/loopfilter_avx2.c",
- "vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c",
-]
-libvpx_sources_x86asm = [
- "vp8/common/x86/copy_sse2.asm",
- "vp8/common/x86/copy_sse3.asm",
- "vp8/common/x86/dequantize_mmx.asm",
- "vp8/common/x86/idctllm_mmx.asm",
- "vp8/common/x86/idctllm_sse2.asm",
- "vp8/common/x86/iwalsh_mmx.asm",
- "vp8/common/x86/iwalsh_sse2.asm",
- "vp8/common/x86/loopfilter_sse2.asm",
- "vp8/common/x86/recon_mmx.asm",
- "vp8/common/x86/recon_sse2.asm",
- "vp8/common/x86/subpixel_mmx.asm",
- "vp8/common/x86/subpixel_sse2.asm",
- "vp8/common/x86/subpixel_ssse3.asm",
- "vp8/common/x86/vp8_loopfilter_mmx.asm",
- "vpx_dsp/x86/intrapred_sse2.asm",
- "vpx_dsp/x86/intrapred_ssse3.asm",
- "vpx_dsp/x86/inv_wht_sse2.asm",
- "vpx_dsp/x86/vpx_convolve_copy_sse2.asm",
- "vpx_dsp/x86/vpx_subpixel_8t_sse2.asm",
- "vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm",
- "vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm",
- "vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm",
- "vpx_ports/emms.asm",
-]
-libvpx_sources_x86_64asm = [
- "vp8/common/x86/loopfilter_block_sse2_x86_64.asm",
- "vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm",
-]
-
-libvpx_sources_arm = [
- "vpx_ports/arm_cpudetect.c",
- "vp8/common/arm/loopfilter_arm.c",
-]
-libvpx_sources_arm_neon = [
- "vp8/common/arm/neon/bilinearpredict_neon.c",
- "vp8/common/arm/neon/copymem_neon.c",
- "vp8/common/arm/neon/dc_only_idct_add_neon.c",
- "vp8/common/arm/neon/dequant_idct_neon.c",
- "vp8/common/arm/neon/dequantizeb_neon.c",
- "vp8/common/arm/neon/idct_blk_neon.c",
- "vp8/common/arm/neon/idct_dequant_0_2x_neon.c",
- "vp8/common/arm/neon/idct_dequant_full_2x_neon.c",
- "vp8/common/arm/neon/iwalsh_neon.c",
- "vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c",
- "vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c",
- "vp8/common/arm/neon/mbloopfilter_neon.c",
- "vp8/common/arm/neon/shortidct4x4llm_neon.c",
- "vp8/common/arm/neon/sixtappredict_neon.c",
- "vp8/common/arm/neon/vp8_loopfilter_neon.c",
- "vp9/common/arm/neon/vp9_iht4x4_add_neon.c",
- "vp9/common/arm/neon/vp9_iht8x8_add_neon.c",
- "vpx_dsp/arm/idct16x16_1_add_neon.c",
- "vpx_dsp/arm/idct16x16_add_neon.c",
- "vpx_dsp/arm/idct16x16_neon.c",
- "vpx_dsp/arm/idct32x32_1_add_neon.c",
- "vpx_dsp/arm/idct32x32_add_neon.c",
- "vpx_dsp/arm/idct4x4_1_add_neon.c",
- "vpx_dsp/arm/idct4x4_add_neon.c",
- "vpx_dsp/arm/idct8x8_1_add_neon.c",
- "vpx_dsp/arm/idct8x8_add_neon.c",
- "vpx_dsp/arm/intrapred_neon.c",
- "vpx_dsp/arm/loopfilter_16_neon.c",
- "vpx_dsp/arm/loopfilter_4_neon.c",
- "vpx_dsp/arm/loopfilter_8_neon.c",
- "vpx_dsp/arm/loopfilter_neon.c",
- "vpx_dsp/arm/vpx_convolve8_avg_neon.c",
- "vpx_dsp/arm/vpx_convolve8_neon.c",
- "vpx_dsp/arm/vpx_convolve_avg_neon.c",
- "vpx_dsp/arm/vpx_convolve_copy_neon.c",
- "vpx_dsp/arm/vpx_convolve_neon.c",
-]
-libvpx_sources_arm_neon_gas = [
- "vpx_dsp/arm/gas/intrapred_neon_asm.s",
- "vpx_dsp/arm/gas/loopfilter_mb_neon.s",
- "vpx_dsp/arm/gas/save_reg_neon.s",
-]
-libvpx_sources_arm_neon_armasm_ms = [
- "vpx_dsp/arm/armasm_ms/intrapred_neon_asm.asm",
- "vpx_dsp/arm/armasm_ms/loopfilter_mb_neon.asm",
- "vpx_dsp/arm/armasm_ms/save_reg_neon.asm",
-]
-libvpx_sources_arm_neon_gas_apple = [
- "vpx_dsp/arm/gas_apple/intrapred_neon_asm.s",
- "vpx_dsp/arm/gas_apple/loopfilter_mb_neon.s",
- "vpx_dsp/arm/gas_apple/save_reg_neon.s",
-]
-
-libvpx_sources = [libvpx_dir + file for file in libvpx_sources]
-libvpx_sources_mt = [libvpx_dir + file for file in libvpx_sources_mt]
-libvpx_sources_intrin_x86 = [libvpx_dir + file for file in libvpx_sources_intrin_x86]
-libvpx_sources_intrin_x86_mmx = [libvpx_dir + file for file in libvpx_sources_intrin_x86_mmx]
-libvpx_sources_intrin_x86_sse2 = [libvpx_dir + file for file in libvpx_sources_intrin_x86_sse2]
-libvpx_sources_intrin_x86_ssse3 = [libvpx_dir + file for file in libvpx_sources_intrin_x86_ssse3]
-libvpx_sources_intrin_x86_avx2 = [libvpx_dir + file for file in libvpx_sources_intrin_x86_avx2]
-libvpx_sources_x86asm = [libvpx_dir + file for file in libvpx_sources_x86asm]
-libvpx_sources_x86_64asm = [libvpx_dir + file for file in libvpx_sources_x86_64asm]
-libvpx_sources_arm = [libvpx_dir + file for file in libvpx_sources_arm]
-libvpx_sources_arm_neon = [libvpx_dir + file for file in libvpx_sources_arm_neon]
-libvpx_sources_arm_neon_gas = [libvpx_dir + file for file in libvpx_sources_arm_neon_gas]
-libvpx_sources_arm_neon_armasm_ms = [libvpx_dir + file for file in libvpx_sources_arm_neon_armasm_ms]
-libvpx_sources_arm_neon_gas_apple = [libvpx_dir + file for file in libvpx_sources_arm_neon_gas_apple]
-
-
-env_libvpx = env_modules.Clone()
-env_libvpx.disable_warnings()
-env_libvpx.Prepend(CPPPATH=[libvpx_dir])
-
-webm_multithread = env["platform"] != "javascript"
-
-cpu_bits = env["bits"]
-webm_cpu_x86 = False
-webm_cpu_arm = False
-if env["platform"] == "uwp":
- if "arm" in env["PROGSUFFIX"]:
- webm_cpu_arm = True
- else:
- webm_cpu_x86 = True
-else:
- import platform
-
- is_x11_or_server_arm = env["platform"] == "linuxbsd" and (
- platform.machine().startswith("arm") or platform.machine().startswith("aarch")
- )
- is_macos_x86 = env["platform"] == "osx" and ("arch" in env and (env["arch"] != "arm64"))
- is_ios_x86 = env["platform"] == "iphone" and ("arch" in env and env["arch"].startswith("x86"))
- is_android_x86 = env["platform"] == "android" and env["android_arch"].startswith("x86")
- if is_android_x86:
- cpu_bits = "32" if env["android_arch"] == "x86" else "64"
- webm_cpu_x86 = (
- not is_x11_or_server_arm
- and (cpu_bits == "32" or cpu_bits == "64")
- and (
- env["platform"] == "windows"
- or env["platform"] == "linuxbsd"
- or env["platform"] == "haiku"
- or is_macos_x86
- or is_android_x86
- or is_ios_x86
- )
- )
- webm_cpu_arm = (
- is_x11_or_server_arm
- or (not is_macos_x86 and env["platform"] == "osx")
- or (not is_ios_x86 and env["platform"] == "iphone")
- or (not is_android_x86 and env["platform"] == "android")
- )
-
-if webm_cpu_x86:
- import subprocess
- import os
-
- yasm_paths = [
- "yasm",
- "../../../yasm",
- ]
-
- yasm_found = False
-
- devnull = open(os.devnull)
- for yasm_path in yasm_paths:
- try:
- yasm_found = True
- subprocess.Popen([yasm_path, "--version"], stdout=devnull, stderr=devnull).communicate()
- except Exception:
- yasm_found = False
- if yasm_found:
- break
-
- if not yasm_found:
- webm_cpu_x86 = False
- print("YASM is necessary for WebM SIMD optimizations.")
-
-webm_simd_optimizations = False
-
-if webm_cpu_x86:
- if env["platform"] == "windows" or env["platform"] == "uwp":
- env_libvpx["ASFORMAT"] = "win"
- elif env["platform"] == "osx" or env["platform"] == "iphone":
- env_libvpx["ASFORMAT"] = "macho"
- else:
- env_libvpx["ASFORMAT"] = "elf"
- env_libvpx["ASFORMAT"] += cpu_bits
-
- env_libvpx["AS"] = "yasm"
- env_libvpx["ASFLAGS"] = "-I" + libvpx_dir[1:] + " -f $ASFORMAT -D $ASCPU"
- env_libvpx["ASCOM"] = "$AS $ASFLAGS -o $TARGET $SOURCES"
-
- if cpu_bits == "32":
- env_libvpx["ASCPU"] = "X86_32"
- elif cpu_bits == "64":
- env_libvpx["ASCPU"] = "X86_64"
-
- env_libvpx.Append(CPPDEFINES=["WEBM_X86ASM"])
-
- webm_simd_optimizations = True
-
-if webm_cpu_arm:
- if env["platform"] == "iphone":
- env_libvpx["ASFLAGS"] = "-arch armv7"
- elif env["platform"] == "android" and env["android_arch"] == "armv7" or env["platform"] == "linuxbsd":
- env_libvpx["ASFLAGS"] = "-mfpu=neon"
- elif env["platform"] == "uwp":
- env_libvpx["AS"] = "armasm"
- env_libvpx["ASFLAGS"] = ""
- env_libvpx["ASCOM"] = "$AS $ASFLAGS -o $TARGET $SOURCES"
-
- env_libvpx.Append(CPPDEFINES=["WEBM_ARMASM"])
-
- webm_simd_optimizations = True
-
-if webm_simd_optimizations == False:
- print("WebM SIMD optimizations are disabled. Check if your CPU architecture, CPU bits or platform are supported!")
-
-env_libvpx.add_source_files(env.modules_sources, libvpx_sources)
-
-if webm_multithread:
- env_libvpx.add_source_files(env.modules_sources, libvpx_sources_mt)
-
-if webm_cpu_x86:
- is_clang_or_gcc = (
- ("gcc" in os.path.basename(env["CC"])) or ("clang" in os.path.basename(env["CC"])) or ("osxcross" in env)
- )
-
- env_libvpx_mmx = env_libvpx.Clone()
- if cpu_bits == "32" and is_clang_or_gcc:
- env_libvpx_mmx.Append(CCFLAGS=["-mmmx"])
- env_libvpx_mmx.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_mmx)
-
- env_libvpx_sse2 = env_libvpx.Clone()
- if cpu_bits == "32" and is_clang_or_gcc:
- env_libvpx_sse2.Append(CCFLAGS=["-msse2"])
- env_libvpx_sse2.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_sse2)
-
- env_libvpx_ssse3 = env_libvpx.Clone()
- if is_clang_or_gcc:
- env_libvpx_ssse3.Append(CCFLAGS=["-mssse3"])
- env_libvpx_ssse3.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_ssse3)
-
- env_libvpx_avx2 = env_libvpx.Clone()
- if is_clang_or_gcc:
- env_libvpx_avx2.Append(CCFLAGS=["-mavx2"])
- env_libvpx_avx2.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_avx2)
-
- env_libvpx.add_source_files(env.modules_sources, libvpx_sources_intrin_x86)
-
- env_libvpx.add_source_files(env.modules_sources, libvpx_sources_x86asm)
- if cpu_bits == "64":
- env_libvpx.add_source_files(env.modules_sources, libvpx_sources_x86_64asm)
-elif webm_cpu_arm:
- env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm)
- if env["platform"] == "android":
- env_libvpx.Prepend(CPPPATH=[libvpx_dir + "third_party/android"])
- env_libvpx.add_source_files(env.modules_sources, [libvpx_dir + "third_party/android/cpu-features.c"])
-
- env_libvpx_neon = env_libvpx.Clone()
- env_libvpx_neon.add_source_files(env.modules_sources, libvpx_sources_arm_neon)
-
- if env["platform"] == "uwp":
- env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_armasm_ms)
- elif env["platform"] == "iphone":
- env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_gas_apple)
- elif (is_x11_or_server_arm and cpu_bits == "32") or (
- env["platform"] == "android" and not env["android_arch"] == "arm64v8"
- ):
- env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_gas)
diff --git a/modules/webm/register_types.cpp b/modules/webm/register_types.cpp
deleted file mode 100644
index 8f690a6892..0000000000
--- a/modules/webm/register_types.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*************************************************************************/
-/* register_types.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "register_types.h"
-
-#include "video_stream_webm.h"
-
-static Ref<ResourceFormatLoaderWebm> resource_loader_webm;
-
-void register_webm_types() {
- resource_loader_webm.instantiate();
- ResourceLoader::add_resource_format_loader(resource_loader_webm, true);
-
- GDREGISTER_CLASS(VideoStreamWebm);
-}
-
-void unregister_webm_types() {
- ResourceLoader::remove_resource_format_loader(resource_loader_webm);
- resource_loader_webm.unref();
-}
diff --git a/modules/webm/register_types.h b/modules/webm/register_types.h
deleted file mode 100644
index d090fe745b..0000000000
--- a/modules/webm/register_types.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*************************************************************************/
-/* register_types.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (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 WEBM_REGISTER_TYPES_H
-#define WEBM_REGISTER_TYPES_H
-
-void register_webm_types();
-void unregister_webm_types();
-
-#endif // WEBM_REGISTER_TYPES_H
diff --git a/modules/webm/video_stream_webm.cpp b/modules/webm/video_stream_webm.cpp
deleted file mode 100644
index 187a27b6c2..0000000000
--- a/modules/webm/video_stream_webm.cpp
+++ /dev/null
@@ -1,469 +0,0 @@
-/*************************************************************************/
-/* video_stream_webm.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (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 "video_stream_webm.h"
-
-#include "core/config/project_settings.h"
-#include "core/io/file_access.h"
-#include "core/os/os.h"
-#include "servers/audio_server.h"
-
-#include "thirdparty/misc/yuv2rgb.h"
-
-// libsimplewebm
-#include <OpusVorbisDecoder.hpp>
-#include <VPXDecoder.hpp>
-
-// libvpx
-#include <vpx/vpx_image.h>
-
-// libwebm
-#include <mkvparser/mkvparser.h>
-
-class MkvReader : public mkvparser::IMkvReader {
-public:
- MkvReader(const String &p_file) {
- file = FileAccess::open(p_file, FileAccess::READ);
-
- ERR_FAIL_COND_MSG(!file, "Failed loading resource: '" + p_file + "'.");
- }
- ~MkvReader() {
- if (file) {
- memdelete(file);
- }
- }
-
- virtual int Read(long long pos, long len, unsigned char *buf) {
- if (file) {
- if (file->get_position() != (uint64_t)pos) {
- file->seek(pos);
- }
- if (file->get_buffer(buf, len) == (uint64_t)len) {
- return 0;
- }
- }
- return -1;
- }
-
- virtual int Length(long long *total, long long *available) {
- if (file) {
- const uint64_t len = file->get_length();
- if (total) {
- *total = len;
- }
- if (available) {
- *available = len;
- }
- return 0;
- }
- return -1;
- }
-
-private:
- FileAccess *file;
-};
-
-/**/
-
-VideoStreamPlaybackWebm::VideoStreamPlaybackWebm() :
-
- texture(memnew(ImageTexture)) {}
-VideoStreamPlaybackWebm::~VideoStreamPlaybackWebm() {
- delete_pointers();
-}
-
-bool VideoStreamPlaybackWebm::open_file(const String &p_file) {
- file_name = p_file;
- webm = memnew(WebMDemuxer(new MkvReader(file_name), 0, audio_track));
- if (webm->isOpen()) {
- video = memnew(VPXDecoder(*webm, OS::get_singleton()->get_processor_count()));
- if (video->isOpen()) {
- audio = memnew(OpusVorbisDecoder(*webm));
- if (audio->isOpen()) {
- audio_frame = memnew(WebMFrame);
- pcm = (float *)memalloc(sizeof(float) * audio->getBufferSamples() * webm->getChannels());
- } else {
- memdelete(audio);
- audio = nullptr;
- }
-
- frame_data.resize((webm->getWidth() * webm->getHeight()) << 2);
- Ref<Image> img;
- img.instantiate();
- img->create(webm->getWidth(), webm->getHeight(), false, Image::FORMAT_RGBA8);
- texture->create_from_image(img);
-
- return true;
- }
- memdelete(video);
- video = nullptr;
- }
- memdelete(webm);
- webm = nullptr;
- return false;
-}
-
-void VideoStreamPlaybackWebm::stop() {
- if (playing) {
- delete_pointers();
-
- pcm = nullptr;
-
- audio_frame = nullptr;
- video_frames = nullptr;
-
- video = nullptr;
- audio = nullptr;
-
- open_file(file_name); //Should not fail here...
-
- video_frames_capacity = video_frames_pos = 0;
- num_decoded_samples = 0;
- samples_offset = -1;
- video_frame_delay = video_pos = 0.0;
- }
- time = 0.0;
- playing = false;
-}
-
-void VideoStreamPlaybackWebm::play() {
- stop();
-
- delay_compensation = ProjectSettings::get_singleton()->get("audio/video/video_delay_compensation_ms");
- delay_compensation /= 1000.0;
-
- playing = true;
-}
-
-bool VideoStreamPlaybackWebm::is_playing() const {
- return playing;
-}
-
-void VideoStreamPlaybackWebm::set_paused(bool p_paused) {
- paused = p_paused;
-}
-
-bool VideoStreamPlaybackWebm::is_paused() const {
- return paused;
-}
-
-void VideoStreamPlaybackWebm::set_loop(bool p_enable) {
- //Empty
-}
-
-bool VideoStreamPlaybackWebm::has_loop() const {
- return false;
-}
-
-float VideoStreamPlaybackWebm::get_length() const {
- if (webm) {
- return webm->getLength();
- }
- return 0.0f;
-}
-
-float VideoStreamPlaybackWebm::get_playback_position() const {
- return video_pos;
-}
-
-void VideoStreamPlaybackWebm::seek(float p_time) {
- WARN_PRINT_ONCE("Seeking in Theora and WebM videos is not implemented yet (it's only supported for GDNative-provided video streams).");
-}
-
-void VideoStreamPlaybackWebm::set_audio_track(int p_idx) {
- audio_track = p_idx;
-}
-
-Ref<Texture2D> VideoStreamPlaybackWebm::get_texture() const {
- return texture;
-}
-
-void VideoStreamPlaybackWebm::update(float p_delta) {
- if ((!playing || paused) || !video) {
- return;
- }
-
- time += p_delta;
-
- if (time < video_pos) {
- return;
- }
-
- bool audio_buffer_full = false;
-
- if (samples_offset > -1) {
- //Mix remaining samples
- const int to_read = num_decoded_samples - samples_offset;
- const int mixed = mix_callback(mix_udata, pcm + samples_offset * webm->getChannels(), to_read);
- if (mixed != to_read) {
- samples_offset += mixed;
- audio_buffer_full = true;
- } else {
- samples_offset = -1;
- }
- }
-
- const bool hasAudio = (audio && mix_callback);
- while ((hasAudio && !audio_buffer_full && !has_enough_video_frames()) ||
- (!hasAudio && video_frames_pos == 0)) {
- if (hasAudio && !audio_buffer_full && audio_frame->isValid() &&
- audio->getPCMF(*audio_frame, pcm, num_decoded_samples) && num_decoded_samples > 0) {
- const int mixed = mix_callback(mix_udata, pcm, num_decoded_samples);
-
- if (mixed != num_decoded_samples) {
- samples_offset = mixed;
- audio_buffer_full = true;
- }
- }
-
- WebMFrame *video_frame;
- if (video_frames_pos >= video_frames_capacity) {
- WebMFrame **video_frames_new = (WebMFrame **)memrealloc(video_frames, ++video_frames_capacity * sizeof(void *));
- ERR_FAIL_COND(!video_frames_new); //Out of memory
- (video_frames = video_frames_new)[video_frames_capacity - 1] = memnew(WebMFrame);
- }
- video_frame = video_frames[video_frames_pos];
-
- if (!webm->readFrame(video_frame, audio_frame)) { //This will invalidate frames
- break; //Can't demux, EOS?
- }
-
- if (video_frame->isValid()) {
- ++video_frames_pos;
- }
- };
-
- bool video_frame_done = false;
- while (video_frames_pos > 0 && !video_frame_done) {
- WebMFrame *video_frame = video_frames[0];
-
- // It seems VPXDecoder::decode has to be executed even though we might skip this frame
- if (video->decode(*video_frame)) {
- VPXDecoder::IMAGE_ERROR err;
- VPXDecoder::Image image;
-
- if (should_process(*video_frame)) {
- if ((err = video->getImage(image)) != VPXDecoder::NO_FRAME) {
- if (err == VPXDecoder::NO_ERROR && image.w == webm->getWidth() && image.h == webm->getHeight()) {
- uint8_t *w = frame_data.ptrw();
- bool converted = false;
-
- if (image.chromaShiftW == 0 && image.chromaShiftH == 0 && image.cs == VPX_CS_SRGB) {
- uint8_t *wp = w;
- unsigned char *rRow = image.planes[2];
- unsigned char *gRow = image.planes[0];
- unsigned char *bRow = image.planes[1];
- for (int i = 0; i < image.h; i++) {
- for (int j = 0; j < image.w; j++) {
- *wp++ = rRow[j];
- *wp++ = gRow[j];
- *wp++ = bRow[j];
- *wp++ = 255;
- }
- rRow += image.linesize[2];
- gRow += image.linesize[0];
- bRow += image.linesize[1];
- }
- converted = true;
- } else if (image.chromaShiftW == 1 && image.chromaShiftH == 1) {
- yuv420_2_rgb8888(w, image.planes[0], image.planes[1], image.planes[2], image.w, image.h, image.linesize[0], image.linesize[1], image.w << 2);
- //libyuv::I420ToARGB(image.planes[0], image.linesize[0], image.planes[2], image.linesize[2], image.planes[1], image.linesize[1], w.ptr(), image.w << 2, image.w, image.h);
- converted = true;
- } else if (image.chromaShiftW == 1 && image.chromaShiftH == 0) {
- yuv422_2_rgb8888(w, image.planes[0], image.planes[1], image.planes[2], image.w, image.h, image.linesize[0], image.linesize[1], image.w << 2);
- //libyuv::I422ToARGB(image.planes[0], image.linesize[0], image.planes[2], image.linesize[2], image.planes[1], image.linesize[1], w.ptr(), image.w << 2, image.w, image.h);
- converted = true;
- } else if (image.chromaShiftW == 0 && image.chromaShiftH == 0) {
- yuv444_2_rgb8888(w, image.planes[0], image.planes[1], image.planes[2], image.w, image.h, image.linesize[0], image.linesize[1], image.w << 2);
- //libyuv::I444ToARGB(image.planes[0], image.linesize[0], image.planes[2], image.linesize[2], image.planes[1], image.linesize[1], w.ptr(), image.w << 2, image.w, image.h);
- converted = true;
- } else if (image.chromaShiftW == 2 && image.chromaShiftH == 0) {
- //libyuv::I411ToARGB(image.planes[0], image.linesize[0], image.planes[2], image.linesize[2] image.planes[1], image.linesize[1], w.ptr(), image.w << 2, image.w, image.h);
- //converted = true;
- }
-
- if (converted) {
- Ref<Image> img = memnew(Image(image.w, image.h, 0, Image::FORMAT_RGBA8, frame_data));
- texture->update(img); //Zero copy send to rendering server
- video_frame_done = true;
- }
- }
- }
- }
- }
-
- video_pos = video_frame->time;
- memmove(video_frames, video_frames + 1, (--video_frames_pos) * sizeof(void *));
- video_frames[video_frames_pos] = video_frame;
- }
-
- if (video_frames_pos == 0 && webm->isEOS()) {
- stop();
- }
-}
-
-void VideoStreamPlaybackWebm::set_mix_callback(VideoStreamPlayback::AudioMixCallback p_callback, void *p_userdata) {
- mix_callback = p_callback;
- mix_udata = p_userdata;
-}
-
-int VideoStreamPlaybackWebm::get_channels() const {
- if (audio) {
- return webm->getChannels();
- }
- return 0;
-}
-
-int VideoStreamPlaybackWebm::get_mix_rate() const {
- if (audio) {
- return webm->getSampleRate();
- }
- return 0;
-}
-
-inline bool VideoStreamPlaybackWebm::has_enough_video_frames() const {
- if (video_frames_pos > 0) {
- // FIXME: AudioServer output latency was fixed in af9bb0e, previously it used to
- // systematically return 0. Now that it gives a proper latency, it broke this
- // code where the delay compensation likely never really worked.
- //const double audio_delay = AudioServer::get_singleton()->get_output_latency();
- const double video_time = video_frames[video_frames_pos - 1]->time;
- return video_time >= time + /* audio_delay + */ delay_compensation;
- }
- return false;
-}
-
-bool VideoStreamPlaybackWebm::should_process(WebMFrame &video_frame) {
- // FIXME: AudioServer output latency was fixed in af9bb0e, previously it used to
- // systematically return 0. Now that it gives a proper latency, it broke this
- // code where the delay compensation likely never really worked.
- //const double audio_delay = AudioServer::get_singleton()->get_output_latency();
- return video_frame.time >= time + /* audio_delay + */ delay_compensation;
-}
-
-void VideoStreamPlaybackWebm::delete_pointers() {
- if (pcm) {
- memfree(pcm);
- }
-
- if (audio_frame) {
- memdelete(audio_frame);
- }
- if (video_frames) {
- for (int i = 0; i < video_frames_capacity; ++i) {
- memdelete(video_frames[i]);
- }
- memfree(video_frames);
- }
-
- if (video) {
- memdelete(video);
- }
- if (audio) {
- memdelete(audio);
- }
-
- if (webm) {
- memdelete(webm);
- }
-}
-
-/**/
-
-VideoStreamWebm::VideoStreamWebm() {}
-
-Ref<VideoStreamPlayback> VideoStreamWebm::instance_playback() {
- Ref<VideoStreamPlaybackWebm> pb = memnew(VideoStreamPlaybackWebm);
- pb->set_audio_track(audio_track);
- if (pb->open_file(file)) {
- return pb;
- }
- return nullptr;
-}
-
-void VideoStreamWebm::set_file(const String &p_file) {
- file = p_file;
-}
-
-String VideoStreamWebm::get_file() {
- return file;
-}
-
-void VideoStreamWebm::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_file", "file"), &VideoStreamWebm::set_file);
- ClassDB::bind_method(D_METHOD("get_file"), &VideoStreamWebm::get_file);
-
- ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_file", "get_file");
-}
-
-void VideoStreamWebm::set_audio_track(int p_track) {
- audio_track = p_track;
-}
-
-////////////
-
-RES ResourceFormatLoaderWebm::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_cache_mode) {
- FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
- if (!f) {
- if (r_error) {
- *r_error = ERR_CANT_OPEN;
- }
- return RES();
- }
-
- VideoStreamWebm *stream = memnew(VideoStreamWebm);
- stream->set_file(p_path);
-
- Ref<VideoStreamWebm> webm_stream = Ref<VideoStreamWebm>(stream);
-
- if (r_error) {
- *r_error = OK;
- }
-
- f->close();
- memdelete(f);
- return webm_stream;
-}
-
-void ResourceFormatLoaderWebm::get_recognized_extensions(List<String> *p_extensions) const {
- p_extensions->push_back("webm");
-}
-
-bool ResourceFormatLoaderWebm::handles_type(const String &p_type) const {
- return ClassDB::is_parent_class(p_type, "VideoStream");
-}
-
-String ResourceFormatLoaderWebm::get_resource_type(const String &p_path) const {
- String el = p_path.get_extension().to_lower();
- if (el == "webm") {
- return "VideoStreamWebm";
- }
- return "";
-}
diff --git a/modules/webm/video_stream_webm.h b/modules/webm/video_stream_webm.h
deleted file mode 100644
index 60e02ab38b..0000000000
--- a/modules/webm/video_stream_webm.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*************************************************************************/
-/* video_stream_webm.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (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 VIDEO_STREAM_WEBM_H
-#define VIDEO_STREAM_WEBM_H
-
-#include "core/io/resource_loader.h"
-#include "scene/resources/video_stream.h"
-
-class WebMFrame;
-class WebMDemuxer;
-class VPXDecoder;
-class OpusVorbisDecoder;
-
-class VideoStreamPlaybackWebm : public VideoStreamPlayback {
- GDCLASS(VideoStreamPlaybackWebm, VideoStreamPlayback);
-
- String file_name;
- int audio_track = 0;
-
- WebMDemuxer *webm = nullptr;
- VPXDecoder *video = nullptr;
- OpusVorbisDecoder *audio = nullptr;
-
- WebMFrame **video_frames = nullptr, *audio_frame = nullptr;
- int video_frames_pos = 0, video_frames_capacity = 0;
-
- int num_decoded_samples = 0, samples_offset = -1;
- AudioMixCallback mix_callback = nullptr;
- void *mix_udata = nullptr;
-
- bool playing = false, paused = false;
- double delay_compensation = 0.0;
- double time = 0.0, video_frame_delay = 0.0, video_pos = 0.0;
-
- Vector<uint8_t> frame_data;
- Ref<ImageTexture> texture;
-
- float *pcm = nullptr;
-
-public:
- VideoStreamPlaybackWebm();
- ~VideoStreamPlaybackWebm();
-
- bool open_file(const String &p_file);
-
- virtual void stop() override;
- virtual void play() override;
-
- virtual bool is_playing() const override;
-
- virtual void set_paused(bool p_paused) override;
- virtual bool is_paused() const override;
-
- virtual void set_loop(bool p_enable) override;
- virtual bool has_loop() const override;
-
- virtual float get_length() const override;
-
- virtual float get_playback_position() const override;
- virtual void seek(float p_time) override;
-
- virtual void set_audio_track(int p_idx) override;
-
- virtual Ref<Texture2D> get_texture() const override;
- virtual void update(float p_delta) override;
-
- virtual void set_mix_callback(AudioMixCallback p_callback, void *p_userdata) override;
- virtual int get_channels() const override;
- virtual int get_mix_rate() const override;
-
-private:
- inline bool has_enough_video_frames() const;
- bool should_process(WebMFrame &video_frame);
-
- void delete_pointers();
-};
-
-/**/
-
-class VideoStreamWebm : public VideoStream {
- GDCLASS(VideoStreamWebm, VideoStream);
-
- String file;
- int audio_track = 0;
-
-protected:
- static void _bind_methods();
-
-public:
- VideoStreamWebm();
-
- virtual Ref<VideoStreamPlayback> instance_playback() override;
-
- virtual void set_file(const String &p_file);
- String get_file();
- virtual void set_audio_track(int p_track) override;
-};
-
-class ResourceFormatLoaderWebm : public ResourceFormatLoader {
-public:
- virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE);
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String &p_type) const;
- virtual String get_resource_type(const String &p_path) const;
-};
-
-#endif // VIDEO_STREAM_WEBM_H
diff --git a/modules/webxr/doc_classes/WebXRInterface.xml b/modules/webxr/doc_classes/WebXRInterface.xml
index 16d671c9e9..6e224a8242 100644
--- a/modules/webxr/doc_classes/WebXRInterface.xml
+++ b/modules/webxr/doc_classes/WebXRInterface.xml
@@ -87,7 +87,7 @@
There are several ways to handle "controller" input:
- Using [XRController3D] nodes and their [signal XRController3D.button_pressed] and [signal XRController3D.button_released] signals. This is how controllers are typically handled in AR/VR apps in Godot, however, this will only work with advanced VR controllers like the Oculus Touch or Index controllers, for example. The buttons codes are defined by [url=https://immersive-web.github.io/webxr-gamepads-module/#xr-standard-gamepad-mapping]Section 3.3 of the WebXR Gamepads Module[/url].
- Using [method Node._unhandled_input] and [InputEventJoypadButton] or [InputEventJoypadMotion]. This works the same as normal joypads, except the [member InputEvent.device] starts at 100, so the left controller is 100 and the right controller is 101, and the button codes are also defined by [url=https://immersive-web.github.io/webxr-gamepads-module/#xr-standard-gamepad-mapping]Section 3.3 of the WebXR Gamepads Module[/url].
- - Using the [signal select], [signal squeeze] and related signals. This method will work for both advanced VR controllers, and non-traditional "controllers" like a tap on the screen, a spoken voice command or a button press on the device itself. The [code]controller_id[/code] passed to these signals is the same id as used in [member XRController3D.controller_id].
+ - Using the [signal select], [signal squeeze] and related signals. This method will work for both advanced VR controllers, and non-traditional "controllers" like a tap on the screen, a spoken voice command or a button press on the device itself.
You can use one or all of these methods to allow your game or app to support a wider or narrower set of devices and input methods, or to allow more advanced interactions with more advanced devices.
</description>
<tutorials>
diff --git a/modules/webxr/webxr_interface_js.cpp b/modules/webxr/webxr_interface_js.cpp
index 10c17aa672..2676b3cf80 100644
--- a/modules/webxr/webxr_interface_js.cpp
+++ b/modules/webxr/webxr_interface_js.cpp
@@ -163,9 +163,14 @@ String WebXRInterfaceJS::get_reference_space_type() const {
Ref<XRPositionalTracker> WebXRInterfaceJS::get_controller(int p_controller_id) const {
XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL_V(xr_server, nullptr);
+ ERR_FAIL_NULL_V(xr_server, Ref<XRPositionalTracker>());
- return xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, p_controller_id);
+ // TODO support more then two controllers
+ if (p_controller_id >= 0 && p_controller_id < 2) {
+ return controllers[p_controller_id];
+ };
+
+ return Ref<XRPositionalTracker>();
}
String WebXRInterfaceJS::get_visibility_state() const {
@@ -224,6 +229,13 @@ bool WebXRInterfaceJS::initialize() {
return false;
}
+ // we must create a tracker for our head
+ head_tracker.instantiate();
+ head_tracker->set_tracker_type(XRServer::TRACKER_HEAD);
+ head_tracker->set_tracker_name("head");
+ head_tracker->set_tracker_desc("Players head");
+ xr_server->add_tracker(head_tracker);
+
// make this our primary interface
xr_server->set_primary_interface(this);
@@ -254,9 +266,17 @@ bool WebXRInterfaceJS::initialize() {
void WebXRInterfaceJS::uninitialize() {
if (initialized) {
XRServer *xr_server = XRServer::get_singleton();
- if (xr_server != nullptr && xr_server->get_primary_interface() == this) {
- // no longer our primary interface
- xr_server->set_primary_interface(nullptr);
+ if (xr_server != nullptr) {
+ if (head_tracker.is_valid()) {
+ xr_server->remove_tracker(head_tracker);
+
+ head_tracker.unref();
+ }
+
+ if (xr_server->get_primary_interface() == this) {
+ // no longer our primary interface
+ xr_server->set_primary_interface(nullptr);
+ }
}
godot_webxr_uninitialize();
@@ -373,9 +393,9 @@ Vector<BlitToScreen> WebXRInterfaceJS::commit_views(RID p_render_target, const R
}
// @todo Refactor this to be based on "views" rather than "eyes".
- godot_webxr_commit_for_eye(XRInterface::EYE_LEFT);
+ godot_webxr_commit_for_eye(1);
if (godot_webxr_get_view_count() > 1) {
- godot_webxr_commit_for_eye(XRInterface::EYE_RIGHT);
+ godot_webxr_commit_for_eye(2);
}
return blit_to_screen;
@@ -385,6 +405,11 @@ void WebXRInterfaceJS::process() {
if (initialized) {
godot_webxr_sample_controller_data();
+ if (head_tracker.is_valid()) {
+ // TODO set default pose to our head location (i.e. get_camera_transform without world scale and reference frame applied)
+ // head_tracker->set_pose("default", head_transform, Vector3(), Vector3());
+ }
+
int controller_count = godot_webxr_get_controller_count();
if (controller_count == 0) {
return;
@@ -400,51 +425,70 @@ void WebXRInterfaceJS::_update_tracker(int p_controller_id) {
XRServer *xr_server = XRServer::get_singleton();
ERR_FAIL_NULL(xr_server);
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, p_controller_id + 1);
+ // need to support more then two controllers...
+ if (p_controller_id < 0 || p_controller_id > 1) {
+ return;
+ }
+
+ Ref<XRPositionalTracker> tracker = controllers[p_controller_id];
if (godot_webxr_is_controller_connected(p_controller_id)) {
if (tracker.is_null()) {
tracker.instantiate();
tracker->set_tracker_type(XRServer::TRACKER_CONTROLLER);
// Controller id's 0 and 1 are always the left and right hands.
if (p_controller_id < 2) {
- tracker->set_tracker_name(p_controller_id == 0 ? "Left" : "Right");
+ tracker->set_tracker_name(p_controller_id == 0 ? "left_hand" : "right_hand");
+ tracker->set_tracker_desc(p_controller_id == 0 ? "Left hand controller" : "Right hand controller");
tracker->set_tracker_hand(p_controller_id == 0 ? XRPositionalTracker::TRACKER_HAND_LEFT : XRPositionalTracker::TRACKER_HAND_RIGHT);
+ } else {
+ char name[1024];
+ sprintf(name, "tracker_%i", p_controller_id);
+ tracker->set_tracker_name(name);
+ tracker->set_tracker_desc(name);
}
- // Use the ids we're giving to our "virtual" gamepads.
- tracker->set_joy_id(p_controller_id + 100);
xr_server->add_tracker(tracker);
}
- Input *input = Input::get_singleton();
-
float *tracker_matrix = godot_webxr_get_controller_transform(p_controller_id);
if (tracker_matrix) {
+ // Note, poses should NOT have world scale and our reference frame applied!
Transform3D transform = _js_matrix_to_transform(tracker_matrix);
- tracker->set_position(transform.origin);
- tracker->set_orientation(transform.basis);
+ tracker->set_pose("default", transform, Vector3(), Vector3());
free(tracker_matrix);
}
+ // TODO implement additional poses such as "aim" and "grip"
+
int *buttons = godot_webxr_get_controller_buttons(p_controller_id);
if (buttons) {
+ // TODO buttons should be named properly, this is just a temporary fix
for (int i = 0; i < buttons[0]; i++) {
- input->joy_button(p_controller_id + 100, (JoyButton)i, *((float *)buttons + (i + 1)));
+ char name[1024];
+ sprintf(name, "button_%i", i);
+
+ float value = *((float *)buttons + (i + 1));
+ bool state = value > 0.0;
+ tracker->set_input(name, state);
}
free(buttons);
}
int *axes = godot_webxr_get_controller_axes(p_controller_id);
if (axes) {
+ // TODO again just a temporary fix, split these between proper float and vector2 inputs
for (int i = 0; i < axes[0]; i++) {
- Input::JoyAxisValue joy_axis;
- joy_axis.min = -1;
- joy_axis.value = *((float *)axes + (i + 1));
- input->joy_axis(p_controller_id + 100, (JoyAxis)i, joy_axis);
+ char name[1024];
+ sprintf(name, "axis_%i", i);
+
+ float value = *((float *)axes + (i + 1));
+ ;
+ tracker->set_input(name, value);
}
free(axes);
}
} else if (tracker.is_valid()) {
xr_server->remove_tracker(tracker);
+ controllers[p_controller_id].unref();
}
}
@@ -454,7 +498,7 @@ void WebXRInterfaceJS::_on_controller_changed() {
for (int i = 0; i < 2; i++) {
bool controller_connected = godot_webxr_is_controller_connected(i);
if (controllers_state[i] != controller_connected) {
- Input::get_singleton()->joy_connection_changed(i + 100, controller_connected, i == 0 ? "Left" : "Right", "");
+ // Input::get_singleton()->joy_connection_changed(i + 100, controller_connected, i == 0 ? "Left" : "Right", "");
controllers_state[i] = controller_connected;
}
}
diff --git a/modules/webxr/webxr_interface_js.h b/modules/webxr/webxr_interface_js.h
index eb77f35f39..6e6548c946 100644
--- a/modules/webxr/webxr_interface_js.h
+++ b/modules/webxr/webxr_interface_js.h
@@ -46,6 +46,7 @@ class WebXRInterfaceJS : public WebXRInterface {
private:
bool initialized;
+ Ref<XRPositionalTracker> head_tracker;
String session_mode;
String required_features;
@@ -53,7 +54,9 @@ private:
String requested_reference_space_types;
String reference_space_type;
+ // TODO maybe turn into a vector to support more then 2 controllers...
bool controllers_state[2];
+ Ref<XRPositionalTracker> controllers[2];
Size2 render_targetsize;
Transform3D _js_matrix_to_transform(float *p_js_matrix);
diff --git a/modules/xatlas_unwrap/register_types.cpp b/modules/xatlas_unwrap/register_types.cpp
index 8913ef1b65..58a6216b1e 100644
--- a/modules/xatlas_unwrap/register_types.cpp
+++ b/modules/xatlas_unwrap/register_types.cpp
@@ -114,7 +114,7 @@ bool xatlas_mesh_lightmap_unwrap_callback(float p_texel_size, const float *p_ver
input_mesh.vertexPositionStride = sizeof(float) * 3;
input_mesh.vertexNormalData = p_normals;
input_mesh.vertexNormalStride = sizeof(uint32_t) * 3;
- input_mesh.vertexUvData = NULL;
+ input_mesh.vertexUvData = nullptr;
input_mesh.vertexUvStride = 0;
xatlas::ChartOptions chart_options;
diff --git a/platform/android/audio_driver_opensl.h b/platform/android/audio_driver_opensl.h
index e3efaddba2..fcc2513f3f 100644
--- a/platform/android/audio_driver_opensl.h
+++ b/platform/android/audio_driver_opensl.h
@@ -59,7 +59,6 @@ class AudioDriverOpenSL : public AudioDriver {
SLObjectItf sl;
SLEngineItf EngineItf;
SLObjectItf OutputMix;
- SLVolumeItf volumeItf;
SLObjectItf player;
SLObjectItf recorder;
SLAndroidSimpleBufferQueueItf bufferQueueItf;
@@ -68,7 +67,6 @@ class AudioDriverOpenSL : public AudioDriver {
SLDataFormat_PCM pcm;
SLDataSink audioSink;
SLDataLocator_OutputMix locator_outputmix;
- SLBufferQueueState state;
static AudioDriverOpenSL *s_ad;
@@ -89,8 +87,6 @@ class AudioDriverOpenSL : public AudioDriver {
virtual Error capture_init_device();
public:
- void set_singleton();
-
virtual const char *get_name() const;
virtual Error init();
diff --git a/platform/android/detect.py b/platform/android/detect.py
index 61ccad9ac3..6f98dab2cc 100644
--- a/platform/android/detect.py
+++ b/platform/android/detect.py
@@ -27,8 +27,7 @@ def get_opts():
("ANDROID_NDK_ROOT", "Path to the Android NDK", get_android_ndk_root()),
("ANDROID_SDK_ROOT", "Path to the Android SDK", get_android_sdk_root()),
("ndk_platform", 'Target platform (android-<api>, e.g. "android-24")', "android-24"),
- EnumVariable("android_arch", "Target architecture", "armv7", ("armv7", "arm64v8", "x86", "x86_64")),
- BoolVariable("android_neon", "Enable NEON support (armv7 only)", True),
+ EnumVariable("android_arch", "Target architecture", "arm64v8", ("armv7", "arm64v8", "x86", "x86_64")),
]
@@ -143,10 +142,7 @@ def configure(env):
if env["android_arch"] not in ["armv7", "arm64v8", "x86", "x86_64"]:
env["android_arch"] = "armv7"
- neon_text = ""
- if env["android_arch"] == "armv7" and env["android_neon"]:
- neon_text = " (with NEON)"
- print("Building for Android, platform " + env["ndk_platform"] + " (" + env["android_arch"] + ")" + neon_text)
+ print("Building for Android, platform " + env["ndk_platform"] + " (" + env["android_arch"] + ")")
can_vectorize = True
if env["android_arch"] == "x86":
@@ -174,10 +170,7 @@ def configure(env):
target_subpath = "arm-linux-androideabi-4.9"
abi_subpath = "arm-linux-androideabi"
arch_subpath = "armeabi-v7a"
- if env["android_neon"]:
- env.extra_suffix = ".armv7.neon" + env.extra_suffix
- else:
- env.extra_suffix = ".armv7" + env.extra_suffix
+ env.extra_suffix = ".armv7" + env.extra_suffix
elif env["android_arch"] == "arm64v8":
if get_platform(env["ndk_platform"]) < 21:
print(
@@ -204,12 +197,10 @@ def configure(env):
env.Append(CPPDEFINES=["NDEBUG"])
if can_vectorize:
env.Append(CCFLAGS=["-ftree-vectorize"])
- if env["target"] == "release_debug":
- env.Append(CPPDEFINES=["DEBUG_ENABLED"])
elif env["target"] == "debug":
env.Append(LINKFLAGS=["-O0"])
env.Append(CCFLAGS=["-O0", "-g", "-fno-limit-debug-info"])
- env.Append(CPPDEFINES=["_DEBUG", "DEBUG_ENABLED"])
+ env.Append(CPPDEFINES=["_DEBUG"])
env.Append(CPPFLAGS=["-UNDEBUG"])
# Compiler configuration
@@ -288,7 +279,6 @@ def configure(env):
if get_platform(env["ndk_platform"]) >= 24:
env.Append(CPPDEFINES=[("_FILE_OFFSET_BITS", 64)])
- env["neon_enabled"] = False
if env["android_arch"] == "x86":
target_opts = ["-target", "i686-none-linux-android"]
# The NDK adds this if targeting API < 21, so we can drop it when Godot targets it at least
@@ -301,12 +291,9 @@ def configure(env):
target_opts = ["-target", "armv7-none-linux-androideabi"]
env.Append(CCFLAGS="-march=armv7-a -mfloat-abi=softfp".split())
env.Append(CPPDEFINES=["__ARM_ARCH_7__", "__ARM_ARCH_7A__"])
- if env["android_neon"]:
- env["neon_enabled"] = True
- env.Append(CCFLAGS=["-mfpu=neon"])
- env.Append(CPPDEFINES=["__ARM_NEON__"])
- else:
- env.Append(CCFLAGS=["-mfpu=vfpv3-d16"])
+ # Enable ARM NEON instructions to compile more optimized code.
+ env.Append(CCFLAGS=["-mfpu=neon"])
+ env.Append(CPPDEFINES=["__ARM_NEON__"])
elif env["android_arch"] == "arm64v8":
target_opts = ["-target", "aarch64-none-linux-android"]
diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp
index 727ce0ae46..6ef17faf06 100644
--- a/platform/android/export/export_plugin.cpp
+++ b/platform/android/export/export_plugin.cpp
@@ -1644,10 +1644,12 @@ void EditorExportPlatformAndroid::get_export_options(List<ExportOption> *r_optio
}
plugins_changed.clear();
- Vector<String> abis = get_abis();
+ const Vector<String> abis = get_abis();
for (int i = 0; i < abis.size(); ++i) {
- String abi = abis[i];
- bool is_default = (abi == "armeabi-v7a" || abi == "arm64-v8a");
+ const String abi = abis[i];
+ // All Android devices supporting Vulkan run 64-bit Android,
+ // so there is usually no point in exporting for 32-bit Android.
+ const bool is_default = abi == "arm64-v8a";
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "architectures/" + abi), is_default));
}
diff --git a/platform/android/java/app/config.gradle b/platform/android/java/app/config.gradle
index fcee54e493..3fafdf8573 100644
--- a/platform/android/java/app/config.gradle
+++ b/platform/android/java/app/config.gradle
@@ -1,12 +1,12 @@
ext.versions = [
- androidGradlePlugin: '4.2.2',
+ androidGradlePlugin: '7.0.3',
compileSdk : 30,
minSdk : 19,
targetSdk : 30,
buildTools : '30.0.3',
kotlinVersion : '1.5.10',
fragmentVersion : '1.3.6',
- javaVersion : 1.8,
+ javaVersion : 11,
ndkVersion : '21.4.7075529' // Also update 'platform/android/detect.py#get_project_ndk_version()' when this is updated.
]
diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle
index 87bb2ea218..efdcc6c77b 100644
--- a/platform/android/java/build.gradle
+++ b/platform/android/java/build.gradle
@@ -158,9 +158,9 @@ def templateBuildTasks() {
/**
* Master task used to coordinate the tasks defined above to generate the set of Godot templates.
*/
-task generateGodotTemplates(type: GradleBuild) {
- startParameter.excludedTaskNames = templateExcludedBuildTask()
- tasks = templateBuildTasks()
+task generateGodotTemplates {
+ gradle.startParameter.excludedTaskNames += templateExcludedBuildTask()
+ dependsOn = templateBuildTasks()
finalizedBy 'zipCustomBuild'
}
@@ -168,12 +168,12 @@ task generateGodotTemplates(type: GradleBuild) {
/**
* Generates the same output as generateGodotTemplates but with dev symbols
*/
-task generateDevTemplate (type: GradleBuild) {
+task generateDevTemplate {
// add parameter to set symbols to true
- startParameter.projectProperties += [doNotStrip: true]
+ gradle.startParameter.projectProperties += [doNotStrip: true]
- startParameter.excludedTaskNames = templateExcludedBuildTask()
- tasks = templateBuildTasks()
+ gradle.startParameter.excludedTaskNames += templateExcludedBuildTask()
+ dependsOn = templateBuildTasks()
finalizedBy 'zipCustomBuild'
}
diff --git a/platform/android/java/gradle/wrapper/gradle-wrapper.jar b/platform/android/java/gradle/wrapper/gradle-wrapper.jar
index f6b961fd5a..e708b1c023 100644
--- a/platform/android/java/gradle/wrapper/gradle-wrapper.jar
+++ b/platform/android/java/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/platform/android/java/gradle/wrapper/gradle-wrapper.properties b/platform/android/java/gradle/wrapper/gradle-wrapper.properties
index 74c5636f8a..ffed3a254e 100644
--- a/platform/android/java/gradle/wrapper/gradle-wrapper.properties
+++ b/platform/android/java/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Wed Jun 23 23:42:22 PDT 2021
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/platform/android/java/gradlew b/platform/android/java/gradlew
index cccdd3d517..4f906e0c81 100755
--- a/platform/android/java/gradlew
+++ b/platform/android/java/gradlew
@@ -1,5 +1,21 @@
#!/usr/bin/env sh
+#
+# Copyright 2015 the original author or authors.
+#
+# 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
+#
+# https://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.
+#
+
##############################################################################
##
## Gradle start up script for UN*X
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -66,6 +82,7 @@ esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@@ -109,10 +126,11 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
@@ -138,19 +156,19 @@ if $cygwin ; then
else
eval `echo args$i`="\"$arg\""
fi
- i=$((i+1))
+ i=`expr $i + 1`
done
case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
@@ -159,14 +177,9 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
-APP_ARGS=$(save "$@")
+APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
- cd "$(dirname "$0")"
-fi
-
exec "$JAVACMD" "$@"
diff --git a/platform/android/java/gradlew.bat b/platform/android/java/gradlew.bat
index 11cc30edb0..107acd32c4 100644
--- a/platform/android/java/gradlew.bat
+++ b/platform/android/java/gradlew.bat
@@ -1,7 +1,23 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
-@rem Gradle startup script for Windows
+@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
+if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,28 +64,14 @@ echo location of your Java installation.
goto fail
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
@@ -75,7 +80,7 @@ if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index 034885aa32..94ca51f75a 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -263,7 +263,6 @@ Size2i OS_Android::get_display_size() const {
void OS_Android::set_context_is_16_bits(bool p_is_16) {
#if defined(OPENGL_ENABLED)
- //use_16bits_fbo = p_is_16;
//if (rasterizer)
// rasterizer->set_force_16_bits_fbo(p_is_16);
#endif
@@ -325,7 +324,6 @@ OS_Android::OS_Android(GodotJavaWrapper *p_godot_java, GodotIOJavaWrapper *p_god
#if defined(OPENGL_ENABLED)
gl_extensions = nullptr;
use_gl2 = false;
- use_16bits_fbo = false;
#endif
#if defined(VULKAN_ENABLED)
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index ce8083388f..9bb37325cf 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -48,7 +48,6 @@ private:
bool use_apk_expansion;
#if defined(OPENGL_ENABLED)
- bool use_16bits_fbo;
const char *gl_extensions;
#endif
diff --git a/platform/iphone/detect.py b/platform/iphone/detect.py
index 05e24c5003..0d28aa2f06 100644
--- a/platform/iphone/detect.py
+++ b/platform/iphone/detect.py
@@ -53,12 +53,9 @@ def configure(env):
env.Append(CCFLAGS=["-Os", "-ftree-vectorize"])
env.Append(LINKFLAGS=["-Os"])
- if env["target"] == "release_debug":
- env.Append(CPPDEFINES=["DEBUG_ENABLED"])
-
elif env["target"] == "debug":
env.Append(CCFLAGS=["-gdwarf-2", "-O0"])
- env.Append(CPPDEFINES=["_DEBUG", ("DEBUG", 1), "DEBUG_ENABLED"])
+ env.Append(CPPDEFINES=["_DEBUG", ("DEBUG", 1)])
if env["use_lto"]:
env.Append(CCFLAGS=["-flto"])
diff --git a/platform/iphone/export/export_plugin.cpp b/platform/iphone/export/export_plugin.cpp
index 69a8203e9f..60fcbb68d3 100644
--- a/platform/iphone/export/export_plugin.cpp
+++ b/platform/iphone/export/export_plugin.cpp
@@ -1105,7 +1105,7 @@ Error EditorExportPlatformIOS::_export_additional_assets(const String &p_out_dir
for (int j = 0; j < project_static_libs.size(); j++) {
project_static_libs.write[j] = project_static_libs[j].get_file(); // Only the file name as it's copied to the project
}
- err = _export_additional_assets(p_out_dir, project_static_libs, true, true, r_exported_assets);
+ err = _export_additional_assets(p_out_dir, project_static_libs, true, false, r_exported_assets);
ERR_FAIL_COND_V(err, err);
Vector<String> ios_bundle_files = export_plugins[i]->get_ios_bundle_files();
@@ -1427,7 +1427,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
}
bool found_library = false;
- int total_size = 0;
const String project_file = "godot_ios.xcodeproj/project.pbxproj";
Set<String> files_to_parse;
@@ -1523,7 +1522,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
file = file.replace("godot_ios", binary_name);
print_line("ADDING: " + file + " size: " + itos(data.size()));
- total_size += data.size();
/* write it into our folder structure */
file = dest_dir + file;
diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py
index 173b558b6d..891ae419bd 100644
--- a/platform/javascript/detect.py
+++ b/platform/javascript/detect.py
@@ -77,11 +77,9 @@ def configure(env):
env.Append(LINKFLAGS=["-Os"])
if env["target"] == "release_debug":
- env.Append(CPPDEFINES=["DEBUG_ENABLED"])
# Retain function names for backtraces at the cost of file size.
env.Append(LINKFLAGS=["--profiling-funcs"])
else: # "debug"
- env.Append(CPPDEFINES=["DEBUG_ENABLED"])
env.Append(CCFLAGS=["-O1", "-g"])
env.Append(LINKFLAGS=["-O1", "-g"])
env["use_assertions"] = True
diff --git a/platform/javascript/package-lock.json b/platform/javascript/package-lock.json
index 8003619576..1bc11c7ccf 100644
--- a/platform/javascript/package-lock.json
+++ b/platform/javascript/package-lock.json
@@ -109,9 +109,9 @@
"dev": true
},
"ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py
index 8eb22c1c72..4b3804d049 100644
--- a/platform/linuxbsd/detect.py
+++ b/platform/linuxbsd/detect.py
@@ -105,14 +105,12 @@ def configure(env):
env.Prepend(CCFLAGS=["-O2"])
elif env["optimize"] == "size": # optimize for size
env.Prepend(CCFLAGS=["-Os"])
- env.Prepend(CPPDEFINES=["DEBUG_ENABLED"])
if env["debug_symbols"]:
env.Prepend(CCFLAGS=["-g2"])
elif env["target"] == "debug":
env.Prepend(CCFLAGS=["-g3"])
- env.Prepend(CPPDEFINES=["DEBUG_ENABLED"])
env.Append(LINKFLAGS=["-rdynamic"])
## Architecture
@@ -121,6 +119,13 @@ def configure(env):
if env["bits"] == "default":
env["bits"] = "64" if is64 else "32"
+ if env["arch"] == "" and platform.machine() == "riscv64":
+ env["arch"] = "rv64"
+
+ if env["arch"] == "rv64":
+ # G = General-purpose extensions, C = Compression extension (very common).
+ env.Append(CCFLAGS=["-march=rv64gc"])
+
## Compiler configuration
if "CXX" in env and "clang" in os.path.basename(env["CXX"]):
@@ -290,17 +295,10 @@ def configure(env):
if any(platform.machine() in s for s in list_of_x86):
env["x86_libtheora_opt_gcc"] = True
- if not env["builtin_libvpx"]:
- env.ParseConfig("pkg-config vpx --cflags --libs")
-
if not env["builtin_libvorbis"]:
env["builtin_libogg"] = False # Needed to link against system libvorbis
env.ParseConfig("pkg-config vorbis vorbisfile --cflags --libs")
- if not env["builtin_opus"]:
- env["builtin_libogg"] = False # Needed to link against system opus
- env.ParseConfig("pkg-config opus opusfile --cflags --libs")
-
if not env["builtin_libogg"]:
env.ParseConfig("pkg-config ogg --cflags --libs")
diff --git a/platform/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp
index f2cd336b39..212b6762e1 100644
--- a/platform/linuxbsd/display_server_x11.cpp
+++ b/platform/linuxbsd/display_server_x11.cpp
@@ -124,6 +124,7 @@ bool DisplayServerX11::has_feature(Feature p_feature) const {
#ifdef DBUS_ENABLED
case FEATURE_KEEP_SCREEN_ON:
#endif
+ case FEATURE_CLIPBOARD_PRIMARY:
return true;
default: {
}
@@ -406,6 +407,20 @@ void DisplayServerX11::clipboard_set(const String &p_text) {
XSetSelectionOwner(x11_display, XInternAtom(x11_display, "CLIPBOARD", 0), windows[MAIN_WINDOW_ID].x11_window, CurrentTime);
}
+void DisplayServerX11::clipboard_set_primary(const String &p_text) {
+ _THREAD_SAFE_METHOD_
+ if (!p_text.is_empty()) {
+ {
+ // The clipboard content can be accessed while polling for events.
+ MutexLock mutex_lock(events_mutex);
+ internal_clipboard_primary = p_text;
+ }
+
+ XSetSelectionOwner(x11_display, XA_PRIMARY, windows[MAIN_WINDOW_ID].x11_window, CurrentTime);
+ XSetSelectionOwner(x11_display, XInternAtom(x11_display, "PRIMARY", 0), windows[MAIN_WINDOW_ID].x11_window, CurrentTime);
+ }
+}
+
Bool DisplayServerX11::_predicate_clipboard_selection(Display *display, XEvent *event, XPointer arg) {
if (event->type == SelectionNotify && event->xselection.requestor == *(Window *)arg) {
return True;
@@ -427,7 +442,12 @@ String DisplayServerX11::_clipboard_get_impl(Atom p_source, Window x11_window, A
Window selection_owner = XGetSelectionOwner(x11_display, p_source);
if (selection_owner == x11_window) {
- return internal_clipboard;
+ static const char *target_type = "PRIMARY";
+ if (p_source != None && String(XGetAtomName(x11_display, p_source)) == target_type) {
+ return internal_clipboard_primary;
+ } else {
+ return internal_clipboard;
+ }
}
if (selection_owner != None) {
@@ -580,6 +600,19 @@ String DisplayServerX11::clipboard_get() const {
return ret;
}
+String DisplayServerX11::clipboard_get_primary() const {
+ _THREAD_SAFE_METHOD_
+
+ String ret;
+ ret = _clipboard_get(XInternAtom(x11_display, "PRIMARY", 0), windows[MAIN_WINDOW_ID].x11_window);
+
+ if (ret.is_empty()) {
+ ret = _clipboard_get(XA_PRIMARY, windows[MAIN_WINDOW_ID].x11_window);
+ }
+
+ return ret;
+}
+
Bool DisplayServerX11::_predicate_clipboard_save_targets(Display *display, XEvent *event, XPointer arg) {
if (event->xany.window == *(Window *)arg) {
return (event->type == SelectionRequest) ||
@@ -2417,7 +2450,7 @@ void DisplayServerX11::_handle_key_event(WindowID p_window, XKeyEvent *p_event,
Input::get_singleton()->parse_input_event(k);
}
-Atom DisplayServerX11::_process_selection_request_target(Atom p_target, Window p_requestor, Atom p_property) const {
+Atom DisplayServerX11::_process_selection_request_target(Atom p_target, Window p_requestor, Atom p_property, Atom p_selection) const {
if (p_target == XInternAtom(x11_display, "TARGETS", 0)) {
// Request to list all supported targets.
Atom data[9];
@@ -2459,7 +2492,13 @@ Atom DisplayServerX11::_process_selection_request_target(Atom p_target, Window p
p_target == XInternAtom(x11_display, "text/plain", 0)) {
// Directly using internal clipboard because we know our window
// is the owner during a selection request.
- CharString clip = internal_clipboard.utf8();
+ CharString clip;
+ static const char *target_type = "PRIMARY";
+ if (p_selection != None && String(XGetAtomName(x11_display, p_selection)) == target_type) {
+ clip = internal_clipboard_primary.utf8();
+ } else {
+ clip = internal_clipboard.utf8();
+ }
XChangeProperty(x11_display,
p_requestor,
p_property,
@@ -2497,7 +2536,7 @@ void DisplayServerX11::_handle_selection_request_event(XSelectionRequestEvent *p
for (uint64_t i = 0; i < len; i += 2) {
Atom target = targets[i];
Atom &property = targets[i + 1];
- property = _process_selection_request_target(target, p_event->requestor, property);
+ property = _process_selection_request_target(target, p_event->requestor, property, p_event->selection);
}
XChangeProperty(x11_display,
@@ -2515,7 +2554,7 @@ void DisplayServerX11::_handle_selection_request_event(XSelectionRequestEvent *p
}
} else {
// Request for target conversion.
- respond.xselection.property = _process_selection_request_target(p_event->target, p_event->requestor, p_event->property);
+ respond.xselection.property = _process_selection_request_target(p_event->target, p_event->requestor, p_event->property, p_event->selection);
}
respond.xselection.type = SelectionNotify;
diff --git a/platform/linuxbsd/display_server_x11.h b/platform/linuxbsd/display_server_x11.h
index 1887c7105b..ded481f613 100644
--- a/platform/linuxbsd/display_server_x11.h
+++ b/platform/linuxbsd/display_server_x11.h
@@ -155,6 +155,7 @@ class DisplayServerX11 : public DisplayServer {
WindowID _create_window(WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Rect2i &p_rect);
String internal_clipboard;
+ String internal_clipboard_primary;
Window xdnd_source_window;
::Display *x11_display;
char *xmbstring;
@@ -205,7 +206,7 @@ class DisplayServerX11 : public DisplayServer {
void _handle_key_event(WindowID p_window, XKeyEvent *p_event, LocalVector<XEvent> &p_events, uint32_t &p_event_index, bool p_echo = false);
- Atom _process_selection_request_target(Atom p_target, Window p_requestor, Atom p_property) const;
+ Atom _process_selection_request_target(Atom p_target, Window p_requestor, Atom p_property, Atom p_selection) const;
void _handle_selection_request_event(XSelectionRequestEvent *p_event) const;
String _clipboard_get_impl(Atom p_source, Window x11_window, Atom target) const;
@@ -290,6 +291,8 @@ public:
virtual void clipboard_set(const String &p_text) override;
virtual String clipboard_get() const override;
+ virtual void clipboard_set_primary(const String &p_text) override;
+ virtual String clipboard_get_primary() const override;
virtual int get_screen_count() const override;
virtual Point2i screen_get_position(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
diff --git a/platform/linuxbsd/freedesktop_screensaver.cpp b/platform/linuxbsd/freedesktop_screensaver.cpp
index a6a3b27d76..3973d43d49 100644
--- a/platform/linuxbsd/freedesktop_screensaver.cpp
+++ b/platform/linuxbsd/freedesktop_screensaver.cpp
@@ -50,6 +50,7 @@ void FreeDesktopScreenSaver::inhibit() {
DBusConnection *bus = dbus_bus_get(DBUS_BUS_SESSION, &error);
if (dbus_error_is_set(&error)) {
+ dbus_error_free(&error);
unsupported = true;
return;
}
@@ -72,6 +73,7 @@ void FreeDesktopScreenSaver::inhibit() {
DBusMessage *reply = dbus_connection_send_with_reply_and_block(bus, message, 50, &error);
dbus_message_unref(message);
if (dbus_error_is_set(&error)) {
+ dbus_error_free(&error);
dbus_connection_unref(bus);
unsupported = false;
return;
@@ -96,6 +98,7 @@ void FreeDesktopScreenSaver::uninhibit() {
DBusConnection *bus = dbus_bus_get(DBUS_BUS_SESSION, &error);
if (dbus_error_is_set(&error)) {
+ dbus_error_free(&error);
unsupported = true;
return;
}
@@ -110,6 +113,7 @@ void FreeDesktopScreenSaver::uninhibit() {
DBusMessage *reply = dbus_connection_send_with_reply_and_block(bus, message, 50, &error);
if (dbus_error_is_set(&error)) {
+ dbus_error_free(&error);
dbus_connection_unref(bus);
unsupported = true;
return;
diff --git a/platform/osx/detect.py b/platform/osx/detect.py
index 6b25daf05d..36fff4e12a 100644
--- a/platform/osx/detect.py
+++ b/platform/osx/detect.py
@@ -57,13 +57,11 @@ def configure(env):
env.Prepend(CCFLAGS=["-O2"])
elif env["optimize"] == "size": # optimize for size
env.Prepend(CCFLAGS=["-Os"])
- env.Prepend(CPPDEFINES=["DEBUG_ENABLED"])
if env["debug_symbols"]:
env.Prepend(CCFLAGS=["-g2"])
elif env["target"] == "debug":
env.Prepend(CCFLAGS=["-g3"])
- env.Prepend(CPPDEFINES=["DEBUG_ENABLED"])
env.Prepend(LINKFLAGS=["-Xlinker", "-no_deduplicate"])
## Architecture
@@ -96,7 +94,6 @@ def configure(env):
env["AR"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ar"
env["RANLIB"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ranlib"
env["AS"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-as"
- env.Append(CPPDEFINES=["__MACPORTS__"]) # hack to fix libvpx MM256_BROADCASTSI128_SI256 define
else:
env["CC"] = "clang"
env["CXX"] = "clang++"
@@ -124,7 +121,6 @@ def configure(env):
env["AR"] = basecmd + "ar"
env["RANLIB"] = basecmd + "ranlib"
env["AS"] = basecmd + "as"
- env.Append(CPPDEFINES=["__MACPORTS__"]) # hack to fix libvpx MM256_BROADCASTSI128_SI256 define
if env["use_ubsan"] or env["use_asan"] or env["use_tsan"]:
env.extra_suffix += "s"
diff --git a/platform/osx/display_server_osx.mm b/platform/osx/display_server_osx.mm
index da6c45793a..3fe055a511 100644
--- a/platform/osx/display_server_osx.mm
+++ b/platform/osx/display_server_osx.mm
@@ -3014,7 +3014,7 @@ void DisplayServerOSX::cursor_set_custom_image(const RES &p_cursor, CursorShape
ERR_FAIL_COND(!image.is_valid());
NSBitmapImageRep *imgrep = [[NSBitmapImageRep alloc]
- initWithBitmapDataPlanes:NULL
+ initWithBitmapDataPlanes:nullptr
pixelsWide:int(texture_size.width)
pixelsHigh:int(texture_size.height)
bitsPerSample:8
@@ -3418,7 +3418,7 @@ void DisplayServerOSX::set_icon(const Ref<Image> &p_icon) {
img = img->duplicate();
img->convert(Image::FORMAT_RGBA8);
NSBitmapImageRep *imgrep = [[NSBitmapImageRep alloc]
- initWithBitmapDataPlanes:NULL
+ initWithBitmapDataPlanes:nullptr
pixelsWide:img->get_width()
pixelsHigh:img->get_height()
bitsPerSample:8
diff --git a/platform/osx/export/export_plugin.cpp b/platform/osx/export/export_plugin.cpp
index 2404c20153..60a878d644 100644
--- a/platform/osx/export/export_plugin.cpp
+++ b/platform/osx/export/export_plugin.cpp
@@ -561,7 +561,6 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
// Now process our template.
bool found_binary = false;
- int total_size = 0;
Vector<String> dylibs_found;
while (ret == UNZ_OK && err == OK) {
@@ -649,7 +648,6 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
}
print_line("ADDING: " + file + " size: " + itos(data.size()));
- total_size += data.size();
// Write it into our application bundle.
file = tmp_app_path_name.plus_file(file);
diff --git a/platform/osx/joypad_osx.h b/platform/osx/joypad_osx.h
index c060c3d523..3048ecf39e 100644
--- a/platform/osx/joypad_osx.h
+++ b/platform/osx/joypad_osx.h
@@ -106,7 +106,6 @@ private:
int get_joy_ref(IOHIDDeviceRef p_device) const;
void poll_joypads() const;
- void setup_joypad_objects();
void config_hid_manager(CFArrayRef p_matching_array) const;
void joypad_vibration_start(int p_id, float p_magnitude, float p_duration, uint64_t p_timestamp);
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index e9cb46ed21..489cbe074b 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -178,7 +178,7 @@
class OSXTerminalLogger : public StdLogger {
public:
- virtual void log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type = ERR_ERROR) {
+ virtual void log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, ErrorType p_type = ERR_ERROR) {
if (!should_log(true)) {
return;
}
diff --git a/platform/uwp/detect.py b/platform/uwp/detect.py
index 28922a4f59..9c91378b22 100644
--- a/platform/uwp/detect.py
+++ b/platform/uwp/detect.py
@@ -64,14 +64,12 @@ def configure(env):
env.Append(CCFLAGS=["/MD"])
env.Append(LINKFLAGS=["/SUBSYSTEM:CONSOLE"])
env.AppendUnique(CPPDEFINES=["WINDOWS_SUBSYSTEM_CONSOLE"])
- env.Append(CPPDEFINES=["DEBUG_ENABLED"])
if env["optimize"] != "none":
env.Append(CCFLAGS=["/O2", "/Zi"])
elif env["target"] == "debug":
env.Append(CCFLAGS=["/Zi"])
env.Append(CCFLAGS=["/MDd"])
- env.Append(CPPDEFINES=["DEBUG_ENABLED"])
env.Append(LINKFLAGS=["/SUBSYSTEM:CONSOLE"])
env.AppendUnique(CPPDEFINES=["WINDOWS_SUBSYSTEM_CONSOLE"])
env.Append(LINKFLAGS=["/DEBUG"])
diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h
index 7945f409a1..9398573ee1 100644
--- a/platform/uwp/os_uwp.h
+++ b/platform/uwp/os_uwp.h
@@ -117,11 +117,6 @@ private:
Windows::System::Display::DisplayRequest ^ display_request;
- void _post_dpad(DWORD p_dpad, int p_device, bool p_pressed);
-
- void _drag_event(int idx, UINT uMsg, WPARAM wParam, LPARAM lParam);
- void _touch_event(int idx, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
ref class ManagedType {
public:
property bool alert_close_handle;
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
index 3961480d23..6752885f37 100644
--- a/platform/windows/detect.py
+++ b/platform/windows/detect.py
@@ -203,11 +203,9 @@ def configure_msvc(env, manual_msvc_config):
elif env["optimize"] == "size": # optimize for size
env.Append(CCFLAGS=["/O1"])
env.Append(LINKFLAGS=["/OPT:REF"])
- env.AppendUnique(CPPDEFINES=["DEBUG_ENABLED"])
elif env["target"] == "debug":
env.AppendUnique(CCFLAGS=["/Zi", "/FS", "/Od", "/EHsc"])
- env.AppendUnique(CPPDEFINES=["DEBUG_ENABLED"])
env.Append(LINKFLAGS=["/DEBUG"])
if env["debug_symbols"]:
@@ -351,7 +349,6 @@ def configure_mingw(env):
elif env["target"] == "release_debug":
env.Append(CCFLAGS=["-O2"])
- env.Append(CPPDEFINES=["DEBUG_ENABLED"])
if env["debug_symbols"]:
env.Prepend(CCFLAGS=["-g2"])
if env["optimize"] == "speed": # optimize for speed (default)
@@ -361,7 +358,6 @@ def configure_mingw(env):
elif env["target"] == "debug":
env.Append(CCFLAGS=["-g3"])
- env.Append(CPPDEFINES=["DEBUG_ENABLED"])
if env["windows_subsystem"] == "gui":
env.Append(LINKFLAGS=["-Wl,--subsystem,windows"])
diff --git a/platform/windows/display_server_windows.h b/platform/windows/display_server_windows.h
index 6a90b28579..22c4f96a90 100644
--- a/platform/windows/display_server_windows.h
+++ b/platform/windows/display_server_windows.h
@@ -462,7 +462,7 @@ public:
virtual bool screen_is_touchscreen(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
virtual void screen_set_orientation(ScreenOrientation p_orientation, int p_screen = SCREEN_OF_MAIN_WINDOW) override;
- ScreenOrientation screen_get_orientation(int p_screen = SCREEN_OF_MAIN_WINDOW) const;
+ virtual ScreenOrientation screen_get_orientation(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
virtual void screen_set_keep_on(bool p_enable) override; //disable screensaver
virtual bool screen_is_kept_on() const override;
diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp
index 33b1c7bcce..fff9c47d4d 100644
--- a/scene/2d/area_2d.cpp
+++ b/scene/2d/area_2d.cpp
@@ -533,13 +533,13 @@ void Area2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_body_inout"), &Area2D::_body_inout);
ClassDB::bind_method(D_METHOD("_area_inout"), &Area2D::_area_inout);
- ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node2D"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
- ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node2D"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
+ ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node2D"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
+ ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node2D"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
ADD_SIGNAL(MethodInfo("body_entered", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node2D")));
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node2D")));
- ADD_SIGNAL(MethodInfo("area_shape_entered", PropertyInfo(Variant::RID, "area_rid"), PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area2D"), PropertyInfo(Variant::INT, "area_shape"), PropertyInfo(Variant::INT, "local_shape")));
- ADD_SIGNAL(MethodInfo("area_shape_exited", PropertyInfo(Variant::RID, "area_rid"), PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area2D"), PropertyInfo(Variant::INT, "area_shape"), PropertyInfo(Variant::INT, "local_shape")));
+ ADD_SIGNAL(MethodInfo("area_shape_entered", PropertyInfo(Variant::RID, "area_rid"), PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area2D"), PropertyInfo(Variant::INT, "area_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
+ ADD_SIGNAL(MethodInfo("area_shape_exited", PropertyInfo(Variant::RID, "area_rid"), PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area2D"), PropertyInfo(Variant::INT, "area_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
ADD_SIGNAL(MethodInfo("area_entered", PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area2D")));
ADD_SIGNAL(MethodInfo("area_exited", PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area2D")));
diff --git a/scene/2d/audio_listener_2d.h b/scene/2d/audio_listener_2d.h
index 875887acc6..454053bc4a 100644
--- a/scene/2d/audio_listener_2d.h
+++ b/scene/2d/audio_listener_2d.h
@@ -43,8 +43,6 @@ private:
friend class Viewport;
protected:
- void _update_listener();
-
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
diff --git a/scene/2d/collision_object_2d.cpp b/scene/2d/collision_object_2d.cpp
index 6916f832d0..28facd09ce 100644
--- a/scene/2d/collision_object_2d.cpp
+++ b/scene/2d/collision_object_2d.cpp
@@ -454,7 +454,7 @@ void CollisionObject2D::shape_owner_clear_shapes(uint32_t p_owner) {
}
uint32_t CollisionObject2D::shape_find_owner(int p_shape_index) const {
- ERR_FAIL_INDEX_V(p_shape_index, total_subshapes, 0);
+ ERR_FAIL_INDEX_V(p_shape_index, total_subshapes, UINT32_MAX);
for (const KeyValue<uint32_t, ShapeData> &E : shapes) {
for (int i = 0; i < E.value.shapes.size(); i++) {
@@ -465,7 +465,7 @@ uint32_t CollisionObject2D::shape_find_owner(int p_shape_index) const {
}
//in theory it should be unreachable
- return 0;
+ ERR_FAIL_V_MSG(UINT32_MAX, "Can't find owner for shape index " + itos(p_shape_index) + ".");
}
void CollisionObject2D::set_pickable(bool p_enabled) {
diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp
index 271a4da705..00bfa62449 100644
--- a/scene/2d/collision_polygon_2d.cpp
+++ b/scene/2d/collision_polygon_2d.cpp
@@ -131,6 +131,7 @@ void CollisionPolygon2D::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
+ ERR_FAIL_COND(!is_inside_tree());
if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
diff --git a/scene/2d/collision_shape_2d.cpp b/scene/2d/collision_shape_2d.cpp
index 54cb851216..c7742c7ba5 100644
--- a/scene/2d/collision_shape_2d.cpp
+++ b/scene/2d/collision_shape_2d.cpp
@@ -88,6 +88,8 @@ void CollisionShape2D::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
+ ERR_FAIL_COND(!is_inside_tree());
+
if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
diff --git a/scene/2d/cpu_particles_2d.h b/scene/2d/cpu_particles_2d.h
index 4990d443e3..391f51224e 100644
--- a/scene/2d/cpu_particles_2d.h
+++ b/scene/2d/cpu_particles_2d.h
@@ -201,7 +201,6 @@ public:
void set_explosiveness_ratio(real_t p_ratio);
void set_randomness_ratio(real_t p_ratio);
void set_lifetime_randomness(double p_random);
- void set_visibility_aabb(const Rect2 &p_aabb);
void set_use_local_coordinates(bool p_enable);
void set_speed_scale(double p_scale);
@@ -213,7 +212,6 @@ public:
real_t get_explosiveness_ratio() const;
real_t get_randomness_ratio() const;
double get_lifetime_randomness() const;
- Rect2 get_visibility_aabb() const;
bool get_use_local_coordinates() const;
double get_speed_scale() const;
@@ -226,9 +224,6 @@ public:
void set_draw_order(DrawOrder p_order);
DrawOrder get_draw_order() const;
- void set_draw_passes(int p_count);
- int get_draw_passes() const;
-
void set_texture(const Ref<Texture2D> &p_texture);
Ref<Texture2D> get_texture() const;
@@ -264,7 +259,6 @@ public:
void set_emission_points(const Vector<Vector2> &p_points);
void set_emission_normals(const Vector<Vector2> &p_normals);
void set_emission_colors(const Vector<Color> &p_colors);
- void set_emission_point_count(int p_count);
void set_scale_curve_x(Ref<Curve> p_scale_curve);
void set_scale_curve_y(Ref<Curve> p_scale_curve);
void set_split_scale(bool p_split_scale);
@@ -275,7 +269,6 @@ public:
Vector<Vector2> get_emission_points() const;
Vector<Vector2> get_emission_normals() const;
Vector<Color> get_emission_colors() const;
- int get_emission_point_count() const;
Ref<Curve> get_scale_curve_x() const;
Ref<Curve> get_scale_curve_y() const;
bool get_split_scale();
diff --git a/scene/2d/gpu_particles_2d.cpp b/scene/2d/gpu_particles_2d.cpp
index 5bce705dd5..6950fefdbe 100644
--- a/scene/2d/gpu_particles_2d.cpp
+++ b/scene/2d/gpu_particles_2d.cpp
@@ -163,8 +163,8 @@ void GPUParticles2D::set_trail_sections(int p_sections) {
}
void GPUParticles2D::set_trail_section_subdivisions(int p_subdivisions) {
- ERR_FAIL_COND(trail_section_subdivisions < 1);
- ERR_FAIL_COND(trail_section_subdivisions > 1024);
+ ERR_FAIL_COND(p_subdivisions < 1);
+ ERR_FAIL_COND(p_subdivisions > 1024);
trail_section_subdivisions = p_subdivisions;
update();
@@ -532,6 +532,7 @@ void GPUParticles2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_trail_section_subdivisions"), &GPUParticles2D::get_trail_section_subdivisions);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "emitting"), "set_emitting", "is_emitting");
+ ADD_PROPERTY_DEFAULT("emitting", true); // Workaround for doctool in headless mode, as dummy rasterizer always returns false.
ADD_PROPERTY(PropertyInfo(Variant::INT, "amount", PROPERTY_HINT_RANGE, "1,1000000,1,exp"), "set_amount", "get_amount");
ADD_GROUP("Time", "");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "lifetime", PROPERTY_HINT_RANGE, "0.01,600.0,0.01,or_greater"), "set_lifetime", "get_lifetime");
diff --git a/scene/2d/mesh_instance_2d.cpp b/scene/2d/mesh_instance_2d.cpp
index 15008390b7..58bff97da9 100644
--- a/scene/2d/mesh_instance_2d.cpp
+++ b/scene/2d/mesh_instance_2d.cpp
@@ -96,6 +96,10 @@ Rect2 MeshInstance2D::_edit_get_rect() const {
return Node2D::_edit_get_rect();
}
+
+bool MeshInstance2D::_edit_use_rect() const {
+ return mesh.is_valid();
+}
#endif
MeshInstance2D::MeshInstance2D() {
diff --git a/scene/2d/mesh_instance_2d.h b/scene/2d/mesh_instance_2d.h
index adfda4cf7f..f94d53da7d 100644
--- a/scene/2d/mesh_instance_2d.h
+++ b/scene/2d/mesh_instance_2d.h
@@ -48,6 +48,7 @@ protected:
public:
#ifdef TOOLS_ENABLED
virtual Rect2 _edit_get_rect() const override;
+ virtual bool _edit_use_rect() const override;
#endif
void set_mesh(const Ref<Mesh> &p_mesh);
diff --git a/scene/2d/navigation_agent_2d.cpp b/scene/2d/navigation_agent_2d.cpp
index 2f00978123..7faa964407 100644
--- a/scene/2d/navigation_agent_2d.cpp
+++ b/scene/2d/navigation_agent_2d.cpp
@@ -184,7 +184,7 @@ Vector2 NavigationAgent2D::get_target_location() const {
Vector2 NavigationAgent2D::get_next_location() {
update_navigation();
if (navigation_path.size() == 0) {
- ERR_FAIL_COND_V(agent_parent == nullptr, Vector2());
+ ERR_FAIL_COND_V_MSG(agent_parent == nullptr, Vector2(), "The agent has no parent.");
return agent_parent->get_global_position();
} else {
return navigation_path[nav_path_index];
@@ -192,7 +192,7 @@ Vector2 NavigationAgent2D::get_next_location() {
}
real_t NavigationAgent2D::distance_to_target() const {
- ERR_FAIL_COND_V(agent_parent == nullptr, 0.0);
+ ERR_FAIL_COND_V_MSG(agent_parent == nullptr, 0.0, "The agent has no parent.");
return agent_parent->get_global_position().distance_to(target_location);
}
diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp
index f493d97ceb..41288d646f 100644
--- a/scene/2d/physics_body_2d.cpp
+++ b/scene/2d/physics_body_2d.cpp
@@ -1000,8 +1000,8 @@ void RigidDynamicBody2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "applied_force"), "set_applied_force", "get_applied_force");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "applied_torque"), "set_applied_torque", "get_applied_torque");
- ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
- ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
+ ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
+ ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
ADD_SIGNAL(MethodInfo("body_entered", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
ADD_SIGNAL(MethodInfo("sleeping_state_changed"));
diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp
index 3ac2128c2e..0a8e9e2a58 100644
--- a/scene/2d/ray_cast_2d.cpp
+++ b/scene/2d/ray_cast_2d.cpp
@@ -157,6 +157,7 @@ void RayCast2D::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
+ ERR_FAIL_COND(!is_inside_tree());
if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp
index 222ec986b0..b546eaefa6 100644
--- a/scene/2d/tile_map.cpp
+++ b/scene/2d/tile_map.cpp
@@ -34,98 +34,6 @@
#include "servers/navigation_server_2d.h"
-void TileMapPattern::set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i p_atlas_coords, int p_alternative_tile) {
- ERR_FAIL_COND_MSG(p_coords.x < 0 || p_coords.y < 0, vformat("Cannot set cell with negative coords in a TileMapPattern. Wrong coords: %s", p_coords));
-
- size = size.max(p_coords + Vector2i(1, 1));
- pattern[p_coords] = TileMapCell(p_source_id, p_atlas_coords, p_alternative_tile);
-}
-
-bool TileMapPattern::has_cell(const Vector2i &p_coords) const {
- return pattern.has(p_coords);
-}
-
-void TileMapPattern::remove_cell(const Vector2i &p_coords, bool p_update_size) {
- ERR_FAIL_COND(!pattern.has(p_coords));
-
- pattern.erase(p_coords);
- if (p_update_size) {
- size = Vector2i();
- for (const KeyValue<Vector2i, TileMapCell> &E : pattern) {
- size = size.max(E.key + Vector2i(1, 1));
- }
- }
-}
-
-int TileMapPattern::get_cell_source_id(const Vector2i &p_coords) const {
- ERR_FAIL_COND_V(!pattern.has(p_coords), TileSet::INVALID_SOURCE);
-
- return pattern[p_coords].source_id;
-}
-
-Vector2i TileMapPattern::get_cell_atlas_coords(const Vector2i &p_coords) const {
- ERR_FAIL_COND_V(!pattern.has(p_coords), TileSetSource::INVALID_ATLAS_COORDS);
-
- return pattern[p_coords].get_atlas_coords();
-}
-
-int TileMapPattern::get_cell_alternative_tile(const Vector2i &p_coords) const {
- ERR_FAIL_COND_V(!pattern.has(p_coords), TileSetSource::INVALID_TILE_ALTERNATIVE);
-
- return pattern[p_coords].alternative_tile;
-}
-
-TypedArray<Vector2i> TileMapPattern::get_used_cells() const {
- // Returns the cells used in the tilemap.
- TypedArray<Vector2i> a;
- a.resize(pattern.size());
- int i = 0;
- for (const KeyValue<Vector2i, TileMapCell> &E : pattern) {
- Vector2i p(E.key.x, E.key.y);
- a[i++] = p;
- }
-
- return a;
-}
-
-Vector2i TileMapPattern::get_size() const {
- return size;
-}
-
-void TileMapPattern::set_size(const Vector2i &p_size) {
- for (const KeyValue<Vector2i, TileMapCell> &E : pattern) {
- Vector2i coords = E.key;
- if (p_size.x <= coords.x || p_size.y <= coords.y) {
- ERR_FAIL_MSG(vformat("Cannot set pattern size to %s, it contains a tile at %s. Size can only be increased.", p_size, coords));
- };
- }
-
- size = p_size;
-}
-
-bool TileMapPattern::is_empty() const {
- return pattern.is_empty();
-};
-
-void TileMapPattern::clear() {
- size = Vector2i();
- pattern.clear();
-};
-
-void TileMapPattern::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_cell", "coords", "source_id", "atlas_coords", "alternative_tile"), &TileMapPattern::set_cell, DEFVAL(TileSet::INVALID_SOURCE), DEFVAL(TileSetSource::INVALID_ATLAS_COORDS), DEFVAL(TileSetSource::INVALID_TILE_ALTERNATIVE));
- ClassDB::bind_method(D_METHOD("has_cell", "coords"), &TileMapPattern::has_cell);
- ClassDB::bind_method(D_METHOD("remove_cell", "coords"), &TileMapPattern::remove_cell);
- ClassDB::bind_method(D_METHOD("get_cell_source_id", "coords"), &TileMapPattern::get_cell_source_id);
- ClassDB::bind_method(D_METHOD("get_cell_atlas_coords", "coords"), &TileMapPattern::get_cell_atlas_coords);
- ClassDB::bind_method(D_METHOD("get_cell_alternative_tile", "coords"), &TileMapPattern::get_cell_alternative_tile);
-
- ClassDB::bind_method(D_METHOD("get_used_cells"), &TileMapPattern::get_used_cells);
- ClassDB::bind_method(D_METHOD("get_size"), &TileMapPattern::get_size);
- ClassDB::bind_method(D_METHOD("set_size", "size"), &TileMapPattern::set_size);
- ClassDB::bind_method(D_METHOD("is_empty"), &TileMapPattern::is_empty);
-}
-
Vector2i TileMap::transform_coords_layout(Vector2i p_coords, TileSet::TileOffsetAxis p_offset_axis, TileSet::TileLayout p_from_layout, TileSet::TileLayout p_to_layout) {
// Transform to stacked layout.
Vector2i output = p_coords;
@@ -409,6 +317,19 @@ bool TileMap::is_layer_enabled(int p_layer) const {
return layers[p_layer].enabled;
}
+void TileMap::set_layer_modulate(int p_layer, Color p_modulate) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+ layers[p_layer].modulate = p_modulate;
+ _clear_internals();
+ _recreate_internals();
+ emit_signal(SNAME("changed"));
+}
+
+Color TileMap::get_layer_modulate(int p_layer) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), Color());
+ return layers[p_layer].modulate;
+}
+
void TileMap::set_layer_y_sort_enabled(int p_layer, bool p_y_sort_enabled) {
ERR_FAIL_INDEX(p_layer, (int)layers.size());
layers[p_layer].y_sort_enabled = p_y_sort_enabled;
@@ -798,8 +719,9 @@ void TileMap::_rendering_cleanup_layer(int p_layer) {
ERR_FAIL_INDEX(p_layer, (int)layers.size());
RenderingServer *rs = RenderingServer::get_singleton();
- if (!layers[p_layer].canvas_item.is_valid()) {
+ if (layers[p_layer].canvas_item.is_valid()) {
rs->free(layers[p_layer].canvas_item);
+ layers[p_layer].canvas_item = RID();
}
}
@@ -832,6 +754,19 @@ void TileMap::_rendering_update_dirty_quadrants(SelfList<TileMapQuadrant>::List
int prev_z_index = 0;
RID prev_canvas_item;
+ Color modulate = get_self_modulate();
+ modulate *= get_layer_modulate(q.layer);
+ if (selected_layer >= 0) {
+ int z1 = get_layer_z_index(q.layer);
+ int z2 = get_layer_z_index(selected_layer);
+ if (z1 < z2 || (z1 == z2 && q.layer < selected_layer)) {
+ modulate = modulate.darkened(0.5);
+ } else if (z1 > z2 || (z1 == z2 && q.layer > selected_layer)) {
+ modulate = modulate.darkened(0.5);
+ modulate.a *= 0.3;
+ }
+ }
+
// Iterate over the cells of the quadrant.
for (const KeyValue<Vector2i, Vector2i> &E_cell : q.world_to_map) {
TileMapCell c = get_cell(q.layer, E_cell.value, true);
@@ -894,15 +829,6 @@ void TileMap::_rendering_update_dirty_quadrants(SelfList<TileMapQuadrant>::List
}
// Drawing the tile in the canvas item.
- Color modulate = get_self_modulate();
- if (selected_layer >= 0) {
- if (q.layer < selected_layer) {
- modulate = modulate.darkened(0.5);
- } else if (q.layer > selected_layer) {
- modulate = modulate.darkened(0.5);
- modulate.a *= 0.3;
- }
- }
draw_tile(canvas_item, E_cell.key - position, tile_set, c.source_id, c.get_atlas_coords(), c.alternative_tile, -1, modulate);
// --- Occluders ---
@@ -1770,11 +1696,12 @@ int TileMap::get_cell_alternative_tile(int p_layer, const Vector2i &p_coords, bo
return E->get().alternative_tile;
}
-TileMapPattern *TileMap::get_pattern(int p_layer, TypedArray<Vector2i> p_coords_array) {
+Ref<TileMapPattern> TileMap::get_pattern(int p_layer, TypedArray<Vector2i> p_coords_array) {
ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), nullptr);
ERR_FAIL_COND_V(!tile_set.is_valid(), nullptr);
- TileMapPattern *output = memnew(TileMapPattern);
+ Ref<TileMapPattern> output;
+ output.instantiate();
if (p_coords_array.is_empty()) {
return output;
}
@@ -1823,7 +1750,7 @@ TileMapPattern *TileMap::get_pattern(int p_layer, TypedArray<Vector2i> p_coords_
return output;
}
-Vector2i TileMap::map_pattern(Vector2i p_position_in_tilemap, Vector2i p_coords_in_pattern, const TileMapPattern *p_pattern) {
+Vector2i TileMap::map_pattern(Vector2i p_position_in_tilemap, Vector2i p_coords_in_pattern, Ref<TileMapPattern> p_pattern) {
ERR_FAIL_COND_V(!p_pattern->has_cell(p_coords_in_pattern), Vector2i());
Vector2i output = p_position_in_tilemap + p_coords_in_pattern;
@@ -1846,7 +1773,7 @@ Vector2i TileMap::map_pattern(Vector2i p_position_in_tilemap, Vector2i p_coords_
return output;
}
-void TileMap::set_pattern(int p_layer, Vector2i p_position, const TileMapPattern *p_pattern) {
+void TileMap::set_pattern(int p_layer, Vector2i p_position, const Ref<TileMapPattern> p_pattern) {
ERR_FAIL_INDEX(p_layer, (int)layers.size());
ERR_FAIL_COND(!tile_set.is_valid());
@@ -2083,6 +2010,9 @@ bool TileMap::_set(const StringName &p_name, const Variant &p_value) {
} else if (components[1] == "enabled") {
set_layer_enabled(index, p_value);
return true;
+ } else if (components[1] == "modulate") {
+ set_layer_modulate(index, p_value);
+ return true;
} else if (components[1] == "y_sort_enabled") {
set_layer_y_sort_enabled(index, p_value);
return true;
@@ -2119,6 +2049,9 @@ bool TileMap::_get(const StringName &p_name, Variant &r_ret) const {
} else if (components[1] == "enabled") {
r_ret = is_layer_enabled(index);
return true;
+ } else if (components[1] == "modulate") {
+ r_ret = get_layer_modulate(index);
+ return true;
} else if (components[1] == "y_sort_enabled") {
r_ret = is_layer_y_sort_enabled(index);
return true;
@@ -2144,6 +2077,7 @@ void TileMap::_get_property_list(List<PropertyInfo> *p_list) const {
for (unsigned int i = 0; i < layers.size(); i++) {
p_list->push_back(PropertyInfo(Variant::STRING, vformat("layer_%d/name", i), PROPERTY_HINT_NONE));
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/z_index", i), PROPERTY_HINT_NONE));
@@ -3027,6 +2961,8 @@ void TileMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_layer_name", "layer"), &TileMap::get_layer_name);
ClassDB::bind_method(D_METHOD("set_layer_enabled", "layer", "enabled"), &TileMap::set_layer_enabled);
ClassDB::bind_method(D_METHOD("is_layer_enabled", "layer"), &TileMap::is_layer_enabled);
+ ClassDB::bind_method(D_METHOD("set_layer_modulate", "layer", "enabled"), &TileMap::set_layer_modulate);
+ ClassDB::bind_method(D_METHOD("get_layer_modulate", "layer"), &TileMap::get_layer_modulate);
ClassDB::bind_method(D_METHOD("set_layer_y_sort_enabled", "layer", "y_sort_enabled"), &TileMap::set_layer_y_sort_enabled);
ClassDB::bind_method(D_METHOD("is_layer_y_sort_enabled", "layer"), &TileMap::is_layer_y_sort_enabled);
ClassDB::bind_method(D_METHOD("set_layer_y_sort_origin", "layer", "y_sort_origin"), &TileMap::set_layer_y_sort_origin);
@@ -3049,6 +2985,10 @@ void TileMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_coords_for_body_rid", "body"), &TileMap::get_coords_for_body_rid);
+ ClassDB::bind_method(D_METHOD("get_pattern", "layer", "coords_array"), &TileMap::get_pattern);
+ 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("fix_invalid_tiles"), &TileMap::fix_invalid_tiles);
ClassDB::bind_method(D_METHOD("clear_layer", "layer"), &TileMap::clear_layer);
ClassDB::bind_method(D_METHOD("clear"), &TileMap::clear);
@@ -3065,9 +3005,11 @@ void TileMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update_dirty_quadrants"), &TileMap::_update_dirty_quadrants);
- ClassDB::bind_method(D_METHOD("_set_tile_data", "layer"), &TileMap::_set_tile_data);
+ ClassDB::bind_method(D_METHOD("_set_tile_data", "layer", "data"), &TileMap::_set_tile_data);
ClassDB::bind_method(D_METHOD("_get_tile_data", "layer"), &TileMap::_get_tile_data);
+ ClassDB::bind_method(D_METHOD("_tile_set_changed_deferred_update"), &TileMap::_tile_set_changed_deferred_update);
+
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "tile_set", PROPERTY_HINT_RESOURCE_TYPE, "TileSet"), "set_tileset", "get_tileset");
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_quadrant_size", PROPERTY_HINT_RANGE, "1,128,1"), "set_quadrant_size", "get_quadrant_size");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collision_animatable"), "set_collision_animatable", "is_collision_animatable");
@@ -3087,8 +3029,16 @@ void TileMap::_bind_methods() {
void TileMap::_tile_set_changed() {
emit_signal(SNAME("changed"));
- _clear_internals();
- _recreate_internals();
+ _tile_set_changed_deferred_update_needed = true;
+ call_deferred("_tile_set_changed_deferred_update");
+}
+
+void TileMap::_tile_set_changed_deferred_update() {
+ if (_tile_set_changed_deferred_update_needed) {
+ _clear_internals();
+ _recreate_internals();
+ _tile_set_changed_deferred_update_needed = false;
+ }
}
TileMap::TileMap() {
diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h
index 2faede2445..e1f38a314c 100644
--- a/scene/2d/tile_map.h
+++ b/scene/2d/tile_map.h
@@ -37,51 +37,6 @@
class TileSetAtlasSource;
-union TileMapCell {
- struct {
- int32_t source_id : 16;
- int16_t coord_x : 16;
- int16_t coord_y : 16;
- int32_t alternative_tile : 16;
- };
-
- uint64_t _u64t;
- TileMapCell(int p_source_id = -1, Vector2i p_atlas_coords = TileSetSource::INVALID_ATLAS_COORDS, int p_alternative_tile = TileSetSource::INVALID_TILE_ALTERNATIVE) {
- source_id = p_source_id;
- set_atlas_coords(p_atlas_coords);
- alternative_tile = p_alternative_tile;
- }
-
- Vector2i get_atlas_coords() const {
- return Vector2i(coord_x, coord_y);
- }
-
- void set_atlas_coords(const Vector2i &r_coords) {
- coord_x = r_coords.x;
- coord_y = r_coords.y;
- }
-
- bool operator<(const TileMapCell &p_other) const {
- if (source_id == p_other.source_id) {
- if (coord_x == p_other.coord_x) {
- if (coord_y == p_other.coord_y) {
- return alternative_tile < p_other.alternative_tile;
- } else {
- return coord_y < p_other.coord_y;
- }
- } else {
- return coord_x < p_other.coord_x;
- }
- } else {
- return source_id < p_other.source_id;
- }
- }
-
- bool operator!=(const TileMapCell &p_other) const {
- return !(source_id == p_other.source_id && coord_x == p_other.coord_x && coord_y == p_other.coord_y && alternative_tile == p_other.alternative_tile);
- }
-};
-
struct TileMapQuadrant {
struct CoordsWorldComparator {
_ALWAYS_INLINE_ bool operator()(const Vector2i &p_a, const Vector2i &p_b) const {
@@ -150,32 +105,6 @@ struct TileMapQuadrant {
}
};
-class TileMapPattern : public Object {
- GDCLASS(TileMapPattern, Object);
-
- Vector2i size;
- Map<Vector2i, TileMapCell> pattern;
-
-protected:
- static void _bind_methods();
-
-public:
- void set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i p_atlas_coords, int p_alternative_tile = 0);
- bool has_cell(const Vector2i &p_coords) const;
- void remove_cell(const Vector2i &p_coords, bool p_update_size = true);
- int get_cell_source_id(const Vector2i &p_coords) const;
- Vector2i get_cell_atlas_coords(const Vector2i &p_coords) const;
- int get_cell_alternative_tile(const Vector2i &p_coords) const;
-
- TypedArray<Vector2i> get_used_cells() const;
-
- Vector2i get_size() const;
- void set_size(const Vector2i &p_size);
- bool is_empty() const;
-
- void clear();
-};
-
class TileMap : public Node2D {
GDCLASS(TileMap, Node2D);
@@ -219,6 +148,7 @@ private:
struct TileMapLayer {
String name;
bool enabled = true;
+ Color modulate = Color(1, 1, 1, 1);
bool y_sort_enabled = false;
int y_sort_origin = 0;
int z_index = 0;
@@ -284,6 +214,8 @@ private:
Vector<int> _get_tile_data(int p_layer) const;
void _tile_set_changed();
+ bool _tile_set_changed_deferred_update_needed = false;
+ void _tile_set_changed_deferred_update();
protected:
bool _set(const StringName &p_name, const Variant &p_value);
@@ -321,6 +253,8 @@ public:
String get_layer_name(int p_layer) const;
void set_layer_enabled(int p_layer, bool p_visible);
bool is_layer_enabled(int p_layer) const;
+ void set_layer_modulate(int p_layer, Color p_modulate);
+ Color get_layer_modulate(int p_layer) const;
void set_layer_y_sort_enabled(int p_layer, bool p_enabled);
bool is_layer_y_sort_enabled(int p_layer) const;
void set_layer_y_sort_origin(int p_layer, int p_y_sort_origin);
@@ -344,9 +278,9 @@ public:
Vector2i get_cell_atlas_coords(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const;
int get_cell_alternative_tile(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const;
- TileMapPattern *get_pattern(int p_layer, TypedArray<Vector2i> p_coords_array);
- Vector2i map_pattern(Vector2i p_position_in_tilemap, Vector2i p_coords_in_pattern, const TileMapPattern *p_pattern);
- void set_pattern(int p_layer, Vector2i p_position, const TileMapPattern *p_pattern);
+ Ref<TileMapPattern> get_pattern(int p_layer, TypedArray<Vector2i> p_coords_array);
+ Vector2i map_pattern(Vector2i p_position_in_tilemap, Vector2i p_coords_in_pattern, Ref<TileMapPattern> p_pattern);
+ void set_pattern(int p_layer, Vector2i p_position, const Ref<TileMapPattern> p_pattern);
// Not exposed to users
TileMapCell get_cell(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const;
diff --git a/scene/3d/area_3d.cpp b/scene/3d/area_3d.cpp
index 7e4c40ca0e..d411525707 100644
--- a/scene/3d/area_3d.cpp
+++ b/scene/3d/area_3d.cpp
@@ -649,13 +649,13 @@ void Area3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_reverb_uniformity", "amount"), &Area3D::set_reverb_uniformity);
ClassDB::bind_method(D_METHOD("get_reverb_uniformity"), &Area3D::get_reverb_uniformity);
- ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node3D"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
- ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node3D"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
+ ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node3D"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
+ ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node3D"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
ADD_SIGNAL(MethodInfo("body_entered", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node3D")));
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node3D")));
- ADD_SIGNAL(MethodInfo("area_shape_entered", PropertyInfo(Variant::RID, "area_rid"), PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area3D"), PropertyInfo(Variant::INT, "area_shape"), PropertyInfo(Variant::INT, "local_shape")));
- ADD_SIGNAL(MethodInfo("area_shape_exited", PropertyInfo(Variant::RID, "area_rid"), PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area3D"), PropertyInfo(Variant::INT, "area_shape"), PropertyInfo(Variant::INT, "local_shape")));
+ ADD_SIGNAL(MethodInfo("area_shape_entered", PropertyInfo(Variant::RID, "area_rid"), PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area3D"), PropertyInfo(Variant::INT, "area_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
+ ADD_SIGNAL(MethodInfo("area_shape_exited", PropertyInfo(Variant::RID, "area_rid"), PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area3D"), PropertyInfo(Variant::INT, "area_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
ADD_SIGNAL(MethodInfo("area_entered", PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area3D")));
ADD_SIGNAL(MethodInfo("area_exited", PropertyInfo(Variant::OBJECT, "area", PROPERTY_HINT_RESOURCE_TYPE, "Area3D")));
diff --git a/scene/3d/audio_listener_3d.h b/scene/3d/audio_listener_3d.h
index 492cacb0e9..31de3b4fb1 100644
--- a/scene/3d/audio_listener_3d.h
+++ b/scene/3d/audio_listener_3d.h
@@ -63,9 +63,6 @@ public:
virtual Transform3D get_listener_transform() const;
- void set_visible_layers(uint32_t p_layers);
- uint32_t get_visible_layers() const;
-
AudioListener3D();
~AudioListener3D();
};
diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp
index c422070480..44a685f506 100644
--- a/scene/3d/audio_stream_player_3d.cpp
+++ b/scene/3d/audio_stream_player_3d.cpp
@@ -835,7 +835,7 @@ void AudioStreamPlayer3D::_bind_methods() {
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");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "attenuation_model", PROPERTY_HINT_ENUM, "Inverse,Inverse Square,Log,Disabled"), "set_attenuation_model", "get_attenuation_model");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "attenuation_model", PROPERTY_HINT_ENUM, "Inverse,Inverse Square,Logarithmic,Disabled"), "set_attenuation_model", "get_attenuation_model");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "unit_db", PROPERTY_HINT_RANGE, "-80,80"), "set_unit_db", "get_unit_db");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "unit_size", PROPERTY_HINT_RANGE, "0.1,100,0.01,or_greater"), "set_unit_size", "get_unit_size");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_db", PROPERTY_HINT_RANGE, "-24,6"), "set_max_db", "get_max_db");
@@ -843,7 +843,7 @@ void AudioStreamPlayer3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "playing", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "_set_playing", "is_playing");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autoplay"), "set_autoplay", "is_autoplay_enabled");
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,1,or_greater,exp"), "set_max_distance", "get_max_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_distance", PROPERTY_HINT_RANGE, "0,4096,0.01,or_greater"), "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::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");
diff --git a/scene/3d/bone_attachment_3d.cpp b/scene/3d/bone_attachment_3d.cpp
index afd11482e3..8e89f4fc54 100644
--- a/scene/3d/bone_attachment_3d.cpp
+++ b/scene/3d/bone_attachment_3d.cpp
@@ -215,8 +215,6 @@ void BoneAttachment3D::_transform_changed() {
sk->set_bone_global_pose_override(bone_idx, our_trans, 1.0, true);
} else if (override_mode == OVERRIDE_MODES::MODE_LOCAL_POSE) {
sk->set_bone_local_pose_override(bone_idx, sk->global_pose_to_local_pose(bone_idx, our_trans), 1.0, true);
- } else if (override_mode == OVERRIDE_MODES::MODE_CUSTOM_POSE) {
- sk->set_bone_custom_pose(bone_idx, sk->global_pose_to_local_pose(bone_idx, our_trans));
}
}
}
@@ -273,8 +271,6 @@ void BoneAttachment3D::set_override_pose(bool p_override) {
sk->set_bone_global_pose_override(bone_idx, Transform3D(), 0.0, false);
} else if (override_mode == OVERRIDE_MODES::MODE_LOCAL_POSE) {
sk->set_bone_local_pose_override(bone_idx, Transform3D(), 0.0, false);
- } else if (override_mode == OVERRIDE_MODES::MODE_CUSTOM_POSE) {
- sk->set_bone_custom_pose(bone_idx, Transform3D());
}
}
_transform_changed();
@@ -294,8 +290,6 @@ void BoneAttachment3D::set_override_mode(int p_mode) {
sk->set_bone_global_pose_override(bone_idx, Transform3D(), 0.0, false);
} else if (override_mode == OVERRIDE_MODES::MODE_LOCAL_POSE) {
sk->set_bone_local_pose_override(bone_idx, Transform3D(), 0.0, false);
- } else if (override_mode == OVERRIDE_MODES::MODE_CUSTOM_POSE) {
- sk->set_bone_custom_pose(bone_idx, Transform3D());
}
}
override_mode = p_mode;
diff --git a/scene/3d/bone_attachment_3d.h b/scene/3d/bone_attachment_3d.h
index cf681cace8..57b9854e0e 100644
--- a/scene/3d/bone_attachment_3d.h
+++ b/scene/3d/bone_attachment_3d.h
@@ -47,7 +47,6 @@ class BoneAttachment3D : public Node3D {
enum OVERRIDE_MODES {
MODE_GLOBAL_POSE,
MODE_LOCAL_POSE,
- MODE_CUSTOM_POSE
};
bool use_external_skeleton = false;
diff --git a/scene/3d/camera_3d.cpp b/scene/3d/camera_3d.cpp
index 18b7bcc789..588d2b5018 100644
--- a/scene/3d/camera_3d.cpp
+++ b/scene/3d/camera_3d.cpp
@@ -656,6 +656,7 @@ Vector3 Camera3D::get_doppler_tracked_velocity() const {
}
RID Camera3D::get_pyramid_shape_rid() {
+ ERR_FAIL_COND_V_MSG(!is_inside_tree(), RID(), "Camera is not inside scene.");
if (pyramid_shape == RID()) {
pyramid_shape_points = get_near_plane_points();
pyramid_shape = PhysicsServer3D::get_singleton()->convex_polygon_shape_create();
diff --git a/scene/3d/collision_object_3d.cpp b/scene/3d/collision_object_3d.cpp
index 814ed5c2a7..fd891a5e13 100644
--- a/scene/3d/collision_object_3d.cpp
+++ b/scene/3d/collision_object_3d.cpp
@@ -648,7 +648,7 @@ void CollisionObject3D::shape_owner_clear_shapes(uint32_t p_owner) {
}
uint32_t CollisionObject3D::shape_find_owner(int p_shape_index) const {
- ERR_FAIL_INDEX_V(p_shape_index, total_subshapes, 0);
+ ERR_FAIL_INDEX_V(p_shape_index, total_subshapes, UINT32_MAX);
for (const KeyValue<uint32_t, ShapeData> &E : shapes) {
for (int i = 0; i < E.value.shapes.size(); i++) {
@@ -659,7 +659,7 @@ uint32_t CollisionObject3D::shape_find_owner(int p_shape_index) const {
}
//in theory it should be unreachable
- return 0;
+ ERR_FAIL_V_MSG(UINT32_MAX, "Can't find owner for shape index " + itos(p_shape_index) + ".");
}
CollisionObject3D::CollisionObject3D(RID p_rid, bool p_area) {
diff --git a/scene/3d/cpu_particles_3d.cpp b/scene/3d/cpu_particles_3d.cpp
index 48ef41e015..55feb02fce 100644
--- a/scene/3d/cpu_particles_3d.cpp
+++ b/scene/3d/cpu_particles_3d.cpp
@@ -73,6 +73,7 @@ void CPUParticles3D::set_amount(int p_amount) {
}
particle_data.resize((12 + 4 + 4) * p_amount);
+ RS::get_singleton()->multimesh_set_visible_instances(multimesh, -1);
RS::get_singleton()->multimesh_allocate_data(multimesh, p_amount, RS::MULTIMESH_TRANSFORM_3D, true, true);
particle_order.resize(p_amount);
diff --git a/scene/3d/cpu_particles_3d.h b/scene/3d/cpu_particles_3d.h
index 160814ead4..aca7328a27 100644
--- a/scene/3d/cpu_particles_3d.h
+++ b/scene/3d/cpu_particles_3d.h
@@ -209,7 +209,6 @@ public:
void set_explosiveness_ratio(real_t p_ratio);
void set_randomness_ratio(real_t p_ratio);
void set_lifetime_randomness(double p_random);
- void set_visibility_aabb(const AABB &p_aabb);
void set_use_local_coordinates(bool p_enable);
void set_speed_scale(double p_scale);
@@ -221,7 +220,6 @@ public:
real_t get_explosiveness_ratio() const;
real_t get_randomness_ratio() const;
double get_lifetime_randomness() const;
- AABB get_visibility_aabb() const;
bool get_use_local_coordinates() const;
double get_speed_scale() const;
@@ -234,9 +232,6 @@ public:
void set_draw_order(DrawOrder p_order);
DrawOrder get_draw_order() const;
- void set_draw_passes(int p_count);
- int get_draw_passes() const;
-
void set_mesh(const Ref<Mesh> &p_mesh);
Ref<Mesh> get_mesh() const;
@@ -275,7 +270,6 @@ public:
void set_emission_points(const Vector<Vector3> &p_points);
void set_emission_normals(const Vector<Vector3> &p_normals);
void set_emission_colors(const Vector<Color> &p_colors);
- void set_emission_point_count(int p_count);
void set_emission_ring_axis(Vector3 p_axis);
void set_emission_ring_height(real_t p_height);
void set_emission_ring_radius(real_t p_radius);
@@ -291,7 +285,6 @@ public:
Vector<Vector3> get_emission_points() const;
Vector<Vector3> get_emission_normals() const;
Vector<Color> get_emission_colors() const;
- int get_emission_point_count() const;
Vector3 get_emission_ring_axis() const;
real_t get_emission_ring_height() const;
real_t get_emission_ring_radius() const;
diff --git a/scene/3d/gpu_particles_3d.cpp b/scene/3d/gpu_particles_3d.cpp
index 32a62d8c7e..ea6242b669 100644
--- a/scene/3d/gpu_particles_3d.cpp
+++ b/scene/3d/gpu_particles_3d.cpp
@@ -562,6 +562,7 @@ void GPUParticles3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_transform_align"), &GPUParticles3D::get_transform_align);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "emitting"), "set_emitting", "is_emitting");
+ ADD_PROPERTY_DEFAULT("emitting", true); // Workaround for doctool in headless mode, as dummy rasterizer always returns false.
ADD_PROPERTY(PropertyInfo(Variant::INT, "amount", PROPERTY_HINT_RANGE, "1,1000000,1,exp"), "set_amount", "get_amount");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "sub_emitter", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "GPUParticles3D"), "set_sub_emitter", "get_sub_emitter");
ADD_GROUP("Time", "");
diff --git a/scene/3d/mesh_instance_3d.cpp b/scene/3d/mesh_instance_3d.cpp
index 67f4a88228..c148f95461 100644
--- a/scene/3d/mesh_instance_3d.cpp
+++ b/scene/3d/mesh_instance_3d.cpp
@@ -42,10 +42,9 @@ bool MeshInstance3D::_set(const StringName &p_name, const Variant &p_value) {
return false;
}
- Map<StringName, BlendShapeTrack>::Element *E = blend_shape_tracks.find(p_name);
+ Map<StringName, int>::Element *E = blend_shape_properties.find(p_name);
if (E) {
- E->get().value = p_value;
- RenderingServer::get_singleton()->instance_set_blend_shape_weight(get_instance(), E->get().idx, E->get().value);
+ set_blend_shape_value(E->get(), p_value);
return true;
}
@@ -67,9 +66,9 @@ bool MeshInstance3D::_get(const StringName &p_name, Variant &r_ret) const {
return false;
}
- const Map<StringName, BlendShapeTrack>::Element *E = blend_shape_tracks.find(p_name);
+ const Map<StringName, int>::Element *E = blend_shape_properties.find(p_name);
if (E) {
- r_ret = E->get().value;
+ r_ret = get_blend_shape_value(E->get());
return true;
}
@@ -86,7 +85,7 @@ bool MeshInstance3D::_get(const StringName &p_name, Variant &r_ret) const {
void MeshInstance3D::_get_property_list(List<PropertyInfo> *p_list) const {
List<String> ls;
- for (const KeyValue<StringName, BlendShapeTrack> &E : blend_shape_tracks) {
+ for (const KeyValue<StringName, int> &E : blend_shape_properties) {
ls.push_back(E.key);
}
@@ -114,25 +113,17 @@ void MeshInstance3D::set_mesh(const Ref<Mesh> &p_mesh) {
mesh = p_mesh;
- blend_shape_tracks.clear();
if (mesh.is_valid()) {
- for (int i = 0; i < mesh->get_blend_shape_count(); i++) {
- BlendShapeTrack mt;
- mt.idx = i;
- mt.value = 0;
- blend_shape_tracks["blend_shapes/" + String(mesh->get_blend_shape_name(i))] = mt;
- }
-
mesh->connect(CoreStringNames::get_singleton()->changed, callable_mp(this, &MeshInstance3D::_mesh_changed));
- surface_override_materials.resize(mesh->get_surface_count());
-
+ _mesh_changed();
set_base(mesh->get_rid());
} else {
+ blend_shape_tracks.clear();
+ blend_shape_properties.clear();
set_base(RID());
+ update_gizmos();
}
- update_gizmos();
-
notify_property_list_changed();
}
@@ -140,17 +131,48 @@ Ref<Mesh> MeshInstance3D::get_mesh() const {
return mesh;
}
+int MeshInstance3D::get_blend_shape_count() const {
+ if (mesh.is_null()) {
+ return 0;
+ }
+ return mesh->get_blend_shape_count();
+}
+int MeshInstance3D::find_blend_shape_by_name(const StringName &p_name) {
+ if (mesh.is_null()) {
+ return -1;
+ }
+ for (int i = 0; i < mesh->get_blend_shape_count(); i++) {
+ if (mesh->get_blend_shape_name(i) == p_name) {
+ return i;
+ }
+ }
+ return -1;
+}
+float MeshInstance3D::get_blend_shape_value(int p_blend_shape) const {
+ ERR_FAIL_COND_V(mesh.is_null(), 0.0);
+ ERR_FAIL_INDEX_V(p_blend_shape, (int)blend_shape_tracks.size(), 0);
+ return blend_shape_tracks[p_blend_shape];
+}
+void MeshInstance3D::set_blend_shape_value(int p_blend_shape, float p_value) {
+ ERR_FAIL_COND(mesh.is_null());
+ ERR_FAIL_INDEX(p_blend_shape, (int)blend_shape_tracks.size());
+ blend_shape_tracks[p_blend_shape] = p_value;
+ RenderingServer::get_singleton()->instance_set_blend_shape_weight(get_instance(), p_blend_shape, p_value);
+}
+
void MeshInstance3D::_resolve_skeleton_path() {
Ref<SkinReference> new_skin_reference;
if (!skeleton_path.is_empty()) {
Skeleton3D *skeleton = Object::cast_to<Skeleton3D>(get_node(skeleton_path));
if (skeleton) {
- new_skin_reference = skeleton->register_skin(skin_internal);
if (skin_internal.is_null()) {
+ new_skin_reference = skeleton->register_skin(skeleton->create_skin_from_rest_transforms());
//a skin was created for us
skin_internal = new_skin_reference->get_skin();
notify_property_list_changed();
+ } else {
+ new_skin_reference = skeleton->register_skin(skin_internal);
}
}
}
@@ -355,6 +377,19 @@ Ref<Material> MeshInstance3D::get_active_material(int p_surface) const {
void MeshInstance3D::_mesh_changed() {
ERR_FAIL_COND(mesh.is_null());
surface_override_materials.resize(mesh->get_surface_count());
+
+ uint32_t initialize_bs_from = blend_shape_tracks.size();
+ blend_shape_tracks.resize(mesh->get_blend_shape_count());
+
+ for (uint32_t i = 0; i < blend_shape_tracks.size(); i++) {
+ blend_shape_properties["blend_shapes/" + String(mesh->get_blend_shape_name(i))] = i;
+ if (i < initialize_bs_from) {
+ set_blend_shape_value(i, blend_shape_tracks[i]);
+ } else {
+ set_blend_shape_value(i, 0);
+ }
+ }
+
update_gizmos();
}
@@ -457,6 +492,11 @@ void MeshInstance3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("create_multiple_convex_collisions"), &MeshInstance3D::create_multiple_convex_collisions);
ClassDB::set_method_flags("MeshInstance3D", "create_multiple_convex_collisions", METHOD_FLAGS_DEFAULT);
+ ClassDB::bind_method(D_METHOD("get_blend_shape_count"), &MeshInstance3D::get_blend_shape_count);
+ ClassDB::bind_method(D_METHOD("find_blend_shape_by_name", "name"), &MeshInstance3D::find_blend_shape_by_name);
+ ClassDB::bind_method(D_METHOD("get_blend_shape_value", "blend_shape_idx"), &MeshInstance3D::get_blend_shape_value);
+ ClassDB::bind_method(D_METHOD("set_blend_shape_value", "blend_shape_idx", "value"), &MeshInstance3D::set_blend_shape_value);
+
ClassDB::bind_method(D_METHOD("create_debug_tangents"), &MeshInstance3D::create_debug_tangents);
ClassDB::set_method_flags("MeshInstance3D", "create_debug_tangents", METHOD_FLAGS_DEFAULT | METHOD_FLAG_EDITOR);
diff --git a/scene/3d/mesh_instance_3d.h b/scene/3d/mesh_instance_3d.h
index beb7f6cf95..8f21726601 100644
--- a/scene/3d/mesh_instance_3d.h
+++ b/scene/3d/mesh_instance_3d.h
@@ -31,8 +31,8 @@
#ifndef MESH_INSTANCE_H
#define MESH_INSTANCE_H
+#include "core/templates/local_vector.h"
#include "scene/3d/visual_instance_3d.h"
-
class Skin;
class SkinReference;
@@ -46,12 +46,8 @@ protected:
Ref<SkinReference> skin_ref;
NodePath skeleton_path = NodePath("..");
- struct BlendShapeTrack {
- int idx = 0;
- float value = 0.0;
- };
-
- Map<StringName, BlendShapeTrack> blend_shape_tracks;
+ LocalVector<float> blend_shape_tracks;
+ Map<StringName, int> blend_shape_properties;
Vector<Ref<Material>> surface_override_materials;
void _mesh_changed();
@@ -75,6 +71,11 @@ public:
void set_skeleton_path(const NodePath &p_skeleton);
NodePath get_skeleton_path();
+ int get_blend_shape_count() const;
+ int find_blend_shape_by_name(const StringName &p_name);
+ float get_blend_shape_value(int p_blend_shape) const;
+ void set_blend_shape_value(int p_blend_shape, float p_value);
+
int get_surface_override_material_count() const;
void set_surface_override_material(int p_surface, const Ref<Material> &p_material);
Ref<Material> get_surface_override_material(int p_surface) const;
diff --git a/scene/3d/navigation_agent_3d.cpp b/scene/3d/navigation_agent_3d.cpp
index c2d5c757db..1bc7d20c19 100644
--- a/scene/3d/navigation_agent_3d.cpp
+++ b/scene/3d/navigation_agent_3d.cpp
@@ -192,7 +192,7 @@ Vector3 NavigationAgent3D::get_target_location() const {
Vector3 NavigationAgent3D::get_next_location() {
update_navigation();
if (navigation_path.size() == 0) {
- ERR_FAIL_COND_V(agent_parent == nullptr, Vector3());
+ ERR_FAIL_COND_V_MSG(agent_parent == nullptr, Vector3(), "The agent has no parent.");
return agent_parent->get_global_transform().origin;
} else {
return navigation_path[nav_path_index] - Vector3(0, navigation_height_offset, 0);
@@ -200,7 +200,7 @@ Vector3 NavigationAgent3D::get_next_location() {
}
real_t NavigationAgent3D::distance_to_target() const {
- ERR_FAIL_COND_V(agent_parent == nullptr, 0.0);
+ ERR_FAIL_COND_V_MSG(agent_parent == nullptr, 0.0, "The agent has no parent.");
return agent_parent->get_global_transform().origin.distance_to(target_location);
}
diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp
index 8a51a259f7..473368cf69 100644
--- a/scene/3d/navigation_region_3d.cpp
+++ b/scene/3d/navigation_region_3d.cpp
@@ -162,7 +162,7 @@ void _bake_navigation_mesh(void *p_user_data) {
}
void NavigationRegion3D::bake_navigation_mesh() {
- ERR_FAIL_COND(bake_thread.is_started());
+ ERR_FAIL_COND_MSG(bake_thread.is_started(), "Unable to start another bake request. The navigation mesh bake thread is already baking a navigation mesh.");
BakeThreadsArgs *args = memnew(BakeThreadsArgs);
args->nav_region = this;
diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp
index 272a06bce4..5293dd3f0a 100644
--- a/scene/3d/node_3d.cpp
+++ b/scene/3d/node_3d.cpp
@@ -371,6 +371,9 @@ void Node3D::update_gizmos() {
if (data.gizmos.is_empty()) {
return;
}
+ if (data.gizmos_dirty) {
+ return;
+ }
data.gizmos_dirty = true;
MessageQueue::get_singleton()->push_callable(callable_mp(this, &Node3D::_update_gizmos));
#endif
@@ -467,6 +470,7 @@ Vector<Ref<Node3DGizmo>> Node3D::get_gizmos() const {
void Node3D::_update_gizmos() {
#ifdef TOOLS_ENABLED
if (data.gizmos_disabled || !is_inside_world() || !data.gizmos_dirty) {
+ data.gizmos_dirty = false;
return;
}
data.gizmos_dirty = false;
@@ -480,14 +484,14 @@ void Node3D::_update_gizmos() {
#endif
}
-#ifdef TOOLS_ENABLED
void Node3D::set_disable_gizmos(bool p_enabled) {
+#ifdef TOOLS_ENABLED
data.gizmos_disabled = p_enabled;
if (!p_enabled) {
clear_gizmos();
}
-}
#endif
+}
void Node3D::set_disable_scale(bool p_enabled) {
data.disable_scale = p_enabled;
diff --git a/scene/3d/physics_body_3d.cpp b/scene/3d/physics_body_3d.cpp
index 976bff4fbc..8cb348d6e3 100644
--- a/scene/3d/physics_body_3d.cpp
+++ b/scene/3d/physics_body_3d.cpp
@@ -1040,8 +1040,8 @@ void RigidDynamicBody3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "angular_velocity"), "set_angular_velocity", "get_angular_velocity");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_damp", PROPERTY_HINT_RANGE, "-1,100,0.001,or_greater"), "set_angular_damp", "get_angular_damp");
- ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
- ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
+ ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
+ ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
ADD_SIGNAL(MethodInfo("body_entered", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
ADD_SIGNAL(MethodInfo("sleeping_state_changed"));
diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp
index 2b52f034b2..e3744ad5e9 100644
--- a/scene/3d/skeleton_3d.cpp
+++ b/scene/3d/skeleton_3d.cpp
@@ -99,8 +99,12 @@ bool Skeleton3D::_set(const StringName &p_path, const Variant &p_value) {
set_bone_rest(which, p_value);
} else if (what == "enabled") {
set_bone_enabled(which, p_value);
- } else if (what == "pose") {
- set_bone_pose(which, p_value);
+ } else if (what == "position") {
+ set_bone_pose_position(which, p_value);
+ } else if (what == "rotation") {
+ set_bone_pose_rotation(which, p_value);
+ } else if (what == "scale") {
+ set_bone_pose_scale(which, p_value);
} else {
return false;
}
@@ -135,8 +139,12 @@ bool Skeleton3D::_get(const StringName &p_path, Variant &r_ret) const {
r_ret = get_bone_rest(which);
} else if (what == "enabled") {
r_ret = is_bone_enabled(which);
- } else if (what == "pose") {
- r_ret = get_bone_pose(which);
+ } else if (what == "position") {
+ r_ret = get_bone_pose_position(which);
+ } else if (what == "rotation") {
+ r_ret = get_bone_pose_rotation(which);
+ } else if (what == "scale") {
+ r_ret = get_bone_pose_scale(which);
} else {
return false;
}
@@ -151,7 +159,9 @@ void Skeleton3D::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::INT, prep + "parent", PROPERTY_HINT_RANGE, "-1," + itos(bones.size() - 1) + ",1", PROPERTY_USAGE_NOEDITOR));
p_list->push_back(PropertyInfo(Variant::TRANSFORM3D, prep + "rest", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
p_list->push_back(PropertyInfo(Variant::BOOL, prep + "enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::TRANSFORM3D, prep + "pose", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::VECTOR3, prep + "position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::QUATERNION, prep + "rotation", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::VECTOR3, prep + "scale", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
}
#ifndef _3D_DISABLED
@@ -161,6 +171,45 @@ void Skeleton3D::_get_property_list(List<PropertyInfo> *p_list) const {
"SkeletonModificationStack3D",
PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_DEFERRED_SET_RESOURCE | PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE));
#endif //_3D_DISABLED
+
+ for (PropertyInfo &E : *p_list) {
+ _validate_property(E);
+ }
+}
+
+void Skeleton3D::_validate_property(PropertyInfo &property) const {
+ PackedStringArray split = property.name.split("/");
+ if (split.size() == 3 && split[0] == "bones") {
+ if (split[2] == "rest") {
+ property.usage |= PROPERTY_USAGE_READ_ONLY;
+ }
+ if (is_show_rest_only()) {
+ if (split[2] == "enabled") {
+ property.usage |= PROPERTY_USAGE_READ_ONLY;
+ }
+ if (split[2] == "position") {
+ property.usage |= PROPERTY_USAGE_READ_ONLY;
+ }
+ if (split[2] == "rotation") {
+ property.usage |= PROPERTY_USAGE_READ_ONLY;
+ }
+ if (split[2] == "scale") {
+ property.usage |= PROPERTY_USAGE_READ_ONLY;
+ }
+ } else if (!is_bone_enabled(split[1].to_int())) {
+ if (split[2] == "position") {
+ property.usage |= PROPERTY_USAGE_READ_ONLY;
+ }
+ if (split[2] == "rotation") {
+ property.usage |= PROPERTY_USAGE_READ_ONLY;
+ }
+ if (split[2] == "scale") {
+ property.usage |= PROPERTY_USAGE_READ_ONLY;
+ }
+ }
+ }
+
+ Node3D::_validate_property(property);
}
void Skeleton3D::_update_process_order() {
@@ -547,18 +596,6 @@ void Skeleton3D::unparent_bone_and_rest(int p_bone) {
_make_dirty();
}
-void Skeleton3D::set_bone_disable_rest(int p_bone, bool p_disable) {
- const int bone_size = bones.size();
- ERR_FAIL_INDEX(p_bone, bone_size);
- bones.write[p_bone].disable_rest = p_disable;
-}
-
-bool Skeleton3D::is_bone_rest_disabled(int p_bone) const {
- const int bone_size = bones.size();
- ERR_FAIL_INDEX_V(p_bone, bone_size, false);
- return bones[p_bone].disable_rest;
-}
-
int Skeleton3D::get_bone_parent(int p_bone) const {
const int bone_size = bones.size();
ERR_FAIL_INDEX_V(p_bone, bone_size, -1);
@@ -657,36 +694,60 @@ void Skeleton3D::clear_bones() {
// Posing api
-void Skeleton3D::set_bone_pose(int p_bone, const Transform3D &p_pose) {
+void Skeleton3D::set_bone_pose_position(int p_bone, const Vector3 &p_position) {
const int bone_size = bones.size();
ERR_FAIL_INDEX(p_bone, bone_size);
- bones.write[p_bone].pose = p_pose;
+ bones.write[p_bone].pose_position = p_position;
+ bones.write[p_bone].pose_cache_dirty = true;
if (is_inside_tree()) {
_make_dirty();
}
}
-Transform3D Skeleton3D::get_bone_pose(int p_bone) const {
+void Skeleton3D::set_bone_pose_rotation(int p_bone, const Quaternion &p_rotation) {
const int bone_size = bones.size();
- ERR_FAIL_INDEX_V(p_bone, bone_size, Transform3D());
- return bones[p_bone].pose;
-}
+ ERR_FAIL_INDEX(p_bone, bone_size);
-void Skeleton3D::set_bone_custom_pose(int p_bone, const Transform3D &p_custom_pose) {
+ bones.write[p_bone].pose_rotation = p_rotation;
+ bones.write[p_bone].pose_cache_dirty = true;
+ if (is_inside_tree()) {
+ _make_dirty();
+ }
+}
+void Skeleton3D::set_bone_pose_scale(int p_bone, const Vector3 &p_scale) {
const int bone_size = bones.size();
ERR_FAIL_INDEX(p_bone, bone_size);
- //ERR_FAIL_COND( !is_inside_scene() );
- bones.write[p_bone].custom_pose_enable = (p_custom_pose != Transform3D());
- bones.write[p_bone].custom_pose = p_custom_pose;
+ bones.write[p_bone].pose_scale = p_scale;
+ bones.write[p_bone].pose_cache_dirty = true;
+ if (is_inside_tree()) {
+ _make_dirty();
+ }
+}
- _make_dirty();
+Vector3 Skeleton3D::get_bone_pose_position(int p_bone) const {
+ const int bone_size = bones.size();
+ ERR_FAIL_INDEX_V(p_bone, bone_size, Vector3());
+ return bones[p_bone].pose_position;
}
-Transform3D Skeleton3D::get_bone_custom_pose(int p_bone) const {
+Quaternion Skeleton3D::get_bone_pose_rotation(int p_bone) const {
+ const int bone_size = bones.size();
+ ERR_FAIL_INDEX_V(p_bone, bone_size, Quaternion());
+ return bones[p_bone].pose_rotation;
+}
+
+Vector3 Skeleton3D::get_bone_pose_scale(int p_bone) const {
+ const int bone_size = bones.size();
+ ERR_FAIL_INDEX_V(p_bone, bone_size, Vector3());
+ return bones[p_bone].pose_scale;
+}
+
+Transform3D Skeleton3D::get_bone_pose(int p_bone) const {
const int bone_size = bones.size();
ERR_FAIL_INDEX_V(p_bone, bone_size, Transform3D());
- return bones[p_bone].custom_pose;
+ ((Skeleton3D *)this)->bones.write[p_bone].update_pose_cache();
+ return bones[p_bone].pose_cache;
}
void Skeleton3D::_make_dirty() {
@@ -887,59 +948,57 @@ void Skeleton3D::_skin_changed() {
_make_dirty();
}
-Ref<SkinReference> Skeleton3D::register_skin(const Ref<Skin> &p_skin) {
- for (Set<SkinReference *>::Element *E = skin_bindings.front(); E; E = E->next()) {
- if (E->get()->skin == p_skin) {
- return Ref<SkinReference>(E->get());
+Ref<Skin> Skeleton3D::create_skin_from_rest_transforms() {
+ Ref<Skin> skin;
+
+ skin.instantiate();
+ skin->set_bind_count(bones.size());
+ _update_process_order(); // Just in case.
+
+ // Pose changed, rebuild cache of inverses.
+ const Bone *bonesptr = bones.ptr();
+ int len = bones.size();
+
+ // Calculate global rests and invert them.
+ LocalVector<int> bones_to_process;
+ bones_to_process = get_parentless_bones();
+ while (bones_to_process.size() > 0) {
+ int current_bone_idx = bones_to_process[0];
+ const Bone &b = bonesptr[current_bone_idx];
+ bones_to_process.erase(current_bone_idx);
+ LocalVector<int> child_bones_vector;
+ child_bones_vector = get_bone_children(current_bone_idx);
+ int child_bones_size = child_bones_vector.size();
+ if (b.parent < 0) {
+ skin->set_bind_pose(current_bone_idx, b.rest);
+ }
+ for (int i = 0; i < child_bones_size; i++) {
+ int child_bone_idx = child_bones_vector[i];
+ const Bone &cb = bonesptr[child_bone_idx];
+ skin->set_bind_pose(child_bone_idx, skin->get_bind_pose(current_bone_idx) * cb.rest);
+ // Add the bone's children to the list of bones to be processed.
+ bones_to_process.push_back(child_bones_vector[i]);
}
}
- Ref<Skin> skin = p_skin;
-
- if (skin.is_null()) {
- // Need to create one from existing code, this is for compatibility only
- // when skeletons did not support skins. It is also used by gizmo
- // to display the skeleton.
-
- skin.instantiate();
- skin->set_bind_count(bones.size());
- _update_process_order(); // Just in case.
-
- // Pose changed, rebuild cache of inverses.
- const Bone *bonesptr = bones.ptr();
- int len = bones.size();
-
- // Calculate global rests and invert them.
- LocalVector<int> bones_to_process;
- bones_to_process = get_parentless_bones();
- while (bones_to_process.size() > 0) {
- int current_bone_idx = bones_to_process[0];
- const Bone &b = bonesptr[current_bone_idx];
- bones_to_process.erase(current_bone_idx);
- LocalVector<int> child_bones_vector;
- child_bones_vector = get_bone_children(current_bone_idx);
- int child_bones_size = child_bones_vector.size();
- if (b.parent < 0) {
- skin->set_bind_pose(current_bone_idx, b.rest);
- }
- for (int i = 0; i < child_bones_size; i++) {
- int child_bone_idx = child_bones_vector[i];
- const Bone &cb = bonesptr[child_bone_idx];
- skin->set_bind_pose(child_bone_idx, skin->get_bind_pose(current_bone_idx) * cb.rest);
- // Add the bone's children to the list of bones to be processed.
- bones_to_process.push_back(child_bones_vector[i]);
- }
- }
+ for (int i = 0; i < len; i++) {
+ // The inverse is what is actually required.
+ skin->set_bind_bone(i, i);
+ skin->set_bind_pose(i, skin->get_bind_pose(i).affine_inverse());
+ }
- for (int i = 0; i < len; i++) {
- // The inverse is what is actually required.
- skin->set_bind_bone(i, i);
- skin->set_bind_pose(i, skin->get_bind_pose(i).affine_inverse());
+ return skin;
+}
+
+Ref<SkinReference> Skeleton3D::register_skin(const Ref<Skin> &p_skin) {
+ ERR_FAIL_COND_V(p_skin.is_null(), Ref<SkinReference>());
+
+ for (Set<SkinReference *>::Element *E = skin_bindings.front(); E; E = E->next()) {
+ if (E->get()->skin == p_skin) {
+ return Ref<SkinReference>(E->get());
}
}
- ERR_FAIL_COND_V(skin.is_null(), Ref<SkinReference>());
-
Ref<SkinReference> skin_ref;
skin_ref.instantiate();
@@ -947,11 +1006,11 @@ Ref<SkinReference> Skeleton3D::register_skin(const Ref<Skin> &p_skin) {
skin_ref->bind_count = 0;
skin_ref->skeleton = RenderingServer::get_singleton()->skeleton_create();
skin_ref->skeleton_node = this;
- skin_ref->skin = skin;
+ skin_ref->skin = p_skin;
skin_bindings.insert(skin_ref.operator->());
- skin->connect("changed", Callable(skin_ref.operator->(), "_skin_changed"));
+ skin_ref->skin->connect("changed", Callable(skin_ref.operator->(), "_skin_changed"));
_make_dirty(); // Skin needs to be updated, so update skeleton.
@@ -987,59 +1046,33 @@ void Skeleton3D::force_update_bone_children_transforms(int p_bone_idx) {
Bone &b = bonesptr[current_bone_idx];
bool bone_enabled = b.enabled && !show_rest_only;
- if (b.disable_rest) {
- if (bone_enabled) {
- Transform3D pose = b.pose;
- if (b.custom_pose_enable) {
- pose = b.custom_pose * pose;
- }
- if (b.parent >= 0) {
- b.pose_global = bonesptr[b.parent].pose_global * pose;
- b.pose_global_no_override = b.pose_global;
- } else {
- b.pose_global = pose;
- b.pose_global_no_override = b.pose_global;
- }
+ if (bone_enabled) {
+ b.update_pose_cache();
+ Transform3D pose = b.pose_cache;
+
+ if (b.parent >= 0) {
+ b.pose_global = bonesptr[b.parent].pose_global * pose;
+ b.pose_global_no_override = b.pose_global;
} else {
- if (b.parent >= 0) {
- b.pose_global = bonesptr[b.parent].pose_global;
- b.pose_global_no_override = b.pose_global;
- } else {
- b.pose_global = Transform3D();
- b.pose_global_no_override = b.pose_global;
- }
+ b.pose_global = pose;
+ b.pose_global_no_override = b.pose_global;
}
-
} else {
- if (bone_enabled) {
- Transform3D pose = b.pose;
- if (b.custom_pose_enable) {
- pose = b.custom_pose * pose;
- }
- if (b.parent >= 0) {
- b.pose_global = bonesptr[b.parent].pose_global * (b.rest * pose);
- b.pose_global_no_override = b.pose_global;
- } else {
- b.pose_global = b.rest * pose;
- b.pose_global_no_override = b.pose_global;
- }
+ if (b.parent >= 0) {
+ b.pose_global = bonesptr[b.parent].pose_global * b.rest;
+ b.pose_global_no_override = b.pose_global;
} else {
- if (b.parent >= 0) {
- b.pose_global = bonesptr[b.parent].pose_global * b.rest;
- b.pose_global_no_override = b.pose_global;
- } else {
- b.pose_global = b.rest;
- b.pose_global_no_override = b.pose_global;
- }
+ b.pose_global = b.rest;
+ b.pose_global_no_override = b.pose_global;
}
}
if (b.local_pose_override_amount >= CMP_EPSILON) {
Transform3D override_local_pose;
if (b.parent >= 0) {
- override_local_pose = bonesptr[b.parent].pose_global * (b.rest * b.local_pose_override);
+ override_local_pose = bonesptr[b.parent].pose_global * b.local_pose_override;
} else {
- override_local_pose = (b.rest * b.local_pose_override);
+ override_local_pose = b.local_pose_override;
}
b.pose_global = b.pose_global.interpolate_with(override_local_pose, b.local_pose_override_amount);
}
@@ -1080,8 +1113,8 @@ Transform3D Skeleton3D::global_pose_to_local_pose(int p_bone_idx, Transform3D p_
ERR_FAIL_INDEX_V(p_bone_idx, bone_size, Transform3D());
if (bones[p_bone_idx].parent >= 0) {
int parent_bone_idx = bones[p_bone_idx].parent;
- Transform3D conversion_transform = (bones[parent_bone_idx].pose_global * bones[p_bone_idx].rest);
- return conversion_transform.affine_inverse() * p_global_pose;
+ Transform3D conversion_transform = get_bone_global_pose(parent_bone_idx).affine_inverse();
+ return conversion_transform * p_global_pose;
} else {
return p_global_pose;
}
@@ -1092,8 +1125,7 @@ Transform3D Skeleton3D::local_pose_to_global_pose(int p_bone_idx, Transform3D p_
ERR_FAIL_INDEX_V(p_bone_idx, bone_size, Transform3D());
if (bones[p_bone_idx].parent >= 0) {
int parent_bone_idx = bones[p_bone_idx].parent;
- Transform3D conversion_transform = (bones[parent_bone_idx].pose_global * bones[p_bone_idx].rest);
- return conversion_transform * p_local_pose;
+ return bones[parent_bone_idx].pose_global * p_local_pose;
} else {
return p_local_pose;
}
@@ -1183,17 +1215,21 @@ void Skeleton3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_bone_rest", "bone_idx"), &Skeleton3D::get_bone_rest);
ClassDB::bind_method(D_METHOD("set_bone_rest", "bone_idx", "rest"), &Skeleton3D::set_bone_rest);
+ ClassDB::bind_method(D_METHOD("create_skin_from_rest_transforms"), &Skeleton3D::create_skin_from_rest_transforms);
ClassDB::bind_method(D_METHOD("register_skin", "skin"), &Skeleton3D::register_skin);
ClassDB::bind_method(D_METHOD("localize_rests"), &Skeleton3D::localize_rests);
- ClassDB::bind_method(D_METHOD("set_bone_disable_rest", "bone_idx", "disable"), &Skeleton3D::set_bone_disable_rest);
- ClassDB::bind_method(D_METHOD("is_bone_rest_disabled", "bone_idx"), &Skeleton3D::is_bone_rest_disabled);
-
ClassDB::bind_method(D_METHOD("clear_bones"), &Skeleton3D::clear_bones);
ClassDB::bind_method(D_METHOD("get_bone_pose", "bone_idx"), &Skeleton3D::get_bone_pose);
- ClassDB::bind_method(D_METHOD("set_bone_pose", "bone_idx", "pose"), &Skeleton3D::set_bone_pose);
+ ClassDB::bind_method(D_METHOD("set_bone_pose_position", "bone_idx", "position"), &Skeleton3D::set_bone_pose_position);
+ ClassDB::bind_method(D_METHOD("set_bone_pose_rotation", "bone_idx", "rotation"), &Skeleton3D::set_bone_pose_rotation);
+ ClassDB::bind_method(D_METHOD("set_bone_pose_scale", "bone_idx", "scale"), &Skeleton3D::set_bone_pose_scale);
+
+ ClassDB::bind_method(D_METHOD("get_bone_pose_position", "bone_idx"), &Skeleton3D::get_bone_pose_position);
+ ClassDB::bind_method(D_METHOD("get_bone_pose_rotation", "bone_idx"), &Skeleton3D::get_bone_pose_rotation);
+ ClassDB::bind_method(D_METHOD("get_bone_pose_scale", "bone_idx"), &Skeleton3D::get_bone_pose_scale);
ClassDB::bind_method(D_METHOD("is_bone_enabled", "bone_idx"), &Skeleton3D::is_bone_enabled);
ClassDB::bind_method(D_METHOD("set_bone_enabled", "bone_idx", "enabled"), &Skeleton3D::set_bone_enabled, DEFVAL(true));
@@ -1208,9 +1244,6 @@ void Skeleton3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_bone_local_pose_override", "bone_idx", "pose", "amount", "persistent"), &Skeleton3D::set_bone_local_pose_override, DEFVAL(false));
ClassDB::bind_method(D_METHOD("get_bone_local_pose_override", "bone_idx"), &Skeleton3D::get_bone_local_pose_override);
- ClassDB::bind_method(D_METHOD("get_bone_custom_pose", "bone_idx"), &Skeleton3D::get_bone_custom_pose);
- ClassDB::bind_method(D_METHOD("set_bone_custom_pose", "bone_idx", "custom_pose"), &Skeleton3D::set_bone_custom_pose);
-
ClassDB::bind_method(D_METHOD("force_update_all_bone_transforms"), &Skeleton3D::force_update_all_bone_transforms);
ClassDB::bind_method(D_METHOD("force_update_bone_child_transform", "bone_idx"), &Skeleton3D::force_update_bone_children_transforms);
diff --git a/scene/3d/skeleton_3d.h b/scene/3d/skeleton_3d.h
index 9aa4fc823f..f7bc3df94e 100644
--- a/scene/3d/skeleton_3d.h
+++ b/scene/3d/skeleton_3d.h
@@ -76,16 +76,24 @@ private:
bool enabled;
int parent;
- bool disable_rest = false;
Transform3D rest;
- Transform3D pose;
+ _FORCE_INLINE_ void update_pose_cache() {
+ if (pose_cache_dirty) {
+ pose_cache.basis.set_quaternion_scale(pose_rotation, pose_scale);
+ pose_cache.origin = pose_position;
+ pose_cache_dirty = false;
+ }
+ }
+ bool pose_cache_dirty = true;
+ Transform3D pose_cache;
+ Vector3 pose_position;
+ Quaternion pose_rotation;
+ Vector3 pose_scale = Vector3(1, 1, 1);
+
Transform3D pose_global;
Transform3D pose_global_no_override;
- bool custom_pose_enable = false;
- Transform3D custom_pose;
-
real_t global_pose_override_amount = 0.0;
bool global_pose_override_reset = false;
Transform3D global_pose_override;
@@ -107,8 +115,6 @@ private:
Bone() {
parent = -1;
enabled = true;
- disable_rest = false;
- custom_pose_enable = false;
global_pose_override_amount = 0;
global_pose_override_reset = false;
#ifndef _3D_DISABLED
@@ -147,6 +153,7 @@ protected:
bool _get(const StringName &p_path, Variant &r_ret) const;
bool _set(const StringName &p_path, const Variant &p_value);
void _get_property_list(List<PropertyInfo> *p_list) const;
+ virtual void _validate_property(PropertyInfo &property) const override;
void _notification(int p_what);
static void _bind_methods();
@@ -187,9 +194,6 @@ public:
void remove_bone_child(int p_bone, int p_child);
Vector<int> get_parentless_bones();
- void set_bone_disable_rest(int p_bone, bool p_disable);
- bool is_bone_rest_disabled(int p_bone) const;
-
int get_bone_count() const;
void set_bone_rest(int p_bone, const Transform3D &p_rest);
@@ -206,11 +210,15 @@ public:
// posing api
- void set_bone_pose(int p_bone, const Transform3D &p_pose);
+ void set_bone_pose_position(int p_bone, const Vector3 &p_position);
+ void set_bone_pose_rotation(int p_bone, const Quaternion &p_rotation);
+ void set_bone_pose_scale(int p_bone, const Vector3 &p_scale);
+
Transform3D get_bone_pose(int p_bone) const;
- void set_bone_custom_pose(int p_bone, const Transform3D &p_custom_pose);
- Transform3D get_bone_custom_pose(int p_bone) const;
+ Vector3 get_bone_pose_position(int p_bone) const;
+ Quaternion get_bone_pose_rotation(int p_bone) const;
+ Vector3 get_bone_pose_scale(int p_bone) const;
void clear_bones_global_pose_override();
Transform3D get_bone_global_pose_override(int p_bone) const;
@@ -222,6 +230,8 @@ public:
void localize_rests(); // used for loaders and tools
+ Ref<Skin> create_skin_from_rest_transforms();
+
Ref<SkinReference> register_skin(const Ref<Skin> &p_skin);
void force_update_all_dirty_bones();
diff --git a/scene/3d/soft_dynamic_body_3d.cpp b/scene/3d/soft_dynamic_body_3d.cpp
index 9fceb21790..903eedb58b 100644
--- a/scene/3d/soft_dynamic_body_3d.cpp
+++ b/scene/3d/soft_dynamic_body_3d.cpp
@@ -250,7 +250,7 @@ void SoftDynamicBody3D::_notification(int p_what) {
RID space = get_world_3d()->get_space();
PhysicsServer3D::get_singleton()->soft_body_set_space(physics_rid, space);
- prepare_physics_server();
+ _prepare_physics_server();
} break;
case NOTIFICATION_READY: {
@@ -284,13 +284,13 @@ void SoftDynamicBody3D::_notification(int p_what) {
case NOTIFICATION_DISABLED: {
if (is_inside_tree() && (disable_mode == DISABLE_MODE_REMOVE)) {
- prepare_physics_server();
+ _prepare_physics_server();
}
} break;
case NOTIFICATION_ENABLED: {
if (is_inside_tree() && (disable_mode == DISABLE_MODE_REMOVE)) {
- prepare_physics_server();
+ _prepare_physics_server();
}
} break;
@@ -378,7 +378,7 @@ void SoftDynamicBody3D::_bind_methods() {
TypedArray<String> SoftDynamicBody3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
- if (get_mesh().is_null()) {
+ if (mesh.is_null()) {
warnings.push_back(TTR("This body will be ignored until you set a mesh."));
}
@@ -407,11 +407,17 @@ void SoftDynamicBody3D::_update_physics_server() {
}
void SoftDynamicBody3D::_draw_soft_mesh() {
- if (get_mesh().is_null()) {
+ if (mesh.is_null()) {
return;
}
- const RID mesh_rid = get_mesh()->get_rid();
+ RID mesh_rid = mesh->get_rid();
+ if (owned_mesh != mesh_rid) {
+ _become_mesh_owner();
+ mesh_rid = mesh->get_rid();
+ PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, mesh_rid);
+ }
+
if (!rendering_server_handler.is_ready(mesh_rid)) {
rendering_server_handler.prepare(mesh_rid, 0);
@@ -430,11 +436,11 @@ void SoftDynamicBody3D::_draw_soft_mesh() {
rendering_server_handler.commit_changes();
}
-void SoftDynamicBody3D::prepare_physics_server() {
+void SoftDynamicBody3D::_prepare_physics_server() {
#ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) {
- if (get_mesh().is_valid()) {
- PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, get_mesh()->get_rid());
+ if (mesh.is_valid()) {
+ PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, mesh->get_rid());
} else {
PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, RID());
}
@@ -443,9 +449,13 @@ void SoftDynamicBody3D::prepare_physics_server() {
}
#endif
- if (get_mesh().is_valid() && (is_enabled() || (disable_mode != DISABLE_MODE_REMOVE))) {
- become_mesh_owner();
- PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, get_mesh()->get_rid());
+ if (mesh.is_valid() && (is_enabled() || (disable_mode != DISABLE_MODE_REMOVE))) {
+ RID mesh_rid = mesh->get_rid();
+ if (owned_mesh != mesh_rid) {
+ _become_mesh_owner();
+ mesh_rid = mesh->get_rid();
+ }
+ PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, mesh_rid);
RS::get_singleton()->connect("frame_pre_draw", callable_mp(this, &SoftDynamicBody3D::_draw_soft_mesh));
} else {
PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, RID());
@@ -455,38 +465,32 @@ void SoftDynamicBody3D::prepare_physics_server() {
}
}
-void SoftDynamicBody3D::become_mesh_owner() {
- if (mesh.is_null()) {
- return;
- }
+void SoftDynamicBody3D::_become_mesh_owner() {
+ Vector<Ref<Material>> copy_materials;
+ copy_materials.append_array(surface_override_materials);
- if (!mesh_owner) {
- mesh_owner = true;
+ ERR_FAIL_COND(!mesh->get_surface_count());
- Vector<Ref<Material>> copy_materials;
- copy_materials.append_array(surface_override_materials);
+ // Get current mesh array and create new mesh array with necessary flag for SoftDynamicBody
+ Array surface_arrays = mesh->surface_get_arrays(0);
+ Array surface_blend_arrays = mesh->surface_get_blend_shape_arrays(0);
+ Dictionary surface_lods = mesh->surface_get_lods(0);
+ uint32_t surface_format = mesh->surface_get_format(0);
- ERR_FAIL_COND(!mesh->get_surface_count());
+ surface_format |= Mesh::ARRAY_FLAG_USE_DYNAMIC_UPDATE;
- // Get current mesh array and create new mesh array with necessary flag for SoftDynamicBody
- Array surface_arrays = mesh->surface_get_arrays(0);
- Array surface_blend_arrays = mesh->surface_get_blend_shape_arrays(0);
- Dictionary surface_lods = mesh->surface_get_lods(0);
- uint32_t surface_format = mesh->surface_get_format(0);
+ Ref<ArrayMesh> soft_mesh;
+ soft_mesh.instantiate();
+ soft_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, surface_arrays, surface_blend_arrays, surface_lods, surface_format);
+ soft_mesh->surface_set_material(0, mesh->surface_get_material(0));
- surface_format |= Mesh::ARRAY_FLAG_USE_DYNAMIC_UPDATE;
+ set_mesh(soft_mesh);
- Ref<ArrayMesh> soft_mesh;
- soft_mesh.instantiate();
- soft_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, surface_arrays, surface_blend_arrays, surface_lods, surface_format);
- soft_mesh->surface_set_material(0, mesh->surface_get_material(0));
-
- set_mesh(soft_mesh);
-
- for (int i = copy_materials.size() - 1; 0 <= i; --i) {
- set_surface_override_material(i, copy_materials[i]);
- }
+ for (int i = copy_materials.size() - 1; 0 <= i; --i) {
+ set_surface_override_material(i, copy_materials[i]);
}
+
+ owned_mesh = soft_mesh->get_rid();
}
void SoftDynamicBody3D::set_collision_mask(uint32_t p_mask) {
@@ -548,16 +552,10 @@ void SoftDynamicBody3D::set_disable_mode(DisableMode p_mode) {
return;
}
- bool inside_tree = is_inside_tree();
-
- if (inside_tree && (disable_mode == DISABLE_MODE_REMOVE)) {
- prepare_physics_server();
- }
-
disable_mode = p_mode;
- if (inside_tree && (disable_mode == DISABLE_MODE_REMOVE)) {
- prepare_physics_server();
+ if (mesh.is_valid() && is_inside_tree() && !is_enabled()) {
+ _prepare_physics_server();
}
}
diff --git a/scene/3d/soft_dynamic_body_3d.h b/scene/3d/soft_dynamic_body_3d.h
index 5e7fbfe29e..57e116aa05 100644
--- a/scene/3d/soft_dynamic_body_3d.h
+++ b/scene/3d/soft_dynamic_body_3d.h
@@ -90,7 +90,7 @@ private:
DisableMode disable_mode = DISABLE_MODE_REMOVE;
- bool mesh_owner = false;
+ RID owned_mesh;
uint32_t collision_mask = 1;
uint32_t collision_layer = 1;
NodePath parent_collision_ignore;
@@ -106,6 +106,12 @@ private:
void _update_pickable();
+ void _update_physics_server();
+ void _draw_soft_mesh();
+
+ void _prepare_physics_server();
+ void _become_mesh_owner();
+
protected:
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
@@ -120,14 +126,7 @@ protected:
TypedArray<String> get_configuration_warnings() const override;
-protected:
- void _update_physics_server();
- void _draw_soft_mesh();
-
public:
- void prepare_physics_server();
- void become_mesh_owner();
-
RID get_physics_rid() const { return physics_rid; }
void set_collision_mask(uint32_t p_mask);
diff --git a/scene/3d/sprite_3d.h b/scene/3d/sprite_3d.h
index 90c2a309e1..61448c0e32 100644
--- a/scene/3d/sprite_3d.h
+++ b/scene/3d/sprite_3d.h
@@ -118,12 +118,6 @@ public:
void set_flip_v(bool p_flip);
bool is_flipped_v() const;
- void set_region_enabled(bool p_region);
- bool is_region_enabled() const;
-
- void set_region_rect(const Rect2 &p_region_rect);
- Rect2 get_region_rect() const;
-
void set_modulate(const Color &p_color);
Color get_modulate() const;
diff --git a/scene/3d/vehicle_body_3d.cpp b/scene/3d/vehicle_body_3d.cpp
index 9a2aaa8be2..6761fdd944 100644
--- a/scene/3d/vehicle_body_3d.cpp
+++ b/scene/3d/vehicle_body_3d.cpp
@@ -275,7 +275,7 @@ void VehicleWheel3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_steering"), &VehicleWheel3D::get_steering);
ADD_GROUP("Per-Wheel Motion", "");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "engine_force", PROPERTY_HINT_RANGE, "0.00,1024.0,0.01,or_greater"), "set_engine_force", "get_engine_force");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "engine_force", PROPERTY_HINT_RANGE, "-1024,1024.0,0.01,or_greater"), "set_engine_force", "get_engine_force");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "brake", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_brake", "get_brake");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "steering", PROPERTY_HINT_RANGE, "-180,180.0,0.01"), "set_steering", "get_steering");
ADD_GROUP("VehicleBody3D Motion", "");
@@ -914,7 +914,7 @@ void VehicleBody3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_steering"), &VehicleBody3D::get_steering);
ADD_GROUP("Motion", "");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "engine_force", PROPERTY_HINT_RANGE, "0.00,1024.0,0.01,or_greater"), "set_engine_force", "get_engine_force");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "engine_force", PROPERTY_HINT_RANGE, "-1024,1024.0,0.01,or_greater"), "set_engine_force", "get_engine_force");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "brake", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_brake", "get_brake");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "steering", PROPERTY_HINT_RANGE, "-180,180.0,0.01"), "set_steering", "get_steering");
}
diff --git a/scene/3d/xr_nodes.cpp b/scene/3d/xr_nodes.cpp
index ebfb58e9fe..9dbee58f0e 100644
--- a/scene/3d/xr_nodes.cpp
+++ b/scene/3d/xr_nodes.cpp
@@ -47,13 +47,45 @@ void XRCamera3D::_notification(int p_what) {
case NOTIFICATION_EXIT_TREE: {
// need to find our XROrigin3D parent and let it know we're no longer its camera!
XROrigin3D *origin = Object::cast_to<XROrigin3D>(get_parent());
- if (origin != nullptr) {
- origin->clear_tracked_camera_if(this);
+ if (origin != nullptr && origin->get_tracked_camera() == this) {
+ origin->set_tracked_camera(nullptr);
}
}; break;
};
};
+void XRCamera3D::_changed_tracker(const StringName p_tracker_name, int p_tracker_type) {
+ if (p_tracker_name == tracker_name) {
+ XRServer *xr_server = XRServer::get_singleton();
+ ERR_FAIL_NULL(xr_server);
+
+ tracker = xr_server->get_tracker(p_tracker_name);
+ if (tracker.is_valid()) {
+ tracker->connect("pose_changed", callable_mp(this, &XRCamera3D::_pose_changed));
+
+ Ref<XRPose> pose = tracker->get_pose(pose_name);
+ if (pose.is_valid()) {
+ set_transform(pose->get_adjusted_transform());
+ }
+ }
+ }
+}
+
+void XRCamera3D::_removed_tracker(const StringName p_tracker_name, int p_tracker_type) {
+ if (p_tracker_name == tracker_name) {
+ if (tracker.is_valid()) {
+ tracker->disconnect("pose_changed", callable_mp(this, &XRCamera3D::_pose_changed));
+ }
+ tracker.unref();
+ }
+}
+
+void XRCamera3D::_pose_changed(const Ref<XRPose> &p_pose) {
+ if (p_pose->get_name() == pose_name) {
+ set_transform(p_pose->get_adjusted_transform());
+ }
+}
+
TypedArray<String> XRCamera3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
@@ -172,195 +204,215 @@ Vector<Plane> XRCamera3D::get_frustum() const {
return cm.get_projection_planes(get_camera_transform());
};
-////////////////////////////////////////////////////////////////////////////////////////////////////
+XRCamera3D::XRCamera3D() {
+ XRServer *xr_server = XRServer::get_singleton();
+ ERR_FAIL_NULL(xr_server);
-void XRController3D::_notification(int p_what) {
- switch (p_what) {
- case NOTIFICATION_ENTER_TREE: {
- set_process_internal(true);
- }; break;
- case NOTIFICATION_EXIT_TREE: {
- set_process_internal(false);
- }; break;
- case NOTIFICATION_INTERNAL_PROCESS: {
- // get our XRServer
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL(xr_server);
-
- // find the tracker for our controller
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, controller_id);
- if (!tracker.is_valid()) {
- // this controller is currently turned off
- is_active = false;
- button_states = 0;
- } else {
- is_active = true;
- set_transform(tracker->get_transform(true));
-
- int joy_id = tracker->get_joy_id();
- if (joy_id >= 0) {
- int mask = 1;
- // check button states
- for (int i = 0; i < 16; i++) {
- bool was_pressed = (button_states & mask) == mask;
- bool is_pressed = Input::get_singleton()->is_joy_button_pressed(joy_id, (JoyButton)i);
-
- if (!was_pressed && is_pressed) {
- emit_signal(SNAME("button_pressed"), i);
- button_states += mask;
- } else if (was_pressed && !is_pressed) {
- emit_signal(SNAME("button_released"), i);
- button_states -= mask;
- };
-
- mask = mask << 1;
- };
-
- } else {
- button_states = 0;
- };
-
- // check for an updated mesh
- Ref<Mesh> trackerMesh = tracker->get_mesh();
- if (mesh != trackerMesh) {
- mesh = trackerMesh;
- emit_signal(SNAME("mesh_updated"), mesh);
- }
- };
- }; break;
- default:
- break;
- };
-};
+ xr_server->connect("tracker_added", callable_mp(this, &XRCamera3D::_changed_tracker));
+ xr_server->connect("tracker_updated", callable_mp(this, &XRCamera3D::_changed_tracker));
+ xr_server->connect("tracker_removed", callable_mp(this, &XRCamera3D::_removed_tracker));
+}
-void XRController3D::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_controller_id", "controller_id"), &XRController3D::set_controller_id);
- ClassDB::bind_method(D_METHOD("get_controller_id"), &XRController3D::get_controller_id);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "controller_id", PROPERTY_HINT_RANGE, "0,32,1"), "set_controller_id", "get_controller_id");
- ClassDB::bind_method(D_METHOD("get_controller_name"), &XRController3D::get_controller_name);
+XRCamera3D::~XRCamera3D() {
+ XRServer *xr_server = XRServer::get_singleton();
+ ERR_FAIL_NULL(xr_server);
- // passthroughs to information about our related joystick
- ClassDB::bind_method(D_METHOD("get_joystick_id"), &XRController3D::get_joystick_id);
- ClassDB::bind_method(D_METHOD("is_button_pressed", "button"), &XRController3D::is_button_pressed);
- ClassDB::bind_method(D_METHOD("get_joystick_axis", "axis"), &XRController3D::get_joystick_axis);
+ xr_server->disconnect("tracker_added", callable_mp(this, &XRCamera3D::_changed_tracker));
+ xr_server->disconnect("tracker_updated", callable_mp(this, &XRCamera3D::_changed_tracker));
+ xr_server->disconnect("tracker_removed", callable_mp(this, &XRCamera3D::_removed_tracker));
+}
- ClassDB::bind_method(D_METHOD("get_is_active"), &XRController3D::get_is_active);
- ClassDB::bind_method(D_METHOD("get_tracker_hand"), &XRController3D::get_tracker_hand);
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// XRNode3D is a node that has it's transform updated by an XRPositionalTracker.
+// Note that trackers are only available in runtime and only after an XRInterface registers one.
+// So we bind by name and as long as a tracker isn't available, our node remains inactive.
- ClassDB::bind_method(D_METHOD("get_rumble"), &XRController3D::get_rumble);
- ClassDB::bind_method(D_METHOD("set_rumble", "rumble"), &XRController3D::set_rumble);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rumble", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_rumble", "get_rumble");
- ADD_PROPERTY_DEFAULT("rumble", 0.0);
+void XRNode3D::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_tracker", "tracker_name"), &XRNode3D::set_tracker);
+ ClassDB::bind_method(D_METHOD("get_tracker"), &XRNode3D::get_tracker);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "tracker", PROPERTY_HINT_ENUM_SUGGESTION), "set_tracker", "get_tracker");
- ClassDB::bind_method(D_METHOD("get_mesh"), &XRController3D::get_mesh);
+ ClassDB::bind_method(D_METHOD("set_pose_name", "pose"), &XRNode3D::set_pose_name);
+ ClassDB::bind_method(D_METHOD("get_pose_name"), &XRNode3D::get_pose_name);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "pose", PROPERTY_HINT_ENUM_SUGGESTION), "set_pose_name", "get_pose_name");
- ADD_SIGNAL(MethodInfo("button_pressed", PropertyInfo(Variant::INT, "button")));
- ADD_SIGNAL(MethodInfo("button_released", PropertyInfo(Variant::INT, "button")));
- ADD_SIGNAL(MethodInfo("mesh_updated", PropertyInfo(Variant::OBJECT, "mesh", PROPERTY_HINT_RESOURCE_TYPE, "Mesh")));
+ ClassDB::bind_method(D_METHOD("get_is_active"), &XRNode3D::get_is_active);
+ ClassDB::bind_method(D_METHOD("get_has_tracking_data"), &XRNode3D::get_has_tracking_data);
+ ClassDB::bind_method(D_METHOD("get_pose"), &XRNode3D::get_pose);
+ ClassDB::bind_method(D_METHOD("trigger_haptic_pulse", "action_name", "frequency", "amplitude", "duration_sec", "delay_sec"), &XRNode3D::trigger_haptic_pulse);
};
-void XRController3D::set_controller_id(int p_controller_id) {
- // We don't check any bounds here, this controller may not yet be active and just be a place holder until it is.
- // Note that setting this to 0 means this node is not bound to a controller yet.
- controller_id = p_controller_id;
- update_configuration_warnings();
-};
+void XRNode3D::_validate_property(PropertyInfo &property) const {
+ XRServer *xr_server = XRServer::get_singleton();
+ ERR_FAIL_NULL(xr_server);
-int XRController3D::get_controller_id() const {
- return controller_id;
-};
+ if (property.name == "tracker") {
+ PackedStringArray names = xr_server->get_suggested_tracker_names();
+ String hint_string;
+ for (const String &name : names) {
+ hint_string += name + ",";
+ }
+ property.hint_string = hint_string;
+ } else if (property.name == "pose") {
+ PackedStringArray names = xr_server->get_suggested_pose_names(tracker_name);
+ String hint_string;
+ for (const String &name : names) {
+ hint_string += name + ",";
+ }
+ property.hint_string = hint_string;
+ }
+}
-String XRController3D::get_controller_name() const {
- // get our XRServer
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL_V(xr_server, String());
+void XRNode3D::set_tracker(const StringName p_tracker_name) {
+ if (tracker.is_valid() && tracker->get_tracker_name() == p_tracker_name) {
+ // didn't change
+ return;
+ }
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, controller_id);
- if (!tracker.is_valid()) {
- return String("Not connected");
- };
+ // just in case
+ _unbind_tracker();
- return tracker->get_tracker_name();
-};
+ // copy the name
+ tracker_name = p_tracker_name;
+ pose_name = "default";
-int XRController3D::get_joystick_id() const {
- // get our XRServer
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL_V(xr_server, 0);
+ // see if it's already available
+ _bind_tracker();
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, controller_id);
- if (!tracker.is_valid()) {
- // No tracker? no joystick id... (0 is our first joystick)
- return -1;
- };
+ update_configuration_warnings();
+ notify_property_list_changed();
+}
- return tracker->get_joy_id();
-};
+StringName XRNode3D::get_tracker() const {
+ return tracker_name;
+}
-bool XRController3D::is_button_pressed(int p_button) const {
- int joy_id = get_joystick_id();
- if (joy_id == -1) {
- return false;
- };
+void XRNode3D::set_pose_name(const StringName p_pose_name) {
+ pose_name = p_pose_name;
- return Input::get_singleton()->is_joy_button_pressed(joy_id, (JoyButton)p_button);
-};
+ // Update pose if we are bound to a tracker with a valid pose
+ Ref<XRPose> pose = get_pose();
+ if (pose.is_valid()) {
+ set_transform(pose->get_adjusted_transform());
+ }
+}
-float XRController3D::get_joystick_axis(int p_axis) const {
- int joy_id = get_joystick_id();
- if (joy_id == -1) {
- return 0.0;
- };
+StringName XRNode3D::get_pose_name() const {
+ return pose_name;
+}
- return Input::get_singleton()->get_joy_axis(joy_id, (JoyAxis)p_axis);
-};
+bool XRNode3D::get_is_active() const {
+ if (tracker.is_null()) {
+ return false;
+ } else if (!tracker->has_pose(pose_name)) {
+ return false;
+ } else {
+ return true;
+ }
+}
-real_t XRController3D::get_rumble() const {
- // get our XRServer
+bool XRNode3D::get_has_tracking_data() const {
+ if (tracker.is_null()) {
+ return false;
+ } else if (!tracker->has_pose(pose_name)) {
+ return false;
+ } else {
+ return tracker->get_pose(pose_name)->get_has_tracking_data();
+ }
+}
+
+void XRNode3D::trigger_haptic_pulse(const String &p_action_name, double p_frequency, double p_amplitude, double p_duration_sec, double p_delay_sec) {
+ // TODO need to link trackers to the interface that registered them so we can call this on the correct interface.
+ // For now this works fine as in 99% of the cases we only have our primary interface active
XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL_V(xr_server, 0.0);
+ if (xr_server != nullptr) {
+ Ref<XRInterface> xr_interface = xr_server->get_primary_interface();
+ if (xr_interface.is_valid()) {
+ xr_interface->trigger_haptic_pulse(p_action_name, tracker_name, p_frequency, p_amplitude, p_duration_sec, p_delay_sec);
+ }
+ }
+}
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, controller_id);
- if (!tracker.is_valid()) {
- return 0.0;
- };
+Ref<XRPose> XRNode3D::get_pose() {
+ if (tracker.is_valid()) {
+ return tracker->get_pose(pose_name);
+ } else {
+ return Ref<XRPose>();
+ }
+}
- return tracker->get_rumble();
-};
+void XRNode3D::_bind_tracker() {
+ ERR_FAIL_COND_MSG(tracker.is_valid(), "Unbind the current tracker first");
-void XRController3D::set_rumble(real_t p_rumble) {
- // get our XRServer
XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL(xr_server);
+ if (xr_server != nullptr) {
+ tracker = xr_server->get_tracker(tracker_name);
+ if (tracker.is_null()) {
+ // It is possible and valid if the tracker isn't available (yet), in this case we just exit
+ return;
+ }
+
+ tracker->connect("pose_changed", callable_mp(this, &XRNode3D::_pose_changed));
+
+ Ref<XRPose> pose = get_pose();
+ if (pose.is_valid()) {
+ set_transform(pose->get_adjusted_transform());
+ }
+ }
+}
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, controller_id);
+void XRNode3D::_unbind_tracker() {
if (tracker.is_valid()) {
- tracker->set_rumble(p_rumble);
- };
-};
+ tracker->disconnect("pose_changed", callable_mp(this, &XRNode3D::_pose_changed));
-Ref<Mesh> XRController3D::get_mesh() const {
- return mesh;
+ tracker.unref();
+ }
}
-bool XRController3D::get_is_active() const {
- return is_active;
-};
+void XRNode3D::_changed_tracker(const StringName p_tracker_name, int p_tracker_type) {
+ if (p_tracker_name == p_tracker_name) {
+ // just in case unref our current tracker
+ _unbind_tracker();
-XRPositionalTracker::TrackerHand XRController3D::get_tracker_hand() const {
- // get our XRServer
+ // get our new tracker
+ _bind_tracker();
+ }
+}
+
+void XRNode3D::_removed_tracker(const StringName p_tracker_name, int p_tracker_type) {
+ if (p_tracker_name == p_tracker_name) {
+ // unref our tracker, it's no longer available
+ _unbind_tracker();
+ }
+}
+
+void XRNode3D::_pose_changed(const Ref<XRPose> &p_pose) {
+ if (p_pose.is_valid() && p_pose->get_name() == pose_name) {
+ set_transform(p_pose->get_adjusted_transform());
+ }
+}
+
+XRNode3D::XRNode3D() {
XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL_V(xr_server, XRPositionalTracker::TRACKER_HAND_UNKNOWN);
+ ERR_FAIL_NULL(xr_server);
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, controller_id);
- if (!tracker.is_valid()) {
- return XRPositionalTracker::TRACKER_HAND_UNKNOWN;
- };
+ xr_server->connect("tracker_added", callable_mp(this, &XRNode3D::_changed_tracker));
+ xr_server->connect("tracker_updated", callable_mp(this, &XRNode3D::_changed_tracker));
+ xr_server->connect("tracker_removed", callable_mp(this, &XRNode3D::_removed_tracker));
+}
- return tracker->get_tracker_hand();
-};
+XRNode3D::~XRNode3D() {
+ _unbind_tracker();
+
+ XRServer *xr_server = XRServer::get_singleton();
+ ERR_FAIL_NULL(xr_server);
+
+ xr_server->disconnect("tracker_added", callable_mp(this, &XRNode3D::_changed_tracker));
+ xr_server->disconnect("tracker_updated", callable_mp(this, &XRNode3D::_changed_tracker));
+ xr_server->disconnect("tracker_removed", callable_mp(this, &XRNode3D::_removed_tracker));
+}
-TypedArray<String> XRController3D::get_configuration_warnings() const {
+TypedArray<String> XRNode3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (is_visible() && is_inside_tree()) {
@@ -370,142 +422,179 @@ TypedArray<String> XRController3D::get_configuration_warnings() const {
warnings.push_back(TTR("XRController3D must have an XROrigin3D node as its parent."));
}
- if (controller_id == 0) {
- warnings.push_back(TTR("The controller ID must not be 0 or this controller won't be bound to an actual controller."));
+ if (tracker_name == "") {
+ warnings.push_back(TTR("No tracker name is set."));
+ }
+
+ if (pose_name == "") {
+ warnings.push_back(TTR("No pose is set."));
}
}
return warnings;
-};
+}
////////////////////////////////////////////////////////////////////////////////////////////////////
-void XRAnchor3D::_notification(int p_what) {
- switch (p_what) {
- case NOTIFICATION_ENTER_TREE: {
- set_process_internal(true);
- }; break;
- case NOTIFICATION_EXIT_TREE: {
- set_process_internal(false);
- }; break;
- case NOTIFICATION_INTERNAL_PROCESS: {
- // get our XRServer
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL(xr_server);
-
- // find the tracker for our anchor
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_ANCHOR, anchor_id);
- if (!tracker.is_valid()) {
- // this anchor is currently not available
- is_active = false;
- } else {
- is_active = true;
- Transform3D transform;
-
- // we'll need our world_scale
- real_t world_scale = xr_server->get_world_scale();
-
- // get our info from our tracker
- transform.basis = tracker->get_orientation();
- transform.origin = tracker->get_position(); // <-- already adjusted to world scale
-
- // our basis is scaled to the size of the plane the anchor is tracking
- // extract the size from our basis and reset the scale
- size = transform.basis.get_scale() * world_scale;
- transform.basis.orthonormalize();
-
- // apply our reference frame and set our transform
- set_transform(xr_server->get_reference_frame() * transform);
-
- // check for an updated mesh
- Ref<Mesh> trackerMesh = tracker->get_mesh();
- if (mesh != trackerMesh) {
- mesh = trackerMesh;
- emit_signal(SNAME("mesh_updated"), mesh);
- }
- };
- }; break;
- default:
- break;
- };
-};
-
-void XRAnchor3D::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_anchor_id", "anchor_id"), &XRAnchor3D::set_anchor_id);
- ClassDB::bind_method(D_METHOD("get_anchor_id"), &XRAnchor3D::get_anchor_id);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "anchor_id", PROPERTY_HINT_RANGE, "0,32,1"), "set_anchor_id", "get_anchor_id");
- ClassDB::bind_method(D_METHOD("get_anchor_name"), &XRAnchor3D::get_anchor_name);
+void XRController3D::_bind_methods() {
+ // passthroughs to information about our related joystick
+ ClassDB::bind_method(D_METHOD("is_button_pressed", "name"), &XRController3D::is_button_pressed);
+ ClassDB::bind_method(D_METHOD("get_value", "name"), &XRController3D::get_value);
+ ClassDB::bind_method(D_METHOD("get_axis", "name"), &XRController3D::get_axis);
- ClassDB::bind_method(D_METHOD("get_is_active"), &XRAnchor3D::get_is_active);
- ClassDB::bind_method(D_METHOD("get_size"), &XRAnchor3D::get_size);
+ ClassDB::bind_method(D_METHOD("get_tracker_hand"), &XRController3D::get_tracker_hand);
- ClassDB::bind_method(D_METHOD("get_plane"), &XRAnchor3D::get_plane);
+ ClassDB::bind_method(D_METHOD("get_rumble"), &XRController3D::get_rumble);
+ ClassDB::bind_method(D_METHOD("set_rumble", "rumble"), &XRController3D::set_rumble);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rumble", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_rumble", "get_rumble");
+ ADD_PROPERTY_DEFAULT("rumble", 0.0);
- ClassDB::bind_method(D_METHOD("get_mesh"), &XRAnchor3D::get_mesh);
- ADD_SIGNAL(MethodInfo("mesh_updated", PropertyInfo(Variant::OBJECT, "mesh", PROPERTY_HINT_RESOURCE_TYPE, "Mesh")));
+ ADD_SIGNAL(MethodInfo("button_pressed", PropertyInfo(Variant::STRING, "name")));
+ ADD_SIGNAL(MethodInfo("button_released", PropertyInfo(Variant::STRING, "name")));
+ ADD_SIGNAL(MethodInfo("input_value_changed", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::FLOAT, "value")));
+ ADD_SIGNAL(MethodInfo("input_axis_changed", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::VECTOR2, "value")));
};
-void XRAnchor3D::set_anchor_id(int p_anchor_id) {
- // We don't check any bounds here, this anchor may not yet be active and just be a place holder until it is.
- // Note that setting this to 0 means this node is not bound to an anchor yet.
- anchor_id = p_anchor_id;
- update_configuration_warnings();
-};
+void XRController3D::_bind_tracker() {
+ XRNode3D::_bind_tracker();
+ if (tracker.is_valid()) {
+ // bind to input signals
+ tracker->connect("button_pressed", callable_mp(this, &XRController3D::_button_pressed));
+ tracker->connect("button_released", callable_mp(this, &XRController3D::_button_released));
+ tracker->connect("input_value_changed", callable_mp(this, &XRController3D::_input_value_changed));
+ tracker->connect("input_axis_changed", callable_mp(this, &XRController3D::_input_axis_changed));
+ }
+}
-int XRAnchor3D::get_anchor_id() const {
- return anchor_id;
-};
+void XRController3D::_unbind_tracker() {
+ if (tracker.is_valid()) {
+ // unbind input signals
+ tracker->disconnect("button_pressed", callable_mp(this, &XRController3D::_button_pressed));
+ tracker->disconnect("button_released", callable_mp(this, &XRController3D::_button_released));
+ tracker->disconnect("input_value_changed", callable_mp(this, &XRController3D::_input_value_changed));
+ tracker->disconnect("input_axis_changed", callable_mp(this, &XRController3D::_input_axis_changed));
+ }
-Vector3 XRAnchor3D::get_size() const {
- return size;
-};
+ XRNode3D::_unbind_tracker();
+}
-String XRAnchor3D::get_anchor_name() const {
- // get our XRServer
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL_V(xr_server, String());
+void XRController3D::_button_pressed(const String &p_name) {
+ // just pass it on...
+ emit_signal("button_pressed", p_name);
+}
- Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_ANCHOR, anchor_id);
- if (!tracker.is_valid()) {
- return String("Not connected");
- };
+void XRController3D::_button_released(const String &p_name) {
+ // just pass it on...
+ emit_signal("button_released", p_name);
+}
- return tracker->get_tracker_name();
-};
+void XRController3D::_input_value_changed(const String &p_name, float p_value) {
+ // just pass it on...
+ emit_signal("input_value_changed", p_name, p_value);
+}
-bool XRAnchor3D::get_is_active() const {
- return is_active;
-};
+void XRController3D::_input_axis_changed(const String &p_name, Vector2 p_value) {
+ // just pass it on...
+ emit_signal("input_axis_changed", p_name, p_value);
+}
-TypedArray<String> XRAnchor3D::get_configuration_warnings() const {
- TypedArray<String> warnings = Node::get_configuration_warnings();
+bool XRController3D::is_button_pressed(const StringName &p_name) const {
+ if (tracker.is_valid()) {
+ // Inputs should already be of the correct type, our XR runtime handles conversions between raw input and the desired type
+ bool pressed = tracker->get_input(p_name);
+ return pressed;
+ } else {
+ return false;
+ }
+}
- if (is_visible() && is_inside_tree()) {
- // must be child node of XROrigin3D!
- XROrigin3D *origin = Object::cast_to<XROrigin3D>(get_parent());
- if (origin == nullptr) {
- warnings.push_back(TTR("XRAnchor3D must have an XROrigin3D node as its parent."));
- }
+float XRController3D::get_value(const StringName &p_name) const {
+ if (tracker.is_valid()) {
+ // Inputs should already be of the correct type, our XR runtime handles conversions between raw input and the desired type, but just in case we convert
+ Variant input = tracker->get_input(p_name);
+ switch (input.get_type()) {
+ case Variant::BOOL: {
+ bool value = input;
+ return value ? 1.0 : 0.0;
+ } break;
+ case Variant::FLOAT: {
+ float value = input;
+ return value;
+ } break;
+ default:
+ return 0.0;
+ };
+ } else {
+ return 0.0;
+ }
+}
- if (anchor_id == 0) {
- warnings.push_back(TTR("The anchor ID must not be 0 or this anchor won't be bound to an actual anchor."));
+Vector2 XRController3D::get_axis(const StringName &p_name) const {
+ if (tracker.is_valid()) {
+ // Inputs should already be of the correct type, our XR runtime handles conversions between raw input and the desired type, but just in case we convert
+ Variant input = tracker->get_input(p_name);
+ switch (input.get_type()) {
+ case Variant::BOOL: {
+ bool value = input;
+ return Vector2(value ? 1.0 : 0.0, 0.0);
+ } break;
+ case Variant::FLOAT: {
+ float value = input;
+ return Vector2(value, 0.0);
+ } break;
+ case Variant::VECTOR2: {
+ Vector2 axis = input;
+ return axis;
+ }
+ default:
+ return Vector2();
}
+ } else {
+ return Vector2();
}
+}
- return warnings;
-};
+real_t XRController3D::get_rumble() const {
+ if (!tracker.is_valid()) {
+ return 0.0;
+ }
+
+ return tracker->get_rumble();
+}
+
+void XRController3D::set_rumble(real_t p_rumble) {
+ if (tracker.is_valid()) {
+ tracker->set_rumble(p_rumble);
+ }
+}
+
+XRPositionalTracker::TrackerHand XRController3D::get_tracker_hand() const {
+ // get our XRServer
+ if (!tracker.is_valid()) {
+ return XRPositionalTracker::TRACKER_HAND_UNKNOWN;
+ }
+
+ return tracker->get_tracker_hand();
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void XRAnchor3D::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("get_size"), &XRAnchor3D::get_size);
+ ClassDB::bind_method(D_METHOD("get_plane"), &XRAnchor3D::get_plane);
+}
+
+Vector3 XRAnchor3D::get_size() const {
+ return size;
+}
Plane XRAnchor3D::get_plane() const {
Vector3 location = get_position();
Basis orientation = get_transform().basis;
- Plane plane(location, orientation.get_axis(1).normalized());
+ Plane plane(orientation.get_axis(1).normalized(), location);
return plane;
-};
-
-Ref<Mesh> XRAnchor3D::get_mesh() const {
- return mesh;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -525,23 +614,21 @@ TypedArray<String> XROrigin3D::get_configuration_warnings() const {
}
return warnings;
-};
+}
void XROrigin3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_world_scale", "world_scale"), &XROrigin3D::set_world_scale);
ClassDB::bind_method(D_METHOD("get_world_scale"), &XROrigin3D::get_world_scale);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "world_scale"), "set_world_scale", "get_world_scale");
-};
+}
void XROrigin3D::set_tracked_camera(XRCamera3D *p_tracked_camera) {
tracked_camera = p_tracked_camera;
-};
+}
-void XROrigin3D::clear_tracked_camera_if(XRCamera3D *p_tracked_camera) {
- if (tracked_camera == p_tracked_camera) {
- tracked_camera = nullptr;
- };
-};
+XRCamera3D *XROrigin3D::get_tracked_camera() const {
+ return tracked_camera;
+}
real_t XROrigin3D::get_world_scale() const {
// get our XRServer
@@ -549,7 +636,7 @@ real_t XROrigin3D::get_world_scale() const {
ERR_FAIL_NULL_V(xr_server, 1.0);
return xr_server->get_world_scale();
-};
+}
void XROrigin3D::set_world_scale(real_t p_world_scale) {
// get our XRServer
@@ -557,7 +644,7 @@ void XROrigin3D::set_world_scale(real_t p_world_scale) {
ERR_FAIL_NULL(xr_server);
xr_server->set_world_scale(p_world_scale);
-};
+}
void XROrigin3D::_notification(int p_what) {
// get our XRServer
@@ -596,4 +683,4 @@ void XROrigin3D::_notification(int p_what) {
interface->notification(p_what);
}
}
-};
+}
diff --git a/scene/3d/xr_nodes.h b/scene/3d/xr_nodes.h
index 6e54ff83d7..5e7d06093d 100644
--- a/scene/3d/xr_nodes.h
+++ b/scene/3d/xr_nodes.h
@@ -45,8 +45,18 @@ class XRCamera3D : public Camera3D {
GDCLASS(XRCamera3D, Camera3D);
protected:
+ // The name and pose for our HMD tracker is currently the only hardcoded bit.
+ // If we ever are able to support multiple HMDs we may need to make this settable.
+ StringName tracker_name = "head";
+ StringName pose_name = "default";
+ Ref<XRPositionalTracker> tracker;
+
void _notification(int p_what);
+ void _changed_tracker(const StringName p_tracker_name, int p_tracker_type);
+ void _removed_tracker(const StringName p_tracker_name, int p_tracker_type);
+ void _pose_changed(const Ref<XRPose> &p_pose);
+
public:
TypedArray<String> get_configuration_warnings() const override;
@@ -55,48 +65,88 @@ public:
virtual Vector3 project_position(const Point2 &p_point, real_t p_z_depth) const override;
virtual Vector<Plane> get_frustum() const override;
- XRCamera3D() {}
- ~XRCamera3D() {}
+ XRCamera3D();
+ ~XRCamera3D();
};
/*
- XRController3D is a helper node that automatically updates its position based on tracker data.
+ XRNode3D is a helper node that implements binding to a tracker.
It must be a child node of our XROrigin node
*/
-class XRController3D : public Node3D {
- GDCLASS(XRController3D, Node3D);
+class XRNode3D : public Node3D {
+ GDCLASS(XRNode3D, Node3D);
private:
- int controller_id = 1;
+ StringName tracker_name;
+ StringName pose_name = "default";
bool is_active = true;
- int button_states = 0;
- Ref<Mesh> mesh;
protected:
- void _notification(int p_what);
+ Ref<XRPositionalTracker> tracker;
+
static void _bind_methods();
-public:
- void set_controller_id(int p_controller_id);
- int get_controller_id() const;
- String get_controller_name() const;
+ virtual void _bind_tracker();
+ virtual void _unbind_tracker();
+ void _changed_tracker(const StringName p_tracker_name, int p_tracker_type);
+ void _removed_tracker(const StringName p_tracker_name, int p_tracker_type);
- int get_joystick_id() const;
- bool is_button_pressed(int p_button) const;
- float get_joystick_axis(int p_axis) const;
+ void _pose_changed(const Ref<XRPose> &p_pose);
- real_t get_rumble() const;
- void set_rumble(real_t p_rumble);
+public:
+ virtual void _validate_property(PropertyInfo &property) const override;
+ void set_tracker(const StringName p_tracker_name);
+ StringName get_tracker() const;
+
+ void set_pose_name(const StringName p_pose);
+ StringName get_pose_name() const;
bool get_is_active() const;
- XRPositionalTracker::TrackerHand get_tracker_hand() const;
+ bool get_has_tracking_data() const;
- Ref<Mesh> get_mesh() const;
+ void trigger_haptic_pulse(const String &p_action_name, double p_frequency, double p_amplitude, double p_duration_sec, double p_delay_sec = 0);
+
+ Ref<XRPose> get_pose();
TypedArray<String> get_configuration_warnings() const override;
+ XRNode3D();
+ ~XRNode3D();
+};
+
+/*
+ XRController3D is a helper node that automatically updates its position based on tracker data.
+
+ It must be a child node of our XROrigin node
+*/
+
+class XRController3D : public XRNode3D {
+ GDCLASS(XRController3D, XRNode3D);
+
+private:
+protected:
+ static void _bind_methods();
+
+ virtual void _bind_tracker() override;
+ virtual void _unbind_tracker() override;
+
+ void _button_pressed(const String &p_name);
+ void _button_released(const String &p_name);
+ void _input_value_changed(const String &p_name, float p_value);
+ void _input_axis_changed(const String &p_name, Vector2 p_value);
+
+public:
+ bool is_button_pressed(const StringName &p_name) const;
+ float get_value(const StringName &p_name) const;
+ Vector2 get_axis(const StringName &p_name) const;
+
+ real_t get_rumble() const;
+ void set_rumble(real_t p_rumble);
+
+ XRPositionalTracker::TrackerHand get_tracker_hand() const;
+
XRController3D() {}
~XRController3D() {}
};
@@ -106,33 +156,19 @@ public:
It must be a child node of our XROrigin3D node
*/
-class XRAnchor3D : public Node3D {
- GDCLASS(XRAnchor3D, Node3D);
+class XRAnchor3D : public XRNode3D {
+ GDCLASS(XRAnchor3D, XRNode3D);
private:
- int anchor_id = 1;
- bool is_active = true;
Vector3 size;
- Ref<Mesh> mesh;
protected:
- void _notification(int p_what);
static void _bind_methods();
public:
- void set_anchor_id(int p_anchor_id);
- int get_anchor_id() const;
- String get_anchor_name() const;
-
- bool get_is_active() const;
Vector3 get_size() const;
-
Plane get_plane() const;
- Ref<Mesh> get_mesh() const;
-
- TypedArray<String> get_configuration_warnings() const override;
-
XRAnchor3D() {}
~XRAnchor3D() {}
};
@@ -159,7 +195,7 @@ public:
TypedArray<String> get_configuration_warnings() const override;
void set_tracked_camera(XRCamera3D *p_tracked_camera);
- void clear_tracked_camera_if(XRCamera3D *p_tracked_camera);
+ XRCamera3D *get_tracked_camera() const;
real_t get_world_scale() const;
void set_world_scale(real_t p_world_scale);
diff --git a/scene/animation/animation_cache.cpp b/scene/animation/animation_cache.cpp
deleted file mode 100644
index 56743007e4..0000000000
--- a/scene/animation/animation_cache.cpp
+++ /dev/null
@@ -1,314 +0,0 @@
-/*************************************************************************/
-/* animation_cache.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (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 "animation_cache.h"
-
-void AnimationCache::_node_exit_tree(Node *p_node) {
- //it is one shot, so it disconnects upon arrival
-
- ERR_FAIL_COND(!connected_nodes.has(p_node));
-
- connected_nodes.erase(p_node);
-
- for (int i = 0; i < path_cache.size(); i++) {
- if (path_cache[i].node != p_node) {
- continue;
- }
-
- path_cache.write[i].valid = false; //invalidate path cache
- }
-}
-
-void AnimationCache::_animation_changed() {
- _clear_cache();
-}
-
-void AnimationCache::_clear_cache() {
- while (connected_nodes.size()) {
- connected_nodes.front()->get()->disconnect("tree_exiting", callable_mp(this, &AnimationCache::_node_exit_tree));
- connected_nodes.erase(connected_nodes.front());
- }
- path_cache.clear();
- cache_valid = false;
- cache_dirty = true;
-}
-
-void AnimationCache::_update_cache() {
- cache_valid = false;
-
- ERR_FAIL_COND(!root);
- ERR_FAIL_COND(!root->is_inside_tree());
- ERR_FAIL_COND(animation.is_null());
-
- for (int i = 0; i < animation->get_track_count(); i++) {
- NodePath np = animation->track_get_path(i);
-
- Node *node = root->get_node(np);
- if (!node) {
- path_cache.push_back(Path());
- ERR_CONTINUE_MSG(!node, "Invalid track path in animation '" + np + "'.");
- }
-
- Path path;
-
- Ref<Resource> res;
-
- if (animation->track_get_type(i) == Animation::TYPE_TRANSFORM3D) {
-#ifndef _3D_DISABLED
- if (np.get_subname_count() > 1) {
- path_cache.push_back(Path());
- ERR_CONTINUE_MSG(animation->track_get_type(i) == Animation::TYPE_TRANSFORM3D, "Transform tracks can't have a subpath '" + np + "'.");
- }
-
- Node3D *sp = Object::cast_to<Node3D>(node);
-
- if (!sp) {
- path_cache.push_back(Path());
- ERR_CONTINUE_MSG(!sp, "Transform track not of type Node3D '" + np + "'.");
- }
-
- if (np.get_subname_count() == 1) {
- StringName property = np.get_subname(0);
- String ps = property;
-
- Skeleton3D *sk = Object::cast_to<Skeleton3D>(node);
- if (!sk) {
- path_cache.push_back(Path());
- ERR_CONTINUE_MSG(!sk, "Property defined in Transform track, but not a Skeleton! '" + np + "'.");
- }
-
- int idx = sk->find_bone(ps);
- if (idx == -1) {
- path_cache.push_back(Path());
- ERR_CONTINUE_MSG(idx == -1, "Property defined in Transform track, but not a Skeleton Bone! '" + np + "'.");
- }
-
- path.bone_idx = idx;
- path.skeleton = sk;
- }
-
- path.node_3d = sp;
-#endif // _3D_DISABLED
- } else {
- if (np.get_subname_count() > 0) {
- RES res2;
- Vector<StringName> leftover_subpath;
-
- // We don't want to cache the last resource unless it is a method call
- bool is_method = animation->track_get_type(i) == Animation::TYPE_METHOD;
- root->get_node_and_resource(np, res2, leftover_subpath, is_method);
-
- if (res2.is_valid()) {
- path.resource = res2;
- } else {
- path.node = node;
- }
- path.object = res2.is_valid() ? res2.ptr() : (Object *)node;
- path.subpath = leftover_subpath;
-
- } else {
- path.node = node;
- path.object = node;
- path.subpath = np.get_subnames();
- }
- }
-
- if (animation->track_get_type(i) == Animation::TYPE_VALUE) {
- if (np.get_subname_count() == 0) {
- path_cache.push_back(Path());
- ERR_CONTINUE_MSG(np.get_subname_count() == 0, "Value Track lacks property: " + np + ".");
- }
-
- } else if (animation->track_get_type(i) == Animation::TYPE_METHOD) {
- if (path.subpath.size() != 0) { // Trying to call a method of a non-resource
-
- path_cache.push_back(Path());
- ERR_CONTINUE_MSG(path.subpath.size() != 0, "Method Track has property: " + np + ".");
- }
- }
-
- path.valid = true;
-
- path_cache.push_back(path);
-
- if (!connected_nodes.has(path.node)) {
- connected_nodes.insert(path.node);
- path.node->connect("tree_exiting", callable_mp(this, &AnimationCache::_node_exit_tree), Node::make_binds(path.node), CONNECT_ONESHOT);
- }
- }
-
- cache_dirty = false;
- cache_valid = true;
-}
-
-void AnimationCache::set_track_transform(int p_idx, const Transform3D &p_transform) {
- if (cache_dirty) {
- _update_cache();
- }
-
- ERR_FAIL_COND(!cache_valid);
- ERR_FAIL_INDEX(p_idx, path_cache.size());
- Path &p = path_cache.write[p_idx];
- if (!p.valid) {
- return;
- }
-
-#ifndef _3D_DISABLED
- ERR_FAIL_COND(!p.node);
- ERR_FAIL_COND(!p.node_3d);
-
- if (p.skeleton) {
- p.skeleton->set_bone_pose(p.bone_idx, p_transform);
- } else {
- p.node_3d->set_transform(p_transform);
- }
-#endif // _3D_DISABLED
-}
-
-void AnimationCache::set_track_value(int p_idx, const Variant &p_value) {
- if (cache_dirty) {
- _update_cache();
- }
-
- ERR_FAIL_COND(!cache_valid);
- ERR_FAIL_INDEX(p_idx, path_cache.size());
- Path &p = path_cache.write[p_idx];
- if (!p.valid) {
- return;
- }
-
- ERR_FAIL_COND(!p.object);
- p.object->set_indexed(p.subpath, p_value);
-}
-
-void AnimationCache::call_track(int p_idx, const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
- if (cache_dirty) {
- _update_cache();
- }
-
- ERR_FAIL_COND(!cache_valid);
- ERR_FAIL_INDEX(p_idx, path_cache.size());
- Path &p = path_cache.write[p_idx];
- if (!p.valid) {
- return;
- }
-
- ERR_FAIL_COND(!p.object);
- p.object->call(p_method, p_args, p_argcount, r_error);
-}
-
-void AnimationCache::set_all(float p_time, float p_delta) {
- if (cache_dirty) {
- _update_cache();
- }
-
- ERR_FAIL_COND(!cache_valid);
-
- int tc = animation->get_track_count();
- for (int i = 0; i < tc; i++) {
- switch (animation->track_get_type(i)) {
- case Animation::TYPE_TRANSFORM3D: {
- Vector3 loc, scale;
- Quaternion rot;
- animation->transform_track_interpolate(i, p_time, &loc, &rot, &scale);
- Transform3D tr(Basis(rot), loc);
- tr.basis.scale(scale);
-
- set_track_transform(i, tr);
-
- } break;
- case Animation::TYPE_VALUE: {
- if (animation->value_track_get_update_mode(i) == Animation::UPDATE_CONTINUOUS || (animation->value_track_get_update_mode(i) == Animation::UPDATE_DISCRETE && p_delta == 0)) {
- Variant v = animation->value_track_interpolate(i, p_time);
- set_track_value(i, v);
- } else {
- List<int> indices;
- animation->value_track_get_key_indices(i, p_time, p_delta, &indices);
-
- for (int &E : indices) {
- Variant v = animation->track_get_key_value(i, E);
- set_track_value(i, v);
- }
- }
-
- } break;
- case Animation::TYPE_METHOD: {
- List<int> indices;
- animation->method_track_get_key_indices(i, p_time, p_delta, &indices);
-
- for (int &E : indices) {
- Vector<Variant> args = animation->method_track_get_params(i, E);
- StringName name = animation->method_track_get_name(i, E);
- Callable::CallError err;
-
- if (!args.size()) {
- call_track(i, name, nullptr, 0, err);
- } else {
- Vector<const Variant *> argptrs;
- argptrs.resize(args.size());
- for (int j = 0; j < args.size(); j++) {
- argptrs.write[j] = &args.write[j];
- }
-
- call_track(i, name, (const Variant **)&argptrs[0], args.size(), err);
- }
- }
-
- } break;
- default: {
- }
- }
- }
-}
-
-void AnimationCache::set_animation(const Ref<Animation> &p_animation) {
- _clear_cache();
-
- if (animation.is_valid()) {
- animation->disconnect("changed", callable_mp(this, &AnimationCache::_animation_changed));
- }
-
- animation = p_animation;
-
- if (animation.is_valid()) {
- animation->connect("changed", callable_mp(this, &AnimationCache::_animation_changed));
- }
-}
-
-void AnimationCache::_bind_methods() {
-}
-
-void AnimationCache::set_root(Node *p_root) {
- _clear_cache();
- root = p_root;
-}
-
-AnimationCache::AnimationCache() {
-}
diff --git a/scene/animation/animation_cache.h b/scene/animation/animation_cache.h
deleted file mode 100644
index c856e644f7..0000000000
--- a/scene/animation/animation_cache.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************/
-/* animation_cache.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (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 ANIMATION_CACHE_H
-#define ANIMATION_CACHE_H
-
-#include "scene/3d/skeleton_3d.h"
-#include "scene/resources/animation.h"
-
-class AnimationCache : public Object {
- GDCLASS(AnimationCache, Object);
-
- struct Path {
- RES resource;
- Object *object = nullptr;
-#ifndef _3D_DISABLED
- Skeleton3D *skeleton = nullptr;
- Node3D *node_3d = nullptr;
-#endif // _3D_DISABLED
- Node *node = nullptr;
-
- int bone_idx = -1;
- Vector<StringName> subpath;
- bool valid = false;
- };
-
- Set<Node *> connected_nodes;
- Vector<Path> path_cache;
-
- Node *root = nullptr;
- Ref<Animation> animation;
- bool cache_dirty = true;
- bool cache_valid = false;
-
- void _node_exit_tree(Node *p_node);
-
- void _clear_cache();
- void _update_cache();
- void _animation_changed();
-
-protected:
- static void _bind_methods();
-
-public:
- void set_track_transform(int p_idx, const Transform3D &p_transform);
- void set_track_value(int p_idx, const Variant &p_value);
- void call_track(int p_idx, const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error);
-
- void set_all(float p_time, float p_delta = 0);
-
- void set_animation(const Ref<Animation> &p_animation);
- void set_root(Node *p_root);
-
- AnimationCache();
-};
-
-#endif // ANIMATION_CACHE_H
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 2c8c4ee788..1f000d5f39 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -60,7 +60,12 @@ void AnimatedValuesBackup::restore() const {
if (entry->bone_idx == -1) {
entry->object->set_indexed(entry->subpath, entry->value);
} else {
- Object::cast_to<Skeleton3D>(entry->object)->set_bone_pose(entry->bone_idx, entry->value);
+ Array arr = entry->value;
+ if (arr.size() == 3) {
+ Object::cast_to<Skeleton3D>(entry->object)->set_bone_pose_position(entry->bone_idx, arr[0]);
+ Object::cast_to<Skeleton3D>(entry->object)->set_bone_pose_rotation(entry->bone_idx, arr[1]);
+ Object::cast_to<Skeleton3D>(entry->object)->set_bone_pose_scale(entry->bone_idx, arr[0]);
+ }
}
}
}
@@ -242,6 +247,8 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim, Node *p_root_ov
p_anim->node_cache.resize(a->get_track_count());
+ setup_pass++;
+
for (int i = 0; i < a->get_track_count(); i++) {
p_anim->node_cache.write[i] = nullptr;
RES resource;
@@ -250,6 +257,7 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim, Node *p_root_ov
ERR_CONTINUE_MSG(!child, "On Animation: '" + p_anim->name + "', couldn't resolve track: '" + String(a->track_get_path(i)) + "'."); // couldn't find the child node
ObjectID id = resource.is_valid() ? resource->get_instance_id() : child->get_instance_id();
int bone_idx = -1;
+ int blend_shape_idx = -1;
#ifndef _3D_DISABLED
if (a->track_get_path(i).get_subname_count() == 1 && Object::cast_to<Skeleton3D>(child)) {
@@ -259,6 +267,22 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim, Node *p_root_ov
continue;
}
}
+
+ if (a->track_get_type(i) == Animation::TYPE_BLEND_SHAPE) {
+ MeshInstance3D *mi_3d = Object::cast_to<MeshInstance3D>(child);
+ if (!mi_3d) {
+ continue;
+ }
+ if (a->track_get_path(i).get_subname_count() != 1) {
+ continue;
+ }
+
+ blend_shape_idx = mi_3d->find_blend_shape_by_name(a->track_get_path(i).get_subname(0));
+ if (blend_shape_idx == -1) {
+ continue;
+ }
+ }
+
#endif // _3D_DISABLED
{
@@ -270,51 +294,81 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim, Node *p_root_ov
TrackNodeCacheKey key;
key.id = id;
key.bone_idx = bone_idx;
+ key.blend_shape_idx = blend_shape_idx;
if (!node_cache_map.has(key)) {
node_cache_map[key] = TrackNodeCache();
}
- p_anim->node_cache.write[i] = &node_cache_map[key];
- p_anim->node_cache[i]->path = a->track_get_path(i);
- p_anim->node_cache[i]->node = child;
- p_anim->node_cache[i]->resource = resource;
- p_anim->node_cache[i]->node_2d = Object::cast_to<Node2D>(child);
+ TrackNodeCache *node_cache = &node_cache_map[key];
+ p_anim->node_cache.write[i] = node_cache;
+
+ node_cache->path = a->track_get_path(i);
+ node_cache->node = child;
+ node_cache->resource = resource;
+ node_cache->node_2d = Object::cast_to<Node2D>(child);
#ifndef _3D_DISABLED
- if (a->track_get_type(i) == Animation::TYPE_TRANSFORM3D) {
+ if (a->track_get_type(i) == Animation::TYPE_POSITION_3D || a->track_get_type(i) == Animation::TYPE_ROTATION_3D || a->track_get_type(i) == Animation::TYPE_SCALE_3D) {
// special cases and caches for transform tracks
+ if (node_cache->last_setup_pass != setup_pass) {
+ node_cache->loc_used = false;
+ node_cache->rot_used = false;
+ node_cache->scale_used = false;
+ }
+
// cache node_3d
- p_anim->node_cache[i]->node_3d = Object::cast_to<Node3D>(child);
+ node_cache->node_3d = Object::cast_to<Node3D>(child);
// cache skeleton
- p_anim->node_cache[i]->skeleton = Object::cast_to<Skeleton3D>(child);
- if (p_anim->node_cache[i]->skeleton) {
+ node_cache->skeleton = Object::cast_to<Skeleton3D>(child);
+ if (node_cache->skeleton) {
if (a->track_get_path(i).get_subname_count() == 1) {
StringName bone_name = a->track_get_path(i).get_subname(0);
- p_anim->node_cache[i]->bone_idx = p_anim->node_cache[i]->skeleton->find_bone(bone_name);
- if (p_anim->node_cache[i]->bone_idx < 0) {
+ node_cache->bone_idx = node_cache->skeleton->find_bone(bone_name);
+ if (node_cache->bone_idx < 0) {
// broken track (nonexistent bone)
- p_anim->node_cache[i]->skeleton = nullptr;
- p_anim->node_cache[i]->node_3d = nullptr;
- ERR_CONTINUE(p_anim->node_cache[i]->bone_idx < 0);
+ node_cache->skeleton = nullptr;
+ node_cache->node_3d = nullptr;
+ ERR_CONTINUE(node_cache->bone_idx < 0);
}
} else {
// no property, just use spatialnode
- p_anim->node_cache[i]->skeleton = nullptr;
+ node_cache->skeleton = nullptr;
+ }
+ }
+
+ switch (a->track_get_type(i)) {
+ case Animation::TYPE_POSITION_3D: {
+ node_cache->loc_used = true;
+ } break;
+ case Animation::TYPE_ROTATION_3D: {
+ node_cache->rot_used = true;
+ } break;
+ case Animation::TYPE_SCALE_3D: {
+ node_cache->scale_used = true;
+ } break;
+ default: {
}
}
}
+
+ if (a->track_get_type(i) == Animation::TYPE_BLEND_SHAPE) {
+ // special cases and caches for transform tracks
+ node_cache->node_blend_shape = Object::cast_to<MeshInstance3D>(child);
+ node_cache->blend_shape_idx = blend_shape_idx;
+ }
+
#endif // _3D_DISABLED
if (a->track_get_type(i) == Animation::TYPE_VALUE) {
- if (!p_anim->node_cache[i]->property_anim.has(a->track_get_path(i).get_concatenated_subnames())) {
+ if (!node_cache->property_anim.has(a->track_get_path(i).get_concatenated_subnames())) {
TrackNodeCache::PropertyAnim pa;
pa.subpath = leftover_path;
pa.object = resource.is_valid() ? (Object *)resource.ptr() : (Object *)child;
pa.special = SP_NONE;
pa.owner = p_anim->node_cache[i];
- if (false && p_anim->node_cache[i]->node_2d) {
+ if (false && node_cache->node_2d) {
if (leftover_path.size() == 1 && leftover_path[0] == SceneStringNames::get_singleton()->transform_pos) {
pa.special = SP_NODE2D_POS;
} else if (leftover_path.size() == 1 && leftover_path[0] == SceneStringNames::get_singleton()->transform_rot) {
@@ -323,20 +377,22 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim, Node *p_root_ov
pa.special = SP_NODE2D_SCALE;
}
}
- p_anim->node_cache[i]->property_anim[a->track_get_path(i).get_concatenated_subnames()] = pa;
+ node_cache->property_anim[a->track_get_path(i).get_concatenated_subnames()] = pa;
}
}
if (a->track_get_type(i) == Animation::TYPE_BEZIER && leftover_path.size()) {
- if (!p_anim->node_cache[i]->bezier_anim.has(a->track_get_path(i).get_concatenated_subnames())) {
+ if (!node_cache->bezier_anim.has(a->track_get_path(i).get_concatenated_subnames())) {
TrackNodeCache::BezierAnim ba;
ba.bezier_property = leftover_path;
ba.object = resource.is_valid() ? (Object *)resource.ptr() : (Object *)child;
ba.owner = p_anim->node_cache[i];
- p_anim->node_cache[i]->bezier_anim[a->track_get_path(i).get_concatenated_subnames()] = ba;
+ node_cache->bezier_anim[a->track_get_path(i).get_concatenated_subnames()] = ba;
}
}
+
+ node_cache->last_setup_pass = setup_pass;
}
}
@@ -369,17 +425,15 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double
}
switch (a->track_get_type(i)) {
- case Animation::TYPE_TRANSFORM3D: {
+ case Animation::TYPE_POSITION_3D: {
#ifndef _3D_DISABLED
if (!nc->node_3d) {
continue;
}
Vector3 loc;
- Quaternion rot;
- Vector3 scale;
- Error err = a->transform_track_interpolate(i, p_time, &loc, &rot, &scale);
+ Error err = a->position_track_interpolate(i, p_time, &loc);
//ERR_CONTINUE(err!=OK); //used for testing, should be removed
if (err != OK) {
@@ -391,16 +445,92 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, double
cache_update[cache_update_size++] = nc;
nc->accum_pass = accum_pass;
nc->loc_accum = loc;
- nc->rot_accum = rot;
- nc->scale_accum = scale;
-
+ nc->rot_accum = Quaternion();
+ nc->scale_accum = Vector3();
} else {
nc->loc_accum = nc->loc_accum.lerp(loc, p_interp);
+ }
+#endif // _3D_DISABLED
+ } break;
+ case Animation::TYPE_ROTATION_3D: {
+#ifndef _3D_DISABLED
+ if (!nc->node_3d) {
+ continue;
+ }
+
+ Quaternion rot;
+
+ Error err = a->rotation_track_interpolate(i, p_time, &rot);
+ //ERR_CONTINUE(err!=OK); //used for testing, should be removed
+
+ if (err != OK) {
+ continue;
+ }
+
+ if (nc->accum_pass != accum_pass) {
+ ERR_CONTINUE(cache_update_size >= NODE_CACHE_UPDATE_MAX);
+ cache_update[cache_update_size++] = nc;
+ nc->accum_pass = accum_pass;
+ nc->loc_accum = Vector3();
+ nc->rot_accum = rot;
+ nc->scale_accum = Vector3();
+ } else {
nc->rot_accum = nc->rot_accum.slerp(rot, p_interp);
+ }
+#endif // _3D_DISABLED
+ } break;
+ case Animation::TYPE_SCALE_3D: {
+#ifndef _3D_DISABLED
+ if (!nc->node_3d) {
+ continue;
+ }
+
+ Vector3 scale;
+
+ Error err = a->scale_track_interpolate(i, p_time, &scale);
+ //ERR_CONTINUE(err!=OK); //used for testing, should be removed
+
+ if (err != OK) {
+ continue;
+ }
+
+ if (nc->accum_pass != accum_pass) {
+ ERR_CONTINUE(cache_update_size >= NODE_CACHE_UPDATE_MAX);
+ cache_update[cache_update_size++] = nc;
+ nc->accum_pass = accum_pass;
+ nc->loc_accum = Vector3();
+ nc->rot_accum = Quaternion();
+ nc->scale_accum = scale;
+ } else {
nc->scale_accum = nc->scale_accum.lerp(scale, p_interp);
}
#endif // _3D_DISABLED
} break;
+ case Animation::TYPE_BLEND_SHAPE: {
+#ifndef _3D_DISABLED
+ if (!nc->node_blend_shape) {
+ continue;
+ }
+
+ float blend;
+
+ Error err = a->blend_shape_track_interpolate(i, p_time, &blend);
+ //ERR_CONTINUE(err!=OK); //used for testing, should be removed
+
+ if (err != OK) {
+ continue;
+ }
+
+ if (nc->accum_pass != accum_pass) {
+ ERR_CONTINUE(cache_update_size >= NODE_CACHE_UPDATE_MAX);
+ nc->accum_pass = accum_pass;
+ cache_update[cache_update_size++] = nc;
+ nc->blend_shape_accum = blend;
+ } else {
+ nc->blend_shape_accum = Math::lerp(nc->blend_shape_accum, blend, p_interp);
+ }
+#endif // _3D_DISABLED
+ } break;
case Animation::TYPE_VALUE: {
if (!nc->node) {
continue;
@@ -855,15 +985,32 @@ void AnimationPlayer::_animation_update_transforms() {
TrackNodeCache *nc = cache_update[i];
ERR_CONTINUE(nc->accum_pass != accum_pass);
-
- t.origin = nc->loc_accum;
- t.basis.set_quaternion_scale(nc->rot_accum, nc->scale_accum);
#ifndef _3D_DISABLED
if (nc->skeleton && nc->bone_idx >= 0) {
- nc->skeleton->set_bone_pose(nc->bone_idx, t);
+ if (nc->loc_used) {
+ nc->skeleton->set_bone_pose_position(nc->bone_idx, nc->loc_accum);
+ }
+ if (nc->rot_used) {
+ nc->skeleton->set_bone_pose_rotation(nc->bone_idx, nc->rot_accum);
+ }
+ if (nc->scale_used) {
+ nc->skeleton->set_bone_pose_scale(nc->bone_idx, nc->scale_accum);
+ }
+
+ } else if (nc->node_blend_shape) {
+ nc->node_blend_shape->set_blend_shape_value(nc->blend_shape_idx, nc->blend_shape_accum);
} else if (nc->node_3d) {
- nc->node_3d->set_transform(t);
+ if (nc->loc_used) {
+ nc->node_3d->set_position(nc->loc_accum);
+ }
+ if (nc->rot_used) {
+ nc->node_3d->set_rotation(nc->rot_accum.get_euler());
+ }
+ if (nc->scale_used) {
+ nc->node_3d->set_scale(nc->scale_accum);
+ }
}
+
#endif // _3D_DISABLED
}
}
@@ -1527,7 +1674,12 @@ Ref<AnimatedValuesBackup> AnimationPlayer::backup_animated_values(Node *p_root_o
AnimatedValuesBackup::Entry entry;
entry.object = nc->skeleton;
entry.bone_idx = nc->bone_idx;
- entry.value = nc->skeleton->get_bone_pose(nc->bone_idx);
+ Array arr;
+ arr.resize(3);
+ arr[0] = nc->skeleton->get_bone_pose_position(nc->bone_idx);
+ arr[1] = nc->skeleton->get_bone_pose_rotation(nc->bone_idx);
+ arr[2] = nc->skeleton->get_bone_pose_scale(nc->bone_idx);
+ entry.value = nc;
backup->entries.push_back(entry);
} else {
if (nc->node_3d) {
diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h
index b693e29bdf..d9d88b5510 100644
--- a/scene/animation/animation_player.h
+++ b/scene/animation/animation_player.h
@@ -32,6 +32,7 @@
#define ANIMATION_PLAYER_H
#include "scene/2d/node_2d.h"
+#include "scene/3d/mesh_instance_3d.h"
#include "scene/3d/node_3d.h"
#include "scene/3d/skeleton_3d.h"
#include "scene/resources/animation.h"
@@ -88,6 +89,8 @@ private:
SP_NODE2D_SCALE,
};
+ uint32_t setup_pass = 1;
+
struct TrackNodeCache {
NodePath path;
uint32_t id = 0;
@@ -97,13 +100,20 @@ private:
#ifndef _3D_DISABLED
Node3D *node_3d = nullptr;
Skeleton3D *skeleton = nullptr;
+ MeshInstance3D *node_blend_shape = nullptr;
+ int blend_shape_idx = -1;
#endif // _3D_DISABLED
int bone_idx = -1;
// accumulated transforms
+ bool loc_used = false;
+ bool rot_used = false;
+ bool scale_used = false;
+
Vector3 loc_accum;
Quaternion rot_accum;
Vector3 scale_accum;
+ float blend_shape_accum = 0;
uint64_t accum_pass = 0;
bool audio_playing = false;
@@ -134,16 +144,22 @@ private:
Map<StringName, BezierAnim> bezier_anim;
+ uint32_t last_setup_pass = 0;
TrackNodeCache() {}
};
struct TrackNodeCacheKey {
ObjectID id;
int bone_idx = -1;
+ int blend_shape_idx = -1;
inline bool operator<(const TrackNodeCacheKey &p_right) const {
if (id == p_right.id) {
- return bone_idx < p_right.bone_idx;
+ if (blend_shape_idx == p_right.blend_shape_idx) {
+ return bone_idx < p_right.bone_idx;
+ } else {
+ return blend_shape_idx < p_right.blend_shape_idx;
+ }
} else {
return id < p_right.id;
}
@@ -285,7 +301,6 @@ public:
void set_current_animation(const String &p_anim);
String get_assigned_animation() const;
void set_assigned_animation(const String &p_anim);
- void stop_all();
void set_active(bool p_active);
bool is_active() const;
bool is_valid() const;
diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp
index 9ca8d478b1..ccb5fa9472 100644
--- a/scene/animation/animation_tree.cpp
+++ b/scene/animation/animation_tree.cpp
@@ -544,13 +544,18 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
NodePath path = anim->track_get_path(i);
Animation::TrackType track_type = anim->track_get_type(i);
+ Animation::TrackType track_cache_type = track_type;
+ if (track_cache_type == Animation::TYPE_POSITION_3D || track_cache_type == Animation::TYPE_ROTATION_3D || track_cache_type == Animation::TYPE_SCALE_3D) {
+ track_cache_type = Animation::TYPE_POSITION_3D; //reference them as position3D tracks, even if they modify rotation or scale
+ }
+
TrackCache *track = nullptr;
if (track_cache.has(path)) {
track = track_cache.get(path);
}
//if not valid, delete track
- if (track && (track->type != track_type || ObjectDB::get_instance(track->object_id) == nullptr)) {
+ if (track && (track->type != track_cache_type || ObjectDB::get_instance(track->object_id) == nullptr)) {
playing_caches.erase(track);
memdelete(track);
track_cache.erase(path);
@@ -587,7 +592,9 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
track = track_value;
} break;
- case Animation::TYPE_TRANSFORM3D: {
+ case Animation::TYPE_POSITION_3D:
+ case Animation::TYPE_ROTATION_3D:
+ case Animation::TYPE_SCALE_3D: {
#ifndef _3D_DISABLED
Node3D *node_3d = Object::cast_to<Node3D>(child);
@@ -597,6 +604,7 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
}
TrackCacheTransform *track_xform = memnew(TrackCacheTransform);
+ track_xform->type = Animation::TYPE_POSITION_3D;
track_xform->node_3d = node_3d;
track_xform->skeleton = nullptr;
@@ -615,8 +623,54 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
track_xform->object_id = track_xform->object->get_instance_id();
track = track_xform;
+
+ switch (track_type) {
+ case Animation::TYPE_POSITION_3D: {
+ track_xform->loc_used = true;
+ } break;
+ case Animation::TYPE_ROTATION_3D: {
+ track_xform->rot_used = true;
+ } break;
+ case Animation::TYPE_SCALE_3D: {
+ track_xform->scale_used = true;
+ } break;
+ default: {
+ }
+ }
+
#endif // _3D_DISABLED
} break;
+ case Animation::TYPE_BLEND_SHAPE: {
+#ifndef _3D_DISABLED
+
+ if (path.get_subname_count() != 1) {
+ ERR_PRINT("AnimationTree: '" + String(E) + "', blend shape track does not contain a blend shape subname: '" + String(path) + "'");
+ continue;
+ }
+ MeshInstance3D *mesh_3d = Object::cast_to<MeshInstance3D>(child);
+
+ if (!mesh_3d) {
+ ERR_PRINT("AnimationTree: '" + String(E) + "', blend shape track does not point to MeshInstance3D: '" + String(path) + "'");
+ continue;
+ }
+
+ StringName blend_shape_name = path.get_subname(0);
+ int blend_shape_idx = mesh_3d->find_blend_shape_by_name(blend_shape_name);
+ if (blend_shape_idx == -1) {
+ ERR_PRINT("AnimationTree: '" + String(E) + "', blend shape track points to a non-existing name: '" + String(blend_shape_name) + "'");
+ continue;
+ }
+
+ TrackCacheBlendShape *track_bshape = memnew(TrackCacheBlendShape);
+
+ track_bshape->mesh_3d = mesh_3d;
+ track_bshape->shape_index = blend_shape_idx;
+
+ track_bshape->object = mesh_3d;
+ track_bshape->object_id = mesh_3d->get_instance_id();
+ track = track_bshape;
+#endif
+ } break;
case Animation::TYPE_METHOD: {
TrackCacheMethod *track_method = memnew(TrackCacheMethod);
@@ -670,6 +724,26 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
}
track_cache[path] = track;
+ } else if (track_cache_type == Animation::TYPE_POSITION_3D) {
+ TrackCacheTransform *track_xform = static_cast<TrackCacheTransform *>(track);
+ if (track->setup_pass != setup_pass) {
+ track_xform->loc_used = false;
+ track_xform->rot_used = false;
+ track_xform->scale_used = false;
+ }
+ switch (track_type) {
+ case Animation::TYPE_POSITION_3D: {
+ track_xform->loc_used = true;
+ } break;
+ case Animation::TYPE_ROTATION_3D: {
+ track_xform->rot_used = true;
+ } break;
+ case Animation::TYPE_SCALE_3D: {
+ track_xform->scale_used = true;
+ } break;
+ default: {
+ }
+ }
}
track->setup_pass = setup_pass;
@@ -831,8 +905,11 @@ void AnimationTree::_process_graph(real_t p_delta) {
ERR_CONTINUE(!track_cache.has(path));
TrackCache *track = track_cache[path];
- if (track->type != a->track_get_type(i)) {
- continue; //may happen should not
+
+ Animation::TrackType ttype = a->track_get_type(i);
+ if (ttype != Animation::TYPE_POSITION_3D && ttype != Animation::TYPE_ROTATION_3D && ttype != Animation::TYPE_SCALE_3D && track->type != ttype) {
+ //broken animation, but avoid error spamming
+ continue;
}
track->root_motion = root_motion_track == path;
@@ -848,20 +925,81 @@ void AnimationTree::_process_graph(real_t p_delta) {
continue; //nothing to blend
}
- switch (track->type) {
- case Animation::TYPE_TRANSFORM3D: {
+ switch (ttype) {
+ case Animation::TYPE_POSITION_3D: {
#ifndef _3D_DISABLED
TrackCacheTransform *t = static_cast<TrackCacheTransform *>(track);
+ if (t->process_pass != process_pass) {
+ t->process_pass = process_pass;
+ t->loc = Vector3();
+ t->rot = Quaternion();
+ t->rot_blend_accum = 0;
+ t->scale = Vector3(1, 1, 1);
+ }
+
if (track->root_motion) {
- if (t->process_pass != process_pass) {
- t->process_pass = process_pass;
- t->loc = Vector3();
- t->rot = Quaternion();
- t->rot_blend_accum = 0;
- t->scale = Vector3(1, 1, 1);
+ real_t prev_time = time - delta;
+ if (prev_time < 0) {
+ if (!a->has_loop()) {
+ prev_time = 0;
+ } else {
+ prev_time = a->get_length() + prev_time;
+ }
+ }
+
+ Vector3 loc[2];
+
+ if (prev_time > time) {
+ Error err = a->position_track_interpolate(i, prev_time, &loc[0]);
+ if (err != OK) {
+ continue;
+ }
+
+ a->position_track_interpolate(i, a->get_length(), &loc[1]);
+
+ t->loc += (loc[1] - loc[0]) * blend;
+ prev_time = 0;
}
+ Error err = a->position_track_interpolate(i, prev_time, &loc[0]);
+ if (err != OK) {
+ continue;
+ }
+
+ a->position_track_interpolate(i, time, &loc[1]);
+
+ t->loc += (loc[1] - loc[0]) * blend;
+
+ prev_time = 0;
+
+ } else {
+ Vector3 loc;
+
+ Error err = a->position_track_interpolate(i, time, &loc);
+ //ERR_CONTINUE(err!=OK); //used for testing, should be removed
+
+ if (err != OK) {
+ continue;
+ }
+
+ t->loc = t->loc.lerp(loc, blend);
+ }
+#endif // _3D_DISABLED
+ } break;
+ case Animation::TYPE_ROTATION_3D: {
+#ifndef _3D_DISABLED
+ TrackCacheTransform *t = static_cast<TrackCacheTransform *>(track);
+
+ if (t->process_pass != process_pass) {
+ t->process_pass = process_pass;
+ t->loc = Vector3();
+ t->rot = Quaternion();
+ t->rot_blend_accum = 0;
+ t->scale = Vector3(1, 1, 1);
+ }
+
+ if (track->root_motion) {
real_t prev_time = time - delta;
if (prev_time < 0) {
if (!a->has_loop()) {
@@ -871,61 +1009,44 @@ void AnimationTree::_process_graph(real_t p_delta) {
}
}
- Vector3 loc[2];
Quaternion rot[2];
- Vector3 scale[2];
if (prev_time > time) {
- Error err = a->transform_track_interpolate(i, prev_time, &loc[0], &rot[0], &scale[0]);
+ Error err = a->rotation_track_interpolate(i, prev_time, &rot[0]);
if (err != OK) {
continue;
}
- a->transform_track_interpolate(i, a->get_length(), &loc[1], &rot[1], &scale[1]);
+ a->rotation_track_interpolate(i, a->get_length(), &rot[1]);
- t->loc += (loc[1] - loc[0]) * blend;
- t->scale += (scale[1] - scale[0]) * blend;
Quaternion q = Quaternion().slerp(rot[0].normalized().inverse() * rot[1].normalized(), blend).normalized();
t->rot = (t->rot * q).normalized();
prev_time = 0;
}
- Error err = a->transform_track_interpolate(i, prev_time, &loc[0], &rot[0], &scale[0]);
+ Error err = a->rotation_track_interpolate(i, prev_time, &rot[0]);
if (err != OK) {
continue;
}
- a->transform_track_interpolate(i, time, &loc[1], &rot[1], &scale[1]);
+ a->rotation_track_interpolate(i, time, &rot[1]);
- t->loc += (loc[1] - loc[0]) * blend;
- t->scale += (scale[1] - scale[0]) * blend;
Quaternion q = Quaternion().slerp(rot[0].normalized().inverse() * rot[1].normalized(), blend).normalized();
t->rot = (t->rot * q).normalized();
prev_time = 0;
} else {
- Vector3 loc;
Quaternion rot;
- Vector3 scale;
- Error err = a->transform_track_interpolate(i, time, &loc, &rot, &scale);
+ Error err = a->rotation_track_interpolate(i, time, &rot);
//ERR_CONTINUE(err!=OK); //used for testing, should be removed
- if (t->process_pass != process_pass) {
- t->process_pass = process_pass;
- t->loc = loc;
- t->rot = rot;
- t->rot_blend_accum = 0;
- t->scale = scale;
- }
-
if (err != OK) {
continue;
}
- t->loc = t->loc.lerp(loc, blend);
if (t->rot_blend_accum == 0) {
t->rot = rot;
t->rot_blend_accum = blend;
@@ -934,10 +1055,93 @@ void AnimationTree::_process_graph(real_t p_delta) {
t->rot = rot.slerp(t->rot, t->rot_blend_accum / rot_total).normalized();
t->rot_blend_accum = rot_total;
}
+ }
+#endif // _3D_DISABLED
+ } break;
+ case Animation::TYPE_SCALE_3D: {
+#ifndef _3D_DISABLED
+ TrackCacheTransform *t = static_cast<TrackCacheTransform *>(track);
+
+ if (t->process_pass != process_pass) {
+ t->process_pass = process_pass;
+ t->loc = Vector3();
+ t->rot = Quaternion();
+ t->rot_blend_accum = 0;
+ t->scale = Vector3(1, 1, 1);
+ }
+
+ if (track->root_motion) {
+ real_t prev_time = time - delta;
+ if (prev_time < 0) {
+ if (!a->has_loop()) {
+ prev_time = 0;
+ } else {
+ prev_time = a->get_length() + prev_time;
+ }
+ }
+
+ Vector3 scale[2];
+
+ if (prev_time > time) {
+ Error err = a->scale_track_interpolate(i, prev_time, &scale[0]);
+ if (err != OK) {
+ continue;
+ }
+
+ a->scale_track_interpolate(i, a->get_length(), &scale[1]);
+
+ t->scale += (scale[1] - scale[0]) * blend;
+
+ prev_time = 0;
+ }
+
+ Error err = a->scale_track_interpolate(i, prev_time, &scale[0]);
+ if (err != OK) {
+ continue;
+ }
+
+ a->scale_track_interpolate(i, time, &scale[1]);
+
+ t->scale += (scale[1] - scale[0]) * blend;
+
+ prev_time = 0;
+
+ } else {
+ Vector3 scale;
+
+ Error err = a->scale_track_interpolate(i, time, &scale);
+ //ERR_CONTINUE(err!=OK); //used for testing, should be removed
+
+ if (err != OK) {
+ continue;
+ }
+
t->scale = t->scale.lerp(scale, blend);
}
#endif // _3D_DISABLED
} break;
+ case Animation::TYPE_BLEND_SHAPE: {
+#ifndef _3D_DISABLED
+ TrackCacheBlendShape *t = static_cast<TrackCacheBlendShape *>(track);
+
+ if (t->process_pass != process_pass) {
+ t->process_pass = process_pass;
+ t->value = 0;
+ }
+
+ float value;
+
+ Error err = a->blend_shape_track_interpolate(i, time, &value);
+ //ERR_CONTINUE(err!=OK); //used for testing, should be removed
+
+ if (err != OK) {
+ continue;
+ }
+
+ t->value = Math::lerp(t->value, value, blend);
+
+#endif // _3D_DISABLED
+ } break;
case Animation::TYPE_VALUE: {
TrackCacheValue *t = static_cast<TrackCacheValue *>(track);
@@ -1198,26 +1402,47 @@ void AnimationTree::_process_graph(real_t p_delta) {
}
switch (track->type) {
- case Animation::TYPE_TRANSFORM3D: {
+ case Animation::TYPE_POSITION_3D: {
#ifndef _3D_DISABLED
TrackCacheTransform *t = static_cast<TrackCacheTransform *>(track);
- Transform3D xform;
- xform.origin = t->loc;
-
- xform.basis.set_quaternion_scale(t->rot, t->scale);
-
if (t->root_motion) {
+ Transform3D xform;
+ xform.origin = t->loc;
+ xform.basis.set_quaternion_scale(t->rot, t->scale);
+
root_motion_transform = xform;
- if (t->skeleton && t->bone_idx >= 0) {
- root_motion_transform = (t->skeleton->get_bone_rest(t->bone_idx) * root_motion_transform) * t->skeleton->get_bone_rest(t->bone_idx).affine_inverse();
- }
} else if (t->skeleton && t->bone_idx >= 0) {
- t->skeleton->set_bone_pose(t->bone_idx, xform);
+ if (t->loc_used) {
+ t->skeleton->set_bone_pose_position(t->bone_idx, t->loc);
+ }
+ if (t->rot_used) {
+ t->skeleton->set_bone_pose_rotation(t->bone_idx, t->rot);
+ }
+ if (t->scale_used) {
+ t->skeleton->set_bone_pose_scale(t->bone_idx, t->scale);
+ }
} else if (!t->skeleton) {
- t->node_3d->set_transform(xform);
+ if (t->loc_used) {
+ t->node_3d->set_position(t->loc);
+ }
+ if (t->rot_used) {
+ t->node_3d->set_rotation(t->rot.get_euler());
+ }
+ if (t->scale_used) {
+ t->node_3d->set_scale(t->scale);
+ }
+ }
+#endif // _3D_DISABLED
+ } break;
+ case Animation::TYPE_BLEND_SHAPE: {
+#ifndef _3D_DISABLED
+ TrackCacheBlendShape *t = static_cast<TrackCacheBlendShape *>(track);
+
+ if (t->mesh_3d) {
+ t->mesh_3d->set_blend_shape_value(t->shape_index, t->value);
}
#endif // _3D_DISABLED
} break;
diff --git a/scene/animation/animation_tree.h b/scene/animation/animation_tree.h
index 1e0267682e..5abea39d20 100644
--- a/scene/animation/animation_tree.h
+++ b/scene/animation/animation_tree.h
@@ -57,8 +57,6 @@ public:
Vector<Input> inputs;
- real_t process_input(int p_input, real_t p_time, bool p_seek, real_t p_blend);
-
friend class AnimationTree;
struct AnimationState {
@@ -85,7 +83,6 @@ public:
State *state = nullptr;
real_t _pre_process(const StringName &p_base_path, AnimationNode *p_parent, State *p_state, real_t p_time, bool p_seek, const Vector<StringName> &p_connections);
- void _pre_update_animations(HashMap<NodePath, int> *track_map);
//all this is temporary
StringName base_path;
@@ -110,8 +107,6 @@ protected:
void _validate_property(PropertyInfo &property) const override;
- void _set_parent(Object *p_parent);
-
GDVIRTUAL0RC(Dictionary, _get_child_nodes)
GDVIRTUAL0RC(Array, _get_parameter_list)
GDVIRTUAL1RC(Ref<AnimationNode>, _get_child_by_name, StringName)
@@ -197,16 +192,26 @@ private:
Skeleton3D *skeleton = nullptr;
#endif // _3D_DISABLED
int bone_idx = -1;
+ bool loc_used = false;
+ bool rot_used = false;
+ bool scale_used = false;
Vector3 loc;
Quaternion rot;
real_t rot_blend_accum = 0.0;
Vector3 scale;
TrackCacheTransform() {
- type = Animation::TYPE_TRANSFORM3D;
+ type = Animation::TYPE_POSITION_3D;
}
};
+ struct TrackCacheBlendShape : public TrackCache {
+ MeshInstance3D *mesh_3d = nullptr;
+ float value = 0;
+ int shape_index = -1;
+ TrackCacheBlendShape() { type = Animation::TYPE_BLEND_SHAPE; }
+ };
+
struct TrackCacheValue : public TrackCache {
Variant value;
Vector<StringName> subpath;
@@ -255,7 +260,6 @@ private:
AnimationNode::State state;
bool cache_valid = false;
void _node_removed(Node *p_node);
- void _caches_cleared();
void _clear_caches();
bool _update_caches(AnimationPlayer *player);
diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp
index da54903871..c1db684d9b 100644
--- a/scene/gui/code_edit.cpp
+++ b/scene/gui/code_edit.cpp
@@ -1146,7 +1146,7 @@ bool CodeEdit::is_drawing_executing_lines_gutter() const {
}
void CodeEdit::_main_gutter_draw_callback(int p_line, int p_gutter, const Rect2 &p_region) {
- if (draw_breakpoints) {
+ if (draw_breakpoints && breakpoint_icon.is_valid()) {
bool hovering = p_region.has_point(get_local_mouse_pos());
bool breakpointed = is_line_breakpointed(p_line);
@@ -1162,7 +1162,7 @@ void CodeEdit::_main_gutter_draw_callback(int p_line, int p_gutter, const Rect2
}
}
- if (draw_bookmarks && is_line_bookmarked(p_line)) {
+ if (draw_bookmarks && is_line_bookmarked(p_line) && bookmark_icon.is_valid()) {
int horizontal_padding = p_region.size.x / 2;
int vertical_padding = p_region.size.y / 4;
@@ -1172,7 +1172,7 @@ void CodeEdit::_main_gutter_draw_callback(int p_line, int p_gutter, const Rect2
bookmark_icon->draw_rect(get_canvas_item(), bookmark_region, false, bookmark_color);
}
- if (draw_executing_lines && is_line_executing(p_line)) {
+ if (draw_executing_lines && is_line_executing(p_line) && executing_line_icon.is_valid()) {
int horizontal_padding = p_region.size.x / 10;
int vertical_padding = p_region.size.y / 4;
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 38da40a402..e4048fbf09 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -637,7 +637,9 @@ void Control::_notification(int p_notification) {
}
} else {
//is a regular root control or top_level
- data.RI = get_viewport()->_gui_add_root_control(this);
+ Viewport *viewport = get_viewport();
+ ERR_FAIL_COND(!viewport);
+ data.RI = viewport->_gui_add_root_control(this);
}
data.parent_canvas_item = get_parent_item();
@@ -646,7 +648,9 @@ void Control::_notification(int p_notification) {
data.parent_canvas_item->connect("item_rect_changed", callable_mp(this, &Control::_size_changed));
} else {
//connect viewport
- get_viewport()->connect("size_changed", callable_mp(this, &Control::_size_changed));
+ Viewport *viewport = get_viewport();
+ ERR_FAIL_COND(!viewport);
+ viewport->connect("size_changed", callable_mp(this, &Control::_size_changed));
}
} break;
case NOTIFICATION_EXIT_CANVAS: {
@@ -655,7 +659,9 @@ void Control::_notification(int p_notification) {
data.parent_canvas_item = nullptr;
} else if (!is_set_as_top_level()) {
//disconnect viewport
- get_viewport()->disconnect("size_changed", callable_mp(this, &Control::_size_changed));
+ Viewport *viewport = get_viewport();
+ ERR_FAIL_COND(!viewport);
+ viewport->disconnect("size_changed", callable_mp(this, &Control::_size_changed));
}
if (data.RI) {
@@ -740,7 +746,7 @@ bool Control::has_point(const Point2 &p_point) const {
return Rect2(Point2(), get_size()).has_point(p_point);
}
-void Control::set_drag_forwarding(Node *p_target) {
+void Control::set_drag_forwarding(Object *p_target) {
if (p_target) {
data.drag_owner = p_target->get_instance_id();
} else {
diff --git a/scene/gui/control.h b/scene/gui/control.h
index be692b6a0c..02ab336ef0 100644
--- a/scene/gui/control.h
+++ b/scene/gui/control.h
@@ -233,9 +233,6 @@ private:
static constexpr unsigned properties_managed_by_container_count = 11;
static String properties_managed_by_container[properties_managed_by_container_count];
- // used internally
- Control *_find_control_at_pos(CanvasItem *p_node, const Point2 &p_pos, const Transform2D &p_xform, Transform2D &r_inv_xform);
-
void _window_find_focus_neighbor(const Vector2 &p_dir, Node *p_at, const Point2 *p_points, real_t p_min, real_t &r_closest_dist, Control **r_closest);
Control *_get_focus_neighbor(Side p_side, int p_count = 0);
@@ -250,7 +247,6 @@ private:
void _update_minimum_size();
void _clear_size_warning();
- void _update_scroll();
void _compute_offsets(Rect2 p_rect, const real_t p_anchors[4], real_t (&r_offsets)[4]);
void _compute_anchors(Rect2 p_rect, const real_t p_offsets[4], real_t (&r_anchors)[4]);
@@ -355,7 +351,7 @@ public:
virtual Size2 get_minimum_size() const;
virtual Size2 get_combined_minimum_size() const;
virtual bool has_point(const Point2 &p_point) const;
- virtual void set_drag_forwarding(Node *p_target);
+ virtual void set_drag_forwarding(Object *p_target);
virtual Variant get_drag_data(const Point2 &p_point);
virtual bool can_drop_data(const Point2 &p_point, const Variant &p_data) const;
virtual void drop_data(const Point2 &p_point, const Variant &p_data);
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index 54e7d8f960..dda1151273 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -235,6 +235,25 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
return;
}
+ if (is_middle_mouse_paste_enabled() && b->is_pressed() && b->get_button_index() == MOUSE_BUTTON_MIDDLE && is_editable() && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ String paste_buffer = DisplayServer::get_singleton()->clipboard_get_primary().strip_escapes();
+
+ deselect();
+ set_caret_at_pixel_pos(b->get_position().x);
+ if (!paste_buffer.is_empty()) {
+ insert_text_at_caret(paste_buffer);
+
+ if (!text_changed_dirty) {
+ if (is_inside_tree()) {
+ MessageQueue::get_singleton()->push_call(this, "_text_changed");
+ }
+ text_changed_dirty = true;
+ }
+ }
+ grab_focus();
+ return;
+ }
+
if (b->get_button_index() != MOUSE_BUTTON_LEFT) {
return;
}
@@ -271,6 +290,9 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
selection.double_click = true;
last_dblclk = 0;
caret_column = selection.begin;
+ if (!pass && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ DisplayServer::get_singleton()->clipboard_set_primary(text);
+ }
} else if (b->is_double_click()) {
// Double-click select word.
last_dblclk = OS::get_singleton()->get_ticks_msec();
@@ -286,6 +308,9 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
break;
}
}
+ if (!pass && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ DisplayServer::get_singleton()->clipboard_set_primary(text.substr(selection.begin, selection.end - selection.begin));
+ }
}
}
@@ -303,6 +328,9 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
update();
} else {
+ if (selection.enabled && !pass && b->get_button_index() == MOUSE_BUTTON_LEFT && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ DisplayServer::get_singleton()->clipboard_set_primary(text.substr(selection.begin, selection.end - selection.begin));
+ }
if (!text.is_empty() && is_editable() && clear_button_enabled) {
bool press_attempt = clear_button_status.press_attempt;
clear_button_status.press_attempt = false;
@@ -1890,6 +1918,14 @@ bool LineEdit::is_virtual_keyboard_enabled() const {
return virtual_keyboard_enabled;
}
+void LineEdit::set_middle_mouse_paste_enabled(bool p_enabled) {
+ middle_mouse_paste_enabled = p_enabled;
+}
+
+bool LineEdit::is_middle_mouse_paste_enabled() const {
+ return middle_mouse_paste_enabled;
+}
+
void LineEdit::set_selecting_enabled(bool p_enabled) {
selecting_enabled = p_enabled;
@@ -2156,6 +2192,8 @@ void LineEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_clear_button_enabled"), &LineEdit::is_clear_button_enabled);
ClassDB::bind_method(D_METHOD("set_shortcut_keys_enabled", "enable"), &LineEdit::set_shortcut_keys_enabled);
ClassDB::bind_method(D_METHOD("is_shortcut_keys_enabled"), &LineEdit::is_shortcut_keys_enabled);
+ ClassDB::bind_method(D_METHOD("set_middle_mouse_paste_enabled", "enable"), &LineEdit::set_middle_mouse_paste_enabled);
+ ClassDB::bind_method(D_METHOD("is_middle_mouse_paste_enabled"), &LineEdit::is_middle_mouse_paste_enabled);
ClassDB::bind_method(D_METHOD("set_selecting_enabled", "enable"), &LineEdit::set_selecting_enabled);
ClassDB::bind_method(D_METHOD("is_selecting_enabled"), &LineEdit::is_selecting_enabled);
ClassDB::bind_method(D_METHOD("set_right_icon", "icon"), &LineEdit::set_right_icon);
@@ -2211,6 +2249,7 @@ void LineEdit::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "virtual_keyboard_enabled"), "set_virtual_keyboard_enabled", "is_virtual_keyboard_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clear_button_enabled"), "set_clear_button_enabled", "is_clear_button_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shortcut_keys_enabled"), "set_shortcut_keys_enabled", "is_shortcut_keys_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "middle_mouse_paste_enabled"), "set_middle_mouse_paste_enabled", "is_middle_mouse_paste_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selecting_enabled"), "set_selecting_enabled", "is_selecting_enabled");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "right_icon", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_right_icon", "get_right_icon");
ADD_PROPERTY(PropertyInfo(Variant::INT, "text_direction", PROPERTY_HINT_ENUM, "Auto,Left-to-Right,Right-to-Left,Inherited"), "set_text_direction", "get_text_direction");
@@ -2237,33 +2276,33 @@ void LineEdit::_ensure_menu() {
menu_dir = memnew(PopupMenu);
menu_dir->set_name("DirMenu");
- menu_dir->add_radio_check_item(RTR("Same as layout direction"), MENU_DIR_INHERITED);
- menu_dir->add_radio_check_item(RTR("Auto-detect direction"), MENU_DIR_AUTO);
- menu_dir->add_radio_check_item(RTR("Left-to-right"), MENU_DIR_LTR);
- menu_dir->add_radio_check_item(RTR("Right-to-left"), MENU_DIR_RTL);
- menu->add_child(menu_dir);
+ menu_dir->add_radio_check_item(RTR("Same as Layout Direction"), MENU_DIR_INHERITED);
+ menu_dir->add_radio_check_item(RTR("Auto-Detect Direction"), MENU_DIR_AUTO);
+ menu_dir->add_radio_check_item(RTR("Left-to-Right"), MENU_DIR_LTR);
+ menu_dir->add_radio_check_item(RTR("Right-to-Left"), MENU_DIR_RTL);
+ menu->add_child(menu_dir, false, INTERNAL_MODE_FRONT);
menu_ctl = memnew(PopupMenu);
menu_ctl->set_name("CTLMenu");
- menu_ctl->add_item(RTR("Left-to-right mark (LRM)"), MENU_INSERT_LRM);
- menu_ctl->add_item(RTR("Right-to-left mark (RLM)"), MENU_INSERT_RLM);
- menu_ctl->add_item(RTR("Start of left-to-right embedding (LRE)"), MENU_INSERT_LRE);
- menu_ctl->add_item(RTR("Start of right-to-left embedding (RLE)"), MENU_INSERT_RLE);
- menu_ctl->add_item(RTR("Start of left-to-right override (LRO)"), MENU_INSERT_LRO);
- menu_ctl->add_item(RTR("Start of right-to-left override (RLO)"), MENU_INSERT_RLO);
- menu_ctl->add_item(RTR("Pop direction formatting (PDF)"), MENU_INSERT_PDF);
+ menu_ctl->add_item(RTR("Left-to-Right Mark (LRM)"), MENU_INSERT_LRM);
+ menu_ctl->add_item(RTR("Right-to-Left Mark (RLM)"), MENU_INSERT_RLM);
+ menu_ctl->add_item(RTR("Start of Left-to-Right Embedding (LRE)"), MENU_INSERT_LRE);
+ menu_ctl->add_item(RTR("Start of Right-to-Left Embedding (RLE)"), MENU_INSERT_RLE);
+ menu_ctl->add_item(RTR("Start of Left-to-Right Override (LRO)"), MENU_INSERT_LRO);
+ menu_ctl->add_item(RTR("Start of Right-to-Left Override (RLO)"), MENU_INSERT_RLO);
+ menu_ctl->add_item(RTR("Pop Direction Formatting (PDF)"), MENU_INSERT_PDF);
menu_ctl->add_separator();
- menu_ctl->add_item(RTR("Arabic letter mark (ALM)"), MENU_INSERT_ALM);
- menu_ctl->add_item(RTR("Left-to-right isolate (LRI)"), MENU_INSERT_LRI);
- menu_ctl->add_item(RTR("Right-to-left isolate (RLI)"), MENU_INSERT_RLI);
- menu_ctl->add_item(RTR("First strong isolate (FSI)"), MENU_INSERT_FSI);
- menu_ctl->add_item(RTR("Pop direction isolate (PDI)"), MENU_INSERT_PDI);
+ menu_ctl->add_item(RTR("Arabic Letter Mark (ALM)"), MENU_INSERT_ALM);
+ menu_ctl->add_item(RTR("Left-to-Right Isolate (LRI)"), MENU_INSERT_LRI);
+ menu_ctl->add_item(RTR("Right-to-Left Isolate (RLI)"), MENU_INSERT_RLI);
+ menu_ctl->add_item(RTR("First Strong Isolate (FSI)"), MENU_INSERT_FSI);
+ menu_ctl->add_item(RTR("Pop Direction Isolate (PDI)"), MENU_INSERT_PDI);
menu_ctl->add_separator();
- menu_ctl->add_item(RTR("Zero width joiner (ZWJ)"), MENU_INSERT_ZWJ);
- menu_ctl->add_item(RTR("Zero width non-joiner (ZWNJ)"), MENU_INSERT_ZWNJ);
- menu_ctl->add_item(RTR("Word joiner (WJ)"), MENU_INSERT_WJ);
- menu_ctl->add_item(RTR("Soft hyphen (SHY)"), MENU_INSERT_SHY);
- menu->add_child(menu_ctl);
+ menu_ctl->add_item(RTR("Zero-Width Joiner (ZWJ)"), MENU_INSERT_ZWJ);
+ menu_ctl->add_item(RTR("Zero-Width Non-Joiner (ZWNJ)"), MENU_INSERT_ZWNJ);
+ menu_ctl->add_item(RTR("Word Joiner (WJ)"), MENU_INSERT_WJ);
+ menu_ctl->add_item(RTR("Soft Hyphen (SHY)"), MENU_INSERT_SHY);
+ menu->add_child(menu_ctl, false, INTERNAL_MODE_FRONT);
menu->connect("id_pressed", callable_mp(this, &LineEdit::menu_option));
menu_dir->connect("id_pressed", callable_mp(this, &LineEdit::menu_option));
@@ -2290,12 +2329,12 @@ void LineEdit::_ensure_menu() {
menu->add_item(RTR("Redo"), MENU_REDO, is_shortcut_keys_enabled() ? _get_menu_action_accelerator("ui_redo") : 0);
}
menu->add_separator();
- menu->add_submenu_item(RTR("Text writing direction"), "DirMenu");
+ menu->add_submenu_item(RTR("Text Writing Direction"), "DirMenu");
menu->add_separator();
- menu->add_check_item(RTR("Display control characters"), MENU_DISPLAY_UCC);
+ menu->add_check_item(RTR("Display Control Characters"), MENU_DISPLAY_UCC);
menu->set_item_checked(menu->get_item_index(MENU_DISPLAY_UCC), draw_control_chars);
if (editable) {
- menu->add_submenu_item(RTR("Insert control character"), "CTLMenu");
+ menu->add_submenu_item(RTR("Insert Control Character"), "CTLMenu");
}
menu_dir->set_item_checked(menu_dir->get_item_index(MENU_DIR_INHERITED), text_direction == TEXT_DIRECTION_INHERITED);
menu_dir->set_item_checked(menu_dir->get_item_index(MENU_DIR_AUTO), text_direction == TEXT_DIRECTION_AUTO);
diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h
index 923024dd56..94179ce05b 100644
--- a/scene/gui/line_edit.h
+++ b/scene/gui/line_edit.h
@@ -126,6 +126,8 @@ private:
bool virtual_keyboard_enabled = true;
+ bool middle_mouse_paste_enabled = true;
+
Ref<Texture2D> right_icon;
struct Selection {
@@ -187,7 +189,6 @@ private:
void _toggle_draw_caret();
void clear_internal();
- void changed_internal();
void _editor_settings_changed();
@@ -318,6 +319,9 @@ public:
void set_virtual_keyboard_enabled(bool p_enable);
bool is_virtual_keyboard_enabled() const;
+ void set_middle_mouse_paste_enabled(bool p_enabled);
+ bool is_middle_mouse_paste_enabled() const;
+
void set_selecting_enabled(bool p_enabled);
bool is_selecting_enabled() const;
diff --git a/scene/gui/popup.h b/scene/gui/popup.h
index c7090e7231..8458a75eef 100644
--- a/scene/gui/popup.h
+++ b/scene/gui/popup.h
@@ -80,7 +80,6 @@ protected:
virtual Size2 _get_contents_minimum_size() const override;
public:
- void set_child_rect(Control *p_child);
PopupPanel();
};
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 4588966d88..31767dd263 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -486,7 +486,7 @@ void RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref<Font>
remaining_characters -= cell_ch;
table->columns.write[column].min_width = MAX(table->columns[column].min_width, ceil(frame->lines[i].text_buf->get_size().x));
- table->columns.write[column].max_width = MAX(table->columns[column].max_width, ceil(frame->lines[i].text_buf->get_non_wraped_size().x));
+ table->columns.write[column].max_width = MAX(table->columns[column].max_width, ceil(frame->lines[i].text_buf->get_non_wrapped_size().x));
}
idx++;
}
@@ -1596,12 +1596,18 @@ void RichTextLabel::gui_input(const Ref<InputEvent> &p_event) {
selection.to_char = words[i + 1];
selection.active = true;
+ if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text());
+ }
update();
break;
}
}
}
} else if (!b->is_pressed()) {
+ if (selection.enabled && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text());
+ }
selection.click_item = nullptr;
if (!b->is_double_click() && !scroll_updated) {
@@ -1719,6 +1725,7 @@ void RichTextLabel::gui_input(const Ref<InputEvent> &p_event) {
swap = true;
} else if (selection.from_char == selection.to_char) {
selection.active = false;
+ update();
return;
}
}
@@ -2810,12 +2817,12 @@ bool RichTextLabel::is_scroll_following() const {
return scroll_follow;
}
-Error RichTextLabel::parse_bbcode(const String &p_bbcode) {
+void RichTextLabel::parse_bbcode(const String &p_bbcode) {
clear();
- return append_text(p_bbcode);
+ append_text(p_bbcode);
}
-Error RichTextLabel::append_text(const String &p_bbcode) {
+void RichTextLabel::append_text(const String &p_bbcode) {
int pos = 0;
List<String> tag_stack;
@@ -3538,8 +3545,6 @@ Error RichTextLabel::append_text(const String &p_bbcode) {
break;
}
}
-
- return OK;
}
void RichTextLabel::scroll_to_paragraph(int p_paragraph) {
diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h
index 94f02a3989..48186ca8b8 100644
--- a/scene/gui/rich_text_label.h
+++ b/scene/gui/rich_text_label.h
@@ -552,8 +552,8 @@ public:
String get_selected_text() const;
void selection_copy();
- Error parse_bbcode(const String &p_bbcode);
- Error append_text(const String &p_bbcode);
+ void parse_bbcode(const String &p_bbcode);
+ void append_text(const String &p_bbcode);
void set_use_bbcode(bool p_enable);
bool is_using_bbcode() const;
diff --git a/scene/gui/tabs.cpp b/scene/gui/tab_bar.cpp
index 0755a79eee..78b58c773a 100644
--- a/scene/gui/tabs.cpp
+++ b/scene/gui/tab_bar.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* tabs.cpp */
+/* tab_bar.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,7 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "tabs.h"
+#include "tab_bar.h"
#include "core/object/message_queue.h"
#include "core/string/translation.h"
@@ -37,7 +37,7 @@
#include "scene/gui/label.h"
#include "scene/gui/texture_rect.h"
-Size2 Tabs::get_minimum_size() const {
+Size2 TabBar::get_minimum_size() const {
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
Ref<StyleBox> tab_selected = get_theme_stylebox(SNAME("tab_selected"));
Ref<StyleBox> tab_disabled = get_theme_stylebox(SNAME("tab_disabled"));
@@ -90,7 +90,7 @@ Size2 Tabs::get_minimum_size() const {
return ms;
}
-void Tabs::gui_input(const Ref<InputEvent> &p_event) {
+void TabBar::gui_input(const Ref<InputEvent> &p_event) {
ERR_FAIL_COND(p_event.is_null());
Ref<InputEventMouseMotion> mm = p_event;
@@ -164,7 +164,7 @@ void Tabs::gui_input(const Ref<InputEvent> &p_event) {
if (rb_pressing && !mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_LEFT) {
if (rb_hover != -1) {
- //pressed
+ // pressed
emit_signal(SNAME("tab_rmb_clicked"), rb_hover);
}
@@ -174,7 +174,7 @@ void Tabs::gui_input(const Ref<InputEvent> &p_event) {
if (cb_pressing && !mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_LEFT) {
if (cb_hover != -1) {
- //pressed
+ // pressed
emit_signal(SNAME("tab_closed"), cb_hover);
}
@@ -222,6 +222,11 @@ void Tabs::gui_input(const Ref<InputEvent> &p_event) {
}
}
+ if (max_drawn_tab <= 0) {
+ // Return early if there are no actual tabs to handle input for.
+ return;
+ }
+
int found = -1;
for (int i = offset; i <= max_drawn_tab; i++) {
if (tabs[i].rb_rect.has_point(pos)) {
@@ -252,7 +257,7 @@ void Tabs::gui_input(const Ref<InputEvent> &p_event) {
}
}
-void Tabs::_shape(int p_tab) {
+void TabBar::_shape(int p_tab) {
Ref<Font> font = get_theme_font(SNAME("font"));
int font_size = get_theme_font_size(SNAME("font_size"));
@@ -268,7 +273,7 @@ void Tabs::_shape(int p_tab) {
tabs.write[p_tab].text_buf->add_string(tabs.write[p_tab].xl_text, font, font_size, tabs[p_tab].opentype_features, (tabs[p_tab].language != "") ? tabs[p_tab].language : TranslationServer::get_singleton()->get_tool_locale());
}
-void Tabs::_notification(int p_what) {
+void TabBar::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_LAYOUT_DIRECTION_CHANGED: {
_update_cache();
@@ -505,11 +510,11 @@ void Tabs::_notification(int p_what) {
}
}
-int Tabs::get_tab_count() const {
+int TabBar::get_tab_count() const {
return tabs.size();
}
-void Tabs::set_current_tab(int p_current) {
+void TabBar::set_current_tab(int p_current) {
if (current == p_current) {
return;
}
@@ -524,27 +529,27 @@ void Tabs::set_current_tab(int p_current) {
emit_signal(SNAME("tab_changed"), p_current);
}
-int Tabs::get_current_tab() const {
+int TabBar::get_current_tab() const {
return current;
}
-int Tabs::get_previous_tab() const {
+int TabBar::get_previous_tab() const {
return previous;
}
-int Tabs::get_hovered_tab() const {
+int TabBar::get_hovered_tab() const {
return hover;
}
-int Tabs::get_tab_offset() const {
+int TabBar::get_tab_offset() const {
return offset;
}
-bool Tabs::get_offset_buttons_visible() const {
+bool TabBar::get_offset_buttons_visible() const {
return buttons_visible;
}
-void Tabs::set_tab_title(int p_tab, const String &p_title) {
+void TabBar::set_tab_title(int p_tab, const String &p_title) {
ERR_FAIL_INDEX(p_tab, tabs.size());
tabs.write[p_tab].text = p_title;
_shape(p_tab);
@@ -552,12 +557,12 @@ void Tabs::set_tab_title(int p_tab, const String &p_title) {
minimum_size_changed();
}
-String Tabs::get_tab_title(int p_tab) const {
+String TabBar::get_tab_title(int p_tab) const {
ERR_FAIL_INDEX_V(p_tab, tabs.size(), "");
return tabs[p_tab].text;
}
-void Tabs::set_tab_text_direction(int p_tab, Control::TextDirection p_text_direction) {
+void TabBar::set_tab_text_direction(int p_tab, Control::TextDirection p_text_direction) {
ERR_FAIL_INDEX(p_tab, tabs.size());
ERR_FAIL_COND((int)p_text_direction < -1 || (int)p_text_direction > 3);
if (tabs[p_tab].text_direction != p_text_direction) {
@@ -567,19 +572,19 @@ void Tabs::set_tab_text_direction(int p_tab, Control::TextDirection p_text_direc
}
}
-Control::TextDirection Tabs::get_tab_text_direction(int p_tab) const {
+Control::TextDirection TabBar::get_tab_text_direction(int p_tab) const {
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Control::TEXT_DIRECTION_INHERITED);
return tabs[p_tab].text_direction;
}
-void Tabs::clear_tab_opentype_features(int p_tab) {
+void TabBar::clear_tab_opentype_features(int p_tab) {
ERR_FAIL_INDEX(p_tab, tabs.size());
tabs.write[p_tab].opentype_features.clear();
_shape(p_tab);
update();
}
-void Tabs::set_tab_opentype_feature(int p_tab, const String &p_name, int p_value) {
+void TabBar::set_tab_opentype_feature(int p_tab, const String &p_name, int p_value) {
ERR_FAIL_INDEX(p_tab, tabs.size());
int32_t tag = TS->name_to_tag(p_name);
if (!tabs[p_tab].opentype_features.has(tag) || (int)tabs[p_tab].opentype_features[tag] != p_value) {
@@ -589,7 +594,7 @@ void Tabs::set_tab_opentype_feature(int p_tab, const String &p_name, int p_value
}
}
-int Tabs::get_tab_opentype_feature(int p_tab, const String &p_name) const {
+int TabBar::get_tab_opentype_feature(int p_tab, const String &p_name) const {
ERR_FAIL_INDEX_V(p_tab, tabs.size(), -1);
int32_t tag = TS->name_to_tag(p_name);
if (!tabs[p_tab].opentype_features.has(tag)) {
@@ -598,7 +603,7 @@ int Tabs::get_tab_opentype_feature(int p_tab, const String &p_name) const {
return tabs[p_tab].opentype_features[tag];
}
-void Tabs::set_tab_language(int p_tab, const String &p_language) {
+void TabBar::set_tab_language(int p_tab, const String &p_language) {
ERR_FAIL_INDEX(p_tab, tabs.size());
if (tabs[p_tab].language != p_language) {
tabs.write[p_tab].language = p_language;
@@ -607,35 +612,35 @@ void Tabs::set_tab_language(int p_tab, const String &p_language) {
}
}
-String Tabs::get_tab_language(int p_tab) const {
+String TabBar::get_tab_language(int p_tab) const {
ERR_FAIL_INDEX_V(p_tab, tabs.size(), "");
return tabs[p_tab].language;
}
-void Tabs::set_tab_icon(int p_tab, const Ref<Texture2D> &p_icon) {
+void TabBar::set_tab_icon(int p_tab, const Ref<Texture2D> &p_icon) {
ERR_FAIL_INDEX(p_tab, tabs.size());
tabs.write[p_tab].icon = p_icon;
update();
minimum_size_changed();
}
-Ref<Texture2D> Tabs::get_tab_icon(int p_tab) const {
+Ref<Texture2D> TabBar::get_tab_icon(int p_tab) const {
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Ref<Texture2D>());
return tabs[p_tab].icon;
}
-void Tabs::set_tab_disabled(int p_tab, bool p_disabled) {
+void TabBar::set_tab_disabled(int p_tab, bool p_disabled) {
ERR_FAIL_INDEX(p_tab, tabs.size());
tabs.write[p_tab].disabled = p_disabled;
update();
}
-bool Tabs::get_tab_disabled(int p_tab) const {
+bool TabBar::get_tab_disabled(int p_tab) const {
ERR_FAIL_INDEX_V(p_tab, tabs.size(), false);
return tabs[p_tab].disabled;
}
-void Tabs::set_tab_right_button(int p_tab, const Ref<Texture2D> &p_right_button) {
+void TabBar::set_tab_right_button(int p_tab, const Ref<Texture2D> &p_right_button) {
ERR_FAIL_INDEX(p_tab, tabs.size());
tabs.write[p_tab].right_button = p_right_button;
_update_cache();
@@ -643,12 +648,12 @@ void Tabs::set_tab_right_button(int p_tab, const Ref<Texture2D> &p_right_button)
minimum_size_changed();
}
-Ref<Texture2D> Tabs::get_tab_right_button(int p_tab) const {
+Ref<Texture2D> TabBar::get_tab_right_button(int p_tab) const {
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Ref<Texture2D>());
return tabs[p_tab].right_button;
}
-void Tabs::_update_hover() {
+void TabBar::_update_hover() {
if (!is_inside_tree()) {
return;
}
@@ -685,7 +690,7 @@ void Tabs::_update_hover() {
}
}
-void Tabs::_update_cache() {
+void TabBar::_update_cache() {
Ref<StyleBox> tab_disabled = get_theme_stylebox(SNAME("tab_disabled"));
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
Ref<StyleBox> tab_selected = get_theme_stylebox(SNAME("tab_selected"));
@@ -748,7 +753,7 @@ void Tabs::_update_cache() {
}
}
-void Tabs::_on_mouse_exited() {
+void TabBar::_on_mouse_exited() {
rb_hover = -1;
cb_hover = -1;
hover = -1;
@@ -756,7 +761,7 @@ void Tabs::_on_mouse_exited() {
update();
}
-void Tabs::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) {
+void TabBar::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) {
Tab t;
t.text = p_str;
t.xl_text = atr(p_str);
@@ -775,7 +780,7 @@ void Tabs::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) {
minimum_size_changed();
}
-void Tabs::clear_tabs() {
+void TabBar::clear_tabs() {
tabs.clear();
current = 0;
previous = 0;
@@ -783,7 +788,7 @@ void Tabs::clear_tabs() {
update();
}
-void Tabs::remove_tab(int p_idx) {
+void TabBar::remove_tab(int p_idx) {
ERR_FAIL_INDEX(p_idx, tabs.size());
tabs.remove(p_idx);
if (current >= p_idx) {
@@ -805,7 +810,7 @@ void Tabs::remove_tab(int p_idx) {
_ensure_no_over_offset();
}
-Variant Tabs::get_drag_data(const Point2 &p_point) {
+Variant TabBar::get_drag_data(const Point2 &p_point) {
if (!drag_to_rearrange_enabled) {
return Variant();
}
@@ -839,7 +844,7 @@ Variant Tabs::get_drag_data(const Point2 &p_point) {
return drag_data;
}
-bool Tabs::can_drop_data(const Point2 &p_point, const Variant &p_data) const {
+bool TabBar::can_drop_data(const Point2 &p_point, const Variant &p_data) const {
if (!drag_to_rearrange_enabled) {
return false;
}
@@ -855,9 +860,9 @@ bool Tabs::can_drop_data(const Point2 &p_point, const Variant &p_data) const {
if (from_path == to_path) {
return true;
} else if (get_tabs_rearrange_group() != -1) {
- // drag and drop between other Tabs
+ // drag and drop between other TabBars
Node *from_node = get_node(from_path);
- Tabs *from_tabs = Object::cast_to<Tabs>(from_node);
+ TabBar *from_tabs = Object::cast_to<TabBar>(from_node);
if (from_tabs && from_tabs->get_tabs_rearrange_group() == get_tabs_rearrange_group()) {
return true;
}
@@ -866,7 +871,7 @@ bool Tabs::can_drop_data(const Point2 &p_point, const Variant &p_data) const {
return false;
}
-void Tabs::drop_data(const Point2 &p_point, const Variant &p_data) {
+void TabBar::drop_data(const Point2 &p_point, const Variant &p_data) {
if (!drag_to_rearrange_enabled) {
return;
}
@@ -892,7 +897,7 @@ void Tabs::drop_data(const Point2 &p_point, const Variant &p_data) {
} else if (get_tabs_rearrange_group() != -1) {
// drag and drop between Tabs
Node *from_node = get_node(from_path);
- Tabs *from_tabs = Object::cast_to<Tabs>(from_node);
+ TabBar *from_tabs = Object::cast_to<TabBar>(from_node);
if (from_tabs && from_tabs->get_tabs_rearrange_group() == get_tabs_rearrange_group()) {
if (tab_from_id >= from_tabs->get_tab_count()) {
return;
@@ -912,7 +917,7 @@ void Tabs::drop_data(const Point2 &p_point, const Variant &p_data) {
update();
}
-int Tabs::get_tab_idx_at_point(const Point2 &p_point) const {
+int TabBar::get_tab_idx_at_point(const Point2 &p_point) const {
int hover_now = -1;
for (int i = offset; i <= max_drawn_tab; i++) {
Rect2 rect = get_tab_rect(i);
@@ -924,17 +929,17 @@ int Tabs::get_tab_idx_at_point(const Point2 &p_point) const {
return hover_now;
}
-void Tabs::set_tab_align(TabAlign p_align) {
+void TabBar::set_tab_align(TabAlign p_align) {
ERR_FAIL_INDEX(p_align, ALIGN_MAX);
tab_align = p_align;
update();
}
-Tabs::TabAlign Tabs::get_tab_align() const {
+TabBar::TabAlign TabBar::get_tab_align() const {
return tab_align;
}
-void Tabs::set_clip_tabs(bool p_clip_tabs) {
+void TabBar::set_clip_tabs(bool p_clip_tabs) {
if (clip_tabs == p_clip_tabs) {
return;
}
@@ -943,11 +948,11 @@ void Tabs::set_clip_tabs(bool p_clip_tabs) {
minimum_size_changed();
}
-bool Tabs::get_clip_tabs() const {
+bool TabBar::get_clip_tabs() const {
return clip_tabs;
}
-void Tabs::move_tab(int from, int to) {
+void TabBar::move_tab(int from, int to) {
if (from == to) {
return;
}
@@ -963,7 +968,7 @@ void Tabs::move_tab(int from, int to) {
update();
}
-int Tabs::get_tab_width(int p_idx) const {
+int TabBar::get_tab_width(int p_idx) const {
ERR_FAIL_INDEX_V(p_idx, tabs.size(), 0);
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
@@ -1005,7 +1010,7 @@ int Tabs::get_tab_width(int p_idx) const {
return x;
}
-void Tabs::_ensure_no_over_offset() {
+void TabBar::_ensure_no_over_offset() {
if (!is_inside_tree()) {
return;
}
@@ -1031,7 +1036,7 @@ void Tabs::_ensure_no_over_offset() {
}
}
-void Tabs::ensure_tab_visible(int p_idx) {
+void TabBar::ensure_tab_visible(int p_idx) {
if (!is_inside_tree()) {
return;
}
@@ -1068,7 +1073,7 @@ void Tabs::ensure_tab_visible(int p_idx) {
}
}
-Rect2 Tabs::get_tab_rect(int p_tab) const {
+Rect2 TabBar::get_tab_rect(int p_tab) const {
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Rect2());
if (is_layout_rtl()) {
return Rect2(get_size().width - tabs[p_tab].ofs_cache - tabs[p_tab].size_cache, 0, tabs[p_tab].size_cache, get_size().height);
@@ -1077,93 +1082,93 @@ Rect2 Tabs::get_tab_rect(int p_tab) const {
}
}
-void Tabs::set_tab_close_display_policy(CloseButtonDisplayPolicy p_policy) {
+void TabBar::set_tab_close_display_policy(CloseButtonDisplayPolicy p_policy) {
ERR_FAIL_INDEX(p_policy, CLOSE_BUTTON_MAX);
cb_displaypolicy = p_policy;
update();
}
-Tabs::CloseButtonDisplayPolicy Tabs::get_tab_close_display_policy() const {
+TabBar::CloseButtonDisplayPolicy TabBar::get_tab_close_display_policy() const {
return cb_displaypolicy;
}
-void Tabs::set_min_width(int p_width) {
+void TabBar::set_min_width(int p_width) {
min_width = p_width;
}
-void Tabs::set_scrolling_enabled(bool p_enabled) {
+void TabBar::set_scrolling_enabled(bool p_enabled) {
scrolling_enabled = p_enabled;
}
-bool Tabs::get_scrolling_enabled() const {
+bool TabBar::get_scrolling_enabled() const {
return scrolling_enabled;
}
-void Tabs::set_drag_to_rearrange_enabled(bool p_enabled) {
+void TabBar::set_drag_to_rearrange_enabled(bool p_enabled) {
drag_to_rearrange_enabled = p_enabled;
}
-bool Tabs::get_drag_to_rearrange_enabled() const {
+bool TabBar::get_drag_to_rearrange_enabled() const {
return drag_to_rearrange_enabled;
}
-void Tabs::set_tabs_rearrange_group(int p_group_id) {
+void TabBar::set_tabs_rearrange_group(int p_group_id) {
tabs_rearrange_group = p_group_id;
}
-int Tabs::get_tabs_rearrange_group() const {
+int TabBar::get_tabs_rearrange_group() const {
return tabs_rearrange_group;
}
-void Tabs::set_select_with_rmb(bool p_enabled) {
+void TabBar::set_select_with_rmb(bool p_enabled) {
select_with_rmb = p_enabled;
}
-bool Tabs::get_select_with_rmb() const {
+bool TabBar::get_select_with_rmb() const {
return select_with_rmb;
}
-void Tabs::_bind_methods() {
- ClassDB::bind_method(D_METHOD("_update_hover"), &Tabs::_update_hover);
- ClassDB::bind_method(D_METHOD("get_tab_count"), &Tabs::get_tab_count);
- ClassDB::bind_method(D_METHOD("set_current_tab", "tab_idx"), &Tabs::set_current_tab);
- ClassDB::bind_method(D_METHOD("get_current_tab"), &Tabs::get_current_tab);
- ClassDB::bind_method(D_METHOD("get_previous_tab"), &Tabs::get_previous_tab);
- ClassDB::bind_method(D_METHOD("set_tab_title", "tab_idx", "title"), &Tabs::set_tab_title);
- ClassDB::bind_method(D_METHOD("get_tab_title", "tab_idx"), &Tabs::get_tab_title);
- ClassDB::bind_method(D_METHOD("set_tab_text_direction", "tab_idx", "direction"), &Tabs::set_tab_text_direction);
- ClassDB::bind_method(D_METHOD("get_tab_text_direction", "tab_idx"), &Tabs::get_tab_text_direction);
- ClassDB::bind_method(D_METHOD("set_tab_opentype_feature", "tab_idx", "tag", "values"), &Tabs::set_tab_opentype_feature);
- ClassDB::bind_method(D_METHOD("get_tab_opentype_feature", "tab_idx", "tag"), &Tabs::get_tab_opentype_feature);
- ClassDB::bind_method(D_METHOD("clear_tab_opentype_features", "tab_idx"), &Tabs::clear_tab_opentype_features);
- ClassDB::bind_method(D_METHOD("set_tab_language", "tab_idx", "language"), &Tabs::set_tab_language);
- ClassDB::bind_method(D_METHOD("get_tab_language", "tab_idx"), &Tabs::get_tab_language);
- ClassDB::bind_method(D_METHOD("set_tab_icon", "tab_idx", "icon"), &Tabs::set_tab_icon);
- ClassDB::bind_method(D_METHOD("get_tab_icon", "tab_idx"), &Tabs::get_tab_icon);
- ClassDB::bind_method(D_METHOD("set_tab_disabled", "tab_idx", "disabled"), &Tabs::set_tab_disabled);
- ClassDB::bind_method(D_METHOD("get_tab_disabled", "tab_idx"), &Tabs::get_tab_disabled);
- ClassDB::bind_method(D_METHOD("remove_tab", "tab_idx"), &Tabs::remove_tab);
- ClassDB::bind_method(D_METHOD("add_tab", "title", "icon"), &Tabs::add_tab, DEFVAL(""), DEFVAL(Ref<Texture2D>()));
- ClassDB::bind_method(D_METHOD("set_tab_align", "align"), &Tabs::set_tab_align);
- ClassDB::bind_method(D_METHOD("get_tab_align"), &Tabs::get_tab_align);
- ClassDB::bind_method(D_METHOD("set_clip_tabs", "clip_tabs"), &Tabs::set_clip_tabs);
- ClassDB::bind_method(D_METHOD("get_clip_tabs"), &Tabs::get_clip_tabs);
- ClassDB::bind_method(D_METHOD("get_tab_offset"), &Tabs::get_tab_offset);
- ClassDB::bind_method(D_METHOD("get_offset_buttons_visible"), &Tabs::get_offset_buttons_visible);
- ClassDB::bind_method(D_METHOD("ensure_tab_visible", "idx"), &Tabs::ensure_tab_visible);
- ClassDB::bind_method(D_METHOD("get_tab_rect", "tab_idx"), &Tabs::get_tab_rect);
- ClassDB::bind_method(D_METHOD("move_tab", "from", "to"), &Tabs::move_tab);
- ClassDB::bind_method(D_METHOD("set_tab_close_display_policy", "policy"), &Tabs::set_tab_close_display_policy);
- ClassDB::bind_method(D_METHOD("get_tab_close_display_policy"), &Tabs::get_tab_close_display_policy);
- ClassDB::bind_method(D_METHOD("set_scrolling_enabled", "enabled"), &Tabs::set_scrolling_enabled);
- ClassDB::bind_method(D_METHOD("get_scrolling_enabled"), &Tabs::get_scrolling_enabled);
- ClassDB::bind_method(D_METHOD("set_drag_to_rearrange_enabled", "enabled"), &Tabs::set_drag_to_rearrange_enabled);
- ClassDB::bind_method(D_METHOD("get_drag_to_rearrange_enabled"), &Tabs::get_drag_to_rearrange_enabled);
- ClassDB::bind_method(D_METHOD("set_tabs_rearrange_group", "group_id"), &Tabs::set_tabs_rearrange_group);
- ClassDB::bind_method(D_METHOD("get_tabs_rearrange_group"), &Tabs::get_tabs_rearrange_group);
-
- ClassDB::bind_method(D_METHOD("set_select_with_rmb", "enabled"), &Tabs::set_select_with_rmb);
- ClassDB::bind_method(D_METHOD("get_select_with_rmb"), &Tabs::get_select_with_rmb);
+void TabBar::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("_update_hover"), &TabBar::_update_hover);
+ ClassDB::bind_method(D_METHOD("get_tab_count"), &TabBar::get_tab_count);
+ ClassDB::bind_method(D_METHOD("set_current_tab", "tab_idx"), &TabBar::set_current_tab);
+ ClassDB::bind_method(D_METHOD("get_current_tab"), &TabBar::get_current_tab);
+ ClassDB::bind_method(D_METHOD("get_previous_tab"), &TabBar::get_previous_tab);
+ ClassDB::bind_method(D_METHOD("set_tab_title", "tab_idx", "title"), &TabBar::set_tab_title);
+ ClassDB::bind_method(D_METHOD("get_tab_title", "tab_idx"), &TabBar::get_tab_title);
+ ClassDB::bind_method(D_METHOD("set_tab_text_direction", "tab_idx", "direction"), &TabBar::set_tab_text_direction);
+ ClassDB::bind_method(D_METHOD("get_tab_text_direction", "tab_idx"), &TabBar::get_tab_text_direction);
+ ClassDB::bind_method(D_METHOD("set_tab_opentype_feature", "tab_idx", "tag", "values"), &TabBar::set_tab_opentype_feature);
+ ClassDB::bind_method(D_METHOD("get_tab_opentype_feature", "tab_idx", "tag"), &TabBar::get_tab_opentype_feature);
+ ClassDB::bind_method(D_METHOD("clear_tab_opentype_features", "tab_idx"), &TabBar::clear_tab_opentype_features);
+ ClassDB::bind_method(D_METHOD("set_tab_language", "tab_idx", "language"), &TabBar::set_tab_language);
+ ClassDB::bind_method(D_METHOD("get_tab_language", "tab_idx"), &TabBar::get_tab_language);
+ ClassDB::bind_method(D_METHOD("set_tab_icon", "tab_idx", "icon"), &TabBar::set_tab_icon);
+ ClassDB::bind_method(D_METHOD("get_tab_icon", "tab_idx"), &TabBar::get_tab_icon);
+ ClassDB::bind_method(D_METHOD("set_tab_disabled", "tab_idx", "disabled"), &TabBar::set_tab_disabled);
+ ClassDB::bind_method(D_METHOD("get_tab_disabled", "tab_idx"), &TabBar::get_tab_disabled);
+ ClassDB::bind_method(D_METHOD("remove_tab", "tab_idx"), &TabBar::remove_tab);
+ ClassDB::bind_method(D_METHOD("add_tab", "title", "icon"), &TabBar::add_tab, DEFVAL(""), DEFVAL(Ref<Texture2D>()));
+ ClassDB::bind_method(D_METHOD("set_tab_align", "align"), &TabBar::set_tab_align);
+ ClassDB::bind_method(D_METHOD("get_tab_align"), &TabBar::get_tab_align);
+ ClassDB::bind_method(D_METHOD("set_clip_tabs", "clip_tabs"), &TabBar::set_clip_tabs);
+ ClassDB::bind_method(D_METHOD("get_clip_tabs"), &TabBar::get_clip_tabs);
+ ClassDB::bind_method(D_METHOD("get_tab_offset"), &TabBar::get_tab_offset);
+ ClassDB::bind_method(D_METHOD("get_offset_buttons_visible"), &TabBar::get_offset_buttons_visible);
+ ClassDB::bind_method(D_METHOD("ensure_tab_visible", "idx"), &TabBar::ensure_tab_visible);
+ ClassDB::bind_method(D_METHOD("get_tab_rect", "tab_idx"), &TabBar::get_tab_rect);
+ ClassDB::bind_method(D_METHOD("move_tab", "from", "to"), &TabBar::move_tab);
+ ClassDB::bind_method(D_METHOD("set_tab_close_display_policy", "policy"), &TabBar::set_tab_close_display_policy);
+ ClassDB::bind_method(D_METHOD("get_tab_close_display_policy"), &TabBar::get_tab_close_display_policy);
+ ClassDB::bind_method(D_METHOD("set_scrolling_enabled", "enabled"), &TabBar::set_scrolling_enabled);
+ ClassDB::bind_method(D_METHOD("get_scrolling_enabled"), &TabBar::get_scrolling_enabled);
+ ClassDB::bind_method(D_METHOD("set_drag_to_rearrange_enabled", "enabled"), &TabBar::set_drag_to_rearrange_enabled);
+ ClassDB::bind_method(D_METHOD("get_drag_to_rearrange_enabled"), &TabBar::get_drag_to_rearrange_enabled);
+ ClassDB::bind_method(D_METHOD("set_tabs_rearrange_group", "group_id"), &TabBar::set_tabs_rearrange_group);
+ ClassDB::bind_method(D_METHOD("get_tabs_rearrange_group"), &TabBar::get_tabs_rearrange_group);
+
+ ClassDB::bind_method(D_METHOD("set_select_with_rmb", "enabled"), &TabBar::set_select_with_rmb);
+ ClassDB::bind_method(D_METHOD("get_select_with_rmb"), &TabBar::get_select_with_rmb);
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab")));
ADD_SIGNAL(MethodInfo("tab_rmb_clicked", PropertyInfo(Variant::INT, "tab")));
@@ -1190,6 +1195,6 @@ void Tabs::_bind_methods() {
BIND_ENUM_CONSTANT(CLOSE_BUTTON_MAX);
}
-Tabs::Tabs() {
- connect("mouse_exited", callable_mp(this, &Tabs::_on_mouse_exited));
+TabBar::TabBar() {
+ connect("mouse_exited", callable_mp(this, &TabBar::_on_mouse_exited));
}
diff --git a/scene/gui/tabs.h b/scene/gui/tab_bar.h
index b044453803..411a62b1d9 100644
--- a/scene/gui/tabs.h
+++ b/scene/gui/tab_bar.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* tabs.h */
+/* tab_bar.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,14 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef TABS_H
-#define TABS_H
+#ifndef TAB_BAR_H
+#define TAB_BAR_H
#include "scene/gui/control.h"
#include "scene/resources/text_line.h"
-class Tabs : public Control {
- GDCLASS(Tabs, Control);
+class TabBar : public Control {
+ GDCLASS(TabBar, Control);
public:
enum TabAlign {
@@ -83,7 +83,6 @@ private:
Vector<Tab> tabs;
int current = 0;
int previous = 0;
- int _get_top_margin() const;
TabAlign tab_align = ALIGN_CENTER;
bool clip_tabs = true;
int rb_hover = -1;
@@ -187,10 +186,10 @@ public:
Rect2 get_tab_rect(int p_tab) const;
Size2 get_minimum_size() const override;
- Tabs();
+ TabBar();
};
-VARIANT_ENUM_CAST(Tabs::TabAlign);
-VARIANT_ENUM_CAST(Tabs::CloseButtonDisplayPolicy);
+VARIANT_ENUM_CAST(TabBar::TabAlign);
+VARIANT_ENUM_CAST(TabBar::CloseButtonDisplayPolicy);
-#endif // TABS_H
+#endif // TAB_BAR_H
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index dc9a3f337e..8cb3b23020 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -1534,6 +1534,10 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
update();
}
+ if (is_middle_mouse_paste_enabled() && mb->get_button_index() == MOUSE_BUTTON_MIDDLE && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ paste_primary_clipboard();
+ }
+
if (mb->get_button_index() == MOUSE_BUTTON_RIGHT && context_menu_enabled) {
_reset_caret_blink_timer();
@@ -1571,6 +1575,9 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
dragging_selection = false;
can_drag_minimap = false;
click_select_held->stop();
+ if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text());
+ }
}
// Notify to show soft keyboard.
@@ -2596,6 +2603,14 @@ bool TextEdit::is_virtual_keyboard_enabled() const {
return virtual_keyboard_enabled;
}
+void TextEdit::set_middle_mouse_paste_enabled(bool p_enabled) {
+ middle_mouse_paste_enabled = p_enabled;
+}
+
+bool TextEdit::is_middle_mouse_paste_enabled() const {
+ return middle_mouse_paste_enabled;
+}
+
// Text manipulation
void TextEdit::clear() {
setting_text = true;
@@ -2915,6 +2930,13 @@ void TextEdit::paste() {
_paste_internal();
}
+void TextEdit::paste_primary_clipboard() {
+ if (GDVIRTUAL_CALL(_paste_primary_clipboard)) {
+ return;
+ }
+ _paste_primary_clipboard_internal();
+}
+
// Context menu.
PopupMenu *TextEdit::get_menu() const {
const_cast<TextEdit *>(this)->_generate_context_menu();
@@ -3623,6 +3645,8 @@ int TextEdit::get_caret_wrap_index() const {
}
String TextEdit::get_word_under_caret() const {
+ ERR_FAIL_INDEX_V(caret.line, text.size(), "");
+ ERR_FAIL_INDEX_V(caret.column, text[caret.line].length() + 1, "");
PackedInt32Array words = TS->shaped_text_get_word_breaks(text.get_line_data(caret.line)->get_rid());
for (int i = 0; i < words.size(); i = i + 2) {
if (words[i] <= caret.column && words[i + 1] > caret.column) {
@@ -4037,7 +4061,7 @@ int TextEdit::get_visible_line_count() const {
}
int TextEdit::get_total_visible_line_count() const {
- /* Returns the total number of (lines + wraped - hidden). */
+ /* Returns the total number of (lines + wrapped - hidden). */
if (!_is_hiding_enabled() && get_line_wrapping_mode() == LineWrappingMode::LINE_WRAPPING_NONE) {
return text.size();
}
@@ -4534,6 +4558,9 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_virtual_keyboard_enabled", "enabled"), &TextEdit::set_virtual_keyboard_enabled);
ClassDB::bind_method(D_METHOD("is_virtual_keyboard_enabled"), &TextEdit::is_virtual_keyboard_enabled);
+ ClassDB::bind_method(D_METHOD("set_middle_mouse_paste_enabled", "enabled"), &TextEdit::set_middle_mouse_paste_enabled);
+ ClassDB::bind_method(D_METHOD("is_middle_mouse_paste_enabled"), &TextEdit::is_middle_mouse_paste_enabled);
+
// Text manipulation
ClassDB::bind_method(D_METHOD("clear"), &TextEdit::clear);
@@ -4573,6 +4600,7 @@ void TextEdit::_bind_methods() {
GDVIRTUAL_BIND(_cut)
GDVIRTUAL_BIND(_copy)
GDVIRTUAL_BIND(_paste)
+ GDVIRTUAL_BIND(_paste_primary_clipboard)
// Context Menu
BIND_ENUM_CONSTANT(MENU_CUT);
@@ -4848,6 +4876,7 @@ void TextEdit::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shortcut_keys_enabled"), "set_shortcut_keys_enabled", "is_shortcut_keys_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selecting_enabled"), "set_selecting_enabled", "is_selecting_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "virtual_keyboard_enabled"), "set_virtual_keyboard_enabled", "is_virtual_keyboard_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "middle_mouse_paste_enabled"), "set_middle_mouse_paste_enabled", "is_middle_mouse_paste_enabled");
ADD_PROPERTY(PropertyInfo(Variant::INT, "wrap_mode", PROPERTY_HINT_ENUM, "None,Boundary"), "set_line_wrapping_mode", "get_line_wrapping_mode");
@@ -5139,6 +5168,24 @@ void TextEdit::_paste_internal() {
end_complex_operation();
}
+void TextEdit::_paste_primary_clipboard_internal() {
+ if (!is_editable() || !DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ return;
+ }
+
+ String paste_buffer = DisplayServer::get_singleton()->clipboard_get_primary();
+
+ Point2i pos = get_line_column_at_pos(get_local_mouse_pos());
+ deselect();
+ set_caret_line(pos.y, true, false);
+ set_caret_column(pos.x);
+ if (!paste_buffer.is_empty()) {
+ insert_text_at_caret(paste_buffer);
+ }
+
+ grab_focus();
+}
+
/* Text. */
// Context menu.
void TextEdit::_generate_context_menu() {
@@ -5148,32 +5195,32 @@ void TextEdit::_generate_context_menu() {
menu_dir = memnew(PopupMenu);
menu_dir->set_name("DirMenu");
- menu_dir->add_radio_check_item(RTR("Same as layout direction"), MENU_DIR_INHERITED);
- menu_dir->add_radio_check_item(RTR("Auto-detect direction"), MENU_DIR_AUTO);
- menu_dir->add_radio_check_item(RTR("Left-to-right"), MENU_DIR_LTR);
- menu_dir->add_radio_check_item(RTR("Right-to-left"), MENU_DIR_RTL);
+ menu_dir->add_radio_check_item(RTR("Same as Layout Direction"), MENU_DIR_INHERITED);
+ menu_dir->add_radio_check_item(RTR("Auto-Detect Direction"), MENU_DIR_AUTO);
+ menu_dir->add_radio_check_item(RTR("Left-to-Right"), MENU_DIR_LTR);
+ menu_dir->add_radio_check_item(RTR("Right-to-Left"), MENU_DIR_RTL);
menu->add_child(menu_dir, false, INTERNAL_MODE_FRONT);
menu_ctl = memnew(PopupMenu);
menu_ctl->set_name("CTLMenu");
- menu_ctl->add_item(RTR("Left-to-right mark (LRM)"), MENU_INSERT_LRM);
- menu_ctl->add_item(RTR("Right-to-left mark (RLM)"), MENU_INSERT_RLM);
- menu_ctl->add_item(RTR("Start of left-to-right embedding (LRE)"), MENU_INSERT_LRE);
- menu_ctl->add_item(RTR("Start of right-to-left embedding (RLE)"), MENU_INSERT_RLE);
- menu_ctl->add_item(RTR("Start of left-to-right override (LRO)"), MENU_INSERT_LRO);
- menu_ctl->add_item(RTR("Start of right-to-left override (RLO)"), MENU_INSERT_RLO);
- menu_ctl->add_item(RTR("Pop direction formatting (PDF)"), MENU_INSERT_PDF);
+ menu_ctl->add_item(RTR("Left-to-Right Mark (LRM)"), MENU_INSERT_LRM);
+ menu_ctl->add_item(RTR("Right-to-Left Mark (RLM)"), MENU_INSERT_RLM);
+ menu_ctl->add_item(RTR("Start of Left-to-Right Embedding (LRE)"), MENU_INSERT_LRE);
+ menu_ctl->add_item(RTR("Start of Right-to-Left Embedding (RLE)"), MENU_INSERT_RLE);
+ menu_ctl->add_item(RTR("Start of Left-to-Right Override (LRO)"), MENU_INSERT_LRO);
+ menu_ctl->add_item(RTR("Start of Right-to-Left Override (RLO)"), MENU_INSERT_RLO);
+ menu_ctl->add_item(RTR("Pop Direction Formatting (PDF)"), MENU_INSERT_PDF);
menu_ctl->add_separator();
- menu_ctl->add_item(RTR("Arabic letter mark (ALM)"), MENU_INSERT_ALM);
- menu_ctl->add_item(RTR("Left-to-right isolate (LRI)"), MENU_INSERT_LRI);
- menu_ctl->add_item(RTR("Right-to-left isolate (RLI)"), MENU_INSERT_RLI);
- menu_ctl->add_item(RTR("First strong isolate (FSI)"), MENU_INSERT_FSI);
- menu_ctl->add_item(RTR("Pop direction isolate (PDI)"), MENU_INSERT_PDI);
+ menu_ctl->add_item(RTR("Arabic Letter Mark (ALM)"), MENU_INSERT_ALM);
+ menu_ctl->add_item(RTR("Left-to-Right Isolate (LRI)"), MENU_INSERT_LRI);
+ menu_ctl->add_item(RTR("Right-to-Left Isolate (RLI)"), MENU_INSERT_RLI);
+ menu_ctl->add_item(RTR("First Strong Isolate (FSI)"), MENU_INSERT_FSI);
+ menu_ctl->add_item(RTR("Pop Direction Isolate (PDI)"), MENU_INSERT_PDI);
menu_ctl->add_separator();
- menu_ctl->add_item(RTR("Zero width joiner (ZWJ)"), MENU_INSERT_ZWJ);
- menu_ctl->add_item(RTR("Zero width non-joiner (ZWNJ)"), MENU_INSERT_ZWNJ);
- menu_ctl->add_item(RTR("Word joiner (WJ)"), MENU_INSERT_WJ);
- menu_ctl->add_item(RTR("Soft hyphen (SHY)"), MENU_INSERT_SHY);
+ menu_ctl->add_item(RTR("Zero-Width Joiner (ZWJ)"), MENU_INSERT_ZWJ);
+ menu_ctl->add_item(RTR("Zero-Width Non-Joiner (ZWNJ)"), MENU_INSERT_ZWNJ);
+ menu_ctl->add_item(RTR("Word Joiner (WJ)"), MENU_INSERT_WJ);
+ menu_ctl->add_item(RTR("Soft Hyphen (SHY)"), MENU_INSERT_SHY);
menu->add_child(menu_ctl, false, INTERNAL_MODE_FRONT);
menu->connect("id_pressed", callable_mp(this, &TextEdit::menu_option));
@@ -5201,12 +5248,12 @@ void TextEdit::_generate_context_menu() {
menu->add_item(RTR("Redo"), MENU_REDO, is_shortcut_keys_enabled() ? _get_menu_action_accelerator("ui_redo") : 0);
}
menu->add_separator();
- menu->add_submenu_item(RTR("Text writing direction"), "DirMenu");
+ menu->add_submenu_item(RTR("Text Writing Direction"), "DirMenu");
menu->add_separator();
- menu->add_check_item(RTR("Display control characters"), MENU_DISPLAY_UCC);
+ menu->add_check_item(RTR("Display Control Characters"), MENU_DISPLAY_UCC);
menu->set_item_checked(menu->get_item_index(MENU_DISPLAY_UCC), draw_control_chars);
if (editable) {
- menu->add_submenu_item(RTR("Insert control character"), "CTLMenu");
+ menu->add_submenu_item(RTR("Insert Control Character"), "CTLMenu");
}
menu_dir->set_item_checked(menu_dir->get_item_index(MENU_DIR_INHERITED), text_direction == TEXT_DIRECTION_INHERITED);
menu_dir->set_item_checked(menu_dir->get_item_index(MENU_DIR_AUTO), text_direction == TEXT_DIRECTION_AUTO);
@@ -5475,6 +5522,10 @@ void TextEdit::_update_selection_mode_word() {
}
}
+ if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text());
+ }
+
update();
click_select_held->start();
@@ -5502,6 +5553,10 @@ void TextEdit::_update_selection_mode_line() {
set_caret_column(0);
select(selection.selecting_line, selection.selecting_column, line, col);
+ if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
+ DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text());
+ }
+
update();
click_select_held->start();
diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h
index 16c1ee9ff9..8823e44c0d 100644
--- a/scene/gui/text_edit.h
+++ b/scene/gui/text_edit.h
@@ -269,6 +269,7 @@ private:
bool context_menu_enabled = true;
bool shortcut_keys_enabled = true;
bool virtual_keyboard_enabled = true;
+ bool middle_mouse_paste_enabled = true;
// Overridable actions
String cut_copy_line = "";
@@ -586,12 +587,14 @@ protected:
virtual void _cut_internal();
virtual void _copy_internal();
virtual void _paste_internal();
+ virtual void _paste_primary_clipboard_internal();
GDVIRTUAL1(_handle_unicode_input, int)
GDVIRTUAL0(_backspace)
GDVIRTUAL0(_cut)
GDVIRTUAL0(_copy)
GDVIRTUAL0(_paste)
+ GDVIRTUAL0(_paste_primary_clipboard)
public:
/* General overrides. */
@@ -640,6 +643,9 @@ public:
void set_virtual_keyboard_enabled(bool p_enabled);
bool is_virtual_keyboard_enabled() const;
+ void set_middle_mouse_paste_enabled(bool p_enabled);
+ bool is_middle_mouse_paste_enabled() const;
+
// Text manipulation
void clear();
@@ -674,6 +680,7 @@ public:
void cut();
void copy();
void paste();
+ void paste_primary_clipboard();
// Context menu.
PopupMenu *get_menu() const;
diff --git a/scene/gui/texture_progress_bar.cpp b/scene/gui/texture_progress_bar.cpp
index 35a098c6fd..fe11de128a 100644
--- a/scene/gui/texture_progress_bar.cpp
+++ b/scene/gui/texture_progress_bar.cpp
@@ -341,7 +341,11 @@ void TextureProgressBar::draw_nine_patch_stretched(const Ref<Texture2D> &p_textu
} break;
case FILL_BILINEAR_LEFT_AND_RIGHT: {
double center_mapped_from_real_width = (width_total * 0.5 - topleft.x) / max_middle_real_size * max_middle_texture_size + topleft.x;
- double drift_from_unscaled_center = (src_rect.size.x * 0.5 - center_mapped_from_real_width) * (last_section_size - first_section_size) / (bottomright.x - topleft.x);
+ double drift_from_unscaled_center = 0;
+ if (bottomright.y != topleft.y) { // To avoid division by zero.
+ drift_from_unscaled_center = (src_rect.size.x * 0.5 - center_mapped_from_real_width) * (last_section_size - first_section_size) / (bottomright.x - topleft.x);
+ }
+
src_rect.position.x += center_mapped_from_real_width + drift_from_unscaled_center - width_texture * 0.5;
src_rect.size.x = width_texture;
dst_rect.position.x += (width_total - width_filled) * 0.5;
@@ -351,7 +355,11 @@ void TextureProgressBar::draw_nine_patch_stretched(const Ref<Texture2D> &p_textu
} break;
case FILL_BILINEAR_TOP_AND_BOTTOM: {
double center_mapped_from_real_width = (width_total * 0.5 - topleft.y) / max_middle_real_size * max_middle_texture_size + topleft.y;
- double drift_from_unscaled_center = (src_rect.size.y * 0.5 - center_mapped_from_real_width) * (last_section_size - first_section_size) / (bottomright.y - topleft.y);
+ double drift_from_unscaled_center = 0;
+ if (bottomright.y != topleft.y) { // To avoid division by zero.
+ drift_from_unscaled_center = (src_rect.size.y * 0.5 - center_mapped_from_real_width) * (last_section_size - first_section_size) / (bottomright.y - topleft.y);
+ }
+
src_rect.position.y += center_mapped_from_real_width + drift_from_unscaled_center - width_texture * 0.5;
src_rect.size.y = width_texture;
dst_rect.position.y += (width_total - width_filled) * 0.5;
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index 3f041bf65a..992d364464 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -3570,7 +3570,9 @@ int Tree::_get_title_button_height() const {
void Tree::_notification(int p_what) {
if (p_what == NOTIFICATION_FOCUS_ENTER) {
- focus_in_id = get_viewport()->get_processed_events_count();
+ if (get_viewport()) {
+ focus_in_id = get_viewport()->get_processed_events_count();
+ }
}
if (p_what == NOTIFICATION_MOUSE_EXIT) {
if (cache.hover_type != Cache::CLICK_NONE) {
diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp
index 8734037a57..989aabc549 100644
--- a/scene/gui/video_player.cpp
+++ b/scene/gui/video_player.cpp
@@ -29,9 +29,9 @@
/*************************************************************************/
#include "video_player.h"
-#include "scene/scene_string_names.h"
#include "core/os/os.h"
+#include "scene/scene_string_names.h"
#include "servers/audio_server.h"
int VideoPlayer::sp_get_channel_count() const {
@@ -55,7 +55,7 @@ bool VideoPlayer::mix(AudioFrame *p_buffer, int p_frames) {
return false;
}
-// Called from main thread (eg VideoStreamPlaybackWebm::update)
+// Called from main thread (e.g. VideoStreamPlaybackTheora::update).
int VideoPlayer::_audio_mix_callback(void *p_udata, const float *p_data, int p_frames) {
ERR_FAIL_NULL_V(p_udata, 0);
ERR_FAIL_NULL_V(p_data, 0);
diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp
index 4540e42b4c..26bff4494b 100644
--- a/scene/main/canvas_layer.cpp
+++ b/scene/main/canvas_layer.cpp
@@ -128,7 +128,7 @@ void CanvasLayer::_notification(int p_what) {
} else {
vp = Node::get_viewport();
}
- ERR_FAIL_COND(!vp);
+ ERR_FAIL_NULL_MSG(vp, "Viewport is not initialized.");
vp->_canvas_layer_add(this);
viewport = vp->get_viewport_rid();
@@ -140,6 +140,8 @@ void CanvasLayer::_notification(int p_what) {
} break;
case NOTIFICATION_EXIT_TREE: {
+ ERR_FAIL_NULL_MSG(vp, "Viewport is not initialized.");
+
vp->_canvas_layer_remove(this);
RenderingServer::get_singleton()->viewport_remove_canvas(viewport, canvas);
viewport = RID();
@@ -160,6 +162,8 @@ Size2 CanvasLayer::get_viewport_size() const {
return Size2(1, 1);
}
+ ERR_FAIL_NULL_V_MSG(vp, Size2(1, 1), "Viewport is not initialized.");
+
Rect2 r = vp->get_visible_rect();
return r.size;
}
@@ -169,7 +173,7 @@ RID CanvasLayer::get_viewport() const {
}
void CanvasLayer::set_custom_viewport(Node *p_viewport) {
- ERR_FAIL_NULL(p_viewport);
+ ERR_FAIL_NULL_MSG(p_viewport, "Cannot set viewport to nullptr.");
if (is_inside_tree()) {
vp->_canvas_layer_remove(this);
RenderingServer::get_singleton()->viewport_remove_canvas(viewport, canvas);
diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h
index 19331c1906..7a4f9f9c52 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -136,7 +136,6 @@ private:
void _flush_ugc();
_FORCE_INLINE_ void _update_group_order(Group &g, bool p_use_priority = false);
- void _update_listener();
Array _get_nodes_in_group(const StringName &p_group);
@@ -265,9 +264,6 @@ public:
void set_pause(bool p_enabled);
bool is_paused() const;
- void set_camera(const RID &p_camera);
- RID get_camera() const;
-
#ifdef DEBUG_ENABLED
void set_debug_collisions_hint(bool p_enabled);
bool is_debugging_collisions_hint() const;
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 0e62e6e30a..3280190250 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -2192,7 +2192,10 @@ void Viewport::_drop_physics_mouseover(bool p_paused_only) {
if (physics_object_over.is_valid()) {
CollisionObject3D *co = Object::cast_to<CollisionObject3D>(ObjectDB::get_instance(physics_object_over));
if (co) {
- if (!(p_paused_only && co->can_process())) {
+ if (!co->is_inside_tree()) {
+ physics_object_over = ObjectID();
+ physics_object_capture = ObjectID();
+ } else if (!(p_paused_only && co->can_process())) {
co->_mouse_exit();
physics_object_over = ObjectID();
physics_object_capture = ObjectID();
@@ -2213,7 +2216,7 @@ void Viewport::_cleanup_mouseover_colliders(bool p_clean_all_frames, bool p_paus
Object *o = ObjectDB::get_instance(E->key());
if (o) {
CollisionObject2D *co = Object::cast_to<CollisionObject2D>(o);
- if (co) {
+ if (co && co->is_inside_tree()) {
if (p_clean_all_frames && p_paused_only && co->can_process()) {
continue;
}
@@ -2239,7 +2242,7 @@ void Viewport::_cleanup_mouseover_colliders(bool p_clean_all_frames, bool p_paus
Object *o = ObjectDB::get_instance(E->key().first);
if (o) {
CollisionObject2D *co = Object::cast_to<CollisionObject2D>(o);
- if (co) {
+ if (co && co->is_inside_tree()) {
if (p_clean_all_frames && p_paused_only && co->can_process()) {
continue;
}
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index bf8f7291be..33e0e2cad7 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -115,8 +115,8 @@
#include "scene/gui/spin_box.h"
#include "scene/gui/split_container.h"
#include "scene/gui/subviewport_container.h"
+#include "scene/gui/tab_bar.h"
#include "scene/gui/tab_container.h"
-#include "scene/gui/tabs.h"
#include "scene/gui/text_edit.h"
#include "scene/gui/texture_button.h"
#include "scene/gui/texture_progress_bar.h"
@@ -262,7 +262,7 @@ static Ref<ResourceFormatLoaderShader> resource_loader_shader;
void register_scene_types() {
SceneStringNames::create();
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
Node::init_node_hrcr();
@@ -287,7 +287,7 @@ void register_scene_types() {
resource_loader_shader.instantiate();
ResourceLoader::add_resource_format_loader(resource_loader_shader, true);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_CLASS(Object);
@@ -309,7 +309,7 @@ void register_scene_types() {
GDREGISTER_CLASS(ButtonGroup);
GDREGISTER_VIRTUAL_CLASS(BaseButton);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_CLASS(Control);
GDREGISTER_CLASS(Button);
@@ -330,7 +330,7 @@ void register_scene_types() {
GDREGISTER_CLASS(Panel);
GDREGISTER_VIRTUAL_CLASS(Range);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_CLASS(TextureRect);
GDREGISTER_CLASS(ColorRect);
@@ -338,7 +338,7 @@ void register_scene_types() {
GDREGISTER_CLASS(ReferenceRect);
GDREGISTER_CLASS(AspectRatioContainer);
GDREGISTER_CLASS(TabContainer);
- GDREGISTER_CLASS(Tabs);
+ GDREGISTER_CLASS(TabBar);
GDREGISTER_VIRTUAL_CLASS(Separator);
GDREGISTER_CLASS(HSeparator);
GDREGISTER_CLASS(VSeparator);
@@ -352,7 +352,7 @@ void register_scene_types() {
GDREGISTER_CLASS(ScrollContainer);
GDREGISTER_CLASS(PanelContainer);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_CLASS(TextureProgressBar);
GDREGISTER_CLASS(ItemList);
@@ -391,7 +391,7 @@ void register_scene_types() {
GDREGISTER_CLASS(GraphNode);
GDREGISTER_CLASS(GraphEdit);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
bool swap_cancel_ok = false;
if (DisplayServer::get_singleton()) {
@@ -431,9 +431,9 @@ void register_scene_types() {
GDREGISTER_CLASS(AnimationNodeTimeSeek);
GDREGISTER_CLASS(AnimationNodeTransition);
- GDREGISTER_CLASS(ShaderGlobalsOverride); //can be used in any shader
+ GDREGISTER_CLASS(ShaderGlobalsOverride); // can be used in any shader
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
/* REGISTER 3D */
@@ -450,6 +450,7 @@ void register_scene_types() {
GDREGISTER_CLASS(Camera3D);
GDREGISTER_CLASS(AudioListener3D);
GDREGISTER_CLASS(XRCamera3D);
+ GDREGISTER_VIRTUAL_CLASS(XRNode3D);
GDREGISTER_CLASS(XRController3D);
GDREGISTER_CLASS(XRAnchor3D);
GDREGISTER_CLASS(XROrigin3D);
@@ -485,9 +486,9 @@ void register_scene_types() {
GDREGISTER_CLASS(Position3D);
GDREGISTER_CLASS(RootMotionView);
- ClassDB::set_class_enabled("RootMotionView", false); //disabled by default, enabled by editor
+ ClassDB::set_class_enabled("RootMotionView", false); // disabled by default, enabled by editor
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_VIRTUAL_CLASS(CollisionObject3D);
GDREGISTER_VIRTUAL_CLASS(PhysicsBody3D);
@@ -532,7 +533,7 @@ void register_scene_types() {
GDREGISTER_CLASS(NavigationAgent3D);
GDREGISTER_CLASS(NavigationObstacle3D);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
#endif
/* REGISTER SHADER */
@@ -672,7 +673,7 @@ void register_scene_types() {
GDREGISTER_CLASS(OccluderPolygon2D);
GDREGISTER_CLASS(BackBufferCopy);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_CLASS(Camera2D);
GDREGISTER_CLASS(AudioListener2D);
@@ -684,6 +685,7 @@ void register_scene_types() {
GDREGISTER_VIRTUAL_CLASS(TileSetSource);
GDREGISTER_CLASS(TileSetAtlasSource);
GDREGISTER_CLASS(TileSetScenesCollectionSource);
+ GDREGISTER_CLASS(TileMapPattern);
GDREGISTER_CLASS(TileData);
GDREGISTER_CLASS(TileMap);
GDREGISTER_CLASS(ParallaxBackground);
@@ -703,7 +705,7 @@ void register_scene_types() {
GDREGISTER_CLASS(PhysicalBone2D);
GDREGISTER_CLASS(SkeletonModification2DPhysicalBones);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
/* REGISTER RESOURCES */
@@ -744,7 +746,7 @@ void register_scene_types() {
GDREGISTER_CLASS(MeshLibrary);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_VIRTUAL_CLASS(Shape3D);
GDREGISTER_CLASS(SeparationRayShape3D);
@@ -766,7 +768,7 @@ void register_scene_types() {
ClassDB::register_class<SkeletonModification3DTwoBoneIK>();
ClassDB::register_class<SkeletonModification3DStackHolder>();
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_CLASS(VelocityTracker3D);
#endif
@@ -821,7 +823,7 @@ void register_scene_types() {
GDREGISTER_CLASS(BitMap);
GDREGISTER_CLASS(Gradient);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_CLASS(AudioStreamPlayer);
GDREGISTER_CLASS(AudioStreamPlayer2D);
@@ -831,7 +833,7 @@ void register_scene_types() {
GDREGISTER_VIRTUAL_CLASS(VideoStream);
GDREGISTER_CLASS(AudioStreamSample);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_VIRTUAL_CLASS(Shape2D);
GDREGISTER_CLASS(WorldBoundaryShape2D);
@@ -852,13 +854,13 @@ void register_scene_types() {
GDREGISTER_CLASS(NavigationAgent2D);
GDREGISTER_CLASS(NavigationObstacle2D);
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
GDREGISTER_VIRTUAL_CLASS(SceneState);
GDREGISTER_CLASS(PackedScene);
GDREGISTER_CLASS(SceneTree);
- GDREGISTER_VIRTUAL_CLASS(SceneTreeTimer); //sorry, you can't create it
+ GDREGISTER_VIRTUAL_CLASS(SceneTreeTimer); // sorry, you can't create it
#ifndef DISABLE_DEPRECATED
// Dropped in 4.0, near approximation.
@@ -940,10 +942,8 @@ void register_scene_types() {
ClassDB::add_compatibility_class("Path", "Path3D");
ClassDB::add_compatibility_class("PathFollow", "PathFollow3D");
ClassDB::add_compatibility_class("PhysicalBone", "PhysicalBone3D");
- ClassDB::add_compatibility_class("Physics2DDirectBodyStateSW", "PhysicsDirectBodyState2DSW");
ClassDB::add_compatibility_class("Physics2DDirectBodyState", "PhysicsDirectBodyState2D");
ClassDB::add_compatibility_class("Physics2DDirectSpaceState", "PhysicsDirectSpaceState2D");
- ClassDB::add_compatibility_class("Physics2DServerSW", "PhysicsServer2DSW");
ClassDB::add_compatibility_class("Physics2DServer", "PhysicsServer2D");
ClassDB::add_compatibility_class("Physics2DShapeQueryParameters", "PhysicsShapeQueryParameters2D");
ClassDB::add_compatibility_class("Physics2DTestMotionResult", "PhysicsTestMotionResult2D");
@@ -1008,7 +1008,7 @@ void register_scene_types() {
#endif /* DISABLE_DEPRECATED */
- OS::get_singleton()->yield(); //may take time to init
+ OS::get_singleton()->yield(); // may take time to init
for (int i = 0; i < 20; i++) {
GLOBAL_DEF_BASIC(vformat("layer_names/2d_render/layer_%d", i + 1), "");
@@ -1086,7 +1086,7 @@ void unregister_scene_types() {
ResourceLoader::remove_resource_format_loader(resource_loader_shader);
resource_loader_shader.unref();
- //StandardMaterial3D is not initialised when 3D is disabled, so it shouldn't be cleaned up either
+ // StandardMaterial3D is not initialised when 3D is disabled, so it shouldn't be cleaned up either
#ifndef _3D_DISABLED
BaseMaterial3D::finish_shaders();
#endif // _3D_DISABLED
diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp
index b4eec2530b..55d58bf156 100644
--- a/scene/resources/animation.cpp
+++ b/scene/resources/animation.cpp
@@ -43,8 +43,14 @@ bool Animation::_set(const StringName &p_name, const Variant &p_value) {
if (tracks.size() == track && what == "type") {
String type = p_value;
- if (type == "transform" || type == "transform3d") {
- add_track(TYPE_TRANSFORM3D);
+ if (type == "position_3d") {
+ add_track(TYPE_POSITION_3D);
+ } else if (type == "rotation_3d") {
+ add_track(TYPE_ROTATION_3D);
+ } else if (type == "scale_3d") {
+ add_track(TYPE_SCALE_3D);
+ } else if (type == "blend_shape") {
+ add_track(TYPE_BLEND_SHAPE);
} else if (type == "value") {
add_track(TYPE_VALUE);
} else if (type == "method") {
@@ -75,35 +81,91 @@ bool Animation::_set(const StringName &p_name, const Variant &p_value) {
} else if (what == "enabled") {
track_set_enabled(track, p_value);
} else if (what == "keys" || what == "key_values") {
- if (track_get_type(track) == TYPE_TRANSFORM3D) {
- TransformTrack *tt = static_cast<TransformTrack *>(tracks[track]);
+ if (track_get_type(track) == TYPE_POSITION_3D) {
+ PositionTrack *tt = static_cast<PositionTrack *>(tracks[track]);
Vector<real_t> values = p_value;
int vcount = values.size();
- ERR_FAIL_COND_V(vcount % TRANSFORM_TRACK_SIZE, false);
+ ERR_FAIL_COND_V(vcount % POSITION_TRACK_SIZE, false);
const real_t *r = values.ptr();
- int64_t count = vcount / TRANSFORM_TRACK_SIZE;
- tt->transforms.resize(count);
+ int64_t count = vcount / POSITION_TRACK_SIZE;
+ tt->positions.resize(count);
+ TKey<Vector3> *tw = tt->positions.ptrw();
for (int i = 0; i < count; i++) {
- TKey<TransformKey> &tk = tt->transforms.write[i];
- const real_t *ofs = &r[i * TRANSFORM_TRACK_SIZE];
+ TKey<Vector3> &tk = tw[i];
+ const real_t *ofs = &r[i * POSITION_TRACK_SIZE];
tk.time = ofs[0];
tk.transition = ofs[1];
- tk.value.loc.x = ofs[2];
- tk.value.loc.y = ofs[3];
- tk.value.loc.z = ofs[4];
+ tk.value.x = ofs[2];
+ tk.value.y = ofs[3];
+ tk.value.z = ofs[4];
+ }
+ } else if (track_get_type(track) == TYPE_ROTATION_3D) {
+ RotationTrack *rt = static_cast<RotationTrack *>(tracks[track]);
+ Vector<real_t> values = p_value;
+ int vcount = values.size();
+ ERR_FAIL_COND_V(vcount % ROTATION_TRACK_SIZE, false);
+
+ const real_t *r = values.ptr();
+
+ int64_t count = vcount / ROTATION_TRACK_SIZE;
+ rt->rotations.resize(count);
+
+ TKey<Quaternion> *rw = rt->rotations.ptrw();
+ for (int i = 0; i < count; i++) {
+ TKey<Quaternion> &rk = rw[i];
+ const real_t *ofs = &r[i * ROTATION_TRACK_SIZE];
+ rk.time = ofs[0];
+ rk.transition = ofs[1];
+
+ rk.value.x = ofs[2];
+ rk.value.y = ofs[3];
+ rk.value.z = ofs[4];
+ rk.value.w = ofs[5];
+ }
+ } else if (track_get_type(track) == TYPE_SCALE_3D) {
+ ScaleTrack *st = static_cast<ScaleTrack *>(tracks[track]);
+ Vector<real_t> values = p_value;
+ int vcount = values.size();
+ ERR_FAIL_COND_V(vcount % SCALE_TRACK_SIZE, false);
+
+ const real_t *r = values.ptr();
+
+ int64_t count = vcount / SCALE_TRACK_SIZE;
+ st->scales.resize(count);
- tk.value.rot.x = ofs[5];
- tk.value.rot.y = ofs[6];
- tk.value.rot.z = ofs[7];
- tk.value.rot.w = ofs[8];
+ TKey<Vector3> *sw = st->scales.ptrw();
+ for (int i = 0; i < count; i++) {
+ TKey<Vector3> &sk = sw[i];
+ const real_t *ofs = &r[i * SCALE_TRACK_SIZE];
+ sk.time = ofs[0];
+ sk.transition = ofs[1];
+
+ sk.value.x = ofs[2];
+ sk.value.y = ofs[3];
+ sk.value.z = ofs[4];
+ }
+ } else if (track_get_type(track) == TYPE_BLEND_SHAPE) {
+ BlendShapeTrack *st = static_cast<BlendShapeTrack *>(tracks[track]);
+ Vector<real_t> values = p_value;
+ int vcount = values.size();
+ ERR_FAIL_COND_V(vcount % BLEND_SHAPE_TRACK_SIZE, false);
+
+ const real_t *r = values.ptr();
+
+ int64_t count = vcount / BLEND_SHAPE_TRACK_SIZE;
+ st->blend_shapes.resize(count);
- tk.value.scale.x = ofs[9];
- tk.value.scale.y = ofs[10];
- tk.value.scale.z = ofs[11];
+ TKey<float> *sw = st->blend_shapes.ptrw();
+ for (int i = 0; i < count; i++) {
+ TKey<float> &sk = sw[i];
+ const real_t *ofs = &r[i * BLEND_SHAPE_TRACK_SIZE];
+ sk.time = ofs[0];
+ sk.transition = ofs[1];
+ sk.value = ofs[2];
}
} else if (track_get_type(track) == TYPE_VALUE) {
@@ -319,8 +381,17 @@ bool Animation::_get(const StringName &p_name, Variant &r_ret) const {
ERR_FAIL_INDEX_V(track, tracks.size(), false);
if (what == "type") {
switch (track_get_type(track)) {
- case TYPE_TRANSFORM3D:
- r_ret = "transform";
+ case TYPE_POSITION_3D:
+ r_ret = "position_3d";
+ break;
+ case TYPE_ROTATION_3D:
+ r_ret = "rotation_3d";
+ break;
+ case TYPE_SCALE_3D:
+ r_ret = "scale_3d";
+ break;
+ case TYPE_BLEND_SHAPE:
+ r_ret = "blend_shape";
break;
case TYPE_VALUE:
r_ret = "value";
@@ -352,31 +423,64 @@ bool Animation::_get(const StringName &p_name, Variant &r_ret) const {
} else if (what == "enabled") {
r_ret = track_is_enabled(track);
} else if (what == "keys") {
- if (track_get_type(track) == TYPE_TRANSFORM3D) {
+ if (track_get_type(track) == TYPE_POSITION_3D) {
Vector<real_t> keys;
int kk = track_get_key_count(track);
- keys.resize(kk * TRANSFORM_TRACK_SIZE);
+ keys.resize(kk * POSITION_TRACK_SIZE);
real_t *w = keys.ptrw();
int idx = 0;
for (int i = 0; i < track_get_key_count(track); i++) {
Vector3 loc;
- Quaternion rot;
- Vector3 scale;
- transform_track_get_key(track, i, &loc, &rot, &scale);
+ position_track_get_key(track, i, &loc);
w[idx++] = track_get_key_time(track, i);
w[idx++] = track_get_key_transition(track, i);
w[idx++] = loc.x;
w[idx++] = loc.y;
w[idx++] = loc.z;
+ }
+ r_ret = keys;
+ return true;
+ } else if (track_get_type(track) == TYPE_ROTATION_3D) {
+ Vector<real_t> keys;
+ int kk = track_get_key_count(track);
+ keys.resize(kk * ROTATION_TRACK_SIZE);
+
+ real_t *w = keys.ptrw();
+
+ int idx = 0;
+ for (int i = 0; i < track_get_key_count(track); i++) {
+ Quaternion rot;
+ rotation_track_get_key(track, i, &rot);
+
+ w[idx++] = track_get_key_time(track, i);
+ w[idx++] = track_get_key_transition(track, i);
w[idx++] = rot.x;
w[idx++] = rot.y;
w[idx++] = rot.z;
w[idx++] = rot.w;
+ }
+ r_ret = keys;
+ return true;
+
+ } else if (track_get_type(track) == TYPE_SCALE_3D) {
+ Vector<real_t> keys;
+ int kk = track_get_key_count(track);
+ keys.resize(kk * SCALE_TRACK_SIZE);
+
+ real_t *w = keys.ptrw();
+
+ int idx = 0;
+ for (int i = 0; i < track_get_key_count(track); i++) {
+ Vector3 scale;
+ scale_track_get_key(track, i, &scale);
+
+ w[idx++] = track_get_key_time(track, i);
+ w[idx++] = track_get_key_transition(track, i);
w[idx++] = scale.x;
w[idx++] = scale.y;
w[idx++] = scale.z;
@@ -384,7 +488,25 @@ bool Animation::_get(const StringName &p_name, Variant &r_ret) const {
r_ret = keys;
return true;
+ } else if (track_get_type(track) == TYPE_BLEND_SHAPE) {
+ Vector<real_t> keys;
+ int kk = track_get_key_count(track);
+ keys.resize(kk * BLEND_SHAPE_TRACK_SIZE);
+
+ real_t *w = keys.ptrw();
+
+ int idx = 0;
+ for (int i = 0; i < track_get_key_count(track); i++) {
+ float bs;
+ blend_shape_track_get_key(track, i, &bs);
+ w[idx++] = track_get_key_time(track, i);
+ w[idx++] = track_get_key_transition(track, i);
+ w[idx++] = bs;
+ }
+
+ r_ret = keys;
+ return true;
} else if (track_get_type(track) == TYPE_VALUE) {
const ValueTrack *vt = static_cast<const ValueTrack *>(tracks[track]);
@@ -591,10 +713,22 @@ int Animation::add_track(TrackType p_type, int p_at_pos) {
}
switch (p_type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = memnew(TransformTrack);
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = memnew(PositionTrack);
tracks.insert(p_at_pos, tt);
} break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = memnew(RotationTrack);
+ tracks.insert(p_at_pos, rt);
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = memnew(ScaleTrack);
+ tracks.insert(p_at_pos, st);
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = memnew(BlendShapeTrack);
+ tracks.insert(p_at_pos, bst);
+ } break;
case TYPE_VALUE: {
tracks.insert(p_at_pos, memnew(ValueTrack));
@@ -629,9 +763,24 @@ void Animation::remove_track(int p_track) {
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- _clear(tt->transforms);
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ _clear(tt->positions);
+
+ } break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ _clear(rt->rotations);
+
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ _clear(st->scales);
+
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ _clear(bst->blend_shapes);
} break;
case TYPE_VALUE: {
@@ -672,7 +821,7 @@ int Animation::get_track_count() const {
}
Animation::TrackType Animation::track_get_type(int p_track) const {
- ERR_FAIL_INDEX_V(p_track, tracks.size(), TYPE_TRANSFORM3D);
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), TYPE_VALUE);
return tracks[p_track]->type;
}
@@ -688,9 +837,9 @@ NodePath Animation::track_get_path(int p_track) const {
return tracks[p_track]->path;
}
-int Animation::find_track(const NodePath &p_path) const {
+int Animation::find_track(const NodePath &p_path, const TrackType p_type) const {
for (int i = 0; i < tracks.size(); i++) {
- if (tracks[i]->path == p_path) {
+ if (tracks[i]->path == p_path && tracks[i]->type == p_type) {
return i;
}
};
@@ -720,31 +869,6 @@ bool Animation::track_get_interpolation_loop_wrap(int p_track) const {
return tracks[p_track]->loop_wrap;
}
-// transform
-/*
-template<class T>
-int Animation::_insert_pos(double p_time, T& p_keys) {
- // simple, linear time inset that should be fast enough in reality.
-
- int idx=p_keys.size();
-
- while(true) {
-
-
- if (idx==0 || p_keys[idx-1].time < p_time) {
- //condition for insertion.
- p_keys.insert(idx,T());
- return idx;
- } else if (p_keys[idx-1].time == p_time) {
- // condition for replacing.
- return idx-1;
- }
-
- idx--;
- }
-}
-
-*/
template <class T, class V>
int Animation::_insert(double p_time, T &p_keys, const V &p_value) {
int idx = p_keys.size();
@@ -774,45 +898,200 @@ void Animation::_clear(T &p_keys) {
p_keys.clear();
}
-Error Animation::transform_track_get_key(int p_track, int p_key, Vector3 *r_loc, Quaternion *r_rot, Vector3 *r_scale) const {
+////
+
+int Animation::position_track_insert_key(int p_track, double p_time, const Vector3 &p_position) {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), -1);
+ Track *t = tracks[p_track];
+ ERR_FAIL_COND_V(t->type != TYPE_POSITION_3D, -1);
+
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+
+ TKey<Vector3> tkey;
+ tkey.time = p_time;
+ tkey.value = p_position;
+
+ int ret = _insert(p_time, tt->positions, tkey);
+ emit_changed();
+ return ret;
+}
+
+Error Animation::position_track_get_key(int p_track, int p_key, Vector3 *r_position) const {
ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
Track *t = tracks[p_track];
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- ERR_FAIL_COND_V(t->type != TYPE_TRANSFORM3D, ERR_INVALID_PARAMETER);
- ERR_FAIL_INDEX_V(p_key, tt->transforms.size(), ERR_INVALID_PARAMETER);
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ ERR_FAIL_COND_V(t->type != TYPE_POSITION_3D, ERR_INVALID_PARAMETER);
+ ERR_FAIL_INDEX_V(p_key, tt->positions.size(), ERR_INVALID_PARAMETER);
- if (r_loc) {
- *r_loc = tt->transforms[p_key].value.loc;
- }
- if (r_rot) {
- *r_rot = tt->transforms[p_key].value.rot;
+ *r_position = tt->positions[p_key].value;
+
+ return OK;
+}
+
+Error Animation::position_track_interpolate(int p_track, double p_time, Vector3 *r_interpolation) const {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
+ Track *t = tracks[p_track];
+ ERR_FAIL_COND_V(t->type != TYPE_POSITION_3D, ERR_INVALID_PARAMETER);
+
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+
+ bool ok = false;
+
+ Vector3 tk = _interpolate(tt->positions, p_time, tt->interpolation, tt->loop_wrap, &ok);
+
+ if (!ok) {
+ return ERR_UNAVAILABLE;
}
- if (r_scale) {
- *r_scale = tt->transforms[p_key].value.scale;
+ *r_interpolation = tk;
+ return OK;
+}
+
+////
+
+int Animation::rotation_track_insert_key(int p_track, double p_time, const Quaternion &p_rotation) {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), -1);
+ Track *t = tracks[p_track];
+ ERR_FAIL_COND_V(t->type != TYPE_ROTATION_3D, -1);
+
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+
+ TKey<Quaternion> tkey;
+ tkey.time = p_time;
+ tkey.value = p_rotation;
+
+ int ret = _insert(p_time, rt->rotations, tkey);
+ emit_changed();
+ return ret;
+}
+
+Error Animation::rotation_track_get_key(int p_track, int p_key, Quaternion *r_rotation) const {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
+ Track *t = tracks[p_track];
+
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ ERR_FAIL_COND_V(t->type != TYPE_ROTATION_3D, ERR_INVALID_PARAMETER);
+ ERR_FAIL_INDEX_V(p_key, rt->rotations.size(), ERR_INVALID_PARAMETER);
+
+ *r_rotation = rt->rotations[p_key].value;
+
+ return OK;
+}
+
+Error Animation::rotation_track_interpolate(int p_track, double p_time, Quaternion *r_interpolation) const {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
+ Track *t = tracks[p_track];
+ ERR_FAIL_COND_V(t->type != TYPE_ROTATION_3D, ERR_INVALID_PARAMETER);
+
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+
+ bool ok = false;
+
+ Quaternion tk = _interpolate(rt->rotations, p_time, rt->interpolation, rt->loop_wrap, &ok);
+
+ if (!ok) {
+ return ERR_UNAVAILABLE;
}
+ *r_interpolation = tk;
+ return OK;
+}
+
+////
+
+int Animation::scale_track_insert_key(int p_track, double p_time, const Vector3 &p_scale) {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), -1);
+ Track *t = tracks[p_track];
+ ERR_FAIL_COND_V(t->type != TYPE_SCALE_3D, -1);
+
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+
+ TKey<Vector3> tkey;
+ tkey.time = p_time;
+ tkey.value = p_scale;
+
+ int ret = _insert(p_time, st->scales, tkey);
+ emit_changed();
+ return ret;
+}
+
+Error Animation::scale_track_get_key(int p_track, int p_key, Vector3 *r_scale) const {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
+ Track *t = tracks[p_track];
+
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ ERR_FAIL_COND_V(t->type != TYPE_SCALE_3D, ERR_INVALID_PARAMETER);
+ ERR_FAIL_INDEX_V(p_key, st->scales.size(), ERR_INVALID_PARAMETER);
+
+ *r_scale = st->scales[p_key].value;
+
+ return OK;
+}
+
+Error Animation::scale_track_interpolate(int p_track, double p_time, Vector3 *r_interpolation) const {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
+ Track *t = tracks[p_track];
+ ERR_FAIL_COND_V(t->type != TYPE_SCALE_3D, ERR_INVALID_PARAMETER);
+
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+
+ bool ok = false;
+ Vector3 tk = _interpolate(st->scales, p_time, st->interpolation, st->loop_wrap, &ok);
+
+ if (!ok) {
+ return ERR_UNAVAILABLE;
+ }
+ *r_interpolation = tk;
return OK;
}
-int Animation::transform_track_insert_key(int p_track, double p_time, const Vector3 &p_loc, const Quaternion &p_rot, const Vector3 &p_scale) {
+int Animation::blend_shape_track_insert_key(int p_track, double p_time, float p_blend_shape) {
ERR_FAIL_INDEX_V(p_track, tracks.size(), -1);
Track *t = tracks[p_track];
- ERR_FAIL_COND_V(t->type != TYPE_TRANSFORM3D, -1);
+ ERR_FAIL_COND_V(t->type != TYPE_BLEND_SHAPE, -1);
- TransformTrack *tt = static_cast<TransformTrack *>(t);
+ BlendShapeTrack *st = static_cast<BlendShapeTrack *>(t);
- TKey<TransformKey> tkey;
+ TKey<float> tkey;
tkey.time = p_time;
- tkey.value.loc = p_loc;
- tkey.value.rot = p_rot;
- tkey.value.scale = p_scale;
+ tkey.value = p_blend_shape;
- int ret = _insert(p_time, tt->transforms, tkey);
+ int ret = _insert(p_time, st->blend_shapes, tkey);
emit_changed();
return ret;
}
+Error Animation::blend_shape_track_get_key(int p_track, int p_key, float *r_blend_shape) const {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
+ Track *t = tracks[p_track];
+
+ BlendShapeTrack *st = static_cast<BlendShapeTrack *>(t);
+ ERR_FAIL_COND_V(t->type != TYPE_BLEND_SHAPE, ERR_INVALID_PARAMETER);
+ ERR_FAIL_INDEX_V(p_key, st->blend_shapes.size(), ERR_INVALID_PARAMETER);
+
+ *r_blend_shape = st->blend_shapes[p_key].value;
+
+ return OK;
+}
+
+Error Animation::blend_shape_track_interpolate(int p_track, double p_time, float *r_interpolation) const {
+ ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
+ Track *t = tracks[p_track];
+ ERR_FAIL_COND_V(t->type != TYPE_BLEND_SHAPE, ERR_INVALID_PARAMETER);
+
+ BlendShapeTrack *st = static_cast<BlendShapeTrack *>(t);
+
+ bool ok = false;
+
+ float tk = _interpolate(st->blend_shapes, p_time, st->interpolation, st->loop_wrap, &ok);
+
+ if (!ok) {
+ return ERR_UNAVAILABLE;
+ }
+ *r_interpolation = tk;
+ return OK;
+}
+
void Animation::track_remove_key_at_time(int p_track, double p_time) {
int idx = track_find_key(p_track, p_time, true);
ERR_FAIL_COND(idx < 0);
@@ -824,10 +1103,28 @@ void Animation::track_remove_key(int p_track, int p_idx) {
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- ERR_FAIL_INDEX(p_idx, tt->transforms.size());
- tt->transforms.remove(p_idx);
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ ERR_FAIL_INDEX(p_idx, tt->positions.size());
+ tt->positions.remove(p_idx);
+
+ } break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ ERR_FAIL_INDEX(p_idx, rt->rotations.size());
+ rt->rotations.remove(p_idx);
+
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ ERR_FAIL_INDEX(p_idx, st->scales.size());
+ st->scales.remove(p_idx);
+
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ ERR_FAIL_INDEX(p_idx, bst->blend_shapes.size());
+ bst->blend_shapes.remove(p_idx);
} break;
case TYPE_VALUE: {
@@ -870,13 +1167,49 @@ int Animation::track_find_key(int p_track, double p_time, bool p_exact) const {
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- int k = _find(tt->transforms, p_time);
- if (k < 0 || k >= tt->transforms.size()) {
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ int k = _find(tt->positions, p_time);
+ if (k < 0 || k >= tt->positions.size()) {
+ return -1;
+ }
+ if (tt->positions[k].time != p_time && p_exact) {
+ return -1;
+ }
+ return k;
+
+ } break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ int k = _find(rt->rotations, p_time);
+ if (k < 0 || k >= rt->rotations.size()) {
+ return -1;
+ }
+ if (rt->rotations[k].time != p_time && p_exact) {
+ return -1;
+ }
+ return k;
+
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ int k = _find(st->scales, p_time);
+ if (k < 0 || k >= st->scales.size()) {
+ return -1;
+ }
+ if (st->scales[k].time != p_time && p_exact) {
+ return -1;
+ }
+ return k;
+
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ int k = _find(bst->blend_shapes, p_time);
+ if (k < 0 || k >= bst->blend_shapes.size()) {
return -1;
}
- if (tt->transforms[k].time != p_time && p_exact) {
+ if (bst->blend_shapes[k].time != p_time && p_exact) {
return -1;
}
return k;
@@ -952,24 +1285,27 @@ void Animation::track_insert_key(int p_track, double p_time, const Variant &p_ke
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- Dictionary d = p_key;
- Vector3 loc;
- if (d.has("location")) {
- loc = d["location"];
- }
+ case TYPE_POSITION_3D: {
+ ERR_FAIL_COND((p_key.get_type() != Variant::VECTOR3) && (p_key.get_type() != Variant::VECTOR3I));
+ int idx = position_track_insert_key(p_track, p_time, p_key);
+ track_set_key_transition(p_track, idx, p_transition);
- Quaternion rot;
- if (d.has("rotation")) {
- rot = d["rotation"];
- }
+ } break;
+ case TYPE_ROTATION_3D: {
+ ERR_FAIL_COND((p_key.get_type() != Variant::QUATERNION) && (p_key.get_type() != Variant::BASIS));
+ int idx = rotation_track_insert_key(p_track, p_time, p_key);
+ track_set_key_transition(p_track, idx, p_transition);
- Vector3 scale;
- if (d.has("scale")) {
- scale = d["scale"];
- }
+ } break;
+ case TYPE_SCALE_3D: {
+ ERR_FAIL_COND((p_key.get_type() != Variant::VECTOR3) && (p_key.get_type() != Variant::VECTOR3I));
+ int idx = scale_track_insert_key(p_track, p_time, p_key);
+ track_set_key_transition(p_track, idx, p_transition);
- int idx = transform_track_insert_key(p_track, p_time, loc, rot, scale);
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ ERR_FAIL_COND((p_key.get_type() != Variant::FLOAT) && (p_key.get_type() != Variant::INT));
+ int idx = blend_shape_track_insert_key(p_track, p_time, p_key);
track_set_key_transition(p_track, idx, p_transition);
} break;
@@ -1054,9 +1390,21 @@ int Animation::track_get_key_count(int p_track) const {
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- return tt->transforms.size();
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ return tt->positions.size();
+ } break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ return rt->rotations.size();
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ return st->scales.size();
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ return bst->blend_shapes.size();
} break;
case TYPE_VALUE: {
ValueTrack *vt = static_cast<ValueTrack *>(t);
@@ -1089,16 +1437,29 @@ Variant Animation::track_get_key_value(int p_track, int p_key_idx) const {
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- ERR_FAIL_INDEX_V(p_key_idx, tt->transforms.size(), Variant());
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, tt->positions.size(), Variant());
- Dictionary d;
- d["location"] = tt->transforms[p_key_idx].value.loc;
- d["rotation"] = tt->transforms[p_key_idx].value.rot;
- d["scale"] = tt->transforms[p_key_idx].value.scale;
+ return tt->positions[p_key_idx].value;
+ } break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, rt->rotations.size(), Variant());
- return d;
+ return rt->rotations[p_key_idx].value;
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, st->scales.size(), Variant());
+
+ return st->scales[p_key_idx].value;
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, bst->blend_shapes.size(), Variant());
+
+ return bst->blend_shapes[p_key_idx].value;
} break;
case TYPE_VALUE: {
ValueTrack *vt = static_cast<ValueTrack *>(t);
@@ -1157,10 +1518,25 @@ double Animation::track_get_key_time(int p_track, int p_key_idx) const {
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- ERR_FAIL_INDEX_V(p_key_idx, tt->transforms.size(), -1);
- return tt->transforms[p_key_idx].time;
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, tt->positions.size(), -1);
+ return tt->positions[p_key_idx].time;
+ } break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, rt->rotations.size(), -1);
+ return rt->rotations[p_key_idx].time;
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, st->scales.size(), -1);
+ return st->scales[p_key_idx].time;
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, bst->blend_shapes.size(), -1);
+ return bst->blend_shapes[p_key_idx].time;
} break;
case TYPE_VALUE: {
ValueTrack *vt = static_cast<ValueTrack *>(t);
@@ -1202,13 +1578,40 @@ void Animation::track_set_key_time(int p_track, int p_key_idx, double p_time) {
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- ERR_FAIL_INDEX(p_key_idx, tt->transforms.size());
- TKey<TransformKey> key = tt->transforms[p_key_idx];
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, tt->positions.size());
+ TKey<Vector3> key = tt->positions[p_key_idx];
+ key.time = p_time;
+ tt->positions.remove(p_key_idx);
+ _insert(p_time, tt->positions, key);
+ return;
+ }
+ case TYPE_ROTATION_3D: {
+ RotationTrack *tt = static_cast<RotationTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, tt->rotations.size());
+ TKey<Quaternion> key = tt->rotations[p_key_idx];
+ key.time = p_time;
+ tt->rotations.remove(p_key_idx);
+ _insert(p_time, tt->rotations, key);
+ return;
+ }
+ case TYPE_SCALE_3D: {
+ ScaleTrack *tt = static_cast<ScaleTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, tt->scales.size());
+ TKey<Vector3> key = tt->scales[p_key_idx];
key.time = p_time;
- tt->transforms.remove(p_key_idx);
- _insert(p_time, tt->transforms, key);
+ tt->scales.remove(p_key_idx);
+ _insert(p_time, tt->scales, key);
+ return;
+ }
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *tt = static_cast<BlendShapeTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, tt->blend_shapes.size());
+ TKey<float> key = tt->blend_shapes[p_key_idx];
+ key.time = p_time;
+ tt->blend_shapes.remove(p_key_idx);
+ _insert(p_time, tt->blend_shapes, key);
return;
}
case TYPE_VALUE: {
@@ -1266,10 +1669,25 @@ real_t Animation::track_get_key_transition(int p_track, int p_key_idx) const {
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- ERR_FAIL_INDEX_V(p_key_idx, tt->transforms.size(), -1);
- return tt->transforms[p_key_idx].transition;
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, tt->positions.size(), -1);
+ return tt->positions[p_key_idx].transition;
+ } break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, rt->rotations.size(), -1);
+ return rt->rotations[p_key_idx].transition;
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, st->scales.size(), -1);
+ return st->scales[p_key_idx].transition;
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ ERR_FAIL_INDEX_V(p_key_idx, bst->blend_shapes.size(), -1);
+ return bst->blend_shapes[p_key_idx].transition;
} break;
case TYPE_VALUE: {
ValueTrack *vt = static_cast<ValueTrack *>(t);
@@ -1302,21 +1720,36 @@ void Animation::track_set_key_value(int p_track, int p_key_idx, const Variant &p
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- ERR_FAIL_INDEX(p_key_idx, tt->transforms.size());
+ case TYPE_POSITION_3D: {
+ ERR_FAIL_COND((p_value.get_type() != Variant::VECTOR3) && (p_value.get_type() != Variant::VECTOR3I));
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, tt->positions.size());
- Dictionary d = p_value;
+ tt->positions.write[p_key_idx].value = p_value;
- if (d.has("location")) {
- tt->transforms.write[p_key_idx].value.loc = d["location"];
- }
- if (d.has("rotation")) {
- tt->transforms.write[p_key_idx].value.rot = d["rotation"];
- }
- if (d.has("scale")) {
- tt->transforms.write[p_key_idx].value.scale = d["scale"];
- }
+ } break;
+ case TYPE_ROTATION_3D: {
+ ERR_FAIL_COND((p_value.get_type() != Variant::QUATERNION) && (p_value.get_type() != Variant::BASIS));
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, rt->rotations.size());
+
+ rt->rotations.write[p_key_idx].value = p_value;
+
+ } break;
+ case TYPE_SCALE_3D: {
+ ERR_FAIL_COND((p_value.get_type() != Variant::VECTOR3) && (p_value.get_type() != Variant::VECTOR3I));
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, st->scales.size());
+
+ st->scales.write[p_key_idx].value = p_value;
+
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ ERR_FAIL_COND((p_value.get_type() != Variant::FLOAT) && (p_value.get_type() != Variant::INT));
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, bst->blend_shapes.size());
+
+ bst->blend_shapes.write[p_key_idx].value = p_value;
} break;
case TYPE_VALUE: {
@@ -1385,10 +1818,25 @@ void Animation::track_set_key_transition(int p_track, int p_key_idx, real_t p_tr
Track *t = tracks[p_track];
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- TransformTrack *tt = static_cast<TransformTrack *>(t);
- ERR_FAIL_INDEX(p_key_idx, tt->transforms.size());
- tt->transforms.write[p_key_idx].transition = p_transition;
+ case TYPE_POSITION_3D: {
+ PositionTrack *tt = static_cast<PositionTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, tt->positions.size());
+ tt->positions.write[p_key_idx].transition = p_transition;
+ } break;
+ case TYPE_ROTATION_3D: {
+ RotationTrack *rt = static_cast<RotationTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, rt->rotations.size());
+ rt->rotations.write[p_key_idx].transition = p_transition;
+ } break;
+ case TYPE_SCALE_3D: {
+ ScaleTrack *st = static_cast<ScaleTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, st->scales.size());
+ st->scales.write[p_key_idx].transition = p_transition;
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ BlendShapeTrack *bst = static_cast<BlendShapeTrack *>(t);
+ ERR_FAIL_INDEX(p_key_idx, bst->blend_shapes.size());
+ bst->blend_shapes.write[p_key_idx].transition = p_transition;
} break;
case TYPE_VALUE: {
ValueTrack *vt = static_cast<ValueTrack *>(t);
@@ -1450,15 +1898,6 @@ int Animation::_find(const Vector<K> &p_keys, double p_time) const {
return middle;
}
-Animation::TransformKey Animation::_interpolate(const Animation::TransformKey &p_a, const Animation::TransformKey &p_b, real_t p_c) const {
- TransformKey ret;
- ret.loc = _interpolate(p_a.loc, p_b.loc, p_c);
- ret.rot = _interpolate(p_a.rot, p_b.rot, p_c);
- ret.scale = _interpolate(p_a.scale, p_b.scale, p_c);
-
- return ret;
-}
-
Vector3 Animation::_interpolate(const Vector3 &p_a, const Vector3 &p_b, real_t p_c) const {
return p_a.lerp(p_b, p_c);
}
@@ -1477,16 +1916,6 @@ real_t Animation::_interpolate(const real_t &p_a, const real_t &p_b, real_t p_c)
return p_a * (1.0 - p_c) + p_b * p_c;
}
-Animation::TransformKey Animation::_cubic_interpolate(const Animation::TransformKey &p_pre_a, const Animation::TransformKey &p_a, const Animation::TransformKey &p_b, const Animation::TransformKey &p_post_b, real_t p_c) const {
- Animation::TransformKey tk;
-
- tk.loc = p_a.loc.cubic_interpolate(p_b.loc, p_pre_a.loc, p_post_b.loc, p_c);
- tk.scale = p_a.scale.cubic_interpolate(p_b.scale, p_pre_a.scale, p_post_b.scale, p_c);
- tk.rot = p_a.rot.cubic_slerp(p_b.rot, p_pre_a.rot, p_post_b.rot, p_c);
-
- return tk;
-}
-
Vector3 Animation::_cubic_interpolate(const Vector3 &p_pre_a, const Vector3 &p_a, const Vector3 &p_b, const Vector3 &p_post_b, real_t p_c) const {
return p_a.cubic_interpolate(p_b, p_pre_a, p_post_b, p_c);
}
@@ -1729,36 +2158,6 @@ T Animation::_interpolate(const Vector<TKey<T>> &p_keys, double p_time, Interpol
// do a barrel roll
}
-Error Animation::transform_track_interpolate(int p_track, double p_time, Vector3 *r_loc, Quaternion *r_rot, Vector3 *r_scale) const {
- ERR_FAIL_INDEX_V(p_track, tracks.size(), ERR_INVALID_PARAMETER);
- Track *t = tracks[p_track];
- ERR_FAIL_COND_V(t->type != TYPE_TRANSFORM3D, ERR_INVALID_PARAMETER);
-
- TransformTrack *tt = static_cast<TransformTrack *>(t);
-
- bool ok = false;
-
- TransformKey tk = _interpolate(tt->transforms, p_time, tt->interpolation, tt->loop_wrap, &ok);
-
- if (!ok) {
- return ERR_UNAVAILABLE;
- }
-
- if (r_loc) {
- *r_loc = tk.loc;
- }
-
- if (r_rot) {
- *r_rot = tk.rot;
- }
-
- if (r_scale) {
- *r_scale = tk.scale;
- }
-
- return OK;
-}
-
Variant Animation::value_track_interpolate(int p_track, double p_time) const {
ERR_FAIL_INDEX_V(p_track, tracks.size(), 0);
Track *t = tracks[p_track];
@@ -1933,10 +2332,28 @@ void Animation::track_get_key_indices_in_range(int p_track, double p_time, doubl
// handle loop by splitting
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- const TransformTrack *tt = static_cast<const TransformTrack *>(t);
- _track_get_key_indices_in_range(tt->transforms, from_time, length, p_indices);
- _track_get_key_indices_in_range(tt->transforms, 0, to_time, p_indices);
+ case TYPE_POSITION_3D: {
+ const PositionTrack *tt = static_cast<const PositionTrack *>(t);
+ _track_get_key_indices_in_range(tt->positions, from_time, length, p_indices);
+ _track_get_key_indices_in_range(tt->positions, 0, to_time, p_indices);
+
+ } break;
+ case TYPE_ROTATION_3D: {
+ const RotationTrack *rt = static_cast<const RotationTrack *>(t);
+ _track_get_key_indices_in_range(rt->rotations, from_time, length, p_indices);
+ _track_get_key_indices_in_range(rt->rotations, 0, to_time, p_indices);
+
+ } break;
+ case TYPE_SCALE_3D: {
+ const ScaleTrack *st = static_cast<const ScaleTrack *>(t);
+ _track_get_key_indices_in_range(st->scales, from_time, length, p_indices);
+ _track_get_key_indices_in_range(st->scales, 0, to_time, p_indices);
+
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ const BlendShapeTrack *bst = static_cast<const BlendShapeTrack *>(t);
+ _track_get_key_indices_in_range(bst->blend_shapes, from_time, length, p_indices);
+ _track_get_key_indices_in_range(bst->blend_shapes, 0, to_time, p_indices);
} break;
case TYPE_VALUE: {
@@ -1989,9 +2406,24 @@ void Animation::track_get_key_indices_in_range(int p_track, double p_time, doubl
}
switch (t->type) {
- case TYPE_TRANSFORM3D: {
- const TransformTrack *tt = static_cast<const TransformTrack *>(t);
- _track_get_key_indices_in_range(tt->transforms, from_time, to_time, p_indices);
+ case TYPE_POSITION_3D: {
+ const PositionTrack *tt = static_cast<const PositionTrack *>(t);
+ _track_get_key_indices_in_range(tt->positions, from_time, to_time, p_indices);
+
+ } break;
+ case TYPE_ROTATION_3D: {
+ const RotationTrack *rt = static_cast<const RotationTrack *>(t);
+ _track_get_key_indices_in_range(rt->rotations, from_time, to_time, p_indices);
+
+ } break;
+ case TYPE_SCALE_3D: {
+ const ScaleTrack *st = static_cast<const ScaleTrack *>(t);
+ _track_get_key_indices_in_range(st->scales, from_time, to_time, p_indices);
+
+ } break;
+ case TYPE_BLEND_SHAPE: {
+ const BlendShapeTrack *bst = static_cast<const BlendShapeTrack *>(t);
+ _track_get_key_indices_in_range(bst->blend_shapes, from_time, to_time, p_indices);
} break;
case TYPE_VALUE: {
@@ -2595,7 +3027,7 @@ void Animation::_bind_methods() {
ClassDB::bind_method(D_METHOD("track_get_type", "track_idx"), &Animation::track_get_type);
ClassDB::bind_method(D_METHOD("track_get_path", "track_idx"), &Animation::track_get_path);
ClassDB::bind_method(D_METHOD("track_set_path", "track_idx", "path"), &Animation::track_set_path);
- ClassDB::bind_method(D_METHOD("find_track", "path"), &Animation::find_track);
+ ClassDB::bind_method(D_METHOD("find_track", "path", "type"), &Animation::find_track);
ClassDB::bind_method(D_METHOD("track_move_up", "track_idx"), &Animation::track_move_up);
ClassDB::bind_method(D_METHOD("track_move_down", "track_idx"), &Animation::track_move_down);
@@ -2608,7 +3040,11 @@ void Animation::_bind_methods() {
ClassDB::bind_method(D_METHOD("track_set_enabled", "track_idx", "enabled"), &Animation::track_set_enabled);
ClassDB::bind_method(D_METHOD("track_is_enabled", "track_idx"), &Animation::track_is_enabled);
- ClassDB::bind_method(D_METHOD("transform_track_insert_key", "track_idx", "time", "location", "rotation", "scale"), &Animation::transform_track_insert_key);
+ ClassDB::bind_method(D_METHOD("position_track_insert_key", "track_idx", "time", "position"), &Animation::position_track_insert_key);
+ ClassDB::bind_method(D_METHOD("rotation_track_insert_key", "track_idx", "time", "rotation"), &Animation::rotation_track_insert_key);
+ ClassDB::bind_method(D_METHOD("scale_track_insert_key", "track_idx", "time", "scale"), &Animation::scale_track_insert_key);
+ ClassDB::bind_method(D_METHOD("blend_shape_track_insert_key", "track_idx", "time", "amount"), &Animation::blend_shape_track_insert_key);
+
ClassDB::bind_method(D_METHOD("track_insert_key", "track_idx", "time", "key", "transition"), &Animation::track_insert_key, DEFVAL(1));
ClassDB::bind_method(D_METHOD("track_remove_key", "track_idx", "key_idx"), &Animation::track_remove_key);
ClassDB::bind_method(D_METHOD("track_remove_key_at_time", "track_idx", "time"), &Animation::track_remove_key_at_time);
@@ -2628,7 +3064,6 @@ void Animation::_bind_methods() {
ClassDB::bind_method(D_METHOD("track_set_interpolation_loop_wrap", "track_idx", "interpolation"), &Animation::track_set_interpolation_loop_wrap);
ClassDB::bind_method(D_METHOD("track_get_interpolation_loop_wrap", "track_idx"), &Animation::track_get_interpolation_loop_wrap);
- ClassDB::bind_method(D_METHOD("transform_track_interpolate", "track_idx", "time_sec"), &Animation::_transform_track_interpolate);
ClassDB::bind_method(D_METHOD("value_track_set_update_mode", "track_idx", "mode"), &Animation::value_track_set_update_mode);
ClassDB::bind_method(D_METHOD("value_track_get_update_mode", "track_idx"), &Animation::value_track_get_update_mode);
@@ -2682,7 +3117,10 @@ void Animation::_bind_methods() {
ADD_SIGNAL(MethodInfo("tracks_changed"));
BIND_ENUM_CONSTANT(TYPE_VALUE);
- BIND_ENUM_CONSTANT(TYPE_TRANSFORM3D);
+ BIND_ENUM_CONSTANT(TYPE_POSITION_3D);
+ BIND_ENUM_CONSTANT(TYPE_ROTATION_3D);
+ BIND_ENUM_CONSTANT(TYPE_SCALE_3D);
+ BIND_ENUM_CONSTANT(TYPE_BLEND_SHAPE);
BIND_ENUM_CONSTANT(TYPE_METHOD);
BIND_ENUM_CONSTANT(TYPE_BEZIER);
BIND_ENUM_CONSTANT(TYPE_AUDIO);
@@ -2709,193 +3147,285 @@ void Animation::clear() {
emit_signal(SceneStringNames::get_singleton()->tracks_changed);
}
-bool Animation::_transform_track_optimize_key(const TKey<TransformKey> &t0, const TKey<TransformKey> &t1, const TKey<TransformKey> &t2, real_t p_alowed_linear_err, real_t p_alowed_angular_err, real_t p_max_optimizable_angle, const Vector3 &p_norm) {
- real_t c = (t1.time - t0.time) / (t2.time - t0.time);
- real_t t[3] = { -1, -1, -1 };
+bool Animation::_position_track_optimize_key(const TKey<Vector3> &t0, const TKey<Vector3> &t1, const TKey<Vector3> &t2, real_t p_allowed_linear_err, real_t p_allowed_angular_error, const Vector3 &p_norm) {
+ const Vector3 &v0 = t0.value;
+ const Vector3 &v1 = t1.value;
+ const Vector3 &v2 = t2.value;
- { //translation
+ if (v0.is_equal_approx(v2)) {
+ //0 and 2 are close, let's see if 1 is close
+ if (!v0.is_equal_approx(v1)) {
+ //not close, not optimizable
+ return false;
+ }
- const Vector3 &v0 = t0.value.loc;
- const Vector3 &v1 = t1.value.loc;
- const Vector3 &v2 = t2.value.loc;
+ } else {
+ Vector3 pd = (v2 - v0);
+ real_t d0 = pd.dot(v0);
+ real_t d1 = pd.dot(v1);
+ real_t d2 = pd.dot(v2);
+ if (d1 < d0 || d1 > d2) {
+ return false;
+ }
- if (v0.is_equal_approx(v2)) {
- //0 and 2 are close, let's see if 1 is close
- if (!v0.is_equal_approx(v1)) {
- //not close, not optimizable
- return false;
- }
+ Vector3 s[2] = { v0, v2 };
+ real_t d = Geometry3D::get_closest_point_to_segment(v1, s).distance_to(v1);
- } else {
- Vector3 pd = (v2 - v0);
- real_t d0 = pd.dot(v0);
- real_t d1 = pd.dot(v1);
- real_t d2 = pd.dot(v2);
- if (d1 < d0 || d1 > d2) {
- return false;
- }
+ if (d > pd.length() * p_allowed_linear_err) {
+ return false; //beyond allowed error for collinearity
+ }
- Vector3 s[2] = { v0, v2 };
- real_t d = Geometry3D::get_closest_point_to_segment(v1, s).distance_to(v1);
+ if (p_norm != Vector3() && Math::acos(pd.normalized().dot(p_norm)) > p_allowed_angular_error) {
+ return false;
+ }
+ }
- if (d > pd.length() * p_alowed_linear_err) {
- return false; //beyond allowed error for collinearity
- }
+ return true;
+}
- if (p_norm != Vector3() && Math::acos(pd.normalized().dot(p_norm)) > p_alowed_angular_err) {
- return false;
- }
+bool Animation::_rotation_track_optimize_key(const TKey<Quaternion> &t0, const TKey<Quaternion> &t1, const TKey<Quaternion> &t2, real_t p_allowed_angular_error, float p_max_optimizable_angle) {
+ const Quaternion &q0 = t0.value;
+ const Quaternion &q1 = t1.value;
+ const Quaternion &q2 = t2.value;
- t[0] = (d1 - d0) / (d2 - d0);
+ //localize both to rotation from q0
+
+ if (q0.is_equal_approx(q2)) {
+ if (!q0.is_equal_approx(q1)) {
+ return false;
}
- }
- { //rotation
+ } else {
+ Quaternion r02 = (q0.inverse() * q2).normalized();
+ Quaternion r01 = (q0.inverse() * q1).normalized();
- const Quaternion &q0 = t0.value.rot;
- const Quaternion &q1 = t1.value.rot;
- const Quaternion &q2 = t2.value.rot;
+ Vector3 v02, v01;
+ real_t a02, a01;
- //localize both to rotation from q0
+ r02.get_axis_angle(v02, a02);
+ r01.get_axis_angle(v01, a01);
- if (q0.is_equal_approx(q2)) {
- if (!q0.is_equal_approx(q1)) {
- return false;
- }
+ if (Math::abs(a02) > p_max_optimizable_angle) {
+ return false;
+ }
- } else {
- Quaternion r02 = (q0.inverse() * q2).normalized();
- Quaternion r01 = (q0.inverse() * q1).normalized();
+ if (v01.dot(v02) < 0) {
+ //make sure both rotations go the same way to compare
+ v02 = -v02;
+ a02 = -a02;
+ }
- Vector3 v02, v01;
- real_t a02, a01;
+ real_t err_01 = Math::acos(v01.normalized().dot(v02.normalized())) / Math_PI;
+ if (err_01 > p_allowed_angular_error) {
+ //not rotating in the same axis
+ return false;
+ }
- r02.get_axis_angle(v02, a02);
- r01.get_axis_angle(v01, a01);
+ if (a01 * a02 < 0) {
+ //not rotating in the same direction
+ return false;
+ }
- if (Math::abs(a02) > p_max_optimizable_angle) {
- return false;
- }
+ real_t tr = a01 / a02;
+ if (tr < 0 || tr > 1) {
+ return false; //rotating too much or too less
+ }
+ }
- if (v01.dot(v02) < 0) {
- //make sure both rotations go the same way to compare
- v02 = -v02;
- a02 = -a02;
- }
+ return true;
+}
- real_t err_01 = Math::acos(v01.normalized().dot(v02.normalized())) / Math_PI;
- if (err_01 > p_alowed_angular_err) {
- //not rotating in the same axis
- return false;
- }
+bool Animation::_scale_track_optimize_key(const TKey<Vector3> &t0, const TKey<Vector3> &t1, const TKey<Vector3> &t2, real_t p_allowed_linear_error) {
+ const Vector3 &v0 = t0.value;
+ const Vector3 &v1 = t1.value;
+ const Vector3 &v2 = t2.value;
- if (a01 * a02 < 0) {
- //not rotating in the same direction
- return false;
- }
+ if (v0.is_equal_approx(v2)) {
+ //0 and 2 are close, let's see if 1 is close
+ if (!v0.is_equal_approx(v1)) {
+ //not close, not optimizable
+ return false;
+ }
- real_t tr = a01 / a02;
- if (tr < 0 || tr > 1) {
- return false; //rotating too much or too less
- }
+ } else {
+ Vector3 pd = (v2 - v0);
+ real_t d0 = pd.dot(v0);
+ real_t d1 = pd.dot(v1);
+ real_t d2 = pd.dot(v2);
+ if (d1 < d0 || d1 > d2) {
+ return false; //beyond segment range
+ }
+
+ Vector3 s[2] = { v0, v2 };
+ real_t d = Geometry3D::get_closest_point_to_segment(v1, s).distance_to(v1);
- t[1] = tr;
+ if (d > pd.length() * p_allowed_linear_error) {
+ return false; //beyond allowed error for colinearity
}
}
- { //scale
+ return true;
+}
- const Vector3 &v0 = t0.value.scale;
- const Vector3 &v1 = t1.value.scale;
- const Vector3 &v2 = t2.value.scale;
+bool Animation::_blend_shape_track_optimize_key(const TKey<float> &t0, const TKey<float> &t1, const TKey<float> &t2, real_t p_allowed_unit_error) {
+ float v0 = t0.value;
+ float v1 = t1.value;
+ float v2 = t2.value;
- if (v0.is_equal_approx(v2)) {
- //0 and 2 are close, let's see if 1 is close
- if (!v0.is_equal_approx(v1)) {
- //not close, not optimizable
- return false;
- }
-
- } else {
- Vector3 pd = (v2 - v0);
- real_t d0 = pd.dot(v0);
- real_t d1 = pd.dot(v1);
- real_t d2 = pd.dot(v2);
- if (d1 < d0 || d1 > d2) {
- return false; //beyond segment range
- }
+ if (Math::is_equal_approx(v1, v2, p_allowed_unit_error)) {
+ //0 and 2 are close, let's see if 1 is close
+ if (!Math::is_equal_approx(v0, v1, p_allowed_unit_error)) {
+ //not close, not optimizable
+ return false;
+ }
- Vector3 s[2] = { v0, v2 };
- real_t d = Geometry3D::get_closest_point_to_segment(v1, s).distance_to(v1);
+ } else {
+ /*
+ TODO eventually discuss a way to optimize these better.
+ float pd = (v2 - v0);
+ real_t d0 = pd.dot(v0);
+ real_t d1 = pd.dot(v1);
+ real_t d2 = pd.dot(v2);
+ if (d1 < d0 || d1 > d2) {
+ return false; //beyond segment range
+ }
- if (d > pd.length() * p_alowed_linear_err) {
- return false; //beyond allowed error for collinearity
- }
+ float s[2] = { v0, v2 };
+ real_t d = Geometry3D::get_closest_point_to_segment(v1, s).distance_to(v1);
- t[2] = (d1 - d0) / (d2 - d0);
+ if (d > pd.length() * p_allowed_linear_error) {
+ return false; //beyond allowed error for colinearity
}
+*/
}
- bool erase = false;
- if (t[0] == -1 && t[1] == -1 && t[2] == -1) {
- erase = true;
- } else {
- erase = true;
- real_t lt = -1.0;
- for (int j = 0; j < 3; j++) {
- //search for t on first, one must be it
- if (t[j] != -1) {
- lt = t[j]; //official t
- //validate rest
- for (int k = j + 1; k < 3; k++) {
- if (t[k] == -1) {
- continue;
- }
+ return true;
+}
- if (Math::abs(lt - t[k]) > p_alowed_linear_err) {
- erase = false;
- break;
- }
- }
- break;
- }
+void Animation::_position_track_optimize(int p_idx, real_t p_allowed_linear_err, real_t p_allowed_angular_err) {
+ ERR_FAIL_INDEX(p_idx, tracks.size());
+ ERR_FAIL_COND(tracks[p_idx]->type != TYPE_POSITION_3D);
+ PositionTrack *tt = static_cast<PositionTrack *>(tracks[p_idx]);
+ bool prev_erased = false;
+ TKey<Vector3> first_erased;
+
+ Vector3 norm;
+
+ for (int i = 1; i < tt->positions.size() - 1; i++) {
+ TKey<Vector3> &t0 = tt->positions.write[i - 1];
+ TKey<Vector3> &t1 = tt->positions.write[i];
+ TKey<Vector3> &t2 = tt->positions.write[i + 1];
+
+ bool erase = _position_track_optimize_key(t0, t1, t2, p_allowed_linear_err, p_allowed_angular_err, norm);
+ if (erase && !prev_erased) {
+ norm = (t2.value - t1.value).normalized();
}
- ERR_FAIL_COND_V(lt == -1, false);
+ if (prev_erased && !_position_track_optimize_key(t0, first_erased, t2, p_allowed_linear_err, p_allowed_angular_err, norm)) {
+ //avoid error to go beyond first erased key
+ erase = false;
+ }
if (erase) {
- if (Math::abs(lt - c) > p_alowed_linear_err) {
- //todo, evaluate changing the transition if this fails?
- //this could be done as a second pass and would be
- //able to optimize more
- erase = false;
+ if (!prev_erased) {
+ first_erased = t1;
+ prev_erased = true;
}
+
+ tt->positions.remove(i);
+ i--;
+
+ } else {
+ prev_erased = false;
+ norm = Vector3();
}
}
+}
+
+void Animation::_rotation_track_optimize(int p_idx, real_t p_allowed_angular_err, real_t p_max_optimizable_angle) {
+ ERR_FAIL_INDEX(p_idx, tracks.size());
+ ERR_FAIL_COND(tracks[p_idx]->type != TYPE_ROTATION_3D);
+ RotationTrack *tt = static_cast<RotationTrack *>(tracks[p_idx]);
+ bool prev_erased = false;
+ TKey<Quaternion> first_erased;
+
+ for (int i = 1; i < tt->rotations.size() - 1; i++) {
+ TKey<Quaternion> &t0 = tt->rotations.write[i - 1];
+ TKey<Quaternion> &t1 = tt->rotations.write[i];
+ TKey<Quaternion> &t2 = tt->rotations.write[i + 1];
- return erase;
+ bool erase = _rotation_track_optimize_key(t0, t1, t2, p_allowed_angular_err, p_max_optimizable_angle);
+
+ if (prev_erased && !_rotation_track_optimize_key(t0, first_erased, t2, p_allowed_angular_err, p_max_optimizable_angle)) {
+ //avoid error to go beyond first erased key
+ erase = false;
+ }
+
+ if (erase) {
+ if (!prev_erased) {
+ first_erased = t1;
+ prev_erased = true;
+ }
+
+ tt->rotations.remove(i);
+ i--;
+
+ } else {
+ prev_erased = false;
+ }
+ }
}
-void Animation::_transform_track_optimize(int p_idx, real_t p_allowed_linear_err, real_t p_allowed_angular_err, real_t p_max_optimizable_angle) {
+void Animation::_scale_track_optimize(int p_idx, real_t p_allowed_linear_err) {
ERR_FAIL_INDEX(p_idx, tracks.size());
- ERR_FAIL_COND(tracks[p_idx]->type != TYPE_TRANSFORM3D);
- TransformTrack *tt = static_cast<TransformTrack *>(tracks[p_idx]);
+ ERR_FAIL_COND(tracks[p_idx]->type != TYPE_SCALE_3D);
+ ScaleTrack *tt = static_cast<ScaleTrack *>(tracks[p_idx]);
bool prev_erased = false;
- TKey<TransformKey> first_erased;
+ TKey<Vector3> first_erased;
- Vector3 norm;
+ for (int i = 1; i < tt->scales.size() - 1; i++) {
+ TKey<Vector3> &t0 = tt->scales.write[i - 1];
+ TKey<Vector3> &t1 = tt->scales.write[i];
+ TKey<Vector3> &t2 = tt->scales.write[i + 1];
- for (int i = 1; i < tt->transforms.size() - 1; i++) {
- TKey<TransformKey> &t0 = tt->transforms.write[i - 1];
- TKey<TransformKey> &t1 = tt->transforms.write[i];
- TKey<TransformKey> &t2 = tt->transforms.write[i + 1];
+ bool erase = _scale_track_optimize_key(t0, t1, t2, p_allowed_linear_err);
- bool erase = _transform_track_optimize_key(t0, t1, t2, p_allowed_linear_err, p_allowed_angular_err, p_max_optimizable_angle, norm);
- if (erase && !prev_erased) {
- norm = (t2.value.loc - t1.value.loc).normalized();
+ if (prev_erased && !_scale_track_optimize_key(t0, first_erased, t2, p_allowed_linear_err)) {
+ //avoid error to go beyond first erased key
+ erase = false;
}
- if (prev_erased && !_transform_track_optimize_key(t0, first_erased, t2, p_allowed_linear_err, p_allowed_angular_err, p_max_optimizable_angle, norm)) {
+ if (erase) {
+ if (!prev_erased) {
+ first_erased = t1;
+ prev_erased = true;
+ }
+
+ tt->scales.remove(i);
+ i--;
+
+ } else {
+ prev_erased = false;
+ }
+ }
+}
+
+void Animation::_blend_shape_track_optimize(int p_idx, real_t p_allowed_linear_err) {
+ ERR_FAIL_INDEX(p_idx, tracks.size());
+ ERR_FAIL_COND(tracks[p_idx]->type != TYPE_BLEND_SHAPE);
+ BlendShapeTrack *tt = static_cast<BlendShapeTrack *>(tracks[p_idx]);
+ bool prev_erased = false;
+ TKey<float> first_erased;
+ first_erased.value = 0.0;
+
+ for (int i = 1; i < tt->blend_shapes.size() - 1; i++) {
+ TKey<float> &t0 = tt->blend_shapes.write[i - 1];
+ TKey<float> &t1 = tt->blend_shapes.write[i];
+ TKey<float> &t2 = tt->blend_shapes.write[i + 1];
+
+ bool erase = _blend_shape_track_optimize_key(t0, t1, t2, p_allowed_linear_err);
+
+ if (prev_erased && !_blend_shape_track_optimize_key(t0, first_erased, t2, p_allowed_linear_err)) {
//avoid error to go beyond first erased key
erase = false;
}
@@ -2906,20 +3436,25 @@ void Animation::_transform_track_optimize(int p_idx, real_t p_allowed_linear_err
prev_erased = true;
}
- tt->transforms.remove(i);
+ tt->blend_shapes.remove(i);
i--;
} else {
prev_erased = false;
- norm = Vector3();
}
}
}
void Animation::optimize(real_t p_allowed_linear_err, real_t p_allowed_angular_err, real_t p_max_optimizable_angle) {
for (int i = 0; i < tracks.size(); i++) {
- if (tracks[i]->type == TYPE_TRANSFORM3D) {
- _transform_track_optimize(i, p_allowed_linear_err, p_allowed_angular_err, p_max_optimizable_angle);
+ if (tracks[i]->type == TYPE_POSITION_3D) {
+ _position_track_optimize(i, p_allowed_linear_err, p_allowed_angular_err);
+ } else if (tracks[i]->type == TYPE_ROTATION_3D) {
+ _rotation_track_optimize(i, p_allowed_angular_err, p_max_optimizable_angle);
+ } else if (tracks[i]->type == TYPE_SCALE_3D) {
+ _scale_track_optimize(i, p_allowed_linear_err);
+ } else if (tracks[i]->type == TYPE_BLEND_SHAPE) {
+ _blend_shape_track_optimize(i, p_allowed_linear_err);
}
}
}
diff --git a/scene/resources/animation.h b/scene/resources/animation.h
index 9a410bd566..6de739f737 100644
--- a/scene/resources/animation.h
+++ b/scene/resources/animation.h
@@ -42,7 +42,10 @@ class Animation : public Resource {
public:
enum TrackType {
TYPE_VALUE, ///< Set a value in a property, can be interpolated.
- TYPE_TRANSFORM3D, ///< Transform a node or a bone.
+ TYPE_POSITION_3D, ///< Position 3D track
+ TYPE_ROTATION_3D, ///< Rotation 3D track
+ TYPE_SCALE_3D, ///< Scale 3D track
+ TYPE_BLEND_SHAPE, ///< Blend Shape track
TYPE_METHOD, ///< Call any method on a specific node.
TYPE_BEZIER, ///< Bezier curve
TYPE_AUDIO,
@@ -86,21 +89,39 @@ private:
T value;
};
- struct TransformKey {
- Vector3 loc;
- Quaternion rot;
- Vector3 scale;
+ const int32_t POSITION_TRACK_SIZE = 5;
+ const int32_t ROTATION_TRACK_SIZE = 6;
+ const int32_t SCALE_TRACK_SIZE = 5;
+ const int32_t BLEND_SHAPE_TRACK_SIZE = 3;
+
+ /* POSITION TRACK */
+
+ struct PositionTrack : public Track {
+ Vector<TKey<Vector3>> positions;
+
+ PositionTrack() { type = TYPE_POSITION_3D; }
};
- // Not necessarily the same size as Transform3D. The amount of numbers in Animation::Key and TransformKey.
- const int32_t TRANSFORM_TRACK_SIZE = 12;
+ /* ROTATION TRACK */
- /* TRANSFORM TRACK */
+ struct RotationTrack : public Track {
+ Vector<TKey<Quaternion>> rotations;
+
+ RotationTrack() { type = TYPE_ROTATION_3D; }
+ };
- struct TransformTrack : public Track {
- Vector<TKey<TransformKey>> transforms;
+ /* SCALE TRACK */
- TransformTrack() { type = TYPE_TRANSFORM3D; }
+ struct ScaleTrack : public Track {
+ Vector<TKey<Vector3>> scales;
+ ScaleTrack() { type = TYPE_SCALE_3D; }
+ };
+
+ /* BLEND SHAPE TRACK */
+
+ struct BlendShapeTrack : public Track {
+ Vector<TKey<float>> blend_shapes;
+ BlendShapeTrack() { type = TYPE_BLEND_SHAPE; }
};
/* PROPERTY VALUE TRACK */
@@ -186,14 +207,11 @@ private:
template <class K>
inline int _find(const Vector<K> &p_keys, double p_time) const;
- _FORCE_INLINE_ Animation::TransformKey _interpolate(const Animation::TransformKey &p_a, const Animation::TransformKey &p_b, real_t p_c) const;
-
_FORCE_INLINE_ Vector3 _interpolate(const Vector3 &p_a, const Vector3 &p_b, real_t p_c) const;
_FORCE_INLINE_ Quaternion _interpolate(const Quaternion &p_a, const Quaternion &p_b, real_t p_c) const;
_FORCE_INLINE_ Variant _interpolate(const Variant &p_a, const Variant &p_b, real_t p_c) const;
_FORCE_INLINE_ real_t _interpolate(const real_t &p_a, const real_t &p_b, real_t p_c) const;
- _FORCE_INLINE_ Animation::TransformKey _cubic_interpolate(const Animation::TransformKey &p_pre_a, const Animation::TransformKey &p_a, const Animation::TransformKey &p_b, const Animation::TransformKey &p_post_b, real_t p_c) const;
_FORCE_INLINE_ Vector3 _cubic_interpolate(const Vector3 &p_pre_a, const Vector3 &p_a, const Vector3 &p_b, const Vector3 &p_post_b, real_t p_c) const;
_FORCE_INLINE_ Quaternion _cubic_interpolate(const Quaternion &p_pre_a, const Quaternion &p_a, const Quaternion &p_b, const Quaternion &p_post_b, real_t p_c) const;
_FORCE_INLINE_ Variant _cubic_interpolate(const Variant &p_pre_a, const Variant &p_a, const Variant &p_b, const Variant &p_post_b, real_t p_c) const;
@@ -214,18 +232,6 @@ private:
// bind helpers
private:
- Array _transform_track_interpolate(int p_track, double p_time) const {
- Vector3 loc;
- Quaternion rot;
- Vector3 scale;
- transform_track_interpolate(p_track, p_time, &loc, &rot, &scale);
- Array ret;
- ret.push_back(loc);
- ret.push_back(rot);
- ret.push_back(scale);
- return ret;
- }
-
Vector<int> _value_track_get_key_indices(int p_track, double p_time, double p_delta) const {
List<int> idxs;
value_track_get_key_indices(p_track, p_time, p_delta, &idxs);
@@ -247,8 +253,15 @@ private:
return idxr;
}
- bool _transform_track_optimize_key(const TKey<TransformKey> &t0, const TKey<TransformKey> &t1, const TKey<TransformKey> &t2, real_t p_alowed_linear_err, real_t p_alowed_angular_err, real_t p_max_optimizable_angle, const Vector3 &p_norm);
- void _transform_track_optimize(int p_idx, real_t p_allowed_linear_err = 0.05, real_t p_allowed_angular_err = 0.01, real_t p_max_optimizable_angle = Math_PI * 0.125);
+ bool _position_track_optimize_key(const TKey<Vector3> &t0, const TKey<Vector3> &t1, const TKey<Vector3> &t2, real_t p_alowed_linear_err, real_t p_allowed_angular_error, const Vector3 &p_norm);
+ bool _rotation_track_optimize_key(const TKey<Quaternion> &t0, const TKey<Quaternion> &t1, const TKey<Quaternion> &t2, real_t p_allowed_angular_error, float p_max_optimizable_angle);
+ bool _scale_track_optimize_key(const TKey<Vector3> &t0, const TKey<Vector3> &t1, const TKey<Vector3> &t2, real_t p_allowed_linear_error);
+ bool _blend_shape_track_optimize_key(const TKey<float> &t0, const TKey<float> &t1, const TKey<float> &t2, real_t p_allowed_unit_error);
+
+ void _position_track_optimize(int p_idx, real_t p_allowed_linear_err, real_t p_allowed_angular_err);
+ void _rotation_track_optimize(int p_idx, real_t p_allowed_angular_err, real_t p_max_optimizable_angle);
+ void _scale_track_optimize(int p_idx, real_t p_allowed_linear_err);
+ void _blend_shape_track_optimize(int p_idx, real_t p_allowed_unit_error);
protected:
bool _set(const StringName &p_name, const Variant &p_value);
@@ -268,8 +281,7 @@ public:
void track_set_path(int p_track, const NodePath &p_path);
NodePath track_get_path(int p_track) const;
- int find_track(const NodePath &p_path) const;
- // transform
+ int find_track(const NodePath &p_path, const TrackType p_type) const;
void track_move_up(int p_track);
void track_move_down(int p_track);
@@ -294,8 +306,22 @@ public:
double track_get_key_time(int p_track, int p_key_idx) const;
real_t track_get_key_transition(int p_track, int p_key_idx) const;
- int transform_track_insert_key(int p_track, double p_time, const Vector3 &p_loc, const Quaternion &p_rot = Quaternion(), const Vector3 &p_scale = Vector3());
- Error transform_track_get_key(int p_track, int p_key, Vector3 *r_loc, Quaternion *r_rot, Vector3 *r_scale) const;
+ int position_track_insert_key(int p_track, double p_time, const Vector3 &p_position);
+ Error position_track_get_key(int p_track, int p_key, Vector3 *r_position) const;
+ Error position_track_interpolate(int p_track, double p_time, Vector3 *r_interpolation) const;
+
+ int rotation_track_insert_key(int p_track, double p_time, const Quaternion &p_rotation);
+ Error rotation_track_get_key(int p_track, int p_key, Quaternion *r_rotation) const;
+ Error rotation_track_interpolate(int p_track, double p_time, Quaternion *r_interpolation) const;
+
+ int scale_track_insert_key(int p_track, double p_time, const Vector3 &p_scale);
+ Error scale_track_get_key(int p_track, int p_key, Vector3 *r_scale) const;
+ Error scale_track_interpolate(int p_track, double p_time, Vector3 *r_interpolation) const;
+
+ int blend_shape_track_insert_key(int p_track, double p_time, float p_blend);
+ Error blend_shape_track_get_key(int p_track, int p_key, float *r_blend) const;
+ Error blend_shape_track_interpolate(int p_track, double p_time, float *r_blend) const;
+
void track_set_interpolation_type(int p_track, InterpolationType p_interp);
InterpolationType track_get_interpolation_type(int p_track) const;
@@ -324,8 +350,6 @@ public:
void track_set_interpolation_loop_wrap(int p_track, bool p_enable);
bool track_get_interpolation_loop_wrap(int p_track) const;
- Error transform_track_interpolate(int p_track, double p_time, Vector3 *r_loc, Quaternion *r_rot, Vector3 *r_scale) const;
-
Variant value_track_interpolate(int p_track, double p_time) const;
void value_track_get_key_indices(int p_track, double p_time, double p_delta, List<int> *p_indices) const;
void value_track_set_update_mode(int p_track, UpdateMode p_mode);
diff --git a/scene/resources/default_theme/SCsub b/scene/resources/default_theme/SCsub
index 0fb6bb2c62..3667ab7c14 100644
--- a/scene/resources/default_theme/SCsub
+++ b/scene/resources/default_theme/SCsub
@@ -2,8 +2,6 @@
Import("env")
-import os
-import os.path
from platform_methods import run_in_subprocess
import default_theme_builders
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index 54bb7a82cf..9fdfd493c1 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -785,30 +785,30 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_constant("icon_separation", "TabContainer", 4 * scale);
theme->set_constant("outline_size", "TabContainer", 0);
- // Tabs
-
- theme->set_stylebox("tab_selected", "Tabs", sb_expand(make_stylebox(tab_current_png, 4, 3, 4, 1, 16, 3, 16, 2), 2, 2, 2, 2));
- theme->set_stylebox("tab_unselected", "Tabs", sb_expand(make_stylebox(tab_behind_png, 5, 4, 5, 1, 16, 5, 16, 2), 3, 3, 3, 3));
- theme->set_stylebox("tab_disabled", "Tabs", sb_expand(make_stylebox(tab_disabled_png, 5, 5, 5, 1, 16, 6, 16, 4), 3, 0, 3, 3));
- theme->set_stylebox("close_bg_pressed", "Tabs", make_stylebox(button_pressed_png, 4, 4, 4, 4));
- theme->set_stylebox("close_bg_highlight", "Tabs", make_stylebox(button_normal_png, 4, 4, 4, 4));
-
- theme->set_icon("increment", "Tabs", make_icon(scroll_button_right_png));
- theme->set_icon("increment_highlight", "Tabs", make_icon(scroll_button_right_hl_png));
- theme->set_icon("decrement", "Tabs", make_icon(scroll_button_left_png));
- theme->set_icon("decrement_highlight", "Tabs", make_icon(scroll_button_left_hl_png));
- theme->set_icon("close", "Tabs", make_icon(tab_close_png));
-
- theme->set_font("font", "Tabs", Ref<Font>());
- theme->set_font_size("font_size", "Tabs", -1);
-
- theme->set_color("font_selected_color", "Tabs", control_font_hover_color);
- theme->set_color("font_unselected_color", "Tabs", control_font_low_color);
- theme->set_color("font_disabled_color", "Tabs", control_font_disabled_color);
- theme->set_color("font_outline_color", "Tabs", Color(1, 1, 1));
-
- theme->set_constant("hseparation", "Tabs", 4 * scale);
- theme->set_constant("outline_size", "Tabs", 0);
+ // TabBar
+
+ theme->set_stylebox("tab_selected", "TabBar", sb_expand(make_stylebox(tab_current_png, 4, 3, 4, 1, 16, 3, 16, 2), 2, 2, 2, 2));
+ theme->set_stylebox("tab_unselected", "TabBar", sb_expand(make_stylebox(tab_behind_png, 5, 4, 5, 1, 16, 5, 16, 2), 3, 3, 3, 3));
+ theme->set_stylebox("tab_disabled", "TabBar", sb_expand(make_stylebox(tab_disabled_png, 5, 5, 5, 1, 16, 6, 16, 4), 3, 0, 3, 3));
+ theme->set_stylebox("close_bg_pressed", "TabBar", make_stylebox(button_pressed_png, 4, 4, 4, 4));
+ theme->set_stylebox("close_bg_highlight", "TabBar", make_stylebox(button_normal_png, 4, 4, 4, 4));
+
+ theme->set_icon("increment", "TabBar", make_icon(scroll_button_right_png));
+ theme->set_icon("increment_highlight", "TabBar", make_icon(scroll_button_right_hl_png));
+ theme->set_icon("decrement", "TabBar", make_icon(scroll_button_left_png));
+ theme->set_icon("decrement_highlight", "TabBar", make_icon(scroll_button_left_hl_png));
+ theme->set_icon("close", "TabBar", make_icon(tab_close_png));
+
+ theme->set_font("font", "TabBar", Ref<Font>());
+ theme->set_font_size("font_size", "TabBar", -1);
+
+ theme->set_color("font_selected_color", "TabBar", control_font_hover_color);
+ theme->set_color("font_unselected_color", "TabBar", control_font_low_color);
+ theme->set_color("font_disabled_color", "TabBar", control_font_disabled_color);
+ theme->set_color("font_outline_color", "TabBar", Color(1, 1, 1));
+
+ theme->set_constant("hseparation", "TabBar", 4 * scale);
+ theme->set_constant("outline_size", "TabBar", 0);
// Separators
diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp
index 9a3f081a8b..be0d3a140e 100644
--- a/scene/resources/environment.cpp
+++ b/scene/resources/environment.cpp
@@ -1291,7 +1291,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_density", PROPERTY_HINT_RANGE, "0,128,0.001,or_greater"), "set_fog_height_density", "get_fog_height_density");
+ 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);
ClassDB::bind_method(D_METHOD("is_volumetric_fog_enabled"), &Environment::is_volumetric_fog_enabled);
diff --git a/scene/resources/importer_mesh.cpp b/scene/resources/importer_mesh.cpp
index 2572c5de33..076b8312b6 100644
--- a/scene/resources/importer_mesh.cpp
+++ b/scene/resources/importer_mesh.cpp
@@ -997,7 +997,7 @@ Ref<NavigationMesh> ImporterMesh::create_navigation_mesh() {
extern bool (*array_mesh_lightmap_unwrap_callback)(float p_texel_size, const float *p_vertices, const float *p_normals, int p_vertex_count, const int *p_indices, int p_index_count, const uint8_t *p_cache_data, bool *r_use_cache, uint8_t **r_mesh_cache, int *r_mesh_cache_size, float **r_uv, int **r_vertex, int *r_vertex_count, int **r_index, int *r_index_count, int *r_size_hint_x, int *r_size_hint_y);
-struct EditorSceneImporterMeshLightmapSurface {
+struct EditorSceneFormatImporterMeshLightmapSurface {
Ref<Material> material;
LocalVector<SurfaceTool::Vertex> vertices;
Mesh::PrimitiveType primitive = Mesh::PrimitiveType::PRIMITIVE_MAX;
@@ -1015,7 +1015,7 @@ Error ImporterMesh::lightmap_unwrap_cached(const Transform3D &p_base_transform,
LocalVector<float> uv;
LocalVector<Pair<int, int>> uv_indices;
- Vector<EditorSceneImporterMeshLightmapSurface> lightmap_surfaces;
+ Vector<EditorSceneFormatImporterMeshLightmapSurface> lightmap_surfaces;
// Keep only the scale
Basis basis = p_base_transform.get_basis();
@@ -1027,7 +1027,7 @@ Error ImporterMesh::lightmap_unwrap_cached(const Transform3D &p_base_transform,
Basis normal_basis = transform.basis.inverse().transposed();
for (int i = 0; i < get_surface_count(); i++) {
- EditorSceneImporterMeshLightmapSurface s;
+ EditorSceneFormatImporterMeshLightmapSurface s;
s.primitive = get_surface_primitive_type(i);
ERR_FAIL_COND_V_MSG(s.primitive != Mesh::PRIMITIVE_TRIANGLES, ERR_UNAVAILABLE, "Only triangles are supported for lightmap unwrap.");
diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp
index 18e6a51118..7ffe0b03e1 100644
--- a/scene/resources/mesh.cpp
+++ b/scene/resources/mesh.cpp
@@ -1577,7 +1577,7 @@ void ArrayMesh::regen_normal_maps() {
}
//dirty hack
-bool (*array_mesh_lightmap_unwrap_callback)(float p_texel_size, const float *p_vertices, const float *p_normals, int p_vertex_count, const int *p_indices, int p_index_count, const uint8_t *p_cache_data, bool *r_use_cache, uint8_t **r_mesh_cache, int *r_mesh_cache_size, float **r_uv, int **r_vertex, int *r_vertex_count, int **r_index, int *r_index_count, int *r_size_hint_x, int *r_size_hint_y) = NULL;
+bool (*array_mesh_lightmap_unwrap_callback)(float p_texel_size, const float *p_vertices, const float *p_normals, int p_vertex_count, const int *p_indices, int p_index_count, const uint8_t *p_cache_data, bool *r_use_cache, uint8_t **r_mesh_cache, int *r_mesh_cache_size, float **r_uv, int **r_vertex, int *r_vertex_count, int **r_index, int *r_index_count, int *r_size_hint_x, int *r_size_hint_y) = nullptr;
struct ArrayMeshLightmapSurface {
Ref<Material> material;
diff --git a/scene/resources/mesh.h b/scene/resources/mesh.h
index 8d5571d67c..a95b4d4a5e 100644
--- a/scene/resources/mesh.h
+++ b/scene/resources/mesh.h
@@ -278,7 +278,6 @@ public:
int surface_get_array_index_len(int p_idx) const override;
uint32_t surface_get_format(int p_idx) const override;
PrimitiveType surface_get_primitive_type(int p_idx) const override;
- bool surface_is_alpha_sorting_enabled(int p_idx) const;
virtual void surface_set_material(int p_idx, const Ref<Material> &p_material) override;
virtual Ref<Material> surface_get_material(int p_idx) const override;
diff --git a/scene/resources/navigation_mesh.h b/scene/resources/navigation_mesh.h
index 1cdf7a07ed..009239838f 100644
--- a/scene/resources/navigation_mesh.h
+++ b/scene/resources/navigation_mesh.h
@@ -85,7 +85,7 @@ protected:
float cell_size = 0.3f;
float cell_height = 0.2f;
float agent_height = 2.0f;
- float agent_radius = 0.6f;
+ float agent_radius = 1.0f;
float agent_max_climb = 0.9f;
float agent_max_slope = 45.0f;
float region_min_size = 8.0f;
diff --git a/scene/resources/shape_2d.h b/scene/resources/shape_2d.h
index 14bdd60e4b..7c5d1344e8 100644
--- a/scene/resources/shape_2d.h
+++ b/scene/resources/shape_2d.h
@@ -64,7 +64,6 @@ public:
static bool is_collision_outline_enabled();
- Shape2D();
~Shape2D();
};
diff --git a/scene/resources/skeleton_modification_3d_fabrik.cpp b/scene/resources/skeleton_modification_3d_fabrik.cpp
index e615615924..dedea3e282 100644
--- a/scene/resources/skeleton_modification_3d_fabrik.cpp
+++ b/scene/resources/skeleton_modification_3d_fabrik.cpp
@@ -149,6 +149,11 @@ void SkeletonModification3DFABRIK::_execute(real_t p_delta) {
return;
}
+ // Make sure the transform cache is the correct size
+ if (fabrik_transforms.size() != fabrik_data_chain.size()) {
+ fabrik_transforms.resize(fabrik_data_chain.size());
+ }
+
// Verify that all joints have a valid bone ID, and that all bone lengths are zero or more
// Also, while we are here, apply magnet positions.
for (uint32_t i = 0; i < fabrik_data_chain.size(); i++) {
@@ -162,27 +167,24 @@ void SkeletonModification3DFABRIK::_execute(real_t p_delta) {
if (_print_execution_error(fabrik_data_chain[i].length < 0, "FABRIK Joint " + itos(i) + " has an invalid joint length. Cannot execute!")) {
return;
}
-
- Transform3D local_pose_override = stack->skeleton->get_bone_local_pose_override(fabrik_data_chain[i].bone_idx);
+ fabrik_transforms[i] = stack->skeleton->get_bone_global_pose(fabrik_data_chain[i].bone_idx);
// Apply magnet positions:
if (stack->skeleton->get_bone_parent(fabrik_data_chain[i].bone_idx) >= 0) {
int parent_bone_idx = stack->skeleton->get_bone_parent(fabrik_data_chain[i].bone_idx);
- Transform3D conversion_transform = (stack->skeleton->get_bone_global_pose(parent_bone_idx) * stack->skeleton->get_bone_rest(parent_bone_idx));
- local_pose_override.origin += conversion_transform.basis.xform_inv(fabrik_data_chain[i].magnet_position);
+ Transform3D conversion_transform = (stack->skeleton->get_bone_global_pose(parent_bone_idx));
+ fabrik_transforms[i].origin += conversion_transform.basis.xform_inv(fabrik_data_chain[i].magnet_position);
} else {
- local_pose_override.origin += fabrik_data_chain[i].magnet_position;
+ fabrik_transforms[i].origin += fabrik_data_chain[i].magnet_position;
}
-
- stack->skeleton->set_bone_local_pose_override(fabrik_data_chain[i].bone_idx, local_pose_override, stack->strength, true);
}
+ Transform3D origin_global_pose_trans = stack->skeleton->get_bone_global_pose_no_override(fabrik_data_chain[0].bone_idx);
target_global_pose = stack->skeleton->world_transform_to_global_pose(node_target->get_global_transform());
- origin_global_pose = stack->skeleton->local_pose_to_global_pose(
- fabrik_data_chain[0].bone_idx, stack->skeleton->get_bone_local_pose_override(fabrik_data_chain[0].bone_idx));
+ origin_global_pose = origin_global_pose_trans;
final_joint_idx = fabrik_data_chain.size() - 1;
- real_t target_distance = stack->skeleton->global_pose_to_local_pose(fabrik_data_chain[final_joint_idx].bone_idx, target_global_pose).origin.length();
+ real_t target_distance = fabrik_transforms[final_joint_idx].origin.distance_to(target_global_pose.origin);
chain_iterations = 0;
while (target_distance > chain_tolerance) {
@@ -190,7 +192,7 @@ void SkeletonModification3DFABRIK::_execute(real_t p_delta) {
chain_forwards();
// update the target distance
- target_distance = stack->skeleton->global_pose_to_local_pose(fabrik_data_chain[final_joint_idx].bone_idx, target_global_pose).origin.length();
+ target_distance = fabrik_transforms[final_joint_idx].origin.distance_to(target_global_pose.origin);
// update chain iterations
chain_iterations += 1;
@@ -205,7 +207,7 @@ void SkeletonModification3DFABRIK::_execute(real_t p_delta) {
void SkeletonModification3DFABRIK::chain_backwards() {
int final_bone_idx = fabrik_data_chain[final_joint_idx].bone_idx;
- Transform3D final_joint_trans = stack->skeleton->local_pose_to_global_pose(final_bone_idx, stack->skeleton->get_bone_local_pose_override(final_bone_idx));
+ Transform3D final_joint_trans = fabrik_transforms[final_joint_idx];
// Get the direction the final bone is facing in.
stack->skeleton->update_bone_rest_forward_vector(final_bone_idx);
@@ -220,52 +222,46 @@ void SkeletonModification3DFABRIK::chain_backwards() {
// set the position of the final joint to the target position
final_joint_trans.origin = target_global_pose.origin - (direction * fabrik_data_chain[final_joint_idx].length);
- final_joint_trans = stack->skeleton->global_pose_to_local_pose(final_bone_idx, final_joint_trans);
- stack->skeleton->set_bone_local_pose_override(final_bone_idx, final_joint_trans, stack->strength, true);
+ fabrik_transforms[final_joint_idx] = final_joint_trans;
// for all other joints, move them towards the target
int i = final_joint_idx;
while (i >= 1) {
- int next_bone_idx = fabrik_data_chain[i].bone_idx;
- Transform3D next_bone_trans = stack->skeleton->local_pose_to_global_pose(next_bone_idx, stack->skeleton->get_bone_local_pose_override(next_bone_idx));
+ Transform3D next_bone_trans = fabrik_transforms[i];
i -= 1;
- int current_bone_idx = fabrik_data_chain[i].bone_idx;
- Transform3D current_trans = stack->skeleton->local_pose_to_global_pose(current_bone_idx, stack->skeleton->get_bone_local_pose_override(current_bone_idx));
+ Transform3D current_trans = fabrik_transforms[i];
real_t length = fabrik_data_chain[i].length / (current_trans.origin.distance_to(next_bone_trans.origin));
current_trans.origin = next_bone_trans.origin.lerp(current_trans.origin, length);
- // Apply it back to the skeleton
- stack->skeleton->set_bone_local_pose_override(current_bone_idx, stack->skeleton->global_pose_to_local_pose(current_bone_idx, current_trans), stack->strength, true);
+ // Save the result
+ fabrik_transforms[i] = current_trans;
}
}
void SkeletonModification3DFABRIK::chain_forwards() {
// Set root at the initial position.
- int origin_bone_idx = fabrik_data_chain[0].bone_idx;
- Transform3D root_transform = stack->skeleton->local_pose_to_global_pose(origin_bone_idx, stack->skeleton->get_bone_local_pose_override(origin_bone_idx));
+ Transform3D root_transform = fabrik_transforms[0];
+
root_transform.origin = origin_global_pose.origin;
- stack->skeleton->set_bone_local_pose_override(origin_bone_idx, stack->skeleton->global_pose_to_local_pose(origin_bone_idx, root_transform), stack->strength, true);
+ fabrik_transforms[0] = origin_global_pose;
for (uint32_t i = 0; i < fabrik_data_chain.size() - 1; i++) {
- int current_bone_idx = fabrik_data_chain[i].bone_idx;
- Transform3D current_trans = stack->skeleton->local_pose_to_global_pose(current_bone_idx, stack->skeleton->get_bone_local_pose_override(current_bone_idx));
- int next_bone_idx = fabrik_data_chain[i + 1].bone_idx;
- Transform3D next_bone_trans = stack->skeleton->local_pose_to_global_pose(next_bone_idx, stack->skeleton->get_bone_local_pose_override(next_bone_idx));
+ Transform3D current_trans = fabrik_transforms[i];
+ Transform3D next_bone_trans = fabrik_transforms[i + 1];
real_t length = fabrik_data_chain[i].length / (next_bone_trans.origin.distance_to(current_trans.origin));
next_bone_trans.origin = current_trans.origin.lerp(next_bone_trans.origin, length);
- // Apply it back to the skeleton
- stack->skeleton->set_bone_local_pose_override(next_bone_idx, stack->skeleton->global_pose_to_local_pose(next_bone_idx, next_bone_trans), stack->strength, true);
+ // Save the result
+ fabrik_transforms[i + 1] = next_bone_trans;
}
}
void SkeletonModification3DFABRIK::chain_apply() {
for (uint32_t i = 0; i < fabrik_data_chain.size(); i++) {
int current_bone_idx = fabrik_data_chain[i].bone_idx;
- Transform3D current_trans = stack->skeleton->get_bone_local_pose_override(current_bone_idx);
- current_trans = stack->skeleton->local_pose_to_global_pose(current_bone_idx, current_trans);
+ Transform3D current_trans = fabrik_transforms[i];
// If this is the last bone in the chain...
if (i == fabrik_data_chain.size() - 1) {
@@ -280,8 +276,7 @@ void SkeletonModification3DFABRIK::chain_apply() {
current_trans.basis = target_global_pose.basis.orthonormalized().scaled(current_trans.basis.get_scale());
}
} else { // every other bone in the chain...
- int next_bone_idx = fabrik_data_chain[i + 1].bone_idx;
- Transform3D next_trans = stack->skeleton->local_pose_to_global_pose(next_bone_idx, stack->skeleton->get_bone_local_pose_override(next_bone_idx));
+ Transform3D next_trans = fabrik_transforms[i + 1];
// Get the forward direction that the basis is facing in right now.
stack->skeleton->update_bone_rest_forward_vector(current_bone_idx);
@@ -290,9 +285,7 @@ void SkeletonModification3DFABRIK::chain_apply() {
current_trans.basis.rotate_to_align(forward_vector, current_trans.origin.direction_to(next_trans.origin));
current_trans.basis.rotate_local(forward_vector, fabrik_data_chain[i].roll);
}
- current_trans = stack->skeleton->global_pose_to_local_pose(current_bone_idx, current_trans);
- current_trans.origin = Vector3(0, 0, 0);
- stack->skeleton->set_bone_local_pose_override(current_bone_idx, current_trans, stack->strength, true);
+ stack->skeleton->set_bone_local_pose_override(current_bone_idx, stack->skeleton->global_pose_to_local_pose(current_bone_idx, current_trans), stack->strength, true);
}
// Update all the bones so the next modification has up-to-date data.
@@ -374,6 +367,7 @@ int SkeletonModification3DFABRIK::get_fabrik_data_chain_length() {
void SkeletonModification3DFABRIK::set_fabrik_data_chain_length(int p_length) {
ERR_FAIL_COND(p_length < 0);
fabrik_data_chain.resize(p_length);
+ fabrik_transforms.resize(p_length);
execution_error_found = false;
notify_property_list_changed();
}
@@ -513,8 +507,11 @@ void SkeletonModification3DFABRIK::fabrik_joint_auto_calculate_length(int p_join
Transform3D node_trans = tip_node->get_global_transform();
node_trans = stack->skeleton->world_transform_to_global_pose(node_trans);
- node_trans = stack->skeleton->global_pose_to_local_pose(fabrik_data_chain[p_joint_idx].bone_idx, node_trans);
- fabrik_data_chain[p_joint_idx].length = node_trans.origin.length();
+ //node_trans = stack->skeleton->global_pose_to_local_pose(fabrik_data_chain[p_joint_idx].bone_idx, node_trans);
+ //fabrik_data_chain[p_joint_idx].length = node_trans.origin.length();
+
+ fabrik_data_chain[p_joint_idx].length = stack->skeleton->get_bone_global_pose(fabrik_data_chain[p_joint_idx].bone_idx).origin.distance_to(node_trans.origin);
+
} else { // Use child bone(s) to update joint length, if possible
Vector<int> bone_children = stack->skeleton->get_bone_children(fabrik_data_chain[p_joint_idx].bone_idx);
if (bone_children.size() <= 0) {
@@ -522,10 +519,13 @@ void SkeletonModification3DFABRIK::fabrik_joint_auto_calculate_length(int p_join
return;
}
+ Transform3D bone_trans = stack->skeleton->get_bone_global_pose(fabrik_data_chain[p_joint_idx].bone_idx);
+
real_t final_length = 0;
for (int i = 0; i < bone_children.size(); i++) {
Transform3D child_transform = stack->skeleton->get_bone_global_pose(bone_children[i]);
- final_length += stack->skeleton->global_pose_to_local_pose(fabrik_data_chain[p_joint_idx].bone_idx, child_transform).origin.length();
+ final_length += bone_trans.origin.distance_to(child_transform.origin);
+ //final_length += stack->skeleton->global_pose_to_local_pose(fabrik_data_chain[p_joint_idx].bone_idx, child_transform).origin.length();
}
fabrik_data_chain[p_joint_idx].length = final_length / bone_children.size();
}
diff --git a/scene/resources/skeleton_modification_3d_fabrik.h b/scene/resources/skeleton_modification_3d_fabrik.h
index 9b5da883d4..6c58b8a07a 100644
--- a/scene/resources/skeleton_modification_3d_fabrik.h
+++ b/scene/resources/skeleton_modification_3d_fabrik.h
@@ -55,6 +55,8 @@ private:
};
LocalVector<FABRIK_Joint_Data> fabrik_data_chain;
+ LocalVector<Transform3D> fabrik_transforms;
+
NodePath target_node;
ObjectID target_node_cache;
diff --git a/scene/resources/skeleton_modification_3d_jiggle.cpp b/scene/resources/skeleton_modification_3d_jiggle.cpp
index 1fb7dad2ad..a6bcb0176a 100644
--- a/scene/resources/skeleton_modification_3d_jiggle.cpp
+++ b/scene/resources/skeleton_modification_3d_jiggle.cpp
@@ -172,7 +172,12 @@ void SkeletonModification3DJiggle::_execute_jiggle_joint(int p_joint_idx, Node3D
return;
}
- Transform3D new_bone_trans = stack->skeleton->local_pose_to_global_pose(jiggle_data_chain[p_joint_idx].bone_idx, stack->skeleton->get_bone_local_pose_override(jiggle_data_chain[p_joint_idx].bone_idx));
+ Transform3D bone_local_pos = stack->skeleton->get_bone_local_pose_override(jiggle_data_chain[p_joint_idx].bone_idx);
+ if (bone_local_pos == Transform3D()) {
+ bone_local_pos = stack->skeleton->get_bone_pose(jiggle_data_chain[p_joint_idx].bone_idx);
+ }
+
+ Transform3D new_bone_trans = stack->skeleton->local_pose_to_global_pose(jiggle_data_chain[p_joint_idx].bone_idx, bone_local_pos);
Vector3 target_position = stack->skeleton->world_transform_to_global_pose(p_target->get_global_transform()).origin;
jiggle_data_chain[p_joint_idx].force = (target_position - jiggle_data_chain[p_joint_idx].dynamic_position) * jiggle_data_chain[p_joint_idx].stiffness * p_delta;
diff --git a/scene/resources/skeleton_modification_3d_lookat.cpp b/scene/resources/skeleton_modification_3d_lookat.cpp
index afdb077e71..f3b0f41d60 100644
--- a/scene/resources/skeleton_modification_3d_lookat.cpp
+++ b/scene/resources/skeleton_modification_3d_lookat.cpp
@@ -96,8 +96,10 @@ void SkeletonModification3DLookAt::_execute(real_t p_delta) {
if (_print_execution_error(bone_idx <= -1, "Bone index is invalid. Cannot execute modification!")) {
return;
}
-
Transform3D new_bone_trans = stack->skeleton->get_bone_local_pose_override(bone_idx);
+ if (new_bone_trans == Transform3D()) {
+ new_bone_trans = stack->skeleton->get_bone_pose(bone_idx);
+ }
Vector3 target_pos = stack->skeleton->global_pose_to_local_pose(bone_idx, stack->skeleton->world_transform_to_global_pose(target->get_global_transform())).origin;
// Lock the rotation to a plane relative to the bone by changing the target position
diff --git a/scene/resources/skeleton_modification_3d_twoboneik.cpp b/scene/resources/skeleton_modification_3d_twoboneik.cpp
index ae7a3bab7e..93ec155a88 100644
--- a/scene/resources/skeleton_modification_3d_twoboneik.cpp
+++ b/scene/resources/skeleton_modification_3d_twoboneik.cpp
@@ -178,7 +178,16 @@ void SkeletonModification3DTwoBoneIK::_execute(real_t p_delta) {
}
Transform3D pole_trans = stack->skeleton->world_transform_to_global_pose(pole->get_global_transform());
- bone_one_trans = stack->skeleton->local_pose_to_global_pose(joint_one_bone_idx, stack->skeleton->get_bone_local_pose_override(joint_one_bone_idx));
+ Transform3D bone_one_local_pos = stack->skeleton->get_bone_local_pose_override(joint_one_bone_idx);
+ if (bone_one_local_pos == Transform3D()) {
+ bone_one_local_pos = stack->skeleton->get_bone_pose(joint_one_bone_idx);
+ }
+ Transform3D bone_two_local_pos = stack->skeleton->get_bone_local_pose_override(joint_two_bone_idx);
+ if (bone_two_local_pos == Transform3D()) {
+ bone_two_local_pos = stack->skeleton->get_bone_pose(joint_two_bone_idx);
+ }
+
+ bone_one_trans = stack->skeleton->local_pose_to_global_pose(joint_one_bone_idx, bone_one_local_pos);
bone_one_trans = bone_one_trans.looking_at(pole_trans.origin, Vector3(0, 1, 0));
bone_one_trans.basis = stack->skeleton->global_pose_z_forward_to_bone_forward(joint_one_bone_idx, bone_one_trans.basis);
stack->skeleton->update_bone_rest_forward_vector(joint_one_bone_idx);
@@ -186,7 +195,7 @@ void SkeletonModification3DTwoBoneIK::_execute(real_t p_delta) {
stack->skeleton->set_bone_local_pose_override(joint_one_bone_idx, stack->skeleton->global_pose_to_local_pose(joint_one_bone_idx, bone_one_trans), stack->strength, true);
stack->skeleton->force_update_bone_children_transforms(joint_one_bone_idx);
- bone_two_trans = stack->skeleton->local_pose_to_global_pose(joint_two_bone_idx, stack->skeleton->get_bone_local_pose_override(joint_two_bone_idx));
+ bone_two_trans = stack->skeleton->local_pose_to_global_pose(joint_two_bone_idx, bone_two_local_pos);
bone_two_trans = bone_two_trans.looking_at(target_trans.origin, Vector3(0, 1, 0));
bone_two_trans.basis = stack->skeleton->global_pose_z_forward_to_bone_forward(joint_two_bone_idx, bone_two_trans.basis);
stack->skeleton->update_bone_rest_forward_vector(joint_two_bone_idx);
@@ -194,8 +203,17 @@ void SkeletonModification3DTwoBoneIK::_execute(real_t p_delta) {
stack->skeleton->set_bone_local_pose_override(joint_two_bone_idx, stack->skeleton->global_pose_to_local_pose(joint_two_bone_idx, bone_two_trans), stack->strength, true);
stack->skeleton->force_update_bone_children_transforms(joint_two_bone_idx);
} else {
- bone_one_trans = stack->skeleton->local_pose_to_global_pose(joint_one_bone_idx, stack->skeleton->get_bone_local_pose_override(joint_one_bone_idx));
- bone_two_trans = stack->skeleton->local_pose_to_global_pose(joint_two_bone_idx, stack->skeleton->get_bone_local_pose_override(joint_two_bone_idx));
+ Transform3D bone_one_local_pos = stack->skeleton->get_bone_local_pose_override(joint_one_bone_idx);
+ if (bone_one_local_pos == Transform3D()) {
+ bone_one_local_pos = stack->skeleton->get_bone_pose(joint_one_bone_idx);
+ }
+ Transform3D bone_two_local_pos = stack->skeleton->get_bone_local_pose_override(joint_two_bone_idx);
+ if (bone_two_local_pos == Transform3D()) {
+ bone_two_local_pos = stack->skeleton->get_bone_pose(joint_two_bone_idx);
+ }
+
+ bone_one_trans = stack->skeleton->local_pose_to_global_pose(joint_one_bone_idx, bone_one_local_pos);
+ bone_two_trans = stack->skeleton->local_pose_to_global_pose(joint_two_bone_idx, bone_two_local_pos);
}
Transform3D bone_two_tip_trans;
@@ -455,7 +473,7 @@ void SkeletonModification3DTwoBoneIK::calculate_joint_lengths() {
joint_two_length = 0;
for (int i = 0; i < bone_two_children.size(); i++) {
joint_two_length += bone_two_rest_trans.origin.distance_to(
- stack->skeleton->local_pose_to_global_pose(bone_two_children[i], stack->skeleton->get_bone_rest(bone_two_children[i])).origin);
+ stack->skeleton->get_bone_global_pose(bone_two_children[i]).origin);
}
joint_two_length = joint_two_length / bone_two_children.size();
} else {
diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp
index a8cd872408..455af8a40c 100644
--- a/scene/resources/surface_tool.cpp
+++ b/scene/resources/surface_tool.cpp
@@ -1174,9 +1174,11 @@ Vector<int> SurfaceTool::generate_lod(float p_threshold, int p_target_index_coun
Vector<int> lod;
ERR_FAIL_COND_V(simplify_func == nullptr, lod);
+ ERR_FAIL_COND_V(p_target_index_count < 0, lod);
ERR_FAIL_COND_V(vertex_array.size() == 0, lod);
ERR_FAIL_COND_V(index_array.size() == 0, lod);
ERR_FAIL_COND_V(index_array.size() % 3 != 0, lod);
+ ERR_FAIL_COND_V(index_array.size() < (unsigned int)p_target_index_count, lod);
lod.resize(index_array.size());
LocalVector<float> vertices; //uses floats
diff --git a/scene/resources/text_paragraph.cpp b/scene/resources/text_paragraph.cpp
index b2e18e2451..fae1de94d3 100644
--- a/scene/resources/text_paragraph.cpp
+++ b/scene/resources/text_paragraph.cpp
@@ -84,7 +84,7 @@ void TextParagraph::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "width"), "set_width", "get_width");
- ClassDB::bind_method(D_METHOD("get_non_wraped_size"), &TextParagraph::get_non_wraped_size);
+ ClassDB::bind_method(D_METHOD("get_non_wrapped_size"), &TextParagraph::get_non_wrapped_size);
ClassDB::bind_method(D_METHOD("get_size"), &TextParagraph::get_size);
ClassDB::bind_method(D_METHOD("get_rid"), &TextParagraph::get_rid);
@@ -417,7 +417,7 @@ float TextParagraph::get_width() const {
return width;
}
-Size2 TextParagraph::get_non_wraped_size() const {
+Size2 TextParagraph::get_non_wrapped_size() const {
const_cast<TextParagraph *>(this)->_shape_lines();
if (TS->shaped_text_get_orientation(rid) == TextServer::ORIENTATION_HORIZONTAL) {
return Size2(TS->shaped_text_get_size(rid).x, TS->shaped_text_get_size(rid).y + spacing_top + spacing_bottom);
diff --git a/scene/resources/text_paragraph.h b/scene/resources/text_paragraph.h
index 69c50559df..701c9a17cd 100644
--- a/scene/resources/text_paragraph.h
+++ b/scene/resources/text_paragraph.h
@@ -120,7 +120,7 @@ public:
void set_max_lines_visible(int p_lines);
int get_max_lines_visible() const;
- Size2 get_non_wraped_size() const;
+ Size2 get_non_wrapped_size() const;
Size2 get_size() const;
diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp
index f5e52b70e6..a45b6b8eb6 100644
--- a/scene/resources/tile_set.cpp
+++ b/scene/resources/tile_set.cpp
@@ -31,6 +31,7 @@
#include "tile_set.h"
#include "core/core_string_names.h"
+#include "core/io/marshalls.h"
#include "core/math/geometry_2d.h"
#include "core/templates/local_vector.h"
@@ -39,6 +40,189 @@
#include "scene/resources/convex_polygon_shape_2d.h"
#include "servers/navigation_server_2d.h"
+/////////////////////////////// TileMapPattern //////////////////////////////////////
+
+void TileMapPattern::_set_tile_data(const Vector<int> &p_data) {
+ int c = p_data.size();
+ const int *r = p_data.ptr();
+
+ int offset = 3;
+ ERR_FAIL_COND_MSG(c % offset != 0, "Corrupted tile data.");
+
+ clear();
+
+ for (int i = 0; i < c; i += offset) {
+ const uint8_t *ptr = (const uint8_t *)&r[i];
+ uint8_t local[12];
+ for (int j = 0; j < 12; j++) {
+ local[j] = ptr[j];
+ }
+
+#ifdef BIG_ENDIAN_ENABLED
+ SWAP(local[0], local[3]);
+ SWAP(local[1], local[2]);
+ SWAP(local[4], local[7]);
+ SWAP(local[5], local[6]);
+ SWAP(local[8], local[11]);
+ SWAP(local[9], local[10]);
+#endif
+
+ int16_t x = decode_uint16(&local[0]);
+ int16_t y = decode_uint16(&local[2]);
+ uint16_t source_id = decode_uint16(&local[4]);
+ uint16_t atlas_coords_x = decode_uint16(&local[6]);
+ uint16_t atlas_coords_y = decode_uint16(&local[8]);
+ uint16_t alternative_tile = decode_uint16(&local[10]);
+ set_cell(Vector2i(x, y), source_id, Vector2i(atlas_coords_x, atlas_coords_y), alternative_tile);
+ }
+ emit_signal(SNAME("changed"));
+}
+
+Vector<int> TileMapPattern::_get_tile_data() const {
+ // Export tile data to raw format
+ Vector<int> data;
+ data.resize(pattern.size() * 3);
+ int *w = data.ptrw();
+
+ // Save in highest format
+
+ int idx = 0;
+ for (const KeyValue<Vector2i, TileMapCell> &E : pattern) {
+ uint8_t *ptr = (uint8_t *)&w[idx];
+ encode_uint16((int16_t)(E.key.x), &ptr[0]);
+ encode_uint16((int16_t)(E.key.y), &ptr[2]);
+ encode_uint16(E.value.source_id, &ptr[4]);
+ encode_uint16(E.value.coord_x, &ptr[6]);
+ encode_uint16(E.value.coord_y, &ptr[8]);
+ encode_uint16(E.value.alternative_tile, &ptr[10]);
+ idx += 3;
+ }
+
+ return data;
+}
+
+void TileMapPattern::set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i p_atlas_coords, int p_alternative_tile) {
+ ERR_FAIL_COND_MSG(p_coords.x < 0 || p_coords.y < 0, vformat("Cannot set cell with negative coords in a TileMapPattern. Wrong coords: %s", p_coords));
+
+ size = size.max(p_coords + Vector2i(1, 1));
+ pattern[p_coords] = TileMapCell(p_source_id, p_atlas_coords, p_alternative_tile);
+ emit_changed();
+}
+
+bool TileMapPattern::has_cell(const Vector2i &p_coords) const {
+ return pattern.has(p_coords);
+}
+
+void TileMapPattern::remove_cell(const Vector2i &p_coords, bool p_update_size) {
+ ERR_FAIL_COND(!pattern.has(p_coords));
+
+ pattern.erase(p_coords);
+ if (p_update_size) {
+ size = Vector2i();
+ for (const KeyValue<Vector2i, TileMapCell> &E : pattern) {
+ size = size.max(E.key + Vector2i(1, 1));
+ }
+ }
+ emit_changed();
+}
+
+int TileMapPattern::get_cell_source_id(const Vector2i &p_coords) const {
+ ERR_FAIL_COND_V(!pattern.has(p_coords), TileSet::INVALID_SOURCE);
+
+ return pattern[p_coords].source_id;
+}
+
+Vector2i TileMapPattern::get_cell_atlas_coords(const Vector2i &p_coords) const {
+ ERR_FAIL_COND_V(!pattern.has(p_coords), TileSetSource::INVALID_ATLAS_COORDS);
+
+ return pattern[p_coords].get_atlas_coords();
+}
+
+int TileMapPattern::get_cell_alternative_tile(const Vector2i &p_coords) const {
+ ERR_FAIL_COND_V(!pattern.has(p_coords), TileSetSource::INVALID_TILE_ALTERNATIVE);
+
+ return pattern[p_coords].alternative_tile;
+}
+
+TypedArray<Vector2i> TileMapPattern::get_used_cells() const {
+ // Returns the cells used in the tilemap.
+ TypedArray<Vector2i> a;
+ a.resize(pattern.size());
+ int i = 0;
+ for (const KeyValue<Vector2i, TileMapCell> &E : pattern) {
+ Vector2i p(E.key.x, E.key.y);
+ a[i++] = p;
+ }
+
+ return a;
+}
+
+Vector2i TileMapPattern::get_size() const {
+ return size;
+}
+
+void TileMapPattern::set_size(const Vector2i &p_size) {
+ for (const KeyValue<Vector2i, TileMapCell> &E : pattern) {
+ Vector2i coords = E.key;
+ if (p_size.x <= coords.x || p_size.y <= coords.y) {
+ ERR_FAIL_MSG(vformat("Cannot set pattern size to %s, it contains a tile at %s. Size can only be increased.", p_size, coords));
+ };
+ }
+
+ size = p_size;
+ emit_changed();
+}
+
+bool TileMapPattern::is_empty() const {
+ return pattern.is_empty();
+};
+
+void TileMapPattern::clear() {
+ size = Vector2i();
+ pattern.clear();
+ emit_changed();
+};
+
+bool TileMapPattern::_set(const StringName &p_name, const Variant &p_value) {
+ if (p_name == "tile_data") {
+ if (p_value.is_array()) {
+ _set_tile_data(p_value);
+ return true;
+ }
+ return false;
+ }
+ return false;
+}
+
+bool TileMapPattern::_get(const StringName &p_name, Variant &r_ret) const {
+ if (p_name == "tile_data") {
+ r_ret = _get_tile_data();
+ return true;
+ }
+ return false;
+}
+
+void TileMapPattern::_get_property_list(List<PropertyInfo> *p_list) const {
+ p_list->push_back(PropertyInfo(Variant::OBJECT, "tile_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+}
+
+void TileMapPattern::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("_set_tile_data", "data"), &TileMapPattern::_set_tile_data);
+ ClassDB::bind_method(D_METHOD("_get_tile_data"), &TileMapPattern::_get_tile_data);
+
+ ClassDB::bind_method(D_METHOD("set_cell", "coords", "source_id", "atlas_coords", "alternative_tile"), &TileMapPattern::set_cell, DEFVAL(TileSet::INVALID_SOURCE), DEFVAL(TileSetSource::INVALID_ATLAS_COORDS), DEFVAL(TileSetSource::INVALID_TILE_ALTERNATIVE));
+ ClassDB::bind_method(D_METHOD("has_cell", "coords"), &TileMapPattern::has_cell);
+ ClassDB::bind_method(D_METHOD("remove_cell", "coords"), &TileMapPattern::remove_cell);
+ ClassDB::bind_method(D_METHOD("get_cell_source_id", "coords"), &TileMapPattern::get_cell_source_id);
+ ClassDB::bind_method(D_METHOD("get_cell_atlas_coords", "coords"), &TileMapPattern::get_cell_atlas_coords);
+ ClassDB::bind_method(D_METHOD("get_cell_alternative_tile", "coords"), &TileMapPattern::get_cell_alternative_tile);
+
+ ClassDB::bind_method(D_METHOD("get_used_cells"), &TileMapPattern::get_used_cells);
+ ClassDB::bind_method(D_METHOD("get_size"), &TileMapPattern::get_size);
+ ClassDB::bind_method(D_METHOD("set_size", "size"), &TileMapPattern::set_size);
+ ClassDB::bind_method(D_METHOD("is_empty"), &TileMapPattern::is_empty);
+}
+
/////////////////////////////// TileSet //////////////////////////////////////
const int TileSet::INVALID_SOURCE = -1;
@@ -982,6 +1166,36 @@ void TileSet::clear_tile_proxies() {
emit_changed();
}
+int TileSet::add_pattern(Ref<TileMapPattern> p_pattern, int p_index) {
+ ERR_FAIL_COND_V(!p_pattern.is_valid(), -1);
+ ERR_FAIL_COND_V_MSG(p_pattern->is_empty(), -1, "Cannot add an empty pattern to the TileSet.");
+ for (unsigned int i = 0; i < patterns.size(); i++) {
+ ERR_FAIL_COND_V_MSG(patterns[i] == p_pattern, -1, "TileSet has already this pattern.");
+ }
+ ERR_FAIL_COND_V(p_index > (int)patterns.size(), -1);
+ if (p_index < 0) {
+ p_index = patterns.size();
+ }
+ patterns.insert(p_index, p_pattern);
+ emit_changed();
+ return p_index;
+}
+
+Ref<TileMapPattern> TileSet::get_pattern(int p_index) {
+ ERR_FAIL_INDEX_V(p_index, (int)patterns.size(), Ref<TileMapPattern>());
+ return patterns[p_index];
+}
+
+void TileSet::remove_pattern(int p_index) {
+ ERR_FAIL_INDEX(p_index, (int)patterns.size());
+ patterns.remove(p_index);
+ emit_changed();
+}
+
+int TileSet::get_patterns_count() {
+ return patterns.size();
+}
+
Vector<Vector2> TileSet::get_tile_shape_polygon() {
Vector<Vector2> points;
if (tile_shape == TileSet::TILE_SHAPE_SQUARE) {
@@ -2483,6 +2697,12 @@ bool TileSet::_set(const StringName &p_name, const Variant &p_value) {
return true;
}
return false;
+ } else if (components.size() == 1 && components[0].begins_with("pattern_") && components[0].trim_prefix("pattern_").is_valid_int()) {
+ int pattern_index = components[0].trim_prefix("pattern_").to_int();
+ for (int i = patterns.size(); i <= pattern_index; i++) {
+ add_pattern(p_value);
+ }
+ return true;
}
#ifndef DISABLE_DEPRECATED
@@ -2606,6 +2826,13 @@ bool TileSet::_get(const StringName &p_name, Variant &r_ret) const {
return true;
}
return false;
+ } else if (components.size() == 1 && components[0].begins_with("pattern_") && components[0].trim_prefix("pattern_").is_valid_int()) {
+ int pattern_index = components[0].trim_prefix("pattern_").to_int();
+ if (pattern_index < 0 || pattern_index >= (int)patterns.size()) {
+ return false;
+ }
+ r_ret = patterns[pattern_index];
+ return true;
}
return false;
@@ -2686,6 +2913,11 @@ void TileSet::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::ARRAY, "tile_proxies/source_level", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
p_list->push_back(PropertyInfo(Variant::ARRAY, "tile_proxies/coords_level", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
p_list->push_back(PropertyInfo(Variant::ARRAY, "tile_proxies/alternative_level", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+
+ // Patterns.
+ for (unsigned int pattern_index = 0; pattern_index < patterns.size(); pattern_index++) {
+ p_list->push_back(PropertyInfo(Variant::OBJECT, vformat("pattern_%d", pattern_index), PROPERTY_HINT_RESOURCE_TYPE, "TileMapPattern", PROPERTY_USAGE_NOEDITOR));
+ }
}
void TileSet::_validate_property(PropertyInfo &property) const {
@@ -2799,6 +3031,12 @@ void TileSet::_bind_methods() {
ClassDB::bind_method(D_METHOD("cleanup_invalid_tile_proxies"), &TileSet::cleanup_invalid_tile_proxies);
ClassDB::bind_method(D_METHOD("clear_tile_proxies"), &TileSet::clear_tile_proxies);
+ // Patterns
+ ClassDB::bind_method(D_METHOD("add_pattern", "pattern", "index"), &TileSet::add_pattern, DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("get_pattern", "index"), &TileSet::get_pattern, DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("remove_pattern", "index"), &TileSet::remove_pattern);
+ ClassDB::bind_method(D_METHOD("get_patterns_count"), &TileSet::get_patterns_count);
+
ADD_GROUP("Rendering", "");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "uv_clipping"), "set_uv_clipping", "is_uv_clipping");
ADD_ARRAY("occlusion_layers", "occlusion_layer_");
@@ -3066,6 +3304,7 @@ void TileSetAtlasSource::reset_state() {
void TileSetAtlasSource::set_texture(Ref<Texture2D> p_texture) {
texture = p_texture;
+ _clear_tiles_outside_texture();
emit_changed();
}
@@ -3081,6 +3320,7 @@ void TileSetAtlasSource::set_margins(Vector2i p_margins) {
margins = p_margins;
}
+ _clear_tiles_outside_texture();
emit_changed();
}
Vector2i TileSetAtlasSource::get_margins() const {
@@ -3095,6 +3335,7 @@ void TileSetAtlasSource::set_separation(Vector2i p_separation) {
separation = p_separation;
}
+ _clear_tiles_outside_texture();
emit_changed();
}
Vector2i TileSetAtlasSource::get_separation() const {
@@ -3109,6 +3350,7 @@ void TileSetAtlasSource::set_texture_region_size(Vector2i p_tile_size) {
texture_region_size = p_tile_size;
}
+ _clear_tiles_outside_texture();
emit_changed();
}
Vector2i TileSetAtlasSource::get_texture_region_size() const {
@@ -3354,7 +3596,7 @@ void TileSetAtlasSource::create_tile(const Vector2i p_atlas_coords, const Vector
ERR_FAIL_COND(p_size.x <= 0 || p_size.y <= 0);
bool room_for_tile = has_room_for_tile(p_atlas_coords, p_size, 1, Vector2i(), 1);
- ERR_FAIL_COND_MSG(!room_for_tile, "Cannot create tile, tiles are already present in the space the tile would cover.");
+ ERR_FAIL_COND_MSG(!room_for_tile, "Cannot create tile. The tile is outside the texture or tiles are already present in the space the tile would cover.");
// Initialize the tile data.
TileAlternativesData tad;
@@ -3552,9 +3794,7 @@ bool TileSetAtlasSource::has_room_for_tile(Vector2i p_atlas_coords, Vector2i p_s
return false;
}
if (coords.x >= atlas_grid_size.x || coords.y >= atlas_grid_size.y) {
- if (!(_coords_mapping_cache.has(coords) && _coords_mapping_cache[coords] == p_ignored_tile)) {
- return false; // Only accept tiles outside the atlas if they are part of the ignored tile.
- }
+ return false;
}
}
}
@@ -3562,6 +3802,37 @@ bool TileSetAtlasSource::has_room_for_tile(Vector2i p_atlas_coords, Vector2i p_s
return true;
}
+PackedVector2Array TileSetAtlasSource::get_tiles_to_be_removed_on_change(Ref<Texture2D> p_texture, Vector2i p_margins, Vector2i p_separation, Vector2i p_texture_region_size) {
+ ERR_FAIL_COND_V(p_margins.x < 0 || p_margins.y < 0, PackedVector2Array());
+ ERR_FAIL_COND_V(p_separation.x < 0 || p_separation.y < 0, PackedVector2Array());
+ ERR_FAIL_COND_V(p_texture_region_size.x <= 0 || p_texture_region_size.y <= 0, PackedVector2Array());
+
+ // Compute the new atlas grid size.
+ Size2 new_grid_size;
+ if (p_texture.is_valid()) {
+ Size2i valid_area = p_texture->get_size() - p_margins;
+
+ // Compute the number of valid tiles in the tiles atlas
+ if (valid_area.x >= p_texture_region_size.x && valid_area.y >= p_texture_region_size.y) {
+ valid_area -= p_texture_region_size;
+ new_grid_size = Size2i(1, 1) + valid_area / (p_texture_region_size + p_separation);
+ }
+ }
+
+ Vector<Vector2> output;
+ for (KeyValue<Vector2i, TileAlternativesData> &E : tiles) {
+ for (unsigned int frame = 0; frame < E.value.animation_frames_durations.size(); frame++) {
+ Vector2i frame_coords = E.key + (E.value.size_in_atlas + E.value.animation_separation) * ((E.value.animation_columns > 0) ? Vector2i(frame % E.value.animation_columns, frame / E.value.animation_columns) : Vector2i(frame, 0));
+ frame_coords += E.value.size_in_atlas;
+ if (frame_coords.x > new_grid_size.x || frame_coords.y > new_grid_size.y) {
+ output.push_back(E.key);
+ break;
+ }
+ }
+ }
+ return output;
+}
+
Rect2i TileSetAtlasSource::get_tile_texture_region(Vector2i p_atlas_coords, int p_frame) const {
ERR_FAIL_COND_V_MSG(!tiles.has(p_atlas_coords), Rect2i(), vformat("TileSetAtlasSource has no tile at %s.", String(p_atlas_coords)));
ERR_FAIL_INDEX_V(p_frame, (int)tiles[p_atlas_coords].animation_frames_durations.size(), Rect2i());
@@ -3626,34 +3897,6 @@ void TileSetAtlasSource::move_tile_in_atlas(Vector2i p_atlas_coords, Vector2i p_
emit_signal(SNAME("changed"));
}
-bool TileSetAtlasSource::has_tiles_outside_texture() {
- Vector2i grid_size = get_atlas_grid_size();
- Vector<Vector2i> to_remove;
-
- for (const KeyValue<Vector2i, TileSetAtlasSource::TileAlternativesData> &E : tiles) {
- if (E.key.x >= grid_size.x || E.key.y >= grid_size.y) {
- return true;
- }
- }
-
- return false;
-}
-
-void TileSetAtlasSource::clear_tiles_outside_texture() {
- Vector2i grid_size = get_atlas_grid_size();
- Vector<Vector2i> to_remove;
-
- for (const KeyValue<Vector2i, TileSetAtlasSource::TileAlternativesData> &E : tiles) {
- if (E.key.x >= grid_size.x || E.key.y >= grid_size.y) {
- to_remove.append(E.key);
- }
- }
-
- for (int i = 0; i < to_remove.size(); i++) {
- remove_tile(to_remove[i]);
- }
-}
-
int TileSetAtlasSource::create_alternative_tile(const Vector2i p_atlas_coords, int p_alternative_id_override) {
ERR_FAIL_COND_V_MSG(!tiles.has(p_atlas_coords), TileSetSource::INVALID_TILE_ALTERNATIVE, vformat("TileSetAtlasSource has no tile at %s.", String(p_atlas_coords)));
ERR_FAIL_COND_V_MSG(p_alternative_id_override >= 0 && tiles[p_atlas_coords].alternatives.has(p_alternative_id_override), TileSetSource::INVALID_TILE_ALTERNATIVE, vformat("Cannot create alternative tile. Another alternative exists with id %d.", p_alternative_id_override));
@@ -3754,7 +3997,7 @@ void TileSetAtlasSource::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_tile_size_in_atlas", "atlas_coords"), &TileSetAtlasSource::get_tile_size_in_atlas);
ClassDB::bind_method(D_METHOD("has_room_for_tile", "atlas_coords", "size", "animation_columns", "animation_separation", "frames_count", "ignored_tile"), &TileSetAtlasSource::has_room_for_tile, DEFVAL(INVALID_ATLAS_COORDS));
-
+ ClassDB::bind_method(D_METHOD("get_tiles_to_be_removed_on_change", "texture", "margins", "separation", "texture_region_size"), &TileSetAtlasSource::get_tiles_to_be_removed_on_change);
ClassDB::bind_method(D_METHOD("get_tile_at_coords", "atlas_coords"), &TileSetAtlasSource::get_tile_at_coords);
ClassDB::bind_method(D_METHOD("set_tile_animation_columns", "atlas_coords", "frame_columns"), &TileSetAtlasSource::set_tile_animation_columns);
@@ -3779,8 +4022,6 @@ void TileSetAtlasSource::_bind_methods() {
// Helpers.
ClassDB::bind_method(D_METHOD("get_atlas_grid_size"), &TileSetAtlasSource::get_atlas_grid_size);
- ClassDB::bind_method(D_METHOD("has_tiles_outside_texture"), &TileSetAtlasSource::has_tiles_outside_texture);
- ClassDB::bind_method(D_METHOD("clear_tiles_outside_texture"), &TileSetAtlasSource::clear_tiles_outside_texture);
ClassDB::bind_method(D_METHOD("get_tile_texture_region", "atlas_coords", "frame"), &TileSetAtlasSource::get_tile_texture_region, DEFVAL(0));
}
@@ -3854,6 +4095,20 @@ void TileSetAtlasSource::_create_coords_mapping_cache(Vector2i p_atlas_coords) {
}
}
+void TileSetAtlasSource::_clear_tiles_outside_texture() {
+ LocalVector<Vector2i> to_remove;
+
+ for (const KeyValue<Vector2i, TileSetAtlasSource::TileAlternativesData> &E : tiles) {
+ if (!has_room_for_tile(E.key, E.value.size_in_atlas, E.value.animation_columns, E.value.animation_separation, E.value.animation_frames_durations.size(), E.key)) {
+ to_remove.push_back(E.key);
+ }
+ }
+
+ for (unsigned int i = 0; i < to_remove.size(); i++) {
+ remove_tile(to_remove[i]);
+ }
+}
+
/////////////////////////////// TileSetScenesCollectionSource //////////////////////////////////////
void TileSetScenesCollectionSource::_compute_next_alternative_id() {
diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h
index 716b66405f..530c90920f 100644
--- a/scene/resources/tile_set.h
+++ b/scene/resources/tile_set.h
@@ -60,6 +60,84 @@ class TileSetPluginAtlasRendering;
class TileSetPluginAtlasPhysics;
class TileSetPluginAtlasNavigation;
+union TileMapCell {
+ struct {
+ int32_t source_id : 16;
+ int16_t coord_x : 16;
+ int16_t coord_y : 16;
+ int32_t alternative_tile : 16;
+ };
+
+ uint64_t _u64t;
+ TileMapCell(int p_source_id = -1, Vector2i p_atlas_coords = Vector2i(-1, -1), int p_alternative_tile = -1) { // default are INVALID_SOURCE, INVALID_ATLAS_COORDS, INVALID_TILE_ALTERNATIVE
+ source_id = p_source_id;
+ set_atlas_coords(p_atlas_coords);
+ alternative_tile = p_alternative_tile;
+ }
+
+ Vector2i get_atlas_coords() const {
+ return Vector2i(coord_x, coord_y);
+ }
+
+ void set_atlas_coords(const Vector2i &r_coords) {
+ coord_x = r_coords.x;
+ coord_y = r_coords.y;
+ }
+
+ bool operator<(const TileMapCell &p_other) const {
+ if (source_id == p_other.source_id) {
+ if (coord_x == p_other.coord_x) {
+ if (coord_y == p_other.coord_y) {
+ return alternative_tile < p_other.alternative_tile;
+ } else {
+ return coord_y < p_other.coord_y;
+ }
+ } else {
+ return coord_x < p_other.coord_x;
+ }
+ } else {
+ return source_id < p_other.source_id;
+ }
+ }
+
+ bool operator!=(const TileMapCell &p_other) const {
+ return !(source_id == p_other.source_id && coord_x == p_other.coord_x && coord_y == p_other.coord_y && alternative_tile == p_other.alternative_tile);
+ }
+};
+
+class TileMapPattern : public Resource {
+ GDCLASS(TileMapPattern, Resource);
+
+ Vector2i size;
+ Map<Vector2i, TileMapCell> pattern;
+
+ void _set_tile_data(const Vector<int> &p_data);
+ Vector<int> _get_tile_data() const;
+
+protected:
+ bool _set(const StringName &p_name, const Variant &p_value);
+ bool _get(const StringName &p_name, Variant &r_ret) const;
+ void _get_property_list(List<PropertyInfo> *p_list) const;
+
+ static void _bind_methods();
+
+public:
+ void set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i p_atlas_coords, int p_alternative_tile = 0);
+ bool has_cell(const Vector2i &p_coords) const;
+ void remove_cell(const Vector2i &p_coords, bool p_update_size = true);
+ int get_cell_source_id(const Vector2i &p_coords) const;
+ Vector2i get_cell_atlas_coords(const Vector2i &p_coords) const;
+ int get_cell_alternative_tile(const Vector2i &p_coords) const;
+
+ TypedArray<Vector2i> get_used_cells() const;
+
+ Vector2i get_size() const;
+ void set_size(const Vector2i &p_size);
+ bool is_empty() const;
+
+ void clear();
+};
+
class TileSet : public Resource {
GDCLASS(TileSet, Resource);
@@ -245,6 +323,8 @@ private:
int next_source_id = 0;
// ---------------------
+ LocalVector<Ref<TileMapPattern>> patterns;
+
void _compute_next_source_id();
void _source_changed();
@@ -384,6 +464,12 @@ public:
void cleanup_invalid_tile_proxies();
void clear_tile_proxies();
+ // Patterns.
+ int add_pattern(Ref<TileMapPattern> p_pattern, int p_index = -1);
+ Ref<TileMapPattern> get_pattern(int p_index);
+ void remove_pattern(int p_index);
+ int get_patterns_count();
+
// Helpers
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>());
@@ -479,8 +565,10 @@ private:
void _compute_next_alternative_id(const Vector2i p_atlas_coords);
- void _create_coords_mapping_cache(Vector2i p_atlas_coords);
void _clear_coords_mapping_cache(Vector2i p_atlas_coords);
+ void _create_coords_mapping_cache(Vector2i p_atlas_coords);
+
+ void _clear_tiles_outside_texture();
protected:
bool _set(const StringName &p_name, const Variant &p_value);
@@ -534,7 +622,7 @@ public:
virtual Vector2i get_tile_id(int p_index) const override;
bool has_room_for_tile(Vector2i p_atlas_coords, Vector2i p_size, int p_animation_columns, Vector2i p_animation_separation, int p_frames_count, Vector2i p_ignored_tile = INVALID_ATLAS_COORDS) const;
-
+ PackedVector2Array get_tiles_to_be_removed_on_change(Ref<Texture2D> p_texture, Vector2i p_margins, Vector2i p_separation, Vector2i p_texture_region_size);
Vector2i get_tile_at_coords(Vector2i p_atlas_coords) const;
// Animation.
@@ -565,8 +653,6 @@ public:
// Helpers.
Vector2i get_atlas_grid_size() const;
- bool has_tiles_outside_texture();
- void clear_tiles_outside_texture();
Rect2i get_tile_texture_region(Vector2i p_atlas_coords, int p_frame = 0) const;
Vector2i get_tile_effective_texture_offset(Vector2i p_atlas_coords, int p_alternative_tile) const;
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index 934d16bd7e..0dc83b4bb8 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -113,6 +113,10 @@ bool VisualShaderNode::is_output_port_expandable(int p_port) const {
return false;
}
+bool VisualShaderNode::has_output_port_preview(int p_port) const {
+ return true;
+}
+
void VisualShaderNode::_set_output_ports_expanded(const Array &p_values) {
for (int i = 0; i < p_values.size(); i++) {
expanded_output_ports[p_values[i]] = true;
@@ -2307,7 +2311,21 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
};
const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = {
+ // Spatial, Vertex
+
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "vec3(0.0, 0.0, 1.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "tangent", "vec3(0.0, 1.0, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "binormal", "vec3(1.0, 0.0, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv2", "vec3(UV, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(1.0, 1.0, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+
// Spatial, Fragment
+
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.rgb" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "vec3(0.0, 0.0, 1.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "tangent", "vec3(0.0, 1.0, 0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "binormal", "vec3(1.0, 0.0, 0.0)" },
@@ -2315,44 +2333,59 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv2", "vec3(UV, 0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" },
-
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV, 0.0)" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "side", "1.0" },
-
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(1.0, 1.0, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
// Spatial, Light
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "vec3(0.0, 0.0, 1.0)" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.rgb" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "vec3(0.0, 0.0, 1.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv2", "vec3(UV, 0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(1.0, 1.0, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+
// Canvas Item, Vertex
+
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "vec3(VERTEX, 0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV, 0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+
// Canvas Item, Fragment
+
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV, 0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV, 0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+
// Canvas Item, Light
+
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV, 0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "vec3(0.0, 0.0, 1.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" },
-
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV, 0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+ // Sky
+
+ { Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV, 0.0)" },
+ { Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+
// Particles
+
{ Shader::MODE_PARTICLES, VisualShader::TYPE_START, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_PARTICLES, VisualShader::TYPE_PROCESS, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_PARTICLES, VisualShader::TYPE_COLLIDE, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_PARTICLES, VisualShader::TYPE_START_CUSTOM, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_PARTICLES, VisualShader::TYPE_PROCESS_CUSTOM, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
+
{ Shader::MODE_MAX, VisualShader::TYPE_MAX, VisualShaderNode::PORT_TYPE_TRANSFORM, nullptr, nullptr },
};
@@ -2413,13 +2446,10 @@ String VisualShaderNodeInput::generate_code(Shader::Mode p_mode, VisualShader::T
case PORT_TYPE_VECTOR: {
code = " " + p_output_vars[0] + " = vec3(0.0);\n";
} break;
- case PORT_TYPE_TRANSFORM: {
- code = " " + p_output_vars[0] + " = mat4(vec4(1.0, 0.0, 0.0, 0.0), vec4(0.0, 1.0, 0.0, 0.0), vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0));\n";
- } break;
case PORT_TYPE_BOOLEAN: {
code = " " + p_output_vars[0] + " = false;\n";
} break;
- default: //default (none found) is scalar
+ default:
break;
}
}
diff --git a/scene/resources/visual_shader.h b/scene/resources/visual_shader.h
index b3efac02aa..f910f28536 100644
--- a/scene/resources/visual_shader.h
+++ b/scene/resources/visual_shader.h
@@ -254,6 +254,8 @@ public:
void set_input_port_connected(int p_port, bool p_connected);
virtual bool is_generate_input_var(int p_port) const;
+ virtual bool has_output_port_preview(int p_port) const;
+
virtual bool is_output_port_expandable(int p_port) const;
void _set_output_ports_expanded(const Array &p_data);
Array _get_output_ports_expanded() const;
diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp
index e45dfdcb1b..c3d9ef7b04 100644
--- a/scene/resources/visual_shader_nodes.cpp
+++ b/scene/resources/visual_shader_nodes.cpp
@@ -918,6 +918,7 @@ bool VisualShaderNodeCurveTexture::is_use_prop_slots() const {
}
VisualShaderNodeCurveTexture::VisualShaderNodeCurveTexture() {
+ set_input_port_default_value(0, 0.0);
simple_decl = true;
allow_v_resize = false;
}
@@ -1002,6 +1003,7 @@ bool VisualShaderNodeCurveXYZTexture::is_use_prop_slots() const {
}
VisualShaderNodeCurveXYZTexture::VisualShaderNodeCurveXYZTexture() {
+ set_input_port_default_value(0, 0.0);
simple_decl = true;
allow_v_resize = false;
}
diff --git a/scene/resources/visual_shader_particle_nodes.cpp b/scene/resources/visual_shader_particle_nodes.cpp
index 5fe801e037..18b933e5cf 100644
--- a/scene/resources/visual_shader_particle_nodes.cpp
+++ b/scene/resources/visual_shader_particle_nodes.cpp
@@ -47,6 +47,10 @@ String VisualShaderNodeParticleEmitter::get_output_port_name(int p_port) const {
return String();
}
+bool VisualShaderNodeParticleEmitter::has_output_port_preview(int p_port) const {
+ return false;
+}
+
VisualShaderNodeParticleEmitter::VisualShaderNodeParticleEmitter() {
}
@@ -265,6 +269,10 @@ Vector<StringName> VisualShaderNodeParticleMultiplyByAxisAngle::get_editable_pro
return props;
}
+bool VisualShaderNodeParticleMultiplyByAxisAngle::has_output_port_preview(int p_port) const {
+ return false;
+}
+
VisualShaderNodeParticleMultiplyByAxisAngle::VisualShaderNodeParticleMultiplyByAxisAngle() {
set_input_port_default_value(1, Vector3(1, 0, 0));
set_input_port_default_value(2, 0.0);
@@ -313,6 +321,10 @@ String VisualShaderNodeParticleConeVelocity::get_output_port_name(int p_port) co
return String();
}
+bool VisualShaderNodeParticleConeVelocity::has_output_port_preview(int p_port) const {
+ return false;
+}
+
String VisualShaderNodeParticleConeVelocity::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
String code;
code += " __radians = radians(" + (p_input_vars[1].is_empty() ? (String)get_input_port_default_value(1) : p_input_vars[1]) + ");\n";
@@ -421,6 +433,10 @@ VisualShaderNodeParticleRandomness::OpType VisualShaderNodeParticleRandomness::g
return op_type;
}
+bool VisualShaderNodeParticleRandomness::has_output_port_preview(int p_port) const {
+ return false;
+}
+
VisualShaderNodeParticleRandomness::VisualShaderNodeParticleRandomness() {
set_input_port_default_value(0, 0.0);
set_input_port_default_value(1, 1.0);
@@ -521,6 +537,10 @@ VisualShaderNodeParticleAccelerator::Mode VisualShaderNodeParticleAccelerator::g
return mode;
}
+bool VisualShaderNodeParticleAccelerator::has_output_port_preview(int p_port) const {
+ return false;
+}
+
VisualShaderNodeParticleAccelerator::VisualShaderNodeParticleAccelerator() {
set_input_port_default_value(0, Vector3(1, 1, 1));
set_input_port_default_value(1, 0.0);
diff --git a/scene/resources/visual_shader_particle_nodes.h b/scene/resources/visual_shader_particle_nodes.h
index f5435c3511..b8bc7992cc 100644
--- a/scene/resources/visual_shader_particle_nodes.h
+++ b/scene/resources/visual_shader_particle_nodes.h
@@ -42,6 +42,7 @@ public:
virtual int get_output_port_count() const override;
virtual PortType get_output_port_type(int p_port) const override;
virtual String get_output_port_name(int p_port) const override;
+ virtual bool has_output_port_preview(int p_port) const override;
VisualShaderNodeParticleEmitter();
};
@@ -112,6 +113,7 @@ public:
virtual int get_output_port_count() const override;
virtual PortType get_output_port_type(int p_port) const override;
virtual String get_output_port_name(int p_port) const override;
+ virtual bool has_output_port_preview(int p_port) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override;
@@ -135,6 +137,7 @@ public:
virtual int get_output_port_count() const override;
virtual PortType get_output_port_type(int p_port) const override;
virtual String get_output_port_name(int p_port) const override;
+ virtual bool has_output_port_preview(int p_port) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override;
@@ -168,6 +171,7 @@ public:
virtual int get_output_port_count() const override;
virtual PortType get_output_port_type(int p_port) const override;
virtual String get_output_port_name(int p_port) const override;
+ virtual bool has_output_port_preview(int p_port) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override;
@@ -209,6 +213,7 @@ public:
virtual int get_output_port_count() const override;
virtual PortType get_output_port_type(int p_port) const override;
virtual String get_output_port_name(int p_port) const override;
+ virtual bool has_output_port_preview(int p_port) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override;
diff --git a/servers/audio/effects/audio_effect_limiter.h b/servers/audio/effects/audio_effect_limiter.h
index d5def670a4..398613aa44 100644
--- a/servers/audio/effects/audio_effect_limiter.h
+++ b/servers/audio/effects/audio_effect_limiter.h
@@ -72,8 +72,6 @@ public:
float get_soft_clip_ratio() const;
Ref<AudioEffectInstance> instantiate() override;
- void set_volume_db(float p_volume);
- float get_volume_db() const;
AudioEffectLimiter();
};
diff --git a/servers/audio/effects/audio_effect_record.h b/servers/audio/effects/audio_effect_record.h
index 1a89821f80..6e862b1377 100644
--- a/servers/audio/effects/audio_effect_record.h
+++ b/servers/audio/effects/audio_effect_record.h
@@ -93,7 +93,6 @@ class AudioEffectRecord : public AudioEffect {
protected:
static void _bind_methods();
- static void debug(uint64_t time_diff, int p_frame_count);
public:
Ref<AudioEffectInstance> instantiate() override;
diff --git a/servers/audio/effects/audio_effect_reverb.h b/servers/audio/effects/audio_effect_reverb.h
index d01d1120bd..eaa66352f6 100644
--- a/servers/audio/effects/audio_effect_reverb.h
+++ b/servers/audio/effects/audio_effect_reverb.h
@@ -90,8 +90,6 @@ public:
float get_hpf() const;
Ref<AudioEffectInstance> instantiate() override;
- void set_volume_db(float p_volume);
- float get_volume_db() const;
AudioEffectReverb();
};
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp
index a420134626..ab704c6f78 100644
--- a/servers/audio_server.cpp
+++ b/servers/audio_server.cpp
@@ -1131,8 +1131,10 @@ void AudioServer::start_playback_stream(Ref<AudioStreamPlayback> p_playback, Map
AudioStreamPlaybackBusDetails *new_bus_details = new AudioStreamPlaybackBusDetails();
int idx = 0;
for (KeyValue<StringName, Vector<AudioFrame>> pair : p_bus_volumes) {
- ERR_FAIL_COND(pair.value.size() < channel_count);
- ERR_FAIL_COND(pair.value.size() != MAX_CHANNELS_PER_BUS);
+ if (pair.value.size() < channel_count || pair.value.size() != MAX_CHANNELS_PER_BUS) {
+ delete new_bus_details;
+ ERR_FAIL();
+ }
new_bus_details->bus_active[idx] = true;
new_bus_details->bus[idx] = pair.key;
diff --git a/servers/display_server.cpp b/servers/display_server.cpp
index 3897e5e7c2..3fb47e8f05 100644
--- a/servers/display_server.cpp
+++ b/servers/display_server.cpp
@@ -159,6 +159,14 @@ String DisplayServer::clipboard_get() const {
ERR_FAIL_V_MSG(String(), "Clipboard is not supported by this display server.");
}
+void DisplayServer::clipboard_set_primary(const String &p_text) {
+ WARN_PRINT("Primary clipboard is not supported by this display server.");
+}
+
+String DisplayServer::clipboard_get_primary() const {
+ ERR_FAIL_V_MSG(String(), "Primary clipboard is not supported by this display server.");
+}
+
void DisplayServer::screen_set_orientation(ScreenOrientation p_orientation, int p_screen) {
WARN_PRINT("Orientation not supported by this display server.");
}
@@ -360,6 +368,8 @@ void DisplayServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("clipboard_set", "clipboard"), &DisplayServer::clipboard_set);
ClassDB::bind_method(D_METHOD("clipboard_get"), &DisplayServer::clipboard_get);
+ ClassDB::bind_method(D_METHOD("clipboard_set_primary", "clipboard_primary"), &DisplayServer::clipboard_set_primary);
+ ClassDB::bind_method(D_METHOD("clipboard_get_primary"), &DisplayServer::clipboard_get_primary);
ClassDB::bind_method(D_METHOD("get_screen_count"), &DisplayServer::get_screen_count);
ClassDB::bind_method(D_METHOD("screen_get_position", "screen"), &DisplayServer::screen_get_position, DEFVAL(SCREEN_OF_MAIN_WINDOW));
@@ -487,6 +497,7 @@ void DisplayServer::_bind_methods() {
BIND_ENUM_CONSTANT(FEATURE_NATIVE_ICON);
BIND_ENUM_CONSTANT(FEATURE_ORIENTATION);
BIND_ENUM_CONSTANT(FEATURE_SWAP_BUFFERS);
+ BIND_ENUM_CONSTANT(FEATURE_CLIPBOARD_PRIMARY);
BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE);
BIND_ENUM_CONSTANT(MOUSE_MODE_HIDDEN);
diff --git a/servers/display_server.h b/servers/display_server.h
index f411a72aa3..2595cf2eb8 100644
--- a/servers/display_server.h
+++ b/servers/display_server.h
@@ -114,6 +114,7 @@ public:
FEATURE_ORIENTATION,
FEATURE_SWAP_BUFFERS,
FEATURE_KEEP_SCREEN_ON,
+ FEATURE_CLIPBOARD_PRIMARY,
};
virtual bool has_feature(Feature p_feature) const = 0;
@@ -161,6 +162,8 @@ public:
virtual void clipboard_set(const String &p_text);
virtual String clipboard_get() const;
+ virtual void clipboard_set_primary(const String &p_text);
+ virtual String clipboard_get_primary() const;
enum {
SCREEN_OF_MAIN_WINDOW = -1
diff --git a/servers/physics_2d/area_2d_sw.cpp b/servers/physics_2d/godot_area_2d.cpp
index c85b1575e3..7cb202dd1f 100644
--- a/servers/physics_2d/area_2d_sw.cpp
+++ b/servers/physics_2d/godot_area_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* area_2d_sw.cpp */
+/* godot_area_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,31 +28,31 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "area_2d_sw.h"
-#include "body_2d_sw.h"
-#include "space_2d_sw.h"
+#include "godot_area_2d.h"
+#include "godot_body_2d.h"
+#include "godot_space_2d.h"
-Area2DSW::BodyKey::BodyKey(Body2DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+GodotArea2D::BodyKey::BodyKey(GodotBody2D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
rid = p_body->get_self();
instance_id = p_body->get_instance_id();
body_shape = p_body_shape;
area_shape = p_area_shape;
}
-Area2DSW::BodyKey::BodyKey(Area2DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+GodotArea2D::BodyKey::BodyKey(GodotArea2D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
rid = p_body->get_self();
instance_id = p_body->get_instance_id();
body_shape = p_body_shape;
area_shape = p_area_shape;
}
-void Area2DSW::_shapes_changed() {
+void GodotArea2D::_shapes_changed() {
if (!moved_list.in_list() && get_space()) {
get_space()->area_add_to_moved_list(&moved_list);
}
}
-void Area2DSW::set_transform(const Transform2D &p_transform) {
+void GodotArea2D::set_transform(const Transform2D &p_transform) {
if (!moved_list.in_list() && get_space()) {
get_space()->area_add_to_moved_list(&moved_list);
}
@@ -61,7 +61,7 @@ void Area2DSW::set_transform(const Transform2D &p_transform) {
_set_inv_transform(p_transform.affine_inverse());
}
-void Area2DSW::set_space(Space2DSW *p_space) {
+void GodotArea2D::set_space(GodotSpace2D *p_space) {
if (get_space()) {
if (monitor_query_list.in_list()) {
get_space()->area_remove_from_monitor_query_list(&monitor_query_list);
@@ -77,7 +77,7 @@ void Area2DSW::set_space(Space2DSW *p_space) {
_set_space(p_space);
}
-void Area2DSW::set_monitor_callback(ObjectID p_id, const StringName &p_method) {
+void GodotArea2D::set_monitor_callback(ObjectID p_id, const StringName &p_method) {
if (p_id == monitor_callback_id) {
monitor_callback_method = p_method;
return;
@@ -98,7 +98,7 @@ void Area2DSW::set_monitor_callback(ObjectID p_id, const StringName &p_method) {
}
}
-void Area2DSW::set_area_monitor_callback(ObjectID p_id, const StringName &p_method) {
+void GodotArea2D::set_area_monitor_callback(ObjectID p_id, const StringName &p_method) {
if (p_id == area_monitor_callback_id) {
area_monitor_callback_method = p_method;
return;
@@ -119,7 +119,7 @@ void Area2DSW::set_area_monitor_callback(ObjectID p_id, const StringName &p_meth
}
}
-void Area2DSW::set_space_override_mode(PhysicsServer2D::AreaSpaceOverrideMode p_mode) {
+void GodotArea2D::set_space_override_mode(PhysicsServer2D::AreaSpaceOverrideMode p_mode) {
bool do_override = p_mode != PhysicsServer2D::AREA_SPACE_OVERRIDE_DISABLED;
if (do_override == (space_override_mode != PhysicsServer2D::AREA_SPACE_OVERRIDE_DISABLED)) {
return;
@@ -129,7 +129,7 @@ void Area2DSW::set_space_override_mode(PhysicsServer2D::AreaSpaceOverrideMode p_
_shape_changed();
}
-void Area2DSW::set_param(PhysicsServer2D::AreaParameter p_param, const Variant &p_value) {
+void GodotArea2D::set_param(PhysicsServer2D::AreaParameter p_param, const Variant &p_value) {
switch (p_param) {
case PhysicsServer2D::AREA_PARAM_GRAVITY:
gravity = p_value;
@@ -158,7 +158,7 @@ void Area2DSW::set_param(PhysicsServer2D::AreaParameter p_param, const Variant &
}
}
-Variant Area2DSW::get_param(PhysicsServer2D::AreaParameter p_param) const {
+Variant GodotArea2D::get_param(PhysicsServer2D::AreaParameter p_param) const {
switch (p_param) {
case PhysicsServer2D::AREA_PARAM_GRAVITY:
return gravity;
@@ -181,7 +181,7 @@ Variant Area2DSW::get_param(PhysicsServer2D::AreaParameter p_param) const {
return Variant();
}
-void Area2DSW::_queue_monitor_update() {
+void GodotArea2D::_queue_monitor_update() {
ERR_FAIL_COND(!get_space());
if (!monitor_query_list.in_list()) {
@@ -189,7 +189,7 @@ void Area2DSW::_queue_monitor_update() {
}
}
-void Area2DSW::set_monitorable(bool p_monitorable) {
+void GodotArea2D::set_monitorable(bool p_monitorable) {
if (monitorable == p_monitorable) {
return;
}
@@ -198,7 +198,7 @@ void Area2DSW::set_monitorable(bool p_monitorable) {
_set_static(!monitorable);
}
-void Area2DSW::call_queries() {
+void GodotArea2D::call_queries() {
if (monitor_callback_id.is_valid() && !monitored_bodies.is_empty()) {
Variant res[5];
Variant *resptr[5];
@@ -274,7 +274,7 @@ void Area2DSW::call_queries() {
}
}
-void Area2DSW::compute_gravity(const Vector2 &p_position, Vector2 &r_gravity) const {
+void GodotArea2D::compute_gravity(const Vector2 &p_position, Vector2 &r_gravity) const {
if (is_gravity_point()) {
const real_t gravity_distance_scale = get_gravity_distance_scale();
Vector2 v = get_transform().xform(get_gravity_vector()) - p_position;
@@ -294,12 +294,12 @@ void Area2DSW::compute_gravity(const Vector2 &p_position, Vector2 &r_gravity) co
}
}
-Area2DSW::Area2DSW() :
- CollisionObject2DSW(TYPE_AREA),
+GodotArea2D::GodotArea2D() :
+ GodotCollisionObject2D(TYPE_AREA),
monitor_query_list(this),
moved_list(this) {
_set_static(true); //areas are not active by default
}
-Area2DSW::~Area2DSW() {
+GodotArea2D::~GodotArea2D() {
}
diff --git a/servers/physics_2d/area_2d_sw.h b/servers/physics_2d/godot_area_2d.h
index 0b7c791ed5..daa03d39e3 100644
--- a/servers/physics_2d/area_2d_sw.h
+++ b/servers/physics_2d/godot_area_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* area_2d_sw.h */
+/* godot_area_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,18 +28,19 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef AREA_2D_SW_H
-#define AREA_2D_SW_H
+#ifndef GODOT_AREA_2D_H
+#define GODOT_AREA_2D_H
+
+#include "godot_collision_object_2d.h"
-#include "collision_object_2d_sw.h"
#include "core/templates/self_list.h"
#include "servers/physics_server_2d.h"
-class Space2DSW;
-class Body2DSW;
-class Constraint2DSW;
+class GodotSpace2D;
+class GodotBody2D;
+class GodotConstraint2D;
-class Area2DSW : public CollisionObject2DSW {
+class GodotArea2D : public GodotCollisionObject2D {
PhysicsServer2D::AreaSpaceOverrideMode space_override_mode = PhysicsServer2D::AREA_SPACE_OVERRIDE_DISABLED;
real_t gravity = 9.80665;
Vector2 gravity_vector = Vector2(0, -1);
@@ -57,8 +58,8 @@ class Area2DSW : public CollisionObject2DSW {
ObjectID area_monitor_callback_id;
StringName area_monitor_callback_method;
- SelfList<Area2DSW> monitor_query_list;
- SelfList<Area2DSW> moved_list;
+ SelfList<GodotArea2D> monitor_query_list;
+ SelfList<GodotArea2D> moved_list;
struct BodyKey {
RID rid;
@@ -79,8 +80,8 @@ class Area2DSW : public CollisionObject2DSW {
}
_FORCE_INLINE_ BodyKey() {}
- BodyKey(Body2DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
- BodyKey(Area2DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ BodyKey(GodotBody2D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ BodyKey(GodotArea2D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
};
struct BodyState {
@@ -92,7 +93,7 @@ class Area2DSW : public CollisionObject2DSW {
Map<BodyKey, BodyState> monitored_bodies;
Map<BodyKey, BodyState> monitored_areas;
- Set<Constraint2DSW *> constraints;
+ Set<GodotConstraint2D *> constraints;
virtual void _shapes_changed();
void _queue_monitor_update();
@@ -104,11 +105,11 @@ public:
void set_area_monitor_callback(ObjectID p_id, const StringName &p_method);
_FORCE_INLINE_ bool has_area_monitor_callback() const { return area_monitor_callback_id.is_valid(); }
- _FORCE_INLINE_ void add_body_to_query(Body2DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
- _FORCE_INLINE_ void remove_body_from_query(Body2DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ _FORCE_INLINE_ void add_body_to_query(GodotBody2D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ _FORCE_INLINE_ void remove_body_from_query(GodotBody2D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
- _FORCE_INLINE_ void add_area_to_query(Area2DSW *p_area, uint32_t p_area_shape, uint32_t p_self_shape);
- _FORCE_INLINE_ void remove_area_from_query(Area2DSW *p_area, uint32_t p_area_shape, uint32_t p_self_shape);
+ _FORCE_INLINE_ void add_area_to_query(GodotArea2D *p_area, uint32_t p_area_shape, uint32_t p_self_shape);
+ _FORCE_INLINE_ void remove_area_from_query(GodotArea2D *p_area, uint32_t p_area_shape, uint32_t p_self_shape);
void set_param(PhysicsServer2D::AreaParameter p_param, const Variant &p_value);
Variant get_param(PhysicsServer2D::AreaParameter p_param) const;
@@ -140,9 +141,9 @@ public:
_FORCE_INLINE_ void set_priority(int p_priority) { priority = p_priority; }
_FORCE_INLINE_ int get_priority() const { return priority; }
- _FORCE_INLINE_ void add_constraint(Constraint2DSW *p_constraint) { constraints.insert(p_constraint); }
- _FORCE_INLINE_ void remove_constraint(Constraint2DSW *p_constraint) { constraints.erase(p_constraint); }
- _FORCE_INLINE_ const Set<Constraint2DSW *> &get_constraints() const { return constraints; }
+ _FORCE_INLINE_ void add_constraint(GodotConstraint2D *p_constraint) { constraints.insert(p_constraint); }
+ _FORCE_INLINE_ void remove_constraint(GodotConstraint2D *p_constraint) { constraints.erase(p_constraint); }
+ _FORCE_INLINE_ const Set<GodotConstraint2D *> &get_constraints() const { return constraints; }
_FORCE_INLINE_ void clear_constraints() { constraints.clear(); }
void set_monitorable(bool p_monitorable);
@@ -150,17 +151,17 @@ public:
void set_transform(const Transform2D &p_transform);
- void set_space(Space2DSW *p_space);
+ void set_space(GodotSpace2D *p_space);
void call_queries();
void compute_gravity(const Vector2 &p_position, Vector2 &r_gravity) const;
- Area2DSW();
- ~Area2DSW();
+ GodotArea2D();
+ ~GodotArea2D();
};
-void Area2DSW::add_body_to_query(Body2DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+void GodotArea2D::add_body_to_query(GodotBody2D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
BodyKey bk(p_body, p_body_shape, p_area_shape);
monitored_bodies[bk].inc();
if (!monitor_query_list.in_list()) {
@@ -168,7 +169,7 @@ void Area2DSW::add_body_to_query(Body2DSW *p_body, uint32_t p_body_shape, uint32
}
}
-void Area2DSW::remove_body_from_query(Body2DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+void GodotArea2D::remove_body_from_query(GodotBody2D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
BodyKey bk(p_body, p_body_shape, p_area_shape);
monitored_bodies[bk].dec();
if (!monitor_query_list.in_list()) {
@@ -176,7 +177,7 @@ void Area2DSW::remove_body_from_query(Body2DSW *p_body, uint32_t p_body_shape, u
}
}
-void Area2DSW::add_area_to_query(Area2DSW *p_area, uint32_t p_area_shape, uint32_t p_self_shape) {
+void GodotArea2D::add_area_to_query(GodotArea2D *p_area, uint32_t p_area_shape, uint32_t p_self_shape) {
BodyKey bk(p_area, p_area_shape, p_self_shape);
monitored_areas[bk].inc();
if (!monitor_query_list.in_list()) {
@@ -184,7 +185,7 @@ void Area2DSW::add_area_to_query(Area2DSW *p_area, uint32_t p_area_shape, uint32
}
}
-void Area2DSW::remove_area_from_query(Area2DSW *p_area, uint32_t p_area_shape, uint32_t p_self_shape) {
+void GodotArea2D::remove_area_from_query(GodotArea2D *p_area, uint32_t p_area_shape, uint32_t p_self_shape) {
BodyKey bk(p_area, p_area_shape, p_self_shape);
monitored_areas[bk].dec();
if (!monitor_query_list.in_list()) {
@@ -192,4 +193,4 @@ void Area2DSW::remove_area_from_query(Area2DSW *p_area, uint32_t p_area_shape, u
}
}
-#endif // AREA_2D_SW_H
+#endif // GODOT_AREA_2D_H
diff --git a/servers/physics_2d/area_pair_2d_sw.cpp b/servers/physics_2d/godot_area_pair_2d.cpp
index 4f1148c26f..fdb95aa262 100644
--- a/servers/physics_2d/area_pair_2d_sw.cpp
+++ b/servers/physics_2d/godot_area_pair_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* area_pair_2d_sw.cpp */
+/* godot_area_pair_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,12 +28,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "area_pair_2d_sw.h"
-#include "collision_solver_2d_sw.h"
+#include "godot_area_pair_2d.h"
+#include "godot_collision_solver_2d.h"
-bool AreaPair2DSW::setup(real_t p_step) {
+bool GodotAreaPair2D::setup(real_t p_step) {
bool result = false;
- if (area->collides_with(body) && CollisionSolver2DSW::solve(body->get_shape(body_shape), body->get_transform() * body->get_shape_transform(body_shape), Vector2(), area->get_shape(area_shape), area->get_transform() * area->get_shape_transform(area_shape), Vector2(), nullptr, this)) {
+ if (area->collides_with(body) && GodotCollisionSolver2D::solve(body->get_shape(body_shape), body->get_transform() * body->get_shape_transform(body_shape), Vector2(), area->get_shape(area_shape), area->get_transform() * area->get_shape_transform(area_shape), Vector2(), nullptr, this)) {
result = true;
}
@@ -51,7 +51,7 @@ bool AreaPair2DSW::setup(real_t p_step) {
return process_collision;
}
-bool AreaPair2DSW::pre_solve(real_t p_step) {
+bool GodotAreaPair2D::pre_solve(real_t p_step) {
if (!process_collision) {
return false;
}
@@ -77,11 +77,11 @@ bool AreaPair2DSW::pre_solve(real_t p_step) {
return false; // Never do any post solving.
}
-void AreaPair2DSW::solve(real_t p_step) {
+void GodotAreaPair2D::solve(real_t p_step) {
// Nothing to do.
}
-AreaPair2DSW::AreaPair2DSW(Body2DSW *p_body, int p_body_shape, Area2DSW *p_area, int p_area_shape) {
+GodotAreaPair2D::GodotAreaPair2D(GodotBody2D *p_body, int p_body_shape, GodotArea2D *p_area, int p_area_shape) {
body = p_body;
area = p_area;
body_shape = p_body_shape;
@@ -93,7 +93,7 @@ AreaPair2DSW::AreaPair2DSW(Body2DSW *p_body, int p_body_shape, Area2DSW *p_area,
}
}
-AreaPair2DSW::~AreaPair2DSW() {
+GodotAreaPair2D::~GodotAreaPair2D() {
if (colliding) {
if (area->get_space_override_mode() != PhysicsServer2D::AREA_SPACE_OVERRIDE_DISABLED) {
body->remove_area(area);
@@ -108,10 +108,10 @@ AreaPair2DSW::~AreaPair2DSW() {
//////////////////////////////////
-bool Area2Pair2DSW::setup(real_t p_step) {
+bool GodotArea2Pair2D::setup(real_t p_step) {
bool result_a = area_a->collides_with(area_b);
bool result_b = area_b->collides_with(area_a);
- if ((result_a || result_b) && !CollisionSolver2DSW::solve(area_a->get_shape(shape_a), area_a->get_transform() * area_a->get_shape_transform(shape_a), Vector2(), area_b->get_shape(shape_b), area_b->get_transform() * area_b->get_shape_transform(shape_b), Vector2(), nullptr, this)) {
+ if ((result_a || result_b) && !GodotCollisionSolver2D::solve(area_a->get_shape(shape_a), area_a->get_transform() * area_a->get_shape_transform(shape_a), Vector2(), area_b->get_shape(shape_b), area_b->get_transform() * area_b->get_shape_transform(shape_b), Vector2(), nullptr, this)) {
result_a = false;
result_b = false;
}
@@ -139,7 +139,7 @@ bool Area2Pair2DSW::setup(real_t p_step) {
return process_collision;
}
-bool Area2Pair2DSW::pre_solve(real_t p_step) {
+bool GodotArea2Pair2D::pre_solve(real_t p_step) {
if (process_collision_a) {
if (colliding_a) {
area_a->add_area_to_query(area_b, shape_b, shape_a);
@@ -159,11 +159,11 @@ bool Area2Pair2DSW::pre_solve(real_t p_step) {
return false; // Never do any post solving.
}
-void Area2Pair2DSW::solve(real_t p_step) {
+void GodotArea2Pair2D::solve(real_t p_step) {
// Nothing to do.
}
-Area2Pair2DSW::Area2Pair2DSW(Area2DSW *p_area_a, int p_shape_a, Area2DSW *p_area_b, int p_shape_b) {
+GodotArea2Pair2D::GodotArea2Pair2D(GodotArea2D *p_area_a, int p_shape_a, GodotArea2D *p_area_b, int p_shape_b) {
area_a = p_area_a;
area_b = p_area_b;
shape_a = p_shape_a;
@@ -172,7 +172,7 @@ Area2Pair2DSW::Area2Pair2DSW(Area2DSW *p_area_a, int p_shape_a, Area2DSW *p_area
area_b->add_constraint(this);
}
-Area2Pair2DSW::~Area2Pair2DSW() {
+GodotArea2Pair2D::~GodotArea2Pair2D() {
if (colliding_a) {
if (area_a->has_area_monitor_callback()) {
area_a->remove_area_from_query(area_b, shape_b, shape_a);
diff --git a/servers/physics_2d/area_pair_2d_sw.h b/servers/physics_2d/godot_area_pair_2d.h
index 66e9f1afee..7a9677f714 100644
--- a/servers/physics_2d/area_pair_2d_sw.h
+++ b/servers/physics_2d/godot_area_pair_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* area_pair_2d_sw.h */
+/* godot_area_pair_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,16 +28,16 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef AREA_PAIR_2D_SW_H
-#define AREA_PAIR_2D_SW_H
+#ifndef GODOT_AREA_PAIR_2D_H
+#define GODOT_AREA_PAIR_2D_H
-#include "area_2d_sw.h"
-#include "body_2d_sw.h"
-#include "constraint_2d_sw.h"
+#include "godot_area_2d.h"
+#include "godot_body_2d.h"
+#include "godot_constraint_2d.h"
-class AreaPair2DSW : public Constraint2DSW {
- Body2DSW *body = nullptr;
- Area2DSW *area = nullptr;
+class GodotAreaPair2D : public GodotConstraint2D {
+ GodotBody2D *body = nullptr;
+ GodotArea2D *area = nullptr;
int body_shape = 0;
int area_shape = 0;
bool colliding = false;
@@ -48,13 +48,13 @@ public:
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- AreaPair2DSW(Body2DSW *p_body, int p_body_shape, Area2DSW *p_area, int p_area_shape);
- ~AreaPair2DSW();
+ GodotAreaPair2D(GodotBody2D *p_body, int p_body_shape, GodotArea2D *p_area, int p_area_shape);
+ ~GodotAreaPair2D();
};
-class Area2Pair2DSW : public Constraint2DSW {
- Area2DSW *area_a = nullptr;
- Area2DSW *area_b = nullptr;
+class GodotArea2Pair2D : public GodotConstraint2D {
+ GodotArea2D *area_a = nullptr;
+ GodotArea2D *area_b = nullptr;
int shape_a = 0;
int shape_b = 0;
bool colliding_a = false;
@@ -67,8 +67,8 @@ public:
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- Area2Pair2DSW(Area2DSW *p_area_a, int p_shape_a, Area2DSW *p_area_b, int p_shape_b);
- ~Area2Pair2DSW();
+ GodotArea2Pair2D(GodotArea2D *p_area_a, int p_shape_a, GodotArea2D *p_area_b, int p_shape_b);
+ ~GodotArea2Pair2D();
};
-#endif // AREA_PAIR_2D_SW_H
+#endif // GODOT_AREA_PAIR_2D_H
diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/godot_body_2d.cpp
index 38b98b7bca..56f191c203 100644
--- a/servers/physics_2d/body_2d_sw.cpp
+++ b/servers/physics_2d/godot_body_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_2d_sw.cpp */
+/* godot_body_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,19 +28,19 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "body_2d_sw.h"
+#include "godot_body_2d.h"
-#include "area_2d_sw.h"
-#include "body_direct_state_2d_sw.h"
-#include "space_2d_sw.h"
+#include "godot_area_2d.h"
+#include "godot_body_direct_state_2d.h"
+#include "godot_space_2d.h"
-void Body2DSW::_mass_properties_changed() {
+void GodotBody2D::_mass_properties_changed() {
if (get_space() && !mass_properties_update_list.in_list() && (calculate_inertia || calculate_center_of_mass)) {
get_space()->body_add_to_mass_properties_update_list(&mass_properties_update_list);
}
}
-void Body2DSW::update_mass_properties() {
+void GodotBody2D::update_mass_properties() {
//update shapes and motions
switch (mode) {
@@ -55,7 +55,7 @@ void Body2DSW::update_mass_properties() {
if (calculate_center_of_mass) {
// We have to recompute the center of mass.
- center_of_mass = Vector2();
+ center_of_mass_local = Vector2();
if (total_area != 0.0) {
for (int i = 0; i < get_shape_count(); i++) {
@@ -68,10 +68,10 @@ void Body2DSW::update_mass_properties() {
real_t mass = area * this->mass / total_area;
// NOTE: we assume that the shape origin is also its center of mass.
- center_of_mass += mass * get_shape_transform(i).get_origin();
+ center_of_mass_local += mass * get_shape_transform(i).get_origin();
}
- center_of_mass /= mass;
+ center_of_mass_local /= mass;
}
}
@@ -83,7 +83,7 @@ void Body2DSW::update_mass_properties() {
continue;
}
- const Shape2DSW *shape = get_shape(i);
+ const GodotShape2D *shape = get_shape(i);
real_t area = get_shape_aabb(i).get_area();
if (area == 0.0) {
@@ -94,7 +94,7 @@ void Body2DSW::update_mass_properties() {
Transform2D mtx = get_shape_transform(i);
Vector2 scale = mtx.get_scale();
- Vector2 shape_origin = mtx.get_origin() - center_of_mass;
+ Vector2 shape_origin = mtx.get_origin() - center_of_mass_local;
inertia += shape->get_moment_of_inertia(mass, scale) + mass * shape_origin.length_squared();
}
}
@@ -119,15 +119,17 @@ void Body2DSW::update_mass_properties() {
} break;
}
+
+ _update_transform_dependent();
}
-void Body2DSW::reset_mass_properties() {
+void GodotBody2D::reset_mass_properties() {
calculate_inertia = true;
calculate_center_of_mass = true;
_mass_properties_changed();
}
-void Body2DSW::set_active(bool p_active) {
+void GodotBody2D::set_active(bool p_active) {
if (active == p_active) {
return;
}
@@ -146,7 +148,7 @@ void Body2DSW::set_active(bool p_active) {
}
}
-void Body2DSW::set_param(PhysicsServer2D::BodyParameter p_param, const Variant &p_value) {
+void GodotBody2D::set_param(PhysicsServer2D::BodyParameter p_param, const Variant &p_value) {
switch (p_param) {
case PhysicsServer2D::BODY_PARAM_BOUNCE: {
bounce = p_value;
@@ -179,7 +181,8 @@ void Body2DSW::set_param(PhysicsServer2D::BodyParameter p_param, const Variant &
} break;
case PhysicsServer2D::BODY_PARAM_CENTER_OF_MASS: {
calculate_center_of_mass = false;
- center_of_mass = p_value;
+ center_of_mass_local = p_value;
+ _update_transform_dependent();
} break;
case PhysicsServer2D::BODY_PARAM_GRAVITY_SCALE: {
gravity_scale = p_value;
@@ -195,7 +198,7 @@ void Body2DSW::set_param(PhysicsServer2D::BodyParameter p_param, const Variant &
}
}
-Variant Body2DSW::get_param(PhysicsServer2D::BodyParameter p_param) const {
+Variant GodotBody2D::get_param(PhysicsServer2D::BodyParameter p_param) const {
switch (p_param) {
case PhysicsServer2D::BODY_PARAM_BOUNCE: {
return bounce;
@@ -228,7 +231,7 @@ Variant Body2DSW::get_param(PhysicsServer2D::BodyParameter p_param) const {
return 0;
}
-void Body2DSW::set_mode(PhysicsServer2D::BodyMode p_mode) {
+void GodotBody2D::set_mode(PhysicsServer2D::BodyMode p_mode) {
PhysicsServer2D::BodyMode prev = mode;
mode = p_mode;
@@ -267,16 +270,17 @@ void Body2DSW::set_mode(PhysicsServer2D::BodyMode p_mode) {
}
}
-PhysicsServer2D::BodyMode Body2DSW::get_mode() const {
+PhysicsServer2D::BodyMode GodotBody2D::get_mode() const {
return mode;
}
-void Body2DSW::_shapes_changed() {
+void GodotBody2D::_shapes_changed() {
_mass_properties_changed();
+ wakeup();
wakeup_neighbours();
}
-void Body2DSW::set_state(PhysicsServer2D::BodyState p_state, const Variant &p_variant) {
+void GodotBody2D::set_state(PhysicsServer2D::BodyState p_state, const Variant &p_variant) {
switch (p_state) {
case PhysicsServer2D::BODY_STATE_TRANSFORM: {
if (mode == PhysicsServer2D::BODY_MODE_KINEMATIC) {
@@ -301,6 +305,7 @@ void Body2DSW::set_state(PhysicsServer2D::BodyState p_state, const Variant &p_va
}
_set_transform(t);
_set_inv_transform(get_transform().inverse());
+ _update_transform_dependent();
}
wakeup();
@@ -344,7 +349,7 @@ void Body2DSW::set_state(PhysicsServer2D::BodyState p_state, const Variant &p_va
}
}
-Variant Body2DSW::get_state(PhysicsServer2D::BodyState p_state) const {
+Variant GodotBody2D::get_state(PhysicsServer2D::BodyState p_state) const {
switch (p_state) {
case PhysicsServer2D::BODY_STATE_TRANSFORM: {
return get_transform();
@@ -366,7 +371,7 @@ Variant Body2DSW::get_state(PhysicsServer2D::BodyState p_state) const {
return Variant();
}
-void Body2DSW::set_space(Space2DSW *p_space) {
+void GodotBody2D::set_space(GodotSpace2D *p_space) {
if (get_space()) {
wakeup_neighbours();
@@ -391,7 +396,7 @@ void Body2DSW::set_space(Space2DSW *p_space) {
}
}
-void Body2DSW::_compute_area_gravity_and_damping(const Area2DSW *p_area) {
+void GodotBody2D::_compute_area_gravity_and_damping(const GodotArea2D *p_area) {
Vector2 area_gravity;
p_area->compute_gravity(get_transform().get_origin(), area_gravity);
gravity += area_gravity;
@@ -400,13 +405,17 @@ void Body2DSW::_compute_area_gravity_and_damping(const Area2DSW *p_area) {
area_angular_damp += p_area->get_angular_damp();
}
-void Body2DSW::integrate_forces(real_t p_step) {
+void GodotBody2D::_update_transform_dependent() {
+ center_of_mass = get_transform().basis_xform(center_of_mass_local);
+}
+
+void GodotBody2D::integrate_forces(real_t p_step) {
if (mode == PhysicsServer2D::BODY_MODE_STATIC) {
return;
}
- Area2DSW *def_area = get_space()->get_default_area();
- // Area2DSW *damp_area = def_area;
+ GodotArea2D *def_area = get_space()->get_default_area();
+ // GodotArea2D *damp_area = def_area;
ERR_FAIL_COND(!def_area);
int ac = areas.size();
@@ -528,7 +537,7 @@ void Body2DSW::integrate_forces(real_t p_step) {
contact_count = 0;
}
-void Body2DSW::integrate_velocities(real_t p_step) {
+void GodotBody2D::integrate_velocities(real_t p_step) {
if (mode == PhysicsServer2D::BODY_MODE_STATIC) {
return;
}
@@ -549,17 +558,13 @@ void Body2DSW::integrate_velocities(real_t p_step) {
real_t total_angular_velocity = angular_velocity + biased_angular_velocity;
Vector2 total_linear_velocity = linear_velocity + biased_linear_velocity;
- real_t angle = get_transform().get_rotation() + total_angular_velocity * p_step;
+ real_t angle_delta = total_angular_velocity * p_step;
+ real_t angle = get_transform().get_rotation() + angle_delta;
Vector2 pos = get_transform().get_origin() + total_linear_velocity * p_step;
- real_t center_of_mass_distance = center_of_mass.length();
- if (center_of_mass_distance > CMP_EPSILON) {
+ if (center_of_mass.length_squared() > CMP_EPSILON2) {
// Calculate displacement due to center of mass offset.
- real_t prev_angle = get_transform().get_rotation();
- real_t angle_base = Math::atan2(center_of_mass.y, center_of_mass.x);
- Vector2 point1(Math::cos(angle_base + prev_angle), Math::sin(angle_base + prev_angle));
- Vector2 point2(Math::cos(angle_base + angle), Math::sin(angle_base + angle));
- pos += center_of_mass_distance * (point1 - point2);
+ pos += center_of_mass - center_of_mass.rotated(angle_delta);
}
_set_transform(Transform2D(angle, pos), continuous_cd_mode == PhysicsServer2D::CCD_MODE_DISABLED);
@@ -568,19 +573,21 @@ void Body2DSW::integrate_velocities(real_t p_step) {
if (continuous_cd_mode != PhysicsServer2D::CCD_MODE_DISABLED) {
new_transform = get_transform();
}
+
+ _update_transform_dependent();
}
-void Body2DSW::wakeup_neighbours() {
- for (const Pair<Constraint2DSW *, int> &E : constraint_list) {
- const Constraint2DSW *c = E.first;
- Body2DSW **n = c->get_body_ptr();
+void GodotBody2D::wakeup_neighbours() {
+ for (const Pair<GodotConstraint2D *, int> &E : constraint_list) {
+ const GodotConstraint2D *c = E.first;
+ GodotBody2D **n = c->get_body_ptr();
int bc = c->get_body_count();
for (int i = 0; i < bc; i++) {
if (i == E.second) {
continue;
}
- Body2DSW *b = n[i];
+ GodotBody2D *b = n[i];
if (b->mode < PhysicsServer2D::BODY_MODE_DYNAMIC) {
continue;
}
@@ -592,7 +599,7 @@ void Body2DSW::wakeup_neighbours() {
}
}
-void Body2DSW::call_queries() {
+void GodotBody2D::call_queries() {
if (fi_callback_data) {
if (!fi_callback_data->callable.get_object()) {
set_force_integration_callback(Callable());
@@ -616,7 +623,7 @@ void Body2DSW::call_queries() {
}
}
-bool Body2DSW::sleep_test(real_t p_step) {
+bool GodotBody2D::sleep_test(real_t p_step) {
if (mode == PhysicsServer2D::BODY_MODE_STATIC || mode == PhysicsServer2D::BODY_MODE_KINEMATIC) {
return true;
} else if (!can_sleep) {
@@ -633,12 +640,12 @@ bool Body2DSW::sleep_test(real_t p_step) {
}
}
-void Body2DSW::set_state_sync_callback(void *p_instance, PhysicsServer2D::BodyStateCallback p_callback) {
+void GodotBody2D::set_state_sync_callback(void *p_instance, PhysicsServer2D::BodyStateCallback p_callback) {
body_state_callback_instance = p_instance;
body_state_callback = p_callback;
}
-void Body2DSW::set_force_integration_callback(const Callable &p_callable, const Variant &p_udata) {
+void GodotBody2D::set_force_integration_callback(const Callable &p_callable, const Variant &p_udata) {
if (p_callable.get_object()) {
if (!fi_callback_data) {
fi_callback_data = memnew(ForceIntegrationCallbackData);
@@ -651,23 +658,23 @@ void Body2DSW::set_force_integration_callback(const Callable &p_callable, const
}
}
-PhysicsDirectBodyState2DSW *Body2DSW::get_direct_state() {
+GodotPhysicsDirectBodyState2D *GodotBody2D::get_direct_state() {
if (!direct_state) {
- direct_state = memnew(PhysicsDirectBodyState2DSW);
+ direct_state = memnew(GodotPhysicsDirectBodyState2D);
direct_state->body = this;
}
return direct_state;
}
-Body2DSW::Body2DSW() :
- CollisionObject2DSW(TYPE_BODY),
+GodotBody2D::GodotBody2D() :
+ GodotCollisionObject2D(TYPE_BODY),
active_list(this),
mass_properties_update_list(this),
direct_state_query_list(this) {
_set_static(false);
}
-Body2DSW::~Body2DSW() {
+GodotBody2D::~GodotBody2D() {
if (fi_callback_data) {
memdelete(fi_callback_data);
}
diff --git a/servers/physics_2d/body_2d_sw.h b/servers/physics_2d/godot_body_2d.h
index 822ff76fae..5fce362fa7 100644
--- a/servers/physics_2d/body_2d_sw.h
+++ b/servers/physics_2d/godot_body_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_2d_sw.h */
+/* godot_body_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,19 +28,20 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BODY_2D_SW_H
-#define BODY_2D_SW_H
+#ifndef GODOT_BODY_2D_H
+#define GODOT_BODY_2D_H
+
+#include "godot_area_2d.h"
+#include "godot_collision_object_2d.h"
-#include "area_2d_sw.h"
-#include "collision_object_2d_sw.h"
#include "core/templates/list.h"
#include "core/templates/pair.h"
#include "core/templates/vset.h"
-class Constraint2DSW;
-class PhysicsDirectBodyState2DSW;
+class GodotConstraint2D;
+class GodotPhysicsDirectBodyState2D;
-class Body2DSW : public CollisionObject2DSW {
+class GodotBody2D : public GodotCollisionObject2D {
PhysicsServer2D::BodyMode mode = PhysicsServer2D::BODY_MODE_DYNAMIC;
Vector2 biased_linear_velocity;
@@ -65,6 +66,7 @@ class Body2DSW : public CollisionObject2DSW {
real_t inertia = 0.0;
real_t _inv_inertia = 0.0;
+ Vector2 center_of_mass_local;
Vector2 center_of_mass;
bool calculate_inertia = true;
@@ -79,9 +81,9 @@ class Body2DSW : public CollisionObject2DSW {
Vector2 applied_force;
real_t applied_torque = 0.0;
- SelfList<Body2DSW> active_list;
- SelfList<Body2DSW> mass_properties_update_list;
- SelfList<Body2DSW> direct_state_query_list;
+ SelfList<GodotBody2D> active_list;
+ SelfList<GodotBody2D> mass_properties_update_list;
+ SelfList<GodotBody2D> direct_state_query_list;
VSet<RID> exceptions;
PhysicsServer2D::CCDMode continuous_cd_mode = PhysicsServer2D::CCD_MODE_DISABLED;
@@ -93,15 +95,15 @@ class Body2DSW : public CollisionObject2DSW {
virtual void _shapes_changed();
Transform2D new_transform;
- List<Pair<Constraint2DSW *, int>> constraint_list;
+ List<Pair<GodotConstraint2D *, int>> constraint_list;
struct AreaCMP {
- Area2DSW *area = nullptr;
+ GodotArea2D *area = nullptr;
int refCount = 0;
_FORCE_INLINE_ bool operator==(const AreaCMP &p_cmp) const { return area->get_self() == p_cmp.area->get_self(); }
_FORCE_INLINE_ bool operator<(const AreaCMP &p_cmp) const { return area->get_priority() < p_cmp.area->get_priority(); }
_FORCE_INLINE_ AreaCMP() {}
- _FORCE_INLINE_ AreaCMP(Area2DSW *p_area) {
+ _FORCE_INLINE_ AreaCMP(GodotArea2D *p_area) {
area = p_area;
refCount = 1;
}
@@ -134,21 +136,23 @@ class Body2DSW : public CollisionObject2DSW {
ForceIntegrationCallbackData *fi_callback_data = nullptr;
- PhysicsDirectBodyState2DSW *direct_state = nullptr;
+ GodotPhysicsDirectBodyState2D *direct_state = nullptr;
uint64_t island_step = 0;
- _FORCE_INLINE_ void _compute_area_gravity_and_damping(const Area2DSW *p_area);
+ void _compute_area_gravity_and_damping(const GodotArea2D *p_area);
+
+ void _update_transform_dependent();
- friend class PhysicsDirectBodyState2DSW; // i give up, too many functions to expose
+ friend class GodotPhysicsDirectBodyState2D; // i give up, too many functions to expose
public:
void set_state_sync_callback(void *p_instance, PhysicsServer2D::BodyStateCallback p_callback);
void set_force_integration_callback(const Callable &p_callable, const Variant &p_udata = Variant());
- PhysicsDirectBodyState2DSW *get_direct_state();
+ GodotPhysicsDirectBodyState2D *get_direct_state();
- _FORCE_INLINE_ void add_area(Area2DSW *p_area) {
+ _FORCE_INLINE_ void add_area(GodotArea2D *p_area) {
int index = areas.find(AreaCMP(p_area));
if (index > -1) {
areas.write[index].refCount += 1;
@@ -157,7 +161,7 @@ public:
}
}
- _FORCE_INLINE_ void remove_area(Area2DSW *p_area) {
+ _FORCE_INLINE_ void remove_area(GodotArea2D *p_area) {
int index = areas.find(AreaCMP(p_area));
if (index > -1) {
areas.write[index].refCount -= 1;
@@ -188,9 +192,9 @@ public:
_FORCE_INLINE_ uint64_t get_island_step() const { return island_step; }
_FORCE_INLINE_ void set_island_step(uint64_t p_step) { island_step = p_step; }
- _FORCE_INLINE_ void add_constraint(Constraint2DSW *p_constraint, int p_pos) { constraint_list.push_back({ p_constraint, p_pos }); }
- _FORCE_INLINE_ void remove_constraint(Constraint2DSW *p_constraint, int p_pos) { constraint_list.erase({ p_constraint, p_pos }); }
- const List<Pair<Constraint2DSW *, int>> &get_constraint_list() const { return constraint_list; }
+ _FORCE_INLINE_ void add_constraint(GodotConstraint2D *p_constraint, int p_pos) { constraint_list.push_back({ p_constraint, p_pos }); }
+ _FORCE_INLINE_ void remove_constraint(GodotConstraint2D *p_constraint, int p_pos) { constraint_list.erase({ p_constraint, p_pos }); }
+ const List<Pair<GodotConstraint2D *, int>> &get_constraint_list() const { return constraint_list; }
_FORCE_INLINE_ void clear_constraint_list() { constraint_list.clear(); }
_FORCE_INLINE_ void set_omit_force_integration(bool p_omit_force_integration) { omit_force_integration = p_omit_force_integration; }
@@ -267,7 +271,7 @@ public:
_FORCE_INLINE_ void set_continuous_collision_detection_mode(PhysicsServer2D::CCDMode p_mode) { continuous_cd_mode = p_mode; }
_FORCE_INLINE_ PhysicsServer2D::CCDMode get_continuous_collision_detection_mode() const { return continuous_cd_mode; }
- void set_space(Space2DSW *p_space);
+ void set_space(GodotSpace2D *p_space);
void update_mass_properties();
void reset_mass_properties();
@@ -302,13 +306,13 @@ public:
bool sleep_test(real_t p_step);
- Body2DSW();
- ~Body2DSW();
+ GodotBody2D();
+ ~GodotBody2D();
};
//add contact inline
-void Body2DSW::add_contact(const Vector2 &p_local_pos, const Vector2 &p_local_normal, real_t p_depth, int p_local_shape, const Vector2 &p_collider_pos, int p_collider_shape, ObjectID p_collider_instance_id, const RID &p_collider, const Vector2 &p_collider_velocity_at_pos) {
+void GodotBody2D::add_contact(const Vector2 &p_local_pos, const Vector2 &p_local_normal, real_t p_depth, int p_local_shape, const Vector2 &p_collider_pos, int p_collider_shape, ObjectID p_collider_instance_id, const RID &p_collider, const Vector2 &p_collider_velocity_at_pos) {
int c_max = contacts.size();
if (c_max == 0) {
@@ -350,4 +354,4 @@ void Body2DSW::add_contact(const Vector2 &p_local_pos, const Vector2 &p_local_no
c[idx].collider_velocity_at_pos = p_collider_velocity_at_pos;
}
-#endif // BODY_2D_SW_H
+#endif // GODOT_BODY_2D_H
diff --git a/servers/physics_2d/body_direct_state_2d_sw.cpp b/servers/physics_2d/godot_body_direct_state_2d.cpp
index b0673b9006..300c302c79 100644
--- a/servers/physics_2d/body_direct_state_2d_sw.cpp
+++ b/servers/physics_2d/godot_body_direct_state_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_direct_state_2d_sw.cpp */
+/* godot_body_direct_state_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,151 +28,151 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "body_direct_state_2d_sw.h"
+#include "godot_body_direct_state_2d.h"
-#include "body_2d_sw.h"
-#include "physics_server_2d_sw.h"
-#include "space_2d_sw.h"
+#include "godot_body_2d.h"
+#include "godot_physics_server_2d.h"
+#include "godot_space_2d.h"
-Vector2 PhysicsDirectBodyState2DSW::get_total_gravity() const {
+Vector2 GodotPhysicsDirectBodyState2D::get_total_gravity() const {
return body->gravity;
}
-real_t PhysicsDirectBodyState2DSW::get_total_angular_damp() const {
+real_t GodotPhysicsDirectBodyState2D::get_total_angular_damp() const {
return body->area_angular_damp;
}
-real_t PhysicsDirectBodyState2DSW::get_total_linear_damp() const {
+real_t GodotPhysicsDirectBodyState2D::get_total_linear_damp() const {
return body->area_linear_damp;
}
-Vector2 PhysicsDirectBodyState2DSW::get_center_of_mass() const {
+Vector2 GodotPhysicsDirectBodyState2D::get_center_of_mass() const {
return body->get_center_of_mass();
}
-real_t PhysicsDirectBodyState2DSW::get_inverse_mass() const {
+real_t GodotPhysicsDirectBodyState2D::get_inverse_mass() const {
return body->get_inv_mass();
}
-real_t PhysicsDirectBodyState2DSW::get_inverse_inertia() const {
+real_t GodotPhysicsDirectBodyState2D::get_inverse_inertia() const {
return body->get_inv_inertia();
}
-void PhysicsDirectBodyState2DSW::set_linear_velocity(const Vector2 &p_velocity) {
+void GodotPhysicsDirectBodyState2D::set_linear_velocity(const Vector2 &p_velocity) {
body->wakeup();
body->set_linear_velocity(p_velocity);
}
-Vector2 PhysicsDirectBodyState2DSW::get_linear_velocity() const {
+Vector2 GodotPhysicsDirectBodyState2D::get_linear_velocity() const {
return body->get_linear_velocity();
}
-void PhysicsDirectBodyState2DSW::set_angular_velocity(real_t p_velocity) {
+void GodotPhysicsDirectBodyState2D::set_angular_velocity(real_t p_velocity) {
body->wakeup();
body->set_angular_velocity(p_velocity);
}
-real_t PhysicsDirectBodyState2DSW::get_angular_velocity() const {
+real_t GodotPhysicsDirectBodyState2D::get_angular_velocity() const {
return body->get_angular_velocity();
}
-void PhysicsDirectBodyState2DSW::set_transform(const Transform2D &p_transform) {
+void GodotPhysicsDirectBodyState2D::set_transform(const Transform2D &p_transform) {
body->set_state(PhysicsServer2D::BODY_STATE_TRANSFORM, p_transform);
}
-Transform2D PhysicsDirectBodyState2DSW::get_transform() const {
+Transform2D GodotPhysicsDirectBodyState2D::get_transform() const {
return body->get_transform();
}
-Vector2 PhysicsDirectBodyState2DSW::get_velocity_at_local_position(const Vector2 &p_position) const {
+Vector2 GodotPhysicsDirectBodyState2D::get_velocity_at_local_position(const Vector2 &p_position) const {
return body->get_velocity_in_local_point(p_position);
}
-void PhysicsDirectBodyState2DSW::add_central_force(const Vector2 &p_force) {
+void GodotPhysicsDirectBodyState2D::add_central_force(const Vector2 &p_force) {
body->wakeup();
body->add_central_force(p_force);
}
-void PhysicsDirectBodyState2DSW::add_force(const Vector2 &p_force, const Vector2 &p_position) {
+void GodotPhysicsDirectBodyState2D::add_force(const Vector2 &p_force, const Vector2 &p_position) {
body->wakeup();
body->add_force(p_force, p_position);
}
-void PhysicsDirectBodyState2DSW::add_torque(real_t p_torque) {
+void GodotPhysicsDirectBodyState2D::add_torque(real_t p_torque) {
body->wakeup();
body->add_torque(p_torque);
}
-void PhysicsDirectBodyState2DSW::apply_central_impulse(const Vector2 &p_impulse) {
+void GodotPhysicsDirectBodyState2D::apply_central_impulse(const Vector2 &p_impulse) {
body->wakeup();
body->apply_central_impulse(p_impulse);
}
-void PhysicsDirectBodyState2DSW::apply_impulse(const Vector2 &p_impulse, const Vector2 &p_position) {
+void GodotPhysicsDirectBodyState2D::apply_impulse(const Vector2 &p_impulse, const Vector2 &p_position) {
body->wakeup();
body->apply_impulse(p_impulse, p_position);
}
-void PhysicsDirectBodyState2DSW::apply_torque_impulse(real_t p_torque) {
+void GodotPhysicsDirectBodyState2D::apply_torque_impulse(real_t p_torque) {
body->wakeup();
body->apply_torque_impulse(p_torque);
}
-void PhysicsDirectBodyState2DSW::set_sleep_state(bool p_enable) {
+void GodotPhysicsDirectBodyState2D::set_sleep_state(bool p_enable) {
body->set_active(!p_enable);
}
-bool PhysicsDirectBodyState2DSW::is_sleeping() const {
+bool GodotPhysicsDirectBodyState2D::is_sleeping() const {
return !body->is_active();
}
-int PhysicsDirectBodyState2DSW::get_contact_count() const {
+int GodotPhysicsDirectBodyState2D::get_contact_count() const {
return body->contact_count;
}
-Vector2 PhysicsDirectBodyState2DSW::get_contact_local_position(int p_contact_idx) const {
+Vector2 GodotPhysicsDirectBodyState2D::get_contact_local_position(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, Vector2());
return body->contacts[p_contact_idx].local_pos;
}
-Vector2 PhysicsDirectBodyState2DSW::get_contact_local_normal(int p_contact_idx) const {
+Vector2 GodotPhysicsDirectBodyState2D::get_contact_local_normal(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, Vector2());
return body->contacts[p_contact_idx].local_normal;
}
-int PhysicsDirectBodyState2DSW::get_contact_local_shape(int p_contact_idx) const {
+int GodotPhysicsDirectBodyState2D::get_contact_local_shape(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, -1);
return body->contacts[p_contact_idx].local_shape;
}
-RID PhysicsDirectBodyState2DSW::get_contact_collider(int p_contact_idx) const {
+RID GodotPhysicsDirectBodyState2D::get_contact_collider(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, RID());
return body->contacts[p_contact_idx].collider;
}
-Vector2 PhysicsDirectBodyState2DSW::get_contact_collider_position(int p_contact_idx) const {
+Vector2 GodotPhysicsDirectBodyState2D::get_contact_collider_position(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, Vector2());
return body->contacts[p_contact_idx].collider_pos;
}
-ObjectID PhysicsDirectBodyState2DSW::get_contact_collider_id(int p_contact_idx) const {
+ObjectID GodotPhysicsDirectBodyState2D::get_contact_collider_id(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, ObjectID());
return body->contacts[p_contact_idx].collider_instance_id;
}
-int PhysicsDirectBodyState2DSW::get_contact_collider_shape(int p_contact_idx) const {
+int GodotPhysicsDirectBodyState2D::get_contact_collider_shape(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, 0);
return body->contacts[p_contact_idx].collider_shape;
}
-Vector2 PhysicsDirectBodyState2DSW::get_contact_collider_velocity_at_position(int p_contact_idx) const {
+Vector2 GodotPhysicsDirectBodyState2D::get_contact_collider_velocity_at_position(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, Vector2());
return body->contacts[p_contact_idx].collider_velocity_at_pos;
}
-PhysicsDirectSpaceState2D *PhysicsDirectBodyState2DSW::get_space_state() {
+PhysicsDirectSpaceState2D *GodotPhysicsDirectBodyState2D::get_space_state() {
return body->get_space()->get_direct_state();
}
-real_t PhysicsDirectBodyState2DSW::get_step() const {
+real_t GodotPhysicsDirectBodyState2D::get_step() const {
return body->get_space()->get_last_step();
}
diff --git a/servers/physics_2d/body_direct_state_2d_sw.h b/servers/physics_2d/godot_body_direct_state_2d.h
index 4266b24842..2f3e8e5095 100644
--- a/servers/physics_2d/body_direct_state_2d_sw.h
+++ b/servers/physics_2d/godot_body_direct_state_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_direct_state_2d_sw.h */
+/* godot_body_direct_state_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,18 +28,18 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BODY_DIRECT_STATE_2D_SW_H
-#define BODY_DIRECT_STATE_2D_SW_H
+#ifndef GODOT_BODY_DIRECT_STATE_2D_H
+#define GODOT_BODY_DIRECT_STATE_2D_H
#include "servers/physics_server_2d.h"
-class Body2DSW;
+class GodotBody2D;
-class PhysicsDirectBodyState2DSW : public PhysicsDirectBodyState2D {
- GDCLASS(PhysicsDirectBodyState2DSW, PhysicsDirectBodyState2D);
+class GodotPhysicsDirectBodyState2D : public PhysicsDirectBodyState2D {
+ GDCLASS(GodotPhysicsDirectBodyState2D, PhysicsDirectBodyState2D);
public:
- Body2DSW *body = nullptr;
+ GodotBody2D *body = nullptr;
virtual Vector2 get_total_gravity() const override;
virtual real_t get_total_angular_damp() const override;
@@ -88,4 +88,4 @@ public:
virtual real_t get_step() const override;
};
-#endif // BODY_2D_SW_H
+#endif // GODOT_BODY_DIRECT_STATE_2D_H
diff --git a/servers/physics_2d/body_pair_2d_sw.cpp b/servers/physics_2d/godot_body_pair_2d.cpp
index 8bcc4609f4..97eeefbfe6 100644
--- a/servers/physics_2d/body_pair_2d_sw.cpp
+++ b/servers/physics_2d/godot_body_pair_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_pair_2d_sw.cpp */
+/* godot_body_pair_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,20 +28,20 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "body_pair_2d_sw.h"
-#include "collision_solver_2d_sw.h"
-#include "space_2d_sw.h"
+#include "godot_body_pair_2d.h"
+#include "godot_collision_solver_2d.h"
+#include "godot_space_2d.h"
#define POSITION_CORRECTION
#define ACCUMULATE_IMPULSES
-void BodyPair2DSW::_add_contact(const Vector2 &p_point_A, const Vector2 &p_point_B, void *p_self) {
- BodyPair2DSW *self = (BodyPair2DSW *)p_self;
+void GodotBodyPair2D::_add_contact(const Vector2 &p_point_A, const Vector2 &p_point_B, void *p_self) {
+ GodotBodyPair2D *self = (GodotBodyPair2D *)p_self;
self->_contact_added_callback(p_point_A, p_point_B);
}
-void BodyPair2DSW::_contact_added_callback(const Vector2 &p_point_A, const Vector2 &p_point_B) {
+void GodotBodyPair2D::_contact_added_callback(const Vector2 &p_point_A, const Vector2 &p_point_B) {
// check if we already have the contact
Vector2 local_A = A->get_inv_transform().basis_xform(p_point_A);
@@ -121,7 +121,7 @@ void BodyPair2DSW::_contact_added_callback(const Vector2 &p_point_A, const Vecto
}
}
-void BodyPair2DSW::_validate_contacts() {
+void GodotBodyPair2D::_validate_contacts() {
//make sure to erase contacts that are no longer valid
real_t max_separation = space->get_contact_max_separation();
@@ -164,7 +164,7 @@ void BodyPair2DSW::_validate_contacts() {
}
}
-bool BodyPair2DSW::_test_ccd(real_t p_step, Body2DSW *p_A, int p_shape_A, const Transform2D &p_xform_A, Body2DSW *p_B, int p_shape_B, const Transform2D &p_xform_B, bool p_swap_result) {
+bool GodotBodyPair2D::_test_ccd(real_t p_step, GodotBody2D *p_A, int p_shape_A, const Transform2D &p_xform_A, GodotBody2D *p_B, int p_shape_B, const Transform2D &p_xform_B, bool p_swap_result) {
Vector2 motion = p_A->get_linear_velocity() * p_step;
real_t mlen = motion.length();
if (mlen < CMP_EPSILON) {
@@ -217,15 +217,15 @@ bool BodyPair2DSW::_test_ccd(real_t p_step, Body2DSW *p_A, int p_shape_A, const
return true;
}
-real_t combine_bounce(Body2DSW *A, Body2DSW *B) {
+real_t combine_bounce(GodotBody2D *A, GodotBody2D *B) {
return CLAMP(A->get_bounce() + B->get_bounce(), 0, 1);
}
-real_t combine_friction(Body2DSW *A, Body2DSW *B) {
+real_t combine_friction(GodotBody2D *A, GodotBody2D *B) {
return ABS(MIN(A->get_friction(), B->get_friction()));
}
-bool BodyPair2DSW::setup(real_t p_step) {
+bool GodotBodyPair2D::setup(real_t p_step) {
if (!A->interacts_with(B) || A->has_exception(B->get_self()) || B->has_exception(A->get_self())) {
collided = false;
return false;
@@ -257,8 +257,8 @@ bool BodyPair2DSW::setup(real_t p_step) {
xform_Bu.elements[2] -= offset_A;
Transform2D xform_B = xform_Bu * B->get_shape_transform(shape_B);
- Shape2DSW *shape_A_ptr = A->get_shape(shape_A);
- Shape2DSW *shape_B_ptr = B->get_shape(shape_B);
+ GodotShape2D *shape_A_ptr = A->get_shape(shape_A);
+ GodotShape2D *shape_B_ptr = B->get_shape(shape_B);
Vector2 motion_A, motion_B;
@@ -271,7 +271,7 @@ bool BodyPair2DSW::setup(real_t p_step) {
bool prev_collided = collided;
- collided = CollisionSolver2DSW::solve(shape_A_ptr, xform_A, motion_A, shape_B_ptr, xform_B, motion_B, _add_contact, this, &sep_axis);
+ collided = GodotCollisionSolver2D::solve(shape_A_ptr, xform_A, motion_A, shape_B_ptr, xform_B, motion_B, _add_contact, this, &sep_axis);
if (!collided) {
//test ccd (currently just a raycast)
@@ -344,7 +344,7 @@ bool BodyPair2DSW::setup(real_t p_step) {
return true;
}
-bool BodyPair2DSW::pre_solve(real_t p_step) {
+bool GodotBodyPair2D::pre_solve(real_t p_step) {
if (!collided || oneway_disabled) {
return false;
}
@@ -353,8 +353,8 @@ bool BodyPair2DSW::pre_solve(real_t p_step) {
real_t bias = 0.3;
- Shape2DSW *shape_A_ptr = A->get_shape(shape_A);
- Shape2DSW *shape_B_ptr = B->get_shape(shape_B);
+ GodotShape2D *shape_A_ptr = A->get_shape(shape_A);
+ GodotShape2D *shape_B_ptr = B->get_shape(shape_B);
if (shape_A_ptr->get_custom_bias() || shape_B_ptr->get_custom_bias()) {
if (shape_A_ptr->get_custom_bias() == 0) {
@@ -466,7 +466,7 @@ bool BodyPair2DSW::pre_solve(real_t p_step) {
return do_process;
}
-void BodyPair2DSW::solve(real_t p_step) {
+void GodotBodyPair2D::solve(real_t p_step) {
if (!collided || oneway_disabled) {
return;
}
@@ -528,8 +528,8 @@ void BodyPair2DSW::solve(real_t p_step) {
}
}
-BodyPair2DSW::BodyPair2DSW(Body2DSW *p_A, int p_shape_A, Body2DSW *p_B, int p_shape_B) :
- Constraint2DSW(_arr, 2) {
+GodotBodyPair2D::GodotBodyPair2D(GodotBody2D *p_A, int p_shape_A, GodotBody2D *p_B, int p_shape_B) :
+ GodotConstraint2D(_arr, 2) {
A = p_A;
B = p_B;
shape_A = p_shape_A;
@@ -539,7 +539,7 @@ BodyPair2DSW::BodyPair2DSW(Body2DSW *p_A, int p_shape_A, Body2DSW *p_B, int p_sh
B->add_constraint(this, 1);
}
-BodyPair2DSW::~BodyPair2DSW() {
+GodotBodyPair2D::~GodotBodyPair2D() {
A->remove_constraint(this, 0);
B->remove_constraint(this, 1);
}
diff --git a/servers/physics_2d/body_pair_2d_sw.h b/servers/physics_2d/godot_body_pair_2d.h
index db4f3eba69..0938ab542b 100644
--- a/servers/physics_2d/body_pair_2d_sw.h
+++ b/servers/physics_2d/godot_body_pair_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_pair_2d_sw.h */
+/* godot_body_pair_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,23 +28,23 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BODY_PAIR_2D_SW_H
-#define BODY_PAIR_2D_SW_H
+#ifndef GODOT_BODY_PAIR_2D_H
+#define GODOT_BODY_PAIR_2D_H
-#include "body_2d_sw.h"
-#include "constraint_2d_sw.h"
+#include "godot_body_2d.h"
+#include "godot_constraint_2d.h"
-class BodyPair2DSW : public Constraint2DSW {
+class GodotBodyPair2D : public GodotConstraint2D {
enum {
MAX_CONTACTS = 2
};
union {
struct {
- Body2DSW *A;
- Body2DSW *B;
+ GodotBody2D *A;
+ GodotBody2D *B;
};
- Body2DSW *_arr[2] = { nullptr, nullptr };
+ GodotBody2D *_arr[2] = { nullptr, nullptr };
};
int shape_A = 0;
@@ -53,7 +53,7 @@ class BodyPair2DSW : public Constraint2DSW {
bool collide_A = false;
bool collide_B = false;
- Space2DSW *space = nullptr;
+ GodotSpace2D *space = nullptr;
struct Contact {
Vector2 position;
@@ -81,7 +81,7 @@ class BodyPair2DSW : public Constraint2DSW {
bool oneway_disabled = false;
bool report_contacts_only = false;
- bool _test_ccd(real_t p_step, Body2DSW *p_A, int p_shape_A, const Transform2D &p_xform_A, Body2DSW *p_B, int p_shape_B, const Transform2D &p_xform_B, bool p_swap_result = false);
+ bool _test_ccd(real_t p_step, GodotBody2D *p_A, int p_shape_A, const Transform2D &p_xform_A, GodotBody2D *p_B, int p_shape_B, const Transform2D &p_xform_B, bool p_swap_result = false);
void _validate_contacts();
static void _add_contact(const Vector2 &p_point_A, const Vector2 &p_point_B, void *p_self);
_FORCE_INLINE_ void _contact_added_callback(const Vector2 &p_point_A, const Vector2 &p_point_B);
@@ -91,8 +91,8 @@ public:
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- BodyPair2DSW(Body2DSW *p_A, int p_shape_A, Body2DSW *p_B, int p_shape_B);
- ~BodyPair2DSW();
+ GodotBodyPair2D(GodotBody2D *p_A, int p_shape_A, GodotBody2D *p_B, int p_shape_B);
+ ~GodotBodyPair2D();
};
-#endif // BODY_PAIR_2D_SW_H
+#endif // GODOT_BODY_PAIR_2D_H
diff --git a/servers/physics_3d/broad_phase_3d_sw.cpp b/servers/physics_2d/godot_broad_phase_2d.cpp
index 8aa64034ec..4b35f8d996 100644
--- a/servers/physics_3d/broad_phase_3d_sw.cpp
+++ b/servers/physics_2d/godot_broad_phase_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* broad_phase_3d_sw.cpp */
+/* godot_broad_phase_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,9 +28,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "broad_phase_3d_sw.h"
+#include "godot_broad_phase_2d.h"
-BroadPhase3DSW::CreateFunction BroadPhase3DSW::create_func = nullptr;
+GodotBroadPhase2D::CreateFunction GodotBroadPhase2D::create_func = nullptr;
-BroadPhase3DSW::~BroadPhase3DSW() {
+GodotBroadPhase2D::~GodotBroadPhase2D() {
}
diff --git a/servers/physics_2d/broad_phase_2d_sw.h b/servers/physics_2d/godot_broad_phase_2d.h
index 0f82f06b9c..7017a6e41f 100644
--- a/servers/physics_2d/broad_phase_2d_sw.h
+++ b/servers/physics_2d/godot_broad_phase_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* broad_phase_2d_sw.h */
+/* godot_broad_phase_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,44 +28,44 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BROAD_PHASE_2D_SW_H
-#define BROAD_PHASE_2D_SW_H
+#ifndef GODOT_BROAD_PHASE_2D_H
+#define GODOT_BROAD_PHASE_2D_H
#include "core/math/math_funcs.h"
#include "core/math/rect2.h"
-class CollisionObject2DSW;
+class GodotCollisionObject2D;
-class BroadPhase2DSW {
+class GodotBroadPhase2D {
public:
- typedef BroadPhase2DSW *(*CreateFunction)();
+ typedef GodotBroadPhase2D *(*CreateFunction)();
static CreateFunction create_func;
typedef uint32_t ID;
- typedef void *(*PairCallback)(CollisionObject2DSW *A, int p_subindex_A, CollisionObject2DSW *B, int p_subindex_B, void *p_userdata);
- typedef void (*UnpairCallback)(CollisionObject2DSW *A, int p_subindex_A, CollisionObject2DSW *B, int p_subindex_B, void *p_data, void *p_userdata);
+ typedef void *(*PairCallback)(GodotCollisionObject2D *A, int p_subindex_A, GodotCollisionObject2D *B, int p_subindex_B, void *p_userdata);
+ typedef void (*UnpairCallback)(GodotCollisionObject2D *A, int p_subindex_A, GodotCollisionObject2D *B, int p_subindex_B, void *p_data, void *p_userdata);
// 0 is an invalid ID
- virtual ID create(CollisionObject2DSW *p_object_, int p_subindex = 0, const Rect2 &p_aabb = Rect2(), bool p_static = false) = 0;
+ virtual ID create(GodotCollisionObject2D *p_object_, int p_subindex = 0, const Rect2 &p_aabb = Rect2(), bool p_static = false) = 0;
virtual void move(ID p_id, const Rect2 &p_aabb) = 0;
virtual void set_static(ID p_id, bool p_static) = 0;
virtual void remove(ID p_id) = 0;
- virtual CollisionObject2DSW *get_object(ID p_id) const = 0;
+ virtual GodotCollisionObject2D *get_object(ID p_id) const = 0;
virtual bool is_static(ID p_id) const = 0;
virtual int get_subindex(ID p_id) const = 0;
- virtual int cull_segment(const Vector2 &p_from, const Vector2 &p_to, CollisionObject2DSW **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
- virtual int cull_aabb(const Rect2 &p_aabb, CollisionObject2DSW **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
+ virtual int cull_segment(const Vector2 &p_from, const Vector2 &p_to, GodotCollisionObject2D **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
+ virtual int cull_aabb(const Rect2 &p_aabb, GodotCollisionObject2D **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
virtual void set_pair_callback(PairCallback p_pair_callback, void *p_userdata) = 0;
virtual void set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata) = 0;
virtual void update() = 0;
- virtual ~BroadPhase2DSW();
+ virtual ~GodotBroadPhase2D();
};
-#endif // BROAD_PHASE_2D_SW_H
+#endif // GODOT_BROAD_PHASE_2D_H
diff --git a/servers/physics_2d/broad_phase_2d_bvh.cpp b/servers/physics_2d/godot_broad_phase_2d_bvh.cpp
index 0df7086c5a..9ec6b0a6b7 100644
--- a/servers/physics_2d/broad_phase_2d_bvh.cpp
+++ b/servers/physics_2d/godot_broad_phase_2d_bvh.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* broad_phase_2d_bvh.cpp */
+/* godot_broad_phase_2d_bvh.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,51 +28,51 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "broad_phase_2d_bvh.h"
-#include "collision_object_2d_sw.h"
+#include "godot_broad_phase_2d_bvh.h"
+#include "godot_collision_object_2d.h"
-BroadPhase2DSW::ID BroadPhase2DBVH::create(CollisionObject2DSW *p_object, int p_subindex, const Rect2 &p_aabb, bool p_static) {
+GodotBroadPhase2D::ID GodotBroadPhase2DBVH::create(GodotCollisionObject2D *p_object, int p_subindex, const Rect2 &p_aabb, bool p_static) {
ID oid = bvh.create(p_object, true, p_aabb, p_subindex, !p_static, 1 << p_object->get_type(), p_static ? 0 : 0xFFFFF); // Pair everything, don't care?
return oid + 1;
}
-void BroadPhase2DBVH::move(ID p_id, const Rect2 &p_aabb) {
+void GodotBroadPhase2DBVH::move(ID p_id, const Rect2 &p_aabb) {
bvh.move(p_id - 1, p_aabb);
}
-void BroadPhase2DBVH::set_static(ID p_id, bool p_static) {
- CollisionObject2DSW *it = bvh.get(p_id - 1);
+void GodotBroadPhase2DBVH::set_static(ID p_id, bool p_static) {
+ GodotCollisionObject2D *it = bvh.get(p_id - 1);
bvh.set_pairable(p_id - 1, !p_static, 1 << it->get_type(), p_static ? 0 : 0xFFFFF, false); // Pair everything, don't care?
}
-void BroadPhase2DBVH::remove(ID p_id) {
+void GodotBroadPhase2DBVH::remove(ID p_id) {
bvh.erase(p_id - 1);
}
-CollisionObject2DSW *BroadPhase2DBVH::get_object(ID p_id) const {
- CollisionObject2DSW *it = bvh.get(p_id - 1);
+GodotCollisionObject2D *GodotBroadPhase2DBVH::get_object(ID p_id) const {
+ GodotCollisionObject2D *it = bvh.get(p_id - 1);
ERR_FAIL_COND_V(!it, nullptr);
return it;
}
-bool BroadPhase2DBVH::is_static(ID p_id) const {
+bool GodotBroadPhase2DBVH::is_static(ID p_id) const {
return !bvh.is_pairable(p_id - 1);
}
-int BroadPhase2DBVH::get_subindex(ID p_id) const {
+int GodotBroadPhase2DBVH::get_subindex(ID p_id) const {
return bvh.get_subindex(p_id - 1);
}
-int BroadPhase2DBVH::cull_segment(const Vector2 &p_from, const Vector2 &p_to, CollisionObject2DSW **p_results, int p_max_results, int *p_result_indices) {
+int GodotBroadPhase2DBVH::cull_segment(const Vector2 &p_from, const Vector2 &p_to, GodotCollisionObject2D **p_results, int p_max_results, int *p_result_indices) {
return bvh.cull_segment(p_from, p_to, p_results, p_max_results, p_result_indices);
}
-int BroadPhase2DBVH::cull_aabb(const Rect2 &p_aabb, CollisionObject2DSW **p_results, int p_max_results, int *p_result_indices) {
+int GodotBroadPhase2DBVH::cull_aabb(const Rect2 &p_aabb, GodotCollisionObject2D **p_results, int p_max_results, int *p_result_indices) {
return bvh.cull_aabb(p_aabb, p_results, p_max_results, p_result_indices);
}
-void *BroadPhase2DBVH::_pair_callback(void *self, uint32_t p_A, CollisionObject2DSW *p_object_A, int subindex_A, uint32_t p_B, CollisionObject2DSW *p_object_B, int subindex_B) {
- BroadPhase2DBVH *bpo = (BroadPhase2DBVH *)(self);
+void *GodotBroadPhase2DBVH::_pair_callback(void *self, uint32_t p_A, GodotCollisionObject2D *p_object_A, int subindex_A, uint32_t p_B, GodotCollisionObject2D *p_object_B, int subindex_B) {
+ GodotBroadPhase2DBVH *bpo = (GodotBroadPhase2DBVH *)(self);
if (!bpo->pair_callback) {
return nullptr;
}
@@ -80,8 +80,8 @@ void *BroadPhase2DBVH::_pair_callback(void *self, uint32_t p_A, CollisionObject2
return bpo->pair_callback(p_object_A, subindex_A, p_object_B, subindex_B, bpo->pair_userdata);
}
-void BroadPhase2DBVH::_unpair_callback(void *self, uint32_t p_A, CollisionObject2DSW *p_object_A, int subindex_A, uint32_t p_B, CollisionObject2DSW *p_object_B, int subindex_B, void *pairdata) {
- BroadPhase2DBVH *bpo = (BroadPhase2DBVH *)(self);
+void GodotBroadPhase2DBVH::_unpair_callback(void *self, uint32_t p_A, GodotCollisionObject2D *p_object_A, int subindex_A, uint32_t p_B, GodotCollisionObject2D *p_object_B, int subindex_B, void *pairdata) {
+ GodotBroadPhase2DBVH *bpo = (GodotBroadPhase2DBVH *)(self);
if (!bpo->unpair_callback) {
return;
}
@@ -89,25 +89,25 @@ void BroadPhase2DBVH::_unpair_callback(void *self, uint32_t p_A, CollisionObject
bpo->unpair_callback(p_object_A, subindex_A, p_object_B, subindex_B, pairdata, bpo->unpair_userdata);
}
-void BroadPhase2DBVH::set_pair_callback(PairCallback p_pair_callback, void *p_userdata) {
+void GodotBroadPhase2DBVH::set_pair_callback(PairCallback p_pair_callback, void *p_userdata) {
pair_callback = p_pair_callback;
pair_userdata = p_userdata;
}
-void BroadPhase2DBVH::set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata) {
+void GodotBroadPhase2DBVH::set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata) {
unpair_callback = p_unpair_callback;
unpair_userdata = p_userdata;
}
-void BroadPhase2DBVH::update() {
+void GodotBroadPhase2DBVH::update() {
bvh.update();
}
-BroadPhase2DSW *BroadPhase2DBVH::_create() {
- return memnew(BroadPhase2DBVH);
+GodotBroadPhase2D *GodotBroadPhase2DBVH::_create() {
+ return memnew(GodotBroadPhase2DBVH);
}
-BroadPhase2DBVH::BroadPhase2DBVH() {
+GodotBroadPhase2DBVH::GodotBroadPhase2DBVH() {
bvh.set_pair_callback(_pair_callback, this);
bvh.set_unpair_callback(_unpair_callback, this);
}
diff --git a/servers/physics_2d/broad_phase_2d_bvh.h b/servers/physics_2d/godot_broad_phase_2d_bvh.h
index ea02a98417..19b49f3499 100644
--- a/servers/physics_2d/broad_phase_2d_bvh.h
+++ b/servers/physics_2d/godot_broad_phase_2d_bvh.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* broad_phase_2d_bvh.h */
+/* godot_broad_phase_2d_bvh.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,19 +28,20 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BROAD_PHASE_2D_BVH_H
-#define BROAD_PHASE_2D_BVH_H
+#ifndef GODOT_BROAD_PHASE_2D_BVH_H
+#define GODOT_BROAD_PHASE_2D_BVH_H
+
+#include "godot_broad_phase_2d.h"
-#include "broad_phase_2d_sw.h"
#include "core/math/bvh.h"
#include "core/math/rect2.h"
#include "core/math/vector2.h"
-class BroadPhase2DBVH : public BroadPhase2DSW {
- BVH_Manager<CollisionObject2DSW, true, 128, Rect2, Vector2> bvh;
+class GodotBroadPhase2DBVH : public GodotBroadPhase2D {
+ BVH_Manager<GodotCollisionObject2D, true, 128, Rect2, Vector2> bvh;
- static void *_pair_callback(void *, uint32_t, CollisionObject2DSW *, int, uint32_t, CollisionObject2DSW *, int);
- static void _unpair_callback(void *, uint32_t, CollisionObject2DSW *, int, uint32_t, CollisionObject2DSW *, int, void *);
+ static void *_pair_callback(void *, uint32_t, GodotCollisionObject2D *, int, uint32_t, GodotCollisionObject2D *, int);
+ static void _unpair_callback(void *, uint32_t, GodotCollisionObject2D *, int, uint32_t, GodotCollisionObject2D *, int, void *);
PairCallback pair_callback = nullptr;
void *pair_userdata = nullptr;
@@ -49,25 +50,25 @@ class BroadPhase2DBVH : public BroadPhase2DSW {
public:
// 0 is an invalid ID
- virtual ID create(CollisionObject2DSW *p_object, int p_subindex = 0, const Rect2 &p_aabb = Rect2(), bool p_static = false);
+ virtual ID create(GodotCollisionObject2D *p_object, int p_subindex = 0, const Rect2 &p_aabb = Rect2(), bool p_static = false);
virtual void move(ID p_id, const Rect2 &p_aabb);
virtual void set_static(ID p_id, bool p_static);
virtual void remove(ID p_id);
- virtual CollisionObject2DSW *get_object(ID p_id) const;
+ virtual GodotCollisionObject2D *get_object(ID p_id) const;
virtual bool is_static(ID p_id) const;
virtual int get_subindex(ID p_id) const;
- virtual int cull_segment(const Vector2 &p_from, const Vector2 &p_to, CollisionObject2DSW **p_results, int p_max_results, int *p_result_indices = nullptr);
- virtual int cull_aabb(const Rect2 &p_aabb, CollisionObject2DSW **p_results, int p_max_results, int *p_result_indices = nullptr);
+ virtual int cull_segment(const Vector2 &p_from, const Vector2 &p_to, GodotCollisionObject2D **p_results, int p_max_results, int *p_result_indices = nullptr);
+ virtual int cull_aabb(const Rect2 &p_aabb, GodotCollisionObject2D **p_results, int p_max_results, int *p_result_indices = nullptr);
virtual void set_pair_callback(PairCallback p_pair_callback, void *p_userdata);
virtual void set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata);
virtual void update();
- static BroadPhase2DSW *_create();
- BroadPhase2DBVH();
+ static GodotBroadPhase2D *_create();
+ GodotBroadPhase2DBVH();
};
-#endif // BROAD_PHASE_2D_BVH_H
+#endif // GODOT_BROAD_PHASE_2D_BVH_H
diff --git a/servers/physics_2d/collision_object_2d_sw.cpp b/servers/physics_2d/godot_collision_object_2d.cpp
index bc7d277152..3d4ebbedcd 100644
--- a/servers/physics_2d/collision_object_2d_sw.cpp
+++ b/servers/physics_2d/godot_collision_object_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_object_2d_sw.cpp */
+/* godot_collision_object_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,11 +28,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "collision_object_2d_sw.h"
-#include "servers/physics_2d/physics_server_2d_sw.h"
-#include "space_2d_sw.h"
+#include "godot_collision_object_2d.h"
+#include "godot_physics_server_2d.h"
+#include "godot_space_2d.h"
-void CollisionObject2DSW::add_shape(Shape2DSW *p_shape, const Transform2D &p_transform, bool p_disabled) {
+void GodotCollisionObject2D::add_shape(GodotShape2D *p_shape, const Transform2D &p_transform, bool p_disabled) {
Shape s;
s.shape = p_shape;
s.xform = p_transform;
@@ -45,11 +45,11 @@ void CollisionObject2DSW::add_shape(Shape2DSW *p_shape, const Transform2D &p_tra
p_shape->add_owner(this);
if (!pending_shape_update_list.in_list()) {
- PhysicsServer2DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer2D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
-void CollisionObject2DSW::set_shape(int p_index, Shape2DSW *p_shape) {
+void GodotCollisionObject2D::set_shape(int p_index, GodotShape2D *p_shape) {
ERR_FAIL_INDEX(p_index, shapes.size());
shapes[p_index].shape->remove_owner(this);
shapes.write[p_index].shape = p_shape;
@@ -57,25 +57,25 @@ void CollisionObject2DSW::set_shape(int p_index, Shape2DSW *p_shape) {
p_shape->add_owner(this);
if (!pending_shape_update_list.in_list()) {
- PhysicsServer2DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer2D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
-void CollisionObject2DSW::set_shape_transform(int p_index, const Transform2D &p_transform) {
+void GodotCollisionObject2D::set_shape_transform(int p_index, const Transform2D &p_transform) {
ERR_FAIL_INDEX(p_index, shapes.size());
shapes.write[p_index].xform = p_transform;
shapes.write[p_index].xform_inv = p_transform.affine_inverse();
if (!pending_shape_update_list.in_list()) {
- PhysicsServer2DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer2D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
-void CollisionObject2DSW::set_shape_disabled(int p_idx, bool p_disabled) {
+void GodotCollisionObject2D::set_shape_disabled(int p_idx, bool p_disabled) {
ERR_FAIL_INDEX(p_idx, shapes.size());
- CollisionObject2DSW::Shape &shape = shapes.write[p_idx];
+ GodotCollisionObject2D::Shape &shape = shapes.write[p_idx];
if (shape.disabled == p_disabled) {
return;
}
@@ -90,16 +90,16 @@ void CollisionObject2DSW::set_shape_disabled(int p_idx, bool p_disabled) {
space->get_broadphase()->remove(shape.bpid);
shape.bpid = 0;
if (!pending_shape_update_list.in_list()) {
- PhysicsServer2DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer2D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
} else if (!p_disabled && shape.bpid == 0) {
if (!pending_shape_update_list.in_list()) {
- PhysicsServer2DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer2D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
}
-void CollisionObject2DSW::remove_shape(Shape2DSW *p_shape) {
+void GodotCollisionObject2D::remove_shape(GodotShape2D *p_shape) {
//remove a shape, all the times it appears
for (int i = 0; i < shapes.size(); i++) {
if (shapes[i].shape == p_shape) {
@@ -109,7 +109,7 @@ void CollisionObject2DSW::remove_shape(Shape2DSW *p_shape) {
}
}
-void CollisionObject2DSW::remove_shape(int p_index) {
+void GodotCollisionObject2D::remove_shape(int p_index) {
//remove anything from shape to be erased to end, so subindices don't change
ERR_FAIL_INDEX(p_index, shapes.size());
for (int i = p_index; i < shapes.size(); i++) {
@@ -124,13 +124,13 @@ void CollisionObject2DSW::remove_shape(int p_index) {
shapes.remove(p_index);
if (!pending_shape_update_list.in_list()) {
- PhysicsServer2DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer2D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
// _update_shapes();
// _shapes_changed();
}
-void CollisionObject2DSW::_set_static(bool p_static) {
+void GodotCollisionObject2D::_set_static(bool p_static) {
if (_static == p_static) {
return;
}
@@ -147,7 +147,7 @@ void CollisionObject2DSW::_set_static(bool p_static) {
}
}
-void CollisionObject2DSW::_unregister_shapes() {
+void GodotCollisionObject2D::_unregister_shapes() {
for (int i = 0; i < shapes.size(); i++) {
Shape &s = shapes.write[i];
if (s.bpid > 0) {
@@ -157,7 +157,7 @@ void CollisionObject2DSW::_unregister_shapes() {
}
}
-void CollisionObject2DSW::_update_shapes() {
+void GodotCollisionObject2D::_update_shapes() {
if (!space) {
return;
}
@@ -184,7 +184,7 @@ void CollisionObject2DSW::_update_shapes() {
}
}
-void CollisionObject2DSW::_update_shapes_with_motion(const Vector2 &p_motion) {
+void GodotCollisionObject2D::_update_shapes_with_motion(const Vector2 &p_motion) {
if (!space) {
return;
}
@@ -211,7 +211,7 @@ void CollisionObject2DSW::_update_shapes_with_motion(const Vector2 &p_motion) {
}
}
-void CollisionObject2DSW::_set_space(Space2DSW *p_space) {
+void GodotCollisionObject2D::_set_space(GodotSpace2D *p_space) {
if (space) {
space->remove_object(this);
@@ -232,12 +232,12 @@ void CollisionObject2DSW::_set_space(Space2DSW *p_space) {
}
}
-void CollisionObject2DSW::_shape_changed() {
+void GodotCollisionObject2D::_shape_changed() {
_update_shapes();
_shapes_changed();
}
-CollisionObject2DSW::CollisionObject2DSW(Type p_type) :
+GodotCollisionObject2D::GodotCollisionObject2D(Type p_type) :
pending_shape_update_list(this) {
type = p_type;
}
diff --git a/servers/physics_2d/collision_object_2d_sw.h b/servers/physics_2d/godot_collision_object_2d.h
index ca258a906a..7233857808 100644
--- a/servers/physics_2d/collision_object_2d_sw.h
+++ b/servers/physics_2d/godot_collision_object_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_object_2d_sw.h */
+/* godot_collision_object_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,17 +28,18 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef COLLISION_OBJECT_2D_SW_H
-#define COLLISION_OBJECT_2D_SW_H
+#ifndef GODOT_COLLISION_OBJECT_2D_H
+#define GODOT_COLLISION_OBJECT_2D_H
+
+#include "godot_broad_phase_2d.h"
+#include "godot_shape_2d.h"
-#include "broad_phase_2d_sw.h"
#include "core/templates/self_list.h"
#include "servers/physics_server_2d.h"
-#include "shape_2d_sw.h"
-class Space2DSW;
+class GodotSpace2D;
-class CollisionObject2DSW : public ShapeOwner2DSW {
+class GodotCollisionObject2D : public GodotShapeOwner2D {
public:
enum Type {
TYPE_AREA,
@@ -55,23 +56,23 @@ private:
struct Shape {
Transform2D xform;
Transform2D xform_inv;
- BroadPhase2DSW::ID bpid = 0;
+ GodotBroadPhase2D::ID bpid = 0;
Rect2 aabb_cache; //for rayqueries
- Shape2DSW *shape = nullptr;
+ GodotShape2D *shape = nullptr;
bool disabled = false;
bool one_way_collision = false;
real_t one_way_collision_margin = 0.0;
};
Vector<Shape> shapes;
- Space2DSW *space = nullptr;
+ GodotSpace2D *space = nullptr;
Transform2D transform;
Transform2D inv_transform;
uint32_t collision_mask = 1;
uint32_t collision_layer = 1;
bool _static = true;
- SelfList<CollisionObject2DSW> pending_shape_update_list;
+ SelfList<GodotCollisionObject2D> pending_shape_update_list;
void _update_shapes();
@@ -89,9 +90,9 @@ protected:
void _set_static(bool p_static);
virtual void _shapes_changed() = 0;
- void _set_space(Space2DSW *p_space);
+ void _set_space(GodotSpace2D *p_space);
- CollisionObject2DSW(Type p_type);
+ GodotCollisionObject2D(Type p_type);
public:
_FORCE_INLINE_ void set_self(const RID &p_self) { self = p_self; }
@@ -106,12 +107,12 @@ public:
void _shape_changed();
_FORCE_INLINE_ Type get_type() const { return type; }
- void add_shape(Shape2DSW *p_shape, const Transform2D &p_transform = Transform2D(), bool p_disabled = false);
- void set_shape(int p_index, Shape2DSW *p_shape);
+ void add_shape(GodotShape2D *p_shape, const Transform2D &p_transform = Transform2D(), bool p_disabled = false);
+ void set_shape(int p_index, GodotShape2D *p_shape);
void set_shape_transform(int p_index, const Transform2D &p_transform);
_FORCE_INLINE_ int get_shape_count() const { return shapes.size(); }
- _FORCE_INLINE_ Shape2DSW *get_shape(int p_index) const {
+ _FORCE_INLINE_ GodotShape2D *get_shape(int p_index) const {
CRASH_BAD_INDEX(p_index, shapes.size());
return shapes[p_index].shape;
}
@@ -130,7 +131,7 @@ public:
_FORCE_INLINE_ const Transform2D &get_transform() const { return transform; }
_FORCE_INLINE_ const Transform2D &get_inv_transform() const { return inv_transform; }
- _FORCE_INLINE_ Space2DSW *get_space() const { return space; }
+ _FORCE_INLINE_ GodotSpace2D *get_space() const { return space; }
void set_shape_disabled(int p_idx, bool p_disabled);
_FORCE_INLINE_ bool is_shape_disabled(int p_idx) const {
@@ -165,25 +166,25 @@ public:
}
_FORCE_INLINE_ uint32_t get_collision_layer() const { return collision_layer; }
- void remove_shape(Shape2DSW *p_shape);
+ void remove_shape(GodotShape2D *p_shape);
void remove_shape(int p_index);
- virtual void set_space(Space2DSW *p_space) = 0;
+ virtual void set_space(GodotSpace2D *p_space) = 0;
_FORCE_INLINE_ bool is_static() const { return _static; }
void set_pickable(bool p_pickable) { pickable = p_pickable; }
_FORCE_INLINE_ bool is_pickable() const { return pickable; }
- _FORCE_INLINE_ bool collides_with(CollisionObject2DSW *p_other) const {
+ _FORCE_INLINE_ bool collides_with(GodotCollisionObject2D *p_other) const {
return p_other->collision_layer & collision_mask;
}
- _FORCE_INLINE_ bool interacts_with(CollisionObject2DSW *p_other) const {
+ _FORCE_INLINE_ bool interacts_with(GodotCollisionObject2D *p_other) const {
return collision_layer & p_other->collision_mask || p_other->collision_layer & collision_mask;
}
- virtual ~CollisionObject2DSW() {}
+ virtual ~GodotCollisionObject2D() {}
};
-#endif // COLLISION_OBJECT_2D_SW_H
+#endif // GODOT_COLLISION_OBJECT_2D_H
diff --git a/servers/physics_2d/collision_solver_2d_sw.cpp b/servers/physics_2d/godot_collision_solver_2d.cpp
index 527bb1b0b2..25371b9885 100644
--- a/servers/physics_2d/collision_solver_2d_sw.cpp
+++ b/servers/physics_2d/godot_collision_solver_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_solver_2d_sw.cpp */
+/* godot_collision_solver_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,14 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "collision_solver_2d_sw.h"
-#include "collision_solver_2d_sat.h"
+#include "godot_collision_solver_2d.h"
+#include "godot_collision_solver_2d_sat.h"
#define collision_solver sat_2d_calculate_penetration
//#define collision_solver gjk_epa_calculate_penetration
-bool CollisionSolver2DSW::solve_static_world_boundary(const Shape2DSW *p_shape_A, const Transform2D &p_transform_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result) {
- const WorldBoundaryShape2DSW *world_boundary = static_cast<const WorldBoundaryShape2DSW *>(p_shape_A);
+bool GodotCollisionSolver2D::solve_static_world_boundary(const GodotShape2D *p_shape_A, const Transform2D &p_transform_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result) {
+ const GodotWorldBoundaryShape2D *world_boundary = static_cast<const GodotWorldBoundaryShape2D *>(p_shape_A);
if (p_shape_B->get_type() == PhysicsServer2D::SHAPE_WORLD_BOUNDARY) {
return false;
}
@@ -73,8 +73,8 @@ bool CollisionSolver2DSW::solve_static_world_boundary(const Shape2DSW *p_shape_A
return found;
}
-bool CollisionSolver2DSW::solve_separation_ray(const Shape2DSW *p_shape_A, const Vector2 &p_motion_A, const Transform2D &p_transform_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, Vector2 *r_sep_axis, real_t p_margin) {
- const SeparationRayShape2DSW *ray = static_cast<const SeparationRayShape2DSW *>(p_shape_A);
+bool GodotCollisionSolver2D::solve_separation_ray(const GodotShape2D *p_shape_A, const Vector2 &p_motion_A, const Transform2D &p_transform_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, Vector2 *r_sep_axis, real_t p_margin) {
+ const GodotSeparationRayShape2D *ray = static_cast<const GodotSeparationRayShape2D *>(p_shape_A);
if (p_shape_B->get_type() == PhysicsServer2D::SHAPE_SEPARATION_RAY) {
return false;
}
@@ -134,13 +134,13 @@ bool CollisionSolver2DSW::solve_separation_ray(const Shape2DSW *p_shape_A, const
struct _ConcaveCollisionInfo2D {
const Transform2D *transform_A = nullptr;
- const Shape2DSW *shape_A = nullptr;
+ const GodotShape2D *shape_A = nullptr;
const Transform2D *transform_B = nullptr;
Vector2 motion_A;
Vector2 motion_B;
real_t margin_A = 0.0;
real_t margin_B = 0.0;
- CollisionSolver2DSW::CallbackResult result_callback;
+ GodotCollisionSolver2D::CallbackResult result_callback;
void *userdata = nullptr;
bool swap_result = false;
bool collided = false;
@@ -149,7 +149,7 @@ struct _ConcaveCollisionInfo2D {
Vector2 *sep_axis = nullptr;
};
-bool CollisionSolver2DSW::concave_callback(void *p_userdata, Shape2DSW *p_convex) {
+bool GodotCollisionSolver2D::concave_callback(void *p_userdata, GodotShape2D *p_convex) {
_ConcaveCollisionInfo2D &cinfo = *(_ConcaveCollisionInfo2D *)(p_userdata);
cinfo.aabb_tests++;
@@ -165,8 +165,8 @@ bool CollisionSolver2DSW::concave_callback(void *p_userdata, Shape2DSW *p_convex
return !cinfo.result_callback;
}
-bool CollisionSolver2DSW::solve_concave(const Shape2DSW *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, Vector2 *r_sep_axis, real_t p_margin_A, real_t p_margin_B) {
- const ConcaveShape2DSW *concave_B = static_cast<const ConcaveShape2DSW *>(p_shape_B);
+bool GodotCollisionSolver2D::solve_concave(const GodotShape2D *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, Vector2 *r_sep_axis, real_t p_margin_A, real_t p_margin_B) {
+ const GodotConcaveShape2D *concave_B = static_cast<const GodotConcaveShape2D *>(p_shape_B);
_ConcaveCollisionInfo2D cinfo;
cinfo.transform_A = &p_transform_A;
@@ -209,7 +209,7 @@ bool CollisionSolver2DSW::solve_concave(const Shape2DSW *p_shape_A, const Transf
return cinfo.collided;
}
-bool CollisionSolver2DSW::solve(const Shape2DSW *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CallbackResult p_result_callback, void *p_userdata, Vector2 *r_sep_axis, real_t p_margin_A, real_t p_margin_B) {
+bool GodotCollisionSolver2D::solve(const GodotShape2D *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CallbackResult p_result_callback, void *p_userdata, Vector2 *r_sep_axis, real_t p_margin_A, real_t p_margin_B) {
PhysicsServer2D::ShapeType type_A = p_shape_A->get_type();
PhysicsServer2D::ShapeType type_B = p_shape_B->get_type();
bool concave_A = p_shape_A->is_concave();
diff --git a/servers/physics_2d/collision_solver_2d_sw.h b/servers/physics_2d/godot_collision_solver_2d.h
index b87247b89a..f10815a444 100644
--- a/servers/physics_2d/collision_solver_2d_sw.h
+++ b/servers/physics_2d/godot_collision_solver_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_solver_2d_sw.h */
+/* godot_collision_solver_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,23 +28,23 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef COLLISION_SOLVER_2D_SW_H
-#define COLLISION_SOLVER_2D_SW_H
+#ifndef GODOT_COLLISION_SOLVER_2D_H
+#define GODOT_COLLISION_SOLVER_2D_H
-#include "shape_2d_sw.h"
+#include "godot_shape_2d.h"
-class CollisionSolver2DSW {
+class GodotCollisionSolver2D {
public:
typedef void (*CallbackResult)(const Vector2 &p_point_A, const Vector2 &p_point_B, void *p_userdata);
private:
- static bool solve_static_world_boundary(const Shape2DSW *p_shape_A, const Transform2D &p_transform_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result);
- static bool concave_callback(void *p_userdata, Shape2DSW *p_convex);
- static bool solve_concave(const Shape2DSW *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, Vector2 *r_sep_axis = nullptr, real_t p_margin_A = 0, real_t p_margin_B = 0);
- static bool solve_separation_ray(const Shape2DSW *p_shape_A, const Vector2 &p_motion_A, const Transform2D &p_transform_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, Vector2 *r_sep_axis = nullptr, real_t p_margin = 0);
+ static bool solve_static_world_boundary(const GodotShape2D *p_shape_A, const Transform2D &p_transform_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result);
+ static bool concave_callback(void *p_userdata, GodotShape2D *p_convex);
+ static bool solve_concave(const GodotShape2D *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, Vector2 *r_sep_axis = nullptr, real_t p_margin_A = 0, real_t p_margin_B = 0);
+ static bool solve_separation_ray(const GodotShape2D *p_shape_A, const Vector2 &p_motion_A, const Transform2D &p_transform_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, Vector2 *r_sep_axis = nullptr, real_t p_margin = 0);
public:
- static bool solve(const Shape2DSW *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CallbackResult p_result_callback, void *p_userdata, Vector2 *r_sep_axis = nullptr, real_t p_margin_A = 0, real_t p_margin_B = 0);
+ static bool solve(const GodotShape2D *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CallbackResult p_result_callback, void *p_userdata, Vector2 *r_sep_axis = nullptr, real_t p_margin_A = 0, real_t p_margin_B = 0);
};
-#endif // COLLISION_SOLVER_2D_SW_H
+#endif // GODOT_COLLISION_SOLVER_2D_H
diff --git a/servers/physics_2d/collision_solver_2d_sat.cpp b/servers/physics_2d/godot_collision_solver_2d_sat.cpp
index 2e67cc6520..63053e8259 100644
--- a/servers/physics_2d/collision_solver_2d_sat.cpp
+++ b/servers/physics_2d/godot_collision_solver_2d_sat.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_solver_2d_sat.cpp */
+/* godot_collision_solver_2d_sat.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,12 +28,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "collision_solver_2d_sat.h"
+#include "godot_collision_solver_2d_sat.h"
#include "core/math/geometry_2d.h"
struct _CollectorCallback2D {
- CollisionSolver2DSW::CallbackResult callback;
+ GodotCollisionSolver2D::CallbackResult callback;
void *userdata = nullptr;
bool swap = false;
bool collided = false;
@@ -384,14 +384,14 @@ public:
(castB && !separator.test_axis(((m_a) - ((m_b) + p_motion_b)).normalized())) || \
(castA && castB && !separator.test_axis(((m_a) + p_motion_a - ((m_b) + p_motion_b)).normalized())))
-typedef void (*CollisionFunc)(const Shape2DSW *, const Transform2D &, const Shape2DSW *, const Transform2D &, _CollectorCallback2D *p_collector, const Vector2 &, const Vector2 &, real_t, real_t);
+typedef void (*CollisionFunc)(const GodotShape2D *, const Transform2D &, const GodotShape2D *, const Transform2D &, _CollectorCallback2D *p_collector, const Vector2 &, const Vector2 &, real_t, real_t);
template <bool castA, bool castB, bool withMargin>
-static void _collision_segment_segment(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const SegmentShape2DSW *segment_A = static_cast<const SegmentShape2DSW *>(p_a);
- const SegmentShape2DSW *segment_B = static_cast<const SegmentShape2DSW *>(p_b);
+static void _collision_segment_segment(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotSegmentShape2D *segment_A = static_cast<const GodotSegmentShape2D *>(p_a);
+ const GodotSegmentShape2D *segment_B = static_cast<const GodotSegmentShape2D *>(p_b);
- SeparatorAxisTest2D<SegmentShape2DSW, SegmentShape2DSW, castA, castB, withMargin> separator(segment_A, p_transform_a, segment_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotSegmentShape2D, GodotSegmentShape2D, castA, castB, withMargin> separator(segment_A, p_transform_a, segment_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -430,11 +430,11 @@ static void _collision_segment_segment(const Shape2DSW *p_a, const Transform2D &
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_segment_circle(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const SegmentShape2DSW *segment_A = static_cast<const SegmentShape2DSW *>(p_a);
- const CircleShape2DSW *circle_B = static_cast<const CircleShape2DSW *>(p_b);
+static void _collision_segment_circle(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotSegmentShape2D *segment_A = static_cast<const GodotSegmentShape2D *>(p_a);
+ const GodotCircleShape2D *circle_B = static_cast<const GodotCircleShape2D *>(p_b);
- SeparatorAxisTest2D<SegmentShape2DSW, CircleShape2DSW, castA, castB, withMargin> separator(segment_A, p_transform_a, circle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotSegmentShape2D, GodotCircleShape2D, castA, castB, withMargin> separator(segment_A, p_transform_a, circle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -463,11 +463,11 @@ static void _collision_segment_circle(const Shape2DSW *p_a, const Transform2D &p
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_segment_rectangle(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const SegmentShape2DSW *segment_A = static_cast<const SegmentShape2DSW *>(p_a);
- const RectangleShape2DSW *rectangle_B = static_cast<const RectangleShape2DSW *>(p_b);
+static void _collision_segment_rectangle(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotSegmentShape2D *segment_A = static_cast<const GodotSegmentShape2D *>(p_a);
+ const GodotRectangleShape2D *rectangle_B = static_cast<const GodotRectangleShape2D *>(p_b);
- SeparatorAxisTest2D<SegmentShape2DSW, RectangleShape2DSW, castA, castB, withMargin> separator(segment_A, p_transform_a, rectangle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotSegmentShape2D, GodotRectangleShape2D, castA, castB, withMargin> separator(segment_A, p_transform_a, rectangle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -534,11 +534,11 @@ static void _collision_segment_rectangle(const Shape2DSW *p_a, const Transform2D
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_segment_capsule(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const SegmentShape2DSW *segment_A = static_cast<const SegmentShape2DSW *>(p_a);
- const CapsuleShape2DSW *capsule_B = static_cast<const CapsuleShape2DSW *>(p_b);
+static void _collision_segment_capsule(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotSegmentShape2D *segment_A = static_cast<const GodotSegmentShape2D *>(p_a);
+ const GodotCapsuleShape2D *capsule_B = static_cast<const GodotCapsuleShape2D *>(p_b);
- SeparatorAxisTest2D<SegmentShape2DSW, CapsuleShape2DSW, castA, castB, withMargin> separator(segment_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotSegmentShape2D, GodotCapsuleShape2D, castA, castB, withMargin> separator(segment_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -575,11 +575,11 @@ static void _collision_segment_capsule(const Shape2DSW *p_a, const Transform2D &
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_segment_convex_polygon(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const SegmentShape2DSW *segment_A = static_cast<const SegmentShape2DSW *>(p_a);
- const ConvexPolygonShape2DSW *convex_B = static_cast<const ConvexPolygonShape2DSW *>(p_b);
+static void _collision_segment_convex_polygon(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotSegmentShape2D *segment_A = static_cast<const GodotSegmentShape2D *>(p_a);
+ const GodotConvexPolygonShape2D *convex_B = static_cast<const GodotConvexPolygonShape2D *>(p_b);
- SeparatorAxisTest2D<SegmentShape2DSW, ConvexPolygonShape2DSW, castA, castB, withMargin> separator(segment_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotSegmentShape2D, GodotConvexPolygonShape2D, castA, castB, withMargin> separator(segment_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -614,11 +614,11 @@ static void _collision_segment_convex_polygon(const Shape2DSW *p_a, const Transf
/////////
template <bool castA, bool castB, bool withMargin>
-static void _collision_circle_circle(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const CircleShape2DSW *circle_A = static_cast<const CircleShape2DSW *>(p_a);
- const CircleShape2DSW *circle_B = static_cast<const CircleShape2DSW *>(p_b);
+static void _collision_circle_circle(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotCircleShape2D *circle_A = static_cast<const GodotCircleShape2D *>(p_a);
+ const GodotCircleShape2D *circle_B = static_cast<const GodotCircleShape2D *>(p_b);
- SeparatorAxisTest2D<CircleShape2DSW, CircleShape2DSW, castA, castB, withMargin> separator(circle_A, p_transform_a, circle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotCircleShape2D, GodotCircleShape2D, castA, castB, withMargin> separator(circle_A, p_transform_a, circle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -636,11 +636,11 @@ static void _collision_circle_circle(const Shape2DSW *p_a, const Transform2D &p_
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_circle_rectangle(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const CircleShape2DSW *circle_A = static_cast<const CircleShape2DSW *>(p_a);
- const RectangleShape2DSW *rectangle_B = static_cast<const RectangleShape2DSW *>(p_b);
+static void _collision_circle_rectangle(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotCircleShape2D *circle_A = static_cast<const GodotCircleShape2D *>(p_a);
+ const GodotRectangleShape2D *rectangle_B = static_cast<const GodotRectangleShape2D *>(p_b);
- SeparatorAxisTest2D<CircleShape2DSW, RectangleShape2DSW, castA, castB, withMargin> separator(circle_A, p_transform_a, rectangle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotCircleShape2D, GodotRectangleShape2D, castA, castB, withMargin> separator(circle_A, p_transform_a, rectangle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -694,11 +694,11 @@ static void _collision_circle_rectangle(const Shape2DSW *p_a, const Transform2D
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_circle_capsule(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const CircleShape2DSW *circle_A = static_cast<const CircleShape2DSW *>(p_a);
- const CapsuleShape2DSW *capsule_B = static_cast<const CapsuleShape2DSW *>(p_b);
+static void _collision_circle_capsule(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotCircleShape2D *circle_A = static_cast<const GodotCircleShape2D *>(p_a);
+ const GodotCapsuleShape2D *capsule_B = static_cast<const GodotCapsuleShape2D *>(p_b);
- SeparatorAxisTest2D<CircleShape2DSW, CapsuleShape2DSW, castA, castB, withMargin> separator(circle_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotCircleShape2D, GodotCapsuleShape2D, castA, castB, withMargin> separator(circle_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -727,11 +727,11 @@ static void _collision_circle_capsule(const Shape2DSW *p_a, const Transform2D &p
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_circle_convex_polygon(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const CircleShape2DSW *circle_A = static_cast<const CircleShape2DSW *>(p_a);
- const ConvexPolygonShape2DSW *convex_B = static_cast<const ConvexPolygonShape2DSW *>(p_b);
+static void _collision_circle_convex_polygon(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotCircleShape2D *circle_A = static_cast<const GodotCircleShape2D *>(p_a);
+ const GodotConvexPolygonShape2D *convex_B = static_cast<const GodotConvexPolygonShape2D *>(p_b);
- SeparatorAxisTest2D<CircleShape2DSW, ConvexPolygonShape2DSW, castA, castB, withMargin> separator(circle_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotCircleShape2D, GodotConvexPolygonShape2D, castA, castB, withMargin> separator(circle_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -758,11 +758,11 @@ static void _collision_circle_convex_polygon(const Shape2DSW *p_a, const Transfo
/////////
template <bool castA, bool castB, bool withMargin>
-static void _collision_rectangle_rectangle(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const RectangleShape2DSW *rectangle_A = static_cast<const RectangleShape2DSW *>(p_a);
- const RectangleShape2DSW *rectangle_B = static_cast<const RectangleShape2DSW *>(p_b);
+static void _collision_rectangle_rectangle(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotRectangleShape2D *rectangle_A = static_cast<const GodotRectangleShape2D *>(p_a);
+ const GodotRectangleShape2D *rectangle_B = static_cast<const GodotRectangleShape2D *>(p_b);
- SeparatorAxisTest2D<RectangleShape2DSW, RectangleShape2DSW, castA, castB, withMargin> separator(rectangle_A, p_transform_a, rectangle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotRectangleShape2D, GodotRectangleShape2D, castA, castB, withMargin> separator(rectangle_A, p_transform_a, rectangle_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -832,11 +832,11 @@ static void _collision_rectangle_rectangle(const Shape2DSW *p_a, const Transform
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_rectangle_capsule(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const RectangleShape2DSW *rectangle_A = static_cast<const RectangleShape2DSW *>(p_a);
- const CapsuleShape2DSW *capsule_B = static_cast<const CapsuleShape2DSW *>(p_b);
+static void _collision_rectangle_capsule(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotRectangleShape2D *rectangle_A = static_cast<const GodotRectangleShape2D *>(p_a);
+ const GodotCapsuleShape2D *capsule_B = static_cast<const GodotCapsuleShape2D *>(p_b);
- SeparatorAxisTest2D<RectangleShape2DSW, CapsuleShape2DSW, castA, castB, withMargin> separator(rectangle_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotRectangleShape2D, GodotCapsuleShape2D, castA, castB, withMargin> separator(rectangle_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -910,11 +910,11 @@ static void _collision_rectangle_capsule(const Shape2DSW *p_a, const Transform2D
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_rectangle_convex_polygon(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const RectangleShape2DSW *rectangle_A = static_cast<const RectangleShape2DSW *>(p_a);
- const ConvexPolygonShape2DSW *convex_B = static_cast<const ConvexPolygonShape2DSW *>(p_b);
+static void _collision_rectangle_convex_polygon(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotRectangleShape2D *rectangle_A = static_cast<const GodotRectangleShape2D *>(p_a);
+ const GodotConvexPolygonShape2D *convex_B = static_cast<const GodotConvexPolygonShape2D *>(p_b);
- SeparatorAxisTest2D<RectangleShape2DSW, ConvexPolygonShape2DSW, castA, castB, withMargin> separator(rectangle_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotRectangleShape2D, GodotConvexPolygonShape2D, castA, castB, withMargin> separator(rectangle_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -972,11 +972,11 @@ static void _collision_rectangle_convex_polygon(const Shape2DSW *p_a, const Tran
/////////
template <bool castA, bool castB, bool withMargin>
-static void _collision_capsule_capsule(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const CapsuleShape2DSW *capsule_A = static_cast<const CapsuleShape2DSW *>(p_a);
- const CapsuleShape2DSW *capsule_B = static_cast<const CapsuleShape2DSW *>(p_b);
+static void _collision_capsule_capsule(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotCapsuleShape2D *capsule_A = static_cast<const GodotCapsuleShape2D *>(p_a);
+ const GodotCapsuleShape2D *capsule_B = static_cast<const GodotCapsuleShape2D *>(p_b);
- SeparatorAxisTest2D<CapsuleShape2DSW, CapsuleShape2DSW, castA, castB, withMargin> separator(capsule_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotCapsuleShape2D, GodotCapsuleShape2D, castA, castB, withMargin> separator(capsule_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -1020,11 +1020,11 @@ static void _collision_capsule_capsule(const Shape2DSW *p_a, const Transform2D &
}
template <bool castA, bool castB, bool withMargin>
-static void _collision_capsule_convex_polygon(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const CapsuleShape2DSW *capsule_A = static_cast<const CapsuleShape2DSW *>(p_a);
- const ConvexPolygonShape2DSW *convex_B = static_cast<const ConvexPolygonShape2DSW *>(p_b);
+static void _collision_capsule_convex_polygon(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotCapsuleShape2D *capsule_A = static_cast<const GodotCapsuleShape2D *>(p_a);
+ const GodotConvexPolygonShape2D *convex_B = static_cast<const GodotConvexPolygonShape2D *>(p_b);
- SeparatorAxisTest2D<CapsuleShape2DSW, ConvexPolygonShape2DSW, castA, castB, withMargin> separator(capsule_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotCapsuleShape2D, GodotConvexPolygonShape2D, castA, castB, withMargin> separator(capsule_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -1066,11 +1066,11 @@ static void _collision_capsule_convex_polygon(const Shape2DSW *p_a, const Transf
/////////
template <bool castA, bool castB, bool withMargin>
-static void _collision_convex_polygon_convex_polygon(const Shape2DSW *p_a, const Transform2D &p_transform_a, const Shape2DSW *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
- const ConvexPolygonShape2DSW *convex_A = static_cast<const ConvexPolygonShape2DSW *>(p_a);
- const ConvexPolygonShape2DSW *convex_B = static_cast<const ConvexPolygonShape2DSW *>(p_b);
+static void _collision_convex_polygon_convex_polygon(const GodotShape2D *p_a, const Transform2D &p_transform_a, const GodotShape2D *p_b, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_a, const Vector2 &p_motion_b, real_t p_margin_A, real_t p_margin_B) {
+ const GodotConvexPolygonShape2D *convex_A = static_cast<const GodotConvexPolygonShape2D *>(p_a);
+ const GodotConvexPolygonShape2D *convex_B = static_cast<const GodotConvexPolygonShape2D *>(p_b);
- SeparatorAxisTest2D<ConvexPolygonShape2DSW, ConvexPolygonShape2DSW, castA, castB, withMargin> separator(convex_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
+ SeparatorAxisTest2D<GodotConvexPolygonShape2D, GodotConvexPolygonShape2D, castA, castB, withMargin> separator(convex_A, p_transform_a, convex_B, p_transform_b, p_collector, p_motion_a, p_motion_b, p_margin_A, p_margin_B);
if (!separator.test_previous_axis()) {
return;
@@ -1107,7 +1107,7 @@ static void _collision_convex_polygon_convex_polygon(const Shape2DSW *p_a, const
////////
-bool sat_2d_calculate_penetration(const Shape2DSW *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CollisionSolver2DSW::CallbackResult p_result_callback, void *p_userdata, bool p_swap, Vector2 *sep_axis, real_t p_margin_A, real_t p_margin_B) {
+bool sat_2d_calculate_penetration(const GodotShape2D *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, GodotCollisionSolver2D::CallbackResult p_result_callback, void *p_userdata, bool p_swap, Vector2 *sep_axis, real_t p_margin_A, real_t p_margin_B) {
PhysicsServer2D::ShapeType type_A = p_shape_A->get_type();
ERR_FAIL_COND_V(type_A == PhysicsServer2D::SHAPE_WORLD_BOUNDARY, false);
@@ -1359,8 +1359,8 @@ bool sat_2d_calculate_penetration(const Shape2DSW *p_shape_A, const Transform2D
callback.collided = false;
callback.sep_axis = sep_axis;
- const Shape2DSW *A = p_shape_A;
- const Shape2DSW *B = p_shape_B;
+ const GodotShape2D *A = p_shape_A;
+ const GodotShape2D *B = p_shape_B;
const Transform2D *transform_A = &p_transform_A;
const Transform2D *transform_B = &p_transform_B;
const Vector2 *motion_A = &p_motion_A;
diff --git a/servers/physics_2d/collision_solver_2d_sat.h b/servers/physics_2d/godot_collision_solver_2d_sat.h
index 49cc5176f9..1517b90a19 100644
--- a/servers/physics_2d/collision_solver_2d_sat.h
+++ b/servers/physics_2d/godot_collision_solver_2d_sat.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_solver_2d_sat.h */
+/* godot_collision_solver_2d_sat.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,11 +28,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef COLLISION_SOLVER_2D_SAT_H
-#define COLLISION_SOLVER_2D_SAT_H
+#ifndef GODOT_COLLISION_SOLVER_2D_SAT_H
+#define GODOT_COLLISION_SOLVER_2D_SAT_H
-#include "collision_solver_2d_sw.h"
+#include "godot_collision_solver_2d.h"
-bool sat_2d_calculate_penetration(const Shape2DSW *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const Shape2DSW *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, CollisionSolver2DSW::CallbackResult p_result_callback, void *p_userdata, bool p_swap = false, Vector2 *sep_axis = nullptr, real_t p_margin_A = 0, real_t p_margin_B = 0);
+bool sat_2d_calculate_penetration(const GodotShape2D *p_shape_A, const Transform2D &p_transform_A, const Vector2 &p_motion_A, const GodotShape2D *p_shape_B, const Transform2D &p_transform_B, const Vector2 &p_motion_B, GodotCollisionSolver2D::CallbackResult p_result_callback, void *p_userdata, bool p_swap = false, Vector2 *sep_axis = nullptr, real_t p_margin_A = 0, real_t p_margin_B = 0);
-#endif // COLLISION_SOLVER_2D_SAT_H
+#endif // GODOT_COLLISION_SOLVER_2D_SAT_H
diff --git a/servers/physics_2d/constraint_2d_sw.h b/servers/physics_2d/godot_constraint_2d.h
index df300d666d..84f975e583 100644
--- a/servers/physics_2d/constraint_2d_sw.h
+++ b/servers/physics_2d/godot_constraint_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* constraint_2d_sw.h */
+/* godot_constraint_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,13 +28,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef CONSTRAINT_2D_SW_H
-#define CONSTRAINT_2D_SW_H
+#ifndef GODOT_CONSTRAINT_2D_H
+#define GODOT_CONSTRAINT_2D_H
-#include "body_2d_sw.h"
+#include "godot_body_2d.h"
-class Constraint2DSW {
- Body2DSW **_body_ptr;
+class GodotConstraint2D {
+ GodotBody2D **_body_ptr;
int _body_count;
uint64_t island_step = 0;
bool disabled_collisions_between_bodies = true;
@@ -42,7 +42,7 @@ class Constraint2DSW {
RID self;
protected:
- Constraint2DSW(Body2DSW **p_body_ptr = nullptr, int p_body_count = 0) {
+ GodotConstraint2D(GodotBody2D **p_body_ptr = nullptr, int p_body_count = 0) {
_body_ptr = p_body_ptr;
_body_count = p_body_count;
}
@@ -54,7 +54,7 @@ public:
_FORCE_INLINE_ uint64_t get_island_step() const { return island_step; }
_FORCE_INLINE_ void set_island_step(uint64_t p_step) { island_step = p_step; }
- _FORCE_INLINE_ Body2DSW **get_body_ptr() const { return _body_ptr; }
+ _FORCE_INLINE_ GodotBody2D **get_body_ptr() const { return _body_ptr; }
_FORCE_INLINE_ int get_body_count() const { return _body_count; }
_FORCE_INLINE_ void disable_collisions_between_bodies(const bool p_disabled) { disabled_collisions_between_bodies = p_disabled; }
@@ -64,7 +64,7 @@ public:
virtual bool pre_solve(real_t p_step) = 0;
virtual void solve(real_t p_step) = 0;
- virtual ~Constraint2DSW() {}
+ virtual ~GodotConstraint2D() {}
};
-#endif // CONSTRAINT_2D_SW_H
+#endif // GODOT_CONSTRAINT_2D_H
diff --git a/servers/physics_2d/joints_2d_sw.cpp b/servers/physics_2d/godot_joints_2d.cpp
index b46397b8e6..7c08c2f4b4 100644
--- a/servers/physics_2d/joints_2d_sw.cpp
+++ b/servers/physics_2d/godot_joints_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* joints_2d_sw.cpp */
+/* godot_joints_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,9 +28,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "joints_2d_sw.h"
+#include "godot_joints_2d.h"
-#include "space_2d_sw.h"
+#include "godot_space_2d.h"
//based on chipmunk joint constraints
@@ -55,7 +55,7 @@
* SOFTWARE.
*/
-void Joint2DSW::copy_settings_from(Joint2DSW *p_joint) {
+void GodotJoint2D::copy_settings_from(GodotJoint2D *p_joint) {
set_self(p_joint->get_self());
set_max_force(p_joint->get_max_force());
set_bias(p_joint->get_bias());
@@ -63,7 +63,7 @@ void Joint2DSW::copy_settings_from(Joint2DSW *p_joint) {
disable_collisions_between_bodies(p_joint->is_disabled_collisions_between_bodies());
}
-static inline real_t k_scalar(Body2DSW *a, Body2DSW *b, const Vector2 &rA, const Vector2 &rB, const Vector2 &n) {
+static inline real_t k_scalar(GodotBody2D *a, GodotBody2D *b, const Vector2 &rA, const Vector2 &rB, const Vector2 &n) {
real_t value = 0.0;
{
@@ -82,7 +82,7 @@ static inline real_t k_scalar(Body2DSW *a, Body2DSW *b, const Vector2 &rA, const
}
static inline Vector2
-relative_velocity(Body2DSW *a, Body2DSW *b, Vector2 rA, Vector2 rB) {
+relative_velocity(GodotBody2D *a, GodotBody2D *b, Vector2 rA, Vector2 rB) {
Vector2 sum = a->get_linear_velocity() - (rA - a->get_center_of_mass()).orthogonal() * a->get_angular_velocity();
if (b) {
return (b->get_linear_velocity() - (rB - b->get_center_of_mass()).orthogonal() * b->get_angular_velocity()) - sum;
@@ -92,11 +92,11 @@ relative_velocity(Body2DSW *a, Body2DSW *b, Vector2 rA, Vector2 rB) {
}
static inline real_t
-normal_relative_velocity(Body2DSW *a, Body2DSW *b, Vector2 rA, Vector2 rB, Vector2 n) {
+normal_relative_velocity(GodotBody2D *a, GodotBody2D *b, Vector2 rA, Vector2 rB, Vector2 n) {
return relative_velocity(a, b, rA, rB).dot(n);
}
-bool PinJoint2DSW::setup(real_t p_step) {
+bool GodotPinJoint2D::setup(real_t p_step) {
dynamic_A = (A->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC);
dynamic_B = (B->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC);
@@ -104,7 +104,7 @@ bool PinJoint2DSW::setup(real_t p_step) {
return false;
}
- Space2DSW *space = A->get_space();
+ GodotSpace2D *space = A->get_space();
ERR_FAIL_COND_V(!space, false);
rA = A->get_transform().basis_xform(anchor_A);
@@ -158,7 +158,7 @@ inline Vector2 custom_cross(const Vector2 &p_vec, real_t p_other) {
return Vector2(p_other * p_vec.y, -p_other * p_vec.x);
}
-bool PinJoint2DSW::pre_solve(real_t p_step) {
+bool GodotPinJoint2D::pre_solve(real_t p_step) {
// Apply accumulated impulse.
if (dynamic_A) {
A->apply_impulse(-P, rA);
@@ -170,7 +170,7 @@ bool PinJoint2DSW::pre_solve(real_t p_step) {
return true;
}
-void PinJoint2DSW::solve(real_t p_step) {
+void GodotPinJoint2D::solve(real_t p_step) {
// compute relative velocity
Vector2 vA = A->get_linear_velocity() - custom_cross(rA - A->get_center_of_mass(), A->get_angular_velocity());
@@ -193,21 +193,21 @@ void PinJoint2DSW::solve(real_t p_step) {
P += impulse;
}
-void PinJoint2DSW::set_param(PhysicsServer2D::PinJointParam p_param, real_t p_value) {
+void GodotPinJoint2D::set_param(PhysicsServer2D::PinJointParam p_param, real_t p_value) {
if (p_param == PhysicsServer2D::PIN_JOINT_SOFTNESS) {
softness = p_value;
}
}
-real_t PinJoint2DSW::get_param(PhysicsServer2D::PinJointParam p_param) const {
+real_t GodotPinJoint2D::get_param(PhysicsServer2D::PinJointParam p_param) const {
if (p_param == PhysicsServer2D::PIN_JOINT_SOFTNESS) {
return softness;
}
ERR_FAIL_V(0);
}
-PinJoint2DSW::PinJoint2DSW(const Vector2 &p_pos, Body2DSW *p_body_a, Body2DSW *p_body_b) :
- Joint2DSW(_arr, p_body_b ? 2 : 1) {
+GodotPinJoint2D::GodotPinJoint2D(const Vector2 &p_pos, GodotBody2D *p_body_a, GodotBody2D *p_body_b) :
+ GodotJoint2D(_arr, p_body_b ? 2 : 1) {
A = p_body_a;
B = p_body_b;
anchor_A = p_body_a->get_inv_transform().xform(p_pos);
@@ -224,7 +224,7 @@ PinJoint2DSW::PinJoint2DSW(const Vector2 &p_pos, Body2DSW *p_body_a, Body2DSW *p
//////////////////////////////////////////////
static inline void
-k_tensor(Body2DSW *a, Body2DSW *b, Vector2 r1, Vector2 r2, Vector2 *k1, Vector2 *k2) {
+k_tensor(GodotBody2D *a, GodotBody2D *b, Vector2 r1, Vector2 r2, Vector2 *k1, Vector2 *k2) {
// calculate mass matrix
// If I wasn't lazy and wrote a proper matrix class, this wouldn't be so gross...
real_t k11, k12, k21, k22;
@@ -273,7 +273,7 @@ mult_k(const Vector2 &vr, const Vector2 &k1, const Vector2 &k2) {
return Vector2(vr.dot(k1), vr.dot(k2));
}
-bool GrooveJoint2DSW::setup(real_t p_step) {
+bool GodotGrooveJoint2D::setup(real_t p_step) {
dynamic_A = (A->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC);
dynamic_B = (B->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC);
@@ -281,7 +281,7 @@ bool GrooveJoint2DSW::setup(real_t p_step) {
return false;
}
- Space2DSW *space = A->get_space();
+ GodotSpace2D *space = A->get_space();
ERR_FAIL_COND_V(!space, false);
// calculate endpoints in worldspace
@@ -329,7 +329,7 @@ bool GrooveJoint2DSW::setup(real_t p_step) {
return true;
}
-bool GrooveJoint2DSW::pre_solve(real_t p_step) {
+bool GodotGrooveJoint2D::pre_solve(real_t p_step) {
// Apply accumulated impulse.
if (dynamic_A) {
A->apply_impulse(-jn_acc, rA);
@@ -341,7 +341,7 @@ bool GrooveJoint2DSW::pre_solve(real_t p_step) {
return true;
}
-void GrooveJoint2DSW::solve(real_t p_step) {
+void GodotGrooveJoint2D::solve(real_t p_step) {
// compute impulse
Vector2 vr = relative_velocity(A, B, rA, rB);
@@ -361,8 +361,8 @@ void GrooveJoint2DSW::solve(real_t p_step) {
}
}
-GrooveJoint2DSW::GrooveJoint2DSW(const Vector2 &p_a_groove1, const Vector2 &p_a_groove2, const Vector2 &p_b_anchor, Body2DSW *p_body_a, Body2DSW *p_body_b) :
- Joint2DSW(_arr, 2) {
+GodotGrooveJoint2D::GodotGrooveJoint2D(const Vector2 &p_a_groove1, const Vector2 &p_a_groove2, const Vector2 &p_b_anchor, GodotBody2D *p_body_a, GodotBody2D *p_body_b) :
+ GodotJoint2D(_arr, 2) {
A = p_body_a;
B = p_body_b;
@@ -379,7 +379,7 @@ GrooveJoint2DSW::GrooveJoint2DSW(const Vector2 &p_a_groove1, const Vector2 &p_a_
//////////////////////////////////////////////
//////////////////////////////////////////////
-bool DampedSpringJoint2DSW::setup(real_t p_step) {
+bool GodotDampedSpringJoint2D::setup(real_t p_step) {
dynamic_A = (A->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC);
dynamic_B = (B->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC);
@@ -412,7 +412,7 @@ bool DampedSpringJoint2DSW::setup(real_t p_step) {
return true;
}
-bool DampedSpringJoint2DSW::pre_solve(real_t p_step) {
+bool GodotDampedSpringJoint2D::pre_solve(real_t p_step) {
// Apply spring force.
if (dynamic_A) {
A->apply_impulse(-j, rA);
@@ -424,7 +424,7 @@ bool DampedSpringJoint2DSW::pre_solve(real_t p_step) {
return true;
}
-void DampedSpringJoint2DSW::solve(real_t p_step) {
+void GodotDampedSpringJoint2D::solve(real_t p_step) {
// compute relative velocity
real_t vrn = normal_relative_velocity(A, B, rA, rB, n) - target_vrn;
@@ -442,7 +442,7 @@ void DampedSpringJoint2DSW::solve(real_t p_step) {
}
}
-void DampedSpringJoint2DSW::set_param(PhysicsServer2D::DampedSpringParam p_param, real_t p_value) {
+void GodotDampedSpringJoint2D::set_param(PhysicsServer2D::DampedSpringParam p_param, real_t p_value) {
switch (p_param) {
case PhysicsServer2D::DAMPED_SPRING_REST_LENGTH: {
rest_length = p_value;
@@ -456,7 +456,7 @@ void DampedSpringJoint2DSW::set_param(PhysicsServer2D::DampedSpringParam p_param
}
}
-real_t DampedSpringJoint2DSW::get_param(PhysicsServer2D::DampedSpringParam p_param) const {
+real_t GodotDampedSpringJoint2D::get_param(PhysicsServer2D::DampedSpringParam p_param) const {
switch (p_param) {
case PhysicsServer2D::DAMPED_SPRING_REST_LENGTH: {
return rest_length;
@@ -472,8 +472,8 @@ real_t DampedSpringJoint2DSW::get_param(PhysicsServer2D::DampedSpringParam p_par
ERR_FAIL_V(0);
}
-DampedSpringJoint2DSW::DampedSpringJoint2DSW(const Vector2 &p_anchor_a, const Vector2 &p_anchor_b, Body2DSW *p_body_a, Body2DSW *p_body_b) :
- Joint2DSW(_arr, 2) {
+GodotDampedSpringJoint2D::GodotDampedSpringJoint2D(const Vector2 &p_anchor_a, const Vector2 &p_anchor_b, GodotBody2D *p_body_a, GodotBody2D *p_body_b) :
+ GodotJoint2D(_arr, 2) {
A = p_body_a;
B = p_body_b;
anchor_A = A->get_inv_transform().xform(p_anchor_a);
diff --git a/servers/physics_2d/joints_2d_sw.h b/servers/physics_2d/godot_joints_2d.h
index e2a7c0c91e..4c97190d01 100644
--- a/servers/physics_2d/joints_2d_sw.h
+++ b/servers/physics_2d/godot_joints_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* joints_2d_sw.h */
+/* godot_joints_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,13 +28,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef JOINTS_2D_SW_H
-#define JOINTS_2D_SW_H
+#ifndef GODOT_JOINTS_2D_H
+#define GODOT_JOINTS_2D_H
-#include "body_2d_sw.h"
-#include "constraint_2d_sw.h"
+#include "godot_body_2d.h"
+#include "godot_constraint_2d.h"
-class Joint2DSW : public Constraint2DSW {
+class GodotJoint2D : public GodotConstraint2D {
real_t bias = 0;
real_t max_bias = 3.40282e+38;
real_t max_force = 3.40282e+38;
@@ -57,15 +57,15 @@ public:
virtual bool pre_solve(real_t p_step) override { return false; }
virtual void solve(real_t p_step) override {}
- void copy_settings_from(Joint2DSW *p_joint);
+ void copy_settings_from(GodotJoint2D *p_joint);
virtual PhysicsServer2D::JointType get_type() const { return PhysicsServer2D::JOINT_TYPE_MAX; }
- Joint2DSW(Body2DSW **p_body_ptr = nullptr, int p_body_count = 0) :
- Constraint2DSW(p_body_ptr, p_body_count) {}
+ GodotJoint2D(GodotBody2D **p_body_ptr = nullptr, int p_body_count = 0) :
+ GodotConstraint2D(p_body_ptr, p_body_count) {}
- virtual ~Joint2DSW() {
+ virtual ~GodotJoint2D() {
for (int i = 0; i < get_body_count(); i++) {
- Body2DSW *body = get_body_ptr()[i];
+ GodotBody2D *body = get_body_ptr()[i];
if (body) {
body->remove_constraint(this, i);
}
@@ -73,14 +73,14 @@ public:
};
};
-class PinJoint2DSW : public Joint2DSW {
+class GodotPinJoint2D : public GodotJoint2D {
union {
struct {
- Body2DSW *A;
- Body2DSW *B;
+ GodotBody2D *A;
+ GodotBody2D *B;
};
- Body2DSW *_arr[2] = { nullptr, nullptr };
+ GodotBody2D *_arr[2] = { nullptr, nullptr };
};
Transform2D M;
@@ -101,17 +101,17 @@ public:
void set_param(PhysicsServer2D::PinJointParam p_param, real_t p_value);
real_t get_param(PhysicsServer2D::PinJointParam p_param) const;
- PinJoint2DSW(const Vector2 &p_pos, Body2DSW *p_body_a, Body2DSW *p_body_b = nullptr);
+ GodotPinJoint2D(const Vector2 &p_pos, GodotBody2D *p_body_a, GodotBody2D *p_body_b = nullptr);
};
-class GrooveJoint2DSW : public Joint2DSW {
+class GodotGrooveJoint2D : public GodotJoint2D {
union {
struct {
- Body2DSW *A;
- Body2DSW *B;
+ GodotBody2D *A;
+ GodotBody2D *B;
};
- Body2DSW *_arr[2] = { nullptr, nullptr };
+ GodotBody2D *_arr[2] = { nullptr, nullptr };
};
Vector2 A_groove_1;
@@ -135,17 +135,17 @@ public:
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- GrooveJoint2DSW(const Vector2 &p_a_groove1, const Vector2 &p_a_groove2, const Vector2 &p_b_anchor, Body2DSW *p_body_a, Body2DSW *p_body_b);
+ GodotGrooveJoint2D(const Vector2 &p_a_groove1, const Vector2 &p_a_groove2, const Vector2 &p_b_anchor, GodotBody2D *p_body_a, GodotBody2D *p_body_b);
};
-class DampedSpringJoint2DSW : public Joint2DSW {
+class GodotDampedSpringJoint2D : public GodotJoint2D {
union {
struct {
- Body2DSW *A;
- Body2DSW *B;
+ GodotBody2D *A;
+ GodotBody2D *B;
};
- Body2DSW *_arr[2] = { nullptr, nullptr };
+ GodotBody2D *_arr[2] = { nullptr, nullptr };
};
Vector2 anchor_A;
@@ -172,7 +172,7 @@ public:
void set_param(PhysicsServer2D::DampedSpringParam p_param, real_t p_value);
real_t get_param(PhysicsServer2D::DampedSpringParam p_param) const;
- DampedSpringJoint2DSW(const Vector2 &p_anchor_a, const Vector2 &p_anchor_b, Body2DSW *p_body_a, Body2DSW *p_body_b);
+ GodotDampedSpringJoint2D(const Vector2 &p_anchor_a, const Vector2 &p_anchor_b, GodotBody2D *p_body_a, GodotBody2D *p_body_b);
};
-#endif // JOINTS_2D_SW_H
+#endif // GODOT_JOINTS_2D_H
diff --git a/servers/physics_2d/godot_physics_server_2d.cpp b/servers/physics_2d/godot_physics_server_2d.cpp
new file mode 100644
index 0000000000..c86f87fc03
--- /dev/null
+++ b/servers/physics_2d/godot_physics_server_2d.cpp
@@ -0,0 +1,1350 @@
+/*************************************************************************/
+/* godot_physics_server_2d.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (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 "godot_physics_server_2d.h"
+
+#include "godot_body_direct_state_2d.h"
+#include "godot_broad_phase_2d_bvh.h"
+#include "godot_collision_solver_2d.h"
+
+#include "core/config/project_settings.h"
+#include "core/debugger/engine_debugger.h"
+#include "core/os/os.h"
+
+#define FLUSH_QUERY_CHECK(m_object) \
+ ERR_FAIL_COND_MSG(m_object->get_space() && flushing_queries, "Can't change this state while flushing queries. Use call_deferred() or set_deferred() to change monitoring state instead.");
+
+RID GodotPhysicsServer2D::_shape_create(ShapeType p_shape) {
+ GodotShape2D *shape = nullptr;
+ switch (p_shape) {
+ case SHAPE_WORLD_BOUNDARY: {
+ shape = memnew(GodotWorldBoundaryShape2D);
+ } break;
+ case SHAPE_SEPARATION_RAY: {
+ shape = memnew(GodotSeparationRayShape2D);
+ } break;
+ case SHAPE_SEGMENT: {
+ shape = memnew(GodotSegmentShape2D);
+ } break;
+ case SHAPE_CIRCLE: {
+ shape = memnew(GodotCircleShape2D);
+ } break;
+ case SHAPE_RECTANGLE: {
+ shape = memnew(GodotRectangleShape2D);
+ } break;
+ case SHAPE_CAPSULE: {
+ shape = memnew(GodotCapsuleShape2D);
+ } break;
+ case SHAPE_CONVEX_POLYGON: {
+ shape = memnew(GodotConvexPolygonShape2D);
+ } break;
+ case SHAPE_CONCAVE_POLYGON: {
+ shape = memnew(GodotConcavePolygonShape2D);
+ } break;
+ case SHAPE_CUSTOM: {
+ ERR_FAIL_V(RID());
+
+ } break;
+ }
+
+ RID id = shape_owner.make_rid(shape);
+ shape->set_self(id);
+
+ return id;
+}
+
+RID GodotPhysicsServer2D::world_boundary_shape_create() {
+ return _shape_create(SHAPE_WORLD_BOUNDARY);
+}
+
+RID GodotPhysicsServer2D::separation_ray_shape_create() {
+ return _shape_create(SHAPE_SEPARATION_RAY);
+}
+
+RID GodotPhysicsServer2D::segment_shape_create() {
+ return _shape_create(SHAPE_SEGMENT);
+}
+
+RID GodotPhysicsServer2D::circle_shape_create() {
+ return _shape_create(SHAPE_CIRCLE);
+}
+
+RID GodotPhysicsServer2D::rectangle_shape_create() {
+ return _shape_create(SHAPE_RECTANGLE);
+}
+
+RID GodotPhysicsServer2D::capsule_shape_create() {
+ return _shape_create(SHAPE_CAPSULE);
+}
+
+RID GodotPhysicsServer2D::convex_polygon_shape_create() {
+ return _shape_create(SHAPE_CONVEX_POLYGON);
+}
+
+RID GodotPhysicsServer2D::concave_polygon_shape_create() {
+ return _shape_create(SHAPE_CONCAVE_POLYGON);
+}
+
+void GodotPhysicsServer2D::shape_set_data(RID p_shape, const Variant &p_data) {
+ GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+ shape->set_data(p_data);
+};
+
+void GodotPhysicsServer2D::shape_set_custom_solver_bias(RID p_shape, real_t p_bias) {
+ GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+ shape->set_custom_bias(p_bias);
+}
+
+PhysicsServer2D::ShapeType GodotPhysicsServer2D::shape_get_type(RID p_shape) const {
+ const GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND_V(!shape, SHAPE_CUSTOM);
+ return shape->get_type();
+};
+
+Variant GodotPhysicsServer2D::shape_get_data(RID p_shape) const {
+ const GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND_V(!shape, Variant());
+ ERR_FAIL_COND_V(!shape->is_configured(), Variant());
+ return shape->get_data();
+};
+
+real_t GodotPhysicsServer2D::shape_get_custom_solver_bias(RID p_shape) const {
+ const GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND_V(!shape, 0);
+ return shape->get_custom_bias();
+}
+
+void GodotPhysicsServer2D::_shape_col_cbk(const Vector2 &p_point_A, const Vector2 &p_point_B, void *p_userdata) {
+ CollCbkData *cbk = (CollCbkData *)p_userdata;
+
+ if (cbk->max == 0) {
+ return;
+ }
+
+ Vector2 rel_dir = (p_point_A - p_point_B);
+ real_t rel_length2 = rel_dir.length_squared();
+ if (cbk->valid_dir != Vector2()) {
+ if (cbk->valid_depth < 10e20) {
+ if (rel_length2 > cbk->valid_depth * cbk->valid_depth ||
+ (rel_length2 > CMP_EPSILON && cbk->valid_dir.dot(rel_dir.normalized()) < CMP_EPSILON)) {
+ cbk->invalid_by_dir++;
+ return;
+ }
+ } else {
+ if (rel_length2 > 0 && cbk->valid_dir.dot(rel_dir.normalized()) < CMP_EPSILON) {
+ return;
+ }
+ }
+ }
+
+ if (cbk->amount == cbk->max) {
+ //find least deep
+ real_t min_depth = 1e20;
+ int min_depth_idx = 0;
+ for (int i = 0; i < cbk->amount; i++) {
+ real_t d = cbk->ptr[i * 2 + 0].distance_squared_to(cbk->ptr[i * 2 + 1]);
+ if (d < min_depth) {
+ min_depth = d;
+ min_depth_idx = i;
+ }
+ }
+
+ if (rel_length2 < min_depth) {
+ return;
+ }
+ cbk->ptr[min_depth_idx * 2 + 0] = p_point_A;
+ cbk->ptr[min_depth_idx * 2 + 1] = p_point_B;
+ cbk->passed++;
+
+ } else {
+ cbk->ptr[cbk->amount * 2 + 0] = p_point_A;
+ cbk->ptr[cbk->amount * 2 + 1] = p_point_B;
+ cbk->amount++;
+ cbk->passed++;
+ }
+}
+
+bool GodotPhysicsServer2D::shape_collide(RID p_shape_A, const Transform2D &p_xform_A, const Vector2 &p_motion_A, RID p_shape_B, const Transform2D &p_xform_B, const Vector2 &p_motion_B, Vector2 *r_results, int p_result_max, int &r_result_count) {
+ GodotShape2D *shape_A = shape_owner.get_or_null(p_shape_A);
+ ERR_FAIL_COND_V(!shape_A, false);
+ GodotShape2D *shape_B = shape_owner.get_or_null(p_shape_B);
+ ERR_FAIL_COND_V(!shape_B, false);
+
+ if (p_result_max == 0) {
+ return GodotCollisionSolver2D::solve(shape_A, p_xform_A, p_motion_A, shape_B, p_xform_B, p_motion_B, nullptr, nullptr);
+ }
+
+ CollCbkData cbk;
+ cbk.max = p_result_max;
+ cbk.amount = 0;
+ cbk.passed = 0;
+ cbk.ptr = r_results;
+
+ bool res = GodotCollisionSolver2D::solve(shape_A, p_xform_A, p_motion_A, shape_B, p_xform_B, p_motion_B, _shape_col_cbk, &cbk);
+ r_result_count = cbk.amount;
+ return res;
+}
+
+RID GodotPhysicsServer2D::space_create() {
+ GodotSpace2D *space = memnew(GodotSpace2D);
+ RID id = space_owner.make_rid(space);
+ space->set_self(id);
+ RID area_id = area_create();
+ GodotArea2D *area = area_owner.get_or_null(area_id);
+ ERR_FAIL_COND_V(!area, RID());
+ space->set_default_area(area);
+ area->set_space(space);
+ area->set_priority(-1);
+
+ return id;
+};
+
+void GodotPhysicsServer2D::space_set_active(RID p_space, bool p_active) {
+ GodotSpace2D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ if (p_active) {
+ active_spaces.insert(space);
+ } else {
+ active_spaces.erase(space);
+ }
+}
+
+bool GodotPhysicsServer2D::space_is_active(RID p_space) const {
+ const GodotSpace2D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, false);
+
+ return active_spaces.has(space);
+}
+
+void GodotPhysicsServer2D::space_set_param(RID p_space, SpaceParameter p_param, real_t p_value) {
+ GodotSpace2D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+
+ space->set_param(p_param, p_value);
+}
+
+real_t GodotPhysicsServer2D::space_get_param(RID p_space, SpaceParameter p_param) const {
+ const GodotSpace2D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, 0);
+ return space->get_param(p_param);
+}
+
+void GodotPhysicsServer2D::space_set_debug_contacts(RID p_space, int p_max_contacts) {
+ GodotSpace2D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ space->set_debug_contacts(p_max_contacts);
+}
+
+Vector<Vector2> GodotPhysicsServer2D::space_get_contacts(RID p_space) const {
+ GodotSpace2D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, Vector<Vector2>());
+ return space->get_debug_contacts();
+}
+
+int GodotPhysicsServer2D::space_get_contact_count(RID p_space) const {
+ GodotSpace2D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, 0);
+ return space->get_debug_contact_count();
+}
+
+PhysicsDirectSpaceState2D *GodotPhysicsServer2D::space_get_direct_state(RID p_space) {
+ GodotSpace2D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, nullptr);
+ ERR_FAIL_COND_V_MSG((using_threads && !doing_sync) || space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification.");
+
+ return space->get_direct_state();
+}
+
+RID GodotPhysicsServer2D::area_create() {
+ GodotArea2D *area = memnew(GodotArea2D);
+ RID rid = area_owner.make_rid(area);
+ area->set_self(rid);
+ return rid;
+};
+
+void GodotPhysicsServer2D::area_set_space(RID p_area, RID p_space) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ GodotSpace2D *space = nullptr;
+ if (p_space.is_valid()) {
+ space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ }
+
+ if (area->get_space() == space) {
+ return; //pointless
+ }
+
+ area->clear_constraints();
+ area->set_space(space);
+};
+
+RID GodotPhysicsServer2D::area_get_space(RID p_area) const {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, RID());
+
+ GodotSpace2D *space = area->get_space();
+ if (!space) {
+ return RID();
+ }
+ return space->get_self();
+};
+
+void GodotPhysicsServer2D::area_set_space_override_mode(RID p_area, AreaSpaceOverrideMode p_mode) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_space_override_mode(p_mode);
+}
+
+PhysicsServer2D::AreaSpaceOverrideMode GodotPhysicsServer2D::area_get_space_override_mode(RID p_area) const {
+ const GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, AREA_SPACE_OVERRIDE_DISABLED);
+
+ return area->get_space_override_mode();
+}
+
+void GodotPhysicsServer2D::area_add_shape(RID p_area, RID p_shape, const Transform2D &p_transform, bool p_disabled) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+
+ area->add_shape(shape, p_transform, p_disabled);
+}
+
+void GodotPhysicsServer2D::area_set_shape(RID p_area, int p_shape_idx, RID p_shape) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+ ERR_FAIL_COND(!shape->is_configured());
+
+ area->set_shape(p_shape_idx, shape);
+}
+
+void GodotPhysicsServer2D::area_set_shape_transform(RID p_area, int p_shape_idx, const Transform2D &p_transform) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_shape_transform(p_shape_idx, p_transform);
+}
+
+void GodotPhysicsServer2D::area_set_shape_disabled(RID p_area, int p_shape, bool p_disabled) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ ERR_FAIL_INDEX(p_shape, area->get_shape_count());
+ FLUSH_QUERY_CHECK(area);
+
+ area->set_shape_disabled(p_shape, p_disabled);
+}
+
+int GodotPhysicsServer2D::area_get_shape_count(RID p_area) const {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, -1);
+
+ return area->get_shape_count();
+}
+
+RID GodotPhysicsServer2D::area_get_shape(RID p_area, int p_shape_idx) const {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, RID());
+
+ GodotShape2D *shape = area->get_shape(p_shape_idx);
+ ERR_FAIL_COND_V(!shape, RID());
+
+ return shape->get_self();
+}
+
+Transform2D GodotPhysicsServer2D::area_get_shape_transform(RID p_area, int p_shape_idx) const {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, Transform2D());
+
+ return area->get_shape_transform(p_shape_idx);
+}
+
+void GodotPhysicsServer2D::area_remove_shape(RID p_area, int p_shape_idx) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->remove_shape(p_shape_idx);
+}
+
+void GodotPhysicsServer2D::area_clear_shapes(RID p_area) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ while (area->get_shape_count()) {
+ area->remove_shape(0);
+ }
+}
+
+void GodotPhysicsServer2D::area_attach_object_instance_id(RID p_area, ObjectID p_id) {
+ if (space_owner.owns(p_area)) {
+ GodotSpace2D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ area->set_instance_id(p_id);
+}
+
+ObjectID GodotPhysicsServer2D::area_get_object_instance_id(RID p_area) const {
+ if (space_owner.owns(p_area)) {
+ GodotSpace2D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, ObjectID());
+ return area->get_instance_id();
+}
+
+void GodotPhysicsServer2D::area_attach_canvas_instance_id(RID p_area, ObjectID p_id) {
+ if (space_owner.owns(p_area)) {
+ GodotSpace2D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ area->set_canvas_instance_id(p_id);
+}
+
+ObjectID GodotPhysicsServer2D::area_get_canvas_instance_id(RID p_area) const {
+ if (space_owner.owns(p_area)) {
+ GodotSpace2D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, ObjectID());
+ return area->get_canvas_instance_id();
+}
+
+void GodotPhysicsServer2D::area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value) {
+ if (space_owner.owns(p_area)) {
+ GodotSpace2D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ area->set_param(p_param, p_value);
+};
+
+void GodotPhysicsServer2D::area_set_transform(RID p_area, const Transform2D &p_transform) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ area->set_transform(p_transform);
+};
+
+Variant GodotPhysicsServer2D::area_get_param(RID p_area, AreaParameter p_param) const {
+ if (space_owner.owns(p_area)) {
+ GodotSpace2D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, Variant());
+
+ return area->get_param(p_param);
+};
+
+Transform2D GodotPhysicsServer2D::area_get_transform(RID p_area) const {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, Transform2D());
+
+ return area->get_transform();
+};
+
+void GodotPhysicsServer2D::area_set_pickable(RID p_area, bool p_pickable) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ area->set_pickable(p_pickable);
+}
+
+void GodotPhysicsServer2D::area_set_monitorable(RID p_area, bool p_monitorable) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ FLUSH_QUERY_CHECK(area);
+
+ area->set_monitorable(p_monitorable);
+}
+
+void GodotPhysicsServer2D::area_set_collision_mask(RID p_area, uint32_t p_mask) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_collision_mask(p_mask);
+}
+
+void GodotPhysicsServer2D::area_set_collision_layer(RID p_area, uint32_t p_layer) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_collision_layer(p_layer);
+}
+
+void GodotPhysicsServer2D::area_set_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
+}
+
+void GodotPhysicsServer2D::area_set_area_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
+ GodotArea2D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_area_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
+}
+
+/* BODY API */
+
+RID GodotPhysicsServer2D::body_create() {
+ GodotBody2D *body = memnew(GodotBody2D);
+ RID rid = body_owner.make_rid(body);
+ body->set_self(rid);
+ return rid;
+}
+
+void GodotPhysicsServer2D::body_set_space(RID p_body, RID p_space) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ GodotSpace2D *space = nullptr;
+ if (p_space.is_valid()) {
+ space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ }
+
+ if (body->get_space() == space) {
+ return; //pointless
+ }
+
+ body->clear_constraint_list();
+ body->set_space(space);
+};
+
+RID GodotPhysicsServer2D::body_get_space(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, RID());
+
+ GodotSpace2D *space = body->get_space();
+ if (!space) {
+ return RID();
+ }
+ return space->get_self();
+};
+
+void GodotPhysicsServer2D::body_set_mode(RID p_body, BodyMode p_mode) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ FLUSH_QUERY_CHECK(body);
+
+ body->set_mode(p_mode);
+};
+
+PhysicsServer2D::BodyMode GodotPhysicsServer2D::body_get_mode(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, BODY_MODE_STATIC);
+
+ return body->get_mode();
+};
+
+void GodotPhysicsServer2D::body_add_shape(RID p_body, RID p_shape, const Transform2D &p_transform, bool p_disabled) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+
+ body->add_shape(shape, p_transform, p_disabled);
+}
+
+void GodotPhysicsServer2D::body_set_shape(RID p_body, int p_shape_idx, RID p_shape) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ GodotShape2D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+ ERR_FAIL_COND(!shape->is_configured());
+
+ body->set_shape(p_shape_idx, shape);
+}
+
+void GodotPhysicsServer2D::body_set_shape_transform(RID p_body, int p_shape_idx, const Transform2D &p_transform) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_shape_transform(p_shape_idx, p_transform);
+}
+
+int GodotPhysicsServer2D::body_get_shape_count(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, -1);
+
+ return body->get_shape_count();
+}
+
+RID GodotPhysicsServer2D::body_get_shape(RID p_body, int p_shape_idx) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, RID());
+
+ GodotShape2D *shape = body->get_shape(p_shape_idx);
+ ERR_FAIL_COND_V(!shape, RID());
+
+ return shape->get_self();
+}
+
+Transform2D GodotPhysicsServer2D::body_get_shape_transform(RID p_body, int p_shape_idx) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, Transform2D());
+
+ return body->get_shape_transform(p_shape_idx);
+}
+
+void GodotPhysicsServer2D::body_remove_shape(RID p_body, int p_shape_idx) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->remove_shape(p_shape_idx);
+}
+
+void GodotPhysicsServer2D::body_clear_shapes(RID p_body) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ while (body->get_shape_count()) {
+ body->remove_shape(0);
+ }
+}
+
+void GodotPhysicsServer2D::body_set_shape_disabled(RID p_body, int p_shape_idx, bool p_disabled) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
+ FLUSH_QUERY_CHECK(body);
+
+ body->set_shape_disabled(p_shape_idx, p_disabled);
+}
+
+void GodotPhysicsServer2D::body_set_shape_as_one_way_collision(RID p_body, int p_shape_idx, bool p_enable, real_t p_margin) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
+ FLUSH_QUERY_CHECK(body);
+
+ body->set_shape_as_one_way_collision(p_shape_idx, p_enable, p_margin);
+}
+
+void GodotPhysicsServer2D::body_set_continuous_collision_detection_mode(RID p_body, CCDMode p_mode) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_continuous_collision_detection_mode(p_mode);
+}
+
+GodotPhysicsServer2D::CCDMode GodotPhysicsServer2D::body_get_continuous_collision_detection_mode(RID p_body) const {
+ const GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, CCD_MODE_DISABLED);
+
+ return body->get_continuous_collision_detection_mode();
+}
+
+void GodotPhysicsServer2D::body_attach_object_instance_id(RID p_body, ObjectID p_id) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_instance_id(p_id);
+};
+
+ObjectID GodotPhysicsServer2D::body_get_object_instance_id(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, ObjectID());
+
+ return body->get_instance_id();
+};
+
+void GodotPhysicsServer2D::body_attach_canvas_instance_id(RID p_body, ObjectID p_id) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_canvas_instance_id(p_id);
+};
+
+ObjectID GodotPhysicsServer2D::body_get_canvas_instance_id(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, ObjectID());
+
+ return body->get_canvas_instance_id();
+};
+
+void GodotPhysicsServer2D::body_set_collision_layer(RID p_body, uint32_t p_layer) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_collision_layer(p_layer);
+};
+
+uint32_t GodotPhysicsServer2D::body_get_collision_layer(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+
+ return body->get_collision_layer();
+};
+
+void GodotPhysicsServer2D::body_set_collision_mask(RID p_body, uint32_t p_mask) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_collision_mask(p_mask);
+};
+
+uint32_t GodotPhysicsServer2D::body_get_collision_mask(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+
+ return body->get_collision_mask();
+};
+
+void GodotPhysicsServer2D::body_set_param(RID p_body, BodyParameter p_param, const Variant &p_value) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_param(p_param, p_value);
+};
+
+Variant GodotPhysicsServer2D::body_get_param(RID p_body, BodyParameter p_param) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+
+ return body->get_param(p_param);
+};
+
+void GodotPhysicsServer2D::body_reset_mass_properties(RID p_body) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ return body->reset_mass_properties();
+}
+
+void GodotPhysicsServer2D::body_set_state(RID p_body, BodyState p_state, const Variant &p_variant) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_state(p_state, p_variant);
+};
+
+Variant GodotPhysicsServer2D::body_get_state(RID p_body, BodyState p_state) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, Variant());
+
+ return body->get_state(p_state);
+};
+
+void GodotPhysicsServer2D::body_set_applied_force(RID p_body, const Vector2 &p_force) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_applied_force(p_force);
+ body->wakeup();
+};
+
+Vector2 GodotPhysicsServer2D::body_get_applied_force(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, Vector2());
+ return body->get_applied_force();
+};
+
+void GodotPhysicsServer2D::body_set_applied_torque(RID p_body, real_t p_torque) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_applied_torque(p_torque);
+ body->wakeup();
+};
+
+real_t GodotPhysicsServer2D::body_get_applied_torque(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+
+ return body->get_applied_torque();
+};
+
+void GodotPhysicsServer2D::body_apply_central_impulse(RID p_body, const Vector2 &p_impulse) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->apply_central_impulse(p_impulse);
+ body->wakeup();
+}
+
+void GodotPhysicsServer2D::body_apply_torque_impulse(RID p_body, real_t p_torque) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ _update_shapes();
+
+ body->apply_torque_impulse(p_torque);
+ body->wakeup();
+}
+
+void GodotPhysicsServer2D::body_apply_impulse(RID p_body, const Vector2 &p_impulse, const Vector2 &p_position) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ _update_shapes();
+
+ body->apply_impulse(p_impulse, p_position);
+ body->wakeup();
+};
+
+void GodotPhysicsServer2D::body_add_central_force(RID p_body, const Vector2 &p_force) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->add_central_force(p_force);
+ body->wakeup();
+};
+
+void GodotPhysicsServer2D::body_add_force(RID p_body, const Vector2 &p_force, const Vector2 &p_position) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->add_force(p_force, p_position);
+ body->wakeup();
+};
+
+void GodotPhysicsServer2D::body_add_torque(RID p_body, real_t p_torque) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->add_torque(p_torque);
+ body->wakeup();
+};
+
+void GodotPhysicsServer2D::body_set_axis_velocity(RID p_body, const Vector2 &p_axis_velocity) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ _update_shapes();
+
+ Vector2 v = body->get_linear_velocity();
+ Vector2 axis = p_axis_velocity.normalized();
+ v -= axis * axis.dot(v);
+ v += p_axis_velocity;
+ body->set_linear_velocity(v);
+ body->wakeup();
+};
+
+void GodotPhysicsServer2D::body_add_collision_exception(RID p_body, RID p_body_b) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->add_exception(p_body_b);
+ body->wakeup();
+};
+
+void GodotPhysicsServer2D::body_remove_collision_exception(RID p_body, RID p_body_b) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->remove_exception(p_body_b);
+ body->wakeup();
+};
+
+void GodotPhysicsServer2D::body_get_collision_exceptions(RID p_body, List<RID> *p_exceptions) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ for (int i = 0; i < body->get_exceptions().size(); i++) {
+ p_exceptions->push_back(body->get_exceptions()[i]);
+ }
+};
+
+void GodotPhysicsServer2D::body_set_contacts_reported_depth_threshold(RID p_body, real_t p_threshold) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+};
+
+real_t GodotPhysicsServer2D::body_get_contacts_reported_depth_threshold(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+ return 0;
+};
+
+void GodotPhysicsServer2D::body_set_omit_force_integration(RID p_body, bool p_omit) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_omit_force_integration(p_omit);
+};
+
+bool GodotPhysicsServer2D::body_is_omitting_force_integration(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, false);
+ return body->get_omit_force_integration();
+};
+
+void GodotPhysicsServer2D::body_set_max_contacts_reported(RID p_body, int p_contacts) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_max_contacts_reported(p_contacts);
+}
+
+int GodotPhysicsServer2D::body_get_max_contacts_reported(RID p_body) const {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, -1);
+ return body->get_max_contacts_reported();
+}
+
+void GodotPhysicsServer2D::body_set_state_sync_callback(RID p_body, void *p_instance, BodyStateCallback p_callback) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_state_sync_callback(p_instance, p_callback);
+}
+
+void GodotPhysicsServer2D::body_set_force_integration_callback(RID p_body, const Callable &p_callable, const Variant &p_udata) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_force_integration_callback(p_callable, p_udata);
+}
+
+bool GodotPhysicsServer2D::body_collide_shape(RID p_body, int p_body_shape, RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, Vector2 *r_results, int p_result_max, int &r_result_count) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, false);
+ ERR_FAIL_INDEX_V(p_body_shape, body->get_shape_count(), false);
+
+ return shape_collide(body->get_shape(p_body_shape)->get_self(), body->get_transform() * body->get_shape_transform(p_body_shape), Vector2(), p_shape, p_shape_xform, p_motion, r_results, p_result_max, r_result_count);
+}
+
+void GodotPhysicsServer2D::body_set_pickable(RID p_body, bool p_pickable) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_pickable(p_pickable);
+}
+
+bool GodotPhysicsServer2D::body_test_motion(RID p_body, const MotionParameters &p_parameters, MotionResult *r_result) {
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, false);
+ ERR_FAIL_COND_V(!body->get_space(), false);
+ ERR_FAIL_COND_V(body->get_space()->is_locked(), false);
+
+ _update_shapes();
+
+ return body->get_space()->test_body_motion(body, p_parameters, r_result);
+}
+
+PhysicsDirectBodyState2D *GodotPhysicsServer2D::body_get_direct_state(RID p_body) {
+ ERR_FAIL_COND_V_MSG((using_threads && !doing_sync), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
+
+ GodotBody2D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, nullptr);
+
+ ERR_FAIL_COND_V(!body->get_space(), nullptr);
+ ERR_FAIL_COND_V_MSG(body->get_space()->is_locked(), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
+
+ return body->get_direct_state();
+}
+
+/* JOINT API */
+
+RID GodotPhysicsServer2D::joint_create() {
+ GodotJoint2D *joint = memnew(GodotJoint2D);
+ RID joint_rid = joint_owner.make_rid(joint);
+ joint->set_self(joint_rid);
+ return joint_rid;
+}
+
+void GodotPhysicsServer2D::joint_clear(RID p_joint) {
+ GodotJoint2D *joint = joint_owner.get_or_null(p_joint);
+ if (joint->get_type() != JOINT_TYPE_MAX) {
+ GodotJoint2D *empty_joint = memnew(GodotJoint2D);
+ empty_joint->copy_settings_from(joint);
+
+ joint_owner.replace(p_joint, empty_joint);
+ memdelete(joint);
+ }
+}
+
+void GodotPhysicsServer2D::joint_set_param(RID p_joint, JointParam p_param, real_t p_value) {
+ GodotJoint2D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+
+ switch (p_param) {
+ case JOINT_PARAM_BIAS:
+ joint->set_bias(p_value);
+ break;
+ case JOINT_PARAM_MAX_BIAS:
+ joint->set_max_bias(p_value);
+ break;
+ case JOINT_PARAM_MAX_FORCE:
+ joint->set_max_force(p_value);
+ break;
+ }
+}
+
+real_t GodotPhysicsServer2D::joint_get_param(RID p_joint, JointParam p_param) const {
+ const GodotJoint2D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, -1);
+
+ switch (p_param) {
+ case JOINT_PARAM_BIAS:
+ return joint->get_bias();
+ break;
+ case JOINT_PARAM_MAX_BIAS:
+ return joint->get_max_bias();
+ break;
+ case JOINT_PARAM_MAX_FORCE:
+ return joint->get_max_force();
+ break;
+ }
+
+ return 0;
+}
+
+void GodotPhysicsServer2D::joint_disable_collisions_between_bodies(RID p_joint, const bool p_disable) {
+ GodotJoint2D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+
+ joint->disable_collisions_between_bodies(p_disable);
+
+ if (2 == joint->get_body_count()) {
+ GodotBody2D *body_a = *joint->get_body_ptr();
+ GodotBody2D *body_b = *(joint->get_body_ptr() + 1);
+
+ if (p_disable) {
+ body_add_collision_exception(body_a->get_self(), body_b->get_self());
+ body_add_collision_exception(body_b->get_self(), body_a->get_self());
+ } else {
+ body_remove_collision_exception(body_a->get_self(), body_b->get_self());
+ body_remove_collision_exception(body_b->get_self(), body_a->get_self());
+ }
+ }
+}
+
+bool GodotPhysicsServer2D::joint_is_disabled_collisions_between_bodies(RID p_joint) const {
+ const GodotJoint2D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, true);
+
+ return joint->is_disabled_collisions_between_bodies();
+}
+
+void GodotPhysicsServer2D::joint_make_pin(RID p_joint, const Vector2 &p_pos, RID p_body_a, RID p_body_b) {
+ GodotBody2D *A = body_owner.get_or_null(p_body_a);
+ ERR_FAIL_COND(!A);
+ GodotBody2D *B = nullptr;
+ if (body_owner.owns(p_body_b)) {
+ B = body_owner.get_or_null(p_body_b);
+ ERR_FAIL_COND(!B);
+ }
+
+ GodotJoint2D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint2D *joint = memnew(GodotPinJoint2D(p_pos, A, B));
+
+ joint_owner.replace(p_joint, joint);
+ joint->copy_settings_from(prev_joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer2D::joint_make_groove(RID p_joint, const Vector2 &p_a_groove1, const Vector2 &p_a_groove2, const Vector2 &p_b_anchor, RID p_body_a, RID p_body_b) {
+ GodotBody2D *A = body_owner.get_or_null(p_body_a);
+ ERR_FAIL_COND(!A);
+
+ GodotBody2D *B = body_owner.get_or_null(p_body_b);
+ ERR_FAIL_COND(!B);
+
+ GodotJoint2D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint2D *joint = memnew(GodotGrooveJoint2D(p_a_groove1, p_a_groove2, p_b_anchor, A, B));
+
+ joint_owner.replace(p_joint, joint);
+ joint->copy_settings_from(prev_joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer2D::joint_make_damped_spring(RID p_joint, const Vector2 &p_anchor_a, const Vector2 &p_anchor_b, RID p_body_a, RID p_body_b) {
+ GodotBody2D *A = body_owner.get_or_null(p_body_a);
+ ERR_FAIL_COND(!A);
+
+ GodotBody2D *B = body_owner.get_or_null(p_body_b);
+ ERR_FAIL_COND(!B);
+
+ GodotJoint2D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint2D *joint = memnew(GodotDampedSpringJoint2D(p_anchor_a, p_anchor_b, A, B));
+
+ joint_owner.replace(p_joint, joint);
+ joint->copy_settings_from(prev_joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer2D::pin_joint_set_param(RID p_joint, PinJointParam p_param, real_t p_value) {
+ GodotJoint2D *j = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!j);
+ ERR_FAIL_COND(j->get_type() != JOINT_TYPE_PIN);
+
+ GodotPinJoint2D *pin_joint = static_cast<GodotPinJoint2D *>(j);
+ pin_joint->set_param(p_param, p_value);
+}
+
+real_t GodotPhysicsServer2D::pin_joint_get_param(RID p_joint, PinJointParam p_param) const {
+ GodotJoint2D *j = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!j, 0);
+ ERR_FAIL_COND_V(j->get_type() != JOINT_TYPE_PIN, 0);
+
+ GodotPinJoint2D *pin_joint = static_cast<GodotPinJoint2D *>(j);
+ return pin_joint->get_param(p_param);
+}
+
+void GodotPhysicsServer2D::damped_spring_joint_set_param(RID p_joint, DampedSpringParam p_param, real_t p_value) {
+ GodotJoint2D *j = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!j);
+ ERR_FAIL_COND(j->get_type() != JOINT_TYPE_DAMPED_SPRING);
+
+ GodotDampedSpringJoint2D *dsj = static_cast<GodotDampedSpringJoint2D *>(j);
+ dsj->set_param(p_param, p_value);
+}
+
+real_t GodotPhysicsServer2D::damped_spring_joint_get_param(RID p_joint, DampedSpringParam p_param) const {
+ GodotJoint2D *j = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!j, 0);
+ ERR_FAIL_COND_V(j->get_type() != JOINT_TYPE_DAMPED_SPRING, 0);
+
+ GodotDampedSpringJoint2D *dsj = static_cast<GodotDampedSpringJoint2D *>(j);
+ return dsj->get_param(p_param);
+}
+
+PhysicsServer2D::JointType GodotPhysicsServer2D::joint_get_type(RID p_joint) const {
+ GodotJoint2D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, JOINT_TYPE_PIN);
+
+ return joint->get_type();
+}
+
+void GodotPhysicsServer2D::free(RID p_rid) {
+ _update_shapes(); // just in case
+
+ if (shape_owner.owns(p_rid)) {
+ GodotShape2D *shape = shape_owner.get_or_null(p_rid);
+
+ while (shape->get_owners().size()) {
+ GodotShapeOwner2D *so = shape->get_owners().front()->key();
+ so->remove_shape(shape);
+ }
+
+ shape_owner.free(p_rid);
+ memdelete(shape);
+ } else if (body_owner.owns(p_rid)) {
+ GodotBody2D *body = body_owner.get_or_null(p_rid);
+
+ /*
+ if (body->get_state_query())
+ _clear_query(body->get_state_query());
+
+ if (body->get_direct_state_query())
+ _clear_query(body->get_direct_state_query());
+ */
+
+ body_set_space(p_rid, RID());
+
+ while (body->get_shape_count()) {
+ body->remove_shape(0);
+ }
+
+ body_owner.free(p_rid);
+ memdelete(body);
+
+ } else if (area_owner.owns(p_rid)) {
+ GodotArea2D *area = area_owner.get_or_null(p_rid);
+
+ /*
+ if (area->get_monitor_query())
+ _clear_query(area->get_monitor_query());
+ */
+
+ area->set_space(nullptr);
+
+ while (area->get_shape_count()) {
+ area->remove_shape(0);
+ }
+
+ area_owner.free(p_rid);
+ memdelete(area);
+ } else if (space_owner.owns(p_rid)) {
+ GodotSpace2D *space = space_owner.get_or_null(p_rid);
+
+ while (space->get_objects().size()) {
+ GodotCollisionObject2D *co = (GodotCollisionObject2D *)space->get_objects().front()->get();
+ co->set_space(nullptr);
+ }
+
+ active_spaces.erase(space);
+ free(space->get_default_area()->get_self());
+ space_owner.free(p_rid);
+ memdelete(space);
+ } else if (joint_owner.owns(p_rid)) {
+ GodotJoint2D *joint = joint_owner.get_or_null(p_rid);
+
+ joint_owner.free(p_rid);
+ memdelete(joint);
+
+ } else {
+ ERR_FAIL_MSG("Invalid ID.");
+ }
+};
+
+void GodotPhysicsServer2D::set_active(bool p_active) {
+ active = p_active;
+};
+
+void GodotPhysicsServer2D::set_collision_iterations(int p_iterations) {
+ iterations = p_iterations;
+};
+
+void GodotPhysicsServer2D::init() {
+ doing_sync = false;
+ iterations = 8; // 8?
+ stepper = memnew(GodotStep2D);
+};
+
+void GodotPhysicsServer2D::step(real_t p_step) {
+ if (!active) {
+ return;
+ }
+
+ _update_shapes();
+
+ island_count = 0;
+ active_objects = 0;
+ collision_pairs = 0;
+ for (Set<const GodotSpace2D *>::Element *E = active_spaces.front(); E; E = E->next()) {
+ stepper->step((GodotSpace2D *)E->get(), p_step, iterations);
+ island_count += E->get()->get_island_count();
+ active_objects += E->get()->get_active_objects();
+ collision_pairs += E->get()->get_collision_pairs();
+ }
+};
+
+void GodotPhysicsServer2D::sync() {
+ doing_sync = true;
+};
+
+void GodotPhysicsServer2D::flush_queries() {
+ if (!active) {
+ return;
+ }
+
+ flushing_queries = true;
+
+ uint64_t time_beg = OS::get_singleton()->get_ticks_usec();
+
+ for (Set<const GodotSpace2D *>::Element *E = active_spaces.front(); E; E = E->next()) {
+ GodotSpace2D *space = (GodotSpace2D *)E->get();
+ space->call_queries();
+ }
+
+ flushing_queries = false;
+
+ if (EngineDebugger::is_profiling("servers")) {
+ uint64_t total_time[GodotSpace2D::ELAPSED_TIME_MAX];
+ static const char *time_name[GodotSpace2D::ELAPSED_TIME_MAX] = {
+ "integrate_forces",
+ "generate_islands",
+ "setup_constraints",
+ "solve_constraints",
+ "integrate_velocities"
+ };
+
+ for (int i = 0; i < GodotSpace2D::ELAPSED_TIME_MAX; i++) {
+ total_time[i] = 0;
+ }
+
+ for (Set<const GodotSpace2D *>::Element *E = active_spaces.front(); E; E = E->next()) {
+ for (int i = 0; i < GodotSpace2D::ELAPSED_TIME_MAX; i++) {
+ total_time[i] += E->get()->get_elapsed_time(GodotSpace2D::ElapsedTime(i));
+ }
+ }
+
+ Array values;
+ values.resize(GodotSpace2D::ELAPSED_TIME_MAX * 2);
+ for (int i = 0; i < GodotSpace2D::ELAPSED_TIME_MAX; i++) {
+ values[i * 2 + 0] = time_name[i];
+ values[i * 2 + 1] = USEC_TO_SEC(total_time[i]);
+ }
+ values.push_back("flush_queries");
+ values.push_back(USEC_TO_SEC(OS::get_singleton()->get_ticks_usec() - time_beg));
+
+ values.push_front("physics_2d");
+ EngineDebugger::profiler_add_frame_data("servers", values);
+ }
+}
+
+void GodotPhysicsServer2D::end_sync() {
+ doing_sync = false;
+}
+
+void GodotPhysicsServer2D::finish() {
+ memdelete(stepper);
+};
+
+void GodotPhysicsServer2D::_update_shapes() {
+ while (pending_shape_update_list.first()) {
+ pending_shape_update_list.first()->self()->_shape_changed();
+ pending_shape_update_list.remove(pending_shape_update_list.first());
+ }
+}
+
+int GodotPhysicsServer2D::get_process_info(ProcessInfo p_info) {
+ switch (p_info) {
+ case INFO_ACTIVE_OBJECTS: {
+ return active_objects;
+ } break;
+ case INFO_COLLISION_PAIRS: {
+ return collision_pairs;
+ } break;
+ case INFO_ISLAND_COUNT: {
+ return island_count;
+ } break;
+ }
+
+ return 0;
+}
+
+GodotPhysicsServer2D *GodotPhysicsServer2D::godot_singleton = nullptr;
+
+GodotPhysicsServer2D::GodotPhysicsServer2D(bool p_using_threads) {
+ godot_singleton = this;
+ GodotBroadPhase2D::create_func = GodotBroadPhase2DBVH::_create;
+
+ using_threads = p_using_threads;
+};
diff --git a/servers/physics_2d/physics_server_2d_sw.h b/servers/physics_2d/godot_physics_server_2d.h
index b8e375a087..a8a1e71d13 100644
--- a/servers/physics_2d/physics_server_2d_sw.h
+++ b/servers/physics_2d/godot_physics_server_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* physics_server_2d_sw.h */
+/* godot_physics_server_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,21 +28,22 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef PHYSICS_2D_SERVER_SW
-#define PHYSICS_2D_SERVER_SW
+#ifndef GODOT_PHYSICS_SERVER_2D_H
+#define GODOT_PHYSICS_SERVER_2D_H
+
+#include "godot_joints_2d.h"
+#include "godot_shape_2d.h"
+#include "godot_space_2d.h"
+#include "godot_step_2d.h"
#include "core/templates/rid_owner.h"
-#include "joints_2d_sw.h"
#include "servers/physics_server_2d.h"
-#include "shape_2d_sw.h"
-#include "space_2d_sw.h"
-#include "step_2d_sw.h"
-class PhysicsServer2DSW : public PhysicsServer2D {
- GDCLASS(PhysicsServer2DSW, PhysicsServer2D);
+class GodotPhysicsServer2D : public PhysicsServer2D {
+ GDCLASS(GodotPhysicsServer2D, PhysicsServer2D);
- friend class PhysicsDirectSpaceState2DSW;
- friend class PhysicsDirectBodyState2DSW;
+ friend class GodotPhysicsDirectSpaceState2D;
+ friend class GodotPhysicsDirectBodyState2D;
bool active = true;
int iterations = 0;
bool doing_sync = false;
@@ -55,20 +56,19 @@ class PhysicsServer2DSW : public PhysicsServer2D {
bool flushing_queries = false;
- Step2DSW *stepper = nullptr;
- Set<const Space2DSW *> active_spaces;
+ GodotStep2D *stepper = nullptr;
+ Set<const GodotSpace2D *> active_spaces;
- mutable RID_PtrOwner<Shape2DSW, true> shape_owner;
- mutable RID_PtrOwner<Space2DSW, true> space_owner;
- mutable RID_PtrOwner<Area2DSW, true> area_owner;
- mutable RID_PtrOwner<Body2DSW, true> body_owner;
- mutable RID_PtrOwner<Joint2DSW, true> joint_owner;
+ mutable RID_PtrOwner<GodotShape2D, true> shape_owner;
+ mutable RID_PtrOwner<GodotSpace2D, true> space_owner;
+ mutable RID_PtrOwner<GodotArea2D, true> area_owner;
+ mutable RID_PtrOwner<GodotBody2D, true> body_owner;
+ mutable RID_PtrOwner<GodotJoint2D, true> joint_owner;
- static PhysicsServer2DSW *singletonsw;
+ static GodotPhysicsServer2D *godot_singleton;
- //void _clear_query(Query2DSW *p_query);
- friend class CollisionObject2DSW;
- SelfList<CollisionObject2DSW>::List pending_shape_update_list;
+ friend class GodotCollisionObject2D;
+ SelfList<GodotCollisionObject2D>::List pending_shape_update_list;
void _update_shapes();
RID _shape_create(ShapeType p_shape);
@@ -292,8 +292,8 @@ public:
int get_process_info(ProcessInfo p_info) override;
- PhysicsServer2DSW(bool p_using_threads = false);
- ~PhysicsServer2DSW() {}
+ GodotPhysicsServer2D(bool p_using_threads = false);
+ ~GodotPhysicsServer2D() {}
};
-#endif
+#endif // GODOT_PHYSICS_SERVER_2D_H
diff --git a/servers/physics_2d/shape_2d_sw.cpp b/servers/physics_2d/godot_shape_2d.cpp
index bde882ac24..3604004324 100644
--- a/servers/physics_2d/shape_2d_sw.cpp
+++ b/servers/physics_2d/godot_shape_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* shape_2d_sw.cpp */
+/* godot_shape_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,29 +28,29 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "shape_2d_sw.h"
+#include "godot_shape_2d.h"
#include "core/math/geometry_2d.h"
#include "core/templates/sort_array.h"
-void Shape2DSW::configure(const Rect2 &p_aabb) {
+void GodotShape2D::configure(const Rect2 &p_aabb) {
aabb = p_aabb;
configured = true;
- for (const KeyValue<ShapeOwner2DSW *, int> &E : owners) {
- ShapeOwner2DSW *co = (ShapeOwner2DSW *)E.key;
+ for (const KeyValue<GodotShapeOwner2D *, int> &E : owners) {
+ GodotShapeOwner2D *co = (GodotShapeOwner2D *)E.key;
co->_shape_changed();
}
}
-Vector2 Shape2DSW::get_support(const Vector2 &p_normal) const {
+Vector2 GodotShape2D::get_support(const Vector2 &p_normal) const {
Vector2 res[2];
int amnt;
get_supports(p_normal, res, amnt);
return res[0];
}
-void Shape2DSW::add_owner(ShapeOwner2DSW *p_owner) {
- Map<ShapeOwner2DSW *, int>::Element *E = owners.find(p_owner);
+void GodotShape2D::add_owner(GodotShapeOwner2D *p_owner) {
+ Map<GodotShapeOwner2D *, int>::Element *E = owners.find(p_owner);
if (E) {
E->get()++;
} else {
@@ -58,8 +58,8 @@ void Shape2DSW::add_owner(ShapeOwner2DSW *p_owner) {
}
}
-void Shape2DSW::remove_owner(ShapeOwner2DSW *p_owner) {
- Map<ShapeOwner2DSW *, int>::Element *E = owners.find(p_owner);
+void GodotShape2D::remove_owner(GodotShapeOwner2D *p_owner) {
+ Map<GodotShapeOwner2D *, int>::Element *E = owners.find(p_owner);
ERR_FAIL_COND(!E);
E->get()--;
if (E->get() == 0) {
@@ -67,15 +67,15 @@ void Shape2DSW::remove_owner(ShapeOwner2DSW *p_owner) {
}
}
-bool Shape2DSW::is_owner(ShapeOwner2DSW *p_owner) const {
+bool GodotShape2D::is_owner(GodotShapeOwner2D *p_owner) const {
return owners.has(p_owner);
}
-const Map<ShapeOwner2DSW *, int> &Shape2DSW::get_owners() const {
+const Map<GodotShapeOwner2D *, int> &GodotShape2D::get_owners() const {
return owners;
}
-Shape2DSW::~Shape2DSW() {
+GodotShape2D::~GodotShape2D() {
ERR_FAIL_COND(owners.size());
}
@@ -83,15 +83,15 @@ Shape2DSW::~Shape2DSW() {
/*********************************************************/
/*********************************************************/
-void WorldBoundaryShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
+void GodotWorldBoundaryShape2D::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
r_amount = 0;
}
-bool WorldBoundaryShape2DSW::contains_point(const Vector2 &p_point) const {
+bool GodotWorldBoundaryShape2D::contains_point(const Vector2 &p_point) const {
return normal.dot(p_point) < d;
}
-bool WorldBoundaryShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
+bool GodotWorldBoundaryShape2D::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
Vector2 segment = p_begin - p_end;
real_t den = normal.dot(segment);
@@ -113,11 +113,11 @@ bool WorldBoundaryShape2DSW::intersect_segment(const Vector2 &p_begin, const Vec
return true;
}
-real_t WorldBoundaryShape2DSW::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
+real_t GodotWorldBoundaryShape2D::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
return 0;
}
-void WorldBoundaryShape2DSW::set_data(const Variant &p_data) {
+void GodotWorldBoundaryShape2D::set_data(const Variant &p_data) {
ERR_FAIL_COND(p_data.get_type() != Variant::ARRAY);
Array arr = p_data;
ERR_FAIL_COND(arr.size() != 2);
@@ -126,7 +126,7 @@ void WorldBoundaryShape2DSW::set_data(const Variant &p_data) {
configure(Rect2(Vector2(-1e4, -1e4), Vector2(1e4 * 2, 1e4 * 2)));
}
-Variant WorldBoundaryShape2DSW::get_data() const {
+Variant GodotWorldBoundaryShape2D::get_data() const {
Array arr;
arr.resize(2);
arr[0] = normal;
@@ -138,7 +138,7 @@ Variant WorldBoundaryShape2DSW::get_data() const {
/*********************************************************/
/*********************************************************/
-void SeparationRayShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
+void GodotSeparationRayShape2D::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
r_amount = 1;
if (p_normal.y > 0) {
@@ -148,26 +148,26 @@ void SeparationRayShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_su
}
}
-bool SeparationRayShape2DSW::contains_point(const Vector2 &p_point) const {
+bool GodotSeparationRayShape2D::contains_point(const Vector2 &p_point) const {
return false;
}
-bool SeparationRayShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
+bool GodotSeparationRayShape2D::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
return false; //rays can't be intersected
}
-real_t SeparationRayShape2DSW::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
+real_t GodotSeparationRayShape2D::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
return 0; //rays are mass-less
}
-void SeparationRayShape2DSW::set_data(const Variant &p_data) {
+void GodotSeparationRayShape2D::set_data(const Variant &p_data) {
Dictionary d = p_data;
length = d["length"];
slide_on_slope = d["slide_on_slope"];
configure(Rect2(0, 0, 0.001, length));
}
-Variant SeparationRayShape2DSW::get_data() const {
+Variant GodotSeparationRayShape2D::get_data() const {
Dictionary d;
d["length"] = length;
d["slide_on_slope"] = slide_on_slope;
@@ -178,7 +178,7 @@ Variant SeparationRayShape2DSW::get_data() const {
/*********************************************************/
/*********************************************************/
-void SegmentShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
+void GodotSegmentShape2D::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
if (Math::abs(p_normal.dot(n)) > _SEGMENT_IS_VALID_SUPPORT_THRESHOLD) {
r_supports[0] = a;
r_supports[1] = b;
@@ -195,11 +195,11 @@ void SegmentShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports
r_amount = 1;
}
-bool SegmentShape2DSW::contains_point(const Vector2 &p_point) const {
+bool GodotSegmentShape2D::contains_point(const Vector2 &p_point) const {
return false;
}
-bool SegmentShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
+bool GodotSegmentShape2D::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
if (!Geometry2D::segment_intersects_segment(p_begin, p_end, a, b, &r_point)) {
return false;
}
@@ -213,11 +213,11 @@ bool SegmentShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &
return true;
}
-real_t SegmentShape2DSW::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
+real_t GodotSegmentShape2D::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
return p_mass * ((a * p_scale).distance_squared_to(b * p_scale)) / 12;
}
-void SegmentShape2DSW::set_data(const Variant &p_data) {
+void GodotSegmentShape2D::set_data(const Variant &p_data) {
ERR_FAIL_COND(p_data.get_type() != Variant::RECT2);
Rect2 r = p_data;
@@ -237,7 +237,7 @@ void SegmentShape2DSW::set_data(const Variant &p_data) {
configure(aabb);
}
-Variant SegmentShape2DSW::get_data() const {
+Variant GodotSegmentShape2D::get_data() const {
Rect2 r;
r.position = a;
r.size = b;
@@ -248,16 +248,16 @@ Variant SegmentShape2DSW::get_data() const {
/*********************************************************/
/*********************************************************/
-void CircleShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
+void GodotCircleShape2D::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
r_amount = 1;
*r_supports = p_normal * radius;
}
-bool CircleShape2DSW::contains_point(const Vector2 &p_point) const {
+bool GodotCircleShape2D::contains_point(const Vector2 &p_point) const {
return p_point.length_squared() < radius * radius;
}
-bool CircleShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
+bool GodotCircleShape2D::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
Vector2 line_vec = p_end - p_begin;
real_t a, b, c;
@@ -283,19 +283,19 @@ bool CircleShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p
return true;
}
-real_t CircleShape2DSW::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
+real_t GodotCircleShape2D::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
real_t a = radius * p_scale.x;
real_t b = radius * p_scale.y;
return p_mass * (a * a + b * b) / 4;
}
-void CircleShape2DSW::set_data(const Variant &p_data) {
+void GodotCircleShape2D::set_data(const Variant &p_data) {
ERR_FAIL_COND(!p_data.is_num());
radius = p_data;
configure(Rect2(-radius, -radius, radius * 2, radius * 2));
}
-Variant CircleShape2DSW::get_data() const {
+Variant GodotCircleShape2D::get_data() const {
return radius;
}
@@ -303,7 +303,7 @@ Variant CircleShape2DSW::get_data() const {
/*********************************************************/
/*********************************************************/
-void RectangleShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
+void GodotRectangleShape2D::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
for (int i = 0; i < 2; i++) {
Vector2 ag;
ag[i] = 1.0;
@@ -333,7 +333,7 @@ void RectangleShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_suppor
(p_normal.y < 0) ? -half_extents.y : half_extents.y);
}
-bool RectangleShape2DSW::contains_point(const Vector2 &p_point) const {
+bool GodotRectangleShape2D::contains_point(const Vector2 &p_point) const {
real_t x = p_point.x;
real_t y = p_point.y;
real_t edge_x = half_extents.x;
@@ -341,23 +341,23 @@ bool RectangleShape2DSW::contains_point(const Vector2 &p_point) const {
return (x >= -edge_x) && (x < edge_x) && (y >= -edge_y) && (y < edge_y);
}
-bool RectangleShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
+bool GodotRectangleShape2D::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
return get_aabb().intersects_segment(p_begin, p_end, &r_point, &r_normal);
}
-real_t RectangleShape2DSW::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
+real_t GodotRectangleShape2D::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
Vector2 he2 = half_extents * 2 * p_scale;
return p_mass * he2.dot(he2) / 12.0;
}
-void RectangleShape2DSW::set_data(const Variant &p_data) {
+void GodotRectangleShape2D::set_data(const Variant &p_data) {
ERR_FAIL_COND(p_data.get_type() != Variant::VECTOR2);
half_extents = p_data;
configure(Rect2(-half_extents, half_extents * 2.0));
}
-Variant RectangleShape2DSW::get_data() const {
+Variant GodotRectangleShape2D::get_data() const {
return half_extents;
}
@@ -365,7 +365,7 @@ Variant RectangleShape2DSW::get_data() const {
/*********************************************************/
/*********************************************************/
-void CapsuleShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
+void GodotCapsuleShape2D::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
Vector2 n = p_normal;
real_t d = n.y;
@@ -392,7 +392,7 @@ void CapsuleShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports
}
}
-bool CapsuleShape2DSW::contains_point(const Vector2 &p_point) const {
+bool GodotCapsuleShape2D::contains_point(const Vector2 &p_point) const {
Vector2 p = p_point;
p.y = Math::abs(p.y);
p.y -= height * 0.5 - radius;
@@ -403,7 +403,7 @@ bool CapsuleShape2DSW::contains_point(const Vector2 &p_point) const {
return p.length_squared() < radius * radius;
}
-bool CapsuleShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
+bool GodotCapsuleShape2D::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
real_t d = 1e10;
Vector2 n = (p_end - p_begin).normalized();
bool collided = false;
@@ -463,12 +463,12 @@ bool CapsuleShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &
return collided; //todo
}
-real_t CapsuleShape2DSW::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
+real_t GodotCapsuleShape2D::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
Vector2 he2 = Vector2(radius * 2, height) * p_scale;
return p_mass * he2.dot(he2) / 12.0;
}
-void CapsuleShape2DSW::set_data(const Variant &p_data) {
+void GodotCapsuleShape2D::set_data(const Variant &p_data) {
ERR_FAIL_COND(p_data.get_type() != Variant::ARRAY && p_data.get_type() != Variant::VECTOR2);
if (p_data.get_type() == Variant::ARRAY) {
@@ -486,7 +486,7 @@ void CapsuleShape2DSW::set_data(const Variant &p_data) {
configure(Rect2(-he, he * 2));
}
-Variant CapsuleShape2DSW::get_data() const {
+Variant GodotCapsuleShape2D::get_data() const {
return Point2(height, radius);
}
@@ -494,7 +494,7 @@ Variant CapsuleShape2DSW::get_data() const {
/*********************************************************/
/*********************************************************/
-void ConvexPolygonShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
+void GodotConvexPolygonShape2D::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
int support_idx = -1;
real_t d = -1e10;
r_amount = 0;
@@ -522,7 +522,7 @@ void ConvexPolygonShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_su
r_supports[0] = points[support_idx].pos;
}
-bool ConvexPolygonShape2DSW::contains_point(const Vector2 &p_point) const {
+bool GodotConvexPolygonShape2D::contains_point(const Vector2 &p_point) const {
bool out = false;
bool in = false;
@@ -538,7 +538,7 @@ bool ConvexPolygonShape2DSW::contains_point(const Vector2 &p_point) const {
return in != out;
}
-bool ConvexPolygonShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
+bool GodotConvexPolygonShape2D::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
Vector2 n = (p_end - p_begin).normalized();
real_t d = 1e10;
bool inters = false;
@@ -568,7 +568,7 @@ bool ConvexPolygonShape2DSW::intersect_segment(const Vector2 &p_begin, const Vec
return inters;
}
-real_t ConvexPolygonShape2DSW::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
+real_t GodotConvexPolygonShape2D::get_moment_of_inertia(real_t p_mass, const Size2 &p_scale) const {
ERR_FAIL_COND_V_MSG(point_count == 0, 0, "Convex polygon shape has no points.");
Rect2 aabb;
aabb.position = points[0].pos * p_scale;
@@ -579,7 +579,7 @@ real_t ConvexPolygonShape2DSW::get_moment_of_inertia(real_t p_mass, const Size2
return p_mass * aabb.size.dot(aabb.size) / 12.0;
}
-void ConvexPolygonShape2DSW::set_data(const Variant &p_data) {
+void GodotConvexPolygonShape2D::set_data(const Variant &p_data) {
#ifdef REAL_T_IS_DOUBLE
ERR_FAIL_COND(p_data.get_type() != Variant::PACKED_VECTOR2_ARRAY && p_data.get_type() != Variant::PACKED_FLOAT64_ARRAY);
#else
@@ -635,7 +635,7 @@ void ConvexPolygonShape2DSW::set_data(const Variant &p_data) {
configure(aabb);
}
-Variant ConvexPolygonShape2DSW::get_data() const {
+Variant GodotConvexPolygonShape2D::get_data() const {
Vector<Vector2> dvr;
dvr.resize(point_count);
@@ -647,7 +647,7 @@ Variant ConvexPolygonShape2DSW::get_data() const {
return dvr;
}
-ConvexPolygonShape2DSW::~ConvexPolygonShape2DSW() {
+GodotConvexPolygonShape2D::~GodotConvexPolygonShape2D() {
if (points) {
memdelete_arr(points);
}
@@ -655,7 +655,7 @@ ConvexPolygonShape2DSW::~ConvexPolygonShape2DSW() {
//////////////////////////////////////////////////
-void ConcavePolygonShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
+void GodotConcavePolygonShape2D::get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const {
real_t d = -1e10;
int idx = -1;
for (int i = 0; i < points.size(); i++) {
@@ -671,11 +671,11 @@ void ConcavePolygonShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_s
*r_supports = points[idx];
}
-bool ConcavePolygonShape2DSW::contains_point(const Vector2 &p_point) const {
+bool GodotConcavePolygonShape2D::contains_point(const Vector2 &p_point) const {
return false; //sorry
}
-bool ConcavePolygonShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
+bool GodotConcavePolygonShape2D::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {
if (segments.size() == 0 || points.size() == 0) {
return false;
}
@@ -783,7 +783,7 @@ bool ConcavePolygonShape2DSW::intersect_segment(const Vector2 &p_begin, const Ve
return inters;
}
-int ConcavePolygonShape2DSW::_generate_bvh(BVH *p_bvh, int p_len, int p_depth) {
+int GodotConcavePolygonShape2D::_generate_bvh(BVH *p_bvh, int p_len, int p_depth) {
if (p_len == 1) {
bvh_depth = MAX(p_depth, bvh_depth);
bvh.push_back(*p_bvh);
@@ -821,7 +821,7 @@ int ConcavePolygonShape2DSW::_generate_bvh(BVH *p_bvh, int p_len, int p_depth) {
return node_idx;
}
-void ConcavePolygonShape2DSW::set_data(const Variant &p_data) {
+void GodotConcavePolygonShape2D::set_data(const Variant &p_data) {
#ifdef REAL_T_IS_DOUBLE
ERR_FAIL_COND(p_data.get_type() != Variant::PACKED_VECTOR2_ARRAY && p_data.get_type() != Variant::PACKED_FLOAT64_ARRAY);
#else
@@ -898,7 +898,7 @@ void ConcavePolygonShape2DSW::set_data(const Variant &p_data) {
configure(aabb);
}
-Variant ConcavePolygonShape2DSW::get_data() const {
+Variant GodotConcavePolygonShape2D::get_data() const {
Vector<Vector2> rsegments;
int len = segments.size();
rsegments.resize(len * 2);
@@ -911,7 +911,7 @@ Variant ConcavePolygonShape2DSW::get_data() const {
return rsegments;
}
-void ConcavePolygonShape2DSW::cull(const Rect2 &p_local_aabb, QueryCallback p_callback, void *p_userdata) const {
+void GodotConcavePolygonShape2D::cull(const Rect2 &p_local_aabb, QueryCallback p_callback, void *p_userdata) const {
uint32_t *stack = (uint32_t *)alloca(sizeof(int) * bvh_depth);
enum {
@@ -957,7 +957,7 @@ void ConcavePolygonShape2DSW::cull(const Rect2 &p_local_aabb, QueryCallback p_ca
Vector2 a = pointptr[s.points[0]];
Vector2 b = pointptr[s.points[1]];
- SegmentShape2DSW ss(a, b, (b - a).orthogonal().normalized());
+ GodotSegmentShape2D ss(a, b, (b - a).orthogonal().normalized());
if (p_callback(p_userdata, &ss)) {
return;
diff --git a/servers/physics_2d/shape_2d_sw.h b/servers/physics_2d/godot_shape_2d.h
index c118826284..25d113aafb 100644
--- a/servers/physics_2d/shape_2d_sw.h
+++ b/servers/physics_2d/godot_shape_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* shape_2d_sw.h */
+/* godot_shape_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,29 +28,29 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef SHAPE_2D_2DSW_H
-#define SHAPE_2D_2DSW_H
+#ifndef GODOT_SHAPE_2D_H
+#define GODOT_SHAPE_2D_H
#include "servers/physics_server_2d.h"
#define _SEGMENT_IS_VALID_SUPPORT_THRESHOLD 0.99998
-class Shape2DSW;
+class GodotShape2D;
-class ShapeOwner2DSW {
+class GodotShapeOwner2D {
public:
virtual void _shape_changed() = 0;
- virtual void remove_shape(Shape2DSW *p_shape) = 0;
+ virtual void remove_shape(GodotShape2D *p_shape) = 0;
- virtual ~ShapeOwner2DSW() {}
+ virtual ~GodotShapeOwner2D() {}
};
-class Shape2DSW {
+class GodotShape2D {
RID self;
Rect2 aabb;
bool configured = false;
real_t custom_bias = 0.0;
- Map<ShapeOwner2DSW *, int> owners;
+ Map<GodotShapeOwner2D *, int> owners;
protected:
void configure(const Rect2 &p_aabb);
@@ -83,10 +83,10 @@ public:
_FORCE_INLINE_ void set_custom_bias(real_t p_bias) { custom_bias = p_bias; }
_FORCE_INLINE_ real_t get_custom_bias() const { return custom_bias; }
- void add_owner(ShapeOwner2DSW *p_owner);
- void remove_owner(ShapeOwner2DSW *p_owner);
- bool is_owner(ShapeOwner2DSW *p_owner) const;
- const Map<ShapeOwner2DSW *, int> &get_owners() const;
+ void add_owner(GodotShapeOwner2D *p_owner);
+ void remove_owner(GodotShapeOwner2D *p_owner);
+ bool is_owner(GodotShapeOwner2D *p_owner) const;
+ const Map<GodotShapeOwner2D *, int> &get_owners() const;
_FORCE_INLINE_ void get_supports_transformed_cast(const Vector2 &p_cast, const Vector2 &p_normal, const Transform2D &p_xform, Vector2 *r_supports, int &r_amount) const {
get_supports(p_xform.basis_xform_inv(p_normal).normalized(), r_supports, r_amount);
@@ -121,8 +121,8 @@ public:
}
}
}
- Shape2DSW() {}
- virtual ~Shape2DSW();
+ GodotShape2D() {}
+ virtual ~GodotShape2D();
};
//let the optimizer do the magic
@@ -141,7 +141,7 @@ public:
r_max = MAX(maxa, maxb); \
}
-class WorldBoundaryShape2DSW : public Shape2DSW {
+class GodotWorldBoundaryShape2D : public GodotShape2D {
Vector2 normal;
real_t d = 0.0;
@@ -178,7 +178,7 @@ public:
}
};
-class SeparationRayShape2DSW : public Shape2DSW {
+class GodotSeparationRayShape2D : public GodotShape2D {
real_t length = 0.0;
bool slide_on_slope = false;
@@ -211,11 +211,11 @@ public:
DEFAULT_PROJECT_RANGE_CAST
- _FORCE_INLINE_ SeparationRayShape2DSW() {}
- _FORCE_INLINE_ SeparationRayShape2DSW(real_t p_length) { length = p_length; }
+ _FORCE_INLINE_ GodotSeparationRayShape2D() {}
+ _FORCE_INLINE_ GodotSeparationRayShape2D(real_t p_length) { length = p_length; }
};
-class SegmentShape2DSW : public Shape2DSW {
+class GodotSegmentShape2D : public GodotShape2D {
Vector2 a;
Vector2 b;
Vector2 n;
@@ -251,15 +251,15 @@ public:
DEFAULT_PROJECT_RANGE_CAST
- _FORCE_INLINE_ SegmentShape2DSW() {}
- _FORCE_INLINE_ SegmentShape2DSW(const Vector2 &p_a, const Vector2 &p_b, const Vector2 &p_n) {
+ _FORCE_INLINE_ GodotSegmentShape2D() {}
+ _FORCE_INLINE_ GodotSegmentShape2D(const Vector2 &p_a, const Vector2 &p_b, const Vector2 &p_n) {
a = p_a;
b = p_b;
n = p_n;
}
};
-class CircleShape2DSW : public Shape2DSW {
+class GodotCircleShape2D : public GodotShape2D {
real_t radius;
public:
@@ -292,7 +292,7 @@ public:
DEFAULT_PROJECT_RANGE_CAST
};
-class RectangleShape2DSW : public Shape2DSW {
+class GodotRectangleShape2D : public GodotShape2D {
Vector2 half_extents;
public:
@@ -336,7 +336,7 @@ public:
return (p_xform.xform(he) - p_circle).normalized();
}
- _FORCE_INLINE_ Vector2 get_box_axis(const Transform2D &p_xform, const Transform2D &p_xform_inv, const RectangleShape2DSW *p_B, const Transform2D &p_B_xform, const Transform2D &p_B_xform_inv) const {
+ _FORCE_INLINE_ Vector2 get_box_axis(const Transform2D &p_xform, const Transform2D &p_xform_inv, const GodotRectangleShape2D *p_B, const Transform2D &p_B_xform, const Transform2D &p_B_xform_inv) const {
Vector2 a, b;
{
@@ -364,7 +364,7 @@ public:
DEFAULT_PROJECT_RANGE_CAST
};
-class CapsuleShape2DSW : public Shape2DSW {
+class GodotCapsuleShape2D : public GodotShape2D {
real_t radius = 0.0;
real_t height = 0.0;
@@ -405,7 +405,7 @@ public:
DEFAULT_PROJECT_RANGE_CAST
};
-class ConvexPolygonShape2DSW : public Shape2DSW {
+class GodotConvexPolygonShape2D : public GodotShape2D {
struct Point {
Vector2 pos;
Vector2 normal; //normal to next segment
@@ -457,21 +457,21 @@ public:
DEFAULT_PROJECT_RANGE_CAST
- ConvexPolygonShape2DSW() {}
- ~ConvexPolygonShape2DSW();
+ GodotConvexPolygonShape2D() {}
+ ~GodotConvexPolygonShape2D();
};
-class ConcaveShape2DSW : public Shape2DSW {
+class GodotConcaveShape2D : public GodotShape2D {
public:
virtual bool is_concave() const override { return true; }
// Returns true to stop the query.
- typedef bool (*QueryCallback)(void *p_userdata, Shape2DSW *p_convex);
+ typedef bool (*QueryCallback)(void *p_userdata, GodotShape2D *p_convex);
virtual void cull(const Rect2 &p_local_aabb, QueryCallback p_callback, void *p_userdata) const = 0;
};
-class ConcavePolygonShape2DSW : public ConcaveShape2DSW {
+class GodotConcavePolygonShape2D : public GodotConcaveShape2D {
struct Segment {
int points[2] = {};
};
@@ -507,13 +507,13 @@ public:
virtual void project_rangev(const Vector2 &p_normal, const Transform2D &p_transform, real_t &r_min, real_t &r_max) const override {
r_min = 0;
r_max = 0;
- ERR_FAIL_MSG("Unsupported call to project_rangev in ConcavePolygonShape2DSW");
+ ERR_FAIL_MSG("Unsupported call to project_rangev in GodotConcavePolygonShape2D");
}
void project_range(const Vector2 &p_normal, const Transform2D &p_transform, real_t &r_min, real_t &r_max) const {
r_min = 0;
r_max = 0;
- ERR_FAIL_MSG("Unsupported call to project_range in ConcavePolygonShape2DSW");
+ ERR_FAIL_MSG("Unsupported call to project_range in GodotConcavePolygonShape2D");
}
virtual void get_supports(const Vector2 &p_normal, Vector2 *r_supports, int &r_amount) const override;
@@ -533,4 +533,4 @@ public:
#undef DEFAULT_PROJECT_RANGE_CAST
-#endif // SHAPE_2D_2DSW_H
+#endif // GODOT_SHAPE_2D_H
diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/godot_space_2d.cpp
index dd0780b5ff..d72014a8ed 100644
--- a/servers/physics_2d/space_2d_sw.cpp
+++ b/servers/physics_2d/godot_space_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* space_2d_sw.cpp */
+/* godot_space_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,32 +28,33 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "space_2d_sw.h"
+#include "godot_space_2d.h"
+
+#include "godot_collision_solver_2d.h"
+#include "godot_physics_server_2d.h"
-#include "collision_solver_2d_sw.h"
#include "core/os/os.h"
#include "core/templates/pair.h"
-#include "physics_server_2d_sw.h"
#define TEST_MOTION_MIN_CONTACT_DEPTH_FACTOR 0.05
-_FORCE_INLINE_ static bool _can_collide_with(CollisionObject2DSW *p_object, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+_FORCE_INLINE_ static bool _can_collide_with(GodotCollisionObject2D *p_object, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
if (!(p_object->get_collision_layer() & p_collision_mask)) {
return false;
}
- if (p_object->get_type() == CollisionObject2DSW::TYPE_AREA && !p_collide_with_areas) {
+ if (p_object->get_type() == GodotCollisionObject2D::TYPE_AREA && !p_collide_with_areas) {
return false;
}
- if (p_object->get_type() == CollisionObject2DSW::TYPE_BODY && !p_collide_with_bodies) {
+ if (p_object->get_type() == GodotCollisionObject2D::TYPE_BODY && !p_collide_with_bodies) {
return false;
}
return true;
}
-int PhysicsDirectSpaceState2DSW::_intersect_point_impl(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_point, bool p_filter_by_canvas, ObjectID p_canvas_instance_id) {
+int GodotPhysicsDirectSpaceState2D::_intersect_point_impl(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_point, bool p_filter_by_canvas, ObjectID p_canvas_instance_id) {
if (p_result_max <= 0) {
return 0;
}
@@ -62,7 +63,7 @@ int PhysicsDirectSpaceState2DSW::_intersect_point_impl(const Vector2 &p_point, S
aabb.position = p_point - Vector2(0.00001, 0.00001);
aabb.size = Vector2(0.00002, 0.00002);
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace2D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
int cc = 0;
@@ -75,7 +76,7 @@ int PhysicsDirectSpaceState2DSW::_intersect_point_impl(const Vector2 &p_point, S
continue;
}
- const CollisionObject2DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = space->intersection_query_results[i];
if (p_pick_point && !col_obj->is_pickable()) {
continue;
@@ -87,7 +88,7 @@ int PhysicsDirectSpaceState2DSW::_intersect_point_impl(const Vector2 &p_point, S
int shape_idx = space->intersection_query_subindex_results[i];
- Shape2DSW *shape = col_obj->get_shape(shape_idx);
+ GodotShape2D *shape = col_obj->get_shape(shape_idx);
Vector2 local_point = (col_obj->get_transform() * col_obj->get_shape_transform(shape_idx)).affine_inverse().xform(p_point);
@@ -112,15 +113,15 @@ int PhysicsDirectSpaceState2DSW::_intersect_point_impl(const Vector2 &p_point, S
return cc;
}
-int PhysicsDirectSpaceState2DSW::intersect_point(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_point) {
+int GodotPhysicsDirectSpaceState2D::intersect_point(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_point) {
return _intersect_point_impl(p_point, r_results, p_result_max, p_exclude, p_collision_mask, p_collide_with_bodies, p_collide_with_areas, p_pick_point);
}
-int PhysicsDirectSpaceState2DSW::intersect_point_on_canvas(const Vector2 &p_point, ObjectID p_canvas_instance_id, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_point) {
+int GodotPhysicsDirectSpaceState2D::intersect_point_on_canvas(const Vector2 &p_point, ObjectID p_canvas_instance_id, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_point) {
return _intersect_point_impl(p_point, r_results, p_result_max, p_exclude, p_collision_mask, p_collide_with_bodies, p_collide_with_areas, p_pick_point, true, p_canvas_instance_id);
}
-bool PhysicsDirectSpaceState2DSW::intersect_ray(const Vector2 &p_from, const Vector2 &p_to, RayResult &r_result, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+bool GodotPhysicsDirectSpaceState2D::intersect_ray(const Vector2 &p_from, const Vector2 &p_to, RayResult &r_result, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
ERR_FAIL_COND_V(space->locked, false);
Vector2 begin, end;
@@ -129,14 +130,14 @@ bool PhysicsDirectSpaceState2DSW::intersect_ray(const Vector2 &p_from, const Vec
end = p_to;
normal = (end - begin).normalized();
- int amount = space->broadphase->cull_segment(begin, end, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_segment(begin, end, space->intersection_query_results, GodotSpace2D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
//todo, create another array that references results, compute AABBs and check closest point to ray origin, sort, and stop evaluating results when beyond first collision
bool collided = false;
Vector2 res_point, res_normal;
int res_shape;
- const CollisionObject2DSW *res_obj;
+ const GodotCollisionObject2D *res_obj;
real_t min_d = 1e10;
for (int i = 0; i < amount; i++) {
@@ -148,7 +149,7 @@ bool PhysicsDirectSpaceState2DSW::intersect_ray(const Vector2 &p_from, const Vec
continue;
}
- const CollisionObject2DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = space->intersection_query_results[i];
int shape_idx = space->intersection_query_subindex_results[i];
Transform2D inv_xform = col_obj->get_shape_inv_transform(shape_idx) * col_obj->get_inv_transform();
@@ -162,7 +163,7 @@ bool PhysicsDirectSpaceState2DSW::intersect_ray(const Vector2 &p_from, const Vec
local_to = col_obj->get_inv_transform().xform(end);
local_to = col_obj->get_shape_inv_transform(shape_idx).xform(local_to);*/
- const Shape2DSW *shape = col_obj->get_shape(shape_idx);
+ const GodotShape2D *shape = col_obj->get_shape(shape_idx);
Vector2 shape_point, shape_normal;
@@ -199,18 +200,18 @@ bool PhysicsDirectSpaceState2DSW::intersect_ray(const Vector2 &p_from, const Vec
return true;
}
-int PhysicsDirectSpaceState2DSW::intersect_shape(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+int GodotPhysicsDirectSpaceState2D::intersect_shape(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
if (p_result_max <= 0) {
return 0;
}
- Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.get_or_null(p_shape);
+ GodotShape2D *shape = GodotPhysicsServer2D::godot_singleton->shape_owner.get_or_null(p_shape);
ERR_FAIL_COND_V(!shape, 0);
Rect2 aabb = p_xform.xform(shape->get_aabb());
aabb = aabb.grow(p_margin);
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace2D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
int cc = 0;
@@ -227,10 +228,10 @@ int PhysicsDirectSpaceState2DSW::intersect_shape(const RID &p_shape, const Trans
continue;
}
- const CollisionObject2DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = space->intersection_query_results[i];
int shape_idx = space->intersection_query_subindex_results[i];
- if (!CollisionSolver2DSW::solve(shape, p_xform, p_motion, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), Vector2(), nullptr, nullptr, nullptr, p_margin)) {
+ if (!GodotCollisionSolver2D::solve(shape, p_xform, p_motion, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), Vector2(), nullptr, nullptr, nullptr, p_margin)) {
continue;
}
@@ -247,15 +248,15 @@ int PhysicsDirectSpaceState2DSW::intersect_shape(const RID &p_shape, const Trans
return cc;
}
-bool PhysicsDirectSpaceState2DSW::cast_motion(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
- Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.get_or_null(p_shape);
+bool GodotPhysicsDirectSpaceState2D::cast_motion(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+ GodotShape2D *shape = GodotPhysicsServer2D::godot_singleton->shape_owner.get_or_null(p_shape);
ERR_FAIL_COND_V(!shape, false);
Rect2 aabb = p_xform.xform(shape->get_aabb());
aabb = aabb.merge(Rect2(aabb.position + p_motion, aabb.size)); //motion
aabb = aabb.grow(p_margin);
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace2D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
real_t best_safe = 1;
real_t best_unsafe = 1;
@@ -269,17 +270,17 @@ bool PhysicsDirectSpaceState2DSW::cast_motion(const RID &p_shape, const Transfor
continue; //ignore excluded
}
- const CollisionObject2DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = space->intersection_query_results[i];
int shape_idx = space->intersection_query_subindex_results[i];
Transform2D col_obj_xform = col_obj->get_transform() * col_obj->get_shape_transform(shape_idx);
//test initial overlap, does it collide if going all the way?
- if (!CollisionSolver2DSW::solve(shape, p_xform, p_motion, col_obj->get_shape(shape_idx), col_obj_xform, Vector2(), nullptr, nullptr, nullptr, p_margin)) {
+ if (!GodotCollisionSolver2D::solve(shape, p_xform, p_motion, col_obj->get_shape(shape_idx), col_obj_xform, Vector2(), nullptr, nullptr, nullptr, p_margin)) {
continue;
}
//test initial overlap, ignore objects it's inside of.
- if (CollisionSolver2DSW::solve(shape, p_xform, Vector2(), col_obj->get_shape(shape_idx), col_obj_xform, Vector2(), nullptr, nullptr, nullptr, p_margin)) {
+ if (GodotCollisionSolver2D::solve(shape, p_xform, Vector2(), col_obj->get_shape(shape_idx), col_obj_xform, Vector2(), nullptr, nullptr, nullptr, p_margin)) {
continue;
}
@@ -293,7 +294,7 @@ bool PhysicsDirectSpaceState2DSW::cast_motion(const RID &p_shape, const Transfor
real_t fraction = low + (hi - low) * fraction_coeff;
Vector2 sep = mnormal; //important optimization for this to work fast enough
- bool collided = CollisionSolver2DSW::solve(shape, p_xform, p_motion * fraction, col_obj->get_shape(shape_idx), col_obj_xform, Vector2(), nullptr, nullptr, &sep, p_margin);
+ bool collided = GodotCollisionSolver2D::solve(shape, p_xform, p_motion * fraction, col_obj->get_shape(shape_idx), col_obj_xform, Vector2(), nullptr, nullptr, &sep, p_margin);
if (collided) {
hi = fraction;
@@ -330,38 +331,38 @@ bool PhysicsDirectSpaceState2DSW::cast_motion(const RID &p_shape, const Transfor
return true;
}
-bool PhysicsDirectSpaceState2DSW::collide_shape(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, Vector2 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+bool GodotPhysicsDirectSpaceState2D::collide_shape(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, Vector2 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
if (p_result_max <= 0) {
return false;
}
- Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.get_or_null(p_shape);
+ GodotShape2D *shape = GodotPhysicsServer2D::godot_singleton->shape_owner.get_or_null(p_shape);
ERR_FAIL_COND_V(!shape, 0);
Rect2 aabb = p_shape_xform.xform(shape->get_aabb());
aabb = aabb.merge(Rect2(aabb.position + p_motion, aabb.size)); //motion
aabb = aabb.grow(p_margin);
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace2D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
bool collided = false;
r_result_count = 0;
- PhysicsServer2DSW::CollCbkData cbk;
+ GodotPhysicsServer2D::CollCbkData cbk;
cbk.max = p_result_max;
cbk.amount = 0;
cbk.passed = 0;
cbk.ptr = r_results;
- CollisionSolver2DSW::CallbackResult cbkres = PhysicsServer2DSW::_shape_col_cbk;
+ GodotCollisionSolver2D::CallbackResult cbkres = GodotPhysicsServer2D::_shape_col_cbk;
- PhysicsServer2DSW::CollCbkData *cbkptr = &cbk;
+ GodotPhysicsServer2D::CollCbkData *cbkptr = &cbk;
for (int i = 0; i < amount; i++) {
if (!_can_collide_with(space->intersection_query_results[i], p_collision_mask, p_collide_with_bodies, p_collide_with_areas)) {
continue;
}
- const CollisionObject2DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = space->intersection_query_results[i];
if (p_exclude.has(col_obj->get_self())) {
continue;
@@ -372,7 +373,7 @@ bool PhysicsDirectSpaceState2DSW::collide_shape(RID p_shape, const Transform2D &
cbk.valid_dir = Vector2();
cbk.valid_depth = 0;
- if (CollisionSolver2DSW::solve(shape, p_shape_xform, p_motion, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), Vector2(), cbkres, cbkptr, nullptr, p_margin)) {
+ if (GodotCollisionSolver2D::solve(shape, p_shape_xform, p_motion, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), Vector2(), cbkres, cbkptr, nullptr, p_margin)) {
collided = cbk.amount > 0;
}
}
@@ -383,8 +384,8 @@ bool PhysicsDirectSpaceState2DSW::collide_shape(RID p_shape, const Transform2D &
}
struct _RestCallbackData2D {
- const CollisionObject2DSW *object = nullptr;
- const CollisionObject2DSW *best_object = nullptr;
+ const GodotCollisionObject2D *object = nullptr;
+ const GodotCollisionObject2D *best_object = nullptr;
int local_shape = 0;
int best_local_shape = 0;
int shape = 0;
@@ -431,8 +432,8 @@ static void _rest_cbk_result(const Vector2 &p_point_A, const Vector2 &p_point_B,
rd->best_local_shape = rd->local_shape;
}
-bool PhysicsDirectSpaceState2DSW::rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
- Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.get_or_null(p_shape);
+bool GodotPhysicsDirectSpaceState2D::rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+ GodotShape2D *shape = GodotPhysicsServer2D::godot_singleton->shape_owner.get_or_null(p_shape);
ERR_FAIL_COND_V(!shape, 0);
real_t min_contact_depth = p_margin * TEST_MOTION_MIN_CONTACT_DEPTH_FACTOR;
@@ -441,7 +442,7 @@ bool PhysicsDirectSpaceState2DSW::rest_info(RID p_shape, const Transform2D &p_sh
aabb = aabb.merge(Rect2(aabb.position + p_motion, aabb.size)); //motion
aabb = aabb.grow(p_margin);
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace2D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
_RestCallbackData2D rcd;
rcd.best_len = 0;
@@ -454,7 +455,7 @@ bool PhysicsDirectSpaceState2DSW::rest_info(RID p_shape, const Transform2D &p_sh
continue;
}
- const CollisionObject2DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = space->intersection_query_results[i];
if (p_exclude.has(col_obj->get_self())) {
continue;
@@ -466,7 +467,7 @@ bool PhysicsDirectSpaceState2DSW::rest_info(RID p_shape, const Transform2D &p_sh
rcd.object = col_obj;
rcd.shape = shape_idx;
rcd.local_shape = 0;
- bool sc = CollisionSolver2DSW::solve(shape, p_shape_xform, p_motion, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), Vector2(), _rest_cbk_result, &rcd, nullptr, p_margin);
+ bool sc = GodotCollisionSolver2D::solve(shape, p_shape_xform, p_motion, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), Vector2(), _rest_cbk_result, &rcd, nullptr, p_margin);
if (!sc) {
continue;
}
@@ -481,8 +482,8 @@ bool PhysicsDirectSpaceState2DSW::rest_info(RID p_shape, const Transform2D &p_sh
r_info->normal = rcd.best_normal;
r_info->point = rcd.best_contact;
r_info->rid = rcd.best_object->get_self();
- if (rcd.best_object->get_type() == CollisionObject2DSW::TYPE_BODY) {
- const Body2DSW *body = static_cast<const Body2DSW *>(rcd.best_object);
+ if (rcd.best_object->get_type() == GodotCollisionObject2D::TYPE_BODY) {
+ const GodotBody2D *body = static_cast<const GodotBody2D *>(rcd.best_object);
Vector2 rel_vec = r_info->point - (body->get_transform().get_origin() + body->get_center_of_mass());
r_info->linear_velocity = Vector2(-body->get_angular_velocity() * rel_vec.y, body->get_angular_velocity() * rel_vec.x) + body->get_linear_velocity();
@@ -495,7 +496,7 @@ bool PhysicsDirectSpaceState2DSW::rest_info(RID p_shape, const Transform2D &p_sh
////////////////////////////////////////////////////////////////////////////////////////////////////////////
-int Space2DSW::_cull_aabb_for_body(Body2DSW *p_body, const Rect2 &p_aabb) {
+int GodotSpace2D::_cull_aabb_for_body(GodotBody2D *p_body, const Rect2 &p_aabb) {
int amount = broadphase->cull_aabb(p_aabb, intersection_query_results, INTERSECTION_QUERY_MAX, intersection_query_subindex_results);
for (int i = 0; i < amount; i++) {
@@ -503,11 +504,11 @@ int Space2DSW::_cull_aabb_for_body(Body2DSW *p_body, const Rect2 &p_aabb) {
if (intersection_query_results[i] == p_body) {
keep = false;
- } else if (intersection_query_results[i]->get_type() == CollisionObject2DSW::TYPE_AREA) {
+ } else if (intersection_query_results[i]->get_type() == GodotCollisionObject2D::TYPE_AREA) {
keep = false;
- } else if (!p_body->collides_with(static_cast<Body2DSW *>(intersection_query_results[i]))) {
+ } else if (!p_body->collides_with(static_cast<GodotBody2D *>(intersection_query_results[i]))) {
keep = false;
- } else if (static_cast<Body2DSW *>(intersection_query_results[i])->has_exception(p_body->get_self()) || p_body->has_exception(intersection_query_results[i]->get_self())) {
+ } else if (static_cast<GodotBody2D *>(intersection_query_results[i])->has_exception(p_body->get_self()) || p_body->has_exception(intersection_query_results[i]->get_self())) {
keep = false;
}
@@ -525,7 +526,7 @@ int Space2DSW::_cull_aabb_for_body(Body2DSW *p_body, const Rect2 &p_aabb) {
return amount;
}
-bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::MotionParameters &p_parameters, PhysicsServer2D::MotionResult *r_result) {
+bool GodotSpace2D::test_body_motion(GodotBody2D *p_body, const PhysicsServer2D::MotionParameters &p_parameters, PhysicsServer2D::MotionResult *r_result) {
//give me back regular physics engine logic
//this is madness
//and most people using this function will think
@@ -587,7 +588,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
Vector2 sr[max_results * 2];
do {
- PhysicsServer2DSW::CollCbkData cbk;
+ GodotPhysicsServer2D::CollCbkData cbk;
cbk.max = max_results;
cbk.amount = 0;
cbk.passed = 0;
@@ -595,8 +596,8 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
cbk.invalid_by_dir = 0;
excluded_shape_pair_count = 0; //last step is the one valid
- PhysicsServer2DSW::CollCbkData *cbkptr = &cbk;
- CollisionSolver2DSW::CallbackResult cbkres = PhysicsServer2DSW::_shape_col_cbk;
+ GodotPhysicsServer2D::CollCbkData *cbkptr = &cbk;
+ GodotCollisionSolver2D::CallbackResult cbkres = GodotPhysicsServer2D::_shape_col_cbk;
bool collided = false;
@@ -607,11 +608,11 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
continue;
}
- Shape2DSW *body_shape = p_body->get_shape(j);
+ GodotShape2D *body_shape = p_body->get_shape(j);
Transform2D body_shape_xform = body_transform * p_body->get_shape_transform(j);
for (int i = 0; i < amount; i++) {
- const CollisionObject2DSW *col_obj = intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = intersection_query_results[i];
if (p_parameters.exclude_bodies.has(col_obj->get_self())) {
continue;
}
@@ -630,8 +631,8 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
cbk.valid_depth = MAX(owc_margin, p_parameters.margin); //user specified, but never less than actual margin or it won't work
cbk.invalid_by_dir = 0;
- if (col_obj->get_type() == CollisionObject2DSW::TYPE_BODY) {
- const Body2DSW *b = static_cast<const Body2DSW *>(col_obj);
+ if (col_obj->get_type() == GodotCollisionObject2D::TYPE_BODY) {
+ const GodotBody2D *b = static_cast<const GodotBody2D *>(col_obj);
if (b->get_mode() == PhysicsServer2D::BODY_MODE_KINEMATIC || b->get_mode() == PhysicsServer2D::BODY_MODE_DYNAMIC) {
//fix for moving platforms (kinematic and dynamic), margin is increased by how much it moved in the given direction
Vector2 lv = b->get_linear_velocity();
@@ -651,8 +652,8 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
int current_passed = cbk.passed; //save how many points passed collision
bool did_collide = false;
- Shape2DSW *against_shape = col_obj->get_shape(shape_idx);
- if (CollisionSolver2DSW::solve(body_shape, body_shape_xform, Vector2(), against_shape, col_obj_shape_xform, Vector2(), cbkres, cbkptr, nullptr, p_parameters.margin)) {
+ GodotShape2D *against_shape = col_obj->get_shape(shape_idx);
+ if (GodotCollisionSolver2D::solve(body_shape, body_shape_xform, Vector2(), against_shape, col_obj_shape_xform, Vector2(), cbkres, cbkptr, nullptr, p_parameters.margin)) {
did_collide = cbk.passed > current_passed; //more passed, so collision actually existed
}
@@ -727,13 +728,13 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
continue;
}
- Shape2DSW *body_shape = p_body->get_shape(body_shape_idx);
+ GodotShape2D *body_shape = p_body->get_shape(body_shape_idx);
// Colliding separation rays allows to properly snap to the ground,
// otherwise it's not needed in regular motion.
if (!p_parameters.collide_separation_ray && (body_shape->get_type() == PhysicsServer2D::SHAPE_SEPARATION_RAY)) {
// When slide on slope is on, separation ray shape acts like a regular shape.
- if (!static_cast<SeparationRayShape2DSW *>(body_shape)->get_slide_on_slope()) {
+ if (!static_cast<GodotSeparationRayShape2D *>(body_shape)->get_slide_on_slope()) {
continue;
}
}
@@ -746,7 +747,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
real_t best_unsafe = 1;
for (int i = 0; i < amount; i++) {
- const CollisionObject2DSW *col_obj = intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = intersection_query_results[i];
if (p_parameters.exclude_bodies.has(col_obj->get_self())) {
continue;
}
@@ -755,7 +756,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
}
int col_shape_idx = intersection_query_subindex_results[i];
- Shape2DSW *against_shape = col_obj->get_shape(col_shape_idx);
+ GodotShape2D *against_shape = col_obj->get_shape(col_shape_idx);
bool excluded = false;
@@ -772,12 +773,12 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
Transform2D col_obj_shape_xform = col_obj->get_transform() * col_obj->get_shape_transform(col_shape_idx);
//test initial overlap, does it collide if going all the way?
- if (!CollisionSolver2DSW::solve(body_shape, body_shape_xform, p_parameters.motion, against_shape, col_obj_shape_xform, Vector2(), nullptr, nullptr, nullptr, 0)) {
+ if (!GodotCollisionSolver2D::solve(body_shape, body_shape_xform, p_parameters.motion, against_shape, col_obj_shape_xform, Vector2(), nullptr, nullptr, nullptr, 0)) {
continue;
}
//test initial overlap
- if (CollisionSolver2DSW::solve(body_shape, body_shape_xform, Vector2(), against_shape, col_obj_shape_xform, Vector2(), nullptr, nullptr, nullptr, 0)) {
+ if (GodotCollisionSolver2D::solve(body_shape, body_shape_xform, Vector2(), against_shape, col_obj_shape_xform, Vector2(), nullptr, nullptr, nullptr, 0)) {
if (body_shape->allows_one_way_collision() && col_obj->is_shape_set_as_one_way_collision(col_shape_idx)) {
Vector2 direction = col_obj_shape_xform.get_axis(1).normalized();
if (motion_normal.dot(direction) < 0) {
@@ -797,7 +798,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
real_t fraction = low + (hi - low) * fraction_coeff;
Vector2 sep = motion_normal; //important optimization for this to work fast enough
- bool collided = CollisionSolver2DSW::solve(body_shape, body_shape_xform, p_parameters.motion * fraction, against_shape, col_obj_shape_xform, Vector2(), nullptr, nullptr, &sep, 0);
+ bool collided = GodotCollisionSolver2D::solve(body_shape, body_shape_xform, p_parameters.motion * fraction, against_shape, col_obj_shape_xform, Vector2(), nullptr, nullptr, &sep, 0);
if (collided) {
hi = fraction;
@@ -824,7 +825,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
if (body_shape->allows_one_way_collision() && col_obj->is_shape_set_as_one_way_collision(col_shape_idx)) {
Vector2 cd[2];
- PhysicsServer2DSW::CollCbkData cbk;
+ GodotPhysicsServer2D::CollCbkData cbk;
cbk.max = 1;
cbk.amount = 0;
cbk.passed = 0;
@@ -834,7 +835,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
cbk.valid_depth = 10e20;
Vector2 sep = motion_normal; //important optimization for this to work fast enough
- bool collided = CollisionSolver2DSW::solve(body_shape, body_shape_xform, p_parameters.motion * (hi + contact_max_allowed_penetration), col_obj->get_shape(col_shape_idx), col_obj_shape_xform, Vector2(), PhysicsServer2DSW::_shape_col_cbk, &cbk, &sep, 0);
+ bool collided = GodotCollisionSolver2D::solve(body_shape, body_shape_xform, p_parameters.motion * (hi + contact_max_allowed_penetration), col_obj->get_shape(col_shape_idx), col_obj_shape_xform, Vector2(), GodotPhysicsServer2D::_shape_col_cbk, &cbk, &sep, 0);
if (!collided || cbk.amount == 0) {
continue;
}
@@ -891,14 +892,14 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
}
Transform2D body_shape_xform = ugt * p_body->get_shape_transform(j);
- Shape2DSW *body_shape = p_body->get_shape(j);
+ GodotShape2D *body_shape = p_body->get_shape(j);
body_aabb.position += p_parameters.motion * unsafe;
int amount = _cull_aabb_for_body(p_body, body_aabb);
for (int i = 0; i < amount; i++) {
- const CollisionObject2DSW *col_obj = intersection_query_results[i];
+ const GodotCollisionObject2D *col_obj = intersection_query_results[i];
if (p_parameters.exclude_bodies.has(col_obj->get_self())) {
continue;
}
@@ -908,7 +909,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
int shape_idx = intersection_query_subindex_results[i];
- Shape2DSW *against_shape = col_obj->get_shape(shape_idx);
+ GodotShape2D *against_shape = col_obj->get_shape(shape_idx);
bool excluded = false;
for (int k = 0; k < excluded_shape_pair_count; k++) {
@@ -929,8 +930,8 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
real_t owc_margin = col_obj->get_shape_one_way_collision_margin(shape_idx);
rcd.valid_depth = MAX(owc_margin, p_parameters.margin); //user specified, but never less than actual margin or it won't work
- if (col_obj->get_type() == CollisionObject2DSW::TYPE_BODY) {
- const Body2DSW *b = static_cast<const Body2DSW *>(col_obj);
+ if (col_obj->get_type() == GodotCollisionObject2D::TYPE_BODY) {
+ const GodotBody2D *b = static_cast<const GodotBody2D *>(col_obj);
if (b->get_mode() == PhysicsServer2D::BODY_MODE_KINEMATIC || b->get_mode() == PhysicsServer2D::BODY_MODE_DYNAMIC) {
//fix for moving platforms (kinematic and dynamic), margin is increased by how much it moved in the given direction
Vector2 lv = b->get_linear_velocity();
@@ -949,7 +950,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
rcd.object = col_obj;
rcd.shape = shape_idx;
rcd.local_shape = j;
- bool sc = CollisionSolver2DSW::solve(body_shape, body_shape_xform, Vector2(), against_shape, col_obj_shape_xform, Vector2(), _rest_cbk_result, &rcd, nullptr, p_parameters.margin);
+ bool sc = GodotCollisionSolver2D::solve(body_shape, body_shape_xform, Vector2(), against_shape, col_obj_shape_xform, Vector2(), _rest_cbk_result, &rcd, nullptr, p_parameters.margin);
if (!sc) {
continue;
}
@@ -968,7 +969,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
r_result->collision_safe_fraction = safe;
r_result->collision_unsafe_fraction = unsafe;
- const Body2DSW *body = static_cast<const Body2DSW *>(rcd.best_object);
+ const GodotBody2D *body = static_cast<const GodotBody2D *>(rcd.best_object);
Vector2 rel_vec = r_result->collision_point - (body->get_transform().get_origin() + body->get_center_of_mass());
r_result->collider_velocity = Vector2(-body->get_angular_velocity() * rel_vec.y, body->get_angular_velocity() * rel_vec.x) + body->get_linear_velocity();
@@ -990,134 +991,134 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const PhysicsServer2D::Motion
return collided;
}
-void *Space2DSW::_broadphase_pair(CollisionObject2DSW *A, int p_subindex_A, CollisionObject2DSW *B, int p_subindex_B, void *p_self) {
+void *GodotSpace2D::_broadphase_pair(GodotCollisionObject2D *A, int p_subindex_A, GodotCollisionObject2D *B, int p_subindex_B, void *p_self) {
if (!A->interacts_with(B)) {
return nullptr;
}
- CollisionObject2DSW::Type type_A = A->get_type();
- CollisionObject2DSW::Type type_B = B->get_type();
+ GodotCollisionObject2D::Type type_A = A->get_type();
+ GodotCollisionObject2D::Type type_B = B->get_type();
if (type_A > type_B) {
SWAP(A, B);
SWAP(p_subindex_A, p_subindex_B);
SWAP(type_A, type_B);
}
- Space2DSW *self = (Space2DSW *)p_self;
+ GodotSpace2D *self = (GodotSpace2D *)p_self;
self->collision_pairs++;
- if (type_A == CollisionObject2DSW::TYPE_AREA) {
- Area2DSW *area = static_cast<Area2DSW *>(A);
- if (type_B == CollisionObject2DSW::TYPE_AREA) {
- Area2DSW *area_b = static_cast<Area2DSW *>(B);
- Area2Pair2DSW *area2_pair = memnew(Area2Pair2DSW(area_b, p_subindex_B, area, p_subindex_A));
+ if (type_A == GodotCollisionObject2D::TYPE_AREA) {
+ GodotArea2D *area = static_cast<GodotArea2D *>(A);
+ if (type_B == GodotCollisionObject2D::TYPE_AREA) {
+ GodotArea2D *area_b = static_cast<GodotArea2D *>(B);
+ GodotArea2Pair2D *area2_pair = memnew(GodotArea2Pair2D(area_b, p_subindex_B, area, p_subindex_A));
return area2_pair;
} else {
- Body2DSW *body = static_cast<Body2DSW *>(B);
- AreaPair2DSW *area_pair = memnew(AreaPair2DSW(body, p_subindex_B, area, p_subindex_A));
+ GodotBody2D *body = static_cast<GodotBody2D *>(B);
+ GodotAreaPair2D *area_pair = memnew(GodotAreaPair2D(body, p_subindex_B, area, p_subindex_A));
return area_pair;
}
} else {
- BodyPair2DSW *b = memnew(BodyPair2DSW((Body2DSW *)A, p_subindex_A, (Body2DSW *)B, p_subindex_B));
+ GodotBodyPair2D *b = memnew(GodotBodyPair2D((GodotBody2D *)A, p_subindex_A, (GodotBody2D *)B, p_subindex_B));
return b;
}
return nullptr;
}
-void Space2DSW::_broadphase_unpair(CollisionObject2DSW *A, int p_subindex_A, CollisionObject2DSW *B, int p_subindex_B, void *p_data, void *p_self) {
+void GodotSpace2D::_broadphase_unpair(GodotCollisionObject2D *A, int p_subindex_A, GodotCollisionObject2D *B, int p_subindex_B, void *p_data, void *p_self) {
if (!p_data) {
return;
}
- Space2DSW *self = (Space2DSW *)p_self;
+ GodotSpace2D *self = (GodotSpace2D *)p_self;
self->collision_pairs--;
- Constraint2DSW *c = (Constraint2DSW *)p_data;
+ GodotConstraint2D *c = (GodotConstraint2D *)p_data;
memdelete(c);
}
-const SelfList<Body2DSW>::List &Space2DSW::get_active_body_list() const {
+const SelfList<GodotBody2D>::List &GodotSpace2D::get_active_body_list() const {
return active_list;
}
-void Space2DSW::body_add_to_active_list(SelfList<Body2DSW> *p_body) {
+void GodotSpace2D::body_add_to_active_list(SelfList<GodotBody2D> *p_body) {
active_list.add(p_body);
}
-void Space2DSW::body_remove_from_active_list(SelfList<Body2DSW> *p_body) {
+void GodotSpace2D::body_remove_from_active_list(SelfList<GodotBody2D> *p_body) {
active_list.remove(p_body);
}
-void Space2DSW::body_add_to_mass_properties_update_list(SelfList<Body2DSW> *p_body) {
+void GodotSpace2D::body_add_to_mass_properties_update_list(SelfList<GodotBody2D> *p_body) {
mass_properties_update_list.add(p_body);
}
-void Space2DSW::body_remove_from_mass_properties_update_list(SelfList<Body2DSW> *p_body) {
+void GodotSpace2D::body_remove_from_mass_properties_update_list(SelfList<GodotBody2D> *p_body) {
mass_properties_update_list.remove(p_body);
}
-BroadPhase2DSW *Space2DSW::get_broadphase() {
+GodotBroadPhase2D *GodotSpace2D::get_broadphase() {
return broadphase;
}
-void Space2DSW::add_object(CollisionObject2DSW *p_object) {
+void GodotSpace2D::add_object(GodotCollisionObject2D *p_object) {
ERR_FAIL_COND(objects.has(p_object));
objects.insert(p_object);
}
-void Space2DSW::remove_object(CollisionObject2DSW *p_object) {
+void GodotSpace2D::remove_object(GodotCollisionObject2D *p_object) {
ERR_FAIL_COND(!objects.has(p_object));
objects.erase(p_object);
}
-const Set<CollisionObject2DSW *> &Space2DSW::get_objects() const {
+const Set<GodotCollisionObject2D *> &GodotSpace2D::get_objects() const {
return objects;
}
-void Space2DSW::body_add_to_state_query_list(SelfList<Body2DSW> *p_body) {
+void GodotSpace2D::body_add_to_state_query_list(SelfList<GodotBody2D> *p_body) {
state_query_list.add(p_body);
}
-void Space2DSW::body_remove_from_state_query_list(SelfList<Body2DSW> *p_body) {
+void GodotSpace2D::body_remove_from_state_query_list(SelfList<GodotBody2D> *p_body) {
state_query_list.remove(p_body);
}
-void Space2DSW::area_add_to_monitor_query_list(SelfList<Area2DSW> *p_area) {
+void GodotSpace2D::area_add_to_monitor_query_list(SelfList<GodotArea2D> *p_area) {
monitor_query_list.add(p_area);
}
-void Space2DSW::area_remove_from_monitor_query_list(SelfList<Area2DSW> *p_area) {
+void GodotSpace2D::area_remove_from_monitor_query_list(SelfList<GodotArea2D> *p_area) {
monitor_query_list.remove(p_area);
}
-void Space2DSW::area_add_to_moved_list(SelfList<Area2DSW> *p_area) {
+void GodotSpace2D::area_add_to_moved_list(SelfList<GodotArea2D> *p_area) {
area_moved_list.add(p_area);
}
-void Space2DSW::area_remove_from_moved_list(SelfList<Area2DSW> *p_area) {
+void GodotSpace2D::area_remove_from_moved_list(SelfList<GodotArea2D> *p_area) {
area_moved_list.remove(p_area);
}
-const SelfList<Area2DSW>::List &Space2DSW::get_moved_area_list() const {
+const SelfList<GodotArea2D>::List &GodotSpace2D::get_moved_area_list() const {
return area_moved_list;
}
-void Space2DSW::call_queries() {
+void GodotSpace2D::call_queries() {
while (state_query_list.first()) {
- Body2DSW *b = state_query_list.first()->self();
+ GodotBody2D *b = state_query_list.first()->self();
state_query_list.remove(state_query_list.first());
b->call_queries();
}
while (monitor_query_list.first()) {
- Area2DSW *a = monitor_query_list.first()->self();
+ GodotArea2D *a = monitor_query_list.first()->self();
monitor_query_list.remove(monitor_query_list.first());
a->call_queries();
}
}
-void Space2DSW::setup() {
+void GodotSpace2D::setup() {
contact_debug_count = 0;
while (mass_properties_update_list.first()) {
@@ -1126,11 +1127,11 @@ void Space2DSW::setup() {
}
}
-void Space2DSW::update() {
+void GodotSpace2D::update() {
broadphase->update();
}
-void Space2DSW::set_param(PhysicsServer2D::SpaceParameter p_param, real_t p_value) {
+void GodotSpace2D::set_param(PhysicsServer2D::SpaceParameter p_param, real_t p_value) {
switch (p_param) {
case PhysicsServer2D::SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
contact_recycle_radius = p_value;
@@ -1156,7 +1157,7 @@ void Space2DSW::set_param(PhysicsServer2D::SpaceParameter p_param, real_t p_valu
}
}
-real_t Space2DSW::get_param(PhysicsServer2D::SpaceParameter p_param) const {
+real_t GodotSpace2D::get_param(PhysicsServer2D::SpaceParameter p_param) const {
switch (p_param) {
case PhysicsServer2D::SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
return contact_recycle_radius;
@@ -1176,37 +1177,37 @@ real_t Space2DSW::get_param(PhysicsServer2D::SpaceParameter p_param) const {
return 0;
}
-void Space2DSW::lock() {
+void GodotSpace2D::lock() {
locked = true;
}
-void Space2DSW::unlock() {
+void GodotSpace2D::unlock() {
locked = false;
}
-bool Space2DSW::is_locked() const {
+bool GodotSpace2D::is_locked() const {
return locked;
}
-PhysicsDirectSpaceState2DSW *Space2DSW::get_direct_state() {
+GodotPhysicsDirectSpaceState2D *GodotSpace2D::get_direct_state() {
return direct_access;
}
-Space2DSW::Space2DSW() {
+GodotSpace2D::GodotSpace2D() {
body_linear_velocity_sleep_threshold = GLOBAL_DEF("physics/2d/sleep_threshold_linear", 2.0);
body_angular_velocity_sleep_threshold = GLOBAL_DEF("physics/2d/sleep_threshold_angular", Math::deg2rad(8.0));
body_time_to_sleep = GLOBAL_DEF("physics/2d/time_before_sleep", 0.5);
ProjectSettings::get_singleton()->set_custom_property_info("physics/2d/time_before_sleep", PropertyInfo(Variant::FLOAT, "physics/2d/time_before_sleep", PROPERTY_HINT_RANGE, "0,5,0.01,or_greater"));
- broadphase = BroadPhase2DSW::create_func();
+ broadphase = GodotBroadPhase2D::create_func();
broadphase->set_pair_callback(_broadphase_pair, this);
broadphase->set_unpair_callback(_broadphase_unpair, this);
- direct_access = memnew(PhysicsDirectSpaceState2DSW);
+ direct_access = memnew(GodotPhysicsDirectSpaceState2D);
direct_access->space = this;
}
-Space2DSW::~Space2DSW() {
+GodotSpace2D::~GodotSpace2D() {
memdelete(broadphase);
memdelete(direct_access);
}
diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/godot_space_2d.h
index 746b5c6c9a..97e2928a9d 100644
--- a/servers/physics_2d/space_2d_sw.h
+++ b/servers/physics_2d/godot_space_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* space_2d_sw.h */
+/* godot_space_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,26 +28,27 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef SPACE_2D_SW_H
-#define SPACE_2D_SW_H
+#ifndef GODOT_SPACE_2D_H
+#define GODOT_SPACE_2D_H
+
+#include "godot_area_2d.h"
+#include "godot_area_pair_2d.h"
+#include "godot_body_2d.h"
+#include "godot_body_pair_2d.h"
+#include "godot_broad_phase_2d.h"
+#include "godot_collision_object_2d.h"
-#include "area_2d_sw.h"
-#include "area_pair_2d_sw.h"
-#include "body_2d_sw.h"
-#include "body_pair_2d_sw.h"
-#include "broad_phase_2d_sw.h"
-#include "collision_object_2d_sw.h"
#include "core/config/project_settings.h"
#include "core/templates/hash_map.h"
#include "core/typedefs.h"
-class PhysicsDirectSpaceState2DSW : public PhysicsDirectSpaceState2D {
- GDCLASS(PhysicsDirectSpaceState2DSW, PhysicsDirectSpaceState2D);
+class GodotPhysicsDirectSpaceState2D : public PhysicsDirectSpaceState2D {
+ GDCLASS(GodotPhysicsDirectSpaceState2D, PhysicsDirectSpaceState2D);
int _intersect_point_impl(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_point, bool p_filter_by_canvas = false, ObjectID p_canvas_instance_id = ObjectID());
public:
- Space2DSW *space = nullptr;
+ GodotSpace2D *space = nullptr;
virtual int intersect_point(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = UINT32_MAX, bool p_collide_with_bodies = true, bool p_collide_with_areas = false, bool p_pick_point = false) override;
virtual int intersect_point_on_canvas(const Vector2 &p_point, ObjectID p_canvas_instance_id, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = UINT32_MAX, bool p_collide_with_bodies = true, bool p_collide_with_areas = false, bool p_pick_point = false) override;
@@ -57,10 +58,10 @@ public:
virtual bool collide_shape(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, Vector2 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = UINT32_MAX, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
virtual bool rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = UINT32_MAX, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
- PhysicsDirectSpaceState2DSW() {}
+ GodotPhysicsDirectSpaceState2D() {}
};
-class Space2DSW {
+class GodotSpace2D {
public:
enum ElapsedTime {
ELAPSED_TIME_INTEGRATE_FORCES,
@@ -74,29 +75,29 @@ public:
private:
struct ExcludedShapeSW {
- Shape2DSW *local_shape = nullptr;
- const CollisionObject2DSW *against_object = nullptr;
+ GodotShape2D *local_shape = nullptr;
+ const GodotCollisionObject2D *against_object = nullptr;
int against_shape_index = 0;
};
uint64_t elapsed_time[ELAPSED_TIME_MAX] = {};
- PhysicsDirectSpaceState2DSW *direct_access = nullptr;
+ GodotPhysicsDirectSpaceState2D *direct_access = nullptr;
RID self;
- BroadPhase2DSW *broadphase;
- SelfList<Body2DSW>::List active_list;
- SelfList<Body2DSW>::List mass_properties_update_list;
- SelfList<Body2DSW>::List state_query_list;
- SelfList<Area2DSW>::List monitor_query_list;
- SelfList<Area2DSW>::List area_moved_list;
+ GodotBroadPhase2D *broadphase;
+ SelfList<GodotBody2D>::List active_list;
+ SelfList<GodotBody2D>::List mass_properties_update_list;
+ SelfList<GodotBody2D>::List state_query_list;
+ SelfList<GodotArea2D>::List monitor_query_list;
+ SelfList<GodotArea2D>::List area_moved_list;
- static void *_broadphase_pair(CollisionObject2DSW *A, int p_subindex_A, CollisionObject2DSW *B, int p_subindex_B, void *p_self);
- static void _broadphase_unpair(CollisionObject2DSW *A, int p_subindex_A, CollisionObject2DSW *B, int p_subindex_B, void *p_data, void *p_self);
+ static void *_broadphase_pair(GodotCollisionObject2D *A, int p_subindex_A, GodotCollisionObject2D *B, int p_subindex_B, void *p_self);
+ static void _broadphase_unpair(GodotCollisionObject2D *A, int p_subindex_A, GodotCollisionObject2D *B, int p_subindex_B, void *p_data, void *p_self);
- Set<CollisionObject2DSW *> objects;
+ Set<GodotCollisionObject2D *> objects;
- Area2DSW *area = nullptr;
+ GodotArea2D *area = nullptr;
real_t contact_recycle_radius = 1.0;
real_t contact_max_separation = 1.5;
@@ -107,7 +108,7 @@ private:
INTERSECTION_QUERY_MAX = 2048
};
- CollisionObject2DSW *intersection_query_results[INTERSECTION_QUERY_MAX];
+ GodotCollisionObject2D *intersection_query_results[INTERSECTION_QUERY_MAX];
int intersection_query_subindex_results[INTERSECTION_QUERY_MAX];
real_t body_linear_velocity_sleep_threshold = 0.0;
@@ -122,40 +123,40 @@ private:
int active_objects = 0;
int collision_pairs = 0;
- int _cull_aabb_for_body(Body2DSW *p_body, const Rect2 &p_aabb);
+ int _cull_aabb_for_body(GodotBody2D *p_body, const Rect2 &p_aabb);
Vector<Vector2> contact_debug;
int contact_debug_count = 0;
- friend class PhysicsDirectSpaceState2DSW;
+ friend class GodotPhysicsDirectSpaceState2D;
public:
_FORCE_INLINE_ void set_self(const RID &p_self) { self = p_self; }
_FORCE_INLINE_ RID get_self() const { return self; }
- void set_default_area(Area2DSW *p_area) { area = p_area; }
- Area2DSW *get_default_area() const { return area; }
+ void set_default_area(GodotArea2D *p_area) { area = p_area; }
+ GodotArea2D *get_default_area() const { return area; }
- const SelfList<Body2DSW>::List &get_active_body_list() const;
- void body_add_to_active_list(SelfList<Body2DSW> *p_body);
- void body_remove_from_active_list(SelfList<Body2DSW> *p_body);
- void body_add_to_mass_properties_update_list(SelfList<Body2DSW> *p_body);
- void body_remove_from_mass_properties_update_list(SelfList<Body2DSW> *p_body);
- void area_add_to_moved_list(SelfList<Area2DSW> *p_area);
- void area_remove_from_moved_list(SelfList<Area2DSW> *p_area);
- const SelfList<Area2DSW>::List &get_moved_area_list() const;
+ const SelfList<GodotBody2D>::List &get_active_body_list() const;
+ void body_add_to_active_list(SelfList<GodotBody2D> *p_body);
+ void body_remove_from_active_list(SelfList<GodotBody2D> *p_body);
+ void body_add_to_mass_properties_update_list(SelfList<GodotBody2D> *p_body);
+ void body_remove_from_mass_properties_update_list(SelfList<GodotBody2D> *p_body);
+ void area_add_to_moved_list(SelfList<GodotArea2D> *p_area);
+ void area_remove_from_moved_list(SelfList<GodotArea2D> *p_area);
+ const SelfList<GodotArea2D>::List &get_moved_area_list() const;
- void body_add_to_state_query_list(SelfList<Body2DSW> *p_body);
- void body_remove_from_state_query_list(SelfList<Body2DSW> *p_body);
+ void body_add_to_state_query_list(SelfList<GodotBody2D> *p_body);
+ void body_remove_from_state_query_list(SelfList<GodotBody2D> *p_body);
- void area_add_to_monitor_query_list(SelfList<Area2DSW> *p_area);
- void area_remove_from_monitor_query_list(SelfList<Area2DSW> *p_area);
+ void area_add_to_monitor_query_list(SelfList<GodotArea2D> *p_area);
+ void area_remove_from_monitor_query_list(SelfList<GodotArea2D> *p_area);
- BroadPhase2DSW *get_broadphase();
+ GodotBroadPhase2D *get_broadphase();
- void add_object(CollisionObject2DSW *p_object);
- void remove_object(CollisionObject2DSW *p_object);
- const Set<CollisionObject2DSW *> &get_objects() const;
+ void add_object(GodotCollisionObject2D *p_object);
+ void remove_object(GodotCollisionObject2D *p_object);
+ const Set<GodotCollisionObject2D *> &get_objects() const;
_FORCE_INLINE_ real_t get_contact_recycle_radius() const { return contact_recycle_radius; }
_FORCE_INLINE_ real_t get_contact_max_separation() const { return contact_max_separation; }
@@ -187,7 +188,7 @@ public:
int get_collision_pairs() const { return collision_pairs; }
- bool test_body_motion(Body2DSW *p_body, const PhysicsServer2D::MotionParameters &p_parameters, PhysicsServer2D::MotionResult *r_result);
+ bool test_body_motion(GodotBody2D *p_body, const PhysicsServer2D::MotionParameters &p_parameters, PhysicsServer2D::MotionResult *r_result);
void set_debug_contacts(int p_amount) { contact_debug.resize(p_amount); }
_FORCE_INLINE_ bool is_debugging_contacts() const { return !contact_debug.is_empty(); }
@@ -199,13 +200,13 @@ public:
_FORCE_INLINE_ Vector<Vector2> get_debug_contacts() { return contact_debug; }
_FORCE_INLINE_ int get_debug_contact_count() { return contact_debug_count; }
- PhysicsDirectSpaceState2DSW *get_direct_state();
+ GodotPhysicsDirectSpaceState2D *get_direct_state();
void set_elapsed_time(ElapsedTime p_time, uint64_t p_msec) { elapsed_time[p_time] = p_msec; }
uint64_t get_elapsed_time(ElapsedTime p_time) const { return elapsed_time[p_time]; }
- Space2DSW();
- ~Space2DSW();
+ GodotSpace2D();
+ ~GodotSpace2D();
};
-#endif // SPACE_2D_SW_H
+#endif // GODOT_SPACE_2D_H
diff --git a/servers/physics_2d/step_2d_sw.cpp b/servers/physics_2d/godot_step_2d.cpp
index a03e30f850..3010315571 100644
--- a/servers/physics_2d/step_2d_sw.cpp
+++ b/servers/physics_2d/godot_step_2d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* step_2d_sw.cpp */
+/* godot_step_2d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,7 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "step_2d_sw.h"
+#include "godot_step_2d.h"
#include "core/os/os.h"
@@ -38,7 +38,7 @@
#define ISLAND_SIZE_RESERVE 512
#define CONSTRAINT_COUNT_RESERVE 1024
-void Step2DSW::_populate_island(Body2DSW *p_body, LocalVector<Body2DSW *> &p_body_island, LocalVector<Constraint2DSW *> &p_constraint_island) {
+void GodotStep2D::_populate_island(GodotBody2D *p_body, LocalVector<GodotBody2D *> &p_body_island, LocalVector<GodotConstraint2D *> &p_constraint_island) {
p_body->set_island_step(_step);
if (p_body->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC) {
@@ -46,8 +46,8 @@ void Step2DSW::_populate_island(Body2DSW *p_body, LocalVector<Body2DSW *> &p_bod
p_body_island.push_back(p_body);
}
- for (const Pair<Constraint2DSW *, int> &E : p_body->get_constraint_list()) {
- Constraint2DSW *constraint = (Constraint2DSW *)E.first;
+ for (const Pair<GodotConstraint2D *, int> &E : p_body->get_constraint_list()) {
+ GodotConstraint2D *constraint = (GodotConstraint2D *)E.first;
if (constraint->get_island_step() == _step) {
continue; // Already processed.
}
@@ -59,7 +59,7 @@ void Step2DSW::_populate_island(Body2DSW *p_body, LocalVector<Body2DSW *> &p_bod
if (i == E.second) {
continue;
}
- Body2DSW *other_body = constraint->get_body_ptr()[i];
+ GodotBody2D *other_body = constraint->get_body_ptr()[i];
if (other_body->get_island_step() == _step) {
continue; // Already processed.
}
@@ -71,16 +71,16 @@ void Step2DSW::_populate_island(Body2DSW *p_body, LocalVector<Body2DSW *> &p_bod
}
}
-void Step2DSW::_setup_contraint(uint32_t p_constraint_index, void *p_userdata) {
- Constraint2DSW *constraint = all_constraints[p_constraint_index];
+void GodotStep2D::_setup_contraint(uint32_t p_constraint_index, void *p_userdata) {
+ GodotConstraint2D *constraint = all_constraints[p_constraint_index];
constraint->setup(delta);
}
-void Step2DSW::_pre_solve_island(LocalVector<Constraint2DSW *> &p_constraint_island) const {
+void GodotStep2D::_pre_solve_island(LocalVector<GodotConstraint2D *> &p_constraint_island) const {
uint32_t constraint_count = p_constraint_island.size();
uint32_t valid_constraint_count = 0;
for (uint32_t constraint_index = 0; constraint_index < constraint_count; ++constraint_index) {
- Constraint2DSW *constraint = p_constraint_island[constraint_index];
+ GodotConstraint2D *constraint = p_constraint_island[constraint_index];
if (p_constraint_island[constraint_index]->pre_solve(delta)) {
// Keep this constraint for solving.
p_constraint_island[valid_constraint_count++] = constraint;
@@ -89,8 +89,8 @@ void Step2DSW::_pre_solve_island(LocalVector<Constraint2DSW *> &p_constraint_isl
p_constraint_island.resize(valid_constraint_count);
}
-void Step2DSW::_solve_island(uint32_t p_island_index, void *p_userdata) const {
- const LocalVector<Constraint2DSW *> &constraint_island = constraint_islands[p_island_index];
+void GodotStep2D::_solve_island(uint32_t p_island_index, void *p_userdata) const {
+ const LocalVector<GodotConstraint2D *> &constraint_island = constraint_islands[p_island_index];
for (int i = 0; i < iterations; i++) {
uint32_t constraint_count = constraint_island.size();
@@ -100,12 +100,12 @@ void Step2DSW::_solve_island(uint32_t p_island_index, void *p_userdata) const {
}
}
-void Step2DSW::_check_suspend(LocalVector<Body2DSW *> &p_body_island) const {
+void GodotStep2D::_check_suspend(LocalVector<GodotBody2D *> &p_body_island) const {
bool can_sleep = true;
uint32_t body_count = p_body_island.size();
for (uint32_t body_index = 0; body_index < body_count; ++body_index) {
- Body2DSW *body = p_body_island[body_index];
+ GodotBody2D *body = p_body_island[body_index];
if (!body->sleep_test(delta)) {
can_sleep = false;
@@ -114,7 +114,7 @@ void Step2DSW::_check_suspend(LocalVector<Body2DSW *> &p_body_island) const {
// Put all to sleep or wake up everyone.
for (uint32_t body_index = 0; body_index < body_count; ++body_index) {
- Body2DSW *body = p_body_island[body_index];
+ GodotBody2D *body = p_body_island[body_index];
bool active = body->is_active();
@@ -124,7 +124,7 @@ void Step2DSW::_check_suspend(LocalVector<Body2DSW *> &p_body_island) const {
}
}
-void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
+void GodotStep2D::step(GodotSpace2D *p_space, real_t p_delta, int p_iterations) {
p_space->lock(); // can't access space during this
p_space->setup(); //update inertias, etc
@@ -134,7 +134,7 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
iterations = p_iterations;
delta = p_delta;
- const SelfList<Body2DSW>::List *body_list = &p_space->get_active_body_list();
+ const SelfList<GodotBody2D>::List *body_list = &p_space->get_active_body_list();
/* INTEGRATE FORCES */
@@ -143,7 +143,7 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
int active_count = 0;
- const SelfList<Body2DSW> *b = body_list->first();
+ const SelfList<GodotBody2D> *b = body_list->first();
while (b) {
b->self()->integrate_forces(p_delta);
b = b->next();
@@ -154,7 +154,7 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space2DSW::ELAPSED_TIME_INTEGRATE_FORCES, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace2D::ELAPSED_TIME_INTEGRATE_FORCES, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
@@ -162,11 +162,11 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
uint32_t island_count = 0;
- const SelfList<Area2DSW>::List &aml = p_space->get_moved_area_list();
+ const SelfList<GodotArea2D>::List &aml = p_space->get_moved_area_list();
while (aml.first()) {
- for (const Set<Constraint2DSW *>::Element *E = aml.first()->self()->get_constraints().front(); E; E = E->next()) {
- Constraint2DSW *constraint = E->get();
+ for (const Set<GodotConstraint2D *>::Element *E = aml.first()->self()->get_constraints().front(); E; E = E->next()) {
+ GodotConstraint2D *constraint = E->get();
if (constraint->get_island_step() == _step) {
continue;
}
@@ -177,13 +177,13 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
if (constraint_islands.size() < island_count) {
constraint_islands.resize(island_count);
}
- LocalVector<Constraint2DSW *> &constraint_island = constraint_islands[island_count - 1];
+ LocalVector<GodotConstraint2D *> &constraint_island = constraint_islands[island_count - 1];
constraint_island.clear();
all_constraints.push_back(constraint);
constraint_island.push_back(constraint);
}
- p_space->area_remove_from_moved_list((SelfList<Area2DSW> *)aml.first()); //faster to remove here
+ p_space->area_remove_from_moved_list((SelfList<GodotArea2D> *)aml.first()); //faster to remove here
}
/* GENERATE CONSTRAINT ISLANDS FOR ACTIVE RIGID BODIES */
@@ -193,14 +193,14 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
uint32_t body_island_count = 0;
while (b) {
- Body2DSW *body = b->self();
+ GodotBody2D *body = b->self();
if (body->get_island_step() != _step) {
++body_island_count;
if (body_islands.size() < body_island_count) {
body_islands.resize(body_island_count);
}
- LocalVector<Body2DSW *> &body_island = body_islands[body_island_count - 1];
+ LocalVector<GodotBody2D *> &body_island = body_islands[body_island_count - 1];
body_island.clear();
body_island.reserve(BODY_ISLAND_SIZE_RESERVE);
@@ -208,7 +208,7 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
if (constraint_islands.size() < island_count) {
constraint_islands.resize(island_count);
}
- LocalVector<Constraint2DSW *> &constraint_island = constraint_islands[island_count - 1];
+ LocalVector<GodotConstraint2D *> &constraint_island = constraint_islands[island_count - 1];
constraint_island.clear();
constraint_island.reserve(ISLAND_SIZE_RESERVE);
@@ -229,18 +229,18 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space2DSW::ELAPSED_TIME_GENERATE_ISLANDS, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace2D::ELAPSED_TIME_GENERATE_ISLANDS, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
/* SETUP CONSTRAINTS / PROCESS COLLISIONS */
uint32_t total_contraint_count = all_constraints.size();
- work_pool.do_work(total_contraint_count, this, &Step2DSW::_setup_contraint, nullptr);
+ work_pool.do_work(total_contraint_count, this, &GodotStep2D::_setup_contraint, nullptr);
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space2DSW::ELAPSED_TIME_SETUP_CONSTRAINTS, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace2D::ELAPSED_TIME_SETUP_CONSTRAINTS, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
@@ -256,14 +256,14 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
// Warning: _solve_island modifies the constraint islands for optimization purpose,
// their content is not reliable after these calls and shouldn't be used anymore.
if (island_count > 1) {
- work_pool.do_work(island_count, this, &Step2DSW::_solve_island, nullptr);
+ work_pool.do_work(island_count, this, &GodotStep2D::_solve_island, nullptr);
} else if (island_count > 0) {
_solve_island(0);
}
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space2DSW::ELAPSED_TIME_SOLVE_CONSTRAINTS, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace2D::ELAPSED_TIME_SOLVE_CONSTRAINTS, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
@@ -271,7 +271,7 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
b = body_list->first();
while (b) {
- const SelfList<Body2DSW> *n = b->next();
+ const SelfList<GodotBody2D> *n = b->next();
b->self()->integrate_velocities(p_delta);
b = n; // in case it shuts itself down
}
@@ -284,7 +284,7 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space2DSW::ELAPSED_TIME_INTEGRATE_VELOCITIES, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace2D::ELAPSED_TIME_INTEGRATE_VELOCITIES, profile_endtime - profile_begtime);
//profile_begtime=profile_endtime;
}
@@ -295,7 +295,7 @@ void Step2DSW::step(Space2DSW *p_space, real_t p_delta, int p_iterations) {
_step++;
}
-Step2DSW::Step2DSW() {
+GodotStep2D::GodotStep2D() {
body_islands.reserve(BODY_ISLAND_COUNT_RESERVE);
constraint_islands.reserve(ISLAND_COUNT_RESERVE);
all_constraints.reserve(CONSTRAINT_COUNT_RESERVE);
@@ -303,6 +303,6 @@ Step2DSW::Step2DSW() {
work_pool.init();
}
-Step2DSW::~Step2DSW() {
+GodotStep2D::~GodotStep2D() {
work_pool.finish();
}
diff --git a/servers/physics_2d/step_2d_sw.h b/servers/physics_2d/godot_step_2d.h
index de8e76cc99..efec243632 100644
--- a/servers/physics_2d/step_2d_sw.h
+++ b/servers/physics_2d/godot_step_2d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* step_2d_sw.h */
+/* godot_step_2d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,15 +28,15 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef STEP_2D_SW_H
-#define STEP_2D_SW_H
+#ifndef GODOT_STEP_2D_H
+#define GODOT_STEP_2D_H
-#include "space_2d_sw.h"
+#include "godot_space_2d.h"
#include "core/templates/local_vector.h"
#include "core/templates/thread_work_pool.h"
-class Step2DSW {
+class GodotStep2D {
uint64_t _step = 1;
int iterations = 0;
@@ -44,20 +44,20 @@ class Step2DSW {
ThreadWorkPool work_pool;
- LocalVector<LocalVector<Body2DSW *>> body_islands;
- LocalVector<LocalVector<Constraint2DSW *>> constraint_islands;
- LocalVector<Constraint2DSW *> all_constraints;
+ LocalVector<LocalVector<GodotBody2D *>> body_islands;
+ LocalVector<LocalVector<GodotConstraint2D *>> constraint_islands;
+ LocalVector<GodotConstraint2D *> all_constraints;
- void _populate_island(Body2DSW *p_body, LocalVector<Body2DSW *> &p_body_island, LocalVector<Constraint2DSW *> &p_constraint_island);
+ void _populate_island(GodotBody2D *p_body, LocalVector<GodotBody2D *> &p_body_island, LocalVector<GodotConstraint2D *> &p_constraint_island);
void _setup_contraint(uint32_t p_constraint_index, void *p_userdata = nullptr);
- void _pre_solve_island(LocalVector<Constraint2DSW *> &p_constraint_island) const;
+ void _pre_solve_island(LocalVector<GodotConstraint2D *> &p_constraint_island) const;
void _solve_island(uint32_t p_island_index, void *p_userdata = nullptr) const;
- void _check_suspend(LocalVector<Body2DSW *> &p_body_island) const;
+ void _check_suspend(LocalVector<GodotBody2D *> &p_body_island) const;
public:
- void step(Space2DSW *p_space, real_t p_delta, int p_iterations);
- Step2DSW();
- ~Step2DSW();
+ void step(GodotSpace2D *p_space, real_t p_delta, int p_iterations);
+ GodotStep2D();
+ ~GodotStep2D();
};
-#endif // STEP_2D_SW_H
+#endif // GODOT_STEP_2D_H
diff --git a/servers/physics_2d/physics_server_2d_sw.cpp b/servers/physics_2d/physics_server_2d_sw.cpp
deleted file mode 100644
index c2205e33b0..0000000000
--- a/servers/physics_2d/physics_server_2d_sw.cpp
+++ /dev/null
@@ -1,1349 +0,0 @@
-/*************************************************************************/
-/* physics_server_2d_sw.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (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 "physics_server_2d_sw.h"
-
-#include "body_direct_state_2d_sw.h"
-#include "broad_phase_2d_bvh.h"
-#include "collision_solver_2d_sw.h"
-#include "core/config/project_settings.h"
-#include "core/debugger/engine_debugger.h"
-#include "core/os/os.h"
-
-#define FLUSH_QUERY_CHECK(m_object) \
- ERR_FAIL_COND_MSG(m_object->get_space() && flushing_queries, "Can't change this state while flushing queries. Use call_deferred() or set_deferred() to change monitoring state instead.");
-
-RID PhysicsServer2DSW::_shape_create(ShapeType p_shape) {
- Shape2DSW *shape = nullptr;
- switch (p_shape) {
- case SHAPE_WORLD_BOUNDARY: {
- shape = memnew(WorldBoundaryShape2DSW);
- } break;
- case SHAPE_SEPARATION_RAY: {
- shape = memnew(SeparationRayShape2DSW);
- } break;
- case SHAPE_SEGMENT: {
- shape = memnew(SegmentShape2DSW);
- } break;
- case SHAPE_CIRCLE: {
- shape = memnew(CircleShape2DSW);
- } break;
- case SHAPE_RECTANGLE: {
- shape = memnew(RectangleShape2DSW);
- } break;
- case SHAPE_CAPSULE: {
- shape = memnew(CapsuleShape2DSW);
- } break;
- case SHAPE_CONVEX_POLYGON: {
- shape = memnew(ConvexPolygonShape2DSW);
- } break;
- case SHAPE_CONCAVE_POLYGON: {
- shape = memnew(ConcavePolygonShape2DSW);
- } break;
- case SHAPE_CUSTOM: {
- ERR_FAIL_V(RID());
-
- } break;
- }
-
- RID id = shape_owner.make_rid(shape);
- shape->set_self(id);
-
- return id;
-}
-
-RID PhysicsServer2DSW::world_boundary_shape_create() {
- return _shape_create(SHAPE_WORLD_BOUNDARY);
-}
-
-RID PhysicsServer2DSW::separation_ray_shape_create() {
- return _shape_create(SHAPE_SEPARATION_RAY);
-}
-
-RID PhysicsServer2DSW::segment_shape_create() {
- return _shape_create(SHAPE_SEGMENT);
-}
-
-RID PhysicsServer2DSW::circle_shape_create() {
- return _shape_create(SHAPE_CIRCLE);
-}
-
-RID PhysicsServer2DSW::rectangle_shape_create() {
- return _shape_create(SHAPE_RECTANGLE);
-}
-
-RID PhysicsServer2DSW::capsule_shape_create() {
- return _shape_create(SHAPE_CAPSULE);
-}
-
-RID PhysicsServer2DSW::convex_polygon_shape_create() {
- return _shape_create(SHAPE_CONVEX_POLYGON);
-}
-
-RID PhysicsServer2DSW::concave_polygon_shape_create() {
- return _shape_create(SHAPE_CONCAVE_POLYGON);
-}
-
-void PhysicsServer2DSW::shape_set_data(RID p_shape, const Variant &p_data) {
- Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
- shape->set_data(p_data);
-};
-
-void PhysicsServer2DSW::shape_set_custom_solver_bias(RID p_shape, real_t p_bias) {
- Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
- shape->set_custom_bias(p_bias);
-}
-
-PhysicsServer2D::ShapeType PhysicsServer2DSW::shape_get_type(RID p_shape) const {
- const Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND_V(!shape, SHAPE_CUSTOM);
- return shape->get_type();
-};
-
-Variant PhysicsServer2DSW::shape_get_data(RID p_shape) const {
- const Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND_V(!shape, Variant());
- ERR_FAIL_COND_V(!shape->is_configured(), Variant());
- return shape->get_data();
-};
-
-real_t PhysicsServer2DSW::shape_get_custom_solver_bias(RID p_shape) const {
- const Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND_V(!shape, 0);
- return shape->get_custom_bias();
-}
-
-void PhysicsServer2DSW::_shape_col_cbk(const Vector2 &p_point_A, const Vector2 &p_point_B, void *p_userdata) {
- CollCbkData *cbk = (CollCbkData *)p_userdata;
-
- if (cbk->max == 0) {
- return;
- }
-
- Vector2 rel_dir = (p_point_A - p_point_B);
- real_t rel_length2 = rel_dir.length_squared();
- if (cbk->valid_dir != Vector2()) {
- if (cbk->valid_depth < 10e20) {
- if (rel_length2 > cbk->valid_depth * cbk->valid_depth ||
- (rel_length2 > CMP_EPSILON && cbk->valid_dir.dot(rel_dir.normalized()) < CMP_EPSILON)) {
- cbk->invalid_by_dir++;
- return;
- }
- } else {
- if (rel_length2 > 0 && cbk->valid_dir.dot(rel_dir.normalized()) < CMP_EPSILON) {
- return;
- }
- }
- }
-
- if (cbk->amount == cbk->max) {
- //find least deep
- real_t min_depth = 1e20;
- int min_depth_idx = 0;
- for (int i = 0; i < cbk->amount; i++) {
- real_t d = cbk->ptr[i * 2 + 0].distance_squared_to(cbk->ptr[i * 2 + 1]);
- if (d < min_depth) {
- min_depth = d;
- min_depth_idx = i;
- }
- }
-
- if (rel_length2 < min_depth) {
- return;
- }
- cbk->ptr[min_depth_idx * 2 + 0] = p_point_A;
- cbk->ptr[min_depth_idx * 2 + 1] = p_point_B;
- cbk->passed++;
-
- } else {
- cbk->ptr[cbk->amount * 2 + 0] = p_point_A;
- cbk->ptr[cbk->amount * 2 + 1] = p_point_B;
- cbk->amount++;
- cbk->passed++;
- }
-}
-
-bool PhysicsServer2DSW::shape_collide(RID p_shape_A, const Transform2D &p_xform_A, const Vector2 &p_motion_A, RID p_shape_B, const Transform2D &p_xform_B, const Vector2 &p_motion_B, Vector2 *r_results, int p_result_max, int &r_result_count) {
- Shape2DSW *shape_A = shape_owner.get_or_null(p_shape_A);
- ERR_FAIL_COND_V(!shape_A, false);
- Shape2DSW *shape_B = shape_owner.get_or_null(p_shape_B);
- ERR_FAIL_COND_V(!shape_B, false);
-
- if (p_result_max == 0) {
- return CollisionSolver2DSW::solve(shape_A, p_xform_A, p_motion_A, shape_B, p_xform_B, p_motion_B, nullptr, nullptr);
- }
-
- CollCbkData cbk;
- cbk.max = p_result_max;
- cbk.amount = 0;
- cbk.passed = 0;
- cbk.ptr = r_results;
-
- bool res = CollisionSolver2DSW::solve(shape_A, p_xform_A, p_motion_A, shape_B, p_xform_B, p_motion_B, _shape_col_cbk, &cbk);
- r_result_count = cbk.amount;
- return res;
-}
-
-RID PhysicsServer2DSW::space_create() {
- Space2DSW *space = memnew(Space2DSW);
- RID id = space_owner.make_rid(space);
- space->set_self(id);
- RID area_id = area_create();
- Area2DSW *area = area_owner.get_or_null(area_id);
- ERR_FAIL_COND_V(!area, RID());
- space->set_default_area(area);
- area->set_space(space);
- area->set_priority(-1);
-
- return id;
-};
-
-void PhysicsServer2DSW::space_set_active(RID p_space, bool p_active) {
- Space2DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- if (p_active) {
- active_spaces.insert(space);
- } else {
- active_spaces.erase(space);
- }
-}
-
-bool PhysicsServer2DSW::space_is_active(RID p_space) const {
- const Space2DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, false);
-
- return active_spaces.has(space);
-}
-
-void PhysicsServer2DSW::space_set_param(RID p_space, SpaceParameter p_param, real_t p_value) {
- Space2DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
-
- space->set_param(p_param, p_value);
-}
-
-real_t PhysicsServer2DSW::space_get_param(RID p_space, SpaceParameter p_param) const {
- const Space2DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, 0);
- return space->get_param(p_param);
-}
-
-void PhysicsServer2DSW::space_set_debug_contacts(RID p_space, int p_max_contacts) {
- Space2DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- space->set_debug_contacts(p_max_contacts);
-}
-
-Vector<Vector2> PhysicsServer2DSW::space_get_contacts(RID p_space) const {
- Space2DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, Vector<Vector2>());
- return space->get_debug_contacts();
-}
-
-int PhysicsServer2DSW::space_get_contact_count(RID p_space) const {
- Space2DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, 0);
- return space->get_debug_contact_count();
-}
-
-PhysicsDirectSpaceState2D *PhysicsServer2DSW::space_get_direct_state(RID p_space) {
- Space2DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, nullptr);
- ERR_FAIL_COND_V_MSG((using_threads && !doing_sync) || space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification.");
-
- return space->get_direct_state();
-}
-
-RID PhysicsServer2DSW::area_create() {
- Area2DSW *area = memnew(Area2DSW);
- RID rid = area_owner.make_rid(area);
- area->set_self(rid);
- return rid;
-};
-
-void PhysicsServer2DSW::area_set_space(RID p_area, RID p_space) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- Space2DSW *space = nullptr;
- if (p_space.is_valid()) {
- space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- }
-
- if (area->get_space() == space) {
- return; //pointless
- }
-
- area->clear_constraints();
- area->set_space(space);
-};
-
-RID PhysicsServer2DSW::area_get_space(RID p_area) const {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, RID());
-
- Space2DSW *space = area->get_space();
- if (!space) {
- return RID();
- }
- return space->get_self();
-};
-
-void PhysicsServer2DSW::area_set_space_override_mode(RID p_area, AreaSpaceOverrideMode p_mode) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_space_override_mode(p_mode);
-}
-
-PhysicsServer2D::AreaSpaceOverrideMode PhysicsServer2DSW::area_get_space_override_mode(RID p_area) const {
- const Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, AREA_SPACE_OVERRIDE_DISABLED);
-
- return area->get_space_override_mode();
-}
-
-void PhysicsServer2DSW::area_add_shape(RID p_area, RID p_shape, const Transform2D &p_transform, bool p_disabled) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
-
- area->add_shape(shape, p_transform, p_disabled);
-}
-
-void PhysicsServer2DSW::area_set_shape(RID p_area, int p_shape_idx, RID p_shape) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
- ERR_FAIL_COND(!shape->is_configured());
-
- area->set_shape(p_shape_idx, shape);
-}
-
-void PhysicsServer2DSW::area_set_shape_transform(RID p_area, int p_shape_idx, const Transform2D &p_transform) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_shape_transform(p_shape_idx, p_transform);
-}
-
-void PhysicsServer2DSW::area_set_shape_disabled(RID p_area, int p_shape, bool p_disabled) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- ERR_FAIL_INDEX(p_shape, area->get_shape_count());
- FLUSH_QUERY_CHECK(area);
-
- area->set_shape_disabled(p_shape, p_disabled);
-}
-
-int PhysicsServer2DSW::area_get_shape_count(RID p_area) const {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, -1);
-
- return area->get_shape_count();
-}
-
-RID PhysicsServer2DSW::area_get_shape(RID p_area, int p_shape_idx) const {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, RID());
-
- Shape2DSW *shape = area->get_shape(p_shape_idx);
- ERR_FAIL_COND_V(!shape, RID());
-
- return shape->get_self();
-}
-
-Transform2D PhysicsServer2DSW::area_get_shape_transform(RID p_area, int p_shape_idx) const {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, Transform2D());
-
- return area->get_shape_transform(p_shape_idx);
-}
-
-void PhysicsServer2DSW::area_remove_shape(RID p_area, int p_shape_idx) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->remove_shape(p_shape_idx);
-}
-
-void PhysicsServer2DSW::area_clear_shapes(RID p_area) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- while (area->get_shape_count()) {
- area->remove_shape(0);
- }
-}
-
-void PhysicsServer2DSW::area_attach_object_instance_id(RID p_area, ObjectID p_id) {
- if (space_owner.owns(p_area)) {
- Space2DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- area->set_instance_id(p_id);
-}
-
-ObjectID PhysicsServer2DSW::area_get_object_instance_id(RID p_area) const {
- if (space_owner.owns(p_area)) {
- Space2DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, ObjectID());
- return area->get_instance_id();
-}
-
-void PhysicsServer2DSW::area_attach_canvas_instance_id(RID p_area, ObjectID p_id) {
- if (space_owner.owns(p_area)) {
- Space2DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- area->set_canvas_instance_id(p_id);
-}
-
-ObjectID PhysicsServer2DSW::area_get_canvas_instance_id(RID p_area) const {
- if (space_owner.owns(p_area)) {
- Space2DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, ObjectID());
- return area->get_canvas_instance_id();
-}
-
-void PhysicsServer2DSW::area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value) {
- if (space_owner.owns(p_area)) {
- Space2DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- area->set_param(p_param, p_value);
-};
-
-void PhysicsServer2DSW::area_set_transform(RID p_area, const Transform2D &p_transform) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- area->set_transform(p_transform);
-};
-
-Variant PhysicsServer2DSW::area_get_param(RID p_area, AreaParameter p_param) const {
- if (space_owner.owns(p_area)) {
- Space2DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, Variant());
-
- return area->get_param(p_param);
-};
-
-Transform2D PhysicsServer2DSW::area_get_transform(RID p_area) const {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, Transform2D());
-
- return area->get_transform();
-};
-
-void PhysicsServer2DSW::area_set_pickable(RID p_area, bool p_pickable) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- area->set_pickable(p_pickable);
-}
-
-void PhysicsServer2DSW::area_set_monitorable(RID p_area, bool p_monitorable) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- FLUSH_QUERY_CHECK(area);
-
- area->set_monitorable(p_monitorable);
-}
-
-void PhysicsServer2DSW::area_set_collision_mask(RID p_area, uint32_t p_mask) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_collision_mask(p_mask);
-}
-
-void PhysicsServer2DSW::area_set_collision_layer(RID p_area, uint32_t p_layer) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_collision_layer(p_layer);
-}
-
-void PhysicsServer2DSW::area_set_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
-}
-
-void PhysicsServer2DSW::area_set_area_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
- Area2DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_area_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
-}
-
-/* BODY API */
-
-RID PhysicsServer2DSW::body_create() {
- Body2DSW *body = memnew(Body2DSW);
- RID rid = body_owner.make_rid(body);
- body->set_self(rid);
- return rid;
-}
-
-void PhysicsServer2DSW::body_set_space(RID p_body, RID p_space) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- Space2DSW *space = nullptr;
- if (p_space.is_valid()) {
- space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- }
-
- if (body->get_space() == space) {
- return; //pointless
- }
-
- body->clear_constraint_list();
- body->set_space(space);
-};
-
-RID PhysicsServer2DSW::body_get_space(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, RID());
-
- Space2DSW *space = body->get_space();
- if (!space) {
- return RID();
- }
- return space->get_self();
-};
-
-void PhysicsServer2DSW::body_set_mode(RID p_body, BodyMode p_mode) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- FLUSH_QUERY_CHECK(body);
-
- body->set_mode(p_mode);
-};
-
-PhysicsServer2D::BodyMode PhysicsServer2DSW::body_get_mode(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, BODY_MODE_STATIC);
-
- return body->get_mode();
-};
-
-void PhysicsServer2DSW::body_add_shape(RID p_body, RID p_shape, const Transform2D &p_transform, bool p_disabled) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
-
- body->add_shape(shape, p_transform, p_disabled);
-}
-
-void PhysicsServer2DSW::body_set_shape(RID p_body, int p_shape_idx, RID p_shape) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- Shape2DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
- ERR_FAIL_COND(!shape->is_configured());
-
- body->set_shape(p_shape_idx, shape);
-}
-
-void PhysicsServer2DSW::body_set_shape_transform(RID p_body, int p_shape_idx, const Transform2D &p_transform) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_shape_transform(p_shape_idx, p_transform);
-}
-
-int PhysicsServer2DSW::body_get_shape_count(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, -1);
-
- return body->get_shape_count();
-}
-
-RID PhysicsServer2DSW::body_get_shape(RID p_body, int p_shape_idx) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, RID());
-
- Shape2DSW *shape = body->get_shape(p_shape_idx);
- ERR_FAIL_COND_V(!shape, RID());
-
- return shape->get_self();
-}
-
-Transform2D PhysicsServer2DSW::body_get_shape_transform(RID p_body, int p_shape_idx) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, Transform2D());
-
- return body->get_shape_transform(p_shape_idx);
-}
-
-void PhysicsServer2DSW::body_remove_shape(RID p_body, int p_shape_idx) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->remove_shape(p_shape_idx);
-}
-
-void PhysicsServer2DSW::body_clear_shapes(RID p_body) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- while (body->get_shape_count()) {
- body->remove_shape(0);
- }
-}
-
-void PhysicsServer2DSW::body_set_shape_disabled(RID p_body, int p_shape_idx, bool p_disabled) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
- FLUSH_QUERY_CHECK(body);
-
- body->set_shape_disabled(p_shape_idx, p_disabled);
-}
-
-void PhysicsServer2DSW::body_set_shape_as_one_way_collision(RID p_body, int p_shape_idx, bool p_enable, real_t p_margin) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
- FLUSH_QUERY_CHECK(body);
-
- body->set_shape_as_one_way_collision(p_shape_idx, p_enable, p_margin);
-}
-
-void PhysicsServer2DSW::body_set_continuous_collision_detection_mode(RID p_body, CCDMode p_mode) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_continuous_collision_detection_mode(p_mode);
-}
-
-PhysicsServer2DSW::CCDMode PhysicsServer2DSW::body_get_continuous_collision_detection_mode(RID p_body) const {
- const Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, CCD_MODE_DISABLED);
-
- return body->get_continuous_collision_detection_mode();
-}
-
-void PhysicsServer2DSW::body_attach_object_instance_id(RID p_body, ObjectID p_id) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_instance_id(p_id);
-};
-
-ObjectID PhysicsServer2DSW::body_get_object_instance_id(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, ObjectID());
-
- return body->get_instance_id();
-};
-
-void PhysicsServer2DSW::body_attach_canvas_instance_id(RID p_body, ObjectID p_id) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_canvas_instance_id(p_id);
-};
-
-ObjectID PhysicsServer2DSW::body_get_canvas_instance_id(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, ObjectID());
-
- return body->get_canvas_instance_id();
-};
-
-void PhysicsServer2DSW::body_set_collision_layer(RID p_body, uint32_t p_layer) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_collision_layer(p_layer);
-};
-
-uint32_t PhysicsServer2DSW::body_get_collision_layer(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
-
- return body->get_collision_layer();
-};
-
-void PhysicsServer2DSW::body_set_collision_mask(RID p_body, uint32_t p_mask) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_collision_mask(p_mask);
-};
-
-uint32_t PhysicsServer2DSW::body_get_collision_mask(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
-
- return body->get_collision_mask();
-};
-
-void PhysicsServer2DSW::body_set_param(RID p_body, BodyParameter p_param, const Variant &p_value) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_param(p_param, p_value);
-};
-
-Variant PhysicsServer2DSW::body_get_param(RID p_body, BodyParameter p_param) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
-
- return body->get_param(p_param);
-};
-
-void PhysicsServer2DSW::body_reset_mass_properties(RID p_body) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- return body->reset_mass_properties();
-}
-
-void PhysicsServer2DSW::body_set_state(RID p_body, BodyState p_state, const Variant &p_variant) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_state(p_state, p_variant);
-};
-
-Variant PhysicsServer2DSW::body_get_state(RID p_body, BodyState p_state) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, Variant());
-
- return body->get_state(p_state);
-};
-
-void PhysicsServer2DSW::body_set_applied_force(RID p_body, const Vector2 &p_force) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_applied_force(p_force);
- body->wakeup();
-};
-
-Vector2 PhysicsServer2DSW::body_get_applied_force(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, Vector2());
- return body->get_applied_force();
-};
-
-void PhysicsServer2DSW::body_set_applied_torque(RID p_body, real_t p_torque) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_applied_torque(p_torque);
- body->wakeup();
-};
-
-real_t PhysicsServer2DSW::body_get_applied_torque(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
-
- return body->get_applied_torque();
-};
-
-void PhysicsServer2DSW::body_apply_central_impulse(RID p_body, const Vector2 &p_impulse) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->apply_central_impulse(p_impulse);
- body->wakeup();
-}
-
-void PhysicsServer2DSW::body_apply_torque_impulse(RID p_body, real_t p_torque) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- _update_shapes();
-
- body->apply_torque_impulse(p_torque);
- body->wakeup();
-}
-
-void PhysicsServer2DSW::body_apply_impulse(RID p_body, const Vector2 &p_impulse, const Vector2 &p_position) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- _update_shapes();
-
- body->apply_impulse(p_impulse, p_position);
- body->wakeup();
-};
-
-void PhysicsServer2DSW::body_add_central_force(RID p_body, const Vector2 &p_force) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->add_central_force(p_force);
- body->wakeup();
-};
-
-void PhysicsServer2DSW::body_add_force(RID p_body, const Vector2 &p_force, const Vector2 &p_position) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->add_force(p_force, p_position);
- body->wakeup();
-};
-
-void PhysicsServer2DSW::body_add_torque(RID p_body, real_t p_torque) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->add_torque(p_torque);
- body->wakeup();
-};
-
-void PhysicsServer2DSW::body_set_axis_velocity(RID p_body, const Vector2 &p_axis_velocity) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- _update_shapes();
-
- Vector2 v = body->get_linear_velocity();
- Vector2 axis = p_axis_velocity.normalized();
- v -= axis * axis.dot(v);
- v += p_axis_velocity;
- body->set_linear_velocity(v);
- body->wakeup();
-};
-
-void PhysicsServer2DSW::body_add_collision_exception(RID p_body, RID p_body_b) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->add_exception(p_body_b);
- body->wakeup();
-};
-
-void PhysicsServer2DSW::body_remove_collision_exception(RID p_body, RID p_body_b) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->remove_exception(p_body_b);
- body->wakeup();
-};
-
-void PhysicsServer2DSW::body_get_collision_exceptions(RID p_body, List<RID> *p_exceptions) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- for (int i = 0; i < body->get_exceptions().size(); i++) {
- p_exceptions->push_back(body->get_exceptions()[i]);
- }
-};
-
-void PhysicsServer2DSW::body_set_contacts_reported_depth_threshold(RID p_body, real_t p_threshold) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-};
-
-real_t PhysicsServer2DSW::body_get_contacts_reported_depth_threshold(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
- return 0;
-};
-
-void PhysicsServer2DSW::body_set_omit_force_integration(RID p_body, bool p_omit) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_omit_force_integration(p_omit);
-};
-
-bool PhysicsServer2DSW::body_is_omitting_force_integration(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, false);
- return body->get_omit_force_integration();
-};
-
-void PhysicsServer2DSW::body_set_max_contacts_reported(RID p_body, int p_contacts) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_max_contacts_reported(p_contacts);
-}
-
-int PhysicsServer2DSW::body_get_max_contacts_reported(RID p_body) const {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, -1);
- return body->get_max_contacts_reported();
-}
-
-void PhysicsServer2DSW::body_set_state_sync_callback(RID p_body, void *p_instance, BodyStateCallback p_callback) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_state_sync_callback(p_instance, p_callback);
-}
-
-void PhysicsServer2DSW::body_set_force_integration_callback(RID p_body, const Callable &p_callable, const Variant &p_udata) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_force_integration_callback(p_callable, p_udata);
-}
-
-bool PhysicsServer2DSW::body_collide_shape(RID p_body, int p_body_shape, RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, Vector2 *r_results, int p_result_max, int &r_result_count) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, false);
- ERR_FAIL_INDEX_V(p_body_shape, body->get_shape_count(), false);
-
- return shape_collide(body->get_shape(p_body_shape)->get_self(), body->get_transform() * body->get_shape_transform(p_body_shape), Vector2(), p_shape, p_shape_xform, p_motion, r_results, p_result_max, r_result_count);
-}
-
-void PhysicsServer2DSW::body_set_pickable(RID p_body, bool p_pickable) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_pickable(p_pickable);
-}
-
-bool PhysicsServer2DSW::body_test_motion(RID p_body, const MotionParameters &p_parameters, MotionResult *r_result) {
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, false);
- ERR_FAIL_COND_V(!body->get_space(), false);
- ERR_FAIL_COND_V(body->get_space()->is_locked(), false);
-
- _update_shapes();
-
- return body->get_space()->test_body_motion(body, p_parameters, r_result);
-}
-
-PhysicsDirectBodyState2D *PhysicsServer2DSW::body_get_direct_state(RID p_body) {
- ERR_FAIL_COND_V_MSG((using_threads && !doing_sync), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
-
- Body2DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, nullptr);
-
- ERR_FAIL_COND_V(!body->get_space(), nullptr);
- ERR_FAIL_COND_V_MSG(body->get_space()->is_locked(), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
-
- return body->get_direct_state();
-}
-
-/* JOINT API */
-
-RID PhysicsServer2DSW::joint_create() {
- Joint2DSW *joint = memnew(Joint2DSW);
- RID joint_rid = joint_owner.make_rid(joint);
- joint->set_self(joint_rid);
- return joint_rid;
-}
-
-void PhysicsServer2DSW::joint_clear(RID p_joint) {
- Joint2DSW *joint = joint_owner.get_or_null(p_joint);
- if (joint->get_type() != JOINT_TYPE_MAX) {
- Joint2DSW *empty_joint = memnew(Joint2DSW);
- empty_joint->copy_settings_from(joint);
-
- joint_owner.replace(p_joint, empty_joint);
- memdelete(joint);
- }
-}
-
-void PhysicsServer2DSW::joint_set_param(RID p_joint, JointParam p_param, real_t p_value) {
- Joint2DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
-
- switch (p_param) {
- case JOINT_PARAM_BIAS:
- joint->set_bias(p_value);
- break;
- case JOINT_PARAM_MAX_BIAS:
- joint->set_max_bias(p_value);
- break;
- case JOINT_PARAM_MAX_FORCE:
- joint->set_max_force(p_value);
- break;
- }
-}
-
-real_t PhysicsServer2DSW::joint_get_param(RID p_joint, JointParam p_param) const {
- const Joint2DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, -1);
-
- switch (p_param) {
- case JOINT_PARAM_BIAS:
- return joint->get_bias();
- break;
- case JOINT_PARAM_MAX_BIAS:
- return joint->get_max_bias();
- break;
- case JOINT_PARAM_MAX_FORCE:
- return joint->get_max_force();
- break;
- }
-
- return 0;
-}
-
-void PhysicsServer2DSW::joint_disable_collisions_between_bodies(RID p_joint, const bool p_disable) {
- Joint2DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
-
- joint->disable_collisions_between_bodies(p_disable);
-
- if (2 == joint->get_body_count()) {
- Body2DSW *body_a = *joint->get_body_ptr();
- Body2DSW *body_b = *(joint->get_body_ptr() + 1);
-
- if (p_disable) {
- body_add_collision_exception(body_a->get_self(), body_b->get_self());
- body_add_collision_exception(body_b->get_self(), body_a->get_self());
- } else {
- body_remove_collision_exception(body_a->get_self(), body_b->get_self());
- body_remove_collision_exception(body_b->get_self(), body_a->get_self());
- }
- }
-}
-
-bool PhysicsServer2DSW::joint_is_disabled_collisions_between_bodies(RID p_joint) const {
- const Joint2DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, true);
-
- return joint->is_disabled_collisions_between_bodies();
-}
-
-void PhysicsServer2DSW::joint_make_pin(RID p_joint, const Vector2 &p_pos, RID p_body_a, RID p_body_b) {
- Body2DSW *A = body_owner.get_or_null(p_body_a);
- ERR_FAIL_COND(!A);
- Body2DSW *B = nullptr;
- if (body_owner.owns(p_body_b)) {
- B = body_owner.get_or_null(p_body_b);
- ERR_FAIL_COND(!B);
- }
-
- Joint2DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint2DSW *joint = memnew(PinJoint2DSW(p_pos, A, B));
-
- joint_owner.replace(p_joint, joint);
- joint->copy_settings_from(prev_joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer2DSW::joint_make_groove(RID p_joint, const Vector2 &p_a_groove1, const Vector2 &p_a_groove2, const Vector2 &p_b_anchor, RID p_body_a, RID p_body_b) {
- Body2DSW *A = body_owner.get_or_null(p_body_a);
- ERR_FAIL_COND(!A);
-
- Body2DSW *B = body_owner.get_or_null(p_body_b);
- ERR_FAIL_COND(!B);
-
- Joint2DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint2DSW *joint = memnew(GrooveJoint2DSW(p_a_groove1, p_a_groove2, p_b_anchor, A, B));
-
- joint_owner.replace(p_joint, joint);
- joint->copy_settings_from(prev_joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer2DSW::joint_make_damped_spring(RID p_joint, const Vector2 &p_anchor_a, const Vector2 &p_anchor_b, RID p_body_a, RID p_body_b) {
- Body2DSW *A = body_owner.get_or_null(p_body_a);
- ERR_FAIL_COND(!A);
-
- Body2DSW *B = body_owner.get_or_null(p_body_b);
- ERR_FAIL_COND(!B);
-
- Joint2DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint2DSW *joint = memnew(DampedSpringJoint2DSW(p_anchor_a, p_anchor_b, A, B));
-
- joint_owner.replace(p_joint, joint);
- joint->copy_settings_from(prev_joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer2DSW::pin_joint_set_param(RID p_joint, PinJointParam p_param, real_t p_value) {
- Joint2DSW *j = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!j);
- ERR_FAIL_COND(j->get_type() != JOINT_TYPE_PIN);
-
- PinJoint2DSW *pin_joint = static_cast<PinJoint2DSW *>(j);
- pin_joint->set_param(p_param, p_value);
-}
-
-real_t PhysicsServer2DSW::pin_joint_get_param(RID p_joint, PinJointParam p_param) const {
- Joint2DSW *j = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!j, 0);
- ERR_FAIL_COND_V(j->get_type() != JOINT_TYPE_PIN, 0);
-
- PinJoint2DSW *pin_joint = static_cast<PinJoint2DSW *>(j);
- return pin_joint->get_param(p_param);
-}
-
-void PhysicsServer2DSW::damped_spring_joint_set_param(RID p_joint, DampedSpringParam p_param, real_t p_value) {
- Joint2DSW *j = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!j);
- ERR_FAIL_COND(j->get_type() != JOINT_TYPE_DAMPED_SPRING);
-
- DampedSpringJoint2DSW *dsj = static_cast<DampedSpringJoint2DSW *>(j);
- dsj->set_param(p_param, p_value);
-}
-
-real_t PhysicsServer2DSW::damped_spring_joint_get_param(RID p_joint, DampedSpringParam p_param) const {
- Joint2DSW *j = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!j, 0);
- ERR_FAIL_COND_V(j->get_type() != JOINT_TYPE_DAMPED_SPRING, 0);
-
- DampedSpringJoint2DSW *dsj = static_cast<DampedSpringJoint2DSW *>(j);
- return dsj->get_param(p_param);
-}
-
-PhysicsServer2D::JointType PhysicsServer2DSW::joint_get_type(RID p_joint) const {
- Joint2DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, JOINT_TYPE_PIN);
-
- return joint->get_type();
-}
-
-void PhysicsServer2DSW::free(RID p_rid) {
- _update_shapes(); // just in case
-
- if (shape_owner.owns(p_rid)) {
- Shape2DSW *shape = shape_owner.get_or_null(p_rid);
-
- while (shape->get_owners().size()) {
- ShapeOwner2DSW *so = shape->get_owners().front()->key();
- so->remove_shape(shape);
- }
-
- shape_owner.free(p_rid);
- memdelete(shape);
- } else if (body_owner.owns(p_rid)) {
- Body2DSW *body = body_owner.get_or_null(p_rid);
-
- /*
- if (body->get_state_query())
- _clear_query(body->get_state_query());
-
- if (body->get_direct_state_query())
- _clear_query(body->get_direct_state_query());
- */
-
- body_set_space(p_rid, RID());
-
- while (body->get_shape_count()) {
- body->remove_shape(0);
- }
-
- body_owner.free(p_rid);
- memdelete(body);
-
- } else if (area_owner.owns(p_rid)) {
- Area2DSW *area = area_owner.get_or_null(p_rid);
-
- /*
- if (area->get_monitor_query())
- _clear_query(area->get_monitor_query());
- */
-
- area->set_space(nullptr);
-
- while (area->get_shape_count()) {
- area->remove_shape(0);
- }
-
- area_owner.free(p_rid);
- memdelete(area);
- } else if (space_owner.owns(p_rid)) {
- Space2DSW *space = space_owner.get_or_null(p_rid);
-
- while (space->get_objects().size()) {
- CollisionObject2DSW *co = (CollisionObject2DSW *)space->get_objects().front()->get();
- co->set_space(nullptr);
- }
-
- active_spaces.erase(space);
- free(space->get_default_area()->get_self());
- space_owner.free(p_rid);
- memdelete(space);
- } else if (joint_owner.owns(p_rid)) {
- Joint2DSW *joint = joint_owner.get_or_null(p_rid);
-
- joint_owner.free(p_rid);
- memdelete(joint);
-
- } else {
- ERR_FAIL_MSG("Invalid ID.");
- }
-};
-
-void PhysicsServer2DSW::set_active(bool p_active) {
- active = p_active;
-};
-
-void PhysicsServer2DSW::set_collision_iterations(int p_iterations) {
- iterations = p_iterations;
-};
-
-void PhysicsServer2DSW::init() {
- doing_sync = false;
- iterations = 8; // 8?
- stepper = memnew(Step2DSW);
-};
-
-void PhysicsServer2DSW::step(real_t p_step) {
- if (!active) {
- return;
- }
-
- _update_shapes();
-
- island_count = 0;
- active_objects = 0;
- collision_pairs = 0;
- for (Set<const Space2DSW *>::Element *E = active_spaces.front(); E; E = E->next()) {
- stepper->step((Space2DSW *)E->get(), p_step, iterations);
- island_count += E->get()->get_island_count();
- active_objects += E->get()->get_active_objects();
- collision_pairs += E->get()->get_collision_pairs();
- }
-};
-
-void PhysicsServer2DSW::sync() {
- doing_sync = true;
-};
-
-void PhysicsServer2DSW::flush_queries() {
- if (!active) {
- return;
- }
-
- flushing_queries = true;
-
- uint64_t time_beg = OS::get_singleton()->get_ticks_usec();
-
- for (Set<const Space2DSW *>::Element *E = active_spaces.front(); E; E = E->next()) {
- Space2DSW *space = (Space2DSW *)E->get();
- space->call_queries();
- }
-
- flushing_queries = false;
-
- if (EngineDebugger::is_profiling("servers")) {
- uint64_t total_time[Space2DSW::ELAPSED_TIME_MAX];
- static const char *time_name[Space2DSW::ELAPSED_TIME_MAX] = {
- "integrate_forces",
- "generate_islands",
- "setup_constraints",
- "solve_constraints",
- "integrate_velocities"
- };
-
- for (int i = 0; i < Space2DSW::ELAPSED_TIME_MAX; i++) {
- total_time[i] = 0;
- }
-
- for (Set<const Space2DSW *>::Element *E = active_spaces.front(); E; E = E->next()) {
- for (int i = 0; i < Space2DSW::ELAPSED_TIME_MAX; i++) {
- total_time[i] += E->get()->get_elapsed_time(Space2DSW::ElapsedTime(i));
- }
- }
-
- Array values;
- values.resize(Space2DSW::ELAPSED_TIME_MAX * 2);
- for (int i = 0; i < Space2DSW::ELAPSED_TIME_MAX; i++) {
- values[i * 2 + 0] = time_name[i];
- values[i * 2 + 1] = USEC_TO_SEC(total_time[i]);
- }
- values.push_back("flush_queries");
- values.push_back(USEC_TO_SEC(OS::get_singleton()->get_ticks_usec() - time_beg));
-
- values.push_front("physics_2d");
- EngineDebugger::profiler_add_frame_data("servers", values);
- }
-}
-
-void PhysicsServer2DSW::end_sync() {
- doing_sync = false;
-}
-
-void PhysicsServer2DSW::finish() {
- memdelete(stepper);
-};
-
-void PhysicsServer2DSW::_update_shapes() {
- while (pending_shape_update_list.first()) {
- pending_shape_update_list.first()->self()->_shape_changed();
- pending_shape_update_list.remove(pending_shape_update_list.first());
- }
-}
-
-int PhysicsServer2DSW::get_process_info(ProcessInfo p_info) {
- switch (p_info) {
- case INFO_ACTIVE_OBJECTS: {
- return active_objects;
- } break;
- case INFO_COLLISION_PAIRS: {
- return collision_pairs;
- } break;
- case INFO_ISLAND_COUNT: {
- return island_count;
- } break;
- }
-
- return 0;
-}
-
-PhysicsServer2DSW *PhysicsServer2DSW::singletonsw = nullptr;
-
-PhysicsServer2DSW::PhysicsServer2DSW(bool p_using_threads) {
- singletonsw = this;
- BroadPhase2DSW::create_func = BroadPhase2DBVH::_create;
-
- using_threads = p_using_threads;
-};
diff --git a/servers/physics_3d/gjk_epa.cpp b/servers/physics_3d/gjk_epa.cpp
index a1dbdd0a70..ef6535a878 100644
--- a/servers/physics_3d/gjk_epa.cpp
+++ b/servers/physics_3d/gjk_epa.cpp
@@ -105,7 +105,7 @@ typedef unsigned char U1;
// MinkowskiDiff
struct MinkowskiDiff {
- const Shape3DSW* m_shapes[2];
+ const GodotShape3D* m_shapes[2];
Transform3D transform_A;
Transform3D transform_B;
@@ -113,10 +113,10 @@ struct MinkowskiDiff {
real_t margin_A = 0.0;
real_t margin_B = 0.0;
- Vector3 (*get_support)(const Shape3DSW*, const Vector3&, real_t);
+ Vector3 (*get_support)(const GodotShape3D*, const Vector3&, real_t);
- void Initialize(const Shape3DSW* shape0, const Transform3D& wtrs0, const real_t margin0,
- const Shape3DSW* shape1, const Transform3D& wtrs1, const real_t margin1) {
+ void Initialize(const GodotShape3D* shape0, const Transform3D& wtrs0, const real_t margin0,
+ const GodotShape3D* shape1, const Transform3D& wtrs1, const real_t margin1) {
m_shapes[0] = shape0;
m_shapes[1] = shape1;
transform_A = wtrs0;
@@ -131,11 +131,11 @@ struct MinkowskiDiff {
}
}
- static Vector3 get_support_without_margin(const Shape3DSW* p_shape, const Vector3& p_dir, real_t p_margin) {
+ static Vector3 get_support_without_margin(const GodotShape3D* p_shape, const Vector3& p_dir, real_t p_margin) {
return p_shape->get_support(p_dir.normalized());
}
- static Vector3 get_support_with_margin(const Shape3DSW* p_shape, const Vector3& p_dir, real_t p_margin) {
+ static Vector3 get_support_with_margin(const GodotShape3D* p_shape, const Vector3& p_dir, real_t p_margin) {
Vector3 local_dir_norm = p_dir;
if (local_dir_norm.length_squared() < CMP_EPSILON2) {
local_dir_norm = Vector3(-1.0, -1.0, -1.0);
@@ -862,8 +862,8 @@ struct GJK
};
//
- static void Initialize( const Shape3DSW* shape0, const Transform3D& wtrs0, real_t margin0,
- const Shape3DSW* shape1, const Transform3D& wtrs1, real_t margin1,
+ static void Initialize( const GodotShape3D* shape0, const Transform3D& wtrs0, real_t margin0,
+ const GodotShape3D* shape1, const Transform3D& wtrs1, real_t margin1,
sResults& results,
tShape& shape)
{
@@ -884,10 +884,10 @@ struct GJK
//
//
-bool Distance( const Shape3DSW* shape0,
+bool Distance( const GodotShape3D* shape0,
const Transform3D& wtrs0,
real_t margin0,
- const Shape3DSW* shape1,
+ const GodotShape3D* shape1,
const Transform3D& wtrs1,
real_t margin1,
const Vector3& guess,
@@ -925,10 +925,10 @@ bool Distance( const Shape3DSW* shape0,
//
-bool Penetration( const Shape3DSW* shape0,
+bool Penetration( const GodotShape3D* shape0,
const Transform3D& wtrs0,
real_t margin0,
- const Shape3DSW* shape1,
+ const GodotShape3D* shape1,
const Transform3D& wtrs1,
real_t margin1,
const Vector3& guess,
@@ -993,7 +993,7 @@ bool Penetration( const Shape3DSW* shape0,
/* clang-format on */
-bool gjk_epa_calculate_distance(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_result_A, Vector3 &r_result_B) {
+bool gjk_epa_calculate_distance(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_result_A, Vector3 &r_result_B) {
GjkEpa2::sResults res;
if (GjkEpa2::Distance(p_shape_A, p_transform_A, 0.0, p_shape_B, p_transform_B, 0.0, p_transform_B.origin - p_transform_A.origin, res)) {
@@ -1005,7 +1005,7 @@ bool gjk_epa_calculate_distance(const Shape3DSW *p_shape_A, const Transform3D &p
return false;
}
-bool gjk_epa_calculate_penetration(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CollisionSolver3DSW::CallbackResult p_result_callback, void *p_userdata, bool p_swap, real_t p_margin_A, real_t p_margin_B) {
+bool gjk_epa_calculate_penetration(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, GodotCollisionSolver3D::CallbackResult p_result_callback, void *p_userdata, bool p_swap, real_t p_margin_A, real_t p_margin_B) {
GjkEpa2::sResults res;
if (GjkEpa2::Penetration(p_shape_A, p_transform_A, p_margin_A, p_shape_B, p_transform_B, p_margin_B, p_transform_B.origin - p_transform_A.origin, res)) {
diff --git a/servers/physics_3d/gjk_epa.h b/servers/physics_3d/gjk_epa.h
index 69e85d2bc0..39a7d03435 100644
--- a/servers/physics_3d/gjk_epa.h
+++ b/servers/physics_3d/gjk_epa.h
@@ -31,10 +31,10 @@
#ifndef GJK_EPA_H
#define GJK_EPA_H
-#include "collision_solver_3d_sw.h"
-#include "shape_3d_sw.h"
+#include "godot_collision_solver_3d.h"
+#include "godot_shape_3d.h"
-bool gjk_epa_calculate_penetration(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CollisionSolver3DSW::CallbackResult p_result_callback, void *p_userdata, bool p_swap = false, real_t p_margin_A = 0.0, real_t p_margin_B = 0.0);
-bool gjk_epa_calculate_distance(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_result_A, Vector3 &r_result_B);
+bool gjk_epa_calculate_penetration(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, GodotCollisionSolver3D::CallbackResult p_result_callback, void *p_userdata, bool p_swap = false, real_t p_margin_A = 0.0, real_t p_margin_B = 0.0);
+bool gjk_epa_calculate_distance(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_result_A, Vector3 &r_result_B);
#endif
diff --git a/servers/physics_3d/area_3d_sw.cpp b/servers/physics_3d/godot_area_3d.cpp
index 630ab7e229..e115e17061 100644
--- a/servers/physics_3d/area_3d_sw.cpp
+++ b/servers/physics_3d/godot_area_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* area_3d_sw.cpp */
+/* godot_area_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,39 +28,40 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "area_3d_sw.h"
-#include "body_3d_sw.h"
-#include "soft_body_3d_sw.h"
-#include "space_3d_sw.h"
+#include "godot_area_3d.h"
-Area3DSW::BodyKey::BodyKey(SoftBody3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+#include "godot_body_3d.h"
+#include "godot_soft_body_3d.h"
+#include "godot_space_3d.h"
+
+GodotArea3D::BodyKey::BodyKey(GodotSoftBody3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
rid = p_body->get_self();
instance_id = p_body->get_instance_id();
body_shape = p_body_shape;
area_shape = p_area_shape;
}
-Area3DSW::BodyKey::BodyKey(Body3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+GodotArea3D::BodyKey::BodyKey(GodotBody3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
rid = p_body->get_self();
instance_id = p_body->get_instance_id();
body_shape = p_body_shape;
area_shape = p_area_shape;
}
-Area3DSW::BodyKey::BodyKey(Area3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+GodotArea3D::BodyKey::BodyKey(GodotArea3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
rid = p_body->get_self();
instance_id = p_body->get_instance_id();
body_shape = p_body_shape;
area_shape = p_area_shape;
}
-void Area3DSW::_shapes_changed() {
+void GodotArea3D::_shapes_changed() {
if (!moved_list.in_list() && get_space()) {
get_space()->area_add_to_moved_list(&moved_list);
}
}
-void Area3DSW::set_transform(const Transform3D &p_transform) {
+void GodotArea3D::set_transform(const Transform3D &p_transform) {
if (!moved_list.in_list() && get_space()) {
get_space()->area_add_to_moved_list(&moved_list);
}
@@ -69,7 +70,7 @@ void Area3DSW::set_transform(const Transform3D &p_transform) {
_set_inv_transform(p_transform.affine_inverse());
}
-void Area3DSW::set_space(Space3DSW *p_space) {
+void GodotArea3D::set_space(GodotSpace3D *p_space) {
if (get_space()) {
if (monitor_query_list.in_list()) {
get_space()->area_remove_from_monitor_query_list(&monitor_query_list);
@@ -85,7 +86,7 @@ void Area3DSW::set_space(Space3DSW *p_space) {
_set_space(p_space);
}
-void Area3DSW::set_monitor_callback(ObjectID p_id, const StringName &p_method) {
+void GodotArea3D::set_monitor_callback(ObjectID p_id, const StringName &p_method) {
if (p_id == monitor_callback_id) {
monitor_callback_method = p_method;
return;
@@ -106,7 +107,7 @@ void Area3DSW::set_monitor_callback(ObjectID p_id, const StringName &p_method) {
}
}
-void Area3DSW::set_area_monitor_callback(ObjectID p_id, const StringName &p_method) {
+void GodotArea3D::set_area_monitor_callback(ObjectID p_id, const StringName &p_method) {
if (p_id == area_monitor_callback_id) {
area_monitor_callback_method = p_method;
return;
@@ -127,7 +128,7 @@ void Area3DSW::set_area_monitor_callback(ObjectID p_id, const StringName &p_meth
}
}
-void Area3DSW::set_space_override_mode(PhysicsServer3D::AreaSpaceOverrideMode p_mode) {
+void GodotArea3D::set_space_override_mode(PhysicsServer3D::AreaSpaceOverrideMode p_mode) {
bool do_override = p_mode != PhysicsServer3D::AREA_SPACE_OVERRIDE_DISABLED;
if (do_override == (space_override_mode != PhysicsServer3D::AREA_SPACE_OVERRIDE_DISABLED)) {
return;
@@ -137,7 +138,7 @@ void Area3DSW::set_space_override_mode(PhysicsServer3D::AreaSpaceOverrideMode p_
_shape_changed();
}
-void Area3DSW::set_param(PhysicsServer3D::AreaParameter p_param, const Variant &p_value) {
+void GodotArea3D::set_param(PhysicsServer3D::AreaParameter p_param, const Variant &p_value) {
switch (p_param) {
case PhysicsServer3D::AREA_PARAM_GRAVITY:
gravity = p_value;
@@ -180,7 +181,7 @@ void Area3DSW::set_param(PhysicsServer3D::AreaParameter p_param, const Variant &
}
}
-Variant Area3DSW::get_param(PhysicsServer3D::AreaParameter p_param) const {
+Variant GodotArea3D::get_param(PhysicsServer3D::AreaParameter p_param) const {
switch (p_param) {
case PhysicsServer3D::AREA_PARAM_GRAVITY:
return gravity;
@@ -211,7 +212,7 @@ Variant Area3DSW::get_param(PhysicsServer3D::AreaParameter p_param) const {
return Variant();
}
-void Area3DSW::_queue_monitor_update() {
+void GodotArea3D::_queue_monitor_update() {
ERR_FAIL_COND(!get_space());
if (!monitor_query_list.in_list()) {
@@ -219,7 +220,7 @@ void Area3DSW::_queue_monitor_update() {
}
}
-void Area3DSW::set_monitorable(bool p_monitorable) {
+void GodotArea3D::set_monitorable(bool p_monitorable) {
if (monitorable == p_monitorable) {
return;
}
@@ -228,7 +229,7 @@ void Area3DSW::set_monitorable(bool p_monitorable) {
_set_static(!monitorable);
}
-void Area3DSW::call_queries() {
+void GodotArea3D::call_queries() {
if (monitor_callback_id.is_valid() && !monitored_bodies.is_empty()) {
Variant res[5];
Variant *resptr[5];
@@ -304,7 +305,7 @@ void Area3DSW::call_queries() {
}
}
-void Area3DSW::compute_gravity(const Vector3 &p_position, Vector3 &r_gravity) const {
+void GodotArea3D::compute_gravity(const Vector3 &p_position, Vector3 &r_gravity) const {
if (is_gravity_point()) {
const real_t gravity_distance_scale = get_gravity_distance_scale();
Vector3 v = get_transform().xform(get_gravity_vector()) - p_position;
@@ -324,13 +325,13 @@ void Area3DSW::compute_gravity(const Vector3 &p_position, Vector3 &r_gravity) co
}
}
-Area3DSW::Area3DSW() :
- CollisionObject3DSW(TYPE_AREA),
+GodotArea3D::GodotArea3D() :
+ GodotCollisionObject3D(TYPE_AREA),
monitor_query_list(this),
moved_list(this) {
_set_static(true); //areas are never active
set_ray_pickable(false);
}
-Area3DSW::~Area3DSW() {
+GodotArea3D::~GodotArea3D() {
}
diff --git a/servers/physics_3d/area_3d_sw.h b/servers/physics_3d/godot_area_3d.h
index af5c23949c..e8caa9221b 100644
--- a/servers/physics_3d/area_3d_sw.h
+++ b/servers/physics_3d/godot_area_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* area_3d_sw.h */
+/* godot_area_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,19 +28,20 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef AREA_SW_H
-#define AREA_SW_H
+#ifndef GODOT_AREA_3D_H
+#define GODOT_AREA_3D_H
+
+#include "godot_collision_object_3d.h"
-#include "collision_object_3d_sw.h"
#include "core/templates/self_list.h"
#include "servers/physics_server_3d.h"
-class Space3DSW;
-class Body3DSW;
-class SoftBody3DSW;
-class Constraint3DSW;
+class GodotSpace3D;
+class GodotBody3D;
+class GodotSoftBody3D;
+class GodotConstraint3D;
-class Area3DSW : public CollisionObject3DSW {
+class GodotArea3D : public GodotCollisionObject3D {
PhysicsServer3D::AreaSpaceOverrideMode space_override_mode = PhysicsServer3D::AREA_SPACE_OVERRIDE_DISABLED;
real_t gravity = 9.80665;
Vector3 gravity_vector = Vector3(0, -1, 0);
@@ -62,8 +63,8 @@ class Area3DSW : public CollisionObject3DSW {
ObjectID area_monitor_callback_id;
StringName area_monitor_callback_method;
- SelfList<Area3DSW> monitor_query_list;
- SelfList<Area3DSW> moved_list;
+ SelfList<GodotArea3D> monitor_query_list;
+ SelfList<GodotArea3D> moved_list;
struct BodyKey {
RID rid;
@@ -84,9 +85,9 @@ class Area3DSW : public CollisionObject3DSW {
}
_FORCE_INLINE_ BodyKey() {}
- BodyKey(SoftBody3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
- BodyKey(Body3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
- BodyKey(Area3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ BodyKey(GodotSoftBody3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ BodyKey(GodotBody3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ BodyKey(GodotArea3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
};
struct BodyState {
@@ -99,7 +100,7 @@ class Area3DSW : public CollisionObject3DSW {
Map<BodyKey, BodyState> monitored_bodies;
Map<BodyKey, BodyState> monitored_areas;
- Set<Constraint3DSW *> constraints;
+ Set<GodotConstraint3D *> constraints;
virtual void _shapes_changed();
void _queue_monitor_update();
@@ -111,14 +112,14 @@ public:
void set_area_monitor_callback(ObjectID p_id, const StringName &p_method);
_FORCE_INLINE_ bool has_area_monitor_callback() const { return area_monitor_callback_id.is_valid(); }
- _FORCE_INLINE_ void add_body_to_query(Body3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
- _FORCE_INLINE_ void remove_body_from_query(Body3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ _FORCE_INLINE_ void add_body_to_query(GodotBody3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
+ _FORCE_INLINE_ void remove_body_from_query(GodotBody3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape);
- _FORCE_INLINE_ void add_soft_body_to_query(SoftBody3DSW *p_soft_body, uint32_t p_soft_body_shape, uint32_t p_area_shape);
- _FORCE_INLINE_ void remove_soft_body_from_query(SoftBody3DSW *p_soft_body, uint32_t p_soft_body_shape, uint32_t p_area_shape);
+ _FORCE_INLINE_ void add_soft_body_to_query(GodotSoftBody3D *p_soft_body, uint32_t p_soft_body_shape, uint32_t p_area_shape);
+ _FORCE_INLINE_ void remove_soft_body_from_query(GodotSoftBody3D *p_soft_body, uint32_t p_soft_body_shape, uint32_t p_area_shape);
- _FORCE_INLINE_ void add_area_to_query(Area3DSW *p_area, uint32_t p_area_shape, uint32_t p_self_shape);
- _FORCE_INLINE_ void remove_area_from_query(Area3DSW *p_area, uint32_t p_area_shape, uint32_t p_self_shape);
+ _FORCE_INLINE_ void add_area_to_query(GodotArea3D *p_area, uint32_t p_area_shape, uint32_t p_self_shape);
+ _FORCE_INLINE_ void remove_area_from_query(GodotArea3D *p_area, uint32_t p_area_shape, uint32_t p_self_shape);
void set_param(PhysicsServer3D::AreaParameter p_param, const Variant &p_value);
Variant get_param(PhysicsServer3D::AreaParameter p_param) const;
@@ -162,9 +163,9 @@ public:
_FORCE_INLINE_ void set_wind_direction(const Vector3 &p_wind_direction) { wind_direction = p_wind_direction; }
_FORCE_INLINE_ const Vector3 &get_wind_direction() const { return wind_direction; }
- _FORCE_INLINE_ void add_constraint(Constraint3DSW *p_constraint) { constraints.insert(p_constraint); }
- _FORCE_INLINE_ void remove_constraint(Constraint3DSW *p_constraint) { constraints.erase(p_constraint); }
- _FORCE_INLINE_ const Set<Constraint3DSW *> &get_constraints() const { return constraints; }
+ _FORCE_INLINE_ void add_constraint(GodotConstraint3D *p_constraint) { constraints.insert(p_constraint); }
+ _FORCE_INLINE_ void remove_constraint(GodotConstraint3D *p_constraint) { constraints.erase(p_constraint); }
+ _FORCE_INLINE_ const Set<GodotConstraint3D *> &get_constraints() const { return constraints; }
_FORCE_INLINE_ void clear_constraints() { constraints.clear(); }
void set_monitorable(bool p_monitorable);
@@ -172,17 +173,17 @@ public:
void set_transform(const Transform3D &p_transform);
- void set_space(Space3DSW *p_space);
+ void set_space(GodotSpace3D *p_space);
void call_queries();
void compute_gravity(const Vector3 &p_position, Vector3 &r_gravity) const;
- Area3DSW();
- ~Area3DSW();
+ GodotArea3D();
+ ~GodotArea3D();
};
-void Area3DSW::add_soft_body_to_query(SoftBody3DSW *p_soft_body, uint32_t p_soft_body_shape, uint32_t p_area_shape) {
+void GodotArea3D::add_soft_body_to_query(GodotSoftBody3D *p_soft_body, uint32_t p_soft_body_shape, uint32_t p_area_shape) {
BodyKey bk(p_soft_body, p_soft_body_shape, p_area_shape);
monitored_soft_bodies[bk].inc();
if (!monitor_query_list.in_list()) {
@@ -190,7 +191,7 @@ void Area3DSW::add_soft_body_to_query(SoftBody3DSW *p_soft_body, uint32_t p_soft
}
}
-void Area3DSW::remove_soft_body_from_query(SoftBody3DSW *p_soft_body, uint32_t p_soft_body_shape, uint32_t p_area_shape) {
+void GodotArea3D::remove_soft_body_from_query(GodotSoftBody3D *p_soft_body, uint32_t p_soft_body_shape, uint32_t p_area_shape) {
BodyKey bk(p_soft_body, p_soft_body_shape, p_area_shape);
monitored_soft_bodies[bk].dec();
if (!monitor_query_list.in_list()) {
@@ -198,7 +199,7 @@ void Area3DSW::remove_soft_body_from_query(SoftBody3DSW *p_soft_body, uint32_t p
}
}
-void Area3DSW::add_body_to_query(Body3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+void GodotArea3D::add_body_to_query(GodotBody3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
BodyKey bk(p_body, p_body_shape, p_area_shape);
monitored_bodies[bk].inc();
if (!monitor_query_list.in_list()) {
@@ -206,7 +207,7 @@ void Area3DSW::add_body_to_query(Body3DSW *p_body, uint32_t p_body_shape, uint32
}
}
-void Area3DSW::remove_body_from_query(Body3DSW *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
+void GodotArea3D::remove_body_from_query(GodotBody3D *p_body, uint32_t p_body_shape, uint32_t p_area_shape) {
BodyKey bk(p_body, p_body_shape, p_area_shape);
monitored_bodies[bk].dec();
if (!monitor_query_list.in_list()) {
@@ -214,7 +215,7 @@ void Area3DSW::remove_body_from_query(Body3DSW *p_body, uint32_t p_body_shape, u
}
}
-void Area3DSW::add_area_to_query(Area3DSW *p_area, uint32_t p_area_shape, uint32_t p_self_shape) {
+void GodotArea3D::add_area_to_query(GodotArea3D *p_area, uint32_t p_area_shape, uint32_t p_self_shape) {
BodyKey bk(p_area, p_area_shape, p_self_shape);
monitored_areas[bk].inc();
if (!monitor_query_list.in_list()) {
@@ -222,7 +223,7 @@ void Area3DSW::add_area_to_query(Area3DSW *p_area, uint32_t p_area_shape, uint32
}
}
-void Area3DSW::remove_area_from_query(Area3DSW *p_area, uint32_t p_area_shape, uint32_t p_self_shape) {
+void GodotArea3D::remove_area_from_query(GodotArea3D *p_area, uint32_t p_area_shape, uint32_t p_self_shape) {
BodyKey bk(p_area, p_area_shape, p_self_shape);
monitored_areas[bk].dec();
if (!monitor_query_list.in_list()) {
@@ -231,15 +232,15 @@ void Area3DSW::remove_area_from_query(Area3DSW *p_area, uint32_t p_area_shape, u
}
struct AreaCMP {
- Area3DSW *area = nullptr;
+ GodotArea3D *area = nullptr;
int refCount = 0;
_FORCE_INLINE_ bool operator==(const AreaCMP &p_cmp) const { return area->get_self() == p_cmp.area->get_self(); }
_FORCE_INLINE_ bool operator<(const AreaCMP &p_cmp) const { return area->get_priority() < p_cmp.area->get_priority(); }
_FORCE_INLINE_ AreaCMP() {}
- _FORCE_INLINE_ AreaCMP(Area3DSW *p_area) {
+ _FORCE_INLINE_ AreaCMP(GodotArea3D *p_area) {
area = p_area;
refCount = 1;
}
};
-#endif // AREA__SW_H
+#endif // GODOT_AREA_3D_H
diff --git a/servers/physics_3d/area_pair_3d_sw.cpp b/servers/physics_3d/godot_area_pair_3d.cpp
index bf4f0035b4..7453153de6 100644
--- a/servers/physics_3d/area_pair_3d_sw.cpp
+++ b/servers/physics_3d/godot_area_pair_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* area_pair_3d_sw.cpp */
+/* godot_area_pair_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,12 +28,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "area_pair_3d_sw.h"
-#include "collision_solver_3d_sw.h"
+#include "godot_area_pair_3d.h"
-bool AreaPair3DSW::setup(real_t p_step) {
+#include "godot_collision_solver_3d.h"
+
+bool GodotAreaPair3D::setup(real_t p_step) {
bool result = false;
- if (area->collides_with(body) && CollisionSolver3DSW::solve_static(body->get_shape(body_shape), body->get_transform() * body->get_shape_transform(body_shape), area->get_shape(area_shape), area->get_transform() * area->get_shape_transform(area_shape), nullptr, this)) {
+ if (area->collides_with(body) && GodotCollisionSolver3D::solve_static(body->get_shape(body_shape), body->get_transform() * body->get_shape_transform(body_shape), area->get_shape(area_shape), area->get_transform() * area->get_shape_transform(area_shape), nullptr, this)) {
result = true;
}
@@ -51,7 +52,7 @@ bool AreaPair3DSW::setup(real_t p_step) {
return process_collision;
}
-bool AreaPair3DSW::pre_solve(real_t p_step) {
+bool GodotAreaPair3D::pre_solve(real_t p_step) {
if (!process_collision) {
return false;
}
@@ -77,11 +78,11 @@ bool AreaPair3DSW::pre_solve(real_t p_step) {
return false; // Never do any post solving.
}
-void AreaPair3DSW::solve(real_t p_step) {
+void GodotAreaPair3D::solve(real_t p_step) {
// Nothing to do.
}
-AreaPair3DSW::AreaPair3DSW(Body3DSW *p_body, int p_body_shape, Area3DSW *p_area, int p_area_shape) {
+GodotAreaPair3D::GodotAreaPair3D(GodotBody3D *p_body, int p_body_shape, GodotArea3D *p_area, int p_area_shape) {
body = p_body;
area = p_area;
body_shape = p_body_shape;
@@ -93,7 +94,7 @@ AreaPair3DSW::AreaPair3DSW(Body3DSW *p_body, int p_body_shape, Area3DSW *p_area,
}
}
-AreaPair3DSW::~AreaPair3DSW() {
+GodotAreaPair3D::~GodotAreaPair3D() {
if (colliding) {
if (area->get_space_override_mode() != PhysicsServer3D::AREA_SPACE_OVERRIDE_DISABLED) {
body->remove_area(area);
@@ -108,10 +109,10 @@ AreaPair3DSW::~AreaPair3DSW() {
////////////////////////////////////////////////////
-bool Area2Pair3DSW::setup(real_t p_step) {
+bool GodotArea2Pair3D::setup(real_t p_step) {
bool result_a = area_a->collides_with(area_b);
bool result_b = area_b->collides_with(area_a);
- if ((result_a || result_b) && !CollisionSolver3DSW::solve_static(area_a->get_shape(shape_a), area_a->get_transform() * area_a->get_shape_transform(shape_a), area_b->get_shape(shape_b), area_b->get_transform() * area_b->get_shape_transform(shape_b), nullptr, this)) {
+ if ((result_a || result_b) && !GodotCollisionSolver3D::solve_static(area_a->get_shape(shape_a), area_a->get_transform() * area_a->get_shape_transform(shape_a), area_b->get_shape(shape_b), area_b->get_transform() * area_b->get_shape_transform(shape_b), nullptr, this)) {
result_a = false;
result_b = false;
}
@@ -139,7 +140,7 @@ bool Area2Pair3DSW::setup(real_t p_step) {
return process_collision;
}
-bool Area2Pair3DSW::pre_solve(real_t p_step) {
+bool GodotArea2Pair3D::pre_solve(real_t p_step) {
if (process_collision_a) {
if (colliding_a) {
area_a->add_area_to_query(area_b, shape_b, shape_a);
@@ -159,11 +160,11 @@ bool Area2Pair3DSW::pre_solve(real_t p_step) {
return false; // Never do any post solving.
}
-void Area2Pair3DSW::solve(real_t p_step) {
+void GodotArea2Pair3D::solve(real_t p_step) {
// Nothing to do.
}
-Area2Pair3DSW::Area2Pair3DSW(Area3DSW *p_area_a, int p_shape_a, Area3DSW *p_area_b, int p_shape_b) {
+GodotArea2Pair3D::GodotArea2Pair3D(GodotArea3D *p_area_a, int p_shape_a, GodotArea3D *p_area_b, int p_shape_b) {
area_a = p_area_a;
area_b = p_area_b;
shape_a = p_shape_a;
@@ -172,7 +173,7 @@ Area2Pair3DSW::Area2Pair3DSW(Area3DSW *p_area_a, int p_shape_a, Area3DSW *p_area
area_b->add_constraint(this);
}
-Area2Pair3DSW::~Area2Pair3DSW() {
+GodotArea2Pair3D::~GodotArea2Pair3D() {
if (colliding_a) {
if (area_a->has_area_monitor_callback()) {
area_a->remove_area_from_query(area_b, shape_b, shape_a);
@@ -191,11 +192,11 @@ Area2Pair3DSW::~Area2Pair3DSW() {
////////////////////////////////////////////////////
-bool AreaSoftBodyPair3DSW::setup(real_t p_step) {
+bool GodotAreaSoftBodyPair3D::setup(real_t p_step) {
bool result = false;
if (
area->collides_with(soft_body) &&
- CollisionSolver3DSW::solve_static(
+ GodotCollisionSolver3D::solve_static(
soft_body->get_shape(soft_body_shape),
soft_body->get_transform() * soft_body->get_shape_transform(soft_body_shape),
area->get_shape(area_shape),
@@ -219,7 +220,7 @@ bool AreaSoftBodyPair3DSW::setup(real_t p_step) {
return process_collision;
}
-bool AreaSoftBodyPair3DSW::pre_solve(real_t p_step) {
+bool GodotAreaSoftBodyPair3D::pre_solve(real_t p_step) {
if (!process_collision) {
return false;
}
@@ -245,11 +246,11 @@ bool AreaSoftBodyPair3DSW::pre_solve(real_t p_step) {
return false; // Never do any post solving.
}
-void AreaSoftBodyPair3DSW::solve(real_t p_step) {
+void GodotAreaSoftBodyPair3D::solve(real_t p_step) {
// Nothing to do.
}
-AreaSoftBodyPair3DSW::AreaSoftBodyPair3DSW(SoftBody3DSW *p_soft_body, int p_soft_body_shape, Area3DSW *p_area, int p_area_shape) {
+GodotAreaSoftBodyPair3D::GodotAreaSoftBodyPair3D(GodotSoftBody3D *p_soft_body, int p_soft_body_shape, GodotArea3D *p_area, int p_area_shape) {
soft_body = p_soft_body;
area = p_area;
soft_body_shape = p_soft_body_shape;
@@ -258,7 +259,7 @@ AreaSoftBodyPair3DSW::AreaSoftBodyPair3DSW(SoftBody3DSW *p_soft_body, int p_soft
area->add_constraint(this);
}
-AreaSoftBodyPair3DSW::~AreaSoftBodyPair3DSW() {
+GodotAreaSoftBodyPair3D::~GodotAreaSoftBodyPair3D() {
if (colliding) {
if (area->get_space_override_mode() != PhysicsServer3D::AREA_SPACE_OVERRIDE_DISABLED) {
soft_body->remove_area(area);
diff --git a/servers/physics_3d/area_pair_3d_sw.h b/servers/physics_3d/godot_area_pair_3d.h
index 4572dcbb23..f55c03be03 100644
--- a/servers/physics_3d/area_pair_3d_sw.h
+++ b/servers/physics_3d/godot_area_pair_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* area_pair_3d_sw.h */
+/* godot_area_pair_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,17 +28,17 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef AREA_PAIR_SW_H
-#define AREA_PAIR_SW_H
+#ifndef GODOT_AREA_PAIR_3D_H
+#define GODOT_AREA_PAIR_3D_H
-#include "area_3d_sw.h"
-#include "body_3d_sw.h"
-#include "constraint_3d_sw.h"
-#include "soft_body_3d_sw.h"
+#include "godot_area_3d.h"
+#include "godot_body_3d.h"
+#include "godot_constraint_3d.h"
+#include "godot_soft_body_3d.h"
-class AreaPair3DSW : public Constraint3DSW {
- Body3DSW *body;
- Area3DSW *area;
+class GodotAreaPair3D : public GodotConstraint3D {
+ GodotBody3D *body;
+ GodotArea3D *area;
int body_shape;
int area_shape;
bool colliding = false;
@@ -49,13 +49,13 @@ public:
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- AreaPair3DSW(Body3DSW *p_body, int p_body_shape, Area3DSW *p_area, int p_area_shape);
- ~AreaPair3DSW();
+ GodotAreaPair3D(GodotBody3D *p_body, int p_body_shape, GodotArea3D *p_area, int p_area_shape);
+ ~GodotAreaPair3D();
};
-class Area2Pair3DSW : public Constraint3DSW {
- Area3DSW *area_a;
- Area3DSW *area_b;
+class GodotArea2Pair3D : public GodotConstraint3D {
+ GodotArea3D *area_a;
+ GodotArea3D *area_b;
int shape_a;
int shape_b;
bool colliding_a = false;
@@ -68,13 +68,13 @@ public:
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- Area2Pair3DSW(Area3DSW *p_area_a, int p_shape_a, Area3DSW *p_area_b, int p_shape_b);
- ~Area2Pair3DSW();
+ GodotArea2Pair3D(GodotArea3D *p_area_a, int p_shape_a, GodotArea3D *p_area_b, int p_shape_b);
+ ~GodotArea2Pair3D();
};
-class AreaSoftBodyPair3DSW : public Constraint3DSW {
- SoftBody3DSW *soft_body;
- Area3DSW *area;
+class GodotAreaSoftBodyPair3D : public GodotConstraint3D {
+ GodotSoftBody3D *soft_body;
+ GodotArea3D *area;
int soft_body_shape;
int area_shape;
bool colliding = false;
@@ -85,8 +85,8 @@ public:
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- AreaSoftBodyPair3DSW(SoftBody3DSW *p_sof_body, int p_soft_body_shape, Area3DSW *p_area, int p_area_shape);
- ~AreaSoftBodyPair3DSW();
+ GodotAreaSoftBodyPair3D(GodotSoftBody3D *p_sof_body, int p_soft_body_shape, GodotArea3D *p_area, int p_area_shape);
+ ~GodotAreaSoftBodyPair3D();
};
-#endif // AREA_PAIR__SW_H
+#endif // GODOT_AREA_PAIR_3D_H
diff --git a/servers/physics_3d/body_3d_sw.cpp b/servers/physics_3d/godot_body_3d.cpp
index 069374d122..02929eeaed 100644
--- a/servers/physics_3d/body_3d_sw.cpp
+++ b/servers/physics_3d/godot_body_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_3d_sw.cpp */
+/* godot_body_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,19 +28,19 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "body_3d_sw.h"
+#include "godot_body_3d.h"
-#include "area_3d_sw.h"
-#include "body_direct_state_3d_sw.h"
-#include "space_3d_sw.h"
+#include "godot_area_3d.h"
+#include "godot_body_direct_state_3d.h"
+#include "godot_space_3d.h"
-void Body3DSW::_mass_properties_changed() {
+void GodotBody3D::_mass_properties_changed() {
if (get_space() && !mass_properties_update_list.in_list() && (calculate_inertia || calculate_center_of_mass)) {
get_space()->body_add_to_mass_properties_update_list(&mass_properties_update_list);
}
}
-void Body3DSW::_update_transform_dependant() {
+void GodotBody3D::_update_transform_dependent() {
center_of_mass = get_transform().basis.xform(center_of_mass_local);
principal_inertia_axes = get_transform().basis * principal_inertia_axes_local;
@@ -52,7 +52,7 @@ void Body3DSW::_update_transform_dependant() {
_inv_inertia_tensor = tb * diag * tbt;
}
-void Body3DSW::update_mass_properties() {
+void GodotBody3D::update_mass_properties() {
// Update shapes and motions.
switch (mode) {
@@ -106,7 +106,7 @@ void Body3DSW::update_mass_properties() {
inertia_set = true;
- const Shape3DSW *shape = get_shape(i);
+ const GodotShape3D *shape = get_shape(i);
real_t mass = area * this->mass / total_area;
@@ -161,16 +161,16 @@ void Body3DSW::update_mass_properties() {
} break;
}
- _update_transform_dependant();
+ _update_transform_dependent();
}
-void Body3DSW::reset_mass_properties() {
+void GodotBody3D::reset_mass_properties() {
calculate_inertia = true;
calculate_center_of_mass = true;
_mass_properties_changed();
}
-void Body3DSW::set_active(bool p_active) {
+void GodotBody3D::set_active(bool p_active) {
if (active == p_active) {
return;
}
@@ -189,7 +189,7 @@ void Body3DSW::set_active(bool p_active) {
}
}
-void Body3DSW::set_param(PhysicsServer3D::BodyParameter p_param, const Variant &p_value) {
+void GodotBody3D::set_param(PhysicsServer3D::BodyParameter p_param, const Variant &p_value) {
switch (p_param) {
case PhysicsServer3D::BODY_PARAM_BOUNCE: {
bounce = p_value;
@@ -217,14 +217,14 @@ void Body3DSW::set_param(PhysicsServer3D::BodyParameter p_param, const Variant &
if (mode == PhysicsServer3D::BODY_MODE_DYNAMIC) {
principal_inertia_axes_local = Basis();
_inv_inertia = inertia.inverse();
- _update_transform_dependant();
+ _update_transform_dependent();
}
}
} break;
case PhysicsServer3D::BODY_PARAM_CENTER_OF_MASS: {
calculate_center_of_mass = false;
center_of_mass_local = p_value;
- _update_transform_dependant();
+ _update_transform_dependent();
} break;
case PhysicsServer3D::BODY_PARAM_GRAVITY_SCALE: {
gravity_scale = p_value;
@@ -240,7 +240,7 @@ void Body3DSW::set_param(PhysicsServer3D::BodyParameter p_param, const Variant &
}
}
-Variant Body3DSW::get_param(PhysicsServer3D::BodyParameter p_param) const {
+Variant GodotBody3D::get_param(PhysicsServer3D::BodyParameter p_param) const {
switch (p_param) {
case PhysicsServer3D::BODY_PARAM_BOUNCE: {
return bounce;
@@ -278,7 +278,7 @@ Variant Body3DSW::get_param(PhysicsServer3D::BodyParameter p_param) const {
return 0;
}
-void Body3DSW::set_mode(PhysicsServer3D::BodyMode p_mode) {
+void GodotBody3D::set_mode(PhysicsServer3D::BodyMode p_mode) {
PhysicsServer3D::BodyMode prev = mode;
mode = p_mode;
@@ -295,7 +295,7 @@ void Body3DSW::set_mode(PhysicsServer3D::BodyMode p_mode) {
if (mode == PhysicsServer3D::BODY_MODE_KINEMATIC && prev != mode) {
first_time_kinematic = true;
}
- _update_transform_dependant();
+ _update_transform_dependent();
} break;
case PhysicsServer3D::BODY_MODE_DYNAMIC: {
@@ -303,7 +303,7 @@ void Body3DSW::set_mode(PhysicsServer3D::BodyMode p_mode) {
if (!calculate_inertia) {
principal_inertia_axes_local = Basis();
_inv_inertia = inertia.inverse();
- _update_transform_dependant();
+ _update_transform_dependent();
}
_mass_properties_changed();
_set_static(false);
@@ -314,22 +314,24 @@ void Body3DSW::set_mode(PhysicsServer3D::BodyMode p_mode) {
_inv_mass = mass > 0 ? (1.0 / mass) : 0;
_inv_inertia = Vector3();
angular_velocity = Vector3();
- _update_transform_dependant();
+ _update_transform_dependent();
_set_static(false);
set_active(true);
}
}
}
-PhysicsServer3D::BodyMode Body3DSW::get_mode() const {
+PhysicsServer3D::BodyMode GodotBody3D::get_mode() const {
return mode;
}
-void Body3DSW::_shapes_changed() {
+void GodotBody3D::_shapes_changed() {
_mass_properties_changed();
+ wakeup();
+ wakeup_neighbours();
}
-void Body3DSW::set_state(PhysicsServer3D::BodyState p_state, const Variant &p_variant) {
+void GodotBody3D::set_state(PhysicsServer3D::BodyState p_state, const Variant &p_variant) {
switch (p_state) {
case PhysicsServer3D::BODY_STATE_TRANSFORM: {
if (mode == PhysicsServer3D::BODY_MODE_KINEMATIC) {
@@ -355,6 +357,7 @@ void Body3DSW::set_state(PhysicsServer3D::BodyState p_state, const Variant &p_va
}
_set_transform(t);
_set_inv_transform(get_transform().inverse());
+ _update_transform_dependent();
}
wakeup();
@@ -395,7 +398,7 @@ void Body3DSW::set_state(PhysicsServer3D::BodyState p_state, const Variant &p_va
}
}
-Variant Body3DSW::get_state(PhysicsServer3D::BodyState p_state) const {
+Variant GodotBody3D::get_state(PhysicsServer3D::BodyState p_state) const {
switch (p_state) {
case PhysicsServer3D::BODY_STATE_TRANSFORM: {
return get_transform();
@@ -417,7 +420,7 @@ Variant Body3DSW::get_state(PhysicsServer3D::BodyState p_state) const {
return Variant();
}
-void Body3DSW::set_space(Space3DSW *p_space) {
+void GodotBody3D::set_space(GodotSpace3D *p_space) {
if (get_space()) {
if (mass_properties_update_list.in_list()) {
get_space()->body_remove_from_mass_properties_update_list(&mass_properties_update_list);
@@ -440,7 +443,7 @@ void Body3DSW::set_space(Space3DSW *p_space) {
}
}
-void Body3DSW::_compute_area_gravity_and_damping(const Area3DSW *p_area) {
+void GodotBody3D::_compute_area_gravity_and_damping(const GodotArea3D *p_area) {
Vector3 area_gravity;
p_area->compute_gravity(get_transform().get_origin(), area_gravity);
gravity += area_gravity;
@@ -449,7 +452,7 @@ void Body3DSW::_compute_area_gravity_and_damping(const Area3DSW *p_area) {
area_angular_damp += p_area->get_angular_damp();
}
-void Body3DSW::set_axis_lock(PhysicsServer3D::BodyAxis p_axis, bool lock) {
+void GodotBody3D::set_axis_lock(PhysicsServer3D::BodyAxis p_axis, bool lock) {
if (lock) {
locked_axis |= p_axis;
} else {
@@ -457,17 +460,16 @@ void Body3DSW::set_axis_lock(PhysicsServer3D::BodyAxis p_axis, bool lock) {
}
}
-bool Body3DSW::is_axis_locked(PhysicsServer3D::BodyAxis p_axis) const {
+bool GodotBody3D::is_axis_locked(PhysicsServer3D::BodyAxis p_axis) const {
return locked_axis & p_axis;
}
-void Body3DSW::integrate_forces(real_t p_step) {
+void GodotBody3D::integrate_forces(real_t p_step) {
if (mode == PhysicsServer3D::BODY_MODE_STATIC) {
return;
}
- Area3DSW *def_area = get_space()->get_default_area();
- // AreaSW *damp_area = def_area;
+ GodotArea3D *def_area = get_space()->get_default_area();
ERR_FAIL_COND(!def_area);
@@ -591,7 +593,7 @@ void Body3DSW::integrate_forces(real_t p_step) {
contact_count = 0;
}
-void Body3DSW::integrate_velocities(real_t p_step) {
+void GodotBody3D::integrate_velocities(real_t p_step) {
if (mode == PhysicsServer3D::BODY_MODE_STATIC) {
return;
}
@@ -652,52 +654,20 @@ void Body3DSW::integrate_velocities(real_t p_step) {
_set_transform(transform);
_set_inv_transform(get_transform().inverse());
- _update_transform_dependant();
+ _update_transform_dependent();
}
-/*
-void BodySW::simulate_motion(const Transform3D& p_xform,real_t p_step) {
- Transform3D inv_xform = p_xform.affine_inverse();
- if (!get_space()) {
- _set_transform(p_xform);
- _set_inv_transform(inv_xform);
-
- return;
- }
-
- //compute a FAKE linear velocity - this is easy
-
- linear_velocity=(p_xform.origin - get_transform().origin)/p_step;
-
- //compute a FAKE angular velocity, not so easy
- Basis rot=get_transform().basis.orthonormalized().transposed() * p_xform.basis.orthonormalized();
- Vector3 axis;
- real_t angle;
-
- rot.get_axis_angle(axis,angle);
- axis.normalize();
- angular_velocity=axis.normalized() * (angle/p_step);
- linear_velocity = (p_xform.origin - get_transform().origin)/p_step;
-
- if (!direct_state_query_list.in_list())// - callalways, so lv and av are cleared && (state_query || direct_state_query))
- get_space()->body_add_to_state_query_list(&direct_state_query_list);
- simulated_motion=true;
- _set_transform(p_xform);
-}
-
-*/
-
-void Body3DSW::wakeup_neighbours() {
- for (const KeyValue<Constraint3DSW *, int> &E : constraint_map) {
- const Constraint3DSW *c = E.key;
- Body3DSW **n = c->get_body_ptr();
+void GodotBody3D::wakeup_neighbours() {
+ for (const KeyValue<GodotConstraint3D *, int> &E : constraint_map) {
+ const GodotConstraint3D *c = E.key;
+ GodotBody3D **n = c->get_body_ptr();
int bc = c->get_body_count();
for (int i = 0; i < bc; i++) {
if (i == E.value) {
continue;
}
- Body3DSW *b = n[i];
+ GodotBody3D *b = n[i];
if (b->mode < PhysicsServer3D::BODY_MODE_DYNAMIC) {
continue;
}
@@ -709,7 +679,7 @@ void Body3DSW::wakeup_neighbours() {
}
}
-void Body3DSW::call_queries() {
+void GodotBody3D::call_queries() {
if (fi_callback_data) {
if (!fi_callback_data->callable.get_object()) {
set_force_integration_callback(Callable());
@@ -729,7 +699,7 @@ void Body3DSW::call_queries() {
}
}
-bool Body3DSW::sleep_test(real_t p_step) {
+bool GodotBody3D::sleep_test(real_t p_step) {
if (mode == PhysicsServer3D::BODY_MODE_STATIC || mode == PhysicsServer3D::BODY_MODE_KINEMATIC) {
return true;
} else if (!can_sleep) {
@@ -746,12 +716,12 @@ bool Body3DSW::sleep_test(real_t p_step) {
}
}
-void Body3DSW::set_state_sync_callback(void *p_instance, PhysicsServer3D::BodyStateCallback p_callback) {
+void GodotBody3D::set_state_sync_callback(void *p_instance, PhysicsServer3D::BodyStateCallback p_callback) {
body_state_callback_instance = p_instance;
body_state_callback = p_callback;
}
-void Body3DSW::set_force_integration_callback(const Callable &p_callable, const Variant &p_udata) {
+void GodotBody3D::set_force_integration_callback(const Callable &p_callable, const Variant &p_udata) {
if (p_callable.get_object()) {
if (!fi_callback_data) {
fi_callback_data = memnew(ForceIntegrationCallbackData);
@@ -764,23 +734,23 @@ void Body3DSW::set_force_integration_callback(const Callable &p_callable, const
}
}
-PhysicsDirectBodyState3DSW *Body3DSW::get_direct_state() {
+GodotPhysicsDirectBodyState3D *GodotBody3D::get_direct_state() {
if (!direct_state) {
- direct_state = memnew(PhysicsDirectBodyState3DSW);
+ direct_state = memnew(GodotPhysicsDirectBodyState3D);
direct_state->body = this;
}
return direct_state;
}
-Body3DSW::Body3DSW() :
- CollisionObject3DSW(TYPE_BODY),
+GodotBody3D::GodotBody3D() :
+ GodotCollisionObject3D(TYPE_BODY),
active_list(this),
mass_properties_update_list(this),
direct_state_query_list(this) {
_set_static(false);
}
-Body3DSW::~Body3DSW() {
+GodotBody3D::~GodotBody3D() {
if (fi_callback_data) {
memdelete(fi_callback_data);
}
diff --git a/servers/physics_3d/body_3d_sw.h b/servers/physics_3d/godot_body_3d.h
index fc47040389..5acdab9d13 100644
--- a/servers/physics_3d/body_3d_sw.h
+++ b/servers/physics_3d/godot_body_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_3d_sw.h */
+/* godot_body_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,17 +28,18 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BODY_3D_SW_H
-#define BODY_3D_SW_H
+#ifndef GODOT_BODY_3D_H
+#define GODOT_BODY_3D_H
+
+#include "godot_area_3d.h"
+#include "godot_collision_object_3d.h"
-#include "area_3d_sw.h"
-#include "collision_object_3d_sw.h"
#include "core/templates/vset.h"
-class Constraint3DSW;
-class PhysicsDirectBodyState3DSW;
+class GodotConstraint3D;
+class GodotPhysicsDirectBodyState3D;
-class Body3DSW : public CollisionObject3DSW {
+class GodotBody3D : public GodotCollisionObject3D {
PhysicsServer3D::BodyMode mode = PhysicsServer3D::BODY_MODE_DYNAMIC;
Vector3 linear_velocity;
@@ -85,9 +86,9 @@ class Body3DSW : public CollisionObject3DSW {
real_t area_angular_damp = 0.0;
real_t area_linear_damp = 0.0;
- SelfList<Body3DSW> active_list;
- SelfList<Body3DSW> mass_properties_update_list;
- SelfList<Body3DSW> direct_state_query_list;
+ SelfList<GodotBody3D> active_list;
+ SelfList<GodotBody3D> mass_properties_update_list;
+ SelfList<GodotBody3D> direct_state_query_list;
VSet<RID> exceptions;
bool omit_force_integration = false;
@@ -101,7 +102,7 @@ class Body3DSW : public CollisionObject3DSW {
virtual void _shapes_changed();
Transform3D new_transform;
- Map<Constraint3DSW *, int> constraint_map;
+ Map<GodotConstraint3D *, int> constraint_map;
Vector<AreaCMP> areas;
@@ -130,23 +131,23 @@ class Body3DSW : public CollisionObject3DSW {
ForceIntegrationCallbackData *fi_callback_data = nullptr;
- PhysicsDirectBodyState3DSW *direct_state = nullptr;
+ GodotPhysicsDirectBodyState3D *direct_state = nullptr;
uint64_t island_step = 0;
- _FORCE_INLINE_ void _compute_area_gravity_and_damping(const Area3DSW *p_area);
+ void _compute_area_gravity_and_damping(const GodotArea3D *p_area);
- _FORCE_INLINE_ void _update_transform_dependant();
+ void _update_transform_dependent();
- friend class PhysicsDirectBodyState3DSW; // i give up, too many functions to expose
+ friend class GodotPhysicsDirectBodyState3D; // i give up, too many functions to expose
public:
void set_state_sync_callback(void *p_instance, PhysicsServer3D::BodyStateCallback p_callback);
void set_force_integration_callback(const Callable &p_callable, const Variant &p_udata = Variant());
- PhysicsDirectBodyState3DSW *get_direct_state();
+ GodotPhysicsDirectBodyState3D *get_direct_state();
- _FORCE_INLINE_ void add_area(Area3DSW *p_area) {
+ _FORCE_INLINE_ void add_area(GodotArea3D *p_area) {
int index = areas.find(AreaCMP(p_area));
if (index > -1) {
areas.write[index].refCount += 1;
@@ -155,7 +156,7 @@ public:
}
}
- _FORCE_INLINE_ void remove_area(Area3DSW *p_area) {
+ _FORCE_INLINE_ void remove_area(GodotArea3D *p_area) {
int index = areas.find(AreaCMP(p_area));
if (index > -1) {
areas.write[index].refCount -= 1;
@@ -185,9 +186,9 @@ public:
_FORCE_INLINE_ uint64_t get_island_step() const { return island_step; }
_FORCE_INLINE_ void set_island_step(uint64_t p_step) { island_step = p_step; }
- _FORCE_INLINE_ void add_constraint(Constraint3DSW *p_constraint, int p_pos) { constraint_map[p_constraint] = p_pos; }
- _FORCE_INLINE_ void remove_constraint(Constraint3DSW *p_constraint) { constraint_map.erase(p_constraint); }
- const Map<Constraint3DSW *, int> &get_constraint_map() const { return constraint_map; }
+ _FORCE_INLINE_ void add_constraint(GodotConstraint3D *p_constraint, int p_pos) { constraint_map[p_constraint] = p_pos; }
+ _FORCE_INLINE_ void remove_constraint(GodotConstraint3D *p_constraint) { constraint_map.erase(p_constraint); }
+ const Map<GodotConstraint3D *, int> &get_constraint_map() const { return constraint_map; }
_FORCE_INLINE_ void clear_constraint_map() { constraint_map.clear(); }
_FORCE_INLINE_ void set_omit_force_integration(bool p_omit_force_integration) { omit_force_integration = p_omit_force_integration; }
@@ -275,7 +276,7 @@ public:
_FORCE_INLINE_ void set_continuous_collision_detection(bool p_enable) { continuous_cd = p_enable; }
_FORCE_INLINE_ bool is_continuous_collision_detection_enabled() const { return continuous_cd; }
- void set_space(Space3DSW *p_space);
+ void set_space(GodotSpace3D *p_space);
void update_mass_properties();
void reset_mass_properties();
@@ -317,13 +318,13 @@ public:
bool sleep_test(real_t p_step);
- Body3DSW();
- ~Body3DSW();
+ GodotBody3D();
+ ~GodotBody3D();
};
//add contact inline
-void Body3DSW::add_contact(const Vector3 &p_local_pos, const Vector3 &p_local_normal, real_t p_depth, int p_local_shape, const Vector3 &p_collider_pos, int p_collider_shape, ObjectID p_collider_instance_id, const RID &p_collider, const Vector3 &p_collider_velocity_at_pos) {
+void GodotBody3D::add_contact(const Vector3 &p_local_pos, const Vector3 &p_local_normal, real_t p_depth, int p_local_shape, const Vector3 &p_collider_pos, int p_collider_shape, ObjectID p_collider_instance_id, const RID &p_collider, const Vector3 &p_collider_velocity_at_pos) {
int c_max = contacts.size();
if (c_max == 0) {
@@ -365,4 +366,4 @@ void Body3DSW::add_contact(const Vector3 &p_local_pos, const Vector3 &p_local_no
c[idx].collider_velocity_at_pos = p_collider_velocity_at_pos;
}
-#endif // BODY_3D_SW_H
+#endif // GODOT_BODY_3D_H
diff --git a/servers/physics_3d/body_direct_state_3d_sw.cpp b/servers/physics_3d/godot_body_direct_state_3d.cpp
index d61a6ac8e4..db09657f8a 100644
--- a/servers/physics_3d/body_direct_state_3d_sw.cpp
+++ b/servers/physics_3d/godot_body_direct_state_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_direct_state_3d_sw.cpp */
+/* godot_body_direct_state_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,163 +28,163 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "body_direct_state_3d_sw.h"
+#include "godot_body_direct_state_3d.h"
-#include "body_3d_sw.h"
-#include "space_3d_sw.h"
+#include "godot_body_3d.h"
+#include "godot_space_3d.h"
-Vector3 PhysicsDirectBodyState3DSW::get_total_gravity() const {
+Vector3 GodotPhysicsDirectBodyState3D::get_total_gravity() const {
return body->gravity;
}
-real_t PhysicsDirectBodyState3DSW::get_total_angular_damp() const {
+real_t GodotPhysicsDirectBodyState3D::get_total_angular_damp() const {
return body->area_angular_damp;
}
-real_t PhysicsDirectBodyState3DSW::get_total_linear_damp() const {
+real_t GodotPhysicsDirectBodyState3D::get_total_linear_damp() const {
return body->area_linear_damp;
}
-Vector3 PhysicsDirectBodyState3DSW::get_center_of_mass() const {
+Vector3 GodotPhysicsDirectBodyState3D::get_center_of_mass() const {
return body->get_center_of_mass();
}
-Basis PhysicsDirectBodyState3DSW::get_principal_inertia_axes() const {
+Basis GodotPhysicsDirectBodyState3D::get_principal_inertia_axes() const {
return body->get_principal_inertia_axes();
}
-real_t PhysicsDirectBodyState3DSW::get_inverse_mass() const {
+real_t GodotPhysicsDirectBodyState3D::get_inverse_mass() const {
return body->get_inv_mass();
}
-Vector3 PhysicsDirectBodyState3DSW::get_inverse_inertia() const {
+Vector3 GodotPhysicsDirectBodyState3D::get_inverse_inertia() const {
return body->get_inv_inertia();
}
-Basis PhysicsDirectBodyState3DSW::get_inverse_inertia_tensor() const {
+Basis GodotPhysicsDirectBodyState3D::get_inverse_inertia_tensor() const {
return body->get_inv_inertia_tensor();
}
-void PhysicsDirectBodyState3DSW::set_linear_velocity(const Vector3 &p_velocity) {
+void GodotPhysicsDirectBodyState3D::set_linear_velocity(const Vector3 &p_velocity) {
body->wakeup();
body->set_linear_velocity(p_velocity);
}
-Vector3 PhysicsDirectBodyState3DSW::get_linear_velocity() const {
+Vector3 GodotPhysicsDirectBodyState3D::get_linear_velocity() const {
return body->get_linear_velocity();
}
-void PhysicsDirectBodyState3DSW::set_angular_velocity(const Vector3 &p_velocity) {
+void GodotPhysicsDirectBodyState3D::set_angular_velocity(const Vector3 &p_velocity) {
body->wakeup();
body->set_angular_velocity(p_velocity);
}
-Vector3 PhysicsDirectBodyState3DSW::get_angular_velocity() const {
+Vector3 GodotPhysicsDirectBodyState3D::get_angular_velocity() const {
return body->get_angular_velocity();
}
-void PhysicsDirectBodyState3DSW::set_transform(const Transform3D &p_transform) {
+void GodotPhysicsDirectBodyState3D::set_transform(const Transform3D &p_transform) {
body->set_state(PhysicsServer3D::BODY_STATE_TRANSFORM, p_transform);
}
-Transform3D PhysicsDirectBodyState3DSW::get_transform() const {
+Transform3D GodotPhysicsDirectBodyState3D::get_transform() const {
return body->get_transform();
}
-Vector3 PhysicsDirectBodyState3DSW::get_velocity_at_local_position(const Vector3 &p_position) const {
+Vector3 GodotPhysicsDirectBodyState3D::get_velocity_at_local_position(const Vector3 &p_position) const {
return body->get_velocity_in_local_point(p_position);
}
-void PhysicsDirectBodyState3DSW::add_central_force(const Vector3 &p_force) {
+void GodotPhysicsDirectBodyState3D::add_central_force(const Vector3 &p_force) {
body->wakeup();
body->add_central_force(p_force);
}
-void PhysicsDirectBodyState3DSW::add_force(const Vector3 &p_force, const Vector3 &p_position) {
+void GodotPhysicsDirectBodyState3D::add_force(const Vector3 &p_force, const Vector3 &p_position) {
body->wakeup();
body->add_force(p_force, p_position);
}
-void PhysicsDirectBodyState3DSW::add_torque(const Vector3 &p_torque) {
+void GodotPhysicsDirectBodyState3D::add_torque(const Vector3 &p_torque) {
body->wakeup();
body->add_torque(p_torque);
}
-void PhysicsDirectBodyState3DSW::apply_central_impulse(const Vector3 &p_impulse) {
+void GodotPhysicsDirectBodyState3D::apply_central_impulse(const Vector3 &p_impulse) {
body->wakeup();
body->apply_central_impulse(p_impulse);
}
-void PhysicsDirectBodyState3DSW::apply_impulse(const Vector3 &p_impulse, const Vector3 &p_position) {
+void GodotPhysicsDirectBodyState3D::apply_impulse(const Vector3 &p_impulse, const Vector3 &p_position) {
body->wakeup();
body->apply_impulse(p_impulse, p_position);
}
-void PhysicsDirectBodyState3DSW::apply_torque_impulse(const Vector3 &p_impulse) {
+void GodotPhysicsDirectBodyState3D::apply_torque_impulse(const Vector3 &p_impulse) {
body->wakeup();
body->apply_torque_impulse(p_impulse);
}
-void PhysicsDirectBodyState3DSW::set_sleep_state(bool p_sleep) {
+void GodotPhysicsDirectBodyState3D::set_sleep_state(bool p_sleep) {
body->set_active(!p_sleep);
}
-bool PhysicsDirectBodyState3DSW::is_sleeping() const {
+bool GodotPhysicsDirectBodyState3D::is_sleeping() const {
return !body->is_active();
}
-int PhysicsDirectBodyState3DSW::get_contact_count() const {
+int GodotPhysicsDirectBodyState3D::get_contact_count() const {
return body->contact_count;
}
-Vector3 PhysicsDirectBodyState3DSW::get_contact_local_position(int p_contact_idx) const {
+Vector3 GodotPhysicsDirectBodyState3D::get_contact_local_position(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, Vector3());
return body->contacts[p_contact_idx].local_pos;
}
-Vector3 PhysicsDirectBodyState3DSW::get_contact_local_normal(int p_contact_idx) const {
+Vector3 GodotPhysicsDirectBodyState3D::get_contact_local_normal(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, Vector3());
return body->contacts[p_contact_idx].local_normal;
}
-real_t PhysicsDirectBodyState3DSW::get_contact_impulse(int p_contact_idx) const {
+real_t GodotPhysicsDirectBodyState3D::get_contact_impulse(int p_contact_idx) const {
return 0.0f; // Only implemented for bullet
}
-int PhysicsDirectBodyState3DSW::get_contact_local_shape(int p_contact_idx) const {
+int GodotPhysicsDirectBodyState3D::get_contact_local_shape(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, -1);
return body->contacts[p_contact_idx].local_shape;
}
-RID PhysicsDirectBodyState3DSW::get_contact_collider(int p_contact_idx) const {
+RID GodotPhysicsDirectBodyState3D::get_contact_collider(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, RID());
return body->contacts[p_contact_idx].collider;
}
-Vector3 PhysicsDirectBodyState3DSW::get_contact_collider_position(int p_contact_idx) const {
+Vector3 GodotPhysicsDirectBodyState3D::get_contact_collider_position(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, Vector3());
return body->contacts[p_contact_idx].collider_pos;
}
-ObjectID PhysicsDirectBodyState3DSW::get_contact_collider_id(int p_contact_idx) const {
+ObjectID GodotPhysicsDirectBodyState3D::get_contact_collider_id(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, ObjectID());
return body->contacts[p_contact_idx].collider_instance_id;
}
-int PhysicsDirectBodyState3DSW::get_contact_collider_shape(int p_contact_idx) const {
+int GodotPhysicsDirectBodyState3D::get_contact_collider_shape(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, 0);
return body->contacts[p_contact_idx].collider_shape;
}
-Vector3 PhysicsDirectBodyState3DSW::get_contact_collider_velocity_at_position(int p_contact_idx) const {
+Vector3 GodotPhysicsDirectBodyState3D::get_contact_collider_velocity_at_position(int p_contact_idx) const {
ERR_FAIL_INDEX_V(p_contact_idx, body->contact_count, Vector3());
return body->contacts[p_contact_idx].collider_velocity_at_pos;
}
-PhysicsDirectSpaceState3D *PhysicsDirectBodyState3DSW::get_space_state() {
+PhysicsDirectSpaceState3D *GodotPhysicsDirectBodyState3D::get_space_state() {
return body->get_space()->get_direct_state();
}
-real_t PhysicsDirectBodyState3DSW::get_step() const {
+real_t GodotPhysicsDirectBodyState3D::get_step() const {
return body->get_space()->get_last_step();
}
diff --git a/servers/physics_3d/body_direct_state_3d_sw.h b/servers/physics_3d/godot_body_direct_state_3d.h
index 5132376715..6c584a2634 100644
--- a/servers/physics_3d/body_direct_state_3d_sw.h
+++ b/servers/physics_3d/godot_body_direct_state_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_direct_state_3d_sw.h */
+/* godot_body_direct_state_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,18 +28,18 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BODY_DIRECT_STATE_3D_SW_H
-#define BODY_DIRECT_STATE_3D_SW_H
+#ifndef GODOT_BODY_DIRECT_STATE_3D_H
+#define GODOT_BODY_DIRECT_STATE_3D_H
#include "servers/physics_server_3d.h"
-class Body3DSW;
+class GodotBody3D;
-class PhysicsDirectBodyState3DSW : public PhysicsDirectBodyState3D {
- GDCLASS(PhysicsDirectBodyState3DSW, PhysicsDirectBodyState3D);
+class GodotPhysicsDirectBodyState3D : public PhysicsDirectBodyState3D {
+ GDCLASS(GodotPhysicsDirectBodyState3D, PhysicsDirectBodyState3D);
public:
- Body3DSW *body = nullptr;
+ GodotBody3D *body = nullptr;
virtual Vector3 get_total_gravity() const override;
virtual real_t get_total_angular_damp() const override;
@@ -91,4 +91,4 @@ public:
virtual real_t get_step() const override;
};
-#endif // BODY_DIRECT_STATE_3D_SW_H
+#endif // GODOT_BODY_DIRECT_STATE_3D_H
diff --git a/servers/physics_3d/body_pair_3d_sw.cpp b/servers/physics_3d/godot_body_pair_3d.cpp
index c27a2ecced..457abfb71a 100644
--- a/servers/physics_3d/body_pair_3d_sw.cpp
+++ b/servers/physics_3d/godot_body_pair_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_pair_3d_sw.cpp */
+/* godot_body_pair_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,11 +28,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "body_pair_3d_sw.h"
+#include "godot_body_pair_3d.h"
+
+#include "godot_collision_solver_3d.h"
+#include "godot_space_3d.h"
-#include "collision_solver_3d_sw.h"
#include "core/os/os.h"
-#include "space_3d_sw.h"
/*
#define NO_ACCUMULATE_IMPULSES
@@ -49,12 +50,12 @@
#define MIN_VELOCITY 0.0001
#define MAX_BIAS_ROTATION (Math_PI / 8)
-void BodyPair3DSW::_contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata) {
- BodyPair3DSW *pair = (BodyPair3DSW *)p_userdata;
+void GodotBodyPair3D::_contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata) {
+ GodotBodyPair3D *pair = (GodotBodyPair3D *)p_userdata;
pair->contact_added_callback(p_point_A, p_index_A, p_point_B, p_index_B);
}
-void BodyPair3DSW::contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B) {
+void GodotBodyPair3D::contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B) {
// check if we already have the contact
//Vector3 local_A = A->get_inv_transform().xform(p_point_A);
@@ -135,7 +136,7 @@ void BodyPair3DSW::contact_added_callback(const Vector3 &p_point_A, int p_index_
}
}
-void BodyPair3DSW::validate_contacts() {
+void GodotBodyPair3D::validate_contacts() {
//make sure to erase contacts that are no longer valid
real_t contact_max_separation = space->get_contact_max_separation();
@@ -161,7 +162,7 @@ void BodyPair3DSW::validate_contacts() {
}
}
-bool BodyPair3DSW::_test_ccd(real_t p_step, Body3DSW *p_A, int p_shape_A, const Transform3D &p_xform_A, Body3DSW *p_B, int p_shape_B, const Transform3D &p_xform_B) {
+bool GodotBodyPair3D::_test_ccd(real_t p_step, GodotBody3D *p_A, int p_shape_A, const Transform3D &p_xform_A, GodotBody3D *p_B, int p_shape_B, const Transform3D &p_xform_B) {
Vector3 motion = p_A->get_linear_velocity() * p_step;
real_t mlen = motion.length();
if (mlen < CMP_EPSILON) {
@@ -203,15 +204,15 @@ bool BodyPair3DSW::_test_ccd(real_t p_step, Body3DSW *p_A, int p_shape_A, const
return true;
}
-real_t combine_bounce(Body3DSW *A, Body3DSW *B) {
+real_t combine_bounce(GodotBody3D *A, GodotBody3D *B) {
return CLAMP(A->get_bounce() + B->get_bounce(), 0, 1);
}
-real_t combine_friction(Body3DSW *A, Body3DSW *B) {
+real_t combine_friction(GodotBody3D *A, GodotBody3D *B) {
return ABS(MIN(A->get_friction(), B->get_friction()));
}
-bool BodyPair3DSW::setup(real_t p_step) {
+bool GodotBodyPair3D::setup(real_t p_step) {
if (!A->interacts_with(B) || A->has_exception(B->get_self()) || B->has_exception(A->get_self())) {
collided = false;
return false;
@@ -242,10 +243,10 @@ bool BodyPair3DSW::setup(real_t p_step) {
xform_Bu.origin -= offset_A;
Transform3D xform_B = xform_Bu * B->get_shape_transform(shape_B);
- Shape3DSW *shape_A_ptr = A->get_shape(shape_A);
- Shape3DSW *shape_B_ptr = B->get_shape(shape_B);
+ GodotShape3D *shape_A_ptr = A->get_shape(shape_A);
+ GodotShape3D *shape_B_ptr = B->get_shape(shape_B);
- collided = CollisionSolver3DSW::solve_static(shape_A_ptr, xform_A, shape_B_ptr, xform_B, _contact_added_callback, this, &sep_axis);
+ collided = GodotCollisionSolver3D::solve_static(shape_A_ptr, xform_A, shape_B_ptr, xform_B, _contact_added_callback, this, &sep_axis);
if (!collided) {
//test ccd (currently just a raycast)
@@ -264,7 +265,7 @@ bool BodyPair3DSW::setup(real_t p_step) {
return true;
}
-bool BodyPair3DSW::pre_solve(real_t p_step) {
+bool GodotBodyPair3D::pre_solve(real_t p_step) {
if (!collided) {
return false;
}
@@ -273,8 +274,8 @@ bool BodyPair3DSW::pre_solve(real_t p_step) {
real_t bias = (real_t)0.3;
- Shape3DSW *shape_A_ptr = A->get_shape(shape_A);
- Shape3DSW *shape_B_ptr = B->get_shape(shape_B);
+ GodotShape3D *shape_A_ptr = A->get_shape(shape_A);
+ GodotShape3D *shape_B_ptr = B->get_shape(shape_B);
if (shape_A_ptr->get_custom_bias() || shape_B_ptr->get_custom_bias()) {
if (shape_A_ptr->get_custom_bias() == 0) {
@@ -380,7 +381,7 @@ bool BodyPair3DSW::pre_solve(real_t p_step) {
return do_process;
}
-void BodyPair3DSW::solve(real_t p_step) {
+void GodotBodyPair3D::solve(real_t p_step) {
if (!collided) {
return;
}
@@ -523,8 +524,8 @@ void BodyPair3DSW::solve(real_t p_step) {
}
}
-BodyPair3DSW::BodyPair3DSW(Body3DSW *p_A, int p_shape_A, Body3DSW *p_B, int p_shape_B) :
- BodyContact3DSW(_arr, 2) {
+GodotBodyPair3D::GodotBodyPair3D(GodotBody3D *p_A, int p_shape_A, GodotBody3D *p_B, int p_shape_B) :
+ GodotBodyContact3D(_arr, 2) {
A = p_A;
B = p_B;
shape_A = p_shape_A;
@@ -534,17 +535,17 @@ BodyPair3DSW::BodyPair3DSW(Body3DSW *p_A, int p_shape_A, Body3DSW *p_B, int p_sh
B->add_constraint(this, 1);
}
-BodyPair3DSW::~BodyPair3DSW() {
+GodotBodyPair3D::~GodotBodyPair3D() {
A->remove_constraint(this);
B->remove_constraint(this);
}
-void BodySoftBodyPair3DSW::_contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata) {
- BodySoftBodyPair3DSW *pair = (BodySoftBodyPair3DSW *)p_userdata;
+void GodotBodySoftBodyPair3D::_contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata) {
+ GodotBodySoftBodyPair3D *pair = (GodotBodySoftBodyPair3D *)p_userdata;
pair->contact_added_callback(p_point_A, p_index_A, p_point_B, p_index_B);
}
-void BodySoftBodyPair3DSW::contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B) {
+void GodotBodySoftBodyPair3D::contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B) {
Vector3 local_A = body->get_inv_transform().xform(p_point_A);
Vector3 local_B = p_point_B - soft_body->get_node_position(p_index_B);
@@ -582,7 +583,7 @@ void BodySoftBodyPair3DSW::contact_added_callback(const Vector3 &p_point_A, int
contacts.push_back(contact);
}
-void BodySoftBodyPair3DSW::validate_contacts() {
+void GodotBodySoftBodyPair3D::validate_contacts() {
// Make sure to erase contacts that are no longer valid.
const Transform3D &transform_A = body->get_transform();
@@ -612,7 +613,7 @@ void BodySoftBodyPair3DSW::validate_contacts() {
contacts.resize(contact_count);
}
-bool BodySoftBodyPair3DSW::setup(real_t p_step) {
+bool GodotBodySoftBodyPair3D::setup(real_t p_step) {
if (!body->interacts_with(soft_body) || body->has_exception(soft_body->get_self()) || soft_body->has_exception(body->get_self())) {
collided = false;
return false;
@@ -638,15 +639,15 @@ bool BodySoftBodyPair3DSW::setup(real_t p_step) {
validate_contacts();
- Shape3DSW *shape_A_ptr = body->get_shape(body_shape);
- Shape3DSW *shape_B_ptr = soft_body->get_shape(0);
+ GodotShape3D *shape_A_ptr = body->get_shape(body_shape);
+ GodotShape3D *shape_B_ptr = soft_body->get_shape(0);
- collided = CollisionSolver3DSW::solve_static(shape_A_ptr, xform_A, shape_B_ptr, xform_B, _contact_added_callback, this, &sep_axis);
+ collided = GodotCollisionSolver3D::solve_static(shape_A_ptr, xform_A, shape_B_ptr, xform_B, _contact_added_callback, this, &sep_axis);
return collided;
}
-bool BodySoftBodyPair3DSW::pre_solve(real_t p_step) {
+bool GodotBodySoftBodyPair3D::pre_solve(real_t p_step) {
if (!collided) {
return false;
}
@@ -655,7 +656,7 @@ bool BodySoftBodyPair3DSW::pre_solve(real_t p_step) {
real_t bias = (real_t)0.3;
- Shape3DSW *shape_A_ptr = body->get_shape(body_shape);
+ GodotShape3D *shape_A_ptr = body->get_shape(body_shape);
if (shape_A_ptr->get_custom_bias()) {
bias = shape_A_ptr->get_custom_bias();
@@ -753,7 +754,7 @@ bool BodySoftBodyPair3DSW::pre_solve(real_t p_step) {
return do_process;
}
-void BodySoftBodyPair3DSW::solve(real_t p_step) {
+void GodotBodySoftBodyPair3D::solve(real_t p_step) {
if (!collided) {
return;
}
@@ -891,8 +892,8 @@ void BodySoftBodyPair3DSW::solve(real_t p_step) {
}
}
-BodySoftBodyPair3DSW::BodySoftBodyPair3DSW(Body3DSW *p_A, int p_shape_A, SoftBody3DSW *p_B) :
- BodyContact3DSW(&body, 1) {
+GodotBodySoftBodyPair3D::GodotBodySoftBodyPair3D(GodotBody3D *p_A, int p_shape_A, GodotSoftBody3D *p_B) :
+ GodotBodyContact3D(&body, 1) {
body = p_A;
soft_body = p_B;
body_shape = p_shape_A;
@@ -901,7 +902,7 @@ BodySoftBodyPair3DSW::BodySoftBodyPair3DSW(Body3DSW *p_A, int p_shape_A, SoftBod
soft_body->add_constraint(this);
}
-BodySoftBodyPair3DSW::~BodySoftBodyPair3DSW() {
+GodotBodySoftBodyPair3D::~GodotBodySoftBodyPair3D() {
body->remove_constraint(this);
soft_body->remove_constraint(this);
}
diff --git a/servers/physics_3d/body_pair_3d_sw.h b/servers/physics_3d/godot_body_pair_3d.h
index 01afb07e13..c0a2424e05 100644
--- a/servers/physics_3d/body_pair_3d_sw.h
+++ b/servers/physics_3d/godot_body_pair_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* body_pair_3d_sw.h */
+/* godot_body_pair_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,15 +28,16 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BODY_PAIR_3D_SW_H
-#define BODY_PAIR_3D_SW_H
+#ifndef GODOT_BODY_PAIR_3D_H
+#define GODOT_BODY_PAIR_3D_H
+
+#include "godot_body_3d.h"
+#include "godot_constraint_3d.h"
+#include "godot_soft_body_3d.h"
-#include "body_3d_sw.h"
-#include "constraint_3d_sw.h"
#include "core/templates/local_vector.h"
-#include "soft_body_3d_sw.h"
-class BodyContact3DSW : public Constraint3DSW {
+class GodotBodyContact3D : public GodotConstraint3D {
protected:
struct Contact {
Vector3 position;
@@ -59,25 +60,25 @@ protected:
Vector3 sep_axis;
bool collided = false;
- Space3DSW *space = nullptr;
+ GodotSpace3D *space = nullptr;
- BodyContact3DSW(Body3DSW **p_body_ptr = nullptr, int p_body_count = 0) :
- Constraint3DSW(p_body_ptr, p_body_count) {
+ GodotBodyContact3D(GodotBody3D **p_body_ptr = nullptr, int p_body_count = 0) :
+ GodotConstraint3D(p_body_ptr, p_body_count) {
}
};
-class BodyPair3DSW : public BodyContact3DSW {
+class GodotBodyPair3D : public GodotBodyContact3D {
enum {
MAX_CONTACTS = 4
};
union {
struct {
- Body3DSW *A;
- Body3DSW *B;
+ GodotBody3D *A;
+ GodotBody3D *B;
};
- Body3DSW *_arr[2] = { nullptr, nullptr };
+ GodotBody3D *_arr[2] = { nullptr, nullptr };
};
int shape_A = 0;
@@ -98,20 +99,20 @@ class BodyPair3DSW : public BodyContact3DSW {
void contact_added_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B);
void validate_contacts();
- bool _test_ccd(real_t p_step, Body3DSW *p_A, int p_shape_A, const Transform3D &p_xform_A, Body3DSW *p_B, int p_shape_B, const Transform3D &p_xform_B);
+ bool _test_ccd(real_t p_step, GodotBody3D *p_A, int p_shape_A, const Transform3D &p_xform_A, GodotBody3D *p_B, int p_shape_B, const Transform3D &p_xform_B);
public:
virtual bool setup(real_t p_step) override;
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- BodyPair3DSW(Body3DSW *p_A, int p_shape_A, Body3DSW *p_B, int p_shape_B);
- ~BodyPair3DSW();
+ GodotBodyPair3D(GodotBody3D *p_A, int p_shape_A, GodotBody3D *p_B, int p_shape_B);
+ ~GodotBodyPair3D();
};
-class BodySoftBodyPair3DSW : public BodyContact3DSW {
- Body3DSW *body = nullptr;
- SoftBody3DSW *soft_body = nullptr;
+class GodotBodySoftBodyPair3D : public GodotBodyContact3D {
+ GodotBody3D *body = nullptr;
+ GodotSoftBody3D *soft_body = nullptr;
int body_shape = 0;
@@ -133,11 +134,11 @@ public:
virtual bool pre_solve(real_t p_step) override;
virtual void solve(real_t p_step) override;
- virtual SoftBody3DSW *get_soft_body_ptr(int p_index) const override { return soft_body; }
+ virtual GodotSoftBody3D *get_soft_body_ptr(int p_index) const override { return soft_body; }
virtual int get_soft_body_count() const override { return 1; }
- BodySoftBodyPair3DSW(Body3DSW *p_A, int p_shape_A, SoftBody3DSW *p_B);
- ~BodySoftBodyPair3DSW();
+ GodotBodySoftBodyPair3D(GodotBody3D *p_A, int p_shape_A, GodotSoftBody3D *p_B);
+ ~GodotBodySoftBodyPair3D();
};
-#endif // BODY_PAIR_3D_SW_H
+#endif // GODOT_BODY_PAIR_3D_H
diff --git a/servers/physics_2d/broad_phase_2d_sw.cpp b/servers/physics_3d/godot_broad_phase_3d.cpp
index 7f0af48b1f..db51dfb2b6 100644
--- a/servers/physics_2d/broad_phase_2d_sw.cpp
+++ b/servers/physics_3d/godot_broad_phase_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* broad_phase_2d_sw.cpp */
+/* godot_broad_phase_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,9 +28,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "broad_phase_2d_sw.h"
+#include "godot_broad_phase_3d.h"
-BroadPhase2DSW::CreateFunction BroadPhase2DSW::create_func = nullptr;
+GodotBroadPhase3D::CreateFunction GodotBroadPhase3D::create_func = nullptr;
-BroadPhase2DSW::~BroadPhase2DSW() {
+GodotBroadPhase3D::~GodotBroadPhase3D() {
}
diff --git a/servers/physics_3d/broad_phase_3d_sw.h b/servers/physics_3d/godot_broad_phase_3d.h
index 98313cb216..65423f293c 100644
--- a/servers/physics_3d/broad_phase_3d_sw.h
+++ b/servers/physics_3d/godot_broad_phase_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* broad_phase_3d_sw.h */
+/* godot_broad_phase_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,45 +28,45 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BROAD_PHASE_SW_H
-#define BROAD_PHASE_SW_H
+#ifndef GODOT_BROAD_PHASE_3D_H
+#define GODOT_BROAD_PHASE_3D_H
#include "core/math/aabb.h"
#include "core/math/math_funcs.h"
-class CollisionObject3DSW;
+class GodotCollisionObject3D;
-class BroadPhase3DSW {
+class GodotBroadPhase3D {
public:
- typedef BroadPhase3DSW *(*CreateFunction)();
+ typedef GodotBroadPhase3D *(*CreateFunction)();
static CreateFunction create_func;
typedef uint32_t ID;
- typedef void *(*PairCallback)(CollisionObject3DSW *A, int p_subindex_A, CollisionObject3DSW *B, int p_subindex_B, void *p_userdata);
- typedef void (*UnpairCallback)(CollisionObject3DSW *A, int p_subindex_A, CollisionObject3DSW *B, int p_subindex_B, void *p_data, void *p_userdata);
+ typedef void *(*PairCallback)(GodotCollisionObject3D *A, int p_subindex_A, GodotCollisionObject3D *B, int p_subindex_B, void *p_userdata);
+ typedef void (*UnpairCallback)(GodotCollisionObject3D *A, int p_subindex_A, GodotCollisionObject3D *B, int p_subindex_B, void *p_data, void *p_userdata);
// 0 is an invalid ID
- virtual ID create(CollisionObject3DSW *p_object_, int p_subindex = 0, const AABB &p_aabb = AABB(), bool p_static = false) = 0;
+ virtual ID create(GodotCollisionObject3D *p_object_, int p_subindex = 0, const AABB &p_aabb = AABB(), bool p_static = false) = 0;
virtual void move(ID p_id, const AABB &p_aabb) = 0;
virtual void set_static(ID p_id, bool p_static) = 0;
virtual void remove(ID p_id) = 0;
- virtual CollisionObject3DSW *get_object(ID p_id) const = 0;
+ virtual GodotCollisionObject3D *get_object(ID p_id) const = 0;
virtual bool is_static(ID p_id) const = 0;
virtual int get_subindex(ID p_id) const = 0;
- virtual int cull_point(const Vector3 &p_point, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
- virtual int cull_segment(const Vector3 &p_from, const Vector3 &p_to, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
- virtual int cull_aabb(const AABB &p_aabb, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
+ virtual int cull_point(const Vector3 &p_point, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
+ virtual int cull_segment(const Vector3 &p_from, const Vector3 &p_to, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
+ virtual int cull_aabb(const AABB &p_aabb, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices = nullptr) = 0;
virtual void set_pair_callback(PairCallback p_pair_callback, void *p_userdata) = 0;
virtual void set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata) = 0;
virtual void update() = 0;
- virtual ~BroadPhase3DSW();
+ virtual ~GodotBroadPhase3D();
};
-#endif // BROAD_PHASE__SW_H
+#endif // GODOT_BROAD_PHASE_3D_H
diff --git a/servers/physics_3d/broad_phase_3d_bvh.cpp b/servers/physics_3d/godot_broad_phase_3d_bvh.cpp
index d89e0e1f6d..0f2061a1ea 100644
--- a/servers/physics_3d/broad_phase_3d_bvh.cpp
+++ b/servers/physics_3d/godot_broad_phase_3d_bvh.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* broad_phase_3d_bvh.cpp */
+/* godot_broad_phase_3d_bvh.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,55 +28,56 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "broad_phase_3d_bvh.h"
-#include "collision_object_3d_sw.h"
+#include "godot_broad_phase_3d_bvh.h"
-BroadPhase3DBVH::ID BroadPhase3DBVH::create(CollisionObject3DSW *p_object, int p_subindex, const AABB &p_aabb, bool p_static) {
+#include "godot_collision_object_3d.h"
+
+GodotBroadPhase3DBVH::ID GodotBroadPhase3DBVH::create(GodotCollisionObject3D *p_object, int p_subindex, const AABB &p_aabb, bool p_static) {
ID oid = bvh.create(p_object, true, p_aabb, p_subindex, !p_static, 1 << p_object->get_type(), p_static ? 0 : 0xFFFFF); // Pair everything, don't care?
return oid + 1;
}
-void BroadPhase3DBVH::move(ID p_id, const AABB &p_aabb) {
+void GodotBroadPhase3DBVH::move(ID p_id, const AABB &p_aabb) {
bvh.move(p_id - 1, p_aabb);
}
-void BroadPhase3DBVH::set_static(ID p_id, bool p_static) {
- CollisionObject3DSW *it = bvh.get(p_id - 1);
+void GodotBroadPhase3DBVH::set_static(ID p_id, bool p_static) {
+ GodotCollisionObject3D *it = bvh.get(p_id - 1);
bvh.set_pairable(p_id - 1, !p_static, 1 << it->get_type(), p_static ? 0 : 0xFFFFF, false); // Pair everything, don't care?
}
-void BroadPhase3DBVH::remove(ID p_id) {
+void GodotBroadPhase3DBVH::remove(ID p_id) {
bvh.erase(p_id - 1);
}
-CollisionObject3DSW *BroadPhase3DBVH::get_object(ID p_id) const {
- CollisionObject3DSW *it = bvh.get(p_id - 1);
+GodotCollisionObject3D *GodotBroadPhase3DBVH::get_object(ID p_id) const {
+ GodotCollisionObject3D *it = bvh.get(p_id - 1);
ERR_FAIL_COND_V(!it, nullptr);
return it;
}
-bool BroadPhase3DBVH::is_static(ID p_id) const {
+bool GodotBroadPhase3DBVH::is_static(ID p_id) const {
return !bvh.is_pairable(p_id - 1);
}
-int BroadPhase3DBVH::get_subindex(ID p_id) const {
+int GodotBroadPhase3DBVH::get_subindex(ID p_id) const {
return bvh.get_subindex(p_id - 1);
}
-int BroadPhase3DBVH::cull_point(const Vector3 &p_point, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices) {
+int GodotBroadPhase3DBVH::cull_point(const Vector3 &p_point, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices) {
return bvh.cull_point(p_point, p_results, p_max_results, p_result_indices);
}
-int BroadPhase3DBVH::cull_segment(const Vector3 &p_from, const Vector3 &p_to, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices) {
+int GodotBroadPhase3DBVH::cull_segment(const Vector3 &p_from, const Vector3 &p_to, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices) {
return bvh.cull_segment(p_from, p_to, p_results, p_max_results, p_result_indices);
}
-int BroadPhase3DBVH::cull_aabb(const AABB &p_aabb, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices) {
+int GodotBroadPhase3DBVH::cull_aabb(const AABB &p_aabb, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices) {
return bvh.cull_aabb(p_aabb, p_results, p_max_results, p_result_indices);
}
-void *BroadPhase3DBVH::_pair_callback(void *self, uint32_t p_A, CollisionObject3DSW *p_object_A, int subindex_A, uint32_t p_B, CollisionObject3DSW *p_object_B, int subindex_B) {
- BroadPhase3DBVH *bpo = (BroadPhase3DBVH *)(self);
+void *GodotBroadPhase3DBVH::_pair_callback(void *self, uint32_t p_A, GodotCollisionObject3D *p_object_A, int subindex_A, uint32_t p_B, GodotCollisionObject3D *p_object_B, int subindex_B) {
+ GodotBroadPhase3DBVH *bpo = (GodotBroadPhase3DBVH *)(self);
if (!bpo->pair_callback) {
return nullptr;
}
@@ -84,8 +85,8 @@ void *BroadPhase3DBVH::_pair_callback(void *self, uint32_t p_A, CollisionObject3
return bpo->pair_callback(p_object_A, subindex_A, p_object_B, subindex_B, bpo->pair_userdata);
}
-void BroadPhase3DBVH::_unpair_callback(void *self, uint32_t p_A, CollisionObject3DSW *p_object_A, int subindex_A, uint32_t p_B, CollisionObject3DSW *p_object_B, int subindex_B, void *pairdata) {
- BroadPhase3DBVH *bpo = (BroadPhase3DBVH *)(self);
+void GodotBroadPhase3DBVH::_unpair_callback(void *self, uint32_t p_A, GodotCollisionObject3D *p_object_A, int subindex_A, uint32_t p_B, GodotCollisionObject3D *p_object_B, int subindex_B, void *pairdata) {
+ GodotBroadPhase3DBVH *bpo = (GodotBroadPhase3DBVH *)(self);
if (!bpo->unpair_callback) {
return;
}
@@ -93,25 +94,25 @@ void BroadPhase3DBVH::_unpair_callback(void *self, uint32_t p_A, CollisionObject
bpo->unpair_callback(p_object_A, subindex_A, p_object_B, subindex_B, pairdata, bpo->unpair_userdata);
}
-void BroadPhase3DBVH::set_pair_callback(PairCallback p_pair_callback, void *p_userdata) {
+void GodotBroadPhase3DBVH::set_pair_callback(PairCallback p_pair_callback, void *p_userdata) {
pair_callback = p_pair_callback;
pair_userdata = p_userdata;
}
-void BroadPhase3DBVH::set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata) {
+void GodotBroadPhase3DBVH::set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata) {
unpair_callback = p_unpair_callback;
unpair_userdata = p_userdata;
}
-void BroadPhase3DBVH::update() {
+void GodotBroadPhase3DBVH::update() {
bvh.update();
}
-BroadPhase3DSW *BroadPhase3DBVH::_create() {
- return memnew(BroadPhase3DBVH);
+GodotBroadPhase3D *GodotBroadPhase3DBVH::_create() {
+ return memnew(GodotBroadPhase3DBVH);
}
-BroadPhase3DBVH::BroadPhase3DBVH() {
+GodotBroadPhase3DBVH::GodotBroadPhase3DBVH() {
bvh.set_pair_callback(_pair_callback, this);
bvh.set_unpair_callback(_unpair_callback, this);
}
diff --git a/servers/physics_3d/broad_phase_3d_bvh.h b/servers/physics_3d/godot_broad_phase_3d_bvh.h
index 03131c9db2..61127e52c1 100644
--- a/servers/physics_3d/broad_phase_3d_bvh.h
+++ b/servers/physics_3d/godot_broad_phase_3d_bvh.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* broad_phase_3d_bvh.h */
+/* godot_broad_phase_3d_bvh.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,17 +28,18 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BROAD_PHASE_3D_BVH_H
-#define BROAD_PHASE_3D_BVH_H
+#ifndef GODOT_BROAD_PHASE_3D_BVH_H
+#define GODOT_BROAD_PHASE_3D_BVH_H
+
+#include "godot_broad_phase_3d.h"
-#include "broad_phase_3d_sw.h"
#include "core/math/bvh.h"
-class BroadPhase3DBVH : public BroadPhase3DSW {
- BVH_Manager<CollisionObject3DSW, true, 128> bvh;
+class GodotBroadPhase3DBVH : public GodotBroadPhase3D {
+ BVH_Manager<GodotCollisionObject3D, true, 128> bvh;
- static void *_pair_callback(void *, uint32_t, CollisionObject3DSW *, int, uint32_t, CollisionObject3DSW *, int);
- static void _unpair_callback(void *, uint32_t, CollisionObject3DSW *, int, uint32_t, CollisionObject3DSW *, int, void *);
+ static void *_pair_callback(void *, uint32_t, GodotCollisionObject3D *, int, uint32_t, GodotCollisionObject3D *, int);
+ static void _unpair_callback(void *, uint32_t, GodotCollisionObject3D *, int, uint32_t, GodotCollisionObject3D *, int, void *);
PairCallback pair_callback = nullptr;
void *pair_userdata = nullptr;
@@ -47,26 +48,26 @@ class BroadPhase3DBVH : public BroadPhase3DSW {
public:
// 0 is an invalid ID
- virtual ID create(CollisionObject3DSW *p_object, int p_subindex = 0, const AABB &p_aabb = AABB(), bool p_static = false);
+ virtual ID create(GodotCollisionObject3D *p_object, int p_subindex = 0, const AABB &p_aabb = AABB(), bool p_static = false);
virtual void move(ID p_id, const AABB &p_aabb);
virtual void set_static(ID p_id, bool p_static);
virtual void remove(ID p_id);
- virtual CollisionObject3DSW *get_object(ID p_id) const;
+ virtual GodotCollisionObject3D *get_object(ID p_id) const;
virtual bool is_static(ID p_id) const;
virtual int get_subindex(ID p_id) const;
- virtual int cull_point(const Vector3 &p_point, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices = nullptr);
- virtual int cull_segment(const Vector3 &p_from, const Vector3 &p_to, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices = nullptr);
- virtual int cull_aabb(const AABB &p_aabb, CollisionObject3DSW **p_results, int p_max_results, int *p_result_indices = nullptr);
+ virtual int cull_point(const Vector3 &p_point, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices = nullptr);
+ virtual int cull_segment(const Vector3 &p_from, const Vector3 &p_to, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices = nullptr);
+ virtual int cull_aabb(const AABB &p_aabb, GodotCollisionObject3D **p_results, int p_max_results, int *p_result_indices = nullptr);
virtual void set_pair_callback(PairCallback p_pair_callback, void *p_userdata);
virtual void set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata);
virtual void update();
- static BroadPhase3DSW *_create();
- BroadPhase3DBVH();
+ static GodotBroadPhase3D *_create();
+ GodotBroadPhase3DBVH();
};
-#endif // BROAD_PHASE_3D_BVH_H
+#endif // GODOT_BROAD_PHASE_3D_BVH_H
diff --git a/servers/physics_3d/collision_object_3d_sw.cpp b/servers/physics_3d/godot_collision_object_3d.cpp
index 098f627d11..80a3d18ce0 100644
--- a/servers/physics_3d/collision_object_3d_sw.cpp
+++ b/servers/physics_3d/godot_collision_object_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_object_3d_sw.cpp */
+/* godot_collision_object_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,11 +28,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "collision_object_3d_sw.h"
-#include "servers/physics_3d/physics_server_3d_sw.h"
-#include "space_3d_sw.h"
+#include "godot_collision_object_3d.h"
-void CollisionObject3DSW::add_shape(Shape3DSW *p_shape, const Transform3D &p_transform, bool p_disabled) {
+#include "godot_physics_server_3d.h"
+#include "godot_space_3d.h"
+
+void GodotCollisionObject3D::add_shape(GodotShape3D *p_shape, const Transform3D &p_transform, bool p_disabled) {
Shape s;
s.shape = p_shape;
s.xform = p_transform;
@@ -43,35 +44,35 @@ void CollisionObject3DSW::add_shape(Shape3DSW *p_shape, const Transform3D &p_tra
p_shape->add_owner(this);
if (!pending_shape_update_list.in_list()) {
- PhysicsServer3DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer3D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
-void CollisionObject3DSW::set_shape(int p_index, Shape3DSW *p_shape) {
+void GodotCollisionObject3D::set_shape(int p_index, GodotShape3D *p_shape) {
ERR_FAIL_INDEX(p_index, shapes.size());
shapes[p_index].shape->remove_owner(this);
shapes.write[p_index].shape = p_shape;
p_shape->add_owner(this);
if (!pending_shape_update_list.in_list()) {
- PhysicsServer3DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer3D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
-void CollisionObject3DSW::set_shape_transform(int p_index, const Transform3D &p_transform) {
+void GodotCollisionObject3D::set_shape_transform(int p_index, const Transform3D &p_transform) {
ERR_FAIL_INDEX(p_index, shapes.size());
shapes.write[p_index].xform = p_transform;
shapes.write[p_index].xform_inv = p_transform.affine_inverse();
if (!pending_shape_update_list.in_list()) {
- PhysicsServer3DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer3D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
-void CollisionObject3DSW::set_shape_disabled(int p_idx, bool p_disabled) {
+void GodotCollisionObject3D::set_shape_disabled(int p_idx, bool p_disabled) {
ERR_FAIL_INDEX(p_idx, shapes.size());
- CollisionObject3DSW::Shape &shape = shapes.write[p_idx];
+ GodotCollisionObject3D::Shape &shape = shapes.write[p_idx];
if (shape.disabled == p_disabled) {
return;
}
@@ -86,16 +87,16 @@ void CollisionObject3DSW::set_shape_disabled(int p_idx, bool p_disabled) {
space->get_broadphase()->remove(shape.bpid);
shape.bpid = 0;
if (!pending_shape_update_list.in_list()) {
- PhysicsServer3DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer3D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
} else if (!p_disabled && shape.bpid == 0) {
if (!pending_shape_update_list.in_list()) {
- PhysicsServer3DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer3D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
}
-void CollisionObject3DSW::remove_shape(Shape3DSW *p_shape) {
+void GodotCollisionObject3D::remove_shape(GodotShape3D *p_shape) {
//remove a shape, all the times it appears
for (int i = 0; i < shapes.size(); i++) {
if (shapes[i].shape == p_shape) {
@@ -105,7 +106,7 @@ void CollisionObject3DSW::remove_shape(Shape3DSW *p_shape) {
}
}
-void CollisionObject3DSW::remove_shape(int p_index) {
+void GodotCollisionObject3D::remove_shape(int p_index) {
//remove anything from shape to be erased to end, so subindices don't change
ERR_FAIL_INDEX(p_index, shapes.size());
for (int i = p_index; i < shapes.size(); i++) {
@@ -120,11 +121,11 @@ void CollisionObject3DSW::remove_shape(int p_index) {
shapes.remove(p_index);
if (!pending_shape_update_list.in_list()) {
- PhysicsServer3DSW::singletonsw->pending_shape_update_list.add(&pending_shape_update_list);
+ GodotPhysicsServer3D::godot_singleton->pending_shape_update_list.add(&pending_shape_update_list);
}
}
-void CollisionObject3DSW::_set_static(bool p_static) {
+void GodotCollisionObject3D::_set_static(bool p_static) {
if (_static == p_static) {
return;
}
@@ -141,7 +142,7 @@ void CollisionObject3DSW::_set_static(bool p_static) {
}
}
-void CollisionObject3DSW::_unregister_shapes() {
+void GodotCollisionObject3D::_unregister_shapes() {
for (int i = 0; i < shapes.size(); i++) {
Shape &s = shapes.write[i];
if (s.bpid > 0) {
@@ -151,7 +152,7 @@ void CollisionObject3DSW::_unregister_shapes() {
}
}
-void CollisionObject3DSW::_update_shapes() {
+void GodotCollisionObject3D::_update_shapes() {
if (!space) {
return;
}
@@ -181,7 +182,7 @@ void CollisionObject3DSW::_update_shapes() {
}
}
-void CollisionObject3DSW::_update_shapes_with_motion(const Vector3 &p_motion) {
+void GodotCollisionObject3D::_update_shapes_with_motion(const Vector3 &p_motion) {
if (!space) {
return;
}
@@ -208,7 +209,7 @@ void CollisionObject3DSW::_update_shapes_with_motion(const Vector3 &p_motion) {
}
}
-void CollisionObject3DSW::_set_space(Space3DSW *p_space) {
+void GodotCollisionObject3D::_set_space(GodotSpace3D *p_space) {
if (space) {
space->remove_object(this);
@@ -229,12 +230,12 @@ void CollisionObject3DSW::_set_space(Space3DSW *p_space) {
}
}
-void CollisionObject3DSW::_shape_changed() {
+void GodotCollisionObject3D::_shape_changed() {
_update_shapes();
_shapes_changed();
}
-CollisionObject3DSW::CollisionObject3DSW(Type p_type) :
+GodotCollisionObject3D::GodotCollisionObject3D(Type p_type) :
pending_shape_update_list(this) {
type = p_type;
}
diff --git a/servers/physics_3d/collision_object_3d_sw.h b/servers/physics_3d/godot_collision_object_3d.h
index 3aa48946b7..43558034e0 100644
--- a/servers/physics_3d/collision_object_3d_sw.h
+++ b/servers/physics_3d/godot_collision_object_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_object_3d_sw.h */
+/* godot_collision_object_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,13 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef COLLISION_OBJECT_SW_H
-#define COLLISION_OBJECT_SW_H
+#ifndef GODOT_COLLISION_OBJECT_3D_H
+#define GODOT_COLLISION_OBJECT_3D_H
+
+#include "godot_broad_phase_3d.h"
+#include "godot_shape_3d.h"
-#include "broad_phase_3d_sw.h"
#include "core/templates/self_list.h"
#include "servers/physics_server_3d.h"
-#include "shape_3d_sw.h"
#ifdef DEBUG_ENABLED
#define MAX_OBJECT_DISTANCE 3.1622776601683791e+18
@@ -42,9 +43,9 @@
#define MAX_OBJECT_DISTANCE_X2 (MAX_OBJECT_DISTANCE * MAX_OBJECT_DISTANCE)
#endif
-class Space3DSW;
+class GodotSpace3D;
-class CollisionObject3DSW : public ShapeOwner3DSW {
+class GodotCollisionObject3D : public GodotShapeOwner3D {
public:
enum Type {
TYPE_AREA,
@@ -62,20 +63,20 @@ private:
struct Shape {
Transform3D xform;
Transform3D xform_inv;
- BroadPhase3DSW::ID bpid;
+ GodotBroadPhase3D::ID bpid;
AABB aabb_cache; //for rayqueries
real_t area_cache = 0.0;
- Shape3DSW *shape = nullptr;
+ GodotShape3D *shape = nullptr;
bool disabled = false;
};
Vector<Shape> shapes;
- Space3DSW *space = nullptr;
+ GodotSpace3D *space = nullptr;
Transform3D transform;
Transform3D inv_transform;
bool _static = true;
- SelfList<CollisionObject3DSW> pending_shape_update_list;
+ SelfList<GodotCollisionObject3D> pending_shape_update_list;
void _update_shapes();
@@ -98,11 +99,11 @@ protected:
void _set_static(bool p_static);
virtual void _shapes_changed() = 0;
- void _set_space(Space3DSW *p_space);
+ void _set_space(GodotSpace3D *p_space);
bool ray_pickable = true;
- CollisionObject3DSW(Type p_type);
+ GodotCollisionObject3D(Type p_type);
public:
_FORCE_INLINE_ void set_self(const RID &p_self) { self = p_self; }
@@ -114,11 +115,11 @@ public:
void _shape_changed();
_FORCE_INLINE_ Type get_type() const { return type; }
- void add_shape(Shape3DSW *p_shape, const Transform3D &p_transform = Transform3D(), bool p_disabled = false);
- void set_shape(int p_index, Shape3DSW *p_shape);
+ void add_shape(GodotShape3D *p_shape, const Transform3D &p_transform = Transform3D(), bool p_disabled = false);
+ void set_shape(int p_index, GodotShape3D *p_shape);
void set_shape_transform(int p_index, const Transform3D &p_transform);
_FORCE_INLINE_ int get_shape_count() const { return shapes.size(); }
- _FORCE_INLINE_ Shape3DSW *get_shape(int p_index) const {
+ _FORCE_INLINE_ GodotShape3D *get_shape(int p_index) const {
CRASH_BAD_INDEX(p_index, shapes.size());
return shapes[p_index].shape;
}
@@ -141,7 +142,7 @@ public:
_FORCE_INLINE_ const Transform3D &get_transform() const { return transform; }
_FORCE_INLINE_ const Transform3D &get_inv_transform() const { return inv_transform; }
- _FORCE_INLINE_ Space3DSW *get_space() const { return space; }
+ _FORCE_INLINE_ GodotSpace3D *get_space() const { return space; }
_FORCE_INLINE_ void set_ray_pickable(bool p_enable) { ray_pickable = p_enable; }
_FORCE_INLINE_ bool is_ray_pickable() const { return ray_pickable; }
@@ -164,22 +165,22 @@ public:
}
_FORCE_INLINE_ uint32_t get_collision_mask() const { return collision_mask; }
- _FORCE_INLINE_ bool collides_with(CollisionObject3DSW *p_other) const {
+ _FORCE_INLINE_ bool collides_with(GodotCollisionObject3D *p_other) const {
return p_other->collision_layer & collision_mask;
}
- _FORCE_INLINE_ bool interacts_with(CollisionObject3DSW *p_other) const {
+ _FORCE_INLINE_ bool interacts_with(GodotCollisionObject3D *p_other) const {
return collision_layer & p_other->collision_mask || p_other->collision_layer & collision_mask;
}
- void remove_shape(Shape3DSW *p_shape);
+ void remove_shape(GodotShape3D *p_shape);
void remove_shape(int p_index);
- virtual void set_space(Space3DSW *p_space) = 0;
+ virtual void set_space(GodotSpace3D *p_space) = 0;
_FORCE_INLINE_ bool is_static() const { return _static; }
- virtual ~CollisionObject3DSW() {}
+ virtual ~GodotCollisionObject3D() {}
};
-#endif // COLLISION_OBJECT_SW_H
+#endif // GODOT_COLLISION_OBJECT_3D_H
diff --git a/servers/physics_3d/collision_solver_3d_sw.cpp b/servers/physics_3d/godot_collision_solver_3d.cpp
index dcc363638e..b9f2f7506b 100644
--- a/servers/physics_3d/collision_solver_3d_sw.cpp
+++ b/servers/physics_3d/godot_collision_solver_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_solver_3d_sw.cpp */
+/* godot_collision_solver_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,17 +28,17 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "collision_solver_3d_sw.h"
-#include "collision_solver_3d_sat.h"
-#include "soft_body_3d_sw.h"
+#include "godot_collision_solver_3d.h"
+#include "godot_collision_solver_3d_sat.h"
+#include "godot_soft_body_3d.h"
#include "gjk_epa.h"
#define collision_solver sat_calculate_penetration
//#define collision_solver gjk_epa_calculate_penetration
-bool CollisionSolver3DSW::solve_static_world_boundary(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result) {
- const WorldBoundaryShape3DSW *world_boundary = static_cast<const WorldBoundaryShape3DSW *>(p_shape_A);
+bool GodotCollisionSolver3D::solve_static_world_boundary(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result) {
+ const GodotWorldBoundaryShape3D *world_boundary = static_cast<const GodotWorldBoundaryShape3D *>(p_shape_A);
if (p_shape_B->get_type() == PhysicsServer3D::SHAPE_WORLD_BOUNDARY) {
return false;
}
@@ -47,10 +47,10 @@ bool CollisionSolver3DSW::solve_static_world_boundary(const Shape3DSW *p_shape_A
static const int max_supports = 16;
Vector3 supports[max_supports];
int support_count;
- Shape3DSW::FeatureType support_type;
+ GodotShape3D::FeatureType support_type;
p_shape_B->get_supports(p_transform_B.basis.xform_inv(-p.normal).normalized(), max_supports, supports, support_count, support_type);
- if (support_type == Shape3DSW::FEATURE_CIRCLE) {
+ if (support_type == GodotShape3D::FEATURE_CIRCLE) {
ERR_FAIL_COND_V(support_count != 3, false);
Vector3 circle_pos = supports[0];
@@ -89,8 +89,8 @@ bool CollisionSolver3DSW::solve_static_world_boundary(const Shape3DSW *p_shape_A
return found;
}
-bool CollisionSolver3DSW::solve_separation_ray(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, real_t p_margin) {
- const SeparationRayShape3DSW *ray = static_cast<const SeparationRayShape3DSW *>(p_shape_A);
+bool GodotCollisionSolver3D::solve_separation_ray(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, real_t p_margin) {
+ const GodotSeparationRayShape3D *ray = static_cast<const GodotSeparationRayShape3D *>(p_shape_A);
Vector3 from = p_transform_A.origin;
Vector3 to = from + p_transform_A.basis.get_axis(2) * (ray->get_length() + p_margin);
@@ -134,13 +134,13 @@ bool CollisionSolver3DSW::solve_separation_ray(const Shape3DSW *p_shape_A, const
struct _SoftBodyContactCollisionInfo {
int node_index = 0;
- CollisionSolver3DSW::CallbackResult result_callback = nullptr;
+ GodotCollisionSolver3D::CallbackResult result_callback = nullptr;
void *userdata = nullptr;
bool swap_result = false;
int contact_count = 0;
};
-void CollisionSolver3DSW::soft_body_contact_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata) {
+void GodotCollisionSolver3D::soft_body_contact_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata) {
_SoftBodyContactCollisionInfo &cinfo = *(_SoftBodyContactCollisionInfo *)(p_userdata);
++cinfo.contact_count;
@@ -157,9 +157,9 @@ void CollisionSolver3DSW::soft_body_contact_callback(const Vector3 &p_point_A, i
}
struct _SoftBodyQueryInfo {
- SoftBody3DSW *soft_body = nullptr;
- const Shape3DSW *shape_A = nullptr;
- const Shape3DSW *shape_B = nullptr;
+ GodotSoftBody3D *soft_body = nullptr;
+ const GodotShape3D *shape_A = nullptr;
+ const GodotShape3D *shape_B = nullptr;
Transform3D transform_A;
Transform3D node_transform;
_SoftBodyContactCollisionInfo contact_info;
@@ -169,7 +169,7 @@ struct _SoftBodyQueryInfo {
#endif
};
-bool CollisionSolver3DSW::soft_body_query_callback(uint32_t p_node_index, void *p_userdata) {
+bool GodotCollisionSolver3D::soft_body_query_callback(uint32_t p_node_index, void *p_userdata) {
_SoftBodyQueryInfo &query_cinfo = *(_SoftBodyQueryInfo *)(p_userdata);
Vector3 node_position = query_cinfo.soft_body->get_node_position(p_node_index);
@@ -188,7 +188,7 @@ bool CollisionSolver3DSW::soft_body_query_callback(uint32_t p_node_index, void *
return (collided && !query_cinfo.contact_info.result_callback);
}
-bool CollisionSolver3DSW::soft_body_concave_callback(void *p_userdata, Shape3DSW *p_convex) {
+bool GodotCollisionSolver3D::soft_body_concave_callback(void *p_userdata, GodotShape3D *p_convex) {
_SoftBodyQueryInfo &query_cinfo = *(_SoftBodyQueryInfo *)(p_userdata);
query_cinfo.shape_A = p_convex;
@@ -220,15 +220,15 @@ bool CollisionSolver3DSW::soft_body_concave_callback(void *p_userdata, Shape3DSW
return (collided && !query_cinfo.contact_info.result_callback);
}
-bool CollisionSolver3DSW::solve_soft_body(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result) {
- const SoftBodyShape3DSW *soft_body_shape_B = static_cast<const SoftBodyShape3DSW *>(p_shape_B);
+bool GodotCollisionSolver3D::solve_soft_body(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result) {
+ const GodotSoftBodyShape3D *soft_body_shape_B = static_cast<const GodotSoftBodyShape3D *>(p_shape_B);
- SoftBody3DSW *soft_body = soft_body_shape_B->get_soft_body();
+ GodotSoftBody3D *soft_body = soft_body_shape_B->get_soft_body();
const Transform3D &world_to_local = soft_body->get_inv_transform();
const real_t collision_margin = soft_body->get_collision_margin();
- SphereShape3DSW sphere_shape;
+ GodotSphereShape3D sphere_shape;
sphere_shape.set_data(collision_margin);
_SoftBodyQueryInfo query_cinfo;
@@ -243,7 +243,7 @@ bool CollisionSolver3DSW::solve_soft_body(const Shape3DSW *p_shape_A, const Tran
if (p_shape_A->is_concave()) {
// In case of concave shape, query convex shapes first.
- const ConcaveShape3DSW *concave_shape_A = static_cast<const ConcaveShape3DSW *>(p_shape_A);
+ const GodotConcaveShape3D *concave_shape_A = static_cast<const GodotConcaveShape3D *>(p_shape_A);
AABB soft_body_aabb = soft_body->get_bounds();
soft_body_aabb.grow_by(collision_margin);
@@ -277,9 +277,9 @@ bool CollisionSolver3DSW::solve_soft_body(const Shape3DSW *p_shape_A, const Tran
struct _ConcaveCollisionInfo {
const Transform3D *transform_A;
- const Shape3DSW *shape_A;
+ const GodotShape3D *shape_A;
const Transform3D *transform_B;
- CollisionSolver3DSW::CallbackResult result_callback;
+ GodotCollisionSolver3D::CallbackResult result_callback;
void *userdata;
bool swap_result;
bool collided;
@@ -291,7 +291,7 @@ struct _ConcaveCollisionInfo {
Vector3 close_A, close_B;
};
-bool CollisionSolver3DSW::concave_callback(void *p_userdata, Shape3DSW *p_convex) {
+bool GodotCollisionSolver3D::concave_callback(void *p_userdata, GodotShape3D *p_convex) {
_ConcaveCollisionInfo &cinfo = *(_ConcaveCollisionInfo *)(p_userdata);
cinfo.aabb_tests++;
@@ -307,8 +307,8 @@ bool CollisionSolver3DSW::concave_callback(void *p_userdata, Shape3DSW *p_convex
return !cinfo.result_callback;
}
-bool CollisionSolver3DSW::solve_concave(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, real_t p_margin_A, real_t p_margin_B) {
- const ConcaveShape3DSW *concave_B = static_cast<const ConcaveShape3DSW *>(p_shape_B);
+bool GodotCollisionSolver3D::solve_concave(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, real_t p_margin_A, real_t p_margin_B) {
+ const GodotConcaveShape3D *concave_B = static_cast<const GodotConcaveShape3D *>(p_shape_B);
_ConcaveCollisionInfo cinfo;
cinfo.transform_A = &p_transform_A;
@@ -351,7 +351,7 @@ bool CollisionSolver3DSW::solve_concave(const Shape3DSW *p_shape_A, const Transf
return cinfo.collided;
}
-bool CollisionSolver3DSW::solve_static(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, Vector3 *r_sep_axis, real_t p_margin_A, real_t p_margin_B) {
+bool GodotCollisionSolver3D::solve_static(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, Vector3 *r_sep_axis, real_t p_margin_A, real_t p_margin_B) {
PhysicsServer3D::ShapeType type_A = p_shape_A->get_type();
PhysicsServer3D::ShapeType type_B = p_shape_B->get_type();
bool concave_A = p_shape_A->is_concave();
@@ -421,7 +421,7 @@ bool CollisionSolver3DSW::solve_static(const Shape3DSW *p_shape_A, const Transfo
}
}
-bool CollisionSolver3DSW::concave_distance_callback(void *p_userdata, Shape3DSW *p_convex) {
+bool GodotCollisionSolver3D::concave_distance_callback(void *p_userdata, GodotShape3D *p_convex) {
_ConcaveCollisionInfo &cinfo = *(_ConcaveCollisionInfo *)(p_userdata);
cinfo.aabb_tests++;
@@ -443,8 +443,8 @@ bool CollisionSolver3DSW::concave_distance_callback(void *p_userdata, Shape3DSW
return false;
}
-bool CollisionSolver3DSW::solve_distance_world_boundary(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_point_A, Vector3 &r_point_B) {
- const WorldBoundaryShape3DSW *world_boundary = static_cast<const WorldBoundaryShape3DSW *>(p_shape_A);
+bool GodotCollisionSolver3D::solve_distance_world_boundary(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_point_A, Vector3 &r_point_B) {
+ const GodotWorldBoundaryShape3D *world_boundary = static_cast<const GodotWorldBoundaryShape3D *>(p_shape_A);
if (p_shape_B->get_type() == PhysicsServer3D::SHAPE_WORLD_BOUNDARY) {
return false;
}
@@ -453,11 +453,11 @@ bool CollisionSolver3DSW::solve_distance_world_boundary(const Shape3DSW *p_shape
static const int max_supports = 16;
Vector3 supports[max_supports];
int support_count;
- Shape3DSW::FeatureType support_type;
+ GodotShape3D::FeatureType support_type;
p_shape_B->get_supports(p_transform_B.basis.xform_inv(-p.normal).normalized(), max_supports, supports, support_count, support_type);
- if (support_type == Shape3DSW::FEATURE_CIRCLE) {
+ if (support_type == GodotShape3D::FEATURE_CIRCLE) {
ERR_FAIL_COND_V(support_count != 3, false);
Vector3 circle_pos = supports[0];
@@ -495,7 +495,7 @@ bool CollisionSolver3DSW::solve_distance_world_boundary(const Shape3DSW *p_shape
return collided;
}
-bool CollisionSolver3DSW::solve_distance(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_point_A, Vector3 &r_point_B, const AABB &p_concave_hint, Vector3 *r_sep_axis) {
+bool GodotCollisionSolver3D::solve_distance(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_point_A, Vector3 &r_point_B, const AABB &p_concave_hint, Vector3 *r_sep_axis) {
if (p_shape_A->is_concave()) {
return false;
}
@@ -512,7 +512,7 @@ bool CollisionSolver3DSW::solve_distance(const Shape3DSW *p_shape_A, const Trans
return false;
}
- const ConcaveShape3DSW *concave_B = static_cast<const ConcaveShape3DSW *>(p_shape_B);
+ const GodotConcaveShape3D *concave_B = static_cast<const GodotConcaveShape3D *>(p_shape_B);
_ConcaveCollisionInfo cinfo;
cinfo.transform_A = &p_transform_A;
@@ -547,7 +547,7 @@ bool CollisionSolver3DSW::solve_distance(const Shape3DSW *p_shape_A, const Trans
real_t smin, smax;
if (use_cc_hint) {
- cc_hint_aabb.project_range_in_plane(Plane(axis, 0), smin, smax);
+ cc_hint_aabb.project_range_in_plane(Plane(axis), smin, smax);
} else {
p_shape_A->project_range(axis, rel_transform, smin, smax);
}
diff --git a/servers/physics_3d/collision_solver_3d_sw.h b/servers/physics_3d/godot_collision_solver_3d.h
index 0a9ea7c0eb..133635ca7e 100644
--- a/servers/physics_3d/collision_solver_3d_sw.h
+++ b/servers/physics_3d/godot_collision_solver_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_solver_3d_sw.h */
+/* godot_collision_solver_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,30 +28,30 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef COLLISION_SOLVER_SW_H
-#define COLLISION_SOLVER_SW_H
+#ifndef GODOT_COLLISION_SOLVER_3D_H
+#define GODOT_COLLISION_SOLVER_3D_H
-#include "shape_3d_sw.h"
+#include "godot_shape_3d.h"
-class CollisionSolver3DSW {
+class GodotCollisionSolver3D {
public:
typedef void (*CallbackResult)(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata);
private:
static bool soft_body_query_callback(uint32_t p_node_index, void *p_userdata);
static void soft_body_contact_callback(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata);
- static bool soft_body_concave_callback(void *p_userdata, Shape3DSW *p_convex);
- static bool concave_callback(void *p_userdata, Shape3DSW *p_convex);
- static bool solve_static_world_boundary(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result);
- static bool solve_separation_ray(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, real_t p_margin = 0);
- static bool solve_soft_body(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result);
- static bool solve_concave(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, real_t p_margin_A = 0, real_t p_margin_B = 0);
- static bool concave_distance_callback(void *p_userdata, Shape3DSW *p_convex);
- static bool solve_distance_world_boundary(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_point_A, Vector3 &r_point_B);
+ static bool soft_body_concave_callback(void *p_userdata, GodotShape3D *p_convex);
+ static bool concave_callback(void *p_userdata, GodotShape3D *p_convex);
+ static bool solve_static_world_boundary(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result);
+ static bool solve_separation_ray(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, real_t p_margin = 0);
+ static bool solve_soft_body(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result);
+ static bool solve_concave(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, bool p_swap_result, real_t p_margin_A = 0, real_t p_margin_B = 0);
+ static bool concave_distance_callback(void *p_userdata, GodotShape3D *p_convex);
+ static bool solve_distance_world_boundary(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_point_A, Vector3 &r_point_B);
public:
- static bool solve_static(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, Vector3 *r_sep_axis = nullptr, real_t p_margin_A = 0, real_t p_margin_B = 0);
- static bool solve_distance(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_point_A, Vector3 &r_point_B, const AABB &p_concave_hint, Vector3 *r_sep_axis = nullptr);
+ static bool solve_static(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, CallbackResult p_result_callback, void *p_userdata, Vector3 *r_sep_axis = nullptr, real_t p_margin_A = 0, real_t p_margin_B = 0);
+ static bool solve_distance(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, Vector3 &r_point_A, Vector3 &r_point_B, const AABB &p_concave_hint, Vector3 *r_sep_axis = nullptr);
};
-#endif // COLLISION_SOLVER__SW_H
+#endif // GODOT_COLLISION_SOLVER_3D_H
diff --git a/servers/physics_3d/collision_solver_3d_sat.cpp b/servers/physics_3d/godot_collision_solver_3d_sat.cpp
index 76738bb746..0790333f65 100644
--- a/servers/physics_3d/collision_solver_3d_sat.cpp
+++ b/servers/physics_3d/godot_collision_solver_3d_sat.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_solver_3d_sat.cpp */
+/* godot_collision_solver_3d_sat.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,11 +28,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "collision_solver_3d_sat.h"
-#include "core/math/geometry_3d.h"
+#include "godot_collision_solver_3d_sat.h"
#include "gjk_epa.h"
+#include "core/math/geometry_3d.h"
+
#define fallback_collision_solver gjk_epa_calculate_penetration
// Cylinder SAT analytic methods and face-circle contact points for cylinder-trimesh and cylinder-box collision are based on ODE colliders.
@@ -65,7 +66,7 @@
*************************************************************************/
struct _CollectorCallback {
- CollisionSolver3DSW::CallbackResult callback;
+ GodotCollisionSolver3D::CallbackResult callback;
void *userdata = nullptr;
bool swap = false;
bool collided = false;
@@ -183,7 +184,7 @@ static void _generate_contacts_edge_circle(const Vector3 *p_points_A, int p_poin
real_t circle_B_radius = circle_B_line_1.length();
Vector3 circle_B_normal = circle_B_line_1.cross(circle_B_line_2).normalized();
- Plane circle_plane(circle_B_pos, circle_B_normal);
+ Plane circle_plane(circle_B_normal, circle_B_pos);
static const int max_clip = 2;
Vector3 contact_points[max_clip];
@@ -299,7 +300,7 @@ static void _generate_contacts_face_face(const Vector3 *p_points_A, int p_point_
Vector3 clip_normal = (edge0_B - edge1_B).cross(plane_B.normal).normalized();
// make a clip plane
- Plane clip(edge0_B, clip_normal);
+ Plane clip(clip_normal, edge0_B);
// avoid double clip if A is edge
int dst_idx = 0;
bool edge = clipbuf_len == 2;
@@ -385,7 +386,7 @@ static void _generate_contacts_face_circle(const Vector3 *p_points_A, int p_poin
// Clip face with circle plane.
Vector3 circle_B_normal = circle_B_line_1.cross(circle_B_line_2).normalized();
- Plane circle_plane(circle_B_pos, circle_B_normal);
+ Plane circle_plane(circle_B_normal, circle_B_pos);
static const int max_clip = 32;
Vector3 contact_points[max_clip];
@@ -522,7 +523,7 @@ static void _generate_contacts_circle_circle(const Vector3 *p_points_A, int p_po
}
}
- Plane circle_B_plane(circle_B_pos, circle_B_normal);
+ Plane circle_B_plane(circle_B_normal, circle_B_pos);
// Generate contact points.
for (int i = 0; i < num_points; i++) {
@@ -539,7 +540,7 @@ static void _generate_contacts_circle_circle(const Vector3 *p_points_A, int p_po
}
}
-static void _generate_contacts_from_supports(const Vector3 *p_points_A, int p_point_count_A, Shape3DSW::FeatureType p_feature_type_A, const Vector3 *p_points_B, int p_point_count_B, Shape3DSW::FeatureType p_feature_type_B, _CollectorCallback *p_callback) {
+static void _generate_contacts_from_supports(const Vector3 *p_points_A, int p_point_count_A, GodotShape3D::FeatureType p_feature_type_A, const Vector3 *p_points_B, int p_point_count_B, GodotShape3D::FeatureType p_feature_type_B, _CollectorCallback *p_callback) {
#ifdef DEBUG_ENABLED
ERR_FAIL_COND(p_point_count_A < 1);
ERR_FAIL_COND(p_point_count_B < 1);
@@ -713,7 +714,7 @@ public:
Vector3 supports_A[max_supports];
int support_count_A;
- Shape3DSW::FeatureType support_type_A;
+ GodotShape3D::FeatureType support_type_A;
shape_A->get_supports(transform_A->basis.xform_inv(-best_axis).normalized(), max_supports, supports_A, support_count_A, support_type_A);
for (int i = 0; i < support_count_A; i++) {
supports_A[i] = transform_A->xform(supports_A[i]);
@@ -727,7 +728,7 @@ public:
Vector3 supports_B[max_supports];
int support_count_B;
- Shape3DSW::FeatureType support_type_B;
+ GodotShape3D::FeatureType support_type_B;
shape_B->get_supports(transform_B->basis.xform_inv(best_axis).normalized(), max_supports, supports_B, support_count_B, support_type_B);
for (int i = 0; i < support_count_B; i++) {
supports_B[i] = transform_B->xform(supports_B[i]);
@@ -761,14 +762,14 @@ public:
/****** SAT TESTS *******/
-typedef void (*CollisionFunc)(const Shape3DSW *, const Transform3D &, const Shape3DSW *, const Transform3D &, _CollectorCallback *p_callback, real_t, real_t);
+typedef void (*CollisionFunc)(const GodotShape3D *, const Transform3D &, const GodotShape3D *, const Transform3D &, _CollectorCallback *p_callback, real_t, real_t);
template <bool withMargin>
-static void _collision_sphere_sphere(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const SphereShape3DSW *sphere_A = static_cast<const SphereShape3DSW *>(p_a);
- const SphereShape3DSW *sphere_B = static_cast<const SphereShape3DSW *>(p_b);
+static void _collision_sphere_sphere(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotSphereShape3D *sphere_A = static_cast<const GodotSphereShape3D *>(p_a);
+ const GodotSphereShape3D *sphere_B = static_cast<const GodotSphereShape3D *>(p_b);
- SeparatorAxisTest<SphereShape3DSW, SphereShape3DSW, withMargin> separator(sphere_A, p_transform_a, sphere_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotSphereShape3D, GodotSphereShape3D, withMargin> separator(sphere_A, p_transform_a, sphere_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
// previous axis
@@ -784,11 +785,11 @@ static void _collision_sphere_sphere(const Shape3DSW *p_a, const Transform3D &p_
}
template <bool withMargin>
-static void _collision_sphere_box(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const SphereShape3DSW *sphere_A = static_cast<const SphereShape3DSW *>(p_a);
- const BoxShape3DSW *box_B = static_cast<const BoxShape3DSW *>(p_b);
+static void _collision_sphere_box(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotSphereShape3D *sphere_A = static_cast<const GodotSphereShape3D *>(p_a);
+ const GodotBoxShape3D *box_B = static_cast<const GodotBoxShape3D *>(p_b);
- SeparatorAxisTest<SphereShape3DSW, BoxShape3DSW, withMargin> separator(sphere_A, p_transform_a, box_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotSphereShape3D, GodotBoxShape3D, withMargin> separator(sphere_A, p_transform_a, box_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -835,11 +836,11 @@ static void _collision_sphere_box(const Shape3DSW *p_a, const Transform3D &p_tra
}
template <bool withMargin>
-static void _collision_sphere_capsule(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const SphereShape3DSW *sphere_A = static_cast<const SphereShape3DSW *>(p_a);
- const CapsuleShape3DSW *capsule_B = static_cast<const CapsuleShape3DSW *>(p_b);
+static void _collision_sphere_capsule(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotSphereShape3D *sphere_A = static_cast<const GodotSphereShape3D *>(p_a);
+ const GodotCapsuleShape3D *capsule_B = static_cast<const GodotCapsuleShape3D *>(p_b);
- SeparatorAxisTest<SphereShape3DSW, CapsuleShape3DSW, withMargin> separator(sphere_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotSphereShape3D, GodotCapsuleShape3D, withMargin> separator(sphere_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -877,11 +878,11 @@ static void _collision_sphere_capsule(const Shape3DSW *p_a, const Transform3D &p
}
template <bool withMargin>
-static void _collision_sphere_cylinder(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const SphereShape3DSW *sphere_A = static_cast<const SphereShape3DSW *>(p_a);
- const CylinderShape3DSW *cylinder_B = static_cast<const CylinderShape3DSW *>(p_b);
+static void _collision_sphere_cylinder(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotSphereShape3D *sphere_A = static_cast<const GodotSphereShape3D *>(p_a);
+ const GodotCylinderShape3D *cylinder_B = static_cast<const GodotCylinderShape3D *>(p_b);
- SeparatorAxisTest<SphereShape3DSW, CylinderShape3DSW, withMargin> separator(sphere_A, p_transform_a, cylinder_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotSphereShape3D, GodotCylinderShape3D, withMargin> separator(sphere_A, p_transform_a, cylinder_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -936,11 +937,11 @@ static void _collision_sphere_cylinder(const Shape3DSW *p_a, const Transform3D &
}
template <bool withMargin>
-static void _collision_sphere_convex_polygon(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const SphereShape3DSW *sphere_A = static_cast<const SphereShape3DSW *>(p_a);
- const ConvexPolygonShape3DSW *convex_polygon_B = static_cast<const ConvexPolygonShape3DSW *>(p_b);
+static void _collision_sphere_convex_polygon(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotSphereShape3D *sphere_A = static_cast<const GodotSphereShape3D *>(p_a);
+ const GodotConvexPolygonShape3D *convex_polygon_B = static_cast<const GodotConvexPolygonShape3D *>(p_b);
- SeparatorAxisTest<SphereShape3DSW, ConvexPolygonShape3DSW, withMargin> separator(sphere_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotSphereShape3D, GodotConvexPolygonShape3D, withMargin> separator(sphere_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -999,11 +1000,11 @@ static void _collision_sphere_convex_polygon(const Shape3DSW *p_a, const Transfo
}
template <bool withMargin>
-static void _collision_sphere_face(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const SphereShape3DSW *sphere_A = static_cast<const SphereShape3DSW *>(p_a);
- const FaceShape3DSW *face_B = static_cast<const FaceShape3DSW *>(p_b);
+static void _collision_sphere_face(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotSphereShape3D *sphere_A = static_cast<const GodotSphereShape3D *>(p_a);
+ const GodotFaceShape3D *face_B = static_cast<const GodotFaceShape3D *>(p_b);
- SeparatorAxisTest<SphereShape3DSW, FaceShape3DSW, withMargin> separator(sphere_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotSphereShape3D, GodotFaceShape3D, withMargin> separator(sphere_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
Vector3 vertex[3] = {
p_transform_b.xform(face_B->vertex[0]),
@@ -1044,11 +1045,11 @@ static void _collision_sphere_face(const Shape3DSW *p_a, const Transform3D &p_tr
}
template <bool withMargin>
-static void _collision_box_box(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const BoxShape3DSW *box_A = static_cast<const BoxShape3DSW *>(p_a);
- const BoxShape3DSW *box_B = static_cast<const BoxShape3DSW *>(p_b);
+static void _collision_box_box(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotBoxShape3D *box_A = static_cast<const GodotBoxShape3D *>(p_a);
+ const GodotBoxShape3D *box_B = static_cast<const GodotBoxShape3D *>(p_b);
- SeparatorAxisTest<BoxShape3DSW, BoxShape3DSW, withMargin> separator(box_A, p_transform_a, box_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotBoxShape3D, GodotBoxShape3D, withMargin> separator(box_A, p_transform_a, box_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -1142,11 +1143,11 @@ static void _collision_box_box(const Shape3DSW *p_a, const Transform3D &p_transf
}
template <bool withMargin>
-static void _collision_box_capsule(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const BoxShape3DSW *box_A = static_cast<const BoxShape3DSW *>(p_a);
- const CapsuleShape3DSW *capsule_B = static_cast<const CapsuleShape3DSW *>(p_b);
+static void _collision_box_capsule(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotBoxShape3D *box_A = static_cast<const GodotBoxShape3D *>(p_a);
+ const GodotCapsuleShape3D *capsule_B = static_cast<const GodotCapsuleShape3D *>(p_b);
- SeparatorAxisTest<BoxShape3DSW, CapsuleShape3DSW, withMargin> separator(box_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotBoxShape3D, GodotCapsuleShape3D, withMargin> separator(box_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -1194,7 +1195,7 @@ static void _collision_box_capsule(const Shape3DSW *p_a, const Transform3D &p_tr
}
//Vector3 axis = (point - cyl_axis * cyl_axis.dot(point)).normalized();
- Vector3 axis = Plane(cyl_axis, 0).project(point).normalized();
+ Vector3 axis = Plane(cyl_axis).project(point).normalized();
if (!separator.test_axis(axis)) {
return;
@@ -1240,11 +1241,11 @@ static void _collision_box_capsule(const Shape3DSW *p_a, const Transform3D &p_tr
}
template <bool withMargin>
-static void _collision_box_cylinder(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const BoxShape3DSW *box_A = static_cast<const BoxShape3DSW *>(p_a);
- const CylinderShape3DSW *cylinder_B = static_cast<const CylinderShape3DSW *>(p_b);
+static void _collision_box_cylinder(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotBoxShape3D *box_A = static_cast<const GodotBoxShape3D *>(p_a);
+ const GodotCylinderShape3D *cylinder_B = static_cast<const GodotCylinderShape3D *>(p_b);
- SeparatorAxisTest<BoxShape3DSW, CylinderShape3DSW, withMargin> separator(box_A, p_transform_a, cylinder_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotBoxShape3D, GodotCylinderShape3D, withMargin> separator(box_A, p_transform_a, cylinder_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -1303,7 +1304,7 @@ static void _collision_box_cylinder(const Shape3DSW *p_a, const Transform3D &p_t
// Points of A, cylinder lateral surface.
for (int i = 0; i < 8; i++) {
const Vector3 &point = vertices_A[i];
- Vector3 axis = Plane(cyl_axis, 0).project(point).normalized();
+ Vector3 axis = Plane(cyl_axis).project(point).normalized();
if (!separator.test_axis(axis)) {
return;
@@ -1353,11 +1354,11 @@ static void _collision_box_cylinder(const Shape3DSW *p_a, const Transform3D &p_t
}
template <bool withMargin>
-static void _collision_box_convex_polygon(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const BoxShape3DSW *box_A = static_cast<const BoxShape3DSW *>(p_a);
- const ConvexPolygonShape3DSW *convex_polygon_B = static_cast<const ConvexPolygonShape3DSW *>(p_b);
+static void _collision_box_convex_polygon(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotBoxShape3D *box_A = static_cast<const GodotBoxShape3D *>(p_a);
+ const GodotConvexPolygonShape3D *convex_polygon_B = static_cast<const GodotConvexPolygonShape3D *>(p_b);
- SeparatorAxisTest<BoxShape3DSW, ConvexPolygonShape3DSW, withMargin> separator(box_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotBoxShape3D, GodotConvexPolygonShape3D, withMargin> separator(box_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -1471,11 +1472,11 @@ static void _collision_box_convex_polygon(const Shape3DSW *p_a, const Transform3
}
template <bool withMargin>
-static void _collision_box_face(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const BoxShape3DSW *box_A = static_cast<const BoxShape3DSW *>(p_a);
- const FaceShape3DSW *face_B = static_cast<const FaceShape3DSW *>(p_b);
+static void _collision_box_face(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotBoxShape3D *box_A = static_cast<const GodotBoxShape3D *>(p_a);
+ const GodotFaceShape3D *face_B = static_cast<const GodotFaceShape3D *>(p_b);
- SeparatorAxisTest<BoxShape3DSW, FaceShape3DSW, withMargin> separator(box_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotBoxShape3D, GodotFaceShape3D, withMargin> separator(box_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
Vector3 vertex[3] = {
p_transform_b.xform(face_B->vertex[0]),
@@ -1594,11 +1595,11 @@ static void _collision_box_face(const Shape3DSW *p_a, const Transform3D &p_trans
}
template <bool withMargin>
-static void _collision_capsule_capsule(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const CapsuleShape3DSW *capsule_A = static_cast<const CapsuleShape3DSW *>(p_a);
- const CapsuleShape3DSW *capsule_B = static_cast<const CapsuleShape3DSW *>(p_b);
+static void _collision_capsule_capsule(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotCapsuleShape3D *capsule_A = static_cast<const GodotCapsuleShape3D *>(p_a);
+ const GodotCapsuleShape3D *capsule_B = static_cast<const GodotCapsuleShape3D *>(p_b);
- SeparatorAxisTest<CapsuleShape3DSW, CapsuleShape3DSW, withMargin> separator(capsule_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotCapsuleShape3D, GodotCapsuleShape3D, withMargin> separator(capsule_A, p_transform_a, capsule_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -1658,11 +1659,11 @@ static void _collision_capsule_capsule(const Shape3DSW *p_a, const Transform3D &
}
template <bool withMargin>
-static void _collision_capsule_cylinder(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const CapsuleShape3DSW *capsule_A = static_cast<const CapsuleShape3DSW *>(p_a);
- const CylinderShape3DSW *cylinder_B = static_cast<const CylinderShape3DSW *>(p_b);
+static void _collision_capsule_cylinder(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotCapsuleShape3D *capsule_A = static_cast<const GodotCapsuleShape3D *>(p_a);
+ const GodotCylinderShape3D *cylinder_B = static_cast<const GodotCylinderShape3D *>(p_b);
- SeparatorAxisTest<CapsuleShape3DSW, CylinderShape3DSW, withMargin> separator(capsule_A, p_transform_a, cylinder_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotCapsuleShape3D, GodotCylinderShape3D, withMargin> separator(capsule_A, p_transform_a, cylinder_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -1709,7 +1710,7 @@ static void _collision_capsule_cylinder(const Shape3DSW *p_a, const Transform3D
return;
}
- CollisionSolver3DSW::CallbackResult callback = SeparatorAxisTest<CapsuleShape3DSW, CylinderShape3DSW, withMargin>::test_contact_points;
+ GodotCollisionSolver3D::CallbackResult callback = SeparatorAxisTest<GodotCapsuleShape3D, GodotCylinderShape3D, withMargin>::test_contact_points;
// Fallback to generic algorithm to find the best separating axis.
if (!fallback_collision_solver(p_a, p_transform_a, p_b, p_transform_b, callback, &separator, false, p_margin_a, p_margin_b)) {
@@ -1720,11 +1721,11 @@ static void _collision_capsule_cylinder(const Shape3DSW *p_a, const Transform3D
}
template <bool withMargin>
-static void _collision_capsule_convex_polygon(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const CapsuleShape3DSW *capsule_A = static_cast<const CapsuleShape3DSW *>(p_a);
- const ConvexPolygonShape3DSW *convex_polygon_B = static_cast<const ConvexPolygonShape3DSW *>(p_b);
+static void _collision_capsule_convex_polygon(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotCapsuleShape3D *capsule_A = static_cast<const GodotCapsuleShape3D *>(p_a);
+ const GodotConvexPolygonShape3D *convex_polygon_B = static_cast<const GodotConvexPolygonShape3D *>(p_b);
- SeparatorAxisTest<CapsuleShape3DSW, ConvexPolygonShape3DSW, withMargin> separator(capsule_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotCapsuleShape3D, GodotConvexPolygonShape3D, withMargin> separator(capsule_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -1787,11 +1788,11 @@ static void _collision_capsule_convex_polygon(const Shape3DSW *p_a, const Transf
}
template <bool withMargin>
-static void _collision_capsule_face(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const CapsuleShape3DSW *capsule_A = static_cast<const CapsuleShape3DSW *>(p_a);
- const FaceShape3DSW *face_B = static_cast<const FaceShape3DSW *>(p_b);
+static void _collision_capsule_face(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotCapsuleShape3D *capsule_A = static_cast<const GodotCapsuleShape3D *>(p_a);
+ const GodotFaceShape3D *face_B = static_cast<const GodotFaceShape3D *>(p_b);
- SeparatorAxisTest<CapsuleShape3DSW, FaceShape3DSW, withMargin> separator(capsule_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotCapsuleShape3D, GodotFaceShape3D, withMargin> separator(capsule_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
Vector3 vertex[3] = {
p_transform_b.xform(face_B->vertex[0]),
@@ -1861,11 +1862,11 @@ static void _collision_capsule_face(const Shape3DSW *p_a, const Transform3D &p_t
}
template <bool withMargin>
-static void _collision_cylinder_cylinder(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const CylinderShape3DSW *cylinder_A = static_cast<const CylinderShape3DSW *>(p_a);
- const CylinderShape3DSW *cylinder_B = static_cast<const CylinderShape3DSW *>(p_b);
+static void _collision_cylinder_cylinder(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotCylinderShape3D *cylinder_A = static_cast<const GodotCylinderShape3D *>(p_a);
+ const GodotCylinderShape3D *cylinder_B = static_cast<const GodotCylinderShape3D *>(p_b);
- SeparatorAxisTest<CylinderShape3DSW, CylinderShape3DSW, withMargin> separator(cylinder_A, p_transform_a, cylinder_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotCylinderShape3D, GodotCylinderShape3D, withMargin> separator(cylinder_A, p_transform_a, cylinder_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
Vector3 cylinder_A_axis = p_transform_a.basis.get_axis(1);
Vector3 cylinder_B_axis = p_transform_b.basis.get_axis(1);
@@ -1904,7 +1905,7 @@ static void _collision_cylinder_cylinder(const Shape3DSW *p_a, const Transform3D
return;
}
- CollisionSolver3DSW::CallbackResult callback = SeparatorAxisTest<CylinderShape3DSW, CylinderShape3DSW, withMargin>::test_contact_points;
+ GodotCollisionSolver3D::CallbackResult callback = SeparatorAxisTest<GodotCylinderShape3D, GodotCylinderShape3D, withMargin>::test_contact_points;
// Fallback to generic algorithm to find the best separating axis.
if (!fallback_collision_solver(p_a, p_transform_a, p_b, p_transform_b, callback, &separator, false, p_margin_a, p_margin_b)) {
@@ -1915,13 +1916,13 @@ static void _collision_cylinder_cylinder(const Shape3DSW *p_a, const Transform3D
}
template <bool withMargin>
-static void _collision_cylinder_convex_polygon(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const CylinderShape3DSW *cylinder_A = static_cast<const CylinderShape3DSW *>(p_a);
- const ConvexPolygonShape3DSW *convex_polygon_B = static_cast<const ConvexPolygonShape3DSW *>(p_b);
+static void _collision_cylinder_convex_polygon(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotCylinderShape3D *cylinder_A = static_cast<const GodotCylinderShape3D *>(p_a);
+ const GodotConvexPolygonShape3D *convex_polygon_B = static_cast<const GodotConvexPolygonShape3D *>(p_b);
- SeparatorAxisTest<CylinderShape3DSW, ConvexPolygonShape3DSW, withMargin> separator(cylinder_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotCylinderShape3D, GodotConvexPolygonShape3D, withMargin> separator(cylinder_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
- CollisionSolver3DSW::CallbackResult callback = SeparatorAxisTest<CylinderShape3DSW, ConvexPolygonShape3DSW, withMargin>::test_contact_points;
+ GodotCollisionSolver3D::CallbackResult callback = SeparatorAxisTest<GodotCylinderShape3D, GodotConvexPolygonShape3D, withMargin>::test_contact_points;
// Fallback to generic algorithm to find the best separating axis.
if (!fallback_collision_solver(p_a, p_transform_a, p_b, p_transform_b, callback, &separator, false, p_margin_a, p_margin_b)) {
@@ -1932,11 +1933,11 @@ static void _collision_cylinder_convex_polygon(const Shape3DSW *p_a, const Trans
}
template <bool withMargin>
-static void _collision_cylinder_face(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const CylinderShape3DSW *cylinder_A = static_cast<const CylinderShape3DSW *>(p_a);
- const FaceShape3DSW *face_B = static_cast<const FaceShape3DSW *>(p_b);
+static void _collision_cylinder_face(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotCylinderShape3D *cylinder_A = static_cast<const GodotCylinderShape3D *>(p_a);
+ const GodotFaceShape3D *face_B = static_cast<const GodotFaceShape3D *>(p_b);
- SeparatorAxisTest<CylinderShape3DSW, FaceShape3DSW, withMargin> separator(cylinder_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotCylinderShape3D, GodotFaceShape3D, withMargin> separator(cylinder_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -1985,7 +1986,7 @@ static void _collision_cylinder_face(const Shape3DSW *p_a, const Transform3D &p_
// Points of B, cylinder lateral surface.
for (int i = 0; i < 3; i++) {
const Vector3 &point = vertex[i];
- Vector3 axis = Plane(cyl_axis, 0).project(point).normalized();
+ Vector3 axis = Plane(cyl_axis).project(point).normalized();
if (axis.dot(normal) < 0.0) {
axis *= -1.0;
}
@@ -2037,11 +2038,11 @@ static void _collision_cylinder_face(const Shape3DSW *p_a, const Transform3D &p_
}
template <bool withMargin>
-static void _collision_convex_polygon_convex_polygon(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const ConvexPolygonShape3DSW *convex_polygon_A = static_cast<const ConvexPolygonShape3DSW *>(p_a);
- const ConvexPolygonShape3DSW *convex_polygon_B = static_cast<const ConvexPolygonShape3DSW *>(p_b);
+static void _collision_convex_polygon_convex_polygon(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotConvexPolygonShape3D *convex_polygon_A = static_cast<const GodotConvexPolygonShape3D *>(p_a);
+ const GodotConvexPolygonShape3D *convex_polygon_B = static_cast<const GodotConvexPolygonShape3D *>(p_b);
- SeparatorAxisTest<ConvexPolygonShape3DSW, ConvexPolygonShape3DSW, withMargin> separator(convex_polygon_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotConvexPolygonShape3D, GodotConvexPolygonShape3D, withMargin> separator(convex_polygon_A, p_transform_a, convex_polygon_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
if (!separator.test_previous_axis()) {
return;
@@ -2150,11 +2151,11 @@ static void _collision_convex_polygon_convex_polygon(const Shape3DSW *p_a, const
}
template <bool withMargin>
-static void _collision_convex_polygon_face(const Shape3DSW *p_a, const Transform3D &p_transform_a, const Shape3DSW *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
- const ConvexPolygonShape3DSW *convex_polygon_A = static_cast<const ConvexPolygonShape3DSW *>(p_a);
- const FaceShape3DSW *face_B = static_cast<const FaceShape3DSW *>(p_b);
+static void _collision_convex_polygon_face(const GodotShape3D *p_a, const Transform3D &p_transform_a, const GodotShape3D *p_b, const Transform3D &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
+ const GodotConvexPolygonShape3D *convex_polygon_A = static_cast<const GodotConvexPolygonShape3D *>(p_a);
+ const GodotFaceShape3D *face_B = static_cast<const GodotFaceShape3D *>(p_b);
- SeparatorAxisTest<ConvexPolygonShape3DSW, FaceShape3DSW, withMargin> separator(convex_polygon_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
+ SeparatorAxisTest<GodotConvexPolygonShape3D, GodotFaceShape3D, withMargin> separator(convex_polygon_A, p_transform_a, face_B, p_transform_b, p_collector, p_margin_a, p_margin_b);
const Geometry3D::MeshData &mesh = convex_polygon_A->get_mesh();
@@ -2268,7 +2269,7 @@ static void _collision_convex_polygon_face(const Shape3DSW *p_a, const Transform
separator.generate_contacts();
}
-bool sat_calculate_penetration(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CollisionSolver3DSW::CallbackResult p_result_callback, void *p_userdata, bool p_swap, Vector3 *r_prev_axis, real_t p_margin_a, real_t p_margin_b) {
+bool sat_calculate_penetration(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, GodotCollisionSolver3D::CallbackResult p_result_callback, void *p_userdata, bool p_swap, Vector3 *r_prev_axis, real_t p_margin_a, real_t p_margin_b) {
PhysicsServer3D::ShapeType type_A = p_shape_A->get_type();
ERR_FAIL_COND_V(type_A == PhysicsServer3D::SHAPE_WORLD_BOUNDARY, false);
@@ -2366,8 +2367,8 @@ bool sat_calculate_penetration(const Shape3DSW *p_shape_A, const Transform3D &p_
callback.collided = false;
callback.prev_axis = r_prev_axis;
- const Shape3DSW *A = p_shape_A;
- const Shape3DSW *B = p_shape_B;
+ const GodotShape3D *A = p_shape_A;
+ const GodotShape3D *B = p_shape_B;
const Transform3D *transform_A = &p_transform_A;
const Transform3D *transform_B = &p_transform_B;
real_t margin_A = p_margin_a;
diff --git a/servers/physics_3d/collision_solver_3d_sat.h b/servers/physics_3d/godot_collision_solver_3d_sat.h
index e50da7b101..069a701cba 100644
--- a/servers/physics_3d/collision_solver_3d_sat.h
+++ b/servers/physics_3d/godot_collision_solver_3d_sat.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* collision_solver_3d_sat.h */
+/* godot_collision_solver_3d_sat.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,11 +28,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef COLLISION_SOLVER_SAT_H
-#define COLLISION_SOLVER_SAT_H
+#ifndef GODOT_COLLISION_SOLVER_SAT_H
+#define GODOT_COLLISION_SOLVER_SAT_H
-#include "collision_solver_3d_sw.h"
+#include "godot_collision_solver_3d.h"
-bool sat_calculate_penetration(const Shape3DSW *p_shape_A, const Transform3D &p_transform_A, const Shape3DSW *p_shape_B, const Transform3D &p_transform_B, CollisionSolver3DSW::CallbackResult p_result_callback, void *p_userdata, bool p_swap = false, Vector3 *r_prev_axis = nullptr, real_t p_margin_a = 0, real_t p_margin_b = 0);
+bool sat_calculate_penetration(const GodotShape3D *p_shape_A, const Transform3D &p_transform_A, const GodotShape3D *p_shape_B, const Transform3D &p_transform_B, GodotCollisionSolver3D::CallbackResult p_result_callback, void *p_userdata, bool p_swap = false, Vector3 *r_prev_axis = nullptr, real_t p_margin_a = 0, real_t p_margin_b = 0);
-#endif // COLLISION_SOLVER_SAT_H
+#endif // GODOT_COLLISION_SOLVER_SAT_H
diff --git a/servers/physics_3d/constraint_3d_sw.h b/servers/physics_3d/godot_constraint_3d.h
index 7b44726ef5..840c81716c 100644
--- a/servers/physics_3d/constraint_3d_sw.h
+++ b/servers/physics_3d/godot_constraint_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* constraint_3d_sw.h */
+/* godot_constraint_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,14 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef CONSTRAINT_SW_H
-#define CONSTRAINT_SW_H
+#ifndef GODOT_CONSTRAINT_3D_H
+#define GODOT_CONSTRAINT_3D_H
-class Body3DSW;
-class SoftBody3DSW;
+class GodotBody3D;
+class GodotSoftBody3D;
-class Constraint3DSW {
- Body3DSW **_body_ptr;
+class GodotConstraint3D {
+ GodotBody3D **_body_ptr;
int _body_count;
uint64_t island_step;
int priority;
@@ -44,7 +44,7 @@ class Constraint3DSW {
RID self;
protected:
- Constraint3DSW(Body3DSW **p_body_ptr = nullptr, int p_body_count = 0) {
+ GodotConstraint3D(GodotBody3D **p_body_ptr = nullptr, int p_body_count = 0) {
_body_ptr = p_body_ptr;
_body_count = p_body_count;
island_step = 0;
@@ -59,10 +59,10 @@ public:
_FORCE_INLINE_ uint64_t get_island_step() const { return island_step; }
_FORCE_INLINE_ void set_island_step(uint64_t p_step) { island_step = p_step; }
- _FORCE_INLINE_ Body3DSW **get_body_ptr() const { return _body_ptr; }
+ _FORCE_INLINE_ GodotBody3D **get_body_ptr() const { return _body_ptr; }
_FORCE_INLINE_ int get_body_count() const { return _body_count; }
- virtual SoftBody3DSW *get_soft_body_ptr(int p_index) const { return nullptr; }
+ virtual GodotSoftBody3D *get_soft_body_ptr(int p_index) const { return nullptr; }
virtual int get_soft_body_count() const { return 0; }
_FORCE_INLINE_ void set_priority(int p_priority) { priority = p_priority; }
@@ -75,7 +75,7 @@ public:
virtual bool pre_solve(real_t p_step) = 0;
virtual void solve(real_t p_step) = 0;
- virtual ~Constraint3DSW() {}
+ virtual ~GodotConstraint3D() {}
};
-#endif // CONSTRAINT__SW_H
+#endif // GODOT_CONSTRAINT_3D_H
diff --git a/servers/physics_3d/joints_3d_sw.h b/servers/physics_3d/godot_joint_3d.h
index e2514674ea..4086bb53e1 100644
--- a/servers/physics_3d/joints_3d_sw.h
+++ b/servers/physics_3d/godot_joint_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* joints_3d_sw.h */
+/* godot_joint_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,13 +28,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef JOINTS_SW_H
-#define JOINTS_SW_H
+#ifndef GODOT_JOINT_3D_H
+#define GODOT_JOINT_3D_H
-#include "body_3d_sw.h"
-#include "constraint_3d_sw.h"
+#include "godot_body_3d.h"
+#include "godot_constraint_3d.h"
-class Joint3DSW : public Constraint3DSW {
+class GodotJoint3D : public GodotConstraint3D {
protected:
bool dynamic_A = false;
bool dynamic_B = false;
@@ -44,20 +44,20 @@ public:
virtual bool pre_solve(real_t p_step) override { return true; }
virtual void solve(real_t p_step) override {}
- void copy_settings_from(Joint3DSW *p_joint) {
+ void copy_settings_from(GodotJoint3D *p_joint) {
set_self(p_joint->get_self());
set_priority(p_joint->get_priority());
disable_collisions_between_bodies(p_joint->is_disabled_collisions_between_bodies());
}
virtual PhysicsServer3D::JointType get_type() const { return PhysicsServer3D::JOINT_TYPE_MAX; }
- _FORCE_INLINE_ Joint3DSW(Body3DSW **p_body_ptr = nullptr, int p_body_count = 0) :
- Constraint3DSW(p_body_ptr, p_body_count) {
+ _FORCE_INLINE_ GodotJoint3D(GodotBody3D **p_body_ptr = nullptr, int p_body_count = 0) :
+ GodotConstraint3D(p_body_ptr, p_body_count) {
}
- virtual ~Joint3DSW() {
+ virtual ~GodotJoint3D() {
for (int i = 0; i < get_body_count(); i++) {
- Body3DSW *body = get_body_ptr()[i];
+ GodotBody3D *body = get_body_ptr()[i];
if (body) {
body->remove_constraint(this);
}
@@ -65,4 +65,4 @@ public:
}
};
-#endif // JOINTS_SW_H
+#endif // GODOT_JOINT_3D_H
diff --git a/servers/physics_3d/godot_physics_server_3d.cpp b/servers/physics_3d/godot_physics_server_3d.cpp
new file mode 100644
index 0000000000..79a2e0b0ea
--- /dev/null
+++ b/servers/physics_3d/godot_physics_server_3d.cpp
@@ -0,0 +1,1747 @@
+/*************************************************************************/
+/* godot_physics_server_3d.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (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 "godot_physics_server_3d.h"
+
+#include "godot_body_direct_state_3d.h"
+#include "godot_broad_phase_3d_bvh.h"
+#include "joints/godot_cone_twist_joint_3d.h"
+#include "joints/godot_generic_6dof_joint_3d.h"
+#include "joints/godot_hinge_joint_3d.h"
+#include "joints/godot_pin_joint_3d.h"
+#include "joints/godot_slider_joint_3d.h"
+
+#include "core/debugger/engine_debugger.h"
+#include "core/os/os.h"
+
+#define FLUSH_QUERY_CHECK(m_object) \
+ ERR_FAIL_COND_MSG(m_object->get_space() && flushing_queries, "Can't change this state while flushing queries. Use call_deferred() or set_deferred() to change monitoring state instead.");
+
+RID GodotPhysicsServer3D::world_boundary_shape_create() {
+ GodotShape3D *shape = memnew(GodotWorldBoundaryShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::separation_ray_shape_create() {
+ GodotShape3D *shape = memnew(GodotSeparationRayShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::sphere_shape_create() {
+ GodotShape3D *shape = memnew(GodotSphereShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::box_shape_create() {
+ GodotShape3D *shape = memnew(GodotBoxShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::capsule_shape_create() {
+ GodotShape3D *shape = memnew(GodotCapsuleShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::cylinder_shape_create() {
+ GodotShape3D *shape = memnew(GodotCylinderShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::convex_polygon_shape_create() {
+ GodotShape3D *shape = memnew(GodotConvexPolygonShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::concave_polygon_shape_create() {
+ GodotShape3D *shape = memnew(GodotConcavePolygonShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::heightmap_shape_create() {
+ GodotShape3D *shape = memnew(GodotHeightMapShape3D);
+ RID rid = shape_owner.make_rid(shape);
+ shape->set_self(rid);
+ return rid;
+}
+RID GodotPhysicsServer3D::custom_shape_create() {
+ ERR_FAIL_V(RID());
+}
+
+void GodotPhysicsServer3D::shape_set_data(RID p_shape, const Variant &p_data) {
+ GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+ shape->set_data(p_data);
+};
+
+void GodotPhysicsServer3D::shape_set_custom_solver_bias(RID p_shape, real_t p_bias) {
+ GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+ shape->set_custom_bias(p_bias);
+}
+
+PhysicsServer3D::ShapeType GodotPhysicsServer3D::shape_get_type(RID p_shape) const {
+ const GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND_V(!shape, SHAPE_CUSTOM);
+ return shape->get_type();
+};
+
+Variant GodotPhysicsServer3D::shape_get_data(RID p_shape) const {
+ const GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND_V(!shape, Variant());
+ ERR_FAIL_COND_V(!shape->is_configured(), Variant());
+ return shape->get_data();
+};
+
+void GodotPhysicsServer3D::shape_set_margin(RID p_shape, real_t p_margin) {
+}
+
+real_t GodotPhysicsServer3D::shape_get_margin(RID p_shape) const {
+ return 0.0;
+}
+
+real_t GodotPhysicsServer3D::shape_get_custom_solver_bias(RID p_shape) const {
+ const GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND_V(!shape, 0);
+ return shape->get_custom_bias();
+}
+
+RID GodotPhysicsServer3D::space_create() {
+ GodotSpace3D *space = memnew(GodotSpace3D);
+ RID id = space_owner.make_rid(space);
+ space->set_self(id);
+ RID area_id = area_create();
+ GodotArea3D *area = area_owner.get_or_null(area_id);
+ ERR_FAIL_COND_V(!area, RID());
+ space->set_default_area(area);
+ area->set_space(space);
+ area->set_priority(-1);
+ RID sgb = body_create();
+ body_set_space(sgb, id);
+ body_set_mode(sgb, BODY_MODE_STATIC);
+ space->set_static_global_body(sgb);
+
+ return id;
+};
+
+void GodotPhysicsServer3D::space_set_active(RID p_space, bool p_active) {
+ GodotSpace3D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ if (p_active) {
+ active_spaces.insert(space);
+ } else {
+ active_spaces.erase(space);
+ }
+}
+
+bool GodotPhysicsServer3D::space_is_active(RID p_space) const {
+ const GodotSpace3D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, false);
+
+ return active_spaces.has(space);
+}
+
+void GodotPhysicsServer3D::space_set_param(RID p_space, SpaceParameter p_param, real_t p_value) {
+ GodotSpace3D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+
+ space->set_param(p_param, p_value);
+}
+
+real_t GodotPhysicsServer3D::space_get_param(RID p_space, SpaceParameter p_param) const {
+ const GodotSpace3D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, 0);
+ return space->get_param(p_param);
+}
+
+PhysicsDirectSpaceState3D *GodotPhysicsServer3D::space_get_direct_state(RID p_space) {
+ GodotSpace3D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, nullptr);
+ ERR_FAIL_COND_V_MSG((using_threads && !doing_sync) || space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification.");
+
+ return space->get_direct_state();
+}
+
+void GodotPhysicsServer3D::space_set_debug_contacts(RID p_space, int p_max_contacts) {
+ GodotSpace3D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ space->set_debug_contacts(p_max_contacts);
+}
+
+Vector<Vector3> GodotPhysicsServer3D::space_get_contacts(RID p_space) const {
+ GodotSpace3D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, Vector<Vector3>());
+ return space->get_debug_contacts();
+}
+
+int GodotPhysicsServer3D::space_get_contact_count(RID p_space) const {
+ GodotSpace3D *space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND_V(!space, 0);
+ return space->get_debug_contact_count();
+}
+
+RID GodotPhysicsServer3D::area_create() {
+ GodotArea3D *area = memnew(GodotArea3D);
+ RID rid = area_owner.make_rid(area);
+ area->set_self(rid);
+ return rid;
+};
+
+void GodotPhysicsServer3D::area_set_space(RID p_area, RID p_space) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ GodotSpace3D *space = nullptr;
+ if (p_space.is_valid()) {
+ space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ }
+
+ if (area->get_space() == space) {
+ return; //pointless
+ }
+
+ area->clear_constraints();
+ area->set_space(space);
+};
+
+RID GodotPhysicsServer3D::area_get_space(RID p_area) const {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, RID());
+
+ GodotSpace3D *space = area->get_space();
+ if (!space) {
+ return RID();
+ }
+ return space->get_self();
+};
+
+void GodotPhysicsServer3D::area_set_space_override_mode(RID p_area, AreaSpaceOverrideMode p_mode) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_space_override_mode(p_mode);
+}
+
+PhysicsServer3D::AreaSpaceOverrideMode GodotPhysicsServer3D::area_get_space_override_mode(RID p_area) const {
+ const GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, AREA_SPACE_OVERRIDE_DISABLED);
+
+ return area->get_space_override_mode();
+}
+
+void GodotPhysicsServer3D::area_add_shape(RID p_area, RID p_shape, const Transform3D &p_transform, bool p_disabled) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+
+ area->add_shape(shape, p_transform, p_disabled);
+}
+
+void GodotPhysicsServer3D::area_set_shape(RID p_area, int p_shape_idx, RID p_shape) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+ ERR_FAIL_COND(!shape->is_configured());
+
+ area->set_shape(p_shape_idx, shape);
+}
+
+void GodotPhysicsServer3D::area_set_shape_transform(RID p_area, int p_shape_idx, const Transform3D &p_transform) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_shape_transform(p_shape_idx, p_transform);
+}
+
+int GodotPhysicsServer3D::area_get_shape_count(RID p_area) const {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, -1);
+
+ return area->get_shape_count();
+}
+
+RID GodotPhysicsServer3D::area_get_shape(RID p_area, int p_shape_idx) const {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, RID());
+
+ GodotShape3D *shape = area->get_shape(p_shape_idx);
+ ERR_FAIL_COND_V(!shape, RID());
+
+ return shape->get_self();
+}
+
+Transform3D GodotPhysicsServer3D::area_get_shape_transform(RID p_area, int p_shape_idx) const {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, Transform3D());
+
+ return area->get_shape_transform(p_shape_idx);
+}
+
+void GodotPhysicsServer3D::area_remove_shape(RID p_area, int p_shape_idx) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->remove_shape(p_shape_idx);
+}
+
+void GodotPhysicsServer3D::area_clear_shapes(RID p_area) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ while (area->get_shape_count()) {
+ area->remove_shape(0);
+ }
+}
+
+void GodotPhysicsServer3D::area_set_shape_disabled(RID p_area, int p_shape_idx, bool p_disabled) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ ERR_FAIL_INDEX(p_shape_idx, area->get_shape_count());
+ FLUSH_QUERY_CHECK(area);
+ area->set_shape_disabled(p_shape_idx, p_disabled);
+}
+
+void GodotPhysicsServer3D::area_attach_object_instance_id(RID p_area, ObjectID p_id) {
+ if (space_owner.owns(p_area)) {
+ GodotSpace3D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ area->set_instance_id(p_id);
+}
+
+ObjectID GodotPhysicsServer3D::area_get_object_instance_id(RID p_area) const {
+ if (space_owner.owns(p_area)) {
+ GodotSpace3D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, ObjectID());
+ return area->get_instance_id();
+}
+
+void GodotPhysicsServer3D::area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value) {
+ if (space_owner.owns(p_area)) {
+ GodotSpace3D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ area->set_param(p_param, p_value);
+};
+
+void GodotPhysicsServer3D::area_set_transform(RID p_area, const Transform3D &p_transform) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ area->set_transform(p_transform);
+};
+
+Variant GodotPhysicsServer3D::area_get_param(RID p_area, AreaParameter p_param) const {
+ if (space_owner.owns(p_area)) {
+ GodotSpace3D *space = space_owner.get_or_null(p_area);
+ p_area = space->get_default_area()->get_self();
+ }
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, Variant());
+
+ return area->get_param(p_param);
+};
+
+Transform3D GodotPhysicsServer3D::area_get_transform(RID p_area) const {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND_V(!area, Transform3D());
+
+ return area->get_transform();
+};
+
+void GodotPhysicsServer3D::area_set_collision_layer(RID p_area, uint32_t p_layer) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_collision_layer(p_layer);
+}
+
+void GodotPhysicsServer3D::area_set_collision_mask(RID p_area, uint32_t p_mask) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_collision_mask(p_mask);
+}
+
+void GodotPhysicsServer3D::area_set_monitorable(RID p_area, bool p_monitorable) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+ FLUSH_QUERY_CHECK(area);
+
+ area->set_monitorable(p_monitorable);
+}
+
+void GodotPhysicsServer3D::area_set_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
+}
+
+void GodotPhysicsServer3D::area_set_ray_pickable(RID p_area, bool p_enable) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_ray_pickable(p_enable);
+}
+
+void GodotPhysicsServer3D::area_set_area_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
+ GodotArea3D *area = area_owner.get_or_null(p_area);
+ ERR_FAIL_COND(!area);
+
+ area->set_area_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
+}
+
+/* BODY API */
+
+RID GodotPhysicsServer3D::body_create() {
+ GodotBody3D *body = memnew(GodotBody3D);
+ RID rid = body_owner.make_rid(body);
+ body->set_self(rid);
+ return rid;
+};
+
+void GodotPhysicsServer3D::body_set_space(RID p_body, RID p_space) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ GodotSpace3D *space = nullptr;
+ if (p_space.is_valid()) {
+ space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ }
+
+ if (body->get_space() == space) {
+ return; //pointless
+ }
+
+ body->clear_constraint_map();
+ body->set_space(space);
+};
+
+RID GodotPhysicsServer3D::body_get_space(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, RID());
+
+ GodotSpace3D *space = body->get_space();
+ if (!space) {
+ return RID();
+ }
+ return space->get_self();
+};
+
+void GodotPhysicsServer3D::body_set_mode(RID p_body, BodyMode p_mode) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_mode(p_mode);
+};
+
+PhysicsServer3D::BodyMode GodotPhysicsServer3D::body_get_mode(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, BODY_MODE_STATIC);
+
+ return body->get_mode();
+};
+
+void GodotPhysicsServer3D::body_add_shape(RID p_body, RID p_shape, const Transform3D &p_transform, bool p_disabled) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+
+ body->add_shape(shape, p_transform, p_disabled);
+}
+
+void GodotPhysicsServer3D::body_set_shape(RID p_body, int p_shape_idx, RID p_shape) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ GodotShape3D *shape = shape_owner.get_or_null(p_shape);
+ ERR_FAIL_COND(!shape);
+ ERR_FAIL_COND(!shape->is_configured());
+
+ body->set_shape(p_shape_idx, shape);
+}
+void GodotPhysicsServer3D::body_set_shape_transform(RID p_body, int p_shape_idx, const Transform3D &p_transform) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_shape_transform(p_shape_idx, p_transform);
+}
+
+int GodotPhysicsServer3D::body_get_shape_count(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, -1);
+
+ return body->get_shape_count();
+}
+
+RID GodotPhysicsServer3D::body_get_shape(RID p_body, int p_shape_idx) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, RID());
+
+ GodotShape3D *shape = body->get_shape(p_shape_idx);
+ ERR_FAIL_COND_V(!shape, RID());
+
+ return shape->get_self();
+}
+
+void GodotPhysicsServer3D::body_set_shape_disabled(RID p_body, int p_shape_idx, bool p_disabled) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
+ FLUSH_QUERY_CHECK(body);
+
+ body->set_shape_disabled(p_shape_idx, p_disabled);
+}
+
+Transform3D GodotPhysicsServer3D::body_get_shape_transform(RID p_body, int p_shape_idx) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, Transform3D());
+
+ return body->get_shape_transform(p_shape_idx);
+}
+
+void GodotPhysicsServer3D::body_remove_shape(RID p_body, int p_shape_idx) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->remove_shape(p_shape_idx);
+}
+
+void GodotPhysicsServer3D::body_clear_shapes(RID p_body) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ while (body->get_shape_count()) {
+ body->remove_shape(0);
+ }
+}
+
+void GodotPhysicsServer3D::body_set_enable_continuous_collision_detection(RID p_body, bool p_enable) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_continuous_collision_detection(p_enable);
+}
+
+bool GodotPhysicsServer3D::body_is_continuous_collision_detection_enabled(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, false);
+
+ return body->is_continuous_collision_detection_enabled();
+}
+
+void GodotPhysicsServer3D::body_set_collision_layer(RID p_body, uint32_t p_layer) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_collision_layer(p_layer);
+}
+
+uint32_t GodotPhysicsServer3D::body_get_collision_layer(RID p_body) const {
+ const GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+
+ return body->get_collision_layer();
+}
+
+void GodotPhysicsServer3D::body_set_collision_mask(RID p_body, uint32_t p_mask) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_collision_mask(p_mask);
+}
+
+uint32_t GodotPhysicsServer3D::body_get_collision_mask(RID p_body) const {
+ const GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+
+ return body->get_collision_mask();
+}
+
+void GodotPhysicsServer3D::body_attach_object_instance_id(RID p_body, ObjectID p_id) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ if (body) {
+ body->set_instance_id(p_id);
+ return;
+ }
+
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ if (soft_body) {
+ soft_body->set_instance_id(p_id);
+ return;
+ }
+
+ ERR_FAIL_MSG("Invalid ID.");
+};
+
+ObjectID GodotPhysicsServer3D::body_get_object_instance_id(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, ObjectID());
+
+ return body->get_instance_id();
+};
+
+void GodotPhysicsServer3D::body_set_user_flags(RID p_body, uint32_t p_flags) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+};
+
+uint32_t GodotPhysicsServer3D::body_get_user_flags(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+
+ return 0;
+};
+
+void GodotPhysicsServer3D::body_set_param(RID p_body, BodyParameter p_param, const Variant &p_value) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_param(p_param, p_value);
+};
+
+Variant GodotPhysicsServer3D::body_get_param(RID p_body, BodyParameter p_param) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+
+ return body->get_param(p_param);
+};
+
+void GodotPhysicsServer3D::body_reset_mass_properties(RID p_body) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ return body->reset_mass_properties();
+}
+
+void GodotPhysicsServer3D::body_set_state(RID p_body, BodyState p_state, const Variant &p_variant) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_state(p_state, p_variant);
+};
+
+Variant GodotPhysicsServer3D::body_get_state(RID p_body, BodyState p_state) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, Variant());
+
+ return body->get_state(p_state);
+};
+
+void GodotPhysicsServer3D::body_set_applied_force(RID p_body, const Vector3 &p_force) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_applied_force(p_force);
+ body->wakeup();
+};
+
+Vector3 GodotPhysicsServer3D::body_get_applied_force(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, Vector3());
+ return body->get_applied_force();
+};
+
+void GodotPhysicsServer3D::body_set_applied_torque(RID p_body, const Vector3 &p_torque) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_applied_torque(p_torque);
+ body->wakeup();
+};
+
+Vector3 GodotPhysicsServer3D::body_get_applied_torque(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, Vector3());
+
+ return body->get_applied_torque();
+};
+
+void GodotPhysicsServer3D::body_add_central_force(RID p_body, const Vector3 &p_force) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->add_central_force(p_force);
+ body->wakeup();
+}
+
+void GodotPhysicsServer3D::body_add_force(RID p_body, const Vector3 &p_force, const Vector3 &p_position) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->add_force(p_force, p_position);
+ body->wakeup();
+};
+
+void GodotPhysicsServer3D::body_add_torque(RID p_body, const Vector3 &p_torque) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->add_torque(p_torque);
+ body->wakeup();
+};
+
+void GodotPhysicsServer3D::body_apply_central_impulse(RID p_body, const Vector3 &p_impulse) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ _update_shapes();
+
+ body->apply_central_impulse(p_impulse);
+ body->wakeup();
+}
+
+void GodotPhysicsServer3D::body_apply_impulse(RID p_body, const Vector3 &p_impulse, const Vector3 &p_position) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ _update_shapes();
+
+ body->apply_impulse(p_impulse, p_position);
+ body->wakeup();
+};
+
+void GodotPhysicsServer3D::body_apply_torque_impulse(RID p_body, const Vector3 &p_impulse) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ _update_shapes();
+
+ body->apply_torque_impulse(p_impulse);
+ body->wakeup();
+};
+
+void GodotPhysicsServer3D::body_set_axis_velocity(RID p_body, const Vector3 &p_axis_velocity) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ _update_shapes();
+
+ Vector3 v = body->get_linear_velocity();
+ Vector3 axis = p_axis_velocity.normalized();
+ v -= axis * axis.dot(v);
+ v += p_axis_velocity;
+ body->set_linear_velocity(v);
+ body->wakeup();
+};
+
+void GodotPhysicsServer3D::body_set_axis_lock(RID p_body, BodyAxis p_axis, bool p_lock) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_axis_lock(p_axis, p_lock);
+ body->wakeup();
+}
+
+bool GodotPhysicsServer3D::body_is_axis_locked(RID p_body, BodyAxis p_axis) const {
+ const GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+ return body->is_axis_locked(p_axis);
+}
+
+void GodotPhysicsServer3D::body_add_collision_exception(RID p_body, RID p_body_b) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->add_exception(p_body_b);
+ body->wakeup();
+};
+
+void GodotPhysicsServer3D::body_remove_collision_exception(RID p_body, RID p_body_b) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->remove_exception(p_body_b);
+ body->wakeup();
+};
+
+void GodotPhysicsServer3D::body_get_collision_exceptions(RID p_body, List<RID> *p_exceptions) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ for (int i = 0; i < body->get_exceptions().size(); i++) {
+ p_exceptions->push_back(body->get_exceptions()[i]);
+ }
+};
+
+void GodotPhysicsServer3D::body_set_contacts_reported_depth_threshold(RID p_body, real_t p_threshold) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+};
+
+real_t GodotPhysicsServer3D::body_get_contacts_reported_depth_threshold(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, 0);
+ return 0;
+};
+
+void GodotPhysicsServer3D::body_set_omit_force_integration(RID p_body, bool p_omit) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+
+ body->set_omit_force_integration(p_omit);
+};
+
+bool GodotPhysicsServer3D::body_is_omitting_force_integration(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, false);
+ return body->get_omit_force_integration();
+};
+
+void GodotPhysicsServer3D::body_set_max_contacts_reported(RID p_body, int p_contacts) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_max_contacts_reported(p_contacts);
+}
+
+int GodotPhysicsServer3D::body_get_max_contacts_reported(RID p_body) const {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, -1);
+ return body->get_max_contacts_reported();
+}
+
+void GodotPhysicsServer3D::body_set_state_sync_callback(RID p_body, void *p_instance, BodyStateCallback p_callback) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_state_sync_callback(p_instance, p_callback);
+}
+
+void GodotPhysicsServer3D::body_set_force_integration_callback(RID p_body, const Callable &p_callable, const Variant &p_udata) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_force_integration_callback(p_callable, p_udata);
+}
+
+void GodotPhysicsServer3D::body_set_ray_pickable(RID p_body, bool p_enable) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!body);
+ body->set_ray_pickable(p_enable);
+}
+
+bool GodotPhysicsServer3D::body_test_motion(RID p_body, const MotionParameters &p_parameters, MotionResult *r_result) {
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!body, false);
+ ERR_FAIL_COND_V(!body->get_space(), false);
+ ERR_FAIL_COND_V(body->get_space()->is_locked(), false);
+
+ _update_shapes();
+
+ return body->get_space()->test_body_motion(body, p_parameters, r_result);
+}
+
+PhysicsDirectBodyState3D *GodotPhysicsServer3D::body_get_direct_state(RID p_body) {
+ ERR_FAIL_COND_V_MSG((using_threads && !doing_sync), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
+
+ GodotBody3D *body = body_owner.get_or_null(p_body);
+ ERR_FAIL_NULL_V(body, nullptr);
+
+ ERR_FAIL_NULL_V(body->get_space(), nullptr);
+ ERR_FAIL_COND_V_MSG(body->get_space()->is_locked(), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
+
+ return body->get_direct_state();
+}
+
+/* SOFT BODY */
+
+RID GodotPhysicsServer3D::soft_body_create() {
+ GodotSoftBody3D *soft_body = memnew(GodotSoftBody3D);
+ RID rid = soft_body_owner.make_rid(soft_body);
+ soft_body->set_self(rid);
+ return rid;
+}
+
+void GodotPhysicsServer3D::soft_body_update_rendering_server(RID p_body, RenderingServerHandler *p_rendering_server_handler) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->update_rendering_server(p_rendering_server_handler);
+}
+
+void GodotPhysicsServer3D::soft_body_set_space(RID p_body, RID p_space) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ GodotSpace3D *space = nullptr;
+ if (p_space.is_valid()) {
+ space = space_owner.get_or_null(p_space);
+ ERR_FAIL_COND(!space);
+ }
+
+ if (soft_body->get_space() == space) {
+ return;
+ }
+
+ soft_body->set_space(space);
+}
+
+RID GodotPhysicsServer3D::soft_body_get_space(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, RID());
+
+ GodotSpace3D *space = soft_body->get_space();
+ if (!space) {
+ return RID();
+ }
+ return space->get_self();
+}
+
+void GodotPhysicsServer3D::soft_body_set_collision_layer(RID p_body, uint32_t p_layer) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_collision_layer(p_layer);
+}
+
+uint32_t GodotPhysicsServer3D::soft_body_get_collision_layer(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, 0);
+
+ return soft_body->get_collision_layer();
+}
+
+void GodotPhysicsServer3D::soft_body_set_collision_mask(RID p_body, uint32_t p_mask) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_collision_mask(p_mask);
+}
+
+uint32_t GodotPhysicsServer3D::soft_body_get_collision_mask(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, 0);
+
+ return soft_body->get_collision_mask();
+}
+
+void GodotPhysicsServer3D::soft_body_add_collision_exception(RID p_body, RID p_body_b) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->add_exception(p_body_b);
+}
+
+void GodotPhysicsServer3D::soft_body_remove_collision_exception(RID p_body, RID p_body_b) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->remove_exception(p_body_b);
+}
+
+void GodotPhysicsServer3D::soft_body_get_collision_exceptions(RID p_body, List<RID> *p_exceptions) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ for (int i = 0; i < soft_body->get_exceptions().size(); i++) {
+ p_exceptions->push_back(soft_body->get_exceptions()[i]);
+ }
+}
+
+void GodotPhysicsServer3D::soft_body_set_state(RID p_body, BodyState p_state, const Variant &p_variant) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_state(p_state, p_variant);
+}
+
+Variant GodotPhysicsServer3D::soft_body_get_state(RID p_body, BodyState p_state) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, Variant());
+
+ return soft_body->get_state(p_state);
+}
+
+void GodotPhysicsServer3D::soft_body_set_transform(RID p_body, const Transform3D &p_transform) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_state(BODY_STATE_TRANSFORM, p_transform);
+}
+
+void GodotPhysicsServer3D::soft_body_set_ray_pickable(RID p_body, bool p_enable) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_ray_pickable(p_enable);
+}
+
+void GodotPhysicsServer3D::soft_body_set_simulation_precision(RID p_body, int p_simulation_precision) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_iteration_count(p_simulation_precision);
+}
+
+int GodotPhysicsServer3D::soft_body_get_simulation_precision(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, 0.f);
+
+ return soft_body->get_iteration_count();
+}
+
+void GodotPhysicsServer3D::soft_body_set_total_mass(RID p_body, real_t p_total_mass) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_total_mass(p_total_mass);
+}
+
+real_t GodotPhysicsServer3D::soft_body_get_total_mass(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, 0.f);
+
+ return soft_body->get_total_mass();
+}
+
+void GodotPhysicsServer3D::soft_body_set_linear_stiffness(RID p_body, real_t p_stiffness) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_linear_stiffness(p_stiffness);
+}
+
+real_t GodotPhysicsServer3D::soft_body_get_linear_stiffness(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, 0.f);
+
+ return soft_body->get_linear_stiffness();
+}
+
+void GodotPhysicsServer3D::soft_body_set_pressure_coefficient(RID p_body, real_t p_pressure_coefficient) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_pressure_coefficient(p_pressure_coefficient);
+}
+
+real_t GodotPhysicsServer3D::soft_body_get_pressure_coefficient(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, 0.f);
+
+ return soft_body->get_pressure_coefficient();
+}
+
+void GodotPhysicsServer3D::soft_body_set_damping_coefficient(RID p_body, real_t p_damping_coefficient) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_damping_coefficient(p_damping_coefficient);
+}
+
+real_t GodotPhysicsServer3D::soft_body_get_damping_coefficient(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, 0.f);
+
+ return soft_body->get_damping_coefficient();
+}
+
+void GodotPhysicsServer3D::soft_body_set_drag_coefficient(RID p_body, real_t p_drag_coefficient) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_drag_coefficient(p_drag_coefficient);
+}
+
+real_t GodotPhysicsServer3D::soft_body_get_drag_coefficient(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, 0.f);
+
+ return soft_body->get_drag_coefficient();
+}
+
+void GodotPhysicsServer3D::soft_body_set_mesh(RID p_body, RID p_mesh) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_mesh(p_mesh);
+}
+
+AABB GodotPhysicsServer3D::soft_body_get_bounds(RID p_body) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, AABB());
+
+ return soft_body->get_bounds();
+}
+
+void GodotPhysicsServer3D::soft_body_move_point(RID p_body, int p_point_index, const Vector3 &p_global_position) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->set_vertex_position(p_point_index, p_global_position);
+}
+
+Vector3 GodotPhysicsServer3D::soft_body_get_point_global_position(RID p_body, int p_point_index) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, Vector3());
+
+ return soft_body->get_vertex_position(p_point_index);
+}
+
+void GodotPhysicsServer3D::soft_body_remove_all_pinned_points(RID p_body) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ soft_body->unpin_all_vertices();
+}
+
+void GodotPhysicsServer3D::soft_body_pin_point(RID p_body, int p_point_index, bool p_pin) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND(!soft_body);
+
+ if (p_pin) {
+ soft_body->pin_vertex(p_point_index);
+ } else {
+ soft_body->unpin_vertex(p_point_index);
+ }
+}
+
+bool GodotPhysicsServer3D::soft_body_is_point_pinned(RID p_body, int p_point_index) const {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_body);
+ ERR_FAIL_COND_V(!soft_body, false);
+
+ return soft_body->is_vertex_pinned(p_point_index);
+}
+
+/* JOINT API */
+
+RID GodotPhysicsServer3D::joint_create() {
+ GodotJoint3D *joint = memnew(GodotJoint3D);
+ RID rid = joint_owner.make_rid(joint);
+ joint->set_self(rid);
+ return rid;
+}
+
+void GodotPhysicsServer3D::joint_clear(RID p_joint) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ if (joint->get_type() != JOINT_TYPE_MAX) {
+ GodotJoint3D *empty_joint = memnew(GodotJoint3D);
+ empty_joint->copy_settings_from(joint);
+
+ joint_owner.replace(p_joint, empty_joint);
+ memdelete(joint);
+ }
+}
+
+void GodotPhysicsServer3D::joint_make_pin(RID p_joint, RID p_body_A, const Vector3 &p_local_A, RID p_body_B, const Vector3 &p_local_B) {
+ GodotBody3D *body_A = body_owner.get_or_null(p_body_A);
+ ERR_FAIL_COND(!body_A);
+
+ if (!p_body_B.is_valid()) {
+ ERR_FAIL_COND(!body_A->get_space());
+ p_body_B = body_A->get_space()->get_static_global_body();
+ }
+
+ GodotBody3D *body_B = body_owner.get_or_null(p_body_B);
+ ERR_FAIL_COND(!body_B);
+
+ ERR_FAIL_COND(body_A == body_B);
+
+ GodotJoint3D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint3D *joint = memnew(GodotPinJoint3D(body_A, p_local_A, body_B, p_local_B));
+
+ joint->copy_settings_from(prev_joint);
+ joint_owner.replace(p_joint, joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer3D::pin_joint_set_param(RID p_joint, PinJointParam p_param, real_t p_value) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_PIN);
+ GodotPinJoint3D *pin_joint = static_cast<GodotPinJoint3D *>(joint);
+ pin_joint->set_param(p_param, p_value);
+}
+
+real_t GodotPhysicsServer3D::pin_joint_get_param(RID p_joint, PinJointParam p_param) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, 0);
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_PIN, 0);
+ GodotPinJoint3D *pin_joint = static_cast<GodotPinJoint3D *>(joint);
+ return pin_joint->get_param(p_param);
+}
+
+void GodotPhysicsServer3D::pin_joint_set_local_a(RID p_joint, const Vector3 &p_A) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_PIN);
+ GodotPinJoint3D *pin_joint = static_cast<GodotPinJoint3D *>(joint);
+ pin_joint->set_pos_a(p_A);
+}
+
+Vector3 GodotPhysicsServer3D::pin_joint_get_local_a(RID p_joint) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, Vector3());
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_PIN, Vector3());
+ GodotPinJoint3D *pin_joint = static_cast<GodotPinJoint3D *>(joint);
+ return pin_joint->get_position_a();
+}
+
+void GodotPhysicsServer3D::pin_joint_set_local_b(RID p_joint, const Vector3 &p_B) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_PIN);
+ GodotPinJoint3D *pin_joint = static_cast<GodotPinJoint3D *>(joint);
+ pin_joint->set_pos_b(p_B);
+}
+
+Vector3 GodotPhysicsServer3D::pin_joint_get_local_b(RID p_joint) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, Vector3());
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_PIN, Vector3());
+ GodotPinJoint3D *pin_joint = static_cast<GodotPinJoint3D *>(joint);
+ return pin_joint->get_position_b();
+}
+
+void GodotPhysicsServer3D::joint_make_hinge(RID p_joint, RID p_body_A, const Transform3D &p_frame_A, RID p_body_B, const Transform3D &p_frame_B) {
+ GodotBody3D *body_A = body_owner.get_or_null(p_body_A);
+ ERR_FAIL_COND(!body_A);
+
+ if (!p_body_B.is_valid()) {
+ ERR_FAIL_COND(!body_A->get_space());
+ p_body_B = body_A->get_space()->get_static_global_body();
+ }
+
+ GodotBody3D *body_B = body_owner.get_or_null(p_body_B);
+ ERR_FAIL_COND(!body_B);
+
+ ERR_FAIL_COND(body_A == body_B);
+
+ GodotJoint3D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint3D *joint = memnew(GodotHingeJoint3D(body_A, body_B, p_frame_A, p_frame_B));
+
+ joint->copy_settings_from(prev_joint);
+ joint_owner.replace(p_joint, joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer3D::joint_make_hinge_simple(RID p_joint, RID p_body_A, const Vector3 &p_pivot_A, const Vector3 &p_axis_A, RID p_body_B, const Vector3 &p_pivot_B, const Vector3 &p_axis_B) {
+ GodotBody3D *body_A = body_owner.get_or_null(p_body_A);
+ ERR_FAIL_COND(!body_A);
+
+ if (!p_body_B.is_valid()) {
+ ERR_FAIL_COND(!body_A->get_space());
+ p_body_B = body_A->get_space()->get_static_global_body();
+ }
+
+ GodotBody3D *body_B = body_owner.get_or_null(p_body_B);
+ ERR_FAIL_COND(!body_B);
+
+ ERR_FAIL_COND(body_A == body_B);
+
+ GodotJoint3D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint3D *joint = memnew(GodotHingeJoint3D(body_A, body_B, p_pivot_A, p_pivot_B, p_axis_A, p_axis_B));
+
+ joint->copy_settings_from(prev_joint);
+ joint_owner.replace(p_joint, joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer3D::hinge_joint_set_param(RID p_joint, HingeJointParam p_param, real_t p_value) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_HINGE);
+ GodotHingeJoint3D *hinge_joint = static_cast<GodotHingeJoint3D *>(joint);
+ hinge_joint->set_param(p_param, p_value);
+}
+
+real_t GodotPhysicsServer3D::hinge_joint_get_param(RID p_joint, HingeJointParam p_param) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, 0);
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_HINGE, 0);
+ GodotHingeJoint3D *hinge_joint = static_cast<GodotHingeJoint3D *>(joint);
+ return hinge_joint->get_param(p_param);
+}
+
+void GodotPhysicsServer3D::hinge_joint_set_flag(RID p_joint, HingeJointFlag p_flag, bool p_value) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_HINGE);
+ GodotHingeJoint3D *hinge_joint = static_cast<GodotHingeJoint3D *>(joint);
+ hinge_joint->set_flag(p_flag, p_value);
+}
+
+bool GodotPhysicsServer3D::hinge_joint_get_flag(RID p_joint, HingeJointFlag p_flag) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, false);
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_HINGE, false);
+ GodotHingeJoint3D *hinge_joint = static_cast<GodotHingeJoint3D *>(joint);
+ return hinge_joint->get_flag(p_flag);
+}
+
+void GodotPhysicsServer3D::joint_set_solver_priority(RID p_joint, int p_priority) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ joint->set_priority(p_priority);
+}
+
+int GodotPhysicsServer3D::joint_get_solver_priority(RID p_joint) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, 0);
+ return joint->get_priority();
+}
+
+void GodotPhysicsServer3D::joint_disable_collisions_between_bodies(RID p_joint, const bool p_disable) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+
+ joint->disable_collisions_between_bodies(p_disable);
+
+ if (2 == joint->get_body_count()) {
+ GodotBody3D *body_a = *joint->get_body_ptr();
+ GodotBody3D *body_b = *(joint->get_body_ptr() + 1);
+
+ if (p_disable) {
+ body_add_collision_exception(body_a->get_self(), body_b->get_self());
+ body_add_collision_exception(body_b->get_self(), body_a->get_self());
+ } else {
+ body_remove_collision_exception(body_a->get_self(), body_b->get_self());
+ body_remove_collision_exception(body_b->get_self(), body_a->get_self());
+ }
+ }
+}
+
+bool GodotPhysicsServer3D::joint_is_disabled_collisions_between_bodies(RID p_joint) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, true);
+
+ return joint->is_disabled_collisions_between_bodies();
+}
+
+GodotPhysicsServer3D::JointType GodotPhysicsServer3D::joint_get_type(RID p_joint) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, JOINT_TYPE_PIN);
+ return joint->get_type();
+}
+
+void GodotPhysicsServer3D::joint_make_slider(RID p_joint, RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
+ GodotBody3D *body_A = body_owner.get_or_null(p_body_A);
+ ERR_FAIL_COND(!body_A);
+
+ if (!p_body_B.is_valid()) {
+ ERR_FAIL_COND(!body_A->get_space());
+ p_body_B = body_A->get_space()->get_static_global_body();
+ }
+
+ GodotBody3D *body_B = body_owner.get_or_null(p_body_B);
+ ERR_FAIL_COND(!body_B);
+
+ ERR_FAIL_COND(body_A == body_B);
+
+ GodotJoint3D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint3D *joint = memnew(GodotSliderJoint3D(body_A, body_B, p_local_frame_A, p_local_frame_B));
+
+ joint->copy_settings_from(prev_joint);
+ joint_owner.replace(p_joint, joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer3D::slider_joint_set_param(RID p_joint, SliderJointParam p_param, real_t p_value) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_SLIDER);
+ GodotSliderJoint3D *slider_joint = static_cast<GodotSliderJoint3D *>(joint);
+ slider_joint->set_param(p_param, p_value);
+}
+
+real_t GodotPhysicsServer3D::slider_joint_get_param(RID p_joint, SliderJointParam p_param) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, 0);
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_CONE_TWIST, 0);
+ GodotSliderJoint3D *slider_joint = static_cast<GodotSliderJoint3D *>(joint);
+ return slider_joint->get_param(p_param);
+}
+
+void GodotPhysicsServer3D::joint_make_cone_twist(RID p_joint, RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
+ GodotBody3D *body_A = body_owner.get_or_null(p_body_A);
+ ERR_FAIL_COND(!body_A);
+
+ if (!p_body_B.is_valid()) {
+ ERR_FAIL_COND(!body_A->get_space());
+ p_body_B = body_A->get_space()->get_static_global_body();
+ }
+
+ GodotBody3D *body_B = body_owner.get_or_null(p_body_B);
+ ERR_FAIL_COND(!body_B);
+
+ ERR_FAIL_COND(body_A == body_B);
+
+ GodotJoint3D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint3D *joint = memnew(GodotConeTwistJoint3D(body_A, body_B, p_local_frame_A, p_local_frame_B));
+
+ joint->copy_settings_from(prev_joint);
+ joint_owner.replace(p_joint, joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer3D::cone_twist_joint_set_param(RID p_joint, ConeTwistJointParam p_param, real_t p_value) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_CONE_TWIST);
+ GodotConeTwistJoint3D *cone_twist_joint = static_cast<GodotConeTwistJoint3D *>(joint);
+ cone_twist_joint->set_param(p_param, p_value);
+}
+
+real_t GodotPhysicsServer3D::cone_twist_joint_get_param(RID p_joint, ConeTwistJointParam p_param) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, 0);
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_CONE_TWIST, 0);
+ GodotConeTwistJoint3D *cone_twist_joint = static_cast<GodotConeTwistJoint3D *>(joint);
+ return cone_twist_joint->get_param(p_param);
+}
+
+void GodotPhysicsServer3D::joint_make_generic_6dof(RID p_joint, RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
+ GodotBody3D *body_A = body_owner.get_or_null(p_body_A);
+ ERR_FAIL_COND(!body_A);
+
+ if (!p_body_B.is_valid()) {
+ ERR_FAIL_COND(!body_A->get_space());
+ p_body_B = body_A->get_space()->get_static_global_body();
+ }
+
+ GodotBody3D *body_B = body_owner.get_or_null(p_body_B);
+ ERR_FAIL_COND(!body_B);
+
+ ERR_FAIL_COND(body_A == body_B);
+
+ GodotJoint3D *prev_joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(prev_joint == nullptr);
+
+ GodotJoint3D *joint = memnew(GodotGeneric6DOFJoint3D(body_A, body_B, p_local_frame_A, p_local_frame_B, true));
+
+ joint->copy_settings_from(prev_joint);
+ joint_owner.replace(p_joint, joint);
+ memdelete(prev_joint);
+}
+
+void GodotPhysicsServer3D::generic_6dof_joint_set_param(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisParam p_param, real_t p_value) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_6DOF);
+ GodotGeneric6DOFJoint3D *generic_6dof_joint = static_cast<GodotGeneric6DOFJoint3D *>(joint);
+ generic_6dof_joint->set_param(p_axis, p_param, p_value);
+}
+
+real_t GodotPhysicsServer3D::generic_6dof_joint_get_param(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisParam p_param) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, 0);
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_6DOF, 0);
+ GodotGeneric6DOFJoint3D *generic_6dof_joint = static_cast<GodotGeneric6DOFJoint3D *>(joint);
+ return generic_6dof_joint->get_param(p_axis, p_param);
+}
+
+void GodotPhysicsServer3D::generic_6dof_joint_set_flag(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisFlag p_flag, bool p_enable) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_6DOF);
+ GodotGeneric6DOFJoint3D *generic_6dof_joint = static_cast<GodotGeneric6DOFJoint3D *>(joint);
+ generic_6dof_joint->set_flag(p_axis, p_flag, p_enable);
+}
+
+bool GodotPhysicsServer3D::generic_6dof_joint_get_flag(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisFlag p_flag) const {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_joint);
+ ERR_FAIL_COND_V(!joint, false);
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_6DOF, false);
+ GodotGeneric6DOFJoint3D *generic_6dof_joint = static_cast<GodotGeneric6DOFJoint3D *>(joint);
+ return generic_6dof_joint->get_flag(p_axis, p_flag);
+}
+
+void GodotPhysicsServer3D::free(RID p_rid) {
+ _update_shapes(); //just in case
+
+ if (shape_owner.owns(p_rid)) {
+ GodotShape3D *shape = shape_owner.get_or_null(p_rid);
+
+ while (shape->get_owners().size()) {
+ GodotShapeOwner3D *so = shape->get_owners().front()->key();
+ so->remove_shape(shape);
+ }
+
+ shape_owner.free(p_rid);
+ memdelete(shape);
+ } else if (body_owner.owns(p_rid)) {
+ GodotBody3D *body = body_owner.get_or_null(p_rid);
+
+ /*
+ if (body->get_state_query())
+ _clear_query(body->get_state_query());
+
+ if (body->get_direct_state_query())
+ _clear_query(body->get_direct_state_query());
+ */
+
+ body->set_space(nullptr);
+
+ while (body->get_shape_count()) {
+ body->remove_shape(0);
+ }
+
+ body_owner.free(p_rid);
+ memdelete(body);
+ } else if (soft_body_owner.owns(p_rid)) {
+ GodotSoftBody3D *soft_body = soft_body_owner.get_or_null(p_rid);
+
+ soft_body->set_space(nullptr);
+
+ soft_body_owner.free(p_rid);
+ memdelete(soft_body);
+ } else if (area_owner.owns(p_rid)) {
+ GodotArea3D *area = area_owner.get_or_null(p_rid);
+
+ /*
+ if (area->get_monitor_query())
+ _clear_query(area->get_monitor_query());
+ */
+
+ area->set_space(nullptr);
+
+ while (area->get_shape_count()) {
+ area->remove_shape(0);
+ }
+
+ area_owner.free(p_rid);
+ memdelete(area);
+ } else if (space_owner.owns(p_rid)) {
+ GodotSpace3D *space = space_owner.get_or_null(p_rid);
+
+ while (space->get_objects().size()) {
+ GodotCollisionObject3D *co = (GodotCollisionObject3D *)space->get_objects().front()->get();
+ co->set_space(nullptr);
+ }
+
+ active_spaces.erase(space);
+ free(space->get_default_area()->get_self());
+ free(space->get_static_global_body());
+
+ space_owner.free(p_rid);
+ memdelete(space);
+ } else if (joint_owner.owns(p_rid)) {
+ GodotJoint3D *joint = joint_owner.get_or_null(p_rid);
+
+ joint_owner.free(p_rid);
+ memdelete(joint);
+
+ } else {
+ ERR_FAIL_MSG("Invalid ID.");
+ }
+};
+
+void GodotPhysicsServer3D::set_active(bool p_active) {
+ active = p_active;
+};
+
+void GodotPhysicsServer3D::set_collision_iterations(int p_iterations) {
+ iterations = p_iterations;
+};
+
+void GodotPhysicsServer3D::init() {
+ iterations = 8; // 8?
+ stepper = memnew(GodotStep3D);
+};
+
+void GodotPhysicsServer3D::step(real_t p_step) {
+#ifndef _3D_DISABLED
+
+ if (!active) {
+ return;
+ }
+
+ _update_shapes();
+
+ island_count = 0;
+ active_objects = 0;
+ collision_pairs = 0;
+ for (Set<const GodotSpace3D *>::Element *E = active_spaces.front(); E; E = E->next()) {
+ stepper->step((GodotSpace3D *)E->get(), p_step, iterations);
+ island_count += E->get()->get_island_count();
+ active_objects += E->get()->get_active_objects();
+ collision_pairs += E->get()->get_collision_pairs();
+ }
+#endif
+}
+
+void GodotPhysicsServer3D::sync() {
+ doing_sync = true;
+};
+
+void GodotPhysicsServer3D::flush_queries() {
+#ifndef _3D_DISABLED
+
+ if (!active) {
+ return;
+ }
+
+ flushing_queries = true;
+
+ uint64_t time_beg = OS::get_singleton()->get_ticks_usec();
+
+ for (Set<const GodotSpace3D *>::Element *E = active_spaces.front(); E; E = E->next()) {
+ GodotSpace3D *space = (GodotSpace3D *)E->get();
+ space->call_queries();
+ }
+
+ flushing_queries = false;
+
+ if (EngineDebugger::is_profiling("servers")) {
+ uint64_t total_time[GodotSpace3D::ELAPSED_TIME_MAX];
+ static const char *time_name[GodotSpace3D::ELAPSED_TIME_MAX] = {
+ "integrate_forces",
+ "generate_islands",
+ "setup_constraints",
+ "solve_constraints",
+ "integrate_velocities"
+ };
+
+ for (int i = 0; i < GodotSpace3D::ELAPSED_TIME_MAX; i++) {
+ total_time[i] = 0;
+ }
+
+ for (Set<const GodotSpace3D *>::Element *E = active_spaces.front(); E; E = E->next()) {
+ for (int i = 0; i < GodotSpace3D::ELAPSED_TIME_MAX; i++) {
+ total_time[i] += E->get()->get_elapsed_time(GodotSpace3D::ElapsedTime(i));
+ }
+ }
+
+ Array values;
+ values.resize(GodotSpace3D::ELAPSED_TIME_MAX * 2);
+ for (int i = 0; i < GodotSpace3D::ELAPSED_TIME_MAX; i++) {
+ values[i * 2 + 0] = time_name[i];
+ values[i * 2 + 1] = USEC_TO_SEC(total_time[i]);
+ }
+ values.push_back("flush_queries");
+ values.push_back(USEC_TO_SEC(OS::get_singleton()->get_ticks_usec() - time_beg));
+
+ values.push_front("physics");
+ EngineDebugger::profiler_add_frame_data("servers", values);
+ }
+#endif
+};
+
+void GodotPhysicsServer3D::end_sync() {
+ doing_sync = false;
+};
+
+void GodotPhysicsServer3D::finish() {
+ memdelete(stepper);
+};
+
+int GodotPhysicsServer3D::get_process_info(ProcessInfo p_info) {
+ switch (p_info) {
+ case INFO_ACTIVE_OBJECTS: {
+ return active_objects;
+ } break;
+ case INFO_COLLISION_PAIRS: {
+ return collision_pairs;
+ } break;
+ case INFO_ISLAND_COUNT: {
+ return island_count;
+ } break;
+ }
+
+ return 0;
+}
+
+void GodotPhysicsServer3D::_update_shapes() {
+ while (pending_shape_update_list.first()) {
+ pending_shape_update_list.first()->self()->_shape_changed();
+ pending_shape_update_list.remove(pending_shape_update_list.first());
+ }
+}
+
+void GodotPhysicsServer3D::_shape_col_cbk(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata) {
+ CollCbkData *cbk = (CollCbkData *)p_userdata;
+
+ if (cbk->max == 0) {
+ return;
+ }
+
+ if (cbk->amount == cbk->max) {
+ //find least deep
+ real_t min_depth = 1e20;
+ int min_depth_idx = 0;
+ for (int i = 0; i < cbk->amount; i++) {
+ real_t d = cbk->ptr[i * 2 + 0].distance_squared_to(cbk->ptr[i * 2 + 1]);
+ if (d < min_depth) {
+ min_depth = d;
+ min_depth_idx = i;
+ }
+ }
+
+ real_t d = p_point_A.distance_squared_to(p_point_B);
+ if (d < min_depth) {
+ return;
+ }
+ cbk->ptr[min_depth_idx * 2 + 0] = p_point_A;
+ cbk->ptr[min_depth_idx * 2 + 1] = p_point_B;
+
+ } else {
+ cbk->ptr[cbk->amount * 2 + 0] = p_point_A;
+ cbk->ptr[cbk->amount * 2 + 1] = p_point_B;
+ cbk->amount++;
+ }
+}
+
+GodotPhysicsServer3D *GodotPhysicsServer3D::godot_singleton = nullptr;
+GodotPhysicsServer3D::GodotPhysicsServer3D(bool p_using_threads) {
+ godot_singleton = this;
+ GodotBroadPhase3D::create_func = GodotBroadPhase3DBVH::_create;
+
+ using_threads = p_using_threads;
+};
diff --git a/servers/physics_3d/physics_server_3d_sw.h b/servers/physics_3d/godot_physics_server_3d.h
index 54a787198d..3ed9e320dc 100644
--- a/servers/physics_3d/physics_server_3d_sw.h
+++ b/servers/physics_3d/godot_physics_server_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* physics_server_3d_sw.h */
+/* godot_physics_server_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,20 +28,21 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef PHYSICS_SERVER_SW
-#define PHYSICS_SERVER_SW
+#ifndef GODOT_PHYSICS_SERVER_3D_H
+#define GODOT_PHYSICS_SERVER_3D_H
+
+#include "godot_joint_3d.h"
+#include "godot_shape_3d.h"
+#include "godot_space_3d.h"
+#include "godot_step_3d.h"
#include "core/templates/rid_owner.h"
-#include "joints_3d_sw.h"
#include "servers/physics_server_3d.h"
-#include "shape_3d_sw.h"
-#include "space_3d_sw.h"
-#include "step_3d_sw.h"
-class PhysicsServer3DSW : public PhysicsServer3D {
- GDCLASS(PhysicsServer3DSW, PhysicsServer3D);
+class GodotPhysicsServer3D : public PhysicsServer3D {
+ GDCLASS(GodotPhysicsServer3D, PhysicsServer3D);
- friend class PhysicsDirectSpaceState3DSW;
+ friend class GodotPhysicsDirectSpaceState3D;
bool active = true;
int iterations = 0;
@@ -53,22 +54,22 @@ class PhysicsServer3DSW : public PhysicsServer3D {
bool doing_sync = false;
bool flushing_queries = false;
- Step3DSW *stepper = nullptr;
- Set<const Space3DSW *> active_spaces;
+ GodotStep3D *stepper = nullptr;
+ Set<const GodotSpace3D *> active_spaces;
- mutable RID_PtrOwner<Shape3DSW, true> shape_owner;
- mutable RID_PtrOwner<Space3DSW, true> space_owner;
- mutable RID_PtrOwner<Area3DSW, true> area_owner;
- mutable RID_PtrOwner<Body3DSW, true> body_owner;
- mutable RID_PtrOwner<SoftBody3DSW, true> soft_body_owner;
- mutable RID_PtrOwner<Joint3DSW, true> joint_owner;
+ mutable RID_PtrOwner<GodotShape3D, true> shape_owner;
+ mutable RID_PtrOwner<GodotSpace3D, true> space_owner;
+ mutable RID_PtrOwner<GodotArea3D, true> area_owner;
+ mutable RID_PtrOwner<GodotBody3D, true> body_owner;
+ mutable RID_PtrOwner<GodotSoftBody3D, true> soft_body_owner;
+ mutable RID_PtrOwner<GodotJoint3D, true> joint_owner;
//void _clear_query(QuerySW *p_query);
- friend class CollisionObject3DSW;
- SelfList<CollisionObject3DSW>::List pending_shape_update_list;
+ friend class GodotCollisionObject3D;
+ SelfList<GodotCollisionObject3D>::List pending_shape_update_list;
void _update_shapes();
- static PhysicsServer3DSW *singletonsw;
+ static GodotPhysicsServer3D *godot_singleton;
public:
struct CollCbkData {
@@ -372,8 +373,8 @@ public:
int get_process_info(ProcessInfo p_info) override;
- PhysicsServer3DSW(bool p_using_threads = false);
- ~PhysicsServer3DSW() {}
+ GodotPhysicsServer3D(bool p_using_threads = false);
+ ~GodotPhysicsServer3D() {}
};
-#endif
+#endif // GODOT_PHYSICS_SERVER_3D_H
diff --git a/servers/physics_3d/shape_3d_sw.cpp b/servers/physics_3d/godot_shape_3d.cpp
index 0fb6d582c8..4c12a5a948 100644
--- a/servers/physics_3d/shape_3d_sw.cpp
+++ b/servers/physics_3d/godot_shape_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* shape_3d_sw.cpp */
+/* godot_shape_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,14 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "shape_3d_sw.h"
+#include "godot_shape_3d.h"
#include "core/io/image.h"
#include "core/math/convex_hull.h"
#include "core/math/geometry_3d.h"
#include "core/templates/sort_array.h"
-// HeightMapShape3DSW is based on Bullet btHeightfieldTerrainShape.
+// GodotHeightMapShape3D is based on Bullet btHeightfieldTerrainShape.
/*
Bullet Continuous Collision Detection and Physics Library
@@ -58,16 +58,16 @@ subject to the following restrictions:
#define _CYLINDER_EDGE_IS_VALID_SUPPORT_THRESHOLD 0.002
#define _CYLINDER_FACE_IS_VALID_SUPPORT_THRESHOLD 0.999
-void Shape3DSW::configure(const AABB &p_aabb) {
+void GodotShape3D::configure(const AABB &p_aabb) {
aabb = p_aabb;
configured = true;
- for (const KeyValue<ShapeOwner3DSW *, int> &E : owners) {
- ShapeOwner3DSW *co = (ShapeOwner3DSW *)E.key;
+ for (const KeyValue<GodotShapeOwner3D *, int> &E : owners) {
+ GodotShapeOwner3D *co = (GodotShapeOwner3D *)E.key;
co->_shape_changed();
}
}
-Vector3 Shape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotShape3D::get_support(const Vector3 &p_normal) const {
Vector3 res;
int amnt;
FeatureType type;
@@ -75,8 +75,8 @@ Vector3 Shape3DSW::get_support(const Vector3 &p_normal) const {
return res;
}
-void Shape3DSW::add_owner(ShapeOwner3DSW *p_owner) {
- Map<ShapeOwner3DSW *, int>::Element *E = owners.find(p_owner);
+void GodotShape3D::add_owner(GodotShapeOwner3D *p_owner) {
+ Map<GodotShapeOwner3D *, int>::Element *E = owners.find(p_owner);
if (E) {
E->get()++;
} else {
@@ -84,8 +84,8 @@ void Shape3DSW::add_owner(ShapeOwner3DSW *p_owner) {
}
}
-void Shape3DSW::remove_owner(ShapeOwner3DSW *p_owner) {
- Map<ShapeOwner3DSW *, int>::Element *E = owners.find(p_owner);
+void GodotShape3D::remove_owner(GodotShapeOwner3D *p_owner) {
+ Map<GodotShapeOwner3D *, int>::Element *E = owners.find(p_owner);
ERR_FAIL_COND(!E);
E->get()--;
if (E->get() == 0) {
@@ -93,33 +93,33 @@ void Shape3DSW::remove_owner(ShapeOwner3DSW *p_owner) {
}
}
-bool Shape3DSW::is_owner(ShapeOwner3DSW *p_owner) const {
+bool GodotShape3D::is_owner(GodotShapeOwner3D *p_owner) const {
return owners.has(p_owner);
}
-const Map<ShapeOwner3DSW *, int> &Shape3DSW::get_owners() const {
+const Map<GodotShapeOwner3D *, int> &GodotShape3D::get_owners() const {
return owners;
}
-Shape3DSW::~Shape3DSW() {
+GodotShape3D::~GodotShape3D() {
ERR_FAIL_COND(owners.size());
}
-Plane WorldBoundaryShape3DSW::get_plane() const {
+Plane GodotWorldBoundaryShape3D::get_plane() const {
return plane;
}
-void WorldBoundaryShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotWorldBoundaryShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
// gibberish, a plane is infinity
r_min = -1e7;
r_max = 1e7;
}
-Vector3 WorldBoundaryShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotWorldBoundaryShape3D::get_support(const Vector3 &p_normal) const {
return p_normal * 1e15;
}
-bool WorldBoundaryShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotWorldBoundaryShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
bool inters = plane.intersects_segment(p_begin, p_end, &r_result);
if (inters) {
r_normal = plane.normal;
@@ -127,11 +127,11 @@ bool WorldBoundaryShape3DSW::intersect_segment(const Vector3 &p_begin, const Vec
return inters;
}
-bool WorldBoundaryShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotWorldBoundaryShape3D::intersect_point(const Vector3 &p_point) const {
return plane.distance_to(p_point) < 0;
}
-Vector3 WorldBoundaryShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotWorldBoundaryShape3D::get_closest_point_to(const Vector3 &p_point) const {
if (plane.is_point_over(p_point)) {
return plane.project(p_point);
} else {
@@ -139,43 +139,43 @@ Vector3 WorldBoundaryShape3DSW::get_closest_point_to(const Vector3 &p_point) con
}
}
-Vector3 WorldBoundaryShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotWorldBoundaryShape3D::get_moment_of_inertia(real_t p_mass) const {
return Vector3(); // not applicable.
}
-void WorldBoundaryShape3DSW::_setup(const Plane &p_plane) {
+void GodotWorldBoundaryShape3D::_setup(const Plane &p_plane) {
plane = p_plane;
configure(AABB(Vector3(-1e4, -1e4, -1e4), Vector3(1e4 * 2, 1e4 * 2, 1e4 * 2)));
}
-void WorldBoundaryShape3DSW::set_data(const Variant &p_data) {
+void GodotWorldBoundaryShape3D::set_data(const Variant &p_data) {
_setup(p_data);
}
-Variant WorldBoundaryShape3DSW::get_data() const {
+Variant GodotWorldBoundaryShape3D::get_data() const {
return plane;
}
-WorldBoundaryShape3DSW::WorldBoundaryShape3DSW() {
+GodotWorldBoundaryShape3D::GodotWorldBoundaryShape3D() {
}
//
-real_t SeparationRayShape3DSW::get_length() const {
+real_t GodotSeparationRayShape3D::get_length() const {
return length;
}
-bool SeparationRayShape3DSW::get_slide_on_slope() const {
+bool GodotSeparationRayShape3D::get_slide_on_slope() const {
return slide_on_slope;
}
-void SeparationRayShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotSeparationRayShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
// don't think this will be even used
r_min = 0;
r_max = 1;
}
-Vector3 SeparationRayShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotSeparationRayShape3D::get_support(const Vector3 &p_normal) const {
if (p_normal.z > 0) {
return Vector3(0, 0, length);
} else {
@@ -183,7 +183,7 @@ Vector3 SeparationRayShape3DSW::get_support(const Vector3 &p_normal) const {
}
}
-void SeparationRayShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
+void GodotSeparationRayShape3D::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
if (Math::abs(p_normal.z) < _EDGE_IS_VALID_SUPPORT_THRESHOLD) {
r_amount = 2;
r_type = FEATURE_EDGE;
@@ -200,15 +200,15 @@ void SeparationRayShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Ve
}
}
-bool SeparationRayShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotSeparationRayShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
return false; //simply not possible
}
-bool SeparationRayShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotSeparationRayShape3D::intersect_point(const Vector3 &p_point) const {
return false; //simply not possible
}
-Vector3 SeparationRayShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotSeparationRayShape3D::get_closest_point_to(const Vector3 &p_point) const {
Vector3 s[2] = {
Vector3(0, 0, 0),
Vector3(0, 0, length)
@@ -217,37 +217,37 @@ Vector3 SeparationRayShape3DSW::get_closest_point_to(const Vector3 &p_point) con
return Geometry3D::get_closest_point_to_segment(p_point, s);
}
-Vector3 SeparationRayShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotSeparationRayShape3D::get_moment_of_inertia(real_t p_mass) const {
return Vector3();
}
-void SeparationRayShape3DSW::_setup(real_t p_length, bool p_slide_on_slope) {
+void GodotSeparationRayShape3D::_setup(real_t p_length, bool p_slide_on_slope) {
length = p_length;
slide_on_slope = p_slide_on_slope;
configure(AABB(Vector3(0, 0, 0), Vector3(0.1, 0.1, length)));
}
-void SeparationRayShape3DSW::set_data(const Variant &p_data) {
+void GodotSeparationRayShape3D::set_data(const Variant &p_data) {
Dictionary d = p_data;
_setup(d["length"], d["slide_on_slope"]);
}
-Variant SeparationRayShape3DSW::get_data() const {
+Variant GodotSeparationRayShape3D::get_data() const {
Dictionary d;
d["length"] = length;
d["slide_on_slope"] = slide_on_slope;
return d;
}
-SeparationRayShape3DSW::SeparationRayShape3DSW() {}
+GodotSeparationRayShape3D::GodotSeparationRayShape3D() {}
/********** SPHERE *************/
-real_t SphereShape3DSW::get_radius() const {
+real_t GodotSphereShape3D::get_radius() const {
return radius;
}
-void SphereShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotSphereShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
real_t d = p_normal.dot(p_transform.origin);
// figure out scale at point
@@ -258,25 +258,25 @@ void SphereShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &
r_max = d + (radius)*scale;
}
-Vector3 SphereShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotSphereShape3D::get_support(const Vector3 &p_normal) const {
return p_normal * radius;
}
-void SphereShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
+void GodotSphereShape3D::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
*r_supports = p_normal * radius;
r_amount = 1;
r_type = FEATURE_POINT;
}
-bool SphereShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotSphereShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
return Geometry3D::segment_intersects_sphere(p_begin, p_end, Vector3(), radius, &r_result, &r_normal);
}
-bool SphereShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotSphereShape3D::intersect_point(const Vector3 &p_point) const {
return p_point.length() < radius;
}
-Vector3 SphereShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotSphereShape3D::get_closest_point_to(const Vector3 &p_point) const {
Vector3 p = p_point;
real_t l = p.length();
if (l < radius) {
@@ -285,29 +285,29 @@ Vector3 SphereShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
return (p / l) * radius;
}
-Vector3 SphereShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotSphereShape3D::get_moment_of_inertia(real_t p_mass) const {
real_t s = 0.4 * p_mass * radius * radius;
return Vector3(s, s, s);
}
-void SphereShape3DSW::_setup(real_t p_radius) {
+void GodotSphereShape3D::_setup(real_t p_radius) {
radius = p_radius;
configure(AABB(Vector3(-radius, -radius, -radius), Vector3(radius * 2.0, radius * 2.0, radius * 2.0)));
}
-void SphereShape3DSW::set_data(const Variant &p_data) {
+void GodotSphereShape3D::set_data(const Variant &p_data) {
_setup(p_data);
}
-Variant SphereShape3DSW::get_data() const {
+Variant GodotSphereShape3D::get_data() const {
return radius;
}
-SphereShape3DSW::SphereShape3DSW() {}
+GodotSphereShape3D::GodotSphereShape3D() {}
/********** BOX *************/
-void BoxShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotBoxShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
// no matter the angle, the box is mirrored anyway
Vector3 local_normal = p_transform.basis.xform_inv(p_normal);
@@ -318,7 +318,7 @@ void BoxShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_t
r_max = distance + length;
}
-Vector3 BoxShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotBoxShape3D::get_support(const Vector3 &p_normal) const {
Vector3 point(
(p_normal.x < 0) ? -half_extents.x : half_extents.x,
(p_normal.y < 0) ? -half_extents.y : half_extents.y,
@@ -327,7 +327,7 @@ Vector3 BoxShape3DSW::get_support(const Vector3 &p_normal) const {
return point;
}
-void BoxShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
+void GodotBoxShape3D::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
static const int next[3] = { 1, 2, 0 };
static const int next2[3] = { 2, 0, 1 };
@@ -410,17 +410,17 @@ void BoxShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_s
r_supports[0] = point;
}
-bool BoxShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotBoxShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
AABB aabb(-half_extents, half_extents * 2.0);
return aabb.intersects_segment(p_begin, p_end, &r_result, &r_normal);
}
-bool BoxShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotBoxShape3D::intersect_point(const Vector3 &p_point) const {
return (Math::abs(p_point.x) < half_extents.x && Math::abs(p_point.y) < half_extents.y && Math::abs(p_point.z) < half_extents.z);
}
-Vector3 BoxShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotBoxShape3D::get_closest_point_to(const Vector3 &p_point) const {
int outside = 0;
Vector3 min_point;
@@ -470,7 +470,7 @@ Vector3 BoxShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
return min_point;
}
-Vector3 BoxShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotBoxShape3D::get_moment_of_inertia(real_t p_mass) const {
real_t lx = half_extents.x;
real_t ly = half_extents.y;
real_t lz = half_extents.z;
@@ -478,25 +478,25 @@ Vector3 BoxShape3DSW::get_moment_of_inertia(real_t p_mass) const {
return Vector3((p_mass / 3.0) * (ly * ly + lz * lz), (p_mass / 3.0) * (lx * lx + lz * lz), (p_mass / 3.0) * (lx * lx + ly * ly));
}
-void BoxShape3DSW::_setup(const Vector3 &p_half_extents) {
+void GodotBoxShape3D::_setup(const Vector3 &p_half_extents) {
half_extents = p_half_extents.abs();
configure(AABB(-half_extents, half_extents * 2));
}
-void BoxShape3DSW::set_data(const Variant &p_data) {
+void GodotBoxShape3D::set_data(const Variant &p_data) {
_setup(p_data);
}
-Variant BoxShape3DSW::get_data() const {
+Variant GodotBoxShape3D::get_data() const {
return half_extents;
}
-BoxShape3DSW::BoxShape3DSW() {}
+GodotBoxShape3D::GodotBoxShape3D() {}
/********** CAPSULE *************/
-void CapsuleShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotCapsuleShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
Vector3 n = p_transform.basis.xform_inv(p_normal).normalized();
real_t h = height * 0.5 - radius;
@@ -507,7 +507,7 @@ void CapsuleShape3DSW::project_range(const Vector3 &p_normal, const Transform3D
r_min = p_normal.dot(p_transform.xform(-n));
}
-Vector3 CapsuleShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotCapsuleShape3D::get_support(const Vector3 &p_normal) const {
Vector3 n = p_normal;
real_t h = height * 0.5 - radius;
@@ -517,7 +517,7 @@ Vector3 CapsuleShape3DSW::get_support(const Vector3 &p_normal) const {
return n;
}
-void CapsuleShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
+void GodotCapsuleShape3D::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
Vector3 n = p_normal;
real_t d = n.y;
@@ -546,7 +546,7 @@ void CapsuleShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3
}
}
-bool CapsuleShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotCapsuleShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
Vector3 norm = (p_end - p_begin).normalized();
real_t min_d = 1e20;
@@ -602,7 +602,7 @@ bool CapsuleShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &
return collision;
}
-bool CapsuleShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotCapsuleShape3D::intersect_point(const Vector3 &p_point) const {
if (Math::abs(p_point.y) < height * 0.5 - radius) {
return Vector3(p_point.x, 0, p_point.z).length() < radius;
} else {
@@ -612,7 +612,7 @@ bool CapsuleShape3DSW::intersect_point(const Vector3 &p_point) const {
}
}
-Vector3 CapsuleShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotCapsuleShape3D::get_closest_point_to(const Vector3 &p_point) const {
Vector3 s[2] = {
Vector3(0, -height * 0.5 + radius, 0),
Vector3(0, height * 0.5 - radius, 0),
@@ -627,7 +627,7 @@ Vector3 CapsuleShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
return p + (p_point - p).normalized() * radius;
}
-Vector3 CapsuleShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotCapsuleShape3D::get_moment_of_inertia(real_t p_mass) const {
// use bad AABB approximation
Vector3 extents = get_aabb().size * 0.5;
@@ -637,31 +637,31 @@ Vector3 CapsuleShape3DSW::get_moment_of_inertia(real_t p_mass) const {
(p_mass / 3.0) * (extents.x * extents.x + extents.y * extents.y));
}
-void CapsuleShape3DSW::_setup(real_t p_height, real_t p_radius) {
+void GodotCapsuleShape3D::_setup(real_t p_height, real_t p_radius) {
height = p_height;
radius = p_radius;
configure(AABB(Vector3(-radius, -height * 0.5, -radius), Vector3(radius * 2, height, radius * 2)));
}
-void CapsuleShape3DSW::set_data(const Variant &p_data) {
+void GodotCapsuleShape3D::set_data(const Variant &p_data) {
Dictionary d = p_data;
ERR_FAIL_COND(!d.has("radius"));
ERR_FAIL_COND(!d.has("height"));
_setup(d["height"], d["radius"]);
}
-Variant CapsuleShape3DSW::get_data() const {
+Variant GodotCapsuleShape3D::get_data() const {
Dictionary d;
d["radius"] = radius;
d["height"] = height;
return d;
}
-CapsuleShape3DSW::CapsuleShape3DSW() {}
+GodotCapsuleShape3D::GodotCapsuleShape3D() {}
/********** CYLINDER *************/
-void CylinderShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotCylinderShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
Vector3 cylinder_axis = p_transform.basis.get_axis(1).normalized();
real_t axis_dot = cylinder_axis.dot(p_normal);
@@ -683,7 +683,7 @@ void CylinderShape3DSW::project_range(const Vector3 &p_normal, const Transform3D
r_max = distance + length;
}
-Vector3 CylinderShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotCylinderShape3D::get_support(const Vector3 &p_normal) const {
Vector3 n = p_normal;
real_t h = (n.y > 0) ? height : -height;
real_t s = Math::sqrt(n.x * n.x + n.z * n.z);
@@ -701,7 +701,7 @@ Vector3 CylinderShape3DSW::get_support(const Vector3 &p_normal) const {
return n;
}
-void CylinderShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
+void GodotCylinderShape3D::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
real_t d = p_normal.y;
if (Math::abs(d) > _CYLINDER_FACE_IS_VALID_SUPPORT_THRESHOLD) {
real_t h = (d > 0) ? height : -height;
@@ -761,23 +761,23 @@ void CylinderShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3
}
}
-bool CylinderShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotCylinderShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
return Geometry3D::segment_intersects_cylinder(p_begin, p_end, height, radius, &r_result, &r_normal, 1);
}
-bool CylinderShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotCylinderShape3D::intersect_point(const Vector3 &p_point) const {
if (Math::abs(p_point.y) < height * 0.5) {
return Vector3(p_point.x, 0, p_point.z).length() < radius;
}
return false;
}
-Vector3 CylinderShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotCylinderShape3D::get_closest_point_to(const Vector3 &p_point) const {
if (Math::absf(p_point.y) > height * 0.5) {
// Project point to top disk.
real_t dir = p_point.y > 0.0 ? 1.0 : -1.0;
Vector3 circle_pos(0.0, dir * height * 0.5, 0.0);
- Plane circle_plane(circle_pos, Vector3(0.0, dir, 0.0));
+ Plane circle_plane(Vector3(0.0, dir, 0.0), circle_pos);
Vector3 proj_point = circle_plane.project(p_point);
// Clip position.
@@ -805,7 +805,7 @@ Vector3 CylinderShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
}
}
-Vector3 CylinderShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotCylinderShape3D::get_moment_of_inertia(real_t p_mass) const {
// use bad AABB approximation
Vector3 extents = get_aabb().size * 0.5;
@@ -815,31 +815,31 @@ Vector3 CylinderShape3DSW::get_moment_of_inertia(real_t p_mass) const {
(p_mass / 3.0) * (extents.x * extents.x + extents.y * extents.y));
}
-void CylinderShape3DSW::_setup(real_t p_height, real_t p_radius) {
+void GodotCylinderShape3D::_setup(real_t p_height, real_t p_radius) {
height = p_height;
radius = p_radius;
configure(AABB(Vector3(-radius, -height * 0.5, -radius), Vector3(radius * 2.0, height, radius * 2.0)));
}
-void CylinderShape3DSW::set_data(const Variant &p_data) {
+void GodotCylinderShape3D::set_data(const Variant &p_data) {
Dictionary d = p_data;
ERR_FAIL_COND(!d.has("radius"));
ERR_FAIL_COND(!d.has("height"));
_setup(d["height"], d["radius"]);
}
-Variant CylinderShape3DSW::get_data() const {
+Variant GodotCylinderShape3D::get_data() const {
Dictionary d;
d["radius"] = radius;
d["height"] = height;
return d;
}
-CylinderShape3DSW::CylinderShape3DSW() {}
+GodotCylinderShape3D::GodotCylinderShape3D() {}
/********** CONVEX POLYGON *************/
-void ConvexPolygonShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotConvexPolygonShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
int vertex_count = mesh.vertices.size();
if (vertex_count == 0) {
return;
@@ -859,7 +859,7 @@ void ConvexPolygonShape3DSW::project_range(const Vector3 &p_normal, const Transf
}
}
-Vector3 ConvexPolygonShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotConvexPolygonShape3D::get_support(const Vector3 &p_normal) const {
Vector3 n = p_normal;
int vert_support_idx = -1;
@@ -884,7 +884,7 @@ Vector3 ConvexPolygonShape3DSW::get_support(const Vector3 &p_normal) const {
return vrts[vert_support_idx];
}
-void ConvexPolygonShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
+void GodotConvexPolygonShape3D::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
const Geometry3D::MeshData::Face *faces = mesh.faces.ptr();
int fc = mesh.faces.size();
@@ -954,7 +954,7 @@ void ConvexPolygonShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Ve
r_type = FEATURE_POINT;
}
-bool ConvexPolygonShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotConvexPolygonShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
const Geometry3D::MeshData::Face *faces = mesh.faces.ptr();
int fc = mesh.faces.size();
@@ -992,7 +992,7 @@ bool ConvexPolygonShape3DSW::intersect_segment(const Vector3 &p_begin, const Vec
return col;
}
-bool ConvexPolygonShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotConvexPolygonShape3D::intersect_point(const Vector3 &p_point) const {
const Geometry3D::MeshData::Face *faces = mesh.faces.ptr();
int fc = mesh.faces.size();
@@ -1005,7 +1005,7 @@ bool ConvexPolygonShape3DSW::intersect_point(const Vector3 &p_point) const {
return true;
}
-Vector3 ConvexPolygonShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotConvexPolygonShape3D::get_closest_point_to(const Vector3 &p_point) const {
const Geometry3D::MeshData::Face *faces = mesh.faces.ptr();
int fc = mesh.faces.size();
const Vector3 *vertices = mesh.vertices.ptr();
@@ -1025,7 +1025,7 @@ Vector3 ConvexPolygonShape3DSW::get_closest_point_to(const Vector3 &p_point) con
Vector3 a = vertices[indices[j]];
Vector3 b = vertices[indices[(j + 1) % ic]];
Vector3 n = (a - b).cross(faces[i].plane.normal).normalized();
- if (Plane(a, n).is_point_over(p_point)) {
+ if (Plane(n, a).is_point_over(p_point)) {
is_inside = false;
break;
}
@@ -1063,7 +1063,7 @@ Vector3 ConvexPolygonShape3DSW::get_closest_point_to(const Vector3 &p_point) con
return min_point;
}
-Vector3 ConvexPolygonShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotConvexPolygonShape3D::get_moment_of_inertia(real_t p_mass) const {
// use bad AABB approximation
Vector3 extents = get_aabb().size * 0.5;
@@ -1073,7 +1073,7 @@ Vector3 ConvexPolygonShape3DSW::get_moment_of_inertia(real_t p_mass) const {
(p_mass / 3.0) * (extents.x * extents.x + extents.y * extents.y));
}
-void ConvexPolygonShape3DSW::_setup(const Vector<Vector3> &p_vertices) {
+void GodotConvexPolygonShape3D::_setup(const Vector<Vector3> &p_vertices) {
Error err = ConvexHullComputer::convex_hull(p_vertices, mesh);
if (err != OK) {
ERR_PRINT("Failed to build convex hull");
@@ -1092,20 +1092,20 @@ void ConvexPolygonShape3DSW::_setup(const Vector<Vector3> &p_vertices) {
configure(_aabb);
}
-void ConvexPolygonShape3DSW::set_data(const Variant &p_data) {
+void GodotConvexPolygonShape3D::set_data(const Variant &p_data) {
_setup(p_data);
}
-Variant ConvexPolygonShape3DSW::get_data() const {
+Variant GodotConvexPolygonShape3D::get_data() const {
return mesh.vertices;
}
-ConvexPolygonShape3DSW::ConvexPolygonShape3DSW() {
+GodotConvexPolygonShape3D::GodotConvexPolygonShape3D() {
}
/********** FACE POLYGON *************/
-void FaceShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotFaceShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
for (int i = 0; i < 3; i++) {
Vector3 v = p_transform.xform(vertex[i]);
real_t d = p_normal.dot(v);
@@ -1120,7 +1120,7 @@ void FaceShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_
}
}
-Vector3 FaceShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotFaceShape3D::get_support(const Vector3 &p_normal) const {
int vert_support_idx = -1;
real_t support_max = 0;
@@ -1136,7 +1136,7 @@ Vector3 FaceShape3DSW::get_support(const Vector3 &p_normal) const {
return vertex[vert_support_idx];
}
-void FaceShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
+void GodotFaceShape3D::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const {
Vector3 n = p_normal;
/** TEST FACE AS SUPPORT **/
@@ -1188,7 +1188,7 @@ void FaceShape3DSW::get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_
r_supports[0] = vertex[vert_support_idx];
}
-bool FaceShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotFaceShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
bool c = Geometry3D::segment_intersects_triangle(p_begin, p_end, vertex[0], vertex[1], vertex[2], &r_result);
if (c) {
r_normal = Plane(vertex[0], vertex[1], vertex[2]).normal;
@@ -1204,23 +1204,23 @@ bool FaceShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_e
return c;
}
-bool FaceShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotFaceShape3D::intersect_point(const Vector3 &p_point) const {
return false; //face is flat
}
-Vector3 FaceShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotFaceShape3D::get_closest_point_to(const Vector3 &p_point) const {
return Face3(vertex[0], vertex[1], vertex[2]).get_closest_point_to(p_point);
}
-Vector3 FaceShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotFaceShape3D::get_moment_of_inertia(real_t p_mass) const {
return Vector3(); // Sorry, but i don't think anyone cares, FaceShape!
}
-FaceShape3DSW::FaceShape3DSW() {
+GodotFaceShape3D::GodotFaceShape3D() {
configure(AABB());
}
-Vector<Vector3> ConcavePolygonShape3DSW::get_faces() const {
+Vector<Vector3> GodotConcavePolygonShape3D::get_faces() const {
Vector<Vector3> rfaces;
rfaces.resize(faces.size() * 3);
@@ -1235,7 +1235,7 @@ Vector<Vector3> ConcavePolygonShape3DSW::get_faces() const {
return rfaces;
}
-void ConcavePolygonShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotConcavePolygonShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
int count = vertices.size();
if (count == 0) {
r_min = 0;
@@ -1256,7 +1256,7 @@ void ConcavePolygonShape3DSW::project_range(const Vector3 &p_normal, const Trans
}
}
-Vector3 ConcavePolygonShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotConcavePolygonShape3D::get_support(const Vector3 &p_normal) const {
int count = vertices.size();
if (count == 0) {
return Vector3();
@@ -1281,7 +1281,7 @@ Vector3 ConcavePolygonShape3DSW::get_support(const Vector3 &p_normal) const {
return vptr[vert_support_idx];
}
-void ConcavePolygonShape3DSW::_cull_segment(int p_idx, _SegmentCullParams *p_params) const {
+void GodotConcavePolygonShape3D::_cull_segment(int p_idx, _SegmentCullParams *p_params) const {
const BVH *bvh = &p_params->bvh[p_idx];
/*
@@ -1296,7 +1296,7 @@ void ConcavePolygonShape3DSW::_cull_segment(int p_idx, _SegmentCullParams *p_par
if (bvh->face_index >= 0) {
const Face *f = &p_params->faces[bvh->face_index];
- FaceShape3DSW *face = p_params->face;
+ GodotFaceShape3D *face = p_params->face;
face->normal = f->normal;
face->vertex[0] = p_params->vertices[f->indices[0]];
face->vertex[1] = p_params->vertices[f->indices[1]];
@@ -1323,7 +1323,7 @@ void ConcavePolygonShape3DSW::_cull_segment(int p_idx, _SegmentCullParams *p_par
}
}
-bool ConcavePolygonShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotConcavePolygonShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
if (faces.size() == 0) {
return false;
}
@@ -1333,7 +1333,7 @@ bool ConcavePolygonShape3DSW::intersect_segment(const Vector3 &p_begin, const Ve
const Vector3 *vr = vertices.ptr();
const BVH *br = bvh.ptr();
- FaceShape3DSW face;
+ GodotFaceShape3D face;
face.backface_collision = backface_collision;
_SegmentCullParams params;
@@ -1359,15 +1359,15 @@ bool ConcavePolygonShape3DSW::intersect_segment(const Vector3 &p_begin, const Ve
}
}
-bool ConcavePolygonShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotConcavePolygonShape3D::intersect_point(const Vector3 &p_point) const {
return false; //face is flat
}
-Vector3 ConcavePolygonShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotConcavePolygonShape3D::get_closest_point_to(const Vector3 &p_point) const {
return Vector3();
}
-bool ConcavePolygonShape3DSW::_cull(int p_idx, _CullParams *p_params) const {
+bool GodotConcavePolygonShape3D::_cull(int p_idx, _CullParams *p_params) const {
const BVH *bvh = &p_params->bvh[p_idx];
if (!p_params->aabb.intersects(bvh->aabb)) {
@@ -1376,7 +1376,7 @@ bool ConcavePolygonShape3DSW::_cull(int p_idx, _CullParams *p_params) const {
if (bvh->face_index >= 0) {
const Face *f = &p_params->faces[bvh->face_index];
- FaceShape3DSW *face = p_params->face;
+ GodotFaceShape3D *face = p_params->face;
face->normal = f->normal;
face->vertex[0] = p_params->vertices[f->indices[0]];
face->vertex[1] = p_params->vertices[f->indices[1]];
@@ -1401,7 +1401,7 @@ bool ConcavePolygonShape3DSW::_cull(int p_idx, _CullParams *p_params) const {
return false;
}
-void ConcavePolygonShape3DSW::cull(const AABB &p_local_aabb, QueryCallback p_callback, void *p_userdata) const {
+void GodotConcavePolygonShape3D::cull(const AABB &p_local_aabb, QueryCallback p_callback, void *p_userdata) const {
// make matrix local to concave
if (faces.size() == 0) {
return;
@@ -1414,7 +1414,7 @@ void ConcavePolygonShape3DSW::cull(const AABB &p_local_aabb, QueryCallback p_cal
const Vector3 *vr = vertices.ptr();
const BVH *br = bvh.ptr();
- FaceShape3DSW face; // use this to send in the callback
+ GodotFaceShape3D face; // use this to send in the callback
face.backface_collision = backface_collision;
_CullParams params;
@@ -1430,7 +1430,7 @@ void ConcavePolygonShape3DSW::cull(const AABB &p_local_aabb, QueryCallback p_cal
_cull(0, &params);
}
-Vector3 ConcavePolygonShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotConcavePolygonShape3D::get_moment_of_inertia(real_t p_mass) const {
// use bad AABB approximation
Vector3 extents = get_aabb().size * 0.5;
@@ -1440,40 +1440,40 @@ Vector3 ConcavePolygonShape3DSW::get_moment_of_inertia(real_t p_mass) const {
(p_mass / 3.0) * (extents.x * extents.x + extents.y * extents.y));
}
-struct _VolumeSW_BVH_Element {
+struct _Volume_BVH_Element {
AABB aabb;
Vector3 center;
int face_index;
};
-struct _VolumeSW_BVH_CompareX {
- _FORCE_INLINE_ bool operator()(const _VolumeSW_BVH_Element &a, const _VolumeSW_BVH_Element &b) const {
+struct _Volume_BVH_CompareX {
+ _FORCE_INLINE_ bool operator()(const _Volume_BVH_Element &a, const _Volume_BVH_Element &b) const {
return a.center.x < b.center.x;
}
};
-struct _VolumeSW_BVH_CompareY {
- _FORCE_INLINE_ bool operator()(const _VolumeSW_BVH_Element &a, const _VolumeSW_BVH_Element &b) const {
+struct _Volume_BVH_CompareY {
+ _FORCE_INLINE_ bool operator()(const _Volume_BVH_Element &a, const _Volume_BVH_Element &b) const {
return a.center.y < b.center.y;
}
};
-struct _VolumeSW_BVH_CompareZ {
- _FORCE_INLINE_ bool operator()(const _VolumeSW_BVH_Element &a, const _VolumeSW_BVH_Element &b) const {
+struct _Volume_BVH_CompareZ {
+ _FORCE_INLINE_ bool operator()(const _Volume_BVH_Element &a, const _Volume_BVH_Element &b) const {
return a.center.z < b.center.z;
}
};
-struct _VolumeSW_BVH {
+struct _Volume_BVH {
AABB aabb;
- _VolumeSW_BVH *left;
- _VolumeSW_BVH *right;
+ _Volume_BVH *left;
+ _Volume_BVH *right;
int face_index;
};
-_VolumeSW_BVH *_volume_sw_build_bvh(_VolumeSW_BVH_Element *p_elements, int p_size, int &count) {
- _VolumeSW_BVH *bvh = memnew(_VolumeSW_BVH);
+_Volume_BVH *_volume_build_bvh(_Volume_BVH_Element *p_elements, int p_size, int &count) {
+ _Volume_BVH *bvh = memnew(_Volume_BVH);
if (p_size == 1) {
//leaf
@@ -1498,30 +1498,30 @@ _VolumeSW_BVH *_volume_sw_build_bvh(_VolumeSW_BVH_Element *p_elements, int p_siz
bvh->aabb = aabb;
switch (aabb.get_longest_axis_index()) {
case 0: {
- SortArray<_VolumeSW_BVH_Element, _VolumeSW_BVH_CompareX> sort_x;
+ SortArray<_Volume_BVH_Element, _Volume_BVH_CompareX> sort_x;
sort_x.sort(p_elements, p_size);
} break;
case 1: {
- SortArray<_VolumeSW_BVH_Element, _VolumeSW_BVH_CompareY> sort_y;
+ SortArray<_Volume_BVH_Element, _Volume_BVH_CompareY> sort_y;
sort_y.sort(p_elements, p_size);
} break;
case 2: {
- SortArray<_VolumeSW_BVH_Element, _VolumeSW_BVH_CompareZ> sort_z;
+ SortArray<_Volume_BVH_Element, _Volume_BVH_CompareZ> sort_z;
sort_z.sort(p_elements, p_size);
} break;
}
int split = p_size / 2;
- bvh->left = _volume_sw_build_bvh(p_elements, split, count);
- bvh->right = _volume_sw_build_bvh(&p_elements[split], p_size - split, count);
+ bvh->left = _volume_build_bvh(p_elements, split, count);
+ bvh->right = _volume_build_bvh(&p_elements[split], p_size - split, count);
//printf("branch at %p - %i: %i\n",bvh,count,bvh->face_index);
count++;
return bvh;
}
-void ConcavePolygonShape3DSW::_fill_bvh(_VolumeSW_BVH *p_bvh_tree, BVH *p_bvh_array, int &p_idx) {
+void GodotConcavePolygonShape3D::_fill_bvh(_Volume_BVH *p_bvh_tree, BVH *p_bvh_array, int &p_idx) {
int idx = p_idx;
p_bvh_array[idx].aabb = p_bvh_tree->aabb;
@@ -1547,7 +1547,7 @@ void ConcavePolygonShape3DSW::_fill_bvh(_VolumeSW_BVH *p_bvh_tree, BVH *p_bvh_ar
memdelete(p_bvh_tree);
}
-void ConcavePolygonShape3DSW::_setup(const Vector<Vector3> &p_faces, bool p_backface_collision) {
+void GodotConcavePolygonShape3D::_setup(const Vector<Vector3> &p_faces, bool p_backface_collision) {
int src_face_count = p_faces.size();
if (src_face_count == 0) {
configure(AABB());
@@ -1558,10 +1558,10 @@ void ConcavePolygonShape3DSW::_setup(const Vector<Vector3> &p_faces, bool p_back
const Vector3 *facesr = p_faces.ptr();
- Vector<_VolumeSW_BVH_Element> bvh_array;
+ Vector<_Volume_BVH_Element> bvh_array;
bvh_array.resize(src_face_count);
- _VolumeSW_BVH_Element *bvh_arrayw = bvh_array.ptrw();
+ _Volume_BVH_Element *bvh_arrayw = bvh_array.ptrw();
faces.resize(src_face_count);
Face *facesw = faces.ptrw();
@@ -1593,7 +1593,7 @@ void ConcavePolygonShape3DSW::_setup(const Vector<Vector3> &p_faces, bool p_back
}
int count = 0;
- _VolumeSW_BVH *bvh_tree = _volume_sw_build_bvh(bvh_arrayw, src_face_count, count);
+ _Volume_BVH *bvh_tree = _volume_build_bvh(bvh_arrayw, src_face_count, count);
bvh.resize(count + 1);
@@ -1607,14 +1607,14 @@ void ConcavePolygonShape3DSW::_setup(const Vector<Vector3> &p_faces, bool p_back
configure(_aabb); // this type of shape has no margin
}
-void ConcavePolygonShape3DSW::set_data(const Variant &p_data) {
+void GodotConcavePolygonShape3D::set_data(const Variant &p_data) {
Dictionary d = p_data;
ERR_FAIL_COND(!d.has("faces"));
_setup(d["faces"], d["backface_collision"]);
}
-Variant ConcavePolygonShape3DSW::get_data() const {
+Variant GodotConcavePolygonShape3D::get_data() const {
Dictionary d;
d["faces"] = get_faces();
d["backface_collision"] = backface_collision;
@@ -1622,29 +1622,29 @@ Variant ConcavePolygonShape3DSW::get_data() const {
return d;
}
-ConcavePolygonShape3DSW::ConcavePolygonShape3DSW() {
+GodotConcavePolygonShape3D::GodotConcavePolygonShape3D() {
}
/* HEIGHT MAP SHAPE */
-Vector<real_t> HeightMapShape3DSW::get_heights() const {
+Vector<real_t> GodotHeightMapShape3D::get_heights() const {
return heights;
}
-int HeightMapShape3DSW::get_width() const {
+int GodotHeightMapShape3D::get_width() const {
return width;
}
-int HeightMapShape3DSW::get_depth() const {
+int GodotHeightMapShape3D::get_depth() const {
return depth;
}
-void HeightMapShape3DSW::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
+void GodotHeightMapShape3D::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
//not very useful, but not very used either
- p_transform.xform(get_aabb()).project_range_in_plane(Plane(p_normal, 0), r_min, r_max);
+ p_transform.xform(get_aabb()).project_range_in_plane(Plane(p_normal), r_min, r_max);
}
-Vector3 HeightMapShape3DSW::get_support(const Vector3 &p_normal) const {
+Vector3 GodotHeightMapShape3D::get_support(const Vector3 &p_normal) const {
//not very useful, but not very used either
return get_aabb().get_support(p_normal);
}
@@ -1657,8 +1657,8 @@ struct _HeightmapSegmentCullParams {
Vector3 result;
Vector3 normal;
- const HeightMapShape3DSW *heightmap = nullptr;
- FaceShape3DSW *face = nullptr;
+ const GodotHeightMapShape3D *heightmap = nullptr;
+ GodotFaceShape3D *face = nullptr;
};
struct _HeightmapGridCullState {
@@ -1706,7 +1706,7 @@ _FORCE_INLINE_ bool _heightmap_cell_cull_segment(_HeightmapSegmentCullParams &p_
}
_FORCE_INLINE_ bool _heightmap_chunk_cull_segment(_HeightmapSegmentCullParams &p_params, const _HeightmapGridCullState &p_state) {
- const HeightMapShape3DSW::Range &chunk = p_params.heightmap->_get_bounds_chunk(p_state.x, p_state.z);
+ const GodotHeightMapShape3D::Range &chunk = p_params.heightmap->_get_bounds_chunk(p_state.x, p_state.z);
Vector3 enter_pos;
Vector3 exit_pos;
@@ -1725,8 +1725,8 @@ _FORCE_INLINE_ bool _heightmap_chunk_cull_segment(_HeightmapSegmentCullParams &p
}
// Transform positions to heightmap space.
- enter_pos *= HeightMapShape3DSW::BOUNDS_CHUNK_SIZE;
- exit_pos *= HeightMapShape3DSW::BOUNDS_CHUNK_SIZE;
+ enter_pos *= GodotHeightMapShape3D::BOUNDS_CHUNK_SIZE;
+ exit_pos *= GodotHeightMapShape3D::BOUNDS_CHUNK_SIZE;
// We did enter the flat projection of the AABB,
// but we have to check if we intersect it on the vertical axis.
@@ -1741,7 +1741,7 @@ _FORCE_INLINE_ bool _heightmap_chunk_cull_segment(_HeightmapSegmentCullParams &p
}
template <typename ProcessFunction>
-bool HeightMapShape3DSW::_intersect_grid_segment(ProcessFunction &p_process, const Vector3 &p_begin, const Vector3 &p_end, int p_width, int p_depth, const Vector3 &offset, Vector3 &r_point, Vector3 &r_normal) const {
+bool GodotHeightMapShape3D::_intersect_grid_segment(ProcessFunction &p_process, const Vector3 &p_begin, const Vector3 &p_end, int p_width, int p_depth, const Vector3 &offset, Vector3 &r_point, Vector3 &r_normal) const {
Vector3 delta = (p_end - p_begin);
real_t length = delta.length();
@@ -1751,7 +1751,7 @@ bool HeightMapShape3DSW::_intersect_grid_segment(ProcessFunction &p_process, con
Vector3 local_begin = p_begin + offset;
- FaceShape3DSW face;
+ GodotFaceShape3D face;
face.backface_collision = false;
_HeightmapSegmentCullParams params;
@@ -1881,7 +1881,7 @@ bool HeightMapShape3DSW::_intersect_grid_segment(ProcessFunction &p_process, con
return false;
}
-bool HeightMapShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_point, Vector3 &r_normal) const {
+bool GodotHeightMapShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_point, Vector3 &r_normal) const {
if (heights.is_empty()) {
return false;
}
@@ -1898,7 +1898,7 @@ bool HeightMapShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3
if ((begin_x == end_x) && (begin_z == end_z)) {
// Simple case for rays that don't traverse the grid horizontally.
// Just perform a test on the given cell.
- FaceShape3DSW face;
+ GodotFaceShape3D face;
face.backface_collision = false;
_HeightmapSegmentCullParams params;
@@ -1938,15 +1938,15 @@ bool HeightMapShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3
return false;
}
-bool HeightMapShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotHeightMapShape3D::intersect_point(const Vector3 &p_point) const {
return false;
}
-Vector3 HeightMapShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotHeightMapShape3D::get_closest_point_to(const Vector3 &p_point) const {
return Vector3();
}
-void HeightMapShape3DSW::_get_cell(const Vector3 &p_point, int &r_x, int &r_y, int &r_z) const {
+void GodotHeightMapShape3D::_get_cell(const Vector3 &p_point, int &r_x, int &r_y, int &r_z) const {
const AABB &aabb = get_aabb();
Vector3 pos_local = aabb.position + local_origin;
@@ -1961,7 +1961,7 @@ void HeightMapShape3DSW::_get_cell(const Vector3 &p_point, int &r_x, int &r_y, i
r_z = (clamped_point.z < 0.0) ? (clamped_point.z - 0.5) : (clamped_point.z + 0.5);
}
-void HeightMapShape3DSW::cull(const AABB &p_local_aabb, QueryCallback p_callback, void *p_userdata) const {
+void GodotHeightMapShape3D::cull(const AABB &p_local_aabb, QueryCallback p_callback, void *p_userdata) const {
if (heights.is_empty()) {
return;
}
@@ -1987,7 +1987,7 @@ void HeightMapShape3DSW::cull(const AABB &p_local_aabb, QueryCallback p_callback
int start_z = MAX(0, aabb_min[2]);
int end_z = MIN(depth - 1, aabb_max[2]);
- FaceShape3DSW face;
+ GodotFaceShape3D face;
face.backface_collision = true;
for (int z = start_z; z < end_z; z++) {
@@ -2012,7 +2012,7 @@ void HeightMapShape3DSW::cull(const AABB &p_local_aabb, QueryCallback p_callback
}
}
-Vector3 HeightMapShape3DSW::get_moment_of_inertia(real_t p_mass) const {
+Vector3 GodotHeightMapShape3D::get_moment_of_inertia(real_t p_mass) const {
// use bad AABB approximation
Vector3 extents = get_aabb().size * 0.5;
@@ -2022,7 +2022,7 @@ Vector3 HeightMapShape3DSW::get_moment_of_inertia(real_t p_mass) const {
(p_mass / 3.0) * (extents.x * extents.x + extents.y * extents.y));
}
-void HeightMapShape3DSW::_build_accelerator() {
+void GodotHeightMapShape3D::_build_accelerator() {
bounds_grid.clear();
bounds_grid_width = width / BOUNDS_CHUNK_SIZE;
@@ -2091,7 +2091,7 @@ void HeightMapShape3DSW::_build_accelerator() {
}
}
-void HeightMapShape3DSW::_setup(const Vector<real_t> &p_heights, int p_width, int p_depth, real_t p_min_height, real_t p_max_height) {
+void GodotHeightMapShape3D::_setup(const Vector<real_t> &p_heights, int p_width, int p_depth, real_t p_min_height, real_t p_max_height) {
heights = p_heights;
width = p_width;
depth = p_depth;
@@ -2112,7 +2112,7 @@ void HeightMapShape3DSW::_setup(const Vector<real_t> &p_heights, int p_width, in
configure(aabb);
}
-void HeightMapShape3DSW::set_data(const Variant &p_data) {
+void GodotHeightMapShape3D::set_data(const Variant &p_data) {
ERR_FAIL_COND(p_data.get_type() != Variant::DICTIONARY);
Dictionary d = p_data;
@@ -2184,7 +2184,7 @@ void HeightMapShape3DSW::set_data(const Variant &p_data) {
_setup(heights_buffer, width, depth, min_height, max_height);
}
-Variant HeightMapShape3DSW::get_data() const {
+Variant GodotHeightMapShape3D::get_data() const {
Dictionary d;
d["width"] = width;
d["depth"] = depth;
@@ -2198,5 +2198,5 @@ Variant HeightMapShape3DSW::get_data() const {
return d;
}
-HeightMapShape3DSW::HeightMapShape3DSW() {
+GodotHeightMapShape3D::GodotHeightMapShape3D() {
}
diff --git a/servers/physics_3d/shape_3d_sw.h b/servers/physics_3d/godot_shape_3d.h
index 061d66a085..8822d9487b 100644
--- a/servers/physics_3d/shape_3d_sw.h
+++ b/servers/physics_3d/godot_shape_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* shape_3d_sw.h */
+/* godot_shape_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,30 +28,30 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef SHAPE_SW_H
-#define SHAPE_SW_H
+#ifndef GODOT_SHAPE_3D_H
+#define GODOT_SHAPE_3D_H
#include "core/math/geometry_3d.h"
#include "core/templates/local_vector.h"
#include "servers/physics_server_3d.h"
-class Shape3DSW;
+class GodotShape3D;
-class ShapeOwner3DSW {
+class GodotShapeOwner3D {
public:
virtual void _shape_changed() = 0;
- virtual void remove_shape(Shape3DSW *p_shape) = 0;
+ virtual void remove_shape(GodotShape3D *p_shape) = 0;
- virtual ~ShapeOwner3DSW() {}
+ virtual ~GodotShapeOwner3D() {}
};
-class Shape3DSW {
+class GodotShape3D {
RID self;
AABB aabb;
bool configured = false;
real_t custom_bias = 0.0;
- Map<ShapeOwner3DSW *, int> owners;
+ Map<GodotShapeOwner3D *, int> owners;
protected:
void configure(const AABB &p_aabb);
@@ -90,29 +90,29 @@ public:
_FORCE_INLINE_ void set_custom_bias(real_t p_bias) { custom_bias = p_bias; }
_FORCE_INLINE_ real_t get_custom_bias() const { return custom_bias; }
- void add_owner(ShapeOwner3DSW *p_owner);
- void remove_owner(ShapeOwner3DSW *p_owner);
- bool is_owner(ShapeOwner3DSW *p_owner) const;
- const Map<ShapeOwner3DSW *, int> &get_owners() const;
+ void add_owner(GodotShapeOwner3D *p_owner);
+ void remove_owner(GodotShapeOwner3D *p_owner);
+ bool is_owner(GodotShapeOwner3D *p_owner) const;
+ const Map<GodotShapeOwner3D *, int> &get_owners() const;
- Shape3DSW() {}
- virtual ~Shape3DSW();
+ GodotShape3D() {}
+ virtual ~GodotShape3D();
};
-class ConcaveShape3DSW : public Shape3DSW {
+class GodotConcaveShape3D : public GodotShape3D {
public:
virtual bool is_concave() const override { return true; }
virtual void get_supports(const Vector3 &p_normal, int p_max, Vector3 *r_supports, int &r_amount, FeatureType &r_type) const override { r_amount = 0; }
// Returns true to stop the query.
- typedef bool (*QueryCallback)(void *p_userdata, Shape3DSW *p_convex);
+ typedef bool (*QueryCallback)(void *p_userdata, GodotShape3D *p_convex);
virtual void cull(const AABB &p_local_aabb, QueryCallback p_callback, void *p_userdata) const = 0;
- ConcaveShape3DSW() {}
+ GodotConcaveShape3D() {}
};
-class WorldBoundaryShape3DSW : public Shape3DSW {
+class GodotWorldBoundaryShape3D : public GodotShape3D {
Plane plane;
void _setup(const Plane &p_plane);
@@ -134,10 +134,10 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- WorldBoundaryShape3DSW();
+ GodotWorldBoundaryShape3D();
};
-class SeparationRayShape3DSW : public Shape3DSW {
+class GodotSeparationRayShape3D : public GodotShape3D {
real_t length = 1.0;
bool slide_on_slope = false;
@@ -162,10 +162,10 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- SeparationRayShape3DSW();
+ GodotSeparationRayShape3D();
};
-class SphereShape3DSW : public Shape3DSW {
+class GodotSphereShape3D : public GodotShape3D {
real_t radius = 0.0;
void _setup(real_t p_radius);
@@ -189,10 +189,10 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- SphereShape3DSW();
+ GodotSphereShape3D();
};
-class BoxShape3DSW : public Shape3DSW {
+class GodotBoxShape3D : public GodotShape3D {
Vector3 half_extents;
void _setup(const Vector3 &p_half_extents);
@@ -214,10 +214,10 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- BoxShape3DSW();
+ GodotBoxShape3D();
};
-class CapsuleShape3DSW : public Shape3DSW {
+class GodotCapsuleShape3D : public GodotShape3D {
real_t height = 0.0;
real_t radius = 0.0;
@@ -243,10 +243,10 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- CapsuleShape3DSW();
+ GodotCapsuleShape3D();
};
-class CylinderShape3DSW : public Shape3DSW {
+class GodotCylinderShape3D : public GodotShape3D {
real_t height = 0.0;
real_t radius = 0.0;
@@ -272,10 +272,10 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- CylinderShape3DSW();
+ GodotCylinderShape3D();
};
-struct ConvexPolygonShape3DSW : public Shape3DSW {
+struct GodotConvexPolygonShape3D : public GodotShape3D {
Geometry3D::MeshData mesh;
void _setup(const Vector<Vector3> &p_vertices);
@@ -297,13 +297,13 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- ConvexPolygonShape3DSW();
+ GodotConvexPolygonShape3D();
};
-struct _VolumeSW_BVH;
-struct FaceShape3DSW;
+struct _Volume_BVH;
+struct GodotFaceShape3D;
-struct ConcavePolygonShape3DSW : public ConcaveShape3DSW {
+struct GodotConcavePolygonShape3D : public GodotConcaveShape3D {
// always a trimesh
struct Face {
@@ -331,7 +331,7 @@ struct ConcavePolygonShape3DSW : public ConcaveShape3DSW {
const Face *faces = nullptr;
const Vector3 *vertices = nullptr;
const BVH *bvh = nullptr;
- FaceShape3DSW *face = nullptr;
+ GodotFaceShape3D *face = nullptr;
};
struct _SegmentCullParams {
@@ -341,7 +341,7 @@ struct ConcavePolygonShape3DSW : public ConcaveShape3DSW {
const Face *faces = nullptr;
const Vector3 *vertices = nullptr;
const BVH *bvh = nullptr;
- FaceShape3DSW *face = nullptr;
+ GodotFaceShape3D *face = nullptr;
Vector3 result;
Vector3 normal;
@@ -354,7 +354,7 @@ struct ConcavePolygonShape3DSW : public ConcaveShape3DSW {
void _cull_segment(int p_idx, _SegmentCullParams *p_params) const;
bool _cull(int p_idx, _CullParams *p_params) const;
- void _fill_bvh(_VolumeSW_BVH *p_bvh_tree, BVH *p_bvh_array, int &p_idx);
+ void _fill_bvh(_Volume_BVH *p_bvh_tree, BVH *p_bvh_array, int &p_idx);
void _setup(const Vector<Vector3> &p_faces, bool p_backface_collision);
@@ -377,10 +377,10 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- ConcavePolygonShape3DSW();
+ GodotConcavePolygonShape3D();
};
-struct HeightMapShape3DSW : public ConcaveShape3DSW {
+struct GodotHeightMapShape3D : public GodotConcaveShape3D {
Vector<real_t> heights;
int width = 0;
int depth = 0;
@@ -440,11 +440,11 @@ public:
virtual void set_data(const Variant &p_data) override;
virtual Variant get_data() const override;
- HeightMapShape3DSW();
+ GodotHeightMapShape3D();
};
//used internally
-struct FaceShape3DSW : public Shape3DSW {
+struct GodotFaceShape3D : public GodotShape3D {
Vector3 normal; //cache
Vector3 vertex[3];
bool backface_collision = false;
@@ -465,11 +465,11 @@ struct FaceShape3DSW : public Shape3DSW {
virtual void set_data(const Variant &p_data) override {}
virtual Variant get_data() const override { return Variant(); }
- FaceShape3DSW();
+ GodotFaceShape3D();
};
-struct MotionShape3DSW : public Shape3DSW {
- Shape3DSW *shape = nullptr;
+struct GodotMotionShape3D : public GodotShape3D {
+ GodotShape3D *shape = nullptr;
Vector3 motion;
virtual PhysicsServer3D::ShapeType get_type() const override { return PhysicsServer3D::SHAPE_CONVEX_POLYGON; }
@@ -504,7 +504,7 @@ struct MotionShape3DSW : public Shape3DSW {
virtual void set_data(const Variant &p_data) override {}
virtual Variant get_data() const override { return Variant(); }
- MotionShape3DSW() { configure(AABB()); }
+ GodotMotionShape3D() { configure(AABB()); }
};
-#endif // SHAPE_SW_H
+#endif // GODOT_SHAPE_3D_H
diff --git a/servers/physics_3d/soft_body_3d_sw.cpp b/servers/physics_3d/godot_soft_body_3d.cpp
index c9166810fe..f214e3603a 100644
--- a/servers/physics_3d/soft_body_3d_sw.cpp
+++ b/servers/physics_3d/godot_soft_body_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* soft_body_3d_sw.cpp */
+/* godot_soft_body_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,8 +28,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "soft_body_3d_sw.h"
-#include "space_3d_sw.h"
+#include "godot_soft_body_3d.h"
+
+#include "godot_space_3d.h"
#include "core/math/geometry_3d.h"
#include "core/templates/map.h"
@@ -53,16 +54,16 @@ subject to the following restrictions:
*/
///btSoftBody implementation by Nathanael Presson
-SoftBody3DSW::SoftBody3DSW() :
- CollisionObject3DSW(TYPE_SOFT_BODY),
+GodotSoftBody3D::GodotSoftBody3D() :
+ GodotCollisionObject3D(TYPE_SOFT_BODY),
active_list(this) {
_set_static(false);
}
-void SoftBody3DSW::_shapes_changed() {
+void GodotSoftBody3D::_shapes_changed() {
}
-void SoftBody3DSW::set_state(PhysicsServer3D::BodyState p_state, const Variant &p_variant) {
+void GodotSoftBody3D::set_state(PhysicsServer3D::BodyState p_state, const Variant &p_variant) {
switch (p_state) {
case PhysicsServer3D::BODY_STATE_TRANSFORM: {
_set_transform(p_variant);
@@ -87,7 +88,7 @@ void SoftBody3DSW::set_state(PhysicsServer3D::BodyState p_state, const Variant &
}
}
-Variant SoftBody3DSW::get_state(PhysicsServer3D::BodyState p_state) const {
+Variant GodotSoftBody3D::get_state(PhysicsServer3D::BodyState p_state) const {
switch (p_state) {
case PhysicsServer3D::BODY_STATE_TRANSFORM: {
return get_transform();
@@ -110,7 +111,7 @@ Variant SoftBody3DSW::get_state(PhysicsServer3D::BodyState p_state) const {
return Variant();
}
-void SoftBody3DSW::set_space(Space3DSW *p_space) {
+void GodotSoftBody3D::set_space(GodotSpace3D *p_space) {
if (get_space()) {
get_space()->soft_body_remove_from_active_list(&active_list);
@@ -128,7 +129,7 @@ void SoftBody3DSW::set_space(Space3DSW *p_space) {
}
}
-void SoftBody3DSW::set_mesh(RID p_mesh) {
+void GodotSoftBody3D::set_mesh(RID p_mesh) {
destroy();
soft_mesh = p_mesh;
@@ -138,6 +139,7 @@ void SoftBody3DSW::set_mesh(RID p_mesh) {
}
Array arrays = RenderingServer::get_singleton()->mesh_surface_get_arrays(soft_mesh, 0);
+ ERR_FAIL_COND(arrays.is_empty());
bool success = create_from_trimesh(arrays[RenderingServer::ARRAY_INDEX], arrays[RenderingServer::ARRAY_VERTEX]);
if (!success) {
@@ -145,7 +147,7 @@ void SoftBody3DSW::set_mesh(RID p_mesh) {
}
}
-void SoftBody3DSW::update_rendering_server(RenderingServerHandler *p_rendering_server_handler) {
+void GodotSoftBody3D::update_rendering_server(RenderingServerHandler *p_rendering_server_handler) {
if (soft_mesh.is_null()) {
return;
}
@@ -164,7 +166,7 @@ void SoftBody3DSW::update_rendering_server(RenderingServerHandler *p_rendering_s
p_rendering_server_handler->set_aabb(bounds);
}
-void SoftBody3DSW::update_normals_and_centroids() {
+void GodotSoftBody3D::update_normals_and_centroids() {
uint32_t i, ni;
for (i = 0, ni = nodes.size(); i < ni; ++i) {
@@ -191,7 +193,7 @@ void SoftBody3DSW::update_normals_and_centroids() {
}
}
-void SoftBody3DSW::update_bounds() {
+void GodotSoftBody3D::update_bounds() {
AABB prev_bounds = bounds;
prev_bounds.grow_by(collision_margin);
@@ -223,13 +225,13 @@ void SoftBody3DSW::update_bounds() {
}
}
-void SoftBody3DSW::update_constants() {
+void GodotSoftBody3D::update_constants() {
reset_link_rest_lengths();
update_link_constants();
update_area();
}
-void SoftBody3DSW::update_area() {
+void GodotSoftBody3D::update_area() {
int i, ni;
// Face area.
@@ -275,7 +277,7 @@ void SoftBody3DSW::update_area() {
}
}
-void SoftBody3DSW::reset_link_rest_lengths() {
+void GodotSoftBody3D::reset_link_rest_lengths() {
for (uint32_t i = 0, ni = links.size(); i < ni; ++i) {
Link &link = links[i];
link.rl = (link.n[0]->x - link.n[1]->x).length();
@@ -283,7 +285,7 @@ void SoftBody3DSW::reset_link_rest_lengths() {
}
}
-void SoftBody3DSW::update_link_constants() {
+void GodotSoftBody3D::update_link_constants() {
real_t inv_linear_stiffness = 1.0 / linear_stiffness;
for (uint32_t i = 0, ni = links.size(); i < ni; ++i) {
Link &link = links[i];
@@ -291,7 +293,7 @@ void SoftBody3DSW::update_link_constants() {
}
}
-void SoftBody3DSW::apply_nodes_transform(const Transform3D &p_transform) {
+void GodotSoftBody3D::apply_nodes_transform(const Transform3D &p_transform) {
if (soft_mesh.is_null()) {
return;
}
@@ -317,7 +319,7 @@ void SoftBody3DSW::apply_nodes_transform(const Transform3D &p_transform) {
update_constants();
}
-Vector3 SoftBody3DSW::get_vertex_position(int p_index) const {
+Vector3 GodotSoftBody3D::get_vertex_position(int p_index) const {
ERR_FAIL_COND_V(p_index < 0, Vector3());
if (soft_mesh.is_null()) {
@@ -331,7 +333,7 @@ Vector3 SoftBody3DSW::get_vertex_position(int p_index) const {
return nodes[node_index].x;
}
-void SoftBody3DSW::set_vertex_position(int p_index, const Vector3 &p_position) {
+void GodotSoftBody3D::set_vertex_position(int p_index, const Vector3 &p_position) {
ERR_FAIL_COND(p_index < 0);
if (soft_mesh.is_null()) {
@@ -347,7 +349,7 @@ void SoftBody3DSW::set_vertex_position(int p_index, const Vector3 &p_position) {
node.x = p_position;
}
-void SoftBody3DSW::pin_vertex(int p_index) {
+void GodotSoftBody3D::pin_vertex(int p_index) {
ERR_FAIL_COND(p_index < 0);
if (is_vertex_pinned(p_index)) {
@@ -366,7 +368,7 @@ void SoftBody3DSW::pin_vertex(int p_index) {
}
}
-void SoftBody3DSW::unpin_vertex(int p_index) {
+void GodotSoftBody3D::unpin_vertex(int p_index) {
ERR_FAIL_COND(p_index < 0);
uint32_t pinned_count = pinned_vertices.size();
@@ -390,7 +392,7 @@ void SoftBody3DSW::unpin_vertex(int p_index) {
}
}
-void SoftBody3DSW::unpin_all_vertices() {
+void GodotSoftBody3D::unpin_all_vertices() {
if (!soft_mesh.is_null()) {
real_t inv_node_mass = nodes.size() * inv_total_mass;
uint32_t pinned_count = pinned_vertices.size();
@@ -409,7 +411,7 @@ void SoftBody3DSW::unpin_all_vertices() {
pinned_vertices.clear();
}
-bool SoftBody3DSW::is_vertex_pinned(int p_index) const {
+bool GodotSoftBody3D::is_vertex_pinned(int p_index) const {
ERR_FAIL_COND_V(p_index < 0, false);
uint32_t pinned_count = pinned_vertices.size();
@@ -422,47 +424,47 @@ bool SoftBody3DSW::is_vertex_pinned(int p_index) const {
return false;
}
-uint32_t SoftBody3DSW::get_node_count() const {
+uint32_t GodotSoftBody3D::get_node_count() const {
return nodes.size();
}
-real_t SoftBody3DSW::get_node_inv_mass(uint32_t p_node_index) const {
+real_t GodotSoftBody3D::get_node_inv_mass(uint32_t p_node_index) const {
ERR_FAIL_COND_V(p_node_index >= nodes.size(), 0.0);
return nodes[p_node_index].im;
}
-Vector3 SoftBody3DSW::get_node_position(uint32_t p_node_index) const {
+Vector3 GodotSoftBody3D::get_node_position(uint32_t p_node_index) const {
ERR_FAIL_COND_V(p_node_index >= nodes.size(), Vector3());
return nodes[p_node_index].x;
}
-Vector3 SoftBody3DSW::get_node_velocity(uint32_t p_node_index) const {
+Vector3 GodotSoftBody3D::get_node_velocity(uint32_t p_node_index) const {
ERR_FAIL_COND_V(p_node_index >= nodes.size(), Vector3());
return nodes[p_node_index].v;
}
-Vector3 SoftBody3DSW::get_node_biased_velocity(uint32_t p_node_index) const {
+Vector3 GodotSoftBody3D::get_node_biased_velocity(uint32_t p_node_index) const {
ERR_FAIL_COND_V(p_node_index >= nodes.size(), Vector3());
return nodes[p_node_index].bv;
}
-void SoftBody3DSW::apply_node_impulse(uint32_t p_node_index, const Vector3 &p_impulse) {
+void GodotSoftBody3D::apply_node_impulse(uint32_t p_node_index, const Vector3 &p_impulse) {
ERR_FAIL_COND(p_node_index >= nodes.size());
Node &node = nodes[p_node_index];
node.v += p_impulse * node.im;
}
-void SoftBody3DSW::apply_node_bias_impulse(uint32_t p_node_index, const Vector3 &p_impulse) {
+void GodotSoftBody3D::apply_node_bias_impulse(uint32_t p_node_index, const Vector3 &p_impulse) {
ERR_FAIL_COND(p_node_index >= nodes.size());
Node &node = nodes[p_node_index];
node.bv += p_impulse * node.im;
}
-uint32_t SoftBody3DSW::get_face_count() const {
+uint32_t GodotSoftBody3D::get_face_count() const {
return faces.size();
}
-void SoftBody3DSW::get_face_points(uint32_t p_face_index, Vector3 &r_point_1, Vector3 &r_point_2, Vector3 &r_point_3) const {
+void GodotSoftBody3D::get_face_points(uint32_t p_face_index, Vector3 &r_point_1, Vector3 &r_point_2, Vector3 &r_point_3) const {
ERR_FAIL_COND(p_face_index >= faces.size());
const Face &face = faces[p_face_index];
r_point_1 = face.n[0]->x;
@@ -470,12 +472,12 @@ void SoftBody3DSW::get_face_points(uint32_t p_face_index, Vector3 &r_point_1, Ve
r_point_3 = face.n[2]->x;
}
-Vector3 SoftBody3DSW::get_face_normal(uint32_t p_face_index) const {
+Vector3 GodotSoftBody3D::get_face_normal(uint32_t p_face_index) const {
ERR_FAIL_COND_V(p_face_index >= faces.size(), Vector3());
return faces[p_face_index].normal;
}
-bool SoftBody3DSW::create_from_trimesh(const Vector<int> &p_indices, const Vector<Vector3> &p_vertices) {
+bool GodotSoftBody3D::create_from_trimesh(const Vector<int> &p_indices, const Vector<Vector3> &p_vertices) {
ERR_FAIL_COND_V(p_indices.is_empty(), false);
ERR_FAIL_COND_V(p_vertices.is_empty(), false);
@@ -595,7 +597,7 @@ bool SoftBody3DSW::create_from_trimesh(const Vector<int> &p_indices, const Vecto
return true;
}
-void SoftBody3DSW::generate_bending_constraints(int p_distance) {
+void GodotSoftBody3D::generate_bending_constraints(int p_distance) {
uint32_t i, j;
if (p_distance > 1) {
@@ -714,7 +716,7 @@ public:
};
typedef LinkDeps *LinkDepsPtr;
-void SoftBody3DSW::reoptimize_link_order() {
+void GodotSoftBody3D::reoptimize_link_order() {
const int reop_not_dependent = -1;
const int reop_node_complete = -2;
@@ -823,7 +825,7 @@ void SoftBody3DSW::reoptimize_link_order() {
memdelete_arr(link_buffer);
}
-void SoftBody3DSW::append_link(uint32_t p_node1, uint32_t p_node2) {
+void GodotSoftBody3D::append_link(uint32_t p_node1, uint32_t p_node2) {
if (p_node1 == p_node2) {
return;
}
@@ -839,7 +841,7 @@ void SoftBody3DSW::append_link(uint32_t p_node1, uint32_t p_node2) {
links.push_back(link);
}
-void SoftBody3DSW::append_face(uint32_t p_node1, uint32_t p_node2, uint32_t p_node3) {
+void GodotSoftBody3D::append_face(uint32_t p_node1, uint32_t p_node2, uint32_t p_node3) {
if (p_node1 == p_node2) {
return;
}
@@ -864,11 +866,11 @@ void SoftBody3DSW::append_face(uint32_t p_node1, uint32_t p_node2, uint32_t p_no
faces.push_back(face);
}
-void SoftBody3DSW::set_iteration_count(int p_val) {
+void GodotSoftBody3D::set_iteration_count(int p_val) {
iteration_count = p_val;
}
-void SoftBody3DSW::set_total_mass(real_t p_val) {
+void GodotSoftBody3D::set_total_mass(real_t p_val) {
ERR_FAIL_COND(p_val < 0.0);
inv_total_mass = 1.0 / p_val;
@@ -884,27 +886,27 @@ void SoftBody3DSW::set_total_mass(real_t p_val) {
update_constants();
}
-void SoftBody3DSW::set_collision_margin(real_t p_val) {
+void GodotSoftBody3D::set_collision_margin(real_t p_val) {
collision_margin = p_val;
}
-void SoftBody3DSW::set_linear_stiffness(real_t p_val) {
+void GodotSoftBody3D::set_linear_stiffness(real_t p_val) {
linear_stiffness = p_val;
}
-void SoftBody3DSW::set_pressure_coefficient(real_t p_val) {
+void GodotSoftBody3D::set_pressure_coefficient(real_t p_val) {
pressure_coefficient = p_val;
}
-void SoftBody3DSW::set_damping_coefficient(real_t p_val) {
+void GodotSoftBody3D::set_damping_coefficient(real_t p_val) {
damping_coefficient = p_val;
}
-void SoftBody3DSW::set_drag_coefficient(real_t p_val) {
+void GodotSoftBody3D::set_drag_coefficient(real_t p_val) {
drag_coefficient = p_val;
}
-void SoftBody3DSW::add_velocity(const Vector3 &p_velocity) {
+void GodotSoftBody3D::add_velocity(const Vector3 &p_velocity) {
for (uint32_t i = 0, ni = nodes.size(); i < ni; ++i) {
Node &node = nodes[i];
if (node.im > 0) {
@@ -913,7 +915,7 @@ void SoftBody3DSW::add_velocity(const Vector3 &p_velocity) {
}
}
-void SoftBody3DSW::apply_forces(bool p_has_wind_forces) {
+void GodotSoftBody3D::apply_forces(bool p_has_wind_forces) {
int ac = areas.size();
if (nodes.is_empty()) {
@@ -977,13 +979,13 @@ void SoftBody3DSW::apply_forces(bool p_has_wind_forces) {
}
}
-void SoftBody3DSW::_compute_area_gravity(const Area3DSW *p_area) {
+void GodotSoftBody3D::_compute_area_gravity(const GodotArea3D *p_area) {
Vector3 area_gravity;
p_area->compute_gravity(get_transform().get_origin(), area_gravity);
gravity += area_gravity;
}
-Vector3 SoftBody3DSW::_compute_area_windforce(const Area3DSW *p_area, const Face *p_face) {
+Vector3 GodotSoftBody3D::_compute_area_windforce(const GodotArea3D *p_area, const Face *p_face) {
real_t wfm = p_area->get_wind_force_magnitude();
real_t waf = p_area->get_wind_attenuation_factor();
const Vector3 &wd = p_area->get_wind_direction();
@@ -995,12 +997,12 @@ Vector3 SoftBody3DSW::_compute_area_windforce(const Area3DSW *p_area, const Face
return nodal_force_magnitude * p_face->normal;
}
-void SoftBody3DSW::predict_motion(real_t p_delta) {
+void GodotSoftBody3D::predict_motion(real_t p_delta) {
const real_t inv_delta = 1.0 / p_delta;
ERR_FAIL_COND(!get_space());
- Area3DSW *def_area = get_space()->get_default_area();
+ GodotArea3D *def_area = get_space()->get_default_area();
ERR_FAIL_COND(!def_area);
gravity = def_area->get_gravity_vector() * def_area->get_gravity();
@@ -1083,7 +1085,7 @@ void SoftBody3DSW::predict_motion(real_t p_delta) {
face_tree.optimize_incremental(1);
}
-void SoftBody3DSW::solve_constraints(real_t p_delta) {
+void GodotSoftBody3D::solve_constraints(real_t p_delta) {
const real_t inv_delta = 1.0 / p_delta;
uint32_t i, ni;
@@ -1120,7 +1122,7 @@ void SoftBody3DSW::solve_constraints(real_t p_delta) {
update_normals_and_centroids();
}
-void SoftBody3DSW::solve_links(real_t kst, real_t ti) {
+void GodotSoftBody3D::solve_links(real_t kst, real_t ti) {
for (uint32_t i = 0, ni = links.size(); i < ni; ++i) {
Link &link = links[i];
if (link.c0 > 0) {
@@ -1138,16 +1140,16 @@ void SoftBody3DSW::solve_links(real_t kst, real_t ti) {
}
struct AABBQueryResult {
- const SoftBody3DSW *soft_body = nullptr;
+ const GodotSoftBody3D *soft_body = nullptr;
void *userdata = nullptr;
- SoftBody3DSW::QueryResultCallback result_callback = nullptr;
+ GodotSoftBody3D::QueryResultCallback result_callback = nullptr;
_FORCE_INLINE_ bool operator()(void *p_data) {
return result_callback(soft_body->get_node_index(p_data), userdata);
};
};
-void SoftBody3DSW::query_aabb(const AABB &p_aabb, SoftBody3DSW::QueryResultCallback p_result_callback, void *p_userdata) {
+void GodotSoftBody3D::query_aabb(const AABB &p_aabb, GodotSoftBody3D::QueryResultCallback p_result_callback, void *p_userdata) {
AABBQueryResult query_result;
query_result.soft_body = this;
query_result.result_callback = p_result_callback;
@@ -1157,16 +1159,16 @@ void SoftBody3DSW::query_aabb(const AABB &p_aabb, SoftBody3DSW::QueryResultCallb
}
struct RayQueryResult {
- const SoftBody3DSW *soft_body = nullptr;
+ const GodotSoftBody3D *soft_body = nullptr;
void *userdata = nullptr;
- SoftBody3DSW::QueryResultCallback result_callback = nullptr;
+ GodotSoftBody3D::QueryResultCallback result_callback = nullptr;
_FORCE_INLINE_ bool operator()(void *p_data) {
return result_callback(soft_body->get_face_index(p_data), userdata);
};
};
-void SoftBody3DSW::query_ray(const Vector3 &p_from, const Vector3 &p_to, SoftBody3DSW::QueryResultCallback p_result_callback, void *p_userdata) {
+void GodotSoftBody3D::query_ray(const Vector3 &p_from, const Vector3 &p_to, GodotSoftBody3D::QueryResultCallback p_result_callback, void *p_userdata) {
if (face_tree.is_empty()) {
initialize_face_tree();
}
@@ -1179,7 +1181,7 @@ void SoftBody3DSW::query_ray(const Vector3 &p_from, const Vector3 &p_to, SoftBod
face_tree.ray_query(p_from, p_to, query_result);
}
-void SoftBody3DSW::initialize_face_tree() {
+void GodotSoftBody3D::initialize_face_tree() {
face_tree.clear();
for (uint32_t i = 0; i < faces.size(); ++i) {
Face &face = faces[i];
@@ -1196,7 +1198,7 @@ void SoftBody3DSW::initialize_face_tree() {
}
}
-void SoftBody3DSW::update_face_tree(real_t p_delta) {
+void GodotSoftBody3D::update_face_tree(real_t p_delta) {
for (uint32_t i = 0; i < faces.size(); ++i) {
const Face &face = faces[i];
@@ -1220,25 +1222,25 @@ void SoftBody3DSW::update_face_tree(real_t p_delta) {
}
}
-void SoftBody3DSW::initialize_shape(bool p_force_move) {
+void GodotSoftBody3D::initialize_shape(bool p_force_move) {
if (get_shape_count() == 0) {
- SoftBodyShape3DSW *soft_body_shape = memnew(SoftBodyShape3DSW(this));
+ GodotSoftBodyShape3D *soft_body_shape = memnew(GodotSoftBodyShape3D(this));
add_shape(soft_body_shape);
} else if (p_force_move) {
- SoftBodyShape3DSW *soft_body_shape = static_cast<SoftBodyShape3DSW *>(get_shape(0));
+ GodotSoftBodyShape3D *soft_body_shape = static_cast<GodotSoftBodyShape3D *>(get_shape(0));
soft_body_shape->update_bounds();
}
}
-void SoftBody3DSW::deinitialize_shape() {
+void GodotSoftBody3D::deinitialize_shape() {
if (get_shape_count() > 0) {
- Shape3DSW *shape = get_shape(0);
+ GodotShape3D *shape = get_shape(0);
remove_shape(shape);
memdelete(shape);
}
}
-void SoftBody3DSW::destroy() {
+void GodotSoftBody3D::destroy() {
soft_mesh = RID();
map_visual_to_physics.clear();
@@ -1254,7 +1256,7 @@ void SoftBody3DSW::destroy() {
deinitialize_shape();
}
-void SoftBodyShape3DSW::update_bounds() {
+void GodotSoftBodyShape3D::update_bounds() {
ERR_FAIL_COND(!soft_body);
AABB collision_aabb = soft_body->get_bounds();
@@ -1262,13 +1264,13 @@ void SoftBodyShape3DSW::update_bounds() {
configure(collision_aabb);
}
-SoftBodyShape3DSW::SoftBodyShape3DSW(SoftBody3DSW *p_soft_body) {
+GodotSoftBodyShape3D::GodotSoftBodyShape3D(GodotSoftBody3D *p_soft_body) {
soft_body = p_soft_body;
update_bounds();
}
struct _SoftBodyIntersectSegmentInfo {
- const SoftBody3DSW *soft_body = nullptr;
+ const GodotSoftBody3D *soft_body = nullptr;
Vector3 from;
Vector3 dir;
Vector3 hit_position;
@@ -1296,7 +1298,7 @@ struct _SoftBodyIntersectSegmentInfo {
}
};
-bool SoftBodyShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
+bool GodotSoftBodyShape3D::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const {
_SoftBodyIntersectSegmentInfo query_info;
query_info.soft_body = soft_body;
query_info.from = p_begin;
@@ -1313,10 +1315,10 @@ bool SoftBodyShape3DSW::intersect_segment(const Vector3 &p_begin, const Vector3
return false;
}
-bool SoftBodyShape3DSW::intersect_point(const Vector3 &p_point) const {
+bool GodotSoftBodyShape3D::intersect_point(const Vector3 &p_point) const {
return false;
}
-Vector3 SoftBodyShape3DSW::get_closest_point_to(const Vector3 &p_point) const {
+Vector3 GodotSoftBodyShape3D::get_closest_point_to(const Vector3 &p_point) const {
ERR_FAIL_V_MSG(Vector3(), "Get closest point is not supported for soft bodies.");
}
diff --git a/servers/physics_3d/soft_body_3d_sw.h b/servers/physics_3d/godot_soft_body_3d.h
index 7d4b83d0ee..008d5dddb8 100644
--- a/servers/physics_3d/soft_body_3d_sw.h
+++ b/servers/physics_3d/godot_soft_body_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* soft_body_3d_sw.h */
+/* godot_soft_body_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,11 +28,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef SOFT_BODY_3D_SW_H
-#define SOFT_BODY_3D_SW_H
+#ifndef GODOT_SOFT_BODY_3D_H
+#define GODOT_SOFT_BODY_3D_H
-#include "area_3d_sw.h"
-#include "collision_object_3d_sw.h"
+#include "godot_area_3d.h"
+#include "godot_collision_object_3d.h"
#include "core/math/aabb.h"
#include "core/math/dynamic_bvh.h"
@@ -41,9 +41,9 @@
#include "core/templates/set.h"
#include "core/templates/vset.h"
-class Constraint3DSW;
+class GodotConstraint3D;
-class SoftBody3DSW : public CollisionObject3DSW {
+class GodotSoftBody3D : public GodotCollisionObject3D {
RID soft_mesh;
struct Node {
@@ -103,9 +103,9 @@ class SoftBody3DSW : public CollisionObject3DSW {
Vector3 gravity;
- SelfList<SoftBody3DSW> active_list;
+ SelfList<GodotSoftBody3D> active_list;
- Set<Constraint3DSW *> constraints;
+ Set<GodotConstraint3D *> constraints;
Vector<AreaCMP> areas;
@@ -113,20 +113,20 @@ class SoftBody3DSW : public CollisionObject3DSW {
uint64_t island_step = 0;
- _FORCE_INLINE_ void _compute_area_gravity(const Area3DSW *p_area);
- _FORCE_INLINE_ Vector3 _compute_area_windforce(const Area3DSW *p_area, const Face *p_face);
+ _FORCE_INLINE_ void _compute_area_gravity(const GodotArea3D *p_area);
+ _FORCE_INLINE_ Vector3 _compute_area_windforce(const GodotArea3D *p_area, const Face *p_face);
public:
- SoftBody3DSW();
+ GodotSoftBody3D();
const AABB &get_bounds() const { return bounds; }
void set_state(PhysicsServer3D::BodyState p_state, const Variant &p_variant);
Variant get_state(PhysicsServer3D::BodyState p_state) const;
- _FORCE_INLINE_ void add_constraint(Constraint3DSW *p_constraint) { constraints.insert(p_constraint); }
- _FORCE_INLINE_ void remove_constraint(Constraint3DSW *p_constraint) { constraints.erase(p_constraint); }
- _FORCE_INLINE_ const Set<Constraint3DSW *> &get_constraints() const { return constraints; }
+ _FORCE_INLINE_ void add_constraint(GodotConstraint3D *p_constraint) { constraints.insert(p_constraint); }
+ _FORCE_INLINE_ void remove_constraint(GodotConstraint3D *p_constraint) { constraints.erase(p_constraint); }
+ _FORCE_INLINE_ const Set<GodotConstraint3D *> &get_constraints() const { return constraints; }
_FORCE_INLINE_ void clear_constraints() { constraints.clear(); }
_FORCE_INLINE_ void add_exception(const RID &p_exception) { exceptions.insert(p_exception); }
@@ -137,7 +137,7 @@ public:
_FORCE_INLINE_ uint64_t get_island_step() const { return island_step; }
_FORCE_INLINE_ void set_island_step(uint64_t p_step) { island_step = p_step; }
- _FORCE_INLINE_ void add_area(Area3DSW *p_area) {
+ _FORCE_INLINE_ void add_area(GodotArea3D *p_area) {
int index = areas.find(AreaCMP(p_area));
if (index > -1) {
areas.write[index].refCount += 1;
@@ -146,7 +146,7 @@ public:
}
}
- _FORCE_INLINE_ void remove_area(Area3DSW *p_area) {
+ _FORCE_INLINE_ void remove_area(GodotArea3D *p_area) {
int index = areas.find(AreaCMP(p_area));
if (index > -1) {
areas.write[index].refCount -= 1;
@@ -156,7 +156,7 @@ public:
}
}
- virtual void set_space(Space3DSW *p_space);
+ virtual void set_space(GodotSpace3D *p_space);
void set_mesh(RID p_mesh);
@@ -251,11 +251,11 @@ private:
void destroy();
};
-class SoftBodyShape3DSW : public Shape3DSW {
- SoftBody3DSW *soft_body = nullptr;
+class GodotSoftBodyShape3D : public GodotShape3D {
+ GodotSoftBody3D *soft_body = nullptr;
public:
- SoftBody3DSW *get_soft_body() const { return soft_body; }
+ GodotSoftBody3D *get_soft_body() const { return soft_body; }
virtual PhysicsServer3D::ShapeType get_type() const { return PhysicsServer3D::SHAPE_SOFT_BODY; }
virtual void project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const { r_min = r_max = 0.0; }
@@ -272,8 +272,8 @@ public:
void update_bounds();
- SoftBodyShape3DSW(SoftBody3DSW *p_soft_body);
- ~SoftBodyShape3DSW() {}
+ GodotSoftBodyShape3D(GodotSoftBody3D *p_soft_body);
+ ~GodotSoftBodyShape3D() {}
};
-#endif // SOFT_BODY_3D_SW_H
+#endif // GODOT_SOFT_BODY_3D_H
diff --git a/servers/physics_3d/space_3d_sw.cpp b/servers/physics_3d/godot_space_3d.cpp
index c88747c017..750bf3a16d 100644
--- a/servers/physics_3d/space_3d_sw.cpp
+++ b/servers/physics_3d/godot_space_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* space_3d_sw.cpp */
+/* godot_space_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,37 +28,38 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "space_3d_sw.h"
+#include "godot_space_3d.h"
+
+#include "godot_collision_solver_3d.h"
+#include "godot_physics_server_3d.h"
-#include "collision_solver_3d_sw.h"
#include "core/config/project_settings.h"
-#include "physics_server_3d_sw.h"
#define TEST_MOTION_MIN_CONTACT_DEPTH_FACTOR 0.05
-_FORCE_INLINE_ static bool _can_collide_with(CollisionObject3DSW *p_object, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+_FORCE_INLINE_ static bool _can_collide_with(GodotCollisionObject3D *p_object, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
if (!(p_object->get_collision_layer() & p_collision_mask)) {
return false;
}
- if (p_object->get_type() == CollisionObject3DSW::TYPE_AREA && !p_collide_with_areas) {
+ if (p_object->get_type() == GodotCollisionObject3D::TYPE_AREA && !p_collide_with_areas) {
return false;
}
- if (p_object->get_type() == CollisionObject3DSW::TYPE_BODY && !p_collide_with_bodies) {
+ if (p_object->get_type() == GodotCollisionObject3D::TYPE_BODY && !p_collide_with_bodies) {
return false;
}
- if (p_object->get_type() == CollisionObject3DSW::TYPE_SOFT_BODY && !p_collide_with_bodies) {
+ if (p_object->get_type() == GodotCollisionObject3D::TYPE_SOFT_BODY && !p_collide_with_bodies) {
return false;
}
return true;
}
-int PhysicsDirectSpaceState3DSW::intersect_point(const Vector3 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+int GodotPhysicsDirectSpaceState3D::intersect_point(const Vector3 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
ERR_FAIL_COND_V(space->locked, false);
- int amount = space->broadphase->cull_point(p_point, space->intersection_query_results, Space3DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_point(p_point, space->intersection_query_results, GodotSpace3D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
int cc = 0;
//Transform3D ai = p_xform.affine_inverse();
@@ -78,7 +79,7 @@ int PhysicsDirectSpaceState3DSW::intersect_point(const Vector3 &p_point, ShapeRe
continue;
}
- const CollisionObject3DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = space->intersection_query_results[i];
int shape_idx = space->intersection_query_subindex_results[i];
Transform3D inv_xform = col_obj->get_transform() * col_obj->get_shape_transform(shape_idx);
@@ -103,7 +104,7 @@ int PhysicsDirectSpaceState3DSW::intersect_point(const Vector3 &p_point, ShapeRe
return cc;
}
-bool PhysicsDirectSpaceState3DSW::intersect_ray(const Vector3 &p_from, const Vector3 &p_to, RayResult &r_result, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_ray) {
+bool GodotPhysicsDirectSpaceState3D::intersect_ray(const Vector3 &p_from, const Vector3 &p_to, RayResult &r_result, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_pick_ray) {
ERR_FAIL_COND_V(space->locked, false);
Vector3 begin, end;
@@ -112,14 +113,14 @@ bool PhysicsDirectSpaceState3DSW::intersect_ray(const Vector3 &p_from, const Vec
end = p_to;
normal = (end - begin).normalized();
- int amount = space->broadphase->cull_segment(begin, end, space->intersection_query_results, Space3DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_segment(begin, end, space->intersection_query_results, GodotSpace3D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
//todo, create another array that references results, compute AABBs and check closest point to ray origin, sort, and stop evaluating results when beyond first collision
bool collided = false;
Vector3 res_point, res_normal;
int res_shape;
- const CollisionObject3DSW *res_obj;
+ const GodotCollisionObject3D *res_obj;
real_t min_d = 1e10;
for (int i = 0; i < amount; i++) {
@@ -135,7 +136,7 @@ bool PhysicsDirectSpaceState3DSW::intersect_ray(const Vector3 &p_from, const Vec
continue;
}
- const CollisionObject3DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = space->intersection_query_results[i];
int shape_idx = space->intersection_query_subindex_results[i];
Transform3D inv_xform = col_obj->get_shape_inv_transform(shape_idx) * col_obj->get_inv_transform();
@@ -143,7 +144,7 @@ bool PhysicsDirectSpaceState3DSW::intersect_ray(const Vector3 &p_from, const Vec
Vector3 local_from = inv_xform.xform(begin);
Vector3 local_to = inv_xform.xform(end);
- const Shape3DSW *shape = col_obj->get_shape(shape_idx);
+ const GodotShape3D *shape = col_obj->get_shape(shape_idx);
Vector3 shape_point, shape_normal;
@@ -182,17 +183,17 @@ bool PhysicsDirectSpaceState3DSW::intersect_ray(const Vector3 &p_from, const Vec
return true;
}
-int PhysicsDirectSpaceState3DSW::intersect_shape(const RID &p_shape, const Transform3D &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+int GodotPhysicsDirectSpaceState3D::intersect_shape(const RID &p_shape, const Transform3D &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
if (p_result_max <= 0) {
return 0;
}
- Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.get_or_null(p_shape);
+ GodotShape3D *shape = GodotPhysicsServer3D::godot_singleton->shape_owner.get_or_null(p_shape);
ERR_FAIL_COND_V(!shape, 0);
AABB aabb = p_xform.xform(shape->get_aabb());
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space3DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace3D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
int cc = 0;
@@ -213,10 +214,10 @@ int PhysicsDirectSpaceState3DSW::intersect_shape(const RID &p_shape, const Trans
continue;
}
- const CollisionObject3DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = space->intersection_query_results[i];
int shape_idx = space->intersection_query_subindex_results[i];
- if (!CollisionSolver3DSW::solve_static(shape, p_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), nullptr, nullptr, nullptr, p_margin, 0)) {
+ if (!GodotCollisionSolver3D::solve_static(shape, p_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), nullptr, nullptr, nullptr, p_margin, 0)) {
continue;
}
@@ -237,21 +238,21 @@ int PhysicsDirectSpaceState3DSW::intersect_shape(const RID &p_shape, const Trans
return cc;
}
-bool PhysicsDirectSpaceState3DSW::cast_motion(const RID &p_shape, const Transform3D &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, ShapeRestInfo *r_info) {
- Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.get_or_null(p_shape);
+bool GodotPhysicsDirectSpaceState3D::cast_motion(const RID &p_shape, const Transform3D &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, ShapeRestInfo *r_info) {
+ GodotShape3D *shape = GodotPhysicsServer3D::godot_singleton->shape_owner.get_or_null(p_shape);
ERR_FAIL_COND_V(!shape, false);
AABB aabb = p_xform.xform(shape->get_aabb());
aabb = aabb.merge(AABB(aabb.position + p_motion, aabb.size)); //motion
aabb = aabb.grow(p_margin);
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space3DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace3D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
real_t best_safe = 1;
real_t best_unsafe = 1;
Transform3D xform_inv = p_xform.affine_inverse();
- MotionShape3DSW mshape;
+ GodotMotionShape3D mshape;
mshape.shape = shape;
mshape.motion = xform_inv.basis.xform(p_motion);
@@ -270,7 +271,7 @@ bool PhysicsDirectSpaceState3DSW::cast_motion(const RID &p_shape, const Transfor
continue; //ignore excluded
}
- const CollisionObject3DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = space->intersection_query_results[i];
int shape_idx = space->intersection_query_subindex_results[i];
Vector3 point_A, point_B;
@@ -278,14 +279,14 @@ bool PhysicsDirectSpaceState3DSW::cast_motion(const RID &p_shape, const Transfor
Transform3D col_obj_xform = col_obj->get_transform() * col_obj->get_shape_transform(shape_idx);
//test initial overlap, does it collide if going all the way?
- if (CollisionSolver3DSW::solve_distance(&mshape, p_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, aabb, &sep_axis)) {
+ if (GodotCollisionSolver3D::solve_distance(&mshape, p_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, aabb, &sep_axis)) {
continue;
}
//test initial overlap, ignore objects it's inside of.
sep_axis = motion_normal;
- if (!CollisionSolver3DSW::solve_distance(shape, p_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, aabb, &sep_axis)) {
+ if (!GodotCollisionSolver3D::solve_distance(shape, p_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, aabb, &sep_axis)) {
continue;
}
@@ -300,7 +301,7 @@ bool PhysicsDirectSpaceState3DSW::cast_motion(const RID &p_shape, const Transfor
Vector3 lA, lB;
Vector3 sep = motion_normal; //important optimization for this to work fast enough
- bool collided = !CollisionSolver3DSW::solve_distance(&mshape, p_xform, col_obj->get_shape(shape_idx), col_obj_xform, lA, lB, aabb, &sep);
+ bool collided = !GodotCollisionSolver3D::solve_distance(&mshape, p_xform, col_obj->get_shape(shape_idx), col_obj_xform, lA, lB, aabb, &sep);
if (collided) {
hi = fraction;
@@ -342,8 +343,8 @@ bool PhysicsDirectSpaceState3DSW::cast_motion(const RID &p_shape, const Transfor
r_info->point = closest_B;
r_info->normal = (closest_A - closest_B).normalized();
best_first = false;
- if (col_obj->get_type() == CollisionObject3DSW::TYPE_BODY) {
- const Body3DSW *body = static_cast<const Body3DSW *>(col_obj);
+ if (col_obj->get_type() == GodotCollisionObject3D::TYPE_BODY) {
+ const GodotBody3D *body = static_cast<const GodotBody3D *>(col_obj);
Vector3 rel_vec = closest_B - (body->get_transform().origin + body->get_center_of_mass());
r_info->linear_velocity = body->get_linear_velocity() + (body->get_angular_velocity()).cross(rel_vec);
}
@@ -356,36 +357,36 @@ bool PhysicsDirectSpaceState3DSW::cast_motion(const RID &p_shape, const Transfor
return true;
}
-bool PhysicsDirectSpaceState3DSW::collide_shape(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+bool GodotPhysicsDirectSpaceState3D::collide_shape(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
if (p_result_max <= 0) {
return false;
}
- Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.get_or_null(p_shape);
+ GodotShape3D *shape = GodotPhysicsServer3D::godot_singleton->shape_owner.get_or_null(p_shape);
ERR_FAIL_COND_V(!shape, 0);
AABB aabb = p_shape_xform.xform(shape->get_aabb());
aabb = aabb.grow(p_margin);
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space3DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace3D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
bool collided = false;
r_result_count = 0;
- PhysicsServer3DSW::CollCbkData cbk;
+ GodotPhysicsServer3D::CollCbkData cbk;
cbk.max = p_result_max;
cbk.amount = 0;
cbk.ptr = r_results;
- CollisionSolver3DSW::CallbackResult cbkres = PhysicsServer3DSW::_shape_col_cbk;
+ GodotCollisionSolver3D::CallbackResult cbkres = GodotPhysicsServer3D::_shape_col_cbk;
- PhysicsServer3DSW::CollCbkData *cbkptr = &cbk;
+ GodotPhysicsServer3D::CollCbkData *cbkptr = &cbk;
for (int i = 0; i < amount; i++) {
if (!_can_collide_with(space->intersection_query_results[i], p_collision_mask, p_collide_with_bodies, p_collide_with_areas)) {
continue;
}
- const CollisionObject3DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = space->intersection_query_results[i];
if (p_exclude.has(col_obj->get_self())) {
continue;
@@ -393,7 +394,7 @@ bool PhysicsDirectSpaceState3DSW::collide_shape(RID p_shape, const Transform3D &
int shape_idx = space->intersection_query_subindex_results[i];
- if (CollisionSolver3DSW::solve_static(shape, p_shape_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), cbkres, cbkptr, nullptr, p_margin)) {
+ if (GodotCollisionSolver3D::solve_static(shape, p_shape_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), cbkres, cbkptr, nullptr, p_margin)) {
collided = true;
}
}
@@ -404,7 +405,7 @@ bool PhysicsDirectSpaceState3DSW::collide_shape(RID p_shape, const Transform3D &
}
struct _RestResultData {
- const CollisionObject3DSW *object = nullptr;
+ const GodotCollisionObject3D *object = nullptr;
int local_shape = 0;
int shape = 0;
Vector3 contact;
@@ -413,7 +414,7 @@ struct _RestResultData {
};
struct _RestCallbackData {
- const CollisionObject3DSW *object = nullptr;
+ const GodotCollisionObject3D *object = nullptr;
int local_shape = 0;
int shape = 0;
@@ -486,8 +487,8 @@ static void _rest_cbk_result(const Vector3 &p_point_A, int p_index_A, const Vect
rd->best_result.local_shape = rd->local_shape;
}
-bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
- Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.get_or_null(p_shape);
+bool GodotPhysicsDirectSpaceState3D::rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+ GodotShape3D *shape = GodotPhysicsServer3D::godot_singleton->shape_owner.get_or_null(p_shape);
ERR_FAIL_COND_V(!shape, 0);
real_t min_contact_depth = p_margin * TEST_MOTION_MIN_CONTACT_DEPTH_FACTOR;
@@ -495,7 +496,7 @@ bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_sh
AABB aabb = p_shape_xform.xform(shape->get_aabb());
aabb = aabb.grow(p_margin);
- int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space3DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
+ int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, GodotSpace3D::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
_RestCallbackData rcd;
rcd.min_allowed_depth = min_contact_depth;
@@ -505,7 +506,7 @@ bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_sh
continue;
}
- const CollisionObject3DSW *col_obj = space->intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = space->intersection_query_results[i];
if (p_exclude.has(col_obj->get_self())) {
continue;
@@ -515,7 +516,7 @@ bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_sh
rcd.object = col_obj;
rcd.shape = shape_idx;
- bool sc = CollisionSolver3DSW::solve_static(shape, p_shape_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), _rest_cbk_result, &rcd, nullptr, p_margin);
+ bool sc = GodotCollisionSolver3D::solve_static(shape, p_shape_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), _rest_cbk_result, &rcd, nullptr, p_margin);
if (!sc) {
continue;
}
@@ -530,8 +531,8 @@ bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_sh
r_info->normal = rcd.best_result.normal;
r_info->point = rcd.best_result.contact;
r_info->rid = rcd.best_result.object->get_self();
- if (rcd.best_result.object->get_type() == CollisionObject3DSW::TYPE_BODY) {
- const Body3DSW *body = static_cast<const Body3DSW *>(rcd.best_result.object);
+ if (rcd.best_result.object->get_type() == GodotCollisionObject3D::TYPE_BODY) {
+ const GodotBody3D *body = static_cast<const GodotBody3D *>(rcd.best_result.object);
Vector3 rel_vec = rcd.best_result.contact - (body->get_transform().origin + body->get_center_of_mass());
r_info->linear_velocity = body->get_linear_velocity() + (body->get_angular_velocity()).cross(rel_vec);
@@ -542,10 +543,10 @@ bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_sh
return true;
}
-Vector3 PhysicsDirectSpaceState3DSW::get_closest_point_to_object_volume(RID p_object, const Vector3 p_point) const {
- CollisionObject3DSW *obj = PhysicsServer3DSW::singletonsw->area_owner.get_or_null(p_object);
+Vector3 GodotPhysicsDirectSpaceState3D::get_closest_point_to_object_volume(RID p_object, const Vector3 p_point) const {
+ GodotCollisionObject3D *obj = GodotPhysicsServer3D::godot_singleton->area_owner.get_or_null(p_object);
if (!obj) {
- obj = PhysicsServer3DSW::singletonsw->body_owner.get_or_null(p_object);
+ obj = GodotPhysicsServer3D::godot_singleton->body_owner.get_or_null(p_object);
}
ERR_FAIL_COND_V(!obj, Vector3());
@@ -562,7 +563,7 @@ Vector3 PhysicsDirectSpaceState3DSW::get_closest_point_to_object_volume(RID p_ob
}
Transform3D shape_xform = obj->get_transform() * obj->get_shape_transform(i);
- Shape3DSW *shape = obj->get_shape(i);
+ GodotShape3D *shape = obj->get_shape(i);
Vector3 point = shape->get_closest_point_to(shape_xform.affine_inverse().xform(p_point));
point = shape_xform.xform(point);
@@ -582,13 +583,13 @@ Vector3 PhysicsDirectSpaceState3DSW::get_closest_point_to_object_volume(RID p_ob
}
}
-PhysicsDirectSpaceState3DSW::PhysicsDirectSpaceState3DSW() {
+GodotPhysicsDirectSpaceState3D::GodotPhysicsDirectSpaceState3D() {
space = nullptr;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
-int Space3DSW::_cull_aabb_for_body(Body3DSW *p_body, const AABB &p_aabb) {
+int GodotSpace3D::_cull_aabb_for_body(GodotBody3D *p_body, const AABB &p_aabb) {
int amount = broadphase->cull_aabb(p_aabb, intersection_query_results, INTERSECTION_QUERY_MAX, intersection_query_subindex_results);
for (int i = 0; i < amount; i++) {
@@ -596,13 +597,13 @@ int Space3DSW::_cull_aabb_for_body(Body3DSW *p_body, const AABB &p_aabb) {
if (intersection_query_results[i] == p_body) {
keep = false;
- } else if (intersection_query_results[i]->get_type() == CollisionObject3DSW::TYPE_AREA) {
+ } else if (intersection_query_results[i]->get_type() == GodotCollisionObject3D::TYPE_AREA) {
keep = false;
- } else if (intersection_query_results[i]->get_type() == CollisionObject3DSW::TYPE_SOFT_BODY) {
+ } else if (intersection_query_results[i]->get_type() == GodotCollisionObject3D::TYPE_SOFT_BODY) {
keep = false;
- } else if (!p_body->collides_with(static_cast<Body3DSW *>(intersection_query_results[i]))) {
+ } else if (!p_body->collides_with(static_cast<GodotBody3D *>(intersection_query_results[i]))) {
keep = false;
- } else if (static_cast<Body3DSW *>(intersection_query_results[i])->has_exception(p_body->get_self()) || p_body->has_exception(intersection_query_results[i]->get_self())) {
+ } else if (static_cast<GodotBody3D *>(intersection_query_results[i])->has_exception(p_body->get_self()) || p_body->has_exception(intersection_query_results[i]->get_self())) {
keep = false;
}
@@ -620,7 +621,7 @@ int Space3DSW::_cull_aabb_for_body(Body3DSW *p_body, const AABB &p_aabb) {
return amount;
}
-bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::MotionParameters &p_parameters, PhysicsServer3D::MotionResult *r_result) {
+bool GodotSpace3D::test_body_motion(GodotBody3D *p_body, const PhysicsServer3D::MotionParameters &p_parameters, PhysicsServer3D::MotionResult *r_result) {
//give me back regular physics engine logic
//this is madness
//and most people using this function will think
@@ -679,13 +680,13 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
Vector3 sr[max_results * 2];
do {
- PhysicsServer3DSW::CollCbkData cbk;
+ GodotPhysicsServer3D::CollCbkData cbk;
cbk.max = max_results;
cbk.amount = 0;
cbk.ptr = sr;
- PhysicsServer3DSW::CollCbkData *cbkptr = &cbk;
- CollisionSolver3DSW::CallbackResult cbkres = PhysicsServer3DSW::_shape_col_cbk;
+ GodotPhysicsServer3D::CollCbkData *cbkptr = &cbk;
+ GodotCollisionSolver3D::CallbackResult cbkres = GodotPhysicsServer3D::_shape_col_cbk;
bool collided = false;
@@ -697,10 +698,10 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
}
Transform3D body_shape_xform = body_transform * p_body->get_shape_transform(j);
- Shape3DSW *body_shape = p_body->get_shape(j);
+ GodotShape3D *body_shape = p_body->get_shape(j);
for (int i = 0; i < amount; i++) {
- const CollisionObject3DSW *col_obj = intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = intersection_query_results[i];
if (p_parameters.exclude_bodies.has(col_obj->get_self())) {
continue;
}
@@ -710,7 +711,7 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
int shape_idx = intersection_query_subindex_results[i];
- if (CollisionSolver3DSW::solve_static(body_shape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), cbkres, cbkptr, nullptr, p_parameters.margin)) {
+ if (GodotCollisionSolver3D::solve_static(body_shape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), cbkres, cbkptr, nullptr, p_parameters.margin)) {
collided = cbk.amount > 0;
}
}
@@ -770,13 +771,13 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
continue;
}
- Shape3DSW *body_shape = p_body->get_shape(j);
+ GodotShape3D *body_shape = p_body->get_shape(j);
// Colliding separation rays allows to properly snap to the ground,
// otherwise it's not needed in regular motion.
if (!p_parameters.collide_separation_ray && (body_shape->get_type() == PhysicsServer3D::SHAPE_SEPARATION_RAY)) {
// When slide on slope is on, separation ray shape acts like a regular shape.
- if (!static_cast<SeparationRayShape3DSW *>(body_shape)->get_slide_on_slope()) {
+ if (!static_cast<GodotSeparationRayShape3D *>(body_shape)->get_slide_on_slope()) {
continue;
}
}
@@ -784,7 +785,7 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
Transform3D body_shape_xform = body_transform * p_body->get_shape_transform(j);
Transform3D body_shape_xform_inv = body_shape_xform.affine_inverse();
- MotionShape3DSW mshape;
+ GodotMotionShape3D mshape;
mshape.shape = body_shape;
mshape.motion = body_shape_xform_inv.basis.xform(p_parameters.motion);
@@ -794,7 +795,7 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
real_t best_unsafe = 1;
for (int i = 0; i < amount; i++) {
- const CollisionObject3DSW *col_obj = intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = intersection_query_results[i];
if (p_parameters.exclude_bodies.has(col_obj->get_self())) {
continue;
}
@@ -810,12 +811,12 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
Transform3D col_obj_xform = col_obj->get_transform() * col_obj->get_shape_transform(shape_idx);
//test initial overlap, does it collide if going all the way?
- if (CollisionSolver3DSW::solve_distance(&mshape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, motion_aabb, &sep_axis)) {
+ if (GodotCollisionSolver3D::solve_distance(&mshape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, motion_aabb, &sep_axis)) {
continue;
}
sep_axis = motion_normal;
- if (!CollisionSolver3DSW::solve_distance(body_shape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, motion_aabb, &sep_axis)) {
+ if (!GodotCollisionSolver3D::solve_distance(body_shape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, motion_aabb, &sep_axis)) {
stuck = true;
break;
}
@@ -831,7 +832,7 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
Vector3 lA, lB;
Vector3 sep = motion_normal; //important optimization for this to work fast enough
- bool collided = !CollisionSolver3DSW::solve_distance(&mshape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj_xform, lA, lB, motion_aabb, &sep);
+ bool collided = !GodotCollisionSolver3D::solve_distance(&mshape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj_xform, lA, lB, motion_aabb, &sep);
if (collided) {
hi = fraction;
@@ -911,14 +912,14 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
}
Transform3D body_shape_xform = ugt * p_body->get_shape_transform(j);
- Shape3DSW *body_shape = p_body->get_shape(j);
+ GodotShape3D *body_shape = p_body->get_shape(j);
body_aabb.position += p_parameters.motion * unsafe;
int amount = _cull_aabb_for_body(p_body, body_aabb);
for (int i = 0; i < amount; i++) {
- const CollisionObject3DSW *col_obj = intersection_query_results[i];
+ const GodotCollisionObject3D *col_obj = intersection_query_results[i];
if (p_parameters.exclude_bodies.has(col_obj->get_self())) {
continue;
}
@@ -930,7 +931,7 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
rcd.object = col_obj;
rcd.shape = shape_idx;
- bool sc = CollisionSolver3DSW::solve_static(body_shape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), _rest_cbk_result, &rcd, nullptr, p_parameters.margin);
+ bool sc = GodotCollisionSolver3D::solve_static(body_shape, body_shape_xform, col_obj->get_shape(shape_idx), col_obj->get_transform() * col_obj->get_shape_transform(shape_idx), _rest_cbk_result, &rcd, nullptr, p_parameters.margin);
if (!sc) {
continue;
}
@@ -952,7 +953,7 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
collision.position = result.contact;
collision.depth = result.len;
- const Body3DSW *body = static_cast<const Body3DSW *>(result.object);
+ const GodotBody3D *body = static_cast<const GodotBody3D *>(result.object);
Vector3 rel_vec = result.contact - (body->get_transform().origin + body->get_center_of_mass());
collision.collider_velocity = body->get_linear_velocity() + (body->get_angular_velocity()).cross(rel_vec);
@@ -984,44 +985,44 @@ bool Space3DSW::test_body_motion(Body3DSW *p_body, const PhysicsServer3D::Motion
return collided;
}
-void *Space3DSW::_broadphase_pair(CollisionObject3DSW *A, int p_subindex_A, CollisionObject3DSW *B, int p_subindex_B, void *p_self) {
+void *GodotSpace3D::_broadphase_pair(GodotCollisionObject3D *A, int p_subindex_A, GodotCollisionObject3D *B, int p_subindex_B, void *p_self) {
if (!A->interacts_with(B)) {
return nullptr;
}
- CollisionObject3DSW::Type type_A = A->get_type();
- CollisionObject3DSW::Type type_B = B->get_type();
+ GodotCollisionObject3D::Type type_A = A->get_type();
+ GodotCollisionObject3D::Type type_B = B->get_type();
if (type_A > type_B) {
SWAP(A, B);
SWAP(p_subindex_A, p_subindex_B);
SWAP(type_A, type_B);
}
- Space3DSW *self = (Space3DSW *)p_self;
+ GodotSpace3D *self = (GodotSpace3D *)p_self;
self->collision_pairs++;
- if (type_A == CollisionObject3DSW::TYPE_AREA) {
- Area3DSW *area = static_cast<Area3DSW *>(A);
- if (type_B == CollisionObject3DSW::TYPE_AREA) {
- Area3DSW *area_b = static_cast<Area3DSW *>(B);
- Area2Pair3DSW *area2_pair = memnew(Area2Pair3DSW(area_b, p_subindex_B, area, p_subindex_A));
+ if (type_A == GodotCollisionObject3D::TYPE_AREA) {
+ GodotArea3D *area = static_cast<GodotArea3D *>(A);
+ if (type_B == GodotCollisionObject3D::TYPE_AREA) {
+ GodotArea3D *area_b = static_cast<GodotArea3D *>(B);
+ GodotArea2Pair3D *area2_pair = memnew(GodotArea2Pair3D(area_b, p_subindex_B, area, p_subindex_A));
return area2_pair;
- } else if (type_B == CollisionObject3DSW::TYPE_SOFT_BODY) {
- SoftBody3DSW *softbody = static_cast<SoftBody3DSW *>(B);
- AreaSoftBodyPair3DSW *soft_area_pair = memnew(AreaSoftBodyPair3DSW(softbody, p_subindex_B, area, p_subindex_A));
+ } else if (type_B == GodotCollisionObject3D::TYPE_SOFT_BODY) {
+ GodotSoftBody3D *softbody = static_cast<GodotSoftBody3D *>(B);
+ GodotAreaSoftBodyPair3D *soft_area_pair = memnew(GodotAreaSoftBodyPair3D(softbody, p_subindex_B, area, p_subindex_A));
return soft_area_pair;
} else {
- Body3DSW *body = static_cast<Body3DSW *>(B);
- AreaPair3DSW *area_pair = memnew(AreaPair3DSW(body, p_subindex_B, area, p_subindex_A));
+ GodotBody3D *body = static_cast<GodotBody3D *>(B);
+ GodotAreaPair3D *area_pair = memnew(GodotAreaPair3D(body, p_subindex_B, area, p_subindex_A));
return area_pair;
}
- } else if (type_A == CollisionObject3DSW::TYPE_BODY) {
- if (type_B == CollisionObject3DSW::TYPE_SOFT_BODY) {
- BodySoftBodyPair3DSW *soft_pair = memnew(BodySoftBodyPair3DSW((Body3DSW *)A, p_subindex_A, (SoftBody3DSW *)B));
+ } else if (type_A == GodotCollisionObject3D::TYPE_BODY) {
+ if (type_B == GodotCollisionObject3D::TYPE_SOFT_BODY) {
+ GodotBodySoftBodyPair3D *soft_pair = memnew(GodotBodySoftBodyPair3D((GodotBody3D *)A, p_subindex_A, (GodotSoftBody3D *)B));
return soft_pair;
} else {
- BodyPair3DSW *b = memnew(BodyPair3DSW((Body3DSW *)A, p_subindex_A, (Body3DSW *)B, p_subindex_B));
+ GodotBodyPair3D *b = memnew(GodotBodyPair3D((GodotBody3D *)A, p_subindex_A, (GodotBody3D *)B, p_subindex_B));
return b;
}
} else {
@@ -1031,110 +1032,110 @@ void *Space3DSW::_broadphase_pair(CollisionObject3DSW *A, int p_subindex_A, Coll
return nullptr;
}
-void Space3DSW::_broadphase_unpair(CollisionObject3DSW *A, int p_subindex_A, CollisionObject3DSW *B, int p_subindex_B, void *p_data, void *p_self) {
+void GodotSpace3D::_broadphase_unpair(GodotCollisionObject3D *A, int p_subindex_A, GodotCollisionObject3D *B, int p_subindex_B, void *p_data, void *p_self) {
if (!p_data) {
return;
}
- Space3DSW *self = (Space3DSW *)p_self;
+ GodotSpace3D *self = (GodotSpace3D *)p_self;
self->collision_pairs--;
- Constraint3DSW *c = (Constraint3DSW *)p_data;
+ GodotConstraint3D *c = (GodotConstraint3D *)p_data;
memdelete(c);
}
-const SelfList<Body3DSW>::List &Space3DSW::get_active_body_list() const {
+const SelfList<GodotBody3D>::List &GodotSpace3D::get_active_body_list() const {
return active_list;
}
-void Space3DSW::body_add_to_active_list(SelfList<Body3DSW> *p_body) {
+void GodotSpace3D::body_add_to_active_list(SelfList<GodotBody3D> *p_body) {
active_list.add(p_body);
}
-void Space3DSW::body_remove_from_active_list(SelfList<Body3DSW> *p_body) {
+void GodotSpace3D::body_remove_from_active_list(SelfList<GodotBody3D> *p_body) {
active_list.remove(p_body);
}
-void Space3DSW::body_add_to_mass_properties_update_list(SelfList<Body3DSW> *p_body) {
+void GodotSpace3D::body_add_to_mass_properties_update_list(SelfList<GodotBody3D> *p_body) {
mass_properties_update_list.add(p_body);
}
-void Space3DSW::body_remove_from_mass_properties_update_list(SelfList<Body3DSW> *p_body) {
+void GodotSpace3D::body_remove_from_mass_properties_update_list(SelfList<GodotBody3D> *p_body) {
mass_properties_update_list.remove(p_body);
}
-BroadPhase3DSW *Space3DSW::get_broadphase() {
+GodotBroadPhase3D *GodotSpace3D::get_broadphase() {
return broadphase;
}
-void Space3DSW::add_object(CollisionObject3DSW *p_object) {
+void GodotSpace3D::add_object(GodotCollisionObject3D *p_object) {
ERR_FAIL_COND(objects.has(p_object));
objects.insert(p_object);
}
-void Space3DSW::remove_object(CollisionObject3DSW *p_object) {
+void GodotSpace3D::remove_object(GodotCollisionObject3D *p_object) {
ERR_FAIL_COND(!objects.has(p_object));
objects.erase(p_object);
}
-const Set<CollisionObject3DSW *> &Space3DSW::get_objects() const {
+const Set<GodotCollisionObject3D *> &GodotSpace3D::get_objects() const {
return objects;
}
-void Space3DSW::body_add_to_state_query_list(SelfList<Body3DSW> *p_body) {
+void GodotSpace3D::body_add_to_state_query_list(SelfList<GodotBody3D> *p_body) {
state_query_list.add(p_body);
}
-void Space3DSW::body_remove_from_state_query_list(SelfList<Body3DSW> *p_body) {
+void GodotSpace3D::body_remove_from_state_query_list(SelfList<GodotBody3D> *p_body) {
state_query_list.remove(p_body);
}
-void Space3DSW::area_add_to_monitor_query_list(SelfList<Area3DSW> *p_area) {
+void GodotSpace3D::area_add_to_monitor_query_list(SelfList<GodotArea3D> *p_area) {
monitor_query_list.add(p_area);
}
-void Space3DSW::area_remove_from_monitor_query_list(SelfList<Area3DSW> *p_area) {
+void GodotSpace3D::area_remove_from_monitor_query_list(SelfList<GodotArea3D> *p_area) {
monitor_query_list.remove(p_area);
}
-void Space3DSW::area_add_to_moved_list(SelfList<Area3DSW> *p_area) {
+void GodotSpace3D::area_add_to_moved_list(SelfList<GodotArea3D> *p_area) {
area_moved_list.add(p_area);
}
-void Space3DSW::area_remove_from_moved_list(SelfList<Area3DSW> *p_area) {
+void GodotSpace3D::area_remove_from_moved_list(SelfList<GodotArea3D> *p_area) {
area_moved_list.remove(p_area);
}
-const SelfList<Area3DSW>::List &Space3DSW::get_moved_area_list() const {
+const SelfList<GodotArea3D>::List &GodotSpace3D::get_moved_area_list() const {
return area_moved_list;
}
-const SelfList<SoftBody3DSW>::List &Space3DSW::get_active_soft_body_list() const {
+const SelfList<GodotSoftBody3D>::List &GodotSpace3D::get_active_soft_body_list() const {
return active_soft_body_list;
}
-void Space3DSW::soft_body_add_to_active_list(SelfList<SoftBody3DSW> *p_soft_body) {
+void GodotSpace3D::soft_body_add_to_active_list(SelfList<GodotSoftBody3D> *p_soft_body) {
active_soft_body_list.add(p_soft_body);
}
-void Space3DSW::soft_body_remove_from_active_list(SelfList<SoftBody3DSW> *p_soft_body) {
+void GodotSpace3D::soft_body_remove_from_active_list(SelfList<GodotSoftBody3D> *p_soft_body) {
active_soft_body_list.remove(p_soft_body);
}
-void Space3DSW::call_queries() {
+void GodotSpace3D::call_queries() {
while (state_query_list.first()) {
- Body3DSW *b = state_query_list.first()->self();
+ GodotBody3D *b = state_query_list.first()->self();
state_query_list.remove(state_query_list.first());
b->call_queries();
}
while (monitor_query_list.first()) {
- Area3DSW *a = monitor_query_list.first()->self();
+ GodotArea3D *a = monitor_query_list.first()->self();
monitor_query_list.remove(monitor_query_list.first());
a->call_queries();
}
}
-void Space3DSW::setup() {
+void GodotSpace3D::setup() {
contact_debug_count = 0;
while (mass_properties_update_list.first()) {
mass_properties_update_list.first()->self()->update_mass_properties();
@@ -1142,11 +1143,11 @@ void Space3DSW::setup() {
}
}
-void Space3DSW::update() {
+void GodotSpace3D::update() {
broadphase->update();
}
-void Space3DSW::set_param(PhysicsServer3D::SpaceParameter p_param, real_t p_value) {
+void GodotSpace3D::set_param(PhysicsServer3D::SpaceParameter p_param, real_t p_value) {
switch (p_param) {
case PhysicsServer3D::SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
contact_recycle_radius = p_value;
@@ -1175,7 +1176,7 @@ void Space3DSW::set_param(PhysicsServer3D::SpaceParameter p_param, real_t p_valu
}
}
-real_t Space3DSW::get_param(PhysicsServer3D::SpaceParameter p_param) const {
+real_t GodotSpace3D::get_param(PhysicsServer3D::SpaceParameter p_param) const {
switch (p_param) {
case PhysicsServer3D::SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
return contact_recycle_radius;
@@ -1197,38 +1198,38 @@ real_t Space3DSW::get_param(PhysicsServer3D::SpaceParameter p_param) const {
return 0;
}
-void Space3DSW::lock() {
+void GodotSpace3D::lock() {
locked = true;
}
-void Space3DSW::unlock() {
+void GodotSpace3D::unlock() {
locked = false;
}
-bool Space3DSW::is_locked() const {
+bool GodotSpace3D::is_locked() const {
return locked;
}
-PhysicsDirectSpaceState3DSW *Space3DSW::get_direct_state() {
+GodotPhysicsDirectSpaceState3D *GodotSpace3D::get_direct_state() {
return direct_access;
}
-Space3DSW::Space3DSW() {
+GodotSpace3D::GodotSpace3D() {
body_linear_velocity_sleep_threshold = GLOBAL_DEF("physics/3d/sleep_threshold_linear", 0.1);
body_angular_velocity_sleep_threshold = GLOBAL_DEF("physics/3d/sleep_threshold_angular", Math::deg2rad(8.0));
body_time_to_sleep = GLOBAL_DEF("physics/3d/time_before_sleep", 0.5);
ProjectSettings::get_singleton()->set_custom_property_info("physics/3d/time_before_sleep", PropertyInfo(Variant::FLOAT, "physics/3d/time_before_sleep", PROPERTY_HINT_RANGE, "0,5,0.01,or_greater"));
body_angular_velocity_damp_ratio = 10;
- broadphase = BroadPhase3DSW::create_func();
+ broadphase = GodotBroadPhase3D::create_func();
broadphase->set_pair_callback(_broadphase_pair, this);
broadphase->set_unpair_callback(_broadphase_unpair, this);
- direct_access = memnew(PhysicsDirectSpaceState3DSW);
+ direct_access = memnew(GodotPhysicsDirectSpaceState3D);
direct_access->space = this;
}
-Space3DSW::~Space3DSW() {
+GodotSpace3D::~GodotSpace3D() {
memdelete(broadphase);
memdelete(direct_access);
}
diff --git a/servers/physics_3d/space_3d_sw.h b/servers/physics_3d/godot_space_3d.h
index 69cc3c4bbd..3b36dd346c 100644
--- a/servers/physics_3d/space_3d_sw.h
+++ b/servers/physics_3d/godot_space_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* space_3d_sw.h */
+/* godot_space_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,25 +28,26 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef SPACE_SW_H
-#define SPACE_SW_H
+#ifndef GODOT_SPACE_3D_H
+#define GODOT_SPACE_3D_H
+
+#include "godot_area_3d.h"
+#include "godot_area_pair_3d.h"
+#include "godot_body_3d.h"
+#include "godot_body_pair_3d.h"
+#include "godot_broad_phase_3d.h"
+#include "godot_collision_object_3d.h"
+#include "godot_soft_body_3d.h"
-#include "area_3d_sw.h"
-#include "area_pair_3d_sw.h"
-#include "body_3d_sw.h"
-#include "body_pair_3d_sw.h"
-#include "broad_phase_3d_sw.h"
-#include "collision_object_3d_sw.h"
#include "core/config/project_settings.h"
#include "core/templates/hash_map.h"
#include "core/typedefs.h"
-#include "soft_body_3d_sw.h"
-class PhysicsDirectSpaceState3DSW : public PhysicsDirectSpaceState3D {
- GDCLASS(PhysicsDirectSpaceState3DSW, PhysicsDirectSpaceState3D);
+class GodotPhysicsDirectSpaceState3D : public PhysicsDirectSpaceState3D {
+ GDCLASS(GodotPhysicsDirectSpaceState3D, PhysicsDirectSpaceState3D);
public:
- Space3DSW *space;
+ GodotSpace3D *space;
virtual int intersect_point(const Vector3 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = UINT32_MAX, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
virtual bool intersect_ray(const Vector3 &p_from, const Vector3 &p_to, RayResult &r_result, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = UINT32_MAX, bool p_collide_with_bodies = true, bool p_collide_with_areas = false, bool p_pick_ray = false) override;
@@ -56,10 +57,10 @@ public:
virtual bool rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = UINT32_MAX, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
virtual Vector3 get_closest_point_to_object_volume(RID p_object, const Vector3 p_point) const override;
- PhysicsDirectSpaceState3DSW();
+ GodotPhysicsDirectSpaceState3D();
};
-class Space3DSW {
+class GodotSpace3D {
public:
enum ElapsedTime {
ELAPSED_TIME_INTEGRATE_FORCES,
@@ -74,23 +75,23 @@ public:
private:
uint64_t elapsed_time[ELAPSED_TIME_MAX] = {};
- PhysicsDirectSpaceState3DSW *direct_access;
+ GodotPhysicsDirectSpaceState3D *direct_access;
RID self;
- BroadPhase3DSW *broadphase;
- SelfList<Body3DSW>::List active_list;
- SelfList<Body3DSW>::List mass_properties_update_list;
- SelfList<Body3DSW>::List state_query_list;
- SelfList<Area3DSW>::List monitor_query_list;
- SelfList<Area3DSW>::List area_moved_list;
- SelfList<SoftBody3DSW>::List active_soft_body_list;
+ GodotBroadPhase3D *broadphase;
+ SelfList<GodotBody3D>::List active_list;
+ SelfList<GodotBody3D>::List mass_properties_update_list;
+ SelfList<GodotBody3D>::List state_query_list;
+ SelfList<GodotArea3D>::List monitor_query_list;
+ SelfList<GodotArea3D>::List area_moved_list;
+ SelfList<GodotSoftBody3D>::List active_soft_body_list;
- static void *_broadphase_pair(CollisionObject3DSW *A, int p_subindex_A, CollisionObject3DSW *B, int p_subindex_B, void *p_self);
- static void _broadphase_unpair(CollisionObject3DSW *A, int p_subindex_A, CollisionObject3DSW *B, int p_subindex_B, void *p_data, void *p_self);
+ static void *_broadphase_pair(GodotCollisionObject3D *A, int p_subindex_A, GodotCollisionObject3D *B, int p_subindex_B, void *p_self);
+ static void _broadphase_unpair(GodotCollisionObject3D *A, int p_subindex_A, GodotCollisionObject3D *B, int p_subindex_B, void *p_data, void *p_self);
- Set<CollisionObject3DSW *> objects;
+ Set<GodotCollisionObject3D *> objects;
- Area3DSW *area = nullptr;
+ GodotArea3D *area = nullptr;
real_t contact_recycle_radius = 0.01;
real_t contact_max_separation = 0.05;
@@ -101,7 +102,7 @@ private:
INTERSECTION_QUERY_MAX = 2048
};
- CollisionObject3DSW *intersection_query_results[INTERSECTION_QUERY_MAX];
+ GodotCollisionObject3D *intersection_query_results[INTERSECTION_QUERY_MAX];
int intersection_query_subindex_results[INTERSECTION_QUERY_MAX];
real_t body_linear_velocity_sleep_threshold;
@@ -122,41 +123,41 @@ private:
Vector<Vector3> contact_debug;
int contact_debug_count = 0;
- friend class PhysicsDirectSpaceState3DSW;
+ friend class GodotPhysicsDirectSpaceState3D;
- int _cull_aabb_for_body(Body3DSW *p_body, const AABB &p_aabb);
+ int _cull_aabb_for_body(GodotBody3D *p_body, const AABB &p_aabb);
public:
_FORCE_INLINE_ void set_self(const RID &p_self) { self = p_self; }
_FORCE_INLINE_ RID get_self() const { return self; }
- void set_default_area(Area3DSW *p_area) { area = p_area; }
- Area3DSW *get_default_area() const { return area; }
+ void set_default_area(GodotArea3D *p_area) { area = p_area; }
+ GodotArea3D *get_default_area() const { return area; }
- const SelfList<Body3DSW>::List &get_active_body_list() const;
- void body_add_to_active_list(SelfList<Body3DSW> *p_body);
- void body_remove_from_active_list(SelfList<Body3DSW> *p_body);
- void body_add_to_mass_properties_update_list(SelfList<Body3DSW> *p_body);
- void body_remove_from_mass_properties_update_list(SelfList<Body3DSW> *p_body);
+ const SelfList<GodotBody3D>::List &get_active_body_list() const;
+ void body_add_to_active_list(SelfList<GodotBody3D> *p_body);
+ void body_remove_from_active_list(SelfList<GodotBody3D> *p_body);
+ void body_add_to_mass_properties_update_list(SelfList<GodotBody3D> *p_body);
+ void body_remove_from_mass_properties_update_list(SelfList<GodotBody3D> *p_body);
- void body_add_to_state_query_list(SelfList<Body3DSW> *p_body);
- void body_remove_from_state_query_list(SelfList<Body3DSW> *p_body);
+ void body_add_to_state_query_list(SelfList<GodotBody3D> *p_body);
+ void body_remove_from_state_query_list(SelfList<GodotBody3D> *p_body);
- void area_add_to_monitor_query_list(SelfList<Area3DSW> *p_area);
- void area_remove_from_monitor_query_list(SelfList<Area3DSW> *p_area);
- void area_add_to_moved_list(SelfList<Area3DSW> *p_area);
- void area_remove_from_moved_list(SelfList<Area3DSW> *p_area);
- const SelfList<Area3DSW>::List &get_moved_area_list() const;
+ void area_add_to_monitor_query_list(SelfList<GodotArea3D> *p_area);
+ void area_remove_from_monitor_query_list(SelfList<GodotArea3D> *p_area);
+ void area_add_to_moved_list(SelfList<GodotArea3D> *p_area);
+ void area_remove_from_moved_list(SelfList<GodotArea3D> *p_area);
+ const SelfList<GodotArea3D>::List &get_moved_area_list() const;
- const SelfList<SoftBody3DSW>::List &get_active_soft_body_list() const;
- void soft_body_add_to_active_list(SelfList<SoftBody3DSW> *p_soft_body);
- void soft_body_remove_from_active_list(SelfList<SoftBody3DSW> *p_soft_body);
+ const SelfList<GodotSoftBody3D>::List &get_active_soft_body_list() const;
+ void soft_body_add_to_active_list(SelfList<GodotSoftBody3D> *p_soft_body);
+ void soft_body_remove_from_active_list(SelfList<GodotSoftBody3D> *p_soft_body);
- BroadPhase3DSW *get_broadphase();
+ GodotBroadPhase3D *get_broadphase();
- void add_object(CollisionObject3DSW *p_object);
- void remove_object(CollisionObject3DSW *p_object);
- const Set<CollisionObject3DSW *> &get_objects() const;
+ void add_object(GodotCollisionObject3D *p_object);
+ void remove_object(GodotCollisionObject3D *p_object);
+ const Set<GodotCollisionObject3D *> &get_objects() const;
_FORCE_INLINE_ real_t get_contact_recycle_radius() const { return contact_recycle_radius; }
_FORCE_INLINE_ real_t get_contact_max_separation() const { return contact_max_separation; }
@@ -189,7 +190,7 @@ public:
int get_collision_pairs() const { return collision_pairs; }
- PhysicsDirectSpaceState3DSW *get_direct_state();
+ GodotPhysicsDirectSpaceState3D *get_direct_state();
void set_debug_contacts(int p_amount) { contact_debug.resize(p_amount); }
_FORCE_INLINE_ bool is_debugging_contacts() const { return !contact_debug.is_empty(); }
@@ -207,10 +208,10 @@ public:
void set_elapsed_time(ElapsedTime p_time, uint64_t p_msec) { elapsed_time[p_time] = p_msec; }
uint64_t get_elapsed_time(ElapsedTime p_time) const { return elapsed_time[p_time]; }
- bool test_body_motion(Body3DSW *p_body, const PhysicsServer3D::MotionParameters &p_parameters, PhysicsServer3D::MotionResult *r_result);
+ bool test_body_motion(GodotBody3D *p_body, const PhysicsServer3D::MotionParameters &p_parameters, PhysicsServer3D::MotionResult *r_result);
- Space3DSW();
- ~Space3DSW();
+ GodotSpace3D();
+ ~GodotSpace3D();
};
-#endif // SPACE__SW_H
+#endif // GODOT_SPACE_3D_H
diff --git a/servers/physics_3d/step_3d_sw.cpp b/servers/physics_3d/godot_step_3d.cpp
index 6572d58c91..a8654c617b 100644
--- a/servers/physics_3d/step_3d_sw.cpp
+++ b/servers/physics_3d/godot_step_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* step_3d_sw.cpp */
+/* godot_step_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,8 +28,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "step_3d_sw.h"
-#include "joints_3d_sw.h"
+#include "godot_step_3d.h"
+
+#include "godot_joint_3d.h"
#include "core/os/os.h"
@@ -39,7 +40,7 @@
#define ISLAND_SIZE_RESERVE 512
#define CONSTRAINT_COUNT_RESERVE 1024
-void Step3DSW::_populate_island(Body3DSW *p_body, LocalVector<Body3DSW *> &p_body_island, LocalVector<Constraint3DSW *> &p_constraint_island) {
+void GodotStep3D::_populate_island(GodotBody3D *p_body, LocalVector<GodotBody3D *> &p_body_island, LocalVector<GodotConstraint3D *> &p_constraint_island) {
p_body->set_island_step(_step);
if (p_body->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC) {
@@ -47,8 +48,8 @@ void Step3DSW::_populate_island(Body3DSW *p_body, LocalVector<Body3DSW *> &p_bod
p_body_island.push_back(p_body);
}
- for (const KeyValue<Constraint3DSW *, int> &E : p_body->get_constraint_map()) {
- Constraint3DSW *constraint = (Constraint3DSW *)E.key;
+ for (const KeyValue<GodotConstraint3D *, int> &E : p_body->get_constraint_map()) {
+ GodotConstraint3D *constraint = (GodotConstraint3D *)E.key;
if (constraint->get_island_step() == _step) {
continue; // Already processed.
}
@@ -62,7 +63,7 @@ void Step3DSW::_populate_island(Body3DSW *p_body, LocalVector<Body3DSW *> &p_bod
if (i == E.value) {
continue;
}
- Body3DSW *other_body = constraint->get_body_ptr()[i];
+ GodotBody3D *other_body = constraint->get_body_ptr()[i];
if (other_body->get_island_step() == _step) {
continue; // Already processed.
}
@@ -74,7 +75,7 @@ void Step3DSW::_populate_island(Body3DSW *p_body, LocalVector<Body3DSW *> &p_bod
// Find connected soft bodies.
for (int i = 0; i < constraint->get_soft_body_count(); i++) {
- SoftBody3DSW *soft_body = constraint->get_soft_body_ptr(i);
+ GodotSoftBody3D *soft_body = constraint->get_soft_body_ptr(i);
if (soft_body->get_island_step() == _step) {
continue; // Already processed.
}
@@ -83,11 +84,11 @@ void Step3DSW::_populate_island(Body3DSW *p_body, LocalVector<Body3DSW *> &p_bod
}
}
-void Step3DSW::_populate_island_soft_body(SoftBody3DSW *p_soft_body, LocalVector<Body3DSW *> &p_body_island, LocalVector<Constraint3DSW *> &p_constraint_island) {
+void GodotStep3D::_populate_island_soft_body(GodotSoftBody3D *p_soft_body, LocalVector<GodotBody3D *> &p_body_island, LocalVector<GodotConstraint3D *> &p_constraint_island) {
p_soft_body->set_island_step(_step);
- for (Set<Constraint3DSW *>::Element *E = p_soft_body->get_constraints().front(); E; E = E->next()) {
- Constraint3DSW *constraint = (Constraint3DSW *)E->get();
+ for (Set<GodotConstraint3D *>::Element *E = p_soft_body->get_constraints().front(); E; E = E->next()) {
+ GodotConstraint3D *constraint = (GodotConstraint3D *)E->get();
if (constraint->get_island_step() == _step) {
continue; // Already processed.
}
@@ -98,7 +99,7 @@ void Step3DSW::_populate_island_soft_body(SoftBody3DSW *p_soft_body, LocalVector
// Find connected rigid bodies.
for (int i = 0; i < constraint->get_body_count(); i++) {
- Body3DSW *body = constraint->get_body_ptr()[i];
+ GodotBody3D *body = constraint->get_body_ptr()[i];
if (body->get_island_step() == _step) {
continue; // Already processed.
}
@@ -110,16 +111,16 @@ void Step3DSW::_populate_island_soft_body(SoftBody3DSW *p_soft_body, LocalVector
}
}
-void Step3DSW::_setup_contraint(uint32_t p_constraint_index, void *p_userdata) {
- Constraint3DSW *constraint = all_constraints[p_constraint_index];
+void GodotStep3D::_setup_contraint(uint32_t p_constraint_index, void *p_userdata) {
+ GodotConstraint3D *constraint = all_constraints[p_constraint_index];
constraint->setup(delta);
}
-void Step3DSW::_pre_solve_island(LocalVector<Constraint3DSW *> &p_constraint_island) const {
+void GodotStep3D::_pre_solve_island(LocalVector<GodotConstraint3D *> &p_constraint_island) const {
uint32_t constraint_count = p_constraint_island.size();
uint32_t valid_constraint_count = 0;
for (uint32_t constraint_index = 0; constraint_index < constraint_count; ++constraint_index) {
- Constraint3DSW *constraint = p_constraint_island[constraint_index];
+ GodotConstraint3D *constraint = p_constraint_island[constraint_index];
if (p_constraint_island[constraint_index]->pre_solve(delta)) {
// Keep this constraint for solving.
p_constraint_island[valid_constraint_count++] = constraint;
@@ -128,8 +129,8 @@ void Step3DSW::_pre_solve_island(LocalVector<Constraint3DSW *> &p_constraint_isl
p_constraint_island.resize(valid_constraint_count);
}
-void Step3DSW::_solve_island(uint32_t p_island_index, void *p_userdata) {
- LocalVector<Constraint3DSW *> &constraint_island = constraint_islands[p_island_index];
+void GodotStep3D::_solve_island(uint32_t p_island_index, void *p_userdata) {
+ LocalVector<GodotConstraint3D *> &constraint_island = constraint_islands[p_island_index];
int current_priority = 1;
@@ -146,7 +147,7 @@ void Step3DSW::_solve_island(uint32_t p_island_index, void *p_userdata) {
uint32_t priority_constraint_count = 0;
++current_priority;
for (uint32_t constraint_index = 0; constraint_index < constraint_count; ++constraint_index) {
- Constraint3DSW *constraint = constraint_island[constraint_index];
+ GodotConstraint3D *constraint = constraint_island[constraint_index];
if (constraint->get_priority() >= current_priority) {
// Keep this constraint for the next iteration.
constraint_island[priority_constraint_count++] = constraint;
@@ -156,12 +157,12 @@ void Step3DSW::_solve_island(uint32_t p_island_index, void *p_userdata) {
}
}
-void Step3DSW::_check_suspend(const LocalVector<Body3DSW *> &p_body_island) const {
+void GodotStep3D::_check_suspend(const LocalVector<GodotBody3D *> &p_body_island) const {
bool can_sleep = true;
uint32_t body_count = p_body_island.size();
for (uint32_t body_index = 0; body_index < body_count; ++body_index) {
- Body3DSW *body = p_body_island[body_index];
+ GodotBody3D *body = p_body_island[body_index];
if (!body->sleep_test(delta)) {
can_sleep = false;
@@ -170,7 +171,7 @@ void Step3DSW::_check_suspend(const LocalVector<Body3DSW *> &p_body_island) cons
// Put all to sleep or wake up everyone.
for (uint32_t body_index = 0; body_index < body_count; ++body_index) {
- Body3DSW *body = p_body_island[body_index];
+ GodotBody3D *body = p_body_island[body_index];
bool active = body->is_active();
@@ -180,7 +181,7 @@ void Step3DSW::_check_suspend(const LocalVector<Body3DSW *> &p_body_island) cons
}
}
-void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
+void GodotStep3D::step(GodotSpace3D *p_space, real_t p_delta, int p_iterations) {
p_space->lock(); // can't access space during this
p_space->setup(); //update inertias, etc
@@ -190,9 +191,9 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
iterations = p_iterations;
delta = p_delta;
- const SelfList<Body3DSW>::List *body_list = &p_space->get_active_body_list();
+ const SelfList<GodotBody3D>::List *body_list = &p_space->get_active_body_list();
- const SelfList<SoftBody3DSW>::List *soft_body_list = &p_space->get_active_soft_body_list();
+ const SelfList<GodotSoftBody3D>::List *soft_body_list = &p_space->get_active_soft_body_list();
/* INTEGRATE FORCES */
@@ -201,7 +202,7 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
int active_count = 0;
- const SelfList<Body3DSW> *b = body_list->first();
+ const SelfList<GodotBody3D> *b = body_list->first();
while (b) {
b->self()->integrate_forces(p_delta);
b = b->next();
@@ -210,7 +211,7 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
/* UPDATE SOFT BODY MOTION */
- const SelfList<SoftBody3DSW> *sb = soft_body_list->first();
+ const SelfList<GodotSoftBody3D> *sb = soft_body_list->first();
while (sb) {
sb->self()->predict_motion(p_delta);
sb = sb->next();
@@ -221,7 +222,7 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space3DSW::ELAPSED_TIME_INTEGRATE_FORCES, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace3D::ELAPSED_TIME_INTEGRATE_FORCES, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
@@ -229,11 +230,11 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
uint32_t island_count = 0;
- const SelfList<Area3DSW>::List &aml = p_space->get_moved_area_list();
+ const SelfList<GodotArea3D>::List &aml = p_space->get_moved_area_list();
while (aml.first()) {
- for (const Set<Constraint3DSW *>::Element *E = aml.first()->self()->get_constraints().front(); E; E = E->next()) {
- Constraint3DSW *constraint = E->get();
+ for (const Set<GodotConstraint3D *>::Element *E = aml.first()->self()->get_constraints().front(); E; E = E->next()) {
+ GodotConstraint3D *constraint = E->get();
if (constraint->get_island_step() == _step) {
continue;
}
@@ -244,13 +245,13 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
if (constraint_islands.size() < island_count) {
constraint_islands.resize(island_count);
}
- LocalVector<Constraint3DSW *> &constraint_island = constraint_islands[island_count - 1];
+ LocalVector<GodotConstraint3D *> &constraint_island = constraint_islands[island_count - 1];
constraint_island.clear();
all_constraints.push_back(constraint);
constraint_island.push_back(constraint);
}
- p_space->area_remove_from_moved_list((SelfList<Area3DSW> *)aml.first()); //faster to remove here
+ p_space->area_remove_from_moved_list((SelfList<GodotArea3D> *)aml.first()); //faster to remove here
}
/* GENERATE CONSTRAINT ISLANDS FOR ACTIVE RIGID BODIES */
@@ -260,14 +261,14 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
uint32_t body_island_count = 0;
while (b) {
- Body3DSW *body = b->self();
+ GodotBody3D *body = b->self();
if (body->get_island_step() != _step) {
++body_island_count;
if (body_islands.size() < body_island_count) {
body_islands.resize(body_island_count);
}
- LocalVector<Body3DSW *> &body_island = body_islands[body_island_count - 1];
+ LocalVector<GodotBody3D *> &body_island = body_islands[body_island_count - 1];
body_island.clear();
body_island.reserve(BODY_ISLAND_SIZE_RESERVE);
@@ -275,7 +276,7 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
if (constraint_islands.size() < island_count) {
constraint_islands.resize(island_count);
}
- LocalVector<Constraint3DSW *> &constraint_island = constraint_islands[island_count - 1];
+ LocalVector<GodotConstraint3D *> &constraint_island = constraint_islands[island_count - 1];
constraint_island.clear();
constraint_island.reserve(ISLAND_SIZE_RESERVE);
@@ -296,14 +297,14 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
sb = soft_body_list->first();
while (sb) {
- SoftBody3DSW *soft_body = sb->self();
+ GodotSoftBody3D *soft_body = sb->self();
if (soft_body->get_island_step() != _step) {
++body_island_count;
if (body_islands.size() < body_island_count) {
body_islands.resize(body_island_count);
}
- LocalVector<Body3DSW *> &body_island = body_islands[body_island_count - 1];
+ LocalVector<GodotBody3D *> &body_island = body_islands[body_island_count - 1];
body_island.clear();
body_island.reserve(BODY_ISLAND_SIZE_RESERVE);
@@ -311,7 +312,7 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
if (constraint_islands.size() < island_count) {
constraint_islands.resize(island_count);
}
- LocalVector<Constraint3DSW *> &constraint_island = constraint_islands[island_count - 1];
+ LocalVector<GodotConstraint3D *> &constraint_island = constraint_islands[island_count - 1];
constraint_island.clear();
constraint_island.reserve(ISLAND_SIZE_RESERVE);
@@ -332,18 +333,18 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space3DSW::ELAPSED_TIME_GENERATE_ISLANDS, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace3D::ELAPSED_TIME_GENERATE_ISLANDS, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
/* SETUP CONSTRAINTS / PROCESS COLLISIONS */
uint32_t total_contraint_count = all_constraints.size();
- work_pool.do_work(total_contraint_count, this, &Step3DSW::_setup_contraint, nullptr);
+ work_pool.do_work(total_contraint_count, this, &GodotStep3D::_setup_contraint, nullptr);
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space3DSW::ELAPSED_TIME_SETUP_CONSTRAINTS, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace3D::ELAPSED_TIME_SETUP_CONSTRAINTS, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
@@ -359,14 +360,14 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
// Warning: _solve_island modifies the constraint islands for optimization purpose,
// their content is not reliable after these calls and shouldn't be used anymore.
if (island_count > 1) {
- work_pool.do_work(island_count, this, &Step3DSW::_solve_island, nullptr);
+ work_pool.do_work(island_count, this, &GodotStep3D::_solve_island, nullptr);
} else if (island_count > 0) {
_solve_island(0);
}
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space3DSW::ELAPSED_TIME_SOLVE_CONSTRAINTS, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace3D::ELAPSED_TIME_SOLVE_CONSTRAINTS, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
@@ -374,7 +375,7 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
b = body_list->first();
while (b) {
- const SelfList<Body3DSW> *n = b->next();
+ const SelfList<GodotBody3D> *n = b->next();
b->self()->integrate_velocities(p_delta);
b = n;
}
@@ -395,7 +396,7 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
{ //profile
profile_endtime = OS::get_singleton()->get_ticks_usec();
- p_space->set_elapsed_time(Space3DSW::ELAPSED_TIME_INTEGRATE_VELOCITIES, profile_endtime - profile_begtime);
+ p_space->set_elapsed_time(GodotSpace3D::ELAPSED_TIME_INTEGRATE_VELOCITIES, profile_endtime - profile_begtime);
profile_begtime = profile_endtime;
}
@@ -406,7 +407,7 @@ void Step3DSW::step(Space3DSW *p_space, real_t p_delta, int p_iterations) {
_step++;
}
-Step3DSW::Step3DSW() {
+GodotStep3D::GodotStep3D() {
body_islands.reserve(BODY_ISLAND_COUNT_RESERVE);
constraint_islands.reserve(ISLAND_COUNT_RESERVE);
all_constraints.reserve(CONSTRAINT_COUNT_RESERVE);
@@ -414,6 +415,6 @@ Step3DSW::Step3DSW() {
work_pool.init();
}
-Step3DSW::~Step3DSW() {
+GodotStep3D::~GodotStep3D() {
work_pool.finish();
}
diff --git a/servers/physics_3d/step_3d_sw.h b/servers/physics_3d/godot_step_3d.h
index f2f879104a..23ede4feff 100644
--- a/servers/physics_3d/step_3d_sw.h
+++ b/servers/physics_3d/godot_step_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* step_3d_sw.h */
+/* godot_step_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,15 +28,15 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef STEP_SW_H
-#define STEP_SW_H
+#ifndef GODOT_STEP_3D_H
+#define GODOT_STEP_3D_H
-#include "space_3d_sw.h"
+#include "godot_space_3d.h"
#include "core/templates/local_vector.h"
#include "core/templates/thread_work_pool.h"
-class Step3DSW {
+class GodotStep3D {
uint64_t _step = 1;
int iterations = 0;
@@ -44,21 +44,21 @@ class Step3DSW {
ThreadWorkPool work_pool;
- LocalVector<LocalVector<Body3DSW *>> body_islands;
- LocalVector<LocalVector<Constraint3DSW *>> constraint_islands;
- LocalVector<Constraint3DSW *> all_constraints;
+ LocalVector<LocalVector<GodotBody3D *>> body_islands;
+ LocalVector<LocalVector<GodotConstraint3D *>> constraint_islands;
+ LocalVector<GodotConstraint3D *> all_constraints;
- void _populate_island(Body3DSW *p_body, LocalVector<Body3DSW *> &p_body_island, LocalVector<Constraint3DSW *> &p_constraint_island);
- void _populate_island_soft_body(SoftBody3DSW *p_soft_body, LocalVector<Body3DSW *> &p_body_island, LocalVector<Constraint3DSW *> &p_constraint_island);
+ void _populate_island(GodotBody3D *p_body, LocalVector<GodotBody3D *> &p_body_island, LocalVector<GodotConstraint3D *> &p_constraint_island);
+ void _populate_island_soft_body(GodotSoftBody3D *p_soft_body, LocalVector<GodotBody3D *> &p_body_island, LocalVector<GodotConstraint3D *> &p_constraint_island);
void _setup_contraint(uint32_t p_constraint_index, void *p_userdata = nullptr);
- void _pre_solve_island(LocalVector<Constraint3DSW *> &p_constraint_island) const;
+ void _pre_solve_island(LocalVector<GodotConstraint3D *> &p_constraint_island) const;
void _solve_island(uint32_t p_island_index, void *p_userdata = nullptr);
- void _check_suspend(const LocalVector<Body3DSW *> &p_body_island) const;
+ void _check_suspend(const LocalVector<GodotBody3D *> &p_body_island) const;
public:
- void step(Space3DSW *p_space, real_t p_delta, int p_iterations);
- Step3DSW();
- ~Step3DSW();
+ void step(GodotSpace3D *p_space, real_t p_delta, int p_iterations);
+ GodotStep3D();
+ ~GodotStep3D();
};
-#endif // STEP__SW_H
+#endif // GODOT_STEP_3D_H
diff --git a/servers/physics_3d/joints/cone_twist_joint_3d_sw.cpp b/servers/physics_3d/joints/godot_cone_twist_joint_3d.cpp
index bb9cc1bf67..31a87fc595 100644
--- a/servers/physics_3d/joints/cone_twist_joint_3d_sw.cpp
+++ b/servers/physics_3d/joints/godot_cone_twist_joint_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* cone_twist_joint_3d_sw.cpp */
+/* godot_cone_twist_joint_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -49,7 +49,7 @@ subject to the following restrictions:
Written by: Marcus Hennix
*/
-#include "cone_twist_joint_3d_sw.h"
+#include "godot_cone_twist_joint_3d.h"
static void plane_space(const Vector3 &n, Vector3 &p, Vector3 &q) {
if (Math::abs(n.z) > Math_SQRT12) {
@@ -84,8 +84,8 @@ static _FORCE_INLINE_ real_t atan2fast(real_t y, real_t x) {
return (y < 0.0f) ? -angle : angle;
}
-ConeTwistJoint3DSW::ConeTwistJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &rbAFrame, const Transform3D &rbBFrame) :
- Joint3DSW(_arr, 2) {
+GodotConeTwistJoint3D::GodotConeTwistJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &rbAFrame, const Transform3D &rbBFrame) :
+ GodotJoint3D(_arr, 2) {
A = rbA;
B = rbB;
@@ -96,7 +96,7 @@ ConeTwistJoint3DSW::ConeTwistJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Trans
B->add_constraint(this, 1);
}
-bool ConeTwistJoint3DSW::setup(real_t p_timestep) {
+bool GodotConeTwistJoint3D::setup(real_t p_timestep) {
dynamic_A = (A->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
dynamic_B = (B->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
@@ -129,7 +129,7 @@ bool ConeTwistJoint3DSW::setup(real_t p_timestep) {
plane_space(normal[0], normal[1], normal[2]);
for (int i = 0; i < 3; i++) {
- memnew_placement(&m_jac[i], JacobianEntry3DSW(
+ memnew_placement(&m_jac[i], GodotJacobianEntry3D(
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
pivotAInW - A->get_transform().origin - A->get_center_of_mass(),
@@ -230,7 +230,7 @@ bool ConeTwistJoint3DSW::setup(real_t p_timestep) {
return true;
}
-void ConeTwistJoint3DSW::solve(real_t p_timestep) {
+void GodotConeTwistJoint3D::solve(real_t p_timestep) {
Vector3 pivotAInW = A->get_transform().xform(m_rbAFrame.origin);
Vector3 pivotBInW = B->get_transform().xform(m_rbBFrame.origin);
@@ -312,7 +312,7 @@ void ConeTwistJoint3DSW::solve(real_t p_timestep) {
}
}
-void ConeTwistJoint3DSW::set_param(PhysicsServer3D::ConeTwistJointParam p_param, real_t p_value) {
+void GodotConeTwistJoint3D::set_param(PhysicsServer3D::ConeTwistJointParam p_param, real_t p_value) {
switch (p_param) {
case PhysicsServer3D::CONE_TWIST_JOINT_SWING_SPAN: {
m_swingSpan1 = p_value;
@@ -335,7 +335,7 @@ void ConeTwistJoint3DSW::set_param(PhysicsServer3D::ConeTwistJointParam p_param,
}
}
-real_t ConeTwistJoint3DSW::get_param(PhysicsServer3D::ConeTwistJointParam p_param) const {
+real_t GodotConeTwistJoint3D::get_param(PhysicsServer3D::ConeTwistJointParam p_param) const {
switch (p_param) {
case PhysicsServer3D::CONE_TWIST_JOINT_SWING_SPAN: {
return m_swingSpan1;
diff --git a/servers/physics_3d/joints/cone_twist_joint_3d_sw.h b/servers/physics_3d/joints/godot_cone_twist_joint_3d.h
index bf7e593820..999d0f0692 100644
--- a/servers/physics_3d/joints/cone_twist_joint_3d_sw.h
+++ b/servers/physics_3d/joints/godot_cone_twist_joint_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* cone_twist_joint_3d_sw.h */
+/* godot_cone_twist_joint_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -34,7 +34,7 @@ Adapted to Godot from the Bullet library.
/*
Bullet Continuous Collision Detection and Physics Library
-ConeTwistJointSW is Copyright (c) 2007 Starbreeze Studios
+GodotConeTwistJoint3D is Copyright (c) 2007 Starbreeze Studios
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -49,28 +49,28 @@ subject to the following restrictions:
Written by: Marcus Hennix
*/
-#ifndef CONE_TWIST_JOINT_SW_H
-#define CONE_TWIST_JOINT_SW_H
+#ifndef GODOT_CONE_TWIST_JOINT_3D_H
+#define GODOT_CONE_TWIST_JOINT_3D_H
-#include "servers/physics_3d/joints/jacobian_entry_3d_sw.h"
-#include "servers/physics_3d/joints_3d_sw.h"
+#include "servers/physics_3d/godot_joint_3d.h"
+#include "servers/physics_3d/joints/godot_jacobian_entry_3d.h"
-///ConeTwistJointSW can be used to simulate ragdoll joints (upper arm, leg etc)
-class ConeTwistJoint3DSW : public Joint3DSW {
+// GodotConeTwistJoint3D can be used to simulate ragdoll joints (upper arm, leg etc).
+class GodotConeTwistJoint3D : public GodotJoint3D {
#ifdef IN_PARALLELL_SOLVER
public:
#endif
union {
struct {
- Body3DSW *A;
- Body3DSW *B;
+ GodotBody3D *A;
+ GodotBody3D *B;
};
- Body3DSW *_arr[2] = { nullptr, nullptr };
+ GodotBody3D *_arr[2] = { nullptr, nullptr };
};
- JacobianEntry3DSW m_jac[3] = {}; //3 orthogonal linear constraints
+ GodotJacobianEntry3D m_jac[3] = {}; //3 orthogonal linear constraints
real_t m_appliedImpulse = 0.0;
Transform3D m_rbAFrame;
@@ -107,7 +107,7 @@ public:
virtual bool setup(real_t p_step) override;
virtual void solve(real_t p_step) override;
- ConeTwistJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &rbAFrame, const Transform3D &rbBFrame);
+ GodotConeTwistJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &rbAFrame, const Transform3D &rbBFrame);
void setAngularOnly(bool angularOnly) {
m_angularOnly = angularOnly;
@@ -139,4 +139,4 @@ public:
real_t get_param(PhysicsServer3D::ConeTwistJointParam p_param) const;
};
-#endif // CONE_TWIST_JOINT_SW_H
+#endif // GODOT_CONE_TWIST_JOINT_3D_H
diff --git a/servers/physics_3d/joints/generic_6dof_joint_3d_sw.cpp b/servers/physics_3d/joints/godot_generic_6dof_joint_3d.cpp
index 56aba24b42..d7e0537439 100644
--- a/servers/physics_3d/joints/generic_6dof_joint_3d_sw.cpp
+++ b/servers/physics_3d/joints/godot_generic_6dof_joint_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* generic_6dof_joint_3d_sw.cpp */
+/* godot_generic_6dof_joint_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -49,18 +49,18 @@ subject to the following restrictions:
/*
2007-09-09
-Generic6DOFJointSW Refactored by Francisco Le?n
+GodotGeneric6DOFJoint3D Refactored by Francisco Le?n
email: projectileman@yahoo.com
http://gimpact.sf.net
*/
-#include "generic_6dof_joint_3d_sw.h"
+#include "godot_generic_6dof_joint_3d.h"
#define GENERIC_D6_DISABLE_WARMSTARTING 1
-//////////////////////////// G6DOFRotationalLimitMotorSW ////////////////////////////////////
+//////////////////////////// GodotG6DOFRotationalLimitMotor3D ////////////////////////////////////
-int G6DOFRotationalLimitMotor3DSW::testLimitValue(real_t test_value) {
+int GodotG6DOFRotationalLimitMotor3D::testLimitValue(real_t test_value) {
if (m_loLimit > m_hiLimit) {
m_currentLimit = 0; //Free from violation
return 0;
@@ -80,9 +80,9 @@ int G6DOFRotationalLimitMotor3DSW::testLimitValue(real_t test_value) {
return 0;
}
-real_t G6DOFRotationalLimitMotor3DSW::solveAngularLimits(
+real_t GodotG6DOFRotationalLimitMotor3D::solveAngularLimits(
real_t timeStep, Vector3 &axis, real_t jacDiagABInv,
- Body3DSW *body0, Body3DSW *body1, bool p_body0_dynamic, bool p_body1_dynamic) {
+ GodotBody3D *body0, GodotBody3D *body1, bool p_body0_dynamic, bool p_body1_dynamic) {
if (!needApplyTorques()) {
return 0.0f;
}
@@ -148,14 +148,13 @@ real_t G6DOFRotationalLimitMotor3DSW::solveAngularLimits(
return clippedMotorImpulse;
}
-//////////////////////////// End G6DOFRotationalLimitMotorSW ////////////////////////////////////
+//////////////////////////// GodotG6DOFTranslationalLimitMotor3D ////////////////////////////////////
-//////////////////////////// G6DOFTranslationalLimitMotorSW ////////////////////////////////////
-real_t G6DOFTranslationalLimitMotor3DSW::solveLinearAxis(
+real_t GodotG6DOFTranslationalLimitMotor3D::solveLinearAxis(
real_t timeStep,
real_t jacDiagABInv,
- Body3DSW *body1, const Vector3 &pointInA,
- Body3DSW *body2, const Vector3 &pointInB,
+ GodotBody3D *body1, const Vector3 &pointInA,
+ GodotBody3D *body2, const Vector3 &pointInB,
bool p_body1_dynamic, bool p_body2_dynamic,
int limit_index,
const Vector3 &axis_normal_on_a,
@@ -217,10 +216,10 @@ real_t G6DOFTranslationalLimitMotor3DSW::solveLinearAxis(
return normalImpulse;
}
-//////////////////////////// G6DOFTranslationalLimitMotorSW ////////////////////////////////////
+//////////////////////////// GodotGeneric6DOFJoint3D ////////////////////////////////////
-Generic6DOFJoint3DSW::Generic6DOFJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &frameInA, const Transform3D &frameInB, bool useLinearReferenceFrameA) :
- Joint3DSW(_arr, 2),
+GodotGeneric6DOFJoint3D::GodotGeneric6DOFJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &frameInA, const Transform3D &frameInB, bool useLinearReferenceFrameA) :
+ GodotJoint3D(_arr, 2),
m_frameInA(frameInA),
m_frameInB(frameInB),
m_useLinearReferenceFrameA(useLinearReferenceFrameA) {
@@ -230,7 +229,7 @@ Generic6DOFJoint3DSW::Generic6DOFJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const T
B->add_constraint(this, 1);
}
-void Generic6DOFJoint3DSW::calculateAngleInfo() {
+void GodotGeneric6DOFJoint3D::calculateAngleInfo() {
Basis relative_frame = m_calculatedTransformB.basis.inverse() * m_calculatedTransformA.basis;
m_calculatedAxisAngleDiff = relative_frame.get_euler_xyz();
@@ -270,17 +269,17 @@ void Generic6DOFJoint3DSW::calculateAngleInfo() {
*/
}
-void Generic6DOFJoint3DSW::calculateTransforms() {
+void GodotGeneric6DOFJoint3D::calculateTransforms() {
m_calculatedTransformA = A->get_transform() * m_frameInA;
m_calculatedTransformB = B->get_transform() * m_frameInB;
calculateAngleInfo();
}
-void Generic6DOFJoint3DSW::buildLinearJacobian(
- JacobianEntry3DSW &jacLinear, const Vector3 &normalWorld,
+void GodotGeneric6DOFJoint3D::buildLinearJacobian(
+ GodotJacobianEntry3D &jacLinear, const Vector3 &normalWorld,
const Vector3 &pivotAInW, const Vector3 &pivotBInW) {
- memnew_placement(&jacLinear, JacobianEntry3DSW(
+ memnew_placement(&jacLinear, GodotJacobianEntry3D(
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
pivotAInW - A->get_transform().origin - A->get_center_of_mass(),
@@ -292,16 +291,16 @@ void Generic6DOFJoint3DSW::buildLinearJacobian(
B->get_inv_mass()));
}
-void Generic6DOFJoint3DSW::buildAngularJacobian(
- JacobianEntry3DSW &jacAngular, const Vector3 &jointAxisW) {
- memnew_placement(&jacAngular, JacobianEntry3DSW(jointAxisW,
+void GodotGeneric6DOFJoint3D::buildAngularJacobian(
+ GodotJacobianEntry3D &jacAngular, const Vector3 &jointAxisW) {
+ memnew_placement(&jacAngular, GodotJacobianEntry3D(jointAxisW,
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
A->get_inv_inertia(),
B->get_inv_inertia()));
}
-bool Generic6DOFJoint3DSW::testAngularLimitMotor(int axis_index) {
+bool GodotGeneric6DOFJoint3D::testAngularLimitMotor(int axis_index) {
real_t angle = m_calculatedAxisAngleDiff[axis_index];
//test limits
@@ -309,7 +308,7 @@ bool Generic6DOFJoint3DSW::testAngularLimitMotor(int axis_index) {
return m_angularLimits[axis_index].needApplyTorques();
}
-bool Generic6DOFJoint3DSW::setup(real_t p_timestep) {
+bool GodotGeneric6DOFJoint3D::setup(real_t p_timestep) {
dynamic_A = (A->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
dynamic_B = (B->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
@@ -365,7 +364,7 @@ bool Generic6DOFJoint3DSW::setup(real_t p_timestep) {
return true;
}
-void Generic6DOFJoint3DSW::solve(real_t p_timestep) {
+void GodotGeneric6DOFJoint3D::solve(real_t p_timestep) {
m_timeStep = p_timestep;
//calculateTransforms();
@@ -414,19 +413,19 @@ void Generic6DOFJoint3DSW::solve(real_t p_timestep) {
}
}
-void Generic6DOFJoint3DSW::updateRHS(real_t timeStep) {
+void GodotGeneric6DOFJoint3D::updateRHS(real_t timeStep) {
(void)timeStep;
}
-Vector3 Generic6DOFJoint3DSW::getAxis(int axis_index) const {
+Vector3 GodotGeneric6DOFJoint3D::getAxis(int axis_index) const {
return m_calculatedAxis[axis_index];
}
-real_t Generic6DOFJoint3DSW::getAngle(int axis_index) const {
+real_t GodotGeneric6DOFJoint3D::getAngle(int axis_index) const {
return m_calculatedAxisAngleDiff[axis_index];
}
-void Generic6DOFJoint3DSW::calcAnchorPos() {
+void GodotGeneric6DOFJoint3D::calcAnchorPos() {
real_t imA = A->get_inv_mass();
real_t imB = B->get_inv_mass();
real_t weight;
@@ -438,9 +437,9 @@ void Generic6DOFJoint3DSW::calcAnchorPos() {
const Vector3 &pA = m_calculatedTransformA.origin;
const Vector3 &pB = m_calculatedTransformB.origin;
m_AnchorPos = pA * weight + pB * (real_t(1.0) - weight);
-} // Generic6DOFJointSW::calcAnchorPos()
+}
-void Generic6DOFJoint3DSW::set_param(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisParam p_param, real_t p_value) {
+void GodotGeneric6DOFJoint3D::set_param(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisParam p_param, real_t p_value) {
ERR_FAIL_INDEX(p_axis, 3);
switch (p_param) {
case PhysicsServer3D::G6DOF_JOINT_LINEAR_LOWER_LIMIT: {
@@ -527,7 +526,7 @@ void Generic6DOFJoint3DSW::set_param(Vector3::Axis p_axis, PhysicsServer3D::G6DO
}
}
-real_t Generic6DOFJoint3DSW::get_param(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisParam p_param) const {
+real_t GodotGeneric6DOFJoint3D::get_param(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisParam p_param) const {
ERR_FAIL_INDEX_V(p_axis, 3, 0);
switch (p_param) {
case PhysicsServer3D::G6DOF_JOINT_LINEAR_LOWER_LIMIT: {
@@ -615,7 +614,7 @@ real_t Generic6DOFJoint3DSW::get_param(Vector3::Axis p_axis, PhysicsServer3D::G6
return 0;
}
-void Generic6DOFJoint3DSW::set_flag(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisFlag p_flag, bool p_value) {
+void GodotGeneric6DOFJoint3D::set_flag(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisFlag p_flag, bool p_value) {
ERR_FAIL_INDEX(p_axis, 3);
switch (p_flag) {
@@ -642,7 +641,7 @@ void Generic6DOFJoint3DSW::set_flag(Vector3::Axis p_axis, PhysicsServer3D::G6DOF
}
}
-bool Generic6DOFJoint3DSW::get_flag(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisFlag p_flag) const {
+bool GodotGeneric6DOFJoint3D::get_flag(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisFlag p_flag) const {
ERR_FAIL_INDEX_V(p_axis, 3, 0);
switch (p_flag) {
case PhysicsServer3D::G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT: {
diff --git a/servers/physics_3d/joints/generic_6dof_joint_3d_sw.h b/servers/physics_3d/joints/godot_generic_6dof_joint_3d.h
index 6492e40393..729b3fa1f9 100644
--- a/servers/physics_3d/joints/generic_6dof_joint_3d_sw.h
+++ b/servers/physics_3d/joints/godot_generic_6dof_joint_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* generic_6dof_joint_3d_sw.h */
+/* godot_generic_6dof_joint_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -32,11 +32,11 @@
Adapted to Godot from the Bullet library.
*/
-#ifndef GENERIC_6DOF_JOINT_SW_H
-#define GENERIC_6DOF_JOINT_SW_H
+#ifndef GODOT_GENERIC_6DOF_JOINT_3D_H
+#define GODOT_GENERIC_6DOF_JOINT_3D_H
-#include "servers/physics_3d/joints/jacobian_entry_3d_sw.h"
-#include "servers/physics_3d/joints_3d_sw.h"
+#include "servers/physics_3d/godot_joint_3d.h"
+#include "servers/physics_3d/joints/godot_jacobian_entry_3d.h"
/*
Bullet Continuous Collision Detection and Physics Library
@@ -55,13 +55,13 @@ subject to the following restrictions:
/*
2007-09-09
-Generic6DOFJointSW Refactored by Francisco Le?n
+GodotGeneric6DOFJoint3D Refactored by Francisco Le?n
email: projectileman@yahoo.com
http://gimpact.sf.net
*/
//! Rotation Limit structure for generic joints
-class G6DOFRotationalLimitMotor3DSW {
+class GodotG6DOFRotationalLimitMotor3D {
public:
//! limit_parameters
//!@{
@@ -86,29 +86,25 @@ public:
real_t m_accumulatedImpulse = 0.0;
//!@}
- G6DOFRotationalLimitMotor3DSW() {}
+ GodotG6DOFRotationalLimitMotor3D() {}
- //! Is limited
bool isLimited() {
return (m_loLimit < m_hiLimit);
}
- //! Need apply correction
+ // Need apply correction.
bool needApplyTorques() {
return (m_enableMotor || m_currentLimit != 0);
}
- //! calculates error
- /*!
- calculates m_currentLimit and m_currentLimitError.
- */
+ // Calculates m_currentLimit and m_currentLimitError.
int testLimitValue(real_t test_value);
- //! apply the correction impulses for two bodies
- real_t solveAngularLimits(real_t timeStep, Vector3 &axis, real_t jacDiagABInv, Body3DSW *body0, Body3DSW *body1, bool p_body0_dynamic, bool p_body1_dynamic);
+ // Apply the correction impulses for two bodies.
+ real_t solveAngularLimits(real_t timeStep, Vector3 &axis, real_t jacDiagABInv, GodotBody3D *body0, GodotBody3D *body1, bool p_body0_dynamic, bool p_body1_dynamic);
};
-class G6DOFTranslationalLimitMotor3DSW {
+class GodotG6DOFTranslationalLimitMotor3D {
public:
Vector3 m_lowerLimit = Vector3(0.0, 0.0, 0.0); //!< the constraint lower limits
Vector3 m_upperLimit = Vector3(0.0, 0.0, 0.0); //!< the constraint upper limits
@@ -135,23 +131,23 @@ public:
real_t solveLinearAxis(
real_t timeStep,
real_t jacDiagABInv,
- Body3DSW *body1, const Vector3 &pointInA,
- Body3DSW *body2, const Vector3 &pointInB,
+ GodotBody3D *body1, const Vector3 &pointInA,
+ GodotBody3D *body2, const Vector3 &pointInB,
bool p_body1_dynamic, bool p_body2_dynamic,
int limit_index,
const Vector3 &axis_normal_on_a,
const Vector3 &anchorPos);
};
-class Generic6DOFJoint3DSW : public Joint3DSW {
+class GodotGeneric6DOFJoint3D : public GodotJoint3D {
protected:
union {
struct {
- Body3DSW *A;
- Body3DSW *B;
+ GodotBody3D *A;
+ GodotBody3D *B;
};
- Body3DSW *_arr[2] = { nullptr, nullptr };
+ GodotBody3D *_arr[2] = { nullptr, nullptr };
};
//! relative_frames
@@ -162,18 +158,18 @@ protected:
//! Jacobians
//!@{
- JacobianEntry3DSW m_jacLinear[3]; //!< 3 orthogonal linear constraints
- JacobianEntry3DSW m_jacAng[3]; //!< 3 orthogonal angular constraints
+ GodotJacobianEntry3D m_jacLinear[3]; //!< 3 orthogonal linear constraints
+ GodotJacobianEntry3D m_jacAng[3]; //!< 3 orthogonal angular constraints
//!@}
//! Linear_Limit_parameters
//!@{
- G6DOFTranslationalLimitMotor3DSW m_linearLimits;
+ GodotG6DOFTranslationalLimitMotor3D m_linearLimits;
//!@}
//! hinge_parameters
//!@{
- G6DOFRotationalLimitMotor3DSW m_angularLimits[3];
+ GodotG6DOFRotationalLimitMotor3D m_angularLimits[3];
//!@}
protected:
@@ -191,45 +187,35 @@ protected:
//!@}
- Generic6DOFJoint3DSW(Generic6DOFJoint3DSW const &) = delete;
- void operator=(Generic6DOFJoint3DSW const &) = delete;
+ GodotGeneric6DOFJoint3D(GodotGeneric6DOFJoint3D const &) = delete;
+ void operator=(GodotGeneric6DOFJoint3D const &) = delete;
void buildLinearJacobian(
- JacobianEntry3DSW &jacLinear, const Vector3 &normalWorld,
+ GodotJacobianEntry3D &jacLinear, const Vector3 &normalWorld,
const Vector3 &pivotAInW, const Vector3 &pivotBInW);
- void buildAngularJacobian(JacobianEntry3DSW &jacAngular, const Vector3 &jointAxisW);
+ void buildAngularJacobian(GodotJacobianEntry3D &jacAngular, const Vector3 &jointAxisW);
//! calcs the euler angles between the two bodies.
void calculateAngleInfo();
public:
- Generic6DOFJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &frameInA, const Transform3D &frameInB, bool useLinearReferenceFrameA);
+ GodotGeneric6DOFJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &frameInA, const Transform3D &frameInB, bool useLinearReferenceFrameA);
virtual PhysicsServer3D::JointType get_type() const override { return PhysicsServer3D::JOINT_TYPE_6DOF; }
virtual bool setup(real_t p_step) override;
virtual void solve(real_t p_step) override;
- //! Calcs global transform of the offsets
- /*!
- Calcs the global transform for the joint offset for body A an B, and also calcs the agle differences between the bodies.
- \sa Generic6DOFJointSW.getCalculatedTransformA , Generic6DOFJointSW.getCalculatedTransformB, Generic6DOFJointSW.calculateAngleInfo
- */
+ // Calcs the global transform for the joint offset for body A an B, and also calcs the angle differences between the bodies.
void calculateTransforms();
- //! Gets the global transform of the offset for body A
- /*!
- \sa Generic6DOFJointSW.getFrameOffsetA, Generic6DOFJointSW.getFrameOffsetB, Generic6DOFJointSW.calculateAngleInfo.
- */
+ // Gets the global transform of the offset for body A.
const Transform3D &getCalculatedTransformA() const {
return m_calculatedTransformA;
}
- //! Gets the global transform of the offset for body B
- /*!
- \sa Generic6DOFJointSW.getFrameOffsetA, Generic6DOFJointSW.getFrameOffsetB, Generic6DOFJointSW.calculateAngleInfo.
- */
+ // Gets the global transform of the offset for body B.
const Transform3D &getCalculatedTransformB() const {
return m_calculatedTransformB;
}
@@ -250,27 +236,16 @@ public:
return m_frameInB;
}
- //! performs Jacobian calculation, and also calculates angle differences and axis
-
+ // Performs Jacobian calculation, and also calculates angle differences and axis.
void updateRHS(real_t timeStep);
- //! Get the rotation axis in global coordinates
- /*!
- \pre Generic6DOFJointSW.buildJacobian must be called previously.
- */
+ // Get the rotation axis in global coordinates.
Vector3 getAxis(int axis_index) const;
- //! Get the relative Euler angle
- /*!
- \pre Generic6DOFJointSW.buildJacobian must be called previously.
- */
+ // Get the relative Euler angle.
real_t getAngle(int axis_index) const;
- //! Test angular limit.
- /*!
- Calculates angular correction and returns true if limit needs to be corrected.
- \pre Generic6DOFJointSW.buildJacobian must be called previously.
- */
+ // Calculates angular correction and returns true if limit needs to be corrected.
bool testAngularLimitMotor(int axis_index);
void setLinearLowerLimit(const Vector3 &linearLower) {
@@ -293,17 +268,17 @@ public:
m_angularLimits[2].m_hiLimit = angularUpper.z;
}
- //! Retrieves the angular limit information.
- G6DOFRotationalLimitMotor3DSW *getRotationalLimitMotor(int index) {
+ // Retrieves the angular limit information.
+ GodotG6DOFRotationalLimitMotor3D *getRotationalLimitMotor(int index) {
return &m_angularLimits[index];
}
- //! Retrieves the limit information.
- G6DOFTranslationalLimitMotor3DSW *getTranslationalLimitMotor() {
+ // Retrieves the limit information.
+ GodotG6DOFTranslationalLimitMotor3D *getTranslationalLimitMotor() {
return &m_linearLimits;
}
- //first 3 are linear, next 3 are angular
+ // First 3 are linear, next 3 are angular.
void setLimit(int axis, real_t lo, real_t hi) {
if (axis < 3) {
m_linearLimits.m_lowerLimit[axis] = lo;
@@ -328,10 +303,10 @@ public:
return m_angularLimits[limitIndex - 3].isLimited();
}
- const Body3DSW *getRigidBodyA() const {
+ const GodotBody3D *getRigidBodyA() const {
return A;
}
- const Body3DSW *getRigidBodyB() const {
+ const GodotBody3D *getRigidBodyB() const {
return B;
}
@@ -344,4 +319,4 @@ public:
bool get_flag(Vector3::Axis p_axis, PhysicsServer3D::G6DOFJointAxisFlag p_flag) const;
};
-#endif // GENERIC_6DOF_JOINT_SW_H
+#endif // GODOT_GENERIC_6DOF_JOINT_3D_H
diff --git a/servers/physics_3d/joints/hinge_joint_3d_sw.cpp b/servers/physics_3d/joints/godot_hinge_joint_3d.cpp
index a45fcf7eb5..7b7ca1b3ac 100644
--- a/servers/physics_3d/joints/hinge_joint_3d_sw.cpp
+++ b/servers/physics_3d/joints/godot_hinge_joint_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* hinge_joint_3d_sw.cpp */
+/* godot_hinge_joint_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -47,7 +47,7 @@ subject to the following restrictions:
3. This notice may not be removed or altered from any source distribution.
*/
-#include "hinge_joint_3d_sw.h"
+#include "godot_hinge_joint_3d.h"
static void plane_space(const Vector3 &n, Vector3 &p, Vector3 &q) {
if (Math::abs(n.z) > Math_SQRT12) {
@@ -67,8 +67,8 @@ static void plane_space(const Vector3 &n, Vector3 &p, Vector3 &q) {
}
}
-HingeJoint3DSW::HingeJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &frameA, const Transform3D &frameB) :
- Joint3DSW(_arr, 2) {
+GodotHingeJoint3D::GodotHingeJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &frameA, const Transform3D &frameB) :
+ GodotJoint3D(_arr, 2) {
A = rbA;
B = rbB;
@@ -83,9 +83,9 @@ HingeJoint3DSW::HingeJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &
B->add_constraint(this, 1);
}
-HingeJoint3DSW::HingeJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Vector3 &pivotInA, const Vector3 &pivotInB,
+GodotHingeJoint3D::GodotHingeJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Vector3 &pivotInA, const Vector3 &pivotInB,
const Vector3 &axisInA, const Vector3 &axisInB) :
- Joint3DSW(_arr, 2) {
+ GodotJoint3D(_arr, 2) {
A = rbA;
B = rbB;
@@ -124,7 +124,7 @@ HingeJoint3DSW::HingeJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Vector3 &pivo
B->add_constraint(this, 1);
}
-bool HingeJoint3DSW::setup(real_t p_step) {
+bool GodotHingeJoint3D::setup(real_t p_step) {
dynamic_A = (A->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
dynamic_B = (B->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
@@ -149,7 +149,7 @@ bool HingeJoint3DSW::setup(real_t p_step) {
plane_space(normal[0], normal[1], normal[2]);
for (int i = 0; i < 3; i++) {
- memnew_placement(&m_jac[i], JacobianEntry3DSW(
+ memnew_placement(&m_jac[i], GodotJacobianEntry3D(
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
pivotAInW - A->get_transform().origin - A->get_center_of_mass(),
@@ -175,19 +175,19 @@ bool HingeJoint3DSW::setup(real_t p_step) {
Vector3 jointAxis1 = A->get_transform().basis.xform(jointAxis1local);
Vector3 hingeAxisWorld = A->get_transform().basis.xform(m_rbAFrame.basis.get_axis(2));
- memnew_placement(&m_jacAng[0], JacobianEntry3DSW(jointAxis0,
+ memnew_placement(&m_jacAng[0], GodotJacobianEntry3D(jointAxis0,
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
A->get_inv_inertia(),
B->get_inv_inertia()));
- memnew_placement(&m_jacAng[1], JacobianEntry3DSW(jointAxis1,
+ memnew_placement(&m_jacAng[1], GodotJacobianEntry3D(jointAxis1,
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
A->get_inv_inertia(),
B->get_inv_inertia()));
- memnew_placement(&m_jacAng[2], JacobianEntry3DSW(hingeAxisWorld,
+ memnew_placement(&m_jacAng[2], GodotJacobianEntry3D(hingeAxisWorld,
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
A->get_inv_inertia(),
@@ -226,7 +226,7 @@ bool HingeJoint3DSW::setup(real_t p_step) {
return true;
}
-void HingeJoint3DSW::solve(real_t p_step) {
+void GodotHingeJoint3D::solve(real_t p_step) {
Vector3 pivotAInW = A->get_transform().xform(m_rbAFrame.origin);
Vector3 pivotBInW = B->get_transform().xform(m_rbBFrame.origin);
@@ -377,7 +377,7 @@ static _FORCE_INLINE_ real_t atan2fast(real_t y, real_t x) {
return (y < 0.0f) ? -angle : angle;
}
-real_t HingeJoint3DSW::get_hinge_angle() {
+real_t GodotHingeJoint3D::get_hinge_angle() {
const Vector3 refAxis0 = A->get_transform().basis.xform(m_rbAFrame.basis.get_axis(0));
const Vector3 refAxis1 = A->get_transform().basis.xform(m_rbAFrame.basis.get_axis(1));
const Vector3 swingAxis = B->get_transform().basis.xform(m_rbBFrame.basis.get_axis(1));
@@ -385,7 +385,7 @@ real_t HingeJoint3DSW::get_hinge_angle() {
return atan2fast(swingAxis.dot(refAxis0), swingAxis.dot(refAxis1));
}
-void HingeJoint3DSW::set_param(PhysicsServer3D::HingeJointParam p_param, real_t p_value) {
+void GodotHingeJoint3D::set_param(PhysicsServer3D::HingeJointParam p_param, real_t p_value) {
switch (p_param) {
case PhysicsServer3D::HINGE_JOINT_BIAS:
tau = p_value;
@@ -416,7 +416,7 @@ void HingeJoint3DSW::set_param(PhysicsServer3D::HingeJointParam p_param, real_t
}
}
-real_t HingeJoint3DSW::get_param(PhysicsServer3D::HingeJointParam p_param) const {
+real_t GodotHingeJoint3D::get_param(PhysicsServer3D::HingeJointParam p_param) const {
switch (p_param) {
case PhysicsServer3D::HINGE_JOINT_BIAS:
return tau;
@@ -441,7 +441,7 @@ real_t HingeJoint3DSW::get_param(PhysicsServer3D::HingeJointParam p_param) const
return 0;
}
-void HingeJoint3DSW::set_flag(PhysicsServer3D::HingeJointFlag p_flag, bool p_value) {
+void GodotHingeJoint3D::set_flag(PhysicsServer3D::HingeJointFlag p_flag, bool p_value) {
switch (p_flag) {
case PhysicsServer3D::HINGE_JOINT_FLAG_USE_LIMIT:
m_useLimit = p_value;
@@ -454,7 +454,7 @@ void HingeJoint3DSW::set_flag(PhysicsServer3D::HingeJointFlag p_flag, bool p_val
}
}
-bool HingeJoint3DSW::get_flag(PhysicsServer3D::HingeJointFlag p_flag) const {
+bool GodotHingeJoint3D::get_flag(PhysicsServer3D::HingeJointFlag p_flag) const {
switch (p_flag) {
case PhysicsServer3D::HINGE_JOINT_FLAG_USE_LIMIT:
return m_useLimit;
diff --git a/servers/physics_3d/joints/hinge_joint_3d_sw.h b/servers/physics_3d/joints/godot_hinge_joint_3d.h
index a4ceff9ffe..ff1fbe0f25 100644
--- a/servers/physics_3d/joints/hinge_joint_3d_sw.h
+++ b/servers/physics_3d/joints/godot_hinge_joint_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* hinge_joint_3d_sw.h */
+/* godot_hinge_joint_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -32,11 +32,11 @@
Adapted to Godot from the Bullet library.
*/
-#ifndef HINGE_JOINT_SW_H
-#define HINGE_JOINT_SW_H
+#ifndef GODOT_HINGE_JOINT_3D_H
+#define GODOT_HINGE_JOINT_3D_H
-#include "servers/physics_3d/joints/jacobian_entry_3d_sw.h"
-#include "servers/physics_3d/joints_3d_sw.h"
+#include "servers/physics_3d/godot_joint_3d.h"
+#include "servers/physics_3d/joints/godot_jacobian_entry_3d.h"
/*
Bullet Continuous Collision Detection and Physics Library
@@ -53,18 +53,18 @@ subject to the following restrictions:
3. This notice may not be removed or altered from any source distribution.
*/
-class HingeJoint3DSW : public Joint3DSW {
+class GodotHingeJoint3D : public GodotJoint3D {
union {
struct {
- Body3DSW *A;
- Body3DSW *B;
+ GodotBody3D *A;
+ GodotBody3D *B;
};
- Body3DSW *_arr[2] = {};
+ GodotBody3D *_arr[2] = {};
};
- JacobianEntry3DSW m_jac[3]; //3 orthogonal linear constraints
- JacobianEntry3DSW m_jacAng[3]; //2 orthogonal angular constraints+ 1 for limit/motor
+ GodotJacobianEntry3D m_jac[3]; //3 orthogonal linear constraints
+ GodotJacobianEntry3D m_jacAng[3]; //2 orthogonal angular constraints+ 1 for limit/motor
Transform3D m_rbAFrame; // constraint axii. Assumes z is hinge axis.
Transform3D m_rbBFrame;
@@ -109,8 +109,8 @@ public:
void set_flag(PhysicsServer3D::HingeJointFlag p_flag, bool p_value);
bool get_flag(PhysicsServer3D::HingeJointFlag p_flag) const;
- HingeJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &frameA, const Transform3D &frameB);
- HingeJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Vector3 &pivotInA, const Vector3 &pivotInB, const Vector3 &axisInA, const Vector3 &axisInB);
+ GodotHingeJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &frameA, const Transform3D &frameB);
+ GodotHingeJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Vector3 &pivotInA, const Vector3 &pivotInB, const Vector3 &axisInA, const Vector3 &axisInB);
};
-#endif // HINGE_JOINT_SW_H
+#endif // GODOT_HINGE_JOINT_3D_H
diff --git a/servers/physics_3d/joints/jacobian_entry_3d_sw.h b/servers/physics_3d/joints/godot_jacobian_entry_3d.h
index 7294ff78e3..90a77a9b61 100644
--- a/servers/physics_3d/joints/jacobian_entry_3d_sw.h
+++ b/servers/physics_3d/joints/godot_jacobian_entry_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* jacobian_entry_3d_sw.h */
+/* godot_jacobian_entry_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -32,8 +32,8 @@
Adapted to Godot from the Bullet library.
*/
-#ifndef JACOBIAN_ENTRY_SW_H
-#define JACOBIAN_ENTRY_SW_H
+#ifndef GODOT_JACOBIAN_ENTRY_3D_H
+#define GODOT_JACOBIAN_ENTRY_3D_H
/*
Bullet Continuous Collision Detection and Physics Library
@@ -52,11 +52,11 @@ subject to the following restrictions:
#include "core/math/transform_3d.h"
-class JacobianEntry3DSW {
+class GodotJacobianEntry3D {
public:
- JacobianEntry3DSW() {}
+ GodotJacobianEntry3D() {}
//constraint between two different rigidbodies
- JacobianEntry3DSW(
+ GodotJacobianEntry3D(
const Basis &world2A,
const Basis &world2B,
const Vector3 &rel_pos1, const Vector3 &rel_pos2,
@@ -76,7 +76,7 @@ public:
}
//angular constraint between two different rigidbodies
- JacobianEntry3DSW(const Vector3 &jointAxis,
+ GodotJacobianEntry3D(const Vector3 &jointAxis,
const Basis &world2A,
const Basis &world2B,
const Vector3 &inertiaInvA,
@@ -92,7 +92,7 @@ public:
}
//angular constraint between two different rigidbodies
- JacobianEntry3DSW(const Vector3 &axisInA,
+ GodotJacobianEntry3D(const Vector3 &axisInA,
const Vector3 &axisInB,
const Vector3 &inertiaInvA,
const Vector3 &inertiaInvB) :
@@ -107,7 +107,7 @@ public:
}
//constraint on one rigidbody
- JacobianEntry3DSW(
+ GodotJacobianEntry3D(
const Basis &world2A,
const Vector3 &rel_pos1, const Vector3 &rel_pos2,
const Vector3 &jointAxis,
@@ -126,16 +126,16 @@ public:
real_t getDiagonal() const { return m_Adiag; }
// for two constraints on the same rigidbody (for example vehicle friction)
- real_t getNonDiagonal(const JacobianEntry3DSW &jacB, const real_t massInvA) const {
- const JacobianEntry3DSW &jacA = *this;
+ real_t getNonDiagonal(const GodotJacobianEntry3D &jacB, const real_t massInvA) const {
+ const GodotJacobianEntry3D &jacA = *this;
real_t lin = massInvA * jacA.m_linearJointAxis.dot(jacB.m_linearJointAxis);
real_t ang = jacA.m_0MinvJt.dot(jacB.m_aJ);
return lin + ang;
}
// for two constraints on sharing two same rigidbodies (for example two contact points between two rigidbodies)
- real_t getNonDiagonal(const JacobianEntry3DSW &jacB, const real_t massInvA, const real_t massInvB) const {
- const JacobianEntry3DSW &jacA = *this;
+ real_t getNonDiagonal(const GodotJacobianEntry3D &jacB, const real_t massInvA, const real_t massInvB) const {
+ const GodotJacobianEntry3D &jacA = *this;
Vector3 lin = jacA.m_linearJointAxis * jacB.m_linearJointAxis;
Vector3 ang0 = jacA.m_0MinvJt * jacB.m_aJ;
Vector3 ang1 = jacA.m_1MinvJt * jacB.m_bJ;
@@ -166,4 +166,4 @@ public:
real_t m_Adiag = 1.0;
};
-#endif // JACOBIAN_ENTRY_SW_H
+#endif // GODOT_JACOBIAN_ENTRY_3D_H
diff --git a/servers/physics_3d/joints/pin_joint_3d_sw.cpp b/servers/physics_3d/joints/godot_pin_joint_3d.cpp
index f41151ec0e..10d52ad5e9 100644
--- a/servers/physics_3d/joints/pin_joint_3d_sw.cpp
+++ b/servers/physics_3d/joints/godot_pin_joint_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* pin_joint_3d_sw.cpp */
+/* godot_pin_joint_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -47,9 +47,9 @@ subject to the following restrictions:
3. This notice may not be removed or altered from any source distribution.
*/
-#include "pin_joint_3d_sw.h"
+#include "godot_pin_joint_3d.h"
-bool PinJoint3DSW::setup(real_t p_step) {
+bool GodotPinJoint3D::setup(real_t p_step) {
dynamic_A = (A->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
dynamic_B = (B->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
@@ -63,7 +63,7 @@ bool PinJoint3DSW::setup(real_t p_step) {
for (int i = 0; i < 3; i++) {
normal[i] = 1;
- memnew_placement(&m_jac[i], JacobianEntry3DSW(
+ memnew_placement(&m_jac[i], GodotJacobianEntry3D(
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
A->get_transform().xform(m_pivotInA) - A->get_transform().origin - A->get_center_of_mass(),
@@ -79,7 +79,7 @@ bool PinJoint3DSW::setup(real_t p_step) {
return true;
}
-void PinJoint3DSW::solve(real_t p_step) {
+void GodotPinJoint3D::solve(real_t p_step) {
Vector3 pivotAInW = A->get_transform().xform(m_pivotInA);
Vector3 pivotBInW = B->get_transform().xform(m_pivotInB);
@@ -137,7 +137,7 @@ void PinJoint3DSW::solve(real_t p_step) {
}
}
-void PinJoint3DSW::set_param(PhysicsServer3D::PinJointParam p_param, real_t p_value) {
+void GodotPinJoint3D::set_param(PhysicsServer3D::PinJointParam p_param, real_t p_value) {
switch (p_param) {
case PhysicsServer3D::PIN_JOINT_BIAS:
m_tau = p_value;
@@ -151,7 +151,7 @@ void PinJoint3DSW::set_param(PhysicsServer3D::PinJointParam p_param, real_t p_va
}
}
-real_t PinJoint3DSW::get_param(PhysicsServer3D::PinJointParam p_param) const {
+real_t GodotPinJoint3D::get_param(PhysicsServer3D::PinJointParam p_param) const {
switch (p_param) {
case PhysicsServer3D::PIN_JOINT_BIAS:
return m_tau;
@@ -164,8 +164,8 @@ real_t PinJoint3DSW::get_param(PhysicsServer3D::PinJointParam p_param) const {
return 0;
}
-PinJoint3DSW::PinJoint3DSW(Body3DSW *p_body_a, const Vector3 &p_pos_a, Body3DSW *p_body_b, const Vector3 &p_pos_b) :
- Joint3DSW(_arr, 2) {
+GodotPinJoint3D::GodotPinJoint3D(GodotBody3D *p_body_a, const Vector3 &p_pos_a, GodotBody3D *p_body_b, const Vector3 &p_pos_b) :
+ GodotJoint3D(_arr, 2) {
A = p_body_a;
B = p_body_b;
m_pivotInA = p_pos_a;
@@ -175,5 +175,5 @@ PinJoint3DSW::PinJoint3DSW(Body3DSW *p_body_a, const Vector3 &p_pos_a, Body3DSW
B->add_constraint(this, 1);
}
-PinJoint3DSW::~PinJoint3DSW() {
+GodotPinJoint3D::~GodotPinJoint3D() {
}
diff --git a/servers/physics_3d/joints/pin_joint_3d_sw.h b/servers/physics_3d/joints/godot_pin_joint_3d.h
index 79af48f2a5..17e2e6e973 100644
--- a/servers/physics_3d/joints/pin_joint_3d_sw.h
+++ b/servers/physics_3d/joints/godot_pin_joint_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* pin_joint_3d_sw.h */
+/* godot_pin_joint_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -32,11 +32,11 @@
Adapted to Godot from the Bullet library.
*/
-#ifndef PIN_JOINT_SW_H
-#define PIN_JOINT_SW_H
+#ifndef GODOT_PIN_JOINT_3D_H
+#define GODOT_PIN_JOINT_3D_H
-#include "servers/physics_3d/joints/jacobian_entry_3d_sw.h"
-#include "servers/physics_3d/joints_3d_sw.h"
+#include "servers/physics_3d/godot_joint_3d.h"
+#include "servers/physics_3d/joints/godot_jacobian_entry_3d.h"
/*
Bullet Continuous Collision Detection and Physics Library
@@ -53,14 +53,14 @@ subject to the following restrictions:
3. This notice may not be removed or altered from any source distribution.
*/
-class PinJoint3DSW : public Joint3DSW {
+class GodotPinJoint3D : public GodotJoint3D {
union {
struct {
- Body3DSW *A;
- Body3DSW *B;
+ GodotBody3D *A;
+ GodotBody3D *B;
};
- Body3DSW *_arr[2] = {};
+ GodotBody3D *_arr[2] = {};
};
real_t m_tau = 0.3; //bias
@@ -68,7 +68,7 @@ class PinJoint3DSW : public Joint3DSW {
real_t m_impulseClamp = 0.0;
real_t m_appliedImpulse = 0.0;
- JacobianEntry3DSW m_jac[3] = {}; //3 orthogonal linear constraints
+ GodotJacobianEntry3D m_jac[3] = {}; //3 orthogonal linear constraints
Vector3 m_pivotInA;
Vector3 m_pivotInB;
@@ -88,8 +88,8 @@ public:
Vector3 get_position_a() { return m_pivotInA; }
Vector3 get_position_b() { return m_pivotInB; }
- PinJoint3DSW(Body3DSW *p_body_a, const Vector3 &p_pos_a, Body3DSW *p_body_b, const Vector3 &p_pos_b);
- ~PinJoint3DSW();
+ GodotPinJoint3D(GodotBody3D *p_body_a, const Vector3 &p_pos_a, GodotBody3D *p_body_b, const Vector3 &p_pos_b);
+ ~GodotPinJoint3D();
};
-#endif // PIN_JOINT_SW_H
+#endif // GODOT_PIN_JOINT_3D_H
diff --git a/servers/physics_3d/joints/slider_joint_3d_sw.cpp b/servers/physics_3d/joints/godot_slider_joint_3d.cpp
index e10ed436d5..3be111ac92 100644
--- a/servers/physics_3d/joints/slider_joint_3d_sw.cpp
+++ b/servers/physics_3d/joints/godot_slider_joint_3d.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* slider_joint_3d_sw.cpp */
+/* godot_slider_joint_3d.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -53,7 +53,7 @@ April 04, 2008
*/
-#include "slider_joint_3d_sw.h"
+#include "godot_slider_joint_3d.h"
//-----------------------------------------------------------------------------
@@ -76,8 +76,8 @@ static _FORCE_INLINE_ real_t atan2fast(real_t y, real_t x) {
//-----------------------------------------------------------------------------
-SliderJoint3DSW::SliderJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &frameInA, const Transform3D &frameInB) :
- Joint3DSW(_arr, 2),
+GodotSliderJoint3D::GodotSliderJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &frameInA, const Transform3D &frameInB) :
+ GodotJoint3D(_arr, 2),
m_frameInA(frameInA),
m_frameInB(frameInB) {
A = rbA;
@@ -85,11 +85,11 @@ SliderJoint3DSW::SliderJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D
A->add_constraint(this, 0);
B->add_constraint(this, 1);
-} // SliderJointSW::SliderJointSW()
+}
//-----------------------------------------------------------------------------
-bool SliderJoint3DSW::setup(real_t p_step) {
+bool GodotSliderJoint3D::setup(real_t p_step) {
dynamic_A = (A->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
dynamic_B = (B->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
@@ -112,7 +112,7 @@ bool SliderJoint3DSW::setup(real_t p_step) {
//linear part
for (i = 0; i < 3; i++) {
normalWorld = m_calculatedTransformA.basis.get_axis(i);
- memnew_placement(&m_jacLin[i], JacobianEntry3DSW(
+ memnew_placement(&m_jacLin[i], GodotJacobianEntry3D(
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
m_relPosA - A->get_center_of_mass(),
@@ -129,7 +129,7 @@ bool SliderJoint3DSW::setup(real_t p_step) {
// angular part
for (i = 0; i < 3; i++) {
normalWorld = m_calculatedTransformA.basis.get_axis(i);
- memnew_placement(&m_jacAng[i], JacobianEntry3DSW(
+ memnew_placement(&m_jacAng[i], GodotJacobianEntry3D(
normalWorld,
A->get_principal_inertia_axes().transposed(),
B->get_principal_inertia_axes().transposed(),
@@ -144,11 +144,11 @@ bool SliderJoint3DSW::setup(real_t p_step) {
m_accumulatedAngMotorImpulse = real_t(0.0);
return true;
-} // SliderJointSW::buildJacobianInt()
+}
//-----------------------------------------------------------------------------
-void SliderJoint3DSW::solve(real_t p_step) {
+void GodotSliderJoint3D::solve(real_t p_step) {
int i;
// linear
Vector3 velA = A->get_velocity_in_local_point(m_relPosA);
@@ -284,13 +284,11 @@ void SliderJoint3DSW::solve(real_t p_step) {
}
}
}
-} // SliderJointSW::solveConstraint()
-
-//-----------------------------------------------------------------------------
+}
//-----------------------------------------------------------------------------
-void SliderJoint3DSW::calculateTransforms() {
+void GodotSliderJoint3D::calculateTransforms() {
m_calculatedTransformA = A->get_transform() * m_frameInA;
m_calculatedTransformB = B->get_transform() * m_frameInB;
m_realPivotAInW = m_calculatedTransformA.origin;
@@ -305,11 +303,11 @@ void SliderJoint3DSW::calculateTransforms() {
normalWorld = m_calculatedTransformA.basis.get_axis(i);
m_depth[i] = m_delta.dot(normalWorld);
}
-} // SliderJointSW::calculateTransforms()
+}
//-----------------------------------------------------------------------------
-void SliderJoint3DSW::testLinLimits() {
+void GodotSliderJoint3D::testLinLimits() {
m_solveLinLim = false;
m_linPos = m_depth[0];
if (m_lowerLinLimit <= m_upperLinLimit) {
@@ -325,11 +323,11 @@ void SliderJoint3DSW::testLinLimits() {
} else {
m_depth[0] = real_t(0.);
}
-} // SliderJointSW::testLinLimits()
+}
//-----------------------------------------------------------------------------
-void SliderJoint3DSW::testAngLimits() {
+void GodotSliderJoint3D::testAngLimits() {
m_angDepth = real_t(0.);
m_solveAngLim = false;
if (m_lowerAngLimit <= m_upperAngLimit) {
@@ -345,26 +343,26 @@ void SliderJoint3DSW::testAngLimits() {
m_solveAngLim = true;
}
}
-} // SliderJointSW::testAngLimits()
+}
//-----------------------------------------------------------------------------
-Vector3 SliderJoint3DSW::getAncorInA() {
+Vector3 GodotSliderJoint3D::getAncorInA() {
Vector3 ancorInA;
ancorInA = m_realPivotAInW + (m_lowerLinLimit + m_upperLinLimit) * real_t(0.5) * m_sliderAxis;
ancorInA = A->get_transform().inverse().xform(ancorInA);
return ancorInA;
-} // SliderJointSW::getAncorInA()
+}
//-----------------------------------------------------------------------------
-Vector3 SliderJoint3DSW::getAncorInB() {
+Vector3 GodotSliderJoint3D::getAncorInB() {
Vector3 ancorInB;
ancorInB = m_frameInB.origin;
return ancorInB;
-} // SliderJointSW::getAncorInB();
+}
-void SliderJoint3DSW::set_param(PhysicsServer3D::SliderJointParam p_param, real_t p_value) {
+void GodotSliderJoint3D::set_param(PhysicsServer3D::SliderJointParam p_param, real_t p_value) {
switch (p_param) {
case PhysicsServer3D::SLIDER_JOINT_LINEAR_LIMIT_UPPER:
m_upperLinLimit = p_value;
@@ -439,7 +437,7 @@ void SliderJoint3DSW::set_param(PhysicsServer3D::SliderJointParam p_param, real_
}
}
-real_t SliderJoint3DSW::get_param(PhysicsServer3D::SliderJointParam p_param) const {
+real_t GodotSliderJoint3D::get_param(PhysicsServer3D::SliderJointParam p_param) const {
switch (p_param) {
case PhysicsServer3D::SLIDER_JOINT_LINEAR_LIMIT_UPPER:
return m_upperLinLimit;
diff --git a/servers/physics_3d/joints/slider_joint_3d_sw.h b/servers/physics_3d/joints/godot_slider_joint_3d.h
index d32ad9469e..9baaf1fa40 100644
--- a/servers/physics_3d/joints/slider_joint_3d_sw.h
+++ b/servers/physics_3d/joints/godot_slider_joint_3d.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* slider_joint_3d_sw.h */
+/* godot_slider_joint_3d.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -32,11 +32,11 @@
Adapted to Godot from the Bullet library.
*/
-#ifndef SLIDER_JOINT_SW_H
-#define SLIDER_JOINT_SW_H
+#ifndef GODOT_SLIDER_JOINT_3D_H
+#define GODOT_SLIDER_JOINT_3D_H
-#include "servers/physics_3d/joints/jacobian_entry_3d_sw.h"
-#include "servers/physics_3d/joints_3d_sw.h"
+#include "servers/physics_3d/godot_joint_3d.h"
+#include "servers/physics_3d/joints/godot_jacobian_entry_3d.h"
/*
Bullet Continuous Collision Detection and Physics Library
@@ -65,15 +65,15 @@ April 04, 2008
//-----------------------------------------------------------------------------
-class SliderJoint3DSW : public Joint3DSW {
+class GodotSliderJoint3D : public GodotJoint3D {
protected:
union {
struct {
- Body3DSW *A;
- Body3DSW *B;
+ GodotBody3D *A;
+ GodotBody3D *B;
};
- Body3DSW *_arr[2] = { nullptr, nullptr };
+ GodotBody3D *_arr[2] = { nullptr, nullptr };
};
Transform3D m_frameInA;
@@ -114,10 +114,10 @@ protected:
bool m_solveLinLim = false;
bool m_solveAngLim = false;
- JacobianEntry3DSW m_jacLin[3] = {};
+ GodotJacobianEntry3D m_jacLin[3] = {};
real_t m_jacLinDiagABInv[3] = {};
- JacobianEntry3DSW m_jacAng[3] = {};
+ GodotJacobianEntry3D m_jacAng[3] = {};
real_t m_timeStep = 0.0;
Transform3D m_calculatedTransformA;
@@ -149,13 +149,13 @@ protected:
public:
// constructors
- SliderJoint3DSW(Body3DSW *rbA, Body3DSW *rbB, const Transform3D &frameInA, const Transform3D &frameInB);
+ GodotSliderJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &frameInA, const Transform3D &frameInB);
//SliderJointSW();
// overrides
// access
- const Body3DSW *getRigidBodyA() const { return A; }
- const Body3DSW *getRigidBodyB() const { return B; }
+ const GodotBody3D *getRigidBodyA() const { return A; }
+ const GodotBody3D *getRigidBodyB() const { return B; }
const Transform3D &getCalculatedTransformA() const { return m_calculatedTransformA; }
const Transform3D &getCalculatedTransformB() const { return m_calculatedTransformB; }
const Transform3D &getFrameOffsetA() const { return m_frameInA; }
@@ -243,4 +243,4 @@ public:
virtual PhysicsServer3D::JointType get_type() const override { return PhysicsServer3D::JOINT_TYPE_SLIDER; }
};
-#endif // SLIDER_JOINT_SW_H
+#endif // GODOT_SLIDER_JOINT_3D_H
diff --git a/servers/physics_3d/physics_server_3d_sw.cpp b/servers/physics_3d/physics_server_3d_sw.cpp
deleted file mode 100644
index b16e199a03..0000000000
--- a/servers/physics_3d/physics_server_3d_sw.cpp
+++ /dev/null
@@ -1,1748 +0,0 @@
-/*************************************************************************/
-/* physics_server_3d_sw.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (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 "physics_server_3d_sw.h"
-
-#include "body_direct_state_3d_sw.h"
-#include "broad_phase_3d_bvh.h"
-#include "core/debugger/engine_debugger.h"
-#include "core/os/os.h"
-#include "joints/cone_twist_joint_3d_sw.h"
-#include "joints/generic_6dof_joint_3d_sw.h"
-#include "joints/hinge_joint_3d_sw.h"
-#include "joints/pin_joint_3d_sw.h"
-#include "joints/slider_joint_3d_sw.h"
-
-#define FLUSH_QUERY_CHECK(m_object) \
- ERR_FAIL_COND_MSG(m_object->get_space() && flushing_queries, "Can't change this state while flushing queries. Use call_deferred() or set_deferred() to change monitoring state instead.");
-
-RID PhysicsServer3DSW::world_boundary_shape_create() {
- Shape3DSW *shape = memnew(WorldBoundaryShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::separation_ray_shape_create() {
- Shape3DSW *shape = memnew(SeparationRayShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::sphere_shape_create() {
- Shape3DSW *shape = memnew(SphereShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::box_shape_create() {
- Shape3DSW *shape = memnew(BoxShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::capsule_shape_create() {
- Shape3DSW *shape = memnew(CapsuleShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::cylinder_shape_create() {
- Shape3DSW *shape = memnew(CylinderShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::convex_polygon_shape_create() {
- Shape3DSW *shape = memnew(ConvexPolygonShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::concave_polygon_shape_create() {
- Shape3DSW *shape = memnew(ConcavePolygonShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::heightmap_shape_create() {
- Shape3DSW *shape = memnew(HeightMapShape3DSW);
- RID rid = shape_owner.make_rid(shape);
- shape->set_self(rid);
- return rid;
-}
-RID PhysicsServer3DSW::custom_shape_create() {
- ERR_FAIL_V(RID());
-}
-
-void PhysicsServer3DSW::shape_set_data(RID p_shape, const Variant &p_data) {
- Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
- shape->set_data(p_data);
-};
-
-void PhysicsServer3DSW::shape_set_custom_solver_bias(RID p_shape, real_t p_bias) {
- Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
- shape->set_custom_bias(p_bias);
-}
-
-PhysicsServer3D::ShapeType PhysicsServer3DSW::shape_get_type(RID p_shape) const {
- const Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND_V(!shape, SHAPE_CUSTOM);
- return shape->get_type();
-};
-
-Variant PhysicsServer3DSW::shape_get_data(RID p_shape) const {
- const Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND_V(!shape, Variant());
- ERR_FAIL_COND_V(!shape->is_configured(), Variant());
- return shape->get_data();
-};
-
-void PhysicsServer3DSW::shape_set_margin(RID p_shape, real_t p_margin) {
-}
-
-real_t PhysicsServer3DSW::shape_get_margin(RID p_shape) const {
- return 0.0;
-}
-
-real_t PhysicsServer3DSW::shape_get_custom_solver_bias(RID p_shape) const {
- const Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND_V(!shape, 0);
- return shape->get_custom_bias();
-}
-
-RID PhysicsServer3DSW::space_create() {
- Space3DSW *space = memnew(Space3DSW);
- RID id = space_owner.make_rid(space);
- space->set_self(id);
- RID area_id = area_create();
- Area3DSW *area = area_owner.get_or_null(area_id);
- ERR_FAIL_COND_V(!area, RID());
- space->set_default_area(area);
- area->set_space(space);
- area->set_priority(-1);
- RID sgb = body_create();
- body_set_space(sgb, id);
- body_set_mode(sgb, BODY_MODE_STATIC);
- space->set_static_global_body(sgb);
-
- return id;
-};
-
-void PhysicsServer3DSW::space_set_active(RID p_space, bool p_active) {
- Space3DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- if (p_active) {
- active_spaces.insert(space);
- } else {
- active_spaces.erase(space);
- }
-}
-
-bool PhysicsServer3DSW::space_is_active(RID p_space) const {
- const Space3DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, false);
-
- return active_spaces.has(space);
-}
-
-void PhysicsServer3DSW::space_set_param(RID p_space, SpaceParameter p_param, real_t p_value) {
- Space3DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
-
- space->set_param(p_param, p_value);
-}
-
-real_t PhysicsServer3DSW::space_get_param(RID p_space, SpaceParameter p_param) const {
- const Space3DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, 0);
- return space->get_param(p_param);
-}
-
-PhysicsDirectSpaceState3D *PhysicsServer3DSW::space_get_direct_state(RID p_space) {
- Space3DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, nullptr);
- ERR_FAIL_COND_V_MSG((using_threads && !doing_sync) || space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification.");
-
- return space->get_direct_state();
-}
-
-void PhysicsServer3DSW::space_set_debug_contacts(RID p_space, int p_max_contacts) {
- Space3DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- space->set_debug_contacts(p_max_contacts);
-}
-
-Vector<Vector3> PhysicsServer3DSW::space_get_contacts(RID p_space) const {
- Space3DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, Vector<Vector3>());
- return space->get_debug_contacts();
-}
-
-int PhysicsServer3DSW::space_get_contact_count(RID p_space) const {
- Space3DSW *space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND_V(!space, 0);
- return space->get_debug_contact_count();
-}
-
-RID PhysicsServer3DSW::area_create() {
- Area3DSW *area = memnew(Area3DSW);
- RID rid = area_owner.make_rid(area);
- area->set_self(rid);
- return rid;
-};
-
-void PhysicsServer3DSW::area_set_space(RID p_area, RID p_space) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- Space3DSW *space = nullptr;
- if (p_space.is_valid()) {
- space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- }
-
- if (area->get_space() == space) {
- return; //pointless
- }
-
- area->clear_constraints();
- area->set_space(space);
-};
-
-RID PhysicsServer3DSW::area_get_space(RID p_area) const {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, RID());
-
- Space3DSW *space = area->get_space();
- if (!space) {
- return RID();
- }
- return space->get_self();
-};
-
-void PhysicsServer3DSW::area_set_space_override_mode(RID p_area, AreaSpaceOverrideMode p_mode) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_space_override_mode(p_mode);
-}
-
-PhysicsServer3D::AreaSpaceOverrideMode PhysicsServer3DSW::area_get_space_override_mode(RID p_area) const {
- const Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, AREA_SPACE_OVERRIDE_DISABLED);
-
- return area->get_space_override_mode();
-}
-
-void PhysicsServer3DSW::area_add_shape(RID p_area, RID p_shape, const Transform3D &p_transform, bool p_disabled) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
-
- area->add_shape(shape, p_transform, p_disabled);
-}
-
-void PhysicsServer3DSW::area_set_shape(RID p_area, int p_shape_idx, RID p_shape) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
- ERR_FAIL_COND(!shape->is_configured());
-
- area->set_shape(p_shape_idx, shape);
-}
-
-void PhysicsServer3DSW::area_set_shape_transform(RID p_area, int p_shape_idx, const Transform3D &p_transform) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_shape_transform(p_shape_idx, p_transform);
-}
-
-int PhysicsServer3DSW::area_get_shape_count(RID p_area) const {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, -1);
-
- return area->get_shape_count();
-}
-
-RID PhysicsServer3DSW::area_get_shape(RID p_area, int p_shape_idx) const {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, RID());
-
- Shape3DSW *shape = area->get_shape(p_shape_idx);
- ERR_FAIL_COND_V(!shape, RID());
-
- return shape->get_self();
-}
-
-Transform3D PhysicsServer3DSW::area_get_shape_transform(RID p_area, int p_shape_idx) const {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, Transform3D());
-
- return area->get_shape_transform(p_shape_idx);
-}
-
-void PhysicsServer3DSW::area_remove_shape(RID p_area, int p_shape_idx) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->remove_shape(p_shape_idx);
-}
-
-void PhysicsServer3DSW::area_clear_shapes(RID p_area) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- while (area->get_shape_count()) {
- area->remove_shape(0);
- }
-}
-
-void PhysicsServer3DSW::area_set_shape_disabled(RID p_area, int p_shape_idx, bool p_disabled) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- ERR_FAIL_INDEX(p_shape_idx, area->get_shape_count());
- FLUSH_QUERY_CHECK(area);
- area->set_shape_disabled(p_shape_idx, p_disabled);
-}
-
-void PhysicsServer3DSW::area_attach_object_instance_id(RID p_area, ObjectID p_id) {
- if (space_owner.owns(p_area)) {
- Space3DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- area->set_instance_id(p_id);
-}
-
-ObjectID PhysicsServer3DSW::area_get_object_instance_id(RID p_area) const {
- if (space_owner.owns(p_area)) {
- Space3DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, ObjectID());
- return area->get_instance_id();
-}
-
-void PhysicsServer3DSW::area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value) {
- if (space_owner.owns(p_area)) {
- Space3DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- area->set_param(p_param, p_value);
-};
-
-void PhysicsServer3DSW::area_set_transform(RID p_area, const Transform3D &p_transform) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- area->set_transform(p_transform);
-};
-
-Variant PhysicsServer3DSW::area_get_param(RID p_area, AreaParameter p_param) const {
- if (space_owner.owns(p_area)) {
- Space3DSW *space = space_owner.get_or_null(p_area);
- p_area = space->get_default_area()->get_self();
- }
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, Variant());
-
- return area->get_param(p_param);
-};
-
-Transform3D PhysicsServer3DSW::area_get_transform(RID p_area) const {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND_V(!area, Transform3D());
-
- return area->get_transform();
-};
-
-void PhysicsServer3DSW::area_set_collision_layer(RID p_area, uint32_t p_layer) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_collision_layer(p_layer);
-}
-
-void PhysicsServer3DSW::area_set_collision_mask(RID p_area, uint32_t p_mask) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_collision_mask(p_mask);
-}
-
-void PhysicsServer3DSW::area_set_monitorable(RID p_area, bool p_monitorable) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
- FLUSH_QUERY_CHECK(area);
-
- area->set_monitorable(p_monitorable);
-}
-
-void PhysicsServer3DSW::area_set_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
-}
-
-void PhysicsServer3DSW::area_set_ray_pickable(RID p_area, bool p_enable) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_ray_pickable(p_enable);
-}
-
-void PhysicsServer3DSW::area_set_area_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
- Area3DSW *area = area_owner.get_or_null(p_area);
- ERR_FAIL_COND(!area);
-
- area->set_area_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
-}
-
-/* BODY API */
-
-RID PhysicsServer3DSW::body_create() {
- Body3DSW *body = memnew(Body3DSW);
- RID rid = body_owner.make_rid(body);
- body->set_self(rid);
- return rid;
-};
-
-void PhysicsServer3DSW::body_set_space(RID p_body, RID p_space) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- Space3DSW *space = nullptr;
- if (p_space.is_valid()) {
- space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- }
-
- if (body->get_space() == space) {
- return; //pointless
- }
-
- body->clear_constraint_map();
- body->set_space(space);
-};
-
-RID PhysicsServer3DSW::body_get_space(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, RID());
-
- Space3DSW *space = body->get_space();
- if (!space) {
- return RID();
- }
- return space->get_self();
-};
-
-void PhysicsServer3DSW::body_set_mode(RID p_body, BodyMode p_mode) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_mode(p_mode);
-};
-
-PhysicsServer3D::BodyMode PhysicsServer3DSW::body_get_mode(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, BODY_MODE_STATIC);
-
- return body->get_mode();
-};
-
-void PhysicsServer3DSW::body_add_shape(RID p_body, RID p_shape, const Transform3D &p_transform, bool p_disabled) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
-
- body->add_shape(shape, p_transform, p_disabled);
-}
-
-void PhysicsServer3DSW::body_set_shape(RID p_body, int p_shape_idx, RID p_shape) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- Shape3DSW *shape = shape_owner.get_or_null(p_shape);
- ERR_FAIL_COND(!shape);
- ERR_FAIL_COND(!shape->is_configured());
-
- body->set_shape(p_shape_idx, shape);
-}
-void PhysicsServer3DSW::body_set_shape_transform(RID p_body, int p_shape_idx, const Transform3D &p_transform) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_shape_transform(p_shape_idx, p_transform);
-}
-
-int PhysicsServer3DSW::body_get_shape_count(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, -1);
-
- return body->get_shape_count();
-}
-
-RID PhysicsServer3DSW::body_get_shape(RID p_body, int p_shape_idx) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, RID());
-
- Shape3DSW *shape = body->get_shape(p_shape_idx);
- ERR_FAIL_COND_V(!shape, RID());
-
- return shape->get_self();
-}
-
-void PhysicsServer3DSW::body_set_shape_disabled(RID p_body, int p_shape_idx, bool p_disabled) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
- FLUSH_QUERY_CHECK(body);
-
- body->set_shape_disabled(p_shape_idx, p_disabled);
-}
-
-Transform3D PhysicsServer3DSW::body_get_shape_transform(RID p_body, int p_shape_idx) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, Transform3D());
-
- return body->get_shape_transform(p_shape_idx);
-}
-
-void PhysicsServer3DSW::body_remove_shape(RID p_body, int p_shape_idx) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->remove_shape(p_shape_idx);
-}
-
-void PhysicsServer3DSW::body_clear_shapes(RID p_body) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- while (body->get_shape_count()) {
- body->remove_shape(0);
- }
-}
-
-void PhysicsServer3DSW::body_set_enable_continuous_collision_detection(RID p_body, bool p_enable) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_continuous_collision_detection(p_enable);
-}
-
-bool PhysicsServer3DSW::body_is_continuous_collision_detection_enabled(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, false);
-
- return body->is_continuous_collision_detection_enabled();
-}
-
-void PhysicsServer3DSW::body_set_collision_layer(RID p_body, uint32_t p_layer) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_collision_layer(p_layer);
- body->wakeup();
-}
-
-uint32_t PhysicsServer3DSW::body_get_collision_layer(RID p_body) const {
- const Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
-
- return body->get_collision_layer();
-}
-
-void PhysicsServer3DSW::body_set_collision_mask(RID p_body, uint32_t p_mask) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_collision_mask(p_mask);
- body->wakeup();
-}
-
-uint32_t PhysicsServer3DSW::body_get_collision_mask(RID p_body) const {
- const Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
-
- return body->get_collision_mask();
-}
-
-void PhysicsServer3DSW::body_attach_object_instance_id(RID p_body, ObjectID p_id) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- if (body) {
- body->set_instance_id(p_id);
- return;
- }
-
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- if (soft_body) {
- soft_body->set_instance_id(p_id);
- return;
- }
-
- ERR_FAIL_MSG("Invalid ID.");
-};
-
-ObjectID PhysicsServer3DSW::body_get_object_instance_id(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, ObjectID());
-
- return body->get_instance_id();
-};
-
-void PhysicsServer3DSW::body_set_user_flags(RID p_body, uint32_t p_flags) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-};
-
-uint32_t PhysicsServer3DSW::body_get_user_flags(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
-
- return 0;
-};
-
-void PhysicsServer3DSW::body_set_param(RID p_body, BodyParameter p_param, const Variant &p_value) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_param(p_param, p_value);
-};
-
-Variant PhysicsServer3DSW::body_get_param(RID p_body, BodyParameter p_param) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
-
- return body->get_param(p_param);
-};
-
-void PhysicsServer3DSW::body_reset_mass_properties(RID p_body) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- return body->reset_mass_properties();
-}
-
-void PhysicsServer3DSW::body_set_state(RID p_body, BodyState p_state, const Variant &p_variant) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_state(p_state, p_variant);
-};
-
-Variant PhysicsServer3DSW::body_get_state(RID p_body, BodyState p_state) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, Variant());
-
- return body->get_state(p_state);
-};
-
-void PhysicsServer3DSW::body_set_applied_force(RID p_body, const Vector3 &p_force) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_applied_force(p_force);
- body->wakeup();
-};
-
-Vector3 PhysicsServer3DSW::body_get_applied_force(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, Vector3());
- return body->get_applied_force();
-};
-
-void PhysicsServer3DSW::body_set_applied_torque(RID p_body, const Vector3 &p_torque) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_applied_torque(p_torque);
- body->wakeup();
-};
-
-Vector3 PhysicsServer3DSW::body_get_applied_torque(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, Vector3());
-
- return body->get_applied_torque();
-};
-
-void PhysicsServer3DSW::body_add_central_force(RID p_body, const Vector3 &p_force) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->add_central_force(p_force);
- body->wakeup();
-}
-
-void PhysicsServer3DSW::body_add_force(RID p_body, const Vector3 &p_force, const Vector3 &p_position) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->add_force(p_force, p_position);
- body->wakeup();
-};
-
-void PhysicsServer3DSW::body_add_torque(RID p_body, const Vector3 &p_torque) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->add_torque(p_torque);
- body->wakeup();
-};
-
-void PhysicsServer3DSW::body_apply_central_impulse(RID p_body, const Vector3 &p_impulse) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- _update_shapes();
-
- body->apply_central_impulse(p_impulse);
- body->wakeup();
-}
-
-void PhysicsServer3DSW::body_apply_impulse(RID p_body, const Vector3 &p_impulse, const Vector3 &p_position) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- _update_shapes();
-
- body->apply_impulse(p_impulse, p_position);
- body->wakeup();
-};
-
-void PhysicsServer3DSW::body_apply_torque_impulse(RID p_body, const Vector3 &p_impulse) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- _update_shapes();
-
- body->apply_torque_impulse(p_impulse);
- body->wakeup();
-};
-
-void PhysicsServer3DSW::body_set_axis_velocity(RID p_body, const Vector3 &p_axis_velocity) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- _update_shapes();
-
- Vector3 v = body->get_linear_velocity();
- Vector3 axis = p_axis_velocity.normalized();
- v -= axis * axis.dot(v);
- v += p_axis_velocity;
- body->set_linear_velocity(v);
- body->wakeup();
-};
-
-void PhysicsServer3DSW::body_set_axis_lock(RID p_body, BodyAxis p_axis, bool p_lock) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_axis_lock(p_axis, p_lock);
- body->wakeup();
-}
-
-bool PhysicsServer3DSW::body_is_axis_locked(RID p_body, BodyAxis p_axis) const {
- const Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
- return body->is_axis_locked(p_axis);
-}
-
-void PhysicsServer3DSW::body_add_collision_exception(RID p_body, RID p_body_b) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->add_exception(p_body_b);
- body->wakeup();
-};
-
-void PhysicsServer3DSW::body_remove_collision_exception(RID p_body, RID p_body_b) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->remove_exception(p_body_b);
- body->wakeup();
-};
-
-void PhysicsServer3DSW::body_get_collision_exceptions(RID p_body, List<RID> *p_exceptions) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- for (int i = 0; i < body->get_exceptions().size(); i++) {
- p_exceptions->push_back(body->get_exceptions()[i]);
- }
-};
-
-void PhysicsServer3DSW::body_set_contacts_reported_depth_threshold(RID p_body, real_t p_threshold) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-};
-
-real_t PhysicsServer3DSW::body_get_contacts_reported_depth_threshold(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, 0);
- return 0;
-};
-
-void PhysicsServer3DSW::body_set_omit_force_integration(RID p_body, bool p_omit) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
-
- body->set_omit_force_integration(p_omit);
-};
-
-bool PhysicsServer3DSW::body_is_omitting_force_integration(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, false);
- return body->get_omit_force_integration();
-};
-
-void PhysicsServer3DSW::body_set_max_contacts_reported(RID p_body, int p_contacts) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_max_contacts_reported(p_contacts);
-}
-
-int PhysicsServer3DSW::body_get_max_contacts_reported(RID p_body) const {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, -1);
- return body->get_max_contacts_reported();
-}
-
-void PhysicsServer3DSW::body_set_state_sync_callback(RID p_body, void *p_instance, BodyStateCallback p_callback) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_state_sync_callback(p_instance, p_callback);
-}
-
-void PhysicsServer3DSW::body_set_force_integration_callback(RID p_body, const Callable &p_callable, const Variant &p_udata) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_force_integration_callback(p_callable, p_udata);
-}
-
-void PhysicsServer3DSW::body_set_ray_pickable(RID p_body, bool p_enable) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!body);
- body->set_ray_pickable(p_enable);
-}
-
-bool PhysicsServer3DSW::body_test_motion(RID p_body, const MotionParameters &p_parameters, MotionResult *r_result) {
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!body, false);
- ERR_FAIL_COND_V(!body->get_space(), false);
- ERR_FAIL_COND_V(body->get_space()->is_locked(), false);
-
- _update_shapes();
-
- return body->get_space()->test_body_motion(body, p_parameters, r_result);
-}
-
-PhysicsDirectBodyState3D *PhysicsServer3DSW::body_get_direct_state(RID p_body) {
- ERR_FAIL_COND_V_MSG((using_threads && !doing_sync), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
-
- Body3DSW *body = body_owner.get_or_null(p_body);
- ERR_FAIL_NULL_V(body, nullptr);
-
- ERR_FAIL_NULL_V(body->get_space(), nullptr);
- ERR_FAIL_COND_V_MSG(body->get_space()->is_locked(), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
-
- return body->get_direct_state();
-}
-
-/* SOFT BODY */
-
-RID PhysicsServer3DSW::soft_body_create() {
- SoftBody3DSW *soft_body = memnew(SoftBody3DSW);
- RID rid = soft_body_owner.make_rid(soft_body);
- soft_body->set_self(rid);
- return rid;
-}
-
-void PhysicsServer3DSW::soft_body_update_rendering_server(RID p_body, RenderingServerHandler *p_rendering_server_handler) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->update_rendering_server(p_rendering_server_handler);
-}
-
-void PhysicsServer3DSW::soft_body_set_space(RID p_body, RID p_space) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- Space3DSW *space = nullptr;
- if (p_space.is_valid()) {
- space = space_owner.get_or_null(p_space);
- ERR_FAIL_COND(!space);
- }
-
- if (soft_body->get_space() == space) {
- return;
- }
-
- soft_body->set_space(space);
-}
-
-RID PhysicsServer3DSW::soft_body_get_space(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, RID());
-
- Space3DSW *space = soft_body->get_space();
- if (!space) {
- return RID();
- }
- return space->get_self();
-}
-
-void PhysicsServer3DSW::soft_body_set_collision_layer(RID p_body, uint32_t p_layer) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_collision_layer(p_layer);
-}
-
-uint32_t PhysicsServer3DSW::soft_body_get_collision_layer(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, 0);
-
- return soft_body->get_collision_layer();
-}
-
-void PhysicsServer3DSW::soft_body_set_collision_mask(RID p_body, uint32_t p_mask) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_collision_mask(p_mask);
-}
-
-uint32_t PhysicsServer3DSW::soft_body_get_collision_mask(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, 0);
-
- return soft_body->get_collision_mask();
-}
-
-void PhysicsServer3DSW::soft_body_add_collision_exception(RID p_body, RID p_body_b) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->add_exception(p_body_b);
-}
-
-void PhysicsServer3DSW::soft_body_remove_collision_exception(RID p_body, RID p_body_b) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->remove_exception(p_body_b);
-}
-
-void PhysicsServer3DSW::soft_body_get_collision_exceptions(RID p_body, List<RID> *p_exceptions) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- for (int i = 0; i < soft_body->get_exceptions().size(); i++) {
- p_exceptions->push_back(soft_body->get_exceptions()[i]);
- }
-}
-
-void PhysicsServer3DSW::soft_body_set_state(RID p_body, BodyState p_state, const Variant &p_variant) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_state(p_state, p_variant);
-}
-
-Variant PhysicsServer3DSW::soft_body_get_state(RID p_body, BodyState p_state) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, Variant());
-
- return soft_body->get_state(p_state);
-}
-
-void PhysicsServer3DSW::soft_body_set_transform(RID p_body, const Transform3D &p_transform) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_state(BODY_STATE_TRANSFORM, p_transform);
-}
-
-void PhysicsServer3DSW::soft_body_set_ray_pickable(RID p_body, bool p_enable) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_ray_pickable(p_enable);
-}
-
-void PhysicsServer3DSW::soft_body_set_simulation_precision(RID p_body, int p_simulation_precision) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_iteration_count(p_simulation_precision);
-}
-
-int PhysicsServer3DSW::soft_body_get_simulation_precision(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, 0.f);
-
- return soft_body->get_iteration_count();
-}
-
-void PhysicsServer3DSW::soft_body_set_total_mass(RID p_body, real_t p_total_mass) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_total_mass(p_total_mass);
-}
-
-real_t PhysicsServer3DSW::soft_body_get_total_mass(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, 0.f);
-
- return soft_body->get_total_mass();
-}
-
-void PhysicsServer3DSW::soft_body_set_linear_stiffness(RID p_body, real_t p_stiffness) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_linear_stiffness(p_stiffness);
-}
-
-real_t PhysicsServer3DSW::soft_body_get_linear_stiffness(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, 0.f);
-
- return soft_body->get_linear_stiffness();
-}
-
-void PhysicsServer3DSW::soft_body_set_pressure_coefficient(RID p_body, real_t p_pressure_coefficient) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_pressure_coefficient(p_pressure_coefficient);
-}
-
-real_t PhysicsServer3DSW::soft_body_get_pressure_coefficient(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, 0.f);
-
- return soft_body->get_pressure_coefficient();
-}
-
-void PhysicsServer3DSW::soft_body_set_damping_coefficient(RID p_body, real_t p_damping_coefficient) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_damping_coefficient(p_damping_coefficient);
-}
-
-real_t PhysicsServer3DSW::soft_body_get_damping_coefficient(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, 0.f);
-
- return soft_body->get_damping_coefficient();
-}
-
-void PhysicsServer3DSW::soft_body_set_drag_coefficient(RID p_body, real_t p_drag_coefficient) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_drag_coefficient(p_drag_coefficient);
-}
-
-real_t PhysicsServer3DSW::soft_body_get_drag_coefficient(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, 0.f);
-
- return soft_body->get_drag_coefficient();
-}
-
-void PhysicsServer3DSW::soft_body_set_mesh(RID p_body, RID p_mesh) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_mesh(p_mesh);
-}
-
-AABB PhysicsServer3DSW::soft_body_get_bounds(RID p_body) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, AABB());
-
- return soft_body->get_bounds();
-}
-
-void PhysicsServer3DSW::soft_body_move_point(RID p_body, int p_point_index, const Vector3 &p_global_position) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->set_vertex_position(p_point_index, p_global_position);
-}
-
-Vector3 PhysicsServer3DSW::soft_body_get_point_global_position(RID p_body, int p_point_index) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, Vector3());
-
- return soft_body->get_vertex_position(p_point_index);
-}
-
-void PhysicsServer3DSW::soft_body_remove_all_pinned_points(RID p_body) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- soft_body->unpin_all_vertices();
-}
-
-void PhysicsServer3DSW::soft_body_pin_point(RID p_body, int p_point_index, bool p_pin) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND(!soft_body);
-
- if (p_pin) {
- soft_body->pin_vertex(p_point_index);
- } else {
- soft_body->unpin_vertex(p_point_index);
- }
-}
-
-bool PhysicsServer3DSW::soft_body_is_point_pinned(RID p_body, int p_point_index) const {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_body);
- ERR_FAIL_COND_V(!soft_body, false);
-
- return soft_body->is_vertex_pinned(p_point_index);
-}
-
-/* JOINT API */
-
-RID PhysicsServer3DSW::joint_create() {
- Joint3DSW *joint = memnew(Joint3DSW);
- RID rid = joint_owner.make_rid(joint);
- joint->set_self(rid);
- return rid;
-}
-
-void PhysicsServer3DSW::joint_clear(RID p_joint) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- if (joint->get_type() != JOINT_TYPE_MAX) {
- Joint3DSW *empty_joint = memnew(Joint3DSW);
- empty_joint->copy_settings_from(joint);
-
- joint_owner.replace(p_joint, empty_joint);
- memdelete(joint);
- }
-}
-
-void PhysicsServer3DSW::joint_make_pin(RID p_joint, RID p_body_A, const Vector3 &p_local_A, RID p_body_B, const Vector3 &p_local_B) {
- Body3DSW *body_A = body_owner.get_or_null(p_body_A);
- ERR_FAIL_COND(!body_A);
-
- if (!p_body_B.is_valid()) {
- ERR_FAIL_COND(!body_A->get_space());
- p_body_B = body_A->get_space()->get_static_global_body();
- }
-
- Body3DSW *body_B = body_owner.get_or_null(p_body_B);
- ERR_FAIL_COND(!body_B);
-
- ERR_FAIL_COND(body_A == body_B);
-
- Joint3DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint3DSW *joint = memnew(PinJoint3DSW(body_A, p_local_A, body_B, p_local_B));
-
- joint->copy_settings_from(prev_joint);
- joint_owner.replace(p_joint, joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer3DSW::pin_joint_set_param(RID p_joint, PinJointParam p_param, real_t p_value) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_PIN);
- PinJoint3DSW *pin_joint = static_cast<PinJoint3DSW *>(joint);
- pin_joint->set_param(p_param, p_value);
-}
-
-real_t PhysicsServer3DSW::pin_joint_get_param(RID p_joint, PinJointParam p_param) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, 0);
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_PIN, 0);
- PinJoint3DSW *pin_joint = static_cast<PinJoint3DSW *>(joint);
- return pin_joint->get_param(p_param);
-}
-
-void PhysicsServer3DSW::pin_joint_set_local_a(RID p_joint, const Vector3 &p_A) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_PIN);
- PinJoint3DSW *pin_joint = static_cast<PinJoint3DSW *>(joint);
- pin_joint->set_pos_a(p_A);
-}
-
-Vector3 PhysicsServer3DSW::pin_joint_get_local_a(RID p_joint) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, Vector3());
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_PIN, Vector3());
- PinJoint3DSW *pin_joint = static_cast<PinJoint3DSW *>(joint);
- return pin_joint->get_position_a();
-}
-
-void PhysicsServer3DSW::pin_joint_set_local_b(RID p_joint, const Vector3 &p_B) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_PIN);
- PinJoint3DSW *pin_joint = static_cast<PinJoint3DSW *>(joint);
- pin_joint->set_pos_b(p_B);
-}
-
-Vector3 PhysicsServer3DSW::pin_joint_get_local_b(RID p_joint) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, Vector3());
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_PIN, Vector3());
- PinJoint3DSW *pin_joint = static_cast<PinJoint3DSW *>(joint);
- return pin_joint->get_position_b();
-}
-
-void PhysicsServer3DSW::joint_make_hinge(RID p_joint, RID p_body_A, const Transform3D &p_frame_A, RID p_body_B, const Transform3D &p_frame_B) {
- Body3DSW *body_A = body_owner.get_or_null(p_body_A);
- ERR_FAIL_COND(!body_A);
-
- if (!p_body_B.is_valid()) {
- ERR_FAIL_COND(!body_A->get_space());
- p_body_B = body_A->get_space()->get_static_global_body();
- }
-
- Body3DSW *body_B = body_owner.get_or_null(p_body_B);
- ERR_FAIL_COND(!body_B);
-
- ERR_FAIL_COND(body_A == body_B);
-
- Joint3DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint3DSW *joint = memnew(HingeJoint3DSW(body_A, body_B, p_frame_A, p_frame_B));
-
- joint->copy_settings_from(prev_joint);
- joint_owner.replace(p_joint, joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer3DSW::joint_make_hinge_simple(RID p_joint, RID p_body_A, const Vector3 &p_pivot_A, const Vector3 &p_axis_A, RID p_body_B, const Vector3 &p_pivot_B, const Vector3 &p_axis_B) {
- Body3DSW *body_A = body_owner.get_or_null(p_body_A);
- ERR_FAIL_COND(!body_A);
-
- if (!p_body_B.is_valid()) {
- ERR_FAIL_COND(!body_A->get_space());
- p_body_B = body_A->get_space()->get_static_global_body();
- }
-
- Body3DSW *body_B = body_owner.get_or_null(p_body_B);
- ERR_FAIL_COND(!body_B);
-
- ERR_FAIL_COND(body_A == body_B);
-
- Joint3DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint3DSW *joint = memnew(HingeJoint3DSW(body_A, body_B, p_pivot_A, p_pivot_B, p_axis_A, p_axis_B));
-
- joint->copy_settings_from(prev_joint);
- joint_owner.replace(p_joint, joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer3DSW::hinge_joint_set_param(RID p_joint, HingeJointParam p_param, real_t p_value) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_HINGE);
- HingeJoint3DSW *hinge_joint = static_cast<HingeJoint3DSW *>(joint);
- hinge_joint->set_param(p_param, p_value);
-}
-
-real_t PhysicsServer3DSW::hinge_joint_get_param(RID p_joint, HingeJointParam p_param) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, 0);
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_HINGE, 0);
- HingeJoint3DSW *hinge_joint = static_cast<HingeJoint3DSW *>(joint);
- return hinge_joint->get_param(p_param);
-}
-
-void PhysicsServer3DSW::hinge_joint_set_flag(RID p_joint, HingeJointFlag p_flag, bool p_value) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_HINGE);
- HingeJoint3DSW *hinge_joint = static_cast<HingeJoint3DSW *>(joint);
- hinge_joint->set_flag(p_flag, p_value);
-}
-
-bool PhysicsServer3DSW::hinge_joint_get_flag(RID p_joint, HingeJointFlag p_flag) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, false);
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_HINGE, false);
- HingeJoint3DSW *hinge_joint = static_cast<HingeJoint3DSW *>(joint);
- return hinge_joint->get_flag(p_flag);
-}
-
-void PhysicsServer3DSW::joint_set_solver_priority(RID p_joint, int p_priority) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- joint->set_priority(p_priority);
-}
-
-int PhysicsServer3DSW::joint_get_solver_priority(RID p_joint) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, 0);
- return joint->get_priority();
-}
-
-void PhysicsServer3DSW::joint_disable_collisions_between_bodies(RID p_joint, const bool p_disable) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
-
- joint->disable_collisions_between_bodies(p_disable);
-
- if (2 == joint->get_body_count()) {
- Body3DSW *body_a = *joint->get_body_ptr();
- Body3DSW *body_b = *(joint->get_body_ptr() + 1);
-
- if (p_disable) {
- body_add_collision_exception(body_a->get_self(), body_b->get_self());
- body_add_collision_exception(body_b->get_self(), body_a->get_self());
- } else {
- body_remove_collision_exception(body_a->get_self(), body_b->get_self());
- body_remove_collision_exception(body_b->get_self(), body_a->get_self());
- }
- }
-}
-
-bool PhysicsServer3DSW::joint_is_disabled_collisions_between_bodies(RID p_joint) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, true);
-
- return joint->is_disabled_collisions_between_bodies();
-}
-
-PhysicsServer3DSW::JointType PhysicsServer3DSW::joint_get_type(RID p_joint) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, JOINT_TYPE_PIN);
- return joint->get_type();
-}
-
-void PhysicsServer3DSW::joint_make_slider(RID p_joint, RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
- Body3DSW *body_A = body_owner.get_or_null(p_body_A);
- ERR_FAIL_COND(!body_A);
-
- if (!p_body_B.is_valid()) {
- ERR_FAIL_COND(!body_A->get_space());
- p_body_B = body_A->get_space()->get_static_global_body();
- }
-
- Body3DSW *body_B = body_owner.get_or_null(p_body_B);
- ERR_FAIL_COND(!body_B);
-
- ERR_FAIL_COND(body_A == body_B);
-
- Joint3DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint3DSW *joint = memnew(SliderJoint3DSW(body_A, body_B, p_local_frame_A, p_local_frame_B));
-
- joint->copy_settings_from(prev_joint);
- joint_owner.replace(p_joint, joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer3DSW::slider_joint_set_param(RID p_joint, SliderJointParam p_param, real_t p_value) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_SLIDER);
- SliderJoint3DSW *slider_joint = static_cast<SliderJoint3DSW *>(joint);
- slider_joint->set_param(p_param, p_value);
-}
-
-real_t PhysicsServer3DSW::slider_joint_get_param(RID p_joint, SliderJointParam p_param) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, 0);
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_CONE_TWIST, 0);
- SliderJoint3DSW *slider_joint = static_cast<SliderJoint3DSW *>(joint);
- return slider_joint->get_param(p_param);
-}
-
-void PhysicsServer3DSW::joint_make_cone_twist(RID p_joint, RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
- Body3DSW *body_A = body_owner.get_or_null(p_body_A);
- ERR_FAIL_COND(!body_A);
-
- if (!p_body_B.is_valid()) {
- ERR_FAIL_COND(!body_A->get_space());
- p_body_B = body_A->get_space()->get_static_global_body();
- }
-
- Body3DSW *body_B = body_owner.get_or_null(p_body_B);
- ERR_FAIL_COND(!body_B);
-
- ERR_FAIL_COND(body_A == body_B);
-
- Joint3DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint3DSW *joint = memnew(ConeTwistJoint3DSW(body_A, body_B, p_local_frame_A, p_local_frame_B));
-
- joint->copy_settings_from(prev_joint);
- joint_owner.replace(p_joint, joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer3DSW::cone_twist_joint_set_param(RID p_joint, ConeTwistJointParam p_param, real_t p_value) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_CONE_TWIST);
- ConeTwistJoint3DSW *cone_twist_joint = static_cast<ConeTwistJoint3DSW *>(joint);
- cone_twist_joint->set_param(p_param, p_value);
-}
-
-real_t PhysicsServer3DSW::cone_twist_joint_get_param(RID p_joint, ConeTwistJointParam p_param) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, 0);
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_CONE_TWIST, 0);
- ConeTwistJoint3DSW *cone_twist_joint = static_cast<ConeTwistJoint3DSW *>(joint);
- return cone_twist_joint->get_param(p_param);
-}
-
-void PhysicsServer3DSW::joint_make_generic_6dof(RID p_joint, RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
- Body3DSW *body_A = body_owner.get_or_null(p_body_A);
- ERR_FAIL_COND(!body_A);
-
- if (!p_body_B.is_valid()) {
- ERR_FAIL_COND(!body_A->get_space());
- p_body_B = body_A->get_space()->get_static_global_body();
- }
-
- Body3DSW *body_B = body_owner.get_or_null(p_body_B);
- ERR_FAIL_COND(!body_B);
-
- ERR_FAIL_COND(body_A == body_B);
-
- Joint3DSW *prev_joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(prev_joint == nullptr);
-
- Joint3DSW *joint = memnew(Generic6DOFJoint3DSW(body_A, body_B, p_local_frame_A, p_local_frame_B, true));
-
- joint->copy_settings_from(prev_joint);
- joint_owner.replace(p_joint, joint);
- memdelete(prev_joint);
-}
-
-void PhysicsServer3DSW::generic_6dof_joint_set_param(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisParam p_param, real_t p_value) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_6DOF);
- Generic6DOFJoint3DSW *generic_6dof_joint = static_cast<Generic6DOFJoint3DSW *>(joint);
- generic_6dof_joint->set_param(p_axis, p_param, p_value);
-}
-
-real_t PhysicsServer3DSW::generic_6dof_joint_get_param(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisParam p_param) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, 0);
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_6DOF, 0);
- Generic6DOFJoint3DSW *generic_6dof_joint = static_cast<Generic6DOFJoint3DSW *>(joint);
- return generic_6dof_joint->get_param(p_axis, p_param);
-}
-
-void PhysicsServer3DSW::generic_6dof_joint_set_flag(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisFlag p_flag, bool p_enable) {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND(!joint);
- ERR_FAIL_COND(joint->get_type() != JOINT_TYPE_6DOF);
- Generic6DOFJoint3DSW *generic_6dof_joint = static_cast<Generic6DOFJoint3DSW *>(joint);
- generic_6dof_joint->set_flag(p_axis, p_flag, p_enable);
-}
-
-bool PhysicsServer3DSW::generic_6dof_joint_get_flag(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisFlag p_flag) const {
- Joint3DSW *joint = joint_owner.get_or_null(p_joint);
- ERR_FAIL_COND_V(!joint, false);
- ERR_FAIL_COND_V(joint->get_type() != JOINT_TYPE_6DOF, false);
- Generic6DOFJoint3DSW *generic_6dof_joint = static_cast<Generic6DOFJoint3DSW *>(joint);
- return generic_6dof_joint->get_flag(p_axis, p_flag);
-}
-
-void PhysicsServer3DSW::free(RID p_rid) {
- _update_shapes(); //just in case
-
- if (shape_owner.owns(p_rid)) {
- Shape3DSW *shape = shape_owner.get_or_null(p_rid);
-
- while (shape->get_owners().size()) {
- ShapeOwner3DSW *so = shape->get_owners().front()->key();
- so->remove_shape(shape);
- }
-
- shape_owner.free(p_rid);
- memdelete(shape);
- } else if (body_owner.owns(p_rid)) {
- Body3DSW *body = body_owner.get_or_null(p_rid);
-
- /*
- if (body->get_state_query())
- _clear_query(body->get_state_query());
-
- if (body->get_direct_state_query())
- _clear_query(body->get_direct_state_query());
- */
-
- body->set_space(nullptr);
-
- while (body->get_shape_count()) {
- body->remove_shape(0);
- }
-
- body_owner.free(p_rid);
- memdelete(body);
- } else if (soft_body_owner.owns(p_rid)) {
- SoftBody3DSW *soft_body = soft_body_owner.get_or_null(p_rid);
-
- soft_body->set_space(nullptr);
-
- soft_body_owner.free(p_rid);
- memdelete(soft_body);
- } else if (area_owner.owns(p_rid)) {
- Area3DSW *area = area_owner.get_or_null(p_rid);
-
- /*
- if (area->get_monitor_query())
- _clear_query(area->get_monitor_query());
- */
-
- area->set_space(nullptr);
-
- while (area->get_shape_count()) {
- area->remove_shape(0);
- }
-
- area_owner.free(p_rid);
- memdelete(area);
- } else if (space_owner.owns(p_rid)) {
- Space3DSW *space = space_owner.get_or_null(p_rid);
-
- while (space->get_objects().size()) {
- CollisionObject3DSW *co = (CollisionObject3DSW *)space->get_objects().front()->get();
- co->set_space(nullptr);
- }
-
- active_spaces.erase(space);
- free(space->get_default_area()->get_self());
- free(space->get_static_global_body());
-
- space_owner.free(p_rid);
- memdelete(space);
- } else if (joint_owner.owns(p_rid)) {
- Joint3DSW *joint = joint_owner.get_or_null(p_rid);
-
- joint_owner.free(p_rid);
- memdelete(joint);
-
- } else {
- ERR_FAIL_MSG("Invalid ID.");
- }
-};
-
-void PhysicsServer3DSW::set_active(bool p_active) {
- active = p_active;
-};
-
-void PhysicsServer3DSW::set_collision_iterations(int p_iterations) {
- iterations = p_iterations;
-};
-
-void PhysicsServer3DSW::init() {
- iterations = 8; // 8?
- stepper = memnew(Step3DSW);
-};
-
-void PhysicsServer3DSW::step(real_t p_step) {
-#ifndef _3D_DISABLED
-
- if (!active) {
- return;
- }
-
- _update_shapes();
-
- island_count = 0;
- active_objects = 0;
- collision_pairs = 0;
- for (Set<const Space3DSW *>::Element *E = active_spaces.front(); E; E = E->next()) {
- stepper->step((Space3DSW *)E->get(), p_step, iterations);
- island_count += E->get()->get_island_count();
- active_objects += E->get()->get_active_objects();
- collision_pairs += E->get()->get_collision_pairs();
- }
-#endif
-}
-
-void PhysicsServer3DSW::sync() {
- doing_sync = true;
-};
-
-void PhysicsServer3DSW::flush_queries() {
-#ifndef _3D_DISABLED
-
- if (!active) {
- return;
- }
-
- flushing_queries = true;
-
- uint64_t time_beg = OS::get_singleton()->get_ticks_usec();
-
- for (Set<const Space3DSW *>::Element *E = active_spaces.front(); E; E = E->next()) {
- Space3DSW *space = (Space3DSW *)E->get();
- space->call_queries();
- }
-
- flushing_queries = false;
-
- if (EngineDebugger::is_profiling("servers")) {
- uint64_t total_time[Space3DSW::ELAPSED_TIME_MAX];
- static const char *time_name[Space3DSW::ELAPSED_TIME_MAX] = {
- "integrate_forces",
- "generate_islands",
- "setup_constraints",
- "solve_constraints",
- "integrate_velocities"
- };
-
- for (int i = 0; i < Space3DSW::ELAPSED_TIME_MAX; i++) {
- total_time[i] = 0;
- }
-
- for (Set<const Space3DSW *>::Element *E = active_spaces.front(); E; E = E->next()) {
- for (int i = 0; i < Space3DSW::ELAPSED_TIME_MAX; i++) {
- total_time[i] += E->get()->get_elapsed_time(Space3DSW::ElapsedTime(i));
- }
- }
-
- Array values;
- values.resize(Space3DSW::ELAPSED_TIME_MAX * 2);
- for (int i = 0; i < Space3DSW::ELAPSED_TIME_MAX; i++) {
- values[i * 2 + 0] = time_name[i];
- values[i * 2 + 1] = USEC_TO_SEC(total_time[i]);
- }
- values.push_back("flush_queries");
- values.push_back(USEC_TO_SEC(OS::get_singleton()->get_ticks_usec() - time_beg));
-
- values.push_front("physics");
- EngineDebugger::profiler_add_frame_data("servers", values);
- }
-#endif
-};
-
-void PhysicsServer3DSW::end_sync() {
- doing_sync = false;
-};
-
-void PhysicsServer3DSW::finish() {
- memdelete(stepper);
-};
-
-int PhysicsServer3DSW::get_process_info(ProcessInfo p_info) {
- switch (p_info) {
- case INFO_ACTIVE_OBJECTS: {
- return active_objects;
- } break;
- case INFO_COLLISION_PAIRS: {
- return collision_pairs;
- } break;
- case INFO_ISLAND_COUNT: {
- return island_count;
- } break;
- }
-
- return 0;
-}
-
-void PhysicsServer3DSW::_update_shapes() {
- while (pending_shape_update_list.first()) {
- pending_shape_update_list.first()->self()->_shape_changed();
- pending_shape_update_list.remove(pending_shape_update_list.first());
- }
-}
-
-void PhysicsServer3DSW::_shape_col_cbk(const Vector3 &p_point_A, int p_index_A, const Vector3 &p_point_B, int p_index_B, void *p_userdata) {
- CollCbkData *cbk = (CollCbkData *)p_userdata;
-
- if (cbk->max == 0) {
- return;
- }
-
- if (cbk->amount == cbk->max) {
- //find least deep
- real_t min_depth = 1e20;
- int min_depth_idx = 0;
- for (int i = 0; i < cbk->amount; i++) {
- real_t d = cbk->ptr[i * 2 + 0].distance_squared_to(cbk->ptr[i * 2 + 1]);
- if (d < min_depth) {
- min_depth = d;
- min_depth_idx = i;
- }
- }
-
- real_t d = p_point_A.distance_squared_to(p_point_B);
- if (d < min_depth) {
- return;
- }
- cbk->ptr[min_depth_idx * 2 + 0] = p_point_A;
- cbk->ptr[min_depth_idx * 2 + 1] = p_point_B;
-
- } else {
- cbk->ptr[cbk->amount * 2 + 0] = p_point_A;
- cbk->ptr[cbk->amount * 2 + 1] = p_point_B;
- cbk->amount++;
- }
-}
-
-PhysicsServer3DSW *PhysicsServer3DSW::singletonsw = nullptr;
-PhysicsServer3DSW::PhysicsServer3DSW(bool p_using_threads) {
- singletonsw = this;
- BroadPhase3DSW::create_func = BroadPhase3DBVH::_create;
-
- using_threads = p_using_threads;
-};
diff --git a/servers/physics_server_2d.h b/servers/physics_server_2d.h
index 26e1411111..f83c57407d 100644
--- a/servers/physics_server_2d.h
+++ b/servers/physics_server_2d.h
@@ -28,8 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef PHYSICS_2D_SERVER_H
-#define PHYSICS_2D_SERVER_H
+#ifndef PHYSICS_SERVER_2D_H
+#define PHYSICS_SERVER_2D_H
#include "core/io/resource.h"
#include "core/object/class_db.h"
@@ -701,4 +701,4 @@ VARIANT_ENUM_CAST(PhysicsServer2D::DampedSpringParam);
VARIANT_ENUM_CAST(PhysicsServer2D::AreaBodyStatus);
VARIANT_ENUM_CAST(PhysicsServer2D::ProcessInfo);
-#endif
+#endif // PHYSICS_SERVER_2D_H
diff --git a/servers/physics_2d/physics_server_2d_wrap_mt.cpp b/servers/physics_server_2d_wrap_mt.cpp
index 33070bf42d..33070bf42d 100644
--- a/servers/physics_2d/physics_server_2d_wrap_mt.cpp
+++ b/servers/physics_server_2d_wrap_mt.cpp
diff --git a/servers/physics_2d/physics_server_2d_wrap_mt.h b/servers/physics_server_2d_wrap_mt.h
index 8d9e366661..4a2f07ab1e 100644
--- a/servers/physics_2d/physics_server_2d_wrap_mt.h
+++ b/servers/physics_server_2d_wrap_mt.h
@@ -28,8 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef PHYSICS2DSERVERWRAPMT_H
-#define PHYSICS2DSERVERWRAPMT_H
+#ifndef PHYSICS_SERVER_2D_WRAP_MT_H
+#define PHYSICS_SERVER_2D_WRAP_MT_H
#include "core/config/project_settings.h"
#include "core/os/thread.h"
@@ -59,9 +59,7 @@ class PhysicsServer2DWrapMT : public PhysicsServer2D {
bool create_thread = false;
Semaphore step_sem;
- int step_pending = 0;
void thread_step(real_t p_delta);
- void thread_flush();
void thread_exit();
@@ -330,4 +328,4 @@ public:
#endif
#undef SYNC_DEBUG
-#endif // PHYSICS2DSERVERWRAPMT_H
+#endif // PHYSICS_SERVER_2D_WRAP_MT_H
diff --git a/servers/physics_server_3d.h b/servers/physics_server_3d.h
index c609afc11e..6f55e287c9 100644
--- a/servers/physics_server_3d.h
+++ b/servers/physics_server_3d.h
@@ -28,8 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef PHYSICS_SERVER_H
-#define PHYSICS_SERVER_H
+#ifndef PHYSICS_SERVER_3D_H
+#define PHYSICS_SERVER_3D_H
#include "core/io/resource.h"
#include "core/object/class_db.h"
@@ -903,4 +903,4 @@ VARIANT_ENUM_CAST(PhysicsServer3D::G6DOFJointAxisFlag);
VARIANT_ENUM_CAST(PhysicsServer3D::AreaBodyStatus);
VARIANT_ENUM_CAST(PhysicsServer3D::ProcessInfo);
-#endif
+#endif // PHYSICS_SERVER_3D_H
diff --git a/servers/physics_3d/physics_server_3d_wrap_mt.cpp b/servers/physics_server_3d_wrap_mt.cpp
index c424100bba..c424100bba 100644
--- a/servers/physics_3d/physics_server_3d_wrap_mt.cpp
+++ b/servers/physics_server_3d_wrap_mt.cpp
diff --git a/servers/physics_3d/physics_server_3d_wrap_mt.h b/servers/physics_server_3d_wrap_mt.h
index 17d02addda..4c88ef2642 100644
--- a/servers/physics_3d/physics_server_3d_wrap_mt.h
+++ b/servers/physics_server_3d_wrap_mt.h
@@ -28,8 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef PHYSICS3DSERVERWRAPMT_H
-#define PHYSICS3DSERVERWRAPMT_H
+#ifndef PHYSICS_SERVER_3D_WRAP_MT_H
+#define PHYSICS_SERVER_3D_WRAP_MT_H
#include "core/config/project_settings.h"
#include "core/os/thread.h"
@@ -58,9 +58,7 @@ class PhysicsServer3DWrapMT : public PhysicsServer3D {
bool create_thread = false;
Semaphore step_sem;
- int step_pending = 0;
void thread_step(real_t p_delta);
- void thread_flush();
void thread_exit();
@@ -406,4 +404,4 @@ public:
#endif
#undef SYNC_DEBUG
-#endif // PHYSICS3DSERVERWRAPMT_H
+#endif // PHYSICS_SERVER_3D_WRAP_MT_H
diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp
index 28cd8374c0..8be9c2114f 100644
--- a/servers/register_server_types.cpp
+++ b/servers/register_server_types.cpp
@@ -59,12 +59,12 @@
#include "display_server.h"
#include "navigation_server_2d.h"
#include "navigation_server_3d.h"
-#include "physics_2d/physics_server_2d_sw.h"
-#include "physics_2d/physics_server_2d_wrap_mt.h"
-#include "physics_3d/physics_server_3d_sw.h"
-#include "physics_3d/physics_server_3d_wrap_mt.h"
+#include "physics_2d/godot_physics_server_2d.h"
+#include "physics_3d/godot_physics_server_3d.h"
#include "physics_server_2d.h"
+#include "physics_server_2d_wrap_mt.h"
#include "physics_server_3d.h"
+#include "physics_server_3d_wrap_mt.h"
#include "rendering/renderer_compositor.h"
#include "rendering/rendering_device.h"
#include "rendering/rendering_device_binds.h"
@@ -82,7 +82,7 @@ ShaderTypes *shader_types = nullptr;
PhysicsServer3D *_createGodotPhysics3DCallback() {
bool using_threads = GLOBAL_GET("physics/3d/run_on_thread");
- PhysicsServer3D *physics_server = memnew(PhysicsServer3DSW(using_threads));
+ PhysicsServer3D *physics_server = memnew(GodotPhysicsServer3D(using_threads));
return memnew(PhysicsServer3DWrapMT(physics_server, using_threads));
}
@@ -90,7 +90,7 @@ PhysicsServer3D *_createGodotPhysics3DCallback() {
PhysicsServer2D *_createGodotPhysics2DCallback() {
bool using_threads = GLOBAL_GET("physics/2d/run_on_thread");
- PhysicsServer2D *physics_server = memnew(PhysicsServer2DSW(using_threads));
+ PhysicsServer2D *physics_server = memnew(GodotPhysicsServer2D(using_threads));
return memnew(PhysicsServer2DWrapMT(physics_server, using_threads));
}
@@ -133,6 +133,7 @@ void register_server_types() {
GDREGISTER_VIRTUAL_CLASS(XRInterface);
GDREGISTER_CLASS(XRInterfaceExtension); // can't register this as virtual because we need a creation function for our extensions.
+ GDREGISTER_CLASS(XRPose);
GDREGISTER_CLASS(XRPositionalTracker);
GDREGISTER_CLASS(AudioStream);
diff --git a/servers/rendering/renderer_rd/cluster_builder_rd.h b/servers/rendering/renderer_rd/cluster_builder_rd.h
index c0c03eb26a..feafd4c2db 100644
--- a/servers/rendering/renderer_rd/cluster_builder_rd.h
+++ b/servers/rendering/renderer_rd/cluster_builder_rd.h
@@ -289,7 +289,7 @@ public:
e.touches_near = min_d < z_near;
} else {
//contains camera inside light
- Plane base_plane(xform.origin, -xform.basis.get_axis(Vector3::AXIS_Z));
+ Plane base_plane(-xform.basis.get_axis(Vector3::AXIS_Z), xform.origin);
float dist = base_plane.distance_to(Vector3());
if (dist >= 0 && dist < radius) {
//inside, check angle
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 6a3b9726da..0deb822e86 100644
--- a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
+++ b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
@@ -328,6 +328,8 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
push_constant.uv_offset = 0;
}
+ bool should_request_redraw = false;
+
for (uint32_t i = p_from_element; i < p_to_element; i++) {
const GeometryInstanceSurfaceDataCache *surf = p_params->elements[i];
const RenderElementInfo &element_info = p_params->element_info[i];
@@ -365,6 +367,11 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
continue;
}
+ //request a redraw if one of the shaders uses TIME
+ if (shader->uses_time) {
+ should_request_redraw = true;
+ }
+
//find cull variant
SceneShaderForwardClustered::ShaderData::CullVariant cull_variant;
@@ -500,6 +507,11 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
RD::get_singleton()->draw_list_draw(draw_list, index_array_rd.is_valid(), instance_count);
i += element_info.repeat - 1; //skip equal elements
}
+
+ // Make the actual redraw request
+ if (should_request_redraw) {
+ RenderingServerDefault::redraw_request();
+ }
}
void RenderForwardClustered::_render_list(RenderingDevice::DrawListID p_draw_list, RenderingDevice::FramebufferFormatID p_framebuffer_Format, RenderListParameters *p_params, uint32_t p_from_element, uint32_t p_to_element) {
@@ -757,9 +769,6 @@ void RenderForwardClustered::_setup_environment(const RenderDataRD *p_render_dat
scene_state.ubo.fog_density = environment_get_fog_density(p_render_data->environment);
scene_state.ubo.fog_height = environment_get_fog_height(p_render_data->environment);
scene_state.ubo.fog_height_density = environment_get_fog_height_density(p_render_data->environment);
- if (scene_state.ubo.fog_height_density >= 0.0001) {
- scene_state.ubo.fog_height_density = 1.0 / scene_state.ubo.fog_height_density;
- }
scene_state.ubo.fog_aerial_perspective = environment_get_fog_aerial_perspective(p_render_data->environment);
Color fog_color = environment_get_fog_light_color(p_render_data->environment).to_linear();
@@ -907,7 +916,7 @@ void RenderForwardClustered::_fill_render_list(RenderListType p_render_list, con
}
uint32_t lightmap_captures_used = 0;
- Plane near_plane(p_render_data->cam_transform.origin, -p_render_data->cam_transform.basis.get_axis(Vector3::AXIS_Z));
+ Plane near_plane = Plane(-p_render_data->cam_transform.basis.get_axis(Vector3::AXIS_Z), p_render_data->cam_transform.origin);
near_plane.d += p_render_data->cam_projection.get_z_near();
float z_max = p_render_data->cam_projection.get_z_far() - p_render_data->cam_projection.get_z_near();
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 a1c3481ed6..d05cfdc386 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
@@ -657,6 +657,10 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
actions.render_mode_defines["specular_schlick_ggx"] = "#define SPECULAR_BLINN\n";
}
+ actions.custom_samplers["SCREEN_TEXTURE"] = "material_samplers[3]"; // linear filter with mipmaps
+ actions.custom_samplers["DEPTH_TEXTURE"] = "material_samplers[3]";
+ actions.custom_samplers["NORMAL_ROUGHNESS_TEXTURE"] = "material_samplers[1]"; // linear filter
+
actions.render_mode_defines["specular_blinn"] = "#define SPECULAR_BLINN\n";
actions.render_mode_defines["specular_phong"] = "#define SPECULAR_PHONG\n";
actions.render_mode_defines["specular_toon"] = "#define SPECULAR_TOON\n";
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 6937df85fb..1e5854a174 100644
--- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
@@ -1322,7 +1322,7 @@ void RenderForwardMobile::_fill_render_list(RenderListType p_render_list, const
}
uint32_t lightmap_captures_used = 0;
- Plane near_plane(p_render_data->cam_transform.origin, -p_render_data->cam_transform.basis.get_axis(Vector3::AXIS_Z));
+ Plane near_plane(-p_render_data->cam_transform.basis.get_axis(Vector3::AXIS_Z), p_render_data->cam_transform.origin);
near_plane.d += p_render_data->cam_projection.get_z_near();
float z_max = p_render_data->cam_projection.get_z_far() - p_render_data->cam_projection.get_z_near();
@@ -1637,9 +1637,6 @@ void RenderForwardMobile::_setup_environment(const RenderDataRD *p_render_data,
scene_state.ubo.fog_density = environment_get_fog_density(p_render_data->environment);
scene_state.ubo.fog_height = environment_get_fog_height(p_render_data->environment);
scene_state.ubo.fog_height_density = environment_get_fog_height_density(p_render_data->environment);
- if (scene_state.ubo.fog_height_density >= 0.0001) {
- scene_state.ubo.fog_height_density = 1.0 / scene_state.ubo.fog_height_density;
- }
scene_state.ubo.fog_aerial_perspective = environment_get_fog_aerial_perspective(p_render_data->environment);
Color fog_color = environment_get_fog_light_color(p_render_data->environment).to_linear();
diff --git a/servers/rendering/renderer_rd/pipeline_cache_rd.cpp b/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
index aefe926cb0..0d60052666 100644
--- a/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
+++ b/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
@@ -35,8 +35,10 @@ RID PipelineCacheRD::_generate_version(RD::VertexFormatID p_vertex_format_id, RD
RD::PipelineMultisampleState multisample_state_version = multisample_state;
multisample_state_version.sample_count = RD::get_singleton()->framebuffer_format_get_texture_samples(p_framebuffer_format_id, p_render_pass);
+ bool wireframe = p_wireframe || rasterization_state.wireframe;
+
RD::PipelineRasterizationState raster_state_version = rasterization_state;
- raster_state_version.wireframe = p_wireframe;
+ raster_state_version.wireframe = wireframe;
Vector<RD::PipelineSpecializationConstant> specialization_constants = base_specialization_constants;
@@ -59,7 +61,7 @@ RID PipelineCacheRD::_generate_version(RD::VertexFormatID p_vertex_format_id, RD
versions = (Version *)memrealloc(versions, sizeof(Version) * (version_count + 1));
versions[version_count].framebuffer_id = p_framebuffer_format_id;
versions[version_count].vertex_id = p_vertex_format_id;
- versions[version_count].wireframe = p_wireframe;
+ versions[version_count].wireframe = wireframe;
versions[version_count].pipeline = pipeline;
versions[version_count].render_pass = p_render_pass;
versions[version_count].bool_specializations = p_bool_specializations;
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
index bd8e950e70..a906a853dc 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
@@ -2696,9 +2696,14 @@ void RendererSceneRenderRD::shadows_quality_set(RS::ShadowQuality p_quality) {
switch (shadows_quality) {
case RS::SHADOW_QUALITY_HARD: {
penumbra_shadow_samples = 4;
- soft_shadow_samples = 1;
+ soft_shadow_samples = 0;
shadows_quality_radius = 1.0;
} break;
+ case RS::SHADOW_QUALITY_SOFT_VERY_LOW: {
+ penumbra_shadow_samples = 4;
+ soft_shadow_samples = 1;
+ shadows_quality_radius = 1.5;
+ } break;
case RS::SHADOW_QUALITY_SOFT_LOW: {
penumbra_shadow_samples = 8;
soft_shadow_samples = 4;
@@ -2738,9 +2743,14 @@ void RendererSceneRenderRD::directional_shadow_quality_set(RS::ShadowQuality p_q
switch (directional_shadow_quality) {
case RS::SHADOW_QUALITY_HARD: {
directional_penumbra_shadow_samples = 4;
- directional_soft_shadow_samples = 1;
+ directional_soft_shadow_samples = 0;
directional_shadow_quality_radius = 1.0;
} break;
+ case RS::SHADOW_QUALITY_SOFT_VERY_LOW: {
+ directional_penumbra_shadow_samples = 4;
+ directional_soft_shadow_samples = 1;
+ directional_shadow_quality_radius = 1.5;
+ } break;
case RS::SHADOW_QUALITY_SOFT_LOW: {
directional_penumbra_shadow_samples = 8;
directional_soft_shadow_samples = 4;
@@ -2886,7 +2896,7 @@ void RendererSceneRenderRD::_setup_lights(const PagedArray<RID> &p_lights, const
r_positional_light_count = 0;
sky.sky_scene_state.ubo.directional_light_count = 0;
- Plane camera_plane(p_camera_transform.origin, -p_camera_transform.basis.get_axis(Vector3::AXIS_Z).normalized());
+ Plane camera_plane(-p_camera_transform.basis.get_axis(Vector3::AXIS_Z).normalized(), p_camera_transform.origin);
cluster.omni_light_count = 0;
cluster.spot_light_count = 0;
@@ -3026,7 +3036,7 @@ void RendererSceneRenderRD::_setup_lights(const PagedArray<RID> &p_lights, const
RS::LightDirectionalShadowMode smode = storage->light_directional_get_shadow_mode(base);
int limit = smode == RS::LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL ? 0 : (smode == RS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS ? 1 : 3);
- light_data.blend_splits = storage->light_directional_get_blend_splits(base);
+ light_data.blend_splits = (smode != RS::LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL) && storage->light_directional_get_blend_splits(base);
for (int j = 0; j < 4; j++) {
Rect2 atlas_rect = li->shadow_transform[j].atlas_rect;
CameraMatrix matrix = li->shadow_transform[j].camera;
@@ -3928,7 +3938,7 @@ void RendererSceneRenderRD::_pre_opaque_render(RenderDataRD *p_render_data, bool
render_state.shadows.clear();
render_state.directional_shadows.clear();
- Plane camera_plane(p_render_data->cam_transform.origin, -p_render_data->cam_transform.basis.get_axis(Vector3::AXIS_Z));
+ Plane camera_plane(-p_render_data->cam_transform.basis.get_axis(Vector3::AXIS_Z), p_render_data->cam_transform.origin);
float lod_distance_multiplier = p_render_data->cam_projection.get_lod_multiplier();
{
for (int i = 0; i < render_state.render_shadow_count; i++) {
@@ -4090,7 +4100,7 @@ void RendererSceneRenderRD::render_scene(RID p_render_buffers, const CameraData
// this should be the same for all cameras..
render_data.lod_distance_multiplier = p_camera_data->main_projection.get_lod_multiplier();
- render_data.lod_camera_plane = Plane(p_camera_data->main_transform.get_origin(), -p_camera_data->main_transform.basis.get_axis(Vector3::AXIS_Z));
+ render_data.lod_camera_plane = Plane(-p_camera_data->main_transform.basis.get_axis(Vector3::AXIS_Z), p_camera_data->main_transform.get_origin());
if (get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_DISABLE_LOD) {
render_data.screen_lod_threshold = 0.0;
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.cpp b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
index 2ece60e107..3e68a2b622 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
@@ -2672,9 +2672,11 @@ void RendererStorageRD::MaterialData::update_textures(const Map<StringName, Vari
if (uniform_array_size > 0) {
if (textures.size() < uniform_array_size) {
const Map<StringName, RID>::Element *W = p_default_textures.find(uniform_name);
- if (W) {
- for (int j = textures.size(); j < uniform_array_size; j++) {
+ for (int j = textures.size(); j < uniform_array_size; j++) {
+ if (W) {
textures.push_back(W->get());
+ } else {
+ textures.push_back(RID());
}
}
}
@@ -9970,6 +9972,6 @@ RendererStorageRD::~RendererStorageRD() {
if (effects) {
memdelete(effects);
- effects = NULL;
+ effects = nullptr;
}
}
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.h b/servers/rendering/renderer_rd/renderer_storage_rd.h
index d56afcc448..d6129bb57b 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.h
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.h
@@ -1284,7 +1284,7 @@ private:
void _update_global_variables();
/* EFFECTS */
- EffectsRD *effects = NULL;
+ EffectsRD *effects = nullptr;
public:
virtual bool can_create_resources_async() const;
diff --git a/servers/rendering/renderer_rd/shader_compiler_rd.cpp b/servers/rendering/renderer_rd/shader_compiler_rd.cpp
index 4c26941dae..215959bb6a 100644
--- a/servers/rendering/renderer_rd/shader_compiler_rd.cpp
+++ b/servers/rendering/renderer_rd/shader_compiler_rd.cpp
@@ -1421,7 +1421,7 @@ Error ShaderCompilerRD::compile(RS::ShaderMode p_mode, const String &p_code, Ide
}
}
- _err_print_error(nullptr, p_path.utf8().get_data(), parser.get_error_line(), parser.get_error_text().utf8().get_data(), ERR_HANDLER_SHADER);
+ _err_print_error(nullptr, p_path.utf8().get_data(), parser.get_error_line(), parser.get_error_text().utf8().get_data(), false, ERR_HANDLER_SHADER);
return err;
}
@@ -1463,6 +1463,7 @@ void ShaderCompilerRD::initialize(DefaultIdentifierActions p_actions) {
texture_functions.insert("textureLod");
texture_functions.insert("textureProjLod");
texture_functions.insert("textureGrad");
+ texture_functions.insert("textureGather");
texture_functions.insert("textureSize");
texture_functions.insert("texelFetch");
}
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
index f0fb31a457..987960069b 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
@@ -526,12 +526,12 @@ vec4 fog_process(vec3 vertex) {
float fog_amount = 1.0 - exp(min(0.0, -length(vertex) * scene_data.fog_density));
- if (abs(scene_data.fog_height_density) > 0.001) {
+ if (abs(scene_data.fog_height_density) >= 0.0001) {
float y = (scene_data.camera_matrix * vec4(vertex, 1.0)).y;
- float y_dist = scene_data.fog_height - y;
+ float y_dist = y - scene_data.fog_height;
- float vfog_amount = clamp(exp(y_dist * scene_data.fog_height_density), 0.0, 1.0);
+ float vfog_amount = 1.0 - exp(min(0.0, y_dist * scene_data.fog_height_density));
fog_amount = max(vfog_amount, fog_amount);
}
@@ -1270,21 +1270,21 @@ void main() {
float shadow = 1.0;
- //version with soft shadows, more expensive
if (directional_lights.data[i].shadow_enabled) {
- if (sc_use_directional_soft_shadows && directional_lights.data[i].softshadow_angle > 0) {
- float depth_z = -vertex.z;
-
- vec3 shadow_color = vec3(0.0);
- vec3 light_dir = directional_lights.data[i].direction;
+ float depth_z = -vertex.z;
+ vec3 light_dir = directional_lights.data[i].direction;
+ vec3 base_normal_bias = normalize(normal_interp) * (1.0 - max(0.0, dot(light_dir, -normalize(normal_interp))));
-#define BIAS_FUNC(m_var, m_idx) \
- m_var.xyz += light_dir * directional_lights.data[i].shadow_bias[m_idx]; \
- vec3 normal_bias = normalize(normal_interp) * (1.0 - max(0.0, dot(light_dir, -normalize(normal_interp)))) * directional_lights.data[i].shadow_normal_bias[m_idx]; \
- normal_bias -= light_dir * dot(light_dir, normal_bias); \
+#define BIAS_FUNC(m_var, m_idx) \
+ m_var.xyz += light_dir * directional_lights.data[i].shadow_bias[m_idx]; \
+ vec3 normal_bias = base_normal_bias * directional_lights.data[i].shadow_normal_bias[m_idx]; \
+ normal_bias -= light_dir * dot(light_dir, normal_bias); \
m_var.xyz += normal_bias;
- uint blend_index = 0;
+ //version with soft shadows, more expensive
+ if (sc_use_directional_soft_shadows && directional_lights.data[i].softshadow_angle > 0) {
+ uint blend_count = 0;
+ const uint blend_max = directional_lights.data[i].blend_splits ? 2 : 1;
if (depth_z < directional_lights.data[i].shadow_split_offsets.x) {
vec4 v = vec4(vertex, 1.0);
@@ -1299,10 +1299,10 @@ void main() {
float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
vec2 tex_scale = directional_lights.data[i].uv_scale1 * test_radius;
shadow = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
- blend_index++;
+ blend_count++;
}
- if (blend_index < 2 && depth_z < directional_lights.data[i].shadow_split_offsets.y) {
+ if (blend_count < blend_max && depth_z < directional_lights.data[i].shadow_split_offsets.y) {
vec4 v = vec4(vertex, 1.0);
BIAS_FUNC(v, 1)
@@ -1316,7 +1316,7 @@ void main() {
vec2 tex_scale = directional_lights.data[i].uv_scale2 * test_radius;
float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
- if (blend_index == 0) {
+ if (blend_count == 0) {
shadow = s;
} else {
//blend
@@ -1324,10 +1324,10 @@ void main() {
shadow = mix(shadow, s, blend);
}
- blend_index++;
+ blend_count++;
}
- if (blend_index < 2 && depth_z < directional_lights.data[i].shadow_split_offsets.z) {
+ if (blend_count < blend_max && depth_z < directional_lights.data[i].shadow_split_offsets.z) {
vec4 v = vec4(vertex, 1.0);
BIAS_FUNC(v, 2)
@@ -1341,7 +1341,7 @@ void main() {
vec2 tex_scale = directional_lights.data[i].uv_scale3 * test_radius;
float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
- if (blend_index == 0) {
+ if (blend_count == 0) {
shadow = s;
} else {
//blend
@@ -1349,10 +1349,10 @@ void main() {
shadow = mix(shadow, s, blend);
}
- blend_index++;
+ blend_count++;
}
- if (blend_index < 2) {
+ if (blend_count < blend_max) {
vec4 v = vec4(vertex, 1.0);
BIAS_FUNC(v, 3)
@@ -1366,7 +1366,7 @@ void main() {
vec2 tex_scale = directional_lights.data[i].uv_scale4 * test_radius;
float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
- if (blend_index == 0) {
+ if (blend_count == 0) {
shadow = s;
} else {
//blend
@@ -1375,21 +1375,9 @@ void main() {
}
}
-#undef BIAS_FUNC
} else { //no soft shadows
- float depth_z = -vertex.z;
-
vec4 pssm_coord;
- vec3 light_dir = directional_lights.data[i].direction;
- vec3 base_normal_bias = normalize(normal_interp) * (1.0 - max(0.0, dot(light_dir, -normalize(normal_interp))));
-
-#define BIAS_FUNC(m_var, m_idx) \
- m_var.xyz += light_dir * directional_lights.data[i].shadow_bias[m_idx]; \
- vec3 normal_bias = base_normal_bias * directional_lights.data[i].shadow_normal_bias[m_idx]; \
- normal_bias -= light_dir * dot(light_dir, normal_bias); \
- m_var.xyz += normal_bias;
-
if (depth_z < directional_lights.data[i].shadow_split_offsets.x) {
vec4 v = vec4(vertex, 1.0);
@@ -1448,11 +1436,11 @@ void main() {
float shadow2 = sample_directional_pcf_shadow(directional_shadow_atlas, scene_data.directional_shadow_pixel_size * directional_lights.data[i].soft_shadow_scale, pssm_coord);
shadow = mix(shadow, shadow2, pssm_blend);
}
+ }
- shadow = mix(shadow, 1.0, smoothstep(directional_lights.data[i].fade_from, directional_lights.data[i].fade_to, vertex.z)); //done with negative values for performance
+ shadow = mix(shadow, 1.0, smoothstep(directional_lights.data[i].fade_from, directional_lights.data[i].fade_to, vertex.z)); //done with negative values for performance
#undef BIAS_FUNC
- }
} // shadows
if (i < 4) {
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 4d466342f8..72872c9c08 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
@@ -301,7 +301,7 @@ float sample_directional_pcf_shadow(texture2D shadow, vec2 shadow_pixel_size, ve
float depth = coord.z;
//if only one sample is taken, take it from the center
- if (sc_directional_soft_shadow_samples == 1) {
+ if (sc_directional_soft_shadow_samples == 0) {
return textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos, depth, 1.0));
}
@@ -327,7 +327,7 @@ float sample_pcf_shadow(texture2D shadow, vec2 shadow_pixel_size, vec3 coord) {
float depth = coord.z;
//if only one sample is taken, take it from the center
- if (sc_soft_shadow_samples == 1) {
+ if (sc_soft_shadow_samples == 0) {
return textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos, depth, 1.0));
}
@@ -350,7 +350,7 @@ float sample_pcf_shadow(texture2D shadow, vec2 shadow_pixel_size, vec3 coord) {
float sample_omni_pcf_shadow(texture2D shadow, float blur_scale, vec2 coord, vec4 uv_rect, vec2 flip_offset, float depth) {
//if only one sample is taken, take it from the center
- if (sc_soft_shadow_samples == 1) {
+ if (sc_soft_shadow_samples == 0) {
vec2 pos = coord * 0.5 + 0.5;
pos = uv_rect.xy + pos * uv_rect.zw;
return textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos, depth, 1.0));
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
index 750ec5f00a..0ee68d5e10 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
@@ -552,12 +552,12 @@ vec4 fog_process(vec3 vertex) {
float fog_amount = 1.0 - exp(min(0.0, -length(vertex) * scene_data.fog_density));
- if (abs(scene_data.fog_height_density) > 0.001) {
+ if (abs(scene_data.fog_height_density) >= 0.0001) {
float y = (scene_data.camera_matrix * vec4(vertex, 1.0)).y;
- float y_dist = scene_data.fog_height - y;
+ float y_dist = y - scene_data.fog_height;
- float vfog_amount = clamp(exp(y_dist * scene_data.fog_height_density), 0.0, 1.0);
+ float vfog_amount = 1.0 - exp(min(0.0, y_dist * scene_data.fog_height_density));
fog_amount = max(vfog_amount, fog_amount);
}
diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp
index 558516ac7c..a7886bb6b1 100644
--- a/servers/rendering/renderer_scene_cull.cpp
+++ b/servers/rendering/renderer_scene_cull.cpp
@@ -2076,7 +2076,7 @@ void RendererSceneCull::_light_instance_setup_directional_shadow(int p_shadow_in
// This trick here is what stabilizes the shadow (make potential jaggies to not move)
// at the cost of some wasted resolution. Still, the quality increase is very well worth it.
- const real_t unit = radius * 2.0 / texture_size;
+ const real_t unit = (radius + soft_shadow_expand) * 2.0 / texture_size;
x_max_cam = Math::snapped(x_vec.dot(center) + radius + soft_shadow_expand, unit);
x_min_cam = Math::snapped(x_vec.dot(center) - radius - soft_shadow_expand, unit);
y_max_cam = Math::snapped(y_vec.dot(center) + radius + soft_shadow_expand, unit);
@@ -2952,7 +2952,7 @@ void RendererSceneCull::_render_scene(const RendererSceneRender::CameraData *p_c
Transform3D cam_xf = p_camera_data->main_transform;
float zn = p_camera_data->main_projection.get_z_near();
- Plane p(cam_xf.origin + cam_xf.basis.get_axis(2) * -zn, -cam_xf.basis.get_axis(2)); //camera near plane
+ Plane p(-cam_xf.basis.get_axis(2), cam_xf.origin + cam_xf.basis.get_axis(2) * -zn); //camera near plane
// near plane half width and height
Vector2 vp_half_extents = p_camera_data->main_projection.get_viewport_half_extents();
diff --git a/servers/rendering/renderer_scene_render.cpp b/servers/rendering/renderer_scene_render.cpp
index 3a230ac89d..38d1218dee 100644
--- a/servers/rendering/renderer_scene_render.cpp
+++ b/servers/rendering/renderer_scene_render.cpp
@@ -68,7 +68,7 @@ void RendererSceneRender::CameraData::set_multiview_camera(uint32_t p_view_count
main_transform.basis.set(x, y, z);
// 3. create a horizon plane with one of the eyes and the up vector as normal.
- Plane horizon(p_transforms[0].origin, y);
+ Plane horizon(y, p_transforms[0].origin);
// 4. Intersect horizon, left and right to obtain the combined camera origin.
ERR_FAIL_COND_MSG(
@@ -79,7 +79,7 @@ void RendererSceneRender::CameraData::set_multiview_camera(uint32_t p_view_count
// 5. figure out far plane, this could use some improvement, we may have our far plane too close like this, not sure if this matters
Vector3 far_center = (planes[0][CameraMatrix::PLANE_FAR].center() + planes[1][CameraMatrix::PLANE_FAR].center()) * 0.5;
- Plane far(far_center, -z);
+ Plane far(-z, far_center);
/////////////////////////////////////////////////////////////////////////////
// Figure out our top/bottom planes
@@ -137,9 +137,9 @@ void RendererSceneRender::CameraData::set_multiview_camera(uint32_t p_view_count
Plane near;
Vector3 neg_z = -z;
if (neg_z.dot(p_transforms[1].origin) < neg_z.dot(p_transforms[0].origin)) {
- near = Plane(p_transforms[0].origin, neg_z);
+ near = Plane(neg_z, p_transforms[0].origin);
} else {
- near = Plane(p_transforms[1].origin, neg_z);
+ near = Plane(neg_z, p_transforms[1].origin);
}
// 13. Intersect near plane with bottm/left planes, to obtain min_vec then top/right to obtain max_vec
diff --git a/servers/rendering/renderer_viewport.cpp b/servers/rendering/renderer_viewport.cpp
index b67b1cd806..347238cdaa 100644
--- a/servers/rendering/renderer_viewport.cpp
+++ b/servers/rendering/renderer_viewport.cpp
@@ -495,9 +495,6 @@ void RendererViewport::draw_viewports() {
if (XRServer::get_singleton() != nullptr) {
xr_interface = XRServer::get_singleton()->get_primary_interface();
-
- // process all our active interfaces
- XRServer::get_singleton()->_process();
}
if (Engine::get_singleton()->is_editor_hint()) {
@@ -1012,6 +1009,7 @@ void RendererViewport::viewport_set_lod_threshold(RID p_viewport, float p_pixels
}
int RendererViewport::viewport_get_render_info(RID p_viewport, RS::ViewportRenderInfoType p_type, RS::ViewportRenderInfo p_info) {
+ ERR_FAIL_INDEX_V(p_type, RS::VIEWPORT_RENDER_INFO_TYPE_MAX, -1);
ERR_FAIL_INDEX_V(p_info, RS::VIEWPORT_RENDER_INFO_MAX, -1);
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 81a9e00d7c..53f2d96f52 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -2456,6 +2456,23 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "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 },
+ // 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 },
+
// dFdx
{ "dFdx", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
@@ -2576,6 +2593,20 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "findMSB", TYPE_UVEC3, { TYPE_UVEC3, TYPE_VOID }, { "value" }, TAG_GLOBAL, true },
{ "findMSB", TYPE_UVEC4, { TYPE_UVEC4, TYPE_VOID }, { "value" }, TAG_GLOBAL, true },
+ // umulExtended
+
+ { "umulExtended", TYPE_VOID, { TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "y", "msb", "lsb" }, TAG_GLOBAL, true },
+ { "umulExtended", TYPE_VOID, { TYPE_UVEC2, TYPE_UVEC2, TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "x", "y", "msb", "lsb" }, TAG_GLOBAL, true },
+ { "umulExtended", TYPE_VOID, { TYPE_UVEC3, TYPE_UVEC3, TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "x", "y", "msb", "lsb" }, TAG_GLOBAL, true },
+ { "umulExtended", TYPE_VOID, { TYPE_UVEC4, TYPE_UVEC4, TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "x", "y", "msb", "lsb" }, TAG_GLOBAL, true },
+
+ // imulExtended
+
+ { "imulExtended", TYPE_VOID, { TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_VOID }, { "x", "y", "msb", "lsb" }, TAG_GLOBAL, true },
+ { "imulExtended", TYPE_VOID, { TYPE_IVEC2, TYPE_IVEC2, TYPE_IVEC2, TYPE_IVEC2, TYPE_VOID }, { "x", "y", "msb", "lsb" }, TAG_GLOBAL, true },
+ { "imulExtended", TYPE_VOID, { TYPE_IVEC3, TYPE_IVEC3, TYPE_IVEC3, TYPE_IVEC3, TYPE_VOID }, { "x", "y", "msb", "lsb" }, TAG_GLOBAL, true },
+ { "imulExtended", TYPE_VOID, { TYPE_IVEC4, TYPE_IVEC4, TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "x", "y", "msb", "lsb" }, TAG_GLOBAL, true },
+
// uaddCarry
{ "uaddCarry", TYPE_UINT, { TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "y", "carry" }, TAG_GLOBAL, true },
@@ -2590,15 +2621,37 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "usubBorrow", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "x", "y", "borrow" }, TAG_GLOBAL, true },
{ "usubBorrow", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "x", "y", "borrow" }, TAG_GLOBAL, true },
+ // ldexp
+
+ { "ldexp", TYPE_FLOAT, { TYPE_FLOAT, TYPE_INT, TYPE_VOID }, { "x", "exp" }, TAG_GLOBAL, true },
+ { "ldexp", TYPE_VEC2, { TYPE_VEC2, TYPE_IVEC2, TYPE_VOID }, { "x", "exp" }, TAG_GLOBAL, true },
+ { "ldexp", TYPE_VEC3, { TYPE_VEC3, TYPE_IVEC3, TYPE_VOID }, { "x", "exp" }, TAG_GLOBAL, true },
+ { "ldexp", TYPE_VEC4, { TYPE_VEC4, TYPE_IVEC4, TYPE_VOID }, { "x", "exp" }, TAG_GLOBAL, true },
+
+ // frexp
+
+ { "frexp", TYPE_FLOAT, { TYPE_FLOAT, TYPE_INT, TYPE_VOID }, { "x", "exp" }, TAG_GLOBAL, true },
+ { "frexp", TYPE_VEC2, { TYPE_VEC2, TYPE_IVEC2, TYPE_VOID }, { "x", "exp" }, TAG_GLOBAL, true },
+ { "frexp", TYPE_VEC3, { TYPE_VEC3, TYPE_IVEC3, TYPE_VOID }, { "x", "exp" }, TAG_GLOBAL, true },
+ { "frexp", TYPE_VEC4, { TYPE_VEC4, TYPE_IVEC4, TYPE_VOID }, { "x", "exp" }, TAG_GLOBAL, true },
+
{ nullptr, TYPE_VOID, { TYPE_VOID }, { "" }, TAG_GLOBAL, false }
};
const ShaderLanguage::BuiltinFuncOutArgs ShaderLanguage::builtin_func_out_args[] = {
- //constructors
- { "modf", 1 },
- { "uaddCarry", 2 },
- { "usubBorrow", 2 },
- { nullptr, 0 }
+ { "modf", { 1, -1 } },
+ { "umulExtended", { 2, 3 } },
+ { "imulExtended", { 2, 3 } },
+ { "uaddCarry", { 2, -1 } },
+ { "usubBorrow", { 2, -1 } },
+ { "ldexp", { 1, -1 } },
+ { "frexp", { 1, -1 } },
+ { nullptr, { 0, -1 } }
+};
+
+const ShaderLanguage::BuiltinFuncConstArgs ShaderLanguage::builtin_func_const_args[] = {
+ { "textureGather", 2, 0, 3 },
+ { nullptr, 0, 0, 0 }
};
bool ShaderLanguage::_validate_function_call(BlockNode *p_block, const FunctionInfo &p_function_info, OperatorNode *p_func, DataType *r_ret_type, StringName *r_ret_type_str) {
@@ -2692,100 +2745,153 @@ bool ShaderLanguage::_validate_function_call(BlockNode *p_block, const FunctionI
}
if (!fail) {
- //make sure its not an out argument used in the wrong way
- int outarg_idx = 0;
- while (builtin_func_out_args[outarg_idx].name) {
- if (String(name) == builtin_func_out_args[outarg_idx].name) {
- int arg_idx = builtin_func_out_args[outarg_idx].argument;
-
- if (arg_idx < argcount) {
- if (p_func->arguments[arg_idx + 1]->type != Node::TYPE_VARIABLE && p_func->arguments[arg_idx + 1]->type != Node::TYPE_MEMBER && p_func->arguments[arg_idx + 1]->type != Node::TYPE_ARRAY) {
- _set_error("Argument " + itos(arg_idx + 1) + " of function '" + String(name) + "' is not a variable, array or member.");
- return false;
+ {
+ int constarg_idx = 0;
+ while (builtin_func_const_args[constarg_idx].name) {
+ if (String(name) == builtin_func_const_args[constarg_idx].name) {
+ int arg = builtin_func_const_args[constarg_idx].arg + 1;
+ if (p_func->arguments.size() <= arg) {
+ break;
}
- if (p_func->arguments[arg_idx + 1]->type == Node::TYPE_ARRAY) {
- ArrayNode *mn = static_cast<ArrayNode *>(p_func->arguments[arg_idx + 1]);
- if (mn->is_const) {
- fail = true;
- }
- } else if (p_func->arguments[arg_idx + 1]->type == Node::TYPE_MEMBER) {
- MemberNode *mn = static_cast<MemberNode *>(p_func->arguments[arg_idx + 1]);
- if (mn->basetype_const) {
- fail = true;
+ int min = builtin_func_const_args[constarg_idx].min;
+ int max = builtin_func_const_args[constarg_idx].max;
+
+ bool error = false;
+ if (p_func->arguments[arg]->type == Node::TYPE_VARIABLE) {
+ const VariableNode *vn = (VariableNode *)p_func->arguments[arg];
+
+ bool is_const = false;
+ ConstantNode::Value value;
+ value.sint = -1;
+
+ _find_identifier(p_block, false, p_function_info, vn->name, nullptr, nullptr, &is_const, nullptr, nullptr, &value);
+ if (!is_const || value.sint < min || value.sint > max) {
+ error = true;
}
- } else { // TYPE_VARIABLE
- VariableNode *vn = static_cast<VariableNode *>(p_func->arguments[arg_idx + 1]);
- if (vn->is_const) {
- fail = true;
- } else {
- StringName varname = vn->name;
- if (shader->uniforms.has(varname)) {
- fail = true;
- } else {
- if (shader->varyings.has(varname)) {
- _set_error(vformat("Varyings cannot be passed for '%s' parameter!", "out"));
- return false;
- }
- if (p_function_info.built_ins.has(varname)) {
- BuiltInInfo info = p_function_info.built_ins[varname];
- if (info.constant) {
- fail = true;
- }
+ } else {
+ if (p_func->arguments[arg]->type == Node::TYPE_CONSTANT) {
+ ConstantNode *cn = (ConstantNode *)p_func->arguments[arg];
+
+ if (cn->get_datatype() == TYPE_INT && cn->values.size() == 1) {
+ int value = cn->values[0].sint;
+
+ if (value < min || value > max) {
+ error = true;
}
+ } else {
+ error = true;
}
+ } else {
+ error = true;
}
}
- if (fail) {
- _set_error(vformat("Constant value cannot be passed for '%s' parameter!", "out"));
+ if (error) {
+ _set_error(vformat("Expected integer constant within %s..%s range.", min, max));
return false;
}
+ }
+ constarg_idx++;
+ }
+ }
- StringName var_name;
- if (p_func->arguments[arg_idx + 1]->type == Node::TYPE_ARRAY) {
- var_name = static_cast<const ArrayNode *>(p_func->arguments[arg_idx + 1])->name;
- } else if (p_func->arguments[arg_idx + 1]->type == Node::TYPE_MEMBER) {
- Node *n = static_cast<const MemberNode *>(p_func->arguments[arg_idx + 1])->owner;
- while (n->type == Node::TYPE_MEMBER) {
- n = static_cast<const MemberNode *>(n)->owner;
- }
- if (n->type != Node::TYPE_VARIABLE && n->type != Node::TYPE_ARRAY) {
+ //make sure its not an out argument used in the wrong way
+ int outarg_idx = 0;
+ while (builtin_func_out_args[outarg_idx].name) {
+ if (String(name) == builtin_func_out_args[outarg_idx].name) {
+ for (int arg = 0; arg < BuiltinFuncOutArgs::MAX_ARGS; arg++) {
+ int arg_idx = builtin_func_out_args[outarg_idx].arguments[arg];
+ if (arg_idx == -1) {
+ break;
+ }
+ if (arg_idx < argcount) {
+ if (p_func->arguments[arg_idx + 1]->type != Node::TYPE_VARIABLE && p_func->arguments[arg_idx + 1]->type != Node::TYPE_MEMBER && p_func->arguments[arg_idx + 1]->type != Node::TYPE_ARRAY) {
_set_error("Argument " + itos(arg_idx + 1) + " of function '" + String(name) + "' is not a variable, array or member.");
return false;
}
- if (n->type == Node::TYPE_VARIABLE) {
- var_name = static_cast<const VariableNode *>(n)->name;
- } else { // TYPE_ARRAY
- var_name = static_cast<const ArrayNode *>(n)->name;
+
+ if (p_func->arguments[arg_idx + 1]->type == Node::TYPE_ARRAY) {
+ ArrayNode *mn = static_cast<ArrayNode *>(p_func->arguments[arg_idx + 1]);
+ if (mn->is_const) {
+ fail = true;
+ }
+ } else if (p_func->arguments[arg_idx + 1]->type == Node::TYPE_MEMBER) {
+ MemberNode *mn = static_cast<MemberNode *>(p_func->arguments[arg_idx + 1]);
+ if (mn->basetype_const) {
+ fail = true;
+ }
+ } else { // TYPE_VARIABLE
+ VariableNode *vn = static_cast<VariableNode *>(p_func->arguments[arg_idx + 1]);
+ if (vn->is_const) {
+ fail = true;
+ } else {
+ StringName varname = vn->name;
+ if (shader->uniforms.has(varname)) {
+ fail = true;
+ } else {
+ if (shader->varyings.has(varname)) {
+ _set_error(vformat("Varyings cannot be passed for '%s' parameter!", "out"));
+ return false;
+ }
+ if (p_function_info.built_ins.has(varname)) {
+ BuiltInInfo info = p_function_info.built_ins[varname];
+ if (info.constant) {
+ fail = true;
+ }
+ }
+ }
+ }
}
- } else { // TYPE_VARIABLE
- var_name = static_cast<const VariableNode *>(p_func->arguments[arg_idx + 1])->name;
- }
- const BlockNode *b = p_block;
- bool valid = false;
- while (b) {
- if (b->variables.has(var_name) || p_function_info.built_ins.has(var_name)) {
- valid = true;
- break;
+ if (fail) {
+ _set_error(vformat("Constant value cannot be passed for '%s' parameter!", "out"));
+ return false;
}
- if (b->parent_function) {
- for (int i = 0; i < b->parent_function->arguments.size(); i++) {
- if (b->parent_function->arguments[i].name == var_name) {
- valid = true;
- break;
+
+ StringName var_name;
+ if (p_func->arguments[arg_idx + 1]->type == Node::TYPE_ARRAY) {
+ var_name = static_cast<const ArrayNode *>(p_func->arguments[arg_idx + 1])->name;
+ } else if (p_func->arguments[arg_idx + 1]->type == Node::TYPE_MEMBER) {
+ Node *n = static_cast<const MemberNode *>(p_func->arguments[arg_idx + 1])->owner;
+ while (n->type == Node::TYPE_MEMBER) {
+ n = static_cast<const MemberNode *>(n)->owner;
+ }
+ if (n->type != Node::TYPE_VARIABLE && n->type != Node::TYPE_ARRAY) {
+ _set_error("Argument " + itos(arg_idx + 1) + " of function '" + String(name) + "' is not a variable, array or member.");
+ return false;
+ }
+ if (n->type == Node::TYPE_VARIABLE) {
+ var_name = static_cast<const VariableNode *>(n)->name;
+ } else { // TYPE_ARRAY
+ var_name = static_cast<const ArrayNode *>(n)->name;
+ }
+ } else { // TYPE_VARIABLE
+ var_name = static_cast<const VariableNode *>(p_func->arguments[arg_idx + 1])->name;
+ }
+ const BlockNode *b = p_block;
+ bool valid = false;
+ while (b) {
+ if (b->variables.has(var_name) || p_function_info.built_ins.has(var_name)) {
+ valid = true;
+ break;
+ }
+ if (b->parent_function) {
+ for (int i = 0; i < b->parent_function->arguments.size(); i++) {
+ if (b->parent_function->arguments[i].name == var_name) {
+ valid = true;
+ break;
+ }
}
}
+ b = b->parent_block;
}
- b = b->parent_block;
- }
- if (!valid) {
- _set_error("Argument " + itos(arg_idx + 1) + " of function '" + String(name) + "' can only take a local variable, array or member.");
- return false;
+ if (!valid) {
+ _set_error("Argument " + itos(arg_idx + 1) + " of function '" + String(name) + "' can only take a local variable, array or member.");
+ return false;
+ }
}
}
}
-
outarg_idx++;
}
//implicitly convert values if possible
@@ -9157,10 +9263,16 @@ Error ShaderLanguage::complete(const String &p_code, const Map<StringName, Funct
}
int idx2 = 0;
- int out_arg = -1;
+ Set<int> out_args;
while (builtin_func_out_args[idx2].name != nullptr) {
if (builtin_func_out_args[idx2].name == builtin_func_defs[idx].name) {
- out_arg = builtin_func_out_args[idx2].argument;
+ for (int i = 0; i < BuiltinFuncOutArgs::MAX_ARGS; i++) {
+ int arg = builtin_func_out_args[idx2].arguments[i];
+ if (arg == -1) {
+ break;
+ }
+ out_args.insert(arg);
+ }
break;
}
idx2++;
@@ -9197,7 +9309,7 @@ Error ShaderLanguage::complete(const String &p_code, const Map<StringName, Funct
calltip += char32_t(0xFFFF);
}
- if (out_arg >= 0 && i == out_arg) {
+ if (out_args.has(i)) {
calltip += "out ";
}
diff --git a/servers/rendering/shader_language.h b/servers/rendering/shader_language.h
index 4740da0c37..c82f71d10d 100644
--- a/servers/rendering/shader_language.h
+++ b/servers/rendering/shader_language.h
@@ -949,8 +949,16 @@ private:
};
struct BuiltinFuncOutArgs { //arguments used as out in built in functions
+ enum { MAX_ARGS = 2 };
const char *name;
- int argument;
+ const int arguments[MAX_ARGS];
+ };
+
+ struct BuiltinFuncConstArgs {
+ const char *name;
+ int arg;
+ int min;
+ int max;
};
CompletionType completion_type;
@@ -966,6 +974,7 @@ private:
bool _get_completable_identifier(BlockNode *p_block, CompletionType p_type, StringName &identifier);
static const BuiltinFuncDef builtin_func_defs[];
static const BuiltinFuncOutArgs builtin_func_out_args[];
+ static const BuiltinFuncConstArgs builtin_func_const_args[];
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);
diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp
index b3efe840b6..039dbc71e3 100644
--- a/servers/rendering_server.cpp
+++ b/servers/rendering_server.cpp
@@ -1942,6 +1942,7 @@ void RenderingServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("directional_shadow_atlas_set_size", "size", "is_16bits"), &RenderingServer::directional_shadow_atlas_set_size);
BIND_ENUM_CONSTANT(SHADOW_QUALITY_HARD);
+ BIND_ENUM_CONSTANT(SHADOW_QUALITY_SOFT_VERY_LOW);
BIND_ENUM_CONSTANT(SHADOW_QUALITY_SOFT_LOW);
BIND_ENUM_CONSTANT(SHADOW_QUALITY_SOFT_MEDIUM);
BIND_ENUM_CONSTANT(SHADOW_QUALITY_SOFT_HIGH);
@@ -2793,14 +2794,14 @@ RenderingServer::RenderingServer() {
GLOBAL_DEF("rendering/shadows/directional_shadow/size", 4096);
GLOBAL_DEF("rendering/shadows/directional_shadow/size.mobile", 2048);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/directional_shadow/size", PropertyInfo(Variant::INT, "rendering/shadows/directional_shadow/size", PROPERTY_HINT_RANGE, "256,16384"));
- GLOBAL_DEF("rendering/shadows/directional_shadow/soft_shadow_quality", 2);
+ GLOBAL_DEF("rendering/shadows/directional_shadow/soft_shadow_quality", 3);
GLOBAL_DEF("rendering/shadows/directional_shadow/soft_shadow_quality.mobile", 0);
- ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/directional_shadow/soft_shadow_quality", PropertyInfo(Variant::INT, "rendering/shadows/directional_shadow/soft_shadow_quality", PROPERTY_HINT_ENUM, "Hard (Fastest),Soft Low (Fast),Soft Medium (Average),Soft High (Slow),Soft Ultra (Slowest)"));
+ ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/directional_shadow/soft_shadow_quality", PropertyInfo(Variant::INT, "rendering/shadows/directional_shadow/soft_shadow_quality", PROPERTY_HINT_ENUM, "Hard (Fastest),Soft Very Low (Faster),Soft Low (Fast),Soft Medium (Average),Soft High (Slow),Soft Ultra (Slowest)"));
GLOBAL_DEF("rendering/shadows/directional_shadow/16_bits", true);
- GLOBAL_DEF("rendering/shadows/shadows/soft_shadow_quality", 2);
+ GLOBAL_DEF("rendering/shadows/shadows/soft_shadow_quality", 3);
GLOBAL_DEF("rendering/shadows/shadows/soft_shadow_quality.mobile", 0);
- ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/shadows/soft_shadow_quality", PropertyInfo(Variant::INT, "rendering/shadows/shadows/soft_shadow_quality", PROPERTY_HINT_ENUM, "Hard (Fastest),Soft Low (Fast),Soft Medium (Average),Soft High (Slow),Soft Ultra (Slowest)"));
+ ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/shadows/soft_shadow_quality", PropertyInfo(Variant::INT, "rendering/shadows/shadows/soft_shadow_quality", PROPERTY_HINT_ENUM, "Hard (Fastest),Soft Very Low (Faster),Soft Low (Fast),Soft Medium (Average),Soft High (Slow),Soft Ultra (Slowest)"));
GLOBAL_DEF("rendering/2d/shadow_atlas/size", 2048);
@@ -2810,6 +2811,12 @@ RenderingServer::RenderingServer() {
PropertyInfo(Variant::INT,
"rendering/vulkan/rendering/back_end",
PROPERTY_HINT_ENUM, "Forward Clustered (Supports Desktop Only),Forward Mobile (Supports Desktop and Mobile)"));
+ // Already defined in RenderingDeviceVulkan::initialize which runs before this code.
+ // We re-define them here just for doctool's sake. Make sure to keep default values in sync.
+ GLOBAL_DEF("rendering/vulkan/staging_buffer/block_size_kb", 256);
+ GLOBAL_DEF("rendering/vulkan/staging_buffer/max_size_mb", 128);
+ GLOBAL_DEF("rendering/vulkan/staging_buffer/texture_upload_region_size_px", 64);
+ GLOBAL_DEF("rendering/vulkan/descriptor_pools/max_descriptors_per_pool", 64);
GLOBAL_DEF("rendering/3d/viewport/scale", 1.0);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/3d/viewport/scale",
diff --git a/servers/rendering_server.h b/servers/rendering_server.h
index b50da66d03..b6068afcf1 100644
--- a/servers/rendering_server.h
+++ b/servers/rendering_server.h
@@ -474,6 +474,7 @@ public:
enum ShadowQuality {
SHADOW_QUALITY_HARD,
+ SHADOW_QUALITY_SOFT_VERY_LOW,
SHADOW_QUALITY_SOFT_LOW,
SHADOW_QUALITY_SOFT_MEDIUM,
SHADOW_QUALITY_SOFT_HIGH,
diff --git a/servers/text_server.cpp b/servers/text_server.cpp
index 5087d32a7f..9b64661b0c 100644
--- a/servers/text_server.cpp
+++ b/servers/text_server.cpp
@@ -482,7 +482,7 @@ void TextServer::_bind_methods() {
Vector2 TextServer::get_hex_code_box_size(int p_size, char32_t p_index) const {
int w = ((p_index <= 0xFF) ? 1 : ((p_index <= 0xFFFF) ? 2 : 3));
int sp = MAX(0, w - 1);
- int sz = MAX(1, p_size / 15);
+ int sz = MAX(1, Math::round(p_size / 15.f));
return Vector2(4 + 3 * w + sp + 1, 15) * sz;
}
@@ -520,7 +520,7 @@ void TextServer::draw_hex_code_box(RID p_canvas, int p_size, const Vector2 &p_po
int w = ((p_index <= 0xFF) ? 1 : ((p_index <= 0xFFFF) ? 2 : 3));
int sp = MAX(0, w - 1);
- int sz = MAX(1, p_size / 15);
+ int sz = MAX(1, Math::round(p_size / 15.f));
Size2 size = Vector2(4 + 3 * w + sp, 15) * sz;
Point2 pos = p_pos - Point2i(0, size.y * 0.85);
diff --git a/servers/xr/xr_interface.cpp b/servers/xr/xr_interface.cpp
index bf54158905..ca11df439c 100644
--- a/servers/xr/xr_interface.cpp
+++ b/servers/xr/xr_interface.cpp
@@ -32,6 +32,8 @@
// #include "servers/rendering/renderer_compositor.h"
void XRInterface::_bind_methods() {
+ ADD_SIGNAL(MethodInfo("play_area_changed", PropertyInfo(Variant::INT, "mode")));
+
ClassDB::bind_method(D_METHOD("get_name"), &XRInterface::get_name);
ClassDB::bind_method(D_METHOD("get_capabilities"), &XRInterface::get_capabilities);
@@ -47,12 +49,21 @@ void XRInterface::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_render_target_size"), &XRInterface::get_render_target_size);
ClassDB::bind_method(D_METHOD("get_view_count"), &XRInterface::get_view_count);
+ ClassDB::bind_method(D_METHOD("trigger_haptic_pulse", "action_name", "tracker_name", "frequency", "amplitude", "duration_sec", "delay_sec"), &XRInterface::trigger_haptic_pulse);
+
ADD_GROUP("Interface", "interface_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "interface_is_primary"), "set_primary", "is_primary");
- // we don't have any properties specific to VR yet....
+ // methods and properties specific to VR...
+ ClassDB::bind_method(D_METHOD("supports_play_area_mode", "mode"), &XRInterface::supports_play_area_mode);
+ ClassDB::bind_method(D_METHOD("get_play_area_mode"), &XRInterface::get_play_area_mode);
+ ClassDB::bind_method(D_METHOD("set_play_area_mode", "mode"), &XRInterface::set_play_area_mode);
+ ClassDB::bind_method(D_METHOD("get_play_area"), &XRInterface::get_play_area);
+
+ ADD_GROUP("XR", "xr_");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "xr_play_area_mode", PROPERTY_HINT_ENUM, "Unknown,3DOF,Sitting,Roomscale,Stage"), "set_play_area_mode", "get_play_area_mode");
- // but we do have properties specific to AR....
+ // methods and properties specific to AR....
ClassDB::bind_method(D_METHOD("get_anchor_detection_is_enabled"), &XRInterface::get_anchor_detection_is_enabled);
ClassDB::bind_method(D_METHOD("set_anchor_detection_is_enabled", "enable"), &XRInterface::set_anchor_detection_is_enabled);
ClassDB::bind_method(D_METHOD("get_camera_feed_id"), &XRInterface::get_camera_feed_id);
@@ -63,19 +74,23 @@ void XRInterface::_bind_methods() {
BIND_ENUM_CONSTANT(XR_NONE);
BIND_ENUM_CONSTANT(XR_MONO);
BIND_ENUM_CONSTANT(XR_STEREO);
+ BIND_ENUM_CONSTANT(XR_QUAD);
+ BIND_ENUM_CONSTANT(XR_VR);
BIND_ENUM_CONSTANT(XR_AR);
BIND_ENUM_CONSTANT(XR_EXTERNAL);
- BIND_ENUM_CONSTANT(EYE_MONO);
- BIND_ENUM_CONSTANT(EYE_LEFT);
- BIND_ENUM_CONSTANT(EYE_RIGHT);
-
BIND_ENUM_CONSTANT(XR_NORMAL_TRACKING);
BIND_ENUM_CONSTANT(XR_EXCESSIVE_MOTION);
BIND_ENUM_CONSTANT(XR_INSUFFICIENT_FEATURES);
BIND_ENUM_CONSTANT(XR_UNKNOWN_TRACKING);
BIND_ENUM_CONSTANT(XR_NOT_TRACKING);
-}
+
+ BIND_ENUM_CONSTANT(XR_PLAY_AREA_UNKNOWN);
+ BIND_ENUM_CONSTANT(XR_PLAY_AREA_3DOF);
+ BIND_ENUM_CONSTANT(XR_PLAY_AREA_SITTING);
+ BIND_ENUM_CONSTANT(XR_PLAY_AREA_ROOMSCALE);
+ BIND_ENUM_CONSTANT(XR_PLAY_AREA_STAGE);
+};
bool XRInterface::is_primary() {
XRServer *xr_server = XRServer::get_singleton();
@@ -101,6 +116,29 @@ XRInterface::XRInterface() {}
XRInterface::~XRInterface() {}
+// query if this interface supports this play area mode
+bool XRInterface::supports_play_area_mode(XRInterface::PlayAreaMode p_mode) {
+ return p_mode == XR_PLAY_AREA_UNKNOWN;
+}
+
+// get the current play area mode
+XRInterface::PlayAreaMode XRInterface::get_play_area_mode() const {
+ return XR_PLAY_AREA_UNKNOWN;
+}
+
+// change the play area mode, note that this should return false if the mode is not available
+bool XRInterface::set_play_area_mode(XRInterface::PlayAreaMode p_mode) {
+ return p_mode == XR_PLAY_AREA_UNKNOWN;
+}
+
+// if available, returns an array of vectors denoting the play area the player can move around in
+PackedVector3Array XRInterface::get_play_area() const {
+ // Return an empty array by default.
+ // Note implementation is responsible for applying our reference frame and world scale to the raw data.
+ // `play_area_changed` should be emitted if play area data is available and either the reference frame or world scale changes.
+ return PackedVector3Array();
+};
+
/** these will only be implemented on AR interfaces, so we want dummies for VR **/
bool XRInterface::get_anchor_detection_is_enabled() const {
return false;
@@ -114,9 +152,24 @@ int XRInterface::get_camera_feed_id() {
}
/** these are optional, so we want dummies **/
+PackedStringArray XRInterface::get_suggested_tracker_names() const {
+ PackedStringArray arr;
+
+ return arr;
+}
+
+PackedStringArray XRInterface::get_suggested_pose_names(const StringName &p_tracker_name) const {
+ PackedStringArray arr;
+
+ return arr;
+}
+
XRInterface::TrackingStatus XRInterface::get_tracking_status() const {
return XR_UNKNOWN_TRACKING;
}
void XRInterface::notification(int p_what) {
}
+
+void XRInterface::trigger_haptic_pulse(const String &p_action_name, const StringName &p_tracker_name, double p_frequency, double p_amplitude, double p_duration_sec, double p_delay_sec) {
+}
diff --git a/servers/xr/xr_interface.h b/servers/xr/xr_interface.h
index 534fa18d8a..b489481f75 100644
--- a/servers/xr/xr_interface.h
+++ b/servers/xr/xr_interface.h
@@ -58,14 +58,10 @@ public:
XR_NONE = 0, /* no capabilities */
XR_MONO = 1, /* can be used with mono output */
XR_STEREO = 2, /* can be used with stereo output */
- XR_AR = 4, /* offers a camera feed for AR */
- XR_EXTERNAL = 8 /* renders to external device */
- };
-
- enum Eyes {
- EYE_MONO, /* my son says we should call this EYE_CYCLOPS */
- EYE_LEFT,
- EYE_RIGHT
+ XR_QUAD = 4, /* can be used with quad output (not currently supported) */
+ XR_VR = 8, /* offers VR support */
+ XR_AR = 16, /* offers AR support */
+ XR_EXTERNAL = 32 /* renders to external device */
};
enum TrackingStatus { /* tracking status currently based on AR but we can start doing more with this for VR as well */
@@ -76,7 +72,14 @@ public:
XR_NOT_TRACKING
};
-private:
+ enum PlayAreaMode { /* defines the mode used by the XR interface for tracking */
+ XR_PLAY_AREA_UNKNOWN, /* Area mode not set or not available */
+ XR_PLAY_AREA_3DOF, /* Only support orientation tracking, no positional tracking, area will center around player */
+ XR_PLAY_AREA_SITTING, /* Player is in seated position, limited positional tracking, fixed guardian around player */
+ XR_PLAY_AREA_ROOMSCALE, /* Player is free to move around, full positional tracking */
+ XR_PLAY_AREA_STAGE, /* Same as roomscale but origin point is fixed to the center of the physical space, XRServer.center_on_hmd disabled */
+ };
+
protected:
_THREAD_SAFE_CLASS_
@@ -94,10 +97,18 @@ public:
virtual bool initialize() = 0; /* initialize this interface, if this has an HMD it becomes the primary interface */
virtual void uninitialize() = 0; /* deinitialize this interface */
+ /** input and output **/
+
+ virtual PackedStringArray get_suggested_tracker_names() const; /* return a list of likely/suggested tracker names */
+ virtual PackedStringArray get_suggested_pose_names(const StringName &p_tracker_name) const; /* return a list of likely/suggested action names for this tracker */
virtual TrackingStatus get_tracking_status() const; /* get the status of our current tracking */
+ virtual void trigger_haptic_pulse(const String &p_action_name, const StringName &p_tracker_name, double p_frequency, double p_amplitude, double p_duration_sec, double p_delay_sec = 0); /* trigger a haptic pulse */
/** specific to VR **/
- // nothing yet
+ virtual bool supports_play_area_mode(XRInterface::PlayAreaMode p_mode); /* query if this interface supports this play area mode */
+ virtual XRInterface::PlayAreaMode get_play_area_mode() const; /* get the current play area mode */
+ virtual bool set_play_area_mode(XRInterface::PlayAreaMode p_mode); /* change the play area mode, note that this should return false if the mode is not available */
+ virtual PackedVector3Array get_play_area() const; /* if available, returns an array of vectors denoting the play area the player can move around in */
/** specific to AR **/
virtual bool get_anchor_detection_is_enabled() const;
@@ -124,7 +135,7 @@ public:
};
VARIANT_ENUM_CAST(XRInterface::Capabilities);
-VARIANT_ENUM_CAST(XRInterface::Eyes);
VARIANT_ENUM_CAST(XRInterface::TrackingStatus);
+VARIANT_ENUM_CAST(XRInterface::PlayAreaMode);
#endif // !XR_INTERFACE_H
diff --git a/servers/xr/xr_interface_extension.cpp b/servers/xr/xr_interface_extension.cpp
index 7fdf90770d..80576ac607 100644
--- a/servers/xr/xr_interface_extension.cpp
+++ b/servers/xr/xr_interface_extension.cpp
@@ -41,7 +41,10 @@ void XRInterfaceExtension::_bind_methods() {
GDVIRTUAL_BIND(_initialize);
GDVIRTUAL_BIND(_uninitialize);
- GDVIRTUAL_BIND(_get_tracking_status);
+ GDVIRTUAL_BIND(_supports_play_area_mode, "mode");
+ GDVIRTUAL_BIND(_get_play_area_mode);
+ GDVIRTUAL_BIND(_set_play_area_mode, "mode");
+ GDVIRTUAL_BIND(_get_play_area);
GDVIRTUAL_BIND(_get_render_target_size);
GDVIRTUAL_BIND(_get_view_count);
@@ -54,6 +57,13 @@ void XRInterfaceExtension::_bind_methods() {
GDVIRTUAL_BIND(_process);
GDVIRTUAL_BIND(_notification, "what");
+ /** input and output **/
+
+ GDVIRTUAL_BIND(_get_suggested_tracker_names);
+ GDVIRTUAL_BIND(_get_suggested_pose_names, "tracker_name");
+ GDVIRTUAL_BIND(_get_tracking_status);
+ GDVIRTUAL_BIND(_trigger_haptic_pulse, "action_name", "tracker_name", "frequency", "amplitude", "duration_sec", "delay_sec");
+
// we don't have any properties specific to VR yet....
// but we do have properties specific to AR....
@@ -111,6 +121,22 @@ void XRInterfaceExtension::uninitialize() {
GDVIRTUAL_CALL(_uninitialize);
}
+PackedStringArray XRInterfaceExtension::get_suggested_tracker_names() const {
+ PackedStringArray arr;
+
+ GDVIRTUAL_CALL(_get_suggested_tracker_names, arr);
+
+ return arr;
+}
+
+PackedStringArray XRInterfaceExtension::get_suggested_pose_names(const StringName &p_tracker_name) const {
+ PackedStringArray arr;
+
+ GDVIRTUAL_CALL(_get_suggested_pose_names, p_tracker_name, arr);
+
+ return arr;
+}
+
XRInterface::TrackingStatus XRInterfaceExtension::get_tracking_status() const {
uint32_t status;
@@ -121,6 +147,48 @@ XRInterface::TrackingStatus XRInterfaceExtension::get_tracking_status() const {
return XR_UNKNOWN_TRACKING;
}
+void XRInterfaceExtension::trigger_haptic_pulse(const String &p_action_name, const StringName &p_tracker_name, double p_frequency, double p_amplitude, double p_duration_sec, double p_delay_sec) {
+ GDVIRTUAL_CALL(_trigger_haptic_pulse, p_action_name, p_tracker_name, p_frequency, p_amplitude, p_duration_sec, p_delay_sec);
+}
+
+bool XRInterfaceExtension::supports_play_area_mode(XRInterface::PlayAreaMode p_mode) {
+ bool is_supported;
+
+ if (GDVIRTUAL_CALL(_supports_play_area_mode, p_mode, is_supported)) {
+ return is_supported;
+ }
+
+ return false;
+}
+
+XRInterface::PlayAreaMode XRInterfaceExtension::get_play_area_mode() const {
+ uint32_t mode;
+
+ if (GDVIRTUAL_CALL(_get_play_area_mode, mode)) {
+ return XRInterface::PlayAreaMode(mode);
+ }
+
+ return XRInterface::XR_PLAY_AREA_UNKNOWN;
+}
+
+bool XRInterfaceExtension::set_play_area_mode(XRInterface::PlayAreaMode p_mode) {
+ bool success;
+
+ if (GDVIRTUAL_CALL(_set_play_area_mode, p_mode, success)) {
+ return success;
+ }
+
+ return false;
+}
+
+PackedVector3Array XRInterfaceExtension::get_play_area() const {
+ PackedVector3Array arr;
+
+ GDVIRTUAL_CALL(_get_play_area, arr);
+
+ return arr;
+}
+
/** these will only be implemented on AR interfaces, so we want dummies for VR **/
bool XRInterfaceExtension::get_anchor_detection_is_enabled() const {
bool enabled;
diff --git a/servers/xr/xr_interface_extension.h b/servers/xr/xr_interface_extension.h
index 3b7af4c0a2..763526de96 100644
--- a/servers/xr/xr_interface_extension.h
+++ b/servers/xr/xr_interface_extension.h
@@ -62,11 +62,28 @@ public:
GDVIRTUAL0R(bool, _initialize);
GDVIRTUAL0(_uninitialize);
+ /** input and output **/
+
+ virtual PackedStringArray get_suggested_tracker_names() const override; /* return a list of likely/suggested tracker names */
+ virtual PackedStringArray get_suggested_pose_names(const StringName &p_tracker_name) const override; /* return a list of likely/suggested action names for this tracker */
virtual TrackingStatus get_tracking_status() const override;
+ virtual void trigger_haptic_pulse(const String &p_action_name, const StringName &p_tracker_name, double p_frequency, double p_amplitude, double p_duration_sec, double p_delay_sec = 0) override;
+
+ GDVIRTUAL0RC(PackedStringArray, _get_suggested_tracker_names);
+ GDVIRTUAL1RC(PackedStringArray, _get_suggested_pose_names, const StringName &);
GDVIRTUAL0RC(uint32_t, _get_tracking_status);
+ GDVIRTUAL6(_trigger_haptic_pulse, const String &, const StringName &, double, double, double, double);
/** specific to VR **/
- // nothing yet
+ virtual bool supports_play_area_mode(XRInterface::PlayAreaMode p_mode) override; /* query if this interface supports this play area mode */
+ virtual XRInterface::PlayAreaMode get_play_area_mode() const override; /* get the current play area mode */
+ virtual bool set_play_area_mode(XRInterface::PlayAreaMode p_mode) override; /* change the play area mode, note that this should return false if the mode is not available */
+ virtual PackedVector3Array get_play_area() const override; /* if available, returns an array of vectors denoting the play area the player can move around in */
+
+ GDVIRTUAL1RC(bool, _supports_play_area_mode, XRInterface::PlayAreaMode);
+ GDVIRTUAL0RC(uint32_t, _get_play_area_mode);
+ GDVIRTUAL1RC(bool, _set_play_area_mode, uint32_t);
+ GDVIRTUAL0RC(PackedVector3Array, _get_play_area);
/** specific to AR **/
virtual bool get_anchor_detection_is_enabled() const override;
diff --git a/servers/xr/xr_pose.cpp b/servers/xr/xr_pose.cpp
new file mode 100644
index 0000000000..0d05e62b46
--- /dev/null
+++ b/servers/xr/xr_pose.cpp
@@ -0,0 +1,110 @@
+/*************************************************************************/
+/* xr_pose.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (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 "xr_pose.h"
+
+#include "servers/xr_server.h"
+
+void XRPose::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_has_tracking_data", "has_tracking_data"), &XRPose::set_has_tracking_data);
+ ClassDB::bind_method(D_METHOD("get_has_tracking_data"), &XRPose::get_has_tracking_data);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "has_tracking_data"), "set_has_tracking_data", "get_has_tracking_data");
+
+ ClassDB::bind_method(D_METHOD("set_name", "name"), &XRPose::set_name);
+ ClassDB::bind_method(D_METHOD("get_name"), &XRPose::get_name);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "name"), "set_name", "get_name");
+
+ ClassDB::bind_method(D_METHOD("set_transform", "transform"), &XRPose::set_transform);
+ ClassDB::bind_method(D_METHOD("get_transform"), &XRPose::get_transform);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "transform"), "set_transform", "get_transform");
+ ClassDB::bind_method(D_METHOD("get_adjusted_transform"), &XRPose::get_adjusted_transform);
+
+ ClassDB::bind_method(D_METHOD("set_linear_velocity", "velocity"), &XRPose::set_linear_velocity);
+ ClassDB::bind_method(D_METHOD("get_linear_velocity"), &XRPose::get_linear_velocity);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "linear_velocity"), "set_linear_velocity", "get_linear_velocity");
+
+ ClassDB::bind_method(D_METHOD("set_angular_velocity", "velocity"), &XRPose::set_angular_velocity);
+ ClassDB::bind_method(D_METHOD("get_angular_velocity"), &XRPose::get_angular_velocity);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "angular_velocity"), "set_angular_velocity", "get_angular_velocity");
+}
+
+void XRPose::set_has_tracking_data(const bool p_has_tracking_data) {
+ has_tracking_data = p_has_tracking_data;
+}
+bool XRPose::get_has_tracking_data() const {
+ return has_tracking_data;
+}
+
+void XRPose::set_name(const StringName &p_name) {
+ name = p_name;
+}
+
+StringName XRPose::get_name() const {
+ return name;
+}
+
+void XRPose::set_transform(const Transform3D p_transform) {
+ transform = p_transform;
+}
+
+Transform3D XRPose::get_transform() const {
+ return transform;
+}
+
+Transform3D XRPose::get_adjusted_transform() const {
+ Transform3D adjusted_transform = transform;
+
+ XRServer *xr_server = XRServer::get_singleton();
+ ERR_FAIL_NULL_V(xr_server, transform);
+
+ // apply world scale
+ adjusted_transform.origin *= xr_server->get_world_scale();
+
+ // apply reference frame
+ adjusted_transform = xr_server->get_reference_frame() * adjusted_transform;
+
+ return adjusted_transform;
+}
+
+void XRPose::set_linear_velocity(const Vector3 p_velocity) {
+ linear_velocity = p_velocity;
+}
+
+Vector3 XRPose::get_linear_velocity() const {
+ return linear_velocity;
+}
+
+void XRPose::set_angular_velocity(const Vector3 p_velocity) {
+ angular_velocity = p_velocity;
+}
+
+Vector3 XRPose::get_angular_velocity() const {
+ return angular_velocity;
+}
diff --git a/editor/import/editor_importer_bake_reset.h b/servers/xr/xr_pose.h
index e36ae86181..223e95ddfe 100644
--- a/editor/import/editor_importer_bake_reset.h
+++ b/servers/xr/xr_pose.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* editor_importer_bake_reset.h */
+/* xr_pose.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,27 +28,41 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef RESOURCE_IMPORTER_BAKE_RESET_H
-#define RESOURCE_IMPORTER_BAKE_RESET_H
+#ifndef XR_POSE_H
+#define XR_POSE_H
-#include "scene/main/node.h"
+#include "core/object/ref_counted.h"
-class Skeleton3D;
-class AnimationPlayer;
-class BakeReset {
- struct BakeResetRestBone {
- Transform3D rest_local;
- Basis rest_delta;
- Vector3 loc;
- Vector<int> children;
- };
+class XRPose : public RefCounted {
+ GDCLASS(XRPose, RefCounted);
public:
- void _bake_animation_pose(Node *scene, const String &p_bake_anim);
-
private:
- void _fix_skeleton(Skeleton3D *p_skeleton, Map<StringName, BakeReset::BakeResetRestBone> &r_rest_bones);
- void _align_animations(AnimationPlayer *p_ap, const Map<StringName, BakeResetRestBone> &r_rest_bones);
- void _fetch_reset_animation(AnimationPlayer *p_ap, Map<StringName, BakeResetRestBone> &r_rest_bones, const String &p_bake_anim);
+ bool has_tracking_data = false;
+ StringName name;
+ Transform3D transform;
+ Vector3 linear_velocity;
+ Vector3 angular_velocity;
+
+protected:
+ static void _bind_methods();
+
+public:
+ void set_has_tracking_data(const bool p_has_tracking_data);
+ bool get_has_tracking_data() const;
+
+ void set_name(const StringName &p_name);
+ StringName get_name() const;
+
+ void set_transform(const Transform3D p_transform);
+ Transform3D get_transform() const;
+ Transform3D get_adjusted_transform() const;
+
+ void set_linear_velocity(const Vector3 p_velocity);
+ Vector3 get_linear_velocity() const;
+
+ void set_angular_velocity(const Vector3 p_velocity);
+ Vector3 get_angular_velocity() const;
};
+
#endif
diff --git a/servers/xr/xr_positional_tracker.cpp b/servers/xr/xr_positional_tracker.cpp
index e9383db941..1313a91172 100644
--- a/servers/xr/xr_positional_tracker.cpp
+++ b/servers/xr/xr_positional_tracker.cpp
@@ -37,29 +37,37 @@ void XRPositionalTracker::_bind_methods() {
BIND_ENUM_CONSTANT(TRACKER_HAND_LEFT);
BIND_ENUM_CONSTANT(TRACKER_HAND_RIGHT);
- // this class is read only from GDScript, so we only have access to getters..
ClassDB::bind_method(D_METHOD("get_tracker_type"), &XRPositionalTracker::get_tracker_type);
- ClassDB::bind_method(D_METHOD("get_tracker_id"), &XRPositionalTracker::get_tracker_id);
+ ClassDB::bind_method(D_METHOD("set_tracker_type", "type"), &XRPositionalTracker::set_tracker_type);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "type"), "set_tracker_type", "get_tracker_type");
+
ClassDB::bind_method(D_METHOD("get_tracker_name"), &XRPositionalTracker::get_tracker_name);
- ClassDB::bind_method(D_METHOD("get_joy_id"), &XRPositionalTracker::get_joy_id);
- ClassDB::bind_method(D_METHOD("is_tracking_orientation"), &XRPositionalTracker::is_tracking_orientation);
- ClassDB::bind_method(D_METHOD("get_orientation"), &XRPositionalTracker::get_orientation);
- ClassDB::bind_method(D_METHOD("is_tracking_position"), &XRPositionalTracker::is_tracking_position);
- ClassDB::bind_method(D_METHOD("get_position"), &XRPositionalTracker::get_position);
+ ClassDB::bind_method(D_METHOD("set_tracker_name", "name"), &XRPositionalTracker::set_tracker_name);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "name"), "set_tracker_name", "get_tracker_name");
+
+ ClassDB::bind_method(D_METHOD("get_tracker_desc"), &XRPositionalTracker::get_tracker_desc);
+ ClassDB::bind_method(D_METHOD("set_tracker_desc", "description"), &XRPositionalTracker::set_tracker_desc);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "description"), "set_tracker_desc", "get_tracker_desc");
+
ClassDB::bind_method(D_METHOD("get_tracker_hand"), &XRPositionalTracker::get_tracker_hand);
- ClassDB::bind_method(D_METHOD("get_transform", "adjust_by_reference_frame"), &XRPositionalTracker::get_transform);
- ClassDB::bind_method(D_METHOD("get_mesh"), &XRPositionalTracker::get_mesh);
-
- // these functions we don't want to expose to normal users but do need to be callable from GDNative
- ClassDB::bind_method(D_METHOD("_set_tracker_type", "type"), &XRPositionalTracker::set_tracker_type);
- ClassDB::bind_method(D_METHOD("_set_tracker_name", "name"), &XRPositionalTracker::set_tracker_name);
- ClassDB::bind_method(D_METHOD("_set_joy_id", "joy_id"), &XRPositionalTracker::set_joy_id);
- ClassDB::bind_method(D_METHOD("_set_orientation", "orientation"), &XRPositionalTracker::set_orientation);
- ClassDB::bind_method(D_METHOD("_set_rw_position", "rw_position"), &XRPositionalTracker::set_rw_position);
- ClassDB::bind_method(D_METHOD("_set_mesh", "mesh"), &XRPositionalTracker::set_mesh);
+ ClassDB::bind_method(D_METHOD("set_tracker_hand", "hand"), &XRPositionalTracker::set_tracker_hand);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "hand", PROPERTY_HINT_ENUM, "Unknown,Left,Right"), "set_tracker_hand", "get_tracker_hand");
+
+ ClassDB::bind_method(D_METHOD("has_pose", "name"), &XRPositionalTracker::has_pose);
+ ClassDB::bind_method(D_METHOD("get_pose", "name"), &XRPositionalTracker::get_pose);
+ ClassDB::bind_method(D_METHOD("invalidate_pose", "name"), &XRPositionalTracker::invalidate_pose);
+ ClassDB::bind_method(D_METHOD("set_pose", "name", "transform", "linear_velocity", "angular_velocity"), &XRPositionalTracker::set_pose);
+ ADD_SIGNAL(MethodInfo("pose_changed", PropertyInfo(Variant::OBJECT, "pose", PROPERTY_HINT_RESOURCE_TYPE, "XRPose")));
+
+ ClassDB::bind_method(D_METHOD("get_input", "name"), &XRPositionalTracker::get_input);
+ ClassDB::bind_method(D_METHOD("set_input", "name", "value"), &XRPositionalTracker::set_input);
+ ADD_SIGNAL(MethodInfo("button_pressed", PropertyInfo(Variant::STRING, "name")));
+ ADD_SIGNAL(MethodInfo("button_released", PropertyInfo(Variant::STRING, "name")));
+ ADD_SIGNAL(MethodInfo("input_value_changed", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::FLOAT, "value")));
+ ADD_SIGNAL(MethodInfo("input_axis_changed", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::VECTOR2, "vector")));
+
ClassDB::bind_method(D_METHOD("get_rumble"), &XRPositionalTracker::get_rumble);
ClassDB::bind_method(D_METHOD("set_rumble", "rumble"), &XRPositionalTracker::set_rumble);
-
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rumble"), "set_rumble", "get_rumble");
};
@@ -67,13 +75,6 @@ void XRPositionalTracker::set_tracker_type(XRServer::TrackerType p_type) {
if (type != p_type) {
type = p_type;
hand = XRPositionalTracker::TRACKER_HAND_UNKNOWN;
-
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL(xr_server);
-
- // get a tracker id for our type
- // note if this is a controller this will be 3 or higher but we may change it later.
- tracker_id = xr_server->get_free_tracker_id_for_type(p_type);
};
};
@@ -81,7 +82,8 @@ XRServer::TrackerType XRPositionalTracker::get_tracker_type() const {
return type;
};
-void XRPositionalTracker::set_tracker_name(const String &p_name) {
+void XRPositionalTracker::set_tracker_name(const StringName &p_name) {
+ // Note: this should not be changed after the tracker is registered with the XRServer!
name = p_name;
};
@@ -89,85 +91,13 @@ StringName XRPositionalTracker::get_tracker_name() const {
return name;
};
-int XRPositionalTracker::get_tracker_id() const {
- return tracker_id;
-};
-
-void XRPositionalTracker::set_joy_id(int p_joy_id) {
- joy_id = p_joy_id;
-};
-
-int XRPositionalTracker::get_joy_id() const {
- return joy_id;
-};
-
-bool XRPositionalTracker::is_tracking_orientation() const {
- return tracking_orientation;
-};
-
-void XRPositionalTracker::set_orientation(const Basis &p_orientation) {
- _THREAD_SAFE_METHOD_
-
- tracking_orientation = true; // obviously we have this
- orientation = p_orientation;
-};
-
-Basis XRPositionalTracker::get_orientation() const {
- _THREAD_SAFE_METHOD_
-
- return orientation;
-};
-
-bool XRPositionalTracker::is_tracking_position() const {
- return tracking_position;
-};
-
-void XRPositionalTracker::set_position(const Vector3 &p_position) {
- _THREAD_SAFE_METHOD_
-
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL(xr_server);
- real_t world_scale = xr_server->get_world_scale();
- ERR_FAIL_COND(world_scale == 0);
-
- tracking_position = true; // obviously we have this
- rw_position = p_position / world_scale;
-};
-
-Vector3 XRPositionalTracker::get_position() const {
- _THREAD_SAFE_METHOD_
-
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL_V(xr_server, rw_position);
- real_t world_scale = xr_server->get_world_scale();
-
- return rw_position * world_scale;
-};
-
-void XRPositionalTracker::set_rw_position(const Vector3 &p_rw_position) {
- _THREAD_SAFE_METHOD_
-
- tracking_position = true; // obviously we have this
- rw_position = p_rw_position;
-};
-
-Vector3 XRPositionalTracker::get_rw_position() const {
- _THREAD_SAFE_METHOD_
-
- return rw_position;
-};
-
-void XRPositionalTracker::set_mesh(const Ref<Mesh> &p_mesh) {
- _THREAD_SAFE_METHOD_
-
- mesh = p_mesh;
-};
-
-Ref<Mesh> XRPositionalTracker::get_mesh() const {
- _THREAD_SAFE_METHOD_
+void XRPositionalTracker::set_tracker_desc(const String &p_desc) {
+ description = p_desc;
+}
- return mesh;
-};
+String XRPositionalTracker::get_tracker_desc() const {
+ return description;
+}
XRPositionalTracker::TrackerHand XRPositionalTracker::get_tracker_hand() const {
return hand;
@@ -182,33 +112,98 @@ void XRPositionalTracker::set_tracker_hand(const XRPositionalTracker::TrackerHan
ERR_FAIL_COND((type != XRServer::TRACKER_CONTROLLER) && (p_hand != XRPositionalTracker::TRACKER_HAND_UNKNOWN));
hand = p_hand;
- if (hand == XRPositionalTracker::TRACKER_HAND_LEFT) {
- if (!xr_server->is_tracker_id_in_use_for_type(type, 1)) {
- tracker_id = 1;
- };
- } else if (hand == XRPositionalTracker::TRACKER_HAND_RIGHT) {
- if (!xr_server->is_tracker_id_in_use_for_type(type, 2)) {
- tracker_id = 2;
- };
- };
};
};
-Transform3D XRPositionalTracker::get_transform(bool p_adjust_by_reference_frame) const {
- Transform3D new_transform;
+bool XRPositionalTracker::has_pose(const StringName &p_action_name) const {
+ return poses.has(p_action_name);
+}
- new_transform.basis = get_orientation();
- new_transform.origin = get_position();
+Ref<XRPose> XRPositionalTracker::get_pose(const StringName &p_action_name) const {
+ Ref<XRPose> pose;
- if (p_adjust_by_reference_frame) {
- XRServer *xr_server = XRServer::get_singleton();
- ERR_FAIL_NULL_V(xr_server, new_transform);
+ if (poses.has(p_action_name)) {
+ pose = poses[p_action_name];
+ }
- new_transform = xr_server->get_reference_frame() * new_transform;
- };
+ return pose;
+}
- return new_transform;
-};
+void XRPositionalTracker::invalidate_pose(const StringName &p_action_name) {
+ // only update this if we were tracking this pose
+ if (poses.has(p_action_name)) {
+ // We just set tracking data as invalid, we leave our current transform and velocity data as is so controllers don't suddenly jump to origin.
+ poses[p_action_name]->set_has_tracking_data(false);
+ }
+}
+
+void XRPositionalTracker::set_pose(const StringName &p_action_name, const Transform3D &p_transform, const Vector3 &p_linear_velocity, const Vector3 &p_angular_velocity) {
+ Ref<XRPose> new_pose;
+
+ new_pose.instantiate();
+ new_pose->set_name(p_action_name);
+ new_pose->set_has_tracking_data(true);
+ new_pose->set_transform(p_transform);
+ new_pose->set_linear_velocity(p_linear_velocity);
+ new_pose->set_angular_velocity(p_angular_velocity);
+
+ poses[p_action_name] = new_pose;
+ emit_signal("pose_changed", new_pose);
+
+ // TODO discuss whether we also want to create and emit an InputEventXRPose event
+}
+
+Variant XRPositionalTracker::get_input(const StringName &p_action_name) const {
+ if (inputs.has(p_action_name)) {
+ return inputs[p_action_name];
+ } else {
+ return Variant();
+ }
+}
+
+void XRPositionalTracker::set_input(const StringName &p_action_name, const Variant &p_value) {
+ bool changed = false;
+
+ // XR inputs
+
+ if (inputs.has(p_action_name)) {
+ changed = inputs[p_action_name] != p_value;
+ } else {
+ changed = true;
+ }
+
+ if (changed) {
+ // store the new value
+ inputs[p_action_name] = p_value;
+
+ // emit signals to let the rest of the world know
+ switch (p_value.get_type()) {
+ case Variant::BOOL: {
+ bool pressed = p_value;
+ if (pressed) {
+ emit_signal("button_pressed", p_action_name);
+ } else {
+ emit_signal("button_released", p_action_name);
+ }
+
+ // TODO discuss whether we also want to create and emit an InputEventXRButton event
+ } break;
+ case Variant::FLOAT: {
+ emit_signal("input_value_changed", p_action_name, p_value);
+
+ // TODO discuss whether we also want to create and emit an InputEventXRValue event
+ } break;
+ case Variant::VECTOR2: {
+ emit_signal("input_axis_changed", p_action_name, p_value);
+
+ // TODO discuss whether we also want to create and emit an InputEventXRAxis event
+ } break;
+ default: {
+ // ???
+ } break;
+ }
+ }
+}
real_t XRPositionalTracker::get_rumble() const {
return rumble;
@@ -225,10 +220,6 @@ void XRPositionalTracker::set_rumble(real_t p_rumble) {
XRPositionalTracker::XRPositionalTracker() {
type = XRServer::TRACKER_UNKNOWN;
name = "Unknown";
- joy_id = -1;
- tracker_id = 0;
- tracking_orientation = false;
- tracking_position = false;
hand = TRACKER_HAND_UNKNOWN;
rumble = 0.0;
};
diff --git a/servers/xr/xr_positional_tracker.h b/servers/xr/xr_positional_tracker.h
index 5577582929..69eb105b5a 100644
--- a/servers/xr/xr_positional_tracker.h
+++ b/servers/xr/xr_positional_tracker.h
@@ -33,6 +33,7 @@
#include "core/os/thread_safe.h"
#include "scene/resources/mesh.h"
+#include "servers/xr/xr_pose.h"
#include "servers/xr_server.h"
/**
@@ -57,14 +58,14 @@ public:
private:
XRServer::TrackerType type; // type of tracker
StringName name; // (unique) name of the tracker
- int tracker_id; // tracker index id that is unique per type
+ String description; // description of the tracker, this is interface dependent, for OpenXR this will be the interaction profile bound for to the tracker
+ TrackerHand hand; // if known, the hand this tracker is held in
+
+ Map<StringName, Ref<XRPose>> poses;
+ Map<StringName, Variant> inputs;
+
int joy_id; // if we also have a related joystick entity, the id of the joystick
- bool tracking_orientation; // do we track orientation?
- Basis orientation; // our orientation
- bool tracking_position; // do we track position?
- Vector3 rw_position; // our position "in the real world, so without world_scale applied"
Ref<Mesh> mesh; // when available, a mesh that can be used to render this tracker
- TrackerHand hand; // if known, the hand this tracker is held in
real_t rumble; // rumble strength, 0.0 is off, 1.0 is maximum, note that we only record here, xr_interface is responsible for execution
protected:
@@ -73,27 +74,24 @@ protected:
public:
void set_tracker_type(XRServer::TrackerType p_type);
XRServer::TrackerType get_tracker_type() const;
- void set_tracker_name(const String &p_name);
+ void set_tracker_name(const StringName &p_name);
StringName get_tracker_name() const;
- int get_tracker_id() const;
- void set_joy_id(int p_joy_id);
- int get_joy_id() const;
- bool is_tracking_orientation() const;
- void set_orientation(const Basis &p_orientation);
- Basis get_orientation() const;
- bool is_tracking_position() const;
- void set_position(const Vector3 &p_position); // set position with world_scale applied
- Vector3 get_position() const; // get position with world_scale applied
- void set_rw_position(const Vector3 &p_rw_position);
- Vector3 get_rw_position() const;
+ void set_tracker_desc(const String &p_desc);
+ String get_tracker_desc() const;
XRPositionalTracker::TrackerHand get_tracker_hand() const;
void set_tracker_hand(const XRPositionalTracker::TrackerHand p_hand);
+
+ bool has_pose(const StringName &p_action_name) const;
+ Ref<XRPose> get_pose(const StringName &p_action_name) const;
+ void invalidate_pose(const StringName &p_action_name);
+ void set_pose(const StringName &p_action_name, const Transform3D &p_transform, const Vector3 &p_linear_velocity, const Vector3 &p_angular_velocity);
+
+ Variant get_input(const StringName &p_action_name) const;
+ void set_input(const StringName &p_action_name, const Variant &p_value);
+
+ // TODO replace by new implementation
real_t get_rumble() const;
void set_rumble(real_t p_rumble);
- void set_mesh(const Ref<Mesh> &p_mesh);
- Ref<Mesh> get_mesh() const;
-
- Transform3D get_transform(bool p_adjust_by_reference_frame) const;
XRPositionalTracker();
~XRPositionalTracker() {}
diff --git a/servers/xr_server.cpp b/servers/xr_server.cpp
index 780bd10fc5..d0367ba95e 100644
--- a/servers/xr_server.cpp
+++ b/servers/xr_server.cpp
@@ -54,10 +54,11 @@ void XRServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_interface", "idx"), &XRServer::get_interface);
ClassDB::bind_method(D_METHOD("get_interfaces"), &XRServer::get_interfaces);
ClassDB::bind_method(D_METHOD("find_interface", "name"), &XRServer::find_interface);
- ClassDB::bind_method(D_METHOD("get_tracker_count"), &XRServer::get_tracker_count);
- ClassDB::bind_method(D_METHOD("get_tracker", "idx"), &XRServer::get_tracker);
+
ClassDB::bind_method(D_METHOD("add_tracker", "tracker"), &XRServer::add_tracker);
ClassDB::bind_method(D_METHOD("remove_tracker", "tracker"), &XRServer::remove_tracker);
+ ClassDB::bind_method(D_METHOD("get_trackers", "tracker_types"), &XRServer::get_trackers);
+ ClassDB::bind_method(D_METHOD("get_tracker", "tracker_name"), &XRServer::get_tracker);
ClassDB::bind_method(D_METHOD("get_primary_interface"), &XRServer::get_primary_interface);
ClassDB::bind_method(D_METHOD("set_primary_interface", "interface"), &XRServer::set_primary_interface);
@@ -68,6 +69,7 @@ void XRServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_last_commit_usec"), &XRServer::get_last_commit_usec);
ClassDB::bind_method(D_METHOD("get_last_frame_usec"), &XRServer::get_last_frame_usec);
+ BIND_ENUM_CONSTANT(TRACKER_HEAD);
BIND_ENUM_CONSTANT(TRACKER_CONTROLLER);
BIND_ENUM_CONSTANT(TRACKER_BASESTATION);
BIND_ENUM_CONSTANT(TRACKER_ANCHOR);
@@ -82,8 +84,9 @@ void XRServer::_bind_methods() {
ADD_SIGNAL(MethodInfo("interface_added", PropertyInfo(Variant::STRING_NAME, "interface_name")));
ADD_SIGNAL(MethodInfo("interface_removed", PropertyInfo(Variant::STRING_NAME, "interface_name")));
- ADD_SIGNAL(MethodInfo("tracker_added", PropertyInfo(Variant::STRING_NAME, "tracker_name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id")));
- ADD_SIGNAL(MethodInfo("tracker_removed", PropertyInfo(Variant::STRING_NAME, "tracker_name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id")));
+ ADD_SIGNAL(MethodInfo("tracker_added", PropertyInfo(Variant::STRING_NAME, "tracker_name"), PropertyInfo(Variant::INT, "type")));
+ ADD_SIGNAL(MethodInfo("tracker_updated", PropertyInfo(Variant::STRING_NAME, "tracker_name"), PropertyInfo(Variant::INT, "type")));
+ ADD_SIGNAL(MethodInfo("tracker_removed", PropertyInfo(Variant::STRING_NAME, "tracker_name"), PropertyInfo(Variant::INT, "type")));
};
double XRServer::get_world_scale() const {
@@ -113,35 +116,43 @@ Transform3D XRServer::get_reference_frame() const {
};
void XRServer::center_on_hmd(RotationMode p_rotation_mode, bool p_keep_height) {
- if (primary_interface != nullptr) {
- // clear our current reference frame or we'll end up double adjusting it
+ if (primary_interface == nullptr) {
+ return;
+ }
+
+ if (primary_interface->get_play_area_mode() == XRInterface::XR_PLAY_AREA_STAGE) {
+ // center_on_hmd is not available in this mode
reference_frame = Transform3D();
+ return;
+ }
- // requesting our EYE_MONO transform should return our current HMD position
- Transform3D new_reference_frame = primary_interface->get_camera_transform();
+ // clear our current reference frame or we'll end up double adjusting it
+ reference_frame = Transform3D();
- // remove our tilt
- if (p_rotation_mode == 1) {
- // take the Y out of our Z
- new_reference_frame.basis.set_axis(2, Vector3(new_reference_frame.basis.elements[0][2], 0.0, new_reference_frame.basis.elements[2][2]).normalized());
+ // requesting our EYE_MONO transform should return our current HMD position
+ Transform3D new_reference_frame = primary_interface->get_camera_transform();
- // Y is straight up
- new_reference_frame.basis.set_axis(1, Vector3(0.0, 1.0, 0.0));
+ // remove our tilt
+ if (p_rotation_mode == 1) {
+ // take the Y out of our Z
+ new_reference_frame.basis.set_axis(2, Vector3(new_reference_frame.basis.elements[0][2], 0.0, new_reference_frame.basis.elements[2][2]).normalized());
- // and X is our cross reference
- new_reference_frame.basis.set_axis(0, new_reference_frame.basis.get_axis(1).cross(new_reference_frame.basis.get_axis(2)).normalized());
- } else if (p_rotation_mode == 2) {
- // remove our rotation, we're only interesting in centering on position
- new_reference_frame.basis = Basis();
- };
+ // Y is straight up
+ new_reference_frame.basis.set_axis(1, Vector3(0.0, 1.0, 0.0));
- // don't negate our height
- if (p_keep_height) {
- new_reference_frame.origin.y = 0.0;
- };
+ // and X is our cross reference
+ new_reference_frame.basis.set_axis(0, new_reference_frame.basis.get_axis(1).cross(new_reference_frame.basis.get_axis(2)).normalized());
+ } else if (p_rotation_mode == 2) {
+ // remove our rotation, we're only interesting in centering on position
+ new_reference_frame.basis = Basis();
+ };
- reference_frame = new_reference_frame.inverse();
+ // don't negate our height
+ if (p_keep_height) {
+ new_reference_frame.origin.y = 0.0;
};
+
+ reference_frame = new_reference_frame.inverse();
};
Transform3D XRServer::get_hmd_transform() {
@@ -224,106 +235,121 @@ Array XRServer::get_interfaces() const {
return ret;
};
-/*
- A little extra info on the tracker ids, these are unique per tracker type so we get some consistency in recognising our trackers, specifically controllers.
-
- The first controller that is turned of will get ID 1, the second will get ID 2, etc.
- The magic happens when one of the controllers is turned off, say controller 1 turns off, controller 2 will remain controller 2, controller 3 will remain controller 3.
- If controller number 1 is turned on again it again gets ID 1 unless another new controller was turned on since.
-
- The most likely scenario however is a controller that runs out of battery and another controller being used to replace it.
- Because the controllers are often linked to physical objects, say you're holding a shield in controller 1, your left hand, and a gun in controller 2, your right hand, and controller 1 dies:
- - using our tracker index would suddenly make the gun disappear and the shield jump into your right hand because controller 2 becomes controller 1.
- - using this approach the shield disappears or is no longer tracked, but the gun stays firmly in your right hand because that is still controller 2, further more, if controller 1 is replaced the shield will return.
-*/
-
-bool XRServer::is_tracker_id_in_use_for_type(TrackerType p_tracker_type, int p_tracker_id) const {
- for (int i = 0; i < trackers.size(); i++) {
- if (trackers[i]->get_tracker_type() == p_tracker_type && trackers[i]->get_tracker_id() == p_tracker_id) {
- return true;
- };
- };
-
- // all good
- return false;
+Ref<XRInterface> XRServer::get_primary_interface() const {
+ return primary_interface;
};
-int XRServer::get_free_tracker_id_for_type(TrackerType p_tracker_type) {
- // We start checking at 1, 0 means that it's not a controller..
- // Note that for controller we reserve:
- // - 1 for the left hand controller and
- // - 2 for the right hand controller
- // so we start at 3 :)
- int tracker_id = p_tracker_type == XRServer::TRACKER_CONTROLLER ? 3 : 1;
-
- while (is_tracker_id_in_use_for_type(p_tracker_type, tracker_id)) {
- // try the next one
- tracker_id++;
- };
+void XRServer::set_primary_interface(const Ref<XRInterface> &p_primary_interface) {
+ if (p_primary_interface.is_null()) {
+ print_verbose("XR: Clearing primary interface");
+ primary_interface.unref();
+ } else {
+ primary_interface = p_primary_interface;
- return tracker_id;
+ print_verbose("XR: Primary interface set to: " + primary_interface->get_name());
+ }
};
void XRServer::add_tracker(Ref<XRPositionalTracker> p_tracker) {
ERR_FAIL_COND(p_tracker.is_null());
- trackers.push_back(p_tracker);
- emit_signal(SNAME("tracker_added"), p_tracker->get_tracker_name(), p_tracker->get_tracker_type(), p_tracker->get_tracker_id());
+ StringName tracker_name = p_tracker->get_tracker_name();
+ if (trackers.has(tracker_name)) {
+ if (trackers[tracker_name] != p_tracker) {
+ // We already have a tracker with this name, we're going to replace it
+ trackers[tracker_name] = p_tracker;
+ emit_signal(SNAME("tracker_updated"), tracker_name, p_tracker->get_tracker_type());
+ }
+ } else {
+ trackers[tracker_name] = p_tracker;
+ emit_signal(SNAME("tracker_added"), tracker_name, p_tracker->get_tracker_type());
+ }
};
void XRServer::remove_tracker(Ref<XRPositionalTracker> p_tracker) {
ERR_FAIL_COND(p_tracker.is_null());
- int idx = -1;
- for (int i = 0; i < trackers.size(); i++) {
- if (trackers[i] == p_tracker) {
- idx = i;
- break;
- };
- };
-
- ERR_FAIL_COND(idx == -1);
+ StringName tracker_name = p_tracker->get_tracker_name();
+ if (trackers.has(tracker_name)) {
+ // we send the signal right before removing it
+ emit_signal(SNAME("tracker_removed"), p_tracker->get_tracker_name(), p_tracker->get_tracker_type());
- emit_signal(SNAME("tracker_removed"), p_tracker->get_tracker_name(), p_tracker->get_tracker_type(), p_tracker->get_tracker_id());
- trackers.remove(idx);
+ // and remove it
+ trackers.erase(tracker_name);
+ }
};
-int XRServer::get_tracker_count() const {
- return trackers.size();
-};
+Dictionary XRServer::get_trackers(int p_tracker_types) {
+ Dictionary res;
-Ref<XRPositionalTracker> XRServer::get_tracker(int p_index) const {
- ERR_FAIL_INDEX_V(p_index, trackers.size(), Ref<XRPositionalTracker>());
+ for (int i = 0; i < trackers.size(); i++) {
+ Ref<XRPositionalTracker> tracker = trackers.get_value_at_index(i);
+ if (tracker.is_valid() && (tracker->get_tracker_type() & p_tracker_types) != 0) {
+ res[tracker->get_tracker_name()] = tracker;
+ }
+ }
- return trackers[p_index];
+ return res;
+}
+
+Ref<XRPositionalTracker> XRServer::get_tracker(const StringName &p_name) const {
+ if (trackers.has(p_name)) {
+ return trackers[p_name];
+ } else {
+ // tracker hasn't been registered yet, which is fine, no need to spam the error log...
+ return Ref<XRPositionalTracker>();
+ }
};
-Ref<XRPositionalTracker> XRServer::find_by_type_and_id(TrackerType p_tracker_type, int p_tracker_id) const {
- ERR_FAIL_COND_V(p_tracker_id == 0, Ref<XRPositionalTracker>());
+PackedStringArray XRServer::get_suggested_tracker_names() const {
+ PackedStringArray arr;
- for (int i = 0; i < trackers.size(); i++) {
- if (trackers[i]->get_tracker_type() == p_tracker_type && trackers[i]->get_tracker_id() == p_tracker_id) {
- return trackers[i];
- };
- };
+ for (int i = 0; i < interfaces.size(); i++) {
+ Ref<XRInterface> interface = interfaces[i];
+ PackedStringArray interface_arr = interface->get_suggested_tracker_names();
+ for (int a = 0; a < interface_arr.size(); a++) {
+ if (!arr.has(interface_arr[a])) {
+ arr.push_back(interface_arr[a]);
+ }
+ }
+ }
- return Ref<XRPositionalTracker>();
-};
+ if (arr.size() == 0) {
+ // no suggestions from our tracker? include our defaults
+ arr.push_back(String("head"));
+ arr.push_back(String("left_hand"));
+ arr.push_back(String("right_hand"));
+ }
-Ref<XRInterface> XRServer::get_primary_interface() const {
- return primary_interface;
-};
+ return arr;
+}
-void XRServer::set_primary_interface(const Ref<XRInterface> &p_primary_interface) {
- if (p_primary_interface.is_null()) {
- print_verbose("XR: Clearing primary interface");
- primary_interface.unref();
- } else {
- primary_interface = p_primary_interface;
+PackedStringArray XRServer::get_suggested_pose_names(const StringName &p_tracker_name) const {
+ PackedStringArray arr;
- print_verbose("XR: Primary interface set to: " + primary_interface->get_name());
+ for (int i = 0; i < interfaces.size(); i++) {
+ Ref<XRInterface> interface = interfaces[i];
+ PackedStringArray interface_arr = interface->get_suggested_pose_names(p_tracker_name);
+ for (int a = 0; a < interface_arr.size(); a++) {
+ if (!arr.has(interface_arr[a])) {
+ arr.push_back(interface_arr[a]);
+ }
+ }
}
-};
+
+ if (arr.size() == 0) {
+ // no suggestions from our tracker? include our defaults
+ arr.push_back(String("default"));
+
+ if ((p_tracker_name == "left_hand") || (p_tracker_name == "right_hand")) {
+ arr.push_back(String("aim"));
+ arr.push_back(String("grip"));
+ arr.push_back(String("skeleton"));
+ }
+ }
+
+ return arr;
+}
uint64_t XRServer::get_last_process_usec() {
return last_process_usec;
@@ -373,8 +399,9 @@ XRServer::~XRServer() {
interfaces.remove(0);
}
+ // TODO pretty sure there is a clear function or something...
while (trackers.size() > 0) {
- trackers.remove(0);
+ trackers.erase(trackers.get_key_at_index(0));
}
singleton = nullptr;
diff --git a/servers/xr_server.h b/servers/xr_server.h
index 6d07263755..48d73cac9a 100644
--- a/servers/xr_server.h
+++ b/servers/xr_server.h
@@ -60,9 +60,10 @@ class XRServer : public Object {
public:
enum TrackerType {
- TRACKER_CONTROLLER = 0x01, /* tracks a controller */
- TRACKER_BASESTATION = 0x02, /* tracks location of a base station */
- TRACKER_ANCHOR = 0x04, /* tracks an anchor point, used in AR to track a real live location */
+ TRACKER_HEAD = 0x01, /* tracks the position of the players head (or in case of handheld AR, location of the phone) */
+ TRACKER_CONTROLLER = 0x02, /* tracks a controller */
+ TRACKER_BASESTATION = 0x04, /* tracks location of a base station */
+ TRACKER_ANCHOR = 0x08, /* tracks an anchor point, used in AR to track a real live location */
TRACKER_UNKNOWN = 0x80, /* unknown tracker */
TRACKER_ANY_KNOWN = 0x7f, /* all except unknown */
@@ -77,7 +78,7 @@ public:
private:
Vector<Ref<XRInterface>> interfaces;
- Vector<Ref<XRPositionalTracker>> trackers;
+ Dictionary trackers;
Ref<XRInterface> primary_interface; /* we'll identify one interface as primary, this will be used by our viewports */
@@ -164,13 +165,17 @@ public:
Our trackers are objects that expose the orientation and position of physical devices such as controller, anchor points, etc.
They are created and managed by our active AR/VR interfaces.
*/
- bool is_tracker_id_in_use_for_type(TrackerType p_tracker_type, int p_tracker_id) const;
- int get_free_tracker_id_for_type(TrackerType p_tracker_type);
void add_tracker(Ref<XRPositionalTracker> p_tracker);
void remove_tracker(Ref<XRPositionalTracker> p_tracker);
- int get_tracker_count() const;
- Ref<XRPositionalTracker> get_tracker(int p_index) const;
- Ref<XRPositionalTracker> find_by_type_and_id(TrackerType p_tracker_type, int p_tracker_id) const;
+ Dictionary get_trackers(int p_tracker_types);
+ Ref<XRPositionalTracker> get_tracker(const StringName &p_name) const;
+
+ /*
+ We don't know which trackers and actions will existing during runtime but we can request suggested names from our interfaces to help our IDE UI.
+ */
+ PackedStringArray get_suggested_tracker_names() const;
+ PackedStringArray get_suggested_pose_names(const StringName &p_tracker_name) const;
+ // Q: Should we add get_suggested_input_names and get_suggested_haptic_names even though we don't use them for the IDE?
uint64_t get_last_process_usec();
uint64_t get_last_commit_usec();
diff --git a/tests/test_geometry_3d.h b/tests/test_geometry_3d.h
index 40cb8bc07a..ae30737fe2 100644
--- a/tests/test_geometry_3d.h
+++ b/tests/test_geometry_3d.h
@@ -151,6 +151,10 @@ TEST_CASE("[Geometry3D] Build Sphere Planes") {
}
}
+#if false
+// This test has been temporarily disabled because it's really fragile and
+// breaks if calculations change very slightly. For example, it breaks when
+// using doubles, and it breaks when making Plane calculations more accurate.
TEST_CASE("[Geometry3D] Build Convex Mesh") {
struct Case {
Vector<Plane> object;
@@ -172,6 +176,7 @@ TEST_CASE("[Geometry3D] Build Convex Mesh") {
CHECK(mesh.vertices.size() == current_case.want_vertices);
}
}
+#endif
TEST_CASE("[Geometry3D] Clip Polygon") {
struct Case {
@@ -186,7 +191,7 @@ TEST_CASE("[Geometry3D] Clip Polygon") {
Vector<Plane> box_planes = Geometry3D::build_box_planes(Vector3(5, 10, 5));
Vector<Vector3> box = Geometry3D::compute_convex_mesh_points(&box_planes[0], box_planes.size());
tt.push_back(Case(Plane(), box, true));
- tt.push_back(Case(Plane(Vector3(0, 3, 0), Vector3(0, 1, 0)), box, false));
+ tt.push_back(Case(Plane(Vector3(0, 1, 0), Vector3(0, 3, 0)), box, false));
for (int i = 0; i < tt.size(); ++i) {
Case current_case = tt[i];
Vector<Vector3> output = Geometry3D::clip_polygon(current_case.polygon, current_case.clipping_plane);
diff --git a/tests/test_tools.h b/tests/test_tools.h
index 3ea953cb07..ec18610f04 100644
--- a/tests/test_tools.h
+++ b/tests/test_tools.h
@@ -49,7 +49,7 @@ struct ErrorDetector {
has_error = false;
}
- static void _detect_error(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, ErrorHandlerType p_type) {
+ static void _detect_error(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) {
ErrorDetector *self = (ErrorDetector *)p_self;
self->has_error = true;
}
diff --git a/thirdparty/README.md b/thirdparty/README.md
index e7ceea6268..964ac6246e 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -255,25 +255,6 @@ Files extracted from upstream source:
- `LICENSE`
-## libsimplewebm
-
-- Upstream: https://github.com/zaps166/libsimplewebm
-- Version: git (fe57fd3cfe6c0af4c6af110b1f84a90cf191d943, 2019)
-- License: MIT (main), BSD-3-Clause (libwebm)
-
-This contains libwebm, but the version in use is updated from the one used by libsimplewebm,
-and may have *unmarked* alterations from that.
-
-Files extracted from upstream source:
-
-- all the .cpp, .hpp files in the main folder except `example.cpp`
-- LICENSE
-
-Important: Some files have Godot-made changes.
-They are marked with `// -- GODOT start --` and `// -- GODOT end --`
-comments.
-
-
## libtheora
- Upstream: https://www.theora.org
@@ -303,23 +284,6 @@ Files extracted from upstream source:
- COPYING
-## libvpx
-
-- Upstream: https://chromium.googlesource.com/webm/libvpx/
-- Version: 1.6.0 (2016)
-- License: BSD-3-Clause
-
-Files extracted from upstream source:
-
-TODO.
-
-Important: File `libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c` has
-Godot-made change marked with `// -- GODOT --` comments.
-
-The files `libvpx/third_party/android/cpu-features.{c,h}` were copied
-from the Android NDK r18.
-
-
## libwebp
- Upstream: https://chromium.googlesource.com/webm/libwebp/
@@ -347,11 +311,13 @@ File extracted from upstream release tarball:
- All `*.h` from `include/mbedtls/` to `thirdparty/mbedtls/include/mbedtls/`.
- All `*.c` from `library/` to `thirdparty/mbedtls/library/`.
- `LICENSE` and `apache-2.0.txt` files.
-- Applied the patch in `thirdparty/mbedtls/patches/1453.diff` (upstream PR:
+- Applied the patch in `patches/1453.diff` (upstream PR:
https://github.com/ARMmbed/mbedtls/pull/1453).
-- Applied the patch in `thirdparty/mbedtls/patches/padlock.diff`. This disables
- VIA padlock support which defines a symbol `unsupported` which clashes with
- a pre-defined symbol.
+- Applied the patch in `patches/padlock.diff`. This disables VIA padlock
+ support which defines a symbol `unsupported` which clashes with a
+ pre-defined symbol.
+- Applied the patch in `patches/pr4948-fix-clang12-opt.patch`. Upstream bugfix
+ from PR 4948 to fix a bug caused by Clang 12 optimizations.
- Added 2 files `godot_core_mbedtls_platform.c` and `godot_core_mbedtls_config.h`
providing configuration for light bundling with core.
@@ -529,23 +495,6 @@ Patch files are provided in `oidn/patches/`.
- scripts/resource_to_cpp.py (used in modules/denoise/resource_to_cpp.py)
-## opus
-
-- Upstream: https://opus-codec.org
-- Version: 1.1.5 (opus) and 0.8 (opusfile) (2017)
-- License: BSD-3-Clause
-
-Files extracted from upstream source:
-
-- all .c and .h files in src/ (both opus and opusfile)
-- all .h files in include/ (both opus and opusfile) as opus/
-- remove unused `opus_demo.c`,
-- remove `http.c`, `wincerts.c` and `winerrno.h` (part of
- unused libopusurl)
-- celt/ and silk/ subfolders
-- COPYING
-
-
## pcre2
- Upstream: http://www.pcre.org
diff --git a/thirdparty/libsimplewebm/LICENSE b/thirdparty/libsimplewebm/LICENSE
deleted file mode 100644
index 058633ac18..0000000000
--- a/thirdparty/libsimplewebm/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2016 Błażej Szczygieł
-
-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.
diff --git a/thirdparty/libsimplewebm/OpusVorbisDecoder.cpp b/thirdparty/libsimplewebm/OpusVorbisDecoder.cpp
deleted file mode 100644
index b5824b17be..0000000000
--- a/thirdparty/libsimplewebm/OpusVorbisDecoder.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- MIT License
-
- Copyright (c) 2016 Błażej Szczygieł
-
- 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 "OpusVorbisDecoder.hpp"
-
-#include <vorbis/codec.h>
-#include <opus/opus.h>
-
-#include <string.h>
-
-struct VorbisDecoder
-{
- vorbis_info info;
- vorbis_dsp_state dspState;
- vorbis_block block;
- ogg_packet op;
-
- bool hasDSPState, hasBlock;
-};
-
-/**/
-
-OpusVorbisDecoder::OpusVorbisDecoder(const WebMDemuxer &demuxer) :
- m_vorbis(NULL), m_opus(NULL),
- m_numSamples(0)
-{
- switch (demuxer.getAudioCodec())
- {
- case WebMDemuxer::AUDIO_VORBIS:
- m_channels = demuxer.getChannels();
- if (openVorbis(demuxer))
- return;
- break;
- case WebMDemuxer::AUDIO_OPUS:
- m_channels = demuxer.getChannels();
- if (openOpus(demuxer))
- return;
- break;
- default:
- return;
- }
- close();
-}
-OpusVorbisDecoder::~OpusVorbisDecoder()
-{
- close();
-}
-
-bool OpusVorbisDecoder::isOpen() const
-{
- return (m_vorbis || m_opus);
-}
-
-bool OpusVorbisDecoder::getPCMS16(WebMFrame &frame, short *buffer, int &numOutSamples)
-{
- if (m_vorbis)
- {
- m_vorbis->op.packet = frame.buffer;
- m_vorbis->op.bytes = frame.bufferSize;
-
- if (vorbis_synthesis(&m_vorbis->block, &m_vorbis->op))
- return false;
- if (vorbis_synthesis_blockin(&m_vorbis->dspState, &m_vorbis->block))
- return false;
-
- const int maxSamples = getBufferSamples();
- int samplesCount, count = 0;
- float **pcm;
- while ((samplesCount = vorbis_synthesis_pcmout(&m_vorbis->dspState, &pcm)))
- {
- const int toConvert = samplesCount <= maxSamples ? samplesCount : maxSamples;
- for (int c = 0; c < m_channels; ++c)
- {
- float *samples = pcm[c];
- for (int i = 0, j = c; i < toConvert; ++i, j += m_channels)
- {
- int sample = samples[i] * 32767.0f;
- if (sample > 32767)
- sample = 32767;
- else if (sample < -32768)
- sample = -32768;
- buffer[count + j] = sample;
- }
- }
- vorbis_synthesis_read(&m_vorbis->dspState, toConvert);
- count += toConvert;
- }
-
- numOutSamples = count;
- return true;
- }
- else if (m_opus)
- {
- const int samples = opus_decode(m_opus, frame.buffer, frame.bufferSize, buffer, m_numSamples, 0);
- if (samples >= 0)
- {
- numOutSamples = samples;
- return true;
- }
- }
- return false;
-}
-
-// -- GODOT begin --
-bool OpusVorbisDecoder::getPCMF(WebMFrame &frame, float *buffer, int &numOutSamples) {
- if (m_vorbis) {
- m_vorbis->op.packet = frame.buffer;
- m_vorbis->op.bytes = frame.bufferSize;
-
- if (vorbis_synthesis(&m_vorbis->block, &m_vorbis->op))
- return false;
- if (vorbis_synthesis_blockin(&m_vorbis->dspState, &m_vorbis->block))
- return false;
-
- const int maxSamples = getBufferSamples();
- int samplesCount, count = 0;
- float **pcm;
- while ((samplesCount = vorbis_synthesis_pcmout(&m_vorbis->dspState, &pcm))) {
- const int toConvert = samplesCount <= maxSamples ? samplesCount : maxSamples;
- for (int c = 0; c < m_channels; ++c) {
- float *samples = pcm[c];
- for (int i = 0, j = c; i < toConvert; ++i, j += m_channels) {
- buffer[count + j] = samples[i];
- }
- }
- vorbis_synthesis_read(&m_vorbis->dspState, toConvert);
- count += toConvert;
- }
-
- numOutSamples = count;
- return true;
- } else if (m_opus) {
- const int samples = opus_decode_float(m_opus, frame.buffer, frame.bufferSize, buffer, m_numSamples, 0);
- if (samples >= 0) {
- numOutSamples = samples;
- return true;
- }
- }
- return false;
-}
-// -- GODOT end --
-
-bool OpusVorbisDecoder::openVorbis(const WebMDemuxer &demuxer)
-{
- size_t extradataSize = 0;
- const unsigned char *extradata = demuxer.getAudioExtradata(extradataSize);
-
- if (extradataSize < 3 || !extradata || extradata[0] != 2)
- return false;
-
- size_t headerSize[3] = {0};
- size_t offset = 1;
-
- /* Calculate three headers sizes */
- for (int i = 0; i < 2; ++i)
- {
- for (;;)
- {
- if (offset >= extradataSize)
- return false;
- headerSize[i] += extradata[offset];
- if (extradata[offset++] < 0xFF)
- break;
- }
- }
- headerSize[2] = extradataSize - (headerSize[0] + headerSize[1] + offset);
-
- if (headerSize[0] + headerSize[1] + headerSize[2] + offset != extradataSize)
- return false;
-
- ogg_packet op[3];
- memset(op, 0, sizeof op);
-
- op[0].packet = (unsigned char *)extradata + offset;
- op[0].bytes = headerSize[0];
- op[0].b_o_s = 1;
-
- op[1].packet = (unsigned char *)extradata + offset + headerSize[0];
- op[1].bytes = headerSize[1];
-
- op[2].packet = (unsigned char *)extradata + offset + headerSize[0] + headerSize[1];
- op[2].bytes = headerSize[2];
-
- m_vorbis = new VorbisDecoder;
- m_vorbis->hasDSPState = m_vorbis->hasBlock = false;
- vorbis_info_init(&m_vorbis->info);
-
- /* Upload three Vorbis headers into libvorbis */
- vorbis_comment vc;
- vorbis_comment_init(&vc);
- for (int i = 0; i < 3; ++i)
- {
- if (vorbis_synthesis_headerin(&m_vorbis->info, &vc, &op[i]))
- {
- vorbis_comment_clear(&vc);
- return false;
- }
- }
- vorbis_comment_clear(&vc);
-
- if (vorbis_synthesis_init(&m_vorbis->dspState, &m_vorbis->info))
- return false;
- m_vorbis->hasDSPState = true;
-
- if (m_vorbis->info.channels != m_channels || m_vorbis->info.rate != demuxer.getSampleRate())
- return false;
-
- if (vorbis_block_init(&m_vorbis->dspState, &m_vorbis->block))
- return false;
- m_vorbis->hasBlock = true;
-
- memset(&m_vorbis->op, 0, sizeof m_vorbis->op);
-
- m_numSamples = 4096 / m_channels;
-
- return true;
-}
-bool OpusVorbisDecoder::openOpus(const WebMDemuxer &demuxer)
-{
- int opusErr = 0;
- m_opus = opus_decoder_create(demuxer.getSampleRate(), m_channels, &opusErr);
- if (!opusErr)
- {
- m_numSamples = demuxer.getSampleRate() * 0.06 + 0.5; //Maximum frame size (for 60 ms frame)
- return true;
- }
- return false;
-}
-
-void OpusVorbisDecoder::close()
-{
- if (m_vorbis)
- {
- if (m_vorbis->hasBlock)
- vorbis_block_clear(&m_vorbis->block);
- if (m_vorbis->hasDSPState)
- vorbis_dsp_clear(&m_vorbis->dspState);
- vorbis_info_clear(&m_vorbis->info);
- delete m_vorbis;
- }
- if (m_opus)
- opus_decoder_destroy(m_opus);
-}
diff --git a/thirdparty/libsimplewebm/OpusVorbisDecoder.hpp b/thirdparty/libsimplewebm/OpusVorbisDecoder.hpp
deleted file mode 100644
index f285b3fbd6..0000000000
--- a/thirdparty/libsimplewebm/OpusVorbisDecoder.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- MIT License
-
- Copyright (c) 2016 Błażej Szczygieł
-
- 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 OPUSVORBISDECODER_HPP
-#define OPUSVORBISDECODER_HPP
-
-#include "WebMDemuxer.hpp"
-
-struct VorbisDecoder;
-struct OpusDecoder;
-
-class OpusVorbisDecoder
-{
- OpusVorbisDecoder(const OpusVorbisDecoder &);
- void operator =(const OpusVorbisDecoder &);
-public:
- OpusVorbisDecoder(const WebMDemuxer &demuxer);
- ~OpusVorbisDecoder();
-
- bool isOpen() const;
-
- inline int getBufferSamples() const
- {
- return m_numSamples;
- }
- bool getPCMS16(WebMFrame &frame, short *buffer, int &numOutSamples);
-// -- GODOT begin --
- bool getPCMF(WebMFrame &frame, float *buffer, int &numOutSamples);
-// -- GODOT end --
-
-private:
- bool openVorbis(const WebMDemuxer &demuxer);
- bool openOpus(const WebMDemuxer &demuxer);
-
- void close();
-
- VorbisDecoder *m_vorbis;
- OpusDecoder *m_opus;
- int m_numSamples;
- int m_channels;
-
-};
-
-#endif // OPUSVORBISDECODER_HPP
diff --git a/thirdparty/libsimplewebm/VPXDecoder.cpp b/thirdparty/libsimplewebm/VPXDecoder.cpp
deleted file mode 100644
index e2606f83ba..0000000000
--- a/thirdparty/libsimplewebm/VPXDecoder.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- MIT License
-
- Copyright (c) 2016 Błażej Szczygieł
-
- 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 "VPXDecoder.hpp"
-
-#include <vpx/vpx_decoder.h>
-#include <vpx/vp8dx.h>
-
-#include <stdlib.h>
-#include <string.h>
-
-VPXDecoder::VPXDecoder(const WebMDemuxer &demuxer, unsigned threads) :
- m_ctx(NULL),
- m_iter(NULL),
- m_delay(0),
- m_last_space(VPX_CS_UNKNOWN)
-{
- if (threads > 8)
- threads = 8;
- else if (threads < 1)
- threads = 1;
-
- const vpx_codec_dec_cfg_t codecCfg = {
- threads,
- 0,
- 0
- };
- vpx_codec_iface_t *codecIface = NULL;
-
- switch (demuxer.getVideoCodec())
- {
- case WebMDemuxer::VIDEO_VP8:
- codecIface = vpx_codec_vp8_dx();
- break;
- case WebMDemuxer::VIDEO_VP9:
- codecIface = vpx_codec_vp9_dx();
- m_delay = threads - 1;
- break;
- default:
- return;
- }
-
- m_ctx = new vpx_codec_ctx_t;
- if (vpx_codec_dec_init(m_ctx, codecIface, &codecCfg, m_delay > 0 ? VPX_CODEC_USE_FRAME_THREADING : 0))
- {
- delete m_ctx;
- m_ctx = NULL;
- }
-}
-VPXDecoder::~VPXDecoder()
-{
- if (m_ctx)
- {
- vpx_codec_destroy(m_ctx);
- delete m_ctx;
- }
-}
-
-bool VPXDecoder::decode(const WebMFrame &frame)
-{
- m_iter = NULL;
- return !vpx_codec_decode(m_ctx, frame.buffer, frame.bufferSize, NULL, 0);
-}
-VPXDecoder::IMAGE_ERROR VPXDecoder::getImage(Image &image)
-{
- IMAGE_ERROR err = NO_FRAME;
- if (vpx_image_t *img = vpx_codec_get_frame(m_ctx, &m_iter))
- {
- // It seems to be a common problem that UNKNOWN comes up a lot, yet FFMPEG is somehow getting accurate colour-space information.
- // After checking FFMPEG code, *they're* getting colour-space information, so I'm assuming something like this is going on.
- // It appears to work, at least.
- if (img->cs != VPX_CS_UNKNOWN)
- m_last_space = img->cs;
- if ((img->fmt & VPX_IMG_FMT_PLANAR) && !(img->fmt & (VPX_IMG_FMT_HAS_ALPHA | VPX_IMG_FMT_HIGHBITDEPTH)))
- {
- if (img->stride[0] && img->stride[1] && img->stride[2])
- {
- const int uPlane = !!(img->fmt & VPX_IMG_FMT_UV_FLIP) + 1;
- const int vPlane = !(img->fmt & VPX_IMG_FMT_UV_FLIP) + 1;
-
- image.w = img->d_w;
- image.h = img->d_h;
- image.cs = m_last_space;
- image.chromaShiftW = img->x_chroma_shift;
- image.chromaShiftH = img->y_chroma_shift;
-
- image.planes[0] = img->planes[0];
- image.planes[1] = img->planes[uPlane];
- image.planes[2] = img->planes[vPlane];
-
- image.linesize[0] = img->stride[0];
- image.linesize[1] = img->stride[uPlane];
- image.linesize[2] = img->stride[vPlane];
-
- err = NO_ERROR;
- }
- }
- else
- {
- err = UNSUPPORTED_FRAME;
- }
- }
- return err;
-}
-
-/**/
-
-// -- GODOT begin --
-#if 0
-// -- GODOT end --
-
-static inline int ceilRshift(int val, int shift)
-{
- return (val + (1 << shift) - 1) >> shift;
-}
-
-int VPXDecoder::Image::getWidth(int plane) const
-{
- if (!plane)
- return w;
- return ceilRshift(w, chromaShiftW);
-}
-int VPXDecoder::Image::getHeight(int plane) const
-{
- if (!plane)
- return h;
- return ceilRshift(h, chromaShiftH);
-}
-
-// -- GODOT begin --
-#endif
-// -- GODOT end --
-
diff --git a/thirdparty/libsimplewebm/VPXDecoder.hpp b/thirdparty/libsimplewebm/VPXDecoder.hpp
deleted file mode 100644
index 5071b069cb..0000000000
--- a/thirdparty/libsimplewebm/VPXDecoder.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- MIT License
-
- Copyright (c) 2016 Błażej Szczygieł
-
- 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 VPXDECODER_HPP
-#define VPXDECODER_HPP
-
-#include "WebMDemuxer.hpp"
-
-struct vpx_codec_ctx;
-
-class VPXDecoder
-{
- VPXDecoder(const VPXDecoder &);
- void operator =(const VPXDecoder &);
-public:
- class Image
- {
- public:
-// -- GODOT begin --
-#if 0
-// -- GODOT end --
- int getWidth(int plane) const;
- int getHeight(int plane) const;
-// -- GODOT begin --
-#endif
-// -- GODOT end --
-
- int w, h;
- int cs;
- int chromaShiftW, chromaShiftH;
- unsigned char *planes[3];
- int linesize[3];
- };
-
- enum IMAGE_ERROR
- {
- UNSUPPORTED_FRAME = -1,
- NO_ERROR,
- NO_FRAME
- };
-
- VPXDecoder(const WebMDemuxer &demuxer, unsigned threads = 1);
- ~VPXDecoder();
-
- inline bool isOpen() const
- {
- return (bool)m_ctx;
- }
-
- inline int getFramesDelay() const
- {
- return m_delay;
- }
-
- bool decode(const WebMFrame &frame);
- IMAGE_ERROR getImage(Image &image); //The data is NOT copied! Only 3-plane, 8-bit images are supported.
-
-private:
- vpx_codec_ctx *m_ctx;
- const void *m_iter;
- int m_delay;
- int m_last_space;
-};
-
-#endif // VPXDECODER_HPP
diff --git a/thirdparty/libsimplewebm/WebMDemuxer.cpp b/thirdparty/libsimplewebm/WebMDemuxer.cpp
deleted file mode 100644
index cb63deccd5..0000000000
--- a/thirdparty/libsimplewebm/WebMDemuxer.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- MIT License
-
- Copyright (c) 2016 Błażej Szczygieł
-
- 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 "WebMDemuxer.hpp"
-
-#include "mkvparser/mkvparser.h"
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-
-WebMFrame::WebMFrame() :
- bufferSize(0), bufferCapacity(0),
- buffer(NULL),
- time(0),
- key(false)
-{}
-WebMFrame::~WebMFrame()
-{
- free(buffer);
-}
-
-/**/
-
-WebMDemuxer::WebMDemuxer(mkvparser::IMkvReader *reader, int videoTrack, int audioTrack) :
- m_reader(reader),
- m_segment(NULL),
- m_cluster(NULL), m_block(NULL), m_blockEntry(NULL),
- m_blockFrameIndex(0),
- m_videoTrack(NULL), m_vCodec(NO_VIDEO),
- m_audioTrack(NULL), m_aCodec(NO_AUDIO),
- m_isOpen(false),
- m_eos(false)
-{
- long long pos = 0;
- if (mkvparser::EBMLHeader().Parse(m_reader, pos))
- return;
-
- if (mkvparser::Segment::CreateInstance(m_reader, pos, m_segment))
- return;
-
- if (m_segment->Load() < 0)
- return;
-
- const mkvparser::Tracks *tracks = m_segment->GetTracks();
- const unsigned long tracksCount = tracks->GetTracksCount();
- int currVideoTrack = -1, currAudioTrack = -1;
- for (unsigned long i = 0; i < tracksCount; ++i)
- {
- const mkvparser::Track *track = tracks->GetTrackByIndex(i);
- if (const char *codecId = track->GetCodecId())
- {
- if ((!m_videoTrack || currVideoTrack != videoTrack) && track->GetType() == mkvparser::Track::kVideo)
- {
- if (!strcmp(codecId, "V_VP8"))
- m_vCodec = VIDEO_VP8;
- else if (!strcmp(codecId, "V_VP9"))
- m_vCodec = VIDEO_VP9;
- if (m_vCodec != NO_VIDEO)
- m_videoTrack = static_cast<const mkvparser::VideoTrack *>(track);
- ++currVideoTrack;
- }
- if ((!m_audioTrack || currAudioTrack != audioTrack) && track->GetType() == mkvparser::Track::kAudio)
- {
- if (!strcmp(codecId, "A_VORBIS"))
- m_aCodec = AUDIO_VORBIS;
- else if (!strcmp(codecId, "A_OPUS"))
- m_aCodec = AUDIO_OPUS;
- if (m_aCodec != NO_AUDIO)
- m_audioTrack = static_cast<const mkvparser::AudioTrack *>(track);
- ++currAudioTrack;
- }
- }
- }
- if (!m_videoTrack && !m_audioTrack)
- return;
-
- m_isOpen = true;
-}
-WebMDemuxer::~WebMDemuxer()
-{
- delete m_segment;
- delete m_reader;
-}
-
-double WebMDemuxer::getLength() const
-{
- return m_segment->GetDuration() / 1e9;
-}
-
-WebMDemuxer::VIDEO_CODEC WebMDemuxer::getVideoCodec() const
-{
- return m_vCodec;
-}
-int WebMDemuxer::getWidth() const
-{
- return m_videoTrack->GetWidth();
-}
-int WebMDemuxer::getHeight() const
-{
- return m_videoTrack->GetHeight();
-}
-
-WebMDemuxer::AUDIO_CODEC WebMDemuxer::getAudioCodec() const
-{
- return m_aCodec;
-}
-const unsigned char *WebMDemuxer::getAudioExtradata(size_t &size) const
-{
- return m_audioTrack->GetCodecPrivate(size);
-}
-double WebMDemuxer::getSampleRate() const
-{
- return m_audioTrack->GetSamplingRate();
-}
-int WebMDemuxer::getChannels() const
-{
- return m_audioTrack->GetChannels();
-}
-int WebMDemuxer::getAudioDepth() const
-{
- return m_audioTrack->GetBitDepth();
-}
-
-bool WebMDemuxer::readFrame(WebMFrame *videoFrame, WebMFrame *audioFrame)
-{
- const long videoTrackNumber = (videoFrame && m_videoTrack) ? m_videoTrack->GetNumber() : 0;
- const long audioTrackNumber = (audioFrame && m_audioTrack) ? m_audioTrack->GetNumber() : 0;
- bool blockEntryEOS = false;
-
- if (videoFrame)
- videoFrame->bufferSize = 0;
- if (audioFrame)
- audioFrame->bufferSize = 0;
-
- if (videoTrackNumber == 0 && audioTrackNumber == 0)
- return false;
-
- if (m_eos)
- return false;
-
- if (!m_cluster)
- m_cluster = m_segment->GetFirst();
-
- do
- {
- bool getNewBlock = false;
- long status = 0;
- if (!m_blockEntry && !blockEntryEOS)
- {
- status = m_cluster->GetFirst(m_blockEntry);
- getNewBlock = true;
- }
- else if (blockEntryEOS || m_blockEntry->EOS())
- {
- m_cluster = m_segment->GetNext(m_cluster);
- if (!m_cluster || m_cluster->EOS())
- {
- m_eos = true;
- return false;
- }
- status = m_cluster->GetFirst(m_blockEntry);
- blockEntryEOS = false;
- getNewBlock = true;
- }
- else if (!m_block || m_blockFrameIndex == m_block->GetFrameCount() || notSupportedTrackNumber(videoTrackNumber, audioTrackNumber))
- {
- status = m_cluster->GetNext(m_blockEntry, m_blockEntry);
- if (!m_blockEntry || m_blockEntry->EOS())
- {
- blockEntryEOS = true;
- continue;
- }
- getNewBlock = true;
- }
- if (status || !m_blockEntry)
- return false;
- if (getNewBlock)
- {
- m_block = m_blockEntry->GetBlock();
- m_blockFrameIndex = 0;
- }
- } while (blockEntryEOS || notSupportedTrackNumber(videoTrackNumber, audioTrackNumber));
-
- WebMFrame *frame = NULL;
-
- const long trackNumber = m_block->GetTrackNumber();
- if (trackNumber == videoTrackNumber)
- frame = videoFrame;
- else if (trackNumber == audioTrackNumber)
- frame = audioFrame;
- else
- {
- //Should not be possible
- assert(trackNumber == videoTrackNumber || trackNumber == audioTrackNumber);
- return false;
- }
-
- const mkvparser::Block::Frame &blockFrame = m_block->GetFrame(m_blockFrameIndex++);
- if (blockFrame.len > frame->bufferCapacity)
- {
- unsigned char *newBuff = (unsigned char *)realloc(frame->buffer, frame->bufferCapacity = blockFrame.len);
- if (newBuff)
- frame->buffer = newBuff;
- else // Out of memory
- return false;
- }
- frame->bufferSize = blockFrame.len;
-
- frame->time = m_block->GetTime(m_cluster) / 1e9;
- frame->key = m_block->IsKey();
-
- return !blockFrame.Read(m_reader, frame->buffer);
-}
-
-inline bool WebMDemuxer::notSupportedTrackNumber(long videoTrackNumber, long audioTrackNumber) const
-{
- const long trackNumber = m_block->GetTrackNumber();
- return (trackNumber != videoTrackNumber && trackNumber != audioTrackNumber);
-}
diff --git a/thirdparty/libsimplewebm/WebMDemuxer.hpp b/thirdparty/libsimplewebm/WebMDemuxer.hpp
deleted file mode 100644
index a45ddb3f26..0000000000
--- a/thirdparty/libsimplewebm/WebMDemuxer.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- MIT License
-
- Copyright (c) 2016 Błażej Szczygieł
-
- 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 WEBMDEMUXER_HPP
-#define WEBMDEMUXER_HPP
-
-#include <stddef.h>
-
-namespace mkvparser {
- class IMkvReader;
- class Segment;
- class Cluster;
- class Block;
- class BlockEntry;
- class VideoTrack;
- class AudioTrack;
-}
-
-class WebMFrame
-{
- WebMFrame(const WebMFrame &);
- void operator =(const WebMFrame &);
-public:
- WebMFrame();
- ~WebMFrame();
-
- inline bool isValid() const
- {
- return bufferSize > 0;
- }
-
- long bufferSize, bufferCapacity;
- unsigned char *buffer;
- double time;
- bool key;
-};
-
-class WebMDemuxer
-{
- WebMDemuxer(const WebMDemuxer &);
- void operator =(const WebMDemuxer &);
-public:
- enum VIDEO_CODEC
- {
- NO_VIDEO,
- VIDEO_VP8,
- VIDEO_VP9
- };
- enum AUDIO_CODEC
- {
- NO_AUDIO,
- AUDIO_VORBIS,
- AUDIO_OPUS
- };
-
- WebMDemuxer(mkvparser::IMkvReader *reader, int videoTrack = 0, int audioTrack = 0);
- ~WebMDemuxer();
-
- inline bool isOpen() const
- {
- return m_isOpen;
- }
- inline bool isEOS() const
- {
- return m_eos;
- }
-
- double getLength() const;
-
- VIDEO_CODEC getVideoCodec() const;
- int getWidth() const;
- int getHeight() const;
-
- AUDIO_CODEC getAudioCodec() const;
- const unsigned char *getAudioExtradata(size_t &size) const; // Needed for Vorbis
- double getSampleRate() const;
- int getChannels() const;
- int getAudioDepth() const;
-
- bool readFrame(WebMFrame *videoFrame, WebMFrame *audioFrame);
-
-private:
- inline bool notSupportedTrackNumber(long videoTrackNumber, long audioTrackNumber) const;
-
- mkvparser::IMkvReader *m_reader;
- mkvparser::Segment *m_segment;
-
- const mkvparser::Cluster *m_cluster;
- const mkvparser::Block *m_block;
- const mkvparser::BlockEntry *m_blockEntry;
-
- int m_blockFrameIndex;
-
- const mkvparser::VideoTrack *m_videoTrack;
- VIDEO_CODEC m_vCodec;
-
- const mkvparser::AudioTrack *m_audioTrack;
- AUDIO_CODEC m_aCodec;
-
- bool m_isOpen;
- bool m_eos;
-};
-
-#endif // WEBMDEMUXER_HPP
diff --git a/thirdparty/libsimplewebm/libwebm/AUTHORS.TXT b/thirdparty/libsimplewebm/libwebm/AUTHORS.TXT
deleted file mode 100644
index 9686ac13eb..0000000000
--- a/thirdparty/libsimplewebm/libwebm/AUTHORS.TXT
+++ /dev/null
@@ -1,4 +0,0 @@
-# Names should be added to this file like so:
-# Name or Organization <email address>
-
-Google Inc.
diff --git a/thirdparty/libsimplewebm/libwebm/LICENSE.TXT b/thirdparty/libsimplewebm/libwebm/LICENSE.TXT
deleted file mode 100644
index 7a6f99547d..0000000000
--- a/thirdparty/libsimplewebm/libwebm/LICENSE.TXT
+++ /dev/null
@@ -1,30 +0,0 @@
-Copyright (c) 2010, Google Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- * Neither the name of Google nor the names of its contributors may
- be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/thirdparty/libsimplewebm/libwebm/PATENTS.TXT b/thirdparty/libsimplewebm/libwebm/PATENTS.TXT
deleted file mode 100644
index caedf607e9..0000000000
--- a/thirdparty/libsimplewebm/libwebm/PATENTS.TXT
+++ /dev/null
@@ -1,23 +0,0 @@
-Additional IP Rights Grant (Patents)
-------------------------------------
-
-"These implementations" means the copyrightable works that implement the WebM
-codecs distributed by Google as part of the WebM Project.
-
-Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
-royalty-free, irrevocable (except as stated in this section) patent license to
-make, have made, use, offer to sell, sell, import, transfer, and otherwise
-run, modify and propagate the contents of these implementations of WebM, where
-such license applies only to those patent claims, both currently owned by
-Google and acquired in the future, licensable by Google that are necessarily
-infringed by these implementations of WebM. This grant does not include claims
-that would be infringed only as a consequence of further modification of these
-implementations. If you or your agent or exclusive licensee institute or order
-or agree to the institution of patent litigation or any other patent
-enforcement activity against any entity (including a cross-claim or
-counterclaim in a lawsuit) alleging that any of these implementations of WebM
-or any code incorporated within any of these implementations of WebM
-constitute direct or contributory patent infringement, or inducement of
-patent infringement, then any patent rights granted to you under this License
-for these implementations of WebM shall terminate as of the date such
-litigation is filed.
diff --git a/thirdparty/libsimplewebm/libwebm/README.libvpx b/thirdparty/libsimplewebm/libwebm/README.libvpx
deleted file mode 100644
index 1aa93b75aa..0000000000
--- a/thirdparty/libsimplewebm/libwebm/README.libvpx
+++ /dev/null
@@ -1,11 +0,0 @@
-URL: https://chromium.googlesource.com/webm/libwebm
-Version: d7c62173ff6b4a5e0a2f86683a5b67db98cf09bf
-License: BSD
-License File: LICENSE.txt
-
-Description:
-libwebm is used to handle WebM container I/O.
-
-Local Changes:
-* Removed: "mkvmuxer", "hdr_util", "file_util", "mkv_reader".
-* Make "~IMkvRerader()" public.
diff --git a/thirdparty/libsimplewebm/libwebm/common/webmids.h b/thirdparty/libsimplewebm/libwebm/common/webmids.h
deleted file mode 100644
index 89d722a71b..0000000000
--- a/thirdparty/libsimplewebm/libwebm/common/webmids.h
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-
-#ifndef COMMON_WEBMIDS_H_
-#define COMMON_WEBMIDS_H_
-
-namespace libwebm {
-
-enum MkvId {
- kMkvEBML = 0x1A45DFA3,
- kMkvEBMLVersion = 0x4286,
- kMkvEBMLReadVersion = 0x42F7,
- kMkvEBMLMaxIDLength = 0x42F2,
- kMkvEBMLMaxSizeLength = 0x42F3,
- kMkvDocType = 0x4282,
- kMkvDocTypeVersion = 0x4287,
- kMkvDocTypeReadVersion = 0x4285,
- kMkvVoid = 0xEC,
- kMkvSignatureSlot = 0x1B538667,
- kMkvSignatureAlgo = 0x7E8A,
- kMkvSignatureHash = 0x7E9A,
- kMkvSignaturePublicKey = 0x7EA5,
- kMkvSignature = 0x7EB5,
- kMkvSignatureElements = 0x7E5B,
- kMkvSignatureElementList = 0x7E7B,
- kMkvSignedElement = 0x6532,
- // segment
- kMkvSegment = 0x18538067,
- // Meta Seek Information
- kMkvSeekHead = 0x114D9B74,
- kMkvSeek = 0x4DBB,
- kMkvSeekID = 0x53AB,
- kMkvSeekPosition = 0x53AC,
- // Segment Information
- kMkvInfo = 0x1549A966,
- kMkvTimecodeScale = 0x2AD7B1,
- kMkvDuration = 0x4489,
- kMkvDateUTC = 0x4461,
- kMkvTitle = 0x7BA9,
- kMkvMuxingApp = 0x4D80,
- kMkvWritingApp = 0x5741,
- // Cluster
- kMkvCluster = 0x1F43B675,
- kMkvTimecode = 0xE7,
- kMkvPrevSize = 0xAB,
- kMkvBlockGroup = 0xA0,
- kMkvBlock = 0xA1,
- kMkvBlockDuration = 0x9B,
- kMkvReferenceBlock = 0xFB,
- kMkvLaceNumber = 0xCC,
- kMkvSimpleBlock = 0xA3,
- kMkvBlockAdditions = 0x75A1,
- kMkvBlockMore = 0xA6,
- kMkvBlockAddID = 0xEE,
- kMkvBlockAdditional = 0xA5,
- kMkvDiscardPadding = 0x75A2,
- // Track
- kMkvTracks = 0x1654AE6B,
- kMkvTrackEntry = 0xAE,
- kMkvTrackNumber = 0xD7,
- kMkvTrackUID = 0x73C5,
- kMkvTrackType = 0x83,
- kMkvFlagEnabled = 0xB9,
- kMkvFlagDefault = 0x88,
- kMkvFlagForced = 0x55AA,
- kMkvFlagLacing = 0x9C,
- kMkvDefaultDuration = 0x23E383,
- kMkvMaxBlockAdditionID = 0x55EE,
- kMkvName = 0x536E,
- kMkvLanguage = 0x22B59C,
- kMkvCodecID = 0x86,
- kMkvCodecPrivate = 0x63A2,
- kMkvCodecName = 0x258688,
- kMkvCodecDelay = 0x56AA,
- kMkvSeekPreRoll = 0x56BB,
- // video
- kMkvVideo = 0xE0,
- kMkvFlagInterlaced = 0x9A,
- kMkvStereoMode = 0x53B8,
- kMkvAlphaMode = 0x53C0,
- kMkvPixelWidth = 0xB0,
- kMkvPixelHeight = 0xBA,
- kMkvPixelCropBottom = 0x54AA,
- kMkvPixelCropTop = 0x54BB,
- kMkvPixelCropLeft = 0x54CC,
- kMkvPixelCropRight = 0x54DD,
- kMkvDisplayWidth = 0x54B0,
- kMkvDisplayHeight = 0x54BA,
- kMkvDisplayUnit = 0x54B2,
- kMkvAspectRatioType = 0x54B3,
- kMkvFrameRate = 0x2383E3,
- // end video
- // colour
- kMkvColour = 0x55B0,
- kMkvMatrixCoefficients = 0x55B1,
- kMkvBitsPerChannel = 0x55B2,
- kMkvChromaSubsamplingHorz = 0x55B3,
- kMkvChromaSubsamplingVert = 0x55B4,
- kMkvCbSubsamplingHorz = 0x55B5,
- kMkvCbSubsamplingVert = 0x55B6,
- kMkvChromaSitingHorz = 0x55B7,
- kMkvChromaSitingVert = 0x55B8,
- kMkvRange = 0x55B9,
- kMkvTransferCharacteristics = 0x55BA,
- kMkvPrimaries = 0x55BB,
- kMkvMaxCLL = 0x55BC,
- kMkvMaxFALL = 0x55BD,
- // mastering metadata
- kMkvMasteringMetadata = 0x55D0,
- kMkvPrimaryRChromaticityX = 0x55D1,
- kMkvPrimaryRChromaticityY = 0x55D2,
- kMkvPrimaryGChromaticityX = 0x55D3,
- kMkvPrimaryGChromaticityY = 0x55D4,
- kMkvPrimaryBChromaticityX = 0x55D5,
- kMkvPrimaryBChromaticityY = 0x55D6,
- kMkvWhitePointChromaticityX = 0x55D7,
- kMkvWhitePointChromaticityY = 0x55D8,
- kMkvLuminanceMax = 0x55D9,
- kMkvLuminanceMin = 0x55DA,
- // end mastering metadata
- // end colour
- // projection
- kMkvProjection = 0x7670,
- kMkvProjectionType = 0x7671,
- kMkvProjectionPrivate = 0x7672,
- kMkvProjectionPoseYaw = 0x7673,
- kMkvProjectionPosePitch = 0x7674,
- kMkvProjectionPoseRoll = 0x7675,
- // end projection
- // audio
- kMkvAudio = 0xE1,
- kMkvSamplingFrequency = 0xB5,
- kMkvOutputSamplingFrequency = 0x78B5,
- kMkvChannels = 0x9F,
- kMkvBitDepth = 0x6264,
- // end audio
- // ContentEncodings
- kMkvContentEncodings = 0x6D80,
- kMkvContentEncoding = 0x6240,
- kMkvContentEncodingOrder = 0x5031,
- kMkvContentEncodingScope = 0x5032,
- kMkvContentEncodingType = 0x5033,
- kMkvContentCompression = 0x5034,
- kMkvContentCompAlgo = 0x4254,
- kMkvContentCompSettings = 0x4255,
- kMkvContentEncryption = 0x5035,
- kMkvContentEncAlgo = 0x47E1,
- kMkvContentEncKeyID = 0x47E2,
- kMkvContentSignature = 0x47E3,
- kMkvContentSigKeyID = 0x47E4,
- kMkvContentSigAlgo = 0x47E5,
- kMkvContentSigHashAlgo = 0x47E6,
- kMkvContentEncAESSettings = 0x47E7,
- kMkvAESSettingsCipherMode = 0x47E8,
- kMkvAESSettingsCipherInitData = 0x47E9,
- // end ContentEncodings
- // Cueing Data
- kMkvCues = 0x1C53BB6B,
- kMkvCuePoint = 0xBB,
- kMkvCueTime = 0xB3,
- kMkvCueTrackPositions = 0xB7,
- kMkvCueTrack = 0xF7,
- kMkvCueClusterPosition = 0xF1,
- kMkvCueBlockNumber = 0x5378,
- // Chapters
- kMkvChapters = 0x1043A770,
- kMkvEditionEntry = 0x45B9,
- kMkvChapterAtom = 0xB6,
- kMkvChapterUID = 0x73C4,
- kMkvChapterStringUID = 0x5654,
- kMkvChapterTimeStart = 0x91,
- kMkvChapterTimeEnd = 0x92,
- kMkvChapterDisplay = 0x80,
- kMkvChapString = 0x85,
- kMkvChapLanguage = 0x437C,
- kMkvChapCountry = 0x437E,
- // Tags
- kMkvTags = 0x1254C367,
- kMkvTag = 0x7373,
- kMkvSimpleTag = 0x67C8,
- kMkvTagName = 0x45A3,
- kMkvTagString = 0x4487
-};
-
-} // namespace libwebm
-
-#endif // COMMON_WEBMIDS_H_
diff --git a/thirdparty/libsimplewebm/libwebm/mkvmuxer/mkvmuxertypes.h b/thirdparty/libsimplewebm/libwebm/mkvmuxer/mkvmuxertypes.h
deleted file mode 100644
index e5db121605..0000000000
--- a/thirdparty/libsimplewebm/libwebm/mkvmuxer/mkvmuxertypes.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-
-#ifndef MKVMUXER_MKVMUXERTYPES_H_
-#define MKVMUXER_MKVMUXERTYPES_H_
-
-namespace mkvmuxer {
-typedef unsigned char uint8;
-typedef short int16;
-typedef int int32;
-typedef unsigned int uint32;
-typedef long long int64;
-typedef unsigned long long uint64;
-} // namespace mkvmuxer
-
-// Copied from Chromium basictypes.h
-// A macro to disallow the copy constructor and operator= functions
-// This should be used in the private: declarations for a class
-#define LIBWEBM_DISALLOW_COPY_AND_ASSIGN(TypeName) \
- TypeName(const TypeName&); \
- void operator=(const TypeName&)
-
-#endif // MKVMUXER_MKVMUXERTYPES_HPP_
diff --git a/thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.cc b/thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.cc
deleted file mode 100644
index e7b76f7da1..0000000000
--- a/thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.cc
+++ /dev/null
@@ -1,8049 +0,0 @@
-// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-#include "mkvparser/mkvparser.h"
-
-#if defined(_MSC_VER) && _MSC_VER < 1800
-#include <float.h> // _isnan() / _finite()
-#define MSC_COMPAT
-#endif
-
-#include <cassert>
-#include <cfloat>
-#include <climits>
-#include <cmath>
-#include <cstring>
-#include <memory>
-#include <new>
-
-#include "common/webmids.h"
-
-namespace mkvparser {
-const long long kStringElementSizeLimit = 20 * 1000 * 1000;
-const float MasteringMetadata::kValueNotPresent = FLT_MAX;
-const long long Colour::kValueNotPresent = LLONG_MAX;
-const float Projection::kValueNotPresent = FLT_MAX;
-
-#ifdef MSC_COMPAT
-inline bool isnan(double val) { return !!_isnan(val); }
-inline bool isinf(double val) { return !_finite(val); }
-#else
-inline bool isnan(double val) { return std::isnan(val); }
-inline bool isinf(double val) { return std::isinf(val); }
-#endif // MSC_COMPAT
-
-IMkvReader::~IMkvReader() {}
-
-template <typename Type>
-Type* SafeArrayAlloc(unsigned long long num_elements,
- unsigned long long element_size) {
- if (num_elements == 0 || element_size == 0)
- return NULL;
-
- const size_t kMaxAllocSize = 0x80000000; // 2GiB
- const unsigned long long num_bytes = num_elements * element_size;
- if (element_size > (kMaxAllocSize / num_elements))
- return NULL;
- if (num_bytes != static_cast<size_t>(num_bytes))
- return NULL;
-
- return new (std::nothrow) Type[static_cast<size_t>(num_bytes)];
-}
-
-void GetVersion(int& major, int& minor, int& build, int& revision) {
- major = 1;
- minor = 0;
- build = 0;
- revision = 30;
-}
-
-long long ReadUInt(IMkvReader* pReader, long long pos, long& len) {
- if (!pReader || pos < 0)
- return E_FILE_FORMAT_INVALID;
-
- len = 1;
- unsigned char b;
- int status = pReader->Read(pos, 1, &b);
-
- if (status < 0) // error or underflow
- return status;
-
- if (status > 0) // interpreted as "underflow"
- return E_BUFFER_NOT_FULL;
-
- if (b == 0) // we can't handle u-int values larger than 8 bytes
- return E_FILE_FORMAT_INVALID;
-
- unsigned char m = 0x80;
-
- while (!(b & m)) {
- m >>= 1;
- ++len;
- }
-
- long long result = b & (~m);
- ++pos;
-
- for (int i = 1; i < len; ++i) {
- status = pReader->Read(pos, 1, &b);
-
- if (status < 0) {
- len = 1;
- return status;
- }
-
- if (status > 0) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result <<= 8;
- result |= b;
-
- ++pos;
- }
-
- return result;
-}
-
-// Reads an EBML ID and returns it.
-// An ID must at least 1 byte long, cannot exceed 4, and its value must be
-// greater than 0.
-// See known EBML values and EBMLMaxIDLength:
-// http://www.matroska.org/technical/specs/index.html
-// Returns the ID, or a value less than 0 to report an error while reading the
-// ID.
-long long ReadID(IMkvReader* pReader, long long pos, long& len) {
- if (pReader == NULL || pos < 0)
- return E_FILE_FORMAT_INVALID;
-
- // Read the first byte. The length in bytes of the ID is determined by
- // finding the first set bit in the first byte of the ID.
- unsigned char temp_byte = 0;
- int read_status = pReader->Read(pos, 1, &temp_byte);
-
- if (read_status < 0)
- return E_FILE_FORMAT_INVALID;
- else if (read_status > 0) // No data to read.
- return E_BUFFER_NOT_FULL;
-
- if (temp_byte == 0) // ID length > 8 bytes; invalid file.
- return E_FILE_FORMAT_INVALID;
-
- int bit_pos = 0;
- const int kMaxIdLengthInBytes = 4;
- const int kCheckByte = 0x80;
-
- // Find the first bit that's set.
- bool found_bit = false;
- for (; bit_pos < kMaxIdLengthInBytes; ++bit_pos) {
- if ((kCheckByte >> bit_pos) & temp_byte) {
- found_bit = true;
- break;
- }
- }
-
- if (!found_bit) {
- // The value is too large to be a valid ID.
- return E_FILE_FORMAT_INVALID;
- }
-
- // Read the remaining bytes of the ID (if any).
- const int id_length = bit_pos + 1;
- long long ebml_id = temp_byte;
- for (int i = 1; i < id_length; ++i) {
- ebml_id <<= 8;
- read_status = pReader->Read(pos + i, 1, &temp_byte);
-
- if (read_status < 0)
- return E_FILE_FORMAT_INVALID;
- else if (read_status > 0)
- return E_BUFFER_NOT_FULL;
-
- ebml_id |= temp_byte;
- }
-
- len = id_length;
- return ebml_id;
-}
-
-long long GetUIntLength(IMkvReader* pReader, long long pos, long& len) {
- if (!pReader || pos < 0)
- return E_FILE_FORMAT_INVALID;
-
- long long total, available;
-
- int status = pReader->Length(&total, &available);
- if (status < 0 || (total >= 0 && available > total))
- return E_FILE_FORMAT_INVALID;
-
- len = 1;
-
- if (pos >= available)
- return pos; // too few bytes available
-
- unsigned char b;
-
- status = pReader->Read(pos, 1, &b);
-
- if (status != 0)
- return status;
-
- if (b == 0) // we can't handle u-int values larger than 8 bytes
- return E_FILE_FORMAT_INVALID;
-
- unsigned char m = 0x80;
-
- while (!(b & m)) {
- m >>= 1;
- ++len;
- }
-
- return 0; // success
-}
-
-// TODO(vigneshv): This function assumes that unsigned values never have their
-// high bit set.
-long long UnserializeUInt(IMkvReader* pReader, long long pos, long long size) {
- if (!pReader || pos < 0 || (size <= 0) || (size > 8))
- return E_FILE_FORMAT_INVALID;
-
- long long result = 0;
-
- for (long long i = 0; i < size; ++i) {
- unsigned char b;
-
- const long status = pReader->Read(pos, 1, &b);
-
- if (status < 0)
- return status;
-
- result <<= 8;
- result |= b;
-
- ++pos;
- }
-
- return result;
-}
-
-long UnserializeFloat(IMkvReader* pReader, long long pos, long long size_,
- double& result) {
- if (!pReader || pos < 0 || ((size_ != 4) && (size_ != 8)))
- return E_FILE_FORMAT_INVALID;
-
- const long size = static_cast<long>(size_);
-
- unsigned char buf[8];
-
- const int status = pReader->Read(pos, size, buf);
-
- if (status < 0) // error
- return status;
-
- if (size == 4) {
- union {
- float f;
- unsigned long ff;
- };
-
- ff = 0;
-
- for (int i = 0;;) {
- ff |= buf[i];
-
- if (++i >= 4)
- break;
-
- ff <<= 8;
- }
-
- result = f;
- } else {
- union {
- double d;
- unsigned long long dd;
- };
-
- dd = 0;
-
- for (int i = 0;;) {
- dd |= buf[i];
-
- if (++i >= 8)
- break;
-
- dd <<= 8;
- }
-
- result = d;
- }
-
- if (mkvparser::isinf(result) || mkvparser::isnan(result))
- return E_FILE_FORMAT_INVALID;
-
- return 0;
-}
-
-long UnserializeInt(IMkvReader* pReader, long long pos, long long size,
- long long& result_ref) {
- if (!pReader || pos < 0 || size < 1 || size > 8)
- return E_FILE_FORMAT_INVALID;
-
- signed char first_byte = 0;
- const long status = pReader->Read(pos, 1, (unsigned char*)&first_byte);
-
- if (status < 0)
- return status;
-
- unsigned long long result = first_byte;
- ++pos;
-
- for (long i = 1; i < size; ++i) {
- unsigned char b;
-
- const long status = pReader->Read(pos, 1, &b);
-
- if (status < 0)
- return status;
-
- result <<= 8;
- result |= b;
-
- ++pos;
- }
-
- result_ref = static_cast<long long>(result);
- return 0;
-}
-
-long UnserializeString(IMkvReader* pReader, long long pos, long long size,
- char*& str) {
- delete[] str;
- str = NULL;
-
- if (size >= LONG_MAX || size < 0 || size > kStringElementSizeLimit)
- return E_FILE_FORMAT_INVALID;
-
- // +1 for '\0' terminator
- const long required_size = static_cast<long>(size) + 1;
-
- str = SafeArrayAlloc<char>(1, required_size);
- if (str == NULL)
- return E_FILE_FORMAT_INVALID;
-
- unsigned char* const buf = reinterpret_cast<unsigned char*>(str);
-
- const long status = pReader->Read(pos, static_cast<long>(size), buf);
-
- if (status) {
- delete[] str;
- str = NULL;
-
- return status;
- }
-
- str[required_size - 1] = '\0';
- return 0;
-}
-
-long ParseElementHeader(IMkvReader* pReader, long long& pos, long long stop,
- long long& id, long long& size) {
- if (stop >= 0 && pos >= stop)
- return E_FILE_FORMAT_INVALID;
-
- long len;
-
- id = ReadID(pReader, pos, len);
-
- if (id < 0)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume id
-
- if (stop >= 0 && pos >= stop)
- return E_FILE_FORMAT_INVALID;
-
- size = ReadUInt(pReader, pos, len);
-
- if (size < 0 || len < 1 || len > 8) {
- // Invalid: Negative payload size, negative or 0 length integer, or integer
- // larger than 64 bits (libwebm cannot handle them).
- return E_FILE_FORMAT_INVALID;
- }
-
- // Avoid rolling over pos when very close to LLONG_MAX.
- const unsigned long long rollover_check =
- static_cast<unsigned long long>(pos) + len;
- if (rollover_check > LLONG_MAX)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume length of size
-
- // pos now designates payload
-
- if (stop >= 0 && pos > stop)
- return E_FILE_FORMAT_INVALID;
-
- return 0; // success
-}
-
-bool Match(IMkvReader* pReader, long long& pos, unsigned long expected_id,
- long long& val) {
- if (!pReader || pos < 0)
- return false;
-
- long long total = 0;
- long long available = 0;
-
- const long status = pReader->Length(&total, &available);
- if (status < 0 || (total >= 0 && available > total))
- return false;
-
- long len = 0;
-
- const long long id = ReadID(pReader, pos, len);
- if (id < 0 || (available - pos) > len)
- return false;
-
- if (static_cast<unsigned long>(id) != expected_id)
- return false;
-
- pos += len; // consume id
-
- const long long size = ReadUInt(pReader, pos, len);
- if (size < 0 || size > 8 || len < 1 || len > 8 || (available - pos) > len)
- return false;
-
- pos += len; // consume length of size of payload
-
- val = UnserializeUInt(pReader, pos, size);
- if (val < 0)
- return false;
-
- pos += size; // consume size of payload
-
- return true;
-}
-
-bool Match(IMkvReader* pReader, long long& pos, unsigned long expected_id,
- unsigned char*& buf, size_t& buflen) {
- if (!pReader || pos < 0)
- return false;
-
- long long total = 0;
- long long available = 0;
-
- long status = pReader->Length(&total, &available);
- if (status < 0 || (total >= 0 && available > total))
- return false;
-
- long len = 0;
- const long long id = ReadID(pReader, pos, len);
- if (id < 0 || (available - pos) > len)
- return false;
-
- if (static_cast<unsigned long>(id) != expected_id)
- return false;
-
- pos += len; // consume id
-
- const long long size = ReadUInt(pReader, pos, len);
- if (size < 0 || len <= 0 || len > 8 || (available - pos) > len)
- return false;
-
- unsigned long long rollover_check =
- static_cast<unsigned long long>(pos) + len;
- if (rollover_check > LLONG_MAX)
- return false;
-
- pos += len; // consume length of size of payload
-
- rollover_check = static_cast<unsigned long long>(pos) + size;
- if (rollover_check > LLONG_MAX)
- return false;
-
- if ((pos + size) > available)
- return false;
-
- if (size >= LONG_MAX)
- return false;
-
- const long buflen_ = static_cast<long>(size);
-
- buf = SafeArrayAlloc<unsigned char>(1, buflen_);
- if (!buf)
- return false;
-
- status = pReader->Read(pos, buflen_, buf);
- if (status != 0)
- return false;
-
- buflen = buflen_;
-
- pos += size; // consume size of payload
- return true;
-}
-
-EBMLHeader::EBMLHeader() : m_docType(NULL) { Init(); }
-
-EBMLHeader::~EBMLHeader() { delete[] m_docType; }
-
-void EBMLHeader::Init() {
- m_version = 1;
- m_readVersion = 1;
- m_maxIdLength = 4;
- m_maxSizeLength = 8;
-
- if (m_docType) {
- delete[] m_docType;
- m_docType = NULL;
- }
-
- m_docTypeVersion = 1;
- m_docTypeReadVersion = 1;
-}
-
-long long EBMLHeader::Parse(IMkvReader* pReader, long long& pos) {
- if (!pReader)
- return E_FILE_FORMAT_INVALID;
-
- long long total, available;
-
- long status = pReader->Length(&total, &available);
-
- if (status < 0) // error
- return status;
-
- pos = 0;
-
- // Scan until we find what looks like the first byte of the EBML header.
- const long long kMaxScanBytes = (available >= 1024) ? 1024 : available;
- const unsigned char kEbmlByte0 = 0x1A;
- unsigned char scan_byte = 0;
-
- while (pos < kMaxScanBytes) {
- status = pReader->Read(pos, 1, &scan_byte);
-
- if (status < 0) // error
- return status;
- else if (status > 0)
- return E_BUFFER_NOT_FULL;
-
- if (scan_byte == kEbmlByte0)
- break;
-
- ++pos;
- }
-
- long len = 0;
- const long long ebml_id = ReadID(pReader, pos, len);
-
- if (ebml_id == E_BUFFER_NOT_FULL)
- return E_BUFFER_NOT_FULL;
-
- if (len != 4 || ebml_id != libwebm::kMkvEBML)
- return E_FILE_FORMAT_INVALID;
-
- // Move read pos forward to the EBML header size field.
- pos += 4;
-
- // Read length of size field.
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return E_FILE_FORMAT_INVALID;
- else if (result > 0) // need more data
- return E_BUFFER_NOT_FULL;
-
- if (len < 1 || len > 8)
- return E_FILE_FORMAT_INVALID;
-
- if ((total >= 0) && ((total - pos) < len))
- return E_FILE_FORMAT_INVALID;
-
- if ((available - pos) < len)
- return pos + len; // try again later
-
- // Read the EBML header size.
- result = ReadUInt(pReader, pos, len);
-
- if (result < 0) // error
- return result;
-
- pos += len; // consume size field
-
- // pos now designates start of payload
-
- if ((total >= 0) && ((total - pos) < result))
- return E_FILE_FORMAT_INVALID;
-
- if ((available - pos) < result)
- return pos + result;
-
- const long long end = pos + result;
-
- Init();
-
- while (pos < end) {
- long long id, size;
-
- status = ParseElementHeader(pReader, pos, end, id, size);
-
- if (status < 0) // error
- return status;
-
- if (size == 0)
- return E_FILE_FORMAT_INVALID;
-
- if (id == libwebm::kMkvEBMLVersion) {
- m_version = UnserializeUInt(pReader, pos, size);
-
- if (m_version <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvEBMLReadVersion) {
- m_readVersion = UnserializeUInt(pReader, pos, size);
-
- if (m_readVersion <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvEBMLMaxIDLength) {
- m_maxIdLength = UnserializeUInt(pReader, pos, size);
-
- if (m_maxIdLength <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvEBMLMaxSizeLength) {
- m_maxSizeLength = UnserializeUInt(pReader, pos, size);
-
- if (m_maxSizeLength <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvDocType) {
- if (m_docType)
- return E_FILE_FORMAT_INVALID;
-
- status = UnserializeString(pReader, pos, size, m_docType);
-
- if (status) // error
- return status;
- } else if (id == libwebm::kMkvDocTypeVersion) {
- m_docTypeVersion = UnserializeUInt(pReader, pos, size);
-
- if (m_docTypeVersion <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvDocTypeReadVersion) {
- m_docTypeReadVersion = UnserializeUInt(pReader, pos, size);
-
- if (m_docTypeReadVersion <= 0)
- return E_FILE_FORMAT_INVALID;
- }
-
- pos += size;
- }
-
- if (pos != end)
- return E_FILE_FORMAT_INVALID;
-
- // Make sure DocType, DocTypeReadVersion, and DocTypeVersion are valid.
- if (m_docType == NULL || m_docTypeReadVersion <= 0 || m_docTypeVersion <= 0)
- return E_FILE_FORMAT_INVALID;
-
- // Make sure EBMLMaxIDLength and EBMLMaxSizeLength are valid.
- if (m_maxIdLength <= 0 || m_maxIdLength > 4 || m_maxSizeLength <= 0 ||
- m_maxSizeLength > 8)
- return E_FILE_FORMAT_INVALID;
-
- return 0;
-}
-
-Segment::Segment(IMkvReader* pReader, long long elem_start,
- // long long elem_size,
- long long start, long long size)
- : m_pReader(pReader),
- m_element_start(elem_start),
- // m_element_size(elem_size),
- m_start(start),
- m_size(size),
- m_pos(start),
- m_pUnknownSize(0),
- m_pSeekHead(NULL),
- m_pInfo(NULL),
- m_pTracks(NULL),
- m_pCues(NULL),
- m_pChapters(NULL),
- m_pTags(NULL),
- m_clusters(NULL),
- m_clusterCount(0),
- m_clusterPreloadCount(0),
- m_clusterSize(0) {}
-
-Segment::~Segment() {
- const long count = m_clusterCount + m_clusterPreloadCount;
-
- Cluster** i = m_clusters;
- Cluster** j = m_clusters + count;
-
- while (i != j) {
- Cluster* const p = *i++;
- delete p;
- }
-
- delete[] m_clusters;
-
- delete m_pTracks;
- delete m_pInfo;
- delete m_pCues;
- delete m_pChapters;
- delete m_pTags;
- delete m_pSeekHead;
-}
-
-long long Segment::CreateInstance(IMkvReader* pReader, long long pos,
- Segment*& pSegment) {
- if (pReader == NULL || pos < 0)
- return E_PARSE_FAILED;
-
- pSegment = NULL;
-
- long long total, available;
-
- const long status = pReader->Length(&total, &available);
-
- if (status < 0) // error
- return status;
-
- if (available < 0)
- return -1;
-
- if ((total >= 0) && (available > total))
- return -1;
-
- // I would assume that in practice this loop would execute
- // exactly once, but we allow for other elements (e.g. Void)
- // to immediately follow the EBML header. This is fine for
- // the source filter case (since the entire file is available),
- // but in the splitter case over a network we should probably
- // just give up early. We could for example decide only to
- // execute this loop a maximum of, say, 10 times.
- // TODO:
- // There is an implied "give up early" by only parsing up
- // to the available limit. We do do that, but only if the
- // total file size is unknown. We could decide to always
- // use what's available as our limit (irrespective of whether
- // we happen to know the total file length). This would have
- // as its sense "parse this much of the file before giving up",
- // which a slightly different sense from "try to parse up to
- // 10 EMBL elements before giving up".
-
- for (;;) {
- if ((total >= 0) && (pos >= total))
- return E_FILE_FORMAT_INVALID;
-
- // Read ID
- long len;
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result) // error, or too few available bytes
- return result;
-
- if ((total >= 0) && ((pos + len) > total))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > available)
- return pos + len;
-
- const long long idpos = pos;
- const long long id = ReadID(pReader, pos, len);
-
- if (id < 0)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume ID
-
- // Read Size
-
- result = GetUIntLength(pReader, pos, len);
-
- if (result) // error, or too few available bytes
- return result;
-
- if ((total >= 0) && ((pos + len) > total))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > available)
- return pos + len;
-
- long long size = ReadUInt(pReader, pos, len);
-
- if (size < 0) // error
- return size;
-
- pos += len; // consume length of size of element
-
- // Pos now points to start of payload
-
- // Handle "unknown size" for live streaming of webm files.
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (id == libwebm::kMkvSegment) {
- if (size == unknown_size)
- size = -1;
-
- else if (total < 0)
- size = -1;
-
- else if ((pos + size) > total)
- size = -1;
-
- pSegment = new (std::nothrow) Segment(pReader, idpos, pos, size);
- if (pSegment == NULL)
- return E_PARSE_FAILED;
-
- return 0; // success
- }
-
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID;
-
- if ((total >= 0) && ((pos + size) > total))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + size) > available)
- return pos + size;
-
- pos += size; // consume payload
- }
-}
-
-long long Segment::ParseHeaders() {
- // Outermost (level 0) segment object has been constructed,
- // and pos designates start of payload. We need to find the
- // inner (level 1) elements.
- long long total, available;
-
- const int status = m_pReader->Length(&total, &available);
-
- if (status < 0) // error
- return status;
-
- if (total > 0 && available > total)
- return E_FILE_FORMAT_INVALID;
-
- const long long segment_stop = (m_size < 0) ? -1 : m_start + m_size;
-
- if ((segment_stop >= 0 && total >= 0 && segment_stop > total) ||
- (segment_stop >= 0 && m_pos > segment_stop)) {
- return E_FILE_FORMAT_INVALID;
- }
-
- for (;;) {
- if ((total >= 0) && (m_pos >= total))
- break;
-
- if ((segment_stop >= 0) && (m_pos >= segment_stop))
- break;
-
- long long pos = m_pos;
- const long long element_start = pos;
-
- // Avoid rolling over pos when very close to LLONG_MAX.
- unsigned long long rollover_check = pos + 1ULL;
- if (rollover_check > LLONG_MAX)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + 1) > available)
- return (pos + 1);
-
- long len;
- long long result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return result;
-
- if (result > 0) {
- // MkvReader doesn't have enough data to satisfy this read attempt.
- return (pos + 1);
- }
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > available)
- return pos + len;
-
- const long long idpos = pos;
- const long long id = ReadID(m_pReader, idpos, len);
-
- if (id < 0)
- return E_FILE_FORMAT_INVALID;
-
- if (id == libwebm::kMkvCluster)
- break;
-
- pos += len; // consume ID
-
- if ((pos + 1) > available)
- return (pos + 1);
-
- // Read Size
- result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return result;
-
- if (result > 0) {
- // MkvReader doesn't have enough data to satisfy this read attempt.
- return (pos + 1);
- }
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > available)
- return pos + len;
-
- const long long size = ReadUInt(m_pReader, pos, len);
-
- if (size < 0 || len < 1 || len > 8) {
- // TODO(tomfinegan): ReadUInt should return an error when len is < 1 or
- // len > 8 is true instead of checking this _everywhere_.
- return size;
- }
-
- pos += len; // consume length of size of element
-
- // Avoid rolling over pos when very close to LLONG_MAX.
- rollover_check = static_cast<unsigned long long>(pos) + size;
- if (rollover_check > LLONG_MAX)
- return E_FILE_FORMAT_INVALID;
-
- const long long element_size = size + pos - element_start;
-
- // Pos now points to start of payload
-
- if ((segment_stop >= 0) && ((pos + size) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- // We read EBML elements either in total or nothing at all.
-
- if ((pos + size) > available)
- return pos + size;
-
- if (id == libwebm::kMkvInfo) {
- if (m_pInfo)
- return E_FILE_FORMAT_INVALID;
-
- m_pInfo = new (std::nothrow)
- SegmentInfo(this, pos, size, element_start, element_size);
-
- if (m_pInfo == NULL)
- return -1;
-
- const long status = m_pInfo->Parse();
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvTracks) {
- if (m_pTracks)
- return E_FILE_FORMAT_INVALID;
-
- m_pTracks = new (std::nothrow)
- Tracks(this, pos, size, element_start, element_size);
-
- if (m_pTracks == NULL)
- return -1;
-
- const long status = m_pTracks->Parse();
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvCues) {
- if (m_pCues == NULL) {
- m_pCues = new (std::nothrow)
- Cues(this, pos, size, element_start, element_size);
-
- if (m_pCues == NULL)
- return -1;
- }
- } else if (id == libwebm::kMkvSeekHead) {
- if (m_pSeekHead == NULL) {
- m_pSeekHead = new (std::nothrow)
- SeekHead(this, pos, size, element_start, element_size);
-
- if (m_pSeekHead == NULL)
- return -1;
-
- const long status = m_pSeekHead->Parse();
-
- if (status)
- return status;
- }
- } else if (id == libwebm::kMkvChapters) {
- if (m_pChapters == NULL) {
- m_pChapters = new (std::nothrow)
- Chapters(this, pos, size, element_start, element_size);
-
- if (m_pChapters == NULL)
- return -1;
-
- const long status = m_pChapters->Parse();
-
- if (status)
- return status;
- }
- } else if (id == libwebm::kMkvTags) {
- if (m_pTags == NULL) {
- m_pTags = new (std::nothrow)
- Tags(this, pos, size, element_start, element_size);
-
- if (m_pTags == NULL)
- return -1;
-
- const long status = m_pTags->Parse();
-
- if (status)
- return status;
- }
- }
-
- m_pos = pos + size; // consume payload
- }
-
- if (segment_stop >= 0 && m_pos > segment_stop)
- return E_FILE_FORMAT_INVALID;
-
- if (m_pInfo == NULL) // TODO: liberalize this behavior
- return E_FILE_FORMAT_INVALID;
-
- if (m_pTracks == NULL)
- return E_FILE_FORMAT_INVALID;
-
- return 0; // success
-}
-
-long Segment::LoadCluster(long long& pos, long& len) {
- for (;;) {
- const long result = DoLoadCluster(pos, len);
-
- if (result <= 1)
- return result;
- }
-}
-
-long Segment::DoLoadCluster(long long& pos, long& len) {
- if (m_pos < 0)
- return DoLoadClusterUnknownSize(pos, len);
-
- long long total, avail;
-
- long status = m_pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- if (total >= 0 && avail > total)
- return E_FILE_FORMAT_INVALID;
-
- const long long segment_stop = (m_size < 0) ? -1 : m_start + m_size;
-
- long long cluster_off = -1; // offset relative to start of segment
- long long cluster_size = -1; // size of cluster payload
-
- for (;;) {
- if ((total >= 0) && (m_pos >= total))
- return 1; // no more clusters
-
- if ((segment_stop >= 0) && (m_pos >= segment_stop))
- return 1; // no more clusters
-
- pos = m_pos;
-
- // Read ID
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0)
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long idpos = pos;
- const long long id = ReadID(m_pReader, idpos, len);
-
- if (id < 0)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume ID
-
- // Read Size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0)
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(m_pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- pos += len; // consume length of size of element
-
- // pos now points to start of payload
-
- if (size == 0) {
- // Missing element payload: move on.
- m_pos = pos;
- continue;
- }
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if ((segment_stop >= 0) && (size != unknown_size) &&
- ((pos + size) > segment_stop)) {
- return E_FILE_FORMAT_INVALID;
- }
-
- if (id == libwebm::kMkvCues) {
- if (size == unknown_size) {
- // Cues element of unknown size: Not supported.
- return E_FILE_FORMAT_INVALID;
- }
-
- if (m_pCues == NULL) {
- const long long element_size = (pos - idpos) + size;
-
- m_pCues = new (std::nothrow) Cues(this, pos, size, idpos, element_size);
- if (m_pCues == NULL)
- return -1;
- }
-
- m_pos = pos + size; // consume payload
- continue;
- }
-
- if (id != libwebm::kMkvCluster) {
- // Besides the Segment, Libwebm allows only cluster elements of unknown
- // size. Fail the parse upon encountering a non-cluster element reporting
- // unknown size.
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID;
-
- m_pos = pos + size; // consume payload
- continue;
- }
-
- // We have a cluster.
-
- cluster_off = idpos - m_start; // relative pos
-
- if (size != unknown_size)
- cluster_size = size;
-
- break;
- }
-
- if (cluster_off < 0) {
- // No cluster, die.
- return E_FILE_FORMAT_INVALID;
- }
-
- long long pos_;
- long len_;
-
- status = Cluster::HasBlockEntries(this, cluster_off, pos_, len_);
-
- if (status < 0) { // error, or underflow
- pos = pos_;
- len = len_;
-
- return status;
- }
-
- // status == 0 means "no block entries found"
- // status > 0 means "found at least one block entry"
-
- // TODO:
- // The issue here is that the segment increments its own
- // pos ptr past the most recent cluster parsed, and then
- // starts from there to parse the next cluster. If we
- // don't know the size of the current cluster, then we
- // must either parse its payload (as we do below), looking
- // for the cluster (or cues) ID to terminate the parse.
- // This isn't really what we want: rather, we really need
- // a way to create the curr cluster object immediately.
- // The pity is that cluster::parse can determine its own
- // boundary, and we largely duplicate that same logic here.
- //
- // Maybe we need to get rid of our look-ahead preloading
- // in source::parse???
- //
- // As we're parsing the blocks in the curr cluster
- //(in cluster::parse), we should have some way to signal
- // to the segment that we have determined the boundary,
- // so it can adjust its own segment::m_pos member.
- //
- // The problem is that we're asserting in asyncreadinit,
- // because we adjust the pos down to the curr seek pos,
- // and the resulting adjusted len is > 2GB. I'm suspicious
- // that this is even correct, but even if it is, we can't
- // be loading that much data in the cache anyway.
-
- const long idx = m_clusterCount;
-
- if (m_clusterPreloadCount > 0) {
- if (idx >= m_clusterSize)
- return E_FILE_FORMAT_INVALID;
-
- Cluster* const pCluster = m_clusters[idx];
- if (pCluster == NULL || pCluster->m_index >= 0)
- return E_FILE_FORMAT_INVALID;
-
- const long long off = pCluster->GetPosition();
- if (off < 0)
- return E_FILE_FORMAT_INVALID;
-
- if (off == cluster_off) { // preloaded already
- if (status == 0) // no entries found
- return E_FILE_FORMAT_INVALID;
-
- if (cluster_size >= 0)
- pos += cluster_size;
- else {
- const long long element_size = pCluster->GetElementSize();
-
- if (element_size <= 0)
- return E_FILE_FORMAT_INVALID; // TODO: handle this case
-
- pos = pCluster->m_element_start + element_size;
- }
-
- pCluster->m_index = idx; // move from preloaded to loaded
- ++m_clusterCount;
- --m_clusterPreloadCount;
-
- m_pos = pos; // consume payload
- if (segment_stop >= 0 && m_pos > segment_stop)
- return E_FILE_FORMAT_INVALID;
-
- return 0; // success
- }
- }
-
- if (status == 0) { // no entries found
- if (cluster_size >= 0)
- pos += cluster_size;
-
- if ((total >= 0) && (pos >= total)) {
- m_pos = total;
- return 1; // no more clusters
- }
-
- if ((segment_stop >= 0) && (pos >= segment_stop)) {
- m_pos = segment_stop;
- return 1; // no more clusters
- }
-
- m_pos = pos;
- return 2; // try again
- }
-
- // status > 0 means we have an entry
-
- Cluster* const pCluster = Cluster::Create(this, idx, cluster_off);
- if (pCluster == NULL)
- return -1;
-
- if (!AppendCluster(pCluster)) {
- delete pCluster;
- return -1;
- }
-
- if (cluster_size >= 0) {
- pos += cluster_size;
-
- m_pos = pos;
-
- if (segment_stop > 0 && m_pos > segment_stop)
- return E_FILE_FORMAT_INVALID;
-
- return 0;
- }
-
- m_pUnknownSize = pCluster;
- m_pos = -pos;
-
- return 0; // partial success, since we have a new cluster
-
- // status == 0 means "no block entries found"
- // pos designates start of payload
- // m_pos has NOT been adjusted yet (in case we need to come back here)
-}
-
-long Segment::DoLoadClusterUnknownSize(long long& pos, long& len) {
- if (m_pos >= 0 || m_pUnknownSize == NULL)
- return E_PARSE_FAILED;
-
- const long status = m_pUnknownSize->Parse(pos, len);
-
- if (status < 0) // error or underflow
- return status;
-
- if (status == 0) // parsed a block
- return 2; // continue parsing
-
- const long long start = m_pUnknownSize->m_element_start;
- const long long size = m_pUnknownSize->GetElementSize();
-
- if (size < 0)
- return E_FILE_FORMAT_INVALID;
-
- pos = start + size;
- m_pos = pos;
-
- m_pUnknownSize = 0;
-
- return 2; // continue parsing
-}
-
-bool Segment::AppendCluster(Cluster* pCluster) {
- if (pCluster == NULL || pCluster->m_index < 0)
- return false;
-
- const long count = m_clusterCount + m_clusterPreloadCount;
-
- long& size = m_clusterSize;
- const long idx = pCluster->m_index;
-
- if (size < count || idx != m_clusterCount)
- return false;
-
- if (count >= size) {
- const long n = (size <= 0) ? 2048 : 2 * size;
-
- Cluster** const qq = new (std::nothrow) Cluster*[n];
- if (qq == NULL)
- return false;
-
- Cluster** q = qq;
- Cluster** p = m_clusters;
- Cluster** const pp = p + count;
-
- while (p != pp)
- *q++ = *p++;
-
- delete[] m_clusters;
-
- m_clusters = qq;
- size = n;
- }
-
- if (m_clusterPreloadCount > 0) {
- Cluster** const p = m_clusters + m_clusterCount;
- if (*p == NULL || (*p)->m_index >= 0)
- return false;
-
- Cluster** q = p + m_clusterPreloadCount;
- if (q >= (m_clusters + size))
- return false;
-
- for (;;) {
- Cluster** const qq = q - 1;
- if ((*qq)->m_index >= 0)
- return false;
-
- *q = *qq;
- q = qq;
-
- if (q == p)
- break;
- }
- }
-
- m_clusters[idx] = pCluster;
- ++m_clusterCount;
- return true;
-}
-
-bool Segment::PreloadCluster(Cluster* pCluster, ptrdiff_t idx) {
- if (pCluster == NULL || pCluster->m_index >= 0 || idx < m_clusterCount)
- return false;
-
- const long count = m_clusterCount + m_clusterPreloadCount;
-
- long& size = m_clusterSize;
- if (size < count)
- return false;
-
- if (count >= size) {
- const long n = (size <= 0) ? 2048 : 2 * size;
-
- Cluster** const qq = new (std::nothrow) Cluster*[n];
- if (qq == NULL)
- return false;
- Cluster** q = qq;
-
- Cluster** p = m_clusters;
- Cluster** const pp = p + count;
-
- while (p != pp)
- *q++ = *p++;
-
- delete[] m_clusters;
-
- m_clusters = qq;
- size = n;
- }
-
- if (m_clusters == NULL)
- return false;
-
- Cluster** const p = m_clusters + idx;
-
- Cluster** q = m_clusters + count;
- if (q < p || q >= (m_clusters + size))
- return false;
-
- while (q > p) {
- Cluster** const qq = q - 1;
-
- if ((*qq)->m_index >= 0)
- return false;
-
- *q = *qq;
- q = qq;
- }
-
- m_clusters[idx] = pCluster;
- ++m_clusterPreloadCount;
- return true;
-}
-
-long Segment::Load() {
- if (m_clusters != NULL || m_clusterSize != 0 || m_clusterCount != 0)
- return E_PARSE_FAILED;
-
- // Outermost (level 0) segment object has been constructed,
- // and pos designates start of payload. We need to find the
- // inner (level 1) elements.
-
- const long long header_status = ParseHeaders();
-
- if (header_status < 0) // error
- return static_cast<long>(header_status);
-
- if (header_status > 0) // underflow
- return E_BUFFER_NOT_FULL;
-
- if (m_pInfo == NULL || m_pTracks == NULL)
- return E_FILE_FORMAT_INVALID;
-
- for (;;) {
- const long status = LoadCluster();
-
- if (status < 0) // error
- return status;
-
- if (status >= 1) // no more clusters
- return 0;
- }
-}
-
-SeekHead::Entry::Entry() : id(0), pos(0), element_start(0), element_size(0) {}
-
-SeekHead::SeekHead(Segment* pSegment, long long start, long long size_,
- long long element_start, long long element_size)
- : m_pSegment(pSegment),
- m_start(start),
- m_size(size_),
- m_element_start(element_start),
- m_element_size(element_size),
- m_entries(0),
- m_entry_count(0),
- m_void_elements(0),
- m_void_element_count(0) {}
-
-SeekHead::~SeekHead() {
- delete[] m_entries;
- delete[] m_void_elements;
-}
-
-long SeekHead::Parse() {
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long pos = m_start;
- const long long stop = m_start + m_size;
-
- // first count the seek head entries
-
- int entry_count = 0;
- int void_element_count = 0;
-
- while (pos < stop) {
- long long id, size;
-
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvSeek)
- ++entry_count;
- else if (id == libwebm::kMkvVoid)
- ++void_element_count;
-
- pos += size; // consume payload
-
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- if (entry_count > 0) {
- m_entries = new (std::nothrow) Entry[entry_count];
-
- if (m_entries == NULL)
- return -1;
- }
-
- if (void_element_count > 0) {
- m_void_elements = new (std::nothrow) VoidElement[void_element_count];
-
- if (m_void_elements == NULL)
- return -1;
- }
-
- // now parse the entries and void elements
-
- Entry* pEntry = m_entries;
- VoidElement* pVoidElement = m_void_elements;
-
- pos = m_start;
-
- while (pos < stop) {
- const long long idpos = pos;
-
- long long id, size;
-
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvSeek && entry_count > 0) {
- if (ParseEntry(pReader, pos, size, pEntry)) {
- Entry& e = *pEntry++;
-
- e.element_start = idpos;
- e.element_size = (pos + size) - idpos;
- }
- } else if (id == libwebm::kMkvVoid && void_element_count > 0) {
- VoidElement& e = *pVoidElement++;
-
- e.element_start = idpos;
- e.element_size = (pos + size) - idpos;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- ptrdiff_t count_ = ptrdiff_t(pEntry - m_entries);
- assert(count_ >= 0);
- assert(count_ <= entry_count);
-
- m_entry_count = static_cast<int>(count_);
-
- count_ = ptrdiff_t(pVoidElement - m_void_elements);
- assert(count_ >= 0);
- assert(count_ <= void_element_count);
-
- m_void_element_count = static_cast<int>(count_);
-
- return 0;
-}
-
-int SeekHead::GetCount() const { return m_entry_count; }
-
-const SeekHead::Entry* SeekHead::GetEntry(int idx) const {
- if (idx < 0)
- return 0;
-
- if (idx >= m_entry_count)
- return 0;
-
- return m_entries + idx;
-}
-
-int SeekHead::GetVoidElementCount() const { return m_void_element_count; }
-
-const SeekHead::VoidElement* SeekHead::GetVoidElement(int idx) const {
- if (idx < 0)
- return 0;
-
- if (idx >= m_void_element_count)
- return 0;
-
- return m_void_elements + idx;
-}
-
-long Segment::ParseCues(long long off, long long& pos, long& len) {
- if (m_pCues)
- return 0; // success
-
- if (off < 0)
- return -1;
-
- long long total, avail;
-
- const int status = m_pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- assert((total < 0) || (avail <= total));
-
- pos = m_start + off;
-
- if ((total < 0) || (pos >= total))
- return 1; // don't bother parsing cues
-
- const long long element_start = pos;
- const long long segment_stop = (m_size < 0) ? -1 : m_start + m_size;
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // underflow (weird)
- {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long idpos = pos;
-
- const long long id = ReadID(m_pReader, idpos, len);
-
- if (id != libwebm::kMkvCues)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume ID
- assert((segment_stop < 0) || (pos <= segment_stop));
-
- // Read Size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // underflow (weird)
- {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(m_pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- if (size == 0) // weird, although technically not illegal
- return 1; // done
-
- pos += len; // consume length of size of element
- assert((segment_stop < 0) || (pos <= segment_stop));
-
- // Pos now points to start of payload
-
- const long long element_stop = pos + size;
-
- if ((segment_stop >= 0) && (element_stop > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((total >= 0) && (element_stop > total))
- return 1; // don't bother parsing anymore
-
- len = static_cast<long>(size);
-
- if (element_stop > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long element_size = element_stop - element_start;
-
- m_pCues =
- new (std::nothrow) Cues(this, pos, size, element_start, element_size);
- if (m_pCues == NULL)
- return -1;
-
- return 0; // success
-}
-
-bool SeekHead::ParseEntry(IMkvReader* pReader, long long start, long long size_,
- Entry* pEntry) {
- if (size_ <= 0)
- return false;
-
- long long pos = start;
- const long long stop = start + size_;
-
- long len;
-
- // parse the container for the level-1 element ID
-
- const long long seekIdId = ReadID(pReader, pos, len);
- if (seekIdId < 0)
- return false;
-
- if (seekIdId != libwebm::kMkvSeekID)
- return false;
-
- if ((pos + len) > stop)
- return false;
-
- pos += len; // consume SeekID id
-
- const long long seekIdSize = ReadUInt(pReader, pos, len);
-
- if (seekIdSize <= 0)
- return false;
-
- if ((pos + len) > stop)
- return false;
-
- pos += len; // consume size of field
-
- if ((pos + seekIdSize) > stop)
- return false;
-
- pEntry->id = ReadID(pReader, pos, len); // payload
-
- if (pEntry->id <= 0)
- return false;
-
- if (len != seekIdSize)
- return false;
-
- pos += seekIdSize; // consume SeekID payload
-
- const long long seekPosId = ReadID(pReader, pos, len);
-
- if (seekPosId != libwebm::kMkvSeekPosition)
- return false;
-
- if ((pos + len) > stop)
- return false;
-
- pos += len; // consume id
-
- const long long seekPosSize = ReadUInt(pReader, pos, len);
-
- if (seekPosSize <= 0)
- return false;
-
- if ((pos + len) > stop)
- return false;
-
- pos += len; // consume size
-
- if ((pos + seekPosSize) > stop)
- return false;
-
- pEntry->pos = UnserializeUInt(pReader, pos, seekPosSize);
-
- if (pEntry->pos < 0)
- return false;
-
- pos += seekPosSize; // consume payload
-
- if (pos != stop)
- return false;
-
- return true;
-}
-
-Cues::Cues(Segment* pSegment, long long start_, long long size_,
- long long element_start, long long element_size)
- : m_pSegment(pSegment),
- m_start(start_),
- m_size(size_),
- m_element_start(element_start),
- m_element_size(element_size),
- m_cue_points(NULL),
- m_count(0),
- m_preload_count(0),
- m_pos(start_) {}
-
-Cues::~Cues() {
- const long n = m_count + m_preload_count;
-
- CuePoint** p = m_cue_points;
- CuePoint** const q = p + n;
-
- while (p != q) {
- CuePoint* const pCP = *p++;
- assert(pCP);
-
- delete pCP;
- }
-
- delete[] m_cue_points;
-}
-
-long Cues::GetCount() const {
- if (m_cue_points == NULL)
- return -1;
-
- return m_count; // TODO: really ignore preload count?
-}
-
-bool Cues::DoneParsing() const {
- const long long stop = m_start + m_size;
- return (m_pos >= stop);
-}
-
-bool Cues::Init() const {
- if (m_cue_points)
- return true;
-
- if (m_count != 0 || m_preload_count != 0)
- return false;
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- const long long stop = m_start + m_size;
- long long pos = m_start;
-
- long cue_points_size = 0;
-
- while (pos < stop) {
- const long long idpos = pos;
-
- long len;
-
- const long long id = ReadID(pReader, pos, len);
- if (id < 0 || (pos + len) > stop) {
- return false;
- }
-
- pos += len; // consume ID
-
- const long long size = ReadUInt(pReader, pos, len);
- if (size < 0 || (pos + len > stop)) {
- return false;
- }
-
- pos += len; // consume Size field
- if (pos + size > stop) {
- return false;
- }
-
- if (id == libwebm::kMkvCuePoint) {
- if (!PreloadCuePoint(cue_points_size, idpos))
- return false;
- }
-
- pos += size; // skip payload
- }
- return true;
-}
-
-bool Cues::PreloadCuePoint(long& cue_points_size, long long pos) const {
- if (m_count != 0)
- return false;
-
- if (m_preload_count >= cue_points_size) {
- const long n = (cue_points_size <= 0) ? 2048 : 2 * cue_points_size;
-
- CuePoint** const qq = new (std::nothrow) CuePoint*[n];
- if (qq == NULL)
- return false;
-
- CuePoint** q = qq; // beginning of target
-
- CuePoint** p = m_cue_points; // beginning of source
- CuePoint** const pp = p + m_preload_count; // end of source
-
- while (p != pp)
- *q++ = *p++;
-
- delete[] m_cue_points;
-
- m_cue_points = qq;
- cue_points_size = n;
- }
-
- CuePoint* const pCP = new (std::nothrow) CuePoint(m_preload_count, pos);
- if (pCP == NULL)
- return false;
-
- m_cue_points[m_preload_count++] = pCP;
- return true;
-}
-
-bool Cues::LoadCuePoint() const {
- const long long stop = m_start + m_size;
-
- if (m_pos >= stop)
- return false; // nothing else to do
-
- if (!Init()) {
- m_pos = stop;
- return false;
- }
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- while (m_pos < stop) {
- const long long idpos = m_pos;
-
- long len;
-
- const long long id = ReadID(pReader, m_pos, len);
- if (id < 0 || (m_pos + len) > stop)
- return false;
-
- m_pos += len; // consume ID
-
- const long long size = ReadUInt(pReader, m_pos, len);
- if (size < 0 || (m_pos + len) > stop)
- return false;
-
- m_pos += len; // consume Size field
- if ((m_pos + size) > stop)
- return false;
-
- if (id != libwebm::kMkvCuePoint) {
- m_pos += size; // consume payload
- if (m_pos > stop)
- return false;
-
- continue;
- }
-
- if (m_preload_count < 1)
- return false;
-
- CuePoint* const pCP = m_cue_points[m_count];
- if (!pCP || (pCP->GetTimeCode() < 0 && (-pCP->GetTimeCode() != idpos)))
- return false;
-
- if (!pCP->Load(pReader)) {
- m_pos = stop;
- return false;
- }
- ++m_count;
- --m_preload_count;
-
- m_pos += size; // consume payload
- if (m_pos > stop)
- return false;
-
- return true; // yes, we loaded a cue point
- }
-
- return false; // no, we did not load a cue point
-}
-
-bool Cues::Find(long long time_ns, const Track* pTrack, const CuePoint*& pCP,
- const CuePoint::TrackPosition*& pTP) const {
- if (time_ns < 0 || pTrack == NULL || m_cue_points == NULL || m_count == 0)
- return false;
-
- CuePoint** const ii = m_cue_points;
- CuePoint** i = ii;
-
- CuePoint** const jj = ii + m_count;
- CuePoint** j = jj;
-
- pCP = *i;
- if (pCP == NULL)
- return false;
-
- if (time_ns <= pCP->GetTime(m_pSegment)) {
- pTP = pCP->Find(pTrack);
- return (pTP != NULL);
- }
-
- while (i < j) {
- // INVARIANT:
- //[ii, i) <= time_ns
- //[i, j) ?
- //[j, jj) > time_ns
-
- CuePoint** const k = i + (j - i) / 2;
- if (k >= jj)
- return false;
-
- CuePoint* const pCP = *k;
- if (pCP == NULL)
- return false;
-
- const long long t = pCP->GetTime(m_pSegment);
-
- if (t <= time_ns)
- i = k + 1;
- else
- j = k;
-
- if (i > j)
- return false;
- }
-
- if (i != j || i > jj || i <= ii)
- return false;
-
- pCP = *--i;
-
- if (pCP == NULL || pCP->GetTime(m_pSegment) > time_ns)
- return false;
-
- // TODO: here and elsewhere, it's probably not correct to search
- // for the cue point with this time, and then search for a matching
- // track. In principle, the matching track could be on some earlier
- // cue point, and with our current algorithm, we'd miss it. To make
- // this bullet-proof, we'd need to create a secondary structure,
- // with a list of cue points that apply to a track, and then search
- // that track-based structure for a matching cue point.
-
- pTP = pCP->Find(pTrack);
- return (pTP != NULL);
-}
-
-const CuePoint* Cues::GetFirst() const {
- if (m_cue_points == NULL || m_count == 0)
- return NULL;
-
- CuePoint* const* const pp = m_cue_points;
- if (pp == NULL)
- return NULL;
-
- CuePoint* const pCP = pp[0];
- if (pCP == NULL || pCP->GetTimeCode() < 0)
- return NULL;
-
- return pCP;
-}
-
-const CuePoint* Cues::GetLast() const {
- if (m_cue_points == NULL || m_count <= 0)
- return NULL;
-
- const long index = m_count - 1;
-
- CuePoint* const* const pp = m_cue_points;
- if (pp == NULL)
- return NULL;
-
- CuePoint* const pCP = pp[index];
- if (pCP == NULL || pCP->GetTimeCode() < 0)
- return NULL;
-
- return pCP;
-}
-
-const CuePoint* Cues::GetNext(const CuePoint* pCurr) const {
- if (pCurr == NULL || pCurr->GetTimeCode() < 0 || m_cue_points == NULL ||
- m_count < 1) {
- return NULL;
- }
-
- long index = pCurr->m_index;
- if (index >= m_count)
- return NULL;
-
- CuePoint* const* const pp = m_cue_points;
- if (pp == NULL || pp[index] != pCurr)
- return NULL;
-
- ++index;
-
- if (index >= m_count)
- return NULL;
-
- CuePoint* const pNext = pp[index];
-
- if (pNext == NULL || pNext->GetTimeCode() < 0)
- return NULL;
-
- return pNext;
-}
-
-const BlockEntry* Cues::GetBlock(const CuePoint* pCP,
- const CuePoint::TrackPosition* pTP) const {
- if (pCP == NULL || pTP == NULL)
- return NULL;
-
- return m_pSegment->GetBlock(*pCP, *pTP);
-}
-
-const BlockEntry* Segment::GetBlock(const CuePoint& cp,
- const CuePoint::TrackPosition& tp) {
- Cluster** const ii = m_clusters;
- Cluster** i = ii;
-
- const long count = m_clusterCount + m_clusterPreloadCount;
-
- Cluster** const jj = ii + count;
- Cluster** j = jj;
-
- while (i < j) {
- // INVARIANT:
- //[ii, i) < pTP->m_pos
- //[i, j) ?
- //[j, jj) > pTP->m_pos
-
- Cluster** const k = i + (j - i) / 2;
- assert(k < jj);
-
- Cluster* const pCluster = *k;
- assert(pCluster);
-
- // const long long pos_ = pCluster->m_pos;
- // assert(pos_);
- // const long long pos = pos_ * ((pos_ < 0) ? -1 : 1);
-
- const long long pos = pCluster->GetPosition();
- assert(pos >= 0);
-
- if (pos < tp.m_pos)
- i = k + 1;
- else if (pos > tp.m_pos)
- j = k;
- else
- return pCluster->GetEntry(cp, tp);
- }
-
- assert(i == j);
- // assert(Cluster::HasBlockEntries(this, tp.m_pos));
-
- Cluster* const pCluster = Cluster::Create(this, -1, tp.m_pos); //, -1);
- if (pCluster == NULL)
- return NULL;
-
- const ptrdiff_t idx = i - m_clusters;
-
- if (!PreloadCluster(pCluster, idx)) {
- delete pCluster;
- return NULL;
- }
- assert(m_clusters);
- assert(m_clusterPreloadCount > 0);
- assert(m_clusters[idx] == pCluster);
-
- return pCluster->GetEntry(cp, tp);
-}
-
-const Cluster* Segment::FindOrPreloadCluster(long long requested_pos) {
- if (requested_pos < 0)
- return 0;
-
- Cluster** const ii = m_clusters;
- Cluster** i = ii;
-
- const long count = m_clusterCount + m_clusterPreloadCount;
-
- Cluster** const jj = ii + count;
- Cluster** j = jj;
-
- while (i < j) {
- // INVARIANT:
- //[ii, i) < pTP->m_pos
- //[i, j) ?
- //[j, jj) > pTP->m_pos
-
- Cluster** const k = i + (j - i) / 2;
- assert(k < jj);
-
- Cluster* const pCluster = *k;
- assert(pCluster);
-
- // const long long pos_ = pCluster->m_pos;
- // assert(pos_);
- // const long long pos = pos_ * ((pos_ < 0) ? -1 : 1);
-
- const long long pos = pCluster->GetPosition();
- assert(pos >= 0);
-
- if (pos < requested_pos)
- i = k + 1;
- else if (pos > requested_pos)
- j = k;
- else
- return pCluster;
- }
-
- assert(i == j);
- // assert(Cluster::HasBlockEntries(this, tp.m_pos));
-
- Cluster* const pCluster = Cluster::Create(this, -1, requested_pos);
- if (pCluster == NULL)
- return NULL;
-
- const ptrdiff_t idx = i - m_clusters;
-
- if (!PreloadCluster(pCluster, idx)) {
- delete pCluster;
- return NULL;
- }
- assert(m_clusters);
- assert(m_clusterPreloadCount > 0);
- assert(m_clusters[idx] == pCluster);
-
- return pCluster;
-}
-
-CuePoint::CuePoint(long idx, long long pos)
- : m_element_start(0),
- m_element_size(0),
- m_index(idx),
- m_timecode(-1 * pos),
- m_track_positions(NULL),
- m_track_positions_count(0) {
- assert(pos > 0);
-}
-
-CuePoint::~CuePoint() { delete[] m_track_positions; }
-
-bool CuePoint::Load(IMkvReader* pReader) {
- // odbgstream os;
- // os << "CuePoint::Load(begin): timecode=" << m_timecode << endl;
-
- if (m_timecode >= 0) // already loaded
- return true;
-
- assert(m_track_positions == NULL);
- assert(m_track_positions_count == 0);
-
- long long pos_ = -m_timecode;
- const long long element_start = pos_;
-
- long long stop;
-
- {
- long len;
-
- const long long id = ReadID(pReader, pos_, len);
- if (id != libwebm::kMkvCuePoint)
- return false;
-
- pos_ += len; // consume ID
-
- const long long size = ReadUInt(pReader, pos_, len);
- assert(size >= 0);
-
- pos_ += len; // consume Size field
- // pos_ now points to start of payload
-
- stop = pos_ + size;
- }
-
- const long long element_size = stop - element_start;
-
- long long pos = pos_;
-
- // First count number of track positions
-
- while (pos < stop) {
- long len;
-
- const long long id = ReadID(pReader, pos, len);
- if ((id < 0) || (pos + len > stop)) {
- return false;
- }
-
- pos += len; // consume ID
-
- const long long size = ReadUInt(pReader, pos, len);
- if ((size < 0) || (pos + len > stop)) {
- return false;
- }
-
- pos += len; // consume Size field
- if ((pos + size) > stop) {
- return false;
- }
-
- if (id == libwebm::kMkvCueTime)
- m_timecode = UnserializeUInt(pReader, pos, size);
-
- else if (id == libwebm::kMkvCueTrackPositions)
- ++m_track_positions_count;
-
- pos += size; // consume payload
- }
-
- if (m_timecode < 0 || m_track_positions_count <= 0) {
- return false;
- }
-
- // os << "CuePoint::Load(cont'd): idpos=" << idpos
- // << " timecode=" << m_timecode
- // << endl;
-
- m_track_positions = new (std::nothrow) TrackPosition[m_track_positions_count];
- if (m_track_positions == NULL)
- return false;
-
- // Now parse track positions
-
- TrackPosition* p = m_track_positions;
- pos = pos_;
-
- while (pos < stop) {
- long len;
-
- const long long id = ReadID(pReader, pos, len);
- if (id < 0 || (pos + len) > stop)
- return false;
-
- pos += len; // consume ID
-
- const long long size = ReadUInt(pReader, pos, len);
- assert(size >= 0);
- assert((pos + len) <= stop);
-
- pos += len; // consume Size field
- assert((pos + size) <= stop);
-
- if (id == libwebm::kMkvCueTrackPositions) {
- TrackPosition& tp = *p++;
- if (!tp.Parse(pReader, pos, size)) {
- return false;
- }
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return false;
- }
-
- assert(size_t(p - m_track_positions) == m_track_positions_count);
-
- m_element_start = element_start;
- m_element_size = element_size;
-
- return true;
-}
-
-bool CuePoint::TrackPosition::Parse(IMkvReader* pReader, long long start_,
- long long size_) {
- const long long stop = start_ + size_;
- long long pos = start_;
-
- m_track = -1;
- m_pos = -1;
- m_block = 1; // default
-
- while (pos < stop) {
- long len;
-
- const long long id = ReadID(pReader, pos, len);
- if ((id < 0) || ((pos + len) > stop)) {
- return false;
- }
-
- pos += len; // consume ID
-
- const long long size = ReadUInt(pReader, pos, len);
- if ((size < 0) || ((pos + len) > stop)) {
- return false;
- }
-
- pos += len; // consume Size field
- if ((pos + size) > stop) {
- return false;
- }
-
- if (id == libwebm::kMkvCueTrack)
- m_track = UnserializeUInt(pReader, pos, size);
- else if (id == libwebm::kMkvCueClusterPosition)
- m_pos = UnserializeUInt(pReader, pos, size);
- else if (id == libwebm::kMkvCueBlockNumber)
- m_block = UnserializeUInt(pReader, pos, size);
-
- pos += size; // consume payload
- }
-
- if ((m_pos < 0) || (m_track <= 0)) {
- return false;
- }
-
- return true;
-}
-
-const CuePoint::TrackPosition* CuePoint::Find(const Track* pTrack) const {
- if (pTrack == NULL) {
- return NULL;
- }
-
- const long long n = pTrack->GetNumber();
-
- const TrackPosition* i = m_track_positions;
- const TrackPosition* const j = i + m_track_positions_count;
-
- while (i != j) {
- const TrackPosition& p = *i++;
-
- if (p.m_track == n)
- return &p;
- }
-
- return NULL; // no matching track number found
-}
-
-long long CuePoint::GetTimeCode() const { return m_timecode; }
-
-long long CuePoint::GetTime(const Segment* pSegment) const {
- assert(pSegment);
- assert(m_timecode >= 0);
-
- const SegmentInfo* const pInfo = pSegment->GetInfo();
- assert(pInfo);
-
- const long long scale = pInfo->GetTimeCodeScale();
- assert(scale >= 1);
-
- const long long time = scale * m_timecode;
-
- return time;
-}
-
-bool Segment::DoneParsing() const {
- if (m_size < 0) {
- long long total, avail;
-
- const int status = m_pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return true; // must assume done
-
- if (total < 0)
- return false; // assume live stream
-
- return (m_pos >= total);
- }
-
- const long long stop = m_start + m_size;
-
- return (m_pos >= stop);
-}
-
-const Cluster* Segment::GetFirst() const {
- if ((m_clusters == NULL) || (m_clusterCount <= 0))
- return &m_eos;
-
- Cluster* const pCluster = m_clusters[0];
- assert(pCluster);
-
- return pCluster;
-}
-
-const Cluster* Segment::GetLast() const {
- if ((m_clusters == NULL) || (m_clusterCount <= 0))
- return &m_eos;
-
- const long idx = m_clusterCount - 1;
-
- Cluster* const pCluster = m_clusters[idx];
- assert(pCluster);
-
- return pCluster;
-}
-
-unsigned long Segment::GetCount() const { return m_clusterCount; }
-
-const Cluster* Segment::GetNext(const Cluster* pCurr) {
- assert(pCurr);
- assert(pCurr != &m_eos);
- assert(m_clusters);
-
- long idx = pCurr->m_index;
-
- if (idx >= 0) {
- assert(m_clusterCount > 0);
- assert(idx < m_clusterCount);
- assert(pCurr == m_clusters[idx]);
-
- ++idx;
-
- if (idx >= m_clusterCount)
- return &m_eos; // caller will LoadCluster as desired
-
- Cluster* const pNext = m_clusters[idx];
- assert(pNext);
- assert(pNext->m_index >= 0);
- assert(pNext->m_index == idx);
-
- return pNext;
- }
-
- assert(m_clusterPreloadCount > 0);
-
- long long pos = pCurr->m_element_start;
-
- assert(m_size >= 0); // TODO
- const long long stop = m_start + m_size; // end of segment
-
- {
- long len;
-
- long long result = GetUIntLength(m_pReader, pos, len);
- assert(result == 0);
- assert((pos + len) <= stop); // TODO
- if (result != 0)
- return NULL;
-
- const long long id = ReadID(m_pReader, pos, len);
- if (id != libwebm::kMkvCluster)
- return NULL;
-
- pos += len; // consume ID
-
- // Read Size
- result = GetUIntLength(m_pReader, pos, len);
- assert(result == 0); // TODO
- assert((pos + len) <= stop); // TODO
-
- const long long size = ReadUInt(m_pReader, pos, len);
- assert(size > 0); // TODO
- // assert((pCurr->m_size <= 0) || (pCurr->m_size == size));
-
- pos += len; // consume length of size of element
- assert((pos + size) <= stop); // TODO
-
- // Pos now points to start of payload
-
- pos += size; // consume payload
- }
-
- long long off_next = 0;
-
- while (pos < stop) {
- long len;
-
- long long result = GetUIntLength(m_pReader, pos, len);
- assert(result == 0);
- assert((pos + len) <= stop); // TODO
- if (result != 0)
- return NULL;
-
- const long long idpos = pos; // pos of next (potential) cluster
-
- const long long id = ReadID(m_pReader, idpos, len);
- if (id < 0)
- return NULL;
-
- pos += len; // consume ID
-
- // Read Size
- result = GetUIntLength(m_pReader, pos, len);
- assert(result == 0); // TODO
- assert((pos + len) <= stop); // TODO
-
- const long long size = ReadUInt(m_pReader, pos, len);
- assert(size >= 0); // TODO
-
- pos += len; // consume length of size of element
- assert((pos + size) <= stop); // TODO
-
- // Pos now points to start of payload
-
- if (size == 0) // weird
- continue;
-
- if (id == libwebm::kMkvCluster) {
- const long long off_next_ = idpos - m_start;
-
- long long pos_;
- long len_;
-
- const long status = Cluster::HasBlockEntries(this, off_next_, pos_, len_);
-
- assert(status >= 0);
-
- if (status > 0) {
- off_next = off_next_;
- break;
- }
- }
-
- pos += size; // consume payload
- }
-
- if (off_next <= 0)
- return 0;
-
- Cluster** const ii = m_clusters + m_clusterCount;
- Cluster** i = ii;
-
- Cluster** const jj = ii + m_clusterPreloadCount;
- Cluster** j = jj;
-
- while (i < j) {
- // INVARIANT:
- //[0, i) < pos_next
- //[i, j) ?
- //[j, jj) > pos_next
-
- Cluster** const k = i + (j - i) / 2;
- assert(k < jj);
-
- Cluster* const pNext = *k;
- assert(pNext);
- assert(pNext->m_index < 0);
-
- // const long long pos_ = pNext->m_pos;
- // assert(pos_);
- // pos = pos_ * ((pos_ < 0) ? -1 : 1);
-
- pos = pNext->GetPosition();
-
- if (pos < off_next)
- i = k + 1;
- else if (pos > off_next)
- j = k;
- else
- return pNext;
- }
-
- assert(i == j);
-
- Cluster* const pNext = Cluster::Create(this, -1, off_next);
- if (pNext == NULL)
- return NULL;
-
- const ptrdiff_t idx_next = i - m_clusters; // insertion position
-
- if (!PreloadCluster(pNext, idx_next)) {
- delete pNext;
- return NULL;
- }
- assert(m_clusters);
- assert(idx_next < m_clusterSize);
- assert(m_clusters[idx_next] == pNext);
-
- return pNext;
-}
-
-long Segment::ParseNext(const Cluster* pCurr, const Cluster*& pResult,
- long long& pos, long& len) {
- assert(pCurr);
- assert(!pCurr->EOS());
- assert(m_clusters);
-
- pResult = 0;
-
- if (pCurr->m_index >= 0) { // loaded (not merely preloaded)
- assert(m_clusters[pCurr->m_index] == pCurr);
-
- const long next_idx = pCurr->m_index + 1;
-
- if (next_idx < m_clusterCount) {
- pResult = m_clusters[next_idx];
- return 0; // success
- }
-
- // curr cluster is last among loaded
-
- const long result = LoadCluster(pos, len);
-
- if (result < 0) // error or underflow
- return result;
-
- if (result > 0) // no more clusters
- {
- // pResult = &m_eos;
- return 1;
- }
-
- pResult = GetLast();
- return 0; // success
- }
-
- assert(m_pos > 0);
-
- long long total, avail;
-
- long status = m_pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- assert((total < 0) || (avail <= total));
-
- const long long segment_stop = (m_size < 0) ? -1 : m_start + m_size;
-
- // interrogate curr cluster
-
- pos = pCurr->m_element_start;
-
- if (pCurr->m_element_size >= 0)
- pos += pCurr->m_element_size;
- else {
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long id = ReadUInt(m_pReader, pos, len);
-
- if (id != libwebm::kMkvCluster)
- return -1;
-
- pos += len; // consume ID
-
- // Read Size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(m_pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- pos += len; // consume size field
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (size == unknown_size) // TODO: should never happen
- return E_FILE_FORMAT_INVALID; // TODO: resolve this
-
- // assert((pCurr->m_size <= 0) || (pCurr->m_size == size));
-
- if ((segment_stop >= 0) && ((pos + size) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- // Pos now points to start of payload
-
- pos += size; // consume payload (that is, the current cluster)
- if (segment_stop >= 0 && pos > segment_stop)
- return E_FILE_FORMAT_INVALID;
-
- // By consuming the payload, we are assuming that the curr
- // cluster isn't interesting. That is, we don't bother checking
- // whether the payload of the curr cluster is less than what
- // happens to be available (obtained via IMkvReader::Length).
- // Presumably the caller has already dispensed with the current
- // cluster, and really does want the next cluster.
- }
-
- // pos now points to just beyond the last fully-loaded cluster
-
- for (;;) {
- const long status = DoParseNext(pResult, pos, len);
-
- if (status <= 1)
- return status;
- }
-}
-
-long Segment::DoParseNext(const Cluster*& pResult, long long& pos, long& len) {
- long long total, avail;
-
- long status = m_pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- assert((total < 0) || (avail <= total));
-
- const long long segment_stop = (m_size < 0) ? -1 : m_start + m_size;
-
- // Parse next cluster. This is strictly a parsing activity.
- // Creation of a new cluster object happens later, after the
- // parsing is done.
-
- long long off_next = 0;
- long long cluster_size = -1;
-
- for (;;) {
- if ((total >= 0) && (pos >= total))
- return 1; // EOF
-
- if ((segment_stop >= 0) && (pos >= segment_stop))
- return 1; // EOF
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long idpos = pos; // absolute
- const long long idoff = pos - m_start; // relative
-
- const long long id = ReadID(m_pReader, idpos, len); // absolute
-
- if (id < 0) // error
- return static_cast<long>(id);
-
- if (id == 0) // weird
- return -1; // generic error
-
- pos += len; // consume ID
-
- // Read Size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(m_pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- pos += len; // consume length of size of element
-
- // Pos now points to start of payload
-
- if (size == 0) // weird
- continue;
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if ((segment_stop >= 0) && (size != unknown_size) &&
- ((pos + size) > segment_stop)) {
- return E_FILE_FORMAT_INVALID;
- }
-
- if (id == libwebm::kMkvCues) {
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID;
-
- const long long element_stop = pos + size;
-
- if ((segment_stop >= 0) && (element_stop > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- const long long element_start = idpos;
- const long long element_size = element_stop - element_start;
-
- if (m_pCues == NULL) {
- m_pCues = new (std::nothrow)
- Cues(this, pos, size, element_start, element_size);
- if (m_pCues == NULL)
- return false;
- }
-
- pos += size; // consume payload
- if (segment_stop >= 0 && pos > segment_stop)
- return E_FILE_FORMAT_INVALID;
-
- continue;
- }
-
- if (id != libwebm::kMkvCluster) { // not a Cluster ID
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID;
-
- pos += size; // consume payload
- if (segment_stop >= 0 && pos > segment_stop)
- return E_FILE_FORMAT_INVALID;
-
- continue;
- }
-
- // We have a cluster.
- off_next = idoff;
-
- if (size != unknown_size)
- cluster_size = size;
-
- break;
- }
-
- assert(off_next > 0); // have cluster
-
- // We have parsed the next cluster.
- // We have not created a cluster object yet. What we need
- // to do now is determine whether it has already be preloaded
- //(in which case, an object for this cluster has already been
- // created), and if not, create a new cluster object.
-
- Cluster** const ii = m_clusters + m_clusterCount;
- Cluster** i = ii;
-
- Cluster** const jj = ii + m_clusterPreloadCount;
- Cluster** j = jj;
-
- while (i < j) {
- // INVARIANT:
- //[0, i) < pos_next
- //[i, j) ?
- //[j, jj) > pos_next
-
- Cluster** const k = i + (j - i) / 2;
- assert(k < jj);
-
- const Cluster* const pNext = *k;
- assert(pNext);
- assert(pNext->m_index < 0);
-
- pos = pNext->GetPosition();
- assert(pos >= 0);
-
- if (pos < off_next)
- i = k + 1;
- else if (pos > off_next)
- j = k;
- else {
- pResult = pNext;
- return 0; // success
- }
- }
-
- assert(i == j);
-
- long long pos_;
- long len_;
-
- status = Cluster::HasBlockEntries(this, off_next, pos_, len_);
-
- if (status < 0) { // error or underflow
- pos = pos_;
- len = len_;
-
- return status;
- }
-
- if (status > 0) { // means "found at least one block entry"
- Cluster* const pNext = Cluster::Create(this,
- -1, // preloaded
- off_next);
- if (pNext == NULL)
- return -1;
-
- const ptrdiff_t idx_next = i - m_clusters; // insertion position
-
- if (!PreloadCluster(pNext, idx_next)) {
- delete pNext;
- return -1;
- }
- assert(m_clusters);
- assert(idx_next < m_clusterSize);
- assert(m_clusters[idx_next] == pNext);
-
- pResult = pNext;
- return 0; // success
- }
-
- // status == 0 means "no block entries found"
-
- if (cluster_size < 0) { // unknown size
- const long long payload_pos = pos; // absolute pos of cluster payload
-
- for (;;) { // determine cluster size
- if ((total >= 0) && (pos >= total))
- break;
-
- if ((segment_stop >= 0) && (pos >= segment_stop))
- break; // no more clusters
-
- // Read ID
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long idpos = pos;
- const long long id = ReadID(m_pReader, idpos, len);
-
- if (id < 0) // error (or underflow)
- return static_cast<long>(id);
-
- // This is the distinguished set of ID's we use to determine
- // that we have exhausted the sub-element's inside the cluster
- // whose ID we parsed earlier.
-
- if (id == libwebm::kMkvCluster || id == libwebm::kMkvCues)
- break;
-
- pos += len; // consume ID (of sub-element)
-
- // Read Size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(m_pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(m_pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- pos += len; // consume size field of element
-
- // pos now points to start of sub-element's payload
-
- if (size == 0) // weird
- continue;
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID; // not allowed for sub-elements
-
- if ((segment_stop >= 0) && ((pos + size) > segment_stop)) // weird
- return E_FILE_FORMAT_INVALID;
-
- pos += size; // consume payload of sub-element
- if (segment_stop >= 0 && pos > segment_stop)
- return E_FILE_FORMAT_INVALID;
- } // determine cluster size
-
- cluster_size = pos - payload_pos;
- assert(cluster_size >= 0); // TODO: handle cluster_size = 0
-
- pos = payload_pos; // reset and re-parse original cluster
- }
-
- pos += cluster_size; // consume payload
- if (segment_stop >= 0 && pos > segment_stop)
- return E_FILE_FORMAT_INVALID;
-
- return 2; // try to find a cluster that follows next
-}
-
-const Cluster* Segment::FindCluster(long long time_ns) const {
- if ((m_clusters == NULL) || (m_clusterCount <= 0))
- return &m_eos;
-
- {
- Cluster* const pCluster = m_clusters[0];
- assert(pCluster);
- assert(pCluster->m_index == 0);
-
- if (time_ns <= pCluster->GetTime())
- return pCluster;
- }
-
- // Binary search of cluster array
-
- long i = 0;
- long j = m_clusterCount;
-
- while (i < j) {
- // INVARIANT:
- //[0, i) <= time_ns
- //[i, j) ?
- //[j, m_clusterCount) > time_ns
-
- const long k = i + (j - i) / 2;
- assert(k < m_clusterCount);
-
- Cluster* const pCluster = m_clusters[k];
- assert(pCluster);
- assert(pCluster->m_index == k);
-
- const long long t = pCluster->GetTime();
-
- if (t <= time_ns)
- i = k + 1;
- else
- j = k;
-
- assert(i <= j);
- }
-
- assert(i == j);
- assert(i > 0);
- assert(i <= m_clusterCount);
-
- const long k = i - 1;
-
- Cluster* const pCluster = m_clusters[k];
- assert(pCluster);
- assert(pCluster->m_index == k);
- assert(pCluster->GetTime() <= time_ns);
-
- return pCluster;
-}
-
-const Tracks* Segment::GetTracks() const { return m_pTracks; }
-const SegmentInfo* Segment::GetInfo() const { return m_pInfo; }
-const Cues* Segment::GetCues() const { return m_pCues; }
-const Chapters* Segment::GetChapters() const { return m_pChapters; }
-const Tags* Segment::GetTags() const { return m_pTags; }
-const SeekHead* Segment::GetSeekHead() const { return m_pSeekHead; }
-
-long long Segment::GetDuration() const {
- assert(m_pInfo);
- return m_pInfo->GetDuration();
-}
-
-Chapters::Chapters(Segment* pSegment, long long payload_start,
- long long payload_size, long long element_start,
- long long element_size)
- : m_pSegment(pSegment),
- m_start(payload_start),
- m_size(payload_size),
- m_element_start(element_start),
- m_element_size(element_size),
- m_editions(NULL),
- m_editions_size(0),
- m_editions_count(0) {}
-
-Chapters::~Chapters() {
- while (m_editions_count > 0) {
- Edition& e = m_editions[--m_editions_count];
- e.Clear();
- }
- delete[] m_editions;
-}
-
-long Chapters::Parse() {
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long pos = m_start; // payload start
- const long long stop = pos + m_size; // payload stop
-
- while (pos < stop) {
- long long id, size;
-
- long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (size == 0) // weird
- continue;
-
- if (id == libwebm::kMkvEditionEntry) {
- status = ParseEdition(pos, size);
-
- if (status < 0) // error
- return status;
- }
-
- pos += size;
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- return 0;
-}
-
-int Chapters::GetEditionCount() const { return m_editions_count; }
-
-const Chapters::Edition* Chapters::GetEdition(int idx) const {
- if (idx < 0)
- return NULL;
-
- if (idx >= m_editions_count)
- return NULL;
-
- return m_editions + idx;
-}
-
-bool Chapters::ExpandEditionsArray() {
- if (m_editions_size > m_editions_count)
- return true; // nothing else to do
-
- const int size = (m_editions_size == 0) ? 1 : 2 * m_editions_size;
-
- Edition* const editions = new (std::nothrow) Edition[size];
-
- if (editions == NULL)
- return false;
-
- for (int idx = 0; idx < m_editions_count; ++idx) {
- m_editions[idx].ShallowCopy(editions[idx]);
- }
-
- delete[] m_editions;
- m_editions = editions;
-
- m_editions_size = size;
- return true;
-}
-
-long Chapters::ParseEdition(long long pos, long long size) {
- if (!ExpandEditionsArray())
- return -1;
-
- Edition& e = m_editions[m_editions_count++];
- e.Init();
-
- return e.Parse(m_pSegment->m_pReader, pos, size);
-}
-
-Chapters::Edition::Edition() {}
-
-Chapters::Edition::~Edition() {}
-
-int Chapters::Edition::GetAtomCount() const { return m_atoms_count; }
-
-const Chapters::Atom* Chapters::Edition::GetAtom(int index) const {
- if (index < 0)
- return NULL;
-
- if (index >= m_atoms_count)
- return NULL;
-
- return m_atoms + index;
-}
-
-void Chapters::Edition::Init() {
- m_atoms = NULL;
- m_atoms_size = 0;
- m_atoms_count = 0;
-}
-
-void Chapters::Edition::ShallowCopy(Edition& rhs) const {
- rhs.m_atoms = m_atoms;
- rhs.m_atoms_size = m_atoms_size;
- rhs.m_atoms_count = m_atoms_count;
-}
-
-void Chapters::Edition::Clear() {
- while (m_atoms_count > 0) {
- Atom& a = m_atoms[--m_atoms_count];
- a.Clear();
- }
-
- delete[] m_atoms;
- m_atoms = NULL;
-
- m_atoms_size = 0;
-}
-
-long Chapters::Edition::Parse(IMkvReader* pReader, long long pos,
- long long size) {
- const long long stop = pos + size;
-
- while (pos < stop) {
- long long id, size;
-
- long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (size == 0)
- continue;
-
- if (id == libwebm::kMkvChapterAtom) {
- status = ParseAtom(pReader, pos, size);
-
- if (status < 0) // error
- return status;
- }
-
- pos += size;
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- return 0;
-}
-
-long Chapters::Edition::ParseAtom(IMkvReader* pReader, long long pos,
- long long size) {
- if (!ExpandAtomsArray())
- return -1;
-
- Atom& a = m_atoms[m_atoms_count++];
- a.Init();
-
- return a.Parse(pReader, pos, size);
-}
-
-bool Chapters::Edition::ExpandAtomsArray() {
- if (m_atoms_size > m_atoms_count)
- return true; // nothing else to do
-
- const int size = (m_atoms_size == 0) ? 1 : 2 * m_atoms_size;
-
- Atom* const atoms = new (std::nothrow) Atom[size];
-
- if (atoms == NULL)
- return false;
-
- for (int idx = 0; idx < m_atoms_count; ++idx) {
- m_atoms[idx].ShallowCopy(atoms[idx]);
- }
-
- delete[] m_atoms;
- m_atoms = atoms;
-
- m_atoms_size = size;
- return true;
-}
-
-Chapters::Atom::Atom() {}
-
-Chapters::Atom::~Atom() {}
-
-unsigned long long Chapters::Atom::GetUID() const { return m_uid; }
-
-const char* Chapters::Atom::GetStringUID() const { return m_string_uid; }
-
-long long Chapters::Atom::GetStartTimecode() const { return m_start_timecode; }
-
-long long Chapters::Atom::GetStopTimecode() const { return m_stop_timecode; }
-
-long long Chapters::Atom::GetStartTime(const Chapters* pChapters) const {
- return GetTime(pChapters, m_start_timecode);
-}
-
-long long Chapters::Atom::GetStopTime(const Chapters* pChapters) const {
- return GetTime(pChapters, m_stop_timecode);
-}
-
-int Chapters::Atom::GetDisplayCount() const { return m_displays_count; }
-
-const Chapters::Display* Chapters::Atom::GetDisplay(int index) const {
- if (index < 0)
- return NULL;
-
- if (index >= m_displays_count)
- return NULL;
-
- return m_displays + index;
-}
-
-void Chapters::Atom::Init() {
- m_string_uid = NULL;
- m_uid = 0;
- m_start_timecode = -1;
- m_stop_timecode = -1;
-
- m_displays = NULL;
- m_displays_size = 0;
- m_displays_count = 0;
-}
-
-void Chapters::Atom::ShallowCopy(Atom& rhs) const {
- rhs.m_string_uid = m_string_uid;
- rhs.m_uid = m_uid;
- rhs.m_start_timecode = m_start_timecode;
- rhs.m_stop_timecode = m_stop_timecode;
-
- rhs.m_displays = m_displays;
- rhs.m_displays_size = m_displays_size;
- rhs.m_displays_count = m_displays_count;
-}
-
-void Chapters::Atom::Clear() {
- delete[] m_string_uid;
- m_string_uid = NULL;
-
- while (m_displays_count > 0) {
- Display& d = m_displays[--m_displays_count];
- d.Clear();
- }
-
- delete[] m_displays;
- m_displays = NULL;
-
- m_displays_size = 0;
-}
-
-long Chapters::Atom::Parse(IMkvReader* pReader, long long pos, long long size) {
- const long long stop = pos + size;
-
- while (pos < stop) {
- long long id, size;
-
- long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (size == 0) // 0 length payload, skip.
- continue;
-
- if (id == libwebm::kMkvChapterDisplay) {
- status = ParseDisplay(pReader, pos, size);
-
- if (status < 0) // error
- return status;
- } else if (id == libwebm::kMkvChapterStringUID) {
- status = UnserializeString(pReader, pos, size, m_string_uid);
-
- if (status < 0) // error
- return status;
- } else if (id == libwebm::kMkvChapterUID) {
- long long val;
- status = UnserializeInt(pReader, pos, size, val);
-
- if (status < 0) // error
- return status;
-
- m_uid = static_cast<unsigned long long>(val);
- } else if (id == libwebm::kMkvChapterTimeStart) {
- const long long val = UnserializeUInt(pReader, pos, size);
-
- if (val < 0) // error
- return static_cast<long>(val);
-
- m_start_timecode = val;
- } else if (id == libwebm::kMkvChapterTimeEnd) {
- const long long val = UnserializeUInt(pReader, pos, size);
-
- if (val < 0) // error
- return static_cast<long>(val);
-
- m_stop_timecode = val;
- }
-
- pos += size;
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- return 0;
-}
-
-long long Chapters::Atom::GetTime(const Chapters* pChapters,
- long long timecode) {
- if (pChapters == NULL)
- return -1;
-
- Segment* const pSegment = pChapters->m_pSegment;
-
- if (pSegment == NULL) // weird
- return -1;
-
- const SegmentInfo* const pInfo = pSegment->GetInfo();
-
- if (pInfo == NULL)
- return -1;
-
- const long long timecode_scale = pInfo->GetTimeCodeScale();
-
- if (timecode_scale < 1) // weird
- return -1;
-
- if (timecode < 0)
- return -1;
-
- const long long result = timecode_scale * timecode;
-
- return result;
-}
-
-long Chapters::Atom::ParseDisplay(IMkvReader* pReader, long long pos,
- long long size) {
- if (!ExpandDisplaysArray())
- return -1;
-
- Display& d = m_displays[m_displays_count++];
- d.Init();
-
- return d.Parse(pReader, pos, size);
-}
-
-bool Chapters::Atom::ExpandDisplaysArray() {
- if (m_displays_size > m_displays_count)
- return true; // nothing else to do
-
- const int size = (m_displays_size == 0) ? 1 : 2 * m_displays_size;
-
- Display* const displays = new (std::nothrow) Display[size];
-
- if (displays == NULL)
- return false;
-
- for (int idx = 0; idx < m_displays_count; ++idx) {
- m_displays[idx].ShallowCopy(displays[idx]);
- }
-
- delete[] m_displays;
- m_displays = displays;
-
- m_displays_size = size;
- return true;
-}
-
-Chapters::Display::Display() {}
-
-Chapters::Display::~Display() {}
-
-const char* Chapters::Display::GetString() const { return m_string; }
-
-const char* Chapters::Display::GetLanguage() const { return m_language; }
-
-const char* Chapters::Display::GetCountry() const { return m_country; }
-
-void Chapters::Display::Init() {
- m_string = NULL;
- m_language = NULL;
- m_country = NULL;
-}
-
-void Chapters::Display::ShallowCopy(Display& rhs) const {
- rhs.m_string = m_string;
- rhs.m_language = m_language;
- rhs.m_country = m_country;
-}
-
-void Chapters::Display::Clear() {
- delete[] m_string;
- m_string = NULL;
-
- delete[] m_language;
- m_language = NULL;
-
- delete[] m_country;
- m_country = NULL;
-}
-
-long Chapters::Display::Parse(IMkvReader* pReader, long long pos,
- long long size) {
- const long long stop = pos + size;
-
- while (pos < stop) {
- long long id, size;
-
- long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (size == 0) // No payload.
- continue;
-
- if (id == libwebm::kMkvChapString) {
- status = UnserializeString(pReader, pos, size, m_string);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvChapLanguage) {
- status = UnserializeString(pReader, pos, size, m_language);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvChapCountry) {
- status = UnserializeString(pReader, pos, size, m_country);
-
- if (status)
- return status;
- }
-
- pos += size;
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- return 0;
-}
-
-Tags::Tags(Segment* pSegment, long long payload_start, long long payload_size,
- long long element_start, long long element_size)
- : m_pSegment(pSegment),
- m_start(payload_start),
- m_size(payload_size),
- m_element_start(element_start),
- m_element_size(element_size),
- m_tags(NULL),
- m_tags_size(0),
- m_tags_count(0) {}
-
-Tags::~Tags() {
- while (m_tags_count > 0) {
- Tag& t = m_tags[--m_tags_count];
- t.Clear();
- }
- delete[] m_tags;
-}
-
-long Tags::Parse() {
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long pos = m_start; // payload start
- const long long stop = pos + m_size; // payload stop
-
- while (pos < stop) {
- long long id, size;
-
- long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0)
- return status;
-
- if (size == 0) // 0 length tag, read another
- continue;
-
- if (id == libwebm::kMkvTag) {
- status = ParseTag(pos, size);
-
- if (status < 0)
- return status;
- }
-
- pos += size;
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- return 0;
-}
-
-int Tags::GetTagCount() const { return m_tags_count; }
-
-const Tags::Tag* Tags::GetTag(int idx) const {
- if (idx < 0)
- return NULL;
-
- if (idx >= m_tags_count)
- return NULL;
-
- return m_tags + idx;
-}
-
-bool Tags::ExpandTagsArray() {
- if (m_tags_size > m_tags_count)
- return true; // nothing else to do
-
- const int size = (m_tags_size == 0) ? 1 : 2 * m_tags_size;
-
- Tag* const tags = new (std::nothrow) Tag[size];
-
- if (tags == NULL)
- return false;
-
- for (int idx = 0; idx < m_tags_count; ++idx) {
- m_tags[idx].ShallowCopy(tags[idx]);
- }
-
- delete[] m_tags;
- m_tags = tags;
-
- m_tags_size = size;
- return true;
-}
-
-long Tags::ParseTag(long long pos, long long size) {
- if (!ExpandTagsArray())
- return -1;
-
- Tag& t = m_tags[m_tags_count++];
- t.Init();
-
- return t.Parse(m_pSegment->m_pReader, pos, size);
-}
-
-Tags::Tag::Tag() {}
-
-Tags::Tag::~Tag() {}
-
-int Tags::Tag::GetSimpleTagCount() const { return m_simple_tags_count; }
-
-const Tags::SimpleTag* Tags::Tag::GetSimpleTag(int index) const {
- if (index < 0)
- return NULL;
-
- if (index >= m_simple_tags_count)
- return NULL;
-
- return m_simple_tags + index;
-}
-
-void Tags::Tag::Init() {
- m_simple_tags = NULL;
- m_simple_tags_size = 0;
- m_simple_tags_count = 0;
-}
-
-void Tags::Tag::ShallowCopy(Tag& rhs) const {
- rhs.m_simple_tags = m_simple_tags;
- rhs.m_simple_tags_size = m_simple_tags_size;
- rhs.m_simple_tags_count = m_simple_tags_count;
-}
-
-void Tags::Tag::Clear() {
- while (m_simple_tags_count > 0) {
- SimpleTag& d = m_simple_tags[--m_simple_tags_count];
- d.Clear();
- }
-
- delete[] m_simple_tags;
- m_simple_tags = NULL;
-
- m_simple_tags_size = 0;
-}
-
-long Tags::Tag::Parse(IMkvReader* pReader, long long pos, long long size) {
- const long long stop = pos + size;
-
- while (pos < stop) {
- long long id, size;
-
- long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0)
- return status;
-
- if (size == 0) // 0 length tag, read another
- continue;
-
- if (id == libwebm::kMkvSimpleTag) {
- status = ParseSimpleTag(pReader, pos, size);
-
- if (status < 0)
- return status;
- }
-
- pos += size;
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- return 0;
-}
-
-long Tags::Tag::ParseSimpleTag(IMkvReader* pReader, long long pos,
- long long size) {
- if (!ExpandSimpleTagsArray())
- return -1;
-
- SimpleTag& st = m_simple_tags[m_simple_tags_count++];
- st.Init();
-
- return st.Parse(pReader, pos, size);
-}
-
-bool Tags::Tag::ExpandSimpleTagsArray() {
- if (m_simple_tags_size > m_simple_tags_count)
- return true; // nothing else to do
-
- const int size = (m_simple_tags_size == 0) ? 1 : 2 * m_simple_tags_size;
-
- SimpleTag* const displays = new (std::nothrow) SimpleTag[size];
-
- if (displays == NULL)
- return false;
-
- for (int idx = 0; idx < m_simple_tags_count; ++idx) {
- m_simple_tags[idx].ShallowCopy(displays[idx]);
- }
-
- delete[] m_simple_tags;
- m_simple_tags = displays;
-
- m_simple_tags_size = size;
- return true;
-}
-
-Tags::SimpleTag::SimpleTag() {}
-
-Tags::SimpleTag::~SimpleTag() {}
-
-const char* Tags::SimpleTag::GetTagName() const { return m_tag_name; }
-
-const char* Tags::SimpleTag::GetTagString() const { return m_tag_string; }
-
-void Tags::SimpleTag::Init() {
- m_tag_name = NULL;
- m_tag_string = NULL;
-}
-
-void Tags::SimpleTag::ShallowCopy(SimpleTag& rhs) const {
- rhs.m_tag_name = m_tag_name;
- rhs.m_tag_string = m_tag_string;
-}
-
-void Tags::SimpleTag::Clear() {
- delete[] m_tag_name;
- m_tag_name = NULL;
-
- delete[] m_tag_string;
- m_tag_string = NULL;
-}
-
-long Tags::SimpleTag::Parse(IMkvReader* pReader, long long pos,
- long long size) {
- const long long stop = pos + size;
-
- while (pos < stop) {
- long long id, size;
-
- long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (size == 0) // weird
- continue;
-
- if (id == libwebm::kMkvTagName) {
- status = UnserializeString(pReader, pos, size, m_tag_name);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvTagString) {
- status = UnserializeString(pReader, pos, size, m_tag_string);
-
- if (status)
- return status;
- }
-
- pos += size;
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- return 0;
-}
-
-SegmentInfo::SegmentInfo(Segment* pSegment, long long start, long long size_,
- long long element_start, long long element_size)
- : m_pSegment(pSegment),
- m_start(start),
- m_size(size_),
- m_element_start(element_start),
- m_element_size(element_size),
- m_pMuxingAppAsUTF8(NULL),
- m_pWritingAppAsUTF8(NULL),
- m_pTitleAsUTF8(NULL) {}
-
-SegmentInfo::~SegmentInfo() {
- delete[] m_pMuxingAppAsUTF8;
- m_pMuxingAppAsUTF8 = NULL;
-
- delete[] m_pWritingAppAsUTF8;
- m_pWritingAppAsUTF8 = NULL;
-
- delete[] m_pTitleAsUTF8;
- m_pTitleAsUTF8 = NULL;
-}
-
-long SegmentInfo::Parse() {
- assert(m_pMuxingAppAsUTF8 == NULL);
- assert(m_pWritingAppAsUTF8 == NULL);
- assert(m_pTitleAsUTF8 == NULL);
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long pos = m_start;
- const long long stop = m_start + m_size;
-
- m_timecodeScale = 1000000;
- m_duration = -1;
-
- while (pos < stop) {
- long long id, size;
-
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvTimecodeScale) {
- m_timecodeScale = UnserializeUInt(pReader, pos, size);
-
- if (m_timecodeScale <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvDuration) {
- const long status = UnserializeFloat(pReader, pos, size, m_duration);
-
- if (status < 0)
- return status;
-
- if (m_duration < 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvMuxingApp) {
- const long status =
- UnserializeString(pReader, pos, size, m_pMuxingAppAsUTF8);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvWritingApp) {
- const long status =
- UnserializeString(pReader, pos, size, m_pWritingAppAsUTF8);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvTitle) {
- const long status = UnserializeString(pReader, pos, size, m_pTitleAsUTF8);
-
- if (status)
- return status;
- }
-
- pos += size;
-
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- const double rollover_check = m_duration * m_timecodeScale;
- if (rollover_check > static_cast<double>(LLONG_MAX))
- return E_FILE_FORMAT_INVALID;
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- return 0;
-}
-
-long long SegmentInfo::GetTimeCodeScale() const { return m_timecodeScale; }
-
-long long SegmentInfo::GetDuration() const {
- if (m_duration < 0)
- return -1;
-
- assert(m_timecodeScale >= 1);
-
- const double dd = double(m_duration) * double(m_timecodeScale);
- const long long d = static_cast<long long>(dd);
-
- return d;
-}
-
-const char* SegmentInfo::GetMuxingAppAsUTF8() const {
- return m_pMuxingAppAsUTF8;
-}
-
-const char* SegmentInfo::GetWritingAppAsUTF8() const {
- return m_pWritingAppAsUTF8;
-}
-
-const char* SegmentInfo::GetTitleAsUTF8() const { return m_pTitleAsUTF8; }
-
-///////////////////////////////////////////////////////////////
-// ContentEncoding element
-ContentEncoding::ContentCompression::ContentCompression()
- : algo(0), settings(NULL), settings_len(0) {}
-
-ContentEncoding::ContentCompression::~ContentCompression() {
- delete[] settings;
-}
-
-ContentEncoding::ContentEncryption::ContentEncryption()
- : algo(0),
- key_id(NULL),
- key_id_len(0),
- signature(NULL),
- signature_len(0),
- sig_key_id(NULL),
- sig_key_id_len(0),
- sig_algo(0),
- sig_hash_algo(0) {}
-
-ContentEncoding::ContentEncryption::~ContentEncryption() {
- delete[] key_id;
- delete[] signature;
- delete[] sig_key_id;
-}
-
-ContentEncoding::ContentEncoding()
- : compression_entries_(NULL),
- compression_entries_end_(NULL),
- encryption_entries_(NULL),
- encryption_entries_end_(NULL),
- encoding_order_(0),
- encoding_scope_(1),
- encoding_type_(0) {}
-
-ContentEncoding::~ContentEncoding() {
- ContentCompression** comp_i = compression_entries_;
- ContentCompression** const comp_j = compression_entries_end_;
-
- while (comp_i != comp_j) {
- ContentCompression* const comp = *comp_i++;
- delete comp;
- }
-
- delete[] compression_entries_;
-
- ContentEncryption** enc_i = encryption_entries_;
- ContentEncryption** const enc_j = encryption_entries_end_;
-
- while (enc_i != enc_j) {
- ContentEncryption* const enc = *enc_i++;
- delete enc;
- }
-
- delete[] encryption_entries_;
-}
-
-const ContentEncoding::ContentCompression*
-ContentEncoding::GetCompressionByIndex(unsigned long idx) const {
- const ptrdiff_t count = compression_entries_end_ - compression_entries_;
- assert(count >= 0);
-
- if (idx >= static_cast<unsigned long>(count))
- return NULL;
-
- return compression_entries_[idx];
-}
-
-unsigned long ContentEncoding::GetCompressionCount() const {
- const ptrdiff_t count = compression_entries_end_ - compression_entries_;
- assert(count >= 0);
-
- return static_cast<unsigned long>(count);
-}
-
-const ContentEncoding::ContentEncryption* ContentEncoding::GetEncryptionByIndex(
- unsigned long idx) const {
- const ptrdiff_t count = encryption_entries_end_ - encryption_entries_;
- assert(count >= 0);
-
- if (idx >= static_cast<unsigned long>(count))
- return NULL;
-
- return encryption_entries_[idx];
-}
-
-unsigned long ContentEncoding::GetEncryptionCount() const {
- const ptrdiff_t count = encryption_entries_end_ - encryption_entries_;
- assert(count >= 0);
-
- return static_cast<unsigned long>(count);
-}
-
-long ContentEncoding::ParseContentEncAESSettingsEntry(
- long long start, long long size, IMkvReader* pReader,
- ContentEncAESSettings* aes) {
- assert(pReader);
- assert(aes);
-
- long long pos = start;
- const long long stop = start + size;
-
- while (pos < stop) {
- long long id, size;
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvAESSettingsCipherMode) {
- aes->cipher_mode = UnserializeUInt(pReader, pos, size);
- if (aes->cipher_mode != 1)
- return E_FILE_FORMAT_INVALID;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- return 0;
-}
-
-long ContentEncoding::ParseContentEncodingEntry(long long start, long long size,
- IMkvReader* pReader) {
- assert(pReader);
-
- long long pos = start;
- const long long stop = start + size;
-
- // Count ContentCompression and ContentEncryption elements.
- int compression_count = 0;
- int encryption_count = 0;
-
- while (pos < stop) {
- long long id, size;
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvContentCompression)
- ++compression_count;
-
- if (id == libwebm::kMkvContentEncryption)
- ++encryption_count;
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (compression_count <= 0 && encryption_count <= 0)
- return -1;
-
- if (compression_count > 0) {
- compression_entries_ =
- new (std::nothrow) ContentCompression*[compression_count];
- if (!compression_entries_)
- return -1;
- compression_entries_end_ = compression_entries_;
- }
-
- if (encryption_count > 0) {
- encryption_entries_ =
- new (std::nothrow) ContentEncryption*[encryption_count];
- if (!encryption_entries_) {
- delete[] compression_entries_;
- return -1;
- }
- encryption_entries_end_ = encryption_entries_;
- }
-
- pos = start;
- while (pos < stop) {
- long long id, size;
- long status = ParseElementHeader(pReader, pos, stop, id, size);
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvContentEncodingOrder) {
- encoding_order_ = UnserializeUInt(pReader, pos, size);
- } else if (id == libwebm::kMkvContentEncodingScope) {
- encoding_scope_ = UnserializeUInt(pReader, pos, size);
- if (encoding_scope_ < 1)
- return -1;
- } else if (id == libwebm::kMkvContentEncodingType) {
- encoding_type_ = UnserializeUInt(pReader, pos, size);
- } else if (id == libwebm::kMkvContentCompression) {
- ContentCompression* const compression =
- new (std::nothrow) ContentCompression();
- if (!compression)
- return -1;
-
- status = ParseCompressionEntry(pos, size, pReader, compression);
- if (status) {
- delete compression;
- return status;
- }
- *compression_entries_end_++ = compression;
- } else if (id == libwebm::kMkvContentEncryption) {
- ContentEncryption* const encryption =
- new (std::nothrow) ContentEncryption();
- if (!encryption)
- return -1;
-
- status = ParseEncryptionEntry(pos, size, pReader, encryption);
- if (status) {
- delete encryption;
- return status;
- }
- *encryption_entries_end_++ = encryption;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- return 0;
-}
-
-long ContentEncoding::ParseCompressionEntry(long long start, long long size,
- IMkvReader* pReader,
- ContentCompression* compression) {
- assert(pReader);
- assert(compression);
-
- long long pos = start;
- const long long stop = start + size;
-
- bool valid = false;
-
- while (pos < stop) {
- long long id, size;
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvContentCompAlgo) {
- long long algo = UnserializeUInt(pReader, pos, size);
- if (algo < 0)
- return E_FILE_FORMAT_INVALID;
- compression->algo = algo;
- valid = true;
- } else if (id == libwebm::kMkvContentCompSettings) {
- if (size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- const size_t buflen = static_cast<size_t>(size);
- unsigned char* buf = SafeArrayAlloc<unsigned char>(1, buflen);
- if (buf == NULL)
- return -1;
-
- const int read_status =
- pReader->Read(pos, static_cast<long>(buflen), buf);
- if (read_status) {
- delete[] buf;
- return status;
- }
-
- compression->settings = buf;
- compression->settings_len = buflen;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- // ContentCompAlgo is mandatory
- if (!valid)
- return E_FILE_FORMAT_INVALID;
-
- return 0;
-}
-
-long ContentEncoding::ParseEncryptionEntry(long long start, long long size,
- IMkvReader* pReader,
- ContentEncryption* encryption) {
- assert(pReader);
- assert(encryption);
-
- long long pos = start;
- const long long stop = start + size;
-
- while (pos < stop) {
- long long id, size;
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvContentEncAlgo) {
- encryption->algo = UnserializeUInt(pReader, pos, size);
- if (encryption->algo != 5)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvContentEncKeyID) {
- delete[] encryption->key_id;
- encryption->key_id = NULL;
- encryption->key_id_len = 0;
-
- if (size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- const size_t buflen = static_cast<size_t>(size);
- unsigned char* buf = SafeArrayAlloc<unsigned char>(1, buflen);
- if (buf == NULL)
- return -1;
-
- const int read_status =
- pReader->Read(pos, static_cast<long>(buflen), buf);
- if (read_status) {
- delete[] buf;
- return status;
- }
-
- encryption->key_id = buf;
- encryption->key_id_len = buflen;
- } else if (id == libwebm::kMkvContentSignature) {
- delete[] encryption->signature;
- encryption->signature = NULL;
- encryption->signature_len = 0;
-
- if (size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- const size_t buflen = static_cast<size_t>(size);
- unsigned char* buf = SafeArrayAlloc<unsigned char>(1, buflen);
- if (buf == NULL)
- return -1;
-
- const int read_status =
- pReader->Read(pos, static_cast<long>(buflen), buf);
- if (read_status) {
- delete[] buf;
- return status;
- }
-
- encryption->signature = buf;
- encryption->signature_len = buflen;
- } else if (id == libwebm::kMkvContentSigKeyID) {
- delete[] encryption->sig_key_id;
- encryption->sig_key_id = NULL;
- encryption->sig_key_id_len = 0;
-
- if (size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- const size_t buflen = static_cast<size_t>(size);
- unsigned char* buf = SafeArrayAlloc<unsigned char>(1, buflen);
- if (buf == NULL)
- return -1;
-
- const int read_status =
- pReader->Read(pos, static_cast<long>(buflen), buf);
- if (read_status) {
- delete[] buf;
- return status;
- }
-
- encryption->sig_key_id = buf;
- encryption->sig_key_id_len = buflen;
- } else if (id == libwebm::kMkvContentSigAlgo) {
- encryption->sig_algo = UnserializeUInt(pReader, pos, size);
- } else if (id == libwebm::kMkvContentSigHashAlgo) {
- encryption->sig_hash_algo = UnserializeUInt(pReader, pos, size);
- } else if (id == libwebm::kMkvContentEncAESSettings) {
- const long status = ParseContentEncAESSettingsEntry(
- pos, size, pReader, &encryption->aes_settings);
- if (status)
- return status;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- return 0;
-}
-
-Track::Track(Segment* pSegment, long long element_start, long long element_size)
- : m_pSegment(pSegment),
- m_element_start(element_start),
- m_element_size(element_size),
- content_encoding_entries_(NULL),
- content_encoding_entries_end_(NULL) {}
-
-Track::~Track() {
- Info& info = const_cast<Info&>(m_info);
- info.Clear();
-
- ContentEncoding** i = content_encoding_entries_;
- ContentEncoding** const j = content_encoding_entries_end_;
-
- while (i != j) {
- ContentEncoding* const encoding = *i++;
- delete encoding;
- }
-
- delete[] content_encoding_entries_;
-}
-
-long Track::Create(Segment* pSegment, const Info& info, long long element_start,
- long long element_size, Track*& pResult) {
- if (pResult)
- return -1;
-
- Track* const pTrack =
- new (std::nothrow) Track(pSegment, element_start, element_size);
-
- if (pTrack == NULL)
- return -1; // generic error
-
- const int status = info.Copy(pTrack->m_info);
-
- if (status) { // error
- delete pTrack;
- return status;
- }
-
- pResult = pTrack;
- return 0; // success
-}
-
-Track::Info::Info()
- : uid(0),
- defaultDuration(0),
- codecDelay(0),
- seekPreRoll(0),
- nameAsUTF8(NULL),
- language(NULL),
- codecId(NULL),
- codecNameAsUTF8(NULL),
- codecPrivate(NULL),
- codecPrivateSize(0),
- lacing(false) {}
-
-Track::Info::~Info() { Clear(); }
-
-void Track::Info::Clear() {
- delete[] nameAsUTF8;
- nameAsUTF8 = NULL;
-
- delete[] language;
- language = NULL;
-
- delete[] codecId;
- codecId = NULL;
-
- delete[] codecPrivate;
- codecPrivate = NULL;
- codecPrivateSize = 0;
-
- delete[] codecNameAsUTF8;
- codecNameAsUTF8 = NULL;
-}
-
-int Track::Info::CopyStr(char* Info::*str, Info& dst_) const {
- if (str == static_cast<char * Info::*>(NULL))
- return -1;
-
- char*& dst = dst_.*str;
-
- if (dst) // should be NULL already
- return -1;
-
- const char* const src = this->*str;
-
- if (src == NULL)
- return 0;
-
- const size_t len = strlen(src);
-
- dst = SafeArrayAlloc<char>(1, len + 1);
-
- if (dst == NULL)
- return -1;
-
- strcpy(dst, src);
-
- return 0;
-}
-
-int Track::Info::Copy(Info& dst) const {
- if (&dst == this)
- return 0;
-
- dst.type = type;
- dst.number = number;
- dst.defaultDuration = defaultDuration;
- dst.codecDelay = codecDelay;
- dst.seekPreRoll = seekPreRoll;
- dst.uid = uid;
- dst.lacing = lacing;
- dst.settings = settings;
-
- // We now copy the string member variables from src to dst.
- // This involves memory allocation so in principle the operation
- // can fail (indeed, that's why we have Info::Copy), so we must
- // report this to the caller. An error return from this function
- // therefore implies that the copy was only partially successful.
-
- if (int status = CopyStr(&Info::nameAsUTF8, dst))
- return status;
-
- if (int status = CopyStr(&Info::language, dst))
- return status;
-
- if (int status = CopyStr(&Info::codecId, dst))
- return status;
-
- if (int status = CopyStr(&Info::codecNameAsUTF8, dst))
- return status;
-
- if (codecPrivateSize > 0) {
- if (codecPrivate == NULL)
- return -1;
-
- if (dst.codecPrivate)
- return -1;
-
- if (dst.codecPrivateSize != 0)
- return -1;
-
- dst.codecPrivate = SafeArrayAlloc<unsigned char>(1, codecPrivateSize);
-
- if (dst.codecPrivate == NULL)
- return -1;
-
- memcpy(dst.codecPrivate, codecPrivate, codecPrivateSize);
- dst.codecPrivateSize = codecPrivateSize;
- }
-
- return 0;
-}
-
-const BlockEntry* Track::GetEOS() const { return &m_eos; }
-
-long Track::GetType() const { return m_info.type; }
-
-long Track::GetNumber() const { return m_info.number; }
-
-unsigned long long Track::GetUid() const { return m_info.uid; }
-
-const char* Track::GetNameAsUTF8() const { return m_info.nameAsUTF8; }
-
-const char* Track::GetLanguage() const { return m_info.language; }
-
-const char* Track::GetCodecNameAsUTF8() const { return m_info.codecNameAsUTF8; }
-
-const char* Track::GetCodecId() const { return m_info.codecId; }
-
-const unsigned char* Track::GetCodecPrivate(size_t& size) const {
- size = m_info.codecPrivateSize;
- return m_info.codecPrivate;
-}
-
-bool Track::GetLacing() const { return m_info.lacing; }
-
-unsigned long long Track::GetDefaultDuration() const {
- return m_info.defaultDuration;
-}
-
-unsigned long long Track::GetCodecDelay() const { return m_info.codecDelay; }
-
-unsigned long long Track::GetSeekPreRoll() const { return m_info.seekPreRoll; }
-
-long Track::GetFirst(const BlockEntry*& pBlockEntry) const {
- const Cluster* pCluster = m_pSegment->GetFirst();
-
- for (int i = 0;;) {
- if (pCluster == NULL) {
- pBlockEntry = GetEOS();
- return 1;
- }
-
- if (pCluster->EOS()) {
- if (m_pSegment->DoneParsing()) {
- pBlockEntry = GetEOS();
- return 1;
- }
-
- pBlockEntry = 0;
- return E_BUFFER_NOT_FULL;
- }
-
- long status = pCluster->GetFirst(pBlockEntry);
-
- if (status < 0) // error
- return status;
-
- if (pBlockEntry == 0) { // empty cluster
- pCluster = m_pSegment->GetNext(pCluster);
- continue;
- }
-
- for (;;) {
- const Block* const pBlock = pBlockEntry->GetBlock();
- assert(pBlock);
-
- const long long tn = pBlock->GetTrackNumber();
-
- if ((tn == m_info.number) && VetEntry(pBlockEntry))
- return 0;
-
- const BlockEntry* pNextEntry;
-
- status = pCluster->GetNext(pBlockEntry, pNextEntry);
-
- if (status < 0) // error
- return status;
-
- if (pNextEntry == 0)
- break;
-
- pBlockEntry = pNextEntry;
- }
-
- ++i;
-
- if (i >= 100)
- break;
-
- pCluster = m_pSegment->GetNext(pCluster);
- }
-
- // NOTE: if we get here, it means that we didn't find a block with
- // a matching track number. We interpret that as an error (which
- // might be too conservative).
-
- pBlockEntry = GetEOS(); // so we can return a non-NULL value
- return 1;
-}
-
-long Track::GetNext(const BlockEntry* pCurrEntry,
- const BlockEntry*& pNextEntry) const {
- assert(pCurrEntry);
- assert(!pCurrEntry->EOS()); //?
-
- const Block* const pCurrBlock = pCurrEntry->GetBlock();
- assert(pCurrBlock && pCurrBlock->GetTrackNumber() == m_info.number);
- if (!pCurrBlock || pCurrBlock->GetTrackNumber() != m_info.number)
- return -1;
-
- const Cluster* pCluster = pCurrEntry->GetCluster();
- assert(pCluster);
- assert(!pCluster->EOS());
-
- long status = pCluster->GetNext(pCurrEntry, pNextEntry);
-
- if (status < 0) // error
- return status;
-
- for (int i = 0;;) {
- while (pNextEntry) {
- const Block* const pNextBlock = pNextEntry->GetBlock();
- assert(pNextBlock);
-
- if (pNextBlock->GetTrackNumber() == m_info.number)
- return 0;
-
- pCurrEntry = pNextEntry;
-
- status = pCluster->GetNext(pCurrEntry, pNextEntry);
-
- if (status < 0) // error
- return status;
- }
-
- pCluster = m_pSegment->GetNext(pCluster);
-
- if (pCluster == NULL) {
- pNextEntry = GetEOS();
- return 1;
- }
-
- if (pCluster->EOS()) {
- if (m_pSegment->DoneParsing()) {
- pNextEntry = GetEOS();
- return 1;
- }
-
- // TODO: there is a potential O(n^2) problem here: we tell the
- // caller to (pre)load another cluster, which he does, but then he
- // calls GetNext again, which repeats the same search. This is
- // a pathological case, since the only way it can happen is if
- // there exists a long sequence of clusters none of which contain a
- // block from this track. One way around this problem is for the
- // caller to be smarter when he loads another cluster: don't call
- // us back until you have a cluster that contains a block from this
- // track. (Of course, that's not cheap either, since our caller
- // would have to scan the each cluster as it's loaded, so that
- // would just push back the problem.)
-
- pNextEntry = NULL;
- return E_BUFFER_NOT_FULL;
- }
-
- status = pCluster->GetFirst(pNextEntry);
-
- if (status < 0) // error
- return status;
-
- if (pNextEntry == NULL) // empty cluster
- continue;
-
- ++i;
-
- if (i >= 100)
- break;
- }
-
- // NOTE: if we get here, it means that we didn't find a block with
- // a matching track number after lots of searching, so we give
- // up trying.
-
- pNextEntry = GetEOS(); // so we can return a non-NULL value
- return 1;
-}
-
-bool Track::VetEntry(const BlockEntry* pBlockEntry) const {
- assert(pBlockEntry);
- const Block* const pBlock = pBlockEntry->GetBlock();
- assert(pBlock);
- assert(pBlock->GetTrackNumber() == m_info.number);
- if (!pBlock || pBlock->GetTrackNumber() != m_info.number)
- return false;
-
- // This function is used during a seek to determine whether the
- // frame is a valid seek target. This default function simply
- // returns true, which means all frames are valid seek targets.
- // It gets overridden by the VideoTrack class, because only video
- // keyframes can be used as seek target.
-
- return true;
-}
-
-long Track::Seek(long long time_ns, const BlockEntry*& pResult) const {
- const long status = GetFirst(pResult);
-
- if (status < 0) // buffer underflow, etc
- return status;
-
- assert(pResult);
-
- if (pResult->EOS())
- return 0;
-
- const Cluster* pCluster = pResult->GetCluster();
- assert(pCluster);
- assert(pCluster->GetIndex() >= 0);
-
- if (time_ns <= pResult->GetBlock()->GetTime(pCluster))
- return 0;
-
- Cluster** const clusters = m_pSegment->m_clusters;
- assert(clusters);
-
- const long count = m_pSegment->GetCount(); // loaded only, not preloaded
- assert(count > 0);
-
- Cluster** const i = clusters + pCluster->GetIndex();
- assert(i);
- assert(*i == pCluster);
- assert(pCluster->GetTime() <= time_ns);
-
- Cluster** const j = clusters + count;
-
- Cluster** lo = i;
- Cluster** hi = j;
-
- while (lo < hi) {
- // INVARIANT:
- //[i, lo) <= time_ns
- //[lo, hi) ?
- //[hi, j) > time_ns
-
- Cluster** const mid = lo + (hi - lo) / 2;
- assert(mid < hi);
-
- pCluster = *mid;
- assert(pCluster);
- assert(pCluster->GetIndex() >= 0);
- assert(pCluster->GetIndex() == long(mid - m_pSegment->m_clusters));
-
- const long long t = pCluster->GetTime();
-
- if (t <= time_ns)
- lo = mid + 1;
- else
- hi = mid;
-
- assert(lo <= hi);
- }
-
- assert(lo == hi);
- assert(lo > i);
- assert(lo <= j);
-
- while (lo > i) {
- pCluster = *--lo;
- assert(pCluster);
- assert(pCluster->GetTime() <= time_ns);
-
- pResult = pCluster->GetEntry(this);
-
- if ((pResult != 0) && !pResult->EOS())
- return 0;
-
- // landed on empty cluster (no entries)
- }
-
- pResult = GetEOS(); // weird
- return 0;
-}
-
-const ContentEncoding* Track::GetContentEncodingByIndex(
- unsigned long idx) const {
- const ptrdiff_t count =
- content_encoding_entries_end_ - content_encoding_entries_;
- assert(count >= 0);
-
- if (idx >= static_cast<unsigned long>(count))
- return NULL;
-
- return content_encoding_entries_[idx];
-}
-
-unsigned long Track::GetContentEncodingCount() const {
- const ptrdiff_t count =
- content_encoding_entries_end_ - content_encoding_entries_;
- assert(count >= 0);
-
- return static_cast<unsigned long>(count);
-}
-
-long Track::ParseContentEncodingsEntry(long long start, long long size) {
- IMkvReader* const pReader = m_pSegment->m_pReader;
- assert(pReader);
-
- long long pos = start;
- const long long stop = start + size;
-
- // Count ContentEncoding elements.
- int count = 0;
- while (pos < stop) {
- long long id, size;
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
- if (status < 0) // error
- return status;
-
- // pos now designates start of element
- if (id == libwebm::kMkvContentEncoding)
- ++count;
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (count <= 0)
- return -1;
-
- content_encoding_entries_ = new (std::nothrow) ContentEncoding*[count];
- if (!content_encoding_entries_)
- return -1;
-
- content_encoding_entries_end_ = content_encoding_entries_;
-
- pos = start;
- while (pos < stop) {
- long long id, size;
- long status = ParseElementHeader(pReader, pos, stop, id, size);
- if (status < 0) // error
- return status;
-
- // pos now designates start of element
- if (id == libwebm::kMkvContentEncoding) {
- ContentEncoding* const content_encoding =
- new (std::nothrow) ContentEncoding();
- if (!content_encoding)
- return -1;
-
- status = content_encoding->ParseContentEncodingEntry(pos, size, pReader);
- if (status) {
- delete content_encoding;
- return status;
- }
-
- *content_encoding_entries_end_++ = content_encoding;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- return 0;
-}
-
-Track::EOSBlock::EOSBlock() : BlockEntry(NULL, LONG_MIN) {}
-
-BlockEntry::Kind Track::EOSBlock::GetKind() const { return kBlockEOS; }
-
-const Block* Track::EOSBlock::GetBlock() const { return NULL; }
-
-bool PrimaryChromaticity::Parse(IMkvReader* reader, long long read_pos,
- long long value_size, bool is_x,
- PrimaryChromaticity** chromaticity) {
- if (!reader)
- return false;
-
- if (!*chromaticity)
- *chromaticity = new PrimaryChromaticity();
-
- if (!*chromaticity)
- return false;
-
- PrimaryChromaticity* pc = *chromaticity;
- float* value = is_x ? &pc->x : &pc->y;
-
- double parser_value = 0;
- const long long parse_status =
- UnserializeFloat(reader, read_pos, value_size, parser_value);
-
- // Valid range is [0, 1]. Make sure the double is representable as a float
- // before casting.
- if (parse_status < 0 || parser_value < 0.0 || parser_value > 1.0 ||
- (parser_value > 0.0 && parser_value < FLT_MIN))
- return false;
-
- *value = static_cast<float>(parser_value);
-
- return true;
-}
-
-bool MasteringMetadata::Parse(IMkvReader* reader, long long mm_start,
- long long mm_size, MasteringMetadata** mm) {
- if (!reader || *mm)
- return false;
-
- std::unique_ptr<MasteringMetadata> mm_ptr(new MasteringMetadata());
- if (!mm_ptr.get())
- return false;
-
- const long long mm_end = mm_start + mm_size;
- long long read_pos = mm_start;
-
- while (read_pos < mm_end) {
- long long child_id = 0;
- long long child_size = 0;
-
- const long long status =
- ParseElementHeader(reader, read_pos, mm_end, child_id, child_size);
- if (status < 0)
- return false;
-
- if (child_id == libwebm::kMkvLuminanceMax) {
- double value = 0;
- const long long value_parse_status =
- UnserializeFloat(reader, read_pos, child_size, value);
- if (value < -FLT_MAX || value > FLT_MAX ||
- (value > 0.0 && value < FLT_MIN)) {
- return false;
- }
- mm_ptr->luminance_max = static_cast<float>(value);
- if (value_parse_status < 0 || mm_ptr->luminance_max < 0.0 ||
- mm_ptr->luminance_max > 9999.99) {
- return false;
- }
- } else if (child_id == libwebm::kMkvLuminanceMin) {
- double value = 0;
- const long long value_parse_status =
- UnserializeFloat(reader, read_pos, child_size, value);
- if (value < -FLT_MAX || value > FLT_MAX ||
- (value > 0.0 && value < FLT_MIN)) {
- return false;
- }
- mm_ptr->luminance_min = static_cast<float>(value);
- if (value_parse_status < 0 || mm_ptr->luminance_min < 0.0 ||
- mm_ptr->luminance_min > 999.9999) {
- return false;
- }
- } else {
- bool is_x = false;
- PrimaryChromaticity** chromaticity;
- switch (child_id) {
- case libwebm::kMkvPrimaryRChromaticityX:
- case libwebm::kMkvPrimaryRChromaticityY:
- is_x = child_id == libwebm::kMkvPrimaryRChromaticityX;
- chromaticity = &mm_ptr->r;
- break;
- case libwebm::kMkvPrimaryGChromaticityX:
- case libwebm::kMkvPrimaryGChromaticityY:
- is_x = child_id == libwebm::kMkvPrimaryGChromaticityX;
- chromaticity = &mm_ptr->g;
- break;
- case libwebm::kMkvPrimaryBChromaticityX:
- case libwebm::kMkvPrimaryBChromaticityY:
- is_x = child_id == libwebm::kMkvPrimaryBChromaticityX;
- chromaticity = &mm_ptr->b;
- break;
- case libwebm::kMkvWhitePointChromaticityX:
- case libwebm::kMkvWhitePointChromaticityY:
- is_x = child_id == libwebm::kMkvWhitePointChromaticityX;
- chromaticity = &mm_ptr->white_point;
- break;
- default:
- return false;
- }
- const bool value_parse_status = PrimaryChromaticity::Parse(
- reader, read_pos, child_size, is_x, chromaticity);
- if (!value_parse_status)
- return false;
- }
-
- read_pos += child_size;
- if (read_pos > mm_end)
- return false;
- }
-
- *mm = mm_ptr.release();
- return true;
-}
-
-bool Colour::Parse(IMkvReader* reader, long long colour_start,
- long long colour_size, Colour** colour) {
- if (!reader || *colour)
- return false;
-
- std::unique_ptr<Colour> colour_ptr(new Colour());
- if (!colour_ptr.get())
- return false;
-
- const long long colour_end = colour_start + colour_size;
- long long read_pos = colour_start;
-
- while (read_pos < colour_end) {
- long long child_id = 0;
- long long child_size = 0;
-
- const long status =
- ParseElementHeader(reader, read_pos, colour_end, child_id, child_size);
- if (status < 0)
- return false;
-
- if (child_id == libwebm::kMkvMatrixCoefficients) {
- colour_ptr->matrix_coefficients =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->matrix_coefficients < 0)
- return false;
- } else if (child_id == libwebm::kMkvBitsPerChannel) {
- colour_ptr->bits_per_channel =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->bits_per_channel < 0)
- return false;
- } else if (child_id == libwebm::kMkvChromaSubsamplingHorz) {
- colour_ptr->chroma_subsampling_horz =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->chroma_subsampling_horz < 0)
- return false;
- } else if (child_id == libwebm::kMkvChromaSubsamplingVert) {
- colour_ptr->chroma_subsampling_vert =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->chroma_subsampling_vert < 0)
- return false;
- } else if (child_id == libwebm::kMkvCbSubsamplingHorz) {
- colour_ptr->cb_subsampling_horz =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->cb_subsampling_horz < 0)
- return false;
- } else if (child_id == libwebm::kMkvCbSubsamplingVert) {
- colour_ptr->cb_subsampling_vert =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->cb_subsampling_vert < 0)
- return false;
- } else if (child_id == libwebm::kMkvChromaSitingHorz) {
- colour_ptr->chroma_siting_horz =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->chroma_siting_horz < 0)
- return false;
- } else if (child_id == libwebm::kMkvChromaSitingVert) {
- colour_ptr->chroma_siting_vert =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->chroma_siting_vert < 0)
- return false;
- } else if (child_id == libwebm::kMkvRange) {
- colour_ptr->range = UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->range < 0)
- return false;
- } else if (child_id == libwebm::kMkvTransferCharacteristics) {
- colour_ptr->transfer_characteristics =
- UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->transfer_characteristics < 0)
- return false;
- } else if (child_id == libwebm::kMkvPrimaries) {
- colour_ptr->primaries = UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->primaries < 0)
- return false;
- } else if (child_id == libwebm::kMkvMaxCLL) {
- colour_ptr->max_cll = UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->max_cll < 0)
- return false;
- } else if (child_id == libwebm::kMkvMaxFALL) {
- colour_ptr->max_fall = UnserializeUInt(reader, read_pos, child_size);
- if (colour_ptr->max_fall < 0)
- return false;
- } else if (child_id == libwebm::kMkvMasteringMetadata) {
- if (!MasteringMetadata::Parse(reader, read_pos, child_size,
- &colour_ptr->mastering_metadata))
- return false;
- } else {
- return false;
- }
-
- read_pos += child_size;
- if (read_pos > colour_end)
- return false;
- }
- *colour = colour_ptr.release();
- return true;
-}
-
-bool Projection::Parse(IMkvReader* reader, long long start, long long size,
- Projection** projection) {
- if (!reader || *projection)
- return false;
-
- std::unique_ptr<Projection> projection_ptr(new Projection());
- if (!projection_ptr.get())
- return false;
-
- const long long end = start + size;
- long long read_pos = start;
-
- while (read_pos < end) {
- long long child_id = 0;
- long long child_size = 0;
-
- const long long status =
- ParseElementHeader(reader, read_pos, end, child_id, child_size);
- if (status < 0)
- return false;
-
- if (child_id == libwebm::kMkvProjectionType) {
- long long projection_type = kTypeNotPresent;
- projection_type = UnserializeUInt(reader, read_pos, child_size);
- if (projection_type < 0)
- return false;
-
- projection_ptr->type = static_cast<ProjectionType>(projection_type);
- } else if (child_id == libwebm::kMkvProjectionPrivate) {
- unsigned char* data = SafeArrayAlloc<unsigned char>(1, child_size);
-
- if (data == NULL)
- return false;
-
- const int status =
- reader->Read(read_pos, static_cast<long>(child_size), data);
-
- if (status) {
- delete[] data;
- return false;
- }
-
- projection_ptr->private_data = data;
- projection_ptr->private_data_length = static_cast<size_t>(child_size);
- } else {
- double value = 0;
- const long long value_parse_status =
- UnserializeFloat(reader, read_pos, child_size, value);
- // Make sure value is representable as a float before casting.
- if (value_parse_status < 0 || value < -FLT_MAX || value > FLT_MAX ||
- (value > 0.0 && value < FLT_MIN)) {
- return false;
- }
-
- switch (child_id) {
- case libwebm::kMkvProjectionPoseYaw:
- projection_ptr->pose_yaw = static_cast<float>(value);
- break;
- case libwebm::kMkvProjectionPosePitch:
- projection_ptr->pose_pitch = static_cast<float>(value);
- break;
- case libwebm::kMkvProjectionPoseRoll:
- projection_ptr->pose_roll = static_cast<float>(value);
- break;
- default:
- return false;
- }
- }
-
- read_pos += child_size;
- if (read_pos > end)
- return false;
- }
-
- *projection = projection_ptr.release();
- return true;
-}
-
-VideoTrack::VideoTrack(Segment* pSegment, long long element_start,
- long long element_size)
- : Track(pSegment, element_start, element_size),
- m_colour(NULL),
- m_projection(NULL) {}
-
-VideoTrack::~VideoTrack() {
- delete m_colour;
- delete m_projection;
-}
-
-long VideoTrack::Parse(Segment* pSegment, const Info& info,
- long long element_start, long long element_size,
- VideoTrack*& pResult) {
- if (pResult)
- return -1;
-
- if (info.type != Track::kVideo)
- return -1;
-
- long long width = 0;
- long long height = 0;
- long long display_width = 0;
- long long display_height = 0;
- long long display_unit = 0;
- long long stereo_mode = 0;
-
- double rate = 0.0;
-
- IMkvReader* const pReader = pSegment->m_pReader;
-
- const Settings& s = info.settings;
- assert(s.start >= 0);
- assert(s.size >= 0);
-
- long long pos = s.start;
- assert(pos >= 0);
-
- const long long stop = pos + s.size;
-
- Colour* colour = NULL;
- Projection* projection = NULL;
-
- while (pos < stop) {
- long long id, size;
-
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvPixelWidth) {
- width = UnserializeUInt(pReader, pos, size);
-
- if (width <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvPixelHeight) {
- height = UnserializeUInt(pReader, pos, size);
-
- if (height <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvDisplayWidth) {
- display_width = UnserializeUInt(pReader, pos, size);
-
- if (display_width <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvDisplayHeight) {
- display_height = UnserializeUInt(pReader, pos, size);
-
- if (display_height <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvDisplayUnit) {
- display_unit = UnserializeUInt(pReader, pos, size);
-
- if (display_unit < 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvStereoMode) {
- stereo_mode = UnserializeUInt(pReader, pos, size);
-
- if (stereo_mode < 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvFrameRate) {
- const long status = UnserializeFloat(pReader, pos, size, rate);
-
- if (status < 0)
- return status;
-
- if (rate <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvColour) {
- if (!Colour::Parse(pReader, pos, size, &colour))
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvProjection) {
- if (!Projection::Parse(pReader, pos, size, &projection))
- return E_FILE_FORMAT_INVALID;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- VideoTrack* const pTrack =
- new (std::nothrow) VideoTrack(pSegment, element_start, element_size);
-
- if (pTrack == NULL)
- return -1; // generic error
-
- const int status = info.Copy(pTrack->m_info);
-
- if (status) { // error
- delete pTrack;
- return status;
- }
-
- pTrack->m_width = width;
- pTrack->m_height = height;
- pTrack->m_display_width = display_width;
- pTrack->m_display_height = display_height;
- pTrack->m_display_unit = display_unit;
- pTrack->m_stereo_mode = stereo_mode;
- pTrack->m_rate = rate;
- pTrack->m_colour = colour;
- pTrack->m_projection = projection;
-
- pResult = pTrack;
- return 0; // success
-}
-
-bool VideoTrack::VetEntry(const BlockEntry* pBlockEntry) const {
- return Track::VetEntry(pBlockEntry) && pBlockEntry->GetBlock()->IsKey();
-}
-
-long VideoTrack::Seek(long long time_ns, const BlockEntry*& pResult) const {
- const long status = GetFirst(pResult);
-
- if (status < 0) // buffer underflow, etc
- return status;
-
- assert(pResult);
-
- if (pResult->EOS())
- return 0;
-
- const Cluster* pCluster = pResult->GetCluster();
- assert(pCluster);
- assert(pCluster->GetIndex() >= 0);
-
- if (time_ns <= pResult->GetBlock()->GetTime(pCluster))
- return 0;
-
- Cluster** const clusters = m_pSegment->m_clusters;
- assert(clusters);
-
- const long count = m_pSegment->GetCount(); // loaded only, not pre-loaded
- assert(count > 0);
-
- Cluster** const i = clusters + pCluster->GetIndex();
- assert(i);
- assert(*i == pCluster);
- assert(pCluster->GetTime() <= time_ns);
-
- Cluster** const j = clusters + count;
-
- Cluster** lo = i;
- Cluster** hi = j;
-
- while (lo < hi) {
- // INVARIANT:
- //[i, lo) <= time_ns
- //[lo, hi) ?
- //[hi, j) > time_ns
-
- Cluster** const mid = lo + (hi - lo) / 2;
- assert(mid < hi);
-
- pCluster = *mid;
- assert(pCluster);
- assert(pCluster->GetIndex() >= 0);
- assert(pCluster->GetIndex() == long(mid - m_pSegment->m_clusters));
-
- const long long t = pCluster->GetTime();
-
- if (t <= time_ns)
- lo = mid + 1;
- else
- hi = mid;
-
- assert(lo <= hi);
- }
-
- assert(lo == hi);
- assert(lo > i);
- assert(lo <= j);
-
- pCluster = *--lo;
- assert(pCluster);
- assert(pCluster->GetTime() <= time_ns);
-
- pResult = pCluster->GetEntry(this, time_ns);
-
- if ((pResult != 0) && !pResult->EOS()) // found a keyframe
- return 0;
-
- while (lo != i) {
- pCluster = *--lo;
- assert(pCluster);
- assert(pCluster->GetTime() <= time_ns);
-
- pResult = pCluster->GetEntry(this, time_ns);
-
- if ((pResult != 0) && !pResult->EOS())
- return 0;
- }
-
- // weird: we're on the first cluster, but no keyframe found
- // should never happen but we must return something anyway
-
- pResult = GetEOS();
- return 0;
-}
-
-Colour* VideoTrack::GetColour() const { return m_colour; }
-
-Projection* VideoTrack::GetProjection() const { return m_projection; }
-
-long long VideoTrack::GetWidth() const { return m_width; }
-
-long long VideoTrack::GetHeight() const { return m_height; }
-
-long long VideoTrack::GetDisplayWidth() const {
- return m_display_width > 0 ? m_display_width : GetWidth();
-}
-
-long long VideoTrack::GetDisplayHeight() const {
- return m_display_height > 0 ? m_display_height : GetHeight();
-}
-
-long long VideoTrack::GetDisplayUnit() const { return m_display_unit; }
-
-long long VideoTrack::GetStereoMode() const { return m_stereo_mode; }
-
-double VideoTrack::GetFrameRate() const { return m_rate; }
-
-AudioTrack::AudioTrack(Segment* pSegment, long long element_start,
- long long element_size)
- : Track(pSegment, element_start, element_size) {}
-
-long AudioTrack::Parse(Segment* pSegment, const Info& info,
- long long element_start, long long element_size,
- AudioTrack*& pResult) {
- if (pResult)
- return -1;
-
- if (info.type != Track::kAudio)
- return -1;
-
- IMkvReader* const pReader = pSegment->m_pReader;
-
- const Settings& s = info.settings;
- assert(s.start >= 0);
- assert(s.size >= 0);
-
- long long pos = s.start;
- assert(pos >= 0);
-
- const long long stop = pos + s.size;
-
- double rate = 8000.0; // MKV default
- long long channels = 1;
- long long bit_depth = 0;
-
- while (pos < stop) {
- long long id, size;
-
- long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (id == libwebm::kMkvSamplingFrequency) {
- status = UnserializeFloat(pReader, pos, size, rate);
-
- if (status < 0)
- return status;
-
- if (rate <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvChannels) {
- channels = UnserializeUInt(pReader, pos, size);
-
- if (channels <= 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvBitDepth) {
- bit_depth = UnserializeUInt(pReader, pos, size);
-
- if (bit_depth <= 0)
- return E_FILE_FORMAT_INVALID;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- AudioTrack* const pTrack =
- new (std::nothrow) AudioTrack(pSegment, element_start, element_size);
-
- if (pTrack == NULL)
- return -1; // generic error
-
- const int status = info.Copy(pTrack->m_info);
-
- if (status) {
- delete pTrack;
- return status;
- }
-
- pTrack->m_rate = rate;
- pTrack->m_channels = channels;
- pTrack->m_bitDepth = bit_depth;
-
- pResult = pTrack;
- return 0; // success
-}
-
-double AudioTrack::GetSamplingRate() const { return m_rate; }
-
-long long AudioTrack::GetChannels() const { return m_channels; }
-
-long long AudioTrack::GetBitDepth() const { return m_bitDepth; }
-
-Tracks::Tracks(Segment* pSegment, long long start, long long size_,
- long long element_start, long long element_size)
- : m_pSegment(pSegment),
- m_start(start),
- m_size(size_),
- m_element_start(element_start),
- m_element_size(element_size),
- m_trackEntries(NULL),
- m_trackEntriesEnd(NULL) {}
-
-long Tracks::Parse() {
- assert(m_trackEntries == NULL);
- assert(m_trackEntriesEnd == NULL);
-
- const long long stop = m_start + m_size;
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- int count = 0;
- long long pos = m_start;
-
- while (pos < stop) {
- long long id, size;
-
- const long status = ParseElementHeader(pReader, pos, stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (size == 0) // weird
- continue;
-
- if (id == libwebm::kMkvTrackEntry)
- ++count;
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- if (count <= 0)
- return 0; // success
-
- m_trackEntries = new (std::nothrow) Track*[count];
-
- if (m_trackEntries == NULL)
- return -1;
-
- m_trackEntriesEnd = m_trackEntries;
-
- pos = m_start;
-
- while (pos < stop) {
- const long long element_start = pos;
-
- long long id, payload_size;
-
- const long status =
- ParseElementHeader(pReader, pos, stop, id, payload_size);
-
- if (status < 0) // error
- return status;
-
- if (payload_size == 0) // weird
- continue;
-
- const long long payload_stop = pos + payload_size;
- assert(payload_stop <= stop); // checked in ParseElement
-
- const long long element_size = payload_stop - element_start;
-
- if (id == libwebm::kMkvTrackEntry) {
- Track*& pTrack = *m_trackEntriesEnd;
- pTrack = NULL;
-
- const long status = ParseTrackEntry(pos, payload_size, element_start,
- element_size, pTrack);
- if (status)
- return status;
-
- if (pTrack)
- ++m_trackEntriesEnd;
- }
-
- pos = payload_stop;
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- return 0; // success
-}
-
-unsigned long Tracks::GetTracksCount() const {
- const ptrdiff_t result = m_trackEntriesEnd - m_trackEntries;
- assert(result >= 0);
-
- return static_cast<unsigned long>(result);
-}
-
-long Tracks::ParseTrackEntry(long long track_start, long long track_size,
- long long element_start, long long element_size,
- Track*& pResult) const {
- if (pResult)
- return -1;
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long pos = track_start;
- const long long track_stop = track_start + track_size;
-
- Track::Info info;
-
- info.type = 0;
- info.number = 0;
- info.uid = 0;
- info.defaultDuration = 0;
-
- Track::Settings v;
- v.start = -1;
- v.size = -1;
-
- Track::Settings a;
- a.start = -1;
- a.size = -1;
-
- Track::Settings e; // content_encodings_settings;
- e.start = -1;
- e.size = -1;
-
- long long lacing = 1; // default is true
-
- while (pos < track_stop) {
- long long id, size;
-
- const long status = ParseElementHeader(pReader, pos, track_stop, id, size);
-
- if (status < 0) // error
- return status;
-
- if (size < 0)
- return E_FILE_FORMAT_INVALID;
-
- const long long start = pos;
-
- if (id == libwebm::kMkvVideo) {
- v.start = start;
- v.size = size;
- } else if (id == libwebm::kMkvAudio) {
- a.start = start;
- a.size = size;
- } else if (id == libwebm::kMkvContentEncodings) {
- e.start = start;
- e.size = size;
- } else if (id == libwebm::kMkvTrackUID) {
- if (size > 8)
- return E_FILE_FORMAT_INVALID;
-
- info.uid = 0;
-
- long long pos_ = start;
- const long long pos_end = start + size;
-
- while (pos_ != pos_end) {
- unsigned char b;
-
- const int status = pReader->Read(pos_, 1, &b);
-
- if (status)
- return status;
-
- info.uid <<= 8;
- info.uid |= b;
-
- ++pos_;
- }
- } else if (id == libwebm::kMkvTrackNumber) {
- const long long num = UnserializeUInt(pReader, pos, size);
-
- if ((num <= 0) || (num > 127))
- return E_FILE_FORMAT_INVALID;
-
- info.number = static_cast<long>(num);
- } else if (id == libwebm::kMkvTrackType) {
- const long long type = UnserializeUInt(pReader, pos, size);
-
- if ((type <= 0) || (type > 254))
- return E_FILE_FORMAT_INVALID;
-
- info.type = static_cast<long>(type);
- } else if (id == libwebm::kMkvName) {
- const long status =
- UnserializeString(pReader, pos, size, info.nameAsUTF8);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvLanguage) {
- const long status = UnserializeString(pReader, pos, size, info.language);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvDefaultDuration) {
- const long long duration = UnserializeUInt(pReader, pos, size);
-
- if (duration < 0)
- return E_FILE_FORMAT_INVALID;
-
- info.defaultDuration = static_cast<unsigned long long>(duration);
- } else if (id == libwebm::kMkvCodecID) {
- const long status = UnserializeString(pReader, pos, size, info.codecId);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvFlagLacing) {
- lacing = UnserializeUInt(pReader, pos, size);
-
- if ((lacing < 0) || (lacing > 1))
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvCodecPrivate) {
- delete[] info.codecPrivate;
- info.codecPrivate = NULL;
- info.codecPrivateSize = 0;
-
- const size_t buflen = static_cast<size_t>(size);
-
- if (buflen) {
- unsigned char* buf = SafeArrayAlloc<unsigned char>(1, buflen);
-
- if (buf == NULL)
- return -1;
-
- const int status = pReader->Read(pos, static_cast<long>(buflen), buf);
-
- if (status) {
- delete[] buf;
- return status;
- }
-
- info.codecPrivate = buf;
- info.codecPrivateSize = buflen;
- }
- } else if (id == libwebm::kMkvCodecName) {
- const long status =
- UnserializeString(pReader, pos, size, info.codecNameAsUTF8);
-
- if (status)
- return status;
- } else if (id == libwebm::kMkvCodecDelay) {
- info.codecDelay = UnserializeUInt(pReader, pos, size);
- } else if (id == libwebm::kMkvSeekPreRoll) {
- info.seekPreRoll = UnserializeUInt(pReader, pos, size);
- }
-
- pos += size; // consume payload
- if (pos > track_stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != track_stop)
- return E_FILE_FORMAT_INVALID;
-
- if (info.number <= 0) // not specified
- return E_FILE_FORMAT_INVALID;
-
- if (GetTrackByNumber(info.number))
- return E_FILE_FORMAT_INVALID;
-
- if (info.type <= 0) // not specified
- return E_FILE_FORMAT_INVALID;
-
- info.lacing = (lacing > 0) ? true : false;
-
- if (info.type == Track::kVideo) {
- if (v.start < 0)
- return E_FILE_FORMAT_INVALID;
-
- if (a.start >= 0)
- return E_FILE_FORMAT_INVALID;
-
- info.settings = v;
-
- VideoTrack* pTrack = NULL;
-
- const long status = VideoTrack::Parse(m_pSegment, info, element_start,
- element_size, pTrack);
-
- if (status)
- return status;
-
- pResult = pTrack;
- assert(pResult);
-
- if (e.start >= 0)
- pResult->ParseContentEncodingsEntry(e.start, e.size);
- } else if (info.type == Track::kAudio) {
- if (a.start < 0)
- return E_FILE_FORMAT_INVALID;
-
- if (v.start >= 0)
- return E_FILE_FORMAT_INVALID;
-
- info.settings = a;
-
- AudioTrack* pTrack = NULL;
-
- const long status = AudioTrack::Parse(m_pSegment, info, element_start,
- element_size, pTrack);
-
- if (status)
- return status;
-
- pResult = pTrack;
- assert(pResult);
-
- if (e.start >= 0)
- pResult->ParseContentEncodingsEntry(e.start, e.size);
- } else {
- // neither video nor audio - probably metadata or subtitles
-
- if (a.start >= 0)
- return E_FILE_FORMAT_INVALID;
-
- if (v.start >= 0)
- return E_FILE_FORMAT_INVALID;
-
- if (info.type == Track::kMetadata && e.start >= 0)
- return E_FILE_FORMAT_INVALID;
-
- info.settings.start = -1;
- info.settings.size = 0;
-
- Track* pTrack = NULL;
-
- const long status =
- Track::Create(m_pSegment, info, element_start, element_size, pTrack);
-
- if (status)
- return status;
-
- pResult = pTrack;
- assert(pResult);
- }
-
- return 0; // success
-}
-
-Tracks::~Tracks() {
- Track** i = m_trackEntries;
- Track** const j = m_trackEntriesEnd;
-
- while (i != j) {
- Track* const pTrack = *i++;
- delete pTrack;
- }
-
- delete[] m_trackEntries;
-}
-
-const Track* Tracks::GetTrackByNumber(long tn) const {
- if (tn < 0)
- return NULL;
-
- Track** i = m_trackEntries;
- Track** const j = m_trackEntriesEnd;
-
- while (i != j) {
- Track* const pTrack = *i++;
-
- if (pTrack == NULL)
- continue;
-
- if (tn == pTrack->GetNumber())
- return pTrack;
- }
-
- return NULL; // not found
-}
-
-const Track* Tracks::GetTrackByIndex(unsigned long idx) const {
- const ptrdiff_t count = m_trackEntriesEnd - m_trackEntries;
-
- if (idx >= static_cast<unsigned long>(count))
- return NULL;
-
- return m_trackEntries[idx];
-}
-
-long Cluster::Load(long long& pos, long& len) const {
- if (m_pSegment == NULL)
- return E_PARSE_FAILED;
-
- if (m_timecode >= 0) // at least partially loaded
- return 0;
-
- if (m_pos != m_element_start || m_element_size >= 0)
- return E_PARSE_FAILED;
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
- long long total, avail;
- const int status = pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- if (total >= 0 && (avail > total || m_pos > total))
- return E_FILE_FORMAT_INVALID;
-
- pos = m_pos;
-
- long long cluster_size = -1;
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error or underflow
- return static_cast<long>(result);
-
- if (result > 0)
- return E_BUFFER_NOT_FULL;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long id_ = ReadID(pReader, pos, len);
-
- if (id_ < 0) // error
- return static_cast<long>(id_);
-
- if (id_ != libwebm::kMkvCluster)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume id
-
- // read cluster size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0)
- return E_BUFFER_NOT_FULL;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(cluster_size);
-
- if (size == 0)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume length of size of element
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (size != unknown_size)
- cluster_size = size;
-
- // pos points to start of payload
- long long timecode = -1;
- long long new_pos = -1;
- bool bBlock = false;
-
- long long cluster_stop = (cluster_size < 0) ? -1 : pos + cluster_size;
-
- for (;;) {
- if ((cluster_stop >= 0) && (pos >= cluster_stop))
- break;
-
- // Parse ID
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0)
- return E_BUFFER_NOT_FULL;
-
- if ((cluster_stop >= 0) && ((pos + len) > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long id = ReadID(pReader, pos, len);
-
- if (id < 0) // error
- return static_cast<long>(id);
-
- if (id == 0)
- return E_FILE_FORMAT_INVALID;
-
- // This is the distinguished set of ID's we use to determine
- // that we have exhausted the sub-element's inside the cluster
- // whose ID we parsed earlier.
-
- if (id == libwebm::kMkvCluster)
- break;
-
- if (id == libwebm::kMkvCues)
- break;
-
- pos += len; // consume ID field
-
- // Parse Size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0)
- return E_BUFFER_NOT_FULL;
-
- if ((cluster_stop >= 0) && ((pos + len) > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume size field
-
- if ((cluster_stop >= 0) && (pos > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- // pos now points to start of payload
-
- if (size == 0)
- continue;
-
- if ((cluster_stop >= 0) && ((pos + size) > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if (id == libwebm::kMkvTimecode) {
- len = static_cast<long>(size);
-
- if ((pos + size) > avail)
- return E_BUFFER_NOT_FULL;
-
- timecode = UnserializeUInt(pReader, pos, size);
-
- if (timecode < 0) // error (or underflow)
- return static_cast<long>(timecode);
-
- new_pos = pos + size;
-
- if (bBlock)
- break;
- } else if (id == libwebm::kMkvBlockGroup) {
- bBlock = true;
- break;
- } else if (id == libwebm::kMkvSimpleBlock) {
- bBlock = true;
- break;
- }
-
- pos += size; // consume payload
- if (cluster_stop >= 0 && pos > cluster_stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (cluster_stop >= 0 && pos > cluster_stop)
- return E_FILE_FORMAT_INVALID;
-
- if (timecode < 0) // no timecode found
- return E_FILE_FORMAT_INVALID;
-
- if (!bBlock)
- return E_FILE_FORMAT_INVALID;
-
- m_pos = new_pos; // designates position just beyond timecode payload
- m_timecode = timecode; // m_timecode >= 0 means we're partially loaded
-
- if (cluster_size >= 0)
- m_element_size = cluster_stop - m_element_start;
-
- return 0;
-}
-
-long Cluster::Parse(long long& pos, long& len) const {
- long status = Load(pos, len);
-
- if (status < 0)
- return status;
-
- if (m_pos < m_element_start || m_timecode < 0)
- return E_PARSE_FAILED;
-
- const long long cluster_stop =
- (m_element_size < 0) ? -1 : m_element_start + m_element_size;
-
- if ((cluster_stop >= 0) && (m_pos >= cluster_stop))
- return 1; // nothing else to do
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long total, avail;
-
- status = pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- if (total >= 0 && avail > total)
- return E_FILE_FORMAT_INVALID;
-
- pos = m_pos;
-
- for (;;) {
- if ((cluster_stop >= 0) && (pos >= cluster_stop))
- break;
-
- if ((total >= 0) && (pos >= total)) {
- if (m_element_size < 0)
- m_element_size = pos - m_element_start;
-
- break;
- }
-
- // Parse ID
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0)
- return E_BUFFER_NOT_FULL;
-
- if ((cluster_stop >= 0) && ((pos + len) > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long id = ReadID(pReader, pos, len);
-
- if (id < 0)
- return E_FILE_FORMAT_INVALID;
-
- // This is the distinguished set of ID's we use to determine
- // that we have exhausted the sub-element's inside the cluster
- // whose ID we parsed earlier.
-
- if ((id == libwebm::kMkvCluster) || (id == libwebm::kMkvCues)) {
- if (m_element_size < 0)
- m_element_size = pos - m_element_start;
-
- break;
- }
-
- pos += len; // consume ID field
-
- // Parse Size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0)
- return E_BUFFER_NOT_FULL;
-
- if ((cluster_stop >= 0) && ((pos + len) > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume size field
-
- if ((cluster_stop >= 0) && (pos > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- // pos now points to start of payload
-
- if (size == 0)
- continue;
-
- // const long long block_start = pos;
- const long long block_stop = pos + size;
-
- if (cluster_stop >= 0) {
- if (block_stop > cluster_stop) {
- if (id == libwebm::kMkvBlockGroup || id == libwebm::kMkvSimpleBlock) {
- return E_FILE_FORMAT_INVALID;
- }
-
- pos = cluster_stop;
- break;
- }
- } else if ((total >= 0) && (block_stop > total)) {
- m_element_size = total - m_element_start;
- pos = total;
- break;
- } else if (block_stop > avail) {
- len = static_cast<long>(size);
- return E_BUFFER_NOT_FULL;
- }
-
- Cluster* const this_ = const_cast<Cluster*>(this);
-
- if (id == libwebm::kMkvBlockGroup)
- return this_->ParseBlockGroup(size, pos, len);
-
- if (id == libwebm::kMkvSimpleBlock)
- return this_->ParseSimpleBlock(size, pos, len);
-
- pos += size; // consume payload
- if (cluster_stop >= 0 && pos > cluster_stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (m_element_size < 1)
- return E_FILE_FORMAT_INVALID;
-
- m_pos = pos;
- if (cluster_stop >= 0 && m_pos > cluster_stop)
- return E_FILE_FORMAT_INVALID;
-
- if (m_entries_count > 0) {
- const long idx = m_entries_count - 1;
-
- const BlockEntry* const pLast = m_entries[idx];
- if (pLast == NULL)
- return E_PARSE_FAILED;
-
- const Block* const pBlock = pLast->GetBlock();
- if (pBlock == NULL)
- return E_PARSE_FAILED;
-
- const long long start = pBlock->m_start;
-
- if ((total >= 0) && (start > total))
- return E_PARSE_FAILED; // defend against trucated stream
-
- const long long size = pBlock->m_size;
-
- const long long stop = start + size;
- if (cluster_stop >= 0 && stop > cluster_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((total >= 0) && (stop > total))
- return E_PARSE_FAILED; // defend against trucated stream
- }
-
- return 1; // no more entries
-}
-
-long Cluster::ParseSimpleBlock(long long block_size, long long& pos,
- long& len) {
- const long long block_start = pos;
- const long long block_stop = pos + block_size;
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long total, avail;
-
- long status = pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- assert((total < 0) || (avail <= total));
-
- // parse track number
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((pos + len) > block_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long track = ReadUInt(pReader, pos, len);
-
- if (track < 0) // error
- return static_cast<long>(track);
-
- if (track == 0)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume track number
-
- if ((pos + 2) > block_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + 2) > avail) {
- len = 2;
- return E_BUFFER_NOT_FULL;
- }
-
- pos += 2; // consume timecode
-
- if ((pos + 1) > block_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- unsigned char flags;
-
- status = pReader->Read(pos, 1, &flags);
-
- if (status < 0) { // error or underflow
- len = 1;
- return status;
- }
-
- ++pos; // consume flags byte
- assert(pos <= avail);
-
- if (pos >= block_stop)
- return E_FILE_FORMAT_INVALID;
-
- const int lacing = int(flags & 0x06) >> 1;
-
- if ((lacing != 0) && (block_stop > avail)) {
- len = static_cast<long>(block_stop - pos);
- return E_BUFFER_NOT_FULL;
- }
-
- status = CreateBlock(libwebm::kMkvSimpleBlock, block_start, block_size,
- 0); // DiscardPadding
-
- if (status != 0)
- return status;
-
- m_pos = block_stop;
-
- return 0; // success
-}
-
-long Cluster::ParseBlockGroup(long long payload_size, long long& pos,
- long& len) {
- const long long payload_start = pos;
- const long long payload_stop = pos + payload_size;
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long total, avail;
-
- long status = pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- assert((total < 0) || (avail <= total));
-
- if ((total >= 0) && (payload_stop > total))
- return E_FILE_FORMAT_INVALID;
-
- if (payload_stop > avail) {
- len = static_cast<long>(payload_size);
- return E_BUFFER_NOT_FULL;
- }
-
- long long discard_padding = 0;
-
- while (pos < payload_stop) {
- // parse sub-block element ID
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((pos + len) > payload_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long id = ReadID(pReader, pos, len);
-
- if (id < 0) // error
- return static_cast<long>(id);
-
- if (id == 0) // not a valid ID
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume ID field
-
- // Parse Size
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((pos + len) > payload_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- pos += len; // consume size field
-
- // pos now points to start of sub-block group payload
-
- if (pos > payload_stop)
- return E_FILE_FORMAT_INVALID;
-
- if (size == 0) // weird
- continue;
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID;
-
- if (id == libwebm::kMkvDiscardPadding) {
- status = UnserializeInt(pReader, pos, size, discard_padding);
-
- if (status < 0) // error
- return status;
- }
-
- if (id != libwebm::kMkvBlock) {
- pos += size; // consume sub-part of block group
-
- if (pos > payload_stop)
- return E_FILE_FORMAT_INVALID;
-
- continue;
- }
-
- const long long block_stop = pos + size;
-
- if (block_stop > payload_stop)
- return E_FILE_FORMAT_INVALID;
-
- // parse track number
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((pos + len) > block_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long track = ReadUInt(pReader, pos, len);
-
- if (track < 0) // error
- return static_cast<long>(track);
-
- if (track == 0)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume track number
-
- if ((pos + 2) > block_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + 2) > avail) {
- len = 2;
- return E_BUFFER_NOT_FULL;
- }
-
- pos += 2; // consume timecode
-
- if ((pos + 1) > block_stop)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- unsigned char flags;
-
- status = pReader->Read(pos, 1, &flags);
-
- if (status < 0) { // error or underflow
- len = 1;
- return status;
- }
-
- ++pos; // consume flags byte
- assert(pos <= avail);
-
- if (pos >= block_stop)
- return E_FILE_FORMAT_INVALID;
-
- const int lacing = int(flags & 0x06) >> 1;
-
- if ((lacing != 0) && (block_stop > avail)) {
- len = static_cast<long>(block_stop - pos);
- return E_BUFFER_NOT_FULL;
- }
-
- pos = block_stop; // consume block-part of block group
- if (pos > payload_stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- if (pos != payload_stop)
- return E_FILE_FORMAT_INVALID;
-
- status = CreateBlock(libwebm::kMkvBlockGroup, payload_start, payload_size,
- discard_padding);
- if (status != 0)
- return status;
-
- m_pos = payload_stop;
-
- return 0; // success
-}
-
-long Cluster::GetEntry(long index, const mkvparser::BlockEntry*& pEntry) const {
- assert(m_pos >= m_element_start);
-
- pEntry = NULL;
-
- if (index < 0)
- return -1; // generic error
-
- if (m_entries_count < 0)
- return E_BUFFER_NOT_FULL;
-
- assert(m_entries);
- assert(m_entries_size > 0);
- assert(m_entries_count <= m_entries_size);
-
- if (index < m_entries_count) {
- pEntry = m_entries[index];
- assert(pEntry);
-
- return 1; // found entry
- }
-
- if (m_element_size < 0) // we don't know cluster end yet
- return E_BUFFER_NOT_FULL; // underflow
-
- const long long element_stop = m_element_start + m_element_size;
-
- if (m_pos >= element_stop)
- return 0; // nothing left to parse
-
- return E_BUFFER_NOT_FULL; // underflow, since more remains to be parsed
-}
-
-Cluster* Cluster::Create(Segment* pSegment, long idx, long long off) {
- if (!pSegment || off < 0)
- return NULL;
-
- const long long element_start = pSegment->m_start + off;
-
- Cluster* const pCluster =
- new (std::nothrow) Cluster(pSegment, idx, element_start);
-
- return pCluster;
-}
-
-Cluster::Cluster()
- : m_pSegment(NULL),
- m_element_start(0),
- m_index(0),
- m_pos(0),
- m_element_size(0),
- m_timecode(0),
- m_entries(NULL),
- m_entries_size(0),
- m_entries_count(0) // means "no entries"
-{}
-
-Cluster::Cluster(Segment* pSegment, long idx, long long element_start
- /* long long element_size */)
- : m_pSegment(pSegment),
- m_element_start(element_start),
- m_index(idx),
- m_pos(element_start),
- m_element_size(-1 /* element_size */),
- m_timecode(-1),
- m_entries(NULL),
- m_entries_size(0),
- m_entries_count(-1) // means "has not been parsed yet"
-{}
-
-Cluster::~Cluster() {
- if (m_entries_count <= 0) {
- delete[] m_entries;
- return;
- }
-
- BlockEntry** i = m_entries;
- BlockEntry** const j = m_entries + m_entries_count;
-
- while (i != j) {
- BlockEntry* p = *i++;
- assert(p);
-
- delete p;
- }
-
- delete[] m_entries;
-}
-
-bool Cluster::EOS() const { return (m_pSegment == NULL); }
-
-long Cluster::GetIndex() const { return m_index; }
-
-long long Cluster::GetPosition() const {
- const long long pos = m_element_start - m_pSegment->m_start;
- assert(pos >= 0);
-
- return pos;
-}
-
-long long Cluster::GetElementSize() const { return m_element_size; }
-
-long Cluster::HasBlockEntries(
- const Segment* pSegment,
- long long off, // relative to start of segment payload
- long long& pos, long& len) {
- assert(pSegment);
- assert(off >= 0); // relative to segment
-
- IMkvReader* const pReader = pSegment->m_pReader;
-
- long long total, avail;
-
- long status = pReader->Length(&total, &avail);
-
- if (status < 0) // error
- return status;
-
- assert((total < 0) || (avail <= total));
-
- pos = pSegment->m_start + off; // absolute
-
- if ((total >= 0) && (pos >= total))
- return 0; // we don't even have a complete cluster
-
- const long long segment_stop =
- (pSegment->m_size < 0) ? -1 : pSegment->m_start + pSegment->m_size;
-
- long long cluster_stop = -1; // interpreted later to mean "unknown size"
-
- {
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // need more data
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((total >= 0) && ((pos + len) > total))
- return 0;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long id = ReadID(pReader, pos, len);
-
- if (id < 0) // error
- return static_cast<long>(id);
-
- if (id != libwebm::kMkvCluster)
- return E_PARSE_FAILED;
-
- pos += len; // consume Cluster ID field
-
- // read size field
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // weird
- return E_BUFFER_NOT_FULL;
-
- if ((segment_stop >= 0) && ((pos + len) > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((total >= 0) && ((pos + len) > total))
- return 0;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- if (size == 0)
- return 0; // cluster does not have entries
-
- pos += len; // consume size field
-
- // pos now points to start of payload
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (size != unknown_size) {
- cluster_stop = pos + size;
- assert(cluster_stop >= 0);
-
- if ((segment_stop >= 0) && (cluster_stop > segment_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((total >= 0) && (cluster_stop > total))
- // return E_FILE_FORMAT_INVALID; //too conservative
- return 0; // cluster does not have any entries
- }
- }
-
- for (;;) {
- if ((cluster_stop >= 0) && (pos >= cluster_stop))
- return 0; // no entries detected
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- long long result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // need more data
- return E_BUFFER_NOT_FULL;
-
- if ((cluster_stop >= 0) && ((pos + len) > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long id = ReadID(pReader, pos, len);
-
- if (id < 0) // error
- return static_cast<long>(id);
-
- // This is the distinguished set of ID's we use to determine
- // that we have exhausted the sub-element's inside the cluster
- // whose ID we parsed earlier.
-
- if (id == libwebm::kMkvCluster)
- return 0; // no entries found
-
- if (id == libwebm::kMkvCues)
- return 0; // no entries found
-
- pos += len; // consume id field
-
- if ((cluster_stop >= 0) && (pos >= cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- // read size field
-
- if ((pos + 1) > avail) {
- len = 1;
- return E_BUFFER_NOT_FULL;
- }
-
- result = GetUIntLength(pReader, pos, len);
-
- if (result < 0) // error
- return static_cast<long>(result);
-
- if (result > 0) // underflow
- return E_BUFFER_NOT_FULL;
-
- if ((cluster_stop >= 0) && ((pos + len) > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > avail)
- return E_BUFFER_NOT_FULL;
-
- const long long size = ReadUInt(pReader, pos, len);
-
- if (size < 0) // error
- return static_cast<long>(size);
-
- pos += len; // consume size field
-
- // pos now points to start of payload
-
- if ((cluster_stop >= 0) && (pos > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if (size == 0) // weird
- continue;
-
- const long long unknown_size = (1LL << (7 * len)) - 1;
-
- if (size == unknown_size)
- return E_FILE_FORMAT_INVALID; // not supported inside cluster
-
- if ((cluster_stop >= 0) && ((pos + size) > cluster_stop))
- return E_FILE_FORMAT_INVALID;
-
- if (id == libwebm::kMkvBlockGroup)
- return 1; // have at least one entry
-
- if (id == libwebm::kMkvSimpleBlock)
- return 1; // have at least one entry
-
- pos += size; // consume payload
- if (cluster_stop >= 0 && pos > cluster_stop)
- return E_FILE_FORMAT_INVALID;
- }
-}
-
-long long Cluster::GetTimeCode() const {
- long long pos;
- long len;
-
- const long status = Load(pos, len);
-
- if (status < 0) // error
- return status;
-
- return m_timecode;
-}
-
-long long Cluster::GetTime() const {
- const long long tc = GetTimeCode();
-
- if (tc < 0)
- return tc;
-
- const SegmentInfo* const pInfo = m_pSegment->GetInfo();
- assert(pInfo);
-
- const long long scale = pInfo->GetTimeCodeScale();
- assert(scale >= 1);
-
- const long long t = m_timecode * scale;
-
- return t;
-}
-
-long long Cluster::GetFirstTime() const {
- const BlockEntry* pEntry;
-
- const long status = GetFirst(pEntry);
-
- if (status < 0) // error
- return status;
-
- if (pEntry == NULL) // empty cluster
- return GetTime();
-
- const Block* const pBlock = pEntry->GetBlock();
- assert(pBlock);
-
- return pBlock->GetTime(this);
-}
-
-long long Cluster::GetLastTime() const {
- const BlockEntry* pEntry;
-
- const long status = GetLast(pEntry);
-
- if (status < 0) // error
- return status;
-
- if (pEntry == NULL) // empty cluster
- return GetTime();
-
- const Block* const pBlock = pEntry->GetBlock();
- assert(pBlock);
-
- return pBlock->GetTime(this);
-}
-
-long Cluster::CreateBlock(long long id,
- long long pos, // absolute pos of payload
- long long size, long long discard_padding) {
- if (id != libwebm::kMkvBlockGroup && id != libwebm::kMkvSimpleBlock)
- return E_PARSE_FAILED;
-
- if (m_entries_count < 0) { // haven't parsed anything yet
- assert(m_entries == NULL);
- assert(m_entries_size == 0);
-
- m_entries_size = 1024;
- m_entries = new (std::nothrow) BlockEntry*[m_entries_size];
- if (m_entries == NULL)
- return -1;
-
- m_entries_count = 0;
- } else {
- assert(m_entries);
- assert(m_entries_size > 0);
- assert(m_entries_count <= m_entries_size);
-
- if (m_entries_count >= m_entries_size) {
- const long entries_size = 2 * m_entries_size;
-
- BlockEntry** const entries = new (std::nothrow) BlockEntry*[entries_size];
- if (entries == NULL)
- return -1;
-
- BlockEntry** src = m_entries;
- BlockEntry** const src_end = src + m_entries_count;
-
- BlockEntry** dst = entries;
-
- while (src != src_end)
- *dst++ = *src++;
-
- delete[] m_entries;
-
- m_entries = entries;
- m_entries_size = entries_size;
- }
- }
-
- if (id == libwebm::kMkvBlockGroup)
- return CreateBlockGroup(pos, size, discard_padding);
- else
- return CreateSimpleBlock(pos, size);
-}
-
-long Cluster::CreateBlockGroup(long long start_offset, long long size,
- long long discard_padding) {
- assert(m_entries);
- assert(m_entries_size > 0);
- assert(m_entries_count >= 0);
- assert(m_entries_count < m_entries_size);
-
- IMkvReader* const pReader = m_pSegment->m_pReader;
-
- long long pos = start_offset;
- const long long stop = start_offset + size;
-
- // For WebM files, there is a bias towards previous reference times
- //(in order to support alt-ref frames, which refer back to the previous
- // keyframe). Normally a 0 value is not possible, but here we tenatively
- // allow 0 as the value of a reference frame, with the interpretation
- // that this is a "previous" reference time.
-
- long long prev = 1; // nonce
- long long next = 0; // nonce
- long long duration = -1; // really, this is unsigned
-
- long long bpos = -1;
- long long bsize = -1;
-
- while (pos < stop) {
- long len;
- const long long id = ReadID(pReader, pos, len);
- if (id < 0 || (pos + len) > stop)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume ID
-
- const long long size = ReadUInt(pReader, pos, len);
- assert(size >= 0); // TODO
- assert((pos + len) <= stop);
-
- pos += len; // consume size
-
- if (id == libwebm::kMkvBlock) {
- if (bpos < 0) { // Block ID
- bpos = pos;
- bsize = size;
- }
- } else if (id == libwebm::kMkvBlockDuration) {
- if (size > 8)
- return E_FILE_FORMAT_INVALID;
-
- duration = UnserializeUInt(pReader, pos, size);
-
- if (duration < 0)
- return E_FILE_FORMAT_INVALID;
- } else if (id == libwebm::kMkvReferenceBlock) {
- if (size > 8 || size <= 0)
- return E_FILE_FORMAT_INVALID;
- const long size_ = static_cast<long>(size);
-
- long long time;
-
- long status = UnserializeInt(pReader, pos, size_, time);
- assert(status == 0);
- if (status != 0)
- return -1;
-
- if (time <= 0) // see note above
- prev = time;
- else
- next = time;
- }
-
- pos += size; // consume payload
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
- }
- if (bpos < 0)
- return E_FILE_FORMAT_INVALID;
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- assert(bsize >= 0);
-
- const long idx = m_entries_count;
-
- BlockEntry** const ppEntry = m_entries + idx;
- BlockEntry*& pEntry = *ppEntry;
-
- pEntry = new (std::nothrow)
- BlockGroup(this, idx, bpos, bsize, prev, next, duration, discard_padding);
-
- if (pEntry == NULL)
- return -1; // generic error
-
- BlockGroup* const p = static_cast<BlockGroup*>(pEntry);
-
- const long status = p->Parse();
-
- if (status == 0) { // success
- ++m_entries_count;
- return 0;
- }
-
- delete pEntry;
- pEntry = 0;
-
- return status;
-}
-
-long Cluster::CreateSimpleBlock(long long st, long long sz) {
- assert(m_entries);
- assert(m_entries_size > 0);
- assert(m_entries_count >= 0);
- assert(m_entries_count < m_entries_size);
-
- const long idx = m_entries_count;
-
- BlockEntry** const ppEntry = m_entries + idx;
- BlockEntry*& pEntry = *ppEntry;
-
- pEntry = new (std::nothrow) SimpleBlock(this, idx, st, sz);
-
- if (pEntry == NULL)
- return -1; // generic error
-
- SimpleBlock* const p = static_cast<SimpleBlock*>(pEntry);
-
- const long status = p->Parse();
-
- if (status == 0) {
- ++m_entries_count;
- return 0;
- }
-
- delete pEntry;
- pEntry = 0;
-
- return status;
-}
-
-long Cluster::GetFirst(const BlockEntry*& pFirst) const {
- if (m_entries_count <= 0) {
- long long pos;
- long len;
-
- const long status = Parse(pos, len);
-
- if (status < 0) { // error
- pFirst = NULL;
- return status;
- }
-
- if (m_entries_count <= 0) { // empty cluster
- pFirst = NULL;
- return 0;
- }
- }
-
- assert(m_entries);
-
- pFirst = m_entries[0];
- assert(pFirst);
-
- return 0; // success
-}
-
-long Cluster::GetLast(const BlockEntry*& pLast) const {
- for (;;) {
- long long pos;
- long len;
-
- const long status = Parse(pos, len);
-
- if (status < 0) { // error
- pLast = NULL;
- return status;
- }
-
- if (status > 0) // no new block
- break;
- }
-
- if (m_entries_count <= 0) {
- pLast = NULL;
- return 0;
- }
-
- assert(m_entries);
-
- const long idx = m_entries_count - 1;
-
- pLast = m_entries[idx];
- assert(pLast);
-
- return 0;
-}
-
-long Cluster::GetNext(const BlockEntry* pCurr, const BlockEntry*& pNext) const {
- assert(pCurr);
- assert(m_entries);
- assert(m_entries_count > 0);
-
- size_t idx = pCurr->GetIndex();
- assert(idx < size_t(m_entries_count));
- assert(m_entries[idx] == pCurr);
-
- ++idx;
-
- if (idx >= size_t(m_entries_count)) {
- long long pos;
- long len;
-
- const long status = Parse(pos, len);
-
- if (status < 0) { // error
- pNext = NULL;
- return status;
- }
-
- if (status > 0) {
- pNext = NULL;
- return 0;
- }
-
- assert(m_entries);
- assert(m_entries_count > 0);
- assert(idx < size_t(m_entries_count));
- }
-
- pNext = m_entries[idx];
- assert(pNext);
-
- return 0;
-}
-
-long Cluster::GetEntryCount() const { return m_entries_count; }
-
-const BlockEntry* Cluster::GetEntry(const Track* pTrack,
- long long time_ns) const {
- assert(pTrack);
-
- if (m_pSegment == NULL) // this is the special EOS cluster
- return pTrack->GetEOS();
-
- const BlockEntry* pResult = pTrack->GetEOS();
-
- long index = 0;
-
- for (;;) {
- if (index >= m_entries_count) {
- long long pos;
- long len;
-
- const long status = Parse(pos, len);
- assert(status >= 0);
-
- if (status > 0) // completely parsed, and no more entries
- return pResult;
-
- if (status < 0) // should never happen
- return 0;
-
- assert(m_entries);
- assert(index < m_entries_count);
- }
-
- const BlockEntry* const pEntry = m_entries[index];
- assert(pEntry);
- assert(!pEntry->EOS());
-
- const Block* const pBlock = pEntry->GetBlock();
- assert(pBlock);
-
- if (pBlock->GetTrackNumber() != pTrack->GetNumber()) {
- ++index;
- continue;
- }
-
- if (pTrack->VetEntry(pEntry)) {
- if (time_ns < 0) // just want first candidate block
- return pEntry;
-
- const long long ns = pBlock->GetTime(this);
-
- if (ns > time_ns)
- return pResult;
-
- pResult = pEntry; // have a candidate
- } else if (time_ns >= 0) {
- const long long ns = pBlock->GetTime(this);
-
- if (ns > time_ns)
- return pResult;
- }
-
- ++index;
- }
-}
-
-const BlockEntry* Cluster::GetEntry(const CuePoint& cp,
- const CuePoint::TrackPosition& tp) const {
- assert(m_pSegment);
- const long long tc = cp.GetTimeCode();
-
- if (tp.m_block > 0) {
- const long block = static_cast<long>(tp.m_block);
- const long index = block - 1;
-
- while (index >= m_entries_count) {
- long long pos;
- long len;
-
- const long status = Parse(pos, len);
-
- if (status < 0) // TODO: can this happen?
- return NULL;
-
- if (status > 0) // nothing remains to be parsed
- return NULL;
- }
-
- const BlockEntry* const pEntry = m_entries[index];
- assert(pEntry);
- assert(!pEntry->EOS());
-
- const Block* const pBlock = pEntry->GetBlock();
- assert(pBlock);
-
- if ((pBlock->GetTrackNumber() == tp.m_track) &&
- (pBlock->GetTimeCode(this) == tc)) {
- return pEntry;
- }
- }
-
- long index = 0;
-
- for (;;) {
- if (index >= m_entries_count) {
- long long pos;
- long len;
-
- const long status = Parse(pos, len);
-
- if (status < 0) // TODO: can this happen?
- return NULL;
-
- if (status > 0) // nothing remains to be parsed
- return NULL;
-
- assert(m_entries);
- assert(index < m_entries_count);
- }
-
- const BlockEntry* const pEntry = m_entries[index];
- assert(pEntry);
- assert(!pEntry->EOS());
-
- const Block* const pBlock = pEntry->GetBlock();
- assert(pBlock);
-
- if (pBlock->GetTrackNumber() != tp.m_track) {
- ++index;
- continue;
- }
-
- const long long tc_ = pBlock->GetTimeCode(this);
-
- if (tc_ < tc) {
- ++index;
- continue;
- }
-
- if (tc_ > tc)
- return NULL;
-
- const Tracks* const pTracks = m_pSegment->GetTracks();
- assert(pTracks);
-
- const long tn = static_cast<long>(tp.m_track);
- const Track* const pTrack = pTracks->GetTrackByNumber(tn);
-
- if (pTrack == NULL)
- return NULL;
-
- const long long type = pTrack->GetType();
-
- if (type == 2) // audio
- return pEntry;
-
- if (type != 1) // not video
- return NULL;
-
- if (!pBlock->IsKey())
- return NULL;
-
- return pEntry;
- }
-}
-
-BlockEntry::BlockEntry(Cluster* p, long idx) : m_pCluster(p), m_index(idx) {}
-BlockEntry::~BlockEntry() {}
-const Cluster* BlockEntry::GetCluster() const { return m_pCluster; }
-long BlockEntry::GetIndex() const { return m_index; }
-
-SimpleBlock::SimpleBlock(Cluster* pCluster, long idx, long long start,
- long long size)
- : BlockEntry(pCluster, idx), m_block(start, size, 0) {}
-
-long SimpleBlock::Parse() { return m_block.Parse(m_pCluster); }
-BlockEntry::Kind SimpleBlock::GetKind() const { return kBlockSimple; }
-const Block* SimpleBlock::GetBlock() const { return &m_block; }
-
-BlockGroup::BlockGroup(Cluster* pCluster, long idx, long long block_start,
- long long block_size, long long prev, long long next,
- long long duration, long long discard_padding)
- : BlockEntry(pCluster, idx),
- m_block(block_start, block_size, discard_padding),
- m_prev(prev),
- m_next(next),
- m_duration(duration) {}
-
-long BlockGroup::Parse() {
- const long status = m_block.Parse(m_pCluster);
-
- if (status)
- return status;
-
- m_block.SetKey((m_prev > 0) && (m_next <= 0));
-
- return 0;
-}
-
-BlockEntry::Kind BlockGroup::GetKind() const { return kBlockGroup; }
-const Block* BlockGroup::GetBlock() const { return &m_block; }
-long long BlockGroup::GetPrevTimeCode() const { return m_prev; }
-long long BlockGroup::GetNextTimeCode() const { return m_next; }
-long long BlockGroup::GetDurationTimeCode() const { return m_duration; }
-
-Block::Block(long long start, long long size_, long long discard_padding)
- : m_start(start),
- m_size(size_),
- m_track(0),
- m_timecode(-1),
- m_flags(0),
- m_frames(NULL),
- m_frame_count(-1),
- m_discard_padding(discard_padding) {}
-
-Block::~Block() { delete[] m_frames; }
-
-long Block::Parse(const Cluster* pCluster) {
- if (pCluster == NULL)
- return -1;
-
- if (pCluster->m_pSegment == NULL)
- return -1;
-
- assert(m_start >= 0);
- assert(m_size >= 0);
- assert(m_track <= 0);
- assert(m_frames == NULL);
- assert(m_frame_count <= 0);
-
- long long pos = m_start;
- const long long stop = m_start + m_size;
-
- long len;
-
- IMkvReader* const pReader = pCluster->m_pSegment->m_pReader;
-
- m_track = ReadUInt(pReader, pos, len);
-
- if (m_track <= 0)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > stop)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume track number
-
- if ((stop - pos) < 2)
- return E_FILE_FORMAT_INVALID;
-
- long status;
- long long value;
-
- status = UnserializeInt(pReader, pos, 2, value);
-
- if (status)
- return E_FILE_FORMAT_INVALID;
-
- if (value < SHRT_MIN)
- return E_FILE_FORMAT_INVALID;
-
- if (value > SHRT_MAX)
- return E_FILE_FORMAT_INVALID;
-
- m_timecode = static_cast<short>(value);
-
- pos += 2;
-
- if ((stop - pos) <= 0)
- return E_FILE_FORMAT_INVALID;
-
- status = pReader->Read(pos, 1, &m_flags);
-
- if (status)
- return E_FILE_FORMAT_INVALID;
-
- const int lacing = int(m_flags & 0x06) >> 1;
-
- ++pos; // consume flags byte
-
- if (lacing == 0) { // no lacing
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
-
- m_frame_count = 1;
- m_frames = new (std::nothrow) Frame[m_frame_count];
- if (m_frames == NULL)
- return -1;
-
- Frame& f = m_frames[0];
- f.pos = pos;
-
- const long long frame_size = stop - pos;
-
- if (frame_size > LONG_MAX || frame_size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- f.len = static_cast<long>(frame_size);
-
- return 0; // success
- }
-
- if (pos >= stop)
- return E_FILE_FORMAT_INVALID;
-
- unsigned char biased_count;
-
- status = pReader->Read(pos, 1, &biased_count);
-
- if (status)
- return E_FILE_FORMAT_INVALID;
-
- ++pos; // consume frame count
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
-
- m_frame_count = int(biased_count) + 1;
-
- m_frames = new (std::nothrow) Frame[m_frame_count];
- if (m_frames == NULL)
- return -1;
-
- if (!m_frames)
- return E_FILE_FORMAT_INVALID;
-
- if (lacing == 1) { // Xiph
- Frame* pf = m_frames;
- Frame* const pf_end = pf + m_frame_count;
-
- long long size = 0;
- int frame_count = m_frame_count;
-
- while (frame_count > 1) {
- long frame_size = 0;
-
- for (;;) {
- unsigned char val;
-
- if (pos >= stop)
- return E_FILE_FORMAT_INVALID;
-
- status = pReader->Read(pos, 1, &val);
-
- if (status)
- return E_FILE_FORMAT_INVALID;
-
- ++pos; // consume xiph size byte
-
- frame_size += val;
-
- if (val < 255)
- break;
- }
-
- Frame& f = *pf++;
- assert(pf < pf_end);
- if (pf >= pf_end)
- return E_FILE_FORMAT_INVALID;
-
- f.pos = 0; // patch later
-
- if (frame_size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- f.len = frame_size;
- size += frame_size; // contribution of this frame
-
- --frame_count;
- }
-
- if (pf >= pf_end || pos > stop)
- return E_FILE_FORMAT_INVALID;
-
- {
- Frame& f = *pf++;
-
- if (pf != pf_end)
- return E_FILE_FORMAT_INVALID;
-
- f.pos = 0; // patch later
-
- const long long total_size = stop - pos;
-
- if (total_size < size)
- return E_FILE_FORMAT_INVALID;
-
- const long long frame_size = total_size - size;
-
- if (frame_size > LONG_MAX || frame_size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- f.len = static_cast<long>(frame_size);
- }
-
- pf = m_frames;
- while (pf != pf_end) {
- Frame& f = *pf++;
- assert((pos + f.len) <= stop);
-
- if ((pos + f.len) > stop)
- return E_FILE_FORMAT_INVALID;
-
- f.pos = pos;
- pos += f.len;
- }
-
- assert(pos == stop);
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- } else if (lacing == 2) { // fixed-size lacing
- if (pos >= stop)
- return E_FILE_FORMAT_INVALID;
-
- const long long total_size = stop - pos;
-
- if ((total_size % m_frame_count) != 0)
- return E_FILE_FORMAT_INVALID;
-
- const long long frame_size = total_size / m_frame_count;
-
- if (frame_size > LONG_MAX || frame_size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- Frame* pf = m_frames;
- Frame* const pf_end = pf + m_frame_count;
-
- while (pf != pf_end) {
- assert((pos + frame_size) <= stop);
- if ((pos + frame_size) > stop)
- return E_FILE_FORMAT_INVALID;
-
- Frame& f = *pf++;
-
- f.pos = pos;
- f.len = static_cast<long>(frame_size);
-
- pos += frame_size;
- }
-
- assert(pos == stop);
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
-
- } else {
- assert(lacing == 3); // EBML lacing
-
- if (pos >= stop)
- return E_FILE_FORMAT_INVALID;
-
- long long size = 0;
- int frame_count = m_frame_count;
-
- long long frame_size = ReadUInt(pReader, pos, len);
-
- if (frame_size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- if (frame_size > LONG_MAX)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > stop)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume length of size of first frame
-
- if ((pos + frame_size) > stop)
- return E_FILE_FORMAT_INVALID;
-
- Frame* pf = m_frames;
- Frame* const pf_end = pf + m_frame_count;
-
- {
- Frame& curr = *pf;
-
- curr.pos = 0; // patch later
-
- curr.len = static_cast<long>(frame_size);
- size += curr.len; // contribution of this frame
- }
-
- --frame_count;
-
- while (frame_count > 1) {
- if (pos >= stop)
- return E_FILE_FORMAT_INVALID;
-
- assert(pf < pf_end);
- if (pf >= pf_end)
- return E_FILE_FORMAT_INVALID;
-
- const Frame& prev = *pf++;
- assert(prev.len == frame_size);
- if (prev.len != frame_size)
- return E_FILE_FORMAT_INVALID;
-
- assert(pf < pf_end);
- if (pf >= pf_end)
- return E_FILE_FORMAT_INVALID;
-
- Frame& curr = *pf;
-
- curr.pos = 0; // patch later
-
- const long long delta_size_ = ReadUInt(pReader, pos, len);
-
- if (delta_size_ < 0)
- return E_FILE_FORMAT_INVALID;
-
- if ((pos + len) > stop)
- return E_FILE_FORMAT_INVALID;
-
- pos += len; // consume length of (delta) size
- if (pos > stop)
- return E_FILE_FORMAT_INVALID;
-
- const long exp = 7 * len - 1;
- const long long bias = (1LL << exp) - 1LL;
- const long long delta_size = delta_size_ - bias;
-
- frame_size += delta_size;
-
- if (frame_size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- if (frame_size > LONG_MAX)
- return E_FILE_FORMAT_INVALID;
-
- curr.len = static_cast<long>(frame_size);
- // Check if size + curr.len could overflow.
- if (size > LLONG_MAX - curr.len) {
- return E_FILE_FORMAT_INVALID;
- }
- size += curr.len; // contribution of this frame
-
- --frame_count;
- }
-
- // parse last frame
- if (frame_count > 0) {
- if (pos > stop || pf >= pf_end)
- return E_FILE_FORMAT_INVALID;
-
- const Frame& prev = *pf++;
- assert(prev.len == frame_size);
- if (prev.len != frame_size)
- return E_FILE_FORMAT_INVALID;
-
- if (pf >= pf_end)
- return E_FILE_FORMAT_INVALID;
-
- Frame& curr = *pf++;
- if (pf != pf_end)
- return E_FILE_FORMAT_INVALID;
-
- curr.pos = 0; // patch later
-
- const long long total_size = stop - pos;
-
- if (total_size < size)
- return E_FILE_FORMAT_INVALID;
-
- frame_size = total_size - size;
-
- if (frame_size > LONG_MAX || frame_size <= 0)
- return E_FILE_FORMAT_INVALID;
-
- curr.len = static_cast<long>(frame_size);
- }
-
- pf = m_frames;
- while (pf != pf_end) {
- Frame& f = *pf++;
- if ((pos + f.len) > stop)
- return E_FILE_FORMAT_INVALID;
-
- f.pos = pos;
- pos += f.len;
- }
-
- if (pos != stop)
- return E_FILE_FORMAT_INVALID;
- }
-
- return 0; // success
-}
-
-long long Block::GetTimeCode(const Cluster* pCluster) const {
- if (pCluster == 0)
- return m_timecode;
-
- const long long tc0 = pCluster->GetTimeCode();
- assert(tc0 >= 0);
-
- // Check if tc0 + m_timecode would overflow.
- if (tc0 < 0 || LLONG_MAX - tc0 < m_timecode) {
- return -1;
- }
-
- const long long tc = tc0 + m_timecode;
-
- return tc; // unscaled timecode units
-}
-
-long long Block::GetTime(const Cluster* pCluster) const {
- assert(pCluster);
-
- const long long tc = GetTimeCode(pCluster);
-
- const Segment* const pSegment = pCluster->m_pSegment;
- const SegmentInfo* const pInfo = pSegment->GetInfo();
- assert(pInfo);
-
- const long long scale = pInfo->GetTimeCodeScale();
- assert(scale >= 1);
-
- // Check if tc * scale could overflow.
- if (tc != 0 && scale > LLONG_MAX / tc) {
- return -1;
- }
- const long long ns = tc * scale;
-
- return ns;
-}
-
-long long Block::GetTrackNumber() const { return m_track; }
-
-bool Block::IsKey() const {
- return ((m_flags & static_cast<unsigned char>(1 << 7)) != 0);
-}
-
-void Block::SetKey(bool bKey) {
- if (bKey)
- m_flags |= static_cast<unsigned char>(1 << 7);
- else
- m_flags &= 0x7F;
-}
-
-bool Block::IsInvisible() const { return bool(int(m_flags & 0x08) != 0); }
-
-Block::Lacing Block::GetLacing() const {
- const int value = int(m_flags & 0x06) >> 1;
- return static_cast<Lacing>(value);
-}
-
-int Block::GetFrameCount() const { return m_frame_count; }
-
-const Block::Frame& Block::GetFrame(int idx) const {
- assert(idx >= 0);
- assert(idx < m_frame_count);
-
- const Frame& f = m_frames[idx];
- assert(f.pos > 0);
- assert(f.len > 0);
-
- return f;
-}
-
-long Block::Frame::Read(IMkvReader* pReader, unsigned char* buf) const {
- assert(pReader);
- assert(buf);
-
- const long status = pReader->Read(pos, len, buf);
- return status;
-}
-
-long long Block::GetDiscardPadding() const { return m_discard_padding; }
-
-} // namespace mkvparser
diff --git a/thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.h b/thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.h
deleted file mode 100644
index 6dce7e50ba..0000000000
--- a/thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.h
+++ /dev/null
@@ -1,1145 +0,0 @@
-// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-#ifndef MKVPARSER_MKVPARSER_H_
-#define MKVPARSER_MKVPARSER_H_
-
-#include <cstddef>
-
-namespace mkvparser {
-
-const int E_PARSE_FAILED = -1;
-const int E_FILE_FORMAT_INVALID = -2;
-const int E_BUFFER_NOT_FULL = -3;
-
-class IMkvReader {
- public:
- virtual int Read(long long pos, long len, unsigned char* buf) = 0;
- virtual int Length(long long* total, long long* available) = 0;
-
- public:
- virtual ~IMkvReader();
-};
-
-template <typename Type>
-Type* SafeArrayAlloc(unsigned long long num_elements,
- unsigned long long element_size);
-long long GetUIntLength(IMkvReader*, long long, long&);
-long long ReadUInt(IMkvReader*, long long, long&);
-long long ReadID(IMkvReader* pReader, long long pos, long& len);
-long long UnserializeUInt(IMkvReader*, long long pos, long long size);
-
-long UnserializeFloat(IMkvReader*, long long pos, long long size, double&);
-long UnserializeInt(IMkvReader*, long long pos, long long size,
- long long& result);
-
-long UnserializeString(IMkvReader*, long long pos, long long size, char*& str);
-
-long ParseElementHeader(IMkvReader* pReader,
- long long& pos, // consume id and size fields
- long long stop, // if you know size of element's parent
- long long& id, long long& size);
-
-bool Match(IMkvReader*, long long&, unsigned long, long long&);
-bool Match(IMkvReader*, long long&, unsigned long, unsigned char*&, size_t&);
-
-void GetVersion(int& major, int& minor, int& build, int& revision);
-
-struct EBMLHeader {
- EBMLHeader();
- ~EBMLHeader();
- long long m_version;
- long long m_readVersion;
- long long m_maxIdLength;
- long long m_maxSizeLength;
- char* m_docType;
- long long m_docTypeVersion;
- long long m_docTypeReadVersion;
-
- long long Parse(IMkvReader*, long long&);
- void Init();
-};
-
-class Segment;
-class Track;
-class Cluster;
-
-class Block {
- Block(const Block&);
- Block& operator=(const Block&);
-
- public:
- const long long m_start;
- const long long m_size;
-
- Block(long long start, long long size, long long discard_padding);
- ~Block();
-
- long Parse(const Cluster*);
-
- long long GetTrackNumber() const;
- long long GetTimeCode(const Cluster*) const; // absolute, but not scaled
- long long GetTime(const Cluster*) const; // absolute, and scaled (ns)
- bool IsKey() const;
- void SetKey(bool);
- bool IsInvisible() const;
-
- enum Lacing { kLacingNone, kLacingXiph, kLacingFixed, kLacingEbml };
- Lacing GetLacing() const;
-
- int GetFrameCount() const; // to index frames: [0, count)
-
- struct Frame {
- long long pos; // absolute offset
- long len;
-
- long Read(IMkvReader*, unsigned char*) const;
- };
-
- const Frame& GetFrame(int frame_index) const;
-
- long long GetDiscardPadding() const;
-
- private:
- long long m_track; // Track::Number()
- short m_timecode; // relative to cluster
- unsigned char m_flags;
-
- Frame* m_frames;
- int m_frame_count;
-
- protected:
- const long long m_discard_padding;
-};
-
-class BlockEntry {
- BlockEntry(const BlockEntry&);
- BlockEntry& operator=(const BlockEntry&);
-
- protected:
- BlockEntry(Cluster*, long index);
-
- public:
- virtual ~BlockEntry();
-
- bool EOS() const { return (GetKind() == kBlockEOS); }
- const Cluster* GetCluster() const;
- long GetIndex() const;
- virtual const Block* GetBlock() const = 0;
-
- enum Kind { kBlockEOS, kBlockSimple, kBlockGroup };
- virtual Kind GetKind() const = 0;
-
- protected:
- Cluster* const m_pCluster;
- const long m_index;
-};
-
-class SimpleBlock : public BlockEntry {
- SimpleBlock(const SimpleBlock&);
- SimpleBlock& operator=(const SimpleBlock&);
-
- public:
- SimpleBlock(Cluster*, long index, long long start, long long size);
- long Parse();
-
- Kind GetKind() const;
- const Block* GetBlock() const;
-
- protected:
- Block m_block;
-};
-
-class BlockGroup : public BlockEntry {
- BlockGroup(const BlockGroup&);
- BlockGroup& operator=(const BlockGroup&);
-
- public:
- BlockGroup(Cluster*, long index,
- long long block_start, // absolute pos of block's payload
- long long block_size, // size of block's payload
- long long prev, long long next, long long duration,
- long long discard_padding);
-
- long Parse();
-
- Kind GetKind() const;
- const Block* GetBlock() const;
-
- long long GetPrevTimeCode() const; // relative to block's time
- long long GetNextTimeCode() const; // as above
- long long GetDurationTimeCode() const;
-
- private:
- Block m_block;
- const long long m_prev;
- const long long m_next;
- const long long m_duration;
-};
-
-///////////////////////////////////////////////////////////////
-// ContentEncoding element
-// Elements used to describe if the track data has been encrypted or
-// compressed with zlib or header stripping.
-class ContentEncoding {
- public:
- enum { kCTR = 1 };
-
- ContentEncoding();
- ~ContentEncoding();
-
- // ContentCompression element names
- struct ContentCompression {
- ContentCompression();
- ~ContentCompression();
-
- unsigned long long algo;
- unsigned char* settings;
- long long settings_len;
- };
-
- // ContentEncAESSettings element names
- struct ContentEncAESSettings {
- ContentEncAESSettings() : cipher_mode(kCTR) {}
- ~ContentEncAESSettings() {}
-
- unsigned long long cipher_mode;
- };
-
- // ContentEncryption element names
- struct ContentEncryption {
- ContentEncryption();
- ~ContentEncryption();
-
- unsigned long long algo;
- unsigned char* key_id;
- long long key_id_len;
- unsigned char* signature;
- long long signature_len;
- unsigned char* sig_key_id;
- long long sig_key_id_len;
- unsigned long long sig_algo;
- unsigned long long sig_hash_algo;
-
- ContentEncAESSettings aes_settings;
- };
-
- // Returns ContentCompression represented by |idx|. Returns NULL if |idx|
- // is out of bounds.
- const ContentCompression* GetCompressionByIndex(unsigned long idx) const;
-
- // Returns number of ContentCompression elements in this ContentEncoding
- // element.
- unsigned long GetCompressionCount() const;
-
- // Parses the ContentCompression element from |pReader|. |start| is the
- // starting offset of the ContentCompression payload. |size| is the size in
- // bytes of the ContentCompression payload. |compression| is where the parsed
- // values will be stored.
- long ParseCompressionEntry(long long start, long long size,
- IMkvReader* pReader,
- ContentCompression* compression);
-
- // Returns ContentEncryption represented by |idx|. Returns NULL if |idx|
- // is out of bounds.
- const ContentEncryption* GetEncryptionByIndex(unsigned long idx) const;
-
- // Returns number of ContentEncryption elements in this ContentEncoding
- // element.
- unsigned long GetEncryptionCount() const;
-
- // Parses the ContentEncAESSettings element from |pReader|. |start| is the
- // starting offset of the ContentEncAESSettings payload. |size| is the
- // size in bytes of the ContentEncAESSettings payload. |encryption| is
- // where the parsed values will be stored.
- long ParseContentEncAESSettingsEntry(long long start, long long size,
- IMkvReader* pReader,
- ContentEncAESSettings* aes);
-
- // Parses the ContentEncoding element from |pReader|. |start| is the
- // starting offset of the ContentEncoding payload. |size| is the size in
- // bytes of the ContentEncoding payload. Returns true on success.
- long ParseContentEncodingEntry(long long start, long long size,
- IMkvReader* pReader);
-
- // Parses the ContentEncryption element from |pReader|. |start| is the
- // starting offset of the ContentEncryption payload. |size| is the size in
- // bytes of the ContentEncryption payload. |encryption| is where the parsed
- // values will be stored.
- long ParseEncryptionEntry(long long start, long long size,
- IMkvReader* pReader, ContentEncryption* encryption);
-
- unsigned long long encoding_order() const { return encoding_order_; }
- unsigned long long encoding_scope() const { return encoding_scope_; }
- unsigned long long encoding_type() const { return encoding_type_; }
-
- private:
- // Member variables for list of ContentCompression elements.
- ContentCompression** compression_entries_;
- ContentCompression** compression_entries_end_;
-
- // Member variables for list of ContentEncryption elements.
- ContentEncryption** encryption_entries_;
- ContentEncryption** encryption_entries_end_;
-
- // ContentEncoding element names
- unsigned long long encoding_order_;
- unsigned long long encoding_scope_;
- unsigned long long encoding_type_;
-
- // LIBWEBM_DISALLOW_COPY_AND_ASSIGN(ContentEncoding);
- ContentEncoding(const ContentEncoding&);
- ContentEncoding& operator=(const ContentEncoding&);
-};
-
-class Track {
- Track(const Track&);
- Track& operator=(const Track&);
-
- public:
- class Info;
- static long Create(Segment*, const Info&, long long element_start,
- long long element_size, Track*&);
-
- enum Type { kVideo = 1, kAudio = 2, kSubtitle = 0x11, kMetadata = 0x21 };
-
- Segment* const m_pSegment;
- const long long m_element_start;
- const long long m_element_size;
- virtual ~Track();
-
- long GetType() const;
- long GetNumber() const;
- unsigned long long GetUid() const;
- const char* GetNameAsUTF8() const;
- const char* GetLanguage() const;
- const char* GetCodecNameAsUTF8() const;
- const char* GetCodecId() const;
- const unsigned char* GetCodecPrivate(size_t&) const;
- bool GetLacing() const;
- unsigned long long GetDefaultDuration() const;
- unsigned long long GetCodecDelay() const;
- unsigned long long GetSeekPreRoll() const;
-
- const BlockEntry* GetEOS() const;
-
- struct Settings {
- long long start;
- long long size;
- };
-
- class Info {
- public:
- Info();
- ~Info();
- int Copy(Info&) const;
- void Clear();
- long type;
- long number;
- unsigned long long uid;
- unsigned long long defaultDuration;
- unsigned long long codecDelay;
- unsigned long long seekPreRoll;
- char* nameAsUTF8;
- char* language;
- char* codecId;
- char* codecNameAsUTF8;
- unsigned char* codecPrivate;
- size_t codecPrivateSize;
- bool lacing;
- Settings settings;
-
- private:
- Info(const Info&);
- Info& operator=(const Info&);
- int CopyStr(char* Info::*str, Info&) const;
- };
-
- long GetFirst(const BlockEntry*&) const;
- long GetNext(const BlockEntry* pCurr, const BlockEntry*& pNext) const;
- virtual bool VetEntry(const BlockEntry*) const;
- virtual long Seek(long long time_ns, const BlockEntry*&) const;
-
- const ContentEncoding* GetContentEncodingByIndex(unsigned long idx) const;
- unsigned long GetContentEncodingCount() const;
-
- long ParseContentEncodingsEntry(long long start, long long size);
-
- protected:
- Track(Segment*, long long element_start, long long element_size);
-
- Info m_info;
-
- class EOSBlock : public BlockEntry {
- public:
- EOSBlock();
-
- Kind GetKind() const;
- const Block* GetBlock() const;
- };
-
- EOSBlock m_eos;
-
- private:
- ContentEncoding** content_encoding_entries_;
- ContentEncoding** content_encoding_entries_end_;
-};
-
-struct PrimaryChromaticity {
- PrimaryChromaticity() : x(0), y(0) {}
- ~PrimaryChromaticity() {}
- static bool Parse(IMkvReader* reader, long long read_pos,
- long long value_size, bool is_x,
- PrimaryChromaticity** chromaticity);
- float x;
- float y;
-};
-
-struct MasteringMetadata {
- static const float kValueNotPresent;
-
- MasteringMetadata()
- : r(NULL),
- g(NULL),
- b(NULL),
- white_point(NULL),
- luminance_max(kValueNotPresent),
- luminance_min(kValueNotPresent) {}
- ~MasteringMetadata() {
- delete r;
- delete g;
- delete b;
- delete white_point;
- }
-
- static bool Parse(IMkvReader* reader, long long element_start,
- long long element_size,
- MasteringMetadata** mastering_metadata);
-
- PrimaryChromaticity* r;
- PrimaryChromaticity* g;
- PrimaryChromaticity* b;
- PrimaryChromaticity* white_point;
- float luminance_max;
- float luminance_min;
-};
-
-struct Colour {
- static const long long kValueNotPresent;
-
- // Unless otherwise noted all values assigned upon construction are the
- // equivalent of unspecified/default.
- Colour()
- : matrix_coefficients(kValueNotPresent),
- bits_per_channel(kValueNotPresent),
- chroma_subsampling_horz(kValueNotPresent),
- chroma_subsampling_vert(kValueNotPresent),
- cb_subsampling_horz(kValueNotPresent),
- cb_subsampling_vert(kValueNotPresent),
- chroma_siting_horz(kValueNotPresent),
- chroma_siting_vert(kValueNotPresent),
- range(kValueNotPresent),
- transfer_characteristics(kValueNotPresent),
- primaries(kValueNotPresent),
- max_cll(kValueNotPresent),
- max_fall(kValueNotPresent),
- mastering_metadata(NULL) {}
- ~Colour() {
- delete mastering_metadata;
- mastering_metadata = NULL;
- }
-
- static bool Parse(IMkvReader* reader, long long element_start,
- long long element_size, Colour** colour);
-
- long long matrix_coefficients;
- long long bits_per_channel;
- long long chroma_subsampling_horz;
- long long chroma_subsampling_vert;
- long long cb_subsampling_horz;
- long long cb_subsampling_vert;
- long long chroma_siting_horz;
- long long chroma_siting_vert;
- long long range;
- long long transfer_characteristics;
- long long primaries;
- long long max_cll;
- long long max_fall;
-
- MasteringMetadata* mastering_metadata;
-};
-
-struct Projection {
- enum ProjectionType {
- kTypeNotPresent = -1,
- kRectangular = 0,
- kEquirectangular = 1,
- kCubeMap = 2,
- kMesh = 3,
- };
- static const float kValueNotPresent;
- Projection()
- : type(kTypeNotPresent),
- private_data(NULL),
- private_data_length(0),
- pose_yaw(kValueNotPresent),
- pose_pitch(kValueNotPresent),
- pose_roll(kValueNotPresent) {}
- ~Projection() { delete[] private_data; }
- static bool Parse(IMkvReader* reader, long long element_start,
- long long element_size, Projection** projection);
-
- ProjectionType type;
- unsigned char* private_data;
- size_t private_data_length;
- float pose_yaw;
- float pose_pitch;
- float pose_roll;
-};
-
-class VideoTrack : public Track {
- VideoTrack(const VideoTrack&);
- VideoTrack& operator=(const VideoTrack&);
-
- VideoTrack(Segment*, long long element_start, long long element_size);
-
- public:
- virtual ~VideoTrack();
- static long Parse(Segment*, const Info&, long long element_start,
- long long element_size, VideoTrack*&);
-
- long long GetWidth() const;
- long long GetHeight() const;
- long long GetDisplayWidth() const;
- long long GetDisplayHeight() const;
- long long GetDisplayUnit() const;
- long long GetStereoMode() const;
- double GetFrameRate() const;
-
- bool VetEntry(const BlockEntry*) const;
- long Seek(long long time_ns, const BlockEntry*&) const;
-
- Colour* GetColour() const;
-
- Projection* GetProjection() const;
-
- private:
- long long m_width;
- long long m_height;
- long long m_display_width;
- long long m_display_height;
- long long m_display_unit;
- long long m_stereo_mode;
-
- double m_rate;
-
- Colour* m_colour;
- Projection* m_projection;
-};
-
-class AudioTrack : public Track {
- AudioTrack(const AudioTrack&);
- AudioTrack& operator=(const AudioTrack&);
-
- AudioTrack(Segment*, long long element_start, long long element_size);
-
- public:
- static long Parse(Segment*, const Info&, long long element_start,
- long long element_size, AudioTrack*&);
-
- double GetSamplingRate() const;
- long long GetChannels() const;
- long long GetBitDepth() const;
-
- private:
- double m_rate;
- long long m_channels;
- long long m_bitDepth;
-};
-
-class Tracks {
- Tracks(const Tracks&);
- Tracks& operator=(const Tracks&);
-
- public:
- Segment* const m_pSegment;
- const long long m_start;
- const long long m_size;
- const long long m_element_start;
- const long long m_element_size;
-
- Tracks(Segment*, long long start, long long size, long long element_start,
- long long element_size);
-
- ~Tracks();
-
- long Parse();
-
- unsigned long GetTracksCount() const;
-
- const Track* GetTrackByNumber(long tn) const;
- const Track* GetTrackByIndex(unsigned long idx) const;
-
- private:
- Track** m_trackEntries;
- Track** m_trackEntriesEnd;
-
- long ParseTrackEntry(long long payload_start, long long payload_size,
- long long element_start, long long element_size,
- Track*&) const;
-};
-
-class Chapters {
- Chapters(const Chapters&);
- Chapters& operator=(const Chapters&);
-
- public:
- Segment* const m_pSegment;
- const long long m_start;
- const long long m_size;
- const long long m_element_start;
- const long long m_element_size;
-
- Chapters(Segment*, long long payload_start, long long payload_size,
- long long element_start, long long element_size);
-
- ~Chapters();
-
- long Parse();
-
- class Atom;
- class Edition;
-
- class Display {
- friend class Atom;
- Display();
- Display(const Display&);
- ~Display();
- Display& operator=(const Display&);
-
- public:
- const char* GetString() const;
- const char* GetLanguage() const;
- const char* GetCountry() const;
-
- private:
- void Init();
- void ShallowCopy(Display&) const;
- void Clear();
- long Parse(IMkvReader*, long long pos, long long size);
-
- char* m_string;
- char* m_language;
- char* m_country;
- };
-
- class Atom {
- friend class Edition;
- Atom();
- Atom(const Atom&);
- ~Atom();
- Atom& operator=(const Atom&);
-
- public:
- unsigned long long GetUID() const;
- const char* GetStringUID() const;
-
- long long GetStartTimecode() const;
- long long GetStopTimecode() const;
-
- long long GetStartTime(const Chapters*) const;
- long long GetStopTime(const Chapters*) const;
-
- int GetDisplayCount() const;
- const Display* GetDisplay(int index) const;
-
- private:
- void Init();
- void ShallowCopy(Atom&) const;
- void Clear();
- long Parse(IMkvReader*, long long pos, long long size);
- static long long GetTime(const Chapters*, long long timecode);
-
- long ParseDisplay(IMkvReader*, long long pos, long long size);
- bool ExpandDisplaysArray();
-
- char* m_string_uid;
- unsigned long long m_uid;
- long long m_start_timecode;
- long long m_stop_timecode;
-
- Display* m_displays;
- int m_displays_size;
- int m_displays_count;
- };
-
- class Edition {
- friend class Chapters;
- Edition();
- Edition(const Edition&);
- ~Edition();
- Edition& operator=(const Edition&);
-
- public:
- int GetAtomCount() const;
- const Atom* GetAtom(int index) const;
-
- private:
- void Init();
- void ShallowCopy(Edition&) const;
- void Clear();
- long Parse(IMkvReader*, long long pos, long long size);
-
- long ParseAtom(IMkvReader*, long long pos, long long size);
- bool ExpandAtomsArray();
-
- Atom* m_atoms;
- int m_atoms_size;
- int m_atoms_count;
- };
-
- int GetEditionCount() const;
- const Edition* GetEdition(int index) const;
-
- private:
- long ParseEdition(long long pos, long long size);
- bool ExpandEditionsArray();
-
- Edition* m_editions;
- int m_editions_size;
- int m_editions_count;
-};
-
-class Tags {
- Tags(const Tags&);
- Tags& operator=(const Tags&);
-
- public:
- Segment* const m_pSegment;
- const long long m_start;
- const long long m_size;
- const long long m_element_start;
- const long long m_element_size;
-
- Tags(Segment*, long long payload_start, long long payload_size,
- long long element_start, long long element_size);
-
- ~Tags();
-
- long Parse();
-
- class Tag;
- class SimpleTag;
-
- class SimpleTag {
- friend class Tag;
- SimpleTag();
- SimpleTag(const SimpleTag&);
- ~SimpleTag();
- SimpleTag& operator=(const SimpleTag&);
-
- public:
- const char* GetTagName() const;
- const char* GetTagString() const;
-
- private:
- void Init();
- void ShallowCopy(SimpleTag&) const;
- void Clear();
- long Parse(IMkvReader*, long long pos, long long size);
-
- char* m_tag_name;
- char* m_tag_string;
- };
-
- class Tag {
- friend class Tags;
- Tag();
- Tag(const Tag&);
- ~Tag();
- Tag& operator=(const Tag&);
-
- public:
- int GetSimpleTagCount() const;
- const SimpleTag* GetSimpleTag(int index) const;
-
- private:
- void Init();
- void ShallowCopy(Tag&) const;
- void Clear();
- long Parse(IMkvReader*, long long pos, long long size);
-
- long ParseSimpleTag(IMkvReader*, long long pos, long long size);
- bool ExpandSimpleTagsArray();
-
- SimpleTag* m_simple_tags;
- int m_simple_tags_size;
- int m_simple_tags_count;
- };
-
- int GetTagCount() const;
- const Tag* GetTag(int index) const;
-
- private:
- long ParseTag(long long pos, long long size);
- bool ExpandTagsArray();
-
- Tag* m_tags;
- int m_tags_size;
- int m_tags_count;
-};
-
-class SegmentInfo {
- SegmentInfo(const SegmentInfo&);
- SegmentInfo& operator=(const SegmentInfo&);
-
- public:
- Segment* const m_pSegment;
- const long long m_start;
- const long long m_size;
- const long long m_element_start;
- const long long m_element_size;
-
- SegmentInfo(Segment*, long long start, long long size,
- long long element_start, long long element_size);
-
- ~SegmentInfo();
-
- long Parse();
-
- long long GetTimeCodeScale() const;
- long long GetDuration() const; // scaled
- const char* GetMuxingAppAsUTF8() const;
- const char* GetWritingAppAsUTF8() const;
- const char* GetTitleAsUTF8() const;
-
- private:
- long long m_timecodeScale;
- double m_duration;
- char* m_pMuxingAppAsUTF8;
- char* m_pWritingAppAsUTF8;
- char* m_pTitleAsUTF8;
-};
-
-class SeekHead {
- SeekHead(const SeekHead&);
- SeekHead& operator=(const SeekHead&);
-
- public:
- Segment* const m_pSegment;
- const long long m_start;
- const long long m_size;
- const long long m_element_start;
- const long long m_element_size;
-
- SeekHead(Segment*, long long start, long long size, long long element_start,
- long long element_size);
-
- ~SeekHead();
-
- long Parse();
-
- struct Entry {
- Entry();
-
- // the SeekHead entry payload
- long long id;
- long long pos;
-
- // absolute pos of SeekEntry ID
- long long element_start;
-
- // SeekEntry ID size + size size + payload
- long long element_size;
- };
-
- int GetCount() const;
- const Entry* GetEntry(int idx) const;
-
- struct VoidElement {
- // absolute pos of Void ID
- long long element_start;
-
- // ID size + size size + payload size
- long long element_size;
- };
-
- int GetVoidElementCount() const;
- const VoidElement* GetVoidElement(int idx) const;
-
- private:
- Entry* m_entries;
- int m_entry_count;
-
- VoidElement* m_void_elements;
- int m_void_element_count;
-
- static bool ParseEntry(IMkvReader*,
- long long pos, // payload
- long long size, Entry*);
-};
-
-class Cues;
-class CuePoint {
- friend class Cues;
-
- CuePoint(long, long long);
- ~CuePoint();
-
- CuePoint(const CuePoint&);
- CuePoint& operator=(const CuePoint&);
-
- public:
- long long m_element_start;
- long long m_element_size;
-
- bool Load(IMkvReader*);
-
- long long GetTimeCode() const; // absolute but unscaled
- long long GetTime(const Segment*) const; // absolute and scaled (ns units)
-
- struct TrackPosition {
- long long m_track;
- long long m_pos; // of cluster
- long long m_block;
- // codec_state //defaults to 0
- // reference = clusters containing req'd referenced blocks
- // reftime = timecode of the referenced block
-
- bool Parse(IMkvReader*, long long, long long);
- };
-
- const TrackPosition* Find(const Track*) const;
-
- private:
- const long m_index;
- long long m_timecode;
- TrackPosition* m_track_positions;
- size_t m_track_positions_count;
-};
-
-class Cues {
- friend class Segment;
-
- Cues(Segment*, long long start, long long size, long long element_start,
- long long element_size);
- ~Cues();
-
- Cues(const Cues&);
- Cues& operator=(const Cues&);
-
- public:
- Segment* const m_pSegment;
- const long long m_start;
- const long long m_size;
- const long long m_element_start;
- const long long m_element_size;
-
- bool Find( // lower bound of time_ns
- long long time_ns, const Track*, const CuePoint*&,
- const CuePoint::TrackPosition*&) const;
-
- const CuePoint* GetFirst() const;
- const CuePoint* GetLast() const;
- const CuePoint* GetNext(const CuePoint*) const;
-
- const BlockEntry* GetBlock(const CuePoint*,
- const CuePoint::TrackPosition*) const;
-
- bool LoadCuePoint() const;
- long GetCount() const; // loaded only
- // long GetTotal() const; //loaded + preloaded
- bool DoneParsing() const;
-
- private:
- bool Init() const;
- bool PreloadCuePoint(long&, long long) const;
-
- mutable CuePoint** m_cue_points;
- mutable long m_count;
- mutable long m_preload_count;
- mutable long long m_pos;
-};
-
-class Cluster {
- friend class Segment;
-
- Cluster(const Cluster&);
- Cluster& operator=(const Cluster&);
-
- public:
- Segment* const m_pSegment;
-
- public:
- static Cluster* Create(Segment*,
- long index, // index in segment
- long long off); // offset relative to segment
- // long long element_size);
-
- Cluster(); // EndOfStream
- ~Cluster();
-
- bool EOS() const;
-
- long long GetTimeCode() const; // absolute, but not scaled
- long long GetTime() const; // absolute, and scaled (nanosecond units)
- long long GetFirstTime() const; // time (ns) of first (earliest) block
- long long GetLastTime() const; // time (ns) of last (latest) block
-
- long GetFirst(const BlockEntry*&) const;
- long GetLast(const BlockEntry*&) const;
- long GetNext(const BlockEntry* curr, const BlockEntry*& next) const;
-
- const BlockEntry* GetEntry(const Track*, long long ns = -1) const;
- const BlockEntry* GetEntry(const CuePoint&,
- const CuePoint::TrackPosition&) const;
- // const BlockEntry* GetMaxKey(const VideoTrack*) const;
-
- // static bool HasBlockEntries(const Segment*, long long);
-
- static long HasBlockEntries(const Segment*, long long idoff, long long& pos,
- long& size);
-
- long GetEntryCount() const;
-
- long Load(long long& pos, long& size) const;
-
- long Parse(long long& pos, long& size) const;
- long GetEntry(long index, const mkvparser::BlockEntry*&) const;
-
- protected:
- Cluster(Segment*, long index, long long element_start);
- // long long element_size);
-
- public:
- const long long m_element_start;
- long long GetPosition() const; // offset relative to segment
-
- long GetIndex() const;
- long long GetElementSize() const;
- // long long GetPayloadSize() const;
-
- // long long Unparsed() const;
-
- private:
- long m_index;
- mutable long long m_pos;
- // mutable long long m_size;
- mutable long long m_element_size;
- mutable long long m_timecode;
- mutable BlockEntry** m_entries;
- mutable long m_entries_size;
- mutable long m_entries_count;
-
- long ParseSimpleBlock(long long, long long&, long&);
- long ParseBlockGroup(long long, long long&, long&);
-
- long CreateBlock(long long id, long long pos, long long size,
- long long discard_padding);
- long CreateBlockGroup(long long start_offset, long long size,
- long long discard_padding);
- long CreateSimpleBlock(long long, long long);
-};
-
-class Segment {
- friend class Cues;
- friend class Track;
- friend class VideoTrack;
-
- Segment(const Segment&);
- Segment& operator=(const Segment&);
-
- private:
- Segment(IMkvReader*, long long elem_start,
- // long long elem_size,
- long long pos, long long size);
-
- public:
- IMkvReader* const m_pReader;
- const long long m_element_start;
- // const long long m_element_size;
- const long long m_start; // posn of segment payload
- const long long m_size; // size of segment payload
- Cluster m_eos; // TODO: make private?
-
- static long long CreateInstance(IMkvReader*, long long, Segment*&);
- ~Segment();
-
- long Load(); // loads headers and all clusters
-
- // for incremental loading
- // long long Unparsed() const;
- bool DoneParsing() const;
- long long ParseHeaders(); // stops when first cluster is found
- // long FindNextCluster(long long& pos, long& size) const;
- long LoadCluster(long long& pos, long& size); // load one cluster
- long LoadCluster();
-
- long ParseNext(const Cluster* pCurr, const Cluster*& pNext, long long& pos,
- long& size);
-
- const SeekHead* GetSeekHead() const;
- const Tracks* GetTracks() const;
- const SegmentInfo* GetInfo() const;
- const Cues* GetCues() const;
- const Chapters* GetChapters() const;
- const Tags* GetTags() const;
-
- long long GetDuration() const;
-
- unsigned long GetCount() const;
- const Cluster* GetFirst() const;
- const Cluster* GetLast() const;
- const Cluster* GetNext(const Cluster*);
-
- const Cluster* FindCluster(long long time_nanoseconds) const;
- // const BlockEntry* Seek(long long time_nanoseconds, const Track*) const;
-
- const Cluster* FindOrPreloadCluster(long long pos);
-
- long ParseCues(long long cues_off, // offset relative to start of segment
- long long& parse_pos, long& parse_len);
-
- private:
- long long m_pos; // absolute file posn; what has been consumed so far
- Cluster* m_pUnknownSize;
-
- SeekHead* m_pSeekHead;
- SegmentInfo* m_pInfo;
- Tracks* m_pTracks;
- Cues* m_pCues;
- Chapters* m_pChapters;
- Tags* m_pTags;
- Cluster** m_clusters;
- long m_clusterCount; // number of entries for which m_index >= 0
- long m_clusterPreloadCount; // number of entries for which m_index < 0
- long m_clusterSize; // array size
-
- long DoLoadCluster(long long&, long&);
- long DoLoadClusterUnknownSize(long long&, long&);
- long DoParseNext(const Cluster*&, long long&, long&);
-
- bool AppendCluster(Cluster*);
- bool PreloadCluster(Cluster*, ptrdiff_t);
-
- // void ParseSeekHead(long long pos, long long size);
- // void ParseSeekEntry(long long pos, long long size);
- // void ParseCues(long long);
-
- const BlockEntry* GetBlock(const CuePoint&, const CuePoint::TrackPosition&);
-};
-
-} // namespace mkvparser
-
-inline long mkvparser::Segment::LoadCluster() {
- long long pos;
- long size;
-
- return LoadCluster(pos, size);
-}
-
-#endif // MKVPARSER_MKVPARSER_H_
diff --git a/thirdparty/libvpx/AUTHORS b/thirdparty/libvpx/AUTHORS
deleted file mode 100644
index fcd5c534a8..0000000000
--- a/thirdparty/libvpx/AUTHORS
+++ /dev/null
@@ -1,142 +0,0 @@
-# This file is automatically generated from the git commit history
-# by tools/gen_authors.sh.
-
-Aaron Watry <awatry@gmail.com>
-Abo Talib Mahfoodh <ab.mahfoodh@gmail.com>
-Adam Xu <adam@xuyaowu.com>
-Adrian Grange <agrange@google.com>
-Aâ„“ex Converse <aconverse@google.com>
-Ahmad Sharif <asharif@google.com>
-Alexander Voronov <avoronov@graphics.cs.msu.ru>
-Alexis Ballier <aballier@gentoo.org>
-Alok Ahuja <waveletcoeff@gmail.com>
-Alpha Lam <hclam@google.com>
-A.Mahfoodh <ab.mahfoodh@gmail.com>
-Ami Fischman <fischman@chromium.org>
-Andoni Morales Alastruey <ylatuya@gmail.com>
-Andres Mejia <mcitadel@gmail.com>
-Andrew Russell <anrussell@google.com>
-Angie Chiang <angiebird@google.com>
-Aron Rosenberg <arosenberg@logitech.com>
-Attila Nagy <attilanagy@google.com>
-Brion Vibber <bvibber@wikimedia.org>
-changjun.yang <changjun.yang@intel.com>
-Charles 'Buck' Krasic <ckrasic@google.com>
-chm <chm@rock-chips.com>
-Christian Duvivier <cduvivier@google.com>
-Daniele Castagna <dcastagna@chromium.org>
-Daniel Kang <ddkang@google.com>
-Deb Mukherjee <debargha@google.com>
-Dim Temp <dimtemp0@gmail.com>
-Dmitry Kovalev <dkovalev@google.com>
-Dragan Mrdjan <dmrdjan@mips.com>
-Ed Baker <edward.baker@intel.com>
-Ehsan Akhgari <ehsan.akhgari@gmail.com>
-Erik Niemeyer <erik.a.niemeyer@intel.com>
-Fabio Pedretti <fabio.ped@libero.it>
-Frank Galligan <fgalligan@google.com>
-Fredrik Söderquist <fs@opera.com>
-Fritz Koenig <frkoenig@google.com>
-Gaute Strokkenes <gaute.strokkenes@broadcom.com>
-Geza Lore <gezalore@gmail.com>
-Ghislain MARY <ghislainmary2@gmail.com>
-Giuseppe Scrivano <gscrivano@gnu.org>
-Gordana Cmiljanovic <gordana.cmiljanovic@imgtec.com>
-Guillaume Martres <gmartres@google.com>
-Guillermo Ballester Valor <gbvalor@gmail.com>
-Hangyu Kuang <hkuang@google.com>
-Hanno Böck <hanno@hboeck.de>
-Henrik Lundin <hlundin@google.com>
-Hui Su <huisu@google.com>
-Ivan Maltz <ivanmaltz@google.com>
-Jacek Caban <cjacek@gmail.com>
-Jacky Chen <jackychen@google.com>
-James Berry <jamesberry@google.com>
-James Yu <james.yu@linaro.org>
-James Zern <jzern@google.com>
-Jan Gerber <j@mailb.org>
-Jan Kratochvil <jan.kratochvil@redhat.com>
-Janne Salonen <jsalonen@google.com>
-Jean-Yves Avenard <jyavenard@mozilla.com>
-Jeff Faust <jfaust@google.com>
-Jeff Muizelaar <jmuizelaar@mozilla.com>
-Jeff Petkau <jpet@chromium.org>
-Jia Jia <jia.jia@linaro.org>
-Jian Zhou <zhoujian@google.com>
-Jim Bankoski <jimbankoski@google.com>
-Jingning Han <jingning@google.com>
-Joey Parrish <joeyparrish@google.com>
-Johann Koenig <johannkoenig@google.com>
-John Koleszar <jkoleszar@google.com>
-Johnny Klonaris <google@jawknee.com>
-John Stark <jhnstrk@gmail.com>
-Joshua Bleecher Snyder <josh@treelinelabs.com>
-Joshua Litt <joshualitt@google.com>
-Julia Robson <juliamrobson@gmail.com>
-Justin Clift <justin@salasaga.org>
-Justin Lebar <justin.lebar@gmail.com>
-KO Myung-Hun <komh@chollian.net>
-Lawrence Velázquez <larryv@macports.org>
-Linfeng Zhang <linfengz@google.com>
-Lou Quillio <louquillio@google.com>
-Luca Barbato <lu_zero@gentoo.org>
-Makoto Kato <makoto.kt@gmail.com>
-Mans Rullgard <mans@mansr.com>
-Marco Paniconi <marpan@google.com>
-Mark Mentovai <mark@chromium.org>
-Martin Ettl <ettl.martin78@googlemail.com>
-Martin Storsjo <martin@martin.st>
-Matthew Heaney <matthewjheaney@chromium.org>
-Michael Kohler <michaelkohler@live.com>
-Mike Frysinger <vapier@chromium.org>
-Mike Hommey <mhommey@mozilla.com>
-Mikhal Shemer <mikhal@google.com>
-Minghai Shang <minghai@google.com>
-Morton Jonuschat <yabawock@gmail.com>
-Nico Weber <thakis@chromium.org>
-Parag Salasakar <img.mips1@gmail.com>
-Pascal Massimino <pascal.massimino@gmail.com>
-Patrik Westin <patrik.westin@gmail.com>
-Paul Wilkins <paulwilkins@google.com>
-Pavol Rusnak <stick@gk2.sk>
-Paweł Hajdan <phajdan@google.com>
-Pengchong Jin <pengchong@google.com>
-Peter de Rivaz <peter.derivaz@gmail.com>
-Philip Jägenstedt <philipj@opera.com>
-Priit Laes <plaes@plaes.org>
-Rafael Ãvila de Espíndola <rafael.espindola@gmail.com>
-Rafaël Carré <funman@videolan.org>
-Ralph Giles <giles@xiph.org>
-Rob Bradford <rob@linux.intel.com>
-Ronald S. Bultje <rsbultje@gmail.com>
-Rui Ueyama <ruiu@google.com>
-Sami Pietilä <samipietila@google.com>
-Sasi Inguva <isasi@google.com>
-Scott Graham <scottmg@chromium.org>
-Scott LaVarnway <slavarnway@google.com>
-Sean McGovern <gseanmcg@gmail.com>
-Sergey Kolomenkin <kolomenkin@gmail.com>
-Sergey Ulanov <sergeyu@chromium.org>
-Shimon Doodkin <helpmepro1@gmail.com>
-Shunyao Li <shunyaoli@google.com>
-Stefan Holmer <holmer@google.com>
-Suman Sunkara <sunkaras@google.com>
-Taekhyun Kim <takim@nvidia.com>
-Takanori MATSUURA <t.matsuu@gmail.com>
-Tamar Levy <tamar.levy@intel.com>
-Tao Bai <michaelbai@chromium.org>
-Tero Rintaluoma <teror@google.com>
-Thijs Vermeir <thijsvermeir@gmail.com>
-Tim Kopp <tkopp@google.com>
-Timothy B. Terriberry <tterribe@xiph.org>
-Tom Finegan <tomfinegan@google.com>
-Vignesh Venkatasubramanian <vigneshv@google.com>
-Yaowu Xu <yaowu@google.com>
-Yi Luo <luoyi@google.com>
-Yongzhe Wang <yongzhe@google.com>
-Yunqing Wang <yunqingwang@google.com>
-Yury Gitman <yuryg@google.com>
-Zoe Liu <zoeliu@google.com>
-Google Inc.
-The Mozilla Foundation
-The Xiph.Org Foundation
diff --git a/thirdparty/libvpx/CHANGELOG b/thirdparty/libvpx/CHANGELOG
deleted file mode 100644
index 795d395f96..0000000000
--- a/thirdparty/libvpx/CHANGELOG
+++ /dev/null
@@ -1,654 +0,0 @@
-2016-07-20 v1.6.0 "Khaki Campbell Duck"
- This release improves upon the VP9 encoder and speeds up the encoding and
- decoding processes.
-
- - Upgrading:
- This release is ABI incompatible with 1.5.0 due to a new 'color_range' enum
- in vpx_image and some minor changes to the VP8_COMP structure.
-
- The default key frame interval for VP9 has changed from 128 to 9999.
-
- - Enhancement:
- A core focus has been performance for low end Intel processors. SSSE3
- instructions such as 'pshufb' have been avoided and instructions have been
- reordered to better accommodate the more constrained pipelines.
-
- As a result, devices based on Celeron processors have seen substantial
- decoding improvements. From Indian Runner Duck to Javan Whistling Duck,
- decoding speed improved between 10 and 30%. Between Javan Whistling Duck
- and Khaki Campbell Duck, it improved another 10 to 15%.
-
- While Celeron benefited most, Core-i5 also improved 5% and 10% between the
- respective releases.
-
- Realtime performance for WebRTC for both speed and quality has received a
- lot of attention.
-
- - Bug Fixes:
- A number of fuzzing issues, found variously by Mozilla, Chromium and others,
- have been fixed and we strongly recommend updating.
-
-2015-11-09 v1.5.0 "Javan Whistling Duck"
- This release improves upon the VP9 encoder and speeds up the encoding and
- decoding processes.
-
- - Upgrading:
- This release is ABI incompatible with 1.4.0. It drops deprecated VP8
- controls and adds a variety of VP9 controls for testing.
-
- The vpxenc utility now prefers VP9 by default.
-
- - Enhancements:
- Faster VP9 encoding and decoding
- Smaller library size by combining functions used by VP8 and VP9
-
- - Bug Fixes:
- A variety of fuzzing issues
-
-2015-04-03 v1.4.0 "Indian Runner Duck"
- This release includes significant improvements to the VP9 codec.
-
- - Upgrading:
- This release is ABI incompatible with 1.3.0. It drops the compatibility
- layer, requiring VPX_IMG_FMT_* instead of IMG_FMT_*, and adds several codec
- controls for VP9.
-
- - Enhancements:
- Faster VP9 encoding and decoding
- Multithreaded VP9 decoding (tile and frame-based)
- Multithreaded VP9 encoding - on by default
- YUV 4:2:2 and 4:4:4 support in VP9
- 10 and 12bit support in VP9
- 64bit ARM support by replacing ARM assembly with intrinsics
-
- - Bug Fixes:
- Fixes a VP9 bitstream issue in Profile 1. This only affected non-YUV 4:2:0
- files.
-
- - Known Issues:
- Frame Parallel decoding fails for segmented and non-420 files.
-
-2013-11-15 v1.3.0 "Forest"
- This release introduces the VP9 codec in a backward-compatible way.
- All existing users of VP8 can continue to use the library without
- modification. However, some VP8 options do not map to VP9 in the same manner.
-
- The VP9 encoder in this release is not feature complete. Users interested in
- the encoder are advised to use the git master branch and discuss issues on
- libvpx mailing lists.
-
- - Upgrading:
- This release is ABI and API compatible with Duclair (v1.0.0). Users
- of older releases should refer to the Upgrading notes in this document
- for that release.
-
- - Enhancements:
- Get rid of bashisms in the main build scripts
- Added usage info on command line options
- Add lossless compression mode
- Dll build of libvpx
- Add additional Mac OS X targets: 10.7, 10.8 and 10.9 (darwin11-13)
- Add option to disable documentation
- configure: add --enable-external-build support
- make: support V=1 as short form of verbose=yes
- configure: support mingw-w64
- configure: support hardfloat armv7 CHOSTS
- configure: add support for android x86
- Add estimated completion time to vpxenc
- Don't exit on decode errors in vpxenc
- vpxenc: support scaling prior to encoding
- vpxdec: support scaling output
- vpxenc: improve progress indicators with --skip
- msvs: Don't link to winmm.lib
- Add a new script for producing vcxproj files
- Produce Visual Studio 10 and 11 project files
- Produce Windows Phone project files
- msvs-build: use msbuild for vs >= 2005
- configure: default configure log to config.log
- Add encoding option --static-thresh
-
- - Speed:
- Miscellaneous speed optimizations for VP8 and VP9.
-
- - Quality:
- In general, quality is consistent with the Eider release.
-
- - Bug Fixes:
- This release represents approximately a year of engineering effort,
- and contains multiple bug fixes. Please refer to git history for details.
-
-
-2012-12-21 v1.2.0
- This release acts as a checkpoint for a large amount of internal refactoring
- and testing. It also contains a number of small bugfixes, so all users are
- encouraged to upgrade.
-
- - Upgrading:
- This release is ABI and API compatible with Duclair (v1.0.0). Users
- of older releases should refer to the Upgrading notes in this
- document for that release.
-
- - Enhancements:
- VP8 optimizations for MIPS dspr2
- vpxenc: add -quiet option
-
- - Speed:
- Encoder and decoder speed is consistent with the Eider release.
-
- - Quality:
- In general, quality is consistent with the Eider release.
-
- Minor tweaks to ARNR filtering
- Minor improvements to real time encoding with multiple temporal layers
-
- - Bug Fixes:
- Fixes multithreaded encoder race condition in loopfilter
- Fixes multi-resolution threaded encoding
- Fix potential encoder dead-lock after picture resize
-
-
-2012-05-09 v1.1.0 "Eider"
- This introduces a number of enhancements, mostly focused on real-time
- encoding. In addition, it fixes a decoder bug (first introduced in
- Duclair) so all users of that release are encouraged to upgrade.
-
- - Upgrading:
- This release is ABI and API compatible with Duclair (v1.0.0). Users
- of older releases should refer to the Upgrading notes in this
- document for that release.
-
- This release introduces a new temporal denoiser, controlled by the
- VP8E_SET_NOISE_SENSITIVITY control. The temporal denoiser does not
- currently take a strength parameter, so the control is effectively
- a boolean - zero (off) or non-zero (on). For compatibility with
- existing applications, the values accepted are the same as those
- for the spatial denoiser (0-6). The temporal denoiser is enabled
- by default, and the older spatial denoiser may be restored by
- configuring with --disable-temporal-denoising. The temporal denoiser
- is more computationally intensive than the spatial one.
-
- This release removes support for a legacy, decode only API that was
- supported, but deprecated, at the initial release of libvpx
- (v0.9.0). This is not expected to have any impact. If you are
- impacted, you can apply a reversion to commit 2bf8fb58 locally.
- Please update to the latest libvpx API if you are affected.
-
- - Enhancements:
- Adds a motion compensated temporal denoiser to the encoder, which
- gives higher quality than the older spatial denoiser. (See above
- for notes on upgrading).
-
- In addition, support for new compilers and platforms were added,
- including:
- improved support for XCode
- Android x86 NDK build
- OS/2 support
- SunCC support
-
- Changing resolution with vpx_codec_enc_config_set() is now
- supported. Previously, reinitializing the codec was required to
- change the input resolution.
-
- The vpxenc application has initial support for producing multiple
- encodes from the same input in one call. Resizing is not yet
- supported, but varying other codec parameters is. Use -- to
- delineate output streams. Options persist from one stream to the
- next.
-
- Also, the vpxenc application will now use a keyframe interval of
- 5 seconds by default. Use the --kf-max-dist option to override.
-
- - Speed:
- Decoder performance improved 2.5% versus Duclair. Encoder speed is
- consistent with Duclair for most material. Two pass encoding of
- slideshow-like material will see significant improvements.
-
- Large realtime encoding speed gains at a small quality expense are
- possible by configuring the on-the-fly bitpacking experiment with
- --enable-onthefly-bitpacking. Realtime encoder can be up to 13%
- faster (ARM) depending on the number of threads and bitrate
- settings. This technique sees constant gain over the 5-16 speed
- range. For VC style input the loss seen is up to 0.2dB. See commit
- 52cf4dca for further details.
-
- - Quality:
- On the whole, quality is consistent with the Duclair release. Some
- tweaks:
-
- Reduced blockiness in easy sections by applying a penalty to
- intra modes.
-
- Improved quality of static sections (like slideshows) with
- two pass encoding.
-
- Improved keyframe sizing with multiple temporal layers
-
- - Bug Fixes:
- Corrected alt-ref contribution to frame rate for visible updates
- to the alt-ref buffer. This affected applications making manual
- usage of the frame reference flags, or temporal layers.
-
- Additional constraints were added to disable multi-frame quality
- enhancement (MFQE) in sections of the frame where there is motion.
- (#392)
-
- Fixed corruption issues when vpx_codec_enc_config_set() was called
- with spatial resampling enabled.
-
- Fixed a decoder error introduced in Duclair where the segmentation
- map was not being reinitialized on keyframes (#378)
-
-
-2012-01-27 v1.0.0 "Duclair"
- Our fourth named release, focused on performance and features related to
- real-time encoding. It also fixes a decoder crash bug introduced in
- v0.9.7, so all users of that release are encouraged to upgrade.
-
- - Upgrading:
- This release is ABI incompatible with prior releases of libvpx, so the
- "major" version number has been bumped to 1. You must recompile your
- applications against the latest version of the libvpx headers. The
- API remains compatible, and this should not require code changes in most
- applications.
-
- - Enhancements:
- This release introduces several substantial new features to the encoder,
- of particular interest to real time streaming applications.
-
- Temporal scalability allows the encoder to produce a stream that can
- be decimated to different frame rates, with independent rate targetting
- for each substream.
-
- Multiframe quality enhancement postprocessing can make visual quality
- more consistent in the presence of frames that are substantially
- different quality than the surrounding frames, as in the temporal
- scalability case and in some forced keyframe scenarios.
-
- Multiple-resolution encoding support allows the encoding of the
- same content at different resolutions faster than encoding them
- separately.
-
- - Speed:
- Optimization targets for this release included the decoder and the real-
- time modes of the encoder. Decoder speed on x86 has improved 10.5% with
- this release. Encoder improvements followed a curve where speeds 1-3
- improved 4.0%-1.5%, speeds 4-8 improved <1%, and speeds 9-16 improved
- 1.5% to 10.5%, respectively. "Best" mode speed is consistent with the
- Cayuga release.
-
- - Quality:
- Encoder quality in the single stream case is consistent with the Cayuga
- release.
-
- - Bug Fixes:
- This release fixes an OOB read decoder crash bug present in v0.9.7
- related to the clamping of motion vectors in SPLITMV blocks. This
- behavior could be triggered by corrupt input or by starting
- decoding from a P-frame.
-
-
-2011-08-15 v0.9.7-p1 "Cayuga" patch 1
- This is an incremental bugfix release against Cayuga. All users of that
- release are strongly encouraged to upgrade.
-
- - Fix potential OOB reads (cdae03a)
-
- An unbounded out of bounds read was discovered when the
- decoder was requested to perform error concealment (new in
- Cayuga) given a frame with corrupt partition sizes.
-
- A bounded out of bounds read was discovered affecting all
- versions of libvpx. Given an multipartition input frame that
- is truncated between the mode/mv partition and the first
- residiual paritition (in the block of partition offsets), up
- to 3 extra bytes could have been read from the source buffer.
- The code will not take any action regardless of the contents
- of these undefined bytes, as the truncated buffer is detected
- immediately following the read based on the calculated
- starting position of the coefficient partition.
-
- - Fix potential error concealment crash when the very first frame
- is missing or corrupt (a609be5)
-
- - Fix significant artifacts in error concealment (a4c2211, 99d870a)
-
- - Revert 1-pass CBR rate control changes (e961317)
- Further testing showed this change produced undesirable visual
- artifacts, rolling back for now.
-
-
-2011-08-02 v0.9.7 "Cayuga"
- Our third named release, focused on a faster, higher quality, encoder.
-
- - Upgrading:
- This release is backwards compatible with Aylesbury (v0.9.5) and
- Bali (v0.9.6). Users of older releases should refer to the Upgrading
- notes in this document for that release.
-
- - Enhancements:
- Stereo 3D format support for vpxenc
- Runtime detection of available processor cores.
- Allow specifying --end-usage by enum name
- vpxdec: test for frame corruption
- vpxenc: add quantizer histogram display
- vpxenc: add rate histogram display
- Set VPX_FRAME_IS_DROPPABLE
- update configure for ios sdk 4.3
- Avoid text relocations in ARM vp8 decoder
- Generate a vpx.pc file for pkg-config.
- New ways of passing encoded data between encoder and decoder.
-
- - Speed:
- This release includes across-the-board speed improvements to the
- encoder. On x86, these measure at approximately 11.5% in Best mode,
- 21.5% in Good mode (speed 0), and 22.5% in Realtime mode (speed 6).
- On ARM Cortex A9 with Neon extensions, real-time encoding of video
- telephony content is 35% faster than Bali on single core and 48%
- faster on multi-core. On the NVidia Tegra2 platform, real time
- encoding is 40% faster than Bali.
-
- Decoder speed was not a priority for this release, but improved
- approximately 8.4% on x86.
-
- Reduce motion vector search on alt-ref frame.
- Encoder loopfilter running in its own thread
- Reworked loopfilter to precalculate more parameters
- SSE2/SSSE3 optimizations for build_predictors_mbuv{,_s}().
- Make hor UV predict ~2x faster (73 vs 132 cycles) using SSSE3.
- Removed redundant checks
- Reduced structure sizes
- utilize preload in ARMv6 MC/LPF/Copy routines
- ARM optimized quantization, dfct, variance, subtract
- Increase chrow row alignment to 16 bytes.
- disable trellis optimization for first pass
- Write SSSE3 sub-pixel filter function
- Improve SSE2 half-pixel filter funtions
- Add vp8_sub_pixel_variance16x8_ssse3 function
- Reduce unnecessary distortion computation
- Use diamond search to replace full search
- Preload reference area in sub-pixel motion search (real-time mode)
-
- - Quality:
- This release focused primarily on one-pass use cases, including
- video conferencing. Low latency data rate control was significantly
- improved, improving streamability over bandwidth constrained links.
- Added support for error concealment, allowing frames to maintain
- visual quality in the presence of substantial packet loss.
-
- Add rc_max_intra_bitrate_pct control
- Limit size of initial keyframe in one-pass.
- Improve framerate adaptation
- Improved 1-pass CBR rate control
- Improved KF insertion after fades to still.
- Improved key frame detection.
- Improved activity masking (lower PSNR impact for same SSIM boost)
- Improved interaction between GF and ARFs
- Adding error-concealment to the decoder.
- Adding support for independent partitions
- Adjusted rate-distortion constants
-
-
- - Bug Fixes:
- Removed firstpass motion map
- Fix parallel make install
- Fix multithreaded encoding for 1 MB wide frame
- Fixed iwalsh_neon build problems with RVDS4.1
- Fix semaphore emulation, spin-wait intrinsics on Windows
- Fix build with xcode4 and simplify GLOBAL.
- Mark ARM asm objects as allowing a non-executable stack.
- Fix vpxenc encoding incorrect webm file header on big endian
-
-
-2011-03-07 v0.9.6 "Bali"
- Our second named release, focused on a faster, higher quality, encoder.
-
- - Upgrading:
- This release is backwards compatible with Aylesbury (v0.9.5). Users
- of older releases should refer to the Upgrading notes in this
- document for that release.
-
- - Enhancements:
- vpxenc --psnr shows a summary when encode completes
- --tune=ssim option to enable activity masking
- improved postproc visualizations for development
- updated support for Apple iOS to SDK 4.2
- query decoder to determine which reference frames were updated
- implemented error tracking in the decoder
- fix pipe support on windows
-
- - Speed:
- Primary focus was on good quality mode, speed 0. Average improvement
- on x86 about 40%, up to 100% on user-generated content at that speed.
- Best quality mode speed improved 35%, and realtime speed 10-20%. This
- release also saw significant improvement in realtime encoding speed
- on ARM platforms.
-
- Improved encoder threading
- Dont pick encoder filter level when loopfilter is disabled.
- Avoid double copying of key frames into alt and golden buffer
- FDCT optimizations.
- x86 sse2 temporal filter
- SSSE3 version of fast quantizer
- vp8_rd_pick_best_mbsegmentation code restructure
- Adjusted breakout RD for SPLITMV
- Changed segmentation check order
- Improved rd_pick_intra4x4block
- Adds armv6 optimized variance calculation
- ARMv6 optimized sad16x16
- ARMv6 optimized half pixel variance calculations
- Full search SAD function optimization in SSE4.1
- Improve MV prediction accuracy to achieve performance gain
- Improve MV prediction in vp8_pick_inter_mode() for speed>3
-
- - Quality:
- Best quality mode improved PSNR 6.3%, and SSIM 6.1%. This release
- also includes support for "activity masking," which greatly improves
- SSIM at the expense of PSNR. For now, this feature is available with
- the --tune=ssim option. Further experimentation in this area
- is ongoing. This release also introduces a new rate control mode
- called "CQ," which changes the allocation of bits within a clip to
- the sections where they will have the most visual impact.
-
- Tuning for the more exact quantizer.
- Relax rate control for last few frames
- CQ Mode
- Limit key frame quantizer for forced key frames.
- KF/GF Pulsing
- Add simple version of activity masking.
- make rdmult adaptive for intra in quantizer RDO
- cap the best quantizer for 2nd order DC
- change the threshold of DC check for encode breakout
-
- - Bug Fixes:
- Fix crash on Sparc Solaris.
- Fix counter of fixed keyframe distance
- ARNR filter pointer update bug fix
- Fixed use of motion percentage in KF/GF group calc
- Changed condition for using RD in Intra Mode
- Fix encoder real-time only configuration.
- Fix ARM encoder crash with multiple token partitions
- Fixed bug first cluster timecode of webm file is wrong.
- Fixed various encoder bugs with odd-sized images
- vp8e_get_preview fixed when spatial resampling enabled
- quantizer: fix assertion in fast quantizer path
- Allocate source buffers to be multiples of 16
- Fix for manual Golden frame frequency
- Fix drastic undershoot in long form content
-
-
-2010-10-28 v0.9.5 "Aylesbury"
- Our first named release, focused on a faster decoder, and a better encoder.
-
- - Upgrading:
- This release incorporates backwards-incompatible changes to the
- ivfenc and ivfdec tools. These tools are now called vpxenc and vpxdec.
-
- vpxdec
- * the -q (quiet) option has been removed, and replaced with
- -v (verbose). the output is quiet by default. Use -v to see
- the version number of the binary.
-
- * The default behavior is now to write output to a single file
- instead of individual frames. The -y option has been removed.
- Y4M output is the default.
-
- * For raw I420/YV12 output instead of Y4M, the --i420 or --yv12
- options must be specified.
-
- $ ivfdec -o OUTPUT INPUT
- $ vpxdec --i420 -o OUTPUT INPUT
-
- * If an output file is not specified, the default is to write
- Y4M to stdout. This makes piping more natural.
-
- $ ivfdec -y -o - INPUT | ...
- $ vpxdec INPUT | ...
-
- * The output file has additional flexibility for formatting the
- filename. It supports escape characters for constructing a
- filename from the width, height, and sequence number. This
- replaces the -p option. To get the equivalent:
-
- $ ivfdec -p frame INPUT
- $ vpxdec --i420 -o frame-%wx%h-%4.i420 INPUT
-
- vpxenc
- * The output file must be specified with -o, rather than as the
- last argument.
-
- $ ivfenc <options> INPUT OUTPUT
- $ vpxenc <options> -o OUTPUT INPUT
-
- * The output defaults to webm. To get IVF output, use the --ivf
- option.
-
- $ ivfenc <options> INPUT OUTPUT.ivf
- $ vpxenc <options> -o OUTPUT.ivf --ivf INPUT
-
-
- - Enhancements:
- ivfenc and ivfdec have been renamed to vpxenc, vpxdec.
- vpxdec supports .webm input
- vpxdec writes .y4m by default
- vpxenc writes .webm output by default
- vpxenc --psnr now shows the average/overall PSNR at the end
- ARM platforms now support runtime cpu detection
- vpxdec visualizations added for motion vectors, block modes, references
- vpxdec now silent by default
- vpxdec --progress shows frame-by-frame timing information
- vpxenc supports the distinction between --fps and --timebase
- NASM is now a supported assembler
- configure: enable PIC for shared libs by default
- configure: add --enable-small
- configure: support for ppc32-linux-gcc
- configure: support for sparc-solaris-gcc
-
- - Bugs:
- Improve handling of invalid frames
- Fix valgrind errors in the NEON loop filters.
- Fix loopfilter delta zero transitions
- Fix valgrind errors in vp8_sixtap_predict8x4_armv6().
- Build fixes for darwin-icc
-
- - Speed:
- 20-40% (average 28%) improvement in libvpx decoder speed,
- including:
- Rewrite vp8_short_walsh4x4_sse2()
- Optimizations on the loopfilters.
- Miscellaneous improvements for Atom
- Add 4-tap version of 2nd-pass ARMv6 MC filter.
- Improved multithread utilization
- Better instruction choices on x86
- reorder data to use wider instructions
- Update NEON wide idcts
- Make block access to frame buffer sequential
- Improved subset block search
- Bilinear subpixel optimizations for ssse3.
- Decrease memory footprint
-
- Encoder speed improvements (percentage gain not measured):
- Skip unnecessary search of identical frames
- Add SSE2 subtract functions
- Improve bounds checking in vp8_diamond_search_sadx4()
- Added vp8_fast_quantize_b_sse2
-
- - Quality:
- Over 7% overall PSNR improvement (6.3% SSIM) in "best" quality
- encoding mode, and up to 60% improvement on very noisy, still
- or slow moving source video
-
- Motion compensated temporal filter for Alt-Ref Noise Reduction
- Improved use of trellis quantization on 2nd order Y blocks
- Tune effect of motion on KF/GF boost in two pass
- Allow coefficient optimization for good quality speed 0.
- Improved control of active min quantizer for two pass.
- Enable ARFs for non-lagged compress
-
-2010-09-02 v0.9.2
- - Enhancements:
- Disable frame dropping by default
- Improved multithreaded performance
- Improved Force Key Frame Behaviour
- Increased rate control buffer level precision
- Fix bug in 1st pass motion compensation
- ivfenc: correct fixed kf interval, --disable-kf
- - Speed:
- Changed above and left context data layout
- Rework idct calling structure.
- Removed unnecessary MB_MODE_INFO copies
- x86: SSSE3 sixtap prediction
- Reworked IDCT to include reconstruction (add) step
- Swap alt/gold/new/last frame buffer ptrs instead of copying.
- Improve SSE2 loopfilter functions
- Change bitreader to use a larger window.
- Avoid loopfilter reinitialization when possible
- - Quality:
- Normalize quantizer's zero bin and rounding factors
- Add trellis quantization.
- Make the quantizer exact.
- Updates to ARNR filtering algorithm
- Fix breakout thresh computation for golden & AltRef frames
- Redo the forward 4x4 dct
- Improve the accuracy of forward walsh-hadamard transform
- Further adjustment of RD behaviour with Q and Zbin.
- - Build System:
- Allow linking of libs built with MinGW to MSVC
- Fix target auto-detection on mingw32
- Allow --cpu= to work for x86.
- configure: pass original arguments through to make dist
- Fix builds without runtime CPU detection
- msvs: fix install of codec sources
- msvs: Change devenv.com command line for better msys support
- msvs: Add vs9 targets.
- Add x86_64-linux-icc target
- - Bugs:
- Potential crashes on older MinGW builds
- Fix two-pass framrate for Y4M input.
- Fixed simple loop filter, other crashes on ARM v6
- arm: fix missing dependency with --enable-shared
- configure: support directories containing .o
- Replace pinsrw (SSE) with MMX instructions
- apple: include proper mach primatives
- Fixed rate control bug with long key frame interval.
- Fix DSO link errors on x86-64 when not using a version script
- Fixed buffer selection for UV in AltRef filtering
-
-
-2010-06-17 v0.9.1
- - Enhancements:
- * ivfenc/ivfdec now support YUV4MPEG2 input and pipe I/O
- * Speed optimizations
- - Bugfixes:
- * Rate control
- * Prevent out-of-bounds accesses on invalid data
- - Build system updates:
- * Detect toolchain to be used automatically for native builds
- * Support building shared libraries
- * Better autotools emulation (--prefix, --libdir, DESTDIR)
- - Updated LICENSE
- * http://webmproject.blogspot.com/2010/06/changes-to-webm-open-source-license.html
-
-
-2010-05-18 v0.9.0
- - Initial open source release. Welcome to WebM and VP8!
-
diff --git a/thirdparty/libvpx/LICENSE b/thirdparty/libvpx/LICENSE
deleted file mode 100644
index 1ce44343c4..0000000000
--- a/thirdparty/libvpx/LICENSE
+++ /dev/null
@@ -1,31 +0,0 @@
-Copyright (c) 2010, The WebM Project authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- * Neither the name of Google, nor the WebM Project, nor the names
- of its contributors may be used to endorse or promote products
- derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/thirdparty/libvpx/PATENTS b/thirdparty/libvpx/PATENTS
deleted file mode 100644
index caedf607e9..0000000000
--- a/thirdparty/libvpx/PATENTS
+++ /dev/null
@@ -1,23 +0,0 @@
-Additional IP Rights Grant (Patents)
-------------------------------------
-
-"These implementations" means the copyrightable works that implement the WebM
-codecs distributed by Google as part of the WebM Project.
-
-Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
-royalty-free, irrevocable (except as stated in this section) patent license to
-make, have made, use, offer to sell, sell, import, transfer, and otherwise
-run, modify and propagate the contents of these implementations of WebM, where
-such license applies only to those patent claims, both currently owned by
-Google and acquired in the future, licensable by Google that are necessarily
-infringed by these implementations of WebM. This grant does not include claims
-that would be infringed only as a consequence of further modification of these
-implementations. If you or your agent or exclusive licensee institute or order
-or agree to the institution of patent litigation or any other patent
-enforcement activity against any entity (including a cross-claim or
-counterclaim in a lawsuit) alleging that any of these implementations of WebM
-or any code incorporated within any of these implementations of WebM
-constitute direct or contributory patent infringement, or inducement of
-patent infringement, then any patent rights granted to you under this License
-for these implementations of WebM shall terminate as of the date such
-litigation is filed.
diff --git a/thirdparty/libvpx/rtcd/vp8_rtcd_arm.h b/thirdparty/libvpx/rtcd/vp8_rtcd_arm.h
deleted file mode 100644
index 5c9b7aa392..0000000000
--- a/thirdparty/libvpx/rtcd/vp8_rtcd_arm.h
+++ /dev/null
@@ -1,240 +0,0 @@
-#ifndef VP8_RTCD_H_
-#define VP8_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * VP8
- */
-
-struct blockd;
-struct loop_filter_info;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_bilinear_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict16x16_neon(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_bilinear_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c
-
-void vp8_bilinear_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict8x4_neon(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_bilinear_predict8x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_bilinear_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict8x8_neon(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_bilinear_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_clear_system_state_c();
-#define vp8_clear_system_state vp8_clear_system_state_c
-
-void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-void vp8_copy_mem16x16_neon(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_copy_mem16x16)(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-
-void vp8_copy_mem8x4_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-void vp8_copy_mem8x4_neon(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_copy_mem8x4)(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-
-void vp8_copy_mem8x8_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-void vp8_copy_mem8x8_neon(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_copy_mem8x8)(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-
-void vp8_dc_only_idct_add_c(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
-void vp8_dc_only_idct_add_neon(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
-RTCD_EXTERN void (*vp8_dc_only_idct_add)(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
-
-void vp8_dequant_idct_add_c(short *input, short *dq, unsigned char *output, int stride);
-void vp8_dequant_idct_add_neon(short *input, short *dq, unsigned char *output, int stride);
-RTCD_EXTERN void (*vp8_dequant_idct_add)(short *input, short *dq, unsigned char *output, int stride);
-
-void vp8_dequant_idct_add_uv_block_c(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
-void vp8_dequant_idct_add_uv_block_neon(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
-RTCD_EXTERN void (*vp8_dequant_idct_add_uv_block)(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
-
-void vp8_dequant_idct_add_y_block_c(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
-void vp8_dequant_idct_add_y_block_neon(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
-RTCD_EXTERN void (*vp8_dequant_idct_add_y_block)(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
-
-void vp8_dequantize_b_c(struct blockd*, short *dqc);
-void vp8_dequantize_b_neon(struct blockd*, short *dqc);
-RTCD_EXTERN void (*vp8_dequantize_b)(struct blockd*, short *dqc);
-
-void vp8_loop_filter_bh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_bh_neon(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-RTCD_EXTERN void (*vp8_loop_filter_bh)(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-
-void vp8_loop_filter_bv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_bv_neon(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-RTCD_EXTERN void (*vp8_loop_filter_bv)(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-
-void vp8_loop_filter_mbh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_mbh_neon(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-RTCD_EXTERN void (*vp8_loop_filter_mbh)(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-
-void vp8_loop_filter_mbv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_mbv_neon(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-RTCD_EXTERN void (*vp8_loop_filter_mbv)(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-
-void vp8_loop_filter_bhs_c(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_bhs_neon(unsigned char *y, int ystride, const unsigned char *blimit);
-RTCD_EXTERN void (*vp8_loop_filter_simple_bh)(unsigned char *y, int ystride, const unsigned char *blimit);
-
-void vp8_loop_filter_bvs_c(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_bvs_neon(unsigned char *y, int ystride, const unsigned char *blimit);
-RTCD_EXTERN void (*vp8_loop_filter_simple_bv)(unsigned char *y, int ystride, const unsigned char *blimit);
-
-void vp8_loop_filter_simple_horizontal_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_mbhs_neon(unsigned char *y, int ystride, const unsigned char *blimit);
-RTCD_EXTERN void (*vp8_loop_filter_simple_mbh)(unsigned char *y, int ystride, const unsigned char *blimit);
-
-void vp8_loop_filter_simple_vertical_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_mbvs_neon(unsigned char *y, int ystride, const unsigned char *blimit);
-RTCD_EXTERN void (*vp8_loop_filter_simple_mbv)(unsigned char *y, int ystride, const unsigned char *blimit);
-
-void vp8_short_idct4x4llm_c(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
-void vp8_short_idct4x4llm_neon(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
-RTCD_EXTERN void (*vp8_short_idct4x4llm)(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
-
-void vp8_short_inv_walsh4x4_c(short *input, short *output);
-void vp8_short_inv_walsh4x4_neon(short *input, short *output);
-RTCD_EXTERN void (*vp8_short_inv_walsh4x4)(short *input, short *output);
-
-void vp8_short_inv_walsh4x4_1_c(short *input, short *output);
-#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
-
-void vp8_sixtap_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict16x16_neon(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_sixtap_predict16x16)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_sixtap_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c
-
-void vp8_sixtap_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict8x4_neon(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_sixtap_predict8x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_sixtap_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict8x8_neon(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_rtcd(void);
-
-#ifdef RTCD_C
-#include "vpx_ports/arm.h"
-static void setup_rtcd_internal(void)
-{
- int flags = arm_cpu_caps();
-
- vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_neon;
-#endif
- vp8_bilinear_predict8x4 = vp8_bilinear_predict8x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_bilinear_predict8x4 = vp8_bilinear_predict8x4_neon;
-#endif
- vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_neon;
-#endif
- vp8_copy_mem16x16 = vp8_copy_mem16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_copy_mem16x16 = vp8_copy_mem16x16_neon;
-#endif
- vp8_copy_mem8x4 = vp8_copy_mem8x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_copy_mem8x4 = vp8_copy_mem8x4_neon;
-#endif
- vp8_copy_mem8x8 = vp8_copy_mem8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_copy_mem8x8 = vp8_copy_mem8x8_neon;
-#endif
- vp8_dc_only_idct_add = vp8_dc_only_idct_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_dc_only_idct_add = vp8_dc_only_idct_add_neon;
-#endif
- vp8_dequant_idct_add = vp8_dequant_idct_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_dequant_idct_add = vp8_dequant_idct_add_neon;
-#endif
- vp8_dequant_idct_add_uv_block = vp8_dequant_idct_add_uv_block_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_dequant_idct_add_uv_block = vp8_dequant_idct_add_uv_block_neon;
-#endif
- vp8_dequant_idct_add_y_block = vp8_dequant_idct_add_y_block_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_dequant_idct_add_y_block = vp8_dequant_idct_add_y_block_neon;
-#endif
- vp8_dequantize_b = vp8_dequantize_b_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_dequantize_b = vp8_dequantize_b_neon;
-#endif
- vp8_loop_filter_bh = vp8_loop_filter_bh_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_loop_filter_bh = vp8_loop_filter_bh_neon;
-#endif
- vp8_loop_filter_bv = vp8_loop_filter_bv_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_loop_filter_bv = vp8_loop_filter_bv_neon;
-#endif
- vp8_loop_filter_mbh = vp8_loop_filter_mbh_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_loop_filter_mbh = vp8_loop_filter_mbh_neon;
-#endif
- vp8_loop_filter_mbv = vp8_loop_filter_mbv_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_loop_filter_mbv = vp8_loop_filter_mbv_neon;
-#endif
- vp8_loop_filter_simple_bh = vp8_loop_filter_bhs_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_loop_filter_simple_bh = vp8_loop_filter_bhs_neon;
-#endif
- vp8_loop_filter_simple_bv = vp8_loop_filter_bvs_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_loop_filter_simple_bv = vp8_loop_filter_bvs_neon;
-#endif
- vp8_loop_filter_simple_mbh = vp8_loop_filter_simple_horizontal_edge_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_loop_filter_simple_mbh = vp8_loop_filter_mbhs_neon;
-#endif
- vp8_loop_filter_simple_mbv = vp8_loop_filter_simple_vertical_edge_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_loop_filter_simple_mbv = vp8_loop_filter_mbvs_neon;
-#endif
- vp8_short_idct4x4llm = vp8_short_idct4x4llm_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_short_idct4x4llm = vp8_short_idct4x4llm_neon;
-#endif
- vp8_short_inv_walsh4x4 = vp8_short_inv_walsh4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_short_inv_walsh4x4 = vp8_short_inv_walsh4x4_neon;
-#endif
- vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_neon;
-#endif
- vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_neon;
-#endif
- vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_neon;
-#endif
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/rtcd/vp8_rtcd_c.h b/thirdparty/libvpx/rtcd/vp8_rtcd_c.h
deleted file mode 100644
index d1657ac09d..0000000000
--- a/thirdparty/libvpx/rtcd/vp8_rtcd_c.h
+++ /dev/null
@@ -1,117 +0,0 @@
-#ifndef VP8_RTCD_H_
-#define VP8_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * VP8
- */
-
-struct blockd;
-struct loop_filter_info;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_bilinear_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_c
-
-void vp8_bilinear_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c
-
-void vp8_bilinear_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_c
-
-void vp8_bilinear_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_c
-
-void vp8_clear_system_state_c();
-#define vp8_clear_system_state vp8_clear_system_state_c
-
-void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-#define vp8_copy_mem16x16 vp8_copy_mem16x16_c
-
-void vp8_copy_mem8x4_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-#define vp8_copy_mem8x4 vp8_copy_mem8x4_c
-
-void vp8_copy_mem8x8_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-#define vp8_copy_mem8x8 vp8_copy_mem8x8_c
-
-void vp8_dc_only_idct_add_c(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
-#define vp8_dc_only_idct_add vp8_dc_only_idct_add_c
-
-void vp8_dequant_idct_add_c(short *input, short *dq, unsigned char *output, int stride);
-#define vp8_dequant_idct_add vp8_dequant_idct_add_c
-
-void vp8_dequant_idct_add_uv_block_c(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
-#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c
-
-void vp8_dequant_idct_add_y_block_c(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
-#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c
-
-void vp8_dequantize_b_c(struct blockd*, short *dqc);
-#define vp8_dequantize_b vp8_dequantize_b_c
-
-void vp8_loop_filter_bh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-#define vp8_loop_filter_bh vp8_loop_filter_bh_c
-
-void vp8_loop_filter_bv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-#define vp8_loop_filter_bv vp8_loop_filter_bv_c
-
-void vp8_loop_filter_mbh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-#define vp8_loop_filter_mbh vp8_loop_filter_mbh_c
-
-void vp8_loop_filter_mbv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-#define vp8_loop_filter_mbv vp8_loop_filter_mbv_c
-
-void vp8_loop_filter_bhs_c(unsigned char *y, int ystride, const unsigned char *blimit);
-#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_c
-
-void vp8_loop_filter_bvs_c(unsigned char *y, int ystride, const unsigned char *blimit);
-#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_c
-
-void vp8_loop_filter_simple_horizontal_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
-#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_c
-
-void vp8_loop_filter_simple_vertical_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
-#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_c
-
-void vp8_short_idct4x4llm_c(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
-#define vp8_short_idct4x4llm vp8_short_idct4x4llm_c
-
-void vp8_short_inv_walsh4x4_c(short *input, short *output);
-#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_c
-
-void vp8_short_inv_walsh4x4_1_c(short *input, short *output);
-#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
-
-void vp8_sixtap_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_c
-
-void vp8_sixtap_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c
-
-void vp8_sixtap_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_c
-
-void vp8_sixtap_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c
-
-void vp8_rtcd(void);
-
-#ifdef RTCD_C
-static void setup_rtcd_internal(void)
-{
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/rtcd/vp8_rtcd_x86.h b/thirdparty/libvpx/rtcd/vp8_rtcd_x86.h
deleted file mode 100644
index cbe1f47b2a..0000000000
--- a/thirdparty/libvpx/rtcd/vp8_rtcd_x86.h
+++ /dev/null
@@ -1,247 +0,0 @@
-#ifndef VP8_RTCD_H_
-#define VP8_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * VP8
- */
-
-struct blockd;
-struct loop_filter_info;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_bilinear_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict16x16_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict16x16_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict16x16_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_bilinear_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict4x4_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_bilinear_predict4x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_bilinear_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict8x4_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_bilinear_predict8x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_bilinear_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict8x8_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_bilinear_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_bilinear_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_clear_system_state_c();
-void vpx_reset_mmx_state();
-RTCD_EXTERN void (*vp8_clear_system_state)();
-
-void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-void vp8_copy_mem16x16_sse2(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_copy_mem16x16)(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-
-void vp8_copy_mem8x4_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-void vp8_copy_mem8x4_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_copy_mem8x4)(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-
-void vp8_copy_mem8x8_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-void vp8_copy_mem8x8_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_copy_mem8x8)(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
-
-void vp8_dc_only_idct_add_c(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
-void vp8_dc_only_idct_add_mmx(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
-RTCD_EXTERN void (*vp8_dc_only_idct_add)(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
-
-void vp8_dequant_idct_add_c(short *input, short *dq, unsigned char *output, int stride);
-void vp8_dequant_idct_add_mmx(short *input, short *dq, unsigned char *output, int stride);
-RTCD_EXTERN void (*vp8_dequant_idct_add)(short *input, short *dq, unsigned char *output, int stride);
-
-void vp8_dequant_idct_add_uv_block_c(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
-void vp8_dequant_idct_add_uv_block_mmx(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
-void vp8_dequant_idct_add_uv_block_sse2(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
-RTCD_EXTERN void (*vp8_dequant_idct_add_uv_block)(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
-
-void vp8_dequant_idct_add_y_block_c(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
-void vp8_dequant_idct_add_y_block_mmx(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
-void vp8_dequant_idct_add_y_block_sse2(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
-RTCD_EXTERN void (*vp8_dequant_idct_add_y_block)(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
-
-void vp8_dequantize_b_c(struct blockd*, short *dqc);
-void vp8_dequantize_b_mmx(struct blockd*, short *dqc);
-RTCD_EXTERN void (*vp8_dequantize_b)(struct blockd*, short *dqc);
-
-void vp8_loop_filter_bh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_bh_mmx(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_bh_sse2(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-RTCD_EXTERN void (*vp8_loop_filter_bh)(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-
-void vp8_loop_filter_bv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_bv_mmx(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_bv_sse2(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-RTCD_EXTERN void (*vp8_loop_filter_bv)(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-
-void vp8_loop_filter_mbh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_mbh_mmx(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_mbh_sse2(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-RTCD_EXTERN void (*vp8_loop_filter_mbh)(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-
-void vp8_loop_filter_mbv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_mbv_mmx(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-void vp8_loop_filter_mbv_sse2(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-RTCD_EXTERN void (*vp8_loop_filter_mbv)(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
-
-void vp8_loop_filter_bhs_c(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_bhs_mmx(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_bhs_sse2(unsigned char *y, int ystride, const unsigned char *blimit);
-RTCD_EXTERN void (*vp8_loop_filter_simple_bh)(unsigned char *y, int ystride, const unsigned char *blimit);
-
-void vp8_loop_filter_bvs_c(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_bvs_mmx(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_bvs_sse2(unsigned char *y, int ystride, const unsigned char *blimit);
-RTCD_EXTERN void (*vp8_loop_filter_simple_bv)(unsigned char *y, int ystride, const unsigned char *blimit);
-
-void vp8_loop_filter_simple_horizontal_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_simple_horizontal_edge_mmx(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_simple_horizontal_edge_sse2(unsigned char *y, int ystride, const unsigned char *blimit);
-RTCD_EXTERN void (*vp8_loop_filter_simple_mbh)(unsigned char *y, int ystride, const unsigned char *blimit);
-
-void vp8_loop_filter_simple_vertical_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_simple_vertical_edge_mmx(unsigned char *y, int ystride, const unsigned char *blimit);
-void vp8_loop_filter_simple_vertical_edge_sse2(unsigned char *y, int ystride, const unsigned char *blimit);
-RTCD_EXTERN void (*vp8_loop_filter_simple_mbv)(unsigned char *y, int ystride, const unsigned char *blimit);
-
-void vp8_short_idct4x4llm_c(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
-void vp8_short_idct4x4llm_mmx(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
-RTCD_EXTERN void (*vp8_short_idct4x4llm)(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
-
-void vp8_short_inv_walsh4x4_c(short *input, short *output);
-void vp8_short_inv_walsh4x4_mmx(short *input, short *output);
-void vp8_short_inv_walsh4x4_sse2(short *input, short *output);
-RTCD_EXTERN void (*vp8_short_inv_walsh4x4)(short *input, short *output);
-
-void vp8_short_inv_walsh4x4_1_c(short *input, short *output);
-#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
-
-void vp8_sixtap_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict16x16_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict16x16_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict16x16_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_sixtap_predict16x16)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_sixtap_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict4x4_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict4x4_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_sixtap_predict4x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_sixtap_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict8x4_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict8x4_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict8x4_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_sixtap_predict8x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_sixtap_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict8x8_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-void vp8_rtcd(void);
-
-#ifdef RTCD_C
-#include "vpx_ports/x86.h"
-static void setup_rtcd_internal(void)
-{
- int flags = x86_simd_caps();
-
- vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_c;
- if (flags & HAS_MMX) vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_mmx;
- if (flags & HAS_SSE2) vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_sse2;
- if (flags & HAS_SSSE3) vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_ssse3;
- vp8_bilinear_predict4x4 = vp8_bilinear_predict4x4_c;
- if (flags & HAS_MMX) vp8_bilinear_predict4x4 = vp8_bilinear_predict4x4_mmx;
- vp8_bilinear_predict8x4 = vp8_bilinear_predict8x4_c;
- if (flags & HAS_MMX) vp8_bilinear_predict8x4 = vp8_bilinear_predict8x4_mmx;
- vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_c;
- if (flags & HAS_MMX) vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_mmx;
- if (flags & HAS_SSE2) vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_sse2;
- if (flags & HAS_SSSE3) vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_ssse3;
- vp8_clear_system_state = vp8_clear_system_state_c;
- if (flags & HAS_MMX) vp8_clear_system_state = vpx_reset_mmx_state;
- vp8_copy_mem16x16 = vp8_copy_mem16x16_c;
- if (flags & HAS_MMX) vp8_copy_mem16x16 = vp8_copy_mem16x16_mmx;
- if (flags & HAS_SSE2) vp8_copy_mem16x16 = vp8_copy_mem16x16_sse2;
- vp8_copy_mem8x4 = vp8_copy_mem8x4_c;
- if (flags & HAS_MMX) vp8_copy_mem8x4 = vp8_copy_mem8x4_mmx;
- vp8_copy_mem8x8 = vp8_copy_mem8x8_c;
- if (flags & HAS_MMX) vp8_copy_mem8x8 = vp8_copy_mem8x8_mmx;
- vp8_dc_only_idct_add = vp8_dc_only_idct_add_c;
- if (flags & HAS_MMX) vp8_dc_only_idct_add = vp8_dc_only_idct_add_mmx;
- vp8_dequant_idct_add = vp8_dequant_idct_add_c;
- if (flags & HAS_MMX) vp8_dequant_idct_add = vp8_dequant_idct_add_mmx;
- vp8_dequant_idct_add_uv_block = vp8_dequant_idct_add_uv_block_c;
- if (flags & HAS_MMX) vp8_dequant_idct_add_uv_block = vp8_dequant_idct_add_uv_block_mmx;
- if (flags & HAS_SSE2) vp8_dequant_idct_add_uv_block = vp8_dequant_idct_add_uv_block_sse2;
- vp8_dequant_idct_add_y_block = vp8_dequant_idct_add_y_block_c;
- if (flags & HAS_MMX) vp8_dequant_idct_add_y_block = vp8_dequant_idct_add_y_block_mmx;
- if (flags & HAS_SSE2) vp8_dequant_idct_add_y_block = vp8_dequant_idct_add_y_block_sse2;
- vp8_dequantize_b = vp8_dequantize_b_c;
- if (flags & HAS_MMX) vp8_dequantize_b = vp8_dequantize_b_mmx;
- vp8_loop_filter_bh = vp8_loop_filter_bh_c;
- if (flags & HAS_MMX) vp8_loop_filter_bh = vp8_loop_filter_bh_mmx;
- if (flags & HAS_SSE2) vp8_loop_filter_bh = vp8_loop_filter_bh_sse2;
- vp8_loop_filter_bv = vp8_loop_filter_bv_c;
- if (flags & HAS_MMX) vp8_loop_filter_bv = vp8_loop_filter_bv_mmx;
- if (flags & HAS_SSE2) vp8_loop_filter_bv = vp8_loop_filter_bv_sse2;
- vp8_loop_filter_mbh = vp8_loop_filter_mbh_c;
- if (flags & HAS_MMX) vp8_loop_filter_mbh = vp8_loop_filter_mbh_mmx;
- if (flags & HAS_SSE2) vp8_loop_filter_mbh = vp8_loop_filter_mbh_sse2;
- vp8_loop_filter_mbv = vp8_loop_filter_mbv_c;
- if (flags & HAS_MMX) vp8_loop_filter_mbv = vp8_loop_filter_mbv_mmx;
- if (flags & HAS_SSE2) vp8_loop_filter_mbv = vp8_loop_filter_mbv_sse2;
- vp8_loop_filter_simple_bh = vp8_loop_filter_bhs_c;
- if (flags & HAS_MMX) vp8_loop_filter_simple_bh = vp8_loop_filter_bhs_mmx;
- if (flags & HAS_SSE2) vp8_loop_filter_simple_bh = vp8_loop_filter_bhs_sse2;
- vp8_loop_filter_simple_bv = vp8_loop_filter_bvs_c;
- if (flags & HAS_MMX) vp8_loop_filter_simple_bv = vp8_loop_filter_bvs_mmx;
- if (flags & HAS_SSE2) vp8_loop_filter_simple_bv = vp8_loop_filter_bvs_sse2;
- vp8_loop_filter_simple_mbh = vp8_loop_filter_simple_horizontal_edge_c;
- if (flags & HAS_MMX) vp8_loop_filter_simple_mbh = vp8_loop_filter_simple_horizontal_edge_mmx;
- if (flags & HAS_SSE2) vp8_loop_filter_simple_mbh = vp8_loop_filter_simple_horizontal_edge_sse2;
- vp8_loop_filter_simple_mbv = vp8_loop_filter_simple_vertical_edge_c;
- if (flags & HAS_MMX) vp8_loop_filter_simple_mbv = vp8_loop_filter_simple_vertical_edge_mmx;
- if (flags & HAS_SSE2) vp8_loop_filter_simple_mbv = vp8_loop_filter_simple_vertical_edge_sse2;
- vp8_short_idct4x4llm = vp8_short_idct4x4llm_c;
- if (flags & HAS_MMX) vp8_short_idct4x4llm = vp8_short_idct4x4llm_mmx;
- vp8_short_inv_walsh4x4 = vp8_short_inv_walsh4x4_c;
- if (flags & HAS_MMX) vp8_short_inv_walsh4x4 = vp8_short_inv_walsh4x4_mmx;
- if (flags & HAS_SSE2) vp8_short_inv_walsh4x4 = vp8_short_inv_walsh4x4_sse2;
- vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_c;
- if (flags & HAS_MMX) vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_mmx;
- if (flags & HAS_SSE2) vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_sse2;
- if (flags & HAS_SSSE3) vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_ssse3;
- vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_c;
- if (flags & HAS_MMX) vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_mmx;
- if (flags & HAS_SSSE3) vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_ssse3;
- vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_c;
- if (flags & HAS_MMX) vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_mmx;
- if (flags & HAS_SSE2) vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_sse2;
- if (flags & HAS_SSSE3) vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_ssse3;
- vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_c;
- if (flags & HAS_MMX) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_mmx;
- if (flags & HAS_SSE2) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
- if (flags & HAS_SSSE3) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/rtcd/vp9_rtcd_arm.h b/thirdparty/libvpx/rtcd/vp9_rtcd_arm.h
deleted file mode 100644
index afdc7e179e..0000000000
--- a/thirdparty/libvpx/rtcd/vp9_rtcd_arm.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef VP9_RTCD_H_
-#define VP9_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * VP9
- */
-
-#include "vp9/common/vp9_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp9_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
-#define vp9_iht16x16_256_add vp9_iht16x16_256_add_c
-
-void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-void vp9_iht4x4_16_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-RTCD_EXTERN void (*vp9_iht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-
-void vp9_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-void vp9_iht8x8_64_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-RTCD_EXTERN void (*vp9_iht8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-
-void vp9_rtcd(void);
-
-#ifdef RTCD_C
-#include "vpx_ports/arm.h"
-static void setup_rtcd_internal(void)
-{
- int flags = arm_cpu_caps();
-
- vp9_iht4x4_16_add = vp9_iht4x4_16_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp9_iht4x4_16_add = vp9_iht4x4_16_add_neon;
-#endif
- vp9_iht8x8_64_add = vp9_iht8x8_64_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vp9_iht8x8_64_add = vp9_iht8x8_64_add_neon;
-#endif
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/rtcd/vp9_rtcd_c.h b/thirdparty/libvpx/rtcd/vp9_rtcd_c.h
deleted file mode 100644
index 329cb9d04c..0000000000
--- a/thirdparty/libvpx/rtcd/vp9_rtcd_c.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef VP9_RTCD_H_
-#define VP9_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * VP9
- */
-
-#include "vp9/common/vp9_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp9_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
-#define vp9_iht16x16_256_add vp9_iht16x16_256_add_c
-
-void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-#define vp9_iht4x4_16_add vp9_iht4x4_16_add_c
-
-void vp9_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-#define vp9_iht8x8_64_add vp9_iht8x8_64_add_c
-
-void vp9_rtcd(void);
-
-#ifdef RTCD_C
-static void setup_rtcd_internal(void)
-{
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/rtcd/vp9_rtcd_x86.h b/thirdparty/libvpx/rtcd/vp9_rtcd_x86.h
deleted file mode 100644
index 8ce8067674..0000000000
--- a/thirdparty/libvpx/rtcd/vp9_rtcd_x86.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef VP9_RTCD_H_
-#define VP9_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * VP9
- */
-
-#include "vp9/common/vp9_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp9_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
-void vp9_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
-RTCD_EXTERN void (*vp9_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
-
-void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-void vp9_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-RTCD_EXTERN void (*vp9_iht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-
-void vp9_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-void vp9_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-RTCD_EXTERN void (*vp9_iht8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
-
-void vp9_rtcd(void);
-
-#ifdef RTCD_C
-#include "vpx_ports/x86.h"
-static void setup_rtcd_internal(void)
-{
- int flags = x86_simd_caps();
-
- vp9_iht16x16_256_add = vp9_iht16x16_256_add_c;
- if (flags & HAS_SSE2) vp9_iht16x16_256_add = vp9_iht16x16_256_add_sse2;
-
- vp9_iht4x4_16_add = vp9_iht4x4_16_add_c;
- if (flags & HAS_SSE2) vp9_iht4x4_16_add = vp9_iht4x4_16_add_sse2;
-
- vp9_iht8x8_64_add = vp9_iht8x8_64_add_c;
- if (flags & HAS_SSE2) vp9_iht8x8_64_add = vp9_iht8x8_64_add_sse2;
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_arm.h b/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_arm.h
deleted file mode 100644
index df42f3d24a..0000000000
--- a/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_arm.h
+++ /dev/null
@@ -1,678 +0,0 @@
-#ifndef VPX_DSP_RTCD_H_
-#define VPX_DSP_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * DSP
- */
-
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vpx_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_horiz_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_avg_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_vert_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_horiz_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_vert_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve_avg_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve_copy_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve_copy)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c
-
-void vpx_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c
-
-void vpx_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c
-
-void vpx_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c
-
-void vpx_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c
-
-void vpx_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c
-
-void vpx_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d135_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d135_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c
-
-void vpx_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d153_predictor_16x16 vpx_d153_predictor_16x16_c
-
-void vpx_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d153_predictor_32x32 vpx_d153_predictor_32x32_c
-
-void vpx_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d153_predictor_4x4 vpx_d153_predictor_4x4_c
-
-void vpx_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d153_predictor_8x8 vpx_d153_predictor_8x8_c
-
-void vpx_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207_predictor_16x16 vpx_d207_predictor_16x16_c
-
-void vpx_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207_predictor_32x32 vpx_d207_predictor_32x32_c
-
-void vpx_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_c
-
-void vpx_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207_predictor_8x8 vpx_d207_predictor_8x8_c
-
-void vpx_d207e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_16x16 vpx_d207e_predictor_16x16_c
-
-void vpx_d207e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_32x32 vpx_d207e_predictor_32x32_c
-
-void vpx_d207e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_4x4 vpx_d207e_predictor_4x4_c
-
-void vpx_d207e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_8x8 vpx_d207e_predictor_8x8_c
-
-void vpx_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d45_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d45_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45_predictor_32x32 vpx_d45_predictor_32x32_c
-
-void vpx_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d45_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d45_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d45_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d45_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d45e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_16x16 vpx_d45e_predictor_16x16_c
-
-void vpx_d45e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_32x32 vpx_d45e_predictor_32x32_c
-
-void vpx_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c
-
-void vpx_d45e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_8x8 vpx_d45e_predictor_8x8_c
-
-void vpx_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63_predictor_16x16 vpx_d63_predictor_16x16_c
-
-void vpx_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63_predictor_32x32 vpx_d63_predictor_32x32_c
-
-void vpx_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63_predictor_4x4 vpx_d63_predictor_4x4_c
-
-void vpx_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63_predictor_8x8 vpx_d63_predictor_8x8_c
-
-void vpx_d63e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_16x16 vpx_d63e_predictor_16x16_c
-
-void vpx_d63e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_32x32 vpx_d63e_predictor_32x32_c
-
-void vpx_d63e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c
-
-void vpx_d63e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_8x8 vpx_d63e_predictor_8x8_c
-
-void vpx_d63f_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63f_predictor_4x4 vpx_d63f_predictor_4x4_c
-
-void vpx_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_128_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_128_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_128_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_128_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_128_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_128_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_128_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_128_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_left_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_left_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_left_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_left_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_left_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_left_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_left_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_left_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_top_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_top_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_top_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_top_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_top_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_top_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_top_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_top_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_h_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_h_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_h_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_h_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_h_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_h_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_h_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_h_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_he_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c
-
-void vpx_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct16x16_10_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct16x16_10_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct16x16_1_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct16x16_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct16x16_256_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct16x16_256_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct32x32_1024_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct32x32_1024_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct32x32_1024_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct32x32_135_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct32x32_1_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct32x32_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct32x32_1024_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct32x32_34_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct4x4_16_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct4x4_1_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct4x4_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct8x8_12_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct8x8_12_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct8x8_12_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct8x8_1_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct8x8_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct8x8_64_add_neon(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_c
-
-void vpx_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c
-
-void vpx_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_horizontal_4_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_horizontal_4)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-void vpx_lpf_horizontal_4_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-RTCD_EXTERN void (*vpx_lpf_horizontal_4_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-
-void vpx_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_horizontal_8_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_horizontal_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-void vpx_lpf_horizontal_8_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-RTCD_EXTERN void (*vpx_lpf_horizontal_8_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-
-void vpx_lpf_horizontal_edge_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_horizontal_edge_16_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_horizontal_edge_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_horizontal_edge_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_horizontal_edge_8_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_horizontal_edge_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_vertical_16_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_vertical_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_vertical_16_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_vertical_16_dual)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_vertical_4_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_vertical_4)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-void vpx_lpf_vertical_4_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-RTCD_EXTERN void (*vpx_lpf_vertical_4_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-
-void vpx_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_vertical_8_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_vertical_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-void vpx_lpf_vertical_8_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-RTCD_EXTERN void (*vpx_lpf_vertical_8_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-
-void vpx_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_2d vpx_scaled_2d_c
-
-void vpx_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c
-
-void vpx_scaled_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c
-
-void vpx_scaled_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c
-
-void vpx_scaled_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_horiz vpx_scaled_horiz_c
-
-void vpx_scaled_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_vert vpx_scaled_vert_c
-
-void vpx_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_tm_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_tm_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_tm_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_tm_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_tm_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_tm_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_tm_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_tm_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_v_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_v_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_v_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_v_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_v_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_v_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_v_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_v_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_ve_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c
-
-void vpx_dsp_rtcd(void);
-
-#ifdef RTCD_C
-#include "vpx_ports/arm.h"
-static void setup_rtcd_internal(void)
-{
- int flags = arm_cpu_caps();
-
- vpx_convolve8 = vpx_convolve8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_convolve8 = vpx_convolve8_neon;
-#endif
- vpx_convolve8_avg = vpx_convolve8_avg_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_convolve8_avg = vpx_convolve8_avg_neon;
-#endif
- vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_neon;
-#endif
- vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_neon;
-#endif
- vpx_convolve8_horiz = vpx_convolve8_horiz_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_convolve8_horiz = vpx_convolve8_horiz_neon;
-#endif
- vpx_convolve8_vert = vpx_convolve8_vert_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_convolve8_vert = vpx_convolve8_vert_neon;
-#endif
- vpx_convolve_avg = vpx_convolve_avg_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_convolve_avg = vpx_convolve_avg_neon;
-#endif
- vpx_convolve_copy = vpx_convolve_copy_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_convolve_copy = vpx_convolve_copy_neon;
-#endif
- vpx_d135_predictor_4x4 = vpx_d135_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_d135_predictor_4x4 = vpx_d135_predictor_4x4_neon;
-#endif
- vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_neon;
-#endif
- vpx_d45_predictor_4x4 = vpx_d45_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_d45_predictor_4x4 = vpx_d45_predictor_4x4_neon;
-#endif
- vpx_d45_predictor_8x8 = vpx_d45_predictor_8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_d45_predictor_8x8 = vpx_d45_predictor_8x8_neon;
-#endif
- vpx_dc_128_predictor_16x16 = vpx_dc_128_predictor_16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_128_predictor_16x16 = vpx_dc_128_predictor_16x16_neon;
-#endif
- vpx_dc_128_predictor_32x32 = vpx_dc_128_predictor_32x32_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_128_predictor_32x32 = vpx_dc_128_predictor_32x32_neon;
-#endif
- vpx_dc_128_predictor_4x4 = vpx_dc_128_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_128_predictor_4x4 = vpx_dc_128_predictor_4x4_neon;
-#endif
- vpx_dc_128_predictor_8x8 = vpx_dc_128_predictor_8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_128_predictor_8x8 = vpx_dc_128_predictor_8x8_neon;
-#endif
- vpx_dc_left_predictor_16x16 = vpx_dc_left_predictor_16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_left_predictor_16x16 = vpx_dc_left_predictor_16x16_neon;
-#endif
- vpx_dc_left_predictor_32x32 = vpx_dc_left_predictor_32x32_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_left_predictor_32x32 = vpx_dc_left_predictor_32x32_neon;
-#endif
- vpx_dc_left_predictor_4x4 = vpx_dc_left_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_left_predictor_4x4 = vpx_dc_left_predictor_4x4_neon;
-#endif
- vpx_dc_left_predictor_8x8 = vpx_dc_left_predictor_8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_left_predictor_8x8 = vpx_dc_left_predictor_8x8_neon;
-#endif
- vpx_dc_predictor_16x16 = vpx_dc_predictor_16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_predictor_16x16 = vpx_dc_predictor_16x16_neon;
-#endif
- vpx_dc_predictor_32x32 = vpx_dc_predictor_32x32_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_predictor_32x32 = vpx_dc_predictor_32x32_neon;
-#endif
- vpx_dc_predictor_4x4 = vpx_dc_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_predictor_4x4 = vpx_dc_predictor_4x4_neon;
-#endif
- vpx_dc_predictor_8x8 = vpx_dc_predictor_8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_predictor_8x8 = vpx_dc_predictor_8x8_neon;
-#endif
- vpx_dc_top_predictor_16x16 = vpx_dc_top_predictor_16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_top_predictor_16x16 = vpx_dc_top_predictor_16x16_neon;
-#endif
- vpx_dc_top_predictor_32x32 = vpx_dc_top_predictor_32x32_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_top_predictor_32x32 = vpx_dc_top_predictor_32x32_neon;
-#endif
- vpx_dc_top_predictor_4x4 = vpx_dc_top_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_top_predictor_4x4 = vpx_dc_top_predictor_4x4_neon;
-#endif
- vpx_dc_top_predictor_8x8 = vpx_dc_top_predictor_8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_dc_top_predictor_8x8 = vpx_dc_top_predictor_8x8_neon;
-#endif
- vpx_h_predictor_16x16 = vpx_h_predictor_16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_h_predictor_16x16 = vpx_h_predictor_16x16_neon;
-#endif
- vpx_h_predictor_32x32 = vpx_h_predictor_32x32_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_h_predictor_32x32 = vpx_h_predictor_32x32_neon;
-#endif
- vpx_h_predictor_4x4 = vpx_h_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_h_predictor_4x4 = vpx_h_predictor_4x4_neon;
-#endif
- vpx_h_predictor_8x8 = vpx_h_predictor_8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_h_predictor_8x8 = vpx_h_predictor_8x8_neon;
-#endif
- vpx_idct16x16_10_add = vpx_idct16x16_10_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct16x16_10_add = vpx_idct16x16_10_add_neon;
-#endif
- vpx_idct16x16_1_add = vpx_idct16x16_1_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct16x16_1_add = vpx_idct16x16_1_add_neon;
-#endif
- vpx_idct16x16_256_add = vpx_idct16x16_256_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct16x16_256_add = vpx_idct16x16_256_add_neon;
-#endif
- vpx_idct32x32_1024_add = vpx_idct32x32_1024_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct32x32_1024_add = vpx_idct32x32_1024_add_neon;
-#endif
- vpx_idct32x32_135_add = vpx_idct32x32_135_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct32x32_135_add = vpx_idct32x32_1024_add_neon;
-#endif
- vpx_idct32x32_1_add = vpx_idct32x32_1_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct32x32_1_add = vpx_idct32x32_1_add_neon;
-#endif
- vpx_idct32x32_34_add = vpx_idct32x32_34_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct32x32_34_add = vpx_idct32x32_1024_add_neon;
-#endif
- vpx_idct4x4_16_add = vpx_idct4x4_16_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct4x4_16_add = vpx_idct4x4_16_add_neon;
-#endif
- vpx_idct4x4_1_add = vpx_idct4x4_1_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct4x4_1_add = vpx_idct4x4_1_add_neon;
-#endif
- vpx_idct8x8_12_add = vpx_idct8x8_12_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct8x8_12_add = vpx_idct8x8_12_add_neon;
-#endif
- vpx_idct8x8_1_add = vpx_idct8x8_1_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct8x8_1_add = vpx_idct8x8_1_add_neon;
-#endif
- vpx_idct8x8_64_add = vpx_idct8x8_64_add_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_idct8x8_64_add = vpx_idct8x8_64_add_neon;
-#endif
- vpx_lpf_horizontal_4 = vpx_lpf_horizontal_4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_horizontal_4 = vpx_lpf_horizontal_4_neon;
-#endif
- vpx_lpf_horizontal_4_dual = vpx_lpf_horizontal_4_dual_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_horizontal_4_dual = vpx_lpf_horizontal_4_dual_neon;
-#endif
- vpx_lpf_horizontal_8 = vpx_lpf_horizontal_8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_horizontal_8 = vpx_lpf_horizontal_8_neon;
-#endif
- vpx_lpf_horizontal_8_dual = vpx_lpf_horizontal_8_dual_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_horizontal_8_dual = vpx_lpf_horizontal_8_dual_neon;
-#endif
- vpx_lpf_horizontal_edge_16 = vpx_lpf_horizontal_edge_16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_horizontal_edge_16 = vpx_lpf_horizontal_edge_16_neon;
-#endif
- vpx_lpf_horizontal_edge_8 = vpx_lpf_horizontal_edge_8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_horizontal_edge_8 = vpx_lpf_horizontal_edge_8_neon;
-#endif
- vpx_lpf_vertical_16 = vpx_lpf_vertical_16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_vertical_16 = vpx_lpf_vertical_16_neon;
-#endif
- vpx_lpf_vertical_16_dual = vpx_lpf_vertical_16_dual_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_vertical_16_dual = vpx_lpf_vertical_16_dual_neon;
-#endif
- vpx_lpf_vertical_4 = vpx_lpf_vertical_4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_vertical_4 = vpx_lpf_vertical_4_neon;
-#endif
- vpx_lpf_vertical_4_dual = vpx_lpf_vertical_4_dual_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_vertical_4_dual = vpx_lpf_vertical_4_dual_neon;
-#endif
- vpx_lpf_vertical_8 = vpx_lpf_vertical_8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_vertical_8 = vpx_lpf_vertical_8_neon;
-#endif
- vpx_lpf_vertical_8_dual = vpx_lpf_vertical_8_dual_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_lpf_vertical_8_dual = vpx_lpf_vertical_8_dual_neon;
-#endif
- vpx_tm_predictor_16x16 = vpx_tm_predictor_16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_tm_predictor_16x16 = vpx_tm_predictor_16x16_neon;
-#endif
- vpx_tm_predictor_32x32 = vpx_tm_predictor_32x32_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_tm_predictor_32x32 = vpx_tm_predictor_32x32_neon;
-#endif
- vpx_tm_predictor_4x4 = vpx_tm_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_tm_predictor_4x4 = vpx_tm_predictor_4x4_neon;
-#endif
- vpx_tm_predictor_8x8 = vpx_tm_predictor_8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_tm_predictor_8x8 = vpx_tm_predictor_8x8_neon;
-#endif
- vpx_v_predictor_16x16 = vpx_v_predictor_16x16_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_v_predictor_16x16 = vpx_v_predictor_16x16_neon;
-#endif
- vpx_v_predictor_32x32 = vpx_v_predictor_32x32_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_v_predictor_32x32 = vpx_v_predictor_32x32_neon;
-#endif
- vpx_v_predictor_4x4 = vpx_v_predictor_4x4_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_v_predictor_4x4 = vpx_v_predictor_4x4_neon;
-#endif
- vpx_v_predictor_8x8 = vpx_v_predictor_8x8_c;
-#if HAVE_NEON
- if (flags & HAS_NEON) vpx_v_predictor_8x8 = vpx_v_predictor_8x8_neon;
-#endif
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_c.h b/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_c.h
deleted file mode 100644
index 9fcc2f0066..0000000000
--- a/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_c.h
+++ /dev/null
@@ -1,355 +0,0 @@
-#ifndef VPX_DSP_RTCD_H_
-#define VPX_DSP_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * DSP
- */
-
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vpx_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_convolve8 vpx_convolve8_c
-
-void vpx_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_convolve8_avg vpx_convolve8_avg_c
-
-void vpx_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_convolve8_avg_horiz vpx_convolve8_avg_horiz_c
-
-void vpx_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_convolve8_avg_vert vpx_convolve8_avg_vert_c
-
-void vpx_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_convolve8_horiz vpx_convolve8_horiz_c
-
-void vpx_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_convolve8_vert vpx_convolve8_vert_c
-
-void vpx_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_convolve_avg vpx_convolve_avg_c
-
-void vpx_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_convolve_copy vpx_convolve_copy_c
-
-void vpx_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c
-
-void vpx_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c
-
-void vpx_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c
-
-void vpx_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c
-
-void vpx_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c
-
-void vpx_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c
-
-void vpx_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c
-
-void vpx_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c
-
-void vpx_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d153_predictor_16x16 vpx_d153_predictor_16x16_c
-
-void vpx_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d153_predictor_32x32 vpx_d153_predictor_32x32_c
-
-void vpx_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d153_predictor_4x4 vpx_d153_predictor_4x4_c
-
-void vpx_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d153_predictor_8x8 vpx_d153_predictor_8x8_c
-
-void vpx_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207_predictor_16x16 vpx_d207_predictor_16x16_c
-
-void vpx_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207_predictor_32x32 vpx_d207_predictor_32x32_c
-
-void vpx_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_c
-
-void vpx_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207_predictor_8x8 vpx_d207_predictor_8x8_c
-
-void vpx_d207e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_16x16 vpx_d207e_predictor_16x16_c
-
-void vpx_d207e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_32x32 vpx_d207e_predictor_32x32_c
-
-void vpx_d207e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_4x4 vpx_d207e_predictor_4x4_c
-
-void vpx_d207e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_8x8 vpx_d207e_predictor_8x8_c
-
-void vpx_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45_predictor_16x16 vpx_d45_predictor_16x16_c
-
-void vpx_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45_predictor_32x32 vpx_d45_predictor_32x32_c
-
-void vpx_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45_predictor_4x4 vpx_d45_predictor_4x4_c
-
-void vpx_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45_predictor_8x8 vpx_d45_predictor_8x8_c
-
-void vpx_d45e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_16x16 vpx_d45e_predictor_16x16_c
-
-void vpx_d45e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_32x32 vpx_d45e_predictor_32x32_c
-
-void vpx_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c
-
-void vpx_d45e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_8x8 vpx_d45e_predictor_8x8_c
-
-void vpx_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63_predictor_16x16 vpx_d63_predictor_16x16_c
-
-void vpx_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63_predictor_32x32 vpx_d63_predictor_32x32_c
-
-void vpx_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63_predictor_4x4 vpx_d63_predictor_4x4_c
-
-void vpx_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63_predictor_8x8 vpx_d63_predictor_8x8_c
-
-void vpx_d63e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_16x16 vpx_d63e_predictor_16x16_c
-
-void vpx_d63e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_32x32 vpx_d63e_predictor_32x32_c
-
-void vpx_d63e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c
-
-void vpx_d63e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_8x8 vpx_d63e_predictor_8x8_c
-
-void vpx_d63f_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63f_predictor_4x4 vpx_d63f_predictor_4x4_c
-
-void vpx_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_128_predictor_16x16 vpx_dc_128_predictor_16x16_c
-
-void vpx_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_128_predictor_32x32 vpx_dc_128_predictor_32x32_c
-
-void vpx_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_128_predictor_4x4 vpx_dc_128_predictor_4x4_c
-
-void vpx_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_128_predictor_8x8 vpx_dc_128_predictor_8x8_c
-
-void vpx_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_left_predictor_16x16 vpx_dc_left_predictor_16x16_c
-
-void vpx_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_left_predictor_32x32 vpx_dc_left_predictor_32x32_c
-
-void vpx_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_left_predictor_4x4 vpx_dc_left_predictor_4x4_c
-
-void vpx_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_left_predictor_8x8 vpx_dc_left_predictor_8x8_c
-
-void vpx_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_predictor_16x16 vpx_dc_predictor_16x16_c
-
-void vpx_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_predictor_32x32 vpx_dc_predictor_32x32_c
-
-void vpx_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_predictor_4x4 vpx_dc_predictor_4x4_c
-
-void vpx_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_predictor_8x8 vpx_dc_predictor_8x8_c
-
-void vpx_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_top_predictor_16x16 vpx_dc_top_predictor_16x16_c
-
-void vpx_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_top_predictor_32x32 vpx_dc_top_predictor_32x32_c
-
-void vpx_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_top_predictor_4x4 vpx_dc_top_predictor_4x4_c
-
-void vpx_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_dc_top_predictor_8x8 vpx_dc_top_predictor_8x8_c
-
-void vpx_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_h_predictor_16x16 vpx_h_predictor_16x16_c
-
-void vpx_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_h_predictor_32x32 vpx_h_predictor_32x32_c
-
-void vpx_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_h_predictor_4x4 vpx_h_predictor_4x4_c
-
-void vpx_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_h_predictor_8x8 vpx_h_predictor_8x8_c
-
-void vpx_he_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c
-
-void vpx_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct16x16_10_add vpx_idct16x16_10_add_c
-
-void vpx_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct16x16_1_add vpx_idct16x16_1_add_c
-
-void vpx_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct16x16_256_add vpx_idct16x16_256_add_c
-
-void vpx_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct32x32_1024_add vpx_idct32x32_1024_add_c
-
-void vpx_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct32x32_135_add vpx_idct32x32_135_add_c
-
-void vpx_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct32x32_1_add vpx_idct32x32_1_add_c
-
-void vpx_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct32x32_34_add vpx_idct32x32_34_add_c
-
-void vpx_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct4x4_16_add vpx_idct4x4_16_add_c
-
-void vpx_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct4x4_1_add vpx_idct4x4_1_add_c
-
-void vpx_idct8x8_12_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct8x8_12_add vpx_idct8x8_12_add_c
-
-void vpx_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct8x8_1_add vpx_idct8x8_1_add_c
-
-void vpx_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_idct8x8_64_add vpx_idct8x8_64_add_c
-
-void vpx_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_c
-
-void vpx_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c
-
-void vpx_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-#define vpx_lpf_horizontal_4 vpx_lpf_horizontal_4_c
-
-void vpx_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-#define vpx_lpf_horizontal_4_dual vpx_lpf_horizontal_4_dual_c
-
-void vpx_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-#define vpx_lpf_horizontal_8 vpx_lpf_horizontal_8_c
-
-void vpx_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-#define vpx_lpf_horizontal_8_dual vpx_lpf_horizontal_8_dual_c
-
-void vpx_lpf_horizontal_edge_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-#define vpx_lpf_horizontal_edge_16 vpx_lpf_horizontal_edge_16_c
-
-void vpx_lpf_horizontal_edge_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-#define vpx_lpf_horizontal_edge_8 vpx_lpf_horizontal_edge_8_c
-
-void vpx_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-#define vpx_lpf_vertical_16 vpx_lpf_vertical_16_c
-
-void vpx_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-#define vpx_lpf_vertical_16_dual vpx_lpf_vertical_16_dual_c
-
-void vpx_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-#define vpx_lpf_vertical_4 vpx_lpf_vertical_4_c
-
-void vpx_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-#define vpx_lpf_vertical_4_dual vpx_lpf_vertical_4_dual_c
-
-void vpx_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-#define vpx_lpf_vertical_8 vpx_lpf_vertical_8_c
-
-void vpx_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-#define vpx_lpf_vertical_8_dual vpx_lpf_vertical_8_dual_c
-
-void vpx_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_2d vpx_scaled_2d_c
-
-void vpx_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c
-
-void vpx_scaled_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c
-
-void vpx_scaled_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c
-
-void vpx_scaled_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_horiz vpx_scaled_horiz_c
-
-void vpx_scaled_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_vert vpx_scaled_vert_c
-
-void vpx_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_tm_predictor_16x16 vpx_tm_predictor_16x16_c
-
-void vpx_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_tm_predictor_32x32 vpx_tm_predictor_32x32_c
-
-void vpx_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_tm_predictor_4x4 vpx_tm_predictor_4x4_c
-
-void vpx_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_tm_predictor_8x8 vpx_tm_predictor_8x8_c
-
-void vpx_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_v_predictor_16x16 vpx_v_predictor_16x16_c
-
-void vpx_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_v_predictor_32x32 vpx_v_predictor_32x32_c
-
-void vpx_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_v_predictor_4x4 vpx_v_predictor_4x4_c
-
-void vpx_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_v_predictor_8x8 vpx_v_predictor_8x8_c
-
-void vpx_ve_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c
-
-void vpx_dsp_rtcd(void);
-
-#ifdef RTCD_C
-static void setup_rtcd_internal(void)
-{
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_x86.h b/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_x86.h
deleted file mode 100644
index c2a68330ac..0000000000
--- a/thirdparty/libvpx/rtcd/vpx_dsp_rtcd_x86.h
+++ /dev/null
@@ -1,604 +0,0 @@
-#ifndef VPX_DSP_RTCD_H_
-#define VPX_DSP_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-/*
- * DSP
- */
-
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vpx_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_avg_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_avg_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve8_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_convolve_copy_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_convolve_copy)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c
-
-void vpx_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c
-
-void vpx_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c
-
-void vpx_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c
-
-void vpx_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c
-
-void vpx_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c
-
-void vpx_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c
-
-void vpx_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c
-
-void vpx_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d153_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d153_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d153_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d153_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d153_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d153_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d153_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d153_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d207_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d207_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d207_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d207_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d207_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d207_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d207_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d207_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d207e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_16x16 vpx_d207e_predictor_16x16_c
-
-void vpx_d207e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_32x32 vpx_d207e_predictor_32x32_c
-
-void vpx_d207e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_4x4 vpx_d207e_predictor_4x4_c
-
-void vpx_d207e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d207e_predictor_8x8 vpx_d207e_predictor_8x8_c
-
-void vpx_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d45_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d45_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d45_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d45_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d45_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d45_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d45_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d45_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d45e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_16x16 vpx_d45e_predictor_16x16_c
-
-void vpx_d45e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_32x32 vpx_d45e_predictor_32x32_c
-
-void vpx_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c
-
-void vpx_d45e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d45e_predictor_8x8 vpx_d45e_predictor_8x8_c
-
-void vpx_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d63_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d63_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d63_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d63_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d63_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d63_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_d63_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_d63_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_d63e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_16x16 vpx_d63e_predictor_16x16_c
-
-void vpx_d63e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_32x32 vpx_d63e_predictor_32x32_c
-
-void vpx_d63e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c
-
-void vpx_d63e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63e_predictor_8x8 vpx_d63e_predictor_8x8_c
-
-void vpx_d63f_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_d63f_predictor_4x4 vpx_d63f_predictor_4x4_c
-
-void vpx_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_128_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_128_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_128_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_128_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_128_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_128_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_128_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_128_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_left_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_left_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_left_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_left_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_left_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_left_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_left_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_left_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_top_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_top_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_top_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_top_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_top_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_top_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_dc_top_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_dc_top_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_h_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_h_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_h_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_h_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_h_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_h_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_h_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_he_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c
-
-void vpx_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct16x16_10_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct16x16_10_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct16x16_1_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct16x16_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct16x16_256_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct16x16_256_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct32x32_1024_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct32x32_1024_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct32x32_1024_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct32x32_135_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct32x32_1_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct32x32_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct32x32_34_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct32x32_34_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct4x4_1_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct4x4_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct8x8_12_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct8x8_12_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct8x8_12_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct8x8_1_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct8x8_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_idct8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_idct8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-void vpx_iwht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
-RTCD_EXTERN void (*vpx_iwht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
-
-void vpx_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
-#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c
-
-void vpx_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_horizontal_4_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_horizontal_4)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-void vpx_lpf_horizontal_4_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-RTCD_EXTERN void (*vpx_lpf_horizontal_4_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-
-void vpx_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_horizontal_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_horizontal_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-void vpx_lpf_horizontal_8_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-RTCD_EXTERN void (*vpx_lpf_horizontal_8_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-
-void vpx_lpf_horizontal_edge_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_horizontal_edge_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_horizontal_edge_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_horizontal_edge_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_horizontal_edge_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_horizontal_edge_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_vertical_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_vertical_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_vertical_16_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_vertical_16_dual)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_vertical_4_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_vertical_4)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-void vpx_lpf_vertical_4_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-RTCD_EXTERN void (*vpx_lpf_vertical_4_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-
-void vpx_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-void vpx_lpf_vertical_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-RTCD_EXTERN void (*vpx_lpf_vertical_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
-
-void vpx_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-void vpx_lpf_vertical_8_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-RTCD_EXTERN void (*vpx_lpf_vertical_8_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
-
-void vpx_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-void vpx_scaled_2d_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-RTCD_EXTERN void (*vpx_scaled_2d)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-
-void vpx_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c
-
-void vpx_scaled_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c
-
-void vpx_scaled_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c
-
-void vpx_scaled_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_horiz vpx_scaled_horiz_c
-
-void vpx_scaled_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
-#define vpx_scaled_vert vpx_scaled_vert_c
-
-void vpx_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_tm_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_tm_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_tm_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_tm_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_tm_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_tm_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_tm_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_tm_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_v_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_v_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_v_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_v_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_v_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_v_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-void vpx_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-RTCD_EXTERN void (*vpx_v_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-
-void vpx_ve_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
-#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c
-
-void vpx_dsp_rtcd(void);
-
-#ifdef RTCD_C
-#include "vpx_ports/x86.h"
-static void setup_rtcd_internal(void)
-{
- int flags = x86_simd_caps();
-
- vpx_convolve8 = vpx_convolve8_c;
- if (flags & HAS_SSE2) vpx_convolve8 = vpx_convolve8_sse2;
- if (flags & HAS_SSSE3) vpx_convolve8 = vpx_convolve8_ssse3;
- vpx_convolve8_avg = vpx_convolve8_avg_c;
- if (flags & HAS_SSE2) vpx_convolve8_avg = vpx_convolve8_avg_sse2;
- if (flags & HAS_SSSE3) vpx_convolve8_avg = vpx_convolve8_avg_ssse3;
- vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_c;
- if (flags & HAS_SSE2) vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_sse2;
- if (flags & HAS_SSSE3) vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_ssse3;
- vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_c;
- if (flags & HAS_SSE2) vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_sse2;
- if (flags & HAS_SSSE3) vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_ssse3;
- vpx_convolve8_horiz = vpx_convolve8_horiz_c;
- if (flags & HAS_SSE2) vpx_convolve8_horiz = vpx_convolve8_horiz_sse2;
- if (flags & HAS_SSSE3) vpx_convolve8_horiz = vpx_convolve8_horiz_ssse3;
- vpx_convolve8_vert = vpx_convolve8_vert_c;
- if (flags & HAS_SSE2) vpx_convolve8_vert = vpx_convolve8_vert_sse2;
- if (flags & HAS_SSSE3) vpx_convolve8_vert = vpx_convolve8_vert_ssse3;
- vpx_convolve_avg = vpx_convolve_avg_c;
- if (flags & HAS_SSE2) vpx_convolve_avg = vpx_convolve_avg_sse2;
- vpx_convolve_copy = vpx_convolve_copy_c;
- if (flags & HAS_SSE2) vpx_convolve_copy = vpx_convolve_copy_sse2;
- vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_c;
- if (flags & HAS_SSSE3) vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_ssse3;
- vpx_d153_predictor_32x32 = vpx_d153_predictor_32x32_c;
- if (flags & HAS_SSSE3) vpx_d153_predictor_32x32 = vpx_d153_predictor_32x32_ssse3;
- vpx_d153_predictor_4x4 = vpx_d153_predictor_4x4_c;
- if (flags & HAS_SSSE3) vpx_d153_predictor_4x4 = vpx_d153_predictor_4x4_ssse3;
- vpx_d153_predictor_8x8 = vpx_d153_predictor_8x8_c;
- if (flags & HAS_SSSE3) vpx_d153_predictor_8x8 = vpx_d153_predictor_8x8_ssse3;
- vpx_d207_predictor_16x16 = vpx_d207_predictor_16x16_c;
- if (flags & HAS_SSSE3) vpx_d207_predictor_16x16 = vpx_d207_predictor_16x16_ssse3;
- vpx_d207_predictor_32x32 = vpx_d207_predictor_32x32_c;
- if (flags & HAS_SSSE3) vpx_d207_predictor_32x32 = vpx_d207_predictor_32x32_ssse3;
- vpx_d207_predictor_4x4 = vpx_d207_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_d207_predictor_4x4 = vpx_d207_predictor_4x4_sse2;
- vpx_d207_predictor_8x8 = vpx_d207_predictor_8x8_c;
- if (flags & HAS_SSSE3) vpx_d207_predictor_8x8 = vpx_d207_predictor_8x8_ssse3;
- vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_c;
- if (flags & HAS_SSSE3) vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_ssse3;
- vpx_d45_predictor_32x32 = vpx_d45_predictor_32x32_c;
- if (flags & HAS_SSSE3) vpx_d45_predictor_32x32 = vpx_d45_predictor_32x32_ssse3;
- vpx_d45_predictor_4x4 = vpx_d45_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_d45_predictor_4x4 = vpx_d45_predictor_4x4_sse2;
- vpx_d45_predictor_8x8 = vpx_d45_predictor_8x8_c;
- if (flags & HAS_SSE2) vpx_d45_predictor_8x8 = vpx_d45_predictor_8x8_sse2;
- vpx_d63_predictor_16x16 = vpx_d63_predictor_16x16_c;
- if (flags & HAS_SSSE3) vpx_d63_predictor_16x16 = vpx_d63_predictor_16x16_ssse3;
- vpx_d63_predictor_32x32 = vpx_d63_predictor_32x32_c;
- if (flags & HAS_SSSE3) vpx_d63_predictor_32x32 = vpx_d63_predictor_32x32_ssse3;
- vpx_d63_predictor_4x4 = vpx_d63_predictor_4x4_c;
- if (flags & HAS_SSSE3) vpx_d63_predictor_4x4 = vpx_d63_predictor_4x4_ssse3;
- vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_c;
- if (flags & HAS_SSSE3) vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_ssse3;
- vpx_dc_128_predictor_16x16 = vpx_dc_128_predictor_16x16_c;
- if (flags & HAS_SSE2) vpx_dc_128_predictor_16x16 = vpx_dc_128_predictor_16x16_sse2;
- vpx_dc_128_predictor_32x32 = vpx_dc_128_predictor_32x32_c;
- if (flags & HAS_SSE2) vpx_dc_128_predictor_32x32 = vpx_dc_128_predictor_32x32_sse2;
- vpx_dc_128_predictor_4x4 = vpx_dc_128_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_dc_128_predictor_4x4 = vpx_dc_128_predictor_4x4_sse2;
- vpx_dc_128_predictor_8x8 = vpx_dc_128_predictor_8x8_c;
- if (flags & HAS_SSE2) vpx_dc_128_predictor_8x8 = vpx_dc_128_predictor_8x8_sse2;
- vpx_dc_left_predictor_16x16 = vpx_dc_left_predictor_16x16_c;
- if (flags & HAS_SSE2) vpx_dc_left_predictor_16x16 = vpx_dc_left_predictor_16x16_sse2;
- vpx_dc_left_predictor_32x32 = vpx_dc_left_predictor_32x32_c;
- if (flags & HAS_SSE2) vpx_dc_left_predictor_32x32 = vpx_dc_left_predictor_32x32_sse2;
- vpx_dc_left_predictor_4x4 = vpx_dc_left_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_dc_left_predictor_4x4 = vpx_dc_left_predictor_4x4_sse2;
- vpx_dc_left_predictor_8x8 = vpx_dc_left_predictor_8x8_c;
- if (flags & HAS_SSE2) vpx_dc_left_predictor_8x8 = vpx_dc_left_predictor_8x8_sse2;
- vpx_dc_predictor_16x16 = vpx_dc_predictor_16x16_c;
- if (flags & HAS_SSE2) vpx_dc_predictor_16x16 = vpx_dc_predictor_16x16_sse2;
- vpx_dc_predictor_32x32 = vpx_dc_predictor_32x32_c;
- if (flags & HAS_SSE2) vpx_dc_predictor_32x32 = vpx_dc_predictor_32x32_sse2;
- vpx_dc_predictor_4x4 = vpx_dc_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_dc_predictor_4x4 = vpx_dc_predictor_4x4_sse2;
- vpx_dc_predictor_8x8 = vpx_dc_predictor_8x8_c;
- if (flags & HAS_SSE2) vpx_dc_predictor_8x8 = vpx_dc_predictor_8x8_sse2;
- vpx_dc_top_predictor_16x16 = vpx_dc_top_predictor_16x16_c;
- if (flags & HAS_SSE2) vpx_dc_top_predictor_16x16 = vpx_dc_top_predictor_16x16_sse2;
- vpx_dc_top_predictor_32x32 = vpx_dc_top_predictor_32x32_c;
- if (flags & HAS_SSE2) vpx_dc_top_predictor_32x32 = vpx_dc_top_predictor_32x32_sse2;
- vpx_dc_top_predictor_4x4 = vpx_dc_top_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_dc_top_predictor_4x4 = vpx_dc_top_predictor_4x4_sse2;
- vpx_dc_top_predictor_8x8 = vpx_dc_top_predictor_8x8_c;
- if (flags & HAS_SSE2) vpx_dc_top_predictor_8x8 = vpx_dc_top_predictor_8x8_sse2;
- vpx_h_predictor_16x16 = vpx_h_predictor_16x16_c;
- if (flags & HAS_SSE2) vpx_h_predictor_16x16 = vpx_h_predictor_16x16_sse2;
- vpx_h_predictor_32x32 = vpx_h_predictor_32x32_c;
- if (flags & HAS_SSE2) vpx_h_predictor_32x32 = vpx_h_predictor_32x32_sse2;
- vpx_h_predictor_4x4 = vpx_h_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_h_predictor_4x4 = vpx_h_predictor_4x4_sse2;
- vpx_h_predictor_8x8 = vpx_h_predictor_8x8_c;
- if (flags & HAS_SSE2) vpx_h_predictor_8x8 = vpx_h_predictor_8x8_sse2;
- vpx_idct16x16_10_add = vpx_idct16x16_10_add_c;
- if (flags & HAS_SSE2) vpx_idct16x16_10_add = vpx_idct16x16_10_add_sse2;
- vpx_idct16x16_1_add = vpx_idct16x16_1_add_c;
- if (flags & HAS_SSE2) vpx_idct16x16_1_add = vpx_idct16x16_1_add_sse2;
- vpx_idct16x16_256_add = vpx_idct16x16_256_add_c;
- if (flags & HAS_SSE2) vpx_idct16x16_256_add = vpx_idct16x16_256_add_sse2;
- vpx_idct32x32_1024_add = vpx_idct32x32_1024_add_c;
- if (flags & HAS_SSE2) vpx_idct32x32_1024_add = vpx_idct32x32_1024_add_sse2;
- vpx_idct32x32_135_add = vpx_idct32x32_135_add_c;
- if (flags & HAS_SSE2) vpx_idct32x32_135_add = vpx_idct32x32_1024_add_sse2;
- vpx_idct32x32_1_add = vpx_idct32x32_1_add_c;
- if (flags & HAS_SSE2) vpx_idct32x32_1_add = vpx_idct32x32_1_add_sse2;
- vpx_idct32x32_34_add = vpx_idct32x32_34_add_c;
- if (flags & HAS_SSE2) vpx_idct32x32_34_add = vpx_idct32x32_34_add_sse2;
- vpx_idct4x4_16_add = vpx_idct4x4_16_add_c;
- if (flags & HAS_SSE2) vpx_idct4x4_16_add = vpx_idct4x4_16_add_sse2;
- vpx_idct4x4_1_add = vpx_idct4x4_1_add_c;
- if (flags & HAS_SSE2) vpx_idct4x4_1_add = vpx_idct4x4_1_add_sse2;
- vpx_idct8x8_12_add = vpx_idct8x8_12_add_c;
- if (flags & HAS_SSE2) vpx_idct8x8_12_add = vpx_idct8x8_12_add_sse2;
- vpx_idct8x8_1_add = vpx_idct8x8_1_add_c;
- if (flags & HAS_SSE2) vpx_idct8x8_1_add = vpx_idct8x8_1_add_sse2;
- vpx_idct8x8_64_add = vpx_idct8x8_64_add_c;
- if (flags & HAS_SSE2) vpx_idct8x8_64_add = vpx_idct8x8_64_add_sse2;
- vpx_iwht4x4_16_add = vpx_iwht4x4_16_add_c;
- if (flags & HAS_SSE2) vpx_iwht4x4_16_add = vpx_iwht4x4_16_add_sse2;
- vpx_lpf_horizontal_4 = vpx_lpf_horizontal_4_c;
- if (flags & HAS_SSE2) vpx_lpf_horizontal_4 = vpx_lpf_horizontal_4_sse2;
- vpx_lpf_horizontal_4_dual = vpx_lpf_horizontal_4_dual_c;
- if (flags & HAS_SSE2) vpx_lpf_horizontal_4_dual = vpx_lpf_horizontal_4_dual_sse2;
- vpx_lpf_horizontal_8 = vpx_lpf_horizontal_8_c;
- if (flags & HAS_SSE2) vpx_lpf_horizontal_8 = vpx_lpf_horizontal_8_sse2;
- vpx_lpf_horizontal_8_dual = vpx_lpf_horizontal_8_dual_c;
- if (flags & HAS_SSE2) vpx_lpf_horizontal_8_dual = vpx_lpf_horizontal_8_dual_sse2;
- vpx_lpf_horizontal_edge_16 = vpx_lpf_horizontal_edge_16_c;
- if (flags & HAS_SSE2) vpx_lpf_horizontal_edge_16 = vpx_lpf_horizontal_edge_16_sse2;
- vpx_lpf_horizontal_edge_8 = vpx_lpf_horizontal_edge_8_c;
- if (flags & HAS_SSE2) vpx_lpf_horizontal_edge_8 = vpx_lpf_horizontal_edge_8_sse2;
- vpx_lpf_vertical_16 = vpx_lpf_vertical_16_c;
- if (flags & HAS_SSE2) vpx_lpf_vertical_16 = vpx_lpf_vertical_16_sse2;
- vpx_lpf_vertical_16_dual = vpx_lpf_vertical_16_dual_c;
- if (flags & HAS_SSE2) vpx_lpf_vertical_16_dual = vpx_lpf_vertical_16_dual_sse2;
- vpx_lpf_vertical_4 = vpx_lpf_vertical_4_c;
- if (flags & HAS_SSE2) vpx_lpf_vertical_4 = vpx_lpf_vertical_4_sse2;
- vpx_lpf_vertical_4_dual = vpx_lpf_vertical_4_dual_c;
- if (flags & HAS_SSE2) vpx_lpf_vertical_4_dual = vpx_lpf_vertical_4_dual_sse2;
- vpx_lpf_vertical_8 = vpx_lpf_vertical_8_c;
- if (flags & HAS_SSE2) vpx_lpf_vertical_8 = vpx_lpf_vertical_8_sse2;
- vpx_lpf_vertical_8_dual = vpx_lpf_vertical_8_dual_c;
- if (flags & HAS_SSE2) vpx_lpf_vertical_8_dual = vpx_lpf_vertical_8_dual_sse2;
- vpx_scaled_2d = vpx_scaled_2d_c;
- if (flags & HAS_SSSE3) vpx_scaled_2d = vpx_scaled_2d_ssse3;
- vpx_tm_predictor_16x16 = vpx_tm_predictor_16x16_c;
- if (flags & HAS_SSE2) vpx_tm_predictor_16x16 = vpx_tm_predictor_16x16_sse2;
- vpx_tm_predictor_32x32 = vpx_tm_predictor_32x32_c;
- if (flags & HAS_SSE2) vpx_tm_predictor_32x32 = vpx_tm_predictor_32x32_sse2;
- vpx_tm_predictor_4x4 = vpx_tm_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_tm_predictor_4x4 = vpx_tm_predictor_4x4_sse2;
- vpx_tm_predictor_8x8 = vpx_tm_predictor_8x8_c;
- if (flags & HAS_SSE2) vpx_tm_predictor_8x8 = vpx_tm_predictor_8x8_sse2;
- vpx_v_predictor_16x16 = vpx_v_predictor_16x16_c;
- if (flags & HAS_SSE2) vpx_v_predictor_16x16 = vpx_v_predictor_16x16_sse2;
- vpx_v_predictor_32x32 = vpx_v_predictor_32x32_c;
- if (flags & HAS_SSE2) vpx_v_predictor_32x32 = vpx_v_predictor_32x32_sse2;
- vpx_v_predictor_4x4 = vpx_v_predictor_4x4_c;
- if (flags & HAS_SSE2) vpx_v_predictor_4x4 = vpx_v_predictor_4x4_sse2;
- vpx_v_predictor_8x8 = vpx_v_predictor_8x8_c;
- if (flags & HAS_SSE2) vpx_v_predictor_8x8 = vpx_v_predictor_8x8_sse2;
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/third_party/android/cpu-features.c b/thirdparty/libvpx/third_party/android/cpu-features.c
deleted file mode 100644
index e2bd749b01..0000000000
--- a/thirdparty/libvpx/third_party/android/cpu-features.c
+++ /dev/null
@@ -1,1313 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* ChangeLog for this library:
- *
- * NDK r10e?: Add MIPS MSA feature.
- *
- * NDK r10: Support for 64-bit CPUs (Intel, ARM & MIPS).
- *
- * NDK r8d: Add android_setCpu().
- *
- * NDK r8c: Add new ARM CPU features: VFPv2, VFP_D32, VFP_FP16,
- * VFP_FMA, NEON_FMA, IDIV_ARM, IDIV_THUMB2 and iWMMXt.
- *
- * Rewrite the code to parse /proc/self/auxv instead of
- * the "Features" field in /proc/cpuinfo.
- *
- * Dynamically allocate the buffer that hold the content
- * of /proc/cpuinfo to deal with newer hardware.
- *
- * NDK r7c: Fix CPU count computation. The old method only reported the
- * number of _active_ CPUs when the library was initialized,
- * which could be less than the real total.
- *
- * NDK r5: Handle buggy kernels which report a CPU Architecture number of 7
- * for an ARMv6 CPU (see below).
- *
- * Handle kernels that only report 'neon', and not 'vfpv3'
- * (VFPv3 is mandated by the ARM architecture is Neon is implemented)
- *
- * Handle kernels that only report 'vfpv3d16', and not 'vfpv3'
- *
- * Fix x86 compilation. Report ANDROID_CPU_FAMILY_X86 in
- * android_getCpuFamily().
- *
- * NDK r4: Initial release
- */
-
-#include "cpu-features.h"
-
-#include <dlfcn.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/system_properties.h>
-#include <unistd.h>
-
-static pthread_once_t g_once;
-static int g_inited;
-static AndroidCpuFamily g_cpuFamily;
-static uint64_t g_cpuFeatures;
-static int g_cpuCount;
-
-#ifdef __arm__
-static uint32_t g_cpuIdArm;
-#endif
-
-static const int android_cpufeatures_debug = 0;
-
-#define D(...) \
- do { \
- if (android_cpufeatures_debug) { \
- printf(__VA_ARGS__); fflush(stdout); \
- } \
- } while (0)
-
-#ifdef __i386__
-static __inline__ void x86_cpuid(int func, int values[4])
-{
- int a, b, c, d;
- /* We need to preserve ebx since we're compiling PIC code */
- /* this means we can't use "=b" for the second output register */
- __asm__ __volatile__ ( \
- "push %%ebx\n"
- "cpuid\n" \
- "mov %%ebx, %1\n"
- "pop %%ebx\n"
- : "=a" (a), "=r" (b), "=c" (c), "=d" (d) \
- : "a" (func) \
- );
- values[0] = a;
- values[1] = b;
- values[2] = c;
- values[3] = d;
-}
-#elif defined(__x86_64__)
-static __inline__ void x86_cpuid(int func, int values[4])
-{
- int64_t a, b, c, d;
- /* We need to preserve ebx since we're compiling PIC code */
- /* this means we can't use "=b" for the second output register */
- __asm__ __volatile__ ( \
- "push %%rbx\n"
- "cpuid\n" \
- "mov %%rbx, %1\n"
- "pop %%rbx\n"
- : "=a" (a), "=r" (b), "=c" (c), "=d" (d) \
- : "a" (func) \
- );
- values[0] = a;
- values[1] = b;
- values[2] = c;
- values[3] = d;
-}
-#endif
-
-/* Get the size of a file by reading it until the end. This is needed
- * because files under /proc do not always return a valid size when
- * using fseek(0, SEEK_END) + ftell(). Nor can they be mmap()-ed.
- */
-static int
-get_file_size(const char* pathname)
-{
-
- int fd, result = 0;
- char buffer[256];
-
- fd = open(pathname, O_RDONLY);
- if (fd < 0) {
- D("Can't open %s: %s\n", pathname, strerror(errno));
- return -1;
- }
-
- for (;;) {
- int ret = read(fd, buffer, sizeof buffer);
- if (ret < 0) {
- if (errno == EINTR)
- continue;
- D("Error while reading %s: %s\n", pathname, strerror(errno));
- break;
- }
- if (ret == 0)
- break;
-
- result += ret;
- }
- close(fd);
- return result;
-}
-
-/* Read the content of /proc/cpuinfo into a user-provided buffer.
- * Return the length of the data, or -1 on error. Does *not*
- * zero-terminate the content. Will not read more
- * than 'buffsize' bytes.
- */
-static int
-read_file(const char* pathname, char* buffer, size_t buffsize)
-{
- int fd, count;
-
- fd = open(pathname, O_RDONLY);
- if (fd < 0) {
- D("Could not open %s: %s\n", pathname, strerror(errno));
- return -1;
- }
- count = 0;
- while (count < (int)buffsize) {
- int ret = read(fd, buffer + count, buffsize - count);
- if (ret < 0) {
- if (errno == EINTR)
- continue;
- D("Error while reading from %s: %s\n", pathname, strerror(errno));
- if (count == 0)
- count = -1;
- break;
- }
- if (ret == 0)
- break;
- count += ret;
- }
- close(fd);
- return count;
-}
-
-#ifdef __arm__
-/* Extract the content of a the first occurence of a given field in
- * the content of /proc/cpuinfo and return it as a heap-allocated
- * string that must be freed by the caller.
- *
- * Return NULL if not found
- */
-static char*
-extract_cpuinfo_field(const char* buffer, int buflen, const char* field)
-{
- int fieldlen = strlen(field);
- const char* bufend = buffer + buflen;
- char* result = NULL;
- int len;
- const char *p, *q;
-
- /* Look for first field occurence, and ensures it starts the line. */
- p = buffer;
- for (;;) {
- p = memmem(p, bufend-p, field, fieldlen);
- if (p == NULL)
- goto EXIT;
-
- if (p == buffer || p[-1] == '\n')
- break;
-
- p += fieldlen;
- }
-
- /* Skip to the first column followed by a space */
- p += fieldlen;
- p = memchr(p, ':', bufend-p);
- if (p == NULL || p[1] != ' ')
- goto EXIT;
-
- /* Find the end of the line */
- p += 2;
- q = memchr(p, '\n', bufend-p);
- if (q == NULL)
- q = bufend;
-
- /* Copy the line into a heap-allocated buffer */
- len = q-p;
- result = malloc(len+1);
- if (result == NULL)
- goto EXIT;
-
- memcpy(result, p, len);
- result[len] = '\0';
-
-EXIT:
- return result;
-}
-
-/* Checks that a space-separated list of items contains one given 'item'.
- * Returns 1 if found, 0 otherwise.
- */
-static int
-has_list_item(const char* list, const char* item)
-{
- const char* p = list;
- int itemlen = strlen(item);
-
- if (list == NULL)
- return 0;
-
- while (*p) {
- const char* q;
-
- /* skip spaces */
- while (*p == ' ' || *p == '\t')
- p++;
-
- /* find end of current list item */
- q = p;
- while (*q && *q != ' ' && *q != '\t')
- q++;
-
- if (itemlen == q-p && !memcmp(p, item, itemlen))
- return 1;
-
- /* skip to next item */
- p = q;
- }
- return 0;
-}
-#endif /* __arm__ */
-
-/* Parse a number starting from 'input', but not going further
- * than 'limit'. Return the value into '*result'.
- *
- * NOTE: Does not skip over leading spaces, or deal with sign characters.
- * NOTE: Ignores overflows.
- *
- * The function returns NULL in case of error (bad format), or the new
- * position after the decimal number in case of success (which will always
- * be <= 'limit').
- */
-static const char*
-parse_number(const char* input, const char* limit, int base, int* result)
-{
- const char* p = input;
- int val = 0;
- while (p < limit) {
- int d = (*p - '0');
- if ((unsigned)d >= 10U) {
- d = (*p - 'a');
- if ((unsigned)d >= 6U)
- d = (*p - 'A');
- if ((unsigned)d >= 6U)
- break;
- d += 10;
- }
- if (d >= base)
- break;
- val = val*base + d;
- p++;
- }
- if (p == input)
- return NULL;
-
- *result = val;
- return p;
-}
-
-static const char*
-parse_decimal(const char* input, const char* limit, int* result)
-{
- return parse_number(input, limit, 10, result);
-}
-
-#ifdef __arm__
-static const char*
-parse_hexadecimal(const char* input, const char* limit, int* result)
-{
- return parse_number(input, limit, 16, result);
-}
-#endif /* __arm__ */
-
-/* This small data type is used to represent a CPU list / mask, as read
- * from sysfs on Linux. See http://www.kernel.org/doc/Documentation/cputopology.txt
- *
- * For now, we don't expect more than 32 cores on mobile devices, so keep
- * everything simple.
- */
-typedef struct {
- uint32_t mask;
-} CpuList;
-
-static __inline__ void
-cpulist_init(CpuList* list) {
- list->mask = 0;
-}
-
-static __inline__ void
-cpulist_and(CpuList* list1, CpuList* list2) {
- list1->mask &= list2->mask;
-}
-
-static __inline__ void
-cpulist_set(CpuList* list, int index) {
- if ((unsigned)index < 32) {
- list->mask |= (uint32_t)(1U << index);
- }
-}
-
-static __inline__ int
-cpulist_count(CpuList* list) {
- return __builtin_popcount(list->mask);
-}
-
-/* Parse a textual list of cpus and store the result inside a CpuList object.
- * Input format is the following:
- * - comma-separated list of items (no spaces)
- * - each item is either a single decimal number (cpu index), or a range made
- * of two numbers separated by a single dash (-). Ranges are inclusive.
- *
- * Examples: 0
- * 2,4-127,128-143
- * 0-1
- */
-static void
-cpulist_parse(CpuList* list, const char* line, int line_len)
-{
- const char* p = line;
- const char* end = p + line_len;
- const char* q;
-
- /* NOTE: the input line coming from sysfs typically contains a
- * trailing newline, so take care of it in the code below
- */
- while (p < end && *p != '\n')
- {
- int val, start_value, end_value;
-
- /* Find the end of current item, and put it into 'q' */
- q = memchr(p, ',', end-p);
- if (q == NULL) {
- q = end;
- }
-
- /* Get first value */
- p = parse_decimal(p, q, &start_value);
- if (p == NULL)
- goto BAD_FORMAT;
-
- end_value = start_value;
-
- /* If we're not at the end of the item, expect a dash and
- * and integer; extract end value.
- */
- if (p < q && *p == '-') {
- p = parse_decimal(p+1, q, &end_value);
- if (p == NULL)
- goto BAD_FORMAT;
- }
-
- /* Set bits CPU list bits */
- for (val = start_value; val <= end_value; val++) {
- cpulist_set(list, val);
- }
-
- /* Jump to next item */
- p = q;
- if (p < end)
- p++;
- }
-
-BAD_FORMAT:
- ;
-}
-
-/* Read a CPU list from one sysfs file */
-static void
-cpulist_read_from(CpuList* list, const char* filename)
-{
- char file[64];
- int filelen;
-
- cpulist_init(list);
-
- filelen = read_file(filename, file, sizeof file);
- if (filelen < 0) {
- D("Could not read %s: %s\n", filename, strerror(errno));
- return;
- }
-
- cpulist_parse(list, file, filelen);
-}
-#if defined(__aarch64__)
-// see <uapi/asm/hwcap.h> kernel header
-#define HWCAP_FP (1 << 0)
-#define HWCAP_ASIMD (1 << 1)
-#define HWCAP_AES (1 << 3)
-#define HWCAP_PMULL (1 << 4)
-#define HWCAP_SHA1 (1 << 5)
-#define HWCAP_SHA2 (1 << 6)
-#define HWCAP_CRC32 (1 << 7)
-#endif
-
-#if defined(__arm__)
-
-// See <asm/hwcap.h> kernel header.
-#define HWCAP_VFP (1 << 6)
-#define HWCAP_IWMMXT (1 << 9)
-#define HWCAP_NEON (1 << 12)
-#define HWCAP_VFPv3 (1 << 13)
-#define HWCAP_VFPv3D16 (1 << 14)
-#define HWCAP_VFPv4 (1 << 16)
-#define HWCAP_IDIVA (1 << 17)
-#define HWCAP_IDIVT (1 << 18)
-
-// see <uapi/asm/hwcap.h> kernel header
-#define HWCAP2_AES (1 << 0)
-#define HWCAP2_PMULL (1 << 1)
-#define HWCAP2_SHA1 (1 << 2)
-#define HWCAP2_SHA2 (1 << 3)
-#define HWCAP2_CRC32 (1 << 4)
-
-// This is the list of 32-bit ARMv7 optional features that are _always_
-// supported by ARMv8 CPUs, as mandated by the ARM Architecture Reference
-// Manual.
-#define HWCAP_SET_FOR_ARMV8 \
- ( HWCAP_VFP | \
- HWCAP_NEON | \
- HWCAP_VFPv3 | \
- HWCAP_VFPv4 | \
- HWCAP_IDIVA | \
- HWCAP_IDIVT )
-#endif
-
-#if defined(__mips__)
-// see <uapi/asm/hwcap.h> kernel header
-#define HWCAP_MIPS_R6 (1 << 0)
-#define HWCAP_MIPS_MSA (1 << 1)
-#endif
-
-#if defined(__arm__) || defined(__aarch64__) || defined(__mips__)
-
-#define AT_HWCAP 16
-#define AT_HWCAP2 26
-
-// Probe the system's C library for a 'getauxval' function and call it if
-// it exits, or return 0 for failure. This function is available since API
-// level 20.
-//
-// This code does *NOT* check for '__ANDROID_API__ >= 20' to support the
-// edge case where some NDK developers use headers for a platform that is
-// newer than the one really targetted by their application.
-// This is typically done to use newer native APIs only when running on more
-// recent Android versions, and requires careful symbol management.
-//
-// Note that getauxval() can't really be re-implemented here, because
-// its implementation does not parse /proc/self/auxv. Instead it depends
-// on values that are passed by the kernel at process-init time to the
-// C runtime initialization layer.
-static uint32_t
-get_elf_hwcap_from_getauxval(int hwcap_type) {
- typedef unsigned long getauxval_func_t(unsigned long);
-
- dlerror();
- void* libc_handle = dlopen("libc.so", RTLD_NOW);
- if (!libc_handle) {
- D("Could not dlopen() C library: %s\n", dlerror());
- return 0;
- }
-
- uint32_t ret = 0;
- getauxval_func_t* func = (getauxval_func_t*)
- dlsym(libc_handle, "getauxval");
- if (!func) {
- D("Could not find getauxval() in C library\n");
- } else {
- // Note: getauxval() returns 0 on failure. Doesn't touch errno.
- ret = (uint32_t)(*func)(hwcap_type);
- }
- dlclose(libc_handle);
- return ret;
-}
-#endif
-
-#if defined(__arm__)
-// Parse /proc/self/auxv to extract the ELF HW capabilities bitmap for the
-// current CPU. Note that this file is not accessible from regular
-// application processes on some Android platform releases.
-// On success, return new ELF hwcaps, or 0 on failure.
-static uint32_t
-get_elf_hwcap_from_proc_self_auxv(void) {
- const char filepath[] = "/proc/self/auxv";
- int fd = TEMP_FAILURE_RETRY(open(filepath, O_RDONLY));
- if (fd < 0) {
- D("Could not open %s: %s\n", filepath, strerror(errno));
- return 0;
- }
-
- struct { uint32_t tag; uint32_t value; } entry;
-
- uint32_t result = 0;
- for (;;) {
- int ret = TEMP_FAILURE_RETRY(read(fd, (char*)&entry, sizeof entry));
- if (ret < 0) {
- D("Error while reading %s: %s\n", filepath, strerror(errno));
- break;
- }
- // Detect end of list.
- if (ret == 0 || (entry.tag == 0 && entry.value == 0))
- break;
- if (entry.tag == AT_HWCAP) {
- result = entry.value;
- break;
- }
- }
- close(fd);
- return result;
-}
-
-/* Compute the ELF HWCAP flags from the content of /proc/cpuinfo.
- * This works by parsing the 'Features' line, which lists which optional
- * features the device's CPU supports, on top of its reference
- * architecture.
- */
-static uint32_t
-get_elf_hwcap_from_proc_cpuinfo(const char* cpuinfo, int cpuinfo_len) {
- uint32_t hwcaps = 0;
- long architecture = 0;
- char* cpuArch = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "CPU architecture");
- if (cpuArch) {
- architecture = strtol(cpuArch, NULL, 10);
- free(cpuArch);
-
- if (architecture >= 8L) {
- // This is a 32-bit ARM binary running on a 64-bit ARM64 kernel.
- // The 'Features' line only lists the optional features that the
- // device's CPU supports, compared to its reference architecture
- // which are of no use for this process.
- D("Faking 32-bit ARM HWCaps on ARMv%ld CPU\n", architecture);
- return HWCAP_SET_FOR_ARMV8;
- }
- }
-
- char* cpuFeatures = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "Features");
- if (cpuFeatures != NULL) {
- D("Found cpuFeatures = '%s'\n", cpuFeatures);
-
- if (has_list_item(cpuFeatures, "vfp"))
- hwcaps |= HWCAP_VFP;
- if (has_list_item(cpuFeatures, "vfpv3"))
- hwcaps |= HWCAP_VFPv3;
- if (has_list_item(cpuFeatures, "vfpv3d16"))
- hwcaps |= HWCAP_VFPv3D16;
- if (has_list_item(cpuFeatures, "vfpv4"))
- hwcaps |= HWCAP_VFPv4;
- if (has_list_item(cpuFeatures, "neon"))
- hwcaps |= HWCAP_NEON;
- if (has_list_item(cpuFeatures, "idiva"))
- hwcaps |= HWCAP_IDIVA;
- if (has_list_item(cpuFeatures, "idivt"))
- hwcaps |= HWCAP_IDIVT;
- if (has_list_item(cpuFeatures, "idiv"))
- hwcaps |= HWCAP_IDIVA | HWCAP_IDIVT;
- if (has_list_item(cpuFeatures, "iwmmxt"))
- hwcaps |= HWCAP_IWMMXT;
-
- free(cpuFeatures);
- }
- return hwcaps;
-}
-#endif /* __arm__ */
-
-/* Return the number of cpus present on a given device.
- *
- * To handle all weird kernel configurations, we need to compute the
- * intersection of the 'present' and 'possible' CPU lists and count
- * the result.
- */
-static int
-get_cpu_count(void)
-{
- CpuList cpus_present[1];
- CpuList cpus_possible[1];
-
- cpulist_read_from(cpus_present, "/sys/devices/system/cpu/present");
- cpulist_read_from(cpus_possible, "/sys/devices/system/cpu/possible");
-
- /* Compute the intersection of both sets to get the actual number of
- * CPU cores that can be used on this device by the kernel.
- */
- cpulist_and(cpus_present, cpus_possible);
-
- return cpulist_count(cpus_present);
-}
-
-static void
-android_cpuInitFamily(void)
-{
-#if defined(__arm__)
- g_cpuFamily = ANDROID_CPU_FAMILY_ARM;
-#elif defined(__i386__)
- g_cpuFamily = ANDROID_CPU_FAMILY_X86;
-#elif defined(__mips64)
-/* Needs to be before __mips__ since the compiler defines both */
- g_cpuFamily = ANDROID_CPU_FAMILY_MIPS64;
-#elif defined(__mips__)
- g_cpuFamily = ANDROID_CPU_FAMILY_MIPS;
-#elif defined(__aarch64__)
- g_cpuFamily = ANDROID_CPU_FAMILY_ARM64;
-#elif defined(__x86_64__)
- g_cpuFamily = ANDROID_CPU_FAMILY_X86_64;
-#else
- g_cpuFamily = ANDROID_CPU_FAMILY_UNKNOWN;
-#endif
-}
-
-static void
-android_cpuInit(void)
-{
- char* cpuinfo = NULL;
- int cpuinfo_len;
-
- android_cpuInitFamily();
-
- g_cpuFeatures = 0;
- g_cpuCount = 1;
- g_inited = 1;
-
- cpuinfo_len = get_file_size("/proc/cpuinfo");
- if (cpuinfo_len < 0) {
- D("cpuinfo_len cannot be computed!");
- return;
- }
- cpuinfo = malloc(cpuinfo_len);
- if (cpuinfo == NULL) {
- D("cpuinfo buffer could not be allocated");
- return;
- }
- cpuinfo_len = read_file("/proc/cpuinfo", cpuinfo, cpuinfo_len);
- D("cpuinfo_len is (%d):\n%.*s\n", cpuinfo_len,
- cpuinfo_len >= 0 ? cpuinfo_len : 0, cpuinfo);
-
- if (cpuinfo_len < 0) /* should not happen */ {
- free(cpuinfo);
- return;
- }
-
- /* Count the CPU cores, the value may be 0 for single-core CPUs */
- g_cpuCount = get_cpu_count();
- if (g_cpuCount == 0) {
- g_cpuCount = 1;
- }
-
- D("found cpuCount = %d\n", g_cpuCount);
-
-#ifdef __arm__
- {
- /* Extract architecture from the "CPU Architecture" field.
- * The list is well-known, unlike the the output of
- * the 'Processor' field which can vary greatly.
- *
- * See the definition of the 'proc_arch' array in
- * $KERNEL/arch/arm/kernel/setup.c and the 'c_show' function in
- * same file.
- */
- char* cpuArch = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "CPU architecture");
-
- if (cpuArch != NULL) {
- char* end;
- long archNumber;
- int hasARMv7 = 0;
-
- D("found cpuArch = '%s'\n", cpuArch);
-
- /* read the initial decimal number, ignore the rest */
- archNumber = strtol(cpuArch, &end, 10);
-
- /* Note that ARMv8 is upwards compatible with ARMv7. */
- if (end > cpuArch && archNumber >= 7) {
- hasARMv7 = 1;
- }
-
- /* Unfortunately, it seems that certain ARMv6-based CPUs
- * report an incorrect architecture number of 7!
- *
- * See http://code.google.com/p/android/issues/detail?id=10812
- *
- * We try to correct this by looking at the 'elf_format'
- * field reported by the 'Processor' field, which is of the
- * form of "(v7l)" for an ARMv7-based CPU, and "(v6l)" for
- * an ARMv6-one.
- */
- if (hasARMv7) {
- char* cpuProc = extract_cpuinfo_field(cpuinfo, cpuinfo_len,
- "Processor");
- if (cpuProc != NULL) {
- D("found cpuProc = '%s'\n", cpuProc);
- if (has_list_item(cpuProc, "(v6l)")) {
- D("CPU processor and architecture mismatch!!\n");
- hasARMv7 = 0;
- }
- free(cpuProc);
- }
- }
-
- if (hasARMv7) {
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_ARMv7;
- }
-
- /* The LDREX / STREX instructions are available from ARMv6 */
- if (archNumber >= 6) {
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_LDREX_STREX;
- }
-
- free(cpuArch);
- }
-
- /* Extract the list of CPU features from ELF hwcaps */
- uint32_t hwcaps = 0;
- hwcaps = get_elf_hwcap_from_getauxval(AT_HWCAP);
- if (!hwcaps) {
- D("Parsing /proc/self/auxv to extract ELF hwcaps!\n");
- hwcaps = get_elf_hwcap_from_proc_self_auxv();
- }
- if (!hwcaps) {
- // Parsing /proc/self/auxv will fail from regular application
- // processes on some Android platform versions, when this happens
- // parse proc/cpuinfo instead.
- D("Parsing /proc/cpuinfo to extract ELF hwcaps!\n");
- hwcaps = get_elf_hwcap_from_proc_cpuinfo(cpuinfo, cpuinfo_len);
- }
-
- if (hwcaps != 0) {
- int has_vfp = (hwcaps & HWCAP_VFP);
- int has_vfpv3 = (hwcaps & HWCAP_VFPv3);
- int has_vfpv3d16 = (hwcaps & HWCAP_VFPv3D16);
- int has_vfpv4 = (hwcaps & HWCAP_VFPv4);
- int has_neon = (hwcaps & HWCAP_NEON);
- int has_idiva = (hwcaps & HWCAP_IDIVA);
- int has_idivt = (hwcaps & HWCAP_IDIVT);
- int has_iwmmxt = (hwcaps & HWCAP_IWMMXT);
-
- // The kernel does a poor job at ensuring consistency when
- // describing CPU features. So lots of guessing is needed.
-
- // 'vfpv4' implies VFPv3|VFP_FMA|FP16
- if (has_vfpv4)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3 |
- ANDROID_CPU_ARM_FEATURE_VFP_FP16 |
- ANDROID_CPU_ARM_FEATURE_VFP_FMA;
-
- // 'vfpv3' or 'vfpv3d16' imply VFPv3. Note that unlike GCC,
- // a value of 'vfpv3' doesn't necessarily mean that the D32
- // feature is present, so be conservative. All CPUs in the
- // field that support D32 also support NEON, so this should
- // not be a problem in practice.
- if (has_vfpv3 || has_vfpv3d16)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3;
-
- // 'vfp' is super ambiguous. Depending on the kernel, it can
- // either mean VFPv2 or VFPv3. Make it depend on ARMv7.
- if (has_vfp) {
- if (g_cpuFeatures & ANDROID_CPU_ARM_FEATURE_ARMv7)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3;
- else
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv2;
- }
-
- // Neon implies VFPv3|D32, and if vfpv4 is detected, NEON_FMA
- if (has_neon) {
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3 |
- ANDROID_CPU_ARM_FEATURE_NEON |
- ANDROID_CPU_ARM_FEATURE_VFP_D32;
- if (has_vfpv4)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_NEON_FMA;
- }
-
- // VFPv3 implies VFPv2 and ARMv7
- if (g_cpuFeatures & ANDROID_CPU_ARM_FEATURE_VFPv3)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv2 |
- ANDROID_CPU_ARM_FEATURE_ARMv7;
-
- if (has_idiva)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_IDIV_ARM;
- if (has_idivt)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_IDIV_THUMB2;
-
- if (has_iwmmxt)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_iWMMXt;
- }
-
- /* Extract the list of CPU features from ELF hwcaps2 */
- uint32_t hwcaps2 = 0;
- hwcaps2 = get_elf_hwcap_from_getauxval(AT_HWCAP2);
- if (hwcaps2 != 0) {
- int has_aes = (hwcaps2 & HWCAP2_AES);
- int has_pmull = (hwcaps2 & HWCAP2_PMULL);
- int has_sha1 = (hwcaps2 & HWCAP2_SHA1);
- int has_sha2 = (hwcaps2 & HWCAP2_SHA2);
- int has_crc32 = (hwcaps2 & HWCAP2_CRC32);
-
- if (has_aes)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_AES;
- if (has_pmull)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_PMULL;
- if (has_sha1)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_SHA1;
- if (has_sha2)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_SHA2;
- if (has_crc32)
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_CRC32;
- }
- /* Extract the cpuid value from various fields */
- // The CPUID value is broken up in several entries in /proc/cpuinfo.
- // This table is used to rebuild it from the entries.
- static const struct CpuIdEntry {
- const char* field;
- char format;
- char bit_lshift;
- char bit_length;
- } cpu_id_entries[] = {
- { "CPU implementer", 'x', 24, 8 },
- { "CPU variant", 'x', 20, 4 },
- { "CPU part", 'x', 4, 12 },
- { "CPU revision", 'd', 0, 4 },
- };
- size_t i;
- D("Parsing /proc/cpuinfo to recover CPUID\n");
- for (i = 0;
- i < sizeof(cpu_id_entries)/sizeof(cpu_id_entries[0]);
- ++i) {
- const struct CpuIdEntry* entry = &cpu_id_entries[i];
- char* value = extract_cpuinfo_field(cpuinfo,
- cpuinfo_len,
- entry->field);
- if (value == NULL)
- continue;
-
- D("field=%s value='%s'\n", entry->field, value);
- char* value_end = value + strlen(value);
- int val = 0;
- const char* start = value;
- const char* p;
- if (value[0] == '0' && (value[1] == 'x' || value[1] == 'X')) {
- start += 2;
- p = parse_hexadecimal(start, value_end, &val);
- } else if (entry->format == 'x')
- p = parse_hexadecimal(value, value_end, &val);
- else
- p = parse_decimal(value, value_end, &val);
-
- if (p > (const char*)start) {
- val &= ((1 << entry->bit_length)-1);
- val <<= entry->bit_lshift;
- g_cpuIdArm |= (uint32_t) val;
- }
-
- free(value);
- }
-
- // Handle kernel configuration bugs that prevent the correct
- // reporting of CPU features.
- static const struct CpuFix {
- uint32_t cpuid;
- uint64_t or_flags;
- } cpu_fixes[] = {
- /* The Nexus 4 (Qualcomm Krait) kernel configuration
- * forgets to report IDIV support. */
- { 0x510006f2, ANDROID_CPU_ARM_FEATURE_IDIV_ARM |
- ANDROID_CPU_ARM_FEATURE_IDIV_THUMB2 },
- { 0x510006f3, ANDROID_CPU_ARM_FEATURE_IDIV_ARM |
- ANDROID_CPU_ARM_FEATURE_IDIV_THUMB2 },
- };
- size_t n;
- for (n = 0; n < sizeof(cpu_fixes)/sizeof(cpu_fixes[0]); ++n) {
- const struct CpuFix* entry = &cpu_fixes[n];
-
- if (g_cpuIdArm == entry->cpuid)
- g_cpuFeatures |= entry->or_flags;
- }
-
- // Special case: The emulator-specific Android 4.2 kernel fails
- // to report support for the 32-bit ARM IDIV instruction.
- // Technically, this is a feature of the virtual CPU implemented
- // by the emulator. Note that it could also support Thumb IDIV
- // in the future, and this will have to be slightly updated.
- char* hardware = extract_cpuinfo_field(cpuinfo,
- cpuinfo_len,
- "Hardware");
- if (hardware) {
- if (!strcmp(hardware, "Goldfish") &&
- g_cpuIdArm == 0x4100c080 &&
- (g_cpuFamily & ANDROID_CPU_ARM_FEATURE_ARMv7) != 0) {
- g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_IDIV_ARM;
- }
- free(hardware);
- }
- }
-#endif /* __arm__ */
-#ifdef __aarch64__
- {
- /* Extract the list of CPU features from ELF hwcaps */
- uint32_t hwcaps = 0;
- hwcaps = get_elf_hwcap_from_getauxval(AT_HWCAP);
- if (hwcaps != 0) {
- int has_fp = (hwcaps & HWCAP_FP);
- int has_asimd = (hwcaps & HWCAP_ASIMD);
- int has_aes = (hwcaps & HWCAP_AES);
- int has_pmull = (hwcaps & HWCAP_PMULL);
- int has_sha1 = (hwcaps & HWCAP_SHA1);
- int has_sha2 = (hwcaps & HWCAP_SHA2);
- int has_crc32 = (hwcaps & HWCAP_CRC32);
-
- if(has_fp == 0) {
- D("ERROR: Floating-point unit missing, but is required by Android on AArch64 CPUs\n");
- }
- if(has_asimd == 0) {
- D("ERROR: ASIMD unit missing, but is required by Android on AArch64 CPUs\n");
- }
-
- if (has_fp)
- g_cpuFeatures |= ANDROID_CPU_ARM64_FEATURE_FP;
- if (has_asimd)
- g_cpuFeatures |= ANDROID_CPU_ARM64_FEATURE_ASIMD;
- if (has_aes)
- g_cpuFeatures |= ANDROID_CPU_ARM64_FEATURE_AES;
- if (has_pmull)
- g_cpuFeatures |= ANDROID_CPU_ARM64_FEATURE_PMULL;
- if (has_sha1)
- g_cpuFeatures |= ANDROID_CPU_ARM64_FEATURE_SHA1;
- if (has_sha2)
- g_cpuFeatures |= ANDROID_CPU_ARM64_FEATURE_SHA2;
- if (has_crc32)
- g_cpuFeatures |= ANDROID_CPU_ARM64_FEATURE_CRC32;
- }
- }
-#endif /* __aarch64__ */
-
-#if defined(__i386__) || defined(__x86_64__)
- int regs[4];
-
-/* According to http://en.wikipedia.org/wiki/CPUID */
-#define VENDOR_INTEL_b 0x756e6547
-#define VENDOR_INTEL_c 0x6c65746e
-#define VENDOR_INTEL_d 0x49656e69
-
- x86_cpuid(0, regs);
- int vendorIsIntel = (regs[1] == VENDOR_INTEL_b &&
- regs[2] == VENDOR_INTEL_c &&
- regs[3] == VENDOR_INTEL_d);
-
- x86_cpuid(1, regs);
- if ((regs[2] & (1 << 9)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_SSSE3;
- }
- if ((regs[2] & (1 << 23)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_POPCNT;
- }
- if ((regs[2] & (1 << 19)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_SSE4_1;
- }
- if ((regs[2] & (1 << 20)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_SSE4_2;
- }
- if (vendorIsIntel && (regs[2] & (1 << 22)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_MOVBE;
- }
- if ((regs[2] & (1 << 25)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_AES_NI;
- }
- if ((regs[2] & (1 << 28)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_AVX;
- }
- if ((regs[2] & (1 << 30)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_RDRAND;
- }
-
- x86_cpuid(7, regs);
- if ((regs[1] & (1 << 5)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_AVX2;
- }
- if ((regs[1] & (1 << 29)) != 0) {
- g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_SHA_NI;
- }
-
-
-#endif
-#if defined( __mips__)
- { /* MIPS and MIPS64 */
- /* Extract the list of CPU features from ELF hwcaps */
- uint32_t hwcaps = 0;
- hwcaps = get_elf_hwcap_from_getauxval(AT_HWCAP);
- if (hwcaps != 0) {
- int has_r6 = (hwcaps & HWCAP_MIPS_R6);
- int has_msa = (hwcaps & HWCAP_MIPS_MSA);
- if (has_r6)
- g_cpuFeatures |= ANDROID_CPU_MIPS_FEATURE_R6;
- if (has_msa)
- g_cpuFeatures |= ANDROID_CPU_MIPS_FEATURE_MSA;
- }
- }
-#endif /* __mips__ */
-
- free(cpuinfo);
-}
-
-
-AndroidCpuFamily
-android_getCpuFamily(void)
-{
- pthread_once(&g_once, android_cpuInit);
- return g_cpuFamily;
-}
-
-
-uint64_t
-android_getCpuFeatures(void)
-{
- pthread_once(&g_once, android_cpuInit);
- return g_cpuFeatures;
-}
-
-
-int
-android_getCpuCount(void)
-{
- pthread_once(&g_once, android_cpuInit);
- return g_cpuCount;
-}
-
-static void
-android_cpuInitDummy(void)
-{
- g_inited = 1;
-}
-
-int
-android_setCpu(int cpu_count, uint64_t cpu_features)
-{
- /* Fail if the library was already initialized. */
- if (g_inited)
- return 0;
-
- android_cpuInitFamily();
- g_cpuCount = (cpu_count <= 0 ? 1 : cpu_count);
- g_cpuFeatures = cpu_features;
- pthread_once(&g_once, android_cpuInitDummy);
-
- return 1;
-}
-
-#ifdef __arm__
-uint32_t
-android_getCpuIdArm(void)
-{
- pthread_once(&g_once, android_cpuInit);
- return g_cpuIdArm;
-}
-
-int
-android_setCpuArm(int cpu_count, uint64_t cpu_features, uint32_t cpu_id)
-{
- if (!android_setCpu(cpu_count, cpu_features))
- return 0;
-
- g_cpuIdArm = cpu_id;
- return 1;
-}
-#endif /* __arm__ */
-
-/*
- * Technical note: Making sense of ARM's FPU architecture versions.
- *
- * FPA was ARM's first attempt at an FPU architecture. There is no Android
- * device that actually uses it since this technology was already obsolete
- * when the project started. If you see references to FPA instructions
- * somewhere, you can be sure that this doesn't apply to Android at all.
- *
- * FPA was followed by "VFP", soon renamed "VFPv1" due to the emergence of
- * new versions / additions to it. ARM considers this obsolete right now,
- * and no known Android device implements it either.
- *
- * VFPv2 added a few instructions to VFPv1, and is an *optional* extension
- * supported by some ARMv5TE, ARMv6 and ARMv6T2 CPUs. Note that a device
- * supporting the 'armeabi' ABI doesn't necessarily support these.
- *
- * VFPv3-D16 adds a few instructions on top of VFPv2 and is typically used
- * on ARMv7-A CPUs which implement a FPU. Note that it is also mandated
- * by the Android 'armeabi-v7a' ABI. The -D16 suffix in its name means
- * that it provides 16 double-precision FPU registers (d0-d15) and 32
- * single-precision ones (s0-s31) which happen to be mapped to the same
- * register banks.
- *
- * VFPv3-D32 is the name of an extension to VFPv3-D16 that provides 16
- * additional double precision registers (d16-d31). Note that there are
- * still only 32 single precision registers.
- *
- * VFPv3xD is a *subset* of VFPv3-D16 that only provides single-precision
- * registers. It is only used on ARMv7-M (i.e. on micro-controllers) which
- * are not supported by Android. Note that it is not compatible with VFPv2.
- *
- * NOTE: The term 'VFPv3' usually designate either VFPv3-D16 or VFPv3-D32
- * depending on context. For example GCC uses it for VFPv3-D32, but
- * the Linux kernel code uses it for VFPv3-D16 (especially in
- * /proc/cpuinfo). Always try to use the full designation when
- * possible.
- *
- * NEON, a.k.a. "ARM Advanced SIMD" is an extension that provides
- * instructions to perform parallel computations on vectors of 8, 16,
- * 32, 64 and 128 bit quantities. NEON requires VFPv32-D32 since all
- * NEON registers are also mapped to the same register banks.
- *
- * VFPv4-D16, adds a few instructions on top of VFPv3-D16 in order to
- * perform fused multiply-accumulate on VFP registers, as well as
- * half-precision (16-bit) conversion operations.
- *
- * VFPv4-D32 is VFPv4-D16 with 32, instead of 16, FPU double precision
- * registers.
- *
- * VPFv4-NEON is VFPv4-D32 with NEON instructions. It also adds fused
- * multiply-accumulate instructions that work on the NEON registers.
- *
- * NOTE: Similarly, "VFPv4" might either reference VFPv4-D16 or VFPv4-D32
- * depending on context.
- *
- * The following information was determined by scanning the binutils-2.22
- * sources:
- *
- * Basic VFP instruction subsets:
- *
- * #define FPU_VFP_EXT_V1xD 0x08000000 // Base VFP instruction set.
- * #define FPU_VFP_EXT_V1 0x04000000 // Double-precision insns.
- * #define FPU_VFP_EXT_V2 0x02000000 // ARM10E VFPr1.
- * #define FPU_VFP_EXT_V3xD 0x01000000 // VFPv3 single-precision.
- * #define FPU_VFP_EXT_V3 0x00800000 // VFPv3 double-precision.
- * #define FPU_NEON_EXT_V1 0x00400000 // Neon (SIMD) insns.
- * #define FPU_VFP_EXT_D32 0x00200000 // Registers D16-D31.
- * #define FPU_VFP_EXT_FP16 0x00100000 // Half-precision extensions.
- * #define FPU_NEON_EXT_FMA 0x00080000 // Neon fused multiply-add
- * #define FPU_VFP_EXT_FMA 0x00040000 // VFP fused multiply-add
- *
- * FPU types (excluding NEON)
- *
- * FPU_VFP_V1xD (EXT_V1xD)
- * |
- * +--------------------------+
- * | |
- * FPU_VFP_V1 (+EXT_V1) FPU_VFP_V3xD (+EXT_V2+EXT_V3xD)
- * | |
- * | |
- * FPU_VFP_V2 (+EXT_V2) FPU_VFP_V4_SP_D16 (+EXT_FP16+EXT_FMA)
- * |
- * FPU_VFP_V3D16 (+EXT_Vx3D+EXT_V3)
- * |
- * +--------------------------+
- * | |
- * FPU_VFP_V3 (+EXT_D32) FPU_VFP_V4D16 (+EXT_FP16+EXT_FMA)
- * | |
- * | FPU_VFP_V4 (+EXT_D32)
- * |
- * FPU_VFP_HARD (+EXT_FMA+NEON_EXT_FMA)
- *
- * VFP architectures:
- *
- * ARCH_VFP_V1xD (EXT_V1xD)
- * |
- * +------------------+
- * | |
- * | ARCH_VFP_V3xD (+EXT_V2+EXT_V3xD)
- * | |
- * | ARCH_VFP_V3xD_FP16 (+EXT_FP16)
- * | |
- * | ARCH_VFP_V4_SP_D16 (+EXT_FMA)
- * |
- * ARCH_VFP_V1 (+EXT_V1)
- * |
- * ARCH_VFP_V2 (+EXT_V2)
- * |
- * ARCH_VFP_V3D16 (+EXT_V3xD+EXT_V3)
- * |
- * +-------------------+
- * | |
- * | ARCH_VFP_V3D16_FP16 (+EXT_FP16)
- * |
- * +-------------------+
- * | |
- * | ARCH_VFP_V4_D16 (+EXT_FP16+EXT_FMA)
- * | |
- * | ARCH_VFP_V4 (+EXT_D32)
- * | |
- * | ARCH_NEON_VFP_V4 (+EXT_NEON+EXT_NEON_FMA)
- * |
- * ARCH_VFP_V3 (+EXT_D32)
- * |
- * +-------------------+
- * | |
- * | ARCH_VFP_V3_FP16 (+EXT_FP16)
- * |
- * ARCH_VFP_V3_PLUS_NEON_V1 (+EXT_NEON)
- * |
- * ARCH_NEON_FP16 (+EXT_FP16)
- *
- * -fpu=<name> values and their correspondance with FPU architectures above:
- *
- * {"vfp", FPU_ARCH_VFP_V2},
- * {"vfp9", FPU_ARCH_VFP_V2},
- * {"vfp3", FPU_ARCH_VFP_V3}, // For backwards compatbility.
- * {"vfp10", FPU_ARCH_VFP_V2},
- * {"vfp10-r0", FPU_ARCH_VFP_V1},
- * {"vfpxd", FPU_ARCH_VFP_V1xD},
- * {"vfpv2", FPU_ARCH_VFP_V2},
- * {"vfpv3", FPU_ARCH_VFP_V3},
- * {"vfpv3-fp16", FPU_ARCH_VFP_V3_FP16},
- * {"vfpv3-d16", FPU_ARCH_VFP_V3D16},
- * {"vfpv3-d16-fp16", FPU_ARCH_VFP_V3D16_FP16},
- * {"vfpv3xd", FPU_ARCH_VFP_V3xD},
- * {"vfpv3xd-fp16", FPU_ARCH_VFP_V3xD_FP16},
- * {"neon", FPU_ARCH_VFP_V3_PLUS_NEON_V1},
- * {"neon-fp16", FPU_ARCH_NEON_FP16},
- * {"vfpv4", FPU_ARCH_VFP_V4},
- * {"vfpv4-d16", FPU_ARCH_VFP_V4D16},
- * {"fpv4-sp-d16", FPU_ARCH_VFP_V4_SP_D16},
- * {"neon-vfpv4", FPU_ARCH_NEON_VFP_V4},
- *
- *
- * Simplified diagram that only includes FPUs supported by Android:
- * Only ARCH_VFP_V3D16 is actually mandated by the armeabi-v7a ABI,
- * all others are optional and must be probed at runtime.
- *
- * ARCH_VFP_V3D16 (EXT_V1xD+EXT_V1+EXT_V2+EXT_V3xD+EXT_V3)
- * |
- * +-------------------+
- * | |
- * | ARCH_VFP_V3D16_FP16 (+EXT_FP16)
- * |
- * +-------------------+
- * | |
- * | ARCH_VFP_V4_D16 (+EXT_FP16+EXT_FMA)
- * | |
- * | ARCH_VFP_V4 (+EXT_D32)
- * | |
- * | ARCH_NEON_VFP_V4 (+EXT_NEON+EXT_NEON_FMA)
- * |
- * ARCH_VFP_V3 (+EXT_D32)
- * |
- * +-------------------+
- * | |
- * | ARCH_VFP_V3_FP16 (+EXT_FP16)
- * |
- * ARCH_VFP_V3_PLUS_NEON_V1 (+EXT_NEON)
- * |
- * ARCH_NEON_FP16 (+EXT_FP16)
- *
- */
diff --git a/thirdparty/libvpx/third_party/android/cpu-features.h b/thirdparty/libvpx/third_party/android/cpu-features.h
deleted file mode 100644
index 1e9724197a..0000000000
--- a/thirdparty/libvpx/third_party/android/cpu-features.h
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef CPU_FEATURES_H
-#define CPU_FEATURES_H
-
-#include <sys/cdefs.h>
-#include <stdint.h>
-
-__BEGIN_DECLS
-
-/* A list of valid values returned by android_getCpuFamily().
- * They describe the CPU Architecture of the current process.
- */
-typedef enum {
- ANDROID_CPU_FAMILY_UNKNOWN = 0,
- ANDROID_CPU_FAMILY_ARM,
- ANDROID_CPU_FAMILY_X86,
- ANDROID_CPU_FAMILY_MIPS,
- ANDROID_CPU_FAMILY_ARM64,
- ANDROID_CPU_FAMILY_X86_64,
- ANDROID_CPU_FAMILY_MIPS64,
-
- ANDROID_CPU_FAMILY_MAX /* do not remove */
-
-} AndroidCpuFamily;
-
-/* Return the CPU family of the current process.
- *
- * Note that this matches the bitness of the current process. I.e. when
- * running a 32-bit binary on a 64-bit capable CPU, this will return the
- * 32-bit CPU family value.
- */
-extern AndroidCpuFamily android_getCpuFamily(void);
-
-/* Return a bitmap describing a set of optional CPU features that are
- * supported by the current device's CPU. The exact bit-flags returned
- * depend on the value returned by android_getCpuFamily(). See the
- * documentation for the ANDROID_CPU_*_FEATURE_* flags below for details.
- */
-extern uint64_t android_getCpuFeatures(void);
-
-/* The list of feature flags for ANDROID_CPU_FAMILY_ARM that can be
- * recognized by the library (see note below for 64-bit ARM). Value details
- * are:
- *
- * VFPv2:
- * CPU supports the VFPv2 instruction set. Many, but not all, ARMv6 CPUs
- * support these instructions. VFPv2 is a subset of VFPv3 so this will
- * be set whenever VFPv3 is set too.
- *
- * ARMv7:
- * CPU supports the ARMv7-A basic instruction set.
- * This feature is mandated by the 'armeabi-v7a' ABI.
- *
- * VFPv3:
- * CPU supports the VFPv3-D16 instruction set, providing hardware FPU
- * support for single and double precision floating point registers.
- * Note that only 16 FPU registers are available by default, unless
- * the D32 bit is set too. This feature is also mandated by the
- * 'armeabi-v7a' ABI.
- *
- * VFP_D32:
- * CPU VFP optional extension that provides 32 FPU registers,
- * instead of 16. Note that ARM mandates this feature is the 'NEON'
- * feature is implemented by the CPU.
- *
- * NEON:
- * CPU FPU supports "ARM Advanced SIMD" instructions, also known as
- * NEON. Note that this mandates the VFP_D32 feature as well, per the
- * ARM Architecture specification.
- *
- * VFP_FP16:
- * Half-width floating precision VFP extension. If set, the CPU
- * supports instructions to perform floating-point operations on
- * 16-bit registers. This is part of the VFPv4 specification, but
- * not mandated by any Android ABI.
- *
- * VFP_FMA:
- * Fused multiply-accumulate VFP instructions extension. Also part of
- * the VFPv4 specification, but not mandated by any Android ABI.
- *
- * NEON_FMA:
- * Fused multiply-accumulate NEON instructions extension. Optional
- * extension from the VFPv4 specification, but not mandated by any
- * Android ABI.
- *
- * IDIV_ARM:
- * Integer division available in ARM mode. Only available
- * on recent CPUs (e.g. Cortex-A15).
- *
- * IDIV_THUMB2:
- * Integer division available in Thumb-2 mode. Only available
- * on recent CPUs (e.g. Cortex-A15).
- *
- * iWMMXt:
- * Optional extension that adds MMX registers and operations to an
- * ARM CPU. This is only available on a few XScale-based CPU designs
- * sold by Marvell. Pretty rare in practice.
- *
- * AES:
- * CPU supports AES instructions. These instructions are only
- * available for 32-bit applications running on ARMv8 CPU.
- *
- * CRC32:
- * CPU supports CRC32 instructions. These instructions are only
- * available for 32-bit applications running on ARMv8 CPU.
- *
- * SHA2:
- * CPU supports SHA2 instructions. These instructions are only
- * available for 32-bit applications running on ARMv8 CPU.
- *
- * SHA1:
- * CPU supports SHA1 instructions. These instructions are only
- * available for 32-bit applications running on ARMv8 CPU.
- *
- * PMULL:
- * CPU supports 64-bit PMULL and PMULL2 instructions. These
- * instructions are only available for 32-bit applications
- * running on ARMv8 CPU.
- *
- * If you want to tell the compiler to generate code that targets one of
- * the feature set above, you should probably use one of the following
- * flags (for more details, see technical note at the end of this file):
- *
- * -mfpu=vfp
- * -mfpu=vfpv2
- * These are equivalent and tell GCC to use VFPv2 instructions for
- * floating-point operations. Use this if you want your code to
- * run on *some* ARMv6 devices, and any ARMv7-A device supported
- * by Android.
- *
- * Generated code requires VFPv2 feature.
- *
- * -mfpu=vfpv3-d16
- * Tell GCC to use VFPv3 instructions (using only 16 FPU registers).
- * This should be generic code that runs on any CPU that supports the
- * 'armeabi-v7a' Android ABI. Note that no ARMv6 CPU supports this.
- *
- * Generated code requires VFPv3 feature.
- *
- * -mfpu=vfpv3
- * Tell GCC to use VFPv3 instructions with 32 FPU registers.
- * Generated code requires VFPv3|VFP_D32 features.
- *
- * -mfpu=neon
- * Tell GCC to use VFPv3 instructions with 32 FPU registers, and
- * also support NEON intrinsics (see <arm_neon.h>).
- * Generated code requires VFPv3|VFP_D32|NEON features.
- *
- * -mfpu=vfpv4-d16
- * Generated code requires VFPv3|VFP_FP16|VFP_FMA features.
- *
- * -mfpu=vfpv4
- * Generated code requires VFPv3|VFP_FP16|VFP_FMA|VFP_D32 features.
- *
- * -mfpu=neon-vfpv4
- * Generated code requires VFPv3|VFP_FP16|VFP_FMA|VFP_D32|NEON|NEON_FMA
- * features.
- *
- * -mcpu=cortex-a7
- * -mcpu=cortex-a15
- * Generated code requires VFPv3|VFP_FP16|VFP_FMA|VFP_D32|
- * NEON|NEON_FMA|IDIV_ARM|IDIV_THUMB2
- * This flag implies -mfpu=neon-vfpv4.
- *
- * -mcpu=iwmmxt
- * Allows the use of iWMMXt instrinsics with GCC.
- *
- * IMPORTANT NOTE: These flags should only be tested when
- * android_getCpuFamily() returns ANDROID_CPU_FAMILY_ARM, i.e. this is a
- * 32-bit process.
- *
- * When running a 64-bit ARM process on an ARMv8 CPU,
- * android_getCpuFeatures() will return a different set of bitflags
- */
-enum {
- ANDROID_CPU_ARM_FEATURE_ARMv7 = (1 << 0),
- ANDROID_CPU_ARM_FEATURE_VFPv3 = (1 << 1),
- ANDROID_CPU_ARM_FEATURE_NEON = (1 << 2),
- ANDROID_CPU_ARM_FEATURE_LDREX_STREX = (1 << 3),
- ANDROID_CPU_ARM_FEATURE_VFPv2 = (1 << 4),
- ANDROID_CPU_ARM_FEATURE_VFP_D32 = (1 << 5),
- ANDROID_CPU_ARM_FEATURE_VFP_FP16 = (1 << 6),
- ANDROID_CPU_ARM_FEATURE_VFP_FMA = (1 << 7),
- ANDROID_CPU_ARM_FEATURE_NEON_FMA = (1 << 8),
- ANDROID_CPU_ARM_FEATURE_IDIV_ARM = (1 << 9),
- ANDROID_CPU_ARM_FEATURE_IDIV_THUMB2 = (1 << 10),
- ANDROID_CPU_ARM_FEATURE_iWMMXt = (1 << 11),
- ANDROID_CPU_ARM_FEATURE_AES = (1 << 12),
- ANDROID_CPU_ARM_FEATURE_PMULL = (1 << 13),
- ANDROID_CPU_ARM_FEATURE_SHA1 = (1 << 14),
- ANDROID_CPU_ARM_FEATURE_SHA2 = (1 << 15),
- ANDROID_CPU_ARM_FEATURE_CRC32 = (1 << 16),
-};
-
-/* The bit flags corresponding to the output of android_getCpuFeatures()
- * when android_getCpuFamily() returns ANDROID_CPU_FAMILY_ARM64. Value details
- * are:
- *
- * FP:
- * CPU has Floating-point unit.
- *
- * ASIMD:
- * CPU has Advanced SIMD unit.
- *
- * AES:
- * CPU supports AES instructions.
- *
- * CRC32:
- * CPU supports CRC32 instructions.
- *
- * SHA2:
- * CPU supports SHA2 instructions.
- *
- * SHA1:
- * CPU supports SHA1 instructions.
- *
- * PMULL:
- * CPU supports 64-bit PMULL and PMULL2 instructions.
- */
-enum {
- ANDROID_CPU_ARM64_FEATURE_FP = (1 << 0),
- ANDROID_CPU_ARM64_FEATURE_ASIMD = (1 << 1),
- ANDROID_CPU_ARM64_FEATURE_AES = (1 << 2),
- ANDROID_CPU_ARM64_FEATURE_PMULL = (1 << 3),
- ANDROID_CPU_ARM64_FEATURE_SHA1 = (1 << 4),
- ANDROID_CPU_ARM64_FEATURE_SHA2 = (1 << 5),
- ANDROID_CPU_ARM64_FEATURE_CRC32 = (1 << 6),
-};
-
-/* The bit flags corresponding to the output of android_getCpuFeatures()
- * when android_getCpuFamily() returns ANDROID_CPU_FAMILY_X86 or
- * ANDROID_CPU_FAMILY_X86_64.
- */
-enum {
- ANDROID_CPU_X86_FEATURE_SSSE3 = (1 << 0),
- ANDROID_CPU_X86_FEATURE_POPCNT = (1 << 1),
- ANDROID_CPU_X86_FEATURE_MOVBE = (1 << 2),
- ANDROID_CPU_X86_FEATURE_SSE4_1 = (1 << 3),
- ANDROID_CPU_X86_FEATURE_SSE4_2 = (1 << 4),
- ANDROID_CPU_X86_FEATURE_AES_NI = (1 << 5),
- ANDROID_CPU_X86_FEATURE_AVX = (1 << 6),
- ANDROID_CPU_X86_FEATURE_RDRAND = (1 << 7),
- ANDROID_CPU_X86_FEATURE_AVX2 = (1 << 8),
- ANDROID_CPU_X86_FEATURE_SHA_NI = (1 << 9),
-};
-
-/* The bit flags corresponding to the output of android_getCpuFeatures()
- * when android_getCpuFamily() returns ANDROID_CPU_FAMILY_MIPS
- * or ANDROID_CPU_FAMILY_MIPS64. Values are:
- *
- * R6:
- * CPU executes MIPS Release 6 instructions natively, and
- * supports obsoleted R1..R5 instructions only via kernel traps.
- *
- * MSA:
- * CPU supports Mips SIMD Architecture instructions.
- */
-enum {
- ANDROID_CPU_MIPS_FEATURE_R6 = (1 << 0),
- ANDROID_CPU_MIPS_FEATURE_MSA = (1 << 1),
-};
-
-
-/* Return the number of CPU cores detected on this device. */
-extern int android_getCpuCount(void);
-
-/* The following is used to force the CPU count and features
- * mask in sandboxed processes. Under 4.1 and higher, these processes
- * cannot access /proc, which is the only way to get information from
- * the kernel about the current hardware (at least on ARM).
- *
- * It _must_ be called only once, and before any android_getCpuXXX
- * function, any other case will fail.
- *
- * This function return 1 on success, and 0 on failure.
- */
-extern int android_setCpu(int cpu_count,
- uint64_t cpu_features);
-
-#ifdef __arm__
-/* Retrieve the ARM 32-bit CPUID value from the kernel.
- * Note that this cannot work on sandboxed processes under 4.1 and
- * higher, unless you called android_setCpuArm() before.
- */
-extern uint32_t android_getCpuIdArm(void);
-
-/* An ARM-specific variant of android_setCpu() that also allows you
- * to set the ARM CPUID field.
- */
-extern int android_setCpuArm(int cpu_count,
- uint64_t cpu_features,
- uint32_t cpu_id);
-#endif
-
-__END_DECLS
-
-#endif /* CPU_FEATURES_H */
diff --git a/thirdparty/libvpx/third_party/x86inc/LICENSE b/thirdparty/libvpx/third_party/x86inc/LICENSE
deleted file mode 100644
index 7d07645a17..0000000000
--- a/thirdparty/libvpx/third_party/x86inc/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright (C) 2005-2012 x264 project
-
-Authors: Loren Merritt <lorenm@u.washington.edu>
- Anton Mitrofanov <BugMaster@narod.ru>
- Jason Garrett-Glaser <darkshikari@gmail.com>
- Henrik Gramner <hengar-6@student.ltu.se>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/thirdparty/libvpx/third_party/x86inc/README.libvpx b/thirdparty/libvpx/third_party/x86inc/README.libvpx
deleted file mode 100644
index 8d3cd966da..0000000000
--- a/thirdparty/libvpx/third_party/x86inc/README.libvpx
+++ /dev/null
@@ -1,20 +0,0 @@
-URL: https://git.videolan.org/git/x264.git
-Version: d23d18655249944c1ca894b451e2c82c7a584c62
-License: ISC
-License File: LICENSE
-
-Description:
-x264/libav's framework for x86 assembly. Contains a variety of macros and
-defines that help automatically allow assembly to work cross-platform.
-
-Local Modifications:
-Get configuration from vpx_config.asm.
-Prefix functions with vpx by default.
-Manage name mangling (prefixing with '_') manually because 'PREFIX' does not
- exist in libvpx.
-Expand PIC default to macho64 and respect CONFIG_PIC from libvpx
-Set 'private_extern' visibility for macho targets.
-Copy PIC 'GLOBAL' macros from x86_abi_support.asm
-Use .text instead of .rodata on macho to avoid broken tables in PIC mode.
-Use .text with no alignment for aout
-Only use 'hidden' visibility with Chromium
diff --git a/thirdparty/libvpx/third_party/x86inc/x86inc.asm b/thirdparty/libvpx/third_party/x86inc/x86inc.asm
deleted file mode 100644
index b647dff2f8..0000000000
--- a/thirdparty/libvpx/third_party/x86inc/x86inc.asm
+++ /dev/null
@@ -1,1649 +0,0 @@
-;*****************************************************************************
-;* x86inc.asm: x264asm abstraction layer
-;*****************************************************************************
-;* Copyright (C) 2005-2016 x264 project
-;*
-;* Authors: Loren Merritt <lorenm@u.washington.edu>
-;* Anton Mitrofanov <BugMaster@narod.ru>
-;* Fiona Glaser <fiona@x264.com>
-;* Henrik Gramner <henrik@gramner.com>
-;*
-;* Permission to use, copy, modify, and/or distribute this software for any
-;* purpose with or without fee is hereby granted, provided that the above
-;* copyright notice and this permission notice appear in all copies.
-;*
-;* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-;* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-;* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-;* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-;* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-;* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-;* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-;*****************************************************************************
-
-; This is a header file for the x264ASM assembly language, which uses
-; NASM/YASM syntax combined with a large number of macros to provide easy
-; abstraction between different calling conventions (x86_32, win64, linux64).
-; It also has various other useful features to simplify writing the kind of
-; DSP functions that are most often used in x264.
-
-; Unlike the rest of x264, this file is available under an ISC license, as it
-; has significant usefulness outside of x264 and we want it to be available
-; to the largest audience possible. Of course, if you modify it for your own
-; purposes to add a new feature, we strongly encourage contributing a patch
-; as this feature might be useful for others as well. Send patches or ideas
-; to x264-devel@videolan.org .
-
-%include "vpx_config.asm"
-
-%ifndef private_prefix
- %define private_prefix vpx
-%endif
-
-%ifndef public_prefix
- %define public_prefix private_prefix
-%endif
-
-%ifndef STACK_ALIGNMENT
- %if ARCH_X86_64
- %define STACK_ALIGNMENT 16
- %else
- %define STACK_ALIGNMENT 4
- %endif
-%endif
-
-%define WIN64 0
-%define UNIX64 0
-%if ARCH_X86_64
- %ifidn __OUTPUT_FORMAT__,win32
- %define WIN64 1
- %elifidn __OUTPUT_FORMAT__,win64
- %define WIN64 1
- %elifidn __OUTPUT_FORMAT__,x64
- %define WIN64 1
- %else
- %define UNIX64 1
- %endif
-%endif
-
-%define FORMAT_ELF 0
-%ifidn __OUTPUT_FORMAT__,elf
- %define FORMAT_ELF 1
-%elifidn __OUTPUT_FORMAT__,elf32
- %define FORMAT_ELF 1
-%elifidn __OUTPUT_FORMAT__,elf64
- %define FORMAT_ELF 1
-%endif
-
-%define FORMAT_MACHO 0
-%ifidn __OUTPUT_FORMAT__,macho32
- %define FORMAT_MACHO 1
-%elifidn __OUTPUT_FORMAT__,macho64
- %define FORMAT_MACHO 1
-%endif
-
-; Set PREFIX for libvpx builds.
-%if FORMAT_ELF
- %undef PREFIX
-%elif WIN64
- %undef PREFIX
-%else
- %define PREFIX
-%endif
-
-%ifdef PREFIX
- %define mangle(x) _ %+ x
-%else
- %define mangle(x) x
-%endif
-
-; In some instances macho32 tables get misaligned when using .rodata.
-; When looking at the disassembly it appears that the offset is either
-; correct or consistently off by 90. Placing them in the .text section
-; works around the issue. It appears to be specific to the way libvpx
-; handles the tables.
-%macro SECTION_RODATA 0-1 16
- %ifidn __OUTPUT_FORMAT__,macho32
- SECTION .text align=%1
- fakegot:
- %elifidn __OUTPUT_FORMAT__,aout
- SECTION .text
- %else
- SECTION .rodata align=%1
- %endif
-%endmacro
-
-; PIC macros are copied from vpx_ports/x86_abi_support.asm. The "define PIC"
-; from original code is added in for 64bit.
-%ifidn __OUTPUT_FORMAT__,elf32
-%define ABI_IS_32BIT 1
-%elifidn __OUTPUT_FORMAT__,macho32
-%define ABI_IS_32BIT 1
-%elifidn __OUTPUT_FORMAT__,win32
-%define ABI_IS_32BIT 1
-%elifidn __OUTPUT_FORMAT__,aout
-%define ABI_IS_32BIT 1
-%else
-%define ABI_IS_32BIT 0
-%endif
-
-%if ABI_IS_32BIT
- %if CONFIG_PIC=1
- %ifidn __OUTPUT_FORMAT__,elf32
- %define GET_GOT_DEFINED 1
- %define WRT_PLT wrt ..plt
- %macro GET_GOT 1
- extern _GLOBAL_OFFSET_TABLE_
- push %1
- call %%get_got
- %%sub_offset:
- jmp %%exitGG
- %%get_got:
- mov %1, [esp]
- add %1, _GLOBAL_OFFSET_TABLE_ + $$ - %%sub_offset wrt ..gotpc
- ret
- %%exitGG:
- %undef GLOBAL
- %define GLOBAL(x) x + %1 wrt ..gotoff
- %undef RESTORE_GOT
- %define RESTORE_GOT pop %1
- %endmacro
- %elifidn __OUTPUT_FORMAT__,macho32
- %define GET_GOT_DEFINED 1
- %macro GET_GOT 1
- push %1
- call %%get_got
- %%get_got:
- pop %1
- %undef GLOBAL
- %define GLOBAL(x) x + %1 - %%get_got
- %undef RESTORE_GOT
- %define RESTORE_GOT pop %1
- %endmacro
- %else
- %define GET_GOT_DEFINED 0
- %endif
- %endif
-
- %if ARCH_X86_64 == 0
- %undef PIC
- %endif
-
-%else
- %macro GET_GOT 1
- %endmacro
- %define GLOBAL(x) rel x
- %define WRT_PLT wrt ..plt
-
- %if WIN64
- %define PIC
- %elifidn __OUTPUT_FORMAT__,macho64
- %define PIC
- %elif CONFIG_PIC
- %define PIC
- %endif
-%endif
-
-%ifnmacro GET_GOT
- %macro GET_GOT 1
- %endmacro
- %define GLOBAL(x) x
-%endif
-%ifndef RESTORE_GOT
- %define RESTORE_GOT
-%endif
-%ifndef WRT_PLT
- %define WRT_PLT
-%endif
-
-%ifdef PIC
- default rel
-%endif
-
-%ifndef GET_GOT_DEFINED
- %define GET_GOT_DEFINED 0
-%endif
-; Done with PIC macros
-
-%ifdef __NASM_VER__
- %use smartalign
-%endif
-
-; Macros to eliminate most code duplication between x86_32 and x86_64:
-; Currently this works only for leaf functions which load all their arguments
-; into registers at the start, and make no other use of the stack. Luckily that
-; covers most of x264's asm.
-
-; PROLOGUE:
-; %1 = number of arguments. loads them from stack if needed.
-; %2 = number of registers used. pushes callee-saved regs if needed.
-; %3 = number of xmm registers used. pushes callee-saved xmm regs if needed.
-; %4 = (optional) stack size to be allocated. The stack will be aligned before
-; allocating the specified stack size. If the required stack alignment is
-; larger than the known stack alignment the stack will be manually aligned
-; and an extra register will be allocated to hold the original stack
-; pointer (to not invalidate r0m etc.). To prevent the use of an extra
-; register as stack pointer, request a negative stack size.
-; %4+/%5+ = list of names to define to registers
-; PROLOGUE can also be invoked by adding the same options to cglobal
-
-; e.g.
-; cglobal foo, 2,3,7,0x40, dst, src, tmp
-; declares a function (foo) that automatically loads two arguments (dst and
-; src) into registers, uses one additional register (tmp) plus 7 vector
-; registers (m0-m6) and allocates 0x40 bytes of stack space.
-
-; TODO Some functions can use some args directly from the stack. If they're the
-; last args then you can just not declare them, but if they're in the middle
-; we need more flexible macro.
-
-; RET:
-; Pops anything that was pushed by PROLOGUE, and returns.
-
-; REP_RET:
-; Use this instead of RET if it's a branch target.
-
-; registers:
-; rN and rNq are the native-size register holding function argument N
-; rNd, rNw, rNb are dword, word, and byte size
-; rNh is the high 8 bits of the word size
-; rNm is the original location of arg N (a register or on the stack), dword
-; rNmp is native size
-
-%macro DECLARE_REG 2-3
- %define r%1q %2
- %define r%1d %2d
- %define r%1w %2w
- %define r%1b %2b
- %define r%1h %2h
- %define %2q %2
- %if %0 == 2
- %define r%1m %2d
- %define r%1mp %2
- %elif ARCH_X86_64 ; memory
- %define r%1m [rstk + stack_offset + %3]
- %define r%1mp qword r %+ %1 %+ m
- %else
- %define r%1m [rstk + stack_offset + %3]
- %define r%1mp dword r %+ %1 %+ m
- %endif
- %define r%1 %2
-%endmacro
-
-%macro DECLARE_REG_SIZE 3
- %define r%1q r%1
- %define e%1q r%1
- %define r%1d e%1
- %define e%1d e%1
- %define r%1w %1
- %define e%1w %1
- %define r%1h %3
- %define e%1h %3
- %define r%1b %2
- %define e%1b %2
- %if ARCH_X86_64 == 0
- %define r%1 e%1
- %endif
-%endmacro
-
-DECLARE_REG_SIZE ax, al, ah
-DECLARE_REG_SIZE bx, bl, bh
-DECLARE_REG_SIZE cx, cl, ch
-DECLARE_REG_SIZE dx, dl, dh
-DECLARE_REG_SIZE si, sil, null
-DECLARE_REG_SIZE di, dil, null
-DECLARE_REG_SIZE bp, bpl, null
-
-; t# defines for when per-arch register allocation is more complex than just function arguments
-
-%macro DECLARE_REG_TMP 1-*
- %assign %%i 0
- %rep %0
- CAT_XDEFINE t, %%i, r%1
- %assign %%i %%i+1
- %rotate 1
- %endrep
-%endmacro
-
-%macro DECLARE_REG_TMP_SIZE 0-*
- %rep %0
- %define t%1q t%1 %+ q
- %define t%1d t%1 %+ d
- %define t%1w t%1 %+ w
- %define t%1h t%1 %+ h
- %define t%1b t%1 %+ b
- %rotate 1
- %endrep
-%endmacro
-
-DECLARE_REG_TMP_SIZE 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
-
-%if ARCH_X86_64
- %define gprsize 8
-%else
- %define gprsize 4
-%endif
-
-%macro PUSH 1
- push %1
- %ifidn rstk, rsp
- %assign stack_offset stack_offset+gprsize
- %endif
-%endmacro
-
-%macro POP 1
- pop %1
- %ifidn rstk, rsp
- %assign stack_offset stack_offset-gprsize
- %endif
-%endmacro
-
-%macro PUSH_IF_USED 1-*
- %rep %0
- %if %1 < regs_used
- PUSH r%1
- %endif
- %rotate 1
- %endrep
-%endmacro
-
-%macro POP_IF_USED 1-*
- %rep %0
- %if %1 < regs_used
- pop r%1
- %endif
- %rotate 1
- %endrep
-%endmacro
-
-%macro LOAD_IF_USED 1-*
- %rep %0
- %if %1 < num_args
- mov r%1, r %+ %1 %+ mp
- %endif
- %rotate 1
- %endrep
-%endmacro
-
-%macro SUB 2
- sub %1, %2
- %ifidn %1, rstk
- %assign stack_offset stack_offset+(%2)
- %endif
-%endmacro
-
-%macro ADD 2
- add %1, %2
- %ifidn %1, rstk
- %assign stack_offset stack_offset-(%2)
- %endif
-%endmacro
-
-%macro movifnidn 2
- %ifnidn %1, %2
- mov %1, %2
- %endif
-%endmacro
-
-%macro movsxdifnidn 2
- %ifnidn %1, %2
- movsxd %1, %2
- %endif
-%endmacro
-
-%macro ASSERT 1
- %if (%1) == 0
- %error assertion ``%1'' failed
- %endif
-%endmacro
-
-%macro DEFINE_ARGS 0-*
- %ifdef n_arg_names
- %assign %%i 0
- %rep n_arg_names
- CAT_UNDEF arg_name %+ %%i, q
- CAT_UNDEF arg_name %+ %%i, d
- CAT_UNDEF arg_name %+ %%i, w
- CAT_UNDEF arg_name %+ %%i, h
- CAT_UNDEF arg_name %+ %%i, b
- CAT_UNDEF arg_name %+ %%i, m
- CAT_UNDEF arg_name %+ %%i, mp
- CAT_UNDEF arg_name, %%i
- %assign %%i %%i+1
- %endrep
- %endif
-
- %xdefine %%stack_offset stack_offset
- %undef stack_offset ; so that the current value of stack_offset doesn't get baked in by xdefine
- %assign %%i 0
- %rep %0
- %xdefine %1q r %+ %%i %+ q
- %xdefine %1d r %+ %%i %+ d
- %xdefine %1w r %+ %%i %+ w
- %xdefine %1h r %+ %%i %+ h
- %xdefine %1b r %+ %%i %+ b
- %xdefine %1m r %+ %%i %+ m
- %xdefine %1mp r %+ %%i %+ mp
- CAT_XDEFINE arg_name, %%i, %1
- %assign %%i %%i+1
- %rotate 1
- %endrep
- %xdefine stack_offset %%stack_offset
- %assign n_arg_names %0
-%endmacro
-
-%define required_stack_alignment ((mmsize + 15) & ~15)
-
-%macro ALLOC_STACK 1-2 0 ; stack_size, n_xmm_regs (for win64 only)
- %ifnum %1
- %if %1 != 0
- %assign %%pad 0
- %assign stack_size %1
- %if stack_size < 0
- %assign stack_size -stack_size
- %endif
- %if WIN64
- %assign %%pad %%pad + 32 ; shadow space
- %if mmsize != 8
- %assign xmm_regs_used %2
- %if xmm_regs_used > 8
- %assign %%pad %%pad + (xmm_regs_used-8)*16 ; callee-saved xmm registers
- %endif
- %endif
- %endif
- %if required_stack_alignment <= STACK_ALIGNMENT
- ; maintain the current stack alignment
- %assign stack_size_padded stack_size + %%pad + ((-%%pad-stack_offset-gprsize) & (STACK_ALIGNMENT-1))
- SUB rsp, stack_size_padded
- %else
- %assign %%reg_num (regs_used - 1)
- %xdefine rstk r %+ %%reg_num
- ; align stack, and save original stack location directly above
- ; it, i.e. in [rsp+stack_size_padded], so we can restore the
- ; stack in a single instruction (i.e. mov rsp, rstk or mov
- ; rsp, [rsp+stack_size_padded])
- %if %1 < 0 ; need to store rsp on stack
- %xdefine rstkm [rsp + stack_size + %%pad]
- %assign %%pad %%pad + gprsize
- %else ; can keep rsp in rstk during whole function
- %xdefine rstkm rstk
- %endif
- %assign stack_size_padded stack_size + ((%%pad + required_stack_alignment-1) & ~(required_stack_alignment-1))
- mov rstk, rsp
- and rsp, ~(required_stack_alignment-1)
- sub rsp, stack_size_padded
- movifnidn rstkm, rstk
- %endif
- WIN64_PUSH_XMM
- %endif
- %endif
-%endmacro
-
-%macro SETUP_STACK_POINTER 1
- %ifnum %1
- %if %1 != 0 && required_stack_alignment > STACK_ALIGNMENT
- %if %1 > 0
- %assign regs_used (regs_used + 1)
- %endif
- %if ARCH_X86_64 && regs_used < 5 + UNIX64 * 3
- ; Ensure that we don't clobber any registers containing arguments
- %assign regs_used 5 + UNIX64 * 3
- %endif
- %endif
- %endif
-%endmacro
-
-%macro DEFINE_ARGS_INTERNAL 3+
- %ifnum %2
- DEFINE_ARGS %3
- %elif %1 == 4
- DEFINE_ARGS %2
- %elif %1 > 4
- DEFINE_ARGS %2, %3
- %endif
-%endmacro
-
-%if WIN64 ; Windows x64 ;=================================================
-
-DECLARE_REG 0, rcx
-DECLARE_REG 1, rdx
-DECLARE_REG 2, R8
-DECLARE_REG 3, R9
-DECLARE_REG 4, R10, 40
-DECLARE_REG 5, R11, 48
-DECLARE_REG 6, rax, 56
-DECLARE_REG 7, rdi, 64
-DECLARE_REG 8, rsi, 72
-DECLARE_REG 9, rbx, 80
-DECLARE_REG 10, rbp, 88
-DECLARE_REG 11, R12, 96
-DECLARE_REG 12, R13, 104
-DECLARE_REG 13, R14, 112
-DECLARE_REG 14, R15, 120
-
-%macro PROLOGUE 2-5+ 0 ; #args, #regs, #xmm_regs, [stack_size,] arg_names...
- %assign num_args %1
- %assign regs_used %2
- ASSERT regs_used >= num_args
- SETUP_STACK_POINTER %4
- ASSERT regs_used <= 15
- PUSH_IF_USED 7, 8, 9, 10, 11, 12, 13, 14
- ALLOC_STACK %4, %3
- %if mmsize != 8 && stack_size == 0
- WIN64_SPILL_XMM %3
- %endif
- LOAD_IF_USED 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
- DEFINE_ARGS_INTERNAL %0, %4, %5
-%endmacro
-
-%macro WIN64_PUSH_XMM 0
- ; Use the shadow space to store XMM6 and XMM7, the rest needs stack space allocated.
- %if xmm_regs_used > 6
- movaps [rstk + stack_offset + 8], xmm6
- %endif
- %if xmm_regs_used > 7
- movaps [rstk + stack_offset + 24], xmm7
- %endif
- %if xmm_regs_used > 8
- %assign %%i 8
- %rep xmm_regs_used-8
- movaps [rsp + (%%i-8)*16 + stack_size + 32], xmm %+ %%i
- %assign %%i %%i+1
- %endrep
- %endif
-%endmacro
-
-%macro WIN64_SPILL_XMM 1
- %assign xmm_regs_used %1
- ASSERT xmm_regs_used <= 16
- %if xmm_regs_used > 8
- ; Allocate stack space for callee-saved xmm registers plus shadow space and align the stack.
- %assign %%pad (xmm_regs_used-8)*16 + 32
- %assign stack_size_padded %%pad + ((-%%pad-stack_offset-gprsize) & (STACK_ALIGNMENT-1))
- SUB rsp, stack_size_padded
- %endif
- WIN64_PUSH_XMM
-%endmacro
-
-%macro WIN64_RESTORE_XMM_INTERNAL 1
- %assign %%pad_size 0
- %if xmm_regs_used > 8
- %assign %%i xmm_regs_used
- %rep xmm_regs_used-8
- %assign %%i %%i-1
- movaps xmm %+ %%i, [%1 + (%%i-8)*16 + stack_size + 32]
- %endrep
- %endif
- %if stack_size_padded > 0
- %if stack_size > 0 && required_stack_alignment > STACK_ALIGNMENT
- mov rsp, rstkm
- %else
- add %1, stack_size_padded
- %assign %%pad_size stack_size_padded
- %endif
- %endif
- %if xmm_regs_used > 7
- movaps xmm7, [%1 + stack_offset - %%pad_size + 24]
- %endif
- %if xmm_regs_used > 6
- movaps xmm6, [%1 + stack_offset - %%pad_size + 8]
- %endif
-%endmacro
-
-%macro WIN64_RESTORE_XMM 1
- WIN64_RESTORE_XMM_INTERNAL %1
- %assign stack_offset (stack_offset-stack_size_padded)
- %assign xmm_regs_used 0
-%endmacro
-
-%define has_epilogue regs_used > 7 || xmm_regs_used > 6 || mmsize == 32 || stack_size > 0
-
-%macro RET 0
- WIN64_RESTORE_XMM_INTERNAL rsp
- POP_IF_USED 14, 13, 12, 11, 10, 9, 8, 7
- %if mmsize == 32
- vzeroupper
- %endif
- AUTO_REP_RET
-%endmacro
-
-%elif ARCH_X86_64 ; *nix x64 ;=============================================
-
-DECLARE_REG 0, rdi
-DECLARE_REG 1, rsi
-DECLARE_REG 2, rdx
-DECLARE_REG 3, rcx
-DECLARE_REG 4, R8
-DECLARE_REG 5, R9
-DECLARE_REG 6, rax, 8
-DECLARE_REG 7, R10, 16
-DECLARE_REG 8, R11, 24
-DECLARE_REG 9, rbx, 32
-DECLARE_REG 10, rbp, 40
-DECLARE_REG 11, R12, 48
-DECLARE_REG 12, R13, 56
-DECLARE_REG 13, R14, 64
-DECLARE_REG 14, R15, 72
-
-%macro PROLOGUE 2-5+ ; #args, #regs, #xmm_regs, [stack_size,] arg_names...
- %assign num_args %1
- %assign regs_used %2
- ASSERT regs_used >= num_args
- SETUP_STACK_POINTER %4
- ASSERT regs_used <= 15
- PUSH_IF_USED 9, 10, 11, 12, 13, 14
- ALLOC_STACK %4
- LOAD_IF_USED 6, 7, 8, 9, 10, 11, 12, 13, 14
- DEFINE_ARGS_INTERNAL %0, %4, %5
-%endmacro
-
-%define has_epilogue regs_used > 9 || mmsize == 32 || stack_size > 0
-
-%macro RET 0
- %if stack_size_padded > 0
- %if required_stack_alignment > STACK_ALIGNMENT
- mov rsp, rstkm
- %else
- add rsp, stack_size_padded
- %endif
- %endif
- POP_IF_USED 14, 13, 12, 11, 10, 9
- %if mmsize == 32
- vzeroupper
- %endif
- AUTO_REP_RET
-%endmacro
-
-%else ; X86_32 ;==============================================================
-
-DECLARE_REG 0, eax, 4
-DECLARE_REG 1, ecx, 8
-DECLARE_REG 2, edx, 12
-DECLARE_REG 3, ebx, 16
-DECLARE_REG 4, esi, 20
-DECLARE_REG 5, edi, 24
-DECLARE_REG 6, ebp, 28
-%define rsp esp
-
-%macro DECLARE_ARG 1-*
- %rep %0
- %define r%1m [rstk + stack_offset + 4*%1 + 4]
- %define r%1mp dword r%1m
- %rotate 1
- %endrep
-%endmacro
-
-DECLARE_ARG 7, 8, 9, 10, 11, 12, 13, 14
-
-%macro PROLOGUE 2-5+ ; #args, #regs, #xmm_regs, [stack_size,] arg_names...
- %assign num_args %1
- %assign regs_used %2
- ASSERT regs_used >= num_args
- %if num_args > 7
- %assign num_args 7
- %endif
- %if regs_used > 7
- %assign regs_used 7
- %endif
- SETUP_STACK_POINTER %4
- ASSERT regs_used <= 7
- PUSH_IF_USED 3, 4, 5, 6
- ALLOC_STACK %4
- LOAD_IF_USED 0, 1, 2, 3, 4, 5, 6
- DEFINE_ARGS_INTERNAL %0, %4, %5
-%endmacro
-
-%define has_epilogue regs_used > 3 || mmsize == 32 || stack_size > 0
-
-%macro RET 0
- %if stack_size_padded > 0
- %if required_stack_alignment > STACK_ALIGNMENT
- mov rsp, rstkm
- %else
- add rsp, stack_size_padded
- %endif
- %endif
- POP_IF_USED 6, 5, 4, 3
- %if mmsize == 32
- vzeroupper
- %endif
- AUTO_REP_RET
-%endmacro
-
-%endif ;======================================================================
-
-%if WIN64 == 0
- %macro WIN64_SPILL_XMM 1
- %endmacro
- %macro WIN64_RESTORE_XMM 1
- %endmacro
- %macro WIN64_PUSH_XMM 0
- %endmacro
-%endif
-
-; On AMD cpus <=K10, an ordinary ret is slow if it immediately follows either
-; a branch or a branch target. So switch to a 2-byte form of ret in that case.
-; We can automatically detect "follows a branch", but not a branch target.
-; (SSSE3 is a sufficient condition to know that your cpu doesn't have this problem.)
-%macro REP_RET 0
- %if has_epilogue
- RET
- %else
- rep ret
- %endif
- annotate_function_size
-%endmacro
-
-%define last_branch_adr $$
-%macro AUTO_REP_RET 0
- %if notcpuflag(ssse3)
- times ((last_branch_adr-$)>>31)+1 rep ; times 1 iff $ == last_branch_adr.
- %endif
- ret
- annotate_function_size
-%endmacro
-
-%macro BRANCH_INSTR 0-*
- %rep %0
- %macro %1 1-2 %1
- %2 %1
- %if notcpuflag(ssse3)
- %%branch_instr equ $
- %xdefine last_branch_adr %%branch_instr
- %endif
- %endmacro
- %rotate 1
- %endrep
-%endmacro
-
-BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, jge, jng, jnge, ja, jae, jna, jnae, jb, jbe, jnb, jnbe, jc, jnc, js, jns, jo, jno, jp, jnp
-
-%macro TAIL_CALL 2 ; callee, is_nonadjacent
- %if has_epilogue
- call %1
- RET
- %elif %2
- jmp %1
- %endif
- annotate_function_size
-%endmacro
-
-;=============================================================================
-; arch-independent part
-;=============================================================================
-
-%assign function_align 16
-
-; Begin a function.
-; Applies any symbol mangling needed for C linkage, and sets up a define such that
-; subsequent uses of the function name automatically refer to the mangled version.
-; Appends cpuflags to the function name if cpuflags has been specified.
-; The "" empty default parameter is a workaround for nasm, which fails if SUFFIX
-; is empty and we call cglobal_internal with just %1 %+ SUFFIX (without %2).
-%macro cglobal 1-2+ "" ; name, [PROLOGUE args]
- cglobal_internal 1, %1 %+ SUFFIX, %2
-%endmacro
-%macro cvisible 1-2+ "" ; name, [PROLOGUE args]
- cglobal_internal 0, %1 %+ SUFFIX, %2
-%endmacro
-%macro cglobal_internal 2-3+
- annotate_function_size
- %if %1
- %xdefine %%FUNCTION_PREFIX private_prefix
- ; libvpx explicitly sets visibility in shared object builds. Avoid
- ; setting visibility to hidden as it may break builds that split
- ; sources on e.g., directory boundaries.
- %ifdef CHROMIUM
- %xdefine %%VISIBILITY hidden
- %else
- %xdefine %%VISIBILITY
- %endif
- %else
- %xdefine %%FUNCTION_PREFIX public_prefix
- %xdefine %%VISIBILITY
- %endif
- %ifndef cglobaled_%2
- %xdefine %2 mangle(%%FUNCTION_PREFIX %+ _ %+ %2)
- %xdefine %2.skip_prologue %2 %+ .skip_prologue
- CAT_XDEFINE cglobaled_, %2, 1
- %endif
- %xdefine current_function %2
- %xdefine current_function_section __SECT__
- %if FORMAT_ELF
- global %2:function %%VISIBILITY
- %elif FORMAT_MACHO
- %ifdef __NASM_VER__
- global %2
- %else
- global %2:private_extern
- %endif
- %else
- global %2
- %endif
- align function_align
- %2:
- RESET_MM_PERMUTATION ; needed for x86-64, also makes disassembly somewhat nicer
- %xdefine rstk rsp ; copy of the original stack pointer, used when greater alignment than the known stack alignment is required
- %assign stack_offset 0 ; stack pointer offset relative to the return address
- %assign stack_size 0 ; amount of stack space that can be freely used inside a function
- %assign stack_size_padded 0 ; total amount of allocated stack space, including space for callee-saved xmm registers on WIN64 and alignment padding
- %assign xmm_regs_used 0 ; number of XMM registers requested, used for dealing with callee-saved registers on WIN64
- %ifnidn %3, ""
- PROLOGUE %3
- %endif
-%endmacro
-
-%macro cextern 1
- %xdefine %1 mangle(private_prefix %+ _ %+ %1)
- CAT_XDEFINE cglobaled_, %1, 1
- extern %1
-%endmacro
-
-; like cextern, but without the prefix
-%macro cextern_naked 1
- %ifdef PREFIX
- %xdefine %1 mangle(%1)
- %endif
- CAT_XDEFINE cglobaled_, %1, 1
- extern %1
-%endmacro
-
-%macro const 1-2+
- %xdefine %1 mangle(private_prefix %+ _ %+ %1)
- %if FORMAT_ELF
- global %1:data hidden
- %else
- global %1
- %endif
- %1: %2
-%endmacro
-
-; This is needed for ELF, otherwise the GNU linker assumes the stack is executable by default.
-%if FORMAT_ELF
- [SECTION .note.GNU-stack noalloc noexec nowrite progbits]
-%endif
-
-; Tell debuggers how large the function was.
-; This may be invoked multiple times per function; we rely on later instances overriding earlier ones.
-; This is invoked by RET and similar macros, and also cglobal does it for the previous function,
-; but if the last function in a source file doesn't use any of the standard macros for its epilogue,
-; then its size might be unspecified.
-%macro annotate_function_size 0
- %ifdef __YASM_VER__
- %ifdef current_function
- %if FORMAT_ELF
- current_function_section
- %%ecf equ $
- size current_function %%ecf - current_function
- __SECT__
- %endif
- %endif
- %endif
-%endmacro
-
-; cpuflags
-
-%assign cpuflags_mmx (1<<0)
-%assign cpuflags_mmx2 (1<<1) | cpuflags_mmx
-%assign cpuflags_3dnow (1<<2) | cpuflags_mmx
-%assign cpuflags_3dnowext (1<<3) | cpuflags_3dnow
-%assign cpuflags_sse (1<<4) | cpuflags_mmx2
-%assign cpuflags_sse2 (1<<5) | cpuflags_sse
-%assign cpuflags_sse2slow (1<<6) | cpuflags_sse2
-%assign cpuflags_sse3 (1<<7) | cpuflags_sse2
-%assign cpuflags_ssse3 (1<<8) | cpuflags_sse3
-%assign cpuflags_sse4 (1<<9) | cpuflags_ssse3
-%assign cpuflags_sse42 (1<<10)| cpuflags_sse4
-%assign cpuflags_avx (1<<11)| cpuflags_sse42
-%assign cpuflags_xop (1<<12)| cpuflags_avx
-%assign cpuflags_fma4 (1<<13)| cpuflags_avx
-%assign cpuflags_fma3 (1<<14)| cpuflags_avx
-%assign cpuflags_avx2 (1<<15)| cpuflags_fma3
-
-%assign cpuflags_cache32 (1<<16)
-%assign cpuflags_cache64 (1<<17)
-%assign cpuflags_slowctz (1<<18)
-%assign cpuflags_lzcnt (1<<19)
-%assign cpuflags_aligned (1<<20) ; not a cpu feature, but a function variant
-%assign cpuflags_atom (1<<21)
-%assign cpuflags_bmi1 (1<<22)|cpuflags_lzcnt
-%assign cpuflags_bmi2 (1<<23)|cpuflags_bmi1
-
-; Returns a boolean value expressing whether or not the specified cpuflag is enabled.
-%define cpuflag(x) (((((cpuflags & (cpuflags_ %+ x)) ^ (cpuflags_ %+ x)) - 1) >> 31) & 1)
-%define notcpuflag(x) (cpuflag(x) ^ 1)
-
-; Takes an arbitrary number of cpuflags from the above list.
-; All subsequent functions (up to the next INIT_CPUFLAGS) is built for the specified cpu.
-; You shouldn't need to invoke this macro directly, it's a subroutine for INIT_MMX &co.
-%macro INIT_CPUFLAGS 0-*
- %xdefine SUFFIX
- %undef cpuname
- %assign cpuflags 0
-
- %if %0 >= 1
- %rep %0
- %ifdef cpuname
- %xdefine cpuname cpuname %+ _%1
- %else
- %xdefine cpuname %1
- %endif
- %assign cpuflags cpuflags | cpuflags_%1
- %rotate 1
- %endrep
- %xdefine SUFFIX _ %+ cpuname
-
- %if cpuflag(avx)
- %assign avx_enabled 1
- %endif
- %if (mmsize == 16 && notcpuflag(sse2)) || (mmsize == 32 && notcpuflag(avx2))
- %define mova movaps
- %define movu movups
- %define movnta movntps
- %endif
- %if cpuflag(aligned)
- %define movu mova
- %elif cpuflag(sse3) && notcpuflag(ssse3)
- %define movu lddqu
- %endif
- %endif
-
- %if ARCH_X86_64 || cpuflag(sse2)
- %ifdef __NASM_VER__
- ALIGNMODE k8
- %else
- CPU amdnop
- %endif
- %else
- %ifdef __NASM_VER__
- ALIGNMODE nop
- %else
- CPU basicnop
- %endif
- %endif
-%endmacro
-
-; Merge mmx and sse*
-; m# is a simd register of the currently selected size
-; xm# is the corresponding xmm register if mmsize >= 16, otherwise the same as m#
-; ym# is the corresponding ymm register if mmsize >= 32, otherwise the same as m#
-; (All 3 remain in sync through SWAP.)
-
-%macro CAT_XDEFINE 3
- %xdefine %1%2 %3
-%endmacro
-
-%macro CAT_UNDEF 2
- %undef %1%2
-%endmacro
-
-%macro INIT_MMX 0-1+
- %assign avx_enabled 0
- %define RESET_MM_PERMUTATION INIT_MMX %1
- %define mmsize 8
- %define num_mmregs 8
- %define mova movq
- %define movu movq
- %define movh movd
- %define movnta movntq
- %assign %%i 0
- %rep 8
- CAT_XDEFINE m, %%i, mm %+ %%i
- CAT_XDEFINE nnmm, %%i, %%i
- %assign %%i %%i+1
- %endrep
- %rep 8
- CAT_UNDEF m, %%i
- CAT_UNDEF nnmm, %%i
- %assign %%i %%i+1
- %endrep
- INIT_CPUFLAGS %1
-%endmacro
-
-%macro INIT_XMM 0-1+
- %assign avx_enabled 0
- %define RESET_MM_PERMUTATION INIT_XMM %1
- %define mmsize 16
- %define num_mmregs 8
- %if ARCH_X86_64
- %define num_mmregs 16
- %endif
- %define mova movdqa
- %define movu movdqu
- %define movh movq
- %define movnta movntdq
- %assign %%i 0
- %rep num_mmregs
- CAT_XDEFINE m, %%i, xmm %+ %%i
- CAT_XDEFINE nnxmm, %%i, %%i
- %assign %%i %%i+1
- %endrep
- INIT_CPUFLAGS %1
-%endmacro
-
-%macro INIT_YMM 0-1+
- %assign avx_enabled 1
- %define RESET_MM_PERMUTATION INIT_YMM %1
- %define mmsize 32
- %define num_mmregs 8
- %if ARCH_X86_64
- %define num_mmregs 16
- %endif
- %define mova movdqa
- %define movu movdqu
- %undef movh
- %define movnta movntdq
- %assign %%i 0
- %rep num_mmregs
- CAT_XDEFINE m, %%i, ymm %+ %%i
- CAT_XDEFINE nnymm, %%i, %%i
- %assign %%i %%i+1
- %endrep
- INIT_CPUFLAGS %1
-%endmacro
-
-INIT_XMM
-
-%macro DECLARE_MMCAST 1
- %define mmmm%1 mm%1
- %define mmxmm%1 mm%1
- %define mmymm%1 mm%1
- %define xmmmm%1 mm%1
- %define xmmxmm%1 xmm%1
- %define xmmymm%1 xmm%1
- %define ymmmm%1 mm%1
- %define ymmxmm%1 xmm%1
- %define ymmymm%1 ymm%1
- %define xm%1 xmm %+ m%1
- %define ym%1 ymm %+ m%1
-%endmacro
-
-%assign i 0
-%rep 16
- DECLARE_MMCAST i
- %assign i i+1
-%endrep
-
-; I often want to use macros that permute their arguments. e.g. there's no
-; efficient way to implement butterfly or transpose or dct without swapping some
-; arguments.
-;
-; I would like to not have to manually keep track of the permutations:
-; If I insert a permutation in the middle of a function, it should automatically
-; change everything that follows. For more complex macros I may also have multiple
-; implementations, e.g. the SSE2 and SSSE3 versions may have different permutations.
-;
-; Hence these macros. Insert a PERMUTE or some SWAPs at the end of a macro that
-; permutes its arguments. It's equivalent to exchanging the contents of the
-; registers, except that this way you exchange the register names instead, so it
-; doesn't cost any cycles.
-
-%macro PERMUTE 2-* ; takes a list of pairs to swap
- %rep %0/2
- %xdefine %%tmp%2 m%2
- %rotate 2
- %endrep
- %rep %0/2
- %xdefine m%1 %%tmp%2
- CAT_XDEFINE nn, m%1, %1
- %rotate 2
- %endrep
-%endmacro
-
-%macro SWAP 2+ ; swaps a single chain (sometimes more concise than pairs)
- %ifnum %1 ; SWAP 0, 1, ...
- SWAP_INTERNAL_NUM %1, %2
- %else ; SWAP m0, m1, ...
- SWAP_INTERNAL_NAME %1, %2
- %endif
-%endmacro
-
-%macro SWAP_INTERNAL_NUM 2-*
- %rep %0-1
- %xdefine %%tmp m%1
- %xdefine m%1 m%2
- %xdefine m%2 %%tmp
- CAT_XDEFINE nn, m%1, %1
- CAT_XDEFINE nn, m%2, %2
- %rotate 1
- %endrep
-%endmacro
-
-%macro SWAP_INTERNAL_NAME 2-*
- %xdefine %%args nn %+ %1
- %rep %0-1
- %xdefine %%args %%args, nn %+ %2
- %rotate 1
- %endrep
- SWAP_INTERNAL_NUM %%args
-%endmacro
-
-; If SAVE_MM_PERMUTATION is placed at the end of a function, then any later
-; calls to that function will automatically load the permutation, so values can
-; be returned in mmregs.
-%macro SAVE_MM_PERMUTATION 0-1
- %if %0
- %xdefine %%f %1_m
- %else
- %xdefine %%f current_function %+ _m
- %endif
- %assign %%i 0
- %rep num_mmregs
- CAT_XDEFINE %%f, %%i, m %+ %%i
- %assign %%i %%i+1
- %endrep
-%endmacro
-
-%macro LOAD_MM_PERMUTATION 1 ; name to load from
- %ifdef %1_m0
- %assign %%i 0
- %rep num_mmregs
- CAT_XDEFINE m, %%i, %1_m %+ %%i
- CAT_XDEFINE nn, m %+ %%i, %%i
- %assign %%i %%i+1
- %endrep
- %endif
-%endmacro
-
-; Append cpuflags to the callee's name iff the appended name is known and the plain name isn't
-%macro call 1
- call_internal %1 %+ SUFFIX, %1
-%endmacro
-%macro call_internal 2
- %xdefine %%i %2
- %ifndef cglobaled_%2
- %ifdef cglobaled_%1
- %xdefine %%i %1
- %endif
- %endif
- call %%i
- LOAD_MM_PERMUTATION %%i
-%endmacro
-
-; Substitutions that reduce instruction size but are functionally equivalent
-%macro add 2
- %ifnum %2
- %if %2==128
- sub %1, -128
- %else
- add %1, %2
- %endif
- %else
- add %1, %2
- %endif
-%endmacro
-
-%macro sub 2
- %ifnum %2
- %if %2==128
- add %1, -128
- %else
- sub %1, %2
- %endif
- %else
- sub %1, %2
- %endif
-%endmacro
-
-;=============================================================================
-; AVX abstraction layer
-;=============================================================================
-
-%assign i 0
-%rep 16
- %if i < 8
- CAT_XDEFINE sizeofmm, i, 8
- %endif
- CAT_XDEFINE sizeofxmm, i, 16
- CAT_XDEFINE sizeofymm, i, 32
- %assign i i+1
-%endrep
-%undef i
-
-%macro CHECK_AVX_INSTR_EMU 3-*
- %xdefine %%opcode %1
- %xdefine %%dst %2
- %rep %0-2
- %ifidn %%dst, %3
- %error non-avx emulation of ``%%opcode'' is not supported
- %endif
- %rotate 1
- %endrep
-%endmacro
-
-;%1 == instruction
-;%2 == minimal instruction set
-;%3 == 1 if float, 0 if int
-;%4 == 1 if non-destructive or 4-operand (xmm, xmm, xmm, imm), 0 otherwise
-;%5 == 1 if commutative (i.e. doesn't matter which src arg is which), 0 if not
-;%6+: operands
-%macro RUN_AVX_INSTR 6-9+
- %ifnum sizeof%7
- %assign __sizeofreg sizeof%7
- %elifnum sizeof%6
- %assign __sizeofreg sizeof%6
- %else
- %assign __sizeofreg mmsize
- %endif
- %assign __emulate_avx 0
- %if avx_enabled && __sizeofreg >= 16
- %xdefine __instr v%1
- %else
- %xdefine __instr %1
- %if %0 >= 8+%4
- %assign __emulate_avx 1
- %endif
- %endif
- %ifnidn %2, fnord
- %ifdef cpuname
- %if notcpuflag(%2)
- %error use of ``%1'' %2 instruction in cpuname function: current_function
- %elif cpuflags_%2 < cpuflags_sse && notcpuflag(sse2) && __sizeofreg > 8
- %error use of ``%1'' sse2 instruction in cpuname function: current_function
- %endif
- %endif
- %endif
-
- %if __emulate_avx
- %xdefine __src1 %7
- %xdefine __src2 %8
- %ifnidn %6, %7
- %if %0 >= 9
- CHECK_AVX_INSTR_EMU {%1 %6, %7, %8, %9}, %6, %8, %9
- %else
- CHECK_AVX_INSTR_EMU {%1 %6, %7, %8}, %6, %8
- %endif
- %if %5 && %4 == 0
- %ifnid %8
- ; 3-operand AVX instructions with a memory arg can only have it in src2,
- ; whereas SSE emulation prefers to have it in src1 (i.e. the mov).
- ; So, if the instruction is commutative with a memory arg, swap them.
- %xdefine __src1 %8
- %xdefine __src2 %7
- %endif
- %endif
- %if __sizeofreg == 8
- MOVQ %6, __src1
- %elif %3
- MOVAPS %6, __src1
- %else
- MOVDQA %6, __src1
- %endif
- %endif
- %if %0 >= 9
- %1 %6, __src2, %9
- %else
- %1 %6, __src2
- %endif
- %elif %0 >= 9
- __instr %6, %7, %8, %9
- %elif %0 == 8
- __instr %6, %7, %8
- %elif %0 == 7
- __instr %6, %7
- %else
- __instr %6
- %endif
-%endmacro
-
-;%1 == instruction
-;%2 == minimal instruction set
-;%3 == 1 if float, 0 if int
-;%4 == 1 if non-destructive or 4-operand (xmm, xmm, xmm, imm), 0 otherwise
-;%5 == 1 if commutative (i.e. doesn't matter which src arg is which), 0 if not
-%macro AVX_INSTR 1-5 fnord, 0, 1, 0
- %macro %1 1-10 fnord, fnord, fnord, fnord, %1, %2, %3, %4, %5
- %ifidn %2, fnord
- RUN_AVX_INSTR %6, %7, %8, %9, %10, %1
- %elifidn %3, fnord
- RUN_AVX_INSTR %6, %7, %8, %9, %10, %1, %2
- %elifidn %4, fnord
- RUN_AVX_INSTR %6, %7, %8, %9, %10, %1, %2, %3
- %elifidn %5, fnord
- RUN_AVX_INSTR %6, %7, %8, %9, %10, %1, %2, %3, %4
- %else
- RUN_AVX_INSTR %6, %7, %8, %9, %10, %1, %2, %3, %4, %5
- %endif
- %endmacro
-%endmacro
-
-; Instructions with both VEX and non-VEX encodings
-; Non-destructive instructions are written without parameters
-AVX_INSTR addpd, sse2, 1, 0, 1
-AVX_INSTR addps, sse, 1, 0, 1
-AVX_INSTR addsd, sse2, 1, 0, 1
-AVX_INSTR addss, sse, 1, 0, 1
-AVX_INSTR addsubpd, sse3, 1, 0, 0
-AVX_INSTR addsubps, sse3, 1, 0, 0
-AVX_INSTR aesdec, fnord, 0, 0, 0
-AVX_INSTR aesdeclast, fnord, 0, 0, 0
-AVX_INSTR aesenc, fnord, 0, 0, 0
-AVX_INSTR aesenclast, fnord, 0, 0, 0
-AVX_INSTR aesimc
-AVX_INSTR aeskeygenassist
-AVX_INSTR andnpd, sse2, 1, 0, 0
-AVX_INSTR andnps, sse, 1, 0, 0
-AVX_INSTR andpd, sse2, 1, 0, 1
-AVX_INSTR andps, sse, 1, 0, 1
-AVX_INSTR blendpd, sse4, 1, 0, 0
-AVX_INSTR blendps, sse4, 1, 0, 0
-AVX_INSTR blendvpd, sse4, 1, 0, 0
-AVX_INSTR blendvps, sse4, 1, 0, 0
-AVX_INSTR cmppd, sse2, 1, 1, 0
-AVX_INSTR cmpps, sse, 1, 1, 0
-AVX_INSTR cmpsd, sse2, 1, 1, 0
-AVX_INSTR cmpss, sse, 1, 1, 0
-AVX_INSTR comisd, sse2
-AVX_INSTR comiss, sse
-AVX_INSTR cvtdq2pd, sse2
-AVX_INSTR cvtdq2ps, sse2
-AVX_INSTR cvtpd2dq, sse2
-AVX_INSTR cvtpd2ps, sse2
-AVX_INSTR cvtps2dq, sse2
-AVX_INSTR cvtps2pd, sse2
-AVX_INSTR cvtsd2si, sse2
-AVX_INSTR cvtsd2ss, sse2
-AVX_INSTR cvtsi2sd, sse2
-AVX_INSTR cvtsi2ss, sse
-AVX_INSTR cvtss2sd, sse2
-AVX_INSTR cvtss2si, sse
-AVX_INSTR cvttpd2dq, sse2
-AVX_INSTR cvttps2dq, sse2
-AVX_INSTR cvttsd2si, sse2
-AVX_INSTR cvttss2si, sse
-AVX_INSTR divpd, sse2, 1, 0, 0
-AVX_INSTR divps, sse, 1, 0, 0
-AVX_INSTR divsd, sse2, 1, 0, 0
-AVX_INSTR divss, sse, 1, 0, 0
-AVX_INSTR dppd, sse4, 1, 1, 0
-AVX_INSTR dpps, sse4, 1, 1, 0
-AVX_INSTR extractps, sse4
-AVX_INSTR haddpd, sse3, 1, 0, 0
-AVX_INSTR haddps, sse3, 1, 0, 0
-AVX_INSTR hsubpd, sse3, 1, 0, 0
-AVX_INSTR hsubps, sse3, 1, 0, 0
-AVX_INSTR insertps, sse4, 1, 1, 0
-AVX_INSTR lddqu, sse3
-AVX_INSTR ldmxcsr, sse
-AVX_INSTR maskmovdqu, sse2
-AVX_INSTR maxpd, sse2, 1, 0, 1
-AVX_INSTR maxps, sse, 1, 0, 1
-AVX_INSTR maxsd, sse2, 1, 0, 1
-AVX_INSTR maxss, sse, 1, 0, 1
-AVX_INSTR minpd, sse2, 1, 0, 1
-AVX_INSTR minps, sse, 1, 0, 1
-AVX_INSTR minsd, sse2, 1, 0, 1
-AVX_INSTR minss, sse, 1, 0, 1
-AVX_INSTR movapd, sse2
-AVX_INSTR movaps, sse
-AVX_INSTR movd, mmx
-AVX_INSTR movddup, sse3
-AVX_INSTR movdqa, sse2
-AVX_INSTR movdqu, sse2
-AVX_INSTR movhlps, sse, 1, 0, 0
-AVX_INSTR movhpd, sse2, 1, 0, 0
-AVX_INSTR movhps, sse, 1, 0, 0
-AVX_INSTR movlhps, sse, 1, 0, 0
-AVX_INSTR movlpd, sse2, 1, 0, 0
-AVX_INSTR movlps, sse, 1, 0, 0
-AVX_INSTR movmskpd, sse2
-AVX_INSTR movmskps, sse
-AVX_INSTR movntdq, sse2
-AVX_INSTR movntdqa, sse4
-AVX_INSTR movntpd, sse2
-AVX_INSTR movntps, sse
-AVX_INSTR movq, mmx
-AVX_INSTR movsd, sse2, 1, 0, 0
-AVX_INSTR movshdup, sse3
-AVX_INSTR movsldup, sse3
-AVX_INSTR movss, sse, 1, 0, 0
-AVX_INSTR movupd, sse2
-AVX_INSTR movups, sse
-AVX_INSTR mpsadbw, sse4
-AVX_INSTR mulpd, sse2, 1, 0, 1
-AVX_INSTR mulps, sse, 1, 0, 1
-AVX_INSTR mulsd, sse2, 1, 0, 1
-AVX_INSTR mulss, sse, 1, 0, 1
-AVX_INSTR orpd, sse2, 1, 0, 1
-AVX_INSTR orps, sse, 1, 0, 1
-AVX_INSTR pabsb, ssse3
-AVX_INSTR pabsd, ssse3
-AVX_INSTR pabsw, ssse3
-AVX_INSTR packsswb, mmx, 0, 0, 0
-AVX_INSTR packssdw, mmx, 0, 0, 0
-AVX_INSTR packuswb, mmx, 0, 0, 0
-AVX_INSTR packusdw, sse4, 0, 0, 0
-AVX_INSTR paddb, mmx, 0, 0, 1
-AVX_INSTR paddw, mmx, 0, 0, 1
-AVX_INSTR paddd, mmx, 0, 0, 1
-AVX_INSTR paddq, sse2, 0, 0, 1
-AVX_INSTR paddsb, mmx, 0, 0, 1
-AVX_INSTR paddsw, mmx, 0, 0, 1
-AVX_INSTR paddusb, mmx, 0, 0, 1
-AVX_INSTR paddusw, mmx, 0, 0, 1
-AVX_INSTR palignr, ssse3
-AVX_INSTR pand, mmx, 0, 0, 1
-AVX_INSTR pandn, mmx, 0, 0, 0
-AVX_INSTR pavgb, mmx2, 0, 0, 1
-AVX_INSTR pavgw, mmx2, 0, 0, 1
-AVX_INSTR pblendvb, sse4, 0, 0, 0
-AVX_INSTR pblendw, sse4
-AVX_INSTR pclmulqdq
-AVX_INSTR pcmpestri, sse42
-AVX_INSTR pcmpestrm, sse42
-AVX_INSTR pcmpistri, sse42
-AVX_INSTR pcmpistrm, sse42
-AVX_INSTR pcmpeqb, mmx, 0, 0, 1
-AVX_INSTR pcmpeqw, mmx, 0, 0, 1
-AVX_INSTR pcmpeqd, mmx, 0, 0, 1
-AVX_INSTR pcmpeqq, sse4, 0, 0, 1
-AVX_INSTR pcmpgtb, mmx, 0, 0, 0
-AVX_INSTR pcmpgtw, mmx, 0, 0, 0
-AVX_INSTR pcmpgtd, mmx, 0, 0, 0
-AVX_INSTR pcmpgtq, sse42, 0, 0, 0
-AVX_INSTR pextrb, sse4
-AVX_INSTR pextrd, sse4
-AVX_INSTR pextrq, sse4
-AVX_INSTR pextrw, mmx2
-AVX_INSTR phaddw, ssse3, 0, 0, 0
-AVX_INSTR phaddd, ssse3, 0, 0, 0
-AVX_INSTR phaddsw, ssse3, 0, 0, 0
-AVX_INSTR phminposuw, sse4
-AVX_INSTR phsubw, ssse3, 0, 0, 0
-AVX_INSTR phsubd, ssse3, 0, 0, 0
-AVX_INSTR phsubsw, ssse3, 0, 0, 0
-AVX_INSTR pinsrb, sse4
-AVX_INSTR pinsrd, sse4
-AVX_INSTR pinsrq, sse4
-AVX_INSTR pinsrw, mmx2
-AVX_INSTR pmaddwd, mmx, 0, 0, 1
-AVX_INSTR pmaddubsw, ssse3, 0, 0, 0
-AVX_INSTR pmaxsb, sse4, 0, 0, 1
-AVX_INSTR pmaxsw, mmx2, 0, 0, 1
-AVX_INSTR pmaxsd, sse4, 0, 0, 1
-AVX_INSTR pmaxub, mmx2, 0, 0, 1
-AVX_INSTR pmaxuw, sse4, 0, 0, 1
-AVX_INSTR pmaxud, sse4, 0, 0, 1
-AVX_INSTR pminsb, sse4, 0, 0, 1
-AVX_INSTR pminsw, mmx2, 0, 0, 1
-AVX_INSTR pminsd, sse4, 0, 0, 1
-AVX_INSTR pminub, mmx2, 0, 0, 1
-AVX_INSTR pminuw, sse4, 0, 0, 1
-AVX_INSTR pminud, sse4, 0, 0, 1
-AVX_INSTR pmovmskb, mmx2
-AVX_INSTR pmovsxbw, sse4
-AVX_INSTR pmovsxbd, sse4
-AVX_INSTR pmovsxbq, sse4
-AVX_INSTR pmovsxwd, sse4
-AVX_INSTR pmovsxwq, sse4
-AVX_INSTR pmovsxdq, sse4
-AVX_INSTR pmovzxbw, sse4
-AVX_INSTR pmovzxbd, sse4
-AVX_INSTR pmovzxbq, sse4
-AVX_INSTR pmovzxwd, sse4
-AVX_INSTR pmovzxwq, sse4
-AVX_INSTR pmovzxdq, sse4
-AVX_INSTR pmuldq, sse4, 0, 0, 1
-AVX_INSTR pmulhrsw, ssse3, 0, 0, 1
-AVX_INSTR pmulhuw, mmx2, 0, 0, 1
-AVX_INSTR pmulhw, mmx, 0, 0, 1
-AVX_INSTR pmullw, mmx, 0, 0, 1
-AVX_INSTR pmulld, sse4, 0, 0, 1
-AVX_INSTR pmuludq, sse2, 0, 0, 1
-AVX_INSTR por, mmx, 0, 0, 1
-AVX_INSTR psadbw, mmx2, 0, 0, 1
-AVX_INSTR pshufb, ssse3, 0, 0, 0
-AVX_INSTR pshufd, sse2
-AVX_INSTR pshufhw, sse2
-AVX_INSTR pshuflw, sse2
-AVX_INSTR psignb, ssse3, 0, 0, 0
-AVX_INSTR psignw, ssse3, 0, 0, 0
-AVX_INSTR psignd, ssse3, 0, 0, 0
-AVX_INSTR psllw, mmx, 0, 0, 0
-AVX_INSTR pslld, mmx, 0, 0, 0
-AVX_INSTR psllq, mmx, 0, 0, 0
-AVX_INSTR pslldq, sse2, 0, 0, 0
-AVX_INSTR psraw, mmx, 0, 0, 0
-AVX_INSTR psrad, mmx, 0, 0, 0
-AVX_INSTR psrlw, mmx, 0, 0, 0
-AVX_INSTR psrld, mmx, 0, 0, 0
-AVX_INSTR psrlq, mmx, 0, 0, 0
-AVX_INSTR psrldq, sse2, 0, 0, 0
-AVX_INSTR psubb, mmx, 0, 0, 0
-AVX_INSTR psubw, mmx, 0, 0, 0
-AVX_INSTR psubd, mmx, 0, 0, 0
-AVX_INSTR psubq, sse2, 0, 0, 0
-AVX_INSTR psubsb, mmx, 0, 0, 0
-AVX_INSTR psubsw, mmx, 0, 0, 0
-AVX_INSTR psubusb, mmx, 0, 0, 0
-AVX_INSTR psubusw, mmx, 0, 0, 0
-AVX_INSTR ptest, sse4
-AVX_INSTR punpckhbw, mmx, 0, 0, 0
-AVX_INSTR punpckhwd, mmx, 0, 0, 0
-AVX_INSTR punpckhdq, mmx, 0, 0, 0
-AVX_INSTR punpckhqdq, sse2, 0, 0, 0
-AVX_INSTR punpcklbw, mmx, 0, 0, 0
-AVX_INSTR punpcklwd, mmx, 0, 0, 0
-AVX_INSTR punpckldq, mmx, 0, 0, 0
-AVX_INSTR punpcklqdq, sse2, 0, 0, 0
-AVX_INSTR pxor, mmx, 0, 0, 1
-AVX_INSTR rcpps, sse, 1, 0, 0
-AVX_INSTR rcpss, sse, 1, 0, 0
-AVX_INSTR roundpd, sse4
-AVX_INSTR roundps, sse4
-AVX_INSTR roundsd, sse4
-AVX_INSTR roundss, sse4
-AVX_INSTR rsqrtps, sse, 1, 0, 0
-AVX_INSTR rsqrtss, sse, 1, 0, 0
-AVX_INSTR shufpd, sse2, 1, 1, 0
-AVX_INSTR shufps, sse, 1, 1, 0
-AVX_INSTR sqrtpd, sse2, 1, 0, 0
-AVX_INSTR sqrtps, sse, 1, 0, 0
-AVX_INSTR sqrtsd, sse2, 1, 0, 0
-AVX_INSTR sqrtss, sse, 1, 0, 0
-AVX_INSTR stmxcsr, sse
-AVX_INSTR subpd, sse2, 1, 0, 0
-AVX_INSTR subps, sse, 1, 0, 0
-AVX_INSTR subsd, sse2, 1, 0, 0
-AVX_INSTR subss, sse, 1, 0, 0
-AVX_INSTR ucomisd, sse2
-AVX_INSTR ucomiss, sse
-AVX_INSTR unpckhpd, sse2, 1, 0, 0
-AVX_INSTR unpckhps, sse, 1, 0, 0
-AVX_INSTR unpcklpd, sse2, 1, 0, 0
-AVX_INSTR unpcklps, sse, 1, 0, 0
-AVX_INSTR xorpd, sse2, 1, 0, 1
-AVX_INSTR xorps, sse, 1, 0, 1
-
-; 3DNow instructions, for sharing code between AVX, SSE and 3DN
-AVX_INSTR pfadd, 3dnow, 1, 0, 1
-AVX_INSTR pfsub, 3dnow, 1, 0, 0
-AVX_INSTR pfmul, 3dnow, 1, 0, 1
-
-; base-4 constants for shuffles
-%assign i 0
-%rep 256
- %assign j ((i>>6)&3)*1000 + ((i>>4)&3)*100 + ((i>>2)&3)*10 + (i&3)
- %if j < 10
- CAT_XDEFINE q000, j, i
- %elif j < 100
- CAT_XDEFINE q00, j, i
- %elif j < 1000
- CAT_XDEFINE q0, j, i
- %else
- CAT_XDEFINE q, j, i
- %endif
- %assign i i+1
-%endrep
-%undef i
-%undef j
-
-%macro FMA_INSTR 3
- %macro %1 4-7 %1, %2, %3
- %if cpuflag(xop)
- v%5 %1, %2, %3, %4
- %elifnidn %1, %4
- %6 %1, %2, %3
- %7 %1, %4
- %else
- %error non-xop emulation of ``%5 %1, %2, %3, %4'' is not supported
- %endif
- %endmacro
-%endmacro
-
-FMA_INSTR pmacsww, pmullw, paddw
-FMA_INSTR pmacsdd, pmulld, paddd ; sse4 emulation
-FMA_INSTR pmacsdql, pmuldq, paddq ; sse4 emulation
-FMA_INSTR pmadcswd, pmaddwd, paddd
-
-; Macros for consolidating FMA3 and FMA4 using 4-operand (dst, src1, src2, src3) syntax.
-; FMA3 is only possible if dst is the same as one of the src registers.
-; Either src2 or src3 can be a memory operand.
-%macro FMA4_INSTR 2-*
- %push fma4_instr
- %xdefine %$prefix %1
- %rep %0 - 1
- %macro %$prefix%2 4-6 %$prefix, %2
- %if notcpuflag(fma3) && notcpuflag(fma4)
- %error use of ``%5%6'' fma instruction in cpuname function: current_function
- %elif cpuflag(fma4)
- v%5%6 %1, %2, %3, %4
- %elifidn %1, %2
- ; If %3 or %4 is a memory operand it needs to be encoded as the last operand.
- %ifid %3
- v%{5}213%6 %2, %3, %4
- %else
- v%{5}132%6 %2, %4, %3
- %endif
- %elifidn %1, %3
- v%{5}213%6 %3, %2, %4
- %elifidn %1, %4
- v%{5}231%6 %4, %2, %3
- %else
- %error fma3 emulation of ``%5%6 %1, %2, %3, %4'' is not supported
- %endif
- %endmacro
- %rotate 1
- %endrep
- %pop
-%endmacro
-
-FMA4_INSTR fmadd, pd, ps, sd, ss
-FMA4_INSTR fmaddsub, pd, ps
-FMA4_INSTR fmsub, pd, ps, sd, ss
-FMA4_INSTR fmsubadd, pd, ps
-FMA4_INSTR fnmadd, pd, ps, sd, ss
-FMA4_INSTR fnmsub, pd, ps, sd, ss
-
-; workaround: vpbroadcastq is broken in x86_32 due to a yasm bug (fixed in 1.3.0)
-%ifdef __YASM_VER__
- %if __YASM_VERSION_ID__ < 0x01030000 && ARCH_X86_64 == 0
- %macro vpbroadcastq 2
- %if sizeof%1 == 16
- movddup %1, %2
- %else
- vbroadcastsd %1, %2
- %endif
- %endmacro
- %endif
-%endif
diff --git a/thirdparty/libvpx/vp8/common/alloccommon.c b/thirdparty/libvpx/vp8/common/alloccommon.c
deleted file mode 100644
index 8dfd4ce203..0000000000
--- a/thirdparty/libvpx/vp8/common/alloccommon.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "alloccommon.h"
-#include "blockd.h"
-#include "vpx_mem/vpx_mem.h"
-#include "onyxc_int.h"
-#include "findnearmv.h"
-#include "entropymode.h"
-#include "systemdependent.h"
-
-void vp8_de_alloc_frame_buffers(VP8_COMMON *oci)
-{
- int i;
- for (i = 0; i < NUM_YV12_BUFFERS; i++)
- vp8_yv12_de_alloc_frame_buffer(&oci->yv12_fb[i]);
-
- vp8_yv12_de_alloc_frame_buffer(&oci->temp_scale_frame);
-#if CONFIG_POSTPROC
- vp8_yv12_de_alloc_frame_buffer(&oci->post_proc_buffer);
- if (oci->post_proc_buffer_int_used)
- vp8_yv12_de_alloc_frame_buffer(&oci->post_proc_buffer_int);
-
- vpx_free(oci->pp_limits_buffer);
- oci->pp_limits_buffer = NULL;
-#endif
-
- vpx_free(oci->above_context);
- vpx_free(oci->mip);
-#if CONFIG_ERROR_CONCEALMENT
- vpx_free(oci->prev_mip);
- oci->prev_mip = NULL;
-#endif
-
- oci->above_context = NULL;
- oci->mip = NULL;
-}
-
-int vp8_alloc_frame_buffers(VP8_COMMON *oci, int width, int height)
-{
- int i;
-
- vp8_de_alloc_frame_buffers(oci);
-
- /* our internal buffers are always multiples of 16 */
- if ((width & 0xf) != 0)
- width += 16 - (width & 0xf);
-
- if ((height & 0xf) != 0)
- height += 16 - (height & 0xf);
-
-
- for (i = 0; i < NUM_YV12_BUFFERS; i++)
- {
- oci->fb_idx_ref_cnt[i] = 0;
- oci->yv12_fb[i].flags = 0;
- if (vp8_yv12_alloc_frame_buffer(&oci->yv12_fb[i], width, height, VP8BORDERINPIXELS) < 0)
- goto allocation_fail;
- }
-
- oci->new_fb_idx = 0;
- oci->lst_fb_idx = 1;
- oci->gld_fb_idx = 2;
- oci->alt_fb_idx = 3;
-
- oci->fb_idx_ref_cnt[0] = 1;
- oci->fb_idx_ref_cnt[1] = 1;
- oci->fb_idx_ref_cnt[2] = 1;
- oci->fb_idx_ref_cnt[3] = 1;
-
- if (vp8_yv12_alloc_frame_buffer(&oci->temp_scale_frame, width, 16, VP8BORDERINPIXELS) < 0)
- goto allocation_fail;
-
- oci->mb_rows = height >> 4;
- oci->mb_cols = width >> 4;
- oci->MBs = oci->mb_rows * oci->mb_cols;
- oci->mode_info_stride = oci->mb_cols + 1;
- oci->mip = vpx_calloc((oci->mb_cols + 1) * (oci->mb_rows + 1), sizeof(MODE_INFO));
-
- if (!oci->mip)
- goto allocation_fail;
-
- oci->mi = oci->mip + oci->mode_info_stride + 1;
-
- /* Allocation of previous mode info will be done in vp8_decode_frame()
- * as it is a decoder only data */
-
- oci->above_context = vpx_calloc(sizeof(ENTROPY_CONTEXT_PLANES) * oci->mb_cols, 1);
-
- if (!oci->above_context)
- goto allocation_fail;
-
-#if CONFIG_POSTPROC
- if (vp8_yv12_alloc_frame_buffer(&oci->post_proc_buffer, width, height, VP8BORDERINPIXELS) < 0)
- goto allocation_fail;
-
- oci->post_proc_buffer_int_used = 0;
- memset(&oci->postproc_state, 0, sizeof(oci->postproc_state));
- memset(oci->post_proc_buffer.buffer_alloc, 128,
- oci->post_proc_buffer.frame_size);
-
- /* Allocate buffer to store post-processing filter coefficients.
- *
- * Note: Round up mb_cols to support SIMD reads
- */
- oci->pp_limits_buffer = vpx_memalign(16, 24 * ((oci->mb_cols + 1) & ~1));
- if (!oci->pp_limits_buffer)
- goto allocation_fail;
-#endif
-
- return 0;
-
-allocation_fail:
- vp8_de_alloc_frame_buffers(oci);
- return 1;
-}
-
-void vp8_setup_version(VP8_COMMON *cm)
-{
- switch (cm->version)
- {
- case 0:
- cm->no_lpf = 0;
- cm->filter_type = NORMAL_LOOPFILTER;
- cm->use_bilinear_mc_filter = 0;
- cm->full_pixel = 0;
- break;
- case 1:
- cm->no_lpf = 0;
- cm->filter_type = SIMPLE_LOOPFILTER;
- cm->use_bilinear_mc_filter = 1;
- cm->full_pixel = 0;
- break;
- case 2:
- cm->no_lpf = 1;
- cm->filter_type = NORMAL_LOOPFILTER;
- cm->use_bilinear_mc_filter = 1;
- cm->full_pixel = 0;
- break;
- case 3:
- cm->no_lpf = 1;
- cm->filter_type = SIMPLE_LOOPFILTER;
- cm->use_bilinear_mc_filter = 1;
- cm->full_pixel = 1;
- break;
- default:
- /*4,5,6,7 are reserved for future use*/
- cm->no_lpf = 0;
- cm->filter_type = NORMAL_LOOPFILTER;
- cm->use_bilinear_mc_filter = 0;
- cm->full_pixel = 0;
- break;
- }
-}
-void vp8_create_common(VP8_COMMON *oci)
-{
- vp8_machine_specific_config(oci);
-
- vp8_init_mbmode_probs(oci);
- vp8_default_bmode_probs(oci->fc.bmode_prob);
-
- oci->mb_no_coeff_skip = 1;
- oci->no_lpf = 0;
- oci->filter_type = NORMAL_LOOPFILTER;
- oci->use_bilinear_mc_filter = 0;
- oci->full_pixel = 0;
- oci->multi_token_partition = ONE_PARTITION;
- oci->clamp_type = RECON_CLAMP_REQUIRED;
-
- /* Initialize reference frame sign bias structure to defaults */
- memset(oci->ref_frame_sign_bias, 0, sizeof(oci->ref_frame_sign_bias));
-
- /* Default disable buffer to buffer copying */
- oci->copy_buffer_to_gf = 0;
- oci->copy_buffer_to_arf = 0;
-}
-
-void vp8_remove_common(VP8_COMMON *oci)
-{
- vp8_de_alloc_frame_buffers(oci);
-}
diff --git a/thirdparty/libvpx/vp8/common/alloccommon.h b/thirdparty/libvpx/vp8/common/alloccommon.h
deleted file mode 100644
index 93e99d76b1..0000000000
--- a/thirdparty/libvpx/vp8/common/alloccommon.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_ALLOCCOMMON_H_
-#define VP8_COMMON_ALLOCCOMMON_H_
-
-#include "onyxc_int.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_create_common(VP8_COMMON *oci);
-void vp8_remove_common(VP8_COMMON *oci);
-void vp8_de_alloc_frame_buffers(VP8_COMMON *oci);
-int vp8_alloc_frame_buffers(VP8_COMMON *oci, int width, int height);
-void vp8_setup_version(VP8_COMMON *oci);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_ALLOCCOMMON_H_
diff --git a/thirdparty/libvpx/vp8/common/arm/loopfilter_arm.c b/thirdparty/libvpx/vp8/common/arm/loopfilter_arm.c
deleted file mode 100644
index 5840c2bbaa..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/loopfilter_arm.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "vp8/common/loopfilter.h"
-#include "vp8/common/onyxc_int.h"
-
-#define prototype_loopfilter(sym) \
- void sym(unsigned char *src, int pitch, const unsigned char *blimit,\
- const unsigned char *limit, const unsigned char *thresh, int count)
-
-#if HAVE_MEDIA
-extern prototype_loopfilter(vp8_loop_filter_horizontal_edge_armv6);
-extern prototype_loopfilter(vp8_loop_filter_vertical_edge_armv6);
-extern prototype_loopfilter(vp8_mbloop_filter_horizontal_edge_armv6);
-extern prototype_loopfilter(vp8_mbloop_filter_vertical_edge_armv6);
-#endif
-
-#if HAVE_NEON
-typedef void loopfilter_y_neon(unsigned char *src, int pitch,
- unsigned char blimit, unsigned char limit, unsigned char thresh);
-typedef void loopfilter_uv_neon(unsigned char *u, int pitch,
- unsigned char blimit, unsigned char limit, unsigned char thresh,
- unsigned char *v);
-
-extern loopfilter_y_neon vp8_loop_filter_horizontal_edge_y_neon;
-extern loopfilter_y_neon vp8_loop_filter_vertical_edge_y_neon;
-extern loopfilter_uv_neon vp8_loop_filter_horizontal_edge_uv_neon;
-extern loopfilter_uv_neon vp8_loop_filter_vertical_edge_uv_neon;
-
-extern loopfilter_y_neon vp8_mbloop_filter_horizontal_edge_y_neon;
-extern loopfilter_y_neon vp8_mbloop_filter_vertical_edge_y_neon;
-extern loopfilter_uv_neon vp8_mbloop_filter_horizontal_edge_uv_neon;
-extern loopfilter_uv_neon vp8_mbloop_filter_vertical_edge_uv_neon;
-#endif
-
-#if HAVE_MEDIA
-/* ARMV6/MEDIA loopfilter functions*/
-/* Horizontal MB filtering */
-void vp8_loop_filter_mbh_armv6(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_mbloop_filter_horizontal_edge_armv6(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_mbloop_filter_horizontal_edge_armv6(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_mbloop_filter_horizontal_edge_armv6(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-}
-
-/* Vertical MB Filtering */
-void vp8_loop_filter_mbv_armv6(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_mbloop_filter_vertical_edge_armv6(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_mbloop_filter_vertical_edge_armv6(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_mbloop_filter_vertical_edge_armv6(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-}
-
-/* Horizontal B Filtering */
-void vp8_loop_filter_bh_armv6(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_loop_filter_horizontal_edge_armv6(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_horizontal_edge_armv6(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_horizontal_edge_armv6(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_loop_filter_horizontal_edge_armv6(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_loop_filter_horizontal_edge_armv6(v_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-}
-
-void vp8_loop_filter_bhs_armv6(unsigned char *y_ptr, int y_stride,
- const unsigned char *blimit)
-{
- vp8_loop_filter_simple_horizontal_edge_armv6(y_ptr + 4 * y_stride, y_stride, blimit);
- vp8_loop_filter_simple_horizontal_edge_armv6(y_ptr + 8 * y_stride, y_stride, blimit);
- vp8_loop_filter_simple_horizontal_edge_armv6(y_ptr + 12 * y_stride, y_stride, blimit);
-}
-
-/* Vertical B Filtering */
-void vp8_loop_filter_bv_armv6(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_loop_filter_vertical_edge_armv6(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_vertical_edge_armv6(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_vertical_edge_armv6(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_loop_filter_vertical_edge_armv6(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_loop_filter_vertical_edge_armv6(v_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-}
-
-void vp8_loop_filter_bvs_armv6(unsigned char *y_ptr, int y_stride,
- const unsigned char *blimit)
-{
- vp8_loop_filter_simple_vertical_edge_armv6(y_ptr + 4, y_stride, blimit);
- vp8_loop_filter_simple_vertical_edge_armv6(y_ptr + 8, y_stride, blimit);
- vp8_loop_filter_simple_vertical_edge_armv6(y_ptr + 12, y_stride, blimit);
-}
-#endif
-
-#if HAVE_NEON
-/* NEON loopfilter functions */
-/* Horizontal MB filtering */
-void vp8_loop_filter_mbh_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- unsigned char mblim = *lfi->mblim;
- unsigned char lim = *lfi->lim;
- unsigned char hev_thr = *lfi->hev_thr;
- vp8_mbloop_filter_horizontal_edge_y_neon(y_ptr, y_stride, mblim, lim, hev_thr);
-
- if (u_ptr)
- vp8_mbloop_filter_horizontal_edge_uv_neon(u_ptr, uv_stride, mblim, lim, hev_thr, v_ptr);
-}
-
-/* Vertical MB Filtering */
-void vp8_loop_filter_mbv_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- unsigned char mblim = *lfi->mblim;
- unsigned char lim = *lfi->lim;
- unsigned char hev_thr = *lfi->hev_thr;
-
- vp8_mbloop_filter_vertical_edge_y_neon(y_ptr, y_stride, mblim, lim, hev_thr);
-
- if (u_ptr)
- vp8_mbloop_filter_vertical_edge_uv_neon(u_ptr, uv_stride, mblim, lim, hev_thr, v_ptr);
-}
-
-/* Horizontal B Filtering */
-void vp8_loop_filter_bh_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- unsigned char blim = *lfi->blim;
- unsigned char lim = *lfi->lim;
- unsigned char hev_thr = *lfi->hev_thr;
-
- vp8_loop_filter_horizontal_edge_y_neon(y_ptr + 4 * y_stride, y_stride, blim, lim, hev_thr);
- vp8_loop_filter_horizontal_edge_y_neon(y_ptr + 8 * y_stride, y_stride, blim, lim, hev_thr);
- vp8_loop_filter_horizontal_edge_y_neon(y_ptr + 12 * y_stride, y_stride, blim, lim, hev_thr);
-
- if (u_ptr)
- vp8_loop_filter_horizontal_edge_uv_neon(u_ptr + 4 * uv_stride, uv_stride, blim, lim, hev_thr, v_ptr + 4 * uv_stride);
-}
-
-/* Vertical B Filtering */
-void vp8_loop_filter_bv_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- unsigned char blim = *lfi->blim;
- unsigned char lim = *lfi->lim;
- unsigned char hev_thr = *lfi->hev_thr;
-
- vp8_loop_filter_vertical_edge_y_neon(y_ptr + 4, y_stride, blim, lim, hev_thr);
- vp8_loop_filter_vertical_edge_y_neon(y_ptr + 8, y_stride, blim, lim, hev_thr);
- vp8_loop_filter_vertical_edge_y_neon(y_ptr + 12, y_stride, blim, lim, hev_thr);
-
- if (u_ptr)
- vp8_loop_filter_vertical_edge_uv_neon(u_ptr + 4, uv_stride, blim, lim, hev_thr, v_ptr + 4);
-}
-#endif
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/bilinearpredict_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/bilinearpredict_neon.c
deleted file mode 100644
index bb6ea76ba4..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/bilinearpredict_neon.c
+++ /dev/null
@@ -1,591 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-static const uint8_t bifilter4_coeff[8][2] = {
- {128, 0},
- {112, 16},
- { 96, 32},
- { 80, 48},
- { 64, 64},
- { 48, 80},
- { 32, 96},
- { 16, 112}
-};
-
-void vp8_bilinear_predict8x4_neon(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch) {
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8;
- uint8x8_t d7u8, d9u8, d11u8, d22u8, d23u8, d24u8, d25u8, d26u8;
- uint8x16_t q1u8, q2u8, q3u8, q4u8, q5u8;
- uint16x8_t q1u16, q2u16, q3u16, q4u16;
- uint16x8_t q6u16, q7u16, q8u16, q9u16, q10u16;
-
- if (xoffset == 0) { // skip_1stpass_filter
- d22u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d23u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d24u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d25u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d26u8 = vld1_u8(src_ptr);
- } else {
- q1u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q2u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q3u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q4u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q5u8 = vld1q_u8(src_ptr);
-
- d0u8 = vdup_n_u8(bifilter4_coeff[xoffset][0]);
- d1u8 = vdup_n_u8(bifilter4_coeff[xoffset][1]);
-
- q6u16 = vmull_u8(vget_low_u8(q1u8), d0u8);
- q7u16 = vmull_u8(vget_low_u8(q2u8), d0u8);
- q8u16 = vmull_u8(vget_low_u8(q3u8), d0u8);
- q9u16 = vmull_u8(vget_low_u8(q4u8), d0u8);
- q10u16 = vmull_u8(vget_low_u8(q5u8), d0u8);
-
- d3u8 = vext_u8(vget_low_u8(q1u8), vget_high_u8(q1u8), 1);
- d5u8 = vext_u8(vget_low_u8(q2u8), vget_high_u8(q2u8), 1);
- d7u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 1);
- d9u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 1);
- d11u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 1);
-
- q6u16 = vmlal_u8(q6u16, d3u8, d1u8);
- q7u16 = vmlal_u8(q7u16, d5u8, d1u8);
- q8u16 = vmlal_u8(q8u16, d7u8, d1u8);
- q9u16 = vmlal_u8(q9u16, d9u8, d1u8);
- q10u16 = vmlal_u8(q10u16, d11u8, d1u8);
-
- d22u8 = vqrshrn_n_u16(q6u16, 7);
- d23u8 = vqrshrn_n_u16(q7u16, 7);
- d24u8 = vqrshrn_n_u16(q8u16, 7);
- d25u8 = vqrshrn_n_u16(q9u16, 7);
- d26u8 = vqrshrn_n_u16(q10u16, 7);
- }
-
- // secondpass_filter
- if (yoffset == 0) { // skip_2ndpass_filter
- vst1_u8((uint8_t *)dst_ptr, d22u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d23u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d24u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d25u8);
- } else {
- d0u8 = vdup_n_u8(bifilter4_coeff[yoffset][0]);
- d1u8 = vdup_n_u8(bifilter4_coeff[yoffset][1]);
-
- q1u16 = vmull_u8(d22u8, d0u8);
- q2u16 = vmull_u8(d23u8, d0u8);
- q3u16 = vmull_u8(d24u8, d0u8);
- q4u16 = vmull_u8(d25u8, d0u8);
-
- q1u16 = vmlal_u8(q1u16, d23u8, d1u8);
- q2u16 = vmlal_u8(q2u16, d24u8, d1u8);
- q3u16 = vmlal_u8(q3u16, d25u8, d1u8);
- q4u16 = vmlal_u8(q4u16, d26u8, d1u8);
-
- d2u8 = vqrshrn_n_u16(q1u16, 7);
- d3u8 = vqrshrn_n_u16(q2u16, 7);
- d4u8 = vqrshrn_n_u16(q3u16, 7);
- d5u8 = vqrshrn_n_u16(q4u16, 7);
-
- vst1_u8((uint8_t *)dst_ptr, d2u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d3u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d4u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d5u8);
- }
- return;
-}
-
-void vp8_bilinear_predict8x8_neon(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch) {
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8, d8u8, d9u8, d11u8;
- uint8x8_t d22u8, d23u8, d24u8, d25u8, d26u8, d27u8, d28u8, d29u8, d30u8;
- uint8x16_t q1u8, q2u8, q3u8, q4u8, q5u8;
- uint16x8_t q1u16, q2u16, q3u16, q4u16, q5u16;
- uint16x8_t q6u16, q7u16, q8u16, q9u16, q10u16;
-
- if (xoffset == 0) { // skip_1stpass_filter
- d22u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d23u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d24u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d25u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d26u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d27u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d28u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d29u8 = vld1_u8(src_ptr); src_ptr += src_pixels_per_line;
- d30u8 = vld1_u8(src_ptr);
- } else {
- q1u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q2u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q3u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q4u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
-
- d0u8 = vdup_n_u8(bifilter4_coeff[xoffset][0]);
- d1u8 = vdup_n_u8(bifilter4_coeff[xoffset][1]);
-
- q6u16 = vmull_u8(vget_low_u8(q1u8), d0u8);
- q7u16 = vmull_u8(vget_low_u8(q2u8), d0u8);
- q8u16 = vmull_u8(vget_low_u8(q3u8), d0u8);
- q9u16 = vmull_u8(vget_low_u8(q4u8), d0u8);
-
- d3u8 = vext_u8(vget_low_u8(q1u8), vget_high_u8(q1u8), 1);
- d5u8 = vext_u8(vget_low_u8(q2u8), vget_high_u8(q2u8), 1);
- d7u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 1);
- d9u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 1);
-
- q6u16 = vmlal_u8(q6u16, d3u8, d1u8);
- q7u16 = vmlal_u8(q7u16, d5u8, d1u8);
- q8u16 = vmlal_u8(q8u16, d7u8, d1u8);
- q9u16 = vmlal_u8(q9u16, d9u8, d1u8);
-
- d22u8 = vqrshrn_n_u16(q6u16, 7);
- d23u8 = vqrshrn_n_u16(q7u16, 7);
- d24u8 = vqrshrn_n_u16(q8u16, 7);
- d25u8 = vqrshrn_n_u16(q9u16, 7);
-
- // first_pass filtering on the rest 5-line data
- q1u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q2u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q3u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q4u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q5u8 = vld1q_u8(src_ptr);
-
- q6u16 = vmull_u8(vget_low_u8(q1u8), d0u8);
- q7u16 = vmull_u8(vget_low_u8(q2u8), d0u8);
- q8u16 = vmull_u8(vget_low_u8(q3u8), d0u8);
- q9u16 = vmull_u8(vget_low_u8(q4u8), d0u8);
- q10u16 = vmull_u8(vget_low_u8(q5u8), d0u8);
-
- d3u8 = vext_u8(vget_low_u8(q1u8), vget_high_u8(q1u8), 1);
- d5u8 = vext_u8(vget_low_u8(q2u8), vget_high_u8(q2u8), 1);
- d7u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 1);
- d9u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 1);
- d11u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 1);
-
- q6u16 = vmlal_u8(q6u16, d3u8, d1u8);
- q7u16 = vmlal_u8(q7u16, d5u8, d1u8);
- q8u16 = vmlal_u8(q8u16, d7u8, d1u8);
- q9u16 = vmlal_u8(q9u16, d9u8, d1u8);
- q10u16 = vmlal_u8(q10u16, d11u8, d1u8);
-
- d26u8 = vqrshrn_n_u16(q6u16, 7);
- d27u8 = vqrshrn_n_u16(q7u16, 7);
- d28u8 = vqrshrn_n_u16(q8u16, 7);
- d29u8 = vqrshrn_n_u16(q9u16, 7);
- d30u8 = vqrshrn_n_u16(q10u16, 7);
- }
-
- // secondpass_filter
- if (yoffset == 0) { // skip_2ndpass_filter
- vst1_u8((uint8_t *)dst_ptr, d22u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d23u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d24u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d25u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d26u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d27u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d28u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d29u8);
- } else {
- d0u8 = vdup_n_u8(bifilter4_coeff[yoffset][0]);
- d1u8 = vdup_n_u8(bifilter4_coeff[yoffset][1]);
-
- q1u16 = vmull_u8(d22u8, d0u8);
- q2u16 = vmull_u8(d23u8, d0u8);
- q3u16 = vmull_u8(d24u8, d0u8);
- q4u16 = vmull_u8(d25u8, d0u8);
- q5u16 = vmull_u8(d26u8, d0u8);
- q6u16 = vmull_u8(d27u8, d0u8);
- q7u16 = vmull_u8(d28u8, d0u8);
- q8u16 = vmull_u8(d29u8, d0u8);
-
- q1u16 = vmlal_u8(q1u16, d23u8, d1u8);
- q2u16 = vmlal_u8(q2u16, d24u8, d1u8);
- q3u16 = vmlal_u8(q3u16, d25u8, d1u8);
- q4u16 = vmlal_u8(q4u16, d26u8, d1u8);
- q5u16 = vmlal_u8(q5u16, d27u8, d1u8);
- q6u16 = vmlal_u8(q6u16, d28u8, d1u8);
- q7u16 = vmlal_u8(q7u16, d29u8, d1u8);
- q8u16 = vmlal_u8(q8u16, d30u8, d1u8);
-
- d2u8 = vqrshrn_n_u16(q1u16, 7);
- d3u8 = vqrshrn_n_u16(q2u16, 7);
- d4u8 = vqrshrn_n_u16(q3u16, 7);
- d5u8 = vqrshrn_n_u16(q4u16, 7);
- d6u8 = vqrshrn_n_u16(q5u16, 7);
- d7u8 = vqrshrn_n_u16(q6u16, 7);
- d8u8 = vqrshrn_n_u16(q7u16, 7);
- d9u8 = vqrshrn_n_u16(q8u16, 7);
-
- vst1_u8((uint8_t *)dst_ptr, d2u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d3u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d4u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d5u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d6u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d7u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d8u8); dst_ptr += dst_pitch;
- vst1_u8((uint8_t *)dst_ptr, d9u8);
- }
- return;
-}
-
-void vp8_bilinear_predict16x16_neon(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch) {
- int i;
- unsigned char tmp[272];
- unsigned char *tmpp;
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8, d8u8, d9u8;
- uint8x8_t d10u8, d11u8, d12u8, d13u8, d14u8, d15u8, d16u8, d17u8, d18u8;
- uint8x8_t d19u8, d20u8, d21u8;
- uint8x16_t q1u8, q2u8, q3u8, q4u8, q5u8, q6u8, q7u8, q8u8, q9u8, q10u8;
- uint8x16_t q11u8, q12u8, q13u8, q14u8, q15u8;
- uint16x8_t q1u16, q2u16, q3u16, q4u16, q5u16, q6u16, q7u16, q8u16;
- uint16x8_t q9u16, q10u16, q11u16, q12u16, q13u16, q14u16;
-
- if (xoffset == 0) { // secondpass_bfilter16x16_only
- d0u8 = vdup_n_u8(bifilter4_coeff[yoffset][0]);
- d1u8 = vdup_n_u8(bifilter4_coeff[yoffset][1]);
-
- q11u8 = vld1q_u8(src_ptr);
- src_ptr += src_pixels_per_line;
- for (i = 4; i > 0; i--) {
- q12u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q13u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q14u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
- q15u8 = vld1q_u8(src_ptr); src_ptr += src_pixels_per_line;
-
- q1u16 = vmull_u8(vget_low_u8(q11u8), d0u8);
- q2u16 = vmull_u8(vget_high_u8(q11u8), d0u8);
- q3u16 = vmull_u8(vget_low_u8(q12u8), d0u8);
- q4u16 = vmull_u8(vget_high_u8(q12u8), d0u8);
- q5u16 = vmull_u8(vget_low_u8(q13u8), d0u8);
- q6u16 = vmull_u8(vget_high_u8(q13u8), d0u8);
- q7u16 = vmull_u8(vget_low_u8(q14u8), d0u8);
- q8u16 = vmull_u8(vget_high_u8(q14u8), d0u8);
-
- q1u16 = vmlal_u8(q1u16, vget_low_u8(q12u8), d1u8);
- q2u16 = vmlal_u8(q2u16, vget_high_u8(q12u8), d1u8);
- q3u16 = vmlal_u8(q3u16, vget_low_u8(q13u8), d1u8);
- q4u16 = vmlal_u8(q4u16, vget_high_u8(q13u8), d1u8);
- q5u16 = vmlal_u8(q5u16, vget_low_u8(q14u8), d1u8);
- q6u16 = vmlal_u8(q6u16, vget_high_u8(q14u8), d1u8);
- q7u16 = vmlal_u8(q7u16, vget_low_u8(q15u8), d1u8);
- q8u16 = vmlal_u8(q8u16, vget_high_u8(q15u8), d1u8);
-
- d2u8 = vqrshrn_n_u16(q1u16, 7);
- d3u8 = vqrshrn_n_u16(q2u16, 7);
- d4u8 = vqrshrn_n_u16(q3u16, 7);
- d5u8 = vqrshrn_n_u16(q4u16, 7);
- d6u8 = vqrshrn_n_u16(q5u16, 7);
- d7u8 = vqrshrn_n_u16(q6u16, 7);
- d8u8 = vqrshrn_n_u16(q7u16, 7);
- d9u8 = vqrshrn_n_u16(q8u16, 7);
-
- q1u8 = vcombine_u8(d2u8, d3u8);
- q2u8 = vcombine_u8(d4u8, d5u8);
- q3u8 = vcombine_u8(d6u8, d7u8);
- q4u8 = vcombine_u8(d8u8, d9u8);
-
- q11u8 = q15u8;
-
- vst1q_u8((uint8_t *)dst_ptr, q1u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q2u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q3u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q4u8); dst_ptr += dst_pitch;
- }
- return;
- }
-
- if (yoffset == 0) { // firstpass_bfilter16x16_only
- d0u8 = vdup_n_u8(bifilter4_coeff[xoffset][0]);
- d1u8 = vdup_n_u8(bifilter4_coeff[xoffset][1]);
-
- for (i = 4; i > 0 ; i--) {
- d2u8 = vld1_u8(src_ptr);
- d3u8 = vld1_u8(src_ptr + 8);
- d4u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d5u8 = vld1_u8(src_ptr);
- d6u8 = vld1_u8(src_ptr + 8);
- d7u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d8u8 = vld1_u8(src_ptr);
- d9u8 = vld1_u8(src_ptr + 8);
- d10u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d11u8 = vld1_u8(src_ptr);
- d12u8 = vld1_u8(src_ptr + 8);
- d13u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
-
- q7u16 = vmull_u8(d2u8, d0u8);
- q8u16 = vmull_u8(d3u8, d0u8);
- q9u16 = vmull_u8(d5u8, d0u8);
- q10u16 = vmull_u8(d6u8, d0u8);
- q11u16 = vmull_u8(d8u8, d0u8);
- q12u16 = vmull_u8(d9u8, d0u8);
- q13u16 = vmull_u8(d11u8, d0u8);
- q14u16 = vmull_u8(d12u8, d0u8);
-
- d2u8 = vext_u8(d2u8, d3u8, 1);
- d5u8 = vext_u8(d5u8, d6u8, 1);
- d8u8 = vext_u8(d8u8, d9u8, 1);
- d11u8 = vext_u8(d11u8, d12u8, 1);
-
- q7u16 = vmlal_u8(q7u16, d2u8, d1u8);
- q9u16 = vmlal_u8(q9u16, d5u8, d1u8);
- q11u16 = vmlal_u8(q11u16, d8u8, d1u8);
- q13u16 = vmlal_u8(q13u16, d11u8, d1u8);
-
- d3u8 = vext_u8(d3u8, d4u8, 1);
- d6u8 = vext_u8(d6u8, d7u8, 1);
- d9u8 = vext_u8(d9u8, d10u8, 1);
- d12u8 = vext_u8(d12u8, d13u8, 1);
-
- q8u16 = vmlal_u8(q8u16, d3u8, d1u8);
- q10u16 = vmlal_u8(q10u16, d6u8, d1u8);
- q12u16 = vmlal_u8(q12u16, d9u8, d1u8);
- q14u16 = vmlal_u8(q14u16, d12u8, d1u8);
-
- d14u8 = vqrshrn_n_u16(q7u16, 7);
- d15u8 = vqrshrn_n_u16(q8u16, 7);
- d16u8 = vqrshrn_n_u16(q9u16, 7);
- d17u8 = vqrshrn_n_u16(q10u16, 7);
- d18u8 = vqrshrn_n_u16(q11u16, 7);
- d19u8 = vqrshrn_n_u16(q12u16, 7);
- d20u8 = vqrshrn_n_u16(q13u16, 7);
- d21u8 = vqrshrn_n_u16(q14u16, 7);
-
- q7u8 = vcombine_u8(d14u8, d15u8);
- q8u8 = vcombine_u8(d16u8, d17u8);
- q9u8 = vcombine_u8(d18u8, d19u8);
- q10u8 =vcombine_u8(d20u8, d21u8);
-
- vst1q_u8((uint8_t *)dst_ptr, q7u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q8u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q9u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q10u8); dst_ptr += dst_pitch;
- }
- return;
- }
-
- d0u8 = vdup_n_u8(bifilter4_coeff[xoffset][0]);
- d1u8 = vdup_n_u8(bifilter4_coeff[xoffset][1]);
-
- d2u8 = vld1_u8(src_ptr);
- d3u8 = vld1_u8(src_ptr + 8);
- d4u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d5u8 = vld1_u8(src_ptr);
- d6u8 = vld1_u8(src_ptr + 8);
- d7u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d8u8 = vld1_u8(src_ptr);
- d9u8 = vld1_u8(src_ptr + 8);
- d10u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d11u8 = vld1_u8(src_ptr);
- d12u8 = vld1_u8(src_ptr + 8);
- d13u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
-
- // First Pass: output_height lines x output_width columns (17x16)
- tmpp = tmp;
- for (i = 3; i > 0; i--) {
- q7u16 = vmull_u8(d2u8, d0u8);
- q8u16 = vmull_u8(d3u8, d0u8);
- q9u16 = vmull_u8(d5u8, d0u8);
- q10u16 = vmull_u8(d6u8, d0u8);
- q11u16 = vmull_u8(d8u8, d0u8);
- q12u16 = vmull_u8(d9u8, d0u8);
- q13u16 = vmull_u8(d11u8, d0u8);
- q14u16 = vmull_u8(d12u8, d0u8);
-
- d2u8 = vext_u8(d2u8, d3u8, 1);
- d5u8 = vext_u8(d5u8, d6u8, 1);
- d8u8 = vext_u8(d8u8, d9u8, 1);
- d11u8 = vext_u8(d11u8, d12u8, 1);
-
- q7u16 = vmlal_u8(q7u16, d2u8, d1u8);
- q9u16 = vmlal_u8(q9u16, d5u8, d1u8);
- q11u16 = vmlal_u8(q11u16, d8u8, d1u8);
- q13u16 = vmlal_u8(q13u16, d11u8, d1u8);
-
- d3u8 = vext_u8(d3u8, d4u8, 1);
- d6u8 = vext_u8(d6u8, d7u8, 1);
- d9u8 = vext_u8(d9u8, d10u8, 1);
- d12u8 = vext_u8(d12u8, d13u8, 1);
-
- q8u16 = vmlal_u8(q8u16, d3u8, d1u8);
- q10u16 = vmlal_u8(q10u16, d6u8, d1u8);
- q12u16 = vmlal_u8(q12u16, d9u8, d1u8);
- q14u16 = vmlal_u8(q14u16, d12u8, d1u8);
-
- d14u8 = vqrshrn_n_u16(q7u16, 7);
- d15u8 = vqrshrn_n_u16(q8u16, 7);
- d16u8 = vqrshrn_n_u16(q9u16, 7);
- d17u8 = vqrshrn_n_u16(q10u16, 7);
- d18u8 = vqrshrn_n_u16(q11u16, 7);
- d19u8 = vqrshrn_n_u16(q12u16, 7);
- d20u8 = vqrshrn_n_u16(q13u16, 7);
- d21u8 = vqrshrn_n_u16(q14u16, 7);
-
- d2u8 = vld1_u8(src_ptr);
- d3u8 = vld1_u8(src_ptr + 8);
- d4u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d5u8 = vld1_u8(src_ptr);
- d6u8 = vld1_u8(src_ptr + 8);
- d7u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d8u8 = vld1_u8(src_ptr);
- d9u8 = vld1_u8(src_ptr + 8);
- d10u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
- d11u8 = vld1_u8(src_ptr);
- d12u8 = vld1_u8(src_ptr + 8);
- d13u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
-
- q7u8 = vcombine_u8(d14u8, d15u8);
- q8u8 = vcombine_u8(d16u8, d17u8);
- q9u8 = vcombine_u8(d18u8, d19u8);
- q10u8 = vcombine_u8(d20u8, d21u8);
-
- vst1q_u8((uint8_t *)tmpp, q7u8); tmpp += 16;
- vst1q_u8((uint8_t *)tmpp, q8u8); tmpp += 16;
- vst1q_u8((uint8_t *)tmpp, q9u8); tmpp += 16;
- vst1q_u8((uint8_t *)tmpp, q10u8); tmpp += 16;
- }
-
- // First-pass filtering for rest 5 lines
- d14u8 = vld1_u8(src_ptr);
- d15u8 = vld1_u8(src_ptr + 8);
- d16u8 = vld1_u8(src_ptr + 16); src_ptr += src_pixels_per_line;
-
- q9u16 = vmull_u8(d2u8, d0u8);
- q10u16 = vmull_u8(d3u8, d0u8);
- q11u16 = vmull_u8(d5u8, d0u8);
- q12u16 = vmull_u8(d6u8, d0u8);
- q13u16 = vmull_u8(d8u8, d0u8);
- q14u16 = vmull_u8(d9u8, d0u8);
-
- d2u8 = vext_u8(d2u8, d3u8, 1);
- d5u8 = vext_u8(d5u8, d6u8, 1);
- d8u8 = vext_u8(d8u8, d9u8, 1);
-
- q9u16 = vmlal_u8(q9u16, d2u8, d1u8);
- q11u16 = vmlal_u8(q11u16, d5u8, d1u8);
- q13u16 = vmlal_u8(q13u16, d8u8, d1u8);
-
- d3u8 = vext_u8(d3u8, d4u8, 1);
- d6u8 = vext_u8(d6u8, d7u8, 1);
- d9u8 = vext_u8(d9u8, d10u8, 1);
-
- q10u16 = vmlal_u8(q10u16, d3u8, d1u8);
- q12u16 = vmlal_u8(q12u16, d6u8, d1u8);
- q14u16 = vmlal_u8(q14u16, d9u8, d1u8);
-
- q1u16 = vmull_u8(d11u8, d0u8);
- q2u16 = vmull_u8(d12u8, d0u8);
- q3u16 = vmull_u8(d14u8, d0u8);
- q4u16 = vmull_u8(d15u8, d0u8);
-
- d11u8 = vext_u8(d11u8, d12u8, 1);
- d14u8 = vext_u8(d14u8, d15u8, 1);
-
- q1u16 = vmlal_u8(q1u16, d11u8, d1u8);
- q3u16 = vmlal_u8(q3u16, d14u8, d1u8);
-
- d12u8 = vext_u8(d12u8, d13u8, 1);
- d15u8 = vext_u8(d15u8, d16u8, 1);
-
- q2u16 = vmlal_u8(q2u16, d12u8, d1u8);
- q4u16 = vmlal_u8(q4u16, d15u8, d1u8);
-
- d10u8 = vqrshrn_n_u16(q9u16, 7);
- d11u8 = vqrshrn_n_u16(q10u16, 7);
- d12u8 = vqrshrn_n_u16(q11u16, 7);
- d13u8 = vqrshrn_n_u16(q12u16, 7);
- d14u8 = vqrshrn_n_u16(q13u16, 7);
- d15u8 = vqrshrn_n_u16(q14u16, 7);
- d16u8 = vqrshrn_n_u16(q1u16, 7);
- d17u8 = vqrshrn_n_u16(q2u16, 7);
- d18u8 = vqrshrn_n_u16(q3u16, 7);
- d19u8 = vqrshrn_n_u16(q4u16, 7);
-
- q5u8 = vcombine_u8(d10u8, d11u8);
- q6u8 = vcombine_u8(d12u8, d13u8);
- q7u8 = vcombine_u8(d14u8, d15u8);
- q8u8 = vcombine_u8(d16u8, d17u8);
- q9u8 = vcombine_u8(d18u8, d19u8);
-
- vst1q_u8((uint8_t *)tmpp, q5u8); tmpp += 16;
- vst1q_u8((uint8_t *)tmpp, q6u8); tmpp += 16;
- vst1q_u8((uint8_t *)tmpp, q7u8); tmpp += 16;
- vst1q_u8((uint8_t *)tmpp, q8u8); tmpp += 16;
- vst1q_u8((uint8_t *)tmpp, q9u8);
-
- // secondpass_filter
- d0u8 = vdup_n_u8(bifilter4_coeff[yoffset][0]);
- d1u8 = vdup_n_u8(bifilter4_coeff[yoffset][1]);
-
- tmpp = tmp;
- q11u8 = vld1q_u8(tmpp);
- tmpp += 16;
- for (i = 4; i > 0; i--) {
- q12u8 = vld1q_u8(tmpp); tmpp += 16;
- q13u8 = vld1q_u8(tmpp); tmpp += 16;
- q14u8 = vld1q_u8(tmpp); tmpp += 16;
- q15u8 = vld1q_u8(tmpp); tmpp += 16;
-
- q1u16 = vmull_u8(vget_low_u8(q11u8), d0u8);
- q2u16 = vmull_u8(vget_high_u8(q11u8), d0u8);
- q3u16 = vmull_u8(vget_low_u8(q12u8), d0u8);
- q4u16 = vmull_u8(vget_high_u8(q12u8), d0u8);
- q5u16 = vmull_u8(vget_low_u8(q13u8), d0u8);
- q6u16 = vmull_u8(vget_high_u8(q13u8), d0u8);
- q7u16 = vmull_u8(vget_low_u8(q14u8), d0u8);
- q8u16 = vmull_u8(vget_high_u8(q14u8), d0u8);
-
- q1u16 = vmlal_u8(q1u16, vget_low_u8(q12u8), d1u8);
- q2u16 = vmlal_u8(q2u16, vget_high_u8(q12u8), d1u8);
- q3u16 = vmlal_u8(q3u16, vget_low_u8(q13u8), d1u8);
- q4u16 = vmlal_u8(q4u16, vget_high_u8(q13u8), d1u8);
- q5u16 = vmlal_u8(q5u16, vget_low_u8(q14u8), d1u8);
- q6u16 = vmlal_u8(q6u16, vget_high_u8(q14u8), d1u8);
- q7u16 = vmlal_u8(q7u16, vget_low_u8(q15u8), d1u8);
- q8u16 = vmlal_u8(q8u16, vget_high_u8(q15u8), d1u8);
-
- d2u8 = vqrshrn_n_u16(q1u16, 7);
- d3u8 = vqrshrn_n_u16(q2u16, 7);
- d4u8 = vqrshrn_n_u16(q3u16, 7);
- d5u8 = vqrshrn_n_u16(q4u16, 7);
- d6u8 = vqrshrn_n_u16(q5u16, 7);
- d7u8 = vqrshrn_n_u16(q6u16, 7);
- d8u8 = vqrshrn_n_u16(q7u16, 7);
- d9u8 = vqrshrn_n_u16(q8u16, 7);
-
- q1u8 = vcombine_u8(d2u8, d3u8);
- q2u8 = vcombine_u8(d4u8, d5u8);
- q3u8 = vcombine_u8(d6u8, d7u8);
- q4u8 = vcombine_u8(d8u8, d9u8);
-
- q11u8 = q15u8;
-
- vst1q_u8((uint8_t *)dst_ptr, q1u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q2u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q3u8); dst_ptr += dst_pitch;
- vst1q_u8((uint8_t *)dst_ptr, q4u8); dst_ptr += dst_pitch;
- }
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/copymem_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/copymem_neon.c
deleted file mode 100644
index deced115c1..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/copymem_neon.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-void vp8_copy_mem8x4_neon(
- unsigned char *src,
- int src_stride,
- unsigned char *dst,
- int dst_stride) {
- uint8x8_t vtmp;
- int r;
-
- for (r = 0; r < 4; r++) {
- vtmp = vld1_u8(src);
- vst1_u8(dst, vtmp);
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-void vp8_copy_mem8x8_neon(
- unsigned char *src,
- int src_stride,
- unsigned char *dst,
- int dst_stride) {
- uint8x8_t vtmp;
- int r;
-
- for (r = 0; r < 8; r++) {
- vtmp = vld1_u8(src);
- vst1_u8(dst, vtmp);
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-void vp8_copy_mem16x16_neon(
- unsigned char *src,
- int src_stride,
- unsigned char *dst,
- int dst_stride) {
- int r;
- uint8x16_t qtmp;
-
- for (r = 0; r < 16; r++) {
- qtmp = vld1q_u8(src);
- vst1q_u8(dst, qtmp);
- src += src_stride;
- dst += dst_stride;
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/dc_only_idct_add_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/dc_only_idct_add_neon.c
deleted file mode 100644
index ad5f41d7de..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/dc_only_idct_add_neon.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-void vp8_dc_only_idct_add_neon(
- int16_t input_dc,
- unsigned char *pred_ptr,
- int pred_stride,
- unsigned char *dst_ptr,
- int dst_stride) {
- int i;
- uint16_t a1 = ((input_dc + 4) >> 3);
- uint32x2_t d2u32 = vdup_n_u32(0);
- uint8x8_t d2u8;
- uint16x8_t q1u16;
- uint16x8_t qAdd;
-
- qAdd = vdupq_n_u16(a1);
-
- for (i = 0; i < 2; i++) {
- d2u32 = vld1_lane_u32((const uint32_t *)pred_ptr, d2u32, 0);
- pred_ptr += pred_stride;
- d2u32 = vld1_lane_u32((const uint32_t *)pred_ptr, d2u32, 1);
- pred_ptr += pred_stride;
-
- q1u16 = vaddw_u8(qAdd, vreinterpret_u8_u32(d2u32));
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q1u16));
-
- vst1_lane_u32((uint32_t *)dst_ptr, vreinterpret_u32_u8(d2u8), 0);
- dst_ptr += dst_stride;
- vst1_lane_u32((uint32_t *)dst_ptr, vreinterpret_u32_u8(d2u8), 1);
- dst_ptr += dst_stride;
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/dequant_idct_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/dequant_idct_neon.c
deleted file mode 100644
index 58e11922c7..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/dequant_idct_neon.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-static const int16_t cospi8sqrt2minus1 = 20091;
-static const int16_t sinpi8sqrt2 = 35468;
-
-void vp8_dequant_idct_add_neon(
- int16_t *input,
- int16_t *dq,
- unsigned char *dst,
- int stride) {
- unsigned char *dst0;
- int32x2_t d14, d15;
- int16x4_t d2, d3, d4, d5, d10, d11, d12, d13;
- int16x8_t q1, q2, q3, q4, q5, q6;
- int16x8_t qEmpty = vdupq_n_s16(0);
- int32x2x2_t d2tmp0, d2tmp1;
- int16x4x2_t d2tmp2, d2tmp3;
-
- d14 = d15 = vdup_n_s32(0);
-
- // load input
- q3 = vld1q_s16(input);
- vst1q_s16(input, qEmpty);
- input += 8;
- q4 = vld1q_s16(input);
- vst1q_s16(input, qEmpty);
-
- // load dq
- q5 = vld1q_s16(dq);
- dq += 8;
- q6 = vld1q_s16(dq);
-
- // load src from dst
- dst0 = dst;
- d14 = vld1_lane_s32((const int32_t *)dst0, d14, 0);
- dst0 += stride;
- d14 = vld1_lane_s32((const int32_t *)dst0, d14, 1);
- dst0 += stride;
- d15 = vld1_lane_s32((const int32_t *)dst0, d15, 0);
- dst0 += stride;
- d15 = vld1_lane_s32((const int32_t *)dst0, d15, 1);
-
- q1 = vreinterpretq_s16_u16(vmulq_u16(vreinterpretq_u16_s16(q3),
- vreinterpretq_u16_s16(q5)));
- q2 = vreinterpretq_s16_u16(vmulq_u16(vreinterpretq_u16_s16(q4),
- vreinterpretq_u16_s16(q6)));
-
- d12 = vqadd_s16(vget_low_s16(q1), vget_low_s16(q2));
- d13 = vqsub_s16(vget_low_s16(q1), vget_low_s16(q2));
-
- q2 = vcombine_s16(vget_high_s16(q1), vget_high_s16(q2));
-
- q3 = vqdmulhq_n_s16(q2, sinpi8sqrt2);
- q4 = vqdmulhq_n_s16(q2, cospi8sqrt2minus1);
-
- q3 = vshrq_n_s16(q3, 1);
- q4 = vshrq_n_s16(q4, 1);
-
- q3 = vqaddq_s16(q3, q2);
- q4 = vqaddq_s16(q4, q2);
-
- d10 = vqsub_s16(vget_low_s16(q3), vget_high_s16(q4));
- d11 = vqadd_s16(vget_high_s16(q3), vget_low_s16(q4));
-
- d2 = vqadd_s16(d12, d11);
- d3 = vqadd_s16(d13, d10);
- d4 = vqsub_s16(d13, d10);
- d5 = vqsub_s16(d12, d11);
-
- d2tmp0 = vtrn_s32(vreinterpret_s32_s16(d2), vreinterpret_s32_s16(d4));
- d2tmp1 = vtrn_s32(vreinterpret_s32_s16(d3), vreinterpret_s32_s16(d5));
- d2tmp2 = vtrn_s16(vreinterpret_s16_s32(d2tmp0.val[0]),
- vreinterpret_s16_s32(d2tmp1.val[0]));
- d2tmp3 = vtrn_s16(vreinterpret_s16_s32(d2tmp0.val[1]),
- vreinterpret_s16_s32(d2tmp1.val[1]));
-
- // loop 2
- q2 = vcombine_s16(d2tmp2.val[1], d2tmp3.val[1]);
-
- q3 = vqdmulhq_n_s16(q2, sinpi8sqrt2);
- q4 = vqdmulhq_n_s16(q2, cospi8sqrt2minus1);
-
- d12 = vqadd_s16(d2tmp2.val[0], d2tmp3.val[0]);
- d13 = vqsub_s16(d2tmp2.val[0], d2tmp3.val[0]);
-
- q3 = vshrq_n_s16(q3, 1);
- q4 = vshrq_n_s16(q4, 1);
-
- q3 = vqaddq_s16(q3, q2);
- q4 = vqaddq_s16(q4, q2);
-
- d10 = vqsub_s16(vget_low_s16(q3), vget_high_s16(q4));
- d11 = vqadd_s16(vget_high_s16(q3), vget_low_s16(q4));
-
- d2 = vqadd_s16(d12, d11);
- d3 = vqadd_s16(d13, d10);
- d4 = vqsub_s16(d13, d10);
- d5 = vqsub_s16(d12, d11);
-
- d2 = vrshr_n_s16(d2, 3);
- d3 = vrshr_n_s16(d3, 3);
- d4 = vrshr_n_s16(d4, 3);
- d5 = vrshr_n_s16(d5, 3);
-
- d2tmp0 = vtrn_s32(vreinterpret_s32_s16(d2), vreinterpret_s32_s16(d4));
- d2tmp1 = vtrn_s32(vreinterpret_s32_s16(d3), vreinterpret_s32_s16(d5));
- d2tmp2 = vtrn_s16(vreinterpret_s16_s32(d2tmp0.val[0]),
- vreinterpret_s16_s32(d2tmp1.val[0]));
- d2tmp3 = vtrn_s16(vreinterpret_s16_s32(d2tmp0.val[1]),
- vreinterpret_s16_s32(d2tmp1.val[1]));
-
- q1 = vcombine_s16(d2tmp2.val[0], d2tmp2.val[1]);
- q2 = vcombine_s16(d2tmp3.val[0], d2tmp3.val[1]);
-
- q1 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q1),
- vreinterpret_u8_s32(d14)));
- q2 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q2),
- vreinterpret_u8_s32(d15)));
-
- d14 = vreinterpret_s32_u8(vqmovun_s16(q1));
- d15 = vreinterpret_s32_u8(vqmovun_s16(q2));
-
- dst0 = dst;
- vst1_lane_s32((int32_t *)dst0, d14, 0);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst0, d14, 1);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst0, d15, 0);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst0, d15, 1);
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/dequantizeb_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/dequantizeb_neon.c
deleted file mode 100644
index 54e709dd3c..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/dequantizeb_neon.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "vp8/common/blockd.h"
-
-void vp8_dequantize_b_neon(BLOCKD *d, short *DQC) {
- int16x8x2_t qQ, qDQC, qDQ;
-
- qQ = vld2q_s16(d->qcoeff);
- qDQC = vld2q_s16(DQC);
-
- qDQ.val[0] = vmulq_s16(qQ.val[0], qDQC.val[0]);
- qDQ.val[1] = vmulq_s16(qQ.val[1], qDQC.val[1]);
-
- vst2q_s16(d->dqcoeff, qDQ);
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/idct_blk_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/idct_blk_neon.c
deleted file mode 100644
index fb327a7260..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/idct_blk_neon.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-
-/* place these declarations here because we don't want to maintain them
- * outside of this scope
- */
-void idct_dequant_full_2x_neon(short *q, short *dq,
- unsigned char *dst, int stride);
-void idct_dequant_0_2x_neon(short *q, short dq,
- unsigned char *dst, int stride);
-
-
-void vp8_dequant_idct_add_y_block_neon(short *q, short *dq,
- unsigned char *dst,
- int stride, char *eobs)
-{
- int i;
-
- for (i = 0; i < 4; i++)
- {
- if (((short *)(eobs))[0])
- {
- if (((short *)eobs)[0] & 0xfefe)
- idct_dequant_full_2x_neon (q, dq, dst, stride);
- else
- idct_dequant_0_2x_neon (q, dq[0], dst, stride);
- }
-
- if (((short *)(eobs))[1])
- {
- if (((short *)eobs)[1] & 0xfefe)
- idct_dequant_full_2x_neon (q+32, dq, dst+8, stride);
- else
- idct_dequant_0_2x_neon (q+32, dq[0], dst+8, stride);
- }
- q += 64;
- dst += 4*stride;
- eobs += 4;
- }
-}
-
-void vp8_dequant_idct_add_uv_block_neon(short *q, short *dq,
- unsigned char *dstu,
- unsigned char *dstv,
- int stride, char *eobs)
-{
- if (((short *)(eobs))[0])
- {
- if (((short *)eobs)[0] & 0xfefe)
- idct_dequant_full_2x_neon (q, dq, dstu, stride);
- else
- idct_dequant_0_2x_neon (q, dq[0], dstu, stride);
- }
-
- q += 32;
- dstu += 4*stride;
-
- if (((short *)(eobs))[1])
- {
- if (((short *)eobs)[1] & 0xfefe)
- idct_dequant_full_2x_neon (q, dq, dstu, stride);
- else
- idct_dequant_0_2x_neon (q, dq[0], dstu, stride);
- }
-
- q += 32;
-
- if (((short *)(eobs))[2])
- {
- if (((short *)eobs)[2] & 0xfefe)
- idct_dequant_full_2x_neon (q, dq, dstv, stride);
- else
- idct_dequant_0_2x_neon (q, dq[0], dstv, stride);
- }
-
- q += 32;
- dstv += 4*stride;
-
- if (((short *)(eobs))[3])
- {
- if (((short *)eobs)[3] & 0xfefe)
- idct_dequant_full_2x_neon (q, dq, dstv, stride);
- else
- idct_dequant_0_2x_neon (q, dq[0], dstv, stride);
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c
deleted file mode 100644
index e6f862fa89..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-void idct_dequant_0_2x_neon(
- int16_t *q,
- int16_t dq,
- unsigned char *dst,
- int stride) {
- unsigned char *dst0;
- int i, a0, a1;
- int16x8x2_t q2Add;
- int32x2_t d2s32 = vdup_n_s32(0),
- d4s32 = vdup_n_s32(0);
- uint8x8_t d2u8, d4u8;
- uint16x8_t q1u16, q2u16;
-
- a0 = ((q[0] * dq) + 4) >> 3;
- a1 = ((q[16] * dq) + 4) >> 3;
- q[0] = q[16] = 0;
- q2Add.val[0] = vdupq_n_s16((int16_t)a0);
- q2Add.val[1] = vdupq_n_s16((int16_t)a1);
-
- for (i = 0; i < 2; i++, dst += 4) {
- dst0 = dst;
- d2s32 = vld1_lane_s32((const int32_t *)dst0, d2s32, 0);
- dst0 += stride;
- d2s32 = vld1_lane_s32((const int32_t *)dst0, d2s32, 1);
- dst0 += stride;
- d4s32 = vld1_lane_s32((const int32_t *)dst0, d4s32, 0);
- dst0 += stride;
- d4s32 = vld1_lane_s32((const int32_t *)dst0, d4s32, 1);
-
- q1u16 = vaddw_u8(vreinterpretq_u16_s16(q2Add.val[i]),
- vreinterpret_u8_s32(d2s32));
- q2u16 = vaddw_u8(vreinterpretq_u16_s16(q2Add.val[i]),
- vreinterpret_u8_s32(d4s32));
-
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q1u16));
- d4u8 = vqmovun_s16(vreinterpretq_s16_u16(q2u16));
-
- d2s32 = vreinterpret_s32_u8(d2u8);
- d4s32 = vreinterpret_s32_u8(d4u8);
-
- dst0 = dst;
- vst1_lane_s32((int32_t *)dst0, d2s32, 0);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst0, d2s32, 1);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst0, d4s32, 0);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst0, d4s32, 1);
- }
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c
deleted file mode 100644
index a60ed46b76..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-static const int16_t cospi8sqrt2minus1 = 20091;
-static const int16_t sinpi8sqrt2 = 17734;
-// because the lowest bit in 0x8a8c is 0, we can pre-shift this
-
-void idct_dequant_full_2x_neon(
- int16_t *q,
- int16_t *dq,
- unsigned char *dst,
- int stride) {
- unsigned char *dst0, *dst1;
- int32x2_t d28, d29, d30, d31;
- int16x8_t q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11;
- int16x8_t qEmpty = vdupq_n_s16(0);
- int32x4x2_t q2tmp0, q2tmp1;
- int16x8x2_t q2tmp2, q2tmp3;
- int16x4_t dLow0, dLow1, dHigh0, dHigh1;
-
- d28 = d29 = d30 = d31 = vdup_n_s32(0);
-
- // load dq
- q0 = vld1q_s16(dq);
- dq += 8;
- q1 = vld1q_s16(dq);
-
- // load q
- q2 = vld1q_s16(q);
- vst1q_s16(q, qEmpty);
- q += 8;
- q3 = vld1q_s16(q);
- vst1q_s16(q, qEmpty);
- q += 8;
- q4 = vld1q_s16(q);
- vst1q_s16(q, qEmpty);
- q += 8;
- q5 = vld1q_s16(q);
- vst1q_s16(q, qEmpty);
-
- // load src from dst
- dst0 = dst;
- dst1 = dst + 4;
- d28 = vld1_lane_s32((const int32_t *)dst0, d28, 0);
- dst0 += stride;
- d28 = vld1_lane_s32((const int32_t *)dst1, d28, 1);
- dst1 += stride;
- d29 = vld1_lane_s32((const int32_t *)dst0, d29, 0);
- dst0 += stride;
- d29 = vld1_lane_s32((const int32_t *)dst1, d29, 1);
- dst1 += stride;
-
- d30 = vld1_lane_s32((const int32_t *)dst0, d30, 0);
- dst0 += stride;
- d30 = vld1_lane_s32((const int32_t *)dst1, d30, 1);
- dst1 += stride;
- d31 = vld1_lane_s32((const int32_t *)dst0, d31, 0);
- d31 = vld1_lane_s32((const int32_t *)dst1, d31, 1);
-
- q2 = vmulq_s16(q2, q0);
- q3 = vmulq_s16(q3, q1);
- q4 = vmulq_s16(q4, q0);
- q5 = vmulq_s16(q5, q1);
-
- // vswp
- dLow0 = vget_low_s16(q2);
- dHigh0 = vget_high_s16(q2);
- dLow1 = vget_low_s16(q4);
- dHigh1 = vget_high_s16(q4);
- q2 = vcombine_s16(dLow0, dLow1);
- q4 = vcombine_s16(dHigh0, dHigh1);
-
- dLow0 = vget_low_s16(q3);
- dHigh0 = vget_high_s16(q3);
- dLow1 = vget_low_s16(q5);
- dHigh1 = vget_high_s16(q5);
- q3 = vcombine_s16(dLow0, dLow1);
- q5 = vcombine_s16(dHigh0, dHigh1);
-
- q6 = vqdmulhq_n_s16(q4, sinpi8sqrt2);
- q7 = vqdmulhq_n_s16(q5, sinpi8sqrt2);
- q8 = vqdmulhq_n_s16(q4, cospi8sqrt2minus1);
- q9 = vqdmulhq_n_s16(q5, cospi8sqrt2minus1);
-
- q10 = vqaddq_s16(q2, q3);
- q11 = vqsubq_s16(q2, q3);
-
- q8 = vshrq_n_s16(q8, 1);
- q9 = vshrq_n_s16(q9, 1);
-
- q4 = vqaddq_s16(q4, q8);
- q5 = vqaddq_s16(q5, q9);
-
- q2 = vqsubq_s16(q6, q5);
- q3 = vqaddq_s16(q7, q4);
-
- q4 = vqaddq_s16(q10, q3);
- q5 = vqaddq_s16(q11, q2);
- q6 = vqsubq_s16(q11, q2);
- q7 = vqsubq_s16(q10, q3);
-
- q2tmp0 = vtrnq_s32(vreinterpretq_s32_s16(q4), vreinterpretq_s32_s16(q6));
- q2tmp1 = vtrnq_s32(vreinterpretq_s32_s16(q5), vreinterpretq_s32_s16(q7));
- q2tmp2 = vtrnq_s16(vreinterpretq_s16_s32(q2tmp0.val[0]),
- vreinterpretq_s16_s32(q2tmp1.val[0]));
- q2tmp3 = vtrnq_s16(vreinterpretq_s16_s32(q2tmp0.val[1]),
- vreinterpretq_s16_s32(q2tmp1.val[1]));
-
- // loop 2
- q8 = vqdmulhq_n_s16(q2tmp2.val[1], sinpi8sqrt2);
- q9 = vqdmulhq_n_s16(q2tmp3.val[1], sinpi8sqrt2);
- q10 = vqdmulhq_n_s16(q2tmp2.val[1], cospi8sqrt2minus1);
- q11 = vqdmulhq_n_s16(q2tmp3.val[1], cospi8sqrt2minus1);
-
- q2 = vqaddq_s16(q2tmp2.val[0], q2tmp3.val[0]);
- q3 = vqsubq_s16(q2tmp2.val[0], q2tmp3.val[0]);
-
- q10 = vshrq_n_s16(q10, 1);
- q11 = vshrq_n_s16(q11, 1);
-
- q10 = vqaddq_s16(q2tmp2.val[1], q10);
- q11 = vqaddq_s16(q2tmp3.val[1], q11);
-
- q8 = vqsubq_s16(q8, q11);
- q9 = vqaddq_s16(q9, q10);
-
- q4 = vqaddq_s16(q2, q9);
- q5 = vqaddq_s16(q3, q8);
- q6 = vqsubq_s16(q3, q8);
- q7 = vqsubq_s16(q2, q9);
-
- q4 = vrshrq_n_s16(q4, 3);
- q5 = vrshrq_n_s16(q5, 3);
- q6 = vrshrq_n_s16(q6, 3);
- q7 = vrshrq_n_s16(q7, 3);
-
- q2tmp0 = vtrnq_s32(vreinterpretq_s32_s16(q4), vreinterpretq_s32_s16(q6));
- q2tmp1 = vtrnq_s32(vreinterpretq_s32_s16(q5), vreinterpretq_s32_s16(q7));
- q2tmp2 = vtrnq_s16(vreinterpretq_s16_s32(q2tmp0.val[0]),
- vreinterpretq_s16_s32(q2tmp1.val[0]));
- q2tmp3 = vtrnq_s16(vreinterpretq_s16_s32(q2tmp0.val[1]),
- vreinterpretq_s16_s32(q2tmp1.val[1]));
-
- q4 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q2tmp2.val[0]),
- vreinterpret_u8_s32(d28)));
- q5 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q2tmp2.val[1]),
- vreinterpret_u8_s32(d29)));
- q6 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q2tmp3.val[0]),
- vreinterpret_u8_s32(d30)));
- q7 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q2tmp3.val[1]),
- vreinterpret_u8_s32(d31)));
-
- d28 = vreinterpret_s32_u8(vqmovun_s16(q4));
- d29 = vreinterpret_s32_u8(vqmovun_s16(q5));
- d30 = vreinterpret_s32_u8(vqmovun_s16(q6));
- d31 = vreinterpret_s32_u8(vqmovun_s16(q7));
-
- dst0 = dst;
- dst1 = dst + 4;
- vst1_lane_s32((int32_t *)dst0, d28, 0);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst1, d28, 1);
- dst1 += stride;
- vst1_lane_s32((int32_t *)dst0, d29, 0);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst1, d29, 1);
- dst1 += stride;
-
- vst1_lane_s32((int32_t *)dst0, d30, 0);
- dst0 += stride;
- vst1_lane_s32((int32_t *)dst1, d30, 1);
- dst1 += stride;
- vst1_lane_s32((int32_t *)dst0, d31, 0);
- vst1_lane_s32((int32_t *)dst1, d31, 1);
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/iwalsh_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/iwalsh_neon.c
deleted file mode 100644
index 6ea9dd712a..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/iwalsh_neon.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-void vp8_short_inv_walsh4x4_neon(
- int16_t *input,
- int16_t *mb_dqcoeff) {
- int16x8_t q0s16, q1s16, q2s16, q3s16;
- int16x4_t d4s16, d5s16, d6s16, d7s16;
- int16x4x2_t v2tmp0, v2tmp1;
- int32x2x2_t v2tmp2, v2tmp3;
- int16x8_t qAdd3;
-
- q0s16 = vld1q_s16(input);
- q1s16 = vld1q_s16(input + 8);
-
- // 1st for loop
- d4s16 = vadd_s16(vget_low_s16(q0s16), vget_high_s16(q1s16));
- d6s16 = vadd_s16(vget_high_s16(q0s16), vget_low_s16(q1s16));
- d5s16 = vsub_s16(vget_low_s16(q0s16), vget_high_s16(q1s16));
- d7s16 = vsub_s16(vget_high_s16(q0s16), vget_low_s16(q1s16));
-
- q2s16 = vcombine_s16(d4s16, d5s16);
- q3s16 = vcombine_s16(d6s16, d7s16);
-
- q0s16 = vaddq_s16(q2s16, q3s16);
- q1s16 = vsubq_s16(q2s16, q3s16);
-
- v2tmp2 = vtrn_s32(vreinterpret_s32_s16(vget_low_s16(q0s16)),
- vreinterpret_s32_s16(vget_low_s16(q1s16)));
- v2tmp3 = vtrn_s32(vreinterpret_s32_s16(vget_high_s16(q0s16)),
- vreinterpret_s32_s16(vget_high_s16(q1s16)));
- v2tmp0 = vtrn_s16(vreinterpret_s16_s32(v2tmp2.val[0]),
- vreinterpret_s16_s32(v2tmp3.val[0]));
- v2tmp1 = vtrn_s16(vreinterpret_s16_s32(v2tmp2.val[1]),
- vreinterpret_s16_s32(v2tmp3.val[1]));
-
- // 2nd for loop
- d4s16 = vadd_s16(v2tmp0.val[0], v2tmp1.val[1]);
- d6s16 = vadd_s16(v2tmp0.val[1], v2tmp1.val[0]);
- d5s16 = vsub_s16(v2tmp0.val[0], v2tmp1.val[1]);
- d7s16 = vsub_s16(v2tmp0.val[1], v2tmp1.val[0]);
- q2s16 = vcombine_s16(d4s16, d5s16);
- q3s16 = vcombine_s16(d6s16, d7s16);
-
- qAdd3 = vdupq_n_s16(3);
-
- q0s16 = vaddq_s16(q2s16, q3s16);
- q1s16 = vsubq_s16(q2s16, q3s16);
-
- q0s16 = vaddq_s16(q0s16, qAdd3);
- q1s16 = vaddq_s16(q1s16, qAdd3);
-
- q0s16 = vshrq_n_s16(q0s16, 3);
- q1s16 = vshrq_n_s16(q1s16, 3);
-
- // store
- vst1_lane_s16(mb_dqcoeff, vget_low_s16(q0s16), 0);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_high_s16(q0s16), 0);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_low_s16(q1s16), 0);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_high_s16(q1s16), 0);
- mb_dqcoeff += 16;
-
- vst1_lane_s16(mb_dqcoeff, vget_low_s16(q0s16), 1);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_high_s16(q0s16), 1);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_low_s16(q1s16), 1);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_high_s16(q1s16), 1);
- mb_dqcoeff += 16;
-
- vst1_lane_s16(mb_dqcoeff, vget_low_s16(q0s16), 2);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_high_s16(q0s16), 2);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_low_s16(q1s16), 2);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_high_s16(q1s16), 2);
- mb_dqcoeff += 16;
-
- vst1_lane_s16(mb_dqcoeff, vget_low_s16(q0s16), 3);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_high_s16(q0s16), 3);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_low_s16(q1s16), 3);
- mb_dqcoeff += 16;
- vst1_lane_s16(mb_dqcoeff, vget_high_s16(q1s16), 3);
- mb_dqcoeff += 16;
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c
deleted file mode 100644
index b25686ffb8..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include "./vpx_config.h"
-
-static INLINE void vp8_loop_filter_simple_horizontal_edge_neon(
- unsigned char *s,
- int p,
- const unsigned char *blimit) {
- uint8_t *sp;
- uint8x16_t qblimit, q0u8;
- uint8x16_t q5u8, q6u8, q7u8, q8u8, q9u8, q10u8, q14u8, q15u8;
- int16x8_t q2s16, q3s16, q13s16;
- int8x8_t d8s8, d9s8;
- int8x16_t q2s8, q3s8, q4s8, q10s8, q11s8, q14s8;
-
- qblimit = vdupq_n_u8(*blimit);
-
- sp = s - (p << 1);
- q5u8 = vld1q_u8(sp);
- sp += p;
- q6u8 = vld1q_u8(sp);
- sp += p;
- q7u8 = vld1q_u8(sp);
- sp += p;
- q8u8 = vld1q_u8(sp);
-
- q15u8 = vabdq_u8(q6u8, q7u8);
- q14u8 = vabdq_u8(q5u8, q8u8);
-
- q15u8 = vqaddq_u8(q15u8, q15u8);
- q14u8 = vshrq_n_u8(q14u8, 1);
- q0u8 = vdupq_n_u8(0x80);
- q13s16 = vdupq_n_s16(3);
- q15u8 = vqaddq_u8(q15u8, q14u8);
-
- q5u8 = veorq_u8(q5u8, q0u8);
- q6u8 = veorq_u8(q6u8, q0u8);
- q7u8 = veorq_u8(q7u8, q0u8);
- q8u8 = veorq_u8(q8u8, q0u8);
-
- q15u8 = vcgeq_u8(qblimit, q15u8);
-
- q2s16 = vsubl_s8(vget_low_s8(vreinterpretq_s8_u8(q7u8)),
- vget_low_s8(vreinterpretq_s8_u8(q6u8)));
- q3s16 = vsubl_s8(vget_high_s8(vreinterpretq_s8_u8(q7u8)),
- vget_high_s8(vreinterpretq_s8_u8(q6u8)));
-
- q4s8 = vqsubq_s8(vreinterpretq_s8_u8(q5u8),
- vreinterpretq_s8_u8(q8u8));
-
- q2s16 = vmulq_s16(q2s16, q13s16);
- q3s16 = vmulq_s16(q3s16, q13s16);
-
- q10u8 = vdupq_n_u8(3);
- q9u8 = vdupq_n_u8(4);
-
- q2s16 = vaddw_s8(q2s16, vget_low_s8(q4s8));
- q3s16 = vaddw_s8(q3s16, vget_high_s8(q4s8));
-
- d8s8 = vqmovn_s16(q2s16);
- d9s8 = vqmovn_s16(q3s16);
- q4s8 = vcombine_s8(d8s8, d9s8);
-
- q14s8 = vandq_s8(q4s8, vreinterpretq_s8_u8(q15u8));
-
- q2s8 = vqaddq_s8(q14s8, vreinterpretq_s8_u8(q10u8));
- q3s8 = vqaddq_s8(q14s8, vreinterpretq_s8_u8(q9u8));
- q2s8 = vshrq_n_s8(q2s8, 3);
- q3s8 = vshrq_n_s8(q3s8, 3);
-
- q11s8 = vqaddq_s8(vreinterpretq_s8_u8(q6u8), q2s8);
- q10s8 = vqsubq_s8(vreinterpretq_s8_u8(q7u8), q3s8);
-
- q6u8 = veorq_u8(vreinterpretq_u8_s8(q11s8), q0u8);
- q7u8 = veorq_u8(vreinterpretq_u8_s8(q10s8), q0u8);
-
- vst1q_u8(s, q7u8);
- s -= p;
- vst1q_u8(s, q6u8);
- return;
-}
-
-void vp8_loop_filter_bhs_neon(
- unsigned char *y_ptr,
- int y_stride,
- const unsigned char *blimit) {
- y_ptr += y_stride * 4;
- vp8_loop_filter_simple_horizontal_edge_neon(y_ptr, y_stride, blimit);
- y_ptr += y_stride * 4;
- vp8_loop_filter_simple_horizontal_edge_neon(y_ptr, y_stride, blimit);
- y_ptr += y_stride * 4;
- vp8_loop_filter_simple_horizontal_edge_neon(y_ptr, y_stride, blimit);
- return;
-}
-
-void vp8_loop_filter_mbhs_neon(
- unsigned char *y_ptr,
- int y_stride,
- const unsigned char *blimit) {
- vp8_loop_filter_simple_horizontal_edge_neon(y_ptr, y_stride, blimit);
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c
deleted file mode 100644
index 921bcad698..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include "./vpx_config.h"
-#include "vpx_ports/arm.h"
-
-#ifdef VPX_INCOMPATIBLE_GCC
-static INLINE void write_2x4(unsigned char *dst, int pitch,
- const uint8x8x2_t result) {
- /*
- * uint8x8x2_t result
- 00 01 02 03 | 04 05 06 07
- 10 11 12 13 | 14 15 16 17
- ---
- * after vtrn_u8
- 00 10 02 12 | 04 14 06 16
- 01 11 03 13 | 05 15 07 17
- */
- const uint8x8x2_t r01_u8 = vtrn_u8(result.val[0],
- result.val[1]);
- const uint16x4_t x_0_4 = vreinterpret_u16_u8(r01_u8.val[0]);
- const uint16x4_t x_1_5 = vreinterpret_u16_u8(r01_u8.val[1]);
- vst1_lane_u16((uint16_t *)dst, x_0_4, 0);
- dst += pitch;
- vst1_lane_u16((uint16_t *)dst, x_1_5, 0);
- dst += pitch;
- vst1_lane_u16((uint16_t *)dst, x_0_4, 1);
- dst += pitch;
- vst1_lane_u16((uint16_t *)dst, x_1_5, 1);
- dst += pitch;
- vst1_lane_u16((uint16_t *)dst, x_0_4, 2);
- dst += pitch;
- vst1_lane_u16((uint16_t *)dst, x_1_5, 2);
- dst += pitch;
- vst1_lane_u16((uint16_t *)dst, x_0_4, 3);
- dst += pitch;
- vst1_lane_u16((uint16_t *)dst, x_1_5, 3);
-}
-
-static INLINE void write_2x8(unsigned char *dst, int pitch,
- const uint8x8x2_t result,
- const uint8x8x2_t result2) {
- write_2x4(dst, pitch, result);
- dst += pitch * 8;
- write_2x4(dst, pitch, result2);
-}
-#else
-static INLINE void write_2x8(unsigned char *dst, int pitch,
- const uint8x8x2_t result,
- const uint8x8x2_t result2) {
- vst2_lane_u8(dst, result, 0);
- dst += pitch;
- vst2_lane_u8(dst, result, 1);
- dst += pitch;
- vst2_lane_u8(dst, result, 2);
- dst += pitch;
- vst2_lane_u8(dst, result, 3);
- dst += pitch;
- vst2_lane_u8(dst, result, 4);
- dst += pitch;
- vst2_lane_u8(dst, result, 5);
- dst += pitch;
- vst2_lane_u8(dst, result, 6);
- dst += pitch;
- vst2_lane_u8(dst, result, 7);
- dst += pitch;
-
- vst2_lane_u8(dst, result2, 0);
- dst += pitch;
- vst2_lane_u8(dst, result2, 1);
- dst += pitch;
- vst2_lane_u8(dst, result2, 2);
- dst += pitch;
- vst2_lane_u8(dst, result2, 3);
- dst += pitch;
- vst2_lane_u8(dst, result2, 4);
- dst += pitch;
- vst2_lane_u8(dst, result2, 5);
- dst += pitch;
- vst2_lane_u8(dst, result2, 6);
- dst += pitch;
- vst2_lane_u8(dst, result2, 7);
-}
-#endif // VPX_INCOMPATIBLE_GCC
-
-
-#ifdef VPX_INCOMPATIBLE_GCC
-static INLINE
-uint8x8x4_t read_4x8(unsigned char *src, int pitch) {
- uint8x8x4_t x;
- const uint8x8_t a = vld1_u8(src);
- const uint8x8_t b = vld1_u8(src + pitch * 1);
- const uint8x8_t c = vld1_u8(src + pitch * 2);
- const uint8x8_t d = vld1_u8(src + pitch * 3);
- const uint8x8_t e = vld1_u8(src + pitch * 4);
- const uint8x8_t f = vld1_u8(src + pitch * 5);
- const uint8x8_t g = vld1_u8(src + pitch * 6);
- const uint8x8_t h = vld1_u8(src + pitch * 7);
- const uint32x2x2_t r04_u32 = vtrn_u32(vreinterpret_u32_u8(a),
- vreinterpret_u32_u8(e));
- const uint32x2x2_t r15_u32 = vtrn_u32(vreinterpret_u32_u8(b),
- vreinterpret_u32_u8(f));
- const uint32x2x2_t r26_u32 = vtrn_u32(vreinterpret_u32_u8(c),
- vreinterpret_u32_u8(g));
- const uint32x2x2_t r37_u32 = vtrn_u32(vreinterpret_u32_u8(d),
- vreinterpret_u32_u8(h));
- const uint16x4x2_t r02_u16 = vtrn_u16(vreinterpret_u16_u32(r04_u32.val[0]),
- vreinterpret_u16_u32(r26_u32.val[0]));
- const uint16x4x2_t r13_u16 = vtrn_u16(vreinterpret_u16_u32(r15_u32.val[0]),
- vreinterpret_u16_u32(r37_u32.val[0]));
- const uint8x8x2_t r01_u8 = vtrn_u8(vreinterpret_u8_u16(r02_u16.val[0]),
- vreinterpret_u8_u16(r13_u16.val[0]));
- const uint8x8x2_t r23_u8 = vtrn_u8(vreinterpret_u8_u16(r02_u16.val[1]),
- vreinterpret_u8_u16(r13_u16.val[1]));
- /*
- * after vtrn_u32
- 00 01 02 03 | 40 41 42 43
- 10 11 12 13 | 50 51 52 53
- 20 21 22 23 | 60 61 62 63
- 30 31 32 33 | 70 71 72 73
- ---
- * after vtrn_u16
- 00 01 20 21 | 40 41 60 61
- 02 03 22 23 | 42 43 62 63
- 10 11 30 31 | 50 51 70 71
- 12 13 32 33 | 52 52 72 73
-
- 00 01 20 21 | 40 41 60 61
- 10 11 30 31 | 50 51 70 71
- 02 03 22 23 | 42 43 62 63
- 12 13 32 33 | 52 52 72 73
- ---
- * after vtrn_u8
- 00 10 20 30 | 40 50 60 70
- 01 11 21 31 | 41 51 61 71
- 02 12 22 32 | 42 52 62 72
- 03 13 23 33 | 43 53 63 73
- */
- x.val[0] = r01_u8.val[0];
- x.val[1] = r01_u8.val[1];
- x.val[2] = r23_u8.val[0];
- x.val[3] = r23_u8.val[1];
-
- return x;
-}
-#else
-static INLINE
-uint8x8x4_t read_4x8(unsigned char *src, int pitch) {
- uint8x8x4_t x;
- x.val[0] = x.val[1] = x.val[2] = x.val[3] = vdup_n_u8(0);
- x = vld4_lane_u8(src, x, 0);
- src += pitch;
- x = vld4_lane_u8(src, x, 1);
- src += pitch;
- x = vld4_lane_u8(src, x, 2);
- src += pitch;
- x = vld4_lane_u8(src, x, 3);
- src += pitch;
- x = vld4_lane_u8(src, x, 4);
- src += pitch;
- x = vld4_lane_u8(src, x, 5);
- src += pitch;
- x = vld4_lane_u8(src, x, 6);
- src += pitch;
- x = vld4_lane_u8(src, x, 7);
- return x;
-}
-#endif // VPX_INCOMPATIBLE_GCC
-
-static INLINE void vp8_loop_filter_simple_vertical_edge_neon(
- unsigned char *s,
- int p,
- const unsigned char *blimit) {
- unsigned char *src1;
- uint8x16_t qblimit, q0u8;
- uint8x16_t q3u8, q4u8, q5u8, q6u8, q7u8, q11u8, q12u8, q14u8, q15u8;
- int16x8_t q2s16, q13s16, q11s16;
- int8x8_t d28s8, d29s8;
- int8x16_t q2s8, q3s8, q10s8, q11s8, q14s8;
- uint8x8x4_t d0u8x4; // d6, d7, d8, d9
- uint8x8x4_t d1u8x4; // d10, d11, d12, d13
- uint8x8x2_t d2u8x2; // d12, d13
- uint8x8x2_t d3u8x2; // d14, d15
-
- qblimit = vdupq_n_u8(*blimit);
-
- src1 = s - 2;
- d0u8x4 = read_4x8(src1, p);
- src1 += p * 8;
- d1u8x4 = read_4x8(src1, p);
-
- q3u8 = vcombine_u8(d0u8x4.val[0], d1u8x4.val[0]); // d6 d10
- q4u8 = vcombine_u8(d0u8x4.val[2], d1u8x4.val[2]); // d8 d12
- q5u8 = vcombine_u8(d0u8x4.val[1], d1u8x4.val[1]); // d7 d11
- q6u8 = vcombine_u8(d0u8x4.val[3], d1u8x4.val[3]); // d9 d13
-
- q15u8 = vabdq_u8(q5u8, q4u8);
- q14u8 = vabdq_u8(q3u8, q6u8);
-
- q15u8 = vqaddq_u8(q15u8, q15u8);
- q14u8 = vshrq_n_u8(q14u8, 1);
- q0u8 = vdupq_n_u8(0x80);
- q11s16 = vdupq_n_s16(3);
- q15u8 = vqaddq_u8(q15u8, q14u8);
-
- q3u8 = veorq_u8(q3u8, q0u8);
- q4u8 = veorq_u8(q4u8, q0u8);
- q5u8 = veorq_u8(q5u8, q0u8);
- q6u8 = veorq_u8(q6u8, q0u8);
-
- q15u8 = vcgeq_u8(qblimit, q15u8);
-
- q2s16 = vsubl_s8(vget_low_s8(vreinterpretq_s8_u8(q4u8)),
- vget_low_s8(vreinterpretq_s8_u8(q5u8)));
- q13s16 = vsubl_s8(vget_high_s8(vreinterpretq_s8_u8(q4u8)),
- vget_high_s8(vreinterpretq_s8_u8(q5u8)));
-
- q14s8 = vqsubq_s8(vreinterpretq_s8_u8(q3u8),
- vreinterpretq_s8_u8(q6u8));
-
- q2s16 = vmulq_s16(q2s16, q11s16);
- q13s16 = vmulq_s16(q13s16, q11s16);
-
- q11u8 = vdupq_n_u8(3);
- q12u8 = vdupq_n_u8(4);
-
- q2s16 = vaddw_s8(q2s16, vget_low_s8(q14s8));
- q13s16 = vaddw_s8(q13s16, vget_high_s8(q14s8));
-
- d28s8 = vqmovn_s16(q2s16);
- d29s8 = vqmovn_s16(q13s16);
- q14s8 = vcombine_s8(d28s8, d29s8);
-
- q14s8 = vandq_s8(q14s8, vreinterpretq_s8_u8(q15u8));
-
- q2s8 = vqaddq_s8(q14s8, vreinterpretq_s8_u8(q11u8));
- q3s8 = vqaddq_s8(q14s8, vreinterpretq_s8_u8(q12u8));
- q2s8 = vshrq_n_s8(q2s8, 3);
- q14s8 = vshrq_n_s8(q3s8, 3);
-
- q11s8 = vqaddq_s8(vreinterpretq_s8_u8(q5u8), q2s8);
- q10s8 = vqsubq_s8(vreinterpretq_s8_u8(q4u8), q14s8);
-
- q6u8 = veorq_u8(vreinterpretq_u8_s8(q11s8), q0u8);
- q7u8 = veorq_u8(vreinterpretq_u8_s8(q10s8), q0u8);
-
- d2u8x2.val[0] = vget_low_u8(q6u8); // d12
- d2u8x2.val[1] = vget_low_u8(q7u8); // d14
- d3u8x2.val[0] = vget_high_u8(q6u8); // d13
- d3u8x2.val[1] = vget_high_u8(q7u8); // d15
-
- src1 = s - 1;
- write_2x8(src1, p, d2u8x2, d3u8x2);
-}
-
-void vp8_loop_filter_bvs_neon(
- unsigned char *y_ptr,
- int y_stride,
- const unsigned char *blimit) {
- y_ptr += 4;
- vp8_loop_filter_simple_vertical_edge_neon(y_ptr, y_stride, blimit);
- y_ptr += 4;
- vp8_loop_filter_simple_vertical_edge_neon(y_ptr, y_stride, blimit);
- y_ptr += 4;
- vp8_loop_filter_simple_vertical_edge_neon(y_ptr, y_stride, blimit);
- return;
-}
-
-void vp8_loop_filter_mbvs_neon(
- unsigned char *y_ptr,
- int y_stride,
- const unsigned char *blimit) {
- vp8_loop_filter_simple_vertical_edge_neon(y_ptr, y_stride, blimit);
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/mbloopfilter_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/mbloopfilter_neon.c
deleted file mode 100644
index 5351f4be66..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/mbloopfilter_neon.c
+++ /dev/null
@@ -1,625 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include "./vpx_config.h"
-
-static INLINE void vp8_mbloop_filter_neon(
- uint8x16_t qblimit, // mblimit
- uint8x16_t qlimit, // limit
- uint8x16_t qthresh, // thresh
- uint8x16_t q3, // p2
- uint8x16_t q4, // p2
- uint8x16_t q5, // p1
- uint8x16_t q6, // p0
- uint8x16_t q7, // q0
- uint8x16_t q8, // q1
- uint8x16_t q9, // q2
- uint8x16_t q10, // q3
- uint8x16_t *q4r, // p1
- uint8x16_t *q5r, // p1
- uint8x16_t *q6r, // p0
- uint8x16_t *q7r, // q0
- uint8x16_t *q8r, // q1
- uint8x16_t *q9r) { // q1
- uint8x16_t q0u8, q1u8, q11u8, q12u8, q13u8, q14u8, q15u8;
- int16x8_t q0s16, q2s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- int8x16_t q1s8, q6s8, q7s8, q2s8, q11s8, q13s8;
- uint16x8_t q0u16, q11u16, q12u16, q13u16, q14u16, q15u16;
- int8x16_t q0s8, q12s8, q14s8, q15s8;
- int8x8_t d0, d1, d2, d3, d4, d5, d24, d25, d28, d29;
-
- q11u8 = vabdq_u8(q3, q4);
- q12u8 = vabdq_u8(q4, q5);
- q13u8 = vabdq_u8(q5, q6);
- q14u8 = vabdq_u8(q8, q7);
- q1u8 = vabdq_u8(q9, q8);
- q0u8 = vabdq_u8(q10, q9);
-
- q11u8 = vmaxq_u8(q11u8, q12u8);
- q12u8 = vmaxq_u8(q13u8, q14u8);
- q1u8 = vmaxq_u8(q1u8, q0u8);
- q15u8 = vmaxq_u8(q11u8, q12u8);
-
- q12u8 = vabdq_u8(q6, q7);
-
- // vp8_hevmask
- q13u8 = vcgtq_u8(q13u8, qthresh);
- q14u8 = vcgtq_u8(q14u8, qthresh);
- q15u8 = vmaxq_u8(q15u8, q1u8);
-
- q15u8 = vcgeq_u8(qlimit, q15u8);
-
- q1u8 = vabdq_u8(q5, q8);
- q12u8 = vqaddq_u8(q12u8, q12u8);
-
- // vp8_filter() function
- // convert to signed
- q0u8 = vdupq_n_u8(0x80);
- q9 = veorq_u8(q9, q0u8);
- q8 = veorq_u8(q8, q0u8);
- q7 = veorq_u8(q7, q0u8);
- q6 = veorq_u8(q6, q0u8);
- q5 = veorq_u8(q5, q0u8);
- q4 = veorq_u8(q4, q0u8);
-
- q1u8 = vshrq_n_u8(q1u8, 1);
- q12u8 = vqaddq_u8(q12u8, q1u8);
-
- q14u8 = vorrq_u8(q13u8, q14u8);
- q12u8 = vcgeq_u8(qblimit, q12u8);
-
- q2s16 = vsubl_s8(vget_low_s8(vreinterpretq_s8_u8(q7)),
- vget_low_s8(vreinterpretq_s8_u8(q6)));
- q13s16 = vsubl_s8(vget_high_s8(vreinterpretq_s8_u8(q7)),
- vget_high_s8(vreinterpretq_s8_u8(q6)));
-
- q1s8 = vqsubq_s8(vreinterpretq_s8_u8(q5),
- vreinterpretq_s8_u8(q8));
-
- q11s16 = vdupq_n_s16(3);
- q2s16 = vmulq_s16(q2s16, q11s16);
- q13s16 = vmulq_s16(q13s16, q11s16);
-
- q15u8 = vandq_u8(q15u8, q12u8);
-
- q2s16 = vaddw_s8(q2s16, vget_low_s8(q1s8));
- q13s16 = vaddw_s8(q13s16, vget_high_s8(q1s8));
-
- q12u8 = vdupq_n_u8(3);
- q11u8 = vdupq_n_u8(4);
- // vp8_filter = clamp(vp8_filter + 3 * ( qs0 - ps0))
- d2 = vqmovn_s16(q2s16);
- d3 = vqmovn_s16(q13s16);
- q1s8 = vcombine_s8(d2, d3);
- q1s8 = vandq_s8(q1s8, vreinterpretq_s8_u8(q15u8));
- q13s8 = vandq_s8(q1s8, vreinterpretq_s8_u8(q14u8));
-
- q2s8 = vqaddq_s8(q13s8, vreinterpretq_s8_u8(q11u8));
- q13s8 = vqaddq_s8(q13s8, vreinterpretq_s8_u8(q12u8));
- q2s8 = vshrq_n_s8(q2s8, 3);
- q13s8 = vshrq_n_s8(q13s8, 3);
-
- q7s8 = vqsubq_s8(vreinterpretq_s8_u8(q7), q2s8);
- q6s8 = vqaddq_s8(vreinterpretq_s8_u8(q6), q13s8);
-
- q1s8 = vbicq_s8(q1s8, vreinterpretq_s8_u8(q14u8));
-
- q0u16 = q11u16 = q12u16 = q13u16 = q14u16 = q15u16 = vdupq_n_u16(63);
- d5 = vdup_n_s8(9);
- d4 = vdup_n_s8(18);
-
- q0s16 = vmlal_s8(vreinterpretq_s16_u16(q0u16), vget_low_s8(q1s8), d5);
- q11s16 = vmlal_s8(vreinterpretq_s16_u16(q11u16), vget_high_s8(q1s8), d5);
- d5 = vdup_n_s8(27);
- q12s16 = vmlal_s8(vreinterpretq_s16_u16(q12u16), vget_low_s8(q1s8), d4);
- q13s16 = vmlal_s8(vreinterpretq_s16_u16(q13u16), vget_high_s8(q1s8), d4);
- q14s16 = vmlal_s8(vreinterpretq_s16_u16(q14u16), vget_low_s8(q1s8), d5);
- q15s16 = vmlal_s8(vreinterpretq_s16_u16(q15u16), vget_high_s8(q1s8), d5);
-
- d0 = vqshrn_n_s16(q0s16 , 7);
- d1 = vqshrn_n_s16(q11s16, 7);
- d24 = vqshrn_n_s16(q12s16, 7);
- d25 = vqshrn_n_s16(q13s16, 7);
- d28 = vqshrn_n_s16(q14s16, 7);
- d29 = vqshrn_n_s16(q15s16, 7);
-
- q0s8 = vcombine_s8(d0, d1);
- q12s8 = vcombine_s8(d24, d25);
- q14s8 = vcombine_s8(d28, d29);
-
- q11s8 = vqsubq_s8(vreinterpretq_s8_u8(q9), q0s8);
- q0s8 = vqaddq_s8(vreinterpretq_s8_u8(q4), q0s8);
- q13s8 = vqsubq_s8(vreinterpretq_s8_u8(q8), q12s8);
- q12s8 = vqaddq_s8(vreinterpretq_s8_u8(q5), q12s8);
- q15s8 = vqsubq_s8((q7s8), q14s8);
- q14s8 = vqaddq_s8((q6s8), q14s8);
-
- q1u8 = vdupq_n_u8(0x80);
- *q9r = veorq_u8(vreinterpretq_u8_s8(q11s8), q1u8);
- *q8r = veorq_u8(vreinterpretq_u8_s8(q13s8), q1u8);
- *q7r = veorq_u8(vreinterpretq_u8_s8(q15s8), q1u8);
- *q6r = veorq_u8(vreinterpretq_u8_s8(q14s8), q1u8);
- *q5r = veorq_u8(vreinterpretq_u8_s8(q12s8), q1u8);
- *q4r = veorq_u8(vreinterpretq_u8_s8(q0s8), q1u8);
- return;
-}
-
-void vp8_mbloop_filter_horizontal_edge_y_neon(
- unsigned char *src,
- int pitch,
- unsigned char blimit,
- unsigned char limit,
- unsigned char thresh) {
- uint8x16_t qblimit, qlimit, qthresh, q3, q4;
- uint8x16_t q5, q6, q7, q8, q9, q10;
-
- qblimit = vdupq_n_u8(blimit);
- qlimit = vdupq_n_u8(limit);
- qthresh = vdupq_n_u8(thresh);
-
- src -= (pitch << 2);
-
- q3 = vld1q_u8(src);
- src += pitch;
- q4 = vld1q_u8(src);
- src += pitch;
- q5 = vld1q_u8(src);
- src += pitch;
- q6 = vld1q_u8(src);
- src += pitch;
- q7 = vld1q_u8(src);
- src += pitch;
- q8 = vld1q_u8(src);
- src += pitch;
- q9 = vld1q_u8(src);
- src += pitch;
- q10 = vld1q_u8(src);
-
- vp8_mbloop_filter_neon(qblimit, qlimit, qthresh, q3, q4,
- q5, q6, q7, q8, q9, q10,
- &q4, &q5, &q6, &q7, &q8, &q9);
-
- src -= (pitch * 6);
- vst1q_u8(src, q4);
- src += pitch;
- vst1q_u8(src, q5);
- src += pitch;
- vst1q_u8(src, q6);
- src += pitch;
- vst1q_u8(src, q7);
- src += pitch;
- vst1q_u8(src, q8);
- src += pitch;
- vst1q_u8(src, q9);
- return;
-}
-
-void vp8_mbloop_filter_horizontal_edge_uv_neon(
- unsigned char *u,
- int pitch,
- unsigned char blimit,
- unsigned char limit,
- unsigned char thresh,
- unsigned char *v) {
- uint8x16_t qblimit, qlimit, qthresh, q3, q4;
- uint8x16_t q5, q6, q7, q8, q9, q10;
- uint8x8_t d6, d7, d8, d9, d10, d11, d12, d13, d14;
- uint8x8_t d15, d16, d17, d18, d19, d20, d21;
-
- qblimit = vdupq_n_u8(blimit);
- qlimit = vdupq_n_u8(limit);
- qthresh = vdupq_n_u8(thresh);
-
- u -= (pitch << 2);
- v -= (pitch << 2);
-
- d6 = vld1_u8(u);
- u += pitch;
- d7 = vld1_u8(v);
- v += pitch;
- d8 = vld1_u8(u);
- u += pitch;
- d9 = vld1_u8(v);
- v += pitch;
- d10 = vld1_u8(u);
- u += pitch;
- d11 = vld1_u8(v);
- v += pitch;
- d12 = vld1_u8(u);
- u += pitch;
- d13 = vld1_u8(v);
- v += pitch;
- d14 = vld1_u8(u);
- u += pitch;
- d15 = vld1_u8(v);
- v += pitch;
- d16 = vld1_u8(u);
- u += pitch;
- d17 = vld1_u8(v);
- v += pitch;
- d18 = vld1_u8(u);
- u += pitch;
- d19 = vld1_u8(v);
- v += pitch;
- d20 = vld1_u8(u);
- d21 = vld1_u8(v);
-
- q3 = vcombine_u8(d6, d7);
- q4 = vcombine_u8(d8, d9);
- q5 = vcombine_u8(d10, d11);
- q6 = vcombine_u8(d12, d13);
- q7 = vcombine_u8(d14, d15);
- q8 = vcombine_u8(d16, d17);
- q9 = vcombine_u8(d18, d19);
- q10 = vcombine_u8(d20, d21);
-
- vp8_mbloop_filter_neon(qblimit, qlimit, qthresh, q3, q4,
- q5, q6, q7, q8, q9, q10,
- &q4, &q5, &q6, &q7, &q8, &q9);
-
- u -= (pitch * 6);
- v -= (pitch * 6);
- vst1_u8(u, vget_low_u8(q4));
- u += pitch;
- vst1_u8(v, vget_high_u8(q4));
- v += pitch;
- vst1_u8(u, vget_low_u8(q5));
- u += pitch;
- vst1_u8(v, vget_high_u8(q5));
- v += pitch;
- vst1_u8(u, vget_low_u8(q6));
- u += pitch;
- vst1_u8(v, vget_high_u8(q6));
- v += pitch;
- vst1_u8(u, vget_low_u8(q7));
- u += pitch;
- vst1_u8(v, vget_high_u8(q7));
- v += pitch;
- vst1_u8(u, vget_low_u8(q8));
- u += pitch;
- vst1_u8(v, vget_high_u8(q8));
- v += pitch;
- vst1_u8(u, vget_low_u8(q9));
- vst1_u8(v, vget_high_u8(q9));
- return;
-}
-
-void vp8_mbloop_filter_vertical_edge_y_neon(
- unsigned char *src,
- int pitch,
- unsigned char blimit,
- unsigned char limit,
- unsigned char thresh) {
- unsigned char *s1, *s2;
- uint8x16_t qblimit, qlimit, qthresh, q3, q4;
- uint8x16_t q5, q6, q7, q8, q9, q10;
- uint8x8_t d6, d7, d8, d9, d10, d11, d12, d13, d14;
- uint8x8_t d15, d16, d17, d18, d19, d20, d21;
- uint32x4x2_t q2tmp0, q2tmp1, q2tmp2, q2tmp3;
- uint16x8x2_t q2tmp4, q2tmp5, q2tmp6, q2tmp7;
- uint8x16x2_t q2tmp8, q2tmp9, q2tmp10, q2tmp11;
-
- qblimit = vdupq_n_u8(blimit);
- qlimit = vdupq_n_u8(limit);
- qthresh = vdupq_n_u8(thresh);
-
- s1 = src - 4;
- s2 = s1 + 8 * pitch;
- d6 = vld1_u8(s1);
- s1 += pitch;
- d7 = vld1_u8(s2);
- s2 += pitch;
- d8 = vld1_u8(s1);
- s1 += pitch;
- d9 = vld1_u8(s2);
- s2 += pitch;
- d10 = vld1_u8(s1);
- s1 += pitch;
- d11 = vld1_u8(s2);
- s2 += pitch;
- d12 = vld1_u8(s1);
- s1 += pitch;
- d13 = vld1_u8(s2);
- s2 += pitch;
- d14 = vld1_u8(s1);
- s1 += pitch;
- d15 = vld1_u8(s2);
- s2 += pitch;
- d16 = vld1_u8(s1);
- s1 += pitch;
- d17 = vld1_u8(s2);
- s2 += pitch;
- d18 = vld1_u8(s1);
- s1 += pitch;
- d19 = vld1_u8(s2);
- s2 += pitch;
- d20 = vld1_u8(s1);
- d21 = vld1_u8(s2);
-
- q3 = vcombine_u8(d6, d7);
- q4 = vcombine_u8(d8, d9);
- q5 = vcombine_u8(d10, d11);
- q6 = vcombine_u8(d12, d13);
- q7 = vcombine_u8(d14, d15);
- q8 = vcombine_u8(d16, d17);
- q9 = vcombine_u8(d18, d19);
- q10 = vcombine_u8(d20, d21);
-
- q2tmp0 = vtrnq_u32(vreinterpretq_u32_u8(q3), vreinterpretq_u32_u8(q7));
- q2tmp1 = vtrnq_u32(vreinterpretq_u32_u8(q4), vreinterpretq_u32_u8(q8));
- q2tmp2 = vtrnq_u32(vreinterpretq_u32_u8(q5), vreinterpretq_u32_u8(q9));
- q2tmp3 = vtrnq_u32(vreinterpretq_u32_u8(q6), vreinterpretq_u32_u8(q10));
-
- q2tmp4 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[0]),
- vreinterpretq_u16_u32(q2tmp2.val[0]));
- q2tmp5 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[0]),
- vreinterpretq_u16_u32(q2tmp3.val[0]));
- q2tmp6 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[1]),
- vreinterpretq_u16_u32(q2tmp2.val[1]));
- q2tmp7 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[1]),
- vreinterpretq_u16_u32(q2tmp3.val[1]));
-
- q2tmp8 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[0]),
- vreinterpretq_u8_u16(q2tmp5.val[0]));
- q2tmp9 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[1]),
- vreinterpretq_u8_u16(q2tmp5.val[1]));
- q2tmp10 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[0]),
- vreinterpretq_u8_u16(q2tmp7.val[0]));
- q2tmp11 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[1]),
- vreinterpretq_u8_u16(q2tmp7.val[1]));
-
- q3 = q2tmp8.val[0];
- q4 = q2tmp8.val[1];
- q5 = q2tmp9.val[0];
- q6 = q2tmp9.val[1];
- q7 = q2tmp10.val[0];
- q8 = q2tmp10.val[1];
- q9 = q2tmp11.val[0];
- q10 = q2tmp11.val[1];
-
- vp8_mbloop_filter_neon(qblimit, qlimit, qthresh, q3, q4,
- q5, q6, q7, q8, q9, q10,
- &q4, &q5, &q6, &q7, &q8, &q9);
-
- q2tmp0 = vtrnq_u32(vreinterpretq_u32_u8(q3), vreinterpretq_u32_u8(q7));
- q2tmp1 = vtrnq_u32(vreinterpretq_u32_u8(q4), vreinterpretq_u32_u8(q8));
- q2tmp2 = vtrnq_u32(vreinterpretq_u32_u8(q5), vreinterpretq_u32_u8(q9));
- q2tmp3 = vtrnq_u32(vreinterpretq_u32_u8(q6), vreinterpretq_u32_u8(q10));
-
- q2tmp4 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[0]),
- vreinterpretq_u16_u32(q2tmp2.val[0]));
- q2tmp5 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[0]),
- vreinterpretq_u16_u32(q2tmp3.val[0]));
- q2tmp6 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[1]),
- vreinterpretq_u16_u32(q2tmp2.val[1]));
- q2tmp7 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[1]),
- vreinterpretq_u16_u32(q2tmp3.val[1]));
-
- q2tmp8 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[0]),
- vreinterpretq_u8_u16(q2tmp5.val[0]));
- q2tmp9 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[1]),
- vreinterpretq_u8_u16(q2tmp5.val[1]));
- q2tmp10 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[0]),
- vreinterpretq_u8_u16(q2tmp7.val[0]));
- q2tmp11 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[1]),
- vreinterpretq_u8_u16(q2tmp7.val[1]));
-
- q3 = q2tmp8.val[0];
- q4 = q2tmp8.val[1];
- q5 = q2tmp9.val[0];
- q6 = q2tmp9.val[1];
- q7 = q2tmp10.val[0];
- q8 = q2tmp10.val[1];
- q9 = q2tmp11.val[0];
- q10 = q2tmp11.val[1];
-
- s1 -= 7 * pitch;
- s2 -= 7 * pitch;
-
- vst1_u8(s1, vget_low_u8(q3));
- s1 += pitch;
- vst1_u8(s2, vget_high_u8(q3));
- s2 += pitch;
- vst1_u8(s1, vget_low_u8(q4));
- s1 += pitch;
- vst1_u8(s2, vget_high_u8(q4));
- s2 += pitch;
- vst1_u8(s1, vget_low_u8(q5));
- s1 += pitch;
- vst1_u8(s2, vget_high_u8(q5));
- s2 += pitch;
- vst1_u8(s1, vget_low_u8(q6));
- s1 += pitch;
- vst1_u8(s2, vget_high_u8(q6));
- s2 += pitch;
- vst1_u8(s1, vget_low_u8(q7));
- s1 += pitch;
- vst1_u8(s2, vget_high_u8(q7));
- s2 += pitch;
- vst1_u8(s1, vget_low_u8(q8));
- s1 += pitch;
- vst1_u8(s2, vget_high_u8(q8));
- s2 += pitch;
- vst1_u8(s1, vget_low_u8(q9));
- s1 += pitch;
- vst1_u8(s2, vget_high_u8(q9));
- s2 += pitch;
- vst1_u8(s1, vget_low_u8(q10));
- vst1_u8(s2, vget_high_u8(q10));
- return;
-}
-
-void vp8_mbloop_filter_vertical_edge_uv_neon(
- unsigned char *u,
- int pitch,
- unsigned char blimit,
- unsigned char limit,
- unsigned char thresh,
- unsigned char *v) {
- unsigned char *us, *ud;
- unsigned char *vs, *vd;
- uint8x16_t qblimit, qlimit, qthresh, q3, q4;
- uint8x16_t q5, q6, q7, q8, q9, q10;
- uint8x8_t d6, d7, d8, d9, d10, d11, d12, d13, d14;
- uint8x8_t d15, d16, d17, d18, d19, d20, d21;
- uint32x4x2_t q2tmp0, q2tmp1, q2tmp2, q2tmp3;
- uint16x8x2_t q2tmp4, q2tmp5, q2tmp6, q2tmp7;
- uint8x16x2_t q2tmp8, q2tmp9, q2tmp10, q2tmp11;
-
- qblimit = vdupq_n_u8(blimit);
- qlimit = vdupq_n_u8(limit);
- qthresh = vdupq_n_u8(thresh);
-
- us = u - 4;
- vs = v - 4;
- d6 = vld1_u8(us);
- us += pitch;
- d7 = vld1_u8(vs);
- vs += pitch;
- d8 = vld1_u8(us);
- us += pitch;
- d9 = vld1_u8(vs);
- vs += pitch;
- d10 = vld1_u8(us);
- us += pitch;
- d11 = vld1_u8(vs);
- vs += pitch;
- d12 = vld1_u8(us);
- us += pitch;
- d13 = vld1_u8(vs);
- vs += pitch;
- d14 = vld1_u8(us);
- us += pitch;
- d15 = vld1_u8(vs);
- vs += pitch;
- d16 = vld1_u8(us);
- us += pitch;
- d17 = vld1_u8(vs);
- vs += pitch;
- d18 = vld1_u8(us);
- us += pitch;
- d19 = vld1_u8(vs);
- vs += pitch;
- d20 = vld1_u8(us);
- d21 = vld1_u8(vs);
-
- q3 = vcombine_u8(d6, d7);
- q4 = vcombine_u8(d8, d9);
- q5 = vcombine_u8(d10, d11);
- q6 = vcombine_u8(d12, d13);
- q7 = vcombine_u8(d14, d15);
- q8 = vcombine_u8(d16, d17);
- q9 = vcombine_u8(d18, d19);
- q10 = vcombine_u8(d20, d21);
-
- q2tmp0 = vtrnq_u32(vreinterpretq_u32_u8(q3), vreinterpretq_u32_u8(q7));
- q2tmp1 = vtrnq_u32(vreinterpretq_u32_u8(q4), vreinterpretq_u32_u8(q8));
- q2tmp2 = vtrnq_u32(vreinterpretq_u32_u8(q5), vreinterpretq_u32_u8(q9));
- q2tmp3 = vtrnq_u32(vreinterpretq_u32_u8(q6), vreinterpretq_u32_u8(q10));
-
- q2tmp4 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[0]),
- vreinterpretq_u16_u32(q2tmp2.val[0]));
- q2tmp5 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[0]),
- vreinterpretq_u16_u32(q2tmp3.val[0]));
- q2tmp6 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[1]),
- vreinterpretq_u16_u32(q2tmp2.val[1]));
- q2tmp7 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[1]),
- vreinterpretq_u16_u32(q2tmp3.val[1]));
-
- q2tmp8 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[0]),
- vreinterpretq_u8_u16(q2tmp5.val[0]));
- q2tmp9 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[1]),
- vreinterpretq_u8_u16(q2tmp5.val[1]));
- q2tmp10 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[0]),
- vreinterpretq_u8_u16(q2tmp7.val[0]));
- q2tmp11 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[1]),
- vreinterpretq_u8_u16(q2tmp7.val[1]));
-
- q3 = q2tmp8.val[0];
- q4 = q2tmp8.val[1];
- q5 = q2tmp9.val[0];
- q6 = q2tmp9.val[1];
- q7 = q2tmp10.val[0];
- q8 = q2tmp10.val[1];
- q9 = q2tmp11.val[0];
- q10 = q2tmp11.val[1];
-
- vp8_mbloop_filter_neon(qblimit, qlimit, qthresh, q3, q4,
- q5, q6, q7, q8, q9, q10,
- &q4, &q5, &q6, &q7, &q8, &q9);
-
- q2tmp0 = vtrnq_u32(vreinterpretq_u32_u8(q3), vreinterpretq_u32_u8(q7));
- q2tmp1 = vtrnq_u32(vreinterpretq_u32_u8(q4), vreinterpretq_u32_u8(q8));
- q2tmp2 = vtrnq_u32(vreinterpretq_u32_u8(q5), vreinterpretq_u32_u8(q9));
- q2tmp3 = vtrnq_u32(vreinterpretq_u32_u8(q6), vreinterpretq_u32_u8(q10));
-
- q2tmp4 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[0]),
- vreinterpretq_u16_u32(q2tmp2.val[0]));
- q2tmp5 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[0]),
- vreinterpretq_u16_u32(q2tmp3.val[0]));
- q2tmp6 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[1]),
- vreinterpretq_u16_u32(q2tmp2.val[1]));
- q2tmp7 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[1]),
- vreinterpretq_u16_u32(q2tmp3.val[1]));
-
- q2tmp8 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[0]),
- vreinterpretq_u8_u16(q2tmp5.val[0]));
- q2tmp9 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[1]),
- vreinterpretq_u8_u16(q2tmp5.val[1]));
- q2tmp10 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[0]),
- vreinterpretq_u8_u16(q2tmp7.val[0]));
- q2tmp11 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[1]),
- vreinterpretq_u8_u16(q2tmp7.val[1]));
-
- q3 = q2tmp8.val[0];
- q4 = q2tmp8.val[1];
- q5 = q2tmp9.val[0];
- q6 = q2tmp9.val[1];
- q7 = q2tmp10.val[0];
- q8 = q2tmp10.val[1];
- q9 = q2tmp11.val[0];
- q10 = q2tmp11.val[1];
-
- ud = u - 4;
- vst1_u8(ud, vget_low_u8(q3));
- ud += pitch;
- vst1_u8(ud, vget_low_u8(q4));
- ud += pitch;
- vst1_u8(ud, vget_low_u8(q5));
- ud += pitch;
- vst1_u8(ud, vget_low_u8(q6));
- ud += pitch;
- vst1_u8(ud, vget_low_u8(q7));
- ud += pitch;
- vst1_u8(ud, vget_low_u8(q8));
- ud += pitch;
- vst1_u8(ud, vget_low_u8(q9));
- ud += pitch;
- vst1_u8(ud, vget_low_u8(q10));
-
- vd = v - 4;
- vst1_u8(vd, vget_high_u8(q3));
- vd += pitch;
- vst1_u8(vd, vget_high_u8(q4));
- vd += pitch;
- vst1_u8(vd, vget_high_u8(q5));
- vd += pitch;
- vst1_u8(vd, vget_high_u8(q6));
- vd += pitch;
- vst1_u8(vd, vget_high_u8(q7));
- vd += pitch;
- vst1_u8(vd, vget_high_u8(q8));
- vd += pitch;
- vst1_u8(vd, vget_high_u8(q9));
- vd += pitch;
- vst1_u8(vd, vget_high_u8(q10));
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/shortidct4x4llm_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/shortidct4x4llm_neon.c
deleted file mode 100644
index 373afa6ed3..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/shortidct4x4llm_neon.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-static const int16_t cospi8sqrt2minus1 = 20091;
-static const int16_t sinpi8sqrt2 = 35468;
-
-void vp8_short_idct4x4llm_neon(
- int16_t *input,
- unsigned char *pred_ptr,
- int pred_stride,
- unsigned char *dst_ptr,
- int dst_stride) {
- int i;
- uint32x2_t d6u32 = vdup_n_u32(0);
- uint8x8_t d1u8;
- int16x4_t d2, d3, d4, d5, d10, d11, d12, d13;
- uint16x8_t q1u16;
- int16x8_t q1s16, q2s16, q3s16, q4s16;
- int32x2x2_t v2tmp0, v2tmp1;
- int16x4x2_t v2tmp2, v2tmp3;
-
- d2 = vld1_s16(input);
- d3 = vld1_s16(input + 4);
- d4 = vld1_s16(input + 8);
- d5 = vld1_s16(input + 12);
-
- // 1st for loop
- q1s16 = vcombine_s16(d2, d4); // Swap d3 d4 here
- q2s16 = vcombine_s16(d3, d5);
-
- q3s16 = vqdmulhq_n_s16(q2s16, sinpi8sqrt2);
- q4s16 = vqdmulhq_n_s16(q2s16, cospi8sqrt2minus1);
-
- d12 = vqadd_s16(vget_low_s16(q1s16), vget_high_s16(q1s16)); // a1
- d13 = vqsub_s16(vget_low_s16(q1s16), vget_high_s16(q1s16)); // b1
-
- q3s16 = vshrq_n_s16(q3s16, 1);
- q4s16 = vshrq_n_s16(q4s16, 1);
-
- q3s16 = vqaddq_s16(q3s16, q2s16);
- q4s16 = vqaddq_s16(q4s16, q2s16);
-
- d10 = vqsub_s16(vget_low_s16(q3s16), vget_high_s16(q4s16)); // c1
- d11 = vqadd_s16(vget_high_s16(q3s16), vget_low_s16(q4s16)); // d1
-
- d2 = vqadd_s16(d12, d11);
- d3 = vqadd_s16(d13, d10);
- d4 = vqsub_s16(d13, d10);
- d5 = vqsub_s16(d12, d11);
-
- v2tmp0 = vtrn_s32(vreinterpret_s32_s16(d2), vreinterpret_s32_s16(d4));
- v2tmp1 = vtrn_s32(vreinterpret_s32_s16(d3), vreinterpret_s32_s16(d5));
- v2tmp2 = vtrn_s16(vreinterpret_s16_s32(v2tmp0.val[0]),
- vreinterpret_s16_s32(v2tmp1.val[0]));
- v2tmp3 = vtrn_s16(vreinterpret_s16_s32(v2tmp0.val[1]),
- vreinterpret_s16_s32(v2tmp1.val[1]));
-
- // 2nd for loop
- q1s16 = vcombine_s16(v2tmp2.val[0], v2tmp3.val[0]);
- q2s16 = vcombine_s16(v2tmp2.val[1], v2tmp3.val[1]);
-
- q3s16 = vqdmulhq_n_s16(q2s16, sinpi8sqrt2);
- q4s16 = vqdmulhq_n_s16(q2s16, cospi8sqrt2minus1);
-
- d12 = vqadd_s16(vget_low_s16(q1s16), vget_high_s16(q1s16)); // a1
- d13 = vqsub_s16(vget_low_s16(q1s16), vget_high_s16(q1s16)); // b1
-
- q3s16 = vshrq_n_s16(q3s16, 1);
- q4s16 = vshrq_n_s16(q4s16, 1);
-
- q3s16 = vqaddq_s16(q3s16, q2s16);
- q4s16 = vqaddq_s16(q4s16, q2s16);
-
- d10 = vqsub_s16(vget_low_s16(q3s16), vget_high_s16(q4s16)); // c1
- d11 = vqadd_s16(vget_high_s16(q3s16), vget_low_s16(q4s16)); // d1
-
- d2 = vqadd_s16(d12, d11);
- d3 = vqadd_s16(d13, d10);
- d4 = vqsub_s16(d13, d10);
- d5 = vqsub_s16(d12, d11);
-
- d2 = vrshr_n_s16(d2, 3);
- d3 = vrshr_n_s16(d3, 3);
- d4 = vrshr_n_s16(d4, 3);
- d5 = vrshr_n_s16(d5, 3);
-
- v2tmp0 = vtrn_s32(vreinterpret_s32_s16(d2), vreinterpret_s32_s16(d4));
- v2tmp1 = vtrn_s32(vreinterpret_s32_s16(d3), vreinterpret_s32_s16(d5));
- v2tmp2 = vtrn_s16(vreinterpret_s16_s32(v2tmp0.val[0]),
- vreinterpret_s16_s32(v2tmp1.val[0]));
- v2tmp3 = vtrn_s16(vreinterpret_s16_s32(v2tmp0.val[1]),
- vreinterpret_s16_s32(v2tmp1.val[1]));
-
- q1s16 = vcombine_s16(v2tmp2.val[0], v2tmp2.val[1]);
- q2s16 = vcombine_s16(v2tmp3.val[0], v2tmp3.val[1]);
-
- // dc_only_idct_add
- for (i = 0; i < 2; i++, q1s16 = q2s16) {
- d6u32 = vld1_lane_u32((const uint32_t *)pred_ptr, d6u32, 0);
- pred_ptr += pred_stride;
- d6u32 = vld1_lane_u32((const uint32_t *)pred_ptr, d6u32, 1);
- pred_ptr += pred_stride;
-
- q1u16 = vaddw_u8(vreinterpretq_u16_s16(q1s16),
- vreinterpret_u8_u32(d6u32));
- d1u8 = vqmovun_s16(vreinterpretq_s16_u16(q1u16));
-
- vst1_lane_u32((uint32_t *)dst_ptr, vreinterpret_u32_u8(d1u8), 0);
- dst_ptr += dst_stride;
- vst1_lane_u32((uint32_t *)dst_ptr, vreinterpret_u32_u8(d1u8), 1);
- dst_ptr += dst_stride;
- }
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/sixtappredict_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/sixtappredict_neon.c
deleted file mode 100644
index 49d8d221fc..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/sixtappredict_neon.c
+++ /dev/null
@@ -1,1377 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include "vpx_ports/mem.h"
-
-static const int8_t vp8_sub_pel_filters[8][8] = {
- {0, 0, 128, 0, 0, 0, 0, 0}, /* note that 1/8 pel positionyys are */
- {0, -6, 123, 12, -1, 0, 0, 0}, /* just as per alpha -0.5 bicubic */
- {2, -11, 108, 36, -8, 1, 0, 0}, /* New 1/4 pel 6 tap filter */
- {0, -9, 93, 50, -6, 0, 0, 0},
- {3, -16, 77, 77, -16, 3, 0, 0}, /* New 1/2 pel 6 tap filter */
- {0, -6, 50, 93, -9, 0, 0, 0},
- {1, -8, 36, 108, -11, 2, 0, 0}, /* New 1/4 pel 6 tap filter */
- {0, -1, 12, 123, -6, 0, 0, 0},
-};
-
-void vp8_sixtap_predict8x4_neon(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch) {
- unsigned char *src;
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8, d8u8, d9u8;
- uint8x8_t d22u8, d23u8, d24u8, d25u8, d26u8;
- uint8x8_t d27u8, d28u8, d29u8, d30u8, d31u8;
- int8x8_t dtmps8, d0s8, d1s8, d2s8, d3s8, d4s8, d5s8;
- uint16x8_t q3u16, q4u16, q5u16, q6u16, q7u16;
- uint16x8_t q8u16, q9u16, q10u16, q11u16, q12u16;
- int16x8_t q3s16, q4s16, q5s16, q6s16, q7s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16;
- uint8x16_t q3u8, q4u8, q5u8, q6u8, q7u8;
-
- if (xoffset == 0) { // secondpass_filter8x4_only
- // load second_pass filter
- dtmps8 = vld1_s8(vp8_sub_pel_filters[yoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- // load src data
- src = src_ptr - src_pixels_per_line * 2;
- d22u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d23u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d24u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d25u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d26u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d27u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d28u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d29u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d30u8 = vld1_u8(src);
-
- q3u16 = vmull_u8(d22u8, d0u8);
- q4u16 = vmull_u8(d23u8, d0u8);
- q5u16 = vmull_u8(d24u8, d0u8);
- q6u16 = vmull_u8(d25u8, d0u8);
-
- q3u16 = vmlsl_u8(q3u16, d23u8, d1u8);
- q4u16 = vmlsl_u8(q4u16, d24u8, d1u8);
- q5u16 = vmlsl_u8(q5u16, d25u8, d1u8);
- q6u16 = vmlsl_u8(q6u16, d26u8, d1u8);
-
- q3u16 = vmlsl_u8(q3u16, d26u8, d4u8);
- q4u16 = vmlsl_u8(q4u16, d27u8, d4u8);
- q5u16 = vmlsl_u8(q5u16, d28u8, d4u8);
- q6u16 = vmlsl_u8(q6u16, d29u8, d4u8);
-
- q3u16 = vmlal_u8(q3u16, d24u8, d2u8);
- q4u16 = vmlal_u8(q4u16, d25u8, d2u8);
- q5u16 = vmlal_u8(q5u16, d26u8, d2u8);
- q6u16 = vmlal_u8(q6u16, d27u8, d2u8);
-
- q3u16 = vmlal_u8(q3u16, d27u8, d5u8);
- q4u16 = vmlal_u8(q4u16, d28u8, d5u8);
- q5u16 = vmlal_u8(q5u16, d29u8, d5u8);
- q6u16 = vmlal_u8(q6u16, d30u8, d5u8);
-
- q7u16 = vmull_u8(d25u8, d3u8);
- q8u16 = vmull_u8(d26u8, d3u8);
- q9u16 = vmull_u8(d27u8, d3u8);
- q10u16 = vmull_u8(d28u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
-
- q7s16 = vqaddq_s16(q7s16, q3s16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q9s16 = vqaddq_s16(q9s16, q5s16);
- q10s16 = vqaddq_s16(q10s16, q6s16);
-
- d6u8 = vqrshrun_n_s16(q7s16, 7);
- d7u8 = vqrshrun_n_s16(q8s16, 7);
- d8u8 = vqrshrun_n_s16(q9s16, 7);
- d9u8 = vqrshrun_n_s16(q10s16, 7);
-
- vst1_u8(dst_ptr, d6u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d7u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d8u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d9u8);
- return;
- }
-
- // load first_pass filter
- dtmps8 = vld1_s8(vp8_sub_pel_filters[xoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- // First pass: output_height lines x output_width columns (9x4)
- if (yoffset == 0) // firstpass_filter4x4_only
- src = src_ptr - 2;
- else
- src = src_ptr - 2 - (src_pixels_per_line * 2);
- q3u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q4u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q5u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q6u8 = vld1q_u8(src);
-
- q7u16 = vmull_u8(vget_low_u8(q3u8), d0u8);
- q8u16 = vmull_u8(vget_low_u8(q4u8), d0u8);
- q9u16 = vmull_u8(vget_low_u8(q5u8), d0u8);
- q10u16 = vmull_u8(vget_low_u8(q6u8), d0u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 1);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 1);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 1);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 1);
-
- q7u16 = vmlsl_u8(q7u16, d28u8, d1u8);
- q8u16 = vmlsl_u8(q8u16, d29u8, d1u8);
- q9u16 = vmlsl_u8(q9u16, d30u8, d1u8);
- q10u16 = vmlsl_u8(q10u16, d31u8, d1u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 4);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 4);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 4);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 4);
-
- q7u16 = vmlsl_u8(q7u16, d28u8, d4u8);
- q8u16 = vmlsl_u8(q8u16, d29u8, d4u8);
- q9u16 = vmlsl_u8(q9u16, d30u8, d4u8);
- q10u16 = vmlsl_u8(q10u16, d31u8, d4u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 2);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 2);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 2);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 2);
-
- q7u16 = vmlal_u8(q7u16, d28u8, d2u8);
- q8u16 = vmlal_u8(q8u16, d29u8, d2u8);
- q9u16 = vmlal_u8(q9u16, d30u8, d2u8);
- q10u16 = vmlal_u8(q10u16, d31u8, d2u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 5);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 5);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 5);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 5);
-
- q7u16 = vmlal_u8(q7u16, d28u8, d5u8);
- q8u16 = vmlal_u8(q8u16, d29u8, d5u8);
- q9u16 = vmlal_u8(q9u16, d30u8, d5u8);
- q10u16 = vmlal_u8(q10u16, d31u8, d5u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 3);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 3);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 3);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 3);
-
- q3u16 = vmull_u8(d28u8, d3u8);
- q4u16 = vmull_u8(d29u8, d3u8);
- q5u16 = vmull_u8(d30u8, d3u8);
- q6u16 = vmull_u8(d31u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
-
- q7s16 = vqaddq_s16(q7s16, q3s16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q9s16 = vqaddq_s16(q9s16, q5s16);
- q10s16 = vqaddq_s16(q10s16, q6s16);
-
- d22u8 = vqrshrun_n_s16(q7s16, 7);
- d23u8 = vqrshrun_n_s16(q8s16, 7);
- d24u8 = vqrshrun_n_s16(q9s16, 7);
- d25u8 = vqrshrun_n_s16(q10s16, 7);
-
- if (yoffset == 0) { // firstpass_filter8x4_only
- vst1_u8(dst_ptr, d22u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d23u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d24u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d25u8);
- return;
- }
-
- // First Pass on rest 5-line data
- src += src_pixels_per_line;
- q3u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q4u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q5u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q6u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q7u8 = vld1q_u8(src);
-
- q8u16 = vmull_u8(vget_low_u8(q3u8), d0u8);
- q9u16 = vmull_u8(vget_low_u8(q4u8), d0u8);
- q10u16 = vmull_u8(vget_low_u8(q5u8), d0u8);
- q11u16 = vmull_u8(vget_low_u8(q6u8), d0u8);
- q12u16 = vmull_u8(vget_low_u8(q7u8), d0u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 1);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 1);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 1);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 1);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 1);
-
- q8u16 = vmlsl_u8(q8u16, d27u8, d1u8);
- q9u16 = vmlsl_u8(q9u16, d28u8, d1u8);
- q10u16 = vmlsl_u8(q10u16, d29u8, d1u8);
- q11u16 = vmlsl_u8(q11u16, d30u8, d1u8);
- q12u16 = vmlsl_u8(q12u16, d31u8, d1u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 4);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 4);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 4);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 4);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 4);
-
- q8u16 = vmlsl_u8(q8u16, d27u8, d4u8);
- q9u16 = vmlsl_u8(q9u16, d28u8, d4u8);
- q10u16 = vmlsl_u8(q10u16, d29u8, d4u8);
- q11u16 = vmlsl_u8(q11u16, d30u8, d4u8);
- q12u16 = vmlsl_u8(q12u16, d31u8, d4u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 2);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 2);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 2);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 2);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 2);
-
- q8u16 = vmlal_u8(q8u16, d27u8, d2u8);
- q9u16 = vmlal_u8(q9u16, d28u8, d2u8);
- q10u16 = vmlal_u8(q10u16, d29u8, d2u8);
- q11u16 = vmlal_u8(q11u16, d30u8, d2u8);
- q12u16 = vmlal_u8(q12u16, d31u8, d2u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 5);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 5);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 5);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 5);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 5);
-
- q8u16 = vmlal_u8(q8u16, d27u8, d5u8);
- q9u16 = vmlal_u8(q9u16, d28u8, d5u8);
- q10u16 = vmlal_u8(q10u16, d29u8, d5u8);
- q11u16 = vmlal_u8(q11u16, d30u8, d5u8);
- q12u16 = vmlal_u8(q12u16, d31u8, d5u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 3);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 3);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 3);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 3);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 3);
-
- q3u16 = vmull_u8(d27u8, d3u8);
- q4u16 = vmull_u8(d28u8, d3u8);
- q5u16 = vmull_u8(d29u8, d3u8);
- q6u16 = vmull_u8(d30u8, d3u8);
- q7u16 = vmull_u8(d31u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
- q11s16 = vreinterpretq_s16_u16(q11u16);
- q12s16 = vreinterpretq_s16_u16(q12u16);
-
- q8s16 = vqaddq_s16(q8s16, q3s16);
- q9s16 = vqaddq_s16(q9s16, q4s16);
- q10s16 = vqaddq_s16(q10s16, q5s16);
- q11s16 = vqaddq_s16(q11s16, q6s16);
- q12s16 = vqaddq_s16(q12s16, q7s16);
-
- d26u8 = vqrshrun_n_s16(q8s16, 7);
- d27u8 = vqrshrun_n_s16(q9s16, 7);
- d28u8 = vqrshrun_n_s16(q10s16, 7);
- d29u8 = vqrshrun_n_s16(q11s16, 7);
- d30u8 = vqrshrun_n_s16(q12s16, 7);
-
- // Second pass: 8x4
- dtmps8 = vld1_s8(vp8_sub_pel_filters[yoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- q3u16 = vmull_u8(d22u8, d0u8);
- q4u16 = vmull_u8(d23u8, d0u8);
- q5u16 = vmull_u8(d24u8, d0u8);
- q6u16 = vmull_u8(d25u8, d0u8);
-
- q3u16 = vmlsl_u8(q3u16, d23u8, d1u8);
- q4u16 = vmlsl_u8(q4u16, d24u8, d1u8);
- q5u16 = vmlsl_u8(q5u16, d25u8, d1u8);
- q6u16 = vmlsl_u8(q6u16, d26u8, d1u8);
-
- q3u16 = vmlsl_u8(q3u16, d26u8, d4u8);
- q4u16 = vmlsl_u8(q4u16, d27u8, d4u8);
- q5u16 = vmlsl_u8(q5u16, d28u8, d4u8);
- q6u16 = vmlsl_u8(q6u16, d29u8, d4u8);
-
- q3u16 = vmlal_u8(q3u16, d24u8, d2u8);
- q4u16 = vmlal_u8(q4u16, d25u8, d2u8);
- q5u16 = vmlal_u8(q5u16, d26u8, d2u8);
- q6u16 = vmlal_u8(q6u16, d27u8, d2u8);
-
- q3u16 = vmlal_u8(q3u16, d27u8, d5u8);
- q4u16 = vmlal_u8(q4u16, d28u8, d5u8);
- q5u16 = vmlal_u8(q5u16, d29u8, d5u8);
- q6u16 = vmlal_u8(q6u16, d30u8, d5u8);
-
- q7u16 = vmull_u8(d25u8, d3u8);
- q8u16 = vmull_u8(d26u8, d3u8);
- q9u16 = vmull_u8(d27u8, d3u8);
- q10u16 = vmull_u8(d28u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
-
- q7s16 = vqaddq_s16(q7s16, q3s16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q9s16 = vqaddq_s16(q9s16, q5s16);
- q10s16 = vqaddq_s16(q10s16, q6s16);
-
- d6u8 = vqrshrun_n_s16(q7s16, 7);
- d7u8 = vqrshrun_n_s16(q8s16, 7);
- d8u8 = vqrshrun_n_s16(q9s16, 7);
- d9u8 = vqrshrun_n_s16(q10s16, 7);
-
- vst1_u8(dst_ptr, d6u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d7u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d8u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d9u8);
- return;
-}
-
-void vp8_sixtap_predict8x8_neon(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch) {
- unsigned char *src, *tmpp;
- unsigned char tmp[64];
- int i;
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8, d8u8, d9u8;
- uint8x8_t d18u8, d19u8, d20u8, d21u8, d22u8, d23u8, d24u8, d25u8;
- uint8x8_t d26u8, d27u8, d28u8, d29u8, d30u8, d31u8;
- int8x8_t dtmps8, d0s8, d1s8, d2s8, d3s8, d4s8, d5s8;
- uint16x8_t q3u16, q4u16, q5u16, q6u16, q7u16;
- uint16x8_t q8u16, q9u16, q10u16, q11u16, q12u16;
- int16x8_t q3s16, q4s16, q5s16, q6s16, q7s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16;
- uint8x16_t q3u8, q4u8, q5u8, q6u8, q7u8, q9u8, q10u8, q11u8, q12u8;
-
- if (xoffset == 0) { // secondpass_filter8x8_only
- // load second_pass filter
- dtmps8 = vld1_s8(vp8_sub_pel_filters[yoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- // load src data
- src = src_ptr - src_pixels_per_line * 2;
- d18u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d19u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d20u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d21u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d22u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d23u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d24u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d25u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d26u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d27u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d28u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d29u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d30u8 = vld1_u8(src);
-
- for (i = 2; i > 0; i--) {
- q3u16 = vmull_u8(d18u8, d0u8);
- q4u16 = vmull_u8(d19u8, d0u8);
- q5u16 = vmull_u8(d20u8, d0u8);
- q6u16 = vmull_u8(d21u8, d0u8);
-
- q3u16 = vmlsl_u8(q3u16, d19u8, d1u8);
- q4u16 = vmlsl_u8(q4u16, d20u8, d1u8);
- q5u16 = vmlsl_u8(q5u16, d21u8, d1u8);
- q6u16 = vmlsl_u8(q6u16, d22u8, d1u8);
-
- q3u16 = vmlsl_u8(q3u16, d22u8, d4u8);
- q4u16 = vmlsl_u8(q4u16, d23u8, d4u8);
- q5u16 = vmlsl_u8(q5u16, d24u8, d4u8);
- q6u16 = vmlsl_u8(q6u16, d25u8, d4u8);
-
- q3u16 = vmlal_u8(q3u16, d20u8, d2u8);
- q4u16 = vmlal_u8(q4u16, d21u8, d2u8);
- q5u16 = vmlal_u8(q5u16, d22u8, d2u8);
- q6u16 = vmlal_u8(q6u16, d23u8, d2u8);
-
- q3u16 = vmlal_u8(q3u16, d23u8, d5u8);
- q4u16 = vmlal_u8(q4u16, d24u8, d5u8);
- q5u16 = vmlal_u8(q5u16, d25u8, d5u8);
- q6u16 = vmlal_u8(q6u16, d26u8, d5u8);
-
- q7u16 = vmull_u8(d21u8, d3u8);
- q8u16 = vmull_u8(d22u8, d3u8);
- q9u16 = vmull_u8(d23u8, d3u8);
- q10u16 = vmull_u8(d24u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
-
- q7s16 = vqaddq_s16(q7s16, q3s16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q9s16 = vqaddq_s16(q9s16, q5s16);
- q10s16 = vqaddq_s16(q10s16, q6s16);
-
- d6u8 = vqrshrun_n_s16(q7s16, 7);
- d7u8 = vqrshrun_n_s16(q8s16, 7);
- d8u8 = vqrshrun_n_s16(q9s16, 7);
- d9u8 = vqrshrun_n_s16(q10s16, 7);
-
- d18u8 = d22u8;
- d19u8 = d23u8;
- d20u8 = d24u8;
- d21u8 = d25u8;
- d22u8 = d26u8;
- d23u8 = d27u8;
- d24u8 = d28u8;
- d25u8 = d29u8;
- d26u8 = d30u8;
-
- vst1_u8(dst_ptr, d6u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d7u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d8u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d9u8);
- dst_ptr += dst_pitch;
- }
- return;
- }
-
- // load first_pass filter
- dtmps8 = vld1_s8(vp8_sub_pel_filters[xoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- // First pass: output_height lines x output_width columns (9x4)
- if (yoffset == 0) // firstpass_filter4x4_only
- src = src_ptr - 2;
- else
- src = src_ptr - 2 - (src_pixels_per_line * 2);
-
- tmpp = tmp;
- for (i = 2; i > 0; i--) {
- q3u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q4u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q5u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q6u8 = vld1q_u8(src);
- src += src_pixels_per_line;
-
- __builtin_prefetch(src);
- __builtin_prefetch(src + src_pixels_per_line);
- __builtin_prefetch(src + src_pixels_per_line * 2);
-
- q7u16 = vmull_u8(vget_low_u8(q3u8), d0u8);
- q8u16 = vmull_u8(vget_low_u8(q4u8), d0u8);
- q9u16 = vmull_u8(vget_low_u8(q5u8), d0u8);
- q10u16 = vmull_u8(vget_low_u8(q6u8), d0u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 1);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 1);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 1);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 1);
-
- q7u16 = vmlsl_u8(q7u16, d28u8, d1u8);
- q8u16 = vmlsl_u8(q8u16, d29u8, d1u8);
- q9u16 = vmlsl_u8(q9u16, d30u8, d1u8);
- q10u16 = vmlsl_u8(q10u16, d31u8, d1u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 4);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 4);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 4);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 4);
-
- q7u16 = vmlsl_u8(q7u16, d28u8, d4u8);
- q8u16 = vmlsl_u8(q8u16, d29u8, d4u8);
- q9u16 = vmlsl_u8(q9u16, d30u8, d4u8);
- q10u16 = vmlsl_u8(q10u16, d31u8, d4u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 2);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 2);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 2);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 2);
-
- q7u16 = vmlal_u8(q7u16, d28u8, d2u8);
- q8u16 = vmlal_u8(q8u16, d29u8, d2u8);
- q9u16 = vmlal_u8(q9u16, d30u8, d2u8);
- q10u16 = vmlal_u8(q10u16, d31u8, d2u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 5);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 5);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 5);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 5);
-
- q7u16 = vmlal_u8(q7u16, d28u8, d5u8);
- q8u16 = vmlal_u8(q8u16, d29u8, d5u8);
- q9u16 = vmlal_u8(q9u16, d30u8, d5u8);
- q10u16 = vmlal_u8(q10u16, d31u8, d5u8);
-
- d28u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 3);
- d29u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 3);
- d30u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 3);
- d31u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 3);
-
- q3u16 = vmull_u8(d28u8, d3u8);
- q4u16 = vmull_u8(d29u8, d3u8);
- q5u16 = vmull_u8(d30u8, d3u8);
- q6u16 = vmull_u8(d31u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
-
- q7s16 = vqaddq_s16(q7s16, q3s16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q9s16 = vqaddq_s16(q9s16, q5s16);
- q10s16 = vqaddq_s16(q10s16, q6s16);
-
- d22u8 = vqrshrun_n_s16(q7s16, 7);
- d23u8 = vqrshrun_n_s16(q8s16, 7);
- d24u8 = vqrshrun_n_s16(q9s16, 7);
- d25u8 = vqrshrun_n_s16(q10s16, 7);
-
- if (yoffset == 0) { // firstpass_filter8x4_only
- vst1_u8(dst_ptr, d22u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d23u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d24u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d25u8);
- dst_ptr += dst_pitch;
- } else {
- vst1_u8(tmpp, d22u8);
- tmpp += 8;
- vst1_u8(tmpp, d23u8);
- tmpp += 8;
- vst1_u8(tmpp, d24u8);
- tmpp += 8;
- vst1_u8(tmpp, d25u8);
- tmpp += 8;
- }
- }
- if (yoffset == 0)
- return;
-
- // First Pass on rest 5-line data
- q3u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q4u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q5u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q6u8 = vld1q_u8(src);
- src += src_pixels_per_line;
- q7u8 = vld1q_u8(src);
-
- q8u16 = vmull_u8(vget_low_u8(q3u8), d0u8);
- q9u16 = vmull_u8(vget_low_u8(q4u8), d0u8);
- q10u16 = vmull_u8(vget_low_u8(q5u8), d0u8);
- q11u16 = vmull_u8(vget_low_u8(q6u8), d0u8);
- q12u16 = vmull_u8(vget_low_u8(q7u8), d0u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 1);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 1);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 1);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 1);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 1);
-
- q8u16 = vmlsl_u8(q8u16, d27u8, d1u8);
- q9u16 = vmlsl_u8(q9u16, d28u8, d1u8);
- q10u16 = vmlsl_u8(q10u16, d29u8, d1u8);
- q11u16 = vmlsl_u8(q11u16, d30u8, d1u8);
- q12u16 = vmlsl_u8(q12u16, d31u8, d1u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 4);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 4);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 4);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 4);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 4);
-
- q8u16 = vmlsl_u8(q8u16, d27u8, d4u8);
- q9u16 = vmlsl_u8(q9u16, d28u8, d4u8);
- q10u16 = vmlsl_u8(q10u16, d29u8, d4u8);
- q11u16 = vmlsl_u8(q11u16, d30u8, d4u8);
- q12u16 = vmlsl_u8(q12u16, d31u8, d4u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 2);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 2);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 2);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 2);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 2);
-
- q8u16 = vmlal_u8(q8u16, d27u8, d2u8);
- q9u16 = vmlal_u8(q9u16, d28u8, d2u8);
- q10u16 = vmlal_u8(q10u16, d29u8, d2u8);
- q11u16 = vmlal_u8(q11u16, d30u8, d2u8);
- q12u16 = vmlal_u8(q12u16, d31u8, d2u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 5);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 5);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 5);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 5);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 5);
-
- q8u16 = vmlal_u8(q8u16, d27u8, d5u8);
- q9u16 = vmlal_u8(q9u16, d28u8, d5u8);
- q10u16 = vmlal_u8(q10u16, d29u8, d5u8);
- q11u16 = vmlal_u8(q11u16, d30u8, d5u8);
- q12u16 = vmlal_u8(q12u16, d31u8, d5u8);
-
- d27u8 = vext_u8(vget_low_u8(q3u8), vget_high_u8(q3u8), 3);
- d28u8 = vext_u8(vget_low_u8(q4u8), vget_high_u8(q4u8), 3);
- d29u8 = vext_u8(vget_low_u8(q5u8), vget_high_u8(q5u8), 3);
- d30u8 = vext_u8(vget_low_u8(q6u8), vget_high_u8(q6u8), 3);
- d31u8 = vext_u8(vget_low_u8(q7u8), vget_high_u8(q7u8), 3);
-
- q3u16 = vmull_u8(d27u8, d3u8);
- q4u16 = vmull_u8(d28u8, d3u8);
- q5u16 = vmull_u8(d29u8, d3u8);
- q6u16 = vmull_u8(d30u8, d3u8);
- q7u16 = vmull_u8(d31u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
- q11s16 = vreinterpretq_s16_u16(q11u16);
- q12s16 = vreinterpretq_s16_u16(q12u16);
-
- q8s16 = vqaddq_s16(q8s16, q3s16);
- q9s16 = vqaddq_s16(q9s16, q4s16);
- q10s16 = vqaddq_s16(q10s16, q5s16);
- q11s16 = vqaddq_s16(q11s16, q6s16);
- q12s16 = vqaddq_s16(q12s16, q7s16);
-
- d26u8 = vqrshrun_n_s16(q8s16, 7);
- d27u8 = vqrshrun_n_s16(q9s16, 7);
- d28u8 = vqrshrun_n_s16(q10s16, 7);
- d29u8 = vqrshrun_n_s16(q11s16, 7);
- d30u8 = vqrshrun_n_s16(q12s16, 7);
-
- // Second pass: 8x8
- dtmps8 = vld1_s8(vp8_sub_pel_filters[yoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- tmpp = tmp;
- q9u8 = vld1q_u8(tmpp);
- tmpp += 16;
- q10u8 = vld1q_u8(tmpp);
- tmpp += 16;
- q11u8 = vld1q_u8(tmpp);
- tmpp += 16;
- q12u8 = vld1q_u8(tmpp);
-
- d18u8 = vget_low_u8(q9u8);
- d19u8 = vget_high_u8(q9u8);
- d20u8 = vget_low_u8(q10u8);
- d21u8 = vget_high_u8(q10u8);
- d22u8 = vget_low_u8(q11u8);
- d23u8 = vget_high_u8(q11u8);
- d24u8 = vget_low_u8(q12u8);
- d25u8 = vget_high_u8(q12u8);
-
- for (i = 2; i > 0; i--) {
- q3u16 = vmull_u8(d18u8, d0u8);
- q4u16 = vmull_u8(d19u8, d0u8);
- q5u16 = vmull_u8(d20u8, d0u8);
- q6u16 = vmull_u8(d21u8, d0u8);
-
- q3u16 = vmlsl_u8(q3u16, d19u8, d1u8);
- q4u16 = vmlsl_u8(q4u16, d20u8, d1u8);
- q5u16 = vmlsl_u8(q5u16, d21u8, d1u8);
- q6u16 = vmlsl_u8(q6u16, d22u8, d1u8);
-
- q3u16 = vmlsl_u8(q3u16, d22u8, d4u8);
- q4u16 = vmlsl_u8(q4u16, d23u8, d4u8);
- q5u16 = vmlsl_u8(q5u16, d24u8, d4u8);
- q6u16 = vmlsl_u8(q6u16, d25u8, d4u8);
-
- q3u16 = vmlal_u8(q3u16, d20u8, d2u8);
- q4u16 = vmlal_u8(q4u16, d21u8, d2u8);
- q5u16 = vmlal_u8(q5u16, d22u8, d2u8);
- q6u16 = vmlal_u8(q6u16, d23u8, d2u8);
-
- q3u16 = vmlal_u8(q3u16, d23u8, d5u8);
- q4u16 = vmlal_u8(q4u16, d24u8, d5u8);
- q5u16 = vmlal_u8(q5u16, d25u8, d5u8);
- q6u16 = vmlal_u8(q6u16, d26u8, d5u8);
-
- q7u16 = vmull_u8(d21u8, d3u8);
- q8u16 = vmull_u8(d22u8, d3u8);
- q9u16 = vmull_u8(d23u8, d3u8);
- q10u16 = vmull_u8(d24u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
-
- q7s16 = vqaddq_s16(q7s16, q3s16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q9s16 = vqaddq_s16(q9s16, q5s16);
- q10s16 = vqaddq_s16(q10s16, q6s16);
-
- d6u8 = vqrshrun_n_s16(q7s16, 7);
- d7u8 = vqrshrun_n_s16(q8s16, 7);
- d8u8 = vqrshrun_n_s16(q9s16, 7);
- d9u8 = vqrshrun_n_s16(q10s16, 7);
-
- d18u8 = d22u8;
- d19u8 = d23u8;
- d20u8 = d24u8;
- d21u8 = d25u8;
- d22u8 = d26u8;
- d23u8 = d27u8;
- d24u8 = d28u8;
- d25u8 = d29u8;
- d26u8 = d30u8;
-
- vst1_u8(dst_ptr, d6u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d7u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d8u8);
- dst_ptr += dst_pitch;
- vst1_u8(dst_ptr, d9u8);
- dst_ptr += dst_pitch;
- }
- return;
-}
-
-void vp8_sixtap_predict16x16_neon(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch) {
- unsigned char *src, *src_tmp, *dst, *tmpp;
- unsigned char tmp[336];
- int i, j;
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8, d8u8, d9u8;
- uint8x8_t d10u8, d11u8, d12u8, d13u8, d14u8, d15u8, d18u8, d19u8;
- uint8x8_t d20u8, d21u8, d22u8, d23u8, d24u8, d25u8, d26u8, d27u8;
- uint8x8_t d28u8, d29u8, d30u8, d31u8;
- int8x8_t dtmps8, d0s8, d1s8, d2s8, d3s8, d4s8, d5s8;
- uint8x16_t q3u8, q4u8;
- uint16x8_t q3u16, q4u16, q5u16, q6u16, q7u16, q8u16, q9u16, q10u16;
- uint16x8_t q11u16, q12u16, q13u16, q15u16;
- int16x8_t q3s16, q4s16, q5s16, q6s16, q7s16, q8s16, q9s16, q10s16;
- int16x8_t q11s16, q12s16, q13s16, q15s16;
-
- if (xoffset == 0) { // secondpass_filter8x8_only
- // load second_pass filter
- dtmps8 = vld1_s8(vp8_sub_pel_filters[yoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- // load src data
- src_tmp = src_ptr - src_pixels_per_line * 2;
- for (i = 0; i < 2; i++) {
- src = src_tmp + i * 8;
- dst = dst_ptr + i * 8;
- d18u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d19u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d20u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d21u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d22u8 = vld1_u8(src);
- src += src_pixels_per_line;
- for (j = 0; j < 4; j++) {
- d23u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d24u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d25u8 = vld1_u8(src);
- src += src_pixels_per_line;
- d26u8 = vld1_u8(src);
- src += src_pixels_per_line;
-
- q3u16 = vmull_u8(d18u8, d0u8);
- q4u16 = vmull_u8(d19u8, d0u8);
- q5u16 = vmull_u8(d20u8, d0u8);
- q6u16 = vmull_u8(d21u8, d0u8);
-
- q3u16 = vmlsl_u8(q3u16, d19u8, d1u8);
- q4u16 = vmlsl_u8(q4u16, d20u8, d1u8);
- q5u16 = vmlsl_u8(q5u16, d21u8, d1u8);
- q6u16 = vmlsl_u8(q6u16, d22u8, d1u8);
-
- q3u16 = vmlsl_u8(q3u16, d22u8, d4u8);
- q4u16 = vmlsl_u8(q4u16, d23u8, d4u8);
- q5u16 = vmlsl_u8(q5u16, d24u8, d4u8);
- q6u16 = vmlsl_u8(q6u16, d25u8, d4u8);
-
- q3u16 = vmlal_u8(q3u16, d20u8, d2u8);
- q4u16 = vmlal_u8(q4u16, d21u8, d2u8);
- q5u16 = vmlal_u8(q5u16, d22u8, d2u8);
- q6u16 = vmlal_u8(q6u16, d23u8, d2u8);
-
- q3u16 = vmlal_u8(q3u16, d23u8, d5u8);
- q4u16 = vmlal_u8(q4u16, d24u8, d5u8);
- q5u16 = vmlal_u8(q5u16, d25u8, d5u8);
- q6u16 = vmlal_u8(q6u16, d26u8, d5u8);
-
- q7u16 = vmull_u8(d21u8, d3u8);
- q8u16 = vmull_u8(d22u8, d3u8);
- q9u16 = vmull_u8(d23u8, d3u8);
- q10u16 = vmull_u8(d24u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
-
- q7s16 = vqaddq_s16(q7s16, q3s16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q9s16 = vqaddq_s16(q9s16, q5s16);
- q10s16 = vqaddq_s16(q10s16, q6s16);
-
- d6u8 = vqrshrun_n_s16(q7s16, 7);
- d7u8 = vqrshrun_n_s16(q8s16, 7);
- d8u8 = vqrshrun_n_s16(q9s16, 7);
- d9u8 = vqrshrun_n_s16(q10s16, 7);
-
- d18u8 = d22u8;
- d19u8 = d23u8;
- d20u8 = d24u8;
- d21u8 = d25u8;
- d22u8 = d26u8;
-
- vst1_u8(dst, d6u8);
- dst += dst_pitch;
- vst1_u8(dst, d7u8);
- dst += dst_pitch;
- vst1_u8(dst, d8u8);
- dst += dst_pitch;
- vst1_u8(dst, d9u8);
- dst += dst_pitch;
- }
- }
- return;
- }
-
- // load first_pass filter
- dtmps8 = vld1_s8(vp8_sub_pel_filters[xoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- // First pass: output_height lines x output_width columns (9x4)
- if (yoffset == 0) { // firstpass_filter4x4_only
- src = src_ptr - 2;
- dst = dst_ptr;
- for (i = 0; i < 8; i++) {
- d6u8 = vld1_u8(src);
- d7u8 = vld1_u8(src + 8);
- d8u8 = vld1_u8(src + 16);
- src += src_pixels_per_line;
- d9u8 = vld1_u8(src);
- d10u8 = vld1_u8(src + 8);
- d11u8 = vld1_u8(src + 16);
- src += src_pixels_per_line;
-
- __builtin_prefetch(src);
- __builtin_prefetch(src + src_pixels_per_line);
-
- q6u16 = vmull_u8(d6u8, d0u8);
- q7u16 = vmull_u8(d7u8, d0u8);
- q8u16 = vmull_u8(d9u8, d0u8);
- q9u16 = vmull_u8(d10u8, d0u8);
-
- d20u8 = vext_u8(d6u8, d7u8, 1);
- d21u8 = vext_u8(d9u8, d10u8, 1);
- d22u8 = vext_u8(d7u8, d8u8, 1);
- d23u8 = vext_u8(d10u8, d11u8, 1);
- d24u8 = vext_u8(d6u8, d7u8, 4);
- d25u8 = vext_u8(d9u8, d10u8, 4);
- d26u8 = vext_u8(d7u8, d8u8, 4);
- d27u8 = vext_u8(d10u8, d11u8, 4);
- d28u8 = vext_u8(d6u8, d7u8, 5);
- d29u8 = vext_u8(d9u8, d10u8, 5);
-
- q6u16 = vmlsl_u8(q6u16, d20u8, d1u8);
- q8u16 = vmlsl_u8(q8u16, d21u8, d1u8);
- q7u16 = vmlsl_u8(q7u16, d22u8, d1u8);
- q9u16 = vmlsl_u8(q9u16, d23u8, d1u8);
- q6u16 = vmlsl_u8(q6u16, d24u8, d4u8);
- q8u16 = vmlsl_u8(q8u16, d25u8, d4u8);
- q7u16 = vmlsl_u8(q7u16, d26u8, d4u8);
- q9u16 = vmlsl_u8(q9u16, d27u8, d4u8);
- q6u16 = vmlal_u8(q6u16, d28u8, d5u8);
- q8u16 = vmlal_u8(q8u16, d29u8, d5u8);
-
- d20u8 = vext_u8(d7u8, d8u8, 5);
- d21u8 = vext_u8(d10u8, d11u8, 5);
- d22u8 = vext_u8(d6u8, d7u8, 2);
- d23u8 = vext_u8(d9u8, d10u8, 2);
- d24u8 = vext_u8(d7u8, d8u8, 2);
- d25u8 = vext_u8(d10u8, d11u8, 2);
- d26u8 = vext_u8(d6u8, d7u8, 3);
- d27u8 = vext_u8(d9u8, d10u8, 3);
- d28u8 = vext_u8(d7u8, d8u8, 3);
- d29u8 = vext_u8(d10u8, d11u8, 3);
-
- q7u16 = vmlal_u8(q7u16, d20u8, d5u8);
- q9u16 = vmlal_u8(q9u16, d21u8, d5u8);
- q6u16 = vmlal_u8(q6u16, d22u8, d2u8);
- q8u16 = vmlal_u8(q8u16, d23u8, d2u8);
- q7u16 = vmlal_u8(q7u16, d24u8, d2u8);
- q9u16 = vmlal_u8(q9u16, d25u8, d2u8);
-
- q10u16 = vmull_u8(d26u8, d3u8);
- q11u16 = vmull_u8(d27u8, d3u8);
- q12u16 = vmull_u8(d28u8, d3u8);
- q15u16 = vmull_u8(d29u8, d3u8);
-
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
- q11s16 = vreinterpretq_s16_u16(q11u16);
- q12s16 = vreinterpretq_s16_u16(q12u16);
- q15s16 = vreinterpretq_s16_u16(q15u16);
-
- q6s16 = vqaddq_s16(q6s16, q10s16);
- q8s16 = vqaddq_s16(q8s16, q11s16);
- q7s16 = vqaddq_s16(q7s16, q12s16);
- q9s16 = vqaddq_s16(q9s16, q15s16);
-
- d6u8 = vqrshrun_n_s16(q6s16, 7);
- d7u8 = vqrshrun_n_s16(q7s16, 7);
- d8u8 = vqrshrun_n_s16(q8s16, 7);
- d9u8 = vqrshrun_n_s16(q9s16, 7);
-
- q3u8 = vcombine_u8(d6u8, d7u8);
- q4u8 = vcombine_u8(d8u8, d9u8);
- vst1q_u8(dst, q3u8);
- dst += dst_pitch;
- vst1q_u8(dst, q4u8);
- dst += dst_pitch;
- }
- return;
- }
-
- src = src_ptr - 2 - src_pixels_per_line * 2;
- tmpp = tmp;
- for (i = 0; i < 7; i++) {
- d6u8 = vld1_u8(src);
- d7u8 = vld1_u8(src + 8);
- d8u8 = vld1_u8(src + 16);
- src += src_pixels_per_line;
- d9u8 = vld1_u8(src);
- d10u8 = vld1_u8(src + 8);
- d11u8 = vld1_u8(src + 16);
- src += src_pixels_per_line;
- d12u8 = vld1_u8(src);
- d13u8 = vld1_u8(src + 8);
- d14u8 = vld1_u8(src + 16);
- src += src_pixels_per_line;
-
- __builtin_prefetch(src);
- __builtin_prefetch(src + src_pixels_per_line);
- __builtin_prefetch(src + src_pixels_per_line * 2);
-
- q8u16 = vmull_u8(d6u8, d0u8);
- q9u16 = vmull_u8(d7u8, d0u8);
- q10u16 = vmull_u8(d9u8, d0u8);
- q11u16 = vmull_u8(d10u8, d0u8);
- q12u16 = vmull_u8(d12u8, d0u8);
- q13u16 = vmull_u8(d13u8, d0u8);
-
- d28u8 = vext_u8(d6u8, d7u8, 1);
- d29u8 = vext_u8(d9u8, d10u8, 1);
- d30u8 = vext_u8(d12u8, d13u8, 1);
- q8u16 = vmlsl_u8(q8u16, d28u8, d1u8);
- q10u16 = vmlsl_u8(q10u16, d29u8, d1u8);
- q12u16 = vmlsl_u8(q12u16, d30u8, d1u8);
- d28u8 = vext_u8(d7u8, d8u8, 1);
- d29u8 = vext_u8(d10u8, d11u8, 1);
- d30u8 = vext_u8(d13u8, d14u8, 1);
- q9u16 = vmlsl_u8(q9u16, d28u8, d1u8);
- q11u16 = vmlsl_u8(q11u16, d29u8, d1u8);
- q13u16 = vmlsl_u8(q13u16, d30u8, d1u8);
-
- d28u8 = vext_u8(d6u8, d7u8, 4);
- d29u8 = vext_u8(d9u8, d10u8, 4);
- d30u8 = vext_u8(d12u8, d13u8, 4);
- q8u16 = vmlsl_u8(q8u16, d28u8, d4u8);
- q10u16 = vmlsl_u8(q10u16, d29u8, d4u8);
- q12u16 = vmlsl_u8(q12u16, d30u8, d4u8);
- d28u8 = vext_u8(d7u8, d8u8, 4);
- d29u8 = vext_u8(d10u8, d11u8, 4);
- d30u8 = vext_u8(d13u8, d14u8, 4);
- q9u16 = vmlsl_u8(q9u16, d28u8, d4u8);
- q11u16 = vmlsl_u8(q11u16, d29u8, d4u8);
- q13u16 = vmlsl_u8(q13u16, d30u8, d4u8);
-
- d28u8 = vext_u8(d6u8, d7u8, 5);
- d29u8 = vext_u8(d9u8, d10u8, 5);
- d30u8 = vext_u8(d12u8, d13u8, 5);
- q8u16 = vmlal_u8(q8u16, d28u8, d5u8);
- q10u16 = vmlal_u8(q10u16, d29u8, d5u8);
- q12u16 = vmlal_u8(q12u16, d30u8, d5u8);
- d28u8 = vext_u8(d7u8, d8u8, 5);
- d29u8 = vext_u8(d10u8, d11u8, 5);
- d30u8 = vext_u8(d13u8, d14u8, 5);
- q9u16 = vmlal_u8(q9u16, d28u8, d5u8);
- q11u16 = vmlal_u8(q11u16, d29u8, d5u8);
- q13u16 = vmlal_u8(q13u16, d30u8, d5u8);
-
- d28u8 = vext_u8(d6u8, d7u8, 2);
- d29u8 = vext_u8(d9u8, d10u8, 2);
- d30u8 = vext_u8(d12u8, d13u8, 2);
- q8u16 = vmlal_u8(q8u16, d28u8, d2u8);
- q10u16 = vmlal_u8(q10u16, d29u8, d2u8);
- q12u16 = vmlal_u8(q12u16, d30u8, d2u8);
- d28u8 = vext_u8(d7u8, d8u8, 2);
- d29u8 = vext_u8(d10u8, d11u8, 2);
- d30u8 = vext_u8(d13u8, d14u8, 2);
- q9u16 = vmlal_u8(q9u16, d28u8, d2u8);
- q11u16 = vmlal_u8(q11u16, d29u8, d2u8);
- q13u16 = vmlal_u8(q13u16, d30u8, d2u8);
-
- d28u8 = vext_u8(d6u8, d7u8, 3);
- d29u8 = vext_u8(d9u8, d10u8, 3);
- d30u8 = vext_u8(d12u8, d13u8, 3);
- d15u8 = vext_u8(d7u8, d8u8, 3);
- d31u8 = vext_u8(d10u8, d11u8, 3);
- d6u8 = vext_u8(d13u8, d14u8, 3);
- q4u16 = vmull_u8(d28u8, d3u8);
- q5u16 = vmull_u8(d29u8, d3u8);
- q6u16 = vmull_u8(d30u8, d3u8);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
- q12s16 = vreinterpretq_s16_u16(q12u16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q10s16 = vqaddq_s16(q10s16, q5s16);
- q12s16 = vqaddq_s16(q12s16, q6s16);
-
- q6u16 = vmull_u8(d15u8, d3u8);
- q7u16 = vmull_u8(d31u8, d3u8);
- q3u16 = vmull_u8(d6u8, d3u8);
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q11s16 = vreinterpretq_s16_u16(q11u16);
- q13s16 = vreinterpretq_s16_u16(q13u16);
- q9s16 = vqaddq_s16(q9s16, q6s16);
- q11s16 = vqaddq_s16(q11s16, q7s16);
- q13s16 = vqaddq_s16(q13s16, q3s16);
-
- d6u8 = vqrshrun_n_s16(q8s16, 7);
- d7u8 = vqrshrun_n_s16(q9s16, 7);
- d8u8 = vqrshrun_n_s16(q10s16, 7);
- d9u8 = vqrshrun_n_s16(q11s16, 7);
- d10u8 = vqrshrun_n_s16(q12s16, 7);
- d11u8 = vqrshrun_n_s16(q13s16, 7);
-
- vst1_u8(tmpp, d6u8);
- tmpp += 8;
- vst1_u8(tmpp, d7u8);
- tmpp += 8;
- vst1_u8(tmpp, d8u8);
- tmpp += 8;
- vst1_u8(tmpp, d9u8);
- tmpp += 8;
- vst1_u8(tmpp, d10u8);
- tmpp += 8;
- vst1_u8(tmpp, d11u8);
- tmpp += 8;
- }
-
- // Second pass: 16x16
- dtmps8 = vld1_s8(vp8_sub_pel_filters[yoffset]);
- d0s8 = vdup_lane_s8(dtmps8, 0);
- d1s8 = vdup_lane_s8(dtmps8, 1);
- d2s8 = vdup_lane_s8(dtmps8, 2);
- d3s8 = vdup_lane_s8(dtmps8, 3);
- d4s8 = vdup_lane_s8(dtmps8, 4);
- d5s8 = vdup_lane_s8(dtmps8, 5);
- d0u8 = vreinterpret_u8_s8(vabs_s8(d0s8));
- d1u8 = vreinterpret_u8_s8(vabs_s8(d1s8));
- d2u8 = vreinterpret_u8_s8(vabs_s8(d2s8));
- d3u8 = vreinterpret_u8_s8(vabs_s8(d3s8));
- d4u8 = vreinterpret_u8_s8(vabs_s8(d4s8));
- d5u8 = vreinterpret_u8_s8(vabs_s8(d5s8));
-
- for (i = 0; i < 2; i++) {
- dst = dst_ptr + 8 * i;
- tmpp = tmp + 8 * i;
- d18u8 = vld1_u8(tmpp);
- tmpp += 16;
- d19u8 = vld1_u8(tmpp);
- tmpp += 16;
- d20u8 = vld1_u8(tmpp);
- tmpp += 16;
- d21u8 = vld1_u8(tmpp);
- tmpp += 16;
- d22u8 = vld1_u8(tmpp);
- tmpp += 16;
- for (j = 0; j < 4; j++) {
- d23u8 = vld1_u8(tmpp);
- tmpp += 16;
- d24u8 = vld1_u8(tmpp);
- tmpp += 16;
- d25u8 = vld1_u8(tmpp);
- tmpp += 16;
- d26u8 = vld1_u8(tmpp);
- tmpp += 16;
-
- q3u16 = vmull_u8(d18u8, d0u8);
- q4u16 = vmull_u8(d19u8, d0u8);
- q5u16 = vmull_u8(d20u8, d0u8);
- q6u16 = vmull_u8(d21u8, d0u8);
-
- q3u16 = vmlsl_u8(q3u16, d19u8, d1u8);
- q4u16 = vmlsl_u8(q4u16, d20u8, d1u8);
- q5u16 = vmlsl_u8(q5u16, d21u8, d1u8);
- q6u16 = vmlsl_u8(q6u16, d22u8, d1u8);
-
- q3u16 = vmlsl_u8(q3u16, d22u8, d4u8);
- q4u16 = vmlsl_u8(q4u16, d23u8, d4u8);
- q5u16 = vmlsl_u8(q5u16, d24u8, d4u8);
- q6u16 = vmlsl_u8(q6u16, d25u8, d4u8);
-
- q3u16 = vmlal_u8(q3u16, d20u8, d2u8);
- q4u16 = vmlal_u8(q4u16, d21u8, d2u8);
- q5u16 = vmlal_u8(q5u16, d22u8, d2u8);
- q6u16 = vmlal_u8(q6u16, d23u8, d2u8);
-
- q3u16 = vmlal_u8(q3u16, d23u8, d5u8);
- q4u16 = vmlal_u8(q4u16, d24u8, d5u8);
- q5u16 = vmlal_u8(q5u16, d25u8, d5u8);
- q6u16 = vmlal_u8(q6u16, d26u8, d5u8);
-
- q7u16 = vmull_u8(d21u8, d3u8);
- q8u16 = vmull_u8(d22u8, d3u8);
- q9u16 = vmull_u8(d23u8, d3u8);
- q10u16 = vmull_u8(d24u8, d3u8);
-
- q3s16 = vreinterpretq_s16_u16(q3u16);
- q4s16 = vreinterpretq_s16_u16(q4u16);
- q5s16 = vreinterpretq_s16_u16(q5u16);
- q6s16 = vreinterpretq_s16_u16(q6u16);
- q7s16 = vreinterpretq_s16_u16(q7u16);
- q8s16 = vreinterpretq_s16_u16(q8u16);
- q9s16 = vreinterpretq_s16_u16(q9u16);
- q10s16 = vreinterpretq_s16_u16(q10u16);
-
- q7s16 = vqaddq_s16(q7s16, q3s16);
- q8s16 = vqaddq_s16(q8s16, q4s16);
- q9s16 = vqaddq_s16(q9s16, q5s16);
- q10s16 = vqaddq_s16(q10s16, q6s16);
-
- d6u8 = vqrshrun_n_s16(q7s16, 7);
- d7u8 = vqrshrun_n_s16(q8s16, 7);
- d8u8 = vqrshrun_n_s16(q9s16, 7);
- d9u8 = vqrshrun_n_s16(q10s16, 7);
-
- d18u8 = d22u8;
- d19u8 = d23u8;
- d20u8 = d24u8;
- d21u8 = d25u8;
- d22u8 = d26u8;
-
- vst1_u8(dst, d6u8);
- dst += dst_pitch;
- vst1_u8(dst, d7u8);
- dst += dst_pitch;
- vst1_u8(dst, d8u8);
- dst += dst_pitch;
- vst1_u8(dst, d9u8);
- dst += dst_pitch;
- }
- }
- return;
-}
diff --git a/thirdparty/libvpx/vp8/common/arm/neon/vp8_loopfilter_neon.c b/thirdparty/libvpx/vp8/common/arm/neon/vp8_loopfilter_neon.c
deleted file mode 100644
index 9d6807af71..0000000000
--- a/thirdparty/libvpx/vp8/common/arm/neon/vp8_loopfilter_neon.c
+++ /dev/null
@@ -1,550 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include "./vpx_config.h"
-#include "vpx_ports/arm.h"
-
-static INLINE void vp8_loop_filter_neon(
- uint8x16_t qblimit, // flimit
- uint8x16_t qlimit, // limit
- uint8x16_t qthresh, // thresh
- uint8x16_t q3, // p3
- uint8x16_t q4, // p2
- uint8x16_t q5, // p1
- uint8x16_t q6, // p0
- uint8x16_t q7, // q0
- uint8x16_t q8, // q1
- uint8x16_t q9, // q2
- uint8x16_t q10, // q3
- uint8x16_t *q5r, // p1
- uint8x16_t *q6r, // p0
- uint8x16_t *q7r, // q0
- uint8x16_t *q8r) { // q1
- uint8x16_t q0u8, q1u8, q2u8, q11u8, q12u8, q13u8, q14u8, q15u8;
- int16x8_t q2s16, q11s16;
- uint16x8_t q4u16;
- int8x16_t q1s8, q2s8, q10s8, q11s8, q12s8, q13s8;
- int8x8_t d2s8, d3s8;
-
- q11u8 = vabdq_u8(q3, q4);
- q12u8 = vabdq_u8(q4, q5);
- q13u8 = vabdq_u8(q5, q6);
- q14u8 = vabdq_u8(q8, q7);
- q3 = vabdq_u8(q9, q8);
- q4 = vabdq_u8(q10, q9);
-
- q11u8 = vmaxq_u8(q11u8, q12u8);
- q12u8 = vmaxq_u8(q13u8, q14u8);
- q3 = vmaxq_u8(q3, q4);
- q15u8 = vmaxq_u8(q11u8, q12u8);
-
- q9 = vabdq_u8(q6, q7);
-
- // vp8_hevmask
- q13u8 = vcgtq_u8(q13u8, qthresh);
- q14u8 = vcgtq_u8(q14u8, qthresh);
- q15u8 = vmaxq_u8(q15u8, q3);
-
- q2u8 = vabdq_u8(q5, q8);
- q9 = vqaddq_u8(q9, q9);
-
- q15u8 = vcgeq_u8(qlimit, q15u8);
-
- // vp8_filter() function
- // convert to signed
- q10 = vdupq_n_u8(0x80);
- q8 = veorq_u8(q8, q10);
- q7 = veorq_u8(q7, q10);
- q6 = veorq_u8(q6, q10);
- q5 = veorq_u8(q5, q10);
-
- q2u8 = vshrq_n_u8(q2u8, 1);
- q9 = vqaddq_u8(q9, q2u8);
-
- q10 = vdupq_n_u8(3);
-
- q2s16 = vsubl_s8(vget_low_s8(vreinterpretq_s8_u8(q7)),
- vget_low_s8(vreinterpretq_s8_u8(q6)));
- q11s16 = vsubl_s8(vget_high_s8(vreinterpretq_s8_u8(q7)),
- vget_high_s8(vreinterpretq_s8_u8(q6)));
-
- q9 = vcgeq_u8(qblimit, q9);
-
- q1s8 = vqsubq_s8(vreinterpretq_s8_u8(q5),
- vreinterpretq_s8_u8(q8));
-
- q14u8 = vorrq_u8(q13u8, q14u8);
-
- q4u16 = vmovl_u8(vget_low_u8(q10));
- q2s16 = vmulq_s16(q2s16, vreinterpretq_s16_u16(q4u16));
- q11s16 = vmulq_s16(q11s16, vreinterpretq_s16_u16(q4u16));
-
- q1u8 = vandq_u8(vreinterpretq_u8_s8(q1s8), q14u8);
- q15u8 = vandq_u8(q15u8, q9);
-
- q1s8 = vreinterpretq_s8_u8(q1u8);
- q2s16 = vaddw_s8(q2s16, vget_low_s8(q1s8));
- q11s16 = vaddw_s8(q11s16, vget_high_s8(q1s8));
-
- q9 = vdupq_n_u8(4);
- // vp8_filter = clamp(vp8_filter + 3 * ( qs0 - ps0))
- d2s8 = vqmovn_s16(q2s16);
- d3s8 = vqmovn_s16(q11s16);
- q1s8 = vcombine_s8(d2s8, d3s8);
- q1u8 = vandq_u8(vreinterpretq_u8_s8(q1s8), q15u8);
- q1s8 = vreinterpretq_s8_u8(q1u8);
-
- q2s8 = vqaddq_s8(q1s8, vreinterpretq_s8_u8(q10));
- q1s8 = vqaddq_s8(q1s8, vreinterpretq_s8_u8(q9));
- q2s8 = vshrq_n_s8(q2s8, 3);
- q1s8 = vshrq_n_s8(q1s8, 3);
-
- q11s8 = vqaddq_s8(vreinterpretq_s8_u8(q6), q2s8);
- q10s8 = vqsubq_s8(vreinterpretq_s8_u8(q7), q1s8);
-
- q1s8 = vrshrq_n_s8(q1s8, 1);
- q1s8 = vbicq_s8(q1s8, vreinterpretq_s8_u8(q14u8));
-
- q13s8 = vqaddq_s8(vreinterpretq_s8_u8(q5), q1s8);
- q12s8 = vqsubq_s8(vreinterpretq_s8_u8(q8), q1s8);
-
- q0u8 = vdupq_n_u8(0x80);
- *q8r = veorq_u8(vreinterpretq_u8_s8(q12s8), q0u8);
- *q7r = veorq_u8(vreinterpretq_u8_s8(q10s8), q0u8);
- *q6r = veorq_u8(vreinterpretq_u8_s8(q11s8), q0u8);
- *q5r = veorq_u8(vreinterpretq_u8_s8(q13s8), q0u8);
- return;
-}
-
-void vp8_loop_filter_horizontal_edge_y_neon(
- unsigned char *src,
- int pitch,
- unsigned char blimit,
- unsigned char limit,
- unsigned char thresh) {
- uint8x16_t qblimit, qlimit, qthresh, q3, q4;
- uint8x16_t q5, q6, q7, q8, q9, q10;
-
- qblimit = vdupq_n_u8(blimit);
- qlimit = vdupq_n_u8(limit);
- qthresh = vdupq_n_u8(thresh);
- src -= (pitch << 2);
-
- q3 = vld1q_u8(src);
- src += pitch;
- q4 = vld1q_u8(src);
- src += pitch;
- q5 = vld1q_u8(src);
- src += pitch;
- q6 = vld1q_u8(src);
- src += pitch;
- q7 = vld1q_u8(src);
- src += pitch;
- q8 = vld1q_u8(src);
- src += pitch;
- q9 = vld1q_u8(src);
- src += pitch;
- q10 = vld1q_u8(src);
-
- vp8_loop_filter_neon(qblimit, qlimit, qthresh, q3, q4,
- q5, q6, q7, q8, q9, q10,
- &q5, &q6, &q7, &q8);
-
- src -= (pitch * 5);
- vst1q_u8(src, q5);
- src += pitch;
- vst1q_u8(src, q6);
- src += pitch;
- vst1q_u8(src, q7);
- src += pitch;
- vst1q_u8(src, q8);
- return;
-}
-
-void vp8_loop_filter_horizontal_edge_uv_neon(
- unsigned char *u,
- int pitch,
- unsigned char blimit,
- unsigned char limit,
- unsigned char thresh,
- unsigned char *v) {
- uint8x16_t qblimit, qlimit, qthresh, q3, q4;
- uint8x16_t q5, q6, q7, q8, q9, q10;
- uint8x8_t d6, d7, d8, d9, d10, d11, d12, d13, d14;
- uint8x8_t d15, d16, d17, d18, d19, d20, d21;
-
- qblimit = vdupq_n_u8(blimit);
- qlimit = vdupq_n_u8(limit);
- qthresh = vdupq_n_u8(thresh);
-
- u -= (pitch << 2);
- v -= (pitch << 2);
-
- d6 = vld1_u8(u);
- u += pitch;
- d7 = vld1_u8(v);
- v += pitch;
- d8 = vld1_u8(u);
- u += pitch;
- d9 = vld1_u8(v);
- v += pitch;
- d10 = vld1_u8(u);
- u += pitch;
- d11 = vld1_u8(v);
- v += pitch;
- d12 = vld1_u8(u);
- u += pitch;
- d13 = vld1_u8(v);
- v += pitch;
- d14 = vld1_u8(u);
- u += pitch;
- d15 = vld1_u8(v);
- v += pitch;
- d16 = vld1_u8(u);
- u += pitch;
- d17 = vld1_u8(v);
- v += pitch;
- d18 = vld1_u8(u);
- u += pitch;
- d19 = vld1_u8(v);
- v += pitch;
- d20 = vld1_u8(u);
- d21 = vld1_u8(v);
-
- q3 = vcombine_u8(d6, d7);
- q4 = vcombine_u8(d8, d9);
- q5 = vcombine_u8(d10, d11);
- q6 = vcombine_u8(d12, d13);
- q7 = vcombine_u8(d14, d15);
- q8 = vcombine_u8(d16, d17);
- q9 = vcombine_u8(d18, d19);
- q10 = vcombine_u8(d20, d21);
-
- vp8_loop_filter_neon(qblimit, qlimit, qthresh, q3, q4,
- q5, q6, q7, q8, q9, q10,
- &q5, &q6, &q7, &q8);
-
- u -= (pitch * 5);
- vst1_u8(u, vget_low_u8(q5));
- u += pitch;
- vst1_u8(u, vget_low_u8(q6));
- u += pitch;
- vst1_u8(u, vget_low_u8(q7));
- u += pitch;
- vst1_u8(u, vget_low_u8(q8));
-
- v -= (pitch * 5);
- vst1_u8(v, vget_high_u8(q5));
- v += pitch;
- vst1_u8(v, vget_high_u8(q6));
- v += pitch;
- vst1_u8(v, vget_high_u8(q7));
- v += pitch;
- vst1_u8(v, vget_high_u8(q8));
- return;
-}
-
-static INLINE void write_4x8(unsigned char *dst, int pitch,
- const uint8x8x4_t result) {
-#ifdef VPX_INCOMPATIBLE_GCC
- /*
- * uint8x8x4_t result
- 00 01 02 03 | 04 05 06 07
- 10 11 12 13 | 14 15 16 17
- 20 21 22 23 | 24 25 26 27
- 30 31 32 33 | 34 35 36 37
- ---
- * after vtrn_u16
- 00 01 20 21 | 04 05 24 25
- 02 03 22 23 | 06 07 26 27
- 10 11 30 31 | 14 15 34 35
- 12 13 32 33 | 16 17 36 37
- ---
- * after vtrn_u8
- 00 10 20 30 | 04 14 24 34
- 01 11 21 31 | 05 15 25 35
- 02 12 22 32 | 06 16 26 36
- 03 13 23 33 | 07 17 27 37
- */
- const uint16x4x2_t r02_u16 = vtrn_u16(vreinterpret_u16_u8(result.val[0]),
- vreinterpret_u16_u8(result.val[2]));
- const uint16x4x2_t r13_u16 = vtrn_u16(vreinterpret_u16_u8(result.val[1]),
- vreinterpret_u16_u8(result.val[3]));
- const uint8x8x2_t r01_u8 = vtrn_u8(vreinterpret_u8_u16(r02_u16.val[0]),
- vreinterpret_u8_u16(r13_u16.val[0]));
- const uint8x8x2_t r23_u8 = vtrn_u8(vreinterpret_u8_u16(r02_u16.val[1]),
- vreinterpret_u8_u16(r13_u16.val[1]));
- const uint32x2_t x_0_4 = vreinterpret_u32_u8(r01_u8.val[0]);
- const uint32x2_t x_1_5 = vreinterpret_u32_u8(r01_u8.val[1]);
- const uint32x2_t x_2_6 = vreinterpret_u32_u8(r23_u8.val[0]);
- const uint32x2_t x_3_7 = vreinterpret_u32_u8(r23_u8.val[1]);
- vst1_lane_u32((uint32_t *)dst, x_0_4, 0);
- dst += pitch;
- vst1_lane_u32((uint32_t *)dst, x_1_5, 0);
- dst += pitch;
- vst1_lane_u32((uint32_t *)dst, x_2_6, 0);
- dst += pitch;
- vst1_lane_u32((uint32_t *)dst, x_3_7, 0);
- dst += pitch;
- vst1_lane_u32((uint32_t *)dst, x_0_4, 1);
- dst += pitch;
- vst1_lane_u32((uint32_t *)dst, x_1_5, 1);
- dst += pitch;
- vst1_lane_u32((uint32_t *)dst, x_2_6, 1);
- dst += pitch;
- vst1_lane_u32((uint32_t *)dst, x_3_7, 1);
-#else
- vst4_lane_u8(dst, result, 0);
- dst += pitch;
- vst4_lane_u8(dst, result, 1);
- dst += pitch;
- vst4_lane_u8(dst, result, 2);
- dst += pitch;
- vst4_lane_u8(dst, result, 3);
- dst += pitch;
- vst4_lane_u8(dst, result, 4);
- dst += pitch;
- vst4_lane_u8(dst, result, 5);
- dst += pitch;
- vst4_lane_u8(dst, result, 6);
- dst += pitch;
- vst4_lane_u8(dst, result, 7);
-#endif // VPX_INCOMPATIBLE_GCC
-}
-
-void vp8_loop_filter_vertical_edge_y_neon(
- unsigned char *src,
- int pitch,
- unsigned char blimit,
- unsigned char limit,
- unsigned char thresh) {
- unsigned char *s, *d;
- uint8x16_t qblimit, qlimit, qthresh, q3, q4;
- uint8x16_t q5, q6, q7, q8, q9, q10;
- uint8x8_t d6, d7, d8, d9, d10, d11, d12, d13, d14;
- uint8x8_t d15, d16, d17, d18, d19, d20, d21;
- uint32x4x2_t q2tmp0, q2tmp1, q2tmp2, q2tmp3;
- uint16x8x2_t q2tmp4, q2tmp5, q2tmp6, q2tmp7;
- uint8x16x2_t q2tmp8, q2tmp9, q2tmp10, q2tmp11;
- uint8x8x4_t q4ResultH, q4ResultL;
-
- qblimit = vdupq_n_u8(blimit);
- qlimit = vdupq_n_u8(limit);
- qthresh = vdupq_n_u8(thresh);
-
- s = src - 4;
- d6 = vld1_u8(s);
- s += pitch;
- d8 = vld1_u8(s);
- s += pitch;
- d10 = vld1_u8(s);
- s += pitch;
- d12 = vld1_u8(s);
- s += pitch;
- d14 = vld1_u8(s);
- s += pitch;
- d16 = vld1_u8(s);
- s += pitch;
- d18 = vld1_u8(s);
- s += pitch;
- d20 = vld1_u8(s);
- s += pitch;
- d7 = vld1_u8(s);
- s += pitch;
- d9 = vld1_u8(s);
- s += pitch;
- d11 = vld1_u8(s);
- s += pitch;
- d13 = vld1_u8(s);
- s += pitch;
- d15 = vld1_u8(s);
- s += pitch;
- d17 = vld1_u8(s);
- s += pitch;
- d19 = vld1_u8(s);
- s += pitch;
- d21 = vld1_u8(s);
-
- q3 = vcombine_u8(d6, d7);
- q4 = vcombine_u8(d8, d9);
- q5 = vcombine_u8(d10, d11);
- q6 = vcombine_u8(d12, d13);
- q7 = vcombine_u8(d14, d15);
- q8 = vcombine_u8(d16, d17);
- q9 = vcombine_u8(d18, d19);
- q10 = vcombine_u8(d20, d21);
-
- q2tmp0 = vtrnq_u32(vreinterpretq_u32_u8(q3), vreinterpretq_u32_u8(q7));
- q2tmp1 = vtrnq_u32(vreinterpretq_u32_u8(q4), vreinterpretq_u32_u8(q8));
- q2tmp2 = vtrnq_u32(vreinterpretq_u32_u8(q5), vreinterpretq_u32_u8(q9));
- q2tmp3 = vtrnq_u32(vreinterpretq_u32_u8(q6), vreinterpretq_u32_u8(q10));
-
- q2tmp4 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[0]),
- vreinterpretq_u16_u32(q2tmp2.val[0]));
- q2tmp5 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[0]),
- vreinterpretq_u16_u32(q2tmp3.val[0]));
- q2tmp6 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[1]),
- vreinterpretq_u16_u32(q2tmp2.val[1]));
- q2tmp7 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[1]),
- vreinterpretq_u16_u32(q2tmp3.val[1]));
-
- q2tmp8 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[0]),
- vreinterpretq_u8_u16(q2tmp5.val[0]));
- q2tmp9 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[1]),
- vreinterpretq_u8_u16(q2tmp5.val[1]));
- q2tmp10 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[0]),
- vreinterpretq_u8_u16(q2tmp7.val[0]));
- q2tmp11 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[1]),
- vreinterpretq_u8_u16(q2tmp7.val[1]));
-
- q3 = q2tmp8.val[0];
- q4 = q2tmp8.val[1];
- q5 = q2tmp9.val[0];
- q6 = q2tmp9.val[1];
- q7 = q2tmp10.val[0];
- q8 = q2tmp10.val[1];
- q9 = q2tmp11.val[0];
- q10 = q2tmp11.val[1];
-
- vp8_loop_filter_neon(qblimit, qlimit, qthresh, q3, q4,
- q5, q6, q7, q8, q9, q10,
- &q5, &q6, &q7, &q8);
-
- q4ResultL.val[0] = vget_low_u8(q5); // d10
- q4ResultL.val[1] = vget_low_u8(q6); // d12
- q4ResultL.val[2] = vget_low_u8(q7); // d14
- q4ResultL.val[3] = vget_low_u8(q8); // d16
- q4ResultH.val[0] = vget_high_u8(q5); // d11
- q4ResultH.val[1] = vget_high_u8(q6); // d13
- q4ResultH.val[2] = vget_high_u8(q7); // d15
- q4ResultH.val[3] = vget_high_u8(q8); // d17
-
- d = src - 2;
- write_4x8(d, pitch, q4ResultL);
- d += pitch * 8;
- write_4x8(d, pitch, q4ResultH);
-}
-
-void vp8_loop_filter_vertical_edge_uv_neon(
- unsigned char *u,
- int pitch,
- unsigned char blimit,
- unsigned char limit,
- unsigned char thresh,
- unsigned char *v) {
- unsigned char *us, *ud;
- unsigned char *vs, *vd;
- uint8x16_t qblimit, qlimit, qthresh, q3, q4;
- uint8x16_t q5, q6, q7, q8, q9, q10;
- uint8x8_t d6, d7, d8, d9, d10, d11, d12, d13, d14;
- uint8x8_t d15, d16, d17, d18, d19, d20, d21;
- uint32x4x2_t q2tmp0, q2tmp1, q2tmp2, q2tmp3;
- uint16x8x2_t q2tmp4, q2tmp5, q2tmp6, q2tmp7;
- uint8x16x2_t q2tmp8, q2tmp9, q2tmp10, q2tmp11;
- uint8x8x4_t q4ResultH, q4ResultL;
-
- qblimit = vdupq_n_u8(blimit);
- qlimit = vdupq_n_u8(limit);
- qthresh = vdupq_n_u8(thresh);
-
- us = u - 4;
- d6 = vld1_u8(us);
- us += pitch;
- d8 = vld1_u8(us);
- us += pitch;
- d10 = vld1_u8(us);
- us += pitch;
- d12 = vld1_u8(us);
- us += pitch;
- d14 = vld1_u8(us);
- us += pitch;
- d16 = vld1_u8(us);
- us += pitch;
- d18 = vld1_u8(us);
- us += pitch;
- d20 = vld1_u8(us);
-
- vs = v - 4;
- d7 = vld1_u8(vs);
- vs += pitch;
- d9 = vld1_u8(vs);
- vs += pitch;
- d11 = vld1_u8(vs);
- vs += pitch;
- d13 = vld1_u8(vs);
- vs += pitch;
- d15 = vld1_u8(vs);
- vs += pitch;
- d17 = vld1_u8(vs);
- vs += pitch;
- d19 = vld1_u8(vs);
- vs += pitch;
- d21 = vld1_u8(vs);
-
- q3 = vcombine_u8(d6, d7);
- q4 = vcombine_u8(d8, d9);
- q5 = vcombine_u8(d10, d11);
- q6 = vcombine_u8(d12, d13);
- q7 = vcombine_u8(d14, d15);
- q8 = vcombine_u8(d16, d17);
- q9 = vcombine_u8(d18, d19);
- q10 = vcombine_u8(d20, d21);
-
- q2tmp0 = vtrnq_u32(vreinterpretq_u32_u8(q3), vreinterpretq_u32_u8(q7));
- q2tmp1 = vtrnq_u32(vreinterpretq_u32_u8(q4), vreinterpretq_u32_u8(q8));
- q2tmp2 = vtrnq_u32(vreinterpretq_u32_u8(q5), vreinterpretq_u32_u8(q9));
- q2tmp3 = vtrnq_u32(vreinterpretq_u32_u8(q6), vreinterpretq_u32_u8(q10));
-
- q2tmp4 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[0]),
- vreinterpretq_u16_u32(q2tmp2.val[0]));
- q2tmp5 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[0]),
- vreinterpretq_u16_u32(q2tmp3.val[0]));
- q2tmp6 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp0.val[1]),
- vreinterpretq_u16_u32(q2tmp2.val[1]));
- q2tmp7 = vtrnq_u16(vreinterpretq_u16_u32(q2tmp1.val[1]),
- vreinterpretq_u16_u32(q2tmp3.val[1]));
-
- q2tmp8 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[0]),
- vreinterpretq_u8_u16(q2tmp5.val[0]));
- q2tmp9 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp4.val[1]),
- vreinterpretq_u8_u16(q2tmp5.val[1]));
- q2tmp10 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[0]),
- vreinterpretq_u8_u16(q2tmp7.val[0]));
- q2tmp11 = vtrnq_u8(vreinterpretq_u8_u16(q2tmp6.val[1]),
- vreinterpretq_u8_u16(q2tmp7.val[1]));
-
- q3 = q2tmp8.val[0];
- q4 = q2tmp8.val[1];
- q5 = q2tmp9.val[0];
- q6 = q2tmp9.val[1];
- q7 = q2tmp10.val[0];
- q8 = q2tmp10.val[1];
- q9 = q2tmp11.val[0];
- q10 = q2tmp11.val[1];
-
- vp8_loop_filter_neon(qblimit, qlimit, qthresh, q3, q4,
- q5, q6, q7, q8, q9, q10,
- &q5, &q6, &q7, &q8);
-
- q4ResultL.val[0] = vget_low_u8(q5); // d10
- q4ResultL.val[1] = vget_low_u8(q6); // d12
- q4ResultL.val[2] = vget_low_u8(q7); // d14
- q4ResultL.val[3] = vget_low_u8(q8); // d16
- ud = u - 2;
- write_4x8(ud, pitch, q4ResultL);
-
- q4ResultH.val[0] = vget_high_u8(q5); // d11
- q4ResultH.val[1] = vget_high_u8(q6); // d13
- q4ResultH.val[2] = vget_high_u8(q7); // d15
- q4ResultH.val[3] = vget_high_u8(q8); // d17
- vd = v - 2;
- write_4x8(vd, pitch, q4ResultH);
-}
diff --git a/thirdparty/libvpx/vp8/common/blockd.c b/thirdparty/libvpx/vp8/common/blockd.c
deleted file mode 100644
index 1fc3cd0ca7..0000000000
--- a/thirdparty/libvpx/vp8/common/blockd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "blockd.h"
-#include "vpx_mem/vpx_mem.h"
-
-const unsigned char vp8_block2left[25] =
-{
- 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8
-};
-const unsigned char vp8_block2above[25] =
-{
- 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8
-};
diff --git a/thirdparty/libvpx/vp8/common/blockd.h b/thirdparty/libvpx/vp8/common/blockd.h
deleted file mode 100644
index 192108a06d..0000000000
--- a/thirdparty/libvpx/vp8/common/blockd.h
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_BLOCKD_H_
-#define VP8_COMMON_BLOCKD_H_
-
-void vpx_log(const char *format, ...);
-
-#include "vpx_config.h"
-#include "vpx_scale/yv12config.h"
-#include "mv.h"
-#include "treecoder.h"
-#include "vpx_ports/mem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*#define DCPRED 1*/
-#define DCPREDSIMTHRESH 0
-#define DCPREDCNTTHRESH 3
-
-#define MB_FEATURE_TREE_PROBS 3
-#define MAX_MB_SEGMENTS 4
-
-#define MAX_REF_LF_DELTAS 4
-#define MAX_MODE_LF_DELTAS 4
-
-/* Segment Feature Masks */
-#define SEGMENT_DELTADATA 0
-#define SEGMENT_ABSDATA 1
-
-typedef struct
-{
- int r, c;
-} POS;
-
-#define PLANE_TYPE_Y_NO_DC 0
-#define PLANE_TYPE_Y2 1
-#define PLANE_TYPE_UV 2
-#define PLANE_TYPE_Y_WITH_DC 3
-
-
-typedef char ENTROPY_CONTEXT;
-typedef struct
-{
- ENTROPY_CONTEXT y1[4];
- ENTROPY_CONTEXT u[2];
- ENTROPY_CONTEXT v[2];
- ENTROPY_CONTEXT y2;
-} ENTROPY_CONTEXT_PLANES;
-
-extern const unsigned char vp8_block2left[25];
-extern const unsigned char vp8_block2above[25];
-
-#define VP8_COMBINEENTROPYCONTEXTS( Dest, A, B) \
- Dest = (A)+(B);
-
-
-typedef enum
-{
- KEY_FRAME = 0,
- INTER_FRAME = 1
-} FRAME_TYPE;
-
-typedef enum
-{
- DC_PRED, /* average of above and left pixels */
- V_PRED, /* vertical prediction */
- H_PRED, /* horizontal prediction */
- TM_PRED, /* Truemotion prediction */
- B_PRED, /* block based prediction, each block has its own prediction mode */
-
- NEARESTMV,
- NEARMV,
- ZEROMV,
- NEWMV,
- SPLITMV,
-
- MB_MODE_COUNT
-} MB_PREDICTION_MODE;
-
-/* Macroblock level features */
-typedef enum
-{
- MB_LVL_ALT_Q = 0, /* Use alternate Quantizer .... */
- MB_LVL_ALT_LF = 1, /* Use alternate loop filter value... */
- MB_LVL_MAX = 2 /* Number of MB level features supported */
-
-} MB_LVL_FEATURES;
-
-/* Segment Feature Masks */
-#define SEGMENT_ALTQ 0x01
-#define SEGMENT_ALT_LF 0x02
-
-#define VP8_YMODES (B_PRED + 1)
-#define VP8_UV_MODES (TM_PRED + 1)
-
-#define VP8_MVREFS (1 + SPLITMV - NEARESTMV)
-
-typedef enum
-{
- B_DC_PRED, /* average of above and left pixels */
- B_TM_PRED,
-
- B_VE_PRED, /* vertical prediction */
- B_HE_PRED, /* horizontal prediction */
-
- B_LD_PRED,
- B_RD_PRED,
-
- B_VR_PRED,
- B_VL_PRED,
- B_HD_PRED,
- B_HU_PRED,
-
- LEFT4X4,
- ABOVE4X4,
- ZERO4X4,
- NEW4X4,
-
- B_MODE_COUNT
-} B_PREDICTION_MODE;
-
-#define VP8_BINTRAMODES (B_HU_PRED + 1) /* 10 */
-#define VP8_SUBMVREFS (1 + NEW4X4 - LEFT4X4)
-
-/* For keyframes, intra block modes are predicted by the (already decoded)
- modes for the Y blocks to the left and above us; for interframes, there
- is a single probability table. */
-
-union b_mode_info
-{
- B_PREDICTION_MODE as_mode;
- int_mv mv;
-};
-
-typedef enum
-{
- INTRA_FRAME = 0,
- LAST_FRAME = 1,
- GOLDEN_FRAME = 2,
- ALTREF_FRAME = 3,
- MAX_REF_FRAMES = 4
-} MV_REFERENCE_FRAME;
-
-typedef struct
-{
- uint8_t mode, uv_mode;
- uint8_t ref_frame;
- uint8_t is_4x4;
- int_mv mv;
-
- uint8_t partitioning;
- uint8_t mb_skip_coeff; /* does this mb has coefficients at all, 1=no coefficients, 0=need decode tokens */
- uint8_t need_to_clamp_mvs;
- uint8_t segment_id; /* Which set of segmentation parameters should be used for this MB */
-} MB_MODE_INFO;
-
-typedef struct modeinfo
-{
- MB_MODE_INFO mbmi;
- union b_mode_info bmi[16];
-} MODE_INFO;
-
-#if CONFIG_MULTI_RES_ENCODING
-/* The mb-level information needed to be stored for higher-resolution encoder */
-typedef struct
-{
- MB_PREDICTION_MODE mode;
- MV_REFERENCE_FRAME ref_frame;
- int_mv mv;
- int dissim; /* dissimilarity level of the macroblock */
-} LOWER_RES_MB_INFO;
-
-/* The frame-level information needed to be stored for higher-resolution
- * encoder */
-typedef struct
-{
- FRAME_TYPE frame_type;
- int is_frame_dropped;
- // The frame rate for the lowest resolution.
- double low_res_framerate;
- /* The frame number of each reference frames */
- unsigned int low_res_ref_frames[MAX_REF_FRAMES];
- // The video frame counter value for the key frame, for lowest resolution.
- unsigned int key_frame_counter_value;
- LOWER_RES_MB_INFO *mb_info;
-} LOWER_RES_FRAME_INFO;
-#endif
-
-typedef struct blockd
-{
- short *qcoeff;
- short *dqcoeff;
- unsigned char *predictor;
- short *dequant;
-
- int offset;
- char *eob;
-
- union b_mode_info bmi;
-} BLOCKD;
-
-typedef void (*vp8_subpix_fn_t)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
-
-typedef struct macroblockd
-{
- DECLARE_ALIGNED(16, unsigned char, predictor[384]);
- DECLARE_ALIGNED(16, short, qcoeff[400]);
- DECLARE_ALIGNED(16, short, dqcoeff[400]);
- DECLARE_ALIGNED(16, char, eobs[25]);
-
- DECLARE_ALIGNED(16, short, dequant_y1[16]);
- DECLARE_ALIGNED(16, short, dequant_y1_dc[16]);
- DECLARE_ALIGNED(16, short, dequant_y2[16]);
- DECLARE_ALIGNED(16, short, dequant_uv[16]);
-
- /* 16 Y blocks, 4 U, 4 V, 1 DC 2nd order block, each with 16 entries. */
- BLOCKD block[25];
- int fullpixel_mask;
-
- YV12_BUFFER_CONFIG pre; /* Filtered copy of previous frame reconstruction */
- YV12_BUFFER_CONFIG dst;
-
- MODE_INFO *mode_info_context;
- int mode_info_stride;
-
- FRAME_TYPE frame_type;
-
- int up_available;
- int left_available;
-
- unsigned char *recon_above[3];
- unsigned char *recon_left[3];
- int recon_left_stride[2];
-
- /* Y,U,V,Y2 */
- ENTROPY_CONTEXT_PLANES *above_context;
- ENTROPY_CONTEXT_PLANES *left_context;
-
- /* 0 indicates segmentation at MB level is not enabled. Otherwise the individual bits indicate which features are active. */
- unsigned char segmentation_enabled;
-
- /* 0 (do not update) 1 (update) the macroblock segmentation map. */
- unsigned char update_mb_segmentation_map;
-
- /* 0 (do not update) 1 (update) the macroblock segmentation feature data. */
- unsigned char update_mb_segmentation_data;
-
- /* 0 (do not update) 1 (update) the macroblock segmentation feature data. */
- unsigned char mb_segement_abs_delta;
-
- /* Per frame flags that define which MB level features (such as quantizer or loop filter level) */
- /* are enabled and when enabled the proabilities used to decode the per MB flags in MB_MODE_INFO */
- vp8_prob mb_segment_tree_probs[MB_FEATURE_TREE_PROBS]; /* Probability Tree used to code Segment number */
-
- signed char segment_feature_data[MB_LVL_MAX][MAX_MB_SEGMENTS]; /* Segment parameters */
-
- /* mode_based Loop filter adjustment */
- unsigned char mode_ref_lf_delta_enabled;
- unsigned char mode_ref_lf_delta_update;
-
- /* Delta values have the range +/- MAX_LOOP_FILTER */
- signed char last_ref_lf_deltas[MAX_REF_LF_DELTAS]; /* 0 = Intra, Last, GF, ARF */
- signed char ref_lf_deltas[MAX_REF_LF_DELTAS]; /* 0 = Intra, Last, GF, ARF */
- signed char last_mode_lf_deltas[MAX_MODE_LF_DELTAS]; /* 0 = BPRED, ZERO_MV, MV, SPLIT */
- signed char mode_lf_deltas[MAX_MODE_LF_DELTAS]; /* 0 = BPRED, ZERO_MV, MV, SPLIT */
-
- /* Distance of MB away from frame edges */
- int mb_to_left_edge;
- int mb_to_right_edge;
- int mb_to_top_edge;
- int mb_to_bottom_edge;
-
-
-
- vp8_subpix_fn_t subpixel_predict;
- vp8_subpix_fn_t subpixel_predict8x4;
- vp8_subpix_fn_t subpixel_predict8x8;
- vp8_subpix_fn_t subpixel_predict16x16;
-
- void *current_bc;
-
- int corrupted;
-
-#if ARCH_X86 || ARCH_X86_64
- /* This is an intermediate buffer currently used in sub-pixel motion search
- * to keep a copy of the reference area. This buffer can be used for other
- * purpose.
- */
- DECLARE_ALIGNED(32, unsigned char, y_buf[22*32]);
-#endif
-} MACROBLOCKD;
-
-
-extern void vp8_build_block_doffsets(MACROBLOCKD *x);
-extern void vp8_setup_block_dptrs(MACROBLOCKD *x);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_BLOCKD_H_
diff --git a/thirdparty/libvpx/vp8/common/coefupdateprobs.h b/thirdparty/libvpx/vp8/common/coefupdateprobs.h
deleted file mode 100644
index d96a19e747..0000000000
--- a/thirdparty/libvpx/vp8/common/coefupdateprobs.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_COMMON_COEFUPDATEPROBS_H_
-#define VP8_COMMON_COEFUPDATEPROBS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Update probabilities for the nodes in the token entropy tree.
- Generated file included by entropy.c */
-
-const vp8_prob vp8_coef_update_probs [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [ENTROPY_NODES] =
-{
- {
- {
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255, },
- {249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255, },
- {234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255, },
- {250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255, },
- {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- },
- {
- {
- {217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255, },
- {234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255, },
- },
- {
- {255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
- {250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- },
- {
- {
- {186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255, },
- {234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255, },
- {251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255, },
- },
- {
- {255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- },
- {
- {
- {248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255, },
- {248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
- {246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
- {252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255, },
- {248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
- {253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
- {252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, },
- {250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- {
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, },
- },
- },
-};
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_COEFUPDATEPROBS_H_
diff --git a/thirdparty/libvpx/vp8/common/common.h b/thirdparty/libvpx/vp8/common/common.h
deleted file mode 100644
index e58a9cc23b..0000000000
--- a/thirdparty/libvpx/vp8/common/common.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_COMMON_H_
-#define VP8_COMMON_COMMON_H_
-
-#include <assert.h>
-
-/* Interface header for common constant data structures and lookup tables */
-
-#include "vpx_mem/vpx_mem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Only need this for fixed-size arrays, for structs just assign. */
-
-#define vp8_copy( Dest, Src) { \
- assert( sizeof( Dest) == sizeof( Src)); \
- memcpy( Dest, Src, sizeof( Src)); \
- }
-
-/* Use this for variably-sized arrays. */
-
-#define vp8_copy_array( Dest, Src, N) { \
- assert( sizeof( *Dest) == sizeof( *Src)); \
- memcpy( Dest, Src, N * sizeof( *Src)); \
- }
-
-#define vp8_zero( Dest) memset( &Dest, 0, sizeof( Dest));
-
-#define vp8_zero_array( Dest, N) memset( Dest, 0, N * sizeof( *Dest));
-
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_COMMON_H_
diff --git a/thirdparty/libvpx/vp8/common/copy_c.c b/thirdparty/libvpx/vp8/common/copy_c.c
deleted file mode 100644
index e3392913f6..0000000000
--- a/thirdparty/libvpx/vp8/common/copy_c.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include <string.h>
-
-#include "./vp8_rtcd.h"
-#include "vpx/vpx_integer.h"
-
-/* Copy 2 macroblocks to a buffer */
-void vp8_copy32xn_c(const unsigned char *src_ptr, int src_stride,
- unsigned char *dst_ptr, int dst_stride,
- int height)
-{
- int r;
-
- for (r = 0; r < height; r++)
- {
- memcpy(dst_ptr, src_ptr, 32);
-
- src_ptr += src_stride;
- dst_ptr += dst_stride;
-
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/debugmodes.c b/thirdparty/libvpx/vp8/common/debugmodes.c
deleted file mode 100644
index 159fddc6a7..0000000000
--- a/thirdparty/libvpx/vp8/common/debugmodes.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include <stdio.h>
-#include "blockd.h"
-
-
-void vp8_print_modes_and_motion_vectors(MODE_INFO *mi, int rows, int cols, int frame)
-{
-
- int mb_row;
- int mb_col;
- int mb_index = 0;
- FILE *mvs = fopen("mvs.stt", "a");
-
- /* print out the macroblock Y modes */
- mb_index = 0;
- fprintf(mvs, "Mb Modes for Frame %d\n", frame);
-
- for (mb_row = 0; mb_row < rows; mb_row++)
- {
- for (mb_col = 0; mb_col < cols; mb_col++)
- {
-
- fprintf(mvs, "%2d ", mi[mb_index].mbmi.mode);
-
- mb_index++;
- }
-
- fprintf(mvs, "\n");
- mb_index++;
- }
-
- fprintf(mvs, "\n");
-
- mb_index = 0;
- fprintf(mvs, "Mb mv ref for Frame %d\n", frame);
-
- for (mb_row = 0; mb_row < rows; mb_row++)
- {
- for (mb_col = 0; mb_col < cols; mb_col++)
- {
-
- fprintf(mvs, "%2d ", mi[mb_index].mbmi.ref_frame);
-
- mb_index++;
- }
-
- fprintf(mvs, "\n");
- mb_index++;
- }
-
- fprintf(mvs, "\n");
-
- /* print out the macroblock UV modes */
- mb_index = 0;
- fprintf(mvs, "UV Modes for Frame %d\n", frame);
-
- for (mb_row = 0; mb_row < rows; mb_row++)
- {
- for (mb_col = 0; mb_col < cols; mb_col++)
- {
-
- fprintf(mvs, "%2d ", mi[mb_index].mbmi.uv_mode);
-
- mb_index++;
- }
-
- mb_index++;
- fprintf(mvs, "\n");
- }
-
- fprintf(mvs, "\n");
-
- /* print out the block modes */
- fprintf(mvs, "Mbs for Frame %d\n", frame);
- {
- int b_row;
-
- for (b_row = 0; b_row < 4 * rows; b_row++)
- {
- int b_col;
- int bindex;
-
- for (b_col = 0; b_col < 4 * cols; b_col++)
- {
- mb_index = (b_row >> 2) * (cols + 1) + (b_col >> 2);
- bindex = (b_row & 3) * 4 + (b_col & 3);
-
- if (mi[mb_index].mbmi.mode == B_PRED)
- fprintf(mvs, "%2d ", mi[mb_index].bmi[bindex].as_mode);
- else
- fprintf(mvs, "xx ");
-
- }
-
- fprintf(mvs, "\n");
- }
- }
- fprintf(mvs, "\n");
-
- /* print out the macroblock mvs */
- mb_index = 0;
- fprintf(mvs, "MVs for Frame %d\n", frame);
-
- for (mb_row = 0; mb_row < rows; mb_row++)
- {
- for (mb_col = 0; mb_col < cols; mb_col++)
- {
- fprintf(mvs, "%5d:%-5d", mi[mb_index].mbmi.mv.as_mv.row / 2, mi[mb_index].mbmi.mv.as_mv.col / 2);
-
- mb_index++;
- }
-
- mb_index++;
- fprintf(mvs, "\n");
- }
-
- fprintf(mvs, "\n");
-
-
- /* print out the block modes */
- fprintf(mvs, "MVs for Frame %d\n", frame);
- {
- int b_row;
-
- for (b_row = 0; b_row < 4 * rows; b_row++)
- {
- int b_col;
- int bindex;
-
- for (b_col = 0; b_col < 4 * cols; b_col++)
- {
- mb_index = (b_row >> 2) * (cols + 1) + (b_col >> 2);
- bindex = (b_row & 3) * 4 + (b_col & 3);
- fprintf(mvs, "%3d:%-3d ", mi[mb_index].bmi[bindex].mv.as_mv.row, mi[mb_index].bmi[bindex].mv.as_mv.col);
-
- }
-
- fprintf(mvs, "\n");
- }
- }
- fprintf(mvs, "\n");
-
-
- fclose(mvs);
-}
diff --git a/thirdparty/libvpx/vp8/common/default_coef_probs.h b/thirdparty/libvpx/vp8/common/default_coef_probs.h
deleted file mode 100644
index 4d69e4be66..0000000000
--- a/thirdparty/libvpx/vp8/common/default_coef_probs.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
-*/
-
-#ifndef VP8_COMMON_DEFAULT_COEF_PROBS_H_
-#define VP8_COMMON_DEFAULT_COEF_PROBS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*Generated file, included by entropy.c*/
-
-
-static const vp8_prob default_coef_probs [BLOCK_TYPES]
- [COEF_BANDS]
- [PREV_COEF_CONTEXTS]
- [ENTROPY_NODES] =
-{
- { /* Block Type ( 0 ) */
- { /* Coeff Band ( 0 )*/
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 1 )*/
- { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
- { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
- { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 2 )*/
- { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
- { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
- { 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 }
- },
- { /* Coeff Band ( 3 )*/
- { 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
- { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
- { 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 4 )*/
- { 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
- { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
- { 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 5 )*/
- { 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
- { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
- { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 6 )*/
- { 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
- { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
- { 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 7 )*/
- { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
- }
- },
- { /* Block Type ( 1 ) */
- { /* Coeff Band ( 0 )*/
- { 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 },
- { 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 },
- { 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 }
- },
- { /* Coeff Band ( 1 )*/
- { 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
- { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
- { 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 }
- },
- { /* Coeff Band ( 2 )*/
- { 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
- { 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
- { 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 }
- },
- { /* Coeff Band ( 3 )*/
- { 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
- { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
- { 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 4 )*/
- { 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
- { 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
- { 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 }
- },
- { /* Coeff Band ( 5 )*/
- { 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
- { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
- { 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 }
- },
- { /* Coeff Band ( 6 )*/
- { 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
- { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
- { 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 }
- },
- { /* Coeff Band ( 7 )*/
- { 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
- { 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 }
- }
- },
- { /* Block Type ( 2 ) */
- { /* Coeff Band ( 0 )*/
- { 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
- { 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
- { 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 }
- },
- { /* Coeff Band ( 1 )*/
- { 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
- { 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
- { 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 2 )*/
- { 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
- { 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
- { 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 }
- },
- { /* Coeff Band ( 3 )*/
- { 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
- { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 4 )*/
- { 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
- { 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 5 )*/
- { 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 6 )*/
- { 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 7 )*/
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
- }
- },
- { /* Block Type ( 3 ) */
- { /* Coeff Band ( 0 )*/
- { 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
- { 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
- { 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 }
- },
- { /* Coeff Band ( 1 )*/
- { 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
- { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
- { 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 }
- },
- { /* Coeff Band ( 2 )*/
- { 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
- { 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
- { 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 }
- },
- { /* Coeff Band ( 3 )*/
- { 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
- { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
- { 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 }
- },
- { /* Coeff Band ( 4 )*/
- { 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
- { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
- { 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 }
- },
- { /* Coeff Band ( 5 )*/
- { 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
- { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
- { 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 6 )*/
- { 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
- { 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
- { 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 }
- },
- { /* Coeff Band ( 7 )*/
- { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
- }
- }
-};
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_DEFAULT_COEF_PROBS_H_
diff --git a/thirdparty/libvpx/vp8/common/dequantize.c b/thirdparty/libvpx/vp8/common/dequantize.c
deleted file mode 100644
index f8b04fa4ee..0000000000
--- a/thirdparty/libvpx/vp8/common/dequantize.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "vp8/common/blockd.h"
-#include "vpx_mem/vpx_mem.h"
-
-void vp8_dequantize_b_c(BLOCKD *d, short *DQC)
-{
- int i;
- short *DQ = d->dqcoeff;
- short *Q = d->qcoeff;
-
- for (i = 0; i < 16; i++)
- {
- DQ[i] = Q[i] * DQC[i];
- }
-}
-
-void vp8_dequant_idct_add_c(short *input, short *dq,
- unsigned char *dest, int stride)
-{
- int i;
-
- for (i = 0; i < 16; i++)
- {
- input[i] = dq[i] * input[i];
- }
-
- vp8_short_idct4x4llm_c(input, dest, stride, dest, stride);
-
- memset(input, 0, 32);
-
-}
diff --git a/thirdparty/libvpx/vp8/common/entropy.c b/thirdparty/libvpx/vp8/common/entropy.c
deleted file mode 100644
index c00e565f06..0000000000
--- a/thirdparty/libvpx/vp8/common/entropy.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "entropy.h"
-#include "blockd.h"
-#include "onyxc_int.h"
-#include "vpx_mem/vpx_mem.h"
-
-#include "coefupdateprobs.h"
-
-DECLARE_ALIGNED(16, const unsigned char, vp8_norm[256]) =
-{
- 0, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-DECLARE_ALIGNED(16, const unsigned char, vp8_coef_bands[16]) =
-{ 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7};
-
-DECLARE_ALIGNED(16, const unsigned char,
- vp8_prev_token_class[MAX_ENTROPY_TOKENS]) =
-{ 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0};
-
-DECLARE_ALIGNED(16, const int, vp8_default_zig_zag1d[16]) =
-{
- 0, 1, 4, 8,
- 5, 2, 3, 6,
- 9, 12, 13, 10,
- 7, 11, 14, 15,
-};
-
-DECLARE_ALIGNED(16, const short, vp8_default_inv_zig_zag[16]) =
-{
- 1, 2, 6, 7,
- 3, 5, 8, 13,
- 4, 9, 12, 14,
- 10, 11, 15, 16
-};
-
-/* vp8_default_zig_zag_mask generated with:
-
- void vp8_init_scan_order_mask()
- {
- int i;
-
- for (i = 0; i < 16; i++)
- {
- vp8_default_zig_zag_mask[vp8_default_zig_zag1d[i]] = 1 << i;
- }
-
- }
-*/
-DECLARE_ALIGNED(16, const short, vp8_default_zig_zag_mask[16]) =
-{
- 1, 2, 32, 64,
- 4, 16, 128, 4096,
- 8, 256, 2048, 8192,
- 512, 1024, 16384, -32768
-};
-
-const int vp8_mb_feature_data_bits[MB_LVL_MAX] = {7, 6};
-
-/* Array indices are identical to previously-existing CONTEXT_NODE indices */
-
-const vp8_tree_index vp8_coef_tree[ 22] = /* corresponding _CONTEXT_NODEs */
-{
- -DCT_EOB_TOKEN, 2, /* 0 = EOB */
- -ZERO_TOKEN, 4, /* 1 = ZERO */
- -ONE_TOKEN, 6, /* 2 = ONE */
- 8, 12, /* 3 = LOW_VAL */
- -TWO_TOKEN, 10, /* 4 = TWO */
- -THREE_TOKEN, -FOUR_TOKEN, /* 5 = THREE */
- 14, 16, /* 6 = HIGH_LOW */
- -DCT_VAL_CATEGORY1, -DCT_VAL_CATEGORY2, /* 7 = CAT_ONE */
- 18, 20, /* 8 = CAT_THREEFOUR */
- -DCT_VAL_CATEGORY3, -DCT_VAL_CATEGORY4, /* 9 = CAT_THREE */
- -DCT_VAL_CATEGORY5, -DCT_VAL_CATEGORY6 /* 10 = CAT_FIVE */
-};
-
-/* vp8_coef_encodings generated with:
- vp8_tokens_from_tree(vp8_coef_encodings, vp8_coef_tree);
-*/
-vp8_token vp8_coef_encodings[MAX_ENTROPY_TOKENS] =
-{
- {2, 2},
- {6, 3},
- {28, 5},
- {58, 6},
- {59, 6},
- {60, 6},
- {61, 6},
- {124, 7},
- {125, 7},
- {126, 7},
- {127, 7},
- {0, 1}
-};
-
-/* Trees for extra bits. Probabilities are constant and
- do not depend on previously encoded bits */
-
-static const vp8_prob Pcat1[] = { 159};
-static const vp8_prob Pcat2[] = { 165, 145};
-static const vp8_prob Pcat3[] = { 173, 148, 140};
-static const vp8_prob Pcat4[] = { 176, 155, 140, 135};
-static const vp8_prob Pcat5[] = { 180, 157, 141, 134, 130};
-static const vp8_prob Pcat6[] =
-{ 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129};
-
-
-/* tree index tables generated with:
-
- void init_bit_tree(vp8_tree_index *p, int n)
- {
- int i = 0;
-
- while (++i < n)
- {
- p[0] = p[1] = i << 1;
- p += 2;
- }
-
- p[0] = p[1] = 0;
- }
-
- void init_bit_trees()
- {
- init_bit_tree(cat1, 1);
- init_bit_tree(cat2, 2);
- init_bit_tree(cat3, 3);
- init_bit_tree(cat4, 4);
- init_bit_tree(cat5, 5);
- init_bit_tree(cat6, 11);
- }
-*/
-
-static const vp8_tree_index cat1[2] = { 0, 0 };
-static const vp8_tree_index cat2[4] = { 2, 2, 0, 0 };
-static const vp8_tree_index cat3[6] = { 2, 2, 4, 4, 0, 0 };
-static const vp8_tree_index cat4[8] = { 2, 2, 4, 4, 6, 6, 0, 0 };
-static const vp8_tree_index cat5[10] = { 2, 2, 4, 4, 6, 6, 8, 8, 0, 0 };
-static const vp8_tree_index cat6[22] = { 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12,
- 14, 14, 16, 16, 18, 18, 20, 20, 0, 0 };
-
-const vp8_extra_bit_struct vp8_extra_bits[12] =
-{
- { 0, 0, 0, 0},
- { 0, 0, 0, 1},
- { 0, 0, 0, 2},
- { 0, 0, 0, 3},
- { 0, 0, 0, 4},
- { cat1, Pcat1, 1, 5},
- { cat2, Pcat2, 2, 7},
- { cat3, Pcat3, 3, 11},
- { cat4, Pcat4, 4, 19},
- { cat5, Pcat5, 5, 35},
- { cat6, Pcat6, 11, 67},
- { 0, 0, 0, 0}
-};
-
-#include "default_coef_probs.h"
-
-void vp8_default_coef_probs(VP8_COMMON *pc)
-{
- memcpy(pc->fc.coef_probs, default_coef_probs, sizeof(default_coef_probs));
-}
-
diff --git a/thirdparty/libvpx/vp8/common/entropy.h b/thirdparty/libvpx/vp8/common/entropy.h
deleted file mode 100644
index a90bab4bac..0000000000
--- a/thirdparty/libvpx/vp8/common/entropy.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_ENTROPY_H_
-#define VP8_COMMON_ENTROPY_H_
-
-#include "treecoder.h"
-#include "blockd.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Coefficient token alphabet */
-
-#define ZERO_TOKEN 0 /* 0 Extra Bits 0+0 */
-#define ONE_TOKEN 1 /* 1 Extra Bits 0+1 */
-#define TWO_TOKEN 2 /* 2 Extra Bits 0+1 */
-#define THREE_TOKEN 3 /* 3 Extra Bits 0+1 */
-#define FOUR_TOKEN 4 /* 4 Extra Bits 0+1 */
-#define DCT_VAL_CATEGORY1 5 /* 5-6 Extra Bits 1+1 */
-#define DCT_VAL_CATEGORY2 6 /* 7-10 Extra Bits 2+1 */
-#define DCT_VAL_CATEGORY3 7 /* 11-18 Extra Bits 3+1 */
-#define DCT_VAL_CATEGORY4 8 /* 19-34 Extra Bits 4+1 */
-#define DCT_VAL_CATEGORY5 9 /* 35-66 Extra Bits 5+1 */
-#define DCT_VAL_CATEGORY6 10 /* 67+ Extra Bits 11+1 */
-#define DCT_EOB_TOKEN 11 /* EOB Extra Bits 0+0 */
-
-#define MAX_ENTROPY_TOKENS 12
-#define ENTROPY_NODES 11
-
-extern const vp8_tree_index vp8_coef_tree[];
-
-extern const struct vp8_token_struct vp8_coef_encodings[MAX_ENTROPY_TOKENS];
-
-typedef struct
-{
- vp8_tree_p tree;
- const vp8_prob *prob;
- int Len;
- int base_val;
-} vp8_extra_bit_struct;
-
-extern const vp8_extra_bit_struct vp8_extra_bits[12]; /* indexed by token value */
-
-#define PROB_UPDATE_BASELINE_COST 7
-
-#define MAX_PROB 255
-#define DCT_MAX_VALUE 2048
-
-
-/* Coefficients are predicted via a 3-dimensional probability table. */
-
-/* Outside dimension. 0 = Y no DC, 1 = Y2, 2 = UV, 3 = Y with DC */
-
-#define BLOCK_TYPES 4
-
-/* Middle dimension is a coarsening of the coefficient's
- position within the 4x4 DCT. */
-
-#define COEF_BANDS 8
-extern DECLARE_ALIGNED(16, const unsigned char, vp8_coef_bands[16]);
-
-/* Inside dimension is 3-valued measure of nearby complexity, that is,
- the extent to which nearby coefficients are nonzero. For the first
- coefficient (DC, unless block type is 0), we look at the (already encoded)
- blocks above and to the left of the current block. The context index is
- then the number (0,1,or 2) of these blocks having nonzero coefficients.
- After decoding a coefficient, the measure is roughly the size of the
- most recently decoded coefficient (0 for 0, 1 for 1, 2 for >1).
- Note that the intuitive meaning of this measure changes as coefficients
- are decoded, e.g., prior to the first token, a zero means that my neighbors
- are empty while, after the first token, because of the use of end-of-block,
- a zero means we just decoded a zero and hence guarantees that a non-zero
- coefficient will appear later in this block. However, this shift
- in meaning is perfectly OK because our context depends also on the
- coefficient band (and since zigzag positions 0, 1, and 2 are in
- distinct bands). */
-
-/*# define DC_TOKEN_CONTEXTS 3*/ /* 00, 0!0, !0!0 */
-# define PREV_COEF_CONTEXTS 3
-
-extern DECLARE_ALIGNED(16, const unsigned char, vp8_prev_token_class[MAX_ENTROPY_TOKENS]);
-
-extern const vp8_prob vp8_coef_update_probs [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [ENTROPY_NODES];
-
-
-struct VP8Common;
-void vp8_default_coef_probs(struct VP8Common *);
-
-extern DECLARE_ALIGNED(16, const int, vp8_default_zig_zag1d[16]);
-extern DECLARE_ALIGNED(16, const short, vp8_default_inv_zig_zag[16]);
-extern DECLARE_ALIGNED(16, const short, vp8_default_zig_zag_mask[16]);
-extern const int vp8_mb_feature_data_bits[MB_LVL_MAX];
-
-void vp8_coef_tree_initialize(void);
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_ENTROPY_H_
diff --git a/thirdparty/libvpx/vp8/common/entropymode.c b/thirdparty/libvpx/vp8/common/entropymode.c
deleted file mode 100644
index 8981a8d3c2..0000000000
--- a/thirdparty/libvpx/vp8/common/entropymode.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#define USE_PREBUILT_TABLES
-
-#include "entropymode.h"
-#include "entropy.h"
-#include "vpx_mem/vpx_mem.h"
-
-#include "vp8_entropymodedata.h"
-
-int vp8_mv_cont(const int_mv *l, const int_mv *a)
-{
- int lez = (l->as_int == 0);
- int aez = (a->as_int == 0);
- int lea = (l->as_int == a->as_int);
-
- if (lea && lez)
- return SUBMVREF_LEFT_ABOVE_ZED;
-
- if (lea)
- return SUBMVREF_LEFT_ABOVE_SAME;
-
- if (aez)
- return SUBMVREF_ABOVE_ZED;
-
- if (lez)
- return SUBMVREF_LEFT_ZED;
-
- return SUBMVREF_NORMAL;
-}
-
-static const vp8_prob sub_mv_ref_prob [VP8_SUBMVREFS-1] = { 180, 162, 25};
-
-const vp8_prob vp8_sub_mv_ref_prob2 [SUBMVREF_COUNT][VP8_SUBMVREFS-1] =
-{
- { 147, 136, 18 },
- { 106, 145, 1 },
- { 179, 121, 1 },
- { 223, 1 , 34 },
- { 208, 1 , 1 }
-};
-
-
-
-const vp8_mbsplit vp8_mbsplits [VP8_NUMMBSPLITS] =
-{
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 1, 1, 1, 1,
- 1, 1, 1, 1,
- },
- {
- 0, 0, 1, 1,
- 0, 0, 1, 1,
- 0, 0, 1, 1,
- 0, 0, 1, 1,
- },
- {
- 0, 0, 1, 1,
- 0, 0, 1, 1,
- 2, 2, 3, 3,
- 2, 2, 3, 3,
- },
- {
- 0, 1, 2, 3,
- 4, 5, 6, 7,
- 8, 9, 10, 11,
- 12, 13, 14, 15,
- }
-};
-
-const int vp8_mbsplit_count [VP8_NUMMBSPLITS] = { 2, 2, 4, 16};
-
-const vp8_prob vp8_mbsplit_probs [VP8_NUMMBSPLITS-1] = { 110, 111, 150};
-
-
-/* Array indices are identical to previously-existing INTRAMODECONTEXTNODES. */
-
-const vp8_tree_index vp8_bmode_tree[18] = /* INTRAMODECONTEXTNODE value */
-{
- -B_DC_PRED, 2, /* 0 = DC_NODE */
- -B_TM_PRED, 4, /* 1 = TM_NODE */
- -B_VE_PRED, 6, /* 2 = VE_NODE */
- 8, 12, /* 3 = COM_NODE */
- -B_HE_PRED, 10, /* 4 = HE_NODE */
- -B_RD_PRED, -B_VR_PRED, /* 5 = RD_NODE */
- -B_LD_PRED, 14, /* 6 = LD_NODE */
- -B_VL_PRED, 16, /* 7 = VL_NODE */
- -B_HD_PRED, -B_HU_PRED /* 8 = HD_NODE */
-};
-
-/* Again, these trees use the same probability indices as their
- explicitly-programmed predecessors. */
-
-const vp8_tree_index vp8_ymode_tree[8] =
-{
- -DC_PRED, 2,
- 4, 6,
- -V_PRED, -H_PRED,
- -TM_PRED, -B_PRED
-};
-
-const vp8_tree_index vp8_kf_ymode_tree[8] =
-{
- -B_PRED, 2,
- 4, 6,
- -DC_PRED, -V_PRED,
- -H_PRED, -TM_PRED
-};
-
-const vp8_tree_index vp8_uv_mode_tree[6] =
-{
- -DC_PRED, 2,
- -V_PRED, 4,
- -H_PRED, -TM_PRED
-};
-
-const vp8_tree_index vp8_mbsplit_tree[6] =
-{
- -3, 2,
- -2, 4,
- -0, -1
-};
-
-const vp8_tree_index vp8_mv_ref_tree[8] =
-{
- -ZEROMV, 2,
- -NEARESTMV, 4,
- -NEARMV, 6,
- -NEWMV, -SPLITMV
-};
-
-const vp8_tree_index vp8_sub_mv_ref_tree[6] =
-{
- -LEFT4X4, 2,
- -ABOVE4X4, 4,
- -ZERO4X4, -NEW4X4
-};
-
-const vp8_tree_index vp8_small_mvtree [14] =
-{
- 2, 8,
- 4, 6,
- -0, -1,
- -2, -3,
- 10, 12,
- -4, -5,
- -6, -7
-};
-
-void vp8_init_mbmode_probs(VP8_COMMON *x)
-{
- memcpy(x->fc.ymode_prob, vp8_ymode_prob, sizeof(vp8_ymode_prob));
- memcpy(x->fc.uv_mode_prob, vp8_uv_mode_prob, sizeof(vp8_uv_mode_prob));
- memcpy(x->fc.sub_mv_ref_prob, sub_mv_ref_prob, sizeof(sub_mv_ref_prob));
-}
-
-void vp8_default_bmode_probs(vp8_prob p [VP8_BINTRAMODES-1])
-{
- memcpy(p, vp8_bmode_prob, sizeof(vp8_bmode_prob));
-}
-
diff --git a/thirdparty/libvpx/vp8/common/entropymode.h b/thirdparty/libvpx/vp8/common/entropymode.h
deleted file mode 100644
index 81bdfc4b8b..0000000000
--- a/thirdparty/libvpx/vp8/common/entropymode.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_ENTROPYMODE_H_
-#define VP8_COMMON_ENTROPYMODE_H_
-
-#include "onyxc_int.h"
-#include "treecoder.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum
-{
- SUBMVREF_NORMAL,
- SUBMVREF_LEFT_ZED,
- SUBMVREF_ABOVE_ZED,
- SUBMVREF_LEFT_ABOVE_SAME,
- SUBMVREF_LEFT_ABOVE_ZED
-} sumvfref_t;
-
-typedef int vp8_mbsplit[16];
-
-#define VP8_NUMMBSPLITS 4
-
-extern const vp8_mbsplit vp8_mbsplits [VP8_NUMMBSPLITS];
-
-extern const int vp8_mbsplit_count [VP8_NUMMBSPLITS]; /* # of subsets */
-
-extern const vp8_prob vp8_mbsplit_probs [VP8_NUMMBSPLITS-1];
-
-extern int vp8_mv_cont(const int_mv *l, const int_mv *a);
-#define SUBMVREF_COUNT 5
-extern const vp8_prob vp8_sub_mv_ref_prob2 [SUBMVREF_COUNT][VP8_SUBMVREFS-1];
-
-
-extern const unsigned int vp8_kf_default_bmode_counts [VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES];
-
-
-extern const vp8_tree_index vp8_bmode_tree[];
-
-extern const vp8_tree_index vp8_ymode_tree[];
-extern const vp8_tree_index vp8_kf_ymode_tree[];
-extern const vp8_tree_index vp8_uv_mode_tree[];
-
-extern const vp8_tree_index vp8_mbsplit_tree[];
-extern const vp8_tree_index vp8_mv_ref_tree[];
-extern const vp8_tree_index vp8_sub_mv_ref_tree[];
-
-extern const struct vp8_token_struct vp8_bmode_encodings[VP8_BINTRAMODES];
-extern const struct vp8_token_struct vp8_ymode_encodings[VP8_YMODES];
-extern const struct vp8_token_struct vp8_kf_ymode_encodings[VP8_YMODES];
-extern const struct vp8_token_struct vp8_uv_mode_encodings[VP8_UV_MODES];
-extern const struct vp8_token_struct vp8_mbsplit_encodings[VP8_NUMMBSPLITS];
-
-/* Inter mode values do not start at zero */
-
-extern const struct vp8_token_struct vp8_mv_ref_encoding_array[VP8_MVREFS];
-extern const struct vp8_token_struct vp8_sub_mv_ref_encoding_array[VP8_SUBMVREFS];
-
-extern const vp8_tree_index vp8_small_mvtree[];
-
-extern const struct vp8_token_struct vp8_small_mvencodings[8];
-
-/* Key frame default mode probs */
-extern const vp8_prob vp8_kf_bmode_prob[VP8_BINTRAMODES][VP8_BINTRAMODES]
-[VP8_BINTRAMODES-1];
-extern const vp8_prob vp8_kf_uv_mode_prob[VP8_UV_MODES-1];
-extern const vp8_prob vp8_kf_ymode_prob[VP8_YMODES-1];
-
-void vp8_init_mbmode_probs(VP8_COMMON *x);
-void vp8_default_bmode_probs(vp8_prob dest [VP8_BINTRAMODES-1]);
-void vp8_kf_default_bmode_probs(vp8_prob dest [VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES-1]);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_ENTROPYMODE_H_
diff --git a/thirdparty/libvpx/vp8/common/entropymv.c b/thirdparty/libvpx/vp8/common/entropymv.c
deleted file mode 100644
index e5df1f0955..0000000000
--- a/thirdparty/libvpx/vp8/common/entropymv.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "entropymv.h"
-
-const MV_CONTEXT vp8_mv_update_probs[2] =
-{
- {{
- 237,
- 246,
- 253, 253, 254, 254, 254, 254, 254,
- 254, 254, 254, 254, 254, 250, 250, 252, 254, 254
- }},
- {{
- 231,
- 243,
- 245, 253, 254, 254, 254, 254, 254,
- 254, 254, 254, 254, 254, 251, 251, 254, 254, 254
- }}
-};
-const MV_CONTEXT vp8_default_mv_context[2] =
-{
- {{
- /* row */
- 162, /* is short */
- 128, /* sign */
- 225, 146, 172, 147, 214, 39, 156, /* short tree */
- 128, 129, 132, 75, 145, 178, 206, 239, 254, 254 /* long bits */
- }},
-
-
-
- {{
- /* same for column */
- 164, /* is short */
- 128,
- 204, 170, 119, 235, 140, 230, 228,
- 128, 130, 130, 74, 148, 180, 203, 236, 254, 254 /* long bits */
-
- }}
-};
diff --git a/thirdparty/libvpx/vp8/common/entropymv.h b/thirdparty/libvpx/vp8/common/entropymv.h
deleted file mode 100644
index 42840d58ad..0000000000
--- a/thirdparty/libvpx/vp8/common/entropymv.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_ENTROPYMV_H_
-#define VP8_COMMON_ENTROPYMV_H_
-
-#include "treecoder.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum
-{
- mv_max = 1023, /* max absolute value of a MV component */
- MVvals = (2 * mv_max) + 1, /* # possible values "" */
- mvfp_max = 255, /* max absolute value of a full pixel MV component */
- MVfpvals = (2 * mvfp_max) +1, /* # possible full pixel MV values */
-
- mvlong_width = 10, /* Large MVs have 9 bit magnitudes */
- mvnum_short = 8, /* magnitudes 0 through 7 */
-
- /* probability offsets for coding each MV component */
-
- mvpis_short = 0, /* short (<= 7) vs long (>= 8) */
- MVPsign, /* sign for non-zero */
- MVPshort, /* 8 short values = 7-position tree */
-
- MVPbits = MVPshort + mvnum_short - 1, /* mvlong_width long value bits */
- MVPcount = MVPbits + mvlong_width /* (with independent probabilities) */
-};
-
-typedef struct mv_context
-{
- vp8_prob prob[MVPcount]; /* often come in row, col pairs */
-} MV_CONTEXT;
-
-extern const MV_CONTEXT vp8_mv_update_probs[2], vp8_default_mv_context[2];
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_ENTROPYMV_H_
diff --git a/thirdparty/libvpx/vp8/common/extend.c b/thirdparty/libvpx/vp8/common/extend.c
deleted file mode 100644
index 2d938ad782..0000000000
--- a/thirdparty/libvpx/vp8/common/extend.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "extend.h"
-#include "vpx_mem/vpx_mem.h"
-
-
-static void copy_and_extend_plane
-(
- unsigned char *s, /* source */
- int sp, /* source pitch */
- unsigned char *d, /* destination */
- int dp, /* destination pitch */
- int h, /* height */
- int w, /* width */
- int et, /* extend top border */
- int el, /* extend left border */
- int eb, /* extend bottom border */
- int er /* extend right border */
-)
-{
- int i;
- unsigned char *src_ptr1, *src_ptr2;
- unsigned char *dest_ptr1, *dest_ptr2;
- int linesize;
-
- /* copy the left and right most columns out */
- src_ptr1 = s;
- src_ptr2 = s + w - 1;
- dest_ptr1 = d - el;
- dest_ptr2 = d + w;
-
- for (i = 0; i < h; i++)
- {
- memset(dest_ptr1, src_ptr1[0], el);
- memcpy(dest_ptr1 + el, src_ptr1, w);
- memset(dest_ptr2, src_ptr2[0], er);
- src_ptr1 += sp;
- src_ptr2 += sp;
- dest_ptr1 += dp;
- dest_ptr2 += dp;
- }
-
- /* Now copy the top and bottom lines into each line of the respective
- * borders
- */
- src_ptr1 = d - el;
- src_ptr2 = d + dp * (h - 1) - el;
- dest_ptr1 = d + dp * (-et) - el;
- dest_ptr2 = d + dp * (h) - el;
- linesize = el + er + w;
-
- for (i = 0; i < et; i++)
- {
- memcpy(dest_ptr1, src_ptr1, linesize);
- dest_ptr1 += dp;
- }
-
- for (i = 0; i < eb; i++)
- {
- memcpy(dest_ptr2, src_ptr2, linesize);
- dest_ptr2 += dp;
- }
-}
-
-
-void vp8_copy_and_extend_frame(YV12_BUFFER_CONFIG *src,
- YV12_BUFFER_CONFIG *dst)
-{
- int et = dst->border;
- int el = dst->border;
- int eb = dst->border + dst->y_height - src->y_height;
- int er = dst->border + dst->y_width - src->y_width;
-
- copy_and_extend_plane(src->y_buffer, src->y_stride,
- dst->y_buffer, dst->y_stride,
- src->y_height, src->y_width,
- et, el, eb, er);
-
- et = dst->border >> 1;
- el = dst->border >> 1;
- eb = (dst->border >> 1) + dst->uv_height - src->uv_height;
- er = (dst->border >> 1) + dst->uv_width - src->uv_width;
-
- copy_and_extend_plane(src->u_buffer, src->uv_stride,
- dst->u_buffer, dst->uv_stride,
- src->uv_height, src->uv_width,
- et, el, eb, er);
-
- copy_and_extend_plane(src->v_buffer, src->uv_stride,
- dst->v_buffer, dst->uv_stride,
- src->uv_height, src->uv_width,
- et, el, eb, er);
-}
-
-
-void vp8_copy_and_extend_frame_with_rect(YV12_BUFFER_CONFIG *src,
- YV12_BUFFER_CONFIG *dst,
- int srcy, int srcx,
- int srch, int srcw)
-{
- int et = dst->border;
- int el = dst->border;
- int eb = dst->border + dst->y_height - src->y_height;
- int er = dst->border + dst->y_width - src->y_width;
- int src_y_offset = srcy * src->y_stride + srcx;
- int dst_y_offset = srcy * dst->y_stride + srcx;
- int src_uv_offset = ((srcy * src->uv_stride) >> 1) + (srcx >> 1);
- int dst_uv_offset = ((srcy * dst->uv_stride) >> 1) + (srcx >> 1);
-
- /* If the side is not touching the bounder then don't extend. */
- if (srcy)
- et = 0;
- if (srcx)
- el = 0;
- if (srcy + srch != src->y_height)
- eb = 0;
- if (srcx + srcw != src->y_width)
- er = 0;
-
- copy_and_extend_plane(src->y_buffer + src_y_offset,
- src->y_stride,
- dst->y_buffer + dst_y_offset,
- dst->y_stride,
- srch, srcw,
- et, el, eb, er);
-
- et = (et + 1) >> 1;
- el = (el + 1) >> 1;
- eb = (eb + 1) >> 1;
- er = (er + 1) >> 1;
- srch = (srch + 1) >> 1;
- srcw = (srcw + 1) >> 1;
-
- copy_and_extend_plane(src->u_buffer + src_uv_offset,
- src->uv_stride,
- dst->u_buffer + dst_uv_offset,
- dst->uv_stride,
- srch, srcw,
- et, el, eb, er);
-
- copy_and_extend_plane(src->v_buffer + src_uv_offset,
- src->uv_stride,
- dst->v_buffer + dst_uv_offset,
- dst->uv_stride,
- srch, srcw,
- et, el, eb, er);
-}
-
-
-/* note the extension is only for the last row, for intra prediction purpose */
-void vp8_extend_mb_row(YV12_BUFFER_CONFIG *ybf,
- unsigned char *YPtr,
- unsigned char *UPtr,
- unsigned char *VPtr)
-{
- int i;
-
- YPtr += ybf->y_stride * 14;
- UPtr += ybf->uv_stride * 6;
- VPtr += ybf->uv_stride * 6;
-
- for (i = 0; i < 4; i++)
- {
- YPtr[i] = YPtr[-1];
- UPtr[i] = UPtr[-1];
- VPtr[i] = VPtr[-1];
- }
-
- YPtr += ybf->y_stride;
- UPtr += ybf->uv_stride;
- VPtr += ybf->uv_stride;
-
- for (i = 0; i < 4; i++)
- {
- YPtr[i] = YPtr[-1];
- UPtr[i] = UPtr[-1];
- VPtr[i] = VPtr[-1];
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/extend.h b/thirdparty/libvpx/vp8/common/extend.h
deleted file mode 100644
index 068f4ac523..0000000000
--- a/thirdparty/libvpx/vp8/common/extend.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_EXTEND_H_
-#define VP8_COMMON_EXTEND_H_
-
-#include "vpx_scale/yv12config.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_extend_mb_row(YV12_BUFFER_CONFIG *ybf, unsigned char *YPtr, unsigned char *UPtr, unsigned char *VPtr);
-void vp8_copy_and_extend_frame(YV12_BUFFER_CONFIG *src,
- YV12_BUFFER_CONFIG *dst);
-void vp8_copy_and_extend_frame_with_rect(YV12_BUFFER_CONFIG *src,
- YV12_BUFFER_CONFIG *dst,
- int srcy, int srcx,
- int srch, int srcw);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_EXTEND_H_
diff --git a/thirdparty/libvpx/vp8/common/filter.c b/thirdparty/libvpx/vp8/common/filter.c
deleted file mode 100644
index 84c608effa..0000000000
--- a/thirdparty/libvpx/vp8/common/filter.c
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "filter.h"
-#include "./vp8_rtcd.h"
-
-DECLARE_ALIGNED(16, const short, vp8_bilinear_filters[8][2]) =
-{
- { 128, 0 },
- { 112, 16 },
- { 96, 32 },
- { 80, 48 },
- { 64, 64 },
- { 48, 80 },
- { 32, 96 },
- { 16, 112 }
-};
-
-DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters[8][6]) =
-{
-
- { 0, 0, 128, 0, 0, 0 }, /* note that 1/8 pel positions are just as per alpha -0.5 bicubic */
- { 0, -6, 123, 12, -1, 0 },
- { 2, -11, 108, 36, -8, 1 }, /* New 1/4 pel 6 tap filter */
- { 0, -9, 93, 50, -6, 0 },
- { 3, -16, 77, 77, -16, 3 }, /* New 1/2 pel 6 tap filter */
- { 0, -6, 50, 93, -9, 0 },
- { 1, -8, 36, 108, -11, 2 }, /* New 1/4 pel 6 tap filter */
- { 0, -1, 12, 123, -6, 0 },
-};
-
-static void filter_block2d_first_pass
-(
- unsigned char *src_ptr,
- int *output_ptr,
- unsigned int src_pixels_per_line,
- unsigned int pixel_step,
- unsigned int output_height,
- unsigned int output_width,
- const short *vp8_filter
-)
-{
- unsigned int i, j;
- int Temp;
-
- for (i = 0; i < output_height; i++)
- {
- for (j = 0; j < output_width; j++)
- {
- Temp = ((int)src_ptr[-2 * (int)pixel_step] * vp8_filter[0]) +
- ((int)src_ptr[-1 * (int)pixel_step] * vp8_filter[1]) +
- ((int)src_ptr[0] * vp8_filter[2]) +
- ((int)src_ptr[pixel_step] * vp8_filter[3]) +
- ((int)src_ptr[2*pixel_step] * vp8_filter[4]) +
- ((int)src_ptr[3*pixel_step] * vp8_filter[5]) +
- (VP8_FILTER_WEIGHT >> 1); /* Rounding */
-
- /* Normalize back to 0-255 */
- Temp = Temp >> VP8_FILTER_SHIFT;
-
- if (Temp < 0)
- Temp = 0;
- else if (Temp > 255)
- Temp = 255;
-
- output_ptr[j] = Temp;
- src_ptr++;
- }
-
- /* Next row... */
- src_ptr += src_pixels_per_line - output_width;
- output_ptr += output_width;
- }
-}
-
-static void filter_block2d_second_pass
-(
- int *src_ptr,
- unsigned char *output_ptr,
- int output_pitch,
- unsigned int src_pixels_per_line,
- unsigned int pixel_step,
- unsigned int output_height,
- unsigned int output_width,
- const short *vp8_filter
-)
-{
- unsigned int i, j;
- int Temp;
-
- for (i = 0; i < output_height; i++)
- {
- for (j = 0; j < output_width; j++)
- {
- /* Apply filter */
- Temp = ((int)src_ptr[-2 * (int)pixel_step] * vp8_filter[0]) +
- ((int)src_ptr[-1 * (int)pixel_step] * vp8_filter[1]) +
- ((int)src_ptr[0] * vp8_filter[2]) +
- ((int)src_ptr[pixel_step] * vp8_filter[3]) +
- ((int)src_ptr[2*pixel_step] * vp8_filter[4]) +
- ((int)src_ptr[3*pixel_step] * vp8_filter[5]) +
- (VP8_FILTER_WEIGHT >> 1); /* Rounding */
-
- /* Normalize back to 0-255 */
- Temp = Temp >> VP8_FILTER_SHIFT;
-
- if (Temp < 0)
- Temp = 0;
- else if (Temp > 255)
- Temp = 255;
-
- output_ptr[j] = (unsigned char)Temp;
- src_ptr++;
- }
-
- /* Start next row */
- src_ptr += src_pixels_per_line - output_width;
- output_ptr += output_pitch;
- }
-}
-
-
-static void filter_block2d
-(
- unsigned char *src_ptr,
- unsigned char *output_ptr,
- unsigned int src_pixels_per_line,
- int output_pitch,
- const short *HFilter,
- const short *VFilter
-)
-{
- int FData[9*4]; /* Temp data buffer used in filtering */
-
- /* First filter 1-D horizontally... */
- filter_block2d_first_pass(src_ptr - (2 * src_pixels_per_line), FData, src_pixels_per_line, 1, 9, 4, HFilter);
-
- /* then filter verticaly... */
- filter_block2d_second_pass(FData + 8, output_ptr, output_pitch, 4, 4, 4, 4, VFilter);
-}
-
-
-void vp8_sixtap_predict4x4_c
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- const short *HFilter;
- const short *VFilter;
-
- HFilter = vp8_sub_pel_filters[xoffset]; /* 6 tap */
- VFilter = vp8_sub_pel_filters[yoffset]; /* 6 tap */
-
- filter_block2d(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter);
-}
-void vp8_sixtap_predict8x8_c
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- const short *HFilter;
- const short *VFilter;
- int FData[13*16]; /* Temp data buffer used in filtering */
-
- HFilter = vp8_sub_pel_filters[xoffset]; /* 6 tap */
- VFilter = vp8_sub_pel_filters[yoffset]; /* 6 tap */
-
- /* First filter 1-D horizontally... */
- filter_block2d_first_pass(src_ptr - (2 * src_pixels_per_line), FData, src_pixels_per_line, 1, 13, 8, HFilter);
-
-
- /* then filter verticaly... */
- filter_block2d_second_pass(FData + 16, dst_ptr, dst_pitch, 8, 8, 8, 8, VFilter);
-
-}
-
-void vp8_sixtap_predict8x4_c
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- const short *HFilter;
- const short *VFilter;
- int FData[13*16]; /* Temp data buffer used in filtering */
-
- HFilter = vp8_sub_pel_filters[xoffset]; /* 6 tap */
- VFilter = vp8_sub_pel_filters[yoffset]; /* 6 tap */
-
- /* First filter 1-D horizontally... */
- filter_block2d_first_pass(src_ptr - (2 * src_pixels_per_line), FData, src_pixels_per_line, 1, 9, 8, HFilter);
-
-
- /* then filter verticaly... */
- filter_block2d_second_pass(FData + 16, dst_ptr, dst_pitch, 8, 8, 4, 8, VFilter);
-
-}
-
-void vp8_sixtap_predict16x16_c
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- const short *HFilter;
- const short *VFilter;
- int FData[21*24]; /* Temp data buffer used in filtering */
-
-
- HFilter = vp8_sub_pel_filters[xoffset]; /* 6 tap */
- VFilter = vp8_sub_pel_filters[yoffset]; /* 6 tap */
-
- /* First filter 1-D horizontally... */
- filter_block2d_first_pass(src_ptr - (2 * src_pixels_per_line), FData, src_pixels_per_line, 1, 21, 16, HFilter);
-
- /* then filter verticaly... */
- filter_block2d_second_pass(FData + 32, dst_ptr, dst_pitch, 16, 16, 16, 16, VFilter);
-
-}
-
-
-/****************************************************************************
- *
- * ROUTINE : filter_block2d_bil_first_pass
- *
- * INPUTS : UINT8 *src_ptr : Pointer to source block.
- * UINT32 src_stride : Stride of source block.
- * UINT32 height : Block height.
- * UINT32 width : Block width.
- * INT32 *vp8_filter : Array of 2 bi-linear filter taps.
- *
- * OUTPUTS : INT32 *dst_ptr : Pointer to filtered block.
- *
- * RETURNS : void
- *
- * FUNCTION : Applies a 1-D 2-tap bi-linear filter to the source block
- * in the horizontal direction to produce the filtered output
- * block. Used to implement first-pass of 2-D separable filter.
- *
- * SPECIAL NOTES : Produces INT32 output to retain precision for next pass.
- * Two filter taps should sum to VP8_FILTER_WEIGHT.
- *
- ****************************************************************************/
-static void filter_block2d_bil_first_pass
-(
- unsigned char *src_ptr,
- unsigned short *dst_ptr,
- unsigned int src_stride,
- unsigned int height,
- unsigned int width,
- const short *vp8_filter
-)
-{
- unsigned int i, j;
-
- for (i = 0; i < height; i++)
- {
- for (j = 0; j < width; j++)
- {
- /* Apply bilinear filter */
- dst_ptr[j] = (((int)src_ptr[0] * vp8_filter[0]) +
- ((int)src_ptr[1] * vp8_filter[1]) +
- (VP8_FILTER_WEIGHT / 2)) >> VP8_FILTER_SHIFT;
- src_ptr++;
- }
-
- /* Next row... */
- src_ptr += src_stride - width;
- dst_ptr += width;
- }
-}
-
-/****************************************************************************
- *
- * ROUTINE : filter_block2d_bil_second_pass
- *
- * INPUTS : INT32 *src_ptr : Pointer to source block.
- * UINT32 dst_pitch : Destination block pitch.
- * UINT32 height : Block height.
- * UINT32 width : Block width.
- * INT32 *vp8_filter : Array of 2 bi-linear filter taps.
- *
- * OUTPUTS : UINT16 *dst_ptr : Pointer to filtered block.
- *
- * RETURNS : void
- *
- * FUNCTION : Applies a 1-D 2-tap bi-linear filter to the source block
- * in the vertical direction to produce the filtered output
- * block. Used to implement second-pass of 2-D separable filter.
- *
- * SPECIAL NOTES : Requires 32-bit input as produced by filter_block2d_bil_first_pass.
- * Two filter taps should sum to VP8_FILTER_WEIGHT.
- *
- ****************************************************************************/
-static void filter_block2d_bil_second_pass
-(
- unsigned short *src_ptr,
- unsigned char *dst_ptr,
- int dst_pitch,
- unsigned int height,
- unsigned int width,
- const short *vp8_filter
-)
-{
- unsigned int i, j;
- int Temp;
-
- for (i = 0; i < height; i++)
- {
- for (j = 0; j < width; j++)
- {
- /* Apply filter */
- Temp = ((int)src_ptr[0] * vp8_filter[0]) +
- ((int)src_ptr[width] * vp8_filter[1]) +
- (VP8_FILTER_WEIGHT / 2);
- dst_ptr[j] = (unsigned int)(Temp >> VP8_FILTER_SHIFT);
- src_ptr++;
- }
-
- /* Next row... */
- dst_ptr += dst_pitch;
- }
-}
-
-
-/****************************************************************************
- *
- * ROUTINE : filter_block2d_bil
- *
- * INPUTS : UINT8 *src_ptr : Pointer to source block.
- * UINT32 src_pitch : Stride of source block.
- * UINT32 dst_pitch : Stride of destination block.
- * INT32 *HFilter : Array of 2 horizontal filter taps.
- * INT32 *VFilter : Array of 2 vertical filter taps.
- * INT32 Width : Block width
- * INT32 Height : Block height
- *
- * OUTPUTS : UINT16 *dst_ptr : Pointer to filtered block.
- *
- * RETURNS : void
- *
- * FUNCTION : 2-D filters an input block by applying a 2-tap
- * bi-linear filter horizontally followed by a 2-tap
- * bi-linear filter vertically on the result.
- *
- * SPECIAL NOTES : The largest block size can be handled here is 16x16
- *
- ****************************************************************************/
-static void filter_block2d_bil
-(
- unsigned char *src_ptr,
- unsigned char *dst_ptr,
- unsigned int src_pitch,
- unsigned int dst_pitch,
- const short *HFilter,
- const short *VFilter,
- int Width,
- int Height
-)
-{
-
- unsigned short FData[17*16]; /* Temp data buffer used in filtering */
-
- /* First filter 1-D horizontally... */
- filter_block2d_bil_first_pass(src_ptr, FData, src_pitch, Height + 1, Width, HFilter);
-
- /* then 1-D vertically... */
- filter_block2d_bil_second_pass(FData, dst_ptr, dst_pitch, Height, Width, VFilter);
-}
-
-
-void vp8_bilinear_predict4x4_c
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- const short *HFilter;
- const short *VFilter;
-
- HFilter = vp8_bilinear_filters[xoffset];
- VFilter = vp8_bilinear_filters[yoffset];
-#if 0
- {
- int i;
- unsigned char temp1[16];
- unsigned char temp2[16];
-
- bilinear_predict4x4_mmx(src_ptr, src_pixels_per_line, xoffset, yoffset, temp1, 4);
- filter_block2d_bil(src_ptr, temp2, src_pixels_per_line, 4, HFilter, VFilter, 4, 4);
-
- for (i = 0; i < 16; i++)
- {
- if (temp1[i] != temp2[i])
- {
- bilinear_predict4x4_mmx(src_ptr, src_pixels_per_line, xoffset, yoffset, temp1, 4);
- filter_block2d_bil(src_ptr, temp2, src_pixels_per_line, 4, HFilter, VFilter, 4, 4);
- }
- }
- }
-#endif
- filter_block2d_bil(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 4, 4);
-
-}
-
-void vp8_bilinear_predict8x8_c
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- const short *HFilter;
- const short *VFilter;
-
- HFilter = vp8_bilinear_filters[xoffset];
- VFilter = vp8_bilinear_filters[yoffset];
-
- filter_block2d_bil(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 8, 8);
-
-}
-
-void vp8_bilinear_predict8x4_c
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- const short *HFilter;
- const short *VFilter;
-
- HFilter = vp8_bilinear_filters[xoffset];
- VFilter = vp8_bilinear_filters[yoffset];
-
- filter_block2d_bil(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 8, 4);
-
-}
-
-void vp8_bilinear_predict16x16_c
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- const short *HFilter;
- const short *VFilter;
-
- HFilter = vp8_bilinear_filters[xoffset];
- VFilter = vp8_bilinear_filters[yoffset];
-
- filter_block2d_bil(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 16, 16);
-}
diff --git a/thirdparty/libvpx/vp8/common/filter.h b/thirdparty/libvpx/vp8/common/filter.h
deleted file mode 100644
index cfba775fce..0000000000
--- a/thirdparty/libvpx/vp8/common/filter.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2011 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_FILTER_H_
-#define VP8_COMMON_FILTER_H_
-
-#include "vpx_ports/mem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define BLOCK_HEIGHT_WIDTH 4
-#define VP8_FILTER_WEIGHT 128
-#define VP8_FILTER_SHIFT 7
-
-extern DECLARE_ALIGNED(16, const short, vp8_bilinear_filters[8][2]);
-extern DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters[8][6]);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_FILTER_H_
diff --git a/thirdparty/libvpx/vp8/common/findnearmv.c b/thirdparty/libvpx/vp8/common/findnearmv.c
deleted file mode 100644
index e8ee40f56c..0000000000
--- a/thirdparty/libvpx/vp8/common/findnearmv.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "findnearmv.h"
-
-const unsigned char vp8_mbsplit_offset[4][16] = {
- { 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 0, 2, 8, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
-};
-
-/* Predict motion vectors using those from already-decoded nearby blocks.
- Note that we only consider one 4x4 subblock from each candidate 16x16
- macroblock. */
-void vp8_find_near_mvs
-(
- MACROBLOCKD *xd,
- const MODE_INFO *here,
- int_mv *nearest,
- int_mv *nearby,
- int_mv *best_mv,
- int cnt[4],
- int refframe,
- int *ref_frame_sign_bias
-)
-{
- const MODE_INFO *above = here - xd->mode_info_stride;
- const MODE_INFO *left = here - 1;
- const MODE_INFO *aboveleft = above - 1;
- int_mv near_mvs[4];
- int_mv *mv = near_mvs;
- int *cntx = cnt;
- enum {CNT_INTRA, CNT_NEAREST, CNT_NEAR, CNT_SPLITMV};
-
- /* Zero accumulators */
- mv[0].as_int = mv[1].as_int = mv[2].as_int = 0;
- cnt[0] = cnt[1] = cnt[2] = cnt[3] = 0;
-
- /* Process above */
- if (above->mbmi.ref_frame != INTRA_FRAME)
- {
- if (above->mbmi.mv.as_int)
- {
- (++mv)->as_int = above->mbmi.mv.as_int;
- mv_bias(ref_frame_sign_bias[above->mbmi.ref_frame], refframe, mv, ref_frame_sign_bias);
- ++cntx;
- }
-
- *cntx += 2;
- }
-
- /* Process left */
- if (left->mbmi.ref_frame != INTRA_FRAME)
- {
- if (left->mbmi.mv.as_int)
- {
- int_mv this_mv;
-
- this_mv.as_int = left->mbmi.mv.as_int;
- mv_bias(ref_frame_sign_bias[left->mbmi.ref_frame], refframe, &this_mv, ref_frame_sign_bias);
-
- if (this_mv.as_int != mv->as_int)
- {
- (++mv)->as_int = this_mv.as_int;
- ++cntx;
- }
-
- *cntx += 2;
- }
- else
- cnt[CNT_INTRA] += 2;
- }
-
- /* Process above left */
- if (aboveleft->mbmi.ref_frame != INTRA_FRAME)
- {
- if (aboveleft->mbmi.mv.as_int)
- {
- int_mv this_mv;
-
- this_mv.as_int = aboveleft->mbmi.mv.as_int;
- mv_bias(ref_frame_sign_bias[aboveleft->mbmi.ref_frame], refframe, &this_mv, ref_frame_sign_bias);
-
- if (this_mv.as_int != mv->as_int)
- {
- (++mv)->as_int = this_mv.as_int;
- ++cntx;
- }
-
- *cntx += 1;
- }
- else
- cnt[CNT_INTRA] += 1;
- }
-
- /* If we have three distinct MV's ... */
- if (cnt[CNT_SPLITMV])
- {
- /* See if above-left MV can be merged with NEAREST */
- if (mv->as_int == near_mvs[CNT_NEAREST].as_int)
- cnt[CNT_NEAREST] += 1;
- }
-
- cnt[CNT_SPLITMV] = ((above->mbmi.mode == SPLITMV)
- + (left->mbmi.mode == SPLITMV)) * 2
- + (aboveleft->mbmi.mode == SPLITMV);
-
- /* Swap near and nearest if necessary */
- if (cnt[CNT_NEAR] > cnt[CNT_NEAREST])
- {
- int tmp;
- tmp = cnt[CNT_NEAREST];
- cnt[CNT_NEAREST] = cnt[CNT_NEAR];
- cnt[CNT_NEAR] = tmp;
- tmp = near_mvs[CNT_NEAREST].as_int;
- near_mvs[CNT_NEAREST].as_int = near_mvs[CNT_NEAR].as_int;
- near_mvs[CNT_NEAR].as_int = tmp;
- }
-
- /* Use near_mvs[0] to store the "best" MV */
- if (cnt[CNT_NEAREST] >= cnt[CNT_INTRA])
- near_mvs[CNT_INTRA] = near_mvs[CNT_NEAREST];
-
- /* Set up return values */
- best_mv->as_int = near_mvs[0].as_int;
- nearest->as_int = near_mvs[CNT_NEAREST].as_int;
- nearby->as_int = near_mvs[CNT_NEAR].as_int;
-}
-
-
-static void invert_and_clamp_mvs(int_mv *inv, int_mv *src, MACROBLOCKD *xd)
-{
- inv->as_mv.row = src->as_mv.row * -1;
- inv->as_mv.col = src->as_mv.col * -1;
- vp8_clamp_mv2(inv, xd);
- vp8_clamp_mv2(src, xd);
-}
-
-
-int vp8_find_near_mvs_bias
-(
- MACROBLOCKD *xd,
- const MODE_INFO *here,
- int_mv mode_mv_sb[2][MB_MODE_COUNT],
- int_mv best_mv_sb[2],
- int cnt[4],
- int refframe,
- int *ref_frame_sign_bias
-)
-{
- int sign_bias = ref_frame_sign_bias[refframe];
-
- vp8_find_near_mvs(xd,
- here,
- &mode_mv_sb[sign_bias][NEARESTMV],
- &mode_mv_sb[sign_bias][NEARMV],
- &best_mv_sb[sign_bias],
- cnt,
- refframe,
- ref_frame_sign_bias);
-
- invert_and_clamp_mvs(&mode_mv_sb[!sign_bias][NEARESTMV],
- &mode_mv_sb[sign_bias][NEARESTMV], xd);
- invert_and_clamp_mvs(&mode_mv_sb[!sign_bias][NEARMV],
- &mode_mv_sb[sign_bias][NEARMV], xd);
- invert_and_clamp_mvs(&best_mv_sb[!sign_bias],
- &best_mv_sb[sign_bias], xd);
-
- return sign_bias;
-}
-
-
-vp8_prob *vp8_mv_ref_probs(
- vp8_prob p[VP8_MVREFS-1], const int near_mv_ref_ct[4]
-)
-{
- p[0] = vp8_mode_contexts [near_mv_ref_ct[0]] [0];
- p[1] = vp8_mode_contexts [near_mv_ref_ct[1]] [1];
- p[2] = vp8_mode_contexts [near_mv_ref_ct[2]] [2];
- p[3] = vp8_mode_contexts [near_mv_ref_ct[3]] [3];
- /*p[3] = vp8_mode_contexts [near_mv_ref_ct[1] + near_mv_ref_ct[2] + near_mv_ref_ct[3]] [3];*/
- return p;
-}
-
diff --git a/thirdparty/libvpx/vp8/common/findnearmv.h b/thirdparty/libvpx/vp8/common/findnearmv.h
deleted file mode 100644
index 472a7b5d8d..0000000000
--- a/thirdparty/libvpx/vp8/common/findnearmv.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_FINDNEARMV_H_
-#define VP8_COMMON_FINDNEARMV_H_
-
-#include "./vpx_config.h"
-#include "mv.h"
-#include "blockd.h"
-#include "modecont.h"
-#include "treecoder.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-static INLINE void mv_bias(int refmb_ref_frame_sign_bias, int refframe,
- int_mv *mvp, const int *ref_frame_sign_bias)
-{
- if (refmb_ref_frame_sign_bias != ref_frame_sign_bias[refframe])
- {
- mvp->as_mv.row *= -1;
- mvp->as_mv.col *= -1;
- }
-}
-
-#define LEFT_TOP_MARGIN (16 << 3)
-#define RIGHT_BOTTOM_MARGIN (16 << 3)
-static INLINE void vp8_clamp_mv2(int_mv *mv, const MACROBLOCKD *xd)
-{
- if (mv->as_mv.col < (xd->mb_to_left_edge - LEFT_TOP_MARGIN))
- mv->as_mv.col = xd->mb_to_left_edge - LEFT_TOP_MARGIN;
- else if (mv->as_mv.col > xd->mb_to_right_edge + RIGHT_BOTTOM_MARGIN)
- mv->as_mv.col = xd->mb_to_right_edge + RIGHT_BOTTOM_MARGIN;
-
- if (mv->as_mv.row < (xd->mb_to_top_edge - LEFT_TOP_MARGIN))
- mv->as_mv.row = xd->mb_to_top_edge - LEFT_TOP_MARGIN;
- else if (mv->as_mv.row > xd->mb_to_bottom_edge + RIGHT_BOTTOM_MARGIN)
- mv->as_mv.row = xd->mb_to_bottom_edge + RIGHT_BOTTOM_MARGIN;
-}
-
-static INLINE void vp8_clamp_mv(int_mv *mv, int mb_to_left_edge,
- int mb_to_right_edge, int mb_to_top_edge,
- int mb_to_bottom_edge)
-{
- mv->as_mv.col = (mv->as_mv.col < mb_to_left_edge) ?
- mb_to_left_edge : mv->as_mv.col;
- mv->as_mv.col = (mv->as_mv.col > mb_to_right_edge) ?
- mb_to_right_edge : mv->as_mv.col;
- mv->as_mv.row = (mv->as_mv.row < mb_to_top_edge) ?
- mb_to_top_edge : mv->as_mv.row;
- mv->as_mv.row = (mv->as_mv.row > mb_to_bottom_edge) ?
- mb_to_bottom_edge : mv->as_mv.row;
-}
-static INLINE unsigned int vp8_check_mv_bounds(int_mv *mv, int mb_to_left_edge,
- int mb_to_right_edge,
- int mb_to_top_edge,
- int mb_to_bottom_edge)
-{
- unsigned int need_to_clamp;
- need_to_clamp = (mv->as_mv.col < mb_to_left_edge);
- need_to_clamp |= (mv->as_mv.col > mb_to_right_edge);
- need_to_clamp |= (mv->as_mv.row < mb_to_top_edge);
- need_to_clamp |= (mv->as_mv.row > mb_to_bottom_edge);
- return need_to_clamp;
-}
-
-void vp8_find_near_mvs
-(
- MACROBLOCKD *xd,
- const MODE_INFO *here,
- int_mv *nearest, int_mv *nearby, int_mv *best,
- int near_mv_ref_cts[4],
- int refframe,
- int *ref_frame_sign_bias
-);
-
-
-int vp8_find_near_mvs_bias
-(
- MACROBLOCKD *xd,
- const MODE_INFO *here,
- int_mv mode_mv_sb[2][MB_MODE_COUNT],
- int_mv best_mv_sb[2],
- int cnt[4],
- int refframe,
- int *ref_frame_sign_bias
-);
-
-
-vp8_prob *vp8_mv_ref_probs(
- vp8_prob p[VP8_MVREFS-1], const int near_mv_ref_ct[4]
-);
-
-extern const unsigned char vp8_mbsplit_offset[4][16];
-
-
-static INLINE uint32_t left_block_mv(const MODE_INFO *cur_mb, int b)
-{
- if (!(b & 3))
- {
- /* On L edge, get from MB to left of us */
- --cur_mb;
-
- if(cur_mb->mbmi.mode != SPLITMV)
- return cur_mb->mbmi.mv.as_int;
- b += 4;
- }
-
- return (cur_mb->bmi + b - 1)->mv.as_int;
-}
-
-static INLINE uint32_t above_block_mv(const MODE_INFO *cur_mb, int b,
- int mi_stride)
-{
- if (!(b >> 2))
- {
- /* On top edge, get from MB above us */
- cur_mb -= mi_stride;
-
- if(cur_mb->mbmi.mode != SPLITMV)
- return cur_mb->mbmi.mv.as_int;
- b += 16;
- }
-
- return (cur_mb->bmi + (b - 4))->mv.as_int;
-}
-static INLINE B_PREDICTION_MODE left_block_mode(const MODE_INFO *cur_mb, int b)
-{
- if (!(b & 3))
- {
- /* On L edge, get from MB to left of us */
- --cur_mb;
- switch (cur_mb->mbmi.mode)
- {
- case B_PRED:
- return (cur_mb->bmi + b + 3)->as_mode;
- case DC_PRED:
- return B_DC_PRED;
- case V_PRED:
- return B_VE_PRED;
- case H_PRED:
- return B_HE_PRED;
- case TM_PRED:
- return B_TM_PRED;
- default:
- return B_DC_PRED;
- }
- }
-
- return (cur_mb->bmi + b - 1)->as_mode;
-}
-
-static INLINE B_PREDICTION_MODE above_block_mode(const MODE_INFO *cur_mb, int b,
- int mi_stride)
-{
- if (!(b >> 2))
- {
- /* On top edge, get from MB above us */
- cur_mb -= mi_stride;
-
- switch (cur_mb->mbmi.mode)
- {
- case B_PRED:
- return (cur_mb->bmi + b + 12)->as_mode;
- case DC_PRED:
- return B_DC_PRED;
- case V_PRED:
- return B_VE_PRED;
- case H_PRED:
- return B_HE_PRED;
- case TM_PRED:
- return B_TM_PRED;
- default:
- return B_DC_PRED;
- }
- }
-
- return (cur_mb->bmi + b - 4)->as_mode;
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_FINDNEARMV_H_
diff --git a/thirdparty/libvpx/vp8/common/generic/systemdependent.c b/thirdparty/libvpx/vp8/common/generic/systemdependent.c
deleted file mode 100644
index 6d5f302d7a..0000000000
--- a/thirdparty/libvpx/vp8/common/generic/systemdependent.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#if ARCH_ARM
-#include "vpx_ports/arm.h"
-#elif ARCH_X86 || ARCH_X86_64
-#include "vpx_ports/x86.h"
-#endif
-#include "vp8/common/onyxc_int.h"
-#include "vp8/common/systemdependent.h"
-
-#if CONFIG_MULTITHREAD
-#if HAVE_UNISTD_H && !defined(__OS2__)
-#include <unistd.h>
-#elif defined(_WIN32)
-#include <windows.h>
-typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
-#elif defined(__OS2__)
-#define INCL_DOS
-#define INCL_DOSSPINLOCK
-#include <os2.h>
-#endif
-#endif
-
-#if CONFIG_MULTITHREAD
-static int get_cpu_count()
-{
- int core_count = 16;
-
-#if HAVE_UNISTD_H && !defined(__OS2__)
-#if defined(_SC_NPROCESSORS_ONLN)
- core_count = sysconf(_SC_NPROCESSORS_ONLN);
-#elif defined(_SC_NPROC_ONLN)
- core_count = sysconf(_SC_NPROC_ONLN);
-#endif
-#elif defined(_WIN32)
- {
-#if _WIN32_WINNT >= 0x0501
- SYSTEM_INFO sysinfo;
- GetNativeSystemInfo(&sysinfo);
-#else
- PGNSI pGNSI;
- SYSTEM_INFO sysinfo;
-
- /* Call GetNativeSystemInfo if supported or
- * GetSystemInfo otherwise. */
-
- pGNSI = (PGNSI) GetProcAddress(
- GetModuleHandle(TEXT("kernel32.dll")), "GetNativeSystemInfo");
- if (pGNSI != NULL)
- pGNSI(&sysinfo);
- else
- GetSystemInfo(&sysinfo);
-#endif
-
- core_count = sysinfo.dwNumberOfProcessors;
- }
-#elif defined(__OS2__)
- {
- ULONG proc_id;
- ULONG status;
-
- core_count = 0;
- for (proc_id = 1; ; proc_id++)
- {
- if (DosGetProcessorStatus(proc_id, &status))
- break;
-
- if (status == PROC_ONLINE)
- core_count++;
- }
- }
-#else
- /* other platforms */
-#endif
-
- return core_count > 0 ? core_count : 1;
-}
-#endif
-
-void vp8_clear_system_state_c() {};
-
-void vp8_machine_specific_config(VP8_COMMON *ctx)
-{
-#if CONFIG_MULTITHREAD
- ctx->processor_core_count = get_cpu_count();
-#else
- (void)ctx;
-#endif /* CONFIG_MULTITHREAD */
-
-#if ARCH_ARM
- ctx->cpu_caps = arm_cpu_caps();
-#elif ARCH_X86 || ARCH_X86_64
- ctx->cpu_caps = x86_simd_caps();
-#endif
-}
diff --git a/thirdparty/libvpx/vp8/common/header.h b/thirdparty/libvpx/vp8/common/header.h
deleted file mode 100644
index e27bca16bd..0000000000
--- a/thirdparty/libvpx/vp8/common/header.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_HEADER_H_
-#define VP8_COMMON_HEADER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* 24 bits total */
-typedef struct
-{
- unsigned int type: 1;
- unsigned int version: 3;
- unsigned int show_frame: 1;
-
- /* Allow 2^20 bytes = 8 megabits for first partition */
-
- unsigned int first_partition_length_in_bytes: 19;
-
-#ifdef PACKET_TESTING
- unsigned int frame_number;
- unsigned int update_gold: 1;
- unsigned int uses_gold: 1;
- unsigned int update_last: 1;
- unsigned int uses_last: 1;
-#endif
-
-} VP8_HEADER;
-
-#ifdef PACKET_TESTING
-#define VP8_HEADER_SIZE 8
-#else
-#define VP8_HEADER_SIZE 3
-#endif
-
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_HEADER_H_
diff --git a/thirdparty/libvpx/vp8/common/idct_blk.c b/thirdparty/libvpx/vp8/common/idct_blk.c
deleted file mode 100644
index 8aa7d9bf0f..0000000000
--- a/thirdparty/libvpx/vp8/common/idct_blk.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "vpx_mem/vpx_mem.h"
-
-void vp8_dequant_idct_add_c(short *input, short *dq,
- unsigned char *dest, int stride);
-void vp8_dc_only_idct_add_c(short input_dc, unsigned char * pred,
- int pred_stride, unsigned char *dst_ptr,
- int dst_stride);
-
-void vp8_dequant_idct_add_y_block_c
- (short *q, short *dq,
- unsigned char *dst, int stride, char *eobs)
-{
- int i, j;
-
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 4; j++)
- {
- if (*eobs++ > 1)
- vp8_dequant_idct_add_c (q, dq, dst, stride);
- else
- {
- vp8_dc_only_idct_add_c (q[0]*dq[0], dst, stride, dst, stride);
- memset(q, 0, 2 * sizeof(q[0]));
- }
-
- q += 16;
- dst += 4;
- }
-
- dst += 4*stride - 16;
- }
-}
-
-void vp8_dequant_idct_add_uv_block_c
- (short *q, short *dq,
- unsigned char *dstu, unsigned char *dstv, int stride, char *eobs)
-{
- int i, j;
-
- for (i = 0; i < 2; i++)
- {
- for (j = 0; j < 2; j++)
- {
- if (*eobs++ > 1)
- vp8_dequant_idct_add_c (q, dq, dstu, stride);
- else
- {
- vp8_dc_only_idct_add_c (q[0]*dq[0], dstu, stride, dstu, stride);
- memset(q, 0, 2 * sizeof(q[0]));
- }
-
- q += 16;
- dstu += 4;
- }
-
- dstu += 4*stride - 8;
- }
-
- for (i = 0; i < 2; i++)
- {
- for (j = 0; j < 2; j++)
- {
- if (*eobs++ > 1)
- vp8_dequant_idct_add_c (q, dq, dstv, stride);
- else
- {
- vp8_dc_only_idct_add_c (q[0]*dq[0], dstv, stride, dstv, stride);
- memset(q, 0, 2 * sizeof(q[0]));
- }
-
- q += 16;
- dstv += 4;
- }
-
- dstv += 4*stride - 8;
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/idctllm.c b/thirdparty/libvpx/vp8/common/idctllm.c
deleted file mode 100644
index f5403c5aaf..0000000000
--- a/thirdparty/libvpx/vp8/common/idctllm.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vp8_rtcd.h"
-
-/****************************************************************************
- * Notes:
- *
- * This implementation makes use of 16 bit fixed point verio of two multiply
- * constants:
- * 1. sqrt(2) * cos (pi/8)
- * 2. sqrt(2) * sin (pi/8)
- * Becuase the first constant is bigger than 1, to maintain the same 16 bit
- * fixed point precision as the second one, we use a trick of
- * x * a = x + x*(a-1)
- * so
- * x * sqrt(2) * cos (pi/8) = x + x * (sqrt(2) *cos(pi/8)-1).
- **************************************************************************/
-static const int cospi8sqrt2minus1 = 20091;
-static const int sinpi8sqrt2 = 35468;
-
-void vp8_short_idct4x4llm_c(short *input, unsigned char *pred_ptr,
- int pred_stride, unsigned char *dst_ptr,
- int dst_stride)
-{
- int i;
- int r, c;
- int a1, b1, c1, d1;
- short output[16];
- short *ip = input;
- short *op = output;
- int temp1, temp2;
- int shortpitch = 4;
-
- for (i = 0; i < 4; i++)
- {
- a1 = ip[0] + ip[8];
- b1 = ip[0] - ip[8];
-
- temp1 = (ip[4] * sinpi8sqrt2) >> 16;
- temp2 = ip[12] + ((ip[12] * cospi8sqrt2minus1) >> 16);
- c1 = temp1 - temp2;
-
- temp1 = ip[4] + ((ip[4] * cospi8sqrt2minus1) >> 16);
- temp2 = (ip[12] * sinpi8sqrt2) >> 16;
- d1 = temp1 + temp2;
-
- op[shortpitch*0] = a1 + d1;
- op[shortpitch*3] = a1 - d1;
-
- op[shortpitch*1] = b1 + c1;
- op[shortpitch*2] = b1 - c1;
-
- ip++;
- op++;
- }
-
- ip = output;
- op = output;
-
- for (i = 0; i < 4; i++)
- {
- a1 = ip[0] + ip[2];
- b1 = ip[0] - ip[2];
-
- temp1 = (ip[1] * sinpi8sqrt2) >> 16;
- temp2 = ip[3] + ((ip[3] * cospi8sqrt2minus1) >> 16);
- c1 = temp1 - temp2;
-
- temp1 = ip[1] + ((ip[1] * cospi8sqrt2minus1) >> 16);
- temp2 = (ip[3] * sinpi8sqrt2) >> 16;
- d1 = temp1 + temp2;
-
-
- op[0] = (a1 + d1 + 4) >> 3;
- op[3] = (a1 - d1 + 4) >> 3;
-
- op[1] = (b1 + c1 + 4) >> 3;
- op[2] = (b1 - c1 + 4) >> 3;
-
- ip += shortpitch;
- op += shortpitch;
- }
-
- ip = output;
- for (r = 0; r < 4; r++)
- {
- for (c = 0; c < 4; c++)
- {
- int a = ip[c] + pred_ptr[c] ;
-
- if (a < 0)
- a = 0;
-
- if (a > 255)
- a = 255;
-
- dst_ptr[c] = (unsigned char) a ;
- }
- ip += 4;
- dst_ptr += dst_stride;
- pred_ptr += pred_stride;
- }
-}
-
-void vp8_dc_only_idct_add_c(short input_dc, unsigned char *pred_ptr,
- int pred_stride, unsigned char *dst_ptr,
- int dst_stride)
-{
- int a1 = ((input_dc + 4) >> 3);
- int r, c;
-
- for (r = 0; r < 4; r++)
- {
- for (c = 0; c < 4; c++)
- {
- int a = a1 + pred_ptr[c] ;
-
- if (a < 0)
- a = 0;
-
- if (a > 255)
- a = 255;
-
- dst_ptr[c] = (unsigned char) a ;
- }
-
- dst_ptr += dst_stride;
- pred_ptr += pred_stride;
- }
-
-}
-
-void vp8_short_inv_walsh4x4_c(short *input, short *mb_dqcoeff)
-{
- short output[16];
- int i;
- int a1, b1, c1, d1;
- int a2, b2, c2, d2;
- short *ip = input;
- short *op = output;
-
- for (i = 0; i < 4; i++)
- {
- a1 = ip[0] + ip[12];
- b1 = ip[4] + ip[8];
- c1 = ip[4] - ip[8];
- d1 = ip[0] - ip[12];
-
- op[0] = a1 + b1;
- op[4] = c1 + d1;
- op[8] = a1 - b1;
- op[12] = d1 - c1;
- ip++;
- op++;
- }
-
- ip = output;
- op = output;
-
- for (i = 0; i < 4; i++)
- {
- a1 = ip[0] + ip[3];
- b1 = ip[1] + ip[2];
- c1 = ip[1] - ip[2];
- d1 = ip[0] - ip[3];
-
- a2 = a1 + b1;
- b2 = c1 + d1;
- c2 = a1 - b1;
- d2 = d1 - c1;
-
- op[0] = (a2 + 3) >> 3;
- op[1] = (b2 + 3) >> 3;
- op[2] = (c2 + 3) >> 3;
- op[3] = (d2 + 3) >> 3;
-
- ip += 4;
- op += 4;
- }
-
- for(i = 0; i < 16; i++)
- {
- mb_dqcoeff[i * 16] = output[i];
- }
-}
-
-void vp8_short_inv_walsh4x4_1_c(short *input, short *mb_dqcoeff)
-{
- int i;
- int a1;
-
- a1 = ((input[0] + 3) >> 3);
- for(i = 0; i < 16; i++)
- {
- mb_dqcoeff[i * 16] = a1;
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/invtrans.h b/thirdparty/libvpx/vp8/common/invtrans.h
deleted file mode 100644
index 9cfea8d513..0000000000
--- a/thirdparty/libvpx/vp8/common/invtrans.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_INVTRANS_H_
-#define VP8_COMMON_INVTRANS_H_
-
-#include "./vpx_config.h"
-#include "vp8_rtcd.h"
-#include "blockd.h"
-#include "onyxc_int.h"
-
-#if CONFIG_MULTITHREAD
-#include "vpx_mem/vpx_mem.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static void eob_adjust(char *eobs, short *diff)
-{
- /* eob adjust.... the idct can only skip if both the dc and eob are zero */
- int js;
- for(js = 0; js < 16; js++)
- {
- if((eobs[js] == 0) && (diff[0] != 0))
- eobs[js]++;
- diff+=16;
- }
-}
-
-static INLINE void vp8_inverse_transform_mby(MACROBLOCKD *xd)
-{
- short *DQC = xd->dequant_y1;
-
- if (xd->mode_info_context->mbmi.mode != SPLITMV)
- {
- /* do 2nd order transform on the dc block */
- if (xd->eobs[24] > 1)
- {
- vp8_short_inv_walsh4x4
- (&xd->block[24].dqcoeff[0], xd->qcoeff);
- }
- else
- {
- vp8_short_inv_walsh4x4_1
- (&xd->block[24].dqcoeff[0], xd->qcoeff);
- }
- eob_adjust(xd->eobs, xd->qcoeff);
-
- DQC = xd->dequant_y1_dc;
- }
- vp8_dequant_idct_add_y_block
- (xd->qcoeff, DQC,
- xd->dst.y_buffer,
- xd->dst.y_stride, xd->eobs);
-}
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_INVTRANS_H_
diff --git a/thirdparty/libvpx/vp8/common/loopfilter.h b/thirdparty/libvpx/vp8/common/loopfilter.h
deleted file mode 100644
index 20a6bd375b..0000000000
--- a/thirdparty/libvpx/vp8/common/loopfilter.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_LOOPFILTER_H_
-#define VP8_COMMON_LOOPFILTER_H_
-
-#include "vpx_ports/mem.h"
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MAX_LOOP_FILTER 63
-/* fraction of total macroblock rows to be used in fast filter level picking */
-/* has to be > 2 */
-#define PARTIAL_FRAME_FRACTION 8
-
-typedef enum
-{
- NORMAL_LOOPFILTER = 0,
- SIMPLE_LOOPFILTER = 1
-} LOOPFILTERTYPE;
-
-#if ARCH_ARM
-#define SIMD_WIDTH 1
-#else
-#define SIMD_WIDTH 16
-#endif
-
-/* Need to align this structure so when it is declared and
- * passed it can be loaded into vector registers.
- */
-typedef struct
-{
- DECLARE_ALIGNED(SIMD_WIDTH, unsigned char, mblim[MAX_LOOP_FILTER + 1][SIMD_WIDTH]);
- DECLARE_ALIGNED(SIMD_WIDTH, unsigned char, blim[MAX_LOOP_FILTER + 1][SIMD_WIDTH]);
- DECLARE_ALIGNED(SIMD_WIDTH, unsigned char, lim[MAX_LOOP_FILTER + 1][SIMD_WIDTH]);
- DECLARE_ALIGNED(SIMD_WIDTH, unsigned char, hev_thr[4][SIMD_WIDTH]);
- unsigned char lvl[4][4][4];
- unsigned char hev_thr_lut[2][MAX_LOOP_FILTER + 1];
- unsigned char mode_lf_lut[10];
-} loop_filter_info_n;
-
-typedef struct loop_filter_info
-{
- const unsigned char * mblim;
- const unsigned char * blim;
- const unsigned char * lim;
- const unsigned char * hev_thr;
-} loop_filter_info;
-
-
-typedef void loop_filter_uvfunction
-(
- unsigned char *u, /* source pointer */
- int p, /* pitch */
- const unsigned char *blimit,
- const unsigned char *limit,
- const unsigned char *thresh,
- unsigned char *v
-);
-
-/* assorted loopfilter functions which get used elsewhere */
-struct VP8Common;
-struct macroblockd;
-struct modeinfo;
-
-void vp8_loop_filter_init(struct VP8Common *cm);
-
-void vp8_loop_filter_frame_init(struct VP8Common *cm,
- struct macroblockd *mbd,
- int default_filt_lvl);
-
-void vp8_loop_filter_frame(struct VP8Common *cm, struct macroblockd *mbd,
- int frame_type);
-
-void vp8_loop_filter_partial_frame(struct VP8Common *cm,
- struct macroblockd *mbd,
- int default_filt_lvl);
-
-void vp8_loop_filter_frame_yonly(struct VP8Common *cm,
- struct macroblockd *mbd,
- int default_filt_lvl);
-
-void vp8_loop_filter_update_sharpness(loop_filter_info_n *lfi,
- int sharpness_lvl);
-
-void vp8_loop_filter_row_normal(struct VP8Common *cm,
- struct modeinfo *mode_info_context,
- int mb_row, int post_ystride, int post_uvstride,
- unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr);
-
-void vp8_loop_filter_row_simple(struct VP8Common *cm,
- struct modeinfo *mode_info_context,
- int mb_row, int post_ystride, int post_uvstride,
- unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr);
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_LOOPFILTER_H_
diff --git a/thirdparty/libvpx/vp8/common/loopfilter_filters.c b/thirdparty/libvpx/vp8/common/loopfilter_filters.c
deleted file mode 100644
index 1d51696ff7..0000000000
--- a/thirdparty/libvpx/vp8/common/loopfilter_filters.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include <stdlib.h>
-#include "loopfilter.h"
-#include "onyxc_int.h"
-
-typedef unsigned char uc;
-
-static signed char vp8_signed_char_clamp(int t)
-{
- t = (t < -128 ? -128 : t);
- t = (t > 127 ? 127 : t);
- return (signed char) t;
-}
-
-
-/* should we apply any filter at all ( 11111111 yes, 00000000 no) */
-static signed char vp8_filter_mask(uc limit, uc blimit,
- uc p3, uc p2, uc p1, uc p0,
- uc q0, uc q1, uc q2, uc q3)
-{
- signed char mask = 0;
- mask |= (abs(p3 - p2) > limit);
- mask |= (abs(p2 - p1) > limit);
- mask |= (abs(p1 - p0) > limit);
- mask |= (abs(q1 - q0) > limit);
- mask |= (abs(q2 - q1) > limit);
- mask |= (abs(q3 - q2) > limit);
- mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit);
- return mask - 1;
-}
-
-/* is there high variance internal edge ( 11111111 yes, 00000000 no) */
-static signed char vp8_hevmask(uc thresh, uc p1, uc p0, uc q0, uc q1)
-{
- signed char hev = 0;
- hev |= (abs(p1 - p0) > thresh) * -1;
- hev |= (abs(q1 - q0) > thresh) * -1;
- return hev;
-}
-
-static void vp8_filter(signed char mask, uc hev, uc *op1,
- uc *op0, uc *oq0, uc *oq1)
-
-{
- signed char ps0, qs0;
- signed char ps1, qs1;
- signed char filter_value, Filter1, Filter2;
- signed char u;
-
- ps1 = (signed char) * op1 ^ 0x80;
- ps0 = (signed char) * op0 ^ 0x80;
- qs0 = (signed char) * oq0 ^ 0x80;
- qs1 = (signed char) * oq1 ^ 0x80;
-
- /* add outer taps if we have high edge variance */
- filter_value = vp8_signed_char_clamp(ps1 - qs1);
- filter_value &= hev;
-
- /* inner taps */
- filter_value = vp8_signed_char_clamp(filter_value + 3 * (qs0 - ps0));
- filter_value &= mask;
-
- /* save bottom 3 bits so that we round one side +4 and the other +3
- * if it equals 4 we'll set to adjust by -1 to account for the fact
- * we'd round 3 the other way
- */
- Filter1 = vp8_signed_char_clamp(filter_value + 4);
- Filter2 = vp8_signed_char_clamp(filter_value + 3);
- Filter1 >>= 3;
- Filter2 >>= 3;
- u = vp8_signed_char_clamp(qs0 - Filter1);
- *oq0 = u ^ 0x80;
- u = vp8_signed_char_clamp(ps0 + Filter2);
- *op0 = u ^ 0x80;
- filter_value = Filter1;
-
- /* outer tap adjustments */
- filter_value += 1;
- filter_value >>= 1;
- filter_value &= ~hev;
-
- u = vp8_signed_char_clamp(qs1 - filter_value);
- *oq1 = u ^ 0x80;
- u = vp8_signed_char_clamp(ps1 + filter_value);
- *op1 = u ^ 0x80;
-
-}
-void vp8_loop_filter_horizontal_edge_c
-(
- unsigned char *s,
- int p, /* pitch */
- const unsigned char *blimit,
- const unsigned char *limit,
- const unsigned char *thresh,
- int count
-)
-{
- int hev = 0; /* high edge variance */
- signed char mask = 0;
- int i = 0;
-
- /* loop filter designed to work using chars so that we can make maximum use
- * of 8 bit simd instructions.
- */
- do
- {
- mask = vp8_filter_mask(limit[0], blimit[0],
- s[-4*p], s[-3*p], s[-2*p], s[-1*p],
- s[0*p], s[1*p], s[2*p], s[3*p]);
-
- hev = vp8_hevmask(thresh[0], s[-2*p], s[-1*p], s[0*p], s[1*p]);
-
- vp8_filter(mask, hev, s - 2 * p, s - 1 * p, s, s + 1 * p);
-
- ++s;
- }
- while (++i < count * 8);
-}
-
-void vp8_loop_filter_vertical_edge_c
-(
- unsigned char *s,
- int p,
- const unsigned char *blimit,
- const unsigned char *limit,
- const unsigned char *thresh,
- int count
-)
-{
- int hev = 0; /* high edge variance */
- signed char mask = 0;
- int i = 0;
-
- /* loop filter designed to work using chars so that we can make maximum use
- * of 8 bit simd instructions.
- */
- do
- {
- mask = vp8_filter_mask(limit[0], blimit[0],
- s[-4], s[-3], s[-2], s[-1], s[0], s[1], s[2], s[3]);
-
- hev = vp8_hevmask(thresh[0], s[-2], s[-1], s[0], s[1]);
-
- vp8_filter(mask, hev, s - 2, s - 1, s, s + 1);
-
- s += p;
- }
- while (++i < count * 8);
-}
-
-static void vp8_mbfilter(signed char mask, uc hev,
- uc *op2, uc *op1, uc *op0, uc *oq0, uc *oq1, uc *oq2)
-{
- signed char s, u;
- signed char filter_value, Filter1, Filter2;
- signed char ps2 = (signed char) * op2 ^ 0x80;
- signed char ps1 = (signed char) * op1 ^ 0x80;
- signed char ps0 = (signed char) * op0 ^ 0x80;
- signed char qs0 = (signed char) * oq0 ^ 0x80;
- signed char qs1 = (signed char) * oq1 ^ 0x80;
- signed char qs2 = (signed char) * oq2 ^ 0x80;
-
- /* add outer taps if we have high edge variance */
- filter_value = vp8_signed_char_clamp(ps1 - qs1);
- filter_value = vp8_signed_char_clamp(filter_value + 3 * (qs0 - ps0));
- filter_value &= mask;
-
- Filter2 = filter_value;
- Filter2 &= hev;
-
- /* save bottom 3 bits so that we round one side +4 and the other +3 */
- Filter1 = vp8_signed_char_clamp(Filter2 + 4);
- Filter2 = vp8_signed_char_clamp(Filter2 + 3);
- Filter1 >>= 3;
- Filter2 >>= 3;
- qs0 = vp8_signed_char_clamp(qs0 - Filter1);
- ps0 = vp8_signed_char_clamp(ps0 + Filter2);
-
-
- /* only apply wider filter if not high edge variance */
- filter_value &= ~hev;
- Filter2 = filter_value;
-
- /* roughly 3/7th difference across boundary */
- u = vp8_signed_char_clamp((63 + Filter2 * 27) >> 7);
- s = vp8_signed_char_clamp(qs0 - u);
- *oq0 = s ^ 0x80;
- s = vp8_signed_char_clamp(ps0 + u);
- *op0 = s ^ 0x80;
-
- /* roughly 2/7th difference across boundary */
- u = vp8_signed_char_clamp((63 + Filter2 * 18) >> 7);
- s = vp8_signed_char_clamp(qs1 - u);
- *oq1 = s ^ 0x80;
- s = vp8_signed_char_clamp(ps1 + u);
- *op1 = s ^ 0x80;
-
- /* roughly 1/7th difference across boundary */
- u = vp8_signed_char_clamp((63 + Filter2 * 9) >> 7);
- s = vp8_signed_char_clamp(qs2 - u);
- *oq2 = s ^ 0x80;
- s = vp8_signed_char_clamp(ps2 + u);
- *op2 = s ^ 0x80;
-}
-
-void vp8_mbloop_filter_horizontal_edge_c
-(
- unsigned char *s,
- int p,
- const unsigned char *blimit,
- const unsigned char *limit,
- const unsigned char *thresh,
- int count
-)
-{
- signed char hev = 0; /* high edge variance */
- signed char mask = 0;
- int i = 0;
-
- /* loop filter designed to work using chars so that we can make maximum use
- * of 8 bit simd instructions.
- */
- do
- {
-
- mask = vp8_filter_mask(limit[0], blimit[0],
- s[-4*p], s[-3*p], s[-2*p], s[-1*p],
- s[0*p], s[1*p], s[2*p], s[3*p]);
-
- hev = vp8_hevmask(thresh[0], s[-2*p], s[-1*p], s[0*p], s[1*p]);
-
- vp8_mbfilter(mask, hev, s - 3 * p, s - 2 * p, s - 1 * p, s, s + 1 * p, s + 2 * p);
-
- ++s;
- }
- while (++i < count * 8);
-
-}
-
-
-void vp8_mbloop_filter_vertical_edge_c
-(
- unsigned char *s,
- int p,
- const unsigned char *blimit,
- const unsigned char *limit,
- const unsigned char *thresh,
- int count
-)
-{
- signed char hev = 0; /* high edge variance */
- signed char mask = 0;
- int i = 0;
-
- do
- {
-
- mask = vp8_filter_mask(limit[0], blimit[0],
- s[-4], s[-3], s[-2], s[-1], s[0], s[1], s[2], s[3]);
-
- hev = vp8_hevmask(thresh[0], s[-2], s[-1], s[0], s[1]);
-
- vp8_mbfilter(mask, hev, s - 3, s - 2, s - 1, s, s + 1, s + 2);
-
- s += p;
- }
- while (++i < count * 8);
-
-}
-
-/* should we apply any filter at all ( 11111111 yes, 00000000 no) */
-static signed char vp8_simple_filter_mask(uc blimit, uc p1, uc p0, uc q0, uc q1)
-{
-/* Why does this cause problems for win32?
- * error C2143: syntax error : missing ';' before 'type'
- * (void) limit;
- */
- signed char mask = (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 <= blimit) * -1;
- return mask;
-}
-
-static void vp8_simple_filter(signed char mask, uc *op1, uc *op0, uc *oq0, uc *oq1)
-{
- signed char filter_value, Filter1, Filter2;
- signed char p1 = (signed char) * op1 ^ 0x80;
- signed char p0 = (signed char) * op0 ^ 0x80;
- signed char q0 = (signed char) * oq0 ^ 0x80;
- signed char q1 = (signed char) * oq1 ^ 0x80;
- signed char u;
-
- filter_value = vp8_signed_char_clamp(p1 - q1);
- filter_value = vp8_signed_char_clamp(filter_value + 3 * (q0 - p0));
- filter_value &= mask;
-
- /* save bottom 3 bits so that we round one side +4 and the other +3 */
- Filter1 = vp8_signed_char_clamp(filter_value + 4);
- Filter1 >>= 3;
- u = vp8_signed_char_clamp(q0 - Filter1);
- *oq0 = u ^ 0x80;
-
- Filter2 = vp8_signed_char_clamp(filter_value + 3);
- Filter2 >>= 3;
- u = vp8_signed_char_clamp(p0 + Filter2);
- *op0 = u ^ 0x80;
-}
-
-void vp8_loop_filter_simple_horizontal_edge_c
-(
- unsigned char *s,
- int p,
- const unsigned char *blimit
-)
-{
- signed char mask = 0;
- int i = 0;
-
- do
- {
- mask = vp8_simple_filter_mask(blimit[0], s[-2*p], s[-1*p], s[0*p], s[1*p]);
- vp8_simple_filter(mask, s - 2 * p, s - 1 * p, s, s + 1 * p);
- ++s;
- }
- while (++i < 16);
-}
-
-void vp8_loop_filter_simple_vertical_edge_c
-(
- unsigned char *s,
- int p,
- const unsigned char *blimit
-)
-{
- signed char mask = 0;
- int i = 0;
-
- do
- {
- mask = vp8_simple_filter_mask(blimit[0], s[-2], s[-1], s[0], s[1]);
- vp8_simple_filter(mask, s - 2, s - 1, s, s + 1);
- s += p;
- }
- while (++i < 16);
-
-}
-
-/* Horizontal MB filtering */
-void vp8_loop_filter_mbh_c(unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr, int y_stride, int uv_stride,
- loop_filter_info *lfi)
-{
- vp8_mbloop_filter_horizontal_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_mbloop_filter_horizontal_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_mbloop_filter_horizontal_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-}
-
-/* Vertical MB Filtering */
-void vp8_loop_filter_mbv_c(unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr, int y_stride, int uv_stride,
- loop_filter_info *lfi)
-{
- vp8_mbloop_filter_vertical_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_mbloop_filter_vertical_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_mbloop_filter_vertical_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-}
-
-/* Horizontal B Filtering */
-void vp8_loop_filter_bh_c(unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr, int y_stride, int uv_stride,
- loop_filter_info *lfi)
-{
- vp8_loop_filter_horizontal_edge_c(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_horizontal_edge_c(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_horizontal_edge_c(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_loop_filter_horizontal_edge_c(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_loop_filter_horizontal_edge_c(v_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-}
-
-void vp8_loop_filter_bhs_c(unsigned char *y_ptr, int y_stride,
- const unsigned char *blimit)
-{
- vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 4 * y_stride, y_stride, blimit);
- vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 8 * y_stride, y_stride, blimit);
- vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 12 * y_stride, y_stride, blimit);
-}
-
-/* Vertical B Filtering */
-void vp8_loop_filter_bv_c(unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr, int y_stride, int uv_stride,
- loop_filter_info *lfi)
-{
- vp8_loop_filter_vertical_edge_c(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_vertical_edge_c(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_vertical_edge_c(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_loop_filter_vertical_edge_c(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_loop_filter_vertical_edge_c(v_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-}
-
-void vp8_loop_filter_bvs_c(unsigned char *y_ptr, int y_stride,
- const unsigned char *blimit)
-{
- vp8_loop_filter_simple_vertical_edge_c(y_ptr + 4, y_stride, blimit);
- vp8_loop_filter_simple_vertical_edge_c(y_ptr + 8, y_stride, blimit);
- vp8_loop_filter_simple_vertical_edge_c(y_ptr + 12, y_stride, blimit);
-}
diff --git a/thirdparty/libvpx/vp8/common/mbpitch.c b/thirdparty/libvpx/vp8/common/mbpitch.c
deleted file mode 100644
index 32e1b66409..0000000000
--- a/thirdparty/libvpx/vp8/common/mbpitch.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "blockd.h"
-
-void vp8_setup_block_dptrs(MACROBLOCKD *x)
-{
- int r, c;
-
- for (r = 0; r < 4; r++)
- {
- for (c = 0; c < 4; c++)
- {
- x->block[r*4+c].predictor = x->predictor + r * 4 * 16 + c * 4;
- }
- }
-
- for (r = 0; r < 2; r++)
- {
- for (c = 0; c < 2; c++)
- {
- x->block[16+r*2+c].predictor = x->predictor + 256 + r * 4 * 8 + c * 4;
-
- }
- }
-
- for (r = 0; r < 2; r++)
- {
- for (c = 0; c < 2; c++)
- {
- x->block[20+r*2+c].predictor = x->predictor + 320 + r * 4 * 8 + c * 4;
-
- }
- }
-
- for (r = 0; r < 25; r++)
- {
- x->block[r].qcoeff = x->qcoeff + r * 16;
- x->block[r].dqcoeff = x->dqcoeff + r * 16;
- x->block[r].eob = x->eobs + r;
- }
-}
-
-void vp8_build_block_doffsets(MACROBLOCKD *x)
-{
- int block;
-
- for (block = 0; block < 16; block++) /* y blocks */
- {
- x->block[block].offset =
- (block >> 2) * 4 * x->dst.y_stride + (block & 3) * 4;
- }
-
- for (block = 16; block < 20; block++) /* U and V blocks */
- {
- x->block[block+4].offset =
- x->block[block].offset =
- ((block - 16) >> 1) * 4 * x->dst.uv_stride + (block & 1) * 4;
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/modecont.c b/thirdparty/libvpx/vp8/common/modecont.c
deleted file mode 100644
index 86a74bc0ff..0000000000
--- a/thirdparty/libvpx/vp8/common/modecont.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "entropy.h"
-
-const int vp8_mode_contexts[6][4] =
-{
- {
- /* 0 */
- 7, 1, 1, 143,
- },
- {
- /* 1 */
- 14, 18, 14, 107,
- },
- {
- /* 2 */
- 135, 64, 57, 68,
- },
- {
- /* 3 */
- 60, 56, 128, 65,
- },
- {
- /* 4 */
- 159, 134, 128, 34,
- },
- {
- /* 5 */
- 234, 188, 128, 28,
- },
-};
diff --git a/thirdparty/libvpx/vp8/common/modecont.h b/thirdparty/libvpx/vp8/common/modecont.h
deleted file mode 100644
index ff34c33c55..0000000000
--- a/thirdparty/libvpx/vp8/common/modecont.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_MODECONT_H_
-#define VP8_COMMON_MODECONT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern const int vp8_mode_contexts[6][4];
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_MODECONT_H_
diff --git a/thirdparty/libvpx/vp8/common/mv.h b/thirdparty/libvpx/vp8/common/mv.h
deleted file mode 100644
index 111ccd63c7..0000000000
--- a/thirdparty/libvpx/vp8/common/mv.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_MV_H_
-#define VP8_COMMON_MV_H_
-#include "vpx/vpx_integer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct
-{
- short row;
- short col;
-} MV;
-
-typedef union int_mv
-{
- uint32_t as_int;
- MV as_mv;
-} int_mv; /* facilitates faster equality tests and copies */
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_MV_H_
diff --git a/thirdparty/libvpx/vp8/common/onyxc_int.h b/thirdparty/libvpx/vp8/common/onyxc_int.h
deleted file mode 100644
index 6d89865c60..0000000000
--- a/thirdparty/libvpx/vp8/common/onyxc_int.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_ONYXC_INT_H_
-#define VP8_COMMON_ONYXC_INT_H_
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "vpx/internal/vpx_codec_internal.h"
-#include "loopfilter.h"
-#include "entropymv.h"
-#include "entropy.h"
-#if CONFIG_POSTPROC
-#include "postproc.h"
-#endif
-
-/*#ifdef PACKET_TESTING*/
-#include "header.h"
-/*#endif*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MINQ 0
-#define MAXQ 127
-#define QINDEX_RANGE (MAXQ + 1)
-
-#define NUM_YV12_BUFFERS 4
-
-#define MAX_PARTITIONS 9
-
-typedef struct frame_contexts
-{
- vp8_prob bmode_prob [VP8_BINTRAMODES-1];
- vp8_prob ymode_prob [VP8_YMODES-1]; /* interframe intra mode probs */
- vp8_prob uv_mode_prob [VP8_UV_MODES-1];
- vp8_prob sub_mv_ref_prob [VP8_SUBMVREFS-1];
- vp8_prob coef_probs [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [ENTROPY_NODES];
- MV_CONTEXT mvc[2];
-} FRAME_CONTEXT;
-
-typedef enum
-{
- ONE_PARTITION = 0,
- TWO_PARTITION = 1,
- FOUR_PARTITION = 2,
- EIGHT_PARTITION = 3
-} TOKEN_PARTITION;
-
-typedef enum
-{
- RECON_CLAMP_REQUIRED = 0,
- RECON_CLAMP_NOTREQUIRED = 1
-} CLAMP_TYPE;
-
-typedef struct VP8Common
-
-{
- struct vpx_internal_error_info error;
-
- DECLARE_ALIGNED(16, short, Y1dequant[QINDEX_RANGE][2]);
- DECLARE_ALIGNED(16, short, Y2dequant[QINDEX_RANGE][2]);
- DECLARE_ALIGNED(16, short, UVdequant[QINDEX_RANGE][2]);
-
- int Width;
- int Height;
- int horiz_scale;
- int vert_scale;
-
- CLAMP_TYPE clamp_type;
-
- YV12_BUFFER_CONFIG *frame_to_show;
-
- YV12_BUFFER_CONFIG yv12_fb[NUM_YV12_BUFFERS];
- int fb_idx_ref_cnt[NUM_YV12_BUFFERS];
- int new_fb_idx, lst_fb_idx, gld_fb_idx, alt_fb_idx;
-
- YV12_BUFFER_CONFIG temp_scale_frame;
-
-#if CONFIG_POSTPROC
- YV12_BUFFER_CONFIG post_proc_buffer;
- YV12_BUFFER_CONFIG post_proc_buffer_int;
- int post_proc_buffer_int_used;
- unsigned char *pp_limits_buffer; /* post-processing filter coefficients */
-#endif
-
- FRAME_TYPE last_frame_type; /* Save last frame's frame type for motion search. */
- FRAME_TYPE frame_type;
-
- int show_frame;
-
- int frame_flags;
- int MBs;
- int mb_rows;
- int mb_cols;
- int mode_info_stride;
-
- /* profile settings */
- int mb_no_coeff_skip;
- int no_lpf;
- int use_bilinear_mc_filter;
- int full_pixel;
-
- int base_qindex;
-
- int y1dc_delta_q;
- int y2dc_delta_q;
- int y2ac_delta_q;
- int uvdc_delta_q;
- int uvac_delta_q;
-
- /* We allocate a MODE_INFO struct for each macroblock, together with
- an extra row on top and column on the left to simplify prediction. */
-
- MODE_INFO *mip; /* Base of allocated array */
- MODE_INFO *mi; /* Corresponds to upper left visible macroblock */
-#if CONFIG_ERROR_CONCEALMENT
- MODE_INFO *prev_mip; /* MODE_INFO array 'mip' from last decoded frame */
- MODE_INFO *prev_mi; /* 'mi' from last frame (points into prev_mip) */
-#endif
- MODE_INFO *show_frame_mi; /* MODE_INFO for the last decoded frame
- to show */
- LOOPFILTERTYPE filter_type;
-
- loop_filter_info_n lf_info;
-
- int filter_level;
- int last_sharpness_level;
- int sharpness_level;
-
- int refresh_last_frame; /* Two state 0 = NO, 1 = YES */
- int refresh_golden_frame; /* Two state 0 = NO, 1 = YES */
- int refresh_alt_ref_frame; /* Two state 0 = NO, 1 = YES */
-
- int copy_buffer_to_gf; /* 0 none, 1 Last to GF, 2 ARF to GF */
- int copy_buffer_to_arf; /* 0 none, 1 Last to ARF, 2 GF to ARF */
-
- int refresh_entropy_probs; /* Two state 0 = NO, 1 = YES */
-
- int ref_frame_sign_bias[MAX_REF_FRAMES]; /* Two state 0, 1 */
-
- /* Y,U,V,Y2 */
- ENTROPY_CONTEXT_PLANES *above_context; /* row of context for each plane */
- ENTROPY_CONTEXT_PLANES left_context; /* (up to) 4 contexts "" */
-
- FRAME_CONTEXT lfc; /* last frame entropy */
- FRAME_CONTEXT fc; /* this frame entropy */
-
- unsigned int current_video_frame;
-
- int version;
-
- TOKEN_PARTITION multi_token_partition;
-
-#ifdef PACKET_TESTING
- VP8_HEADER oh;
-#endif
-#if CONFIG_POSTPROC_VISUALIZER
- double bitrate;
- double framerate;
-#endif
-
-#if CONFIG_MULTITHREAD
- int processor_core_count;
-#endif
-#if CONFIG_POSTPROC
- struct postproc_state postproc_state;
-#endif
- int cpu_caps;
-} VP8_COMMON;
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_ONYXC_INT_H_
diff --git a/thirdparty/libvpx/vp8/common/onyxd.h b/thirdparty/libvpx/vp8/common/onyxd.h
deleted file mode 100644
index e37b29f32c..0000000000
--- a/thirdparty/libvpx/vp8/common/onyxd.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_ONYXD_H_
-#define VP8_COMMON_ONYXD_H_
-
-
-/* Create/destroy static data structures. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-#include "vpx_scale/yv12config.h"
-#include "ppflags.h"
-#include "vpx_ports/mem.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vp8.h"
-
- struct VP8D_COMP;
-
- typedef struct
- {
- int Width;
- int Height;
- int Version;
- int postprocess;
- int max_threads;
- int error_concealment;
- } VP8D_CONFIG;
-
- typedef enum
- {
- VP8D_OK = 0
- } VP8D_SETTING;
-
- void vp8dx_initialize(void);
-
- void vp8dx_set_setting(struct VP8D_COMP* comp, VP8D_SETTING oxst, int x);
-
- int vp8dx_get_setting(struct VP8D_COMP* comp, VP8D_SETTING oxst);
-
- int vp8dx_receive_compressed_data(struct VP8D_COMP* comp,
- size_t size, const uint8_t *dest,
- int64_t time_stamp);
- int vp8dx_get_raw_frame(struct VP8D_COMP* comp, YV12_BUFFER_CONFIG *sd, int64_t *time_stamp, int64_t *time_end_stamp, vp8_ppflags_t *flags);
-
- vpx_codec_err_t vp8dx_get_reference(struct VP8D_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd);
- vpx_codec_err_t vp8dx_set_reference(struct VP8D_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif // VP8_COMMON_ONYXD_H_
diff --git a/thirdparty/libvpx/vp8/common/ppflags.h b/thirdparty/libvpx/vp8/common/ppflags.h
deleted file mode 100644
index 768224aad5..0000000000
--- a/thirdparty/libvpx/vp8/common/ppflags.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_PPFLAGS_H_
-#define VP8_COMMON_PPFLAGS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-enum
-{
- VP8D_NOFILTERING = 0,
- VP8D_DEBLOCK = 1<<0,
- VP8D_DEMACROBLOCK = 1<<1,
- VP8D_ADDNOISE = 1<<2,
- VP8D_DEBUG_TXT_FRAME_INFO = 1<<3,
- VP8D_DEBUG_TXT_MBLK_MODES = 1<<4,
- VP8D_DEBUG_TXT_DC_DIFF = 1<<5,
- VP8D_DEBUG_TXT_RATE_INFO = 1<<6,
- VP8D_DEBUG_DRAW_MV = 1<<7,
- VP8D_DEBUG_CLR_BLK_MODES = 1<<8,
- VP8D_DEBUG_CLR_FRM_REF_BLKS = 1<<9,
- VP8D_MFQE = 1<<10
-};
-
-typedef struct
-{
- int post_proc_flag;
- int deblocking_level;
- int noise_level;
- int display_ref_frame_flag;
- int display_mb_modes_flag;
- int display_b_modes_flag;
- int display_mv_flag;
-} vp8_ppflags_t;
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_PPFLAGS_H_
diff --git a/thirdparty/libvpx/vp8/common/quant_common.c b/thirdparty/libvpx/vp8/common/quant_common.c
deleted file mode 100644
index 05f9210702..0000000000
--- a/thirdparty/libvpx/vp8/common/quant_common.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "quant_common.h"
-
-static const int dc_qlookup[QINDEX_RANGE] =
-{
- 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17,
- 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118,
- 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157,
-};
-
-static const int ac_qlookup[QINDEX_RANGE] =
-{
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
- 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152,
- 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209,
- 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
-};
-
-
-int vp8_dc_quant(int QIndex, int Delta)
-{
- int retval;
-
- QIndex = QIndex + Delta;
-
- if (QIndex > 127)
- QIndex = 127;
- else if (QIndex < 0)
- QIndex = 0;
-
- retval = dc_qlookup[ QIndex ];
- return retval;
-}
-
-int vp8_dc2quant(int QIndex, int Delta)
-{
- int retval;
-
- QIndex = QIndex + Delta;
-
- if (QIndex > 127)
- QIndex = 127;
- else if (QIndex < 0)
- QIndex = 0;
-
- retval = dc_qlookup[ QIndex ] * 2;
- return retval;
-
-}
-int vp8_dc_uv_quant(int QIndex, int Delta)
-{
- int retval;
-
- QIndex = QIndex + Delta;
-
- if (QIndex > 127)
- QIndex = 127;
- else if (QIndex < 0)
- QIndex = 0;
-
- retval = dc_qlookup[ QIndex ];
-
- if (retval > 132)
- retval = 132;
-
- return retval;
-}
-
-int vp8_ac_yquant(int QIndex)
-{
- int retval;
-
- if (QIndex > 127)
- QIndex = 127;
- else if (QIndex < 0)
- QIndex = 0;
-
- retval = ac_qlookup[ QIndex ];
- return retval;
-}
-
-int vp8_ac2quant(int QIndex, int Delta)
-{
- int retval;
-
- QIndex = QIndex + Delta;
-
- if (QIndex > 127)
- QIndex = 127;
- else if (QIndex < 0)
- QIndex = 0;
-
- /* For all x in [0..284], x*155/100 is bitwise equal to (x*101581) >> 16.
- * The smallest precision for that is '(x*6349) >> 12' but 16 is a good
- * word size. */
- retval = (ac_qlookup[ QIndex ] * 101581) >> 16;
-
- if (retval < 8)
- retval = 8;
-
- return retval;
-}
-int vp8_ac_uv_quant(int QIndex, int Delta)
-{
- int retval;
-
- QIndex = QIndex + Delta;
-
- if (QIndex > 127)
- QIndex = 127;
- else if (QIndex < 0)
- QIndex = 0;
-
- retval = ac_qlookup[ QIndex ];
- return retval;
-}
diff --git a/thirdparty/libvpx/vp8/common/quant_common.h b/thirdparty/libvpx/vp8/common/quant_common.h
deleted file mode 100644
index 700b5e6d72..0000000000
--- a/thirdparty/libvpx/vp8/common/quant_common.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_COMMON_QUANT_COMMON_H_
-#define VP8_COMMON_QUANT_COMMON_H_
-
-
-#include "string.h"
-#include "blockd.h"
-#include "onyxc_int.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int vp8_ac_yquant(int QIndex);
-extern int vp8_dc_quant(int QIndex, int Delta);
-extern int vp8_dc2quant(int QIndex, int Delta);
-extern int vp8_ac2quant(int QIndex, int Delta);
-extern int vp8_dc_uv_quant(int QIndex, int Delta);
-extern int vp8_ac_uv_quant(int QIndex, int Delta);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_QUANT_COMMON_H_
diff --git a/thirdparty/libvpx/vp8/common/reconinter.c b/thirdparty/libvpx/vp8/common/reconinter.c
deleted file mode 100644
index e302595587..0000000000
--- a/thirdparty/libvpx/vp8/common/reconinter.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include <limits.h>
-#include <string.h>
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "blockd.h"
-#include "reconinter.h"
-#if CONFIG_RUNTIME_CPU_DETECT
-#include "onyxc_int.h"
-#endif
-
-void vp8_copy_mem16x16_c(
- unsigned char *src,
- int src_stride,
- unsigned char *dst,
- int dst_stride)
-{
-
- int r;
-
- for (r = 0; r < 16; r++)
- {
- memcpy(dst, src, 16);
-
- src += src_stride;
- dst += dst_stride;
-
- }
-
-}
-
-void vp8_copy_mem8x8_c(
- unsigned char *src,
- int src_stride,
- unsigned char *dst,
- int dst_stride)
-{
- int r;
-
- for (r = 0; r < 8; r++)
- {
- memcpy(dst, src, 8);
-
- src += src_stride;
- dst += dst_stride;
-
- }
-
-}
-
-void vp8_copy_mem8x4_c(
- unsigned char *src,
- int src_stride,
- unsigned char *dst,
- int dst_stride)
-{
- int r;
-
- for (r = 0; r < 4; r++)
- {
- memcpy(dst, src, 8);
-
- src += src_stride;
- dst += dst_stride;
-
- }
-
-}
-
-
-void vp8_build_inter_predictors_b(BLOCKD *d, int pitch, unsigned char *base_pre, int pre_stride, vp8_subpix_fn_t sppf)
-{
- int r;
- unsigned char *pred_ptr = d->predictor;
- unsigned char *ptr;
- ptr = base_pre + d->offset + (d->bmi.mv.as_mv.row >> 3) * pre_stride + (d->bmi.mv.as_mv.col >> 3);
-
- if (d->bmi.mv.as_mv.row & 7 || d->bmi.mv.as_mv.col & 7)
- {
- sppf(ptr, pre_stride, d->bmi.mv.as_mv.col & 7, d->bmi.mv.as_mv.row & 7, pred_ptr, pitch);
- }
- else
- {
- for (r = 0; r < 4; r++)
- {
- pred_ptr[0] = ptr[0];
- pred_ptr[1] = ptr[1];
- pred_ptr[2] = ptr[2];
- pred_ptr[3] = ptr[3];
- pred_ptr += pitch;
- ptr += pre_stride;
- }
- }
-}
-
-static void build_inter_predictors4b(MACROBLOCKD *x, BLOCKD *d, unsigned char *dst, int dst_stride, unsigned char *base_pre, int pre_stride)
-{
- unsigned char *ptr;
- ptr = base_pre + d->offset + (d->bmi.mv.as_mv.row >> 3) * pre_stride + (d->bmi.mv.as_mv.col >> 3);
-
- if (d->bmi.mv.as_mv.row & 7 || d->bmi.mv.as_mv.col & 7)
- {
- x->subpixel_predict8x8(ptr, pre_stride, d->bmi.mv.as_mv.col & 7, d->bmi.mv.as_mv.row & 7, dst, dst_stride);
- }
- else
- {
- vp8_copy_mem8x8(ptr, pre_stride, dst, dst_stride);
- }
-}
-
-static void build_inter_predictors2b(MACROBLOCKD *x, BLOCKD *d, unsigned char *dst, int dst_stride, unsigned char *base_pre, int pre_stride)
-{
- unsigned char *ptr;
- ptr = base_pre + d->offset + (d->bmi.mv.as_mv.row >> 3) * pre_stride + (d->bmi.mv.as_mv.col >> 3);
-
- if (d->bmi.mv.as_mv.row & 7 || d->bmi.mv.as_mv.col & 7)
- {
- x->subpixel_predict8x4(ptr, pre_stride, d->bmi.mv.as_mv.col & 7, d->bmi.mv.as_mv.row & 7, dst, dst_stride);
- }
- else
- {
- vp8_copy_mem8x4(ptr, pre_stride, dst, dst_stride);
- }
-}
-
-static void build_inter_predictors_b(BLOCKD *d, unsigned char *dst, int dst_stride, unsigned char *base_pre, int pre_stride, vp8_subpix_fn_t sppf)
-{
- int r;
- unsigned char *ptr;
- ptr = base_pre + d->offset + (d->bmi.mv.as_mv.row >> 3) * pre_stride + (d->bmi.mv.as_mv.col >> 3);
-
- if (d->bmi.mv.as_mv.row & 7 || d->bmi.mv.as_mv.col & 7)
- {
- sppf(ptr, pre_stride, d->bmi.mv.as_mv.col & 7, d->bmi.mv.as_mv.row & 7, dst, dst_stride);
- }
- else
- {
- for (r = 0; r < 4; r++)
- {
- dst[0] = ptr[0];
- dst[1] = ptr[1];
- dst[2] = ptr[2];
- dst[3] = ptr[3];
- dst += dst_stride;
- ptr += pre_stride;
- }
- }
-}
-
-
-/*encoder only*/
-void vp8_build_inter16x16_predictors_mbuv(MACROBLOCKD *x)
-{
- unsigned char *uptr, *vptr;
- unsigned char *upred_ptr = &x->predictor[256];
- unsigned char *vpred_ptr = &x->predictor[320];
-
- int mv_row = x->mode_info_context->mbmi.mv.as_mv.row;
- int mv_col = x->mode_info_context->mbmi.mv.as_mv.col;
- int offset;
- int pre_stride = x->pre.uv_stride;
-
- /* calc uv motion vectors */
- mv_row += 1 | (mv_row >> (sizeof(int) * CHAR_BIT - 1));
- mv_col += 1 | (mv_col >> (sizeof(int) * CHAR_BIT - 1));
- mv_row /= 2;
- mv_col /= 2;
- mv_row &= x->fullpixel_mask;
- mv_col &= x->fullpixel_mask;
-
- offset = (mv_row >> 3) * pre_stride + (mv_col >> 3);
- uptr = x->pre.u_buffer + offset;
- vptr = x->pre.v_buffer + offset;
-
- if ((mv_row | mv_col) & 7)
- {
- x->subpixel_predict8x8(uptr, pre_stride, mv_col & 7, mv_row & 7, upred_ptr, 8);
- x->subpixel_predict8x8(vptr, pre_stride, mv_col & 7, mv_row & 7, vpred_ptr, 8);
- }
- else
- {
- vp8_copy_mem8x8(uptr, pre_stride, upred_ptr, 8);
- vp8_copy_mem8x8(vptr, pre_stride, vpred_ptr, 8);
- }
-}
-
-/*encoder only*/
-void vp8_build_inter4x4_predictors_mbuv(MACROBLOCKD *x)
-{
- int i, j;
- int pre_stride = x->pre.uv_stride;
- unsigned char *base_pre;
-
- /* build uv mvs */
- for (i = 0; i < 2; i++)
- {
- for (j = 0; j < 2; j++)
- {
- int yoffset = i * 8 + j * 2;
- int uoffset = 16 + i * 2 + j;
- int voffset = 20 + i * 2 + j;
-
- int temp;
-
- temp = x->block[yoffset ].bmi.mv.as_mv.row
- + x->block[yoffset+1].bmi.mv.as_mv.row
- + x->block[yoffset+4].bmi.mv.as_mv.row
- + x->block[yoffset+5].bmi.mv.as_mv.row;
-
- temp += 4 + ((temp >> (sizeof(temp) * CHAR_BIT - 1)) * 8);
-
- x->block[uoffset].bmi.mv.as_mv.row = (temp / 8) & x->fullpixel_mask;
-
- temp = x->block[yoffset ].bmi.mv.as_mv.col
- + x->block[yoffset+1].bmi.mv.as_mv.col
- + x->block[yoffset+4].bmi.mv.as_mv.col
- + x->block[yoffset+5].bmi.mv.as_mv.col;
-
- temp += 4 + ((temp >> (sizeof(temp) * CHAR_BIT - 1)) * 8);
-
- x->block[uoffset].bmi.mv.as_mv.col = (temp / 8) & x->fullpixel_mask;
-
- x->block[voffset].bmi.mv.as_int = x->block[uoffset].bmi.mv.as_int;
- }
- }
-
- base_pre = x->pre.u_buffer;
- for (i = 16; i < 20; i += 2)
- {
- BLOCKD *d0 = &x->block[i];
- BLOCKD *d1 = &x->block[i+1];
-
- if (d0->bmi.mv.as_int == d1->bmi.mv.as_int)
- build_inter_predictors2b(x, d0, d0->predictor, 8, base_pre, pre_stride);
- else
- {
- vp8_build_inter_predictors_b(d0, 8, base_pre, pre_stride, x->subpixel_predict);
- vp8_build_inter_predictors_b(d1, 8, base_pre, pre_stride, x->subpixel_predict);
- }
- }
-
- base_pre = x->pre.v_buffer;
- for (i = 20; i < 24; i += 2)
- {
- BLOCKD *d0 = &x->block[i];
- BLOCKD *d1 = &x->block[i+1];
-
- if (d0->bmi.mv.as_int == d1->bmi.mv.as_int)
- build_inter_predictors2b(x, d0, d0->predictor, 8, base_pre, pre_stride);
- else
- {
- vp8_build_inter_predictors_b(d0, 8, base_pre, pre_stride, x->subpixel_predict);
- vp8_build_inter_predictors_b(d1, 8, base_pre, pre_stride, x->subpixel_predict);
- }
- }
-}
-
-
-/*encoder only*/
-void vp8_build_inter16x16_predictors_mby(MACROBLOCKD *x,
- unsigned char *dst_y,
- int dst_ystride)
-{
- unsigned char *ptr_base;
- unsigned char *ptr;
- int mv_row = x->mode_info_context->mbmi.mv.as_mv.row;
- int mv_col = x->mode_info_context->mbmi.mv.as_mv.col;
- int pre_stride = x->pre.y_stride;
-
- ptr_base = x->pre.y_buffer;
- ptr = ptr_base + (mv_row >> 3) * pre_stride + (mv_col >> 3);
-
- if ((mv_row | mv_col) & 7)
- {
- x->subpixel_predict16x16(ptr, pre_stride, mv_col & 7, mv_row & 7,
- dst_y, dst_ystride);
- }
- else
- {
- vp8_copy_mem16x16(ptr, pre_stride, dst_y,
- dst_ystride);
- }
-}
-
-static void clamp_mv_to_umv_border(MV *mv, const MACROBLOCKD *xd)
-{
- /* If the MV points so far into the UMV border that no visible pixels
- * are used for reconstruction, the subpel part of the MV can be
- * discarded and the MV limited to 16 pixels with equivalent results.
- *
- * This limit kicks in at 19 pixels for the top and left edges, for
- * the 16 pixels plus 3 taps right of the central pixel when subpel
- * filtering. The bottom and right edges use 16 pixels plus 2 pixels
- * left of the central pixel when filtering.
- */
- if (mv->col < (xd->mb_to_left_edge - (19 << 3)))
- mv->col = xd->mb_to_left_edge - (16 << 3);
- else if (mv->col > xd->mb_to_right_edge + (18 << 3))
- mv->col = xd->mb_to_right_edge + (16 << 3);
-
- if (mv->row < (xd->mb_to_top_edge - (19 << 3)))
- mv->row = xd->mb_to_top_edge - (16 << 3);
- else if (mv->row > xd->mb_to_bottom_edge + (18 << 3))
- mv->row = xd->mb_to_bottom_edge + (16 << 3);
-}
-
-/* A version of the above function for chroma block MVs.*/
-static void clamp_uvmv_to_umv_border(MV *mv, const MACROBLOCKD *xd)
-{
- mv->col = (2*mv->col < (xd->mb_to_left_edge - (19 << 3))) ?
- (xd->mb_to_left_edge - (16 << 3)) >> 1 : mv->col;
- mv->col = (2*mv->col > xd->mb_to_right_edge + (18 << 3)) ?
- (xd->mb_to_right_edge + (16 << 3)) >> 1 : mv->col;
-
- mv->row = (2*mv->row < (xd->mb_to_top_edge - (19 << 3))) ?
- (xd->mb_to_top_edge - (16 << 3)) >> 1 : mv->row;
- mv->row = (2*mv->row > xd->mb_to_bottom_edge + (18 << 3)) ?
- (xd->mb_to_bottom_edge + (16 << 3)) >> 1 : mv->row;
-}
-
-void vp8_build_inter16x16_predictors_mb(MACROBLOCKD *x,
- unsigned char *dst_y,
- unsigned char *dst_u,
- unsigned char *dst_v,
- int dst_ystride,
- int dst_uvstride)
-{
- int offset;
- unsigned char *ptr;
- unsigned char *uptr, *vptr;
-
- int_mv _16x16mv;
-
- unsigned char *ptr_base = x->pre.y_buffer;
- int pre_stride = x->pre.y_stride;
-
- _16x16mv.as_int = x->mode_info_context->mbmi.mv.as_int;
-
- if (x->mode_info_context->mbmi.need_to_clamp_mvs)
- {
- clamp_mv_to_umv_border(&_16x16mv.as_mv, x);
- }
-
- ptr = ptr_base + ( _16x16mv.as_mv.row >> 3) * pre_stride + (_16x16mv.as_mv.col >> 3);
-
- if ( _16x16mv.as_int & 0x00070007)
- {
- x->subpixel_predict16x16(ptr, pre_stride, _16x16mv.as_mv.col & 7, _16x16mv.as_mv.row & 7, dst_y, dst_ystride);
- }
- else
- {
- vp8_copy_mem16x16(ptr, pre_stride, dst_y, dst_ystride);
- }
-
- /* calc uv motion vectors */
- _16x16mv.as_mv.row += 1 | (_16x16mv.as_mv.row >> (sizeof(int) * CHAR_BIT - 1));
- _16x16mv.as_mv.col += 1 | (_16x16mv.as_mv.col >> (sizeof(int) * CHAR_BIT - 1));
- _16x16mv.as_mv.row /= 2;
- _16x16mv.as_mv.col /= 2;
- _16x16mv.as_mv.row &= x->fullpixel_mask;
- _16x16mv.as_mv.col &= x->fullpixel_mask;
-
- pre_stride >>= 1;
- offset = ( _16x16mv.as_mv.row >> 3) * pre_stride + (_16x16mv.as_mv.col >> 3);
- uptr = x->pre.u_buffer + offset;
- vptr = x->pre.v_buffer + offset;
-
- if ( _16x16mv.as_int & 0x00070007)
- {
- x->subpixel_predict8x8(uptr, pre_stride, _16x16mv.as_mv.col & 7, _16x16mv.as_mv.row & 7, dst_u, dst_uvstride);
- x->subpixel_predict8x8(vptr, pre_stride, _16x16mv.as_mv.col & 7, _16x16mv.as_mv.row & 7, dst_v, dst_uvstride);
- }
- else
- {
- vp8_copy_mem8x8(uptr, pre_stride, dst_u, dst_uvstride);
- vp8_copy_mem8x8(vptr, pre_stride, dst_v, dst_uvstride);
- }
-}
-
-static void build_inter4x4_predictors_mb(MACROBLOCKD *x)
-{
- int i;
- unsigned char *base_dst = x->dst.y_buffer;
- unsigned char *base_pre = x->pre.y_buffer;
-
- if (x->mode_info_context->mbmi.partitioning < 3)
- {
- BLOCKD *b;
- int dst_stride = x->dst.y_stride;
-
- x->block[ 0].bmi = x->mode_info_context->bmi[ 0];
- x->block[ 2].bmi = x->mode_info_context->bmi[ 2];
- x->block[ 8].bmi = x->mode_info_context->bmi[ 8];
- x->block[10].bmi = x->mode_info_context->bmi[10];
- if (x->mode_info_context->mbmi.need_to_clamp_mvs)
- {
- clamp_mv_to_umv_border(&x->block[ 0].bmi.mv.as_mv, x);
- clamp_mv_to_umv_border(&x->block[ 2].bmi.mv.as_mv, x);
- clamp_mv_to_umv_border(&x->block[ 8].bmi.mv.as_mv, x);
- clamp_mv_to_umv_border(&x->block[10].bmi.mv.as_mv, x);
- }
-
- b = &x->block[ 0];
- build_inter_predictors4b(x, b, base_dst + b->offset, dst_stride, base_pre, dst_stride);
- b = &x->block[ 2];
- build_inter_predictors4b(x, b, base_dst + b->offset, dst_stride, base_pre, dst_stride);
- b = &x->block[ 8];
- build_inter_predictors4b(x, b, base_dst + b->offset, dst_stride, base_pre, dst_stride);
- b = &x->block[10];
- build_inter_predictors4b(x, b, base_dst + b->offset, dst_stride, base_pre, dst_stride);
- }
- else
- {
- for (i = 0; i < 16; i += 2)
- {
- BLOCKD *d0 = &x->block[i];
- BLOCKD *d1 = &x->block[i+1];
- int dst_stride = x->dst.y_stride;
-
- x->block[i+0].bmi = x->mode_info_context->bmi[i+0];
- x->block[i+1].bmi = x->mode_info_context->bmi[i+1];
- if (x->mode_info_context->mbmi.need_to_clamp_mvs)
- {
- clamp_mv_to_umv_border(&x->block[i+0].bmi.mv.as_mv, x);
- clamp_mv_to_umv_border(&x->block[i+1].bmi.mv.as_mv, x);
- }
-
- if (d0->bmi.mv.as_int == d1->bmi.mv.as_int)
- build_inter_predictors2b(x, d0, base_dst + d0->offset, dst_stride, base_pre, dst_stride);
- else
- {
- build_inter_predictors_b(d0, base_dst + d0->offset, dst_stride, base_pre, dst_stride, x->subpixel_predict);
- build_inter_predictors_b(d1, base_dst + d1->offset, dst_stride, base_pre, dst_stride, x->subpixel_predict);
- }
-
- }
-
- }
- base_dst = x->dst.u_buffer;
- base_pre = x->pre.u_buffer;
- for (i = 16; i < 20; i += 2)
- {
- BLOCKD *d0 = &x->block[i];
- BLOCKD *d1 = &x->block[i+1];
- int dst_stride = x->dst.uv_stride;
-
- /* Note: uv mvs already clamped in build_4x4uvmvs() */
-
- if (d0->bmi.mv.as_int == d1->bmi.mv.as_int)
- build_inter_predictors2b(x, d0, base_dst + d0->offset, dst_stride, base_pre, dst_stride);
- else
- {
- build_inter_predictors_b(d0, base_dst + d0->offset, dst_stride, base_pre, dst_stride, x->subpixel_predict);
- build_inter_predictors_b(d1, base_dst + d1->offset, dst_stride, base_pre, dst_stride, x->subpixel_predict);
- }
- }
-
- base_dst = x->dst.v_buffer;
- base_pre = x->pre.v_buffer;
- for (i = 20; i < 24; i += 2)
- {
- BLOCKD *d0 = &x->block[i];
- BLOCKD *d1 = &x->block[i+1];
- int dst_stride = x->dst.uv_stride;
-
- /* Note: uv mvs already clamped in build_4x4uvmvs() */
-
- if (d0->bmi.mv.as_int == d1->bmi.mv.as_int)
- build_inter_predictors2b(x, d0, base_dst + d0->offset, dst_stride, base_pre, dst_stride);
- else
- {
- build_inter_predictors_b(d0, base_dst + d0->offset, dst_stride, base_pre, dst_stride, x->subpixel_predict);
- build_inter_predictors_b(d1, base_dst + d1->offset, dst_stride, base_pre, dst_stride, x->subpixel_predict);
- }
- }
-}
-
-static
-void build_4x4uvmvs(MACROBLOCKD *x)
-{
- int i, j;
-
- for (i = 0; i < 2; i++)
- {
- for (j = 0; j < 2; j++)
- {
- int yoffset = i * 8 + j * 2;
- int uoffset = 16 + i * 2 + j;
- int voffset = 20 + i * 2 + j;
-
- int temp;
-
- temp = x->mode_info_context->bmi[yoffset + 0].mv.as_mv.row
- + x->mode_info_context->bmi[yoffset + 1].mv.as_mv.row
- + x->mode_info_context->bmi[yoffset + 4].mv.as_mv.row
- + x->mode_info_context->bmi[yoffset + 5].mv.as_mv.row;
-
- temp += 4 + ((temp >> (sizeof(temp) * CHAR_BIT - 1)) * 8);
-
- x->block[uoffset].bmi.mv.as_mv.row = (temp / 8) & x->fullpixel_mask;
-
- temp = x->mode_info_context->bmi[yoffset + 0].mv.as_mv.col
- + x->mode_info_context->bmi[yoffset + 1].mv.as_mv.col
- + x->mode_info_context->bmi[yoffset + 4].mv.as_mv.col
- + x->mode_info_context->bmi[yoffset + 5].mv.as_mv.col;
-
- temp += 4 + ((temp >> (sizeof(temp) * CHAR_BIT - 1)) * 8);
-
- x->block[uoffset].bmi.mv.as_mv.col = (temp / 8) & x->fullpixel_mask;
-
- if (x->mode_info_context->mbmi.need_to_clamp_mvs)
- clamp_uvmv_to_umv_border(&x->block[uoffset].bmi.mv.as_mv, x);
-
- x->block[voffset].bmi.mv.as_int = x->block[uoffset].bmi.mv.as_int;
- }
- }
-}
-
-void vp8_build_inter_predictors_mb(MACROBLOCKD *xd)
-{
- if (xd->mode_info_context->mbmi.mode != SPLITMV)
- {
- vp8_build_inter16x16_predictors_mb(xd, xd->dst.y_buffer,
- xd->dst.u_buffer, xd->dst.v_buffer,
- xd->dst.y_stride, xd->dst.uv_stride);
- }
- else
- {
- build_4x4uvmvs(xd);
- build_inter4x4_predictors_mb(xd);
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/reconinter.h b/thirdparty/libvpx/vp8/common/reconinter.h
deleted file mode 100644
index ba979b9664..0000000000
--- a/thirdparty/libvpx/vp8/common/reconinter.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_RECONINTER_H_
-#define VP8_COMMON_RECONINTER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern void vp8_build_inter_predictors_mb(MACROBLOCKD *x);
-extern void vp8_build_inter16x16_predictors_mb(MACROBLOCKD *x,
- unsigned char *dst_y,
- unsigned char *dst_u,
- unsigned char *dst_v,
- int dst_ystride,
- int dst_uvstride);
-
-
-extern void vp8_build_inter16x16_predictors_mby(MACROBLOCKD *x,
- unsigned char *dst_y,
- int dst_ystride);
-extern void vp8_build_inter_predictors_b(BLOCKD *d, int pitch,
- unsigned char *base_pre,
- int pre_stride,
- vp8_subpix_fn_t sppf);
-
-extern void vp8_build_inter16x16_predictors_mbuv(MACROBLOCKD *x);
-extern void vp8_build_inter4x4_predictors_mbuv(MACROBLOCKD *x);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_RECONINTER_H_
diff --git a/thirdparty/libvpx/vp8/common/reconintra.c b/thirdparty/libvpx/vp8/common/reconintra.c
deleted file mode 100644
index 356655dac7..0000000000
--- a/thirdparty/libvpx/vp8/common/reconintra.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "./vp8_rtcd.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/vpx_once.h"
-#include "blockd.h"
-#include "vp8/common/reconintra.h"
-#include "vp8/common/reconintra4x4.h"
-
-enum {
- SIZE_16,
- SIZE_8,
- NUM_SIZES,
-};
-
-typedef void (*intra_pred_fn)(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left);
-
-static intra_pred_fn pred[4][NUM_SIZES];
-static intra_pred_fn dc_pred[2][2][NUM_SIZES];
-
-static void vp8_init_intra_predictors_internal(void)
-{
-#define INIT_SIZE(sz) \
- pred[V_PRED][SIZE_##sz] = vpx_v_predictor_##sz##x##sz; \
- pred[H_PRED][SIZE_##sz] = vpx_h_predictor_##sz##x##sz; \
- pred[TM_PRED][SIZE_##sz] = vpx_tm_predictor_##sz##x##sz; \
- \
- dc_pred[0][0][SIZE_##sz] = vpx_dc_128_predictor_##sz##x##sz; \
- dc_pred[0][1][SIZE_##sz] = vpx_dc_top_predictor_##sz##x##sz; \
- dc_pred[1][0][SIZE_##sz] = vpx_dc_left_predictor_##sz##x##sz; \
- dc_pred[1][1][SIZE_##sz] = vpx_dc_predictor_##sz##x##sz
-
- INIT_SIZE(16);
- INIT_SIZE(8);
- vp8_init_intra4x4_predictors_internal();
-}
-
-void vp8_build_intra_predictors_mby_s(MACROBLOCKD *x,
- unsigned char * yabove_row,
- unsigned char * yleft,
- int left_stride,
- unsigned char * ypred_ptr,
- int y_stride)
-{
- MB_PREDICTION_MODE mode = x->mode_info_context->mbmi.mode;
- DECLARE_ALIGNED(16, uint8_t, yleft_col[16]);
- int i;
- intra_pred_fn fn;
-
- for (i = 0; i < 16; i++)
- {
- yleft_col[i] = yleft[i* left_stride];
- }
-
- if (mode == DC_PRED)
- {
- fn = dc_pred[x->left_available][x->up_available][SIZE_16];
- }
- else
- {
- fn = pred[mode][SIZE_16];
- }
-
- fn(ypred_ptr, y_stride, yabove_row, yleft_col);
-}
-
-void vp8_build_intra_predictors_mbuv_s(MACROBLOCKD *x,
- unsigned char * uabove_row,
- unsigned char * vabove_row,
- unsigned char * uleft,
- unsigned char * vleft,
- int left_stride,
- unsigned char * upred_ptr,
- unsigned char * vpred_ptr,
- int pred_stride)
-{
- MB_PREDICTION_MODE uvmode = x->mode_info_context->mbmi.uv_mode;
- unsigned char uleft_col[8];
- unsigned char vleft_col[8];
- int i;
- intra_pred_fn fn;
-
- for (i = 0; i < 8; i++)
- {
- uleft_col[i] = uleft[i * left_stride];
- vleft_col[i] = vleft[i * left_stride];
- }
-
- if (uvmode == DC_PRED)
- {
- fn = dc_pred[x->left_available][x->up_available][SIZE_8];
- }
- else
- {
- fn = pred[uvmode][SIZE_8];
- }
-
- fn(upred_ptr, pred_stride, uabove_row, uleft_col);
- fn(vpred_ptr, pred_stride, vabove_row, vleft_col);
-}
-
-void vp8_init_intra_predictors(void)
-{
- once(vp8_init_intra_predictors_internal);
-}
diff --git a/thirdparty/libvpx/vp8/common/reconintra.h b/thirdparty/libvpx/vp8/common/reconintra.h
deleted file mode 100644
index b6225a6637..0000000000
--- a/thirdparty/libvpx/vp8/common/reconintra.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_RECONINTRA_H_
-#define VP8_COMMON_RECONINTRA_H_
-
-#include "vp8/common/blockd.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_build_intra_predictors_mby_s(MACROBLOCKD *x,
- unsigned char *yabove_row,
- unsigned char *yleft,
- int left_stride,
- unsigned char *ypred_ptr,
- int y_stride);
-
-void vp8_build_intra_predictors_mbuv_s(MACROBLOCKD *x,
- unsigned char * uabove_row,
- unsigned char * vabove_row,
- unsigned char * uleft,
- unsigned char * vleft,
- int left_stride,
- unsigned char * upred_ptr,
- unsigned char * vpred_ptr,
- int pred_stride);
-
-void vp8_init_intra_predictors(void);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_RECONINTRA_H_
diff --git a/thirdparty/libvpx/vp8/common/reconintra4x4.c b/thirdparty/libvpx/vp8/common/reconintra4x4.c
deleted file mode 100644
index 35ad891eff..0000000000
--- a/thirdparty/libvpx/vp8/common/reconintra4x4.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <string.h>
-
-#include "vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vp8_rtcd.h"
-#include "blockd.h"
-
-typedef void (*intra_pred_fn)(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left);
-
-static intra_pred_fn pred[10];
-
-void vp8_init_intra4x4_predictors_internal(void)
-{
- pred[B_DC_PRED] = vpx_dc_predictor_4x4;
- pred[B_TM_PRED] = vpx_tm_predictor_4x4;
- pred[B_VE_PRED] = vpx_ve_predictor_4x4;
- pred[B_HE_PRED] = vpx_he_predictor_4x4;
- pred[B_LD_PRED] = vpx_d45e_predictor_4x4;
- pred[B_RD_PRED] = vpx_d135_predictor_4x4;
- pred[B_VR_PRED] = vpx_d117_predictor_4x4;
- pred[B_VL_PRED] = vpx_d63f_predictor_4x4;
- pred[B_HD_PRED] = vpx_d153_predictor_4x4;
- pred[B_HU_PRED] = vpx_d207_predictor_4x4;
-}
-
-void vp8_intra4x4_predict(unsigned char *above,
- unsigned char *yleft, int left_stride,
- B_PREDICTION_MODE b_mode,
- unsigned char *dst, int dst_stride,
- unsigned char top_left)
-{
- unsigned char Left[4];
- unsigned char Aboveb[12], *Above = Aboveb + 4;
-
- Left[0] = yleft[0];
- Left[1] = yleft[left_stride];
- Left[2] = yleft[2 * left_stride];
- Left[3] = yleft[3 * left_stride];
- memcpy(Above, above, 8);
- Above[-1] = top_left;
-
- pred[b_mode](dst, dst_stride, Above, Left);
-}
diff --git a/thirdparty/libvpx/vp8/common/reconintra4x4.h b/thirdparty/libvpx/vp8/common/reconintra4x4.h
deleted file mode 100644
index 5dc5d13a5c..0000000000
--- a/thirdparty/libvpx/vp8/common/reconintra4x4.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_RECONINTRA4X4_H_
-#define VP8_COMMON_RECONINTRA4X4_H_
-#include "vp8/common/blockd.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static INLINE void intra_prediction_down_copy(MACROBLOCKD *xd,
- unsigned char *above_right_src)
-{
- int dst_stride = xd->dst.y_stride;
- unsigned char *above_right_dst = xd->dst.y_buffer - dst_stride + 16;
-
- unsigned int *src_ptr = (unsigned int *)above_right_src;
- unsigned int *dst_ptr0 = (unsigned int *)(above_right_dst + 4 * dst_stride);
- unsigned int *dst_ptr1 = (unsigned int *)(above_right_dst + 8 * dst_stride);
- unsigned int *dst_ptr2 = (unsigned int *)(above_right_dst + 12 * dst_stride);
-
- *dst_ptr0 = *src_ptr;
- *dst_ptr1 = *src_ptr;
- *dst_ptr2 = *src_ptr;
-}
-
-void vp8_intra4x4_predict(unsigned char *Above,
- unsigned char *yleft, int left_stride,
- B_PREDICTION_MODE b_mode,
- unsigned char *dst, int dst_stride,
- unsigned char top_left);
-
-void vp8_init_intra4x4_predictors_internal(void);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_RECONINTRA4X4_H_
diff --git a/thirdparty/libvpx/vp8/common/rtcd.c b/thirdparty/libvpx/vp8/common/rtcd.c
deleted file mode 100644
index ab0e9b47fe..0000000000
--- a/thirdparty/libvpx/vp8/common/rtcd.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2011 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#include "./vpx_config.h"
-#define RTCD_C
-#include "./vp8_rtcd.h"
-#include "vpx_ports/vpx_once.h"
-
-
-void vp8_rtcd()
-{
- once(setup_rtcd_internal);
-}
diff --git a/thirdparty/libvpx/vp8/common/setupintrarecon.c b/thirdparty/libvpx/vp8/common/setupintrarecon.c
deleted file mode 100644
index 669564db42..0000000000
--- a/thirdparty/libvpx/vp8/common/setupintrarecon.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "setupintrarecon.h"
-#include "vpx_mem/vpx_mem.h"
-
-void vp8_setup_intra_recon(YV12_BUFFER_CONFIG *ybf)
-{
- int i;
-
- /* set up frame new frame for intra coded blocks */
- memset(ybf->y_buffer - 1 - ybf->y_stride, 127, ybf->y_width + 5);
- for (i = 0; i < ybf->y_height; i++)
- ybf->y_buffer[ybf->y_stride *i - 1] = (unsigned char) 129;
-
- memset(ybf->u_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
- for (i = 0; i < ybf->uv_height; i++)
- ybf->u_buffer[ybf->uv_stride *i - 1] = (unsigned char) 129;
-
- memset(ybf->v_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
- for (i = 0; i < ybf->uv_height; i++)
- ybf->v_buffer[ybf->uv_stride *i - 1] = (unsigned char) 129;
-
-}
-
-void vp8_setup_intra_recon_top_line(YV12_BUFFER_CONFIG *ybf)
-{
- memset(ybf->y_buffer - 1 - ybf->y_stride, 127, ybf->y_width + 5);
- memset(ybf->u_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
- memset(ybf->v_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
-}
diff --git a/thirdparty/libvpx/vp8/common/setupintrarecon.h b/thirdparty/libvpx/vp8/common/setupintrarecon.h
deleted file mode 100644
index 1857c4e26a..0000000000
--- a/thirdparty/libvpx/vp8/common/setupintrarecon.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_COMMON_SETUPINTRARECON_H_
-#define VP8_COMMON_SETUPINTRARECON_H_
-
-#include "./vpx_config.h"
-#include "vpx_scale/yv12config.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern void vp8_setup_intra_recon(YV12_BUFFER_CONFIG *ybf);
-extern void vp8_setup_intra_recon_top_line(YV12_BUFFER_CONFIG *ybf);
-
-static INLINE void setup_intra_recon_left(unsigned char *y_buffer,
- unsigned char *u_buffer,
- unsigned char *v_buffer,
- int y_stride,
- int uv_stride)
-{
- int i;
-
- for (i = 0; i < 16; i++)
- y_buffer[y_stride *i] = (unsigned char) 129;
-
- for (i = 0; i < 8; i++)
- u_buffer[uv_stride *i] = (unsigned char) 129;
-
- for (i = 0; i < 8; i++)
- v_buffer[uv_stride *i] = (unsigned char) 129;
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_SETUPINTRARECON_H_
diff --git a/thirdparty/libvpx/vp8/common/swapyv12buffer.c b/thirdparty/libvpx/vp8/common/swapyv12buffer.c
deleted file mode 100644
index 73656b3d72..0000000000
--- a/thirdparty/libvpx/vp8/common/swapyv12buffer.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "swapyv12buffer.h"
-
-void vp8_swap_yv12_buffer(YV12_BUFFER_CONFIG *new_frame, YV12_BUFFER_CONFIG *last_frame)
-{
- unsigned char *temp;
-
- temp = last_frame->buffer_alloc;
- last_frame->buffer_alloc = new_frame->buffer_alloc;
- new_frame->buffer_alloc = temp;
-
- temp = last_frame->y_buffer;
- last_frame->y_buffer = new_frame->y_buffer;
- new_frame->y_buffer = temp;
-
- temp = last_frame->u_buffer;
- last_frame->u_buffer = new_frame->u_buffer;
- new_frame->u_buffer = temp;
-
- temp = last_frame->v_buffer;
- last_frame->v_buffer = new_frame->v_buffer;
- new_frame->v_buffer = temp;
-
-}
diff --git a/thirdparty/libvpx/vp8/common/swapyv12buffer.h b/thirdparty/libvpx/vp8/common/swapyv12buffer.h
deleted file mode 100644
index 1d66cd3d62..0000000000
--- a/thirdparty/libvpx/vp8/common/swapyv12buffer.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_SWAPYV12BUFFER_H_
-#define VP8_COMMON_SWAPYV12BUFFER_H_
-
-#include "vpx_scale/yv12config.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_swap_yv12_buffer(YV12_BUFFER_CONFIG *new_frame, YV12_BUFFER_CONFIG *last_frame);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_SWAPYV12BUFFER_H_
diff --git a/thirdparty/libvpx/vp8/common/systemdependent.h b/thirdparty/libvpx/vp8/common/systemdependent.h
deleted file mode 100644
index 3d44e37cf2..0000000000
--- a/thirdparty/libvpx/vp8/common/systemdependent.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_COMMON_SYSTEMDEPENDENT_H_
-#define VP8_COMMON_SYSTEMDEPENDENT_H_
-
-#include "vpx_config.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct VP8Common;
-void vp8_machine_specific_config(struct VP8Common *);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_SYSTEMDEPENDENT_H_
diff --git a/thirdparty/libvpx/vp8/common/threading.h b/thirdparty/libvpx/vp8/common/threading.h
deleted file mode 100644
index 183b49b8ff..0000000000
--- a/thirdparty/libvpx/vp8/common/threading.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_THREADING_H_
-#define VP8_COMMON_THREADING_H_
-
-#include "./vpx_config.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if CONFIG_OS_SUPPORT && CONFIG_MULTITHREAD
-
-/* Thread management macros */
-#if defined(_WIN32) && !HAVE_PTHREAD_H
-/* Win32 */
-#include <process.h>
-#include <windows.h>
-#define THREAD_FUNCTION unsigned int __stdcall
-#define THREAD_FUNCTION_RETURN DWORD
-#define THREAD_SPECIFIC_INDEX DWORD
-#define pthread_t HANDLE
-#define pthread_attr_t DWORD
-#define pthread_detach(thread) if(thread!=NULL)CloseHandle(thread)
-#define thread_sleep(nms) Sleep(nms)
-#define pthread_cancel(thread) terminate_thread(thread,0)
-#define ts_key_create(ts_key, destructor) {ts_key = TlsAlloc();};
-#define pthread_getspecific(ts_key) TlsGetValue(ts_key)
-#define pthread_setspecific(ts_key, value) TlsSetValue(ts_key, (void *)value)
-#define pthread_self() GetCurrentThreadId()
-
-#elif defined(__OS2__)
-/* OS/2 */
-#define INCL_DOS
-#include <os2.h>
-
-#include <stdlib.h>
-#define THREAD_FUNCTION void *
-#define THREAD_FUNCTION_RETURN void *
-#define THREAD_SPECIFIC_INDEX PULONG
-#define pthread_t TID
-#define pthread_attr_t ULONG
-#define pthread_detach(thread) 0
-#define thread_sleep(nms) DosSleep(nms)
-#define pthread_cancel(thread) DosKillThread(thread)
-#define ts_key_create(ts_key, destructor) \
- DosAllocThreadLocalMemory(1, &(ts_key));
-#define pthread_getspecific(ts_key) ((void *)(*(ts_key)))
-#define pthread_setspecific(ts_key, value) (*(ts_key)=(ULONG)(value))
-#define pthread_self() _gettid()
-#else
-#ifdef __APPLE__
-#include <mach/mach_init.h>
-#include <mach/semaphore.h>
-#include <mach/task.h>
-#include <time.h>
-#include <unistd.h>
-
-#else
-#include <semaphore.h>
-#endif
-
-#include <pthread.h>
-/* pthreads */
-/* Nearly everything is already defined */
-#define THREAD_FUNCTION void *
-#define THREAD_FUNCTION_RETURN void *
-#define THREAD_SPECIFIC_INDEX pthread_key_t
-#define ts_key_create(ts_key, destructor) pthread_key_create (&(ts_key), destructor);
-#endif
-
-/* Synchronization macros: Win32 and Pthreads */
-#if defined(_WIN32) && !HAVE_PTHREAD_H
-#define sem_t HANDLE
-#define pause(voidpara) __asm PAUSE
-#define sem_init(sem, sem_attr1, sem_init_value) (int)((*sem = CreateSemaphore(NULL,0,32768,NULL))==NULL)
-#define sem_wait(sem) (int)(WAIT_OBJECT_0 != WaitForSingleObject(*sem,INFINITE))
-#define sem_post(sem) ReleaseSemaphore(*sem,1,NULL)
-#define sem_destroy(sem) if(*sem)((int)(CloseHandle(*sem))==TRUE)
-#define thread_sleep(nms) Sleep(nms)
-
-#elif defined(__OS2__)
-typedef struct
-{
- HEV event;
- HMTX wait_mutex;
- HMTX count_mutex;
- int count;
-} sem_t;
-
-static inline int sem_init(sem_t *sem, int pshared, unsigned int value)
-{
- DosCreateEventSem(NULL, &sem->event, pshared ? DC_SEM_SHARED : 0,
- value > 0 ? TRUE : FALSE);
- DosCreateMutexSem(NULL, &sem->wait_mutex, 0, FALSE);
- DosCreateMutexSem(NULL, &sem->count_mutex, 0, FALSE);
-
- sem->count = value;
-
- return 0;
-}
-
-static inline int sem_wait(sem_t * sem)
-{
- DosRequestMutexSem(sem->wait_mutex, -1);
-
- DosWaitEventSem(sem->event, -1);
-
- DosRequestMutexSem(sem->count_mutex, -1);
-
- sem->count--;
- if (sem->count == 0)
- {
- ULONG post_count;
-
- DosResetEventSem(sem->event, &post_count);
- }
-
- DosReleaseMutexSem(sem->count_mutex);
-
- DosReleaseMutexSem(sem->wait_mutex);
-
- return 0;
-}
-
-static inline int sem_post(sem_t * sem)
-{
- DosRequestMutexSem(sem->count_mutex, -1);
-
- if (sem->count < 32768)
- {
- sem->count++;
- DosPostEventSem(sem->event);
- }
-
- DosReleaseMutexSem(sem->count_mutex);
-
- return 0;
-}
-
-static inline int sem_destroy(sem_t * sem)
-{
- DosCloseEventSem(sem->event);
- DosCloseMutexSem(sem->wait_mutex);
- DosCloseMutexSem(sem->count_mutex);
-
- return 0;
-}
-
-#define thread_sleep(nms) DosSleep(nms)
-
-#else
-
-#ifdef __APPLE__
-#define sem_t semaphore_t
-#define sem_init(X,Y,Z) semaphore_create(mach_task_self(), X, SYNC_POLICY_FIFO, Z)
-#define sem_wait(sem) (semaphore_wait(*sem) )
-#define sem_post(sem) semaphore_signal(*sem)
-#define sem_destroy(sem) semaphore_destroy(mach_task_self(),*sem)
-#define thread_sleep(nms) /* { struct timespec ts;ts.tv_sec=0; ts.tv_nsec = 1000*nms;nanosleep(&ts, NULL);} */
-#else
-#include <unistd.h>
-#include <sched.h>
-#define thread_sleep(nms) sched_yield();/* {struct timespec ts;ts.tv_sec=0; ts.tv_nsec = 1000*nms;nanosleep(&ts, NULL);} */
-#endif
-/* Not Windows. Assume pthreads */
-
-#endif
-
-#if ARCH_X86 || ARCH_X86_64
-#include "vpx_ports/x86.h"
-#else
-#define x86_pause_hint()
-#endif
-
-#include "vpx_util/vpx_thread.h"
-
-static INLINE void mutex_lock(pthread_mutex_t *const mutex) {
- const int kMaxTryLocks = 4000;
- int locked = 0;
- int i;
-
- for (i = 0; i < kMaxTryLocks; ++i) {
- if (!pthread_mutex_trylock(mutex)) {
- locked = 1;
- break;
- }
- }
-
- if (!locked)
- pthread_mutex_lock(mutex);
-}
-
-static INLINE int protected_read(pthread_mutex_t *const mutex, const int *p) {
- int ret;
- mutex_lock(mutex);
- ret = *p;
- pthread_mutex_unlock(mutex);
- return ret;
-}
-
-static INLINE void sync_read(pthread_mutex_t *const mutex, int mb_col,
- const int *last_row_current_mb_col,
- const int nsync) {
- while (mb_col > (protected_read(mutex, last_row_current_mb_col) - nsync)) {
- x86_pause_hint();
- thread_sleep(0);
- }
-}
-
-static INLINE void protected_write(pthread_mutex_t *mutex, int *p, int v) {
- mutex_lock(mutex);
- *p = v;
- pthread_mutex_unlock(mutex);
-}
-
-#endif /* CONFIG_OS_SUPPORT && CONFIG_MULTITHREAD */
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_THREADING_H_
diff --git a/thirdparty/libvpx/vp8/common/treecoder.c b/thirdparty/libvpx/vp8/common/treecoder.c
deleted file mode 100644
index d80c64bdfa..0000000000
--- a/thirdparty/libvpx/vp8/common/treecoder.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#if CONFIG_DEBUG
-#include <assert.h>
-#endif
-#include <stdio.h>
-
-#include "treecoder.h"
-
-static void tree2tok(
- struct vp8_token_struct *const p,
- vp8_tree t,
- int i,
- int v,
- int L
-)
-{
- v += v;
- ++L;
-
- do
- {
- const vp8_tree_index j = t[i++];
-
- if (j <= 0)
- {
- p[-j].value = v;
- p[-j].Len = L;
- }
- else
- tree2tok(p, t, j, v, L);
- }
- while (++v & 1);
-}
-
-void vp8_tokens_from_tree(struct vp8_token_struct *p, vp8_tree t)
-{
- tree2tok(p, t, 0, 0, 0);
-}
-
-void vp8_tokens_from_tree_offset(struct vp8_token_struct *p, vp8_tree t,
- int offset)
-{
- tree2tok(p - offset, t, 0, 0, 0);
-}
-
-static void branch_counts(
- int n, /* n = size of alphabet */
- vp8_token tok [ /* n */ ],
- vp8_tree tree,
- unsigned int branch_ct [ /* n-1 */ ] [2],
- const unsigned int num_events[ /* n */ ]
-)
-{
- const int tree_len = n - 1;
- int t = 0;
-
-#if CONFIG_DEBUG
- assert(tree_len);
-#endif
-
- do
- {
- branch_ct[t][0] = branch_ct[t][1] = 0;
- }
- while (++t < tree_len);
-
- t = 0;
-
- do
- {
- int L = tok[t].Len;
- const int enc = tok[t].value;
- const unsigned int ct = num_events[t];
-
- vp8_tree_index i = 0;
-
- do
- {
- const int b = (enc >> --L) & 1;
- const int j = i >> 1;
-#if CONFIG_DEBUG
- assert(j < tree_len && 0 <= L);
-#endif
-
- branch_ct [j] [b] += ct;
- i = tree[ i + b];
- }
- while (i > 0);
-
-#if CONFIG_DEBUG
- assert(!L);
-#endif
- }
- while (++t < n);
-
-}
-
-
-void vp8_tree_probs_from_distribution(
- int n, /* n = size of alphabet */
- vp8_token tok [ /* n */ ],
- vp8_tree tree,
- vp8_prob probs [ /* n-1 */ ],
- unsigned int branch_ct [ /* n-1 */ ] [2],
- const unsigned int num_events[ /* n */ ],
- unsigned int Pfac,
- int rd
-)
-{
- const int tree_len = n - 1;
- int t = 0;
-
- branch_counts(n, tok, tree, branch_ct, num_events);
-
- do
- {
- const unsigned int *const c = branch_ct[t];
- const unsigned int tot = c[0] + c[1];
-
-#if CONFIG_DEBUG
- assert(tot < (1 << 24)); /* no overflow below */
-#endif
-
- if (tot)
- {
- const unsigned int p = ((c[0] * Pfac) + (rd ? tot >> 1 : 0)) / tot;
- probs[t] = p < 256 ? (p ? p : 1) : 255; /* agree w/old version for now */
- }
- else
- probs[t] = vp8_prob_half;
- }
- while (++t < tree_len);
-}
diff --git a/thirdparty/libvpx/vp8/common/treecoder.h b/thirdparty/libvpx/vp8/common/treecoder.h
deleted file mode 100644
index d22b7c570c..0000000000
--- a/thirdparty/libvpx/vp8/common/treecoder.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_COMMON_TREECODER_H_
-#define VP8_COMMON_TREECODER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef unsigned char vp8bc_index_t; /* probability index */
-
-
-typedef unsigned char vp8_prob;
-
-#define vp8_prob_half ( (vp8_prob) 128)
-
-typedef signed char vp8_tree_index;
-struct bool_coder_spec;
-
-typedef struct bool_coder_spec bool_coder_spec;
-typedef struct bool_writer bool_writer;
-typedef struct bool_reader bool_reader;
-
-typedef const bool_coder_spec c_bool_coder_spec;
-typedef const bool_writer c_bool_writer;
-typedef const bool_reader c_bool_reader;
-
-
-
-# define vp8_complement( x) (255 - x)
-
-
-/* We build coding trees compactly in arrays.
- Each node of the tree is a pair of vp8_tree_indices.
- Array index often references a corresponding probability table.
- Index <= 0 means done encoding/decoding and value = -Index,
- Index > 0 means need another bit, specification at index.
- Nonnegative indices are always even; processing begins at node 0. */
-
-typedef const vp8_tree_index vp8_tree[], *vp8_tree_p;
-
-
-typedef const struct vp8_token_struct
-{
- int value;
- int Len;
-} vp8_token;
-
-/* Construct encoding array from tree. */
-
-void vp8_tokens_from_tree(struct vp8_token_struct *, vp8_tree);
-void vp8_tokens_from_tree_offset(struct vp8_token_struct *, vp8_tree,
- int offset);
-
-
-/* Convert array of token occurrence counts into a table of probabilities
- for the associated binary encoding tree. Also writes count of branches
- taken for each node on the tree; this facilitiates decisions as to
- probability updates. */
-
-void vp8_tree_probs_from_distribution(
- int n, /* n = size of alphabet */
- vp8_token tok [ /* n */ ],
- vp8_tree tree,
- vp8_prob probs [ /* n-1 */ ],
- unsigned int branch_ct [ /* n-1 */ ] [2],
- const unsigned int num_events[ /* n */ ],
- unsigned int Pfactor,
- int Round
-);
-
-/* Variant of above using coder spec rather than hardwired 8-bit probs. */
-
-void vp8bc_tree_probs_from_distribution(
- int n, /* n = size of alphabet */
- vp8_token tok [ /* n */ ],
- vp8_tree tree,
- vp8_prob probs [ /* n-1 */ ],
- unsigned int branch_ct [ /* n-1 */ ] [2],
- const unsigned int num_events[ /* n */ ],
- c_bool_coder_spec *s
-);
-
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_TREECODER_H_
diff --git a/thirdparty/libvpx/vp8/common/vp8_entropymodedata.h b/thirdparty/libvpx/vp8/common/vp8_entropymodedata.h
deleted file mode 100644
index c4aed49897..0000000000
--- a/thirdparty/libvpx/vp8/common/vp8_entropymodedata.h
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
-*/
-
-#ifndef VP8_COMMON_VP8_ENTROPYMODEDATA_H_
-#define VP8_COMMON_VP8_ENTROPYMODEDATA_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*Generated file, included by entropymode.c*/
-
-
-const struct vp8_token_struct vp8_bmode_encodings[VP8_BINTRAMODES] =
-{
- { 0, 1 },
- { 2, 2 },
- { 6, 3 },
- { 28, 5 },
- { 30, 5 },
- { 58, 6 },
- { 59, 6 },
- { 62, 6 },
- { 126, 7 },
- { 127, 7 }
-};
-
-const struct vp8_token_struct vp8_ymode_encodings[VP8_YMODES] =
-{
- { 0, 1 },
- { 4, 3 },
- { 5, 3 },
- { 6, 3 },
- { 7, 3 }
-};
-
-const struct vp8_token_struct vp8_kf_ymode_encodings[VP8_YMODES] =
-{
- { 4, 3 },
- { 5, 3 },
- { 6, 3 },
- { 7, 3 },
- { 0, 1 }
-};
-
-const struct vp8_token_struct vp8_uv_mode_encodings[VP8_UV_MODES] =
-{
- { 0, 1 },
- { 2, 2 },
- { 6, 3 },
- { 7, 3 }
-};
-
-const struct vp8_token_struct vp8_mbsplit_encodings[VP8_NUMMBSPLITS] =
-{
- { 6, 3 },
- { 7, 3 },
- { 2, 2 },
- { 0, 1 }
-};
-
-const struct vp8_token_struct vp8_mv_ref_encoding_array[VP8_MVREFS] =
-{
- { 2, 2 },
- { 6, 3 },
- { 0, 1 },
- { 14, 4 },
- { 15, 4 }
-};
-
-const struct vp8_token_struct vp8_sub_mv_ref_encoding_array[VP8_SUBMVREFS] =
-{
- { 0, 1 },
- { 2, 2 },
- { 6, 3 },
- { 7, 3 }
-};
-
-const struct vp8_token_struct vp8_small_mvencodings[8] =
-{
- { 0, 3 },
- { 1, 3 },
- { 2, 3 },
- { 3, 3 },
- { 4, 3 },
- { 5, 3 },
- { 6, 3 },
- { 7, 3 }
-};
-
-const vp8_prob vp8_ymode_prob[VP8_YMODES-1] =
-{
- 112, 86, 140, 37
-};
-
-const vp8_prob vp8_kf_ymode_prob[VP8_YMODES-1] =
-{
- 145, 156, 163, 128
-};
-
-const vp8_prob vp8_uv_mode_prob[VP8_UV_MODES-1] =
-{
- 162, 101, 204
-};
-
-const vp8_prob vp8_kf_uv_mode_prob[VP8_UV_MODES-1] =
-{
- 142, 114, 183
-};
-
-const vp8_prob vp8_bmode_prob[VP8_BINTRAMODES-1] =
-{
- 120, 90, 79, 133, 87, 85, 80, 111, 151
-};
-
-
-
-const vp8_prob vp8_kf_bmode_prob
-[VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES-1] =
-{
- {
- { 231, 120, 48, 89, 115, 113, 120, 152, 112 },
- { 152, 179, 64, 126, 170, 118, 46, 70, 95 },
- { 175, 69, 143, 80, 85, 82, 72, 155, 103 },
- { 56, 58, 10, 171, 218, 189, 17, 13, 152 },
- { 144, 71, 10, 38, 171, 213, 144, 34, 26 },
- { 114, 26, 17, 163, 44, 195, 21, 10, 173 },
- { 121, 24, 80, 195, 26, 62, 44, 64, 85 },
- { 170, 46, 55, 19, 136, 160, 33, 206, 71 },
- { 63, 20, 8, 114, 114, 208, 12, 9, 226 },
- { 81, 40, 11, 96, 182, 84, 29, 16, 36 }
- },
- {
- { 134, 183, 89, 137, 98, 101, 106, 165, 148 },
- { 72, 187, 100, 130, 157, 111, 32, 75, 80 },
- { 66, 102, 167, 99, 74, 62, 40, 234, 128 },
- { 41, 53, 9, 178, 241, 141, 26, 8, 107 },
- { 104, 79, 12, 27, 217, 255, 87, 17, 7 },
- { 74, 43, 26, 146, 73, 166, 49, 23, 157 },
- { 65, 38, 105, 160, 51, 52, 31, 115, 128 },
- { 87, 68, 71, 44, 114, 51, 15, 186, 23 },
- { 47, 41, 14, 110, 182, 183, 21, 17, 194 },
- { 66, 45, 25, 102, 197, 189, 23, 18, 22 }
- },
- {
- { 88, 88, 147, 150, 42, 46, 45, 196, 205 },
- { 43, 97, 183, 117, 85, 38, 35, 179, 61 },
- { 39, 53, 200, 87, 26, 21, 43, 232, 171 },
- { 56, 34, 51, 104, 114, 102, 29, 93, 77 },
- { 107, 54, 32, 26, 51, 1, 81, 43, 31 },
- { 39, 28, 85, 171, 58, 165, 90, 98, 64 },
- { 34, 22, 116, 206, 23, 34, 43, 166, 73 },
- { 68, 25, 106, 22, 64, 171, 36, 225, 114 },
- { 34, 19, 21, 102, 132, 188, 16, 76, 124 },
- { 62, 18, 78, 95, 85, 57, 50, 48, 51 }
- },
- {
- { 193, 101, 35, 159, 215, 111, 89, 46, 111 },
- { 60, 148, 31, 172, 219, 228, 21, 18, 111 },
- { 112, 113, 77, 85, 179, 255, 38, 120, 114 },
- { 40, 42, 1, 196, 245, 209, 10, 25, 109 },
- { 100, 80, 8, 43, 154, 1, 51, 26, 71 },
- { 88, 43, 29, 140, 166, 213, 37, 43, 154 },
- { 61, 63, 30, 155, 67, 45, 68, 1, 209 },
- { 142, 78, 78, 16, 255, 128, 34, 197, 171 },
- { 41, 40, 5, 102, 211, 183, 4, 1, 221 },
- { 51, 50, 17, 168, 209, 192, 23, 25, 82 }
- },
- {
- { 125, 98, 42, 88, 104, 85, 117, 175, 82 },
- { 95, 84, 53, 89, 128, 100, 113, 101, 45 },
- { 75, 79, 123, 47, 51, 128, 81, 171, 1 },
- { 57, 17, 5, 71, 102, 57, 53, 41, 49 },
- { 115, 21, 2, 10, 102, 255, 166, 23, 6 },
- { 38, 33, 13, 121, 57, 73, 26, 1, 85 },
- { 41, 10, 67, 138, 77, 110, 90, 47, 114 },
- { 101, 29, 16, 10, 85, 128, 101, 196, 26 },
- { 57, 18, 10, 102, 102, 213, 34, 20, 43 },
- { 117, 20, 15, 36, 163, 128, 68, 1, 26 }
- },
- {
- { 138, 31, 36, 171, 27, 166, 38, 44, 229 },
- { 67, 87, 58, 169, 82, 115, 26, 59, 179 },
- { 63, 59, 90, 180, 59, 166, 93, 73, 154 },
- { 40, 40, 21, 116, 143, 209, 34, 39, 175 },
- { 57, 46, 22, 24, 128, 1, 54, 17, 37 },
- { 47, 15, 16, 183, 34, 223, 49, 45, 183 },
- { 46, 17, 33, 183, 6, 98, 15, 32, 183 },
- { 65, 32, 73, 115, 28, 128, 23, 128, 205 },
- { 40, 3, 9, 115, 51, 192, 18, 6, 223 },
- { 87, 37, 9, 115, 59, 77, 64, 21, 47 }
- },
- {
- { 104, 55, 44, 218, 9, 54, 53, 130, 226 },
- { 64, 90, 70, 205, 40, 41, 23, 26, 57 },
- { 54, 57, 112, 184, 5, 41, 38, 166, 213 },
- { 30, 34, 26, 133, 152, 116, 10, 32, 134 },
- { 75, 32, 12, 51, 192, 255, 160, 43, 51 },
- { 39, 19, 53, 221, 26, 114, 32, 73, 255 },
- { 31, 9, 65, 234, 2, 15, 1, 118, 73 },
- { 88, 31, 35, 67, 102, 85, 55, 186, 85 },
- { 56, 21, 23, 111, 59, 205, 45, 37, 192 },
- { 55, 38, 70, 124, 73, 102, 1, 34, 98 }
- },
- {
- { 102, 61, 71, 37, 34, 53, 31, 243, 192 },
- { 69, 60, 71, 38, 73, 119, 28, 222, 37 },
- { 68, 45, 128, 34, 1, 47, 11, 245, 171 },
- { 62, 17, 19, 70, 146, 85, 55, 62, 70 },
- { 75, 15, 9, 9, 64, 255, 184, 119, 16 },
- { 37, 43, 37, 154, 100, 163, 85, 160, 1 },
- { 63, 9, 92, 136, 28, 64, 32, 201, 85 },
- { 86, 6, 28, 5, 64, 255, 25, 248, 1 },
- { 56, 8, 17, 132, 137, 255, 55, 116, 128 },
- { 58, 15, 20, 82, 135, 57, 26, 121, 40 }
- },
- {
- { 164, 50, 31, 137, 154, 133, 25, 35, 218 },
- { 51, 103, 44, 131, 131, 123, 31, 6, 158 },
- { 86, 40, 64, 135, 148, 224, 45, 183, 128 },
- { 22, 26, 17, 131, 240, 154, 14, 1, 209 },
- { 83, 12, 13, 54, 192, 255, 68, 47, 28 },
- { 45, 16, 21, 91, 64, 222, 7, 1, 197 },
- { 56, 21, 39, 155, 60, 138, 23, 102, 213 },
- { 85, 26, 85, 85, 128, 128, 32, 146, 171 },
- { 18, 11, 7, 63, 144, 171, 4, 4, 246 },
- { 35, 27, 10, 146, 174, 171, 12, 26, 128 }
- },
- {
- { 190, 80, 35, 99, 180, 80, 126, 54, 45 },
- { 85, 126, 47, 87, 176, 51, 41, 20, 32 },
- { 101, 75, 128, 139, 118, 146, 116, 128, 85 },
- { 56, 41, 15, 176, 236, 85, 37, 9, 62 },
- { 146, 36, 19, 30, 171, 255, 97, 27, 20 },
- { 71, 30, 17, 119, 118, 255, 17, 18, 138 },
- { 101, 38, 60, 138, 55, 70, 43, 26, 142 },
- { 138, 45, 61, 62, 219, 1, 81, 188, 64 },
- { 32, 41, 20, 117, 151, 142, 20, 21, 163 },
- { 112, 19, 12, 61, 195, 128, 48, 4, 24 }
- }
-};
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_VP8_ENTROPYMODEDATA_H_
diff --git a/thirdparty/libvpx/vp8/common/vp8_loopfilter.c b/thirdparty/libvpx/vp8/common/vp8_loopfilter.c
deleted file mode 100644
index 756ad488f9..0000000000
--- a/thirdparty/libvpx/vp8/common/vp8_loopfilter.c
+++ /dev/null
@@ -1,661 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "loopfilter.h"
-#include "onyxc_int.h"
-#include "vpx_mem/vpx_mem.h"
-
-
-static void lf_init_lut(loop_filter_info_n *lfi)
-{
- int filt_lvl;
-
- for (filt_lvl = 0; filt_lvl <= MAX_LOOP_FILTER; filt_lvl++)
- {
- if (filt_lvl >= 40)
- {
- lfi->hev_thr_lut[KEY_FRAME][filt_lvl] = 2;
- lfi->hev_thr_lut[INTER_FRAME][filt_lvl] = 3;
- }
- else if (filt_lvl >= 20)
- {
- lfi->hev_thr_lut[KEY_FRAME][filt_lvl] = 1;
- lfi->hev_thr_lut[INTER_FRAME][filt_lvl] = 2;
- }
- else if (filt_lvl >= 15)
- {
- lfi->hev_thr_lut[KEY_FRAME][filt_lvl] = 1;
- lfi->hev_thr_lut[INTER_FRAME][filt_lvl] = 1;
- }
- else
- {
- lfi->hev_thr_lut[KEY_FRAME][filt_lvl] = 0;
- lfi->hev_thr_lut[INTER_FRAME][filt_lvl] = 0;
- }
- }
-
- lfi->mode_lf_lut[DC_PRED] = 1;
- lfi->mode_lf_lut[V_PRED] = 1;
- lfi->mode_lf_lut[H_PRED] = 1;
- lfi->mode_lf_lut[TM_PRED] = 1;
- lfi->mode_lf_lut[B_PRED] = 0;
-
- lfi->mode_lf_lut[ZEROMV] = 1;
- lfi->mode_lf_lut[NEARESTMV] = 2;
- lfi->mode_lf_lut[NEARMV] = 2;
- lfi->mode_lf_lut[NEWMV] = 2;
- lfi->mode_lf_lut[SPLITMV] = 3;
-
-}
-
-void vp8_loop_filter_update_sharpness(loop_filter_info_n *lfi,
- int sharpness_lvl)
-{
- int i;
-
- /* For each possible value for the loop filter fill out limits */
- for (i = 0; i <= MAX_LOOP_FILTER; i++)
- {
- int filt_lvl = i;
- int block_inside_limit = 0;
-
- /* Set loop filter paramaeters that control sharpness. */
- block_inside_limit = filt_lvl >> (sharpness_lvl > 0);
- block_inside_limit = block_inside_limit >> (sharpness_lvl > 4);
-
- if (sharpness_lvl > 0)
- {
- if (block_inside_limit > (9 - sharpness_lvl))
- block_inside_limit = (9 - sharpness_lvl);
- }
-
- if (block_inside_limit < 1)
- block_inside_limit = 1;
-
- memset(lfi->lim[i], block_inside_limit, SIMD_WIDTH);
- memset(lfi->blim[i], (2 * filt_lvl + block_inside_limit), SIMD_WIDTH);
- memset(lfi->mblim[i], (2 * (filt_lvl + 2) + block_inside_limit),
- SIMD_WIDTH);
- }
-}
-
-void vp8_loop_filter_init(VP8_COMMON *cm)
-{
- loop_filter_info_n *lfi = &cm->lf_info;
- int i;
-
- /* init limits for given sharpness*/
- vp8_loop_filter_update_sharpness(lfi, cm->sharpness_level);
- cm->last_sharpness_level = cm->sharpness_level;
-
- /* init LUT for lvl and hev thr picking */
- lf_init_lut(lfi);
-
- /* init hev threshold const vectors */
- for(i = 0; i < 4 ; i++)
- {
- memset(lfi->hev_thr[i], i, SIMD_WIDTH);
- }
-}
-
-void vp8_loop_filter_frame_init(VP8_COMMON *cm,
- MACROBLOCKD *mbd,
- int default_filt_lvl)
-{
- int seg, /* segment number */
- ref, /* index in ref_lf_deltas */
- mode; /* index in mode_lf_deltas */
-
- loop_filter_info_n *lfi = &cm->lf_info;
-
- /* update limits if sharpness has changed */
- if(cm->last_sharpness_level != cm->sharpness_level)
- {
- vp8_loop_filter_update_sharpness(lfi, cm->sharpness_level);
- cm->last_sharpness_level = cm->sharpness_level;
- }
-
- for(seg = 0; seg < MAX_MB_SEGMENTS; seg++)
- {
- int lvl_seg = default_filt_lvl;
- int lvl_ref, lvl_mode;
-
- /* Note the baseline filter values for each segment */
- if (mbd->segmentation_enabled)
- {
- /* Abs value */
- if (mbd->mb_segement_abs_delta == SEGMENT_ABSDATA)
- {
- lvl_seg = mbd->segment_feature_data[MB_LVL_ALT_LF][seg];
- }
- else /* Delta Value */
- {
- lvl_seg += mbd->segment_feature_data[MB_LVL_ALT_LF][seg];
- }
- lvl_seg = (lvl_seg > 0) ? ((lvl_seg > 63) ? 63: lvl_seg) : 0;
- }
-
- if (!mbd->mode_ref_lf_delta_enabled)
- {
- /* we could get rid of this if we assume that deltas are set to
- * zero when not in use; encoder always uses deltas
- */
- memset(lfi->lvl[seg][0], lvl_seg, 4 * 4 );
- continue;
- }
-
- /* INTRA_FRAME */
- ref = INTRA_FRAME;
-
- /* Apply delta for reference frame */
- lvl_ref = lvl_seg + mbd->ref_lf_deltas[ref];
-
- /* Apply delta for Intra modes */
- mode = 0; /* B_PRED */
- /* Only the split mode BPRED has a further special case */
- lvl_mode = lvl_ref + mbd->mode_lf_deltas[mode];
- /* clamp */
- lvl_mode = (lvl_mode > 0) ? (lvl_mode > 63 ? 63 : lvl_mode) : 0;
-
- lfi->lvl[seg][ref][mode] = lvl_mode;
-
- mode = 1; /* all the rest of Intra modes */
- /* clamp */
- lvl_mode = (lvl_ref > 0) ? (lvl_ref > 63 ? 63 : lvl_ref) : 0;
- lfi->lvl[seg][ref][mode] = lvl_mode;
-
- /* LAST, GOLDEN, ALT */
- for(ref = 1; ref < MAX_REF_FRAMES; ref++)
- {
- /* Apply delta for reference frame */
- lvl_ref = lvl_seg + mbd->ref_lf_deltas[ref];
-
- /* Apply delta for Inter modes */
- for (mode = 1; mode < 4; mode++)
- {
- lvl_mode = lvl_ref + mbd->mode_lf_deltas[mode];
- /* clamp */
- lvl_mode = (lvl_mode > 0) ? (lvl_mode > 63 ? 63 : lvl_mode) : 0;
-
- lfi->lvl[seg][ref][mode] = lvl_mode;
- }
- }
- }
-}
-
-
-void vp8_loop_filter_row_normal(VP8_COMMON *cm, MODE_INFO *mode_info_context,
- int mb_row, int post_ystride, int post_uvstride,
- unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr)
-{
- int mb_col;
- int filter_level;
- loop_filter_info_n *lfi_n = &cm->lf_info;
- loop_filter_info lfi;
- FRAME_TYPE frame_type = cm->frame_type;
-
- for (mb_col = 0; mb_col < cm->mb_cols; mb_col++)
- {
- int skip_lf = (mode_info_context->mbmi.mode != B_PRED &&
- mode_info_context->mbmi.mode != SPLITMV &&
- mode_info_context->mbmi.mb_skip_coeff);
-
- const int mode_index = lfi_n->mode_lf_lut[mode_info_context->mbmi.mode];
- const int seg = mode_info_context->mbmi.segment_id;
- const int ref_frame = mode_info_context->mbmi.ref_frame;
-
- filter_level = lfi_n->lvl[seg][ref_frame][mode_index];
-
- if (filter_level)
- {
- const int hev_index = lfi_n->hev_thr_lut[frame_type][filter_level];
- lfi.mblim = lfi_n->mblim[filter_level];
- lfi.blim = lfi_n->blim[filter_level];
- lfi.lim = lfi_n->lim[filter_level];
- lfi.hev_thr = lfi_n->hev_thr[hev_index];
-
- if (mb_col > 0)
- vp8_loop_filter_mbv
- (y_ptr, u_ptr, v_ptr, post_ystride, post_uvstride, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bv
- (y_ptr, u_ptr, v_ptr, post_ystride, post_uvstride, &lfi);
-
- /* don't apply across umv border */
- if (mb_row > 0)
- vp8_loop_filter_mbh
- (y_ptr, u_ptr, v_ptr, post_ystride, post_uvstride, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bh
- (y_ptr, u_ptr, v_ptr, post_ystride, post_uvstride, &lfi);
- }
-
- y_ptr += 16;
- u_ptr += 8;
- v_ptr += 8;
-
- mode_info_context++; /* step to next MB */
- }
-
-}
-
-void vp8_loop_filter_row_simple(VP8_COMMON *cm, MODE_INFO *mode_info_context,
- int mb_row, int post_ystride, int post_uvstride,
- unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr)
-{
- int mb_col;
- int filter_level;
- loop_filter_info_n *lfi_n = &cm->lf_info;
- (void)post_uvstride;
-
- for (mb_col = 0; mb_col < cm->mb_cols; mb_col++)
- {
- int skip_lf = (mode_info_context->mbmi.mode != B_PRED &&
- mode_info_context->mbmi.mode != SPLITMV &&
- mode_info_context->mbmi.mb_skip_coeff);
-
- const int mode_index = lfi_n->mode_lf_lut[mode_info_context->mbmi.mode];
- const int seg = mode_info_context->mbmi.segment_id;
- const int ref_frame = mode_info_context->mbmi.ref_frame;
-
- filter_level = lfi_n->lvl[seg][ref_frame][mode_index];
-
- if (filter_level)
- {
- if (mb_col > 0)
- vp8_loop_filter_simple_mbv
- (y_ptr, post_ystride, lfi_n->mblim[filter_level]);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bv
- (y_ptr, post_ystride, lfi_n->blim[filter_level]);
-
- /* don't apply across umv border */
- if (mb_row > 0)
- vp8_loop_filter_simple_mbh
- (y_ptr, post_ystride, lfi_n->mblim[filter_level]);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bh
- (y_ptr, post_ystride, lfi_n->blim[filter_level]);
- }
-
- y_ptr += 16;
- u_ptr += 8;
- v_ptr += 8;
-
- mode_info_context++; /* step to next MB */
- }
-
-}
-void vp8_loop_filter_frame(VP8_COMMON *cm,
- MACROBLOCKD *mbd,
- int frame_type)
-{
- YV12_BUFFER_CONFIG *post = cm->frame_to_show;
- loop_filter_info_n *lfi_n = &cm->lf_info;
- loop_filter_info lfi;
-
- int mb_row;
- int mb_col;
- int mb_rows = cm->mb_rows;
- int mb_cols = cm->mb_cols;
-
- int filter_level;
-
- unsigned char *y_ptr, *u_ptr, *v_ptr;
-
- /* Point at base of Mb MODE_INFO list */
- const MODE_INFO *mode_info_context = cm->mi;
- int post_y_stride = post->y_stride;
- int post_uv_stride = post->uv_stride;
-
- /* Initialize the loop filter for this frame. */
- vp8_loop_filter_frame_init(cm, mbd, cm->filter_level);
-
- /* Set up the buffer pointers */
- y_ptr = post->y_buffer;
- u_ptr = post->u_buffer;
- v_ptr = post->v_buffer;
-
- /* vp8_filter each macro block */
- if (cm->filter_type == NORMAL_LOOPFILTER)
- {
- for (mb_row = 0; mb_row < mb_rows; mb_row++)
- {
- for (mb_col = 0; mb_col < mb_cols; mb_col++)
- {
- int skip_lf = (mode_info_context->mbmi.mode != B_PRED &&
- mode_info_context->mbmi.mode != SPLITMV &&
- mode_info_context->mbmi.mb_skip_coeff);
-
- const int mode_index = lfi_n->mode_lf_lut[mode_info_context->mbmi.mode];
- const int seg = mode_info_context->mbmi.segment_id;
- const int ref_frame = mode_info_context->mbmi.ref_frame;
-
- filter_level = lfi_n->lvl[seg][ref_frame][mode_index];
-
- if (filter_level)
- {
- const int hev_index = lfi_n->hev_thr_lut[frame_type][filter_level];
- lfi.mblim = lfi_n->mblim[filter_level];
- lfi.blim = lfi_n->blim[filter_level];
- lfi.lim = lfi_n->lim[filter_level];
- lfi.hev_thr = lfi_n->hev_thr[hev_index];
-
- if (mb_col > 0)
- vp8_loop_filter_mbv
- (y_ptr, u_ptr, v_ptr, post_y_stride, post_uv_stride, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bv
- (y_ptr, u_ptr, v_ptr, post_y_stride, post_uv_stride, &lfi);
-
- /* don't apply across umv border */
- if (mb_row > 0)
- vp8_loop_filter_mbh
- (y_ptr, u_ptr, v_ptr, post_y_stride, post_uv_stride, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bh
- (y_ptr, u_ptr, v_ptr, post_y_stride, post_uv_stride, &lfi);
- }
-
- y_ptr += 16;
- u_ptr += 8;
- v_ptr += 8;
-
- mode_info_context++; /* step to next MB */
- }
- y_ptr += post_y_stride * 16 - post->y_width;
- u_ptr += post_uv_stride * 8 - post->uv_width;
- v_ptr += post_uv_stride * 8 - post->uv_width;
-
- mode_info_context++; /* Skip border mb */
-
- }
- }
- else /* SIMPLE_LOOPFILTER */
- {
- for (mb_row = 0; mb_row < mb_rows; mb_row++)
- {
- for (mb_col = 0; mb_col < mb_cols; mb_col++)
- {
- int skip_lf = (mode_info_context->mbmi.mode != B_PRED &&
- mode_info_context->mbmi.mode != SPLITMV &&
- mode_info_context->mbmi.mb_skip_coeff);
-
- const int mode_index = lfi_n->mode_lf_lut[mode_info_context->mbmi.mode];
- const int seg = mode_info_context->mbmi.segment_id;
- const int ref_frame = mode_info_context->mbmi.ref_frame;
-
- filter_level = lfi_n->lvl[seg][ref_frame][mode_index];
- if (filter_level)
- {
- const unsigned char * mblim = lfi_n->mblim[filter_level];
- const unsigned char * blim = lfi_n->blim[filter_level];
-
- if (mb_col > 0)
- vp8_loop_filter_simple_mbv
- (y_ptr, post_y_stride, mblim);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bv
- (y_ptr, post_y_stride, blim);
-
- /* don't apply across umv border */
- if (mb_row > 0)
- vp8_loop_filter_simple_mbh
- (y_ptr, post_y_stride, mblim);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bh
- (y_ptr, post_y_stride, blim);
- }
-
- y_ptr += 16;
- u_ptr += 8;
- v_ptr += 8;
-
- mode_info_context++; /* step to next MB */
- }
- y_ptr += post_y_stride * 16 - post->y_width;
- u_ptr += post_uv_stride * 8 - post->uv_width;
- v_ptr += post_uv_stride * 8 - post->uv_width;
-
- mode_info_context++; /* Skip border mb */
-
- }
- }
-}
-
-void vp8_loop_filter_frame_yonly
-(
- VP8_COMMON *cm,
- MACROBLOCKD *mbd,
- int default_filt_lvl
-)
-{
- YV12_BUFFER_CONFIG *post = cm->frame_to_show;
-
- unsigned char *y_ptr;
- int mb_row;
- int mb_col;
-
- loop_filter_info_n *lfi_n = &cm->lf_info;
- loop_filter_info lfi;
-
- int filter_level;
- FRAME_TYPE frame_type = cm->frame_type;
-
- /* Point at base of Mb MODE_INFO list */
- const MODE_INFO *mode_info_context = cm->mi;
-
-#if 0
- if(default_filt_lvl == 0) /* no filter applied */
- return;
-#endif
-
- /* Initialize the loop filter for this frame. */
- vp8_loop_filter_frame_init( cm, mbd, default_filt_lvl);
-
- /* Set up the buffer pointers */
- y_ptr = post->y_buffer;
-
- /* vp8_filter each macro block */
- for (mb_row = 0; mb_row < cm->mb_rows; mb_row++)
- {
- for (mb_col = 0; mb_col < cm->mb_cols; mb_col++)
- {
- int skip_lf = (mode_info_context->mbmi.mode != B_PRED &&
- mode_info_context->mbmi.mode != SPLITMV &&
- mode_info_context->mbmi.mb_skip_coeff);
-
- const int mode_index = lfi_n->mode_lf_lut[mode_info_context->mbmi.mode];
- const int seg = mode_info_context->mbmi.segment_id;
- const int ref_frame = mode_info_context->mbmi.ref_frame;
-
- filter_level = lfi_n->lvl[seg][ref_frame][mode_index];
-
- if (filter_level)
- {
- if (cm->filter_type == NORMAL_LOOPFILTER)
- {
- const int hev_index = lfi_n->hev_thr_lut[frame_type][filter_level];
- lfi.mblim = lfi_n->mblim[filter_level];
- lfi.blim = lfi_n->blim[filter_level];
- lfi.lim = lfi_n->lim[filter_level];
- lfi.hev_thr = lfi_n->hev_thr[hev_index];
-
- if (mb_col > 0)
- vp8_loop_filter_mbv
- (y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bv
- (y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
- /* don't apply across umv border */
- if (mb_row > 0)
- vp8_loop_filter_mbh
- (y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bh
- (y_ptr, 0, 0, post->y_stride, 0, &lfi);
- }
- else
- {
- if (mb_col > 0)
- vp8_loop_filter_simple_mbv
- (y_ptr, post->y_stride, lfi_n->mblim[filter_level]);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bv
- (y_ptr, post->y_stride, lfi_n->blim[filter_level]);
-
- /* don't apply across umv border */
- if (mb_row > 0)
- vp8_loop_filter_simple_mbh
- (y_ptr, post->y_stride, lfi_n->mblim[filter_level]);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bh
- (y_ptr, post->y_stride, lfi_n->blim[filter_level]);
- }
- }
-
- y_ptr += 16;
- mode_info_context ++; /* step to next MB */
-
- }
-
- y_ptr += post->y_stride * 16 - post->y_width;
- mode_info_context ++; /* Skip border mb */
- }
-
-}
-
-void vp8_loop_filter_partial_frame
-(
- VP8_COMMON *cm,
- MACROBLOCKD *mbd,
- int default_filt_lvl
-)
-{
- YV12_BUFFER_CONFIG *post = cm->frame_to_show;
-
- unsigned char *y_ptr;
- int mb_row;
- int mb_col;
- int mb_cols = post->y_width >> 4;
- int mb_rows = post->y_height >> 4;
-
- int linestocopy;
-
- loop_filter_info_n *lfi_n = &cm->lf_info;
- loop_filter_info lfi;
-
- int filter_level;
- FRAME_TYPE frame_type = cm->frame_type;
-
- const MODE_INFO *mode_info_context;
-
-#if 0
- if(default_filt_lvl == 0) /* no filter applied */
- return;
-#endif
-
- /* Initialize the loop filter for this frame. */
- vp8_loop_filter_frame_init( cm, mbd, default_filt_lvl);
-
- /* number of MB rows to use in partial filtering */
- linestocopy = mb_rows / PARTIAL_FRAME_FRACTION;
- linestocopy = linestocopy ? linestocopy << 4 : 16; /* 16 lines per MB */
-
- /* Set up the buffer pointers; partial image starts at ~middle of frame */
- y_ptr = post->y_buffer + ((post->y_height >> 5) * 16) * post->y_stride;
- mode_info_context = cm->mi + (post->y_height >> 5) * (mb_cols + 1);
-
- /* vp8_filter each macro block */
- for (mb_row = 0; mb_row<(linestocopy >> 4); mb_row++)
- {
- for (mb_col = 0; mb_col < mb_cols; mb_col++)
- {
- int skip_lf = (mode_info_context->mbmi.mode != B_PRED &&
- mode_info_context->mbmi.mode != SPLITMV &&
- mode_info_context->mbmi.mb_skip_coeff);
-
- const int mode_index =
- lfi_n->mode_lf_lut[mode_info_context->mbmi.mode];
- const int seg = mode_info_context->mbmi.segment_id;
- const int ref_frame = mode_info_context->mbmi.ref_frame;
-
- filter_level = lfi_n->lvl[seg][ref_frame][mode_index];
-
- if (filter_level)
- {
- if (cm->filter_type == NORMAL_LOOPFILTER)
- {
- const int hev_index = lfi_n->hev_thr_lut[frame_type][filter_level];
- lfi.mblim = lfi_n->mblim[filter_level];
- lfi.blim = lfi_n->blim[filter_level];
- lfi.lim = lfi_n->lim[filter_level];
- lfi.hev_thr = lfi_n->hev_thr[hev_index];
-
- if (mb_col > 0)
- vp8_loop_filter_mbv
- (y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bv
- (y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
- vp8_loop_filter_mbh
- (y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bh
- (y_ptr, 0, 0, post->y_stride, 0, &lfi);
- }
- else
- {
- if (mb_col > 0)
- vp8_loop_filter_simple_mbv
- (y_ptr, post->y_stride, lfi_n->mblim[filter_level]);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bv
- (y_ptr, post->y_stride, lfi_n->blim[filter_level]);
-
- vp8_loop_filter_simple_mbh
- (y_ptr, post->y_stride, lfi_n->mblim[filter_level]);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bh
- (y_ptr, post->y_stride, lfi_n->blim[filter_level]);
- }
- }
-
- y_ptr += 16;
- mode_info_context += 1; /* step to next MB */
- }
-
- y_ptr += post->y_stride * 16 - post->y_width;
- mode_info_context += 1; /* Skip border mb */
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/x86/copy_sse2.asm b/thirdparty/libvpx/vp8/common/x86/copy_sse2.asm
deleted file mode 100644
index 86fae26956..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/copy_sse2.asm
+++ /dev/null
@@ -1,93 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-
-;void vp8_copy32xn_sse2(
-; unsigned char *src_ptr,
-; int src_stride,
-; unsigned char *dst_ptr,
-; int dst_stride,
-; int height);
-global sym(vp8_copy32xn_sse2) PRIVATE
-sym(vp8_copy32xn_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;dst_ptr
-
- movsxd rax, dword ptr arg(1) ;src_stride
- movsxd rdx, dword ptr arg(3) ;dst_stride
- movsxd rcx, dword ptr arg(4) ;height
-
-.block_copy_sse2_loopx4:
- movdqu xmm0, XMMWORD PTR [rsi]
- movdqu xmm1, XMMWORD PTR [rsi + 16]
- movdqu xmm2, XMMWORD PTR [rsi + rax]
- movdqu xmm3, XMMWORD PTR [rsi + rax + 16]
-
- lea rsi, [rsi+rax*2]
-
- movdqu xmm4, XMMWORD PTR [rsi]
- movdqu xmm5, XMMWORD PTR [rsi + 16]
- movdqu xmm6, XMMWORD PTR [rsi + rax]
- movdqu xmm7, XMMWORD PTR [rsi + rax + 16]
-
- lea rsi, [rsi+rax*2]
-
- movdqa XMMWORD PTR [rdi], xmm0
- movdqa XMMWORD PTR [rdi + 16], xmm1
- movdqa XMMWORD PTR [rdi + rdx], xmm2
- movdqa XMMWORD PTR [rdi + rdx + 16], xmm3
-
- lea rdi, [rdi+rdx*2]
-
- movdqa XMMWORD PTR [rdi], xmm4
- movdqa XMMWORD PTR [rdi + 16], xmm5
- movdqa XMMWORD PTR [rdi + rdx], xmm6
- movdqa XMMWORD PTR [rdi + rdx + 16], xmm7
-
- lea rdi, [rdi+rdx*2]
-
- sub rcx, 4
- cmp rcx, 4
- jge .block_copy_sse2_loopx4
-
- cmp rcx, 0
- je .copy_is_done
-
-.block_copy_sse2_loop:
- movdqu xmm0, XMMWORD PTR [rsi]
- movdqu xmm1, XMMWORD PTR [rsi + 16]
- lea rsi, [rsi+rax]
-
- movdqa XMMWORD PTR [rdi], xmm0
- movdqa XMMWORD PTR [rdi + 16], xmm1
- lea rdi, [rdi+rdx]
-
- sub rcx, 1
- jne .block_copy_sse2_loop
-
-.copy_is_done:
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
diff --git a/thirdparty/libvpx/vp8/common/x86/copy_sse3.asm b/thirdparty/libvpx/vp8/common/x86/copy_sse3.asm
deleted file mode 100644
index d789a40ccf..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/copy_sse3.asm
+++ /dev/null
@@ -1,146 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "vpx_ports/x86_abi_support.asm"
-
-%macro STACK_FRAME_CREATE_X3 0
-%if ABI_IS_32BIT
- %define src_ptr rsi
- %define src_stride rax
- %define ref_ptr rdi
- %define ref_stride rdx
- %define end_ptr rcx
- %define ret_var rbx
- %define result_ptr arg(4)
- %define max_sad arg(4)
- %define height dword ptr arg(4)
- push rbp
- mov rbp, rsp
- push rsi
- push rdi
- push rbx
-
- mov rsi, arg(0) ; src_ptr
- mov rdi, arg(2) ; ref_ptr
-
- movsxd rax, dword ptr arg(1) ; src_stride
- movsxd rdx, dword ptr arg(3) ; ref_stride
-%else
- %if LIBVPX_YASM_WIN64
- SAVE_XMM 7, u
- %define src_ptr rcx
- %define src_stride rdx
- %define ref_ptr r8
- %define ref_stride r9
- %define end_ptr r10
- %define ret_var r11
- %define result_ptr [rsp+xmm_stack_space+8+4*8]
- %define max_sad [rsp+xmm_stack_space+8+4*8]
- %define height dword ptr [rsp+xmm_stack_space+8+4*8]
- %else
- %define src_ptr rdi
- %define src_stride rsi
- %define ref_ptr rdx
- %define ref_stride rcx
- %define end_ptr r9
- %define ret_var r10
- %define result_ptr r8
- %define max_sad r8
- %define height r8
- %endif
-%endif
-
-%endmacro
-
-%macro STACK_FRAME_DESTROY_X3 0
- %define src_ptr
- %define src_stride
- %define ref_ptr
- %define ref_stride
- %define end_ptr
- %define ret_var
- %define result_ptr
- %define max_sad
- %define height
-
-%if ABI_IS_32BIT
- pop rbx
- pop rdi
- pop rsi
- pop rbp
-%else
- %if LIBVPX_YASM_WIN64
- RESTORE_XMM
- %endif
-%endif
- ret
-%endmacro
-
-
-;void vp8_copy32xn_sse3(
-; unsigned char *src_ptr,
-; int src_stride,
-; unsigned char *dst_ptr,
-; int dst_stride,
-; int height);
-global sym(vp8_copy32xn_sse3) PRIVATE
-sym(vp8_copy32xn_sse3):
-
- STACK_FRAME_CREATE_X3
-
-.block_copy_sse3_loopx4:
- lea end_ptr, [src_ptr+src_stride*2]
-
- movdqu xmm0, XMMWORD PTR [src_ptr]
- movdqu xmm1, XMMWORD PTR [src_ptr + 16]
- movdqu xmm2, XMMWORD PTR [src_ptr + src_stride]
- movdqu xmm3, XMMWORD PTR [src_ptr + src_stride + 16]
- movdqu xmm4, XMMWORD PTR [end_ptr]
- movdqu xmm5, XMMWORD PTR [end_ptr + 16]
- movdqu xmm6, XMMWORD PTR [end_ptr + src_stride]
- movdqu xmm7, XMMWORD PTR [end_ptr + src_stride + 16]
-
- lea src_ptr, [src_ptr+src_stride*4]
-
- lea end_ptr, [ref_ptr+ref_stride*2]
-
- movdqa XMMWORD PTR [ref_ptr], xmm0
- movdqa XMMWORD PTR [ref_ptr + 16], xmm1
- movdqa XMMWORD PTR [ref_ptr + ref_stride], xmm2
- movdqa XMMWORD PTR [ref_ptr + ref_stride + 16], xmm3
- movdqa XMMWORD PTR [end_ptr], xmm4
- movdqa XMMWORD PTR [end_ptr + 16], xmm5
- movdqa XMMWORD PTR [end_ptr + ref_stride], xmm6
- movdqa XMMWORD PTR [end_ptr + ref_stride + 16], xmm7
-
- lea ref_ptr, [ref_ptr+ref_stride*4]
-
- sub height, 4
- cmp height, 4
- jge .block_copy_sse3_loopx4
-
- ;Check to see if there is more rows need to be copied.
- cmp height, 0
- je .copy_is_done
-
-.block_copy_sse3_loop:
- movdqu xmm0, XMMWORD PTR [src_ptr]
- movdqu xmm1, XMMWORD PTR [src_ptr + 16]
- lea src_ptr, [src_ptr+src_stride]
-
- movdqa XMMWORD PTR [ref_ptr], xmm0
- movdqa XMMWORD PTR [ref_ptr + 16], xmm1
- lea ref_ptr, [ref_ptr+ref_stride]
-
- sub height, 1
- jne .block_copy_sse3_loop
-
-.copy_is_done:
- STACK_FRAME_DESTROY_X3
diff --git a/thirdparty/libvpx/vp8/common/x86/dequantize_mmx.asm b/thirdparty/libvpx/vp8/common/x86/dequantize_mmx.asm
deleted file mode 100644
index 4e551f00aa..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/dequantize_mmx.asm
+++ /dev/null
@@ -1,258 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-
-;void vp8_dequantize_b_impl_mmx(short *sq, short *dq, short *q)
-global sym(vp8_dequantize_b_impl_mmx) PRIVATE
-sym(vp8_dequantize_b_impl_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 3
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;sq
- mov rdi, arg(1) ;dq
- mov rax, arg(2) ;q
-
- movq mm1, [rsi]
- pmullw mm1, [rax+0] ; mm4 *= kernel 0 modifiers.
- movq [rdi], mm1
-
- movq mm1, [rsi+8]
- pmullw mm1, [rax+8] ; mm4 *= kernel 0 modifiers.
- movq [rdi+8], mm1
-
- movq mm1, [rsi+16]
- pmullw mm1, [rax+16] ; mm4 *= kernel 0 modifiers.
- movq [rdi+16], mm1
-
- movq mm1, [rsi+24]
- pmullw mm1, [rax+24] ; mm4 *= kernel 0 modifiers.
- movq [rdi+24], mm1
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void dequant_idct_add_mmx(
-;short *input, 0
-;short *dq, 1
-;unsigned char *dest, 2
-;int stride) 3
-global sym(vp8_dequant_idct_add_mmx) PRIVATE
-sym(vp8_dequant_idct_add_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 4
- GET_GOT rbx
- push rdi
- ; end prolog
-
- mov rax, arg(0) ;input
- mov rdx, arg(1) ;dq
-
-
- movq mm0, [rax ]
- pmullw mm0, [rdx]
-
- movq mm1, [rax +8]
- pmullw mm1, [rdx +8]
-
- movq mm2, [rax+16]
- pmullw mm2, [rdx+16]
-
- movq mm3, [rax+24]
- pmullw mm3, [rdx+24]
-
- mov rdx, arg(2) ;dest
-
- pxor mm7, mm7
-
-
- movq [rax], mm7
- movq [rax+8], mm7
-
- movq [rax+16],mm7
- movq [rax+24],mm7
-
-
- movsxd rdi, dword ptr arg(3) ;stride
-
- psubw mm0, mm2 ; b1= 0-2
- paddw mm2, mm2 ;
-
- movq mm5, mm1
- paddw mm2, mm0 ; a1 =0+2
-
- pmulhw mm5, [GLOBAL(x_s1sqr2)];
- paddw mm5, mm1 ; ip1 * sin(pi/8) * sqrt(2)
-
- movq mm7, mm3 ;
- pmulhw mm7, [GLOBAL(x_c1sqr2less1)];
-
- paddw mm7, mm3 ; ip3 * cos(pi/8) * sqrt(2)
- psubw mm7, mm5 ; c1
-
- movq mm5, mm1
- movq mm4, mm3
-
- pmulhw mm5, [GLOBAL(x_c1sqr2less1)]
- paddw mm5, mm1
-
- pmulhw mm3, [GLOBAL(x_s1sqr2)]
- paddw mm3, mm4
-
- paddw mm3, mm5 ; d1
- movq mm6, mm2 ; a1
-
- movq mm4, mm0 ; b1
- paddw mm2, mm3 ;0
-
- paddw mm4, mm7 ;1
- psubw mm0, mm7 ;2
-
- psubw mm6, mm3 ;3
-
- movq mm1, mm2 ; 03 02 01 00
- movq mm3, mm4 ; 23 22 21 20
-
- punpcklwd mm1, mm0 ; 11 01 10 00
- punpckhwd mm2, mm0 ; 13 03 12 02
-
- punpcklwd mm3, mm6 ; 31 21 30 20
- punpckhwd mm4, mm6 ; 33 23 32 22
-
- movq mm0, mm1 ; 11 01 10 00
- movq mm5, mm2 ; 13 03 12 02
-
- punpckldq mm0, mm3 ; 30 20 10 00
- punpckhdq mm1, mm3 ; 31 21 11 01
-
- punpckldq mm2, mm4 ; 32 22 12 02
- punpckhdq mm5, mm4 ; 33 23 13 03
-
- movq mm3, mm5 ; 33 23 13 03
-
- psubw mm0, mm2 ; b1= 0-2
- paddw mm2, mm2 ;
-
- movq mm5, mm1
- paddw mm2, mm0 ; a1 =0+2
-
- pmulhw mm5, [GLOBAL(x_s1sqr2)];
- paddw mm5, mm1 ; ip1 * sin(pi/8) * sqrt(2)
-
- movq mm7, mm3 ;
- pmulhw mm7, [GLOBAL(x_c1sqr2less1)];
-
- paddw mm7, mm3 ; ip3 * cos(pi/8) * sqrt(2)
- psubw mm7, mm5 ; c1
-
- movq mm5, mm1
- movq mm4, mm3
-
- pmulhw mm5, [GLOBAL(x_c1sqr2less1)]
- paddw mm5, mm1
-
- pmulhw mm3, [GLOBAL(x_s1sqr2)]
- paddw mm3, mm4
-
- paddw mm3, mm5 ; d1
- paddw mm0, [GLOBAL(fours)]
-
- paddw mm2, [GLOBAL(fours)]
- movq mm6, mm2 ; a1
-
- movq mm4, mm0 ; b1
- paddw mm2, mm3 ;0
-
- paddw mm4, mm7 ;1
- psubw mm0, mm7 ;2
-
- psubw mm6, mm3 ;3
- psraw mm2, 3
-
- psraw mm0, 3
- psraw mm4, 3
-
- psraw mm6, 3
-
- movq mm1, mm2 ; 03 02 01 00
- movq mm3, mm4 ; 23 22 21 20
-
- punpcklwd mm1, mm0 ; 11 01 10 00
- punpckhwd mm2, mm0 ; 13 03 12 02
-
- punpcklwd mm3, mm6 ; 31 21 30 20
- punpckhwd mm4, mm6 ; 33 23 32 22
-
- movq mm0, mm1 ; 11 01 10 00
- movq mm5, mm2 ; 13 03 12 02
-
- punpckldq mm0, mm3 ; 30 20 10 00
- punpckhdq mm1, mm3 ; 31 21 11 01
-
- punpckldq mm2, mm4 ; 32 22 12 02
- punpckhdq mm5, mm4 ; 33 23 13 03
-
- pxor mm7, mm7
-
- movd mm4, [rdx]
- punpcklbw mm4, mm7
- paddsw mm0, mm4
- packuswb mm0, mm7
- movd [rdx], mm0
-
- movd mm4, [rdx+rdi]
- punpcklbw mm4, mm7
- paddsw mm1, mm4
- packuswb mm1, mm7
- movd [rdx+rdi], mm1
-
- movd mm4, [rdx+2*rdi]
- punpcklbw mm4, mm7
- paddsw mm2, mm4
- packuswb mm2, mm7
- movd [rdx+rdi*2], mm2
-
- add rdx, rdi
-
- movd mm4, [rdx+2*rdi]
- punpcklbw mm4, mm7
- paddsw mm5, mm4
- packuswb mm5, mm7
- movd [rdx+rdi*2], mm5
-
- ; begin epilog
- pop rdi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-SECTION_RODATA
-align 16
-x_s1sqr2:
- times 4 dw 0x8A8C
-align 16
-x_c1sqr2less1:
- times 4 dw 0x4E7B
-align 16
-fours:
- times 4 dw 0x0004
diff --git a/thirdparty/libvpx/vp8/common/x86/filter_x86.c b/thirdparty/libvpx/vp8/common/x86/filter_x86.c
deleted file mode 100644
index 7f496ed7db..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/filter_x86.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2011 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp8/common/x86/filter_x86.h"
-
-DECLARE_ALIGNED(16, const short, vp8_bilinear_filters_x86_4[8][8]) =
-{
- { 128, 128, 128, 128, 0, 0, 0, 0 },
- { 112, 112, 112, 112, 16, 16, 16, 16 },
- { 96, 96, 96, 96, 32, 32, 32, 32 },
- { 80, 80, 80, 80, 48, 48, 48, 48 },
- { 64, 64, 64, 64, 64, 64, 64, 64 },
- { 48, 48, 48, 48, 80, 80, 80, 80 },
- { 32, 32, 32, 32, 96, 96, 96, 96 },
- { 16, 16, 16, 16, 112, 112, 112, 112 }
-};
-
-DECLARE_ALIGNED(16, const short, vp8_bilinear_filters_x86_8[8][16]) =
-{
- { 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0 },
- { 112, 112, 112, 112, 112, 112, 112, 112, 16, 16, 16, 16, 16, 16, 16, 16 },
- { 96, 96, 96, 96, 96, 96, 96, 96, 32, 32, 32, 32, 32, 32, 32, 32 },
- { 80, 80, 80, 80, 80, 80, 80, 80, 48, 48, 48, 48, 48, 48, 48, 48 },
- { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 },
- { 48, 48, 48, 48, 48, 48, 48, 48, 80, 80, 80, 80, 80, 80, 80, 80 },
- { 32, 32, 32, 32, 32, 32, 32, 32, 96, 96, 96, 96, 96, 96, 96, 96 },
- { 16, 16, 16, 16, 16, 16, 16, 16, 112, 112, 112, 112, 112, 112, 112, 112 }
-};
diff --git a/thirdparty/libvpx/vp8/common/x86/filter_x86.h b/thirdparty/libvpx/vp8/common/x86/filter_x86.h
deleted file mode 100644
index d282841bee..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/filter_x86.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2011 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_COMMON_X86_FILTER_X86_H_
-#define VP8_COMMON_X86_FILTER_X86_H_
-
-#include "vpx_ports/mem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* x86 assembly specific copy of vp8/common/filter.c:vp8_bilinear_filters with
- * duplicated values */
-
-/* duplicated 4x */
-extern DECLARE_ALIGNED(16, const short, vp8_bilinear_filters_x86_4[8][8]);
-
-/* duplicated 8x */
-extern DECLARE_ALIGNED(16, const short, vp8_bilinear_filters_x86_8[8][16]);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_COMMON_X86_FILTER_X86_H_
diff --git a/thirdparty/libvpx/vp8/common/x86/idct_blk_mmx.c b/thirdparty/libvpx/vp8/common/x86/idct_blk_mmx.c
deleted file mode 100644
index f2532b34da..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/idct_blk_mmx.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "vp8/common/blockd.h"
-#include "vpx_mem/vpx_mem.h"
-
-extern void vp8_dequantize_b_impl_mmx(short *sq, short *dq, short *q);
-
-void vp8_dequantize_b_mmx(BLOCKD *d, short *DQC)
-{
- short *sq = (short *) d->qcoeff;
- short *dq = (short *) d->dqcoeff;
-
- vp8_dequantize_b_impl_mmx(sq, dq, DQC);
-}
-
-void vp8_dequant_idct_add_y_block_mmx
- (short *q, short *dq,
- unsigned char *dst, int stride, char *eobs)
-{
- int i;
-
- for (i = 0; i < 4; i++)
- {
- if (eobs[0] > 1)
- vp8_dequant_idct_add_mmx (q, dq, dst, stride);
- else if (eobs[0] == 1)
- {
- vp8_dc_only_idct_add_mmx (q[0]*dq[0], dst, stride, dst, stride);
- memset(q, 0, 2 * sizeof(q[0]));
- }
-
- if (eobs[1] > 1)
- vp8_dequant_idct_add_mmx (q+16, dq, dst+4, stride);
- else if (eobs[1] == 1)
- {
- vp8_dc_only_idct_add_mmx (q[16]*dq[0], dst+4, stride,
- dst+4, stride);
- memset(q + 16, 0, 2 * sizeof(q[0]));
- }
-
- if (eobs[2] > 1)
- vp8_dequant_idct_add_mmx (q+32, dq, dst+8, stride);
- else if (eobs[2] == 1)
- {
- vp8_dc_only_idct_add_mmx (q[32]*dq[0], dst+8, stride,
- dst+8, stride);
- memset(q + 32, 0, 2 * sizeof(q[0]));
- }
-
- if (eobs[3] > 1)
- vp8_dequant_idct_add_mmx (q+48, dq, dst+12, stride);
- else if (eobs[3] == 1)
- {
- vp8_dc_only_idct_add_mmx (q[48]*dq[0], dst+12, stride,
- dst+12, stride);
- memset(q + 48, 0, 2 * sizeof(q[0]));
- }
-
- q += 64;
- dst += 4*stride;
- eobs += 4;
- }
-}
-
-void vp8_dequant_idct_add_uv_block_mmx
- (short *q, short *dq,
- unsigned char *dstu, unsigned char *dstv, int stride, char *eobs)
-{
- int i;
-
- for (i = 0; i < 2; i++)
- {
- if (eobs[0] > 1)
- vp8_dequant_idct_add_mmx (q, dq, dstu, stride);
- else if (eobs[0] == 1)
- {
- vp8_dc_only_idct_add_mmx (q[0]*dq[0], dstu, stride, dstu, stride);
- memset(q, 0, 2 * sizeof(q[0]));
- }
-
- if (eobs[1] > 1)
- vp8_dequant_idct_add_mmx (q+16, dq, dstu+4, stride);
- else if (eobs[1] == 1)
- {
- vp8_dc_only_idct_add_mmx (q[16]*dq[0], dstu+4, stride,
- dstu+4, stride);
- memset(q + 16, 0, 2 * sizeof(q[0]));
- }
-
- q += 32;
- dstu += 4*stride;
- eobs += 2;
- }
-
- for (i = 0; i < 2; i++)
- {
- if (eobs[0] > 1)
- vp8_dequant_idct_add_mmx (q, dq, dstv, stride);
- else if (eobs[0] == 1)
- {
- vp8_dc_only_idct_add_mmx (q[0]*dq[0], dstv, stride, dstv, stride);
- memset(q, 0, 2 * sizeof(q[0]));
- }
-
- if (eobs[1] > 1)
- vp8_dequant_idct_add_mmx (q+16, dq, dstv+4, stride);
- else if (eobs[1] == 1)
- {
- vp8_dc_only_idct_add_mmx (q[16]*dq[0], dstv+4, stride,
- dstv+4, stride);
- memset(q + 16, 0, 2 * sizeof(q[0]));
- }
-
- q += 32;
- dstv += 4*stride;
- eobs += 2;
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/x86/idct_blk_sse2.c b/thirdparty/libvpx/vp8/common/x86/idct_blk_sse2.c
deleted file mode 100644
index ae96ec858c..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/idct_blk_sse2.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-
-void vp8_idct_dequant_0_2x_sse2
- (short *q, short *dq ,
- unsigned char *dst, int dst_stride);
-void vp8_idct_dequant_full_2x_sse2
- (short *q, short *dq ,
- unsigned char *dst, int dst_stride);
-
-void vp8_dequant_idct_add_y_block_sse2
- (short *q, short *dq,
- unsigned char *dst, int stride, char *eobs)
-{
- int i;
-
- for (i = 0; i < 4; i++)
- {
- if (((short *)(eobs))[0])
- {
- if (((short *)(eobs))[0] & 0xfefe)
- vp8_idct_dequant_full_2x_sse2 (q, dq, dst, stride);
- else
- vp8_idct_dequant_0_2x_sse2 (q, dq, dst, stride);
- }
- if (((short *)(eobs))[1])
- {
- if (((short *)(eobs))[1] & 0xfefe)
- vp8_idct_dequant_full_2x_sse2 (q+32, dq, dst+8, stride);
- else
- vp8_idct_dequant_0_2x_sse2 (q+32, dq, dst+8, stride);
- }
- q += 64;
- dst += stride*4;
- eobs += 4;
- }
-}
-
-void vp8_dequant_idct_add_uv_block_sse2
- (short *q, short *dq,
- unsigned char *dstu, unsigned char *dstv, int stride, char *eobs)
-{
- if (((short *)(eobs))[0])
- {
- if (((short *)(eobs))[0] & 0xfefe)
- vp8_idct_dequant_full_2x_sse2 (q, dq, dstu, stride);
- else
- vp8_idct_dequant_0_2x_sse2 (q, dq, dstu, stride);
- }
- q += 32;
- dstu += stride*4;
-
- if (((short *)(eobs))[1])
- {
- if (((short *)(eobs))[1] & 0xfefe)
- vp8_idct_dequant_full_2x_sse2 (q, dq, dstu, stride);
- else
- vp8_idct_dequant_0_2x_sse2 (q, dq, dstu, stride);
- }
- q += 32;
-
- if (((short *)(eobs))[2])
- {
- if (((short *)(eobs))[2] & 0xfefe)
- vp8_idct_dequant_full_2x_sse2 (q, dq, dstv, stride);
- else
- vp8_idct_dequant_0_2x_sse2 (q, dq, dstv, stride);
- }
- q += 32;
- dstv += stride*4;
-
- if (((short *)(eobs))[3])
- {
- if (((short *)(eobs))[3] & 0xfefe)
- vp8_idct_dequant_full_2x_sse2 (q, dq, dstv, stride);
- else
- vp8_idct_dequant_0_2x_sse2 (q, dq, dstv, stride);
- }
-}
diff --git a/thirdparty/libvpx/vp8/common/x86/idctllm_mmx.asm b/thirdparty/libvpx/vp8/common/x86/idctllm_mmx.asm
deleted file mode 100644
index 96fa2c60d0..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/idctllm_mmx.asm
+++ /dev/null
@@ -1,295 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-; /****************************************************************************
-; * Notes:
-; *
-; * This implementation makes use of 16 bit fixed point version of two multiply
-; * constants:
-; * 1. sqrt(2) * cos (pi/8)
-; * 2. sqrt(2) * sin (pi/8)
-; * Because the first constant is bigger than 1, to maintain the same 16 bit
-; * fixed point precision as the second one, we use a trick of
-; * x * a = x + x*(a-1)
-; * so
-; * x * sqrt(2) * cos (pi/8) = x + x * (sqrt(2) *cos(pi/8)-1).
-; *
-; * For the second constant, because of the 16bit version is 35468, which
-; * is bigger than 32768, in signed 16 bit multiply, it becomes a negative
-; * number.
-; * (x * (unsigned)35468 >> 16) = x * (signed)35468 >> 16 + x
-; *
-; **************************************************************************/
-
-
-;void vp8_short_idct4x4llm_mmx(short *input, unsigned char *pred,
-;int pitch, unsigned char *dest,int stride)
-global sym(vp8_short_idct4x4llm_mmx) PRIVATE
-sym(vp8_short_idct4x4llm_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rax, arg(0) ;input
- mov rsi, arg(1) ;pred
-
- movq mm0, [rax ]
- movq mm1, [rax+ 8]
- movq mm2, [rax+16]
- movq mm3, [rax+24]
-
-%if 0
- pxor mm7, mm7
- movq [rax], mm7
- movq [rax+8], mm7
- movq [rax+16],mm7
- movq [rax+24],mm7
-%endif
- movsxd rax, dword ptr arg(2) ;pitch
- mov rdx, arg(3) ;dest
- movsxd rdi, dword ptr arg(4) ;stride
-
-
- psubw mm0, mm2 ; b1= 0-2
- paddw mm2, mm2 ;
-
- movq mm5, mm1
- paddw mm2, mm0 ; a1 =0+2
-
- pmulhw mm5, [GLOBAL(x_s1sqr2)];
- paddw mm5, mm1 ; ip1 * sin(pi/8) * sqrt(2)
-
- movq mm7, mm3 ;
- pmulhw mm7, [GLOBAL(x_c1sqr2less1)];
-
- paddw mm7, mm3 ; ip3 * cos(pi/8) * sqrt(2)
- psubw mm7, mm5 ; c1
-
- movq mm5, mm1
- movq mm4, mm3
-
- pmulhw mm5, [GLOBAL(x_c1sqr2less1)]
- paddw mm5, mm1
-
- pmulhw mm3, [GLOBAL(x_s1sqr2)]
- paddw mm3, mm4
-
- paddw mm3, mm5 ; d1
- movq mm6, mm2 ; a1
-
- movq mm4, mm0 ; b1
- paddw mm2, mm3 ;0
-
- paddw mm4, mm7 ;1
- psubw mm0, mm7 ;2
-
- psubw mm6, mm3 ;3
-
- movq mm1, mm2 ; 03 02 01 00
- movq mm3, mm4 ; 23 22 21 20
-
- punpcklwd mm1, mm0 ; 11 01 10 00
- punpckhwd mm2, mm0 ; 13 03 12 02
-
- punpcklwd mm3, mm6 ; 31 21 30 20
- punpckhwd mm4, mm6 ; 33 23 32 22
-
- movq mm0, mm1 ; 11 01 10 00
- movq mm5, mm2 ; 13 03 12 02
-
- punpckldq mm0, mm3 ; 30 20 10 00
- punpckhdq mm1, mm3 ; 31 21 11 01
-
- punpckldq mm2, mm4 ; 32 22 12 02
- punpckhdq mm5, mm4 ; 33 23 13 03
-
- movq mm3, mm5 ; 33 23 13 03
-
- psubw mm0, mm2 ; b1= 0-2
- paddw mm2, mm2 ;
-
- movq mm5, mm1
- paddw mm2, mm0 ; a1 =0+2
-
- pmulhw mm5, [GLOBAL(x_s1sqr2)];
- paddw mm5, mm1 ; ip1 * sin(pi/8) * sqrt(2)
-
- movq mm7, mm3 ;
- pmulhw mm7, [GLOBAL(x_c1sqr2less1)];
-
- paddw mm7, mm3 ; ip3 * cos(pi/8) * sqrt(2)
- psubw mm7, mm5 ; c1
-
- movq mm5, mm1
- movq mm4, mm3
-
- pmulhw mm5, [GLOBAL(x_c1sqr2less1)]
- paddw mm5, mm1
-
- pmulhw mm3, [GLOBAL(x_s1sqr2)]
- paddw mm3, mm4
-
- paddw mm3, mm5 ; d1
- paddw mm0, [GLOBAL(fours)]
-
- paddw mm2, [GLOBAL(fours)]
- movq mm6, mm2 ; a1
-
- movq mm4, mm0 ; b1
- paddw mm2, mm3 ;0
-
- paddw mm4, mm7 ;1
- psubw mm0, mm7 ;2
-
- psubw mm6, mm3 ;3
- psraw mm2, 3
-
- psraw mm0, 3
- psraw mm4, 3
-
- psraw mm6, 3
-
- movq mm1, mm2 ; 03 02 01 00
- movq mm3, mm4 ; 23 22 21 20
-
- punpcklwd mm1, mm0 ; 11 01 10 00
- punpckhwd mm2, mm0 ; 13 03 12 02
-
- punpcklwd mm3, mm6 ; 31 21 30 20
- punpckhwd mm4, mm6 ; 33 23 32 22
-
- movq mm0, mm1 ; 11 01 10 00
- movq mm5, mm2 ; 13 03 12 02
-
- punpckldq mm0, mm3 ; 30 20 10 00
- punpckhdq mm1, mm3 ; 31 21 11 01
-
- punpckldq mm2, mm4 ; 32 22 12 02
- punpckhdq mm5, mm4 ; 33 23 13 03
-
- pxor mm7, mm7
-
- movd mm4, [rsi]
- punpcklbw mm4, mm7
- paddsw mm0, mm4
- packuswb mm0, mm7
- movd [rdx], mm0
-
- movd mm4, [rsi+rax]
- punpcklbw mm4, mm7
- paddsw mm1, mm4
- packuswb mm1, mm7
- movd [rdx+rdi], mm1
-
- movd mm4, [rsi+2*rax]
- punpcklbw mm4, mm7
- paddsw mm2, mm4
- packuswb mm2, mm7
- movd [rdx+rdi*2], mm2
-
- add rdx, rdi
- add rsi, rax
-
- movd mm4, [rsi+2*rax]
- punpcklbw mm4, mm7
- paddsw mm5, mm4
- packuswb mm5, mm7
- movd [rdx+rdi*2], mm5
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vp8_dc_only_idct_add_mmx(
-;short input_dc,
-;unsigned char *pred_ptr,
-;int pred_stride,
-;unsigned char *dst_ptr,
-;int stride)
-global sym(vp8_dc_only_idct_add_mmx) PRIVATE
-sym(vp8_dc_only_idct_add_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- GET_GOT rbx
- ; end prolog
-
- movd mm5, arg(0) ;input_dc
- mov rax, arg(1) ;pred_ptr
- movsxd rdx, dword ptr arg(2) ;pred_stride
-
- pxor mm0, mm0
-
- paddw mm5, [GLOBAL(fours)]
- lea rcx, [rdx + rdx*2]
-
- psraw mm5, 3
-
- punpcklwd mm5, mm5
-
- punpckldq mm5, mm5
-
- movd mm1, [rax]
- movd mm2, [rax+rdx]
- movd mm3, [rax+2*rdx]
- movd mm4, [rax+rcx]
-
- mov rax, arg(3) ;d -- destination
- movsxd rdx, dword ptr arg(4) ;dst_stride
-
- punpcklbw mm1, mm0
- paddsw mm1, mm5
- packuswb mm1, mm0 ; pack and unpack to saturate
- lea rcx, [rdx + rdx*2]
-
- punpcklbw mm2, mm0
- paddsw mm2, mm5
- packuswb mm2, mm0 ; pack and unpack to saturate
-
- punpcklbw mm3, mm0
- paddsw mm3, mm5
- packuswb mm3, mm0 ; pack and unpack to saturate
-
- punpcklbw mm4, mm0
- paddsw mm4, mm5
- packuswb mm4, mm0 ; pack and unpack to saturate
-
- movd [rax], mm1
- movd [rax+rdx], mm2
- movd [rax+2*rdx], mm3
- movd [rax+rcx], mm4
-
- ; begin epilog
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-SECTION_RODATA
-align 16
-x_s1sqr2:
- times 4 dw 0x8A8C
-align 16
-x_c1sqr2less1:
- times 4 dw 0x4E7B
-align 16
-fours:
- times 4 dw 0x0004
diff --git a/thirdparty/libvpx/vp8/common/x86/idctllm_sse2.asm b/thirdparty/libvpx/vp8/common/x86/idctllm_sse2.asm
deleted file mode 100644
index bf8e2c4021..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/idctllm_sse2.asm
+++ /dev/null
@@ -1,708 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-;void vp8_idct_dequant_0_2x_sse2
-; (
-; short *qcoeff - 0
-; short *dequant - 1
-; unsigned char *dst - 2
-; int dst_stride - 3
-; )
-
-global sym(vp8_idct_dequant_0_2x_sse2) PRIVATE
-sym(vp8_idct_dequant_0_2x_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 4
- GET_GOT rbx
- ; end prolog
-
- mov rdx, arg(1) ; dequant
- mov rax, arg(0) ; qcoeff
-
- movd xmm4, [rax]
- movd xmm5, [rdx]
-
- pinsrw xmm4, [rax+32], 4
- pinsrw xmm5, [rdx], 4
-
- pmullw xmm4, xmm5
-
- ; Zero out xmm5, for use unpacking
- pxor xmm5, xmm5
-
- ; clear coeffs
- movd [rax], xmm5
- movd [rax+32], xmm5
-;pshufb
- mov rax, arg(2) ; dst
- movsxd rdx, dword ptr arg(3) ; dst_stride
-
- pshuflw xmm4, xmm4, 00000000b
- pshufhw xmm4, xmm4, 00000000b
-
- lea rcx, [rdx + rdx*2]
- paddw xmm4, [GLOBAL(fours)]
-
- psraw xmm4, 3
-
- movq xmm0, [rax]
- movq xmm1, [rax+rdx]
- movq xmm2, [rax+2*rdx]
- movq xmm3, [rax+rcx]
-
- punpcklbw xmm0, xmm5
- punpcklbw xmm1, xmm5
- punpcklbw xmm2, xmm5
- punpcklbw xmm3, xmm5
-
-
- ; Add to predict buffer
- paddw xmm0, xmm4
- paddw xmm1, xmm4
- paddw xmm2, xmm4
- paddw xmm3, xmm4
-
- ; pack up before storing
- packuswb xmm0, xmm5
- packuswb xmm1, xmm5
- packuswb xmm2, xmm5
- packuswb xmm3, xmm5
-
- ; store blocks back out
- movq [rax], xmm0
- movq [rax + rdx], xmm1
-
- lea rax, [rax + 2*rdx]
-
- movq [rax], xmm2
- movq [rax + rdx], xmm3
-
- ; begin epilog
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vp8_idct_dequant_full_2x_sse2
-; (
-; short *qcoeff - 0
-; short *dequant - 1
-; unsigned char *dst - 2
-; int dst_stride - 3
-; )
-global sym(vp8_idct_dequant_full_2x_sse2) PRIVATE
-sym(vp8_idct_dequant_full_2x_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 4
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ; special case when 2 blocks have 0 or 1 coeffs
- ; dc is set as first coeff, so no need to load qcoeff
- mov rax, arg(0) ; qcoeff
- mov rdx, arg(1) ; dequant
- mov rdi, arg(2) ; dst
-
-
- ; Zero out xmm7, for use unpacking
- pxor xmm7, xmm7
-
-
- ; note the transpose of xmm1 and xmm2, necessary for shuffle
- ; to spit out sensicle data
- movdqa xmm0, [rax]
- movdqa xmm2, [rax+16]
- movdqa xmm1, [rax+32]
- movdqa xmm3, [rax+48]
-
- ; Clear out coeffs
- movdqa [rax], xmm7
- movdqa [rax+16], xmm7
- movdqa [rax+32], xmm7
- movdqa [rax+48], xmm7
-
- ; dequantize qcoeff buffer
- pmullw xmm0, [rdx]
- pmullw xmm2, [rdx+16]
- pmullw xmm1, [rdx]
- pmullw xmm3, [rdx+16]
- movsxd rdx, dword ptr arg(3) ; dst_stride
-
- ; repack so block 0 row x and block 1 row x are together
- movdqa xmm4, xmm0
- punpckldq xmm0, xmm1
- punpckhdq xmm4, xmm1
-
- pshufd xmm0, xmm0, 11011000b
- pshufd xmm1, xmm4, 11011000b
-
- movdqa xmm4, xmm2
- punpckldq xmm2, xmm3
- punpckhdq xmm4, xmm3
-
- pshufd xmm2, xmm2, 11011000b
- pshufd xmm3, xmm4, 11011000b
-
- ; first pass
- psubw xmm0, xmm2 ; b1 = 0-2
- paddw xmm2, xmm2 ;
-
- movdqa xmm5, xmm1
- paddw xmm2, xmm0 ; a1 = 0+2
-
- pmulhw xmm5, [GLOBAL(x_s1sqr2)]
- lea rcx, [rdx + rdx*2] ;dst_stride * 3
- paddw xmm5, xmm1 ; ip1 * sin(pi/8) * sqrt(2)
-
- movdqa xmm7, xmm3
- pmulhw xmm7, [GLOBAL(x_c1sqr2less1)]
-
- paddw xmm7, xmm3 ; ip3 * cos(pi/8) * sqrt(2)
- psubw xmm7, xmm5 ; c1
-
- movdqa xmm5, xmm1
- movdqa xmm4, xmm3
-
- pmulhw xmm5, [GLOBAL(x_c1sqr2less1)]
- paddw xmm5, xmm1
-
- pmulhw xmm3, [GLOBAL(x_s1sqr2)]
- paddw xmm3, xmm4
-
- paddw xmm3, xmm5 ; d1
- movdqa xmm6, xmm2 ; a1
-
- movdqa xmm4, xmm0 ; b1
- paddw xmm2, xmm3 ;0
-
- paddw xmm4, xmm7 ;1
- psubw xmm0, xmm7 ;2
-
- psubw xmm6, xmm3 ;3
-
- ; transpose for the second pass
- movdqa xmm7, xmm2 ; 103 102 101 100 003 002 001 000
- punpcklwd xmm2, xmm0 ; 007 003 006 002 005 001 004 000
- punpckhwd xmm7, xmm0 ; 107 103 106 102 105 101 104 100
-
- movdqa xmm5, xmm4 ; 111 110 109 108 011 010 009 008
- punpcklwd xmm4, xmm6 ; 015 011 014 010 013 009 012 008
- punpckhwd xmm5, xmm6 ; 115 111 114 110 113 109 112 108
-
-
- movdqa xmm1, xmm2 ; 007 003 006 002 005 001 004 000
- punpckldq xmm2, xmm4 ; 013 009 005 001 012 008 004 000
- punpckhdq xmm1, xmm4 ; 015 011 007 003 014 010 006 002
-
- movdqa xmm6, xmm7 ; 107 103 106 102 105 101 104 100
- punpckldq xmm7, xmm5 ; 113 109 105 101 112 108 104 100
- punpckhdq xmm6, xmm5 ; 115 111 107 103 114 110 106 102
-
-
- movdqa xmm5, xmm2 ; 013 009 005 001 012 008 004 000
- punpckldq xmm2, xmm7 ; 112 108 012 008 104 100 004 000
- punpckhdq xmm5, xmm7 ; 113 109 013 009 105 101 005 001
-
- movdqa xmm7, xmm1 ; 015 011 007 003 014 010 006 002
- punpckldq xmm1, xmm6 ; 114 110 014 010 106 102 006 002
- punpckhdq xmm7, xmm6 ; 115 111 015 011 107 103 007 003
-
- pshufd xmm0, xmm2, 11011000b
- pshufd xmm2, xmm1, 11011000b
-
- pshufd xmm1, xmm5, 11011000b
- pshufd xmm3, xmm7, 11011000b
-
- ; second pass
- psubw xmm0, xmm2 ; b1 = 0-2
- paddw xmm2, xmm2
-
- movdqa xmm5, xmm1
- paddw xmm2, xmm0 ; a1 = 0+2
-
- pmulhw xmm5, [GLOBAL(x_s1sqr2)]
- paddw xmm5, xmm1 ; ip1 * sin(pi/8) * sqrt(2)
-
- movdqa xmm7, xmm3
- pmulhw xmm7, [GLOBAL(x_c1sqr2less1)]
-
- paddw xmm7, xmm3 ; ip3 * cos(pi/8) * sqrt(2)
- psubw xmm7, xmm5 ; c1
-
- movdqa xmm5, xmm1
- movdqa xmm4, xmm3
-
- pmulhw xmm5, [GLOBAL(x_c1sqr2less1)]
- paddw xmm5, xmm1
-
- pmulhw xmm3, [GLOBAL(x_s1sqr2)]
- paddw xmm3, xmm4
-
- paddw xmm3, xmm5 ; d1
- paddw xmm0, [GLOBAL(fours)]
-
- paddw xmm2, [GLOBAL(fours)]
- movdqa xmm6, xmm2 ; a1
-
- movdqa xmm4, xmm0 ; b1
- paddw xmm2, xmm3 ;0
-
- paddw xmm4, xmm7 ;1
- psubw xmm0, xmm7 ;2
-
- psubw xmm6, xmm3 ;3
- psraw xmm2, 3
-
- psraw xmm0, 3
- psraw xmm4, 3
-
- psraw xmm6, 3
-
- ; transpose to save
- movdqa xmm7, xmm2 ; 103 102 101 100 003 002 001 000
- punpcklwd xmm2, xmm0 ; 007 003 006 002 005 001 004 000
- punpckhwd xmm7, xmm0 ; 107 103 106 102 105 101 104 100
-
- movdqa xmm5, xmm4 ; 111 110 109 108 011 010 009 008
- punpcklwd xmm4, xmm6 ; 015 011 014 010 013 009 012 008
- punpckhwd xmm5, xmm6 ; 115 111 114 110 113 109 112 108
-
-
- movdqa xmm1, xmm2 ; 007 003 006 002 005 001 004 000
- punpckldq xmm2, xmm4 ; 013 009 005 001 012 008 004 000
- punpckhdq xmm1, xmm4 ; 015 011 007 003 014 010 006 002
-
- movdqa xmm6, xmm7 ; 107 103 106 102 105 101 104 100
- punpckldq xmm7, xmm5 ; 113 109 105 101 112 108 104 100
- punpckhdq xmm6, xmm5 ; 115 111 107 103 114 110 106 102
-
-
- movdqa xmm5, xmm2 ; 013 009 005 001 012 008 004 000
- punpckldq xmm2, xmm7 ; 112 108 012 008 104 100 004 000
- punpckhdq xmm5, xmm7 ; 113 109 013 009 105 101 005 001
-
- movdqa xmm7, xmm1 ; 015 011 007 003 014 010 006 002
- punpckldq xmm1, xmm6 ; 114 110 014 010 106 102 006 002
- punpckhdq xmm7, xmm6 ; 115 111 015 011 107 103 007 003
-
- pshufd xmm0, xmm2, 11011000b
- pshufd xmm2, xmm1, 11011000b
-
- pshufd xmm1, xmm5, 11011000b
- pshufd xmm3, xmm7, 11011000b
-
- pxor xmm7, xmm7
-
- ; Load up predict blocks
- movq xmm4, [rdi]
- movq xmm5, [rdi+rdx]
-
- punpcklbw xmm4, xmm7
- punpcklbw xmm5, xmm7
-
- paddw xmm0, xmm4
- paddw xmm1, xmm5
-
- movq xmm4, [rdi+2*rdx]
- movq xmm5, [rdi+rcx]
-
- punpcklbw xmm4, xmm7
- punpcklbw xmm5, xmm7
-
- paddw xmm2, xmm4
- paddw xmm3, xmm5
-
-.finish:
-
- ; pack up before storing
- packuswb xmm0, xmm7
- packuswb xmm1, xmm7
- packuswb xmm2, xmm7
- packuswb xmm3, xmm7
-
- ; store blocks back out
- movq [rdi], xmm0
- movq [rdi + rdx], xmm1
- movq [rdi + rdx*2], xmm2
- movq [rdi + rcx], xmm3
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vp8_idct_dequant_dc_0_2x_sse2
-; (
-; short *qcoeff - 0
-; short *dequant - 1
-; unsigned char *dst - 2
-; int dst_stride - 3
-; short *dc - 4
-; )
-global sym(vp8_idct_dequant_dc_0_2x_sse2) PRIVATE
-sym(vp8_idct_dequant_dc_0_2x_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- GET_GOT rbx
- push rdi
- ; end prolog
-
- ; special case when 2 blocks have 0 or 1 coeffs
- ; dc is set as first coeff, so no need to load qcoeff
- mov rax, arg(0) ; qcoeff
-
- mov rdi, arg(2) ; dst
- mov rdx, arg(4) ; dc
-
- ; Zero out xmm5, for use unpacking
- pxor xmm5, xmm5
-
- ; load up 2 dc words here == 2*16 = doubleword
- movd xmm4, [rdx]
-
- movsxd rdx, dword ptr arg(3) ; dst_stride
- lea rcx, [rdx + rdx*2]
- ; Load up predict blocks
- movq xmm0, [rdi]
- movq xmm1, [rdi+rdx*1]
- movq xmm2, [rdi+rdx*2]
- movq xmm3, [rdi+rcx]
-
- ; Duplicate and expand dc across
- punpcklwd xmm4, xmm4
- punpckldq xmm4, xmm4
-
- ; Rounding to dequant and downshift
- paddw xmm4, [GLOBAL(fours)]
- psraw xmm4, 3
-
- ; Predict buffer needs to be expanded from bytes to words
- punpcklbw xmm0, xmm5
- punpcklbw xmm1, xmm5
- punpcklbw xmm2, xmm5
- punpcklbw xmm3, xmm5
-
- ; Add to predict buffer
- paddw xmm0, xmm4
- paddw xmm1, xmm4
- paddw xmm2, xmm4
- paddw xmm3, xmm4
-
- ; pack up before storing
- packuswb xmm0, xmm5
- packuswb xmm1, xmm5
- packuswb xmm2, xmm5
- packuswb xmm3, xmm5
-
- ; store blocks back out
- movq [rdi], xmm0
- movq [rdi + rdx], xmm1
- movq [rdi + rdx*2], xmm2
- movq [rdi + rcx], xmm3
-
- ; begin epilog
- pop rdi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-;void vp8_idct_dequant_dc_full_2x_sse2
-; (
-; short *qcoeff - 0
-; short *dequant - 1
-; unsigned char *dst - 2
-; int dst_stride - 3
-; short *dc - 4
-; )
-global sym(vp8_idct_dequant_dc_full_2x_sse2) PRIVATE
-sym(vp8_idct_dequant_dc_full_2x_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- SAVE_XMM 7
- GET_GOT rbx
- push rdi
- ; end prolog
-
- ; special case when 2 blocks have 0 or 1 coeffs
- ; dc is set as first coeff, so no need to load qcoeff
- mov rax, arg(0) ; qcoeff
- mov rdx, arg(1) ; dequant
-
- mov rdi, arg(2) ; dst
-
- ; Zero out xmm7, for use unpacking
- pxor xmm7, xmm7
-
-
- ; note the transpose of xmm1 and xmm2, necessary for shuffle
- ; to spit out sensicle data
- movdqa xmm0, [rax]
- movdqa xmm2, [rax+16]
- movdqa xmm1, [rax+32]
- movdqa xmm3, [rax+48]
-
- ; Clear out coeffs
- movdqa [rax], xmm7
- movdqa [rax+16], xmm7
- movdqa [rax+32], xmm7
- movdqa [rax+48], xmm7
-
- ; dequantize qcoeff buffer
- pmullw xmm0, [rdx]
- pmullw xmm2, [rdx+16]
- pmullw xmm1, [rdx]
- pmullw xmm3, [rdx+16]
-
- ; DC component
- mov rdx, arg(4)
-
- ; repack so block 0 row x and block 1 row x are together
- movdqa xmm4, xmm0
- punpckldq xmm0, xmm1
- punpckhdq xmm4, xmm1
-
- pshufd xmm0, xmm0, 11011000b
- pshufd xmm1, xmm4, 11011000b
-
- movdqa xmm4, xmm2
- punpckldq xmm2, xmm3
- punpckhdq xmm4, xmm3
-
- pshufd xmm2, xmm2, 11011000b
- pshufd xmm3, xmm4, 11011000b
-
- ; insert DC component
- pinsrw xmm0, [rdx], 0
- pinsrw xmm0, [rdx+2], 4
-
- ; first pass
- psubw xmm0, xmm2 ; b1 = 0-2
- paddw xmm2, xmm2 ;
-
- movdqa xmm5, xmm1
- paddw xmm2, xmm0 ; a1 = 0+2
-
- pmulhw xmm5, [GLOBAL(x_s1sqr2)]
- paddw xmm5, xmm1 ; ip1 * sin(pi/8) * sqrt(2)
-
- movdqa xmm7, xmm3
- pmulhw xmm7, [GLOBAL(x_c1sqr2less1)]
-
- paddw xmm7, xmm3 ; ip3 * cos(pi/8) * sqrt(2)
- psubw xmm7, xmm5 ; c1
-
- movdqa xmm5, xmm1
- movdqa xmm4, xmm3
-
- pmulhw xmm5, [GLOBAL(x_c1sqr2less1)]
- paddw xmm5, xmm1
-
- pmulhw xmm3, [GLOBAL(x_s1sqr2)]
- paddw xmm3, xmm4
-
- paddw xmm3, xmm5 ; d1
- movdqa xmm6, xmm2 ; a1
-
- movdqa xmm4, xmm0 ; b1
- paddw xmm2, xmm3 ;0
-
- paddw xmm4, xmm7 ;1
- psubw xmm0, xmm7 ;2
-
- psubw xmm6, xmm3 ;3
-
- ; transpose for the second pass
- movdqa xmm7, xmm2 ; 103 102 101 100 003 002 001 000
- punpcklwd xmm2, xmm0 ; 007 003 006 002 005 001 004 000
- punpckhwd xmm7, xmm0 ; 107 103 106 102 105 101 104 100
-
- movdqa xmm5, xmm4 ; 111 110 109 108 011 010 009 008
- punpcklwd xmm4, xmm6 ; 015 011 014 010 013 009 012 008
- punpckhwd xmm5, xmm6 ; 115 111 114 110 113 109 112 108
-
-
- movdqa xmm1, xmm2 ; 007 003 006 002 005 001 004 000
- punpckldq xmm2, xmm4 ; 013 009 005 001 012 008 004 000
- punpckhdq xmm1, xmm4 ; 015 011 007 003 014 010 006 002
-
- movdqa xmm6, xmm7 ; 107 103 106 102 105 101 104 100
- punpckldq xmm7, xmm5 ; 113 109 105 101 112 108 104 100
- punpckhdq xmm6, xmm5 ; 115 111 107 103 114 110 106 102
-
-
- movdqa xmm5, xmm2 ; 013 009 005 001 012 008 004 000
- punpckldq xmm2, xmm7 ; 112 108 012 008 104 100 004 000
- punpckhdq xmm5, xmm7 ; 113 109 013 009 105 101 005 001
-
- movdqa xmm7, xmm1 ; 015 011 007 003 014 010 006 002
- punpckldq xmm1, xmm6 ; 114 110 014 010 106 102 006 002
- punpckhdq xmm7, xmm6 ; 115 111 015 011 107 103 007 003
-
- pshufd xmm0, xmm2, 11011000b
- pshufd xmm2, xmm1, 11011000b
-
- pshufd xmm1, xmm5, 11011000b
- pshufd xmm3, xmm7, 11011000b
-
- ; second pass
- psubw xmm0, xmm2 ; b1 = 0-2
- paddw xmm2, xmm2
-
- movdqa xmm5, xmm1
- paddw xmm2, xmm0 ; a1 = 0+2
-
- pmulhw xmm5, [GLOBAL(x_s1sqr2)]
- paddw xmm5, xmm1 ; ip1 * sin(pi/8) * sqrt(2)
-
- movdqa xmm7, xmm3
- pmulhw xmm7, [GLOBAL(x_c1sqr2less1)]
-
- paddw xmm7, xmm3 ; ip3 * cos(pi/8) * sqrt(2)
- psubw xmm7, xmm5 ; c1
-
- movdqa xmm5, xmm1
- movdqa xmm4, xmm3
-
- pmulhw xmm5, [GLOBAL(x_c1sqr2less1)]
- paddw xmm5, xmm1
-
- pmulhw xmm3, [GLOBAL(x_s1sqr2)]
- paddw xmm3, xmm4
-
- paddw xmm3, xmm5 ; d1
- paddw xmm0, [GLOBAL(fours)]
-
- paddw xmm2, [GLOBAL(fours)]
- movdqa xmm6, xmm2 ; a1
-
- movdqa xmm4, xmm0 ; b1
- paddw xmm2, xmm3 ;0
-
- paddw xmm4, xmm7 ;1
- psubw xmm0, xmm7 ;2
-
- psubw xmm6, xmm3 ;3
- psraw xmm2, 3
-
- psraw xmm0, 3
- psraw xmm4, 3
-
- psraw xmm6, 3
-
- ; transpose to save
- movdqa xmm7, xmm2 ; 103 102 101 100 003 002 001 000
- punpcklwd xmm2, xmm0 ; 007 003 006 002 005 001 004 000
- punpckhwd xmm7, xmm0 ; 107 103 106 102 105 101 104 100
-
- movdqa xmm5, xmm4 ; 111 110 109 108 011 010 009 008
- punpcklwd xmm4, xmm6 ; 015 011 014 010 013 009 012 008
- punpckhwd xmm5, xmm6 ; 115 111 114 110 113 109 112 108
-
-
- movdqa xmm1, xmm2 ; 007 003 006 002 005 001 004 000
- punpckldq xmm2, xmm4 ; 013 009 005 001 012 008 004 000
- punpckhdq xmm1, xmm4 ; 015 011 007 003 014 010 006 002
-
- movdqa xmm6, xmm7 ; 107 103 106 102 105 101 104 100
- punpckldq xmm7, xmm5 ; 113 109 105 101 112 108 104 100
- punpckhdq xmm6, xmm5 ; 115 111 107 103 114 110 106 102
-
-
- movdqa xmm5, xmm2 ; 013 009 005 001 012 008 004 000
- punpckldq xmm2, xmm7 ; 112 108 012 008 104 100 004 000
- punpckhdq xmm5, xmm7 ; 113 109 013 009 105 101 005 001
-
- movdqa xmm7, xmm1 ; 015 011 007 003 014 010 006 002
- punpckldq xmm1, xmm6 ; 114 110 014 010 106 102 006 002
- punpckhdq xmm7, xmm6 ; 115 111 015 011 107 103 007 003
-
- pshufd xmm0, xmm2, 11011000b
- pshufd xmm2, xmm1, 11011000b
-
- pshufd xmm1, xmm5, 11011000b
- pshufd xmm3, xmm7, 11011000b
-
- pxor xmm7, xmm7
-
- ; Load up predict blocks
- movsxd rdx, dword ptr arg(3) ; dst_stride
- movq xmm4, [rdi]
- movq xmm5, [rdi+rdx]
- lea rcx, [rdx + rdx*2]
-
- punpcklbw xmm4, xmm7
- punpcklbw xmm5, xmm7
-
- paddw xmm0, xmm4
- paddw xmm1, xmm5
-
- movq xmm4, [rdi+rdx*2]
- movq xmm5, [rdi+rcx]
-
- punpcklbw xmm4, xmm7
- punpcklbw xmm5, xmm7
-
- paddw xmm2, xmm4
- paddw xmm3, xmm5
-
-.finish:
-
- ; pack up before storing
- packuswb xmm0, xmm7
- packuswb xmm1, xmm7
- packuswb xmm2, xmm7
- packuswb xmm3, xmm7
-
- ; Load destination stride before writing out,
- ; doesn't need to persist
- movsxd rdx, dword ptr arg(3) ; dst_stride
-
- ; store blocks back out
- movq [rdi], xmm0
- movq [rdi + rdx], xmm1
-
- lea rdi, [rdi + 2*rdx]
-
- movq [rdi], xmm2
- movq [rdi + rdx], xmm3
-
-
- ; begin epilog
- pop rdi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-SECTION_RODATA
-align 16
-fours:
- times 8 dw 0x0004
-align 16
-x_s1sqr2:
- times 8 dw 0x8A8C
-align 16
-x_c1sqr2less1:
- times 8 dw 0x4E7B
diff --git a/thirdparty/libvpx/vp8/common/x86/iwalsh_mmx.asm b/thirdparty/libvpx/vp8/common/x86/iwalsh_mmx.asm
deleted file mode 100644
index 158c3b7458..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/iwalsh_mmx.asm
+++ /dev/null
@@ -1,140 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-;void vp8_short_inv_walsh4x4_mmx(short *input, short *output)
-global sym(vp8_short_inv_walsh4x4_mmx) PRIVATE
-sym(vp8_short_inv_walsh4x4_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 2
- ; end prolog
-
- mov rdx, arg(0)
- mov rax, 30003h
-
- movq mm0, [rdx + 0] ;ip[0]
- movq mm1, [rdx + 8] ;ip[4]
- movq mm7, rax
-
- movq mm2, [rdx + 16] ;ip[8]
- movq mm3, [rdx + 24] ;ip[12]
- punpcklwd mm7, mm7 ;0003000300030003h
- mov rdx, arg(1)
-
- movq mm4, mm0
- movq mm5, mm1
-
- paddw mm4, mm3 ;ip[0] + ip[12] aka al
- paddw mm5, mm2 ;ip[4] + ip[8] aka bl
-
- movq mm6, mm4 ;temp al
- paddw mm4, mm5 ;al + bl
- psubw mm6, mm5 ;al - bl
-
- psubw mm0, mm3 ;ip[0] - ip[12] aka d1
- psubw mm1, mm2 ;ip[4] - ip[8] aka c1
-
- movq mm5, mm0 ;temp dl
- paddw mm0, mm1 ;dl + cl
- psubw mm5, mm1 ;dl - cl
-
- ; 03 02 01 00
- ; 13 12 11 10
- ; 23 22 21 20
- ; 33 32 31 30
-
- movq mm3, mm4 ; 03 02 01 00
- punpcklwd mm4, mm0 ; 11 01 10 00
- punpckhwd mm3, mm0 ; 13 03 12 02
-
- movq mm1, mm6 ; 23 22 21 20
- punpcklwd mm6, mm5 ; 31 21 30 20
- punpckhwd mm1, mm5 ; 33 23 32 22
-
- movq mm0, mm4 ; 11 01 10 00
- movq mm2, mm3 ; 13 03 12 02
-
- punpckldq mm0, mm6 ; 30 20 10 00 aka ip[0]
- punpckhdq mm4, mm6 ; 31 21 11 01 aka ip[4]
-
- punpckldq mm2, mm1 ; 32 22 12 02 aka ip[8]
- punpckhdq mm3, mm1 ; 33 23 13 03 aka ip[12]
-;~~~~~~~~~~~~~~~~~~~~~
- movq mm1, mm0
- movq mm5, mm4
- paddw mm1, mm3 ;ip[0] + ip[12] aka al
- paddw mm5, mm2 ;ip[4] + ip[8] aka bl
-
- movq mm6, mm1 ;temp al
- paddw mm1, mm5 ;al + bl
- psubw mm6, mm5 ;al - bl
- paddw mm1, mm7
- paddw mm6, mm7
- psraw mm1, 3
- psraw mm6, 3
-
- psubw mm0, mm3 ;ip[0] - ip[12] aka d1
- psubw mm4, mm2 ;ip[4] - ip[8] aka c1
-
- movq mm5, mm0 ;temp dl
- paddw mm0, mm4 ;dl + cl
- psubw mm5, mm4 ;dl - cl
- paddw mm0, mm7
- paddw mm5, mm7
- psraw mm0, 3
- psraw mm5, 3
-;~~~~~~~~~~~~~~~~~~~~~
-
- movd eax, mm1
- movd ecx, mm0
- psrlq mm0, 32
- psrlq mm1, 32
- mov word ptr[rdx+32*0], ax
- mov word ptr[rdx+32*1], cx
- shr eax, 16
- shr ecx, 16
- mov word ptr[rdx+32*4], ax
- mov word ptr[rdx+32*5], cx
- movd eax, mm1
- movd ecx, mm0
- mov word ptr[rdx+32*8], ax
- mov word ptr[rdx+32*9], cx
- shr eax, 16
- shr ecx, 16
- mov word ptr[rdx+32*12], ax
- mov word ptr[rdx+32*13], cx
-
- movd eax, mm6
- movd ecx, mm5
- psrlq mm5, 32
- psrlq mm6, 32
- mov word ptr[rdx+32*2], ax
- mov word ptr[rdx+32*3], cx
- shr eax, 16
- shr ecx, 16
- mov word ptr[rdx+32*6], ax
- mov word ptr[rdx+32*7], cx
- movd eax, mm6
- movd ecx, mm5
- mov word ptr[rdx+32*10], ax
- mov word ptr[rdx+32*11], cx
- shr eax, 16
- shr ecx, 16
- mov word ptr[rdx+32*14], ax
- mov word ptr[rdx+32*15], cx
-
- ; begin epilog
- UNSHADOW_ARGS
- pop rbp
- ret
-
diff --git a/thirdparty/libvpx/vp8/common/x86/iwalsh_sse2.asm b/thirdparty/libvpx/vp8/common/x86/iwalsh_sse2.asm
deleted file mode 100644
index 06e86a80b6..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/iwalsh_sse2.asm
+++ /dev/null
@@ -1,121 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-;void vp8_short_inv_walsh4x4_sse2(short *input, short *output)
-global sym(vp8_short_inv_walsh4x4_sse2) PRIVATE
-sym(vp8_short_inv_walsh4x4_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 2
- ; end prolog
-
- mov rcx, arg(0)
- mov rdx, arg(1)
- mov rax, 30003h
-
- movdqa xmm0, [rcx + 0] ;ip[4] ip[0]
- movdqa xmm1, [rcx + 16] ;ip[12] ip[8]
-
-
- pshufd xmm2, xmm1, 4eh ;ip[8] ip[12]
- movdqa xmm3, xmm0 ;ip[4] ip[0]
-
- paddw xmm0, xmm2 ;ip[4]+ip[8] ip[0]+ip[12] aka b1 a1
- psubw xmm3, xmm2 ;ip[4]-ip[8] ip[0]-ip[12] aka c1 d1
-
- movdqa xmm4, xmm0
- punpcklqdq xmm0, xmm3 ;d1 a1
- punpckhqdq xmm4, xmm3 ;c1 b1
-
- movdqa xmm1, xmm4 ;c1 b1
- paddw xmm4, xmm0 ;dl+cl a1+b1 aka op[4] op[0]
- psubw xmm0, xmm1 ;d1-c1 a1-b1 aka op[12] op[8]
-
- ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ; 13 12 11 10 03 02 01 00
- ;
- ; 33 32 31 30 23 22 21 20
- ;
- movdqa xmm3, xmm4 ; 13 12 11 10 03 02 01 00
- punpcklwd xmm4, xmm0 ; 23 03 22 02 21 01 20 00
- punpckhwd xmm3, xmm0 ; 33 13 32 12 31 11 30 10
- movdqa xmm1, xmm4 ; 23 03 22 02 21 01 20 00
- punpcklwd xmm4, xmm3 ; 31 21 11 01 30 20 10 00
- punpckhwd xmm1, xmm3 ; 33 23 13 03 32 22 12 02
- ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- movd xmm0, eax
- pshufd xmm2, xmm1, 4eh ;ip[8] ip[12]
- movdqa xmm3, xmm4 ;ip[4] ip[0]
-
- pshufd xmm0, xmm0, 0 ;03 03 03 03 03 03 03 03
-
- paddw xmm4, xmm2 ;ip[4]+ip[8] ip[0]+ip[12] aka b1 a1
- psubw xmm3, xmm2 ;ip[4]-ip[8] ip[0]-ip[12] aka c1 d1
-
- movdqa xmm5, xmm4
- punpcklqdq xmm4, xmm3 ;d1 a1
- punpckhqdq xmm5, xmm3 ;c1 b1
-
- movdqa xmm1, xmm5 ;c1 b1
- paddw xmm5, xmm4 ;dl+cl a1+b1 aka op[4] op[0]
- psubw xmm4, xmm1 ;d1-c1 a1-b1 aka op[12] op[8]
-
- paddw xmm5, xmm0
- paddw xmm4, xmm0
- psraw xmm5, 3
- psraw xmm4, 3
-
- movd eax, xmm5
- movd ecx, xmm4
- psrldq xmm5, 4
- psrldq xmm4, 4
- mov word ptr[rdx+32*0], ax
- mov word ptr[rdx+32*2], cx
- shr eax, 16
- shr ecx, 16
- mov word ptr[rdx+32*4], ax
- mov word ptr[rdx+32*6], cx
- movd eax, xmm5
- movd ecx, xmm4
- psrldq xmm5, 4
- psrldq xmm4, 4
- mov word ptr[rdx+32*8], ax
- mov word ptr[rdx+32*10], cx
- shr eax, 16
- shr ecx, 16
- mov word ptr[rdx+32*12], ax
- mov word ptr[rdx+32*14], cx
-
- movd eax, xmm5
- movd ecx, xmm4
- psrldq xmm5, 4
- psrldq xmm4, 4
- mov word ptr[rdx+32*1], ax
- mov word ptr[rdx+32*3], cx
- shr eax, 16
- shr ecx, 16
- mov word ptr[rdx+32*5], ax
- mov word ptr[rdx+32*7], cx
- movd eax, xmm5
- movd ecx, xmm4
- mov word ptr[rdx+32*9], ax
- mov word ptr[rdx+32*11], cx
- shr eax, 16
- shr ecx, 16
- mov word ptr[rdx+32*13], ax
- mov word ptr[rdx+32*15], cx
-
- ; begin epilog
- UNSHADOW_ARGS
- pop rbp
- ret
diff --git a/thirdparty/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm b/thirdparty/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm
deleted file mode 100644
index 6d5aaa19db..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm
+++ /dev/null
@@ -1,815 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-%macro LF_ABS 2
- ; %1 value not preserved
- ; %2 value preserved
- ; output in %1
- movdqa scratch1, %2 ; v2
-
- psubusb scratch1, %1 ; v2 - v1
- psubusb %1, %2 ; v1 - v2
- por %1, scratch1 ; abs(v2 - v1)
-%endmacro
-
-%macro LF_FILTER_HEV_MASK 8-9
-
- LF_ABS %1, %2 ; abs(p3 - p2)
- LF_ABS %2, %3 ; abs(p2 - p1)
- pmaxub %1, %2 ; accumulate mask
-%if %0 == 8
- movdqa scratch2, %3 ; save p1
- LF_ABS scratch2, %4 ; abs(p1 - p0)
-%endif
- LF_ABS %4, %5 ; abs(p0 - q0)
- LF_ABS %5, %6 ; abs(q0 - q1)
-%if %0 == 8
- pmaxub %5, scratch2 ; accumulate hev
-%else
- pmaxub %5, %9
-%endif
- pmaxub %1, %5 ; accumulate mask
-
- LF_ABS %3, %6 ; abs(p1 - q1)
- LF_ABS %6, %7 ; abs(q1 - q2)
- pmaxub %1, %6 ; accumulate mask
- LF_ABS %7, %8 ; abs(q2 - q3)
- pmaxub %1, %7 ; accumulate mask
-
- paddusb %4, %4 ; 2 * abs(p0 - q0)
- pand %3, [GLOBAL(tfe)]
- psrlw %3, 1 ; abs(p1 - q1) / 2
- paddusb %4, %3 ; abs(p0 - q0) * 2 + abs(p1 - q1) / 2
-
- psubusb %1, [limit]
- psubusb %4, [blimit]
- por %1, %4
- pcmpeqb %1, zero ; mask
-
- psubusb %5, [thresh]
- pcmpeqb %5, zero ; ~hev
-%endmacro
-
-%macro LF_FILTER 6
- ; %1-%4: p1-q1
- ; %5: mask
- ; %6: hev
-
- movdqa scratch2, %6 ; save hev
-
- pxor %1, [GLOBAL(t80)] ; ps1
- pxor %4, [GLOBAL(t80)] ; qs1
- movdqa scratch1, %1
- psubsb scratch1, %4 ; signed_char_clamp(ps1 - qs1)
- pandn scratch2, scratch1 ; vp8_filter &= hev
-
- pxor %2, [GLOBAL(t80)] ; ps0
- pxor %3, [GLOBAL(t80)] ; qs0
- movdqa scratch1, %3
- psubsb scratch1, %2 ; qs0 - ps0
- paddsb scratch2, scratch1 ; vp8_filter += (qs0 - ps0)
- paddsb scratch2, scratch1 ; vp8_filter += (qs0 - ps0)
- paddsb scratch2, scratch1 ; vp8_filter += (qs0 - ps0)
- pand %5, scratch2 ; &= mask
-
- movdqa scratch2, %5
- paddsb %5, [GLOBAL(t4)] ; Filter1
- paddsb scratch2, [GLOBAL(t3)] ; Filter2
-
- ; Filter1 >> 3
- movdqa scratch1, zero
- pcmpgtb scratch1, %5
- psrlw %5, 3
- pand scratch1, [GLOBAL(te0)]
- pand %5, [GLOBAL(t1f)]
- por %5, scratch1
-
- psubsb %3, %5 ; qs0 - Filter1
- pxor %3, [GLOBAL(t80)]
-
- ; Filter2 >> 3
- movdqa scratch1, zero
- pcmpgtb scratch1, scratch2
- psrlw scratch2, 3
- pand scratch1, [GLOBAL(te0)]
- pand scratch2, [GLOBAL(t1f)]
- por scratch2, scratch1
-
- paddsb %2, scratch2 ; ps0 + Filter2
- pxor %2, [GLOBAL(t80)]
-
- ; outer tap adjustments
- paddsb %5, [GLOBAL(t1)]
- movdqa scratch1, zero
- pcmpgtb scratch1, %5
- psrlw %5, 1
- pand scratch1, [GLOBAL(t80)]
- pand %5, [GLOBAL(t7f)]
- por %5, scratch1
- pand %5, %6 ; vp8_filter &= ~hev
-
- psubsb %4, %5 ; qs1 - vp8_filter
- pxor %4, [GLOBAL(t80)]
-
- paddsb %1, %5 ; ps1 + vp8_filter
- pxor %1, [GLOBAL(t80)]
-%endmacro
-
-;void vp8_loop_filter_bh_y_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh
-;)
-global sym(vp8_loop_filter_bh_y_sse2) PRIVATE
-sym(vp8_loop_filter_bh_y_sse2):
-
-%if LIBVPX_YASM_WIN64
- %define src rcx ; src_ptr
- %define stride rdx ; src_pixel_step
- %define blimit r8
- %define limit r9
- %define thresh r10
-
- %define spp rax
- %define stride3 r11
- %define stride5 r12
- %define stride7 r13
-
- push rbp
- mov rbp, rsp
- SAVE_XMM 11
- push r12
- push r13
- mov thresh, arg(4)
-%else
- %define src rdi ; src_ptr
- %define stride rsi ; src_pixel_step
- %define blimit rdx
- %define limit rcx
- %define thresh r8
-
- %define spp rax
- %define stride3 r9
- %define stride5 r10
- %define stride7 r11
-%endif
-
- %define scratch1 xmm5
- %define scratch2 xmm6
- %define zero xmm7
-
- %define i0 [src]
- %define i1 [spp]
- %define i2 [src + 2 * stride]
- %define i3 [spp + 2 * stride]
- %define i4 [src + 4 * stride]
- %define i5 [spp + 4 * stride]
- %define i6 [src + 2 * stride3]
- %define i7 [spp + 2 * stride3]
- %define i8 [src + 8 * stride]
- %define i9 [spp + 8 * stride]
- %define i10 [src + 2 * stride5]
- %define i11 [spp + 2 * stride5]
- %define i12 [src + 4 * stride3]
- %define i13 [spp + 4 * stride3]
- %define i14 [src + 2 * stride7]
- %define i15 [spp + 2 * stride7]
-
- ; prep work
- lea spp, [src + stride]
- lea stride3, [stride + 2 * stride]
- lea stride5, [stride3 + 2 * stride]
- lea stride7, [stride3 + 4 * stride]
- pxor zero, zero
-
- ; load the first set into registers
- movdqa xmm0, i0
- movdqa xmm1, i1
- movdqa xmm2, i2
- movdqa xmm3, i3
- movdqa xmm4, i4
- movdqa xmm8, i5
- movdqa xmm9, i6 ; q2, will contain abs(p1-p0)
- movdqa xmm10, i7
-LF_FILTER_HEV_MASK xmm0, xmm1, xmm2, xmm3, xmm4, xmm8, xmm9, xmm10
-
- movdqa xmm1, i2
- movdqa xmm2, i3
- movdqa xmm3, i4
- movdqa xmm8, i5
-LF_FILTER xmm1, xmm2, xmm3, xmm8, xmm0, xmm4
- movdqa i2, xmm1
- movdqa i3, xmm2
-
-; second set
- movdqa i4, xmm3
- movdqa i5, xmm8
-
- movdqa xmm0, i6
- movdqa xmm1, i7
- movdqa xmm2, i8
- movdqa xmm4, i9
- movdqa xmm10, i10 ; q2, will contain abs(p1-p0)
- movdqa xmm11, i11
-LF_FILTER_HEV_MASK xmm3, xmm8, xmm0, xmm1, xmm2, xmm4, xmm10, xmm11, xmm9
-
- movdqa xmm0, i6
- movdqa xmm1, i7
- movdqa xmm4, i8
- movdqa xmm8, i9
-LF_FILTER xmm0, xmm1, xmm4, xmm8, xmm3, xmm2
- movdqa i6, xmm0
- movdqa i7, xmm1
-
-; last set
- movdqa i8, xmm4
- movdqa i9, xmm8
-
- movdqa xmm0, i10
- movdqa xmm1, i11
- movdqa xmm2, i12
- movdqa xmm3, i13
- movdqa xmm9, i14 ; q2, will contain abs(p1-p0)
- movdqa xmm11, i15
-LF_FILTER_HEV_MASK xmm4, xmm8, xmm0, xmm1, xmm2, xmm3, xmm9, xmm11, xmm10
-
- movdqa xmm0, i10
- movdqa xmm1, i11
- movdqa xmm3, i12
- movdqa xmm8, i13
-LF_FILTER xmm0, xmm1, xmm3, xmm8, xmm4, xmm2
- movdqa i10, xmm0
- movdqa i11, xmm1
- movdqa i12, xmm3
- movdqa i13, xmm8
-
-%if LIBVPX_YASM_WIN64
- pop r13
- pop r12
- RESTORE_XMM
- pop rbp
-%endif
-
- ret
-
-
-;void vp8_loop_filter_bv_y_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh
-;)
-
-global sym(vp8_loop_filter_bv_y_sse2) PRIVATE
-sym(vp8_loop_filter_bv_y_sse2):
-
-%if LIBVPX_YASM_WIN64
- %define src rcx ; src_ptr
- %define stride rdx ; src_pixel_step
- %define blimit r8
- %define limit r9
- %define thresh r10
-
- %define spp rax
- %define stride3 r11
- %define stride5 r12
- %define stride7 r13
-
- push rbp
- mov rbp, rsp
- SAVE_XMM 15
- push r12
- push r13
- mov thresh, arg(4)
-%else
- %define src rdi
- %define stride rsi
- %define blimit rdx
- %define limit rcx
- %define thresh r8
-
- %define spp rax
- %define stride3 r9
- %define stride5 r10
- %define stride7 r11
-%endif
-
- %define scratch1 xmm5
- %define scratch2 xmm6
- %define zero xmm7
-
- %define s0 [src]
- %define s1 [spp]
- %define s2 [src + 2 * stride]
- %define s3 [spp + 2 * stride]
- %define s4 [src + 4 * stride]
- %define s5 [spp + 4 * stride]
- %define s6 [src + 2 * stride3]
- %define s7 [spp + 2 * stride3]
- %define s8 [src + 8 * stride]
- %define s9 [spp + 8 * stride]
- %define s10 [src + 2 * stride5]
- %define s11 [spp + 2 * stride5]
- %define s12 [src + 4 * stride3]
- %define s13 [spp + 4 * stride3]
- %define s14 [src + 2 * stride7]
- %define s15 [spp + 2 * stride7]
-
- %define i0 [rsp]
- %define i1 [rsp + 16]
- %define i2 [rsp + 32]
- %define i3 [rsp + 48]
- %define i4 [rsp + 64]
- %define i5 [rsp + 80]
- %define i6 [rsp + 96]
- %define i7 [rsp + 112]
- %define i8 [rsp + 128]
- %define i9 [rsp + 144]
- %define i10 [rsp + 160]
- %define i11 [rsp + 176]
- %define i12 [rsp + 192]
- %define i13 [rsp + 208]
- %define i14 [rsp + 224]
- %define i15 [rsp + 240]
-
- ALIGN_STACK 16, rax
-
- ; reserve stack space
- %define temp_storage 0 ; size is 256 (16*16)
- %define stack_size 256
- sub rsp, stack_size
-
- ; prep work
- lea spp, [src + stride]
- lea stride3, [stride + 2 * stride]
- lea stride5, [stride3 + 2 * stride]
- lea stride7, [stride3 + 4 * stride]
-
- ; 8-f
- movdqa xmm0, s8
- movdqa xmm1, xmm0
- punpcklbw xmm0, s9 ; 80 90
- punpckhbw xmm1, s9 ; 88 98
-
- movdqa xmm2, s10
- movdqa xmm3, xmm2
- punpcklbw xmm2, s11 ; a0 b0
- punpckhbw xmm3, s11 ; a8 b8
-
- movdqa xmm4, xmm0
- punpcklwd xmm0, xmm2 ; 80 90 a0 b0
- punpckhwd xmm4, xmm2 ; 84 94 a4 b4
-
- movdqa xmm2, xmm1
- punpcklwd xmm1, xmm3 ; 88 98 a8 b8
- punpckhwd xmm2, xmm3 ; 8c 9c ac bc
-
- ; using xmm[0124]
- ; work on next 4 rows
-
- movdqa xmm3, s12
- movdqa xmm5, xmm3
- punpcklbw xmm3, s13 ; c0 d0
- punpckhbw xmm5, s13 ; c8 d8
-
- movdqa xmm6, s14
- movdqa xmm7, xmm6
- punpcklbw xmm6, s15 ; e0 f0
- punpckhbw xmm7, s15 ; e8 f8
-
- movdqa xmm8, xmm3
- punpcklwd xmm3, xmm6 ; c0 d0 e0 f0
- punpckhwd xmm8, xmm6 ; c4 d4 e4 f4
-
- movdqa xmm6, xmm5
- punpcklwd xmm5, xmm7 ; c8 d8 e8 f8
- punpckhwd xmm6, xmm7 ; cc dc ec fc
-
- ; pull the third and fourth sets together
-
- movdqa xmm7, xmm0
- punpckldq xmm0, xmm3 ; 80 90 a0 b0 c0 d0 e0 f0
- punpckhdq xmm7, xmm3 ; 82 92 a2 b2 c2 d2 e2 f2
-
- movdqa xmm3, xmm4
- punpckldq xmm4, xmm8 ; 84 94 a4 b4 c4 d4 e4 f4
- punpckhdq xmm3, xmm8 ; 86 96 a6 b6 c6 d6 e6 f6
-
- movdqa xmm8, xmm1
- punpckldq xmm1, xmm5 ; 88 88 a8 b8 c8 d8 e8 f8
- punpckhdq xmm8, xmm5 ; 8a 9a aa ba ca da ea fa
-
- movdqa xmm5, xmm2
- punpckldq xmm2, xmm6 ; 8c 9c ac bc cc dc ec fc
- punpckhdq xmm5, xmm6 ; 8e 9e ae be ce de ee fe
-
- ; save the calculations. we only have 15 registers ...
- movdqa i0, xmm0
- movdqa i1, xmm7
- movdqa i2, xmm4
- movdqa i3, xmm3
- movdqa i4, xmm1
- movdqa i5, xmm8
- movdqa i6, xmm2
- movdqa i7, xmm5
-
- ; 0-7
- movdqa xmm0, s0
- movdqa xmm1, xmm0
- punpcklbw xmm0, s1 ; 00 10
- punpckhbw xmm1, s1 ; 08 18
-
- movdqa xmm2, s2
- movdqa xmm3, xmm2
- punpcklbw xmm2, s3 ; 20 30
- punpckhbw xmm3, s3 ; 28 38
-
- movdqa xmm4, xmm0
- punpcklwd xmm0, xmm2 ; 00 10 20 30
- punpckhwd xmm4, xmm2 ; 04 14 24 34
-
- movdqa xmm2, xmm1
- punpcklwd xmm1, xmm3 ; 08 18 28 38
- punpckhwd xmm2, xmm3 ; 0c 1c 2c 3c
-
- ; using xmm[0124]
- ; work on next 4 rows
-
- movdqa xmm3, s4
- movdqa xmm5, xmm3
- punpcklbw xmm3, s5 ; 40 50
- punpckhbw xmm5, s5 ; 48 58
-
- movdqa xmm6, s6
- movdqa xmm7, xmm6
- punpcklbw xmm6, s7 ; 60 70
- punpckhbw xmm7, s7 ; 68 78
-
- movdqa xmm8, xmm3
- punpcklwd xmm3, xmm6 ; 40 50 60 70
- punpckhwd xmm8, xmm6 ; 44 54 64 74
-
- movdqa xmm6, xmm5
- punpcklwd xmm5, xmm7 ; 48 58 68 78
- punpckhwd xmm6, xmm7 ; 4c 5c 6c 7c
-
- ; pull the first two sets together
-
- movdqa xmm7, xmm0
- punpckldq xmm0, xmm3 ; 00 10 20 30 40 50 60 70
- punpckhdq xmm7, xmm3 ; 02 12 22 32 42 52 62 72
-
- movdqa xmm3, xmm4
- punpckldq xmm4, xmm8 ; 04 14 24 34 44 54 64 74
- punpckhdq xmm3, xmm8 ; 06 16 26 36 46 56 66 76
-
- movdqa xmm8, xmm1
- punpckldq xmm1, xmm5 ; 08 18 28 38 48 58 68 78
- punpckhdq xmm8, xmm5 ; 0a 1a 2a 3a 4a 5a 6a 7a
-
- movdqa xmm5, xmm2
- punpckldq xmm2, xmm6 ; 0c 1c 2c 3c 4c 5c 6c 7c
- punpckhdq xmm5, xmm6 ; 0e 1e 2e 3e 4e 5e 6e 7e
- ; final combination
-
- movdqa xmm6, xmm0
- punpcklqdq xmm0, i0
- punpckhqdq xmm6, i0
-
- movdqa xmm9, xmm7
- punpcklqdq xmm7, i1
- punpckhqdq xmm9, i1
-
- movdqa xmm10, xmm4
- punpcklqdq xmm4, i2
- punpckhqdq xmm10, i2
-
- movdqa xmm11, xmm3
- punpcklqdq xmm3, i3
- punpckhqdq xmm11, i3
-
- movdqa xmm12, xmm1
- punpcklqdq xmm1, i4
- punpckhqdq xmm12, i4
-
- movdqa xmm13, xmm8
- punpcklqdq xmm8, i5
- punpckhqdq xmm13, i5
-
- movdqa xmm14, xmm2
- punpcklqdq xmm2, i6
- punpckhqdq xmm14, i6
-
- movdqa xmm15, xmm5
- punpcklqdq xmm5, i7
- punpckhqdq xmm15, i7
-
- movdqa i0, xmm0
- movdqa i1, xmm6
- movdqa i2, xmm7
- movdqa i3, xmm9
- movdqa i4, xmm4
- movdqa i5, xmm10
- movdqa i6, xmm3
- movdqa i7, xmm11
- movdqa i8, xmm1
- movdqa i9, xmm12
- movdqa i10, xmm8
- movdqa i11, xmm13
- movdqa i12, xmm2
- movdqa i13, xmm14
- movdqa i14, xmm5
- movdqa i15, xmm15
-
-; TRANSPOSED DATA AVAILABLE ON THE STACK
-
- movdqa xmm12, xmm6
- movdqa xmm13, xmm7
-
- pxor zero, zero
-
-LF_FILTER_HEV_MASK xmm0, xmm12, xmm13, xmm9, xmm4, xmm10, xmm3, xmm11
-
- movdqa xmm1, i2
- movdqa xmm2, i3
- movdqa xmm8, i4
- movdqa xmm9, i5
-LF_FILTER xmm1, xmm2, xmm8, xmm9, xmm0, xmm4
- movdqa i2, xmm1
- movdqa i3, xmm2
-
-; second set
- movdqa i4, xmm8
- movdqa i5, xmm9
-
- movdqa xmm0, i6
- movdqa xmm1, i7
- movdqa xmm2, i8
- movdqa xmm4, i9
- movdqa xmm10, i10 ; q2, will contain abs(p1-p0)
- movdqa xmm11, i11
-LF_FILTER_HEV_MASK xmm8, xmm9, xmm0, xmm1, xmm2, xmm4, xmm10, xmm11, xmm3
-
- movdqa xmm0, i6
- movdqa xmm1, i7
- movdqa xmm3, i8
- movdqa xmm4, i9
-LF_FILTER xmm0, xmm1, xmm3, xmm4, xmm8, xmm2
- movdqa i6, xmm0
- movdqa i7, xmm1
-
-; last set
- movdqa i8, xmm3
- movdqa i9, xmm4
-
- movdqa xmm0, i10
- movdqa xmm1, i11
- movdqa xmm2, i12
- movdqa xmm8, i13
- movdqa xmm9, i14 ; q2, will contain abs(p1-p0)
- movdqa xmm11, i15
-LF_FILTER_HEV_MASK xmm3, xmm4, xmm0, xmm1, xmm2, xmm8, xmm9, xmm11, xmm10
-
- movdqa xmm0, i10
- movdqa xmm1, i11
- movdqa xmm4, i12
- movdqa xmm8, i13
-LF_FILTER xmm0, xmm1, xmm4, xmm8, xmm3, xmm2
- movdqa i10, xmm0
- movdqa i11, xmm1
- movdqa i12, xmm4
- movdqa i13, xmm8
-
-
-; RESHUFFLE AND WRITE OUT
- ; 8-f
- movdqa xmm0, i8
- movdqa xmm1, xmm0
- punpcklbw xmm0, i9 ; 80 90
- punpckhbw xmm1, i9 ; 88 98
-
- movdqa xmm2, i10
- movdqa xmm3, xmm2
- punpcklbw xmm2, i11 ; a0 b0
- punpckhbw xmm3, i11 ; a8 b8
-
- movdqa xmm4, xmm0
- punpcklwd xmm0, xmm2 ; 80 90 a0 b0
- punpckhwd xmm4, xmm2 ; 84 94 a4 b4
-
- movdqa xmm2, xmm1
- punpcklwd xmm1, xmm3 ; 88 98 a8 b8
- punpckhwd xmm2, xmm3 ; 8c 9c ac bc
-
- ; using xmm[0124]
- ; work on next 4 rows
-
- movdqa xmm3, i12
- movdqa xmm5, xmm3
- punpcklbw xmm3, i13 ; c0 d0
- punpckhbw xmm5, i13 ; c8 d8
-
- movdqa xmm6, i14
- movdqa xmm7, xmm6
- punpcklbw xmm6, i15 ; e0 f0
- punpckhbw xmm7, i15 ; e8 f8
-
- movdqa xmm8, xmm3
- punpcklwd xmm3, xmm6 ; c0 d0 e0 f0
- punpckhwd xmm8, xmm6 ; c4 d4 e4 f4
-
- movdqa xmm6, xmm5
- punpcklwd xmm5, xmm7 ; c8 d8 e8 f8
- punpckhwd xmm6, xmm7 ; cc dc ec fc
-
- ; pull the third and fourth sets together
-
- movdqa xmm7, xmm0
- punpckldq xmm0, xmm3 ; 80 90 a0 b0 c0 d0 e0 f0
- punpckhdq xmm7, xmm3 ; 82 92 a2 b2 c2 d2 e2 f2
-
- movdqa xmm3, xmm4
- punpckldq xmm4, xmm8 ; 84 94 a4 b4 c4 d4 e4 f4
- punpckhdq xmm3, xmm8 ; 86 96 a6 b6 c6 d6 e6 f6
-
- movdqa xmm8, xmm1
- punpckldq xmm1, xmm5 ; 88 88 a8 b8 c8 d8 e8 f8
- punpckhdq xmm8, xmm5 ; 8a 9a aa ba ca da ea fa
-
- movdqa xmm5, xmm2
- punpckldq xmm2, xmm6 ; 8c 9c ac bc cc dc ec fc
- punpckhdq xmm5, xmm6 ; 8e 9e ae be ce de ee fe
-
- ; save the calculations. we only have 15 registers ...
- movdqa i8, xmm0
- movdqa i9, xmm7
- movdqa i10, xmm4
- movdqa i11, xmm3
- movdqa i12, xmm1
- movdqa i13, xmm8
- movdqa i14, xmm2
- movdqa i15, xmm5
-
- ; 0-7
- movdqa xmm0, i0
- movdqa xmm1, xmm0
- punpcklbw xmm0, i1 ; 00 10
- punpckhbw xmm1, i1 ; 08 18
-
- movdqa xmm2, i2
- movdqa xmm3, xmm2
- punpcklbw xmm2, i3 ; 20 30
- punpckhbw xmm3, i3 ; 28 38
-
- movdqa xmm4, xmm0
- punpcklwd xmm0, xmm2 ; 00 10 20 30
- punpckhwd xmm4, xmm2 ; 04 14 24 34
-
- movdqa xmm2, xmm1
- punpcklwd xmm1, xmm3 ; 08 18 28 38
- punpckhwd xmm2, xmm3 ; 0c 1c 2c 3c
-
- ; using xmm[0124]
- ; work on next 4 rows
-
- movdqa xmm3, i4
- movdqa xmm5, xmm3
- punpcklbw xmm3, i5 ; 40 50
- punpckhbw xmm5, i5 ; 48 58
-
- movdqa xmm6, i6
- movdqa xmm7, xmm6
- punpcklbw xmm6, i7 ; 60 70
- punpckhbw xmm7, i7 ; 68 78
-
- movdqa xmm8, xmm3
- punpcklwd xmm3, xmm6 ; 40 50 60 70
- punpckhwd xmm8, xmm6 ; 44 54 64 74
-
- movdqa xmm6, xmm5
- punpcklwd xmm5, xmm7 ; 48 58 68 78
- punpckhwd xmm6, xmm7 ; 4c 5c 6c 7c
-
- ; pull the first two sets together
-
- movdqa xmm7, xmm0
- punpckldq xmm0, xmm3 ; 00 10 20 30 40 50 60 70
- punpckhdq xmm7, xmm3 ; 02 12 22 32 42 52 62 72
-
- movdqa xmm3, xmm4
- punpckldq xmm4, xmm8 ; 04 14 24 34 44 54 64 74
- punpckhdq xmm3, xmm8 ; 06 16 26 36 46 56 66 76
-
- movdqa xmm8, xmm1
- punpckldq xmm1, xmm5 ; 08 18 28 38 48 58 68 78
- punpckhdq xmm8, xmm5 ; 0a 1a 2a 3a 4a 5a 6a 7a
-
- movdqa xmm5, xmm2
- punpckldq xmm2, xmm6 ; 0c 1c 2c 3c 4c 5c 6c 7c
- punpckhdq xmm5, xmm6 ; 0e 1e 2e 3e 4e 5e 6e 7e
- ; final combination
-
- movdqa xmm6, xmm0
- punpcklqdq xmm0, i8
- punpckhqdq xmm6, i8
-
- movdqa xmm9, xmm7
- punpcklqdq xmm7, i9
- punpckhqdq xmm9, i9
-
- movdqa xmm10, xmm4
- punpcklqdq xmm4, i10
- punpckhqdq xmm10, i10
-
- movdqa xmm11, xmm3
- punpcklqdq xmm3, i11
- punpckhqdq xmm11, i11
-
- movdqa xmm12, xmm1
- punpcklqdq xmm1, i12
- punpckhqdq xmm12, i12
-
- movdqa xmm13, xmm8
- punpcklqdq xmm8, i13
- punpckhqdq xmm13, i13
-
- movdqa xmm14, xmm2
- punpcklqdq xmm2, i14
- punpckhqdq xmm14, i14
-
- movdqa xmm15, xmm5
- punpcklqdq xmm5, i15
- punpckhqdq xmm15, i15
-
- movdqa s0, xmm0
- movdqa s1, xmm6
- movdqa s2, xmm7
- movdqa s3, xmm9
- movdqa s4, xmm4
- movdqa s5, xmm10
- movdqa s6, xmm3
- movdqa s7, xmm11
- movdqa s8, xmm1
- movdqa s9, xmm12
- movdqa s10, xmm8
- movdqa s11, xmm13
- movdqa s12, xmm2
- movdqa s13, xmm14
- movdqa s14, xmm5
- movdqa s15, xmm15
-
- ; free stack space
- add rsp, stack_size
-
- ; un-ALIGN_STACK
- pop rsp
-
-%if LIBVPX_YASM_WIN64
- pop r13
- pop r12
- RESTORE_XMM
- pop rbp
-%endif
-
- ret
-
-SECTION_RODATA
-align 16
-te0:
- times 16 db 0xe0
-align 16
-t7f:
- times 16 db 0x7f
-align 16
-tfe:
- times 16 db 0xfe
-align 16
-t1f:
- times 16 db 0x1f
-align 16
-t80:
- times 16 db 0x80
-align 16
-t1:
- times 16 db 0x01
-align 16
-t3:
- times 16 db 0x03
-align 16
-t4:
- times 16 db 0x04
diff --git a/thirdparty/libvpx/vp8/common/x86/loopfilter_sse2.asm b/thirdparty/libvpx/vp8/common/x86/loopfilter_sse2.asm
deleted file mode 100644
index 1913abc69b..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/loopfilter_sse2.asm
+++ /dev/null
@@ -1,1640 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-%define _t0 0
-%define _t1 _t0 + 16
-%define _p3 _t1 + 16
-%define _p2 _p3 + 16
-%define _p1 _p2 + 16
-%define _p0 _p1 + 16
-%define _q0 _p0 + 16
-%define _q1 _q0 + 16
-%define _q2 _q1 + 16
-%define _q3 _q2 + 16
-%define lf_var_size 160
-
-; Use of pmaxub instead of psubusb to compute filter mask was seen
-; in ffvp8
-
-%macro LFH_FILTER_AND_HEV_MASK 1
-%if %1
- movdqa xmm2, [rdi+2*rax] ; q3
- movdqa xmm1, [rsi+2*rax] ; q2
- movdqa xmm4, [rsi+rax] ; q1
- movdqa xmm5, [rsi] ; q0
- neg rax ; negate pitch to deal with above border
-%else
- movlps xmm2, [rsi + rcx*2] ; q3
- movlps xmm1, [rsi + rcx] ; q2
- movlps xmm4, [rsi] ; q1
- movlps xmm5, [rsi + rax] ; q0
-
- movhps xmm2, [rdi + rcx*2]
- movhps xmm1, [rdi + rcx]
- movhps xmm4, [rdi]
- movhps xmm5, [rdi + rax]
-
- lea rsi, [rsi + rax*4]
- lea rdi, [rdi + rax*4]
-
- movdqa [rsp+_q2], xmm1 ; store q2
- movdqa [rsp+_q1], xmm4 ; store q1
-%endif
- movdqa xmm7, [rdx] ;limit
-
- movdqa xmm6, xmm1 ; q2
- movdqa xmm3, xmm4 ; q1
-
- psubusb xmm1, xmm2 ; q2-=q3
- psubusb xmm2, xmm6 ; q3-=q2
-
- psubusb xmm4, xmm6 ; q1-=q2
- psubusb xmm6, xmm3 ; q2-=q1
-
- por xmm4, xmm6 ; abs(q2-q1)
- por xmm1, xmm2 ; abs(q3-q2)
-
- movdqa xmm0, xmm5 ; q0
- pmaxub xmm1, xmm4
-
- psubusb xmm5, xmm3 ; q0-=q1
- psubusb xmm3, xmm0 ; q1-=q0
-
- por xmm5, xmm3 ; abs(q0-q1)
- movdqa [rsp+_t0], xmm5 ; save to t0
-
- pmaxub xmm1, xmm5
-
-%if %1
- movdqa xmm2, [rsi+4*rax] ; p3
- movdqa xmm4, [rdi+4*rax] ; p2
- movdqa xmm6, [rsi+2*rax] ; p1
-%else
- movlps xmm2, [rsi + rax] ; p3
- movlps xmm4, [rsi] ; p2
- movlps xmm6, [rsi + rcx] ; p1
-
- movhps xmm2, [rdi + rax]
- movhps xmm4, [rdi]
- movhps xmm6, [rdi + rcx]
-
- movdqa [rsp+_p2], xmm4 ; store p2
- movdqa [rsp+_p1], xmm6 ; store p1
-%endif
-
- movdqa xmm5, xmm4 ; p2
- movdqa xmm3, xmm6 ; p1
-
- psubusb xmm4, xmm2 ; p2-=p3
- psubusb xmm2, xmm5 ; p3-=p2
-
- psubusb xmm3, xmm5 ; p1-=p2
- pmaxub xmm1, xmm4 ; abs(p3 - p2)
-
- psubusb xmm5, xmm6 ; p2-=p1
- pmaxub xmm1, xmm2 ; abs(p3 - p2)
-
- pmaxub xmm1, xmm5 ; abs(p2 - p1)
- movdqa xmm2, xmm6 ; p1
-
- pmaxub xmm1, xmm3 ; abs(p2 - p1)
-%if %1
- movdqa xmm4, [rsi+rax] ; p0
- movdqa xmm3, [rdi] ; q1
-%else
- movlps xmm4, [rsi + rcx*2] ; p0
- movhps xmm4, [rdi + rcx*2]
- movdqa xmm3, [rsp+_q1] ; q1
-%endif
-
- movdqa xmm5, xmm4 ; p0
- psubusb xmm4, xmm6 ; p0-=p1
-
- psubusb xmm6, xmm5 ; p1-=p0
-
- por xmm6, xmm4 ; abs(p1 - p0)
- mov rdx, arg(2) ; get blimit
-
- movdqa [rsp+_t1], xmm6 ; save to t1
-
- movdqa xmm4, xmm3 ; q1
- pmaxub xmm1, xmm6
-
- psubusb xmm3, xmm2 ; q1-=p1
- psubusb xmm2, xmm4 ; p1-=q1
-
- psubusb xmm1, xmm7
- por xmm2, xmm3 ; abs(p1-q1)
-
- movdqa xmm7, [rdx] ; blimit
- mov rdx, arg(4) ; hev get thresh
-
- movdqa xmm3, xmm0 ; q0
- pand xmm2, [GLOBAL(tfe)] ; set lsb of each byte to zero
-
- movdqa xmm6, xmm5 ; p0
- psrlw xmm2, 1 ; abs(p1-q1)/2
-
- psubusb xmm5, xmm3 ; p0-=q0
- psubusb xmm3, xmm6 ; q0-=p0
- por xmm5, xmm3 ; abs(p0 - q0)
-
- paddusb xmm5, xmm5 ; abs(p0-q0)*2
-
- movdqa xmm4, [rsp+_t0] ; hev get abs (q1 - q0)
- movdqa xmm3, [rsp+_t1] ; get abs (p1 - p0)
-
- paddusb xmm5, xmm2 ; abs (p0 - q0) *2 + abs(p1-q1)/2
-
- movdqa xmm2, [rdx] ; hev
-
- psubusb xmm5, xmm7 ; abs (p0 - q0) *2 + abs(p1-q1)/2 > blimit
- psubusb xmm4, xmm2 ; hev
-
- psubusb xmm3, xmm2 ; hev
- por xmm1, xmm5
-
- pxor xmm7, xmm7
- paddb xmm4, xmm3 ; hev abs(q1 - q0) > thresh || abs(p1 - p0) > thresh
-
- pcmpeqb xmm4, xmm5 ; hev
- pcmpeqb xmm3, xmm3 ; hev
-
- pcmpeqb xmm1, xmm7 ; mask xmm1
- pxor xmm4, xmm3 ; hev
-%endmacro
-
-%macro B_FILTER 1
- movdqa xmm3, [GLOBAL(t80)]
-%if %1 == 0
- movdqa xmm2, [rsp+_p1] ; p1
- movdqa xmm7, [rsp+_q1] ; q1
-%elif %1 == 1
- movdqa xmm2, [rsi+2*rax] ; p1
- movdqa xmm7, [rdi] ; q1
-%elif %1 == 2
- movdqa xmm2, [rsp+_p1] ; p1
- movdqa xmm6, [rsp+_p0] ; p0
- movdqa xmm0, [rsp+_q0] ; q0
- movdqa xmm7, [rsp+_q1] ; q1
-%endif
-
- pxor xmm2, xmm3 ; p1 offset to convert to signed values
- pxor xmm7, xmm3 ; q1 offset to convert to signed values
-
- psubsb xmm2, xmm7 ; p1 - q1
- pxor xmm6, xmm3 ; offset to convert to signed values
-
- pand xmm2, xmm4 ; high var mask (hvm)(p1 - q1)
- pxor xmm0, xmm3 ; offset to convert to signed values
-
- movdqa xmm3, xmm0 ; q0
- psubsb xmm0, xmm6 ; q0 - p0
- paddsb xmm2, xmm0 ; 1 * (q0 - p0) + hvm(p1 - q1)
- paddsb xmm2, xmm0 ; 2 * (q0 - p0) + hvm(p1 - q1)
- paddsb xmm2, xmm0 ; 3 * (q0 - p0) + hvm(p1 - q1)
- pand xmm1, xmm2 ; mask filter values we don't care about
-
- movdqa xmm2, xmm1
- paddsb xmm1, [GLOBAL(t4)] ; 3* (q0 - p0) + hvm(p1 - q1) + 4
- paddsb xmm2, [GLOBAL(t3)] ; 3* (q0 - p0) + hvm(p1 - q1) + 3
-
- punpckhbw xmm5, xmm2 ; axbxcxdx
- punpcklbw xmm2, xmm2 ; exfxgxhx
-
- punpcklbw xmm0, xmm1 ; exfxgxhx
- psraw xmm5, 11 ; sign extended shift right by 3
-
- punpckhbw xmm1, xmm1 ; axbxcxdx
- psraw xmm2, 11 ; sign extended shift right by 3
-
- packsswb xmm2, xmm5 ; (3* (q0 - p0) + hvm(p1 - q1) + 3) >> 3;
- psraw xmm0, 11 ; sign extended shift right by 3
-
- psraw xmm1, 11 ; sign extended shift right by 3
- movdqa xmm5, xmm0 ; save results
-
- packsswb xmm0, xmm1 ; (3* (q0 - p0) + hvm(p1 - q1) + 4) >>3
-
- paddsb xmm6, xmm2 ; p0+= p0 add
-
- movdqa xmm2, [GLOBAL(ones)]
- paddsw xmm5, xmm2
- paddsw xmm1, xmm2
- psraw xmm5, 1 ; partial shifted one more time for 2nd tap
- psraw xmm1, 1 ; partial shifted one more time for 2nd tap
- packsswb xmm5, xmm1 ; (3* (q0 - p0) + hvm(p1 - q1) + 4) >>4
- movdqa xmm2, [GLOBAL(t80)]
-
-%if %1 == 0
- movdqa xmm1, [rsp+_p1] ; p1
- lea rsi, [rsi + rcx*2]
- lea rdi, [rdi + rcx*2]
-%elif %1 == 1
- movdqa xmm1, [rsi+2*rax] ; p1
-%elif %1 == 2
- movdqa xmm1, [rsp+_p1] ; p1
-%endif
-
- pandn xmm4, xmm5 ; high edge variance additive
- pxor xmm6, xmm2 ; unoffset
-
- pxor xmm1, xmm2 ; reoffset
- psubsb xmm3, xmm0 ; q0-= q0 add
-
- paddsb xmm1, xmm4 ; p1+= p1 add
- pxor xmm3, xmm2 ; unoffset
-
- pxor xmm1, xmm2 ; unoffset
- psubsb xmm7, xmm4 ; q1-= q1 add
-
- pxor xmm7, xmm2 ; unoffset
-%if %1 == 0
- movq [rsi], xmm6 ; p0
- movhps [rdi], xmm6
- movq [rsi + rax], xmm1 ; p1
- movhps [rdi + rax], xmm1
- movq [rsi + rcx], xmm3 ; q0
- movhps [rdi + rcx], xmm3
- movq [rsi + rcx*2], xmm7 ; q1
- movhps [rdi + rcx*2], xmm7
-%elif %1 == 1
- movdqa [rsi+rax], xmm6 ; write back
- movdqa [rsi+2*rax], xmm1 ; write back
- movdqa [rsi], xmm3 ; write back
- movdqa [rdi], xmm7 ; write back
-%endif
-
-%endmacro
-
-%if ABI_IS_32BIT
-
-;void vp8_loop_filter_horizontal_edge_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-;)
-global sym(vp8_loop_filter_horizontal_edge_sse2) PRIVATE
-sym(vp8_loop_filter_horizontal_edge_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, lf_var_size
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step
-
- mov rdx, arg(3) ;limit
-
- lea rdi, [rsi+rax] ; rdi points to row +1 for indirect addressing
-
- ; calculate breakout conditions and high edge variance
- LFH_FILTER_AND_HEV_MASK 1
- ; filter and write back the result
- B_FILTER 1
-
- add rsp, lf_var_size
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-%endif
-
-;void vp8_loop_filter_horizontal_edge_uv_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-; int count
-;)
-global sym(vp8_loop_filter_horizontal_edge_uv_sse2) PRIVATE
-sym(vp8_loop_filter_horizontal_edge_uv_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, lf_var_size
-
- mov rsi, arg(0) ; u
- mov rdi, arg(5) ; v
- movsxd rax, dword ptr arg(1) ; src_pixel_step
- mov rcx, rax
- neg rax ; negate pitch to deal with above border
-
- mov rdx, arg(3) ;limit
-
- lea rsi, [rsi + rcx]
- lea rdi, [rdi + rcx]
-
- ; calculate breakout conditions and high edge variance
- LFH_FILTER_AND_HEV_MASK 0
- ; filter and write back the result
- B_FILTER 0
-
- add rsp, lf_var_size
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-%macro MB_FILTER_AND_WRITEBACK 1
- movdqa xmm3, [GLOBAL(t80)]
-%if %1 == 0
- movdqa xmm2, [rsp+_p1] ; p1
- movdqa xmm7, [rsp+_q1] ; q1
-%elif %1 == 1
- movdqa xmm2, [rsi+2*rax] ; p1
- movdqa xmm7, [rdi] ; q1
-
- mov rcx, rax
- neg rcx
-%elif %1 == 2
- movdqa xmm2, [rsp+_p1] ; p1
- movdqa xmm6, [rsp+_p0] ; p0
- movdqa xmm0, [rsp+_q0] ; q0
- movdqa xmm7, [rsp+_q1] ; q1
-%endif
-
- pxor xmm2, xmm3 ; p1 offset to convert to signed values
- pxor xmm7, xmm3 ; q1 offset to convert to signed values
- pxor xmm6, xmm3 ; offset to convert to signed values
- pxor xmm0, xmm3 ; offset to convert to signed values
-
- psubsb xmm2, xmm7 ; p1 - q1
-
- movdqa xmm3, xmm0 ; q0
- psubsb xmm0, xmm6 ; q0 - p0
- paddsb xmm2, xmm0 ; 1 * (q0 - p0) + (p1 - q1)
- paddsb xmm2, xmm0 ; 2 * (q0 - p0)
- paddsb xmm2, xmm0 ; 3 * (q0 - p0) + (p1 - q1)
- pand xmm1, xmm2 ; mask filter values we don't care about
-
- movdqa xmm2, xmm1 ; vp8_filter
-
- pand xmm2, xmm4 ; Filter2 = vp8_filter & hev
- pxor xmm0, xmm0
-
- pandn xmm4, xmm1 ; vp8_filter&=~hev
- pxor xmm1, xmm1
-
- punpcklbw xmm0, xmm4 ; Filter 2 (hi)
- punpckhbw xmm1, xmm4 ; Filter 2 (lo)
-
- movdqa xmm5, xmm2
-
- movdqa xmm4, [GLOBAL(s9)]
- paddsb xmm5, [GLOBAL(t3)] ; vp8_signed_char_clamp(Filter2 + 3)
- paddsb xmm2, [GLOBAL(t4)] ; vp8_signed_char_clamp(Filter2 + 4)
-
- pmulhw xmm1, xmm4 ; Filter 2 (lo) * 9
- pmulhw xmm0, xmm4 ; Filter 2 (hi) * 9
-
- punpckhbw xmm7, xmm5 ; axbxcxdx
- punpcklbw xmm5, xmm5 ; exfxgxhx
-
- psraw xmm7, 11 ; sign extended shift right by 3
-
- psraw xmm5, 11 ; sign extended shift right by 3
- punpckhbw xmm4, xmm2 ; axbxcxdx
-
- punpcklbw xmm2, xmm2 ; exfxgxhx
- psraw xmm4, 11 ; sign extended shift right by 3
-
- packsswb xmm5, xmm7 ; Filter2 >>=3;
- psraw xmm2, 11 ; sign extended shift right by 3
-
- packsswb xmm2, xmm4 ; Filter1 >>=3;
-
- paddsb xmm6, xmm5 ; ps0 =ps0 + Fitler2
-
- psubsb xmm3, xmm2 ; qs0 =qs0 - Filter1
- movdqa xmm7, xmm1
-
- movdqa xmm4, [GLOBAL(s63)]
- movdqa xmm5, xmm0
- movdqa xmm2, xmm5
- paddw xmm0, xmm4 ; Filter 2 (hi) * 9 + 63
- paddw xmm1, xmm4 ; Filter 2 (lo) * 9 + 63
- movdqa xmm4, xmm7
-
- paddw xmm5, xmm5 ; Filter 2 (hi) * 18
-
- paddw xmm7, xmm7 ; Filter 2 (lo) * 18
- paddw xmm5, xmm0 ; Filter 2 (hi) * 27 + 63
-
- paddw xmm7, xmm1 ; Filter 2 (lo) * 27 + 63
- paddw xmm2, xmm0 ; Filter 2 (hi) * 18 + 63
- psraw xmm0, 7 ; (Filter 2 (hi) * 9 + 63) >> 7
-
- paddw xmm4, xmm1 ; Filter 2 (lo) * 18 + 63
- psraw xmm1, 7 ; (Filter 2 (lo) * 9 + 63) >> 7
- psraw xmm2, 7 ; (Filter 2 (hi) * 18 + 63) >> 7
-
- packsswb xmm0, xmm1 ; u1 = vp8_signed_char_clamp((63 + Filter2 * 9)>>7)
-
- psraw xmm4, 7 ; (Filter 2 (lo) * 18 + 63) >> 7
- psraw xmm5, 7 ; (Filter 2 (hi) * 27 + 63) >> 7
- psraw xmm7, 7 ; (Filter 2 (lo) * 27 + 63) >> 7
-
- packsswb xmm5, xmm7 ; u3 = vp8_signed_char_clamp((63 + Filter2 * 27)>>7)
- packsswb xmm2, xmm4 ; u2 = vp8_signed_char_clamp((63 + Filter2 * 18)>>7)
- movdqa xmm7, [GLOBAL(t80)]
-
-%if %1 == 0
- movdqa xmm1, [rsp+_q1] ; q1
- movdqa xmm4, [rsp+_p1] ; p1
- lea rsi, [rsi+rcx*2]
- lea rdi, [rdi+rcx*2]
-
-%elif %1 == 1
- movdqa xmm1, [rdi] ; q1
- movdqa xmm4, [rsi+rax*2] ; p1
-%elif %1 == 2
- movdqa xmm4, [rsp+_p1] ; p1
- movdqa xmm1, [rsp+_q1] ; q1
-%endif
-
- pxor xmm1, xmm7
- pxor xmm4, xmm7
-
- psubsb xmm3, xmm5 ; sq = vp8_signed_char_clamp(qs0 - u3)
- paddsb xmm6, xmm5 ; sp = vp8_signed_char_clamp(ps0 - u3)
- psubsb xmm1, xmm2 ; sq = vp8_signed_char_clamp(qs1 - u2)
- paddsb xmm4, xmm2 ; sp = vp8_signed_char_clamp(ps1 - u2)
-
-%if %1 == 1
- movdqa xmm2, [rdi+rax*4] ; p2
- movdqa xmm5, [rdi+rcx] ; q2
-%else
- movdqa xmm2, [rsp+_p2] ; p2
- movdqa xmm5, [rsp+_q2] ; q2
-%endif
-
- pxor xmm1, xmm7 ; *oq1 = sq^0x80;
- pxor xmm4, xmm7 ; *op1 = sp^0x80;
- pxor xmm2, xmm7
- pxor xmm5, xmm7
- paddsb xmm2, xmm0 ; sp = vp8_signed_char_clamp(ps2 - u)
- psubsb xmm5, xmm0 ; sq = vp8_signed_char_clamp(qs2 - u)
- pxor xmm2, xmm7 ; *op2 = sp^0x80;
- pxor xmm5, xmm7 ; *oq2 = sq^0x80;
- pxor xmm3, xmm7 ; *oq0 = sq^0x80
- pxor xmm6, xmm7 ; *oq0 = sp^0x80
-%if %1 == 0
- movq [rsi], xmm6 ; p0
- movhps [rdi], xmm6
- movq [rsi + rcx], xmm3 ; q0
- movhps [rdi + rcx], xmm3
- lea rdx, [rcx + rcx*2]
- movq [rsi+rcx*2], xmm1 ; q1
- movhps [rdi+rcx*2], xmm1
-
- movq [rsi + rax], xmm4 ; p1
- movhps [rdi + rax], xmm4
-
- movq [rsi+rax*2], xmm2 ; p2
- movhps [rdi+rax*2], xmm2
-
- movq [rsi+rdx], xmm5 ; q2
- movhps [rdi+rdx], xmm5
-%elif %1 == 1
- movdqa [rdi+rcx], xmm5 ; q2
- movdqa [rdi], xmm1 ; q1
- movdqa [rsi], xmm3 ; q0
- movdqa [rsi+rax ], xmm6 ; p0
- movdqa [rsi+rax*2], xmm4 ; p1
- movdqa [rdi+rax*4], xmm2 ; p2
-%elif %1 == 2
- movdqa [rsp+_p1], xmm4 ; p1
- movdqa [rsp+_p0], xmm6 ; p0
- movdqa [rsp+_q0], xmm3 ; q0
- movdqa [rsp+_q1], xmm1 ; q1
-%endif
-
-%endmacro
-
-
-;void vp8_mbloop_filter_horizontal_edge_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-;)
-global sym(vp8_mbloop_filter_horizontal_edge_sse2) PRIVATE
-sym(vp8_mbloop_filter_horizontal_edge_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, lf_var_size
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step
- mov rdx, arg(3) ;limit
-
- lea rdi, [rsi+rax] ; rdi points to row +1 for indirect addressing
-
- ; calculate breakout conditions and high edge variance
- LFH_FILTER_AND_HEV_MASK 1
- ; filter and write back the results
- MB_FILTER_AND_WRITEBACK 1
-
- add rsp, lf_var_size
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_mbloop_filter_horizontal_edge_uv_sse2
-;(
-; unsigned char *u,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-; unsigned char *v
-;)
-global sym(vp8_mbloop_filter_horizontal_edge_uv_sse2) PRIVATE
-sym(vp8_mbloop_filter_horizontal_edge_uv_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, lf_var_size
-
- mov rsi, arg(0) ; u
- mov rdi, arg(5) ; v
- movsxd rax, dword ptr arg(1) ; src_pixel_step
- mov rcx, rax
- neg rax ; negate pitch to deal with above border
- mov rdx, arg(3) ;limit
-
- lea rsi, [rsi + rcx]
- lea rdi, [rdi + rcx]
-
- ; calculate breakout conditions and high edge variance
- LFH_FILTER_AND_HEV_MASK 0
- ; filter and write back the results
- MB_FILTER_AND_WRITEBACK 0
-
- add rsp, lf_var_size
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-%macro TRANSPOSE_16X8 2
- movq xmm4, [rsi] ; xx xx xx xx xx xx xx xx 07 06 05 04 03 02 01 00
- movq xmm1, [rdi] ; xx xx xx xx xx xx xx xx 17 16 15 14 13 12 11 10
- movq xmm0, [rsi+2*rax] ; xx xx xx xx xx xx xx xx 27 26 25 24 23 22 21 20
- movq xmm7, [rdi+2*rax] ; xx xx xx xx xx xx xx xx 37 36 35 34 33 32 31 30
- movq xmm5, [rsi+4*rax] ; xx xx xx xx xx xx xx xx 47 46 45 44 43 42 41 40
- movq xmm2, [rdi+4*rax] ; xx xx xx xx xx xx xx xx 57 56 55 54 53 52 51 50
-
- punpcklbw xmm4, xmm1 ; 17 07 16 06 15 05 14 04 13 03 12 02 11 01 10 00
-
- movq xmm1, [rdi+2*rcx] ; xx xx xx xx xx xx xx xx 77 76 75 74 73 72 71 70
-
- movdqa xmm3, xmm4 ; 17 07 16 06 15 05 14 04 13 03 12 02 11 01 10 00
- punpcklbw xmm0, xmm7 ; 37 27 36 36 35 25 34 24 33 23 32 22 31 21 30 20
-
- movq xmm7, [rsi+2*rcx] ; xx xx xx xx xx xx xx xx 67 66 65 64 63 62 61 60
-
- punpcklbw xmm5, xmm2 ; 57 47 56 46 55 45 54 44 53 43 52 42 51 41 50 40
-%if %1
- lea rsi, [rsi+rax*8]
- lea rdi, [rdi+rax*8]
-%else
- mov rsi, arg(5) ; v_ptr
-%endif
-
- movdqa xmm6, xmm5 ; 57 47 56 46 55 45 54 44 53 43 52 42 51 41 50 40
- punpcklbw xmm7, xmm1 ; 77 67 76 66 75 65 74 64 73 63 72 62 71 61 70 60
- punpcklwd xmm5, xmm7 ; 73 63 53 43 72 62 52 42 71 61 51 41 70 60 50 40
- punpckhwd xmm6, xmm7 ; 77 67 57 47 76 66 56 46 75 65 55 45 74 64 54 44
- punpcklwd xmm3, xmm0 ; 33 23 13 03 32 22 12 02 31 21 11 01 30 20 10 00
-
-%if %1 == 0
- lea rdi, [rsi + rax - 4] ; rdi points to row +1 for indirect addressing
- lea rsi, [rsi - 4]
-%endif
-
- movdqa xmm2, xmm3 ; 33 23 13 03 32 22 12 02 31 21 11 01 30 20 10 00
- punpckhwd xmm4, xmm0 ; 37 27 17 07 36 26 16 06 35 25 15 05 34 24 14 04
-
- movdqa xmm7, xmm4 ; 37 27 17 07 36 26 16 06 35 25 15 05 34 24 14 04
- punpckhdq xmm3, xmm5 ; 73 63 53 43 33 23 13 03 72 62 52 42 32 22 12 02
-
- punpckhdq xmm7, xmm6 ; 77 67 57 47 37 27 17 07 76 66 56 46 36 26 16 06
-
- punpckldq xmm4, xmm6 ; 75 65 55 45 35 25 15 05 74 64 54 44 34 24 14 04
-
- punpckldq xmm2, xmm5 ; 71 61 51 41 31 21 11 01 70 60 50 40 30 20 10 00
-
- movdqa [rsp+_t0], xmm2 ; save to free XMM2
-
- movq xmm2, [rsi] ; xx xx xx xx xx xx xx xx 87 86 85 84 83 82 81 80
- movq xmm6, [rdi] ; xx xx xx xx xx xx xx xx 97 96 95 94 93 92 91 90
- movq xmm0, [rsi+2*rax] ; xx xx xx xx xx xx xx xx a7 a6 a5 a4 a3 a2 a1 a0
- movq xmm5, [rdi+2*rax] ; xx xx xx xx xx xx xx xx b7 b6 b5 b4 b3 b2 b1 b0
- movq xmm1, [rsi+4*rax] ; xx xx xx xx xx xx xx xx c7 c6 c5 c4 c3 c2 c1 c0
-
- punpcklbw xmm2, xmm6 ; 97 87 96 86 95 85 94 84 93 83 92 82 91 81 90 80
-
- movq xmm6, [rdi+4*rax] ; xx xx xx xx xx xx xx xx d7 d6 d5 d4 d3 d2 d1 d0
-
- punpcklbw xmm0, xmm5 ; b7 a7 b6 a6 b5 a5 b4 a4 b3 a3 b2 a2 b1 a1 b0 a0
-
- movq xmm5, [rsi+2*rcx] ; xx xx xx xx xx xx xx xx e7 e6 e5 e4 e3 e2 e1 e0
-
- punpcklbw xmm1, xmm6 ; d7 c7 d6 c6 d5 c5 d4 c4 d3 c3 d2 c2 d1 e1 d0 c0
-
- movq xmm6, [rdi+2*rcx] ; xx xx xx xx xx xx xx xx f7 f6 f5 f4 f3 f2 f1 f0
-
- punpcklbw xmm5, xmm6 ; f7 e7 f6 e6 f5 e5 f4 e4 f3 e3 f2 e2 f1 e1 f0 e0
-
- movdqa xmm6, xmm1 ;
- punpckhwd xmm6, xmm5 ; f7 e7 d7 c7 f6 e6 d6 c6 f5 e5 d5 c5 f4 e4 d4 c4
-
- punpcklwd xmm1, xmm5 ; f3 e3 d3 c3 f2 e2 d2 c2 f1 e1 d1 c1 f0 e0 d0 c0
- movdqa xmm5, xmm2 ; 97 87 96 86 95 85 94 84 93 83 92 82 91 81 90 80
-
- punpcklwd xmm5, xmm0 ; b3 a3 93 83 b2 a2 92 82 b1 a1 91 81 b0 a0 90 80
-
- punpckhwd xmm2, xmm0 ; b7 a7 97 87 b6 a6 96 86 b5 a5 95 85 b4 a4 94 84
-
- movdqa xmm0, xmm5
- punpckldq xmm0, xmm1 ; f1 e1 d1 c1 b1 a1 91 81 f0 e0 d0 c0 b0 a0 90 80
-
- punpckhdq xmm5, xmm1 ; f3 e3 d3 c3 b3 a3 93 83 f2 e2 d2 c2 b2 a2 92 82
- movdqa xmm1, xmm2 ; b7 a7 97 87 b6 a6 96 86 b5 a5 95 85 b4 a4 94 84
-
- punpckldq xmm1, xmm6 ; f5 e5 d5 c5 b5 a5 95 85 f4 e4 d4 c4 b4 a4 94 84
-
- punpckhdq xmm2, xmm6 ; f7 e7 d7 c7 b7 a7 97 87 f6 e6 d6 c6 b6 a6 96 86
- movdqa xmm6, xmm7 ; 77 67 57 47 37 27 17 07 76 66 56 46 36 26 16 06
-
- punpcklqdq xmm6, xmm2 ; f6 e6 d6 c6 b6 a6 96 86 76 66 56 46 36 26 16 06
-
- punpckhqdq xmm7, xmm2 ; f7 e7 d7 c7 b7 a7 97 87 77 67 57 47 37 27 17 07
-
-%if %2 == 0
- movdqa [rsp+_q3], xmm7 ; save 7
- movdqa [rsp+_q2], xmm6 ; save 6
-%endif
- movdqa xmm2, xmm3 ; 73 63 53 43 33 23 13 03 72 62 52 42 32 22 12 02
- punpckhqdq xmm3, xmm5 ; f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03
- punpcklqdq xmm2, xmm5 ; f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02
- movdqa [rsp+_p1], xmm2 ; save 2
-
- movdqa xmm5, xmm4 ; 75 65 55 45 35 25 15 05 74 64 54 44 34 24 14 04
- punpcklqdq xmm4, xmm1 ; f4 e4 d4 c4 b4 a4 94 84 74 64 54 44 34 24 14 04
- movdqa [rsp+_p0], xmm3 ; save 3
-
- punpckhqdq xmm5, xmm1 ; f5 e5 d5 c5 b5 a5 95 85 75 65 55 45 35 25 15 05
-
- movdqa [rsp+_q0], xmm4 ; save 4
- movdqa [rsp+_q1], xmm5 ; save 5
- movdqa xmm1, [rsp+_t0]
-
- movdqa xmm2, xmm1 ;
- punpckhqdq xmm1, xmm0 ; f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01
- punpcklqdq xmm2, xmm0 ; f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00
-
-%if %2 == 0
- movdqa [rsp+_p2], xmm1
- movdqa [rsp+_p3], xmm2
-%endif
-
-%endmacro
-
-%macro LFV_FILTER_MASK_HEV_MASK 0
- movdqa xmm0, xmm6 ; q2
- psubusb xmm0, xmm7 ; q2-q3
-
- psubusb xmm7, xmm6 ; q3-q2
- movdqa xmm4, xmm5 ; q1
-
- por xmm7, xmm0 ; abs (q3-q2)
- psubusb xmm4, xmm6 ; q1-q2
-
- movdqa xmm0, xmm1
- psubusb xmm6, xmm5 ; q2-q1
-
- por xmm6, xmm4 ; abs (q2-q1)
- psubusb xmm0, xmm2 ; p2 - p3;
-
- psubusb xmm2, xmm1 ; p3 - p2;
- por xmm0, xmm2 ; abs(p2-p3)
-
- movdqa xmm5, [rsp+_p1] ; p1
- pmaxub xmm0, xmm7
-
- movdqa xmm2, xmm5 ; p1
- psubusb xmm5, xmm1 ; p1-p2
- psubusb xmm1, xmm2 ; p2-p1
-
- movdqa xmm7, xmm3 ; p0
- psubusb xmm7, xmm2 ; p0-p1
-
- por xmm1, xmm5 ; abs(p2-p1)
- pmaxub xmm0, xmm6
-
- pmaxub xmm0, xmm1
- movdqa xmm1, xmm2 ; p1
-
- psubusb xmm2, xmm3 ; p1-p0
-
- por xmm2, xmm7 ; abs(p1-p0)
-
- pmaxub xmm0, xmm2
-
- movdqa xmm5, [rsp+_q0] ; q0
- movdqa xmm7, [rsp+_q1] ; q1
-
- mov rdx, arg(3) ; limit
-
- movdqa xmm6, xmm5 ; q0
- movdqa xmm4, xmm7 ; q1
-
- psubusb xmm5, xmm7 ; q0-q1
- psubusb xmm7, xmm6 ; q1-q0
-
- por xmm7, xmm5 ; abs(q1-q0)
-
- pmaxub xmm0, xmm7
-
- psubusb xmm0, [rdx] ; limit
-
- mov rdx, arg(2) ; blimit
- movdqa xmm5, xmm4 ; q1
-
- psubusb xmm5, xmm1 ; q1-=p1
- psubusb xmm1, xmm4 ; p1-=q1
-
- por xmm5, xmm1 ; abs(p1-q1)
- movdqa xmm1, xmm3 ; p0
-
- pand xmm5, [GLOBAL(tfe)] ; set lsb of each byte to zero
- psubusb xmm1, xmm6 ; p0-q0
-
- movdqa xmm4, [rdx] ; blimit
- mov rdx, arg(4) ; get thresh
-
- psrlw xmm5, 1 ; abs(p1-q1)/2
- psubusb xmm6, xmm3 ; q0-p0
-
- por xmm1, xmm6 ; abs(q0-p0)
- paddusb xmm1, xmm1 ; abs(q0-p0)*2
- movdqa xmm3, [rdx]
-
- paddusb xmm1, xmm5 ; abs (p0 - q0) *2 + abs(p1-q1)/2
- psubusb xmm2, xmm3 ; abs(q1 - q0) > thresh
-
- psubusb xmm7, xmm3 ; abs(p1 - p0)> thresh
-
- psubusb xmm1, xmm4 ; abs (p0 - q0) *2 + abs(p1-q1)/2 > blimit
- por xmm2, xmm7 ; abs(q1 - q0) > thresh || abs(p1 - p0) > thresh
-
- por xmm1, xmm0 ; mask
- pcmpeqb xmm2, xmm0
-
- pxor xmm0, xmm0
- pcmpeqb xmm4, xmm4
-
- pcmpeqb xmm1, xmm0
- pxor xmm4, xmm2
-%endmacro
-
-%macro BV_TRANSPOSE 0
- ; xmm1 = f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02
- ; xmm6 = f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03
- ; xmm3 = f4 e4 d4 c4 b4 a4 94 84 74 64 54 44 34 24 14 04
- ; xmm7 = f5 e5 d5 c5 b5 a5 95 85 75 65 55 45 35 25 15 05
- movdqa xmm2, xmm1 ; f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02
- punpcklbw xmm2, xmm6 ; 73 72 63 62 53 52 43 42 33 32 23 22 13 12 03 02
-
- movdqa xmm4, xmm3 ; f4 e4 d4 c4 b4 a4 94 84 74 64 54 44 34 24 14 04
- punpckhbw xmm1, xmm6 ; f3 f2 e3 e2 d3 d2 c3 c2 b3 b2 a3 a2 93 92 83 82
-
- punpcklbw xmm4, xmm7 ; 75 74 65 64 55 54 45 44 35 34 25 24 15 14 05 04
-
- punpckhbw xmm3, xmm7 ; f5 f4 e5 e4 d5 d4 c5 c4 b5 b4 a5 a4 95 94 85 84
-
- movdqa xmm6, xmm2 ; 73 72 63 62 53 52 43 42 33 32 23 22 13 12 03 02
- punpcklwd xmm2, xmm4 ; 35 34 33 32 25 24 23 22 15 14 13 12 05 04 03 02
-
- punpckhwd xmm6, xmm4 ; 75 74 73 72 65 64 63 62 55 54 53 52 45 44 43 42
- movdqa xmm5, xmm1 ; f3 f2 e3 e2 d3 d2 c3 c2 b3 b2 a3 a2 93 92 83 82
-
- punpcklwd xmm1, xmm3 ; b5 b4 b3 b2 a5 a4 a3 a2 95 94 93 92 85 84 83 82
-
- punpckhwd xmm5, xmm3 ; f5 f4 f3 f2 e5 e4 e3 e2 d5 d4 d3 d2 c5 c4 c3 c2
- ; xmm2 = 35 34 33 32 25 24 23 22 15 14 13 12 05 04 03 02
- ; xmm6 = 75 74 73 72 65 64 63 62 55 54 53 52 45 44 43 42
- ; xmm1 = b5 b4 b3 b2 a5 a4 a3 a2 95 94 93 92 85 84 83 82
- ; xmm5 = f5 f4 f3 f2 e5 e4 e3 e2 d5 d4 d3 d2 c5 c4 c3 c2
-%endmacro
-
-%macro BV_WRITEBACK 2
- movd [rsi+2], %1
- movd [rsi+4*rax+2], %2
- psrldq %1, 4
- psrldq %2, 4
- movd [rdi+2], %1
- movd [rdi+4*rax+2], %2
- psrldq %1, 4
- psrldq %2, 4
- movd [rsi+2*rax+2], %1
- movd [rsi+2*rcx+2], %2
- psrldq %1, 4
- psrldq %2, 4
- movd [rdi+2*rax+2], %1
- movd [rdi+2*rcx+2], %2
-%endmacro
-
-%if ABI_IS_32BIT
-
-;void vp8_loop_filter_vertical_edge_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-;)
-global sym(vp8_loop_filter_vertical_edge_sse2) PRIVATE
-sym(vp8_loop_filter_vertical_edge_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, lf_var_size
-
- mov rsi, arg(0) ; src_ptr
- movsxd rax, dword ptr arg(1) ; src_pixel_step
-
- lea rsi, [rsi - 4]
- lea rdi, [rsi + rax] ; rdi points to row +1 for indirect addressing
- lea rcx, [rax*2+rax]
-
- ;transpose 16x8 to 8x16, and store the 8-line result on stack.
- TRANSPOSE_16X8 1, 1
-
- ; calculate filter mask and high edge variance
- LFV_FILTER_MASK_HEV_MASK
-
- ; start work on filters
- B_FILTER 2
-
- ; transpose and write back - only work on q1, q0, p0, p1
- BV_TRANSPOSE
- ; store 16-line result
-
- lea rdx, [rax]
- neg rdx
-
- BV_WRITEBACK xmm1, xmm5
-
- lea rsi, [rsi+rdx*8]
- lea rdi, [rdi+rdx*8]
- BV_WRITEBACK xmm2, xmm6
-
- add rsp, lf_var_size
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-%endif
-
-;void vp8_loop_filter_vertical_edge_uv_sse2
-;(
-; unsigned char *u,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-; unsigned char *v
-;)
-global sym(vp8_loop_filter_vertical_edge_uv_sse2) PRIVATE
-sym(vp8_loop_filter_vertical_edge_uv_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, lf_var_size
-
- mov rsi, arg(0) ; u_ptr
- movsxd rax, dword ptr arg(1) ; src_pixel_step
-
- lea rsi, [rsi - 4]
- lea rdi, [rsi + rax] ; rdi points to row +1 for indirect addressing
- lea rcx, [rax+2*rax]
-
- ;transpose 16x8 to 8x16, and store the 8-line result on stack.
- TRANSPOSE_16X8 0, 1
-
- ; calculate filter mask and high edge variance
- LFV_FILTER_MASK_HEV_MASK
-
- ; start work on filters
- B_FILTER 2
-
- ; transpose and write back - only work on q1, q0, p0, p1
- BV_TRANSPOSE
-
- lea rdi, [rsi + rax] ; rdi points to row +1 for indirect addressing
-
- ; store 16-line result
- BV_WRITEBACK xmm1, xmm5
-
- mov rsi, arg(0) ; u_ptr
- lea rsi, [rsi - 4]
- lea rdi, [rsi + rax] ; rdi points to row +1 for indirect addressing
- BV_WRITEBACK xmm2, xmm6
-
- add rsp, lf_var_size
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-%macro MBV_TRANSPOSE 0
- movdqa xmm0, [rsp+_p3] ; f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00
- movdqa xmm1, xmm0 ; f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00
-
- punpcklbw xmm0, xmm2 ; 71 70 61 60 51 50 41 40 31 30 21 20 11 10 01 00
- punpckhbw xmm1, xmm2 ; f1 f0 e1 e0 d1 d0 c1 c0 b1 b0 a1 a0 91 90 81 80
-
- movdqa xmm7, [rsp+_p1] ; f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02
- movdqa xmm6, xmm7 ; f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02
-
- punpcklbw xmm7, [rsp+_p0] ; 73 72 63 62 53 52 43 42 33 32 23 22 13 12 03 02
- punpckhbw xmm6, [rsp+_p0] ; f3 f2 e3 e2 d3 d2 c3 c2 b3 b2 a3 a2 93 92 83 82
-
- movdqa xmm3, xmm0 ; 71 70 61 60 51 50 41 40 31 30 21 20 11 10 01 00
- punpcklwd xmm0, xmm7 ; 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00
-
- punpckhwd xmm3, xmm7 ; 73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40
- movdqa xmm4, xmm1 ; f1 f0 e1 e0 d1 d0 c1 c0 b1 b0 a1 a0 91 90 81 80
-
- punpcklwd xmm1, xmm6 ; b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80
- punpckhwd xmm4, xmm6 ; f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0
-
- movdqa xmm7, [rsp+_q0] ; f4 e4 d4 c4 b4 a4 94 84 74 64 54 44 34 24 14 04
- punpcklbw xmm7, [rsp+_q1] ; 75 74 65 64 55 54 45 44 35 34 25 24 15 14 05 04
-
- movdqa xmm6, xmm5 ; f6 e6 d6 c6 b6 a6 96 86 76 66 56 46 36 26 16 06
- punpcklbw xmm6, [rsp+_q3] ; 77 76 67 66 57 56 47 46 37 36 27 26 17 16 07 06
-
- movdqa xmm2, xmm7 ; 75 74 65 64 55 54 45 44 35 34 25 24 15 14 05 04
- punpcklwd xmm7, xmm6 ; 37 36 35 34 27 26 25 24 17 16 15 14 07 06 05 04
-
- punpckhwd xmm2, xmm6 ; 77 76 75 74 67 66 65 64 57 56 55 54 47 46 45 44
- movdqa xmm6, xmm0 ; 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00
-
- punpckldq xmm0, xmm7 ; 17 16 15 14 13 12 11 10 07 06 05 04 03 02 01 00
- punpckhdq xmm6, xmm7 ; 37 36 35 34 33 32 31 30 27 26 25 24 23 22 21 20
-%endmacro
-
-%macro MBV_WRITEBACK_1 0
- movq [rsi], xmm0
- movhps [rdi], xmm0
-
- movq [rsi+2*rax], xmm6
- movhps [rdi+2*rax], xmm6
-
- movdqa xmm0, xmm3 ; 73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40
- punpckldq xmm0, xmm2 ; 57 56 55 54 53 52 51 50 47 46 45 44 43 42 41 40
- punpckhdq xmm3, xmm2 ; 77 76 75 74 73 72 71 70 67 66 65 64 63 62 61 60
-
- movq [rsi+4*rax], xmm0
- movhps [rdi+4*rax], xmm0
-
- movq [rsi+2*rcx], xmm3
- movhps [rdi+2*rcx], xmm3
-
- movdqa xmm7, [rsp+_q0] ; f4 e4 d4 c4 b4 a4 94 84 74 64 54 44 34 24 14 04
- punpckhbw xmm7, [rsp+_q1] ; f5 f4 e5 e4 d5 d4 c5 c4 b5 b4 a5 a4 95 94 85 84
- punpckhbw xmm5, [rsp+_q3] ; f7 f6 e7 e6 d7 d6 c7 c6 b7 b6 a7 a6 97 96 87 86
-
- movdqa xmm0, xmm7
- punpcklwd xmm0, xmm5 ; b7 b6 b4 b4 a7 a6 a5 a4 97 96 95 94 87 86 85 84
- punpckhwd xmm7, xmm5 ; f7 f6 f5 f4 e7 e6 e5 e4 d7 d6 d5 d4 c7 c6 c5 c4
-
- movdqa xmm5, xmm1 ; b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80
- punpckldq xmm1, xmm0 ; 97 96 95 94 93 92 91 90 87 86 85 83 84 82 81 80
- punpckhdq xmm5, xmm0 ; b7 b6 b5 b4 b3 b2 b1 b0 a7 a6 a5 a4 a3 a2 a1 a0
-%endmacro
-
-%macro MBV_WRITEBACK_2 0
- movq [rsi], xmm1
- movhps [rdi], xmm1
-
- movq [rsi+2*rax], xmm5
- movhps [rdi+2*rax], xmm5
-
- movdqa xmm1, xmm4 ; f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0
- punpckldq xmm1, xmm7 ; d7 d6 d5 d4 d3 d2 d1 d0 c7 c6 c5 c4 c3 c2 c1 c0
- punpckhdq xmm4, xmm7 ; f7 f6 f4 f4 f3 f2 f1 f0 e7 e6 e5 e4 e3 e2 e1 e0
-
- movq [rsi+4*rax], xmm1
- movhps [rdi+4*rax], xmm1
-
- movq [rsi+2*rcx], xmm4
- movhps [rdi+2*rcx], xmm4
-%endmacro
-
-
-;void vp8_mbloop_filter_vertical_edge_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-;)
-global sym(vp8_mbloop_filter_vertical_edge_sse2) PRIVATE
-sym(vp8_mbloop_filter_vertical_edge_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, lf_var_size
-
- mov rsi, arg(0) ; src_ptr
- movsxd rax, dword ptr arg(1) ; src_pixel_step
-
- lea rsi, [rsi - 4]
- lea rdi, [rsi + rax] ; rdi points to row +1 for indirect addressing
- lea rcx, [rax*2+rax]
-
- ; Transpose
- TRANSPOSE_16X8 1, 0
-
- ; calculate filter mask and high edge variance
- LFV_FILTER_MASK_HEV_MASK
-
- neg rax
- ; start work on filters
- MB_FILTER_AND_WRITEBACK 2
-
- lea rsi, [rsi+rax*8]
- lea rdi, [rdi+rax*8]
-
- ; transpose and write back
- MBV_TRANSPOSE
-
- neg rax
-
- MBV_WRITEBACK_1
-
-
- lea rsi, [rsi+rax*8]
- lea rdi, [rdi+rax*8]
- MBV_WRITEBACK_2
-
- add rsp, lf_var_size
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_mbloop_filter_vertical_edge_uv_sse2
-;(
-; unsigned char *u,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-; unsigned char *v
-;)
-global sym(vp8_mbloop_filter_vertical_edge_uv_sse2) PRIVATE
-sym(vp8_mbloop_filter_vertical_edge_uv_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, lf_var_size
-
- mov rsi, arg(0) ; u_ptr
- movsxd rax, dword ptr arg(1) ; src_pixel_step
-
- lea rsi, [rsi - 4]
- lea rdi, [rsi + rax] ; rdi points to row +1 for indirect addressing
- lea rcx, [rax+2*rax]
-
- ; Transpose
- TRANSPOSE_16X8 0, 0
-
- ; calculate filter mask and high edge variance
- LFV_FILTER_MASK_HEV_MASK
-
- ; start work on filters
- MB_FILTER_AND_WRITEBACK 2
-
- ; transpose and write back
- MBV_TRANSPOSE
-
- mov rsi, arg(0) ;u_ptr
- lea rsi, [rsi - 4]
- lea rdi, [rsi + rax]
- MBV_WRITEBACK_1
- mov rsi, arg(5) ;v_ptr
- lea rsi, [rsi - 4]
- lea rdi, [rsi + rax]
- MBV_WRITEBACK_2
-
- add rsp, lf_var_size
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_loop_filter_simple_horizontal_edge_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-;)
-global sym(vp8_loop_filter_simple_horizontal_edge_sse2) PRIVATE
-sym(vp8_loop_filter_simple_horizontal_edge_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 3
- SAVE_XMM 7
- GET_GOT rbx
- ; end prolog
-
- mov rcx, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step ; destination pitch?
- movdqa xmm6, [GLOBAL(tfe)]
- lea rdx, [rcx + rax]
- neg rax
-
- ; calculate mask
- movdqa xmm0, [rdx] ; q1
- mov rdx, arg(2) ;blimit
- movdqa xmm1, [rcx+2*rax] ; p1
-
- movdqa xmm2, xmm1
- movdqa xmm3, xmm0
-
- psubusb xmm0, xmm1 ; q1-=p1
- psubusb xmm1, xmm3 ; p1-=q1
- por xmm1, xmm0 ; abs(p1-q1)
- pand xmm1, xmm6 ; set lsb of each byte to zero
- psrlw xmm1, 1 ; abs(p1-q1)/2
-
- movdqa xmm7, XMMWORD PTR [rdx]
-
- movdqa xmm5, [rcx+rax] ; p0
- movdqa xmm4, [rcx] ; q0
- movdqa xmm0, xmm4 ; q0
- movdqa xmm6, xmm5 ; p0
- psubusb xmm5, xmm4 ; p0-=q0
- psubusb xmm4, xmm6 ; q0-=p0
- por xmm5, xmm4 ; abs(p0 - q0)
-
- movdqa xmm4, [GLOBAL(t80)]
-
- paddusb xmm5, xmm5 ; abs(p0-q0)*2
- paddusb xmm5, xmm1 ; abs (p0 - q0) *2 + abs(p1-q1)/2
- psubusb xmm5, xmm7 ; abs(p0 - q0) *2 + abs(p1-q1)/2 > blimit
- pxor xmm7, xmm7
- pcmpeqb xmm5, xmm7
-
-
- ; start work on filters
- pxor xmm2, xmm4 ; p1 offset to convert to signed values
- pxor xmm3, xmm4 ; q1 offset to convert to signed values
- psubsb xmm2, xmm3 ; p1 - q1
-
- pxor xmm6, xmm4 ; offset to convert to signed values
- pxor xmm0, xmm4 ; offset to convert to signed values
- movdqa xmm3, xmm0 ; q0
- psubsb xmm0, xmm6 ; q0 - p0
- paddsb xmm2, xmm0 ; p1 - q1 + 1 * (q0 - p0)
- paddsb xmm2, xmm0 ; p1 - q1 + 2 * (q0 - p0)
- paddsb xmm2, xmm0 ; p1 - q1 + 3 * (q0 - p0)
- pand xmm5, xmm2 ; mask filter values we don't care about
-
- movdqa xmm0, xmm5
- paddsb xmm5, [GLOBAL(t3)] ; 3* (q0 - p0) + (p1 - q1) + 4
- paddsb xmm0, [GLOBAL(t4)] ; +3 instead of +4
-
- movdqa xmm1, [GLOBAL(te0)]
- movdqa xmm2, [GLOBAL(t1f)]
-
-; pxor xmm7, xmm7
- pcmpgtb xmm7, xmm0 ;save sign
- pand xmm7, xmm1 ;preserve the upper 3 bits
- psrlw xmm0, 3
- pand xmm0, xmm2 ;clear out upper 3 bits
- por xmm0, xmm7 ;add sign
- psubsb xmm3, xmm0 ; q0-= q0sz add
-
- pxor xmm7, xmm7
- pcmpgtb xmm7, xmm5 ;save sign
- pand xmm7, xmm1 ;preserve the upper 3 bits
- psrlw xmm5, 3
- pand xmm5, xmm2 ;clear out upper 3 bits
- por xmm5, xmm7 ;add sign
- paddsb xmm6, xmm5 ; p0+= p0 add
-
- pxor xmm3, xmm4 ; unoffset
- movdqa [rcx], xmm3 ; write back
-
- pxor xmm6, xmm4 ; unoffset
- movdqa [rcx+rax], xmm6 ; write back
-
- ; begin epilog
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_loop_filter_simple_vertical_edge_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-;)
-global sym(vp8_loop_filter_simple_vertical_edge_sse2) PRIVATE
-sym(vp8_loop_filter_simple_vertical_edge_sse2):
- push rbp ; save old base pointer value.
- mov rbp, rsp ; set new base pointer value.
- SHADOW_ARGS_TO_STACK 3
- SAVE_XMM 7
- GET_GOT rbx ; save callee-saved reg
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 32 ; reserve 32 bytes
- %define t0 [rsp + 0] ;__declspec(align(16)) char t0[16];
- %define t1 [rsp + 16] ;__declspec(align(16)) char t1[16];
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step ; destination pitch?
-
- lea rsi, [rsi - 2 ]
- lea rdi, [rsi + rax]
- lea rdx, [rsi + rax*4]
- lea rcx, [rdx + rax]
-
- movd xmm0, [rsi] ; (high 96 bits unused) 03 02 01 00
- movd xmm1, [rdx] ; (high 96 bits unused) 43 42 41 40
- movd xmm2, [rdi] ; 13 12 11 10
- movd xmm3, [rcx] ; 53 52 51 50
- punpckldq xmm0, xmm1 ; (high 64 bits unused) 43 42 41 40 03 02 01 00
- punpckldq xmm2, xmm3 ; 53 52 51 50 13 12 11 10
-
- movd xmm4, [rsi + rax*2] ; 23 22 21 20
- movd xmm5, [rdx + rax*2] ; 63 62 61 60
- movd xmm6, [rdi + rax*2] ; 33 32 31 30
- movd xmm7, [rcx + rax*2] ; 73 72 71 70
- punpckldq xmm4, xmm5 ; 63 62 61 60 23 22 21 20
- punpckldq xmm6, xmm7 ; 73 72 71 70 33 32 31 30
-
- punpcklbw xmm0, xmm2 ; 53 43 52 42 51 41 50 40 13 03 12 02 11 01 10 00
- punpcklbw xmm4, xmm6 ; 73 63 72 62 71 61 70 60 33 23 32 22 31 21 30 20
-
- movdqa xmm1, xmm0
- punpcklwd xmm0, xmm4 ; 33 23 13 03 32 22 12 02 31 21 11 01 30 20 10 00
- punpckhwd xmm1, xmm4 ; 73 63 53 43 72 62 52 42 71 61 51 41 70 60 50 40
-
- movdqa xmm2, xmm0
- punpckldq xmm0, xmm1 ; 71 61 51 41 31 21 11 01 70 60 50 40 30 20 10 00
- punpckhdq xmm2, xmm1 ; 73 63 53 43 33 23 13 03 72 62 52 42 32 22 12 02
-
- lea rsi, [rsi + rax*8]
- lea rdi, [rsi + rax]
- lea rdx, [rsi + rax*4]
- lea rcx, [rdx + rax]
-
- movd xmm4, [rsi] ; 83 82 81 80
- movd xmm1, [rdx] ; c3 c2 c1 c0
- movd xmm6, [rdi] ; 93 92 91 90
- movd xmm3, [rcx] ; d3 d2 d1 d0
- punpckldq xmm4, xmm1 ; c3 c2 c1 c0 83 82 81 80
- punpckldq xmm6, xmm3 ; d3 d2 d1 d0 93 92 91 90
-
- movd xmm1, [rsi + rax*2] ; a3 a2 a1 a0
- movd xmm5, [rdx + rax*2] ; e3 e2 e1 e0
- movd xmm3, [rdi + rax*2] ; b3 b2 b1 b0
- movd xmm7, [rcx + rax*2] ; f3 f2 f1 f0
- punpckldq xmm1, xmm5 ; e3 e2 e1 e0 a3 a2 a1 a0
- punpckldq xmm3, xmm7 ; f3 f2 f1 f0 b3 b2 b1 b0
-
- punpcklbw xmm4, xmm6 ; d3 c3 d2 c2 d1 c1 d0 c0 93 83 92 82 91 81 90 80
- punpcklbw xmm1, xmm3 ; f3 e3 f2 e2 f1 e1 f0 e0 b3 a3 b2 a2 b1 a1 b0 a0
-
- movdqa xmm7, xmm4
- punpcklwd xmm4, xmm1 ; b3 a3 93 83 b2 a2 92 82 b1 a1 91 81 b0 a0 90 80
- punpckhwd xmm7, xmm1 ; f3 e3 d3 c3 f2 e2 d2 c2 f1 e1 d1 c1 f0 e0 d0 c0
-
- movdqa xmm6, xmm4
- punpckldq xmm4, xmm7 ; f1 e1 d1 c1 b1 a1 91 81 f0 e0 d0 c0 b0 a0 90 80
- punpckhdq xmm6, xmm7 ; f3 e3 d3 c3 b3 a3 93 83 f2 e2 d2 c2 b2 a2 92 82
-
- movdqa xmm1, xmm0
- movdqa xmm3, xmm2
-
- punpcklqdq xmm0, xmm4 ; p1 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00
- punpckhqdq xmm1, xmm4 ; p0 f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01
- punpcklqdq xmm2, xmm6 ; q0 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02
- punpckhqdq xmm3, xmm6 ; q1 f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03
-
- mov rdx, arg(2) ;blimit
-
- ; calculate mask
- movdqa xmm6, xmm0 ; p1
- movdqa xmm7, xmm3 ; q1
- psubusb xmm7, xmm0 ; q1-=p1
- psubusb xmm6, xmm3 ; p1-=q1
- por xmm6, xmm7 ; abs(p1-q1)
- pand xmm6, [GLOBAL(tfe)] ; set lsb of each byte to zero
- psrlw xmm6, 1 ; abs(p1-q1)/2
-
- movdqa xmm7, [rdx]
-
- movdqa xmm5, xmm1 ; p0
- movdqa xmm4, xmm2 ; q0
- psubusb xmm5, xmm2 ; p0-=q0
- psubusb xmm4, xmm1 ; q0-=p0
- por xmm5, xmm4 ; abs(p0 - q0)
- paddusb xmm5, xmm5 ; abs(p0-q0)*2
- paddusb xmm5, xmm6 ; abs (p0 - q0) *2 + abs(p1-q1)/2
-
- movdqa xmm4, [GLOBAL(t80)]
-
- psubusb xmm5, xmm7 ; abs(p0 - q0) *2 + abs(p1-q1)/2 > blimit
- pxor xmm7, xmm7
- pcmpeqb xmm5, xmm7 ; mm5 = mask
-
- ; start work on filters
- movdqa t0, xmm0
- movdqa t1, xmm3
-
- pxor xmm0, xmm4 ; p1 offset to convert to signed values
- pxor xmm3, xmm4 ; q1 offset to convert to signed values
- psubsb xmm0, xmm3 ; p1 - q1
-
- pxor xmm1, xmm4 ; offset to convert to signed values
- pxor xmm2, xmm4 ; offset to convert to signed values
-
- movdqa xmm3, xmm2 ; offseted ; q0
- psubsb xmm2, xmm1 ; q0 - p0
- paddsb xmm0, xmm2 ; p1 - q1 + 1 * (q0 - p0)
- paddsb xmm0, xmm2 ; p1 - q1 + 2 * (q0 - p0)
- paddsb xmm0, xmm2 ; p1 - q1 + 3 * (q0 - p0)
- pand xmm5, xmm0 ; mask filter values we don't care about
-
- movdqa xmm0, xmm5
- paddsb xmm5, [GLOBAL(t3)] ; 3* (q0 - p0) + (p1 - q1) + 4
- paddsb xmm0, [GLOBAL(t4)] ; +3 instead of +4
-
- movdqa xmm6, [GLOBAL(te0)]
- movdqa xmm2, [GLOBAL(t1f)]
-
-; pxor xmm7, xmm7
- pcmpgtb xmm7, xmm0 ;save sign
- pand xmm7, xmm6 ;preserve the upper 3 bits
- psrlw xmm0, 3
- pand xmm0, xmm2 ;clear out upper 3 bits
- por xmm0, xmm7 ;add sign
- psubsb xmm3, xmm0 ; q0-= q0sz add
-
- pxor xmm7, xmm7
- pcmpgtb xmm7, xmm5 ;save sign
- pand xmm7, xmm6 ;preserve the upper 3 bits
- psrlw xmm5, 3
- pand xmm5, xmm2 ;clear out upper 3 bits
- por xmm5, xmm7 ;add sign
- paddsb xmm1, xmm5 ; p0+= p0 add
-
- pxor xmm3, xmm4 ; unoffset q0
- pxor xmm1, xmm4 ; unoffset p0
-
- movdqa xmm0, t0 ; p1
- movdqa xmm4, t1 ; q1
-
- ; write out order: xmm0 xmm2 xmm1 xmm3
- lea rdx, [rsi + rax*4]
-
- ; transpose back to write out
- ; p1 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00
- ; p0 f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01
- ; q0 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02
- ; q1 f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03
- movdqa xmm6, xmm0
- punpcklbw xmm0, xmm1 ; 71 70 61 60 51 50 41 40 31 30 21 20 11 10 01 00
- punpckhbw xmm6, xmm1 ; f1 f0 e1 e0 d1 d0 c1 c0 b1 b0 a1 a0 91 90 81 80
-
- movdqa xmm5, xmm3
- punpcklbw xmm3, xmm4 ; 73 72 63 62 53 52 43 42 33 32 23 22 13 12 03 02
- punpckhbw xmm5, xmm4 ; f3 f2 e3 e2 d3 d2 c3 c2 b3 b2 a3 a2 93 92 83 82
-
- movdqa xmm2, xmm0
- punpcklwd xmm0, xmm3 ; 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00
- punpckhwd xmm2, xmm3 ; 73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40
-
- movdqa xmm3, xmm6
- punpcklwd xmm6, xmm5 ; b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80
- punpckhwd xmm3, xmm5 ; f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0
-
- movd [rsi], xmm6 ; write the second 8-line result
- movd [rdx], xmm3
- psrldq xmm6, 4
- psrldq xmm3, 4
- movd [rdi], xmm6
- movd [rcx], xmm3
- psrldq xmm6, 4
- psrldq xmm3, 4
- movd [rsi + rax*2], xmm6
- movd [rdx + rax*2], xmm3
- psrldq xmm6, 4
- psrldq xmm3, 4
- movd [rdi + rax*2], xmm6
- movd [rcx + rax*2], xmm3
-
- neg rax
- lea rsi, [rsi + rax*8]
- neg rax
- lea rdi, [rsi + rax]
- lea rdx, [rsi + rax*4]
- lea rcx, [rdx + rax]
-
- movd [rsi], xmm0 ; write the first 8-line result
- movd [rdx], xmm2
- psrldq xmm0, 4
- psrldq xmm2, 4
- movd [rdi], xmm0
- movd [rcx], xmm2
- psrldq xmm0, 4
- psrldq xmm2, 4
- movd [rsi + rax*2], xmm0
- movd [rdx + rax*2], xmm2
- psrldq xmm0, 4
- psrldq xmm2, 4
- movd [rdi + rax*2], xmm0
- movd [rcx + rax*2], xmm2
-
- add rsp, 32
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-SECTION_RODATA
-align 16
-tfe:
- times 16 db 0xfe
-align 16
-t80:
- times 16 db 0x80
-align 16
-t1s:
- times 16 db 0x01
-align 16
-t3:
- times 16 db 0x03
-align 16
-t4:
- times 16 db 0x04
-align 16
-ones:
- times 8 dw 0x0001
-align 16
-s9:
- times 8 dw 0x0900
-align 16
-s63:
- times 8 dw 0x003f
-align 16
-te0:
- times 16 db 0xe0
-align 16
-t1f:
- times 16 db 0x1f
diff --git a/thirdparty/libvpx/vp8/common/x86/loopfilter_x86.c b/thirdparty/libvpx/vp8/common/x86/loopfilter_x86.c
deleted file mode 100644
index 6586004600..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/loopfilter_x86.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "vp8/common/loopfilter.h"
-
-#define prototype_loopfilter(sym) \
- void sym(unsigned char *src, int pitch, const unsigned char *blimit,\
- const unsigned char *limit, const unsigned char *thresh, int count)
-
-#define prototype_loopfilter_nc(sym) \
- void sym(unsigned char *src, int pitch, const unsigned char *blimit,\
- const unsigned char *limit, const unsigned char *thresh)
-
-#define prototype_simple_loopfilter(sym) \
- void sym(unsigned char *y, int ystride, const unsigned char *blimit)
-
-prototype_loopfilter(vp8_mbloop_filter_vertical_edge_mmx);
-prototype_loopfilter(vp8_mbloop_filter_horizontal_edge_mmx);
-prototype_loopfilter(vp8_loop_filter_vertical_edge_mmx);
-prototype_loopfilter(vp8_loop_filter_horizontal_edge_mmx);
-prototype_simple_loopfilter(vp8_loop_filter_simple_horizontal_edge_mmx);
-prototype_simple_loopfilter(vp8_loop_filter_simple_vertical_edge_mmx);
-
-#if HAVE_SSE2 && ARCH_X86_64
-prototype_loopfilter(vp8_loop_filter_bv_y_sse2);
-prototype_loopfilter(vp8_loop_filter_bh_y_sse2);
-#else
-prototype_loopfilter_nc(vp8_loop_filter_vertical_edge_sse2);
-prototype_loopfilter_nc(vp8_loop_filter_horizontal_edge_sse2);
-#endif
-prototype_loopfilter_nc(vp8_mbloop_filter_vertical_edge_sse2);
-prototype_loopfilter_nc(vp8_mbloop_filter_horizontal_edge_sse2);
-
-extern loop_filter_uvfunction vp8_loop_filter_horizontal_edge_uv_sse2;
-extern loop_filter_uvfunction vp8_loop_filter_vertical_edge_uv_sse2;
-extern loop_filter_uvfunction vp8_mbloop_filter_horizontal_edge_uv_sse2;
-extern loop_filter_uvfunction vp8_mbloop_filter_vertical_edge_uv_sse2;
-
-#if HAVE_MMX
-/* Horizontal MB filtering */
-void vp8_loop_filter_mbh_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_mbloop_filter_horizontal_edge_mmx(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_mbloop_filter_horizontal_edge_mmx(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_mbloop_filter_horizontal_edge_mmx(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-}
-
-
-/* Vertical MB Filtering */
-void vp8_loop_filter_mbv_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_mbloop_filter_vertical_edge_mmx(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_mbloop_filter_vertical_edge_mmx(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_mbloop_filter_vertical_edge_mmx(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
-}
-
-
-/* Horizontal B Filtering */
-void vp8_loop_filter_bh_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_loop_filter_horizontal_edge_mmx(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_horizontal_edge_mmx(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_horizontal_edge_mmx(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_loop_filter_horizontal_edge_mmx(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_loop_filter_horizontal_edge_mmx(v_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-}
-
-
-void vp8_loop_filter_bhs_mmx(unsigned char *y_ptr, int y_stride, const unsigned char *blimit)
-{
- vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 4 * y_stride, y_stride, blimit);
- vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 8 * y_stride, y_stride, blimit);
- vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 12 * y_stride, y_stride, blimit);
-}
-
-
-/* Vertical B Filtering */
-void vp8_loop_filter_bv_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_loop_filter_vertical_edge_mmx(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_vertical_edge_mmx(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
- vp8_loop_filter_vertical_edge_mmx(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
-
- if (u_ptr)
- vp8_loop_filter_vertical_edge_mmx(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-
- if (v_ptr)
- vp8_loop_filter_vertical_edge_mmx(v_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
-}
-
-
-void vp8_loop_filter_bvs_mmx(unsigned char *y_ptr, int y_stride, const unsigned char *blimit)
-{
- vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 4, y_stride, blimit);
- vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 8, y_stride, blimit);
- vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 12, y_stride, blimit);
-}
-#endif
-
-
-/* Horizontal MB filtering */
-#if HAVE_SSE2
-void vp8_loop_filter_mbh_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_mbloop_filter_horizontal_edge_sse2(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr);
-
- if (u_ptr)
- vp8_mbloop_filter_horizontal_edge_uv_sse2(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, v_ptr);
-}
-
-
-/* Vertical MB Filtering */
-void vp8_loop_filter_mbv_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
- vp8_mbloop_filter_vertical_edge_sse2(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr);
-
- if (u_ptr)
- vp8_mbloop_filter_vertical_edge_uv_sse2(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, v_ptr);
-}
-
-
-/* Horizontal B Filtering */
-void vp8_loop_filter_bh_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
-#if ARCH_X86_64
- vp8_loop_filter_bh_y_sse2(y_ptr, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
-#else
- vp8_loop_filter_horizontal_edge_sse2(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr);
- vp8_loop_filter_horizontal_edge_sse2(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr);
- vp8_loop_filter_horizontal_edge_sse2(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr);
-#endif
-
- if (u_ptr)
- vp8_loop_filter_horizontal_edge_uv_sse2(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, v_ptr + 4 * uv_stride);
-}
-
-
-void vp8_loop_filter_bhs_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit)
-{
- vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 4 * y_stride, y_stride, blimit);
- vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 8 * y_stride, y_stride, blimit);
- vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 12 * y_stride, y_stride, blimit);
-}
-
-
-/* Vertical B Filtering */
-void vp8_loop_filter_bv_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
- int y_stride, int uv_stride, loop_filter_info *lfi)
-{
-#if ARCH_X86_64
- vp8_loop_filter_bv_y_sse2(y_ptr, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
-#else
- vp8_loop_filter_vertical_edge_sse2(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr);
- vp8_loop_filter_vertical_edge_sse2(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr);
- vp8_loop_filter_vertical_edge_sse2(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr);
-#endif
-
- if (u_ptr)
- vp8_loop_filter_vertical_edge_uv_sse2(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, v_ptr + 4);
-}
-
-
-void vp8_loop_filter_bvs_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit)
-{
- vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 4, y_stride, blimit);
- vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 8, y_stride, blimit);
- vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 12, y_stride, blimit);
-}
-
-#endif
diff --git a/thirdparty/libvpx/vp8/common/x86/recon_mmx.asm b/thirdparty/libvpx/vp8/common/x86/recon_mmx.asm
deleted file mode 100644
index 15e98713c7..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/recon_mmx.asm
+++ /dev/null
@@ -1,274 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-
-;void copy_mem8x8_mmx(
-; unsigned char *src,
-; int src_stride,
-; unsigned char *dst,
-; int dst_stride
-; )
-global sym(vp8_copy_mem8x8_mmx) PRIVATE
-sym(vp8_copy_mem8x8_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 4
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;src;
- movq mm0, [rsi]
-
- movsxd rax, dword ptr arg(1) ;src_stride;
- mov rdi, arg(2) ;dst;
-
- movq mm1, [rsi+rax]
- movq mm2, [rsi+rax*2]
-
- movsxd rcx, dword ptr arg(3) ;dst_stride
- lea rsi, [rsi+rax*2]
-
- movq [rdi], mm0
- add rsi, rax
-
- movq [rdi+rcx], mm1
- movq [rdi+rcx*2], mm2
-
-
- lea rdi, [rdi+rcx*2]
- movq mm3, [rsi]
-
- add rdi, rcx
- movq mm4, [rsi+rax]
-
- movq mm5, [rsi+rax*2]
- movq [rdi], mm3
-
- lea rsi, [rsi+rax*2]
- movq [rdi+rcx], mm4
-
- movq [rdi+rcx*2], mm5
- lea rdi, [rdi+rcx*2]
-
- movq mm0, [rsi+rax]
- movq mm1, [rsi+rax*2]
-
- movq [rdi+rcx], mm0
- movq [rdi+rcx*2],mm1
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void copy_mem8x4_mmx(
-; unsigned char *src,
-; int src_stride,
-; unsigned char *dst,
-; int dst_stride
-; )
-global sym(vp8_copy_mem8x4_mmx) PRIVATE
-sym(vp8_copy_mem8x4_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 4
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;src;
- movq mm0, [rsi]
-
- movsxd rax, dword ptr arg(1) ;src_stride;
- mov rdi, arg(2) ;dst;
-
- movq mm1, [rsi+rax]
- movq mm2, [rsi+rax*2]
-
- movsxd rcx, dword ptr arg(3) ;dst_stride
- lea rsi, [rsi+rax*2]
-
- movq [rdi], mm0
- movq [rdi+rcx], mm1
-
- movq [rdi+rcx*2], mm2
- lea rdi, [rdi+rcx*2]
-
- movq mm3, [rsi+rax]
- movq [rdi+rcx], mm3
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void copy_mem16x16_mmx(
-; unsigned char *src,
-; int src_stride,
-; unsigned char *dst,
-; int dst_stride
-; )
-global sym(vp8_copy_mem16x16_mmx) PRIVATE
-sym(vp8_copy_mem16x16_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 4
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;src;
- movsxd rax, dword ptr arg(1) ;src_stride;
-
- mov rdi, arg(2) ;dst;
- movsxd rcx, dword ptr arg(3) ;dst_stride
-
- movq mm0, [rsi]
- movq mm3, [rsi+8];
-
- movq mm1, [rsi+rax]
- movq mm4, [rsi+rax+8]
-
- movq mm2, [rsi+rax*2]
- movq mm5, [rsi+rax*2+8]
-
- lea rsi, [rsi+rax*2]
- add rsi, rax
-
- movq [rdi], mm0
- movq [rdi+8], mm3
-
- movq [rdi+rcx], mm1
- movq [rdi+rcx+8], mm4
-
- movq [rdi+rcx*2], mm2
- movq [rdi+rcx*2+8], mm5
-
- lea rdi, [rdi+rcx*2]
- add rdi, rcx
-
- movq mm0, [rsi]
- movq mm3, [rsi+8];
-
- movq mm1, [rsi+rax]
- movq mm4, [rsi+rax+8]
-
- movq mm2, [rsi+rax*2]
- movq mm5, [rsi+rax*2+8]
-
- lea rsi, [rsi+rax*2]
- add rsi, rax
-
- movq [rdi], mm0
- movq [rdi+8], mm3
-
- movq [rdi+rcx], mm1
- movq [rdi+rcx+8], mm4
-
- movq [rdi+rcx*2], mm2
- movq [rdi+rcx*2+8], mm5
-
- lea rdi, [rdi+rcx*2]
- add rdi, rcx
-
- movq mm0, [rsi]
- movq mm3, [rsi+8];
-
- movq mm1, [rsi+rax]
- movq mm4, [rsi+rax+8]
-
- movq mm2, [rsi+rax*2]
- movq mm5, [rsi+rax*2+8]
-
- lea rsi, [rsi+rax*2]
- add rsi, rax
-
- movq [rdi], mm0
- movq [rdi+8], mm3
-
- movq [rdi+rcx], mm1
- movq [rdi+rcx+8], mm4
-
- movq [rdi+rcx*2], mm2
- movq [rdi+rcx*2+8], mm5
-
- lea rdi, [rdi+rcx*2]
- add rdi, rcx
-
- movq mm0, [rsi]
- movq mm3, [rsi+8];
-
- movq mm1, [rsi+rax]
- movq mm4, [rsi+rax+8]
-
- movq mm2, [rsi+rax*2]
- movq mm5, [rsi+rax*2+8]
-
- lea rsi, [rsi+rax*2]
- add rsi, rax
-
- movq [rdi], mm0
- movq [rdi+8], mm3
-
- movq [rdi+rcx], mm1
- movq [rdi+rcx+8], mm4
-
- movq [rdi+rcx*2], mm2
- movq [rdi+rcx*2+8], mm5
-
- lea rdi, [rdi+rcx*2]
- add rdi, rcx
-
- movq mm0, [rsi]
- movq mm3, [rsi+8];
-
- movq mm1, [rsi+rax]
- movq mm4, [rsi+rax+8]
-
- movq mm2, [rsi+rax*2]
- movq mm5, [rsi+rax*2+8]
-
- lea rsi, [rsi+rax*2]
- add rsi, rax
-
- movq [rdi], mm0
- movq [rdi+8], mm3
-
- movq [rdi+rcx], mm1
- movq [rdi+rcx+8], mm4
-
- movq [rdi+rcx*2], mm2
- movq [rdi+rcx*2+8], mm5
-
- lea rdi, [rdi+rcx*2]
- add rdi, rcx
-
- movq mm0, [rsi]
- movq mm3, [rsi+8];
-
- movq [rdi], mm0
- movq [rdi+8], mm3
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
diff --git a/thirdparty/libvpx/vp8/common/x86/recon_sse2.asm b/thirdparty/libvpx/vp8/common/x86/recon_sse2.asm
deleted file mode 100644
index cb89537f76..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/recon_sse2.asm
+++ /dev/null
@@ -1,116 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-;void copy_mem16x16_sse2(
-; unsigned char *src,
-; int src_stride,
-; unsigned char *dst,
-; int dst_stride
-; )
-global sym(vp8_copy_mem16x16_sse2) PRIVATE
-sym(vp8_copy_mem16x16_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 4
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;src;
- movdqu xmm0, [rsi]
-
- movsxd rax, dword ptr arg(1) ;src_stride;
- mov rdi, arg(2) ;dst;
-
- movdqu xmm1, [rsi+rax]
- movdqu xmm2, [rsi+rax*2]
-
- movsxd rcx, dword ptr arg(3) ;dst_stride
- lea rsi, [rsi+rax*2]
-
- movdqa [rdi], xmm0
- add rsi, rax
-
- movdqa [rdi+rcx], xmm1
- movdqa [rdi+rcx*2],xmm2
-
- lea rdi, [rdi+rcx*2]
- movdqu xmm3, [rsi]
-
- add rdi, rcx
- movdqu xmm4, [rsi+rax]
-
- movdqu xmm5, [rsi+rax*2]
- lea rsi, [rsi+rax*2]
-
- movdqa [rdi], xmm3
- add rsi, rax
-
- movdqa [rdi+rcx], xmm4
- movdqa [rdi+rcx*2],xmm5
-
- lea rdi, [rdi+rcx*2]
- movdqu xmm0, [rsi]
-
- add rdi, rcx
- movdqu xmm1, [rsi+rax]
-
- movdqu xmm2, [rsi+rax*2]
- lea rsi, [rsi+rax*2]
-
- movdqa [rdi], xmm0
- add rsi, rax
-
- movdqa [rdi+rcx], xmm1
-
- movdqa [rdi+rcx*2], xmm2
- movdqu xmm3, [rsi]
-
- movdqu xmm4, [rsi+rax]
- lea rdi, [rdi+rcx*2]
-
- add rdi, rcx
- movdqu xmm5, [rsi+rax*2]
-
- lea rsi, [rsi+rax*2]
- movdqa [rdi], xmm3
-
- add rsi, rax
- movdqa [rdi+rcx], xmm4
-
- movdqa [rdi+rcx*2],xmm5
- movdqu xmm0, [rsi]
-
- lea rdi, [rdi+rcx*2]
- movdqu xmm1, [rsi+rax]
-
- add rdi, rcx
- movdqu xmm2, [rsi+rax*2]
-
- lea rsi, [rsi+rax*2]
- movdqa [rdi], xmm0
-
- movdqa [rdi+rcx], xmm1
- movdqa [rdi+rcx*2],xmm2
-
- movdqu xmm3, [rsi+rax]
- lea rdi, [rdi+rcx*2]
-
- movdqa [rdi+rcx], xmm3
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
diff --git a/thirdparty/libvpx/vp8/common/x86/subpixel_mmx.asm b/thirdparty/libvpx/vp8/common/x86/subpixel_mmx.asm
deleted file mode 100644
index 47dd452297..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/subpixel_mmx.asm
+++ /dev/null
@@ -1,702 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-extern sym(vp8_bilinear_filters_x86_8)
-
-
-%define BLOCK_HEIGHT_WIDTH 4
-%define vp8_filter_weight 128
-%define VP8_FILTER_SHIFT 7
-
-
-;void vp8_filter_block1d_h6_mmx
-;(
-; unsigned char *src_ptr,
-; unsigned short *output_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned int pixel_step,
-; unsigned int output_height,
-; unsigned int output_width,
-; short * vp8_filter
-;)
-global sym(vp8_filter_block1d_h6_mmx) PRIVATE
-sym(vp8_filter_block1d_h6_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rdx, arg(6) ;vp8_filter
-
- movq mm1, [rdx + 16] ; do both the negative taps first!!!
- movq mm2, [rdx + 32] ;
- movq mm6, [rdx + 48] ;
- movq mm7, [rdx + 64] ;
-
- mov rdi, arg(1) ;output_ptr
- mov rsi, arg(0) ;src_ptr
- movsxd rcx, dword ptr arg(4) ;output_height
- movsxd rax, dword ptr arg(5) ;output_width ; destination pitch?
- pxor mm0, mm0 ; mm0 = 00000000
-
-.nextrow:
- movq mm3, [rsi-2] ; mm3 = p-2..p5
- movq mm4, mm3 ; mm4 = p-2..p5
- psrlq mm3, 8 ; mm3 = p-1..p5
- punpcklbw mm3, mm0 ; mm3 = p-1..p2
- pmullw mm3, mm1 ; mm3 *= kernel 1 modifiers.
-
- movq mm5, mm4 ; mm5 = p-2..p5
- punpckhbw mm4, mm0 ; mm5 = p2..p5
- pmullw mm4, mm7 ; mm5 *= kernel 4 modifiers
- paddsw mm3, mm4 ; mm3 += mm5
-
- movq mm4, mm5 ; mm4 = p-2..p5;
- psrlq mm5, 16 ; mm5 = p0..p5;
- punpcklbw mm5, mm0 ; mm5 = p0..p3
- pmullw mm5, mm2 ; mm5 *= kernel 2 modifiers
- paddsw mm3, mm5 ; mm3 += mm5
-
- movq mm5, mm4 ; mm5 = p-2..p5
- psrlq mm4, 24 ; mm4 = p1..p5
- punpcklbw mm4, mm0 ; mm4 = p1..p4
- pmullw mm4, mm6 ; mm5 *= kernel 3 modifiers
- paddsw mm3, mm4 ; mm3 += mm5
-
- ; do outer positive taps
- movd mm4, [rsi+3]
- punpcklbw mm4, mm0 ; mm5 = p3..p6
- pmullw mm4, [rdx+80] ; mm5 *= kernel 0 modifiers
- paddsw mm3, mm4 ; mm3 += mm5
-
- punpcklbw mm5, mm0 ; mm5 = p-2..p1
- pmullw mm5, [rdx] ; mm5 *= kernel 5 modifiers
- paddsw mm3, mm5 ; mm3 += mm5
-
- paddsw mm3, [GLOBAL(rd)] ; mm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; mm3 /= 128
- packuswb mm3, mm0 ; pack and unpack to saturate
- punpcklbw mm3, mm0 ;
-
- movq [rdi], mm3 ; store the results in the destination
-
-%if ABI_IS_32BIT
- add rsi, dword ptr arg(2) ;src_pixels_per_line ; next line
- add rdi, rax;
-%else
- movsxd r8, dword ptr arg(2) ;src_pixels_per_line
- add rdi, rax;
-
- add rsi, r8 ; next line
-%endif
-
- dec rcx ; decrement count
- jnz .nextrow ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_filter_block1dc_v6_mmx
-;(
-; short *src_ptr,
-; unsigned char *output_ptr,
-; int output_pitch,
-; unsigned int pixels_per_line,
-; unsigned int pixel_step,
-; unsigned int output_height,
-; unsigned int output_width,
-; short * vp8_filter
-;)
-global sym(vp8_filter_block1dc_v6_mmx) PRIVATE
-sym(vp8_filter_block1dc_v6_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 8
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- movq mm5, [GLOBAL(rd)]
- push rbx
- mov rbx, arg(7) ;vp8_filter
- movq mm1, [rbx + 16] ; do both the negative taps first!!!
- movq mm2, [rbx + 32] ;
- movq mm6, [rbx + 48] ;
- movq mm7, [rbx + 64] ;
-
- movsxd rdx, dword ptr arg(3) ;pixels_per_line
- mov rdi, arg(1) ;output_ptr
- mov rsi, arg(0) ;src_ptr
- sub rsi, rdx
- sub rsi, rdx
- movsxd rcx, DWORD PTR arg(5) ;output_height
- movsxd rax, DWORD PTR arg(2) ;output_pitch ; destination pitch?
- pxor mm0, mm0 ; mm0 = 00000000
-
-
-.nextrow_cv:
- movq mm3, [rsi+rdx] ; mm3 = p0..p8 = row -1
- pmullw mm3, mm1 ; mm3 *= kernel 1 modifiers.
-
-
- movq mm4, [rsi + 4*rdx] ; mm4 = p0..p3 = row 2
- pmullw mm4, mm7 ; mm4 *= kernel 4 modifiers.
- paddsw mm3, mm4 ; mm3 += mm4
-
- movq mm4, [rsi + 2*rdx] ; mm4 = p0..p3 = row 0
- pmullw mm4, mm2 ; mm4 *= kernel 2 modifiers.
- paddsw mm3, mm4 ; mm3 += mm4
-
- movq mm4, [rsi] ; mm4 = p0..p3 = row -2
- pmullw mm4, [rbx] ; mm4 *= kernel 0 modifiers.
- paddsw mm3, mm4 ; mm3 += mm4
-
-
- add rsi, rdx ; move source forward 1 line to avoid 3 * pitch
- movq mm4, [rsi + 2*rdx] ; mm4 = p0..p3 = row 1
- pmullw mm4, mm6 ; mm4 *= kernel 3 modifiers.
- paddsw mm3, mm4 ; mm3 += mm4
-
- movq mm4, [rsi + 4*rdx] ; mm4 = p0..p3 = row 3
- pmullw mm4, [rbx +80] ; mm4 *= kernel 3 modifiers.
- paddsw mm3, mm4 ; mm3 += mm4
-
-
- paddsw mm3, mm5 ; mm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; mm3 /= 128
- packuswb mm3, mm0 ; pack and saturate
-
- movd [rdi],mm3 ; store the results in the destination
- ; the subsequent iterations repeat 3 out of 4 of these reads. Since the
- ; recon block should be in cache this shouldn't cost much. Its obviously
- ; avoidable!!!.
- lea rdi, [rdi+rax] ;
- dec rcx ; decrement count
- jnz .nextrow_cv ; next row
-
- pop rbx
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void bilinear_predict8x8_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixels_per_line,
-; int xoffset,
-; int yoffset,
-; unsigned char *dst_ptr,
-; int dst_pitch
-;)
-global sym(vp8_bilinear_predict8x8_mmx) PRIVATE
-sym(vp8_bilinear_predict8x8_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ;const short *HFilter = vp8_bilinear_filters_x86_8[xoffset];
- ;const short *VFilter = vp8_bilinear_filters_x86_8[yoffset];
-
- movsxd rax, dword ptr arg(2) ;xoffset
- mov rdi, arg(4) ;dst_ptr ;
-
- shl rax, 5 ; offset * 32
- lea rcx, [GLOBAL(sym(vp8_bilinear_filters_x86_8))]
-
- add rax, rcx ; HFilter
- mov rsi, arg(0) ;src_ptr ;
-
- movsxd rdx, dword ptr arg(5) ;dst_pitch
- movq mm1, [rax] ;
-
- movq mm2, [rax+16] ;
- movsxd rax, dword ptr arg(3) ;yoffset
-
- pxor mm0, mm0 ;
-
- shl rax, 5 ; offset*32
- add rax, rcx ; VFilter
-
- lea rcx, [rdi+rdx*8] ;
- movsxd rdx, dword ptr arg(1) ;src_pixels_per_line ;
-
-
-
- ; get the first horizontal line done ;
- movq mm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- movq mm4, mm3 ; make a copy of current line
-
- punpcklbw mm3, mm0 ; xx 00 01 02 03 04 05 06
- punpckhbw mm4, mm0 ;
-
- pmullw mm3, mm1 ;
- pmullw mm4, mm1 ;
-
- movq mm5, [rsi+1] ;
- movq mm6, mm5 ;
-
- punpcklbw mm5, mm0 ;
- punpckhbw mm6, mm0 ;
-
- pmullw mm5, mm2 ;
- pmullw mm6, mm2 ;
-
- paddw mm3, mm5 ;
- paddw mm4, mm6 ;
-
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw mm4, [GLOBAL(rd)] ;
- psraw mm4, VP8_FILTER_SHIFT ;
-
- movq mm7, mm3 ;
- packuswb mm7, mm4 ;
-
- add rsi, rdx ; next line
-.next_row_8x8:
- movq mm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- movq mm4, mm3 ; make a copy of current line
-
- punpcklbw mm3, mm0 ; xx 00 01 02 03 04 05 06
- punpckhbw mm4, mm0 ;
-
- pmullw mm3, mm1 ;
- pmullw mm4, mm1 ;
-
- movq mm5, [rsi+1] ;
- movq mm6, mm5 ;
-
- punpcklbw mm5, mm0 ;
- punpckhbw mm6, mm0 ;
-
- pmullw mm5, mm2 ;
- pmullw mm6, mm2 ;
-
- paddw mm3, mm5 ;
- paddw mm4, mm6 ;
-
- movq mm5, mm7 ;
- movq mm6, mm7 ;
-
- punpcklbw mm5, mm0 ;
- punpckhbw mm6, mm0
-
- pmullw mm5, [rax] ;
- pmullw mm6, [rax] ;
-
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw mm4, [GLOBAL(rd)] ;
- psraw mm4, VP8_FILTER_SHIFT ;
-
- movq mm7, mm3 ;
- packuswb mm7, mm4 ;
-
-
- pmullw mm3, [rax+16] ;
- pmullw mm4, [rax+16] ;
-
- paddw mm3, mm5 ;
- paddw mm4, mm6 ;
-
-
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw mm4, [GLOBAL(rd)] ;
- psraw mm4, VP8_FILTER_SHIFT ;
-
- packuswb mm3, mm4
-
- movq [rdi], mm3 ; store the results in the destination
-
-%if ABI_IS_32BIT
- add rsi, rdx ; next line
- add rdi, dword ptr arg(5) ;dst_pitch ;
-%else
- movsxd r8, dword ptr arg(5) ;dst_pitch
- add rsi, rdx ; next line
- add rdi, r8 ;dst_pitch
-%endif
- cmp rdi, rcx ;
- jne .next_row_8x8
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void bilinear_predict8x4_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixels_per_line,
-; int xoffset,
-; int yoffset,
-; unsigned char *dst_ptr,
-; int dst_pitch
-;)
-global sym(vp8_bilinear_predict8x4_mmx) PRIVATE
-sym(vp8_bilinear_predict8x4_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ;const short *HFilter = vp8_bilinear_filters_x86_8[xoffset];
- ;const short *VFilter = vp8_bilinear_filters_x86_8[yoffset];
-
- movsxd rax, dword ptr arg(2) ;xoffset
- mov rdi, arg(4) ;dst_ptr ;
-
- lea rcx, [GLOBAL(sym(vp8_bilinear_filters_x86_8))]
- shl rax, 5
-
- mov rsi, arg(0) ;src_ptr ;
- add rax, rcx
-
- movsxd rdx, dword ptr arg(5) ;dst_pitch
- movq mm1, [rax] ;
-
- movq mm2, [rax+16] ;
- movsxd rax, dword ptr arg(3) ;yoffset
-
- pxor mm0, mm0 ;
- shl rax, 5
-
- add rax, rcx
- lea rcx, [rdi+rdx*4] ;
-
- movsxd rdx, dword ptr arg(1) ;src_pixels_per_line ;
-
- ; get the first horizontal line done ;
- movq mm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- movq mm4, mm3 ; make a copy of current line
-
- punpcklbw mm3, mm0 ; xx 00 01 02 03 04 05 06
- punpckhbw mm4, mm0 ;
-
- pmullw mm3, mm1 ;
- pmullw mm4, mm1 ;
-
- movq mm5, [rsi+1] ;
- movq mm6, mm5 ;
-
- punpcklbw mm5, mm0 ;
- punpckhbw mm6, mm0 ;
-
- pmullw mm5, mm2 ;
- pmullw mm6, mm2 ;
-
- paddw mm3, mm5 ;
- paddw mm4, mm6 ;
-
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw mm4, [GLOBAL(rd)] ;
- psraw mm4, VP8_FILTER_SHIFT ;
-
- movq mm7, mm3 ;
- packuswb mm7, mm4 ;
-
- add rsi, rdx ; next line
-.next_row_8x4:
- movq mm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- movq mm4, mm3 ; make a copy of current line
-
- punpcklbw mm3, mm0 ; xx 00 01 02 03 04 05 06
- punpckhbw mm4, mm0 ;
-
- pmullw mm3, mm1 ;
- pmullw mm4, mm1 ;
-
- movq mm5, [rsi+1] ;
- movq mm6, mm5 ;
-
- punpcklbw mm5, mm0 ;
- punpckhbw mm6, mm0 ;
-
- pmullw mm5, mm2 ;
- pmullw mm6, mm2 ;
-
- paddw mm3, mm5 ;
- paddw mm4, mm6 ;
-
- movq mm5, mm7 ;
- movq mm6, mm7 ;
-
- punpcklbw mm5, mm0 ;
- punpckhbw mm6, mm0
-
- pmullw mm5, [rax] ;
- pmullw mm6, [rax] ;
-
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw mm4, [GLOBAL(rd)] ;
- psraw mm4, VP8_FILTER_SHIFT ;
-
- movq mm7, mm3 ;
- packuswb mm7, mm4 ;
-
-
- pmullw mm3, [rax+16] ;
- pmullw mm4, [rax+16] ;
-
- paddw mm3, mm5 ;
- paddw mm4, mm6 ;
-
-
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw mm4, [GLOBAL(rd)] ;
- psraw mm4, VP8_FILTER_SHIFT ;
-
- packuswb mm3, mm4
-
- movq [rdi], mm3 ; store the results in the destination
-
-%if ABI_IS_32BIT
- add rsi, rdx ; next line
- add rdi, dword ptr arg(5) ;dst_pitch ;
-%else
- movsxd r8, dword ptr arg(5) ;dst_pitch
- add rsi, rdx ; next line
- add rdi, r8
-%endif
- cmp rdi, rcx ;
- jne .next_row_8x4
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void bilinear_predict4x4_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixels_per_line,
-; int xoffset,
-; int yoffset,
-; unsigned char *dst_ptr,
-; int dst_pitch
-;)
-global sym(vp8_bilinear_predict4x4_mmx) PRIVATE
-sym(vp8_bilinear_predict4x4_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ;const short *HFilter = vp8_bilinear_filters_x86_8[xoffset];
- ;const short *VFilter = vp8_bilinear_filters_x86_8[yoffset];
-
- movsxd rax, dword ptr arg(2) ;xoffset
- mov rdi, arg(4) ;dst_ptr ;
-
- lea rcx, [GLOBAL(sym(vp8_bilinear_filters_x86_8))]
- shl rax, 5
-
- add rax, rcx ; HFilter
- mov rsi, arg(0) ;src_ptr ;
-
- movsxd rdx, dword ptr arg(5) ;ldst_pitch
- movq mm1, [rax] ;
-
- movq mm2, [rax+16] ;
- movsxd rax, dword ptr arg(3) ;yoffset
-
- pxor mm0, mm0 ;
- shl rax, 5
-
- add rax, rcx
- lea rcx, [rdi+rdx*4] ;
-
- movsxd rdx, dword ptr arg(1) ;src_pixels_per_line ;
-
- ; get the first horizontal line done ;
- movd mm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- punpcklbw mm3, mm0 ; xx 00 01 02 03 04 05 06
-
- pmullw mm3, mm1 ;
- movd mm5, [rsi+1] ;
-
- punpcklbw mm5, mm0 ;
- pmullw mm5, mm2 ;
-
- paddw mm3, mm5 ;
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
-
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- movq mm7, mm3 ;
- packuswb mm7, mm0 ;
-
- add rsi, rdx ; next line
-.next_row_4x4:
- movd mm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- punpcklbw mm3, mm0 ; xx 00 01 02 03 04 05 06
-
- pmullw mm3, mm1 ;
- movd mm5, [rsi+1] ;
-
- punpcklbw mm5, mm0 ;
- pmullw mm5, mm2 ;
-
- paddw mm3, mm5 ;
-
- movq mm5, mm7 ;
- punpcklbw mm5, mm0 ;
-
- pmullw mm5, [rax] ;
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
-
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
- movq mm7, mm3 ;
-
- packuswb mm7, mm0 ;
-
- pmullw mm3, [rax+16] ;
- paddw mm3, mm5 ;
-
-
- paddw mm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw mm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- packuswb mm3, mm0
- movd [rdi], mm3 ; store the results in the destination
-
-%if ABI_IS_32BIT
- add rsi, rdx ; next line
- add rdi, dword ptr arg(5) ;dst_pitch ;
-%else
- movsxd r8, dword ptr arg(5) ;dst_pitch ;
- add rsi, rdx ; next line
- add rdi, r8
-%endif
-
- cmp rdi, rcx ;
- jne .next_row_4x4
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-
-SECTION_RODATA
-align 16
-rd:
- times 4 dw 0x40
-
-align 16
-global HIDDEN_DATA(sym(vp8_six_tap_mmx))
-sym(vp8_six_tap_mmx):
- times 8 dw 0
- times 8 dw 0
- times 8 dw 128
- times 8 dw 0
- times 8 dw 0
- times 8 dw 0
-
- times 8 dw 0
- times 8 dw -6
- times 8 dw 123
- times 8 dw 12
- times 8 dw -1
- times 8 dw 0
-
- times 8 dw 2
- times 8 dw -11
- times 8 dw 108
- times 8 dw 36
- times 8 dw -8
- times 8 dw 1
-
- times 8 dw 0
- times 8 dw -9
- times 8 dw 93
- times 8 dw 50
- times 8 dw -6
- times 8 dw 0
-
- times 8 dw 3
- times 8 dw -16
- times 8 dw 77
- times 8 dw 77
- times 8 dw -16
- times 8 dw 3
-
- times 8 dw 0
- times 8 dw -6
- times 8 dw 50
- times 8 dw 93
- times 8 dw -9
- times 8 dw 0
-
- times 8 dw 1
- times 8 dw -8
- times 8 dw 36
- times 8 dw 108
- times 8 dw -11
- times 8 dw 2
-
- times 8 dw 0
- times 8 dw -1
- times 8 dw 12
- times 8 dw 123
- times 8 dw -6
- times 8 dw 0
-
-
diff --git a/thirdparty/libvpx/vp8/common/x86/subpixel_sse2.asm b/thirdparty/libvpx/vp8/common/x86/subpixel_sse2.asm
deleted file mode 100644
index 69f8d103c1..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/subpixel_sse2.asm
+++ /dev/null
@@ -1,1372 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-extern sym(vp8_bilinear_filters_x86_8)
-
-%define BLOCK_HEIGHT_WIDTH 4
-%define VP8_FILTER_WEIGHT 128
-%define VP8_FILTER_SHIFT 7
-
-
-;/************************************************************************************
-; Notes: filter_block1d_h6 applies a 6 tap filter horizontally to the input pixels. The
-; input pixel array has output_height rows. This routine assumes that output_height is an
-; even number. This function handles 8 pixels in horizontal direction, calculating ONE
-; rows each iteration to take advantage of the 128 bits operations.
-;*************************************************************************************/
-;void vp8_filter_block1d8_h6_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned short *output_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned int pixel_step,
-; unsigned int output_height,
-; unsigned int output_width,
-; short *vp8_filter
-;)
-global sym(vp8_filter_block1d8_h6_sse2) PRIVATE
-sym(vp8_filter_block1d8_h6_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 7
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rdx, arg(6) ;vp8_filter
- mov rsi, arg(0) ;src_ptr
-
- mov rdi, arg(1) ;output_ptr
-
- movsxd rcx, dword ptr arg(4) ;output_height
- movsxd rax, dword ptr arg(2) ;src_pixels_per_line ; Pitch for Source
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(5) ;output_width
-%endif
- pxor xmm0, xmm0 ; clear xmm0 for unpack
-
-.filter_block1d8_h6_rowloop:
- movq xmm3, MMWORD PTR [rsi - 2]
- movq xmm1, MMWORD PTR [rsi + 6]
-
- prefetcht2 [rsi+rax-2]
-
- pslldq xmm1, 8
- por xmm1, xmm3
-
- movdqa xmm4, xmm1
- movdqa xmm5, xmm1
-
- movdqa xmm6, xmm1
- movdqa xmm7, xmm1
-
- punpcklbw xmm3, xmm0 ; xx05 xx04 xx03 xx02 xx01 xx01 xx-1 xx-2
- psrldq xmm4, 1 ; xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 -1
-
- pmullw xmm3, XMMWORD PTR [rdx] ; x[-2] * H[-2]; Tap 1
- punpcklbw xmm4, xmm0 ; xx06 xx05 xx04 xx03 xx02 xx01 xx00 xx-1
-
- psrldq xmm5, 2 ; xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
- pmullw xmm4, XMMWORD PTR [rdx+16] ; x[-1] * H[-1]; Tap 2
-
-
- punpcklbw xmm5, xmm0 ; xx07 xx06 xx05 xx04 xx03 xx02 xx01 xx00
- psrldq xmm6, 3 ; xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01
-
- pmullw xmm5, [rdx+32] ; x[ 0] * H[ 0]; Tap 3
-
- punpcklbw xmm6, xmm0 ; xx08 xx07 xx06 xx05 xx04 xx03 xx02 xx01
- psrldq xmm7, 4 ; xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02
-
- pmullw xmm6, [rdx+48] ; x[ 1] * h[ 1] ; Tap 4
-
- punpcklbw xmm7, xmm0 ; xx09 xx08 xx07 xx06 xx05 xx04 xx03 xx02
- psrldq xmm1, 5 ; xx xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03
-
-
- pmullw xmm7, [rdx+64] ; x[ 2] * h[ 2] ; Tap 5
-
- punpcklbw xmm1, xmm0 ; xx0a xx09 xx08 xx07 xx06 xx05 xx04 xx03
- pmullw xmm1, [rdx+80] ; x[ 3] * h[ 3] ; Tap 6
-
-
- paddsw xmm4, xmm7
- paddsw xmm4, xmm5
-
- paddsw xmm4, xmm3
- paddsw xmm4, xmm6
-
- paddsw xmm4, xmm1
- paddsw xmm4, [GLOBAL(rd)]
-
- psraw xmm4, 7
-
- packuswb xmm4, xmm0
- punpcklbw xmm4, xmm0
-
- movdqa XMMWORD Ptr [rdi], xmm4
- lea rsi, [rsi + rax]
-
-%if ABI_IS_32BIT
- add rdi, DWORD Ptr arg(5) ;[output_width]
-%else
- add rdi, r8
-%endif
- dec rcx
-
- jnz .filter_block1d8_h6_rowloop ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_filter_block1d16_h6_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned short *output_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned int pixel_step,
-; unsigned int output_height,
-; unsigned int output_width,
-; short *vp8_filter
-;)
-;/************************************************************************************
-; Notes: filter_block1d_h6 applies a 6 tap filter horizontally to the input pixels. The
-; input pixel array has output_height rows. This routine assumes that output_height is an
-; even number. This function handles 8 pixels in horizontal direction, calculating ONE
-; rows each iteration to take advantage of the 128 bits operations.
-;*************************************************************************************/
-global sym(vp8_filter_block1d16_h6_sse2) PRIVATE
-sym(vp8_filter_block1d16_h6_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 7
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rdx, arg(6) ;vp8_filter
- mov rsi, arg(0) ;src_ptr
-
- mov rdi, arg(1) ;output_ptr
-
- movsxd rcx, dword ptr arg(4) ;output_height
- movsxd rax, dword ptr arg(2) ;src_pixels_per_line ; Pitch for Source
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(5) ;output_width
-%endif
-
- pxor xmm0, xmm0 ; clear xmm0 for unpack
-
-.filter_block1d16_h6_sse2_rowloop:
- movq xmm3, MMWORD PTR [rsi - 2]
- movq xmm1, MMWORD PTR [rsi + 6]
-
- movq xmm2, MMWORD PTR [rsi +14]
- pslldq xmm2, 8
-
- por xmm2, xmm1
- prefetcht2 [rsi+rax-2]
-
- pslldq xmm1, 8
- por xmm1, xmm3
-
- movdqa xmm4, xmm1
- movdqa xmm5, xmm1
-
- movdqa xmm6, xmm1
- movdqa xmm7, xmm1
-
- punpcklbw xmm3, xmm0 ; xx05 xx04 xx03 xx02 xx01 xx01 xx-1 xx-2
- psrldq xmm4, 1 ; xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 -1
-
- pmullw xmm3, XMMWORD PTR [rdx] ; x[-2] * H[-2]; Tap 1
- punpcklbw xmm4, xmm0 ; xx06 xx05 xx04 xx03 xx02 xx01 xx00 xx-1
-
- psrldq xmm5, 2 ; xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
- pmullw xmm4, XMMWORD PTR [rdx+16] ; x[-1] * H[-1]; Tap 2
-
-
- punpcklbw xmm5, xmm0 ; xx07 xx06 xx05 xx04 xx03 xx02 xx01 xx00
- psrldq xmm6, 3 ; xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01
-
- pmullw xmm5, [rdx+32] ; x[ 0] * H[ 0]; Tap 3
-
- punpcklbw xmm6, xmm0 ; xx08 xx07 xx06 xx05 xx04 xx03 xx02 xx01
- psrldq xmm7, 4 ; xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02
-
- pmullw xmm6, [rdx+48] ; x[ 1] * h[ 1] ; Tap 4
-
- punpcklbw xmm7, xmm0 ; xx09 xx08 xx07 xx06 xx05 xx04 xx03 xx02
- psrldq xmm1, 5 ; xx xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03
-
-
- pmullw xmm7, [rdx+64] ; x[ 2] * h[ 2] ; Tap 5
-
- punpcklbw xmm1, xmm0 ; xx0a xx09 xx08 xx07 xx06 xx05 xx04 xx03
- pmullw xmm1, [rdx+80] ; x[ 3] * h[ 3] ; Tap 6
-
- paddsw xmm4, xmm7
- paddsw xmm4, xmm5
-
- paddsw xmm4, xmm3
- paddsw xmm4, xmm6
-
- paddsw xmm4, xmm1
- paddsw xmm4, [GLOBAL(rd)]
-
- psraw xmm4, 7
-
- packuswb xmm4, xmm0
- punpcklbw xmm4, xmm0
-
- movdqa XMMWORD Ptr [rdi], xmm4
-
- movdqa xmm3, xmm2
- movdqa xmm4, xmm2
-
- movdqa xmm5, xmm2
- movdqa xmm6, xmm2
-
- movdqa xmm7, xmm2
-
- punpcklbw xmm3, xmm0 ; xx05 xx04 xx03 xx02 xx01 xx01 xx-1 xx-2
- psrldq xmm4, 1 ; xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 -1
-
- pmullw xmm3, XMMWORD PTR [rdx] ; x[-2] * H[-2]; Tap 1
- punpcklbw xmm4, xmm0 ; xx06 xx05 xx04 xx03 xx02 xx01 xx00 xx-1
-
- psrldq xmm5, 2 ; xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
- pmullw xmm4, XMMWORD PTR [rdx+16] ; x[-1] * H[-1]; Tap 2
-
-
- punpcklbw xmm5, xmm0 ; xx07 xx06 xx05 xx04 xx03 xx02 xx01 xx00
- psrldq xmm6, 3 ; xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01
-
- pmullw xmm5, [rdx+32] ; x[ 0] * H[ 0]; Tap 3
-
- punpcklbw xmm6, xmm0 ; xx08 xx07 xx06 xx05 xx04 xx03 xx02 xx01
- psrldq xmm7, 4 ; xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02
-
- pmullw xmm6, [rdx+48] ; x[ 1] * h[ 1] ; Tap 4
-
- punpcklbw xmm7, xmm0 ; xx09 xx08 xx07 xx06 xx05 xx04 xx03 xx02
- psrldq xmm2, 5 ; xx xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03
-
- pmullw xmm7, [rdx+64] ; x[ 2] * h[ 2] ; Tap 5
-
- punpcklbw xmm2, xmm0 ; xx0a xx09 xx08 xx07 xx06 xx05 xx04 xx03
- pmullw xmm2, [rdx+80] ; x[ 3] * h[ 3] ; Tap 6
-
-
- paddsw xmm4, xmm7
- paddsw xmm4, xmm5
-
- paddsw xmm4, xmm3
- paddsw xmm4, xmm6
-
- paddsw xmm4, xmm2
- paddsw xmm4, [GLOBAL(rd)]
-
- psraw xmm4, 7
-
- packuswb xmm4, xmm0
- punpcklbw xmm4, xmm0
-
- movdqa XMMWORD Ptr [rdi+16], xmm4
-
- lea rsi, [rsi + rax]
-%if ABI_IS_32BIT
- add rdi, DWORD Ptr arg(5) ;[output_width]
-%else
- add rdi, r8
-%endif
-
- dec rcx
- jnz .filter_block1d16_h6_sse2_rowloop ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_filter_block1d8_v6_sse2
-;(
-; short *src_ptr,
-; unsigned char *output_ptr,
-; int dst_ptich,
-; unsigned int pixels_per_line,
-; unsigned int pixel_step,
-; unsigned int output_height,
-; unsigned int output_width,
-; short * vp8_filter
-;)
-;/************************************************************************************
-; Notes: filter_block1d8_v6 applies a 6 tap filter vertically to the input pixels. The
-; input pixel array has output_height rows.
-;*************************************************************************************/
-global sym(vp8_filter_block1d8_v6_sse2) PRIVATE
-sym(vp8_filter_block1d8_v6_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 8
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rax, arg(7) ;vp8_filter
- movsxd rdx, dword ptr arg(3) ;pixels_per_line
-
- mov rdi, arg(1) ;output_ptr
- mov rsi, arg(0) ;src_ptr
-
- sub rsi, rdx
- sub rsi, rdx
-
- movsxd rcx, DWORD PTR arg(5) ;[output_height]
- pxor xmm0, xmm0 ; clear xmm0
-
- movdqa xmm7, XMMWORD PTR [GLOBAL(rd)]
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(2) ; dst_ptich
-%endif
-
-.vp8_filter_block1d8_v6_sse2_loop:
- movdqa xmm1, XMMWORD PTR [rsi]
- pmullw xmm1, [rax]
-
- movdqa xmm2, XMMWORD PTR [rsi + rdx]
- pmullw xmm2, [rax + 16]
-
- movdqa xmm3, XMMWORD PTR [rsi + rdx * 2]
- pmullw xmm3, [rax + 32]
-
- movdqa xmm5, XMMWORD PTR [rsi + rdx * 4]
- pmullw xmm5, [rax + 64]
-
- add rsi, rdx
- movdqa xmm4, XMMWORD PTR [rsi + rdx * 2]
-
- pmullw xmm4, [rax + 48]
- movdqa xmm6, XMMWORD PTR [rsi + rdx * 4]
-
- pmullw xmm6, [rax + 80]
-
- paddsw xmm2, xmm5
- paddsw xmm2, xmm3
-
- paddsw xmm2, xmm1
- paddsw xmm2, xmm4
-
- paddsw xmm2, xmm6
- paddsw xmm2, xmm7
-
- psraw xmm2, 7
- packuswb xmm2, xmm0 ; pack and saturate
-
- movq QWORD PTR [rdi], xmm2 ; store the results in the destination
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(2) ;[dst_ptich]
-%else
- add rdi, r8
-%endif
- dec rcx ; decrement count
- jnz .vp8_filter_block1d8_v6_sse2_loop ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_filter_block1d16_v6_sse2
-;(
-; unsigned short *src_ptr,
-; unsigned char *output_ptr,
-; int dst_ptich,
-; unsigned int pixels_per_line,
-; unsigned int pixel_step,
-; unsigned int output_height,
-; unsigned int output_width,
-; const short *vp8_filter
-;)
-;/************************************************************************************
-; Notes: filter_block1d16_v6 applies a 6 tap filter vertically to the input pixels. The
-; input pixel array has output_height rows.
-;*************************************************************************************/
-global sym(vp8_filter_block1d16_v6_sse2) PRIVATE
-sym(vp8_filter_block1d16_v6_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 8
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rax, arg(7) ;vp8_filter
- movsxd rdx, dword ptr arg(3) ;pixels_per_line
-
- mov rdi, arg(1) ;output_ptr
- mov rsi, arg(0) ;src_ptr
-
- sub rsi, rdx
- sub rsi, rdx
-
- movsxd rcx, DWORD PTR arg(5) ;[output_height]
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(2) ; dst_ptich
-%endif
-
-.vp8_filter_block1d16_v6_sse2_loop:
-; The order for adding 6-tap is 2 5 3 1 4 6. Read in data in that order.
- movdqa xmm1, XMMWORD PTR [rsi + rdx] ; line 2
- movdqa xmm2, XMMWORD PTR [rsi + rdx + 16]
- pmullw xmm1, [rax + 16]
- pmullw xmm2, [rax + 16]
-
- movdqa xmm3, XMMWORD PTR [rsi + rdx * 4] ; line 5
- movdqa xmm4, XMMWORD PTR [rsi + rdx * 4 + 16]
- pmullw xmm3, [rax + 64]
- pmullw xmm4, [rax + 64]
-
- movdqa xmm5, XMMWORD PTR [rsi + rdx * 2] ; line 3
- movdqa xmm6, XMMWORD PTR [rsi + rdx * 2 + 16]
- pmullw xmm5, [rax + 32]
- pmullw xmm6, [rax + 32]
-
- movdqa xmm7, XMMWORD PTR [rsi] ; line 1
- movdqa xmm0, XMMWORD PTR [rsi + 16]
- pmullw xmm7, [rax]
- pmullw xmm0, [rax]
-
- paddsw xmm1, xmm3
- paddsw xmm2, xmm4
- paddsw xmm1, xmm5
- paddsw xmm2, xmm6
- paddsw xmm1, xmm7
- paddsw xmm2, xmm0
-
- add rsi, rdx
-
- movdqa xmm3, XMMWORD PTR [rsi + rdx * 2] ; line 4
- movdqa xmm4, XMMWORD PTR [rsi + rdx * 2 + 16]
- pmullw xmm3, [rax + 48]
- pmullw xmm4, [rax + 48]
-
- movdqa xmm5, XMMWORD PTR [rsi + rdx * 4] ; line 6
- movdqa xmm6, XMMWORD PTR [rsi + rdx * 4 + 16]
- pmullw xmm5, [rax + 80]
- pmullw xmm6, [rax + 80]
-
- movdqa xmm7, XMMWORD PTR [GLOBAL(rd)]
- pxor xmm0, xmm0 ; clear xmm0
-
- paddsw xmm1, xmm3
- paddsw xmm2, xmm4
- paddsw xmm1, xmm5
- paddsw xmm2, xmm6
-
- paddsw xmm1, xmm7
- paddsw xmm2, xmm7
-
- psraw xmm1, 7
- psraw xmm2, 7
-
- packuswb xmm1, xmm2 ; pack and saturate
- movdqa XMMWORD PTR [rdi], xmm1 ; store the results in the destination
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(2) ;[dst_ptich]
-%else
- add rdi, r8
-%endif
- dec rcx ; decrement count
- jnz .vp8_filter_block1d16_v6_sse2_loop ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_filter_block1d8_h6_only_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; int dst_ptich,
-; unsigned int output_height,
-; const short *vp8_filter
-;)
-; First-pass filter only when yoffset==0
-global sym(vp8_filter_block1d8_h6_only_sse2) PRIVATE
-sym(vp8_filter_block1d8_h6_only_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rdx, arg(5) ;vp8_filter
- mov rsi, arg(0) ;src_ptr
-
- mov rdi, arg(2) ;output_ptr
-
- movsxd rcx, dword ptr arg(4) ;output_height
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line ; Pitch for Source
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(3) ;dst_ptich
-%endif
- pxor xmm0, xmm0 ; clear xmm0 for unpack
-
-.filter_block1d8_h6_only_rowloop:
- movq xmm3, MMWORD PTR [rsi - 2]
- movq xmm1, MMWORD PTR [rsi + 6]
-
- prefetcht2 [rsi+rax-2]
-
- pslldq xmm1, 8
- por xmm1, xmm3
-
- movdqa xmm4, xmm1
- movdqa xmm5, xmm1
-
- movdqa xmm6, xmm1
- movdqa xmm7, xmm1
-
- punpcklbw xmm3, xmm0 ; xx05 xx04 xx03 xx02 xx01 xx01 xx-1 xx-2
- psrldq xmm4, 1 ; xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 -1
-
- pmullw xmm3, XMMWORD PTR [rdx] ; x[-2] * H[-2]; Tap 1
- punpcklbw xmm4, xmm0 ; xx06 xx05 xx04 xx03 xx02 xx01 xx00 xx-1
-
- psrldq xmm5, 2 ; xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
- pmullw xmm4, XMMWORD PTR [rdx+16] ; x[-1] * H[-1]; Tap 2
-
-
- punpcklbw xmm5, xmm0 ; xx07 xx06 xx05 xx04 xx03 xx02 xx01 xx00
- psrldq xmm6, 3 ; xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01
-
- pmullw xmm5, [rdx+32] ; x[ 0] * H[ 0]; Tap 3
-
- punpcklbw xmm6, xmm0 ; xx08 xx07 xx06 xx05 xx04 xx03 xx02 xx01
- psrldq xmm7, 4 ; xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02
-
- pmullw xmm6, [rdx+48] ; x[ 1] * h[ 1] ; Tap 4
-
- punpcklbw xmm7, xmm0 ; xx09 xx08 xx07 xx06 xx05 xx04 xx03 xx02
- psrldq xmm1, 5 ; xx xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03
-
-
- pmullw xmm7, [rdx+64] ; x[ 2] * h[ 2] ; Tap 5
-
- punpcklbw xmm1, xmm0 ; xx0a xx09 xx08 xx07 xx06 xx05 xx04 xx03
- pmullw xmm1, [rdx+80] ; x[ 3] * h[ 3] ; Tap 6
-
-
- paddsw xmm4, xmm7
- paddsw xmm4, xmm5
-
- paddsw xmm4, xmm3
- paddsw xmm4, xmm6
-
- paddsw xmm4, xmm1
- paddsw xmm4, [GLOBAL(rd)]
-
- psraw xmm4, 7
-
- packuswb xmm4, xmm0
-
- movq QWORD PTR [rdi], xmm4 ; store the results in the destination
- lea rsi, [rsi + rax]
-
-%if ABI_IS_32BIT
- add rdi, DWORD Ptr arg(3) ;dst_ptich
-%else
- add rdi, r8
-%endif
- dec rcx
-
- jnz .filter_block1d8_h6_only_rowloop ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_filter_block1d16_h6_only_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; int dst_ptich,
-; unsigned int output_height,
-; const short *vp8_filter
-;)
-; First-pass filter only when yoffset==0
-global sym(vp8_filter_block1d16_h6_only_sse2) PRIVATE
-sym(vp8_filter_block1d16_h6_only_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rdx, arg(5) ;vp8_filter
- mov rsi, arg(0) ;src_ptr
-
- mov rdi, arg(2) ;output_ptr
-
- movsxd rcx, dword ptr arg(4) ;output_height
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line ; Pitch for Source
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(3) ;dst_ptich
-%endif
-
- pxor xmm0, xmm0 ; clear xmm0 for unpack
-
-.filter_block1d16_h6_only_sse2_rowloop:
- movq xmm3, MMWORD PTR [rsi - 2]
- movq xmm1, MMWORD PTR [rsi + 6]
-
- movq xmm2, MMWORD PTR [rsi +14]
- pslldq xmm2, 8
-
- por xmm2, xmm1
- prefetcht2 [rsi+rax-2]
-
- pslldq xmm1, 8
- por xmm1, xmm3
-
- movdqa xmm4, xmm1
- movdqa xmm5, xmm1
-
- movdqa xmm6, xmm1
- movdqa xmm7, xmm1
-
- punpcklbw xmm3, xmm0 ; xx05 xx04 xx03 xx02 xx01 xx01 xx-1 xx-2
- psrldq xmm4, 1 ; xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 -1
-
- pmullw xmm3, XMMWORD PTR [rdx] ; x[-2] * H[-2]; Tap 1
- punpcklbw xmm4, xmm0 ; xx06 xx05 xx04 xx03 xx02 xx01 xx00 xx-1
-
- psrldq xmm5, 2 ; xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
- pmullw xmm4, XMMWORD PTR [rdx+16] ; x[-1] * H[-1]; Tap 2
-
- punpcklbw xmm5, xmm0 ; xx07 xx06 xx05 xx04 xx03 xx02 xx01 xx00
- psrldq xmm6, 3 ; xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01
-
- pmullw xmm5, [rdx+32] ; x[ 0] * H[ 0]; Tap 3
-
- punpcklbw xmm6, xmm0 ; xx08 xx07 xx06 xx05 xx04 xx03 xx02 xx01
- psrldq xmm7, 4 ; xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02
-
- pmullw xmm6, [rdx+48] ; x[ 1] * h[ 1] ; Tap 4
-
- punpcklbw xmm7, xmm0 ; xx09 xx08 xx07 xx06 xx05 xx04 xx03 xx02
- psrldq xmm1, 5 ; xx xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03
-
- pmullw xmm7, [rdx+64] ; x[ 2] * h[ 2] ; Tap 5
-
- punpcklbw xmm1, xmm0 ; xx0a xx09 xx08 xx07 xx06 xx05 xx04 xx03
- pmullw xmm1, [rdx+80] ; x[ 3] * h[ 3] ; Tap 6
-
- paddsw xmm4, xmm7
- paddsw xmm4, xmm5
-
- paddsw xmm4, xmm3
- paddsw xmm4, xmm6
-
- paddsw xmm4, xmm1
- paddsw xmm4, [GLOBAL(rd)]
-
- psraw xmm4, 7
-
- packuswb xmm4, xmm0 ; lower 8 bytes
-
- movq QWORD Ptr [rdi], xmm4 ; store the results in the destination
-
- movdqa xmm3, xmm2
- movdqa xmm4, xmm2
-
- movdqa xmm5, xmm2
- movdqa xmm6, xmm2
-
- movdqa xmm7, xmm2
-
- punpcklbw xmm3, xmm0 ; xx05 xx04 xx03 xx02 xx01 xx01 xx-1 xx-2
- psrldq xmm4, 1 ; xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 -1
-
- pmullw xmm3, XMMWORD PTR [rdx] ; x[-2] * H[-2]; Tap 1
- punpcklbw xmm4, xmm0 ; xx06 xx05 xx04 xx03 xx02 xx01 xx00 xx-1
-
- psrldq xmm5, 2 ; xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
- pmullw xmm4, XMMWORD PTR [rdx+16] ; x[-1] * H[-1]; Tap 2
-
- punpcklbw xmm5, xmm0 ; xx07 xx06 xx05 xx04 xx03 xx02 xx01 xx00
- psrldq xmm6, 3 ; xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01
-
- pmullw xmm5, [rdx+32] ; x[ 0] * H[ 0]; Tap 3
-
- punpcklbw xmm6, xmm0 ; xx08 xx07 xx06 xx05 xx04 xx03 xx02 xx01
- psrldq xmm7, 4 ; xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03 02
-
- pmullw xmm6, [rdx+48] ; x[ 1] * h[ 1] ; Tap 4
-
- punpcklbw xmm7, xmm0 ; xx09 xx08 xx07 xx06 xx05 xx04 xx03 xx02
- psrldq xmm2, 5 ; xx xx xx xx xx 0d 0c 0b 0a 09 08 07 06 05 04 03
-
- pmullw xmm7, [rdx+64] ; x[ 2] * h[ 2] ; Tap 5
-
- punpcklbw xmm2, xmm0 ; xx0a xx09 xx08 xx07 xx06 xx05 xx04 xx03
- pmullw xmm2, [rdx+80] ; x[ 3] * h[ 3] ; Tap 6
-
- paddsw xmm4, xmm7
- paddsw xmm4, xmm5
-
- paddsw xmm4, xmm3
- paddsw xmm4, xmm6
-
- paddsw xmm4, xmm2
- paddsw xmm4, [GLOBAL(rd)]
-
- psraw xmm4, 7
-
- packuswb xmm4, xmm0 ; higher 8 bytes
-
- movq QWORD Ptr [rdi+8], xmm4 ; store the results in the destination
-
- lea rsi, [rsi + rax]
-%if ABI_IS_32BIT
- add rdi, DWORD Ptr arg(3) ;dst_ptich
-%else
- add rdi, r8
-%endif
-
- dec rcx
- jnz .filter_block1d16_h6_only_sse2_rowloop ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_filter_block1d8_v6_only_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; int dst_ptich,
-; unsigned int output_height,
-; const short *vp8_filter
-;)
-; Second-pass filter only when xoffset==0
-global sym(vp8_filter_block1d8_v6_only_sse2) PRIVATE
-sym(vp8_filter_block1d8_v6_only_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
-
- movsxd rcx, dword ptr arg(4) ;output_height
- movsxd rdx, dword ptr arg(1) ;src_pixels_per_line
-
- mov rax, arg(5) ;vp8_filter
-
- pxor xmm0, xmm0 ; clear xmm0
-
- movdqa xmm7, XMMWORD PTR [GLOBAL(rd)]
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(3) ; dst_ptich
-%endif
-
-.vp8_filter_block1d8_v6_only_sse2_loop:
- movq xmm1, MMWORD PTR [rsi]
- movq xmm2, MMWORD PTR [rsi + rdx]
- movq xmm3, MMWORD PTR [rsi + rdx * 2]
- movq xmm5, MMWORD PTR [rsi + rdx * 4]
- add rsi, rdx
- movq xmm4, MMWORD PTR [rsi + rdx * 2]
- movq xmm6, MMWORD PTR [rsi + rdx * 4]
-
- punpcklbw xmm1, xmm0
- pmullw xmm1, [rax]
-
- punpcklbw xmm2, xmm0
- pmullw xmm2, [rax + 16]
-
- punpcklbw xmm3, xmm0
- pmullw xmm3, [rax + 32]
-
- punpcklbw xmm5, xmm0
- pmullw xmm5, [rax + 64]
-
- punpcklbw xmm4, xmm0
- pmullw xmm4, [rax + 48]
-
- punpcklbw xmm6, xmm0
- pmullw xmm6, [rax + 80]
-
- paddsw xmm2, xmm5
- paddsw xmm2, xmm3
-
- paddsw xmm2, xmm1
- paddsw xmm2, xmm4
-
- paddsw xmm2, xmm6
- paddsw xmm2, xmm7
-
- psraw xmm2, 7
- packuswb xmm2, xmm0 ; pack and saturate
-
- movq QWORD PTR [rdi], xmm2 ; store the results in the destination
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(3) ;[dst_ptich]
-%else
- add rdi, r8
-%endif
- dec rcx ; decrement count
- jnz .vp8_filter_block1d8_v6_only_sse2_loop ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_unpack_block1d16_h6_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned short *output_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned int output_height,
-; unsigned int output_width
-;)
-global sym(vp8_unpack_block1d16_h6_sse2) PRIVATE
-sym(vp8_unpack_block1d16_h6_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 5
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(1) ;output_ptr
-
- movsxd rcx, dword ptr arg(3) ;output_height
- movsxd rax, dword ptr arg(2) ;src_pixels_per_line ; Pitch for Source
-
- pxor xmm0, xmm0 ; clear xmm0 for unpack
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(4) ;output_width ; Pitch for Source
-%endif
-
-.unpack_block1d16_h6_sse2_rowloop:
- movq xmm1, MMWORD PTR [rsi] ; 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 -1 -2
- movq xmm3, MMWORD PTR [rsi+8] ; make copy of xmm1
-
- punpcklbw xmm3, xmm0 ; xx05 xx04 xx03 xx02 xx01 xx01 xx-1 xx-2
- punpcklbw xmm1, xmm0
-
- movdqa XMMWORD Ptr [rdi], xmm1
- movdqa XMMWORD Ptr [rdi + 16], xmm3
-
- lea rsi, [rsi + rax]
-%if ABI_IS_32BIT
- add rdi, DWORD Ptr arg(4) ;[output_width]
-%else
- add rdi, r8
-%endif
- dec rcx
- jnz .unpack_block1d16_h6_sse2_rowloop ; next row
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_bilinear_predict16x16_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixels_per_line,
-; int xoffset,
-; int yoffset,
-; unsigned char *dst_ptr,
-; int dst_pitch
-;)
-extern sym(vp8_bilinear_filters_x86_8)
-global sym(vp8_bilinear_predict16x16_sse2) PRIVATE
-sym(vp8_bilinear_predict16x16_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ;const short *HFilter = vp8_bilinear_filters_x86_8[xoffset]
- ;const short *VFilter = vp8_bilinear_filters_x86_8[yoffset]
-
- lea rcx, [GLOBAL(sym(vp8_bilinear_filters_x86_8))]
- movsxd rax, dword ptr arg(2) ;xoffset
-
- cmp rax, 0 ;skip first_pass filter if xoffset=0
- je .b16x16_sp_only
-
- shl rax, 5
- add rax, rcx ;HFilter
-
- mov rdi, arg(4) ;dst_ptr
- mov rsi, arg(0) ;src_ptr
- movsxd rdx, dword ptr arg(5) ;dst_pitch
-
- movdqa xmm1, [rax]
- movdqa xmm2, [rax+16]
-
- movsxd rax, dword ptr arg(3) ;yoffset
-
- cmp rax, 0 ;skip second_pass filter if yoffset=0
- je .b16x16_fp_only
-
- shl rax, 5
- add rax, rcx ;VFilter
-
- lea rcx, [rdi+rdx*8]
- lea rcx, [rcx+rdx*8]
- movsxd rdx, dword ptr arg(1) ;src_pixels_per_line
-
- pxor xmm0, xmm0
-
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(5) ;dst_pitch
-%endif
- ; get the first horizontal line done
- movdqu xmm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- movdqa xmm4, xmm3 ; make a copy of current line
-
- punpcklbw xmm3, xmm0 ; xx 00 01 02 03 04 05 06
- punpckhbw xmm4, xmm0
-
- pmullw xmm3, xmm1
- pmullw xmm4, xmm1
-
- movdqu xmm5, [rsi+1]
- movdqa xmm6, xmm5
-
- punpcklbw xmm5, xmm0
- punpckhbw xmm6, xmm0
-
- pmullw xmm5, xmm2
- pmullw xmm6, xmm2
-
- paddw xmm3, xmm5
- paddw xmm4, xmm6
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw xmm4, [GLOBAL(rd)]
- psraw xmm4, VP8_FILTER_SHIFT
-
- movdqa xmm7, xmm3
- packuswb xmm7, xmm4
-
- add rsi, rdx ; next line
-.next_row:
- movdqu xmm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- movdqa xmm4, xmm3 ; make a copy of current line
-
- punpcklbw xmm3, xmm0 ; xx 00 01 02 03 04 05 06
- punpckhbw xmm4, xmm0
-
- pmullw xmm3, xmm1
- pmullw xmm4, xmm1
-
- movdqu xmm5, [rsi+1]
- movdqa xmm6, xmm5
-
- punpcklbw xmm5, xmm0
- punpckhbw xmm6, xmm0
-
- pmullw xmm5, xmm2
- pmullw xmm6, xmm2
-
- paddw xmm3, xmm5
- paddw xmm4, xmm6
-
- movdqa xmm5, xmm7
- movdqa xmm6, xmm7
-
- punpcklbw xmm5, xmm0
- punpckhbw xmm6, xmm0
-
- pmullw xmm5, [rax]
- pmullw xmm6, [rax]
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw xmm4, [GLOBAL(rd)]
- psraw xmm4, VP8_FILTER_SHIFT
-
- movdqa xmm7, xmm3
- packuswb xmm7, xmm4
-
- pmullw xmm3, [rax+16]
- pmullw xmm4, [rax+16]
-
- paddw xmm3, xmm5
- paddw xmm4, xmm6
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw xmm4, [GLOBAL(rd)]
- psraw xmm4, VP8_FILTER_SHIFT
-
- packuswb xmm3, xmm4
- movdqa [rdi], xmm3 ; store the results in the destination
-
- add rsi, rdx ; next line
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(5) ;dst_pitch
-%else
- add rdi, r8
-%endif
-
- cmp rdi, rcx
- jne .next_row
-
- jmp .done
-
-.b16x16_sp_only:
- movsxd rax, dword ptr arg(3) ;yoffset
- shl rax, 5
- add rax, rcx ;VFilter
-
- mov rdi, arg(4) ;dst_ptr
- mov rsi, arg(0) ;src_ptr
- movsxd rdx, dword ptr arg(5) ;dst_pitch
-
- movdqa xmm1, [rax]
- movdqa xmm2, [rax+16]
-
- lea rcx, [rdi+rdx*8]
- lea rcx, [rcx+rdx*8]
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line
-
- pxor xmm0, xmm0
-
- ; get the first horizontal line done
- movdqu xmm7, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
-
- add rsi, rax ; next line
-.next_row_spo:
- movdqu xmm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
-
- movdqa xmm5, xmm7
- movdqa xmm6, xmm7
-
- movdqa xmm4, xmm3 ; make a copy of current line
- movdqa xmm7, xmm3
-
- punpcklbw xmm5, xmm0
- punpckhbw xmm6, xmm0
- punpcklbw xmm3, xmm0 ; xx 00 01 02 03 04 05 06
- punpckhbw xmm4, xmm0
-
- pmullw xmm5, xmm1
- pmullw xmm6, xmm1
- pmullw xmm3, xmm2
- pmullw xmm4, xmm2
-
- paddw xmm3, xmm5
- paddw xmm4, xmm6
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw xmm4, [GLOBAL(rd)]
- psraw xmm4, VP8_FILTER_SHIFT
-
- packuswb xmm3, xmm4
- movdqa [rdi], xmm3 ; store the results in the destination
-
- add rsi, rax ; next line
- add rdi, rdx ;dst_pitch
- cmp rdi, rcx
- jne .next_row_spo
-
- jmp .done
-
-.b16x16_fp_only:
- lea rcx, [rdi+rdx*8]
- lea rcx, [rcx+rdx*8]
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line
- pxor xmm0, xmm0
-
-.next_row_fpo:
- movdqu xmm3, [rsi] ; xx 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
- movdqa xmm4, xmm3 ; make a copy of current line
-
- punpcklbw xmm3, xmm0 ; xx 00 01 02 03 04 05 06
- punpckhbw xmm4, xmm0
-
- pmullw xmm3, xmm1
- pmullw xmm4, xmm1
-
- movdqu xmm5, [rsi+1]
- movdqa xmm6, xmm5
-
- punpcklbw xmm5, xmm0
- punpckhbw xmm6, xmm0
-
- pmullw xmm5, xmm2
- pmullw xmm6, xmm2
-
- paddw xmm3, xmm5
- paddw xmm4, xmm6
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw xmm4, [GLOBAL(rd)]
- psraw xmm4, VP8_FILTER_SHIFT
-
- packuswb xmm3, xmm4
- movdqa [rdi], xmm3 ; store the results in the destination
-
- add rsi, rax ; next line
- add rdi, rdx ; dst_pitch
- cmp rdi, rcx
- jne .next_row_fpo
-
-.done:
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_bilinear_predict8x8_sse2
-;(
-; unsigned char *src_ptr,
-; int src_pixels_per_line,
-; int xoffset,
-; int yoffset,
-; unsigned char *dst_ptr,
-; int dst_pitch
-;)
-global sym(vp8_bilinear_predict8x8_sse2) PRIVATE
-sym(vp8_bilinear_predict8x8_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 144 ; reserve 144 bytes
-
- ;const short *HFilter = vp8_bilinear_filters_x86_8[xoffset]
- ;const short *VFilter = vp8_bilinear_filters_x86_8[yoffset]
- lea rcx, [GLOBAL(sym(vp8_bilinear_filters_x86_8))]
-
- mov rsi, arg(0) ;src_ptr
- movsxd rdx, dword ptr arg(1) ;src_pixels_per_line
-
- ;Read 9-line unaligned data in and put them on stack. This gives a big
- ;performance boost.
- movdqu xmm0, [rsi]
- lea rax, [rdx + rdx*2]
- movdqu xmm1, [rsi+rdx]
- movdqu xmm2, [rsi+rdx*2]
- add rsi, rax
- movdqu xmm3, [rsi]
- movdqu xmm4, [rsi+rdx]
- movdqu xmm5, [rsi+rdx*2]
- add rsi, rax
- movdqu xmm6, [rsi]
- movdqu xmm7, [rsi+rdx]
-
- movdqa XMMWORD PTR [rsp], xmm0
-
- movdqu xmm0, [rsi+rdx*2]
-
- movdqa XMMWORD PTR [rsp+16], xmm1
- movdqa XMMWORD PTR [rsp+32], xmm2
- movdqa XMMWORD PTR [rsp+48], xmm3
- movdqa XMMWORD PTR [rsp+64], xmm4
- movdqa XMMWORD PTR [rsp+80], xmm5
- movdqa XMMWORD PTR [rsp+96], xmm6
- movdqa XMMWORD PTR [rsp+112], xmm7
- movdqa XMMWORD PTR [rsp+128], xmm0
-
- movsxd rax, dword ptr arg(2) ;xoffset
- shl rax, 5
- add rax, rcx ;HFilter
-
- mov rdi, arg(4) ;dst_ptr
- movsxd rdx, dword ptr arg(5) ;dst_pitch
-
- movdqa xmm1, [rax]
- movdqa xmm2, [rax+16]
-
- movsxd rax, dword ptr arg(3) ;yoffset
- shl rax, 5
- add rax, rcx ;VFilter
-
- lea rcx, [rdi+rdx*8]
-
- movdqa xmm5, [rax]
- movdqa xmm6, [rax+16]
-
- pxor xmm0, xmm0
-
- ; get the first horizontal line done
- movdqa xmm3, XMMWORD PTR [rsp]
- movdqa xmm4, xmm3 ; make a copy of current line
- psrldq xmm4, 1
-
- punpcklbw xmm3, xmm0 ; 00 01 02 03 04 05 06 07
- punpcklbw xmm4, xmm0 ; 01 02 03 04 05 06 07 08
-
- pmullw xmm3, xmm1
- pmullw xmm4, xmm2
-
- paddw xmm3, xmm4
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- movdqa xmm7, xmm3
- add rsp, 16 ; next line
-.next_row8x8:
- movdqa xmm3, XMMWORD PTR [rsp] ; 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
- movdqa xmm4, xmm3 ; make a copy of current line
- psrldq xmm4, 1
-
- punpcklbw xmm3, xmm0 ; 00 01 02 03 04 05 06 07
- punpcklbw xmm4, xmm0 ; 01 02 03 04 05 06 07 08
-
- pmullw xmm3, xmm1
- pmullw xmm4, xmm2
-
- paddw xmm3, xmm4
- pmullw xmm7, xmm5
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- movdqa xmm4, xmm3
-
- pmullw xmm3, xmm6
- paddw xmm3, xmm7
-
- movdqa xmm7, xmm4
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- packuswb xmm3, xmm0
- movq [rdi], xmm3 ; store the results in the destination
-
- add rsp, 16 ; next line
- add rdi, rdx
-
- cmp rdi, rcx
- jne .next_row8x8
-
- ;add rsp, 144
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-SECTION_RODATA
-align 16
-rd:
- times 8 dw 0x40
diff --git a/thirdparty/libvpx/vp8/common/x86/subpixel_ssse3.asm b/thirdparty/libvpx/vp8/common/x86/subpixel_ssse3.asm
deleted file mode 100644
index c06f24556e..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/subpixel_ssse3.asm
+++ /dev/null
@@ -1,1508 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-%define BLOCK_HEIGHT_WIDTH 4
-%define VP8_FILTER_WEIGHT 128
-%define VP8_FILTER_SHIFT 7
-
-
-;/************************************************************************************
-; Notes: filter_block1d_h6 applies a 6 tap filter horizontally to the input pixels. The
-; input pixel array has output_height rows. This routine assumes that output_height is an
-; even number. This function handles 8 pixels in horizontal direction, calculating ONE
-; rows each iteration to take advantage of the 128 bits operations.
-;
-; This is an implementation of some of the SSE optimizations first seen in ffvp8
-;
-;*************************************************************************************/
-;void vp8_filter_block1d8_h6_ssse3
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; unsigned int output_pitch,
-; unsigned int output_height,
-; unsigned int vp8_filter_index
-;)
-global sym(vp8_filter_block1d8_h6_ssse3) PRIVATE
-sym(vp8_filter_block1d8_h6_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- movsxd rdx, DWORD PTR arg(5) ;table index
- xor rsi, rsi
- shl rdx, 4
-
- movdqa xmm7, [GLOBAL(rd)]
-
- lea rax, [GLOBAL(k0_k5)]
- add rax, rdx
- mov rdi, arg(2) ;output_ptr
-
- cmp esi, DWORD PTR [rax]
- je vp8_filter_block1d8_h4_ssse3
-
- movdqa xmm4, XMMWORD PTR [rax] ;k0_k5
- movdqa xmm5, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm6, XMMWORD PTR [rax+128] ;k1_k3
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line
- movsxd rcx, dword ptr arg(4) ;output_height
-
- movsxd rdx, dword ptr arg(3) ;output_pitch
-
- sub rdi, rdx
-;xmm3 free
-.filter_block1d8_h6_rowloop_ssse3:
- movq xmm0, MMWORD PTR [rsi - 2] ; -2 -1 0 1 2 3 4 5
-
- movq xmm2, MMWORD PTR [rsi + 3] ; 3 4 5 6 7 8 9 10
-
- punpcklbw xmm0, xmm2 ; -2 3 -1 4 0 5 1 6 2 7 3 8 4 9 5 10
-
- movdqa xmm1, xmm0
- pmaddubsw xmm0, xmm4
-
- movdqa xmm2, xmm1
- pshufb xmm1, [GLOBAL(shuf2bfrom1)]
-
- pshufb xmm2, [GLOBAL(shuf3bfrom1)]
- pmaddubsw xmm1, xmm5
-
- lea rdi, [rdi + rdx]
- pmaddubsw xmm2, xmm6
-
- lea rsi, [rsi + rax]
- dec rcx
-
- paddsw xmm0, xmm1
- paddsw xmm2, xmm7
-
- paddsw xmm0, xmm2
-
- psraw xmm0, 7
-
- packuswb xmm0, xmm0
-
- movq MMWORD Ptr [rdi], xmm0
- jnz .filter_block1d8_h6_rowloop_ssse3
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-vp8_filter_block1d8_h4_ssse3:
- movdqa xmm5, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm6, XMMWORD PTR [rax+128] ;k1_k3
-
- movdqa xmm3, XMMWORD PTR [GLOBAL(shuf2bfrom1)]
- movdqa xmm4, XMMWORD PTR [GLOBAL(shuf3bfrom1)]
-
- mov rsi, arg(0) ;src_ptr
-
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line
- movsxd rcx, dword ptr arg(4) ;output_height
-
- movsxd rdx, dword ptr arg(3) ;output_pitch
-
- sub rdi, rdx
-
-.filter_block1d8_h4_rowloop_ssse3:
- movq xmm0, MMWORD PTR [rsi - 2] ; -2 -1 0 1 2 3 4 5
-
- movq xmm1, MMWORD PTR [rsi + 3] ; 3 4 5 6 7 8 9 10
-
- punpcklbw xmm0, xmm1 ; -2 3 -1 4 0 5 1 6 2 7 3 8 4 9 5 10
-
- movdqa xmm2, xmm0
- pshufb xmm0, xmm3
-
- pshufb xmm2, xmm4
- pmaddubsw xmm0, xmm5
-
- lea rdi, [rdi + rdx]
- pmaddubsw xmm2, xmm6
-
- lea rsi, [rsi + rax]
- dec rcx
-
- paddsw xmm0, xmm7
-
- paddsw xmm0, xmm2
-
- psraw xmm0, 7
-
- packuswb xmm0, xmm0
-
- movq MMWORD Ptr [rdi], xmm0
-
- jnz .filter_block1d8_h4_rowloop_ssse3
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-;void vp8_filter_block1d16_h6_ssse3
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; unsigned int output_pitch,
-; unsigned int output_height,
-; unsigned int vp8_filter_index
-;)
-global sym(vp8_filter_block1d16_h6_ssse3) PRIVATE
-sym(vp8_filter_block1d16_h6_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- movsxd rdx, DWORD PTR arg(5) ;table index
- xor rsi, rsi
- shl rdx, 4 ;
-
- lea rax, [GLOBAL(k0_k5)]
- add rax, rdx
-
- mov rdi, arg(2) ;output_ptr
-
- mov rsi, arg(0) ;src_ptr
-
- movdqa xmm4, XMMWORD PTR [rax] ;k0_k5
- movdqa xmm5, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm6, XMMWORD PTR [rax+128] ;k1_k3
-
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line
- movsxd rcx, dword ptr arg(4) ;output_height
- movsxd rdx, dword ptr arg(3) ;output_pitch
-
-.filter_block1d16_h6_rowloop_ssse3:
- movq xmm0, MMWORD PTR [rsi - 2] ; -2 -1 0 1 2 3 4 5
-
- movq xmm3, MMWORD PTR [rsi + 3] ; 3 4 5 6 7 8 9 10
-
- punpcklbw xmm0, xmm3 ; -2 3 -1 4 0 5 1 6 2 7 3 8 4 9 5 10
-
- movdqa xmm1, xmm0
- pmaddubsw xmm0, xmm4
-
- movdqa xmm2, xmm1
- pshufb xmm1, [GLOBAL(shuf2bfrom1)]
-
- pshufb xmm2, [GLOBAL(shuf3bfrom1)]
- movq xmm3, MMWORD PTR [rsi + 6]
-
- pmaddubsw xmm1, xmm5
- movq xmm7, MMWORD PTR [rsi + 11]
-
- pmaddubsw xmm2, xmm6
- punpcklbw xmm3, xmm7
-
- paddsw xmm0, xmm1
- movdqa xmm1, xmm3
-
- pmaddubsw xmm3, xmm4
- paddsw xmm0, xmm2
-
- movdqa xmm2, xmm1
- paddsw xmm0, [GLOBAL(rd)]
-
- pshufb xmm1, [GLOBAL(shuf2bfrom1)]
- pshufb xmm2, [GLOBAL(shuf3bfrom1)]
-
- psraw xmm0, 7
- pmaddubsw xmm1, xmm5
-
- pmaddubsw xmm2, xmm6
- packuswb xmm0, xmm0
-
- lea rsi, [rsi + rax]
- paddsw xmm3, xmm1
-
- paddsw xmm3, xmm2
-
- paddsw xmm3, [GLOBAL(rd)]
-
- psraw xmm3, 7
-
- packuswb xmm3, xmm3
-
- punpcklqdq xmm0, xmm3
-
- movdqa XMMWORD Ptr [rdi], xmm0
-
- lea rdi, [rdi + rdx]
- dec rcx
- jnz .filter_block1d16_h6_rowloop_ssse3
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vp8_filter_block1d4_h6_ssse3
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; unsigned int output_pitch,
-; unsigned int output_height,
-; unsigned int vp8_filter_index
-;)
-global sym(vp8_filter_block1d4_h6_ssse3) PRIVATE
-sym(vp8_filter_block1d4_h6_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- movsxd rdx, DWORD PTR arg(5) ;table index
- xor rsi, rsi
- shl rdx, 4 ;
-
- lea rax, [GLOBAL(k0_k5)]
- add rax, rdx
- movdqa xmm7, [GLOBAL(rd)]
-
- cmp esi, DWORD PTR [rax]
- je .vp8_filter_block1d4_h4_ssse3
-
- movdqa xmm4, XMMWORD PTR [rax] ;k0_k5
- movdqa xmm5, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm6, XMMWORD PTR [rax+128] ;k1_k3
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line
- movsxd rcx, dword ptr arg(4) ;output_height
-
- movsxd rdx, dword ptr arg(3) ;output_pitch
-
-;xmm3 free
-.filter_block1d4_h6_rowloop_ssse3:
- movdqu xmm0, XMMWORD PTR [rsi - 2]
-
- movdqa xmm1, xmm0
- pshufb xmm0, [GLOBAL(shuf1b)]
-
- movdqa xmm2, xmm1
- pshufb xmm1, [GLOBAL(shuf2b)]
- pmaddubsw xmm0, xmm4
- pshufb xmm2, [GLOBAL(shuf3b)]
- pmaddubsw xmm1, xmm5
-
-;--
- pmaddubsw xmm2, xmm6
-
- lea rsi, [rsi + rax]
-;--
- paddsw xmm0, xmm1
- paddsw xmm0, xmm7
- pxor xmm1, xmm1
- paddsw xmm0, xmm2
- psraw xmm0, 7
- packuswb xmm0, xmm0
-
- movd DWORD PTR [rdi], xmm0
-
- add rdi, rdx
- dec rcx
- jnz .filter_block1d4_h6_rowloop_ssse3
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-.vp8_filter_block1d4_h4_ssse3:
- movdqa xmm5, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm6, XMMWORD PTR [rax+128] ;k1_k3
- movdqa xmm0, XMMWORD PTR [GLOBAL(shuf2b)]
- movdqa xmm3, XMMWORD PTR [GLOBAL(shuf3b)]
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
- movsxd rax, dword ptr arg(1) ;src_pixels_per_line
- movsxd rcx, dword ptr arg(4) ;output_height
-
- movsxd rdx, dword ptr arg(3) ;output_pitch
-
-.filter_block1d4_h4_rowloop_ssse3:
- movdqu xmm1, XMMWORD PTR [rsi - 2]
-
- movdqa xmm2, xmm1
- pshufb xmm1, xmm0 ;;[GLOBAL(shuf2b)]
- pshufb xmm2, xmm3 ;;[GLOBAL(shuf3b)]
- pmaddubsw xmm1, xmm5
-
-;--
- pmaddubsw xmm2, xmm6
-
- lea rsi, [rsi + rax]
-;--
- paddsw xmm1, xmm7
- paddsw xmm1, xmm2
- psraw xmm1, 7
- packuswb xmm1, xmm1
-
- movd DWORD PTR [rdi], xmm1
-
- add rdi, rdx
- dec rcx
- jnz .filter_block1d4_h4_rowloop_ssse3
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-
-;void vp8_filter_block1d16_v6_ssse3
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pitch,
-; unsigned char *output_ptr,
-; unsigned int out_pitch,
-; unsigned int output_height,
-; unsigned int vp8_filter_index
-;)
-global sym(vp8_filter_block1d16_v6_ssse3) PRIVATE
-sym(vp8_filter_block1d16_v6_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- movsxd rdx, DWORD PTR arg(5) ;table index
- xor rsi, rsi
- shl rdx, 4 ;
-
- lea rax, [GLOBAL(k0_k5)]
- add rax, rdx
-
- cmp esi, DWORD PTR [rax]
- je .vp8_filter_block1d16_v4_ssse3
-
- movdqa xmm5, XMMWORD PTR [rax] ;k0_k5
- movdqa xmm6, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm7, XMMWORD PTR [rax+128] ;k1_k3
-
- mov rsi, arg(0) ;src_ptr
- movsxd rdx, DWORD PTR arg(1) ;pixels_per_line
- mov rdi, arg(2) ;output_ptr
-
-%if ABI_IS_32BIT=0
- movsxd r8, DWORD PTR arg(3) ;out_pitch
-%endif
- mov rax, rsi
- movsxd rcx, DWORD PTR arg(4) ;output_height
- add rax, rdx
-
-
-.vp8_filter_block1d16_v6_ssse3_loop:
- movq xmm1, MMWORD PTR [rsi] ;A
- movq xmm2, MMWORD PTR [rsi + rdx] ;B
- movq xmm3, MMWORD PTR [rsi + rdx * 2] ;C
- movq xmm4, MMWORD PTR [rax + rdx * 2] ;D
- movq xmm0, MMWORD PTR [rsi + rdx * 4] ;E
-
- punpcklbw xmm2, xmm4 ;B D
- punpcklbw xmm3, xmm0 ;C E
-
- movq xmm0, MMWORD PTR [rax + rdx * 4] ;F
-
- pmaddubsw xmm3, xmm6
- punpcklbw xmm1, xmm0 ;A F
- pmaddubsw xmm2, xmm7
- pmaddubsw xmm1, xmm5
-
- paddsw xmm2, xmm3
- paddsw xmm2, xmm1
- paddsw xmm2, [GLOBAL(rd)]
- psraw xmm2, 7
- packuswb xmm2, xmm2
-
- movq MMWORD PTR [rdi], xmm2 ;store the results
-
- movq xmm1, MMWORD PTR [rsi + 8] ;A
- movq xmm2, MMWORD PTR [rsi + rdx + 8] ;B
- movq xmm3, MMWORD PTR [rsi + rdx * 2 + 8] ;C
- movq xmm4, MMWORD PTR [rax + rdx * 2 + 8] ;D
- movq xmm0, MMWORD PTR [rsi + rdx * 4 + 8] ;E
-
- punpcklbw xmm2, xmm4 ;B D
- punpcklbw xmm3, xmm0 ;C E
-
- movq xmm0, MMWORD PTR [rax + rdx * 4 + 8] ;F
- pmaddubsw xmm3, xmm6
- punpcklbw xmm1, xmm0 ;A F
- pmaddubsw xmm2, xmm7
- pmaddubsw xmm1, xmm5
-
- add rsi, rdx
- add rax, rdx
-;--
-;--
- paddsw xmm2, xmm3
- paddsw xmm2, xmm1
- paddsw xmm2, [GLOBAL(rd)]
- psraw xmm2, 7
- packuswb xmm2, xmm2
-
- movq MMWORD PTR [rdi+8], xmm2
-
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(3) ;out_pitch
-%else
- add rdi, r8
-%endif
- dec rcx
- jnz .vp8_filter_block1d16_v6_ssse3_loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-.vp8_filter_block1d16_v4_ssse3:
- movdqa xmm6, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm7, XMMWORD PTR [rax+128] ;k1_k3
-
- mov rsi, arg(0) ;src_ptr
- movsxd rdx, DWORD PTR arg(1) ;pixels_per_line
- mov rdi, arg(2) ;output_ptr
-
-%if ABI_IS_32BIT=0
- movsxd r8, DWORD PTR arg(3) ;out_pitch
-%endif
- mov rax, rsi
- movsxd rcx, DWORD PTR arg(4) ;output_height
- add rax, rdx
-
-.vp8_filter_block1d16_v4_ssse3_loop:
- movq xmm2, MMWORD PTR [rsi + rdx] ;B
- movq xmm3, MMWORD PTR [rsi + rdx * 2] ;C
- movq xmm4, MMWORD PTR [rax + rdx * 2] ;D
- movq xmm0, MMWORD PTR [rsi + rdx * 4] ;E
-
- punpcklbw xmm2, xmm4 ;B D
- punpcklbw xmm3, xmm0 ;C E
-
- pmaddubsw xmm3, xmm6
- pmaddubsw xmm2, xmm7
- movq xmm5, MMWORD PTR [rsi + rdx + 8] ;B
- movq xmm1, MMWORD PTR [rsi + rdx * 2 + 8] ;C
- movq xmm4, MMWORD PTR [rax + rdx * 2 + 8] ;D
- movq xmm0, MMWORD PTR [rsi + rdx * 4 + 8] ;E
-
- paddsw xmm2, [GLOBAL(rd)]
- paddsw xmm2, xmm3
- psraw xmm2, 7
- packuswb xmm2, xmm2
-
- punpcklbw xmm5, xmm4 ;B D
- punpcklbw xmm1, xmm0 ;C E
-
- pmaddubsw xmm1, xmm6
- pmaddubsw xmm5, xmm7
-
- movdqa xmm4, [GLOBAL(rd)]
- add rsi, rdx
- add rax, rdx
-;--
-;--
- paddsw xmm5, xmm1
- paddsw xmm5, xmm4
- psraw xmm5, 7
- packuswb xmm5, xmm5
-
- punpcklqdq xmm2, xmm5
-
- movdqa XMMWORD PTR [rdi], xmm2
-
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(3) ;out_pitch
-%else
- add rdi, r8
-%endif
- dec rcx
- jnz .vp8_filter_block1d16_v4_ssse3_loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vp8_filter_block1d8_v6_ssse3
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pitch,
-; unsigned char *output_ptr,
-; unsigned int out_pitch,
-; unsigned int output_height,
-; unsigned int vp8_filter_index
-;)
-global sym(vp8_filter_block1d8_v6_ssse3) PRIVATE
-sym(vp8_filter_block1d8_v6_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- movsxd rdx, DWORD PTR arg(5) ;table index
- xor rsi, rsi
- shl rdx, 4 ;
-
- lea rax, [GLOBAL(k0_k5)]
- add rax, rdx
-
- movsxd rdx, DWORD PTR arg(1) ;pixels_per_line
- mov rdi, arg(2) ;output_ptr
-%if ABI_IS_32BIT=0
- movsxd r8, DWORD PTR arg(3) ; out_pitch
-%endif
- movsxd rcx, DWORD PTR arg(4) ;[output_height]
-
- cmp esi, DWORD PTR [rax]
- je .vp8_filter_block1d8_v4_ssse3
-
- movdqa xmm5, XMMWORD PTR [rax] ;k0_k5
- movdqa xmm6, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm7, XMMWORD PTR [rax+128] ;k1_k3
-
- mov rsi, arg(0) ;src_ptr
-
- mov rax, rsi
- add rax, rdx
-
-.vp8_filter_block1d8_v6_ssse3_loop:
- movq xmm1, MMWORD PTR [rsi] ;A
- movq xmm2, MMWORD PTR [rsi + rdx] ;B
- movq xmm3, MMWORD PTR [rsi + rdx * 2] ;C
- movq xmm4, MMWORD PTR [rax + rdx * 2] ;D
- movq xmm0, MMWORD PTR [rsi + rdx * 4] ;E
-
- punpcklbw xmm2, xmm4 ;B D
- punpcklbw xmm3, xmm0 ;C E
-
- movq xmm0, MMWORD PTR [rax + rdx * 4] ;F
- movdqa xmm4, [GLOBAL(rd)]
-
- pmaddubsw xmm3, xmm6
- punpcklbw xmm1, xmm0 ;A F
- pmaddubsw xmm2, xmm7
- pmaddubsw xmm1, xmm5
- add rsi, rdx
- add rax, rdx
-;--
-;--
- paddsw xmm2, xmm3
- paddsw xmm2, xmm1
- paddsw xmm2, xmm4
- psraw xmm2, 7
- packuswb xmm2, xmm2
-
- movq MMWORD PTR [rdi], xmm2
-
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(3) ;[out_pitch]
-%else
- add rdi, r8
-%endif
- dec rcx
- jnz .vp8_filter_block1d8_v6_ssse3_loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-.vp8_filter_block1d8_v4_ssse3:
- movdqa xmm6, XMMWORD PTR [rax+256] ;k2_k4
- movdqa xmm7, XMMWORD PTR [rax+128] ;k1_k3
- movdqa xmm5, [GLOBAL(rd)]
-
- mov rsi, arg(0) ;src_ptr
-
- mov rax, rsi
- add rax, rdx
-
-.vp8_filter_block1d8_v4_ssse3_loop:
- movq xmm2, MMWORD PTR [rsi + rdx] ;B
- movq xmm3, MMWORD PTR [rsi + rdx * 2] ;C
- movq xmm4, MMWORD PTR [rax + rdx * 2] ;D
- movq xmm0, MMWORD PTR [rsi + rdx * 4] ;E
-
- punpcklbw xmm2, xmm4 ;B D
- punpcklbw xmm3, xmm0 ;C E
-
- pmaddubsw xmm3, xmm6
- pmaddubsw xmm2, xmm7
- add rsi, rdx
- add rax, rdx
-;--
-;--
- paddsw xmm2, xmm3
- paddsw xmm2, xmm5
- psraw xmm2, 7
- packuswb xmm2, xmm2
-
- movq MMWORD PTR [rdi], xmm2
-
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(3) ;[out_pitch]
-%else
- add rdi, r8
-%endif
- dec rcx
- jnz .vp8_filter_block1d8_v4_ssse3_loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-;void vp8_filter_block1d4_v6_ssse3
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pitch,
-; unsigned char *output_ptr,
-; unsigned int out_pitch,
-; unsigned int output_height,
-; unsigned int vp8_filter_index
-;)
-global sym(vp8_filter_block1d4_v6_ssse3) PRIVATE
-sym(vp8_filter_block1d4_v6_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- movsxd rdx, DWORD PTR arg(5) ;table index
- xor rsi, rsi
- shl rdx, 4 ;
-
- lea rax, [GLOBAL(k0_k5)]
- add rax, rdx
-
- movsxd rdx, DWORD PTR arg(1) ;pixels_per_line
- mov rdi, arg(2) ;output_ptr
-%if ABI_IS_32BIT=0
- movsxd r8, DWORD PTR arg(3) ; out_pitch
-%endif
- movsxd rcx, DWORD PTR arg(4) ;[output_height]
-
- cmp esi, DWORD PTR [rax]
- je .vp8_filter_block1d4_v4_ssse3
-
- movq mm5, MMWORD PTR [rax] ;k0_k5
- movq mm6, MMWORD PTR [rax+256] ;k2_k4
- movq mm7, MMWORD PTR [rax+128] ;k1_k3
-
- mov rsi, arg(0) ;src_ptr
-
- mov rax, rsi
- add rax, rdx
-
-.vp8_filter_block1d4_v6_ssse3_loop:
- movd mm1, DWORD PTR [rsi] ;A
- movd mm2, DWORD PTR [rsi + rdx] ;B
- movd mm3, DWORD PTR [rsi + rdx * 2] ;C
- movd mm4, DWORD PTR [rax + rdx * 2] ;D
- movd mm0, DWORD PTR [rsi + rdx * 4] ;E
-
- punpcklbw mm2, mm4 ;B D
- punpcklbw mm3, mm0 ;C E
-
- movd mm0, DWORD PTR [rax + rdx * 4] ;F
-
- movq mm4, [GLOBAL(rd)]
-
- pmaddubsw mm3, mm6
- punpcklbw mm1, mm0 ;A F
- pmaddubsw mm2, mm7
- pmaddubsw mm1, mm5
- add rsi, rdx
- add rax, rdx
-;--
-;--
- paddsw mm2, mm3
- paddsw mm2, mm1
- paddsw mm2, mm4
- psraw mm2, 7
- packuswb mm2, mm2
-
- movd DWORD PTR [rdi], mm2
-
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(3) ;[out_pitch]
-%else
- add rdi, r8
-%endif
- dec rcx
- jnz .vp8_filter_block1d4_v6_ssse3_loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-.vp8_filter_block1d4_v4_ssse3:
- movq mm6, MMWORD PTR [rax+256] ;k2_k4
- movq mm7, MMWORD PTR [rax+128] ;k1_k3
- movq mm5, MMWORD PTR [GLOBAL(rd)]
-
- mov rsi, arg(0) ;src_ptr
-
- mov rax, rsi
- add rax, rdx
-
-.vp8_filter_block1d4_v4_ssse3_loop:
- movd mm2, DWORD PTR [rsi + rdx] ;B
- movd mm3, DWORD PTR [rsi + rdx * 2] ;C
- movd mm4, DWORD PTR [rax + rdx * 2] ;D
- movd mm0, DWORD PTR [rsi + rdx * 4] ;E
-
- punpcklbw mm2, mm4 ;B D
- punpcklbw mm3, mm0 ;C E
-
- pmaddubsw mm3, mm6
- pmaddubsw mm2, mm7
- add rsi, rdx
- add rax, rdx
-;--
-;--
- paddsw mm2, mm3
- paddsw mm2, mm5
- psraw mm2, 7
- packuswb mm2, mm2
-
- movd DWORD PTR [rdi], mm2
-
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(3) ;[out_pitch]
-%else
- add rdi, r8
-%endif
- dec rcx
- jnz .vp8_filter_block1d4_v4_ssse3_loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vp8_bilinear_predict16x16_ssse3
-;(
-; unsigned char *src_ptr,
-; int src_pixels_per_line,
-; int xoffset,
-; int yoffset,
-; unsigned char *dst_ptr,
-; int dst_pitch
-;)
-global sym(vp8_bilinear_predict16x16_ssse3) PRIVATE
-sym(vp8_bilinear_predict16x16_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- lea rcx, [GLOBAL(vp8_bilinear_filters_ssse3)]
- movsxd rax, dword ptr arg(2) ; xoffset
-
- cmp rax, 0 ; skip first_pass filter if xoffset=0
- je .b16x16_sp_only
-
- shl rax, 4
- lea rax, [rax + rcx] ; HFilter
-
- mov rdi, arg(4) ; dst_ptr
- mov rsi, arg(0) ; src_ptr
- movsxd rdx, dword ptr arg(5) ; dst_pitch
-
- movdqa xmm1, [rax]
-
- movsxd rax, dword ptr arg(3) ; yoffset
-
- cmp rax, 0 ; skip second_pass filter if yoffset=0
- je .b16x16_fp_only
-
- shl rax, 4
- lea rax, [rax + rcx] ; VFilter
-
- lea rcx, [rdi+rdx*8]
- lea rcx, [rcx+rdx*8]
- movsxd rdx, dword ptr arg(1) ; src_pixels_per_line
-
- movdqa xmm2, [rax]
-
-%if ABI_IS_32BIT=0
- movsxd r8, dword ptr arg(5) ; dst_pitch
-%endif
- movq xmm3, [rsi] ; 00 01 02 03 04 05 06 07
- movq xmm5, [rsi+1] ; 01 02 03 04 05 06 07 08
-
- punpcklbw xmm3, xmm5 ; 00 01 01 02 02 03 03 04 04 05 05 06 06 07 07 08
- movq xmm4, [rsi+8] ; 08 09 10 11 12 13 14 15
-
- movq xmm5, [rsi+9] ; 09 10 11 12 13 14 15 16
-
- lea rsi, [rsi + rdx] ; next line
-
- pmaddubsw xmm3, xmm1 ; 00 02 04 06 08 10 12 14
-
- punpcklbw xmm4, xmm5 ; 08 09 09 10 10 11 11 12 12 13 13 14 14 15 15 16
- pmaddubsw xmm4, xmm1 ; 01 03 05 07 09 11 13 15
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- paddw xmm4, [GLOBAL(rd)] ; xmm4 += round value
- psraw xmm4, VP8_FILTER_SHIFT ; xmm4 /= 128
-
- movdqa xmm7, xmm3
- packuswb xmm7, xmm4 ; 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
-
-.next_row:
- movq xmm6, [rsi] ; 00 01 02 03 04 05 06 07
- movq xmm5, [rsi+1] ; 01 02 03 04 05 06 07 08
-
- punpcklbw xmm6, xmm5
- movq xmm4, [rsi+8] ; 08 09 10 11 12 13 14 15
-
- movq xmm5, [rsi+9] ; 09 10 11 12 13 14 15 16
- lea rsi, [rsi + rdx] ; next line
-
- pmaddubsw xmm6, xmm1
-
- punpcklbw xmm4, xmm5
- pmaddubsw xmm4, xmm1
-
- paddw xmm6, [GLOBAL(rd)] ; xmm6 += round value
- psraw xmm6, VP8_FILTER_SHIFT ; xmm6 /= 128
-
- paddw xmm4, [GLOBAL(rd)] ; xmm4 += round value
- psraw xmm4, VP8_FILTER_SHIFT ; xmm4 /= 128
-
- packuswb xmm6, xmm4
- movdqa xmm5, xmm7
-
- punpcklbw xmm5, xmm6
- pmaddubsw xmm5, xmm2
-
- punpckhbw xmm7, xmm6
- pmaddubsw xmm7, xmm2
-
- paddw xmm5, [GLOBAL(rd)] ; xmm5 += round value
- psraw xmm5, VP8_FILTER_SHIFT ; xmm5 /= 128
-
- paddw xmm7, [GLOBAL(rd)] ; xmm7 += round value
- psraw xmm7, VP8_FILTER_SHIFT ; xmm7 /= 128
-
- packuswb xmm5, xmm7
- movdqa xmm7, xmm6
-
- movdqa [rdi], xmm5 ; store the results in the destination
-%if ABI_IS_32BIT
- add rdi, DWORD PTR arg(5) ; dst_pitch
-%else
- add rdi, r8
-%endif
-
- cmp rdi, rcx
- jne .next_row
-
- jmp .done
-
-.b16x16_sp_only:
- movsxd rax, dword ptr arg(3) ; yoffset
- shl rax, 4
- lea rax, [rax + rcx] ; VFilter
-
- mov rdi, arg(4) ; dst_ptr
- mov rsi, arg(0) ; src_ptr
- movsxd rdx, dword ptr arg(5) ; dst_pitch
-
- movdqa xmm1, [rax] ; VFilter
-
- lea rcx, [rdi+rdx*8]
- lea rcx, [rcx+rdx*8]
- movsxd rax, dword ptr arg(1) ; src_pixels_per_line
-
- ; get the first horizontal line done
- movq xmm4, [rsi] ; load row 0
- movq xmm2, [rsi + 8] ; load row 0
-
- lea rsi, [rsi + rax] ; next line
-.next_row_sp:
- movq xmm3, [rsi] ; load row + 1
- movq xmm5, [rsi + 8] ; load row + 1
-
- punpcklbw xmm4, xmm3
- punpcklbw xmm2, xmm5
-
- pmaddubsw xmm4, xmm1
- movq xmm7, [rsi + rax] ; load row + 2
-
- pmaddubsw xmm2, xmm1
- movq xmm6, [rsi + rax + 8] ; load row + 2
-
- punpcklbw xmm3, xmm7
- punpcklbw xmm5, xmm6
-
- pmaddubsw xmm3, xmm1
- paddw xmm4, [GLOBAL(rd)]
-
- pmaddubsw xmm5, xmm1
- paddw xmm2, [GLOBAL(rd)]
-
- psraw xmm4, VP8_FILTER_SHIFT
- psraw xmm2, VP8_FILTER_SHIFT
-
- packuswb xmm4, xmm2
- paddw xmm3, [GLOBAL(rd)]
-
- movdqa [rdi], xmm4 ; store row 0
- paddw xmm5, [GLOBAL(rd)]
-
- psraw xmm3, VP8_FILTER_SHIFT
- psraw xmm5, VP8_FILTER_SHIFT
-
- packuswb xmm3, xmm5
- movdqa xmm4, xmm7
-
- movdqa [rdi + rdx],xmm3 ; store row 1
- lea rsi, [rsi + 2*rax]
-
- movdqa xmm2, xmm6
- lea rdi, [rdi + 2*rdx]
-
- cmp rdi, rcx
- jne .next_row_sp
-
- jmp .done
-
-.b16x16_fp_only:
- lea rcx, [rdi+rdx*8]
- lea rcx, [rcx+rdx*8]
- movsxd rax, dword ptr arg(1) ; src_pixels_per_line
-
-.next_row_fp:
- movq xmm2, [rsi] ; 00 01 02 03 04 05 06 07
- movq xmm4, [rsi+1] ; 01 02 03 04 05 06 07 08
-
- punpcklbw xmm2, xmm4
- movq xmm3, [rsi+8] ; 08 09 10 11 12 13 14 15
-
- pmaddubsw xmm2, xmm1
- movq xmm4, [rsi+9] ; 09 10 11 12 13 14 15 16
-
- lea rsi, [rsi + rax] ; next line
- punpcklbw xmm3, xmm4
-
- pmaddubsw xmm3, xmm1
- movq xmm5, [rsi]
-
- paddw xmm2, [GLOBAL(rd)]
- movq xmm7, [rsi+1]
-
- movq xmm6, [rsi+8]
- psraw xmm2, VP8_FILTER_SHIFT
-
- punpcklbw xmm5, xmm7
- movq xmm7, [rsi+9]
-
- paddw xmm3, [GLOBAL(rd)]
- pmaddubsw xmm5, xmm1
-
- psraw xmm3, VP8_FILTER_SHIFT
- punpcklbw xmm6, xmm7
-
- packuswb xmm2, xmm3
- pmaddubsw xmm6, xmm1
-
- movdqa [rdi], xmm2 ; store the results in the destination
- paddw xmm5, [GLOBAL(rd)]
-
- lea rdi, [rdi + rdx] ; dst_pitch
- psraw xmm5, VP8_FILTER_SHIFT
-
- paddw xmm6, [GLOBAL(rd)]
- psraw xmm6, VP8_FILTER_SHIFT
-
- packuswb xmm5, xmm6
- lea rsi, [rsi + rax] ; next line
-
- movdqa [rdi], xmm5 ; store the results in the destination
- lea rdi, [rdi + rdx] ; dst_pitch
-
- cmp rdi, rcx
-
- jne .next_row_fp
-
-.done:
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vp8_bilinear_predict8x8_ssse3
-;(
-; unsigned char *src_ptr,
-; int src_pixels_per_line,
-; int xoffset,
-; int yoffset,
-; unsigned char *dst_ptr,
-; int dst_pitch
-;)
-global sym(vp8_bilinear_predict8x8_ssse3) PRIVATE
-sym(vp8_bilinear_predict8x8_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 144 ; reserve 144 bytes
-
- lea rcx, [GLOBAL(vp8_bilinear_filters_ssse3)]
-
- mov rsi, arg(0) ;src_ptr
- movsxd rdx, dword ptr arg(1) ;src_pixels_per_line
-
- ;Read 9-line unaligned data in and put them on stack. This gives a big
- ;performance boost.
- movdqu xmm0, [rsi]
- lea rax, [rdx + rdx*2]
- movdqu xmm1, [rsi+rdx]
- movdqu xmm2, [rsi+rdx*2]
- add rsi, rax
- movdqu xmm3, [rsi]
- movdqu xmm4, [rsi+rdx]
- movdqu xmm5, [rsi+rdx*2]
- add rsi, rax
- movdqu xmm6, [rsi]
- movdqu xmm7, [rsi+rdx]
-
- movdqa XMMWORD PTR [rsp], xmm0
-
- movdqu xmm0, [rsi+rdx*2]
-
- movdqa XMMWORD PTR [rsp+16], xmm1
- movdqa XMMWORD PTR [rsp+32], xmm2
- movdqa XMMWORD PTR [rsp+48], xmm3
- movdqa XMMWORD PTR [rsp+64], xmm4
- movdqa XMMWORD PTR [rsp+80], xmm5
- movdqa XMMWORD PTR [rsp+96], xmm6
- movdqa XMMWORD PTR [rsp+112], xmm7
- movdqa XMMWORD PTR [rsp+128], xmm0
-
- movsxd rax, dword ptr arg(2) ; xoffset
- cmp rax, 0 ; skip first_pass filter if xoffset=0
- je .b8x8_sp_only
-
- shl rax, 4
- add rax, rcx ; HFilter
-
- mov rdi, arg(4) ; dst_ptr
- movsxd rdx, dword ptr arg(5) ; dst_pitch
-
- movdqa xmm0, [rax]
-
- movsxd rax, dword ptr arg(3) ; yoffset
- cmp rax, 0 ; skip second_pass filter if yoffset=0
- je .b8x8_fp_only
-
- shl rax, 4
- lea rax, [rax + rcx] ; VFilter
-
- lea rcx, [rdi+rdx*8]
-
- movdqa xmm1, [rax]
-
- ; get the first horizontal line done
- movdqa xmm3, [rsp] ; 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
- movdqa xmm5, xmm3 ; 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 xx
-
- psrldq xmm5, 1
- lea rsp, [rsp + 16] ; next line
-
- punpcklbw xmm3, xmm5 ; 00 01 01 02 02 03 03 04 04 05 05 06 06 07 07 08
- pmaddubsw xmm3, xmm0 ; 00 02 04 06 08 10 12 14
-
- paddw xmm3, [GLOBAL(rd)] ; xmm3 += round value
- psraw xmm3, VP8_FILTER_SHIFT ; xmm3 /= 128
-
- movdqa xmm7, xmm3
- packuswb xmm7, xmm7 ; 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
-
-.next_row:
- movdqa xmm6, [rsp] ; 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
- lea rsp, [rsp + 16] ; next line
-
- movdqa xmm5, xmm6
-
- psrldq xmm5, 1
-
- punpcklbw xmm6, xmm5
- pmaddubsw xmm6, xmm0
-
- paddw xmm6, [GLOBAL(rd)] ; xmm6 += round value
- psraw xmm6, VP8_FILTER_SHIFT ; xmm6 /= 128
-
- packuswb xmm6, xmm6
-
- punpcklbw xmm7, xmm6
- pmaddubsw xmm7, xmm1
-
- paddw xmm7, [GLOBAL(rd)] ; xmm7 += round value
- psraw xmm7, VP8_FILTER_SHIFT ; xmm7 /= 128
-
- packuswb xmm7, xmm7
-
- movq [rdi], xmm7 ; store the results in the destination
- lea rdi, [rdi + rdx]
-
- movdqa xmm7, xmm6
-
- cmp rdi, rcx
- jne .next_row
-
- jmp .done8x8
-
-.b8x8_sp_only:
- movsxd rax, dword ptr arg(3) ; yoffset
- shl rax, 4
- lea rax, [rax + rcx] ; VFilter
-
- mov rdi, arg(4) ;dst_ptr
- movsxd rdx, dword ptr arg(5) ; dst_pitch
-
- movdqa xmm0, [rax] ; VFilter
-
- movq xmm1, XMMWORD PTR [rsp]
- movq xmm2, XMMWORD PTR [rsp+16]
-
- movq xmm3, XMMWORD PTR [rsp+32]
- punpcklbw xmm1, xmm2
-
- movq xmm4, XMMWORD PTR [rsp+48]
- punpcklbw xmm2, xmm3
-
- movq xmm5, XMMWORD PTR [rsp+64]
- punpcklbw xmm3, xmm4
-
- movq xmm6, XMMWORD PTR [rsp+80]
- punpcklbw xmm4, xmm5
-
- movq xmm7, XMMWORD PTR [rsp+96]
- punpcklbw xmm5, xmm6
-
- pmaddubsw xmm1, xmm0
- pmaddubsw xmm2, xmm0
-
- pmaddubsw xmm3, xmm0
- pmaddubsw xmm4, xmm0
-
- pmaddubsw xmm5, xmm0
- punpcklbw xmm6, xmm7
-
- pmaddubsw xmm6, xmm0
- paddw xmm1, [GLOBAL(rd)]
-
- paddw xmm2, [GLOBAL(rd)]
- psraw xmm1, VP8_FILTER_SHIFT
-
- paddw xmm3, [GLOBAL(rd)]
- psraw xmm2, VP8_FILTER_SHIFT
-
- paddw xmm4, [GLOBAL(rd)]
- psraw xmm3, VP8_FILTER_SHIFT
-
- paddw xmm5, [GLOBAL(rd)]
- psraw xmm4, VP8_FILTER_SHIFT
-
- paddw xmm6, [GLOBAL(rd)]
- psraw xmm5, VP8_FILTER_SHIFT
-
- psraw xmm6, VP8_FILTER_SHIFT
- packuswb xmm1, xmm1
-
- packuswb xmm2, xmm2
- movq [rdi], xmm1
-
- packuswb xmm3, xmm3
- movq [rdi+rdx], xmm2
-
- packuswb xmm4, xmm4
- movq xmm1, XMMWORD PTR [rsp+112]
-
- lea rdi, [rdi + 2*rdx]
- movq xmm2, XMMWORD PTR [rsp+128]
-
- packuswb xmm5, xmm5
- movq [rdi], xmm3
-
- packuswb xmm6, xmm6
- movq [rdi+rdx], xmm4
-
- lea rdi, [rdi + 2*rdx]
- punpcklbw xmm7, xmm1
-
- movq [rdi], xmm5
- pmaddubsw xmm7, xmm0
-
- movq [rdi+rdx], xmm6
- punpcklbw xmm1, xmm2
-
- pmaddubsw xmm1, xmm0
- paddw xmm7, [GLOBAL(rd)]
-
- psraw xmm7, VP8_FILTER_SHIFT
- paddw xmm1, [GLOBAL(rd)]
-
- psraw xmm1, VP8_FILTER_SHIFT
- packuswb xmm7, xmm7
-
- packuswb xmm1, xmm1
- lea rdi, [rdi + 2*rdx]
-
- movq [rdi], xmm7
-
- movq [rdi+rdx], xmm1
- lea rsp, [rsp + 144]
-
- jmp .done8x8
-
-.b8x8_fp_only:
- lea rcx, [rdi+rdx*8]
-
-.next_row_fp:
- movdqa xmm1, XMMWORD PTR [rsp]
- movdqa xmm3, XMMWORD PTR [rsp+16]
-
- movdqa xmm2, xmm1
- movdqa xmm5, XMMWORD PTR [rsp+32]
-
- psrldq xmm2, 1
- movdqa xmm7, XMMWORD PTR [rsp+48]
-
- movdqa xmm4, xmm3
- psrldq xmm4, 1
-
- movdqa xmm6, xmm5
- psrldq xmm6, 1
-
- punpcklbw xmm1, xmm2
- pmaddubsw xmm1, xmm0
-
- punpcklbw xmm3, xmm4
- pmaddubsw xmm3, xmm0
-
- punpcklbw xmm5, xmm6
- pmaddubsw xmm5, xmm0
-
- movdqa xmm2, xmm7
- psrldq xmm2, 1
-
- punpcklbw xmm7, xmm2
- pmaddubsw xmm7, xmm0
-
- paddw xmm1, [GLOBAL(rd)]
- psraw xmm1, VP8_FILTER_SHIFT
-
- paddw xmm3, [GLOBAL(rd)]
- psraw xmm3, VP8_FILTER_SHIFT
-
- paddw xmm5, [GLOBAL(rd)]
- psraw xmm5, VP8_FILTER_SHIFT
-
- paddw xmm7, [GLOBAL(rd)]
- psraw xmm7, VP8_FILTER_SHIFT
-
- packuswb xmm1, xmm1
- packuswb xmm3, xmm3
-
- packuswb xmm5, xmm5
- movq [rdi], xmm1
-
- packuswb xmm7, xmm7
- movq [rdi+rdx], xmm3
-
- lea rdi, [rdi + 2*rdx]
- movq [rdi], xmm5
-
- lea rsp, [rsp + 4*16]
- movq [rdi+rdx], xmm7
-
- lea rdi, [rdi + 2*rdx]
- cmp rdi, rcx
-
- jne .next_row_fp
-
- lea rsp, [rsp + 16]
-
-.done8x8:
- ;add rsp, 144
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-SECTION_RODATA
-align 16
-shuf1b:
- db 0, 5, 1, 6, 2, 7, 3, 8, 4, 9, 5, 10, 6, 11, 7, 12
-shuf2b:
- db 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11
-shuf3b:
- db 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10
-
-align 16
-shuf2bfrom1:
- db 4, 8, 6, 1, 8, 3, 1, 5, 3, 7, 5, 9, 7,11, 9,13
-align 16
-shuf3bfrom1:
- db 2, 6, 4, 8, 6, 1, 8, 3, 1, 5, 3, 7, 5, 9, 7,11
-
-align 16
-rd:
- times 8 dw 0x40
-
-align 16
-k0_k5:
- times 8 db 0, 0 ;placeholder
- times 8 db 0, 0
- times 8 db 2, 1
- times 8 db 0, 0
- times 8 db 3, 3
- times 8 db 0, 0
- times 8 db 1, 2
- times 8 db 0, 0
-k1_k3:
- times 8 db 0, 0 ;placeholder
- times 8 db -6, 12
- times 8 db -11, 36
- times 8 db -9, 50
- times 8 db -16, 77
- times 8 db -6, 93
- times 8 db -8, 108
- times 8 db -1, 123
-k2_k4:
- times 8 db 128, 0 ;placeholder
- times 8 db 123, -1
- times 8 db 108, -8
- times 8 db 93, -6
- times 8 db 77, -16
- times 8 db 50, -9
- times 8 db 36, -11
- times 8 db 12, -6
-align 16
-vp8_bilinear_filters_ssse3:
- times 8 db 128, 0
- times 8 db 112, 16
- times 8 db 96, 32
- times 8 db 80, 48
- times 8 db 64, 64
- times 8 db 48, 80
- times 8 db 32, 96
- times 8 db 16, 112
-
diff --git a/thirdparty/libvpx/vp8/common/x86/vp8_asm_stubs.c b/thirdparty/libvpx/vp8/common/x86/vp8_asm_stubs.c
deleted file mode 100644
index fb0b57eb1c..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/vp8_asm_stubs.c
+++ /dev/null
@@ -1,625 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "vpx_ports/mem.h"
-#include "filter_x86.h"
-
-extern const short vp8_six_tap_mmx[8][6*8];
-
-extern void vp8_filter_block1d_h6_mmx
-(
- unsigned char *src_ptr,
- unsigned short *output_ptr,
- unsigned int src_pixels_per_line,
- unsigned int pixel_step,
- unsigned int output_height,
- unsigned int output_width,
- const short *vp8_filter
-);
-extern void vp8_filter_block1dc_v6_mmx
-(
- unsigned short *src_ptr,
- unsigned char *output_ptr,
- int output_pitch,
- unsigned int pixels_per_line,
- unsigned int pixel_step,
- unsigned int output_height,
- unsigned int output_width,
- const short *vp8_filter
-);
-extern void vp8_filter_block1d8_h6_sse2
-(
- unsigned char *src_ptr,
- unsigned short *output_ptr,
- unsigned int src_pixels_per_line,
- unsigned int pixel_step,
- unsigned int output_height,
- unsigned int output_width,
- const short *vp8_filter
-);
-extern void vp8_filter_block1d16_h6_sse2
-(
- unsigned char *src_ptr,
- unsigned short *output_ptr,
- unsigned int src_pixels_per_line,
- unsigned int pixel_step,
- unsigned int output_height,
- unsigned int output_width,
- const short *vp8_filter
-);
-extern void vp8_filter_block1d8_v6_sse2
-(
- unsigned short *src_ptr,
- unsigned char *output_ptr,
- int dst_ptich,
- unsigned int pixels_per_line,
- unsigned int pixel_step,
- unsigned int output_height,
- unsigned int output_width,
- const short *vp8_filter
-);
-extern void vp8_filter_block1d16_v6_sse2
-(
- unsigned short *src_ptr,
- unsigned char *output_ptr,
- int dst_ptich,
- unsigned int pixels_per_line,
- unsigned int pixel_step,
- unsigned int output_height,
- unsigned int output_width,
- const short *vp8_filter
-);
-extern void vp8_unpack_block1d16_h6_sse2
-(
- unsigned char *src_ptr,
- unsigned short *output_ptr,
- unsigned int src_pixels_per_line,
- unsigned int output_height,
- unsigned int output_width
-);
-extern void vp8_filter_block1d8_h6_only_sse2
-(
- unsigned char *src_ptr,
- unsigned int src_pixels_per_line,
- unsigned char *output_ptr,
- int dst_ptich,
- unsigned int output_height,
- const short *vp8_filter
-);
-extern void vp8_filter_block1d16_h6_only_sse2
-(
- unsigned char *src_ptr,
- unsigned int src_pixels_per_line,
- unsigned char *output_ptr,
- int dst_ptich,
- unsigned int output_height,
- const short *vp8_filter
-);
-extern void vp8_filter_block1d8_v6_only_sse2
-(
- unsigned char *src_ptr,
- unsigned int src_pixels_per_line,
- unsigned char *output_ptr,
- int dst_ptich,
- unsigned int output_height,
- const short *vp8_filter
-);
-
-
-#if HAVE_MMX
-void vp8_sixtap_predict4x4_mmx
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- DECLARE_ALIGNED(16, unsigned short, FData2[16*16]); /* Temp data bufffer used in filtering */
- const short *HFilter, *VFilter;
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 1, 9, 8, HFilter);
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1dc_v6_mmx(FData2 + 8, dst_ptr, dst_pitch, 8, 4 , 4, 4, VFilter);
-
-}
-
-
-void vp8_sixtap_predict16x16_mmx
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
-
- DECLARE_ALIGNED(16, unsigned short, FData2[24*24]); /* Temp data bufffer used in filtering */
-
- const short *HFilter, *VFilter;
-
-
- HFilter = vp8_six_tap_mmx[xoffset];
-
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 1, 21, 32, HFilter);
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 + 4, src_pixels_per_line, 1, 21, 32, HFilter);
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 8, FData2 + 8, src_pixels_per_line, 1, 21, 32, HFilter);
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 12, FData2 + 12, src_pixels_per_line, 1, 21, 32, HFilter);
-
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1dc_v6_mmx(FData2 + 32, dst_ptr, dst_pitch, 32, 16 , 16, 16, VFilter);
- vp8_filter_block1dc_v6_mmx(FData2 + 36, dst_ptr + 4, dst_pitch, 32, 16 , 16, 16, VFilter);
- vp8_filter_block1dc_v6_mmx(FData2 + 40, dst_ptr + 8, dst_pitch, 32, 16 , 16, 16, VFilter);
- vp8_filter_block1dc_v6_mmx(FData2 + 44, dst_ptr + 12, dst_pitch, 32, 16 , 16, 16, VFilter);
-
-}
-
-
-void vp8_sixtap_predict8x8_mmx
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
-
- DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used in filtering */
-
- const short *HFilter, *VFilter;
-
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 1, 13, 16, HFilter);
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 + 4, src_pixels_per_line, 1, 13, 16, HFilter);
-
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1dc_v6_mmx(FData2 + 16, dst_ptr, dst_pitch, 16, 8 , 8, 8, VFilter);
- vp8_filter_block1dc_v6_mmx(FData2 + 20, dst_ptr + 4, dst_pitch, 16, 8 , 8, 8, VFilter);
-
-}
-
-
-void vp8_sixtap_predict8x4_mmx
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
-
- DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used in filtering */
-
- const short *HFilter, *VFilter;
-
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 1, 9, 16, HFilter);
- vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 + 4, src_pixels_per_line, 1, 9, 16, HFilter);
-
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1dc_v6_mmx(FData2 + 16, dst_ptr, dst_pitch, 16, 8 , 4, 8, VFilter);
- vp8_filter_block1dc_v6_mmx(FData2 + 20, dst_ptr + 4, dst_pitch, 16, 8 , 4, 8, VFilter);
-
-}
-
-
-
-void vp8_bilinear_predict16x16_mmx
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- vp8_bilinear_predict8x8_mmx(src_ptr, src_pixels_per_line, xoffset, yoffset, dst_ptr, dst_pitch);
- vp8_bilinear_predict8x8_mmx(src_ptr + 8, src_pixels_per_line, xoffset, yoffset, dst_ptr + 8, dst_pitch);
- vp8_bilinear_predict8x8_mmx(src_ptr + 8 * src_pixels_per_line, src_pixels_per_line, xoffset, yoffset, dst_ptr + dst_pitch * 8, dst_pitch);
- vp8_bilinear_predict8x8_mmx(src_ptr + 8 * src_pixels_per_line + 8, src_pixels_per_line, xoffset, yoffset, dst_ptr + dst_pitch * 8 + 8, dst_pitch);
-}
-#endif
-
-
-#if HAVE_SSE2
-void vp8_sixtap_predict16x16_sse2
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-
-)
-{
- DECLARE_ALIGNED(16, unsigned short, FData2[24*24]); /* Temp data bufffer used in filtering */
-
- const short *HFilter, *VFilter;
-
- if (xoffset)
- {
- if (yoffset)
- {
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d16_h6_sse2(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 1, 21, 32, HFilter);
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1d16_v6_sse2(FData2 + 32, dst_ptr, dst_pitch, 32, 16 , 16, dst_pitch, VFilter);
- }
- else
- {
- /* First-pass only */
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d16_h6_only_sse2(src_ptr, src_pixels_per_line, dst_ptr, dst_pitch, 16, HFilter);
- }
- }
- else
- {
- /* Second-pass only */
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_unpack_block1d16_h6_sse2(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 21, 32);
- vp8_filter_block1d16_v6_sse2(FData2 + 32, dst_ptr, dst_pitch, 32, 16 , 16, dst_pitch, VFilter);
- }
-}
-
-
-void vp8_sixtap_predict8x8_sse2
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used in filtering */
- const short *HFilter, *VFilter;
-
- if (xoffset)
- {
- if (yoffset)
- {
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d8_h6_sse2(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 1, 13, 16, HFilter);
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1d8_v6_sse2(FData2 + 16, dst_ptr, dst_pitch, 16, 8 , 8, dst_pitch, VFilter);
- }
- else
- {
- /* First-pass only */
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d8_h6_only_sse2(src_ptr, src_pixels_per_line, dst_ptr, dst_pitch, 8, HFilter);
- }
- }
- else
- {
- /* Second-pass only */
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1d8_v6_only_sse2(src_ptr - (2 * src_pixels_per_line), src_pixels_per_line, dst_ptr, dst_pitch, 8, VFilter);
- }
-}
-
-
-void vp8_sixtap_predict8x4_sse2
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used in filtering */
- const short *HFilter, *VFilter;
-
- if (xoffset)
- {
- if (yoffset)
- {
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d8_h6_sse2(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 1, 9, 16, HFilter);
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1d8_v6_sse2(FData2 + 16, dst_ptr, dst_pitch, 16, 8 , 4, dst_pitch, VFilter);
- }
- else
- {
- /* First-pass only */
- HFilter = vp8_six_tap_mmx[xoffset];
- vp8_filter_block1d8_h6_only_sse2(src_ptr, src_pixels_per_line, dst_ptr, dst_pitch, 4, HFilter);
- }
- }
- else
- {
- /* Second-pass only */
- VFilter = vp8_six_tap_mmx[yoffset];
- vp8_filter_block1d8_v6_only_sse2(src_ptr - (2 * src_pixels_per_line), src_pixels_per_line, dst_ptr, dst_pitch, 4, VFilter);
- }
-}
-
-#endif
-
-#if HAVE_SSSE3
-
-extern void vp8_filter_block1d8_h6_ssse3
-(
- unsigned char *src_ptr,
- unsigned int src_pixels_per_line,
- unsigned char *output_ptr,
- unsigned int output_pitch,
- unsigned int output_height,
- unsigned int vp8_filter_index
-);
-
-extern void vp8_filter_block1d16_h6_ssse3
-(
- unsigned char *src_ptr,
- unsigned int src_pixels_per_line,
- unsigned char *output_ptr,
- unsigned int output_pitch,
- unsigned int output_height,
- unsigned int vp8_filter_index
-);
-
-extern void vp8_filter_block1d16_v6_ssse3
-(
- unsigned char *src_ptr,
- unsigned int src_pitch,
- unsigned char *output_ptr,
- unsigned int out_pitch,
- unsigned int output_height,
- unsigned int vp8_filter_index
-);
-
-extern void vp8_filter_block1d8_v6_ssse3
-(
- unsigned char *src_ptr,
- unsigned int src_pitch,
- unsigned char *output_ptr,
- unsigned int out_pitch,
- unsigned int output_height,
- unsigned int vp8_filter_index
-);
-
-extern void vp8_filter_block1d4_h6_ssse3
-(
- unsigned char *src_ptr,
- unsigned int src_pixels_per_line,
- unsigned char *output_ptr,
- unsigned int output_pitch,
- unsigned int output_height,
- unsigned int vp8_filter_index
-);
-
-extern void vp8_filter_block1d4_v6_ssse3
-(
- unsigned char *src_ptr,
- unsigned int src_pitch,
- unsigned char *output_ptr,
- unsigned int out_pitch,
- unsigned int output_height,
- unsigned int vp8_filter_index
-);
-
-void vp8_sixtap_predict16x16_ssse3
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-
-)
-{
- DECLARE_ALIGNED(16, unsigned char, FData2[24*24]);
-
- if (xoffset)
- {
- if (yoffset)
- {
- vp8_filter_block1d16_h6_ssse3(src_ptr - (2 * src_pixels_per_line),
- src_pixels_per_line, FData2,
- 16, 21, xoffset);
- vp8_filter_block1d16_v6_ssse3(FData2 , 16, dst_ptr, dst_pitch,
- 16, yoffset);
- }
- else
- {
- /* First-pass only */
- vp8_filter_block1d16_h6_ssse3(src_ptr, src_pixels_per_line,
- dst_ptr, dst_pitch, 16, xoffset);
- }
- }
- else
- {
- if (yoffset)
- {
- /* Second-pass only */
- vp8_filter_block1d16_v6_ssse3(src_ptr - (2 * src_pixels_per_line),
- src_pixels_per_line,
- dst_ptr, dst_pitch, 16, yoffset);
- }
- else
- {
- /* ssse3 second-pass only function couldn't handle (xoffset==0 &&
- * yoffset==0) case correctly. Add copy function here to guarantee
- * six-tap function handles all possible offsets. */
- vp8_copy_mem16x16(src_ptr, src_pixels_per_line, dst_ptr, dst_pitch);
- }
- }
-}
-
-void vp8_sixtap_predict8x8_ssse3
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- DECLARE_ALIGNED(16, unsigned char, FData2[256]);
-
- if (xoffset)
- {
- if (yoffset)
- {
- vp8_filter_block1d8_h6_ssse3(src_ptr - (2 * src_pixels_per_line),
- src_pixels_per_line, FData2,
- 8, 13, xoffset);
- vp8_filter_block1d8_v6_ssse3(FData2, 8, dst_ptr, dst_pitch,
- 8, yoffset);
- }
- else
- {
- vp8_filter_block1d8_h6_ssse3(src_ptr, src_pixels_per_line,
- dst_ptr, dst_pitch, 8, xoffset);
- }
- }
- else
- {
- if (yoffset)
- {
- /* Second-pass only */
- vp8_filter_block1d8_v6_ssse3(src_ptr - (2 * src_pixels_per_line),
- src_pixels_per_line,
- dst_ptr, dst_pitch, 8, yoffset);
- }
- else
- {
- /* ssse3 second-pass only function couldn't handle (xoffset==0 &&
- * yoffset==0) case correctly. Add copy function here to guarantee
- * six-tap function handles all possible offsets. */
- vp8_copy_mem8x8(src_ptr, src_pixels_per_line, dst_ptr, dst_pitch);
- }
- }
-}
-
-
-void vp8_sixtap_predict8x4_ssse3
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- DECLARE_ALIGNED(16, unsigned char, FData2[256]);
-
- if (xoffset)
- {
- if (yoffset)
- {
- vp8_filter_block1d8_h6_ssse3(src_ptr - (2 * src_pixels_per_line),
- src_pixels_per_line, FData2,
- 8, 9, xoffset);
- vp8_filter_block1d8_v6_ssse3(FData2, 8, dst_ptr, dst_pitch,
- 4, yoffset);
- }
- else
- {
- /* First-pass only */
- vp8_filter_block1d8_h6_ssse3(src_ptr, src_pixels_per_line,
- dst_ptr, dst_pitch, 4, xoffset);
- }
- }
- else
- {
- if (yoffset)
- {
- /* Second-pass only */
- vp8_filter_block1d8_v6_ssse3(src_ptr - (2 * src_pixels_per_line),
- src_pixels_per_line,
- dst_ptr, dst_pitch, 4, yoffset);
- }
- else
- {
- /* ssse3 second-pass only function couldn't handle (xoffset==0 &&
- * yoffset==0) case correctly. Add copy function here to guarantee
- * six-tap function handles all possible offsets. */
- vp8_copy_mem8x4(src_ptr, src_pixels_per_line, dst_ptr, dst_pitch);
- }
- }
-}
-
-void vp8_sixtap_predict4x4_ssse3
-(
- unsigned char *src_ptr,
- int src_pixels_per_line,
- int xoffset,
- int yoffset,
- unsigned char *dst_ptr,
- int dst_pitch
-)
-{
- DECLARE_ALIGNED(16, unsigned char, FData2[4*9]);
-
- if (xoffset)
- {
- if (yoffset)
- {
- vp8_filter_block1d4_h6_ssse3(src_ptr - (2 * src_pixels_per_line),
- src_pixels_per_line,
- FData2, 4, 9, xoffset);
- vp8_filter_block1d4_v6_ssse3(FData2, 4, dst_ptr, dst_pitch,
- 4, yoffset);
- }
- else
- {
- vp8_filter_block1d4_h6_ssse3(src_ptr, src_pixels_per_line,
- dst_ptr, dst_pitch, 4, xoffset);
- }
- }
- else
- {
- if (yoffset)
- {
- vp8_filter_block1d4_v6_ssse3(src_ptr - (2 * src_pixels_per_line),
- src_pixels_per_line,
- dst_ptr, dst_pitch, 4, yoffset);
- }
- else
- {
- /* ssse3 second-pass only function couldn't handle (xoffset==0 &&
- * yoffset==0) case correctly. Add copy function here to guarantee
- * six-tap function handles all possible offsets. */
- int r;
-
- for (r = 0; r < 4; r++)
- {
- dst_ptr[0] = src_ptr[0];
- dst_ptr[1] = src_ptr[1];
- dst_ptr[2] = src_ptr[2];
- dst_ptr[3] = src_ptr[3];
- dst_ptr += dst_pitch;
- src_ptr += src_pixels_per_line;
- }
- }
- }
-}
-
-#endif
diff --git a/thirdparty/libvpx/vp8/common/x86/vp8_loopfilter_mmx.asm b/thirdparty/libvpx/vp8/common/x86/vp8_loopfilter_mmx.asm
deleted file mode 100644
index 88a07b9f3f..0000000000
--- a/thirdparty/libvpx/vp8/common/x86/vp8_loopfilter_mmx.asm
+++ /dev/null
@@ -1,1753 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-
-;void vp8_loop_filter_horizontal_edge_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-; int count
-;)
-global sym(vp8_loop_filter_horizontal_edge_mmx) PRIVATE
-sym(vp8_loop_filter_horizontal_edge_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 32 ; reserve 32 bytes
- %define t0 [rsp + 0] ;__declspec(align(16)) char t0[8];
- %define t1 [rsp + 16] ;__declspec(align(16)) char t1[8];
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step ; destination pitch?
-
- movsxd rcx, dword ptr arg(5) ;count
-.next8_h:
- mov rdx, arg(3) ;limit
- movq mm7, [rdx]
- mov rdi, rsi ; rdi points to row +1 for indirect addressing
- add rdi, rax
-
- ; calculate breakout conditions
- movq mm2, [rdi+2*rax] ; q3
- movq mm1, [rsi+2*rax] ; q2
- movq mm6, mm1 ; q2
- psubusb mm1, mm2 ; q2-=q3
- psubusb mm2, mm6 ; q3-=q2
- por mm1, mm2 ; abs(q3-q2)
- psubusb mm1, mm7 ;
-
-
- movq mm4, [rsi+rax] ; q1
- movq mm3, mm4 ; q1
- psubusb mm4, mm6 ; q1-=q2
- psubusb mm6, mm3 ; q2-=q1
- por mm4, mm6 ; abs(q2-q1)
-
- psubusb mm4, mm7
- por mm1, mm4
-
- movq mm4, [rsi] ; q0
- movq mm0, mm4 ; q0
- psubusb mm4, mm3 ; q0-=q1
- psubusb mm3, mm0 ; q1-=q0
- por mm4, mm3 ; abs(q0-q1)
- movq t0, mm4 ; save to t0
- psubusb mm4, mm7
- por mm1, mm4
-
-
- neg rax ; negate pitch to deal with above border
-
- movq mm2, [rsi+4*rax] ; p3
- movq mm4, [rdi+4*rax] ; p2
- movq mm5, mm4 ; p2
- psubusb mm4, mm2 ; p2-=p3
- psubusb mm2, mm5 ; p3-=p2
- por mm4, mm2 ; abs(p3 - p2)
- psubusb mm4, mm7
- por mm1, mm4
-
-
- movq mm4, [rsi+2*rax] ; p1
- movq mm3, mm4 ; p1
- psubusb mm4, mm5 ; p1-=p2
- psubusb mm5, mm3 ; p2-=p1
- por mm4, mm5 ; abs(p2 - p1)
- psubusb mm4, mm7
- por mm1, mm4
-
- movq mm2, mm3 ; p1
-
- movq mm4, [rsi+rax] ; p0
- movq mm5, mm4 ; p0
- psubusb mm4, mm3 ; p0-=p1
- psubusb mm3, mm5 ; p1-=p0
- por mm4, mm3 ; abs(p1 - p0)
- movq t1, mm4 ; save to t1
- psubusb mm4, mm7
- por mm1, mm4
-
- movq mm3, [rdi] ; q1
- movq mm4, mm3 ; q1
- psubusb mm3, mm2 ; q1-=p1
- psubusb mm2, mm4 ; p1-=q1
- por mm2, mm3 ; abs(p1-q1)
- pand mm2, [GLOBAL(tfe)] ; set lsb of each byte to zero
- psrlw mm2, 1 ; abs(p1-q1)/2
-
- movq mm6, mm5 ; p0
- movq mm3, [rsi] ; q0
- psubusb mm5, mm3 ; p0-=q0
- psubusb mm3, mm6 ; q0-=p0
- por mm5, mm3 ; abs(p0 - q0)
- paddusb mm5, mm5 ; abs(p0-q0)*2
- paddusb mm5, mm2 ; abs (p0 - q0) *2 + abs(p1-q1)/2
-
- mov rdx, arg(2) ;blimit ; get blimit
- movq mm7, [rdx] ; blimit
-
- psubusb mm5, mm7 ; abs (p0 - q0) *2 + abs(p1-q1)/2 > blimit
- por mm1, mm5
- pxor mm5, mm5
- pcmpeqb mm1, mm5 ; mask mm1
-
- ; calculate high edge variance
- mov rdx, arg(4) ;thresh ; get thresh
- movq mm7, [rdx] ;
- movq mm4, t0 ; get abs (q1 - q0)
- psubusb mm4, mm7
- movq mm3, t1 ; get abs (p1 - p0)
- psubusb mm3, mm7
- paddb mm4, mm3 ; abs(q1 - q0) > thresh || abs(p1 - p0) > thresh
-
- pcmpeqb mm4, mm5
-
- pcmpeqb mm5, mm5
- pxor mm4, mm5
-
-
- ; start work on filters
- movq mm2, [rsi+2*rax] ; p1
- movq mm7, [rdi] ; q1
- pxor mm2, [GLOBAL(t80)] ; p1 offset to convert to signed values
- pxor mm7, [GLOBAL(t80)] ; q1 offset to convert to signed values
- psubsb mm2, mm7 ; p1 - q1
- pand mm2, mm4 ; high var mask (hvm)(p1 - q1)
- pxor mm6, [GLOBAL(t80)] ; offset to convert to signed values
- pxor mm0, [GLOBAL(t80)] ; offset to convert to signed values
- movq mm3, mm0 ; q0
- psubsb mm0, mm6 ; q0 - p0
- paddsb mm2, mm0 ; 1 * (q0 - p0) + hvm(p1 - q1)
- paddsb mm2, mm0 ; 2 * (q0 - p0) + hvm(p1 - q1)
- paddsb mm2, mm0 ; 3 * (q0 - p0) + hvm(p1 - q1)
- pand mm1, mm2 ; mask filter values we don't care about
- movq mm2, mm1
- paddsb mm1, [GLOBAL(t4)] ; 3* (q0 - p0) + hvm(p1 - q1) + 4
- paddsb mm2, [GLOBAL(t3)] ; 3* (q0 - p0) + hvm(p1 - q1) + 3
-
- pxor mm0, mm0 ;
- pxor mm5, mm5
- punpcklbw mm0, mm2 ;
- punpckhbw mm5, mm2 ;
- psraw mm0, 11 ;
- psraw mm5, 11
- packsswb mm0, mm5
- movq mm2, mm0 ; (3* (q0 - p0) + hvm(p1 - q1) + 3) >> 3;
-
- pxor mm0, mm0 ; 0
- movq mm5, mm1 ; abcdefgh
- punpcklbw mm0, mm1 ; e0f0g0h0
- psraw mm0, 11 ; sign extended shift right by 3
- pxor mm1, mm1 ; 0
- punpckhbw mm1, mm5 ; a0b0c0d0
- psraw mm1, 11 ; sign extended shift right by 3
- movq mm5, mm0 ; save results
-
- packsswb mm0, mm1 ; (3* (q0 - p0) + hvm(p1 - q1) + 4) >>3
- paddsw mm5, [GLOBAL(ones)]
- paddsw mm1, [GLOBAL(ones)]
- psraw mm5, 1 ; partial shifted one more time for 2nd tap
- psraw mm1, 1 ; partial shifted one more time for 2nd tap
- packsswb mm5, mm1 ; (3* (q0 - p0) + hvm(p1 - q1) + 4) >>4
- pandn mm4, mm5 ; high edge variance additive
-
- paddsb mm6, mm2 ; p0+= p0 add
- pxor mm6, [GLOBAL(t80)] ; unoffset
- movq [rsi+rax], mm6 ; write back
-
- movq mm6, [rsi+2*rax] ; p1
- pxor mm6, [GLOBAL(t80)] ; reoffset
- paddsb mm6, mm4 ; p1+= p1 add
- pxor mm6, [GLOBAL(t80)] ; unoffset
- movq [rsi+2*rax], mm6 ; write back
-
- psubsb mm3, mm0 ; q0-= q0 add
- pxor mm3, [GLOBAL(t80)] ; unoffset
- movq [rsi], mm3 ; write back
-
- psubsb mm7, mm4 ; q1-= q1 add
- pxor mm7, [GLOBAL(t80)] ; unoffset
- movq [rdi], mm7 ; write back
-
- add rsi,8
- neg rax
- dec rcx
- jnz .next8_h
-
- add rsp, 32
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_loop_filter_vertical_edge_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-; int count
-;)
-global sym(vp8_loop_filter_vertical_edge_mmx) PRIVATE
-sym(vp8_loop_filter_vertical_edge_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 64 ; reserve 64 bytes
- %define t0 [rsp + 0] ;__declspec(align(16)) char t0[8];
- %define t1 [rsp + 16] ;__declspec(align(16)) char t1[8];
- %define srct [rsp + 32] ;__declspec(align(16)) char srct[32];
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step ; destination pitch?
-
- lea rsi, [rsi + rax*4 - 4]
-
- movsxd rcx, dword ptr arg(5) ;count
-.next8_v:
- mov rdi, rsi ; rdi points to row +1 for indirect addressing
- add rdi, rax
-
-
- ;transpose
- movq mm6, [rsi+2*rax] ; 67 66 65 64 63 62 61 60
- movq mm7, mm6 ; 77 76 75 74 73 72 71 70
-
- punpckhbw mm7, [rdi+2*rax] ; 77 67 76 66 75 65 74 64
- punpcklbw mm6, [rdi+2*rax] ; 73 63 72 62 71 61 70 60
-
- movq mm4, [rsi] ; 47 46 45 44 43 42 41 40
- movq mm5, mm4 ; 47 46 45 44 43 42 41 40
-
- punpckhbw mm5, [rsi+rax] ; 57 47 56 46 55 45 54 44
- punpcklbw mm4, [rsi+rax] ; 53 43 52 42 51 41 50 40
-
- movq mm3, mm5 ; 57 47 56 46 55 45 54 44
- punpckhwd mm5, mm7 ; 77 67 57 47 76 66 56 46
-
- punpcklwd mm3, mm7 ; 75 65 55 45 74 64 54 44
- movq mm2, mm4 ; 53 43 52 42 51 41 50 40
-
- punpckhwd mm4, mm6 ; 73 63 53 43 72 62 52 42
- punpcklwd mm2, mm6 ; 71 61 51 41 70 60 50 40
-
- neg rax
- movq mm6, [rsi+rax*2] ; 27 26 25 24 23 22 21 20
-
- movq mm1, mm6 ; 27 26 25 24 23 22 21 20
- punpckhbw mm6, [rsi+rax] ; 37 27 36 36 35 25 34 24
-
- punpcklbw mm1, [rsi+rax] ; 33 23 32 22 31 21 30 20
- movq mm7, [rsi+rax*4]; ; 07 06 05 04 03 02 01 00
-
- punpckhbw mm7, [rdi+rax*4] ; 17 07 16 06 15 05 14 04
- movq mm0, mm7 ; 17 07 16 06 15 05 14 04
-
- punpckhwd mm7, mm6 ; 37 27 17 07 36 26 16 06
- punpcklwd mm0, mm6 ; 35 25 15 05 34 24 14 04
-
- movq mm6, mm7 ; 37 27 17 07 36 26 16 06
- punpckhdq mm7, mm5 ; 77 67 57 47 37 27 17 07 = q3
-
- punpckldq mm6, mm5 ; 76 66 56 46 36 26 16 06 = q2
-
- movq mm5, mm6 ; 76 66 56 46 36 26 16 06
- psubusb mm5, mm7 ; q2-q3
-
- psubusb mm7, mm6 ; q3-q2
- por mm7, mm5; ; mm7=abs (q3-q2)
-
- movq mm5, mm0 ; 35 25 15 05 34 24 14 04
- punpckhdq mm5, mm3 ; 75 65 55 45 35 25 15 05 = q1
-
- punpckldq mm0, mm3 ; 74 64 54 44 34 24 15 04 = q0
- movq mm3, mm5 ; 75 65 55 45 35 25 15 05 = q1
-
- psubusb mm3, mm6 ; q1-q2
- psubusb mm6, mm5 ; q2-q1
-
- por mm6, mm3 ; mm6=abs(q2-q1)
- lea rdx, srct
-
- movq [rdx+24], mm5 ; save q1
- movq [rdx+16], mm0 ; save q0
-
- movq mm3, [rsi+rax*4] ; 07 06 05 04 03 02 01 00
- punpcklbw mm3, [rdi+rax*4] ; 13 03 12 02 11 01 10 00
-
- movq mm0, mm3 ; 13 03 12 02 11 01 10 00
- punpcklwd mm0, mm1 ; 31 21 11 01 30 20 10 00
-
- punpckhwd mm3, mm1 ; 33 23 13 03 32 22 12 02
- movq mm1, mm0 ; 31 21 11 01 30 20 10 00
-
- punpckldq mm0, mm2 ; 70 60 50 40 30 20 10 00 =p3
- punpckhdq mm1, mm2 ; 71 61 51 41 31 21 11 01 =p2
-
- movq mm2, mm1 ; 71 61 51 41 31 21 11 01 =p2
- psubusb mm2, mm0 ; p2-p3
-
- psubusb mm0, mm1 ; p3-p2
- por mm0, mm2 ; mm0=abs(p3-p2)
-
- movq mm2, mm3 ; 33 23 13 03 32 22 12 02
- punpckldq mm2, mm4 ; 72 62 52 42 32 22 12 02 = p1
-
- punpckhdq mm3, mm4 ; 73 63 53 43 33 23 13 03 = p0
- movq [rdx+8], mm3 ; save p0
-
- movq [rdx], mm2 ; save p1
- movq mm5, mm2 ; mm5 = p1
-
- psubusb mm2, mm1 ; p1-p2
- psubusb mm1, mm5 ; p2-p1
-
- por mm1, mm2 ; mm1=abs(p2-p1)
- mov rdx, arg(3) ;limit
-
- movq mm4, [rdx] ; mm4 = limit
- psubusb mm7, mm4
-
- psubusb mm0, mm4
- psubusb mm1, mm4
-
- psubusb mm6, mm4
- por mm7, mm6
-
- por mm0, mm1
- por mm0, mm7 ; abs(q3-q2) > limit || abs(p3-p2) > limit ||abs(p2-p1) > limit || abs(q2-q1) > limit
-
- movq mm1, mm5 ; p1
-
- movq mm7, mm3 ; mm3=mm7=p0
- psubusb mm7, mm5 ; p0 - p1
-
- psubusb mm5, mm3 ; p1 - p0
- por mm5, mm7 ; abs(p1-p0)
-
- movq t0, mm5 ; save abs(p1-p0)
- lea rdx, srct
-
- psubusb mm5, mm4
- por mm0, mm5 ; mm0=mask
-
- movq mm5, [rdx+16] ; mm5=q0
- movq mm7, [rdx+24] ; mm7=q1
-
- movq mm6, mm5 ; mm6=q0
- movq mm2, mm7 ; q1
- psubusb mm5, mm7 ; q0-q1
-
- psubusb mm7, mm6 ; q1-q0
- por mm7, mm5 ; abs(q1-q0)
-
- movq t1, mm7 ; save abs(q1-q0)
- psubusb mm7, mm4
-
- por mm0, mm7 ; mask
-
- movq mm5, mm2 ; q1
- psubusb mm5, mm1 ; q1-=p1
- psubusb mm1, mm2 ; p1-=q1
- por mm5, mm1 ; abs(p1-q1)
- pand mm5, [GLOBAL(tfe)] ; set lsb of each byte to zero
- psrlw mm5, 1 ; abs(p1-q1)/2
-
- mov rdx, arg(2) ;blimit ;
-
- movq mm4, [rdx] ;blimit
- movq mm1, mm3 ; mm1=mm3=p0
-
- movq mm7, mm6 ; mm7=mm6=q0
- psubusb mm1, mm7 ; p0-q0
-
- psubusb mm7, mm3 ; q0-p0
- por mm1, mm7 ; abs(q0-p0)
- paddusb mm1, mm1 ; abs(q0-p0)*2
- paddusb mm1, mm5 ; abs (p0 - q0) *2 + abs(p1-q1)/2
-
- psubusb mm1, mm4 ; abs (p0 - q0) *2 + abs(p1-q1)/2 > blimit
- por mm1, mm0; ; mask
-
- pxor mm0, mm0
- pcmpeqb mm1, mm0
-
- ; calculate high edge variance
- mov rdx, arg(4) ;thresh ; get thresh
- movq mm7, [rdx]
- ;
- movq mm4, t0 ; get abs (q1 - q0)
- psubusb mm4, mm7
-
- movq mm3, t1 ; get abs (p1 - p0)
- psubusb mm3, mm7
-
- por mm4, mm3 ; abs(q1 - q0) > thresh || abs(p1 - p0) > thresh
- pcmpeqb mm4, mm0
-
- pcmpeqb mm0, mm0
- pxor mm4, mm0
-
-
-
- ; start work on filters
- lea rdx, srct
-
- movq mm2, [rdx] ; p1
- movq mm7, [rdx+24] ; q1
-
- movq mm6, [rdx+8] ; p0
- movq mm0, [rdx+16] ; q0
-
- pxor mm2, [GLOBAL(t80)] ; p1 offset to convert to signed values
- pxor mm7, [GLOBAL(t80)] ; q1 offset to convert to signed values
-
- psubsb mm2, mm7 ; p1 - q1
- pand mm2, mm4 ; high var mask (hvm)(p1 - q1)
-
- pxor mm6, [GLOBAL(t80)] ; offset to convert to signed values
- pxor mm0, [GLOBAL(t80)] ; offset to convert to signed values
-
- movq mm3, mm0 ; q0
- psubsb mm0, mm6 ; q0 - p0
-
- paddsb mm2, mm0 ; 1 * (q0 - p0) + hvm(p1 - q1)
- paddsb mm2, mm0 ; 2 * (q0 - p0) + hvm(p1 - q1)
-
- paddsb mm2, mm0 ; 3 * (q0 - p0) + hvm(p1 - q1)
- pand mm1, mm2 ; mask filter values we don't care about
-
- movq mm2, mm1
- paddsb mm1, [GLOBAL(t4)] ; 3* (q0 - p0) + hvm(p1 - q1) + 4
-
- paddsb mm2, [GLOBAL(t3)] ; 3* (q0 - p0) + hvm(p1 - q1) + 3
- pxor mm0, mm0 ;
-
- pxor mm5, mm5
- punpcklbw mm0, mm2 ;
-
- punpckhbw mm5, mm2 ;
- psraw mm0, 11 ;
-
- psraw mm5, 11
- packsswb mm0, mm5
-
- movq mm2, mm0 ; (3* (q0 - p0) + hvm(p1 - q1) + 3) >> 3;
-
- pxor mm0, mm0 ; 0
- movq mm5, mm1 ; abcdefgh
-
- punpcklbw mm0, mm1 ; e0f0g0h0
- psraw mm0, 11 ; sign extended shift right by 3
-
- pxor mm1, mm1 ; 0
- punpckhbw mm1, mm5 ; a0b0c0d0
-
- psraw mm1, 11 ; sign extended shift right by 3
- movq mm5, mm0 ; save results
-
- packsswb mm0, mm1 ; (3* (q0 - p0) + hvm(p1 - q1) + 4) >>3
- paddsw mm5, [GLOBAL(ones)]
-
- paddsw mm1, [GLOBAL(ones)]
- psraw mm5, 1 ; partial shifted one more time for 2nd tap
-
- psraw mm1, 1 ; partial shifted one more time for 2nd tap
- packsswb mm5, mm1 ; (3* (q0 - p0) + hvm(p1 - q1) + 4) >>4
-
- pandn mm4, mm5 ; high edge variance additive
-
- paddsb mm6, mm2 ; p0+= p0 add
- pxor mm6, [GLOBAL(t80)] ; unoffset
-
- ; mm6=p0 ;
- movq mm1, [rdx] ; p1
- pxor mm1, [GLOBAL(t80)] ; reoffset
-
- paddsb mm1, mm4 ; p1+= p1 add
- pxor mm1, [GLOBAL(t80)] ; unoffset
- ; mm6 = p0 mm1 = p1
-
- psubsb mm3, mm0 ; q0-= q0 add
- pxor mm3, [GLOBAL(t80)] ; unoffset
-
- ; mm3 = q0
- psubsb mm7, mm4 ; q1-= q1 add
- pxor mm7, [GLOBAL(t80)] ; unoffset
- ; mm7 = q1
-
- ; transpose and write back
- ; mm1 = 72 62 52 42 32 22 12 02
- ; mm6 = 73 63 53 43 33 23 13 03
- ; mm3 = 74 64 54 44 34 24 14 04
- ; mm7 = 75 65 55 45 35 25 15 05
-
- movq mm2, mm1 ; 72 62 52 42 32 22 12 02
- punpcklbw mm2, mm6 ; 33 32 23 22 13 12 03 02
-
- movq mm4, mm3 ; 74 64 54 44 34 24 14 04
- punpckhbw mm1, mm6 ; 73 72 63 62 53 52 43 42
-
- punpcklbw mm4, mm7 ; 35 34 25 24 15 14 05 04
- punpckhbw mm3, mm7 ; 75 74 65 64 55 54 45 44
-
- movq mm6, mm2 ; 33 32 23 22 13 12 03 02
- punpcklwd mm2, mm4 ; 15 14 13 12 05 04 03 02
-
- punpckhwd mm6, mm4 ; 35 34 33 32 25 24 23 22
- movq mm5, mm1 ; 73 72 63 62 53 52 43 42
-
- punpcklwd mm1, mm3 ; 55 54 53 52 45 44 43 42
- punpckhwd mm5, mm3 ; 75 74 73 72 65 64 63 62
-
-
- ; mm2 = 15 14 13 12 05 04 03 02
- ; mm6 = 35 34 33 32 25 24 23 22
- ; mm5 = 55 54 53 52 45 44 43 42
- ; mm1 = 75 74 73 72 65 64 63 62
-
-
-
- movd [rsi+rax*4+2], mm2
- psrlq mm2, 32
-
- movd [rdi+rax*4+2], mm2
- movd [rsi+rax*2+2], mm6
-
- psrlq mm6, 32
- movd [rsi+rax+2],mm6
-
- movd [rsi+2], mm1
- psrlq mm1, 32
-
- movd [rdi+2], mm1
- neg rax
-
- movd [rdi+rax+2],mm5
- psrlq mm5, 32
-
- movd [rdi+rax*2+2], mm5
-
- lea rsi, [rsi+rax*8]
- dec rcx
- jnz .next8_v
-
- add rsp, 64
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_mbloop_filter_horizontal_edge_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-; int count
-;)
-global sym(vp8_mbloop_filter_horizontal_edge_mmx) PRIVATE
-sym(vp8_mbloop_filter_horizontal_edge_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 32 ; reserve 32 bytes
- %define t0 [rsp + 0] ;__declspec(align(16)) char t0[8];
- %define t1 [rsp + 16] ;__declspec(align(16)) char t1[8];
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step ; destination pitch?
-
- movsxd rcx, dword ptr arg(5) ;count
-.next8_mbh:
- mov rdx, arg(3) ;limit
- movq mm7, [rdx]
- mov rdi, rsi ; rdi points to row +1 for indirect addressing
- add rdi, rax
-
- ; calculate breakout conditions
- movq mm2, [rdi+2*rax] ; q3
-
- movq mm1, [rsi+2*rax] ; q2
- movq mm6, mm1 ; q2
- psubusb mm1, mm2 ; q2-=q3
- psubusb mm2, mm6 ; q3-=q2
- por mm1, mm2 ; abs(q3-q2)
- psubusb mm1, mm7
-
-
- ; mm1 = abs(q3-q2), mm6 =q2, mm7 = limit
- movq mm4, [rsi+rax] ; q1
- movq mm3, mm4 ; q1
- psubusb mm4, mm6 ; q1-=q2
- psubusb mm6, mm3 ; q2-=q1
- por mm4, mm6 ; abs(q2-q1)
- psubusb mm4, mm7
- por mm1, mm4
-
-
- ; mm1 = mask, mm3=q1, mm7 = limit
-
- movq mm4, [rsi] ; q0
- movq mm0, mm4 ; q0
- psubusb mm4, mm3 ; q0-=q1
- psubusb mm3, mm0 ; q1-=q0
- por mm4, mm3 ; abs(q0-q1)
- movq t0, mm4 ; save to t0
- psubusb mm4, mm7
- por mm1, mm4
-
-
- ; mm1 = mask, mm0=q0, mm7 = limit, t0 = abs(q0-q1)
-
- neg rax ; negate pitch to deal with above border
-
- movq mm2, [rsi+4*rax] ; p3
- movq mm4, [rdi+4*rax] ; p2
- movq mm5, mm4 ; p2
- psubusb mm4, mm2 ; p2-=p3
- psubusb mm2, mm5 ; p3-=p2
- por mm4, mm2 ; abs(p3 - p2)
- psubusb mm4, mm7
- por mm1, mm4
- ; mm1 = mask, mm0=q0, mm7 = limit, t0 = abs(q0-q1)
-
- movq mm4, [rsi+2*rax] ; p1
- movq mm3, mm4 ; p1
- psubusb mm4, mm5 ; p1-=p2
- psubusb mm5, mm3 ; p2-=p1
- por mm4, mm5 ; abs(p2 - p1)
- psubusb mm4, mm7
- por mm1, mm4
-
- movq mm2, mm3 ; p1
-
-
- ; mm1 = mask, mm0=q0, mm7 = limit, t0 = abs(q0-q1)
-
- movq mm4, [rsi+rax] ; p0
- movq mm5, mm4 ; p0
- psubusb mm4, mm3 ; p0-=p1
- psubusb mm3, mm5 ; p1-=p0
- por mm4, mm3 ; abs(p1 - p0)
- movq t1, mm4 ; save to t1
- psubusb mm4, mm7
- por mm1, mm4
- ; mm1 = mask, mm0=q0, mm7 = limit, t0 = abs(q0-q1) t1 = abs(p1-p0)
- ; mm5 = p0
- movq mm3, [rdi] ; q1
- movq mm4, mm3 ; q1
- psubusb mm3, mm2 ; q1-=p1
- psubusb mm2, mm4 ; p1-=q1
- por mm2, mm3 ; abs(p1-q1)
- pand mm2, [GLOBAL(tfe)] ; set lsb of each byte to zero
- psrlw mm2, 1 ; abs(p1-q1)/2
-
- movq mm6, mm5 ; p0
- movq mm3, mm0 ; q0
- psubusb mm5, mm3 ; p0-=q0
- psubusb mm3, mm6 ; q0-=p0
- por mm5, mm3 ; abs(p0 - q0)
- paddusb mm5, mm5 ; abs(p0-q0)*2
- paddusb mm5, mm2 ; abs (p0 - q0) *2 + abs(p1-q1)/2
-
- mov rdx, arg(2) ;blimit ; get blimit
- movq mm7, [rdx] ; blimit
-
- psubusb mm5, mm7 ; abs (p0 - q0) *2 + abs(p1-q1)/2 > blimit
- por mm1, mm5
- pxor mm5, mm5
- pcmpeqb mm1, mm5 ; mask mm1
-
- ; mm1 = mask, mm0=q0, mm7 = blimit, t0 = abs(q0-q1) t1 = abs(p1-p0)
- ; mm6 = p0,
-
- ; calculate high edge variance
- mov rdx, arg(4) ;thresh ; get thresh
- movq mm7, [rdx] ;
- movq mm4, t0 ; get abs (q1 - q0)
- psubusb mm4, mm7
- movq mm3, t1 ; get abs (p1 - p0)
- psubusb mm3, mm7
- paddb mm4, mm3 ; abs(q1 - q0) > thresh || abs(p1 - p0) > thresh
-
- pcmpeqb mm4, mm5
-
- pcmpeqb mm5, mm5
- pxor mm4, mm5
-
-
-
- ; mm1 = mask, mm0=q0, mm7 = thresh, t0 = abs(q0-q1) t1 = abs(p1-p0)
- ; mm6 = p0, mm4=hev
- ; start work on filters
- movq mm2, [rsi+2*rax] ; p1
- movq mm7, [rdi] ; q1
- pxor mm2, [GLOBAL(t80)] ; p1 offset to convert to signed values
- pxor mm7, [GLOBAL(t80)] ; q1 offset to convert to signed values
- psubsb mm2, mm7 ; p1 - q1
-
- pxor mm6, [GLOBAL(t80)] ; offset to convert to signed values
- pxor mm0, [GLOBAL(t80)] ; offset to convert to signed values
- movq mm3, mm0 ; q0
- psubsb mm0, mm6 ; q0 - p0
- paddsb mm2, mm0 ; 1 * (q0 - p0) + (p1 - q1)
- paddsb mm2, mm0 ; 2 * (q0 - p0)
- paddsb mm2, mm0 ; 3 * (q0 - p0) + (p1 - q1)
- pand mm1, mm2 ; mask filter values we don't care about
-
-
- ; mm1 = vp8_filter, mm4=hev, mm6=ps0, mm3=qs0
- movq mm2, mm1 ; vp8_filter
- pand mm2, mm4; ; Filter2 = vp8_filter & hev
-
- movq mm5, mm2 ;
- paddsb mm5, [GLOBAL(t3)];
-
- pxor mm0, mm0 ; 0
- pxor mm7, mm7 ; 0
-
- punpcklbw mm0, mm5 ; e0f0g0h0
- psraw mm0, 11 ; sign extended shift right by 3
- punpckhbw mm7, mm5 ; a0b0c0d0
- psraw mm7, 11 ; sign extended shift right by 3
- packsswb mm0, mm7 ; Filter2 >>=3;
-
- movq mm5, mm0 ; Filter2
-
- paddsb mm2, [GLOBAL(t4)] ; vp8_signed_char_clamp(Filter2 + 4)
- pxor mm0, mm0 ; 0
- pxor mm7, mm7 ; 0
-
- punpcklbw mm0, mm2 ; e0f0g0h0
- psraw mm0, 11 ; sign extended shift right by 3
- punpckhbw mm7, mm2 ; a0b0c0d0
- psraw mm7, 11 ; sign extended shift right by 3
- packsswb mm0, mm7 ; Filter2 >>=3;
-
- ; mm0= filter2 mm1 = vp8_filter, mm3 =qs0 mm5=s mm4 =hev mm6=ps0
- psubsb mm3, mm0 ; qs0 =qs0 - filter1
- paddsb mm6, mm5 ; ps0 =ps0 + Fitler2
-
- ; mm1=vp8_filter, mm3=qs0, mm4 =hev mm6=ps0
- ; vp8_filter &= ~hev;
- ; Filter2 = vp8_filter;
- pandn mm4, mm1 ; vp8_filter&=~hev
-
-
- ; mm3=qs0, mm4=filter2, mm6=ps0
-
- ; u = vp8_signed_char_clamp((63 + Filter2 * 27)>>7);
- ; s = vp8_signed_char_clamp(qs0 - u);
- ; *oq0 = s^0x80;
- ; s = vp8_signed_char_clamp(ps0 + u);
- ; *op0 = s^0x80;
- pxor mm0, mm0
-
- pxor mm1, mm1
- pxor mm2, mm2
- punpcklbw mm1, mm4
- punpckhbw mm2, mm4
- pmulhw mm1, [GLOBAL(s27)]
- pmulhw mm2, [GLOBAL(s27)]
- paddw mm1, [GLOBAL(s63)]
- paddw mm2, [GLOBAL(s63)]
- psraw mm1, 7
- psraw mm2, 7
- packsswb mm1, mm2
-
- psubsb mm3, mm1
- paddsb mm6, mm1
-
- pxor mm3, [GLOBAL(t80)]
- pxor mm6, [GLOBAL(t80)]
- movq [rsi+rax], mm6
- movq [rsi], mm3
-
- ; roughly 2/7th difference across boundary
- ; u = vp8_signed_char_clamp((63 + Filter2 * 18)>>7);
- ; s = vp8_signed_char_clamp(qs1 - u);
- ; *oq1 = s^0x80;
- ; s = vp8_signed_char_clamp(ps1 + u);
- ; *op1 = s^0x80;
- pxor mm1, mm1
- pxor mm2, mm2
- punpcklbw mm1, mm4
- punpckhbw mm2, mm4
- pmulhw mm1, [GLOBAL(s18)]
- pmulhw mm2, [GLOBAL(s18)]
- paddw mm1, [GLOBAL(s63)]
- paddw mm2, [GLOBAL(s63)]
- psraw mm1, 7
- psraw mm2, 7
- packsswb mm1, mm2
-
- movq mm3, [rdi]
- movq mm6, [rsi+rax*2] ; p1
-
- pxor mm3, [GLOBAL(t80)]
- pxor mm6, [GLOBAL(t80)]
-
- paddsb mm6, mm1
- psubsb mm3, mm1
-
- pxor mm6, [GLOBAL(t80)]
- pxor mm3, [GLOBAL(t80)]
- movq [rdi], mm3
- movq [rsi+rax*2], mm6
-
- ; roughly 1/7th difference across boundary
- ; u = vp8_signed_char_clamp((63 + Filter2 * 9)>>7);
- ; s = vp8_signed_char_clamp(qs2 - u);
- ; *oq2 = s^0x80;
- ; s = vp8_signed_char_clamp(ps2 + u);
- ; *op2 = s^0x80;
- pxor mm1, mm1
- pxor mm2, mm2
- punpcklbw mm1, mm4
- punpckhbw mm2, mm4
- pmulhw mm1, [GLOBAL(s9)]
- pmulhw mm2, [GLOBAL(s9)]
- paddw mm1, [GLOBAL(s63)]
- paddw mm2, [GLOBAL(s63)]
- psraw mm1, 7
- psraw mm2, 7
- packsswb mm1, mm2
-
-
- movq mm6, [rdi+rax*4]
- neg rax
- movq mm3, [rdi+rax ]
-
- pxor mm6, [GLOBAL(t80)]
- pxor mm3, [GLOBAL(t80)]
-
- paddsb mm6, mm1
- psubsb mm3, mm1
-
- pxor mm6, [GLOBAL(t80)]
- pxor mm3, [GLOBAL(t80)]
- movq [rdi+rax ], mm3
- neg rax
- movq [rdi+rax*4], mm6
-
-;EARLY_BREAK_OUT:
- neg rax
- add rsi,8
- dec rcx
- jnz .next8_mbh
-
- add rsp, 32
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_mbloop_filter_vertical_edge_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit,
-; const char *limit,
-; const char *thresh,
-; int count
-;)
-global sym(vp8_mbloop_filter_vertical_edge_mmx) PRIVATE
-sym(vp8_mbloop_filter_vertical_edge_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 96 ; reserve 96 bytes
- %define t0 [rsp + 0] ;__declspec(align(16)) char t0[8];
- %define t1 [rsp + 16] ;__declspec(align(16)) char t1[8];
- %define srct [rsp + 32] ;__declspec(align(16)) char srct[64];
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step ; destination pitch?
-
- lea rsi, [rsi + rax*4 - 4]
-
- movsxd rcx, dword ptr arg(5) ;count
-.next8_mbv:
- lea rdi, [rsi + rax] ; rdi points to row +1 for indirect addressing
-
- ;transpose
- movq mm0, [rdi+2*rax] ; 77 76 75 74 73 72 71 70
- movq mm6, [rsi+2*rax] ; 67 66 65 64 63 62 61 60
-
- movq mm7, mm6 ; 77 76 75 74 73 72 71 70
- punpckhbw mm7, mm0 ; 77 67 76 66 75 65 74 64
-
- punpcklbw mm6, mm0 ; 73 63 72 62 71 61 70 60
- movq mm0, [rsi+rax] ; 57 56 55 54 53 52 51 50
-
- movq mm4, [rsi] ; 47 46 45 44 43 42 41 40
- movq mm5, mm4 ; 47 46 45 44 43 42 41 40
-
- punpckhbw mm5, mm0 ; 57 47 56 46 55 45 54 44
- punpcklbw mm4, mm0 ; 53 43 52 42 51 41 50 40
-
- movq mm3, mm5 ; 57 47 56 46 55 45 54 44
- punpckhwd mm5, mm7 ; 77 67 57 47 76 66 56 46
-
- punpcklwd mm3, mm7 ; 75 65 55 45 74 64 54 44
- movq mm2, mm4 ; 53 43 52 42 51 41 50 40
-
- punpckhwd mm4, mm6 ; 73 63 53 43 72 62 52 42
- punpcklwd mm2, mm6 ; 71 61 51 41 70 60 50 40
-
- neg rax
-
- movq mm7, [rsi+rax] ; 37 36 35 34 33 32 31 30
- movq mm6, [rsi+rax*2] ; 27 26 25 24 23 22 21 20
-
- movq mm1, mm6 ; 27 26 25 24 23 22 21 20
- punpckhbw mm6, mm7 ; 37 27 36 36 35 25 34 24
-
- punpcklbw mm1, mm7 ; 33 23 32 22 31 21 30 20
-
- movq mm7, [rsi+rax*4]; ; 07 06 05 04 03 02 01 00
- punpckhbw mm7, [rdi+rax*4] ; 17 07 16 06 15 05 14 04
-
- movq mm0, mm7 ; 17 07 16 06 15 05 14 04
- punpckhwd mm7, mm6 ; 37 27 17 07 36 26 16 06
-
- punpcklwd mm0, mm6 ; 35 25 15 05 34 24 14 04
- movq mm6, mm7 ; 37 27 17 07 36 26 16 06
-
- punpckhdq mm7, mm5 ; 77 67 57 47 37 27 17 07 = q3
- punpckldq mm6, mm5 ; 76 66 56 46 36 26 16 06 = q2
-
- lea rdx, srct
- movq mm5, mm6 ; 76 66 56 46 36 26 16 06
-
- movq [rdx+56], mm7
- psubusb mm5, mm7 ; q2-q3
-
-
- movq [rdx+48], mm6
- psubusb mm7, mm6 ; q3-q2
-
- por mm7, mm5; ; mm7=abs (q3-q2)
- movq mm5, mm0 ; 35 25 15 05 34 24 14 04
-
- punpckhdq mm5, mm3 ; 75 65 55 45 35 25 15 05 = q1
- punpckldq mm0, mm3 ; 74 64 54 44 34 24 15 04 = q0
-
- movq mm3, mm5 ; 75 65 55 45 35 25 15 05 = q1
- psubusb mm3, mm6 ; q1-q2
-
- psubusb mm6, mm5 ; q2-q1
- por mm6, mm3 ; mm6=abs(q2-q1)
-
- movq [rdx+40], mm5 ; save q1
- movq [rdx+32], mm0 ; save q0
-
- movq mm3, [rsi+rax*4] ; 07 06 05 04 03 02 01 00
- punpcklbw mm3, [rdi+rax*4] ; 13 03 12 02 11 01 10 00
-
- movq mm0, mm3 ; 13 03 12 02 11 01 10 00
- punpcklwd mm0, mm1 ; 31 21 11 01 30 20 10 00
-
- punpckhwd mm3, mm1 ; 33 23 13 03 32 22 12 02
- movq mm1, mm0 ; 31 21 11 01 30 20 10 00
-
- punpckldq mm0, mm2 ; 70 60 50 40 30 20 10 00 =p3
- punpckhdq mm1, mm2 ; 71 61 51 41 31 21 11 01 =p2
-
- movq [rdx], mm0 ; save p3
- movq [rdx+8], mm1 ; save p2
-
- movq mm2, mm1 ; 71 61 51 41 31 21 11 01 =p2
- psubusb mm2, mm0 ; p2-p3
-
- psubusb mm0, mm1 ; p3-p2
- por mm0, mm2 ; mm0=abs(p3-p2)
-
- movq mm2, mm3 ; 33 23 13 03 32 22 12 02
- punpckldq mm2, mm4 ; 72 62 52 42 32 22 12 02 = p1
-
- punpckhdq mm3, mm4 ; 73 63 53 43 33 23 13 03 = p0
- movq [rdx+24], mm3 ; save p0
-
- movq [rdx+16], mm2 ; save p1
- movq mm5, mm2 ; mm5 = p1
-
- psubusb mm2, mm1 ; p1-p2
- psubusb mm1, mm5 ; p2-p1
-
- por mm1, mm2 ; mm1=abs(p2-p1)
- mov rdx, arg(3) ;limit
-
- movq mm4, [rdx] ; mm4 = limit
- psubusb mm7, mm4 ; abs(q3-q2) > limit
-
- psubusb mm0, mm4 ; abs(p3-p2) > limit
- psubusb mm1, mm4 ; abs(p2-p1) > limit
-
- psubusb mm6, mm4 ; abs(q2-q1) > limit
- por mm7, mm6 ; or
-
- por mm0, mm1 ;
- por mm0, mm7 ; abs(q3-q2) > limit || abs(p3-p2) > limit ||abs(p2-p1) > limit || abs(q2-q1) > limit
-
- movq mm1, mm5 ; p1
-
- movq mm7, mm3 ; mm3=mm7=p0
- psubusb mm7, mm5 ; p0 - p1
-
- psubusb mm5, mm3 ; p1 - p0
- por mm5, mm7 ; abs(p1-p0)
-
- movq t0, mm5 ; save abs(p1-p0)
- lea rdx, srct
-
- psubusb mm5, mm4 ; mm5 = abs(p1-p0) > limit
- por mm0, mm5 ; mm0=mask
-
- movq mm5, [rdx+32] ; mm5=q0
- movq mm7, [rdx+40] ; mm7=q1
-
- movq mm6, mm5 ; mm6=q0
- movq mm2, mm7 ; q1
- psubusb mm5, mm7 ; q0-q1
-
- psubusb mm7, mm6 ; q1-q0
- por mm7, mm5 ; abs(q1-q0)
-
- movq t1, mm7 ; save abs(q1-q0)
- psubusb mm7, mm4 ; mm7=abs(q1-q0)> limit
-
- por mm0, mm7 ; mask
-
- movq mm5, mm2 ; q1
- psubusb mm5, mm1 ; q1-=p1
- psubusb mm1, mm2 ; p1-=q1
- por mm5, mm1 ; abs(p1-q1)
- pand mm5, [GLOBAL(tfe)] ; set lsb of each byte to zero
- psrlw mm5, 1 ; abs(p1-q1)/2
-
- mov rdx, arg(2) ;blimit ;
-
- movq mm4, [rdx] ;blimit
- movq mm1, mm3 ; mm1=mm3=p0
-
- movq mm7, mm6 ; mm7=mm6=q0
- psubusb mm1, mm7 ; p0-q0
-
- psubusb mm7, mm3 ; q0-p0
- por mm1, mm7 ; abs(q0-p0)
- paddusb mm1, mm1 ; abs(q0-p0)*2
- paddusb mm1, mm5 ; abs (p0 - q0) *2 + abs(p1-q1)/2
-
- psubusb mm1, mm4 ; abs (p0 - q0) *2 + abs(p1-q1)/2 > blimit
- por mm1, mm0; ; mask
-
- pxor mm0, mm0
- pcmpeqb mm1, mm0
-
- ; calculate high edge variance
- mov rdx, arg(4) ;thresh ; get thresh
- movq mm7, [rdx]
- ;
- movq mm4, t0 ; get abs (q1 - q0)
- psubusb mm4, mm7 ; abs(q1 - q0) > thresh
-
- movq mm3, t1 ; get abs (p1 - p0)
- psubusb mm3, mm7 ; abs(p1 - p0)> thresh
-
- por mm4, mm3 ; abs(q1 - q0) > thresh || abs(p1 - p0) > thresh
- pcmpeqb mm4, mm0
-
- pcmpeqb mm0, mm0
- pxor mm4, mm0
-
-
-
-
- ; start work on filters
- lea rdx, srct
-
- ; start work on filters
- movq mm2, [rdx+16] ; p1
- movq mm7, [rdx+40] ; q1
- pxor mm2, [GLOBAL(t80)] ; p1 offset to convert to signed values
- pxor mm7, [GLOBAL(t80)] ; q1 offset to convert to signed values
- psubsb mm2, mm7 ; p1 - q1
-
- movq mm6, [rdx+24] ; p0
- movq mm0, [rdx+32] ; q0
- pxor mm6, [GLOBAL(t80)] ; offset to convert to signed values
- pxor mm0, [GLOBAL(t80)] ; offset to convert to signed values
-
- movq mm3, mm0 ; q0
- psubsb mm0, mm6 ; q0 - p0
- paddsb mm2, mm0 ; 1 * (q0 - p0) + (p1 - q1)
- paddsb mm2, mm0 ; 2 * (q0 - p0)
- paddsb mm2, mm0 ; 3 * (q0 - p0) + (p1 - q1)
- pand mm1, mm2 ; mask filter values we don't care about
-
- ; mm1 = vp8_filter, mm4=hev, mm6=ps0, mm3=qs0
- movq mm2, mm1 ; vp8_filter
- pand mm2, mm4; ; Filter2 = vp8_filter & hev
-
- movq mm5, mm2 ;
- paddsb mm5, [GLOBAL(t3)];
-
- pxor mm0, mm0 ; 0
- pxor mm7, mm7 ; 0
-
- punpcklbw mm0, mm5 ; e0f0g0h0
- psraw mm0, 11 ; sign extended shift right by 3
- punpckhbw mm7, mm5 ; a0b0c0d0
- psraw mm7, 11 ; sign extended shift right by 3
- packsswb mm0, mm7 ; Filter2 >>=3;
-
- movq mm5, mm0 ; Filter2
-
- paddsb mm2, [GLOBAL(t4)] ; vp8_signed_char_clamp(Filter2 + 4)
- pxor mm0, mm0 ; 0
- pxor mm7, mm7 ; 0
-
- punpcklbw mm0, mm2 ; e0f0g0h0
- psraw mm0, 11 ; sign extended shift right by 3
- punpckhbw mm7, mm2 ; a0b0c0d0
- psraw mm7, 11 ; sign extended shift right by 3
- packsswb mm0, mm7 ; Filter2 >>=3;
-
- ; mm0= filter2 mm1 = vp8_filter, mm3 =qs0 mm5=s mm4 =hev mm6=ps0
- psubsb mm3, mm0 ; qs0 =qs0 - filter1
- paddsb mm6, mm5 ; ps0 =ps0 + Fitler2
-
- ; mm1=vp8_filter, mm3=qs0, mm4 =hev mm6=ps0
- ; vp8_filter &= ~hev;
- ; Filter2 = vp8_filter;
- pandn mm4, mm1 ; vp8_filter&=~hev
-
-
- ; mm3=qs0, mm4=filter2, mm6=ps0
-
- ; u = vp8_signed_char_clamp((63 + Filter2 * 27)>>7);
- ; s = vp8_signed_char_clamp(qs0 - u);
- ; *oq0 = s^0x80;
- ; s = vp8_signed_char_clamp(ps0 + u);
- ; *op0 = s^0x80;
- pxor mm0, mm0
-
- pxor mm1, mm1
- pxor mm2, mm2
- punpcklbw mm1, mm4
- punpckhbw mm2, mm4
- pmulhw mm1, [GLOBAL(s27)]
- pmulhw mm2, [GLOBAL(s27)]
- paddw mm1, [GLOBAL(s63)]
- paddw mm2, [GLOBAL(s63)]
- psraw mm1, 7
- psraw mm2, 7
- packsswb mm1, mm2
-
- psubsb mm3, mm1
- paddsb mm6, mm1
-
- pxor mm3, [GLOBAL(t80)]
- pxor mm6, [GLOBAL(t80)]
- movq [rdx+24], mm6
- movq [rdx+32], mm3
-
- ; roughly 2/7th difference across boundary
- ; u = vp8_signed_char_clamp((63 + Filter2 * 18)>>7);
- ; s = vp8_signed_char_clamp(qs1 - u);
- ; *oq1 = s^0x80;
- ; s = vp8_signed_char_clamp(ps1 + u);
- ; *op1 = s^0x80;
- pxor mm1, mm1
- pxor mm2, mm2
- punpcklbw mm1, mm4
- punpckhbw mm2, mm4
- pmulhw mm1, [GLOBAL(s18)]
- pmulhw mm2, [GLOBAL(s18)]
- paddw mm1, [GLOBAL(s63)]
- paddw mm2, [GLOBAL(s63)]
- psraw mm1, 7
- psraw mm2, 7
- packsswb mm1, mm2
-
- movq mm3, [rdx + 40]
- movq mm6, [rdx + 16] ; p1
- pxor mm3, [GLOBAL(t80)]
- pxor mm6, [GLOBAL(t80)]
-
- paddsb mm6, mm1
- psubsb mm3, mm1
-
- pxor mm6, [GLOBAL(t80)]
- pxor mm3, [GLOBAL(t80)]
- movq [rdx + 40], mm3
- movq [rdx + 16], mm6
-
- ; roughly 1/7th difference across boundary
- ; u = vp8_signed_char_clamp((63 + Filter2 * 9)>>7);
- ; s = vp8_signed_char_clamp(qs2 - u);
- ; *oq2 = s^0x80;
- ; s = vp8_signed_char_clamp(ps2 + u);
- ; *op2 = s^0x80;
- pxor mm1, mm1
- pxor mm2, mm2
- punpcklbw mm1, mm4
- punpckhbw mm2, mm4
- pmulhw mm1, [GLOBAL(s9)]
- pmulhw mm2, [GLOBAL(s9)]
- paddw mm1, [GLOBAL(s63)]
- paddw mm2, [GLOBAL(s63)]
- psraw mm1, 7
- psraw mm2, 7
- packsswb mm1, mm2
-
- movq mm6, [rdx+ 8]
- movq mm3, [rdx+48]
-
- pxor mm6, [GLOBAL(t80)]
- pxor mm3, [GLOBAL(t80)]
-
- paddsb mm6, mm1
- psubsb mm3, mm1
-
- pxor mm6, [GLOBAL(t80)] ; mm6 = 71 61 51 41 31 21 11 01
- pxor mm3, [GLOBAL(t80)] ; mm3 = 76 66 56 46 36 26 15 06
-
- ; transpose and write back
- movq mm0, [rdx] ; mm0 = 70 60 50 40 30 20 10 00
- movq mm1, mm0 ; mm0 = 70 60 50 40 30 20 10 00
-
- punpcklbw mm0, mm6 ; mm0 = 31 30 21 20 11 10 01 00
- punpckhbw mm1, mm6 ; mm3 = 71 70 61 60 51 50 41 40
-
- movq mm2, [rdx+16] ; mm2 = 72 62 52 42 32 22 12 02
- movq mm6, mm2 ; mm3 = 72 62 52 42 32 22 12 02
-
- punpcklbw mm2, [rdx+24] ; mm2 = 33 32 23 22 13 12 03 02
- punpckhbw mm6, [rdx+24] ; mm3 = 73 72 63 62 53 52 43 42
-
- movq mm5, mm0 ; mm5 = 31 30 21 20 11 10 01 00
- punpcklwd mm0, mm2 ; mm0 = 13 12 11 10 03 02 01 00
-
- punpckhwd mm5, mm2 ; mm5 = 33 32 31 30 23 22 21 20
- movq mm4, mm1 ; mm4 = 71 70 61 60 51 50 41 40
-
- punpcklwd mm1, mm6 ; mm1 = 53 52 51 50 43 42 41 40
- punpckhwd mm4, mm6 ; mm4 = 73 72 71 70 63 62 61 60
-
- movq mm2, [rdx+32] ; mm2 = 74 64 54 44 34 24 14 04
- punpcklbw mm2, [rdx+40] ; mm2 = 35 34 25 24 15 14 05 04
-
- movq mm6, mm3 ; mm6 = 76 66 56 46 36 26 15 06
- punpcklbw mm6, [rdx+56] ; mm6 = 37 36 27 26 17 16 07 06
-
- movq mm7, mm2 ; mm7 = 35 34 25 24 15 14 05 04
- punpcklwd mm2, mm6 ; mm2 = 17 16 15 14 07 06 05 04
-
- punpckhwd mm7, mm6 ; mm7 = 37 36 35 34 27 26 25 24
- movq mm6, mm0 ; mm6 = 13 12 11 10 03 02 01 00
-
- punpckldq mm0, mm2 ; mm0 = 07 06 05 04 03 02 01 00
- punpckhdq mm6, mm2 ; mm6 = 17 16 15 14 13 12 11 10
-
- movq [rsi+rax*4], mm0 ; write out
- movq [rdi+rax*4], mm6 ; write out
-
- movq mm0, mm5 ; mm0 = 33 32 31 30 23 22 21 20
- punpckldq mm0, mm7 ; mm0 = 27 26 25 24 23 22 20 20
-
- punpckhdq mm5, mm7 ; mm5 = 37 36 35 34 33 32 31 30
- movq [rsi+rax*2], mm0 ; write out
-
- movq [rdi+rax*2], mm5 ; write out
- movq mm2, [rdx+32] ; mm2 = 74 64 54 44 34 24 14 04
-
- punpckhbw mm2, [rdx+40] ; mm2 = 75 74 65 64 54 54 45 44
- punpckhbw mm3, [rdx+56] ; mm3 = 77 76 67 66 57 56 47 46
-
- movq mm5, mm2 ; mm5 = 75 74 65 64 54 54 45 44
- punpcklwd mm2, mm3 ; mm2 = 57 56 55 54 47 46 45 44
-
- punpckhwd mm5, mm3 ; mm5 = 77 76 75 74 67 66 65 64
- movq mm0, mm1 ; mm0= 53 52 51 50 43 42 41 40
-
- movq mm3, mm4 ; mm4 = 73 72 71 70 63 62 61 60
- punpckldq mm0, mm2 ; mm0 = 47 46 45 44 43 42 41 40
-
- punpckhdq mm1, mm2 ; mm1 = 57 56 55 54 53 52 51 50
- movq [rsi], mm0 ; write out
-
- movq [rdi], mm1 ; write out
- neg rax
-
- punpckldq mm3, mm5 ; mm3 = 67 66 65 64 63 62 61 60
- punpckhdq mm4, mm5 ; mm4 = 77 76 75 74 73 72 71 60
-
- movq [rsi+rax*2], mm3
- movq [rdi+rax*2], mm4
-
- lea rsi, [rsi+rax*8]
- dec rcx
-
- jnz .next8_mbv
-
- add rsp, 96
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_loop_filter_simple_horizontal_edge_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit
-;)
-global sym(vp8_loop_filter_simple_horizontal_edge_mmx) PRIVATE
-sym(vp8_loop_filter_simple_horizontal_edge_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 3
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step ; destination pitch?
-
- mov rcx, 2 ; count
-.nexts8_h:
- mov rdx, arg(2) ;blimit ; get blimit
- movq mm3, [rdx] ;
-
- mov rdi, rsi ; rdi points to row +1 for indirect addressing
- add rdi, rax
- neg rax
-
- ; calculate mask
- movq mm1, [rsi+2*rax] ; p1
- movq mm0, [rdi] ; q1
- movq mm2, mm1
- movq mm7, mm0
- movq mm4, mm0
- psubusb mm0, mm1 ; q1-=p1
- psubusb mm1, mm4 ; p1-=q1
- por mm1, mm0 ; abs(p1-q1)
- pand mm1, [GLOBAL(tfe)] ; set lsb of each byte to zero
- psrlw mm1, 1 ; abs(p1-q1)/2
-
- movq mm5, [rsi+rax] ; p0
- movq mm4, [rsi] ; q0
- movq mm0, mm4 ; q0
- movq mm6, mm5 ; p0
- psubusb mm5, mm4 ; p0-=q0
- psubusb mm4, mm6 ; q0-=p0
- por mm5, mm4 ; abs(p0 - q0)
- paddusb mm5, mm5 ; abs(p0-q0)*2
- paddusb mm5, mm1 ; abs (p0 - q0) *2 + abs(p1-q1)/2
-
- psubusb mm5, mm3 ; abs(p0 - q0) *2 + abs(p1-q1)/2 > blimit
- pxor mm3, mm3
- pcmpeqb mm5, mm3
-
- ; start work on filters
- pxor mm2, [GLOBAL(t80)] ; p1 offset to convert to signed values
- pxor mm7, [GLOBAL(t80)] ; q1 offset to convert to signed values
- psubsb mm2, mm7 ; p1 - q1
-
- pxor mm6, [GLOBAL(t80)] ; offset to convert to signed values
- pxor mm0, [GLOBAL(t80)] ; offset to convert to signed values
- movq mm3, mm0 ; q0
- psubsb mm0, mm6 ; q0 - p0
- paddsb mm2, mm0 ; p1 - q1 + 1 * (q0 - p0)
- paddsb mm2, mm0 ; p1 - q1 + 2 * (q0 - p0)
- paddsb mm2, mm0 ; p1 - q1 + 3 * (q0 - p0)
- pand mm5, mm2 ; mask filter values we don't care about
-
- ; do + 4 side
- paddsb mm5, [GLOBAL(t4)] ; 3* (q0 - p0) + (p1 - q1) + 4
-
- movq mm0, mm5 ; get a copy of filters
- psllw mm0, 8 ; shift left 8
- psraw mm0, 3 ; arithmetic shift right 11
- psrlw mm0, 8
- movq mm1, mm5 ; get a copy of filters
- psraw mm1, 11 ; arithmetic shift right 11
- psllw mm1, 8 ; shift left 8 to put it back
-
- por mm0, mm1 ; put the two together to get result
-
- psubsb mm3, mm0 ; q0-= q0 add
- pxor mm3, [GLOBAL(t80)] ; unoffset
- movq [rsi], mm3 ; write back
-
-
- ; now do +3 side
- psubsb mm5, [GLOBAL(t1s)] ; +3 instead of +4
-
- movq mm0, mm5 ; get a copy of filters
- psllw mm0, 8 ; shift left 8
- psraw mm0, 3 ; arithmetic shift right 11
- psrlw mm0, 8
- psraw mm5, 11 ; arithmetic shift right 11
- psllw mm5, 8 ; shift left 8 to put it back
- por mm0, mm5 ; put the two together to get result
-
-
- paddsb mm6, mm0 ; p0+= p0 add
- pxor mm6, [GLOBAL(t80)] ; unoffset
- movq [rsi+rax], mm6 ; write back
-
- add rsi,8
- neg rax
- dec rcx
- jnz .nexts8_h
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-;void vp8_loop_filter_simple_vertical_edge_mmx
-;(
-; unsigned char *src_ptr,
-; int src_pixel_step,
-; const char *blimit
-;)
-global sym(vp8_loop_filter_simple_vertical_edge_mmx) PRIVATE
-sym(vp8_loop_filter_simple_vertical_edge_mmx):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 3
- GET_GOT rbx
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 32 ; reserve 32 bytes
- %define t0 [rsp + 0] ;__declspec(align(16)) char t0[8];
- %define t1 [rsp + 16] ;__declspec(align(16)) char t1[8];
-
- mov rsi, arg(0) ;src_ptr
- movsxd rax, dword ptr arg(1) ;src_pixel_step ; destination pitch?
-
- lea rsi, [rsi + rax*4- 2]; ;
- mov rcx, 2 ; count
-.nexts8_v:
-
- lea rdi, [rsi + rax];
- movd mm0, [rdi + rax * 2] ; xx xx xx xx 73 72 71 70
-
- movd mm6, [rsi + rax * 2] ; xx xx xx xx 63 62 61 60
- punpcklbw mm6, mm0 ; 73 63 72 62 71 61 70 60
-
- movd mm0, [rsi + rax] ; xx xx xx xx 53 52 51 50
- movd mm4, [rsi] ; xx xx xx xx 43 42 41 40
-
- punpcklbw mm4, mm0 ; 53 43 52 42 51 41 50 40
- movq mm5, mm4 ; 53 43 52 42 51 41 50 40
-
- punpcklwd mm4, mm6 ; 71 61 51 41 70 60 50 40
- punpckhwd mm5, mm6 ; 73 63 53 43 72 62 52 42
-
- neg rax
-
- movd mm7, [rsi + rax] ; xx xx xx xx 33 32 31 30
- movd mm6, [rsi + rax * 2] ; xx xx xx xx 23 22 21 20
-
- punpcklbw mm6, mm7 ; 33 23 32 22 31 21 30 20
- movd mm1, [rdi + rax * 4] ; xx xx xx xx 13 12 11 10
-
- movd mm0, [rsi + rax * 4] ; xx xx xx xx 03 02 01 00
- punpcklbw mm0, mm1 ; 13 03 12 02 11 01 10 00
-
- movq mm2, mm0 ; 13 03 12 02 11 01 10 00
- punpcklwd mm0, mm6 ; 31 21 11 01 30 20 10 00
-
- punpckhwd mm2, mm6 ; 33 23 13 03 32 22 12 02
- movq mm1, mm0 ; 13 03 12 02 11 01 10 00
-
- punpckldq mm0, mm4 ; 70 60 50 40 30 20 10 00 = p1
- movq mm3, mm2 ; 33 23 13 03 32 22 12 02
-
- punpckhdq mm1, mm4 ; 71 61 51 41 31 21 11 01 = p0
- punpckldq mm2, mm5 ; 72 62 52 42 32 22 12 02 = q0
-
- punpckhdq mm3, mm5 ; 73 63 53 43 33 23 13 03 = q1
-
-
- ; calculate mask
- movq mm6, mm0 ; p1
- movq mm7, mm3 ; q1
- psubusb mm7, mm6 ; q1-=p1
- psubusb mm6, mm3 ; p1-=q1
- por mm6, mm7 ; abs(p1-q1)
- pand mm6, [GLOBAL(tfe)] ; set lsb of each byte to zero
- psrlw mm6, 1 ; abs(p1-q1)/2
-
- movq mm5, mm1 ; p0
- movq mm4, mm2 ; q0
-
- psubusb mm5, mm2 ; p0-=q0
- psubusb mm4, mm1 ; q0-=p0
-
- por mm5, mm4 ; abs(p0 - q0)
- paddusb mm5, mm5 ; abs(p0-q0)*2
- paddusb mm5, mm6 ; abs (p0 - q0) *2 + abs(p1-q1)/2
-
- mov rdx, arg(2) ;blimit ; get blimit
- movq mm7, [rdx]
-
- psubusb mm5, mm7 ; abs(p0 - q0) *2 + abs(p1-q1)/2 > blimit
- pxor mm7, mm7
- pcmpeqb mm5, mm7 ; mm5 = mask
-
- ; start work on filters
- movq t0, mm0
- movq t1, mm3
-
- pxor mm0, [GLOBAL(t80)] ; p1 offset to convert to signed values
- pxor mm3, [GLOBAL(t80)] ; q1 offset to convert to signed values
-
- psubsb mm0, mm3 ; p1 - q1
- movq mm6, mm1 ; p0
-
- movq mm7, mm2 ; q0
- pxor mm6, [GLOBAL(t80)] ; offset to convert to signed values
-
- pxor mm7, [GLOBAL(t80)] ; offset to convert to signed values
- movq mm3, mm7 ; offseted ; q0
-
- psubsb mm7, mm6 ; q0 - p0
- paddsb mm0, mm7 ; p1 - q1 + 1 * (q0 - p0)
-
- paddsb mm0, mm7 ; p1 - q1 + 2 * (q0 - p0)
- paddsb mm0, mm7 ; p1 - q1 + 3 * (q0 - p0)
-
- pand mm5, mm0 ; mask filter values we don't care about
-
- paddsb mm5, [GLOBAL(t4)] ; 3* (q0 - p0) + (p1 - q1) + 4
-
- movq mm0, mm5 ; get a copy of filters
- psllw mm0, 8 ; shift left 8
- psraw mm0, 3 ; arithmetic shift right 11
- psrlw mm0, 8
-
- movq mm7, mm5 ; get a copy of filters
- psraw mm7, 11 ; arithmetic shift right 11
- psllw mm7, 8 ; shift left 8 to put it back
-
- por mm0, mm7 ; put the two together to get result
-
- psubsb mm3, mm0 ; q0-= q0sz add
- pxor mm3, [GLOBAL(t80)] ; unoffset
-
- ; now do +3 side
- psubsb mm5, [GLOBAL(t1s)] ; +3 instead of +4
-
- movq mm0, mm5 ; get a copy of filters
- psllw mm0, 8 ; shift left 8
- psraw mm0, 3 ; arithmetic shift right 11
- psrlw mm0, 8
-
- psraw mm5, 11 ; arithmetic shift right 11
- psllw mm5, 8 ; shift left 8 to put it back
- por mm0, mm5 ; put the two together to get result
-
- paddsb mm6, mm0 ; p0+= p0 add
- pxor mm6, [GLOBAL(t80)] ; unoffset
-
-
- movq mm0, t0
- movq mm4, t1
-
- ; mm0 = 70 60 50 40 30 20 10 00
- ; mm6 = 71 61 51 41 31 21 11 01
- ; mm3 = 72 62 52 42 32 22 12 02
- ; mm4 = 73 63 53 43 33 23 13 03
- ; transpose back to write out
-
- movq mm1, mm0 ;
- punpcklbw mm0, mm6 ; 31 30 21 20 11 10 01 00
-
- punpckhbw mm1, mm6 ; 71 70 61 60 51 50 41 40
- movq mm2, mm3 ;
-
- punpcklbw mm2, mm4 ; 33 32 23 22 13 12 03 02
- movq mm5, mm1 ; 71 70 61 60 51 50 41 40
-
- punpckhbw mm3, mm4 ; 73 72 63 62 53 52 43 42
- movq mm6, mm0 ; 31 30 21 20 11 10 01 00
-
- punpcklwd mm0, mm2 ; 13 12 11 10 03 02 01 00
- punpckhwd mm6, mm2 ; 33 32 31 30 23 22 21 20
-
- movd [rsi+rax*4], mm0 ; write 03 02 01 00
- punpcklwd mm1, mm3 ; 53 52 51 50 43 42 41 40
-
- psrlq mm0, 32 ; xx xx xx xx 13 12 11 10
- punpckhwd mm5, mm3 ; 73 72 71 70 63 62 61 60
-
- movd [rdi+rax*4], mm0 ; write 13 12 11 10
- movd [rsi+rax*2], mm6 ; write 23 22 21 20
-
- psrlq mm6, 32 ; 33 32 31 30
- movd [rsi], mm1 ; write 43 42 41 40
-
- movd [rsi + rax], mm6 ; write 33 32 31 30
- neg rax
-
- movd [rsi + rax*2], mm5 ; write 63 62 61 60
- psrlq mm1, 32 ; 53 52 51 50
-
- movd [rdi], mm1 ; write out 53 52 51 50
- psrlq mm5, 32 ; 73 72 71 70
-
- movd [rdi + rax*2], mm5 ; write 73 72 71 70
-
- lea rsi, [rsi+rax*8] ; next 8
-
- dec rcx
- jnz .nexts8_v
-
- add rsp, 32
- pop rsp
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_GOT
- UNSHADOW_ARGS
- pop rbp
- ret
-
-
-
-;void fast_loop_filter_vertical_edges_mmx(unsigned char *y_ptr,
-; int y_stride,
-; loop_filter_info *lfi)
-;{
-;
-;
-; vp8_loop_filter_simple_vertical_edge_mmx(y_ptr+4, y_stride, lfi->flim,lfi->lim,lfi->thr,2);
-; vp8_loop_filter_simple_vertical_edge_mmx(y_ptr+8, y_stride, lfi->flim,lfi->lim,lfi->thr,2);
-; vp8_loop_filter_simple_vertical_edge_mmx(y_ptr+12, y_stride, lfi->flim,lfi->lim,lfi->thr,2);
-;}
-
-SECTION_RODATA
-align 16
-tfe:
- times 8 db 0xfe
-align 16
-t80:
- times 8 db 0x80
-align 16
-t1s:
- times 8 db 0x01
-align 16
-t3:
- times 8 db 0x03
-align 16
-t4:
- times 8 db 0x04
-align 16
-ones:
- times 4 dw 0x0001
-align 16
-s27:
- times 4 dw 0x1b00
-align 16
-s18:
- times 4 dw 0x1200
-align 16
-s9:
- times 4 dw 0x0900
-align 16
-s63:
- times 4 dw 0x003f
diff --git a/thirdparty/libvpx/vp8/decoder/dboolhuff.c b/thirdparty/libvpx/vp8/decoder/dboolhuff.c
deleted file mode 100644
index 5cdd2a2491..0000000000
--- a/thirdparty/libvpx/vp8/decoder/dboolhuff.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "dboolhuff.h"
-#include "vp8/common/common.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-
-int vp8dx_start_decode(BOOL_DECODER *br,
- const unsigned char *source,
- unsigned int source_sz,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state)
-{
- br->user_buffer_end = source+source_sz;
- br->user_buffer = source;
- br->value = 0;
- br->count = -8;
- br->range = 255;
- br->decrypt_cb = decrypt_cb;
- br->decrypt_state = decrypt_state;
-
- if (source_sz && !source)
- return 1;
-
- /* Populate the buffer */
- vp8dx_bool_decoder_fill(br);
-
- return 0;
-}
-
-void vp8dx_bool_decoder_fill(BOOL_DECODER *br)
-{
- const unsigned char *bufptr = br->user_buffer;
- VP8_BD_VALUE value = br->value;
- int count = br->count;
- int shift = VP8_BD_VALUE_SIZE - CHAR_BIT - (count + CHAR_BIT);
- size_t bytes_left = br->user_buffer_end - bufptr;
- size_t bits_left = bytes_left * CHAR_BIT;
- int x = shift + CHAR_BIT - (int)bits_left;
- int loop_end = 0;
- unsigned char decrypted[sizeof(VP8_BD_VALUE) + 1];
-
- if (br->decrypt_cb) {
- size_t n = VPXMIN(sizeof(decrypted), bytes_left);
- br->decrypt_cb(br->decrypt_state, bufptr, decrypted, (int)n);
- bufptr = decrypted;
- }
-
- if(x >= 0)
- {
- count += VP8_LOTS_OF_BITS;
- loop_end = x;
- }
-
- if (x < 0 || bits_left)
- {
- while(shift >= loop_end)
- {
- count += CHAR_BIT;
- value |= (VP8_BD_VALUE)*bufptr << shift;
- ++bufptr;
- ++br->user_buffer;
- shift -= CHAR_BIT;
- }
- }
-
- br->value = value;
- br->count = count;
-}
diff --git a/thirdparty/libvpx/vp8/decoder/dboolhuff.h b/thirdparty/libvpx/vp8/decoder/dboolhuff.h
deleted file mode 100644
index 1b1bbf868e..0000000000
--- a/thirdparty/libvpx/vp8/decoder/dboolhuff.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_DECODER_DBOOLHUFF_H_
-#define VP8_DECODER_DBOOLHUFF_H_
-
-#include <stddef.h>
-#include <limits.h>
-
-#include "./vpx_config.h"
-#include "vpx_ports/mem.h"
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_integer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef size_t VP8_BD_VALUE;
-
-#define VP8_BD_VALUE_SIZE ((int)sizeof(VP8_BD_VALUE)*CHAR_BIT)
-
-/*This is meant to be a large, positive constant that can still be efficiently
- loaded as an immediate (on platforms like ARM, for example).
- Even relatively modest values like 100 would work fine.*/
-#define VP8_LOTS_OF_BITS (0x40000000)
-
-typedef struct
-{
- const unsigned char *user_buffer_end;
- const unsigned char *user_buffer;
- VP8_BD_VALUE value;
- int count;
- unsigned int range;
- vpx_decrypt_cb decrypt_cb;
- void *decrypt_state;
-} BOOL_DECODER;
-
-DECLARE_ALIGNED(16, extern const unsigned char, vp8_norm[256]);
-
-int vp8dx_start_decode(BOOL_DECODER *br,
- const unsigned char *source,
- unsigned int source_sz,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state);
-
-void vp8dx_bool_decoder_fill(BOOL_DECODER *br);
-
-
-static int vp8dx_decode_bool(BOOL_DECODER *br, int probability) {
- unsigned int bit = 0;
- VP8_BD_VALUE value;
- unsigned int split;
- VP8_BD_VALUE bigsplit;
- int count;
- unsigned int range;
-
- split = 1 + (((br->range - 1) * probability) >> 8);
-
- if(br->count < 0)
- vp8dx_bool_decoder_fill(br);
-
- value = br->value;
- count = br->count;
-
- bigsplit = (VP8_BD_VALUE)split << (VP8_BD_VALUE_SIZE - 8);
-
- range = split;
-
- if (value >= bigsplit)
- {
- range = br->range - split;
- value = value - bigsplit;
- bit = 1;
- }
-
- {
- register int shift = vp8_norm[range];
- range <<= shift;
- value <<= shift;
- count -= shift;
- }
- br->value = value;
- br->count = count;
- br->range = range;
-
- return bit;
-}
-
-static INLINE int vp8_decode_value(BOOL_DECODER *br, int bits)
-{
- int z = 0;
- int bit;
-
- for (bit = bits - 1; bit >= 0; bit--)
- {
- z |= (vp8dx_decode_bool(br, 0x80) << bit);
- }
-
- return z;
-}
-
-static INLINE int vp8dx_bool_error(BOOL_DECODER *br)
-{
- /* Check if we have reached the end of the buffer.
- *
- * Variable 'count' stores the number of bits in the 'value' buffer, minus
- * 8. The top byte is part of the algorithm, and the remainder is buffered
- * to be shifted into it. So if count == 8, the top 16 bits of 'value' are
- * occupied, 8 for the algorithm and 8 in the buffer.
- *
- * When reading a byte from the user's buffer, count is filled with 8 and
- * one byte is filled into the value buffer. When we reach the end of the
- * data, count is additionally filled with VP8_LOTS_OF_BITS. So when
- * count == VP8_LOTS_OF_BITS - 1, the user's data has been exhausted.
- */
- if ((br->count > VP8_BD_VALUE_SIZE) && (br->count < VP8_LOTS_OF_BITS))
- {
- /* We have tried to decode bits after the end of
- * stream was encountered.
- */
- return 1;
- }
-
- /* No error. */
- return 0;
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_DECODER_DBOOLHUFF_H_
diff --git a/thirdparty/libvpx/vp8/decoder/decodeframe.c b/thirdparty/libvpx/vp8/decoder/decodeframe.c
deleted file mode 100644
index 51acdbb9c8..0000000000
--- a/thirdparty/libvpx/vp8/decoder/decodeframe.c
+++ /dev/null
@@ -1,1397 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#include "./vpx_scale_rtcd.h"
-#include "onyxd_int.h"
-#include "vp8/common/header.h"
-#include "vp8/common/reconintra4x4.h"
-#include "vp8/common/reconinter.h"
-#include "detokenize.h"
-#include "vp8/common/common.h"
-#include "vp8/common/invtrans.h"
-#include "vp8/common/alloccommon.h"
-#include "vp8/common/entropymode.h"
-#include "vp8/common/quant_common.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vp8/common/reconintra.h"
-#include "vp8/common/setupintrarecon.h"
-
-#include "decodemv.h"
-#include "vp8/common/extend.h"
-#if CONFIG_ERROR_CONCEALMENT
-#include "error_concealment.h"
-#endif
-#include "vpx_mem/vpx_mem.h"
-#include "vp8/common/threading.h"
-#include "decoderthreading.h"
-#include "dboolhuff.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-
-#include <assert.h>
-#include <stdio.h>
-
-void vp8cx_init_de_quantizer(VP8D_COMP *pbi)
-{
- int Q;
- VP8_COMMON *const pc = & pbi->common;
-
- for (Q = 0; Q < QINDEX_RANGE; Q++)
- {
- pc->Y1dequant[Q][0] = (short)vp8_dc_quant(Q, pc->y1dc_delta_q);
- pc->Y2dequant[Q][0] = (short)vp8_dc2quant(Q, pc->y2dc_delta_q);
- pc->UVdequant[Q][0] = (short)vp8_dc_uv_quant(Q, pc->uvdc_delta_q);
-
- pc->Y1dequant[Q][1] = (short)vp8_ac_yquant(Q);
- pc->Y2dequant[Q][1] = (short)vp8_ac2quant(Q, pc->y2ac_delta_q);
- pc->UVdequant[Q][1] = (short)vp8_ac_uv_quant(Q, pc->uvac_delta_q);
- }
-}
-
-void vp8_mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd)
-{
- int i;
- int QIndex;
- MB_MODE_INFO *mbmi = &xd->mode_info_context->mbmi;
- VP8_COMMON *const pc = & pbi->common;
-
- /* Decide whether to use the default or alternate baseline Q value. */
- if (xd->segmentation_enabled)
- {
- /* Abs Value */
- if (xd->mb_segement_abs_delta == SEGMENT_ABSDATA)
- QIndex = xd->segment_feature_data[MB_LVL_ALT_Q][mbmi->segment_id];
-
- /* Delta Value */
- else
- QIndex = pc->base_qindex + xd->segment_feature_data[MB_LVL_ALT_Q][mbmi->segment_id];
-
- QIndex = (QIndex >= 0) ? ((QIndex <= MAXQ) ? QIndex : MAXQ) : 0; /* Clamp to valid range */
- }
- else
- QIndex = pc->base_qindex;
-
- /* Set up the macroblock dequant constants */
- xd->dequant_y1_dc[0] = 1;
- xd->dequant_y1[0] = pc->Y1dequant[QIndex][0];
- xd->dequant_y2[0] = pc->Y2dequant[QIndex][0];
- xd->dequant_uv[0] = pc->UVdequant[QIndex][0];
-
- for (i = 1; i < 16; i++)
- {
- xd->dequant_y1_dc[i] =
- xd->dequant_y1[i] = pc->Y1dequant[QIndex][1];
- xd->dequant_y2[i] = pc->Y2dequant[QIndex][1];
- xd->dequant_uv[i] = pc->UVdequant[QIndex][1];
- }
-}
-
-static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
- unsigned int mb_idx)
-{
- MB_PREDICTION_MODE mode;
- int i;
-#if CONFIG_ERROR_CONCEALMENT
- int corruption_detected = 0;
-#else
- (void)mb_idx;
-#endif
-
- if (xd->mode_info_context->mbmi.mb_skip_coeff)
- {
- vp8_reset_mb_tokens_context(xd);
- }
- else if (!vp8dx_bool_error(xd->current_bc))
- {
- int eobtotal;
- eobtotal = vp8_decode_mb_tokens(pbi, xd);
-
- /* Special case: Force the loopfilter to skip when eobtotal is zero */
- xd->mode_info_context->mbmi.mb_skip_coeff = (eobtotal==0);
- }
-
- mode = xd->mode_info_context->mbmi.mode;
-
- if (xd->segmentation_enabled)
- vp8_mb_init_dequantizer(pbi, xd);
-
-
-#if CONFIG_ERROR_CONCEALMENT
-
- if(pbi->ec_active)
- {
- int throw_residual;
- /* When we have independent partitions we can apply residual even
- * though other partitions within the frame are corrupt.
- */
- throw_residual = (!pbi->independent_partitions &&
- pbi->frame_corrupt_residual);
- throw_residual = (throw_residual || vp8dx_bool_error(xd->current_bc));
-
- if ((mb_idx >= pbi->mvs_corrupt_from_mb || throw_residual))
- {
- /* MB with corrupt residuals or corrupt mode/motion vectors.
- * Better to use the predictor as reconstruction.
- */
- pbi->frame_corrupt_residual = 1;
- memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
-
- corruption_detected = 1;
-
- /* force idct to be skipped for B_PRED and use the
- * prediction only for reconstruction
- * */
- memset(xd->eobs, 0, 25);
- }
- }
-#endif
-
- /* do prediction */
- if (xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME)
- {
- vp8_build_intra_predictors_mbuv_s(xd,
- xd->recon_above[1],
- xd->recon_above[2],
- xd->recon_left[1],
- xd->recon_left[2],
- xd->recon_left_stride[1],
- xd->dst.u_buffer, xd->dst.v_buffer,
- xd->dst.uv_stride);
-
- if (mode != B_PRED)
- {
- vp8_build_intra_predictors_mby_s(xd,
- xd->recon_above[0],
- xd->recon_left[0],
- xd->recon_left_stride[0],
- xd->dst.y_buffer,
- xd->dst.y_stride);
- }
- else
- {
- short *DQC = xd->dequant_y1;
- int dst_stride = xd->dst.y_stride;
-
- /* clear out residual eob info */
- if(xd->mode_info_context->mbmi.mb_skip_coeff)
- memset(xd->eobs, 0, 25);
-
- intra_prediction_down_copy(xd, xd->recon_above[0] + 16);
-
- for (i = 0; i < 16; i++)
- {
- BLOCKD *b = &xd->block[i];
- unsigned char *dst = xd->dst.y_buffer + b->offset;
- B_PREDICTION_MODE b_mode =
- xd->mode_info_context->bmi[i].as_mode;
- unsigned char *Above = dst - dst_stride;
- unsigned char *yleft = dst - 1;
- int left_stride = dst_stride;
- unsigned char top_left = Above[-1];
-
- vp8_intra4x4_predict(Above, yleft, left_stride, b_mode,
- dst, dst_stride, top_left);
-
- if (xd->eobs[i])
- {
- if (xd->eobs[i] > 1)
- {
- vp8_dequant_idct_add(b->qcoeff, DQC, dst, dst_stride);
- }
- else
- {
- vp8_dc_only_idct_add
- (b->qcoeff[0] * DQC[0],
- dst, dst_stride,
- dst, dst_stride);
- memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
- }
- }
- }
- }
- }
- else
- {
- vp8_build_inter_predictors_mb(xd);
- }
-
-
-#if CONFIG_ERROR_CONCEALMENT
- if (corruption_detected)
- {
- return;
- }
-#endif
-
- if(!xd->mode_info_context->mbmi.mb_skip_coeff)
- {
- /* dequantization and idct */
- if (mode != B_PRED)
- {
- short *DQC = xd->dequant_y1;
-
- if (mode != SPLITMV)
- {
- BLOCKD *b = &xd->block[24];
-
- /* do 2nd order transform on the dc block */
- if (xd->eobs[24] > 1)
- {
- vp8_dequantize_b(b, xd->dequant_y2);
-
- vp8_short_inv_walsh4x4(&b->dqcoeff[0],
- xd->qcoeff);
- memset(b->qcoeff, 0, 16 * sizeof(b->qcoeff[0]));
- }
- else
- {
- b->dqcoeff[0] = b->qcoeff[0] * xd->dequant_y2[0];
- vp8_short_inv_walsh4x4_1(&b->dqcoeff[0],
- xd->qcoeff);
- memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
- }
-
- /* override the dc dequant constant in order to preserve the
- * dc components
- */
- DQC = xd->dequant_y1_dc;
- }
-
- vp8_dequant_idct_add_y_block
- (xd->qcoeff, DQC,
- xd->dst.y_buffer,
- xd->dst.y_stride, xd->eobs);
- }
-
- vp8_dequant_idct_add_uv_block
- (xd->qcoeff+16*16, xd->dequant_uv,
- xd->dst.u_buffer, xd->dst.v_buffer,
- xd->dst.uv_stride, xd->eobs+16);
- }
-}
-
-static int get_delta_q(vp8_reader *bc, int prev, int *q_update)
-{
- int ret_val = 0;
-
- if (vp8_read_bit(bc))
- {
- ret_val = vp8_read_literal(bc, 4);
-
- if (vp8_read_bit(bc))
- ret_val = -ret_val;
- }
-
- /* Trigger a quantizer update if the delta-q value has changed */
- if (ret_val != prev)
- *q_update = 1;
-
- return ret_val;
-}
-
-#ifdef PACKET_TESTING
-#include <stdio.h>
-FILE *vpxlog = 0;
-#endif
-
-static void yv12_extend_frame_top_c(YV12_BUFFER_CONFIG *ybf)
-{
- int i;
- unsigned char *src_ptr1;
- unsigned char *dest_ptr1;
-
- unsigned int Border;
- int plane_stride;
-
- /***********/
- /* Y Plane */
- /***********/
- Border = ybf->border;
- plane_stride = ybf->y_stride;
- src_ptr1 = ybf->y_buffer - Border;
- dest_ptr1 = src_ptr1 - (Border * plane_stride);
-
- for (i = 0; i < (int)Border; i++)
- {
- memcpy(dest_ptr1, src_ptr1, plane_stride);
- dest_ptr1 += plane_stride;
- }
-
-
- /***********/
- /* U Plane */
- /***********/
- plane_stride = ybf->uv_stride;
- Border /= 2;
- src_ptr1 = ybf->u_buffer - Border;
- dest_ptr1 = src_ptr1 - (Border * plane_stride);
-
- for (i = 0; i < (int)(Border); i++)
- {
- memcpy(dest_ptr1, src_ptr1, plane_stride);
- dest_ptr1 += plane_stride;
- }
-
- /***********/
- /* V Plane */
- /***********/
-
- src_ptr1 = ybf->v_buffer - Border;
- dest_ptr1 = src_ptr1 - (Border * plane_stride);
-
- for (i = 0; i < (int)(Border); i++)
- {
- memcpy(dest_ptr1, src_ptr1, plane_stride);
- dest_ptr1 += plane_stride;
- }
-}
-
-static void yv12_extend_frame_bottom_c(YV12_BUFFER_CONFIG *ybf)
-{
- int i;
- unsigned char *src_ptr1, *src_ptr2;
- unsigned char *dest_ptr2;
-
- unsigned int Border;
- int plane_stride;
- int plane_height;
-
- /***********/
- /* Y Plane */
- /***********/
- Border = ybf->border;
- plane_stride = ybf->y_stride;
- plane_height = ybf->y_height;
-
- src_ptr1 = ybf->y_buffer - Border;
- src_ptr2 = src_ptr1 + (plane_height * plane_stride) - plane_stride;
- dest_ptr2 = src_ptr2 + plane_stride;
-
- for (i = 0; i < (int)Border; i++)
- {
- memcpy(dest_ptr2, src_ptr2, plane_stride);
- dest_ptr2 += plane_stride;
- }
-
-
- /***********/
- /* U Plane */
- /***********/
- plane_stride = ybf->uv_stride;
- plane_height = ybf->uv_height;
- Border /= 2;
-
- src_ptr1 = ybf->u_buffer - Border;
- src_ptr2 = src_ptr1 + (plane_height * plane_stride) - plane_stride;
- dest_ptr2 = src_ptr2 + plane_stride;
-
- for (i = 0; i < (int)(Border); i++)
- {
- memcpy(dest_ptr2, src_ptr2, plane_stride);
- dest_ptr2 += plane_stride;
- }
-
- /***********/
- /* V Plane */
- /***********/
-
- src_ptr1 = ybf->v_buffer - Border;
- src_ptr2 = src_ptr1 + (plane_height * plane_stride) - plane_stride;
- dest_ptr2 = src_ptr2 + plane_stride;
-
- for (i = 0; i < (int)(Border); i++)
- {
- memcpy(dest_ptr2, src_ptr2, plane_stride);
- dest_ptr2 += plane_stride;
- }
-}
-
-static void yv12_extend_frame_left_right_c(YV12_BUFFER_CONFIG *ybf,
- unsigned char *y_src,
- unsigned char *u_src,
- unsigned char *v_src)
-{
- int i;
- unsigned char *src_ptr1, *src_ptr2;
- unsigned char *dest_ptr1, *dest_ptr2;
-
- unsigned int Border;
- int plane_stride;
- int plane_height;
- int plane_width;
-
- /***********/
- /* Y Plane */
- /***********/
- Border = ybf->border;
- plane_stride = ybf->y_stride;
- plane_height = 16;
- plane_width = ybf->y_width;
-
- /* copy the left and right most columns out */
- src_ptr1 = y_src;
- src_ptr2 = src_ptr1 + plane_width - 1;
- dest_ptr1 = src_ptr1 - Border;
- dest_ptr2 = src_ptr2 + 1;
-
- for (i = 0; i < plane_height; i++)
- {
- memset(dest_ptr1, src_ptr1[0], Border);
- memset(dest_ptr2, src_ptr2[0], Border);
- src_ptr1 += plane_stride;
- src_ptr2 += plane_stride;
- dest_ptr1 += plane_stride;
- dest_ptr2 += plane_stride;
- }
-
- /***********/
- /* U Plane */
- /***********/
- plane_stride = ybf->uv_stride;
- plane_height = 8;
- plane_width = ybf->uv_width;
- Border /= 2;
-
- /* copy the left and right most columns out */
- src_ptr1 = u_src;
- src_ptr2 = src_ptr1 + plane_width - 1;
- dest_ptr1 = src_ptr1 - Border;
- dest_ptr2 = src_ptr2 + 1;
-
- for (i = 0; i < plane_height; i++)
- {
- memset(dest_ptr1, src_ptr1[0], Border);
- memset(dest_ptr2, src_ptr2[0], Border);
- src_ptr1 += plane_stride;
- src_ptr2 += plane_stride;
- dest_ptr1 += plane_stride;
- dest_ptr2 += plane_stride;
- }
-
- /***********/
- /* V Plane */
- /***********/
-
- /* copy the left and right most columns out */
- src_ptr1 = v_src;
- src_ptr2 = src_ptr1 + plane_width - 1;
- dest_ptr1 = src_ptr1 - Border;
- dest_ptr2 = src_ptr2 + 1;
-
- for (i = 0; i < plane_height; i++)
- {
- memset(dest_ptr1, src_ptr1[0], Border);
- memset(dest_ptr2, src_ptr2[0], Border);
- src_ptr1 += plane_stride;
- src_ptr2 += plane_stride;
- dest_ptr1 += plane_stride;
- dest_ptr2 += plane_stride;
- }
-}
-
-static void decode_mb_rows(VP8D_COMP *pbi)
-{
- VP8_COMMON *const pc = & pbi->common;
- MACROBLOCKD *const xd = & pbi->mb;
-
- MODE_INFO *lf_mic = xd->mode_info_context;
-
- int ibc = 0;
- int num_part = 1 << pc->multi_token_partition;
-
- int recon_yoffset, recon_uvoffset;
- int mb_row, mb_col;
- int mb_idx = 0;
-
- YV12_BUFFER_CONFIG *yv12_fb_new = pbi->dec_fb_ref[INTRA_FRAME];
-
- int recon_y_stride = yv12_fb_new->y_stride;
- int recon_uv_stride = yv12_fb_new->uv_stride;
-
- unsigned char *ref_buffer[MAX_REF_FRAMES][3];
- unsigned char *dst_buffer[3];
- unsigned char *lf_dst[3];
- unsigned char *eb_dst[3];
- int i;
- int ref_fb_corrupted[MAX_REF_FRAMES];
-
- ref_fb_corrupted[INTRA_FRAME] = 0;
-
- for(i = 1; i < MAX_REF_FRAMES; i++)
- {
- YV12_BUFFER_CONFIG *this_fb = pbi->dec_fb_ref[i];
-
- ref_buffer[i][0] = this_fb->y_buffer;
- ref_buffer[i][1] = this_fb->u_buffer;
- ref_buffer[i][2] = this_fb->v_buffer;
-
- ref_fb_corrupted[i] = this_fb->corrupted;
- }
-
- /* Set up the buffer pointers */
- eb_dst[0] = lf_dst[0] = dst_buffer[0] = yv12_fb_new->y_buffer;
- eb_dst[1] = lf_dst[1] = dst_buffer[1] = yv12_fb_new->u_buffer;
- eb_dst[2] = lf_dst[2] = dst_buffer[2] = yv12_fb_new->v_buffer;
-
- xd->up_available = 0;
-
- /* Initialize the loop filter for this frame. */
- if(pc->filter_level)
- vp8_loop_filter_frame_init(pc, xd, pc->filter_level);
-
- vp8_setup_intra_recon_top_line(yv12_fb_new);
-
- /* Decode the individual macro block */
- for (mb_row = 0; mb_row < pc->mb_rows; mb_row++)
- {
- if (num_part > 1)
- {
- xd->current_bc = & pbi->mbc[ibc];
- ibc++;
-
- if (ibc == num_part)
- ibc = 0;
- }
-
- recon_yoffset = mb_row * recon_y_stride * 16;
- recon_uvoffset = mb_row * recon_uv_stride * 8;
-
- /* reset contexts */
- xd->above_context = pc->above_context;
- memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
-
- xd->left_available = 0;
-
- xd->mb_to_top_edge = -((mb_row * 16) << 3);
- xd->mb_to_bottom_edge = ((pc->mb_rows - 1 - mb_row) * 16) << 3;
-
- xd->recon_above[0] = dst_buffer[0] + recon_yoffset;
- xd->recon_above[1] = dst_buffer[1] + recon_uvoffset;
- xd->recon_above[2] = dst_buffer[2] + recon_uvoffset;
-
- xd->recon_left[0] = xd->recon_above[0] - 1;
- xd->recon_left[1] = xd->recon_above[1] - 1;
- xd->recon_left[2] = xd->recon_above[2] - 1;
-
- xd->recon_above[0] -= xd->dst.y_stride;
- xd->recon_above[1] -= xd->dst.uv_stride;
- xd->recon_above[2] -= xd->dst.uv_stride;
-
- /* TODO: move to outside row loop */
- xd->recon_left_stride[0] = xd->dst.y_stride;
- xd->recon_left_stride[1] = xd->dst.uv_stride;
-
- setup_intra_recon_left(xd->recon_left[0], xd->recon_left[1],
- xd->recon_left[2], xd->dst.y_stride,
- xd->dst.uv_stride);
-
- for (mb_col = 0; mb_col < pc->mb_cols; mb_col++)
- {
- /* Distance of Mb to the various image edges.
- * These are specified to 8th pel as they are always compared to values
- * that are in 1/8th pel units
- */
- xd->mb_to_left_edge = -((mb_col * 16) << 3);
- xd->mb_to_right_edge = ((pc->mb_cols - 1 - mb_col) * 16) << 3;
-
-#if CONFIG_ERROR_CONCEALMENT
- {
- int corrupt_residual = (!pbi->independent_partitions &&
- pbi->frame_corrupt_residual) ||
- vp8dx_bool_error(xd->current_bc);
- if (pbi->ec_active &&
- xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME &&
- corrupt_residual)
- {
- /* We have an intra block with corrupt coefficients, better to
- * conceal with an inter block. Interpolate MVs from neighboring
- * MBs.
- *
- * Note that for the first mb with corrupt residual in a frame,
- * we might not discover that before decoding the residual. That
- * happens after this check, and therefore no inter concealment
- * will be done.
- */
- vp8_interpolate_motion(xd,
- mb_row, mb_col,
- pc->mb_rows, pc->mb_cols);
- }
- }
-#endif
-
- xd->dst.y_buffer = dst_buffer[0] + recon_yoffset;
- xd->dst.u_buffer = dst_buffer[1] + recon_uvoffset;
- xd->dst.v_buffer = dst_buffer[2] + recon_uvoffset;
-
- if (xd->mode_info_context->mbmi.ref_frame >= LAST_FRAME) {
- const MV_REFERENCE_FRAME ref = xd->mode_info_context->mbmi.ref_frame;
- xd->pre.y_buffer = ref_buffer[ref][0] + recon_yoffset;
- xd->pre.u_buffer = ref_buffer[ref][1] + recon_uvoffset;
- xd->pre.v_buffer = ref_buffer[ref][2] + recon_uvoffset;
- } else {
- // ref_frame is INTRA_FRAME, pre buffer should not be used.
- xd->pre.y_buffer = 0;
- xd->pre.u_buffer = 0;
- xd->pre.v_buffer = 0;
- }
-
- /* propagate errors from reference frames */
- xd->corrupted |= ref_fb_corrupted[xd->mode_info_context->mbmi.ref_frame];
-
- decode_macroblock(pbi, xd, mb_idx);
-
- mb_idx++;
- xd->left_available = 1;
-
- /* check if the boolean decoder has suffered an error */
- xd->corrupted |= vp8dx_bool_error(xd->current_bc);
-
- xd->recon_above[0] += 16;
- xd->recon_above[1] += 8;
- xd->recon_above[2] += 8;
- xd->recon_left[0] += 16;
- xd->recon_left[1] += 8;
- xd->recon_left[2] += 8;
-
- recon_yoffset += 16;
- recon_uvoffset += 8;
-
- ++xd->mode_info_context; /* next mb */
-
- xd->above_context++;
- }
-
- /* adjust to the next row of mbs */
- vp8_extend_mb_row(yv12_fb_new, xd->dst.y_buffer + 16,
- xd->dst.u_buffer + 8, xd->dst.v_buffer + 8);
-
- ++xd->mode_info_context; /* skip prediction column */
- xd->up_available = 1;
-
- if(pc->filter_level)
- {
- if(mb_row > 0)
- {
- if (pc->filter_type == NORMAL_LOOPFILTER)
- vp8_loop_filter_row_normal(pc, lf_mic, mb_row-1,
- recon_y_stride, recon_uv_stride,
- lf_dst[0], lf_dst[1], lf_dst[2]);
- else
- vp8_loop_filter_row_simple(pc, lf_mic, mb_row-1,
- recon_y_stride, recon_uv_stride,
- lf_dst[0], lf_dst[1], lf_dst[2]);
- if(mb_row > 1)
- {
- yv12_extend_frame_left_right_c(yv12_fb_new,
- eb_dst[0],
- eb_dst[1],
- eb_dst[2]);
-
- eb_dst[0] += recon_y_stride * 16;
- eb_dst[1] += recon_uv_stride * 8;
- eb_dst[2] += recon_uv_stride * 8;
- }
-
- lf_dst[0] += recon_y_stride * 16;
- lf_dst[1] += recon_uv_stride * 8;
- lf_dst[2] += recon_uv_stride * 8;
- lf_mic += pc->mb_cols;
- lf_mic++; /* Skip border mb */
- }
- }
- else
- {
- if(mb_row > 0)
- {
- /**/
- yv12_extend_frame_left_right_c(yv12_fb_new,
- eb_dst[0],
- eb_dst[1],
- eb_dst[2]);
- eb_dst[0] += recon_y_stride * 16;
- eb_dst[1] += recon_uv_stride * 8;
- eb_dst[2] += recon_uv_stride * 8;
- }
- }
- }
-
- if(pc->filter_level)
- {
- if (pc->filter_type == NORMAL_LOOPFILTER)
- vp8_loop_filter_row_normal(pc, lf_mic, mb_row-1, recon_y_stride,
- recon_uv_stride, lf_dst[0], lf_dst[1],
- lf_dst[2]);
- else
- vp8_loop_filter_row_simple(pc, lf_mic, mb_row-1, recon_y_stride,
- recon_uv_stride, lf_dst[0], lf_dst[1],
- lf_dst[2]);
-
- yv12_extend_frame_left_right_c(yv12_fb_new,
- eb_dst[0],
- eb_dst[1],
- eb_dst[2]);
- eb_dst[0] += recon_y_stride * 16;
- eb_dst[1] += recon_uv_stride * 8;
- eb_dst[2] += recon_uv_stride * 8;
- }
- yv12_extend_frame_left_right_c(yv12_fb_new,
- eb_dst[0],
- eb_dst[1],
- eb_dst[2]);
- yv12_extend_frame_top_c(yv12_fb_new);
- yv12_extend_frame_bottom_c(yv12_fb_new);
-
-}
-
-static unsigned int read_partition_size(VP8D_COMP *pbi,
- const unsigned char *cx_size)
-{
- unsigned char temp[3];
- if (pbi->decrypt_cb)
- {
- pbi->decrypt_cb(pbi->decrypt_state, cx_size, temp, 3);
- cx_size = temp;
- }
- return cx_size[0] + (cx_size[1] << 8) + (cx_size[2] << 16);
-}
-
-static int read_is_valid(const unsigned char *start,
- size_t len,
- const unsigned char *end)
-{
- return (start + len > start && start + len <= end);
-}
-
-static unsigned int read_available_partition_size(
- VP8D_COMP *pbi,
- const unsigned char *token_part_sizes,
- const unsigned char *fragment_start,
- const unsigned char *first_fragment_end,
- const unsigned char *fragment_end,
- int i,
- int num_part)
-{
- VP8_COMMON* pc = &pbi->common;
- const unsigned char *partition_size_ptr = token_part_sizes + i * 3;
- unsigned int partition_size = 0;
- ptrdiff_t bytes_left = fragment_end - fragment_start;
- /* Calculate the length of this partition. The last partition
- * size is implicit. If the partition size can't be read, then
- * either use the remaining data in the buffer (for EC mode)
- * or throw an error.
- */
- if (i < num_part - 1)
- {
- if (read_is_valid(partition_size_ptr, 3, first_fragment_end))
- partition_size = read_partition_size(pbi, partition_size_ptr);
- else if (pbi->ec_active)
- partition_size = (unsigned int)bytes_left;
- else
- vpx_internal_error(&pc->error, VPX_CODEC_CORRUPT_FRAME,
- "Truncated partition size data");
- }
- else
- partition_size = (unsigned int)bytes_left;
-
- /* Validate the calculated partition length. If the buffer
- * described by the partition can't be fully read, then restrict
- * it to the portion that can be (for EC mode) or throw an error.
- */
- if (!read_is_valid(fragment_start, partition_size, fragment_end))
- {
- if (pbi->ec_active)
- partition_size = (unsigned int)bytes_left;
- else
- vpx_internal_error(&pc->error, VPX_CODEC_CORRUPT_FRAME,
- "Truncated packet or corrupt partition "
- "%d length", i + 1);
- }
- return partition_size;
-}
-
-
-static void setup_token_decoder(VP8D_COMP *pbi,
- const unsigned char* token_part_sizes)
-{
- vp8_reader *bool_decoder = &pbi->mbc[0];
- unsigned int partition_idx;
- unsigned int fragment_idx;
- unsigned int num_token_partitions;
- const unsigned char *first_fragment_end = pbi->fragments.ptrs[0] +
- pbi->fragments.sizes[0];
-
- TOKEN_PARTITION multi_token_partition =
- (TOKEN_PARTITION)vp8_read_literal(&pbi->mbc[8], 2);
- if (!vp8dx_bool_error(&pbi->mbc[8]))
- pbi->common.multi_token_partition = multi_token_partition;
- num_token_partitions = 1 << pbi->common.multi_token_partition;
-
- /* Check for partitions within the fragments and unpack the fragments
- * so that each fragment pointer points to its corresponding partition. */
- for (fragment_idx = 0; fragment_idx < pbi->fragments.count; ++fragment_idx)
- {
- unsigned int fragment_size = pbi->fragments.sizes[fragment_idx];
- const unsigned char *fragment_end = pbi->fragments.ptrs[fragment_idx] +
- fragment_size;
- /* Special case for handling the first partition since we have already
- * read its size. */
- if (fragment_idx == 0)
- {
- /* Size of first partition + token partition sizes element */
- ptrdiff_t ext_first_part_size = token_part_sizes -
- pbi->fragments.ptrs[0] + 3 * (num_token_partitions - 1);
- fragment_size -= (unsigned int)ext_first_part_size;
- if (fragment_size > 0)
- {
- pbi->fragments.sizes[0] = (unsigned int)ext_first_part_size;
- /* The fragment contains an additional partition. Move to
- * next. */
- fragment_idx++;
- pbi->fragments.ptrs[fragment_idx] = pbi->fragments.ptrs[0] +
- pbi->fragments.sizes[0];
- }
- }
- /* Split the chunk into partitions read from the bitstream */
- while (fragment_size > 0)
- {
- ptrdiff_t partition_size = read_available_partition_size(
- pbi,
- token_part_sizes,
- pbi->fragments.ptrs[fragment_idx],
- first_fragment_end,
- fragment_end,
- fragment_idx - 1,
- num_token_partitions);
- pbi->fragments.sizes[fragment_idx] = (unsigned int)partition_size;
- fragment_size -= (unsigned int)partition_size;
- assert(fragment_idx <= num_token_partitions);
- if (fragment_size > 0)
- {
- /* The fragment contains an additional partition.
- * Move to next. */
- fragment_idx++;
- pbi->fragments.ptrs[fragment_idx] =
- pbi->fragments.ptrs[fragment_idx - 1] + partition_size;
- }
- }
- }
-
- pbi->fragments.count = num_token_partitions + 1;
-
- for (partition_idx = 1; partition_idx < pbi->fragments.count; ++partition_idx)
- {
- if (vp8dx_start_decode(bool_decoder,
- pbi->fragments.ptrs[partition_idx],
- pbi->fragments.sizes[partition_idx],
- pbi->decrypt_cb, pbi->decrypt_state))
- vpx_internal_error(&pbi->common.error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate bool decoder %d",
- partition_idx);
-
- bool_decoder++;
- }
-
-#if CONFIG_MULTITHREAD
- /* Clamp number of decoder threads */
- if (pbi->decoding_thread_count > num_token_partitions - 1)
- pbi->decoding_thread_count = num_token_partitions - 1;
-#endif
-}
-
-
-static void init_frame(VP8D_COMP *pbi)
-{
- VP8_COMMON *const pc = & pbi->common;
- MACROBLOCKD *const xd = & pbi->mb;
-
- if (pc->frame_type == KEY_FRAME)
- {
- /* Various keyframe initializations */
- memcpy(pc->fc.mvc, vp8_default_mv_context, sizeof(vp8_default_mv_context));
-
- vp8_init_mbmode_probs(pc);
-
- vp8_default_coef_probs(pc);
-
- /* reset the segment feature data to 0 with delta coding (Default state). */
- memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
- xd->mb_segement_abs_delta = SEGMENT_DELTADATA;
-
- /* reset the mode ref deltasa for loop filter */
- memset(xd->ref_lf_deltas, 0, sizeof(xd->ref_lf_deltas));
- memset(xd->mode_lf_deltas, 0, sizeof(xd->mode_lf_deltas));
-
- /* All buffers are implicitly updated on key frames. */
- pc->refresh_golden_frame = 1;
- pc->refresh_alt_ref_frame = 1;
- pc->copy_buffer_to_gf = 0;
- pc->copy_buffer_to_arf = 0;
-
- /* Note that Golden and Altref modes cannot be used on a key frame so
- * ref_frame_sign_bias[] is undefined and meaningless
- */
- pc->ref_frame_sign_bias[GOLDEN_FRAME] = 0;
- pc->ref_frame_sign_bias[ALTREF_FRAME] = 0;
- }
- else
- {
- /* To enable choice of different interploation filters */
- if (!pc->use_bilinear_mc_filter)
- {
- xd->subpixel_predict = vp8_sixtap_predict4x4;
- xd->subpixel_predict8x4 = vp8_sixtap_predict8x4;
- xd->subpixel_predict8x8 = vp8_sixtap_predict8x8;
- xd->subpixel_predict16x16 = vp8_sixtap_predict16x16;
- }
- else
- {
- xd->subpixel_predict = vp8_bilinear_predict4x4;
- xd->subpixel_predict8x4 = vp8_bilinear_predict8x4;
- xd->subpixel_predict8x8 = vp8_bilinear_predict8x8;
- xd->subpixel_predict16x16 = vp8_bilinear_predict16x16;
- }
-
- if (pbi->decoded_key_frame && pbi->ec_enabled && !pbi->ec_active)
- pbi->ec_active = 1;
- }
-
- xd->left_context = &pc->left_context;
- xd->mode_info_context = pc->mi;
- xd->frame_type = pc->frame_type;
- xd->mode_info_context->mbmi.mode = DC_PRED;
- xd->mode_info_stride = pc->mode_info_stride;
- xd->corrupted = 0; /* init without corruption */
-
- xd->fullpixel_mask = 0xffffffff;
- if(pc->full_pixel)
- xd->fullpixel_mask = 0xfffffff8;
-
-}
-
-int vp8_decode_frame(VP8D_COMP *pbi)
-{
- vp8_reader *const bc = &pbi->mbc[8];
- VP8_COMMON *const pc = &pbi->common;
- MACROBLOCKD *const xd = &pbi->mb;
- const unsigned char *data = pbi->fragments.ptrs[0];
- const unsigned int data_sz = pbi->fragments.sizes[0];
- const unsigned char *data_end = data + data_sz;
- ptrdiff_t first_partition_length_in_bytes;
-
- int i, j, k, l;
- const int *const mb_feature_data_bits = vp8_mb_feature_data_bits;
- int corrupt_tokens = 0;
- int prev_independent_partitions = pbi->independent_partitions;
-
- YV12_BUFFER_CONFIG *yv12_fb_new = pbi->dec_fb_ref[INTRA_FRAME];
-
- /* start with no corruption of current frame */
- xd->corrupted = 0;
- yv12_fb_new->corrupted = 0;
-
- if (data_end - data < 3)
- {
- if (!pbi->ec_active)
- {
- vpx_internal_error(&pc->error, VPX_CODEC_CORRUPT_FRAME,
- "Truncated packet");
- }
-
- /* Declare the missing frame as an inter frame since it will
- be handled as an inter frame when we have estimated its
- motion vectors. */
- pc->frame_type = INTER_FRAME;
- pc->version = 0;
- pc->show_frame = 1;
- first_partition_length_in_bytes = 0;
- }
- else
- {
- unsigned char clear_buffer[10];
- const unsigned char *clear = data;
- if (pbi->decrypt_cb)
- {
- int n = (int)VPXMIN(sizeof(clear_buffer), data_sz);
- pbi->decrypt_cb(pbi->decrypt_state, data, clear_buffer, n);
- clear = clear_buffer;
- }
-
- pc->frame_type = (FRAME_TYPE)(clear[0] & 1);
- pc->version = (clear[0] >> 1) & 7;
- pc->show_frame = (clear[0] >> 4) & 1;
- first_partition_length_in_bytes =
- (clear[0] | (clear[1] << 8) | (clear[2] << 16)) >> 5;
-
- if (!pbi->ec_active &&
- (data + first_partition_length_in_bytes > data_end
- || data + first_partition_length_in_bytes < data))
- vpx_internal_error(&pc->error, VPX_CODEC_CORRUPT_FRAME,
- "Truncated packet or corrupt partition 0 length");
-
- data += 3;
- clear += 3;
-
- vp8_setup_version(pc);
-
-
- if (pc->frame_type == KEY_FRAME)
- {
- /* vet via sync code */
- /* When error concealment is enabled we should only check the sync
- * code if we have enough bits available
- */
- if (!pbi->ec_active || data + 3 < data_end)
- {
- if (clear[0] != 0x9d || clear[1] != 0x01 || clear[2] != 0x2a)
- vpx_internal_error(&pc->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Invalid frame sync code");
- }
-
- /* If error concealment is enabled we should only parse the new size
- * if we have enough data. Otherwise we will end up with the wrong
- * size.
- */
- if (!pbi->ec_active || data + 6 < data_end)
- {
- pc->Width = (clear[3] | (clear[4] << 8)) & 0x3fff;
- pc->horiz_scale = clear[4] >> 6;
- pc->Height = (clear[5] | (clear[6] << 8)) & 0x3fff;
- pc->vert_scale = clear[6] >> 6;
- }
- data += 7;
- }
- else
- {
- memcpy(&xd->pre, yv12_fb_new, sizeof(YV12_BUFFER_CONFIG));
- memcpy(&xd->dst, yv12_fb_new, sizeof(YV12_BUFFER_CONFIG));
- }
- }
- if ((!pbi->decoded_key_frame && pc->frame_type != KEY_FRAME))
- {
- return -1;
- }
-
- init_frame(pbi);
-
- if (vp8dx_start_decode(bc, data, (unsigned int)(data_end - data),
- pbi->decrypt_cb, pbi->decrypt_state))
- vpx_internal_error(&pc->error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate bool decoder 0");
- if (pc->frame_type == KEY_FRAME) {
- (void)vp8_read_bit(bc); // colorspace
- pc->clamp_type = (CLAMP_TYPE)vp8_read_bit(bc);
- }
-
- /* Is segmentation enabled */
- xd->segmentation_enabled = (unsigned char)vp8_read_bit(bc);
-
- if (xd->segmentation_enabled)
- {
- /* Signal whether or not the segmentation map is being explicitly updated this frame. */
- xd->update_mb_segmentation_map = (unsigned char)vp8_read_bit(bc);
- xd->update_mb_segmentation_data = (unsigned char)vp8_read_bit(bc);
-
- if (xd->update_mb_segmentation_data)
- {
- xd->mb_segement_abs_delta = (unsigned char)vp8_read_bit(bc);
-
- memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
-
- /* For each segmentation feature (Quant and loop filter level) */
- for (i = 0; i < MB_LVL_MAX; i++)
- {
- for (j = 0; j < MAX_MB_SEGMENTS; j++)
- {
- /* Frame level data */
- if (vp8_read_bit(bc))
- {
- xd->segment_feature_data[i][j] = (signed char)vp8_read_literal(bc, mb_feature_data_bits[i]);
-
- if (vp8_read_bit(bc))
- xd->segment_feature_data[i][j] = -xd->segment_feature_data[i][j];
- }
- else
- xd->segment_feature_data[i][j] = 0;
- }
- }
- }
-
- if (xd->update_mb_segmentation_map)
- {
- /* Which macro block level features are enabled */
- memset(xd->mb_segment_tree_probs, 255, sizeof(xd->mb_segment_tree_probs));
-
- /* Read the probs used to decode the segment id for each macro block. */
- for (i = 0; i < MB_FEATURE_TREE_PROBS; i++)
- {
- /* If not explicitly set value is defaulted to 255 by memset above */
- if (vp8_read_bit(bc))
- xd->mb_segment_tree_probs[i] = (vp8_prob)vp8_read_literal(bc, 8);
- }
- }
- }
- else
- {
- /* No segmentation updates on this frame */
- xd->update_mb_segmentation_map = 0;
- xd->update_mb_segmentation_data = 0;
- }
-
- /* Read the loop filter level and type */
- pc->filter_type = (LOOPFILTERTYPE) vp8_read_bit(bc);
- pc->filter_level = vp8_read_literal(bc, 6);
- pc->sharpness_level = vp8_read_literal(bc, 3);
-
- /* Read in loop filter deltas applied at the MB level based on mode or ref frame. */
- xd->mode_ref_lf_delta_update = 0;
- xd->mode_ref_lf_delta_enabled = (unsigned char)vp8_read_bit(bc);
-
- if (xd->mode_ref_lf_delta_enabled)
- {
- /* Do the deltas need to be updated */
- xd->mode_ref_lf_delta_update = (unsigned char)vp8_read_bit(bc);
-
- if (xd->mode_ref_lf_delta_update)
- {
- /* Send update */
- for (i = 0; i < MAX_REF_LF_DELTAS; i++)
- {
- if (vp8_read_bit(bc))
- {
- /*sign = vp8_read_bit( bc );*/
- xd->ref_lf_deltas[i] = (signed char)vp8_read_literal(bc, 6);
-
- if (vp8_read_bit(bc)) /* Apply sign */
- xd->ref_lf_deltas[i] = xd->ref_lf_deltas[i] * -1;
- }
- }
-
- /* Send update */
- for (i = 0; i < MAX_MODE_LF_DELTAS; i++)
- {
- if (vp8_read_bit(bc))
- {
- /*sign = vp8_read_bit( bc );*/
- xd->mode_lf_deltas[i] = (signed char)vp8_read_literal(bc, 6);
-
- if (vp8_read_bit(bc)) /* Apply sign */
- xd->mode_lf_deltas[i] = xd->mode_lf_deltas[i] * -1;
- }
- }
- }
- }
-
- setup_token_decoder(pbi, data + first_partition_length_in_bytes);
-
- xd->current_bc = &pbi->mbc[0];
-
- /* Read the default quantizers. */
- {
- int Q, q_update;
-
- Q = vp8_read_literal(bc, 7); /* AC 1st order Q = default */
- pc->base_qindex = Q;
- q_update = 0;
- pc->y1dc_delta_q = get_delta_q(bc, pc->y1dc_delta_q, &q_update);
- pc->y2dc_delta_q = get_delta_q(bc, pc->y2dc_delta_q, &q_update);
- pc->y2ac_delta_q = get_delta_q(bc, pc->y2ac_delta_q, &q_update);
- pc->uvdc_delta_q = get_delta_q(bc, pc->uvdc_delta_q, &q_update);
- pc->uvac_delta_q = get_delta_q(bc, pc->uvac_delta_q, &q_update);
-
- if (q_update)
- vp8cx_init_de_quantizer(pbi);
-
- /* MB level dequantizer setup */
- vp8_mb_init_dequantizer(pbi, &pbi->mb);
- }
-
- /* Determine if the golden frame or ARF buffer should be updated and how.
- * For all non key frames the GF and ARF refresh flags and sign bias
- * flags must be set explicitly.
- */
- if (pc->frame_type != KEY_FRAME)
- {
- /* Should the GF or ARF be updated from the current frame */
- pc->refresh_golden_frame = vp8_read_bit(bc);
-#if CONFIG_ERROR_CONCEALMENT
- /* Assume we shouldn't refresh golden if the bit is missing */
- xd->corrupted |= vp8dx_bool_error(bc);
- if (pbi->ec_active && xd->corrupted)
- pc->refresh_golden_frame = 0;
-#endif
-
- pc->refresh_alt_ref_frame = vp8_read_bit(bc);
-#if CONFIG_ERROR_CONCEALMENT
- /* Assume we shouldn't refresh altref if the bit is missing */
- xd->corrupted |= vp8dx_bool_error(bc);
- if (pbi->ec_active && xd->corrupted)
- pc->refresh_alt_ref_frame = 0;
-#endif
-
- /* Buffer to buffer copy flags. */
- pc->copy_buffer_to_gf = 0;
-
- if (!pc->refresh_golden_frame)
- pc->copy_buffer_to_gf = vp8_read_literal(bc, 2);
-
-#if CONFIG_ERROR_CONCEALMENT
- /* Assume we shouldn't copy to the golden if the bit is missing */
- xd->corrupted |= vp8dx_bool_error(bc);
- if (pbi->ec_active && xd->corrupted)
- pc->copy_buffer_to_gf = 0;
-#endif
-
- pc->copy_buffer_to_arf = 0;
-
- if (!pc->refresh_alt_ref_frame)
- pc->copy_buffer_to_arf = vp8_read_literal(bc, 2);
-
-#if CONFIG_ERROR_CONCEALMENT
- /* Assume we shouldn't copy to the alt-ref if the bit is missing */
- xd->corrupted |= vp8dx_bool_error(bc);
- if (pbi->ec_active && xd->corrupted)
- pc->copy_buffer_to_arf = 0;
-#endif
-
-
- pc->ref_frame_sign_bias[GOLDEN_FRAME] = vp8_read_bit(bc);
- pc->ref_frame_sign_bias[ALTREF_FRAME] = vp8_read_bit(bc);
- }
-
- pc->refresh_entropy_probs = vp8_read_bit(bc);
-#if CONFIG_ERROR_CONCEALMENT
- /* Assume we shouldn't refresh the probabilities if the bit is
- * missing */
- xd->corrupted |= vp8dx_bool_error(bc);
- if (pbi->ec_active && xd->corrupted)
- pc->refresh_entropy_probs = 0;
-#endif
- if (pc->refresh_entropy_probs == 0)
- {
- memcpy(&pc->lfc, &pc->fc, sizeof(pc->fc));
- }
-
- pc->refresh_last_frame = pc->frame_type == KEY_FRAME || vp8_read_bit(bc);
-
-#if CONFIG_ERROR_CONCEALMENT
- /* Assume we should refresh the last frame if the bit is missing */
- xd->corrupted |= vp8dx_bool_error(bc);
- if (pbi->ec_active && xd->corrupted)
- pc->refresh_last_frame = 1;
-#endif
-
- if (0)
- {
- FILE *z = fopen("decodestats.stt", "a");
- fprintf(z, "%6d F:%d,G:%d,A:%d,L:%d,Q:%d\n",
- pc->current_video_frame,
- pc->frame_type,
- pc->refresh_golden_frame,
- pc->refresh_alt_ref_frame,
- pc->refresh_last_frame,
- pc->base_qindex);
- fclose(z);
- }
-
- {
- pbi->independent_partitions = 1;
-
- /* read coef probability tree */
- for (i = 0; i < BLOCK_TYPES; i++)
- for (j = 0; j < COEF_BANDS; j++)
- for (k = 0; k < PREV_COEF_CONTEXTS; k++)
- for (l = 0; l < ENTROPY_NODES; l++)
- {
-
- vp8_prob *const p = pc->fc.coef_probs [i][j][k] + l;
-
- if (vp8_read(bc, vp8_coef_update_probs [i][j][k][l]))
- {
- *p = (vp8_prob)vp8_read_literal(bc, 8);
-
- }
- if (k > 0 && *p != pc->fc.coef_probs[i][j][k-1][l])
- pbi->independent_partitions = 0;
-
- }
- }
-
- /* clear out the coeff buffer */
- memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
-
- vp8_decode_mode_mvs(pbi);
-
-#if CONFIG_ERROR_CONCEALMENT
- if (pbi->ec_active &&
- pbi->mvs_corrupt_from_mb < (unsigned int)pc->mb_cols * pc->mb_rows)
- {
- /* Motion vectors are missing in this frame. We will try to estimate
- * them and then continue decoding the frame as usual */
- vp8_estimate_missing_mvs(pbi);
- }
-#endif
-
- memset(pc->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * pc->mb_cols);
- pbi->frame_corrupt_residual = 0;
-
-#if CONFIG_MULTITHREAD
- if (pbi->b_multithreaded_rd && pc->multi_token_partition != ONE_PARTITION)
- {
- unsigned int thread;
- vp8mt_decode_mb_rows(pbi, xd);
- vp8_yv12_extend_frame_borders(yv12_fb_new);
- for (thread = 0; thread < pbi->decoding_thread_count; ++thread)
- corrupt_tokens |= pbi->mb_row_di[thread].mbd.corrupted;
- }
- else
-#endif
- {
- decode_mb_rows(pbi);
- corrupt_tokens |= xd->corrupted;
- }
-
- /* Collect information about decoder corruption. */
- /* 1. Check first boolean decoder for errors. */
- yv12_fb_new->corrupted = vp8dx_bool_error(bc);
- /* 2. Check the macroblock information */
- yv12_fb_new->corrupted |= corrupt_tokens;
-
- if (!pbi->decoded_key_frame)
- {
- if (pc->frame_type == KEY_FRAME &&
- !yv12_fb_new->corrupted)
- pbi->decoded_key_frame = 1;
- else
- vpx_internal_error(&pbi->common.error, VPX_CODEC_CORRUPT_FRAME,
- "A stream must start with a complete key frame");
- }
-
- /* vpx_log("Decoder: Frame Decoded, Size Roughly:%d bytes \n",bc->pos+pbi->bc2.pos); */
-
- if (pc->refresh_entropy_probs == 0)
- {
- memcpy(&pc->fc, &pc->lfc, sizeof(pc->fc));
- pbi->independent_partitions = prev_independent_partitions;
- }
-
-#ifdef PACKET_TESTING
- {
- FILE *f = fopen("decompressor.VP8", "ab");
- unsigned int size = pbi->bc2.pos + pbi->bc.pos + 8;
- fwrite((void *) &size, 4, 1, f);
- fwrite((void *) pbi->Source, size, 1, f);
- fclose(f);
- }
-#endif
-
- return 0;
-}
diff --git a/thirdparty/libvpx/vp8/decoder/decodemv.c b/thirdparty/libvpx/vp8/decoder/decodemv.c
deleted file mode 100644
index 1d155e7e16..0000000000
--- a/thirdparty/libvpx/vp8/decoder/decodemv.c
+++ /dev/null
@@ -1,670 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "treereader.h"
-#include "vp8/common/entropymv.h"
-#include "vp8/common/entropymode.h"
-#include "onyxd_int.h"
-#include "vp8/common/findnearmv.h"
-
-#if CONFIG_DEBUG
-#include <assert.h>
-#endif
-static B_PREDICTION_MODE read_bmode(vp8_reader *bc, const vp8_prob *p)
-{
- const int i = vp8_treed_read(bc, vp8_bmode_tree, p);
-
- return (B_PREDICTION_MODE)i;
-}
-
-static MB_PREDICTION_MODE read_ymode(vp8_reader *bc, const vp8_prob *p)
-{
- const int i = vp8_treed_read(bc, vp8_ymode_tree, p);
-
- return (MB_PREDICTION_MODE)i;
-}
-
-static MB_PREDICTION_MODE read_kf_ymode(vp8_reader *bc, const vp8_prob *p)
-{
- const int i = vp8_treed_read(bc, vp8_kf_ymode_tree, p);
-
- return (MB_PREDICTION_MODE)i;
-}
-
-static MB_PREDICTION_MODE read_uv_mode(vp8_reader *bc, const vp8_prob *p)
-{
- const int i = vp8_treed_read(bc, vp8_uv_mode_tree, p);
-
- return (MB_PREDICTION_MODE)i;
-}
-
-static void read_kf_modes(VP8D_COMP *pbi, MODE_INFO *mi)
-{
- vp8_reader *const bc = & pbi->mbc[8];
- const int mis = pbi->common.mode_info_stride;
-
- mi->mbmi.ref_frame = INTRA_FRAME;
- mi->mbmi.mode = read_kf_ymode(bc, vp8_kf_ymode_prob);
-
- if (mi->mbmi.mode == B_PRED)
- {
- int i = 0;
- mi->mbmi.is_4x4 = 1;
-
- do
- {
- const B_PREDICTION_MODE A = above_block_mode(mi, i, mis);
- const B_PREDICTION_MODE L = left_block_mode(mi, i);
-
- mi->bmi[i].as_mode =
- read_bmode(bc, vp8_kf_bmode_prob [A] [L]);
- }
- while (++i < 16);
- }
-
- mi->mbmi.uv_mode = read_uv_mode(bc, vp8_kf_uv_mode_prob);
-}
-
-static int read_mvcomponent(vp8_reader *r, const MV_CONTEXT *mvc)
-{
- const vp8_prob *const p = (const vp8_prob *) mvc;
- int x = 0;
-
- if (vp8_read(r, p [mvpis_short])) /* Large */
- {
- int i = 0;
-
- do
- {
- x += vp8_read(r, p [MVPbits + i]) << i;
- }
- while (++i < 3);
-
- i = mvlong_width - 1; /* Skip bit 3, which is sometimes implicit */
-
- do
- {
- x += vp8_read(r, p [MVPbits + i]) << i;
- }
- while (--i > 3);
-
- if (!(x & 0xFFF0) || vp8_read(r, p [MVPbits + 3]))
- x += 8;
- }
- else /* small */
- x = vp8_treed_read(r, vp8_small_mvtree, p + MVPshort);
-
- if (x && vp8_read(r, p [MVPsign]))
- x = -x;
-
- return x;
-}
-
-static void read_mv(vp8_reader *r, MV *mv, const MV_CONTEXT *mvc)
-{
- mv->row = (short)(read_mvcomponent(r, mvc) * 2);
- mv->col = (short)(read_mvcomponent(r, ++mvc) * 2);
-}
-
-
-static void read_mvcontexts(vp8_reader *bc, MV_CONTEXT *mvc)
-{
- int i = 0;
-
- do
- {
- const vp8_prob *up = vp8_mv_update_probs[i].prob;
- vp8_prob *p = (vp8_prob *)(mvc + i);
- vp8_prob *const pstop = p + MVPcount;
-
- do
- {
- if (vp8_read(bc, *up++))
- {
- const vp8_prob x = (vp8_prob)vp8_read_literal(bc, 7);
-
- *p = x ? x << 1 : 1;
- }
- }
- while (++p < pstop);
- }
- while (++i < 2);
-}
-
-static const unsigned char mbsplit_fill_count[4] = {8, 8, 4, 1};
-static const unsigned char mbsplit_fill_offset[4][16] = {
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
- { 0, 1, 4, 5, 8, 9, 12, 13, 2, 3, 6, 7, 10, 11, 14, 15},
- { 0, 1, 4, 5, 2, 3, 6, 7, 8, 9, 12, 13, 10, 11, 14, 15},
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
-};
-
-
-static void mb_mode_mv_init(VP8D_COMP *pbi)
-{
- vp8_reader *const bc = & pbi->mbc[8];
- MV_CONTEXT *const mvc = pbi->common.fc.mvc;
-
-#if CONFIG_ERROR_CONCEALMENT
- /* Default is that no macroblock is corrupt, therefore we initialize
- * mvs_corrupt_from_mb to something very big, which we can be sure is
- * outside the frame. */
- pbi->mvs_corrupt_from_mb = UINT_MAX;
-#endif
- /* Read the mb_no_coeff_skip flag */
- pbi->common.mb_no_coeff_skip = (int)vp8_read_bit(bc);
-
- pbi->prob_skip_false = 0;
- if (pbi->common.mb_no_coeff_skip)
- pbi->prob_skip_false = (vp8_prob)vp8_read_literal(bc, 8);
-
- if(pbi->common.frame_type != KEY_FRAME)
- {
- pbi->prob_intra = (vp8_prob)vp8_read_literal(bc, 8);
- pbi->prob_last = (vp8_prob)vp8_read_literal(bc, 8);
- pbi->prob_gf = (vp8_prob)vp8_read_literal(bc, 8);
-
- if (vp8_read_bit(bc))
- {
- int i = 0;
-
- do
- {
- pbi->common.fc.ymode_prob[i] =
- (vp8_prob) vp8_read_literal(bc, 8);
- }
- while (++i < 4);
- }
-
- if (vp8_read_bit(bc))
- {
- int i = 0;
-
- do
- {
- pbi->common.fc.uv_mode_prob[i] =
- (vp8_prob) vp8_read_literal(bc, 8);
- }
- while (++i < 3);
- }
-
- read_mvcontexts(bc, mvc);
- }
-}
-
-const vp8_prob vp8_sub_mv_ref_prob3 [8][VP8_SUBMVREFS-1] =
-{
- { 147, 136, 18 }, /* SUBMVREF_NORMAL */
- { 223, 1 , 34 }, /* SUBMVREF_LEFT_ABOVE_SAME */
- { 106, 145, 1 }, /* SUBMVREF_LEFT_ZED */
- { 208, 1 , 1 }, /* SUBMVREF_LEFT_ABOVE_ZED */
- { 179, 121, 1 }, /* SUBMVREF_ABOVE_ZED */
- { 223, 1 , 34 }, /* SUBMVREF_LEFT_ABOVE_SAME */
- { 179, 121, 1 }, /* SUBMVREF_ABOVE_ZED */
- { 208, 1 , 1 } /* SUBMVREF_LEFT_ABOVE_ZED */
-};
-
-static
-const vp8_prob * get_sub_mv_ref_prob(const int left, const int above)
-{
- int lez = (left == 0);
- int aez = (above == 0);
- int lea = (left == above);
- const vp8_prob * prob;
-
- prob = vp8_sub_mv_ref_prob3[(aez << 2) |
- (lez << 1) |
- (lea)];
-
- return prob;
-}
-
-static void decode_split_mv(vp8_reader *const bc, MODE_INFO *mi,
- const MODE_INFO *left_mb, const MODE_INFO *above_mb,
- MB_MODE_INFO *mbmi, int_mv best_mv,
- MV_CONTEXT *const mvc, int mb_to_left_edge,
- int mb_to_right_edge, int mb_to_top_edge,
- int mb_to_bottom_edge)
-{
- int s; /* split configuration (16x8, 8x16, 8x8, 4x4) */
- int num_p; /* number of partitions in the split configuration
- (see vp8_mbsplit_count) */
- int j = 0;
-
- s = 3;
- num_p = 16;
- if( vp8_read(bc, 110) )
- {
- s = 2;
- num_p = 4;
- if( vp8_read(bc, 111) )
- {
- s = vp8_read(bc, 150);
- num_p = 2;
- }
- }
-
- do /* for each subset j */
- {
- int_mv leftmv, abovemv;
- int_mv blockmv;
- int k; /* first block in subset j */
-
- const vp8_prob *prob;
- k = vp8_mbsplit_offset[s][j];
-
- if (!(k & 3))
- {
- /* On L edge, get from MB to left of us */
- if(left_mb->mbmi.mode != SPLITMV)
- leftmv.as_int = left_mb->mbmi.mv.as_int;
- else
- leftmv.as_int = (left_mb->bmi + k + 4 - 1)->mv.as_int;
- }
- else
- leftmv.as_int = (mi->bmi + k - 1)->mv.as_int;
-
- if (!(k >> 2))
- {
- /* On top edge, get from MB above us */
- if(above_mb->mbmi.mode != SPLITMV)
- abovemv.as_int = above_mb->mbmi.mv.as_int;
- else
- abovemv.as_int = (above_mb->bmi + k + 16 - 4)->mv.as_int;
- }
- else
- abovemv.as_int = (mi->bmi + k - 4)->mv.as_int;
-
- prob = get_sub_mv_ref_prob(leftmv.as_int, abovemv.as_int);
-
- if( vp8_read(bc, prob[0]) )
- {
- if( vp8_read(bc, prob[1]) )
- {
- blockmv.as_int = 0;
- if( vp8_read(bc, prob[2]) )
- {
- blockmv.as_mv.row = read_mvcomponent(bc, &mvc[0]) * 2;
- blockmv.as_mv.row += best_mv.as_mv.row;
- blockmv.as_mv.col = read_mvcomponent(bc, &mvc[1]) * 2;
- blockmv.as_mv.col += best_mv.as_mv.col;
- }
- }
- else
- {
- blockmv.as_int = abovemv.as_int;
- }
- }
- else
- {
- blockmv.as_int = leftmv.as_int;
- }
-
- mbmi->need_to_clamp_mvs |= vp8_check_mv_bounds(&blockmv,
- mb_to_left_edge,
- mb_to_right_edge,
- mb_to_top_edge,
- mb_to_bottom_edge);
-
- {
- /* Fill (uniform) modes, mvs of jth subset.
- Must do it here because ensuing subsets can
- refer back to us via "left" or "above". */
- const unsigned char *fill_offset;
- unsigned int fill_count = mbsplit_fill_count[s];
-
- fill_offset = &mbsplit_fill_offset[s]
- [(unsigned char)j * mbsplit_fill_count[s]];
-
- do {
- mi->bmi[ *fill_offset].mv.as_int = blockmv.as_int;
- fill_offset++;
- }while (--fill_count);
- }
-
- }
- while (++j < num_p);
-
- mbmi->partitioning = s;
-}
-
-static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi)
-{
- vp8_reader *const bc = & pbi->mbc[8];
- mbmi->ref_frame = (MV_REFERENCE_FRAME) vp8_read(bc, pbi->prob_intra);
- if (mbmi->ref_frame) /* inter MB */
- {
- enum {CNT_INTRA, CNT_NEAREST, CNT_NEAR, CNT_SPLITMV};
- int cnt[4];
- int *cntx = cnt;
- int_mv near_mvs[4];
- int_mv *nmv = near_mvs;
- const int mis = pbi->mb.mode_info_stride;
- const MODE_INFO *above = mi - mis;
- const MODE_INFO *left = mi - 1;
- const MODE_INFO *aboveleft = above - 1;
- int *ref_frame_sign_bias = pbi->common.ref_frame_sign_bias;
-
- mbmi->need_to_clamp_mvs = 0;
-
- if (vp8_read(bc, pbi->prob_last))
- {
- mbmi->ref_frame =
- (MV_REFERENCE_FRAME)((int)(2 + vp8_read(bc, pbi->prob_gf)));
- }
-
- /* Zero accumulators */
- nmv[0].as_int = nmv[1].as_int = nmv[2].as_int = 0;
- cnt[0] = cnt[1] = cnt[2] = cnt[3] = 0;
-
- /* Process above */
- if (above->mbmi.ref_frame != INTRA_FRAME)
- {
- if (above->mbmi.mv.as_int)
- {
- (++nmv)->as_int = above->mbmi.mv.as_int;
- mv_bias(ref_frame_sign_bias[above->mbmi.ref_frame],
- mbmi->ref_frame, nmv, ref_frame_sign_bias);
- ++cntx;
- }
-
- *cntx += 2;
- }
-
- /* Process left */
- if (left->mbmi.ref_frame != INTRA_FRAME)
- {
- if (left->mbmi.mv.as_int)
- {
- int_mv this_mv;
-
- this_mv.as_int = left->mbmi.mv.as_int;
- mv_bias(ref_frame_sign_bias[left->mbmi.ref_frame],
- mbmi->ref_frame, &this_mv, ref_frame_sign_bias);
-
- if (this_mv.as_int != nmv->as_int)
- {
- (++nmv)->as_int = this_mv.as_int;
- ++cntx;
- }
-
- *cntx += 2;
- }
- else
- cnt[CNT_INTRA] += 2;
- }
-
- /* Process above left */
- if (aboveleft->mbmi.ref_frame != INTRA_FRAME)
- {
- if (aboveleft->mbmi.mv.as_int)
- {
- int_mv this_mv;
-
- this_mv.as_int = aboveleft->mbmi.mv.as_int;
- mv_bias(ref_frame_sign_bias[aboveleft->mbmi.ref_frame],
- mbmi->ref_frame, &this_mv, ref_frame_sign_bias);
-
- if (this_mv.as_int != nmv->as_int)
- {
- (++nmv)->as_int = this_mv.as_int;
- ++cntx;
- }
-
- *cntx += 1;
- }
- else
- cnt[CNT_INTRA] += 1;
- }
-
- if( vp8_read(bc, vp8_mode_contexts [cnt[CNT_INTRA]] [0]) )
- {
-
- /* If we have three distinct MV's ... */
- /* See if above-left MV can be merged with NEAREST */
- cnt[CNT_NEAREST] += ( (cnt[CNT_SPLITMV] > 0) &
- (nmv->as_int == near_mvs[CNT_NEAREST].as_int));
-
- /* Swap near and nearest if necessary */
- if (cnt[CNT_NEAR] > cnt[CNT_NEAREST])
- {
- int tmp;
- tmp = cnt[CNT_NEAREST];
- cnt[CNT_NEAREST] = cnt[CNT_NEAR];
- cnt[CNT_NEAR] = tmp;
- tmp = near_mvs[CNT_NEAREST].as_int;
- near_mvs[CNT_NEAREST].as_int = near_mvs[CNT_NEAR].as_int;
- near_mvs[CNT_NEAR].as_int = tmp;
- }
-
- if( vp8_read(bc, vp8_mode_contexts [cnt[CNT_NEAREST]] [1]) )
- {
-
- if( vp8_read(bc, vp8_mode_contexts [cnt[CNT_NEAR]] [2]) )
- {
- int mb_to_top_edge;
- int mb_to_bottom_edge;
- int mb_to_left_edge;
- int mb_to_right_edge;
- MV_CONTEXT *const mvc = pbi->common.fc.mvc;
- int near_index;
-
- mb_to_top_edge = pbi->mb.mb_to_top_edge;
- mb_to_bottom_edge = pbi->mb.mb_to_bottom_edge;
- mb_to_top_edge -= LEFT_TOP_MARGIN;
- mb_to_bottom_edge += RIGHT_BOTTOM_MARGIN;
- mb_to_right_edge = pbi->mb.mb_to_right_edge;
- mb_to_right_edge += RIGHT_BOTTOM_MARGIN;
- mb_to_left_edge = pbi->mb.mb_to_left_edge;
- mb_to_left_edge -= LEFT_TOP_MARGIN;
-
- /* Use near_mvs[0] to store the "best" MV */
- near_index = CNT_INTRA +
- (cnt[CNT_NEAREST] >= cnt[CNT_INTRA]);
-
- vp8_clamp_mv2(&near_mvs[near_index], &pbi->mb);
-
- cnt[CNT_SPLITMV] = ((above->mbmi.mode == SPLITMV)
- + (left->mbmi.mode == SPLITMV)) * 2
- + (aboveleft->mbmi.mode == SPLITMV);
-
- if( vp8_read(bc, vp8_mode_contexts [cnt[CNT_SPLITMV]] [3]) )
- {
- decode_split_mv(bc, mi, left, above,
- mbmi,
- near_mvs[near_index],
- mvc, mb_to_left_edge,
- mb_to_right_edge,
- mb_to_top_edge,
- mb_to_bottom_edge);
- mbmi->mv.as_int = mi->bmi[15].mv.as_int;
- mbmi->mode = SPLITMV;
- mbmi->is_4x4 = 1;
- }
- else
- {
- int_mv *const mbmi_mv = & mbmi->mv;
- read_mv(bc, &mbmi_mv->as_mv, (const MV_CONTEXT *) mvc);
- mbmi_mv->as_mv.row += near_mvs[near_index].as_mv.row;
- mbmi_mv->as_mv.col += near_mvs[near_index].as_mv.col;
-
- /* Don't need to check this on NEARMV and NEARESTMV
- * modes since those modes clamp the MV. The NEWMV mode
- * does not, so signal to the prediction stage whether
- * special handling may be required.
- */
- mbmi->need_to_clamp_mvs =
- vp8_check_mv_bounds(mbmi_mv, mb_to_left_edge,
- mb_to_right_edge,
- mb_to_top_edge,
- mb_to_bottom_edge);
- mbmi->mode = NEWMV;
- }
- }
- else
- {
- mbmi->mode = NEARMV;
- mbmi->mv.as_int = near_mvs[CNT_NEAR].as_int;
- vp8_clamp_mv2(&mbmi->mv, &pbi->mb);
- }
- }
- else
- {
- mbmi->mode = NEARESTMV;
- mbmi->mv.as_int = near_mvs[CNT_NEAREST].as_int;
- vp8_clamp_mv2(&mbmi->mv, &pbi->mb);
- }
- }
- else
- {
- mbmi->mode = ZEROMV;
- mbmi->mv.as_int = 0;
- }
-
-#if CONFIG_ERROR_CONCEALMENT
- if(pbi->ec_enabled && (mbmi->mode != SPLITMV))
- {
- mi->bmi[ 0].mv.as_int =
- mi->bmi[ 1].mv.as_int =
- mi->bmi[ 2].mv.as_int =
- mi->bmi[ 3].mv.as_int =
- mi->bmi[ 4].mv.as_int =
- mi->bmi[ 5].mv.as_int =
- mi->bmi[ 6].mv.as_int =
- mi->bmi[ 7].mv.as_int =
- mi->bmi[ 8].mv.as_int =
- mi->bmi[ 9].mv.as_int =
- mi->bmi[10].mv.as_int =
- mi->bmi[11].mv.as_int =
- mi->bmi[12].mv.as_int =
- mi->bmi[13].mv.as_int =
- mi->bmi[14].mv.as_int =
- mi->bmi[15].mv.as_int = mbmi->mv.as_int;
- }
-#endif
- }
- else
- {
- /* required for left and above block mv */
- mbmi->mv.as_int = 0;
-
- /* MB is intra coded */
- if ((mbmi->mode = read_ymode(bc, pbi->common.fc.ymode_prob)) == B_PRED)
- {
- int j = 0;
- mbmi->is_4x4 = 1;
- do
- {
- mi->bmi[j].as_mode = read_bmode(bc, pbi->common.fc.bmode_prob);
- }
- while (++j < 16);
- }
-
- mbmi->uv_mode = read_uv_mode(bc, pbi->common.fc.uv_mode_prob);
- }
-
-}
-
-static void read_mb_features(vp8_reader *r, MB_MODE_INFO *mi, MACROBLOCKD *x)
-{
- /* Is segmentation enabled */
- if (x->segmentation_enabled && x->update_mb_segmentation_map)
- {
- /* If so then read the segment id. */
- if (vp8_read(r, x->mb_segment_tree_probs[0]))
- mi->segment_id =
- (unsigned char)(2 + vp8_read(r, x->mb_segment_tree_probs[2]));
- else
- mi->segment_id =
- (unsigned char)(vp8_read(r, x->mb_segment_tree_probs[1]));
- }
-}
-
-static void decode_mb_mode_mvs(VP8D_COMP *pbi, MODE_INFO *mi,
- MB_MODE_INFO *mbmi)
-{
- (void)mbmi;
-
- /* Read the Macroblock segmentation map if it is being updated explicitly
- * this frame (reset to 0 above by default)
- * By default on a key frame reset all MBs to segment 0
- */
- if (pbi->mb.update_mb_segmentation_map)
- read_mb_features(&pbi->mbc[8], &mi->mbmi, &pbi->mb);
- else if(pbi->common.frame_type == KEY_FRAME)
- mi->mbmi.segment_id = 0;
-
- /* Read the macroblock coeff skip flag if this feature is in use,
- * else default to 0 */
- if (pbi->common.mb_no_coeff_skip)
- mi->mbmi.mb_skip_coeff = vp8_read(&pbi->mbc[8], pbi->prob_skip_false);
- else
- mi->mbmi.mb_skip_coeff = 0;
-
- mi->mbmi.is_4x4 = 0;
- if(pbi->common.frame_type == KEY_FRAME)
- read_kf_modes(pbi, mi);
- else
- read_mb_modes_mv(pbi, mi, &mi->mbmi);
-
-}
-
-void vp8_decode_mode_mvs(VP8D_COMP *pbi)
-{
- MODE_INFO *mi = pbi->common.mi;
- int mb_row = -1;
- int mb_to_right_edge_start;
-
- mb_mode_mv_init(pbi);
-
- pbi->mb.mb_to_top_edge = 0;
- pbi->mb.mb_to_bottom_edge = ((pbi->common.mb_rows - 1) * 16) << 3;
- mb_to_right_edge_start = ((pbi->common.mb_cols - 1) * 16) << 3;
-
- while (++mb_row < pbi->common.mb_rows)
- {
- int mb_col = -1;
-
- pbi->mb.mb_to_left_edge = 0;
- pbi->mb.mb_to_right_edge = mb_to_right_edge_start;
-
- while (++mb_col < pbi->common.mb_cols)
- {
-#if CONFIG_ERROR_CONCEALMENT
- int mb_num = mb_row * pbi->common.mb_cols + mb_col;
-#endif
-
- decode_mb_mode_mvs(pbi, mi, &mi->mbmi);
-
-#if CONFIG_ERROR_CONCEALMENT
- /* look for corruption. set mvs_corrupt_from_mb to the current
- * mb_num if the frame is corrupt from this macroblock. */
- if (vp8dx_bool_error(&pbi->mbc[8]) && mb_num <
- (int)pbi->mvs_corrupt_from_mb)
- {
- pbi->mvs_corrupt_from_mb = mb_num;
- /* no need to continue since the partition is corrupt from
- * here on.
- */
- return;
- }
-#endif
-
- pbi->mb.mb_to_left_edge -= (16 << 3);
- pbi->mb.mb_to_right_edge -= (16 << 3);
- mi++; /* next macroblock */
- }
- pbi->mb.mb_to_top_edge -= (16 << 3);
- pbi->mb.mb_to_bottom_edge -= (16 << 3);
-
- mi++; /* skip left predictor each row */
- }
-}
diff --git a/thirdparty/libvpx/vp8/decoder/decodemv.h b/thirdparty/libvpx/vp8/decoder/decodemv.h
deleted file mode 100644
index f33b07351d..0000000000
--- a/thirdparty/libvpx/vp8/decoder/decodemv.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_DECODER_DECODEMV_H_
-#define VP8_DECODER_DECODEMV_H_
-
-#include "onyxd_int.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_decode_mode_mvs(VP8D_COMP *);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_DECODER_DECODEMV_H_
diff --git a/thirdparty/libvpx/vp8/decoder/decoderthreading.h b/thirdparty/libvpx/vp8/decoder/decoderthreading.h
deleted file mode 100644
index c563cf6e93..0000000000
--- a/thirdparty/libvpx/vp8/decoder/decoderthreading.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_DECODER_DECODERTHREADING_H_
-#define VP8_DECODER_DECODERTHREADING_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if CONFIG_MULTITHREAD
-void vp8mt_decode_mb_rows(VP8D_COMP *pbi, MACROBLOCKD *xd);
-void vp8_decoder_remove_threads(VP8D_COMP *pbi);
-void vp8_decoder_create_threads(VP8D_COMP *pbi);
-void vp8mt_alloc_temp_buffers(VP8D_COMP *pbi, int width, int prev_mb_rows);
-void vp8mt_de_alloc_temp_buffers(VP8D_COMP *pbi, int mb_rows);
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_DECODER_DECODERTHREADING_H_
diff --git a/thirdparty/libvpx/vp8/decoder/detokenize.c b/thirdparty/libvpx/vp8/decoder/detokenize.c
deleted file mode 100644
index fcc7533c50..0000000000
--- a/thirdparty/libvpx/vp8/decoder/detokenize.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vp8/common/blockd.h"
-#include "onyxd_int.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "detokenize.h"
-
-void vp8_reset_mb_tokens_context(MACROBLOCKD *x)
-{
- ENTROPY_CONTEXT *a_ctx = ((ENTROPY_CONTEXT *)x->above_context);
- ENTROPY_CONTEXT *l_ctx = ((ENTROPY_CONTEXT *)x->left_context);
-
- memset(a_ctx, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
- memset(l_ctx, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
-
- /* Clear entropy contexts for Y2 blocks */
- if (!x->mode_info_context->mbmi.is_4x4)
- {
- a_ctx[8] = l_ctx[8] = 0;
- }
-}
-
-/*
- ------------------------------------------------------------------------------
- Residual decoding (Paragraph 13.2 / 13.3)
-*/
-static const uint8_t kBands[16 + 1] = {
- 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7,
- 0 /* extra entry as sentinel */
-};
-
-static const uint8_t kCat3[] = { 173, 148, 140, 0 };
-static const uint8_t kCat4[] = { 176, 155, 140, 135, 0 };
-static const uint8_t kCat5[] = { 180, 157, 141, 134, 130, 0 };
-static const uint8_t kCat6[] =
- { 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0 };
-static const uint8_t* const kCat3456[] = { kCat3, kCat4, kCat5, kCat6 };
-static const uint8_t kZigzag[16] = {
- 0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15
-};
-
-#define VP8GetBit vp8dx_decode_bool
-#define NUM_PROBAS 11
-#define NUM_CTX 3
-
-/* for const-casting */
-typedef const uint8_t (*ProbaArray)[NUM_CTX][NUM_PROBAS];
-
-static int GetSigned(BOOL_DECODER *br, int value_to_sign)
-{
- int split = (br->range + 1) >> 1;
- VP8_BD_VALUE bigsplit = (VP8_BD_VALUE)split << (VP8_BD_VALUE_SIZE - 8);
- int v;
-
- if(br->count < 0)
- vp8dx_bool_decoder_fill(br);
-
- if ( br->value < bigsplit )
- {
- br->range = split;
- v= value_to_sign;
- }
- else
- {
- br->range = br->range-split;
- br->value = br->value-bigsplit;
- v = -value_to_sign;
- }
- br->range +=br->range;
- br->value +=br->value;
- br->count--;
-
- return v;
-}
-/*
- Returns the position of the last non-zero coeff plus one
- (and 0 if there's no coeff at all)
-*/
-static int GetCoeffs(BOOL_DECODER *br, ProbaArray prob,
- int ctx, int n, int16_t* out)
-{
- const uint8_t* p = prob[n][ctx];
- if (!VP8GetBit(br, p[0]))
- { /* first EOB is more a 'CBP' bit. */
- return 0;
- }
- while (1)
- {
- ++n;
- if (!VP8GetBit(br, p[1]))
- {
- p = prob[kBands[n]][0];
- }
- else
- { /* non zero coeff */
- int v, j;
- if (!VP8GetBit(br, p[2]))
- {
- p = prob[kBands[n]][1];
- v = 1;
- }
- else
- {
- if (!VP8GetBit(br, p[3]))
- {
- if (!VP8GetBit(br, p[4]))
- {
- v = 2;
- }
- else
- {
- v = 3 + VP8GetBit(br, p[5]);
- }
- }
- else
- {
- if (!VP8GetBit(br, p[6]))
- {
- if (!VP8GetBit(br, p[7]))
- {
- v = 5 + VP8GetBit(br, 159);
- } else
- {
- v = 7 + 2 * VP8GetBit(br, 165);
- v += VP8GetBit(br, 145);
- }
- }
- else
- {
- const uint8_t* tab;
- const int bit1 = VP8GetBit(br, p[8]);
- const int bit0 = VP8GetBit(br, p[9 + bit1]);
- const int cat = 2 * bit1 + bit0;
- v = 0;
- for (tab = kCat3456[cat]; *tab; ++tab)
- {
- v += v + VP8GetBit(br, *tab);
- }
- v += 3 + (8 << cat);
- }
- }
- p = prob[kBands[n]][2];
- }
- j = kZigzag[n - 1];
-
- out[j] = GetSigned(br, v);
-
- if (n == 16 || !VP8GetBit(br, p[0]))
- { /* EOB */
- return n;
- }
- }
- if (n == 16)
- {
- return 16;
- }
- }
-}
-
-int vp8_decode_mb_tokens(VP8D_COMP *dx, MACROBLOCKD *x)
-{
- BOOL_DECODER *bc = x->current_bc;
- const FRAME_CONTEXT * const fc = &dx->common.fc;
- char *eobs = x->eobs;
-
- int i;
- int nonzeros;
- int eobtotal = 0;
-
- short *qcoeff_ptr;
- ProbaArray coef_probs;
- ENTROPY_CONTEXT *a_ctx = ((ENTROPY_CONTEXT *)x->above_context);
- ENTROPY_CONTEXT *l_ctx = ((ENTROPY_CONTEXT *)x->left_context);
- ENTROPY_CONTEXT *a;
- ENTROPY_CONTEXT *l;
- int skip_dc = 0;
-
- qcoeff_ptr = &x->qcoeff[0];
-
- if (!x->mode_info_context->mbmi.is_4x4)
- {
- a = a_ctx + 8;
- l = l_ctx + 8;
-
- coef_probs = fc->coef_probs [1];
-
- nonzeros = GetCoeffs(bc, coef_probs, (*a + *l), 0, qcoeff_ptr + 24 * 16);
- *a = *l = (nonzeros > 0);
-
- eobs[24] = nonzeros;
- eobtotal += nonzeros - 16;
-
- coef_probs = fc->coef_probs [0];
- skip_dc = 1;
- }
- else
- {
- coef_probs = fc->coef_probs [3];
- skip_dc = 0;
- }
-
- for (i = 0; i < 16; ++i)
- {
- a = a_ctx + (i&3);
- l = l_ctx + ((i&0xc)>>2);
-
- nonzeros = GetCoeffs(bc, coef_probs, (*a + *l), skip_dc, qcoeff_ptr);
- *a = *l = (nonzeros > 0);
-
- nonzeros += skip_dc;
- eobs[i] = nonzeros;
- eobtotal += nonzeros;
- qcoeff_ptr += 16;
- }
-
- coef_probs = fc->coef_probs [2];
-
- a_ctx += 4;
- l_ctx += 4;
- for (i = 16; i < 24; ++i)
- {
- a = a_ctx + ((i > 19)<<1) + (i&1);
- l = l_ctx + ((i > 19)<<1) + ((i&3)>1);
-
- nonzeros = GetCoeffs(bc, coef_probs, (*a + *l), 0, qcoeff_ptr);
- *a = *l = (nonzeros > 0);
-
- eobs[i] = nonzeros;
- eobtotal += nonzeros;
- qcoeff_ptr += 16;
- }
-
- return eobtotal;
-}
-
diff --git a/thirdparty/libvpx/vp8/decoder/detokenize.h b/thirdparty/libvpx/vp8/decoder/detokenize.h
deleted file mode 100644
index f0b125444f..0000000000
--- a/thirdparty/libvpx/vp8/decoder/detokenize.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_DECODER_DETOKENIZE_H_
-#define VP8_DECODER_DETOKENIZE_H_
-
-#include "onyxd_int.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_reset_mb_tokens_context(MACROBLOCKD *x);
-int vp8_decode_mb_tokens(VP8D_COMP *, MACROBLOCKD *);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_DECODER_DETOKENIZE_H_
diff --git a/thirdparty/libvpx/vp8/decoder/onyxd_if.c b/thirdparty/libvpx/vp8/decoder/onyxd_if.c
deleted file mode 100644
index 3468268a2a..0000000000
--- a/thirdparty/libvpx/vp8/decoder/onyxd_if.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vp8/common/onyxc_int.h"
-#if CONFIG_POSTPROC
-#include "vp8/common/postproc.h"
-#endif
-#include "vp8/common/onyxd.h"
-#include "onyxd_int.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vp8/common/alloccommon.h"
-#include "vp8/common/loopfilter.h"
-#include "vp8/common/swapyv12buffer.h"
-#include "vp8/common/threading.h"
-#include "decoderthreading.h"
-#include <stdio.h>
-#include <assert.h>
-
-#include "vp8/common/quant_common.h"
-#include "vp8/common/reconintra.h"
-#include "./vpx_dsp_rtcd.h"
-#include "./vpx_scale_rtcd.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vp8/common/systemdependent.h"
-#include "vpx_ports/vpx_once.h"
-#include "vpx_ports/vpx_timer.h"
-#include "detokenize.h"
-#if CONFIG_ERROR_CONCEALMENT
-#include "error_concealment.h"
-#endif
-#if ARCH_ARM
-#include "vpx_ports/arm.h"
-#endif
-
-extern void vp8_init_loop_filter(VP8_COMMON *cm);
-extern void vp8cx_init_de_quantizer(VP8D_COMP *pbi);
-static int get_free_fb (VP8_COMMON *cm);
-static void ref_cnt_fb (int *buf, int *idx, int new_idx);
-
-static void initialize_dec(void) {
- static volatile int init_done = 0;
-
- if (!init_done)
- {
- vpx_dsp_rtcd();
- vp8_init_intra_predictors();
- init_done = 1;
- }
-}
-
-static void remove_decompressor(VP8D_COMP *pbi)
-{
-#if CONFIG_ERROR_CONCEALMENT
- vp8_de_alloc_overlap_lists(pbi);
-#endif
- vp8_remove_common(&pbi->common);
- vpx_free(pbi);
-}
-
-static struct VP8D_COMP * create_decompressor(VP8D_CONFIG *oxcf)
-{
- VP8D_COMP *pbi = vpx_memalign(32, sizeof(VP8D_COMP));
-
- if (!pbi)
- return NULL;
-
- memset(pbi, 0, sizeof(VP8D_COMP));
-
- if (setjmp(pbi->common.error.jmp))
- {
- pbi->common.error.setjmp = 0;
- remove_decompressor(pbi);
- return 0;
- }
-
- pbi->common.error.setjmp = 1;
-
- vp8_create_common(&pbi->common);
-
- pbi->common.current_video_frame = 0;
- pbi->ready_for_new_data = 1;
-
- /* vp8cx_init_de_quantizer() is first called here. Add check in frame_init_dequantizer() to avoid
- * unnecessary calling of vp8cx_init_de_quantizer() for every frame.
- */
- vp8cx_init_de_quantizer(pbi);
-
- vp8_loop_filter_init(&pbi->common);
-
- pbi->common.error.setjmp = 0;
-
-#if CONFIG_ERROR_CONCEALMENT
- pbi->ec_enabled = oxcf->error_concealment;
- pbi->overlaps = NULL;
-#else
- (void)oxcf;
- pbi->ec_enabled = 0;
-#endif
- /* Error concealment is activated after a key frame has been
- * decoded without errors when error concealment is enabled.
- */
- pbi->ec_active = 0;
-
- pbi->decoded_key_frame = 0;
-
- /* Independent partitions is activated when a frame updates the
- * token probability table to have equal probabilities over the
- * PREV_COEF context.
- */
- pbi->independent_partitions = 0;
-
- vp8_setup_block_dptrs(&pbi->mb);
-
- once(initialize_dec);
-
- return pbi;
-}
-
-vpx_codec_err_t vp8dx_get_reference(VP8D_COMP *pbi, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd)
-{
- VP8_COMMON *cm = &pbi->common;
- int ref_fb_idx;
-
- if (ref_frame_flag == VP8_LAST_FRAME)
- ref_fb_idx = cm->lst_fb_idx;
- else if (ref_frame_flag == VP8_GOLD_FRAME)
- ref_fb_idx = cm->gld_fb_idx;
- else if (ref_frame_flag == VP8_ALTR_FRAME)
- ref_fb_idx = cm->alt_fb_idx;
- else{
- vpx_internal_error(&pbi->common.error, VPX_CODEC_ERROR,
- "Invalid reference frame");
- return pbi->common.error.error_code;
- }
-
- if(cm->yv12_fb[ref_fb_idx].y_height != sd->y_height ||
- cm->yv12_fb[ref_fb_idx].y_width != sd->y_width ||
- cm->yv12_fb[ref_fb_idx].uv_height != sd->uv_height ||
- cm->yv12_fb[ref_fb_idx].uv_width != sd->uv_width){
- vpx_internal_error(&pbi->common.error, VPX_CODEC_ERROR,
- "Incorrect buffer dimensions");
- }
- else
- vp8_yv12_copy_frame(&cm->yv12_fb[ref_fb_idx], sd);
-
- return pbi->common.error.error_code;
-}
-
-
-vpx_codec_err_t vp8dx_set_reference(VP8D_COMP *pbi, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd)
-{
- VP8_COMMON *cm = &pbi->common;
- int *ref_fb_ptr = NULL;
- int free_fb;
-
- if (ref_frame_flag == VP8_LAST_FRAME)
- ref_fb_ptr = &cm->lst_fb_idx;
- else if (ref_frame_flag == VP8_GOLD_FRAME)
- ref_fb_ptr = &cm->gld_fb_idx;
- else if (ref_frame_flag == VP8_ALTR_FRAME)
- ref_fb_ptr = &cm->alt_fb_idx;
- else{
- vpx_internal_error(&pbi->common.error, VPX_CODEC_ERROR,
- "Invalid reference frame");
- return pbi->common.error.error_code;
- }
-
- if(cm->yv12_fb[*ref_fb_ptr].y_height != sd->y_height ||
- cm->yv12_fb[*ref_fb_ptr].y_width != sd->y_width ||
- cm->yv12_fb[*ref_fb_ptr].uv_height != sd->uv_height ||
- cm->yv12_fb[*ref_fb_ptr].uv_width != sd->uv_width){
- vpx_internal_error(&pbi->common.error, VPX_CODEC_ERROR,
- "Incorrect buffer dimensions");
- }
- else{
- /* Find an empty frame buffer. */
- free_fb = get_free_fb(cm);
- /* Decrease fb_idx_ref_cnt since it will be increased again in
- * ref_cnt_fb() below. */
- cm->fb_idx_ref_cnt[free_fb]--;
-
- /* Manage the reference counters and copy image. */
- ref_cnt_fb (cm->fb_idx_ref_cnt, ref_fb_ptr, free_fb);
- vp8_yv12_copy_frame(sd, &cm->yv12_fb[*ref_fb_ptr]);
- }
-
- return pbi->common.error.error_code;
-}
-
-static int get_free_fb (VP8_COMMON *cm)
-{
- int i;
- for (i = 0; i < NUM_YV12_BUFFERS; i++)
- if (cm->fb_idx_ref_cnt[i] == 0)
- break;
-
- assert(i < NUM_YV12_BUFFERS);
- cm->fb_idx_ref_cnt[i] = 1;
- return i;
-}
-
-static void ref_cnt_fb (int *buf, int *idx, int new_idx)
-{
- if (buf[*idx] > 0)
- buf[*idx]--;
-
- *idx = new_idx;
-
- buf[new_idx]++;
-}
-
-/* If any buffer copy / swapping is signalled it should be done here. */
-static int swap_frame_buffers (VP8_COMMON *cm)
-{
- int err = 0;
-
- /* The alternate reference frame or golden frame can be updated
- * using the new, last, or golden/alt ref frame. If it
- * is updated using the newly decoded frame it is a refresh.
- * An update using the last or golden/alt ref frame is a copy.
- */
- if (cm->copy_buffer_to_arf)
- {
- int new_fb = 0;
-
- if (cm->copy_buffer_to_arf == 1)
- new_fb = cm->lst_fb_idx;
- else if (cm->copy_buffer_to_arf == 2)
- new_fb = cm->gld_fb_idx;
- else
- err = -1;
-
- ref_cnt_fb (cm->fb_idx_ref_cnt, &cm->alt_fb_idx, new_fb);
- }
-
- if (cm->copy_buffer_to_gf)
- {
- int new_fb = 0;
-
- if (cm->copy_buffer_to_gf == 1)
- new_fb = cm->lst_fb_idx;
- else if (cm->copy_buffer_to_gf == 2)
- new_fb = cm->alt_fb_idx;
- else
- err = -1;
-
- ref_cnt_fb (cm->fb_idx_ref_cnt, &cm->gld_fb_idx, new_fb);
- }
-
- if (cm->refresh_golden_frame)
- ref_cnt_fb (cm->fb_idx_ref_cnt, &cm->gld_fb_idx, cm->new_fb_idx);
-
- if (cm->refresh_alt_ref_frame)
- ref_cnt_fb (cm->fb_idx_ref_cnt, &cm->alt_fb_idx, cm->new_fb_idx);
-
- if (cm->refresh_last_frame)
- {
- ref_cnt_fb (cm->fb_idx_ref_cnt, &cm->lst_fb_idx, cm->new_fb_idx);
-
- cm->frame_to_show = &cm->yv12_fb[cm->lst_fb_idx];
- }
- else
- cm->frame_to_show = &cm->yv12_fb[cm->new_fb_idx];
-
- cm->fb_idx_ref_cnt[cm->new_fb_idx]--;
-
- return err;
-}
-
-static int check_fragments_for_errors(VP8D_COMP *pbi)
-{
- if (!pbi->ec_active &&
- pbi->fragments.count <= 1 && pbi->fragments.sizes[0] == 0)
- {
- VP8_COMMON *cm = &pbi->common;
-
- /* If error concealment is disabled we won't signal missing frames
- * to the decoder.
- */
- if (cm->fb_idx_ref_cnt[cm->lst_fb_idx] > 1)
- {
- /* The last reference shares buffer with another reference
- * buffer. Move it to its own buffer before setting it as
- * corrupt, otherwise we will make multiple buffers corrupt.
- */
- const int prev_idx = cm->lst_fb_idx;
- cm->fb_idx_ref_cnt[prev_idx]--;
- cm->lst_fb_idx = get_free_fb(cm);
- vp8_yv12_copy_frame(&cm->yv12_fb[prev_idx],
- &cm->yv12_fb[cm->lst_fb_idx]);
- }
- /* This is used to signal that we are missing frames.
- * We do not know if the missing frame(s) was supposed to update
- * any of the reference buffers, but we act conservative and
- * mark only the last buffer as corrupted.
- */
- cm->yv12_fb[cm->lst_fb_idx].corrupted = 1;
-
- /* Signal that we have no frame to show. */
- cm->show_frame = 0;
-
- /* Nothing more to do. */
- return 0;
- }
-
- return 1;
-}
-
-int vp8dx_receive_compressed_data(VP8D_COMP *pbi, size_t size,
- const uint8_t *source,
- int64_t time_stamp)
-{
- VP8_COMMON *cm = &pbi->common;
- int retcode = -1;
- (void)size;
- (void)source;
-
- pbi->common.error.error_code = VPX_CODEC_OK;
-
- retcode = check_fragments_for_errors(pbi);
- if(retcode <= 0)
- return retcode;
-
- cm->new_fb_idx = get_free_fb (cm);
-
- /* setup reference frames for vp8_decode_frame */
- pbi->dec_fb_ref[INTRA_FRAME] = &cm->yv12_fb[cm->new_fb_idx];
- pbi->dec_fb_ref[LAST_FRAME] = &cm->yv12_fb[cm->lst_fb_idx];
- pbi->dec_fb_ref[GOLDEN_FRAME] = &cm->yv12_fb[cm->gld_fb_idx];
- pbi->dec_fb_ref[ALTREF_FRAME] = &cm->yv12_fb[cm->alt_fb_idx];
-
- if (setjmp(pbi->common.error.jmp))
- {
- /* We do not know if the missing frame(s) was supposed to update
- * any of the reference buffers, but we act conservative and
- * mark only the last buffer as corrupted.
- */
- cm->yv12_fb[cm->lst_fb_idx].corrupted = 1;
-
- if (cm->fb_idx_ref_cnt[cm->new_fb_idx] > 0)
- cm->fb_idx_ref_cnt[cm->new_fb_idx]--;
-
- goto decode_exit;
- }
-
- pbi->common.error.setjmp = 1;
-
- retcode = vp8_decode_frame(pbi);
-
- if (retcode < 0)
- {
- if (cm->fb_idx_ref_cnt[cm->new_fb_idx] > 0)
- cm->fb_idx_ref_cnt[cm->new_fb_idx]--;
-
- pbi->common.error.error_code = VPX_CODEC_ERROR;
- goto decode_exit;
- }
-
- if (swap_frame_buffers (cm))
- {
- pbi->common.error.error_code = VPX_CODEC_ERROR;
- goto decode_exit;
- }
-
- vp8_clear_system_state();
-
- if (cm->show_frame)
- {
- cm->current_video_frame++;
- cm->show_frame_mi = cm->mi;
- }
-
- #if CONFIG_ERROR_CONCEALMENT
- /* swap the mode infos to storage for future error concealment */
- if (pbi->ec_enabled && pbi->common.prev_mi)
- {
- MODE_INFO* tmp = pbi->common.prev_mi;
- int row, col;
- pbi->common.prev_mi = pbi->common.mi;
- pbi->common.mi = tmp;
-
- /* Propagate the segment_ids to the next frame */
- for (row = 0; row < pbi->common.mb_rows; ++row)
- {
- for (col = 0; col < pbi->common.mb_cols; ++col)
- {
- const int i = row*pbi->common.mode_info_stride + col;
- pbi->common.mi[i].mbmi.segment_id =
- pbi->common.prev_mi[i].mbmi.segment_id;
- }
- }
- }
-#endif
-
- pbi->ready_for_new_data = 0;
- pbi->last_time_stamp = time_stamp;
-
-decode_exit:
- pbi->common.error.setjmp = 0;
- vp8_clear_system_state();
- return retcode;
-}
-int vp8dx_get_raw_frame(VP8D_COMP *pbi, YV12_BUFFER_CONFIG *sd, int64_t *time_stamp, int64_t *time_end_stamp, vp8_ppflags_t *flags)
-{
- int ret = -1;
-
- if (pbi->ready_for_new_data == 1)
- return ret;
-
- /* ie no raw frame to show!!! */
- if (pbi->common.show_frame == 0)
- return ret;
-
- pbi->ready_for_new_data = 1;
- *time_stamp = pbi->last_time_stamp;
- *time_end_stamp = 0;
-
-#if CONFIG_POSTPROC
- ret = vp8_post_proc_frame(&pbi->common, sd, flags);
-#else
- (void)flags;
-
- if (pbi->common.frame_to_show)
- {
- *sd = *pbi->common.frame_to_show;
- sd->y_width = pbi->common.Width;
- sd->y_height = pbi->common.Height;
- sd->uv_height = pbi->common.Height / 2;
- ret = 0;
- }
- else
- {
- ret = -1;
- }
-
-#endif /*!CONFIG_POSTPROC*/
- vp8_clear_system_state();
- return ret;
-}
-
-
-/* This function as written isn't decoder specific, but the encoder has
- * much faster ways of computing this, so it's ok for it to live in a
- * decode specific file.
- */
-int vp8dx_references_buffer( VP8_COMMON *oci, int ref_frame )
-{
- const MODE_INFO *mi = oci->mi;
- int mb_row, mb_col;
-
- for (mb_row = 0; mb_row < oci->mb_rows; mb_row++)
- {
- for (mb_col = 0; mb_col < oci->mb_cols; mb_col++,mi++)
- {
- if( mi->mbmi.ref_frame == ref_frame)
- return 1;
- }
- mi++;
- }
- return 0;
-
-}
-
-int vp8_create_decoder_instances(struct frame_buffers *fb, VP8D_CONFIG *oxcf)
-{
- if(!fb->use_frame_threads)
- {
- /* decoder instance for single thread mode */
- fb->pbi[0] = create_decompressor(oxcf);
- if(!fb->pbi[0])
- return VPX_CODEC_ERROR;
-
-#if CONFIG_MULTITHREAD
- /* enable row-based threading only when use_frame_threads
- * is disabled */
- fb->pbi[0]->max_threads = oxcf->max_threads;
- vp8_decoder_create_threads(fb->pbi[0]);
-#endif
- }
- else
- {
- /* TODO : create frame threads and decoder instances for each
- * thread here */
- }
-
- return VPX_CODEC_OK;
-}
-
-int vp8_remove_decoder_instances(struct frame_buffers *fb)
-{
- if(!fb->use_frame_threads)
- {
- VP8D_COMP *pbi = fb->pbi[0];
-
- if (!pbi)
- return VPX_CODEC_ERROR;
-#if CONFIG_MULTITHREAD
- if (pbi->b_multithreaded_rd)
- vp8mt_de_alloc_temp_buffers(pbi, pbi->common.mb_rows);
- vp8_decoder_remove_threads(pbi);
-#endif
-
- /* decoder instance for single thread mode */
- remove_decompressor(pbi);
- }
- else
- {
- /* TODO : remove frame threads and decoder instances for each
- * thread here */
- }
-
- return VPX_CODEC_OK;
-}
diff --git a/thirdparty/libvpx/vp8/decoder/onyxd_int.h b/thirdparty/libvpx/vp8/decoder/onyxd_int.h
deleted file mode 100644
index 313fe01c07..0000000000
--- a/thirdparty/libvpx/vp8/decoder/onyxd_int.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_DECODER_ONYXD_INT_H_
-#define VP8_DECODER_ONYXD_INT_H_
-
-#include "vpx_config.h"
-#include "vp8/common/onyxd.h"
-#include "treereader.h"
-#include "vp8/common/onyxc_int.h"
-#include "vp8/common/threading.h"
-
-#if CONFIG_ERROR_CONCEALMENT
-#include "ec_types.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct
-{
- int ithread;
- void *ptr1;
- void *ptr2;
-} DECODETHREAD_DATA;
-
-typedef struct
-{
- MACROBLOCKD mbd;
-} MB_ROW_DEC;
-
-
-typedef struct
-{
- int enabled;
- unsigned int count;
- const unsigned char *ptrs[MAX_PARTITIONS];
- unsigned int sizes[MAX_PARTITIONS];
-} FRAGMENT_DATA;
-
-#define MAX_FB_MT_DEC 32
-
-struct frame_buffers
-{
- /*
- * this struct will be populated with frame buffer management
- * info in future commits. */
-
- /* enable/disable frame-based threading */
- int use_frame_threads;
-
- /* decoder instances */
- struct VP8D_COMP *pbi[MAX_FB_MT_DEC];
-
-};
-
-typedef struct VP8D_COMP
-{
- DECLARE_ALIGNED(16, MACROBLOCKD, mb);
-
- YV12_BUFFER_CONFIG *dec_fb_ref[NUM_YV12_BUFFERS];
-
- DECLARE_ALIGNED(16, VP8_COMMON, common);
-
- /* the last partition will be used for the modes/mvs */
- vp8_reader mbc[MAX_PARTITIONS];
-
- VP8D_CONFIG oxcf;
-
- FRAGMENT_DATA fragments;
-
-#if CONFIG_MULTITHREAD
- /* variable for threading */
-
- int b_multithreaded_rd;
- int max_threads;
- int current_mb_col_main;
- unsigned int decoding_thread_count;
- int allocated_decoding_thread_count;
-
- int mt_baseline_filter_level[MAX_MB_SEGMENTS];
- int sync_range;
- int *mt_current_mb_col; /* Each row remembers its already decoded column. */
- pthread_mutex_t *pmutex;
- pthread_mutex_t mt_mutex; /* mutex for b_multithreaded_rd */
-
- unsigned char **mt_yabove_row; /* mb_rows x width */
- unsigned char **mt_uabove_row;
- unsigned char **mt_vabove_row;
- unsigned char **mt_yleft_col; /* mb_rows x 16 */
- unsigned char **mt_uleft_col; /* mb_rows x 8 */
- unsigned char **mt_vleft_col; /* mb_rows x 8 */
-
- MB_ROW_DEC *mb_row_di;
- DECODETHREAD_DATA *de_thread_data;
-
- pthread_t *h_decoding_thread;
- sem_t *h_event_start_decoding;
- sem_t h_event_end_decoding;
- /* end of threading data */
-#endif
-
- int64_t last_time_stamp;
- int ready_for_new_data;
-
- vp8_prob prob_intra;
- vp8_prob prob_last;
- vp8_prob prob_gf;
- vp8_prob prob_skip_false;
-
-#if CONFIG_ERROR_CONCEALMENT
- MB_OVERLAP *overlaps;
- /* the mb num from which modes and mvs (first partition) are corrupt */
- unsigned int mvs_corrupt_from_mb;
-#endif
- int ec_enabled;
- int ec_active;
- int decoded_key_frame;
- int independent_partitions;
- int frame_corrupt_residual;
-
- vpx_decrypt_cb decrypt_cb;
- void *decrypt_state;
-} VP8D_COMP;
-
-int vp8_decode_frame(VP8D_COMP *cpi);
-
-int vp8_create_decoder_instances(struct frame_buffers *fb, VP8D_CONFIG *oxcf);
-int vp8_remove_decoder_instances(struct frame_buffers *fb);
-
-#if CONFIG_DEBUG
-#define CHECK_MEM_ERROR(lval,expr) do {\
- lval = (expr); \
- if(!lval) \
- vpx_internal_error(&pbi->common.error, VPX_CODEC_MEM_ERROR,\
- "Failed to allocate "#lval" at %s:%d", \
- __FILE__,__LINE__);\
- } while(0)
-#else
-#define CHECK_MEM_ERROR(lval,expr) do {\
- lval = (expr); \
- if(!lval) \
- vpx_internal_error(&pbi->common.error, VPX_CODEC_MEM_ERROR,\
- "Failed to allocate "#lval);\
- } while(0)
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_DECODER_ONYXD_INT_H_
diff --git a/thirdparty/libvpx/vp8/decoder/threading.c b/thirdparty/libvpx/vp8/decoder/threading.c
deleted file mode 100644
index 3c1b8387ec..0000000000
--- a/thirdparty/libvpx/vp8/decoder/threading.c
+++ /dev/null
@@ -1,928 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_config.h"
-#include "vp8_rtcd.h"
-#if !defined(WIN32) && CONFIG_OS_SUPPORT == 1
-# include <unistd.h>
-#endif
-#include "onyxd_int.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vp8/common/threading.h"
-
-#include "vp8/common/loopfilter.h"
-#include "vp8/common/extend.h"
-#include "vpx_ports/vpx_timer.h"
-#include "detokenize.h"
-#include "vp8/common/reconintra4x4.h"
-#include "vp8/common/reconinter.h"
-#include "vp8/common/reconintra.h"
-#include "vp8/common/setupintrarecon.h"
-#if CONFIG_ERROR_CONCEALMENT
-#include "error_concealment.h"
-#endif
-
-#define CALLOC_ARRAY(p, n) CHECK_MEM_ERROR((p), vpx_calloc(sizeof(*(p)), (n)))
-#define CALLOC_ARRAY_ALIGNED(p, n, algn) do { \
- CHECK_MEM_ERROR((p), vpx_memalign((algn), sizeof(*(p)) * (n))); \
- memset((p), 0, (n) * sizeof(*(p))); \
-} while (0)
-
-
-void vp8_mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd);
-
-static void setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd, MB_ROW_DEC *mbrd, int count)
-{
- VP8_COMMON *const pc = & pbi->common;
- int i;
-
- for (i = 0; i < count; i++)
- {
- MACROBLOCKD *mbd = &mbrd[i].mbd;
- mbd->subpixel_predict = xd->subpixel_predict;
- mbd->subpixel_predict8x4 = xd->subpixel_predict8x4;
- mbd->subpixel_predict8x8 = xd->subpixel_predict8x8;
- mbd->subpixel_predict16x16 = xd->subpixel_predict16x16;
-
- mbd->frame_type = pc->frame_type;
- mbd->pre = xd->pre;
- mbd->dst = xd->dst;
-
- mbd->segmentation_enabled = xd->segmentation_enabled;
- mbd->mb_segement_abs_delta = xd->mb_segement_abs_delta;
- memcpy(mbd->segment_feature_data, xd->segment_feature_data, sizeof(xd->segment_feature_data));
-
- /*signed char ref_lf_deltas[MAX_REF_LF_DELTAS];*/
- memcpy(mbd->ref_lf_deltas, xd->ref_lf_deltas, sizeof(xd->ref_lf_deltas));
- /*signed char mode_lf_deltas[MAX_MODE_LF_DELTAS];*/
- memcpy(mbd->mode_lf_deltas, xd->mode_lf_deltas, sizeof(xd->mode_lf_deltas));
- /*unsigned char mode_ref_lf_delta_enabled;
- unsigned char mode_ref_lf_delta_update;*/
- mbd->mode_ref_lf_delta_enabled = xd->mode_ref_lf_delta_enabled;
- mbd->mode_ref_lf_delta_update = xd->mode_ref_lf_delta_update;
-
- mbd->current_bc = &pbi->mbc[0];
-
- memcpy(mbd->dequant_y1_dc, xd->dequant_y1_dc, sizeof(xd->dequant_y1_dc));
- memcpy(mbd->dequant_y1, xd->dequant_y1, sizeof(xd->dequant_y1));
- memcpy(mbd->dequant_y2, xd->dequant_y2, sizeof(xd->dequant_y2));
- memcpy(mbd->dequant_uv, xd->dequant_uv, sizeof(xd->dequant_uv));
-
- mbd->fullpixel_mask = 0xffffffff;
-
- if (pc->full_pixel)
- mbd->fullpixel_mask = 0xfffffff8;
-
- }
-
- for (i = 0; i < pc->mb_rows; i++)
- pbi->mt_current_mb_col[i] = -1;
-}
-
-static void mt_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
- unsigned int mb_idx)
-{
- MB_PREDICTION_MODE mode;
- int i;
-#if CONFIG_ERROR_CONCEALMENT
- int corruption_detected = 0;
-#else
- (void)mb_idx;
-#endif
-
- if (xd->mode_info_context->mbmi.mb_skip_coeff)
- {
- vp8_reset_mb_tokens_context(xd);
- }
- else if (!vp8dx_bool_error(xd->current_bc))
- {
- int eobtotal;
- eobtotal = vp8_decode_mb_tokens(pbi, xd);
-
- /* Special case: Force the loopfilter to skip when eobtotal is zero */
- xd->mode_info_context->mbmi.mb_skip_coeff = (eobtotal==0);
- }
-
- mode = xd->mode_info_context->mbmi.mode;
-
- if (xd->segmentation_enabled)
- vp8_mb_init_dequantizer(pbi, xd);
-
-
-#if CONFIG_ERROR_CONCEALMENT
-
- if(pbi->ec_active)
- {
- int throw_residual;
- /* When we have independent partitions we can apply residual even
- * though other partitions within the frame are corrupt.
- */
- throw_residual = (!pbi->independent_partitions &&
- pbi->frame_corrupt_residual);
- throw_residual = (throw_residual || vp8dx_bool_error(xd->current_bc));
-
- if ((mb_idx >= pbi->mvs_corrupt_from_mb || throw_residual))
- {
- /* MB with corrupt residuals or corrupt mode/motion vectors.
- * Better to use the predictor as reconstruction.
- */
- pbi->frame_corrupt_residual = 1;
- memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
-
- corruption_detected = 1;
-
- /* force idct to be skipped for B_PRED and use the
- * prediction only for reconstruction
- * */
- memset(xd->eobs, 0, 25);
- }
- }
-#endif
-
- /* do prediction */
- if (xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME)
- {
- vp8_build_intra_predictors_mbuv_s(xd,
- xd->recon_above[1],
- xd->recon_above[2],
- xd->recon_left[1],
- xd->recon_left[2],
- xd->recon_left_stride[1],
- xd->dst.u_buffer, xd->dst.v_buffer,
- xd->dst.uv_stride);
-
- if (mode != B_PRED)
- {
- vp8_build_intra_predictors_mby_s(xd,
- xd->recon_above[0],
- xd->recon_left[0],
- xd->recon_left_stride[0],
- xd->dst.y_buffer,
- xd->dst.y_stride);
- }
- else
- {
- short *DQC = xd->dequant_y1;
- int dst_stride = xd->dst.y_stride;
-
- /* clear out residual eob info */
- if(xd->mode_info_context->mbmi.mb_skip_coeff)
- memset(xd->eobs, 0, 25);
-
- intra_prediction_down_copy(xd, xd->recon_above[0] + 16);
-
- for (i = 0; i < 16; i++)
- {
- BLOCKD *b = &xd->block[i];
- unsigned char *dst = xd->dst.y_buffer + b->offset;
- B_PREDICTION_MODE b_mode =
- xd->mode_info_context->bmi[i].as_mode;
- unsigned char *Above;
- unsigned char *yleft;
- int left_stride;
- unsigned char top_left;
-
- /*Caution: For some b_mode, it needs 8 pixels (4 above + 4 above-right).*/
- if (i < 4 && pbi->common.filter_level)
- Above = xd->recon_above[0] + b->offset;
- else
- Above = dst - dst_stride;
-
- if (i%4==0 && pbi->common.filter_level)
- {
- yleft = xd->recon_left[0] + i;
- left_stride = 1;
- }
- else
- {
- yleft = dst - 1;
- left_stride = dst_stride;
- }
-
- if ((i==4 || i==8 || i==12) && pbi->common.filter_level)
- top_left = *(xd->recon_left[0] + i - 1);
- else
- top_left = Above[-1];
-
- vp8_intra4x4_predict(Above, yleft, left_stride,
- b_mode, dst, dst_stride, top_left);
-
- if (xd->eobs[i] )
- {
- if (xd->eobs[i] > 1)
- {
- vp8_dequant_idct_add(b->qcoeff, DQC, dst, dst_stride);
- }
- else
- {
- vp8_dc_only_idct_add(b->qcoeff[0] * DQC[0],
- dst, dst_stride, dst, dst_stride);
- memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
- }
- }
- }
- }
- }
- else
- {
- vp8_build_inter_predictors_mb(xd);
- }
-
-
-#if CONFIG_ERROR_CONCEALMENT
- if (corruption_detected)
- {
- return;
- }
-#endif
-
- if(!xd->mode_info_context->mbmi.mb_skip_coeff)
- {
- /* dequantization and idct */
- if (mode != B_PRED)
- {
- short *DQC = xd->dequant_y1;
-
- if (mode != SPLITMV)
- {
- BLOCKD *b = &xd->block[24];
-
- /* do 2nd order transform on the dc block */
- if (xd->eobs[24] > 1)
- {
- vp8_dequantize_b(b, xd->dequant_y2);
-
- vp8_short_inv_walsh4x4(&b->dqcoeff[0],
- xd->qcoeff);
- memset(b->qcoeff, 0, 16 * sizeof(b->qcoeff[0]));
- }
- else
- {
- b->dqcoeff[0] = b->qcoeff[0] * xd->dequant_y2[0];
- vp8_short_inv_walsh4x4_1(&b->dqcoeff[0],
- xd->qcoeff);
- memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
- }
-
- /* override the dc dequant constant in order to preserve the
- * dc components
- */
- DQC = xd->dequant_y1_dc;
- }
-
- vp8_dequant_idct_add_y_block
- (xd->qcoeff, DQC,
- xd->dst.y_buffer,
- xd->dst.y_stride, xd->eobs);
- }
-
- vp8_dequant_idct_add_uv_block
- (xd->qcoeff+16*16, xd->dequant_uv,
- xd->dst.u_buffer, xd->dst.v_buffer,
- xd->dst.uv_stride, xd->eobs+16);
- }
-}
-
-static void mt_decode_mb_rows(VP8D_COMP *pbi, MACROBLOCKD *xd, int start_mb_row)
-{
- const int *last_row_current_mb_col;
- int *current_mb_col;
- int mb_row;
- VP8_COMMON *pc = &pbi->common;
- const int nsync = pbi->sync_range;
- const int first_row_no_sync_above = pc->mb_cols + nsync;
- int num_part = 1 << pbi->common.multi_token_partition;
- int last_mb_row = start_mb_row;
-
- YV12_BUFFER_CONFIG *yv12_fb_new = pbi->dec_fb_ref[INTRA_FRAME];
- YV12_BUFFER_CONFIG *yv12_fb_lst = pbi->dec_fb_ref[LAST_FRAME];
-
- int recon_y_stride = yv12_fb_new->y_stride;
- int recon_uv_stride = yv12_fb_new->uv_stride;
-
- unsigned char *ref_buffer[MAX_REF_FRAMES][3];
- unsigned char *dst_buffer[3];
- int i;
- int ref_fb_corrupted[MAX_REF_FRAMES];
-
- ref_fb_corrupted[INTRA_FRAME] = 0;
-
- for(i = 1; i < MAX_REF_FRAMES; i++)
- {
- YV12_BUFFER_CONFIG *this_fb = pbi->dec_fb_ref[i];
-
- ref_buffer[i][0] = this_fb->y_buffer;
- ref_buffer[i][1] = this_fb->u_buffer;
- ref_buffer[i][2] = this_fb->v_buffer;
-
- ref_fb_corrupted[i] = this_fb->corrupted;
- }
-
- dst_buffer[0] = yv12_fb_new->y_buffer;
- dst_buffer[1] = yv12_fb_new->u_buffer;
- dst_buffer[2] = yv12_fb_new->v_buffer;
-
- xd->up_available = (start_mb_row != 0);
-
- xd->mode_info_context = pc->mi + pc->mode_info_stride * start_mb_row;
- xd->mode_info_stride = pc->mode_info_stride;
-
- for (mb_row = start_mb_row; mb_row < pc->mb_rows; mb_row += (pbi->decoding_thread_count + 1))
- {
- int recon_yoffset, recon_uvoffset;
- int mb_col;
- int filter_level;
- loop_filter_info_n *lfi_n = &pc->lf_info;
-
- /* save last row processed by this thread */
- last_mb_row = mb_row;
- /* select bool coder for current partition */
- xd->current_bc = &pbi->mbc[mb_row%num_part];
-
- if (mb_row > 0)
- last_row_current_mb_col = &pbi->mt_current_mb_col[mb_row -1];
- else
- last_row_current_mb_col = &first_row_no_sync_above;
-
- current_mb_col = &pbi->mt_current_mb_col[mb_row];
-
- recon_yoffset = mb_row * recon_y_stride * 16;
- recon_uvoffset = mb_row * recon_uv_stride * 8;
-
- /* reset contexts */
- xd->above_context = pc->above_context;
- memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
-
- xd->left_available = 0;
-
- xd->mb_to_top_edge = -((mb_row * 16)) << 3;
- xd->mb_to_bottom_edge = ((pc->mb_rows - 1 - mb_row) * 16) << 3;
-
- if (pbi->common.filter_level)
- {
- xd->recon_above[0] = pbi->mt_yabove_row[mb_row] + 0*16 +32;
- xd->recon_above[1] = pbi->mt_uabove_row[mb_row] + 0*8 +16;
- xd->recon_above[2] = pbi->mt_vabove_row[mb_row] + 0*8 +16;
-
- xd->recon_left[0] = pbi->mt_yleft_col[mb_row];
- xd->recon_left[1] = pbi->mt_uleft_col[mb_row];
- xd->recon_left[2] = pbi->mt_vleft_col[mb_row];
-
- /* TODO: move to outside row loop */
- xd->recon_left_stride[0] = 1;
- xd->recon_left_stride[1] = 1;
- }
- else
- {
- xd->recon_above[0] = dst_buffer[0] + recon_yoffset;
- xd->recon_above[1] = dst_buffer[1] + recon_uvoffset;
- xd->recon_above[2] = dst_buffer[2] + recon_uvoffset;
-
- xd->recon_left[0] = xd->recon_above[0] - 1;
- xd->recon_left[1] = xd->recon_above[1] - 1;
- xd->recon_left[2] = xd->recon_above[2] - 1;
-
- xd->recon_above[0] -= xd->dst.y_stride;
- xd->recon_above[1] -= xd->dst.uv_stride;
- xd->recon_above[2] -= xd->dst.uv_stride;
-
- /* TODO: move to outside row loop */
- xd->recon_left_stride[0] = xd->dst.y_stride;
- xd->recon_left_stride[1] = xd->dst.uv_stride;
-
- setup_intra_recon_left(xd->recon_left[0], xd->recon_left[1],
- xd->recon_left[2], xd->dst.y_stride,
- xd->dst.uv_stride);
- }
-
- for (mb_col = 0; mb_col < pc->mb_cols; mb_col++) {
- if (((mb_col - 1) % nsync) == 0) {
- pthread_mutex_t *mutex = &pbi->pmutex[mb_row];
- protected_write(mutex, current_mb_col, mb_col - 1);
- }
-
- if (mb_row && !(mb_col & (nsync - 1))) {
- pthread_mutex_t *mutex = &pbi->pmutex[mb_row-1];
- sync_read(mutex, mb_col, last_row_current_mb_col, nsync);
- }
-
- /* Distance of MB to the various image edges.
- * These are specified to 8th pel as they are always
- * compared to values that are in 1/8th pel units.
- */
- xd->mb_to_left_edge = -((mb_col * 16) << 3);
- xd->mb_to_right_edge = ((pc->mb_cols - 1 - mb_col) * 16) << 3;
-
- #if CONFIG_ERROR_CONCEALMENT
- {
- int corrupt_residual =
- (!pbi->independent_partitions &&
- pbi->frame_corrupt_residual) ||
- vp8dx_bool_error(xd->current_bc);
- if (pbi->ec_active &&
- (xd->mode_info_context->mbmi.ref_frame ==
- INTRA_FRAME) &&
- corrupt_residual)
- {
- /* We have an intra block with corrupt
- * coefficients, better to conceal with an inter
- * block.
- * Interpolate MVs from neighboring MBs
- *
- * Note that for the first mb with corrupt
- * residual in a frame, we might not discover
- * that before decoding the residual. That
- * happens after this check, and therefore no
- * inter concealment will be done.
- */
- vp8_interpolate_motion(xd,
- mb_row, mb_col,
- pc->mb_rows, pc->mb_cols);
- }
- }
- #endif
-
-
- xd->dst.y_buffer = dst_buffer[0] + recon_yoffset;
- xd->dst.u_buffer = dst_buffer[1] + recon_uvoffset;
- xd->dst.v_buffer = dst_buffer[2] + recon_uvoffset;
-
- xd->pre.y_buffer = ref_buffer[xd->mode_info_context->mbmi.ref_frame][0] + recon_yoffset;
- xd->pre.u_buffer = ref_buffer[xd->mode_info_context->mbmi.ref_frame][1] + recon_uvoffset;
- xd->pre.v_buffer = ref_buffer[xd->mode_info_context->mbmi.ref_frame][2] + recon_uvoffset;
-
- /* propagate errors from reference frames */
- xd->corrupted |= ref_fb_corrupted[xd->mode_info_context->mbmi.ref_frame];
-
- mt_decode_macroblock(pbi, xd, 0);
-
- xd->left_available = 1;
-
- /* check if the boolean decoder has suffered an error */
- xd->corrupted |= vp8dx_bool_error(xd->current_bc);
-
- xd->recon_above[0] += 16;
- xd->recon_above[1] += 8;
- xd->recon_above[2] += 8;
-
- if (!pbi->common.filter_level)
- {
- xd->recon_left[0] += 16;
- xd->recon_left[1] += 8;
- xd->recon_left[2] += 8;
- }
-
- if (pbi->common.filter_level)
- {
- int skip_lf = (xd->mode_info_context->mbmi.mode != B_PRED &&
- xd->mode_info_context->mbmi.mode != SPLITMV &&
- xd->mode_info_context->mbmi.mb_skip_coeff);
-
- const int mode_index = lfi_n->mode_lf_lut[xd->mode_info_context->mbmi.mode];
- const int seg = xd->mode_info_context->mbmi.segment_id;
- const int ref_frame = xd->mode_info_context->mbmi.ref_frame;
-
- filter_level = lfi_n->lvl[seg][ref_frame][mode_index];
-
- if( mb_row != pc->mb_rows-1 )
- {
- /* Save decoded MB last row data for next-row decoding */
- memcpy((pbi->mt_yabove_row[mb_row + 1] + 32 + mb_col*16), (xd->dst.y_buffer + 15 * recon_y_stride), 16);
- memcpy((pbi->mt_uabove_row[mb_row + 1] + 16 + mb_col*8), (xd->dst.u_buffer + 7 * recon_uv_stride), 8);
- memcpy((pbi->mt_vabove_row[mb_row + 1] + 16 + mb_col*8), (xd->dst.v_buffer + 7 * recon_uv_stride), 8);
- }
-
- /* save left_col for next MB decoding */
- if(mb_col != pc->mb_cols-1)
- {
- MODE_INFO *next = xd->mode_info_context +1;
-
- if (next->mbmi.ref_frame == INTRA_FRAME)
- {
- for (i = 0; i < 16; i++)
- pbi->mt_yleft_col[mb_row][i] = xd->dst.y_buffer [i* recon_y_stride + 15];
- for (i = 0; i < 8; i++)
- {
- pbi->mt_uleft_col[mb_row][i] = xd->dst.u_buffer [i* recon_uv_stride + 7];
- pbi->mt_vleft_col[mb_row][i] = xd->dst.v_buffer [i* recon_uv_stride + 7];
- }
- }
- }
-
- /* loopfilter on this macroblock. */
- if (filter_level)
- {
- if(pc->filter_type == NORMAL_LOOPFILTER)
- {
- loop_filter_info lfi;
- FRAME_TYPE frame_type = pc->frame_type;
- const int hev_index = lfi_n->hev_thr_lut[frame_type][filter_level];
- lfi.mblim = lfi_n->mblim[filter_level];
- lfi.blim = lfi_n->blim[filter_level];
- lfi.lim = lfi_n->lim[filter_level];
- lfi.hev_thr = lfi_n->hev_thr[hev_index];
-
- if (mb_col > 0)
- vp8_loop_filter_mbv
- (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bv
- (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi);
-
- /* don't apply across umv border */
- if (mb_row > 0)
- vp8_loop_filter_mbh
- (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi);
-
- if (!skip_lf)
- vp8_loop_filter_bh
- (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi);
- }
- else
- {
- if (mb_col > 0)
- vp8_loop_filter_simple_mbv
- (xd->dst.y_buffer, recon_y_stride, lfi_n->mblim[filter_level]);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bv
- (xd->dst.y_buffer, recon_y_stride, lfi_n->blim[filter_level]);
-
- /* don't apply across umv border */
- if (mb_row > 0)
- vp8_loop_filter_simple_mbh
- (xd->dst.y_buffer, recon_y_stride, lfi_n->mblim[filter_level]);
-
- if (!skip_lf)
- vp8_loop_filter_simple_bh
- (xd->dst.y_buffer, recon_y_stride, lfi_n->blim[filter_level]);
- }
- }
-
- }
-
- recon_yoffset += 16;
- recon_uvoffset += 8;
-
- ++xd->mode_info_context; /* next mb */
-
- xd->above_context++;
- }
-
- /* adjust to the next row of mbs */
- if (pbi->common.filter_level)
- {
- if(mb_row != pc->mb_rows-1)
- {
- int lasty = yv12_fb_lst->y_width + VP8BORDERINPIXELS;
- int lastuv = (yv12_fb_lst->y_width>>1) + (VP8BORDERINPIXELS>>1);
-
- for (i = 0; i < 4; i++)
- {
- pbi->mt_yabove_row[mb_row +1][lasty + i] = pbi->mt_yabove_row[mb_row +1][lasty -1];
- pbi->mt_uabove_row[mb_row +1][lastuv + i] = pbi->mt_uabove_row[mb_row +1][lastuv -1];
- pbi->mt_vabove_row[mb_row +1][lastuv + i] = pbi->mt_vabove_row[mb_row +1][lastuv -1];
- }
- }
- }
- else
- vp8_extend_mb_row(yv12_fb_new, xd->dst.y_buffer + 16,
- xd->dst.u_buffer + 8, xd->dst.v_buffer + 8);
-
- /* last MB of row is ready just after extension is done */
- protected_write(&pbi->pmutex[mb_row], current_mb_col, mb_col + nsync);
-
- ++xd->mode_info_context; /* skip prediction column */
- xd->up_available = 1;
-
- /* since we have multithread */
- xd->mode_info_context += xd->mode_info_stride * pbi->decoding_thread_count;
- }
-
- /* signal end of frame decoding if this thread processed the last mb_row */
- if (last_mb_row == (pc->mb_rows - 1))
- sem_post(&pbi->h_event_end_decoding);
-
-}
-
-
-static THREAD_FUNCTION thread_decoding_proc(void *p_data)
-{
- int ithread = ((DECODETHREAD_DATA *)p_data)->ithread;
- VP8D_COMP *pbi = (VP8D_COMP *)(((DECODETHREAD_DATA *)p_data)->ptr1);
- MB_ROW_DEC *mbrd = (MB_ROW_DEC *)(((DECODETHREAD_DATA *)p_data)->ptr2);
- ENTROPY_CONTEXT_PLANES mb_row_left_context;
-
- while (1)
- {
- if (protected_read(&pbi->mt_mutex, &pbi->b_multithreaded_rd) == 0)
- break;
-
- if (sem_wait(&pbi->h_event_start_decoding[ithread]) == 0)
- {
- if (protected_read(&pbi->mt_mutex, &pbi->b_multithreaded_rd) == 0)
- break;
- else
- {
- MACROBLOCKD *xd = &mbrd->mbd;
- xd->left_context = &mb_row_left_context;
-
- mt_decode_mb_rows(pbi, xd, ithread+1);
- }
- }
- }
-
- return 0 ;
-}
-
-
-void vp8_decoder_create_threads(VP8D_COMP *pbi)
-{
- int core_count = 0;
- unsigned int ithread;
-
- pbi->b_multithreaded_rd = 0;
- pbi->allocated_decoding_thread_count = 0;
- pthread_mutex_init(&pbi->mt_mutex, NULL);
-
- /* limit decoding threads to the max number of token partitions */
- core_count = (pbi->max_threads > 8) ? 8 : pbi->max_threads;
-
- /* limit decoding threads to the available cores */
- if (core_count > pbi->common.processor_core_count)
- core_count = pbi->common.processor_core_count;
-
- if (core_count > 1)
- {
- pbi->b_multithreaded_rd = 1;
- pbi->decoding_thread_count = core_count - 1;
-
- CALLOC_ARRAY(pbi->h_decoding_thread, pbi->decoding_thread_count);
- CALLOC_ARRAY(pbi->h_event_start_decoding, pbi->decoding_thread_count);
- CALLOC_ARRAY_ALIGNED(pbi->mb_row_di, pbi->decoding_thread_count, 32);
- CALLOC_ARRAY(pbi->de_thread_data, pbi->decoding_thread_count);
-
- for (ithread = 0; ithread < pbi->decoding_thread_count; ithread++)
- {
- sem_init(&pbi->h_event_start_decoding[ithread], 0, 0);
-
- vp8_setup_block_dptrs(&pbi->mb_row_di[ithread].mbd);
-
- pbi->de_thread_data[ithread].ithread = ithread;
- pbi->de_thread_data[ithread].ptr1 = (void *)pbi;
- pbi->de_thread_data[ithread].ptr2 = (void *) &pbi->mb_row_di[ithread];
-
- pthread_create(&pbi->h_decoding_thread[ithread], 0, thread_decoding_proc, (&pbi->de_thread_data[ithread]));
- }
-
- sem_init(&pbi->h_event_end_decoding, 0, 0);
-
- pbi->allocated_decoding_thread_count = pbi->decoding_thread_count;
- }
-}
-
-
-void vp8mt_de_alloc_temp_buffers(VP8D_COMP *pbi, int mb_rows)
-{
- int i;
-
- if (protected_read(&pbi->mt_mutex, &pbi->b_multithreaded_rd))
- {
- /* De-allocate mutex */
- if (pbi->pmutex != NULL) {
- for (i = 0; i < mb_rows; i++) {
- pthread_mutex_destroy(&pbi->pmutex[i]);
- }
- vpx_free(pbi->pmutex);
- pbi->pmutex = NULL;
- }
-
- vpx_free(pbi->mt_current_mb_col);
- pbi->mt_current_mb_col = NULL ;
-
- /* Free above_row buffers. */
- if (pbi->mt_yabove_row)
- {
- for (i=0; i< mb_rows; i++)
- {
- vpx_free(pbi->mt_yabove_row[i]);
- pbi->mt_yabove_row[i] = NULL ;
- }
- vpx_free(pbi->mt_yabove_row);
- pbi->mt_yabove_row = NULL ;
- }
-
- if (pbi->mt_uabove_row)
- {
- for (i=0; i< mb_rows; i++)
- {
- vpx_free(pbi->mt_uabove_row[i]);
- pbi->mt_uabove_row[i] = NULL ;
- }
- vpx_free(pbi->mt_uabove_row);
- pbi->mt_uabove_row = NULL ;
- }
-
- if (pbi->mt_vabove_row)
- {
- for (i=0; i< mb_rows; i++)
- {
- vpx_free(pbi->mt_vabove_row[i]);
- pbi->mt_vabove_row[i] = NULL ;
- }
- vpx_free(pbi->mt_vabove_row);
- pbi->mt_vabove_row = NULL ;
- }
-
- /* Free left_col buffers. */
- if (pbi->mt_yleft_col)
- {
- for (i=0; i< mb_rows; i++)
- {
- vpx_free(pbi->mt_yleft_col[i]);
- pbi->mt_yleft_col[i] = NULL ;
- }
- vpx_free(pbi->mt_yleft_col);
- pbi->mt_yleft_col = NULL ;
- }
-
- if (pbi->mt_uleft_col)
- {
- for (i=0; i< mb_rows; i++)
- {
- vpx_free(pbi->mt_uleft_col[i]);
- pbi->mt_uleft_col[i] = NULL ;
- }
- vpx_free(pbi->mt_uleft_col);
- pbi->mt_uleft_col = NULL ;
- }
-
- if (pbi->mt_vleft_col)
- {
- for (i=0; i< mb_rows; i++)
- {
- vpx_free(pbi->mt_vleft_col[i]);
- pbi->mt_vleft_col[i] = NULL ;
- }
- vpx_free(pbi->mt_vleft_col);
- pbi->mt_vleft_col = NULL ;
- }
- }
-}
-
-
-void vp8mt_alloc_temp_buffers(VP8D_COMP *pbi, int width, int prev_mb_rows)
-{
- VP8_COMMON *const pc = & pbi->common;
- int i;
- int uv_width;
-
- if (protected_read(&pbi->mt_mutex, &pbi->b_multithreaded_rd))
- {
- vp8mt_de_alloc_temp_buffers(pbi, prev_mb_rows);
-
- /* our internal buffers are always multiples of 16 */
- if ((width & 0xf) != 0)
- width += 16 - (width & 0xf);
-
- if (width < 640) pbi->sync_range = 1;
- else if (width <= 1280) pbi->sync_range = 8;
- else if (width <= 2560) pbi->sync_range =16;
- else pbi->sync_range = 32;
-
- uv_width = width >>1;
-
- /* Allocate mutex */
- CHECK_MEM_ERROR(pbi->pmutex, vpx_malloc(sizeof(*pbi->pmutex) *
- pc->mb_rows));
- if (pbi->pmutex) {
- for (i = 0; i < pc->mb_rows; i++) {
- pthread_mutex_init(&pbi->pmutex[i], NULL);
- }
- }
-
- /* Allocate an int for each mb row. */
- CALLOC_ARRAY(pbi->mt_current_mb_col, pc->mb_rows);
-
- /* Allocate memory for above_row buffers. */
- CALLOC_ARRAY(pbi->mt_yabove_row, pc->mb_rows);
- for (i = 0; i < pc->mb_rows; i++)
- CHECK_MEM_ERROR(pbi->mt_yabove_row[i], vpx_memalign(16,sizeof(unsigned char) * (width + (VP8BORDERINPIXELS<<1))));
-
- CALLOC_ARRAY(pbi->mt_uabove_row, pc->mb_rows);
- for (i = 0; i < pc->mb_rows; i++)
- CHECK_MEM_ERROR(pbi->mt_uabove_row[i], vpx_memalign(16,sizeof(unsigned char) * (uv_width + VP8BORDERINPIXELS)));
-
- CALLOC_ARRAY(pbi->mt_vabove_row, pc->mb_rows);
- for (i = 0; i < pc->mb_rows; i++)
- CHECK_MEM_ERROR(pbi->mt_vabove_row[i], vpx_memalign(16,sizeof(unsigned char) * (uv_width + VP8BORDERINPIXELS)));
-
- /* Allocate memory for left_col buffers. */
- CALLOC_ARRAY(pbi->mt_yleft_col, pc->mb_rows);
- for (i = 0; i < pc->mb_rows; i++)
- CHECK_MEM_ERROR(pbi->mt_yleft_col[i], vpx_calloc(sizeof(unsigned char) * 16, 1));
-
- CALLOC_ARRAY(pbi->mt_uleft_col, pc->mb_rows);
- for (i = 0; i < pc->mb_rows; i++)
- CHECK_MEM_ERROR(pbi->mt_uleft_col[i], vpx_calloc(sizeof(unsigned char) * 8, 1));
-
- CALLOC_ARRAY(pbi->mt_vleft_col, pc->mb_rows);
- for (i = 0; i < pc->mb_rows; i++)
- CHECK_MEM_ERROR(pbi->mt_vleft_col[i], vpx_calloc(sizeof(unsigned char) * 8, 1));
- }
-}
-
-
-void vp8_decoder_remove_threads(VP8D_COMP *pbi)
-{
- /* shutdown MB Decoding thread; */
- if (protected_read(&pbi->mt_mutex, &pbi->b_multithreaded_rd))
- {
- int i;
-
- protected_write(&pbi->mt_mutex, &pbi->b_multithreaded_rd, 0);
-
- /* allow all threads to exit */
- for (i = 0; i < pbi->allocated_decoding_thread_count; i++)
- {
- sem_post(&pbi->h_event_start_decoding[i]);
- pthread_join(pbi->h_decoding_thread[i], NULL);
- }
-
- for (i = 0; i < pbi->allocated_decoding_thread_count; i++)
- {
- sem_destroy(&pbi->h_event_start_decoding[i]);
- }
-
- sem_destroy(&pbi->h_event_end_decoding);
-
- vpx_free(pbi->h_decoding_thread);
- pbi->h_decoding_thread = NULL;
-
- vpx_free(pbi->h_event_start_decoding);
- pbi->h_event_start_decoding = NULL;
-
- vpx_free(pbi->mb_row_di);
- pbi->mb_row_di = NULL ;
-
- vpx_free(pbi->de_thread_data);
- pbi->de_thread_data = NULL;
- }
- pthread_mutex_destroy(&pbi->mt_mutex);
-}
-
-void vp8mt_decode_mb_rows( VP8D_COMP *pbi, MACROBLOCKD *xd)
-{
- VP8_COMMON *pc = &pbi->common;
- unsigned int i;
- int j;
-
- int filter_level = pc->filter_level;
- YV12_BUFFER_CONFIG *yv12_fb_new = pbi->dec_fb_ref[INTRA_FRAME];
-
- if (filter_level)
- {
- /* Set above_row buffer to 127 for decoding first MB row */
- memset(pbi->mt_yabove_row[0] + VP8BORDERINPIXELS-1, 127, yv12_fb_new->y_width + 5);
- memset(pbi->mt_uabove_row[0] + (VP8BORDERINPIXELS>>1)-1, 127, (yv12_fb_new->y_width>>1) +5);
- memset(pbi->mt_vabove_row[0] + (VP8BORDERINPIXELS>>1)-1, 127, (yv12_fb_new->y_width>>1) +5);
-
- for (j=1; j<pc->mb_rows; j++)
- {
- memset(pbi->mt_yabove_row[j] + VP8BORDERINPIXELS-1, (unsigned char)129, 1);
- memset(pbi->mt_uabove_row[j] + (VP8BORDERINPIXELS>>1)-1, (unsigned char)129, 1);
- memset(pbi->mt_vabove_row[j] + (VP8BORDERINPIXELS>>1)-1, (unsigned char)129, 1);
- }
-
- /* Set left_col to 129 initially */
- for (j=0; j<pc->mb_rows; j++)
- {
- memset(pbi->mt_yleft_col[j], (unsigned char)129, 16);
- memset(pbi->mt_uleft_col[j], (unsigned char)129, 8);
- memset(pbi->mt_vleft_col[j], (unsigned char)129, 8);
- }
-
- /* Initialize the loop filter for this frame. */
- vp8_loop_filter_frame_init(pc, &pbi->mb, filter_level);
- }
- else
- vp8_setup_intra_recon_top_line(yv12_fb_new);
-
- setup_decoding_thread_data(pbi, xd, pbi->mb_row_di, pbi->decoding_thread_count);
-
- for (i = 0; i < pbi->decoding_thread_count; i++)
- sem_post(&pbi->h_event_start_decoding[i]);
-
- mt_decode_mb_rows(pbi, xd, 0);
-
- sem_wait(&pbi->h_event_end_decoding); /* add back for each frame */
-}
diff --git a/thirdparty/libvpx/vp8/decoder/treereader.h b/thirdparty/libvpx/vp8/decoder/treereader.h
deleted file mode 100644
index f7d23c3698..0000000000
--- a/thirdparty/libvpx/vp8/decoder/treereader.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP8_DECODER_TREEREADER_H_
-#define VP8_DECODER_TREEREADER_H_
-
-#include "./vpx_config.h"
-#include "vp8/common/treecoder.h"
-#include "dboolhuff.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef BOOL_DECODER vp8_reader;
-
-#define vp8_read vp8dx_decode_bool
-#define vp8_read_literal vp8_decode_value
-#define vp8_read_bit(R) vp8_read(R, vp8_prob_half)
-
-
-/* Intent of tree data structure is to make decoding trivial. */
-
-static INLINE int vp8_treed_read(
- vp8_reader *const r, /* !!! must return a 0 or 1 !!! */
- vp8_tree t,
- const vp8_prob *const p
-)
-{
- register vp8_tree_index i = 0;
-
- while ((i = t[ i + vp8_read(r, p[i>>1])]) > 0) ;
-
- return -i;
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP8_DECODER_TREEREADER_H_
diff --git a/thirdparty/libvpx/vp8/vp8_dx_iface.c b/thirdparty/libvpx/vp8/vp8_dx_iface.c
deleted file mode 100644
index fc9288d62b..0000000000
--- a/thirdparty/libvpx/vp8/vp8_dx_iface.c
+++ /dev/null
@@ -1,828 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include "./vp8_rtcd.h"
-#include "./vpx_dsp_rtcd.h"
-#include "./vpx_scale_rtcd.h"
-#include "vpx/vpx_decoder.h"
-#include "vpx/vp8dx.h"
-#include "vpx/internal/vpx_codec_internal.h"
-#include "vpx_version.h"
-#include "common/alloccommon.h"
-#include "common/common.h"
-#include "common/onyxd.h"
-#include "decoder/onyxd_int.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#if CONFIG_ERROR_CONCEALMENT
-#include "decoder/error_concealment.h"
-#endif
-#include "decoder/decoderthreading.h"
-
-#define VP8_CAP_POSTPROC (CONFIG_POSTPROC ? VPX_CODEC_CAP_POSTPROC : 0)
-#define VP8_CAP_ERROR_CONCEALMENT (CONFIG_ERROR_CONCEALMENT ? \
- VPX_CODEC_CAP_ERROR_CONCEALMENT : 0)
-
-typedef vpx_codec_stream_info_t vp8_stream_info_t;
-
-/* Structures for handling memory allocations */
-typedef enum
-{
- VP8_SEG_ALG_PRIV = 256,
- VP8_SEG_MAX
-} mem_seg_id_t;
-#define NELEMENTS(x) ((int)(sizeof(x)/sizeof(x[0])))
-
-struct vpx_codec_alg_priv
-{
- vpx_codec_priv_t base;
- vpx_codec_dec_cfg_t cfg;
- vp8_stream_info_t si;
- int decoder_init;
- int postproc_cfg_set;
- vp8_postproc_cfg_t postproc_cfg;
-#if CONFIG_POSTPROC_VISUALIZER
- unsigned int dbg_postproc_flag;
- int dbg_color_ref_frame_flag;
- int dbg_color_mb_modes_flag;
- int dbg_color_b_modes_flag;
- int dbg_display_mv_flag;
-#endif
- vpx_decrypt_cb decrypt_cb;
- void *decrypt_state;
- vpx_image_t img;
- int img_setup;
- struct frame_buffers yv12_frame_buffers;
- void *user_priv;
- FRAGMENT_DATA fragments;
-};
-
-static int vp8_init_ctx(vpx_codec_ctx_t *ctx)
-{
- vpx_codec_alg_priv_t *priv =
- (vpx_codec_alg_priv_t *)vpx_calloc(1, sizeof(*priv));
- if (!priv) return 1;
-
- ctx->priv = (vpx_codec_priv_t *)priv;
- ctx->priv->init_flags = ctx->init_flags;
-
- priv->si.sz = sizeof(priv->si);
- priv->decrypt_cb = NULL;
- priv->decrypt_state = NULL;
-
- if (ctx->config.dec)
- {
- /* Update the reference to the config structure to an internal copy. */
- priv->cfg = *ctx->config.dec;
- ctx->config.dec = &priv->cfg;
- }
-
- return 0;
-}
-
-static vpx_codec_err_t vp8_init(vpx_codec_ctx_t *ctx,
- vpx_codec_priv_enc_mr_cfg_t *data)
-{
- vpx_codec_err_t res = VPX_CODEC_OK;
- vpx_codec_alg_priv_t *priv = NULL;
- (void) data;
-
- vp8_rtcd();
- vpx_dsp_rtcd();
- vpx_scale_rtcd();
-
- /* This function only allocates space for the vpx_codec_alg_priv_t
- * structure. More memory may be required at the time the stream
- * information becomes known.
- */
- if (!ctx->priv) {
- if (vp8_init_ctx(ctx)) return VPX_CODEC_MEM_ERROR;
- priv = (vpx_codec_alg_priv_t *)ctx->priv;
-
- /* initialize number of fragments to zero */
- priv->fragments.count = 0;
- /* is input fragments enabled? */
- priv->fragments.enabled =
- (priv->base.init_flags & VPX_CODEC_USE_INPUT_FRAGMENTS);
-
- /*post processing level initialized to do nothing */
- } else {
- priv = (vpx_codec_alg_priv_t *)ctx->priv;
- }
-
- priv->yv12_frame_buffers.use_frame_threads =
- (ctx->priv->init_flags & VPX_CODEC_USE_FRAME_THREADING);
-
- /* for now, disable frame threading */
- priv->yv12_frame_buffers.use_frame_threads = 0;
-
- if (priv->yv12_frame_buffers.use_frame_threads &&
- ((ctx->priv->init_flags & VPX_CODEC_USE_ERROR_CONCEALMENT) ||
- (ctx->priv->init_flags & VPX_CODEC_USE_INPUT_FRAGMENTS))) {
- /* row-based threading, error concealment, and input fragments will
- * not be supported when using frame-based threading */
- res = VPX_CODEC_INVALID_PARAM;
- }
-
- return res;
-}
-
-static vpx_codec_err_t vp8_destroy(vpx_codec_alg_priv_t *ctx)
-{
- vp8_remove_decoder_instances(&ctx->yv12_frame_buffers);
-
- vpx_free(ctx);
-
- return VPX_CODEC_OK;
-}
-
-static vpx_codec_err_t vp8_peek_si_internal(const uint8_t *data,
- unsigned int data_sz,
- vpx_codec_stream_info_t *si,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state)
-{
- vpx_codec_err_t res = VPX_CODEC_OK;
-
- assert(data != NULL);
-
- if(data + data_sz <= data)
- {
- res = VPX_CODEC_INVALID_PARAM;
- }
- else
- {
- /* Parse uncompresssed part of key frame header.
- * 3 bytes:- including version, frame type and an offset
- * 3 bytes:- sync code (0x9d, 0x01, 0x2a)
- * 4 bytes:- including image width and height in the lowest 14 bits
- * of each 2-byte value.
- */
- uint8_t clear_buffer[10];
- const uint8_t *clear = data;
- if (decrypt_cb)
- {
- int n = VPXMIN(sizeof(clear_buffer), data_sz);
- decrypt_cb(decrypt_state, data, clear_buffer, n);
- clear = clear_buffer;
- }
- si->is_kf = 0;
-
- if (data_sz >= 10 && !(clear[0] & 0x01)) /* I-Frame */
- {
- si->is_kf = 1;
-
- /* vet via sync code */
- if (clear[3] != 0x9d || clear[4] != 0x01 || clear[5] != 0x2a)
- return VPX_CODEC_UNSUP_BITSTREAM;
-
- si->w = (clear[6] | (clear[7] << 8)) & 0x3fff;
- si->h = (clear[8] | (clear[9] << 8)) & 0x3fff;
-
- /*printf("w=%d, h=%d\n", si->w, si->h);*/
- if (!(si->h | si->w))
- res = VPX_CODEC_UNSUP_BITSTREAM;
- }
- else
- {
- res = VPX_CODEC_UNSUP_BITSTREAM;
- }
- }
-
- return res;
-}
-
-static vpx_codec_err_t vp8_peek_si(const uint8_t *data,
- unsigned int data_sz,
- vpx_codec_stream_info_t *si) {
- return vp8_peek_si_internal(data, data_sz, si, NULL, NULL);
-}
-
-static vpx_codec_err_t vp8_get_si(vpx_codec_alg_priv_t *ctx,
- vpx_codec_stream_info_t *si)
-{
-
- unsigned int sz;
-
- if (si->sz >= sizeof(vp8_stream_info_t))
- sz = sizeof(vp8_stream_info_t);
- else
- sz = sizeof(vpx_codec_stream_info_t);
-
- memcpy(si, &ctx->si, sz);
- si->sz = sz;
-
- return VPX_CODEC_OK;
-}
-
-
-static vpx_codec_err_t
-update_error_state(vpx_codec_alg_priv_t *ctx,
- const struct vpx_internal_error_info *error)
-{
- vpx_codec_err_t res;
-
- if ((res = error->error_code))
- ctx->base.err_detail = error->has_detail
- ? error->detail
- : NULL;
-
- return res;
-}
-
-static void yuvconfig2image(vpx_image_t *img,
- const YV12_BUFFER_CONFIG *yv12,
- void *user_priv)
-{
- /** vpx_img_wrap() doesn't allow specifying independent strides for
- * the Y, U, and V planes, nor other alignment adjustments that
- * might be representable by a YV12_BUFFER_CONFIG, so we just
- * initialize all the fields.*/
- img->fmt = VPX_IMG_FMT_I420;
- img->w = yv12->y_stride;
- img->h = (yv12->y_height + 2 * VP8BORDERINPIXELS + 15) & ~15;
- img->d_w = img->r_w = yv12->y_width;
- img->d_h = img->r_h = yv12->y_height;
- img->x_chroma_shift = 1;
- img->y_chroma_shift = 1;
- img->planes[VPX_PLANE_Y] = yv12->y_buffer;
- img->planes[VPX_PLANE_U] = yv12->u_buffer;
- img->planes[VPX_PLANE_V] = yv12->v_buffer;
- img->planes[VPX_PLANE_ALPHA] = NULL;
- img->stride[VPX_PLANE_Y] = yv12->y_stride;
- img->stride[VPX_PLANE_U] = yv12->uv_stride;
- img->stride[VPX_PLANE_V] = yv12->uv_stride;
- img->stride[VPX_PLANE_ALPHA] = yv12->y_stride;
- img->bit_depth = 8;
- img->bps = 12;
- img->user_priv = user_priv;
- img->img_data = yv12->buffer_alloc;
- img->img_data_owner = 0;
- img->self_allocd = 0;
-}
-
-static int
-update_fragments(vpx_codec_alg_priv_t *ctx,
- const uint8_t *data,
- unsigned int data_sz,
- vpx_codec_err_t *res)
-{
- *res = VPX_CODEC_OK;
-
- if (ctx->fragments.count == 0)
- {
- /* New frame, reset fragment pointers and sizes */
- memset((void*)ctx->fragments.ptrs, 0, sizeof(ctx->fragments.ptrs));
- memset(ctx->fragments.sizes, 0, sizeof(ctx->fragments.sizes));
- }
- if (ctx->fragments.enabled && !(data == NULL && data_sz == 0))
- {
- /* Store a pointer to this fragment and return. We haven't
- * received the complete frame yet, so we will wait with decoding.
- */
- ctx->fragments.ptrs[ctx->fragments.count] = data;
- ctx->fragments.sizes[ctx->fragments.count] = data_sz;
- ctx->fragments.count++;
- if (ctx->fragments.count > (1 << EIGHT_PARTITION) + 1)
- {
- ctx->fragments.count = 0;
- *res = VPX_CODEC_INVALID_PARAM;
- return -1;
- }
- return 0;
- }
-
- if (!ctx->fragments.enabled && (data == NULL && data_sz == 0))
- {
- return 0;
- }
-
- if (!ctx->fragments.enabled)
- {
- ctx->fragments.ptrs[0] = data;
- ctx->fragments.sizes[0] = data_sz;
- ctx->fragments.count = 1;
- }
-
- return 1;
-}
-
-static vpx_codec_err_t vp8_decode(vpx_codec_alg_priv_t *ctx,
- const uint8_t *data,
- unsigned int data_sz,
- void *user_priv,
- long deadline)
-{
- vpx_codec_err_t res = VPX_CODEC_OK;
- unsigned int resolution_change = 0;
- unsigned int w, h;
-
- if (!ctx->fragments.enabled && (data == NULL && data_sz == 0))
- {
- return 0;
- }
-
- /* Update the input fragment data */
- if(update_fragments(ctx, data, data_sz, &res) <= 0)
- return res;
-
- /* Determine the stream parameters. Note that we rely on peek_si to
- * validate that we have a buffer that does not wrap around the top
- * of the heap.
- */
- w = ctx->si.w;
- h = ctx->si.h;
-
- res = vp8_peek_si_internal(ctx->fragments.ptrs[0], ctx->fragments.sizes[0],
- &ctx->si, ctx->decrypt_cb, ctx->decrypt_state);
-
- if((res == VPX_CODEC_UNSUP_BITSTREAM) && !ctx->si.is_kf)
- {
- /* the peek function returns an error for non keyframes, however for
- * this case, it is not an error */
- res = VPX_CODEC_OK;
- }
-
- if(!ctx->decoder_init && !ctx->si.is_kf)
- res = VPX_CODEC_UNSUP_BITSTREAM;
-
- if ((ctx->si.h != h) || (ctx->si.w != w))
- resolution_change = 1;
-
- /* Initialize the decoder instance on the first frame*/
- if (!res && !ctx->decoder_init)
- {
- VP8D_CONFIG oxcf;
-
- oxcf.Width = ctx->si.w;
- oxcf.Height = ctx->si.h;
- oxcf.Version = 9;
- oxcf.postprocess = 0;
- oxcf.max_threads = ctx->cfg.threads;
- oxcf.error_concealment =
- (ctx->base.init_flags & VPX_CODEC_USE_ERROR_CONCEALMENT);
-
- /* If postprocessing was enabled by the application and a
- * configuration has not been provided, default it.
- */
- if (!ctx->postproc_cfg_set
- && (ctx->base.init_flags & VPX_CODEC_USE_POSTPROC)) {
- ctx->postproc_cfg.post_proc_flag =
- VP8_DEBLOCK | VP8_DEMACROBLOCK | VP8_MFQE;
- ctx->postproc_cfg.deblocking_level = 4;
- ctx->postproc_cfg.noise_level = 0;
- }
-
- res = vp8_create_decoder_instances(&ctx->yv12_frame_buffers, &oxcf);
- ctx->decoder_init = 1;
- }
-
- /* Set these even if already initialized. The caller may have changed the
- * decrypt config between frames.
- */
- if (ctx->decoder_init) {
- ctx->yv12_frame_buffers.pbi[0]->decrypt_cb = ctx->decrypt_cb;
- ctx->yv12_frame_buffers.pbi[0]->decrypt_state = ctx->decrypt_state;
- }
-
- if (!res)
- {
- VP8D_COMP *pbi = ctx->yv12_frame_buffers.pbi[0];
- if (resolution_change)
- {
- VP8_COMMON *const pc = & pbi->common;
- MACROBLOCKD *const xd = & pbi->mb;
-#if CONFIG_MULTITHREAD
- int i;
-#endif
- pc->Width = ctx->si.w;
- pc->Height = ctx->si.h;
- {
- int prev_mb_rows = pc->mb_rows;
-
- if (setjmp(pbi->common.error.jmp))
- {
- pbi->common.error.setjmp = 0;
- vp8_clear_system_state();
- /* same return value as used in vp8dx_receive_compressed_data */
- return -1;
- }
-
- pbi->common.error.setjmp = 1;
-
- if (pc->Width <= 0)
- {
- pc->Width = w;
- vpx_internal_error(&pc->error, VPX_CODEC_CORRUPT_FRAME,
- "Invalid frame width");
- }
-
- if (pc->Height <= 0)
- {
- pc->Height = h;
- vpx_internal_error(&pc->error, VPX_CODEC_CORRUPT_FRAME,
- "Invalid frame height");
- }
-
- if (vp8_alloc_frame_buffers(pc, pc->Width, pc->Height))
- vpx_internal_error(&pc->error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate frame buffers");
-
- xd->pre = pc->yv12_fb[pc->lst_fb_idx];
- xd->dst = pc->yv12_fb[pc->new_fb_idx];
-
-#if CONFIG_MULTITHREAD
- for (i = 0; i < pbi->allocated_decoding_thread_count; i++)
- {
- pbi->mb_row_di[i].mbd.dst = pc->yv12_fb[pc->new_fb_idx];
- vp8_build_block_doffsets(&pbi->mb_row_di[i].mbd);
- }
-#endif
- vp8_build_block_doffsets(&pbi->mb);
-
- /* allocate memory for last frame MODE_INFO array */
-#if CONFIG_ERROR_CONCEALMENT
-
- if (pbi->ec_enabled)
- {
- /* old prev_mip was released by vp8_de_alloc_frame_buffers()
- * called in vp8_alloc_frame_buffers() */
- pc->prev_mip = vpx_calloc(
- (pc->mb_cols + 1) * (pc->mb_rows + 1),
- sizeof(MODE_INFO));
-
- if (!pc->prev_mip)
- {
- vp8_de_alloc_frame_buffers(pc);
- vpx_internal_error(&pc->error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate"
- "last frame MODE_INFO array");
- }
-
- pc->prev_mi = pc->prev_mip + pc->mode_info_stride + 1;
-
- if (vp8_alloc_overlap_lists(pbi))
- vpx_internal_error(&pc->error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate overlap lists "
- "for error concealment");
- }
-
-#endif
-
-#if CONFIG_MULTITHREAD
- if (pbi->b_multithreaded_rd)
- vp8mt_alloc_temp_buffers(pbi, pc->Width, prev_mb_rows);
-#else
- (void)prev_mb_rows;
-#endif
- }
-
- pbi->common.error.setjmp = 0;
-
- /* required to get past the first get_free_fb() call */
- pbi->common.fb_idx_ref_cnt[0] = 0;
- }
-
- /* update the pbi fragment data */
- pbi->fragments = ctx->fragments;
-
- ctx->user_priv = user_priv;
- if (vp8dx_receive_compressed_data(pbi, data_sz, data, deadline))
- {
- res = update_error_state(ctx, &pbi->common.error);
- }
-
- /* get ready for the next series of fragments */
- ctx->fragments.count = 0;
- }
-
- return res;
-}
-
-static vpx_image_t *vp8_get_frame(vpx_codec_alg_priv_t *ctx,
- vpx_codec_iter_t *iter)
-{
- vpx_image_t *img = NULL;
-
- /* iter acts as a flip flop, so an image is only returned on the first
- * call to get_frame.
- */
- if (!(*iter) && ctx->yv12_frame_buffers.pbi[0])
- {
- YV12_BUFFER_CONFIG sd;
- int64_t time_stamp = 0, time_end_stamp = 0;
- vp8_ppflags_t flags;
- vp8_zero(flags);
-
- if (ctx->base.init_flags & VPX_CODEC_USE_POSTPROC)
- {
- flags.post_proc_flag= ctx->postproc_cfg.post_proc_flag
-#if CONFIG_POSTPROC_VISUALIZER
-
- | ((ctx->dbg_color_ref_frame_flag != 0) ? VP8D_DEBUG_CLR_FRM_REF_BLKS : 0)
- | ((ctx->dbg_color_mb_modes_flag != 0) ? VP8D_DEBUG_CLR_BLK_MODES : 0)
- | ((ctx->dbg_color_b_modes_flag != 0) ? VP8D_DEBUG_CLR_BLK_MODES : 0)
- | ((ctx->dbg_display_mv_flag != 0) ? VP8D_DEBUG_DRAW_MV : 0)
-#endif
- ;
- flags.deblocking_level = ctx->postproc_cfg.deblocking_level;
- flags.noise_level = ctx->postproc_cfg.noise_level;
-#if CONFIG_POSTPROC_VISUALIZER
- flags.display_ref_frame_flag= ctx->dbg_color_ref_frame_flag;
- flags.display_mb_modes_flag = ctx->dbg_color_mb_modes_flag;
- flags.display_b_modes_flag = ctx->dbg_color_b_modes_flag;
- flags.display_mv_flag = ctx->dbg_display_mv_flag;
-#endif
- }
-
- if (0 == vp8dx_get_raw_frame(ctx->yv12_frame_buffers.pbi[0], &sd,
- &time_stamp, &time_end_stamp, &flags))
- {
- yuvconfig2image(&ctx->img, &sd, ctx->user_priv);
-
- img = &ctx->img;
- *iter = img;
- }
- }
-
- return img;
-}
-
-static vpx_codec_err_t image2yuvconfig(const vpx_image_t *img,
- YV12_BUFFER_CONFIG *yv12)
-{
- const int y_w = img->d_w;
- const int y_h = img->d_h;
- const int uv_w = (img->d_w + 1) / 2;
- const int uv_h = (img->d_h + 1) / 2;
- vpx_codec_err_t res = VPX_CODEC_OK;
- yv12->y_buffer = img->planes[VPX_PLANE_Y];
- yv12->u_buffer = img->planes[VPX_PLANE_U];
- yv12->v_buffer = img->planes[VPX_PLANE_V];
-
- yv12->y_crop_width = y_w;
- yv12->y_crop_height = y_h;
- yv12->y_width = y_w;
- yv12->y_height = y_h;
- yv12->uv_crop_width = uv_w;
- yv12->uv_crop_height = uv_h;
- yv12->uv_width = uv_w;
- yv12->uv_height = uv_h;
-
- yv12->y_stride = img->stride[VPX_PLANE_Y];
- yv12->uv_stride = img->stride[VPX_PLANE_U];
-
- yv12->border = (img->stride[VPX_PLANE_Y] - img->d_w) / 2;
- return res;
-}
-
-
-static vpx_codec_err_t vp8_set_reference(vpx_codec_alg_priv_t *ctx,
- va_list args)
-{
-
- vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
-
- if (data && !ctx->yv12_frame_buffers.use_frame_threads)
- {
- vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data;
- YV12_BUFFER_CONFIG sd;
-
- image2yuvconfig(&frame->img, &sd);
-
- return vp8dx_set_reference(ctx->yv12_frame_buffers.pbi[0],
- frame->frame_type, &sd);
- }
- else
- return VPX_CODEC_INVALID_PARAM;
-
-}
-
-static vpx_codec_err_t vp8_get_reference(vpx_codec_alg_priv_t *ctx,
- va_list args)
-{
-
- vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
-
- if (data && !ctx->yv12_frame_buffers.use_frame_threads)
- {
- vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data;
- YV12_BUFFER_CONFIG sd;
-
- image2yuvconfig(&frame->img, &sd);
-
- return vp8dx_get_reference(ctx->yv12_frame_buffers.pbi[0],
- frame->frame_type, &sd);
- }
- else
- return VPX_CODEC_INVALID_PARAM;
-
-}
-
-static vpx_codec_err_t vp8_set_postproc(vpx_codec_alg_priv_t *ctx,
- va_list args)
-{
-#if CONFIG_POSTPROC
- vp8_postproc_cfg_t *data = va_arg(args, vp8_postproc_cfg_t *);
-
- if (data)
- {
- ctx->postproc_cfg_set = 1;
- ctx->postproc_cfg = *((vp8_postproc_cfg_t *)data);
- return VPX_CODEC_OK;
- }
- else
- return VPX_CODEC_INVALID_PARAM;
-
-#else
- (void)ctx;
- (void)args;
- return VPX_CODEC_INCAPABLE;
-#endif
-}
-
-
-static vpx_codec_err_t vp8_set_dbg_color_ref_frame(vpx_codec_alg_priv_t *ctx,
- va_list args) {
-#if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
- ctx->dbg_color_ref_frame_flag = va_arg(args, int);
- return VPX_CODEC_OK;
-#else
- (void)ctx;
- (void)args;
- return VPX_CODEC_INCAPABLE;
-#endif
-}
-
-static vpx_codec_err_t vp8_set_dbg_color_mb_modes(vpx_codec_alg_priv_t *ctx,
- va_list args) {
-#if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
- ctx->dbg_color_mb_modes_flag = va_arg(args, int);
- return VPX_CODEC_OK;
-#else
- (void)ctx;
- (void)args;
- return VPX_CODEC_INCAPABLE;
-#endif
-}
-
-static vpx_codec_err_t vp8_set_dbg_color_b_modes(vpx_codec_alg_priv_t *ctx,
- va_list args) {
-#if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
- ctx->dbg_color_b_modes_flag = va_arg(args, int);
- return VPX_CODEC_OK;
-#else
- (void)ctx;
- (void)args;
- return VPX_CODEC_INCAPABLE;
-#endif
-}
-
-static vpx_codec_err_t vp8_set_dbg_display_mv(vpx_codec_alg_priv_t *ctx,
- va_list args) {
-#if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
- ctx->dbg_display_mv_flag = va_arg(args, int);
- return VPX_CODEC_OK;
-#else
- (void)ctx;
- (void)args;
- return VPX_CODEC_INCAPABLE;
-#endif
-}
-
-static vpx_codec_err_t vp8_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
- va_list args)
-{
- int *update_info = va_arg(args, int *);
-
- if (update_info && !ctx->yv12_frame_buffers.use_frame_threads)
- {
- VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0];
-
- *update_info = pbi->common.refresh_alt_ref_frame * (int) VP8_ALTR_FRAME
- + pbi->common.refresh_golden_frame * (int) VP8_GOLD_FRAME
- + pbi->common.refresh_last_frame * (int) VP8_LAST_FRAME;
-
- return VPX_CODEC_OK;
- }
- else
- return VPX_CODEC_INVALID_PARAM;
-}
-
-extern int vp8dx_references_buffer( VP8_COMMON *oci, int ref_frame );
-static vpx_codec_err_t vp8_get_last_ref_frame(vpx_codec_alg_priv_t *ctx,
- va_list args)
-{
- int *ref_info = va_arg(args, int *);
-
- if (ref_info && !ctx->yv12_frame_buffers.use_frame_threads)
- {
- VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0];
- VP8_COMMON *oci = &pbi->common;
- *ref_info =
- (vp8dx_references_buffer( oci, ALTREF_FRAME )?VP8_ALTR_FRAME:0) |
- (vp8dx_references_buffer( oci, GOLDEN_FRAME )?VP8_GOLD_FRAME:0) |
- (vp8dx_references_buffer( oci, LAST_FRAME )?VP8_LAST_FRAME:0);
-
- return VPX_CODEC_OK;
- }
- else
- return VPX_CODEC_INVALID_PARAM;
-}
-
-static vpx_codec_err_t vp8_get_frame_corrupted(vpx_codec_alg_priv_t *ctx,
- va_list args)
-{
-
- int *corrupted = va_arg(args, int *);
- VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0];
-
- if (corrupted && pbi)
- {
- const YV12_BUFFER_CONFIG *const frame = pbi->common.frame_to_show;
- if (frame == NULL) return VPX_CODEC_ERROR;
- *corrupted = frame->corrupted;
- return VPX_CODEC_OK;
- }
- else
- return VPX_CODEC_INVALID_PARAM;
-
-}
-
-static vpx_codec_err_t vp8_set_decryptor(vpx_codec_alg_priv_t *ctx,
- va_list args)
-{
- vpx_decrypt_init *init = va_arg(args, vpx_decrypt_init *);
-
- if (init)
- {
- ctx->decrypt_cb = init->decrypt_cb;
- ctx->decrypt_state = init->decrypt_state;
- }
- else
- {
- ctx->decrypt_cb = NULL;
- ctx->decrypt_state = NULL;
- }
- return VPX_CODEC_OK;
-}
-
-vpx_codec_ctrl_fn_map_t vp8_ctf_maps[] =
-{
- {VP8_SET_REFERENCE, vp8_set_reference},
- {VP8_COPY_REFERENCE, vp8_get_reference},
- {VP8_SET_POSTPROC, vp8_set_postproc},
- {VP8_SET_DBG_COLOR_REF_FRAME, vp8_set_dbg_color_ref_frame},
- {VP8_SET_DBG_COLOR_MB_MODES, vp8_set_dbg_color_mb_modes},
- {VP8_SET_DBG_COLOR_B_MODES, vp8_set_dbg_color_b_modes},
- {VP8_SET_DBG_DISPLAY_MV, vp8_set_dbg_display_mv},
- {VP8D_GET_LAST_REF_UPDATES, vp8_get_last_ref_updates},
- {VP8D_GET_FRAME_CORRUPTED, vp8_get_frame_corrupted},
- {VP8D_GET_LAST_REF_USED, vp8_get_last_ref_frame},
- {VPXD_SET_DECRYPTOR, vp8_set_decryptor},
- { -1, NULL},
-};
-
-
-#ifndef VERSION_STRING
-#define VERSION_STRING
-#endif
-CODEC_INTERFACE(vpx_codec_vp8_dx) =
-{
- "WebM Project VP8 Decoder" VERSION_STRING,
- VPX_CODEC_INTERNAL_ABI_VERSION,
- VPX_CODEC_CAP_DECODER | VP8_CAP_POSTPROC | VP8_CAP_ERROR_CONCEALMENT |
- VPX_CODEC_CAP_INPUT_FRAGMENTS,
- /* vpx_codec_caps_t caps; */
- vp8_init, /* vpx_codec_init_fn_t init; */
- vp8_destroy, /* vpx_codec_destroy_fn_t destroy; */
- vp8_ctf_maps, /* vpx_codec_ctrl_fn_map_t *ctrl_maps; */
- {
- vp8_peek_si, /* vpx_codec_peek_si_fn_t peek_si; */
- vp8_get_si, /* vpx_codec_get_si_fn_t get_si; */
- vp8_decode, /* vpx_codec_decode_fn_t decode; */
- vp8_get_frame, /* vpx_codec_frame_get_fn_t frame_get; */
- NULL,
- },
- { /* encoder functions */
- 0,
- NULL, /* vpx_codec_enc_cfg_map_t */
- NULL, /* vpx_codec_encode_fn_t */
- NULL, /* vpx_codec_get_cx_data_fn_t */
- NULL, /* vpx_codec_enc_config_set_fn_t */
- NULL, /* vpx_codec_get_global_headers_fn_t */
- NULL, /* vpx_codec_get_preview_frame_fn_t */
- NULL /* vpx_codec_enc_mr_get_mem_loc_fn_t */
- }
-};
diff --git a/thirdparty/libvpx/vp8_rtcd.h b/thirdparty/libvpx/vp8_rtcd.h
deleted file mode 100644
index c5eeb5e579..0000000000
--- a/thirdparty/libvpx/vp8_rtcd.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "vpx_config.h"
-
-#if defined(WEBM_X86ASM) && (ARCH_X86 || ARCH_X86_64)
- #include "rtcd/vp8_rtcd_x86.h"
-#elif defined(WEBM_ARMASM) && ARCH_ARM
- #include "rtcd/vp8_rtcd_arm.h"
-#else
- #include "rtcd/vp8_rtcd_c.h"
-#endif
diff --git a/thirdparty/libvpx/vp9/common/arm/neon/vp9_iht4x4_add_neon.c b/thirdparty/libvpx/vp9/common/arm/neon/vp9_iht4x4_add_neon.c
deleted file mode 100644
index 1761fada2f..0000000000
--- a/thirdparty/libvpx/vp9/common/arm/neon/vp9_iht4x4_add_neon.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include <assert.h>
-
-#include "./vp9_rtcd.h"
-#include "./vpx_config.h"
-#include "vp9/common/vp9_common.h"
-
-static int16_t sinpi_1_9 = 0x14a3;
-static int16_t sinpi_2_9 = 0x26c9;
-static int16_t sinpi_3_9 = 0x3441;
-static int16_t sinpi_4_9 = 0x3b6c;
-static int16_t cospi_8_64 = 0x3b21;
-static int16_t cospi_16_64 = 0x2d41;
-static int16_t cospi_24_64 = 0x187e;
-
-static INLINE void TRANSPOSE4X4(
- int16x8_t *q8s16,
- int16x8_t *q9s16) {
- int32x4_t q8s32, q9s32;
- int16x4x2_t d0x2s16, d1x2s16;
- int32x4x2_t q0x2s32;
-
- d0x2s16 = vtrn_s16(vget_low_s16(*q8s16), vget_high_s16(*q8s16));
- d1x2s16 = vtrn_s16(vget_low_s16(*q9s16), vget_high_s16(*q9s16));
-
- q8s32 = vreinterpretq_s32_s16(vcombine_s16(d0x2s16.val[0], d0x2s16.val[1]));
- q9s32 = vreinterpretq_s32_s16(vcombine_s16(d1x2s16.val[0], d1x2s16.val[1]));
- q0x2s32 = vtrnq_s32(q8s32, q9s32);
-
- *q8s16 = vreinterpretq_s16_s32(q0x2s32.val[0]);
- *q9s16 = vreinterpretq_s16_s32(q0x2s32.val[1]);
- return;
-}
-
-static INLINE void GENERATE_COSINE_CONSTANTS(
- int16x4_t *d0s16,
- int16x4_t *d1s16,
- int16x4_t *d2s16) {
- *d0s16 = vdup_n_s16(cospi_8_64);
- *d1s16 = vdup_n_s16(cospi_16_64);
- *d2s16 = vdup_n_s16(cospi_24_64);
- return;
-}
-
-static INLINE void GENERATE_SINE_CONSTANTS(
- int16x4_t *d3s16,
- int16x4_t *d4s16,
- int16x4_t *d5s16,
- int16x8_t *q3s16) {
- *d3s16 = vdup_n_s16(sinpi_1_9);
- *d4s16 = vdup_n_s16(sinpi_2_9);
- *q3s16 = vdupq_n_s16(sinpi_3_9);
- *d5s16 = vdup_n_s16(sinpi_4_9);
- return;
-}
-
-static INLINE void IDCT4x4_1D(
- int16x4_t *d0s16,
- int16x4_t *d1s16,
- int16x4_t *d2s16,
- int16x8_t *q8s16,
- int16x8_t *q9s16) {
- int16x4_t d16s16, d17s16, d18s16, d19s16, d23s16, d24s16;
- int16x4_t d26s16, d27s16, d28s16, d29s16;
- int32x4_t q10s32, q13s32, q14s32, q15s32;
- int16x8_t q13s16, q14s16;
-
- d16s16 = vget_low_s16(*q8s16);
- d17s16 = vget_high_s16(*q8s16);
- d18s16 = vget_low_s16(*q9s16);
- d19s16 = vget_high_s16(*q9s16);
-
- d23s16 = vadd_s16(d16s16, d18s16);
- d24s16 = vsub_s16(d16s16, d18s16);
-
- q15s32 = vmull_s16(d17s16, *d2s16);
- q10s32 = vmull_s16(d17s16, *d0s16);
- q13s32 = vmull_s16(d23s16, *d1s16);
- q14s32 = vmull_s16(d24s16, *d1s16);
- q15s32 = vmlsl_s16(q15s32, d19s16, *d0s16);
- q10s32 = vmlal_s16(q10s32, d19s16, *d2s16);
-
- d26s16 = vqrshrn_n_s32(q13s32, 14);
- d27s16 = vqrshrn_n_s32(q14s32, 14);
- d29s16 = vqrshrn_n_s32(q15s32, 14);
- d28s16 = vqrshrn_n_s32(q10s32, 14);
-
- q13s16 = vcombine_s16(d26s16, d27s16);
- q14s16 = vcombine_s16(d28s16, d29s16);
- *q8s16 = vaddq_s16(q13s16, q14s16);
- *q9s16 = vsubq_s16(q13s16, q14s16);
- *q9s16 = vcombine_s16(vget_high_s16(*q9s16),
- vget_low_s16(*q9s16)); // vswp
- return;
-}
-
-static INLINE void IADST4x4_1D(
- int16x4_t *d3s16,
- int16x4_t *d4s16,
- int16x4_t *d5s16,
- int16x8_t *q3s16,
- int16x8_t *q8s16,
- int16x8_t *q9s16) {
- int16x4_t d6s16, d16s16, d17s16, d18s16, d19s16;
- int32x4_t q8s32, q9s32, q10s32, q11s32, q12s32, q13s32, q14s32, q15s32;
-
- d6s16 = vget_low_s16(*q3s16);
-
- d16s16 = vget_low_s16(*q8s16);
- d17s16 = vget_high_s16(*q8s16);
- d18s16 = vget_low_s16(*q9s16);
- d19s16 = vget_high_s16(*q9s16);
-
- q10s32 = vmull_s16(*d3s16, d16s16);
- q11s32 = vmull_s16(*d4s16, d16s16);
- q12s32 = vmull_s16(d6s16, d17s16);
- q13s32 = vmull_s16(*d5s16, d18s16);
- q14s32 = vmull_s16(*d3s16, d18s16);
- q15s32 = vmovl_s16(d16s16);
- q15s32 = vaddw_s16(q15s32, d19s16);
- q8s32 = vmull_s16(*d4s16, d19s16);
- q15s32 = vsubw_s16(q15s32, d18s16);
- q9s32 = vmull_s16(*d5s16, d19s16);
-
- q10s32 = vaddq_s32(q10s32, q13s32);
- q10s32 = vaddq_s32(q10s32, q8s32);
- q11s32 = vsubq_s32(q11s32, q14s32);
- q8s32 = vdupq_n_s32(sinpi_3_9);
- q11s32 = vsubq_s32(q11s32, q9s32);
- q15s32 = vmulq_s32(q15s32, q8s32);
-
- q13s32 = vaddq_s32(q10s32, q12s32);
- q10s32 = vaddq_s32(q10s32, q11s32);
- q14s32 = vaddq_s32(q11s32, q12s32);
- q10s32 = vsubq_s32(q10s32, q12s32);
-
- d16s16 = vqrshrn_n_s32(q13s32, 14);
- d17s16 = vqrshrn_n_s32(q14s32, 14);
- d18s16 = vqrshrn_n_s32(q15s32, 14);
- d19s16 = vqrshrn_n_s32(q10s32, 14);
-
- *q8s16 = vcombine_s16(d16s16, d17s16);
- *q9s16 = vcombine_s16(d18s16, d19s16);
- return;
-}
-
-void vp9_iht4x4_16_add_neon(const tran_low_t *input, uint8_t *dest,
- int dest_stride, int tx_type) {
- uint8x8_t d26u8, d27u8;
- int16x4_t d0s16, d1s16, d2s16, d3s16, d4s16, d5s16;
- uint32x2_t d26u32, d27u32;
- int16x8_t q3s16, q8s16, q9s16;
- uint16x8_t q8u16, q9u16;
-
- d26u32 = d27u32 = vdup_n_u32(0);
-
- q8s16 = vld1q_s16(input);
- q9s16 = vld1q_s16(input + 8);
-
- TRANSPOSE4X4(&q8s16, &q9s16);
-
- switch (tx_type) {
- case 0: // idct_idct is not supported. Fall back to C
- vp9_iht4x4_16_add_c(input, dest, dest_stride, tx_type);
- return;
- break;
- case 1: // iadst_idct
- // generate constants
- GENERATE_COSINE_CONSTANTS(&d0s16, &d1s16, &d2s16);
- GENERATE_SINE_CONSTANTS(&d3s16, &d4s16, &d5s16, &q3s16);
-
- // first transform rows
- IDCT4x4_1D(&d0s16, &d1s16, &d2s16, &q8s16, &q9s16);
-
- // transpose the matrix
- TRANSPOSE4X4(&q8s16, &q9s16);
-
- // then transform columns
- IADST4x4_1D(&d3s16, &d4s16, &d5s16, &q3s16, &q8s16, &q9s16);
- break;
- case 2: // idct_iadst
- // generate constantsyy
- GENERATE_COSINE_CONSTANTS(&d0s16, &d1s16, &d2s16);
- GENERATE_SINE_CONSTANTS(&d3s16, &d4s16, &d5s16, &q3s16);
-
- // first transform rows
- IADST4x4_1D(&d3s16, &d4s16, &d5s16, &q3s16, &q8s16, &q9s16);
-
- // transpose the matrix
- TRANSPOSE4X4(&q8s16, &q9s16);
-
- // then transform columns
- IDCT4x4_1D(&d0s16, &d1s16, &d2s16, &q8s16, &q9s16);
- break;
- case 3: // iadst_iadst
- // generate constants
- GENERATE_SINE_CONSTANTS(&d3s16, &d4s16, &d5s16, &q3s16);
-
- // first transform rows
- IADST4x4_1D(&d3s16, &d4s16, &d5s16, &q3s16, &q8s16, &q9s16);
-
- // transpose the matrix
- TRANSPOSE4X4(&q8s16, &q9s16);
-
- // then transform columns
- IADST4x4_1D(&d3s16, &d4s16, &d5s16, &q3s16, &q8s16, &q9s16);
- break;
- default: // iadst_idct
- assert(0);
- break;
- }
-
- q8s16 = vrshrq_n_s16(q8s16, 4);
- q9s16 = vrshrq_n_s16(q9s16, 4);
-
- d26u32 = vld1_lane_u32((const uint32_t *)dest, d26u32, 0);
- dest += dest_stride;
- d26u32 = vld1_lane_u32((const uint32_t *)dest, d26u32, 1);
- dest += dest_stride;
- d27u32 = vld1_lane_u32((const uint32_t *)dest, d27u32, 0);
- dest += dest_stride;
- d27u32 = vld1_lane_u32((const uint32_t *)dest, d27u32, 1);
-
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q8s16), vreinterpret_u8_u32(d26u32));
- q9u16 = vaddw_u8(vreinterpretq_u16_s16(q9s16), vreinterpret_u8_u32(d27u32));
-
- d26u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
- d27u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
-
- vst1_lane_u32((uint32_t *)dest, vreinterpret_u32_u8(d27u8), 1);
- dest -= dest_stride;
- vst1_lane_u32((uint32_t *)dest, vreinterpret_u32_u8(d27u8), 0);
- dest -= dest_stride;
- vst1_lane_u32((uint32_t *)dest, vreinterpret_u32_u8(d26u8), 1);
- dest -= dest_stride;
- vst1_lane_u32((uint32_t *)dest, vreinterpret_u32_u8(d26u8), 0);
- return;
-}
diff --git a/thirdparty/libvpx/vp9/common/arm/neon/vp9_iht8x8_add_neon.c b/thirdparty/libvpx/vp9/common/arm/neon/vp9_iht8x8_add_neon.c
deleted file mode 100644
index 04b342c3d3..0000000000
--- a/thirdparty/libvpx/vp9/common/arm/neon/vp9_iht8x8_add_neon.c
+++ /dev/null
@@ -1,624 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include <assert.h>
-
-#include "./vp9_rtcd.h"
-#include "./vpx_config.h"
-#include "vp9/common/vp9_common.h"
-
-static int16_t cospi_2_64 = 16305;
-static int16_t cospi_4_64 = 16069;
-static int16_t cospi_6_64 = 15679;
-static int16_t cospi_8_64 = 15137;
-static int16_t cospi_10_64 = 14449;
-static int16_t cospi_12_64 = 13623;
-static int16_t cospi_14_64 = 12665;
-static int16_t cospi_16_64 = 11585;
-static int16_t cospi_18_64 = 10394;
-static int16_t cospi_20_64 = 9102;
-static int16_t cospi_22_64 = 7723;
-static int16_t cospi_24_64 = 6270;
-static int16_t cospi_26_64 = 4756;
-static int16_t cospi_28_64 = 3196;
-static int16_t cospi_30_64 = 1606;
-
-static INLINE void TRANSPOSE8X8(
- int16x8_t *q8s16,
- int16x8_t *q9s16,
- int16x8_t *q10s16,
- int16x8_t *q11s16,
- int16x8_t *q12s16,
- int16x8_t *q13s16,
- int16x8_t *q14s16,
- int16x8_t *q15s16) {
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- int32x4x2_t q0x2s32, q1x2s32, q2x2s32, q3x2s32;
- int16x8x2_t q0x2s16, q1x2s16, q2x2s16, q3x2s16;
-
- d16s16 = vget_low_s16(*q8s16);
- d17s16 = vget_high_s16(*q8s16);
- d18s16 = vget_low_s16(*q9s16);
- d19s16 = vget_high_s16(*q9s16);
- d20s16 = vget_low_s16(*q10s16);
- d21s16 = vget_high_s16(*q10s16);
- d22s16 = vget_low_s16(*q11s16);
- d23s16 = vget_high_s16(*q11s16);
- d24s16 = vget_low_s16(*q12s16);
- d25s16 = vget_high_s16(*q12s16);
- d26s16 = vget_low_s16(*q13s16);
- d27s16 = vget_high_s16(*q13s16);
- d28s16 = vget_low_s16(*q14s16);
- d29s16 = vget_high_s16(*q14s16);
- d30s16 = vget_low_s16(*q15s16);
- d31s16 = vget_high_s16(*q15s16);
-
- *q8s16 = vcombine_s16(d16s16, d24s16); // vswp d17, d24
- *q9s16 = vcombine_s16(d18s16, d26s16); // vswp d19, d26
- *q10s16 = vcombine_s16(d20s16, d28s16); // vswp d21, d28
- *q11s16 = vcombine_s16(d22s16, d30s16); // vswp d23, d30
- *q12s16 = vcombine_s16(d17s16, d25s16);
- *q13s16 = vcombine_s16(d19s16, d27s16);
- *q14s16 = vcombine_s16(d21s16, d29s16);
- *q15s16 = vcombine_s16(d23s16, d31s16);
-
- q0x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q8s16),
- vreinterpretq_s32_s16(*q10s16));
- q1x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q9s16),
- vreinterpretq_s32_s16(*q11s16));
- q2x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q12s16),
- vreinterpretq_s32_s16(*q14s16));
- q3x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q13s16),
- vreinterpretq_s32_s16(*q15s16));
-
- q0x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q0x2s32.val[0]), // q8
- vreinterpretq_s16_s32(q1x2s32.val[0])); // q9
- q1x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q0x2s32.val[1]), // q10
- vreinterpretq_s16_s32(q1x2s32.val[1])); // q11
- q2x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q2x2s32.val[0]), // q12
- vreinterpretq_s16_s32(q3x2s32.val[0])); // q13
- q3x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q2x2s32.val[1]), // q14
- vreinterpretq_s16_s32(q3x2s32.val[1])); // q15
-
- *q8s16 = q0x2s16.val[0];
- *q9s16 = q0x2s16.val[1];
- *q10s16 = q1x2s16.val[0];
- *q11s16 = q1x2s16.val[1];
- *q12s16 = q2x2s16.val[0];
- *q13s16 = q2x2s16.val[1];
- *q14s16 = q3x2s16.val[0];
- *q15s16 = q3x2s16.val[1];
- return;
-}
-
-static INLINE void IDCT8x8_1D(
- int16x8_t *q8s16,
- int16x8_t *q9s16,
- int16x8_t *q10s16,
- int16x8_t *q11s16,
- int16x8_t *q12s16,
- int16x8_t *q13s16,
- int16x8_t *q14s16,
- int16x8_t *q15s16) {
- int16x4_t d0s16, d1s16, d2s16, d3s16;
- int16x4_t d8s16, d9s16, d10s16, d11s16, d12s16, d13s16, d14s16, d15s16;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- int16x8_t q0s16, q1s16, q2s16, q3s16, q4s16, q5s16, q6s16, q7s16;
- int32x4_t q2s32, q3s32, q5s32, q6s32, q8s32, q9s32;
- int32x4_t q10s32, q11s32, q12s32, q13s32, q15s32;
-
- d0s16 = vdup_n_s16(cospi_28_64);
- d1s16 = vdup_n_s16(cospi_4_64);
- d2s16 = vdup_n_s16(cospi_12_64);
- d3s16 = vdup_n_s16(cospi_20_64);
-
- d16s16 = vget_low_s16(*q8s16);
- d17s16 = vget_high_s16(*q8s16);
- d18s16 = vget_low_s16(*q9s16);
- d19s16 = vget_high_s16(*q9s16);
- d20s16 = vget_low_s16(*q10s16);
- d21s16 = vget_high_s16(*q10s16);
- d22s16 = vget_low_s16(*q11s16);
- d23s16 = vget_high_s16(*q11s16);
- d24s16 = vget_low_s16(*q12s16);
- d25s16 = vget_high_s16(*q12s16);
- d26s16 = vget_low_s16(*q13s16);
- d27s16 = vget_high_s16(*q13s16);
- d28s16 = vget_low_s16(*q14s16);
- d29s16 = vget_high_s16(*q14s16);
- d30s16 = vget_low_s16(*q15s16);
- d31s16 = vget_high_s16(*q15s16);
-
- q2s32 = vmull_s16(d18s16, d0s16);
- q3s32 = vmull_s16(d19s16, d0s16);
- q5s32 = vmull_s16(d26s16, d2s16);
- q6s32 = vmull_s16(d27s16, d2s16);
-
- q2s32 = vmlsl_s16(q2s32, d30s16, d1s16);
- q3s32 = vmlsl_s16(q3s32, d31s16, d1s16);
- q5s32 = vmlsl_s16(q5s32, d22s16, d3s16);
- q6s32 = vmlsl_s16(q6s32, d23s16, d3s16);
-
- d8s16 = vqrshrn_n_s32(q2s32, 14);
- d9s16 = vqrshrn_n_s32(q3s32, 14);
- d10s16 = vqrshrn_n_s32(q5s32, 14);
- d11s16 = vqrshrn_n_s32(q6s32, 14);
- q4s16 = vcombine_s16(d8s16, d9s16);
- q5s16 = vcombine_s16(d10s16, d11s16);
-
- q2s32 = vmull_s16(d18s16, d1s16);
- q3s32 = vmull_s16(d19s16, d1s16);
- q9s32 = vmull_s16(d26s16, d3s16);
- q13s32 = vmull_s16(d27s16, d3s16);
-
- q2s32 = vmlal_s16(q2s32, d30s16, d0s16);
- q3s32 = vmlal_s16(q3s32, d31s16, d0s16);
- q9s32 = vmlal_s16(q9s32, d22s16, d2s16);
- q13s32 = vmlal_s16(q13s32, d23s16, d2s16);
-
- d14s16 = vqrshrn_n_s32(q2s32, 14);
- d15s16 = vqrshrn_n_s32(q3s32, 14);
- d12s16 = vqrshrn_n_s32(q9s32, 14);
- d13s16 = vqrshrn_n_s32(q13s32, 14);
- q6s16 = vcombine_s16(d12s16, d13s16);
- q7s16 = vcombine_s16(d14s16, d15s16);
-
- d0s16 = vdup_n_s16(cospi_16_64);
-
- q2s32 = vmull_s16(d16s16, d0s16);
- q3s32 = vmull_s16(d17s16, d0s16);
- q13s32 = vmull_s16(d16s16, d0s16);
- q15s32 = vmull_s16(d17s16, d0s16);
-
- q2s32 = vmlal_s16(q2s32, d24s16, d0s16);
- q3s32 = vmlal_s16(q3s32, d25s16, d0s16);
- q13s32 = vmlsl_s16(q13s32, d24s16, d0s16);
- q15s32 = vmlsl_s16(q15s32, d25s16, d0s16);
-
- d0s16 = vdup_n_s16(cospi_24_64);
- d1s16 = vdup_n_s16(cospi_8_64);
-
- d18s16 = vqrshrn_n_s32(q2s32, 14);
- d19s16 = vqrshrn_n_s32(q3s32, 14);
- d22s16 = vqrshrn_n_s32(q13s32, 14);
- d23s16 = vqrshrn_n_s32(q15s32, 14);
- *q9s16 = vcombine_s16(d18s16, d19s16);
- *q11s16 = vcombine_s16(d22s16, d23s16);
-
- q2s32 = vmull_s16(d20s16, d0s16);
- q3s32 = vmull_s16(d21s16, d0s16);
- q8s32 = vmull_s16(d20s16, d1s16);
- q12s32 = vmull_s16(d21s16, d1s16);
-
- q2s32 = vmlsl_s16(q2s32, d28s16, d1s16);
- q3s32 = vmlsl_s16(q3s32, d29s16, d1s16);
- q8s32 = vmlal_s16(q8s32, d28s16, d0s16);
- q12s32 = vmlal_s16(q12s32, d29s16, d0s16);
-
- d26s16 = vqrshrn_n_s32(q2s32, 14);
- d27s16 = vqrshrn_n_s32(q3s32, 14);
- d30s16 = vqrshrn_n_s32(q8s32, 14);
- d31s16 = vqrshrn_n_s32(q12s32, 14);
- *q13s16 = vcombine_s16(d26s16, d27s16);
- *q15s16 = vcombine_s16(d30s16, d31s16);
-
- q0s16 = vaddq_s16(*q9s16, *q15s16);
- q1s16 = vaddq_s16(*q11s16, *q13s16);
- q2s16 = vsubq_s16(*q11s16, *q13s16);
- q3s16 = vsubq_s16(*q9s16, *q15s16);
-
- *q13s16 = vsubq_s16(q4s16, q5s16);
- q4s16 = vaddq_s16(q4s16, q5s16);
- *q14s16 = vsubq_s16(q7s16, q6s16);
- q7s16 = vaddq_s16(q7s16, q6s16);
- d26s16 = vget_low_s16(*q13s16);
- d27s16 = vget_high_s16(*q13s16);
- d28s16 = vget_low_s16(*q14s16);
- d29s16 = vget_high_s16(*q14s16);
-
- d16s16 = vdup_n_s16(cospi_16_64);
-
- q9s32 = vmull_s16(d28s16, d16s16);
- q10s32 = vmull_s16(d29s16, d16s16);
- q11s32 = vmull_s16(d28s16, d16s16);
- q12s32 = vmull_s16(d29s16, d16s16);
-
- q9s32 = vmlsl_s16(q9s32, d26s16, d16s16);
- q10s32 = vmlsl_s16(q10s32, d27s16, d16s16);
- q11s32 = vmlal_s16(q11s32, d26s16, d16s16);
- q12s32 = vmlal_s16(q12s32, d27s16, d16s16);
-
- d10s16 = vqrshrn_n_s32(q9s32, 14);
- d11s16 = vqrshrn_n_s32(q10s32, 14);
- d12s16 = vqrshrn_n_s32(q11s32, 14);
- d13s16 = vqrshrn_n_s32(q12s32, 14);
- q5s16 = vcombine_s16(d10s16, d11s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- *q8s16 = vaddq_s16(q0s16, q7s16);
- *q9s16 = vaddq_s16(q1s16, q6s16);
- *q10s16 = vaddq_s16(q2s16, q5s16);
- *q11s16 = vaddq_s16(q3s16, q4s16);
- *q12s16 = vsubq_s16(q3s16, q4s16);
- *q13s16 = vsubq_s16(q2s16, q5s16);
- *q14s16 = vsubq_s16(q1s16, q6s16);
- *q15s16 = vsubq_s16(q0s16, q7s16);
- return;
-}
-
-static INLINE void IADST8X8_1D(
- int16x8_t *q8s16,
- int16x8_t *q9s16,
- int16x8_t *q10s16,
- int16x8_t *q11s16,
- int16x8_t *q12s16,
- int16x8_t *q13s16,
- int16x8_t *q14s16,
- int16x8_t *q15s16) {
- int16x4_t d0s16, d1s16, d2s16, d3s16, d4s16, d5s16, d6s16, d7s16;
- int16x4_t d8s16, d9s16, d10s16, d11s16, d12s16, d13s16, d14s16, d15s16;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- int16x8_t q2s16, q4s16, q5s16, q6s16;
- int32x4_t q0s32, q1s32, q2s32, q3s32, q4s32, q5s32, q6s32, q7s32, q8s32;
- int32x4_t q9s32, q10s32, q11s32, q12s32, q13s32, q14s32, q15s32;
-
- d16s16 = vget_low_s16(*q8s16);
- d17s16 = vget_high_s16(*q8s16);
- d18s16 = vget_low_s16(*q9s16);
- d19s16 = vget_high_s16(*q9s16);
- d20s16 = vget_low_s16(*q10s16);
- d21s16 = vget_high_s16(*q10s16);
- d22s16 = vget_low_s16(*q11s16);
- d23s16 = vget_high_s16(*q11s16);
- d24s16 = vget_low_s16(*q12s16);
- d25s16 = vget_high_s16(*q12s16);
- d26s16 = vget_low_s16(*q13s16);
- d27s16 = vget_high_s16(*q13s16);
- d28s16 = vget_low_s16(*q14s16);
- d29s16 = vget_high_s16(*q14s16);
- d30s16 = vget_low_s16(*q15s16);
- d31s16 = vget_high_s16(*q15s16);
-
- d14s16 = vdup_n_s16(cospi_2_64);
- d15s16 = vdup_n_s16(cospi_30_64);
-
- q1s32 = vmull_s16(d30s16, d14s16);
- q2s32 = vmull_s16(d31s16, d14s16);
- q3s32 = vmull_s16(d30s16, d15s16);
- q4s32 = vmull_s16(d31s16, d15s16);
-
- d30s16 = vdup_n_s16(cospi_18_64);
- d31s16 = vdup_n_s16(cospi_14_64);
-
- q1s32 = vmlal_s16(q1s32, d16s16, d15s16);
- q2s32 = vmlal_s16(q2s32, d17s16, d15s16);
- q3s32 = vmlsl_s16(q3s32, d16s16, d14s16);
- q4s32 = vmlsl_s16(q4s32, d17s16, d14s16);
-
- q5s32 = vmull_s16(d22s16, d30s16);
- q6s32 = vmull_s16(d23s16, d30s16);
- q7s32 = vmull_s16(d22s16, d31s16);
- q8s32 = vmull_s16(d23s16, d31s16);
-
- q5s32 = vmlal_s16(q5s32, d24s16, d31s16);
- q6s32 = vmlal_s16(q6s32, d25s16, d31s16);
- q7s32 = vmlsl_s16(q7s32, d24s16, d30s16);
- q8s32 = vmlsl_s16(q8s32, d25s16, d30s16);
-
- q11s32 = vaddq_s32(q1s32, q5s32);
- q12s32 = vaddq_s32(q2s32, q6s32);
- q1s32 = vsubq_s32(q1s32, q5s32);
- q2s32 = vsubq_s32(q2s32, q6s32);
-
- d22s16 = vqrshrn_n_s32(q11s32, 14);
- d23s16 = vqrshrn_n_s32(q12s32, 14);
- *q11s16 = vcombine_s16(d22s16, d23s16);
-
- q12s32 = vaddq_s32(q3s32, q7s32);
- q15s32 = vaddq_s32(q4s32, q8s32);
- q3s32 = vsubq_s32(q3s32, q7s32);
- q4s32 = vsubq_s32(q4s32, q8s32);
-
- d2s16 = vqrshrn_n_s32(q1s32, 14);
- d3s16 = vqrshrn_n_s32(q2s32, 14);
- d24s16 = vqrshrn_n_s32(q12s32, 14);
- d25s16 = vqrshrn_n_s32(q15s32, 14);
- d6s16 = vqrshrn_n_s32(q3s32, 14);
- d7s16 = vqrshrn_n_s32(q4s32, 14);
- *q12s16 = vcombine_s16(d24s16, d25s16);
-
- d0s16 = vdup_n_s16(cospi_10_64);
- d1s16 = vdup_n_s16(cospi_22_64);
- q4s32 = vmull_s16(d26s16, d0s16);
- q5s32 = vmull_s16(d27s16, d0s16);
- q2s32 = vmull_s16(d26s16, d1s16);
- q6s32 = vmull_s16(d27s16, d1s16);
-
- d30s16 = vdup_n_s16(cospi_26_64);
- d31s16 = vdup_n_s16(cospi_6_64);
-
- q4s32 = vmlal_s16(q4s32, d20s16, d1s16);
- q5s32 = vmlal_s16(q5s32, d21s16, d1s16);
- q2s32 = vmlsl_s16(q2s32, d20s16, d0s16);
- q6s32 = vmlsl_s16(q6s32, d21s16, d0s16);
-
- q0s32 = vmull_s16(d18s16, d30s16);
- q13s32 = vmull_s16(d19s16, d30s16);
-
- q0s32 = vmlal_s16(q0s32, d28s16, d31s16);
- q13s32 = vmlal_s16(q13s32, d29s16, d31s16);
-
- q10s32 = vmull_s16(d18s16, d31s16);
- q9s32 = vmull_s16(d19s16, d31s16);
-
- q10s32 = vmlsl_s16(q10s32, d28s16, d30s16);
- q9s32 = vmlsl_s16(q9s32, d29s16, d30s16);
-
- q14s32 = vaddq_s32(q2s32, q10s32);
- q15s32 = vaddq_s32(q6s32, q9s32);
- q2s32 = vsubq_s32(q2s32, q10s32);
- q6s32 = vsubq_s32(q6s32, q9s32);
-
- d28s16 = vqrshrn_n_s32(q14s32, 14);
- d29s16 = vqrshrn_n_s32(q15s32, 14);
- d4s16 = vqrshrn_n_s32(q2s32, 14);
- d5s16 = vqrshrn_n_s32(q6s32, 14);
- *q14s16 = vcombine_s16(d28s16, d29s16);
-
- q9s32 = vaddq_s32(q4s32, q0s32);
- q10s32 = vaddq_s32(q5s32, q13s32);
- q4s32 = vsubq_s32(q4s32, q0s32);
- q5s32 = vsubq_s32(q5s32, q13s32);
-
- d30s16 = vdup_n_s16(cospi_8_64);
- d31s16 = vdup_n_s16(cospi_24_64);
-
- d18s16 = vqrshrn_n_s32(q9s32, 14);
- d19s16 = vqrshrn_n_s32(q10s32, 14);
- d8s16 = vqrshrn_n_s32(q4s32, 14);
- d9s16 = vqrshrn_n_s32(q5s32, 14);
- *q9s16 = vcombine_s16(d18s16, d19s16);
-
- q5s32 = vmull_s16(d2s16, d30s16);
- q6s32 = vmull_s16(d3s16, d30s16);
- q7s32 = vmull_s16(d2s16, d31s16);
- q0s32 = vmull_s16(d3s16, d31s16);
-
- q5s32 = vmlal_s16(q5s32, d6s16, d31s16);
- q6s32 = vmlal_s16(q6s32, d7s16, d31s16);
- q7s32 = vmlsl_s16(q7s32, d6s16, d30s16);
- q0s32 = vmlsl_s16(q0s32, d7s16, d30s16);
-
- q1s32 = vmull_s16(d4s16, d30s16);
- q3s32 = vmull_s16(d5s16, d30s16);
- q10s32 = vmull_s16(d4s16, d31s16);
- q2s32 = vmull_s16(d5s16, d31s16);
-
- q1s32 = vmlsl_s16(q1s32, d8s16, d31s16);
- q3s32 = vmlsl_s16(q3s32, d9s16, d31s16);
- q10s32 = vmlal_s16(q10s32, d8s16, d30s16);
- q2s32 = vmlal_s16(q2s32, d9s16, d30s16);
-
- *q8s16 = vaddq_s16(*q11s16, *q9s16);
- *q11s16 = vsubq_s16(*q11s16, *q9s16);
- q4s16 = vaddq_s16(*q12s16, *q14s16);
- *q12s16 = vsubq_s16(*q12s16, *q14s16);
-
- q14s32 = vaddq_s32(q5s32, q1s32);
- q15s32 = vaddq_s32(q6s32, q3s32);
- q5s32 = vsubq_s32(q5s32, q1s32);
- q6s32 = vsubq_s32(q6s32, q3s32);
-
- d18s16 = vqrshrn_n_s32(q14s32, 14);
- d19s16 = vqrshrn_n_s32(q15s32, 14);
- d10s16 = vqrshrn_n_s32(q5s32, 14);
- d11s16 = vqrshrn_n_s32(q6s32, 14);
- *q9s16 = vcombine_s16(d18s16, d19s16);
-
- q1s32 = vaddq_s32(q7s32, q10s32);
- q3s32 = vaddq_s32(q0s32, q2s32);
- q7s32 = vsubq_s32(q7s32, q10s32);
- q0s32 = vsubq_s32(q0s32, q2s32);
-
- d28s16 = vqrshrn_n_s32(q1s32, 14);
- d29s16 = vqrshrn_n_s32(q3s32, 14);
- d14s16 = vqrshrn_n_s32(q7s32, 14);
- d15s16 = vqrshrn_n_s32(q0s32, 14);
- *q14s16 = vcombine_s16(d28s16, d29s16);
-
- d30s16 = vdup_n_s16(cospi_16_64);
-
- d22s16 = vget_low_s16(*q11s16);
- d23s16 = vget_high_s16(*q11s16);
- q2s32 = vmull_s16(d22s16, d30s16);
- q3s32 = vmull_s16(d23s16, d30s16);
- q13s32 = vmull_s16(d22s16, d30s16);
- q1s32 = vmull_s16(d23s16, d30s16);
-
- d24s16 = vget_low_s16(*q12s16);
- d25s16 = vget_high_s16(*q12s16);
- q2s32 = vmlal_s16(q2s32, d24s16, d30s16);
- q3s32 = vmlal_s16(q3s32, d25s16, d30s16);
- q13s32 = vmlsl_s16(q13s32, d24s16, d30s16);
- q1s32 = vmlsl_s16(q1s32, d25s16, d30s16);
-
- d4s16 = vqrshrn_n_s32(q2s32, 14);
- d5s16 = vqrshrn_n_s32(q3s32, 14);
- d24s16 = vqrshrn_n_s32(q13s32, 14);
- d25s16 = vqrshrn_n_s32(q1s32, 14);
- q2s16 = vcombine_s16(d4s16, d5s16);
- *q12s16 = vcombine_s16(d24s16, d25s16);
-
- q13s32 = vmull_s16(d10s16, d30s16);
- q1s32 = vmull_s16(d11s16, d30s16);
- q11s32 = vmull_s16(d10s16, d30s16);
- q0s32 = vmull_s16(d11s16, d30s16);
-
- q13s32 = vmlal_s16(q13s32, d14s16, d30s16);
- q1s32 = vmlal_s16(q1s32, d15s16, d30s16);
- q11s32 = vmlsl_s16(q11s32, d14s16, d30s16);
- q0s32 = vmlsl_s16(q0s32, d15s16, d30s16);
-
- d20s16 = vqrshrn_n_s32(q13s32, 14);
- d21s16 = vqrshrn_n_s32(q1s32, 14);
- d12s16 = vqrshrn_n_s32(q11s32, 14);
- d13s16 = vqrshrn_n_s32(q0s32, 14);
- *q10s16 = vcombine_s16(d20s16, d21s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- q5s16 = vdupq_n_s16(0);
-
- *q9s16 = vsubq_s16(q5s16, *q9s16);
- *q11s16 = vsubq_s16(q5s16, q2s16);
- *q13s16 = vsubq_s16(q5s16, q6s16);
- *q15s16 = vsubq_s16(q5s16, q4s16);
- return;
-}
-
-void vp9_iht8x8_64_add_neon(const tran_low_t *input, uint8_t *dest,
- int dest_stride, int tx_type) {
- int i;
- uint8_t *d1, *d2;
- uint8x8_t d0u8, d1u8, d2u8, d3u8;
- uint64x1_t d0u64, d1u64, d2u64, d3u64;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- uint16x8_t q8u16, q9u16, q10u16, q11u16;
-
- q8s16 = vld1q_s16(input);
- q9s16 = vld1q_s16(input + 8);
- q10s16 = vld1q_s16(input + 8 * 2);
- q11s16 = vld1q_s16(input + 8 * 3);
- q12s16 = vld1q_s16(input + 8 * 4);
- q13s16 = vld1q_s16(input + 8 * 5);
- q14s16 = vld1q_s16(input + 8 * 6);
- q15s16 = vld1q_s16(input + 8 * 7);
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- switch (tx_type) {
- case 0: // idct_idct is not supported. Fall back to C
- vp9_iht8x8_64_add_c(input, dest, dest_stride, tx_type);
- return;
- break;
- case 1: // iadst_idct
- // generate IDCT constants
- // GENERATE_IDCT_CONSTANTS
-
- // first transform rows
- IDCT8x8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // transpose the matrix
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // generate IADST constants
- // GENERATE_IADST_CONSTANTS
-
- // then transform columns
- IADST8X8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
- break;
- case 2: // idct_iadst
- // generate IADST constants
- // GENERATE_IADST_CONSTANTS
-
- // first transform rows
- IADST8X8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // transpose the matrix
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // generate IDCT constants
- // GENERATE_IDCT_CONSTANTS
-
- // then transform columns
- IDCT8x8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
- break;
- case 3: // iadst_iadst
- // generate IADST constants
- // GENERATE_IADST_CONSTANTS
-
- // first transform rows
- IADST8X8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // transpose the matrix
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // then transform columns
- IADST8X8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
- break;
- default: // iadst_idct
- assert(0);
- break;
- }
-
- q8s16 = vrshrq_n_s16(q8s16, 5);
- q9s16 = vrshrq_n_s16(q9s16, 5);
- q10s16 = vrshrq_n_s16(q10s16, 5);
- q11s16 = vrshrq_n_s16(q11s16, 5);
- q12s16 = vrshrq_n_s16(q12s16, 5);
- q13s16 = vrshrq_n_s16(q13s16, 5);
- q14s16 = vrshrq_n_s16(q14s16, 5);
- q15s16 = vrshrq_n_s16(q15s16, 5);
-
- for (d1 = d2 = dest, i = 0; i < 2; i++) {
- if (i != 0) {
- q8s16 = q12s16;
- q9s16 = q13s16;
- q10s16 = q14s16;
- q11s16 = q15s16;
- }
-
- d0u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d1u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d2u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d3u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
-
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q8s16),
- vreinterpret_u8_u64(d0u64));
- q9u16 = vaddw_u8(vreinterpretq_u16_s16(q9s16),
- vreinterpret_u8_u64(d1u64));
- q10u16 = vaddw_u8(vreinterpretq_u16_s16(q10s16),
- vreinterpret_u8_u64(d2u64));
- q11u16 = vaddw_u8(vreinterpretq_u16_s16(q11s16),
- vreinterpret_u8_u64(d3u64));
-
- d0u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
- d1u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q10u16));
- d3u8 = vqmovun_s16(vreinterpretq_s16_u16(q11u16));
-
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d0u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d1u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d2u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d3u8));
- d2 += dest_stride;
- }
- return;
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_alloccommon.c b/thirdparty/libvpx/vp9/common/vp9_alloccommon.c
deleted file mode 100644
index 7dd1005d3f..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_alloccommon.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_config.h"
-#include "vpx_mem/vpx_mem.h"
-
-#include "vp9/common/vp9_alloccommon.h"
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_entropymode.h"
-#include "vp9/common/vp9_entropymv.h"
-#include "vp9/common/vp9_onyxc_int.h"
-
-// TODO(hkuang): Don't need to lock the whole pool after implementing atomic
-// frame reference count.
-void lock_buffer_pool(BufferPool *const pool) {
-#if CONFIG_MULTITHREAD
- pthread_mutex_lock(&pool->pool_mutex);
-#else
- (void)pool;
-#endif
-}
-
-void unlock_buffer_pool(BufferPool *const pool) {
-#if CONFIG_MULTITHREAD
- pthread_mutex_unlock(&pool->pool_mutex);
-#else
- (void)pool;
-#endif
-}
-
-void vp9_set_mb_mi(VP9_COMMON *cm, int width, int height) {
- const int aligned_width = ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2);
- const int aligned_height = ALIGN_POWER_OF_TWO(height, MI_SIZE_LOG2);
-
- cm->mi_cols = aligned_width >> MI_SIZE_LOG2;
- cm->mi_rows = aligned_height >> MI_SIZE_LOG2;
- cm->mi_stride = calc_mi_size(cm->mi_cols);
-
- cm->mb_cols = (cm->mi_cols + 1) >> 1;
- cm->mb_rows = (cm->mi_rows + 1) >> 1;
- cm->MBs = cm->mb_rows * cm->mb_cols;
-}
-
-static int alloc_seg_map(VP9_COMMON *cm, int seg_map_size) {
- int i;
-
- for (i = 0; i < NUM_PING_PONG_BUFFERS; ++i) {
- cm->seg_map_array[i] = (uint8_t *)vpx_calloc(seg_map_size, 1);
- if (cm->seg_map_array[i] == NULL)
- return 1;
- }
- cm->seg_map_alloc_size = seg_map_size;
-
- // Init the index.
- cm->seg_map_idx = 0;
- cm->prev_seg_map_idx = 1;
-
- cm->current_frame_seg_map = cm->seg_map_array[cm->seg_map_idx];
- if (!cm->frame_parallel_decode)
- cm->last_frame_seg_map = cm->seg_map_array[cm->prev_seg_map_idx];
-
- return 0;
-}
-
-static void free_seg_map(VP9_COMMON *cm) {
- int i;
-
- for (i = 0; i < NUM_PING_PONG_BUFFERS; ++i) {
- vpx_free(cm->seg_map_array[i]);
- cm->seg_map_array[i] = NULL;
- }
-
- cm->current_frame_seg_map = NULL;
-
- if (!cm->frame_parallel_decode) {
- cm->last_frame_seg_map = NULL;
- }
-}
-
-void vp9_free_ref_frame_buffers(BufferPool *pool) {
- int i;
-
- for (i = 0; i < FRAME_BUFFERS; ++i) {
- if (pool->frame_bufs[i].ref_count > 0 &&
- pool->frame_bufs[i].raw_frame_buffer.data != NULL) {
- pool->release_fb_cb(pool->cb_priv, &pool->frame_bufs[i].raw_frame_buffer);
- pool->frame_bufs[i].ref_count = 0;
- }
- vpx_free(pool->frame_bufs[i].mvs);
- pool->frame_bufs[i].mvs = NULL;
- vpx_free_frame_buffer(&pool->frame_bufs[i].buf);
- }
-}
-
-void vp9_free_postproc_buffers(VP9_COMMON *cm) {
-#if CONFIG_VP9_POSTPROC
- vpx_free_frame_buffer(&cm->post_proc_buffer);
- vpx_free_frame_buffer(&cm->post_proc_buffer_int);
-#else
- (void)cm;
-#endif
-}
-
-void vp9_free_context_buffers(VP9_COMMON *cm) {
- cm->free_mi(cm);
- free_seg_map(cm);
- vpx_free(cm->above_context);
- cm->above_context = NULL;
- vpx_free(cm->above_seg_context);
- cm->above_seg_context = NULL;
- vpx_free(cm->lf.lfm);
- cm->lf.lfm = NULL;
-}
-
-
-int vp9_alloc_loop_filter(VP9_COMMON *cm) {
- vpx_free(cm->lf.lfm);
- // Each lfm holds bit masks for all the 8x8 blocks in a 64x64 region. The
- // stride and rows are rounded up / truncated to a multiple of 8.
- cm->lf.lfm_stride = (cm->mi_cols + (MI_BLOCK_SIZE - 1)) >> 3;
- cm->lf.lfm = (LOOP_FILTER_MASK *)vpx_calloc(
- ((cm->mi_rows + (MI_BLOCK_SIZE - 1)) >> 3) * cm->lf.lfm_stride,
- sizeof(*cm->lf.lfm));
- if (!cm->lf.lfm)
- return 1;
- return 0;
-}
-
-int vp9_alloc_context_buffers(VP9_COMMON *cm, int width, int height) {
- int new_mi_size;
-
- vp9_set_mb_mi(cm, width, height);
- new_mi_size = cm->mi_stride * calc_mi_size(cm->mi_rows);
- if (cm->mi_alloc_size < new_mi_size) {
- cm->free_mi(cm);
- if (cm->alloc_mi(cm, new_mi_size))
- goto fail;
- }
-
- if (cm->seg_map_alloc_size < cm->mi_rows * cm->mi_cols) {
- // Create the segmentation map structure and set to 0.
- free_seg_map(cm);
- if (alloc_seg_map(cm, cm->mi_rows * cm->mi_cols))
- goto fail;
- }
-
- if (cm->above_context_alloc_cols < cm->mi_cols) {
- vpx_free(cm->above_context);
- cm->above_context = (ENTROPY_CONTEXT *)vpx_calloc(
- 2 * mi_cols_aligned_to_sb(cm->mi_cols) * MAX_MB_PLANE,
- sizeof(*cm->above_context));
- if (!cm->above_context) goto fail;
-
- vpx_free(cm->above_seg_context);
- cm->above_seg_context = (PARTITION_CONTEXT *)vpx_calloc(
- mi_cols_aligned_to_sb(cm->mi_cols), sizeof(*cm->above_seg_context));
- if (!cm->above_seg_context) goto fail;
- cm->above_context_alloc_cols = cm->mi_cols;
- }
-
- if (vp9_alloc_loop_filter(cm))
- goto fail;
-
- return 0;
-
- fail:
- vp9_free_context_buffers(cm);
- return 1;
-}
-
-void vp9_remove_common(VP9_COMMON *cm) {
- vp9_free_context_buffers(cm);
-
- vpx_free(cm->fc);
- cm->fc = NULL;
- vpx_free(cm->frame_contexts);
- cm->frame_contexts = NULL;
-}
-
-void vp9_init_context_buffers(VP9_COMMON *cm) {
- cm->setup_mi(cm);
- if (cm->last_frame_seg_map && !cm->frame_parallel_decode)
- memset(cm->last_frame_seg_map, 0, cm->mi_rows * cm->mi_cols);
-}
-
-void vp9_swap_current_and_last_seg_map(VP9_COMMON *cm) {
- // Swap indices.
- const int tmp = cm->seg_map_idx;
- cm->seg_map_idx = cm->prev_seg_map_idx;
- cm->prev_seg_map_idx = tmp;
-
- cm->current_frame_seg_map = cm->seg_map_array[cm->seg_map_idx];
- cm->last_frame_seg_map = cm->seg_map_array[cm->prev_seg_map_idx];
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_alloccommon.h b/thirdparty/libvpx/vp9/common/vp9_alloccommon.h
deleted file mode 100644
index e53955b998..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_alloccommon.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP9_COMMON_VP9_ALLOCCOMMON_H_
-#define VP9_COMMON_VP9_ALLOCCOMMON_H_
-
-#define INVALID_IDX -1 // Invalid buffer index.
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct VP9Common;
-struct BufferPool;
-
-void vp9_remove_common(struct VP9Common *cm);
-
-int vp9_alloc_loop_filter(struct VP9Common *cm);
-int vp9_alloc_context_buffers(struct VP9Common *cm, int width, int height);
-void vp9_init_context_buffers(struct VP9Common *cm);
-void vp9_free_context_buffers(struct VP9Common *cm);
-
-void vp9_free_ref_frame_buffers(struct BufferPool *pool);
-void vp9_free_postproc_buffers(struct VP9Common *cm);
-
-int vp9_alloc_state_buffers(struct VP9Common *cm, int width, int height);
-void vp9_free_state_buffers(struct VP9Common *cm);
-
-void vp9_set_mb_mi(struct VP9Common *cm, int width, int height);
-
-void vp9_swap_current_and_last_seg_map(struct VP9Common *cm);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_ALLOCCOMMON_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_blockd.c b/thirdparty/libvpx/vp9/common/vp9_blockd.c
deleted file mode 100644
index 7bab27d4fd..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_blockd.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp9/common/vp9_blockd.h"
-
-PREDICTION_MODE vp9_left_block_mode(const MODE_INFO *cur_mi,
- const MODE_INFO *left_mi, int b) {
- if (b == 0 || b == 2) {
- if (!left_mi || is_inter_block(left_mi))
- return DC_PRED;
-
- return get_y_mode(left_mi, b + 1);
- } else {
- assert(b == 1 || b == 3);
- return cur_mi->bmi[b - 1].as_mode;
- }
-}
-
-PREDICTION_MODE vp9_above_block_mode(const MODE_INFO *cur_mi,
- const MODE_INFO *above_mi, int b) {
- if (b == 0 || b == 1) {
- if (!above_mi || is_inter_block(above_mi))
- return DC_PRED;
-
- return get_y_mode(above_mi, b + 2);
- } else {
- assert(b == 2 || b == 3);
- return cur_mi->bmi[b - 2].as_mode;
- }
-}
-
-void vp9_foreach_transformed_block_in_plane(
- const MACROBLOCKD *const xd, BLOCK_SIZE bsize, int plane,
- foreach_transformed_block_visitor visit, void *arg) {
- const struct macroblockd_plane *const pd = &xd->plane[plane];
- const MODE_INFO* mi = xd->mi[0];
- // block and transform sizes, in number of 4x4 blocks log 2 ("*_b")
- // 4x4=0, 8x8=2, 16x16=4, 32x32=6, 64x64=8
- // transform size varies per plane, look it up in a common way.
- const TX_SIZE tx_size = plane ? get_uv_tx_size(mi, pd)
- : mi->tx_size;
- const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd);
- const int num_4x4_w = num_4x4_blocks_wide_lookup[plane_bsize];
- const int num_4x4_h = num_4x4_blocks_high_lookup[plane_bsize];
- const int step = 1 << (tx_size << 1);
- int i = 0, r, c;
-
- // If mb_to_right_edge is < 0 we are in a situation in which
- // the current block size extends into the UMV and we won't
- // visit the sub blocks that are wholly within the UMV.
- const int max_blocks_wide = num_4x4_w + (xd->mb_to_right_edge >= 0 ? 0 :
- xd->mb_to_right_edge >> (5 + pd->subsampling_x));
- const int max_blocks_high = num_4x4_h + (xd->mb_to_bottom_edge >= 0 ? 0 :
- xd->mb_to_bottom_edge >> (5 + pd->subsampling_y));
- const int extra_step = ((num_4x4_w - max_blocks_wide) >> tx_size) * step;
-
- // Keep track of the row and column of the blocks we use so that we know
- // if we are in the unrestricted motion border.
- for (r = 0; r < max_blocks_high; r += (1 << tx_size)) {
- // Skip visiting the sub blocks that are wholly within the UMV.
- for (c = 0; c < max_blocks_wide; c += (1 << tx_size)) {
- visit(plane, i, plane_bsize, tx_size, arg);
- i += step;
- }
- i += extra_step;
- }
-}
-
-void vp9_foreach_transformed_block(const MACROBLOCKD* const xd,
- BLOCK_SIZE bsize,
- foreach_transformed_block_visitor visit,
- void *arg) {
- int plane;
-
- for (plane = 0; plane < MAX_MB_PLANE; ++plane)
- vp9_foreach_transformed_block_in_plane(xd, bsize, plane, visit, arg);
-}
-
-void vp9_set_contexts(const MACROBLOCKD *xd, struct macroblockd_plane *pd,
- BLOCK_SIZE plane_bsize, TX_SIZE tx_size, int has_eob,
- int aoff, int loff) {
- ENTROPY_CONTEXT *const a = pd->above_context + aoff;
- ENTROPY_CONTEXT *const l = pd->left_context + loff;
- const int tx_size_in_blocks = 1 << tx_size;
-
- // above
- if (has_eob && xd->mb_to_right_edge < 0) {
- int i;
- const int blocks_wide = num_4x4_blocks_wide_lookup[plane_bsize] +
- (xd->mb_to_right_edge >> (5 + pd->subsampling_x));
- int above_contexts = tx_size_in_blocks;
- if (above_contexts + aoff > blocks_wide)
- above_contexts = blocks_wide - aoff;
-
- for (i = 0; i < above_contexts; ++i)
- a[i] = has_eob;
- for (i = above_contexts; i < tx_size_in_blocks; ++i)
- a[i] = 0;
- } else {
- memset(a, has_eob, sizeof(ENTROPY_CONTEXT) * tx_size_in_blocks);
- }
-
- // left
- if (has_eob && xd->mb_to_bottom_edge < 0) {
- int i;
- const int blocks_high = num_4x4_blocks_high_lookup[plane_bsize] +
- (xd->mb_to_bottom_edge >> (5 + pd->subsampling_y));
- int left_contexts = tx_size_in_blocks;
- if (left_contexts + loff > blocks_high)
- left_contexts = blocks_high - loff;
-
- for (i = 0; i < left_contexts; ++i)
- l[i] = has_eob;
- for (i = left_contexts; i < tx_size_in_blocks; ++i)
- l[i] = 0;
- } else {
- memset(l, has_eob, sizeof(ENTROPY_CONTEXT) * tx_size_in_blocks);
- }
-}
-
-void vp9_setup_block_planes(MACROBLOCKD *xd, int ss_x, int ss_y) {
- int i;
-
- for (i = 0; i < MAX_MB_PLANE; i++) {
- xd->plane[i].subsampling_x = i ? ss_x : 0;
- xd->plane[i].subsampling_y = i ? ss_y : 0;
- }
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_blockd.h b/thirdparty/libvpx/vp9/common/vp9_blockd.h
deleted file mode 100644
index 3d26fb2b5d..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_blockd.h
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP9_COMMON_VP9_BLOCKD_H_
-#define VP9_COMMON_VP9_BLOCKD_H_
-
-#include "./vpx_config.h"
-
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
-#include "vpx_scale/yv12config.h"
-
-#include "vp9/common/vp9_common_data.h"
-#include "vp9/common/vp9_entropy.h"
-#include "vp9/common/vp9_entropymode.h"
-#include "vp9/common/vp9_mv.h"
-#include "vp9/common/vp9_scale.h"
-#include "vp9/common/vp9_seg_common.h"
-#include "vp9/common/vp9_tile_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MAX_MB_PLANE 3
-
-typedef enum {
- KEY_FRAME = 0,
- INTER_FRAME = 1,
- FRAME_TYPES,
-} FRAME_TYPE;
-
-static INLINE int is_inter_mode(PREDICTION_MODE mode) {
- return mode >= NEARESTMV && mode <= NEWMV;
-}
-
-/* For keyframes, intra block modes are predicted by the (already decoded)
- modes for the Y blocks to the left and above us; for interframes, there
- is a single probability table. */
-
-typedef struct {
- PREDICTION_MODE as_mode;
- int_mv as_mv[2]; // first, second inter predictor motion vectors
-} b_mode_info;
-
-// Note that the rate-distortion optimization loop, bit-stream writer, and
-// decoder implementation modules critically rely on the defined entry values
-// specified herein. They should be refactored concurrently.
-
-#define NONE -1
-#define INTRA_FRAME 0
-#define LAST_FRAME 1
-#define GOLDEN_FRAME 2
-#define ALTREF_FRAME 3
-#define MAX_REF_FRAMES 4
-typedef int8_t MV_REFERENCE_FRAME;
-
-// This structure now relates to 8x8 block regions.
-typedef struct MODE_INFO {
- // Common for both INTER and INTRA blocks
- BLOCK_SIZE sb_type;
- PREDICTION_MODE mode;
- TX_SIZE tx_size;
- int8_t skip;
- int8_t segment_id;
- int8_t seg_id_predicted; // valid only when temporal_update is enabled
-
- // Only for INTRA blocks
- PREDICTION_MODE uv_mode;
-
- // Only for INTER blocks
- INTERP_FILTER interp_filter;
- MV_REFERENCE_FRAME ref_frame[2];
-
- // TODO(slavarnway): Delete and use bmi[3].as_mv[] instead.
- int_mv mv[2];
-
- b_mode_info bmi[4];
-} MODE_INFO;
-
-static INLINE PREDICTION_MODE get_y_mode(const MODE_INFO *mi, int block) {
- return mi->sb_type < BLOCK_8X8 ? mi->bmi[block].as_mode
- : mi->mode;
-}
-
-static INLINE int is_inter_block(const MODE_INFO *mi) {
- return mi->ref_frame[0] > INTRA_FRAME;
-}
-
-static INLINE int has_second_ref(const MODE_INFO *mi) {
- return mi->ref_frame[1] > INTRA_FRAME;
-}
-
-PREDICTION_MODE vp9_left_block_mode(const MODE_INFO *cur_mi,
- const MODE_INFO *left_mi, int b);
-
-PREDICTION_MODE vp9_above_block_mode(const MODE_INFO *cur_mi,
- const MODE_INFO *above_mi, int b);
-
-enum mv_precision {
- MV_PRECISION_Q3,
- MV_PRECISION_Q4
-};
-
-struct buf_2d {
- uint8_t *buf;
- int stride;
-};
-
-struct macroblockd_plane {
- tran_low_t *dqcoeff;
- int subsampling_x;
- int subsampling_y;
- struct buf_2d dst;
- struct buf_2d pre[2];
- ENTROPY_CONTEXT *above_context;
- ENTROPY_CONTEXT *left_context;
- int16_t seg_dequant[MAX_SEGMENTS][2];
-
- // number of 4x4s in current block
- uint16_t n4_w, n4_h;
- // log2 of n4_w, n4_h
- uint8_t n4_wl, n4_hl;
-
- // encoder
- const int16_t *dequant;
-};
-
-#define BLOCK_OFFSET(x, i) ((x) + (i) * 16)
-
-typedef struct RefBuffer {
- // TODO(dkovalev): idx is not really required and should be removed, now it
- // is used in vp9_onyxd_if.c
- int idx;
- YV12_BUFFER_CONFIG *buf;
- struct scale_factors sf;
-} RefBuffer;
-
-typedef struct macroblockd {
- struct macroblockd_plane plane[MAX_MB_PLANE];
- uint8_t bmode_blocks_wl;
- uint8_t bmode_blocks_hl;
-
- FRAME_COUNTS *counts;
- TileInfo tile;
-
- int mi_stride;
-
- MODE_INFO **mi;
- MODE_INFO *left_mi;
- MODE_INFO *above_mi;
-
- unsigned int max_blocks_wide;
- unsigned int max_blocks_high;
-
- const vpx_prob (*partition_probs)[PARTITION_TYPES - 1];
-
- /* Distance of MB away from frame edges */
- int mb_to_left_edge;
- int mb_to_right_edge;
- int mb_to_top_edge;
- int mb_to_bottom_edge;
-
- FRAME_CONTEXT *fc;
-
- /* pointers to reference frames */
- RefBuffer *block_refs[2];
-
- /* pointer to current frame */
- const YV12_BUFFER_CONFIG *cur_buf;
-
- ENTROPY_CONTEXT *above_context[MAX_MB_PLANE];
- ENTROPY_CONTEXT left_context[MAX_MB_PLANE][16];
-
- PARTITION_CONTEXT *above_seg_context;
- PARTITION_CONTEXT left_seg_context[8];
-
-#if CONFIG_VP9_HIGHBITDEPTH
- /* Bit depth: 8, 10, 12 */
- int bd;
-#endif
-
- int lossless;
- int corrupted;
-
- struct vpx_internal_error_info *error_info;
-} MACROBLOCKD;
-
-static INLINE PLANE_TYPE get_plane_type(int plane) {
- return (PLANE_TYPE)(plane > 0);
-}
-
-static INLINE BLOCK_SIZE get_subsize(BLOCK_SIZE bsize,
- PARTITION_TYPE partition) {
- return subsize_lookup[partition][bsize];
-}
-
-extern const TX_TYPE intra_mode_to_tx_type_lookup[INTRA_MODES];
-
-static INLINE TX_TYPE get_tx_type(PLANE_TYPE plane_type,
- const MACROBLOCKD *xd) {
- const MODE_INFO *const mi = xd->mi[0];
-
- if (plane_type != PLANE_TYPE_Y || xd->lossless || is_inter_block(mi))
- return DCT_DCT;
-
- return intra_mode_to_tx_type_lookup[mi->mode];
-}
-
-static INLINE TX_TYPE get_tx_type_4x4(PLANE_TYPE plane_type,
- const MACROBLOCKD *xd, int ib) {
- const MODE_INFO *const mi = xd->mi[0];
-
- if (plane_type != PLANE_TYPE_Y || xd->lossless || is_inter_block(mi))
- return DCT_DCT;
-
- return intra_mode_to_tx_type_lookup[get_y_mode(mi, ib)];
-}
-
-void vp9_setup_block_planes(MACROBLOCKD *xd, int ss_x, int ss_y);
-
-static INLINE TX_SIZE get_uv_tx_size_impl(TX_SIZE y_tx_size, BLOCK_SIZE bsize,
- int xss, int yss) {
- if (bsize < BLOCK_8X8) {
- return TX_4X4;
- } else {
- const BLOCK_SIZE plane_bsize = ss_size_lookup[bsize][xss][yss];
- return VPXMIN(y_tx_size, max_txsize_lookup[plane_bsize]);
- }
-}
-
-static INLINE TX_SIZE get_uv_tx_size(const MODE_INFO *mi,
- const struct macroblockd_plane *pd) {
- return get_uv_tx_size_impl(mi->tx_size, mi->sb_type, pd->subsampling_x,
- pd->subsampling_y);
-}
-
-static INLINE BLOCK_SIZE get_plane_block_size(BLOCK_SIZE bsize,
- const struct macroblockd_plane *pd) {
- return ss_size_lookup[bsize][pd->subsampling_x][pd->subsampling_y];
-}
-
-static INLINE void reset_skip_context(MACROBLOCKD *xd, BLOCK_SIZE bsize) {
- int i;
- for (i = 0; i < MAX_MB_PLANE; i++) {
- struct macroblockd_plane *const pd = &xd->plane[i];
- const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd);
- memset(pd->above_context, 0,
- sizeof(ENTROPY_CONTEXT) * num_4x4_blocks_wide_lookup[plane_bsize]);
- memset(pd->left_context, 0,
- sizeof(ENTROPY_CONTEXT) * num_4x4_blocks_high_lookup[plane_bsize]);
- }
-}
-
-static INLINE const vpx_prob *get_y_mode_probs(const MODE_INFO *mi,
- const MODE_INFO *above_mi,
- const MODE_INFO *left_mi,
- int block) {
- const PREDICTION_MODE above = vp9_above_block_mode(mi, above_mi, block);
- const PREDICTION_MODE left = vp9_left_block_mode(mi, left_mi, block);
- return vp9_kf_y_mode_prob[above][left];
-}
-
-typedef void (*foreach_transformed_block_visitor)(int plane, int block,
- BLOCK_SIZE plane_bsize,
- TX_SIZE tx_size,
- void *arg);
-
-void vp9_foreach_transformed_block_in_plane(
- const MACROBLOCKD *const xd, BLOCK_SIZE bsize, int plane,
- foreach_transformed_block_visitor visit, void *arg);
-
-
-void vp9_foreach_transformed_block(
- const MACROBLOCKD* const xd, BLOCK_SIZE bsize,
- foreach_transformed_block_visitor visit, void *arg);
-
-static INLINE void txfrm_block_to_raster_xy(BLOCK_SIZE plane_bsize,
- TX_SIZE tx_size, int block,
- int *x, int *y) {
- const int bwl = b_width_log2_lookup[plane_bsize];
- const int tx_cols_log2 = bwl - tx_size;
- const int tx_cols = 1 << tx_cols_log2;
- const int raster_mb = block >> (tx_size << 1);
- *x = (raster_mb & (tx_cols - 1)) << tx_size;
- *y = (raster_mb >> tx_cols_log2) << tx_size;
-}
-
-void vp9_set_contexts(const MACROBLOCKD *xd, struct macroblockd_plane *pd,
- BLOCK_SIZE plane_bsize, TX_SIZE tx_size, int has_eob,
- int aoff, int loff);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_BLOCKD_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_common.h b/thirdparty/libvpx/vp9/common/vp9_common.h
deleted file mode 100644
index 908fa80a31..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_common.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_COMMON_H_
-#define VP9_COMMON_VP9_COMMON_H_
-
-/* Interface header for common constant data structures and lookup tables */
-
-#include <assert.h>
-
-#include "./vpx_config.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/bitops.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Only need this for fixed-size arrays, for structs just assign.
-#define vp9_copy(dest, src) { \
- assert(sizeof(dest) == sizeof(src)); \
- memcpy(dest, src, sizeof(src)); \
- }
-
-// Use this for variably-sized arrays.
-#define vp9_copy_array(dest, src, n) { \
- assert(sizeof(*dest) == sizeof(*src)); \
- memcpy(dest, src, n * sizeof(*src)); \
- }
-
-#define vp9_zero(dest) memset(&(dest), 0, sizeof(dest))
-#define vp9_zero_array(dest, n) memset(dest, 0, n * sizeof(*dest))
-
-static INLINE int get_unsigned_bits(unsigned int num_values) {
- return num_values > 0 ? get_msb(num_values) + 1 : 0;
-}
-
-#if CONFIG_DEBUG
-#define CHECK_MEM_ERROR(cm, lval, expr) do { \
- lval = (expr); \
- if (!lval) \
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, \
- "Failed to allocate "#lval" at %s:%d", \
- __FILE__, __LINE__); \
- } while (0)
-#else
-#define CHECK_MEM_ERROR(cm, lval, expr) do { \
- lval = (expr); \
- if (!lval) \
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, \
- "Failed to allocate "#lval); \
- } while (0)
-#endif
-
-#define VP9_SYNC_CODE_0 0x49
-#define VP9_SYNC_CODE_1 0x83
-#define VP9_SYNC_CODE_2 0x42
-
-#define VP9_FRAME_MARKER 0x2
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_COMMON_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_common_data.c b/thirdparty/libvpx/vp9/common/vp9_common_data.c
deleted file mode 100644
index 3409d04844..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_common_data.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp9/common/vp9_common_data.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-
-// Log 2 conversion lookup tables for block width and height
-const uint8_t b_width_log2_lookup[BLOCK_SIZES] =
- {0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4};
-const uint8_t b_height_log2_lookup[BLOCK_SIZES] =
- {0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4};
-const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES] =
- {1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16};
-const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES] =
- {1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16};
-// Log 2 conversion lookup tables for modeinfo width and height
-const uint8_t mi_width_log2_lookup[BLOCK_SIZES] =
- {0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3};
-const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES] =
- {1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8};
-const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES] =
- {1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8};
-
-// VPXMIN(3, VPXMIN(b_width_log2(bsize), b_height_log2(bsize)))
-const uint8_t size_group_lookup[BLOCK_SIZES] =
- {0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3};
-
-const uint8_t num_pels_log2_lookup[BLOCK_SIZES] =
- {4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12};
-
-const PARTITION_TYPE partition_lookup[][BLOCK_SIZES] = {
- { // 4X4
- // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64
- PARTITION_NONE, PARTITION_INVALID, PARTITION_INVALID,
- PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
- PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
- PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
- PARTITION_INVALID
- }, { // 8X8
- // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64
- PARTITION_SPLIT, PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE,
- PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
- PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
- PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID
- }, { // 16X16
- // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64
- PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
- PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, PARTITION_INVALID,
- PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
- PARTITION_INVALID, PARTITION_INVALID
- }, { // 32X32
- // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64
- PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
- PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_VERT,
- PARTITION_HORZ, PARTITION_NONE, PARTITION_INVALID,
- PARTITION_INVALID, PARTITION_INVALID
- }, { // 64X64
- // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64
- PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
- PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
- PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_VERT, PARTITION_HORZ,
- PARTITION_NONE
- }
-};
-
-const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = {
- { // PARTITION_NONE
- BLOCK_4X4, BLOCK_4X8, BLOCK_8X4,
- BLOCK_8X8, BLOCK_8X16, BLOCK_16X8,
- BLOCK_16X16, BLOCK_16X32, BLOCK_32X16,
- BLOCK_32X32, BLOCK_32X64, BLOCK_64X32,
- BLOCK_64X64,
- }, { // PARTITION_HORZ
- BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_8X4, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_16X8, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_32X16, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_64X32,
- }, { // PARTITION_VERT
- BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_4X8, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_8X16, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_16X32, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_32X64,
- }, { // PARTITION_SPLIT
- BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_4X4, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_8X8, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_16X16, BLOCK_INVALID, BLOCK_INVALID,
- BLOCK_32X32,
- }
-};
-
-const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = {
- TX_4X4, TX_4X4, TX_4X4,
- TX_8X8, TX_8X8, TX_8X8,
- TX_16X16, TX_16X16, TX_16X16,
- TX_32X32, TX_32X32, TX_32X32, TX_32X32
-};
-
-const BLOCK_SIZE txsize_to_bsize[TX_SIZES] = {
- BLOCK_4X4, // TX_4X4
- BLOCK_8X8, // TX_8X8
- BLOCK_16X16, // TX_16X16
- BLOCK_32X32, // TX_32X32
-};
-
-const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = {
- TX_4X4, // ONLY_4X4
- TX_8X8, // ALLOW_8X8
- TX_16X16, // ALLOW_16X16
- TX_32X32, // ALLOW_32X32
- TX_32X32, // TX_MODE_SELECT
-};
-
-const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES][2][2] = {
-// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1
-// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1
- {{BLOCK_4X4, BLOCK_INVALID}, {BLOCK_INVALID, BLOCK_INVALID}},
- {{BLOCK_4X8, BLOCK_4X4}, {BLOCK_INVALID, BLOCK_INVALID}},
- {{BLOCK_8X4, BLOCK_INVALID}, {BLOCK_4X4, BLOCK_INVALID}},
- {{BLOCK_8X8, BLOCK_8X4}, {BLOCK_4X8, BLOCK_4X4}},
- {{BLOCK_8X16, BLOCK_8X8}, {BLOCK_INVALID, BLOCK_4X8}},
- {{BLOCK_16X8, BLOCK_INVALID}, {BLOCK_8X8, BLOCK_8X4}},
- {{BLOCK_16X16, BLOCK_16X8}, {BLOCK_8X16, BLOCK_8X8}},
- {{BLOCK_16X32, BLOCK_16X16}, {BLOCK_INVALID, BLOCK_8X16}},
- {{BLOCK_32X16, BLOCK_INVALID}, {BLOCK_16X16, BLOCK_16X8}},
- {{BLOCK_32X32, BLOCK_32X16}, {BLOCK_16X32, BLOCK_16X16}},
- {{BLOCK_32X64, BLOCK_32X32}, {BLOCK_INVALID, BLOCK_16X32}},
- {{BLOCK_64X32, BLOCK_INVALID}, {BLOCK_32X32, BLOCK_32X16}},
- {{BLOCK_64X64, BLOCK_64X32}, {BLOCK_32X64, BLOCK_32X32}},
-};
-
-// Generates 4 bit field in which each bit set to 1 represents
-// a blocksize partition 1111 means we split 64x64, 32x32, 16x16
-// and 8x8. 1000 means we just split the 64x64 to 32x32
-const struct {
- PARTITION_CONTEXT above;
- PARTITION_CONTEXT left;
-} partition_context_lookup[BLOCK_SIZES]= {
- {15, 15}, // 4X4 - {0b1111, 0b1111}
- {15, 14}, // 4X8 - {0b1111, 0b1110}
- {14, 15}, // 8X4 - {0b1110, 0b1111}
- {14, 14}, // 8X8 - {0b1110, 0b1110}
- {14, 12}, // 8X16 - {0b1110, 0b1100}
- {12, 14}, // 16X8 - {0b1100, 0b1110}
- {12, 12}, // 16X16 - {0b1100, 0b1100}
- {12, 8 }, // 16X32 - {0b1100, 0b1000}
- {8, 12}, // 32X16 - {0b1000, 0b1100}
- {8, 8 }, // 32X32 - {0b1000, 0b1000}
- {8, 0 }, // 32X64 - {0b1000, 0b0000}
- {0, 8 }, // 64X32 - {0b0000, 0b1000}
- {0, 0 }, // 64X64 - {0b0000, 0b0000}
-};
-
-#if CONFIG_BETTER_HW_COMPATIBILITY && CONFIG_VP9_HIGHBITDEPTH
-const uint8_t need_top_left[INTRA_MODES] = {
- 0, // DC_PRED
- 0, // V_PRED
- 0, // H_PRED
- 0, // D45_PRED
- 1, // D135_PRED
- 1, // D117_PRED
- 1, // D153_PRED
- 0, // D207_PRED
- 0, // D63_PRED
- 1, // TM_PRED
-};
-#endif // CONFIG_BETTER_HW_COMPATIBILITY && CONFIG_VP9_HIGHBITDEPTH
diff --git a/thirdparty/libvpx/vp9/common/vp9_common_data.h b/thirdparty/libvpx/vp9/common/vp9_common_data.h
deleted file mode 100644
index 0ae24dad54..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_common_data.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_COMMON_DATA_H_
-#define VP9_COMMON_VP9_COMMON_DATA_H_
-
-#include "vp9/common/vp9_enums.h"
-#include "vpx/vpx_integer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern const uint8_t b_width_log2_lookup[BLOCK_SIZES];
-extern const uint8_t b_height_log2_lookup[BLOCK_SIZES];
-extern const uint8_t mi_width_log2_lookup[BLOCK_SIZES];
-extern const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES];
-extern const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES];
-extern const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES];
-extern const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES];
-extern const uint8_t size_group_lookup[BLOCK_SIZES];
-extern const uint8_t num_pels_log2_lookup[BLOCK_SIZES];
-extern const PARTITION_TYPE partition_lookup[][BLOCK_SIZES];
-extern const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES];
-extern const TX_SIZE max_txsize_lookup[BLOCK_SIZES];
-extern const BLOCK_SIZE txsize_to_bsize[TX_SIZES];
-extern const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES];
-extern const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES][2][2];
-#if CONFIG_BETTER_HW_COMPATIBILITY && CONFIG_VP9_HIGHBITDEPTH
-extern const uint8_t need_top_left[INTRA_MODES];
-#endif // CONFIG_BETTER_HW_COMPATIBILITY && CONFIG_VP9_HIGHBITDEPTH
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_COMMON_DATA_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_debugmodes.c b/thirdparty/libvpx/vp9/common/vp9_debugmodes.c
deleted file mode 100644
index d9c1fd9686..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_debugmodes.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <stdio.h>
-
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_onyxc_int.h"
-
-static void log_frame_info(VP9_COMMON *cm, const char *str, FILE *f) {
- fprintf(f, "%s", str);
- fprintf(f, "(Frame %d, Show:%d, Q:%d): \n", cm->current_video_frame,
- cm->show_frame, cm->base_qindex);
-}
-/* This function dereferences a pointer to the mbmi structure
- * and uses the passed in member offset to print out the value of an integer
- * for each mbmi member value in the mi structure.
- */
-static void print_mi_data(VP9_COMMON *cm, FILE *file, const char *descriptor,
- size_t member_offset) {
- int mi_row, mi_col;
- MODE_INFO **mi = cm->mi_grid_visible;
- int rows = cm->mi_rows;
- int cols = cm->mi_cols;
- char prefix = descriptor[0];
-
- log_frame_info(cm, descriptor, file);
- for (mi_row = 0; mi_row < rows; mi_row++) {
- fprintf(file, "%c ", prefix);
- for (mi_col = 0; mi_col < cols; mi_col++) {
- fprintf(file, "%2d ",
- *((int*) ((char *) (mi[0]) +
- member_offset)));
- mi++;
- }
- fprintf(file, "\n");
- mi += 8;
- }
- fprintf(file, "\n");
-}
-
-void vp9_print_modes_and_motion_vectors(VP9_COMMON *cm, const char *file) {
- int mi_row;
- int mi_col;
- FILE *mvs = fopen(file, "a");
- MODE_INFO **mi = cm->mi_grid_visible;
- int rows = cm->mi_rows;
- int cols = cm->mi_cols;
-
- print_mi_data(cm, mvs, "Partitions:", offsetof(MODE_INFO, sb_type));
- print_mi_data(cm, mvs, "Modes:", offsetof(MODE_INFO, mode));
- print_mi_data(cm, mvs, "Ref frame:", offsetof(MODE_INFO, ref_frame[0]));
- print_mi_data(cm, mvs, "Transform:", offsetof(MODE_INFO, tx_size));
- print_mi_data(cm, mvs, "UV Modes:", offsetof(MODE_INFO, uv_mode));
-
- // output skip infomation.
- log_frame_info(cm, "Skips:", mvs);
- for (mi_row = 0; mi_row < rows; mi_row++) {
- fprintf(mvs, "S ");
- for (mi_col = 0; mi_col < cols; mi_col++) {
- fprintf(mvs, "%2d ", mi[0]->skip);
- mi++;
- }
- fprintf(mvs, "\n");
- mi += 8;
- }
- fprintf(mvs, "\n");
-
- // output motion vectors.
- log_frame_info(cm, "Vectors ", mvs);
- mi = cm->mi_grid_visible;
- for (mi_row = 0; mi_row < rows; mi_row++) {
- fprintf(mvs, "V ");
- for (mi_col = 0; mi_col < cols; mi_col++) {
- fprintf(mvs, "%4d:%4d ", mi[0]->mv[0].as_mv.row,
- mi[0]->mv[0].as_mv.col);
- mi++;
- }
- fprintf(mvs, "\n");
- mi += 8;
- }
- fprintf(mvs, "\n");
-
- fclose(mvs);
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_entropy.c b/thirdparty/libvpx/vp9/common/vp9_entropy.c
deleted file mode 100644
index 7b490af34f..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_entropy.c
+++ /dev/null
@@ -1,802 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp9/common/vp9_entropy.h"
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vp9/common/vp9_entropymode.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx/vpx_integer.h"
-
-// Unconstrained Node Tree
-const vpx_tree_index vp9_coef_con_tree[TREE_SIZE(ENTROPY_TOKENS)] = {
- 2, 6, // 0 = LOW_VAL
- -TWO_TOKEN, 4, // 1 = TWO
- -THREE_TOKEN, -FOUR_TOKEN, // 2 = THREE
- 8, 10, // 3 = HIGH_LOW
- -CATEGORY1_TOKEN, -CATEGORY2_TOKEN, // 4 = CAT_ONE
- 12, 14, // 5 = CAT_THREEFOUR
- -CATEGORY3_TOKEN, -CATEGORY4_TOKEN, // 6 = CAT_THREE
- -CATEGORY5_TOKEN, -CATEGORY6_TOKEN // 7 = CAT_FIVE
-};
-
-const vpx_prob vp9_cat1_prob[] = { 159 };
-const vpx_prob vp9_cat2_prob[] = { 165, 145 };
-const vpx_prob vp9_cat3_prob[] = { 173, 148, 140 };
-const vpx_prob vp9_cat4_prob[] = { 176, 155, 140, 135 };
-const vpx_prob vp9_cat5_prob[] = { 180, 157, 141, 134, 130 };
-const vpx_prob vp9_cat6_prob[] = {
- 254, 254, 254, 252, 249, 243, 230, 196, 177, 153, 140, 133, 130, 129
-};
-#if CONFIG_VP9_HIGHBITDEPTH
-const vpx_prob vp9_cat6_prob_high12[] = {
- 255, 255, 255, 255, 254, 254, 254, 252, 249,
- 243, 230, 196, 177, 153, 140, 133, 130, 129
-};
-#endif
-
-const uint8_t vp9_coefband_trans_8x8plus[1024] = {
- 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 5,
- // beyond MAXBAND_INDEX+1 all values are filled as 5
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-};
-
-const uint8_t vp9_coefband_trans_4x4[16] = {
- 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5,
-};
-
-const uint8_t vp9_pt_energy_class[ENTROPY_TOKENS] = {
- 0, 1, 2, 3, 3, 4, 4, 5, 5, 5, 5, 5
-};
-
-// Model obtained from a 2-sided zero-centerd distribuition derived
-// from a Pareto distribution. The cdf of the distribution is:
-// cdf(x) = 0.5 + 0.5 * sgn(x) * [1 - {alpha/(alpha + |x|)} ^ beta]
-//
-// For a given beta and a given probablity of the 1-node, the alpha
-// is first solved, and then the {alpha, beta} pair is used to generate
-// the probabilities for the rest of the nodes.
-
-// beta = 8
-
-// Every odd line in this table can be generated from the even lines
-// by averaging :
-// vp9_pareto8_full[l][node] = (vp9_pareto8_full[l-1][node] +
-// vp9_pareto8_full[l+1][node] ) >> 1;
-const vpx_prob vp9_pareto8_full[COEFF_PROB_MODELS][MODEL_NODES] = {
- { 3, 86, 128, 6, 86, 23, 88, 29},
- { 6, 86, 128, 11, 87, 42, 91, 52},
- { 9, 86, 129, 17, 88, 61, 94, 76},
- { 12, 86, 129, 22, 88, 77, 97, 93},
- { 15, 87, 129, 28, 89, 93, 100, 110},
- { 17, 87, 129, 33, 90, 105, 103, 123},
- { 20, 88, 130, 38, 91, 118, 106, 136},
- { 23, 88, 130, 43, 91, 128, 108, 146},
- { 26, 89, 131, 48, 92, 139, 111, 156},
- { 28, 89, 131, 53, 93, 147, 114, 163},
- { 31, 90, 131, 58, 94, 156, 117, 171},
- { 34, 90, 131, 62, 94, 163, 119, 177},
- { 37, 90, 132, 66, 95, 171, 122, 184},
- { 39, 90, 132, 70, 96, 177, 124, 189},
- { 42, 91, 132, 75, 97, 183, 127, 194},
- { 44, 91, 132, 79, 97, 188, 129, 198},
- { 47, 92, 133, 83, 98, 193, 132, 202},
- { 49, 92, 133, 86, 99, 197, 134, 205},
- { 52, 93, 133, 90, 100, 201, 137, 208},
- { 54, 93, 133, 94, 100, 204, 139, 211},
- { 57, 94, 134, 98, 101, 208, 142, 214},
- { 59, 94, 134, 101, 102, 211, 144, 216},
- { 62, 94, 135, 105, 103, 214, 146, 218},
- { 64, 94, 135, 108, 103, 216, 148, 220},
- { 66, 95, 135, 111, 104, 219, 151, 222},
- { 68, 95, 135, 114, 105, 221, 153, 223},
- { 71, 96, 136, 117, 106, 224, 155, 225},
- { 73, 96, 136, 120, 106, 225, 157, 226},
- { 76, 97, 136, 123, 107, 227, 159, 228},
- { 78, 97, 136, 126, 108, 229, 160, 229},
- { 80, 98, 137, 129, 109, 231, 162, 231},
- { 82, 98, 137, 131, 109, 232, 164, 232},
- { 84, 98, 138, 134, 110, 234, 166, 233},
- { 86, 98, 138, 137, 111, 235, 168, 234},
- { 89, 99, 138, 140, 112, 236, 170, 235},
- { 91, 99, 138, 142, 112, 237, 171, 235},
- { 93, 100, 139, 145, 113, 238, 173, 236},
- { 95, 100, 139, 147, 114, 239, 174, 237},
- { 97, 101, 140, 149, 115, 240, 176, 238},
- { 99, 101, 140, 151, 115, 241, 177, 238},
- {101, 102, 140, 154, 116, 242, 179, 239},
- {103, 102, 140, 156, 117, 242, 180, 239},
- {105, 103, 141, 158, 118, 243, 182, 240},
- {107, 103, 141, 160, 118, 243, 183, 240},
- {109, 104, 141, 162, 119, 244, 185, 241},
- {111, 104, 141, 164, 119, 244, 186, 241},
- {113, 104, 142, 166, 120, 245, 187, 242},
- {114, 104, 142, 168, 121, 245, 188, 242},
- {116, 105, 143, 170, 122, 246, 190, 243},
- {118, 105, 143, 171, 122, 246, 191, 243},
- {120, 106, 143, 173, 123, 247, 192, 244},
- {121, 106, 143, 175, 124, 247, 193, 244},
- {123, 107, 144, 177, 125, 248, 195, 244},
- {125, 107, 144, 178, 125, 248, 196, 244},
- {127, 108, 145, 180, 126, 249, 197, 245},
- {128, 108, 145, 181, 127, 249, 198, 245},
- {130, 109, 145, 183, 128, 249, 199, 245},
- {132, 109, 145, 184, 128, 249, 200, 245},
- {134, 110, 146, 186, 129, 250, 201, 246},
- {135, 110, 146, 187, 130, 250, 202, 246},
- {137, 111, 147, 189, 131, 251, 203, 246},
- {138, 111, 147, 190, 131, 251, 204, 246},
- {140, 112, 147, 192, 132, 251, 205, 247},
- {141, 112, 147, 193, 132, 251, 206, 247},
- {143, 113, 148, 194, 133, 251, 207, 247},
- {144, 113, 148, 195, 134, 251, 207, 247},
- {146, 114, 149, 197, 135, 252, 208, 248},
- {147, 114, 149, 198, 135, 252, 209, 248},
- {149, 115, 149, 199, 136, 252, 210, 248},
- {150, 115, 149, 200, 137, 252, 210, 248},
- {152, 115, 150, 201, 138, 252, 211, 248},
- {153, 115, 150, 202, 138, 252, 212, 248},
- {155, 116, 151, 204, 139, 253, 213, 249},
- {156, 116, 151, 205, 139, 253, 213, 249},
- {158, 117, 151, 206, 140, 253, 214, 249},
- {159, 117, 151, 207, 141, 253, 215, 249},
- {161, 118, 152, 208, 142, 253, 216, 249},
- {162, 118, 152, 209, 142, 253, 216, 249},
- {163, 119, 153, 210, 143, 253, 217, 249},
- {164, 119, 153, 211, 143, 253, 217, 249},
- {166, 120, 153, 212, 144, 254, 218, 250},
- {167, 120, 153, 212, 145, 254, 219, 250},
- {168, 121, 154, 213, 146, 254, 220, 250},
- {169, 121, 154, 214, 146, 254, 220, 250},
- {171, 122, 155, 215, 147, 254, 221, 250},
- {172, 122, 155, 216, 147, 254, 221, 250},
- {173, 123, 155, 217, 148, 254, 222, 250},
- {174, 123, 155, 217, 149, 254, 222, 250},
- {176, 124, 156, 218, 150, 254, 223, 250},
- {177, 124, 156, 219, 150, 254, 223, 250},
- {178, 125, 157, 220, 151, 254, 224, 251},
- {179, 125, 157, 220, 151, 254, 224, 251},
- {180, 126, 157, 221, 152, 254, 225, 251},
- {181, 126, 157, 221, 152, 254, 225, 251},
- {183, 127, 158, 222, 153, 254, 226, 251},
- {184, 127, 158, 223, 154, 254, 226, 251},
- {185, 128, 159, 224, 155, 255, 227, 251},
- {186, 128, 159, 224, 155, 255, 227, 251},
- {187, 129, 160, 225, 156, 255, 228, 251},
- {188, 130, 160, 225, 156, 255, 228, 251},
- {189, 131, 160, 226, 157, 255, 228, 251},
- {190, 131, 160, 226, 158, 255, 228, 251},
- {191, 132, 161, 227, 159, 255, 229, 251},
- {192, 132, 161, 227, 159, 255, 229, 251},
- {193, 133, 162, 228, 160, 255, 230, 252},
- {194, 133, 162, 229, 160, 255, 230, 252},
- {195, 134, 163, 230, 161, 255, 231, 252},
- {196, 134, 163, 230, 161, 255, 231, 252},
- {197, 135, 163, 231, 162, 255, 231, 252},
- {198, 135, 163, 231, 162, 255, 231, 252},
- {199, 136, 164, 232, 163, 255, 232, 252},
- {200, 136, 164, 232, 164, 255, 232, 252},
- {201, 137, 165, 233, 165, 255, 233, 252},
- {201, 137, 165, 233, 165, 255, 233, 252},
- {202, 138, 166, 233, 166, 255, 233, 252},
- {203, 138, 166, 233, 166, 255, 233, 252},
- {204, 139, 166, 234, 167, 255, 234, 252},
- {205, 139, 166, 234, 167, 255, 234, 252},
- {206, 140, 167, 235, 168, 255, 235, 252},
- {206, 140, 167, 235, 168, 255, 235, 252},
- {207, 141, 168, 236, 169, 255, 235, 252},
- {208, 141, 168, 236, 170, 255, 235, 252},
- {209, 142, 169, 237, 171, 255, 236, 252},
- {209, 143, 169, 237, 171, 255, 236, 252},
- {210, 144, 169, 237, 172, 255, 236, 252},
- {211, 144, 169, 237, 172, 255, 236, 252},
- {212, 145, 170, 238, 173, 255, 237, 252},
- {213, 145, 170, 238, 173, 255, 237, 252},
- {214, 146, 171, 239, 174, 255, 237, 253},
- {214, 146, 171, 239, 174, 255, 237, 253},
- {215, 147, 172, 240, 175, 255, 238, 253},
- {215, 147, 172, 240, 175, 255, 238, 253},
- {216, 148, 173, 240, 176, 255, 238, 253},
- {217, 148, 173, 240, 176, 255, 238, 253},
- {218, 149, 173, 241, 177, 255, 239, 253},
- {218, 149, 173, 241, 178, 255, 239, 253},
- {219, 150, 174, 241, 179, 255, 239, 253},
- {219, 151, 174, 241, 179, 255, 239, 253},
- {220, 152, 175, 242, 180, 255, 240, 253},
- {221, 152, 175, 242, 180, 255, 240, 253},
- {222, 153, 176, 242, 181, 255, 240, 253},
- {222, 153, 176, 242, 181, 255, 240, 253},
- {223, 154, 177, 243, 182, 255, 240, 253},
- {223, 154, 177, 243, 182, 255, 240, 253},
- {224, 155, 178, 244, 183, 255, 241, 253},
- {224, 155, 178, 244, 183, 255, 241, 253},
- {225, 156, 178, 244, 184, 255, 241, 253},
- {225, 157, 178, 244, 184, 255, 241, 253},
- {226, 158, 179, 244, 185, 255, 242, 253},
- {227, 158, 179, 244, 185, 255, 242, 253},
- {228, 159, 180, 245, 186, 255, 242, 253},
- {228, 159, 180, 245, 186, 255, 242, 253},
- {229, 160, 181, 245, 187, 255, 242, 253},
- {229, 160, 181, 245, 187, 255, 242, 253},
- {230, 161, 182, 246, 188, 255, 243, 253},
- {230, 162, 182, 246, 188, 255, 243, 253},
- {231, 163, 183, 246, 189, 255, 243, 253},
- {231, 163, 183, 246, 189, 255, 243, 253},
- {232, 164, 184, 247, 190, 255, 243, 253},
- {232, 164, 184, 247, 190, 255, 243, 253},
- {233, 165, 185, 247, 191, 255, 244, 253},
- {233, 165, 185, 247, 191, 255, 244, 253},
- {234, 166, 185, 247, 192, 255, 244, 253},
- {234, 167, 185, 247, 192, 255, 244, 253},
- {235, 168, 186, 248, 193, 255, 244, 253},
- {235, 168, 186, 248, 193, 255, 244, 253},
- {236, 169, 187, 248, 194, 255, 244, 253},
- {236, 169, 187, 248, 194, 255, 244, 253},
- {236, 170, 188, 248, 195, 255, 245, 253},
- {236, 170, 188, 248, 195, 255, 245, 253},
- {237, 171, 189, 249, 196, 255, 245, 254},
- {237, 172, 189, 249, 196, 255, 245, 254},
- {238, 173, 190, 249, 197, 255, 245, 254},
- {238, 173, 190, 249, 197, 255, 245, 254},
- {239, 174, 191, 249, 198, 255, 245, 254},
- {239, 174, 191, 249, 198, 255, 245, 254},
- {240, 175, 192, 249, 199, 255, 246, 254},
- {240, 176, 192, 249, 199, 255, 246, 254},
- {240, 177, 193, 250, 200, 255, 246, 254},
- {240, 177, 193, 250, 200, 255, 246, 254},
- {241, 178, 194, 250, 201, 255, 246, 254},
- {241, 178, 194, 250, 201, 255, 246, 254},
- {242, 179, 195, 250, 202, 255, 246, 254},
- {242, 180, 195, 250, 202, 255, 246, 254},
- {242, 181, 196, 250, 203, 255, 247, 254},
- {242, 181, 196, 250, 203, 255, 247, 254},
- {243, 182, 197, 251, 204, 255, 247, 254},
- {243, 183, 197, 251, 204, 255, 247, 254},
- {244, 184, 198, 251, 205, 255, 247, 254},
- {244, 184, 198, 251, 205, 255, 247, 254},
- {244, 185, 199, 251, 206, 255, 247, 254},
- {244, 185, 199, 251, 206, 255, 247, 254},
- {245, 186, 200, 251, 207, 255, 247, 254},
- {245, 187, 200, 251, 207, 255, 247, 254},
- {246, 188, 201, 252, 207, 255, 248, 254},
- {246, 188, 201, 252, 207, 255, 248, 254},
- {246, 189, 202, 252, 208, 255, 248, 254},
- {246, 190, 202, 252, 208, 255, 248, 254},
- {247, 191, 203, 252, 209, 255, 248, 254},
- {247, 191, 203, 252, 209, 255, 248, 254},
- {247, 192, 204, 252, 210, 255, 248, 254},
- {247, 193, 204, 252, 210, 255, 248, 254},
- {248, 194, 205, 252, 211, 255, 248, 254},
- {248, 194, 205, 252, 211, 255, 248, 254},
- {248, 195, 206, 252, 212, 255, 249, 254},
- {248, 196, 206, 252, 212, 255, 249, 254},
- {249, 197, 207, 253, 213, 255, 249, 254},
- {249, 197, 207, 253, 213, 255, 249, 254},
- {249, 198, 208, 253, 214, 255, 249, 254},
- {249, 199, 209, 253, 214, 255, 249, 254},
- {250, 200, 210, 253, 215, 255, 249, 254},
- {250, 200, 210, 253, 215, 255, 249, 254},
- {250, 201, 211, 253, 215, 255, 249, 254},
- {250, 202, 211, 253, 215, 255, 249, 254},
- {250, 203, 212, 253, 216, 255, 249, 254},
- {250, 203, 212, 253, 216, 255, 249, 254},
- {251, 204, 213, 253, 217, 255, 250, 254},
- {251, 205, 213, 253, 217, 255, 250, 254},
- {251, 206, 214, 254, 218, 255, 250, 254},
- {251, 206, 215, 254, 218, 255, 250, 254},
- {252, 207, 216, 254, 219, 255, 250, 254},
- {252, 208, 216, 254, 219, 255, 250, 254},
- {252, 209, 217, 254, 220, 255, 250, 254},
- {252, 210, 217, 254, 220, 255, 250, 254},
- {252, 211, 218, 254, 221, 255, 250, 254},
- {252, 212, 218, 254, 221, 255, 250, 254},
- {253, 213, 219, 254, 222, 255, 250, 254},
- {253, 213, 220, 254, 222, 255, 250, 254},
- {253, 214, 221, 254, 223, 255, 250, 254},
- {253, 215, 221, 254, 223, 255, 250, 254},
- {253, 216, 222, 254, 224, 255, 251, 254},
- {253, 217, 223, 254, 224, 255, 251, 254},
- {253, 218, 224, 254, 225, 255, 251, 254},
- {253, 219, 224, 254, 225, 255, 251, 254},
- {254, 220, 225, 254, 225, 255, 251, 254},
- {254, 221, 226, 254, 225, 255, 251, 254},
- {254, 222, 227, 255, 226, 255, 251, 254},
- {254, 223, 227, 255, 226, 255, 251, 254},
- {254, 224, 228, 255, 227, 255, 251, 254},
- {254, 225, 229, 255, 227, 255, 251, 254},
- {254, 226, 230, 255, 228, 255, 251, 254},
- {254, 227, 230, 255, 229, 255, 251, 254},
- {255, 228, 231, 255, 230, 255, 251, 254},
- {255, 229, 232, 255, 230, 255, 251, 254},
- {255, 230, 233, 255, 231, 255, 252, 254},
- {255, 231, 234, 255, 231, 255, 252, 254},
- {255, 232, 235, 255, 232, 255, 252, 254},
- {255, 233, 236, 255, 232, 255, 252, 254},
- {255, 235, 237, 255, 233, 255, 252, 254},
- {255, 236, 238, 255, 234, 255, 252, 254},
- {255, 238, 240, 255, 235, 255, 252, 255},
- {255, 239, 241, 255, 235, 255, 252, 254},
- {255, 241, 243, 255, 236, 255, 252, 254},
- {255, 243, 245, 255, 237, 255, 252, 254},
- {255, 246, 247, 255, 239, 255, 253, 255},
-};
-
-static const vp9_coeff_probs_model default_coef_probs_4x4[PLANE_TYPES] = {
- { // Y plane
- { // Intra
- { // Band 0
- { 195, 29, 183 }, { 84, 49, 136 }, { 8, 42, 71 }
- }, { // Band 1
- { 31, 107, 169 }, { 35, 99, 159 }, { 17, 82, 140 },
- { 8, 66, 114 }, { 2, 44, 76 }, { 1, 19, 32 }
- }, { // Band 2
- { 40, 132, 201 }, { 29, 114, 187 }, { 13, 91, 157 },
- { 7, 75, 127 }, { 3, 58, 95 }, { 1, 28, 47 }
- }, { // Band 3
- { 69, 142, 221 }, { 42, 122, 201 }, { 15, 91, 159 },
- { 6, 67, 121 }, { 1, 42, 77 }, { 1, 17, 31 }
- }, { // Band 4
- { 102, 148, 228 }, { 67, 117, 204 }, { 17, 82, 154 },
- { 6, 59, 114 }, { 2, 39, 75 }, { 1, 15, 29 }
- }, { // Band 5
- { 156, 57, 233 }, { 119, 57, 212 }, { 58, 48, 163 },
- { 29, 40, 124 }, { 12, 30, 81 }, { 3, 12, 31 }
- }
- }, { // Inter
- { // Band 0
- { 191, 107, 226 }, { 124, 117, 204 }, { 25, 99, 155 }
- }, { // Band 1
- { 29, 148, 210 }, { 37, 126, 194 }, { 8, 93, 157 },
- { 2, 68, 118 }, { 1, 39, 69 }, { 1, 17, 33 }
- }, { // Band 2
- { 41, 151, 213 }, { 27, 123, 193 }, { 3, 82, 144 },
- { 1, 58, 105 }, { 1, 32, 60 }, { 1, 13, 26 }
- }, { // Band 3
- { 59, 159, 220 }, { 23, 126, 198 }, { 4, 88, 151 },
- { 1, 66, 114 }, { 1, 38, 71 }, { 1, 18, 34 }
- }, { // Band 4
- { 114, 136, 232 }, { 51, 114, 207 }, { 11, 83, 155 },
- { 3, 56, 105 }, { 1, 33, 65 }, { 1, 17, 34 }
- }, { // Band 5
- { 149, 65, 234 }, { 121, 57, 215 }, { 61, 49, 166 },
- { 28, 36, 114 }, { 12, 25, 76 }, { 3, 16, 42 }
- }
- }
- }, { // UV plane
- { // Intra
- { // Band 0
- { 214, 49, 220 }, { 132, 63, 188 }, { 42, 65, 137 }
- }, { // Band 1
- { 85, 137, 221 }, { 104, 131, 216 }, { 49, 111, 192 },
- { 21, 87, 155 }, { 2, 49, 87 }, { 1, 16, 28 }
- }, { // Band 2
- { 89, 163, 230 }, { 90, 137, 220 }, { 29, 100, 183 },
- { 10, 70, 135 }, { 2, 42, 81 }, { 1, 17, 33 }
- }, { // Band 3
- { 108, 167, 237 }, { 55, 133, 222 }, { 15, 97, 179 },
- { 4, 72, 135 }, { 1, 45, 85 }, { 1, 19, 38 }
- }, { // Band 4
- { 124, 146, 240 }, { 66, 124, 224 }, { 17, 88, 175 },
- { 4, 58, 122 }, { 1, 36, 75 }, { 1, 18, 37 }
- }, { // Band 5
- { 141, 79, 241 }, { 126, 70, 227 }, { 66, 58, 182 },
- { 30, 44, 136 }, { 12, 34, 96 }, { 2, 20, 47 }
- }
- }, { // Inter
- { // Band 0
- { 229, 99, 249 }, { 143, 111, 235 }, { 46, 109, 192 }
- }, { // Band 1
- { 82, 158, 236 }, { 94, 146, 224 }, { 25, 117, 191 },
- { 9, 87, 149 }, { 3, 56, 99 }, { 1, 33, 57 }
- }, { // Band 2
- { 83, 167, 237 }, { 68, 145, 222 }, { 10, 103, 177 },
- { 2, 72, 131 }, { 1, 41, 79 }, { 1, 20, 39 }
- }, { // Band 3
- { 99, 167, 239 }, { 47, 141, 224 }, { 10, 104, 178 },
- { 2, 73, 133 }, { 1, 44, 85 }, { 1, 22, 47 }
- }, { // Band 4
- { 127, 145, 243 }, { 71, 129, 228 }, { 17, 93, 177 },
- { 3, 61, 124 }, { 1, 41, 84 }, { 1, 21, 52 }
- }, { // Band 5
- { 157, 78, 244 }, { 140, 72, 231 }, { 69, 58, 184 },
- { 31, 44, 137 }, { 14, 38, 105 }, { 8, 23, 61 }
- }
- }
- }
-};
-
-static const vp9_coeff_probs_model default_coef_probs_8x8[PLANE_TYPES] = {
- { // Y plane
- { // Intra
- { // Band 0
- { 125, 34, 187 }, { 52, 41, 133 }, { 6, 31, 56 }
- }, { // Band 1
- { 37, 109, 153 }, { 51, 102, 147 }, { 23, 87, 128 },
- { 8, 67, 101 }, { 1, 41, 63 }, { 1, 19, 29 }
- }, { // Band 2
- { 31, 154, 185 }, { 17, 127, 175 }, { 6, 96, 145 },
- { 2, 73, 114 }, { 1, 51, 82 }, { 1, 28, 45 }
- }, { // Band 3
- { 23, 163, 200 }, { 10, 131, 185 }, { 2, 93, 148 },
- { 1, 67, 111 }, { 1, 41, 69 }, { 1, 14, 24 }
- }, { // Band 4
- { 29, 176, 217 }, { 12, 145, 201 }, { 3, 101, 156 },
- { 1, 69, 111 }, { 1, 39, 63 }, { 1, 14, 23 }
- }, { // Band 5
- { 57, 192, 233 }, { 25, 154, 215 }, { 6, 109, 167 },
- { 3, 78, 118 }, { 1, 48, 69 }, { 1, 21, 29 }
- }
- }, { // Inter
- { // Band 0
- { 202, 105, 245 }, { 108, 106, 216 }, { 18, 90, 144 }
- }, { // Band 1
- { 33, 172, 219 }, { 64, 149, 206 }, { 14, 117, 177 },
- { 5, 90, 141 }, { 2, 61, 95 }, { 1, 37, 57 }
- }, { // Band 2
- { 33, 179, 220 }, { 11, 140, 198 }, { 1, 89, 148 },
- { 1, 60, 104 }, { 1, 33, 57 }, { 1, 12, 21 }
- }, { // Band 3
- { 30, 181, 221 }, { 8, 141, 198 }, { 1, 87, 145 },
- { 1, 58, 100 }, { 1, 31, 55 }, { 1, 12, 20 }
- }, { // Band 4
- { 32, 186, 224 }, { 7, 142, 198 }, { 1, 86, 143 },
- { 1, 58, 100 }, { 1, 31, 55 }, { 1, 12, 22 }
- }, { // Band 5
- { 57, 192, 227 }, { 20, 143, 204 }, { 3, 96, 154 },
- { 1, 68, 112 }, { 1, 42, 69 }, { 1, 19, 32 }
- }
- }
- }, { // UV plane
- { // Intra
- { // Band 0
- { 212, 35, 215 }, { 113, 47, 169 }, { 29, 48, 105 }
- }, { // Band 1
- { 74, 129, 203 }, { 106, 120, 203 }, { 49, 107, 178 },
- { 19, 84, 144 }, { 4, 50, 84 }, { 1, 15, 25 }
- }, { // Band 2
- { 71, 172, 217 }, { 44, 141, 209 }, { 15, 102, 173 },
- { 6, 76, 133 }, { 2, 51, 89 }, { 1, 24, 42 }
- }, { // Band 3
- { 64, 185, 231 }, { 31, 148, 216 }, { 8, 103, 175 },
- { 3, 74, 131 }, { 1, 46, 81 }, { 1, 18, 30 }
- }, { // Band 4
- { 65, 196, 235 }, { 25, 157, 221 }, { 5, 105, 174 },
- { 1, 67, 120 }, { 1, 38, 69 }, { 1, 15, 30 }
- }, { // Band 5
- { 65, 204, 238 }, { 30, 156, 224 }, { 7, 107, 177 },
- { 2, 70, 124 }, { 1, 42, 73 }, { 1, 18, 34 }
- }
- }, { // Inter
- { // Band 0
- { 225, 86, 251 }, { 144, 104, 235 }, { 42, 99, 181 }
- }, { // Band 1
- { 85, 175, 239 }, { 112, 165, 229 }, { 29, 136, 200 },
- { 12, 103, 162 }, { 6, 77, 123 }, { 2, 53, 84 }
- }, { // Band 2
- { 75, 183, 239 }, { 30, 155, 221 }, { 3, 106, 171 },
- { 1, 74, 128 }, { 1, 44, 76 }, { 1, 17, 28 }
- }, { // Band 3
- { 73, 185, 240 }, { 27, 159, 222 }, { 2, 107, 172 },
- { 1, 75, 127 }, { 1, 42, 73 }, { 1, 17, 29 }
- }, { // Band 4
- { 62, 190, 238 }, { 21, 159, 222 }, { 2, 107, 172 },
- { 1, 72, 122 }, { 1, 40, 71 }, { 1, 18, 32 }
- }, { // Band 5
- { 61, 199, 240 }, { 27, 161, 226 }, { 4, 113, 180 },
- { 1, 76, 129 }, { 1, 46, 80 }, { 1, 23, 41 }
- }
- }
- }
-};
-
-static const vp9_coeff_probs_model default_coef_probs_16x16[PLANE_TYPES] = {
- { // Y plane
- { // Intra
- { // Band 0
- { 7, 27, 153 }, { 5, 30, 95 }, { 1, 16, 30 }
- }, { // Band 1
- { 50, 75, 127 }, { 57, 75, 124 }, { 27, 67, 108 },
- { 10, 54, 86 }, { 1, 33, 52 }, { 1, 12, 18 }
- }, { // Band 2
- { 43, 125, 151 }, { 26, 108, 148 }, { 7, 83, 122 },
- { 2, 59, 89 }, { 1, 38, 60 }, { 1, 17, 27 }
- }, { // Band 3
- { 23, 144, 163 }, { 13, 112, 154 }, { 2, 75, 117 },
- { 1, 50, 81 }, { 1, 31, 51 }, { 1, 14, 23 }
- }, { // Band 4
- { 18, 162, 185 }, { 6, 123, 171 }, { 1, 78, 125 },
- { 1, 51, 86 }, { 1, 31, 54 }, { 1, 14, 23 }
- }, { // Band 5
- { 15, 199, 227 }, { 3, 150, 204 }, { 1, 91, 146 },
- { 1, 55, 95 }, { 1, 30, 53 }, { 1, 11, 20 }
- }
- }, { // Inter
- { // Band 0
- { 19, 55, 240 }, { 19, 59, 196 }, { 3, 52, 105 }
- }, { // Band 1
- { 41, 166, 207 }, { 104, 153, 199 }, { 31, 123, 181 },
- { 14, 101, 152 }, { 5, 72, 106 }, { 1, 36, 52 }
- }, { // Band 2
- { 35, 176, 211 }, { 12, 131, 190 }, { 2, 88, 144 },
- { 1, 60, 101 }, { 1, 36, 60 }, { 1, 16, 28 }
- }, { // Band 3
- { 28, 183, 213 }, { 8, 134, 191 }, { 1, 86, 142 },
- { 1, 56, 96 }, { 1, 30, 53 }, { 1, 12, 20 }
- }, { // Band 4
- { 20, 190, 215 }, { 4, 135, 192 }, { 1, 84, 139 },
- { 1, 53, 91 }, { 1, 28, 49 }, { 1, 11, 20 }
- }, { // Band 5
- { 13, 196, 216 }, { 2, 137, 192 }, { 1, 86, 143 },
- { 1, 57, 99 }, { 1, 32, 56 }, { 1, 13, 24 }
- }
- }
- }, { // UV plane
- { // Intra
- { // Band 0
- { 211, 29, 217 }, { 96, 47, 156 }, { 22, 43, 87 }
- }, { // Band 1
- { 78, 120, 193 }, { 111, 116, 186 }, { 46, 102, 164 },
- { 15, 80, 128 }, { 2, 49, 76 }, { 1, 18, 28 }
- }, { // Band 2
- { 71, 161, 203 }, { 42, 132, 192 }, { 10, 98, 150 },
- { 3, 69, 109 }, { 1, 44, 70 }, { 1, 18, 29 }
- }, { // Band 3
- { 57, 186, 211 }, { 30, 140, 196 }, { 4, 93, 146 },
- { 1, 62, 102 }, { 1, 38, 65 }, { 1, 16, 27 }
- }, { // Band 4
- { 47, 199, 217 }, { 14, 145, 196 }, { 1, 88, 142 },
- { 1, 57, 98 }, { 1, 36, 62 }, { 1, 15, 26 }
- }, { // Band 5
- { 26, 219, 229 }, { 5, 155, 207 }, { 1, 94, 151 },
- { 1, 60, 104 }, { 1, 36, 62 }, { 1, 16, 28 }
- }
- }, { // Inter
- { // Band 0
- { 233, 29, 248 }, { 146, 47, 220 }, { 43, 52, 140 }
- }, { // Band 1
- { 100, 163, 232 }, { 179, 161, 222 }, { 63, 142, 204 },
- { 37, 113, 174 }, { 26, 89, 137 }, { 18, 68, 97 }
- }, { // Band 2
- { 85, 181, 230 }, { 32, 146, 209 }, { 7, 100, 164 },
- { 3, 71, 121 }, { 1, 45, 77 }, { 1, 18, 30 }
- }, { // Band 3
- { 65, 187, 230 }, { 20, 148, 207 }, { 2, 97, 159 },
- { 1, 68, 116 }, { 1, 40, 70 }, { 1, 14, 29 }
- }, { // Band 4
- { 40, 194, 227 }, { 8, 147, 204 }, { 1, 94, 155 },
- { 1, 65, 112 }, { 1, 39, 66 }, { 1, 14, 26 }
- }, { // Band 5
- { 16, 208, 228 }, { 3, 151, 207 }, { 1, 98, 160 },
- { 1, 67, 117 }, { 1, 41, 74 }, { 1, 17, 31 }
- }
- }
- }
-};
-
-static const vp9_coeff_probs_model default_coef_probs_32x32[PLANE_TYPES] = {
- { // Y plane
- { // Intra
- { // Band 0
- { 17, 38, 140 }, { 7, 34, 80 }, { 1, 17, 29 }
- }, { // Band 1
- { 37, 75, 128 }, { 41, 76, 128 }, { 26, 66, 116 },
- { 12, 52, 94 }, { 2, 32, 55 }, { 1, 10, 16 }
- }, { // Band 2
- { 50, 127, 154 }, { 37, 109, 152 }, { 16, 82, 121 },
- { 5, 59, 85 }, { 1, 35, 54 }, { 1, 13, 20 }
- }, { // Band 3
- { 40, 142, 167 }, { 17, 110, 157 }, { 2, 71, 112 },
- { 1, 44, 72 }, { 1, 27, 45 }, { 1, 11, 17 }
- }, { // Band 4
- { 30, 175, 188 }, { 9, 124, 169 }, { 1, 74, 116 },
- { 1, 48, 78 }, { 1, 30, 49 }, { 1, 11, 18 }
- }, { // Band 5
- { 10, 222, 223 }, { 2, 150, 194 }, { 1, 83, 128 },
- { 1, 48, 79 }, { 1, 27, 45 }, { 1, 11, 17 }
- }
- }, { // Inter
- { // Band 0
- { 36, 41, 235 }, { 29, 36, 193 }, { 10, 27, 111 }
- }, { // Band 1
- { 85, 165, 222 }, { 177, 162, 215 }, { 110, 135, 195 },
- { 57, 113, 168 }, { 23, 83, 120 }, { 10, 49, 61 }
- }, { // Band 2
- { 85, 190, 223 }, { 36, 139, 200 }, { 5, 90, 146 },
- { 1, 60, 103 }, { 1, 38, 65 }, { 1, 18, 30 }
- }, { // Band 3
- { 72, 202, 223 }, { 23, 141, 199 }, { 2, 86, 140 },
- { 1, 56, 97 }, { 1, 36, 61 }, { 1, 16, 27 }
- }, { // Band 4
- { 55, 218, 225 }, { 13, 145, 200 }, { 1, 86, 141 },
- { 1, 57, 99 }, { 1, 35, 61 }, { 1, 13, 22 }
- }, { // Band 5
- { 15, 235, 212 }, { 1, 132, 184 }, { 1, 84, 139 },
- { 1, 57, 97 }, { 1, 34, 56 }, { 1, 14, 23 }
- }
- }
- }, { // UV plane
- { // Intra
- { // Band 0
- { 181, 21, 201 }, { 61, 37, 123 }, { 10, 38, 71 }
- }, { // Band 1
- { 47, 106, 172 }, { 95, 104, 173 }, { 42, 93, 159 },
- { 18, 77, 131 }, { 4, 50, 81 }, { 1, 17, 23 }
- }, { // Band 2
- { 62, 147, 199 }, { 44, 130, 189 }, { 28, 102, 154 },
- { 18, 75, 115 }, { 2, 44, 65 }, { 1, 12, 19 }
- }, { // Band 3
- { 55, 153, 210 }, { 24, 130, 194 }, { 3, 93, 146 },
- { 1, 61, 97 }, { 1, 31, 50 }, { 1, 10, 16 }
- }, { // Band 4
- { 49, 186, 223 }, { 17, 148, 204 }, { 1, 96, 142 },
- { 1, 53, 83 }, { 1, 26, 44 }, { 1, 11, 17 }
- }, { // Band 5
- { 13, 217, 212 }, { 2, 136, 180 }, { 1, 78, 124 },
- { 1, 50, 83 }, { 1, 29, 49 }, { 1, 14, 23 }
- }
- }, { // Inter
- { // Band 0
- { 197, 13, 247 }, { 82, 17, 222 }, { 25, 17, 162 }
- }, { // Band 1
- { 126, 186, 247 }, { 234, 191, 243 }, { 176, 177, 234 },
- { 104, 158, 220 }, { 66, 128, 186 }, { 55, 90, 137 }
- }, { // Band 2
- { 111, 197, 242 }, { 46, 158, 219 }, { 9, 104, 171 },
- { 2, 65, 125 }, { 1, 44, 80 }, { 1, 17, 91 }
- }, { // Band 3
- { 104, 208, 245 }, { 39, 168, 224 }, { 3, 109, 162 },
- { 1, 79, 124 }, { 1, 50, 102 }, { 1, 43, 102 }
- }, { // Band 4
- { 84, 220, 246 }, { 31, 177, 231 }, { 2, 115, 180 },
- { 1, 79, 134 }, { 1, 55, 77 }, { 1, 60, 79 }
- }, { // Band 5
- { 43, 243, 240 }, { 8, 180, 217 }, { 1, 115, 166 },
- { 1, 84, 121 }, { 1, 51, 67 }, { 1, 16, 6 }
- }
- }
- }
-};
-
-static void extend_to_full_distribution(vpx_prob *probs, vpx_prob p) {
- assert(p != 0);
- memcpy(probs, vp9_pareto8_full[p - 1], MODEL_NODES * sizeof(vpx_prob));
-}
-
-void vp9_model_to_full_probs(const vpx_prob *model, vpx_prob *full) {
- if (full != model)
- memcpy(full, model, sizeof(vpx_prob) * UNCONSTRAINED_NODES);
- extend_to_full_distribution(&full[UNCONSTRAINED_NODES], model[PIVOT_NODE]);
-}
-
-void vp9_default_coef_probs(VP9_COMMON *cm) {
- vp9_copy(cm->fc->coef_probs[TX_4X4], default_coef_probs_4x4);
- vp9_copy(cm->fc->coef_probs[TX_8X8], default_coef_probs_8x8);
- vp9_copy(cm->fc->coef_probs[TX_16X16], default_coef_probs_16x16);
- vp9_copy(cm->fc->coef_probs[TX_32X32], default_coef_probs_32x32);
-}
-
-#define COEF_COUNT_SAT 24
-#define COEF_MAX_UPDATE_FACTOR 112
-#define COEF_COUNT_SAT_KEY 24
-#define COEF_MAX_UPDATE_FACTOR_KEY 112
-#define COEF_COUNT_SAT_AFTER_KEY 24
-#define COEF_MAX_UPDATE_FACTOR_AFTER_KEY 128
-
-static void adapt_coef_probs(VP9_COMMON *cm, TX_SIZE tx_size,
- unsigned int count_sat,
- unsigned int update_factor) {
- const FRAME_CONTEXT *pre_fc = &cm->frame_contexts[cm->frame_context_idx];
- vp9_coeff_probs_model *const probs = cm->fc->coef_probs[tx_size];
- const vp9_coeff_probs_model *const pre_probs = pre_fc->coef_probs[tx_size];
- vp9_coeff_count_model *counts = cm->counts.coef[tx_size];
- unsigned int (*eob_counts)[REF_TYPES][COEF_BANDS][COEFF_CONTEXTS] =
- cm->counts.eob_branch[tx_size];
- int i, j, k, l, m;
-
- for (i = 0; i < PLANE_TYPES; ++i)
- for (j = 0; j < REF_TYPES; ++j)
- for (k = 0; k < COEF_BANDS; ++k)
- for (l = 0; l < BAND_COEFF_CONTEXTS(k); ++l) {
- const int n0 = counts[i][j][k][l][ZERO_TOKEN];
- const int n1 = counts[i][j][k][l][ONE_TOKEN];
- const int n2 = counts[i][j][k][l][TWO_TOKEN];
- const int neob = counts[i][j][k][l][EOB_MODEL_TOKEN];
- const unsigned int branch_ct[UNCONSTRAINED_NODES][2] = {
- { neob, eob_counts[i][j][k][l] - neob },
- { n0, n1 + n2 },
- { n1, n2 }
- };
- for (m = 0; m < UNCONSTRAINED_NODES; ++m)
- probs[i][j][k][l][m] = merge_probs(pre_probs[i][j][k][l][m],
- branch_ct[m],
- count_sat, update_factor);
- }
-}
-
-void vp9_adapt_coef_probs(VP9_COMMON *cm) {
- TX_SIZE t;
- unsigned int count_sat, update_factor;
-
- if (frame_is_intra_only(cm)) {
- update_factor = COEF_MAX_UPDATE_FACTOR_KEY;
- count_sat = COEF_COUNT_SAT_KEY;
- } else if (cm->last_frame_type == KEY_FRAME) {
- update_factor = COEF_MAX_UPDATE_FACTOR_AFTER_KEY; /* adapt quickly */
- count_sat = COEF_COUNT_SAT_AFTER_KEY;
- } else {
- update_factor = COEF_MAX_UPDATE_FACTOR;
- count_sat = COEF_COUNT_SAT;
- }
- for (t = TX_4X4; t <= TX_32X32; t++)
- adapt_coef_probs(cm, t, count_sat, update_factor);
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_entropy.h b/thirdparty/libvpx/vp9/common/vp9_entropy.h
deleted file mode 100644
index 63b3bff5d9..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_entropy.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_ENTROPY_H_
-#define VP9_COMMON_VP9_ENTROPY_H_
-
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/prob.h"
-
-#include "vp9/common/vp9_common.h"
-#include "vp9/common/vp9_enums.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define DIFF_UPDATE_PROB 252
-
-// Coefficient token alphabet
-#define ZERO_TOKEN 0 // 0 Extra Bits 0+0
-#define ONE_TOKEN 1 // 1 Extra Bits 0+1
-#define TWO_TOKEN 2 // 2 Extra Bits 0+1
-#define THREE_TOKEN 3 // 3 Extra Bits 0+1
-#define FOUR_TOKEN 4 // 4 Extra Bits 0+1
-#define CATEGORY1_TOKEN 5 // 5-6 Extra Bits 1+1
-#define CATEGORY2_TOKEN 6 // 7-10 Extra Bits 2+1
-#define CATEGORY3_TOKEN 7 // 11-18 Extra Bits 3+1
-#define CATEGORY4_TOKEN 8 // 19-34 Extra Bits 4+1
-#define CATEGORY5_TOKEN 9 // 35-66 Extra Bits 5+1
-#define CATEGORY6_TOKEN 10 // 67+ Extra Bits 14+1
-#define EOB_TOKEN 11 // EOB Extra Bits 0+0
-
-#define ENTROPY_TOKENS 12
-
-#define ENTROPY_NODES 11
-
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_pt_energy_class[ENTROPY_TOKENS]);
-
-#define CAT1_MIN_VAL 5
-#define CAT2_MIN_VAL 7
-#define CAT3_MIN_VAL 11
-#define CAT4_MIN_VAL 19
-#define CAT5_MIN_VAL 35
-#define CAT6_MIN_VAL 67
-
-// Extra bit probabilities.
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat1_prob[1]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat2_prob[2]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat3_prob[3]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat4_prob[4]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat5_prob[5]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat6_prob[14]);
-
-#if CONFIG_VP9_HIGHBITDEPTH
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat1_prob_high10[1]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat2_prob_high10[2]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat3_prob_high10[3]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat4_prob_high10[4]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat5_prob_high10[5]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat6_prob_high10[16]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat1_prob_high12[1]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat2_prob_high12[2]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat3_prob_high12[3]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat4_prob_high12[4]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat5_prob_high12[5]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_cat6_prob_high12[18]);
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-#define EOB_MODEL_TOKEN 3
-
-#define DCT_MAX_VALUE 16384
-#if CONFIG_VP9_HIGHBITDEPTH
-#define DCT_MAX_VALUE_HIGH10 65536
-#define DCT_MAX_VALUE_HIGH12 262144
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-/* Coefficients are predicted via a 3-dimensional probability table. */
-
-#define REF_TYPES 2 // intra=0, inter=1
-
-/* Middle dimension reflects the coefficient position within the transform. */
-#define COEF_BANDS 6
-
-/* Inside dimension is measure of nearby complexity, that reflects the energy
- of nearby coefficients are nonzero. For the first coefficient (DC, unless
- block type is 0), we look at the (already encoded) blocks above and to the
- left of the current block. The context index is then the number (0,1,or 2)
- of these blocks having nonzero coefficients.
- After decoding a coefficient, the measure is determined by the size of the
- most recently decoded coefficient.
- Note that the intuitive meaning of this measure changes as coefficients
- are decoded, e.g., prior to the first token, a zero means that my neighbors
- are empty while, after the first token, because of the use of end-of-block,
- a zero means we just decoded a zero and hence guarantees that a non-zero
- coefficient will appear later in this block. However, this shift
- in meaning is perfectly OK because our context depends also on the
- coefficient band (and since zigzag positions 0, 1, and 2 are in
- distinct bands). */
-
-#define COEFF_CONTEXTS 6
-#define BAND_COEFF_CONTEXTS(band) ((band) == 0 ? 3 : COEFF_CONTEXTS)
-
-// #define ENTROPY_STATS
-
-typedef unsigned int vp9_coeff_count[REF_TYPES][COEF_BANDS][COEFF_CONTEXTS]
- [ENTROPY_TOKENS];
-typedef unsigned int vp9_coeff_stats[REF_TYPES][COEF_BANDS][COEFF_CONTEXTS]
- [ENTROPY_NODES][2];
-
-#define SUBEXP_PARAM 4 /* Subexponential code parameter */
-#define MODULUS_PARAM 13 /* Modulus parameter */
-
-struct VP9Common;
-void vp9_default_coef_probs(struct VP9Common *cm);
-void vp9_adapt_coef_probs(struct VP9Common *cm);
-
-// This is the index in the scan order beyond which all coefficients for
-// 8x8 transform and above are in the top band.
-// This macro is currently unused but may be used by certain implementations
-#define MAXBAND_INDEX 21
-
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_coefband_trans_8x8plus[1024]);
-DECLARE_ALIGNED(16, extern const uint8_t, vp9_coefband_trans_4x4[16]);
-
-static INLINE const uint8_t *get_band_translate(TX_SIZE tx_size) {
- return tx_size == TX_4X4 ? vp9_coefband_trans_4x4
- : vp9_coefband_trans_8x8plus;
-}
-
-// 128 lists of probabilities are stored for the following ONE node probs:
-// 1, 3, 5, 7, ..., 253, 255
-// In between probabilities are interpolated linearly
-
-#define COEFF_PROB_MODELS 255
-
-#define UNCONSTRAINED_NODES 3
-
-#define PIVOT_NODE 2 // which node is pivot
-
-#define MODEL_NODES (ENTROPY_NODES - UNCONSTRAINED_NODES)
-extern const vpx_tree_index vp9_coef_con_tree[TREE_SIZE(ENTROPY_TOKENS)];
-extern const vpx_prob vp9_pareto8_full[COEFF_PROB_MODELS][MODEL_NODES];
-
-typedef vpx_prob vp9_coeff_probs_model[REF_TYPES][COEF_BANDS]
- [COEFF_CONTEXTS][UNCONSTRAINED_NODES];
-
-typedef unsigned int vp9_coeff_count_model[REF_TYPES][COEF_BANDS]
- [COEFF_CONTEXTS]
- [UNCONSTRAINED_NODES + 1];
-
-void vp9_model_to_full_probs(const vpx_prob *model, vpx_prob *full);
-
-typedef char ENTROPY_CONTEXT;
-
-static INLINE int combine_entropy_contexts(ENTROPY_CONTEXT a,
- ENTROPY_CONTEXT b) {
- return (a != 0) + (b != 0);
-}
-
-static INLINE int get_entropy_context(TX_SIZE tx_size, const ENTROPY_CONTEXT *a,
- const ENTROPY_CONTEXT *l) {
- ENTROPY_CONTEXT above_ec = 0, left_ec = 0;
-
- switch (tx_size) {
- case TX_4X4:
- above_ec = a[0] != 0;
- left_ec = l[0] != 0;
- break;
- case TX_8X8:
- above_ec = !!*(const uint16_t *)a;
- left_ec = !!*(const uint16_t *)l;
- break;
- case TX_16X16:
- above_ec = !!*(const uint32_t *)a;
- left_ec = !!*(const uint32_t *)l;
- break;
- case TX_32X32:
- above_ec = !!*(const uint64_t *)a;
- left_ec = !!*(const uint64_t *)l;
- break;
- default:
- assert(0 && "Invalid transform size.");
- break;
- }
-
- return combine_entropy_contexts(above_ec, left_ec);
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_ENTROPY_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_entropymode.c b/thirdparty/libvpx/vp9/common/vp9_entropymode.c
deleted file mode 100644
index 670348bafd..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_entropymode.c
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vpx_mem/vpx_mem.h"
-
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vp9/common/vp9_seg_common.h"
-
-const vpx_prob vp9_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = {
- { // above = dc
- { 137, 30, 42, 148, 151, 207, 70, 52, 91 }, // left = dc
- { 92, 45, 102, 136, 116, 180, 74, 90, 100 }, // left = v
- { 73, 32, 19, 187, 222, 215, 46, 34, 100 }, // left = h
- { 91, 30, 32, 116, 121, 186, 93, 86, 94 }, // left = d45
- { 72, 35, 36, 149, 68, 206, 68, 63, 105 }, // left = d135
- { 73, 31, 28, 138, 57, 124, 55, 122, 151 }, // left = d117
- { 67, 23, 21, 140, 126, 197, 40, 37, 171 }, // left = d153
- { 86, 27, 28, 128, 154, 212, 45, 43, 53 }, // left = d207
- { 74, 32, 27, 107, 86, 160, 63, 134, 102 }, // left = d63
- { 59, 67, 44, 140, 161, 202, 78, 67, 119 } // left = tm
- }, { // above = v
- { 63, 36, 126, 146, 123, 158, 60, 90, 96 }, // left = dc
- { 43, 46, 168, 134, 107, 128, 69, 142, 92 }, // left = v
- { 44, 29, 68, 159, 201, 177, 50, 57, 77 }, // left = h
- { 58, 38, 76, 114, 97, 172, 78, 133, 92 }, // left = d45
- { 46, 41, 76, 140, 63, 184, 69, 112, 57 }, // left = d135
- { 38, 32, 85, 140, 46, 112, 54, 151, 133 }, // left = d117
- { 39, 27, 61, 131, 110, 175, 44, 75, 136 }, // left = d153
- { 52, 30, 74, 113, 130, 175, 51, 64, 58 }, // left = d207
- { 47, 35, 80, 100, 74, 143, 64, 163, 74 }, // left = d63
- { 36, 61, 116, 114, 128, 162, 80, 125, 82 } // left = tm
- }, { // above = h
- { 82, 26, 26, 171, 208, 204, 44, 32, 105 }, // left = dc
- { 55, 44, 68, 166, 179, 192, 57, 57, 108 }, // left = v
- { 42, 26, 11, 199, 241, 228, 23, 15, 85 }, // left = h
- { 68, 42, 19, 131, 160, 199, 55, 52, 83 }, // left = d45
- { 58, 50, 25, 139, 115, 232, 39, 52, 118 }, // left = d135
- { 50, 35, 33, 153, 104, 162, 64, 59, 131 }, // left = d117
- { 44, 24, 16, 150, 177, 202, 33, 19, 156 }, // left = d153
- { 55, 27, 12, 153, 203, 218, 26, 27, 49 }, // left = d207
- { 53, 49, 21, 110, 116, 168, 59, 80, 76 }, // left = d63
- { 38, 72, 19, 168, 203, 212, 50, 50, 107 } // left = tm
- }, { // above = d45
- { 103, 26, 36, 129, 132, 201, 83, 80, 93 }, // left = dc
- { 59, 38, 83, 112, 103, 162, 98, 136, 90 }, // left = v
- { 62, 30, 23, 158, 200, 207, 59, 57, 50 }, // left = h
- { 67, 30, 29, 84, 86, 191, 102, 91, 59 }, // left = d45
- { 60, 32, 33, 112, 71, 220, 64, 89, 104 }, // left = d135
- { 53, 26, 34, 130, 56, 149, 84, 120, 103 }, // left = d117
- { 53, 21, 23, 133, 109, 210, 56, 77, 172 }, // left = d153
- { 77, 19, 29, 112, 142, 228, 55, 66, 36 }, // left = d207
- { 61, 29, 29, 93, 97, 165, 83, 175, 162 }, // left = d63
- { 47, 47, 43, 114, 137, 181, 100, 99, 95 } // left = tm
- }, { // above = d135
- { 69, 23, 29, 128, 83, 199, 46, 44, 101 }, // left = dc
- { 53, 40, 55, 139, 69, 183, 61, 80, 110 }, // left = v
- { 40, 29, 19, 161, 180, 207, 43, 24, 91 }, // left = h
- { 60, 34, 19, 105, 61, 198, 53, 64, 89 }, // left = d45
- { 52, 31, 22, 158, 40, 209, 58, 62, 89 }, // left = d135
- { 44, 31, 29, 147, 46, 158, 56, 102, 198 }, // left = d117
- { 35, 19, 12, 135, 87, 209, 41, 45, 167 }, // left = d153
- { 55, 25, 21, 118, 95, 215, 38, 39, 66 }, // left = d207
- { 51, 38, 25, 113, 58, 164, 70, 93, 97 }, // left = d63
- { 47, 54, 34, 146, 108, 203, 72, 103, 151 } // left = tm
- }, { // above = d117
- { 64, 19, 37, 156, 66, 138, 49, 95, 133 }, // left = dc
- { 46, 27, 80, 150, 55, 124, 55, 121, 135 }, // left = v
- { 36, 23, 27, 165, 149, 166, 54, 64, 118 }, // left = h
- { 53, 21, 36, 131, 63, 163, 60, 109, 81 }, // left = d45
- { 40, 26, 35, 154, 40, 185, 51, 97, 123 }, // left = d135
- { 35, 19, 34, 179, 19, 97, 48, 129, 124 }, // left = d117
- { 36, 20, 26, 136, 62, 164, 33, 77, 154 }, // left = d153
- { 45, 18, 32, 130, 90, 157, 40, 79, 91 }, // left = d207
- { 45, 26, 28, 129, 45, 129, 49, 147, 123 }, // left = d63
- { 38, 44, 51, 136, 74, 162, 57, 97, 121 } // left = tm
- }, { // above = d153
- { 75, 17, 22, 136, 138, 185, 32, 34, 166 }, // left = dc
- { 56, 39, 58, 133, 117, 173, 48, 53, 187 }, // left = v
- { 35, 21, 12, 161, 212, 207, 20, 23, 145 }, // left = h
- { 56, 29, 19, 117, 109, 181, 55, 68, 112 }, // left = d45
- { 47, 29, 17, 153, 64, 220, 59, 51, 114 }, // left = d135
- { 46, 16, 24, 136, 76, 147, 41, 64, 172 }, // left = d117
- { 34, 17, 11, 108, 152, 187, 13, 15, 209 }, // left = d153
- { 51, 24, 14, 115, 133, 209, 32, 26, 104 }, // left = d207
- { 55, 30, 18, 122, 79, 179, 44, 88, 116 }, // left = d63
- { 37, 49, 25, 129, 168, 164, 41, 54, 148 } // left = tm
- }, { // above = d207
- { 82, 22, 32, 127, 143, 213, 39, 41, 70 }, // left = dc
- { 62, 44, 61, 123, 105, 189, 48, 57, 64 }, // left = v
- { 47, 25, 17, 175, 222, 220, 24, 30, 86 }, // left = h
- { 68, 36, 17, 106, 102, 206, 59, 74, 74 }, // left = d45
- { 57, 39, 23, 151, 68, 216, 55, 63, 58 }, // left = d135
- { 49, 30, 35, 141, 70, 168, 82, 40, 115 }, // left = d117
- { 51, 25, 15, 136, 129, 202, 38, 35, 139 }, // left = d153
- { 68, 26, 16, 111, 141, 215, 29, 28, 28 }, // left = d207
- { 59, 39, 19, 114, 75, 180, 77, 104, 42 }, // left = d63
- { 40, 61, 26, 126, 152, 206, 61, 59, 93 } // left = tm
- }, { // above = d63
- { 78, 23, 39, 111, 117, 170, 74, 124, 94 }, // left = dc
- { 48, 34, 86, 101, 92, 146, 78, 179, 134 }, // left = v
- { 47, 22, 24, 138, 187, 178, 68, 69, 59 }, // left = h
- { 56, 25, 33, 105, 112, 187, 95, 177, 129 }, // left = d45
- { 48, 31, 27, 114, 63, 183, 82, 116, 56 }, // left = d135
- { 43, 28, 37, 121, 63, 123, 61, 192, 169 }, // left = d117
- { 42, 17, 24, 109, 97, 177, 56, 76, 122 }, // left = d153
- { 58, 18, 28, 105, 139, 182, 70, 92, 63 }, // left = d207
- { 46, 23, 32, 74, 86, 150, 67, 183, 88 }, // left = d63
- { 36, 38, 48, 92, 122, 165, 88, 137, 91 } // left = tm
- }, { // above = tm
- { 65, 70, 60, 155, 159, 199, 61, 60, 81 }, // left = dc
- { 44, 78, 115, 132, 119, 173, 71, 112, 93 }, // left = v
- { 39, 38, 21, 184, 227, 206, 42, 32, 64 }, // left = h
- { 58, 47, 36, 124, 137, 193, 80, 82, 78 }, // left = d45
- { 49, 50, 35, 144, 95, 205, 63, 78, 59 }, // left = d135
- { 41, 53, 52, 148, 71, 142, 65, 128, 51 }, // left = d117
- { 40, 36, 28, 143, 143, 202, 40, 55, 137 }, // left = d153
- { 52, 34, 29, 129, 183, 227, 42, 35, 43 }, // left = d207
- { 42, 44, 44, 104, 105, 164, 64, 130, 80 }, // left = d63
- { 43, 81, 53, 140, 169, 204, 68, 84, 72 } // left = tm
- }
-};
-
-const vpx_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1] = {
- { 144, 11, 54, 157, 195, 130, 46, 58, 108 }, // y = dc
- { 118, 15, 123, 148, 131, 101, 44, 93, 131 }, // y = v
- { 113, 12, 23, 188, 226, 142, 26, 32, 125 }, // y = h
- { 120, 11, 50, 123, 163, 135, 64, 77, 103 }, // y = d45
- { 113, 9, 36, 155, 111, 157, 32, 44, 161 }, // y = d135
- { 116, 9, 55, 176, 76, 96, 37, 61, 149 }, // y = d117
- { 115, 9, 28, 141, 161, 167, 21, 25, 193 }, // y = d153
- { 120, 12, 32, 145, 195, 142, 32, 38, 86 }, // y = d207
- { 116, 12, 64, 120, 140, 125, 49, 115, 121 }, // y = d63
- { 102, 19, 66, 162, 182, 122, 35, 59, 128 } // y = tm
-};
-
-static const vpx_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1] = {
- { 65, 32, 18, 144, 162, 194, 41, 51, 98 }, // block_size < 8x8
- { 132, 68, 18, 165, 217, 196, 45, 40, 78 }, // block_size < 16x16
- { 173, 80, 19, 176, 240, 193, 64, 35, 46 }, // block_size < 32x32
- { 221, 135, 38, 194, 248, 121, 96, 85, 29 } // block_size >= 32x32
-};
-
-static const vpx_prob default_if_uv_probs[INTRA_MODES][INTRA_MODES - 1] = {
- { 120, 7, 76, 176, 208, 126, 28, 54, 103 }, // y = dc
- { 48, 12, 154, 155, 139, 90, 34, 117, 119 }, // y = v
- { 67, 6, 25, 204, 243, 158, 13, 21, 96 }, // y = h
- { 97, 5, 44, 131, 176, 139, 48, 68, 97 }, // y = d45
- { 83, 5, 42, 156, 111, 152, 26, 49, 152 }, // y = d135
- { 80, 5, 58, 178, 74, 83, 33, 62, 145 }, // y = d117
- { 86, 5, 32, 154, 192, 168, 14, 22, 163 }, // y = d153
- { 85, 5, 32, 156, 216, 148, 19, 29, 73 }, // y = d207
- { 77, 7, 64, 116, 132, 122, 37, 126, 120 }, // y = d63
- { 101, 21, 107, 181, 192, 103, 19, 67, 125 } // y = tm
-};
-
-const vpx_prob vp9_kf_partition_probs[PARTITION_CONTEXTS]
- [PARTITION_TYPES - 1] = {
- // 8x8 -> 4x4
- { 158, 97, 94 }, // a/l both not split
- { 93, 24, 99 }, // a split, l not split
- { 85, 119, 44 }, // l split, a not split
- { 62, 59, 67 }, // a/l both split
- // 16x16 -> 8x8
- { 149, 53, 53 }, // a/l both not split
- { 94, 20, 48 }, // a split, l not split
- { 83, 53, 24 }, // l split, a not split
- { 52, 18, 18 }, // a/l both split
- // 32x32 -> 16x16
- { 150, 40, 39 }, // a/l both not split
- { 78, 12, 26 }, // a split, l not split
- { 67, 33, 11 }, // l split, a not split
- { 24, 7, 5 }, // a/l both split
- // 64x64 -> 32x32
- { 174, 35, 49 }, // a/l both not split
- { 68, 11, 27 }, // a split, l not split
- { 57, 15, 9 }, // l split, a not split
- { 12, 3, 3 }, // a/l both split
-};
-
-static const vpx_prob default_partition_probs[PARTITION_CONTEXTS]
- [PARTITION_TYPES - 1] = {
- // 8x8 -> 4x4
- { 199, 122, 141 }, // a/l both not split
- { 147, 63, 159 }, // a split, l not split
- { 148, 133, 118 }, // l split, a not split
- { 121, 104, 114 }, // a/l both split
- // 16x16 -> 8x8
- { 174, 73, 87 }, // a/l both not split
- { 92, 41, 83 }, // a split, l not split
- { 82, 99, 50 }, // l split, a not split
- { 53, 39, 39 }, // a/l both split
- // 32x32 -> 16x16
- { 177, 58, 59 }, // a/l both not split
- { 68, 26, 63 }, // a split, l not split
- { 52, 79, 25 }, // l split, a not split
- { 17, 14, 12 }, // a/l both split
- // 64x64 -> 32x32
- { 222, 34, 30 }, // a/l both not split
- { 72, 16, 44 }, // a split, l not split
- { 58, 32, 12 }, // l split, a not split
- { 10, 7, 6 }, // a/l both split
-};
-
-static const vpx_prob default_inter_mode_probs[INTER_MODE_CONTEXTS]
- [INTER_MODES - 1] = {
- {2, 173, 34}, // 0 = both zero mv
- {7, 145, 85}, // 1 = one zero mv + one a predicted mv
- {7, 166, 63}, // 2 = two predicted mvs
- {7, 94, 66}, // 3 = one predicted/zero and one new mv
- {8, 64, 46}, // 4 = two new mvs
- {17, 81, 31}, // 5 = one intra neighbour + x
- {25, 29, 30}, // 6 = two intra neighbours
-};
-
-/* Array indices are identical to previously-existing INTRAMODECONTEXTNODES. */
-const vpx_tree_index vp9_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = {
- -DC_PRED, 2, /* 0 = DC_NODE */
- -TM_PRED, 4, /* 1 = TM_NODE */
- -V_PRED, 6, /* 2 = V_NODE */
- 8, 12, /* 3 = COM_NODE */
- -H_PRED, 10, /* 4 = H_NODE */
- -D135_PRED, -D117_PRED, /* 5 = D135_NODE */
- -D45_PRED, 14, /* 6 = D45_NODE */
- -D63_PRED, 16, /* 7 = D63_NODE */
- -D153_PRED, -D207_PRED /* 8 = D153_NODE */
-};
-
-const vpx_tree_index vp9_inter_mode_tree[TREE_SIZE(INTER_MODES)] = {
- -INTER_OFFSET(ZEROMV), 2,
- -INTER_OFFSET(NEARESTMV), 4,
- -INTER_OFFSET(NEARMV), -INTER_OFFSET(NEWMV)
-};
-
-const vpx_tree_index vp9_partition_tree[TREE_SIZE(PARTITION_TYPES)] = {
- -PARTITION_NONE, 2,
- -PARTITION_HORZ, 4,
- -PARTITION_VERT, -PARTITION_SPLIT
-};
-
-static const vpx_prob default_intra_inter_p[INTRA_INTER_CONTEXTS] = {
- 9, 102, 187, 225
-};
-
-static const vpx_prob default_comp_inter_p[COMP_INTER_CONTEXTS] = {
- 239, 183, 119, 96, 41
-};
-
-static const vpx_prob default_comp_ref_p[REF_CONTEXTS] = {
- 50, 126, 123, 221, 226
-};
-
-static const vpx_prob default_single_ref_p[REF_CONTEXTS][2] = {
- { 33, 16 },
- { 77, 74 },
- { 142, 142 },
- { 172, 170 },
- { 238, 247 }
-};
-
-static const struct tx_probs default_tx_probs = {
- { { 3, 136, 37 },
- { 5, 52, 13 } },
-
- { { 20, 152 },
- { 15, 101 } },
-
- { { 100 },
- { 66 } }
-};
-
-void tx_counts_to_branch_counts_32x32(const unsigned int *tx_count_32x32p,
- unsigned int (*ct_32x32p)[2]) {
- ct_32x32p[0][0] = tx_count_32x32p[TX_4X4];
- ct_32x32p[0][1] = tx_count_32x32p[TX_8X8] +
- tx_count_32x32p[TX_16X16] +
- tx_count_32x32p[TX_32X32];
- ct_32x32p[1][0] = tx_count_32x32p[TX_8X8];
- ct_32x32p[1][1] = tx_count_32x32p[TX_16X16] +
- tx_count_32x32p[TX_32X32];
- ct_32x32p[2][0] = tx_count_32x32p[TX_16X16];
- ct_32x32p[2][1] = tx_count_32x32p[TX_32X32];
-}
-
-void tx_counts_to_branch_counts_16x16(const unsigned int *tx_count_16x16p,
- unsigned int (*ct_16x16p)[2]) {
- ct_16x16p[0][0] = tx_count_16x16p[TX_4X4];
- ct_16x16p[0][1] = tx_count_16x16p[TX_8X8] + tx_count_16x16p[TX_16X16];
- ct_16x16p[1][0] = tx_count_16x16p[TX_8X8];
- ct_16x16p[1][1] = tx_count_16x16p[TX_16X16];
-}
-
-void tx_counts_to_branch_counts_8x8(const unsigned int *tx_count_8x8p,
- unsigned int (*ct_8x8p)[2]) {
- ct_8x8p[0][0] = tx_count_8x8p[TX_4X4];
- ct_8x8p[0][1] = tx_count_8x8p[TX_8X8];
-}
-
-static const vpx_prob default_skip_probs[SKIP_CONTEXTS] = {
- 192, 128, 64
-};
-
-static const vpx_prob default_switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS]
- [SWITCHABLE_FILTERS - 1] = {
- { 235, 162, },
- { 36, 255, },
- { 34, 3, },
- { 149, 144, },
-};
-
-static void init_mode_probs(FRAME_CONTEXT *fc) {
- vp9_copy(fc->uv_mode_prob, default_if_uv_probs);
- vp9_copy(fc->y_mode_prob, default_if_y_probs);
- vp9_copy(fc->switchable_interp_prob, default_switchable_interp_prob);
- vp9_copy(fc->partition_prob, default_partition_probs);
- vp9_copy(fc->intra_inter_prob, default_intra_inter_p);
- vp9_copy(fc->comp_inter_prob, default_comp_inter_p);
- vp9_copy(fc->comp_ref_prob, default_comp_ref_p);
- vp9_copy(fc->single_ref_prob, default_single_ref_p);
- fc->tx_probs = default_tx_probs;
- vp9_copy(fc->skip_probs, default_skip_probs);
- vp9_copy(fc->inter_mode_probs, default_inter_mode_probs);
-}
-
-const vpx_tree_index vp9_switchable_interp_tree
- [TREE_SIZE(SWITCHABLE_FILTERS)] = {
- -EIGHTTAP, 2,
- -EIGHTTAP_SMOOTH, -EIGHTTAP_SHARP
-};
-
-void vp9_adapt_mode_probs(VP9_COMMON *cm) {
- int i, j;
- FRAME_CONTEXT *fc = cm->fc;
- const FRAME_CONTEXT *pre_fc = &cm->frame_contexts[cm->frame_context_idx];
- const FRAME_COUNTS *counts = &cm->counts;
-
- for (i = 0; i < INTRA_INTER_CONTEXTS; i++)
- fc->intra_inter_prob[i] = mode_mv_merge_probs(pre_fc->intra_inter_prob[i],
- counts->intra_inter[i]);
- for (i = 0; i < COMP_INTER_CONTEXTS; i++)
- fc->comp_inter_prob[i] = mode_mv_merge_probs(pre_fc->comp_inter_prob[i],
- counts->comp_inter[i]);
- for (i = 0; i < REF_CONTEXTS; i++)
- fc->comp_ref_prob[i] = mode_mv_merge_probs(pre_fc->comp_ref_prob[i],
- counts->comp_ref[i]);
- for (i = 0; i < REF_CONTEXTS; i++)
- for (j = 0; j < 2; j++)
- fc->single_ref_prob[i][j] = mode_mv_merge_probs(
- pre_fc->single_ref_prob[i][j], counts->single_ref[i][j]);
-
- for (i = 0; i < INTER_MODE_CONTEXTS; i++)
- vpx_tree_merge_probs(vp9_inter_mode_tree, pre_fc->inter_mode_probs[i],
- counts->inter_mode[i], fc->inter_mode_probs[i]);
-
- for (i = 0; i < BLOCK_SIZE_GROUPS; i++)
- vpx_tree_merge_probs(vp9_intra_mode_tree, pre_fc->y_mode_prob[i],
- counts->y_mode[i], fc->y_mode_prob[i]);
-
- for (i = 0; i < INTRA_MODES; ++i)
- vpx_tree_merge_probs(vp9_intra_mode_tree, pre_fc->uv_mode_prob[i],
- counts->uv_mode[i], fc->uv_mode_prob[i]);
-
- for (i = 0; i < PARTITION_CONTEXTS; i++)
- vpx_tree_merge_probs(vp9_partition_tree, pre_fc->partition_prob[i],
- counts->partition[i], fc->partition_prob[i]);
-
- if (cm->interp_filter == SWITCHABLE) {
- for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; i++)
- vpx_tree_merge_probs(vp9_switchable_interp_tree,
- pre_fc->switchable_interp_prob[i],
- counts->switchable_interp[i],
- fc->switchable_interp_prob[i]);
- }
-
- if (cm->tx_mode == TX_MODE_SELECT) {
- int j;
- unsigned int branch_ct_8x8p[TX_SIZES - 3][2];
- unsigned int branch_ct_16x16p[TX_SIZES - 2][2];
- unsigned int branch_ct_32x32p[TX_SIZES - 1][2];
-
- for (i = 0; i < TX_SIZE_CONTEXTS; ++i) {
- tx_counts_to_branch_counts_8x8(counts->tx.p8x8[i], branch_ct_8x8p);
- for (j = 0; j < TX_SIZES - 3; ++j)
- fc->tx_probs.p8x8[i][j] = mode_mv_merge_probs(
- pre_fc->tx_probs.p8x8[i][j], branch_ct_8x8p[j]);
-
- tx_counts_to_branch_counts_16x16(counts->tx.p16x16[i], branch_ct_16x16p);
- for (j = 0; j < TX_SIZES - 2; ++j)
- fc->tx_probs.p16x16[i][j] = mode_mv_merge_probs(
- pre_fc->tx_probs.p16x16[i][j], branch_ct_16x16p[j]);
-
- tx_counts_to_branch_counts_32x32(counts->tx.p32x32[i], branch_ct_32x32p);
- for (j = 0; j < TX_SIZES - 1; ++j)
- fc->tx_probs.p32x32[i][j] = mode_mv_merge_probs(
- pre_fc->tx_probs.p32x32[i][j], branch_ct_32x32p[j]);
- }
- }
-
- for (i = 0; i < SKIP_CONTEXTS; ++i)
- fc->skip_probs[i] = mode_mv_merge_probs(
- pre_fc->skip_probs[i], counts->skip[i]);
-}
-
-static void set_default_lf_deltas(struct loopfilter *lf) {
- lf->mode_ref_delta_enabled = 1;
- lf->mode_ref_delta_update = 1;
-
- lf->ref_deltas[INTRA_FRAME] = 1;
- lf->ref_deltas[LAST_FRAME] = 0;
- lf->ref_deltas[GOLDEN_FRAME] = -1;
- lf->ref_deltas[ALTREF_FRAME] = -1;
-
- lf->mode_deltas[0] = 0;
- lf->mode_deltas[1] = 0;
-}
-
-void vp9_setup_past_independence(VP9_COMMON *cm) {
- // Reset the segment feature data to the default stats:
- // Features disabled, 0, with delta coding (Default state).
- struct loopfilter *const lf = &cm->lf;
-
- int i;
- vp9_clearall_segfeatures(&cm->seg);
- cm->seg.abs_delta = SEGMENT_DELTADATA;
-
- if (cm->last_frame_seg_map && !cm->frame_parallel_decode)
- memset(cm->last_frame_seg_map, 0, (cm->mi_rows * cm->mi_cols));
-
- if (cm->current_frame_seg_map)
- memset(cm->current_frame_seg_map, 0, (cm->mi_rows * cm->mi_cols));
-
- // Reset the mode ref deltas for loop filter
- vp9_zero(lf->last_ref_deltas);
- vp9_zero(lf->last_mode_deltas);
- set_default_lf_deltas(lf);
-
- // To force update of the sharpness
- lf->last_sharpness_level = -1;
-
- vp9_default_coef_probs(cm);
- init_mode_probs(cm->fc);
- vp9_init_mv_probs(cm);
- cm->fc->initialized = 1;
-
- if (cm->frame_type == KEY_FRAME ||
- cm->error_resilient_mode || cm->reset_frame_context == 3) {
- // Reset all frame contexts.
- for (i = 0; i < FRAME_CONTEXTS; ++i)
- cm->frame_contexts[i] = *cm->fc;
- } else if (cm->reset_frame_context == 2) {
- // Reset only the frame context specified in the frame header.
- cm->frame_contexts[cm->frame_context_idx] = *cm->fc;
- }
-
- // prev_mip will only be allocated in encoder.
- if (frame_is_intra_only(cm) && cm->prev_mip && !cm->frame_parallel_decode)
- memset(cm->prev_mip, 0,
- cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->prev_mip));
-
- vp9_zero(cm->ref_frame_sign_bias);
-
- cm->frame_context_idx = 0;
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_entropymode.h b/thirdparty/libvpx/vp9/common/vp9_entropymode.h
deleted file mode 100644
index 0285be1557..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_entropymode.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_ENTROPYMODE_H_
-#define VP9_COMMON_VP9_ENTROPYMODE_H_
-
-#include "vp9/common/vp9_entropy.h"
-#include "vp9/common/vp9_entropymv.h"
-#include "vp9/common/vp9_filter.h"
-#include "vpx_dsp/vpx_filter.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define BLOCK_SIZE_GROUPS 4
-
-#define TX_SIZE_CONTEXTS 2
-
-#define INTER_OFFSET(mode) ((mode) - NEARESTMV)
-
-struct VP9Common;
-
-struct tx_probs {
- vpx_prob p32x32[TX_SIZE_CONTEXTS][TX_SIZES - 1];
- vpx_prob p16x16[TX_SIZE_CONTEXTS][TX_SIZES - 2];
- vpx_prob p8x8[TX_SIZE_CONTEXTS][TX_SIZES - 3];
-};
-
-struct tx_counts {
- unsigned int p32x32[TX_SIZE_CONTEXTS][TX_SIZES];
- unsigned int p16x16[TX_SIZE_CONTEXTS][TX_SIZES - 1];
- unsigned int p8x8[TX_SIZE_CONTEXTS][TX_SIZES - 2];
- unsigned int tx_totals[TX_SIZES];
-};
-
-typedef struct frame_contexts {
- vpx_prob y_mode_prob[BLOCK_SIZE_GROUPS][INTRA_MODES - 1];
- vpx_prob uv_mode_prob[INTRA_MODES][INTRA_MODES - 1];
- vpx_prob partition_prob[PARTITION_CONTEXTS][PARTITION_TYPES - 1];
- vp9_coeff_probs_model coef_probs[TX_SIZES][PLANE_TYPES];
- vpx_prob switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS]
- [SWITCHABLE_FILTERS - 1];
- vpx_prob inter_mode_probs[INTER_MODE_CONTEXTS][INTER_MODES - 1];
- vpx_prob intra_inter_prob[INTRA_INTER_CONTEXTS];
- vpx_prob comp_inter_prob[COMP_INTER_CONTEXTS];
- vpx_prob single_ref_prob[REF_CONTEXTS][2];
- vpx_prob comp_ref_prob[REF_CONTEXTS];
- struct tx_probs tx_probs;
- vpx_prob skip_probs[SKIP_CONTEXTS];
- nmv_context nmvc;
- int initialized;
-} FRAME_CONTEXT;
-
-typedef struct FRAME_COUNTS {
- unsigned int y_mode[BLOCK_SIZE_GROUPS][INTRA_MODES];
- unsigned int uv_mode[INTRA_MODES][INTRA_MODES];
- unsigned int partition[PARTITION_CONTEXTS][PARTITION_TYPES];
- vp9_coeff_count_model coef[TX_SIZES][PLANE_TYPES];
- unsigned int eob_branch[TX_SIZES][PLANE_TYPES][REF_TYPES]
- [COEF_BANDS][COEFF_CONTEXTS];
- unsigned int switchable_interp[SWITCHABLE_FILTER_CONTEXTS]
- [SWITCHABLE_FILTERS];
- unsigned int inter_mode[INTER_MODE_CONTEXTS][INTER_MODES];
- unsigned int intra_inter[INTRA_INTER_CONTEXTS][2];
- unsigned int comp_inter[COMP_INTER_CONTEXTS][2];
- unsigned int single_ref[REF_CONTEXTS][2][2];
- unsigned int comp_ref[REF_CONTEXTS][2];
- struct tx_counts tx;
- unsigned int skip[SKIP_CONTEXTS][2];
- nmv_context_counts mv;
-} FRAME_COUNTS;
-
-extern const vpx_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1];
-extern const vpx_prob vp9_kf_y_mode_prob[INTRA_MODES][INTRA_MODES]
- [INTRA_MODES - 1];
-extern const vpx_prob vp9_kf_partition_probs[PARTITION_CONTEXTS]
- [PARTITION_TYPES - 1];
-extern const vpx_tree_index vp9_intra_mode_tree[TREE_SIZE(INTRA_MODES)];
-extern const vpx_tree_index vp9_inter_mode_tree[TREE_SIZE(INTER_MODES)];
-extern const vpx_tree_index vp9_partition_tree[TREE_SIZE(PARTITION_TYPES)];
-extern const vpx_tree_index vp9_switchable_interp_tree
- [TREE_SIZE(SWITCHABLE_FILTERS)];
-
-void vp9_setup_past_independence(struct VP9Common *cm);
-
-void vp9_adapt_mode_probs(struct VP9Common *cm);
-
-void tx_counts_to_branch_counts_32x32(const unsigned int *tx_count_32x32p,
- unsigned int (*ct_32x32p)[2]);
-void tx_counts_to_branch_counts_16x16(const unsigned int *tx_count_16x16p,
- unsigned int (*ct_16x16p)[2]);
-void tx_counts_to_branch_counts_8x8(const unsigned int *tx_count_8x8p,
- unsigned int (*ct_8x8p)[2]);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_ENTROPYMODE_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_entropymv.c b/thirdparty/libvpx/vp9/common/vp9_entropymv.c
deleted file mode 100644
index 566ae91cf7..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_entropymv.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vp9/common/vp9_entropymv.h"
-
-const vpx_tree_index vp9_mv_joint_tree[TREE_SIZE(MV_JOINTS)] = {
- -MV_JOINT_ZERO, 2,
- -MV_JOINT_HNZVZ, 4,
- -MV_JOINT_HZVNZ, -MV_JOINT_HNZVNZ
-};
-
-const vpx_tree_index vp9_mv_class_tree[TREE_SIZE(MV_CLASSES)] = {
- -MV_CLASS_0, 2,
- -MV_CLASS_1, 4,
- 6, 8,
- -MV_CLASS_2, -MV_CLASS_3,
- 10, 12,
- -MV_CLASS_4, -MV_CLASS_5,
- -MV_CLASS_6, 14,
- 16, 18,
- -MV_CLASS_7, -MV_CLASS_8,
- -MV_CLASS_9, -MV_CLASS_10,
-};
-
-const vpx_tree_index vp9_mv_class0_tree[TREE_SIZE(CLASS0_SIZE)] = {
- -0, -1,
-};
-
-const vpx_tree_index vp9_mv_fp_tree[TREE_SIZE(MV_FP_SIZE)] = {
- -0, 2,
- -1, 4,
- -2, -3
-};
-
-static const nmv_context default_nmv_context = {
- {32, 64, 96},
- {
- { // Vertical component
- 128, // sign
- {224, 144, 192, 168, 192, 176, 192, 198, 198, 245}, // class
- {216}, // class0
- {136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, // bits
- {{128, 128, 64}, {96, 112, 64}}, // class0_fp
- {64, 96, 64}, // fp
- 160, // class0_hp bit
- 128, // hp
- },
- { // Horizontal component
- 128, // sign
- {216, 128, 176, 160, 176, 176, 192, 198, 198, 208}, // class
- {208}, // class0
- {136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, // bits
- {{128, 128, 64}, {96, 112, 64}}, // class0_fp
- {64, 96, 64}, // fp
- 160, // class0_hp bit
- 128, // hp
- }
- },
-};
-
-static const uint8_t log_in_base_2[] = {
- 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10
-};
-
-static INLINE int mv_class_base(MV_CLASS_TYPE c) {
- return c ? CLASS0_SIZE << (c + 2) : 0;
-}
-
-MV_CLASS_TYPE vp9_get_mv_class(int z, int *offset) {
- const MV_CLASS_TYPE c = (z >= CLASS0_SIZE * 4096) ?
- MV_CLASS_10 : (MV_CLASS_TYPE)log_in_base_2[z >> 3];
- if (offset)
- *offset = z - mv_class_base(c);
- return c;
-}
-
-static void inc_mv_component(int v, nmv_component_counts *comp_counts,
- int incr, int usehp) {
- int s, z, c, o, d, e, f;
- assert(v != 0); /* should not be zero */
- s = v < 0;
- comp_counts->sign[s] += incr;
- z = (s ? -v : v) - 1; /* magnitude - 1 */
-
- c = vp9_get_mv_class(z, &o);
- comp_counts->classes[c] += incr;
-
- d = (o >> 3); /* int mv data */
- f = (o >> 1) & 3; /* fractional pel mv data */
- e = (o & 1); /* high precision mv data */
-
- if (c == MV_CLASS_0) {
- comp_counts->class0[d] += incr;
- comp_counts->class0_fp[d][f] += incr;
- comp_counts->class0_hp[e] += usehp * incr;
- } else {
- int i;
- int b = c + CLASS0_BITS - 1; // number of bits
- for (i = 0; i < b; ++i)
- comp_counts->bits[i][((d >> i) & 1)] += incr;
- comp_counts->fp[f] += incr;
- comp_counts->hp[e] += usehp * incr;
- }
-}
-
-void vp9_inc_mv(const MV *mv, nmv_context_counts *counts) {
- if (counts != NULL) {
- const MV_JOINT_TYPE j = vp9_get_mv_joint(mv);
- ++counts->joints[j];
-
- if (mv_joint_vertical(j)) {
- inc_mv_component(mv->row, &counts->comps[0], 1, 1);
- }
-
- if (mv_joint_horizontal(j)) {
- inc_mv_component(mv->col, &counts->comps[1], 1, 1);
- }
- }
-}
-
-void vp9_adapt_mv_probs(VP9_COMMON *cm, int allow_hp) {
- int i, j;
-
- nmv_context *fc = &cm->fc->nmvc;
- const nmv_context *pre_fc = &cm->frame_contexts[cm->frame_context_idx].nmvc;
- const nmv_context_counts *counts = &cm->counts.mv;
-
- vpx_tree_merge_probs(vp9_mv_joint_tree, pre_fc->joints, counts->joints,
- fc->joints);
-
- for (i = 0; i < 2; ++i) {
- nmv_component *comp = &fc->comps[i];
- const nmv_component *pre_comp = &pre_fc->comps[i];
- const nmv_component_counts *c = &counts->comps[i];
-
- comp->sign = mode_mv_merge_probs(pre_comp->sign, c->sign);
- vpx_tree_merge_probs(vp9_mv_class_tree, pre_comp->classes, c->classes,
- comp->classes);
- vpx_tree_merge_probs(vp9_mv_class0_tree, pre_comp->class0, c->class0,
- comp->class0);
-
- for (j = 0; j < MV_OFFSET_BITS; ++j)
- comp->bits[j] = mode_mv_merge_probs(pre_comp->bits[j], c->bits[j]);
-
- for (j = 0; j < CLASS0_SIZE; ++j)
- vpx_tree_merge_probs(vp9_mv_fp_tree, pre_comp->class0_fp[j],
- c->class0_fp[j], comp->class0_fp[j]);
-
- vpx_tree_merge_probs(vp9_mv_fp_tree, pre_comp->fp, c->fp, comp->fp);
-
- if (allow_hp) {
- comp->class0_hp = mode_mv_merge_probs(pre_comp->class0_hp, c->class0_hp);
- comp->hp = mode_mv_merge_probs(pre_comp->hp, c->hp);
- }
- }
-}
-
-void vp9_init_mv_probs(VP9_COMMON *cm) {
- cm->fc->nmvc = default_nmv_context;
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_entropymv.h b/thirdparty/libvpx/vp9/common/vp9_entropymv.h
deleted file mode 100644
index 2f05ad44b6..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_entropymv.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP9_COMMON_VP9_ENTROPYMV_H_
-#define VP9_COMMON_VP9_ENTROPYMV_H_
-
-#include "./vpx_config.h"
-
-#include "vpx_dsp/prob.h"
-
-#include "vp9/common/vp9_mv.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct VP9Common;
-
-void vp9_init_mv_probs(struct VP9Common *cm);
-
-void vp9_adapt_mv_probs(struct VP9Common *cm, int usehp);
-
-// Integer pel reference mv threshold for use of high-precision 1/8 mv
-#define COMPANDED_MVREF_THRESH 8
-
-static INLINE int use_mv_hp(const MV *ref) {
- return (abs(ref->row) >> 3) < COMPANDED_MVREF_THRESH &&
- (abs(ref->col) >> 3) < COMPANDED_MVREF_THRESH;
-}
-
-#define MV_UPDATE_PROB 252
-
-/* Symbols for coding which components are zero jointly */
-#define MV_JOINTS 4
-typedef enum {
- MV_JOINT_ZERO = 0, /* Zero vector */
- MV_JOINT_HNZVZ = 1, /* Vert zero, hor nonzero */
- MV_JOINT_HZVNZ = 2, /* Hor zero, vert nonzero */
- MV_JOINT_HNZVNZ = 3, /* Both components nonzero */
-} MV_JOINT_TYPE;
-
-static INLINE int mv_joint_vertical(MV_JOINT_TYPE type) {
- return type == MV_JOINT_HZVNZ || type == MV_JOINT_HNZVNZ;
-}
-
-static INLINE int mv_joint_horizontal(MV_JOINT_TYPE type) {
- return type == MV_JOINT_HNZVZ || type == MV_JOINT_HNZVNZ;
-}
-
-/* Symbols for coding magnitude class of nonzero components */
-#define MV_CLASSES 11
-typedef enum {
- MV_CLASS_0 = 0, /* (0, 2] integer pel */
- MV_CLASS_1 = 1, /* (2, 4] integer pel */
- MV_CLASS_2 = 2, /* (4, 8] integer pel */
- MV_CLASS_3 = 3, /* (8, 16] integer pel */
- MV_CLASS_4 = 4, /* (16, 32] integer pel */
- MV_CLASS_5 = 5, /* (32, 64] integer pel */
- MV_CLASS_6 = 6, /* (64, 128] integer pel */
- MV_CLASS_7 = 7, /* (128, 256] integer pel */
- MV_CLASS_8 = 8, /* (256, 512] integer pel */
- MV_CLASS_9 = 9, /* (512, 1024] integer pel */
- MV_CLASS_10 = 10, /* (1024,2048] integer pel */
-} MV_CLASS_TYPE;
-
-#define CLASS0_BITS 1 /* bits at integer precision for class 0 */
-#define CLASS0_SIZE (1 << CLASS0_BITS)
-#define MV_OFFSET_BITS (MV_CLASSES + CLASS0_BITS - 2)
-#define MV_FP_SIZE 4
-
-#define MV_MAX_BITS (MV_CLASSES + CLASS0_BITS + 2)
-#define MV_MAX ((1 << MV_MAX_BITS) - 1)
-#define MV_VALS ((MV_MAX << 1) + 1)
-
-#define MV_IN_USE_BITS 14
-#define MV_UPP ((1 << MV_IN_USE_BITS) - 1)
-#define MV_LOW (-(1 << MV_IN_USE_BITS))
-
-extern const vpx_tree_index vp9_mv_joint_tree[];
-extern const vpx_tree_index vp9_mv_class_tree[];
-extern const vpx_tree_index vp9_mv_class0_tree[];
-extern const vpx_tree_index vp9_mv_fp_tree[];
-
-typedef struct {
- vpx_prob sign;
- vpx_prob classes[MV_CLASSES - 1];
- vpx_prob class0[CLASS0_SIZE - 1];
- vpx_prob bits[MV_OFFSET_BITS];
- vpx_prob class0_fp[CLASS0_SIZE][MV_FP_SIZE - 1];
- vpx_prob fp[MV_FP_SIZE - 1];
- vpx_prob class0_hp;
- vpx_prob hp;
-} nmv_component;
-
-typedef struct {
- vpx_prob joints[MV_JOINTS - 1];
- nmv_component comps[2];
-} nmv_context;
-
-static INLINE MV_JOINT_TYPE vp9_get_mv_joint(const MV *mv) {
- if (mv->row == 0) {
- return mv->col == 0 ? MV_JOINT_ZERO : MV_JOINT_HNZVZ;
- } else {
- return mv->col == 0 ? MV_JOINT_HZVNZ : MV_JOINT_HNZVNZ;
- }
-}
-
-MV_CLASS_TYPE vp9_get_mv_class(int z, int *offset);
-
-typedef struct {
- unsigned int sign[2];
- unsigned int classes[MV_CLASSES];
- unsigned int class0[CLASS0_SIZE];
- unsigned int bits[MV_OFFSET_BITS][2];
- unsigned int class0_fp[CLASS0_SIZE][MV_FP_SIZE];
- unsigned int fp[MV_FP_SIZE];
- unsigned int class0_hp[2];
- unsigned int hp[2];
-} nmv_component_counts;
-
-typedef struct {
- unsigned int joints[MV_JOINTS];
- nmv_component_counts comps[2];
-} nmv_context_counts;
-
-void vp9_inc_mv(const MV *mv, nmv_context_counts *mvctx);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_ENTROPYMV_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_enums.h b/thirdparty/libvpx/vp9/common/vp9_enums.h
deleted file mode 100644
index d089f23f97..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_enums.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_ENUMS_H_
-#define VP9_COMMON_VP9_ENUMS_H_
-
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MI_SIZE_LOG2 3
-#define MI_BLOCK_SIZE_LOG2 (6 - MI_SIZE_LOG2) // 64 = 2^6
-
-#define MI_SIZE (1 << MI_SIZE_LOG2) // pixels per mi-unit
-#define MI_BLOCK_SIZE (1 << MI_BLOCK_SIZE_LOG2) // mi-units per max block
-
-#define MI_MASK (MI_BLOCK_SIZE - 1)
-
-// Bitstream profiles indicated by 2-3 bits in the uncompressed header.
-// 00: Profile 0. 8-bit 4:2:0 only.
-// 10: Profile 1. 8-bit 4:4:4, 4:2:2, and 4:4:0.
-// 01: Profile 2. 10-bit and 12-bit color only, with 4:2:0 sampling.
-// 110: Profile 3. 10-bit and 12-bit color only, with 4:2:2/4:4:4/4:4:0
-// sampling.
-// 111: Undefined profile.
-typedef enum BITSTREAM_PROFILE {
- PROFILE_0,
- PROFILE_1,
- PROFILE_2,
- PROFILE_3,
- MAX_PROFILES
-} BITSTREAM_PROFILE;
-
-#define BLOCK_4X4 0
-#define BLOCK_4X8 1
-#define BLOCK_8X4 2
-#define BLOCK_8X8 3
-#define BLOCK_8X16 4
-#define BLOCK_16X8 5
-#define BLOCK_16X16 6
-#define BLOCK_16X32 7
-#define BLOCK_32X16 8
-#define BLOCK_32X32 9
-#define BLOCK_32X64 10
-#define BLOCK_64X32 11
-#define BLOCK_64X64 12
-#define BLOCK_SIZES 13
-#define BLOCK_INVALID BLOCK_SIZES
-typedef uint8_t BLOCK_SIZE;
-
-typedef enum PARTITION_TYPE {
- PARTITION_NONE,
- PARTITION_HORZ,
- PARTITION_VERT,
- PARTITION_SPLIT,
- PARTITION_TYPES,
- PARTITION_INVALID = PARTITION_TYPES
-} PARTITION_TYPE;
-
-typedef char PARTITION_CONTEXT;
-#define PARTITION_PLOFFSET 4 // number of probability models per block size
-#define PARTITION_CONTEXTS (4 * PARTITION_PLOFFSET)
-
-// block transform size
-typedef uint8_t TX_SIZE;
-#define TX_4X4 ((TX_SIZE)0) // 4x4 transform
-#define TX_8X8 ((TX_SIZE)1) // 8x8 transform
-#define TX_16X16 ((TX_SIZE)2) // 16x16 transform
-#define TX_32X32 ((TX_SIZE)3) // 32x32 transform
-#define TX_SIZES ((TX_SIZE)4)
-
-// frame transform mode
-typedef enum {
- ONLY_4X4 = 0, // only 4x4 transform used
- ALLOW_8X8 = 1, // allow block transform size up to 8x8
- ALLOW_16X16 = 2, // allow block transform size up to 16x16
- ALLOW_32X32 = 3, // allow block transform size up to 32x32
- TX_MODE_SELECT = 4, // transform specified for each block
- TX_MODES = 5,
-} TX_MODE;
-
-typedef enum {
- DCT_DCT = 0, // DCT in both horizontal and vertical
- ADST_DCT = 1, // ADST in vertical, DCT in horizontal
- DCT_ADST = 2, // DCT in vertical, ADST in horizontal
- ADST_ADST = 3, // ADST in both directions
- TX_TYPES = 4
-} TX_TYPE;
-
-typedef enum {
- VP9_LAST_FLAG = 1 << 0,
- VP9_GOLD_FLAG = 1 << 1,
- VP9_ALT_FLAG = 1 << 2,
-} VP9_REFFRAME;
-
-typedef enum {
- PLANE_TYPE_Y = 0,
- PLANE_TYPE_UV = 1,
- PLANE_TYPES
-} PLANE_TYPE;
-
-#define DC_PRED 0 // Average of above and left pixels
-#define V_PRED 1 // Vertical
-#define H_PRED 2 // Horizontal
-#define D45_PRED 3 // Directional 45 deg = round(arctan(1/1) * 180/pi)
-#define D135_PRED 4 // Directional 135 deg = 180 - 45
-#define D117_PRED 5 // Directional 117 deg = 180 - 63
-#define D153_PRED 6 // Directional 153 deg = 180 - 27
-#define D207_PRED 7 // Directional 207 deg = 180 + 27
-#define D63_PRED 8 // Directional 63 deg = round(arctan(2/1) * 180/pi)
-#define TM_PRED 9 // True-motion
-#define NEARESTMV 10
-#define NEARMV 11
-#define ZEROMV 12
-#define NEWMV 13
-#define MB_MODE_COUNT 14
-typedef uint8_t PREDICTION_MODE;
-
-#define INTRA_MODES (TM_PRED + 1)
-
-#define INTER_MODES (1 + NEWMV - NEARESTMV)
-
-#define SKIP_CONTEXTS 3
-#define INTER_MODE_CONTEXTS 7
-
-/* Segment Feature Masks */
-#define MAX_MV_REF_CANDIDATES 2
-
-#define INTRA_INTER_CONTEXTS 4
-#define COMP_INTER_CONTEXTS 5
-#define REF_CONTEXTS 5
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_ENUMS_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_filter.c b/thirdparty/libvpx/vp9/common/vp9_filter.c
deleted file mode 100644
index 4b2198fc40..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_filter.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "vp9/common/vp9_filter.h"
-
-DECLARE_ALIGNED(256, static const InterpKernel,
- bilinear_filters[SUBPEL_SHIFTS]) = {
- { 0, 0, 0, 128, 0, 0, 0, 0 },
- { 0, 0, 0, 120, 8, 0, 0, 0 },
- { 0, 0, 0, 112, 16, 0, 0, 0 },
- { 0, 0, 0, 104, 24, 0, 0, 0 },
- { 0, 0, 0, 96, 32, 0, 0, 0 },
- { 0, 0, 0, 88, 40, 0, 0, 0 },
- { 0, 0, 0, 80, 48, 0, 0, 0 },
- { 0, 0, 0, 72, 56, 0, 0, 0 },
- { 0, 0, 0, 64, 64, 0, 0, 0 },
- { 0, 0, 0, 56, 72, 0, 0, 0 },
- { 0, 0, 0, 48, 80, 0, 0, 0 },
- { 0, 0, 0, 40, 88, 0, 0, 0 },
- { 0, 0, 0, 32, 96, 0, 0, 0 },
- { 0, 0, 0, 24, 104, 0, 0, 0 },
- { 0, 0, 0, 16, 112, 0, 0, 0 },
- { 0, 0, 0, 8, 120, 0, 0, 0 }
-};
-
-// Lagrangian interpolation filter
-DECLARE_ALIGNED(256, static const InterpKernel,
- sub_pel_filters_8[SUBPEL_SHIFTS]) = {
- { 0, 0, 0, 128, 0, 0, 0, 0},
- { 0, 1, -5, 126, 8, -3, 1, 0},
- { -1, 3, -10, 122, 18, -6, 2, 0},
- { -1, 4, -13, 118, 27, -9, 3, -1},
- { -1, 4, -16, 112, 37, -11, 4, -1},
- { -1, 5, -18, 105, 48, -14, 4, -1},
- { -1, 5, -19, 97, 58, -16, 5, -1},
- { -1, 6, -19, 88, 68, -18, 5, -1},
- { -1, 6, -19, 78, 78, -19, 6, -1},
- { -1, 5, -18, 68, 88, -19, 6, -1},
- { -1, 5, -16, 58, 97, -19, 5, -1},
- { -1, 4, -14, 48, 105, -18, 5, -1},
- { -1, 4, -11, 37, 112, -16, 4, -1},
- { -1, 3, -9, 27, 118, -13, 4, -1},
- { 0, 2, -6, 18, 122, -10, 3, -1},
- { 0, 1, -3, 8, 126, -5, 1, 0}
-};
-
-// DCT based filter
-DECLARE_ALIGNED(256, static const InterpKernel,
- sub_pel_filters_8s[SUBPEL_SHIFTS]) = {
- {0, 0, 0, 128, 0, 0, 0, 0},
- {-1, 3, -7, 127, 8, -3, 1, 0},
- {-2, 5, -13, 125, 17, -6, 3, -1},
- {-3, 7, -17, 121, 27, -10, 5, -2},
- {-4, 9, -20, 115, 37, -13, 6, -2},
- {-4, 10, -23, 108, 48, -16, 8, -3},
- {-4, 10, -24, 100, 59, -19, 9, -3},
- {-4, 11, -24, 90, 70, -21, 10, -4},
- {-4, 11, -23, 80, 80, -23, 11, -4},
- {-4, 10, -21, 70, 90, -24, 11, -4},
- {-3, 9, -19, 59, 100, -24, 10, -4},
- {-3, 8, -16, 48, 108, -23, 10, -4},
- {-2, 6, -13, 37, 115, -20, 9, -4},
- {-2, 5, -10, 27, 121, -17, 7, -3},
- {-1, 3, -6, 17, 125, -13, 5, -2},
- {0, 1, -3, 8, 127, -7, 3, -1}
-};
-
-// freqmultiplier = 0.5
-DECLARE_ALIGNED(256, static const InterpKernel,
- sub_pel_filters_8lp[SUBPEL_SHIFTS]) = {
- { 0, 0, 0, 128, 0, 0, 0, 0},
- {-3, -1, 32, 64, 38, 1, -3, 0},
- {-2, -2, 29, 63, 41, 2, -3, 0},
- {-2, -2, 26, 63, 43, 4, -4, 0},
- {-2, -3, 24, 62, 46, 5, -4, 0},
- {-2, -3, 21, 60, 49, 7, -4, 0},
- {-1, -4, 18, 59, 51, 9, -4, 0},
- {-1, -4, 16, 57, 53, 12, -4, -1},
- {-1, -4, 14, 55, 55, 14, -4, -1},
- {-1, -4, 12, 53, 57, 16, -4, -1},
- { 0, -4, 9, 51, 59, 18, -4, -1},
- { 0, -4, 7, 49, 60, 21, -3, -2},
- { 0, -4, 5, 46, 62, 24, -3, -2},
- { 0, -4, 4, 43, 63, 26, -2, -2},
- { 0, -3, 2, 41, 63, 29, -2, -2},
- { 0, -3, 1, 38, 64, 32, -1, -3}
-};
-
-
-const InterpKernel *vp9_filter_kernels[4] = {
- sub_pel_filters_8,
- sub_pel_filters_8lp,
- sub_pel_filters_8s,
- bilinear_filters
-};
diff --git a/thirdparty/libvpx/vp9/common/vp9_filter.h b/thirdparty/libvpx/vp9/common/vp9_filter.h
deleted file mode 100644
index efa24bc67b..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_filter.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2011 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_FILTER_H_
-#define VP9_COMMON_VP9_FILTER_H_
-
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define EIGHTTAP 0
-#define EIGHTTAP_SMOOTH 1
-#define EIGHTTAP_SHARP 2
-#define SWITCHABLE_FILTERS 3 /* Number of switchable filters */
-#define BILINEAR 3
-// The codec can operate in four possible inter prediction filter mode:
-// 8-tap, 8-tap-smooth, 8-tap-sharp, and switching between the three.
-#define SWITCHABLE_FILTER_CONTEXTS (SWITCHABLE_FILTERS + 1)
-#define SWITCHABLE 4 /* should be the last one */
-
-typedef uint8_t INTERP_FILTER;
-
-extern const InterpKernel *vp9_filter_kernels[4];
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_FILTER_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_frame_buffers.c b/thirdparty/libvpx/vp9/common/vp9_frame_buffers.c
deleted file mode 100644
index 0f41d66985..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_frame_buffers.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "vp9/common/vp9_frame_buffers.h"
-#include "vpx_mem/vpx_mem.h"
-
-int vp9_alloc_internal_frame_buffers(InternalFrameBufferList *list) {
- assert(list != NULL);
- vp9_free_internal_frame_buffers(list);
-
- list->num_internal_frame_buffers =
- VP9_MAXIMUM_REF_BUFFERS + VPX_MAXIMUM_WORK_BUFFERS;
- list->int_fb =
- (InternalFrameBuffer *)vpx_calloc(list->num_internal_frame_buffers,
- sizeof(*list->int_fb));
- return (list->int_fb == NULL);
-}
-
-void vp9_free_internal_frame_buffers(InternalFrameBufferList *list) {
- int i;
-
- assert(list != NULL);
-
- for (i = 0; i < list->num_internal_frame_buffers; ++i) {
- vpx_free(list->int_fb[i].data);
- list->int_fb[i].data = NULL;
- }
- vpx_free(list->int_fb);
- list->int_fb = NULL;
-}
-
-int vp9_get_frame_buffer(void *cb_priv, size_t min_size,
- vpx_codec_frame_buffer_t *fb) {
- int i;
- InternalFrameBufferList *const int_fb_list =
- (InternalFrameBufferList *)cb_priv;
- if (int_fb_list == NULL)
- return -1;
-
- // Find a free frame buffer.
- for (i = 0; i < int_fb_list->num_internal_frame_buffers; ++i) {
- if (!int_fb_list->int_fb[i].in_use)
- break;
- }
-
- if (i == int_fb_list->num_internal_frame_buffers)
- return -1;
-
- if (int_fb_list->int_fb[i].size < min_size) {
- int_fb_list->int_fb[i].data =
- (uint8_t *)vpx_realloc(int_fb_list->int_fb[i].data, min_size);
- if (!int_fb_list->int_fb[i].data)
- return -1;
-
- // This memset is needed for fixing valgrind error from C loop filter
- // due to access uninitialized memory in frame border. It could be
- // removed if border is totally removed.
- memset(int_fb_list->int_fb[i].data, 0, min_size);
- int_fb_list->int_fb[i].size = min_size;
- }
-
- fb->data = int_fb_list->int_fb[i].data;
- fb->size = int_fb_list->int_fb[i].size;
- int_fb_list->int_fb[i].in_use = 1;
-
- // Set the frame buffer's private data to point at the internal frame buffer.
- fb->priv = &int_fb_list->int_fb[i];
- return 0;
-}
-
-int vp9_release_frame_buffer(void *cb_priv, vpx_codec_frame_buffer_t *fb) {
- InternalFrameBuffer *const int_fb = (InternalFrameBuffer *)fb->priv;
- (void)cb_priv;
- if (int_fb)
- int_fb->in_use = 0;
- return 0;
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_frame_buffers.h b/thirdparty/libvpx/vp9/common/vp9_frame_buffers.h
deleted file mode 100644
index e2cfe61b66..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_frame_buffers.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_FRAME_BUFFERS_H_
-#define VP9_COMMON_VP9_FRAME_BUFFERS_H_
-
-#include "vpx/vpx_frame_buffer.h"
-#include "vpx/vpx_integer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct InternalFrameBuffer {
- uint8_t *data;
- size_t size;
- int in_use;
-} InternalFrameBuffer;
-
-typedef struct InternalFrameBufferList {
- int num_internal_frame_buffers;
- InternalFrameBuffer *int_fb;
-} InternalFrameBufferList;
-
-// Initializes |list|. Returns 0 on success.
-int vp9_alloc_internal_frame_buffers(InternalFrameBufferList *list);
-
-// Free any data allocated to the frame buffers.
-void vp9_free_internal_frame_buffers(InternalFrameBufferList *list);
-
-// Callback used by libvpx to request an external frame buffer. |cb_priv|
-// Callback private data, which points to an InternalFrameBufferList.
-// |min_size| is the minimum size in bytes needed to decode the next frame.
-// |fb| pointer to the frame buffer.
-int vp9_get_frame_buffer(void *cb_priv, size_t min_size,
- vpx_codec_frame_buffer_t *fb);
-
-// Callback used by libvpx when there are no references to the frame buffer.
-// |cb_priv| is not used. |fb| pointer to the frame buffer.
-int vp9_release_frame_buffer(void *cb_priv, vpx_codec_frame_buffer_t *fb);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_FRAME_BUFFERS_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_idct.c b/thirdparty/libvpx/vp9/common/vp9_idct.c
deleted file mode 100644
index 1b420143bb..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_idct.c
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <math.h>
-
-#include "./vp9_rtcd.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_idct.h"
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
-
-void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride,
- int tx_type) {
- const transform_2d IHT_4[] = {
- { idct4_c, idct4_c }, // DCT_DCT = 0
- { iadst4_c, idct4_c }, // ADST_DCT = 1
- { idct4_c, iadst4_c }, // DCT_ADST = 2
- { iadst4_c, iadst4_c } // ADST_ADST = 3
- };
-
- int i, j;
- tran_low_t out[4 * 4];
- tran_low_t *outptr = out;
- tran_low_t temp_in[4], temp_out[4];
-
- // inverse transform row vectors
- for (i = 0; i < 4; ++i) {
- IHT_4[tx_type].rows(input, outptr);
- input += 4;
- outptr += 4;
- }
-
- // inverse transform column vectors
- for (i = 0; i < 4; ++i) {
- for (j = 0; j < 4; ++j)
- temp_in[j] = out[j * 4 + i];
- IHT_4[tx_type].cols(temp_in, temp_out);
- for (j = 0; j < 4; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 4));
- }
- }
-}
-
-static const transform_2d IHT_8[] = {
- { idct8_c, idct8_c }, // DCT_DCT = 0
- { iadst8_c, idct8_c }, // ADST_DCT = 1
- { idct8_c, iadst8_c }, // DCT_ADST = 2
- { iadst8_c, iadst8_c } // ADST_ADST = 3
-};
-
-void vp9_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int stride,
- int tx_type) {
- int i, j;
- tran_low_t out[8 * 8];
- tran_low_t *outptr = out;
- tran_low_t temp_in[8], temp_out[8];
- const transform_2d ht = IHT_8[tx_type];
-
- // inverse transform row vectors
- for (i = 0; i < 8; ++i) {
- ht.rows(input, outptr);
- input += 8;
- outptr += 8;
- }
-
- // inverse transform column vectors
- for (i = 0; i < 8; ++i) {
- for (j = 0; j < 8; ++j)
- temp_in[j] = out[j * 8 + i];
- ht.cols(temp_in, temp_out);
- for (j = 0; j < 8; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 5));
- }
- }
-}
-
-static const transform_2d IHT_16[] = {
- { idct16_c, idct16_c }, // DCT_DCT = 0
- { iadst16_c, idct16_c }, // ADST_DCT = 1
- { idct16_c, iadst16_c }, // DCT_ADST = 2
- { iadst16_c, iadst16_c } // ADST_ADST = 3
-};
-
-void vp9_iht16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int stride,
- int tx_type) {
- int i, j;
- tran_low_t out[16 * 16];
- tran_low_t *outptr = out;
- tran_low_t temp_in[16], temp_out[16];
- const transform_2d ht = IHT_16[tx_type];
-
- // Rows
- for (i = 0; i < 16; ++i) {
- ht.rows(input, outptr);
- input += 16;
- outptr += 16;
- }
-
- // Columns
- for (i = 0; i < 16; ++i) {
- for (j = 0; j < 16; ++j)
- temp_in[j] = out[j * 16 + i];
- ht.cols(temp_in, temp_out);
- for (j = 0; j < 16; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 6));
- }
- }
-}
-
-// idct
-void vp9_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob) {
- if (eob > 1)
- vpx_idct4x4_16_add(input, dest, stride);
- else
- vpx_idct4x4_1_add(input, dest, stride);
-}
-
-
-void vp9_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob) {
- if (eob > 1)
- vpx_iwht4x4_16_add(input, dest, stride);
- else
- vpx_iwht4x4_1_add(input, dest, stride);
-}
-
-void vp9_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob) {
- // If dc is 1, then input[0] is the reconstructed value, do not need
- // dequantization. Also, when dc is 1, dc is counted in eobs, namely eobs >=1.
-
- // The calculation can be simplified if there are not many non-zero dct
- // coefficients. Use eobs to decide what to do.
- // TODO(yunqingwang): "eobs = 1" case is also handled in vp9_short_idct8x8_c.
- // Combine that with code here.
- if (eob == 1)
- // DC only DCT coefficient
- vpx_idct8x8_1_add(input, dest, stride);
- else if (eob <= 12)
- vpx_idct8x8_12_add(input, dest, stride);
- else
- vpx_idct8x8_64_add(input, dest, stride);
-}
-
-void vp9_idct16x16_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob) {
- /* The calculation can be simplified if there are not many non-zero dct
- * coefficients. Use eobs to separate different cases. */
- if (eob == 1)
- /* DC only DCT coefficient. */
- vpx_idct16x16_1_add(input, dest, stride);
- else if (eob <= 10)
- vpx_idct16x16_10_add(input, dest, stride);
- else
- vpx_idct16x16_256_add(input, dest, stride);
-}
-
-void vp9_idct32x32_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob) {
- if (eob == 1)
- vpx_idct32x32_1_add(input, dest, stride);
- else if (eob <= 34)
- // non-zero coeff only in upper-left 8x8
- vpx_idct32x32_34_add(input, dest, stride);
- else if (eob <= 135)
- // non-zero coeff only in upper-left 16x16
- vpx_idct32x32_135_add(input, dest, stride);
- else
- vpx_idct32x32_1024_add(input, dest, stride);
-}
-
-// iht
-void vp9_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest,
- int stride, int eob) {
- if (tx_type == DCT_DCT)
- vp9_idct4x4_add(input, dest, stride, eob);
- else
- vp9_iht4x4_16_add(input, dest, stride, tx_type);
-}
-
-void vp9_iht8x8_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest,
- int stride, int eob) {
- if (tx_type == DCT_DCT) {
- vp9_idct8x8_add(input, dest, stride, eob);
- } else {
- vp9_iht8x8_64_add(input, dest, stride, tx_type);
- }
-}
-
-void vp9_iht16x16_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest,
- int stride, int eob) {
- if (tx_type == DCT_DCT) {
- vp9_idct16x16_add(input, dest, stride, eob);
- } else {
- vp9_iht16x16_256_add(input, dest, stride, tx_type);
- }
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void vp9_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int tx_type, int bd) {
- const highbd_transform_2d IHT_4[] = {
- { vpx_highbd_idct4_c, vpx_highbd_idct4_c }, // DCT_DCT = 0
- { vpx_highbd_iadst4_c, vpx_highbd_idct4_c }, // ADST_DCT = 1
- { vpx_highbd_idct4_c, vpx_highbd_iadst4_c }, // DCT_ADST = 2
- { vpx_highbd_iadst4_c, vpx_highbd_iadst4_c } // ADST_ADST = 3
- };
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- int i, j;
- tran_low_t out[4 * 4];
- tran_low_t *outptr = out;
- tran_low_t temp_in[4], temp_out[4];
-
- // Inverse transform row vectors.
- for (i = 0; i < 4; ++i) {
- IHT_4[tx_type].rows(input, outptr, bd);
- input += 4;
- outptr += 4;
- }
-
- // Inverse transform column vectors.
- for (i = 0; i < 4; ++i) {
- for (j = 0; j < 4; ++j)
- temp_in[j] = out[j * 4 + i];
- IHT_4[tx_type].cols(temp_in, temp_out, bd);
- for (j = 0; j < 4; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 4), bd);
- }
- }
-}
-
-static const highbd_transform_2d HIGH_IHT_8[] = {
- { vpx_highbd_idct8_c, vpx_highbd_idct8_c }, // DCT_DCT = 0
- { vpx_highbd_iadst8_c, vpx_highbd_idct8_c }, // ADST_DCT = 1
- { vpx_highbd_idct8_c, vpx_highbd_iadst8_c }, // DCT_ADST = 2
- { vpx_highbd_iadst8_c, vpx_highbd_iadst8_c } // ADST_ADST = 3
-};
-
-void vp9_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int tx_type, int bd) {
- int i, j;
- tran_low_t out[8 * 8];
- tran_low_t *outptr = out;
- tran_low_t temp_in[8], temp_out[8];
- const highbd_transform_2d ht = HIGH_IHT_8[tx_type];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // Inverse transform row vectors.
- for (i = 0; i < 8; ++i) {
- ht.rows(input, outptr, bd);
- input += 8;
- outptr += 8;
- }
-
- // Inverse transform column vectors.
- for (i = 0; i < 8; ++i) {
- for (j = 0; j < 8; ++j)
- temp_in[j] = out[j * 8 + i];
- ht.cols(temp_in, temp_out, bd);
- for (j = 0; j < 8; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 5), bd);
- }
- }
-}
-
-static const highbd_transform_2d HIGH_IHT_16[] = {
- { vpx_highbd_idct16_c, vpx_highbd_idct16_c }, // DCT_DCT = 0
- { vpx_highbd_iadst16_c, vpx_highbd_idct16_c }, // ADST_DCT = 1
- { vpx_highbd_idct16_c, vpx_highbd_iadst16_c }, // DCT_ADST = 2
- { vpx_highbd_iadst16_c, vpx_highbd_iadst16_c } // ADST_ADST = 3
-};
-
-void vp9_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int tx_type, int bd) {
- int i, j;
- tran_low_t out[16 * 16];
- tran_low_t *outptr = out;
- tran_low_t temp_in[16], temp_out[16];
- const highbd_transform_2d ht = HIGH_IHT_16[tx_type];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // Rows
- for (i = 0; i < 16; ++i) {
- ht.rows(input, outptr, bd);
- input += 16;
- outptr += 16;
- }
-
- // Columns
- for (i = 0; i < 16; ++i) {
- for (j = 0; j < 16; ++j)
- temp_in[j] = out[j * 16 + i];
- ht.cols(temp_in, temp_out, bd);
- for (j = 0; j < 16; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd);
- }
- }
-}
-
-// idct
-void vp9_highbd_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob, int bd) {
- if (eob > 1)
- vpx_highbd_idct4x4_16_add(input, dest, stride, bd);
- else
- vpx_highbd_idct4x4_1_add(input, dest, stride, bd);
-}
-
-
-void vp9_highbd_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob, int bd) {
- if (eob > 1)
- vpx_highbd_iwht4x4_16_add(input, dest, stride, bd);
- else
- vpx_highbd_iwht4x4_1_add(input, dest, stride, bd);
-}
-
-void vp9_highbd_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob, int bd) {
- // If dc is 1, then input[0] is the reconstructed value, do not need
- // dequantization. Also, when dc is 1, dc is counted in eobs, namely eobs >=1.
-
- // The calculation can be simplified if there are not many non-zero dct
- // coefficients. Use eobs to decide what to do.
- // TODO(yunqingwang): "eobs = 1" case is also handled in vp9_short_idct8x8_c.
- // Combine that with code here.
- // DC only DCT coefficient
- if (eob == 1) {
- vpx_highbd_idct8x8_1_add(input, dest, stride, bd);
- } else if (eob <= 10) {
- vpx_highbd_idct8x8_10_add(input, dest, stride, bd);
- } else {
- vpx_highbd_idct8x8_64_add(input, dest, stride, bd);
- }
-}
-
-void vp9_highbd_idct16x16_add(const tran_low_t *input, uint8_t *dest,
- int stride, int eob, int bd) {
- // The calculation can be simplified if there are not many non-zero dct
- // coefficients. Use eobs to separate different cases.
- // DC only DCT coefficient.
- if (eob == 1) {
- vpx_highbd_idct16x16_1_add(input, dest, stride, bd);
- } else if (eob <= 10) {
- vpx_highbd_idct16x16_10_add(input, dest, stride, bd);
- } else {
- vpx_highbd_idct16x16_256_add(input, dest, stride, bd);
- }
-}
-
-void vp9_highbd_idct32x32_add(const tran_low_t *input, uint8_t *dest,
- int stride, int eob, int bd) {
- // Non-zero coeff only in upper-left 8x8
- if (eob == 1) {
- vpx_highbd_idct32x32_1_add(input, dest, stride, bd);
- } else if (eob <= 34) {
- vpx_highbd_idct32x32_34_add(input, dest, stride, bd);
- } else {
- vpx_highbd_idct32x32_1024_add(input, dest, stride, bd);
- }
-}
-
-// iht
-void vp9_highbd_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input,
- uint8_t *dest, int stride, int eob, int bd) {
- if (tx_type == DCT_DCT)
- vp9_highbd_idct4x4_add(input, dest, stride, eob, bd);
- else
- vp9_highbd_iht4x4_16_add(input, dest, stride, tx_type, bd);
-}
-
-void vp9_highbd_iht8x8_add(TX_TYPE tx_type, const tran_low_t *input,
- uint8_t *dest, int stride, int eob, int bd) {
- if (tx_type == DCT_DCT) {
- vp9_highbd_idct8x8_add(input, dest, stride, eob, bd);
- } else {
- vp9_highbd_iht8x8_64_add(input, dest, stride, tx_type, bd);
- }
-}
-
-void vp9_highbd_iht16x16_add(TX_TYPE tx_type, const tran_low_t *input,
- uint8_t *dest, int stride, int eob, int bd) {
- if (tx_type == DCT_DCT) {
- vp9_highbd_idct16x16_add(input, dest, stride, eob, bd);
- } else {
- vp9_highbd_iht16x16_256_add(input, dest, stride, tx_type, bd);
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
diff --git a/thirdparty/libvpx/vp9/common/vp9_idct.h b/thirdparty/libvpx/vp9/common/vp9_idct.h
deleted file mode 100644
index b5a3fbf362..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_idct.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_IDCT_H_
-#define VP9_COMMON_VP9_IDCT_H_
-
-#include <assert.h>
-
-#include "./vpx_config.h"
-#include "vp9/common/vp9_common.h"
-#include "vp9/common/vp9_enums.h"
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_ports/mem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void (*transform_1d)(const tran_low_t*, tran_low_t*);
-
-typedef struct {
- transform_1d cols, rows; // vertical and horizontal
-} transform_2d;
-
-#if CONFIG_VP9_HIGHBITDEPTH
-typedef void (*highbd_transform_1d)(const tran_low_t*, tran_low_t*, int bd);
-
-typedef struct {
- highbd_transform_1d cols, rows; // vertical and horizontal
-} highbd_transform_2d;
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-void vp9_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob);
-void vp9_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob);
-void vp9_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob);
-void vp9_idct16x16_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob);
-void vp9_idct32x32_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob);
-
-void vp9_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest,
- int stride, int eob);
-void vp9_iht8x8_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest,
- int stride, int eob);
-void vp9_iht16x16_add(TX_TYPE tx_type, const tran_low_t *input, uint8_t *dest,
- int stride, int eob);
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void vp9_highbd_iwht4x4_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob, int bd);
-void vp9_highbd_idct4x4_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob, int bd);
-void vp9_highbd_idct8x8_add(const tran_low_t *input, uint8_t *dest, int stride,
- int eob, int bd);
-void vp9_highbd_idct16x16_add(const tran_low_t *input, uint8_t *dest,
- int stride, int eob, int bd);
-void vp9_highbd_idct32x32_add(const tran_low_t *input, uint8_t *dest,
- int stride, int eob, int bd);
-void vp9_highbd_iht4x4_add(TX_TYPE tx_type, const tran_low_t *input,
- uint8_t *dest, int stride, int eob, int bd);
-void vp9_highbd_iht8x8_add(TX_TYPE tx_type, const tran_low_t *input,
- uint8_t *dest, int stride, int eob, int bd);
-void vp9_highbd_iht16x16_add(TX_TYPE tx_type, const tran_low_t *input,
- uint8_t *dest, int stride, int eob, int bd);
-#endif // CONFIG_VP9_HIGHBITDEPTH
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_IDCT_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_loopfilter.c b/thirdparty/libvpx/vp9/common/vp9_loopfilter.c
deleted file mode 100644
index 183dec4e71..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_loopfilter.c
+++ /dev/null
@@ -1,1697 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vp9/common/vp9_loopfilter.h"
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vp9/common/vp9_reconinter.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-
-#include "vp9/common/vp9_seg_common.h"
-
-// 64 bit masks for left transform size. Each 1 represents a position where
-// we should apply a loop filter across the left border of an 8x8 block
-// boundary.
-//
-// In the case of TX_16X16-> ( in low order byte first we end up with
-// a mask that looks like this
-//
-// 10101010
-// 10101010
-// 10101010
-// 10101010
-// 10101010
-// 10101010
-// 10101010
-// 10101010
-//
-// A loopfilter should be applied to every other 8x8 horizontally.
-static const uint64_t left_64x64_txform_mask[TX_SIZES]= {
- 0xffffffffffffffffULL, // TX_4X4
- 0xffffffffffffffffULL, // TX_8x8
- 0x5555555555555555ULL, // TX_16x16
- 0x1111111111111111ULL, // TX_32x32
-};
-
-// 64 bit masks for above transform size. Each 1 represents a position where
-// we should apply a loop filter across the top border of an 8x8 block
-// boundary.
-//
-// In the case of TX_32x32 -> ( in low order byte first we end up with
-// a mask that looks like this
-//
-// 11111111
-// 00000000
-// 00000000
-// 00000000
-// 11111111
-// 00000000
-// 00000000
-// 00000000
-//
-// A loopfilter should be applied to every other 4 the row vertically.
-static const uint64_t above_64x64_txform_mask[TX_SIZES]= {
- 0xffffffffffffffffULL, // TX_4X4
- 0xffffffffffffffffULL, // TX_8x8
- 0x00ff00ff00ff00ffULL, // TX_16x16
- 0x000000ff000000ffULL, // TX_32x32
-};
-
-// 64 bit masks for prediction sizes (left). Each 1 represents a position
-// where left border of an 8x8 block. These are aligned to the right most
-// appropriate bit, and then shifted into place.
-//
-// In the case of TX_16x32 -> ( low order byte first ) we end up with
-// a mask that looks like this :
-//
-// 10000000
-// 10000000
-// 10000000
-// 10000000
-// 00000000
-// 00000000
-// 00000000
-// 00000000
-static const uint64_t left_prediction_mask[BLOCK_SIZES] = {
- 0x0000000000000001ULL, // BLOCK_4X4,
- 0x0000000000000001ULL, // BLOCK_4X8,
- 0x0000000000000001ULL, // BLOCK_8X4,
- 0x0000000000000001ULL, // BLOCK_8X8,
- 0x0000000000000101ULL, // BLOCK_8X16,
- 0x0000000000000001ULL, // BLOCK_16X8,
- 0x0000000000000101ULL, // BLOCK_16X16,
- 0x0000000001010101ULL, // BLOCK_16X32,
- 0x0000000000000101ULL, // BLOCK_32X16,
- 0x0000000001010101ULL, // BLOCK_32X32,
- 0x0101010101010101ULL, // BLOCK_32X64,
- 0x0000000001010101ULL, // BLOCK_64X32,
- 0x0101010101010101ULL, // BLOCK_64X64
-};
-
-// 64 bit mask to shift and set for each prediction size.
-static const uint64_t above_prediction_mask[BLOCK_SIZES] = {
- 0x0000000000000001ULL, // BLOCK_4X4
- 0x0000000000000001ULL, // BLOCK_4X8
- 0x0000000000000001ULL, // BLOCK_8X4
- 0x0000000000000001ULL, // BLOCK_8X8
- 0x0000000000000001ULL, // BLOCK_8X16,
- 0x0000000000000003ULL, // BLOCK_16X8
- 0x0000000000000003ULL, // BLOCK_16X16
- 0x0000000000000003ULL, // BLOCK_16X32,
- 0x000000000000000fULL, // BLOCK_32X16,
- 0x000000000000000fULL, // BLOCK_32X32,
- 0x000000000000000fULL, // BLOCK_32X64,
- 0x00000000000000ffULL, // BLOCK_64X32,
- 0x00000000000000ffULL, // BLOCK_64X64
-};
-// 64 bit mask to shift and set for each prediction size. A bit is set for
-// each 8x8 block that would be in the left most block of the given block
-// size in the 64x64 block.
-static const uint64_t size_mask[BLOCK_SIZES] = {
- 0x0000000000000001ULL, // BLOCK_4X4
- 0x0000000000000001ULL, // BLOCK_4X8
- 0x0000000000000001ULL, // BLOCK_8X4
- 0x0000000000000001ULL, // BLOCK_8X8
- 0x0000000000000101ULL, // BLOCK_8X16,
- 0x0000000000000003ULL, // BLOCK_16X8
- 0x0000000000000303ULL, // BLOCK_16X16
- 0x0000000003030303ULL, // BLOCK_16X32,
- 0x0000000000000f0fULL, // BLOCK_32X16,
- 0x000000000f0f0f0fULL, // BLOCK_32X32,
- 0x0f0f0f0f0f0f0f0fULL, // BLOCK_32X64,
- 0x00000000ffffffffULL, // BLOCK_64X32,
- 0xffffffffffffffffULL, // BLOCK_64X64
-};
-
-// These are used for masking the left and above borders.
-static const uint64_t left_border = 0x1111111111111111ULL;
-static const uint64_t above_border = 0x000000ff000000ffULL;
-
-// 16 bit masks for uv transform sizes.
-static const uint16_t left_64x64_txform_mask_uv[TX_SIZES]= {
- 0xffff, // TX_4X4
- 0xffff, // TX_8x8
- 0x5555, // TX_16x16
- 0x1111, // TX_32x32
-};
-
-static const uint16_t above_64x64_txform_mask_uv[TX_SIZES]= {
- 0xffff, // TX_4X4
- 0xffff, // TX_8x8
- 0x0f0f, // TX_16x16
- 0x000f, // TX_32x32
-};
-
-// 16 bit left mask to shift and set for each uv prediction size.
-static const uint16_t left_prediction_mask_uv[BLOCK_SIZES] = {
- 0x0001, // BLOCK_4X4,
- 0x0001, // BLOCK_4X8,
- 0x0001, // BLOCK_8X4,
- 0x0001, // BLOCK_8X8,
- 0x0001, // BLOCK_8X16,
- 0x0001, // BLOCK_16X8,
- 0x0001, // BLOCK_16X16,
- 0x0011, // BLOCK_16X32,
- 0x0001, // BLOCK_32X16,
- 0x0011, // BLOCK_32X32,
- 0x1111, // BLOCK_32X64
- 0x0011, // BLOCK_64X32,
- 0x1111, // BLOCK_64X64
-};
-// 16 bit above mask to shift and set for uv each prediction size.
-static const uint16_t above_prediction_mask_uv[BLOCK_SIZES] = {
- 0x0001, // BLOCK_4X4
- 0x0001, // BLOCK_4X8
- 0x0001, // BLOCK_8X4
- 0x0001, // BLOCK_8X8
- 0x0001, // BLOCK_8X16,
- 0x0001, // BLOCK_16X8
- 0x0001, // BLOCK_16X16
- 0x0001, // BLOCK_16X32,
- 0x0003, // BLOCK_32X16,
- 0x0003, // BLOCK_32X32,
- 0x0003, // BLOCK_32X64,
- 0x000f, // BLOCK_64X32,
- 0x000f, // BLOCK_64X64
-};
-
-// 64 bit mask to shift and set for each uv prediction size
-static const uint16_t size_mask_uv[BLOCK_SIZES] = {
- 0x0001, // BLOCK_4X4
- 0x0001, // BLOCK_4X8
- 0x0001, // BLOCK_8X4
- 0x0001, // BLOCK_8X8
- 0x0001, // BLOCK_8X16,
- 0x0001, // BLOCK_16X8
- 0x0001, // BLOCK_16X16
- 0x0011, // BLOCK_16X32,
- 0x0003, // BLOCK_32X16,
- 0x0033, // BLOCK_32X32,
- 0x3333, // BLOCK_32X64,
- 0x00ff, // BLOCK_64X32,
- 0xffff, // BLOCK_64X64
-};
-static const uint16_t left_border_uv = 0x1111;
-static const uint16_t above_border_uv = 0x000f;
-
-static const int mode_lf_lut[MB_MODE_COUNT] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // INTRA_MODES
- 1, 1, 0, 1 // INTER_MODES (ZEROMV == 0)
-};
-
-static void update_sharpness(loop_filter_info_n *lfi, int sharpness_lvl) {
- int lvl;
-
- // For each possible value for the loop filter fill out limits
- for (lvl = 0; lvl <= MAX_LOOP_FILTER; lvl++) {
- // Set loop filter parameters that control sharpness.
- int block_inside_limit = lvl >> ((sharpness_lvl > 0) + (sharpness_lvl > 4));
-
- if (sharpness_lvl > 0) {
- if (block_inside_limit > (9 - sharpness_lvl))
- block_inside_limit = (9 - sharpness_lvl);
- }
-
- if (block_inside_limit < 1)
- block_inside_limit = 1;
-
- memset(lfi->lfthr[lvl].lim, block_inside_limit, SIMD_WIDTH);
- memset(lfi->lfthr[lvl].mblim, (2 * (lvl + 2) + block_inside_limit),
- SIMD_WIDTH);
- }
-}
-
-static uint8_t get_filter_level(const loop_filter_info_n *lfi_n,
- const MODE_INFO *mi) {
- return lfi_n->lvl[mi->segment_id][mi->ref_frame[0]]
- [mode_lf_lut[mi->mode]];
-}
-
-void vp9_loop_filter_init(VP9_COMMON *cm) {
- loop_filter_info_n *lfi = &cm->lf_info;
- struct loopfilter *lf = &cm->lf;
- int lvl;
-
- // init limits for given sharpness
- update_sharpness(lfi, lf->sharpness_level);
- lf->last_sharpness_level = lf->sharpness_level;
-
- // init hev threshold const vectors
- for (lvl = 0; lvl <= MAX_LOOP_FILTER; lvl++)
- memset(lfi->lfthr[lvl].hev_thr, (lvl >> 4), SIMD_WIDTH);
-}
-
-void vp9_loop_filter_frame_init(VP9_COMMON *cm, int default_filt_lvl) {
- int seg_id;
- // n_shift is the multiplier for lf_deltas
- // the multiplier is 1 for when filter_lvl is between 0 and 31;
- // 2 when filter_lvl is between 32 and 63
- const int scale = 1 << (default_filt_lvl >> 5);
- loop_filter_info_n *const lfi = &cm->lf_info;
- struct loopfilter *const lf = &cm->lf;
- const struct segmentation *const seg = &cm->seg;
-
- // update limits if sharpness has changed
- if (lf->last_sharpness_level != lf->sharpness_level) {
- update_sharpness(lfi, lf->sharpness_level);
- lf->last_sharpness_level = lf->sharpness_level;
- }
-
- for (seg_id = 0; seg_id < MAX_SEGMENTS; seg_id++) {
- int lvl_seg = default_filt_lvl;
- if (segfeature_active(seg, seg_id, SEG_LVL_ALT_LF)) {
- const int data = get_segdata(seg, seg_id, SEG_LVL_ALT_LF);
- lvl_seg = clamp(seg->abs_delta == SEGMENT_ABSDATA ?
- data : default_filt_lvl + data,
- 0, MAX_LOOP_FILTER);
- }
-
- if (!lf->mode_ref_delta_enabled) {
- // we could get rid of this if we assume that deltas are set to
- // zero when not in use; encoder always uses deltas
- memset(lfi->lvl[seg_id], lvl_seg, sizeof(lfi->lvl[seg_id]));
- } else {
- int ref, mode;
- const int intra_lvl = lvl_seg + lf->ref_deltas[INTRA_FRAME] * scale;
- lfi->lvl[seg_id][INTRA_FRAME][0] = clamp(intra_lvl, 0, MAX_LOOP_FILTER);
-
- for (ref = LAST_FRAME; ref < MAX_REF_FRAMES; ++ref) {
- for (mode = 0; mode < MAX_MODE_LF_DELTAS; ++mode) {
- const int inter_lvl = lvl_seg + lf->ref_deltas[ref] * scale
- + lf->mode_deltas[mode] * scale;
- lfi->lvl[seg_id][ref][mode] = clamp(inter_lvl, 0, MAX_LOOP_FILTER);
- }
- }
- }
- }
-}
-
-static void filter_selectively_vert_row2(int subsampling_factor,
- uint8_t *s, int pitch,
- unsigned int mask_16x16,
- unsigned int mask_8x8,
- unsigned int mask_4x4,
- unsigned int mask_4x4_int,
- const loop_filter_thresh *lfthr,
- const uint8_t *lfl) {
- const int dual_mask_cutoff = subsampling_factor ? 0xff : 0xffff;
- const int lfl_forward = subsampling_factor ? 4 : 8;
- const unsigned int dual_one = 1 | (1 << lfl_forward);
- unsigned int mask;
- uint8_t *ss[2];
- ss[0] = s;
-
- for (mask =
- (mask_16x16 | mask_8x8 | mask_4x4 | mask_4x4_int) & dual_mask_cutoff;
- mask; mask = (mask & ~dual_one) >> 1) {
- if (mask & dual_one) {
- const loop_filter_thresh *lfis[2];
- lfis[0] = lfthr + *lfl;
- lfis[1] = lfthr + *(lfl + lfl_forward);
- ss[1] = ss[0] + 8 * pitch;
-
- if (mask_16x16 & dual_one) {
- if ((mask_16x16 & dual_one) == dual_one) {
- vpx_lpf_vertical_16_dual(ss[0], pitch, lfis[0]->mblim, lfis[0]->lim,
- lfis[0]->hev_thr);
- } else {
- const loop_filter_thresh *lfi = lfis[!(mask_16x16 & 1)];
- vpx_lpf_vertical_16(ss[!(mask_16x16 & 1)], pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr);
- }
- }
-
- if (mask_8x8 & dual_one) {
- if ((mask_8x8 & dual_one) == dual_one) {
- vpx_lpf_vertical_8_dual(ss[0], pitch, lfis[0]->mblim, lfis[0]->lim,
- lfis[0]->hev_thr, lfis[1]->mblim,
- lfis[1]->lim, lfis[1]->hev_thr);
- } else {
- const loop_filter_thresh *lfi = lfis[!(mask_8x8 & 1)];
- vpx_lpf_vertical_8(ss[!(mask_8x8 & 1)], pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- }
- }
-
- if (mask_4x4 & dual_one) {
- if ((mask_4x4 & dual_one) == dual_one) {
- vpx_lpf_vertical_4_dual(ss[0], pitch, lfis[0]->mblim, lfis[0]->lim,
- lfis[0]->hev_thr, lfis[1]->mblim,
- lfis[1]->lim, lfis[1]->hev_thr);
- } else {
- const loop_filter_thresh *lfi = lfis[!(mask_4x4 & 1)];
- vpx_lpf_vertical_4(ss[!(mask_4x4 & 1)], pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- }
- }
-
- if (mask_4x4_int & dual_one) {
- if ((mask_4x4_int & dual_one) == dual_one) {
- vpx_lpf_vertical_4_dual(ss[0] + 4, pitch, lfis[0]->mblim,
- lfis[0]->lim, lfis[0]->hev_thr,
- lfis[1]->mblim, lfis[1]->lim,
- lfis[1]->hev_thr);
- } else {
- const loop_filter_thresh *lfi = lfis[!(mask_4x4_int & 1)];
- vpx_lpf_vertical_4(ss[!(mask_4x4_int & 1)] + 4, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr);
- }
- }
- }
-
- ss[0] += 8;
- lfl += 1;
- mask_16x16 >>= 1;
- mask_8x8 >>= 1;
- mask_4x4 >>= 1;
- mask_4x4_int >>= 1;
- }
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void highbd_filter_selectively_vert_row2(int subsampling_factor,
- uint16_t *s, int pitch,
- unsigned int mask_16x16,
- unsigned int mask_8x8,
- unsigned int mask_4x4,
- unsigned int mask_4x4_int,
- const loop_filter_thresh *lfthr,
- const uint8_t *lfl, int bd) {
- const int dual_mask_cutoff = subsampling_factor ? 0xff : 0xffff;
- const int lfl_forward = subsampling_factor ? 4 : 8;
- const unsigned int dual_one = 1 | (1 << lfl_forward);
- unsigned int mask;
- uint16_t *ss[2];
- ss[0] = s;
-
- for (mask =
- (mask_16x16 | mask_8x8 | mask_4x4 | mask_4x4_int) & dual_mask_cutoff;
- mask; mask = (mask & ~dual_one) >> 1) {
- if (mask & dual_one) {
- const loop_filter_thresh *lfis[2];
- lfis[0] = lfthr + *lfl;
- lfis[1] = lfthr + *(lfl + lfl_forward);
- ss[1] = ss[0] + 8 * pitch;
-
- if (mask_16x16 & dual_one) {
- if ((mask_16x16 & dual_one) == dual_one) {
- vpx_highbd_lpf_vertical_16_dual(ss[0], pitch, lfis[0]->mblim,
- lfis[0]->lim, lfis[0]->hev_thr, bd);
- } else {
- const loop_filter_thresh *lfi = lfis[!(mask_16x16 & 1)];
- vpx_highbd_lpf_vertical_16(ss[!(mask_16x16 & 1)], pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, bd);
- }
- }
-
- if (mask_8x8 & dual_one) {
- if ((mask_8x8 & dual_one) == dual_one) {
- vpx_highbd_lpf_vertical_8_dual(ss[0], pitch, lfis[0]->mblim,
- lfis[0]->lim, lfis[0]->hev_thr,
- lfis[1]->mblim, lfis[1]->lim,
- lfis[1]->hev_thr, bd);
- } else {
- const loop_filter_thresh *lfi = lfis[!(mask_8x8 & 1)];
- vpx_highbd_lpf_vertical_8(ss[!(mask_8x8 & 1)], pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, bd);
- }
- }
-
- if (mask_4x4 & dual_one) {
- if ((mask_4x4 & dual_one) == dual_one) {
- vpx_highbd_lpf_vertical_4_dual(ss[0], pitch, lfis[0]->mblim,
- lfis[0]->lim, lfis[0]->hev_thr,
- lfis[1]->mblim, lfis[1]->lim,
- lfis[1]->hev_thr, bd);
- } else {
- const loop_filter_thresh *lfi = lfis[!(mask_4x4 & 1)];
- vpx_highbd_lpf_vertical_4(ss[!(mask_4x4 & 1)], pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, bd);
- }
- }
-
- if (mask_4x4_int & dual_one) {
- if ((mask_4x4_int & dual_one) == dual_one) {
- vpx_highbd_lpf_vertical_4_dual(ss[0] + 4, pitch, lfis[0]->mblim,
- lfis[0]->lim, lfis[0]->hev_thr,
- lfis[1]->mblim, lfis[1]->lim,
- lfis[1]->hev_thr, bd);
- } else {
- const loop_filter_thresh *lfi = lfis[!(mask_4x4_int & 1)];
- vpx_highbd_lpf_vertical_4(ss[!(mask_4x4_int & 1)] + 4, pitch,
- lfi->mblim, lfi->lim, lfi->hev_thr, bd);
- }
- }
- }
-
- ss[0] += 8;
- lfl += 1;
- mask_16x16 >>= 1;
- mask_8x8 >>= 1;
- mask_4x4 >>= 1;
- mask_4x4_int >>= 1;
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-static void filter_selectively_horiz(uint8_t *s, int pitch,
- unsigned int mask_16x16,
- unsigned int mask_8x8,
- unsigned int mask_4x4,
- unsigned int mask_4x4_int,
- const loop_filter_thresh *lfthr,
- const uint8_t *lfl) {
- unsigned int mask;
- int count;
-
- for (mask = mask_16x16 | mask_8x8 | mask_4x4 | mask_4x4_int;
- mask; mask >>= count) {
- count = 1;
- if (mask & 1) {
- const loop_filter_thresh *lfi = lfthr + *lfl;
-
- if (mask_16x16 & 1) {
- if ((mask_16x16 & 3) == 3) {
- vpx_lpf_horizontal_edge_16(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- count = 2;
- } else {
- vpx_lpf_horizontal_edge_8(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- }
- } else if (mask_8x8 & 1) {
- if ((mask_8x8 & 3) == 3) {
- // Next block's thresholds.
- const loop_filter_thresh *lfin = lfthr + *(lfl + 1);
-
- vpx_lpf_horizontal_8_dual(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, lfin->mblim, lfin->lim,
- lfin->hev_thr);
-
- if ((mask_4x4_int & 3) == 3) {
- vpx_lpf_horizontal_4_dual(s + 4 * pitch, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, lfin->mblim,
- lfin->lim, lfin->hev_thr);
- } else {
- if (mask_4x4_int & 1)
- vpx_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- else if (mask_4x4_int & 2)
- vpx_lpf_horizontal_4(s + 8 + 4 * pitch, pitch, lfin->mblim,
- lfin->lim, lfin->hev_thr);
- }
- count = 2;
- } else {
- vpx_lpf_horizontal_8(s, pitch, lfi->mblim, lfi->lim, lfi->hev_thr);
-
- if (mask_4x4_int & 1)
- vpx_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- }
- } else if (mask_4x4 & 1) {
- if ((mask_4x4 & 3) == 3) {
- // Next block's thresholds.
- const loop_filter_thresh *lfin = lfthr + *(lfl + 1);
-
- vpx_lpf_horizontal_4_dual(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, lfin->mblim, lfin->lim,
- lfin->hev_thr);
- if ((mask_4x4_int & 3) == 3) {
- vpx_lpf_horizontal_4_dual(s + 4 * pitch, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, lfin->mblim,
- lfin->lim, lfin->hev_thr);
- } else {
- if (mask_4x4_int & 1)
- vpx_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- else if (mask_4x4_int & 2)
- vpx_lpf_horizontal_4(s + 8 + 4 * pitch, pitch, lfin->mblim,
- lfin->lim, lfin->hev_thr);
- }
- count = 2;
- } else {
- vpx_lpf_horizontal_4(s, pitch, lfi->mblim, lfi->lim, lfi->hev_thr);
-
- if (mask_4x4_int & 1)
- vpx_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- }
- } else {
- vpx_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr);
- }
- }
- s += 8 * count;
- lfl += count;
- mask_16x16 >>= count;
- mask_8x8 >>= count;
- mask_4x4 >>= count;
- mask_4x4_int >>= count;
- }
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void highbd_filter_selectively_horiz(uint16_t *s, int pitch,
- unsigned int mask_16x16,
- unsigned int mask_8x8,
- unsigned int mask_4x4,
- unsigned int mask_4x4_int,
- const loop_filter_thresh *lfthr,
- const uint8_t *lfl, int bd) {
- unsigned int mask;
- int count;
-
- for (mask = mask_16x16 | mask_8x8 | mask_4x4 | mask_4x4_int;
- mask; mask >>= count) {
- count = 1;
- if (mask & 1) {
- const loop_filter_thresh *lfi = lfthr + *lfl;
-
- if (mask_16x16 & 1) {
- if ((mask_16x16 & 3) == 3) {
- vpx_highbd_lpf_horizontal_edge_16(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
- count = 2;
- } else {
- vpx_highbd_lpf_horizontal_edge_8(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
- }
- } else if (mask_8x8 & 1) {
- if ((mask_8x8 & 3) == 3) {
- // Next block's thresholds.
- const loop_filter_thresh *lfin = lfthr + *(lfl + 1);
-
- vpx_highbd_lpf_horizontal_8_dual(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, lfin->mblim, lfin->lim,
- lfin->hev_thr, bd);
-
- if ((mask_4x4_int & 3) == 3) {
- vpx_highbd_lpf_horizontal_4_dual(s + 4 * pitch, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr,
- lfin->mblim, lfin->lim,
- lfin->hev_thr, bd);
- } else {
- if (mask_4x4_int & 1) {
- vpx_highbd_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, bd);
- } else if (mask_4x4_int & 2) {
- vpx_highbd_lpf_horizontal_4(s + 8 + 4 * pitch, pitch, lfin->mblim,
- lfin->lim, lfin->hev_thr, bd);
- }
- }
- count = 2;
- } else {
- vpx_highbd_lpf_horizontal_8(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
-
- if (mask_4x4_int & 1) {
- vpx_highbd_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, bd);
- }
- }
- } else if (mask_4x4 & 1) {
- if ((mask_4x4 & 3) == 3) {
- // Next block's thresholds.
- const loop_filter_thresh *lfin = lfthr + *(lfl + 1);
-
- vpx_highbd_lpf_horizontal_4_dual(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, lfin->mblim, lfin->lim,
- lfin->hev_thr, bd);
- if ((mask_4x4_int & 3) == 3) {
- vpx_highbd_lpf_horizontal_4_dual(s + 4 * pitch, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr,
- lfin->mblim, lfin->lim,
- lfin->hev_thr, bd);
- } else {
- if (mask_4x4_int & 1) {
- vpx_highbd_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, bd);
- } else if (mask_4x4_int & 2) {
- vpx_highbd_lpf_horizontal_4(s + 8 + 4 * pitch, pitch, lfin->mblim,
- lfin->lim, lfin->hev_thr, bd);
- }
- }
- count = 2;
- } else {
- vpx_highbd_lpf_horizontal_4(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
-
- if (mask_4x4_int & 1) {
- vpx_highbd_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim,
- lfi->lim, lfi->hev_thr, bd);
- }
- }
- } else {
- vpx_highbd_lpf_horizontal_4(s + 4 * pitch, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
- }
- }
- s += 8 * count;
- lfl += count;
- mask_16x16 >>= count;
- mask_8x8 >>= count;
- mask_4x4 >>= count;
- mask_4x4_int >>= count;
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-// This function ors into the current lfm structure, where to do loop
-// filters for the specific mi we are looking at. It uses information
-// including the block_size_type (32x16, 32x32, etc.), the transform size,
-// whether there were any coefficients encoded, and the loop filter strength
-// block we are currently looking at. Shift is used to position the
-// 1's we produce.
-static void build_masks(const loop_filter_info_n *const lfi_n,
- const MODE_INFO *mi, const int shift_y,
- const int shift_uv,
- LOOP_FILTER_MASK *lfm) {
- const BLOCK_SIZE block_size = mi->sb_type;
- const TX_SIZE tx_size_y = mi->tx_size;
- const TX_SIZE tx_size_uv = get_uv_tx_size_impl(tx_size_y, block_size, 1, 1);
- const int filter_level = get_filter_level(lfi_n, mi);
- uint64_t *const left_y = &lfm->left_y[tx_size_y];
- uint64_t *const above_y = &lfm->above_y[tx_size_y];
- uint64_t *const int_4x4_y = &lfm->int_4x4_y;
- uint16_t *const left_uv = &lfm->left_uv[tx_size_uv];
- uint16_t *const above_uv = &lfm->above_uv[tx_size_uv];
- uint16_t *const int_4x4_uv = &lfm->int_4x4_uv;
- int i;
-
- // If filter level is 0 we don't loop filter.
- if (!filter_level) {
- return;
- } else {
- const int w = num_8x8_blocks_wide_lookup[block_size];
- const int h = num_8x8_blocks_high_lookup[block_size];
- int index = shift_y;
- for (i = 0; i < h; i++) {
- memset(&lfm->lfl_y[index], filter_level, w);
- index += 8;
- }
- }
-
- // These set 1 in the current block size for the block size edges.
- // For instance if the block size is 32x16, we'll set:
- // above = 1111
- // 0000
- // and
- // left = 1000
- // = 1000
- // NOTE : In this example the low bit is left most ( 1000 ) is stored as
- // 1, not 8...
- //
- // U and V set things on a 16 bit scale.
- //
- *above_y |= above_prediction_mask[block_size] << shift_y;
- *above_uv |= above_prediction_mask_uv[block_size] << shift_uv;
- *left_y |= left_prediction_mask[block_size] << shift_y;
- *left_uv |= left_prediction_mask_uv[block_size] << shift_uv;
-
- // If the block has no coefficients and is not intra we skip applying
- // the loop filter on block edges.
- if (mi->skip && is_inter_block(mi))
- return;
-
- // Here we are adding a mask for the transform size. The transform
- // size mask is set to be correct for a 64x64 prediction block size. We
- // mask to match the size of the block we are working on and then shift it
- // into place..
- *above_y |= (size_mask[block_size] &
- above_64x64_txform_mask[tx_size_y]) << shift_y;
- *above_uv |= (size_mask_uv[block_size] &
- above_64x64_txform_mask_uv[tx_size_uv]) << shift_uv;
-
- *left_y |= (size_mask[block_size] &
- left_64x64_txform_mask[tx_size_y]) << shift_y;
- *left_uv |= (size_mask_uv[block_size] &
- left_64x64_txform_mask_uv[tx_size_uv]) << shift_uv;
-
- // Here we are trying to determine what to do with the internal 4x4 block
- // boundaries. These differ from the 4x4 boundaries on the outside edge of
- // an 8x8 in that the internal ones can be skipped and don't depend on
- // the prediction block size.
- if (tx_size_y == TX_4X4)
- *int_4x4_y |= size_mask[block_size] << shift_y;
-
- if (tx_size_uv == TX_4X4)
- *int_4x4_uv |= (size_mask_uv[block_size] & 0xffff) << shift_uv;
-}
-
-// This function does the same thing as the one above with the exception that
-// it only affects the y masks. It exists because for blocks < 16x16 in size,
-// we only update u and v masks on the first block.
-static void build_y_mask(const loop_filter_info_n *const lfi_n,
- const MODE_INFO *mi, const int shift_y,
- LOOP_FILTER_MASK *lfm) {
- const BLOCK_SIZE block_size = mi->sb_type;
- const TX_SIZE tx_size_y = mi->tx_size;
- const int filter_level = get_filter_level(lfi_n, mi);
- uint64_t *const left_y = &lfm->left_y[tx_size_y];
- uint64_t *const above_y = &lfm->above_y[tx_size_y];
- uint64_t *const int_4x4_y = &lfm->int_4x4_y;
- int i;
-
- if (!filter_level) {
- return;
- } else {
- const int w = num_8x8_blocks_wide_lookup[block_size];
- const int h = num_8x8_blocks_high_lookup[block_size];
- int index = shift_y;
- for (i = 0; i < h; i++) {
- memset(&lfm->lfl_y[index], filter_level, w);
- index += 8;
- }
- }
-
- *above_y |= above_prediction_mask[block_size] << shift_y;
- *left_y |= left_prediction_mask[block_size] << shift_y;
-
- if (mi->skip && is_inter_block(mi))
- return;
-
- *above_y |= (size_mask[block_size] &
- above_64x64_txform_mask[tx_size_y]) << shift_y;
-
- *left_y |= (size_mask[block_size] &
- left_64x64_txform_mask[tx_size_y]) << shift_y;
-
- if (tx_size_y == TX_4X4)
- *int_4x4_y |= size_mask[block_size] << shift_y;
-}
-
-void vp9_adjust_mask(VP9_COMMON *const cm, const int mi_row,
- const int mi_col, LOOP_FILTER_MASK *lfm) {
- int i;
-
- // The largest loopfilter we have is 16x16 so we use the 16x16 mask
- // for 32x32 transforms also.
- lfm->left_y[TX_16X16] |= lfm->left_y[TX_32X32];
- lfm->above_y[TX_16X16] |= lfm->above_y[TX_32X32];
- lfm->left_uv[TX_16X16] |= lfm->left_uv[TX_32X32];
- lfm->above_uv[TX_16X16] |= lfm->above_uv[TX_32X32];
-
- // We do at least 8 tap filter on every 32x32 even if the transform size
- // is 4x4. So if the 4x4 is set on a border pixel add it to the 8x8 and
- // remove it from the 4x4.
- lfm->left_y[TX_8X8] |= lfm->left_y[TX_4X4] & left_border;
- lfm->left_y[TX_4X4] &= ~left_border;
- lfm->above_y[TX_8X8] |= lfm->above_y[TX_4X4] & above_border;
- lfm->above_y[TX_4X4] &= ~above_border;
- lfm->left_uv[TX_8X8] |= lfm->left_uv[TX_4X4] & left_border_uv;
- lfm->left_uv[TX_4X4] &= ~left_border_uv;
- lfm->above_uv[TX_8X8] |= lfm->above_uv[TX_4X4] & above_border_uv;
- lfm->above_uv[TX_4X4] &= ~above_border_uv;
-
- // We do some special edge handling.
- if (mi_row + MI_BLOCK_SIZE > cm->mi_rows) {
- const uint64_t rows = cm->mi_rows - mi_row;
-
- // Each pixel inside the border gets a 1,
- const uint64_t mask_y = (((uint64_t) 1 << (rows << 3)) - 1);
- const uint16_t mask_uv = (((uint16_t) 1 << (((rows + 1) >> 1) << 2)) - 1);
-
- // Remove values completely outside our border.
- for (i = 0; i < TX_32X32; i++) {
- lfm->left_y[i] &= mask_y;
- lfm->above_y[i] &= mask_y;
- lfm->left_uv[i] &= mask_uv;
- lfm->above_uv[i] &= mask_uv;
- }
- lfm->int_4x4_y &= mask_y;
- lfm->int_4x4_uv &= mask_uv;
-
- // We don't apply a wide loop filter on the last uv block row. If set
- // apply the shorter one instead.
- if (rows == 1) {
- lfm->above_uv[TX_8X8] |= lfm->above_uv[TX_16X16];
- lfm->above_uv[TX_16X16] = 0;
- }
- if (rows == 5) {
- lfm->above_uv[TX_8X8] |= lfm->above_uv[TX_16X16] & 0xff00;
- lfm->above_uv[TX_16X16] &= ~(lfm->above_uv[TX_16X16] & 0xff00);
- }
- }
-
- if (mi_col + MI_BLOCK_SIZE > cm->mi_cols) {
- const uint64_t columns = cm->mi_cols - mi_col;
-
- // Each pixel inside the border gets a 1, the multiply copies the border
- // to where we need it.
- const uint64_t mask_y = (((1 << columns) - 1)) * 0x0101010101010101ULL;
- const uint16_t mask_uv = ((1 << ((columns + 1) >> 1)) - 1) * 0x1111;
-
- // Internal edges are not applied on the last column of the image so
- // we mask 1 more for the internal edges
- const uint16_t mask_uv_int = ((1 << (columns >> 1)) - 1) * 0x1111;
-
- // Remove the bits outside the image edge.
- for (i = 0; i < TX_32X32; i++) {
- lfm->left_y[i] &= mask_y;
- lfm->above_y[i] &= mask_y;
- lfm->left_uv[i] &= mask_uv;
- lfm->above_uv[i] &= mask_uv;
- }
- lfm->int_4x4_y &= mask_y;
- lfm->int_4x4_uv &= mask_uv_int;
-
- // We don't apply a wide loop filter on the last uv column. If set
- // apply the shorter one instead.
- if (columns == 1) {
- lfm->left_uv[TX_8X8] |= lfm->left_uv[TX_16X16];
- lfm->left_uv[TX_16X16] = 0;
- }
- if (columns == 5) {
- lfm->left_uv[TX_8X8] |= (lfm->left_uv[TX_16X16] & 0xcccc);
- lfm->left_uv[TX_16X16] &= ~(lfm->left_uv[TX_16X16] & 0xcccc);
- }
- }
- // We don't apply a loop filter on the first column in the image, mask that
- // out.
- if (mi_col == 0) {
- for (i = 0; i < TX_32X32; i++) {
- lfm->left_y[i] &= 0xfefefefefefefefeULL;
- lfm->left_uv[i] &= 0xeeee;
- }
- }
-
- // Assert if we try to apply 2 different loop filters at the same position.
- assert(!(lfm->left_y[TX_16X16] & lfm->left_y[TX_8X8]));
- assert(!(lfm->left_y[TX_16X16] & lfm->left_y[TX_4X4]));
- assert(!(lfm->left_y[TX_8X8] & lfm->left_y[TX_4X4]));
- assert(!(lfm->int_4x4_y & lfm->left_y[TX_16X16]));
- assert(!(lfm->left_uv[TX_16X16]&lfm->left_uv[TX_8X8]));
- assert(!(lfm->left_uv[TX_16X16] & lfm->left_uv[TX_4X4]));
- assert(!(lfm->left_uv[TX_8X8] & lfm->left_uv[TX_4X4]));
- assert(!(lfm->int_4x4_uv & lfm->left_uv[TX_16X16]));
- assert(!(lfm->above_y[TX_16X16] & lfm->above_y[TX_8X8]));
- assert(!(lfm->above_y[TX_16X16] & lfm->above_y[TX_4X4]));
- assert(!(lfm->above_y[TX_8X8] & lfm->above_y[TX_4X4]));
- assert(!(lfm->int_4x4_y & lfm->above_y[TX_16X16]));
- assert(!(lfm->above_uv[TX_16X16] & lfm->above_uv[TX_8X8]));
- assert(!(lfm->above_uv[TX_16X16] & lfm->above_uv[TX_4X4]));
- assert(!(lfm->above_uv[TX_8X8] & lfm->above_uv[TX_4X4]));
- assert(!(lfm->int_4x4_uv & lfm->above_uv[TX_16X16]));
-}
-
-// This function sets up the bit masks for the entire 64x64 region represented
-// by mi_row, mi_col.
-void vp9_setup_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
- MODE_INFO **mi, const int mode_info_stride,
- LOOP_FILTER_MASK *lfm) {
- int idx_32, idx_16, idx_8;
- const loop_filter_info_n *const lfi_n = &cm->lf_info;
- MODE_INFO **mip = mi;
- MODE_INFO **mip2 = mi;
-
- // These are offsets to the next mi in the 64x64 block. It is what gets
- // added to the mi ptr as we go through each loop. It helps us to avoid
- // setting up special row and column counters for each index. The last step
- // brings us out back to the starting position.
- const int offset_32[] = {4, (mode_info_stride << 2) - 4, 4,
- -(mode_info_stride << 2) - 4};
- const int offset_16[] = {2, (mode_info_stride << 1) - 2, 2,
- -(mode_info_stride << 1) - 2};
- const int offset[] = {1, mode_info_stride - 1, 1, -mode_info_stride - 1};
-
- // Following variables represent shifts to position the current block
- // mask over the appropriate block. A shift of 36 to the left will move
- // the bits for the final 32 by 32 block in the 64x64 up 4 rows and left
- // 4 rows to the appropriate spot.
- const int shift_32_y[] = {0, 4, 32, 36};
- const int shift_16_y[] = {0, 2, 16, 18};
- const int shift_8_y[] = {0, 1, 8, 9};
- const int shift_32_uv[] = {0, 2, 8, 10};
- const int shift_16_uv[] = {0, 1, 4, 5};
- const int max_rows = (mi_row + MI_BLOCK_SIZE > cm->mi_rows ?
- cm->mi_rows - mi_row : MI_BLOCK_SIZE);
- const int max_cols = (mi_col + MI_BLOCK_SIZE > cm->mi_cols ?
- cm->mi_cols - mi_col : MI_BLOCK_SIZE);
-
- vp9_zero(*lfm);
- assert(mip[0] != NULL);
-
- switch (mip[0]->sb_type) {
- case BLOCK_64X64:
- build_masks(lfi_n, mip[0] , 0, 0, lfm);
- break;
- case BLOCK_64X32:
- build_masks(lfi_n, mip[0], 0, 0, lfm);
- mip2 = mip + mode_info_stride * 4;
- if (4 >= max_rows)
- break;
- build_masks(lfi_n, mip2[0], 32, 8, lfm);
- break;
- case BLOCK_32X64:
- build_masks(lfi_n, mip[0], 0, 0, lfm);
- mip2 = mip + 4;
- if (4 >= max_cols)
- break;
- build_masks(lfi_n, mip2[0], 4, 2, lfm);
- break;
- default:
- for (idx_32 = 0; idx_32 < 4; mip += offset_32[idx_32], ++idx_32) {
- const int shift_y = shift_32_y[idx_32];
- const int shift_uv = shift_32_uv[idx_32];
- const int mi_32_col_offset = ((idx_32 & 1) << 2);
- const int mi_32_row_offset = ((idx_32 >> 1) << 2);
- if (mi_32_col_offset >= max_cols || mi_32_row_offset >= max_rows)
- continue;
- switch (mip[0]->sb_type) {
- case BLOCK_32X32:
- build_masks(lfi_n, mip[0], shift_y, shift_uv, lfm);
- break;
- case BLOCK_32X16:
- build_masks(lfi_n, mip[0], shift_y, shift_uv, lfm);
- if (mi_32_row_offset + 2 >= max_rows)
- continue;
- mip2 = mip + mode_info_stride * 2;
- build_masks(lfi_n, mip2[0], shift_y + 16, shift_uv + 4, lfm);
- break;
- case BLOCK_16X32:
- build_masks(lfi_n, mip[0], shift_y, shift_uv, lfm);
- if (mi_32_col_offset + 2 >= max_cols)
- continue;
- mip2 = mip + 2;
- build_masks(lfi_n, mip2[0], shift_y + 2, shift_uv + 1, lfm);
- break;
- default:
- for (idx_16 = 0; idx_16 < 4; mip += offset_16[idx_16], ++idx_16) {
- const int shift_y = shift_32_y[idx_32] + shift_16_y[idx_16];
- const int shift_uv = shift_32_uv[idx_32] + shift_16_uv[idx_16];
- const int mi_16_col_offset = mi_32_col_offset +
- ((idx_16 & 1) << 1);
- const int mi_16_row_offset = mi_32_row_offset +
- ((idx_16 >> 1) << 1);
-
- if (mi_16_col_offset >= max_cols || mi_16_row_offset >= max_rows)
- continue;
-
- switch (mip[0]->sb_type) {
- case BLOCK_16X16:
- build_masks(lfi_n, mip[0], shift_y, shift_uv, lfm);
- break;
- case BLOCK_16X8:
- build_masks(lfi_n, mip[0], shift_y, shift_uv, lfm);
- if (mi_16_row_offset + 1 >= max_rows)
- continue;
- mip2 = mip + mode_info_stride;
- build_y_mask(lfi_n, mip2[0], shift_y+8, lfm);
- break;
- case BLOCK_8X16:
- build_masks(lfi_n, mip[0], shift_y, shift_uv, lfm);
- if (mi_16_col_offset +1 >= max_cols)
- continue;
- mip2 = mip + 1;
- build_y_mask(lfi_n, mip2[0], shift_y+1, lfm);
- break;
- default: {
- const int shift_y = shift_32_y[idx_32] +
- shift_16_y[idx_16] +
- shift_8_y[0];
- build_masks(lfi_n, mip[0], shift_y, shift_uv, lfm);
- mip += offset[0];
- for (idx_8 = 1; idx_8 < 4; mip += offset[idx_8], ++idx_8) {
- const int shift_y = shift_32_y[idx_32] +
- shift_16_y[idx_16] +
- shift_8_y[idx_8];
- const int mi_8_col_offset = mi_16_col_offset +
- ((idx_8 & 1));
- const int mi_8_row_offset = mi_16_row_offset +
- ((idx_8 >> 1));
-
- if (mi_8_col_offset >= max_cols ||
- mi_8_row_offset >= max_rows)
- continue;
- build_y_mask(lfi_n, mip[0], shift_y, lfm);
- }
- break;
- }
- }
- }
- break;
- }
- }
- break;
- }
-}
-
-static void filter_selectively_vert(uint8_t *s, int pitch,
- unsigned int mask_16x16,
- unsigned int mask_8x8,
- unsigned int mask_4x4,
- unsigned int mask_4x4_int,
- const loop_filter_thresh *lfthr,
- const uint8_t *lfl) {
- unsigned int mask;
-
- for (mask = mask_16x16 | mask_8x8 | mask_4x4 | mask_4x4_int;
- mask; mask >>= 1) {
- const loop_filter_thresh *lfi = lfthr + *lfl;
-
- if (mask & 1) {
- if (mask_16x16 & 1) {
- vpx_lpf_vertical_16(s, pitch, lfi->mblim, lfi->lim, lfi->hev_thr);
- } else if (mask_8x8 & 1) {
- vpx_lpf_vertical_8(s, pitch, lfi->mblim, lfi->lim, lfi->hev_thr);
- } else if (mask_4x4 & 1) {
- vpx_lpf_vertical_4(s, pitch, lfi->mblim, lfi->lim, lfi->hev_thr);
- }
- }
- if (mask_4x4_int & 1)
- vpx_lpf_vertical_4(s + 4, pitch, lfi->mblim, lfi->lim, lfi->hev_thr);
- s += 8;
- lfl += 1;
- mask_16x16 >>= 1;
- mask_8x8 >>= 1;
- mask_4x4 >>= 1;
- mask_4x4_int >>= 1;
- }
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void highbd_filter_selectively_vert(uint16_t *s, int pitch,
- unsigned int mask_16x16,
- unsigned int mask_8x8,
- unsigned int mask_4x4,
- unsigned int mask_4x4_int,
- const loop_filter_thresh *lfthr,
- const uint8_t *lfl, int bd) {
- unsigned int mask;
-
- for (mask = mask_16x16 | mask_8x8 | mask_4x4 | mask_4x4_int;
- mask; mask >>= 1) {
- const loop_filter_thresh *lfi = lfthr + *lfl;
-
- if (mask & 1) {
- if (mask_16x16 & 1) {
- vpx_highbd_lpf_vertical_16(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
- } else if (mask_8x8 & 1) {
- vpx_highbd_lpf_vertical_8(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
- } else if (mask_4x4 & 1) {
- vpx_highbd_lpf_vertical_4(s, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
- }
- }
- if (mask_4x4_int & 1)
- vpx_highbd_lpf_vertical_4(s + 4, pitch, lfi->mblim, lfi->lim,
- lfi->hev_thr, bd);
- s += 8;
- lfl += 1;
- mask_16x16 >>= 1;
- mask_8x8 >>= 1;
- mask_4x4 >>= 1;
- mask_4x4_int >>= 1;
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-void vp9_filter_block_plane_non420(VP9_COMMON *cm,
- struct macroblockd_plane *plane,
- MODE_INFO **mi_8x8,
- int mi_row, int mi_col) {
- const int ss_x = plane->subsampling_x;
- const int ss_y = plane->subsampling_y;
- const int row_step = 1 << ss_y;
- const int col_step = 1 << ss_x;
- const int row_step_stride = cm->mi_stride * row_step;
- struct buf_2d *const dst = &plane->dst;
- uint8_t* const dst0 = dst->buf;
- unsigned int mask_16x16[MI_BLOCK_SIZE] = {0};
- unsigned int mask_8x8[MI_BLOCK_SIZE] = {0};
- unsigned int mask_4x4[MI_BLOCK_SIZE] = {0};
- unsigned int mask_4x4_int[MI_BLOCK_SIZE] = {0};
- uint8_t lfl[MI_BLOCK_SIZE * MI_BLOCK_SIZE];
- int r, c;
-
- for (r = 0; r < MI_BLOCK_SIZE && mi_row + r < cm->mi_rows; r += row_step) {
- unsigned int mask_16x16_c = 0;
- unsigned int mask_8x8_c = 0;
- unsigned int mask_4x4_c = 0;
- unsigned int border_mask;
-
- // Determine the vertical edges that need filtering
- for (c = 0; c < MI_BLOCK_SIZE && mi_col + c < cm->mi_cols; c += col_step) {
- const MODE_INFO *mi = mi_8x8[c];
- const BLOCK_SIZE sb_type = mi[0].sb_type;
- const int skip_this = mi[0].skip && is_inter_block(mi);
- // left edge of current unit is block/partition edge -> no skip
- const int block_edge_left = (num_4x4_blocks_wide_lookup[sb_type] > 1) ?
- !(c & (num_8x8_blocks_wide_lookup[sb_type] - 1)) : 1;
- const int skip_this_c = skip_this && !block_edge_left;
- // top edge of current unit is block/partition edge -> no skip
- const int block_edge_above = (num_4x4_blocks_high_lookup[sb_type] > 1) ?
- !(r & (num_8x8_blocks_high_lookup[sb_type] - 1)) : 1;
- const int skip_this_r = skip_this && !block_edge_above;
- const TX_SIZE tx_size = get_uv_tx_size(mi, plane);
- const int skip_border_4x4_c = ss_x && mi_col + c == cm->mi_cols - 1;
- const int skip_border_4x4_r = ss_y && mi_row + r == cm->mi_rows - 1;
-
- // Filter level can vary per MI
- if (!(lfl[(r << 3) + (c >> ss_x)] =
- get_filter_level(&cm->lf_info, mi)))
- continue;
-
- // Build masks based on the transform size of each block
- if (tx_size == TX_32X32) {
- if (!skip_this_c && ((c >> ss_x) & 3) == 0) {
- if (!skip_border_4x4_c)
- mask_16x16_c |= 1 << (c >> ss_x);
- else
- mask_8x8_c |= 1 << (c >> ss_x);
- }
- if (!skip_this_r && ((r >> ss_y) & 3) == 0) {
- if (!skip_border_4x4_r)
- mask_16x16[r] |= 1 << (c >> ss_x);
- else
- mask_8x8[r] |= 1 << (c >> ss_x);
- }
- } else if (tx_size == TX_16X16) {
- if (!skip_this_c && ((c >> ss_x) & 1) == 0) {
- if (!skip_border_4x4_c)
- mask_16x16_c |= 1 << (c >> ss_x);
- else
- mask_8x8_c |= 1 << (c >> ss_x);
- }
- if (!skip_this_r && ((r >> ss_y) & 1) == 0) {
- if (!skip_border_4x4_r)
- mask_16x16[r] |= 1 << (c >> ss_x);
- else
- mask_8x8[r] |= 1 << (c >> ss_x);
- }
- } else {
- // force 8x8 filtering on 32x32 boundaries
- if (!skip_this_c) {
- if (tx_size == TX_8X8 || ((c >> ss_x) & 3) == 0)
- mask_8x8_c |= 1 << (c >> ss_x);
- else
- mask_4x4_c |= 1 << (c >> ss_x);
- }
-
- if (!skip_this_r) {
- if (tx_size == TX_8X8 || ((r >> ss_y) & 3) == 0)
- mask_8x8[r] |= 1 << (c >> ss_x);
- else
- mask_4x4[r] |= 1 << (c >> ss_x);
- }
-
- if (!skip_this && tx_size < TX_8X8 && !skip_border_4x4_c)
- mask_4x4_int[r] |= 1 << (c >> ss_x);
- }
- }
-
- // Disable filtering on the leftmost column
- border_mask = ~(mi_col == 0);
-#if CONFIG_VP9_HIGHBITDEPTH
- if (cm->use_highbitdepth) {
- highbd_filter_selectively_vert(CONVERT_TO_SHORTPTR(dst->buf),
- dst->stride,
- mask_16x16_c & border_mask,
- mask_8x8_c & border_mask,
- mask_4x4_c & border_mask,
- mask_4x4_int[r],
- cm->lf_info.lfthr, &lfl[r << 3],
- (int)cm->bit_depth);
- } else {
-#endif // CONFIG_VP9_HIGHBITDEPTH
- filter_selectively_vert(dst->buf, dst->stride,
- mask_16x16_c & border_mask,
- mask_8x8_c & border_mask,
- mask_4x4_c & border_mask,
- mask_4x4_int[r],
- cm->lf_info.lfthr, &lfl[r << 3]);
-#if CONFIG_VP9_HIGHBITDEPTH
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
- dst->buf += 8 * dst->stride;
- mi_8x8 += row_step_stride;
- }
-
- // Now do horizontal pass
- dst->buf = dst0;
- for (r = 0; r < MI_BLOCK_SIZE && mi_row + r < cm->mi_rows; r += row_step) {
- const int skip_border_4x4_r = ss_y && mi_row + r == cm->mi_rows - 1;
- const unsigned int mask_4x4_int_r = skip_border_4x4_r ? 0 : mask_4x4_int[r];
-
- unsigned int mask_16x16_r;
- unsigned int mask_8x8_r;
- unsigned int mask_4x4_r;
-
- if (mi_row + r == 0) {
- mask_16x16_r = 0;
- mask_8x8_r = 0;
- mask_4x4_r = 0;
- } else {
- mask_16x16_r = mask_16x16[r];
- mask_8x8_r = mask_8x8[r];
- mask_4x4_r = mask_4x4[r];
- }
-#if CONFIG_VP9_HIGHBITDEPTH
- if (cm->use_highbitdepth) {
- highbd_filter_selectively_horiz(CONVERT_TO_SHORTPTR(dst->buf),
- dst->stride,
- mask_16x16_r,
- mask_8x8_r,
- mask_4x4_r,
- mask_4x4_int_r,
- cm->lf_info.lfthr, &lfl[r << 3],
- (int)cm->bit_depth);
- } else {
-#endif // CONFIG_VP9_HIGHBITDEPTH
- filter_selectively_horiz(dst->buf, dst->stride,
- mask_16x16_r,
- mask_8x8_r,
- mask_4x4_r,
- mask_4x4_int_r,
- cm->lf_info.lfthr, &lfl[r << 3]);
-#if CONFIG_VP9_HIGHBITDEPTH
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
- dst->buf += 8 * dst->stride;
- }
-}
-
-void vp9_filter_block_plane_ss00(VP9_COMMON *const cm,
- struct macroblockd_plane *const plane,
- int mi_row,
- LOOP_FILTER_MASK *lfm) {
- struct buf_2d *const dst = &plane->dst;
- uint8_t *const dst0 = dst->buf;
- int r;
- uint64_t mask_16x16 = lfm->left_y[TX_16X16];
- uint64_t mask_8x8 = lfm->left_y[TX_8X8];
- uint64_t mask_4x4 = lfm->left_y[TX_4X4];
- uint64_t mask_4x4_int = lfm->int_4x4_y;
-
- assert(plane->subsampling_x == 0 && plane->subsampling_y == 0);
-
- // Vertical pass: do 2 rows at one time
- for (r = 0; r < MI_BLOCK_SIZE && mi_row + r < cm->mi_rows; r += 2) {
- // Disable filtering on the leftmost column.
-#if CONFIG_VP9_HIGHBITDEPTH
- if (cm->use_highbitdepth) {
- highbd_filter_selectively_vert_row2(plane->subsampling_x,
- CONVERT_TO_SHORTPTR(dst->buf),
- dst->stride,
- (unsigned int)mask_16x16,
- (unsigned int)mask_8x8,
- (unsigned int)mask_4x4,
- (unsigned int)mask_4x4_int,
- cm->lf_info.lfthr,
- &lfm->lfl_y[r << 3],
- (int)cm->bit_depth);
- } else {
-#endif // CONFIG_VP9_HIGHBITDEPTH
- filter_selectively_vert_row2(plane->subsampling_x, dst->buf, dst->stride,
- (unsigned int)mask_16x16,
- (unsigned int)mask_8x8,
- (unsigned int)mask_4x4,
- (unsigned int)mask_4x4_int,
- cm->lf_info.lfthr, &lfm->lfl_y[r << 3]);
-#if CONFIG_VP9_HIGHBITDEPTH
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
- dst->buf += 16 * dst->stride;
- mask_16x16 >>= 16;
- mask_8x8 >>= 16;
- mask_4x4 >>= 16;
- mask_4x4_int >>= 16;
- }
-
- // Horizontal pass
- dst->buf = dst0;
- mask_16x16 = lfm->above_y[TX_16X16];
- mask_8x8 = lfm->above_y[TX_8X8];
- mask_4x4 = lfm->above_y[TX_4X4];
- mask_4x4_int = lfm->int_4x4_y;
-
- for (r = 0; r < MI_BLOCK_SIZE && mi_row + r < cm->mi_rows; r++) {
- unsigned int mask_16x16_r;
- unsigned int mask_8x8_r;
- unsigned int mask_4x4_r;
-
- if (mi_row + r == 0) {
- mask_16x16_r = 0;
- mask_8x8_r = 0;
- mask_4x4_r = 0;
- } else {
- mask_16x16_r = mask_16x16 & 0xff;
- mask_8x8_r = mask_8x8 & 0xff;
- mask_4x4_r = mask_4x4 & 0xff;
- }
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (cm->use_highbitdepth) {
- highbd_filter_selectively_horiz(CONVERT_TO_SHORTPTR(dst->buf),
- dst->stride, mask_16x16_r, mask_8x8_r,
- mask_4x4_r, mask_4x4_int & 0xff,
- cm->lf_info.lfthr, &lfm->lfl_y[r << 3],
- (int)cm->bit_depth);
- } else {
-#endif // CONFIG_VP9_HIGHBITDEPTH
- filter_selectively_horiz(dst->buf, dst->stride, mask_16x16_r, mask_8x8_r,
- mask_4x4_r, mask_4x4_int & 0xff,
- cm->lf_info.lfthr, &lfm->lfl_y[r << 3]);
-#if CONFIG_VP9_HIGHBITDEPTH
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
- dst->buf += 8 * dst->stride;
- mask_16x16 >>= 8;
- mask_8x8 >>= 8;
- mask_4x4 >>= 8;
- mask_4x4_int >>= 8;
- }
-}
-
-void vp9_filter_block_plane_ss11(VP9_COMMON *const cm,
- struct macroblockd_plane *const plane,
- int mi_row,
- LOOP_FILTER_MASK *lfm) {
- struct buf_2d *const dst = &plane->dst;
- uint8_t *const dst0 = dst->buf;
- int r, c;
- uint8_t lfl_uv[16];
-
- uint16_t mask_16x16 = lfm->left_uv[TX_16X16];
- uint16_t mask_8x8 = lfm->left_uv[TX_8X8];
- uint16_t mask_4x4 = lfm->left_uv[TX_4X4];
- uint16_t mask_4x4_int = lfm->int_4x4_uv;
-
- assert(plane->subsampling_x == 1 && plane->subsampling_y == 1);
-
- // Vertical pass: do 2 rows at one time
- for (r = 0; r < MI_BLOCK_SIZE && mi_row + r < cm->mi_rows; r += 4) {
- for (c = 0; c < (MI_BLOCK_SIZE >> 1); c++) {
- lfl_uv[(r << 1) + c] = lfm->lfl_y[(r << 3) + (c << 1)];
- lfl_uv[((r + 2) << 1) + c] = lfm->lfl_y[((r + 2) << 3) + (c << 1)];
- }
-
- // Disable filtering on the leftmost column.
-#if CONFIG_VP9_HIGHBITDEPTH
- if (cm->use_highbitdepth) {
- highbd_filter_selectively_vert_row2(plane->subsampling_x,
- CONVERT_TO_SHORTPTR(dst->buf),
- dst->stride,
- (unsigned int)mask_16x16,
- (unsigned int)mask_8x8,
- (unsigned int)mask_4x4,
- (unsigned int)mask_4x4_int,
- cm->lf_info.lfthr, &lfl_uv[r << 1],
- (int)cm->bit_depth);
- } else {
-#endif // CONFIG_VP9_HIGHBITDEPTH
- filter_selectively_vert_row2(plane->subsampling_x, dst->buf, dst->stride,
- (unsigned int)mask_16x16,
- (unsigned int)mask_8x8,
- (unsigned int)mask_4x4,
- (unsigned int)mask_4x4_int,
- cm->lf_info.lfthr, &lfl_uv[r << 1]);
-#if CONFIG_VP9_HIGHBITDEPTH
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
- dst->buf += 16 * dst->stride;
- mask_16x16 >>= 8;
- mask_8x8 >>= 8;
- mask_4x4 >>= 8;
- mask_4x4_int >>= 8;
- }
-
- // Horizontal pass
- dst->buf = dst0;
- mask_16x16 = lfm->above_uv[TX_16X16];
- mask_8x8 = lfm->above_uv[TX_8X8];
- mask_4x4 = lfm->above_uv[TX_4X4];
- mask_4x4_int = lfm->int_4x4_uv;
-
- for (r = 0; r < MI_BLOCK_SIZE && mi_row + r < cm->mi_rows; r += 2) {
- const int skip_border_4x4_r = mi_row + r == cm->mi_rows - 1;
- const unsigned int mask_4x4_int_r =
- skip_border_4x4_r ? 0 : (mask_4x4_int & 0xf);
- unsigned int mask_16x16_r;
- unsigned int mask_8x8_r;
- unsigned int mask_4x4_r;
-
- if (mi_row + r == 0) {
- mask_16x16_r = 0;
- mask_8x8_r = 0;
- mask_4x4_r = 0;
- } else {
- mask_16x16_r = mask_16x16 & 0xf;
- mask_8x8_r = mask_8x8 & 0xf;
- mask_4x4_r = mask_4x4 & 0xf;
- }
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (cm->use_highbitdepth) {
- highbd_filter_selectively_horiz(CONVERT_TO_SHORTPTR(dst->buf),
- dst->stride, mask_16x16_r, mask_8x8_r,
- mask_4x4_r, mask_4x4_int_r,
- cm->lf_info.lfthr, &lfl_uv[r << 1],
- (int)cm->bit_depth);
- } else {
-#endif // CONFIG_VP9_HIGHBITDEPTH
- filter_selectively_horiz(dst->buf, dst->stride, mask_16x16_r, mask_8x8_r,
- mask_4x4_r, mask_4x4_int_r, cm->lf_info.lfthr,
- &lfl_uv[r << 1]);
-#if CONFIG_VP9_HIGHBITDEPTH
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
- dst->buf += 8 * dst->stride;
- mask_16x16 >>= 4;
- mask_8x8 >>= 4;
- mask_4x4 >>= 4;
- mask_4x4_int >>= 4;
- }
-}
-
-static void loop_filter_rows(YV12_BUFFER_CONFIG *frame_buffer, VP9_COMMON *cm,
- struct macroblockd_plane planes[MAX_MB_PLANE],
- int start, int stop, int y_only) {
- const int num_planes = y_only ? 1 : MAX_MB_PLANE;
- enum lf_path path;
- int mi_row, mi_col;
-
- if (y_only)
- path = LF_PATH_444;
- else if (planes[1].subsampling_y == 1 && planes[1].subsampling_x == 1)
- path = LF_PATH_420;
- else if (planes[1].subsampling_y == 0 && planes[1].subsampling_x == 0)
- path = LF_PATH_444;
- else
- path = LF_PATH_SLOW;
-
- for (mi_row = start; mi_row < stop; mi_row += MI_BLOCK_SIZE) {
- MODE_INFO **mi = cm->mi_grid_visible + mi_row * cm->mi_stride;
- LOOP_FILTER_MASK *lfm = get_lfm(&cm->lf, mi_row, 0);
-
- for (mi_col = 0; mi_col < cm->mi_cols; mi_col += MI_BLOCK_SIZE, ++lfm) {
- int plane;
-
- vp9_setup_dst_planes(planes, frame_buffer, mi_row, mi_col);
-
- // TODO(jimbankoski): For 444 only need to do y mask.
- vp9_adjust_mask(cm, mi_row, mi_col, lfm);
-
- vp9_filter_block_plane_ss00(cm, &planes[0], mi_row, lfm);
- for (plane = 1; plane < num_planes; ++plane) {
- switch (path) {
- case LF_PATH_420:
- vp9_filter_block_plane_ss11(cm, &planes[plane], mi_row, lfm);
- break;
- case LF_PATH_444:
- vp9_filter_block_plane_ss00(cm, &planes[plane], mi_row, lfm);
- break;
- case LF_PATH_SLOW:
- vp9_filter_block_plane_non420(cm, &planes[plane], mi + mi_col,
- mi_row, mi_col);
- break;
- }
- }
- }
- }
-}
-
-void vp9_loop_filter_frame(YV12_BUFFER_CONFIG *frame,
- VP9_COMMON *cm, MACROBLOCKD *xd,
- int frame_filter_level,
- int y_only, int partial_frame) {
- int start_mi_row, end_mi_row, mi_rows_to_filter;
- if (!frame_filter_level) return;
- start_mi_row = 0;
- mi_rows_to_filter = cm->mi_rows;
- if (partial_frame && cm->mi_rows > 8) {
- start_mi_row = cm->mi_rows >> 1;
- start_mi_row &= 0xfffffff8;
- mi_rows_to_filter = VPXMAX(cm->mi_rows / 8, 8);
- }
- end_mi_row = start_mi_row + mi_rows_to_filter;
- loop_filter_rows(frame, cm, xd->plane, start_mi_row, end_mi_row, y_only);
-}
-
-// Used by the encoder to build the loopfilter masks.
-// TODO(slavarnway): Do the encoder the same way the decoder does it and
-// build the masks in line as part of the encode process.
-void vp9_build_mask_frame(VP9_COMMON *cm, int frame_filter_level,
- int partial_frame) {
- int start_mi_row, end_mi_row, mi_rows_to_filter;
- int mi_col, mi_row;
- if (!frame_filter_level) return;
- start_mi_row = 0;
- mi_rows_to_filter = cm->mi_rows;
- if (partial_frame && cm->mi_rows > 8) {
- start_mi_row = cm->mi_rows >> 1;
- start_mi_row &= 0xfffffff8;
- mi_rows_to_filter = VPXMAX(cm->mi_rows / 8, 8);
- }
- end_mi_row = start_mi_row + mi_rows_to_filter;
-
- vp9_loop_filter_frame_init(cm, frame_filter_level);
-
- for (mi_row = start_mi_row; mi_row < end_mi_row; mi_row += MI_BLOCK_SIZE) {
- MODE_INFO **mi = cm->mi_grid_visible + mi_row * cm->mi_stride;
- for (mi_col = 0; mi_col < cm->mi_cols; mi_col += MI_BLOCK_SIZE) {
- // vp9_setup_mask() zeros lfm
- vp9_setup_mask(cm, mi_row, mi_col, mi + mi_col, cm->mi_stride,
- get_lfm(&cm->lf, mi_row, mi_col));
- }
- }
-}
-
-// 8x8 blocks in a superblock. A "1" represents the first block in a 16x16
-// or greater area.
-static const uint8_t first_block_in_16x16[8][8] = {
- {1, 0, 1, 0, 1, 0, 1, 0},
- {0, 0, 0, 0, 0, 0, 0, 0},
- {1, 0, 1, 0, 1, 0, 1, 0},
- {0, 0, 0, 0, 0, 0, 0, 0},
- {1, 0, 1, 0, 1, 0, 1, 0},
- {0, 0, 0, 0, 0, 0, 0, 0},
- {1, 0, 1, 0, 1, 0, 1, 0},
- {0, 0, 0, 0, 0, 0, 0, 0}
-};
-
-// This function sets up the bit masks for a block represented
-// by mi_row, mi_col in a 64x64 region.
-// TODO(SJL): This function only works for yv12.
-void vp9_build_mask(VP9_COMMON *cm, const MODE_INFO *mi, int mi_row,
- int mi_col, int bw, int bh) {
- const BLOCK_SIZE block_size = mi->sb_type;
- const TX_SIZE tx_size_y = mi->tx_size;
- const loop_filter_info_n *const lfi_n = &cm->lf_info;
- const int filter_level = get_filter_level(lfi_n, mi);
- const TX_SIZE tx_size_uv = get_uv_tx_size_impl(tx_size_y, block_size, 1, 1);
- LOOP_FILTER_MASK *const lfm = get_lfm(&cm->lf, mi_row, mi_col);
- uint64_t *const left_y = &lfm->left_y[tx_size_y];
- uint64_t *const above_y = &lfm->above_y[tx_size_y];
- uint64_t *const int_4x4_y = &lfm->int_4x4_y;
- uint16_t *const left_uv = &lfm->left_uv[tx_size_uv];
- uint16_t *const above_uv = &lfm->above_uv[tx_size_uv];
- uint16_t *const int_4x4_uv = &lfm->int_4x4_uv;
- const int row_in_sb = (mi_row & 7);
- const int col_in_sb = (mi_col & 7);
- const int shift_y = col_in_sb + (row_in_sb << 3);
- const int shift_uv = (col_in_sb >> 1) + ((row_in_sb >> 1) << 2);
- const int build_uv = first_block_in_16x16[row_in_sb][col_in_sb];
-
- if (!filter_level) {
- return;
- } else {
- int index = shift_y;
- int i;
- for (i = 0; i < bh; i++) {
- memset(&lfm->lfl_y[index], filter_level, bw);
- index += 8;
- }
- }
-
- // These set 1 in the current block size for the block size edges.
- // For instance if the block size is 32x16, we'll set:
- // above = 1111
- // 0000
- // and
- // left = 1000
- // = 1000
- // NOTE : In this example the low bit is left most ( 1000 ) is stored as
- // 1, not 8...
- //
- // U and V set things on a 16 bit scale.
- //
- *above_y |= above_prediction_mask[block_size] << shift_y;
- *left_y |= left_prediction_mask[block_size] << shift_y;
-
- if (build_uv) {
- *above_uv |= above_prediction_mask_uv[block_size] << shift_uv;
- *left_uv |= left_prediction_mask_uv[block_size] << shift_uv;
- }
-
- // If the block has no coefficients and is not intra we skip applying
- // the loop filter on block edges.
- if (mi->skip && is_inter_block(mi))
- return;
-
- // Add a mask for the transform size. The transform size mask is set to
- // be correct for a 64x64 prediction block size. Mask to match the size of
- // the block we are working on and then shift it into place.
- *above_y |= (size_mask[block_size] &
- above_64x64_txform_mask[tx_size_y]) << shift_y;
- *left_y |= (size_mask[block_size] &
- left_64x64_txform_mask[tx_size_y]) << shift_y;
-
- if (build_uv) {
- *above_uv |= (size_mask_uv[block_size] &
- above_64x64_txform_mask_uv[tx_size_uv]) << shift_uv;
-
- *left_uv |= (size_mask_uv[block_size] &
- left_64x64_txform_mask_uv[tx_size_uv]) << shift_uv;
- }
-
- // Try to determine what to do with the internal 4x4 block boundaries. These
- // differ from the 4x4 boundaries on the outside edge of an 8x8 in that the
- // internal ones can be skipped and don't depend on the prediction block size.
- if (tx_size_y == TX_4X4)
- *int_4x4_y |= size_mask[block_size] << shift_y;
-
- if (build_uv && tx_size_uv == TX_4X4)
- *int_4x4_uv |= (size_mask_uv[block_size] & 0xffff) << shift_uv;
-}
-
-void vp9_loop_filter_data_reset(
- LFWorkerData *lf_data, YV12_BUFFER_CONFIG *frame_buffer,
- struct VP9Common *cm, const struct macroblockd_plane planes[MAX_MB_PLANE]) {
- lf_data->frame_buffer = frame_buffer;
- lf_data->cm = cm;
- lf_data->start = 0;
- lf_data->stop = 0;
- lf_data->y_only = 0;
- memcpy(lf_data->planes, planes, sizeof(lf_data->planes));
-}
-
-void vp9_reset_lfm(VP9_COMMON *const cm) {
- if (cm->lf.filter_level) {
- memset(cm->lf.lfm, 0,
- ((cm->mi_rows + (MI_BLOCK_SIZE - 1)) >> 3) * cm->lf.lfm_stride *
- sizeof(*cm->lf.lfm));
- }
-}
-
-int vp9_loop_filter_worker(LFWorkerData *const lf_data, void *unused) {
- (void)unused;
- loop_filter_rows(lf_data->frame_buffer, lf_data->cm, lf_data->planes,
- lf_data->start, lf_data->stop, lf_data->y_only);
- return 1;
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_loopfilter.h b/thirdparty/libvpx/vp9/common/vp9_loopfilter.h
deleted file mode 100644
index fca8830fa1..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_loopfilter.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_LOOPFILTER_H_
-#define VP9_COMMON_VP9_LOOPFILTER_H_
-
-#include "vpx_ports/mem.h"
-#include "./vpx_config.h"
-
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_seg_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MAX_LOOP_FILTER 63
-#define MAX_SHARPNESS 7
-
-#define SIMD_WIDTH 16
-
-#define MAX_REF_LF_DELTAS 4
-#define MAX_MODE_LF_DELTAS 2
-
-enum lf_path {
- LF_PATH_420,
- LF_PATH_444,
- LF_PATH_SLOW,
-};
-
-// Need to align this structure so when it is declared and
-// passed it can be loaded into vector registers.
-typedef struct {
- DECLARE_ALIGNED(SIMD_WIDTH, uint8_t, mblim[SIMD_WIDTH]);
- DECLARE_ALIGNED(SIMD_WIDTH, uint8_t, lim[SIMD_WIDTH]);
- DECLARE_ALIGNED(SIMD_WIDTH, uint8_t, hev_thr[SIMD_WIDTH]);
-} loop_filter_thresh;
-
-typedef struct {
- loop_filter_thresh lfthr[MAX_LOOP_FILTER + 1];
- uint8_t lvl[MAX_SEGMENTS][MAX_REF_FRAMES][MAX_MODE_LF_DELTAS];
-} loop_filter_info_n;
-
-// This structure holds bit masks for all 8x8 blocks in a 64x64 region.
-// Each 1 bit represents a position in which we want to apply the loop filter.
-// Left_ entries refer to whether we apply a filter on the border to the
-// left of the block. Above_ entries refer to whether or not to apply a
-// filter on the above border. Int_ entries refer to whether or not to
-// apply borders on the 4x4 edges within the 8x8 block that each bit
-// represents.
-// Since each transform is accompanied by a potentially different type of
-// loop filter there is a different entry in the array for each transform size.
-typedef struct {
- uint64_t left_y[TX_SIZES];
- uint64_t above_y[TX_SIZES];
- uint64_t int_4x4_y;
- uint16_t left_uv[TX_SIZES];
- uint16_t above_uv[TX_SIZES];
- uint16_t int_4x4_uv;
- uint8_t lfl_y[64];
-} LOOP_FILTER_MASK;
-
-struct loopfilter {
- int filter_level;
- int last_filt_level;
-
- int sharpness_level;
- int last_sharpness_level;
-
- uint8_t mode_ref_delta_enabled;
- uint8_t mode_ref_delta_update;
-
- // 0 = Intra, Last, GF, ARF
- signed char ref_deltas[MAX_REF_LF_DELTAS];
- signed char last_ref_deltas[MAX_REF_LF_DELTAS];
-
- // 0 = ZERO_MV, MV
- signed char mode_deltas[MAX_MODE_LF_DELTAS];
- signed char last_mode_deltas[MAX_MODE_LF_DELTAS];
-
- LOOP_FILTER_MASK *lfm;
- int lfm_stride;
-};
-
-/* assorted loopfilter functions which get used elsewhere */
-struct VP9Common;
-struct macroblockd;
-struct VP9LfSyncData;
-
-// This function sets up the bit masks for the entire 64x64 region represented
-// by mi_row, mi_col.
-void vp9_setup_mask(struct VP9Common *const cm,
- const int mi_row, const int mi_col,
- MODE_INFO **mi_8x8, const int mode_info_stride,
- LOOP_FILTER_MASK *lfm);
-
-void vp9_filter_block_plane_ss00(struct VP9Common *const cm,
- struct macroblockd_plane *const plane,
- int mi_row,
- LOOP_FILTER_MASK *lfm);
-
-void vp9_filter_block_plane_ss11(struct VP9Common *const cm,
- struct macroblockd_plane *const plane,
- int mi_row,
- LOOP_FILTER_MASK *lfm);
-
-void vp9_filter_block_plane_non420(struct VP9Common *cm,
- struct macroblockd_plane *plane,
- MODE_INFO **mi_8x8,
- int mi_row, int mi_col);
-
-void vp9_loop_filter_init(struct VP9Common *cm);
-
-// Update the loop filter for the current frame.
-// This should be called before vp9_loop_filter_frame(), vp9_build_mask_frame()
-// calls this function directly.
-void vp9_loop_filter_frame_init(struct VP9Common *cm, int default_filt_lvl);
-
-void vp9_loop_filter_frame(YV12_BUFFER_CONFIG *frame,
- struct VP9Common *cm,
- struct macroblockd *mbd,
- int filter_level,
- int y_only, int partial_frame);
-
-// Get the superblock lfm for a given mi_row, mi_col.
-static INLINE LOOP_FILTER_MASK *get_lfm(const struct loopfilter *lf,
- const int mi_row, const int mi_col) {
- return &lf->lfm[(mi_col >> 3) + ((mi_row >> 3) * lf->lfm_stride)];
-}
-
-void vp9_build_mask(struct VP9Common *cm, const MODE_INFO *mi, int mi_row,
- int mi_col, int bw, int bh);
-void vp9_adjust_mask(struct VP9Common *const cm, const int mi_row,
- const int mi_col, LOOP_FILTER_MASK *lfm);
-void vp9_build_mask_frame(struct VP9Common *cm, int frame_filter_level,
- int partial_frame);
-void vp9_reset_lfm(struct VP9Common *const cm);
-
-typedef struct LoopFilterWorkerData {
- YV12_BUFFER_CONFIG *frame_buffer;
- struct VP9Common *cm;
- struct macroblockd_plane planes[MAX_MB_PLANE];
-
- int start;
- int stop;
- int y_only;
-} LFWorkerData;
-
-void vp9_loop_filter_data_reset(
- LFWorkerData *lf_data, YV12_BUFFER_CONFIG *frame_buffer,
- struct VP9Common *cm, const struct macroblockd_plane planes[MAX_MB_PLANE]);
-
-// Operates on the rows described by 'lf_data'.
-int vp9_loop_filter_worker(LFWorkerData *const lf_data, void *unused);
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_LOOPFILTER_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_mv.h b/thirdparty/libvpx/vp9/common/vp9_mv.h
deleted file mode 100644
index 5d89da8c25..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_mv.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_MV_H_
-#define VP9_COMMON_VP9_MV_H_
-
-#include "vpx/vpx_integer.h"
-
-#include "vp9/common/vp9_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct mv {
- int16_t row;
- int16_t col;
-} MV;
-
-typedef union int_mv {
- uint32_t as_int;
- MV as_mv;
-} int_mv; /* facilitates faster equality tests and copies */
-
-typedef struct mv32 {
- int32_t row;
- int32_t col;
-} MV32;
-
-static INLINE int is_zero_mv(const MV *mv) {
- return *((const uint32_t *)mv) == 0;
-}
-
-static INLINE int is_equal_mv(const MV *a, const MV *b) {
- return *((const uint32_t *)a) == *((const uint32_t *)b);
-}
-
-static INLINE void clamp_mv(MV *mv, int min_col, int max_col,
- int min_row, int max_row) {
- mv->col = clamp(mv->col, min_col, max_col);
- mv->row = clamp(mv->row, min_row, max_row);
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_MV_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_mvref_common.c b/thirdparty/libvpx/vp9/common/vp9_mvref_common.c
deleted file mode 100644
index 0eb01a51ba..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_mvref_common.c
+++ /dev/null
@@ -1,201 +0,0 @@
-
-/*
- * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp9/common/vp9_mvref_common.h"
-
-// This function searches the neighborhood of a given MB/SB
-// to try and find candidate reference vectors.
-static void find_mv_refs_idx(const VP9_COMMON *cm, const MACROBLOCKD *xd,
- MODE_INFO *mi, MV_REFERENCE_FRAME ref_frame,
- int_mv *mv_ref_list,
- int block, int mi_row, int mi_col,
- uint8_t *mode_context) {
- const int *ref_sign_bias = cm->ref_frame_sign_bias;
- int i, refmv_count = 0;
- const POSITION *const mv_ref_search = mv_ref_blocks[mi->sb_type];
- int different_ref_found = 0;
- int context_counter = 0;
- const MV_REF *const prev_frame_mvs = cm->use_prev_frame_mvs ?
- cm->prev_frame->mvs + mi_row * cm->mi_cols + mi_col : NULL;
- const TileInfo *const tile = &xd->tile;
-
- // Blank the reference vector list
- memset(mv_ref_list, 0, sizeof(*mv_ref_list) * MAX_MV_REF_CANDIDATES);
-
- // The nearest 2 blocks are treated differently
- // if the size < 8x8 we get the mv from the bmi substructure,
- // and we also need to keep a mode count.
- for (i = 0; i < 2; ++i) {
- const POSITION *const mv_ref = &mv_ref_search[i];
- if (is_inside(tile, mi_col, mi_row, cm->mi_rows, mv_ref)) {
- const MODE_INFO *const candidate_mi = xd->mi[mv_ref->col + mv_ref->row *
- xd->mi_stride];
- // Keep counts for entropy encoding.
- context_counter += mode_2_counter[candidate_mi->mode];
- different_ref_found = 1;
-
- if (candidate_mi->ref_frame[0] == ref_frame)
- ADD_MV_REF_LIST(get_sub_block_mv(candidate_mi, 0, mv_ref->col, block),
- refmv_count, mv_ref_list, Done);
- else if (candidate_mi->ref_frame[1] == ref_frame)
- ADD_MV_REF_LIST(get_sub_block_mv(candidate_mi, 1, mv_ref->col, block),
- refmv_count, mv_ref_list, Done);
- }
- }
-
- // Check the rest of the neighbors in much the same way
- // as before except we don't need to keep track of sub blocks or
- // mode counts.
- for (; i < MVREF_NEIGHBOURS; ++i) {
- const POSITION *const mv_ref = &mv_ref_search[i];
- if (is_inside(tile, mi_col, mi_row, cm->mi_rows, mv_ref)) {
- const MODE_INFO *const candidate_mi =
- xd->mi[mv_ref->col + mv_ref->row * xd->mi_stride];
- different_ref_found = 1;
-
- if (candidate_mi->ref_frame[0] == ref_frame)
- ADD_MV_REF_LIST(candidate_mi->mv[0], refmv_count, mv_ref_list, Done);
- else if (candidate_mi->ref_frame[1] == ref_frame)
- ADD_MV_REF_LIST(candidate_mi->mv[1], refmv_count, mv_ref_list, Done);
- }
- }
-
- // Check the last frame's mode and mv info.
- if (cm->use_prev_frame_mvs) {
- if (prev_frame_mvs->ref_frame[0] == ref_frame) {
- ADD_MV_REF_LIST(prev_frame_mvs->mv[0], refmv_count, mv_ref_list, Done);
- } else if (prev_frame_mvs->ref_frame[1] == ref_frame) {
- ADD_MV_REF_LIST(prev_frame_mvs->mv[1], refmv_count, mv_ref_list, Done);
- }
- }
-
- // Since we couldn't find 2 mvs from the same reference frame
- // go back through the neighbors and find motion vectors from
- // different reference frames.
- if (different_ref_found) {
- for (i = 0; i < MVREF_NEIGHBOURS; ++i) {
- const POSITION *mv_ref = &mv_ref_search[i];
- if (is_inside(tile, mi_col, mi_row, cm->mi_rows, mv_ref)) {
- const MODE_INFO *const candidate_mi =
- xd->mi[mv_ref->col + mv_ref->row * xd->mi_stride];
-
- // If the candidate is INTRA we don't want to consider its mv.
- IF_DIFF_REF_FRAME_ADD_MV(candidate_mi, ref_frame, ref_sign_bias,
- refmv_count, mv_ref_list, Done);
- }
- }
- }
-
- // Since we still don't have a candidate we'll try the last frame.
- if (cm->use_prev_frame_mvs) {
- if (prev_frame_mvs->ref_frame[0] != ref_frame &&
- prev_frame_mvs->ref_frame[0] > INTRA_FRAME) {
- int_mv mv = prev_frame_mvs->mv[0];
- if (ref_sign_bias[prev_frame_mvs->ref_frame[0]] !=
- ref_sign_bias[ref_frame]) {
- mv.as_mv.row *= -1;
- mv.as_mv.col *= -1;
- }
- ADD_MV_REF_LIST(mv, refmv_count, mv_ref_list, Done);
- }
-
- if (prev_frame_mvs->ref_frame[1] > INTRA_FRAME &&
- prev_frame_mvs->ref_frame[1] != ref_frame &&
- prev_frame_mvs->mv[1].as_int != prev_frame_mvs->mv[0].as_int) {
- int_mv mv = prev_frame_mvs->mv[1];
- if (ref_sign_bias[prev_frame_mvs->ref_frame[1]] !=
- ref_sign_bias[ref_frame]) {
- mv.as_mv.row *= -1;
- mv.as_mv.col *= -1;
- }
- ADD_MV_REF_LIST(mv, refmv_count, mv_ref_list, Done);
- }
- }
-
- Done:
-
- mode_context[ref_frame] = counter_to_context[context_counter];
-
- // Clamp vectors
- for (i = 0; i < MAX_MV_REF_CANDIDATES; ++i)
- clamp_mv_ref(&mv_ref_list[i].as_mv, xd);
-}
-
-void vp9_find_mv_refs(const VP9_COMMON *cm, const MACROBLOCKD *xd,
- MODE_INFO *mi, MV_REFERENCE_FRAME ref_frame,
- int_mv *mv_ref_list,
- int mi_row, int mi_col,
- uint8_t *mode_context) {
- find_mv_refs_idx(cm, xd, mi, ref_frame, mv_ref_list, -1,
- mi_row, mi_col, mode_context);
-}
-
-void vp9_find_best_ref_mvs(MACROBLOCKD *xd, int allow_hp,
- int_mv *mvlist, int_mv *nearest_mv,
- int_mv *near_mv) {
- int i;
- // Make sure all the candidates are properly clamped etc
- for (i = 0; i < MAX_MV_REF_CANDIDATES; ++i) {
- lower_mv_precision(&mvlist[i].as_mv, allow_hp);
- clamp_mv2(&mvlist[i].as_mv, xd);
- }
- *nearest_mv = mvlist[0];
- *near_mv = mvlist[1];
-}
-
-void vp9_append_sub8x8_mvs_for_idx(VP9_COMMON *cm, MACROBLOCKD *xd,
- int block, int ref, int mi_row, int mi_col,
- int_mv *nearest_mv, int_mv *near_mv,
- uint8_t *mode_context) {
- int_mv mv_list[MAX_MV_REF_CANDIDATES];
- MODE_INFO *const mi = xd->mi[0];
- b_mode_info *bmi = mi->bmi;
- int n;
-
- assert(MAX_MV_REF_CANDIDATES == 2);
-
- find_mv_refs_idx(cm, xd, mi, mi->ref_frame[ref], mv_list, block,
- mi_row, mi_col, mode_context);
-
- near_mv->as_int = 0;
- switch (block) {
- case 0:
- nearest_mv->as_int = mv_list[0].as_int;
- near_mv->as_int = mv_list[1].as_int;
- break;
- case 1:
- case 2:
- nearest_mv->as_int = bmi[0].as_mv[ref].as_int;
- for (n = 0; n < MAX_MV_REF_CANDIDATES; ++n)
- if (nearest_mv->as_int != mv_list[n].as_int) {
- near_mv->as_int = mv_list[n].as_int;
- break;
- }
- break;
- case 3: {
- int_mv candidates[2 + MAX_MV_REF_CANDIDATES];
- candidates[0] = bmi[1].as_mv[ref];
- candidates[1] = bmi[0].as_mv[ref];
- candidates[2] = mv_list[0];
- candidates[3] = mv_list[1];
-
- nearest_mv->as_int = bmi[2].as_mv[ref].as_int;
- for (n = 0; n < 2 + MAX_MV_REF_CANDIDATES; ++n)
- if (nearest_mv->as_int != candidates[n].as_int) {
- near_mv->as_int = candidates[n].as_int;
- break;
- }
- break;
- }
- default:
- assert(0 && "Invalid block index.");
- }
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_mvref_common.h b/thirdparty/libvpx/vp9/common/vp9_mvref_common.h
deleted file mode 100644
index 4380843e24..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_mvref_common.h
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef VP9_COMMON_VP9_MVREF_COMMON_H_
-#define VP9_COMMON_VP9_MVREF_COMMON_H_
-
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vp9/common/vp9_blockd.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define LEFT_TOP_MARGIN ((VP9_ENC_BORDER_IN_PIXELS - VP9_INTERP_EXTEND) << 3)
-#define RIGHT_BOTTOM_MARGIN ((VP9_ENC_BORDER_IN_PIXELS -\
- VP9_INTERP_EXTEND) << 3)
-
-#define MVREF_NEIGHBOURS 8
-
-typedef struct position {
- int row;
- int col;
-} POSITION;
-
-typedef enum {
- BOTH_ZERO = 0,
- ZERO_PLUS_PREDICTED = 1,
- BOTH_PREDICTED = 2,
- NEW_PLUS_NON_INTRA = 3,
- BOTH_NEW = 4,
- INTRA_PLUS_NON_INTRA = 5,
- BOTH_INTRA = 6,
- INVALID_CASE = 9
-} motion_vector_context;
-
-// This is used to figure out a context for the ref blocks. The code flattens
-// an array that would have 3 possible counts (0, 1 & 2) for 3 choices by
-// adding 9 for each intra block, 3 for each zero mv and 1 for each new
-// motion vector. This single number is then converted into a context
-// with a single lookup ( counter_to_context ).
-static const int mode_2_counter[MB_MODE_COUNT] = {
- 9, // DC_PRED
- 9, // V_PRED
- 9, // H_PRED
- 9, // D45_PRED
- 9, // D135_PRED
- 9, // D117_PRED
- 9, // D153_PRED
- 9, // D207_PRED
- 9, // D63_PRED
- 9, // TM_PRED
- 0, // NEARESTMV
- 0, // NEARMV
- 3, // ZEROMV
- 1, // NEWMV
-};
-
-// There are 3^3 different combinations of 3 counts that can be either 0,1 or
-// 2. However the actual count can never be greater than 2 so the highest
-// counter we need is 18. 9 is an invalid counter that's never used.
-static const int counter_to_context[19] = {
- BOTH_PREDICTED, // 0
- NEW_PLUS_NON_INTRA, // 1
- BOTH_NEW, // 2
- ZERO_PLUS_PREDICTED, // 3
- NEW_PLUS_NON_INTRA, // 4
- INVALID_CASE, // 5
- BOTH_ZERO, // 6
- INVALID_CASE, // 7
- INVALID_CASE, // 8
- INTRA_PLUS_NON_INTRA, // 9
- INTRA_PLUS_NON_INTRA, // 10
- INVALID_CASE, // 11
- INTRA_PLUS_NON_INTRA, // 12
- INVALID_CASE, // 13
- INVALID_CASE, // 14
- INVALID_CASE, // 15
- INVALID_CASE, // 16
- INVALID_CASE, // 17
- BOTH_INTRA // 18
-};
-
-static const POSITION mv_ref_blocks[BLOCK_SIZES][MVREF_NEIGHBOURS] = {
- // 4X4
- {{-1, 0}, {0, -1}, {-1, -1}, {-2, 0}, {0, -2}, {-2, -1}, {-1, -2}, {-2, -2}},
- // 4X8
- {{-1, 0}, {0, -1}, {-1, -1}, {-2, 0}, {0, -2}, {-2, -1}, {-1, -2}, {-2, -2}},
- // 8X4
- {{-1, 0}, {0, -1}, {-1, -1}, {-2, 0}, {0, -2}, {-2, -1}, {-1, -2}, {-2, -2}},
- // 8X8
- {{-1, 0}, {0, -1}, {-1, -1}, {-2, 0}, {0, -2}, {-2, -1}, {-1, -2}, {-2, -2}},
- // 8X16
- {{0, -1}, {-1, 0}, {1, -1}, {-1, -1}, {0, -2}, {-2, 0}, {-2, -1}, {-1, -2}},
- // 16X8
- {{-1, 0}, {0, -1}, {-1, 1}, {-1, -1}, {-2, 0}, {0, -2}, {-1, -2}, {-2, -1}},
- // 16X16
- {{-1, 0}, {0, -1}, {-1, 1}, {1, -1}, {-1, -1}, {-3, 0}, {0, -3}, {-3, -3}},
- // 16X32
- {{0, -1}, {-1, 0}, {2, -1}, {-1, -1}, {-1, 1}, {0, -3}, {-3, 0}, {-3, -3}},
- // 32X16
- {{-1, 0}, {0, -1}, {-1, 2}, {-1, -1}, {1, -1}, {-3, 0}, {0, -3}, {-3, -3}},
- // 32X32
- {{-1, 1}, {1, -1}, {-1, 2}, {2, -1}, {-1, -1}, {-3, 0}, {0, -3}, {-3, -3}},
- // 32X64
- {{0, -1}, {-1, 0}, {4, -1}, {-1, 2}, {-1, -1}, {0, -3}, {-3, 0}, {2, -1}},
- // 64X32
- {{-1, 0}, {0, -1}, {-1, 4}, {2, -1}, {-1, -1}, {-3, 0}, {0, -3}, {-1, 2}},
- // 64X64
- {{-1, 3}, {3, -1}, {-1, 4}, {4, -1}, {-1, -1}, {-1, 0}, {0, -1}, {-1, 6}}
-};
-
-static const int idx_n_column_to_subblock[4][2] = {
- {1, 2},
- {1, 3},
- {3, 2},
- {3, 3}
-};
-
-// clamp_mv_ref
-#define MV_BORDER (16 << 3) // Allow 16 pels in 1/8th pel units
-
-static INLINE void clamp_mv_ref(MV *mv, const MACROBLOCKD *xd) {
- clamp_mv(mv, xd->mb_to_left_edge - MV_BORDER,
- xd->mb_to_right_edge + MV_BORDER,
- xd->mb_to_top_edge - MV_BORDER,
- xd->mb_to_bottom_edge + MV_BORDER);
-}
-
-// This function returns either the appropriate sub block or block's mv
-// on whether the block_size < 8x8 and we have check_sub_blocks set.
-static INLINE int_mv get_sub_block_mv(const MODE_INFO *candidate, int which_mv,
- int search_col, int block_idx) {
- return block_idx >= 0 && candidate->sb_type < BLOCK_8X8
- ? candidate->bmi[idx_n_column_to_subblock[block_idx][search_col == 0]]
- .as_mv[which_mv]
- : candidate->mv[which_mv];
-}
-
-
-// Performs mv sign inversion if indicated by the reference frame combination.
-static INLINE int_mv scale_mv(const MODE_INFO *mi, int ref,
- const MV_REFERENCE_FRAME this_ref_frame,
- const int *ref_sign_bias) {
- int_mv mv = mi->mv[ref];
- if (ref_sign_bias[mi->ref_frame[ref]] != ref_sign_bias[this_ref_frame]) {
- mv.as_mv.row *= -1;
- mv.as_mv.col *= -1;
- }
- return mv;
-}
-
-// This macro is used to add a motion vector mv_ref list if it isn't
-// already in the list. If it's the second motion vector it will also
-// skip all additional processing and jump to Done!
-#define ADD_MV_REF_LIST(mv, refmv_count, mv_ref_list, Done) \
- do { \
- if (refmv_count) { \
- if ((mv).as_int != (mv_ref_list)[0].as_int) { \
- (mv_ref_list)[(refmv_count)] = (mv); \
- goto Done; \
- } \
- } else { \
- (mv_ref_list)[(refmv_count)++] = (mv); \
- } \
- } while (0)
-
-// If either reference frame is different, not INTRA, and they
-// are different from each other scale and add the mv to our list.
-#define IF_DIFF_REF_FRAME_ADD_MV(mbmi, ref_frame, ref_sign_bias, refmv_count, \
- mv_ref_list, Done) \
- do { \
- if (is_inter_block(mbmi)) { \
- if ((mbmi)->ref_frame[0] != ref_frame) \
- ADD_MV_REF_LIST(scale_mv((mbmi), 0, ref_frame, ref_sign_bias), \
- refmv_count, mv_ref_list, Done); \
- if (has_second_ref(mbmi) && \
- (mbmi)->ref_frame[1] != ref_frame && \
- (mbmi)->mv[1].as_int != (mbmi)->mv[0].as_int) \
- ADD_MV_REF_LIST(scale_mv((mbmi), 1, ref_frame, ref_sign_bias), \
- refmv_count, mv_ref_list, Done); \
- } \
- } while (0)
-
-
-// Checks that the given mi_row, mi_col and search point
-// are inside the borders of the tile.
-static INLINE int is_inside(const TileInfo *const tile,
- int mi_col, int mi_row, int mi_rows,
- const POSITION *mi_pos) {
- return !(mi_row + mi_pos->row < 0 ||
- mi_col + mi_pos->col < tile->mi_col_start ||
- mi_row + mi_pos->row >= mi_rows ||
- mi_col + mi_pos->col >= tile->mi_col_end);
-}
-
-// TODO(jingning): this mv clamping function should be block size dependent.
-static INLINE void clamp_mv2(MV *mv, const MACROBLOCKD *xd) {
- clamp_mv(mv, xd->mb_to_left_edge - LEFT_TOP_MARGIN,
- xd->mb_to_right_edge + RIGHT_BOTTOM_MARGIN,
- xd->mb_to_top_edge - LEFT_TOP_MARGIN,
- xd->mb_to_bottom_edge + RIGHT_BOTTOM_MARGIN);
-}
-
-static INLINE void lower_mv_precision(MV *mv, int allow_hp) {
- const int use_hp = allow_hp && use_mv_hp(mv);
- if (!use_hp) {
- if (mv->row & 1)
- mv->row += (mv->row > 0 ? -1 : 1);
- if (mv->col & 1)
- mv->col += (mv->col > 0 ? -1 : 1);
- }
-}
-
-typedef void (*find_mv_refs_sync)(void *const data, int mi_row);
-void vp9_find_mv_refs(const VP9_COMMON *cm, const MACROBLOCKD *xd,
- MODE_INFO *mi, MV_REFERENCE_FRAME ref_frame,
- int_mv *mv_ref_list, int mi_row, int mi_col,
- uint8_t *mode_context);
-
-// check a list of motion vectors by sad score using a number rows of pixels
-// above and a number cols of pixels in the left to select the one with best
-// score to use as ref motion vector
-void vp9_find_best_ref_mvs(MACROBLOCKD *xd, int allow_hp,
- int_mv *mvlist, int_mv *nearest_mv, int_mv *near_mv);
-
-void vp9_append_sub8x8_mvs_for_idx(VP9_COMMON *cm, MACROBLOCKD *xd,
- int block, int ref, int mi_row, int mi_col,
- int_mv *nearest_mv, int_mv *near_mv,
- uint8_t *mode_context);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_MVREF_COMMON_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_onyxc_int.h b/thirdparty/libvpx/vp9/common/vp9_onyxc_int.h
deleted file mode 100644
index 3fd935e628..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_onyxc_int.h
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_ONYXC_INT_H_
-#define VP9_COMMON_VP9_ONYXC_INT_H_
-
-#include "./vpx_config.h"
-#include "vpx/internal/vpx_codec_internal.h"
-#include "vpx_util/vpx_thread.h"
-#include "./vp9_rtcd.h"
-#include "vp9/common/vp9_alloccommon.h"
-#include "vp9/common/vp9_loopfilter.h"
-#include "vp9/common/vp9_entropymv.h"
-#include "vp9/common/vp9_entropy.h"
-#include "vp9/common/vp9_entropymode.h"
-#include "vp9/common/vp9_frame_buffers.h"
-#include "vp9/common/vp9_quant_common.h"
-#include "vp9/common/vp9_tile_common.h"
-
-#if CONFIG_VP9_POSTPROC
-#include "vp9/common/vp9_postproc.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define REFS_PER_FRAME 3
-
-#define REF_FRAMES_LOG2 3
-#define REF_FRAMES (1 << REF_FRAMES_LOG2)
-
-// 4 scratch frames for the new frames to support a maximum of 4 cores decoding
-// in parallel, 3 for scaled references on the encoder.
-// TODO(hkuang): Add ondemand frame buffers instead of hardcoding the number
-// of framebuffers.
-// TODO(jkoleszar): These 3 extra references could probably come from the
-// normal reference pool.
-#define FRAME_BUFFERS (REF_FRAMES + 7)
-
-#define FRAME_CONTEXTS_LOG2 2
-#define FRAME_CONTEXTS (1 << FRAME_CONTEXTS_LOG2)
-
-#define NUM_PING_PONG_BUFFERS 2
-
-extern const struct {
- PARTITION_CONTEXT above;
- PARTITION_CONTEXT left;
-} partition_context_lookup[BLOCK_SIZES];
-
-
-typedef enum {
- SINGLE_REFERENCE = 0,
- COMPOUND_REFERENCE = 1,
- REFERENCE_MODE_SELECT = 2,
- REFERENCE_MODES = 3,
-} REFERENCE_MODE;
-
-typedef struct {
- int_mv mv[2];
- MV_REFERENCE_FRAME ref_frame[2];
-} MV_REF;
-
-typedef struct {
- int ref_count;
- MV_REF *mvs;
- int mi_rows;
- int mi_cols;
- vpx_codec_frame_buffer_t raw_frame_buffer;
- YV12_BUFFER_CONFIG buf;
-
- // The Following variables will only be used in frame parallel decode.
-
- // frame_worker_owner indicates which FrameWorker owns this buffer. NULL means
- // that no FrameWorker owns, or is decoding, this buffer.
- VPxWorker *frame_worker_owner;
-
- // row and col indicate which position frame has been decoded to in real
- // pixel unit. They are reset to -1 when decoding begins and set to INT_MAX
- // when the frame is fully decoded.
- int row;
- int col;
-} RefCntBuffer;
-
-typedef struct BufferPool {
- // Protect BufferPool from being accessed by several FrameWorkers at
- // the same time during frame parallel decode.
- // TODO(hkuang): Try to use atomic variable instead of locking the whole pool.
-#if CONFIG_MULTITHREAD
- pthread_mutex_t pool_mutex;
-#endif
-
- // Private data associated with the frame buffer callbacks.
- void *cb_priv;
-
- vpx_get_frame_buffer_cb_fn_t get_fb_cb;
- vpx_release_frame_buffer_cb_fn_t release_fb_cb;
-
- RefCntBuffer frame_bufs[FRAME_BUFFERS];
-
- // Frame buffers allocated internally by the codec.
- InternalFrameBufferList int_frame_buffers;
-} BufferPool;
-
-typedef struct VP9Common {
- struct vpx_internal_error_info error;
- vpx_color_space_t color_space;
- vpx_color_range_t color_range;
- int width;
- int height;
- int render_width;
- int render_height;
- int last_width;
- int last_height;
-
- // TODO(jkoleszar): this implies chroma ss right now, but could vary per
- // plane. Revisit as part of the future change to YV12_BUFFER_CONFIG to
- // support additional planes.
- int subsampling_x;
- int subsampling_y;
-
-#if CONFIG_VP9_HIGHBITDEPTH
- int use_highbitdepth; // Marks if we need to use 16bit frame buffers.
-#endif
-
- YV12_BUFFER_CONFIG *frame_to_show;
- RefCntBuffer *prev_frame;
-
- // TODO(hkuang): Combine this with cur_buf in macroblockd.
- RefCntBuffer *cur_frame;
-
- int ref_frame_map[REF_FRAMES]; /* maps fb_idx to reference slot */
-
- // Prepare ref_frame_map for the next frame.
- // Only used in frame parallel decode.
- int next_ref_frame_map[REF_FRAMES];
-
- // TODO(jkoleszar): could expand active_ref_idx to 4, with 0 as intra, and
- // roll new_fb_idx into it.
-
- // Each frame can reference REFS_PER_FRAME buffers
- RefBuffer frame_refs[REFS_PER_FRAME];
-
- int new_fb_idx;
-
-#if CONFIG_VP9_POSTPROC
- YV12_BUFFER_CONFIG post_proc_buffer;
- YV12_BUFFER_CONFIG post_proc_buffer_int;
-#endif
-
- FRAME_TYPE last_frame_type; /* last frame's frame type for motion search.*/
- FRAME_TYPE frame_type;
-
- int show_frame;
- int last_show_frame;
- int show_existing_frame;
-
- // Flag signaling that the frame is encoded using only INTRA modes.
- uint8_t intra_only;
- uint8_t last_intra_only;
-
- int allow_high_precision_mv;
-
- // Flag signaling that the frame context should be reset to default values.
- // 0 or 1 implies don't reset, 2 reset just the context specified in the
- // frame header, 3 reset all contexts.
- int reset_frame_context;
-
- // MBs, mb_rows/cols is in 16-pixel units; mi_rows/cols is in
- // MODE_INFO (8-pixel) units.
- int MBs;
- int mb_rows, mi_rows;
- int mb_cols, mi_cols;
- int mi_stride;
-
- /* profile settings */
- TX_MODE tx_mode;
-
- int base_qindex;
- int y_dc_delta_q;
- int uv_dc_delta_q;
- int uv_ac_delta_q;
- int16_t y_dequant[MAX_SEGMENTS][2];
- int16_t uv_dequant[MAX_SEGMENTS][2];
-
- /* We allocate a MODE_INFO struct for each macroblock, together with
- an extra row on top and column on the left to simplify prediction. */
- int mi_alloc_size;
- MODE_INFO *mip; /* Base of allocated array */
- MODE_INFO *mi; /* Corresponds to upper left visible macroblock */
-
- // TODO(agrange): Move prev_mi into encoder structure.
- // prev_mip and prev_mi will only be allocated in VP9 encoder.
- MODE_INFO *prev_mip; /* MODE_INFO array 'mip' from last decoded frame */
- MODE_INFO *prev_mi; /* 'mi' from last frame (points into prev_mip) */
-
- // Separate mi functions between encoder and decoder.
- int (*alloc_mi)(struct VP9Common *cm, int mi_size);
- void (*free_mi)(struct VP9Common *cm);
- void (*setup_mi)(struct VP9Common *cm);
-
- // Grid of pointers to 8x8 MODE_INFO structs. Any 8x8 not in the visible
- // area will be NULL.
- MODE_INFO **mi_grid_base;
- MODE_INFO **mi_grid_visible;
- MODE_INFO **prev_mi_grid_base;
- MODE_INFO **prev_mi_grid_visible;
-
- // Whether to use previous frame's motion vectors for prediction.
- int use_prev_frame_mvs;
-
- // Persistent mb segment id map used in prediction.
- int seg_map_idx;
- int prev_seg_map_idx;
-
- uint8_t *seg_map_array[NUM_PING_PONG_BUFFERS];
- uint8_t *last_frame_seg_map;
- uint8_t *current_frame_seg_map;
- int seg_map_alloc_size;
-
- INTERP_FILTER interp_filter;
-
- loop_filter_info_n lf_info;
-
- int refresh_frame_context; /* Two state 0 = NO, 1 = YES */
-
- int ref_frame_sign_bias[MAX_REF_FRAMES]; /* Two state 0, 1 */
-
- struct loopfilter lf;
- struct segmentation seg;
-
- // TODO(hkuang): Remove this as it is the same as frame_parallel_decode
- // in pbi.
- int frame_parallel_decode; // frame-based threading.
-
- // Context probabilities for reference frame prediction
- MV_REFERENCE_FRAME comp_fixed_ref;
- MV_REFERENCE_FRAME comp_var_ref[2];
- REFERENCE_MODE reference_mode;
-
- FRAME_CONTEXT *fc; /* this frame entropy */
- FRAME_CONTEXT *frame_contexts; // FRAME_CONTEXTS
- unsigned int frame_context_idx; /* Context to use/update */
- FRAME_COUNTS counts;
-
- unsigned int current_video_frame;
- BITSTREAM_PROFILE profile;
-
- // VPX_BITS_8 in profile 0 or 1, VPX_BITS_10 or VPX_BITS_12 in profile 2 or 3.
- vpx_bit_depth_t bit_depth;
- vpx_bit_depth_t dequant_bit_depth; // bit_depth of current dequantizer
-
-#if CONFIG_VP9_POSTPROC
- struct postproc_state postproc_state;
-#endif
-
- int error_resilient_mode;
- int frame_parallel_decoding_mode;
-
- int log2_tile_cols, log2_tile_rows;
- int byte_alignment;
- int skip_loop_filter;
-
- // Private data associated with the frame buffer callbacks.
- void *cb_priv;
- vpx_get_frame_buffer_cb_fn_t get_fb_cb;
- vpx_release_frame_buffer_cb_fn_t release_fb_cb;
-
- // Handles memory for the codec.
- InternalFrameBufferList int_frame_buffers;
-
- // External BufferPool passed from outside.
- BufferPool *buffer_pool;
-
- PARTITION_CONTEXT *above_seg_context;
- ENTROPY_CONTEXT *above_context;
- int above_context_alloc_cols;
-} VP9_COMMON;
-
-// TODO(hkuang): Don't need to lock the whole pool after implementing atomic
-// frame reference count.
-void lock_buffer_pool(BufferPool *const pool);
-void unlock_buffer_pool(BufferPool *const pool);
-
-static INLINE YV12_BUFFER_CONFIG *get_ref_frame(VP9_COMMON *cm, int index) {
- if (index < 0 || index >= REF_FRAMES)
- return NULL;
- if (cm->ref_frame_map[index] < 0)
- return NULL;
- assert(cm->ref_frame_map[index] < FRAME_BUFFERS);
- return &cm->buffer_pool->frame_bufs[cm->ref_frame_map[index]].buf;
-}
-
-static INLINE YV12_BUFFER_CONFIG *get_frame_new_buffer(VP9_COMMON *cm) {
- return &cm->buffer_pool->frame_bufs[cm->new_fb_idx].buf;
-}
-
-static INLINE int get_free_fb(VP9_COMMON *cm) {
- RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs;
- int i;
-
- lock_buffer_pool(cm->buffer_pool);
- for (i = 0; i < FRAME_BUFFERS; ++i)
- if (frame_bufs[i].ref_count == 0)
- break;
-
- if (i != FRAME_BUFFERS) {
- frame_bufs[i].ref_count = 1;
- } else {
- // Reset i to be INVALID_IDX to indicate no free buffer found.
- i = INVALID_IDX;
- }
-
- unlock_buffer_pool(cm->buffer_pool);
- return i;
-}
-
-static INLINE void ref_cnt_fb(RefCntBuffer *bufs, int *idx, int new_idx) {
- const int ref_index = *idx;
-
- if (ref_index >= 0 && bufs[ref_index].ref_count > 0)
- bufs[ref_index].ref_count--;
-
- *idx = new_idx;
-
- bufs[new_idx].ref_count++;
-}
-
-static INLINE int mi_cols_aligned_to_sb(int n_mis) {
- return ALIGN_POWER_OF_TWO(n_mis, MI_BLOCK_SIZE_LOG2);
-}
-
-static INLINE int frame_is_intra_only(const VP9_COMMON *const cm) {
- return cm->frame_type == KEY_FRAME || cm->intra_only;
-}
-
-static INLINE void set_partition_probs(const VP9_COMMON *const cm,
- MACROBLOCKD *const xd) {
- xd->partition_probs =
- frame_is_intra_only(cm) ?
- &vp9_kf_partition_probs[0] :
- (const vpx_prob (*)[PARTITION_TYPES - 1])cm->fc->partition_prob;
-}
-
-static INLINE void vp9_init_macroblockd(VP9_COMMON *cm, MACROBLOCKD *xd,
- tran_low_t *dqcoeff) {
- int i;
-
- for (i = 0; i < MAX_MB_PLANE; ++i) {
- xd->plane[i].dqcoeff = dqcoeff;
- xd->above_context[i] = cm->above_context +
- i * sizeof(*cm->above_context) * 2 * mi_cols_aligned_to_sb(cm->mi_cols);
-
- if (get_plane_type(i) == PLANE_TYPE_Y) {
- memcpy(xd->plane[i].seg_dequant, cm->y_dequant, sizeof(cm->y_dequant));
- } else {
- memcpy(xd->plane[i].seg_dequant, cm->uv_dequant, sizeof(cm->uv_dequant));
- }
- xd->fc = cm->fc;
- }
-
- xd->above_seg_context = cm->above_seg_context;
- xd->mi_stride = cm->mi_stride;
- xd->error_info = &cm->error;
-
- set_partition_probs(cm, xd);
-}
-
-static INLINE const vpx_prob* get_partition_probs(const MACROBLOCKD *xd,
- int ctx) {
- return xd->partition_probs[ctx];
-}
-
-static INLINE void set_skip_context(MACROBLOCKD *xd, int mi_row, int mi_col) {
- const int above_idx = mi_col * 2;
- const int left_idx = (mi_row * 2) & 15;
- int i;
- for (i = 0; i < MAX_MB_PLANE; ++i) {
- struct macroblockd_plane *const pd = &xd->plane[i];
- pd->above_context = &xd->above_context[i][above_idx >> pd->subsampling_x];
- pd->left_context = &xd->left_context[i][left_idx >> pd->subsampling_y];
- }
-}
-
-static INLINE int calc_mi_size(int len) {
- // len is in mi units.
- return len + MI_BLOCK_SIZE;
-}
-
-static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile,
- int mi_row, int bh,
- int mi_col, int bw,
- int mi_rows, int mi_cols) {
- xd->mb_to_top_edge = -((mi_row * MI_SIZE) * 8);
- xd->mb_to_bottom_edge = ((mi_rows - bh - mi_row) * MI_SIZE) * 8;
- xd->mb_to_left_edge = -((mi_col * MI_SIZE) * 8);
- xd->mb_to_right_edge = ((mi_cols - bw - mi_col) * MI_SIZE) * 8;
-
- // Are edges available for intra prediction?
- xd->above_mi = (mi_row != 0) ? xd->mi[-xd->mi_stride] : NULL;
- xd->left_mi = (mi_col > tile->mi_col_start) ? xd->mi[-1] : NULL;
-}
-
-static INLINE void update_partition_context(MACROBLOCKD *xd,
- int mi_row, int mi_col,
- BLOCK_SIZE subsize,
- BLOCK_SIZE bsize) {
- PARTITION_CONTEXT *const above_ctx = xd->above_seg_context + mi_col;
- PARTITION_CONTEXT *const left_ctx = xd->left_seg_context + (mi_row & MI_MASK);
-
- // num_4x4_blocks_wide_lookup[bsize] / 2
- const int bs = num_8x8_blocks_wide_lookup[bsize];
-
- // update the partition context at the end notes. set partition bits
- // of block sizes larger than the current one to be one, and partition
- // bits of smaller block sizes to be zero.
- memset(above_ctx, partition_context_lookup[subsize].above, bs);
- memset(left_ctx, partition_context_lookup[subsize].left, bs);
-}
-
-static INLINE int partition_plane_context(const MACROBLOCKD *xd,
- int mi_row, int mi_col,
- BLOCK_SIZE bsize) {
- const PARTITION_CONTEXT *above_ctx = xd->above_seg_context + mi_col;
- const PARTITION_CONTEXT *left_ctx = xd->left_seg_context + (mi_row & MI_MASK);
- const int bsl = mi_width_log2_lookup[bsize];
- int above = (*above_ctx >> bsl) & 1 , left = (*left_ctx >> bsl) & 1;
-
- assert(b_width_log2_lookup[bsize] == b_height_log2_lookup[bsize]);
- assert(bsl >= 0);
-
- return (left * 2 + above) + bsl * PARTITION_PLOFFSET;
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_ONYXC_INT_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_ppflags.h b/thirdparty/libvpx/vp9/common/vp9_ppflags.h
deleted file mode 100644
index 12b989f43a..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_ppflags.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_PPFLAGS_H_
-#define VP9_COMMON_VP9_PPFLAGS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum {
- VP9D_NOFILTERING = 0,
- VP9D_DEBLOCK = 1 << 0,
- VP9D_DEMACROBLOCK = 1 << 1,
- VP9D_ADDNOISE = 1 << 2,
- VP9D_DEBUG_TXT_FRAME_INFO = 1 << 3,
- VP9D_DEBUG_TXT_MBLK_MODES = 1 << 4,
- VP9D_DEBUG_TXT_DC_DIFF = 1 << 5,
- VP9D_DEBUG_TXT_RATE_INFO = 1 << 6,
- VP9D_DEBUG_DRAW_MV = 1 << 7,
- VP9D_DEBUG_CLR_BLK_MODES = 1 << 8,
- VP9D_DEBUG_CLR_FRM_REF_BLKS = 1 << 9,
- VP9D_MFQE = 1 << 10
-};
-
-typedef struct {
- int post_proc_flag;
- int deblocking_level;
- int noise_level;
-} vp9_ppflags_t;
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_PPFLAGS_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_pred_common.c b/thirdparty/libvpx/vp9/common/vp9_pred_common.c
deleted file mode 100644
index 8f90e70e73..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_pred_common.c
+++ /dev/null
@@ -1,314 +0,0 @@
-
-/*
- * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp9/common/vp9_common.h"
-#include "vp9/common/vp9_pred_common.h"
-#include "vp9/common/vp9_seg_common.h"
-
-// Returns a context number for the given MB prediction signal
-int vp9_get_pred_context_switchable_interp(const MACROBLOCKD *xd) {
- // Note:
- // The mode info data structure has a one element border above and to the
- // left of the entries corresponding to real macroblocks.
- // The prediction flags in these dummy entries are initialized to 0.
- const MODE_INFO *const left_mi = xd->left_mi;
- const int left_type = left_mi && is_inter_block(left_mi) ?
- left_mi->interp_filter : SWITCHABLE_FILTERS;
- const MODE_INFO *const above_mi = xd->above_mi;
- const int above_type = above_mi && is_inter_block(above_mi) ?
- above_mi->interp_filter : SWITCHABLE_FILTERS;
-
- if (left_type == above_type)
- return left_type;
- else if (left_type == SWITCHABLE_FILTERS)
- return above_type;
- else if (above_type == SWITCHABLE_FILTERS)
- return left_type;
- else
- return SWITCHABLE_FILTERS;
-}
-
-int vp9_get_reference_mode_context(const VP9_COMMON *cm,
- const MACROBLOCKD *xd) {
- int ctx;
- const MODE_INFO *const above_mi = xd->above_mi;
- const MODE_INFO *const left_mi = xd->left_mi;
- const int has_above = !!above_mi;
- const int has_left = !!left_mi;
- // Note:
- // The mode info data structure has a one element border above and to the
- // left of the entries corresponding to real macroblocks.
- // The prediction flags in these dummy entries are initialized to 0.
- if (has_above && has_left) { // both edges available
- if (!has_second_ref(above_mi) && !has_second_ref(left_mi))
- // neither edge uses comp pred (0/1)
- ctx = (above_mi->ref_frame[0] == cm->comp_fixed_ref) ^
- (left_mi->ref_frame[0] == cm->comp_fixed_ref);
- else if (!has_second_ref(above_mi))
- // one of two edges uses comp pred (2/3)
- ctx = 2 + (above_mi->ref_frame[0] == cm->comp_fixed_ref ||
- !is_inter_block(above_mi));
- else if (!has_second_ref(left_mi))
- // one of two edges uses comp pred (2/3)
- ctx = 2 + (left_mi->ref_frame[0] == cm->comp_fixed_ref ||
- !is_inter_block(left_mi));
- else // both edges use comp pred (4)
- ctx = 4;
- } else if (has_above || has_left) { // one edge available
- const MODE_INFO *edge_mi = has_above ? above_mi : left_mi;
-
- if (!has_second_ref(edge_mi))
- // edge does not use comp pred (0/1)
- ctx = edge_mi->ref_frame[0] == cm->comp_fixed_ref;
- else
- // edge uses comp pred (3)
- ctx = 3;
- } else { // no edges available (1)
- ctx = 1;
- }
- assert(ctx >= 0 && ctx < COMP_INTER_CONTEXTS);
- return ctx;
-}
-
-// Returns a context number for the given MB prediction signal
-int vp9_get_pred_context_comp_ref_p(const VP9_COMMON *cm,
- const MACROBLOCKD *xd) {
- int pred_context;
- const MODE_INFO *const above_mi = xd->above_mi;
- const MODE_INFO *const left_mi = xd->left_mi;
- const int above_in_image = !!above_mi;
- const int left_in_image = !!left_mi;
-
- // Note:
- // The mode info data structure has a one element border above and to the
- // left of the entries corresponding to real macroblocks.
- // The prediction flags in these dummy entries are initialized to 0.
- const int fix_ref_idx = cm->ref_frame_sign_bias[cm->comp_fixed_ref];
- const int var_ref_idx = !fix_ref_idx;
-
- if (above_in_image && left_in_image) { // both edges available
- const int above_intra = !is_inter_block(above_mi);
- const int left_intra = !is_inter_block(left_mi);
-
- if (above_intra && left_intra) { // intra/intra (2)
- pred_context = 2;
- } else if (above_intra || left_intra) { // intra/inter
- const MODE_INFO *edge_mi = above_intra ? left_mi : above_mi;
-
- if (!has_second_ref(edge_mi)) // single pred (1/3)
- pred_context = 1 + 2 * (edge_mi->ref_frame[0] != cm->comp_var_ref[1]);
- else // comp pred (1/3)
- pred_context = 1 + 2 * (edge_mi->ref_frame[var_ref_idx]
- != cm->comp_var_ref[1]);
- } else { // inter/inter
- const int l_sg = !has_second_ref(left_mi);
- const int a_sg = !has_second_ref(above_mi);
- const MV_REFERENCE_FRAME vrfa = a_sg ? above_mi->ref_frame[0]
- : above_mi->ref_frame[var_ref_idx];
- const MV_REFERENCE_FRAME vrfl = l_sg ? left_mi->ref_frame[0]
- : left_mi->ref_frame[var_ref_idx];
-
- if (vrfa == vrfl && cm->comp_var_ref[1] == vrfa) {
- pred_context = 0;
- } else if (l_sg && a_sg) { // single/single
- if ((vrfa == cm->comp_fixed_ref && vrfl == cm->comp_var_ref[0]) ||
- (vrfl == cm->comp_fixed_ref && vrfa == cm->comp_var_ref[0]))
- pred_context = 4;
- else if (vrfa == vrfl)
- pred_context = 3;
- else
- pred_context = 1;
- } else if (l_sg || a_sg) { // single/comp
- const MV_REFERENCE_FRAME vrfc = l_sg ? vrfa : vrfl;
- const MV_REFERENCE_FRAME rfs = a_sg ? vrfa : vrfl;
- if (vrfc == cm->comp_var_ref[1] && rfs != cm->comp_var_ref[1])
- pred_context = 1;
- else if (rfs == cm->comp_var_ref[1] && vrfc != cm->comp_var_ref[1])
- pred_context = 2;
- else
- pred_context = 4;
- } else if (vrfa == vrfl) { // comp/comp
- pred_context = 4;
- } else {
- pred_context = 2;
- }
- }
- } else if (above_in_image || left_in_image) { // one edge available
- const MODE_INFO *edge_mi = above_in_image ? above_mi : left_mi;
-
- if (!is_inter_block(edge_mi)) {
- pred_context = 2;
- } else {
- if (has_second_ref(edge_mi))
- pred_context = 4 * (edge_mi->ref_frame[var_ref_idx]
- != cm->comp_var_ref[1]);
- else
- pred_context = 3 * (edge_mi->ref_frame[0] != cm->comp_var_ref[1]);
- }
- } else { // no edges available (2)
- pred_context = 2;
- }
- assert(pred_context >= 0 && pred_context < REF_CONTEXTS);
-
- return pred_context;
-}
-
-int vp9_get_pred_context_single_ref_p1(const MACROBLOCKD *xd) {
- int pred_context;
- const MODE_INFO *const above_mi = xd->above_mi;
- const MODE_INFO *const left_mi = xd->left_mi;
- const int has_above = !!above_mi;
- const int has_left = !!left_mi;
- // Note:
- // The mode info data structure has a one element border above and to the
- // left of the entries corresponding to real macroblocks.
- // The prediction flags in these dummy entries are initialized to 0.
- if (has_above && has_left) { // both edges available
- const int above_intra = !is_inter_block(above_mi);
- const int left_intra = !is_inter_block(left_mi);
-
- if (above_intra && left_intra) { // intra/intra
- pred_context = 2;
- } else if (above_intra || left_intra) { // intra/inter or inter/intra
- const MODE_INFO *edge_mi = above_intra ? left_mi : above_mi;
- if (!has_second_ref(edge_mi))
- pred_context = 4 * (edge_mi->ref_frame[0] == LAST_FRAME);
- else
- pred_context = 1 + (edge_mi->ref_frame[0] == LAST_FRAME ||
- edge_mi->ref_frame[1] == LAST_FRAME);
- } else { // inter/inter
- const int above_has_second = has_second_ref(above_mi);
- const int left_has_second = has_second_ref(left_mi);
- const MV_REFERENCE_FRAME above0 = above_mi->ref_frame[0];
- const MV_REFERENCE_FRAME above1 = above_mi->ref_frame[1];
- const MV_REFERENCE_FRAME left0 = left_mi->ref_frame[0];
- const MV_REFERENCE_FRAME left1 = left_mi->ref_frame[1];
-
- if (above_has_second && left_has_second) {
- pred_context = 1 + (above0 == LAST_FRAME || above1 == LAST_FRAME ||
- left0 == LAST_FRAME || left1 == LAST_FRAME);
- } else if (above_has_second || left_has_second) {
- const MV_REFERENCE_FRAME rfs = !above_has_second ? above0 : left0;
- const MV_REFERENCE_FRAME crf1 = above_has_second ? above0 : left0;
- const MV_REFERENCE_FRAME crf2 = above_has_second ? above1 : left1;
-
- if (rfs == LAST_FRAME)
- pred_context = 3 + (crf1 == LAST_FRAME || crf2 == LAST_FRAME);
- else
- pred_context = (crf1 == LAST_FRAME || crf2 == LAST_FRAME);
- } else {
- pred_context = 2 * (above0 == LAST_FRAME) + 2 * (left0 == LAST_FRAME);
- }
- }
- } else if (has_above || has_left) { // one edge available
- const MODE_INFO *edge_mi = has_above ? above_mi : left_mi;
- if (!is_inter_block(edge_mi)) { // intra
- pred_context = 2;
- } else { // inter
- if (!has_second_ref(edge_mi))
- pred_context = 4 * (edge_mi->ref_frame[0] == LAST_FRAME);
- else
- pred_context = 1 + (edge_mi->ref_frame[0] == LAST_FRAME ||
- edge_mi->ref_frame[1] == LAST_FRAME);
- }
- } else { // no edges available
- pred_context = 2;
- }
-
- assert(pred_context >= 0 && pred_context < REF_CONTEXTS);
- return pred_context;
-}
-
-int vp9_get_pred_context_single_ref_p2(const MACROBLOCKD *xd) {
- int pred_context;
- const MODE_INFO *const above_mi = xd->above_mi;
- const MODE_INFO *const left_mi = xd->left_mi;
- const int has_above = !!above_mi;
- const int has_left = !!left_mi;
-
- // Note:
- // The mode info data structure has a one element border above and to the
- // left of the entries corresponding to real macroblocks.
- // The prediction flags in these dummy entries are initialized to 0.
- if (has_above && has_left) { // both edges available
- const int above_intra = !is_inter_block(above_mi);
- const int left_intra = !is_inter_block(left_mi);
-
- if (above_intra && left_intra) { // intra/intra
- pred_context = 2;
- } else if (above_intra || left_intra) { // intra/inter or inter/intra
- const MODE_INFO *edge_mi = above_intra ? left_mi : above_mi;
- if (!has_second_ref(edge_mi)) {
- if (edge_mi->ref_frame[0] == LAST_FRAME)
- pred_context = 3;
- else
- pred_context = 4 * (edge_mi->ref_frame[0] == GOLDEN_FRAME);
- } else {
- pred_context = 1 + 2 * (edge_mi->ref_frame[0] == GOLDEN_FRAME ||
- edge_mi->ref_frame[1] == GOLDEN_FRAME);
- }
- } else { // inter/inter
- const int above_has_second = has_second_ref(above_mi);
- const int left_has_second = has_second_ref(left_mi);
- const MV_REFERENCE_FRAME above0 = above_mi->ref_frame[0];
- const MV_REFERENCE_FRAME above1 = above_mi->ref_frame[1];
- const MV_REFERENCE_FRAME left0 = left_mi->ref_frame[0];
- const MV_REFERENCE_FRAME left1 = left_mi->ref_frame[1];
-
- if (above_has_second && left_has_second) {
- if (above0 == left0 && above1 == left1)
- pred_context = 3 * (above0 == GOLDEN_FRAME ||
- above1 == GOLDEN_FRAME ||
- left0 == GOLDEN_FRAME ||
- left1 == GOLDEN_FRAME);
- else
- pred_context = 2;
- } else if (above_has_second || left_has_second) {
- const MV_REFERENCE_FRAME rfs = !above_has_second ? above0 : left0;
- const MV_REFERENCE_FRAME crf1 = above_has_second ? above0 : left0;
- const MV_REFERENCE_FRAME crf2 = above_has_second ? above1 : left1;
-
- if (rfs == GOLDEN_FRAME)
- pred_context = 3 + (crf1 == GOLDEN_FRAME || crf2 == GOLDEN_FRAME);
- else if (rfs == ALTREF_FRAME)
- pred_context = crf1 == GOLDEN_FRAME || crf2 == GOLDEN_FRAME;
- else
- pred_context = 1 + 2 * (crf1 == GOLDEN_FRAME || crf2 == GOLDEN_FRAME);
- } else {
- if (above0 == LAST_FRAME && left0 == LAST_FRAME) {
- pred_context = 3;
- } else if (above0 == LAST_FRAME || left0 == LAST_FRAME) {
- const MV_REFERENCE_FRAME edge0 = (above0 == LAST_FRAME) ? left0
- : above0;
- pred_context = 4 * (edge0 == GOLDEN_FRAME);
- } else {
- pred_context = 2 * (above0 == GOLDEN_FRAME) +
- 2 * (left0 == GOLDEN_FRAME);
- }
- }
- }
- } else if (has_above || has_left) { // one edge available
- const MODE_INFO *edge_mi = has_above ? above_mi : left_mi;
-
- if (!is_inter_block(edge_mi) ||
- (edge_mi->ref_frame[0] == LAST_FRAME && !has_second_ref(edge_mi)))
- pred_context = 2;
- else if (!has_second_ref(edge_mi))
- pred_context = 4 * (edge_mi->ref_frame[0] == GOLDEN_FRAME);
- else
- pred_context = 3 * (edge_mi->ref_frame[0] == GOLDEN_FRAME ||
- edge_mi->ref_frame[1] == GOLDEN_FRAME);
- } else { // no edges available (2)
- pred_context = 2;
- }
- assert(pred_context >= 0 && pred_context < REF_CONTEXTS);
- return pred_context;
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_pred_common.h b/thirdparty/libvpx/vp9/common/vp9_pred_common.h
deleted file mode 100644
index f3c676e953..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_pred_common.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_PRED_COMMON_H_
-#define VP9_COMMON_VP9_PRED_COMMON_H_
-
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static INLINE int get_segment_id(const VP9_COMMON *cm,
- const uint8_t *segment_ids,
- BLOCK_SIZE bsize, int mi_row, int mi_col) {
- const int mi_offset = mi_row * cm->mi_cols + mi_col;
- const int bw = num_8x8_blocks_wide_lookup[bsize];
- const int bh = num_8x8_blocks_high_lookup[bsize];
- const int xmis = VPXMIN(cm->mi_cols - mi_col, bw);
- const int ymis = VPXMIN(cm->mi_rows - mi_row, bh);
- int x, y, segment_id = MAX_SEGMENTS;
-
- for (y = 0; y < ymis; ++y)
- for (x = 0; x < xmis; ++x)
- segment_id =
- VPXMIN(segment_id, segment_ids[mi_offset + y * cm->mi_cols + x]);
-
- assert(segment_id >= 0 && segment_id < MAX_SEGMENTS);
- return segment_id;
-}
-
-static INLINE int vp9_get_pred_context_seg_id(const MACROBLOCKD *xd) {
- const MODE_INFO *const above_mi = xd->above_mi;
- const MODE_INFO *const left_mi = xd->left_mi;
- const int above_sip = (above_mi != NULL) ?
- above_mi->seg_id_predicted : 0;
- const int left_sip = (left_mi != NULL) ? left_mi->seg_id_predicted : 0;
-
- return above_sip + left_sip;
-}
-
-static INLINE vpx_prob vp9_get_pred_prob_seg_id(const struct segmentation *seg,
- const MACROBLOCKD *xd) {
- return seg->pred_probs[vp9_get_pred_context_seg_id(xd)];
-}
-
-static INLINE int vp9_get_skip_context(const MACROBLOCKD *xd) {
- const MODE_INFO *const above_mi = xd->above_mi;
- const MODE_INFO *const left_mi = xd->left_mi;
- const int above_skip = (above_mi != NULL) ? above_mi->skip : 0;
- const int left_skip = (left_mi != NULL) ? left_mi->skip : 0;
- return above_skip + left_skip;
-}
-
-static INLINE vpx_prob vp9_get_skip_prob(const VP9_COMMON *cm,
- const MACROBLOCKD *xd) {
- return cm->fc->skip_probs[vp9_get_skip_context(xd)];
-}
-
-int vp9_get_pred_context_switchable_interp(const MACROBLOCKD *xd);
-
-// The mode info data structure has a one element border above and to the
-// left of the entries corresponding to real macroblocks.
-// The prediction flags in these dummy entries are initialized to 0.
-// 0 - inter/inter, inter/--, --/inter, --/--
-// 1 - intra/inter, inter/intra
-// 2 - intra/--, --/intra
-// 3 - intra/intra
-static INLINE int get_intra_inter_context(const MACROBLOCKD *xd) {
- const MODE_INFO *const above_mi = xd->above_mi;
- const MODE_INFO *const left_mi = xd->left_mi;
- const int has_above = !!above_mi;
- const int has_left = !!left_mi;
-
- if (has_above && has_left) { // both edges available
- const int above_intra = !is_inter_block(above_mi);
- const int left_intra = !is_inter_block(left_mi);
- return left_intra && above_intra ? 3 : left_intra || above_intra;
- } else if (has_above || has_left) { // one edge available
- return 2 * !is_inter_block(has_above ? above_mi : left_mi);
- }
- return 0;
-}
-
-static INLINE vpx_prob vp9_get_intra_inter_prob(const VP9_COMMON *cm,
- const MACROBLOCKD *xd) {
- return cm->fc->intra_inter_prob[get_intra_inter_context(xd)];
-}
-
-int vp9_get_reference_mode_context(const VP9_COMMON *cm, const MACROBLOCKD *xd);
-
-static INLINE vpx_prob vp9_get_reference_mode_prob(const VP9_COMMON *cm,
- const MACROBLOCKD *xd) {
- return cm->fc->comp_inter_prob[vp9_get_reference_mode_context(cm, xd)];
-}
-
-int vp9_get_pred_context_comp_ref_p(const VP9_COMMON *cm,
- const MACROBLOCKD *xd);
-
-static INLINE vpx_prob vp9_get_pred_prob_comp_ref_p(const VP9_COMMON *cm,
- const MACROBLOCKD *xd) {
- const int pred_context = vp9_get_pred_context_comp_ref_p(cm, xd);
- return cm->fc->comp_ref_prob[pred_context];
-}
-
-int vp9_get_pred_context_single_ref_p1(const MACROBLOCKD *xd);
-
-static INLINE vpx_prob vp9_get_pred_prob_single_ref_p1(const VP9_COMMON *cm,
- const MACROBLOCKD *xd) {
- return cm->fc->single_ref_prob[vp9_get_pred_context_single_ref_p1(xd)][0];
-}
-
-int vp9_get_pred_context_single_ref_p2(const MACROBLOCKD *xd);
-
-static INLINE vpx_prob vp9_get_pred_prob_single_ref_p2(const VP9_COMMON *cm,
- const MACROBLOCKD *xd) {
- return cm->fc->single_ref_prob[vp9_get_pred_context_single_ref_p2(xd)][1];
-}
-
-// Returns a context number for the given MB prediction signal
-// The mode info data structure has a one element border above and to the
-// left of the entries corresponding to real blocks.
-// The prediction flags in these dummy entries are initialized to 0.
-static INLINE int get_tx_size_context(const MACROBLOCKD *xd) {
- const int max_tx_size = max_txsize_lookup[xd->mi[0]->sb_type];
- const MODE_INFO *const above_mi = xd->above_mi;
- const MODE_INFO *const left_mi = xd->left_mi;
- const int has_above = !!above_mi;
- const int has_left = !!left_mi;
- int above_ctx = (has_above && !above_mi->skip) ? (int)above_mi->tx_size
- : max_tx_size;
- int left_ctx = (has_left && !left_mi->skip) ? (int)left_mi->tx_size
- : max_tx_size;
- if (!has_left)
- left_ctx = above_ctx;
-
- if (!has_above)
- above_ctx = left_ctx;
-
- return (above_ctx + left_ctx) > max_tx_size;
-}
-
-static INLINE const vpx_prob *get_tx_probs(TX_SIZE max_tx_size, int ctx,
- const struct tx_probs *tx_probs) {
- switch (max_tx_size) {
- case TX_8X8:
- return tx_probs->p8x8[ctx];
- case TX_16X16:
- return tx_probs->p16x16[ctx];
- case TX_32X32:
- return tx_probs->p32x32[ctx];
- default:
- assert(0 && "Invalid max_tx_size.");
- return NULL;
- }
-}
-
-static INLINE const vpx_prob *get_tx_probs2(TX_SIZE max_tx_size,
- const MACROBLOCKD *xd,
- const struct tx_probs *tx_probs) {
- return get_tx_probs(max_tx_size, get_tx_size_context(xd), tx_probs);
-}
-
-static INLINE unsigned int *get_tx_counts(TX_SIZE max_tx_size, int ctx,
- struct tx_counts *tx_counts) {
- switch (max_tx_size) {
- case TX_8X8:
- return tx_counts->p8x8[ctx];
- case TX_16X16:
- return tx_counts->p16x16[ctx];
- case TX_32X32:
- return tx_counts->p32x32[ctx];
- default:
- assert(0 && "Invalid max_tx_size.");
- return NULL;
- }
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_PRED_COMMON_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_quant_common.c b/thirdparty/libvpx/vp9/common/vp9_quant_common.c
deleted file mode 100644
index d83f3c1a2f..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_quant_common.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp9/common/vp9_common.h"
-#include "vp9/common/vp9_quant_common.h"
-#include "vp9/common/vp9_seg_common.h"
-
-static const int16_t dc_qlookup[QINDEX_RANGE] = {
- 4, 8, 8, 9, 10, 11, 12, 12,
- 13, 14, 15, 16, 17, 18, 19, 19,
- 20, 21, 22, 23, 24, 25, 26, 26,
- 27, 28, 29, 30, 31, 32, 32, 33,
- 34, 35, 36, 37, 38, 38, 39, 40,
- 41, 42, 43, 43, 44, 45, 46, 47,
- 48, 48, 49, 50, 51, 52, 53, 53,
- 54, 55, 56, 57, 57, 58, 59, 60,
- 61, 62, 62, 63, 64, 65, 66, 66,
- 67, 68, 69, 70, 70, 71, 72, 73,
- 74, 74, 75, 76, 77, 78, 78, 79,
- 80, 81, 81, 82, 83, 84, 85, 85,
- 87, 88, 90, 92, 93, 95, 96, 98,
- 99, 101, 102, 104, 105, 107, 108, 110,
- 111, 113, 114, 116, 117, 118, 120, 121,
- 123, 125, 127, 129, 131, 134, 136, 138,
- 140, 142, 144, 146, 148, 150, 152, 154,
- 156, 158, 161, 164, 166, 169, 172, 174,
- 177, 180, 182, 185, 187, 190, 192, 195,
- 199, 202, 205, 208, 211, 214, 217, 220,
- 223, 226, 230, 233, 237, 240, 243, 247,
- 250, 253, 257, 261, 265, 269, 272, 276,
- 280, 284, 288, 292, 296, 300, 304, 309,
- 313, 317, 322, 326, 330, 335, 340, 344,
- 349, 354, 359, 364, 369, 374, 379, 384,
- 389, 395, 400, 406, 411, 417, 423, 429,
- 435, 441, 447, 454, 461, 467, 475, 482,
- 489, 497, 505, 513, 522, 530, 539, 549,
- 559, 569, 579, 590, 602, 614, 626, 640,
- 654, 668, 684, 700, 717, 736, 755, 775,
- 796, 819, 843, 869, 896, 925, 955, 988,
- 1022, 1058, 1098, 1139, 1184, 1232, 1282, 1336,
-};
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static const int16_t dc_qlookup_10[QINDEX_RANGE] = {
- 4, 9, 10, 13, 15, 17, 20, 22,
- 25, 28, 31, 34, 37, 40, 43, 47,
- 50, 53, 57, 60, 64, 68, 71, 75,
- 78, 82, 86, 90, 93, 97, 101, 105,
- 109, 113, 116, 120, 124, 128, 132, 136,
- 140, 143, 147, 151, 155, 159, 163, 166,
- 170, 174, 178, 182, 185, 189, 193, 197,
- 200, 204, 208, 212, 215, 219, 223, 226,
- 230, 233, 237, 241, 244, 248, 251, 255,
- 259, 262, 266, 269, 273, 276, 280, 283,
- 287, 290, 293, 297, 300, 304, 307, 310,
- 314, 317, 321, 324, 327, 331, 334, 337,
- 343, 350, 356, 362, 369, 375, 381, 387,
- 394, 400, 406, 412, 418, 424, 430, 436,
- 442, 448, 454, 460, 466, 472, 478, 484,
- 490, 499, 507, 516, 525, 533, 542, 550,
- 559, 567, 576, 584, 592, 601, 609, 617,
- 625, 634, 644, 655, 666, 676, 687, 698,
- 708, 718, 729, 739, 749, 759, 770, 782,
- 795, 807, 819, 831, 844, 856, 868, 880,
- 891, 906, 920, 933, 947, 961, 975, 988,
- 1001, 1015, 1030, 1045, 1061, 1076, 1090, 1105,
- 1120, 1137, 1153, 1170, 1186, 1202, 1218, 1236,
- 1253, 1271, 1288, 1306, 1323, 1342, 1361, 1379,
- 1398, 1416, 1436, 1456, 1476, 1496, 1516, 1537,
- 1559, 1580, 1601, 1624, 1647, 1670, 1692, 1717,
- 1741, 1766, 1791, 1817, 1844, 1871, 1900, 1929,
- 1958, 1990, 2021, 2054, 2088, 2123, 2159, 2197,
- 2236, 2276, 2319, 2363, 2410, 2458, 2508, 2561,
- 2616, 2675, 2737, 2802, 2871, 2944, 3020, 3102,
- 3188, 3280, 3375, 3478, 3586, 3702, 3823, 3953,
- 4089, 4236, 4394, 4559, 4737, 4929, 5130, 5347,
-};
-
-static const int16_t dc_qlookup_12[QINDEX_RANGE] = {
- 4, 12, 18, 25, 33, 41, 50, 60,
- 70, 80, 91, 103, 115, 127, 140, 153,
- 166, 180, 194, 208, 222, 237, 251, 266,
- 281, 296, 312, 327, 343, 358, 374, 390,
- 405, 421, 437, 453, 469, 484, 500, 516,
- 532, 548, 564, 580, 596, 611, 627, 643,
- 659, 674, 690, 706, 721, 737, 752, 768,
- 783, 798, 814, 829, 844, 859, 874, 889,
- 904, 919, 934, 949, 964, 978, 993, 1008,
- 1022, 1037, 1051, 1065, 1080, 1094, 1108, 1122,
- 1136, 1151, 1165, 1179, 1192, 1206, 1220, 1234,
- 1248, 1261, 1275, 1288, 1302, 1315, 1329, 1342,
- 1368, 1393, 1419, 1444, 1469, 1494, 1519, 1544,
- 1569, 1594, 1618, 1643, 1668, 1692, 1717, 1741,
- 1765, 1789, 1814, 1838, 1862, 1885, 1909, 1933,
- 1957, 1992, 2027, 2061, 2096, 2130, 2165, 2199,
- 2233, 2267, 2300, 2334, 2367, 2400, 2434, 2467,
- 2499, 2532, 2575, 2618, 2661, 2704, 2746, 2788,
- 2830, 2872, 2913, 2954, 2995, 3036, 3076, 3127,
- 3177, 3226, 3275, 3324, 3373, 3421, 3469, 3517,
- 3565, 3621, 3677, 3733, 3788, 3843, 3897, 3951,
- 4005, 4058, 4119, 4181, 4241, 4301, 4361, 4420,
- 4479, 4546, 4612, 4677, 4742, 4807, 4871, 4942,
- 5013, 5083, 5153, 5222, 5291, 5367, 5442, 5517,
- 5591, 5665, 5745, 5825, 5905, 5984, 6063, 6149,
- 6234, 6319, 6404, 6495, 6587, 6678, 6769, 6867,
- 6966, 7064, 7163, 7269, 7376, 7483, 7599, 7715,
- 7832, 7958, 8085, 8214, 8352, 8492, 8635, 8788,
- 8945, 9104, 9275, 9450, 9639, 9832, 10031, 10245,
- 10465, 10702, 10946, 11210, 11482, 11776, 12081, 12409,
- 12750, 13118, 13501, 13913, 14343, 14807, 15290, 15812,
- 16356, 16943, 17575, 18237, 18949, 19718, 20521, 21387,
-};
-#endif
-
-static const int16_t ac_qlookup[QINDEX_RANGE] = {
- 4, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102,
- 104, 106, 108, 110, 112, 114, 116, 118,
- 120, 122, 124, 126, 128, 130, 132, 134,
- 136, 138, 140, 142, 144, 146, 148, 150,
- 152, 155, 158, 161, 164, 167, 170, 173,
- 176, 179, 182, 185, 188, 191, 194, 197,
- 200, 203, 207, 211, 215, 219, 223, 227,
- 231, 235, 239, 243, 247, 251, 255, 260,
- 265, 270, 275, 280, 285, 290, 295, 300,
- 305, 311, 317, 323, 329, 335, 341, 347,
- 353, 359, 366, 373, 380, 387, 394, 401,
- 408, 416, 424, 432, 440, 448, 456, 465,
- 474, 483, 492, 501, 510, 520, 530, 540,
- 550, 560, 571, 582, 593, 604, 615, 627,
- 639, 651, 663, 676, 689, 702, 715, 729,
- 743, 757, 771, 786, 801, 816, 832, 848,
- 864, 881, 898, 915, 933, 951, 969, 988,
- 1007, 1026, 1046, 1066, 1087, 1108, 1129, 1151,
- 1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343,
- 1369, 1396, 1423, 1451, 1479, 1508, 1537, 1567,
- 1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828,
-};
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static const int16_t ac_qlookup_10[QINDEX_RANGE] = {
- 4, 9, 11, 13, 16, 18, 21, 24,
- 27, 30, 33, 37, 40, 44, 48, 51,
- 55, 59, 63, 67, 71, 75, 79, 83,
- 88, 92, 96, 100, 105, 109, 114, 118,
- 122, 127, 131, 136, 140, 145, 149, 154,
- 158, 163, 168, 172, 177, 181, 186, 190,
- 195, 199, 204, 208, 213, 217, 222, 226,
- 231, 235, 240, 244, 249, 253, 258, 262,
- 267, 271, 275, 280, 284, 289, 293, 297,
- 302, 306, 311, 315, 319, 324, 328, 332,
- 337, 341, 345, 349, 354, 358, 362, 367,
- 371, 375, 379, 384, 388, 392, 396, 401,
- 409, 417, 425, 433, 441, 449, 458, 466,
- 474, 482, 490, 498, 506, 514, 523, 531,
- 539, 547, 555, 563, 571, 579, 588, 596,
- 604, 616, 628, 640, 652, 664, 676, 688,
- 700, 713, 725, 737, 749, 761, 773, 785,
- 797, 809, 825, 841, 857, 873, 889, 905,
- 922, 938, 954, 970, 986, 1002, 1018, 1038,
- 1058, 1078, 1098, 1118, 1138, 1158, 1178, 1198,
- 1218, 1242, 1266, 1290, 1314, 1338, 1362, 1386,
- 1411, 1435, 1463, 1491, 1519, 1547, 1575, 1603,
- 1631, 1663, 1695, 1727, 1759, 1791, 1823, 1859,
- 1895, 1931, 1967, 2003, 2039, 2079, 2119, 2159,
- 2199, 2239, 2283, 2327, 2371, 2415, 2459, 2507,
- 2555, 2603, 2651, 2703, 2755, 2807, 2859, 2915,
- 2971, 3027, 3083, 3143, 3203, 3263, 3327, 3391,
- 3455, 3523, 3591, 3659, 3731, 3803, 3876, 3952,
- 4028, 4104, 4184, 4264, 4348, 4432, 4516, 4604,
- 4692, 4784, 4876, 4972, 5068, 5168, 5268, 5372,
- 5476, 5584, 5692, 5804, 5916, 6032, 6148, 6268,
- 6388, 6512, 6640, 6768, 6900, 7036, 7172, 7312,
-};
-
-static const int16_t ac_qlookup_12[QINDEX_RANGE] = {
- 4, 13, 19, 27, 35, 44, 54, 64,
- 75, 87, 99, 112, 126, 139, 154, 168,
- 183, 199, 214, 230, 247, 263, 280, 297,
- 314, 331, 349, 366, 384, 402, 420, 438,
- 456, 475, 493, 511, 530, 548, 567, 586,
- 604, 623, 642, 660, 679, 698, 716, 735,
- 753, 772, 791, 809, 828, 846, 865, 884,
- 902, 920, 939, 957, 976, 994, 1012, 1030,
- 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175,
- 1193, 1211, 1229, 1246, 1264, 1282, 1299, 1317,
- 1335, 1352, 1370, 1387, 1405, 1422, 1440, 1457,
- 1474, 1491, 1509, 1526, 1543, 1560, 1577, 1595,
- 1627, 1660, 1693, 1725, 1758, 1791, 1824, 1856,
- 1889, 1922, 1954, 1987, 2020, 2052, 2085, 2118,
- 2150, 2183, 2216, 2248, 2281, 2313, 2346, 2378,
- 2411, 2459, 2508, 2556, 2605, 2653, 2701, 2750,
- 2798, 2847, 2895, 2943, 2992, 3040, 3088, 3137,
- 3185, 3234, 3298, 3362, 3426, 3491, 3555, 3619,
- 3684, 3748, 3812, 3876, 3941, 4005, 4069, 4149,
- 4230, 4310, 4390, 4470, 4550, 4631, 4711, 4791,
- 4871, 4967, 5064, 5160, 5256, 5352, 5448, 5544,
- 5641, 5737, 5849, 5961, 6073, 6185, 6297, 6410,
- 6522, 6650, 6778, 6906, 7034, 7162, 7290, 7435,
- 7579, 7723, 7867, 8011, 8155, 8315, 8475, 8635,
- 8795, 8956, 9132, 9308, 9484, 9660, 9836, 10028,
- 10220, 10412, 10604, 10812, 11020, 11228, 11437, 11661,
- 11885, 12109, 12333, 12573, 12813, 13053, 13309, 13565,
- 13821, 14093, 14365, 14637, 14925, 15213, 15502, 15806,
- 16110, 16414, 16734, 17054, 17390, 17726, 18062, 18414,
- 18766, 19134, 19502, 19886, 20270, 20670, 21070, 21486,
- 21902, 22334, 22766, 23214, 23662, 24126, 24590, 25070,
- 25551, 26047, 26559, 27071, 27599, 28143, 28687, 29247,
-};
-#endif
-
-int16_t vp9_dc_quant(int qindex, int delta, vpx_bit_depth_t bit_depth) {
-#if CONFIG_VP9_HIGHBITDEPTH
- switch (bit_depth) {
- case VPX_BITS_8:
- return dc_qlookup[clamp(qindex + delta, 0, MAXQ)];
- case VPX_BITS_10:
- return dc_qlookup_10[clamp(qindex + delta, 0, MAXQ)];
- case VPX_BITS_12:
- return dc_qlookup_12[clamp(qindex + delta, 0, MAXQ)];
- default:
- assert(0 && "bit_depth should be VPX_BITS_8, VPX_BITS_10 or VPX_BITS_12");
- return -1;
- }
-#else
- (void) bit_depth;
- return dc_qlookup[clamp(qindex + delta, 0, MAXQ)];
-#endif
-}
-
-int16_t vp9_ac_quant(int qindex, int delta, vpx_bit_depth_t bit_depth) {
-#if CONFIG_VP9_HIGHBITDEPTH
- switch (bit_depth) {
- case VPX_BITS_8:
- return ac_qlookup[clamp(qindex + delta, 0, MAXQ)];
- case VPX_BITS_10:
- return ac_qlookup_10[clamp(qindex + delta, 0, MAXQ)];
- case VPX_BITS_12:
- return ac_qlookup_12[clamp(qindex + delta, 0, MAXQ)];
- default:
- assert(0 && "bit_depth should be VPX_BITS_8, VPX_BITS_10 or VPX_BITS_12");
- return -1;
- }
-#else
- (void) bit_depth;
- return ac_qlookup[clamp(qindex + delta, 0, MAXQ)];
-#endif
-}
-
-int vp9_get_qindex(const struct segmentation *seg, int segment_id,
- int base_qindex) {
- if (segfeature_active(seg, segment_id, SEG_LVL_ALT_Q)) {
- const int data = get_segdata(seg, segment_id, SEG_LVL_ALT_Q);
- const int seg_qindex = seg->abs_delta == SEGMENT_ABSDATA ?
- data : base_qindex + data;
- return clamp(seg_qindex, 0, MAXQ);
- } else {
- return base_qindex;
- }
-}
-
diff --git a/thirdparty/libvpx/vp9/common/vp9_quant_common.h b/thirdparty/libvpx/vp9/common/vp9_quant_common.h
deleted file mode 100644
index 4bae4a8967..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_quant_common.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_QUANT_COMMON_H_
-#define VP9_COMMON_VP9_QUANT_COMMON_H_
-
-#include "vpx/vpx_codec.h"
-#include "vp9/common/vp9_seg_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MINQ 0
-#define MAXQ 255
-#define QINDEX_RANGE (MAXQ - MINQ + 1)
-#define QINDEX_BITS 8
-
-int16_t vp9_dc_quant(int qindex, int delta, vpx_bit_depth_t bit_depth);
-int16_t vp9_ac_quant(int qindex, int delta, vpx_bit_depth_t bit_depth);
-
-int vp9_get_qindex(const struct segmentation *seg, int segment_id,
- int base_qindex);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_QUANT_COMMON_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_reconinter.c b/thirdparty/libvpx/vp9/common/vp9_reconinter.c
deleted file mode 100644
index 84718e9703..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_reconinter.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "./vpx_scale_rtcd.h"
-#include "./vpx_config.h"
-
-#include "vpx/vpx_integer.h"
-
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_reconinter.h"
-#include "vp9/common/vp9_reconintra.h"
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void vp9_highbd_build_inter_predictor(const uint8_t *src, int src_stride,
- uint8_t *dst, int dst_stride,
- const MV *src_mv,
- const struct scale_factors *sf,
- int w, int h, int ref,
- const InterpKernel *kernel,
- enum mv_precision precision,
- int x, int y, int bd) {
- const int is_q4 = precision == MV_PRECISION_Q4;
- const MV mv_q4 = { is_q4 ? src_mv->row : src_mv->row * 2,
- is_q4 ? src_mv->col : src_mv->col * 2 };
- MV32 mv = vp9_scale_mv(&mv_q4, x, y, sf);
- const int subpel_x = mv.col & SUBPEL_MASK;
- const int subpel_y = mv.row & SUBPEL_MASK;
-
- src += (mv.row >> SUBPEL_BITS) * src_stride + (mv.col >> SUBPEL_BITS);
-
- highbd_inter_predictor(src, src_stride, dst, dst_stride, subpel_x, subpel_y,
- sf, w, h, ref, kernel, sf->x_step_q4, sf->y_step_q4,
- bd);
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-void vp9_build_inter_predictor(const uint8_t *src, int src_stride,
- uint8_t *dst, int dst_stride,
- const MV *src_mv,
- const struct scale_factors *sf,
- int w, int h, int ref,
- const InterpKernel *kernel,
- enum mv_precision precision,
- int x, int y) {
- const int is_q4 = precision == MV_PRECISION_Q4;
- const MV mv_q4 = { is_q4 ? src_mv->row : src_mv->row * 2,
- is_q4 ? src_mv->col : src_mv->col * 2 };
- MV32 mv = vp9_scale_mv(&mv_q4, x, y, sf);
- const int subpel_x = mv.col & SUBPEL_MASK;
- const int subpel_y = mv.row & SUBPEL_MASK;
-
- src += (mv.row >> SUBPEL_BITS) * src_stride + (mv.col >> SUBPEL_BITS);
-
- inter_predictor(src, src_stride, dst, dst_stride, subpel_x, subpel_y,
- sf, w, h, ref, kernel, sf->x_step_q4, sf->y_step_q4);
-}
-
-static INLINE int round_mv_comp_q4(int value) {
- return (value < 0 ? value - 2 : value + 2) / 4;
-}
-
-static MV mi_mv_pred_q4(const MODE_INFO *mi, int idx) {
- MV res = { round_mv_comp_q4(mi->bmi[0].as_mv[idx].as_mv.row +
- mi->bmi[1].as_mv[idx].as_mv.row +
- mi->bmi[2].as_mv[idx].as_mv.row +
- mi->bmi[3].as_mv[idx].as_mv.row),
- round_mv_comp_q4(mi->bmi[0].as_mv[idx].as_mv.col +
- mi->bmi[1].as_mv[idx].as_mv.col +
- mi->bmi[2].as_mv[idx].as_mv.col +
- mi->bmi[3].as_mv[idx].as_mv.col) };
- return res;
-}
-
-static INLINE int round_mv_comp_q2(int value) {
- return (value < 0 ? value - 1 : value + 1) / 2;
-}
-
-static MV mi_mv_pred_q2(const MODE_INFO *mi, int idx, int block0, int block1) {
- MV res = { round_mv_comp_q2(mi->bmi[block0].as_mv[idx].as_mv.row +
- mi->bmi[block1].as_mv[idx].as_mv.row),
- round_mv_comp_q2(mi->bmi[block0].as_mv[idx].as_mv.col +
- mi->bmi[block1].as_mv[idx].as_mv.col) };
- return res;
-}
-
-// TODO(jkoleszar): yet another mv clamping function :-(
-MV clamp_mv_to_umv_border_sb(const MACROBLOCKD *xd, const MV *src_mv,
- int bw, int bh, int ss_x, int ss_y) {
- // If the MV points so far into the UMV border that no visible pixels
- // are used for reconstruction, the subpel part of the MV can be
- // discarded and the MV limited to 16 pixels with equivalent results.
- const int spel_left = (VP9_INTERP_EXTEND + bw) << SUBPEL_BITS;
- const int spel_right = spel_left - SUBPEL_SHIFTS;
- const int spel_top = (VP9_INTERP_EXTEND + bh) << SUBPEL_BITS;
- const int spel_bottom = spel_top - SUBPEL_SHIFTS;
- MV clamped_mv = {
- src_mv->row * (1 << (1 - ss_y)),
- src_mv->col * (1 << (1 - ss_x))
- };
- assert(ss_x <= 1);
- assert(ss_y <= 1);
-
- clamp_mv(&clamped_mv,
- xd->mb_to_left_edge * (1 << (1 - ss_x)) - spel_left,
- xd->mb_to_right_edge * (1 << (1 - ss_x)) + spel_right,
- xd->mb_to_top_edge * (1 << (1 - ss_y)) - spel_top,
- xd->mb_to_bottom_edge * (1 << (1 - ss_y)) + spel_bottom);
-
- return clamped_mv;
-}
-
-MV average_split_mvs(const struct macroblockd_plane *pd,
- const MODE_INFO *mi, int ref, int block) {
- const int ss_idx = ((pd->subsampling_x > 0) << 1) | (pd->subsampling_y > 0);
- MV res = {0, 0};
- switch (ss_idx) {
- case 0:
- res = mi->bmi[block].as_mv[ref].as_mv;
- break;
- case 1:
- res = mi_mv_pred_q2(mi, ref, block, block + 2);
- break;
- case 2:
- res = mi_mv_pred_q2(mi, ref, block, block + 1);
- break;
- case 3:
- res = mi_mv_pred_q4(mi, ref);
- break;
- default:
- assert(ss_idx <= 3 && ss_idx >= 0);
- }
- return res;
-}
-
-static void build_inter_predictors(MACROBLOCKD *xd, int plane, int block,
- int bw, int bh,
- int x, int y, int w, int h,
- int mi_x, int mi_y) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- const MODE_INFO *mi = xd->mi[0];
- const int is_compound = has_second_ref(mi);
- const InterpKernel *kernel = vp9_filter_kernels[mi->interp_filter];
- int ref;
-
- for (ref = 0; ref < 1 + is_compound; ++ref) {
- const struct scale_factors *const sf = &xd->block_refs[ref]->sf;
- struct buf_2d *const pre_buf = &pd->pre[ref];
- struct buf_2d *const dst_buf = &pd->dst;
- uint8_t *const dst = dst_buf->buf + dst_buf->stride * y + x;
- const MV mv = mi->sb_type < BLOCK_8X8
- ? average_split_mvs(pd, mi, ref, block)
- : mi->mv[ref].as_mv;
-
- // TODO(jkoleszar): This clamping is done in the incorrect place for the
- // scaling case. It needs to be done on the scaled MV, not the pre-scaling
- // MV. Note however that it performs the subsampling aware scaling so
- // that the result is always q4.
- // mv_precision precision is MV_PRECISION_Q4.
- const MV mv_q4 = clamp_mv_to_umv_border_sb(xd, &mv, bw, bh,
- pd->subsampling_x,
- pd->subsampling_y);
-
- uint8_t *pre;
- MV32 scaled_mv;
- int xs, ys, subpel_x, subpel_y;
- const int is_scaled = vp9_is_scaled(sf);
-
- if (is_scaled) {
- // Co-ordinate of containing block to pixel precision.
- const int x_start = (-xd->mb_to_left_edge >> (3 + pd->subsampling_x));
- const int y_start = (-xd->mb_to_top_edge >> (3 + pd->subsampling_y));
-#if CONFIG_BETTER_HW_COMPATIBILITY
- assert(xd->mi[0]->sb_type != BLOCK_4X8 &&
- xd->mi[0]->sb_type != BLOCK_8X4);
- assert(mv_q4.row == mv.row * (1 << (1 - pd->subsampling_y)) &&
- mv_q4.col == mv.col * (1 << (1 - pd->subsampling_x)));
-#endif
- if (plane == 0)
- pre_buf->buf = xd->block_refs[ref]->buf->y_buffer;
- else if (plane == 1)
- pre_buf->buf = xd->block_refs[ref]->buf->u_buffer;
- else
- pre_buf->buf = xd->block_refs[ref]->buf->v_buffer;
-
- pre_buf->buf += scaled_buffer_offset(x_start + x, y_start + y,
- pre_buf->stride, sf);
- pre = pre_buf->buf;
- scaled_mv = vp9_scale_mv(&mv_q4, mi_x + x, mi_y + y, sf);
- xs = sf->x_step_q4;
- ys = sf->y_step_q4;
- } else {
- pre = pre_buf->buf + (y * pre_buf->stride + x);
- scaled_mv.row = mv_q4.row;
- scaled_mv.col = mv_q4.col;
- xs = ys = 16;
- }
- subpel_x = scaled_mv.col & SUBPEL_MASK;
- subpel_y = scaled_mv.row & SUBPEL_MASK;
- pre += (scaled_mv.row >> SUBPEL_BITS) * pre_buf->stride
- + (scaled_mv.col >> SUBPEL_BITS);
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- highbd_inter_predictor(pre, pre_buf->stride, dst, dst_buf->stride,
- subpel_x, subpel_y, sf, w, h, ref, kernel, xs, ys,
- xd->bd);
- } else {
- inter_predictor(pre, pre_buf->stride, dst, dst_buf->stride,
- subpel_x, subpel_y, sf, w, h, ref, kernel, xs, ys);
- }
-#else
- inter_predictor(pre, pre_buf->stride, dst, dst_buf->stride,
- subpel_x, subpel_y, sf, w, h, ref, kernel, xs, ys);
-#endif // CONFIG_VP9_HIGHBITDEPTH
- }
-}
-
-static void build_inter_predictors_for_planes(MACROBLOCKD *xd, BLOCK_SIZE bsize,
- int mi_row, int mi_col,
- int plane_from, int plane_to) {
- int plane;
- const int mi_x = mi_col * MI_SIZE;
- const int mi_y = mi_row * MI_SIZE;
- for (plane = plane_from; plane <= plane_to; ++plane) {
- const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize,
- &xd->plane[plane]);
- const int num_4x4_w = num_4x4_blocks_wide_lookup[plane_bsize];
- const int num_4x4_h = num_4x4_blocks_high_lookup[plane_bsize];
- const int bw = 4 * num_4x4_w;
- const int bh = 4 * num_4x4_h;
-
- if (xd->mi[0]->sb_type < BLOCK_8X8) {
- int i = 0, x, y;
- assert(bsize == BLOCK_8X8);
- for (y = 0; y < num_4x4_h; ++y)
- for (x = 0; x < num_4x4_w; ++x)
- build_inter_predictors(xd, plane, i++, bw, bh,
- 4 * x, 4 * y, 4, 4, mi_x, mi_y);
- } else {
- build_inter_predictors(xd, plane, 0, bw, bh,
- 0, 0, bw, bh, mi_x, mi_y);
- }
- }
-}
-
-void vp9_build_inter_predictors_sby(MACROBLOCKD *xd, int mi_row, int mi_col,
- BLOCK_SIZE bsize) {
- build_inter_predictors_for_planes(xd, bsize, mi_row, mi_col, 0, 0);
-}
-
-void vp9_build_inter_predictors_sbp(MACROBLOCKD *xd, int mi_row, int mi_col,
- BLOCK_SIZE bsize, int plane) {
- build_inter_predictors_for_planes(xd, bsize, mi_row, mi_col, plane, plane);
-}
-
-void vp9_build_inter_predictors_sbuv(MACROBLOCKD *xd, int mi_row, int mi_col,
- BLOCK_SIZE bsize) {
- build_inter_predictors_for_planes(xd, bsize, mi_row, mi_col, 1,
- MAX_MB_PLANE - 1);
-}
-
-void vp9_build_inter_predictors_sb(MACROBLOCKD *xd, int mi_row, int mi_col,
- BLOCK_SIZE bsize) {
- build_inter_predictors_for_planes(xd, bsize, mi_row, mi_col, 0,
- MAX_MB_PLANE - 1);
-}
-
-void vp9_setup_dst_planes(struct macroblockd_plane planes[MAX_MB_PLANE],
- const YV12_BUFFER_CONFIG *src,
- int mi_row, int mi_col) {
- uint8_t *const buffers[MAX_MB_PLANE] = { src->y_buffer, src->u_buffer,
- src->v_buffer};
- const int strides[MAX_MB_PLANE] = { src->y_stride, src->uv_stride,
- src->uv_stride};
- int i;
-
- for (i = 0; i < MAX_MB_PLANE; ++i) {
- struct macroblockd_plane *const pd = &planes[i];
- setup_pred_plane(&pd->dst, buffers[i], strides[i], mi_row, mi_col, NULL,
- pd->subsampling_x, pd->subsampling_y);
- }
-}
-
-void vp9_setup_pre_planes(MACROBLOCKD *xd, int idx,
- const YV12_BUFFER_CONFIG *src,
- int mi_row, int mi_col,
- const struct scale_factors *sf) {
- if (src != NULL) {
- int i;
- uint8_t *const buffers[MAX_MB_PLANE] = { src->y_buffer, src->u_buffer,
- src->v_buffer};
- const int strides[MAX_MB_PLANE] = { src->y_stride, src->uv_stride,
- src->uv_stride};
- for (i = 0; i < MAX_MB_PLANE; ++i) {
- struct macroblockd_plane *const pd = &xd->plane[i];
- setup_pred_plane(&pd->pre[idx], buffers[i], strides[i], mi_row, mi_col,
- sf, pd->subsampling_x, pd->subsampling_y);
- }
- }
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_reconinter.h b/thirdparty/libvpx/vp9/common/vp9_reconinter.h
deleted file mode 100644
index 07745e3aaa..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_reconinter.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_RECONINTER_H_
-#define VP9_COMMON_VP9_RECONINTER_H_
-
-#include "vp9/common/vp9_filter.h"
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_filter.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static INLINE void inter_predictor(const uint8_t *src, int src_stride,
- uint8_t *dst, int dst_stride,
- const int subpel_x,
- const int subpel_y,
- const struct scale_factors *sf,
- int w, int h, int ref,
- const InterpKernel *kernel,
- int xs, int ys) {
- sf->predict[subpel_x != 0][subpel_y != 0][ref](
- src, src_stride, dst, dst_stride,
- kernel[subpel_x], xs, kernel[subpel_y], ys, w, h);
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static INLINE void highbd_inter_predictor(const uint8_t *src, int src_stride,
- uint8_t *dst, int dst_stride,
- const int subpel_x,
- const int subpel_y,
- const struct scale_factors *sf,
- int w, int h, int ref,
- const InterpKernel *kernel,
- int xs, int ys, int bd) {
- sf->highbd_predict[subpel_x != 0][subpel_y != 0][ref](
- src, src_stride, dst, dst_stride,
- kernel[subpel_x], xs, kernel[subpel_y], ys, w, h, bd);
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-MV average_split_mvs(const struct macroblockd_plane *pd, const MODE_INFO *mi,
- int ref, int block);
-
-MV clamp_mv_to_umv_border_sb(const MACROBLOCKD *xd, const MV *src_mv,
- int bw, int bh, int ss_x, int ss_y);
-
-void vp9_build_inter_predictors_sby(MACROBLOCKD *xd, int mi_row, int mi_col,
- BLOCK_SIZE bsize);
-
-void vp9_build_inter_predictors_sbp(MACROBLOCKD *xd, int mi_row, int mi_col,
- BLOCK_SIZE bsize, int plane);
-
-void vp9_build_inter_predictors_sbuv(MACROBLOCKD *xd, int mi_row, int mi_col,
- BLOCK_SIZE bsize);
-
-void vp9_build_inter_predictors_sb(MACROBLOCKD *xd, int mi_row, int mi_col,
- BLOCK_SIZE bsize);
-
-void vp9_build_inter_predictor(const uint8_t *src, int src_stride,
- uint8_t *dst, int dst_stride,
- const MV *mv_q3,
- const struct scale_factors *sf,
- int w, int h, int do_avg,
- const InterpKernel *kernel,
- enum mv_precision precision,
- int x, int y);
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void vp9_highbd_build_inter_predictor(const uint8_t *src, int src_stride,
- uint8_t *dst, int dst_stride,
- const MV *mv_q3,
- const struct scale_factors *sf,
- int w, int h, int do_avg,
- const InterpKernel *kernel,
- enum mv_precision precision,
- int x, int y, int bd);
-#endif
-
-static INLINE int scaled_buffer_offset(int x_offset, int y_offset, int stride,
- const struct scale_factors *sf) {
- const int x = sf ? sf->scale_value_x(x_offset, sf) : x_offset;
- const int y = sf ? sf->scale_value_y(y_offset, sf) : y_offset;
- return y * stride + x;
-}
-
-static INLINE void setup_pred_plane(struct buf_2d *dst,
- uint8_t *src, int stride,
- int mi_row, int mi_col,
- const struct scale_factors *scale,
- int subsampling_x, int subsampling_y) {
- const int x = (MI_SIZE * mi_col) >> subsampling_x;
- const int y = (MI_SIZE * mi_row) >> subsampling_y;
- dst->buf = src + scaled_buffer_offset(x, y, stride, scale);
- dst->stride = stride;
-}
-
-void vp9_setup_dst_planes(struct macroblockd_plane planes[MAX_MB_PLANE],
- const YV12_BUFFER_CONFIG *src,
- int mi_row, int mi_col);
-
-void vp9_setup_pre_planes(MACROBLOCKD *xd, int idx,
- const YV12_BUFFER_CONFIG *src, int mi_row, int mi_col,
- const struct scale_factors *sf);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_RECONINTER_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_reconintra.c b/thirdparty/libvpx/vp9/common/vp9_reconintra.c
deleted file mode 100644
index 445785835a..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_reconintra.c
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-
-#if CONFIG_VP9_HIGHBITDEPTH
-#include "vpx_dsp/vpx_dsp_common.h"
-#endif // CONFIG_VP9_HIGHBITDEPTH
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/vpx_once.h"
-
-#include "vp9/common/vp9_reconintra.h"
-#include "vp9/common/vp9_onyxc_int.h"
-
-const TX_TYPE intra_mode_to_tx_type_lookup[INTRA_MODES] = {
- DCT_DCT, // DC
- ADST_DCT, // V
- DCT_ADST, // H
- DCT_DCT, // D45
- ADST_ADST, // D135
- ADST_DCT, // D117
- DCT_ADST, // D153
- DCT_ADST, // D207
- ADST_DCT, // D63
- ADST_ADST, // TM
-};
-
-enum {
- NEED_LEFT = 1 << 1,
- NEED_ABOVE = 1 << 2,
- NEED_ABOVERIGHT = 1 << 3,
-};
-
-static const uint8_t extend_modes[INTRA_MODES] = {
- NEED_ABOVE | NEED_LEFT, // DC
- NEED_ABOVE, // V
- NEED_LEFT, // H
- NEED_ABOVERIGHT, // D45
- NEED_LEFT | NEED_ABOVE, // D135
- NEED_LEFT | NEED_ABOVE, // D117
- NEED_LEFT | NEED_ABOVE, // D153
- NEED_LEFT, // D207
- NEED_ABOVERIGHT, // D63
- NEED_LEFT | NEED_ABOVE, // TM
-};
-
-typedef void (*intra_pred_fn)(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left);
-
-static intra_pred_fn pred[INTRA_MODES][TX_SIZES];
-static intra_pred_fn dc_pred[2][2][TX_SIZES];
-
-#if CONFIG_VP9_HIGHBITDEPTH
-typedef void (*intra_high_pred_fn)(uint16_t *dst, ptrdiff_t stride,
- const uint16_t *above, const uint16_t *left,
- int bd);
-static intra_high_pred_fn pred_high[INTRA_MODES][4];
-static intra_high_pred_fn dc_pred_high[2][2][4];
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-static void vp9_init_intra_predictors_internal(void) {
-#define INIT_ALL_SIZES(p, type) \
- p[TX_4X4] = vpx_##type##_predictor_4x4; \
- p[TX_8X8] = vpx_##type##_predictor_8x8; \
- p[TX_16X16] = vpx_##type##_predictor_16x16; \
- p[TX_32X32] = vpx_##type##_predictor_32x32
-
- INIT_ALL_SIZES(pred[V_PRED], v);
- INIT_ALL_SIZES(pred[H_PRED], h);
- INIT_ALL_SIZES(pred[D207_PRED], d207);
- INIT_ALL_SIZES(pred[D45_PRED], d45);
- INIT_ALL_SIZES(pred[D63_PRED], d63);
- INIT_ALL_SIZES(pred[D117_PRED], d117);
- INIT_ALL_SIZES(pred[D135_PRED], d135);
- INIT_ALL_SIZES(pred[D153_PRED], d153);
- INIT_ALL_SIZES(pred[TM_PRED], tm);
-
- INIT_ALL_SIZES(dc_pred[0][0], dc_128);
- INIT_ALL_SIZES(dc_pred[0][1], dc_top);
- INIT_ALL_SIZES(dc_pred[1][0], dc_left);
- INIT_ALL_SIZES(dc_pred[1][1], dc);
-
-#if CONFIG_VP9_HIGHBITDEPTH
- INIT_ALL_SIZES(pred_high[V_PRED], highbd_v);
- INIT_ALL_SIZES(pred_high[H_PRED], highbd_h);
- INIT_ALL_SIZES(pred_high[D207_PRED], highbd_d207);
- INIT_ALL_SIZES(pred_high[D45_PRED], highbd_d45);
- INIT_ALL_SIZES(pred_high[D63_PRED], highbd_d63);
- INIT_ALL_SIZES(pred_high[D117_PRED], highbd_d117);
- INIT_ALL_SIZES(pred_high[D135_PRED], highbd_d135);
- INIT_ALL_SIZES(pred_high[D153_PRED], highbd_d153);
- INIT_ALL_SIZES(pred_high[TM_PRED], highbd_tm);
-
- INIT_ALL_SIZES(dc_pred_high[0][0], highbd_dc_128);
- INIT_ALL_SIZES(dc_pred_high[0][1], highbd_dc_top);
- INIT_ALL_SIZES(dc_pred_high[1][0], highbd_dc_left);
- INIT_ALL_SIZES(dc_pred_high[1][1], highbd_dc);
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-#undef intra_pred_allsizes
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void build_intra_predictors_high(const MACROBLOCKD *xd,
- const uint8_t *ref8,
- int ref_stride,
- uint8_t *dst8,
- int dst_stride,
- PREDICTION_MODE mode,
- TX_SIZE tx_size,
- int up_available,
- int left_available,
- int right_available,
- int x, int y,
- int plane, int bd) {
- int i;
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
- uint16_t *ref = CONVERT_TO_SHORTPTR(ref8);
- DECLARE_ALIGNED(16, uint16_t, left_col[32]);
- DECLARE_ALIGNED(16, uint16_t, above_data[64 + 16]);
- uint16_t *above_row = above_data + 16;
- const uint16_t *const_above_row = above_row;
- const int bs = 4 << tx_size;
- int frame_width, frame_height;
- int x0, y0;
- const struct macroblockd_plane *const pd = &xd->plane[plane];
- const int need_left = extend_modes[mode] & NEED_LEFT;
- const int need_above = extend_modes[mode] & NEED_ABOVE;
- const int need_aboveright = extend_modes[mode] & NEED_ABOVERIGHT;
- int base = 128 << (bd - 8);
- // 127 127 127 .. 127 127 127 127 127 127
- // 129 A B .. Y Z
- // 129 C D .. W X
- // 129 E F .. U V
- // 129 G H .. S T T T T T
- // For 10 bit and 12 bit, 127 and 129 are replaced by base -1 and base + 1.
-
- // Get current frame pointer, width and height.
- if (plane == 0) {
- frame_width = xd->cur_buf->y_width;
- frame_height = xd->cur_buf->y_height;
- } else {
- frame_width = xd->cur_buf->uv_width;
- frame_height = xd->cur_buf->uv_height;
- }
-
- // Get block position in current frame.
- x0 = (-xd->mb_to_left_edge >> (3 + pd->subsampling_x)) + x;
- y0 = (-xd->mb_to_top_edge >> (3 + pd->subsampling_y)) + y;
-
- // NEED_LEFT
- if (need_left) {
- if (left_available) {
- if (xd->mb_to_bottom_edge < 0) {
- /* slower path if the block needs border extension */
- if (y0 + bs <= frame_height) {
- for (i = 0; i < bs; ++i)
- left_col[i] = ref[i * ref_stride - 1];
- } else {
- const int extend_bottom = frame_height - y0;
- for (i = 0; i < extend_bottom; ++i)
- left_col[i] = ref[i * ref_stride - 1];
- for (; i < bs; ++i)
- left_col[i] = ref[(extend_bottom - 1) * ref_stride - 1];
- }
- } else {
- /* faster path if the block does not need extension */
- for (i = 0; i < bs; ++i)
- left_col[i] = ref[i * ref_stride - 1];
- }
- } else {
- vpx_memset16(left_col, base + 1, bs);
- }
- }
-
- // NEED_ABOVE
- if (need_above) {
- if (up_available) {
- const uint16_t *above_ref = ref - ref_stride;
- if (xd->mb_to_right_edge < 0) {
- /* slower path if the block needs border extension */
- if (x0 + bs <= frame_width) {
- memcpy(above_row, above_ref, bs * sizeof(above_row[0]));
- } else if (x0 <= frame_width) {
- const int r = frame_width - x0;
- memcpy(above_row, above_ref, r * sizeof(above_row[0]));
- vpx_memset16(above_row + r, above_row[r - 1], x0 + bs - frame_width);
- }
- } else {
- /* faster path if the block does not need extension */
- if (bs == 4 && right_available && left_available) {
- const_above_row = above_ref;
- } else {
- memcpy(above_row, above_ref, bs * sizeof(above_row[0]));
- }
- }
- above_row[-1] = left_available ? above_ref[-1] : (base + 1);
- } else {
- vpx_memset16(above_row, base - 1, bs);
- above_row[-1] = base - 1;
- }
- }
-
- // NEED_ABOVERIGHT
- if (need_aboveright) {
- if (up_available) {
- const uint16_t *above_ref = ref - ref_stride;
- if (xd->mb_to_right_edge < 0) {
- /* slower path if the block needs border extension */
- if (x0 + 2 * bs <= frame_width) {
- if (right_available && bs == 4) {
- memcpy(above_row, above_ref, 2 * bs * sizeof(above_row[0]));
- } else {
- memcpy(above_row, above_ref, bs * sizeof(above_row[0]));
- vpx_memset16(above_row + bs, above_row[bs - 1], bs);
- }
- } else if (x0 + bs <= frame_width) {
- const int r = frame_width - x0;
- if (right_available && bs == 4) {
- memcpy(above_row, above_ref, r * sizeof(above_row[0]));
- vpx_memset16(above_row + r, above_row[r - 1],
- x0 + 2 * bs - frame_width);
- } else {
- memcpy(above_row, above_ref, bs * sizeof(above_row[0]));
- vpx_memset16(above_row + bs, above_row[bs - 1], bs);
- }
- } else if (x0 <= frame_width) {
- const int r = frame_width - x0;
- memcpy(above_row, above_ref, r * sizeof(above_row[0]));
- vpx_memset16(above_row + r, above_row[r - 1],
- x0 + 2 * bs - frame_width);
- }
- above_row[-1] = left_available ? above_ref[-1] : (base + 1);
- } else {
- /* faster path if the block does not need extension */
- if (bs == 4 && right_available && left_available) {
- const_above_row = above_ref;
- } else {
- memcpy(above_row, above_ref, bs * sizeof(above_row[0]));
- if (bs == 4 && right_available)
- memcpy(above_row + bs, above_ref + bs, bs * sizeof(above_row[0]));
- else
- vpx_memset16(above_row + bs, above_row[bs - 1], bs);
- above_row[-1] = left_available ? above_ref[-1] : (base + 1);
- }
- }
- } else {
- vpx_memset16(above_row, base - 1, bs * 2);
- above_row[-1] = base - 1;
- }
- }
-
- // predict
- if (mode == DC_PRED) {
- dc_pred_high[left_available][up_available][tx_size](dst, dst_stride,
- const_above_row,
- left_col, xd->bd);
- } else {
- pred_high[mode][tx_size](dst, dst_stride, const_above_row, left_col,
- xd->bd);
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-static void build_intra_predictors(const MACROBLOCKD *xd, const uint8_t *ref,
- int ref_stride, uint8_t *dst, int dst_stride,
- PREDICTION_MODE mode, TX_SIZE tx_size,
- int up_available, int left_available,
- int right_available, int x, int y,
- int plane) {
- int i;
- DECLARE_ALIGNED(16, uint8_t, left_col[32]);
- DECLARE_ALIGNED(16, uint8_t, above_data[64 + 16]);
- uint8_t *above_row = above_data + 16;
- const uint8_t *const_above_row = above_row;
- const int bs = 4 << tx_size;
- int frame_width, frame_height;
- int x0, y0;
- const struct macroblockd_plane *const pd = &xd->plane[plane];
-
- // 127 127 127 .. 127 127 127 127 127 127
- // 129 A B .. Y Z
- // 129 C D .. W X
- // 129 E F .. U V
- // 129 G H .. S T T T T T
- // ..
-
- // Get current frame pointer, width and height.
- if (plane == 0) {
- frame_width = xd->cur_buf->y_width;
- frame_height = xd->cur_buf->y_height;
- } else {
- frame_width = xd->cur_buf->uv_width;
- frame_height = xd->cur_buf->uv_height;
- }
-
- // Get block position in current frame.
- x0 = (-xd->mb_to_left_edge >> (3 + pd->subsampling_x)) + x;
- y0 = (-xd->mb_to_top_edge >> (3 + pd->subsampling_y)) + y;
-
- // NEED_LEFT
- if (extend_modes[mode] & NEED_LEFT) {
- if (left_available) {
- if (xd->mb_to_bottom_edge < 0) {
- /* slower path if the block needs border extension */
- if (y0 + bs <= frame_height) {
- for (i = 0; i < bs; ++i)
- left_col[i] = ref[i * ref_stride - 1];
- } else {
- const int extend_bottom = frame_height - y0;
- for (i = 0; i < extend_bottom; ++i)
- left_col[i] = ref[i * ref_stride - 1];
- for (; i < bs; ++i)
- left_col[i] = ref[(extend_bottom - 1) * ref_stride - 1];
- }
- } else {
- /* faster path if the block does not need extension */
- for (i = 0; i < bs; ++i)
- left_col[i] = ref[i * ref_stride - 1];
- }
- } else {
- memset(left_col, 129, bs);
- }
- }
-
- // NEED_ABOVE
- if (extend_modes[mode] & NEED_ABOVE) {
- if (up_available) {
- const uint8_t *above_ref = ref - ref_stride;
- if (xd->mb_to_right_edge < 0) {
- /* slower path if the block needs border extension */
- if (x0 + bs <= frame_width) {
- memcpy(above_row, above_ref, bs);
- } else if (x0 <= frame_width) {
- const int r = frame_width - x0;
- memcpy(above_row, above_ref, r);
- memset(above_row + r, above_row[r - 1], x0 + bs - frame_width);
- }
- } else {
- /* faster path if the block does not need extension */
- if (bs == 4 && right_available && left_available) {
- const_above_row = above_ref;
- } else {
- memcpy(above_row, above_ref, bs);
- }
- }
- above_row[-1] = left_available ? above_ref[-1] : 129;
- } else {
- memset(above_row, 127, bs);
- above_row[-1] = 127;
- }
- }
-
- // NEED_ABOVERIGHT
- if (extend_modes[mode] & NEED_ABOVERIGHT) {
- if (up_available) {
- const uint8_t *above_ref = ref - ref_stride;
- if (xd->mb_to_right_edge < 0) {
- /* slower path if the block needs border extension */
- if (x0 + 2 * bs <= frame_width) {
- if (right_available && bs == 4) {
- memcpy(above_row, above_ref, 2 * bs);
- } else {
- memcpy(above_row, above_ref, bs);
- memset(above_row + bs, above_row[bs - 1], bs);
- }
- } else if (x0 + bs <= frame_width) {
- const int r = frame_width - x0;
- if (right_available && bs == 4) {
- memcpy(above_row, above_ref, r);
- memset(above_row + r, above_row[r - 1], x0 + 2 * bs - frame_width);
- } else {
- memcpy(above_row, above_ref, bs);
- memset(above_row + bs, above_row[bs - 1], bs);
- }
- } else if (x0 <= frame_width) {
- const int r = frame_width - x0;
- memcpy(above_row, above_ref, r);
- memset(above_row + r, above_row[r - 1], x0 + 2 * bs - frame_width);
- }
- } else {
- /* faster path if the block does not need extension */
- if (bs == 4 && right_available && left_available) {
- const_above_row = above_ref;
- } else {
- memcpy(above_row, above_ref, bs);
- if (bs == 4 && right_available)
- memcpy(above_row + bs, above_ref + bs, bs);
- else
- memset(above_row + bs, above_row[bs - 1], bs);
- }
- }
- above_row[-1] = left_available ? above_ref[-1] : 129;
- } else {
- memset(above_row, 127, bs * 2);
- above_row[-1] = 127;
- }
- }
-
- // predict
- if (mode == DC_PRED) {
- dc_pred[left_available][up_available][tx_size](dst, dst_stride,
- const_above_row, left_col);
- } else {
- pred[mode][tx_size](dst, dst_stride, const_above_row, left_col);
- }
-}
-
-void vp9_predict_intra_block(const MACROBLOCKD *xd, int bwl_in,
- TX_SIZE tx_size, PREDICTION_MODE mode,
- const uint8_t *ref, int ref_stride,
- uint8_t *dst, int dst_stride,
- int aoff, int loff, int plane) {
- const int bw = (1 << bwl_in);
- const int txw = (1 << tx_size);
- const int have_top = loff || (xd->above_mi != NULL);
- const int have_left = aoff || (xd->left_mi != NULL);
- const int have_right = (aoff + txw) < bw;
- const int x = aoff * 4;
- const int y = loff * 4;
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- build_intra_predictors_high(xd, ref, ref_stride, dst, dst_stride, mode,
- tx_size, have_top, have_left, have_right,
- x, y, plane, xd->bd);
- return;
- }
-#endif
- build_intra_predictors(xd, ref, ref_stride, dst, dst_stride, mode, tx_size,
- have_top, have_left, have_right, x, y, plane);
-}
-
-void vp9_init_intra_predictors(void) {
- once(vp9_init_intra_predictors_internal);
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_reconintra.h b/thirdparty/libvpx/vp9/common/vp9_reconintra.h
deleted file mode 100644
index de453808b7..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_reconintra.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_RECONINTRA_H_
-#define VP9_COMMON_VP9_RECONINTRA_H_
-
-#include "vpx/vpx_integer.h"
-#include "vp9/common/vp9_blockd.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp9_init_intra_predictors(void);
-
-void vp9_predict_intra_block(const MACROBLOCKD *xd, int bwl_in,
- TX_SIZE tx_size, PREDICTION_MODE mode,
- const uint8_t *ref, int ref_stride,
- uint8_t *dst, int dst_stride,
- int aoff, int loff, int plane);
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_RECONINTRA_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_rtcd.c b/thirdparty/libvpx/vp9/common/vp9_rtcd.c
deleted file mode 100644
index 2dfa09f50e..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_rtcd.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2011 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#include "./vpx_config.h"
-#define RTCD_C
-#include "./vp9_rtcd.h"
-#include "vpx_ports/vpx_once.h"
-
-void vp9_rtcd() {
- // TODO(JBB): Remove this once, by insuring that both the encoder and
- // decoder setup functions are protected by once();
- once(setup_rtcd_internal);
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_scale.c b/thirdparty/libvpx/vp9/common/vp9_scale.c
deleted file mode 100644
index b763b925b3..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_scale.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_dsp_rtcd.h"
-#include "vp9/common/vp9_filter.h"
-#include "vp9/common/vp9_scale.h"
-#include "vpx_dsp/vpx_filter.h"
-
-static INLINE int scaled_x(int val, const struct scale_factors *sf) {
- return (int)((int64_t)val * sf->x_scale_fp >> REF_SCALE_SHIFT);
-}
-
-static INLINE int scaled_y(int val, const struct scale_factors *sf) {
- return (int)((int64_t)val * sf->y_scale_fp >> REF_SCALE_SHIFT);
-}
-
-static int unscaled_value(int val, const struct scale_factors *sf) {
- (void) sf;
- return val;
-}
-
-static int get_fixed_point_scale_factor(int other_size, int this_size) {
- // Calculate scaling factor once for each reference frame
- // and use fixed point scaling factors in decoding and encoding routines.
- // Hardware implementations can calculate scale factor in device driver
- // and use multiplication and shifting on hardware instead of division.
- return (other_size << REF_SCALE_SHIFT) / this_size;
-}
-
-MV32 vp9_scale_mv(const MV *mv, int x, int y, const struct scale_factors *sf) {
- const int x_off_q4 = scaled_x(x << SUBPEL_BITS, sf) & SUBPEL_MASK;
- const int y_off_q4 = scaled_y(y << SUBPEL_BITS, sf) & SUBPEL_MASK;
- const MV32 res = {
- scaled_y(mv->row, sf) + y_off_q4,
- scaled_x(mv->col, sf) + x_off_q4
- };
- return res;
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void vp9_setup_scale_factors_for_frame(struct scale_factors *sf,
- int other_w, int other_h,
- int this_w, int this_h,
- int use_highbd) {
-#else
-void vp9_setup_scale_factors_for_frame(struct scale_factors *sf,
- int other_w, int other_h,
- int this_w, int this_h) {
-#endif
- if (!valid_ref_frame_size(other_w, other_h, this_w, this_h)) {
- sf->x_scale_fp = REF_INVALID_SCALE;
- sf->y_scale_fp = REF_INVALID_SCALE;
- return;
- }
-
- sf->x_scale_fp = get_fixed_point_scale_factor(other_w, this_w);
- sf->y_scale_fp = get_fixed_point_scale_factor(other_h, this_h);
- sf->x_step_q4 = scaled_x(16, sf);
- sf->y_step_q4 = scaled_y(16, sf);
-
- if (vp9_is_scaled(sf)) {
- sf->scale_value_x = scaled_x;
- sf->scale_value_y = scaled_y;
- } else {
- sf->scale_value_x = unscaled_value;
- sf->scale_value_y = unscaled_value;
- }
-
- // TODO(agrange): Investigate the best choice of functions to use here
- // for EIGHTTAP_SMOOTH. Since it is not interpolating, need to choose what
- // to do at full-pel offsets. The current selection, where the filter is
- // applied in one direction only, and not at all for 0,0, seems to give the
- // best quality, but it may be worth trying an additional mode that does
- // do the filtering on full-pel.
-
- if (sf->x_step_q4 == 16) {
- if (sf->y_step_q4 == 16) {
- // No scaling in either direction.
- sf->predict[0][0][0] = vpx_convolve_copy;
- sf->predict[0][0][1] = vpx_convolve_avg;
- sf->predict[0][1][0] = vpx_convolve8_vert;
- sf->predict[0][1][1] = vpx_convolve8_avg_vert;
- sf->predict[1][0][0] = vpx_convolve8_horiz;
- sf->predict[1][0][1] = vpx_convolve8_avg_horiz;
- } else {
- // No scaling in x direction. Must always scale in the y direction.
- sf->predict[0][0][0] = vpx_scaled_vert;
- sf->predict[0][0][1] = vpx_scaled_avg_vert;
- sf->predict[0][1][0] = vpx_scaled_vert;
- sf->predict[0][1][1] = vpx_scaled_avg_vert;
- sf->predict[1][0][0] = vpx_scaled_2d;
- sf->predict[1][0][1] = vpx_scaled_avg_2d;
- }
- } else {
- if (sf->y_step_q4 == 16) {
- // No scaling in the y direction. Must always scale in the x direction.
- sf->predict[0][0][0] = vpx_scaled_horiz;
- sf->predict[0][0][1] = vpx_scaled_avg_horiz;
- sf->predict[0][1][0] = vpx_scaled_2d;
- sf->predict[0][1][1] = vpx_scaled_avg_2d;
- sf->predict[1][0][0] = vpx_scaled_horiz;
- sf->predict[1][0][1] = vpx_scaled_avg_horiz;
- } else {
- // Must always scale in both directions.
- sf->predict[0][0][0] = vpx_scaled_2d;
- sf->predict[0][0][1] = vpx_scaled_avg_2d;
- sf->predict[0][1][0] = vpx_scaled_2d;
- sf->predict[0][1][1] = vpx_scaled_avg_2d;
- sf->predict[1][0][0] = vpx_scaled_2d;
- sf->predict[1][0][1] = vpx_scaled_avg_2d;
- }
- }
-
- // 2D subpel motion always gets filtered in both directions
-
- if ((sf->x_step_q4 != 16) || (sf->y_step_q4 != 16)) {
- sf->predict[1][1][0] = vpx_scaled_2d;
- sf->predict[1][1][1] = vpx_scaled_avg_2d;
- } else {
- sf->predict[1][1][0] = vpx_convolve8;
- sf->predict[1][1][1] = vpx_convolve8_avg;
- }
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (use_highbd) {
- if (sf->x_step_q4 == 16) {
- if (sf->y_step_q4 == 16) {
- // No scaling in either direction.
- sf->highbd_predict[0][0][0] = vpx_highbd_convolve_copy;
- sf->highbd_predict[0][0][1] = vpx_highbd_convolve_avg;
- sf->highbd_predict[0][1][0] = vpx_highbd_convolve8_vert;
- sf->highbd_predict[0][1][1] = vpx_highbd_convolve8_avg_vert;
- sf->highbd_predict[1][0][0] = vpx_highbd_convolve8_horiz;
- sf->highbd_predict[1][0][1] = vpx_highbd_convolve8_avg_horiz;
- } else {
- // No scaling in x direction. Must always scale in the y direction.
- sf->highbd_predict[0][0][0] = vpx_highbd_convolve8_vert;
- sf->highbd_predict[0][0][1] = vpx_highbd_convolve8_avg_vert;
- sf->highbd_predict[0][1][0] = vpx_highbd_convolve8_vert;
- sf->highbd_predict[0][1][1] = vpx_highbd_convolve8_avg_vert;
- sf->highbd_predict[1][0][0] = vpx_highbd_convolve8;
- sf->highbd_predict[1][0][1] = vpx_highbd_convolve8_avg;
- }
- } else {
- if (sf->y_step_q4 == 16) {
- // No scaling in the y direction. Must always scale in the x direction.
- sf->highbd_predict[0][0][0] = vpx_highbd_convolve8_horiz;
- sf->highbd_predict[0][0][1] = vpx_highbd_convolve8_avg_horiz;
- sf->highbd_predict[0][1][0] = vpx_highbd_convolve8;
- sf->highbd_predict[0][1][1] = vpx_highbd_convolve8_avg;
- sf->highbd_predict[1][0][0] = vpx_highbd_convolve8_horiz;
- sf->highbd_predict[1][0][1] = vpx_highbd_convolve8_avg_horiz;
- } else {
- // Must always scale in both directions.
- sf->highbd_predict[0][0][0] = vpx_highbd_convolve8;
- sf->highbd_predict[0][0][1] = vpx_highbd_convolve8_avg;
- sf->highbd_predict[0][1][0] = vpx_highbd_convolve8;
- sf->highbd_predict[0][1][1] = vpx_highbd_convolve8_avg;
- sf->highbd_predict[1][0][0] = vpx_highbd_convolve8;
- sf->highbd_predict[1][0][1] = vpx_highbd_convolve8_avg;
- }
- }
- // 2D subpel motion always gets filtered in both directions.
- sf->highbd_predict[1][1][0] = vpx_highbd_convolve8;
- sf->highbd_predict[1][1][1] = vpx_highbd_convolve8_avg;
- }
-#endif
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_scale.h b/thirdparty/libvpx/vp9/common/vp9_scale.h
deleted file mode 100644
index 5e91041079..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_scale.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_SCALE_H_
-#define VP9_COMMON_VP9_SCALE_H_
-
-#include "vp9/common/vp9_mv.h"
-#include "vpx_dsp/vpx_convolve.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define REF_SCALE_SHIFT 14
-#define REF_NO_SCALE (1 << REF_SCALE_SHIFT)
-#define REF_INVALID_SCALE -1
-
-struct scale_factors {
- int x_scale_fp; // horizontal fixed point scale factor
- int y_scale_fp; // vertical fixed point scale factor
- int x_step_q4;
- int y_step_q4;
-
- int (*scale_value_x)(int val, const struct scale_factors *sf);
- int (*scale_value_y)(int val, const struct scale_factors *sf);
-
- convolve_fn_t predict[2][2][2]; // horiz, vert, avg
-#if CONFIG_VP9_HIGHBITDEPTH
- highbd_convolve_fn_t highbd_predict[2][2][2]; // horiz, vert, avg
-#endif
-};
-
-MV32 vp9_scale_mv(const MV *mv, int x, int y, const struct scale_factors *sf);
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void vp9_setup_scale_factors_for_frame(struct scale_factors *sf,
- int other_w, int other_h,
- int this_w, int this_h,
- int use_high);
-#else
-void vp9_setup_scale_factors_for_frame(struct scale_factors *sf,
- int other_w, int other_h,
- int this_w, int this_h);
-#endif
-
-static INLINE int vp9_is_valid_scale(const struct scale_factors *sf) {
- return sf->x_scale_fp != REF_INVALID_SCALE &&
- sf->y_scale_fp != REF_INVALID_SCALE;
-}
-
-static INLINE int vp9_is_scaled(const struct scale_factors *sf) {
- return vp9_is_valid_scale(sf) &&
- (sf->x_scale_fp != REF_NO_SCALE || sf->y_scale_fp != REF_NO_SCALE);
-}
-
-static INLINE int valid_ref_frame_size(int ref_width, int ref_height,
- int this_width, int this_height) {
- return 2 * this_width >= ref_width &&
- 2 * this_height >= ref_height &&
- this_width <= 16 * ref_width &&
- this_height <= 16 * ref_height;
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_SCALE_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_scan.c b/thirdparty/libvpx/vp9/common/vp9_scan.c
deleted file mode 100644
index 8b8b09f4a3..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_scan.c
+++ /dev/null
@@ -1,725 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "vp9/common/vp9_scan.h"
-
-DECLARE_ALIGNED(16, static const int16_t, default_scan_4x4[16]) = {
- 0, 4, 1, 5,
- 8, 2, 12, 9,
- 3, 6, 13, 10,
- 7, 14, 11, 15,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, col_scan_4x4[16]) = {
- 0, 4, 8, 1,
- 12, 5, 9, 2,
- 13, 6, 10, 3,
- 7, 14, 11, 15,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, row_scan_4x4[16]) = {
- 0, 1, 4, 2,
- 5, 3, 6, 8,
- 9, 7, 12, 10,
- 13, 11, 14, 15,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, default_scan_8x8[64]) = {
- 0, 8, 1, 16, 9, 2, 17, 24,
- 10, 3, 18, 25, 32, 11, 4, 26,
- 33, 19, 40, 12, 34, 27, 5, 41,
- 20, 48, 13, 35, 42, 28, 21, 6,
- 49, 56, 36, 43, 29, 7, 14, 50,
- 57, 44, 22, 37, 15, 51, 58, 30,
- 45, 23, 52, 59, 38, 31, 60, 53,
- 46, 39, 61, 54, 47, 62, 55, 63,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, col_scan_8x8[64]) = {
- 0, 8, 16, 1, 24, 9, 32, 17,
- 2, 40, 25, 10, 33, 18, 48, 3,
- 26, 41, 11, 56, 19, 34, 4, 49,
- 27, 42, 12, 35, 20, 57, 50, 28,
- 5, 43, 13, 36, 58, 51, 21, 44,
- 6, 29, 59, 37, 14, 52, 22, 7,
- 45, 60, 30, 15, 38, 53, 23, 46,
- 31, 61, 39, 54, 47, 62, 55, 63,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, row_scan_8x8[64]) = {
- 0, 1, 2, 8, 9, 3, 16, 10,
- 4, 17, 11, 24, 5, 18, 25, 12,
- 19, 26, 32, 6, 13, 20, 33, 27,
- 7, 34, 40, 21, 28, 41, 14, 35,
- 48, 42, 29, 36, 49, 22, 43, 15,
- 56, 37, 50, 44, 30, 57, 23, 51,
- 58, 45, 38, 52, 31, 59, 53, 46,
- 60, 39, 61, 47, 54, 55, 62, 63,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, default_scan_16x16[256]) = {
- 0, 16, 1, 32, 17, 2, 48, 33, 18, 3, 64, 34, 49, 19, 65, 80,
- 50, 4, 35, 66, 20, 81, 96, 51, 5, 36, 82, 97, 67, 112, 21, 52,
- 98, 37, 83, 113, 6, 68, 128, 53, 22, 99, 114, 84, 7, 129, 38, 69,
- 100, 115, 144, 130, 85, 54, 23, 8, 145, 39, 70, 116, 101, 131, 160, 146,
- 55, 86, 24, 71, 132, 117, 161, 40, 9, 102, 147, 176, 162, 87, 56, 25,
- 133, 118, 177, 148, 72, 103, 41, 163, 10, 192, 178, 88, 57, 134, 149, 119,
- 26, 164, 73, 104, 193, 42, 179, 208, 11, 135, 89, 165, 120, 150, 58, 194,
- 180, 27, 74, 209, 105, 151, 136, 43, 90, 224, 166, 195, 181, 121, 210, 59,
- 12, 152, 106, 167, 196, 75, 137, 225, 211, 240, 182, 122, 91, 28, 197, 13,
- 226, 168, 183, 153, 44, 212, 138, 107, 241, 60, 29, 123, 198, 184, 227, 169,
- 242, 76, 213, 154, 45, 92, 14, 199, 139, 61, 228, 214, 170, 185, 243, 108,
- 77, 155, 30, 15, 200, 229, 124, 215, 244, 93, 46, 186, 171, 201, 109, 140,
- 230, 62, 216, 245, 31, 125, 78, 156, 231, 47, 187, 202, 217, 94, 246, 141,
- 63, 232, 172, 110, 247, 157, 79, 218, 203, 126, 233, 188, 248, 95, 173, 142,
- 219, 111, 249, 234, 158, 127, 189, 204, 250, 235, 143, 174, 220, 205, 159,
- 251,
- 190, 221, 175, 236, 237, 191, 206, 252, 222, 253, 207, 238, 223, 254, 239,
- 255,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, col_scan_16x16[256]) = {
- 0, 16, 32, 48, 1, 64, 17, 80, 33, 96, 49, 2, 65, 112, 18, 81,
- 34, 128, 50, 97, 3, 66, 144, 19, 113, 35, 82, 160, 98, 51, 129, 4,
- 67, 176, 20, 114, 145, 83, 36, 99, 130, 52, 192, 5, 161, 68, 115, 21,
- 146, 84, 208, 177, 37, 131, 100, 53, 162, 224, 69, 6, 116, 193, 147, 85,
- 22, 240, 132, 38, 178, 101, 163, 54, 209, 117, 70, 7, 148, 194, 86, 179,
- 225, 23, 133, 39, 164, 8, 102, 210, 241, 55, 195, 118, 149, 71, 180, 24,
- 87, 226, 134, 165, 211, 40, 103, 56, 72, 150, 196, 242, 119, 9, 181, 227,
- 88, 166, 25, 135, 41, 104, 212, 57, 151, 197, 120, 73, 243, 182, 136, 167,
- 213, 89, 10, 228, 105, 152, 198, 26, 42, 121, 183, 244, 168, 58, 137, 229,
- 74, 214, 90, 153, 199, 184, 11, 106, 245, 27, 122, 230, 169, 43, 215, 59,
- 200, 138, 185, 246, 75, 12, 91, 154, 216, 231, 107, 28, 44, 201, 123, 170,
- 60, 247, 232, 76, 139, 13, 92, 217, 186, 248, 155, 108, 29, 124, 45, 202,
- 233, 171, 61, 14, 77, 140, 15, 249, 93, 30, 187, 156, 218, 46, 109, 125,
- 62, 172, 78, 203, 31, 141, 234, 94, 47, 188, 63, 157, 110, 250, 219, 79,
- 126, 204, 173, 142, 95, 189, 111, 235, 158, 220, 251, 127, 174, 143, 205,
- 236,
- 159, 190, 221, 252, 175, 206, 237, 191, 253, 222, 238, 207, 254, 223, 239,
- 255,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, row_scan_16x16[256]) = {
- 0, 1, 2, 16, 3, 17, 4, 18, 32, 5, 33, 19, 6, 34, 48, 20,
- 49, 7, 35, 21, 50, 64, 8, 36, 65, 22, 51, 37, 80, 9, 66, 52,
- 23, 38, 81, 67, 10, 53, 24, 82, 68, 96, 39, 11, 54, 83, 97, 69,
- 25, 98, 84, 40, 112, 55, 12, 70, 99, 113, 85, 26, 41, 56, 114, 100,
- 13, 71, 128, 86, 27, 115, 101, 129, 42, 57, 72, 116, 14, 87, 130, 102,
- 144, 73, 131, 117, 28, 58, 15, 88, 43, 145, 103, 132, 146, 118, 74, 160,
- 89, 133, 104, 29, 59, 147, 119, 44, 161, 148, 90, 105, 134, 162, 120, 176,
- 75, 135, 149, 30, 60, 163, 177, 45, 121, 91, 106, 164, 178, 150, 192, 136,
- 165, 179, 31, 151, 193, 76, 122, 61, 137, 194, 107, 152, 180, 208, 46, 166,
- 167, 195, 92, 181, 138, 209, 123, 153, 224, 196, 77, 168, 210, 182, 240, 108,
- 197, 62, 154, 225, 183, 169, 211, 47, 139, 93, 184, 226, 212, 241, 198, 170,
- 124, 155, 199, 78, 213, 185, 109, 227, 200, 63, 228, 242, 140, 214, 171, 186,
- 156, 229, 243, 125, 94, 201, 244, 215, 216, 230, 141, 187, 202, 79, 172, 110,
- 157, 245, 217, 231, 95, 246, 232, 126, 203, 247, 233, 173, 218, 142, 111,
- 158,
- 188, 248, 127, 234, 219, 249, 189, 204, 143, 174, 159, 250, 235, 205, 220,
- 175,
- 190, 251, 221, 191, 206, 236, 207, 237, 252, 222, 253, 223, 238, 239, 254,
- 255,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, default_scan_32x32[1024]) = {
- 0, 32, 1, 64, 33, 2, 96, 65, 34, 128, 3, 97, 66, 160,
- 129, 35, 98, 4, 67, 130, 161, 192, 36, 99, 224, 5, 162, 193,
- 68, 131, 37, 100,
- 225, 194, 256, 163, 69, 132, 6, 226, 257, 288, 195, 101, 164, 38,
- 258, 7, 227, 289, 133, 320, 70, 196, 165, 290, 259, 228, 39, 321,
- 102, 352, 8, 197,
- 71, 134, 322, 291, 260, 353, 384, 229, 166, 103, 40, 354, 323, 292,
- 135, 385, 198, 261, 72, 9, 416, 167, 386, 355, 230, 324, 104, 293,
- 41, 417, 199, 136,
- 262, 387, 448, 325, 356, 10, 73, 418, 231, 168, 449, 294, 388, 105,
- 419, 263, 42, 200, 357, 450, 137, 480, 74, 326, 232, 11, 389, 169,
- 295, 420, 106, 451,
- 481, 358, 264, 327, 201, 43, 138, 512, 482, 390, 296, 233, 170, 421,
- 75, 452, 359, 12, 513, 265, 483, 328, 107, 202, 514, 544, 422, 391,
- 453, 139, 44, 234,
- 484, 297, 360, 171, 76, 515, 545, 266, 329, 454, 13, 423, 203, 108,
- 546, 485, 576, 298, 235, 140, 361, 330, 172, 547, 45, 455, 267, 577,
- 486, 77, 204, 362,
- 608, 14, 299, 578, 109, 236, 487, 609, 331, 141, 579, 46, 15, 173,
- 610, 363, 78, 205, 16, 110, 237, 611, 142, 47, 174, 79, 206, 17,
- 111, 238, 48, 143,
- 80, 175, 112, 207, 49, 18, 239, 81, 113, 19, 50, 82, 114, 51,
- 83, 115, 640, 516, 392, 268, 144, 20, 672, 641, 548, 517, 424,
- 393, 300, 269, 176, 145,
- 52, 21, 704, 673, 642, 580, 549, 518, 456, 425, 394, 332, 301,
- 270, 208, 177, 146, 84, 53, 22, 736, 705, 674, 643, 612, 581,
- 550, 519, 488, 457, 426, 395,
- 364, 333, 302, 271, 240, 209, 178, 147, 116, 85, 54, 23, 737,
- 706, 675, 613, 582, 551, 489, 458, 427, 365, 334, 303, 241,
- 210, 179, 117, 86, 55, 738, 707,
- 614, 583, 490, 459, 366, 335, 242, 211, 118, 87, 739, 615, 491,
- 367, 243, 119, 768, 644, 520, 396, 272, 148, 24, 800, 769, 676,
- 645, 552, 521, 428, 397, 304,
- 273, 180, 149, 56, 25, 832, 801, 770, 708, 677, 646, 584, 553,
- 522, 460, 429, 398, 336, 305, 274, 212, 181, 150, 88, 57, 26,
- 864, 833, 802, 771, 740, 709,
- 678, 647, 616, 585, 554, 523, 492, 461, 430, 399, 368, 337, 306,
- 275, 244, 213, 182, 151, 120, 89, 58, 27, 865, 834, 803, 741,
- 710, 679, 617, 586, 555, 493,
- 462, 431, 369, 338, 307, 245, 214, 183, 121, 90, 59, 866, 835,
- 742, 711, 618, 587, 494, 463, 370, 339, 246, 215, 122, 91, 867,
- 743, 619, 495, 371, 247, 123,
- 896, 772, 648, 524, 400, 276, 152, 28, 928, 897, 804, 773, 680,
- 649, 556, 525, 432, 401, 308, 277, 184, 153, 60, 29, 960, 929,
- 898, 836, 805, 774, 712, 681,
- 650, 588, 557, 526, 464, 433, 402, 340, 309, 278, 216, 185, 154,
- 92, 61, 30, 992, 961, 930, 899, 868, 837, 806, 775, 744, 713, 682,
- 651, 620, 589, 558, 527,
- 496, 465, 434, 403, 372, 341, 310, 279, 248, 217, 186, 155, 124,
- 93, 62, 31, 993, 962, 931, 869, 838, 807, 745, 714, 683, 621, 590,
- 559, 497, 466, 435, 373,
- 342, 311, 249, 218, 187, 125, 94, 63, 994, 963, 870, 839, 746, 715,
- 622, 591, 498, 467, 374, 343, 250, 219, 126, 95, 995, 871, 747, 623,
- 499, 375, 251, 127,
- 900, 776, 652, 528, 404, 280, 156, 932, 901, 808, 777, 684, 653, 560,
- 529, 436, 405, 312, 281, 188, 157, 964, 933, 902, 840, 809, 778, 716,
- 685, 654, 592, 561,
- 530, 468, 437, 406, 344, 313, 282, 220, 189, 158, 996, 965, 934, 903,
- 872, 841, 810, 779, 748, 717, 686, 655, 624, 593, 562, 531, 500, 469,
- 438, 407, 376, 345,
- 314, 283, 252, 221, 190, 159, 997, 966, 935, 873, 842, 811, 749, 718,
- 687, 625, 594, 563, 501, 470, 439, 377, 346, 315, 253, 222, 191, 998,
- 967, 874, 843, 750,
- 719, 626, 595, 502, 471, 378, 347, 254, 223, 999, 875, 751, 627, 503,
- 379, 255, 904, 780, 656, 532, 408, 284, 936, 905, 812, 781, 688, 657,
- 564, 533, 440, 409,
- 316, 285, 968, 937, 906, 844, 813, 782, 720, 689, 658, 596, 565, 534,
- 472, 441, 410, 348, 317, 286, 1000, 969, 938, 907, 876, 845, 814, 783,
- 752, 721, 690, 659,
- 628, 597, 566, 535, 504, 473, 442, 411, 380, 349, 318, 287, 1001, 970,
- 939, 877, 846, 815, 753, 722, 691, 629, 598, 567, 505, 474, 443, 381,
- 350, 319, 1002, 971,
- 878, 847, 754, 723, 630, 599, 506, 475, 382, 351, 1003, 879, 755, 631,
- 507, 383, 908, 784, 660, 536, 412, 940, 909, 816, 785, 692, 661, 568,
- 537, 444, 413, 972,
- 941, 910, 848, 817, 786, 724, 693, 662, 600, 569, 538, 476, 445, 414,
- 1004, 973, 942, 911, 880, 849, 818, 787, 756, 725, 694, 663, 632, 601,
- 570, 539, 508, 477,
- 446, 415, 1005, 974, 943, 881, 850, 819, 757, 726, 695, 633, 602, 571,
- 509, 478, 447, 1006, 975, 882, 851, 758, 727, 634, 603, 510, 479,
- 1007, 883, 759, 635, 511,
- 912, 788, 664, 540, 944, 913, 820, 789, 696, 665, 572, 541, 976, 945,
- 914, 852, 821, 790, 728, 697, 666, 604, 573, 542, 1008, 977, 946, 915,
- 884, 853, 822, 791,
- 760, 729, 698, 667, 636, 605, 574, 543, 1009, 978, 947, 885, 854, 823,
- 761, 730, 699, 637, 606, 575, 1010, 979, 886, 855, 762, 731, 638, 607,
- 1011, 887, 763, 639,
- 916, 792, 668, 948, 917, 824, 793, 700, 669, 980, 949, 918, 856, 825,
- 794, 732, 701, 670, 1012, 981, 950, 919, 888, 857, 826, 795, 764, 733,
- 702, 671, 1013, 982,
- 951, 889, 858, 827, 765, 734, 703, 1014, 983, 890, 859, 766, 735, 1015,
- 891, 767, 920, 796, 952, 921, 828, 797, 984, 953, 922, 860, 829, 798,
- 1016, 985, 954, 923,
- 892, 861, 830, 799, 1017, 986, 955, 893, 862, 831, 1018, 987, 894, 863,
- 1019, 895, 924, 956, 925, 988, 957, 926, 1020, 989, 958, 927, 1021,
- 990, 959, 1022, 991, 1023,
-};
-
-// Neighborhood 2-tuples for various scans and blocksizes,
-// in {top, left} order for each position in corresponding scan order.
-DECLARE_ALIGNED(16, static const int16_t,
- default_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 1, 1, 8, 8, 5, 8, 2, 2, 2, 5, 9, 12, 6, 9,
- 3, 6, 10, 13, 7, 10, 11, 14, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- col_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 4, 4, 0, 0, 8, 8, 1, 1, 5, 5, 1, 1, 9, 9, 2, 2, 6, 6, 2, 2, 3,
- 3, 10, 10, 7, 7, 11, 11, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- row_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 0, 0, 1, 1, 4, 4, 2, 2, 5, 5, 4, 4, 8, 8, 6, 6, 8, 8, 9, 9, 12,
- 12, 10, 10, 13, 13, 14, 14, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- col_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 8, 8, 0, 0, 16, 16, 1, 1, 24, 24, 9, 9, 1, 1, 32, 32, 17, 17, 2,
- 2, 25, 25, 10, 10, 40, 40, 2, 2, 18, 18, 33, 33, 3, 3, 48, 48, 11, 11, 26,
- 26, 3, 3, 41, 41, 19, 19, 34, 34, 4, 4, 27, 27, 12, 12, 49, 49, 42, 42, 20,
- 20, 4, 4, 35, 35, 5, 5, 28, 28, 50, 50, 43, 43, 13, 13, 36, 36, 5, 5, 21, 21,
- 51, 51, 29, 29, 6, 6, 44, 44, 14, 14, 6, 6, 37, 37, 52, 52, 22, 22, 7, 7, 30,
- 30, 45, 45, 15, 15, 38, 38, 23, 23, 53, 53, 31, 31, 46, 46, 39, 39, 54, 54,
- 47, 47, 55, 55, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- row_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 1, 1, 0, 0, 8, 8, 2, 2, 8, 8, 9, 9, 3, 3, 16, 16, 10, 10, 16, 16,
- 4, 4, 17, 17, 24, 24, 11, 11, 18, 18, 25, 25, 24, 24, 5, 5, 12, 12, 19, 19,
- 32, 32, 26, 26, 6, 6, 33, 33, 32, 32, 20, 20, 27, 27, 40, 40, 13, 13, 34, 34,
- 40, 40, 41, 41, 28, 28, 35, 35, 48, 48, 21, 21, 42, 42, 14, 14, 48, 48, 36,
- 36, 49, 49, 43, 43, 29, 29, 56, 56, 22, 22, 50, 50, 57, 57, 44, 44, 37, 37,
- 51, 51, 30, 30, 58, 58, 52, 52, 45, 45, 59, 59, 38, 38, 60, 60, 46, 46, 53,
- 53, 54, 54, 61, 61, 62, 62, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- default_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 0, 0, 8, 8, 1, 8, 1, 1, 9, 16, 16, 16, 2, 9, 2, 2, 10, 17, 17,
- 24, 24, 24, 3, 10, 3, 3, 18, 25, 25, 32, 11, 18, 32, 32, 4, 11, 26, 33, 19,
- 26, 4, 4, 33, 40, 12, 19, 40, 40, 5, 12, 27, 34, 34, 41, 20, 27, 13, 20, 5,
- 5, 41, 48, 48, 48, 28, 35, 35, 42, 21, 28, 6, 6, 6, 13, 42, 49, 49, 56, 36,
- 43, 14, 21, 29, 36, 7, 14, 43, 50, 50, 57, 22, 29, 37, 44, 15, 22, 44, 51,
- 51, 58, 30, 37, 23, 30, 52, 59, 45, 52, 38, 45, 31, 38, 53, 60, 46, 53, 39,
- 46, 54, 61, 47, 54, 55, 62, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- col_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 16, 16, 32, 32, 0, 0, 48, 48, 1, 1, 64, 64,
- 17, 17, 80, 80, 33, 33, 1, 1, 49, 49, 96, 96, 2, 2, 65, 65,
- 18, 18, 112, 112, 34, 34, 81, 81, 2, 2, 50, 50, 128, 128, 3, 3,
- 97, 97, 19, 19, 66, 66, 144, 144, 82, 82, 35, 35, 113, 113, 3, 3,
- 51, 51, 160, 160, 4, 4, 98, 98, 129, 129, 67, 67, 20, 20, 83, 83,
- 114, 114, 36, 36, 176, 176, 4, 4, 145, 145, 52, 52, 99, 99, 5, 5,
- 130, 130, 68, 68, 192, 192, 161, 161, 21, 21, 115, 115, 84, 84, 37, 37,
- 146, 146, 208, 208, 53, 53, 5, 5, 100, 100, 177, 177, 131, 131, 69, 69,
- 6, 6, 224, 224, 116, 116, 22, 22, 162, 162, 85, 85, 147, 147, 38, 38,
- 193, 193, 101, 101, 54, 54, 6, 6, 132, 132, 178, 178, 70, 70, 163, 163,
- 209, 209, 7, 7, 117, 117, 23, 23, 148, 148, 7, 7, 86, 86, 194, 194,
- 225, 225, 39, 39, 179, 179, 102, 102, 133, 133, 55, 55, 164, 164, 8, 8,
- 71, 71, 210, 210, 118, 118, 149, 149, 195, 195, 24, 24, 87, 87, 40, 40,
- 56, 56, 134, 134, 180, 180, 226, 226, 103, 103, 8, 8, 165, 165, 211, 211,
- 72, 72, 150, 150, 9, 9, 119, 119, 25, 25, 88, 88, 196, 196, 41, 41,
- 135, 135, 181, 181, 104, 104, 57, 57, 227, 227, 166, 166, 120, 120, 151, 151,
- 197, 197, 73, 73, 9, 9, 212, 212, 89, 89, 136, 136, 182, 182, 10, 10,
- 26, 26, 105, 105, 167, 167, 228, 228, 152, 152, 42, 42, 121, 121, 213, 213,
- 58, 58, 198, 198, 74, 74, 137, 137, 183, 183, 168, 168, 10, 10, 90, 90,
- 229, 229, 11, 11, 106, 106, 214, 214, 153, 153, 27, 27, 199, 199, 43, 43,
- 184, 184, 122, 122, 169, 169, 230, 230, 59, 59, 11, 11, 75, 75, 138, 138,
- 200, 200, 215, 215, 91, 91, 12, 12, 28, 28, 185, 185, 107, 107, 154, 154,
- 44, 44, 231, 231, 216, 216, 60, 60, 123, 123, 12, 12, 76, 76, 201, 201,
- 170, 170, 232, 232, 139, 139, 92, 92, 13, 13, 108, 108, 29, 29, 186, 186,
- 217, 217, 155, 155, 45, 45, 13, 13, 61, 61, 124, 124, 14, 14, 233, 233,
- 77, 77, 14, 14, 171, 171, 140, 140, 202, 202, 30, 30, 93, 93, 109, 109,
- 46, 46, 156, 156, 62, 62, 187, 187, 15, 15, 125, 125, 218, 218, 78, 78,
- 31, 31, 172, 172, 47, 47, 141, 141, 94, 94, 234, 234, 203, 203, 63, 63,
- 110, 110, 188, 188, 157, 157, 126, 126, 79, 79, 173, 173, 95, 95, 219, 219,
- 142, 142, 204, 204, 235, 235, 111, 111, 158, 158, 127, 127, 189, 189, 220,
- 220, 143, 143, 174, 174, 205, 205, 236, 236, 159, 159, 190, 190, 221, 221,
- 175, 175, 237, 237, 206, 206, 222, 222, 191, 191, 238, 238, 207, 207, 223,
- 223, 239, 239, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- row_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 16, 16, 3, 3, 17, 17,
- 16, 16, 4, 4, 32, 32, 18, 18, 5, 5, 33, 33, 32, 32, 19, 19,
- 48, 48, 6, 6, 34, 34, 20, 20, 49, 49, 48, 48, 7, 7, 35, 35,
- 64, 64, 21, 21, 50, 50, 36, 36, 64, 64, 8, 8, 65, 65, 51, 51,
- 22, 22, 37, 37, 80, 80, 66, 66, 9, 9, 52, 52, 23, 23, 81, 81,
- 67, 67, 80, 80, 38, 38, 10, 10, 53, 53, 82, 82, 96, 96, 68, 68,
- 24, 24, 97, 97, 83, 83, 39, 39, 96, 96, 54, 54, 11, 11, 69, 69,
- 98, 98, 112, 112, 84, 84, 25, 25, 40, 40, 55, 55, 113, 113, 99, 99,
- 12, 12, 70, 70, 112, 112, 85, 85, 26, 26, 114, 114, 100, 100, 128, 128,
- 41, 41, 56, 56, 71, 71, 115, 115, 13, 13, 86, 86, 129, 129, 101, 101,
- 128, 128, 72, 72, 130, 130, 116, 116, 27, 27, 57, 57, 14, 14, 87, 87,
- 42, 42, 144, 144, 102, 102, 131, 131, 145, 145, 117, 117, 73, 73, 144, 144,
- 88, 88, 132, 132, 103, 103, 28, 28, 58, 58, 146, 146, 118, 118, 43, 43,
- 160, 160, 147, 147, 89, 89, 104, 104, 133, 133, 161, 161, 119, 119, 160, 160,
- 74, 74, 134, 134, 148, 148, 29, 29, 59, 59, 162, 162, 176, 176, 44, 44,
- 120, 120, 90, 90, 105, 105, 163, 163, 177, 177, 149, 149, 176, 176, 135, 135,
- 164, 164, 178, 178, 30, 30, 150, 150, 192, 192, 75, 75, 121, 121, 60, 60,
- 136, 136, 193, 193, 106, 106, 151, 151, 179, 179, 192, 192, 45, 45, 165, 165,
- 166, 166, 194, 194, 91, 91, 180, 180, 137, 137, 208, 208, 122, 122, 152, 152,
- 208, 208, 195, 195, 76, 76, 167, 167, 209, 209, 181, 181, 224, 224, 107, 107,
- 196, 196, 61, 61, 153, 153, 224, 224, 182, 182, 168, 168, 210, 210, 46, 46,
- 138, 138, 92, 92, 183, 183, 225, 225, 211, 211, 240, 240, 197, 197, 169, 169,
- 123, 123, 154, 154, 198, 198, 77, 77, 212, 212, 184, 184, 108, 108, 226, 226,
- 199, 199, 62, 62, 227, 227, 241, 241, 139, 139, 213, 213, 170, 170, 185, 185,
- 155, 155, 228, 228, 242, 242, 124, 124, 93, 93, 200, 200, 243, 243, 214, 214,
- 215, 215, 229, 229, 140, 140, 186, 186, 201, 201, 78, 78, 171, 171, 109, 109,
- 156, 156, 244, 244, 216, 216, 230, 230, 94, 94, 245, 245, 231, 231, 125, 125,
- 202, 202, 246, 246, 232, 232, 172, 172, 217, 217, 141, 141, 110, 110, 157,
- 157, 187, 187, 247, 247, 126, 126, 233, 233, 218, 218, 248, 248, 188, 188,
- 203, 203, 142, 142, 173, 173, 158, 158, 249, 249, 234, 234, 204, 204, 219,
- 219, 174, 174, 189, 189, 250, 250, 220, 220, 190, 190, 205, 205, 235, 235,
- 206, 206, 236, 236, 251, 251, 221, 221, 252, 252, 222, 222, 237, 237, 238,
- 238, 253, 253, 254, 254, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- default_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 0, 0, 16, 16, 1, 16, 1, 1, 32, 32, 17, 32,
- 2, 17, 2, 2, 48, 48, 18, 33, 33, 48, 3, 18, 49, 64, 64, 64,
- 34, 49, 3, 3, 19, 34, 50, 65, 4, 19, 65, 80, 80, 80, 35, 50,
- 4, 4, 20, 35, 66, 81, 81, 96, 51, 66, 96, 96, 5, 20, 36, 51,
- 82, 97, 21, 36, 67, 82, 97, 112, 5, 5, 52, 67, 112, 112, 37, 52,
- 6, 21, 83, 98, 98, 113, 68, 83, 6, 6, 113, 128, 22, 37, 53, 68,
- 84, 99, 99, 114, 128, 128, 114, 129, 69, 84, 38, 53, 7, 22, 7, 7,
- 129, 144, 23, 38, 54, 69, 100, 115, 85, 100, 115, 130, 144, 144, 130, 145,
- 39, 54, 70, 85, 8, 23, 55, 70, 116, 131, 101, 116, 145, 160, 24, 39,
- 8, 8, 86, 101, 131, 146, 160, 160, 146, 161, 71, 86, 40, 55, 9, 24,
- 117, 132, 102, 117, 161, 176, 132, 147, 56, 71, 87, 102, 25, 40, 147, 162,
- 9, 9, 176, 176, 162, 177, 72, 87, 41, 56, 118, 133, 133, 148, 103, 118,
- 10, 25, 148, 163, 57, 72, 88, 103, 177, 192, 26, 41, 163, 178, 192, 192,
- 10, 10, 119, 134, 73, 88, 149, 164, 104, 119, 134, 149, 42, 57, 178, 193,
- 164, 179, 11, 26, 58, 73, 193, 208, 89, 104, 135, 150, 120, 135, 27, 42,
- 74, 89, 208, 208, 150, 165, 179, 194, 165, 180, 105, 120, 194, 209, 43, 58,
- 11, 11, 136, 151, 90, 105, 151, 166, 180, 195, 59, 74, 121, 136, 209, 224,
- 195, 210, 224, 224, 166, 181, 106, 121, 75, 90, 12, 27, 181, 196, 12, 12,
- 210, 225, 152, 167, 167, 182, 137, 152, 28, 43, 196, 211, 122, 137, 91, 106,
- 225, 240, 44, 59, 13, 28, 107, 122, 182, 197, 168, 183, 211, 226, 153, 168,
- 226, 241, 60, 75, 197, 212, 138, 153, 29, 44, 76, 91, 13, 13, 183, 198,
- 123, 138, 45, 60, 212, 227, 198, 213, 154, 169, 169, 184, 227, 242, 92, 107,
- 61, 76, 139, 154, 14, 29, 14, 14, 184, 199, 213, 228, 108, 123, 199, 214,
- 228, 243, 77, 92, 30, 45, 170, 185, 155, 170, 185, 200, 93, 108, 124, 139,
- 214, 229, 46, 61, 200, 215, 229, 244, 15, 30, 109, 124, 62, 77, 140, 155,
- 215, 230, 31, 46, 171, 186, 186, 201, 201, 216, 78, 93, 230, 245, 125, 140,
- 47, 62, 216, 231, 156, 171, 94, 109, 231, 246, 141, 156, 63, 78, 202, 217,
- 187, 202, 110, 125, 217, 232, 172, 187, 232, 247, 79, 94, 157, 172, 126, 141,
- 203, 218, 95, 110, 233, 248, 218, 233, 142, 157, 111, 126, 173, 188, 188, 203,
- 234, 249, 219, 234, 127, 142, 158, 173, 204, 219, 189, 204, 143, 158, 235,
- 250, 174, 189, 205, 220, 159, 174, 220, 235, 221, 236, 175, 190, 190, 205,
- 236, 251, 206, 221, 237, 252, 191, 206, 222, 237, 207, 222, 238, 253, 223,
- 238, 239, 254, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t,
- default_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]) = {
- 0, 0, 0, 0, 0, 0, 32, 32, 1, 32, 1, 1, 64, 64, 33, 64,
- 2, 33, 96, 96, 2, 2, 65, 96, 34, 65, 128, 128, 97, 128, 3, 34,
- 66, 97, 3, 3, 35, 66, 98, 129, 129, 160, 160, 160, 4, 35, 67, 98,
- 192, 192, 4, 4, 130, 161, 161, 192, 36, 67, 99, 130, 5, 36, 68, 99,
- 193, 224, 162, 193, 224, 224, 131, 162, 37, 68, 100, 131, 5, 5, 194, 225,
- 225, 256, 256, 256, 163, 194, 69, 100, 132, 163, 6, 37, 226, 257, 6, 6,
- 195, 226, 257, 288, 101, 132, 288, 288, 38, 69, 164, 195, 133, 164, 258, 289,
- 227, 258, 196, 227, 7, 38, 289, 320, 70, 101, 320, 320, 7, 7, 165, 196,
- 39, 70, 102, 133, 290, 321, 259, 290, 228, 259, 321, 352, 352, 352, 197, 228,
- 134, 165, 71, 102, 8, 39, 322, 353, 291, 322, 260, 291, 103, 134, 353, 384,
- 166, 197, 229, 260, 40, 71, 8, 8, 384, 384, 135, 166, 354, 385, 323, 354,
- 198, 229, 292, 323, 72, 103, 261, 292, 9, 40, 385, 416, 167, 198, 104, 135,
- 230, 261, 355, 386, 416, 416, 293, 324, 324, 355, 9, 9, 41, 72, 386, 417,
- 199, 230, 136, 167, 417, 448, 262, 293, 356, 387, 73, 104, 387, 418, 231, 262,
- 10, 41, 168, 199, 325, 356, 418, 449, 105, 136, 448, 448, 42, 73, 294, 325,
- 200, 231, 10, 10, 357, 388, 137, 168, 263, 294, 388, 419, 74, 105, 419, 450,
- 449, 480, 326, 357, 232, 263, 295, 326, 169, 200, 11, 42, 106, 137, 480, 480,
- 450, 481, 358, 389, 264, 295, 201, 232, 138, 169, 389, 420, 43, 74, 420, 451,
- 327, 358, 11, 11, 481, 512, 233, 264, 451, 482, 296, 327, 75, 106, 170, 201,
- 482, 513, 512, 512, 390, 421, 359, 390, 421, 452, 107, 138, 12, 43, 202, 233,
- 452, 483, 265, 296, 328, 359, 139, 170, 44, 75, 483, 514, 513, 544, 234, 265,
- 297, 328, 422, 453, 12, 12, 391, 422, 171, 202, 76, 107, 514, 545, 453, 484,
- 544, 544, 266, 297, 203, 234, 108, 139, 329, 360, 298, 329, 140, 171, 515,
- 546, 13, 44, 423, 454, 235, 266, 545, 576, 454, 485, 45, 76, 172, 203, 330,
- 361, 576, 576, 13, 13, 267, 298, 546, 577, 77, 108, 204, 235, 455, 486, 577,
- 608, 299, 330, 109, 140, 547, 578, 14, 45, 14, 14, 141, 172, 578, 609, 331,
- 362, 46, 77, 173, 204, 15, 15, 78, 109, 205, 236, 579, 610, 110, 141, 15, 46,
- 142, 173, 47, 78, 174, 205, 16, 16, 79, 110, 206, 237, 16, 47, 111, 142,
- 48, 79, 143, 174, 80, 111, 175, 206, 17, 48, 17, 17, 207, 238, 49, 80,
- 81, 112, 18, 18, 18, 49, 50, 81, 82, 113, 19, 50, 51, 82, 83, 114, 608, 608,
- 484, 515, 360, 391, 236, 267, 112, 143, 19, 19, 640, 640, 609, 640, 516, 547,
- 485, 516, 392, 423, 361, 392, 268, 299, 237, 268, 144, 175, 113, 144, 20, 51,
- 20, 20, 672, 672, 641, 672, 610, 641, 548, 579, 517, 548, 486, 517, 424, 455,
- 393, 424, 362, 393, 300, 331, 269, 300, 238, 269, 176, 207, 145, 176, 114,
- 145, 52, 83, 21, 52, 21, 21, 704, 704, 673, 704, 642, 673, 611, 642, 580,
- 611, 549, 580, 518, 549, 487, 518, 456, 487, 425, 456, 394, 425, 363, 394,
- 332, 363, 301, 332, 270, 301, 239, 270, 208, 239, 177, 208, 146, 177, 115,
- 146, 84, 115, 53, 84, 22, 53, 22, 22, 705, 736, 674, 705, 643, 674, 581, 612,
- 550, 581, 519, 550, 457, 488, 426, 457, 395, 426, 333, 364, 302, 333, 271,
- 302, 209, 240, 178, 209, 147, 178, 85, 116, 54, 85, 23, 54, 706, 737, 675,
- 706, 582, 613, 551, 582, 458, 489, 427, 458, 334, 365, 303, 334, 210, 241,
- 179, 210, 86, 117, 55, 86, 707, 738, 583, 614, 459, 490, 335, 366, 211, 242,
- 87, 118, 736, 736, 612, 643, 488, 519, 364, 395, 240, 271, 116, 147, 23, 23,
- 768, 768, 737, 768, 644, 675, 613, 644, 520, 551, 489, 520, 396, 427, 365,
- 396, 272, 303, 241, 272, 148, 179, 117, 148, 24, 55, 24, 24, 800, 800, 769,
- 800, 738, 769, 676, 707, 645, 676, 614, 645, 552, 583, 521, 552, 490, 521,
- 428, 459, 397, 428, 366, 397, 304, 335, 273, 304, 242, 273, 180, 211, 149,
- 180, 118, 149, 56, 87, 25, 56, 25, 25, 832, 832, 801, 832, 770, 801, 739,
- 770, 708, 739, 677, 708, 646, 677, 615, 646, 584, 615, 553, 584, 522, 553,
- 491, 522, 460, 491, 429, 460, 398, 429, 367, 398, 336, 367, 305, 336, 274,
- 305, 243, 274, 212, 243, 181, 212, 150, 181, 119, 150, 88, 119, 57, 88, 26,
- 57, 26, 26, 833, 864, 802, 833, 771, 802, 709, 740, 678, 709, 647, 678, 585,
- 616, 554, 585, 523, 554, 461, 492, 430, 461, 399, 430, 337, 368, 306, 337,
- 275, 306, 213, 244, 182, 213, 151, 182, 89, 120, 58, 89, 27, 58, 834, 865,
- 803, 834, 710, 741, 679, 710, 586, 617, 555, 586, 462, 493, 431, 462, 338,
- 369, 307, 338, 214, 245, 183, 214, 90, 121, 59, 90, 835, 866, 711, 742, 587,
- 618, 463, 494, 339, 370, 215, 246, 91, 122, 864, 864, 740, 771, 616, 647,
- 492, 523, 368, 399, 244, 275, 120, 151, 27, 27, 896, 896, 865, 896, 772, 803,
- 741, 772, 648, 679, 617, 648, 524, 555, 493, 524, 400, 431, 369, 400, 276,
- 307, 245, 276, 152, 183, 121, 152, 28, 59, 28, 28, 928, 928, 897, 928, 866,
- 897, 804, 835, 773, 804, 742, 773, 680, 711, 649, 680, 618, 649, 556, 587,
- 525, 556, 494, 525, 432, 463, 401, 432, 370, 401, 308, 339, 277, 308, 246,
- 277, 184, 215, 153, 184, 122, 153, 60, 91, 29, 60, 29, 29, 960, 960, 929,
- 960, 898, 929, 867, 898, 836, 867, 805, 836, 774, 805, 743, 774, 712, 743,
- 681, 712, 650, 681, 619, 650, 588, 619, 557, 588, 526, 557, 495, 526, 464,
- 495, 433, 464, 402, 433, 371, 402, 340, 371, 309, 340, 278, 309, 247, 278,
- 216, 247, 185, 216, 154, 185, 123, 154, 92, 123, 61, 92, 30, 61, 30, 30,
- 961, 992, 930, 961, 899, 930, 837, 868, 806, 837, 775, 806, 713, 744, 682,
- 713, 651, 682, 589, 620, 558, 589, 527, 558, 465, 496, 434, 465, 403, 434,
- 341, 372, 310, 341, 279, 310, 217, 248, 186, 217, 155, 186, 93, 124, 62, 93,
- 31, 62, 962, 993, 931, 962, 838, 869, 807, 838, 714, 745, 683, 714, 590, 621,
- 559, 590, 466, 497, 435, 466, 342, 373, 311, 342, 218, 249, 187, 218, 94,
- 125, 63, 94, 963, 994, 839, 870, 715, 746, 591, 622, 467, 498, 343, 374, 219,
- 250, 95, 126, 868, 899, 744, 775, 620, 651, 496, 527, 372, 403, 248, 279,
- 124, 155, 900, 931, 869, 900, 776, 807, 745, 776, 652, 683, 621, 652, 528,
- 559, 497, 528, 404, 435, 373, 404, 280, 311, 249, 280, 156, 187, 125, 156,
- 932, 963, 901, 932, 870, 901, 808, 839, 777, 808, 746, 777, 684, 715, 653,
- 684, 622, 653, 560, 591, 529, 560, 498, 529, 436, 467, 405, 436, 374, 405,
- 312, 343, 281, 312, 250, 281, 188, 219, 157, 188, 126, 157, 964, 995, 933,
- 964, 902, 933, 871, 902, 840, 871, 809, 840, 778, 809, 747, 778, 716, 747,
- 685, 716, 654, 685, 623, 654, 592, 623, 561, 592, 530, 561, 499, 530, 468,
- 499, 437, 468, 406, 437, 375, 406, 344, 375, 313, 344, 282, 313, 251, 282,
- 220, 251, 189, 220, 158, 189, 127, 158, 965, 996, 934, 965, 903, 934, 841,
- 872, 810, 841, 779, 810, 717, 748, 686, 717, 655, 686, 593, 624, 562, 593,
- 531, 562, 469, 500, 438, 469, 407, 438, 345, 376, 314, 345, 283, 314, 221,
- 252, 190, 221, 159, 190, 966, 997, 935, 966, 842, 873, 811, 842, 718, 749,
- 687, 718, 594, 625, 563, 594, 470, 501, 439, 470, 346, 377, 315, 346, 222,
- 253, 191, 222, 967, 998, 843, 874, 719, 750, 595, 626, 471, 502, 347, 378,
- 223, 254, 872, 903, 748, 779, 624, 655, 500, 531, 376, 407, 252, 283, 904,
- 935, 873, 904, 780, 811, 749, 780, 656, 687, 625, 656, 532, 563, 501, 532,
- 408, 439, 377, 408, 284, 315, 253, 284, 936, 967, 905, 936, 874, 905, 812,
- 843, 781, 812, 750, 781, 688, 719, 657, 688, 626, 657, 564, 595, 533, 564,
- 502, 533, 440, 471, 409, 440, 378, 409, 316, 347, 285, 316, 254, 285, 968,
- 999, 937, 968, 906, 937, 875, 906, 844, 875, 813, 844, 782, 813, 751, 782,
- 720, 751, 689, 720, 658, 689, 627, 658, 596, 627, 565, 596, 534, 565, 503,
- 534, 472, 503, 441, 472, 410, 441, 379, 410, 348, 379, 317, 348, 286, 317,
- 255, 286, 969, 1000, 938, 969, 907, 938, 845, 876, 814, 845, 783, 814, 721,
- 752, 690, 721, 659, 690, 597, 628, 566, 597, 535, 566, 473, 504, 442, 473,
- 411, 442, 349, 380, 318, 349, 287, 318, 970, 1001, 939, 970, 846, 877, 815,
- 846, 722, 753, 691, 722, 598, 629, 567, 598, 474, 505, 443, 474, 350, 381,
- 319, 350, 971, 1002, 847, 878, 723, 754, 599, 630, 475, 506, 351, 382, 876,
- 907, 752, 783, 628, 659, 504, 535, 380, 411, 908, 939, 877, 908, 784, 815,
- 753, 784, 660, 691, 629, 660, 536, 567, 505, 536, 412, 443, 381, 412, 940,
- 971, 909, 940, 878, 909, 816, 847, 785, 816, 754, 785, 692, 723, 661, 692,
- 630, 661, 568, 599, 537, 568, 506, 537, 444, 475, 413, 444, 382, 413, 972,
- 1003, 941, 972, 910, 941, 879, 910, 848, 879, 817, 848, 786, 817, 755, 786,
- 724, 755, 693, 724, 662, 693, 631, 662, 600, 631, 569, 600, 538, 569, 507,
- 538, 476, 507, 445, 476, 414, 445, 383, 414, 973, 1004, 942, 973, 911, 942,
- 849, 880, 818, 849, 787, 818, 725, 756, 694, 725, 663, 694, 601, 632, 570,
- 601, 539, 570, 477, 508, 446, 477, 415, 446, 974, 1005, 943, 974, 850, 881,
- 819, 850, 726, 757, 695, 726, 602, 633, 571, 602, 478, 509, 447, 478, 975,
- 1006, 851, 882, 727, 758, 603, 634, 479, 510, 880, 911, 756, 787, 632, 663,
- 508, 539, 912, 943, 881, 912, 788, 819, 757, 788, 664, 695, 633, 664, 540,
- 571, 509, 540, 944, 975, 913, 944, 882, 913, 820, 851, 789, 820, 758, 789,
- 696, 727, 665, 696, 634, 665, 572, 603, 541, 572, 510, 541, 976, 1007, 945,
- 976, 914, 945, 883, 914, 852, 883, 821, 852, 790, 821, 759, 790, 728, 759,
- 697, 728, 666, 697, 635, 666, 604, 635, 573, 604, 542, 573, 511, 542, 977,
- 1008, 946, 977, 915, 946, 853, 884, 822, 853, 791, 822, 729, 760, 698, 729,
- 667, 698, 605, 636, 574, 605, 543, 574, 978, 1009, 947, 978, 854, 885, 823,
- 854, 730, 761, 699, 730, 606, 637, 575, 606, 979, 1010, 855, 886, 731, 762,
- 607, 638, 884, 915, 760, 791, 636, 667, 916, 947, 885, 916, 792, 823, 761,
- 792, 668, 699, 637, 668, 948, 979, 917, 948, 886, 917, 824, 855, 793, 824,
- 762, 793, 700, 731, 669, 700, 638, 669, 980, 1011, 949, 980, 918, 949, 887,
- 918, 856, 887, 825, 856, 794, 825, 763, 794, 732, 763, 701, 732, 670, 701,
- 639, 670, 981, 1012, 950, 981, 919, 950, 857, 888, 826, 857, 795, 826, 733,
- 764, 702, 733, 671, 702, 982, 1013, 951, 982, 858, 889, 827, 858, 734, 765,
- 703, 734, 983, 1014, 859, 890, 735, 766, 888, 919, 764, 795, 920, 951, 889,
- 920, 796, 827, 765, 796, 952, 983, 921, 952, 890, 921, 828, 859, 797, 828,
- 766, 797, 984, 1015, 953, 984, 922, 953, 891, 922, 860, 891, 829, 860, 798,
- 829, 767, 798, 985, 1016, 954, 985, 923, 954, 861, 892, 830, 861, 799, 830,
- 986, 1017, 955, 986, 862, 893, 831, 862, 987, 1018, 863, 894, 892, 923, 924,
- 955, 893, 924, 956, 987, 925, 956, 894, 925, 988, 1019, 957, 988, 926, 957,
- 895, 926, 989, 1020, 958, 989, 927, 958, 990, 1021, 959, 990, 991, 1022, 0, 0,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_default_iscan_4x4[16]) = {
- 0, 2, 5, 8, 1, 3, 9, 12, 4, 7, 11, 14, 6, 10, 13, 15,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_col_iscan_4x4[16]) = {
- 0, 3, 7, 11, 1, 5, 9, 12, 2, 6, 10, 14, 4, 8, 13, 15,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_row_iscan_4x4[16]) = {
- 0, 1, 3, 5, 2, 4, 6, 9, 7, 8, 11, 13, 10, 12, 14, 15,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_col_iscan_8x8[64]) = {
- 0, 3, 8, 15, 22, 32, 40, 47, 1, 5, 11, 18, 26, 34, 44, 51,
- 2, 7, 13, 20, 28, 38, 46, 54, 4, 10, 16, 24, 31, 41, 50, 56,
- 6, 12, 21, 27, 35, 43, 52, 58, 9, 17, 25, 33, 39, 48, 55, 60,
- 14, 23, 30, 37, 45, 53, 59, 62, 19, 29, 36, 42, 49, 57, 61, 63,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_row_iscan_8x8[64]) = {
- 0, 1, 2, 5, 8, 12, 19, 24, 3, 4, 7, 10, 15, 20, 30, 39,
- 6, 9, 13, 16, 21, 27, 37, 46, 11, 14, 17, 23, 28, 34, 44, 52,
- 18, 22, 25, 31, 35, 41, 50, 57, 26, 29, 33, 38, 43, 49, 55, 59,
- 32, 36, 42, 47, 51, 54, 60, 61, 40, 45, 48, 53, 56, 58, 62, 63,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_default_iscan_8x8[64]) = {
- 0, 2, 5, 9, 14, 22, 31, 37, 1, 4, 8, 13, 19, 26, 38, 44,
- 3, 6, 10, 17, 24, 30, 42, 49, 7, 11, 15, 21, 29, 36, 47, 53,
- 12, 16, 20, 27, 34, 43, 52, 57, 18, 23, 28, 35, 41, 48, 56, 60,
- 25, 32, 39, 45, 50, 55, 59, 62, 33, 40, 46, 51, 54, 58, 61, 63,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_col_iscan_16x16[256]) = {
- 0, 4, 11, 20, 31, 43, 59, 75, 85, 109, 130, 150, 165, 181, 195, 198,
- 1, 6, 14, 23, 34, 47, 64, 81, 95, 114, 135, 153, 171, 188, 201, 212,
- 2, 8, 16, 25, 38, 52, 67, 83, 101, 116, 136, 157, 172, 190, 205, 216,
- 3, 10, 18, 29, 41, 55, 71, 89, 103, 119, 141, 159, 176, 194, 208, 218,
- 5, 12, 21, 32, 45, 58, 74, 93, 104, 123, 144, 164, 179, 196, 210, 223,
- 7, 15, 26, 37, 49, 63, 78, 96, 112, 129, 146, 166, 182, 200, 215, 228,
- 9, 19, 28, 39, 54, 69, 86, 102, 117, 132, 151, 170, 187, 206, 220, 230,
- 13, 24, 35, 46, 60, 73, 91, 108, 122, 137, 154, 174, 189, 207, 224, 235,
- 17, 30, 40, 53, 66, 82, 98, 115, 126, 142, 161, 180, 197, 213, 227, 237,
- 22, 36, 48, 62, 76, 92, 105, 120, 133, 147, 167, 186, 203, 219, 232, 240,
- 27, 44, 56, 70, 84, 99, 113, 127, 140, 156, 175, 193, 209, 226, 236, 244,
- 33, 51, 68, 79, 94, 110, 125, 138, 149, 162, 184, 202, 217, 229, 241, 247,
- 42, 61, 77, 90, 106, 121, 134, 148, 160, 173, 191, 211, 225, 238, 245, 251,
- 50, 72, 87, 100, 118, 128, 145, 158, 168, 183, 204, 222, 233, 242, 249, 253,
- 57, 80, 97, 111, 131, 143, 155, 169, 178, 192, 214, 231, 239, 246, 250, 254,
- 65, 88, 107, 124, 139, 152, 163, 177, 185, 199, 221, 234, 243, 248, 252, 255,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_row_iscan_16x16[256]) = {
- 0, 1, 2, 4, 6, 9, 12, 17, 22, 29, 36, 43, 54, 64, 76, 86,
- 3, 5, 7, 11, 15, 19, 25, 32, 38, 48, 59, 68, 84, 99, 115, 130,
- 8, 10, 13, 18, 23, 27, 33, 42, 51, 60, 72, 88, 103, 119, 142, 167,
- 14, 16, 20, 26, 31, 37, 44, 53, 61, 73, 85, 100, 116, 135, 161, 185,
- 21, 24, 30, 35, 40, 47, 55, 65, 74, 81, 94, 112, 133, 154, 179, 205,
- 28, 34, 39, 45, 50, 58, 67, 77, 87, 96, 106, 121, 146, 169, 196, 212,
- 41, 46, 49, 56, 63, 70, 79, 90, 98, 107, 122, 138, 159, 182, 207, 222,
- 52, 57, 62, 69, 75, 83, 93, 102, 110, 120, 134, 150, 176, 195, 215, 226,
- 66, 71, 78, 82, 91, 97, 108, 113, 127, 136, 148, 168, 188, 202, 221, 232,
- 80, 89, 92, 101, 105, 114, 125, 131, 139, 151, 162, 177, 192, 208, 223, 234,
- 95, 104, 109, 117, 123, 128, 143, 144, 155, 165, 175, 190, 206, 219, 233, 239,
- 111, 118, 124, 129, 140, 147, 157, 164, 170, 181, 191, 203, 224, 230, 240,
- 243, 126, 132, 137, 145, 153, 160, 174, 178, 184, 197, 204, 216, 231, 237,
- 244, 246, 141, 149, 156, 166, 172, 180, 189, 199, 200, 210, 220, 228, 238,
- 242, 249, 251, 152, 163, 171, 183, 186, 193, 201, 211, 214, 218, 227, 236,
- 245, 247, 252, 253, 158, 173, 187, 194, 198, 209, 213, 217, 225, 229, 235,
- 241, 248, 250, 254, 255,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_default_iscan_16x16[256]) = {
- 0, 2, 5, 9, 17, 24, 36, 44, 55, 72, 88, 104, 128, 143, 166, 179,
- 1, 4, 8, 13, 20, 30, 40, 54, 66, 79, 96, 113, 141, 154, 178, 196,
- 3, 7, 11, 18, 25, 33, 46, 57, 71, 86, 101, 119, 148, 164, 186, 201,
- 6, 12, 16, 23, 31, 39, 53, 64, 78, 92, 110, 127, 153, 169, 193, 208,
- 10, 14, 19, 28, 37, 47, 58, 67, 84, 98, 114, 133, 161, 176, 198, 214,
- 15, 21, 26, 34, 43, 52, 65, 77, 91, 106, 120, 140, 165, 185, 205, 221,
- 22, 27, 32, 41, 48, 60, 73, 85, 99, 116, 130, 151, 175, 190, 211, 225,
- 29, 35, 42, 49, 59, 69, 81, 95, 108, 125, 139, 155, 182, 197, 217, 229,
- 38, 45, 51, 61, 68, 80, 93, 105, 118, 134, 150, 168, 191, 207, 223, 234,
- 50, 56, 63, 74, 83, 94, 109, 117, 129, 147, 163, 177, 199, 213, 228, 238,
- 62, 70, 76, 87, 97, 107, 122, 131, 145, 159, 172, 188, 210, 222, 235, 242,
- 75, 82, 90, 102, 112, 124, 138, 146, 157, 173, 187, 202, 219, 230, 240, 245,
- 89, 100, 111, 123, 132, 142, 156, 167, 180, 189, 203, 216, 231, 237, 246, 250,
- 103, 115, 126, 136, 149, 162, 171, 183, 194, 204, 215, 224, 236, 241, 248,
- 252, 121, 135, 144, 158, 170, 181, 192, 200, 209, 218, 227, 233, 243, 244,
- 251, 254, 137, 152, 160, 174, 184, 195, 206, 212, 220, 226, 232, 239, 247,
- 249, 253, 255,
-};
-
-DECLARE_ALIGNED(16, static const int16_t, vp9_default_iscan_32x32[1024]) = {
- 0, 2, 5, 10, 17, 25, 38, 47, 62, 83, 101, 121, 145, 170, 193, 204,
- 210, 219, 229, 233, 245, 257, 275, 299, 342, 356, 377, 405, 455, 471, 495,
- 527, 1, 4, 8, 15, 22, 30, 45, 58, 74, 92, 112, 133, 158, 184, 203, 215, 222,
- 228, 234, 237, 256, 274, 298, 317, 355, 376, 404, 426, 470, 494, 526, 551,
- 3, 7, 12, 18, 28, 36, 52, 64, 82, 102, 118, 142, 164, 189, 208, 217, 224,
- 231, 235, 238, 273, 297, 316, 329, 375, 403, 425, 440, 493, 525, 550, 567,
- 6, 11, 16, 23, 31, 43, 60, 73, 90, 109, 126, 150, 173, 196, 211, 220, 226,
- 232, 236, 239, 296, 315, 328, 335, 402, 424, 439, 447, 524, 549, 566, 575,
- 9, 14, 19, 29, 37, 50, 65, 78, 95, 116, 134, 157, 179, 201, 214, 223, 244,
- 255, 272, 295, 341, 354, 374, 401, 454, 469, 492, 523, 582, 596, 617, 645,
- 13, 20, 26, 35, 44, 54, 72, 85, 105, 123, 140, 163, 182, 205, 216, 225,
- 254, 271, 294, 314, 353, 373, 400, 423, 468, 491, 522, 548, 595, 616, 644,
- 666, 21, 27, 33, 42, 53, 63, 80, 94, 113, 132, 151, 172, 190, 209, 218, 227,
- 270, 293, 313, 327, 372, 399, 422, 438, 490, 521, 547, 565, 615, 643, 665,
- 680, 24, 32, 39, 48, 57, 71, 88, 104, 120, 139, 159, 178, 197, 212, 221, 230,
- 292, 312, 326, 334, 398, 421, 437, 446, 520, 546, 564, 574, 642, 664, 679,
- 687, 34, 40, 46, 56, 68, 81, 96, 111, 130, 147, 167, 186, 243, 253, 269, 291,
- 340, 352, 371, 397, 453, 467, 489, 519, 581, 594, 614, 641, 693, 705, 723,
- 747, 41, 49, 55, 67, 77, 91, 107, 124, 138, 161, 177, 194, 252, 268, 290,
- 311, 351, 370, 396, 420, 466, 488, 518, 545, 593, 613, 640, 663, 704, 722,
- 746, 765, 51, 59, 66, 76, 89, 99, 119, 131, 149, 168, 181, 200, 267, 289,
- 310, 325, 369, 395, 419, 436, 487, 517, 544, 563, 612, 639, 662, 678, 721,
- 745, 764, 777, 61, 69, 75, 87, 100, 114, 129, 144, 162, 180, 191, 207, 288,
- 309, 324, 333, 394, 418, 435, 445, 516, 543, 562, 573, 638, 661, 677, 686,
- 744, 763, 776, 783, 70, 79, 86, 97, 108, 122, 137, 155, 242, 251, 266, 287,
- 339, 350, 368, 393, 452, 465, 486, 515, 580, 592, 611, 637, 692, 703, 720,
- 743, 788, 798, 813, 833, 84, 93, 103, 110, 125, 141, 154, 171, 250, 265, 286,
- 308, 349, 367, 392, 417, 464, 485, 514, 542, 591, 610, 636, 660, 702, 719,
- 742, 762, 797, 812, 832, 848, 98, 106, 115, 127, 143, 156, 169, 185, 264,
- 285, 307, 323, 366, 391, 416, 434, 484, 513, 541, 561, 609, 635, 659, 676,
- 718, 741, 761, 775, 811, 831, 847, 858, 117, 128, 136, 148, 160, 175, 188,
- 198, 284, 306, 322, 332, 390, 415, 433, 444, 512, 540, 560, 572, 634, 658,
- 675, 685, 740, 760, 774, 782, 830, 846, 857, 863, 135, 146, 152, 165, 241,
- 249, 263, 283, 338, 348, 365, 389, 451, 463, 483, 511, 579, 590, 608, 633,
- 691, 701, 717, 739, 787, 796, 810, 829, 867, 875, 887, 903, 153, 166, 174,
- 183, 248, 262, 282, 305, 347, 364, 388, 414, 462, 482, 510, 539, 589, 607,
- 632, 657, 700, 716, 738, 759, 795, 809, 828, 845, 874, 886, 902, 915, 176,
- 187, 195, 202, 261, 281, 304, 321, 363, 387, 413, 432, 481, 509, 538, 559,
- 606, 631, 656, 674, 715, 737, 758, 773, 808, 827, 844, 856, 885, 901, 914,
- 923, 192, 199, 206, 213, 280, 303, 320, 331, 386, 412, 431, 443, 508, 537,
- 558, 571, 630, 655, 673, 684, 736, 757, 772, 781, 826, 843, 855, 862, 900,
- 913, 922, 927, 240, 247, 260, 279, 337, 346, 362, 385, 450, 461, 480, 507,
- 578, 588, 605, 629, 690, 699, 714, 735, 786, 794, 807, 825, 866, 873, 884,
- 899, 930, 936, 945, 957, 246, 259, 278, 302, 345, 361, 384, 411, 460, 479,
- 506, 536, 587, 604, 628, 654, 698, 713, 734, 756, 793, 806, 824, 842, 872,
- 883, 898, 912, 935, 944, 956, 966, 258, 277, 301, 319, 360, 383, 410, 430,
- 478, 505, 535, 557, 603, 627, 653, 672, 712, 733, 755, 771, 805, 823, 841,
- 854, 882, 897, 911, 921, 943, 955, 965, 972, 276, 300, 318, 330, 382, 409,
- 429, 442, 504, 534, 556, 570, 626, 652, 671, 683, 732, 754, 770, 780, 822,
- 840, 853, 861, 896, 910, 920, 926, 954, 964, 971, 975, 336, 344, 359, 381,
- 449, 459, 477, 503, 577, 586, 602, 625, 689, 697, 711, 731, 785, 792, 804,
- 821, 865, 871, 881, 895, 929, 934, 942, 953, 977, 981, 987, 995, 343, 358,
- 380, 408, 458, 476, 502, 533, 585, 601, 624, 651, 696, 710, 730, 753, 791,
- 803, 820, 839, 870, 880, 894, 909, 933, 941, 952, 963, 980, 986, 994, 1001,
- 357, 379, 407, 428, 475, 501, 532, 555, 600, 623, 650, 670, 709, 729, 752,
- 769, 802, 819, 838, 852, 879, 893, 908, 919, 940, 951, 962, 970, 985, 993,
- 1000, 1005, 378, 406, 427, 441, 500, 531, 554, 569, 622, 649, 669, 682, 728,
- 751, 768, 779, 818, 837, 851, 860, 892, 907, 918, 925, 950, 961, 969, 974,
- 992, 999, 1004, 1007, 448, 457, 474, 499, 576, 584, 599, 621, 688, 695, 708,
- 727, 784, 790, 801, 817, 864, 869, 878, 891, 928, 932, 939, 949, 976, 979,
- 984, 991, 1008, 1010, 1013, 1017, 456, 473, 498, 530, 583, 598, 620, 648,
- 694, 707, 726, 750, 789, 800, 816, 836, 868, 877, 890, 906, 931, 938, 948,
- 960, 978, 983, 990, 998, 1009, 1012, 1016, 1020, 472, 497, 529, 553, 597,
- 619, 647, 668, 706, 725, 749, 767, 799, 815, 835, 850, 876, 889, 905, 917,
- 937, 947, 959, 968, 982, 989, 997, 1003, 1011, 1015, 1019, 1022, 496, 528,
- 552, 568, 618, 646, 667, 681, 724, 748, 766, 778, 814, 834, 849, 859, 888,
- 904, 916, 924, 946, 958, 967, 973, 988, 996, 1002, 1006, 1014, 1018, 1021,
- 1023,
-};
-
-const scan_order vp9_default_scan_orders[TX_SIZES] = {
- {default_scan_4x4, vp9_default_iscan_4x4, default_scan_4x4_neighbors},
- {default_scan_8x8, vp9_default_iscan_8x8, default_scan_8x8_neighbors},
- {default_scan_16x16, vp9_default_iscan_16x16, default_scan_16x16_neighbors},
- {default_scan_32x32, vp9_default_iscan_32x32, default_scan_32x32_neighbors},
-};
-
-const scan_order vp9_scan_orders[TX_SIZES][TX_TYPES] = {
- { // TX_4X4
- {default_scan_4x4, vp9_default_iscan_4x4, default_scan_4x4_neighbors},
- {row_scan_4x4, vp9_row_iscan_4x4, row_scan_4x4_neighbors},
- {col_scan_4x4, vp9_col_iscan_4x4, col_scan_4x4_neighbors},
- {default_scan_4x4, vp9_default_iscan_4x4, default_scan_4x4_neighbors}
- }, { // TX_8X8
- {default_scan_8x8, vp9_default_iscan_8x8, default_scan_8x8_neighbors},
- {row_scan_8x8, vp9_row_iscan_8x8, row_scan_8x8_neighbors},
- {col_scan_8x8, vp9_col_iscan_8x8, col_scan_8x8_neighbors},
- {default_scan_8x8, vp9_default_iscan_8x8, default_scan_8x8_neighbors}
- }, { // TX_16X16
- {default_scan_16x16, vp9_default_iscan_16x16, default_scan_16x16_neighbors},
- {row_scan_16x16, vp9_row_iscan_16x16, row_scan_16x16_neighbors},
- {col_scan_16x16, vp9_col_iscan_16x16, col_scan_16x16_neighbors},
- {default_scan_16x16, vp9_default_iscan_16x16, default_scan_16x16_neighbors}
- }, { // TX_32X32
- {default_scan_32x32, vp9_default_iscan_32x32, default_scan_32x32_neighbors},
- {default_scan_32x32, vp9_default_iscan_32x32, default_scan_32x32_neighbors},
- {default_scan_32x32, vp9_default_iscan_32x32, default_scan_32x32_neighbors},
- {default_scan_32x32, vp9_default_iscan_32x32, default_scan_32x32_neighbors},
- }
-};
diff --git a/thirdparty/libvpx/vp9/common/vp9_scan.h b/thirdparty/libvpx/vp9/common/vp9_scan.h
deleted file mode 100644
index 4c1ee8107c..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_scan.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_SCAN_H_
-#define VP9_COMMON_VP9_SCAN_H_
-
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-
-#include "vp9/common/vp9_enums.h"
-#include "vp9/common/vp9_blockd.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MAX_NEIGHBORS 2
-
-typedef struct {
- const int16_t *scan;
- const int16_t *iscan;
- const int16_t *neighbors;
-} scan_order;
-
-extern const scan_order vp9_default_scan_orders[TX_SIZES];
-extern const scan_order vp9_scan_orders[TX_SIZES][TX_TYPES];
-
-static INLINE int get_coef_context(const int16_t *neighbors,
- const uint8_t *token_cache, int c) {
- return (1 + token_cache[neighbors[MAX_NEIGHBORS * c + 0]] +
- token_cache[neighbors[MAX_NEIGHBORS * c + 1]]) >> 1;
-}
-
-static INLINE const scan_order *get_scan(const MACROBLOCKD *xd, TX_SIZE tx_size,
- PLANE_TYPE type, int block_idx) {
- const MODE_INFO *const mi = xd->mi[0];
-
- if (is_inter_block(mi) || type != PLANE_TYPE_Y || xd->lossless) {
- return &vp9_default_scan_orders[tx_size];
- } else {
- const PREDICTION_MODE mode = get_y_mode(mi, block_idx);
- return &vp9_scan_orders[tx_size][intra_mode_to_tx_type_lookup[mode]];
- }
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_SCAN_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_seg_common.c b/thirdparty/libvpx/vp9/common/vp9_seg_common.c
deleted file mode 100644
index 7af61629a0..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_seg_common.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_loopfilter.h"
-#include "vp9/common/vp9_seg_common.h"
-#include "vp9/common/vp9_quant_common.h"
-
-static const int seg_feature_data_signed[SEG_LVL_MAX] = { 1, 1, 0, 0 };
-
-static const int seg_feature_data_max[SEG_LVL_MAX] = {
- MAXQ, MAX_LOOP_FILTER, 3, 0 };
-
-// These functions provide access to new segment level features.
-// Eventually these function may be "optimized out" but for the moment,
-// the coding mechanism is still subject to change so these provide a
-// convenient single point of change.
-
-void vp9_clearall_segfeatures(struct segmentation *seg) {
- vp9_zero(seg->feature_data);
- vp9_zero(seg->feature_mask);
- seg->aq_av_offset = 0;
-}
-
-void vp9_enable_segfeature(struct segmentation *seg, int segment_id,
- SEG_LVL_FEATURES feature_id) {
- seg->feature_mask[segment_id] |= 1 << feature_id;
-}
-
-int vp9_seg_feature_data_max(SEG_LVL_FEATURES feature_id) {
- return seg_feature_data_max[feature_id];
-}
-
-int vp9_is_segfeature_signed(SEG_LVL_FEATURES feature_id) {
- return seg_feature_data_signed[feature_id];
-}
-
-void vp9_set_segdata(struct segmentation *seg, int segment_id,
- SEG_LVL_FEATURES feature_id, int seg_data) {
- assert(seg_data <= seg_feature_data_max[feature_id]);
- if (seg_data < 0) {
- assert(seg_feature_data_signed[feature_id]);
- assert(-seg_data <= seg_feature_data_max[feature_id]);
- }
-
- seg->feature_data[segment_id][feature_id] = seg_data;
-}
-
-const vpx_tree_index vp9_segment_tree[TREE_SIZE(MAX_SEGMENTS)] = {
- 2, 4, 6, 8, 10, 12,
- 0, -1, -2, -3, -4, -5, -6, -7
-};
-
-
-// TBD? Functions to read and write segment data with range / validity checking
diff --git a/thirdparty/libvpx/vp9/common/vp9_seg_common.h b/thirdparty/libvpx/vp9/common/vp9_seg_common.h
deleted file mode 100644
index 99a9440c17..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_seg_common.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_SEG_COMMON_H_
-#define VP9_COMMON_VP9_SEG_COMMON_H_
-
-#include "vpx_dsp/prob.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define SEGMENT_DELTADATA 0
-#define SEGMENT_ABSDATA 1
-
-#define MAX_SEGMENTS 8
-#define SEG_TREE_PROBS (MAX_SEGMENTS-1)
-
-#define PREDICTION_PROBS 3
-
-// Segment level features.
-typedef enum {
- SEG_LVL_ALT_Q = 0, // Use alternate Quantizer ....
- SEG_LVL_ALT_LF = 1, // Use alternate loop filter value...
- SEG_LVL_REF_FRAME = 2, // Optional Segment reference frame
- SEG_LVL_SKIP = 3, // Optional Segment (0,0) + skip mode
- SEG_LVL_MAX = 4 // Number of features supported
-} SEG_LVL_FEATURES;
-
-
-struct segmentation {
- uint8_t enabled;
- uint8_t update_map;
- uint8_t update_data;
- uint8_t abs_delta;
- uint8_t temporal_update;
-
- vpx_prob tree_probs[SEG_TREE_PROBS];
- vpx_prob pred_probs[PREDICTION_PROBS];
-
- int16_t feature_data[MAX_SEGMENTS][SEG_LVL_MAX];
- uint32_t feature_mask[MAX_SEGMENTS];
- int aq_av_offset;
-};
-
-static INLINE int segfeature_active(const struct segmentation *seg,
- int segment_id,
- SEG_LVL_FEATURES feature_id) {
- return seg->enabled &&
- (seg->feature_mask[segment_id] & (1 << feature_id));
-}
-
-void vp9_clearall_segfeatures(struct segmentation *seg);
-
-void vp9_enable_segfeature(struct segmentation *seg,
- int segment_id,
- SEG_LVL_FEATURES feature_id);
-
-int vp9_seg_feature_data_max(SEG_LVL_FEATURES feature_id);
-
-int vp9_is_segfeature_signed(SEG_LVL_FEATURES feature_id);
-
-void vp9_set_segdata(struct segmentation *seg,
- int segment_id,
- SEG_LVL_FEATURES feature_id,
- int seg_data);
-
-static INLINE int get_segdata(const struct segmentation *seg, int segment_id,
- SEG_LVL_FEATURES feature_id) {
- return seg->feature_data[segment_id][feature_id];
-}
-
-extern const vpx_tree_index vp9_segment_tree[TREE_SIZE(MAX_SEGMENTS)];
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_SEG_COMMON_H_
-
diff --git a/thirdparty/libvpx/vp9/common/vp9_thread_common.c b/thirdparty/libvpx/vp9/common/vp9_thread_common.c
deleted file mode 100644
index db78d6be89..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_thread_common.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_config.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vp9/common/vp9_entropymode.h"
-#include "vp9/common/vp9_thread_common.h"
-#include "vp9/common/vp9_reconinter.h"
-#include "vp9/common/vp9_loopfilter.h"
-
-#if CONFIG_MULTITHREAD
-static INLINE void mutex_lock(pthread_mutex_t *const mutex) {
- const int kMaxTryLocks = 4000;
- int locked = 0;
- int i;
-
- for (i = 0; i < kMaxTryLocks; ++i) {
- if (!pthread_mutex_trylock(mutex)) {
- locked = 1;
- break;
- }
- }
-
- if (!locked)
- pthread_mutex_lock(mutex);
-}
-#endif // CONFIG_MULTITHREAD
-
-static INLINE void sync_read(VP9LfSync *const lf_sync, int r, int c) {
-#if CONFIG_MULTITHREAD
- const int nsync = lf_sync->sync_range;
-
- if (r && !(c & (nsync - 1))) {
- pthread_mutex_t *const mutex = &lf_sync->mutex_[r - 1];
- mutex_lock(mutex);
-
- while (c > lf_sync->cur_sb_col[r - 1] - nsync) {
- pthread_cond_wait(&lf_sync->cond_[r - 1], mutex);
- }
- pthread_mutex_unlock(mutex);
- }
-#else
- (void)lf_sync;
- (void)r;
- (void)c;
-#endif // CONFIG_MULTITHREAD
-}
-
-static INLINE void sync_write(VP9LfSync *const lf_sync, int r, int c,
- const int sb_cols) {
-#if CONFIG_MULTITHREAD
- const int nsync = lf_sync->sync_range;
- int cur;
- // Only signal when there are enough filtered SB for next row to run.
- int sig = 1;
-
- if (c < sb_cols - 1) {
- cur = c;
- if (c % nsync)
- sig = 0;
- } else {
- cur = sb_cols + nsync;
- }
-
- if (sig) {
- mutex_lock(&lf_sync->mutex_[r]);
-
- lf_sync->cur_sb_col[r] = cur;
-
- pthread_cond_signal(&lf_sync->cond_[r]);
- pthread_mutex_unlock(&lf_sync->mutex_[r]);
- }
-#else
- (void)lf_sync;
- (void)r;
- (void)c;
- (void)sb_cols;
-#endif // CONFIG_MULTITHREAD
-}
-
-// Implement row loopfiltering for each thread.
-static INLINE
-void thread_loop_filter_rows(const YV12_BUFFER_CONFIG *const frame_buffer,
- VP9_COMMON *const cm,
- struct macroblockd_plane planes[MAX_MB_PLANE],
- int start, int stop, int y_only,
- VP9LfSync *const lf_sync) {
- const int num_planes = y_only ? 1 : MAX_MB_PLANE;
- const int sb_cols = mi_cols_aligned_to_sb(cm->mi_cols) >> MI_BLOCK_SIZE_LOG2;
- int mi_row, mi_col;
- enum lf_path path;
- if (y_only)
- path = LF_PATH_444;
- else if (planes[1].subsampling_y == 1 && planes[1].subsampling_x == 1)
- path = LF_PATH_420;
- else if (planes[1].subsampling_y == 0 && planes[1].subsampling_x == 0)
- path = LF_PATH_444;
- else
- path = LF_PATH_SLOW;
-
- for (mi_row = start; mi_row < stop;
- mi_row += lf_sync->num_workers * MI_BLOCK_SIZE) {
- MODE_INFO **const mi = cm->mi_grid_visible + mi_row * cm->mi_stride;
- LOOP_FILTER_MASK *lfm = get_lfm(&cm->lf, mi_row, 0);
-
- for (mi_col = 0; mi_col < cm->mi_cols; mi_col += MI_BLOCK_SIZE, ++lfm) {
- const int r = mi_row >> MI_BLOCK_SIZE_LOG2;
- const int c = mi_col >> MI_BLOCK_SIZE_LOG2;
- int plane;
-
- sync_read(lf_sync, r, c);
-
- vp9_setup_dst_planes(planes, frame_buffer, mi_row, mi_col);
-
- vp9_adjust_mask(cm, mi_row, mi_col, lfm);
-
- vp9_filter_block_plane_ss00(cm, &planes[0], mi_row, lfm);
- for (plane = 1; plane < num_planes; ++plane) {
- switch (path) {
- case LF_PATH_420:
- vp9_filter_block_plane_ss11(cm, &planes[plane], mi_row, lfm);
- break;
- case LF_PATH_444:
- vp9_filter_block_plane_ss00(cm, &planes[plane], mi_row, lfm);
- break;
- case LF_PATH_SLOW:
- vp9_filter_block_plane_non420(cm, &planes[plane], mi + mi_col,
- mi_row, mi_col);
- break;
- }
- }
-
- sync_write(lf_sync, r, c, sb_cols);
- }
- }
-}
-
-// Row-based multi-threaded loopfilter hook
-static int loop_filter_row_worker(VP9LfSync *const lf_sync,
- LFWorkerData *const lf_data) {
- thread_loop_filter_rows(lf_data->frame_buffer, lf_data->cm, lf_data->planes,
- lf_data->start, lf_data->stop, lf_data->y_only,
- lf_sync);
- return 1;
-}
-
-static void loop_filter_rows_mt(YV12_BUFFER_CONFIG *frame,
- VP9_COMMON *cm,
- struct macroblockd_plane planes[MAX_MB_PLANE],
- int start, int stop, int y_only,
- VPxWorker *workers, int nworkers,
- VP9LfSync *lf_sync) {
- const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
- // Number of superblock rows and cols
- const int sb_rows = mi_cols_aligned_to_sb(cm->mi_rows) >> MI_BLOCK_SIZE_LOG2;
- // Decoder may allocate more threads than number of tiles based on user's
- // input.
- const int tile_cols = 1 << cm->log2_tile_cols;
- const int num_workers = VPXMIN(nworkers, tile_cols);
- int i;
-
- if (!lf_sync->sync_range || sb_rows != lf_sync->rows ||
- num_workers > lf_sync->num_workers) {
- vp9_loop_filter_dealloc(lf_sync);
- vp9_loop_filter_alloc(lf_sync, cm, sb_rows, cm->width, num_workers);
- }
-
- // Initialize cur_sb_col to -1 for all SB rows.
- memset(lf_sync->cur_sb_col, -1, sizeof(*lf_sync->cur_sb_col) * sb_rows);
-
- // Set up loopfilter thread data.
- // The decoder is capping num_workers because it has been observed that using
- // more threads on the loopfilter than there are cores will hurt performance
- // on Android. This is because the system will only schedule the tile decode
- // workers on cores equal to the number of tile columns. Then if the decoder
- // tries to use more threads for the loopfilter, it will hurt performance
- // because of contention. If the multithreading code changes in the future
- // then the number of workers used by the loopfilter should be revisited.
- for (i = 0; i < num_workers; ++i) {
- VPxWorker *const worker = &workers[i];
- LFWorkerData *const lf_data = &lf_sync->lfdata[i];
-
- worker->hook = (VPxWorkerHook)loop_filter_row_worker;
- worker->data1 = lf_sync;
- worker->data2 = lf_data;
-
- // Loopfilter data
- vp9_loop_filter_data_reset(lf_data, frame, cm, planes);
- lf_data->start = start + i * MI_BLOCK_SIZE;
- lf_data->stop = stop;
- lf_data->y_only = y_only;
-
- // Start loopfiltering
- if (i == num_workers - 1) {
- winterface->execute(worker);
- } else {
- winterface->launch(worker);
- }
- }
-
- // Wait till all rows are finished
- for (i = 0; i < num_workers; ++i) {
- winterface->sync(&workers[i]);
- }
-}
-
-void vp9_loop_filter_frame_mt(YV12_BUFFER_CONFIG *frame,
- VP9_COMMON *cm,
- struct macroblockd_plane planes[MAX_MB_PLANE],
- int frame_filter_level,
- int y_only, int partial_frame,
- VPxWorker *workers, int num_workers,
- VP9LfSync *lf_sync) {
- int start_mi_row, end_mi_row, mi_rows_to_filter;
-
- if (!frame_filter_level) return;
-
- start_mi_row = 0;
- mi_rows_to_filter = cm->mi_rows;
- if (partial_frame && cm->mi_rows > 8) {
- start_mi_row = cm->mi_rows >> 1;
- start_mi_row &= 0xfffffff8;
- mi_rows_to_filter = VPXMAX(cm->mi_rows / 8, 8);
- }
- end_mi_row = start_mi_row + mi_rows_to_filter;
- vp9_loop_filter_frame_init(cm, frame_filter_level);
-
- loop_filter_rows_mt(frame, cm, planes, start_mi_row, end_mi_row,
- y_only, workers, num_workers, lf_sync);
-}
-
-// Set up nsync by width.
-static INLINE int get_sync_range(int width) {
- // nsync numbers are picked by testing. For example, for 4k
- // video, using 4 gives best performance.
- if (width < 640)
- return 1;
- else if (width <= 1280)
- return 2;
- else if (width <= 4096)
- return 4;
- else
- return 8;
-}
-
-// Allocate memory for lf row synchronization
-void vp9_loop_filter_alloc(VP9LfSync *lf_sync, VP9_COMMON *cm, int rows,
- int width, int num_workers) {
- lf_sync->rows = rows;
-#if CONFIG_MULTITHREAD
- {
- int i;
-
- CHECK_MEM_ERROR(cm, lf_sync->mutex_,
- vpx_malloc(sizeof(*lf_sync->mutex_) * rows));
- if (lf_sync->mutex_) {
- for (i = 0; i < rows; ++i) {
- pthread_mutex_init(&lf_sync->mutex_[i], NULL);
- }
- }
-
- CHECK_MEM_ERROR(cm, lf_sync->cond_,
- vpx_malloc(sizeof(*lf_sync->cond_) * rows));
- if (lf_sync->cond_) {
- for (i = 0; i < rows; ++i) {
- pthread_cond_init(&lf_sync->cond_[i], NULL);
- }
- }
- }
-#endif // CONFIG_MULTITHREAD
-
- CHECK_MEM_ERROR(cm, lf_sync->lfdata,
- vpx_malloc(num_workers * sizeof(*lf_sync->lfdata)));
- lf_sync->num_workers = num_workers;
-
- CHECK_MEM_ERROR(cm, lf_sync->cur_sb_col,
- vpx_malloc(sizeof(*lf_sync->cur_sb_col) * rows));
-
- // Set up nsync.
- lf_sync->sync_range = get_sync_range(width);
-}
-
-// Deallocate lf synchronization related mutex and data
-void vp9_loop_filter_dealloc(VP9LfSync *lf_sync) {
- if (lf_sync != NULL) {
-#if CONFIG_MULTITHREAD
- int i;
-
- if (lf_sync->mutex_ != NULL) {
- for (i = 0; i < lf_sync->rows; ++i) {
- pthread_mutex_destroy(&lf_sync->mutex_[i]);
- }
- vpx_free(lf_sync->mutex_);
- }
- if (lf_sync->cond_ != NULL) {
- for (i = 0; i < lf_sync->rows; ++i) {
- pthread_cond_destroy(&lf_sync->cond_[i]);
- }
- vpx_free(lf_sync->cond_);
- }
-#endif // CONFIG_MULTITHREAD
- vpx_free(lf_sync->lfdata);
- vpx_free(lf_sync->cur_sb_col);
- // clear the structure as the source of this call may be a resize in which
- // case this call will be followed by an _alloc() which may fail.
- vp9_zero(*lf_sync);
- }
-}
-
-// Accumulate frame counts.
-void vp9_accumulate_frame_counts(FRAME_COUNTS *accum,
- const FRAME_COUNTS *counts, int is_dec) {
- int i, j, k, l, m;
-
- for (i = 0; i < BLOCK_SIZE_GROUPS; i++)
- for (j = 0; j < INTRA_MODES; j++)
- accum->y_mode[i][j] += counts->y_mode[i][j];
-
- for (i = 0; i < INTRA_MODES; i++)
- for (j = 0; j < INTRA_MODES; j++)
- accum->uv_mode[i][j] += counts->uv_mode[i][j];
-
- for (i = 0; i < PARTITION_CONTEXTS; i++)
- for (j = 0; j < PARTITION_TYPES; j++)
- accum->partition[i][j] += counts->partition[i][j];
-
- if (is_dec) {
- int n;
- for (i = 0; i < TX_SIZES; i++)
- for (j = 0; j < PLANE_TYPES; j++)
- for (k = 0; k < REF_TYPES; k++)
- for (l = 0; l < COEF_BANDS; l++)
- for (m = 0; m < COEFF_CONTEXTS; m++) {
- accum->eob_branch[i][j][k][l][m] +=
- counts->eob_branch[i][j][k][l][m];
- for (n = 0; n < UNCONSTRAINED_NODES + 1; n++)
- accum->coef[i][j][k][l][m][n] +=
- counts->coef[i][j][k][l][m][n];
- }
- } else {
- for (i = 0; i < TX_SIZES; i++)
- for (j = 0; j < PLANE_TYPES; j++)
- for (k = 0; k < REF_TYPES; k++)
- for (l = 0; l < COEF_BANDS; l++)
- for (m = 0; m < COEFF_CONTEXTS; m++)
- accum->eob_branch[i][j][k][l][m] +=
- counts->eob_branch[i][j][k][l][m];
- // In the encoder, coef is only updated at frame
- // level, so not need to accumulate it here.
- // for (n = 0; n < UNCONSTRAINED_NODES + 1; n++)
- // accum->coef[i][j][k][l][m][n] +=
- // counts->coef[i][j][k][l][m][n];
- }
-
- for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; i++)
- for (j = 0; j < SWITCHABLE_FILTERS; j++)
- accum->switchable_interp[i][j] += counts->switchable_interp[i][j];
-
- for (i = 0; i < INTER_MODE_CONTEXTS; i++)
- for (j = 0; j < INTER_MODES; j++)
- accum->inter_mode[i][j] += counts->inter_mode[i][j];
-
- for (i = 0; i < INTRA_INTER_CONTEXTS; i++)
- for (j = 0; j < 2; j++)
- accum->intra_inter[i][j] += counts->intra_inter[i][j];
-
- for (i = 0; i < COMP_INTER_CONTEXTS; i++)
- for (j = 0; j < 2; j++)
- accum->comp_inter[i][j] += counts->comp_inter[i][j];
-
- for (i = 0; i < REF_CONTEXTS; i++)
- for (j = 0; j < 2; j++)
- for (k = 0; k < 2; k++)
- accum->single_ref[i][j][k] += counts->single_ref[i][j][k];
-
- for (i = 0; i < REF_CONTEXTS; i++)
- for (j = 0; j < 2; j++)
- accum->comp_ref[i][j] += counts->comp_ref[i][j];
-
- for (i = 0; i < TX_SIZE_CONTEXTS; i++) {
- for (j = 0; j < TX_SIZES; j++)
- accum->tx.p32x32[i][j] += counts->tx.p32x32[i][j];
-
- for (j = 0; j < TX_SIZES - 1; j++)
- accum->tx.p16x16[i][j] += counts->tx.p16x16[i][j];
-
- for (j = 0; j < TX_SIZES - 2; j++)
- accum->tx.p8x8[i][j] += counts->tx.p8x8[i][j];
- }
-
- for (i = 0; i < TX_SIZES; i++)
- accum->tx.tx_totals[i] += counts->tx.tx_totals[i];
-
- for (i = 0; i < SKIP_CONTEXTS; i++)
- for (j = 0; j < 2; j++)
- accum->skip[i][j] += counts->skip[i][j];
-
- for (i = 0; i < MV_JOINTS; i++)
- accum->mv.joints[i] += counts->mv.joints[i];
-
- for (k = 0; k < 2; k++) {
- nmv_component_counts *const comps = &accum->mv.comps[k];
- const nmv_component_counts *const comps_t = &counts->mv.comps[k];
-
- for (i = 0; i < 2; i++) {
- comps->sign[i] += comps_t->sign[i];
- comps->class0_hp[i] += comps_t->class0_hp[i];
- comps->hp[i] += comps_t->hp[i];
- }
-
- for (i = 0; i < MV_CLASSES; i++)
- comps->classes[i] += comps_t->classes[i];
-
- for (i = 0; i < CLASS0_SIZE; i++) {
- comps->class0[i] += comps_t->class0[i];
- for (j = 0; j < MV_FP_SIZE; j++)
- comps->class0_fp[i][j] += comps_t->class0_fp[i][j];
- }
-
- for (i = 0; i < MV_OFFSET_BITS; i++)
- for (j = 0; j < 2; j++)
- comps->bits[i][j] += comps_t->bits[i][j];
-
- for (i = 0; i < MV_FP_SIZE; i++)
- comps->fp[i] += comps_t->fp[i];
- }
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_thread_common.h b/thirdparty/libvpx/vp9/common/vp9_thread_common.h
deleted file mode 100644
index b3b60c253f..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_thread_common.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_THREAD_COMMON_H_
-#define VP9_COMMON_VP9_THREAD_COMMON_H_
-#include "./vpx_config.h"
-#include "vp9/common/vp9_loopfilter.h"
-#include "vpx_util/vpx_thread.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct VP9Common;
-struct FRAME_COUNTS;
-
-// Loopfilter row synchronization
-typedef struct VP9LfSyncData {
-#if CONFIG_MULTITHREAD
- pthread_mutex_t *mutex_;
- pthread_cond_t *cond_;
-#endif
- // Allocate memory to store the loop-filtered superblock index in each row.
- int *cur_sb_col;
- // The optimal sync_range for different resolution and platform should be
- // determined by testing. Currently, it is chosen to be a power-of-2 number.
- int sync_range;
- int rows;
-
- // Row-based parallel loopfilter data
- LFWorkerData *lfdata;
- int num_workers;
-} VP9LfSync;
-
-// Allocate memory for loopfilter row synchronization.
-void vp9_loop_filter_alloc(VP9LfSync *lf_sync, struct VP9Common *cm, int rows,
- int width, int num_workers);
-
-// Deallocate loopfilter synchronization related mutex and data.
-void vp9_loop_filter_dealloc(VP9LfSync *lf_sync);
-
-// Multi-threaded loopfilter that uses the tile threads.
-void vp9_loop_filter_frame_mt(YV12_BUFFER_CONFIG *frame,
- struct VP9Common *cm,
- struct macroblockd_plane planes[MAX_MB_PLANE],
- int frame_filter_level,
- int y_only, int partial_frame,
- VPxWorker *workers, int num_workers,
- VP9LfSync *lf_sync);
-
-void vp9_accumulate_frame_counts(struct FRAME_COUNTS *accum,
- const struct FRAME_COUNTS *counts, int is_dec);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_THREAD_COMMON_H_
diff --git a/thirdparty/libvpx/vp9/common/vp9_tile_common.c b/thirdparty/libvpx/vp9/common/vp9_tile_common.c
deleted file mode 100644
index 9fcb97c854..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_tile_common.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vp9/common/vp9_tile_common.h"
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-
-#define MIN_TILE_WIDTH_B64 4
-#define MAX_TILE_WIDTH_B64 64
-
-static int get_tile_offset(int idx, int mis, int log2) {
- const int sb_cols = mi_cols_aligned_to_sb(mis) >> MI_BLOCK_SIZE_LOG2;
- const int offset = ((idx * sb_cols) >> log2) << MI_BLOCK_SIZE_LOG2;
- return VPXMIN(offset, mis);
-}
-
-void vp9_tile_set_row(TileInfo *tile, const VP9_COMMON *cm, int row) {
- tile->mi_row_start = get_tile_offset(row, cm->mi_rows, cm->log2_tile_rows);
- tile->mi_row_end = get_tile_offset(row + 1, cm->mi_rows, cm->log2_tile_rows);
-}
-
-void vp9_tile_set_col(TileInfo *tile, const VP9_COMMON *cm, int col) {
- tile->mi_col_start = get_tile_offset(col, cm->mi_cols, cm->log2_tile_cols);
- tile->mi_col_end = get_tile_offset(col + 1, cm->mi_cols, cm->log2_tile_cols);
-}
-
-void vp9_tile_init(TileInfo *tile, const VP9_COMMON *cm, int row, int col) {
- vp9_tile_set_row(tile, cm, row);
- vp9_tile_set_col(tile, cm, col);
-}
-
-static int get_min_log2_tile_cols(const int sb64_cols) {
- int min_log2 = 0;
- while ((MAX_TILE_WIDTH_B64 << min_log2) < sb64_cols)
- ++min_log2;
- return min_log2;
-}
-
-static int get_max_log2_tile_cols(const int sb64_cols) {
- int max_log2 = 1;
- while ((sb64_cols >> max_log2) >= MIN_TILE_WIDTH_B64)
- ++max_log2;
- return max_log2 - 1;
-}
-
-void vp9_get_tile_n_bits(int mi_cols,
- int *min_log2_tile_cols, int *max_log2_tile_cols) {
- const int sb64_cols = mi_cols_aligned_to_sb(mi_cols) >> MI_BLOCK_SIZE_LOG2;
- *min_log2_tile_cols = get_min_log2_tile_cols(sb64_cols);
- *max_log2_tile_cols = get_max_log2_tile_cols(sb64_cols);
- assert(*min_log2_tile_cols <= *max_log2_tile_cols);
-}
diff --git a/thirdparty/libvpx/vp9/common/vp9_tile_common.h b/thirdparty/libvpx/vp9/common/vp9_tile_common.h
deleted file mode 100644
index ae58805de1..0000000000
--- a/thirdparty/libvpx/vp9/common/vp9_tile_common.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_COMMON_VP9_TILE_COMMON_H_
-#define VP9_COMMON_VP9_TILE_COMMON_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct VP9Common;
-
-typedef struct TileInfo {
- int mi_row_start, mi_row_end;
- int mi_col_start, mi_col_end;
-} TileInfo;
-
-// initializes 'tile->mi_(row|col)_(start|end)' for (row, col) based on
-// 'cm->log2_tile_(rows|cols)' & 'cm->mi_(rows|cols)'
-void vp9_tile_init(TileInfo *tile, const struct VP9Common *cm,
- int row, int col);
-
-void vp9_tile_set_row(TileInfo *tile, const struct VP9Common *cm, int row);
-void vp9_tile_set_col(TileInfo *tile, const struct VP9Common *cm, int col);
-
-void vp9_get_tile_n_bits(int mi_cols,
- int *min_log2_tile_cols, int *max_log2_tile_cols);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_COMMON_VP9_TILE_COMMON_H_
diff --git a/thirdparty/libvpx/vp9/common/x86/vp9_idct_intrin_sse2.c b/thirdparty/libvpx/vp9/common/x86/vp9_idct_intrin_sse2.c
deleted file mode 100644
index 1c77b57ff1..0000000000
--- a/thirdparty/libvpx/vp9/common/x86/vp9_idct_intrin_sse2.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vp9_rtcd.h"
-#include "vpx_dsp/x86/inv_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-#include "vpx_ports/mem.h"
-
-void vp9_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int stride,
- int tx_type) {
- __m128i in[2];
- const __m128i zero = _mm_setzero_si128();
- const __m128i eight = _mm_set1_epi16(8);
-
- in[0] = load_input_data(input);
- in[1] = load_input_data(input + 8);
-
- switch (tx_type) {
- case 0: // DCT_DCT
- idct4_sse2(in);
- idct4_sse2(in);
- break;
- case 1: // ADST_DCT
- idct4_sse2(in);
- iadst4_sse2(in);
- break;
- case 2: // DCT_ADST
- iadst4_sse2(in);
- idct4_sse2(in);
- break;
- case 3: // ADST_ADST
- iadst4_sse2(in);
- iadst4_sse2(in);
- break;
- default:
- assert(0);
- break;
- }
-
- // Final round and shift
- in[0] = _mm_add_epi16(in[0], eight);
- in[1] = _mm_add_epi16(in[1], eight);
-
- in[0] = _mm_srai_epi16(in[0], 4);
- in[1] = _mm_srai_epi16(in[1], 4);
-
- // Reconstruction and Store
- {
- __m128i d0 = _mm_cvtsi32_si128(*(const int *)(dest));
- __m128i d2 = _mm_cvtsi32_si128(*(const int *)(dest + stride * 2));
- d0 = _mm_unpacklo_epi32(d0,
- _mm_cvtsi32_si128(*(const int *)(dest + stride)));
- d2 = _mm_unpacklo_epi32(
- d2, _mm_cvtsi32_si128(*(const int *)(dest + stride * 3)));
- d0 = _mm_unpacklo_epi8(d0, zero);
- d2 = _mm_unpacklo_epi8(d2, zero);
- d0 = _mm_add_epi16(d0, in[0]);
- d2 = _mm_add_epi16(d2, in[1]);
- d0 = _mm_packus_epi16(d0, d2);
- // store result[0]
- *(int *)dest = _mm_cvtsi128_si32(d0);
- // store result[1]
- d0 = _mm_srli_si128(d0, 4);
- *(int *)(dest + stride) = _mm_cvtsi128_si32(d0);
- // store result[2]
- d0 = _mm_srli_si128(d0, 4);
- *(int *)(dest + stride * 2) = _mm_cvtsi128_si32(d0);
- // store result[3]
- d0 = _mm_srli_si128(d0, 4);
- *(int *)(dest + stride * 3) = _mm_cvtsi128_si32(d0);
- }
-}
-
-void vp9_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int stride,
- int tx_type) {
- __m128i in[8];
- const __m128i zero = _mm_setzero_si128();
- const __m128i final_rounding = _mm_set1_epi16(1 << 4);
-
- // load input data
- in[0] = load_input_data(input);
- in[1] = load_input_data(input + 8 * 1);
- in[2] = load_input_data(input + 8 * 2);
- in[3] = load_input_data(input + 8 * 3);
- in[4] = load_input_data(input + 8 * 4);
- in[5] = load_input_data(input + 8 * 5);
- in[6] = load_input_data(input + 8 * 6);
- in[7] = load_input_data(input + 8 * 7);
-
- switch (tx_type) {
- case 0: // DCT_DCT
- idct8_sse2(in);
- idct8_sse2(in);
- break;
- case 1: // ADST_DCT
- idct8_sse2(in);
- iadst8_sse2(in);
- break;
- case 2: // DCT_ADST
- iadst8_sse2(in);
- idct8_sse2(in);
- break;
- case 3: // ADST_ADST
- iadst8_sse2(in);
- iadst8_sse2(in);
- break;
- default:
- assert(0);
- break;
- }
-
- // Final rounding and shift
- in[0] = _mm_adds_epi16(in[0], final_rounding);
- in[1] = _mm_adds_epi16(in[1], final_rounding);
- in[2] = _mm_adds_epi16(in[2], final_rounding);
- in[3] = _mm_adds_epi16(in[3], final_rounding);
- in[4] = _mm_adds_epi16(in[4], final_rounding);
- in[5] = _mm_adds_epi16(in[5], final_rounding);
- in[6] = _mm_adds_epi16(in[6], final_rounding);
- in[7] = _mm_adds_epi16(in[7], final_rounding);
-
- in[0] = _mm_srai_epi16(in[0], 5);
- in[1] = _mm_srai_epi16(in[1], 5);
- in[2] = _mm_srai_epi16(in[2], 5);
- in[3] = _mm_srai_epi16(in[3], 5);
- in[4] = _mm_srai_epi16(in[4], 5);
- in[5] = _mm_srai_epi16(in[5], 5);
- in[6] = _mm_srai_epi16(in[6], 5);
- in[7] = _mm_srai_epi16(in[7], 5);
-
- RECON_AND_STORE(dest + 0 * stride, in[0]);
- RECON_AND_STORE(dest + 1 * stride, in[1]);
- RECON_AND_STORE(dest + 2 * stride, in[2]);
- RECON_AND_STORE(dest + 3 * stride, in[3]);
- RECON_AND_STORE(dest + 4 * stride, in[4]);
- RECON_AND_STORE(dest + 5 * stride, in[5]);
- RECON_AND_STORE(dest + 6 * stride, in[6]);
- RECON_AND_STORE(dest + 7 * stride, in[7]);
-}
-
-void vp9_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride, int tx_type) {
- __m128i in0[16], in1[16];
-
- load_buffer_8x16(input, in0);
- input += 8;
- load_buffer_8x16(input, in1);
-
- switch (tx_type) {
- case 0: // DCT_DCT
- idct16_sse2(in0, in1);
- idct16_sse2(in0, in1);
- break;
- case 1: // ADST_DCT
- idct16_sse2(in0, in1);
- iadst16_sse2(in0, in1);
- break;
- case 2: // DCT_ADST
- iadst16_sse2(in0, in1);
- idct16_sse2(in0, in1);
- break;
- case 3: // ADST_ADST
- iadst16_sse2(in0, in1);
- iadst16_sse2(in0, in1);
- break;
- default:
- assert(0);
- break;
- }
-
- write_buffer_8x16(dest, in0, stride);
- dest += 8;
- write_buffer_8x16(dest, in1, stride);
-}
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_decodeframe.c b/thirdparty/libvpx/vp9/decoder/vp9_decodeframe.c
deleted file mode 100644
index d63912932c..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_decodeframe.c
+++ /dev/null
@@ -1,2271 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-#include <stdlib.h> // qsort()
-
-#include "./vp9_rtcd.h"
-#include "./vpx_dsp_rtcd.h"
-#include "./vpx_scale_rtcd.h"
-
-#include "vpx_dsp/bitreader_buffer.h"
-#include "vpx_dsp/bitreader.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/mem_ops.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vpx_util/vpx_thread.h"
-
-#include "vp9/common/vp9_alloccommon.h"
-#include "vp9/common/vp9_common.h"
-#include "vp9/common/vp9_entropy.h"
-#include "vp9/common/vp9_entropymode.h"
-#include "vp9/common/vp9_idct.h"
-#include "vp9/common/vp9_thread_common.h"
-#include "vp9/common/vp9_pred_common.h"
-#include "vp9/common/vp9_quant_common.h"
-#include "vp9/common/vp9_reconintra.h"
-#include "vp9/common/vp9_reconinter.h"
-#include "vp9/common/vp9_seg_common.h"
-#include "vp9/common/vp9_tile_common.h"
-
-#include "vp9/decoder/vp9_decodeframe.h"
-#include "vp9/decoder/vp9_detokenize.h"
-#include "vp9/decoder/vp9_decodemv.h"
-#include "vp9/decoder/vp9_decoder.h"
-#include "vp9/decoder/vp9_dsubexp.h"
-
-#define MAX_VP9_HEADER_SIZE 80
-
-static int is_compound_reference_allowed(const VP9_COMMON *cm) {
- int i;
- for (i = 1; i < REFS_PER_FRAME; ++i)
- if (cm->ref_frame_sign_bias[i + 1] != cm->ref_frame_sign_bias[1])
- return 1;
-
- return 0;
-}
-
-static void setup_compound_reference_mode(VP9_COMMON *cm) {
- if (cm->ref_frame_sign_bias[LAST_FRAME] ==
- cm->ref_frame_sign_bias[GOLDEN_FRAME]) {
- cm->comp_fixed_ref = ALTREF_FRAME;
- cm->comp_var_ref[0] = LAST_FRAME;
- cm->comp_var_ref[1] = GOLDEN_FRAME;
- } else if (cm->ref_frame_sign_bias[LAST_FRAME] ==
- cm->ref_frame_sign_bias[ALTREF_FRAME]) {
- cm->comp_fixed_ref = GOLDEN_FRAME;
- cm->comp_var_ref[0] = LAST_FRAME;
- cm->comp_var_ref[1] = ALTREF_FRAME;
- } else {
- cm->comp_fixed_ref = LAST_FRAME;
- cm->comp_var_ref[0] = GOLDEN_FRAME;
- cm->comp_var_ref[1] = ALTREF_FRAME;
- }
-}
-
-static int read_is_valid(const uint8_t *start, size_t len, const uint8_t *end) {
- return len != 0 && len <= (size_t)(end - start);
-}
-
-static int decode_unsigned_max(struct vpx_read_bit_buffer *rb, int max) {
- const int data = vpx_rb_read_literal(rb, get_unsigned_bits(max));
- return data > max ? max : data;
-}
-
-static TX_MODE read_tx_mode(vpx_reader *r) {
- TX_MODE tx_mode = vpx_read_literal(r, 2);
- if (tx_mode == ALLOW_32X32)
- tx_mode += vpx_read_bit(r);
- return tx_mode;
-}
-
-static void read_tx_mode_probs(struct tx_probs *tx_probs, vpx_reader *r) {
- int i, j;
-
- for (i = 0; i < TX_SIZE_CONTEXTS; ++i)
- for (j = 0; j < TX_SIZES - 3; ++j)
- vp9_diff_update_prob(r, &tx_probs->p8x8[i][j]);
-
- for (i = 0; i < TX_SIZE_CONTEXTS; ++i)
- for (j = 0; j < TX_SIZES - 2; ++j)
- vp9_diff_update_prob(r, &tx_probs->p16x16[i][j]);
-
- for (i = 0; i < TX_SIZE_CONTEXTS; ++i)
- for (j = 0; j < TX_SIZES - 1; ++j)
- vp9_diff_update_prob(r, &tx_probs->p32x32[i][j]);
-}
-
-static void read_switchable_interp_probs(FRAME_CONTEXT *fc, vpx_reader *r) {
- int i, j;
- for (j = 0; j < SWITCHABLE_FILTER_CONTEXTS; ++j)
- for (i = 0; i < SWITCHABLE_FILTERS - 1; ++i)
- vp9_diff_update_prob(r, &fc->switchable_interp_prob[j][i]);
-}
-
-static void read_inter_mode_probs(FRAME_CONTEXT *fc, vpx_reader *r) {
- int i, j;
- for (i = 0; i < INTER_MODE_CONTEXTS; ++i)
- for (j = 0; j < INTER_MODES - 1; ++j)
- vp9_diff_update_prob(r, &fc->inter_mode_probs[i][j]);
-}
-
-static REFERENCE_MODE read_frame_reference_mode(const VP9_COMMON *cm,
- vpx_reader *r) {
- if (is_compound_reference_allowed(cm)) {
- return vpx_read_bit(r) ? (vpx_read_bit(r) ? REFERENCE_MODE_SELECT
- : COMPOUND_REFERENCE)
- : SINGLE_REFERENCE;
- } else {
- return SINGLE_REFERENCE;
- }
-}
-
-static void read_frame_reference_mode_probs(VP9_COMMON *cm, vpx_reader *r) {
- FRAME_CONTEXT *const fc = cm->fc;
- int i;
-
- if (cm->reference_mode == REFERENCE_MODE_SELECT)
- for (i = 0; i < COMP_INTER_CONTEXTS; ++i)
- vp9_diff_update_prob(r, &fc->comp_inter_prob[i]);
-
- if (cm->reference_mode != COMPOUND_REFERENCE)
- for (i = 0; i < REF_CONTEXTS; ++i) {
- vp9_diff_update_prob(r, &fc->single_ref_prob[i][0]);
- vp9_diff_update_prob(r, &fc->single_ref_prob[i][1]);
- }
-
- if (cm->reference_mode != SINGLE_REFERENCE)
- for (i = 0; i < REF_CONTEXTS; ++i)
- vp9_diff_update_prob(r, &fc->comp_ref_prob[i]);
-}
-
-static void update_mv_probs(vpx_prob *p, int n, vpx_reader *r) {
- int i;
- for (i = 0; i < n; ++i)
- if (vpx_read(r, MV_UPDATE_PROB))
- p[i] = (vpx_read_literal(r, 7) << 1) | 1;
-}
-
-static void read_mv_probs(nmv_context *ctx, int allow_hp, vpx_reader *r) {
- int i, j;
-
- update_mv_probs(ctx->joints, MV_JOINTS - 1, r);
-
- for (i = 0; i < 2; ++i) {
- nmv_component *const comp_ctx = &ctx->comps[i];
- update_mv_probs(&comp_ctx->sign, 1, r);
- update_mv_probs(comp_ctx->classes, MV_CLASSES - 1, r);
- update_mv_probs(comp_ctx->class0, CLASS0_SIZE - 1, r);
- update_mv_probs(comp_ctx->bits, MV_OFFSET_BITS, r);
- }
-
- for (i = 0; i < 2; ++i) {
- nmv_component *const comp_ctx = &ctx->comps[i];
- for (j = 0; j < CLASS0_SIZE; ++j)
- update_mv_probs(comp_ctx->class0_fp[j], MV_FP_SIZE - 1, r);
- update_mv_probs(comp_ctx->fp, 3, r);
- }
-
- if (allow_hp) {
- for (i = 0; i < 2; ++i) {
- nmv_component *const comp_ctx = &ctx->comps[i];
- update_mv_probs(&comp_ctx->class0_hp, 1, r);
- update_mv_probs(&comp_ctx->hp, 1, r);
- }
- }
-}
-
-static void inverse_transform_block_inter(MACROBLOCKD* xd, int plane,
- const TX_SIZE tx_size,
- uint8_t *dst, int stride,
- int eob) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- tran_low_t *const dqcoeff = pd->dqcoeff;
- assert(eob > 0);
-#if CONFIG_VP9_HIGHBITDEPTH
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- if (xd->lossless) {
- vp9_highbd_iwht4x4_add(dqcoeff, dst, stride, eob, xd->bd);
- } else {
- switch (tx_size) {
- case TX_4X4:
- vp9_highbd_idct4x4_add(dqcoeff, dst, stride, eob, xd->bd);
- break;
- case TX_8X8:
- vp9_highbd_idct8x8_add(dqcoeff, dst, stride, eob, xd->bd);
- break;
- case TX_16X16:
- vp9_highbd_idct16x16_add(dqcoeff, dst, stride, eob, xd->bd);
- break;
- case TX_32X32:
- vp9_highbd_idct32x32_add(dqcoeff, dst, stride, eob, xd->bd);
- break;
- default:
- assert(0 && "Invalid transform size");
- }
- }
- } else {
- if (xd->lossless) {
- vp9_iwht4x4_add(dqcoeff, dst, stride, eob);
- } else {
- switch (tx_size) {
- case TX_4X4:
- vp9_idct4x4_add(dqcoeff, dst, stride, eob);
- break;
- case TX_8X8:
- vp9_idct8x8_add(dqcoeff, dst, stride, eob);
- break;
- case TX_16X16:
- vp9_idct16x16_add(dqcoeff, dst, stride, eob);
- break;
- case TX_32X32:
- vp9_idct32x32_add(dqcoeff, dst, stride, eob);
- break;
- default:
- assert(0 && "Invalid transform size");
- return;
- }
- }
- }
-#else
- if (xd->lossless) {
- vp9_iwht4x4_add(dqcoeff, dst, stride, eob);
- } else {
- switch (tx_size) {
- case TX_4X4:
- vp9_idct4x4_add(dqcoeff, dst, stride, eob);
- break;
- case TX_8X8:
- vp9_idct8x8_add(dqcoeff, dst, stride, eob);
- break;
- case TX_16X16:
- vp9_idct16x16_add(dqcoeff, dst, stride, eob);
- break;
- case TX_32X32:
- vp9_idct32x32_add(dqcoeff, dst, stride, eob);
- break;
- default:
- assert(0 && "Invalid transform size");
- return;
- }
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
- if (eob == 1) {
- dqcoeff[0] = 0;
- } else {
- if (tx_size <= TX_16X16 && eob <= 10)
- memset(dqcoeff, 0, 4 * (4 << tx_size) * sizeof(dqcoeff[0]));
- else if (tx_size == TX_32X32 && eob <= 34)
- memset(dqcoeff, 0, 256 * sizeof(dqcoeff[0]));
- else
- memset(dqcoeff, 0, (16 << (tx_size << 1)) * sizeof(dqcoeff[0]));
- }
-}
-
-static void inverse_transform_block_intra(MACROBLOCKD* xd, int plane,
- const TX_TYPE tx_type,
- const TX_SIZE tx_size,
- uint8_t *dst, int stride,
- int eob) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- tran_low_t *const dqcoeff = pd->dqcoeff;
- assert(eob > 0);
-#if CONFIG_VP9_HIGHBITDEPTH
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- if (xd->lossless) {
- vp9_highbd_iwht4x4_add(dqcoeff, dst, stride, eob, xd->bd);
- } else {
- switch (tx_size) {
- case TX_4X4:
- vp9_highbd_iht4x4_add(tx_type, dqcoeff, dst, stride, eob, xd->bd);
- break;
- case TX_8X8:
- vp9_highbd_iht8x8_add(tx_type, dqcoeff, dst, stride, eob, xd->bd);
- break;
- case TX_16X16:
- vp9_highbd_iht16x16_add(tx_type, dqcoeff, dst, stride, eob, xd->bd);
- break;
- case TX_32X32:
- vp9_highbd_idct32x32_add(dqcoeff, dst, stride, eob, xd->bd);
- break;
- default:
- assert(0 && "Invalid transform size");
- }
- }
- } else {
- if (xd->lossless) {
- vp9_iwht4x4_add(dqcoeff, dst, stride, eob);
- } else {
- switch (tx_size) {
- case TX_4X4:
- vp9_iht4x4_add(tx_type, dqcoeff, dst, stride, eob);
- break;
- case TX_8X8:
- vp9_iht8x8_add(tx_type, dqcoeff, dst, stride, eob);
- break;
- case TX_16X16:
- vp9_iht16x16_add(tx_type, dqcoeff, dst, stride, eob);
- break;
- case TX_32X32:
- vp9_idct32x32_add(dqcoeff, dst, stride, eob);
- break;
- default:
- assert(0 && "Invalid transform size");
- return;
- }
- }
- }
-#else
- if (xd->lossless) {
- vp9_iwht4x4_add(dqcoeff, dst, stride, eob);
- } else {
- switch (tx_size) {
- case TX_4X4:
- vp9_iht4x4_add(tx_type, dqcoeff, dst, stride, eob);
- break;
- case TX_8X8:
- vp9_iht8x8_add(tx_type, dqcoeff, dst, stride, eob);
- break;
- case TX_16X16:
- vp9_iht16x16_add(tx_type, dqcoeff, dst, stride, eob);
- break;
- case TX_32X32:
- vp9_idct32x32_add(dqcoeff, dst, stride, eob);
- break;
- default:
- assert(0 && "Invalid transform size");
- return;
- }
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
- if (eob == 1) {
- dqcoeff[0] = 0;
- } else {
- if (tx_type == DCT_DCT && tx_size <= TX_16X16 && eob <= 10)
- memset(dqcoeff, 0, 4 * (4 << tx_size) * sizeof(dqcoeff[0]));
- else if (tx_size == TX_32X32 && eob <= 34)
- memset(dqcoeff, 0, 256 * sizeof(dqcoeff[0]));
- else
- memset(dqcoeff, 0, (16 << (tx_size << 1)) * sizeof(dqcoeff[0]));
- }
-}
-
-static void predict_and_reconstruct_intra_block(MACROBLOCKD *const xd,
- vpx_reader *r,
- MODE_INFO *const mi,
- int plane,
- int row, int col,
- TX_SIZE tx_size) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- PREDICTION_MODE mode = (plane == 0) ? mi->mode : mi->uv_mode;
- uint8_t *dst;
- dst = &pd->dst.buf[4 * row * pd->dst.stride + 4 * col];
-
- if (mi->sb_type < BLOCK_8X8)
- if (plane == 0)
- mode = xd->mi[0]->bmi[(row << 1) + col].as_mode;
-
- vp9_predict_intra_block(xd, pd->n4_wl, tx_size, mode,
- dst, pd->dst.stride, dst, pd->dst.stride,
- col, row, plane);
-
- if (!mi->skip) {
- const TX_TYPE tx_type = (plane || xd->lossless) ?
- DCT_DCT : intra_mode_to_tx_type_lookup[mode];
- const scan_order *sc = (plane || xd->lossless) ?
- &vp9_default_scan_orders[tx_size] : &vp9_scan_orders[tx_size][tx_type];
- const int eob = vp9_decode_block_tokens(xd, plane, sc, col, row, tx_size,
- r, mi->segment_id);
- if (eob > 0) {
- inverse_transform_block_intra(xd, plane, tx_type, tx_size,
- dst, pd->dst.stride, eob);
- }
- }
-}
-
-static int reconstruct_inter_block(MACROBLOCKD *const xd, vpx_reader *r,
- MODE_INFO *const mi, int plane,
- int row, int col, TX_SIZE tx_size) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- const scan_order *sc = &vp9_default_scan_orders[tx_size];
- const int eob = vp9_decode_block_tokens(xd, plane, sc, col, row, tx_size, r,
- mi->segment_id);
-
- if (eob > 0) {
- inverse_transform_block_inter(
- xd, plane, tx_size, &pd->dst.buf[4 * row * pd->dst.stride + 4 * col],
- pd->dst.stride, eob);
- }
- return eob;
-}
-
-static void build_mc_border(const uint8_t *src, int src_stride,
- uint8_t *dst, int dst_stride,
- int x, int y, int b_w, int b_h, int w, int h) {
- // Get a pointer to the start of the real data for this row.
- const uint8_t *ref_row = src - x - y * src_stride;
-
- if (y >= h)
- ref_row += (h - 1) * src_stride;
- else if (y > 0)
- ref_row += y * src_stride;
-
- do {
- int right = 0, copy;
- int left = x < 0 ? -x : 0;
-
- if (left > b_w)
- left = b_w;
-
- if (x + b_w > w)
- right = x + b_w - w;
-
- if (right > b_w)
- right = b_w;
-
- copy = b_w - left - right;
-
- if (left)
- memset(dst, ref_row[0], left);
-
- if (copy)
- memcpy(dst + left, ref_row + x + left, copy);
-
- if (right)
- memset(dst + left + copy, ref_row[w - 1], right);
-
- dst += dst_stride;
- ++y;
-
- if (y > 0 && y < h)
- ref_row += src_stride;
- } while (--b_h);
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void high_build_mc_border(const uint8_t *src8, int src_stride,
- uint16_t *dst, int dst_stride,
- int x, int y, int b_w, int b_h,
- int w, int h) {
- // Get a pointer to the start of the real data for this row.
- const uint16_t *src = CONVERT_TO_SHORTPTR(src8);
- const uint16_t *ref_row = src - x - y * src_stride;
-
- if (y >= h)
- ref_row += (h - 1) * src_stride;
- else if (y > 0)
- ref_row += y * src_stride;
-
- do {
- int right = 0, copy;
- int left = x < 0 ? -x : 0;
-
- if (left > b_w)
- left = b_w;
-
- if (x + b_w > w)
- right = x + b_w - w;
-
- if (right > b_w)
- right = b_w;
-
- copy = b_w - left - right;
-
- if (left)
- vpx_memset16(dst, ref_row[0], left);
-
- if (copy)
- memcpy(dst + left, ref_row + x + left, copy * sizeof(uint16_t));
-
- if (right)
- vpx_memset16(dst + left + copy, ref_row[w - 1], right);
-
- dst += dst_stride;
- ++y;
-
- if (y > 0 && y < h)
- ref_row += src_stride;
- } while (--b_h);
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void extend_and_predict(const uint8_t *buf_ptr1, int pre_buf_stride,
- int x0, int y0, int b_w, int b_h,
- int frame_width, int frame_height,
- int border_offset,
- uint8_t *const dst, int dst_buf_stride,
- int subpel_x, int subpel_y,
- const InterpKernel *kernel,
- const struct scale_factors *sf,
- MACROBLOCKD *xd,
- int w, int h, int ref, int xs, int ys) {
- DECLARE_ALIGNED(16, uint16_t, mc_buf_high[80 * 2 * 80 * 2]);
- const uint8_t *buf_ptr;
-
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- high_build_mc_border(buf_ptr1, pre_buf_stride, mc_buf_high, b_w,
- x0, y0, b_w, b_h, frame_width, frame_height);
- buf_ptr = CONVERT_TO_BYTEPTR(mc_buf_high) + border_offset;
- } else {
- build_mc_border(buf_ptr1, pre_buf_stride, (uint8_t *)mc_buf_high, b_w,
- x0, y0, b_w, b_h, frame_width, frame_height);
- buf_ptr = ((uint8_t *)mc_buf_high) + border_offset;
- }
-
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- highbd_inter_predictor(buf_ptr, b_w, dst, dst_buf_stride, subpel_x,
- subpel_y, sf, w, h, ref, kernel, xs, ys, xd->bd);
- } else {
- inter_predictor(buf_ptr, b_w, dst, dst_buf_stride, subpel_x,
- subpel_y, sf, w, h, ref, kernel, xs, ys);
- }
-}
-#else
-static void extend_and_predict(const uint8_t *buf_ptr1, int pre_buf_stride,
- int x0, int y0, int b_w, int b_h,
- int frame_width, int frame_height,
- int border_offset,
- uint8_t *const dst, int dst_buf_stride,
- int subpel_x, int subpel_y,
- const InterpKernel *kernel,
- const struct scale_factors *sf,
- int w, int h, int ref, int xs, int ys) {
- DECLARE_ALIGNED(16, uint8_t, mc_buf[80 * 2 * 80 * 2]);
- const uint8_t *buf_ptr;
-
- build_mc_border(buf_ptr1, pre_buf_stride, mc_buf, b_w,
- x0, y0, b_w, b_h, frame_width, frame_height);
- buf_ptr = mc_buf + border_offset;
-
- inter_predictor(buf_ptr, b_w, dst, dst_buf_stride, subpel_x,
- subpel_y, sf, w, h, ref, kernel, xs, ys);
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-static void dec_build_inter_predictors(VPxWorker *const worker, MACROBLOCKD *xd,
- int plane, int bw, int bh, int x,
- int y, int w, int h, int mi_x, int mi_y,
- const InterpKernel *kernel,
- const struct scale_factors *sf,
- struct buf_2d *pre_buf,
- struct buf_2d *dst_buf, const MV* mv,
- RefCntBuffer *ref_frame_buf,
- int is_scaled, int ref) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- uint8_t *const dst = dst_buf->buf + dst_buf->stride * y + x;
- MV32 scaled_mv;
- int xs, ys, x0, y0, x0_16, y0_16, frame_width, frame_height,
- buf_stride, subpel_x, subpel_y;
- uint8_t *ref_frame, *buf_ptr;
-
- // Get reference frame pointer, width and height.
- if (plane == 0) {
- frame_width = ref_frame_buf->buf.y_crop_width;
- frame_height = ref_frame_buf->buf.y_crop_height;
- ref_frame = ref_frame_buf->buf.y_buffer;
- } else {
- frame_width = ref_frame_buf->buf.uv_crop_width;
- frame_height = ref_frame_buf->buf.uv_crop_height;
- ref_frame = plane == 1 ? ref_frame_buf->buf.u_buffer
- : ref_frame_buf->buf.v_buffer;
- }
-
- if (is_scaled) {
- const MV mv_q4 = clamp_mv_to_umv_border_sb(xd, mv, bw, bh,
- pd->subsampling_x,
- pd->subsampling_y);
- // Co-ordinate of containing block to pixel precision.
- int x_start = (-xd->mb_to_left_edge >> (3 + pd->subsampling_x));
- int y_start = (-xd->mb_to_top_edge >> (3 + pd->subsampling_y));
-#if CONFIG_BETTER_HW_COMPATIBILITY
- assert(xd->mi[0]->sb_type != BLOCK_4X8 &&
- xd->mi[0]->sb_type != BLOCK_8X4);
- assert(mv_q4.row == mv->row * (1 << (1 - pd->subsampling_y)) &&
- mv_q4.col == mv->col * (1 << (1 - pd->subsampling_x)));
-#endif
- // Co-ordinate of the block to 1/16th pixel precision.
- x0_16 = (x_start + x) << SUBPEL_BITS;
- y0_16 = (y_start + y) << SUBPEL_BITS;
-
- // Co-ordinate of current block in reference frame
- // to 1/16th pixel precision.
- x0_16 = sf->scale_value_x(x0_16, sf);
- y0_16 = sf->scale_value_y(y0_16, sf);
-
- // Map the top left corner of the block into the reference frame.
- x0 = sf->scale_value_x(x_start + x, sf);
- y0 = sf->scale_value_y(y_start + y, sf);
-
- // Scale the MV and incorporate the sub-pixel offset of the block
- // in the reference frame.
- scaled_mv = vp9_scale_mv(&mv_q4, mi_x + x, mi_y + y, sf);
- xs = sf->x_step_q4;
- ys = sf->y_step_q4;
- } else {
- // Co-ordinate of containing block to pixel precision.
- x0 = (-xd->mb_to_left_edge >> (3 + pd->subsampling_x)) + x;
- y0 = (-xd->mb_to_top_edge >> (3 + pd->subsampling_y)) + y;
-
- // Co-ordinate of the block to 1/16th pixel precision.
- x0_16 = x0 << SUBPEL_BITS;
- y0_16 = y0 << SUBPEL_BITS;
-
- scaled_mv.row = mv->row * (1 << (1 - pd->subsampling_y));
- scaled_mv.col = mv->col * (1 << (1 - pd->subsampling_x));
- xs = ys = 16;
- }
- subpel_x = scaled_mv.col & SUBPEL_MASK;
- subpel_y = scaled_mv.row & SUBPEL_MASK;
-
- // Calculate the top left corner of the best matching block in the
- // reference frame.
- x0 += scaled_mv.col >> SUBPEL_BITS;
- y0 += scaled_mv.row >> SUBPEL_BITS;
- x0_16 += scaled_mv.col;
- y0_16 += scaled_mv.row;
-
- // Get reference block pointer.
- buf_ptr = ref_frame + y0 * pre_buf->stride + x0;
- buf_stride = pre_buf->stride;
-
- // Do border extension if there is motion or the
- // width/height is not a multiple of 8 pixels.
- if (is_scaled || scaled_mv.col || scaled_mv.row ||
- (frame_width & 0x7) || (frame_height & 0x7)) {
- int y1 = ((y0_16 + (h - 1) * ys) >> SUBPEL_BITS) + 1;
-
- // Get reference block bottom right horizontal coordinate.
- int x1 = ((x0_16 + (w - 1) * xs) >> SUBPEL_BITS) + 1;
- int x_pad = 0, y_pad = 0;
-
- if (subpel_x || (sf->x_step_q4 != SUBPEL_SHIFTS)) {
- x0 -= VP9_INTERP_EXTEND - 1;
- x1 += VP9_INTERP_EXTEND;
- x_pad = 1;
- }
-
- if (subpel_y || (sf->y_step_q4 != SUBPEL_SHIFTS)) {
- y0 -= VP9_INTERP_EXTEND - 1;
- y1 += VP9_INTERP_EXTEND;
- y_pad = 1;
- }
-
- // Wait until reference block is ready. Pad 7 more pixels as last 7
- // pixels of each superblock row can be changed by next superblock row.
- if (worker != NULL)
- vp9_frameworker_wait(worker, ref_frame_buf,
- VPXMAX(0, (y1 + 7)) << (plane == 0 ? 0 : 1));
-
- // Skip border extension if block is inside the frame.
- if (x0 < 0 || x0 > frame_width - 1 || x1 < 0 || x1 > frame_width - 1 ||
- y0 < 0 || y0 > frame_height - 1 || y1 < 0 || y1 > frame_height - 1) {
- // Extend the border.
- const uint8_t *const buf_ptr1 = ref_frame + y0 * buf_stride + x0;
- const int b_w = x1 - x0 + 1;
- const int b_h = y1 - y0 + 1;
- const int border_offset = y_pad * 3 * b_w + x_pad * 3;
-
- extend_and_predict(buf_ptr1, buf_stride, x0, y0, b_w, b_h,
- frame_width, frame_height, border_offset,
- dst, dst_buf->stride,
- subpel_x, subpel_y,
- kernel, sf,
-#if CONFIG_VP9_HIGHBITDEPTH
- xd,
-#endif
- w, h, ref, xs, ys);
- return;
- }
- } else {
- // Wait until reference block is ready. Pad 7 more pixels as last 7
- // pixels of each superblock row can be changed by next superblock row.
- if (worker != NULL) {
- const int y1 = (y0_16 + (h - 1) * ys) >> SUBPEL_BITS;
- vp9_frameworker_wait(worker, ref_frame_buf,
- VPXMAX(0, (y1 + 7)) << (plane == 0 ? 0 : 1));
- }
- }
-#if CONFIG_VP9_HIGHBITDEPTH
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- highbd_inter_predictor(buf_ptr, buf_stride, dst, dst_buf->stride, subpel_x,
- subpel_y, sf, w, h, ref, kernel, xs, ys, xd->bd);
- } else {
- inter_predictor(buf_ptr, buf_stride, dst, dst_buf->stride, subpel_x,
- subpel_y, sf, w, h, ref, kernel, xs, ys);
- }
-#else
- inter_predictor(buf_ptr, buf_stride, dst, dst_buf->stride, subpel_x,
- subpel_y, sf, w, h, ref, kernel, xs, ys);
-#endif // CONFIG_VP9_HIGHBITDEPTH
-}
-
-static void dec_build_inter_predictors_sb(VP9Decoder *const pbi,
- MACROBLOCKD *xd,
- int mi_row, int mi_col) {
- int plane;
- const int mi_x = mi_col * MI_SIZE;
- const int mi_y = mi_row * MI_SIZE;
- const MODE_INFO *mi = xd->mi[0];
- const InterpKernel *kernel = vp9_filter_kernels[mi->interp_filter];
- const BLOCK_SIZE sb_type = mi->sb_type;
- const int is_compound = has_second_ref(mi);
- int ref;
- int is_scaled;
- VPxWorker *const fwo = pbi->frame_parallel_decode ?
- pbi->frame_worker_owner : NULL;
-
- for (ref = 0; ref < 1 + is_compound; ++ref) {
- const MV_REFERENCE_FRAME frame = mi->ref_frame[ref];
- RefBuffer *ref_buf = &pbi->common.frame_refs[frame - LAST_FRAME];
- const struct scale_factors *const sf = &ref_buf->sf;
- const int idx = ref_buf->idx;
- BufferPool *const pool = pbi->common.buffer_pool;
- RefCntBuffer *const ref_frame_buf = &pool->frame_bufs[idx];
-
- if (!vp9_is_valid_scale(sf))
- vpx_internal_error(xd->error_info, VPX_CODEC_UNSUP_BITSTREAM,
- "Reference frame has invalid dimensions");
-
- is_scaled = vp9_is_scaled(sf);
- vp9_setup_pre_planes(xd, ref, ref_buf->buf, mi_row, mi_col,
- is_scaled ? sf : NULL);
- xd->block_refs[ref] = ref_buf;
-
- if (sb_type < BLOCK_8X8) {
- for (plane = 0; plane < MAX_MB_PLANE; ++plane) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- struct buf_2d *const dst_buf = &pd->dst;
- const int num_4x4_w = pd->n4_w;
- const int num_4x4_h = pd->n4_h;
- const int n4w_x4 = 4 * num_4x4_w;
- const int n4h_x4 = 4 * num_4x4_h;
- struct buf_2d *const pre_buf = &pd->pre[ref];
- int i = 0, x, y;
- for (y = 0; y < num_4x4_h; ++y) {
- for (x = 0; x < num_4x4_w; ++x) {
- const MV mv = average_split_mvs(pd, mi, ref, i++);
- dec_build_inter_predictors(fwo, xd, plane, n4w_x4, n4h_x4,
- 4 * x, 4 * y, 4, 4, mi_x, mi_y, kernel,
- sf, pre_buf, dst_buf, &mv,
- ref_frame_buf, is_scaled, ref);
- }
- }
- }
- } else {
- const MV mv = mi->mv[ref].as_mv;
- for (plane = 0; plane < MAX_MB_PLANE; ++plane) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- struct buf_2d *const dst_buf = &pd->dst;
- const int num_4x4_w = pd->n4_w;
- const int num_4x4_h = pd->n4_h;
- const int n4w_x4 = 4 * num_4x4_w;
- const int n4h_x4 = 4 * num_4x4_h;
- struct buf_2d *const pre_buf = &pd->pre[ref];
- dec_build_inter_predictors(fwo, xd, plane, n4w_x4, n4h_x4,
- 0, 0, n4w_x4, n4h_x4, mi_x, mi_y, kernel,
- sf, pre_buf, dst_buf, &mv,
- ref_frame_buf, is_scaled, ref);
- }
- }
- }
-}
-
-static INLINE TX_SIZE dec_get_uv_tx_size(const MODE_INFO *mi,
- int n4_wl, int n4_hl) {
- // get minimum log2 num4x4s dimension
- const int x = VPXMIN(n4_wl, n4_hl);
- return VPXMIN(mi->tx_size, x);
-}
-
-static INLINE void dec_reset_skip_context(MACROBLOCKD *xd) {
- int i;
- for (i = 0; i < MAX_MB_PLANE; i++) {
- struct macroblockd_plane *const pd = &xd->plane[i];
- memset(pd->above_context, 0, sizeof(ENTROPY_CONTEXT) * pd->n4_w);
- memset(pd->left_context, 0, sizeof(ENTROPY_CONTEXT) * pd->n4_h);
- }
-}
-
-static void set_plane_n4(MACROBLOCKD *const xd, int bw, int bh, int bwl,
- int bhl) {
- int i;
- for (i = 0; i < MAX_MB_PLANE; i++) {
- xd->plane[i].n4_w = (bw << 1) >> xd->plane[i].subsampling_x;
- xd->plane[i].n4_h = (bh << 1) >> xd->plane[i].subsampling_y;
- xd->plane[i].n4_wl = bwl - xd->plane[i].subsampling_x;
- xd->plane[i].n4_hl = bhl - xd->plane[i].subsampling_y;
- }
-}
-
-static MODE_INFO *set_offsets(VP9_COMMON *const cm, MACROBLOCKD *const xd,
- BLOCK_SIZE bsize, int mi_row, int mi_col,
- int bw, int bh, int x_mis, int y_mis,
- int bwl, int bhl) {
- const int offset = mi_row * cm->mi_stride + mi_col;
- int x, y;
- const TileInfo *const tile = &xd->tile;
-
- xd->mi = cm->mi_grid_visible + offset;
- xd->mi[0] = &cm->mi[offset];
- // TODO(slavarnway): Generate sb_type based on bwl and bhl, instead of
- // passing bsize from decode_partition().
- xd->mi[0]->sb_type = bsize;
- for (y = 0; y < y_mis; ++y)
- for (x = !y; x < x_mis; ++x) {
- xd->mi[y * cm->mi_stride + x] = xd->mi[0];
- }
-
- set_plane_n4(xd, bw, bh, bwl, bhl);
-
- set_skip_context(xd, mi_row, mi_col);
-
- // Distance of Mb to the various image edges. These are specified to 8th pel
- // as they are always compared to values that are in 1/8th pel units
- set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols);
-
- vp9_setup_dst_planes(xd->plane, get_frame_new_buffer(cm), mi_row, mi_col);
- return xd->mi[0];
-}
-
-static void decode_block(VP9Decoder *const pbi, MACROBLOCKD *const xd,
- int mi_row, int mi_col,
- vpx_reader *r, BLOCK_SIZE bsize,
- int bwl, int bhl) {
- VP9_COMMON *const cm = &pbi->common;
- const int less8x8 = bsize < BLOCK_8X8;
- const int bw = 1 << (bwl - 1);
- const int bh = 1 << (bhl - 1);
- const int x_mis = VPXMIN(bw, cm->mi_cols - mi_col);
- const int y_mis = VPXMIN(bh, cm->mi_rows - mi_row);
-
- MODE_INFO *mi = set_offsets(cm, xd, bsize, mi_row, mi_col,
- bw, bh, x_mis, y_mis, bwl, bhl);
-
- if (bsize >= BLOCK_8X8 && (cm->subsampling_x || cm->subsampling_y)) {
- const BLOCK_SIZE uv_subsize =
- ss_size_lookup[bsize][cm->subsampling_x][cm->subsampling_y];
- if (uv_subsize == BLOCK_INVALID)
- vpx_internal_error(xd->error_info,
- VPX_CODEC_CORRUPT_FRAME, "Invalid block size.");
- }
-
- vp9_read_mode_info(pbi, xd, mi_row, mi_col, r, x_mis, y_mis);
-
- if (mi->skip) {
- dec_reset_skip_context(xd);
- }
-
- if (!is_inter_block(mi)) {
- int plane;
- for (plane = 0; plane < MAX_MB_PLANE; ++plane) {
- const struct macroblockd_plane *const pd = &xd->plane[plane];
- const TX_SIZE tx_size =
- plane ? dec_get_uv_tx_size(mi, pd->n4_wl, pd->n4_hl)
- : mi->tx_size;
- const int num_4x4_w = pd->n4_w;
- const int num_4x4_h = pd->n4_h;
- const int step = (1 << tx_size);
- int row, col;
- const int max_blocks_wide = num_4x4_w + (xd->mb_to_right_edge >= 0 ?
- 0 : xd->mb_to_right_edge >> (5 + pd->subsampling_x));
- const int max_blocks_high = num_4x4_h + (xd->mb_to_bottom_edge >= 0 ?
- 0 : xd->mb_to_bottom_edge >> (5 + pd->subsampling_y));
-
- xd->max_blocks_wide = xd->mb_to_right_edge >= 0 ? 0 : max_blocks_wide;
- xd->max_blocks_high = xd->mb_to_bottom_edge >= 0 ? 0 : max_blocks_high;
-
- for (row = 0; row < max_blocks_high; row += step)
- for (col = 0; col < max_blocks_wide; col += step)
- predict_and_reconstruct_intra_block(xd, r, mi, plane,
- row, col, tx_size);
- }
- } else {
- // Prediction
- dec_build_inter_predictors_sb(pbi, xd, mi_row, mi_col);
-
- // Reconstruction
- if (!mi->skip) {
- int eobtotal = 0;
- int plane;
-
- for (plane = 0; plane < MAX_MB_PLANE; ++plane) {
- const struct macroblockd_plane *const pd = &xd->plane[plane];
- const TX_SIZE tx_size =
- plane ? dec_get_uv_tx_size(mi, pd->n4_wl, pd->n4_hl)
- : mi->tx_size;
- const int num_4x4_w = pd->n4_w;
- const int num_4x4_h = pd->n4_h;
- const int step = (1 << tx_size);
- int row, col;
- const int max_blocks_wide = num_4x4_w + (xd->mb_to_right_edge >= 0 ?
- 0 : xd->mb_to_right_edge >> (5 + pd->subsampling_x));
- const int max_blocks_high = num_4x4_h + (xd->mb_to_bottom_edge >= 0 ?
- 0 : xd->mb_to_bottom_edge >> (5 + pd->subsampling_y));
-
- xd->max_blocks_wide = xd->mb_to_right_edge >= 0 ? 0 : max_blocks_wide;
- xd->max_blocks_high = xd->mb_to_bottom_edge >= 0 ? 0 : max_blocks_high;
-
- for (row = 0; row < max_blocks_high; row += step)
- for (col = 0; col < max_blocks_wide; col += step)
- eobtotal += reconstruct_inter_block(xd, r, mi, plane, row, col,
- tx_size);
- }
-
- if (!less8x8 && eobtotal == 0)
- mi->skip = 1; // skip loopfilter
- }
- }
-
- xd->corrupted |= vpx_reader_has_error(r);
-
- if (cm->lf.filter_level) {
- vp9_build_mask(cm, mi, mi_row, mi_col, bw, bh);
- }
-}
-
-static INLINE int dec_partition_plane_context(const MACROBLOCKD *xd,
- int mi_row, int mi_col,
- int bsl) {
- const PARTITION_CONTEXT *above_ctx = xd->above_seg_context + mi_col;
- const PARTITION_CONTEXT *left_ctx = xd->left_seg_context + (mi_row & MI_MASK);
- int above = (*above_ctx >> bsl) & 1 , left = (*left_ctx >> bsl) & 1;
-
-// assert(bsl >= 0);
-
- return (left * 2 + above) + bsl * PARTITION_PLOFFSET;
-}
-
-static INLINE void dec_update_partition_context(MACROBLOCKD *xd,
- int mi_row, int mi_col,
- BLOCK_SIZE subsize,
- int bw) {
- PARTITION_CONTEXT *const above_ctx = xd->above_seg_context + mi_col;
- PARTITION_CONTEXT *const left_ctx = xd->left_seg_context + (mi_row & MI_MASK);
-
- // update the partition context at the end notes. set partition bits
- // of block sizes larger than the current one to be one, and partition
- // bits of smaller block sizes to be zero.
- memset(above_ctx, partition_context_lookup[subsize].above, bw);
- memset(left_ctx, partition_context_lookup[subsize].left, bw);
-}
-
-static PARTITION_TYPE read_partition(MACROBLOCKD *xd, int mi_row, int mi_col,
- vpx_reader *r,
- int has_rows, int has_cols, int bsl) {
- const int ctx = dec_partition_plane_context(xd, mi_row, mi_col, bsl);
- const vpx_prob *const probs = get_partition_probs(xd, ctx);
- FRAME_COUNTS *counts = xd->counts;
- PARTITION_TYPE p;
-
- if (has_rows && has_cols)
- p = (PARTITION_TYPE)vpx_read_tree(r, vp9_partition_tree, probs);
- else if (!has_rows && has_cols)
- p = vpx_read(r, probs[1]) ? PARTITION_SPLIT : PARTITION_HORZ;
- else if (has_rows && !has_cols)
- p = vpx_read(r, probs[2]) ? PARTITION_SPLIT : PARTITION_VERT;
- else
- p = PARTITION_SPLIT;
-
- if (counts)
- ++counts->partition[ctx][p];
-
- return p;
-}
-
-// TODO(slavarnway): eliminate bsize and subsize in future commits
-static void decode_partition(VP9Decoder *const pbi, MACROBLOCKD *const xd,
- int mi_row, int mi_col,
- vpx_reader* r, BLOCK_SIZE bsize, int n4x4_l2) {
- VP9_COMMON *const cm = &pbi->common;
- const int n8x8_l2 = n4x4_l2 - 1;
- const int num_8x8_wh = 1 << n8x8_l2;
- const int hbs = num_8x8_wh >> 1;
- PARTITION_TYPE partition;
- BLOCK_SIZE subsize;
- const int has_rows = (mi_row + hbs) < cm->mi_rows;
- const int has_cols = (mi_col + hbs) < cm->mi_cols;
-
- if (mi_row >= cm->mi_rows || mi_col >= cm->mi_cols)
- return;
-
- partition = read_partition(xd, mi_row, mi_col, r, has_rows, has_cols,
- n8x8_l2);
- subsize = subsize_lookup[partition][bsize]; // get_subsize(bsize, partition);
- if (!hbs) {
- // calculate bmode block dimensions (log 2)
- xd->bmode_blocks_wl = 1 >> !!(partition & PARTITION_VERT);
- xd->bmode_blocks_hl = 1 >> !!(partition & PARTITION_HORZ);
- decode_block(pbi, xd, mi_row, mi_col, r, subsize, 1, 1);
- } else {
- switch (partition) {
- case PARTITION_NONE:
- decode_block(pbi, xd, mi_row, mi_col, r, subsize, n4x4_l2, n4x4_l2);
- break;
- case PARTITION_HORZ:
- decode_block(pbi, xd, mi_row, mi_col, r, subsize, n4x4_l2, n8x8_l2);
- if (has_rows)
- decode_block(pbi, xd, mi_row + hbs, mi_col, r, subsize, n4x4_l2,
- n8x8_l2);
- break;
- case PARTITION_VERT:
- decode_block(pbi, xd, mi_row, mi_col, r, subsize, n8x8_l2, n4x4_l2);
- if (has_cols)
- decode_block(pbi, xd, mi_row, mi_col + hbs, r, subsize, n8x8_l2,
- n4x4_l2);
- break;
- case PARTITION_SPLIT:
- decode_partition(pbi, xd, mi_row, mi_col, r, subsize, n8x8_l2);
- decode_partition(pbi, xd, mi_row, mi_col + hbs, r, subsize, n8x8_l2);
- decode_partition(pbi, xd, mi_row + hbs, mi_col, r, subsize, n8x8_l2);
- decode_partition(pbi, xd, mi_row + hbs, mi_col + hbs, r, subsize,
- n8x8_l2);
- break;
- default:
- assert(0 && "Invalid partition type");
- }
- }
-
- // update partition context
- if (bsize >= BLOCK_8X8 &&
- (bsize == BLOCK_8X8 || partition != PARTITION_SPLIT))
- dec_update_partition_context(xd, mi_row, mi_col, subsize, num_8x8_wh);
-}
-
-static void setup_token_decoder(const uint8_t *data,
- const uint8_t *data_end,
- size_t read_size,
- struct vpx_internal_error_info *error_info,
- vpx_reader *r,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state) {
- // Validate the calculated partition length. If the buffer
- // described by the partition can't be fully read, then restrict
- // it to the portion that can be (for EC mode) or throw an error.
- if (!read_is_valid(data, read_size, data_end))
- vpx_internal_error(error_info, VPX_CODEC_CORRUPT_FRAME,
- "Truncated packet or corrupt tile length");
-
- if (vpx_reader_init(r, data, read_size, decrypt_cb, decrypt_state))
- vpx_internal_error(error_info, VPX_CODEC_MEM_ERROR,
- "Failed to allocate bool decoder %d", 1);
-}
-
-static void read_coef_probs_common(vp9_coeff_probs_model *coef_probs,
- vpx_reader *r) {
- int i, j, k, l, m;
-
- if (vpx_read_bit(r))
- for (i = 0; i < PLANE_TYPES; ++i)
- for (j = 0; j < REF_TYPES; ++j)
- for (k = 0; k < COEF_BANDS; ++k)
- for (l = 0; l < BAND_COEFF_CONTEXTS(k); ++l)
- for (m = 0; m < UNCONSTRAINED_NODES; ++m)
- vp9_diff_update_prob(r, &coef_probs[i][j][k][l][m]);
-}
-
-static void read_coef_probs(FRAME_CONTEXT *fc, TX_MODE tx_mode,
- vpx_reader *r) {
- const TX_SIZE max_tx_size = tx_mode_to_biggest_tx_size[tx_mode];
- TX_SIZE tx_size;
- for (tx_size = TX_4X4; tx_size <= max_tx_size; ++tx_size)
- read_coef_probs_common(fc->coef_probs[tx_size], r);
-}
-
-static void setup_segmentation(struct segmentation *seg,
- struct vpx_read_bit_buffer *rb) {
- int i, j;
-
- seg->update_map = 0;
- seg->update_data = 0;
-
- seg->enabled = vpx_rb_read_bit(rb);
- if (!seg->enabled)
- return;
-
- // Segmentation map update
- seg->update_map = vpx_rb_read_bit(rb);
- if (seg->update_map) {
- for (i = 0; i < SEG_TREE_PROBS; i++)
- seg->tree_probs[i] = vpx_rb_read_bit(rb) ? vpx_rb_read_literal(rb, 8)
- : MAX_PROB;
-
- seg->temporal_update = vpx_rb_read_bit(rb);
- if (seg->temporal_update) {
- for (i = 0; i < PREDICTION_PROBS; i++)
- seg->pred_probs[i] = vpx_rb_read_bit(rb) ? vpx_rb_read_literal(rb, 8)
- : MAX_PROB;
- } else {
- for (i = 0; i < PREDICTION_PROBS; i++)
- seg->pred_probs[i] = MAX_PROB;
- }
- }
-
- // Segmentation data update
- seg->update_data = vpx_rb_read_bit(rb);
- if (seg->update_data) {
- seg->abs_delta = vpx_rb_read_bit(rb);
-
- vp9_clearall_segfeatures(seg);
-
- for (i = 0; i < MAX_SEGMENTS; i++) {
- for (j = 0; j < SEG_LVL_MAX; j++) {
- int data = 0;
- const int feature_enabled = vpx_rb_read_bit(rb);
- if (feature_enabled) {
- vp9_enable_segfeature(seg, i, j);
- data = decode_unsigned_max(rb, vp9_seg_feature_data_max(j));
- if (vp9_is_segfeature_signed(j))
- data = vpx_rb_read_bit(rb) ? -data : data;
- }
- vp9_set_segdata(seg, i, j, data);
- }
- }
- }
-}
-
-static void setup_loopfilter(struct loopfilter *lf,
- struct vpx_read_bit_buffer *rb) {
- lf->filter_level = vpx_rb_read_literal(rb, 6);
- lf->sharpness_level = vpx_rb_read_literal(rb, 3);
-
- // Read in loop filter deltas applied at the MB level based on mode or ref
- // frame.
- lf->mode_ref_delta_update = 0;
-
- lf->mode_ref_delta_enabled = vpx_rb_read_bit(rb);
- if (lf->mode_ref_delta_enabled) {
- lf->mode_ref_delta_update = vpx_rb_read_bit(rb);
- if (lf->mode_ref_delta_update) {
- int i;
-
- for (i = 0; i < MAX_REF_LF_DELTAS; i++)
- if (vpx_rb_read_bit(rb))
- lf->ref_deltas[i] = vpx_rb_read_signed_literal(rb, 6);
-
- for (i = 0; i < MAX_MODE_LF_DELTAS; i++)
- if (vpx_rb_read_bit(rb))
- lf->mode_deltas[i] = vpx_rb_read_signed_literal(rb, 6);
- }
- }
-}
-
-static INLINE int read_delta_q(struct vpx_read_bit_buffer *rb) {
- return vpx_rb_read_bit(rb) ? vpx_rb_read_signed_literal(rb, 4) : 0;
-}
-
-static void setup_quantization(VP9_COMMON *const cm, MACROBLOCKD *const xd,
- struct vpx_read_bit_buffer *rb) {
- cm->base_qindex = vpx_rb_read_literal(rb, QINDEX_BITS);
- cm->y_dc_delta_q = read_delta_q(rb);
- cm->uv_dc_delta_q = read_delta_q(rb);
- cm->uv_ac_delta_q = read_delta_q(rb);
- cm->dequant_bit_depth = cm->bit_depth;
- xd->lossless = cm->base_qindex == 0 &&
- cm->y_dc_delta_q == 0 &&
- cm->uv_dc_delta_q == 0 &&
- cm->uv_ac_delta_q == 0;
-
-#if CONFIG_VP9_HIGHBITDEPTH
- xd->bd = (int)cm->bit_depth;
-#endif
-}
-
-static void setup_segmentation_dequant(VP9_COMMON *const cm) {
- // Build y/uv dequant values based on segmentation.
- if (cm->seg.enabled) {
- int i;
- for (i = 0; i < MAX_SEGMENTS; ++i) {
- const int qindex = vp9_get_qindex(&cm->seg, i, cm->base_qindex);
- cm->y_dequant[i][0] = vp9_dc_quant(qindex, cm->y_dc_delta_q,
- cm->bit_depth);
- cm->y_dequant[i][1] = vp9_ac_quant(qindex, 0, cm->bit_depth);
- cm->uv_dequant[i][0] = vp9_dc_quant(qindex, cm->uv_dc_delta_q,
- cm->bit_depth);
- cm->uv_dequant[i][1] = vp9_ac_quant(qindex, cm->uv_ac_delta_q,
- cm->bit_depth);
- }
- } else {
- const int qindex = cm->base_qindex;
- // When segmentation is disabled, only the first value is used. The
- // remaining are don't cares.
- cm->y_dequant[0][0] = vp9_dc_quant(qindex, cm->y_dc_delta_q, cm->bit_depth);
- cm->y_dequant[0][1] = vp9_ac_quant(qindex, 0, cm->bit_depth);
- cm->uv_dequant[0][0] = vp9_dc_quant(qindex, cm->uv_dc_delta_q,
- cm->bit_depth);
- cm->uv_dequant[0][1] = vp9_ac_quant(qindex, cm->uv_ac_delta_q,
- cm->bit_depth);
- }
-}
-
-static INTERP_FILTER read_interp_filter(struct vpx_read_bit_buffer *rb) {
- const INTERP_FILTER literal_to_filter[] = { EIGHTTAP_SMOOTH,
- EIGHTTAP,
- EIGHTTAP_SHARP,
- BILINEAR };
- return vpx_rb_read_bit(rb) ? SWITCHABLE
- : literal_to_filter[vpx_rb_read_literal(rb, 2)];
-}
-
-static void setup_render_size(VP9_COMMON *cm, struct vpx_read_bit_buffer *rb) {
- cm->render_width = cm->width;
- cm->render_height = cm->height;
- if (vpx_rb_read_bit(rb))
- vp9_read_frame_size(rb, &cm->render_width, &cm->render_height);
-}
-
-static void resize_mv_buffer(VP9_COMMON *cm) {
- vpx_free(cm->cur_frame->mvs);
- cm->cur_frame->mi_rows = cm->mi_rows;
- cm->cur_frame->mi_cols = cm->mi_cols;
- CHECK_MEM_ERROR(cm, cm->cur_frame->mvs,
- (MV_REF *)vpx_calloc(cm->mi_rows * cm->mi_cols,
- sizeof(*cm->cur_frame->mvs)));
-}
-
-static void resize_context_buffers(VP9_COMMON *cm, int width, int height) {
-#if CONFIG_SIZE_LIMIT
- if (width > DECODE_WIDTH_LIMIT || height > DECODE_HEIGHT_LIMIT)
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Dimensions of %dx%d beyond allowed size of %dx%d.",
- width, height, DECODE_WIDTH_LIMIT, DECODE_HEIGHT_LIMIT);
-#endif
- if (cm->width != width || cm->height != height) {
- const int new_mi_rows =
- ALIGN_POWER_OF_TWO(height, MI_SIZE_LOG2) >> MI_SIZE_LOG2;
- const int new_mi_cols =
- ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2) >> MI_SIZE_LOG2;
-
- // Allocations in vp9_alloc_context_buffers() depend on individual
- // dimensions as well as the overall size.
- if (new_mi_cols > cm->mi_cols || new_mi_rows > cm->mi_rows) {
- if (vp9_alloc_context_buffers(cm, width, height))
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate context buffers");
- } else {
- vp9_set_mb_mi(cm, width, height);
- }
- vp9_init_context_buffers(cm);
- cm->width = width;
- cm->height = height;
- }
- if (cm->cur_frame->mvs == NULL || cm->mi_rows > cm->cur_frame->mi_rows ||
- cm->mi_cols > cm->cur_frame->mi_cols) {
- resize_mv_buffer(cm);
- }
-}
-
-static void setup_frame_size(VP9_COMMON *cm, struct vpx_read_bit_buffer *rb) {
- int width, height;
- BufferPool *const pool = cm->buffer_pool;
- vp9_read_frame_size(rb, &width, &height);
- resize_context_buffers(cm, width, height);
- setup_render_size(cm, rb);
-
- lock_buffer_pool(pool);
- if (vpx_realloc_frame_buffer(
- get_frame_new_buffer(cm), cm->width, cm->height,
- cm->subsampling_x, cm->subsampling_y,
-#if CONFIG_VP9_HIGHBITDEPTH
- cm->use_highbitdepth,
-#endif
- VP9_DEC_BORDER_IN_PIXELS,
- cm->byte_alignment,
- &pool->frame_bufs[cm->new_fb_idx].raw_frame_buffer, pool->get_fb_cb,
- pool->cb_priv)) {
- unlock_buffer_pool(pool);
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate frame buffer");
- }
- unlock_buffer_pool(pool);
-
- pool->frame_bufs[cm->new_fb_idx].buf.subsampling_x = cm->subsampling_x;
- pool->frame_bufs[cm->new_fb_idx].buf.subsampling_y = cm->subsampling_y;
- pool->frame_bufs[cm->new_fb_idx].buf.bit_depth = (unsigned int)cm->bit_depth;
- pool->frame_bufs[cm->new_fb_idx].buf.color_space = cm->color_space;
- pool->frame_bufs[cm->new_fb_idx].buf.color_range = cm->color_range;
- pool->frame_bufs[cm->new_fb_idx].buf.render_width = cm->render_width;
- pool->frame_bufs[cm->new_fb_idx].buf.render_height = cm->render_height;
-}
-
-static INLINE int valid_ref_frame_img_fmt(vpx_bit_depth_t ref_bit_depth,
- int ref_xss, int ref_yss,
- vpx_bit_depth_t this_bit_depth,
- int this_xss, int this_yss) {
- return ref_bit_depth == this_bit_depth && ref_xss == this_xss &&
- ref_yss == this_yss;
-}
-
-static void setup_frame_size_with_refs(VP9_COMMON *cm,
- struct vpx_read_bit_buffer *rb) {
- int width, height;
- int found = 0, i;
- int has_valid_ref_frame = 0;
- BufferPool *const pool = cm->buffer_pool;
- for (i = 0; i < REFS_PER_FRAME; ++i) {
- if (vpx_rb_read_bit(rb)) {
- if (cm->frame_refs[i].idx != INVALID_IDX) {
- YV12_BUFFER_CONFIG *const buf = cm->frame_refs[i].buf;
- width = buf->y_crop_width;
- height = buf->y_crop_height;
- found = 1;
- break;
- } else {
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Failed to decode frame size");
- }
- }
- }
-
- if (!found)
- vp9_read_frame_size(rb, &width, &height);
-
- if (width <= 0 || height <= 0)
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Invalid frame size");
-
- // Check to make sure at least one of frames that this frame references
- // has valid dimensions.
- for (i = 0; i < REFS_PER_FRAME; ++i) {
- RefBuffer *const ref_frame = &cm->frame_refs[i];
- has_valid_ref_frame |= (ref_frame->idx != INVALID_IDX &&
- valid_ref_frame_size(ref_frame->buf->y_crop_width,
- ref_frame->buf->y_crop_height,
- width, height));
- }
- if (!has_valid_ref_frame)
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Referenced frame has invalid size");
- for (i = 0; i < REFS_PER_FRAME; ++i) {
- RefBuffer *const ref_frame = &cm->frame_refs[i];
- if (ref_frame->idx == INVALID_IDX ||
- !valid_ref_frame_img_fmt(ref_frame->buf->bit_depth,
- ref_frame->buf->subsampling_x,
- ref_frame->buf->subsampling_y,
- cm->bit_depth,
- cm->subsampling_x,
- cm->subsampling_y))
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Referenced frame has incompatible color format");
- }
-
- resize_context_buffers(cm, width, height);
- setup_render_size(cm, rb);
-
- lock_buffer_pool(pool);
- if (vpx_realloc_frame_buffer(
- get_frame_new_buffer(cm), cm->width, cm->height,
- cm->subsampling_x, cm->subsampling_y,
-#if CONFIG_VP9_HIGHBITDEPTH
- cm->use_highbitdepth,
-#endif
- VP9_DEC_BORDER_IN_PIXELS,
- cm->byte_alignment,
- &pool->frame_bufs[cm->new_fb_idx].raw_frame_buffer, pool->get_fb_cb,
- pool->cb_priv)) {
- unlock_buffer_pool(pool);
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate frame buffer");
- }
- unlock_buffer_pool(pool);
-
- pool->frame_bufs[cm->new_fb_idx].buf.subsampling_x = cm->subsampling_x;
- pool->frame_bufs[cm->new_fb_idx].buf.subsampling_y = cm->subsampling_y;
- pool->frame_bufs[cm->new_fb_idx].buf.bit_depth = (unsigned int)cm->bit_depth;
- pool->frame_bufs[cm->new_fb_idx].buf.color_space = cm->color_space;
- pool->frame_bufs[cm->new_fb_idx].buf.color_range = cm->color_range;
- pool->frame_bufs[cm->new_fb_idx].buf.render_width = cm->render_width;
- pool->frame_bufs[cm->new_fb_idx].buf.render_height = cm->render_height;
-}
-
-static void setup_tile_info(VP9_COMMON *cm, struct vpx_read_bit_buffer *rb) {
- int min_log2_tile_cols, max_log2_tile_cols, max_ones;
- vp9_get_tile_n_bits(cm->mi_cols, &min_log2_tile_cols, &max_log2_tile_cols);
-
- // columns
- max_ones = max_log2_tile_cols - min_log2_tile_cols;
- cm->log2_tile_cols = min_log2_tile_cols;
- while (max_ones-- && vpx_rb_read_bit(rb))
- cm->log2_tile_cols++;
-
- if (cm->log2_tile_cols > 6)
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Invalid number of tile columns");
-
- // rows
- cm->log2_tile_rows = vpx_rb_read_bit(rb);
- if (cm->log2_tile_rows)
- cm->log2_tile_rows += vpx_rb_read_bit(rb);
-}
-
-// Reads the next tile returning its size and adjusting '*data' accordingly
-// based on 'is_last'.
-static void get_tile_buffer(const uint8_t *const data_end,
- int is_last,
- struct vpx_internal_error_info *error_info,
- const uint8_t **data,
- vpx_decrypt_cb decrypt_cb, void *decrypt_state,
- TileBuffer *buf) {
- size_t size;
-
- if (!is_last) {
- if (!read_is_valid(*data, 4, data_end))
- vpx_internal_error(error_info, VPX_CODEC_CORRUPT_FRAME,
- "Truncated packet or corrupt tile length");
-
- if (decrypt_cb) {
- uint8_t be_data[4];
- decrypt_cb(decrypt_state, *data, be_data, 4);
- size = mem_get_be32(be_data);
- } else {
- size = mem_get_be32(*data);
- }
- *data += 4;
-
- if (size > (size_t)(data_end - *data))
- vpx_internal_error(error_info, VPX_CODEC_CORRUPT_FRAME,
- "Truncated packet or corrupt tile size");
- } else {
- size = data_end - *data;
- }
-
- buf->data = *data;
- buf->size = size;
-
- *data += size;
-}
-
-static void get_tile_buffers(VP9Decoder *pbi,
- const uint8_t *data, const uint8_t *data_end,
- int tile_cols, int tile_rows,
- TileBuffer (*tile_buffers)[1 << 6]) {
- int r, c;
-
- for (r = 0; r < tile_rows; ++r) {
- for (c = 0; c < tile_cols; ++c) {
- const int is_last = (r == tile_rows - 1) && (c == tile_cols - 1);
- TileBuffer *const buf = &tile_buffers[r][c];
- buf->col = c;
- get_tile_buffer(data_end, is_last, &pbi->common.error, &data,
- pbi->decrypt_cb, pbi->decrypt_state, buf);
- }
- }
-}
-
-static const uint8_t *decode_tiles(VP9Decoder *pbi,
- const uint8_t *data,
- const uint8_t *data_end) {
- VP9_COMMON *const cm = &pbi->common;
- const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
- const int aligned_cols = mi_cols_aligned_to_sb(cm->mi_cols);
- const int tile_cols = 1 << cm->log2_tile_cols;
- const int tile_rows = 1 << cm->log2_tile_rows;
- TileBuffer tile_buffers[4][1 << 6];
- int tile_row, tile_col;
- int mi_row, mi_col;
- TileWorkerData *tile_data = NULL;
-
- if (cm->lf.filter_level && !cm->skip_loop_filter &&
- pbi->lf_worker.data1 == NULL) {
- CHECK_MEM_ERROR(cm, pbi->lf_worker.data1,
- vpx_memalign(32, sizeof(LFWorkerData)));
- pbi->lf_worker.hook = (VPxWorkerHook)vp9_loop_filter_worker;
- if (pbi->max_threads > 1 && !winterface->reset(&pbi->lf_worker)) {
- vpx_internal_error(&cm->error, VPX_CODEC_ERROR,
- "Loop filter thread creation failed");
- }
- }
-
- if (cm->lf.filter_level && !cm->skip_loop_filter) {
- LFWorkerData *const lf_data = (LFWorkerData*)pbi->lf_worker.data1;
- // Be sure to sync as we might be resuming after a failed frame decode.
- winterface->sync(&pbi->lf_worker);
- vp9_loop_filter_data_reset(lf_data, get_frame_new_buffer(cm), cm,
- pbi->mb.plane);
- }
-
- assert(tile_rows <= 4);
- assert(tile_cols <= (1 << 6));
-
- // Note: this memset assumes above_context[0], [1] and [2]
- // are allocated as part of the same buffer.
- memset(cm->above_context, 0,
- sizeof(*cm->above_context) * MAX_MB_PLANE * 2 * aligned_cols);
-
- memset(cm->above_seg_context, 0,
- sizeof(*cm->above_seg_context) * aligned_cols);
-
- vp9_reset_lfm(cm);
-
- get_tile_buffers(pbi, data, data_end, tile_cols, tile_rows, tile_buffers);
-
- // Load all tile information into tile_data.
- for (tile_row = 0; tile_row < tile_rows; ++tile_row) {
- for (tile_col = 0; tile_col < tile_cols; ++tile_col) {
- const TileBuffer *const buf = &tile_buffers[tile_row][tile_col];
- tile_data = pbi->tile_worker_data + tile_cols * tile_row + tile_col;
- tile_data->xd = pbi->mb;
- tile_data->xd.corrupted = 0;
- tile_data->xd.counts =
- cm->frame_parallel_decoding_mode ? NULL : &cm->counts;
- vp9_zero(tile_data->dqcoeff);
- vp9_tile_init(&tile_data->xd.tile, cm, tile_row, tile_col);
- setup_token_decoder(buf->data, data_end, buf->size, &cm->error,
- &tile_data->bit_reader, pbi->decrypt_cb,
- pbi->decrypt_state);
- vp9_init_macroblockd(cm, &tile_data->xd, tile_data->dqcoeff);
- }
- }
-
- for (tile_row = 0; tile_row < tile_rows; ++tile_row) {
- TileInfo tile;
- vp9_tile_set_row(&tile, cm, tile_row);
- for (mi_row = tile.mi_row_start; mi_row < tile.mi_row_end;
- mi_row += MI_BLOCK_SIZE) {
- for (tile_col = 0; tile_col < tile_cols; ++tile_col) {
- const int col = pbi->inv_tile_order ?
- tile_cols - tile_col - 1 : tile_col;
- tile_data = pbi->tile_worker_data + tile_cols * tile_row + col;
- vp9_tile_set_col(&tile, cm, col);
- vp9_zero(tile_data->xd.left_context);
- vp9_zero(tile_data->xd.left_seg_context);
- for (mi_col = tile.mi_col_start; mi_col < tile.mi_col_end;
- mi_col += MI_BLOCK_SIZE) {
- decode_partition(pbi, &tile_data->xd, mi_row,
- mi_col, &tile_data->bit_reader, BLOCK_64X64, 4);
- }
- pbi->mb.corrupted |= tile_data->xd.corrupted;
- if (pbi->mb.corrupted)
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Failed to decode tile data");
- }
- // Loopfilter one row.
- if (cm->lf.filter_level && !cm->skip_loop_filter) {
- const int lf_start = mi_row - MI_BLOCK_SIZE;
- LFWorkerData *const lf_data = (LFWorkerData*)pbi->lf_worker.data1;
-
- // delay the loopfilter by 1 macroblock row.
- if (lf_start < 0) continue;
-
- // decoding has completed: finish up the loop filter in this thread.
- if (mi_row + MI_BLOCK_SIZE >= cm->mi_rows) continue;
-
- winterface->sync(&pbi->lf_worker);
- lf_data->start = lf_start;
- lf_data->stop = mi_row;
- if (pbi->max_threads > 1) {
- winterface->launch(&pbi->lf_worker);
- } else {
- winterface->execute(&pbi->lf_worker);
- }
- }
- // After loopfiltering, the last 7 row pixels in each superblock row may
- // still be changed by the longest loopfilter of the next superblock
- // row.
- if (pbi->frame_parallel_decode)
- vp9_frameworker_broadcast(pbi->cur_buf,
- mi_row << MI_BLOCK_SIZE_LOG2);
- }
- }
-
- // Loopfilter remaining rows in the frame.
- if (cm->lf.filter_level && !cm->skip_loop_filter) {
- LFWorkerData *const lf_data = (LFWorkerData*)pbi->lf_worker.data1;
- winterface->sync(&pbi->lf_worker);
- lf_data->start = lf_data->stop;
- lf_data->stop = cm->mi_rows;
- winterface->execute(&pbi->lf_worker);
- }
-
- // Get last tile data.
- tile_data = pbi->tile_worker_data + tile_cols * tile_rows - 1;
-
- if (pbi->frame_parallel_decode)
- vp9_frameworker_broadcast(pbi->cur_buf, INT_MAX);
- return vpx_reader_find_end(&tile_data->bit_reader);
-}
-
-// On entry 'tile_data->data_end' points to the end of the input frame, on exit
-// it is updated to reflect the bitreader position of the final tile column if
-// present in the tile buffer group or NULL otherwise.
-static int tile_worker_hook(TileWorkerData *const tile_data,
- VP9Decoder *const pbi) {
- TileInfo *volatile tile = &tile_data->xd.tile;
- const int final_col = (1 << pbi->common.log2_tile_cols) - 1;
- const uint8_t *volatile bit_reader_end = NULL;
- volatile int n = tile_data->buf_start;
- tile_data->error_info.setjmp = 1;
-
- if (setjmp(tile_data->error_info.jmp)) {
- tile_data->error_info.setjmp = 0;
- tile_data->xd.corrupted = 1;
- tile_data->data_end = NULL;
- return 0;
- }
-
- tile_data->xd.error_info = &tile_data->error_info;
- tile_data->xd.corrupted = 0;
-
- do {
- int mi_row, mi_col;
- const TileBuffer *const buf = pbi->tile_buffers + n;
- vp9_zero(tile_data->dqcoeff);
- vp9_tile_init(tile, &pbi->common, 0, buf->col);
- setup_token_decoder(buf->data, tile_data->data_end, buf->size,
- &tile_data->error_info, &tile_data->bit_reader,
- pbi->decrypt_cb, pbi->decrypt_state);
- vp9_init_macroblockd(&pbi->common, &tile_data->xd, tile_data->dqcoeff);
-
- for (mi_row = tile->mi_row_start; mi_row < tile->mi_row_end;
- mi_row += MI_BLOCK_SIZE) {
- vp9_zero(tile_data->xd.left_context);
- vp9_zero(tile_data->xd.left_seg_context);
- for (mi_col = tile->mi_col_start; mi_col < tile->mi_col_end;
- mi_col += MI_BLOCK_SIZE) {
- decode_partition(pbi, &tile_data->xd, mi_row, mi_col,
- &tile_data->bit_reader, BLOCK_64X64, 4);
- }
- }
-
- if (buf->col == final_col) {
- bit_reader_end = vpx_reader_find_end(&tile_data->bit_reader);
- }
- } while (!tile_data->xd.corrupted && ++n <= tile_data->buf_end);
-
- tile_data->data_end = bit_reader_end;
- return !tile_data->xd.corrupted;
-}
-
-// sorts in descending order
-static int compare_tile_buffers(const void *a, const void *b) {
- const TileBuffer *const buf1 = (const TileBuffer*)a;
- const TileBuffer *const buf2 = (const TileBuffer*)b;
- return (int)(buf2->size - buf1->size);
-}
-
-static const uint8_t *decode_tiles_mt(VP9Decoder *pbi,
- const uint8_t *data,
- const uint8_t *data_end) {
- VP9_COMMON *const cm = &pbi->common;
- const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
- const uint8_t *bit_reader_end = NULL;
- const int aligned_mi_cols = mi_cols_aligned_to_sb(cm->mi_cols);
- const int tile_cols = 1 << cm->log2_tile_cols;
- const int tile_rows = 1 << cm->log2_tile_rows;
- const int num_workers = VPXMIN(pbi->max_threads, tile_cols);
- int n;
-
- assert(tile_cols <= (1 << 6));
- assert(tile_rows == 1);
- (void)tile_rows;
-
- if (pbi->num_tile_workers == 0) {
- const int num_threads = pbi->max_threads;
- CHECK_MEM_ERROR(cm, pbi->tile_workers,
- vpx_malloc(num_threads * sizeof(*pbi->tile_workers)));
- for (n = 0; n < num_threads; ++n) {
- VPxWorker *const worker = &pbi->tile_workers[n];
- ++pbi->num_tile_workers;
-
- winterface->init(worker);
- if (n < num_threads - 1 && !winterface->reset(worker)) {
- vpx_internal_error(&cm->error, VPX_CODEC_ERROR,
- "Tile decoder thread creation failed");
- }
- }
- }
-
- // Reset tile decoding hook
- for (n = 0; n < num_workers; ++n) {
- VPxWorker *const worker = &pbi->tile_workers[n];
- TileWorkerData *const tile_data =
- &pbi->tile_worker_data[n + pbi->total_tiles];
- winterface->sync(worker);
- tile_data->xd = pbi->mb;
- tile_data->xd.counts =
- cm->frame_parallel_decoding_mode ? NULL : &tile_data->counts;
- worker->hook = (VPxWorkerHook)tile_worker_hook;
- worker->data1 = tile_data;
- worker->data2 = pbi;
- }
-
- // Note: this memset assumes above_context[0], [1] and [2]
- // are allocated as part of the same buffer.
- memset(cm->above_context, 0,
- sizeof(*cm->above_context) * MAX_MB_PLANE * 2 * aligned_mi_cols);
- memset(cm->above_seg_context, 0,
- sizeof(*cm->above_seg_context) * aligned_mi_cols);
-
- vp9_reset_lfm(cm);
-
- // Load tile data into tile_buffers
- get_tile_buffers(pbi, data, data_end, tile_cols, tile_rows,
- &pbi->tile_buffers);
-
- // Sort the buffers based on size in descending order.
- qsort(pbi->tile_buffers, tile_cols, sizeof(pbi->tile_buffers[0]),
- compare_tile_buffers);
-
- if (num_workers == tile_cols) {
- // Rearrange the tile buffers such that the largest, and
- // presumably the most difficult, tile will be decoded in the main thread.
- // This should help minimize the number of instances where the main thread
- // is waiting for a worker to complete.
- const TileBuffer largest = pbi->tile_buffers[0];
- memmove(pbi->tile_buffers, pbi->tile_buffers + 1,
- (tile_cols - 1) * sizeof(pbi->tile_buffers[0]));
- pbi->tile_buffers[tile_cols - 1] = largest;
- } else {
- int start = 0, end = tile_cols - 2;
- TileBuffer tmp;
-
- // Interleave the tiles to distribute the load between threads, assuming a
- // larger tile implies it is more difficult to decode.
- while (start < end) {
- tmp = pbi->tile_buffers[start];
- pbi->tile_buffers[start] = pbi->tile_buffers[end];
- pbi->tile_buffers[end] = tmp;
- start += 2;
- end -= 2;
- }
- }
-
- // Initialize thread frame counts.
- if (!cm->frame_parallel_decoding_mode) {
- for (n = 0; n < num_workers; ++n) {
- TileWorkerData *const tile_data =
- (TileWorkerData*)pbi->tile_workers[n].data1;
- vp9_zero(tile_data->counts);
- }
- }
-
- {
- const int base = tile_cols / num_workers;
- const int remain = tile_cols % num_workers;
- int buf_start = 0;
-
- for (n = 0; n < num_workers; ++n) {
- const int count = base + (remain + n) / num_workers;
- VPxWorker *const worker = &pbi->tile_workers[n];
- TileWorkerData *const tile_data = (TileWorkerData*)worker->data1;
-
- tile_data->buf_start = buf_start;
- tile_data->buf_end = buf_start + count - 1;
- tile_data->data_end = data_end;
- buf_start += count;
-
- worker->had_error = 0;
- if (n == num_workers - 1) {
- assert(tile_data->buf_end == tile_cols - 1);
- winterface->execute(worker);
- } else {
- winterface->launch(worker);
- }
- }
-
- for (; n > 0; --n) {
- VPxWorker *const worker = &pbi->tile_workers[n - 1];
- TileWorkerData *const tile_data = (TileWorkerData*)worker->data1;
- // TODO(jzern): The tile may have specific error data associated with
- // its vpx_internal_error_info which could be propagated to the main info
- // in cm. Additionally once the threads have been synced and an error is
- // detected, there's no point in continuing to decode tiles.
- pbi->mb.corrupted |= !winterface->sync(worker);
- if (!bit_reader_end) bit_reader_end = tile_data->data_end;
- }
- }
-
- // Accumulate thread frame counts.
- if (!cm->frame_parallel_decoding_mode) {
- for (n = 0; n < num_workers; ++n) {
- TileWorkerData *const tile_data =
- (TileWorkerData*)pbi->tile_workers[n].data1;
- vp9_accumulate_frame_counts(&cm->counts, &tile_data->counts, 1);
- }
- }
-
- assert(bit_reader_end || pbi->mb.corrupted);
- return bit_reader_end;
-}
-
-static void error_handler(void *data) {
- VP9_COMMON *const cm = (VP9_COMMON *)data;
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME, "Truncated packet");
-}
-
-static void read_bitdepth_colorspace_sampling(
- VP9_COMMON *cm, struct vpx_read_bit_buffer *rb) {
- if (cm->profile >= PROFILE_2) {
- cm->bit_depth = vpx_rb_read_bit(rb) ? VPX_BITS_12 : VPX_BITS_10;
-#if CONFIG_VP9_HIGHBITDEPTH
- cm->use_highbitdepth = 1;
-#endif
- } else {
- cm->bit_depth = VPX_BITS_8;
-#if CONFIG_VP9_HIGHBITDEPTH
- cm->use_highbitdepth = 0;
-#endif
- }
- cm->color_space = vpx_rb_read_literal(rb, 3);
- if (cm->color_space != VPX_CS_SRGB) {
- cm->color_range = (vpx_color_range_t)vpx_rb_read_bit(rb);
- if (cm->profile == PROFILE_1 || cm->profile == PROFILE_3) {
- cm->subsampling_x = vpx_rb_read_bit(rb);
- cm->subsampling_y = vpx_rb_read_bit(rb);
- if (cm->subsampling_x == 1 && cm->subsampling_y == 1)
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "4:2:0 color not supported in profile 1 or 3");
- if (vpx_rb_read_bit(rb))
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Reserved bit set");
- } else {
- cm->subsampling_y = cm->subsampling_x = 1;
- }
- } else {
- cm->color_range = VPX_CR_FULL_RANGE;
- if (cm->profile == PROFILE_1 || cm->profile == PROFILE_3) {
- // Note if colorspace is SRGB then 4:4:4 chroma sampling is assumed.
- // 4:2:2 or 4:4:0 chroma sampling is not allowed.
- cm->subsampling_y = cm->subsampling_x = 0;
- if (vpx_rb_read_bit(rb))
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Reserved bit set");
- } else {
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "4:4:4 color not supported in profile 0 or 2");
- }
- }
-}
-
-static size_t read_uncompressed_header(VP9Decoder *pbi,
- struct vpx_read_bit_buffer *rb) {
- VP9_COMMON *const cm = &pbi->common;
- BufferPool *const pool = cm->buffer_pool;
- RefCntBuffer *const frame_bufs = pool->frame_bufs;
- int i, mask, ref_index = 0;
- size_t sz;
-
- cm->last_frame_type = cm->frame_type;
- cm->last_intra_only = cm->intra_only;
-
- if (vpx_rb_read_literal(rb, 2) != VP9_FRAME_MARKER)
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Invalid frame marker");
-
- cm->profile = vp9_read_profile(rb);
-#if CONFIG_VP9_HIGHBITDEPTH
- if (cm->profile >= MAX_PROFILES)
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Unsupported bitstream profile");
-#else
- if (cm->profile >= PROFILE_2)
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Unsupported bitstream profile");
-#endif
-
- cm->show_existing_frame = vpx_rb_read_bit(rb);
- if (cm->show_existing_frame) {
- // Show an existing frame directly.
- const int frame_to_show = cm->ref_frame_map[vpx_rb_read_literal(rb, 3)];
- lock_buffer_pool(pool);
- if (frame_to_show < 0 || frame_bufs[frame_to_show].ref_count < 1) {
- unlock_buffer_pool(pool);
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Buffer %d does not contain a decoded frame",
- frame_to_show);
- }
-
- ref_cnt_fb(frame_bufs, &cm->new_fb_idx, frame_to_show);
- unlock_buffer_pool(pool);
- pbi->refresh_frame_flags = 0;
- cm->lf.filter_level = 0;
- cm->show_frame = 1;
-
- if (pbi->frame_parallel_decode) {
- for (i = 0; i < REF_FRAMES; ++i)
- cm->next_ref_frame_map[i] = cm->ref_frame_map[i];
- }
- return 0;
- }
-
- cm->frame_type = (FRAME_TYPE) vpx_rb_read_bit(rb);
- cm->show_frame = vpx_rb_read_bit(rb);
- cm->error_resilient_mode = vpx_rb_read_bit(rb);
-
- if (cm->frame_type == KEY_FRAME) {
- if (!vp9_read_sync_code(rb))
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Invalid frame sync code");
-
- read_bitdepth_colorspace_sampling(cm, rb);
- pbi->refresh_frame_flags = (1 << REF_FRAMES) - 1;
-
- for (i = 0; i < REFS_PER_FRAME; ++i) {
- cm->frame_refs[i].idx = INVALID_IDX;
- cm->frame_refs[i].buf = NULL;
- }
-
- setup_frame_size(cm, rb);
- if (pbi->need_resync) {
- memset(&cm->ref_frame_map, -1, sizeof(cm->ref_frame_map));
- pbi->need_resync = 0;
- }
- } else {
- cm->intra_only = cm->show_frame ? 0 : vpx_rb_read_bit(rb);
-
- cm->reset_frame_context = cm->error_resilient_mode ?
- 0 : vpx_rb_read_literal(rb, 2);
-
- if (cm->intra_only) {
- if (!vp9_read_sync_code(rb))
- vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
- "Invalid frame sync code");
- if (cm->profile > PROFILE_0) {
- read_bitdepth_colorspace_sampling(cm, rb);
- } else {
- // NOTE: The intra-only frame header does not include the specification
- // of either the color format or color sub-sampling in profile 0. VP9
- // specifies that the default color format should be YUV 4:2:0 in this
- // case (normative).
- cm->color_space = VPX_CS_BT_601;
- cm->color_range = VPX_CR_STUDIO_RANGE;
- cm->subsampling_y = cm->subsampling_x = 1;
- cm->bit_depth = VPX_BITS_8;
-#if CONFIG_VP9_HIGHBITDEPTH
- cm->use_highbitdepth = 0;
-#endif
- }
-
- pbi->refresh_frame_flags = vpx_rb_read_literal(rb, REF_FRAMES);
- setup_frame_size(cm, rb);
- if (pbi->need_resync) {
- memset(&cm->ref_frame_map, -1, sizeof(cm->ref_frame_map));
- pbi->need_resync = 0;
- }
- } else if (pbi->need_resync != 1) { /* Skip if need resync */
- pbi->refresh_frame_flags = vpx_rb_read_literal(rb, REF_FRAMES);
- for (i = 0; i < REFS_PER_FRAME; ++i) {
- const int ref = vpx_rb_read_literal(rb, REF_FRAMES_LOG2);
- const int idx = cm->ref_frame_map[ref];
- RefBuffer *const ref_frame = &cm->frame_refs[i];
- ref_frame->idx = idx;
- ref_frame->buf = &frame_bufs[idx].buf;
- cm->ref_frame_sign_bias[LAST_FRAME + i] = vpx_rb_read_bit(rb);
- }
-
- setup_frame_size_with_refs(cm, rb);
-
- cm->allow_high_precision_mv = vpx_rb_read_bit(rb);
- cm->interp_filter = read_interp_filter(rb);
-
- for (i = 0; i < REFS_PER_FRAME; ++i) {
- RefBuffer *const ref_buf = &cm->frame_refs[i];
-#if CONFIG_VP9_HIGHBITDEPTH
- vp9_setup_scale_factors_for_frame(&ref_buf->sf,
- ref_buf->buf->y_crop_width,
- ref_buf->buf->y_crop_height,
- cm->width, cm->height,
- cm->use_highbitdepth);
-#else
- vp9_setup_scale_factors_for_frame(&ref_buf->sf,
- ref_buf->buf->y_crop_width,
- ref_buf->buf->y_crop_height,
- cm->width, cm->height);
-#endif
- }
- }
- }
-#if CONFIG_VP9_HIGHBITDEPTH
- get_frame_new_buffer(cm)->bit_depth = cm->bit_depth;
-#endif
- get_frame_new_buffer(cm)->color_space = cm->color_space;
- get_frame_new_buffer(cm)->color_range = cm->color_range;
- get_frame_new_buffer(cm)->render_width = cm->render_width;
- get_frame_new_buffer(cm)->render_height = cm->render_height;
-
- if (pbi->need_resync) {
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Keyframe / intra-only frame required to reset decoder"
- " state");
- }
-
- if (!cm->error_resilient_mode) {
- cm->refresh_frame_context = vpx_rb_read_bit(rb);
- cm->frame_parallel_decoding_mode = vpx_rb_read_bit(rb);
- if (!cm->frame_parallel_decoding_mode)
- vp9_zero(cm->counts);
- } else {
- cm->refresh_frame_context = 0;
- cm->frame_parallel_decoding_mode = 1;
- }
-
- // This flag will be overridden by the call to vp9_setup_past_independence
- // below, forcing the use of context 0 for those frame types.
- cm->frame_context_idx = vpx_rb_read_literal(rb, FRAME_CONTEXTS_LOG2);
-
- // Generate next_ref_frame_map.
- lock_buffer_pool(pool);
- for (mask = pbi->refresh_frame_flags; mask; mask >>= 1) {
- if (mask & 1) {
- cm->next_ref_frame_map[ref_index] = cm->new_fb_idx;
- ++frame_bufs[cm->new_fb_idx].ref_count;
- } else {
- cm->next_ref_frame_map[ref_index] = cm->ref_frame_map[ref_index];
- }
- // Current thread holds the reference frame.
- if (cm->ref_frame_map[ref_index] >= 0)
- ++frame_bufs[cm->ref_frame_map[ref_index]].ref_count;
- ++ref_index;
- }
-
- for (; ref_index < REF_FRAMES; ++ref_index) {
- cm->next_ref_frame_map[ref_index] = cm->ref_frame_map[ref_index];
- // Current thread holds the reference frame.
- if (cm->ref_frame_map[ref_index] >= 0)
- ++frame_bufs[cm->ref_frame_map[ref_index]].ref_count;
- }
- unlock_buffer_pool(pool);
- pbi->hold_ref_buf = 1;
-
- if (frame_is_intra_only(cm) || cm->error_resilient_mode)
- vp9_setup_past_independence(cm);
-
- setup_loopfilter(&cm->lf, rb);
- setup_quantization(cm, &pbi->mb, rb);
- setup_segmentation(&cm->seg, rb);
- setup_segmentation_dequant(cm);
-
- setup_tile_info(cm, rb);
- sz = vpx_rb_read_literal(rb, 16);
-
- if (sz == 0)
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Invalid header size");
-
- return sz;
-}
-
-static int read_compressed_header(VP9Decoder *pbi, const uint8_t *data,
- size_t partition_size) {
- VP9_COMMON *const cm = &pbi->common;
- MACROBLOCKD *const xd = &pbi->mb;
- FRAME_CONTEXT *const fc = cm->fc;
- vpx_reader r;
- int k;
-
- if (vpx_reader_init(&r, data, partition_size, pbi->decrypt_cb,
- pbi->decrypt_state))
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
- "Failed to allocate bool decoder 0");
-
- cm->tx_mode = xd->lossless ? ONLY_4X4 : read_tx_mode(&r);
- if (cm->tx_mode == TX_MODE_SELECT)
- read_tx_mode_probs(&fc->tx_probs, &r);
- read_coef_probs(fc, cm->tx_mode, &r);
-
- for (k = 0; k < SKIP_CONTEXTS; ++k)
- vp9_diff_update_prob(&r, &fc->skip_probs[k]);
-
- if (!frame_is_intra_only(cm)) {
- nmv_context *const nmvc = &fc->nmvc;
- int i, j;
-
- read_inter_mode_probs(fc, &r);
-
- if (cm->interp_filter == SWITCHABLE)
- read_switchable_interp_probs(fc, &r);
-
- for (i = 0; i < INTRA_INTER_CONTEXTS; i++)
- vp9_diff_update_prob(&r, &fc->intra_inter_prob[i]);
-
- cm->reference_mode = read_frame_reference_mode(cm, &r);
- if (cm->reference_mode != SINGLE_REFERENCE)
- setup_compound_reference_mode(cm);
- read_frame_reference_mode_probs(cm, &r);
-
- for (j = 0; j < BLOCK_SIZE_GROUPS; j++)
- for (i = 0; i < INTRA_MODES - 1; ++i)
- vp9_diff_update_prob(&r, &fc->y_mode_prob[j][i]);
-
- for (j = 0; j < PARTITION_CONTEXTS; ++j)
- for (i = 0; i < PARTITION_TYPES - 1; ++i)
- vp9_diff_update_prob(&r, &fc->partition_prob[j][i]);
-
- read_mv_probs(nmvc, cm->allow_high_precision_mv, &r);
- }
-
- return vpx_reader_has_error(&r);
-}
-
-static struct vpx_read_bit_buffer *init_read_bit_buffer(
- VP9Decoder *pbi,
- struct vpx_read_bit_buffer *rb,
- const uint8_t *data,
- const uint8_t *data_end,
- uint8_t clear_data[MAX_VP9_HEADER_SIZE]) {
- rb->bit_offset = 0;
- rb->error_handler = error_handler;
- rb->error_handler_data = &pbi->common;
- if (pbi->decrypt_cb) {
- const int n = (int)VPXMIN(MAX_VP9_HEADER_SIZE, data_end - data);
- pbi->decrypt_cb(pbi->decrypt_state, data, clear_data, n);
- rb->bit_buffer = clear_data;
- rb->bit_buffer_end = clear_data + n;
- } else {
- rb->bit_buffer = data;
- rb->bit_buffer_end = data_end;
- }
- return rb;
-}
-
-//------------------------------------------------------------------------------
-
-int vp9_read_sync_code(struct vpx_read_bit_buffer *const rb) {
- return vpx_rb_read_literal(rb, 8) == VP9_SYNC_CODE_0 &&
- vpx_rb_read_literal(rb, 8) == VP9_SYNC_CODE_1 &&
- vpx_rb_read_literal(rb, 8) == VP9_SYNC_CODE_2;
-}
-
-void vp9_read_frame_size(struct vpx_read_bit_buffer *rb,
- int *width, int *height) {
- *width = vpx_rb_read_literal(rb, 16) + 1;
- *height = vpx_rb_read_literal(rb, 16) + 1;
-}
-
-BITSTREAM_PROFILE vp9_read_profile(struct vpx_read_bit_buffer *rb) {
- int profile = vpx_rb_read_bit(rb);
- profile |= vpx_rb_read_bit(rb) << 1;
- if (profile > 2)
- profile += vpx_rb_read_bit(rb);
- return (BITSTREAM_PROFILE) profile;
-}
-
-void vp9_decode_frame(VP9Decoder *pbi,
- const uint8_t *data, const uint8_t *data_end,
- const uint8_t **p_data_end) {
- VP9_COMMON *const cm = &pbi->common;
- MACROBLOCKD *const xd = &pbi->mb;
- struct vpx_read_bit_buffer rb;
- int context_updated = 0;
- uint8_t clear_data[MAX_VP9_HEADER_SIZE];
- const size_t first_partition_size = read_uncompressed_header(pbi,
- init_read_bit_buffer(pbi, &rb, data, data_end, clear_data));
- const int tile_rows = 1 << cm->log2_tile_rows;
- const int tile_cols = 1 << cm->log2_tile_cols;
- YV12_BUFFER_CONFIG *const new_fb = get_frame_new_buffer(cm);
- xd->cur_buf = new_fb;
-
- if (!first_partition_size) {
- // showing a frame directly
- *p_data_end = data + (cm->profile <= PROFILE_2 ? 1 : 2);
- return;
- }
-
- data += vpx_rb_bytes_read(&rb);
- if (!read_is_valid(data, first_partition_size, data_end))
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Truncated packet or corrupt header length");
-
- cm->use_prev_frame_mvs = !cm->error_resilient_mode &&
- cm->width == cm->last_width &&
- cm->height == cm->last_height &&
- !cm->last_intra_only &&
- cm->last_show_frame &&
- (cm->last_frame_type != KEY_FRAME);
-
- vp9_setup_block_planes(xd, cm->subsampling_x, cm->subsampling_y);
-
- *cm->fc = cm->frame_contexts[cm->frame_context_idx];
- if (!cm->fc->initialized)
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Uninitialized entropy context.");
-
- xd->corrupted = 0;
- new_fb->corrupted = read_compressed_header(pbi, data, first_partition_size);
- if (new_fb->corrupted)
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Decode failed. Frame data header is corrupted.");
-
- if (cm->lf.filter_level && !cm->skip_loop_filter) {
- vp9_loop_filter_frame_init(cm, cm->lf.filter_level);
- }
-
- // If encoded in frame parallel mode, frame context is ready after decoding
- // the frame header.
- if (pbi->frame_parallel_decode && cm->frame_parallel_decoding_mode) {
- VPxWorker *const worker = pbi->frame_worker_owner;
- FrameWorkerData *const frame_worker_data = worker->data1;
- if (cm->refresh_frame_context) {
- context_updated = 1;
- cm->frame_contexts[cm->frame_context_idx] = *cm->fc;
- }
- vp9_frameworker_lock_stats(worker);
- pbi->cur_buf->row = -1;
- pbi->cur_buf->col = -1;
- frame_worker_data->frame_context_ready = 1;
- // Signal the main thread that context is ready.
- vp9_frameworker_signal_stats(worker);
- vp9_frameworker_unlock_stats(worker);
- }
-
- if (pbi->tile_worker_data == NULL ||
- (tile_cols * tile_rows) != pbi->total_tiles) {
- const int num_tile_workers = tile_cols * tile_rows +
- ((pbi->max_threads > 1) ? pbi->max_threads : 0);
- const size_t twd_size = num_tile_workers * sizeof(*pbi->tile_worker_data);
- // Ensure tile data offsets will be properly aligned. This may fail on
- // platforms without DECLARE_ALIGNED().
- assert((sizeof(*pbi->tile_worker_data) % 16) == 0);
- vpx_free(pbi->tile_worker_data);
- CHECK_MEM_ERROR(cm, pbi->tile_worker_data, vpx_memalign(32, twd_size));
- pbi->total_tiles = tile_rows * tile_cols;
- }
-
- if (pbi->max_threads > 1 && tile_rows == 1 && tile_cols > 1) {
- // Multi-threaded tile decoder
- *p_data_end = decode_tiles_mt(pbi, data + first_partition_size, data_end);
- if (!xd->corrupted) {
- if (!cm->skip_loop_filter) {
- // If multiple threads are used to decode tiles, then we use those
- // threads to do parallel loopfiltering.
- vp9_loop_filter_frame_mt(new_fb, cm, pbi->mb.plane,
- cm->lf.filter_level, 0, 0, pbi->tile_workers,
- pbi->num_tile_workers, &pbi->lf_row_sync);
- }
- } else {
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Decode failed. Frame data is corrupted.");
- }
- } else {
- *p_data_end = decode_tiles(pbi, data + first_partition_size, data_end);
- }
-
- if (!xd->corrupted) {
- if (!cm->error_resilient_mode && !cm->frame_parallel_decoding_mode) {
- vp9_adapt_coef_probs(cm);
-
- if (!frame_is_intra_only(cm)) {
- vp9_adapt_mode_probs(cm);
- vp9_adapt_mv_probs(cm, cm->allow_high_precision_mv);
- }
- }
- } else {
- vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
- "Decode failed. Frame data is corrupted.");
- }
-
- // Non frame parallel update frame context here.
- if (cm->refresh_frame_context && !context_updated)
- cm->frame_contexts[cm->frame_context_idx] = *cm->fc;
-}
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_decodeframe.h b/thirdparty/libvpx/vp9/decoder/vp9_decodeframe.h
deleted file mode 100644
index ce33cbdbd9..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_decodeframe.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP9_DECODER_VP9_DECODEFRAME_H_
-#define VP9_DECODER_VP9_DECODEFRAME_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vp9/common/vp9_enums.h"
-
-struct VP9Decoder;
-struct vpx_read_bit_buffer;
-
-int vp9_read_sync_code(struct vpx_read_bit_buffer *const rb);
-void vp9_read_frame_size(struct vpx_read_bit_buffer *rb,
- int *width, int *height);
-BITSTREAM_PROFILE vp9_read_profile(struct vpx_read_bit_buffer *rb);
-
-void vp9_decode_frame(struct VP9Decoder *pbi,
- const uint8_t *data, const uint8_t *data_end,
- const uint8_t **p_data_end);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_DECODER_VP9_DECODEFRAME_H_
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_decodemv.c b/thirdparty/libvpx/vp9/decoder/vp9_decodemv.c
deleted file mode 100644
index ffc6839ad1..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_decodemv.c
+++ /dev/null
@@ -1,911 +0,0 @@
-/*
- Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "vp9/common/vp9_common.h"
-#include "vp9/common/vp9_entropy.h"
-#include "vp9/common/vp9_entropymode.h"
-#include "vp9/common/vp9_entropymv.h"
-#include "vp9/common/vp9_mvref_common.h"
-#include "vp9/common/vp9_pred_common.h"
-#include "vp9/common/vp9_reconinter.h"
-#include "vp9/common/vp9_seg_common.h"
-
-#include "vp9/decoder/vp9_decodemv.h"
-#include "vp9/decoder/vp9_decodeframe.h"
-
-#include "vpx_dsp/vpx_dsp_common.h"
-
-static PREDICTION_MODE read_intra_mode(vpx_reader *r, const vpx_prob *p) {
- return (PREDICTION_MODE)vpx_read_tree(r, vp9_intra_mode_tree, p);
-}
-
-static PREDICTION_MODE read_intra_mode_y(VP9_COMMON *cm, MACROBLOCKD *xd,
- vpx_reader *r, int size_group) {
- const PREDICTION_MODE y_mode =
- read_intra_mode(r, cm->fc->y_mode_prob[size_group]);
- FRAME_COUNTS *counts = xd->counts;
- if (counts)
- ++counts->y_mode[size_group][y_mode];
- return y_mode;
-}
-
-static PREDICTION_MODE read_intra_mode_uv(VP9_COMMON *cm, MACROBLOCKD *xd,
- vpx_reader *r,
- PREDICTION_MODE y_mode) {
- const PREDICTION_MODE uv_mode = read_intra_mode(r,
- cm->fc->uv_mode_prob[y_mode]);
- FRAME_COUNTS *counts = xd->counts;
- if (counts)
- ++counts->uv_mode[y_mode][uv_mode];
- return uv_mode;
-}
-
-static PREDICTION_MODE read_inter_mode(VP9_COMMON *cm, MACROBLOCKD *xd,
- vpx_reader *r, int ctx) {
- const int mode = vpx_read_tree(r, vp9_inter_mode_tree,
- cm->fc->inter_mode_probs[ctx]);
- FRAME_COUNTS *counts = xd->counts;
- if (counts)
- ++counts->inter_mode[ctx][mode];
-
- return NEARESTMV + mode;
-}
-
-static int read_segment_id(vpx_reader *r, const struct segmentation *seg) {
- return vpx_read_tree(r, vp9_segment_tree, seg->tree_probs);
-}
-
-static TX_SIZE read_selected_tx_size(VP9_COMMON *cm, MACROBLOCKD *xd,
- TX_SIZE max_tx_size, vpx_reader *r) {
- FRAME_COUNTS *counts = xd->counts;
- const int ctx = get_tx_size_context(xd);
- const vpx_prob *tx_probs = get_tx_probs(max_tx_size, ctx, &cm->fc->tx_probs);
- int tx_size = vpx_read(r, tx_probs[0]);
- if (tx_size != TX_4X4 && max_tx_size >= TX_16X16) {
- tx_size += vpx_read(r, tx_probs[1]);
- if (tx_size != TX_8X8 && max_tx_size >= TX_32X32)
- tx_size += vpx_read(r, tx_probs[2]);
- }
-
- if (counts)
- ++get_tx_counts(max_tx_size, ctx, &counts->tx)[tx_size];
- return (TX_SIZE)tx_size;
-}
-
-static INLINE TX_SIZE read_tx_size(VP9_COMMON *cm, MACROBLOCKD *xd,
- int allow_select, vpx_reader *r) {
- TX_MODE tx_mode = cm->tx_mode;
- BLOCK_SIZE bsize = xd->mi[0]->sb_type;
- const TX_SIZE max_tx_size = max_txsize_lookup[bsize];
- if (allow_select && tx_mode == TX_MODE_SELECT && bsize >= BLOCK_8X8)
- return read_selected_tx_size(cm, xd, max_tx_size, r);
- else
- return VPXMIN(max_tx_size, tx_mode_to_biggest_tx_size[tx_mode]);
-}
-
-static int dec_get_segment_id(const VP9_COMMON *cm, const uint8_t *segment_ids,
- int mi_offset, int x_mis, int y_mis) {
- int x, y, segment_id = INT_MAX;
-
- for (y = 0; y < y_mis; y++)
- for (x = 0; x < x_mis; x++)
- segment_id =
- VPXMIN(segment_id, segment_ids[mi_offset + y * cm->mi_cols + x]);
-
- assert(segment_id >= 0 && segment_id < MAX_SEGMENTS);
- return segment_id;
-}
-
-static void set_segment_id(VP9_COMMON *cm, int mi_offset,
- int x_mis, int y_mis, int segment_id) {
- int x, y;
-
- assert(segment_id >= 0 && segment_id < MAX_SEGMENTS);
-
- for (y = 0; y < y_mis; y++)
- for (x = 0; x < x_mis; x++)
- cm->current_frame_seg_map[mi_offset + y * cm->mi_cols + x] = segment_id;
-}
-
-static void copy_segment_id(const VP9_COMMON *cm,
- const uint8_t *last_segment_ids,
- uint8_t *current_segment_ids,
- int mi_offset, int x_mis, int y_mis) {
- int x, y;
-
- for (y = 0; y < y_mis; y++)
- for (x = 0; x < x_mis; x++)
- current_segment_ids[mi_offset + y * cm->mi_cols + x] = last_segment_ids ?
- last_segment_ids[mi_offset + y * cm->mi_cols + x] : 0;
-}
-
-static int read_intra_segment_id(VP9_COMMON *const cm, int mi_offset,
- int x_mis, int y_mis,
- vpx_reader *r) {
- struct segmentation *const seg = &cm->seg;
- int segment_id;
-
- if (!seg->enabled)
- return 0; // Default for disabled segmentation
-
- if (!seg->update_map) {
- copy_segment_id(cm, cm->last_frame_seg_map, cm->current_frame_seg_map,
- mi_offset, x_mis, y_mis);
- return 0;
- }
-
- segment_id = read_segment_id(r, seg);
- set_segment_id(cm, mi_offset, x_mis, y_mis, segment_id);
- return segment_id;
-}
-
-static int read_inter_segment_id(VP9_COMMON *const cm, MACROBLOCKD *const xd,
- int mi_row, int mi_col, vpx_reader *r,
- int x_mis, int y_mis) {
- struct segmentation *const seg = &cm->seg;
- MODE_INFO *const mi = xd->mi[0];
- int predicted_segment_id, segment_id;
- const int mi_offset = mi_row * cm->mi_cols + mi_col;
-
- if (!seg->enabled)
- return 0; // Default for disabled segmentation
-
- predicted_segment_id = cm->last_frame_seg_map ?
- dec_get_segment_id(cm, cm->last_frame_seg_map, mi_offset, x_mis, y_mis) :
- 0;
-
- if (!seg->update_map) {
- copy_segment_id(cm, cm->last_frame_seg_map, cm->current_frame_seg_map,
- mi_offset, x_mis, y_mis);
- return predicted_segment_id;
- }
-
- if (seg->temporal_update) {
- const vpx_prob pred_prob = vp9_get_pred_prob_seg_id(seg, xd);
- mi->seg_id_predicted = vpx_read(r, pred_prob);
- segment_id = mi->seg_id_predicted ? predicted_segment_id
- : read_segment_id(r, seg);
- } else {
- segment_id = read_segment_id(r, seg);
- }
- set_segment_id(cm, mi_offset, x_mis, y_mis, segment_id);
- return segment_id;
-}
-
-static int read_skip(VP9_COMMON *cm, const MACROBLOCKD *xd,
- int segment_id, vpx_reader *r) {
- if (segfeature_active(&cm->seg, segment_id, SEG_LVL_SKIP)) {
- return 1;
- } else {
- const int ctx = vp9_get_skip_context(xd);
- const int skip = vpx_read(r, cm->fc->skip_probs[ctx]);
- FRAME_COUNTS *counts = xd->counts;
- if (counts)
- ++counts->skip[ctx][skip];
- return skip;
- }
-}
-
-static void read_intra_frame_mode_info(VP9_COMMON *const cm,
- MACROBLOCKD *const xd,
- int mi_row, int mi_col, vpx_reader *r,
- int x_mis, int y_mis) {
- MODE_INFO *const mi = xd->mi[0];
- const MODE_INFO *above_mi = xd->above_mi;
- const MODE_INFO *left_mi = xd->left_mi;
- const BLOCK_SIZE bsize = mi->sb_type;
- int i;
- const int mi_offset = mi_row * cm->mi_cols + mi_col;
-
- mi->segment_id = read_intra_segment_id(cm, mi_offset, x_mis, y_mis, r);
- mi->skip = read_skip(cm, xd, mi->segment_id, r);
- mi->tx_size = read_tx_size(cm, xd, 1, r);
- mi->ref_frame[0] = INTRA_FRAME;
- mi->ref_frame[1] = NONE;
-
- switch (bsize) {
- case BLOCK_4X4:
- for (i = 0; i < 4; ++i)
- mi->bmi[i].as_mode =
- read_intra_mode(r, get_y_mode_probs(mi, above_mi, left_mi, i));
- mi->mode = mi->bmi[3].as_mode;
- break;
- case BLOCK_4X8:
- mi->bmi[0].as_mode = mi->bmi[2].as_mode =
- read_intra_mode(r, get_y_mode_probs(mi, above_mi, left_mi, 0));
- mi->bmi[1].as_mode = mi->bmi[3].as_mode = mi->mode =
- read_intra_mode(r, get_y_mode_probs(mi, above_mi, left_mi, 1));
- break;
- case BLOCK_8X4:
- mi->bmi[0].as_mode = mi->bmi[1].as_mode =
- read_intra_mode(r, get_y_mode_probs(mi, above_mi, left_mi, 0));
- mi->bmi[2].as_mode = mi->bmi[3].as_mode = mi->mode =
- read_intra_mode(r, get_y_mode_probs(mi, above_mi, left_mi, 2));
- break;
- default:
- mi->mode = read_intra_mode(r,
- get_y_mode_probs(mi, above_mi, left_mi, 0));
- }
-
- mi->uv_mode = read_intra_mode(r, vp9_kf_uv_mode_prob[mi->mode]);
-}
-
-static int read_mv_component(vpx_reader *r,
- const nmv_component *mvcomp, int usehp) {
- int mag, d, fr, hp;
- const int sign = vpx_read(r, mvcomp->sign);
- const int mv_class = vpx_read_tree(r, vp9_mv_class_tree, mvcomp->classes);
- const int class0 = mv_class == MV_CLASS_0;
-
- // Integer part
- if (class0) {
- d = vpx_read_tree(r, vp9_mv_class0_tree, mvcomp->class0);
- mag = 0;
- } else {
- int i;
- const int n = mv_class + CLASS0_BITS - 1; // number of bits
-
- d = 0;
- for (i = 0; i < n; ++i)
- d |= vpx_read(r, mvcomp->bits[i]) << i;
- mag = CLASS0_SIZE << (mv_class + 2);
- }
-
- // Fractional part
- fr = vpx_read_tree(r, vp9_mv_fp_tree, class0 ? mvcomp->class0_fp[d]
- : mvcomp->fp);
-
- // High precision part (if hp is not used, the default value of the hp is 1)
- hp = usehp ? vpx_read(r, class0 ? mvcomp->class0_hp : mvcomp->hp)
- : 1;
-
- // Result
- mag += ((d << 3) | (fr << 1) | hp) + 1;
- return sign ? -mag : mag;
-}
-
-static INLINE void read_mv(vpx_reader *r, MV *mv, const MV *ref,
- const nmv_context *ctx,
- nmv_context_counts *counts, int allow_hp) {
- const MV_JOINT_TYPE joint_type =
- (MV_JOINT_TYPE)vpx_read_tree(r, vp9_mv_joint_tree, ctx->joints);
- const int use_hp = allow_hp && use_mv_hp(ref);
- MV diff = {0, 0};
-
- if (mv_joint_vertical(joint_type))
- diff.row = read_mv_component(r, &ctx->comps[0], use_hp);
-
- if (mv_joint_horizontal(joint_type))
- diff.col = read_mv_component(r, &ctx->comps[1], use_hp);
-
- vp9_inc_mv(&diff, counts);
-
- mv->row = ref->row + diff.row;
- mv->col = ref->col + diff.col;
-}
-
-static REFERENCE_MODE read_block_reference_mode(VP9_COMMON *cm,
- const MACROBLOCKD *xd,
- vpx_reader *r) {
- if (cm->reference_mode == REFERENCE_MODE_SELECT) {
- const int ctx = vp9_get_reference_mode_context(cm, xd);
- const REFERENCE_MODE mode =
- (REFERENCE_MODE)vpx_read(r, cm->fc->comp_inter_prob[ctx]);
- FRAME_COUNTS *counts = xd->counts;
- if (counts)
- ++counts->comp_inter[ctx][mode];
- return mode; // SINGLE_REFERENCE or COMPOUND_REFERENCE
- } else {
- return cm->reference_mode;
- }
-}
-
-// Read the referncence frame
-static void read_ref_frames(VP9_COMMON *const cm, MACROBLOCKD *const xd,
- vpx_reader *r,
- int segment_id, MV_REFERENCE_FRAME ref_frame[2]) {
- FRAME_CONTEXT *const fc = cm->fc;
- FRAME_COUNTS *counts = xd->counts;
-
- if (segfeature_active(&cm->seg, segment_id, SEG_LVL_REF_FRAME)) {
- ref_frame[0] = (MV_REFERENCE_FRAME)get_segdata(&cm->seg, segment_id,
- SEG_LVL_REF_FRAME);
- ref_frame[1] = NONE;
- } else {
- const REFERENCE_MODE mode = read_block_reference_mode(cm, xd, r);
- // FIXME(rbultje) I'm pretty sure this breaks segmentation ref frame coding
- if (mode == COMPOUND_REFERENCE) {
- const int idx = cm->ref_frame_sign_bias[cm->comp_fixed_ref];
- const int ctx = vp9_get_pred_context_comp_ref_p(cm, xd);
- const int bit = vpx_read(r, fc->comp_ref_prob[ctx]);
- if (counts)
- ++counts->comp_ref[ctx][bit];
- ref_frame[idx] = cm->comp_fixed_ref;
- ref_frame[!idx] = cm->comp_var_ref[bit];
- } else if (mode == SINGLE_REFERENCE) {
- const int ctx0 = vp9_get_pred_context_single_ref_p1(xd);
- const int bit0 = vpx_read(r, fc->single_ref_prob[ctx0][0]);
- if (counts)
- ++counts->single_ref[ctx0][0][bit0];
- if (bit0) {
- const int ctx1 = vp9_get_pred_context_single_ref_p2(xd);
- const int bit1 = vpx_read(r, fc->single_ref_prob[ctx1][1]);
- if (counts)
- ++counts->single_ref[ctx1][1][bit1];
- ref_frame[0] = bit1 ? ALTREF_FRAME : GOLDEN_FRAME;
- } else {
- ref_frame[0] = LAST_FRAME;
- }
-
- ref_frame[1] = NONE;
- } else {
- assert(0 && "Invalid prediction mode.");
- }
- }
-}
-
-// TODO(slavarnway): Move this decoder version of
-// vp9_get_pred_context_switchable_interp() to vp9_pred_common.h and update the
-// encoder.
-//
-// Returns a context number for the given MB prediction signal
-static int dec_get_pred_context_switchable_interp(const MACROBLOCKD *xd) {
- // Note:
- // The mode info data structure has a one element border above and to the
- // left of the entries corresponding to real macroblocks.
- // The prediction flags in these dummy entries are initialized to 0.
- const MODE_INFO *const left_mi = xd->left_mi;
- const int left_type = left_mi ? left_mi->interp_filter : SWITCHABLE_FILTERS;
- const MODE_INFO *const above_mi = xd->above_mi;
- const int above_type = above_mi ? above_mi->interp_filter
- : SWITCHABLE_FILTERS;
-
- if (left_type == above_type)
- return left_type;
- else if (left_type == SWITCHABLE_FILTERS)
- return above_type;
- else if (above_type == SWITCHABLE_FILTERS)
- return left_type;
- else
- return SWITCHABLE_FILTERS;
-}
-
-static INLINE INTERP_FILTER read_switchable_interp_filter(
- VP9_COMMON *const cm, MACROBLOCKD *const xd,
- vpx_reader *r) {
- const int ctx = dec_get_pred_context_switchable_interp(xd);
- const INTERP_FILTER type =
- (INTERP_FILTER)vpx_read_tree(r, vp9_switchable_interp_tree,
- cm->fc->switchable_interp_prob[ctx]);
- FRAME_COUNTS *counts = xd->counts;
- if (counts)
- ++counts->switchable_interp[ctx][type];
- return type;
-}
-
-static void read_intra_block_mode_info(VP9_COMMON *const cm,
- MACROBLOCKD *const xd, MODE_INFO *mi,
- vpx_reader *r) {
- const BLOCK_SIZE bsize = mi->sb_type;
- int i;
-
- switch (bsize) {
- case BLOCK_4X4:
- for (i = 0; i < 4; ++i)
- mi->bmi[i].as_mode = read_intra_mode_y(cm, xd, r, 0);
- mi->mode = mi->bmi[3].as_mode;
- break;
- case BLOCK_4X8:
- mi->bmi[0].as_mode = mi->bmi[2].as_mode = read_intra_mode_y(cm, xd,
- r, 0);
- mi->bmi[1].as_mode = mi->bmi[3].as_mode = mi->mode =
- read_intra_mode_y(cm, xd, r, 0);
- break;
- case BLOCK_8X4:
- mi->bmi[0].as_mode = mi->bmi[1].as_mode = read_intra_mode_y(cm, xd,
- r, 0);
- mi->bmi[2].as_mode = mi->bmi[3].as_mode = mi->mode =
- read_intra_mode_y(cm, xd, r, 0);
- break;
- default:
- mi->mode = read_intra_mode_y(cm, xd, r, size_group_lookup[bsize]);
- }
-
- mi->uv_mode = read_intra_mode_uv(cm, xd, r, mi->mode);
-
- // Initialize interp_filter here so we do not have to check for inter block
- // modes in dec_get_pred_context_switchable_interp()
- mi->interp_filter = SWITCHABLE_FILTERS;
-
- mi->ref_frame[0] = INTRA_FRAME;
- mi->ref_frame[1] = NONE;
-}
-
-static INLINE int is_mv_valid(const MV *mv) {
- return mv->row > MV_LOW && mv->row < MV_UPP &&
- mv->col > MV_LOW && mv->col < MV_UPP;
-}
-
-static INLINE void copy_mv_pair(int_mv *dst, const int_mv *src) {
- memcpy(dst, src, sizeof(*dst) * 2);
-}
-
-static INLINE void zero_mv_pair(int_mv *dst) {
- memset(dst, 0, sizeof(*dst) * 2);
-}
-
-static INLINE int assign_mv(VP9_COMMON *cm, MACROBLOCKD *xd,
- PREDICTION_MODE mode,
- int_mv mv[2], int_mv ref_mv[2],
- int_mv near_nearest_mv[2],
- int is_compound, int allow_hp, vpx_reader *r) {
- int i;
- int ret = 1;
-
- switch (mode) {
- case NEWMV: {
- FRAME_COUNTS *counts = xd->counts;
- nmv_context_counts *const mv_counts = counts ? &counts->mv : NULL;
- for (i = 0; i < 1 + is_compound; ++i) {
- read_mv(r, &mv[i].as_mv, &ref_mv[i].as_mv, &cm->fc->nmvc, mv_counts,
- allow_hp);
- ret = ret && is_mv_valid(&mv[i].as_mv);
- }
- break;
- }
- case NEARMV:
- case NEARESTMV: {
- copy_mv_pair(mv, near_nearest_mv);
- break;
- }
- case ZEROMV: {
- zero_mv_pair(mv);
- break;
- }
- default: {
- return 0;
- }
- }
- return ret;
-}
-
-static int read_is_inter_block(VP9_COMMON *const cm, MACROBLOCKD *const xd,
- int segment_id, vpx_reader *r) {
- if (segfeature_active(&cm->seg, segment_id, SEG_LVL_REF_FRAME)) {
- return get_segdata(&cm->seg, segment_id, SEG_LVL_REF_FRAME) != INTRA_FRAME;
- } else {
- const int ctx = get_intra_inter_context(xd);
- const int is_inter = vpx_read(r, cm->fc->intra_inter_prob[ctx]);
- FRAME_COUNTS *counts = xd->counts;
- if (counts)
- ++counts->intra_inter[ctx][is_inter];
- return is_inter;
- }
-}
-
-static void dec_find_best_ref_mvs(int allow_hp, int_mv *mvlist, int_mv *best_mv,
- int refmv_count) {
- int i;
-
- // Make sure all the candidates are properly clamped etc
- for (i = 0; i < refmv_count; ++i) {
- lower_mv_precision(&mvlist[i].as_mv, allow_hp);
- *best_mv = mvlist[i];
- }
-}
-
-static void fpm_sync(void *const data, int mi_row) {
- VP9Decoder *const pbi = (VP9Decoder *)data;
- vp9_frameworker_wait(pbi->frame_worker_owner, pbi->common.prev_frame,
- mi_row << MI_BLOCK_SIZE_LOG2);
-}
-
-// This macro is used to add a motion vector mv_ref list if it isn't
-// already in the list. If it's the second motion vector or early_break
-// it will also skip all additional processing and jump to Done!
-#define ADD_MV_REF_LIST_EB(mv, refmv_count, mv_ref_list, Done) \
- do { \
- if (refmv_count) { \
- if ((mv).as_int != (mv_ref_list)[0].as_int) { \
- (mv_ref_list)[(refmv_count)] = (mv); \
- refmv_count++; \
- goto Done; \
- } \
- } else { \
- (mv_ref_list)[(refmv_count)++] = (mv); \
- if (early_break) \
- goto Done; \
- } \
- } while (0)
-
-// If either reference frame is different, not INTRA, and they
-// are different from each other scale and add the mv to our list.
-#define IF_DIFF_REF_FRAME_ADD_MV_EB(mbmi, ref_frame, ref_sign_bias, \
- refmv_count, mv_ref_list, Done) \
- do { \
- if (is_inter_block(mbmi)) { \
- if ((mbmi)->ref_frame[0] != ref_frame) \
- ADD_MV_REF_LIST_EB(scale_mv((mbmi), 0, ref_frame, ref_sign_bias), \
- refmv_count, mv_ref_list, Done); \
- if (has_second_ref(mbmi) && \
- (mbmi)->ref_frame[1] != ref_frame && \
- (mbmi)->mv[1].as_int != (mbmi)->mv[0].as_int) \
- ADD_MV_REF_LIST_EB(scale_mv((mbmi), 1, ref_frame, ref_sign_bias), \
- refmv_count, mv_ref_list, Done); \
- } \
- } while (0)
-
-// This function searches the neighborhood of a given MB/SB
-// to try and find candidate reference vectors.
-static int dec_find_mv_refs(const VP9_COMMON *cm, const MACROBLOCKD *xd,
- PREDICTION_MODE mode, MV_REFERENCE_FRAME ref_frame,
- const POSITION *const mv_ref_search,
- int_mv *mv_ref_list,
- int mi_row, int mi_col, int block, int is_sub8x8,
- find_mv_refs_sync sync, void *const data) {
- const int *ref_sign_bias = cm->ref_frame_sign_bias;
- int i, refmv_count = 0;
- int different_ref_found = 0;
- const MV_REF *const prev_frame_mvs = cm->use_prev_frame_mvs ?
- cm->prev_frame->mvs + mi_row * cm->mi_cols + mi_col : NULL;
- const TileInfo *const tile = &xd->tile;
- // If mode is nearestmv or newmv (uses nearestmv as a reference) then stop
- // searching after the first mv is found.
- const int early_break = (mode != NEARMV);
-
- // Blank the reference vector list
- memset(mv_ref_list, 0, sizeof(*mv_ref_list) * MAX_MV_REF_CANDIDATES);
-
- i = 0;
- if (is_sub8x8) {
- // If the size < 8x8 we get the mv from the bmi substructure for the
- // nearest two blocks.
- for (i = 0; i < 2; ++i) {
- const POSITION *const mv_ref = &mv_ref_search[i];
- if (is_inside(tile, mi_col, mi_row, cm->mi_rows, mv_ref)) {
- const MODE_INFO *const candidate_mi =
- xd->mi[mv_ref->col + mv_ref->row * xd->mi_stride];
- different_ref_found = 1;
-
- if (candidate_mi->ref_frame[0] == ref_frame)
- ADD_MV_REF_LIST_EB(
- get_sub_block_mv(candidate_mi, 0, mv_ref->col, block),
- refmv_count, mv_ref_list, Done);
- else if (candidate_mi->ref_frame[1] == ref_frame)
- ADD_MV_REF_LIST_EB(
- get_sub_block_mv(candidate_mi, 1, mv_ref->col, block),
- refmv_count, mv_ref_list, Done);
- }
- }
- }
-
- // Check the rest of the neighbors in much the same way
- // as before except we don't need to keep track of sub blocks or
- // mode counts.
- for (; i < MVREF_NEIGHBOURS; ++i) {
- const POSITION *const mv_ref = &mv_ref_search[i];
- if (is_inside(tile, mi_col, mi_row, cm->mi_rows, mv_ref)) {
- const MODE_INFO *const candidate =
- xd->mi[mv_ref->col + mv_ref->row * xd->mi_stride];
- different_ref_found = 1;
-
- if (candidate->ref_frame[0] == ref_frame)
- ADD_MV_REF_LIST_EB(candidate->mv[0], refmv_count, mv_ref_list, Done);
- else if (candidate->ref_frame[1] == ref_frame)
- ADD_MV_REF_LIST_EB(candidate->mv[1], refmv_count, mv_ref_list, Done);
- }
- }
-
- // TODO(hkuang): Remove this sync after fixing pthread_cond_broadcast
- // on windows platform. The sync here is unnecessary if use_prev_frame_mvs
- // is 0. But after removing it, there will be hang in the unit test on windows
- // due to several threads waiting for a thread's signal.
-#if defined(_WIN32) && !HAVE_PTHREAD_H
- if (cm->frame_parallel_decode && sync != NULL) {
- sync(data, mi_row);
- }
-#endif
-
- // Check the last frame's mode and mv info.
- if (prev_frame_mvs) {
- // Synchronize here for frame parallel decode if sync function is provided.
- if (cm->frame_parallel_decode && sync != NULL) {
- sync(data, mi_row);
- }
-
- if (prev_frame_mvs->ref_frame[0] == ref_frame) {
- ADD_MV_REF_LIST_EB(prev_frame_mvs->mv[0], refmv_count, mv_ref_list, Done);
- } else if (prev_frame_mvs->ref_frame[1] == ref_frame) {
- ADD_MV_REF_LIST_EB(prev_frame_mvs->mv[1], refmv_count, mv_ref_list, Done);
- }
- }
-
- // Since we couldn't find 2 mvs from the same reference frame
- // go back through the neighbors and find motion vectors from
- // different reference frames.
- if (different_ref_found) {
- for (i = 0; i < MVREF_NEIGHBOURS; ++i) {
- const POSITION *mv_ref = &mv_ref_search[i];
- if (is_inside(tile, mi_col, mi_row, cm->mi_rows, mv_ref)) {
- const MODE_INFO *const candidate =
- xd->mi[mv_ref->col + mv_ref->row * xd->mi_stride];
-
- // If the candidate is INTRA we don't want to consider its mv.
- IF_DIFF_REF_FRAME_ADD_MV_EB(candidate, ref_frame, ref_sign_bias,
- refmv_count, mv_ref_list, Done);
- }
- }
- }
-
- // Since we still don't have a candidate we'll try the last frame.
- if (prev_frame_mvs) {
- if (prev_frame_mvs->ref_frame[0] != ref_frame &&
- prev_frame_mvs->ref_frame[0] > INTRA_FRAME) {
- int_mv mv = prev_frame_mvs->mv[0];
- if (ref_sign_bias[prev_frame_mvs->ref_frame[0]] !=
- ref_sign_bias[ref_frame]) {
- mv.as_mv.row *= -1;
- mv.as_mv.col *= -1;
- }
- ADD_MV_REF_LIST_EB(mv, refmv_count, mv_ref_list, Done);
- }
-
- if (prev_frame_mvs->ref_frame[1] > INTRA_FRAME &&
- prev_frame_mvs->ref_frame[1] != ref_frame &&
- prev_frame_mvs->mv[1].as_int != prev_frame_mvs->mv[0].as_int) {
- int_mv mv = prev_frame_mvs->mv[1];
- if (ref_sign_bias[prev_frame_mvs->ref_frame[1]] !=
- ref_sign_bias[ref_frame]) {
- mv.as_mv.row *= -1;
- mv.as_mv.col *= -1;
- }
- ADD_MV_REF_LIST_EB(mv, refmv_count, mv_ref_list, Done);
- }
- }
-
- if (mode == NEARMV)
- refmv_count = MAX_MV_REF_CANDIDATES;
- else
- // we only care about the nearestmv for the remaining modes
- refmv_count = 1;
-
- Done:
- // Clamp vectors
- for (i = 0; i < refmv_count; ++i)
- clamp_mv_ref(&mv_ref_list[i].as_mv, xd);
-
- return refmv_count;
-}
-
-static void append_sub8x8_mvs_for_idx(VP9_COMMON *cm, MACROBLOCKD *xd,
- const POSITION *const mv_ref_search,
- PREDICTION_MODE b_mode, int block,
- int ref, int mi_row, int mi_col,
- int_mv *best_sub8x8) {
- int_mv mv_list[MAX_MV_REF_CANDIDATES];
- MODE_INFO *const mi = xd->mi[0];
- b_mode_info *bmi = mi->bmi;
- int n;
- int refmv_count;
-
- assert(MAX_MV_REF_CANDIDATES == 2);
-
- refmv_count = dec_find_mv_refs(cm, xd, b_mode, mi->ref_frame[ref],
- mv_ref_search, mv_list, mi_row, mi_col, block,
- 1, NULL, NULL);
-
- switch (block) {
- case 0:
- best_sub8x8->as_int = mv_list[refmv_count - 1].as_int;
- break;
- case 1:
- case 2:
- if (b_mode == NEARESTMV) {
- best_sub8x8->as_int = bmi[0].as_mv[ref].as_int;
- } else {
- best_sub8x8->as_int = 0;
- for (n = 0; n < refmv_count; ++n)
- if (bmi[0].as_mv[ref].as_int != mv_list[n].as_int) {
- best_sub8x8->as_int = mv_list[n].as_int;
- break;
- }
- }
- break;
- case 3:
- if (b_mode == NEARESTMV) {
- best_sub8x8->as_int = bmi[2].as_mv[ref].as_int;
- } else {
- int_mv candidates[2 + MAX_MV_REF_CANDIDATES];
- candidates[0] = bmi[1].as_mv[ref];
- candidates[1] = bmi[0].as_mv[ref];
- candidates[2] = mv_list[0];
- candidates[3] = mv_list[1];
- best_sub8x8->as_int = 0;
- for (n = 0; n < 2 + MAX_MV_REF_CANDIDATES; ++n)
- if (bmi[2].as_mv[ref].as_int != candidates[n].as_int) {
- best_sub8x8->as_int = candidates[n].as_int;
- break;
- }
- }
- break;
- default:
- assert(0 && "Invalid block index.");
- }
-}
-
-static uint8_t get_mode_context(const VP9_COMMON *cm, const MACROBLOCKD *xd,
- const POSITION *const mv_ref_search,
- int mi_row, int mi_col) {
- int i;
- int context_counter = 0;
- const TileInfo *const tile = &xd->tile;
-
- // Get mode count from nearest 2 blocks
- for (i = 0; i < 2; ++i) {
- const POSITION *const mv_ref = &mv_ref_search[i];
- if (is_inside(tile, mi_col, mi_row, cm->mi_rows, mv_ref)) {
- const MODE_INFO *const candidate =
- xd->mi[mv_ref->col + mv_ref->row * xd->mi_stride];
- // Keep counts for entropy encoding.
- context_counter += mode_2_counter[candidate->mode];
- }
- }
-
- return counter_to_context[context_counter];
-}
-
-static void read_inter_block_mode_info(VP9Decoder *const pbi,
- MACROBLOCKD *const xd,
- MODE_INFO *const mi,
- int mi_row, int mi_col, vpx_reader *r) {
- VP9_COMMON *const cm = &pbi->common;
- const BLOCK_SIZE bsize = mi->sb_type;
- const int allow_hp = cm->allow_high_precision_mv;
- int_mv best_ref_mvs[2];
- int ref, is_compound;
- uint8_t inter_mode_ctx;
- const POSITION *const mv_ref_search = mv_ref_blocks[bsize];
-
- read_ref_frames(cm, xd, r, mi->segment_id, mi->ref_frame);
- is_compound = has_second_ref(mi);
- inter_mode_ctx = get_mode_context(cm, xd, mv_ref_search, mi_row, mi_col);
-
- if (segfeature_active(&cm->seg, mi->segment_id, SEG_LVL_SKIP)) {
- mi->mode = ZEROMV;
- if (bsize < BLOCK_8X8) {
- vpx_internal_error(xd->error_info, VPX_CODEC_UNSUP_BITSTREAM,
- "Invalid usage of segement feature on small blocks");
- return;
- }
- } else {
- if (bsize >= BLOCK_8X8)
- mi->mode = read_inter_mode(cm, xd, r, inter_mode_ctx);
- else
- // Sub 8x8 blocks use the nearestmv as a ref_mv if the b_mode is NEWMV.
- // Setting mode to NEARESTMV forces the search to stop after the nearestmv
- // has been found. After b_modes have been read, mode will be overwritten
- // by the last b_mode.
- mi->mode = NEARESTMV;
-
- if (mi->mode != ZEROMV) {
- for (ref = 0; ref < 1 + is_compound; ++ref) {
- int_mv tmp_mvs[MAX_MV_REF_CANDIDATES];
- const MV_REFERENCE_FRAME frame = mi->ref_frame[ref];
- int refmv_count;
-
- refmv_count = dec_find_mv_refs(cm, xd, mi->mode, frame, mv_ref_search,
- tmp_mvs, mi_row, mi_col, -1, 0,
- fpm_sync, (void *)pbi);
-
- dec_find_best_ref_mvs(allow_hp, tmp_mvs, &best_ref_mvs[ref],
- refmv_count);
- }
- }
- }
-
- mi->interp_filter = (cm->interp_filter == SWITCHABLE)
- ? read_switchable_interp_filter(cm, xd, r)
- : cm->interp_filter;
-
- if (bsize < BLOCK_8X8) {
- const int num_4x4_w = 1 << xd->bmode_blocks_wl;
- const int num_4x4_h = 1 << xd->bmode_blocks_hl;
- int idx, idy;
- PREDICTION_MODE b_mode;
- int_mv best_sub8x8[2];
- for (idy = 0; idy < 2; idy += num_4x4_h) {
- for (idx = 0; idx < 2; idx += num_4x4_w) {
- const int j = idy * 2 + idx;
- b_mode = read_inter_mode(cm, xd, r, inter_mode_ctx);
-
- if (b_mode == NEARESTMV || b_mode == NEARMV) {
- for (ref = 0; ref < 1 + is_compound; ++ref)
- append_sub8x8_mvs_for_idx(cm, xd, mv_ref_search, b_mode, j, ref,
- mi_row, mi_col, &best_sub8x8[ref]);
- }
-
- if (!assign_mv(cm, xd, b_mode, mi->bmi[j].as_mv, best_ref_mvs,
- best_sub8x8, is_compound, allow_hp, r)) {
- xd->corrupted |= 1;
- break;
- }
-
- if (num_4x4_h == 2)
- mi->bmi[j + 2] = mi->bmi[j];
- if (num_4x4_w == 2)
- mi->bmi[j + 1] = mi->bmi[j];
- }
- }
-
- mi->mode = b_mode;
-
- copy_mv_pair(mi->mv, mi->bmi[3].as_mv);
- } else {
- xd->corrupted |= !assign_mv(cm, xd, mi->mode, mi->mv, best_ref_mvs,
- best_ref_mvs, is_compound, allow_hp, r);
- }
-}
-
-static void read_inter_frame_mode_info(VP9Decoder *const pbi,
- MACROBLOCKD *const xd,
- int mi_row, int mi_col, vpx_reader *r,
- int x_mis, int y_mis) {
- VP9_COMMON *const cm = &pbi->common;
- MODE_INFO *const mi = xd->mi[0];
- int inter_block;
-
- mi->segment_id = read_inter_segment_id(cm, xd, mi_row, mi_col, r, x_mis,
- y_mis);
- mi->skip = read_skip(cm, xd, mi->segment_id, r);
- inter_block = read_is_inter_block(cm, xd, mi->segment_id, r);
- mi->tx_size = read_tx_size(cm, xd, !mi->skip || !inter_block, r);
-
- if (inter_block)
- read_inter_block_mode_info(pbi, xd, mi, mi_row, mi_col, r);
- else
- read_intra_block_mode_info(cm, xd, mi, r);
-}
-
-static INLINE void copy_ref_frame_pair(MV_REFERENCE_FRAME *dst,
- const MV_REFERENCE_FRAME *src) {
- memcpy(dst, src, sizeof(*dst) * 2);
-}
-
-void vp9_read_mode_info(VP9Decoder *const pbi, MACROBLOCKD *xd,
- int mi_row, int mi_col, vpx_reader *r,
- int x_mis, int y_mis) {
- VP9_COMMON *const cm = &pbi->common;
- MODE_INFO *const mi = xd->mi[0];
- MV_REF* frame_mvs = cm->cur_frame->mvs + mi_row * cm->mi_cols + mi_col;
- int w, h;
-
- if (frame_is_intra_only(cm)) {
- read_intra_frame_mode_info(cm, xd, mi_row, mi_col, r, x_mis, y_mis);
- } else {
- read_inter_frame_mode_info(pbi, xd, mi_row, mi_col, r, x_mis, y_mis);
-
- for (h = 0; h < y_mis; ++h) {
- for (w = 0; w < x_mis; ++w) {
- MV_REF *const mv = frame_mvs + w;
- copy_ref_frame_pair(mv->ref_frame, mi->ref_frame);
- copy_mv_pair(mv->mv, mi->mv);
- }
- frame_mvs += cm->mi_cols;
- }
- }
-#if CONFIG_BETTER_HW_COMPATIBILITY && CONFIG_VP9_HIGHBITDEPTH
- if ((xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) &&
- (xd->above_mi == NULL || xd->left_mi == NULL) &&
- !is_inter_block(mi) && need_top_left[mi->uv_mode])
- assert(0);
-#endif // CONFIG_BETTER_HW_COMPATIBILITY && CONFIG_VP9_HIGHBITDEPTH
-}
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_decodemv.h b/thirdparty/libvpx/vp9/decoder/vp9_decodemv.h
deleted file mode 100644
index 45569ec81f..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_decodemv.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_DECODER_VP9_DECODEMV_H_
-#define VP9_DECODER_VP9_DECODEMV_H_
-
-#include "vpx_dsp/bitreader.h"
-
-#include "vp9/decoder/vp9_decoder.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp9_read_mode_info(VP9Decoder *const pbi, MACROBLOCKD *xd,
- int mi_row, int mi_col, vpx_reader *r,
- int x_mis, int y_mis);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_DECODER_VP9_DECODEMV_H_
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_decoder.c b/thirdparty/libvpx/vp9/decoder/vp9_decoder.c
deleted file mode 100644
index 935c04f3aa..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_decoder.c
+++ /dev/null
@@ -1,518 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-#include <limits.h>
-#include <stdio.h>
-
-#include "./vp9_rtcd.h"
-#include "./vpx_dsp_rtcd.h"
-#include "./vpx_scale_rtcd.h"
-
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/system_state.h"
-#include "vpx_ports/vpx_once.h"
-#include "vpx_ports/vpx_timer.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vpx_util/vpx_thread.h"
-
-#include "vp9/common/vp9_alloccommon.h"
-#include "vp9/common/vp9_loopfilter.h"
-#include "vp9/common/vp9_onyxc_int.h"
-#if CONFIG_VP9_POSTPROC
-#include "vp9/common/vp9_postproc.h"
-#endif
-#include "vp9/common/vp9_quant_common.h"
-#include "vp9/common/vp9_reconintra.h"
-
-#include "vp9/decoder/vp9_decodeframe.h"
-#include "vp9/decoder/vp9_decoder.h"
-#include "vp9/decoder/vp9_detokenize.h"
-
-static void initialize_dec(void) {
- static volatile int init_done = 0;
-
- if (!init_done) {
- vp9_rtcd();
- vpx_dsp_rtcd();
- vpx_scale_rtcd();
- vp9_init_intra_predictors();
- init_done = 1;
- }
-}
-
-static void vp9_dec_setup_mi(VP9_COMMON *cm) {
- cm->mi = cm->mip + cm->mi_stride + 1;
- cm->mi_grid_visible = cm->mi_grid_base + cm->mi_stride + 1;
- memset(cm->mi_grid_base, 0,
- cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mi_grid_base));
-}
-
-static int vp9_dec_alloc_mi(VP9_COMMON *cm, int mi_size) {
- cm->mip = vpx_calloc(mi_size, sizeof(*cm->mip));
- if (!cm->mip)
- return 1;
- cm->mi_alloc_size = mi_size;
- cm->mi_grid_base = (MODE_INFO **)vpx_calloc(mi_size, sizeof(MODE_INFO*));
- if (!cm->mi_grid_base)
- return 1;
- return 0;
-}
-
-static void vp9_dec_free_mi(VP9_COMMON *cm) {
- vpx_free(cm->mip);
- cm->mip = NULL;
- vpx_free(cm->mi_grid_base);
- cm->mi_grid_base = NULL;
-}
-
-VP9Decoder *vp9_decoder_create(BufferPool *const pool) {
- VP9Decoder *volatile const pbi = vpx_memalign(32, sizeof(*pbi));
- VP9_COMMON *volatile const cm = pbi ? &pbi->common : NULL;
-
- if (!cm)
- return NULL;
-
- vp9_zero(*pbi);
-
- if (setjmp(cm->error.jmp)) {
- cm->error.setjmp = 0;
- vp9_decoder_remove(pbi);
- return NULL;
- }
-
- cm->error.setjmp = 1;
-
- CHECK_MEM_ERROR(cm, cm->fc,
- (FRAME_CONTEXT *)vpx_calloc(1, sizeof(*cm->fc)));
- CHECK_MEM_ERROR(cm, cm->frame_contexts,
- (FRAME_CONTEXT *)vpx_calloc(FRAME_CONTEXTS,
- sizeof(*cm->frame_contexts)));
-
- pbi->need_resync = 1;
- once(initialize_dec);
-
- // Initialize the references to not point to any frame buffers.
- memset(&cm->ref_frame_map, -1, sizeof(cm->ref_frame_map));
- memset(&cm->next_ref_frame_map, -1, sizeof(cm->next_ref_frame_map));
-
- cm->current_video_frame = 0;
- pbi->ready_for_new_data = 1;
- pbi->common.buffer_pool = pool;
-
- cm->bit_depth = VPX_BITS_8;
- cm->dequant_bit_depth = VPX_BITS_8;
-
- cm->alloc_mi = vp9_dec_alloc_mi;
- cm->free_mi = vp9_dec_free_mi;
- cm->setup_mi = vp9_dec_setup_mi;
-
- vp9_loop_filter_init(cm);
-
- cm->error.setjmp = 0;
-
- vpx_get_worker_interface()->init(&pbi->lf_worker);
-
- return pbi;
-}
-
-void vp9_decoder_remove(VP9Decoder *pbi) {
- int i;
-
- if (!pbi)
- return;
-
- vpx_get_worker_interface()->end(&pbi->lf_worker);
- vpx_free(pbi->lf_worker.data1);
-
- for (i = 0; i < pbi->num_tile_workers; ++i) {
- VPxWorker *const worker = &pbi->tile_workers[i];
- vpx_get_worker_interface()->end(worker);
- }
-
- vpx_free(pbi->tile_worker_data);
- vpx_free(pbi->tile_workers);
-
- if (pbi->num_tile_workers > 0) {
- vp9_loop_filter_dealloc(&pbi->lf_row_sync);
- }
-
- vpx_free(pbi);
-}
-
-static int equal_dimensions(const YV12_BUFFER_CONFIG *a,
- const YV12_BUFFER_CONFIG *b) {
- return a->y_height == b->y_height && a->y_width == b->y_width &&
- a->uv_height == b->uv_height && a->uv_width == b->uv_width;
-}
-
-vpx_codec_err_t vp9_copy_reference_dec(VP9Decoder *pbi,
- VP9_REFFRAME ref_frame_flag,
- YV12_BUFFER_CONFIG *sd) {
- VP9_COMMON *cm = &pbi->common;
-
- /* TODO(jkoleszar): The decoder doesn't have any real knowledge of what the
- * encoder is using the frame buffers for. This is just a stub to keep the
- * vpxenc --test-decode functionality working, and will be replaced in a
- * later commit that adds VP9-specific controls for this functionality.
- */
- if (ref_frame_flag == VP9_LAST_FLAG) {
- const YV12_BUFFER_CONFIG *const cfg = get_ref_frame(cm, 0);
- if (cfg == NULL) {
- vpx_internal_error(&cm->error, VPX_CODEC_ERROR,
- "No 'last' reference frame");
- return VPX_CODEC_ERROR;
- }
- if (!equal_dimensions(cfg, sd))
- vpx_internal_error(&cm->error, VPX_CODEC_ERROR,
- "Incorrect buffer dimensions");
- else
- vp8_yv12_copy_frame(cfg, sd);
- } else {
- vpx_internal_error(&cm->error, VPX_CODEC_ERROR,
- "Invalid reference frame");
- }
-
- return cm->error.error_code;
-}
-
-
-vpx_codec_err_t vp9_set_reference_dec(VP9_COMMON *cm,
- VP9_REFFRAME ref_frame_flag,
- YV12_BUFFER_CONFIG *sd) {
- RefBuffer *ref_buf = NULL;
- RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs;
-
- // TODO(jkoleszar): The decoder doesn't have any real knowledge of what the
- // encoder is using the frame buffers for. This is just a stub to keep the
- // vpxenc --test-decode functionality working, and will be replaced in a
- // later commit that adds VP9-specific controls for this functionality.
- if (ref_frame_flag == VP9_LAST_FLAG) {
- ref_buf = &cm->frame_refs[0];
- } else if (ref_frame_flag == VP9_GOLD_FLAG) {
- ref_buf = &cm->frame_refs[1];
- } else if (ref_frame_flag == VP9_ALT_FLAG) {
- ref_buf = &cm->frame_refs[2];
- } else {
- vpx_internal_error(&cm->error, VPX_CODEC_ERROR,
- "Invalid reference frame");
- return cm->error.error_code;
- }
-
- if (!equal_dimensions(ref_buf->buf, sd)) {
- vpx_internal_error(&cm->error, VPX_CODEC_ERROR,
- "Incorrect buffer dimensions");
- } else {
- int *ref_fb_ptr = &ref_buf->idx;
-
- // Find an empty frame buffer.
- const int free_fb = get_free_fb(cm);
- if (cm->new_fb_idx == INVALID_IDX) {
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
- "Unable to find free frame buffer");
- return cm->error.error_code;
- }
-
- // Decrease ref_count since it will be increased again in
- // ref_cnt_fb() below.
- --frame_bufs[free_fb].ref_count;
-
- // Manage the reference counters and copy image.
- ref_cnt_fb(frame_bufs, ref_fb_ptr, free_fb);
- ref_buf->buf = &frame_bufs[*ref_fb_ptr].buf;
- vp8_yv12_copy_frame(sd, ref_buf->buf);
- }
-
- return cm->error.error_code;
-}
-
-/* If any buffer updating is signaled it should be done here. */
-static void swap_frame_buffers(VP9Decoder *pbi) {
- int ref_index = 0, mask;
- VP9_COMMON *const cm = &pbi->common;
- BufferPool *const pool = cm->buffer_pool;
- RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs;
-
- lock_buffer_pool(pool);
- for (mask = pbi->refresh_frame_flags; mask; mask >>= 1) {
- const int old_idx = cm->ref_frame_map[ref_index];
- // Current thread releases the holding of reference frame.
- decrease_ref_count(old_idx, frame_bufs, pool);
-
- // Release the reference frame in reference map.
- if (mask & 1) {
- decrease_ref_count(old_idx, frame_bufs, pool);
- }
- cm->ref_frame_map[ref_index] = cm->next_ref_frame_map[ref_index];
- ++ref_index;
- }
-
- // Current thread releases the holding of reference frame.
- for (; ref_index < REF_FRAMES && !cm->show_existing_frame; ++ref_index) {
- const int old_idx = cm->ref_frame_map[ref_index];
- decrease_ref_count(old_idx, frame_bufs, pool);
- cm->ref_frame_map[ref_index] = cm->next_ref_frame_map[ref_index];
- }
- unlock_buffer_pool(pool);
- pbi->hold_ref_buf = 0;
- cm->frame_to_show = get_frame_new_buffer(cm);
-
- if (!pbi->frame_parallel_decode || !cm->show_frame) {
- lock_buffer_pool(pool);
- --frame_bufs[cm->new_fb_idx].ref_count;
- unlock_buffer_pool(pool);
- }
-
- // Invalidate these references until the next frame starts.
- for (ref_index = 0; ref_index < 3; ref_index++)
- cm->frame_refs[ref_index].idx = -1;
-}
-
-int vp9_receive_compressed_data(VP9Decoder *pbi,
- size_t size, const uint8_t **psource) {
- VP9_COMMON *volatile const cm = &pbi->common;
- BufferPool *volatile const pool = cm->buffer_pool;
- RefCntBuffer *volatile const frame_bufs = cm->buffer_pool->frame_bufs;
- const uint8_t *source = *psource;
- int retcode = 0;
- cm->error.error_code = VPX_CODEC_OK;
-
- if (size == 0) {
- // This is used to signal that we are missing frames.
- // We do not know if the missing frame(s) was supposed to update
- // any of the reference buffers, but we act conservative and
- // mark only the last buffer as corrupted.
- //
- // TODO(jkoleszar): Error concealment is undefined and non-normative
- // at this point, but if it becomes so, [0] may not always be the correct
- // thing to do here.
- if (cm->frame_refs[0].idx > 0) {
- assert(cm->frame_refs[0].buf != NULL);
- cm->frame_refs[0].buf->corrupted = 1;
- }
- }
-
- pbi->ready_for_new_data = 0;
-
- // Check if the previous frame was a frame without any references to it.
- // Release frame buffer if not decoding in frame parallel mode.
- if (!pbi->frame_parallel_decode && cm->new_fb_idx >= 0
- && frame_bufs[cm->new_fb_idx].ref_count == 0)
- pool->release_fb_cb(pool->cb_priv,
- &frame_bufs[cm->new_fb_idx].raw_frame_buffer);
- // Find a free frame buffer. Return error if can not find any.
- cm->new_fb_idx = get_free_fb(cm);
- if (cm->new_fb_idx == INVALID_IDX) {
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
- "Unable to find free frame buffer");
- return cm->error.error_code;
- }
-
- // Assign a MV array to the frame buffer.
- cm->cur_frame = &pool->frame_bufs[cm->new_fb_idx];
-
- pbi->hold_ref_buf = 0;
- if (pbi->frame_parallel_decode) {
- VPxWorker *const worker = pbi->frame_worker_owner;
- vp9_frameworker_lock_stats(worker);
- frame_bufs[cm->new_fb_idx].frame_worker_owner = worker;
- // Reset decoding progress.
- pbi->cur_buf = &frame_bufs[cm->new_fb_idx];
- pbi->cur_buf->row = -1;
- pbi->cur_buf->col = -1;
- vp9_frameworker_unlock_stats(worker);
- } else {
- pbi->cur_buf = &frame_bufs[cm->new_fb_idx];
- }
-
-
- if (setjmp(cm->error.jmp)) {
- const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
- int i;
-
- cm->error.setjmp = 0;
- pbi->ready_for_new_data = 1;
-
- // Synchronize all threads immediately as a subsequent decode call may
- // cause a resize invalidating some allocations.
- winterface->sync(&pbi->lf_worker);
- for (i = 0; i < pbi->num_tile_workers; ++i) {
- winterface->sync(&pbi->tile_workers[i]);
- }
-
- lock_buffer_pool(pool);
- // Release all the reference buffers if worker thread is holding them.
- if (pbi->hold_ref_buf == 1) {
- int ref_index = 0, mask;
- for (mask = pbi->refresh_frame_flags; mask; mask >>= 1) {
- const int old_idx = cm->ref_frame_map[ref_index];
- // Current thread releases the holding of reference frame.
- decrease_ref_count(old_idx, frame_bufs, pool);
-
- // Release the reference frame in reference map.
- if (mask & 1) {
- decrease_ref_count(old_idx, frame_bufs, pool);
- }
- ++ref_index;
- }
-
- // Current thread releases the holding of reference frame.
- for (; ref_index < REF_FRAMES && !cm->show_existing_frame; ++ref_index) {
- const int old_idx = cm->ref_frame_map[ref_index];
- decrease_ref_count(old_idx, frame_bufs, pool);
- }
- pbi->hold_ref_buf = 0;
- }
- // Release current frame.
- decrease_ref_count(cm->new_fb_idx, frame_bufs, pool);
- unlock_buffer_pool(pool);
-
- vpx_clear_system_state();
- return -1;
- }
-
- cm->error.setjmp = 1;
- vp9_decode_frame(pbi, source, source + size, psource);
-
- swap_frame_buffers(pbi);
-
- vpx_clear_system_state();
-
- if (!cm->show_existing_frame) {
- cm->last_show_frame = cm->show_frame;
- cm->prev_frame = cm->cur_frame;
- if (cm->seg.enabled && !pbi->frame_parallel_decode)
- vp9_swap_current_and_last_seg_map(cm);
- }
-
- // Update progress in frame parallel decode.
- if (pbi->frame_parallel_decode) {
- // Need to lock the mutex here as another thread may
- // be accessing this buffer.
- VPxWorker *const worker = pbi->frame_worker_owner;
- FrameWorkerData *const frame_worker_data = worker->data1;
- vp9_frameworker_lock_stats(worker);
-
- if (cm->show_frame) {
- cm->current_video_frame++;
- }
- frame_worker_data->frame_decoded = 1;
- frame_worker_data->frame_context_ready = 1;
- vp9_frameworker_signal_stats(worker);
- vp9_frameworker_unlock_stats(worker);
- } else {
- cm->last_width = cm->width;
- cm->last_height = cm->height;
- if (cm->show_frame) {
- cm->current_video_frame++;
- }
- }
-
- cm->error.setjmp = 0;
- return retcode;
-}
-
-int vp9_get_raw_frame(VP9Decoder *pbi, YV12_BUFFER_CONFIG *sd,
- vp9_ppflags_t *flags) {
- VP9_COMMON *const cm = &pbi->common;
- int ret = -1;
-#if !CONFIG_VP9_POSTPROC
- (void)*flags;
-#endif
-
- if (pbi->ready_for_new_data == 1)
- return ret;
-
- pbi->ready_for_new_data = 1;
-
- /* no raw frame to show!!! */
- if (!cm->show_frame)
- return ret;
-
- pbi->ready_for_new_data = 1;
-
-#if CONFIG_VP9_POSTPROC
- if (!cm->show_existing_frame) {
- ret = vp9_post_proc_frame(cm, sd, flags);
- } else {
- *sd = *cm->frame_to_show;
- ret = 0;
- }
-#else
- *sd = *cm->frame_to_show;
- ret = 0;
-#endif /*!CONFIG_POSTPROC*/
- vpx_clear_system_state();
- return ret;
-}
-
-vpx_codec_err_t vp9_parse_superframe_index(const uint8_t *data,
- size_t data_sz,
- uint32_t sizes[8], int *count,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state) {
- // A chunk ending with a byte matching 0xc0 is an invalid chunk unless
- // it is a super frame index. If the last byte of real video compression
- // data is 0xc0 the encoder must add a 0 byte. If we have the marker but
- // not the associated matching marker byte at the front of the index we have
- // an invalid bitstream and need to return an error.
-
- uint8_t marker;
-
- assert(data_sz);
- marker = read_marker(decrypt_cb, decrypt_state, data + data_sz - 1);
- *count = 0;
-
- if ((marker & 0xe0) == 0xc0) {
- const uint32_t frames = (marker & 0x7) + 1;
- const uint32_t mag = ((marker >> 3) & 0x3) + 1;
- const size_t index_sz = 2 + mag * frames;
-
- // This chunk is marked as having a superframe index but doesn't have
- // enough data for it, thus it's an invalid superframe index.
- if (data_sz < index_sz)
- return VPX_CODEC_CORRUPT_FRAME;
-
- {
- const uint8_t marker2 = read_marker(decrypt_cb, decrypt_state,
- data + data_sz - index_sz);
-
- // This chunk is marked as having a superframe index but doesn't have
- // the matching marker byte at the front of the index therefore it's an
- // invalid chunk.
- if (marker != marker2)
- return VPX_CODEC_CORRUPT_FRAME;
- }
-
- {
- // Found a valid superframe index.
- uint32_t i, j;
- const uint8_t *x = &data[data_sz - index_sz + 1];
-
- // Frames has a maximum of 8 and mag has a maximum of 4.
- uint8_t clear_buffer[32];
- assert(sizeof(clear_buffer) >= frames * mag);
- if (decrypt_cb) {
- decrypt_cb(decrypt_state, x, clear_buffer, frames * mag);
- x = clear_buffer;
- }
-
- for (i = 0; i < frames; ++i) {
- uint32_t this_sz = 0;
-
- for (j = 0; j < mag; ++j)
- this_sz |= ((uint32_t)(*x++)) << (j * 8);
- sizes[i] = this_sz;
- }
- *count = frames;
- }
- }
- return VPX_CODEC_OK;
-}
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_decoder.h b/thirdparty/libvpx/vp9/decoder/vp9_decoder.h
deleted file mode 100644
index 7111a36d37..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_decoder.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_DECODER_VP9_DECODER_H_
-#define VP9_DECODER_VP9_DECODER_H_
-
-#include "./vpx_config.h"
-
-#include "vpx/vpx_codec.h"
-#include "vpx_dsp/bitreader.h"
-#include "vpx_scale/yv12config.h"
-#include "vpx_util/vpx_thread.h"
-
-#include "vp9/common/vp9_thread_common.h"
-#include "vp9/common/vp9_onyxc_int.h"
-#include "vp9/common/vp9_ppflags.h"
-#include "vp9/decoder/vp9_dthread.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct TileBuffer {
- const uint8_t *data;
- size_t size;
- int col; // only used with multi-threaded decoding
-} TileBuffer;
-
-typedef struct TileWorkerData {
- const uint8_t *data_end;
- int buf_start, buf_end; // pbi->tile_buffers to decode, inclusive
- vpx_reader bit_reader;
- FRAME_COUNTS counts;
- DECLARE_ALIGNED(16, MACROBLOCKD, xd);
- /* dqcoeff are shared by all the planes. So planes must be decoded serially */
- DECLARE_ALIGNED(16, tran_low_t, dqcoeff[32 * 32]);
- struct vpx_internal_error_info error_info;
-} TileWorkerData;
-
-typedef struct VP9Decoder {
- DECLARE_ALIGNED(16, MACROBLOCKD, mb);
-
- DECLARE_ALIGNED(16, VP9_COMMON, common);
-
- int ready_for_new_data;
-
- int refresh_frame_flags;
-
- int frame_parallel_decode; // frame-based threading.
-
- // TODO(hkuang): Combine this with cur_buf in macroblockd as they are
- // the same.
- RefCntBuffer *cur_buf; // Current decoding frame buffer.
-
- VPxWorker *frame_worker_owner; // frame_worker that owns this pbi.
- VPxWorker lf_worker;
- VPxWorker *tile_workers;
- TileWorkerData *tile_worker_data;
- TileBuffer tile_buffers[64];
- int num_tile_workers;
- int total_tiles;
-
- VP9LfSync lf_row_sync;
-
- vpx_decrypt_cb decrypt_cb;
- void *decrypt_state;
-
- int max_threads;
- int inv_tile_order;
- int need_resync; // wait for key/intra-only frame.
- int hold_ref_buf; // hold the reference buffer.
-} VP9Decoder;
-
-int vp9_receive_compressed_data(struct VP9Decoder *pbi,
- size_t size, const uint8_t **dest);
-
-int vp9_get_raw_frame(struct VP9Decoder *pbi, YV12_BUFFER_CONFIG *sd,
- vp9_ppflags_t *flags);
-
-vpx_codec_err_t vp9_copy_reference_dec(struct VP9Decoder *pbi,
- VP9_REFFRAME ref_frame_flag,
- YV12_BUFFER_CONFIG *sd);
-
-vpx_codec_err_t vp9_set_reference_dec(VP9_COMMON *cm,
- VP9_REFFRAME ref_frame_flag,
- YV12_BUFFER_CONFIG *sd);
-
-static INLINE uint8_t read_marker(vpx_decrypt_cb decrypt_cb,
- void *decrypt_state,
- const uint8_t *data) {
- if (decrypt_cb) {
- uint8_t marker;
- decrypt_cb(decrypt_state, data, &marker, 1);
- return marker;
- }
- return *data;
-}
-
-// This function is exposed for use in tests, as well as the inlined function
-// "read_marker".
-vpx_codec_err_t vp9_parse_superframe_index(const uint8_t *data,
- size_t data_sz,
- uint32_t sizes[8], int *count,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state);
-
-struct VP9Decoder *vp9_decoder_create(BufferPool *const pool);
-
-void vp9_decoder_remove(struct VP9Decoder *pbi);
-
-static INLINE void decrease_ref_count(int idx, RefCntBuffer *const frame_bufs,
- BufferPool *const pool) {
- if (idx >= 0 && frame_bufs[idx].ref_count > 0) {
- --frame_bufs[idx].ref_count;
- // A worker may only get a free framebuffer index when calling get_free_fb.
- // But the private buffer is not set up until finish decoding header.
- // So any error happens during decoding header, the frame_bufs will not
- // have valid priv buffer.
- if (frame_bufs[idx].ref_count == 0 &&
- frame_bufs[idx].raw_frame_buffer.priv) {
- pool->release_fb_cb(pool->cb_priv, &frame_bufs[idx].raw_frame_buffer);
- }
- }
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_DECODER_VP9_DECODER_H_
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_detokenize.c b/thirdparty/libvpx/vp9/decoder/vp9_detokenize.c
deleted file mode 100644
index 47dc107fe2..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_detokenize.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-
-#include "vp9/common/vp9_blockd.h"
-#include "vp9/common/vp9_common.h"
-#include "vp9/common/vp9_entropy.h"
-#if CONFIG_COEFFICIENT_RANGE_CHECKING
-#include "vp9/common/vp9_idct.h"
-#endif
-
-#include "vp9/decoder/vp9_detokenize.h"
-
-#define EOB_CONTEXT_NODE 0
-#define ZERO_CONTEXT_NODE 1
-#define ONE_CONTEXT_NODE 2
-
-#define INCREMENT_COUNT(token) \
- do { \
- if (counts) \
- ++coef_counts[band][ctx][token]; \
- } while (0)
-
-static INLINE int read_coeff(const vpx_prob *probs, int n, vpx_reader *r) {
- int i, val = 0;
- for (i = 0; i < n; ++i)
- val = (val << 1) | vpx_read(r, probs[i]);
- return val;
-}
-
-static int decode_coefs(const MACROBLOCKD *xd,
- PLANE_TYPE type,
- tran_low_t *dqcoeff, TX_SIZE tx_size, const int16_t *dq,
- int ctx, const int16_t *scan, const int16_t *nb,
- vpx_reader *r) {
- FRAME_COUNTS *counts = xd->counts;
- const int max_eob = 16 << (tx_size << 1);
- const FRAME_CONTEXT *const fc = xd->fc;
- const int ref = is_inter_block(xd->mi[0]);
- int band, c = 0;
- const vpx_prob (*coef_probs)[COEFF_CONTEXTS][UNCONSTRAINED_NODES] =
- fc->coef_probs[tx_size][type][ref];
- const vpx_prob *prob;
- unsigned int (*coef_counts)[COEFF_CONTEXTS][UNCONSTRAINED_NODES + 1];
- unsigned int (*eob_branch_count)[COEFF_CONTEXTS];
- uint8_t token_cache[32 * 32];
- const uint8_t *band_translate = get_band_translate(tx_size);
- const int dq_shift = (tx_size == TX_32X32);
- int v, token;
- int16_t dqv = dq[0];
- const uint8_t *const cat6_prob =
-#if CONFIG_VP9_HIGHBITDEPTH
- (xd->bd == VPX_BITS_12) ? vp9_cat6_prob_high12 :
- (xd->bd == VPX_BITS_10) ? vp9_cat6_prob_high12 + 2 :
-#endif // CONFIG_VP9_HIGHBITDEPTH
- vp9_cat6_prob;
- const int cat6_bits =
-#if CONFIG_VP9_HIGHBITDEPTH
- (xd->bd == VPX_BITS_12) ? 18 :
- (xd->bd == VPX_BITS_10) ? 16 :
-#endif // CONFIG_VP9_HIGHBITDEPTH
- 14;
-
- if (counts) {
- coef_counts = counts->coef[tx_size][type][ref];
- eob_branch_count = counts->eob_branch[tx_size][type][ref];
- }
-
- while (c < max_eob) {
- int val = -1;
- band = *band_translate++;
- prob = coef_probs[band][ctx];
- if (counts)
- ++eob_branch_count[band][ctx];
- if (!vpx_read(r, prob[EOB_CONTEXT_NODE])) {
- INCREMENT_COUNT(EOB_MODEL_TOKEN);
- break;
- }
-
- while (!vpx_read(r, prob[ZERO_CONTEXT_NODE])) {
- INCREMENT_COUNT(ZERO_TOKEN);
- dqv = dq[1];
- token_cache[scan[c]] = 0;
- ++c;
- if (c >= max_eob)
- return c; // zero tokens at the end (no eob token)
- ctx = get_coef_context(nb, token_cache, c);
- band = *band_translate++;
- prob = coef_probs[band][ctx];
- }
-
- if (!vpx_read(r, prob[ONE_CONTEXT_NODE])) {
- INCREMENT_COUNT(ONE_TOKEN);
- token = ONE_TOKEN;
- val = 1;
- } else {
- INCREMENT_COUNT(TWO_TOKEN);
- token = vpx_read_tree(r, vp9_coef_con_tree,
- vp9_pareto8_full[prob[PIVOT_NODE] - 1]);
- switch (token) {
- case TWO_TOKEN:
- case THREE_TOKEN:
- case FOUR_TOKEN:
- val = token;
- break;
- case CATEGORY1_TOKEN:
- val = CAT1_MIN_VAL + read_coeff(vp9_cat1_prob, 1, r);
- break;
- case CATEGORY2_TOKEN:
- val = CAT2_MIN_VAL + read_coeff(vp9_cat2_prob, 2, r);
- break;
- case CATEGORY3_TOKEN:
- val = CAT3_MIN_VAL + read_coeff(vp9_cat3_prob, 3, r);
- break;
- case CATEGORY4_TOKEN:
- val = CAT4_MIN_VAL + read_coeff(vp9_cat4_prob, 4, r);
- break;
- case CATEGORY5_TOKEN:
- val = CAT5_MIN_VAL + read_coeff(vp9_cat5_prob, 5, r);
- break;
- case CATEGORY6_TOKEN:
- val = CAT6_MIN_VAL + read_coeff(cat6_prob, cat6_bits, r);
- break;
- }
- }
- v = (val * dqv) >> dq_shift;
-#if CONFIG_COEFFICIENT_RANGE_CHECKING
-#if CONFIG_VP9_HIGHBITDEPTH
- dqcoeff[scan[c]] = highbd_check_range((vpx_read_bit(r) ? -v : v),
- xd->bd);
-#else
- dqcoeff[scan[c]] = check_range(vpx_read_bit(r) ? -v : v);
-#endif // CONFIG_VP9_HIGHBITDEPTH
-#else
- dqcoeff[scan[c]] = vpx_read_bit(r) ? -v : v;
-#endif // CONFIG_COEFFICIENT_RANGE_CHECKING
- token_cache[scan[c]] = vp9_pt_energy_class[token];
- ++c;
- ctx = get_coef_context(nb, token_cache, c);
- dqv = dq[1];
- }
-
- return c;
-}
-
-static void get_ctx_shift(MACROBLOCKD *xd, int *ctx_shift_a, int *ctx_shift_l,
- int x, int y, unsigned int tx_size_in_blocks) {
- if (xd->max_blocks_wide) {
- if (tx_size_in_blocks + x > xd->max_blocks_wide)
- *ctx_shift_a = (tx_size_in_blocks - (xd->max_blocks_wide - x)) * 8;
- }
- if (xd->max_blocks_high) {
- if (tx_size_in_blocks + y > xd->max_blocks_high)
- *ctx_shift_l = (tx_size_in_blocks - (xd->max_blocks_high - y)) * 8;
- }
-}
-
-int vp9_decode_block_tokens(MACROBLOCKD *xd, int plane, const scan_order *sc,
- int x, int y, TX_SIZE tx_size, vpx_reader *r,
- int seg_id) {
- struct macroblockd_plane *const pd = &xd->plane[plane];
- const int16_t *const dequant = pd->seg_dequant[seg_id];
- int eob;
- ENTROPY_CONTEXT *a = pd->above_context + x;
- ENTROPY_CONTEXT *l = pd->left_context + y;
- int ctx;
- int ctx_shift_a = 0;
- int ctx_shift_l = 0;
-
- switch (tx_size) {
- case TX_4X4:
- ctx = a[0] != 0;
- ctx += l[0] != 0;
- eob = decode_coefs(xd, get_plane_type(plane), pd->dqcoeff, tx_size,
- dequant, ctx, sc->scan, sc->neighbors, r);
- a[0] = l[0] = (eob > 0);
- break;
- case TX_8X8:
- get_ctx_shift(xd, &ctx_shift_a, &ctx_shift_l, x, y, 1 << TX_8X8);
- ctx = !!*(const uint16_t *)a;
- ctx += !!*(const uint16_t *)l;
- eob = decode_coefs(xd, get_plane_type(plane), pd->dqcoeff, tx_size,
- dequant, ctx, sc->scan, sc->neighbors, r);
- *(uint16_t *)a = ((eob > 0) * 0x0101) >> ctx_shift_a;
- *(uint16_t *)l = ((eob > 0) * 0x0101) >> ctx_shift_l;
- break;
- case TX_16X16:
- get_ctx_shift(xd, &ctx_shift_a, &ctx_shift_l, x, y, 1 << TX_16X16);
- ctx = !!*(const uint32_t *)a;
- ctx += !!*(const uint32_t *)l;
- eob = decode_coefs(xd, get_plane_type(plane), pd->dqcoeff, tx_size,
- dequant, ctx, sc->scan, sc->neighbors, r);
- *(uint32_t *)a = ((eob > 0) * 0x01010101) >> ctx_shift_a;
- *(uint32_t *)l = ((eob > 0) * 0x01010101) >> ctx_shift_l;
- break;
- case TX_32X32:
- get_ctx_shift(xd, &ctx_shift_a, &ctx_shift_l, x, y, 1 << TX_32X32);
- // NOTE: casting to uint64_t here is safe because the default memory
- // alignment is at least 8 bytes and the TX_32X32 is aligned on 8 byte
- // boundaries.
- ctx = !!*(const uint64_t *)a;
- ctx += !!*(const uint64_t *)l;
- eob = decode_coefs(xd, get_plane_type(plane), pd->dqcoeff, tx_size,
- dequant, ctx, sc->scan, sc->neighbors, r);
- *(uint64_t *)a = ((eob > 0) * 0x0101010101010101ULL) >> ctx_shift_a;
- *(uint64_t *)l = ((eob > 0) * 0x0101010101010101ULL) >> ctx_shift_l;
- break;
- default:
- assert(0 && "Invalid transform size.");
- eob = 0;
- break;
- }
-
- return eob;
-}
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_detokenize.h b/thirdparty/libvpx/vp9/decoder/vp9_detokenize.h
deleted file mode 100644
index d242d4466e..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_detokenize.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP9_DECODER_VP9_DETOKENIZE_H_
-#define VP9_DECODER_VP9_DETOKENIZE_H_
-
-#include "vpx_dsp/bitreader.h"
-#include "vp9/decoder/vp9_decoder.h"
-#include "vp9/common/vp9_scan.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int vp9_decode_block_tokens(MACROBLOCKD *xd,
- int plane, const scan_order *sc,
- int x, int y,
- TX_SIZE tx_size, vpx_reader *r,
- int seg_id);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_DECODER_VP9_DETOKENIZE_H_
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_dsubexp.c b/thirdparty/libvpx/vp9/decoder/vp9_dsubexp.c
deleted file mode 100644
index 05b38538ae..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_dsubexp.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "vp9/common/vp9_entropy.h"
-
-#include "vp9/decoder/vp9_dsubexp.h"
-
-static int inv_recenter_nonneg(int v, int m) {
- if (v > 2 * m)
- return v;
-
- return (v & 1) ? m - ((v + 1) >> 1) : m + (v >> 1);
-}
-
-static int decode_uniform(vpx_reader *r) {
- const int l = 8;
- const int m = (1 << l) - 191;
- const int v = vpx_read_literal(r, l - 1);
- return v < m ? v : (v << 1) - m + vpx_read_bit(r);
-}
-
-static int inv_remap_prob(int v, int m) {
- static uint8_t inv_map_table[MAX_PROB] = {
- 7, 20, 33, 46, 59, 72, 85, 98, 111, 124, 137, 150, 163, 176, 189,
- 202, 215, 228, 241, 254, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 253
- };
- assert(v < (int)(sizeof(inv_map_table) / sizeof(inv_map_table[0])));
- v = inv_map_table[v];
- m--;
- if ((m << 1) <= MAX_PROB) {
- return 1 + inv_recenter_nonneg(v, m);
- } else {
- return MAX_PROB - inv_recenter_nonneg(v, MAX_PROB - 1 - m);
- }
-}
-
-static int decode_term_subexp(vpx_reader *r) {
- if (!vpx_read_bit(r))
- return vpx_read_literal(r, 4);
- if (!vpx_read_bit(r))
- return vpx_read_literal(r, 4) + 16;
- if (!vpx_read_bit(r))
- return vpx_read_literal(r, 5) + 32;
- return decode_uniform(r) + 64;
-}
-
-void vp9_diff_update_prob(vpx_reader *r, vpx_prob* p) {
- if (vpx_read(r, DIFF_UPDATE_PROB)) {
- const int delp = decode_term_subexp(r);
- *p = (vpx_prob)inv_remap_prob(delp, *p);
- }
-}
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_dsubexp.h b/thirdparty/libvpx/vp9/decoder/vp9_dsubexp.h
deleted file mode 100644
index a8bcc70be9..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_dsubexp.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VP9_DECODER_VP9_DSUBEXP_H_
-#define VP9_DECODER_VP9_DSUBEXP_H_
-
-#include "vpx_dsp/bitreader.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp9_diff_update_prob(vpx_reader *r, vpx_prob* p);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_DECODER_VP9_DSUBEXP_H_
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_dthread.c b/thirdparty/libvpx/vp9/decoder/vp9_dthread.c
deleted file mode 100644
index 14a71448fe..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_dthread.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_config.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vp9/common/vp9_reconinter.h"
-#include "vp9/decoder/vp9_dthread.h"
-#include "vp9/decoder/vp9_decoder.h"
-
-// #define DEBUG_THREAD
-
-// TODO(hkuang): Clean up all the #ifdef in this file.
-void vp9_frameworker_lock_stats(VPxWorker *const worker) {
-#if CONFIG_MULTITHREAD
- FrameWorkerData *const worker_data = worker->data1;
- pthread_mutex_lock(&worker_data->stats_mutex);
-#else
- (void)worker;
-#endif
-}
-
-void vp9_frameworker_unlock_stats(VPxWorker *const worker) {
-#if CONFIG_MULTITHREAD
- FrameWorkerData *const worker_data = worker->data1;
- pthread_mutex_unlock(&worker_data->stats_mutex);
-#else
- (void)worker;
-#endif
-}
-
-void vp9_frameworker_signal_stats(VPxWorker *const worker) {
-#if CONFIG_MULTITHREAD
- FrameWorkerData *const worker_data = worker->data1;
-
-// TODO(hkuang): Fix the pthread_cond_broadcast in windows wrapper.
-#if defined(_WIN32) && !HAVE_PTHREAD_H
- pthread_cond_signal(&worker_data->stats_cond);
-#else
- pthread_cond_broadcast(&worker_data->stats_cond);
-#endif
-
-#else
- (void)worker;
-#endif
-}
-
-// This macro prevents thread_sanitizer from reporting known concurrent writes.
-#if defined(__has_feature)
-#if __has_feature(thread_sanitizer)
-#define BUILDING_WITH_TSAN
-#endif
-#endif
-
-// TODO(hkuang): Remove worker parameter as it is only used in debug code.
-void vp9_frameworker_wait(VPxWorker *const worker, RefCntBuffer *const ref_buf,
- int row) {
-#if CONFIG_MULTITHREAD
- if (!ref_buf)
- return;
-
-#ifndef BUILDING_WITH_TSAN
- // The following line of code will get harmless tsan error but it is the key
- // to get best performance.
- if (ref_buf->row >= row && ref_buf->buf.corrupted != 1) return;
-#endif
-
- {
- // Find the worker thread that owns the reference frame. If the reference
- // frame has been fully decoded, it may not have owner.
- VPxWorker *const ref_worker = ref_buf->frame_worker_owner;
- FrameWorkerData *const ref_worker_data =
- (FrameWorkerData *)ref_worker->data1;
- const VP9Decoder *const pbi = ref_worker_data->pbi;
-
-#ifdef DEBUG_THREAD
- {
- FrameWorkerData *const worker_data = (FrameWorkerData *)worker->data1;
- printf("%d %p worker is waiting for %d %p worker (%d) ref %d \r\n",
- worker_data->worker_id, worker, ref_worker_data->worker_id,
- ref_buf->frame_worker_owner, row, ref_buf->row);
- }
-#endif
-
- vp9_frameworker_lock_stats(ref_worker);
- while (ref_buf->row < row && pbi->cur_buf == ref_buf &&
- ref_buf->buf.corrupted != 1) {
- pthread_cond_wait(&ref_worker_data->stats_cond,
- &ref_worker_data->stats_mutex);
- }
-
- if (ref_buf->buf.corrupted == 1) {
- FrameWorkerData *const worker_data = (FrameWorkerData *)worker->data1;
- vp9_frameworker_unlock_stats(ref_worker);
- vpx_internal_error(&worker_data->pbi->common.error,
- VPX_CODEC_CORRUPT_FRAME,
- "Worker %p failed to decode frame", worker);
- }
- vp9_frameworker_unlock_stats(ref_worker);
- }
-#else
- (void)worker;
- (void)ref_buf;
- (void)row;
- (void)ref_buf;
-#endif // CONFIG_MULTITHREAD
-}
-
-void vp9_frameworker_broadcast(RefCntBuffer *const buf, int row) {
-#if CONFIG_MULTITHREAD
- VPxWorker *worker = buf->frame_worker_owner;
-
-#ifdef DEBUG_THREAD
- {
- FrameWorkerData *const worker_data = (FrameWorkerData *)worker->data1;
- printf("%d %p worker decode to (%d) \r\n", worker_data->worker_id,
- buf->frame_worker_owner, row);
- }
-#endif
-
- vp9_frameworker_lock_stats(worker);
- buf->row = row;
- vp9_frameworker_signal_stats(worker);
- vp9_frameworker_unlock_stats(worker);
-#else
- (void)buf;
- (void)row;
-#endif // CONFIG_MULTITHREAD
-}
-
-void vp9_frameworker_copy_context(VPxWorker *const dst_worker,
- VPxWorker *const src_worker) {
-#if CONFIG_MULTITHREAD
- FrameWorkerData *const src_worker_data = (FrameWorkerData *)src_worker->data1;
- FrameWorkerData *const dst_worker_data = (FrameWorkerData *)dst_worker->data1;
- VP9_COMMON *const src_cm = &src_worker_data->pbi->common;
- VP9_COMMON *const dst_cm = &dst_worker_data->pbi->common;
- int i;
-
- // Wait until source frame's context is ready.
- vp9_frameworker_lock_stats(src_worker);
- while (!src_worker_data->frame_context_ready) {
- pthread_cond_wait(&src_worker_data->stats_cond,
- &src_worker_data->stats_mutex);
- }
-
- dst_cm->last_frame_seg_map = src_cm->seg.enabled ?
- src_cm->current_frame_seg_map : src_cm->last_frame_seg_map;
- dst_worker_data->pbi->need_resync = src_worker_data->pbi->need_resync;
- vp9_frameworker_unlock_stats(src_worker);
-
- dst_cm->bit_depth = src_cm->bit_depth;
-#if CONFIG_VP9_HIGHBITDEPTH
- dst_cm->use_highbitdepth = src_cm->use_highbitdepth;
-#endif
- dst_cm->prev_frame = src_cm->show_existing_frame ?
- src_cm->prev_frame : src_cm->cur_frame;
- dst_cm->last_width = !src_cm->show_existing_frame ?
- src_cm->width : src_cm->last_width;
- dst_cm->last_height = !src_cm->show_existing_frame ?
- src_cm->height : src_cm->last_height;
- dst_cm->subsampling_x = src_cm->subsampling_x;
- dst_cm->subsampling_y = src_cm->subsampling_y;
- dst_cm->frame_type = src_cm->frame_type;
- dst_cm->last_show_frame = !src_cm->show_existing_frame ?
- src_cm->show_frame : src_cm->last_show_frame;
- for (i = 0; i < REF_FRAMES; ++i)
- dst_cm->ref_frame_map[i] = src_cm->next_ref_frame_map[i];
-
- memcpy(dst_cm->lf_info.lfthr, src_cm->lf_info.lfthr,
- (MAX_LOOP_FILTER + 1) * sizeof(loop_filter_thresh));
- dst_cm->lf.last_sharpness_level = src_cm->lf.sharpness_level;
- dst_cm->lf.filter_level = src_cm->lf.filter_level;
- memcpy(dst_cm->lf.ref_deltas, src_cm->lf.ref_deltas, MAX_REF_LF_DELTAS);
- memcpy(dst_cm->lf.mode_deltas, src_cm->lf.mode_deltas, MAX_MODE_LF_DELTAS);
- dst_cm->seg = src_cm->seg;
- memcpy(dst_cm->frame_contexts, src_cm->frame_contexts,
- FRAME_CONTEXTS * sizeof(dst_cm->frame_contexts[0]));
-#else
- (void) dst_worker;
- (void) src_worker;
-#endif // CONFIG_MULTITHREAD
-}
diff --git a/thirdparty/libvpx/vp9/decoder/vp9_dthread.h b/thirdparty/libvpx/vp9/decoder/vp9_dthread.h
deleted file mode 100644
index ba7c38a511..0000000000
--- a/thirdparty/libvpx/vp9/decoder/vp9_dthread.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_DECODER_VP9_DTHREAD_H_
-#define VP9_DECODER_VP9_DTHREAD_H_
-
-#include "./vpx_config.h"
-#include "vpx_util/vpx_thread.h"
-#include "vpx/internal/vpx_codec_internal.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct VP9Common;
-struct VP9Decoder;
-
-// WorkerData for the FrameWorker thread. It contains all the information of
-// the worker and decode structures for decoding a frame.
-typedef struct FrameWorkerData {
- struct VP9Decoder *pbi;
- const uint8_t *data;
- const uint8_t *data_end;
- size_t data_size;
- void *user_priv;
- int result;
- int worker_id;
- int received_frame;
-
- // scratch_buffer is used in frame parallel mode only.
- // It is used to make a copy of the compressed data.
- uint8_t *scratch_buffer;
- size_t scratch_buffer_size;
-
-#if CONFIG_MULTITHREAD
- pthread_mutex_t stats_mutex;
- pthread_cond_t stats_cond;
-#endif
-
- int frame_context_ready; // Current frame's context is ready to read.
- int frame_decoded; // Finished decoding current frame.
-} FrameWorkerData;
-
-void vp9_frameworker_lock_stats(VPxWorker *const worker);
-void vp9_frameworker_unlock_stats(VPxWorker *const worker);
-void vp9_frameworker_signal_stats(VPxWorker *const worker);
-
-// Wait until ref_buf has been decoded to row in real pixel unit.
-// Note: worker may already finish decoding ref_buf and release it in order to
-// start decoding next frame. So need to check whether worker is still decoding
-// ref_buf.
-void vp9_frameworker_wait(VPxWorker *const worker, RefCntBuffer *const ref_buf,
- int row);
-
-// FrameWorker broadcasts its decoding progress so other workers that are
-// waiting on it can resume decoding.
-void vp9_frameworker_broadcast(RefCntBuffer *const buf, int row);
-
-// Copy necessary decoding context from src worker to dst worker.
-void vp9_frameworker_copy_context(VPxWorker *const dst_worker,
- VPxWorker *const src_worker);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VP9_DECODER_VP9_DTHREAD_H_
diff --git a/thirdparty/libvpx/vp9/vp9_dx_iface.c b/thirdparty/libvpx/vp9/vp9_dx_iface.c
deleted file mode 100644
index 6531e2c618..0000000000
--- a/thirdparty/libvpx/vp9/vp9_dx_iface.c
+++ /dev/null
@@ -1,1093 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "./vpx_config.h"
-#include "./vpx_version.h"
-
-#include "vpx/internal/vpx_codec_internal.h"
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_decoder.h"
-#include "vpx_dsp/bitreader_buffer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_util/vpx_thread.h"
-
-#include "vp9/common/vp9_alloccommon.h"
-#include "vp9/common/vp9_frame_buffers.h"
-
-#include "vp9/decoder/vp9_decodeframe.h"
-
-#include "vp9/vp9_dx_iface.h"
-#include "vp9/vp9_iface_common.h"
-
-#define VP9_CAP_POSTPROC (CONFIG_VP9_POSTPROC ? VPX_CODEC_CAP_POSTPROC : 0)
-
-static vpx_codec_err_t decoder_init(vpx_codec_ctx_t *ctx,
- vpx_codec_priv_enc_mr_cfg_t *data) {
- // This function only allocates space for the vpx_codec_alg_priv_t
- // structure. More memory may be required at the time the stream
- // information becomes known.
- (void)data;
-
- if (!ctx->priv) {
- vpx_codec_alg_priv_t *const priv =
- (vpx_codec_alg_priv_t *)vpx_calloc(1, sizeof(*priv));
- if (priv == NULL)
- return VPX_CODEC_MEM_ERROR;
-
- ctx->priv = (vpx_codec_priv_t *)priv;
- ctx->priv->init_flags = ctx->init_flags;
- priv->si.sz = sizeof(priv->si);
- priv->flushed = 0;
- // Only do frame parallel decode when threads > 1.
- priv->frame_parallel_decode =
- (ctx->config.dec && (ctx->config.dec->threads > 1) &&
- (ctx->init_flags & VPX_CODEC_USE_FRAME_THREADING)) ? 1 : 0;
- if (ctx->config.dec) {
- priv->cfg = *ctx->config.dec;
- ctx->config.dec = &priv->cfg;
- }
- }
-
- return VPX_CODEC_OK;
-}
-
-static vpx_codec_err_t decoder_destroy(vpx_codec_alg_priv_t *ctx) {
- if (ctx->frame_workers != NULL) {
- int i;
- for (i = 0; i < ctx->num_frame_workers; ++i) {
- VPxWorker *const worker = &ctx->frame_workers[i];
- FrameWorkerData *const frame_worker_data =
- (FrameWorkerData *)worker->data1;
- vpx_get_worker_interface()->end(worker);
- vp9_remove_common(&frame_worker_data->pbi->common);
-#if CONFIG_VP9_POSTPROC
- vp9_free_postproc_buffers(&frame_worker_data->pbi->common);
-#endif
- vp9_decoder_remove(frame_worker_data->pbi);
- vpx_free(frame_worker_data->scratch_buffer);
-#if CONFIG_MULTITHREAD
- pthread_mutex_destroy(&frame_worker_data->stats_mutex);
- pthread_cond_destroy(&frame_worker_data->stats_cond);
-#endif
- vpx_free(frame_worker_data);
- }
-#if CONFIG_MULTITHREAD
- pthread_mutex_destroy(&ctx->buffer_pool->pool_mutex);
-#endif
- }
-
- if (ctx->buffer_pool) {
- vp9_free_ref_frame_buffers(ctx->buffer_pool);
- vp9_free_internal_frame_buffers(&ctx->buffer_pool->int_frame_buffers);
- }
-
- vpx_free(ctx->frame_workers);
- vpx_free(ctx->buffer_pool);
- vpx_free(ctx);
- return VPX_CODEC_OK;
-}
-
-static int parse_bitdepth_colorspace_sampling(
- BITSTREAM_PROFILE profile, struct vpx_read_bit_buffer *rb) {
- vpx_color_space_t color_space;
- if (profile >= PROFILE_2)
- rb->bit_offset += 1; // Bit-depth 10 or 12.
- color_space = (vpx_color_space_t)vpx_rb_read_literal(rb, 3);
- if (color_space != VPX_CS_SRGB) {
- rb->bit_offset += 1; // [16,235] (including xvycc) vs [0,255] range.
- if (profile == PROFILE_1 || profile == PROFILE_3) {
- rb->bit_offset += 2; // subsampling x/y.
- rb->bit_offset += 1; // unused.
- }
- } else {
- if (profile == PROFILE_1 || profile == PROFILE_3) {
- rb->bit_offset += 1; // unused
- } else {
- // RGB is only available in version 1.
- return 0;
- }
- }
- return 1;
-}
-
-static vpx_codec_err_t decoder_peek_si_internal(const uint8_t *data,
- unsigned int data_sz,
- vpx_codec_stream_info_t *si,
- int *is_intra_only,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state) {
- int intra_only_flag = 0;
- uint8_t clear_buffer[10];
-
- if (data + data_sz <= data)
- return VPX_CODEC_INVALID_PARAM;
-
- si->is_kf = 0;
- si->w = si->h = 0;
-
- if (decrypt_cb) {
- data_sz = VPXMIN(sizeof(clear_buffer), data_sz);
- decrypt_cb(decrypt_state, data, clear_buffer, data_sz);
- data = clear_buffer;
- }
-
- // A maximum of 6 bits are needed to read the frame marker, profile and
- // show_existing_frame.
- if (data_sz < 1)
- return VPX_CODEC_UNSUP_BITSTREAM;
-
- {
- int show_frame;
- int error_resilient;
- struct vpx_read_bit_buffer rb = { data, data + data_sz, 0, NULL, NULL };
- const int frame_marker = vpx_rb_read_literal(&rb, 2);
- const BITSTREAM_PROFILE profile = vp9_read_profile(&rb);
-
- if (frame_marker != VP9_FRAME_MARKER)
- return VPX_CODEC_UNSUP_BITSTREAM;
-
- if (profile >= MAX_PROFILES)
- return VPX_CODEC_UNSUP_BITSTREAM;
-
- if (vpx_rb_read_bit(&rb)) { // show an existing frame
- // If profile is > 2 and show_existing_frame is true, then at least 1 more
- // byte (6+3=9 bits) is needed.
- if (profile > 2 && data_sz < 2)
- return VPX_CODEC_UNSUP_BITSTREAM;
- vpx_rb_read_literal(&rb, 3); // Frame buffer to show.
- return VPX_CODEC_OK;
- }
-
- // For the rest of the function, a maximum of 9 more bytes are needed
- // (computed by taking the maximum possible bits needed in each case). Note
- // that this has to be updated if we read any more bits in this function.
- if (data_sz < 10)
- return VPX_CODEC_UNSUP_BITSTREAM;
-
- si->is_kf = !vpx_rb_read_bit(&rb);
- show_frame = vpx_rb_read_bit(&rb);
- error_resilient = vpx_rb_read_bit(&rb);
-
- if (si->is_kf) {
- if (!vp9_read_sync_code(&rb))
- return VPX_CODEC_UNSUP_BITSTREAM;
-
- if (!parse_bitdepth_colorspace_sampling(profile, &rb))
- return VPX_CODEC_UNSUP_BITSTREAM;
- vp9_read_frame_size(&rb, (int *)&si->w, (int *)&si->h);
- } else {
- intra_only_flag = show_frame ? 0 : vpx_rb_read_bit(&rb);
-
- rb.bit_offset += error_resilient ? 0 : 2; // reset_frame_context
-
- if (intra_only_flag) {
- if (!vp9_read_sync_code(&rb))
- return VPX_CODEC_UNSUP_BITSTREAM;
- if (profile > PROFILE_0) {
- if (!parse_bitdepth_colorspace_sampling(profile, &rb))
- return VPX_CODEC_UNSUP_BITSTREAM;
- }
- rb.bit_offset += REF_FRAMES; // refresh_frame_flags
- vp9_read_frame_size(&rb, (int *)&si->w, (int *)&si->h);
- }
- }
- }
- if (is_intra_only != NULL)
- *is_intra_only = intra_only_flag;
- return VPX_CODEC_OK;
-}
-
-static vpx_codec_err_t decoder_peek_si(const uint8_t *data,
- unsigned int data_sz,
- vpx_codec_stream_info_t *si) {
- return decoder_peek_si_internal(data, data_sz, si, NULL, NULL, NULL);
-}
-
-static vpx_codec_err_t decoder_get_si(vpx_codec_alg_priv_t *ctx,
- vpx_codec_stream_info_t *si) {
- const size_t sz = (si->sz >= sizeof(vp9_stream_info_t))
- ? sizeof(vp9_stream_info_t)
- : sizeof(vpx_codec_stream_info_t);
- memcpy(si, &ctx->si, sz);
- si->sz = (unsigned int)sz;
-
- return VPX_CODEC_OK;
-}
-
-static void set_error_detail(vpx_codec_alg_priv_t *ctx,
- const char *const error) {
- ctx->base.err_detail = error;
-}
-
-static vpx_codec_err_t update_error_state(vpx_codec_alg_priv_t *ctx,
- const struct vpx_internal_error_info *error) {
- if (error->error_code)
- set_error_detail(ctx, error->has_detail ? error->detail : NULL);
-
- return error->error_code;
-}
-
-static void init_buffer_callbacks(vpx_codec_alg_priv_t *ctx) {
- int i;
-
- for (i = 0; i < ctx->num_frame_workers; ++i) {
- VPxWorker *const worker = &ctx->frame_workers[i];
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)worker->data1;
- VP9_COMMON *const cm = &frame_worker_data->pbi->common;
- BufferPool *const pool = cm->buffer_pool;
-
- cm->new_fb_idx = INVALID_IDX;
- cm->byte_alignment = ctx->byte_alignment;
- cm->skip_loop_filter = ctx->skip_loop_filter;
-
- if (ctx->get_ext_fb_cb != NULL && ctx->release_ext_fb_cb != NULL) {
- pool->get_fb_cb = ctx->get_ext_fb_cb;
- pool->release_fb_cb = ctx->release_ext_fb_cb;
- pool->cb_priv = ctx->ext_priv;
- } else {
- pool->get_fb_cb = vp9_get_frame_buffer;
- pool->release_fb_cb = vp9_release_frame_buffer;
-
- if (vp9_alloc_internal_frame_buffers(&pool->int_frame_buffers))
- vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
- "Failed to initialize internal frame buffers");
-
- pool->cb_priv = &pool->int_frame_buffers;
- }
- }
-}
-
-static void set_default_ppflags(vp8_postproc_cfg_t *cfg) {
- cfg->post_proc_flag = VP8_DEBLOCK | VP8_DEMACROBLOCK;
- cfg->deblocking_level = 4;
- cfg->noise_level = 0;
-}
-
-static void set_ppflags(const vpx_codec_alg_priv_t *ctx,
- vp9_ppflags_t *flags) {
- flags->post_proc_flag =
- ctx->postproc_cfg.post_proc_flag;
-
- flags->deblocking_level = ctx->postproc_cfg.deblocking_level;
- flags->noise_level = ctx->postproc_cfg.noise_level;
-}
-
-static int frame_worker_hook(void *arg1, void *arg2) {
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)arg1;
- const uint8_t *data = frame_worker_data->data;
- (void)arg2;
-
- frame_worker_data->result =
- vp9_receive_compressed_data(frame_worker_data->pbi,
- frame_worker_data->data_size,
- &data);
- frame_worker_data->data_end = data;
-
- if (frame_worker_data->pbi->frame_parallel_decode) {
- // In frame parallel decoding, a worker thread must successfully decode all
- // the compressed data.
- if (frame_worker_data->result != 0 ||
- frame_worker_data->data + frame_worker_data->data_size - 1 > data) {
- VPxWorker *const worker = frame_worker_data->pbi->frame_worker_owner;
- BufferPool *const pool = frame_worker_data->pbi->common.buffer_pool;
- // Signal all the other threads that are waiting for this frame.
- vp9_frameworker_lock_stats(worker);
- frame_worker_data->frame_context_ready = 1;
- lock_buffer_pool(pool);
- frame_worker_data->pbi->cur_buf->buf.corrupted = 1;
- unlock_buffer_pool(pool);
- frame_worker_data->pbi->need_resync = 1;
- vp9_frameworker_signal_stats(worker);
- vp9_frameworker_unlock_stats(worker);
- return 0;
- }
- } else if (frame_worker_data->result != 0) {
- // Check decode result in serial decode.
- frame_worker_data->pbi->cur_buf->buf.corrupted = 1;
- frame_worker_data->pbi->need_resync = 1;
- }
- return !frame_worker_data->result;
-}
-
-static vpx_codec_err_t init_decoder(vpx_codec_alg_priv_t *ctx) {
- int i;
- const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
-
- ctx->last_show_frame = -1;
- ctx->next_submit_worker_id = 0;
- ctx->last_submit_worker_id = 0;
- ctx->next_output_worker_id = 0;
- ctx->frame_cache_read = 0;
- ctx->frame_cache_write = 0;
- ctx->num_cache_frames = 0;
- ctx->need_resync = 1;
- ctx->num_frame_workers =
- (ctx->frame_parallel_decode == 1) ? ctx->cfg.threads: 1;
- if (ctx->num_frame_workers > MAX_DECODE_THREADS)
- ctx->num_frame_workers = MAX_DECODE_THREADS;
- ctx->available_threads = ctx->num_frame_workers;
- ctx->flushed = 0;
-
- ctx->buffer_pool = (BufferPool *)vpx_calloc(1, sizeof(BufferPool));
- if (ctx->buffer_pool == NULL)
- return VPX_CODEC_MEM_ERROR;
-
-#if CONFIG_MULTITHREAD
- if (pthread_mutex_init(&ctx->buffer_pool->pool_mutex, NULL)) {
- set_error_detail(ctx, "Failed to allocate buffer pool mutex");
- return VPX_CODEC_MEM_ERROR;
- }
-#endif
-
- ctx->frame_workers = (VPxWorker *)
- vpx_malloc(ctx->num_frame_workers * sizeof(*ctx->frame_workers));
- if (ctx->frame_workers == NULL) {
- set_error_detail(ctx, "Failed to allocate frame_workers");
- return VPX_CODEC_MEM_ERROR;
- }
-
- for (i = 0; i < ctx->num_frame_workers; ++i) {
- VPxWorker *const worker = &ctx->frame_workers[i];
- FrameWorkerData *frame_worker_data = NULL;
- winterface->init(worker);
- worker->data1 = vpx_memalign(32, sizeof(FrameWorkerData));
- if (worker->data1 == NULL) {
- set_error_detail(ctx, "Failed to allocate frame_worker_data");
- return VPX_CODEC_MEM_ERROR;
- }
- frame_worker_data = (FrameWorkerData *)worker->data1;
- frame_worker_data->pbi = vp9_decoder_create(ctx->buffer_pool);
- if (frame_worker_data->pbi == NULL) {
- set_error_detail(ctx, "Failed to allocate frame_worker_data");
- return VPX_CODEC_MEM_ERROR;
- }
- frame_worker_data->pbi->frame_worker_owner = worker;
- frame_worker_data->worker_id = i;
- frame_worker_data->scratch_buffer = NULL;
- frame_worker_data->scratch_buffer_size = 0;
- frame_worker_data->frame_context_ready = 0;
- frame_worker_data->received_frame = 0;
-#if CONFIG_MULTITHREAD
- if (pthread_mutex_init(&frame_worker_data->stats_mutex, NULL)) {
- set_error_detail(ctx, "Failed to allocate frame_worker_data mutex");
- return VPX_CODEC_MEM_ERROR;
- }
-
- if (pthread_cond_init(&frame_worker_data->stats_cond, NULL)) {
- set_error_detail(ctx, "Failed to allocate frame_worker_data cond");
- return VPX_CODEC_MEM_ERROR;
- }
-#endif
- // If decoding in serial mode, FrameWorker thread could create tile worker
- // thread or loopfilter thread.
- frame_worker_data->pbi->max_threads =
- (ctx->frame_parallel_decode == 0) ? ctx->cfg.threads : 0;
-
- frame_worker_data->pbi->inv_tile_order = ctx->invert_tile_order;
- frame_worker_data->pbi->frame_parallel_decode = ctx->frame_parallel_decode;
- frame_worker_data->pbi->common.frame_parallel_decode =
- ctx->frame_parallel_decode;
- worker->hook = (VPxWorkerHook)frame_worker_hook;
- if (!winterface->reset(worker)) {
- set_error_detail(ctx, "Frame Worker thread creation failed");
- return VPX_CODEC_MEM_ERROR;
- }
- }
-
- // If postprocessing was enabled by the application and a
- // configuration has not been provided, default it.
- if (!ctx->postproc_cfg_set &&
- (ctx->base.init_flags & VPX_CODEC_USE_POSTPROC))
- set_default_ppflags(&ctx->postproc_cfg);
-
- init_buffer_callbacks(ctx);
-
- return VPX_CODEC_OK;
-}
-
-static INLINE void check_resync(vpx_codec_alg_priv_t *const ctx,
- const VP9Decoder *const pbi) {
- // Clear resync flag if worker got a key frame or intra only frame.
- if (ctx->need_resync == 1 && pbi->need_resync == 0 &&
- (pbi->common.intra_only || pbi->common.frame_type == KEY_FRAME))
- ctx->need_resync = 0;
-}
-
-static vpx_codec_err_t decode_one(vpx_codec_alg_priv_t *ctx,
- const uint8_t **data, unsigned int data_sz,
- void *user_priv, int64_t deadline) {
- const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
- (void)deadline;
-
- // Determine the stream parameters. Note that we rely on peek_si to
- // validate that we have a buffer that does not wrap around the top
- // of the heap.
- if (!ctx->si.h) {
- int is_intra_only = 0;
- const vpx_codec_err_t res =
- decoder_peek_si_internal(*data, data_sz, &ctx->si, &is_intra_only,
- ctx->decrypt_cb, ctx->decrypt_state);
- if (res != VPX_CODEC_OK)
- return res;
-
- if (!ctx->si.is_kf && !is_intra_only)
- return VPX_CODEC_ERROR;
- }
-
- if (!ctx->frame_parallel_decode) {
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)worker->data1;
- frame_worker_data->data = *data;
- frame_worker_data->data_size = data_sz;
- frame_worker_data->user_priv = user_priv;
- frame_worker_data->received_frame = 1;
-
- // Set these even if already initialized. The caller may have changed the
- // decrypt config between frames.
- frame_worker_data->pbi->decrypt_cb = ctx->decrypt_cb;
- frame_worker_data->pbi->decrypt_state = ctx->decrypt_state;
-
- worker->had_error = 0;
- winterface->execute(worker);
-
- // Update data pointer after decode.
- *data = frame_worker_data->data_end;
-
- if (worker->had_error)
- return update_error_state(ctx, &frame_worker_data->pbi->common.error);
-
- check_resync(ctx, frame_worker_data->pbi);
- } else {
- VPxWorker *const worker = &ctx->frame_workers[ctx->next_submit_worker_id];
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)worker->data1;
- // Copy context from last worker thread to next worker thread.
- if (ctx->next_submit_worker_id != ctx->last_submit_worker_id)
- vp9_frameworker_copy_context(
- &ctx->frame_workers[ctx->next_submit_worker_id],
- &ctx->frame_workers[ctx->last_submit_worker_id]);
-
- frame_worker_data->pbi->ready_for_new_data = 0;
- // Copy the compressed data into worker's internal buffer.
- // TODO(hkuang): Will all the workers allocate the same size
- // as the size of the first intra frame be better? This will
- // avoid too many deallocate and allocate.
- if (frame_worker_data->scratch_buffer_size < data_sz) {
- frame_worker_data->scratch_buffer =
- (uint8_t *)vpx_realloc(frame_worker_data->scratch_buffer, data_sz);
- if (frame_worker_data->scratch_buffer == NULL) {
- set_error_detail(ctx, "Failed to reallocate scratch buffer");
- return VPX_CODEC_MEM_ERROR;
- }
- frame_worker_data->scratch_buffer_size = data_sz;
- }
- frame_worker_data->data_size = data_sz;
- memcpy(frame_worker_data->scratch_buffer, *data, data_sz);
-
- frame_worker_data->frame_decoded = 0;
- frame_worker_data->frame_context_ready = 0;
- frame_worker_data->received_frame = 1;
- frame_worker_data->data = frame_worker_data->scratch_buffer;
- frame_worker_data->user_priv = user_priv;
-
- if (ctx->next_submit_worker_id != ctx->last_submit_worker_id)
- ctx->last_submit_worker_id =
- (ctx->last_submit_worker_id + 1) % ctx->num_frame_workers;
-
- ctx->next_submit_worker_id =
- (ctx->next_submit_worker_id + 1) % ctx->num_frame_workers;
- --ctx->available_threads;
- worker->had_error = 0;
- winterface->launch(worker);
- }
-
- return VPX_CODEC_OK;
-}
-
-static void wait_worker_and_cache_frame(vpx_codec_alg_priv_t *ctx) {
- YV12_BUFFER_CONFIG sd;
- vp9_ppflags_t flags = {0, 0, 0};
- const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
- VPxWorker *const worker = &ctx->frame_workers[ctx->next_output_worker_id];
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)worker->data1;
- ctx->next_output_worker_id =
- (ctx->next_output_worker_id + 1) % ctx->num_frame_workers;
- // TODO(hkuang): Add worker error handling here.
- winterface->sync(worker);
- frame_worker_data->received_frame = 0;
- ++ctx->available_threads;
-
- check_resync(ctx, frame_worker_data->pbi);
-
- if (vp9_get_raw_frame(frame_worker_data->pbi, &sd, &flags) == 0) {
- VP9_COMMON *const cm = &frame_worker_data->pbi->common;
- RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs;
- ctx->frame_cache[ctx->frame_cache_write].fb_idx = cm->new_fb_idx;
- yuvconfig2image(&ctx->frame_cache[ctx->frame_cache_write].img, &sd,
- frame_worker_data->user_priv);
- ctx->frame_cache[ctx->frame_cache_write].img.fb_priv =
- frame_bufs[cm->new_fb_idx].raw_frame_buffer.priv;
- ctx->frame_cache_write =
- (ctx->frame_cache_write + 1) % FRAME_CACHE_SIZE;
- ++ctx->num_cache_frames;
- }
-}
-
-static vpx_codec_err_t decoder_decode(vpx_codec_alg_priv_t *ctx,
- const uint8_t *data, unsigned int data_sz,
- void *user_priv, long deadline) {
- const uint8_t *data_start = data;
- const uint8_t * const data_end = data + data_sz;
- vpx_codec_err_t res;
- uint32_t frame_sizes[8];
- int frame_count;
-
- if (data == NULL && data_sz == 0) {
- ctx->flushed = 1;
- return VPX_CODEC_OK;
- }
-
- // Reset flushed when receiving a valid frame.
- ctx->flushed = 0;
-
- // Initialize the decoder workers on the first frame.
- if (ctx->frame_workers == NULL) {
- const vpx_codec_err_t res = init_decoder(ctx);
- if (res != VPX_CODEC_OK)
- return res;
- }
-
- res = vp9_parse_superframe_index(data, data_sz, frame_sizes, &frame_count,
- ctx->decrypt_cb, ctx->decrypt_state);
- if (res != VPX_CODEC_OK)
- return res;
-
- if (ctx->frame_parallel_decode) {
- // Decode in frame parallel mode. When decoding in this mode, the frame
- // passed to the decoder must be either a normal frame or a superframe with
- // superframe index so the decoder could get each frame's start position
- // in the superframe.
- if (frame_count > 0) {
- int i;
-
- for (i = 0; i < frame_count; ++i) {
- const uint8_t *data_start_copy = data_start;
- const uint32_t frame_size = frame_sizes[i];
- if (data_start < data
- || frame_size > (uint32_t) (data_end - data_start)) {
- set_error_detail(ctx, "Invalid frame size in index");
- return VPX_CODEC_CORRUPT_FRAME;
- }
-
- if (ctx->available_threads == 0) {
- // No more threads for decoding. Wait until the next output worker
- // finishes decoding. Then copy the decoded frame into cache.
- if (ctx->num_cache_frames < FRAME_CACHE_SIZE) {
- wait_worker_and_cache_frame(ctx);
- } else {
- // TODO(hkuang): Add unit test to test this path.
- set_error_detail(ctx, "Frame output cache is full.");
- return VPX_CODEC_ERROR;
- }
- }
-
- res = decode_one(ctx, &data_start_copy, frame_size, user_priv,
- deadline);
- if (res != VPX_CODEC_OK)
- return res;
- data_start += frame_size;
- }
- } else {
- if (ctx->available_threads == 0) {
- // No more threads for decoding. Wait until the next output worker
- // finishes decoding. Then copy the decoded frame into cache.
- if (ctx->num_cache_frames < FRAME_CACHE_SIZE) {
- wait_worker_and_cache_frame(ctx);
- } else {
- // TODO(hkuang): Add unit test to test this path.
- set_error_detail(ctx, "Frame output cache is full.");
- return VPX_CODEC_ERROR;
- }
- }
-
- res = decode_one(ctx, &data, data_sz, user_priv, deadline);
- if (res != VPX_CODEC_OK)
- return res;
- }
- } else {
- // Decode in serial mode.
- if (frame_count > 0) {
- int i;
-
- for (i = 0; i < frame_count; ++i) {
- const uint8_t *data_start_copy = data_start;
- const uint32_t frame_size = frame_sizes[i];
- vpx_codec_err_t res;
- if (data_start < data
- || frame_size > (uint32_t) (data_end - data_start)) {
- set_error_detail(ctx, "Invalid frame size in index");
- return VPX_CODEC_CORRUPT_FRAME;
- }
-
- res = decode_one(ctx, &data_start_copy, frame_size, user_priv,
- deadline);
- if (res != VPX_CODEC_OK)
- return res;
-
- data_start += frame_size;
- }
- } else {
- while (data_start < data_end) {
- const uint32_t frame_size = (uint32_t) (data_end - data_start);
- const vpx_codec_err_t res = decode_one(ctx, &data_start, frame_size,
- user_priv, deadline);
- if (res != VPX_CODEC_OK)
- return res;
-
- // Account for suboptimal termination by the encoder.
- while (data_start < data_end) {
- const uint8_t marker = read_marker(ctx->decrypt_cb,
- ctx->decrypt_state, data_start);
- if (marker)
- break;
- ++data_start;
- }
- }
- }
- }
-
- return res;
-}
-
-static void release_last_output_frame(vpx_codec_alg_priv_t *ctx) {
- RefCntBuffer *const frame_bufs = ctx->buffer_pool->frame_bufs;
- // Decrease reference count of last output frame in frame parallel mode.
- if (ctx->frame_parallel_decode && ctx->last_show_frame >= 0) {
- BufferPool *const pool = ctx->buffer_pool;
- lock_buffer_pool(pool);
- decrease_ref_count(ctx->last_show_frame, frame_bufs, pool);
- unlock_buffer_pool(pool);
- }
-}
-
-static vpx_image_t *decoder_get_frame(vpx_codec_alg_priv_t *ctx,
- vpx_codec_iter_t *iter) {
- vpx_image_t *img = NULL;
-
- // Only return frame when all the cpu are busy or
- // application fluhsed the decoder in frame parallel decode.
- if (ctx->frame_parallel_decode && ctx->available_threads > 0 &&
- !ctx->flushed) {
- return NULL;
- }
-
- // Output the frames in the cache first.
- if (ctx->num_cache_frames > 0) {
- release_last_output_frame(ctx);
- ctx->last_show_frame = ctx->frame_cache[ctx->frame_cache_read].fb_idx;
- if (ctx->need_resync)
- return NULL;
- img = &ctx->frame_cache[ctx->frame_cache_read].img;
- ctx->frame_cache_read = (ctx->frame_cache_read + 1) % FRAME_CACHE_SIZE;
- --ctx->num_cache_frames;
- return img;
- }
-
- // iter acts as a flip flop, so an image is only returned on the first
- // call to get_frame.
- if (*iter == NULL && ctx->frame_workers != NULL) {
- do {
- YV12_BUFFER_CONFIG sd;
- vp9_ppflags_t flags = {0, 0, 0};
- const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
- VPxWorker *const worker =
- &ctx->frame_workers[ctx->next_output_worker_id];
- FrameWorkerData *const frame_worker_data =
- (FrameWorkerData *)worker->data1;
- ctx->next_output_worker_id =
- (ctx->next_output_worker_id + 1) % ctx->num_frame_workers;
- if (ctx->base.init_flags & VPX_CODEC_USE_POSTPROC)
- set_ppflags(ctx, &flags);
- // Wait for the frame from worker thread.
- if (winterface->sync(worker)) {
- // Check if worker has received any frames.
- if (frame_worker_data->received_frame == 1) {
- ++ctx->available_threads;
- frame_worker_data->received_frame = 0;
- check_resync(ctx, frame_worker_data->pbi);
- }
- if (vp9_get_raw_frame(frame_worker_data->pbi, &sd, &flags) == 0) {
- VP9_COMMON *const cm = &frame_worker_data->pbi->common;
- RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs;
- release_last_output_frame(ctx);
- ctx->last_show_frame = frame_worker_data->pbi->common.new_fb_idx;
- if (ctx->need_resync)
- return NULL;
- yuvconfig2image(&ctx->img, &sd, frame_worker_data->user_priv);
- ctx->img.fb_priv = frame_bufs[cm->new_fb_idx].raw_frame_buffer.priv;
- img = &ctx->img;
- return img;
- }
- } else {
- // Decoding failed. Release the worker thread.
- frame_worker_data->received_frame = 0;
- ++ctx->available_threads;
- ctx->need_resync = 1;
- if (ctx->flushed != 1)
- return NULL;
- }
- } while (ctx->next_output_worker_id != ctx->next_submit_worker_id);
- }
- return NULL;
-}
-
-static vpx_codec_err_t decoder_set_fb_fn(
- vpx_codec_alg_priv_t *ctx,
- vpx_get_frame_buffer_cb_fn_t cb_get,
- vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv) {
- if (cb_get == NULL || cb_release == NULL) {
- return VPX_CODEC_INVALID_PARAM;
- } else if (ctx->frame_workers == NULL) {
- // If the decoder has already been initialized, do not accept changes to
- // the frame buffer functions.
- ctx->get_ext_fb_cb = cb_get;
- ctx->release_ext_fb_cb = cb_release;
- ctx->ext_priv = cb_priv;
- return VPX_CODEC_OK;
- }
-
- return VPX_CODEC_ERROR;
-}
-
-static vpx_codec_err_t ctrl_set_reference(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- vpx_ref_frame_t *const data = va_arg(args, vpx_ref_frame_t *);
-
- // Only support this function in serial decode.
- if (ctx->frame_parallel_decode) {
- set_error_detail(ctx, "Not supported in frame parallel decode");
- return VPX_CODEC_INCAPABLE;
- }
-
- if (data) {
- vpx_ref_frame_t *const frame = (vpx_ref_frame_t *)data;
- YV12_BUFFER_CONFIG sd;
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)worker->data1;
- image2yuvconfig(&frame->img, &sd);
- return vp9_set_reference_dec(&frame_worker_data->pbi->common,
- (VP9_REFFRAME)frame->frame_type, &sd);
- } else {
- return VPX_CODEC_INVALID_PARAM;
- }
-}
-
-static vpx_codec_err_t ctrl_copy_reference(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
-
- // Only support this function in serial decode.
- if (ctx->frame_parallel_decode) {
- set_error_detail(ctx, "Not supported in frame parallel decode");
- return VPX_CODEC_INCAPABLE;
- }
-
- if (data) {
- vpx_ref_frame_t *frame = (vpx_ref_frame_t *) data;
- YV12_BUFFER_CONFIG sd;
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)worker->data1;
- image2yuvconfig(&frame->img, &sd);
- return vp9_copy_reference_dec(frame_worker_data->pbi,
- (VP9_REFFRAME)frame->frame_type, &sd);
- } else {
- return VPX_CODEC_INVALID_PARAM;
- }
-}
-
-static vpx_codec_err_t ctrl_get_reference(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- vp9_ref_frame_t *data = va_arg(args, vp9_ref_frame_t *);
-
- // Only support this function in serial decode.
- if (ctx->frame_parallel_decode) {
- set_error_detail(ctx, "Not supported in frame parallel decode");
- return VPX_CODEC_INCAPABLE;
- }
-
- if (data) {
- YV12_BUFFER_CONFIG* fb;
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)worker->data1;
- fb = get_ref_frame(&frame_worker_data->pbi->common, data->idx);
- if (fb == NULL) return VPX_CODEC_ERROR;
- yuvconfig2image(&data->img, fb, NULL);
- return VPX_CODEC_OK;
- } else {
- return VPX_CODEC_INVALID_PARAM;
- }
-}
-
-static vpx_codec_err_t ctrl_set_postproc(vpx_codec_alg_priv_t *ctx,
- va_list args) {
-#if CONFIG_VP9_POSTPROC
- vp8_postproc_cfg_t *data = va_arg(args, vp8_postproc_cfg_t *);
-
- if (data) {
- ctx->postproc_cfg_set = 1;
- ctx->postproc_cfg = *((vp8_postproc_cfg_t *)data);
- return VPX_CODEC_OK;
- } else {
- return VPX_CODEC_INVALID_PARAM;
- }
-#else
- (void)ctx;
- (void)args;
- return VPX_CODEC_INCAPABLE;
-#endif
-}
-
-static vpx_codec_err_t ctrl_set_dbg_options(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- (void)ctx;
- (void)args;
- return VPX_CODEC_INCAPABLE;
-}
-
-static vpx_codec_err_t ctrl_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- int *const update_info = va_arg(args, int *);
-
- // Only support this function in serial decode.
- if (ctx->frame_parallel_decode) {
- set_error_detail(ctx, "Not supported in frame parallel decode");
- return VPX_CODEC_INCAPABLE;
- }
-
- if (update_info) {
- if (ctx->frame_workers) {
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data =
- (FrameWorkerData *)worker->data1;
- *update_info = frame_worker_data->pbi->refresh_frame_flags;
- return VPX_CODEC_OK;
- } else {
- return VPX_CODEC_ERROR;
- }
- }
-
- return VPX_CODEC_INVALID_PARAM;
-}
-
-static vpx_codec_err_t ctrl_get_frame_corrupted(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- int *corrupted = va_arg(args, int *);
-
- if (corrupted) {
- if (ctx->frame_workers) {
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data =
- (FrameWorkerData *)worker->data1;
- RefCntBuffer *const frame_bufs =
- frame_worker_data->pbi->common.buffer_pool->frame_bufs;
- if (frame_worker_data->pbi->common.frame_to_show == NULL)
- return VPX_CODEC_ERROR;
- if (ctx->last_show_frame >= 0)
- *corrupted = frame_bufs[ctx->last_show_frame].buf.corrupted;
- return VPX_CODEC_OK;
- } else {
- return VPX_CODEC_ERROR;
- }
- }
-
- return VPX_CODEC_INVALID_PARAM;
-}
-
-static vpx_codec_err_t ctrl_get_frame_size(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- int *const frame_size = va_arg(args, int *);
-
- // Only support this function in serial decode.
- if (ctx->frame_parallel_decode) {
- set_error_detail(ctx, "Not supported in frame parallel decode");
- return VPX_CODEC_INCAPABLE;
- }
-
- if (frame_size) {
- if (ctx->frame_workers) {
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data =
- (FrameWorkerData *)worker->data1;
- const VP9_COMMON *const cm = &frame_worker_data->pbi->common;
- frame_size[0] = cm->width;
- frame_size[1] = cm->height;
- return VPX_CODEC_OK;
- } else {
- return VPX_CODEC_ERROR;
- }
- }
-
- return VPX_CODEC_INVALID_PARAM;
-}
-
-static vpx_codec_err_t ctrl_get_render_size(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- int *const render_size = va_arg(args, int *);
-
- // Only support this function in serial decode.
- if (ctx->frame_parallel_decode) {
- set_error_detail(ctx, "Not supported in frame parallel decode");
- return VPX_CODEC_INCAPABLE;
- }
-
- if (render_size) {
- if (ctx->frame_workers) {
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data =
- (FrameWorkerData *)worker->data1;
- const VP9_COMMON *const cm = &frame_worker_data->pbi->common;
- render_size[0] = cm->render_width;
- render_size[1] = cm->render_height;
- return VPX_CODEC_OK;
- } else {
- return VPX_CODEC_ERROR;
- }
- }
-
- return VPX_CODEC_INVALID_PARAM;
-}
-
-static vpx_codec_err_t ctrl_get_bit_depth(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- unsigned int *const bit_depth = va_arg(args, unsigned int *);
- VPxWorker *const worker = &ctx->frame_workers[ctx->next_output_worker_id];
-
- if (bit_depth) {
- if (worker) {
- FrameWorkerData *const frame_worker_data =
- (FrameWorkerData *)worker->data1;
- const VP9_COMMON *const cm = &frame_worker_data->pbi->common;
- *bit_depth = cm->bit_depth;
- return VPX_CODEC_OK;
- } else {
- return VPX_CODEC_ERROR;
- }
- }
-
- return VPX_CODEC_INVALID_PARAM;
-}
-
-static vpx_codec_err_t ctrl_set_invert_tile_order(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- ctx->invert_tile_order = va_arg(args, int);
- return VPX_CODEC_OK;
-}
-
-static vpx_codec_err_t ctrl_set_decryptor(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- vpx_decrypt_init *init = va_arg(args, vpx_decrypt_init *);
- ctx->decrypt_cb = init ? init->decrypt_cb : NULL;
- ctx->decrypt_state = init ? init->decrypt_state : NULL;
- return VPX_CODEC_OK;
-}
-
-static vpx_codec_err_t ctrl_set_byte_alignment(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- const int legacy_byte_alignment = 0;
- const int min_byte_alignment = 32;
- const int max_byte_alignment = 1024;
- const int byte_alignment = va_arg(args, int);
-
- if (byte_alignment != legacy_byte_alignment &&
- (byte_alignment < min_byte_alignment ||
- byte_alignment > max_byte_alignment ||
- (byte_alignment & (byte_alignment - 1)) != 0))
- return VPX_CODEC_INVALID_PARAM;
-
- ctx->byte_alignment = byte_alignment;
- if (ctx->frame_workers) {
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data =
- (FrameWorkerData *)worker->data1;
- frame_worker_data->pbi->common.byte_alignment = byte_alignment;
- }
- return VPX_CODEC_OK;
-}
-
-static vpx_codec_err_t ctrl_set_skip_loop_filter(vpx_codec_alg_priv_t *ctx,
- va_list args) {
- ctx->skip_loop_filter = va_arg(args, int);
-
- if (ctx->frame_workers) {
- VPxWorker *const worker = ctx->frame_workers;
- FrameWorkerData *const frame_worker_data = (FrameWorkerData *)worker->data1;
- frame_worker_data->pbi->common.skip_loop_filter = ctx->skip_loop_filter;
- }
-
- return VPX_CODEC_OK;
-}
-
-static vpx_codec_ctrl_fn_map_t decoder_ctrl_maps[] = {
- {VP8_COPY_REFERENCE, ctrl_copy_reference},
-
- // Setters
- {VP8_SET_REFERENCE, ctrl_set_reference},
- {VP8_SET_POSTPROC, ctrl_set_postproc},
- {VP8_SET_DBG_COLOR_REF_FRAME, ctrl_set_dbg_options},
- {VP8_SET_DBG_COLOR_MB_MODES, ctrl_set_dbg_options},
- {VP8_SET_DBG_COLOR_B_MODES, ctrl_set_dbg_options},
- {VP8_SET_DBG_DISPLAY_MV, ctrl_set_dbg_options},
- {VP9_INVERT_TILE_DECODE_ORDER, ctrl_set_invert_tile_order},
- {VPXD_SET_DECRYPTOR, ctrl_set_decryptor},
- {VP9_SET_BYTE_ALIGNMENT, ctrl_set_byte_alignment},
- {VP9_SET_SKIP_LOOP_FILTER, ctrl_set_skip_loop_filter},
-
- // Getters
- {VP8D_GET_LAST_REF_UPDATES, ctrl_get_last_ref_updates},
- {VP8D_GET_FRAME_CORRUPTED, ctrl_get_frame_corrupted},
- {VP9_GET_REFERENCE, ctrl_get_reference},
- {VP9D_GET_DISPLAY_SIZE, ctrl_get_render_size},
- {VP9D_GET_BIT_DEPTH, ctrl_get_bit_depth},
- {VP9D_GET_FRAME_SIZE, ctrl_get_frame_size},
-
- { -1, NULL},
-};
-
-#ifndef VERSION_STRING
-#define VERSION_STRING
-#endif
-CODEC_INTERFACE(vpx_codec_vp9_dx) = {
- "WebM Project VP9 Decoder" VERSION_STRING,
- VPX_CODEC_INTERNAL_ABI_VERSION,
- VPX_CODEC_CAP_DECODER | VP9_CAP_POSTPROC |
- VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER, // vpx_codec_caps_t
- decoder_init, // vpx_codec_init_fn_t
- decoder_destroy, // vpx_codec_destroy_fn_t
- decoder_ctrl_maps, // vpx_codec_ctrl_fn_map_t
- { // NOLINT
- decoder_peek_si, // vpx_codec_peek_si_fn_t
- decoder_get_si, // vpx_codec_get_si_fn_t
- decoder_decode, // vpx_codec_decode_fn_t
- decoder_get_frame, // vpx_codec_frame_get_fn_t
- decoder_set_fb_fn, // vpx_codec_set_fb_fn_t
- },
- { // NOLINT
- 0,
- NULL, // vpx_codec_enc_cfg_map_t
- NULL, // vpx_codec_encode_fn_t
- NULL, // vpx_codec_get_cx_data_fn_t
- NULL, // vpx_codec_enc_config_set_fn_t
- NULL, // vpx_codec_get_global_headers_fn_t
- NULL, // vpx_codec_get_preview_frame_fn_t
- NULL // vpx_codec_enc_mr_get_mem_loc_fn_t
- }
-};
diff --git a/thirdparty/libvpx/vp9/vp9_dx_iface.h b/thirdparty/libvpx/vp9/vp9_dx_iface.h
deleted file mode 100644
index e0e948e16c..0000000000
--- a/thirdparty/libvpx/vp9/vp9_dx_iface.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_VP9_DX_IFACE_H_
-#define VP9_VP9_DX_IFACE_H_
-
-#include "vp9/decoder/vp9_decoder.h"
-
-typedef vpx_codec_stream_info_t vp9_stream_info_t;
-
-// This limit is due to framebuffer numbers.
-// TODO(hkuang): Remove this limit after implementing ondemand framebuffers.
-#define FRAME_CACHE_SIZE 6 // Cache maximum 6 decoded frames.
-
-typedef struct cache_frame {
- int fb_idx;
- vpx_image_t img;
-} cache_frame;
-
-struct vpx_codec_alg_priv {
- vpx_codec_priv_t base;
- vpx_codec_dec_cfg_t cfg;
- vp9_stream_info_t si;
- int postproc_cfg_set;
- vp8_postproc_cfg_t postproc_cfg;
- vpx_decrypt_cb decrypt_cb;
- void *decrypt_state;
- vpx_image_t img;
- int img_avail;
- int flushed;
- int invert_tile_order;
- int last_show_frame; // Index of last output frame.
- int byte_alignment;
- int skip_loop_filter;
-
- // Frame parallel related.
- int frame_parallel_decode; // frame-based threading.
- VPxWorker *frame_workers;
- int num_frame_workers;
- int next_submit_worker_id;
- int last_submit_worker_id;
- int next_output_worker_id;
- int available_threads;
- cache_frame frame_cache[FRAME_CACHE_SIZE];
- int frame_cache_write;
- int frame_cache_read;
- int num_cache_frames;
- int need_resync; // wait for key/intra-only frame
- // BufferPool that holds all reference frames. Shared by all the FrameWorkers.
- BufferPool *buffer_pool;
-
- // External frame buffer info to save for VP9 common.
- void *ext_priv; // Private data associated with the external frame buffers.
- vpx_get_frame_buffer_cb_fn_t get_ext_fb_cb;
- vpx_release_frame_buffer_cb_fn_t release_ext_fb_cb;
-};
-
-#endif // VP9_VP9_DX_IFACE_H_
diff --git a/thirdparty/libvpx/vp9/vp9_iface_common.h b/thirdparty/libvpx/vp9/vp9_iface_common.h
deleted file mode 100644
index 938d4224ba..0000000000
--- a/thirdparty/libvpx/vp9/vp9_iface_common.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef VP9_VP9_IFACE_COMMON_H_
-#define VP9_VP9_IFACE_COMMON_H_
-
-#include "vpx_ports/mem.h"
-
-static void yuvconfig2image(vpx_image_t *img, const YV12_BUFFER_CONFIG *yv12,
- void *user_priv) {
- /** vpx_img_wrap() doesn't allow specifying independent strides for
- * the Y, U, and V planes, nor other alignment adjustments that
- * might be representable by a YV12_BUFFER_CONFIG, so we just
- * initialize all the fields.*/
- int bps;
- if (!yv12->subsampling_y) {
- if (!yv12->subsampling_x) {
- img->fmt = VPX_IMG_FMT_I444;
- bps = 24;
- } else {
- img->fmt = VPX_IMG_FMT_I422;
- bps = 16;
- }
- } else {
- if (!yv12->subsampling_x) {
- img->fmt = VPX_IMG_FMT_I440;
- bps = 16;
- } else {
- img->fmt = VPX_IMG_FMT_I420;
- bps = 12;
- }
- }
- img->cs = yv12->color_space;
- img->range = yv12->color_range;
- img->bit_depth = 8;
- img->w = yv12->y_stride;
- img->h = ALIGN_POWER_OF_TWO(yv12->y_height + 2 * VP9_ENC_BORDER_IN_PIXELS, 3);
- img->d_w = yv12->y_crop_width;
- img->d_h = yv12->y_crop_height;
- img->r_w = yv12->render_width;
- img->r_h = yv12->render_height;
- img->x_chroma_shift = yv12->subsampling_x;
- img->y_chroma_shift = yv12->subsampling_y;
- img->planes[VPX_PLANE_Y] = yv12->y_buffer;
- img->planes[VPX_PLANE_U] = yv12->u_buffer;
- img->planes[VPX_PLANE_V] = yv12->v_buffer;
- img->planes[VPX_PLANE_ALPHA] = NULL;
- img->stride[VPX_PLANE_Y] = yv12->y_stride;
- img->stride[VPX_PLANE_U] = yv12->uv_stride;
- img->stride[VPX_PLANE_V] = yv12->uv_stride;
- img->stride[VPX_PLANE_ALPHA] = yv12->y_stride;
-#if CONFIG_VP9_HIGHBITDEPTH
- if (yv12->flags & YV12_FLAG_HIGHBITDEPTH) {
- // vpx_image_t uses byte strides and a pointer to the first byte
- // of the image.
- img->fmt = (vpx_img_fmt_t)(img->fmt | VPX_IMG_FMT_HIGHBITDEPTH);
- img->bit_depth = yv12->bit_depth;
- img->planes[VPX_PLANE_Y] = (uint8_t*)CONVERT_TO_SHORTPTR(yv12->y_buffer);
- img->planes[VPX_PLANE_U] = (uint8_t*)CONVERT_TO_SHORTPTR(yv12->u_buffer);
- img->planes[VPX_PLANE_V] = (uint8_t*)CONVERT_TO_SHORTPTR(yv12->v_buffer);
- img->planes[VPX_PLANE_ALPHA] = NULL;
- img->stride[VPX_PLANE_Y] = 2 * yv12->y_stride;
- img->stride[VPX_PLANE_U] = 2 * yv12->uv_stride;
- img->stride[VPX_PLANE_V] = 2 * yv12->uv_stride;
- img->stride[VPX_PLANE_ALPHA] = 2 * yv12->y_stride;
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
- img->bps = bps;
- img->user_priv = user_priv;
- img->img_data = yv12->buffer_alloc;
- img->img_data_owner = 0;
- img->self_allocd = 0;
-}
-
-static vpx_codec_err_t image2yuvconfig(const vpx_image_t *img,
- YV12_BUFFER_CONFIG *yv12) {
- yv12->y_buffer = img->planes[VPX_PLANE_Y];
- yv12->u_buffer = img->planes[VPX_PLANE_U];
- yv12->v_buffer = img->planes[VPX_PLANE_V];
-
- yv12->y_crop_width = img->d_w;
- yv12->y_crop_height = img->d_h;
- yv12->render_width = img->r_w;
- yv12->render_height = img->r_h;
- yv12->y_width = img->d_w;
- yv12->y_height = img->d_h;
-
- yv12->uv_width = img->x_chroma_shift == 1 ? (1 + yv12->y_width) / 2
- : yv12->y_width;
- yv12->uv_height = img->y_chroma_shift == 1 ? (1 + yv12->y_height) / 2
- : yv12->y_height;
- yv12->uv_crop_width = yv12->uv_width;
- yv12->uv_crop_height = yv12->uv_height;
-
- yv12->y_stride = img->stride[VPX_PLANE_Y];
- yv12->uv_stride = img->stride[VPX_PLANE_U];
- yv12->color_space = img->cs;
- yv12->color_range = img->range;
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (img->fmt & VPX_IMG_FMT_HIGHBITDEPTH) {
- // In vpx_image_t
- // planes point to uint8 address of start of data
- // stride counts uint8s to reach next row
- // In YV12_BUFFER_CONFIG
- // y_buffer, u_buffer, v_buffer point to uint16 address of data
- // stride and border counts in uint16s
- // This means that all the address calculations in the main body of code
- // should work correctly.
- // However, before we do any pixel operations we need to cast the address
- // to a uint16 ponter and double its value.
- yv12->y_buffer = CONVERT_TO_BYTEPTR(yv12->y_buffer);
- yv12->u_buffer = CONVERT_TO_BYTEPTR(yv12->u_buffer);
- yv12->v_buffer = CONVERT_TO_BYTEPTR(yv12->v_buffer);
- yv12->y_stride >>= 1;
- yv12->uv_stride >>= 1;
- yv12->flags = YV12_FLAG_HIGHBITDEPTH;
- } else {
- yv12->flags = 0;
- }
- yv12->border = (yv12->y_stride - img->w) / 2;
-#else
- yv12->border = (img->stride[VPX_PLANE_Y] - img->w) / 2;
-#endif // CONFIG_VP9_HIGHBITDEPTH
- yv12->subsampling_x = img->x_chroma_shift;
- yv12->subsampling_y = img->y_chroma_shift;
- return VPX_CODEC_OK;
-}
-
-#endif // VP9_VP9_IFACE_COMMON_H_
diff --git a/thirdparty/libvpx/vp9_rtcd.h b/thirdparty/libvpx/vp9_rtcd.h
deleted file mode 100644
index cf2b463d63..0000000000
--- a/thirdparty/libvpx/vp9_rtcd.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "vpx_config.h"
-
-#if defined(WEBM_X86ASM) && (ARCH_X86 || ARCH_X86_64)
- #include "rtcd/vp9_rtcd_x86.h"
-#elif defined(WEBM_ARMASM) && ARCH_ARM
- #include "rtcd/vp9_rtcd_arm.h"
-#else
- #include "rtcd/vp9_rtcd_c.h"
-#endif
diff --git a/thirdparty/libvpx/vpx/internal/vpx_codec_internal.h b/thirdparty/libvpx/vpx/internal/vpx_codec_internal.h
deleted file mode 100644
index 7380fcc7e2..0000000000
--- a/thirdparty/libvpx/vpx/internal/vpx_codec_internal.h
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-/*!\file
- * \brief Describes the decoder algorithm interface for algorithm
- * implementations.
- *
- * This file defines the private structures and data types that are only
- * relevant to implementing an algorithm, as opposed to using it.
- *
- * To create a decoder algorithm class, an interface structure is put
- * into the global namespace:
- * <pre>
- * my_codec.c:
- * vpx_codec_iface_t my_codec = {
- * "My Codec v1.0",
- * VPX_CODEC_ALG_ABI_VERSION,
- * ...
- * };
- * </pre>
- *
- * An application instantiates a specific decoder instance by using
- * vpx_codec_init() and a pointer to the algorithm's interface structure:
- * <pre>
- * my_app.c:
- * extern vpx_codec_iface_t my_codec;
- * {
- * vpx_codec_ctx_t algo;
- * res = vpx_codec_init(&algo, &my_codec);
- * }
- * </pre>
- *
- * Once initialized, the instance is manged using other functions from
- * the vpx_codec_* family.
- */
-#ifndef VPX_INTERNAL_VPX_CODEC_INTERNAL_H_
-#define VPX_INTERNAL_VPX_CODEC_INTERNAL_H_
-#include "../vpx_decoder.h"
-#include "../vpx_encoder.h"
-#include <stdarg.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!\brief Current ABI version number
- *
- * \internal
- * If this file is altered in any way that changes the ABI, this value
- * must be bumped. Examples include, but are not limited to, changing
- * types, removing or reassigning enums, adding/removing/rearranging
- * fields to structures
- */
-#define VPX_CODEC_INTERNAL_ABI_VERSION (5) /**<\hideinitializer*/
-
-typedef struct vpx_codec_alg_priv vpx_codec_alg_priv_t;
-typedef struct vpx_codec_priv_enc_mr_cfg vpx_codec_priv_enc_mr_cfg_t;
-
-/*!\brief init function pointer prototype
- *
- * Performs algorithm-specific initialization of the decoder context. This
- * function is called by the generic vpx_codec_init() wrapper function, so
- * plugins implementing this interface may trust the input parameters to be
- * properly initialized.
- *
- * \param[in] ctx Pointer to this instance's context
- * \retval #VPX_CODEC_OK
- * The input stream was recognized and decoder initialized.
- * \retval #VPX_CODEC_MEM_ERROR
- * Memory operation failed.
- */
-typedef vpx_codec_err_t (*vpx_codec_init_fn_t)(vpx_codec_ctx_t *ctx,
- vpx_codec_priv_enc_mr_cfg_t *data);
-
-/*!\brief destroy function pointer prototype
- *
- * Performs algorithm-specific destruction of the decoder context. This
- * function is called by the generic vpx_codec_destroy() wrapper function,
- * so plugins implementing this interface may trust the input parameters
- * to be properly initialized.
- *
- * \param[in] ctx Pointer to this instance's context
- * \retval #VPX_CODEC_OK
- * The input stream was recognized and decoder initialized.
- * \retval #VPX_CODEC_MEM_ERROR
- * Memory operation failed.
- */
-typedef vpx_codec_err_t (*vpx_codec_destroy_fn_t)(vpx_codec_alg_priv_t *ctx);
-
-/*!\brief parse stream info function pointer prototype
- *
- * Performs high level parsing of the bitstream. This function is called by the
- * generic vpx_codec_peek_stream_info() wrapper function, so plugins
- * implementing this interface may trust the input parameters to be properly
- * initialized.
- *
- * \param[in] data Pointer to a block of data to parse
- * \param[in] data_sz Size of the data buffer
- * \param[in,out] si Pointer to stream info to update. The size member
- * \ref MUST be properly initialized, but \ref MAY be
- * clobbered by the algorithm. This parameter \ref MAY
- * be NULL.
- *
- * \retval #VPX_CODEC_OK
- * Bitstream is parsable and stream information updated
- */
-typedef vpx_codec_err_t (*vpx_codec_peek_si_fn_t)(const uint8_t *data,
- unsigned int data_sz,
- vpx_codec_stream_info_t *si);
-
-/*!\brief Return information about the current stream.
- *
- * Returns information about the stream that has been parsed during decoding.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in,out] si Pointer to stream info to update. The size member
- * \ref MUST be properly initialized, but \ref MAY be
- * clobbered by the algorithm. This parameter \ref MAY
- * be NULL.
- *
- * \retval #VPX_CODEC_OK
- * Bitstream is parsable and stream information updated
- */
-typedef vpx_codec_err_t (*vpx_codec_get_si_fn_t)(vpx_codec_alg_priv_t *ctx,
- vpx_codec_stream_info_t *si);
-
-/*!\brief control function pointer prototype
- *
- * This function is used to exchange algorithm specific data with the decoder
- * instance. This can be used to implement features specific to a particular
- * algorithm.
- *
- * This function is called by the generic vpx_codec_control() wrapper
- * function, so plugins implementing this interface may trust the input
- * parameters to be properly initialized. However, this interface does not
- * provide type safety for the exchanged data or assign meanings to the
- * control codes. Those details should be specified in the algorithm's
- * header file. In particular, the ctrl_id parameter is guaranteed to exist
- * in the algorithm's control mapping table, and the data parameter may be NULL.
- *
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] ctrl_id Algorithm specific control identifier
- * \param[in,out] data Data to exchange with algorithm instance.
- *
- * \retval #VPX_CODEC_OK
- * The internal state data was deserialized.
- */
-typedef vpx_codec_err_t (*vpx_codec_control_fn_t)(vpx_codec_alg_priv_t *ctx,
- va_list ap);
-
-/*!\brief control function pointer mapping
- *
- * This structure stores the mapping between control identifiers and
- * implementing functions. Each algorithm provides a list of these
- * mappings. This list is searched by the vpx_codec_control() wrapper
- * function to determine which function to invoke. The special
- * value {0, NULL} is used to indicate end-of-list, and must be
- * present. The special value {0, <non-null>} can be used as a catch-all
- * mapping. This implies that ctrl_id values chosen by the algorithm
- * \ref MUST be non-zero.
- */
-typedef const struct vpx_codec_ctrl_fn_map {
- int ctrl_id;
- vpx_codec_control_fn_t fn;
-} vpx_codec_ctrl_fn_map_t;
-
-/*!\brief decode data function pointer prototype
- *
- * Processes a buffer of coded data. If the processing results in a new
- * decoded frame becoming available, #VPX_CODEC_CB_PUT_SLICE and
- * #VPX_CODEC_CB_PUT_FRAME events are generated as appropriate. This
- * function is called by the generic vpx_codec_decode() wrapper function,
- * so plugins implementing this interface may trust the input parameters
- * to be properly initialized.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] data Pointer to this block of new coded data. If
- * NULL, a #VPX_CODEC_CB_PUT_FRAME event is posted
- * for the previously decoded frame.
- * \param[in] data_sz Size of the coded data, in bytes.
- *
- * \return Returns #VPX_CODEC_OK if the coded data was processed completely
- * and future pictures can be decoded without error. Otherwise,
- * see the descriptions of the other error codes in ::vpx_codec_err_t
- * for recoverability capabilities.
- */
-typedef vpx_codec_err_t (*vpx_codec_decode_fn_t)(vpx_codec_alg_priv_t *ctx,
- const uint8_t *data,
- unsigned int data_sz,
- void *user_priv,
- long deadline);
-
-/*!\brief Decoded frames iterator
- *
- * Iterates over a list of the frames available for display. The iterator
- * storage should be initialized to NULL to start the iteration. Iteration is
- * complete when this function returns NULL.
- *
- * The list of available frames becomes valid upon completion of the
- * vpx_codec_decode call, and remains valid until the next call to vpx_codec_decode.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in out] iter Iterator storage, initialized to NULL
- *
- * \return Returns a pointer to an image, if one is ready for display. Frames
- * produced will always be in PTS (presentation time stamp) order.
- */
-typedef vpx_image_t *(*vpx_codec_get_frame_fn_t)(vpx_codec_alg_priv_t *ctx,
- vpx_codec_iter_t *iter);
-
-/*!\brief Pass in external frame buffers for the decoder to use.
- *
- * Registers functions to be called when libvpx needs a frame buffer
- * to decode the current frame and a function to be called when libvpx does
- * not internally reference the frame buffer. This set function must
- * be called before the first call to decode or libvpx will assume the
- * default behavior of allocating frame buffers internally.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] cb_get Pointer to the get callback function
- * \param[in] cb_release Pointer to the release callback function
- * \param[in] cb_priv Callback's private data
- *
- * \retval #VPX_CODEC_OK
- * External frame buffers will be used by libvpx.
- * \retval #VPX_CODEC_INVALID_PARAM
- * One or more of the callbacks were NULL.
- * \retval #VPX_CODEC_ERROR
- * Decoder context not initialized, or algorithm not capable of
- * using external frame buffers.
- *
- * \note
- * When decoding VP9, the application may be required to pass in at least
- * #VP9_MAXIMUM_REF_BUFFERS + #VPX_MAXIMUM_WORK_BUFFERS external frame
- * buffers.
- */
-typedef vpx_codec_err_t (*vpx_codec_set_fb_fn_t)(
- vpx_codec_alg_priv_t *ctx,
- vpx_get_frame_buffer_cb_fn_t cb_get,
- vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv);
-
-
-typedef vpx_codec_err_t (*vpx_codec_encode_fn_t)(vpx_codec_alg_priv_t *ctx,
- const vpx_image_t *img,
- vpx_codec_pts_t pts,
- unsigned long duration,
- vpx_enc_frame_flags_t flags,
- unsigned long deadline);
-typedef const vpx_codec_cx_pkt_t *(*vpx_codec_get_cx_data_fn_t)(vpx_codec_alg_priv_t *ctx,
- vpx_codec_iter_t *iter);
-
-typedef vpx_codec_err_t
-(*vpx_codec_enc_config_set_fn_t)(vpx_codec_alg_priv_t *ctx,
- const vpx_codec_enc_cfg_t *cfg);
-typedef vpx_fixed_buf_t *
-(*vpx_codec_get_global_headers_fn_t)(vpx_codec_alg_priv_t *ctx);
-
-typedef vpx_image_t *
-(*vpx_codec_get_preview_frame_fn_t)(vpx_codec_alg_priv_t *ctx);
-
-typedef vpx_codec_err_t
-(*vpx_codec_enc_mr_get_mem_loc_fn_t)(const vpx_codec_enc_cfg_t *cfg,
- void **mem_loc);
-
-/*!\brief usage configuration mapping
- *
- * This structure stores the mapping between usage identifiers and
- * configuration structures. Each algorithm provides a list of these
- * mappings. This list is searched by the vpx_codec_enc_config_default()
- * wrapper function to determine which config to return. The special value
- * {-1, {0}} is used to indicate end-of-list, and must be present. At least
- * one mapping must be present, in addition to the end-of-list.
- *
- */
-typedef const struct vpx_codec_enc_cfg_map {
- int usage;
- vpx_codec_enc_cfg_t cfg;
-} vpx_codec_enc_cfg_map_t;
-
-/*!\brief Decoder algorithm interface interface
- *
- * All decoders \ref MUST expose a variable of this type.
- */
-struct vpx_codec_iface {
- const char *name; /**< Identification String */
- int abi_version; /**< Implemented ABI version */
- vpx_codec_caps_t caps; /**< Decoder capabilities */
- vpx_codec_init_fn_t init; /**< \copydoc ::vpx_codec_init_fn_t */
- vpx_codec_destroy_fn_t destroy; /**< \copydoc ::vpx_codec_destroy_fn_t */
- vpx_codec_ctrl_fn_map_t *ctrl_maps; /**< \copydoc ::vpx_codec_ctrl_fn_map_t */
- struct vpx_codec_dec_iface {
- vpx_codec_peek_si_fn_t peek_si; /**< \copydoc ::vpx_codec_peek_si_fn_t */
- vpx_codec_get_si_fn_t get_si; /**< \copydoc ::vpx_codec_get_si_fn_t */
- vpx_codec_decode_fn_t decode; /**< \copydoc ::vpx_codec_decode_fn_t */
- vpx_codec_get_frame_fn_t get_frame; /**< \copydoc ::vpx_codec_get_frame_fn_t */
- vpx_codec_set_fb_fn_t set_fb_fn; /**< \copydoc ::vpx_codec_set_fb_fn_t */
- } dec;
- struct vpx_codec_enc_iface {
- int cfg_map_count;
- vpx_codec_enc_cfg_map_t *cfg_maps; /**< \copydoc ::vpx_codec_enc_cfg_map_t */
- vpx_codec_encode_fn_t encode; /**< \copydoc ::vpx_codec_encode_fn_t */
- vpx_codec_get_cx_data_fn_t get_cx_data; /**< \copydoc ::vpx_codec_get_cx_data_fn_t */
- vpx_codec_enc_config_set_fn_t cfg_set; /**< \copydoc ::vpx_codec_enc_config_set_fn_t */
- vpx_codec_get_global_headers_fn_t get_glob_hdrs; /**< \copydoc ::vpx_codec_get_global_headers_fn_t */
- vpx_codec_get_preview_frame_fn_t get_preview; /**< \copydoc ::vpx_codec_get_preview_frame_fn_t */
- vpx_codec_enc_mr_get_mem_loc_fn_t mr_get_mem_loc; /**< \copydoc ::vpx_codec_enc_mr_get_mem_loc_fn_t */
- } enc;
-};
-
-/*!\brief Callback function pointer / user data pair storage */
-typedef struct vpx_codec_priv_cb_pair {
- union {
- vpx_codec_put_frame_cb_fn_t put_frame;
- vpx_codec_put_slice_cb_fn_t put_slice;
- } u;
- void *user_priv;
-} vpx_codec_priv_cb_pair_t;
-
-
-/*!\brief Instance private storage
- *
- * This structure is allocated by the algorithm's init function. It can be
- * extended in one of two ways. First, a second, algorithm specific structure
- * can be allocated and the priv member pointed to it. Alternatively, this
- * structure can be made the first member of the algorithm specific structure,
- * and the pointer cast to the proper type.
- */
-struct vpx_codec_priv {
- const char *err_detail;
- vpx_codec_flags_t init_flags;
- struct {
- vpx_codec_priv_cb_pair_t put_frame_cb;
- vpx_codec_priv_cb_pair_t put_slice_cb;
- } dec;
- struct {
- vpx_fixed_buf_t cx_data_dst_buf;
- unsigned int cx_data_pad_before;
- unsigned int cx_data_pad_after;
- vpx_codec_cx_pkt_t cx_data_pkt;
- unsigned int total_encoders;
- } enc;
-};
-
-/*
- * Multi-resolution encoding internal configuration
- */
-struct vpx_codec_priv_enc_mr_cfg
-{
- unsigned int mr_total_resolutions;
- unsigned int mr_encoder_id;
- struct vpx_rational mr_down_sampling_factor;
- void* mr_low_res_mode_info;
-};
-
-#undef VPX_CTRL_USE_TYPE
-#define VPX_CTRL_USE_TYPE(id, typ) \
- static VPX_INLINE typ id##__value(va_list args) {return va_arg(args, typ);}
-
-#undef VPX_CTRL_USE_TYPE_DEPRECATED
-#define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ) \
- static VPX_INLINE typ id##__value(va_list args) {return va_arg(args, typ);}
-
-#define CAST(id, arg) id##__value(arg)
-
-/* CODEC_INTERFACE convenience macro
- *
- * By convention, each codec interface is a struct with extern linkage, where
- * the symbol is suffixed with _algo. A getter function is also defined to
- * return a pointer to the struct, since in some cases it's easier to work
- * with text symbols than data symbols (see issue #169). This function has
- * the same name as the struct, less the _algo suffix. The CODEC_INTERFACE
- * macro is provided to define this getter function automatically.
- */
-#define CODEC_INTERFACE(id)\
- vpx_codec_iface_t* id(void) { return &id##_algo; }\
- vpx_codec_iface_t id##_algo
-
-
-/* Internal Utility Functions
- *
- * The following functions are intended to be used inside algorithms as
- * utilities for manipulating vpx_codec_* data structures.
- */
-struct vpx_codec_pkt_list {
- unsigned int cnt;
- unsigned int max;
- struct vpx_codec_cx_pkt pkts[1];
-};
-
-#define vpx_codec_pkt_list_decl(n)\
- union {struct vpx_codec_pkt_list head;\
- struct {struct vpx_codec_pkt_list head;\
- struct vpx_codec_cx_pkt pkts[n];} alloc;}
-
-#define vpx_codec_pkt_list_init(m)\
- (m)->alloc.head.cnt = 0,\
- (m)->alloc.head.max = sizeof((m)->alloc.pkts) / sizeof((m)->alloc.pkts[0])
-
-int
-vpx_codec_pkt_list_add(struct vpx_codec_pkt_list *,
- const struct vpx_codec_cx_pkt *);
-
-const vpx_codec_cx_pkt_t *
-vpx_codec_pkt_list_get(struct vpx_codec_pkt_list *list,
- vpx_codec_iter_t *iter);
-
-
-#include <stdio.h>
-#include <setjmp.h>
-
-struct vpx_internal_error_info {
- vpx_codec_err_t error_code;
- int has_detail;
- char detail[80];
- int setjmp;
- jmp_buf jmp;
-};
-
-#define CLANG_ANALYZER_NORETURN
-#if defined(__has_feature)
-#if __has_feature(attribute_analyzer_noreturn)
-#undef CLANG_ANALYZER_NORETURN
-#define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn))
-#endif
-#endif
-
-void vpx_internal_error(struct vpx_internal_error_info *info,
- vpx_codec_err_t error,
- const char *fmt,
- ...) CLANG_ANALYZER_NORETURN;
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_INTERNAL_VPX_CODEC_INTERNAL_H_
diff --git a/thirdparty/libvpx/vpx/internal/vpx_psnr.h b/thirdparty/libvpx/vpx/internal/vpx_psnr.h
deleted file mode 100644
index 07d81bb8d9..0000000000
--- a/thirdparty/libvpx/vpx/internal/vpx_psnr.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_INTERNAL_VPX_PSNR_H_
-#define VPX_INTERNAL_VPX_PSNR_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// TODO(dkovalev) change vpx_sse_to_psnr signature: double -> int64_t
-
-/*!\brief Converts SSE to PSNR
- *
- * Converts sum of squared errros (SSE) to peak signal-to-noise ratio (PNSR).
- *
- * \param[in] samples Number of samples
- * \param[in] peak Max sample value
- * \param[in] sse Sum of squared errors
- */
-double vpx_sse_to_psnr(double samples, double peak, double sse);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_INTERNAL_VPX_PSNR_H_
diff --git a/thirdparty/libvpx/vpx/src/vpx_codec.c b/thirdparty/libvpx/vpx/src/vpx_codec.c
deleted file mode 100644
index 5a495ce814..0000000000
--- a/thirdparty/libvpx/vpx/src/vpx_codec.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-/*!\file
- * \brief Provides the high level interface to wrap decoder algorithms.
- *
- */
-#include <stdarg.h>
-#include <stdlib.h>
-#include "vpx/vpx_integer.h"
-#include "vpx/internal/vpx_codec_internal.h"
-#include "vpx_version.h"
-
-#define SAVE_STATUS(ctx,var) (ctx?(ctx->err = var):var)
-
-int vpx_codec_version(void) {
- return VERSION_PACKED;
-}
-
-
-const char *vpx_codec_version_str(void) {
- return VERSION_STRING_NOSP;
-}
-
-
-const char *vpx_codec_version_extra_str(void) {
- return VERSION_EXTRA;
-}
-
-
-const char *vpx_codec_iface_name(vpx_codec_iface_t *iface) {
- return iface ? iface->name : "<invalid interface>";
-}
-
-const char *vpx_codec_err_to_string(vpx_codec_err_t err) {
- switch (err) {
- case VPX_CODEC_OK:
- return "Success";
- case VPX_CODEC_ERROR:
- return "Unspecified internal error";
- case VPX_CODEC_MEM_ERROR:
- return "Memory allocation error";
- case VPX_CODEC_ABI_MISMATCH:
- return "ABI version mismatch";
- case VPX_CODEC_INCAPABLE:
- return "Codec does not implement requested capability";
- case VPX_CODEC_UNSUP_BITSTREAM:
- return "Bitstream not supported by this decoder";
- case VPX_CODEC_UNSUP_FEATURE:
- return "Bitstream required feature not supported by this decoder";
- case VPX_CODEC_CORRUPT_FRAME:
- return "Corrupt frame detected";
- case VPX_CODEC_INVALID_PARAM:
- return "Invalid parameter";
- case VPX_CODEC_LIST_END:
- return "End of iterated list";
- }
-
- return "Unrecognized error code";
-}
-
-const char *vpx_codec_error(vpx_codec_ctx_t *ctx) {
- return (ctx) ? vpx_codec_err_to_string(ctx->err)
- : vpx_codec_err_to_string(VPX_CODEC_INVALID_PARAM);
-}
-
-const char *vpx_codec_error_detail(vpx_codec_ctx_t *ctx) {
- if (ctx && ctx->err)
- return ctx->priv ? ctx->priv->err_detail : ctx->err_detail;
-
- return NULL;
-}
-
-
-vpx_codec_err_t vpx_codec_destroy(vpx_codec_ctx_t *ctx) {
- vpx_codec_err_t res;
-
- if (!ctx)
- res = VPX_CODEC_INVALID_PARAM;
- else if (!ctx->iface || !ctx->priv)
- res = VPX_CODEC_ERROR;
- else {
- ctx->iface->destroy((vpx_codec_alg_priv_t *)ctx->priv);
-
- ctx->iface = NULL;
- ctx->name = NULL;
- ctx->priv = NULL;
- res = VPX_CODEC_OK;
- }
-
- return SAVE_STATUS(ctx, res);
-}
-
-
-vpx_codec_caps_t vpx_codec_get_caps(vpx_codec_iface_t *iface) {
- return (iface) ? iface->caps : 0;
-}
-
-
-vpx_codec_err_t vpx_codec_control_(vpx_codec_ctx_t *ctx,
- int ctrl_id,
- ...) {
- vpx_codec_err_t res;
-
- if (!ctx || !ctrl_id)
- res = VPX_CODEC_INVALID_PARAM;
- else if (!ctx->iface || !ctx->priv || !ctx->iface->ctrl_maps)
- res = VPX_CODEC_ERROR;
- else {
- vpx_codec_ctrl_fn_map_t *entry;
-
- res = VPX_CODEC_ERROR;
-
- for (entry = ctx->iface->ctrl_maps; entry && entry->fn; entry++) {
- if (!entry->ctrl_id || entry->ctrl_id == ctrl_id) {
- va_list ap;
-
- va_start(ap, ctrl_id);
- res = entry->fn((vpx_codec_alg_priv_t *)ctx->priv, ap);
- va_end(ap);
- break;
- }
- }
- }
-
- return SAVE_STATUS(ctx, res);
-}
-
-void vpx_internal_error(struct vpx_internal_error_info *info,
- vpx_codec_err_t error,
- const char *fmt,
- ...) {
- va_list ap;
-
- info->error_code = error;
- info->has_detail = 0;
-
- if (fmt) {
- size_t sz = sizeof(info->detail);
-
- info->has_detail = 1;
- va_start(ap, fmt);
- vsnprintf(info->detail, sz - 1, fmt, ap);
- va_end(ap);
- info->detail[sz - 1] = '\0';
- }
-
- if (info->setjmp)
- longjmp(info->jmp, info->error_code);
-}
diff --git a/thirdparty/libvpx/vpx/src/vpx_decoder.c b/thirdparty/libvpx/vpx/src/vpx_decoder.c
deleted file mode 100644
index 802d8edd8a..0000000000
--- a/thirdparty/libvpx/vpx/src/vpx_decoder.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-/*!\file
- * \brief Provides the high level interface to wrap decoder algorithms.
- *
- */
-#include <string.h>
-#include "vpx/internal/vpx_codec_internal.h"
-
-#define SAVE_STATUS(ctx,var) (ctx?(ctx->err = var):var)
-
-static vpx_codec_alg_priv_t *get_alg_priv(vpx_codec_ctx_t *ctx) {
- return (vpx_codec_alg_priv_t *)ctx->priv;
-}
-
-vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx,
- vpx_codec_iface_t *iface,
- const vpx_codec_dec_cfg_t *cfg,
- vpx_codec_flags_t flags,
- int ver) {
- vpx_codec_err_t res;
-
- if (ver != VPX_DECODER_ABI_VERSION)
- res = VPX_CODEC_ABI_MISMATCH;
- else if (!ctx || !iface)
- res = VPX_CODEC_INVALID_PARAM;
- else if (iface->abi_version != VPX_CODEC_INTERNAL_ABI_VERSION)
- res = VPX_CODEC_ABI_MISMATCH;
- else if ((flags & VPX_CODEC_USE_POSTPROC) && !(iface->caps & VPX_CODEC_CAP_POSTPROC))
- res = VPX_CODEC_INCAPABLE;
- else if ((flags & VPX_CODEC_USE_ERROR_CONCEALMENT) &&
- !(iface->caps & VPX_CODEC_CAP_ERROR_CONCEALMENT))
- res = VPX_CODEC_INCAPABLE;
- else if ((flags & VPX_CODEC_USE_INPUT_FRAGMENTS) &&
- !(iface->caps & VPX_CODEC_CAP_INPUT_FRAGMENTS))
- res = VPX_CODEC_INCAPABLE;
- else if (!(iface->caps & VPX_CODEC_CAP_DECODER))
- res = VPX_CODEC_INCAPABLE;
- else {
- memset(ctx, 0, sizeof(*ctx));
- ctx->iface = iface;
- ctx->name = iface->name;
- ctx->priv = NULL;
- ctx->init_flags = flags;
- ctx->config.dec = cfg;
-
- res = ctx->iface->init(ctx, NULL);
- if (res) {
- ctx->err_detail = ctx->priv ? ctx->priv->err_detail : NULL;
- vpx_codec_destroy(ctx);
- }
- }
-
- return SAVE_STATUS(ctx, res);
-}
-
-
-vpx_codec_err_t vpx_codec_peek_stream_info(vpx_codec_iface_t *iface,
- const uint8_t *data,
- unsigned int data_sz,
- vpx_codec_stream_info_t *si) {
- vpx_codec_err_t res;
-
- if (!iface || !data || !data_sz || !si
- || si->sz < sizeof(vpx_codec_stream_info_t))
- res = VPX_CODEC_INVALID_PARAM;
- else {
- /* Set default/unknown values */
- si->w = 0;
- si->h = 0;
-
- res = iface->dec.peek_si(data, data_sz, si);
- }
-
- return res;
-}
-
-
-vpx_codec_err_t vpx_codec_get_stream_info(vpx_codec_ctx_t *ctx,
- vpx_codec_stream_info_t *si) {
- vpx_codec_err_t res;
-
- if (!ctx || !si || si->sz < sizeof(vpx_codec_stream_info_t))
- res = VPX_CODEC_INVALID_PARAM;
- else if (!ctx->iface || !ctx->priv)
- res = VPX_CODEC_ERROR;
- else {
- /* Set default/unknown values */
- si->w = 0;
- si->h = 0;
-
- res = ctx->iface->dec.get_si(get_alg_priv(ctx), si);
- }
-
- return SAVE_STATUS(ctx, res);
-}
-
-
-vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx,
- const uint8_t *data,
- unsigned int data_sz,
- void *user_priv,
- long deadline) {
- vpx_codec_err_t res;
-
- /* Sanity checks */
- /* NULL data ptr allowed if data_sz is 0 too */
- if (!ctx || (!data && data_sz) || (data && !data_sz))
- res = VPX_CODEC_INVALID_PARAM;
- else if (!ctx->iface || !ctx->priv)
- res = VPX_CODEC_ERROR;
- else {
- res = ctx->iface->dec.decode(get_alg_priv(ctx), data, data_sz, user_priv,
- deadline);
- }
-
- return SAVE_STATUS(ctx, res);
-}
-
-vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx,
- vpx_codec_iter_t *iter) {
- vpx_image_t *img;
-
- if (!ctx || !iter || !ctx->iface || !ctx->priv)
- img = NULL;
- else
- img = ctx->iface->dec.get_frame(get_alg_priv(ctx), iter);
-
- return img;
-}
-
-
-vpx_codec_err_t vpx_codec_register_put_frame_cb(vpx_codec_ctx_t *ctx,
- vpx_codec_put_frame_cb_fn_t cb,
- void *user_priv) {
- vpx_codec_err_t res;
-
- if (!ctx || !cb)
- res = VPX_CODEC_INVALID_PARAM;
- else if (!ctx->iface || !ctx->priv
- || !(ctx->iface->caps & VPX_CODEC_CAP_PUT_FRAME))
- res = VPX_CODEC_ERROR;
- else {
- ctx->priv->dec.put_frame_cb.u.put_frame = cb;
- ctx->priv->dec.put_frame_cb.user_priv = user_priv;
- res = VPX_CODEC_OK;
- }
-
- return SAVE_STATUS(ctx, res);
-}
-
-
-vpx_codec_err_t vpx_codec_register_put_slice_cb(vpx_codec_ctx_t *ctx,
- vpx_codec_put_slice_cb_fn_t cb,
- void *user_priv) {
- vpx_codec_err_t res;
-
- if (!ctx || !cb)
- res = VPX_CODEC_INVALID_PARAM;
- else if (!ctx->iface || !ctx->priv
- || !(ctx->iface->caps & VPX_CODEC_CAP_PUT_SLICE))
- res = VPX_CODEC_ERROR;
- else {
- ctx->priv->dec.put_slice_cb.u.put_slice = cb;
- ctx->priv->dec.put_slice_cb.user_priv = user_priv;
- res = VPX_CODEC_OK;
- }
-
- return SAVE_STATUS(ctx, res);
-}
-
-vpx_codec_err_t vpx_codec_set_frame_buffer_functions(
- vpx_codec_ctx_t *ctx, vpx_get_frame_buffer_cb_fn_t cb_get,
- vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv) {
- vpx_codec_err_t res;
-
- if (!ctx || !cb_get || !cb_release) {
- res = VPX_CODEC_INVALID_PARAM;
- } else if (!ctx->iface || !ctx->priv ||
- !(ctx->iface->caps & VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER)) {
- res = VPX_CODEC_ERROR;
- } else {
- res = ctx->iface->dec.set_fb_fn(get_alg_priv(ctx), cb_get, cb_release,
- cb_priv);
- }
-
- return SAVE_STATUS(ctx, res);
-}
diff --git a/thirdparty/libvpx/vpx/src/vpx_image.c b/thirdparty/libvpx/vpx/src/vpx_image.c
deleted file mode 100644
index 9aae12c794..0000000000
--- a/thirdparty/libvpx/vpx/src/vpx_image.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "vpx/vpx_image.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
-
-static vpx_image_t *img_alloc_helper(vpx_image_t *img,
- vpx_img_fmt_t fmt,
- unsigned int d_w,
- unsigned int d_h,
- unsigned int buf_align,
- unsigned int stride_align,
- unsigned char *img_data) {
- unsigned int h, w, s, xcs, ycs, bps;
- unsigned int stride_in_bytes;
- int align;
-
- /* Treat align==0 like align==1 */
- if (!buf_align)
- buf_align = 1;
-
- /* Validate alignment (must be power of 2) */
- if (buf_align & (buf_align - 1))
- goto fail;
-
- /* Treat align==0 like align==1 */
- if (!stride_align)
- stride_align = 1;
-
- /* Validate alignment (must be power of 2) */
- if (stride_align & (stride_align - 1))
- goto fail;
-
- /* Get sample size for this format */
- switch (fmt) {
- case VPX_IMG_FMT_RGB32:
- case VPX_IMG_FMT_RGB32_LE:
- case VPX_IMG_FMT_ARGB:
- case VPX_IMG_FMT_ARGB_LE:
- bps = 32;
- break;
- case VPX_IMG_FMT_RGB24:
- case VPX_IMG_FMT_BGR24:
- bps = 24;
- break;
- case VPX_IMG_FMT_RGB565:
- case VPX_IMG_FMT_RGB565_LE:
- case VPX_IMG_FMT_RGB555:
- case VPX_IMG_FMT_RGB555_LE:
- case VPX_IMG_FMT_UYVY:
- case VPX_IMG_FMT_YUY2:
- case VPX_IMG_FMT_YVYU:
- bps = 16;
- break;
- case VPX_IMG_FMT_I420:
- case VPX_IMG_FMT_YV12:
- case VPX_IMG_FMT_VPXI420:
- case VPX_IMG_FMT_VPXYV12:
- bps = 12;
- break;
- case VPX_IMG_FMT_I422:
- case VPX_IMG_FMT_I440:
- bps = 16;
- break;
- case VPX_IMG_FMT_I444:
- bps = 24;
- break;
- case VPX_IMG_FMT_I42016:
- bps = 24;
- break;
- case VPX_IMG_FMT_I42216:
- case VPX_IMG_FMT_I44016:
- bps = 32;
- break;
- case VPX_IMG_FMT_I44416:
- bps = 48;
- break;
- default:
- bps = 16;
- break;
- }
-
- /* Get chroma shift values for this format */
- switch (fmt) {
- case VPX_IMG_FMT_I420:
- case VPX_IMG_FMT_YV12:
- case VPX_IMG_FMT_VPXI420:
- case VPX_IMG_FMT_VPXYV12:
- case VPX_IMG_FMT_I422:
- case VPX_IMG_FMT_I42016:
- case VPX_IMG_FMT_I42216:
- xcs = 1;
- break;
- default:
- xcs = 0;
- break;
- }
-
- switch (fmt) {
- case VPX_IMG_FMT_I420:
- case VPX_IMG_FMT_I440:
- case VPX_IMG_FMT_YV12:
- case VPX_IMG_FMT_VPXI420:
- case VPX_IMG_FMT_VPXYV12:
- case VPX_IMG_FMT_I42016:
- case VPX_IMG_FMT_I44016:
- ycs = 1;
- break;
- default:
- ycs = 0;
- break;
- }
-
- /* Calculate storage sizes given the chroma subsampling */
- align = (1 << xcs) - 1;
- w = (d_w + align) & ~align;
- align = (1 << ycs) - 1;
- h = (d_h + align) & ~align;
- s = (fmt & VPX_IMG_FMT_PLANAR) ? w : bps * w / 8;
- s = (s + stride_align - 1) & ~(stride_align - 1);
- stride_in_bytes = (fmt & VPX_IMG_FMT_HIGHBITDEPTH) ? s * 2 : s;
-
- /* Allocate the new image */
- if (!img) {
- img = (vpx_image_t *)calloc(1, sizeof(vpx_image_t));
-
- if (!img)
- goto fail;
-
- img->self_allocd = 1;
- } else {
- memset(img, 0, sizeof(vpx_image_t));
- }
-
- img->img_data = img_data;
-
- if (!img_data) {
- const uint64_t alloc_size = (fmt & VPX_IMG_FMT_PLANAR) ?
- (uint64_t)h * s * bps / 8 : (uint64_t)h * s;
-
- if (alloc_size != (size_t)alloc_size)
- goto fail;
-
- img->img_data = (uint8_t *)vpx_memalign(buf_align, (size_t)alloc_size);
- img->img_data_owner = 1;
- }
-
- if (!img->img_data)
- goto fail;
-
- img->fmt = fmt;
- img->bit_depth = (fmt & VPX_IMG_FMT_HIGHBITDEPTH) ? 16 : 8;
- img->w = w;
- img->h = h;
- img->x_chroma_shift = xcs;
- img->y_chroma_shift = ycs;
- img->bps = bps;
-
- /* Calculate strides */
- img->stride[VPX_PLANE_Y] = img->stride[VPX_PLANE_ALPHA] = stride_in_bytes;
- img->stride[VPX_PLANE_U] = img->stride[VPX_PLANE_V] = stride_in_bytes >> xcs;
-
- /* Default viewport to entire image */
- if (!vpx_img_set_rect(img, 0, 0, d_w, d_h))
- return img;
-
-fail:
- vpx_img_free(img);
- return NULL;
-}
-
-vpx_image_t *vpx_img_alloc(vpx_image_t *img,
- vpx_img_fmt_t fmt,
- unsigned int d_w,
- unsigned int d_h,
- unsigned int align) {
- return img_alloc_helper(img, fmt, d_w, d_h, align, align, NULL);
-}
-
-vpx_image_t *vpx_img_wrap(vpx_image_t *img,
- vpx_img_fmt_t fmt,
- unsigned int d_w,
- unsigned int d_h,
- unsigned int stride_align,
- unsigned char *img_data) {
- /* By setting buf_align = 1, we don't change buffer alignment in this
- * function. */
- return img_alloc_helper(img, fmt, d_w, d_h, 1, stride_align, img_data);
-}
-
-int vpx_img_set_rect(vpx_image_t *img,
- unsigned int x,
- unsigned int y,
- unsigned int w,
- unsigned int h) {
- unsigned char *data;
-
- if (x + w <= img->w && y + h <= img->h) {
- img->d_w = w;
- img->d_h = h;
-
- /* Calculate plane pointers */
- if (!(img->fmt & VPX_IMG_FMT_PLANAR)) {
- img->planes[VPX_PLANE_PACKED] =
- img->img_data + x * img->bps / 8 + y * img->stride[VPX_PLANE_PACKED];
- } else {
- const int bytes_per_sample =
- (img->fmt & VPX_IMG_FMT_HIGHBITDEPTH) ? 2 : 1;
- data = img->img_data;
-
- if (img->fmt & VPX_IMG_FMT_HAS_ALPHA) {
- img->planes[VPX_PLANE_ALPHA] =
- data + x * bytes_per_sample + y * img->stride[VPX_PLANE_ALPHA];
- data += img->h * img->stride[VPX_PLANE_ALPHA];
- }
-
- img->planes[VPX_PLANE_Y] = data + x * bytes_per_sample +
- y * img->stride[VPX_PLANE_Y];
- data += img->h * img->stride[VPX_PLANE_Y];
-
- if (!(img->fmt & VPX_IMG_FMT_UV_FLIP)) {
- img->planes[VPX_PLANE_U] =
- data + (x >> img->x_chroma_shift) * bytes_per_sample +
- (y >> img->y_chroma_shift) * img->stride[VPX_PLANE_U];
- data += (img->h >> img->y_chroma_shift) * img->stride[VPX_PLANE_U];
- img->planes[VPX_PLANE_V] =
- data + (x >> img->x_chroma_shift) * bytes_per_sample +
- (y >> img->y_chroma_shift) * img->stride[VPX_PLANE_V];
- } else {
- img->planes[VPX_PLANE_V] =
- data + (x >> img->x_chroma_shift) * bytes_per_sample +
- (y >> img->y_chroma_shift) * img->stride[VPX_PLANE_V];
- data += (img->h >> img->y_chroma_shift) * img->stride[VPX_PLANE_V];
- img->planes[VPX_PLANE_U] =
- data + (x >> img->x_chroma_shift) * bytes_per_sample +
- (y >> img->y_chroma_shift) * img->stride[VPX_PLANE_U];
- }
- }
- return 0;
- }
- return -1;
-}
-
-void vpx_img_flip(vpx_image_t *img) {
- /* Note: In the calculation pointer adjustment calculation, we want the
- * rhs to be promoted to a signed type. Section 6.3.1.8 of the ISO C99
- * standard indicates that if the adjustment parameter is unsigned, the
- * stride parameter will be promoted to unsigned, causing errors when
- * the lhs is a larger type than the rhs.
- */
- img->planes[VPX_PLANE_Y] += (signed)(img->d_h - 1) * img->stride[VPX_PLANE_Y];
- img->stride[VPX_PLANE_Y] = -img->stride[VPX_PLANE_Y];
-
- img->planes[VPX_PLANE_U] += (signed)((img->d_h >> img->y_chroma_shift) - 1)
- * img->stride[VPX_PLANE_U];
- img->stride[VPX_PLANE_U] = -img->stride[VPX_PLANE_U];
-
- img->planes[VPX_PLANE_V] += (signed)((img->d_h >> img->y_chroma_shift) - 1)
- * img->stride[VPX_PLANE_V];
- img->stride[VPX_PLANE_V] = -img->stride[VPX_PLANE_V];
-
- img->planes[VPX_PLANE_ALPHA] += (signed)(img->d_h - 1) * img->stride[VPX_PLANE_ALPHA];
- img->stride[VPX_PLANE_ALPHA] = -img->stride[VPX_PLANE_ALPHA];
-}
-
-void vpx_img_free(vpx_image_t *img) {
- if (img) {
- if (img->img_data && img->img_data_owner)
- vpx_free(img->img_data);
-
- if (img->self_allocd)
- free(img);
- }
-}
diff --git a/thirdparty/libvpx/vpx/src/vpx_psnr.c b/thirdparty/libvpx/vpx/src/vpx_psnr.c
deleted file mode 100644
index 05843acb61..0000000000
--- a/thirdparty/libvpx/vpx/src/vpx_psnr.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <math.h>
-
-#include "vpx/internal/vpx_psnr.h"
-
-#define MAX_PSNR 100.0
-
-double vpx_sse_to_psnr(double samples, double peak, double sse) {
- if (sse > 0.0) {
- const double psnr = 10.0 * log10(samples * peak * peak / sse);
- return psnr > MAX_PSNR ? MAX_PSNR : psnr;
- } else {
- return MAX_PSNR;
- }
-}
diff --git a/thirdparty/libvpx/vpx/vp8.h b/thirdparty/libvpx/vpx/vp8.h
deleted file mode 100644
index 8a035f9770..0000000000
--- a/thirdparty/libvpx/vpx/vp8.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-/*!\defgroup vp8 VP8
- * \ingroup codecs
- * VP8 is vpx's newest video compression algorithm that uses motion
- * compensated prediction, Discrete Cosine Transform (DCT) coding of the
- * prediction error signal and context dependent entropy coding techniques
- * based on arithmetic principles. It features:
- * - YUV 4:2:0 image format
- * - Macro-block based coding (16x16 luma plus two 8x8 chroma)
- * - 1/4 (1/8) pixel accuracy motion compensated prediction
- * - 4x4 DCT transform
- * - 128 level linear quantizer
- * - In loop deblocking filter
- * - Context-based entropy coding
- *
- * @{
- */
-/*!\file
- * \brief Provides controls common to both the VP8 encoder and decoder.
- */
-#ifndef VPX_VP8_H_
-#define VPX_VP8_H_
-
-#include "./vpx_codec.h"
-#include "./vpx_image.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!\brief Control functions
- *
- * The set of macros define the control functions of VP8 interface
- */
-enum vp8_com_control_id {
- VP8_SET_REFERENCE = 1, /**< pass in an external frame into decoder to be used as reference frame */
- VP8_COPY_REFERENCE = 2, /**< get a copy of reference frame from the decoder */
- VP8_SET_POSTPROC = 3, /**< set the decoder's post processing settings */
- VP8_SET_DBG_COLOR_REF_FRAME = 4, /**< set the reference frames to color for each macroblock */
- VP8_SET_DBG_COLOR_MB_MODES = 5, /**< set which macro block modes to color */
- VP8_SET_DBG_COLOR_B_MODES = 6, /**< set which blocks modes to color */
- VP8_SET_DBG_DISPLAY_MV = 7, /**< set which motion vector modes to draw */
-
- /* TODO(jkoleszar): The encoder incorrectly reuses some of these values (5+)
- * for its control ids. These should be migrated to something like the
- * VP8_DECODER_CTRL_ID_START range next time we're ready to break the ABI.
- */
- VP9_GET_REFERENCE = 128, /**< get a pointer to a reference frame */
- VP8_COMMON_CTRL_ID_MAX,
- VP8_DECODER_CTRL_ID_START = 256
-};
-
-/*!\brief post process flags
- *
- * The set of macros define VP8 decoder post processing flags
- */
-enum vp8_postproc_level {
- VP8_NOFILTERING = 0,
- VP8_DEBLOCK = 1 << 0,
- VP8_DEMACROBLOCK = 1 << 1,
- VP8_ADDNOISE = 1 << 2,
- VP8_DEBUG_TXT_FRAME_INFO = 1 << 3, /**< print frame information */
- VP8_DEBUG_TXT_MBLK_MODES = 1 << 4, /**< print macro block modes over each macro block */
- VP8_DEBUG_TXT_DC_DIFF = 1 << 5, /**< print dc diff for each macro block */
- VP8_DEBUG_TXT_RATE_INFO = 1 << 6, /**< print video rate info (encoder only) */
- VP8_MFQE = 1 << 10
-};
-
-/*!\brief post process flags
- *
- * This define a structure that describe the post processing settings. For
- * the best objective measure (using the PSNR metric) set post_proc_flag
- * to VP8_DEBLOCK and deblocking_level to 1.
- */
-
-typedef struct vp8_postproc_cfg {
- int post_proc_flag; /**< the types of post processing to be done, should be combination of "vp8_postproc_level" */
- int deblocking_level; /**< the strength of deblocking, valid range [0, 16] */
- int noise_level; /**< the strength of additive noise, valid range [0, 16] */
-} vp8_postproc_cfg_t;
-
-/*!\brief reference frame type
- *
- * The set of macros define the type of VP8 reference frames
- */
-typedef enum vpx_ref_frame_type {
- VP8_LAST_FRAME = 1,
- VP8_GOLD_FRAME = 2,
- VP8_ALTR_FRAME = 4
-} vpx_ref_frame_type_t;
-
-/*!\brief reference frame data struct
- *
- * Define the data struct to access vp8 reference frames.
- */
-typedef struct vpx_ref_frame {
- vpx_ref_frame_type_t frame_type; /**< which reference frame */
- vpx_image_t img; /**< reference frame data in image format */
-} vpx_ref_frame_t;
-
-/*!\brief VP9 specific reference frame data struct
- *
- * Define the data struct to access vp9 reference frames.
- */
-typedef struct vp9_ref_frame {
- int idx; /**< frame index to get (input) */
- vpx_image_t img; /**< img structure to populate (output) */
-} vp9_ref_frame_t;
-
-/*!\cond */
-/*!\brief vp8 decoder control function parameter type
- *
- * defines the data type for each of VP8 decoder control function requires
- */
-VPX_CTRL_USE_TYPE(VP8_SET_REFERENCE, vpx_ref_frame_t *)
-#define VPX_CTRL_VP8_SET_REFERENCE
-VPX_CTRL_USE_TYPE(VP8_COPY_REFERENCE, vpx_ref_frame_t *)
-#define VPX_CTRL_VP8_COPY_REFERENCE
-VPX_CTRL_USE_TYPE(VP8_SET_POSTPROC, vp8_postproc_cfg_t *)
-#define VPX_CTRL_VP8_SET_POSTPROC
-VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_REF_FRAME, int)
-#define VPX_CTRL_VP8_SET_DBG_COLOR_REF_FRAME
-VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_MB_MODES, int)
-#define VPX_CTRL_VP8_SET_DBG_COLOR_MB_MODES
-VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_B_MODES, int)
-#define VPX_CTRL_VP8_SET_DBG_COLOR_B_MODES
-VPX_CTRL_USE_TYPE(VP8_SET_DBG_DISPLAY_MV, int)
-#define VPX_CTRL_VP8_SET_DBG_DISPLAY_MV
-VPX_CTRL_USE_TYPE(VP9_GET_REFERENCE, vp9_ref_frame_t *)
-#define VPX_CTRL_VP9_GET_REFERENCE
-
-/*!\endcond */
-/*! @} - end defgroup vp8 */
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_VP8_H_
diff --git a/thirdparty/libvpx/vpx/vp8dx.h b/thirdparty/libvpx/vpx/vp8dx.h
deleted file mode 100644
index 67c97bb6c9..0000000000
--- a/thirdparty/libvpx/vpx/vp8dx.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-/*!\defgroup vp8_decoder WebM VP8/VP9 Decoder
- * \ingroup vp8
- *
- * @{
- */
-/*!\file
- * \brief Provides definitions for using VP8 or VP9 within the vpx Decoder
- * interface.
- */
-#ifndef VPX_VP8DX_H_
-#define VPX_VP8DX_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Include controls common to both the encoder and decoder */
-#include "./vp8.h"
-
-/*!\name Algorithm interface for VP8
- *
- * This interface provides the capability to decode VP8 streams.
- * @{
- */
-extern vpx_codec_iface_t vpx_codec_vp8_dx_algo;
-extern vpx_codec_iface_t *vpx_codec_vp8_dx(void);
-/*!@} - end algorithm interface member group*/
-
-/*!\name Algorithm interface for VP9
- *
- * This interface provides the capability to decode VP9 streams.
- * @{
- */
-extern vpx_codec_iface_t vpx_codec_vp9_dx_algo;
-extern vpx_codec_iface_t *vpx_codec_vp9_dx(void);
-/*!@} - end algorithm interface member group*/
-
-/*!\enum vp8_dec_control_id
- * \brief VP8 decoder control functions
- *
- * This set of macros define the control functions available for the VP8
- * decoder interface.
- *
- * \sa #vpx_codec_control
- */
-enum vp8_dec_control_id {
- /** control function to get info on which reference frames were updated
- * by the last decode
- */
- VP8D_GET_LAST_REF_UPDATES = VP8_DECODER_CTRL_ID_START,
-
- /** check if the indicated frame is corrupted */
- VP8D_GET_FRAME_CORRUPTED,
-
- /** control function to get info on which reference frames were used
- * by the last decode
- */
- VP8D_GET_LAST_REF_USED,
-
- /** decryption function to decrypt encoded buffer data immediately
- * before decoding. Takes a vpx_decrypt_init, which contains
- * a callback function and opaque context pointer.
- */
- VPXD_SET_DECRYPTOR,
- VP8D_SET_DECRYPTOR = VPXD_SET_DECRYPTOR,
-
- /** control function to get the dimensions that the current frame is decoded
- * at. This may be different to the intended display size for the frame as
- * specified in the wrapper or frame header (see VP9D_GET_DISPLAY_SIZE). */
- VP9D_GET_FRAME_SIZE,
-
- /** control function to get the current frame's intended display dimensions
- * (as specified in the wrapper or frame header). This may be different to
- * the decoded dimensions of this frame (see VP9D_GET_FRAME_SIZE). */
- VP9D_GET_DISPLAY_SIZE,
-
- /** control function to get the bit depth of the stream. */
- VP9D_GET_BIT_DEPTH,
-
- /** control function to set the byte alignment of the planes in the reference
- * buffers. Valid values are power of 2, from 32 to 1024. A value of 0 sets
- * legacy alignment. I.e. Y plane is aligned to 32 bytes, U plane directly
- * follows Y plane, and V plane directly follows U plane. Default value is 0.
- */
- VP9_SET_BYTE_ALIGNMENT,
-
- /** control function to invert the decoding order to from right to left. The
- * function is used in a test to confirm the decoding independence of tile
- * columns. The function may be used in application where this order
- * of decoding is desired.
- *
- * TODO(yaowu): Rework the unit test that uses this control, and in a future
- * release, this test-only control shall be removed.
- */
- VP9_INVERT_TILE_DECODE_ORDER,
-
- /** control function to set the skip loop filter flag. Valid values are
- * integers. The decoder will skip the loop filter when its value is set to
- * nonzero. If the loop filter is skipped the decoder may accumulate decode
- * artifacts. The default value is 0.
- */
- VP9_SET_SKIP_LOOP_FILTER,
-
- VP8_DECODER_CTRL_ID_MAX
-};
-
-/** Decrypt n bytes of data from input -> output, using the decrypt_state
- * passed in VPXD_SET_DECRYPTOR.
- */
-typedef void (*vpx_decrypt_cb)(void *decrypt_state, const unsigned char *input,
- unsigned char *output, int count);
-
-/*!\brief Structure to hold decryption state
- *
- * Defines a structure to hold the decryption state and access function.
- */
-typedef struct vpx_decrypt_init {
- /*! Decrypt callback. */
- vpx_decrypt_cb decrypt_cb;
-
- /*! Decryption state. */
- void *decrypt_state;
-} vpx_decrypt_init;
-
-/*!\brief A deprecated alias for vpx_decrypt_init.
- */
-typedef vpx_decrypt_init vp8_decrypt_init;
-
-
-/*!\cond */
-/*!\brief VP8 decoder control function parameter type
- *
- * Defines the data types that VP8D control functions take. Note that
- * additional common controls are defined in vp8.h
- *
- */
-
-
-VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *)
-#define VPX_CTRL_VP8D_GET_LAST_REF_UPDATES
-VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *)
-#define VPX_CTRL_VP8D_GET_FRAME_CORRUPTED
-VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_USED, int *)
-#define VPX_CTRL_VP8D_GET_LAST_REF_USED
-VPX_CTRL_USE_TYPE(VPXD_SET_DECRYPTOR, vpx_decrypt_init *)
-#define VPX_CTRL_VPXD_SET_DECRYPTOR
-VPX_CTRL_USE_TYPE(VP8D_SET_DECRYPTOR, vpx_decrypt_init *)
-#define VPX_CTRL_VP8D_SET_DECRYPTOR
-VPX_CTRL_USE_TYPE(VP9D_GET_DISPLAY_SIZE, int *)
-#define VPX_CTRL_VP9D_GET_DISPLAY_SIZE
-VPX_CTRL_USE_TYPE(VP9D_GET_BIT_DEPTH, unsigned int *)
-#define VPX_CTRL_VP9D_GET_BIT_DEPTH
-VPX_CTRL_USE_TYPE(VP9D_GET_FRAME_SIZE, int *)
-#define VPX_CTRL_VP9D_GET_FRAME_SIZE
-VPX_CTRL_USE_TYPE(VP9_INVERT_TILE_DECODE_ORDER, int)
-#define VPX_CTRL_VP9_INVERT_TILE_DECODE_ORDER
-
-/*!\endcond */
-/*! @} - end defgroup vp8_decoder */
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_VP8DX_H_
diff --git a/thirdparty/libvpx/vpx/vpx_codec.h b/thirdparty/libvpx/vpx/vpx_codec.h
deleted file mode 100644
index b6037bb4d7..0000000000
--- a/thirdparty/libvpx/vpx/vpx_codec.h
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-/*!\defgroup codec Common Algorithm Interface
- * This abstraction allows applications to easily support multiple video
- * formats with minimal code duplication. This section describes the interface
- * common to all codecs (both encoders and decoders).
- * @{
- */
-
-/*!\file
- * \brief Describes the codec algorithm interface to applications.
- *
- * This file describes the interface between an application and a
- * video codec algorithm.
- *
- * An application instantiates a specific codec instance by using
- * vpx_codec_init() and a pointer to the algorithm's interface structure:
- * <pre>
- * my_app.c:
- * extern vpx_codec_iface_t my_codec;
- * {
- * vpx_codec_ctx_t algo;
- * res = vpx_codec_init(&algo, &my_codec);
- * }
- * </pre>
- *
- * Once initialized, the instance is manged using other functions from
- * the vpx_codec_* family.
- */
-#ifndef VPX_VPX_CODEC_H_
-#define VPX_VPX_CODEC_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "./vpx_integer.h"
-#include "./vpx_image.h"
-
- /*!\brief Decorator indicating a function is deprecated */
-#ifndef DEPRECATED
-#if defined(__GNUC__) && __GNUC__
-#define DEPRECATED __attribute__ ((deprecated))
-#elif defined(_MSC_VER)
-#define DEPRECATED
-#else
-#define DEPRECATED
-#endif
-#endif /* DEPRECATED */
-
-#ifndef DECLSPEC_DEPRECATED
-#if defined(__GNUC__) && __GNUC__
-#define DECLSPEC_DEPRECATED /**< \copydoc #DEPRECATED */
-#elif defined(_MSC_VER)
-#define DECLSPEC_DEPRECATED __declspec(deprecated) /**< \copydoc #DEPRECATED */
-#else
-#define DECLSPEC_DEPRECATED /**< \copydoc #DEPRECATED */
-#endif
-#endif /* DECLSPEC_DEPRECATED */
-
- /*!\brief Decorator indicating a function is potentially unused */
-#ifdef UNUSED
-#elif defined(__GNUC__) || defined(__clang__)
-#define UNUSED __attribute__ ((unused))
-#else
-#define UNUSED
-#endif
-
- /*!\brief Current ABI version number
- *
- * \internal
- * If this file is altered in any way that changes the ABI, this value
- * must be bumped. Examples include, but are not limited to, changing
- * types, removing or reassigning enums, adding/removing/rearranging
- * fields to structures
- */
-#define VPX_CODEC_ABI_VERSION (3 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/
-
- /*!\brief Algorithm return codes */
- typedef enum {
- /*!\brief Operation completed without error */
- VPX_CODEC_OK,
-
- /*!\brief Unspecified error */
- VPX_CODEC_ERROR,
-
- /*!\brief Memory operation failed */
- VPX_CODEC_MEM_ERROR,
-
- /*!\brief ABI version mismatch */
- VPX_CODEC_ABI_MISMATCH,
-
- /*!\brief Algorithm does not have required capability */
- VPX_CODEC_INCAPABLE,
-
- /*!\brief The given bitstream is not supported.
- *
- * The bitstream was unable to be parsed at the highest level. The decoder
- * is unable to proceed. This error \ref SHOULD be treated as fatal to the
- * stream. */
- VPX_CODEC_UNSUP_BITSTREAM,
-
- /*!\brief Encoded bitstream uses an unsupported feature
- *
- * The decoder does not implement a feature required by the encoder. This
- * return code should only be used for features that prevent future
- * pictures from being properly decoded. This error \ref MAY be treated as
- * fatal to the stream or \ref MAY be treated as fatal to the current GOP.
- */
- VPX_CODEC_UNSUP_FEATURE,
-
- /*!\brief The coded data for this stream is corrupt or incomplete
- *
- * There was a problem decoding the current frame. This return code
- * should only be used for failures that prevent future pictures from
- * being properly decoded. This error \ref MAY be treated as fatal to the
- * stream or \ref MAY be treated as fatal to the current GOP. If decoding
- * is continued for the current GOP, artifacts may be present.
- */
- VPX_CODEC_CORRUPT_FRAME,
-
- /*!\brief An application-supplied parameter is not valid.
- *
- */
- VPX_CODEC_INVALID_PARAM,
-
- /*!\brief An iterator reached the end of list.
- *
- */
- VPX_CODEC_LIST_END
-
- }
- vpx_codec_err_t;
-
-
- /*! \brief Codec capabilities bitfield
- *
- * Each codec advertises the capabilities it supports as part of its
- * ::vpx_codec_iface_t interface structure. Capabilities are extra interfaces
- * or functionality, and are not required to be supported.
- *
- * The available flags are specified by VPX_CODEC_CAP_* defines.
- */
- typedef long vpx_codec_caps_t;
-#define VPX_CODEC_CAP_DECODER 0x1 /**< Is a decoder */
-#define VPX_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */
-
-
- /*! \brief Initialization-time Feature Enabling
- *
- * Certain codec features must be known at initialization time, to allow for
- * proper memory allocation.
- *
- * The available flags are specified by VPX_CODEC_USE_* defines.
- */
- typedef long vpx_codec_flags_t;
-
-
- /*!\brief Codec interface structure.
- *
- * Contains function pointers and other data private to the codec
- * implementation. This structure is opaque to the application.
- */
- typedef const struct vpx_codec_iface vpx_codec_iface_t;
-
-
- /*!\brief Codec private data structure.
- *
- * Contains data private to the codec implementation. This structure is opaque
- * to the application.
- */
- typedef struct vpx_codec_priv vpx_codec_priv_t;
-
-
- /*!\brief Iterator
- *
- * Opaque storage used for iterating over lists.
- */
- typedef const void *vpx_codec_iter_t;
-
-
- /*!\brief Codec context structure
- *
- * All codecs \ref MUST support this context structure fully. In general,
- * this data should be considered private to the codec algorithm, and
- * not be manipulated or examined by the calling application. Applications
- * may reference the 'name' member to get a printable description of the
- * algorithm.
- */
- typedef struct vpx_codec_ctx {
- const char *name; /**< Printable interface name */
- vpx_codec_iface_t *iface; /**< Interface pointers */
- vpx_codec_err_t err; /**< Last returned error */
- const char *err_detail; /**< Detailed info, if available */
- vpx_codec_flags_t init_flags; /**< Flags passed at init time */
- union {
- /**< Decoder Configuration Pointer */
- const struct vpx_codec_dec_cfg *dec;
- /**< Encoder Configuration Pointer */
- const struct vpx_codec_enc_cfg *enc;
- const void *raw;
- } config; /**< Configuration pointer aliasing union */
- vpx_codec_priv_t *priv; /**< Algorithm private storage */
- } vpx_codec_ctx_t;
-
- /*!\brief Bit depth for codec
- * *
- * This enumeration determines the bit depth of the codec.
- */
- typedef enum vpx_bit_depth {
- VPX_BITS_8 = 8, /**< 8 bits */
- VPX_BITS_10 = 10, /**< 10 bits */
- VPX_BITS_12 = 12, /**< 12 bits */
- } vpx_bit_depth_t;
-
- /*
- * Library Version Number Interface
- *
- * For example, see the following sample return values:
- * vpx_codec_version() (1<<16 | 2<<8 | 3)
- * vpx_codec_version_str() "v1.2.3-rc1-16-gec6a1ba"
- * vpx_codec_version_extra_str() "rc1-16-gec6a1ba"
- */
-
- /*!\brief Return the version information (as an integer)
- *
- * Returns a packed encoding of the library version number. This will only include
- * the major.minor.patch component of the version number. Note that this encoded
- * value should be accessed through the macros provided, as the encoding may change
- * in the future.
- *
- */
- int vpx_codec_version(void);
-#define VPX_VERSION_MAJOR(v) ((v>>16)&0xff) /**< extract major from packed version */
-#define VPX_VERSION_MINOR(v) ((v>>8)&0xff) /**< extract minor from packed version */
-#define VPX_VERSION_PATCH(v) ((v>>0)&0xff) /**< extract patch from packed version */
-
- /*!\brief Return the version major number */
-#define vpx_codec_version_major() ((vpx_codec_version()>>16)&0xff)
-
- /*!\brief Return the version minor number */
-#define vpx_codec_version_minor() ((vpx_codec_version()>>8)&0xff)
-
- /*!\brief Return the version patch number */
-#define vpx_codec_version_patch() ((vpx_codec_version()>>0)&0xff)
-
-
- /*!\brief Return the version information (as a string)
- *
- * Returns a printable string containing the full library version number. This may
- * contain additional text following the three digit version number, as to indicate
- * release candidates, prerelease versions, etc.
- *
- */
- const char *vpx_codec_version_str(void);
-
-
- /*!\brief Return the version information (as a string)
- *
- * Returns a printable "extra string". This is the component of the string returned
- * by vpx_codec_version_str() following the three digit version number.
- *
- */
- const char *vpx_codec_version_extra_str(void);
-
-
- /*!\brief Return the build configuration
- *
- * Returns a printable string containing an encoded version of the build
- * configuration. This may be useful to vpx support.
- *
- */
- const char *vpx_codec_build_config(void);
-
-
- /*!\brief Return the name for a given interface
- *
- * Returns a human readable string for name of the given codec interface.
- *
- * \param[in] iface Interface pointer
- *
- */
- const char *vpx_codec_iface_name(vpx_codec_iface_t *iface);
-
-
- /*!\brief Convert error number to printable string
- *
- * Returns a human readable string for the last error returned by the
- * algorithm. The returned error will be one line and will not contain
- * any newline characters.
- *
- *
- * \param[in] err Error number.
- *
- */
- const char *vpx_codec_err_to_string(vpx_codec_err_t err);
-
-
- /*!\brief Retrieve error synopsis for codec context
- *
- * Returns a human readable string for the last error returned by the
- * algorithm. The returned error will be one line and will not contain
- * any newline characters.
- *
- *
- * \param[in] ctx Pointer to this instance's context.
- *
- */
- const char *vpx_codec_error(vpx_codec_ctx_t *ctx);
-
-
- /*!\brief Retrieve detailed error information for codec context
- *
- * Returns a human readable string providing detailed information about
- * the last error.
- *
- * \param[in] ctx Pointer to this instance's context.
- *
- * \retval NULL
- * No detailed information is available.
- */
- const char *vpx_codec_error_detail(vpx_codec_ctx_t *ctx);
-
-
- /* REQUIRED FUNCTIONS
- *
- * The following functions are required to be implemented for all codecs.
- * They represent the base case functionality expected of all codecs.
- */
-
- /*!\brief Destroy a codec instance
- *
- * Destroys a codec context, freeing any associated memory buffers.
- *
- * \param[in] ctx Pointer to this instance's context
- *
- * \retval #VPX_CODEC_OK
- * The codec algorithm initialized.
- * \retval #VPX_CODEC_MEM_ERROR
- * Memory allocation failed.
- */
- vpx_codec_err_t vpx_codec_destroy(vpx_codec_ctx_t *ctx);
-
-
- /*!\brief Get the capabilities of an algorithm.
- *
- * Retrieves the capabilities bitfield from the algorithm's interface.
- *
- * \param[in] iface Pointer to the algorithm interface
- *
- */
- vpx_codec_caps_t vpx_codec_get_caps(vpx_codec_iface_t *iface);
-
-
- /*!\brief Control algorithm
- *
- * This function is used to exchange algorithm specific data with the codec
- * instance. This can be used to implement features specific to a particular
- * algorithm.
- *
- * This wrapper function dispatches the request to the helper function
- * associated with the given ctrl_id. It tries to call this function
- * transparently, but will return #VPX_CODEC_ERROR if the request could not
- * be dispatched.
- *
- * Note that this function should not be used directly. Call the
- * #vpx_codec_control wrapper macro instead.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] ctrl_id Algorithm specific control identifier
- *
- * \retval #VPX_CODEC_OK
- * The control request was processed.
- * \retval #VPX_CODEC_ERROR
- * The control request was not processed.
- * \retval #VPX_CODEC_INVALID_PARAM
- * The data was not valid.
- */
- vpx_codec_err_t vpx_codec_control_(vpx_codec_ctx_t *ctx,
- int ctrl_id,
- ...);
-#if defined(VPX_DISABLE_CTRL_TYPECHECKS) && VPX_DISABLE_CTRL_TYPECHECKS
-# define vpx_codec_control(ctx,id,data) vpx_codec_control_(ctx,id,data)
-# define VPX_CTRL_USE_TYPE(id, typ)
-# define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ)
-# define VPX_CTRL_VOID(id, typ)
-
-#else
- /*!\brief vpx_codec_control wrapper macro
- *
- * This macro allows for type safe conversions across the variadic parameter
- * to vpx_codec_control_().
- *
- * \internal
- * It works by dispatching the call to the control function through a wrapper
- * function named with the id parameter.
- */
-# define vpx_codec_control(ctx,id,data) vpx_codec_control_##id(ctx,id,data)\
- /**<\hideinitializer*/
-
-
- /*!\brief vpx_codec_control type definition macro
- *
- * This macro allows for type safe conversions across the variadic parameter
- * to vpx_codec_control_(). It defines the type of the argument for a given
- * control identifier.
- *
- * \internal
- * It defines a static function with
- * the correctly typed arguments as a wrapper to the type-unsafe internal
- * function.
- */
-# define VPX_CTRL_USE_TYPE(id, typ) \
- static vpx_codec_err_t \
- vpx_codec_control_##id(vpx_codec_ctx_t*, int, typ) UNUSED;\
- \
- static vpx_codec_err_t \
- vpx_codec_control_##id(vpx_codec_ctx_t *ctx, int ctrl_id, typ data) {\
- return vpx_codec_control_(ctx, ctrl_id, data);\
- } /**<\hideinitializer*/
-
-
- /*!\brief vpx_codec_control deprecated type definition macro
- *
- * Like #VPX_CTRL_USE_TYPE, but indicates that the specified control is
- * deprecated and should not be used. Consult the documentation for your
- * codec for more information.
- *
- * \internal
- * It defines a static function with the correctly typed arguments as a
- * wrapper to the type-unsafe internal function.
- */
-# define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ) \
- DECLSPEC_DEPRECATED static vpx_codec_err_t \
- vpx_codec_control_##id(vpx_codec_ctx_t*, int, typ) DEPRECATED UNUSED;\
- \
- DECLSPEC_DEPRECATED static vpx_codec_err_t \
- vpx_codec_control_##id(vpx_codec_ctx_t *ctx, int ctrl_id, typ data) {\
- return vpx_codec_control_(ctx, ctrl_id, data);\
- } /**<\hideinitializer*/
-
-
- /*!\brief vpx_codec_control void type definition macro
- *
- * This macro allows for type safe conversions across the variadic parameter
- * to vpx_codec_control_(). It indicates that a given control identifier takes
- * no argument.
- *
- * \internal
- * It defines a static function without a data argument as a wrapper to the
- * type-unsafe internal function.
- */
-# define VPX_CTRL_VOID(id) \
- static vpx_codec_err_t \
- vpx_codec_control_##id(vpx_codec_ctx_t*, int) UNUSED;\
- \
- static vpx_codec_err_t \
- vpx_codec_control_##id(vpx_codec_ctx_t *ctx, int ctrl_id) {\
- return vpx_codec_control_(ctx, ctrl_id);\
- } /**<\hideinitializer*/
-
-
-#endif
-
- /*!@} - end defgroup codec*/
-#ifdef __cplusplus
-}
-#endif
-#endif // VPX_VPX_CODEC_H_
-
diff --git a/thirdparty/libvpx/vpx/vpx_decoder.h b/thirdparty/libvpx/vpx/vpx_decoder.h
deleted file mode 100644
index 62fd919756..0000000000
--- a/thirdparty/libvpx/vpx/vpx_decoder.h
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef VPX_VPX_DECODER_H_
-#define VPX_VPX_DECODER_H_
-
-/*!\defgroup decoder Decoder Algorithm Interface
- * \ingroup codec
- * This abstraction allows applications using this decoder to easily support
- * multiple video formats with minimal code duplication. This section describes
- * the interface common to all decoders.
- * @{
- */
-
-/*!\file
- * \brief Describes the decoder algorithm interface to applications.
- *
- * This file describes the interface between an application and a
- * video decoder algorithm.
- *
- */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "./vpx_codec.h"
-#include "./vpx_frame_buffer.h"
-
- /*!\brief Current ABI version number
- *
- * \internal
- * If this file is altered in any way that changes the ABI, this value
- * must be bumped. Examples include, but are not limited to, changing
- * types, removing or reassigning enums, adding/removing/rearranging
- * fields to structures
- */
-#define VPX_DECODER_ABI_VERSION (3 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/
-
- /*! \brief Decoder capabilities bitfield
- *
- * Each decoder advertises the capabilities it supports as part of its
- * ::vpx_codec_iface_t interface structure. Capabilities are extra interfaces
- * or functionality, and are not required to be supported by a decoder.
- *
- * The available flags are specified by VPX_CODEC_CAP_* defines.
- */
-#define VPX_CODEC_CAP_PUT_SLICE 0x10000 /**< Will issue put_slice callbacks */
-#define VPX_CODEC_CAP_PUT_FRAME 0x20000 /**< Will issue put_frame callbacks */
-#define VPX_CODEC_CAP_POSTPROC 0x40000 /**< Can postprocess decoded frame */
-#define VPX_CODEC_CAP_ERROR_CONCEALMENT 0x80000 /**< Can conceal errors due to
- packet loss */
-#define VPX_CODEC_CAP_INPUT_FRAGMENTS 0x100000 /**< Can receive encoded frames
- one fragment at a time */
-
- /*! \brief Initialization-time Feature Enabling
- *
- * Certain codec features must be known at initialization time, to allow for
- * proper memory allocation.
- *
- * The available flags are specified by VPX_CODEC_USE_* defines.
- */
-#define VPX_CODEC_CAP_FRAME_THREADING 0x200000 /**< Can support frame-based
- multi-threading */
-#define VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x400000 /**< Can support external
- frame buffers */
-
-#define VPX_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */
-#define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000 /**< Conceal errors in decoded
- frames */
-#define VPX_CODEC_USE_INPUT_FRAGMENTS 0x40000 /**< The input frame should be
- passed to the decoder one
- fragment at a time */
-#define VPX_CODEC_USE_FRAME_THREADING 0x80000 /**< Enable frame-based
- multi-threading */
-
- /*!\brief Stream properties
- *
- * This structure is used to query or set properties of the decoded
- * stream. Algorithms may extend this structure with data specific
- * to their bitstream by setting the sz member appropriately.
- */
- typedef struct vpx_codec_stream_info {
- unsigned int sz; /**< Size of this structure */
- unsigned int w; /**< Width (or 0 for unknown/default) */
- unsigned int h; /**< Height (or 0 for unknown/default) */
- unsigned int is_kf; /**< Current frame is a keyframe */
- } vpx_codec_stream_info_t;
-
- /* REQUIRED FUNCTIONS
- *
- * The following functions are required to be implemented for all decoders.
- * They represent the base case functionality expected of all decoders.
- */
-
-
- /*!\brief Initialization Configurations
- *
- * This structure is used to pass init time configuration options to the
- * decoder.
- */
- typedef struct vpx_codec_dec_cfg {
- unsigned int threads; /**< Maximum number of threads to use, default 1 */
- unsigned int w; /**< Width */
- unsigned int h; /**< Height */
- } vpx_codec_dec_cfg_t; /**< alias for struct vpx_codec_dec_cfg */
-
-
- /*!\brief Initialize a decoder instance
- *
- * Initializes a decoder context using the given interface. Applications
- * should call the vpx_codec_dec_init convenience macro instead of this
- * function directly, to ensure that the ABI version number parameter
- * is properly initialized.
- *
- * If the library was configured with --disable-multithread, this call
- * is not thread safe and should be guarded with a lock if being used
- * in a multithreaded context.
- *
- * \param[in] ctx Pointer to this instance's context.
- * \param[in] iface Pointer to the algorithm interface to use.
- * \param[in] cfg Configuration to use, if known. May be NULL.
- * \param[in] flags Bitfield of VPX_CODEC_USE_* flags
- * \param[in] ver ABI version number. Must be set to
- * VPX_DECODER_ABI_VERSION
- * \retval #VPX_CODEC_OK
- * The decoder algorithm initialized.
- * \retval #VPX_CODEC_MEM_ERROR
- * Memory allocation failed.
- */
- vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx,
- vpx_codec_iface_t *iface,
- const vpx_codec_dec_cfg_t *cfg,
- vpx_codec_flags_t flags,
- int ver);
-
- /*!\brief Convenience macro for vpx_codec_dec_init_ver()
- *
- * Ensures the ABI version parameter is properly set.
- */
-#define vpx_codec_dec_init(ctx, iface, cfg, flags) \
- vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION)
-
-
- /*!\brief Parse stream info from a buffer
- *
- * Performs high level parsing of the bitstream. Construction of a decoder
- * context is not necessary. Can be used to determine if the bitstream is
- * of the proper format, and to extract information from the stream.
- *
- * \param[in] iface Pointer to the algorithm interface
- * \param[in] data Pointer to a block of data to parse
- * \param[in] data_sz Size of the data buffer
- * \param[in,out] si Pointer to stream info to update. The size member
- * \ref MUST be properly initialized, but \ref MAY be
- * clobbered by the algorithm. This parameter \ref MAY
- * be NULL.
- *
- * \retval #VPX_CODEC_OK
- * Bitstream is parsable and stream information updated
- */
- vpx_codec_err_t vpx_codec_peek_stream_info(vpx_codec_iface_t *iface,
- const uint8_t *data,
- unsigned int data_sz,
- vpx_codec_stream_info_t *si);
-
-
- /*!\brief Return information about the current stream.
- *
- * Returns information about the stream that has been parsed during decoding.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in,out] si Pointer to stream info to update. The size member
- * \ref MUST be properly initialized, but \ref MAY be
- * clobbered by the algorithm. This parameter \ref MAY
- * be NULL.
- *
- * \retval #VPX_CODEC_OK
- * Bitstream is parsable and stream information updated
- */
- vpx_codec_err_t vpx_codec_get_stream_info(vpx_codec_ctx_t *ctx,
- vpx_codec_stream_info_t *si);
-
-
- /*!\brief Decode data
- *
- * Processes a buffer of coded data. If the processing results in a new
- * decoded frame becoming available, PUT_SLICE and PUT_FRAME events may be
- * generated, as appropriate. Encoded data \ref MUST be passed in DTS (decode
- * time stamp) order. Frames produced will always be in PTS (presentation
- * time stamp) order.
- * If the decoder is configured with VPX_CODEC_USE_INPUT_FRAGMENTS enabled,
- * data and data_sz can contain a fragment of the encoded frame. Fragment
- * \#n must contain at least partition \#n, but can also contain subsequent
- * partitions (\#n+1 - \#n+i), and if so, fragments \#n+1, .., \#n+i must
- * be empty. When no more data is available, this function should be called
- * with NULL as data and 0 as data_sz. The memory passed to this function
- * must be available until the frame has been decoded.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] data Pointer to this block of new coded data. If
- * NULL, a VPX_CODEC_CB_PUT_FRAME event is posted
- * for the previously decoded frame.
- * \param[in] data_sz Size of the coded data, in bytes.
- * \param[in] user_priv Application specific data to associate with
- * this frame.
- * \param[in] deadline Soft deadline the decoder should attempt to meet,
- * in us. Set to zero for unlimited.
- *
- * \return Returns #VPX_CODEC_OK if the coded data was processed completely
- * and future pictures can be decoded without error. Otherwise,
- * see the descriptions of the other error codes in ::vpx_codec_err_t
- * for recoverability capabilities.
- */
- vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx,
- const uint8_t *data,
- unsigned int data_sz,
- void *user_priv,
- long deadline);
-
-
- /*!\brief Decoded frames iterator
- *
- * Iterates over a list of the frames available for display. The iterator
- * storage should be initialized to NULL to start the iteration. Iteration is
- * complete when this function returns NULL.
- *
- * The list of available frames becomes valid upon completion of the
- * vpx_codec_decode call, and remains valid until the next call to vpx_codec_decode.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in,out] iter Iterator storage, initialized to NULL
- *
- * \return Returns a pointer to an image, if one is ready for display. Frames
- * produced will always be in PTS (presentation time stamp) order.
- */
- vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx,
- vpx_codec_iter_t *iter);
-
-
- /*!\defgroup cap_put_frame Frame-Based Decoding Functions
- *
- * The following functions are required to be implemented for all decoders
- * that advertise the VPX_CODEC_CAP_PUT_FRAME capability. Calling these functions
- * for codecs that don't advertise this capability will result in an error
- * code being returned, usually VPX_CODEC_ERROR
- * @{
- */
-
- /*!\brief put frame callback prototype
- *
- * This callback is invoked by the decoder to notify the application of
- * the availability of decoded image data.
- */
- typedef void (*vpx_codec_put_frame_cb_fn_t)(void *user_priv,
- const vpx_image_t *img);
-
-
- /*!\brief Register for notification of frame completion.
- *
- * Registers a given function to be called when a decoded frame is
- * available.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] cb Pointer to the callback function
- * \param[in] user_priv User's private data
- *
- * \retval #VPX_CODEC_OK
- * Callback successfully registered.
- * \retval #VPX_CODEC_ERROR
- * Decoder context not initialized, or algorithm not capable of
- * posting slice completion.
- */
- vpx_codec_err_t vpx_codec_register_put_frame_cb(vpx_codec_ctx_t *ctx,
- vpx_codec_put_frame_cb_fn_t cb,
- void *user_priv);
-
-
- /*!@} - end defgroup cap_put_frame */
-
- /*!\defgroup cap_put_slice Slice-Based Decoding Functions
- *
- * The following functions are required to be implemented for all decoders
- * that advertise the VPX_CODEC_CAP_PUT_SLICE capability. Calling these functions
- * for codecs that don't advertise this capability will result in an error
- * code being returned, usually VPX_CODEC_ERROR
- * @{
- */
-
- /*!\brief put slice callback prototype
- *
- * This callback is invoked by the decoder to notify the application of
- * the availability of partially decoded image data. The
- */
- typedef void (*vpx_codec_put_slice_cb_fn_t)(void *user_priv,
- const vpx_image_t *img,
- const vpx_image_rect_t *valid,
- const vpx_image_rect_t *update);
-
-
- /*!\brief Register for notification of slice completion.
- *
- * Registers a given function to be called when a decoded slice is
- * available.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] cb Pointer to the callback function
- * \param[in] user_priv User's private data
- *
- * \retval #VPX_CODEC_OK
- * Callback successfully registered.
- * \retval #VPX_CODEC_ERROR
- * Decoder context not initialized, or algorithm not capable of
- * posting slice completion.
- */
- vpx_codec_err_t vpx_codec_register_put_slice_cb(vpx_codec_ctx_t *ctx,
- vpx_codec_put_slice_cb_fn_t cb,
- void *user_priv);
-
-
- /*!@} - end defgroup cap_put_slice*/
-
- /*!\defgroup cap_external_frame_buffer External Frame Buffer Functions
- *
- * The following section is required to be implemented for all decoders
- * that advertise the VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER capability.
- * Calling this function for codecs that don't advertise this capability
- * will result in an error code being returned, usually VPX_CODEC_ERROR.
- *
- * \note
- * Currently this only works with VP9.
- * @{
- */
-
- /*!\brief Pass in external frame buffers for the decoder to use.
- *
- * Registers functions to be called when libvpx needs a frame buffer
- * to decode the current frame and a function to be called when libvpx does
- * not internally reference the frame buffer. This set function must
- * be called before the first call to decode or libvpx will assume the
- * default behavior of allocating frame buffers internally.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] cb_get Pointer to the get callback function
- * \param[in] cb_release Pointer to the release callback function
- * \param[in] cb_priv Callback's private data
- *
- * \retval #VPX_CODEC_OK
- * External frame buffers will be used by libvpx.
- * \retval #VPX_CODEC_INVALID_PARAM
- * One or more of the callbacks were NULL.
- * \retval #VPX_CODEC_ERROR
- * Decoder context not initialized, or algorithm not capable of
- * using external frame buffers.
- *
- * \note
- * When decoding VP9, the application may be required to pass in at least
- * #VP9_MAXIMUM_REF_BUFFERS + #VPX_MAXIMUM_WORK_BUFFERS external frame
- * buffers.
- */
- vpx_codec_err_t vpx_codec_set_frame_buffer_functions(
- vpx_codec_ctx_t *ctx,
- vpx_get_frame_buffer_cb_fn_t cb_get,
- vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv);
-
- /*!@} - end defgroup cap_external_frame_buffer */
-
- /*!@} - end defgroup decoder*/
-#ifdef __cplusplus
-}
-#endif
-#endif // VPX_VPX_DECODER_H_
-
diff --git a/thirdparty/libvpx/vpx/vpx_encoder.h b/thirdparty/libvpx/vpx/vpx_encoder.h
deleted file mode 100644
index 955e873519..0000000000
--- a/thirdparty/libvpx/vpx/vpx_encoder.h
+++ /dev/null
@@ -1,1043 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef VPX_VPX_ENCODER_H_
-#define VPX_VPX_ENCODER_H_
-
-/*!\defgroup encoder Encoder Algorithm Interface
- * \ingroup codec
- * This abstraction allows applications using this encoder to easily support
- * multiple video formats with minimal code duplication. This section describes
- * the interface common to all encoders.
- * @{
- */
-
-/*!\file
- * \brief Describes the encoder algorithm interface to applications.
- *
- * This file describes the interface between an application and a
- * video encoder algorithm.
- *
- */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "./vpx_codec.h"
-
- /*! Temporal Scalability: Maximum length of the sequence defining frame
- * layer membership
- */
-#define VPX_TS_MAX_PERIODICITY 16
-
- /*! Temporal Scalability: Maximum number of coding layers */
-#define VPX_TS_MAX_LAYERS 5
-
- /*!\deprecated Use #VPX_TS_MAX_PERIODICITY instead. */
-#define MAX_PERIODICITY VPX_TS_MAX_PERIODICITY
-
-/*! Temporal+Spatial Scalability: Maximum number of coding layers */
-#define VPX_MAX_LAYERS 12 // 3 temporal + 4 spatial layers are allowed.
-
-/*!\deprecated Use #VPX_MAX_LAYERS instead. */
-#define MAX_LAYERS VPX_MAX_LAYERS // 3 temporal + 4 spatial layers allowed.
-
-/*! Spatial Scalability: Maximum number of coding layers */
-#define VPX_SS_MAX_LAYERS 5
-
-/*! Spatial Scalability: Default number of coding layers */
-#define VPX_SS_DEFAULT_LAYERS 1
-
- /*!\brief Current ABI version number
- *
- * \internal
- * If this file is altered in any way that changes the ABI, this value
- * must be bumped. Examples include, but are not limited to, changing
- * types, removing or reassigning enums, adding/removing/rearranging
- * fields to structures
- */
-#define VPX_ENCODER_ABI_VERSION (5 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/
-
-
- /*! \brief Encoder capabilities bitfield
- *
- * Each encoder advertises the capabilities it supports as part of its
- * ::vpx_codec_iface_t interface structure. Capabilities are extra
- * interfaces or functionality, and are not required to be supported
- * by an encoder.
- *
- * The available flags are specified by VPX_CODEC_CAP_* defines.
- */
-#define VPX_CODEC_CAP_PSNR 0x10000 /**< Can issue PSNR packets */
-
- /*! Can output one partition at a time. Each partition is returned in its
- * own VPX_CODEC_CX_FRAME_PKT, with the FRAME_IS_FRAGMENT flag set for
- * every partition but the last. In this mode all frames are always
- * returned partition by partition.
- */
-#define VPX_CODEC_CAP_OUTPUT_PARTITION 0x20000
-
-/*! Can support input images at greater than 8 bitdepth.
- */
-#define VPX_CODEC_CAP_HIGHBITDEPTH 0x40000
-
- /*! \brief Initialization-time Feature Enabling
- *
- * Certain codec features must be known at initialization time, to allow
- * for proper memory allocation.
- *
- * The available flags are specified by VPX_CODEC_USE_* defines.
- */
-#define VPX_CODEC_USE_PSNR 0x10000 /**< Calculate PSNR on each frame */
-#define VPX_CODEC_USE_OUTPUT_PARTITION 0x20000 /**< Make the encoder output one
- partition at a time. */
-#define VPX_CODEC_USE_HIGHBITDEPTH 0x40000 /**< Use high bitdepth */
-
-
- /*!\brief Generic fixed size buffer structure
- *
- * This structure is able to hold a reference to any fixed size buffer.
- */
- typedef struct vpx_fixed_buf {
- void *buf; /**< Pointer to the data */
- size_t sz; /**< Length of the buffer, in chars */
- } vpx_fixed_buf_t; /**< alias for struct vpx_fixed_buf */
-
-
- /*!\brief Time Stamp Type
- *
- * An integer, which when multiplied by the stream's time base, provides
- * the absolute time of a sample.
- */
- typedef int64_t vpx_codec_pts_t;
-
-
- /*!\brief Compressed Frame Flags
- *
- * This type represents a bitfield containing information about a compressed
- * frame that may be useful to an application. The most significant 16 bits
- * can be used by an algorithm to provide additional detail, for example to
- * support frame types that are codec specific (MPEG-1 D-frames for example)
- */
- typedef uint32_t vpx_codec_frame_flags_t;
-#define VPX_FRAME_IS_KEY 0x1 /**< frame is the start of a GOP */
-#define VPX_FRAME_IS_DROPPABLE 0x2 /**< frame can be dropped without affecting
- the stream (no future frame depends on
- this one) */
-#define VPX_FRAME_IS_INVISIBLE 0x4 /**< frame should be decoded but will not
- be shown */
-#define VPX_FRAME_IS_FRAGMENT 0x8 /**< this is a fragment of the encoded
- frame */
-
- /*!\brief Error Resilient flags
- *
- * These flags define which error resilient features to enable in the
- * encoder. The flags are specified through the
- * vpx_codec_enc_cfg::g_error_resilient variable.
- */
- typedef uint32_t vpx_codec_er_flags_t;
-#define VPX_ERROR_RESILIENT_DEFAULT 0x1 /**< Improve resiliency against
- losses of whole frames */
-#define VPX_ERROR_RESILIENT_PARTITIONS 0x2 /**< The frame partitions are
- independently decodable by the
- bool decoder, meaning that
- partitions can be decoded even
- though earlier partitions have
- been lost. Note that intra
- prediction is still done over
- the partition boundary. */
-
- /*!\brief Encoder output packet variants
- *
- * This enumeration lists the different kinds of data packets that can be
- * returned by calls to vpx_codec_get_cx_data(). Algorithms \ref MAY
- * extend this list to provide additional functionality.
- */
- enum vpx_codec_cx_pkt_kind {
- VPX_CODEC_CX_FRAME_PKT, /**< Compressed video frame */
- VPX_CODEC_STATS_PKT, /**< Two-pass statistics for this frame */
- VPX_CODEC_FPMB_STATS_PKT, /**< first pass mb statistics for this frame */
- VPX_CODEC_PSNR_PKT, /**< PSNR statistics for this frame */
- // Spatial SVC is still experimental and may be removed before the next ABI
- // bump.
-#if VPX_ENCODER_ABI_VERSION > (5 + VPX_CODEC_ABI_VERSION)
- VPX_CODEC_SPATIAL_SVC_LAYER_SIZES, /**< Sizes for each layer in this frame*/
- VPX_CODEC_SPATIAL_SVC_LAYER_PSNR, /**< PSNR for each layer in this frame*/
-#endif
- VPX_CODEC_CUSTOM_PKT = 256 /**< Algorithm extensions */
- };
-
-
- /*!\brief Encoder output packet
- *
- * This structure contains the different kinds of output data the encoder
- * may produce while compressing a frame.
- */
- typedef struct vpx_codec_cx_pkt {
- enum vpx_codec_cx_pkt_kind kind; /**< packet variant */
- union {
- struct {
- void *buf; /**< compressed data buffer */
- size_t sz; /**< length of compressed data */
- vpx_codec_pts_t pts; /**< time stamp to show frame
- (in timebase units) */
- unsigned long duration; /**< duration to show frame
- (in timebase units) */
- vpx_codec_frame_flags_t flags; /**< flags for this frame */
- int partition_id; /**< the partition id
- defines the decoding order
- of the partitions. Only
- applicable when "output partition"
- mode is enabled. First partition
- has id 0.*/
-
- } frame; /**< data for compressed frame packet */
- vpx_fixed_buf_t twopass_stats; /**< data for two-pass packet */
- vpx_fixed_buf_t firstpass_mb_stats; /**< first pass mb packet */
- struct vpx_psnr_pkt {
- unsigned int samples[4]; /**< Number of samples, total/y/u/v */
- uint64_t sse[4]; /**< sum squared error, total/y/u/v */
- double psnr[4]; /**< PSNR, total/y/u/v */
- } psnr; /**< data for PSNR packet */
- vpx_fixed_buf_t raw; /**< data for arbitrary packets */
- // Spatial SVC is still experimental and may be removed before the next
- // ABI bump.
-#if VPX_ENCODER_ABI_VERSION > (5 + VPX_CODEC_ABI_VERSION)
- size_t layer_sizes[VPX_SS_MAX_LAYERS];
- struct vpx_psnr_pkt layer_psnr[VPX_SS_MAX_LAYERS];
-#endif
-
- /* This packet size is fixed to allow codecs to extend this
- * interface without having to manage storage for raw packets,
- * i.e., if it's smaller than 128 bytes, you can store in the
- * packet list directly.
- */
- char pad[128 - sizeof(enum vpx_codec_cx_pkt_kind)]; /**< fixed sz */
- } data; /**< packet data */
- } vpx_codec_cx_pkt_t; /**< alias for struct vpx_codec_cx_pkt */
-
-
- /*!\brief Encoder return output buffer callback
- *
- * This callback function, when registered, returns with packets when each
- * spatial layer is encoded.
- */
- // putting the definitions here for now. (agrange: find if there
- // is a better place for this)
- typedef void (* vpx_codec_enc_output_cx_pkt_cb_fn_t)(vpx_codec_cx_pkt_t *pkt,
- void *user_data);
-
- /*!\brief Callback function pointer / user data pair storage */
- typedef struct vpx_codec_enc_output_cx_cb_pair {
- vpx_codec_enc_output_cx_pkt_cb_fn_t output_cx_pkt; /**< Callback function */
- void *user_priv; /**< Pointer to private data */
- } vpx_codec_priv_output_cx_pkt_cb_pair_t;
-
- /*!\brief Rational Number
- *
- * This structure holds a fractional value.
- */
- typedef struct vpx_rational {
- int num; /**< fraction numerator */
- int den; /**< fraction denominator */
- } vpx_rational_t; /**< alias for struct vpx_rational */
-
-
- /*!\brief Multi-pass Encoding Pass */
- enum vpx_enc_pass {
- VPX_RC_ONE_PASS, /**< Single pass mode */
- VPX_RC_FIRST_PASS, /**< First pass of multi-pass mode */
- VPX_RC_LAST_PASS /**< Final pass of multi-pass mode */
- };
-
-
- /*!\brief Rate control mode */
- enum vpx_rc_mode {
- VPX_VBR, /**< Variable Bit Rate (VBR) mode */
- VPX_CBR, /**< Constant Bit Rate (CBR) mode */
- VPX_CQ, /**< Constrained Quality (CQ) mode */
- VPX_Q, /**< Constant Quality (Q) mode */
- };
-
-
- /*!\brief Keyframe placement mode.
- *
- * This enumeration determines whether keyframes are placed automatically by
- * the encoder or whether this behavior is disabled. Older releases of this
- * SDK were implemented such that VPX_KF_FIXED meant keyframes were disabled.
- * This name is confusing for this behavior, so the new symbols to be used
- * are VPX_KF_AUTO and VPX_KF_DISABLED.
- */
- enum vpx_kf_mode {
- VPX_KF_FIXED, /**< deprecated, implies VPX_KF_DISABLED */
- VPX_KF_AUTO, /**< Encoder determines optimal placement automatically */
- VPX_KF_DISABLED = 0 /**< Encoder does not place keyframes. */
- };
-
-
- /*!\brief Encoded Frame Flags
- *
- * This type indicates a bitfield to be passed to vpx_codec_encode(), defining
- * per-frame boolean values. By convention, bits common to all codecs will be
- * named VPX_EFLAG_*, and bits specific to an algorithm will be named
- * /algo/_eflag_*. The lower order 16 bits are reserved for common use.
- */
- typedef long vpx_enc_frame_flags_t;
-#define VPX_EFLAG_FORCE_KF (1<<0) /**< Force this frame to be a keyframe */
-
-
- /*!\brief Encoder configuration structure
- *
- * This structure contains the encoder settings that have common representations
- * across all codecs. This doesn't imply that all codecs support all features,
- * however.
- */
- typedef struct vpx_codec_enc_cfg {
- /*
- * generic settings (g)
- */
-
- /*!\brief Algorithm specific "usage" value
- *
- * Algorithms may define multiple values for usage, which may convey the
- * intent of how the application intends to use the stream. If this value
- * is non-zero, consult the documentation for the codec to determine its
- * meaning.
- */
- unsigned int g_usage;
-
-
- /*!\brief Maximum number of threads to use
- *
- * For multi-threaded implementations, use no more than this number of
- * threads. The codec may use fewer threads than allowed. The value
- * 0 is equivalent to the value 1.
- */
- unsigned int g_threads;
-
-
- /*!\brief Bitstream profile to use
- *
- * Some codecs support a notion of multiple bitstream profiles. Typically
- * this maps to a set of features that are turned on or off. Often the
- * profile to use is determined by the features of the intended decoder.
- * Consult the documentation for the codec to determine the valid values
- * for this parameter, or set to zero for a sane default.
- */
- unsigned int g_profile; /**< profile of bitstream to use */
-
-
-
- /*!\brief Width of the frame
- *
- * This value identifies the presentation resolution of the frame,
- * in pixels. Note that the frames passed as input to the encoder must
- * have this resolution. Frames will be presented by the decoder in this
- * resolution, independent of any spatial resampling the encoder may do.
- */
- unsigned int g_w;
-
-
- /*!\brief Height of the frame
- *
- * This value identifies the presentation resolution of the frame,
- * in pixels. Note that the frames passed as input to the encoder must
- * have this resolution. Frames will be presented by the decoder in this
- * resolution, independent of any spatial resampling the encoder may do.
- */
- unsigned int g_h;
-
- /*!\brief Bit-depth of the codec
- *
- * This value identifies the bit_depth of the codec,
- * Only certain bit-depths are supported as identified in the
- * vpx_bit_depth_t enum.
- */
- vpx_bit_depth_t g_bit_depth;
-
- /*!\brief Bit-depth of the input frames
- *
- * This value identifies the bit_depth of the input frames in bits.
- * Note that the frames passed as input to the encoder must have
- * this bit-depth.
- */
- unsigned int g_input_bit_depth;
-
- /*!\brief Stream timebase units
- *
- * Indicates the smallest interval of time, in seconds, used by the stream.
- * For fixed frame rate material, or variable frame rate material where
- * frames are timed at a multiple of a given clock (ex: video capture),
- * the \ref RECOMMENDED method is to set the timebase to the reciprocal
- * of the frame rate (ex: 1001/30000 for 29.970 Hz NTSC). This allows the
- * pts to correspond to the frame number, which can be handy. For
- * re-encoding video from containers with absolute time timestamps, the
- * \ref RECOMMENDED method is to set the timebase to that of the parent
- * container or multimedia framework (ex: 1/1000 for ms, as in FLV).
- */
- struct vpx_rational g_timebase;
-
-
- /*!\brief Enable error resilient modes.
- *
- * The error resilient bitfield indicates to the encoder which features
- * it should enable to take measures for streaming over lossy or noisy
- * links.
- */
- vpx_codec_er_flags_t g_error_resilient;
-
-
- /*!\brief Multi-pass Encoding Mode
- *
- * This value should be set to the current phase for multi-pass encoding.
- * For single pass, set to #VPX_RC_ONE_PASS.
- */
- enum vpx_enc_pass g_pass;
-
-
- /*!\brief Allow lagged encoding
- *
- * If set, this value allows the encoder to consume a number of input
- * frames before producing output frames. This allows the encoder to
- * base decisions for the current frame on future frames. This does
- * increase the latency of the encoding pipeline, so it is not appropriate
- * in all situations (ex: realtime encoding).
- *
- * Note that this is a maximum value -- the encoder may produce frames
- * sooner than the given limit. Set this value to 0 to disable this
- * feature.
- */
- unsigned int g_lag_in_frames;
-
-
- /*
- * rate control settings (rc)
- */
-
- /*!\brief Temporal resampling configuration, if supported by the codec.
- *
- * Temporal resampling allows the codec to "drop" frames as a strategy to
- * meet its target data rate. This can cause temporal discontinuities in
- * the encoded video, which may appear as stuttering during playback. This
- * trade-off is often acceptable, but for many applications is not. It can
- * be disabled in these cases.
- *
- * Note that not all codecs support this feature. All vpx VPx codecs do.
- * For other codecs, consult the documentation for that algorithm.
- *
- * This threshold is described as a percentage of the target data buffer.
- * When the data buffer falls below this percentage of fullness, a
- * dropped frame is indicated. Set the threshold to zero (0) to disable
- * this feature.
- */
- unsigned int rc_dropframe_thresh;
-
-
- /*!\brief Enable/disable spatial resampling, if supported by the codec.
- *
- * Spatial resampling allows the codec to compress a lower resolution
- * version of the frame, which is then upscaled by the encoder to the
- * correct presentation resolution. This increases visual quality at
- * low data rates, at the expense of CPU time on the encoder/decoder.
- */
- unsigned int rc_resize_allowed;
-
- /*!\brief Internal coded frame width.
- *
- * If spatial resampling is enabled this specifies the width of the
- * encoded frame.
- */
- unsigned int rc_scaled_width;
-
- /*!\brief Internal coded frame height.
- *
- * If spatial resampling is enabled this specifies the height of the
- * encoded frame.
- */
- unsigned int rc_scaled_height;
-
- /*!\brief Spatial resampling up watermark.
- *
- * This threshold is described as a percentage of the target data buffer.
- * When the data buffer rises above this percentage of fullness, the
- * encoder will step up to a higher resolution version of the frame.
- */
- unsigned int rc_resize_up_thresh;
-
-
- /*!\brief Spatial resampling down watermark.
- *
- * This threshold is described as a percentage of the target data buffer.
- * When the data buffer falls below this percentage of fullness, the
- * encoder will step down to a lower resolution version of the frame.
- */
- unsigned int rc_resize_down_thresh;
-
-
- /*!\brief Rate control algorithm to use.
- *
- * Indicates whether the end usage of this stream is to be streamed over
- * a bandwidth constrained link, indicating that Constant Bit Rate (CBR)
- * mode should be used, or whether it will be played back on a high
- * bandwidth link, as from a local disk, where higher variations in
- * bitrate are acceptable.
- */
- enum vpx_rc_mode rc_end_usage;
-
-
- /*!\brief Two-pass stats buffer.
- *
- * A buffer containing all of the stats packets produced in the first
- * pass, concatenated.
- */
- vpx_fixed_buf_t rc_twopass_stats_in;
-
- /*!\brief first pass mb stats buffer.
- *
- * A buffer containing all of the first pass mb stats packets produced
- * in the first pass, concatenated.
- */
- vpx_fixed_buf_t rc_firstpass_mb_stats_in;
-
- /*!\brief Target data rate
- *
- * Target bandwidth to use for this stream, in kilobits per second.
- */
- unsigned int rc_target_bitrate;
-
-
- /*
- * quantizer settings
- */
-
-
- /*!\brief Minimum (Best Quality) Quantizer
- *
- * The quantizer is the most direct control over the quality of the
- * encoded image. The range of valid values for the quantizer is codec
- * specific. Consult the documentation for the codec to determine the
- * values to use. To determine the range programmatically, call
- * vpx_codec_enc_config_default() with a usage value of 0.
- */
- unsigned int rc_min_quantizer;
-
-
- /*!\brief Maximum (Worst Quality) Quantizer
- *
- * The quantizer is the most direct control over the quality of the
- * encoded image. The range of valid values for the quantizer is codec
- * specific. Consult the documentation for the codec to determine the
- * values to use. To determine the range programmatically, call
- * vpx_codec_enc_config_default() with a usage value of 0.
- */
- unsigned int rc_max_quantizer;
-
-
- /*
- * bitrate tolerance
- */
-
-
- /*!\brief Rate control adaptation undershoot control
- *
- * This value, expressed as a percentage of the target bitrate,
- * controls the maximum allowed adaptation speed of the codec.
- * This factor controls the maximum amount of bits that can
- * be subtracted from the target bitrate in order to compensate
- * for prior overshoot.
- *
- * Valid values in the range 0-1000.
- */
- unsigned int rc_undershoot_pct;
-
-
- /*!\brief Rate control adaptation overshoot control
- *
- * This value, expressed as a percentage of the target bitrate,
- * controls the maximum allowed adaptation speed of the codec.
- * This factor controls the maximum amount of bits that can
- * be added to the target bitrate in order to compensate for
- * prior undershoot.
- *
- * Valid values in the range 0-1000.
- */
- unsigned int rc_overshoot_pct;
-
-
- /*
- * decoder buffer model parameters
- */
-
-
- /*!\brief Decoder Buffer Size
- *
- * This value indicates the amount of data that may be buffered by the
- * decoding application. Note that this value is expressed in units of
- * time (milliseconds). For example, a value of 5000 indicates that the
- * client will buffer (at least) 5000ms worth of encoded data. Use the
- * target bitrate (#rc_target_bitrate) to convert to bits/bytes, if
- * necessary.
- */
- unsigned int rc_buf_sz;
-
-
- /*!\brief Decoder Buffer Initial Size
- *
- * This value indicates the amount of data that will be buffered by the
- * decoding application prior to beginning playback. This value is
- * expressed in units of time (milliseconds). Use the target bitrate
- * (#rc_target_bitrate) to convert to bits/bytes, if necessary.
- */
- unsigned int rc_buf_initial_sz;
-
-
- /*!\brief Decoder Buffer Optimal Size
- *
- * This value indicates the amount of data that the encoder should try
- * to maintain in the decoder's buffer. This value is expressed in units
- * of time (milliseconds). Use the target bitrate (#rc_target_bitrate)
- * to convert to bits/bytes, if necessary.
- */
- unsigned int rc_buf_optimal_sz;
-
-
- /*
- * 2 pass rate control parameters
- */
-
-
- /*!\brief Two-pass mode CBR/VBR bias
- *
- * Bias, expressed on a scale of 0 to 100, for determining target size
- * for the current frame. The value 0 indicates the optimal CBR mode
- * value should be used. The value 100 indicates the optimal VBR mode
- * value should be used. Values in between indicate which way the
- * encoder should "lean."
- */
- unsigned int rc_2pass_vbr_bias_pct; /**< RC mode bias between CBR and VBR(0-100: 0->CBR, 100->VBR) */
-
-
- /*!\brief Two-pass mode per-GOP minimum bitrate
- *
- * This value, expressed as a percentage of the target bitrate, indicates
- * the minimum bitrate to be used for a single GOP (aka "section")
- */
- unsigned int rc_2pass_vbr_minsection_pct;
-
-
- /*!\brief Two-pass mode per-GOP maximum bitrate
- *
- * This value, expressed as a percentage of the target bitrate, indicates
- * the maximum bitrate to be used for a single GOP (aka "section")
- */
- unsigned int rc_2pass_vbr_maxsection_pct;
-
-
- /*
- * keyframing settings (kf)
- */
-
- /*!\brief Keyframe placement mode
- *
- * This value indicates whether the encoder should place keyframes at a
- * fixed interval, or determine the optimal placement automatically
- * (as governed by the #kf_min_dist and #kf_max_dist parameters)
- */
- enum vpx_kf_mode kf_mode;
-
-
- /*!\brief Keyframe minimum interval
- *
- * This value, expressed as a number of frames, prevents the encoder from
- * placing a keyframe nearer than kf_min_dist to the previous keyframe. At
- * least kf_min_dist frames non-keyframes will be coded before the next
- * keyframe. Set kf_min_dist equal to kf_max_dist for a fixed interval.
- */
- unsigned int kf_min_dist;
-
-
- /*!\brief Keyframe maximum interval
- *
- * This value, expressed as a number of frames, forces the encoder to code
- * a keyframe if one has not been coded in the last kf_max_dist frames.
- * A value of 0 implies all frames will be keyframes. Set kf_min_dist
- * equal to kf_max_dist for a fixed interval.
- */
- unsigned int kf_max_dist;
-
- /*
- * Spatial scalability settings (ss)
- */
-
- /*!\brief Number of spatial coding layers.
- *
- * This value specifies the number of spatial coding layers to be used.
- */
- unsigned int ss_number_layers;
-
- /*!\brief Enable auto alt reference flags for each spatial layer.
- *
- * These values specify if auto alt reference frame is enabled for each
- * spatial layer.
- */
- int ss_enable_auto_alt_ref[VPX_SS_MAX_LAYERS];
-
- /*!\brief Target bitrate for each spatial layer.
- *
- * These values specify the target coding bitrate to be used for each
- * spatial layer.
- */
- unsigned int ss_target_bitrate[VPX_SS_MAX_LAYERS];
-
- /*!\brief Number of temporal coding layers.
- *
- * This value specifies the number of temporal layers to be used.
- */
- unsigned int ts_number_layers;
-
- /*!\brief Target bitrate for each temporal layer.
- *
- * These values specify the target coding bitrate to be used for each
- * temporal layer.
- */
- unsigned int ts_target_bitrate[VPX_TS_MAX_LAYERS];
-
- /*!\brief Frame rate decimation factor for each temporal layer.
- *
- * These values specify the frame rate decimation factors to apply
- * to each temporal layer.
- */
- unsigned int ts_rate_decimator[VPX_TS_MAX_LAYERS];
-
- /*!\brief Length of the sequence defining frame temporal layer membership.
- *
- * This value specifies the length of the sequence that defines the
- * membership of frames to temporal layers. For example, if the
- * ts_periodicity = 8, then the frames are assigned to coding layers with a
- * repeated sequence of length 8.
- */
- unsigned int ts_periodicity;
-
- /*!\brief Template defining the membership of frames to temporal layers.
- *
- * This array defines the membership of frames to temporal coding layers.
- * For a 2-layer encoding that assigns even numbered frames to one temporal
- * layer (0) and odd numbered frames to a second temporal layer (1) with
- * ts_periodicity=8, then ts_layer_id = (0,1,0,1,0,1,0,1).
- */
- unsigned int ts_layer_id[VPX_TS_MAX_PERIODICITY];
-
- /*!\brief Target bitrate for each spatial/temporal layer.
- *
- * These values specify the target coding bitrate to be used for each
- * spatial/temporal layer.
- *
- */
- unsigned int layer_target_bitrate[VPX_MAX_LAYERS];
-
- /*!\brief Temporal layering mode indicating which temporal layering scheme to use.
- *
- * The value (refer to VP9E_TEMPORAL_LAYERING_MODE) specifies the
- * temporal layering mode to use.
- *
- */
- int temporal_layering_mode;
- } vpx_codec_enc_cfg_t; /**< alias for struct vpx_codec_enc_cfg */
-
- /*!\brief vp9 svc extra configure parameters
- *
- * This defines max/min quantizers and scale factors for each layer
- *
- */
- typedef struct vpx_svc_parameters {
- int max_quantizers[VPX_MAX_LAYERS]; /**< Max Q for each layer */
- int min_quantizers[VPX_MAX_LAYERS]; /**< Min Q for each layer */
- int scaling_factor_num[VPX_MAX_LAYERS]; /**< Scaling factor-numerator */
- int scaling_factor_den[VPX_MAX_LAYERS]; /**< Scaling factor-denominator */
- int temporal_layering_mode; /**< Temporal layering mode */
- } vpx_svc_extra_cfg_t;
-
-
- /*!\brief Initialize an encoder instance
- *
- * Initializes a encoder context using the given interface. Applications
- * should call the vpx_codec_enc_init convenience macro instead of this
- * function directly, to ensure that the ABI version number parameter
- * is properly initialized.
- *
- * If the library was configured with --disable-multithread, this call
- * is not thread safe and should be guarded with a lock if being used
- * in a multithreaded context.
- *
- * \param[in] ctx Pointer to this instance's context.
- * \param[in] iface Pointer to the algorithm interface to use.
- * \param[in] cfg Configuration to use, if known. May be NULL.
- * \param[in] flags Bitfield of VPX_CODEC_USE_* flags
- * \param[in] ver ABI version number. Must be set to
- * VPX_ENCODER_ABI_VERSION
- * \retval #VPX_CODEC_OK
- * The decoder algorithm initialized.
- * \retval #VPX_CODEC_MEM_ERROR
- * Memory allocation failed.
- */
- vpx_codec_err_t vpx_codec_enc_init_ver(vpx_codec_ctx_t *ctx,
- vpx_codec_iface_t *iface,
- const vpx_codec_enc_cfg_t *cfg,
- vpx_codec_flags_t flags,
- int ver);
-
-
- /*!\brief Convenience macro for vpx_codec_enc_init_ver()
- *
- * Ensures the ABI version parameter is properly set.
- */
-#define vpx_codec_enc_init(ctx, iface, cfg, flags) \
- vpx_codec_enc_init_ver(ctx, iface, cfg, flags, VPX_ENCODER_ABI_VERSION)
-
-
- /*!\brief Initialize multi-encoder instance
- *
- * Initializes multi-encoder context using the given interface.
- * Applications should call the vpx_codec_enc_init_multi convenience macro
- * instead of this function directly, to ensure that the ABI version number
- * parameter is properly initialized.
- *
- * \param[in] ctx Pointer to this instance's context.
- * \param[in] iface Pointer to the algorithm interface to use.
- * \param[in] cfg Configuration to use, if known. May be NULL.
- * \param[in] num_enc Total number of encoders.
- * \param[in] flags Bitfield of VPX_CODEC_USE_* flags
- * \param[in] dsf Pointer to down-sampling factors.
- * \param[in] ver ABI version number. Must be set to
- * VPX_ENCODER_ABI_VERSION
- * \retval #VPX_CODEC_OK
- * The decoder algorithm initialized.
- * \retval #VPX_CODEC_MEM_ERROR
- * Memory allocation failed.
- */
- vpx_codec_err_t vpx_codec_enc_init_multi_ver(vpx_codec_ctx_t *ctx,
- vpx_codec_iface_t *iface,
- vpx_codec_enc_cfg_t *cfg,
- int num_enc,
- vpx_codec_flags_t flags,
- vpx_rational_t *dsf,
- int ver);
-
-
- /*!\brief Convenience macro for vpx_codec_enc_init_multi_ver()
- *
- * Ensures the ABI version parameter is properly set.
- */
-#define vpx_codec_enc_init_multi(ctx, iface, cfg, num_enc, flags, dsf) \
- vpx_codec_enc_init_multi_ver(ctx, iface, cfg, num_enc, flags, dsf, \
- VPX_ENCODER_ABI_VERSION)
-
-
- /*!\brief Get a default configuration
- *
- * Initializes a encoder configuration structure with default values. Supports
- * the notion of "usages" so that an algorithm may offer different default
- * settings depending on the user's intended goal. This function \ref SHOULD
- * be called by all applications to initialize the configuration structure
- * before specializing the configuration with application specific values.
- *
- * \param[in] iface Pointer to the algorithm interface to use.
- * \param[out] cfg Configuration buffer to populate.
- * \param[in] reserved Must set to 0 for VP8 and VP9.
- *
- * \retval #VPX_CODEC_OK
- * The configuration was populated.
- * \retval #VPX_CODEC_INCAPABLE
- * Interface is not an encoder interface.
- * \retval #VPX_CODEC_INVALID_PARAM
- * A parameter was NULL, or the usage value was not recognized.
- */
- vpx_codec_err_t vpx_codec_enc_config_default(vpx_codec_iface_t *iface,
- vpx_codec_enc_cfg_t *cfg,
- unsigned int reserved);
-
-
- /*!\brief Set or change configuration
- *
- * Reconfigures an encoder instance according to the given configuration.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] cfg Configuration buffer to use
- *
- * \retval #VPX_CODEC_OK
- * The configuration was populated.
- * \retval #VPX_CODEC_INCAPABLE
- * Interface is not an encoder interface.
- * \retval #VPX_CODEC_INVALID_PARAM
- * A parameter was NULL, or the usage value was not recognized.
- */
- vpx_codec_err_t vpx_codec_enc_config_set(vpx_codec_ctx_t *ctx,
- const vpx_codec_enc_cfg_t *cfg);
-
-
- /*!\brief Get global stream headers
- *
- * Retrieves a stream level global header packet, if supported by the codec.
- *
- * \param[in] ctx Pointer to this instance's context
- *
- * \retval NULL
- * Encoder does not support global header
- * \retval Non-NULL
- * Pointer to buffer containing global header packet
- */
- vpx_fixed_buf_t *vpx_codec_get_global_headers(vpx_codec_ctx_t *ctx);
-
-
-#define VPX_DL_REALTIME (1) /**< deadline parameter analogous to
- * VPx REALTIME mode. */
-#define VPX_DL_GOOD_QUALITY (1000000) /**< deadline parameter analogous to
- * VPx GOOD QUALITY mode. */
-#define VPX_DL_BEST_QUALITY (0) /**< deadline parameter analogous to
- * VPx BEST QUALITY mode. */
- /*!\brief Encode a frame
- *
- * Encodes a video frame at the given "presentation time." The presentation
- * time stamp (PTS) \ref MUST be strictly increasing.
- *
- * The encoder supports the notion of a soft real-time deadline. Given a
- * non-zero value to the deadline parameter, the encoder will make a "best
- * effort" guarantee to return before the given time slice expires. It is
- * implicit that limiting the available time to encode will degrade the
- * output quality. The encoder can be given an unlimited time to produce the
- * best possible frame by specifying a deadline of '0'. This deadline
- * supercedes the VPx notion of "best quality, good quality, realtime".
- * Applications that wish to map these former settings to the new deadline
- * based system can use the symbols #VPX_DL_REALTIME, #VPX_DL_GOOD_QUALITY,
- * and #VPX_DL_BEST_QUALITY.
- *
- * When the last frame has been passed to the encoder, this function should
- * continue to be called, with the img parameter set to NULL. This will
- * signal the end-of-stream condition to the encoder and allow it to encode
- * any held buffers. Encoding is complete when vpx_codec_encode() is called
- * and vpx_codec_get_cx_data() returns no data.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] img Image data to encode, NULL to flush.
- * \param[in] pts Presentation time stamp, in timebase units.
- * \param[in] duration Duration to show frame, in timebase units.
- * \param[in] flags Flags to use for encoding this frame.
- * \param[in] deadline Time to spend encoding, in microseconds. (0=infinite)
- *
- * \retval #VPX_CODEC_OK
- * The configuration was populated.
- * \retval #VPX_CODEC_INCAPABLE
- * Interface is not an encoder interface.
- * \retval #VPX_CODEC_INVALID_PARAM
- * A parameter was NULL, the image format is unsupported, etc.
- */
- vpx_codec_err_t vpx_codec_encode(vpx_codec_ctx_t *ctx,
- const vpx_image_t *img,
- vpx_codec_pts_t pts,
- unsigned long duration,
- vpx_enc_frame_flags_t flags,
- unsigned long deadline);
-
- /*!\brief Set compressed data output buffer
- *
- * Sets the buffer that the codec should output the compressed data
- * into. This call effectively sets the buffer pointer returned in the
- * next VPX_CODEC_CX_FRAME_PKT packet. Subsequent packets will be
- * appended into this buffer. The buffer is preserved across frames,
- * so applications must periodically call this function after flushing
- * the accumulated compressed data to disk or to the network to reset
- * the pointer to the buffer's head.
- *
- * `pad_before` bytes will be skipped before writing the compressed
- * data, and `pad_after` bytes will be appended to the packet. The size
- * of the packet will be the sum of the size of the actual compressed
- * data, pad_before, and pad_after. The padding bytes will be preserved
- * (not overwritten).
- *
- * Note that calling this function does not guarantee that the returned
- * compressed data will be placed into the specified buffer. In the
- * event that the encoded data will not fit into the buffer provided,
- * the returned packet \ref MAY point to an internal buffer, as it would
- * if this call were never used. In this event, the output packet will
- * NOT have any padding, and the application must free space and copy it
- * to the proper place. This is of particular note in configurations
- * that may output multiple packets for a single encoded frame (e.g., lagged
- * encoding) or if the application does not reset the buffer periodically.
- *
- * Applications may restore the default behavior of the codec providing
- * the compressed data buffer by calling this function with a NULL
- * buffer.
- *
- * Applications \ref MUSTNOT call this function during iteration of
- * vpx_codec_get_cx_data().
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in] buf Buffer to store compressed data into
- * \param[in] pad_before Bytes to skip before writing compressed data
- * \param[in] pad_after Bytes to skip after writing compressed data
- *
- * \retval #VPX_CODEC_OK
- * The buffer was set successfully.
- * \retval #VPX_CODEC_INVALID_PARAM
- * A parameter was NULL, the image format is unsupported, etc.
- */
- vpx_codec_err_t vpx_codec_set_cx_data_buf(vpx_codec_ctx_t *ctx,
- const vpx_fixed_buf_t *buf,
- unsigned int pad_before,
- unsigned int pad_after);
-
-
- /*!\brief Encoded data iterator
- *
- * Iterates over a list of data packets to be passed from the encoder to the
- * application. The different kinds of packets available are enumerated in
- * #vpx_codec_cx_pkt_kind.
- *
- * #VPX_CODEC_CX_FRAME_PKT packets should be passed to the application's
- * muxer. Multiple compressed frames may be in the list.
- * #VPX_CODEC_STATS_PKT packets should be appended to a global buffer.
- *
- * The application \ref MUST silently ignore any packet kinds that it does
- * not recognize or support.
- *
- * The data buffers returned from this function are only guaranteed to be
- * valid until the application makes another call to any vpx_codec_* function.
- *
- * \param[in] ctx Pointer to this instance's context
- * \param[in,out] iter Iterator storage, initialized to NULL
- *
- * \return Returns a pointer to an output data packet (compressed frame data,
- * two-pass statistics, etc.) or NULL to signal end-of-list.
- *
- */
- const vpx_codec_cx_pkt_t *vpx_codec_get_cx_data(vpx_codec_ctx_t *ctx,
- vpx_codec_iter_t *iter);
-
-
- /*!\brief Get Preview Frame
- *
- * Returns an image that can be used as a preview. Shows the image as it would
- * exist at the decompressor. The application \ref MUST NOT write into this
- * image buffer.
- *
- * \param[in] ctx Pointer to this instance's context
- *
- * \return Returns a pointer to a preview image, or NULL if no image is
- * available.
- *
- */
- const vpx_image_t *vpx_codec_get_preview_frame(vpx_codec_ctx_t *ctx);
-
-
- /*!@} - end defgroup encoder*/
-#ifdef __cplusplus
-}
-#endif
-#endif // VPX_VPX_ENCODER_H_
-
diff --git a/thirdparty/libvpx/vpx/vpx_frame_buffer.h b/thirdparty/libvpx/vpx/vpx_frame_buffer.h
deleted file mode 100644
index 9036459af0..0000000000
--- a/thirdparty/libvpx/vpx/vpx_frame_buffer.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_VPX_FRAME_BUFFER_H_
-#define VPX_VPX_FRAME_BUFFER_H_
-
-/*!\file
- * \brief Describes the decoder external frame buffer interface.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "./vpx_integer.h"
-
-/*!\brief The maximum number of work buffers used by libvpx.
- * Support maximum 4 threads to decode video in parallel.
- * Each thread will use one work buffer.
- * TODO(hkuang): Add support to set number of worker threads dynamically.
- */
-#define VPX_MAXIMUM_WORK_BUFFERS 8
-
-/*!\brief The maximum number of reference buffers that a VP9 encoder may use.
- */
-#define VP9_MAXIMUM_REF_BUFFERS 8
-
-/*!\brief External frame buffer
- *
- * This structure holds allocated frame buffers used by the decoder.
- */
-typedef struct vpx_codec_frame_buffer {
- uint8_t *data; /**< Pointer to the data buffer */
- size_t size; /**< Size of data in bytes */
- void *priv; /**< Frame's private data */
-} vpx_codec_frame_buffer_t;
-
-/*!\brief get frame buffer callback prototype
- *
- * This callback is invoked by the decoder to retrieve data for the frame
- * buffer in order for the decode call to complete. The callback must
- * allocate at least min_size in bytes and assign it to fb->data. The callback
- * must zero out all the data allocated. Then the callback must set fb->size
- * to the allocated size. The application does not need to align the allocated
- * data. The callback is triggered when the decoder needs a frame buffer to
- * decode a compressed image into. This function may be called more than once
- * for every call to vpx_codec_decode. The application may set fb->priv to
- * some data which will be passed back in the ximage and the release function
- * call. |fb| is guaranteed to not be NULL. On success the callback must
- * return 0. Any failure the callback must return a value less than 0.
- *
- * \param[in] priv Callback's private data
- * \param[in] new_size Size in bytes needed by the buffer
- * \param[in,out] fb Pointer to vpx_codec_frame_buffer_t
- */
-typedef int (*vpx_get_frame_buffer_cb_fn_t)(
- void *priv, size_t min_size, vpx_codec_frame_buffer_t *fb);
-
-/*!\brief release frame buffer callback prototype
- *
- * This callback is invoked by the decoder when the frame buffer is not
- * referenced by any other buffers. |fb| is guaranteed to not be NULL. On
- * success the callback must return 0. Any failure the callback must return
- * a value less than 0.
- *
- * \param[in] priv Callback's private data
- * \param[in] fb Pointer to vpx_codec_frame_buffer_t
- */
-typedef int (*vpx_release_frame_buffer_cb_fn_t)(
- void *priv, vpx_codec_frame_buffer_t *fb);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_VPX_FRAME_BUFFER_H_
diff --git a/thirdparty/libvpx/vpx/vpx_image.h b/thirdparty/libvpx/vpx/vpx_image.h
deleted file mode 100644
index 7958c69806..0000000000
--- a/thirdparty/libvpx/vpx/vpx_image.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-/*!\file
- * \brief Describes the vpx image descriptor and associated operations
- *
- */
-#ifndef VPX_VPX_IMAGE_H_
-#define VPX_VPX_IMAGE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /*!\brief Current ABI version number
- *
- * \internal
- * If this file is altered in any way that changes the ABI, this value
- * must be bumped. Examples include, but are not limited to, changing
- * types, removing or reassigning enums, adding/removing/rearranging
- * fields to structures
- */
-#define VPX_IMAGE_ABI_VERSION (4) /**<\hideinitializer*/
-
-
-#define VPX_IMG_FMT_PLANAR 0x100 /**< Image is a planar format. */
-#define VPX_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */
-#define VPX_IMG_FMT_HAS_ALPHA 0x400 /**< Image has an alpha channel. */
-#define VPX_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */
-
- /*!\brief List of supported image formats */
- typedef enum vpx_img_fmt {
- VPX_IMG_FMT_NONE,
- VPX_IMG_FMT_RGB24, /**< 24 bit per pixel packed RGB */
- VPX_IMG_FMT_RGB32, /**< 32 bit per pixel packed 0RGB */
- VPX_IMG_FMT_RGB565, /**< 16 bit per pixel, 565 */
- VPX_IMG_FMT_RGB555, /**< 16 bit per pixel, 555 */
- VPX_IMG_FMT_UYVY, /**< UYVY packed YUV */
- VPX_IMG_FMT_YUY2, /**< YUYV packed YUV */
- VPX_IMG_FMT_YVYU, /**< YVYU packed YUV */
- VPX_IMG_FMT_BGR24, /**< 24 bit per pixel packed BGR */
- VPX_IMG_FMT_RGB32_LE, /**< 32 bit packed BGR0 */
- VPX_IMG_FMT_ARGB, /**< 32 bit packed ARGB, alpha=255 */
- VPX_IMG_FMT_ARGB_LE, /**< 32 bit packed BGRA, alpha=255 */
- VPX_IMG_FMT_RGB565_LE, /**< 16 bit per pixel, gggbbbbb rrrrrggg */
- VPX_IMG_FMT_RGB555_LE, /**< 16 bit per pixel, gggbbbbb 0rrrrrgg */
- VPX_IMG_FMT_YV12 = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | 1, /**< planar YVU */
- VPX_IMG_FMT_I420 = VPX_IMG_FMT_PLANAR | 2,
- VPX_IMG_FMT_VPXYV12 = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | 3, /** < planar 4:2:0 format with vpx color space */
- VPX_IMG_FMT_VPXI420 = VPX_IMG_FMT_PLANAR | 4,
- VPX_IMG_FMT_I422 = VPX_IMG_FMT_PLANAR | 5,
- VPX_IMG_FMT_I444 = VPX_IMG_FMT_PLANAR | 6,
- VPX_IMG_FMT_I440 = VPX_IMG_FMT_PLANAR | 7,
- VPX_IMG_FMT_444A = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_HAS_ALPHA | 6,
- VPX_IMG_FMT_I42016 = VPX_IMG_FMT_I420 | VPX_IMG_FMT_HIGHBITDEPTH,
- VPX_IMG_FMT_I42216 = VPX_IMG_FMT_I422 | VPX_IMG_FMT_HIGHBITDEPTH,
- VPX_IMG_FMT_I44416 = VPX_IMG_FMT_I444 | VPX_IMG_FMT_HIGHBITDEPTH,
- VPX_IMG_FMT_I44016 = VPX_IMG_FMT_I440 | VPX_IMG_FMT_HIGHBITDEPTH
- } vpx_img_fmt_t; /**< alias for enum vpx_img_fmt */
-
- /*!\brief List of supported color spaces */
- typedef enum vpx_color_space {
- VPX_CS_UNKNOWN = 0, /**< Unknown */
- VPX_CS_BT_601 = 1, /**< BT.601 */
- VPX_CS_BT_709 = 2, /**< BT.709 */
- VPX_CS_SMPTE_170 = 3, /**< SMPTE.170 */
- VPX_CS_SMPTE_240 = 4, /**< SMPTE.240 */
- VPX_CS_BT_2020 = 5, /**< BT.2020 */
- VPX_CS_RESERVED = 6, /**< Reserved */
- VPX_CS_SRGB = 7 /**< sRGB */
- } vpx_color_space_t; /**< alias for enum vpx_color_space */
-
- /*!\brief List of supported color range */
- typedef enum vpx_color_range {
- VPX_CR_STUDIO_RANGE = 0, /**< Y [16..235], UV [16..240] */
- VPX_CR_FULL_RANGE = 1 /**< YUV/RGB [0..255] */
- } vpx_color_range_t; /**< alias for enum vpx_color_range */
-
- /**\brief Image Descriptor */
- typedef struct vpx_image {
- vpx_img_fmt_t fmt; /**< Image Format */
- vpx_color_space_t cs; /**< Color Space */
- vpx_color_range_t range; /**< Color Range */
-
- /* Image storage dimensions */
- unsigned int w; /**< Stored image width */
- unsigned int h; /**< Stored image height */
- unsigned int bit_depth; /**< Stored image bit-depth */
-
- /* Image display dimensions */
- unsigned int d_w; /**< Displayed image width */
- unsigned int d_h; /**< Displayed image height */
-
- /* Image intended rendering dimensions */
- unsigned int r_w; /**< Intended rendering image width */
- unsigned int r_h; /**< Intended rendering image height */
-
- /* Chroma subsampling info */
- unsigned int x_chroma_shift; /**< subsampling order, X */
- unsigned int y_chroma_shift; /**< subsampling order, Y */
-
- /* Image data pointers. */
-#define VPX_PLANE_PACKED 0 /**< To be used for all packed formats */
-#define VPX_PLANE_Y 0 /**< Y (Luminance) plane */
-#define VPX_PLANE_U 1 /**< U (Chroma) plane */
-#define VPX_PLANE_V 2 /**< V (Chroma) plane */
-#define VPX_PLANE_ALPHA 3 /**< A (Transparency) plane */
- unsigned char *planes[4]; /**< pointer to the top left pixel for each plane */
- int stride[4]; /**< stride between rows for each plane */
-
- int bps; /**< bits per sample (for packed formats) */
-
- /* The following member may be set by the application to associate data
- * with this image.
- */
- void *user_priv; /**< may be set by the application to associate data
- * with this image. */
-
- /* The following members should be treated as private. */
- unsigned char *img_data; /**< private */
- int img_data_owner; /**< private */
- int self_allocd; /**< private */
-
- void *fb_priv; /**< Frame buffer data associated with the image. */
- } vpx_image_t; /**< alias for struct vpx_image */
-
- /**\brief Representation of a rectangle on a surface */
- typedef struct vpx_image_rect {
- unsigned int x; /**< leftmost column */
- unsigned int y; /**< topmost row */
- unsigned int w; /**< width */
- unsigned int h; /**< height */
- } vpx_image_rect_t; /**< alias for struct vpx_image_rect */
-
- /*!\brief Open a descriptor, allocating storage for the underlying image
- *
- * Returns a descriptor for storing an image of the given format. The
- * storage for the descriptor is allocated on the heap.
- *
- * \param[in] img Pointer to storage for descriptor. If this parameter
- * is NULL, the storage for the descriptor will be
- * allocated on the heap.
- * \param[in] fmt Format for the image
- * \param[in] d_w Width of the image
- * \param[in] d_h Height of the image
- * \param[in] align Alignment, in bytes, of the image buffer and
- * each row in the image(stride).
- *
- * \return Returns a pointer to the initialized image descriptor. If the img
- * parameter is non-null, the value of the img parameter will be
- * returned.
- */
- vpx_image_t *vpx_img_alloc(vpx_image_t *img,
- vpx_img_fmt_t fmt,
- unsigned int d_w,
- unsigned int d_h,
- unsigned int align);
-
- /*!\brief Open a descriptor, using existing storage for the underlying image
- *
- * Returns a descriptor for storing an image of the given format. The
- * storage for descriptor has been allocated elsewhere, and a descriptor is
- * desired to "wrap" that storage.
- *
- * \param[in] img Pointer to storage for descriptor. If this parameter
- * is NULL, the storage for the descriptor will be
- * allocated on the heap.
- * \param[in] fmt Format for the image
- * \param[in] d_w Width of the image
- * \param[in] d_h Height of the image
- * \param[in] align Alignment, in bytes, of each row in the image.
- * \param[in] img_data Storage to use for the image
- *
- * \return Returns a pointer to the initialized image descriptor. If the img
- * parameter is non-null, the value of the img parameter will be
- * returned.
- */
- vpx_image_t *vpx_img_wrap(vpx_image_t *img,
- vpx_img_fmt_t fmt,
- unsigned int d_w,
- unsigned int d_h,
- unsigned int align,
- unsigned char *img_data);
-
-
- /*!\brief Set the rectangle identifying the displayed portion of the image
- *
- * Updates the displayed rectangle (aka viewport) on the image surface to
- * match the specified coordinates and size.
- *
- * \param[in] img Image descriptor
- * \param[in] x leftmost column
- * \param[in] y topmost row
- * \param[in] w width
- * \param[in] h height
- *
- * \return 0 if the requested rectangle is valid, nonzero otherwise.
- */
- int vpx_img_set_rect(vpx_image_t *img,
- unsigned int x,
- unsigned int y,
- unsigned int w,
- unsigned int h);
-
-
- /*!\brief Flip the image vertically (top for bottom)
- *
- * Adjusts the image descriptor's pointers and strides to make the image
- * be referenced upside-down.
- *
- * \param[in] img Image descriptor
- */
- void vpx_img_flip(vpx_image_t *img);
-
- /*!\brief Close an image descriptor
- *
- * Frees all allocated storage associated with an image descriptor.
- *
- * \param[in] img Image descriptor
- */
- void vpx_img_free(vpx_image_t *img);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_VPX_IMAGE_H_
diff --git a/thirdparty/libvpx/vpx/vpx_integer.h b/thirdparty/libvpx/vpx/vpx_integer.h
deleted file mode 100644
index 829c9d132c..0000000000
--- a/thirdparty/libvpx/vpx/vpx_integer.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VPX_VPX_INTEGER_H_
-#define VPX_VPX_INTEGER_H_
-
-/* get ptrdiff_t, size_t, wchar_t, NULL */
-#include <stddef.h>
-
-#if defined(_MSC_VER)
-#define VPX_FORCE_INLINE __forceinline
-#define VPX_INLINE __inline
-#else
-#define VPX_FORCE_INLINE __inline__ __attribute__(always_inline)
-// TODO(jbb): Allow a way to force inline off for older compilers.
-#define VPX_INLINE inline
-#endif
-
-#if (defined(_MSC_VER) && (_MSC_VER < 1600)) || defined(VPX_EMULATE_INTTYPES)
-typedef signed char int8_t;
-typedef signed short int16_t;
-typedef signed int int32_t;
-
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-
-#if (defined(_MSC_VER) && (_MSC_VER < 1600))
-typedef signed __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#define INT64_MAX _I64_MAX
-#define INT32_MAX _I32_MAX
-#define INT32_MIN _I32_MIN
-#define INT16_MAX _I16_MAX
-#define INT16_MIN _I16_MIN
-#endif
-
-#ifndef _UINTPTR_T_DEFINED
-typedef size_t uintptr_t;
-#endif
-
-#else
-
-/* Most platforms have the C99 standard integer types. */
-
-#if defined(__cplusplus)
-# if !defined(__STDC_FORMAT_MACROS)
-# define __STDC_FORMAT_MACROS
-# endif
-# if !defined(__STDC_LIMIT_MACROS)
-# define __STDC_LIMIT_MACROS
-# endif
-#endif // __cplusplus
-
-#include <stdint.h>
-
-#endif
-
-/* VS2010 defines stdint.h, but not inttypes.h */
-#if defined(_MSC_VER) && _MSC_VER < 1800
-#define PRId64 "I64d"
-#else
-#include <inttypes.h>
-#endif
-
-#endif // VPX_VPX_INTEGER_H_
diff --git a/thirdparty/libvpx/vpx_config.asm b/thirdparty/libvpx/vpx_config.asm
deleted file mode 100644
index 8f2119e7bc..0000000000
--- a/thirdparty/libvpx/vpx_config.asm
+++ /dev/null
@@ -1,65 +0,0 @@
-%ifdef X86_32
- ARCH_X86 equ 1
- ARCH_X86_64 equ 0
-%elifdef X86_64
- ARCH_X86 equ 0
- ARCH_X86_64 equ 1
-%endif
-
-HAVE_VPX_PORTS equ 1
-CONFIG_DEPENDENCY_TRACKING equ 0
-CONFIG_EXTERNAL_BUILD equ 0
-CONFIG_INSTALL_DOCS equ 0
-CONFIG_INSTALL_BINS equ 0
-CONFIG_INSTALL_LIBS equ 0
-CONFIG_INSTALL_SRCS equ 0
-CONFIG_USE_X86INC equ 1
-CONFIG_DEBUG equ 0
-CONFIG_GPROF equ 0
-CONFIG_GCOV equ 0
-CONFIG_RVCT equ 0
-CONFIG_PIC equ 1 ;TODO: autodetect
-CONFIG_CODEC_SRCS equ 0
-CONFIG_DEBUG_LIBS equ 0
-CONFIG_DEQUANT_TOKENS equ 0
-CONFIG_DC_RECON equ 0
-CONFIG_RUNTIME_CPU_DETECT equ 1
-CONFIG_POSTPROC equ 0
-CONFIG_VP9_POSTPROC equ 0
-CONFIG_MULTITHREAD equ 1
-CONFIG_INTERNAL_STATS equ 0
-CONFIG_VP8_ENCODER equ 0
-CONFIG_VP8_DECODER equ 1
-CONFIG_VP9_ENCODER equ 0
-CONFIG_VP9_DECODER equ 1
-CONFIG_VP8 equ 1
-CONFIG_VP9 equ 1
-CONFIG_ENCODERS equ 0
-CONFIG_DECODERS equ 1
-CONFIG_STATIC_MSVCRT equ 0
-CONFIG_SPATIAL_RESAMPLING equ 0
-CONFIG_REALTIME_ONLY equ 0
-CONFIG_ONTHEFLY_BITPACKING equ 0
-CONFIG_ERROR_CONCEALMENT equ 0
-CONFIG_SHARED equ 0
-CONFIG_STATIC equ 0
-CONFIG_SMALL equ 0
-CONFIG_POSTPROC_VISUALIZER equ 0
-CONFIG_OS_SUPPORT equ 1
-CONFIG_UNIT_TESTS equ 0
-CONFIG_WEBM_IO equ 0
-CONFIG_LIBYUV equ 0
-CONFIG_DECODE_PERF_TESTS equ 0
-CONFIG_ENCODE_PERF_TESTS equ 0
-CONFIG_MULTI_RES_ENCODING equ 0
-CONFIG_TEMPORAL_DENOISING equ 1
-CONFIG_VP9_TEMPORAL_DENOISING equ 0
-CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
-CONFIG_VP9_HIGHBITDEPTH equ 0
-CONFIG_BETTER_HW_COMPATIBILITY equ 0
-CONFIG_EXPERIMENTAL equ 0
-CONFIG_SIZE_LIMIT equ 0
-CONFIG_SPATIAL_SVC equ 0
-CONFIG_FP_MB_STATS equ 0
-CONFIG_EMULATE_HARDWARE equ 0
-CONFIG_MISC_FIXES equ 0
diff --git a/thirdparty/libvpx/vpx_config.h b/thirdparty/libvpx/vpx_config.h
deleted file mode 100644
index e8e91fa6ef..0000000000
--- a/thirdparty/libvpx/vpx_config.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
-/* */
-/* Use of this source code is governed by a BSD-style license */
-/* that can be found in the LICENSE file in the root of the source */
-/* tree. An additional intellectual property rights grant can be found */
-/* in the file PATENTS. All contributing project authors may */
-/* be found in the AUTHORS file in the root of the source tree. */
-/* This file automatically generated by configure. Do not edit! */
-#ifndef VPX_CONFIG_H
-#define VPX_CONFIG_H
-#define RESTRICT
-#if defined(_MSC_VER) && (_MSC_VER < 1900)
- #define INLINE __inline
-#else
- #define INLINE inline
-#endif
-
-#define HAVE_MIPS32 0
-#define HAVE_MEDIA 0
-
-#if defined(__i386) || defined(__i386__) || defined(_M_IX86)
- #define ARCH_X86 1
- #define ARCH_X86_64 0
-
- #define ARCH_ARM 0
- #define HAVE_NEON 0
- #define HAVE_NEON_ASM 0
-
- #define HAVE_MMX 1
- #define HAVE_SSE2 1
- #define HAVE_SSSE3 1
- #define HAVE_AVX2 0
-#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
- #define ARCH_X86 0
- #define ARCH_X86_64 1
-
- #define ARCH_ARM 0
- #define HAVE_NEON 0
- #define HAVE_NEON_ASM 0
-
- #define HAVE_MMX 1
- #define HAVE_SSE2 1
- #define HAVE_SSSE3 1
- #define HAVE_AVX2 0
-#elif defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM)
- #define ARCH_X86 0
- #define ARCH_X86_64 0
-
- #define ARCH_ARM 1
- #define HAVE_NEON 1
- #define HAVE_NEON_ASM 1
-#elif defined(__aarch64__)
- #define ARCH_X86 0
- #define ARCH_X86_64 0
-
- #define ARCH_ARM 1
- #define HAVE_NEON 0
- #define HAVE_NEON_ASM 0
-#else
- #define ARCH_X86 0
- #define ARCH_X86_64 0
-
- #define ARCH_ARM 0
- #define HAVE_NEON 0
- #define HAVE_NEON_ASM 0
-#endif
-
-#define CONFIG_BIG_ENDIAN 0 //TODO: Autodetect
-
-#ifdef __EMSCRIPTEN__
-#define CONFIG_MULTITHREAD 0
-#else
-#define CONFIG_MULTITHREAD 1
-#endif
-
-#ifdef _WIN32
- #define HAVE_PTHREAD_H 0
- #define HAVE_UNISTD_H 0
-#else
- #define HAVE_PTHREAD_H 1
- #define HAVE_UNISTD_H 1
-#endif
-
-/**/
-
-#define HAVE_VPX_PORTS 1
-#define CONFIG_DEPENDENCY_TRACKING 0
-#define CONFIG_EXTERNAL_BUILD 0
-#define CONFIG_INSTALL_DOCS 0
-#define CONFIG_INSTALL_BINS 0
-#define CONFIG_INSTALL_LIBS 0
-#define CONFIG_INSTALL_SRCS 0
-#define CONFIG_DEBUG 0
-#define CONFIG_GPROF 0
-#define CONFIG_GCOV 0
-#define CONFIG_RVCT 0
-#define CONFIG_CODEC_SRCS 0
-#define CONFIG_DEBUG_LIBS 0
-#define CONFIG_DEQUANT_TOKENS 0
-#define CONFIG_DC_RECON 0
-#define CONFIG_RUNTIME_CPU_DETECT 1
-#define CONFIG_POSTPROC 0
-#define CONFIG_VP9_POSTPROC 0
-#define CONFIG_INTERNAL_STATS 0
-#define CONFIG_VP8_ENCODER 0
-#define CONFIG_VP8_DECODER 1
-#define CONFIG_VP9_ENCODER 0
-#define CONFIG_VP9_DECODER 1
-#define CONFIG_VP8 1
-#define CONFIG_VP9 1
-#define CONFIG_ENCODERS 0
-#define CONFIG_DECODERS 1
-#define CONFIG_STATIC_MSVCRT 0
-#define CONFIG_SPATIAL_RESAMPLING 0
-#define CONFIG_REALTIME_ONLY 0
-#define CONFIG_ONTHEFLY_BITPACKING 0
-#define CONFIG_ERROR_CONCEALMENT 0
-#define CONFIG_SHARED 0
-#define CONFIG_STATIC 0
-#define CONFIG_SMALL 0
-#define CONFIG_POSTPROC_VISUALIZER 0
-#define CONFIG_OS_SUPPORT 1
-#define CONFIG_UNIT_TESTS 0
-#define CONFIG_WEBM_IO 0
-#define CONFIG_LIBYUV 0
-#define CONFIG_DECODE_PERF_TESTS 0
-#define CONFIG_ENCODE_PERF_TESTS 0
-#define CONFIG_MULTI_RES_ENCODING 0
-#define CONFIG_TEMPORAL_DENOISING 0
-#define CONFIG_VP9_TEMPORAL_DENOISING 0
-#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
-#define CONFIG_VP9_HIGHBITDEPTH 0
-#define CONFIG_BETTER_HW_COMPATIBILITY 0
-#define CONFIG_EXPERIMENTAL 0
-#define CONFIG_SIZE_LIMIT 0
-#define CONFIG_SPATIAL_SVC 0
-#define CONFIG_FP_MB_STATS 0
-#define CONFIG_EMULATE_HARDWARE 0
-#define CONFIG_MISC_FIXES 0
-#endif /* VPX_CONFIG_H */
diff --git a/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/intrapred_neon_asm.asm b/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/intrapred_neon_asm.asm
deleted file mode 100644
index b2846c410b..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/intrapred_neon_asm.asm
+++ /dev/null
@@ -1,643 +0,0 @@
-; This file was created from a .asm file
-; using the ads2armasm_ms.pl script.
-;
-; Copyright (c) 2014 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
- EXPORT |vpx_v_predictor_4x4_neon|
- EXPORT |vpx_v_predictor_8x8_neon|
- EXPORT |vpx_v_predictor_16x16_neon|
- EXPORT |vpx_v_predictor_32x32_neon|
- EXPORT |vpx_h_predictor_4x4_neon|
- EXPORT |vpx_h_predictor_8x8_neon|
- EXPORT |vpx_h_predictor_16x16_neon|
- EXPORT |vpx_h_predictor_32x32_neon|
- EXPORT |vpx_tm_predictor_4x4_neon|
- EXPORT |vpx_tm_predictor_8x8_neon|
- EXPORT |vpx_tm_predictor_16x16_neon|
- EXPORT |vpx_tm_predictor_32x32_neon|
-
-
-
- AREA |.text|, CODE, READONLY, ALIGN=2
-
-;void vpx_v_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_v_predictor_4x4_neon| PROC
- vld1.32 {d0[0]}, [r2]
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- bx lr
- ENDP ; |vpx_v_predictor_4x4_neon|
- ALIGN 4
-
-;void vpx_v_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_v_predictor_8x8_neon| PROC
- vld1.8 {d0}, [r2]
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- bx lr
- ENDP ; |vpx_v_predictor_8x8_neon|
- ALIGN 4
-
-;void vpx_v_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_v_predictor_16x16_neon| PROC
- vld1.8 {q0}, [r2]
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- bx lr
- ENDP ; |vpx_v_predictor_16x16_neon|
- ALIGN 4
-
-;void vpx_v_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_v_predictor_32x32_neon| PROC
- vld1.8 {q0, q1}, [r2]
- mov r2, #2
-loop_v
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- subs r2, r2, #1
- bgt loop_v
- bx lr
- ENDP ; |vpx_v_predictor_32x32_neon|
- ALIGN 4
-
-;void vpx_h_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_h_predictor_4x4_neon| PROC
- vld1.32 {d1[0]}, [r3]
- vdup.8 d0, d1[0]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[1]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[2]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[3]
- vst1.32 {d0[0]}, [r0], r1
- bx lr
- ENDP ; |vpx_h_predictor_4x4_neon|
- ALIGN 4
-
-;void vpx_h_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_h_predictor_8x8_neon| PROC
- vld1.64 {d1}, [r3]
- vdup.8 d0, d1[0]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[1]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[2]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[3]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[4]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[5]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[6]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[7]
- vst1.64 {d0}, [r0], r1
- bx lr
- ENDP ; |vpx_h_predictor_8x8_neon|
- ALIGN 4
-
-;void vpx_h_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_h_predictor_16x16_neon| PROC
- vld1.8 {q1}, [r3]
- vdup.8 q0, d2[0]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[1]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[2]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[3]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[4]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[5]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[6]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[7]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[0]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[1]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[2]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[3]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[4]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[5]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[6]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[7]
- vst1.8 {q0}, [r0], r1
- bx lr
- ENDP ; |vpx_h_predictor_16x16_neon|
- ALIGN 4
-
-;void vpx_h_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_h_predictor_32x32_neon| PROC
- sub r1, r1, #16
- mov r2, #2
-loop_h
- vld1.8 {q1}, [r3]!
- vdup.8 q0, d2[0]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[1]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[2]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[3]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[4]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[5]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[6]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[7]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[0]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[1]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[2]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[3]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[4]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[5]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[6]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[7]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- subs r2, r2, #1
- bgt loop_h
- bx lr
- ENDP ; |vpx_h_predictor_32x32_neon|
- ALIGN 4
-
-;void vpx_tm_predictor_4x4_neon (uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_tm_predictor_4x4_neon| PROC
- ; Load ytop_left = above[-1];
- sub r12, r2, #1
- vld1.u8 {d0[]}, [r12]
-
- ; Load above 4 pixels
- vld1.32 {d2[0]}, [r2]
-
- ; Compute above - ytop_left
- vsubl.u8 q3, d2, d0
-
- ; Load left row by row and compute left + (above - ytop_left)
- ; 1st row and 2nd row
- vld1.u8 {d2[]}, [r3]!
- vld1.u8 {d4[]}, [r3]!
- vmovl.u8 q1, d2
- vmovl.u8 q2, d4
- vadd.s16 q1, q1, q3
- vadd.s16 q2, q2, q3
- vqmovun.s16 d0, q1
- vqmovun.s16 d1, q2
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d1[0]}, [r0], r1
-
- ; 3rd row and 4th row
- vld1.u8 {d2[]}, [r3]!
- vld1.u8 {d4[]}, [r3]
- vmovl.u8 q1, d2
- vmovl.u8 q2, d4
- vadd.s16 q1, q1, q3
- vadd.s16 q2, q2, q3
- vqmovun.s16 d0, q1
- vqmovun.s16 d1, q2
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d1[0]}, [r0], r1
- bx lr
- ENDP ; |vpx_tm_predictor_4x4_neon|
- ALIGN 4
-
-;void vpx_tm_predictor_8x8_neon (uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_tm_predictor_8x8_neon| PROC
- ; Load ytop_left = above[-1];
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- ; preload 8 left
- vld1.8 {d30}, [r3]
-
- ; Load above 8 pixels
- vld1.64 {d2}, [r2]
-
- vmovl.u8 q10, d30
-
- ; Compute above - ytop_left
- vsubl.u8 q3, d2, d0
-
- ; Load left row by row and compute left + (above - ytop_left)
- ; 1st row and 2nd row
- vdup.16 q0, d20[0]
- vdup.16 q1, d20[1]
- vadd.s16 q0, q3, q0
- vadd.s16 q1, q3, q1
-
- ; 3rd row and 4th row
- vdup.16 q8, d20[2]
- vdup.16 q9, d20[3]
- vadd.s16 q8, q3, q8
- vadd.s16 q9, q3, q9
-
- vqmovun.s16 d0, q0
- vqmovun.s16 d1, q1
- vqmovun.s16 d2, q8
- vqmovun.s16 d3, q9
-
- vst1.64 {d0}, [r0], r1
- vst1.64 {d1}, [r0], r1
- vst1.64 {d2}, [r0], r1
- vst1.64 {d3}, [r0], r1
-
- ; 5th row and 6th row
- vdup.16 q0, d21[0]
- vdup.16 q1, d21[1]
- vadd.s16 q0, q3, q0
- vadd.s16 q1, q3, q1
-
- ; 7th row and 8th row
- vdup.16 q8, d21[2]
- vdup.16 q9, d21[3]
- vadd.s16 q8, q3, q8
- vadd.s16 q9, q3, q9
-
- vqmovun.s16 d0, q0
- vqmovun.s16 d1, q1
- vqmovun.s16 d2, q8
- vqmovun.s16 d3, q9
-
- vst1.64 {d0}, [r0], r1
- vst1.64 {d1}, [r0], r1
- vst1.64 {d2}, [r0], r1
- vst1.64 {d3}, [r0], r1
-
- bx lr
- ENDP ; |vpx_tm_predictor_8x8_neon|
- ALIGN 4
-
-;void vpx_tm_predictor_16x16_neon (uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_tm_predictor_16x16_neon| PROC
- ; Load ytop_left = above[-1];
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- ; Load above 8 pixels
- vld1.8 {q1}, [r2]
-
- ; preload 8 left into r12
- vld1.8 {d18}, [r3]!
-
- ; Compute above - ytop_left
- vsubl.u8 q2, d2, d0
- vsubl.u8 q3, d3, d0
-
- vmovl.u8 q10, d18
-
- ; Load left row by row and compute left + (above - ytop_left)
- ; Process 8 rows in each single loop and loop 2 times to process 16 rows.
- mov r2, #2
-
-loop_16x16_neon
- ; Process two rows.
- vdup.16 q0, d20[0]
- vdup.16 q8, d20[1]
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d20[2] ; proload next 2 rows data
- vdup.16 q8, d20[3]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- ; Process two rows.
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d21[0] ; proload next 2 rows data
- vdup.16 q8, d21[1]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d21[2] ; proload next 2 rows data
- vdup.16 q8, d21[3]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
-
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vld1.8 {d18}, [r3]! ; preload 8 left into r12
- vmovl.u8 q10, d18
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- subs r2, r2, #1
- bgt loop_16x16_neon
-
- bx lr
- ENDP ; |vpx_tm_predictor_16x16_neon|
- ALIGN 4
-
-;void vpx_tm_predictor_32x32_neon (uint8_t *dst, ptrdiff_t y_stride,
-; const uint8_t *above,
-; const uint8_t *left)
-; r0 uint8_t *dst
-; r1 ptrdiff_t y_stride
-; r2 const uint8_t *above
-; r3 const uint8_t *left
-
-|vpx_tm_predictor_32x32_neon| PROC
- ; Load ytop_left = above[-1];
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- ; Load above 32 pixels
- vld1.8 {q1}, [r2]!
- vld1.8 {q2}, [r2]
-
- ; preload 8 left pixels
- vld1.8 {d26}, [r3]!
-
- ; Compute above - ytop_left
- vsubl.u8 q8, d2, d0
- vsubl.u8 q9, d3, d0
- vsubl.u8 q10, d4, d0
- vsubl.u8 q11, d5, d0
-
- vmovl.u8 q3, d26
-
- ; Load left row by row and compute left + (above - ytop_left)
- ; Process 8 rows in each single loop and loop 4 times to process 32 rows.
- mov r2, #4
-
-loop_32x32_neon
- ; Process two rows.
- vdup.16 q0, d6[0]
- vdup.16 q2, d6[1]
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q1, d6[2]
- vdup.16 q2, d6[3]
- vst1.64 {d24-d27}, [r0], r1
-
- ; Process two rows.
- vadd.s16 q12, q1, q8
- vadd.s16 q13, q1, q9
- vadd.s16 q14, q1, q10
- vadd.s16 q15, q1, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q0, d7[0]
- vdup.16 q2, d7[1]
- vst1.64 {d24-d27}, [r0], r1
-
- ; Process two rows.
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q0, d7[2]
- vdup.16 q2, d7[3]
- vst1.64 {d24-d27}, [r0], r1
-
- ; Process two rows.
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vld1.8 {d0}, [r3]! ; preload 8 left pixels
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vmovl.u8 q3, d0
- vst1.64 {d24-d27}, [r0], r1
-
- subs r2, r2, #1
- bgt loop_32x32_neon
-
- bx lr
- ENDP ; |vpx_tm_predictor_32x32_neon|
- ALIGN 4
-
- END
diff --git a/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/loopfilter_mb_neon.asm b/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/loopfilter_mb_neon.asm
deleted file mode 100644
index 9c3736faf8..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/loopfilter_mb_neon.asm
+++ /dev/null
@@ -1,641 +0,0 @@
-; This file was created from a .asm file
-; using the ads2armasm_ms.pl script.
-;
-; Copyright (c) 2013 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
- EXPORT |vpx_lpf_horizontal_edge_8_neon|
- EXPORT |vpx_lpf_horizontal_edge_16_neon|
- EXPORT |vpx_lpf_vertical_16_neon|
-
- AREA |.text|, CODE, READONLY, ALIGN=2
-
-; void mb_lpf_horizontal_edge(uint8_t *s, int p,
-; const uint8_t *blimit,
-; const uint8_t *limit,
-; const uint8_t *thresh,
-; int count)
-; r0 uint8_t *s,
-; r1 int p, /* pitch */
-; r2 const uint8_t *blimit,
-; r3 const uint8_t *limit,
-; sp const uint8_t *thresh,
-; r12 int count
-|mb_lpf_horizontal_edge| PROC
- push {r4-r8, lr}
- vpush {d8-d15}
- ldr r4, [sp, #88] ; load thresh
-
-h_count
- vld1.8 {d16[]}, [r2] ; load *blimit
- vld1.8 {d17[]}, [r3] ; load *limit
- vld1.8 {d18[]}, [r4] ; load *thresh
-
- sub r8, r0, r1, lsl #3 ; move src pointer down by 8 lines
-
- vld1.u8 {d0}, [r8@64], r1 ; p7
- vld1.u8 {d1}, [r8@64], r1 ; p6
- vld1.u8 {d2}, [r8@64], r1 ; p5
- vld1.u8 {d3}, [r8@64], r1 ; p4
- vld1.u8 {d4}, [r8@64], r1 ; p3
- vld1.u8 {d5}, [r8@64], r1 ; p2
- vld1.u8 {d6}, [r8@64], r1 ; p1
- vld1.u8 {d7}, [r8@64], r1 ; p0
- vld1.u8 {d8}, [r8@64], r1 ; q0
- vld1.u8 {d9}, [r8@64], r1 ; q1
- vld1.u8 {d10}, [r8@64], r1 ; q2
- vld1.u8 {d11}, [r8@64], r1 ; q3
- vld1.u8 {d12}, [r8@64], r1 ; q4
- vld1.u8 {d13}, [r8@64], r1 ; q5
- vld1.u8 {d14}, [r8@64], r1 ; q6
- vld1.u8 {d15}, [r8@64], r1 ; q7
-
- bl vpx_wide_mbfilter_neon
-
- tst r7, #1
- beq h_mbfilter
-
- ; flat && mask were not set for any of the channels. Just store the values
- ; from filter.
- sub r8, r0, r1, lsl #1
-
- vst1.u8 {d25}, [r8@64], r1 ; store op1
- vst1.u8 {d24}, [r8@64], r1 ; store op0
- vst1.u8 {d23}, [r8@64], r1 ; store oq0
- vst1.u8 {d26}, [r8@64], r1 ; store oq1
-
- b h_next
-
-h_mbfilter
- tst r7, #2
- beq h_wide_mbfilter
-
- ; flat2 was not set for any of the channels. Just store the values from
- ; mbfilter.
- sub r8, r0, r1, lsl #1
- sub r8, r8, r1
-
- vst1.u8 {d18}, [r8@64], r1 ; store op2
- vst1.u8 {d19}, [r8@64], r1 ; store op1
- vst1.u8 {d20}, [r8@64], r1 ; store op0
- vst1.u8 {d21}, [r8@64], r1 ; store oq0
- vst1.u8 {d22}, [r8@64], r1 ; store oq1
- vst1.u8 {d23}, [r8@64], r1 ; store oq2
-
- b h_next
-
-h_wide_mbfilter
- sub r8, r0, r1, lsl #3
- add r8, r8, r1
-
- vst1.u8 {d16}, [r8@64], r1 ; store op6
- vst1.u8 {d24}, [r8@64], r1 ; store op5
- vst1.u8 {d25}, [r8@64], r1 ; store op4
- vst1.u8 {d26}, [r8@64], r1 ; store op3
- vst1.u8 {d27}, [r8@64], r1 ; store op2
- vst1.u8 {d18}, [r8@64], r1 ; store op1
- vst1.u8 {d19}, [r8@64], r1 ; store op0
- vst1.u8 {d20}, [r8@64], r1 ; store oq0
- vst1.u8 {d21}, [r8@64], r1 ; store oq1
- vst1.u8 {d22}, [r8@64], r1 ; store oq2
- vst1.u8 {d23}, [r8@64], r1 ; store oq3
- vst1.u8 {d1}, [r8@64], r1 ; store oq4
- vst1.u8 {d2}, [r8@64], r1 ; store oq5
- vst1.u8 {d3}, [r8@64], r1 ; store oq6
-
-h_next
- add r0, r0, #8
- subs r12, r12, #1
- bne h_count
-
- vpop {d8-d15}
- pop {r4-r8, pc}
-
- ENDP ; |mb_lpf_horizontal_edge|
- ALIGN 4
-
-; void vpx_lpf_horizontal_edge_8_neon(uint8_t *s, int pitch,
-; const uint8_t *blimit,
-; const uint8_t *limit,
-; const uint8_t *thresh)
-; r0 uint8_t *s,
-; r1 int pitch,
-; r2 const uint8_t *blimit,
-; r3 const uint8_t *limit,
-; sp const uint8_t *thresh
-|vpx_lpf_horizontal_edge_8_neon| PROC
- mov r12, #1
- b mb_lpf_horizontal_edge
- ENDP ; |vpx_lpf_horizontal_edge_8_neon|
- ALIGN 4
-
-; void vpx_lpf_horizontal_edge_16_neon(uint8_t *s, int pitch,
-; const uint8_t *blimit,
-; const uint8_t *limit,
-; const uint8_t *thresh)
-; r0 uint8_t *s,
-; r1 int pitch,
-; r2 const uint8_t *blimit,
-; r3 const uint8_t *limit,
-; sp const uint8_t *thresh
-|vpx_lpf_horizontal_edge_16_neon| PROC
- mov r12, #2
- b mb_lpf_horizontal_edge
- ENDP ; |vpx_lpf_horizontal_edge_16_neon|
- ALIGN 4
-
-; void vpx_lpf_vertical_16_neon(uint8_t *s, int p,
-; const uint8_t *blimit,
-; const uint8_t *limit,
-; const uint8_t *thresh)
-; r0 uint8_t *s,
-; r1 int p, /* pitch */
-; r2 const uint8_t *blimit,
-; r3 const uint8_t *limit,
-; sp const uint8_t *thresh,
-|vpx_lpf_vertical_16_neon| PROC
- push {r4-r8, lr}
- vpush {d8-d15}
- ldr r4, [sp, #88] ; load thresh
-
- vld1.8 {d16[]}, [r2] ; load *blimit
- vld1.8 {d17[]}, [r3] ; load *limit
- vld1.8 {d18[]}, [r4] ; load *thresh
-
- sub r8, r0, #8
-
- vld1.8 {d0}, [r8@64], r1
- vld1.8 {d8}, [r0@64], r1
- vld1.8 {d1}, [r8@64], r1
- vld1.8 {d9}, [r0@64], r1
- vld1.8 {d2}, [r8@64], r1
- vld1.8 {d10}, [r0@64], r1
- vld1.8 {d3}, [r8@64], r1
- vld1.8 {d11}, [r0@64], r1
- vld1.8 {d4}, [r8@64], r1
- vld1.8 {d12}, [r0@64], r1
- vld1.8 {d5}, [r8@64], r1
- vld1.8 {d13}, [r0@64], r1
- vld1.8 {d6}, [r8@64], r1
- vld1.8 {d14}, [r0@64], r1
- vld1.8 {d7}, [r8@64], r1
- vld1.8 {d15}, [r0@64], r1
-
- sub r0, r0, r1, lsl #3
-
- vtrn.32 q0, q2
- vtrn.32 q1, q3
- vtrn.32 q4, q6
- vtrn.32 q5, q7
-
- vtrn.16 q0, q1
- vtrn.16 q2, q3
- vtrn.16 q4, q5
- vtrn.16 q6, q7
-
- vtrn.8 d0, d1
- vtrn.8 d2, d3
- vtrn.8 d4, d5
- vtrn.8 d6, d7
-
- vtrn.8 d8, d9
- vtrn.8 d10, d11
- vtrn.8 d12, d13
- vtrn.8 d14, d15
-
- bl vpx_wide_mbfilter_neon
-
- tst r7, #1
- beq v_mbfilter
-
- ; flat && mask were not set for any of the channels. Just store the values
- ; from filter.
- sub r8, r0, #2
-
- vswp d23, d25
-
- vst4.8 {d23[0], d24[0], d25[0], d26[0]}, [r8], r1
- vst4.8 {d23[1], d24[1], d25[1], d26[1]}, [r8], r1
- vst4.8 {d23[2], d24[2], d25[2], d26[2]}, [r8], r1
- vst4.8 {d23[3], d24[3], d25[3], d26[3]}, [r8], r1
- vst4.8 {d23[4], d24[4], d25[4], d26[4]}, [r8], r1
- vst4.8 {d23[5], d24[5], d25[5], d26[5]}, [r8], r1
- vst4.8 {d23[6], d24[6], d25[6], d26[6]}, [r8], r1
- vst4.8 {d23[7], d24[7], d25[7], d26[7]}, [r8], r1
-
- b v_end
-
-v_mbfilter
- tst r7, #2
- beq v_wide_mbfilter
-
- ; flat2 was not set for any of the channels. Just store the values from
- ; mbfilter.
- sub r8, r0, #3
-
- vst3.8 {d18[0], d19[0], d20[0]}, [r8], r1
- vst3.8 {d21[0], d22[0], d23[0]}, [r0], r1
- vst3.8 {d18[1], d19[1], d20[1]}, [r8], r1
- vst3.8 {d21[1], d22[1], d23[1]}, [r0], r1
- vst3.8 {d18[2], d19[2], d20[2]}, [r8], r1
- vst3.8 {d21[2], d22[2], d23[2]}, [r0], r1
- vst3.8 {d18[3], d19[3], d20[3]}, [r8], r1
- vst3.8 {d21[3], d22[3], d23[3]}, [r0], r1
- vst3.8 {d18[4], d19[4], d20[4]}, [r8], r1
- vst3.8 {d21[4], d22[4], d23[4]}, [r0], r1
- vst3.8 {d18[5], d19[5], d20[5]}, [r8], r1
- vst3.8 {d21[5], d22[5], d23[5]}, [r0], r1
- vst3.8 {d18[6], d19[6], d20[6]}, [r8], r1
- vst3.8 {d21[6], d22[6], d23[6]}, [r0], r1
- vst3.8 {d18[7], d19[7], d20[7]}, [r8], r1
- vst3.8 {d21[7], d22[7], d23[7]}, [r0], r1
-
- b v_end
-
-v_wide_mbfilter
- sub r8, r0, #8
-
- vtrn.32 d0, d26
- vtrn.32 d16, d27
- vtrn.32 d24, d18
- vtrn.32 d25, d19
-
- vtrn.16 d0, d24
- vtrn.16 d16, d25
- vtrn.16 d26, d18
- vtrn.16 d27, d19
-
- vtrn.8 d0, d16
- vtrn.8 d24, d25
- vtrn.8 d26, d27
- vtrn.8 d18, d19
-
- vtrn.32 d20, d1
- vtrn.32 d21, d2
- vtrn.32 d22, d3
- vtrn.32 d23, d15
-
- vtrn.16 d20, d22
- vtrn.16 d21, d23
- vtrn.16 d1, d3
- vtrn.16 d2, d15
-
- vtrn.8 d20, d21
- vtrn.8 d22, d23
- vtrn.8 d1, d2
- vtrn.8 d3, d15
-
- vst1.8 {d0}, [r8@64], r1
- vst1.8 {d20}, [r0@64], r1
- vst1.8 {d16}, [r8@64], r1
- vst1.8 {d21}, [r0@64], r1
- vst1.8 {d24}, [r8@64], r1
- vst1.8 {d22}, [r0@64], r1
- vst1.8 {d25}, [r8@64], r1
- vst1.8 {d23}, [r0@64], r1
- vst1.8 {d26}, [r8@64], r1
- vst1.8 {d1}, [r0@64], r1
- vst1.8 {d27}, [r8@64], r1
- vst1.8 {d2}, [r0@64], r1
- vst1.8 {d18}, [r8@64], r1
- vst1.8 {d3}, [r0@64], r1
- vst1.8 {d19}, [r8@64], r1
- vst1.8 {d15}, [r0@64], r1
-
-v_end
- vpop {d8-d15}
- pop {r4-r8, pc}
-
- ENDP ; |vpx_lpf_vertical_16_neon|
- ALIGN 4
-
-; void vpx_wide_mbfilter_neon();
-; This is a helper function for the loopfilters. The invidual functions do the
-; necessary load, transpose (if necessary) and store.
-;
-; r0-r3 PRESERVE
-; d16 blimit
-; d17 limit
-; d18 thresh
-; d0 p7
-; d1 p6
-; d2 p5
-; d3 p4
-; d4 p3
-; d5 p2
-; d6 p1
-; d7 p0
-; d8 q0
-; d9 q1
-; d10 q2
-; d11 q3
-; d12 q4
-; d13 q5
-; d14 q6
-; d15 q7
-|vpx_wide_mbfilter_neon| PROC
- mov r7, #0
-
- ; filter_mask
- vabd.u8 d19, d4, d5 ; abs(p3 - p2)
- vabd.u8 d20, d5, d6 ; abs(p2 - p1)
- vabd.u8 d21, d6, d7 ; abs(p1 - p0)
- vabd.u8 d22, d9, d8 ; abs(q1 - q0)
- vabd.u8 d23, d10, d9 ; abs(q2 - q1)
- vabd.u8 d24, d11, d10 ; abs(q3 - q2)
-
- ; only compare the largest value to limit
- vmax.u8 d19, d19, d20 ; max(abs(p3 - p2), abs(p2 - p1))
- vmax.u8 d20, d21, d22 ; max(abs(p1 - p0), abs(q1 - q0))
- vmax.u8 d23, d23, d24 ; max(abs(q2 - q1), abs(q3 - q2))
- vmax.u8 d19, d19, d20
-
- vabd.u8 d24, d7, d8 ; abs(p0 - q0)
-
- vmax.u8 d19, d19, d23
-
- vabd.u8 d23, d6, d9 ; a = abs(p1 - q1)
- vqadd.u8 d24, d24, d24 ; b = abs(p0 - q0) * 2
-
- ; abs () > limit
- vcge.u8 d19, d17, d19
-
- ; flatmask4
- vabd.u8 d25, d7, d5 ; abs(p0 - p2)
- vabd.u8 d26, d8, d10 ; abs(q0 - q2)
- vabd.u8 d27, d4, d7 ; abs(p3 - p0)
- vabd.u8 d28, d11, d8 ; abs(q3 - q0)
-
- ; only compare the largest value to thresh
- vmax.u8 d25, d25, d26 ; max(abs(p0 - p2), abs(q0 - q2))
- vmax.u8 d26, d27, d28 ; max(abs(p3 - p0), abs(q3 - q0))
- vmax.u8 d25, d25, d26
- vmax.u8 d20, d20, d25
-
- vshr.u8 d23, d23, #1 ; a = a / 2
- vqadd.u8 d24, d24, d23 ; a = b + a
-
- vmov.u8 d30, #1
- vcge.u8 d24, d16, d24 ; (a > blimit * 2 + limit) * -1
-
- vcge.u8 d20, d30, d20 ; flat
-
- vand d19, d19, d24 ; mask
-
- ; hevmask
- vcgt.u8 d21, d21, d18 ; (abs(p1 - p0) > thresh)*-1
- vcgt.u8 d22, d22, d18 ; (abs(q1 - q0) > thresh)*-1
- vorr d21, d21, d22 ; hev
-
- vand d16, d20, d19 ; flat && mask
- vmov r5, r6, d16
-
- ; flatmask5(1, p7, p6, p5, p4, p0, q0, q4, q5, q6, q7)
- vabd.u8 d22, d3, d7 ; abs(p4 - p0)
- vabd.u8 d23, d12, d8 ; abs(q4 - q0)
- vabd.u8 d24, d7, d2 ; abs(p0 - p5)
- vabd.u8 d25, d8, d13 ; abs(q0 - q5)
- vabd.u8 d26, d1, d7 ; abs(p6 - p0)
- vabd.u8 d27, d14, d8 ; abs(q6 - q0)
- vabd.u8 d28, d0, d7 ; abs(p7 - p0)
- vabd.u8 d29, d15, d8 ; abs(q7 - q0)
-
- ; only compare the largest value to thresh
- vmax.u8 d22, d22, d23 ; max(abs(p4 - p0), abs(q4 - q0))
- vmax.u8 d23, d24, d25 ; max(abs(p0 - p5), abs(q0 - q5))
- vmax.u8 d24, d26, d27 ; max(abs(p6 - p0), abs(q6 - q0))
- vmax.u8 d25, d28, d29 ; max(abs(p7 - p0), abs(q7 - q0))
-
- vmax.u8 d26, d22, d23
- vmax.u8 d27, d24, d25
- vmax.u8 d23, d26, d27
-
- vcge.u8 d18, d30, d23 ; flat2
-
- vmov.u8 d22, #0x80
-
- orrs r5, r5, r6 ; Check for 0
- orreq r7, r7, #1 ; Only do filter branch
-
- vand d17, d18, d16 ; flat2 && flat && mask
- vmov r5, r6, d17
-
- ; mbfilter() function
-
- ; filter() function
- ; convert to signed
- veor d23, d8, d22 ; qs0
- veor d24, d7, d22 ; ps0
- veor d25, d6, d22 ; ps1
- veor d26, d9, d22 ; qs1
-
- vmov.u8 d27, #3
-
- vsub.s8 d28, d23, d24 ; ( qs0 - ps0)
- vqsub.s8 d29, d25, d26 ; filter = clamp(ps1-qs1)
- vmull.s8 q15, d28, d27 ; 3 * ( qs0 - ps0)
- vand d29, d29, d21 ; filter &= hev
- vaddw.s8 q15, q15, d29 ; filter + 3 * (qs0 - ps0)
- vmov.u8 d29, #4
-
- ; filter = clamp(filter + 3 * ( qs0 - ps0))
- vqmovn.s16 d28, q15
-
- vand d28, d28, d19 ; filter &= mask
-
- vqadd.s8 d30, d28, d27 ; filter2 = clamp(filter+3)
- vqadd.s8 d29, d28, d29 ; filter1 = clamp(filter+4)
- vshr.s8 d30, d30, #3 ; filter2 >>= 3
- vshr.s8 d29, d29, #3 ; filter1 >>= 3
-
-
- vqadd.s8 d24, d24, d30 ; op0 = clamp(ps0 + filter2)
- vqsub.s8 d23, d23, d29 ; oq0 = clamp(qs0 - filter1)
-
- ; outer tap adjustments: ++filter1 >> 1
- vrshr.s8 d29, d29, #1
- vbic d29, d29, d21 ; filter &= ~hev
-
- vqadd.s8 d25, d25, d29 ; op1 = clamp(ps1 + filter)
- vqsub.s8 d26, d26, d29 ; oq1 = clamp(qs1 - filter)
-
- veor d24, d24, d22 ; *f_op0 = u^0x80
- veor d23, d23, d22 ; *f_oq0 = u^0x80
- veor d25, d25, d22 ; *f_op1 = u^0x80
- veor d26, d26, d22 ; *f_oq1 = u^0x80
-
- tst r7, #1
- bxne lr
-
- orrs r5, r5, r6 ; Check for 0
- orreq r7, r7, #2 ; Only do mbfilter branch
-
- ; mbfilter flat && mask branch
- ; TODO(fgalligan): Can I decrease the cycles shifting to consective d's
- ; and using vibt on the q's?
- vmov.u8 d29, #2
- vaddl.u8 q15, d7, d8 ; op2 = p0 + q0
- vmlal.u8 q15, d4, d27 ; op2 = p0 + q0 + p3 * 3
- vmlal.u8 q15, d5, d29 ; op2 = p0 + q0 + p3 * 3 + p2 * 2
- vaddl.u8 q10, d4, d5
- vaddw.u8 q15, d6 ; op2=p1 + p0 + q0 + p3 * 3 + p2 *2
- vaddl.u8 q14, d6, d9
- vqrshrn.u16 d18, q15, #3 ; r_op2
-
- vsub.i16 q15, q10
- vaddl.u8 q10, d4, d6
- vadd.i16 q15, q14
- vaddl.u8 q14, d7, d10
- vqrshrn.u16 d19, q15, #3 ; r_op1
-
- vsub.i16 q15, q10
- vadd.i16 q15, q14
- vaddl.u8 q14, d8, d11
- vqrshrn.u16 d20, q15, #3 ; r_op0
-
- vsubw.u8 q15, d4 ; oq0 = op0 - p3
- vsubw.u8 q15, d7 ; oq0 -= p0
- vadd.i16 q15, q14
- vaddl.u8 q14, d9, d11
- vqrshrn.u16 d21, q15, #3 ; r_oq0
-
- vsubw.u8 q15, d5 ; oq1 = oq0 - p2
- vsubw.u8 q15, d8 ; oq1 -= q0
- vadd.i16 q15, q14
- vaddl.u8 q14, d10, d11
- vqrshrn.u16 d22, q15, #3 ; r_oq1
-
- vsubw.u8 q15, d6 ; oq2 = oq0 - p1
- vsubw.u8 q15, d9 ; oq2 -= q1
- vadd.i16 q15, q14
- vqrshrn.u16 d27, q15, #3 ; r_oq2
-
- ; Filter does not set op2 or oq2, so use p2 and q2.
- vbif d18, d5, d16 ; t_op2 |= p2 & ~(flat & mask)
- vbif d19, d25, d16 ; t_op1 |= f_op1 & ~(flat & mask)
- vbif d20, d24, d16 ; t_op0 |= f_op0 & ~(flat & mask)
- vbif d21, d23, d16 ; t_oq0 |= f_oq0 & ~(flat & mask)
- vbif d22, d26, d16 ; t_oq1 |= f_oq1 & ~(flat & mask)
-
- vbit d23, d27, d16 ; t_oq2 |= r_oq2 & (flat & mask)
- vbif d23, d10, d16 ; t_oq2 |= q2 & ~(flat & mask)
-
- tst r7, #2
- bxne lr
-
- ; wide_mbfilter flat2 && flat && mask branch
- vmov.u8 d16, #7
- vaddl.u8 q15, d7, d8 ; op6 = p0 + q0
- vaddl.u8 q12, d2, d3
- vaddl.u8 q13, d4, d5
- vaddl.u8 q14, d1, d6
- vmlal.u8 q15, d0, d16 ; op6 += p7 * 3
- vadd.i16 q12, q13
- vadd.i16 q15, q14
- vaddl.u8 q14, d2, d9
- vadd.i16 q15, q12
- vaddl.u8 q12, d0, d1
- vaddw.u8 q15, d1
- vaddl.u8 q13, d0, d2
- vadd.i16 q14, q15, q14
- vqrshrn.u16 d16, q15, #4 ; w_op6
-
- vsub.i16 q15, q14, q12
- vaddl.u8 q14, d3, d10
- vqrshrn.u16 d24, q15, #4 ; w_op5
-
- vsub.i16 q15, q13
- vaddl.u8 q13, d0, d3
- vadd.i16 q15, q14
- vaddl.u8 q14, d4, d11
- vqrshrn.u16 d25, q15, #4 ; w_op4
-
- vadd.i16 q15, q14
- vaddl.u8 q14, d0, d4
- vsub.i16 q15, q13
- vsub.i16 q14, q15, q14
- vqrshrn.u16 d26, q15, #4 ; w_op3
-
- vaddw.u8 q15, q14, d5 ; op2 += p2
- vaddl.u8 q14, d0, d5
- vaddw.u8 q15, d12 ; op2 += q4
- vbif d26, d4, d17 ; op3 |= p3 & ~(f2 & f & m)
- vqrshrn.u16 d27, q15, #4 ; w_op2
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d0, d6
- vaddw.u8 q15, d6 ; op1 += p1
- vaddw.u8 q15, d13 ; op1 += q5
- vbif d27, d18, d17 ; op2 |= t_op2 & ~(f2 & f & m)
- vqrshrn.u16 d18, q15, #4 ; w_op1
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d0, d7
- vaddw.u8 q15, d7 ; op0 += p0
- vaddw.u8 q15, d14 ; op0 += q6
- vbif d18, d19, d17 ; op1 |= t_op1 & ~(f2 & f & m)
- vqrshrn.u16 d19, q15, #4 ; w_op0
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d1, d8
- vaddw.u8 q15, d8 ; oq0 += q0
- vaddw.u8 q15, d15 ; oq0 += q7
- vbif d19, d20, d17 ; op0 |= t_op0 & ~(f2 & f & m)
- vqrshrn.u16 d20, q15, #4 ; w_oq0
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d2, d9
- vaddw.u8 q15, d9 ; oq1 += q1
- vaddl.u8 q4, d10, d15
- vaddw.u8 q15, d15 ; oq1 += q7
- vbif d20, d21, d17 ; oq0 |= t_oq0 & ~(f2 & f & m)
- vqrshrn.u16 d21, q15, #4 ; w_oq1
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d3, d10
- vadd.i16 q15, q4
- vaddl.u8 q4, d11, d15
- vbif d21, d22, d17 ; oq1 |= t_oq1 & ~(f2 & f & m)
- vqrshrn.u16 d22, q15, #4 ; w_oq2
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d4, d11
- vadd.i16 q15, q4
- vaddl.u8 q4, d12, d15
- vbif d22, d23, d17 ; oq2 |= t_oq2 & ~(f2 & f & m)
- vqrshrn.u16 d23, q15, #4 ; w_oq3
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d5, d12
- vadd.i16 q15, q4
- vaddl.u8 q4, d13, d15
- vbif d16, d1, d17 ; op6 |= p6 & ~(f2 & f & m)
- vqrshrn.u16 d1, q15, #4 ; w_oq4
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d6, d13
- vadd.i16 q15, q4
- vaddl.u8 q4, d14, d15
- vbif d24, d2, d17 ; op5 |= p5 & ~(f2 & f & m)
- vqrshrn.u16 d2, q15, #4 ; w_oq5
-
- vsub.i16 q15, q14
- vbif d25, d3, d17 ; op4 |= p4 & ~(f2 & f & m)
- vadd.i16 q15, q4
- vbif d23, d11, d17 ; oq3 |= q3 & ~(f2 & f & m)
- vqrshrn.u16 d3, q15, #4 ; w_oq6
- vbif d1, d12, d17 ; oq4 |= q4 & ~(f2 & f & m)
- vbif d2, d13, d17 ; oq5 |= q5 & ~(f2 & f & m)
- vbif d3, d14, d17 ; oq6 |= q6 & ~(f2 & f & m)
-
- bx lr
- ENDP ; |vpx_wide_mbfilter_neon|
- ALIGN 4
-
- END
diff --git a/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/save_reg_neon.asm b/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/save_reg_neon.asm
deleted file mode 100644
index 4cf9988e65..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/armasm_ms/save_reg_neon.asm
+++ /dev/null
@@ -1,39 +0,0 @@
-; This file was created from a .asm file
-; using the ads2armasm_ms.pl script.
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
- EXPORT |vpx_push_neon|
- EXPORT |vpx_pop_neon|
-
-
-
-
- AREA |.text|, CODE, READONLY, ALIGN=2
-
-|vpx_push_neon| PROC
- vst1.i64 {d8, d9, d10, d11}, [r0]!
- vst1.i64 {d12, d13, d14, d15}, [r0]!
- bx lr
-
- ENDP
- ALIGN 4
-
-|vpx_pop_neon| PROC
- vld1.i64 {d8, d9, d10, d11}, [r0]!
- vld1.i64 {d12, d13, d14, d15}, [r0]!
- bx lr
-
- ENDP
- ALIGN 4
-
- END
-
diff --git a/thirdparty/libvpx/vpx_dsp/arm/gas/intrapred_neon_asm.s b/thirdparty/libvpx/vpx_dsp/arm/gas/intrapred_neon_asm.s
deleted file mode 100644
index 3932227fc5..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/gas/intrapred_neon_asm.s
+++ /dev/null
@@ -1,658 +0,0 @@
-@ This file was created from a .asm file
-@ using the ads2gas.pl script.
- .equ DO1STROUNDING, 0
-@
-@ Copyright (c) 2014 The WebM project authors. All Rights Reserved.
-@
-@ Use of this source code is governed by a BSD-style license
-@ that can be found in the LICENSE file in the root of the source
-@ tree. An additional intellectual property rights grant can be found
-@ in the file PATENTS. All contributing project authors may
-@ be found in the AUTHORS file in the root of the source tree.
-@
-
- .global vpx_v_predictor_4x4_neon
- .type vpx_v_predictor_4x4_neon, function
- .global vpx_v_predictor_8x8_neon
- .type vpx_v_predictor_8x8_neon, function
- .global vpx_v_predictor_16x16_neon
- .type vpx_v_predictor_16x16_neon, function
- .global vpx_v_predictor_32x32_neon
- .type vpx_v_predictor_32x32_neon, function
- .global vpx_h_predictor_4x4_neon
- .type vpx_h_predictor_4x4_neon, function
- .global vpx_h_predictor_8x8_neon
- .type vpx_h_predictor_8x8_neon, function
- .global vpx_h_predictor_16x16_neon
- .type vpx_h_predictor_16x16_neon, function
- .global vpx_h_predictor_32x32_neon
- .type vpx_h_predictor_32x32_neon, function
- .global vpx_tm_predictor_4x4_neon
- .type vpx_tm_predictor_4x4_neon, function
- .global vpx_tm_predictor_8x8_neon
- .type vpx_tm_predictor_8x8_neon, function
- .global vpx_tm_predictor_16x16_neon
- .type vpx_tm_predictor_16x16_neon, function
- .global vpx_tm_predictor_32x32_neon
- .type vpx_tm_predictor_32x32_neon, function
- .arm
- .eabi_attribute 24, 1 @Tag_ABI_align_needed
- .eabi_attribute 25, 1 @Tag_ABI_align_preserved
-
-.text
-.p2align 2
-
-@void vpx_v_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_v_predictor_4x4_neon:
- vpx_v_predictor_4x4_neon: @ PROC
- vld1.32 {d0[0]}, [r2]
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- bx lr
- .size vpx_v_predictor_4x4_neon, .-vpx_v_predictor_4x4_neon @ ENDP @ |vpx_v_predictor_4x4_neon|
-
-@void vpx_v_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_v_predictor_8x8_neon:
- vpx_v_predictor_8x8_neon: @ PROC
- vld1.8 {d0}, [r2]
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- bx lr
- .size vpx_v_predictor_8x8_neon, .-vpx_v_predictor_8x8_neon @ ENDP @ |vpx_v_predictor_8x8_neon|
-
-@void vpx_v_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_v_predictor_16x16_neon:
- vpx_v_predictor_16x16_neon: @ PROC
- vld1.8 {q0}, [r2]
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- bx lr
- .size vpx_v_predictor_16x16_neon, .-vpx_v_predictor_16x16_neon @ ENDP @ |vpx_v_predictor_16x16_neon|
-
-@void vpx_v_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_v_predictor_32x32_neon:
- vpx_v_predictor_32x32_neon: @ PROC
- vld1.8 {q0, q1}, [r2]
- mov r2, #2
-loop_v:
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- subs r2, r2, #1
- bgt loop_v
- bx lr
- .size vpx_v_predictor_32x32_neon, .-vpx_v_predictor_32x32_neon @ ENDP @ |vpx_v_predictor_32x32_neon|
-
-@void vpx_h_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_h_predictor_4x4_neon:
- vpx_h_predictor_4x4_neon: @ PROC
- vld1.32 {d1[0]}, [r3]
- vdup.8 d0, d1[0]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[1]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[2]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[3]
- vst1.32 {d0[0]}, [r0], r1
- bx lr
- .size vpx_h_predictor_4x4_neon, .-vpx_h_predictor_4x4_neon @ ENDP @ |vpx_h_predictor_4x4_neon|
-
-@void vpx_h_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_h_predictor_8x8_neon:
- vpx_h_predictor_8x8_neon: @ PROC
- vld1.64 {d1}, [r3]
- vdup.8 d0, d1[0]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[1]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[2]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[3]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[4]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[5]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[6]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[7]
- vst1.64 {d0}, [r0], r1
- bx lr
- .size vpx_h_predictor_8x8_neon, .-vpx_h_predictor_8x8_neon @ ENDP @ |vpx_h_predictor_8x8_neon|
-
-@void vpx_h_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_h_predictor_16x16_neon:
- vpx_h_predictor_16x16_neon: @ PROC
- vld1.8 {q1}, [r3]
- vdup.8 q0, d2[0]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[1]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[2]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[3]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[4]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[5]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[6]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[7]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[0]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[1]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[2]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[3]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[4]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[5]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[6]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[7]
- vst1.8 {q0}, [r0], r1
- bx lr
- .size vpx_h_predictor_16x16_neon, .-vpx_h_predictor_16x16_neon @ ENDP @ |vpx_h_predictor_16x16_neon|
-
-@void vpx_h_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_h_predictor_32x32_neon:
- vpx_h_predictor_32x32_neon: @ PROC
- sub r1, r1, #16
- mov r2, #2
-loop_h:
- vld1.8 {q1}, [r3]!
- vdup.8 q0, d2[0]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[1]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[2]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[3]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[4]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[5]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[6]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[7]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[0]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[1]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[2]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[3]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[4]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[5]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[6]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[7]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- subs r2, r2, #1
- bgt loop_h
- bx lr
- .size vpx_h_predictor_32x32_neon, .-vpx_h_predictor_32x32_neon @ ENDP @ |vpx_h_predictor_32x32_neon|
-
-@void vpx_tm_predictor_4x4_neon (uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_tm_predictor_4x4_neon:
- vpx_tm_predictor_4x4_neon: @ PROC
- @ Load ytop_left = above[-1];
- sub r12, r2, #1
- vld1.u8 {d0[]}, [r12]
-
- @ Load above 4 pixels
- vld1.32 {d2[0]}, [r2]
-
- @ Compute above - ytop_left
- vsubl.u8 q3, d2, d0
-
- @ Load left row by row and compute left + (above - ytop_left)
- @ 1st row and 2nd row
- vld1.u8 {d2[]}, [r3]!
- vld1.u8 {d4[]}, [r3]!
- vmovl.u8 q1, d2
- vmovl.u8 q2, d4
- vadd.s16 q1, q1, q3
- vadd.s16 q2, q2, q3
- vqmovun.s16 d0, q1
- vqmovun.s16 d1, q2
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d1[0]}, [r0], r1
-
- @ 3rd row and 4th row
- vld1.u8 {d2[]}, [r3]!
- vld1.u8 {d4[]}, [r3]
- vmovl.u8 q1, d2
- vmovl.u8 q2, d4
- vadd.s16 q1, q1, q3
- vadd.s16 q2, q2, q3
- vqmovun.s16 d0, q1
- vqmovun.s16 d1, q2
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d1[0]}, [r0], r1
- bx lr
- .size vpx_tm_predictor_4x4_neon, .-vpx_tm_predictor_4x4_neon @ ENDP @ |vpx_tm_predictor_4x4_neon|
-
-@void vpx_tm_predictor_8x8_neon (uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_tm_predictor_8x8_neon:
- vpx_tm_predictor_8x8_neon: @ PROC
- @ Load ytop_left = above[-1];
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- @ preload 8 left
- vld1.8 {d30}, [r3]
-
- @ Load above 8 pixels
- vld1.64 {d2}, [r2]
-
- vmovl.u8 q10, d30
-
- @ Compute above - ytop_left
- vsubl.u8 q3, d2, d0
-
- @ Load left row by row and compute left + (above - ytop_left)
- @ 1st row and 2nd row
- vdup.16 q0, d20[0]
- vdup.16 q1, d20[1]
- vadd.s16 q0, q3, q0
- vadd.s16 q1, q3, q1
-
- @ 3rd row and 4th row
- vdup.16 q8, d20[2]
- vdup.16 q9, d20[3]
- vadd.s16 q8, q3, q8
- vadd.s16 q9, q3, q9
-
- vqmovun.s16 d0, q0
- vqmovun.s16 d1, q1
- vqmovun.s16 d2, q8
- vqmovun.s16 d3, q9
-
- vst1.64 {d0}, [r0], r1
- vst1.64 {d1}, [r0], r1
- vst1.64 {d2}, [r0], r1
- vst1.64 {d3}, [r0], r1
-
- @ 5th row and 6th row
- vdup.16 q0, d21[0]
- vdup.16 q1, d21[1]
- vadd.s16 q0, q3, q0
- vadd.s16 q1, q3, q1
-
- @ 7th row and 8th row
- vdup.16 q8, d21[2]
- vdup.16 q9, d21[3]
- vadd.s16 q8, q3, q8
- vadd.s16 q9, q3, q9
-
- vqmovun.s16 d0, q0
- vqmovun.s16 d1, q1
- vqmovun.s16 d2, q8
- vqmovun.s16 d3, q9
-
- vst1.64 {d0}, [r0], r1
- vst1.64 {d1}, [r0], r1
- vst1.64 {d2}, [r0], r1
- vst1.64 {d3}, [r0], r1
-
- bx lr
- .size vpx_tm_predictor_8x8_neon, .-vpx_tm_predictor_8x8_neon @ ENDP @ |vpx_tm_predictor_8x8_neon|
-
-@void vpx_tm_predictor_16x16_neon (uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_tm_predictor_16x16_neon:
- vpx_tm_predictor_16x16_neon: @ PROC
- @ Load ytop_left = above[-1];
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- @ Load above 8 pixels
- vld1.8 {q1}, [r2]
-
- @ preload 8 left into r12
- vld1.8 {d18}, [r3]!
-
- @ Compute above - ytop_left
- vsubl.u8 q2, d2, d0
- vsubl.u8 q3, d3, d0
-
- vmovl.u8 q10, d18
-
- @ Load left row by row and compute left + (above - ytop_left)
- @ Process 8 rows in each single loop and loop 2 times to process 16 rows.
- mov r2, #2
-
-loop_16x16_neon:
- @ Process two rows.
- vdup.16 q0, d20[0]
- vdup.16 q8, d20[1]
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d20[2] @ proload next 2 rows data
- vdup.16 q8, d20[3]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- @ Process two rows.
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d21[0] @ proload next 2 rows data
- vdup.16 q8, d21[1]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d21[2] @ proload next 2 rows data
- vdup.16 q8, d21[3]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
-
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vld1.8 {d18}, [r3]! @ preload 8 left into r12
- vmovl.u8 q10, d18
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- subs r2, r2, #1
- bgt loop_16x16_neon
-
- bx lr
- .size vpx_tm_predictor_16x16_neon, .-vpx_tm_predictor_16x16_neon @ ENDP @ |vpx_tm_predictor_16x16_neon|
-
-@void vpx_tm_predictor_32x32_neon (uint8_t *dst, ptrdiff_t y_stride,
-@ const uint8_t *above,
-@ const uint8_t *left)
-@ r0 uint8_t *dst
-@ r1 ptrdiff_t y_stride
-@ r2 const uint8_t *above
-@ r3 const uint8_t *left
-
-_vpx_tm_predictor_32x32_neon:
- vpx_tm_predictor_32x32_neon: @ PROC
- @ Load ytop_left = above[-1];
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- @ Load above 32 pixels
- vld1.8 {q1}, [r2]!
- vld1.8 {q2}, [r2]
-
- @ preload 8 left pixels
- vld1.8 {d26}, [r3]!
-
- @ Compute above - ytop_left
- vsubl.u8 q8, d2, d0
- vsubl.u8 q9, d3, d0
- vsubl.u8 q10, d4, d0
- vsubl.u8 q11, d5, d0
-
- vmovl.u8 q3, d26
-
- @ Load left row by row and compute left + (above - ytop_left)
- @ Process 8 rows in each single loop and loop 4 times to process 32 rows.
- mov r2, #4
-
-loop_32x32_neon:
- @ Process two rows.
- vdup.16 q0, d6[0]
- vdup.16 q2, d6[1]
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q1, d6[2]
- vdup.16 q2, d6[3]
- vst1.64 {d24-d27}, [r0], r1
-
- @ Process two rows.
- vadd.s16 q12, q1, q8
- vadd.s16 q13, q1, q9
- vadd.s16 q14, q1, q10
- vadd.s16 q15, q1, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q0, d7[0]
- vdup.16 q2, d7[1]
- vst1.64 {d24-d27}, [r0], r1
-
- @ Process two rows.
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q0, d7[2]
- vdup.16 q2, d7[3]
- vst1.64 {d24-d27}, [r0], r1
-
- @ Process two rows.
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vld1.8 {d0}, [r3]! @ preload 8 left pixels
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vmovl.u8 q3, d0
- vst1.64 {d24-d27}, [r0], r1
-
- subs r2, r2, #1
- bgt loop_32x32_neon
-
- bx lr
- .size vpx_tm_predictor_32x32_neon, .-vpx_tm_predictor_32x32_neon @ ENDP @ |vpx_tm_predictor_32x32_neon|
-
- .section .note.GNU-stack,"",%progbits
diff --git a/thirdparty/libvpx/vpx_dsp/arm/gas/loopfilter_mb_neon.s b/thirdparty/libvpx/vpx_dsp/arm/gas/loopfilter_mb_neon.s
deleted file mode 100644
index f6b05406fb..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/gas/loopfilter_mb_neon.s
+++ /dev/null
@@ -1,647 +0,0 @@
-@ This file was created from a .asm file
-@ using the ads2gas.pl script.
- .equ DO1STROUNDING, 0
-@
-@ Copyright (c) 2013 The WebM project authors. All Rights Reserved.
-@
-@ Use of this source code is governed by a BSD-style license
-@ that can be found in the LICENSE file in the root of the source
-@ tree. An additional intellectual property rights grant can be found
-@ in the file PATENTS. All contributing project authors may
-@ be found in the AUTHORS file in the root of the source tree.
-@
-
- .global vpx_lpf_horizontal_edge_8_neon
- .type vpx_lpf_horizontal_edge_8_neon, function
- .global vpx_lpf_horizontal_edge_16_neon
- .type vpx_lpf_horizontal_edge_16_neon, function
- .global vpx_lpf_vertical_16_neon
- .type vpx_lpf_vertical_16_neon, function
- .arm
-
-.text
-.p2align 2
-
-@ void mb_lpf_horizontal_edge(uint8_t *s, int p,
-@ const uint8_t *blimit,
-@ const uint8_t *limit,
-@ const uint8_t *thresh,
-@ int count)
-@ r0 uint8_t *s,
-@ r1 int p, /* pitch */
-@ r2 const uint8_t *blimit,
-@ r3 const uint8_t *limit,
-@ sp const uint8_t *thresh,
-@ r12 int count
-_mb_lpf_horizontal_edge:
- mb_lpf_horizontal_edge: @ PROC
- push {r4-r8, lr}
- vpush {d8-d15}
- ldr r4, [sp, #88] @ load thresh
-
-h_count:
- vld1.8 {d16[]}, [r2] @ load *blimit
- vld1.8 {d17[]}, [r3] @ load *limit
- vld1.8 {d18[]}, [r4] @ load *thresh
-
- sub r8, r0, r1, lsl #3 @ move src pointer down by 8 lines
-
- vld1.u8 {d0}, [r8,:64], r1 @ p7
- vld1.u8 {d1}, [r8,:64], r1 @ p6
- vld1.u8 {d2}, [r8,:64], r1 @ p5
- vld1.u8 {d3}, [r8,:64], r1 @ p4
- vld1.u8 {d4}, [r8,:64], r1 @ p3
- vld1.u8 {d5}, [r8,:64], r1 @ p2
- vld1.u8 {d6}, [r8,:64], r1 @ p1
- vld1.u8 {d7}, [r8,:64], r1 @ p0
- vld1.u8 {d8}, [r8,:64], r1 @ q0
- vld1.u8 {d9}, [r8,:64], r1 @ q1
- vld1.u8 {d10}, [r8,:64], r1 @ q2
- vld1.u8 {d11}, [r8,:64], r1 @ q3
- vld1.u8 {d12}, [r8,:64], r1 @ q4
- vld1.u8 {d13}, [r8,:64], r1 @ q5
- vld1.u8 {d14}, [r8,:64], r1 @ q6
- vld1.u8 {d15}, [r8,:64], r1 @ q7
-
- bl vpx_wide_mbfilter_neon
-
- tst r7, #1
- beq h_mbfilter
-
- @ flat && mask were not set for any of the channels. Just store the values
- @ from filter.
- sub r8, r0, r1, lsl #1
-
- vst1.u8 {d25}, [r8,:64], r1 @ store op1
- vst1.u8 {d24}, [r8,:64], r1 @ store op0
- vst1.u8 {d23}, [r8,:64], r1 @ store oq0
- vst1.u8 {d26}, [r8,:64], r1 @ store oq1
-
- b h_next
-
-h_mbfilter:
- tst r7, #2
- beq h_wide_mbfilter
-
- @ flat2 was not set for any of the channels. Just store the values from
- @ mbfilter.
- sub r8, r0, r1, lsl #1
- sub r8, r8, r1
-
- vst1.u8 {d18}, [r8,:64], r1 @ store op2
- vst1.u8 {d19}, [r8,:64], r1 @ store op1
- vst1.u8 {d20}, [r8,:64], r1 @ store op0
- vst1.u8 {d21}, [r8,:64], r1 @ store oq0
- vst1.u8 {d22}, [r8,:64], r1 @ store oq1
- vst1.u8 {d23}, [r8,:64], r1 @ store oq2
-
- b h_next
-
-h_wide_mbfilter:
- sub r8, r0, r1, lsl #3
- add r8, r8, r1
-
- vst1.u8 {d16}, [r8,:64], r1 @ store op6
- vst1.u8 {d24}, [r8,:64], r1 @ store op5
- vst1.u8 {d25}, [r8,:64], r1 @ store op4
- vst1.u8 {d26}, [r8,:64], r1 @ store op3
- vst1.u8 {d27}, [r8,:64], r1 @ store op2
- vst1.u8 {d18}, [r8,:64], r1 @ store op1
- vst1.u8 {d19}, [r8,:64], r1 @ store op0
- vst1.u8 {d20}, [r8,:64], r1 @ store oq0
- vst1.u8 {d21}, [r8,:64], r1 @ store oq1
- vst1.u8 {d22}, [r8,:64], r1 @ store oq2
- vst1.u8 {d23}, [r8,:64], r1 @ store oq3
- vst1.u8 {d1}, [r8,:64], r1 @ store oq4
- vst1.u8 {d2}, [r8,:64], r1 @ store oq5
- vst1.u8 {d3}, [r8,:64], r1 @ store oq6
-
-h_next:
- add r0, r0, #8
- subs r12, r12, #1
- bne h_count
-
- vpop {d8-d15}
- pop {r4-r8, pc}
-
- .size mb_lpf_horizontal_edge, .-mb_lpf_horizontal_edge @ ENDP @ |mb_lpf_horizontal_edge|
-
-@ void vpx_lpf_horizontal_edge_8_neon(uint8_t *s, int pitch,
-@ const uint8_t *blimit,
-@ const uint8_t *limit,
-@ const uint8_t *thresh)
-@ r0 uint8_t *s,
-@ r1 int pitch,
-@ r2 const uint8_t *blimit,
-@ r3 const uint8_t *limit,
-@ sp const uint8_t *thresh
-_vpx_lpf_horizontal_edge_8_neon:
- vpx_lpf_horizontal_edge_8_neon: @ PROC
- mov r12, #1
- b mb_lpf_horizontal_edge
- .size vpx_lpf_horizontal_edge_8_neon, .-vpx_lpf_horizontal_edge_8_neon @ ENDP @ |vpx_lpf_horizontal_edge_8_neon|
-
-@ void vpx_lpf_horizontal_edge_16_neon(uint8_t *s, int pitch,
-@ const uint8_t *blimit,
-@ const uint8_t *limit,
-@ const uint8_t *thresh)
-@ r0 uint8_t *s,
-@ r1 int pitch,
-@ r2 const uint8_t *blimit,
-@ r3 const uint8_t *limit,
-@ sp const uint8_t *thresh
-_vpx_lpf_horizontal_edge_16_neon:
- vpx_lpf_horizontal_edge_16_neon: @ PROC
- mov r12, #2
- b mb_lpf_horizontal_edge
- .size vpx_lpf_horizontal_edge_16_neon, .-vpx_lpf_horizontal_edge_16_neon @ ENDP @ |vpx_lpf_horizontal_edge_16_neon|
-
-@ void vpx_lpf_vertical_16_neon(uint8_t *s, int p,
-@ const uint8_t *blimit,
-@ const uint8_t *limit,
-@ const uint8_t *thresh)
-@ r0 uint8_t *s,
-@ r1 int p, /* pitch */
-@ r2 const uint8_t *blimit,
-@ r3 const uint8_t *limit,
-@ sp const uint8_t *thresh,
-_vpx_lpf_vertical_16_neon:
- vpx_lpf_vertical_16_neon: @ PROC
- push {r4-r8, lr}
- vpush {d8-d15}
- ldr r4, [sp, #88] @ load thresh
-
- vld1.8 {d16[]}, [r2] @ load *blimit
- vld1.8 {d17[]}, [r3] @ load *limit
- vld1.8 {d18[]}, [r4] @ load *thresh
-
- sub r8, r0, #8
-
- vld1.8 {d0}, [r8,:64], r1
- vld1.8 {d8}, [r0,:64], r1
- vld1.8 {d1}, [r8,:64], r1
- vld1.8 {d9}, [r0,:64], r1
- vld1.8 {d2}, [r8,:64], r1
- vld1.8 {d10}, [r0,:64], r1
- vld1.8 {d3}, [r8,:64], r1
- vld1.8 {d11}, [r0,:64], r1
- vld1.8 {d4}, [r8,:64], r1
- vld1.8 {d12}, [r0,:64], r1
- vld1.8 {d5}, [r8,:64], r1
- vld1.8 {d13}, [r0,:64], r1
- vld1.8 {d6}, [r8,:64], r1
- vld1.8 {d14}, [r0,:64], r1
- vld1.8 {d7}, [r8,:64], r1
- vld1.8 {d15}, [r0,:64], r1
-
- sub r0, r0, r1, lsl #3
-
- vtrn.32 q0, q2
- vtrn.32 q1, q3
- vtrn.32 q4, q6
- vtrn.32 q5, q7
-
- vtrn.16 q0, q1
- vtrn.16 q2, q3
- vtrn.16 q4, q5
- vtrn.16 q6, q7
-
- vtrn.8 d0, d1
- vtrn.8 d2, d3
- vtrn.8 d4, d5
- vtrn.8 d6, d7
-
- vtrn.8 d8, d9
- vtrn.8 d10, d11
- vtrn.8 d12, d13
- vtrn.8 d14, d15
-
- bl vpx_wide_mbfilter_neon
-
- tst r7, #1
- beq v_mbfilter
-
- @ flat && mask were not set for any of the channels. Just store the values
- @ from filter.
- sub r8, r0, #2
-
- vswp d23, d25
-
- vst4.8 {d23[0], d24[0], d25[0], d26[0]}, [r8], r1
- vst4.8 {d23[1], d24[1], d25[1], d26[1]}, [r8], r1
- vst4.8 {d23[2], d24[2], d25[2], d26[2]}, [r8], r1
- vst4.8 {d23[3], d24[3], d25[3], d26[3]}, [r8], r1
- vst4.8 {d23[4], d24[4], d25[4], d26[4]}, [r8], r1
- vst4.8 {d23[5], d24[5], d25[5], d26[5]}, [r8], r1
- vst4.8 {d23[6], d24[6], d25[6], d26[6]}, [r8], r1
- vst4.8 {d23[7], d24[7], d25[7], d26[7]}, [r8], r1
-
- b v_end
-
-v_mbfilter:
- tst r7, #2
- beq v_wide_mbfilter
-
- @ flat2 was not set for any of the channels. Just store the values from
- @ mbfilter.
- sub r8, r0, #3
-
- vst3.8 {d18[0], d19[0], d20[0]}, [r8], r1
- vst3.8 {d21[0], d22[0], d23[0]}, [r0], r1
- vst3.8 {d18[1], d19[1], d20[1]}, [r8], r1
- vst3.8 {d21[1], d22[1], d23[1]}, [r0], r1
- vst3.8 {d18[2], d19[2], d20[2]}, [r8], r1
- vst3.8 {d21[2], d22[2], d23[2]}, [r0], r1
- vst3.8 {d18[3], d19[3], d20[3]}, [r8], r1
- vst3.8 {d21[3], d22[3], d23[3]}, [r0], r1
- vst3.8 {d18[4], d19[4], d20[4]}, [r8], r1
- vst3.8 {d21[4], d22[4], d23[4]}, [r0], r1
- vst3.8 {d18[5], d19[5], d20[5]}, [r8], r1
- vst3.8 {d21[5], d22[5], d23[5]}, [r0], r1
- vst3.8 {d18[6], d19[6], d20[6]}, [r8], r1
- vst3.8 {d21[6], d22[6], d23[6]}, [r0], r1
- vst3.8 {d18[7], d19[7], d20[7]}, [r8], r1
- vst3.8 {d21[7], d22[7], d23[7]}, [r0], r1
-
- b v_end
-
-v_wide_mbfilter:
- sub r8, r0, #8
-
- vtrn.32 d0, d26
- vtrn.32 d16, d27
- vtrn.32 d24, d18
- vtrn.32 d25, d19
-
- vtrn.16 d0, d24
- vtrn.16 d16, d25
- vtrn.16 d26, d18
- vtrn.16 d27, d19
-
- vtrn.8 d0, d16
- vtrn.8 d24, d25
- vtrn.8 d26, d27
- vtrn.8 d18, d19
-
- vtrn.32 d20, d1
- vtrn.32 d21, d2
- vtrn.32 d22, d3
- vtrn.32 d23, d15
-
- vtrn.16 d20, d22
- vtrn.16 d21, d23
- vtrn.16 d1, d3
- vtrn.16 d2, d15
-
- vtrn.8 d20, d21
- vtrn.8 d22, d23
- vtrn.8 d1, d2
- vtrn.8 d3, d15
-
- vst1.8 {d0}, [r8,:64], r1
- vst1.8 {d20}, [r0,:64], r1
- vst1.8 {d16}, [r8,:64], r1
- vst1.8 {d21}, [r0,:64], r1
- vst1.8 {d24}, [r8,:64], r1
- vst1.8 {d22}, [r0,:64], r1
- vst1.8 {d25}, [r8,:64], r1
- vst1.8 {d23}, [r0,:64], r1
- vst1.8 {d26}, [r8,:64], r1
- vst1.8 {d1}, [r0,:64], r1
- vst1.8 {d27}, [r8,:64], r1
- vst1.8 {d2}, [r0,:64], r1
- vst1.8 {d18}, [r8,:64], r1
- vst1.8 {d3}, [r0,:64], r1
- vst1.8 {d19}, [r8,:64], r1
- vst1.8 {d15}, [r0,:64], r1
-
-v_end:
- vpop {d8-d15}
- pop {r4-r8, pc}
-
- .size vpx_lpf_vertical_16_neon, .-vpx_lpf_vertical_16_neon @ ENDP @ |vpx_lpf_vertical_16_neon|
-
-@ void vpx_wide_mbfilter_neon();
-@ This is a helper function for the loopfilters. The invidual functions do the
-@ necessary load, transpose (if necessary) and store.
-@
-@ r0-r3 PRESERVE
-@ d16 blimit
-@ d17 limit
-@ d18 thresh
-@ d0 p7
-@ d1 p6
-@ d2 p5
-@ d3 p4
-@ d4 p3
-@ d5 p2
-@ d6 p1
-@ d7 p0
-@ d8 q0
-@ d9 q1
-@ d10 q2
-@ d11 q3
-@ d12 q4
-@ d13 q5
-@ d14 q6
-@ d15 q7
-_vpx_wide_mbfilter_neon:
- vpx_wide_mbfilter_neon: @ PROC
- mov r7, #0
-
- @ filter_mask
- vabd.u8 d19, d4, d5 @ abs(p3 - p2)
- vabd.u8 d20, d5, d6 @ abs(p2 - p1)
- vabd.u8 d21, d6, d7 @ abs(p1 - p0)
- vabd.u8 d22, d9, d8 @ abs(q1 - q0)
- vabd.u8 d23, d10, d9 @ abs(q2 - q1)
- vabd.u8 d24, d11, d10 @ abs(q3 - q2)
-
- @ only compare the largest value to limit
- vmax.u8 d19, d19, d20 @ max(abs(p3 - p2), abs(p2 - p1))
- vmax.u8 d20, d21, d22 @ max(abs(p1 - p0), abs(q1 - q0))
- vmax.u8 d23, d23, d24 @ max(abs(q2 - q1), abs(q3 - q2))
- vmax.u8 d19, d19, d20
-
- vabd.u8 d24, d7, d8 @ abs(p0 - q0)
-
- vmax.u8 d19, d19, d23
-
- vabd.u8 d23, d6, d9 @ a = abs(p1 - q1)
- vqadd.u8 d24, d24, d24 @ b = abs(p0 - q0) * 2
-
- @ abs () > limit
- vcge.u8 d19, d17, d19
-
- @ flatmask4
- vabd.u8 d25, d7, d5 @ abs(p0 - p2)
- vabd.u8 d26, d8, d10 @ abs(q0 - q2)
- vabd.u8 d27, d4, d7 @ abs(p3 - p0)
- vabd.u8 d28, d11, d8 @ abs(q3 - q0)
-
- @ only compare the largest value to thresh
- vmax.u8 d25, d25, d26 @ max(abs(p0 - p2), abs(q0 - q2))
- vmax.u8 d26, d27, d28 @ max(abs(p3 - p0), abs(q3 - q0))
- vmax.u8 d25, d25, d26
- vmax.u8 d20, d20, d25
-
- vshr.u8 d23, d23, #1 @ a = a / 2
- vqadd.u8 d24, d24, d23 @ a = b + a
-
- vmov.u8 d30, #1
- vcge.u8 d24, d16, d24 @ (a > blimit * 2 + limit) * -1
-
- vcge.u8 d20, d30, d20 @ flat
-
- vand d19, d19, d24 @ mask
-
- @ hevmask
- vcgt.u8 d21, d21, d18 @ (abs(p1 - p0) > thresh)*-1
- vcgt.u8 d22, d22, d18 @ (abs(q1 - q0) > thresh)*-1
- vorr d21, d21, d22 @ hev
-
- vand d16, d20, d19 @ flat && mask
- vmov r5, r6, d16
-
- @ flatmask5(1, p7, p6, p5, p4, p0, q0, q4, q5, q6, q7)
- vabd.u8 d22, d3, d7 @ abs(p4 - p0)
- vabd.u8 d23, d12, d8 @ abs(q4 - q0)
- vabd.u8 d24, d7, d2 @ abs(p0 - p5)
- vabd.u8 d25, d8, d13 @ abs(q0 - q5)
- vabd.u8 d26, d1, d7 @ abs(p6 - p0)
- vabd.u8 d27, d14, d8 @ abs(q6 - q0)
- vabd.u8 d28, d0, d7 @ abs(p7 - p0)
- vabd.u8 d29, d15, d8 @ abs(q7 - q0)
-
- @ only compare the largest value to thresh
- vmax.u8 d22, d22, d23 @ max(abs(p4 - p0), abs(q4 - q0))
- vmax.u8 d23, d24, d25 @ max(abs(p0 - p5), abs(q0 - q5))
- vmax.u8 d24, d26, d27 @ max(abs(p6 - p0), abs(q6 - q0))
- vmax.u8 d25, d28, d29 @ max(abs(p7 - p0), abs(q7 - q0))
-
- vmax.u8 d26, d22, d23
- vmax.u8 d27, d24, d25
- vmax.u8 d23, d26, d27
-
- vcge.u8 d18, d30, d23 @ flat2
-
- vmov.u8 d22, #0x80
-
- orrs r5, r5, r6 @ Check for 0
- orreq r7, r7, #1 @ Only do filter branch
-
- vand d17, d18, d16 @ flat2 && flat && mask
- vmov r5, r6, d17
-
- @ mbfilter() function
-
- @ filter() function
- @ convert to signed
- veor d23, d8, d22 @ qs0
- veor d24, d7, d22 @ ps0
- veor d25, d6, d22 @ ps1
- veor d26, d9, d22 @ qs1
-
- vmov.u8 d27, #3
-
- vsub.s8 d28, d23, d24 @ ( qs0 - ps0)
- vqsub.s8 d29, d25, d26 @ filter = clamp(ps1-qs1)
- vmull.s8 q15, d28, d27 @ 3 * ( qs0 - ps0)
- vand d29, d29, d21 @ filter &= hev
- vaddw.s8 q15, q15, d29 @ filter + 3 * (qs0 - ps0)
- vmov.u8 d29, #4
-
- @ filter = clamp(filter + 3 * ( qs0 - ps0))
- vqmovn.s16 d28, q15
-
- vand d28, d28, d19 @ filter &= mask
-
- vqadd.s8 d30, d28, d27 @ filter2 = clamp(filter+3)
- vqadd.s8 d29, d28, d29 @ filter1 = clamp(filter+4)
- vshr.s8 d30, d30, #3 @ filter2 >>= 3
- vshr.s8 d29, d29, #3 @ filter1 >>= 3
-
-
- vqadd.s8 d24, d24, d30 @ op0 = clamp(ps0 + filter2)
- vqsub.s8 d23, d23, d29 @ oq0 = clamp(qs0 - filter1)
-
- @ outer tap adjustments: ++filter1 >> 1
- vrshr.s8 d29, d29, #1
- vbic d29, d29, d21 @ filter &= ~hev
-
- vqadd.s8 d25, d25, d29 @ op1 = clamp(ps1 + filter)
- vqsub.s8 d26, d26, d29 @ oq1 = clamp(qs1 - filter)
-
- veor d24, d24, d22 @ *f_op0 = u^0x80
- veor d23, d23, d22 @ *f_oq0 = u^0x80
- veor d25, d25, d22 @ *f_op1 = u^0x80
- veor d26, d26, d22 @ *f_oq1 = u^0x80
-
- tst r7, #1
- bxne lr
-
- orrs r5, r5, r6 @ Check for 0
- orreq r7, r7, #2 @ Only do mbfilter branch
-
- @ mbfilter flat && mask branch
- @ TODO(fgalligan): Can I decrease the cycles shifting to consective d's
- @ and using vibt on the q's?
- vmov.u8 d29, #2
- vaddl.u8 q15, d7, d8 @ op2 = p0 + q0
- vmlal.u8 q15, d4, d27 @ op2 = p0 + q0 + p3 * 3
- vmlal.u8 q15, d5, d29 @ op2 = p0 + q0 + p3 * 3 + p2 * 2
- vaddl.u8 q10, d4, d5
- vaddw.u8 q15, d6 @ op2=p1 + p0 + q0 + p3 * 3 + p2 *2
- vaddl.u8 q14, d6, d9
- vqrshrn.u16 d18, q15, #3 @ r_op2
-
- vsub.i16 q15, q10
- vaddl.u8 q10, d4, d6
- vadd.i16 q15, q14
- vaddl.u8 q14, d7, d10
- vqrshrn.u16 d19, q15, #3 @ r_op1
-
- vsub.i16 q15, q10
- vadd.i16 q15, q14
- vaddl.u8 q14, d8, d11
- vqrshrn.u16 d20, q15, #3 @ r_op0
-
- vsubw.u8 q15, d4 @ oq0 = op0 - p3
- vsubw.u8 q15, d7 @ oq0 -= p0
- vadd.i16 q15, q14
- vaddl.u8 q14, d9, d11
- vqrshrn.u16 d21, q15, #3 @ r_oq0
-
- vsubw.u8 q15, d5 @ oq1 = oq0 - p2
- vsubw.u8 q15, d8 @ oq1 -= q0
- vadd.i16 q15, q14
- vaddl.u8 q14, d10, d11
- vqrshrn.u16 d22, q15, #3 @ r_oq1
-
- vsubw.u8 q15, d6 @ oq2 = oq0 - p1
- vsubw.u8 q15, d9 @ oq2 -= q1
- vadd.i16 q15, q14
- vqrshrn.u16 d27, q15, #3 @ r_oq2
-
- @ Filter does not set op2 or oq2, so use p2 and q2.
- vbif d18, d5, d16 @ t_op2 |= p2 & ~(flat & mask)
- vbif d19, d25, d16 @ t_op1 |= f_op1 & ~(flat & mask)
- vbif d20, d24, d16 @ t_op0 |= f_op0 & ~(flat & mask)
- vbif d21, d23, d16 @ t_oq0 |= f_oq0 & ~(flat & mask)
- vbif d22, d26, d16 @ t_oq1 |= f_oq1 & ~(flat & mask)
-
- vbit d23, d27, d16 @ t_oq2 |= r_oq2 & (flat & mask)
- vbif d23, d10, d16 @ t_oq2 |= q2 & ~(flat & mask)
-
- tst r7, #2
- bxne lr
-
- @ wide_mbfilter flat2 && flat && mask branch
- vmov.u8 d16, #7
- vaddl.u8 q15, d7, d8 @ op6 = p0 + q0
- vaddl.u8 q12, d2, d3
- vaddl.u8 q13, d4, d5
- vaddl.u8 q14, d1, d6
- vmlal.u8 q15, d0, d16 @ op6 += p7 * 3
- vadd.i16 q12, q13
- vadd.i16 q15, q14
- vaddl.u8 q14, d2, d9
- vadd.i16 q15, q12
- vaddl.u8 q12, d0, d1
- vaddw.u8 q15, d1
- vaddl.u8 q13, d0, d2
- vadd.i16 q14, q15, q14
- vqrshrn.u16 d16, q15, #4 @ w_op6
-
- vsub.i16 q15, q14, q12
- vaddl.u8 q14, d3, d10
- vqrshrn.u16 d24, q15, #4 @ w_op5
-
- vsub.i16 q15, q13
- vaddl.u8 q13, d0, d3
- vadd.i16 q15, q14
- vaddl.u8 q14, d4, d11
- vqrshrn.u16 d25, q15, #4 @ w_op4
-
- vadd.i16 q15, q14
- vaddl.u8 q14, d0, d4
- vsub.i16 q15, q13
- vsub.i16 q14, q15, q14
- vqrshrn.u16 d26, q15, #4 @ w_op3
-
- vaddw.u8 q15, q14, d5 @ op2 += p2
- vaddl.u8 q14, d0, d5
- vaddw.u8 q15, d12 @ op2 += q4
- vbif d26, d4, d17 @ op3 |= p3 & ~(f2 & f & m)
- vqrshrn.u16 d27, q15, #4 @ w_op2
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d0, d6
- vaddw.u8 q15, d6 @ op1 += p1
- vaddw.u8 q15, d13 @ op1 += q5
- vbif d27, d18, d17 @ op2 |= t_op2 & ~(f2 & f & m)
- vqrshrn.u16 d18, q15, #4 @ w_op1
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d0, d7
- vaddw.u8 q15, d7 @ op0 += p0
- vaddw.u8 q15, d14 @ op0 += q6
- vbif d18, d19, d17 @ op1 |= t_op1 & ~(f2 & f & m)
- vqrshrn.u16 d19, q15, #4 @ w_op0
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d1, d8
- vaddw.u8 q15, d8 @ oq0 += q0
- vaddw.u8 q15, d15 @ oq0 += q7
- vbif d19, d20, d17 @ op0 |= t_op0 & ~(f2 & f & m)
- vqrshrn.u16 d20, q15, #4 @ w_oq0
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d2, d9
- vaddw.u8 q15, d9 @ oq1 += q1
- vaddl.u8 q4, d10, d15
- vaddw.u8 q15, d15 @ oq1 += q7
- vbif d20, d21, d17 @ oq0 |= t_oq0 & ~(f2 & f & m)
- vqrshrn.u16 d21, q15, #4 @ w_oq1
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d3, d10
- vadd.i16 q15, q4
- vaddl.u8 q4, d11, d15
- vbif d21, d22, d17 @ oq1 |= t_oq1 & ~(f2 & f & m)
- vqrshrn.u16 d22, q15, #4 @ w_oq2
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d4, d11
- vadd.i16 q15, q4
- vaddl.u8 q4, d12, d15
- vbif d22, d23, d17 @ oq2 |= t_oq2 & ~(f2 & f & m)
- vqrshrn.u16 d23, q15, #4 @ w_oq3
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d5, d12
- vadd.i16 q15, q4
- vaddl.u8 q4, d13, d15
- vbif d16, d1, d17 @ op6 |= p6 & ~(f2 & f & m)
- vqrshrn.u16 d1, q15, #4 @ w_oq4
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d6, d13
- vadd.i16 q15, q4
- vaddl.u8 q4, d14, d15
- vbif d24, d2, d17 @ op5 |= p5 & ~(f2 & f & m)
- vqrshrn.u16 d2, q15, #4 @ w_oq5
-
- vsub.i16 q15, q14
- vbif d25, d3, d17 @ op4 |= p4 & ~(f2 & f & m)
- vadd.i16 q15, q4
- vbif d23, d11, d17 @ oq3 |= q3 & ~(f2 & f & m)
- vqrshrn.u16 d3, q15, #4 @ w_oq6
- vbif d1, d12, d17 @ oq4 |= q4 & ~(f2 & f & m)
- vbif d2, d13, d17 @ oq5 |= q5 & ~(f2 & f & m)
- vbif d3, d14, d17 @ oq6 |= q6 & ~(f2 & f & m)
-
- bx lr
- .size vpx_wide_mbfilter_neon, .-vpx_wide_mbfilter_neon @ ENDP @ |vpx_wide_mbfilter_neon|
-
- .section .note.GNU-stack,"",%progbits
diff --git a/thirdparty/libvpx/vpx_dsp/arm/gas/save_reg_neon.s b/thirdparty/libvpx/vpx_dsp/arm/gas/save_reg_neon.s
deleted file mode 100644
index e8852fa0d0..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/gas/save_reg_neon.s
+++ /dev/null
@@ -1,44 +0,0 @@
-@ This file was created from a .asm file
-@ using the ads2gas.pl script.
- .equ DO1STROUNDING, 0
-@
-@ Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-@
-@ Use of this source code is governed by a BSD-style license
-@ that can be found in the LICENSE file in the root of the source
-@ tree. An additional intellectual property rights grant can be found
-@ in the file PATENTS. All contributing project authors may
-@ be found in the AUTHORS file in the root of the source tree.
-@
-
-
- .global vpx_push_neon
- .type vpx_push_neon, function
- .global vpx_pop_neon
- .type vpx_pop_neon, function
-
- .arm
- .eabi_attribute 24, 1 @Tag_ABI_align_needed
- .eabi_attribute 25, 1 @Tag_ABI_align_preserved
-
-.text
-.p2align 2
-
-_vpx_push_neon:
- vpx_push_neon: @ PROC
- vst1.i64 {d8, d9, d10, d11}, [r0]!
- vst1.i64 {d12, d13, d14, d15}, [r0]!
- bx lr
-
- .size vpx_push_neon, .-vpx_push_neon @ ENDP
-
-_vpx_pop_neon:
- vpx_pop_neon: @ PROC
- vld1.i64 {d8, d9, d10, d11}, [r0]!
- vld1.i64 {d12, d13, d14, d15}, [r0]!
- bx lr
-
- .size vpx_pop_neon, .-vpx_pop_neon @ ENDP
-
-
- .section .note.GNU-stack,"",%progbits
diff --git a/thirdparty/libvpx/vpx_dsp/arm/gas_apple/intrapred_neon_asm.s b/thirdparty/libvpx/vpx_dsp/arm/gas_apple/intrapred_neon_asm.s
deleted file mode 100644
index 1c527afcff..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/gas_apple/intrapred_neon_asm.s
+++ /dev/null
@@ -1,660 +0,0 @@
-@ This file was created from a .asm file
-@ using the ads2gas_apple.pl script.
-
- .set WIDE_REFERENCE, 0
- .set ARCHITECTURE, 5
- .set DO1STROUNDING, 0
- @
- @ Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- @
- @ Use of this source code is governed by a BSD-style license
- @ that can be found in the LICENSE file in the root of the source
- @ tree. An additional intellectual property rights grant can be found
- @ in the file PATENTS. All contributing project authors may
- @ be found in the AUTHORS file in the root of the source tree.
- @
-
- .globl _vpx_v_predictor_4x4_neon
- .globl vpx_v_predictor_4x4_neon
- .globl _vpx_v_predictor_8x8_neon
- .globl vpx_v_predictor_8x8_neon
- .globl _vpx_v_predictor_16x16_neon
- .globl vpx_v_predictor_16x16_neon
- .globl _vpx_v_predictor_32x32_neon
- .globl vpx_v_predictor_32x32_neon
- .globl _vpx_h_predictor_4x4_neon
- .globl vpx_h_predictor_4x4_neon
- .globl _vpx_h_predictor_8x8_neon
- .globl vpx_h_predictor_8x8_neon
- .globl _vpx_h_predictor_16x16_neon
- .globl vpx_h_predictor_16x16_neon
- .globl _vpx_h_predictor_32x32_neon
- .globl vpx_h_predictor_32x32_neon
- .globl _vpx_tm_predictor_4x4_neon
- .globl vpx_tm_predictor_4x4_neon
- .globl _vpx_tm_predictor_8x8_neon
- .globl vpx_tm_predictor_8x8_neon
- .globl _vpx_tm_predictor_16x16_neon
- .globl vpx_tm_predictor_16x16_neon
- .globl _vpx_tm_predictor_32x32_neon
- .globl vpx_tm_predictor_32x32_neon
- @ ARM
- @
- @ PRESERVE8
-
-.text
-.p2align 2
-
- @void vpx_v_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_v_predictor_4x4_neon:
- vpx_v_predictor_4x4_neon: @
- vld1.32 {d0[0]}, [r2]
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d0[0]}, [r0], r1
- bx lr
- @ @ |vpx_v_predictor_4x4_neon|
-
- @void vpx_v_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_v_predictor_8x8_neon:
- vpx_v_predictor_8x8_neon: @
- vld1.8 {d0}, [r2]
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- vst1.8 {d0}, [r0], r1
- bx lr
- @ @ |vpx_v_predictor_8x8_neon|
-
- @void vpx_v_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_v_predictor_16x16_neon:
- vpx_v_predictor_16x16_neon: @
- vld1.8 {q0}, [r2]
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- vst1.8 {q0}, [r0], r1
- bx lr
- @ @ |vpx_v_predictor_16x16_neon|
-
- @void vpx_v_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_v_predictor_32x32_neon:
- vpx_v_predictor_32x32_neon: @
- vld1.8 {q0, q1}, [r2]
- mov r2, #2
-loop_v:
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- vst1.8 {q0, q1}, [r0], r1
- subs r2, r2, #1
- bgt loop_v
- bx lr
- @ @ |vpx_v_predictor_32x32_neon|
-
- @void vpx_h_predictor_4x4_neon(uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_h_predictor_4x4_neon:
- vpx_h_predictor_4x4_neon: @
- vld1.32 {d1[0]}, [r3]
- vdup.8 d0, d1[0]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[1]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[2]
- vst1.32 {d0[0]}, [r0], r1
- vdup.8 d0, d1[3]
- vst1.32 {d0[0]}, [r0], r1
- bx lr
- @ @ |vpx_h_predictor_4x4_neon|
-
- @void vpx_h_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_h_predictor_8x8_neon:
- vpx_h_predictor_8x8_neon: @
- vld1.64 {d1}, [r3]
- vdup.8 d0, d1[0]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[1]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[2]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[3]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[4]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[5]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[6]
- vst1.64 {d0}, [r0], r1
- vdup.8 d0, d1[7]
- vst1.64 {d0}, [r0], r1
- bx lr
- @ @ |vpx_h_predictor_8x8_neon|
-
- @void vpx_h_predictor_16x16_neon(uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_h_predictor_16x16_neon:
- vpx_h_predictor_16x16_neon: @
- vld1.8 {q1}, [r3]
- vdup.8 q0, d2[0]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[1]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[2]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[3]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[4]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[5]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[6]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[7]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[0]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[1]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[2]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[3]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[4]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[5]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[6]
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[7]
- vst1.8 {q0}, [r0], r1
- bx lr
- @ @ |vpx_h_predictor_16x16_neon|
-
- @void vpx_h_predictor_32x32_neon(uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_h_predictor_32x32_neon:
- vpx_h_predictor_32x32_neon: @
- sub r1, r1, #16
- mov r2, #2
-loop_h:
- vld1.8 {q1}, [r3]!
- vdup.8 q0, d2[0]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[1]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[2]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[3]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[4]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[5]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[6]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d2[7]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[0]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[1]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[2]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[3]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[4]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[5]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[6]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- vdup.8 q0, d3[7]
- vst1.8 {q0}, [r0]!
- vst1.8 {q0}, [r0], r1
- subs r2, r2, #1
- bgt loop_h
- bx lr
- @ @ |vpx_h_predictor_32x32_neon|
-
- @void vpx_tm_predictor_4x4_neon (uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_tm_predictor_4x4_neon:
- vpx_tm_predictor_4x4_neon: @
- @ Load ytop_left = above[-1] @
- sub r12, r2, #1
- vld1.u8 {d0[]}, [r12]
-
- @ Load above 4 pixels
- vld1.32 {d2[0]}, [r2]
-
- @ Compute above - ytop_left
- vsubl.u8 q3, d2, d0
-
- @ Load left row by row and compute left + (above - ytop_left)
- @ 1st row and 2nd row
- vld1.u8 {d2[]}, [r3]!
- vld1.u8 {d4[]}, [r3]!
- vmovl.u8 q1, d2
- vmovl.u8 q2, d4
- vadd.s16 q1, q1, q3
- vadd.s16 q2, q2, q3
- vqmovun.s16 d0, q1
- vqmovun.s16 d1, q2
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d1[0]}, [r0], r1
-
- @ 3rd row and 4th row
- vld1.u8 {d2[]}, [r3]!
- vld1.u8 {d4[]}, [r3]
- vmovl.u8 q1, d2
- vmovl.u8 q2, d4
- vadd.s16 q1, q1, q3
- vadd.s16 q2, q2, q3
- vqmovun.s16 d0, q1
- vqmovun.s16 d1, q2
- vst1.32 {d0[0]}, [r0], r1
- vst1.32 {d1[0]}, [r0], r1
- bx lr
- @ @ |vpx_tm_predictor_4x4_neon|
-
- @void vpx_tm_predictor_8x8_neon (uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_tm_predictor_8x8_neon:
- vpx_tm_predictor_8x8_neon: @
- @ Load ytop_left = above[-1] @
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- @ preload 8 left
- vld1.8 {d30}, [r3]
-
- @ Load above 8 pixels
- vld1.64 {d2}, [r2]
-
- vmovl.u8 q10, d30
-
- @ Compute above - ytop_left
- vsubl.u8 q3, d2, d0
-
- @ Load left row by row and compute left + (above - ytop_left)
- @ 1st row and 2nd row
- vdup.16 q0, d20[0]
- vdup.16 q1, d20[1]
- vadd.s16 q0, q3, q0
- vadd.s16 q1, q3, q1
-
- @ 3rd row and 4th row
- vdup.16 q8, d20[2]
- vdup.16 q9, d20[3]
- vadd.s16 q8, q3, q8
- vadd.s16 q9, q3, q9
-
- vqmovun.s16 d0, q0
- vqmovun.s16 d1, q1
- vqmovun.s16 d2, q8
- vqmovun.s16 d3, q9
-
- vst1.64 {d0}, [r0], r1
- vst1.64 {d1}, [r0], r1
- vst1.64 {d2}, [r0], r1
- vst1.64 {d3}, [r0], r1
-
- @ 5th row and 6th row
- vdup.16 q0, d21[0]
- vdup.16 q1, d21[1]
- vadd.s16 q0, q3, q0
- vadd.s16 q1, q3, q1
-
- @ 7th row and 8th row
- vdup.16 q8, d21[2]
- vdup.16 q9, d21[3]
- vadd.s16 q8, q3, q8
- vadd.s16 q9, q3, q9
-
- vqmovun.s16 d0, q0
- vqmovun.s16 d1, q1
- vqmovun.s16 d2, q8
- vqmovun.s16 d3, q9
-
- vst1.64 {d0}, [r0], r1
- vst1.64 {d1}, [r0], r1
- vst1.64 {d2}, [r0], r1
- vst1.64 {d3}, [r0], r1
-
- bx lr
- @ @ |vpx_tm_predictor_8x8_neon|
-
- @void vpx_tm_predictor_16x16_neon (uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_tm_predictor_16x16_neon:
- vpx_tm_predictor_16x16_neon: @
- @ Load ytop_left = above[-1] @
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- @ Load above 8 pixels
- vld1.8 {q1}, [r2]
-
- @ preload 8 left into r12
- vld1.8 {d18}, [r3]!
-
- @ Compute above - ytop_left
- vsubl.u8 q2, d2, d0
- vsubl.u8 q3, d3, d0
-
- vmovl.u8 q10, d18
-
- @ Load left row by row and compute left + (above - ytop_left)
- @ Process 8 rows in each single loop and loop 2 times to process 16 rows.
- mov r2, #2
-
-loop_16x16_neon:
- @ Process two rows.
- vdup.16 q0, d20[0]
- vdup.16 q8, d20[1]
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d20[2] @ proload next 2 rows data
- vdup.16 q8, d20[3]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- @ Process two rows.
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d21[0] @ proload next 2 rows data
- vdup.16 q8, d21[1]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vdup.16 q0, d21[2] @ proload next 2 rows data
- vdup.16 q8, d21[3]
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
-
- vadd.s16 q1, q0, q2
- vadd.s16 q0, q0, q3
- vadd.s16 q11, q8, q2
- vadd.s16 q8, q8, q3
- vqmovun.s16 d2, q1
- vqmovun.s16 d3, q0
- vqmovun.s16 d22, q11
- vqmovun.s16 d23, q8
- vld1.8 {d18}, [r3]! @ preload 8 left into r12
- vmovl.u8 q10, d18
- vst1.64 {d2,d3}, [r0], r1
- vst1.64 {d22,d23}, [r0], r1
-
- subs r2, r2, #1
- bgt loop_16x16_neon
-
- bx lr
- @ @ |vpx_tm_predictor_16x16_neon|
-
- @void vpx_tm_predictor_32x32_neon (uint8_t *dst, ptrdiff_t y_stride,
- @ const uint8_t *above,
- @ const uint8_t *left)
- @ r0 uint8_t *dst
- @ r1 ptrdiff_t y_stride
- @ r2 const uint8_t *above
- @ r3 const uint8_t *left
-
-_vpx_tm_predictor_32x32_neon:
- vpx_tm_predictor_32x32_neon: @
- @ Load ytop_left = above[-1] @
- sub r12, r2, #1
- vld1.8 {d0[]}, [r12]
-
- @ Load above 32 pixels
- vld1.8 {q1}, [r2]!
- vld1.8 {q2}, [r2]
-
- @ preload 8 left pixels
- vld1.8 {d26}, [r3]!
-
- @ Compute above - ytop_left
- vsubl.u8 q8, d2, d0
- vsubl.u8 q9, d3, d0
- vsubl.u8 q10, d4, d0
- vsubl.u8 q11, d5, d0
-
- vmovl.u8 q3, d26
-
- @ Load left row by row and compute left + (above - ytop_left)
- @ Process 8 rows in each single loop and loop 4 times to process 32 rows.
- mov r2, #4
-
-loop_32x32_neon:
- @ Process two rows.
- vdup.16 q0, d6[0]
- vdup.16 q2, d6[1]
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q1, d6[2]
- vdup.16 q2, d6[3]
- vst1.64 {d24-d27}, [r0], r1
-
- @ Process two rows.
- vadd.s16 q12, q1, q8
- vadd.s16 q13, q1, q9
- vadd.s16 q14, q1, q10
- vadd.s16 q15, q1, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q0, d7[0]
- vdup.16 q2, d7[1]
- vst1.64 {d24-d27}, [r0], r1
-
- @ Process two rows.
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vdup.16 q0, d7[2]
- vdup.16 q2, d7[3]
- vst1.64 {d24-d27}, [r0], r1
-
- @ Process two rows.
- vadd.s16 q12, q0, q8
- vadd.s16 q13, q0, q9
- vadd.s16 q14, q0, q10
- vadd.s16 q15, q0, q11
- vqmovun.s16 d0, q12
- vqmovun.s16 d1, q13
- vadd.s16 q12, q2, q8
- vadd.s16 q13, q2, q9
- vqmovun.s16 d2, q14
- vqmovun.s16 d3, q15
- vadd.s16 q14, q2, q10
- vadd.s16 q15, q2, q11
- vst1.64 {d0-d3}, [r0], r1
- vqmovun.s16 d24, q12
- vqmovun.s16 d25, q13
- vld1.8 {d0}, [r3]! @ preload 8 left pixels
- vqmovun.s16 d26, q14
- vqmovun.s16 d27, q15
- vmovl.u8 q3, d0
- vst1.64 {d24-d27}, [r0], r1
-
- subs r2, r2, #1
- bgt loop_32x32_neon
-
- bx lr
- @ @ |vpx_tm_predictor_32x32_neon|
-
diff --git a/thirdparty/libvpx/vpx_dsp/arm/gas_apple/loopfilter_mb_neon.s b/thirdparty/libvpx/vpx_dsp/arm/gas_apple/loopfilter_mb_neon.s
deleted file mode 100644
index 69f7e5207e..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/gas_apple/loopfilter_mb_neon.s
+++ /dev/null
@@ -1,649 +0,0 @@
-@ This file was created from a .asm file
-@ using the ads2gas_apple.pl script.
-
- .set WIDE_REFERENCE, 0
- .set ARCHITECTURE, 5
- .set DO1STROUNDING, 0
- @
- @ Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- @
- @ Use of this source code is governed by a BSD-style license
- @ that can be found in the LICENSE file in the root of the source
- @ tree. An additional intellectual property rights grant can be found
- @ in the file PATENTS. All contributing project authors may
- @ be found in the AUTHORS file in the root of the source tree.
- @
-
- .globl _vpx_lpf_horizontal_edge_8_neon
- .globl vpx_lpf_horizontal_edge_8_neon
- .globl _vpx_lpf_horizontal_edge_16_neon
- .globl vpx_lpf_horizontal_edge_16_neon
- .globl _vpx_lpf_vertical_16_neon
- .globl vpx_lpf_vertical_16_neon
- @ ARM
-
-.text
-.p2align 2
-
- @ void mb_lpf_horizontal_edge(uint8_t *s, int p,
- @ const uint8_t *blimit,
- @ const uint8_t *limit,
- @ const uint8_t *thresh,
- @ int count)
- @ r0 uint8_t *s,
- @ r1 int p, /* pitch */
- @ r2 const uint8_t *blimit,
- @ r3 const uint8_t *limit,
- @ sp const uint8_t *thresh,
- @ r12 int count
-_mb_lpf_horizontal_edge:
- mb_lpf_horizontal_edge: @
- push {r4-r8, lr}
- vpush {d8-d15}
- ldr r4, [sp, #88] @ load thresh
-
-h_count:
- vld1.8 {d16[]}, [r2] @ load *blimit
- vld1.8 {d17[]}, [r3] @ load *limit
- vld1.8 {d18[]}, [r4] @ load *thresh
-
- sub r8, r0, r1, lsl #3 @ move src pointer down by 8 lines
-
- vld1.u8 {d0}, [r8,:64], r1 @ p7
- vld1.u8 {d1}, [r8,:64], r1 @ p6
- vld1.u8 {d2}, [r8,:64], r1 @ p5
- vld1.u8 {d3}, [r8,:64], r1 @ p4
- vld1.u8 {d4}, [r8,:64], r1 @ p3
- vld1.u8 {d5}, [r8,:64], r1 @ p2
- vld1.u8 {d6}, [r8,:64], r1 @ p1
- vld1.u8 {d7}, [r8,:64], r1 @ p0
- vld1.u8 {d8}, [r8,:64], r1 @ q0
- vld1.u8 {d9}, [r8,:64], r1 @ q1
- vld1.u8 {d10}, [r8,:64], r1 @ q2
- vld1.u8 {d11}, [r8,:64], r1 @ q3
- vld1.u8 {d12}, [r8,:64], r1 @ q4
- vld1.u8 {d13}, [r8,:64], r1 @ q5
- vld1.u8 {d14}, [r8,:64], r1 @ q6
- vld1.u8 {d15}, [r8,:64], r1 @ q7
-
- bl vpx_wide_mbfilter_neon
-
- tst r7, #1
- beq h_mbfilter
-
- @ flat && mask were not set for any of the channels. Just store the values
- @ from filter.
- sub r8, r0, r1, lsl #1
-
- vst1.u8 {d25}, [r8,:64], r1 @ store op1
- vst1.u8 {d24}, [r8,:64], r1 @ store op0
- vst1.u8 {d23}, [r8,:64], r1 @ store oq0
- vst1.u8 {d26}, [r8,:64], r1 @ store oq1
-
- b h_next
-
-h_mbfilter:
- tst r7, #2
- beq h_wide_mbfilter
-
- @ flat2 was not set for any of the channels. Just store the values from
- @ mbfilter.
- sub r8, r0, r1, lsl #1
- sub r8, r8, r1
-
- vst1.u8 {d18}, [r8,:64], r1 @ store op2
- vst1.u8 {d19}, [r8,:64], r1 @ store op1
- vst1.u8 {d20}, [r8,:64], r1 @ store op0
- vst1.u8 {d21}, [r8,:64], r1 @ store oq0
- vst1.u8 {d22}, [r8,:64], r1 @ store oq1
- vst1.u8 {d23}, [r8,:64], r1 @ store oq2
-
- b h_next
-
-h_wide_mbfilter:
- sub r8, r0, r1, lsl #3
- add r8, r8, r1
-
- vst1.u8 {d16}, [r8,:64], r1 @ store op6
- vst1.u8 {d24}, [r8,:64], r1 @ store op5
- vst1.u8 {d25}, [r8,:64], r1 @ store op4
- vst1.u8 {d26}, [r8,:64], r1 @ store op3
- vst1.u8 {d27}, [r8,:64], r1 @ store op2
- vst1.u8 {d18}, [r8,:64], r1 @ store op1
- vst1.u8 {d19}, [r8,:64], r1 @ store op0
- vst1.u8 {d20}, [r8,:64], r1 @ store oq0
- vst1.u8 {d21}, [r8,:64], r1 @ store oq1
- vst1.u8 {d22}, [r8,:64], r1 @ store oq2
- vst1.u8 {d23}, [r8,:64], r1 @ store oq3
- vst1.u8 {d1}, [r8,:64], r1 @ store oq4
- vst1.u8 {d2}, [r8,:64], r1 @ store oq5
- vst1.u8 {d3}, [r8,:64], r1 @ store oq6
-
-h_next:
- add r0, r0, #8
- subs r12, r12, #1
- bne h_count
-
- vpop {d8-d15}
- pop {r4-r8, pc}
-
- @ @ |mb_lpf_horizontal_edge|
-
- @ void vpx_lpf_horizontal_edge_8_neon(uint8_t *s, int pitch,
- @ const uint8_t *blimit,
- @ const uint8_t *limit,
- @ const uint8_t *thresh)
- @ r0 uint8_t *s,
- @ r1 int pitch,
- @ r2 const uint8_t *blimit,
- @ r3 const uint8_t *limit,
- @ sp const uint8_t *thresh
-_vpx_lpf_horizontal_edge_8_neon:
- vpx_lpf_horizontal_edge_8_neon: @
- mov r12, #1
- b mb_lpf_horizontal_edge
- @ @ |vpx_lpf_horizontal_edge_8_neon|
-
- @ void vpx_lpf_horizontal_edge_16_neon(uint8_t *s, int pitch,
- @ const uint8_t *blimit,
- @ const uint8_t *limit,
- @ const uint8_t *thresh)
- @ r0 uint8_t *s,
- @ r1 int pitch,
- @ r2 const uint8_t *blimit,
- @ r3 const uint8_t *limit,
- @ sp const uint8_t *thresh
-_vpx_lpf_horizontal_edge_16_neon:
- vpx_lpf_horizontal_edge_16_neon: @
- mov r12, #2
- b mb_lpf_horizontal_edge
- @ @ |vpx_lpf_horizontal_edge_16_neon|
-
- @ void vpx_lpf_vertical_16_neon(uint8_t *s, int p,
- @ const uint8_t *blimit,
- @ const uint8_t *limit,
- @ const uint8_t *thresh)
- @ r0 uint8_t *s,
- @ r1 int p, /* pitch */
- @ r2 const uint8_t *blimit,
- @ r3 const uint8_t *limit,
- @ sp const uint8_t *thresh,
-_vpx_lpf_vertical_16_neon:
- vpx_lpf_vertical_16_neon: @
- push {r4-r8, lr}
- vpush {d8-d15}
- ldr r4, [sp, #88] @ load thresh
-
- vld1.8 {d16[]}, [r2] @ load *blimit
- vld1.8 {d17[]}, [r3] @ load *limit
- vld1.8 {d18[]}, [r4] @ load *thresh
-
- sub r8, r0, #8
-
- vld1.8 {d0}, [r8,:64], r1
- vld1.8 {d8}, [r0,:64], r1
- vld1.8 {d1}, [r8,:64], r1
- vld1.8 {d9}, [r0,:64], r1
- vld1.8 {d2}, [r8,:64], r1
- vld1.8 {d10}, [r0,:64], r1
- vld1.8 {d3}, [r8,:64], r1
- vld1.8 {d11}, [r0,:64], r1
- vld1.8 {d4}, [r8,:64], r1
- vld1.8 {d12}, [r0,:64], r1
- vld1.8 {d5}, [r8,:64], r1
- vld1.8 {d13}, [r0,:64], r1
- vld1.8 {d6}, [r8,:64], r1
- vld1.8 {d14}, [r0,:64], r1
- vld1.8 {d7}, [r8,:64], r1
- vld1.8 {d15}, [r0,:64], r1
-
- sub r0, r0, r1, lsl #3
-
- vtrn.32 q0, q2
- vtrn.32 q1, q3
- vtrn.32 q4, q6
- vtrn.32 q5, q7
-
- vtrn.16 q0, q1
- vtrn.16 q2, q3
- vtrn.16 q4, q5
- vtrn.16 q6, q7
-
- vtrn.8 d0, d1
- vtrn.8 d2, d3
- vtrn.8 d4, d5
- vtrn.8 d6, d7
-
- vtrn.8 d8, d9
- vtrn.8 d10, d11
- vtrn.8 d12, d13
- vtrn.8 d14, d15
-
- bl vpx_wide_mbfilter_neon
-
- tst r7, #1
- beq v_mbfilter
-
- @ flat && mask were not set for any of the channels. Just store the values
- @ from filter.
- sub r8, r0, #2
-
- vswp d23, d25
-
- vst4.8 {d23[0], d24[0], d25[0], d26[0]}, [r8], r1
- vst4.8 {d23[1], d24[1], d25[1], d26[1]}, [r8], r1
- vst4.8 {d23[2], d24[2], d25[2], d26[2]}, [r8], r1
- vst4.8 {d23[3], d24[3], d25[3], d26[3]}, [r8], r1
- vst4.8 {d23[4], d24[4], d25[4], d26[4]}, [r8], r1
- vst4.8 {d23[5], d24[5], d25[5], d26[5]}, [r8], r1
- vst4.8 {d23[6], d24[6], d25[6], d26[6]}, [r8], r1
- vst4.8 {d23[7], d24[7], d25[7], d26[7]}, [r8], r1
-
- b v_end
-
-v_mbfilter:
- tst r7, #2
- beq v_wide_mbfilter
-
- @ flat2 was not set for any of the channels. Just store the values from
- @ mbfilter.
- sub r8, r0, #3
-
- vst3.8 {d18[0], d19[0], d20[0]}, [r8], r1
- vst3.8 {d21[0], d22[0], d23[0]}, [r0], r1
- vst3.8 {d18[1], d19[1], d20[1]}, [r8], r1
- vst3.8 {d21[1], d22[1], d23[1]}, [r0], r1
- vst3.8 {d18[2], d19[2], d20[2]}, [r8], r1
- vst3.8 {d21[2], d22[2], d23[2]}, [r0], r1
- vst3.8 {d18[3], d19[3], d20[3]}, [r8], r1
- vst3.8 {d21[3], d22[3], d23[3]}, [r0], r1
- vst3.8 {d18[4], d19[4], d20[4]}, [r8], r1
- vst3.8 {d21[4], d22[4], d23[4]}, [r0], r1
- vst3.8 {d18[5], d19[5], d20[5]}, [r8], r1
- vst3.8 {d21[5], d22[5], d23[5]}, [r0], r1
- vst3.8 {d18[6], d19[6], d20[6]}, [r8], r1
- vst3.8 {d21[6], d22[6], d23[6]}, [r0], r1
- vst3.8 {d18[7], d19[7], d20[7]}, [r8], r1
- vst3.8 {d21[7], d22[7], d23[7]}, [r0], r1
-
- b v_end
-
-v_wide_mbfilter:
- sub r8, r0, #8
-
- vtrn.32 d0, d26
- vtrn.32 d16, d27
- vtrn.32 d24, d18
- vtrn.32 d25, d19
-
- vtrn.16 d0, d24
- vtrn.16 d16, d25
- vtrn.16 d26, d18
- vtrn.16 d27, d19
-
- vtrn.8 d0, d16
- vtrn.8 d24, d25
- vtrn.8 d26, d27
- vtrn.8 d18, d19
-
- vtrn.32 d20, d1
- vtrn.32 d21, d2
- vtrn.32 d22, d3
- vtrn.32 d23, d15
-
- vtrn.16 d20, d22
- vtrn.16 d21, d23
- vtrn.16 d1, d3
- vtrn.16 d2, d15
-
- vtrn.8 d20, d21
- vtrn.8 d22, d23
- vtrn.8 d1, d2
- vtrn.8 d3, d15
-
- vst1.8 {d0}, [r8,:64], r1
- vst1.8 {d20}, [r0,:64], r1
- vst1.8 {d16}, [r8,:64], r1
- vst1.8 {d21}, [r0,:64], r1
- vst1.8 {d24}, [r8,:64], r1
- vst1.8 {d22}, [r0,:64], r1
- vst1.8 {d25}, [r8,:64], r1
- vst1.8 {d23}, [r0,:64], r1
- vst1.8 {d26}, [r8,:64], r1
- vst1.8 {d1}, [r0,:64], r1
- vst1.8 {d27}, [r8,:64], r1
- vst1.8 {d2}, [r0,:64], r1
- vst1.8 {d18}, [r8,:64], r1
- vst1.8 {d3}, [r0,:64], r1
- vst1.8 {d19}, [r8,:64], r1
- vst1.8 {d15}, [r0,:64], r1
-
-v_end:
- vpop {d8-d15}
- pop {r4-r8, pc}
-
- @ @ |vpx_lpf_vertical_16_neon|
-
- @ void vpx_wide_mbfilter_neon() @
- @ This is a helper function for the loopfilters. The invidual functions do the
- @ necessary load, transpose (if necessary) and store.
- @
- @ r0-r3 PRESERVE
- @ d16 blimit
- @ d17 limit
- @ d18 thresh
- @ d0 p7
- @ d1 p6
- @ d2 p5
- @ d3 p4
- @ d4 p3
- @ d5 p2
- @ d6 p1
- @ d7 p0
- @ d8 q0
- @ d9 q1
- @ d10 q2
- @ d11 q3
- @ d12 q4
- @ d13 q5
- @ d14 q6
- @ d15 q7
-_vpx_wide_mbfilter_neon:
- vpx_wide_mbfilter_neon: @
- mov r7, #0
-
- @ filter_mask
- vabd.u8 d19, d4, d5 @ abs(p3 - p2)
- vabd.u8 d20, d5, d6 @ abs(p2 - p1)
- vabd.u8 d21, d6, d7 @ abs(p1 - p0)
- vabd.u8 d22, d9, d8 @ abs(q1 - q0)
- vabd.u8 d23, d10, d9 @ abs(q2 - q1)
- vabd.u8 d24, d11, d10 @ abs(q3 - q2)
-
- @ only compare the largest value to limit
- vmax.u8 d19, d19, d20 @ max(abs(p3 - p2), abs(p2 - p1))
- vmax.u8 d20, d21, d22 @ max(abs(p1 - p0), abs(q1 - q0))
- vmax.u8 d23, d23, d24 @ max(abs(q2 - q1), abs(q3 - q2))
- vmax.u8 d19, d19, d20
-
- vabd.u8 d24, d7, d8 @ abs(p0 - q0)
-
- vmax.u8 d19, d19, d23
-
- vabd.u8 d23, d6, d9 @ a = abs(p1 - q1)
- vqadd.u8 d24, d24, d24 @ b = abs(p0 - q0) * 2
-
- @ abs () > limit
- vcge.u8 d19, d17, d19
-
- @ flatmask4
- vabd.u8 d25, d7, d5 @ abs(p0 - p2)
- vabd.u8 d26, d8, d10 @ abs(q0 - q2)
- vabd.u8 d27, d4, d7 @ abs(p3 - p0)
- vabd.u8 d28, d11, d8 @ abs(q3 - q0)
-
- @ only compare the largest value to thresh
- vmax.u8 d25, d25, d26 @ max(abs(p0 - p2), abs(q0 - q2))
- vmax.u8 d26, d27, d28 @ max(abs(p3 - p0), abs(q3 - q0))
- vmax.u8 d25, d25, d26
- vmax.u8 d20, d20, d25
-
- vshr.u8 d23, d23, #1 @ a = a / 2
- vqadd.u8 d24, d24, d23 @ a = b + a
-
- vmov.u8 d30, #1
- vcge.u8 d24, d16, d24 @ (a > blimit * 2 + limit) * -1
-
- vcge.u8 d20, d30, d20 @ flat
-
- vand d19, d19, d24 @ mask
-
- @ hevmask
- vcgt.u8 d21, d21, d18 @ (abs(p1 - p0) > thresh)*-1
- vcgt.u8 d22, d22, d18 @ (abs(q1 - q0) > thresh)*-1
- vorr d21, d21, d22 @ hev
-
- vand d16, d20, d19 @ flat && mask
- vmov r5, r6, d16
-
- @ flatmask5(1, p7, p6, p5, p4, p0, q0, q4, q5, q6, q7)
- vabd.u8 d22, d3, d7 @ abs(p4 - p0)
- vabd.u8 d23, d12, d8 @ abs(q4 - q0)
- vabd.u8 d24, d7, d2 @ abs(p0 - p5)
- vabd.u8 d25, d8, d13 @ abs(q0 - q5)
- vabd.u8 d26, d1, d7 @ abs(p6 - p0)
- vabd.u8 d27, d14, d8 @ abs(q6 - q0)
- vabd.u8 d28, d0, d7 @ abs(p7 - p0)
- vabd.u8 d29, d15, d8 @ abs(q7 - q0)
-
- @ only compare the largest value to thresh
- vmax.u8 d22, d22, d23 @ max(abs(p4 - p0), abs(q4 - q0))
- vmax.u8 d23, d24, d25 @ max(abs(p0 - p5), abs(q0 - q5))
- vmax.u8 d24, d26, d27 @ max(abs(p6 - p0), abs(q6 - q0))
- vmax.u8 d25, d28, d29 @ max(abs(p7 - p0), abs(q7 - q0))
-
- vmax.u8 d26, d22, d23
- vmax.u8 d27, d24, d25
- vmax.u8 d23, d26, d27
-
- vcge.u8 d18, d30, d23 @ flat2
-
- vmov.u8 d22, #0x80
-
- orrs r5, r5, r6 @ Check for 0
- orreq r7, r7, #1 @ Only do filter branch
-
- vand d17, d18, d16 @ flat2 && flat && mask
- vmov r5, r6, d17
-
- @ mbfilter() function
-
- @ filter() function
- @ convert to signed
- veor d23, d8, d22 @ qs0
- veor d24, d7, d22 @ ps0
- veor d25, d6, d22 @ ps1
- veor d26, d9, d22 @ qs1
-
- vmov.u8 d27, #3
-
- vsub.s8 d28, d23, d24 @ ( qs0 - ps0)
- vqsub.s8 d29, d25, d26 @ filter = clamp(ps1-qs1)
- vmull.s8 q15, d28, d27 @ 3 * ( qs0 - ps0)
- vand d29, d29, d21 @ filter &= hev
- vaddw.s8 q15, q15, d29 @ filter + 3 * (qs0 - ps0)
- vmov.u8 d29, #4
-
- @ filter = clamp(filter + 3 * ( qs0 - ps0))
- vqmovn.s16 d28, q15
-
- vand d28, d28, d19 @ filter &= mask
-
- vqadd.s8 d30, d28, d27 @ filter2 = clamp(filter+3)
- vqadd.s8 d29, d28, d29 @ filter1 = clamp(filter+4)
- vshr.s8 d30, d30, #3 @ filter2 >>= 3
- vshr.s8 d29, d29, #3 @ filter1 >>= 3
-
-
- vqadd.s8 d24, d24, d30 @ op0 = clamp(ps0 + filter2)
- vqsub.s8 d23, d23, d29 @ oq0 = clamp(qs0 - filter1)
-
- @ outer tap adjustments: ++filter1 >> 1
- vrshr.s8 d29, d29, #1
- vbic d29, d29, d21 @ filter &= ~hev
-
- vqadd.s8 d25, d25, d29 @ op1 = clamp(ps1 + filter)
- vqsub.s8 d26, d26, d29 @ oq1 = clamp(qs1 - filter)
-
- veor d24, d24, d22 @ *f_op0 = u^0x80
- veor d23, d23, d22 @ *f_oq0 = u^0x80
- veor d25, d25, d22 @ *f_op1 = u^0x80
- veor d26, d26, d22 @ *f_oq1 = u^0x80
-
- tst r7, #1
- bxne lr
-
- orrs r5, r5, r6 @ Check for 0
- orreq r7, r7, #2 @ Only do mbfilter branch
-
- @ mbfilter flat && mask branch
- @ TODO(fgalligan): Can I decrease the cycles shifting to consective d's
- @ and using vibt on the q's?
- vmov.u8 d29, #2
- vaddl.u8 q15, d7, d8 @ op2 = p0 + q0
- vmlal.u8 q15, d4, d27 @ op2 = p0 + q0 + p3 * 3
- vmlal.u8 q15, d5, d29 @ op2 = p0 + q0 + p3 * 3 + p2 * 2
- vaddl.u8 q10, d4, d5
- vaddw.u8 q15, d6 @ op2=p1 + p0 + q0 + p3 * 3 + p2 *2
- vaddl.u8 q14, d6, d9
- vqrshrn.u16 d18, q15, #3 @ r_op2
-
- vsub.i16 q15, q10
- vaddl.u8 q10, d4, d6
- vadd.i16 q15, q14
- vaddl.u8 q14, d7, d10
- vqrshrn.u16 d19, q15, #3 @ r_op1
-
- vsub.i16 q15, q10
- vadd.i16 q15, q14
- vaddl.u8 q14, d8, d11
- vqrshrn.u16 d20, q15, #3 @ r_op0
-
- vsubw.u8 q15, d4 @ oq0 = op0 - p3
- vsubw.u8 q15, d7 @ oq0 -= p0
- vadd.i16 q15, q14
- vaddl.u8 q14, d9, d11
- vqrshrn.u16 d21, q15, #3 @ r_oq0
-
- vsubw.u8 q15, d5 @ oq1 = oq0 - p2
- vsubw.u8 q15, d8 @ oq1 -= q0
- vadd.i16 q15, q14
- vaddl.u8 q14, d10, d11
- vqrshrn.u16 d22, q15, #3 @ r_oq1
-
- vsubw.u8 q15, d6 @ oq2 = oq0 - p1
- vsubw.u8 q15, d9 @ oq2 -= q1
- vadd.i16 q15, q14
- vqrshrn.u16 d27, q15, #3 @ r_oq2
-
- @ Filter does not set op2 or oq2, so use p2 and q2.
- vbif d18, d5, d16 @ t_op2 |= p2 & ~(flat & mask)
- vbif d19, d25, d16 @ t_op1 |= f_op1 & ~(flat & mask)
- vbif d20, d24, d16 @ t_op0 |= f_op0 & ~(flat & mask)
- vbif d21, d23, d16 @ t_oq0 |= f_oq0 & ~(flat & mask)
- vbif d22, d26, d16 @ t_oq1 |= f_oq1 & ~(flat & mask)
-
- vbit d23, d27, d16 @ t_oq2 |= r_oq2 & (flat & mask)
- vbif d23, d10, d16 @ t_oq2 |= q2 & ~(flat & mask)
-
- tst r7, #2
- bxne lr
-
- @ wide_mbfilter flat2 && flat && mask branch
- vmov.u8 d16, #7
- vaddl.u8 q15, d7, d8 @ op6 = p0 + q0
- vaddl.u8 q12, d2, d3
- vaddl.u8 q13, d4, d5
- vaddl.u8 q14, d1, d6
- vmlal.u8 q15, d0, d16 @ op6 += p7 * 3
- vadd.i16 q12, q13
- vadd.i16 q15, q14
- vaddl.u8 q14, d2, d9
- vadd.i16 q15, q12
- vaddl.u8 q12, d0, d1
- vaddw.u8 q15, d1
- vaddl.u8 q13, d0, d2
- vadd.i16 q14, q15, q14
- vqrshrn.u16 d16, q15, #4 @ w_op6
-
- vsub.i16 q15, q14, q12
- vaddl.u8 q14, d3, d10
- vqrshrn.u16 d24, q15, #4 @ w_op5
-
- vsub.i16 q15, q13
- vaddl.u8 q13, d0, d3
- vadd.i16 q15, q14
- vaddl.u8 q14, d4, d11
- vqrshrn.u16 d25, q15, #4 @ w_op4
-
- vadd.i16 q15, q14
- vaddl.u8 q14, d0, d4
- vsub.i16 q15, q13
- vsub.i16 q14, q15, q14
- vqrshrn.u16 d26, q15, #4 @ w_op3
-
- vaddw.u8 q15, q14, d5 @ op2 += p2
- vaddl.u8 q14, d0, d5
- vaddw.u8 q15, d12 @ op2 += q4
- vbif d26, d4, d17 @ op3 |= p3 & ~(f2 & f & m)
- vqrshrn.u16 d27, q15, #4 @ w_op2
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d0, d6
- vaddw.u8 q15, d6 @ op1 += p1
- vaddw.u8 q15, d13 @ op1 += q5
- vbif d27, d18, d17 @ op2 |= t_op2 & ~(f2 & f & m)
- vqrshrn.u16 d18, q15, #4 @ w_op1
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d0, d7
- vaddw.u8 q15, d7 @ op0 += p0
- vaddw.u8 q15, d14 @ op0 += q6
- vbif d18, d19, d17 @ op1 |= t_op1 & ~(f2 & f & m)
- vqrshrn.u16 d19, q15, #4 @ w_op0
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d1, d8
- vaddw.u8 q15, d8 @ oq0 += q0
- vaddw.u8 q15, d15 @ oq0 += q7
- vbif d19, d20, d17 @ op0 |= t_op0 & ~(f2 & f & m)
- vqrshrn.u16 d20, q15, #4 @ w_oq0
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d2, d9
- vaddw.u8 q15, d9 @ oq1 += q1
- vaddl.u8 q4, d10, d15
- vaddw.u8 q15, d15 @ oq1 += q7
- vbif d20, d21, d17 @ oq0 |= t_oq0 & ~(f2 & f & m)
- vqrshrn.u16 d21, q15, #4 @ w_oq1
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d3, d10
- vadd.i16 q15, q4
- vaddl.u8 q4, d11, d15
- vbif d21, d22, d17 @ oq1 |= t_oq1 & ~(f2 & f & m)
- vqrshrn.u16 d22, q15, #4 @ w_oq2
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d4, d11
- vadd.i16 q15, q4
- vaddl.u8 q4, d12, d15
- vbif d22, d23, d17 @ oq2 |= t_oq2 & ~(f2 & f & m)
- vqrshrn.u16 d23, q15, #4 @ w_oq3
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d5, d12
- vadd.i16 q15, q4
- vaddl.u8 q4, d13, d15
- vbif d16, d1, d17 @ op6 |= p6 & ~(f2 & f & m)
- vqrshrn.u16 d1, q15, #4 @ w_oq4
-
- vsub.i16 q15, q14
- vaddl.u8 q14, d6, d13
- vadd.i16 q15, q4
- vaddl.u8 q4, d14, d15
- vbif d24, d2, d17 @ op5 |= p5 & ~(f2 & f & m)
- vqrshrn.u16 d2, q15, #4 @ w_oq5
-
- vsub.i16 q15, q14
- vbif d25, d3, d17 @ op4 |= p4 & ~(f2 & f & m)
- vadd.i16 q15, q4
- vbif d23, d11, d17 @ oq3 |= q3 & ~(f2 & f & m)
- vqrshrn.u16 d3, q15, #4 @ w_oq6
- vbif d1, d12, d17 @ oq4 |= q4 & ~(f2 & f & m)
- vbif d2, d13, d17 @ oq5 |= q5 & ~(f2 & f & m)
- vbif d3, d14, d17 @ oq6 |= q6 & ~(f2 & f & m)
-
- bx lr
- @ @ |vpx_wide_mbfilter_neon|
-
diff --git a/thirdparty/libvpx/vpx_dsp/arm/gas_apple/save_reg_neon.s b/thirdparty/libvpx/vpx_dsp/arm/gas_apple/save_reg_neon.s
deleted file mode 100644
index f322b698b4..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/gas_apple/save_reg_neon.s
+++ /dev/null
@@ -1,46 +0,0 @@
-@ This file was created from a .asm file
-@ using the ads2gas_apple.pl script.
-
- .set WIDE_REFERENCE, 0
- .set ARCHITECTURE, 5
- .set DO1STROUNDING, 0
- @
- @ Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- @
- @ Use of this source code is governed by a BSD-style license
- @ that can be found in the LICENSE file in the root of the source
- @ tree. An additional intellectual property rights grant can be found
- @ in the file PATENTS. All contributing project authors may
- @ be found in the AUTHORS file in the root of the source tree.
- @
-
-
- .globl _vpx_push_neon
- .globl vpx_push_neon
- .globl _vpx_pop_neon
- .globl vpx_pop_neon
-
- @ ARM
- @
- @ PRESERVE8
-
-.text
-.p2align 2
-
-_vpx_push_neon:
- vpx_push_neon: @
- vst1.i64 {d8, d9, d10, d11}, [r0]!
- vst1.i64 {d12, d13, d14, d15}, [r0]!
- bx lr
-
- @
-
-_vpx_pop_neon:
- vpx_pop_neon: @
- vld1.i64 {d8, d9, d10, d11}, [r0]!
- vld1.i64 {d12, d13, d14, d15}, [r0]!
- bx lr
-
- @
-
-
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct16x16_1_add_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct16x16_1_add_neon.c
deleted file mode 100644
index f734e48027..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct16x16_1_add_neon.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
-
-void vpx_idct16x16_1_add_neon(
- int16_t *input,
- uint8_t *dest,
- int dest_stride) {
- uint8x8_t d2u8, d3u8, d30u8, d31u8;
- uint64x1_t d2u64, d3u64, d4u64, d5u64;
- uint16x8_t q0u16, q9u16, q10u16, q11u16, q12u16;
- int16x8_t q0s16;
- uint8_t *d1, *d2;
- int16_t i, j, a1, cospi_16_64 = 11585;
- int16_t out = dct_const_round_shift(input[0] * cospi_16_64);
- out = dct_const_round_shift(out * cospi_16_64);
- a1 = ROUND_POWER_OF_TWO(out, 6);
-
- q0s16 = vdupq_n_s16(a1);
- q0u16 = vreinterpretq_u16_s16(q0s16);
-
- for (d1 = d2 = dest, i = 0; i < 4; i++) {
- for (j = 0; j < 2; j++) {
- d2u64 = vld1_u64((const uint64_t *)d1);
- d3u64 = vld1_u64((const uint64_t *)(d1 + 8));
- d1 += dest_stride;
- d4u64 = vld1_u64((const uint64_t *)d1);
- d5u64 = vld1_u64((const uint64_t *)(d1 + 8));
- d1 += dest_stride;
-
- q9u16 = vaddw_u8(q0u16, vreinterpret_u8_u64(d2u64));
- q10u16 = vaddw_u8(q0u16, vreinterpret_u8_u64(d3u64));
- q11u16 = vaddw_u8(q0u16, vreinterpret_u8_u64(d4u64));
- q12u16 = vaddw_u8(q0u16, vreinterpret_u8_u64(d5u64));
-
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
- d3u8 = vqmovun_s16(vreinterpretq_s16_u16(q10u16));
- d30u8 = vqmovun_s16(vreinterpretq_s16_u16(q11u16));
- d31u8 = vqmovun_s16(vreinterpretq_s16_u16(q12u16));
-
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d2u8));
- vst1_u64((uint64_t *)(d2 + 8), vreinterpret_u64_u8(d3u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d30u8));
- vst1_u64((uint64_t *)(d2 + 8), vreinterpret_u64_u8(d31u8));
- d2 += dest_stride;
- }
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct16x16_add_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct16x16_add_neon.c
deleted file mode 100644
index 651ebb21f9..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct16x16_add_neon.c
+++ /dev/null
@@ -1,1317 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
-
-static INLINE void TRANSPOSE8X8(
- int16x8_t *q8s16,
- int16x8_t *q9s16,
- int16x8_t *q10s16,
- int16x8_t *q11s16,
- int16x8_t *q12s16,
- int16x8_t *q13s16,
- int16x8_t *q14s16,
- int16x8_t *q15s16) {
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- int32x4x2_t q0x2s32, q1x2s32, q2x2s32, q3x2s32;
- int16x8x2_t q0x2s16, q1x2s16, q2x2s16, q3x2s16;
-
- d16s16 = vget_low_s16(*q8s16);
- d17s16 = vget_high_s16(*q8s16);
- d18s16 = vget_low_s16(*q9s16);
- d19s16 = vget_high_s16(*q9s16);
- d20s16 = vget_low_s16(*q10s16);
- d21s16 = vget_high_s16(*q10s16);
- d22s16 = vget_low_s16(*q11s16);
- d23s16 = vget_high_s16(*q11s16);
- d24s16 = vget_low_s16(*q12s16);
- d25s16 = vget_high_s16(*q12s16);
- d26s16 = vget_low_s16(*q13s16);
- d27s16 = vget_high_s16(*q13s16);
- d28s16 = vget_low_s16(*q14s16);
- d29s16 = vget_high_s16(*q14s16);
- d30s16 = vget_low_s16(*q15s16);
- d31s16 = vget_high_s16(*q15s16);
-
- *q8s16 = vcombine_s16(d16s16, d24s16); // vswp d17, d24
- *q9s16 = vcombine_s16(d18s16, d26s16); // vswp d19, d26
- *q10s16 = vcombine_s16(d20s16, d28s16); // vswp d21, d28
- *q11s16 = vcombine_s16(d22s16, d30s16); // vswp d23, d30
- *q12s16 = vcombine_s16(d17s16, d25s16);
- *q13s16 = vcombine_s16(d19s16, d27s16);
- *q14s16 = vcombine_s16(d21s16, d29s16);
- *q15s16 = vcombine_s16(d23s16, d31s16);
-
- q0x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q8s16),
- vreinterpretq_s32_s16(*q10s16));
- q1x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q9s16),
- vreinterpretq_s32_s16(*q11s16));
- q2x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q12s16),
- vreinterpretq_s32_s16(*q14s16));
- q3x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q13s16),
- vreinterpretq_s32_s16(*q15s16));
-
- q0x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q0x2s32.val[0]), // q8
- vreinterpretq_s16_s32(q1x2s32.val[0])); // q9
- q1x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q0x2s32.val[1]), // q10
- vreinterpretq_s16_s32(q1x2s32.val[1])); // q11
- q2x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q2x2s32.val[0]), // q12
- vreinterpretq_s16_s32(q3x2s32.val[0])); // q13
- q3x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q2x2s32.val[1]), // q14
- vreinterpretq_s16_s32(q3x2s32.val[1])); // q15
-
- *q8s16 = q0x2s16.val[0];
- *q9s16 = q0x2s16.val[1];
- *q10s16 = q1x2s16.val[0];
- *q11s16 = q1x2s16.val[1];
- *q12s16 = q2x2s16.val[0];
- *q13s16 = q2x2s16.val[1];
- *q14s16 = q3x2s16.val[0];
- *q15s16 = q3x2s16.val[1];
- return;
-}
-
-void vpx_idct16x16_256_add_neon_pass1(
- int16_t *in,
- int16_t *out,
- int output_stride) {
- int16x4_t d0s16, d1s16, d2s16, d3s16;
- int16x4_t d8s16, d9s16, d10s16, d11s16, d12s16, d13s16, d14s16, d15s16;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- uint64x1_t d16u64, d17u64, d18u64, d19u64, d20u64, d21u64, d22u64, d23u64;
- uint64x1_t d24u64, d25u64, d26u64, d27u64, d28u64, d29u64, d30u64, d31u64;
- int16x8_t q0s16, q1s16, q2s16, q3s16, q4s16, q5s16, q6s16, q7s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- int32x4_t q0s32, q1s32, q2s32, q3s32, q5s32, q6s32, q9s32;
- int32x4_t q10s32, q11s32, q12s32, q13s32, q15s32;
- int16x8x2_t q0x2s16;
-
- q0x2s16 = vld2q_s16(in);
- q8s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q9s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q10s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q11s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q12s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q13s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q14s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q15s16 = q0x2s16.val[0];
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- d16s16 = vget_low_s16(q8s16);
- d17s16 = vget_high_s16(q8s16);
- d18s16 = vget_low_s16(q9s16);
- d19s16 = vget_high_s16(q9s16);
- d20s16 = vget_low_s16(q10s16);
- d21s16 = vget_high_s16(q10s16);
- d22s16 = vget_low_s16(q11s16);
- d23s16 = vget_high_s16(q11s16);
- d24s16 = vget_low_s16(q12s16);
- d25s16 = vget_high_s16(q12s16);
- d26s16 = vget_low_s16(q13s16);
- d27s16 = vget_high_s16(q13s16);
- d28s16 = vget_low_s16(q14s16);
- d29s16 = vget_high_s16(q14s16);
- d30s16 = vget_low_s16(q15s16);
- d31s16 = vget_high_s16(q15s16);
-
- // stage 3
- d0s16 = vdup_n_s16(cospi_28_64);
- d1s16 = vdup_n_s16(cospi_4_64);
-
- q2s32 = vmull_s16(d18s16, d0s16);
- q3s32 = vmull_s16(d19s16, d0s16);
- q5s32 = vmull_s16(d18s16, d1s16);
- q6s32 = vmull_s16(d19s16, d1s16);
-
- q2s32 = vmlsl_s16(q2s32, d30s16, d1s16);
- q3s32 = vmlsl_s16(q3s32, d31s16, d1s16);
- q5s32 = vmlal_s16(q5s32, d30s16, d0s16);
- q6s32 = vmlal_s16(q6s32, d31s16, d0s16);
-
- d2s16 = vdup_n_s16(cospi_12_64);
- d3s16 = vdup_n_s16(cospi_20_64);
-
- d8s16 = vqrshrn_n_s32(q2s32, 14);
- d9s16 = vqrshrn_n_s32(q3s32, 14);
- d14s16 = vqrshrn_n_s32(q5s32, 14);
- d15s16 = vqrshrn_n_s32(q6s32, 14);
- q4s16 = vcombine_s16(d8s16, d9s16);
- q7s16 = vcombine_s16(d14s16, d15s16);
-
- q2s32 = vmull_s16(d26s16, d2s16);
- q3s32 = vmull_s16(d27s16, d2s16);
- q9s32 = vmull_s16(d26s16, d3s16);
- q15s32 = vmull_s16(d27s16, d3s16);
-
- q2s32 = vmlsl_s16(q2s32, d22s16, d3s16);
- q3s32 = vmlsl_s16(q3s32, d23s16, d3s16);
- q9s32 = vmlal_s16(q9s32, d22s16, d2s16);
- q15s32 = vmlal_s16(q15s32, d23s16, d2s16);
-
- d10s16 = vqrshrn_n_s32(q2s32, 14);
- d11s16 = vqrshrn_n_s32(q3s32, 14);
- d12s16 = vqrshrn_n_s32(q9s32, 14);
- d13s16 = vqrshrn_n_s32(q15s32, 14);
- q5s16 = vcombine_s16(d10s16, d11s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- // stage 4
- d30s16 = vdup_n_s16(cospi_16_64);
-
- q2s32 = vmull_s16(d16s16, d30s16);
- q11s32 = vmull_s16(d17s16, d30s16);
- q0s32 = vmull_s16(d24s16, d30s16);
- q1s32 = vmull_s16(d25s16, d30s16);
-
- d30s16 = vdup_n_s16(cospi_24_64);
- d31s16 = vdup_n_s16(cospi_8_64);
-
- q3s32 = vaddq_s32(q2s32, q0s32);
- q12s32 = vaddq_s32(q11s32, q1s32);
- q13s32 = vsubq_s32(q2s32, q0s32);
- q1s32 = vsubq_s32(q11s32, q1s32);
-
- d16s16 = vqrshrn_n_s32(q3s32, 14);
- d17s16 = vqrshrn_n_s32(q12s32, 14);
- d18s16 = vqrshrn_n_s32(q13s32, 14);
- d19s16 = vqrshrn_n_s32(q1s32, 14);
- q8s16 = vcombine_s16(d16s16, d17s16);
- q9s16 = vcombine_s16(d18s16, d19s16);
-
- q0s32 = vmull_s16(d20s16, d31s16);
- q1s32 = vmull_s16(d21s16, d31s16);
- q12s32 = vmull_s16(d20s16, d30s16);
- q13s32 = vmull_s16(d21s16, d30s16);
-
- q0s32 = vmlal_s16(q0s32, d28s16, d30s16);
- q1s32 = vmlal_s16(q1s32, d29s16, d30s16);
- q12s32 = vmlsl_s16(q12s32, d28s16, d31s16);
- q13s32 = vmlsl_s16(q13s32, d29s16, d31s16);
-
- d22s16 = vqrshrn_n_s32(q0s32, 14);
- d23s16 = vqrshrn_n_s32(q1s32, 14);
- d20s16 = vqrshrn_n_s32(q12s32, 14);
- d21s16 = vqrshrn_n_s32(q13s32, 14);
- q10s16 = vcombine_s16(d20s16, d21s16);
- q11s16 = vcombine_s16(d22s16, d23s16);
-
- q13s16 = vsubq_s16(q4s16, q5s16);
- q4s16 = vaddq_s16(q4s16, q5s16);
- q14s16 = vsubq_s16(q7s16, q6s16);
- q15s16 = vaddq_s16(q6s16, q7s16);
- d26s16 = vget_low_s16(q13s16);
- d27s16 = vget_high_s16(q13s16);
- d28s16 = vget_low_s16(q14s16);
- d29s16 = vget_high_s16(q14s16);
-
- // stage 5
- q0s16 = vaddq_s16(q8s16, q11s16);
- q1s16 = vaddq_s16(q9s16, q10s16);
- q2s16 = vsubq_s16(q9s16, q10s16);
- q3s16 = vsubq_s16(q8s16, q11s16);
-
- d16s16 = vdup_n_s16(cospi_16_64);
-
- q11s32 = vmull_s16(d26s16, d16s16);
- q12s32 = vmull_s16(d27s16, d16s16);
- q9s32 = vmull_s16(d28s16, d16s16);
- q10s32 = vmull_s16(d29s16, d16s16);
-
- q6s32 = vsubq_s32(q9s32, q11s32);
- q13s32 = vsubq_s32(q10s32, q12s32);
- q9s32 = vaddq_s32(q9s32, q11s32);
- q10s32 = vaddq_s32(q10s32, q12s32);
-
- d10s16 = vqrshrn_n_s32(q6s32, 14);
- d11s16 = vqrshrn_n_s32(q13s32, 14);
- d12s16 = vqrshrn_n_s32(q9s32, 14);
- d13s16 = vqrshrn_n_s32(q10s32, 14);
- q5s16 = vcombine_s16(d10s16, d11s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- // stage 6
- q8s16 = vaddq_s16(q0s16, q15s16);
- q9s16 = vaddq_s16(q1s16, q6s16);
- q10s16 = vaddq_s16(q2s16, q5s16);
- q11s16 = vaddq_s16(q3s16, q4s16);
- q12s16 = vsubq_s16(q3s16, q4s16);
- q13s16 = vsubq_s16(q2s16, q5s16);
- q14s16 = vsubq_s16(q1s16, q6s16);
- q15s16 = vsubq_s16(q0s16, q15s16);
-
- d16u64 = vreinterpret_u64_s16(vget_low_s16(q8s16));
- d17u64 = vreinterpret_u64_s16(vget_high_s16(q8s16));
- d18u64 = vreinterpret_u64_s16(vget_low_s16(q9s16));
- d19u64 = vreinterpret_u64_s16(vget_high_s16(q9s16));
- d20u64 = vreinterpret_u64_s16(vget_low_s16(q10s16));
- d21u64 = vreinterpret_u64_s16(vget_high_s16(q10s16));
- d22u64 = vreinterpret_u64_s16(vget_low_s16(q11s16));
- d23u64 = vreinterpret_u64_s16(vget_high_s16(q11s16));
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- d28u64 = vreinterpret_u64_s16(vget_low_s16(q14s16));
- d29u64 = vreinterpret_u64_s16(vget_high_s16(q14s16));
- d30u64 = vreinterpret_u64_s16(vget_low_s16(q15s16));
- d31u64 = vreinterpret_u64_s16(vget_high_s16(q15s16));
-
- // store the data
- output_stride >>= 1; // output_stride / 2, out is int16_t
- vst1_u64((uint64_t *)out, d16u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d17u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d18u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d19u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d20u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d21u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d22u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d23u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d24u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d25u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d26u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d27u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d28u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d29u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d30u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d31u64);
- return;
-}
-
-void vpx_idct16x16_256_add_neon_pass2(
- int16_t *src,
- int16_t *out,
- int16_t *pass1Output,
- int16_t skip_adding,
- uint8_t *dest,
- int dest_stride) {
- uint8_t *d;
- uint8x8_t d12u8, d13u8;
- int16x4_t d0s16, d1s16, d2s16, d3s16, d4s16, d5s16, d6s16, d7s16;
- int16x4_t d8s16, d9s16, d10s16, d11s16, d12s16, d13s16, d14s16, d15s16;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- uint64x1_t d24u64, d25u64, d26u64, d27u64;
- int64x1_t d12s64, d13s64;
- uint16x8_t q2u16, q3u16, q4u16, q5u16, q8u16;
- uint16x8_t q9u16, q12u16, q13u16, q14u16, q15u16;
- int16x8_t q0s16, q1s16, q2s16, q3s16, q4s16, q5s16, q6s16, q7s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- int32x4_t q0s32, q1s32, q2s32, q3s32, q4s32, q5s32, q6s32, q8s32, q9s32;
- int32x4_t q10s32, q11s32, q12s32, q13s32;
- int16x8x2_t q0x2s16;
-
- q0x2s16 = vld2q_s16(src);
- q8s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q9s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q10s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q11s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q12s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q13s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q14s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q15s16 = q0x2s16.val[0];
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- d16s16 = vget_low_s16(q8s16);
- d17s16 = vget_high_s16(q8s16);
- d18s16 = vget_low_s16(q9s16);
- d19s16 = vget_high_s16(q9s16);
- d20s16 = vget_low_s16(q10s16);
- d21s16 = vget_high_s16(q10s16);
- d22s16 = vget_low_s16(q11s16);
- d23s16 = vget_high_s16(q11s16);
- d24s16 = vget_low_s16(q12s16);
- d25s16 = vget_high_s16(q12s16);
- d26s16 = vget_low_s16(q13s16);
- d27s16 = vget_high_s16(q13s16);
- d28s16 = vget_low_s16(q14s16);
- d29s16 = vget_high_s16(q14s16);
- d30s16 = vget_low_s16(q15s16);
- d31s16 = vget_high_s16(q15s16);
-
- // stage 3
- d12s16 = vdup_n_s16(cospi_30_64);
- d13s16 = vdup_n_s16(cospi_2_64);
-
- q2s32 = vmull_s16(d16s16, d12s16);
- q3s32 = vmull_s16(d17s16, d12s16);
- q1s32 = vmull_s16(d16s16, d13s16);
- q4s32 = vmull_s16(d17s16, d13s16);
-
- q2s32 = vmlsl_s16(q2s32, d30s16, d13s16);
- q3s32 = vmlsl_s16(q3s32, d31s16, d13s16);
- q1s32 = vmlal_s16(q1s32, d30s16, d12s16);
- q4s32 = vmlal_s16(q4s32, d31s16, d12s16);
-
- d0s16 = vqrshrn_n_s32(q2s32, 14);
- d1s16 = vqrshrn_n_s32(q3s32, 14);
- d14s16 = vqrshrn_n_s32(q1s32, 14);
- d15s16 = vqrshrn_n_s32(q4s32, 14);
- q0s16 = vcombine_s16(d0s16, d1s16);
- q7s16 = vcombine_s16(d14s16, d15s16);
-
- d30s16 = vdup_n_s16(cospi_14_64);
- d31s16 = vdup_n_s16(cospi_18_64);
-
- q2s32 = vmull_s16(d24s16, d30s16);
- q3s32 = vmull_s16(d25s16, d30s16);
- q4s32 = vmull_s16(d24s16, d31s16);
- q5s32 = vmull_s16(d25s16, d31s16);
-
- q2s32 = vmlsl_s16(q2s32, d22s16, d31s16);
- q3s32 = vmlsl_s16(q3s32, d23s16, d31s16);
- q4s32 = vmlal_s16(q4s32, d22s16, d30s16);
- q5s32 = vmlal_s16(q5s32, d23s16, d30s16);
-
- d2s16 = vqrshrn_n_s32(q2s32, 14);
- d3s16 = vqrshrn_n_s32(q3s32, 14);
- d12s16 = vqrshrn_n_s32(q4s32, 14);
- d13s16 = vqrshrn_n_s32(q5s32, 14);
- q1s16 = vcombine_s16(d2s16, d3s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- d30s16 = vdup_n_s16(cospi_22_64);
- d31s16 = vdup_n_s16(cospi_10_64);
-
- q11s32 = vmull_s16(d20s16, d30s16);
- q12s32 = vmull_s16(d21s16, d30s16);
- q4s32 = vmull_s16(d20s16, d31s16);
- q5s32 = vmull_s16(d21s16, d31s16);
-
- q11s32 = vmlsl_s16(q11s32, d26s16, d31s16);
- q12s32 = vmlsl_s16(q12s32, d27s16, d31s16);
- q4s32 = vmlal_s16(q4s32, d26s16, d30s16);
- q5s32 = vmlal_s16(q5s32, d27s16, d30s16);
-
- d4s16 = vqrshrn_n_s32(q11s32, 14);
- d5s16 = vqrshrn_n_s32(q12s32, 14);
- d11s16 = vqrshrn_n_s32(q5s32, 14);
- d10s16 = vqrshrn_n_s32(q4s32, 14);
- q2s16 = vcombine_s16(d4s16, d5s16);
- q5s16 = vcombine_s16(d10s16, d11s16);
-
- d30s16 = vdup_n_s16(cospi_6_64);
- d31s16 = vdup_n_s16(cospi_26_64);
-
- q10s32 = vmull_s16(d28s16, d30s16);
- q11s32 = vmull_s16(d29s16, d30s16);
- q12s32 = vmull_s16(d28s16, d31s16);
- q13s32 = vmull_s16(d29s16, d31s16);
-
- q10s32 = vmlsl_s16(q10s32, d18s16, d31s16);
- q11s32 = vmlsl_s16(q11s32, d19s16, d31s16);
- q12s32 = vmlal_s16(q12s32, d18s16, d30s16);
- q13s32 = vmlal_s16(q13s32, d19s16, d30s16);
-
- d6s16 = vqrshrn_n_s32(q10s32, 14);
- d7s16 = vqrshrn_n_s32(q11s32, 14);
- d8s16 = vqrshrn_n_s32(q12s32, 14);
- d9s16 = vqrshrn_n_s32(q13s32, 14);
- q3s16 = vcombine_s16(d6s16, d7s16);
- q4s16 = vcombine_s16(d8s16, d9s16);
-
- // stage 3
- q9s16 = vsubq_s16(q0s16, q1s16);
- q0s16 = vaddq_s16(q0s16, q1s16);
- q10s16 = vsubq_s16(q3s16, q2s16);
- q11s16 = vaddq_s16(q2s16, q3s16);
- q12s16 = vaddq_s16(q4s16, q5s16);
- q13s16 = vsubq_s16(q4s16, q5s16);
- q14s16 = vsubq_s16(q7s16, q6s16);
- q7s16 = vaddq_s16(q6s16, q7s16);
-
- // stage 4
- d18s16 = vget_low_s16(q9s16);
- d19s16 = vget_high_s16(q9s16);
- d20s16 = vget_low_s16(q10s16);
- d21s16 = vget_high_s16(q10s16);
- d26s16 = vget_low_s16(q13s16);
- d27s16 = vget_high_s16(q13s16);
- d28s16 = vget_low_s16(q14s16);
- d29s16 = vget_high_s16(q14s16);
-
- d30s16 = vdup_n_s16(cospi_8_64);
- d31s16 = vdup_n_s16(cospi_24_64);
-
- q2s32 = vmull_s16(d18s16, d31s16);
- q3s32 = vmull_s16(d19s16, d31s16);
- q4s32 = vmull_s16(d28s16, d31s16);
- q5s32 = vmull_s16(d29s16, d31s16);
-
- q2s32 = vmlal_s16(q2s32, d28s16, d30s16);
- q3s32 = vmlal_s16(q3s32, d29s16, d30s16);
- q4s32 = vmlsl_s16(q4s32, d18s16, d30s16);
- q5s32 = vmlsl_s16(q5s32, d19s16, d30s16);
-
- d12s16 = vqrshrn_n_s32(q2s32, 14);
- d13s16 = vqrshrn_n_s32(q3s32, 14);
- d2s16 = vqrshrn_n_s32(q4s32, 14);
- d3s16 = vqrshrn_n_s32(q5s32, 14);
- q1s16 = vcombine_s16(d2s16, d3s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- q3s16 = q11s16;
- q4s16 = q12s16;
-
- d30s16 = vdup_n_s16(-cospi_8_64);
- q11s32 = vmull_s16(d26s16, d30s16);
- q12s32 = vmull_s16(d27s16, d30s16);
- q8s32 = vmull_s16(d20s16, d30s16);
- q9s32 = vmull_s16(d21s16, d30s16);
-
- q11s32 = vmlsl_s16(q11s32, d20s16, d31s16);
- q12s32 = vmlsl_s16(q12s32, d21s16, d31s16);
- q8s32 = vmlal_s16(q8s32, d26s16, d31s16);
- q9s32 = vmlal_s16(q9s32, d27s16, d31s16);
-
- d4s16 = vqrshrn_n_s32(q11s32, 14);
- d5s16 = vqrshrn_n_s32(q12s32, 14);
- d10s16 = vqrshrn_n_s32(q8s32, 14);
- d11s16 = vqrshrn_n_s32(q9s32, 14);
- q2s16 = vcombine_s16(d4s16, d5s16);
- q5s16 = vcombine_s16(d10s16, d11s16);
-
- // stage 5
- q8s16 = vaddq_s16(q0s16, q3s16);
- q9s16 = vaddq_s16(q1s16, q2s16);
- q10s16 = vsubq_s16(q1s16, q2s16);
- q11s16 = vsubq_s16(q0s16, q3s16);
- q12s16 = vsubq_s16(q7s16, q4s16);
- q13s16 = vsubq_s16(q6s16, q5s16);
- q14s16 = vaddq_s16(q6s16, q5s16);
- q15s16 = vaddq_s16(q7s16, q4s16);
-
- // stage 6
- d20s16 = vget_low_s16(q10s16);
- d21s16 = vget_high_s16(q10s16);
- d22s16 = vget_low_s16(q11s16);
- d23s16 = vget_high_s16(q11s16);
- d24s16 = vget_low_s16(q12s16);
- d25s16 = vget_high_s16(q12s16);
- d26s16 = vget_low_s16(q13s16);
- d27s16 = vget_high_s16(q13s16);
-
- d14s16 = vdup_n_s16(cospi_16_64);
-
- q3s32 = vmull_s16(d26s16, d14s16);
- q4s32 = vmull_s16(d27s16, d14s16);
- q0s32 = vmull_s16(d20s16, d14s16);
- q1s32 = vmull_s16(d21s16, d14s16);
-
- q5s32 = vsubq_s32(q3s32, q0s32);
- q6s32 = vsubq_s32(q4s32, q1s32);
- q10s32 = vaddq_s32(q3s32, q0s32);
- q4s32 = vaddq_s32(q4s32, q1s32);
-
- d4s16 = vqrshrn_n_s32(q5s32, 14);
- d5s16 = vqrshrn_n_s32(q6s32, 14);
- d10s16 = vqrshrn_n_s32(q10s32, 14);
- d11s16 = vqrshrn_n_s32(q4s32, 14);
- q2s16 = vcombine_s16(d4s16, d5s16);
- q5s16 = vcombine_s16(d10s16, d11s16);
-
- q0s32 = vmull_s16(d22s16, d14s16);
- q1s32 = vmull_s16(d23s16, d14s16);
- q13s32 = vmull_s16(d24s16, d14s16);
- q6s32 = vmull_s16(d25s16, d14s16);
-
- q10s32 = vsubq_s32(q13s32, q0s32);
- q4s32 = vsubq_s32(q6s32, q1s32);
- q13s32 = vaddq_s32(q13s32, q0s32);
- q6s32 = vaddq_s32(q6s32, q1s32);
-
- d6s16 = vqrshrn_n_s32(q10s32, 14);
- d7s16 = vqrshrn_n_s32(q4s32, 14);
- d8s16 = vqrshrn_n_s32(q13s32, 14);
- d9s16 = vqrshrn_n_s32(q6s32, 14);
- q3s16 = vcombine_s16(d6s16, d7s16);
- q4s16 = vcombine_s16(d8s16, d9s16);
-
- // stage 7
- if (skip_adding != 0) {
- d = dest;
- // load the data in pass1
- q0s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q1s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- d13s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
-
- q12s16 = vaddq_s16(q0s16, q15s16);
- q13s16 = vaddq_s16(q1s16, q14s16);
- q12s16 = vrshrq_n_s16(q12s16, 6);
- q13s16 = vrshrq_n_s16(q13s16, 6);
- q12u16 = vaddw_u8(vreinterpretq_u16_s16(q12s16),
- vreinterpret_u8_s64(d12s64));
- q13u16 = vaddw_u8(vreinterpretq_u16_s16(q13s16),
- vreinterpret_u8_s64(d13s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q12u16));
- d13u8 = vqmovun_s16(vreinterpretq_s16_u16(q13u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d13u8));
- d += dest_stride;
- q14s16 = vsubq_s16(q1s16, q14s16);
- q15s16 = vsubq_s16(q0s16, q15s16);
-
- q10s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q11s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- d13s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q12s16 = vaddq_s16(q10s16, q5s16);
- q13s16 = vaddq_s16(q11s16, q4s16);
- q12s16 = vrshrq_n_s16(q12s16, 6);
- q13s16 = vrshrq_n_s16(q13s16, 6);
- q12u16 = vaddw_u8(vreinterpretq_u16_s16(q12s16),
- vreinterpret_u8_s64(d12s64));
- q13u16 = vaddw_u8(vreinterpretq_u16_s16(q13s16),
- vreinterpret_u8_s64(d13s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q12u16));
- d13u8 = vqmovun_s16(vreinterpretq_s16_u16(q13u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d13u8));
- d += dest_stride;
- q4s16 = vsubq_s16(q11s16, q4s16);
- q5s16 = vsubq_s16(q10s16, q5s16);
-
- q0s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q1s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- d13s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q12s16 = vaddq_s16(q0s16, q3s16);
- q13s16 = vaddq_s16(q1s16, q2s16);
- q12s16 = vrshrq_n_s16(q12s16, 6);
- q13s16 = vrshrq_n_s16(q13s16, 6);
- q12u16 = vaddw_u8(vreinterpretq_u16_s16(q12s16),
- vreinterpret_u8_s64(d12s64));
- q13u16 = vaddw_u8(vreinterpretq_u16_s16(q13s16),
- vreinterpret_u8_s64(d13s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q12u16));
- d13u8 = vqmovun_s16(vreinterpretq_s16_u16(q13u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d13u8));
- d += dest_stride;
- q2s16 = vsubq_s16(q1s16, q2s16);
- q3s16 = vsubq_s16(q0s16, q3s16);
-
- q10s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q11s16 = vld1q_s16(pass1Output);
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- d13s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q12s16 = vaddq_s16(q10s16, q9s16);
- q13s16 = vaddq_s16(q11s16, q8s16);
- q12s16 = vrshrq_n_s16(q12s16, 6);
- q13s16 = vrshrq_n_s16(q13s16, 6);
- q12u16 = vaddw_u8(vreinterpretq_u16_s16(q12s16),
- vreinterpret_u8_s64(d12s64));
- q13u16 = vaddw_u8(vreinterpretq_u16_s16(q13s16),
- vreinterpret_u8_s64(d13s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q12u16));
- d13u8 = vqmovun_s16(vreinterpretq_s16_u16(q13u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d13u8));
- d += dest_stride;
- q8s16 = vsubq_s16(q11s16, q8s16);
- q9s16 = vsubq_s16(q10s16, q9s16);
-
- // store the data out 8,9,10,11,12,13,14,15
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q8s16 = vrshrq_n_s16(q8s16, 6);
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q8s16),
- vreinterpret_u8_s64(d12s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
-
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q9s16 = vrshrq_n_s16(q9s16, 6);
- q9u16 = vaddw_u8(vreinterpretq_u16_s16(q9s16),
- vreinterpret_u8_s64(d12s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
-
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q2s16 = vrshrq_n_s16(q2s16, 6);
- q2u16 = vaddw_u8(vreinterpretq_u16_s16(q2s16),
- vreinterpret_u8_s64(d12s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q2u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
-
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q3s16 = vrshrq_n_s16(q3s16, 6);
- q3u16 = vaddw_u8(vreinterpretq_u16_s16(q3s16),
- vreinterpret_u8_s64(d12s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q3u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
-
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q4s16 = vrshrq_n_s16(q4s16, 6);
- q4u16 = vaddw_u8(vreinterpretq_u16_s16(q4s16),
- vreinterpret_u8_s64(d12s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q4u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
-
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q5s16 = vrshrq_n_s16(q5s16, 6);
- q5u16 = vaddw_u8(vreinterpretq_u16_s16(q5s16),
- vreinterpret_u8_s64(d12s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q5u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
-
- d12s64 = vld1_s64((int64_t *)dest);
- dest += dest_stride;
- q14s16 = vrshrq_n_s16(q14s16, 6);
- q14u16 = vaddw_u8(vreinterpretq_u16_s16(q14s16),
- vreinterpret_u8_s64(d12s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q14u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- d += dest_stride;
-
- d12s64 = vld1_s64((int64_t *)dest);
- q15s16 = vrshrq_n_s16(q15s16, 6);
- q15u16 = vaddw_u8(vreinterpretq_u16_s16(q15s16),
- vreinterpret_u8_s64(d12s64));
- d12u8 = vqmovun_s16(vreinterpretq_s16_u16(q15u16));
- vst1_u64((uint64_t *)d, vreinterpret_u64_u8(d12u8));
- } else { // skip_adding_dest
- q0s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q1s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q12s16 = vaddq_s16(q0s16, q15s16);
- q13s16 = vaddq_s16(q1s16, q14s16);
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- vst1_u64((uint64_t *)out, d24u64);
- out += 4;
- vst1_u64((uint64_t *)out, d25u64);
- out += 12;
- vst1_u64((uint64_t *)out, d26u64);
- out += 4;
- vst1_u64((uint64_t *)out, d27u64);
- out += 12;
- q14s16 = vsubq_s16(q1s16, q14s16);
- q15s16 = vsubq_s16(q0s16, q15s16);
-
- q10s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q11s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q12s16 = vaddq_s16(q10s16, q5s16);
- q13s16 = vaddq_s16(q11s16, q4s16);
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- vst1_u64((uint64_t *)out, d24u64);
- out += 4;
- vst1_u64((uint64_t *)out, d25u64);
- out += 12;
- vst1_u64((uint64_t *)out, d26u64);
- out += 4;
- vst1_u64((uint64_t *)out, d27u64);
- out += 12;
- q4s16 = vsubq_s16(q11s16, q4s16);
- q5s16 = vsubq_s16(q10s16, q5s16);
-
- q0s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q1s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q12s16 = vaddq_s16(q0s16, q3s16);
- q13s16 = vaddq_s16(q1s16, q2s16);
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- vst1_u64((uint64_t *)out, d24u64);
- out += 4;
- vst1_u64((uint64_t *)out, d25u64);
- out += 12;
- vst1_u64((uint64_t *)out, d26u64);
- out += 4;
- vst1_u64((uint64_t *)out, d27u64);
- out += 12;
- q2s16 = vsubq_s16(q1s16, q2s16);
- q3s16 = vsubq_s16(q0s16, q3s16);
-
- q10s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q11s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q12s16 = vaddq_s16(q10s16, q9s16);
- q13s16 = vaddq_s16(q11s16, q8s16);
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- vst1_u64((uint64_t *)out, d24u64);
- out += 4;
- vst1_u64((uint64_t *)out, d25u64);
- out += 12;
- vst1_u64((uint64_t *)out, d26u64);
- out += 4;
- vst1_u64((uint64_t *)out, d27u64);
- out += 12;
- q8s16 = vsubq_s16(q11s16, q8s16);
- q9s16 = vsubq_s16(q10s16, q9s16);
-
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_low_s16(q8s16)));
- out += 4;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_high_s16(q8s16)));
- out += 12;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_low_s16(q9s16)));
- out += 4;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_high_s16(q9s16)));
- out += 12;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_low_s16(q2s16)));
- out += 4;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_high_s16(q2s16)));
- out += 12;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_low_s16(q3s16)));
- out += 4;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_high_s16(q3s16)));
- out += 12;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_low_s16(q4s16)));
- out += 4;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_high_s16(q4s16)));
- out += 12;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_low_s16(q5s16)));
- out += 4;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_high_s16(q5s16)));
- out += 12;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_low_s16(q14s16)));
- out += 4;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_high_s16(q14s16)));
- out += 12;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_low_s16(q15s16)));
- out += 4;
- vst1_u64((uint64_t *)out, vreinterpret_u64_s16(vget_high_s16(q15s16)));
- }
- return;
-}
-
-void vpx_idct16x16_10_add_neon_pass1(
- int16_t *in,
- int16_t *out,
- int output_stride) {
- int16x4_t d4s16;
- int16x4_t d8s16, d9s16, d10s16, d11s16, d12s16, d13s16, d14s16, d15s16;
- uint64x1_t d4u64, d5u64, d18u64, d19u64, d20u64, d21u64, d22u64, d23u64;
- uint64x1_t d24u64, d25u64, d26u64, d27u64, d28u64, d29u64, d30u64, d31u64;
- int16x8_t q0s16, q1s16, q2s16, q4s16, q5s16, q6s16, q7s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- int32x4_t q6s32, q9s32;
- int32x4_t q10s32, q11s32, q12s32, q15s32;
- int16x8x2_t q0x2s16;
-
- q0x2s16 = vld2q_s16(in);
- q8s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q9s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q10s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q11s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q12s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q13s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q14s16 = q0x2s16.val[0];
- in += 16;
- q0x2s16 = vld2q_s16(in);
- q15s16 = q0x2s16.val[0];
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // stage 3
- q0s16 = vdupq_n_s16(cospi_28_64 * 2);
- q1s16 = vdupq_n_s16(cospi_4_64 * 2);
-
- q4s16 = vqrdmulhq_s16(q9s16, q0s16);
- q7s16 = vqrdmulhq_s16(q9s16, q1s16);
-
- // stage 4
- q1s16 = vdupq_n_s16(cospi_16_64 * 2);
- d4s16 = vdup_n_s16(cospi_16_64);
-
- q8s16 = vqrdmulhq_s16(q8s16, q1s16);
-
- d8s16 = vget_low_s16(q4s16);
- d9s16 = vget_high_s16(q4s16);
- d14s16 = vget_low_s16(q7s16);
- d15s16 = vget_high_s16(q7s16);
- q9s32 = vmull_s16(d14s16, d4s16);
- q10s32 = vmull_s16(d15s16, d4s16);
- q12s32 = vmull_s16(d9s16, d4s16);
- q11s32 = vmull_s16(d8s16, d4s16);
-
- q15s32 = vsubq_s32(q10s32, q12s32);
- q6s32 = vsubq_s32(q9s32, q11s32);
- q9s32 = vaddq_s32(q9s32, q11s32);
- q10s32 = vaddq_s32(q10s32, q12s32);
-
- d11s16 = vqrshrn_n_s32(q15s32, 14);
- d10s16 = vqrshrn_n_s32(q6s32, 14);
- d12s16 = vqrshrn_n_s32(q9s32, 14);
- d13s16 = vqrshrn_n_s32(q10s32, 14);
- q5s16 = vcombine_s16(d10s16, d11s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- // stage 6
- q2s16 = vaddq_s16(q8s16, q7s16);
- q9s16 = vaddq_s16(q8s16, q6s16);
- q10s16 = vaddq_s16(q8s16, q5s16);
- q11s16 = vaddq_s16(q8s16, q4s16);
- q12s16 = vsubq_s16(q8s16, q4s16);
- q13s16 = vsubq_s16(q8s16, q5s16);
- q14s16 = vsubq_s16(q8s16, q6s16);
- q15s16 = vsubq_s16(q8s16, q7s16);
-
- d4u64 = vreinterpret_u64_s16(vget_low_s16(q2s16));
- d5u64 = vreinterpret_u64_s16(vget_high_s16(q2s16));
- d18u64 = vreinterpret_u64_s16(vget_low_s16(q9s16));
- d19u64 = vreinterpret_u64_s16(vget_high_s16(q9s16));
- d20u64 = vreinterpret_u64_s16(vget_low_s16(q10s16));
- d21u64 = vreinterpret_u64_s16(vget_high_s16(q10s16));
- d22u64 = vreinterpret_u64_s16(vget_low_s16(q11s16));
- d23u64 = vreinterpret_u64_s16(vget_high_s16(q11s16));
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- d28u64 = vreinterpret_u64_s16(vget_low_s16(q14s16));
- d29u64 = vreinterpret_u64_s16(vget_high_s16(q14s16));
- d30u64 = vreinterpret_u64_s16(vget_low_s16(q15s16));
- d31u64 = vreinterpret_u64_s16(vget_high_s16(q15s16));
-
- // store the data
- output_stride >>= 1; // output_stride / 2, out is int16_t
- vst1_u64((uint64_t *)out, d4u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d5u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d18u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d19u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d20u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d21u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d22u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d23u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d24u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d25u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d26u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d27u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d28u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d29u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d30u64);
- out += output_stride;
- vst1_u64((uint64_t *)out, d31u64);
- return;
-}
-
-void vpx_idct16x16_10_add_neon_pass2(
- int16_t *src,
- int16_t *out,
- int16_t *pass1Output,
- int16_t skip_adding,
- uint8_t *dest,
- int dest_stride) {
- int16x4_t d0s16, d1s16, d2s16, d3s16, d4s16, d5s16, d6s16, d7s16;
- int16x4_t d8s16, d9s16, d10s16, d11s16, d12s16, d13s16, d14s16, d15s16;
- int16x4_t d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d30s16, d31s16;
- uint64x1_t d4u64, d5u64, d6u64, d7u64, d8u64, d9u64, d10u64, d11u64;
- uint64x1_t d16u64, d17u64, d18u64, d19u64;
- uint64x1_t d24u64, d25u64, d26u64, d27u64, d28u64, d29u64, d30u64, d31u64;
- int16x8_t q0s16, q1s16, q2s16, q3s16, q4s16, q5s16, q6s16, q7s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- int32x4_t q0s32, q1s32, q2s32, q3s32, q4s32, q5s32, q6s32, q8s32, q9s32;
- int32x4_t q10s32, q11s32, q12s32, q13s32;
- int16x8x2_t q0x2s16;
- (void)skip_adding;
- (void)dest;
- (void)dest_stride;
-
- q0x2s16 = vld2q_s16(src);
- q8s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q9s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q10s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q11s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q12s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q13s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q14s16 = q0x2s16.val[0];
- src += 16;
- q0x2s16 = vld2q_s16(src);
- q15s16 = q0x2s16.val[0];
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // stage 3
- q6s16 = vdupq_n_s16(cospi_30_64 * 2);
- q0s16 = vqrdmulhq_s16(q8s16, q6s16);
- q6s16 = vdupq_n_s16(cospi_2_64 * 2);
- q7s16 = vqrdmulhq_s16(q8s16, q6s16);
-
- q15s16 = vdupq_n_s16(-cospi_26_64 * 2);
- q14s16 = vdupq_n_s16(cospi_6_64 * 2);
- q3s16 = vqrdmulhq_s16(q9s16, q15s16);
- q4s16 = vqrdmulhq_s16(q9s16, q14s16);
-
- // stage 4
- d0s16 = vget_low_s16(q0s16);
- d1s16 = vget_high_s16(q0s16);
- d6s16 = vget_low_s16(q3s16);
- d7s16 = vget_high_s16(q3s16);
- d8s16 = vget_low_s16(q4s16);
- d9s16 = vget_high_s16(q4s16);
- d14s16 = vget_low_s16(q7s16);
- d15s16 = vget_high_s16(q7s16);
-
- d30s16 = vdup_n_s16(cospi_8_64);
- d31s16 = vdup_n_s16(cospi_24_64);
-
- q12s32 = vmull_s16(d14s16, d31s16);
- q5s32 = vmull_s16(d15s16, d31s16);
- q2s32 = vmull_s16(d0s16, d31s16);
- q11s32 = vmull_s16(d1s16, d31s16);
-
- q12s32 = vmlsl_s16(q12s32, d0s16, d30s16);
- q5s32 = vmlsl_s16(q5s32, d1s16, d30s16);
- q2s32 = vmlal_s16(q2s32, d14s16, d30s16);
- q11s32 = vmlal_s16(q11s32, d15s16, d30s16);
-
- d2s16 = vqrshrn_n_s32(q12s32, 14);
- d3s16 = vqrshrn_n_s32(q5s32, 14);
- d12s16 = vqrshrn_n_s32(q2s32, 14);
- d13s16 = vqrshrn_n_s32(q11s32, 14);
- q1s16 = vcombine_s16(d2s16, d3s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- d30s16 = vdup_n_s16(-cospi_8_64);
- q10s32 = vmull_s16(d8s16, d30s16);
- q13s32 = vmull_s16(d9s16, d30s16);
- q8s32 = vmull_s16(d6s16, d30s16);
- q9s32 = vmull_s16(d7s16, d30s16);
-
- q10s32 = vmlsl_s16(q10s32, d6s16, d31s16);
- q13s32 = vmlsl_s16(q13s32, d7s16, d31s16);
- q8s32 = vmlal_s16(q8s32, d8s16, d31s16);
- q9s32 = vmlal_s16(q9s32, d9s16, d31s16);
-
- d4s16 = vqrshrn_n_s32(q10s32, 14);
- d5s16 = vqrshrn_n_s32(q13s32, 14);
- d10s16 = vqrshrn_n_s32(q8s32, 14);
- d11s16 = vqrshrn_n_s32(q9s32, 14);
- q2s16 = vcombine_s16(d4s16, d5s16);
- q5s16 = vcombine_s16(d10s16, d11s16);
-
- // stage 5
- q8s16 = vaddq_s16(q0s16, q3s16);
- q9s16 = vaddq_s16(q1s16, q2s16);
- q10s16 = vsubq_s16(q1s16, q2s16);
- q11s16 = vsubq_s16(q0s16, q3s16);
- q12s16 = vsubq_s16(q7s16, q4s16);
- q13s16 = vsubq_s16(q6s16, q5s16);
- q14s16 = vaddq_s16(q6s16, q5s16);
- q15s16 = vaddq_s16(q7s16, q4s16);
-
- // stage 6
- d20s16 = vget_low_s16(q10s16);
- d21s16 = vget_high_s16(q10s16);
- d22s16 = vget_low_s16(q11s16);
- d23s16 = vget_high_s16(q11s16);
- d24s16 = vget_low_s16(q12s16);
- d25s16 = vget_high_s16(q12s16);
- d26s16 = vget_low_s16(q13s16);
- d27s16 = vget_high_s16(q13s16);
-
- d14s16 = vdup_n_s16(cospi_16_64);
- q3s32 = vmull_s16(d26s16, d14s16);
- q4s32 = vmull_s16(d27s16, d14s16);
- q0s32 = vmull_s16(d20s16, d14s16);
- q1s32 = vmull_s16(d21s16, d14s16);
-
- q5s32 = vsubq_s32(q3s32, q0s32);
- q6s32 = vsubq_s32(q4s32, q1s32);
- q0s32 = vaddq_s32(q3s32, q0s32);
- q4s32 = vaddq_s32(q4s32, q1s32);
-
- d4s16 = vqrshrn_n_s32(q5s32, 14);
- d5s16 = vqrshrn_n_s32(q6s32, 14);
- d10s16 = vqrshrn_n_s32(q0s32, 14);
- d11s16 = vqrshrn_n_s32(q4s32, 14);
- q2s16 = vcombine_s16(d4s16, d5s16);
- q5s16 = vcombine_s16(d10s16, d11s16);
-
- q0s32 = vmull_s16(d22s16, d14s16);
- q1s32 = vmull_s16(d23s16, d14s16);
- q13s32 = vmull_s16(d24s16, d14s16);
- q6s32 = vmull_s16(d25s16, d14s16);
-
- q10s32 = vsubq_s32(q13s32, q0s32);
- q4s32 = vsubq_s32(q6s32, q1s32);
- q13s32 = vaddq_s32(q13s32, q0s32);
- q6s32 = vaddq_s32(q6s32, q1s32);
-
- d6s16 = vqrshrn_n_s32(q10s32, 14);
- d7s16 = vqrshrn_n_s32(q4s32, 14);
- d8s16 = vqrshrn_n_s32(q13s32, 14);
- d9s16 = vqrshrn_n_s32(q6s32, 14);
- q3s16 = vcombine_s16(d6s16, d7s16);
- q4s16 = vcombine_s16(d8s16, d9s16);
-
- // stage 7
- q0s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q1s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q12s16 = vaddq_s16(q0s16, q15s16);
- q13s16 = vaddq_s16(q1s16, q14s16);
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- vst1_u64((uint64_t *)out, d24u64);
- out += 4;
- vst1_u64((uint64_t *)out, d25u64);
- out += 12;
- vst1_u64((uint64_t *)out, d26u64);
- out += 4;
- vst1_u64((uint64_t *)out, d27u64);
- out += 12;
- q14s16 = vsubq_s16(q1s16, q14s16);
- q15s16 = vsubq_s16(q0s16, q15s16);
-
- q10s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q11s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q12s16 = vaddq_s16(q10s16, q5s16);
- q13s16 = vaddq_s16(q11s16, q4s16);
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- vst1_u64((uint64_t *)out, d24u64);
- out += 4;
- vst1_u64((uint64_t *)out, d25u64);
- out += 12;
- vst1_u64((uint64_t *)out, d26u64);
- out += 4;
- vst1_u64((uint64_t *)out, d27u64);
- out += 12;
- q4s16 = vsubq_s16(q11s16, q4s16);
- q5s16 = vsubq_s16(q10s16, q5s16);
-
- q0s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q1s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q12s16 = vaddq_s16(q0s16, q3s16);
- q13s16 = vaddq_s16(q1s16, q2s16);
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- vst1_u64((uint64_t *)out, d24u64);
- out += 4;
- vst1_u64((uint64_t *)out, d25u64);
- out += 12;
- vst1_u64((uint64_t *)out, d26u64);
- out += 4;
- vst1_u64((uint64_t *)out, d27u64);
- out += 12;
- q2s16 = vsubq_s16(q1s16, q2s16);
- q3s16 = vsubq_s16(q0s16, q3s16);
-
- q10s16 = vld1q_s16(pass1Output);
- pass1Output += 8;
- q11s16 = vld1q_s16(pass1Output);
- q12s16 = vaddq_s16(q10s16, q9s16);
- q13s16 = vaddq_s16(q11s16, q8s16);
- d24u64 = vreinterpret_u64_s16(vget_low_s16(q12s16));
- d25u64 = vreinterpret_u64_s16(vget_high_s16(q12s16));
- d26u64 = vreinterpret_u64_s16(vget_low_s16(q13s16));
- d27u64 = vreinterpret_u64_s16(vget_high_s16(q13s16));
- vst1_u64((uint64_t *)out, d24u64);
- out += 4;
- vst1_u64((uint64_t *)out, d25u64);
- out += 12;
- vst1_u64((uint64_t *)out, d26u64);
- out += 4;
- vst1_u64((uint64_t *)out, d27u64);
- out += 12;
- q8s16 = vsubq_s16(q11s16, q8s16);
- q9s16 = vsubq_s16(q10s16, q9s16);
-
- d4u64 = vreinterpret_u64_s16(vget_low_s16(q2s16));
- d5u64 = vreinterpret_u64_s16(vget_high_s16(q2s16));
- d6u64 = vreinterpret_u64_s16(vget_low_s16(q3s16));
- d7u64 = vreinterpret_u64_s16(vget_high_s16(q3s16));
- d8u64 = vreinterpret_u64_s16(vget_low_s16(q4s16));
- d9u64 = vreinterpret_u64_s16(vget_high_s16(q4s16));
- d10u64 = vreinterpret_u64_s16(vget_low_s16(q5s16));
- d11u64 = vreinterpret_u64_s16(vget_high_s16(q5s16));
- d16u64 = vreinterpret_u64_s16(vget_low_s16(q8s16));
- d17u64 = vreinterpret_u64_s16(vget_high_s16(q8s16));
- d18u64 = vreinterpret_u64_s16(vget_low_s16(q9s16));
- d19u64 = vreinterpret_u64_s16(vget_high_s16(q9s16));
- d28u64 = vreinterpret_u64_s16(vget_low_s16(q14s16));
- d29u64 = vreinterpret_u64_s16(vget_high_s16(q14s16));
- d30u64 = vreinterpret_u64_s16(vget_low_s16(q15s16));
- d31u64 = vreinterpret_u64_s16(vget_high_s16(q15s16));
-
- vst1_u64((uint64_t *)out, d16u64);
- out += 4;
- vst1_u64((uint64_t *)out, d17u64);
- out += 12;
- vst1_u64((uint64_t *)out, d18u64);
- out += 4;
- vst1_u64((uint64_t *)out, d19u64);
- out += 12;
- vst1_u64((uint64_t *)out, d4u64);
- out += 4;
- vst1_u64((uint64_t *)out, d5u64);
- out += 12;
- vst1_u64((uint64_t *)out, d6u64);
- out += 4;
- vst1_u64((uint64_t *)out, d7u64);
- out += 12;
- vst1_u64((uint64_t *)out, d8u64);
- out += 4;
- vst1_u64((uint64_t *)out, d9u64);
- out += 12;
- vst1_u64((uint64_t *)out, d10u64);
- out += 4;
- vst1_u64((uint64_t *)out, d11u64);
- out += 12;
- vst1_u64((uint64_t *)out, d28u64);
- out += 4;
- vst1_u64((uint64_t *)out, d29u64);
- out += 12;
- vst1_u64((uint64_t *)out, d30u64);
- out += 4;
- vst1_u64((uint64_t *)out, d31u64);
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct16x16_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct16x16_neon.c
deleted file mode 100644
index 352979aa16..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct16x16_neon.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "vpx_dsp/vpx_dsp_common.h"
-
-void vpx_idct16x16_256_add_neon_pass1(const int16_t *input,
- int16_t *output,
- int output_stride);
-void vpx_idct16x16_256_add_neon_pass2(const int16_t *src,
- int16_t *output,
- int16_t *pass1Output,
- int16_t skip_adding,
- uint8_t *dest,
- int dest_stride);
-void vpx_idct16x16_10_add_neon_pass1(const int16_t *input,
- int16_t *output,
- int output_stride);
-void vpx_idct16x16_10_add_neon_pass2(const int16_t *src,
- int16_t *output,
- int16_t *pass1Output,
- int16_t skip_adding,
- uint8_t *dest,
- int dest_stride);
-
-#if HAVE_NEON_ASM
-/* For ARM NEON, d8-d15 are callee-saved registers, and need to be saved. */
-extern void vpx_push_neon(int64_t *store);
-extern void vpx_pop_neon(int64_t *store);
-#endif // HAVE_NEON_ASM
-
-void vpx_idct16x16_256_add_neon(const int16_t *input,
- uint8_t *dest, int dest_stride) {
-#if HAVE_NEON_ASM
- int64_t store_reg[8];
-#endif
- int16_t pass1_output[16*16] = {0};
- int16_t row_idct_output[16*16] = {0};
-
-#if HAVE_NEON_ASM
- // save d8-d15 register values.
- vpx_push_neon(store_reg);
-#endif
-
- /* Parallel idct on the upper 8 rows */
- // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
- // stage 6 result in pass1_output.
- vpx_idct16x16_256_add_neon_pass1(input, pass1_output, 8);
-
- // Second pass processes odd elements 1, 3, 5, 7, 9, 11, 13, 15 and combines
- // with result in pass1(pass1_output) to calculate final result in stage 7
- // which will be saved into row_idct_output.
- vpx_idct16x16_256_add_neon_pass2(input+1,
- row_idct_output,
- pass1_output,
- 0,
- dest,
- dest_stride);
-
- /* Parallel idct on the lower 8 rows */
- // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
- // stage 6 result in pass1_output.
- vpx_idct16x16_256_add_neon_pass1(input+8*16, pass1_output, 8);
-
- // Second pass processes odd elements 1, 3, 5, 7, 9, 11, 13, 15 and combines
- // with result in pass1(pass1_output) to calculate final result in stage 7
- // which will be saved into row_idct_output.
- vpx_idct16x16_256_add_neon_pass2(input+8*16+1,
- row_idct_output+8,
- pass1_output,
- 0,
- dest,
- dest_stride);
-
- /* Parallel idct on the left 8 columns */
- // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
- // stage 6 result in pass1_output.
- vpx_idct16x16_256_add_neon_pass1(row_idct_output, pass1_output, 8);
-
- // Second pass processes odd elements 1, 3, 5, 7, 9, 11, 13, 15 and combines
- // with result in pass1(pass1_output) to calculate final result in stage 7.
- // Then add the result to the destination data.
- vpx_idct16x16_256_add_neon_pass2(row_idct_output+1,
- row_idct_output,
- pass1_output,
- 1,
- dest,
- dest_stride);
-
- /* Parallel idct on the right 8 columns */
- // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
- // stage 6 result in pass1_output.
- vpx_idct16x16_256_add_neon_pass1(row_idct_output+8*16, pass1_output, 8);
-
- // Second pass processes odd elements 1, 3, 5, 7, 9, 11, 13, 15 and combines
- // with result in pass1(pass1_output) to calculate final result in stage 7.
- // Then add the result to the destination data.
- vpx_idct16x16_256_add_neon_pass2(row_idct_output+8*16+1,
- row_idct_output+8,
- pass1_output,
- 1,
- dest+8,
- dest_stride);
-
-#if HAVE_NEON_ASM
- // restore d8-d15 register values.
- vpx_pop_neon(store_reg);
-#endif
-
- return;
-}
-
-void vpx_idct16x16_10_add_neon(const int16_t *input,
- uint8_t *dest, int dest_stride) {
-#if HAVE_NEON_ASM
- int64_t store_reg[8];
-#endif
- int16_t pass1_output[16*16] = {0};
- int16_t row_idct_output[16*16] = {0};
-
-#if HAVE_NEON_ASM
- // save d8-d15 register values.
- vpx_push_neon(store_reg);
-#endif
-
- /* Parallel idct on the upper 8 rows */
- // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
- // stage 6 result in pass1_output.
- vpx_idct16x16_10_add_neon_pass1(input, pass1_output, 8);
-
- // Second pass processes odd elements 1, 3, 5, 7, 9, 11, 13, 15 and combines
- // with result in pass1(pass1_output) to calculate final result in stage 7
- // which will be saved into row_idct_output.
- vpx_idct16x16_10_add_neon_pass2(input+1,
- row_idct_output,
- pass1_output,
- 0,
- dest,
- dest_stride);
-
- /* Skip Parallel idct on the lower 8 rows as they are all 0s */
-
- /* Parallel idct on the left 8 columns */
- // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
- // stage 6 result in pass1_output.
- vpx_idct16x16_256_add_neon_pass1(row_idct_output, pass1_output, 8);
-
- // Second pass processes odd elements 1, 3, 5, 7, 9, 11, 13, 15 and combines
- // with result in pass1(pass1_output) to calculate final result in stage 7.
- // Then add the result to the destination data.
- vpx_idct16x16_256_add_neon_pass2(row_idct_output+1,
- row_idct_output,
- pass1_output,
- 1,
- dest,
- dest_stride);
-
- /* Parallel idct on the right 8 columns */
- // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
- // stage 6 result in pass1_output.
- vpx_idct16x16_256_add_neon_pass1(row_idct_output+8*16, pass1_output, 8);
-
- // Second pass processes odd elements 1, 3, 5, 7, 9, 11, 13, 15 and combines
- // with result in pass1(pass1_output) to calculate final result in stage 7.
- // Then add the result to the destination data.
- vpx_idct16x16_256_add_neon_pass2(row_idct_output+8*16+1,
- row_idct_output+8,
- pass1_output,
- 1,
- dest+8,
- dest_stride);
-
-#if HAVE_NEON_ASM
- // restore d8-d15 register values.
- vpx_pop_neon(store_reg);
-#endif
-
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct32x32_1_add_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct32x32_1_add_neon.c
deleted file mode 100644
index c25c0c4a5c..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct32x32_1_add_neon.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_config.h"
-
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
-
-static INLINE void LD_16x8(
- uint8_t *d,
- int d_stride,
- uint8x16_t *q8u8,
- uint8x16_t *q9u8,
- uint8x16_t *q10u8,
- uint8x16_t *q11u8,
- uint8x16_t *q12u8,
- uint8x16_t *q13u8,
- uint8x16_t *q14u8,
- uint8x16_t *q15u8) {
- *q8u8 = vld1q_u8(d);
- d += d_stride;
- *q9u8 = vld1q_u8(d);
- d += d_stride;
- *q10u8 = vld1q_u8(d);
- d += d_stride;
- *q11u8 = vld1q_u8(d);
- d += d_stride;
- *q12u8 = vld1q_u8(d);
- d += d_stride;
- *q13u8 = vld1q_u8(d);
- d += d_stride;
- *q14u8 = vld1q_u8(d);
- d += d_stride;
- *q15u8 = vld1q_u8(d);
- return;
-}
-
-static INLINE void ADD_DIFF_16x8(
- uint8x16_t qdiffu8,
- uint8x16_t *q8u8,
- uint8x16_t *q9u8,
- uint8x16_t *q10u8,
- uint8x16_t *q11u8,
- uint8x16_t *q12u8,
- uint8x16_t *q13u8,
- uint8x16_t *q14u8,
- uint8x16_t *q15u8) {
- *q8u8 = vqaddq_u8(*q8u8, qdiffu8);
- *q9u8 = vqaddq_u8(*q9u8, qdiffu8);
- *q10u8 = vqaddq_u8(*q10u8, qdiffu8);
- *q11u8 = vqaddq_u8(*q11u8, qdiffu8);
- *q12u8 = vqaddq_u8(*q12u8, qdiffu8);
- *q13u8 = vqaddq_u8(*q13u8, qdiffu8);
- *q14u8 = vqaddq_u8(*q14u8, qdiffu8);
- *q15u8 = vqaddq_u8(*q15u8, qdiffu8);
- return;
-}
-
-static INLINE void SUB_DIFF_16x8(
- uint8x16_t qdiffu8,
- uint8x16_t *q8u8,
- uint8x16_t *q9u8,
- uint8x16_t *q10u8,
- uint8x16_t *q11u8,
- uint8x16_t *q12u8,
- uint8x16_t *q13u8,
- uint8x16_t *q14u8,
- uint8x16_t *q15u8) {
- *q8u8 = vqsubq_u8(*q8u8, qdiffu8);
- *q9u8 = vqsubq_u8(*q9u8, qdiffu8);
- *q10u8 = vqsubq_u8(*q10u8, qdiffu8);
- *q11u8 = vqsubq_u8(*q11u8, qdiffu8);
- *q12u8 = vqsubq_u8(*q12u8, qdiffu8);
- *q13u8 = vqsubq_u8(*q13u8, qdiffu8);
- *q14u8 = vqsubq_u8(*q14u8, qdiffu8);
- *q15u8 = vqsubq_u8(*q15u8, qdiffu8);
- return;
-}
-
-static INLINE void ST_16x8(
- uint8_t *d,
- int d_stride,
- uint8x16_t *q8u8,
- uint8x16_t *q9u8,
- uint8x16_t *q10u8,
- uint8x16_t *q11u8,
- uint8x16_t *q12u8,
- uint8x16_t *q13u8,
- uint8x16_t *q14u8,
- uint8x16_t *q15u8) {
- vst1q_u8(d, *q8u8);
- d += d_stride;
- vst1q_u8(d, *q9u8);
- d += d_stride;
- vst1q_u8(d, *q10u8);
- d += d_stride;
- vst1q_u8(d, *q11u8);
- d += d_stride;
- vst1q_u8(d, *q12u8);
- d += d_stride;
- vst1q_u8(d, *q13u8);
- d += d_stride;
- vst1q_u8(d, *q14u8);
- d += d_stride;
- vst1q_u8(d, *q15u8);
- return;
-}
-
-void vpx_idct32x32_1_add_neon(
- int16_t *input,
- uint8_t *dest,
- int dest_stride) {
- uint8x16_t q0u8, q8u8, q9u8, q10u8, q11u8, q12u8, q13u8, q14u8, q15u8;
- int i, j, dest_stride8;
- uint8_t *d;
- int16_t a1, cospi_16_64 = 11585;
- int16_t out = dct_const_round_shift(input[0] * cospi_16_64);
-
- out = dct_const_round_shift(out * cospi_16_64);
- a1 = ROUND_POWER_OF_TWO(out, 6);
-
- dest_stride8 = dest_stride * 8;
- if (a1 >= 0) { // diff_positive_32_32
- a1 = a1 < 0 ? 0 : a1 > 255 ? 255 : a1;
- q0u8 = vdupq_n_u8(a1);
- for (i = 0; i < 2; i++, dest += 16) { // diff_positive_32_32_loop
- d = dest;
- for (j = 0; j < 4; j++) {
- LD_16x8(d, dest_stride, &q8u8, &q9u8, &q10u8, &q11u8,
- &q12u8, &q13u8, &q14u8, &q15u8);
- ADD_DIFF_16x8(q0u8, &q8u8, &q9u8, &q10u8, &q11u8,
- &q12u8, &q13u8, &q14u8, &q15u8);
- ST_16x8(d, dest_stride, &q8u8, &q9u8, &q10u8, &q11u8,
- &q12u8, &q13u8, &q14u8, &q15u8);
- d += dest_stride8;
- }
- }
- } else { // diff_negative_32_32
- a1 = -a1;
- a1 = a1 < 0 ? 0 : a1 > 255 ? 255 : a1;
- q0u8 = vdupq_n_u8(a1);
- for (i = 0; i < 2; i++, dest += 16) { // diff_negative_32_32_loop
- d = dest;
- for (j = 0; j < 4; j++) {
- LD_16x8(d, dest_stride, &q8u8, &q9u8, &q10u8, &q11u8,
- &q12u8, &q13u8, &q14u8, &q15u8);
- SUB_DIFF_16x8(q0u8, &q8u8, &q9u8, &q10u8, &q11u8,
- &q12u8, &q13u8, &q14u8, &q15u8);
- ST_16x8(d, dest_stride, &q8u8, &q9u8, &q10u8, &q11u8,
- &q12u8, &q13u8, &q14u8, &q15u8);
- d += dest_stride8;
- }
- }
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct32x32_add_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct32x32_add_neon.c
deleted file mode 100644
index 025437eb96..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct32x32_add_neon.c
+++ /dev/null
@@ -1,719 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
-
-#define LOAD_FROM_TRANSPOSED(prev, first, second) \
- q14s16 = vld1q_s16(trans_buf + first * 8); \
- q13s16 = vld1q_s16(trans_buf + second * 8);
-
-#define LOAD_FROM_OUTPUT(prev, first, second, qA, qB) \
- qA = vld1q_s16(out + first * 32); \
- qB = vld1q_s16(out + second * 32);
-
-#define STORE_IN_OUTPUT(prev, first, second, qA, qB) \
- vst1q_s16(out + first * 32, qA); \
- vst1q_s16(out + second * 32, qB);
-
-#define STORE_COMBINE_CENTER_RESULTS(r10, r9) \
- __STORE_COMBINE_CENTER_RESULTS(r10, r9, stride, \
- q6s16, q7s16, q8s16, q9s16);
-static INLINE void __STORE_COMBINE_CENTER_RESULTS(
- uint8_t *p1,
- uint8_t *p2,
- int stride,
- int16x8_t q6s16,
- int16x8_t q7s16,
- int16x8_t q8s16,
- int16x8_t q9s16) {
- int16x4_t d8s16, d9s16, d10s16, d11s16;
-
- d8s16 = vld1_s16((int16_t *)p1);
- p1 += stride;
- d11s16 = vld1_s16((int16_t *)p2);
- p2 -= stride;
- d9s16 = vld1_s16((int16_t *)p1);
- d10s16 = vld1_s16((int16_t *)p2);
-
- q7s16 = vrshrq_n_s16(q7s16, 6);
- q8s16 = vrshrq_n_s16(q8s16, 6);
- q9s16 = vrshrq_n_s16(q9s16, 6);
- q6s16 = vrshrq_n_s16(q6s16, 6);
-
- q7s16 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q7s16),
- vreinterpret_u8_s16(d9s16)));
- q8s16 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q8s16),
- vreinterpret_u8_s16(d10s16)));
- q9s16 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q9s16),
- vreinterpret_u8_s16(d11s16)));
- q6s16 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q6s16),
- vreinterpret_u8_s16(d8s16)));
-
- d9s16 = vreinterpret_s16_u8(vqmovun_s16(q7s16));
- d10s16 = vreinterpret_s16_u8(vqmovun_s16(q8s16));
- d11s16 = vreinterpret_s16_u8(vqmovun_s16(q9s16));
- d8s16 = vreinterpret_s16_u8(vqmovun_s16(q6s16));
-
- vst1_s16((int16_t *)p1, d9s16);
- p1 -= stride;
- vst1_s16((int16_t *)p2, d10s16);
- p2 += stride;
- vst1_s16((int16_t *)p1, d8s16);
- vst1_s16((int16_t *)p2, d11s16);
- return;
-}
-
-#define STORE_COMBINE_EXTREME_RESULTS(r7, r6); \
- __STORE_COMBINE_EXTREME_RESULTS(r7, r6, stride, \
- q4s16, q5s16, q6s16, q7s16);
-static INLINE void __STORE_COMBINE_EXTREME_RESULTS(
- uint8_t *p1,
- uint8_t *p2,
- int stride,
- int16x8_t q4s16,
- int16x8_t q5s16,
- int16x8_t q6s16,
- int16x8_t q7s16) {
- int16x4_t d4s16, d5s16, d6s16, d7s16;
-
- d4s16 = vld1_s16((int16_t *)p1);
- p1 += stride;
- d7s16 = vld1_s16((int16_t *)p2);
- p2 -= stride;
- d5s16 = vld1_s16((int16_t *)p1);
- d6s16 = vld1_s16((int16_t *)p2);
-
- q5s16 = vrshrq_n_s16(q5s16, 6);
- q6s16 = vrshrq_n_s16(q6s16, 6);
- q7s16 = vrshrq_n_s16(q7s16, 6);
- q4s16 = vrshrq_n_s16(q4s16, 6);
-
- q5s16 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q5s16),
- vreinterpret_u8_s16(d5s16)));
- q6s16 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q6s16),
- vreinterpret_u8_s16(d6s16)));
- q7s16 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q7s16),
- vreinterpret_u8_s16(d7s16)));
- q4s16 = vreinterpretq_s16_u16(vaddw_u8(vreinterpretq_u16_s16(q4s16),
- vreinterpret_u8_s16(d4s16)));
-
- d5s16 = vreinterpret_s16_u8(vqmovun_s16(q5s16));
- d6s16 = vreinterpret_s16_u8(vqmovun_s16(q6s16));
- d7s16 = vreinterpret_s16_u8(vqmovun_s16(q7s16));
- d4s16 = vreinterpret_s16_u8(vqmovun_s16(q4s16));
-
- vst1_s16((int16_t *)p1, d5s16);
- p1 -= stride;
- vst1_s16((int16_t *)p2, d6s16);
- p2 += stride;
- vst1_s16((int16_t *)p2, d7s16);
- vst1_s16((int16_t *)p1, d4s16);
- return;
-}
-
-#define DO_BUTTERFLY_STD(const_1, const_2, qA, qB) \
- DO_BUTTERFLY(q14s16, q13s16, const_1, const_2, qA, qB);
-static INLINE void DO_BUTTERFLY(
- int16x8_t q14s16,
- int16x8_t q13s16,
- int16_t first_const,
- int16_t second_const,
- int16x8_t *qAs16,
- int16x8_t *qBs16) {
- int16x4_t d30s16, d31s16;
- int32x4_t q8s32, q9s32, q10s32, q11s32, q12s32, q15s32;
- int16x4_t dCs16, dDs16, dAs16, dBs16;
-
- dCs16 = vget_low_s16(q14s16);
- dDs16 = vget_high_s16(q14s16);
- dAs16 = vget_low_s16(q13s16);
- dBs16 = vget_high_s16(q13s16);
-
- d30s16 = vdup_n_s16(first_const);
- d31s16 = vdup_n_s16(second_const);
-
- q8s32 = vmull_s16(dCs16, d30s16);
- q10s32 = vmull_s16(dAs16, d31s16);
- q9s32 = vmull_s16(dDs16, d30s16);
- q11s32 = vmull_s16(dBs16, d31s16);
- q12s32 = vmull_s16(dCs16, d31s16);
-
- q8s32 = vsubq_s32(q8s32, q10s32);
- q9s32 = vsubq_s32(q9s32, q11s32);
-
- q10s32 = vmull_s16(dDs16, d31s16);
- q11s32 = vmull_s16(dAs16, d30s16);
- q15s32 = vmull_s16(dBs16, d30s16);
-
- q11s32 = vaddq_s32(q12s32, q11s32);
- q10s32 = vaddq_s32(q10s32, q15s32);
-
- *qAs16 = vcombine_s16(vqrshrn_n_s32(q8s32, 14),
- vqrshrn_n_s32(q9s32, 14));
- *qBs16 = vcombine_s16(vqrshrn_n_s32(q11s32, 14),
- vqrshrn_n_s32(q10s32, 14));
- return;
-}
-
-static INLINE void idct32_transpose_pair(
- int16_t *input,
- int16_t *t_buf) {
- int16_t *in;
- int i;
- const int stride = 32;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- int32x4x2_t q0x2s32, q1x2s32, q2x2s32, q3x2s32;
- int16x8x2_t q0x2s16, q1x2s16, q2x2s16, q3x2s16;
-
- for (i = 0; i < 4; i++, input += 8) {
- in = input;
- q8s16 = vld1q_s16(in);
- in += stride;
- q9s16 = vld1q_s16(in);
- in += stride;
- q10s16 = vld1q_s16(in);
- in += stride;
- q11s16 = vld1q_s16(in);
- in += stride;
- q12s16 = vld1q_s16(in);
- in += stride;
- q13s16 = vld1q_s16(in);
- in += stride;
- q14s16 = vld1q_s16(in);
- in += stride;
- q15s16 = vld1q_s16(in);
-
- d16s16 = vget_low_s16(q8s16);
- d17s16 = vget_high_s16(q8s16);
- d18s16 = vget_low_s16(q9s16);
- d19s16 = vget_high_s16(q9s16);
- d20s16 = vget_low_s16(q10s16);
- d21s16 = vget_high_s16(q10s16);
- d22s16 = vget_low_s16(q11s16);
- d23s16 = vget_high_s16(q11s16);
- d24s16 = vget_low_s16(q12s16);
- d25s16 = vget_high_s16(q12s16);
- d26s16 = vget_low_s16(q13s16);
- d27s16 = vget_high_s16(q13s16);
- d28s16 = vget_low_s16(q14s16);
- d29s16 = vget_high_s16(q14s16);
- d30s16 = vget_low_s16(q15s16);
- d31s16 = vget_high_s16(q15s16);
-
- q8s16 = vcombine_s16(d16s16, d24s16); // vswp d17, d24
- q9s16 = vcombine_s16(d18s16, d26s16); // vswp d19, d26
- q10s16 = vcombine_s16(d20s16, d28s16); // vswp d21, d28
- q11s16 = vcombine_s16(d22s16, d30s16); // vswp d23, d30
- q12s16 = vcombine_s16(d17s16, d25s16);
- q13s16 = vcombine_s16(d19s16, d27s16);
- q14s16 = vcombine_s16(d21s16, d29s16);
- q15s16 = vcombine_s16(d23s16, d31s16);
-
- q0x2s32 = vtrnq_s32(vreinterpretq_s32_s16(q8s16),
- vreinterpretq_s32_s16(q10s16));
- q1x2s32 = vtrnq_s32(vreinterpretq_s32_s16(q9s16),
- vreinterpretq_s32_s16(q11s16));
- q2x2s32 = vtrnq_s32(vreinterpretq_s32_s16(q12s16),
- vreinterpretq_s32_s16(q14s16));
- q3x2s32 = vtrnq_s32(vreinterpretq_s32_s16(q13s16),
- vreinterpretq_s32_s16(q15s16));
-
- q0x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q0x2s32.val[0]), // q8
- vreinterpretq_s16_s32(q1x2s32.val[0])); // q9
- q1x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q0x2s32.val[1]), // q10
- vreinterpretq_s16_s32(q1x2s32.val[1])); // q11
- q2x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q2x2s32.val[0]), // q12
- vreinterpretq_s16_s32(q3x2s32.val[0])); // q13
- q3x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q2x2s32.val[1]), // q14
- vreinterpretq_s16_s32(q3x2s32.val[1])); // q15
-
- vst1q_s16(t_buf, q0x2s16.val[0]);
- t_buf += 8;
- vst1q_s16(t_buf, q0x2s16.val[1]);
- t_buf += 8;
- vst1q_s16(t_buf, q1x2s16.val[0]);
- t_buf += 8;
- vst1q_s16(t_buf, q1x2s16.val[1]);
- t_buf += 8;
- vst1q_s16(t_buf, q2x2s16.val[0]);
- t_buf += 8;
- vst1q_s16(t_buf, q2x2s16.val[1]);
- t_buf += 8;
- vst1q_s16(t_buf, q3x2s16.val[0]);
- t_buf += 8;
- vst1q_s16(t_buf, q3x2s16.val[1]);
- t_buf += 8;
- }
- return;
-}
-
-static INLINE void idct32_bands_end_1st_pass(
- int16_t *out,
- int16x8_t q2s16,
- int16x8_t q3s16,
- int16x8_t q6s16,
- int16x8_t q7s16,
- int16x8_t q8s16,
- int16x8_t q9s16,
- int16x8_t q10s16,
- int16x8_t q11s16,
- int16x8_t q12s16,
- int16x8_t q13s16,
- int16x8_t q14s16,
- int16x8_t q15s16) {
- int16x8_t q0s16, q1s16, q4s16, q5s16;
-
- STORE_IN_OUTPUT(17, 16, 17, q6s16, q7s16);
- STORE_IN_OUTPUT(17, 14, 15, q8s16, q9s16);
-
- LOAD_FROM_OUTPUT(15, 30, 31, q0s16, q1s16);
- q4s16 = vaddq_s16(q2s16, q1s16);
- q5s16 = vaddq_s16(q3s16, q0s16);
- q6s16 = vsubq_s16(q3s16, q0s16);
- q7s16 = vsubq_s16(q2s16, q1s16);
- STORE_IN_OUTPUT(31, 30, 31, q6s16, q7s16);
- STORE_IN_OUTPUT(31, 0, 1, q4s16, q5s16);
-
- LOAD_FROM_OUTPUT(1, 12, 13, q0s16, q1s16);
- q2s16 = vaddq_s16(q10s16, q1s16);
- q3s16 = vaddq_s16(q11s16, q0s16);
- q4s16 = vsubq_s16(q11s16, q0s16);
- q5s16 = vsubq_s16(q10s16, q1s16);
-
- LOAD_FROM_OUTPUT(13, 18, 19, q0s16, q1s16);
- q8s16 = vaddq_s16(q4s16, q1s16);
- q9s16 = vaddq_s16(q5s16, q0s16);
- q6s16 = vsubq_s16(q5s16, q0s16);
- q7s16 = vsubq_s16(q4s16, q1s16);
- STORE_IN_OUTPUT(19, 18, 19, q6s16, q7s16);
- STORE_IN_OUTPUT(19, 12, 13, q8s16, q9s16);
-
- LOAD_FROM_OUTPUT(13, 28, 29, q0s16, q1s16);
- q4s16 = vaddq_s16(q2s16, q1s16);
- q5s16 = vaddq_s16(q3s16, q0s16);
- q6s16 = vsubq_s16(q3s16, q0s16);
- q7s16 = vsubq_s16(q2s16, q1s16);
- STORE_IN_OUTPUT(29, 28, 29, q6s16, q7s16);
- STORE_IN_OUTPUT(29, 2, 3, q4s16, q5s16);
-
- LOAD_FROM_OUTPUT(3, 10, 11, q0s16, q1s16);
- q2s16 = vaddq_s16(q12s16, q1s16);
- q3s16 = vaddq_s16(q13s16, q0s16);
- q4s16 = vsubq_s16(q13s16, q0s16);
- q5s16 = vsubq_s16(q12s16, q1s16);
-
- LOAD_FROM_OUTPUT(11, 20, 21, q0s16, q1s16);
- q8s16 = vaddq_s16(q4s16, q1s16);
- q9s16 = vaddq_s16(q5s16, q0s16);
- q6s16 = vsubq_s16(q5s16, q0s16);
- q7s16 = vsubq_s16(q4s16, q1s16);
- STORE_IN_OUTPUT(21, 20, 21, q6s16, q7s16);
- STORE_IN_OUTPUT(21, 10, 11, q8s16, q9s16);
-
- LOAD_FROM_OUTPUT(11, 26, 27, q0s16, q1s16);
- q4s16 = vaddq_s16(q2s16, q1s16);
- q5s16 = vaddq_s16(q3s16, q0s16);
- q6s16 = vsubq_s16(q3s16, q0s16);
- q7s16 = vsubq_s16(q2s16, q1s16);
- STORE_IN_OUTPUT(27, 26, 27, q6s16, q7s16);
- STORE_IN_OUTPUT(27, 4, 5, q4s16, q5s16);
-
- LOAD_FROM_OUTPUT(5, 8, 9, q0s16, q1s16);
- q2s16 = vaddq_s16(q14s16, q1s16);
- q3s16 = vaddq_s16(q15s16, q0s16);
- q4s16 = vsubq_s16(q15s16, q0s16);
- q5s16 = vsubq_s16(q14s16, q1s16);
-
- LOAD_FROM_OUTPUT(9, 22, 23, q0s16, q1s16);
- q8s16 = vaddq_s16(q4s16, q1s16);
- q9s16 = vaddq_s16(q5s16, q0s16);
- q6s16 = vsubq_s16(q5s16, q0s16);
- q7s16 = vsubq_s16(q4s16, q1s16);
- STORE_IN_OUTPUT(23, 22, 23, q6s16, q7s16);
- STORE_IN_OUTPUT(23, 8, 9, q8s16, q9s16);
-
- LOAD_FROM_OUTPUT(9, 24, 25, q0s16, q1s16);
- q4s16 = vaddq_s16(q2s16, q1s16);
- q5s16 = vaddq_s16(q3s16, q0s16);
- q6s16 = vsubq_s16(q3s16, q0s16);
- q7s16 = vsubq_s16(q2s16, q1s16);
- STORE_IN_OUTPUT(25, 24, 25, q6s16, q7s16);
- STORE_IN_OUTPUT(25, 6, 7, q4s16, q5s16);
- return;
-}
-
-static INLINE void idct32_bands_end_2nd_pass(
- int16_t *out,
- uint8_t *dest,
- int stride,
- int16x8_t q2s16,
- int16x8_t q3s16,
- int16x8_t q6s16,
- int16x8_t q7s16,
- int16x8_t q8s16,
- int16x8_t q9s16,
- int16x8_t q10s16,
- int16x8_t q11s16,
- int16x8_t q12s16,
- int16x8_t q13s16,
- int16x8_t q14s16,
- int16x8_t q15s16) {
- uint8_t *r6 = dest + 31 * stride;
- uint8_t *r7 = dest/* + 0 * stride*/;
- uint8_t *r9 = dest + 15 * stride;
- uint8_t *r10 = dest + 16 * stride;
- int str2 = stride << 1;
- int16x8_t q0s16, q1s16, q4s16, q5s16;
-
- STORE_COMBINE_CENTER_RESULTS(r10, r9);
- r10 += str2; r9 -= str2;
-
- LOAD_FROM_OUTPUT(17, 30, 31, q0s16, q1s16)
- q4s16 = vaddq_s16(q2s16, q1s16);
- q5s16 = vaddq_s16(q3s16, q0s16);
- q6s16 = vsubq_s16(q3s16, q0s16);
- q7s16 = vsubq_s16(q2s16, q1s16);
- STORE_COMBINE_EXTREME_RESULTS(r7, r6);
- r7 += str2; r6 -= str2;
-
- LOAD_FROM_OUTPUT(31, 12, 13, q0s16, q1s16)
- q2s16 = vaddq_s16(q10s16, q1s16);
- q3s16 = vaddq_s16(q11s16, q0s16);
- q4s16 = vsubq_s16(q11s16, q0s16);
- q5s16 = vsubq_s16(q10s16, q1s16);
-
- LOAD_FROM_OUTPUT(13, 18, 19, q0s16, q1s16)
- q8s16 = vaddq_s16(q4s16, q1s16);
- q9s16 = vaddq_s16(q5s16, q0s16);
- q6s16 = vsubq_s16(q5s16, q0s16);
- q7s16 = vsubq_s16(q4s16, q1s16);
- STORE_COMBINE_CENTER_RESULTS(r10, r9);
- r10 += str2; r9 -= str2;
-
- LOAD_FROM_OUTPUT(19, 28, 29, q0s16, q1s16)
- q4s16 = vaddq_s16(q2s16, q1s16);
- q5s16 = vaddq_s16(q3s16, q0s16);
- q6s16 = vsubq_s16(q3s16, q0s16);
- q7s16 = vsubq_s16(q2s16, q1s16);
- STORE_COMBINE_EXTREME_RESULTS(r7, r6);
- r7 += str2; r6 -= str2;
-
- LOAD_FROM_OUTPUT(29, 10, 11, q0s16, q1s16)
- q2s16 = vaddq_s16(q12s16, q1s16);
- q3s16 = vaddq_s16(q13s16, q0s16);
- q4s16 = vsubq_s16(q13s16, q0s16);
- q5s16 = vsubq_s16(q12s16, q1s16);
-
- LOAD_FROM_OUTPUT(11, 20, 21, q0s16, q1s16)
- q8s16 = vaddq_s16(q4s16, q1s16);
- q9s16 = vaddq_s16(q5s16, q0s16);
- q6s16 = vsubq_s16(q5s16, q0s16);
- q7s16 = vsubq_s16(q4s16, q1s16);
- STORE_COMBINE_CENTER_RESULTS(r10, r9);
- r10 += str2; r9 -= str2;
-
- LOAD_FROM_OUTPUT(21, 26, 27, q0s16, q1s16)
- q4s16 = vaddq_s16(q2s16, q1s16);
- q5s16 = vaddq_s16(q3s16, q0s16);
- q6s16 = vsubq_s16(q3s16, q0s16);
- q7s16 = vsubq_s16(q2s16, q1s16);
- STORE_COMBINE_EXTREME_RESULTS(r7, r6);
- r7 += str2; r6 -= str2;
-
- LOAD_FROM_OUTPUT(27, 8, 9, q0s16, q1s16)
- q2s16 = vaddq_s16(q14s16, q1s16);
- q3s16 = vaddq_s16(q15s16, q0s16);
- q4s16 = vsubq_s16(q15s16, q0s16);
- q5s16 = vsubq_s16(q14s16, q1s16);
-
- LOAD_FROM_OUTPUT(9, 22, 23, q0s16, q1s16)
- q8s16 = vaddq_s16(q4s16, q1s16);
- q9s16 = vaddq_s16(q5s16, q0s16);
- q6s16 = vsubq_s16(q5s16, q0s16);
- q7s16 = vsubq_s16(q4s16, q1s16);
- STORE_COMBINE_CENTER_RESULTS(r10, r9);
-
- LOAD_FROM_OUTPUT(23, 24, 25, q0s16, q1s16)
- q4s16 = vaddq_s16(q2s16, q1s16);
- q5s16 = vaddq_s16(q3s16, q0s16);
- q6s16 = vsubq_s16(q3s16, q0s16);
- q7s16 = vsubq_s16(q2s16, q1s16);
- STORE_COMBINE_EXTREME_RESULTS(r7, r6);
- return;
-}
-
-void vpx_idct32x32_1024_add_neon(
- int16_t *input,
- uint8_t *dest,
- int stride) {
- int i, idct32_pass_loop;
- int16_t trans_buf[32 * 8];
- int16_t pass1[32 * 32];
- int16_t pass2[32 * 32];
- int16_t *out;
- int16x8_t q0s16, q1s16, q2s16, q3s16, q4s16, q5s16, q6s16, q7s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
-
- for (idct32_pass_loop = 0, out = pass1;
- idct32_pass_loop < 2;
- idct32_pass_loop++,
- input = pass1, // the input of pass2 is the result of pass1
- out = pass2) {
- for (i = 0;
- i < 4; i++,
- input += 32 * 8, out += 8) { // idct32_bands_loop
- idct32_transpose_pair(input, trans_buf);
-
- // -----------------------------------------
- // BLOCK A: 16-19,28-31
- // -----------------------------------------
- // generate 16,17,30,31
- // part of stage 1
- LOAD_FROM_TRANSPOSED(0, 1, 31)
- DO_BUTTERFLY_STD(cospi_31_64, cospi_1_64, &q0s16, &q2s16)
- LOAD_FROM_TRANSPOSED(31, 17, 15)
- DO_BUTTERFLY_STD(cospi_15_64, cospi_17_64, &q1s16, &q3s16)
- // part of stage 2
- q4s16 = vaddq_s16(q0s16, q1s16);
- q13s16 = vsubq_s16(q0s16, q1s16);
- q6s16 = vaddq_s16(q2s16, q3s16);
- q14s16 = vsubq_s16(q2s16, q3s16);
- // part of stage 3
- DO_BUTTERFLY_STD(cospi_28_64, cospi_4_64, &q5s16, &q7s16)
-
- // generate 18,19,28,29
- // part of stage 1
- LOAD_FROM_TRANSPOSED(15, 9, 23)
- DO_BUTTERFLY_STD(cospi_23_64, cospi_9_64, &q0s16, &q2s16)
- LOAD_FROM_TRANSPOSED(23, 25, 7)
- DO_BUTTERFLY_STD(cospi_7_64, cospi_25_64, &q1s16, &q3s16)
- // part of stage 2
- q13s16 = vsubq_s16(q3s16, q2s16);
- q3s16 = vaddq_s16(q3s16, q2s16);
- q14s16 = vsubq_s16(q1s16, q0s16);
- q2s16 = vaddq_s16(q1s16, q0s16);
- // part of stage 3
- DO_BUTTERFLY_STD(-cospi_4_64, -cospi_28_64, &q1s16, &q0s16)
- // part of stage 4
- q8s16 = vaddq_s16(q4s16, q2s16);
- q9s16 = vaddq_s16(q5s16, q0s16);
- q10s16 = vaddq_s16(q7s16, q1s16);
- q15s16 = vaddq_s16(q6s16, q3s16);
- q13s16 = vsubq_s16(q5s16, q0s16);
- q14s16 = vsubq_s16(q7s16, q1s16);
- STORE_IN_OUTPUT(0, 16, 31, q8s16, q15s16)
- STORE_IN_OUTPUT(31, 17, 30, q9s16, q10s16)
- // part of stage 5
- DO_BUTTERFLY_STD(cospi_24_64, cospi_8_64, &q0s16, &q1s16)
- STORE_IN_OUTPUT(30, 29, 18, q1s16, q0s16)
- // part of stage 4
- q13s16 = vsubq_s16(q4s16, q2s16);
- q14s16 = vsubq_s16(q6s16, q3s16);
- // part of stage 5
- DO_BUTTERFLY_STD(cospi_24_64, cospi_8_64, &q4s16, &q6s16)
- STORE_IN_OUTPUT(18, 19, 28, q4s16, q6s16)
-
- // -----------------------------------------
- // BLOCK B: 20-23,24-27
- // -----------------------------------------
- // generate 20,21,26,27
- // part of stage 1
- LOAD_FROM_TRANSPOSED(7, 5, 27)
- DO_BUTTERFLY_STD(cospi_27_64, cospi_5_64, &q0s16, &q2s16)
- LOAD_FROM_TRANSPOSED(27, 21, 11)
- DO_BUTTERFLY_STD(cospi_11_64, cospi_21_64, &q1s16, &q3s16)
- // part of stage 2
- q13s16 = vsubq_s16(q0s16, q1s16);
- q0s16 = vaddq_s16(q0s16, q1s16);
- q14s16 = vsubq_s16(q2s16, q3s16);
- q2s16 = vaddq_s16(q2s16, q3s16);
- // part of stage 3
- DO_BUTTERFLY_STD(cospi_12_64, cospi_20_64, &q1s16, &q3s16)
-
- // generate 22,23,24,25
- // part of stage 1
- LOAD_FROM_TRANSPOSED(11, 13, 19)
- DO_BUTTERFLY_STD(cospi_19_64, cospi_13_64, &q5s16, &q7s16)
- LOAD_FROM_TRANSPOSED(19, 29, 3)
- DO_BUTTERFLY_STD(cospi_3_64, cospi_29_64, &q4s16, &q6s16)
- // part of stage 2
- q14s16 = vsubq_s16(q4s16, q5s16);
- q5s16 = vaddq_s16(q4s16, q5s16);
- q13s16 = vsubq_s16(q6s16, q7s16);
- q6s16 = vaddq_s16(q6s16, q7s16);
- // part of stage 3
- DO_BUTTERFLY_STD(-cospi_20_64, -cospi_12_64, &q4s16, &q7s16)
- // part of stage 4
- q10s16 = vaddq_s16(q7s16, q1s16);
- q11s16 = vaddq_s16(q5s16, q0s16);
- q12s16 = vaddq_s16(q6s16, q2s16);
- q15s16 = vaddq_s16(q4s16, q3s16);
- // part of stage 6
- LOAD_FROM_OUTPUT(28, 16, 17, q14s16, q13s16)
- q8s16 = vaddq_s16(q14s16, q11s16);
- q9s16 = vaddq_s16(q13s16, q10s16);
- q13s16 = vsubq_s16(q13s16, q10s16);
- q11s16 = vsubq_s16(q14s16, q11s16);
- STORE_IN_OUTPUT(17, 17, 16, q9s16, q8s16)
- LOAD_FROM_OUTPUT(16, 30, 31, q14s16, q9s16)
- q8s16 = vsubq_s16(q9s16, q12s16);
- q10s16 = vaddq_s16(q14s16, q15s16);
- q14s16 = vsubq_s16(q14s16, q15s16);
- q12s16 = vaddq_s16(q9s16, q12s16);
- STORE_IN_OUTPUT(31, 30, 31, q10s16, q12s16)
- // part of stage 7
- DO_BUTTERFLY_STD(cospi_16_64, cospi_16_64, &q13s16, &q14s16)
- STORE_IN_OUTPUT(31, 25, 22, q14s16, q13s16)
- q13s16 = q11s16;
- q14s16 = q8s16;
- DO_BUTTERFLY_STD(cospi_16_64, cospi_16_64, &q13s16, &q14s16)
- STORE_IN_OUTPUT(22, 24, 23, q14s16, q13s16)
- // part of stage 4
- q14s16 = vsubq_s16(q5s16, q0s16);
- q13s16 = vsubq_s16(q6s16, q2s16);
- DO_BUTTERFLY_STD(-cospi_8_64, -cospi_24_64, &q5s16, &q6s16);
- q14s16 = vsubq_s16(q7s16, q1s16);
- q13s16 = vsubq_s16(q4s16, q3s16);
- DO_BUTTERFLY_STD(-cospi_8_64, -cospi_24_64, &q0s16, &q1s16);
- // part of stage 6
- LOAD_FROM_OUTPUT(23, 18, 19, q14s16, q13s16)
- q8s16 = vaddq_s16(q14s16, q1s16);
- q9s16 = vaddq_s16(q13s16, q6s16);
- q13s16 = vsubq_s16(q13s16, q6s16);
- q1s16 = vsubq_s16(q14s16, q1s16);
- STORE_IN_OUTPUT(19, 18, 19, q8s16, q9s16)
- LOAD_FROM_OUTPUT(19, 28, 29, q8s16, q9s16)
- q14s16 = vsubq_s16(q8s16, q5s16);
- q10s16 = vaddq_s16(q8s16, q5s16);
- q11s16 = vaddq_s16(q9s16, q0s16);
- q0s16 = vsubq_s16(q9s16, q0s16);
- STORE_IN_OUTPUT(29, 28, 29, q10s16, q11s16)
- // part of stage 7
- DO_BUTTERFLY_STD(cospi_16_64, cospi_16_64, &q13s16, &q14s16)
- STORE_IN_OUTPUT(29, 20, 27, q13s16, q14s16)
- DO_BUTTERFLY(q0s16, q1s16, cospi_16_64, cospi_16_64,
- &q1s16, &q0s16);
- STORE_IN_OUTPUT(27, 21, 26, q1s16, q0s16)
-
- // -----------------------------------------
- // BLOCK C: 8-10,11-15
- // -----------------------------------------
- // generate 8,9,14,15
- // part of stage 2
- LOAD_FROM_TRANSPOSED(3, 2, 30)
- DO_BUTTERFLY_STD(cospi_30_64, cospi_2_64, &q0s16, &q2s16)
- LOAD_FROM_TRANSPOSED(30, 18, 14)
- DO_BUTTERFLY_STD(cospi_14_64, cospi_18_64, &q1s16, &q3s16)
- // part of stage 3
- q13s16 = vsubq_s16(q0s16, q1s16);
- q0s16 = vaddq_s16(q0s16, q1s16);
- q14s16 = vsubq_s16(q2s16, q3s16);
- q2s16 = vaddq_s16(q2s16, q3s16);
- // part of stage 4
- DO_BUTTERFLY_STD(cospi_24_64, cospi_8_64, &q1s16, &q3s16)
-
- // generate 10,11,12,13
- // part of stage 2
- LOAD_FROM_TRANSPOSED(14, 10, 22)
- DO_BUTTERFLY_STD(cospi_22_64, cospi_10_64, &q5s16, &q7s16)
- LOAD_FROM_TRANSPOSED(22, 26, 6)
- DO_BUTTERFLY_STD(cospi_6_64, cospi_26_64, &q4s16, &q6s16)
- // part of stage 3
- q14s16 = vsubq_s16(q4s16, q5s16);
- q5s16 = vaddq_s16(q4s16, q5s16);
- q13s16 = vsubq_s16(q6s16, q7s16);
- q6s16 = vaddq_s16(q6s16, q7s16);
- // part of stage 4
- DO_BUTTERFLY_STD(-cospi_8_64, -cospi_24_64, &q4s16, &q7s16)
- // part of stage 5
- q8s16 = vaddq_s16(q0s16, q5s16);
- q9s16 = vaddq_s16(q1s16, q7s16);
- q13s16 = vsubq_s16(q1s16, q7s16);
- q14s16 = vsubq_s16(q3s16, q4s16);
- q10s16 = vaddq_s16(q3s16, q4s16);
- q15s16 = vaddq_s16(q2s16, q6s16);
- STORE_IN_OUTPUT(26, 8, 15, q8s16, q15s16)
- STORE_IN_OUTPUT(15, 9, 14, q9s16, q10s16)
- // part of stage 6
- DO_BUTTERFLY_STD(cospi_16_64, cospi_16_64, &q1s16, &q3s16)
- STORE_IN_OUTPUT(14, 13, 10, q3s16, q1s16)
- q13s16 = vsubq_s16(q0s16, q5s16);
- q14s16 = vsubq_s16(q2s16, q6s16);
- DO_BUTTERFLY_STD(cospi_16_64, cospi_16_64, &q1s16, &q3s16)
- STORE_IN_OUTPUT(10, 11, 12, q1s16, q3s16)
-
- // -----------------------------------------
- // BLOCK D: 0-3,4-7
- // -----------------------------------------
- // generate 4,5,6,7
- // part of stage 3
- LOAD_FROM_TRANSPOSED(6, 4, 28)
- DO_BUTTERFLY_STD(cospi_28_64, cospi_4_64, &q0s16, &q2s16)
- LOAD_FROM_TRANSPOSED(28, 20, 12)
- DO_BUTTERFLY_STD(cospi_12_64, cospi_20_64, &q1s16, &q3s16)
- // part of stage 4
- q13s16 = vsubq_s16(q0s16, q1s16);
- q0s16 = vaddq_s16(q0s16, q1s16);
- q14s16 = vsubq_s16(q2s16, q3s16);
- q2s16 = vaddq_s16(q2s16, q3s16);
- // part of stage 5
- DO_BUTTERFLY_STD(cospi_16_64, cospi_16_64, &q1s16, &q3s16)
-
- // generate 0,1,2,3
- // part of stage 4
- LOAD_FROM_TRANSPOSED(12, 0, 16)
- DO_BUTTERFLY_STD(cospi_16_64, cospi_16_64, &q5s16, &q7s16)
- LOAD_FROM_TRANSPOSED(16, 8, 24)
- DO_BUTTERFLY_STD(cospi_24_64, cospi_8_64, &q14s16, &q6s16)
- // part of stage 5
- q4s16 = vaddq_s16(q7s16, q6s16);
- q7s16 = vsubq_s16(q7s16, q6s16);
- q6s16 = vsubq_s16(q5s16, q14s16);
- q5s16 = vaddq_s16(q5s16, q14s16);
- // part of stage 6
- q8s16 = vaddq_s16(q4s16, q2s16);
- q9s16 = vaddq_s16(q5s16, q3s16);
- q10s16 = vaddq_s16(q6s16, q1s16);
- q11s16 = vaddq_s16(q7s16, q0s16);
- q12s16 = vsubq_s16(q7s16, q0s16);
- q13s16 = vsubq_s16(q6s16, q1s16);
- q14s16 = vsubq_s16(q5s16, q3s16);
- q15s16 = vsubq_s16(q4s16, q2s16);
- // part of stage 7
- LOAD_FROM_OUTPUT(12, 14, 15, q0s16, q1s16)
- q2s16 = vaddq_s16(q8s16, q1s16);
- q3s16 = vaddq_s16(q9s16, q0s16);
- q4s16 = vsubq_s16(q9s16, q0s16);
- q5s16 = vsubq_s16(q8s16, q1s16);
- LOAD_FROM_OUTPUT(15, 16, 17, q0s16, q1s16)
- q8s16 = vaddq_s16(q4s16, q1s16);
- q9s16 = vaddq_s16(q5s16, q0s16);
- q6s16 = vsubq_s16(q5s16, q0s16);
- q7s16 = vsubq_s16(q4s16, q1s16);
-
- if (idct32_pass_loop == 0) {
- idct32_bands_end_1st_pass(out,
- q2s16, q3s16, q6s16, q7s16, q8s16, q9s16,
- q10s16, q11s16, q12s16, q13s16, q14s16, q15s16);
- } else {
- idct32_bands_end_2nd_pass(out, dest, stride,
- q2s16, q3s16, q6s16, q7s16, q8s16, q9s16,
- q10s16, q11s16, q12s16, q13s16, q14s16, q15s16);
- dest += 8;
- }
- }
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct4x4_1_add_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct4x4_1_add_neon.c
deleted file mode 100644
index ea618700c9..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct4x4_1_add_neon.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
-
-void vpx_idct4x4_1_add_neon(
- int16_t *input,
- uint8_t *dest,
- int dest_stride) {
- uint8x8_t d6u8;
- uint32x2_t d2u32 = vdup_n_u32(0);
- uint16x8_t q8u16;
- int16x8_t q0s16;
- uint8_t *d1, *d2;
- int16_t i, a1, cospi_16_64 = 11585;
- int16_t out = dct_const_round_shift(input[0] * cospi_16_64);
- out = dct_const_round_shift(out * cospi_16_64);
- a1 = ROUND_POWER_OF_TWO(out, 4);
-
- q0s16 = vdupq_n_s16(a1);
-
- // dc_only_idct_add
- d1 = d2 = dest;
- for (i = 0; i < 2; i++) {
- d2u32 = vld1_lane_u32((const uint32_t *)d1, d2u32, 0);
- d1 += dest_stride;
- d2u32 = vld1_lane_u32((const uint32_t *)d1, d2u32, 1);
- d1 += dest_stride;
-
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q0s16),
- vreinterpret_u8_u32(d2u32));
- d6u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
-
- vst1_lane_u32((uint32_t *)d2, vreinterpret_u32_u8(d6u8), 0);
- d2 += dest_stride;
- vst1_lane_u32((uint32_t *)d2, vreinterpret_u32_u8(d6u8), 1);
- d2 += dest_stride;
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct4x4_add_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct4x4_add_neon.c
deleted file mode 100644
index 3c975c99b7..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct4x4_add_neon.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-void vpx_idct4x4_16_add_neon(
- int16_t *input,
- uint8_t *dest,
- int dest_stride) {
- uint8x8_t d26u8, d27u8;
- uint32x2_t d26u32, d27u32;
- uint16x8_t q8u16, q9u16;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16;
- int16x4_t d22s16, d23s16, d24s16, d26s16, d27s16, d28s16, d29s16;
- int16x8_t q8s16, q9s16, q13s16, q14s16;
- int32x4_t q1s32, q13s32, q14s32, q15s32;
- int16x4x2_t d0x2s16, d1x2s16;
- int32x4x2_t q0x2s32;
- uint8_t *d;
- int16_t cospi_8_64 = 15137;
- int16_t cospi_16_64 = 11585;
- int16_t cospi_24_64 = 6270;
-
- d26u32 = d27u32 = vdup_n_u32(0);
-
- q8s16 = vld1q_s16(input);
- q9s16 = vld1q_s16(input + 8);
-
- d16s16 = vget_low_s16(q8s16);
- d17s16 = vget_high_s16(q8s16);
- d18s16 = vget_low_s16(q9s16);
- d19s16 = vget_high_s16(q9s16);
-
- d0x2s16 = vtrn_s16(d16s16, d17s16);
- d1x2s16 = vtrn_s16(d18s16, d19s16);
- q8s16 = vcombine_s16(d0x2s16.val[0], d0x2s16.val[1]);
- q9s16 = vcombine_s16(d1x2s16.val[0], d1x2s16.val[1]);
-
- d20s16 = vdup_n_s16(cospi_8_64);
- d21s16 = vdup_n_s16(cospi_16_64);
-
- q0x2s32 = vtrnq_s32(vreinterpretq_s32_s16(q8s16),
- vreinterpretq_s32_s16(q9s16));
- d16s16 = vget_low_s16(vreinterpretq_s16_s32(q0x2s32.val[0]));
- d17s16 = vget_high_s16(vreinterpretq_s16_s32(q0x2s32.val[0]));
- d18s16 = vget_low_s16(vreinterpretq_s16_s32(q0x2s32.val[1]));
- d19s16 = vget_high_s16(vreinterpretq_s16_s32(q0x2s32.val[1]));
-
- d22s16 = vdup_n_s16(cospi_24_64);
-
- // stage 1
- d23s16 = vadd_s16(d16s16, d18s16);
- d24s16 = vsub_s16(d16s16, d18s16);
-
- q15s32 = vmull_s16(d17s16, d22s16);
- q1s32 = vmull_s16(d17s16, d20s16);
- q13s32 = vmull_s16(d23s16, d21s16);
- q14s32 = vmull_s16(d24s16, d21s16);
-
- q15s32 = vmlsl_s16(q15s32, d19s16, d20s16);
- q1s32 = vmlal_s16(q1s32, d19s16, d22s16);
-
- d26s16 = vqrshrn_n_s32(q13s32, 14);
- d27s16 = vqrshrn_n_s32(q14s32, 14);
- d29s16 = vqrshrn_n_s32(q15s32, 14);
- d28s16 = vqrshrn_n_s32(q1s32, 14);
- q13s16 = vcombine_s16(d26s16, d27s16);
- q14s16 = vcombine_s16(d28s16, d29s16);
-
- // stage 2
- q8s16 = vaddq_s16(q13s16, q14s16);
- q9s16 = vsubq_s16(q13s16, q14s16);
-
- d16s16 = vget_low_s16(q8s16);
- d17s16 = vget_high_s16(q8s16);
- d18s16 = vget_high_s16(q9s16); // vswp d18 d19
- d19s16 = vget_low_s16(q9s16);
-
- d0x2s16 = vtrn_s16(d16s16, d17s16);
- d1x2s16 = vtrn_s16(d18s16, d19s16);
- q8s16 = vcombine_s16(d0x2s16.val[0], d0x2s16.val[1]);
- q9s16 = vcombine_s16(d1x2s16.val[0], d1x2s16.val[1]);
-
- q0x2s32 = vtrnq_s32(vreinterpretq_s32_s16(q8s16),
- vreinterpretq_s32_s16(q9s16));
- d16s16 = vget_low_s16(vreinterpretq_s16_s32(q0x2s32.val[0]));
- d17s16 = vget_high_s16(vreinterpretq_s16_s32(q0x2s32.val[0]));
- d18s16 = vget_low_s16(vreinterpretq_s16_s32(q0x2s32.val[1]));
- d19s16 = vget_high_s16(vreinterpretq_s16_s32(q0x2s32.val[1]));
-
- // do the transform on columns
- // stage 1
- d23s16 = vadd_s16(d16s16, d18s16);
- d24s16 = vsub_s16(d16s16, d18s16);
-
- q15s32 = vmull_s16(d17s16, d22s16);
- q1s32 = vmull_s16(d17s16, d20s16);
- q13s32 = vmull_s16(d23s16, d21s16);
- q14s32 = vmull_s16(d24s16, d21s16);
-
- q15s32 = vmlsl_s16(q15s32, d19s16, d20s16);
- q1s32 = vmlal_s16(q1s32, d19s16, d22s16);
-
- d26s16 = vqrshrn_n_s32(q13s32, 14);
- d27s16 = vqrshrn_n_s32(q14s32, 14);
- d29s16 = vqrshrn_n_s32(q15s32, 14);
- d28s16 = vqrshrn_n_s32(q1s32, 14);
- q13s16 = vcombine_s16(d26s16, d27s16);
- q14s16 = vcombine_s16(d28s16, d29s16);
-
- // stage 2
- q8s16 = vaddq_s16(q13s16, q14s16);
- q9s16 = vsubq_s16(q13s16, q14s16);
-
- q8s16 = vrshrq_n_s16(q8s16, 4);
- q9s16 = vrshrq_n_s16(q9s16, 4);
-
- d = dest;
- d26u32 = vld1_lane_u32((const uint32_t *)d, d26u32, 0);
- d += dest_stride;
- d26u32 = vld1_lane_u32((const uint32_t *)d, d26u32, 1);
- d += dest_stride;
- d27u32 = vld1_lane_u32((const uint32_t *)d, d27u32, 1);
- d += dest_stride;
- d27u32 = vld1_lane_u32((const uint32_t *)d, d27u32, 0);
-
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q8s16),
- vreinterpret_u8_u32(d26u32));
- q9u16 = vaddw_u8(vreinterpretq_u16_s16(q9s16),
- vreinterpret_u8_u32(d27u32));
-
- d26u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
- d27u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
-
- d = dest;
- vst1_lane_u32((uint32_t *)d, vreinterpret_u32_u8(d26u8), 0);
- d += dest_stride;
- vst1_lane_u32((uint32_t *)d, vreinterpret_u32_u8(d26u8), 1);
- d += dest_stride;
- vst1_lane_u32((uint32_t *)d, vreinterpret_u32_u8(d27u8), 1);
- d += dest_stride;
- vst1_lane_u32((uint32_t *)d, vreinterpret_u32_u8(d27u8), 0);
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct8x8_1_add_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct8x8_1_add_neon.c
deleted file mode 100644
index c1b801fad5..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct8x8_1_add_neon.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
-
-void vpx_idct8x8_1_add_neon(
- int16_t *input,
- uint8_t *dest,
- int dest_stride) {
- uint8x8_t d2u8, d3u8, d30u8, d31u8;
- uint64x1_t d2u64, d3u64, d4u64, d5u64;
- uint16x8_t q0u16, q9u16, q10u16, q11u16, q12u16;
- int16x8_t q0s16;
- uint8_t *d1, *d2;
- int16_t i, a1, cospi_16_64 = 11585;
- int16_t out = dct_const_round_shift(input[0] * cospi_16_64);
- out = dct_const_round_shift(out * cospi_16_64);
- a1 = ROUND_POWER_OF_TWO(out, 5);
-
- q0s16 = vdupq_n_s16(a1);
- q0u16 = vreinterpretq_u16_s16(q0s16);
-
- d1 = d2 = dest;
- for (i = 0; i < 2; i++) {
- d2u64 = vld1_u64((const uint64_t *)d1);
- d1 += dest_stride;
- d3u64 = vld1_u64((const uint64_t *)d1);
- d1 += dest_stride;
- d4u64 = vld1_u64((const uint64_t *)d1);
- d1 += dest_stride;
- d5u64 = vld1_u64((const uint64_t *)d1);
- d1 += dest_stride;
-
- q9u16 = vaddw_u8(q0u16, vreinterpret_u8_u64(d2u64));
- q10u16 = vaddw_u8(q0u16, vreinterpret_u8_u64(d3u64));
- q11u16 = vaddw_u8(q0u16, vreinterpret_u8_u64(d4u64));
- q12u16 = vaddw_u8(q0u16, vreinterpret_u8_u64(d5u64));
-
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
- d3u8 = vqmovun_s16(vreinterpretq_s16_u16(q10u16));
- d30u8 = vqmovun_s16(vreinterpretq_s16_u16(q11u16));
- d31u8 = vqmovun_s16(vreinterpretq_s16_u16(q12u16));
-
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d2u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d3u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d30u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d31u8));
- d2 += dest_stride;
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/idct8x8_add_neon.c b/thirdparty/libvpx/vpx_dsp/arm/idct8x8_add_neon.c
deleted file mode 100644
index 4b2c2a6f83..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/idct8x8_add_neon.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
-
-static INLINE void TRANSPOSE8X8(
- int16x8_t *q8s16,
- int16x8_t *q9s16,
- int16x8_t *q10s16,
- int16x8_t *q11s16,
- int16x8_t *q12s16,
- int16x8_t *q13s16,
- int16x8_t *q14s16,
- int16x8_t *q15s16) {
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- int32x4x2_t q0x2s32, q1x2s32, q2x2s32, q3x2s32;
- int16x8x2_t q0x2s16, q1x2s16, q2x2s16, q3x2s16;
-
- d16s16 = vget_low_s16(*q8s16);
- d17s16 = vget_high_s16(*q8s16);
- d18s16 = vget_low_s16(*q9s16);
- d19s16 = vget_high_s16(*q9s16);
- d20s16 = vget_low_s16(*q10s16);
- d21s16 = vget_high_s16(*q10s16);
- d22s16 = vget_low_s16(*q11s16);
- d23s16 = vget_high_s16(*q11s16);
- d24s16 = vget_low_s16(*q12s16);
- d25s16 = vget_high_s16(*q12s16);
- d26s16 = vget_low_s16(*q13s16);
- d27s16 = vget_high_s16(*q13s16);
- d28s16 = vget_low_s16(*q14s16);
- d29s16 = vget_high_s16(*q14s16);
- d30s16 = vget_low_s16(*q15s16);
- d31s16 = vget_high_s16(*q15s16);
-
- *q8s16 = vcombine_s16(d16s16, d24s16); // vswp d17, d24
- *q9s16 = vcombine_s16(d18s16, d26s16); // vswp d19, d26
- *q10s16 = vcombine_s16(d20s16, d28s16); // vswp d21, d28
- *q11s16 = vcombine_s16(d22s16, d30s16); // vswp d23, d30
- *q12s16 = vcombine_s16(d17s16, d25s16);
- *q13s16 = vcombine_s16(d19s16, d27s16);
- *q14s16 = vcombine_s16(d21s16, d29s16);
- *q15s16 = vcombine_s16(d23s16, d31s16);
-
- q0x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q8s16),
- vreinterpretq_s32_s16(*q10s16));
- q1x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q9s16),
- vreinterpretq_s32_s16(*q11s16));
- q2x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q12s16),
- vreinterpretq_s32_s16(*q14s16));
- q3x2s32 = vtrnq_s32(vreinterpretq_s32_s16(*q13s16),
- vreinterpretq_s32_s16(*q15s16));
-
- q0x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q0x2s32.val[0]), // q8
- vreinterpretq_s16_s32(q1x2s32.val[0])); // q9
- q1x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q0x2s32.val[1]), // q10
- vreinterpretq_s16_s32(q1x2s32.val[1])); // q11
- q2x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q2x2s32.val[0]), // q12
- vreinterpretq_s16_s32(q3x2s32.val[0])); // q13
- q3x2s16 = vtrnq_s16(vreinterpretq_s16_s32(q2x2s32.val[1]), // q14
- vreinterpretq_s16_s32(q3x2s32.val[1])); // q15
-
- *q8s16 = q0x2s16.val[0];
- *q9s16 = q0x2s16.val[1];
- *q10s16 = q1x2s16.val[0];
- *q11s16 = q1x2s16.val[1];
- *q12s16 = q2x2s16.val[0];
- *q13s16 = q2x2s16.val[1];
- *q14s16 = q3x2s16.val[0];
- *q15s16 = q3x2s16.val[1];
- return;
-}
-
-static INLINE void IDCT8x8_1D(
- int16x8_t *q8s16,
- int16x8_t *q9s16,
- int16x8_t *q10s16,
- int16x8_t *q11s16,
- int16x8_t *q12s16,
- int16x8_t *q13s16,
- int16x8_t *q14s16,
- int16x8_t *q15s16) {
- int16x4_t d0s16, d1s16, d2s16, d3s16;
- int16x4_t d8s16, d9s16, d10s16, d11s16, d12s16, d13s16, d14s16, d15s16;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16, d28s16, d29s16, d30s16, d31s16;
- int16x8_t q0s16, q1s16, q2s16, q3s16, q4s16, q5s16, q6s16, q7s16;
- int32x4_t q2s32, q3s32, q5s32, q6s32, q8s32, q9s32;
- int32x4_t q10s32, q11s32, q12s32, q13s32, q15s32;
-
- d0s16 = vdup_n_s16(cospi_28_64);
- d1s16 = vdup_n_s16(cospi_4_64);
- d2s16 = vdup_n_s16(cospi_12_64);
- d3s16 = vdup_n_s16(cospi_20_64);
-
- d16s16 = vget_low_s16(*q8s16);
- d17s16 = vget_high_s16(*q8s16);
- d18s16 = vget_low_s16(*q9s16);
- d19s16 = vget_high_s16(*q9s16);
- d20s16 = vget_low_s16(*q10s16);
- d21s16 = vget_high_s16(*q10s16);
- d22s16 = vget_low_s16(*q11s16);
- d23s16 = vget_high_s16(*q11s16);
- d24s16 = vget_low_s16(*q12s16);
- d25s16 = vget_high_s16(*q12s16);
- d26s16 = vget_low_s16(*q13s16);
- d27s16 = vget_high_s16(*q13s16);
- d28s16 = vget_low_s16(*q14s16);
- d29s16 = vget_high_s16(*q14s16);
- d30s16 = vget_low_s16(*q15s16);
- d31s16 = vget_high_s16(*q15s16);
-
- q2s32 = vmull_s16(d18s16, d0s16);
- q3s32 = vmull_s16(d19s16, d0s16);
- q5s32 = vmull_s16(d26s16, d2s16);
- q6s32 = vmull_s16(d27s16, d2s16);
-
- q2s32 = vmlsl_s16(q2s32, d30s16, d1s16);
- q3s32 = vmlsl_s16(q3s32, d31s16, d1s16);
- q5s32 = vmlsl_s16(q5s32, d22s16, d3s16);
- q6s32 = vmlsl_s16(q6s32, d23s16, d3s16);
-
- d8s16 = vqrshrn_n_s32(q2s32, 14);
- d9s16 = vqrshrn_n_s32(q3s32, 14);
- d10s16 = vqrshrn_n_s32(q5s32, 14);
- d11s16 = vqrshrn_n_s32(q6s32, 14);
- q4s16 = vcombine_s16(d8s16, d9s16);
- q5s16 = vcombine_s16(d10s16, d11s16);
-
- q2s32 = vmull_s16(d18s16, d1s16);
- q3s32 = vmull_s16(d19s16, d1s16);
- q9s32 = vmull_s16(d26s16, d3s16);
- q13s32 = vmull_s16(d27s16, d3s16);
-
- q2s32 = vmlal_s16(q2s32, d30s16, d0s16);
- q3s32 = vmlal_s16(q3s32, d31s16, d0s16);
- q9s32 = vmlal_s16(q9s32, d22s16, d2s16);
- q13s32 = vmlal_s16(q13s32, d23s16, d2s16);
-
- d14s16 = vqrshrn_n_s32(q2s32, 14);
- d15s16 = vqrshrn_n_s32(q3s32, 14);
- d12s16 = vqrshrn_n_s32(q9s32, 14);
- d13s16 = vqrshrn_n_s32(q13s32, 14);
- q6s16 = vcombine_s16(d12s16, d13s16);
- q7s16 = vcombine_s16(d14s16, d15s16);
-
- d0s16 = vdup_n_s16(cospi_16_64);
-
- q2s32 = vmull_s16(d16s16, d0s16);
- q3s32 = vmull_s16(d17s16, d0s16);
- q13s32 = vmull_s16(d16s16, d0s16);
- q15s32 = vmull_s16(d17s16, d0s16);
-
- q2s32 = vmlal_s16(q2s32, d24s16, d0s16);
- q3s32 = vmlal_s16(q3s32, d25s16, d0s16);
- q13s32 = vmlsl_s16(q13s32, d24s16, d0s16);
- q15s32 = vmlsl_s16(q15s32, d25s16, d0s16);
-
- d0s16 = vdup_n_s16(cospi_24_64);
- d1s16 = vdup_n_s16(cospi_8_64);
-
- d18s16 = vqrshrn_n_s32(q2s32, 14);
- d19s16 = vqrshrn_n_s32(q3s32, 14);
- d22s16 = vqrshrn_n_s32(q13s32, 14);
- d23s16 = vqrshrn_n_s32(q15s32, 14);
- *q9s16 = vcombine_s16(d18s16, d19s16);
- *q11s16 = vcombine_s16(d22s16, d23s16);
-
- q2s32 = vmull_s16(d20s16, d0s16);
- q3s32 = vmull_s16(d21s16, d0s16);
- q8s32 = vmull_s16(d20s16, d1s16);
- q12s32 = vmull_s16(d21s16, d1s16);
-
- q2s32 = vmlsl_s16(q2s32, d28s16, d1s16);
- q3s32 = vmlsl_s16(q3s32, d29s16, d1s16);
- q8s32 = vmlal_s16(q8s32, d28s16, d0s16);
- q12s32 = vmlal_s16(q12s32, d29s16, d0s16);
-
- d26s16 = vqrshrn_n_s32(q2s32, 14);
- d27s16 = vqrshrn_n_s32(q3s32, 14);
- d30s16 = vqrshrn_n_s32(q8s32, 14);
- d31s16 = vqrshrn_n_s32(q12s32, 14);
- *q13s16 = vcombine_s16(d26s16, d27s16);
- *q15s16 = vcombine_s16(d30s16, d31s16);
-
- q0s16 = vaddq_s16(*q9s16, *q15s16);
- q1s16 = vaddq_s16(*q11s16, *q13s16);
- q2s16 = vsubq_s16(*q11s16, *q13s16);
- q3s16 = vsubq_s16(*q9s16, *q15s16);
-
- *q13s16 = vsubq_s16(q4s16, q5s16);
- q4s16 = vaddq_s16(q4s16, q5s16);
- *q14s16 = vsubq_s16(q7s16, q6s16);
- q7s16 = vaddq_s16(q7s16, q6s16);
- d26s16 = vget_low_s16(*q13s16);
- d27s16 = vget_high_s16(*q13s16);
- d28s16 = vget_low_s16(*q14s16);
- d29s16 = vget_high_s16(*q14s16);
-
- d16s16 = vdup_n_s16(cospi_16_64);
-
- q9s32 = vmull_s16(d28s16, d16s16);
- q10s32 = vmull_s16(d29s16, d16s16);
- q11s32 = vmull_s16(d28s16, d16s16);
- q12s32 = vmull_s16(d29s16, d16s16);
-
- q9s32 = vmlsl_s16(q9s32, d26s16, d16s16);
- q10s32 = vmlsl_s16(q10s32, d27s16, d16s16);
- q11s32 = vmlal_s16(q11s32, d26s16, d16s16);
- q12s32 = vmlal_s16(q12s32, d27s16, d16s16);
-
- d10s16 = vqrshrn_n_s32(q9s32, 14);
- d11s16 = vqrshrn_n_s32(q10s32, 14);
- d12s16 = vqrshrn_n_s32(q11s32, 14);
- d13s16 = vqrshrn_n_s32(q12s32, 14);
- q5s16 = vcombine_s16(d10s16, d11s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- *q8s16 = vaddq_s16(q0s16, q7s16);
- *q9s16 = vaddq_s16(q1s16, q6s16);
- *q10s16 = vaddq_s16(q2s16, q5s16);
- *q11s16 = vaddq_s16(q3s16, q4s16);
- *q12s16 = vsubq_s16(q3s16, q4s16);
- *q13s16 = vsubq_s16(q2s16, q5s16);
- *q14s16 = vsubq_s16(q1s16, q6s16);
- *q15s16 = vsubq_s16(q0s16, q7s16);
- return;
-}
-
-void vpx_idct8x8_64_add_neon(
- int16_t *input,
- uint8_t *dest,
- int dest_stride) {
- uint8_t *d1, *d2;
- uint8x8_t d0u8, d1u8, d2u8, d3u8;
- uint64x1_t d0u64, d1u64, d2u64, d3u64;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- uint16x8_t q8u16, q9u16, q10u16, q11u16;
-
- q8s16 = vld1q_s16(input);
- q9s16 = vld1q_s16(input + 8);
- q10s16 = vld1q_s16(input + 16);
- q11s16 = vld1q_s16(input + 24);
- q12s16 = vld1q_s16(input + 32);
- q13s16 = vld1q_s16(input + 40);
- q14s16 = vld1q_s16(input + 48);
- q15s16 = vld1q_s16(input + 56);
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- IDCT8x8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- IDCT8x8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- q8s16 = vrshrq_n_s16(q8s16, 5);
- q9s16 = vrshrq_n_s16(q9s16, 5);
- q10s16 = vrshrq_n_s16(q10s16, 5);
- q11s16 = vrshrq_n_s16(q11s16, 5);
- q12s16 = vrshrq_n_s16(q12s16, 5);
- q13s16 = vrshrq_n_s16(q13s16, 5);
- q14s16 = vrshrq_n_s16(q14s16, 5);
- q15s16 = vrshrq_n_s16(q15s16, 5);
-
- d1 = d2 = dest;
-
- d0u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d1u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d2u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d3u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
-
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q8s16),
- vreinterpret_u8_u64(d0u64));
- q9u16 = vaddw_u8(vreinterpretq_u16_s16(q9s16),
- vreinterpret_u8_u64(d1u64));
- q10u16 = vaddw_u8(vreinterpretq_u16_s16(q10s16),
- vreinterpret_u8_u64(d2u64));
- q11u16 = vaddw_u8(vreinterpretq_u16_s16(q11s16),
- vreinterpret_u8_u64(d3u64));
-
- d0u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
- d1u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q10u16));
- d3u8 = vqmovun_s16(vreinterpretq_s16_u16(q11u16));
-
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d0u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d1u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d2u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d3u8));
- d2 += dest_stride;
-
- q8s16 = q12s16;
- q9s16 = q13s16;
- q10s16 = q14s16;
- q11s16 = q15s16;
-
- d0u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d1u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d2u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d3u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
-
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q8s16),
- vreinterpret_u8_u64(d0u64));
- q9u16 = vaddw_u8(vreinterpretq_u16_s16(q9s16),
- vreinterpret_u8_u64(d1u64));
- q10u16 = vaddw_u8(vreinterpretq_u16_s16(q10s16),
- vreinterpret_u8_u64(d2u64));
- q11u16 = vaddw_u8(vreinterpretq_u16_s16(q11s16),
- vreinterpret_u8_u64(d3u64));
-
- d0u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
- d1u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q10u16));
- d3u8 = vqmovun_s16(vreinterpretq_s16_u16(q11u16));
-
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d0u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d1u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d2u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d3u8));
- d2 += dest_stride;
- return;
-}
-
-void vpx_idct8x8_12_add_neon(
- int16_t *input,
- uint8_t *dest,
- int dest_stride) {
- uint8_t *d1, *d2;
- uint8x8_t d0u8, d1u8, d2u8, d3u8;
- int16x4_t d10s16, d11s16, d12s16, d13s16, d16s16;
- int16x4_t d26s16, d27s16, d28s16, d29s16;
- uint64x1_t d0u64, d1u64, d2u64, d3u64;
- int16x8_t q0s16, q1s16, q2s16, q3s16, q4s16, q5s16, q6s16, q7s16;
- int16x8_t q8s16, q9s16, q10s16, q11s16, q12s16, q13s16, q14s16, q15s16;
- uint16x8_t q8u16, q9u16, q10u16, q11u16;
- int32x4_t q9s32, q10s32, q11s32, q12s32;
-
- q8s16 = vld1q_s16(input);
- q9s16 = vld1q_s16(input + 8);
- q10s16 = vld1q_s16(input + 16);
- q11s16 = vld1q_s16(input + 24);
- q12s16 = vld1q_s16(input + 32);
- q13s16 = vld1q_s16(input + 40);
- q14s16 = vld1q_s16(input + 48);
- q15s16 = vld1q_s16(input + 56);
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- // First transform rows
- // stage 1
- q0s16 = vdupq_n_s16(cospi_28_64 * 2);
- q1s16 = vdupq_n_s16(cospi_4_64 * 2);
-
- q4s16 = vqrdmulhq_s16(q9s16, q0s16);
-
- q0s16 = vdupq_n_s16(-cospi_20_64 * 2);
-
- q7s16 = vqrdmulhq_s16(q9s16, q1s16);
-
- q1s16 = vdupq_n_s16(cospi_12_64 * 2);
-
- q5s16 = vqrdmulhq_s16(q11s16, q0s16);
-
- q0s16 = vdupq_n_s16(cospi_16_64 * 2);
-
- q6s16 = vqrdmulhq_s16(q11s16, q1s16);
-
- // stage 2 & stage 3 - even half
- q1s16 = vdupq_n_s16(cospi_24_64 * 2);
-
- q9s16 = vqrdmulhq_s16(q8s16, q0s16);
-
- q0s16 = vdupq_n_s16(cospi_8_64 * 2);
-
- q13s16 = vqrdmulhq_s16(q10s16, q1s16);
-
- q15s16 = vqrdmulhq_s16(q10s16, q0s16);
-
- // stage 3 -odd half
- q0s16 = vaddq_s16(q9s16, q15s16);
- q1s16 = vaddq_s16(q9s16, q13s16);
- q2s16 = vsubq_s16(q9s16, q13s16);
- q3s16 = vsubq_s16(q9s16, q15s16);
-
- // stage 2 - odd half
- q13s16 = vsubq_s16(q4s16, q5s16);
- q4s16 = vaddq_s16(q4s16, q5s16);
- q14s16 = vsubq_s16(q7s16, q6s16);
- q7s16 = vaddq_s16(q7s16, q6s16);
- d26s16 = vget_low_s16(q13s16);
- d27s16 = vget_high_s16(q13s16);
- d28s16 = vget_low_s16(q14s16);
- d29s16 = vget_high_s16(q14s16);
-
- d16s16 = vdup_n_s16(cospi_16_64);
- q9s32 = vmull_s16(d28s16, d16s16);
- q10s32 = vmull_s16(d29s16, d16s16);
- q11s32 = vmull_s16(d28s16, d16s16);
- q12s32 = vmull_s16(d29s16, d16s16);
-
- q9s32 = vmlsl_s16(q9s32, d26s16, d16s16);
- q10s32 = vmlsl_s16(q10s32, d27s16, d16s16);
- q11s32 = vmlal_s16(q11s32, d26s16, d16s16);
- q12s32 = vmlal_s16(q12s32, d27s16, d16s16);
-
- d10s16 = vqrshrn_n_s32(q9s32, 14);
- d11s16 = vqrshrn_n_s32(q10s32, 14);
- d12s16 = vqrshrn_n_s32(q11s32, 14);
- d13s16 = vqrshrn_n_s32(q12s32, 14);
- q5s16 = vcombine_s16(d10s16, d11s16);
- q6s16 = vcombine_s16(d12s16, d13s16);
-
- // stage 4
- q8s16 = vaddq_s16(q0s16, q7s16);
- q9s16 = vaddq_s16(q1s16, q6s16);
- q10s16 = vaddq_s16(q2s16, q5s16);
- q11s16 = vaddq_s16(q3s16, q4s16);
- q12s16 = vsubq_s16(q3s16, q4s16);
- q13s16 = vsubq_s16(q2s16, q5s16);
- q14s16 = vsubq_s16(q1s16, q6s16);
- q15s16 = vsubq_s16(q0s16, q7s16);
-
- TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- IDCT8x8_1D(&q8s16, &q9s16, &q10s16, &q11s16,
- &q12s16, &q13s16, &q14s16, &q15s16);
-
- q8s16 = vrshrq_n_s16(q8s16, 5);
- q9s16 = vrshrq_n_s16(q9s16, 5);
- q10s16 = vrshrq_n_s16(q10s16, 5);
- q11s16 = vrshrq_n_s16(q11s16, 5);
- q12s16 = vrshrq_n_s16(q12s16, 5);
- q13s16 = vrshrq_n_s16(q13s16, 5);
- q14s16 = vrshrq_n_s16(q14s16, 5);
- q15s16 = vrshrq_n_s16(q15s16, 5);
-
- d1 = d2 = dest;
-
- d0u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d1u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d2u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d3u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
-
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q8s16),
- vreinterpret_u8_u64(d0u64));
- q9u16 = vaddw_u8(vreinterpretq_u16_s16(q9s16),
- vreinterpret_u8_u64(d1u64));
- q10u16 = vaddw_u8(vreinterpretq_u16_s16(q10s16),
- vreinterpret_u8_u64(d2u64));
- q11u16 = vaddw_u8(vreinterpretq_u16_s16(q11s16),
- vreinterpret_u8_u64(d3u64));
-
- d0u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
- d1u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q10u16));
- d3u8 = vqmovun_s16(vreinterpretq_s16_u16(q11u16));
-
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d0u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d1u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d2u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d3u8));
- d2 += dest_stride;
-
- q8s16 = q12s16;
- q9s16 = q13s16;
- q10s16 = q14s16;
- q11s16 = q15s16;
-
- d0u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d1u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d2u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
- d3u64 = vld1_u64((uint64_t *)d1);
- d1 += dest_stride;
-
- q8u16 = vaddw_u8(vreinterpretq_u16_s16(q8s16),
- vreinterpret_u8_u64(d0u64));
- q9u16 = vaddw_u8(vreinterpretq_u16_s16(q9s16),
- vreinterpret_u8_u64(d1u64));
- q10u16 = vaddw_u8(vreinterpretq_u16_s16(q10s16),
- vreinterpret_u8_u64(d2u64));
- q11u16 = vaddw_u8(vreinterpretq_u16_s16(q11s16),
- vreinterpret_u8_u64(d3u64));
-
- d0u8 = vqmovun_s16(vreinterpretq_s16_u16(q8u16));
- d1u8 = vqmovun_s16(vreinterpretq_s16_u16(q9u16));
- d2u8 = vqmovun_s16(vreinterpretq_s16_u16(q10u16));
- d3u8 = vqmovun_s16(vreinterpretq_s16_u16(q11u16));
-
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d0u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d1u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d2u8));
- d2 += dest_stride;
- vst1_u64((uint64_t *)d2, vreinterpret_u64_u8(d3u8));
- d2 += dest_stride;
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/intrapred_neon.c b/thirdparty/libvpx/vpx_dsp/arm/intrapred_neon.c
deleted file mode 100644
index 0a376104d2..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/intrapred_neon.c
+++ /dev/null
@@ -1,822 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-
-//------------------------------------------------------------------------------
-// DC 4x4
-
-// 'do_above' and 'do_left' facilitate branch removal when inlined.
-static INLINE void dc_4x4(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left,
- int do_above, int do_left) {
- uint16x8_t sum_top;
- uint16x8_t sum_left;
- uint8x8_t dc0;
-
- if (do_above) {
- const uint8x8_t A = vld1_u8(above); // top row
- const uint16x4_t p0 = vpaddl_u8(A); // cascading summation of the top
- const uint16x4_t p1 = vpadd_u16(p0, p0);
- sum_top = vcombine_u16(p1, p1);
- }
-
- if (do_left) {
- const uint8x8_t L = vld1_u8(left); // left border
- const uint16x4_t p0 = vpaddl_u8(L); // cascading summation of the left
- const uint16x4_t p1 = vpadd_u16(p0, p0);
- sum_left = vcombine_u16(p1, p1);
- }
-
- if (do_above && do_left) {
- const uint16x8_t sum = vaddq_u16(sum_left, sum_top);
- dc0 = vrshrn_n_u16(sum, 3);
- } else if (do_above) {
- dc0 = vrshrn_n_u16(sum_top, 2);
- } else if (do_left) {
- dc0 = vrshrn_n_u16(sum_left, 2);
- } else {
- dc0 = vdup_n_u8(0x80);
- }
-
- {
- const uint8x8_t dc = vdup_lane_u8(dc0, 0);
- int i;
- for (i = 0; i < 4; ++i) {
- vst1_lane_u32((uint32_t*)(dst + i * stride), vreinterpret_u32_u8(dc), 0);
- }
- }
-}
-
-void vpx_dc_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- dc_4x4(dst, stride, above, left, 1, 1);
-}
-
-void vpx_dc_left_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- (void)above;
- dc_4x4(dst, stride, NULL, left, 0, 1);
-}
-
-void vpx_dc_top_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- (void)left;
- dc_4x4(dst, stride, above, NULL, 1, 0);
-}
-
-void vpx_dc_128_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- (void)above;
- (void)left;
- dc_4x4(dst, stride, NULL, NULL, 0, 0);
-}
-
-//------------------------------------------------------------------------------
-// DC 8x8
-
-// 'do_above' and 'do_left' facilitate branch removal when inlined.
-static INLINE void dc_8x8(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left,
- int do_above, int do_left) {
- uint16x8_t sum_top;
- uint16x8_t sum_left;
- uint8x8_t dc0;
-
- if (do_above) {
- const uint8x8_t A = vld1_u8(above); // top row
- const uint16x4_t p0 = vpaddl_u8(A); // cascading summation of the top
- const uint16x4_t p1 = vpadd_u16(p0, p0);
- const uint16x4_t p2 = vpadd_u16(p1, p1);
- sum_top = vcombine_u16(p2, p2);
- }
-
- if (do_left) {
- const uint8x8_t L = vld1_u8(left); // left border
- const uint16x4_t p0 = vpaddl_u8(L); // cascading summation of the left
- const uint16x4_t p1 = vpadd_u16(p0, p0);
- const uint16x4_t p2 = vpadd_u16(p1, p1);
- sum_left = vcombine_u16(p2, p2);
- }
-
- if (do_above && do_left) {
- const uint16x8_t sum = vaddq_u16(sum_left, sum_top);
- dc0 = vrshrn_n_u16(sum, 4);
- } else if (do_above) {
- dc0 = vrshrn_n_u16(sum_top, 3);
- } else if (do_left) {
- dc0 = vrshrn_n_u16(sum_left, 3);
- } else {
- dc0 = vdup_n_u8(0x80);
- }
-
- {
- const uint8x8_t dc = vdup_lane_u8(dc0, 0);
- int i;
- for (i = 0; i < 8; ++i) {
- vst1_u32((uint32_t*)(dst + i * stride), vreinterpret_u32_u8(dc));
- }
- }
-}
-
-void vpx_dc_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- dc_8x8(dst, stride, above, left, 1, 1);
-}
-
-void vpx_dc_left_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- (void)above;
- dc_8x8(dst, stride, NULL, left, 0, 1);
-}
-
-void vpx_dc_top_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- (void)left;
- dc_8x8(dst, stride, above, NULL, 1, 0);
-}
-
-void vpx_dc_128_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- (void)above;
- (void)left;
- dc_8x8(dst, stride, NULL, NULL, 0, 0);
-}
-
-//------------------------------------------------------------------------------
-// DC 16x16
-
-// 'do_above' and 'do_left' facilitate branch removal when inlined.
-static INLINE void dc_16x16(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left,
- int do_above, int do_left) {
- uint16x8_t sum_top;
- uint16x8_t sum_left;
- uint8x8_t dc0;
-
- if (do_above) {
- const uint8x16_t A = vld1q_u8(above); // top row
- const uint16x8_t p0 = vpaddlq_u8(A); // cascading summation of the top
- const uint16x4_t p1 = vadd_u16(vget_low_u16(p0), vget_high_u16(p0));
- const uint16x4_t p2 = vpadd_u16(p1, p1);
- const uint16x4_t p3 = vpadd_u16(p2, p2);
- sum_top = vcombine_u16(p3, p3);
- }
-
- if (do_left) {
- const uint8x16_t L = vld1q_u8(left); // left row
- const uint16x8_t p0 = vpaddlq_u8(L); // cascading summation of the left
- const uint16x4_t p1 = vadd_u16(vget_low_u16(p0), vget_high_u16(p0));
- const uint16x4_t p2 = vpadd_u16(p1, p1);
- const uint16x4_t p3 = vpadd_u16(p2, p2);
- sum_left = vcombine_u16(p3, p3);
- }
-
- if (do_above && do_left) {
- const uint16x8_t sum = vaddq_u16(sum_left, sum_top);
- dc0 = vrshrn_n_u16(sum, 5);
- } else if (do_above) {
- dc0 = vrshrn_n_u16(sum_top, 4);
- } else if (do_left) {
- dc0 = vrshrn_n_u16(sum_left, 4);
- } else {
- dc0 = vdup_n_u8(0x80);
- }
-
- {
- const uint8x16_t dc = vdupq_lane_u8(dc0, 0);
- int i;
- for (i = 0; i < 16; ++i) {
- vst1q_u8(dst + i * stride, dc);
- }
- }
-}
-
-void vpx_dc_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- dc_16x16(dst, stride, above, left, 1, 1);
-}
-
-void vpx_dc_left_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above,
- const uint8_t *left) {
- (void)above;
- dc_16x16(dst, stride, NULL, left, 0, 1);
-}
-
-void vpx_dc_top_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above,
- const uint8_t *left) {
- (void)left;
- dc_16x16(dst, stride, above, NULL, 1, 0);
-}
-
-void vpx_dc_128_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above,
- const uint8_t *left) {
- (void)above;
- (void)left;
- dc_16x16(dst, stride, NULL, NULL, 0, 0);
-}
-
-//------------------------------------------------------------------------------
-// DC 32x32
-
-// 'do_above' and 'do_left' facilitate branch removal when inlined.
-static INLINE void dc_32x32(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left,
- int do_above, int do_left) {
- uint16x8_t sum_top;
- uint16x8_t sum_left;
- uint8x8_t dc0;
-
- if (do_above) {
- const uint8x16_t A0 = vld1q_u8(above); // top row
- const uint8x16_t A1 = vld1q_u8(above + 16);
- const uint16x8_t p0 = vpaddlq_u8(A0); // cascading summation of the top
- const uint16x8_t p1 = vpaddlq_u8(A1);
- const uint16x8_t p2 = vaddq_u16(p0, p1);
- const uint16x4_t p3 = vadd_u16(vget_low_u16(p2), vget_high_u16(p2));
- const uint16x4_t p4 = vpadd_u16(p3, p3);
- const uint16x4_t p5 = vpadd_u16(p4, p4);
- sum_top = vcombine_u16(p5, p5);
- }
-
- if (do_left) {
- const uint8x16_t L0 = vld1q_u8(left); // left row
- const uint8x16_t L1 = vld1q_u8(left + 16);
- const uint16x8_t p0 = vpaddlq_u8(L0); // cascading summation of the left
- const uint16x8_t p1 = vpaddlq_u8(L1);
- const uint16x8_t p2 = vaddq_u16(p0, p1);
- const uint16x4_t p3 = vadd_u16(vget_low_u16(p2), vget_high_u16(p2));
- const uint16x4_t p4 = vpadd_u16(p3, p3);
- const uint16x4_t p5 = vpadd_u16(p4, p4);
- sum_left = vcombine_u16(p5, p5);
- }
-
- if (do_above && do_left) {
- const uint16x8_t sum = vaddq_u16(sum_left, sum_top);
- dc0 = vrshrn_n_u16(sum, 6);
- } else if (do_above) {
- dc0 = vrshrn_n_u16(sum_top, 5);
- } else if (do_left) {
- dc0 = vrshrn_n_u16(sum_left, 5);
- } else {
- dc0 = vdup_n_u8(0x80);
- }
-
- {
- const uint8x16_t dc = vdupq_lane_u8(dc0, 0);
- int i;
- for (i = 0; i < 32; ++i) {
- vst1q_u8(dst + i * stride, dc);
- vst1q_u8(dst + i * stride + 16, dc);
- }
- }
-}
-
-void vpx_dc_predictor_32x32_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- dc_32x32(dst, stride, above, left, 1, 1);
-}
-
-void vpx_dc_left_predictor_32x32_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above,
- const uint8_t *left) {
- (void)above;
- dc_32x32(dst, stride, NULL, left, 0, 1);
-}
-
-void vpx_dc_top_predictor_32x32_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above,
- const uint8_t *left) {
- (void)left;
- dc_32x32(dst, stride, above, NULL, 1, 0);
-}
-
-void vpx_dc_128_predictor_32x32_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above,
- const uint8_t *left) {
- (void)above;
- (void)left;
- dc_32x32(dst, stride, NULL, NULL, 0, 0);
-}
-
-// -----------------------------------------------------------------------------
-
-void vpx_d45_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const uint64x1_t A0 = vreinterpret_u64_u8(vld1_u8(above)); // top row
- const uint64x1_t A1 = vshr_n_u64(A0, 8);
- const uint64x1_t A2 = vshr_n_u64(A0, 16);
- const uint8x8_t ABCDEFGH = vreinterpret_u8_u64(A0);
- const uint8x8_t BCDEFGH0 = vreinterpret_u8_u64(A1);
- const uint8x8_t CDEFGH00 = vreinterpret_u8_u64(A2);
- const uint8x8_t avg1 = vhadd_u8(ABCDEFGH, CDEFGH00);
- const uint8x8_t avg2 = vrhadd_u8(avg1, BCDEFGH0);
- const uint64x1_t avg2_u64 = vreinterpret_u64_u8(avg2);
- const uint32x2_t r0 = vreinterpret_u32_u8(avg2);
- const uint32x2_t r1 = vreinterpret_u32_u64(vshr_n_u64(avg2_u64, 8));
- const uint32x2_t r2 = vreinterpret_u32_u64(vshr_n_u64(avg2_u64, 16));
- const uint32x2_t r3 = vreinterpret_u32_u64(vshr_n_u64(avg2_u64, 24));
- (void)left;
- vst1_lane_u32((uint32_t *)(dst + 0 * stride), r0, 0);
- vst1_lane_u32((uint32_t *)(dst + 1 * stride), r1, 0);
- vst1_lane_u32((uint32_t *)(dst + 2 * stride), r2, 0);
- vst1_lane_u32((uint32_t *)(dst + 3 * stride), r3, 0);
- dst[3 * stride + 3] = above[7];
-}
-
-void vpx_d45_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- static const uint8_t shuffle1[8] = { 1, 2, 3, 4, 5, 6, 7, 7 };
- static const uint8_t shuffle2[8] = { 2, 3, 4, 5, 6, 7, 7, 7 };
- const uint8x8_t sh_12345677 = vld1_u8(shuffle1);
- const uint8x8_t sh_23456777 = vld1_u8(shuffle2);
- const uint8x8_t A0 = vld1_u8(above); // top row
- const uint8x8_t A1 = vtbl1_u8(A0, sh_12345677);
- const uint8x8_t A2 = vtbl1_u8(A0, sh_23456777);
- const uint8x8_t avg1 = vhadd_u8(A0, A2);
- uint8x8_t row = vrhadd_u8(avg1, A1);
- int i;
- (void)left;
- for (i = 0; i < 7; ++i) {
- vst1_u8(dst + i * stride, row);
- row = vtbl1_u8(row, sh_12345677);
- }
- vst1_u8(dst + i * stride, row);
-}
-
-void vpx_d45_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const uint8x16_t A0 = vld1q_u8(above); // top row
- const uint8x16_t above_right = vld1q_dup_u8(above + 15);
- const uint8x16_t A1 = vextq_u8(A0, above_right, 1);
- const uint8x16_t A2 = vextq_u8(A0, above_right, 2);
- const uint8x16_t avg1 = vhaddq_u8(A0, A2);
- uint8x16_t row = vrhaddq_u8(avg1, A1);
- int i;
- (void)left;
- for (i = 0; i < 15; ++i) {
- vst1q_u8(dst + i * stride, row);
- row = vextq_u8(row, above_right, 1);
- }
- vst1q_u8(dst + i * stride, row);
-}
-
-// -----------------------------------------------------------------------------
-
-void vpx_d135_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const uint8x8_t XABCD_u8 = vld1_u8(above - 1);
- const uint64x1_t XABCD = vreinterpret_u64_u8(XABCD_u8);
- const uint64x1_t ____XABC = vshl_n_u64(XABCD, 32);
- const uint32x2_t zero = vdup_n_u32(0);
- const uint32x2_t IJKL = vld1_lane_u32((const uint32_t *)left, zero, 0);
- const uint8x8_t IJKL_u8 = vreinterpret_u8_u32(IJKL);
- const uint64x1_t LKJI____ = vreinterpret_u64_u8(vrev32_u8(IJKL_u8));
- const uint64x1_t LKJIXABC = vorr_u64(LKJI____, ____XABC);
- const uint8x8_t KJIXABC_ = vreinterpret_u8_u64(vshr_n_u64(LKJIXABC, 8));
- const uint8x8_t JIXABC__ = vreinterpret_u8_u64(vshr_n_u64(LKJIXABC, 16));
- const uint8_t D = vget_lane_u8(XABCD_u8, 4);
- const uint8x8_t JIXABCD_ = vset_lane_u8(D, JIXABC__, 6);
- const uint8x8_t LKJIXABC_u8 = vreinterpret_u8_u64(LKJIXABC);
- const uint8x8_t avg1 = vhadd_u8(JIXABCD_, LKJIXABC_u8);
- const uint8x8_t avg2 = vrhadd_u8(avg1, KJIXABC_);
- const uint64x1_t avg2_u64 = vreinterpret_u64_u8(avg2);
- const uint32x2_t r3 = vreinterpret_u32_u8(avg2);
- const uint32x2_t r2 = vreinterpret_u32_u64(vshr_n_u64(avg2_u64, 8));
- const uint32x2_t r1 = vreinterpret_u32_u64(vshr_n_u64(avg2_u64, 16));
- const uint32x2_t r0 = vreinterpret_u32_u64(vshr_n_u64(avg2_u64, 24));
- vst1_lane_u32((uint32_t *)(dst + 0 * stride), r0, 0);
- vst1_lane_u32((uint32_t *)(dst + 1 * stride), r1, 0);
- vst1_lane_u32((uint32_t *)(dst + 2 * stride), r2, 0);
- vst1_lane_u32((uint32_t *)(dst + 3 * stride), r3, 0);
-}
-
-#if !HAVE_NEON_ASM
-
-void vpx_v_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int i;
- uint32x2_t d0u32 = vdup_n_u32(0);
- (void)left;
-
- d0u32 = vld1_lane_u32((const uint32_t *)above, d0u32, 0);
- for (i = 0; i < 4; i++, dst += stride)
- vst1_lane_u32((uint32_t *)dst, d0u32, 0);
-}
-
-void vpx_v_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int i;
- uint8x8_t d0u8 = vdup_n_u8(0);
- (void)left;
-
- d0u8 = vld1_u8(above);
- for (i = 0; i < 8; i++, dst += stride)
- vst1_u8(dst, d0u8);
-}
-
-void vpx_v_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int i;
- uint8x16_t q0u8 = vdupq_n_u8(0);
- (void)left;
-
- q0u8 = vld1q_u8(above);
- for (i = 0; i < 16; i++, dst += stride)
- vst1q_u8(dst, q0u8);
-}
-
-void vpx_v_predictor_32x32_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int i;
- uint8x16_t q0u8 = vdupq_n_u8(0);
- uint8x16_t q1u8 = vdupq_n_u8(0);
- (void)left;
-
- q0u8 = vld1q_u8(above);
- q1u8 = vld1q_u8(above + 16);
- for (i = 0; i < 32; i++, dst += stride) {
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q1u8);
- }
-}
-
-void vpx_h_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- uint8x8_t d0u8 = vdup_n_u8(0);
- uint32x2_t d1u32 = vdup_n_u32(0);
- (void)above;
-
- d1u32 = vld1_lane_u32((const uint32_t *)left, d1u32, 0);
-
- d0u8 = vdup_lane_u8(vreinterpret_u8_u32(d1u32), 0);
- vst1_lane_u32((uint32_t *)dst, vreinterpret_u32_u8(d0u8), 0);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u32(d1u32), 1);
- vst1_lane_u32((uint32_t *)dst, vreinterpret_u32_u8(d0u8), 0);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u32(d1u32), 2);
- vst1_lane_u32((uint32_t *)dst, vreinterpret_u32_u8(d0u8), 0);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u32(d1u32), 3);
- vst1_lane_u32((uint32_t *)dst, vreinterpret_u32_u8(d0u8), 0);
-}
-
-void vpx_h_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- uint8x8_t d0u8 = vdup_n_u8(0);
- uint64x1_t d1u64 = vdup_n_u64(0);
- (void)above;
-
- d1u64 = vld1_u64((const uint64_t *)left);
-
- d0u8 = vdup_lane_u8(vreinterpret_u8_u64(d1u64), 0);
- vst1_u8(dst, d0u8);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u64(d1u64), 1);
- vst1_u8(dst, d0u8);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u64(d1u64), 2);
- vst1_u8(dst, d0u8);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u64(d1u64), 3);
- vst1_u8(dst, d0u8);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u64(d1u64), 4);
- vst1_u8(dst, d0u8);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u64(d1u64), 5);
- vst1_u8(dst, d0u8);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u64(d1u64), 6);
- vst1_u8(dst, d0u8);
- dst += stride;
- d0u8 = vdup_lane_u8(vreinterpret_u8_u64(d1u64), 7);
- vst1_u8(dst, d0u8);
-}
-
-void vpx_h_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int j;
- uint8x8_t d2u8 = vdup_n_u8(0);
- uint8x16_t q0u8 = vdupq_n_u8(0);
- uint8x16_t q1u8 = vdupq_n_u8(0);
- (void)above;
-
- q1u8 = vld1q_u8(left);
- d2u8 = vget_low_u8(q1u8);
- for (j = 0; j < 2; j++, d2u8 = vget_high_u8(q1u8)) {
- q0u8 = vdupq_lane_u8(d2u8, 0);
- vst1q_u8(dst, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 1);
- vst1q_u8(dst, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 2);
- vst1q_u8(dst, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 3);
- vst1q_u8(dst, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 4);
- vst1q_u8(dst, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 5);
- vst1q_u8(dst, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 6);
- vst1q_u8(dst, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 7);
- vst1q_u8(dst, q0u8);
- dst += stride;
- }
-}
-
-void vpx_h_predictor_32x32_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int j, k;
- uint8x8_t d2u8 = vdup_n_u8(0);
- uint8x16_t q0u8 = vdupq_n_u8(0);
- uint8x16_t q1u8 = vdupq_n_u8(0);
- (void)above;
-
- for (k = 0; k < 2; k++, left += 16) {
- q1u8 = vld1q_u8(left);
- d2u8 = vget_low_u8(q1u8);
- for (j = 0; j < 2; j++, d2u8 = vget_high_u8(q1u8)) {
- q0u8 = vdupq_lane_u8(d2u8, 0);
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 1);
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 2);
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 3);
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 4);
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 5);
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 6);
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q0u8);
- dst += stride;
- q0u8 = vdupq_lane_u8(d2u8, 7);
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q0u8);
- dst += stride;
- }
- }
-}
-
-void vpx_tm_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int i;
- uint16x8_t q1u16, q3u16;
- int16x8_t q1s16;
- uint8x8_t d0u8 = vdup_n_u8(0);
- uint32x2_t d2u32 = vdup_n_u32(0);
-
- d0u8 = vld1_dup_u8(above - 1);
- d2u32 = vld1_lane_u32((const uint32_t *)above, d2u32, 0);
- q3u16 = vsubl_u8(vreinterpret_u8_u32(d2u32), d0u8);
- for (i = 0; i < 4; i++, dst += stride) {
- q1u16 = vdupq_n_u16((uint16_t)left[i]);
- q1s16 = vaddq_s16(vreinterpretq_s16_u16(q1u16),
- vreinterpretq_s16_u16(q3u16));
- d0u8 = vqmovun_s16(q1s16);
- vst1_lane_u32((uint32_t *)dst, vreinterpret_u32_u8(d0u8), 0);
- }
-}
-
-void vpx_tm_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int j;
- uint16x8_t q0u16, q3u16, q10u16;
- int16x8_t q0s16;
- uint16x4_t d20u16;
- uint8x8_t d0u8, d2u8, d30u8;
-
- d0u8 = vld1_dup_u8(above - 1);
- d30u8 = vld1_u8(left);
- d2u8 = vld1_u8(above);
- q10u16 = vmovl_u8(d30u8);
- q3u16 = vsubl_u8(d2u8, d0u8);
- d20u16 = vget_low_u16(q10u16);
- for (j = 0; j < 2; j++, d20u16 = vget_high_u16(q10u16)) {
- q0u16 = vdupq_lane_u16(d20u16, 0);
- q0s16 = vaddq_s16(vreinterpretq_s16_u16(q3u16),
- vreinterpretq_s16_u16(q0u16));
- d0u8 = vqmovun_s16(q0s16);
- vst1_u64((uint64_t *)dst, vreinterpret_u64_u8(d0u8));
- dst += stride;
- q0u16 = vdupq_lane_u16(d20u16, 1);
- q0s16 = vaddq_s16(vreinterpretq_s16_u16(q3u16),
- vreinterpretq_s16_u16(q0u16));
- d0u8 = vqmovun_s16(q0s16);
- vst1_u64((uint64_t *)dst, vreinterpret_u64_u8(d0u8));
- dst += stride;
- q0u16 = vdupq_lane_u16(d20u16, 2);
- q0s16 = vaddq_s16(vreinterpretq_s16_u16(q3u16),
- vreinterpretq_s16_u16(q0u16));
- d0u8 = vqmovun_s16(q0s16);
- vst1_u64((uint64_t *)dst, vreinterpret_u64_u8(d0u8));
- dst += stride;
- q0u16 = vdupq_lane_u16(d20u16, 3);
- q0s16 = vaddq_s16(vreinterpretq_s16_u16(q3u16),
- vreinterpretq_s16_u16(q0u16));
- d0u8 = vqmovun_s16(q0s16);
- vst1_u64((uint64_t *)dst, vreinterpret_u64_u8(d0u8));
- dst += stride;
- }
-}
-
-void vpx_tm_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int j, k;
- uint16x8_t q0u16, q2u16, q3u16, q8u16, q10u16;
- uint8x16_t q0u8, q1u8;
- int16x8_t q0s16, q1s16, q8s16, q11s16;
- uint16x4_t d20u16;
- uint8x8_t d2u8, d3u8, d18u8, d22u8, d23u8;
-
- q0u8 = vld1q_dup_u8(above - 1);
- q1u8 = vld1q_u8(above);
- q2u16 = vsubl_u8(vget_low_u8(q1u8), vget_low_u8(q0u8));
- q3u16 = vsubl_u8(vget_high_u8(q1u8), vget_high_u8(q0u8));
- for (k = 0; k < 2; k++, left += 8) {
- d18u8 = vld1_u8(left);
- q10u16 = vmovl_u8(d18u8);
- d20u16 = vget_low_u16(q10u16);
- for (j = 0; j < 2; j++, d20u16 = vget_high_u16(q10u16)) {
- q0u16 = vdupq_lane_u16(d20u16, 0);
- q8u16 = vdupq_lane_u16(d20u16, 1);
- q1s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q2u16));
- q0s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q3u16));
- q11s16 = vaddq_s16(vreinterpretq_s16_u16(q8u16),
- vreinterpretq_s16_u16(q2u16));
- q8s16 = vaddq_s16(vreinterpretq_s16_u16(q8u16),
- vreinterpretq_s16_u16(q3u16));
- d2u8 = vqmovun_s16(q1s16);
- d3u8 = vqmovun_s16(q0s16);
- d22u8 = vqmovun_s16(q11s16);
- d23u8 = vqmovun_s16(q8s16);
- vst1_u64((uint64_t *)dst, vreinterpret_u64_u8(d2u8));
- vst1_u64((uint64_t *)(dst + 8), vreinterpret_u64_u8(d3u8));
- dst += stride;
- vst1_u64((uint64_t *)dst, vreinterpret_u64_u8(d22u8));
- vst1_u64((uint64_t *)(dst + 8), vreinterpret_u64_u8(d23u8));
- dst += stride;
-
- q0u16 = vdupq_lane_u16(d20u16, 2);
- q8u16 = vdupq_lane_u16(d20u16, 3);
- q1s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q2u16));
- q0s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q3u16));
- q11s16 = vaddq_s16(vreinterpretq_s16_u16(q8u16),
- vreinterpretq_s16_u16(q2u16));
- q8s16 = vaddq_s16(vreinterpretq_s16_u16(q8u16),
- vreinterpretq_s16_u16(q3u16));
- d2u8 = vqmovun_s16(q1s16);
- d3u8 = vqmovun_s16(q0s16);
- d22u8 = vqmovun_s16(q11s16);
- d23u8 = vqmovun_s16(q8s16);
- vst1_u64((uint64_t *)dst, vreinterpret_u64_u8(d2u8));
- vst1_u64((uint64_t *)(dst + 8), vreinterpret_u64_u8(d3u8));
- dst += stride;
- vst1_u64((uint64_t *)dst, vreinterpret_u64_u8(d22u8));
- vst1_u64((uint64_t *)(dst + 8), vreinterpret_u64_u8(d23u8));
- dst += stride;
- }
- }
-}
-
-void vpx_tm_predictor_32x32_neon(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- int j, k;
- uint16x8_t q0u16, q3u16, q8u16, q9u16, q10u16, q11u16;
- uint8x16_t q0u8, q1u8, q2u8;
- int16x8_t q12s16, q13s16, q14s16, q15s16;
- uint16x4_t d6u16;
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d26u8;
-
- q0u8 = vld1q_dup_u8(above - 1);
- q1u8 = vld1q_u8(above);
- q2u8 = vld1q_u8(above + 16);
- q8u16 = vsubl_u8(vget_low_u8(q1u8), vget_low_u8(q0u8));
- q9u16 = vsubl_u8(vget_high_u8(q1u8), vget_high_u8(q0u8));
- q10u16 = vsubl_u8(vget_low_u8(q2u8), vget_low_u8(q0u8));
- q11u16 = vsubl_u8(vget_high_u8(q2u8), vget_high_u8(q0u8));
- for (k = 0; k < 4; k++, left += 8) {
- d26u8 = vld1_u8(left);
- q3u16 = vmovl_u8(d26u8);
- d6u16 = vget_low_u16(q3u16);
- for (j = 0; j < 2; j++, d6u16 = vget_high_u16(q3u16)) {
- q0u16 = vdupq_lane_u16(d6u16, 0);
- q12s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q8u16));
- q13s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q9u16));
- q14s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q10u16));
- q15s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q11u16));
- d0u8 = vqmovun_s16(q12s16);
- d1u8 = vqmovun_s16(q13s16);
- d2u8 = vqmovun_s16(q14s16);
- d3u8 = vqmovun_s16(q15s16);
- q0u8 = vcombine_u8(d0u8, d1u8);
- q1u8 = vcombine_u8(d2u8, d3u8);
- vst1q_u64((uint64_t *)dst, vreinterpretq_u64_u8(q0u8));
- vst1q_u64((uint64_t *)(dst + 16), vreinterpretq_u64_u8(q1u8));
- dst += stride;
-
- q0u16 = vdupq_lane_u16(d6u16, 1);
- q12s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q8u16));
- q13s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q9u16));
- q14s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q10u16));
- q15s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q11u16));
- d0u8 = vqmovun_s16(q12s16);
- d1u8 = vqmovun_s16(q13s16);
- d2u8 = vqmovun_s16(q14s16);
- d3u8 = vqmovun_s16(q15s16);
- q0u8 = vcombine_u8(d0u8, d1u8);
- q1u8 = vcombine_u8(d2u8, d3u8);
- vst1q_u64((uint64_t *)dst, vreinterpretq_u64_u8(q0u8));
- vst1q_u64((uint64_t *)(dst + 16), vreinterpretq_u64_u8(q1u8));
- dst += stride;
-
- q0u16 = vdupq_lane_u16(d6u16, 2);
- q12s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q8u16));
- q13s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q9u16));
- q14s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q10u16));
- q15s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q11u16));
- d0u8 = vqmovun_s16(q12s16);
- d1u8 = vqmovun_s16(q13s16);
- d2u8 = vqmovun_s16(q14s16);
- d3u8 = vqmovun_s16(q15s16);
- q0u8 = vcombine_u8(d0u8, d1u8);
- q1u8 = vcombine_u8(d2u8, d3u8);
- vst1q_u64((uint64_t *)dst, vreinterpretq_u64_u8(q0u8));
- vst1q_u64((uint64_t *)(dst + 16), vreinterpretq_u64_u8(q1u8));
- dst += stride;
-
- q0u16 = vdupq_lane_u16(d6u16, 3);
- q12s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q8u16));
- q13s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q9u16));
- q14s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q10u16));
- q15s16 = vaddq_s16(vreinterpretq_s16_u16(q0u16),
- vreinterpretq_s16_u16(q11u16));
- d0u8 = vqmovun_s16(q12s16);
- d1u8 = vqmovun_s16(q13s16);
- d2u8 = vqmovun_s16(q14s16);
- d3u8 = vqmovun_s16(q15s16);
- q0u8 = vcombine_u8(d0u8, d1u8);
- q1u8 = vcombine_u8(d2u8, d3u8);
- vst1q_u64((uint64_t *)dst, vreinterpretq_u64_u8(q0u8));
- vst1q_u64((uint64_t *)(dst + 16), vreinterpretq_u64_u8(q1u8));
- dst += stride;
- }
- }
-}
-#endif // !HAVE_NEON_ASM
diff --git a/thirdparty/libvpx/vpx_dsp/arm/loopfilter_16_neon.c b/thirdparty/libvpx/vpx_dsp/arm/loopfilter_16_neon.c
deleted file mode 100644
index d24e6adc8a..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/loopfilter_16_neon.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_dsp_rtcd.h"
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-
-static INLINE void loop_filter_neon_16(
- uint8x16_t qblimit, // blimit
- uint8x16_t qlimit, // limit
- uint8x16_t qthresh, // thresh
- uint8x16_t q3, // p3
- uint8x16_t q4, // p2
- uint8x16_t q5, // p1
- uint8x16_t q6, // p0
- uint8x16_t q7, // q0
- uint8x16_t q8, // q1
- uint8x16_t q9, // q2
- uint8x16_t q10, // q3
- uint8x16_t *q5r, // p1
- uint8x16_t *q6r, // p0
- uint8x16_t *q7r, // q0
- uint8x16_t *q8r) { // q1
- uint8x16_t q1u8, q2u8, q11u8, q12u8, q13u8, q14u8, q15u8;
- int16x8_t q2s16, q11s16;
- uint16x8_t q4u16;
- int8x16_t q0s8, q1s8, q2s8, q11s8, q12s8, q13s8;
- int8x8_t d2s8, d3s8;
-
- q11u8 = vabdq_u8(q3, q4);
- q12u8 = vabdq_u8(q4, q5);
- q13u8 = vabdq_u8(q5, q6);
- q14u8 = vabdq_u8(q8, q7);
- q3 = vabdq_u8(q9, q8);
- q4 = vabdq_u8(q10, q9);
-
- q11u8 = vmaxq_u8(q11u8, q12u8);
- q12u8 = vmaxq_u8(q13u8, q14u8);
- q3 = vmaxq_u8(q3, q4);
- q15u8 = vmaxq_u8(q11u8, q12u8);
-
- q9 = vabdq_u8(q6, q7);
-
- // vp8_hevmask
- q13u8 = vcgtq_u8(q13u8, qthresh);
- q14u8 = vcgtq_u8(q14u8, qthresh);
- q15u8 = vmaxq_u8(q15u8, q3);
-
- q2u8 = vabdq_u8(q5, q8);
- q9 = vqaddq_u8(q9, q9);
-
- q15u8 = vcgeq_u8(qlimit, q15u8);
-
- // vp8_filter() function
- // convert to signed
- q10 = vdupq_n_u8(0x80);
- q8 = veorq_u8(q8, q10);
- q7 = veorq_u8(q7, q10);
- q6 = veorq_u8(q6, q10);
- q5 = veorq_u8(q5, q10);
-
- q2u8 = vshrq_n_u8(q2u8, 1);
- q9 = vqaddq_u8(q9, q2u8);
-
- q2s16 = vsubl_s8(vget_low_s8(vreinterpretq_s8_u8(q7)),
- vget_low_s8(vreinterpretq_s8_u8(q6)));
- q11s16 = vsubl_s8(vget_high_s8(vreinterpretq_s8_u8(q7)),
- vget_high_s8(vreinterpretq_s8_u8(q6)));
-
- q9 = vcgeq_u8(qblimit, q9);
-
- q1s8 = vqsubq_s8(vreinterpretq_s8_u8(q5),
- vreinterpretq_s8_u8(q8));
-
- q14u8 = vorrq_u8(q13u8, q14u8);
-
- q4u16 = vdupq_n_u16(3);
- q2s16 = vmulq_s16(q2s16, vreinterpretq_s16_u16(q4u16));
- q11s16 = vmulq_s16(q11s16, vreinterpretq_s16_u16(q4u16));
-
- q1u8 = vandq_u8(vreinterpretq_u8_s8(q1s8), q14u8);
- q15u8 = vandq_u8(q15u8, q9);
-
- q1s8 = vreinterpretq_s8_u8(q1u8);
- q2s16 = vaddw_s8(q2s16, vget_low_s8(q1s8));
- q11s16 = vaddw_s8(q11s16, vget_high_s8(q1s8));
-
- q4 = vdupq_n_u8(3);
- q9 = vdupq_n_u8(4);
- // vp8_filter = clamp(vp8_filter + 3 * ( qs0 - ps0))
- d2s8 = vqmovn_s16(q2s16);
- d3s8 = vqmovn_s16(q11s16);
- q1s8 = vcombine_s8(d2s8, d3s8);
- q1u8 = vandq_u8(vreinterpretq_u8_s8(q1s8), q15u8);
- q1s8 = vreinterpretq_s8_u8(q1u8);
-
- q2s8 = vqaddq_s8(q1s8, vreinterpretq_s8_u8(q4));
- q1s8 = vqaddq_s8(q1s8, vreinterpretq_s8_u8(q9));
- q2s8 = vshrq_n_s8(q2s8, 3);
- q1s8 = vshrq_n_s8(q1s8, 3);
-
- q11s8 = vqaddq_s8(vreinterpretq_s8_u8(q6), q2s8);
- q0s8 = vqsubq_s8(vreinterpretq_s8_u8(q7), q1s8);
-
- q1s8 = vrshrq_n_s8(q1s8, 1);
- q1s8 = vbicq_s8(q1s8, vreinterpretq_s8_u8(q14u8));
-
- q13s8 = vqaddq_s8(vreinterpretq_s8_u8(q5), q1s8);
- q12s8 = vqsubq_s8(vreinterpretq_s8_u8(q8), q1s8);
-
- *q8r = veorq_u8(vreinterpretq_u8_s8(q12s8), q10);
- *q7r = veorq_u8(vreinterpretq_u8_s8(q0s8), q10);
- *q6r = veorq_u8(vreinterpretq_u8_s8(q11s8), q10);
- *q5r = veorq_u8(vreinterpretq_u8_s8(q13s8), q10);
- return;
-}
-
-void vpx_lpf_horizontal_4_dual_neon(uint8_t *s, int p /* pitch */,
- const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1) {
- uint8x8_t dblimit0, dlimit0, dthresh0, dblimit1, dlimit1, dthresh1;
- uint8x16_t qblimit, qlimit, qthresh;
- uint8x16_t q3u8, q4u8, q5u8, q6u8, q7u8, q8u8, q9u8, q10u8;
-
- dblimit0 = vld1_u8(blimit0);
- dlimit0 = vld1_u8(limit0);
- dthresh0 = vld1_u8(thresh0);
- dblimit1 = vld1_u8(blimit1);
- dlimit1 = vld1_u8(limit1);
- dthresh1 = vld1_u8(thresh1);
- qblimit = vcombine_u8(dblimit0, dblimit1);
- qlimit = vcombine_u8(dlimit0, dlimit1);
- qthresh = vcombine_u8(dthresh0, dthresh1);
-
- s -= (p << 2);
-
- q3u8 = vld1q_u8(s);
- s += p;
- q4u8 = vld1q_u8(s);
- s += p;
- q5u8 = vld1q_u8(s);
- s += p;
- q6u8 = vld1q_u8(s);
- s += p;
- q7u8 = vld1q_u8(s);
- s += p;
- q8u8 = vld1q_u8(s);
- s += p;
- q9u8 = vld1q_u8(s);
- s += p;
- q10u8 = vld1q_u8(s);
-
- loop_filter_neon_16(qblimit, qlimit, qthresh,
- q3u8, q4u8, q5u8, q6u8, q7u8, q8u8, q9u8, q10u8,
- &q5u8, &q6u8, &q7u8, &q8u8);
-
- s -= (p * 5);
- vst1q_u8(s, q5u8);
- s += p;
- vst1q_u8(s, q6u8);
- s += p;
- vst1q_u8(s, q7u8);
- s += p;
- vst1q_u8(s, q8u8);
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/loopfilter_4_neon.c b/thirdparty/libvpx/vpx_dsp/arm/loopfilter_4_neon.c
deleted file mode 100644
index 7f3ee70b94..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/loopfilter_4_neon.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_dsp_rtcd.h"
-
-static INLINE void loop_filter_neon(
- uint8x8_t dblimit, // flimit
- uint8x8_t dlimit, // limit
- uint8x8_t dthresh, // thresh
- uint8x8_t d3u8, // p3
- uint8x8_t d4u8, // p2
- uint8x8_t d5u8, // p1
- uint8x8_t d6u8, // p0
- uint8x8_t d7u8, // q0
- uint8x8_t d16u8, // q1
- uint8x8_t d17u8, // q2
- uint8x8_t d18u8, // q3
- uint8x8_t *d4ru8, // p1
- uint8x8_t *d5ru8, // p0
- uint8x8_t *d6ru8, // q0
- uint8x8_t *d7ru8) { // q1
- uint8x8_t d19u8, d20u8, d21u8, d22u8, d23u8, d27u8, d28u8;
- int16x8_t q12s16;
- int8x8_t d19s8, d20s8, d21s8, d26s8, d27s8, d28s8;
-
- d19u8 = vabd_u8(d3u8, d4u8);
- d20u8 = vabd_u8(d4u8, d5u8);
- d21u8 = vabd_u8(d5u8, d6u8);
- d22u8 = vabd_u8(d16u8, d7u8);
- d3u8 = vabd_u8(d17u8, d16u8);
- d4u8 = vabd_u8(d18u8, d17u8);
-
- d19u8 = vmax_u8(d19u8, d20u8);
- d20u8 = vmax_u8(d21u8, d22u8);
- d3u8 = vmax_u8(d3u8, d4u8);
- d23u8 = vmax_u8(d19u8, d20u8);
-
- d17u8 = vabd_u8(d6u8, d7u8);
-
- d21u8 = vcgt_u8(d21u8, dthresh);
- d22u8 = vcgt_u8(d22u8, dthresh);
- d23u8 = vmax_u8(d23u8, d3u8);
-
- d28u8 = vabd_u8(d5u8, d16u8);
- d17u8 = vqadd_u8(d17u8, d17u8);
-
- d23u8 = vcge_u8(dlimit, d23u8);
-
- d18u8 = vdup_n_u8(0x80);
- d5u8 = veor_u8(d5u8, d18u8);
- d6u8 = veor_u8(d6u8, d18u8);
- d7u8 = veor_u8(d7u8, d18u8);
- d16u8 = veor_u8(d16u8, d18u8);
-
- d28u8 = vshr_n_u8(d28u8, 1);
- d17u8 = vqadd_u8(d17u8, d28u8);
-
- d19u8 = vdup_n_u8(3);
-
- d28s8 = vsub_s8(vreinterpret_s8_u8(d7u8),
- vreinterpret_s8_u8(d6u8));
-
- d17u8 = vcge_u8(dblimit, d17u8);
-
- d27s8 = vqsub_s8(vreinterpret_s8_u8(d5u8),
- vreinterpret_s8_u8(d16u8));
-
- d22u8 = vorr_u8(d21u8, d22u8);
-
- q12s16 = vmull_s8(d28s8, vreinterpret_s8_u8(d19u8));
-
- d27u8 = vand_u8(vreinterpret_u8_s8(d27s8), d22u8);
- d23u8 = vand_u8(d23u8, d17u8);
-
- q12s16 = vaddw_s8(q12s16, vreinterpret_s8_u8(d27u8));
-
- d17u8 = vdup_n_u8(4);
-
- d27s8 = vqmovn_s16(q12s16);
- d27u8 = vand_u8(vreinterpret_u8_s8(d27s8), d23u8);
- d27s8 = vreinterpret_s8_u8(d27u8);
-
- d28s8 = vqadd_s8(d27s8, vreinterpret_s8_u8(d19u8));
- d27s8 = vqadd_s8(d27s8, vreinterpret_s8_u8(d17u8));
- d28s8 = vshr_n_s8(d28s8, 3);
- d27s8 = vshr_n_s8(d27s8, 3);
-
- d19s8 = vqadd_s8(vreinterpret_s8_u8(d6u8), d28s8);
- d26s8 = vqsub_s8(vreinterpret_s8_u8(d7u8), d27s8);
-
- d27s8 = vrshr_n_s8(d27s8, 1);
- d27s8 = vbic_s8(d27s8, vreinterpret_s8_u8(d22u8));
-
- d21s8 = vqadd_s8(vreinterpret_s8_u8(d5u8), d27s8);
- d20s8 = vqsub_s8(vreinterpret_s8_u8(d16u8), d27s8);
-
- *d4ru8 = veor_u8(vreinterpret_u8_s8(d21s8), d18u8);
- *d5ru8 = veor_u8(vreinterpret_u8_s8(d19s8), d18u8);
- *d6ru8 = veor_u8(vreinterpret_u8_s8(d26s8), d18u8);
- *d7ru8 = veor_u8(vreinterpret_u8_s8(d20s8), d18u8);
- return;
-}
-
-void vpx_lpf_horizontal_4_neon(
- uint8_t *src,
- int pitch,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh) {
- int i;
- uint8_t *s, *psrc;
- uint8x8_t dblimit, dlimit, dthresh;
- uint8x8_t d3u8, d4u8, d5u8, d6u8, d7u8, d16u8, d17u8, d18u8;
-
- dblimit = vld1_u8(blimit);
- dlimit = vld1_u8(limit);
- dthresh = vld1_u8(thresh);
-
- psrc = src - (pitch << 2);
- for (i = 0; i < 1; i++) {
- s = psrc + i * 8;
-
- d3u8 = vld1_u8(s);
- s += pitch;
- d4u8 = vld1_u8(s);
- s += pitch;
- d5u8 = vld1_u8(s);
- s += pitch;
- d6u8 = vld1_u8(s);
- s += pitch;
- d7u8 = vld1_u8(s);
- s += pitch;
- d16u8 = vld1_u8(s);
- s += pitch;
- d17u8 = vld1_u8(s);
- s += pitch;
- d18u8 = vld1_u8(s);
-
- loop_filter_neon(dblimit, dlimit, dthresh,
- d3u8, d4u8, d5u8, d6u8, d7u8, d16u8, d17u8, d18u8,
- &d4u8, &d5u8, &d6u8, &d7u8);
-
- s -= (pitch * 5);
- vst1_u8(s, d4u8);
- s += pitch;
- vst1_u8(s, d5u8);
- s += pitch;
- vst1_u8(s, d6u8);
- s += pitch;
- vst1_u8(s, d7u8);
- }
- return;
-}
-
-void vpx_lpf_vertical_4_neon(
- uint8_t *src,
- int pitch,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh) {
- int i, pitch8;
- uint8_t *s;
- uint8x8_t dblimit, dlimit, dthresh;
- uint8x8_t d3u8, d4u8, d5u8, d6u8, d7u8, d16u8, d17u8, d18u8;
- uint32x2x2_t d2tmp0, d2tmp1, d2tmp2, d2tmp3;
- uint16x4x2_t d2tmp4, d2tmp5, d2tmp6, d2tmp7;
- uint8x8x2_t d2tmp8, d2tmp9, d2tmp10, d2tmp11;
- uint8x8x4_t d4Result;
-
- dblimit = vld1_u8(blimit);
- dlimit = vld1_u8(limit);
- dthresh = vld1_u8(thresh);
-
- pitch8 = pitch * 8;
- for (i = 0; i < 1; i++, src += pitch8) {
- s = src - (i + 1) * 4;
-
- d3u8 = vld1_u8(s);
- s += pitch;
- d4u8 = vld1_u8(s);
- s += pitch;
- d5u8 = vld1_u8(s);
- s += pitch;
- d6u8 = vld1_u8(s);
- s += pitch;
- d7u8 = vld1_u8(s);
- s += pitch;
- d16u8 = vld1_u8(s);
- s += pitch;
- d17u8 = vld1_u8(s);
- s += pitch;
- d18u8 = vld1_u8(s);
-
- d2tmp0 = vtrn_u32(vreinterpret_u32_u8(d3u8),
- vreinterpret_u32_u8(d7u8));
- d2tmp1 = vtrn_u32(vreinterpret_u32_u8(d4u8),
- vreinterpret_u32_u8(d16u8));
- d2tmp2 = vtrn_u32(vreinterpret_u32_u8(d5u8),
- vreinterpret_u32_u8(d17u8));
- d2tmp3 = vtrn_u32(vreinterpret_u32_u8(d6u8),
- vreinterpret_u32_u8(d18u8));
-
- d2tmp4 = vtrn_u16(vreinterpret_u16_u32(d2tmp0.val[0]),
- vreinterpret_u16_u32(d2tmp2.val[0]));
- d2tmp5 = vtrn_u16(vreinterpret_u16_u32(d2tmp1.val[0]),
- vreinterpret_u16_u32(d2tmp3.val[0]));
- d2tmp6 = vtrn_u16(vreinterpret_u16_u32(d2tmp0.val[1]),
- vreinterpret_u16_u32(d2tmp2.val[1]));
- d2tmp7 = vtrn_u16(vreinterpret_u16_u32(d2tmp1.val[1]),
- vreinterpret_u16_u32(d2tmp3.val[1]));
-
- d2tmp8 = vtrn_u8(vreinterpret_u8_u16(d2tmp4.val[0]),
- vreinterpret_u8_u16(d2tmp5.val[0]));
- d2tmp9 = vtrn_u8(vreinterpret_u8_u16(d2tmp4.val[1]),
- vreinterpret_u8_u16(d2tmp5.val[1]));
- d2tmp10 = vtrn_u8(vreinterpret_u8_u16(d2tmp6.val[0]),
- vreinterpret_u8_u16(d2tmp7.val[0]));
- d2tmp11 = vtrn_u8(vreinterpret_u8_u16(d2tmp6.val[1]),
- vreinterpret_u8_u16(d2tmp7.val[1]));
-
- d3u8 = d2tmp8.val[0];
- d4u8 = d2tmp8.val[1];
- d5u8 = d2tmp9.val[0];
- d6u8 = d2tmp9.val[1];
- d7u8 = d2tmp10.val[0];
- d16u8 = d2tmp10.val[1];
- d17u8 = d2tmp11.val[0];
- d18u8 = d2tmp11.val[1];
-
- loop_filter_neon(dblimit, dlimit, dthresh,
- d3u8, d4u8, d5u8, d6u8, d7u8, d16u8, d17u8, d18u8,
- &d4u8, &d5u8, &d6u8, &d7u8);
-
- d4Result.val[0] = d4u8;
- d4Result.val[1] = d5u8;
- d4Result.val[2] = d6u8;
- d4Result.val[3] = d7u8;
-
- src -= 2;
- vst4_lane_u8(src, d4Result, 0);
- src += pitch;
- vst4_lane_u8(src, d4Result, 1);
- src += pitch;
- vst4_lane_u8(src, d4Result, 2);
- src += pitch;
- vst4_lane_u8(src, d4Result, 3);
- src += pitch;
- vst4_lane_u8(src, d4Result, 4);
- src += pitch;
- vst4_lane_u8(src, d4Result, 5);
- src += pitch;
- vst4_lane_u8(src, d4Result, 6);
- src += pitch;
- vst4_lane_u8(src, d4Result, 7);
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/loopfilter_8_neon.c b/thirdparty/libvpx/vpx_dsp/arm/loopfilter_8_neon.c
deleted file mode 100644
index ec3757380d..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/loopfilter_8_neon.c
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_dsp_rtcd.h"
-
-static INLINE void mbloop_filter_neon(
- uint8x8_t dblimit, // mblimit
- uint8x8_t dlimit, // limit
- uint8x8_t dthresh, // thresh
- uint8x8_t d3u8, // p2
- uint8x8_t d4u8, // p2
- uint8x8_t d5u8, // p1
- uint8x8_t d6u8, // p0
- uint8x8_t d7u8, // q0
- uint8x8_t d16u8, // q1
- uint8x8_t d17u8, // q2
- uint8x8_t d18u8, // q3
- uint8x8_t *d0ru8, // p1
- uint8x8_t *d1ru8, // p1
- uint8x8_t *d2ru8, // p0
- uint8x8_t *d3ru8, // q0
- uint8x8_t *d4ru8, // q1
- uint8x8_t *d5ru8) { // q1
- uint32_t flat;
- uint8x8_t d0u8, d1u8, d2u8, d19u8, d20u8, d21u8, d22u8, d23u8, d24u8;
- uint8x8_t d25u8, d26u8, d27u8, d28u8, d29u8, d30u8, d31u8;
- int16x8_t q15s16;
- uint16x8_t q10u16, q14u16;
- int8x8_t d21s8, d24s8, d25s8, d26s8, d28s8, d29s8, d30s8;
-
- d19u8 = vabd_u8(d3u8, d4u8);
- d20u8 = vabd_u8(d4u8, d5u8);
- d21u8 = vabd_u8(d5u8, d6u8);
- d22u8 = vabd_u8(d16u8, d7u8);
- d23u8 = vabd_u8(d17u8, d16u8);
- d24u8 = vabd_u8(d18u8, d17u8);
-
- d19u8 = vmax_u8(d19u8, d20u8);
- d20u8 = vmax_u8(d21u8, d22u8);
-
- d25u8 = vabd_u8(d6u8, d4u8);
-
- d23u8 = vmax_u8(d23u8, d24u8);
-
- d26u8 = vabd_u8(d7u8, d17u8);
-
- d19u8 = vmax_u8(d19u8, d20u8);
-
- d24u8 = vabd_u8(d6u8, d7u8);
- d27u8 = vabd_u8(d3u8, d6u8);
- d28u8 = vabd_u8(d18u8, d7u8);
-
- d19u8 = vmax_u8(d19u8, d23u8);
-
- d23u8 = vabd_u8(d5u8, d16u8);
- d24u8 = vqadd_u8(d24u8, d24u8);
-
-
- d19u8 = vcge_u8(dlimit, d19u8);
-
-
- d25u8 = vmax_u8(d25u8, d26u8);
- d26u8 = vmax_u8(d27u8, d28u8);
-
- d23u8 = vshr_n_u8(d23u8, 1);
-
- d25u8 = vmax_u8(d25u8, d26u8);
-
- d24u8 = vqadd_u8(d24u8, d23u8);
-
- d20u8 = vmax_u8(d20u8, d25u8);
-
- d23u8 = vdup_n_u8(1);
- d24u8 = vcge_u8(dblimit, d24u8);
-
- d21u8 = vcgt_u8(d21u8, dthresh);
-
- d20u8 = vcge_u8(d23u8, d20u8);
-
- d19u8 = vand_u8(d19u8, d24u8);
-
- d23u8 = vcgt_u8(d22u8, dthresh);
-
- d20u8 = vand_u8(d20u8, d19u8);
-
- d22u8 = vdup_n_u8(0x80);
-
- d23u8 = vorr_u8(d21u8, d23u8);
-
- q10u16 = vcombine_u16(vreinterpret_u16_u8(d20u8),
- vreinterpret_u16_u8(d21u8));
-
- d30u8 = vshrn_n_u16(q10u16, 4);
- flat = vget_lane_u32(vreinterpret_u32_u8(d30u8), 0);
-
- if (flat == 0xffffffff) { // Check for all 1's, power_branch_only
- d27u8 = vdup_n_u8(3);
- d21u8 = vdup_n_u8(2);
- q14u16 = vaddl_u8(d6u8, d7u8);
- q14u16 = vmlal_u8(q14u16, d3u8, d27u8);
- q14u16 = vmlal_u8(q14u16, d4u8, d21u8);
- q14u16 = vaddw_u8(q14u16, d5u8);
- *d0ru8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d3u8);
- q14u16 = vsubw_u8(q14u16, d4u8);
- q14u16 = vaddw_u8(q14u16, d5u8);
- q14u16 = vaddw_u8(q14u16, d16u8);
- *d1ru8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d3u8);
- q14u16 = vsubw_u8(q14u16, d5u8);
- q14u16 = vaddw_u8(q14u16, d6u8);
- q14u16 = vaddw_u8(q14u16, d17u8);
- *d2ru8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d3u8);
- q14u16 = vsubw_u8(q14u16, d6u8);
- q14u16 = vaddw_u8(q14u16, d7u8);
- q14u16 = vaddw_u8(q14u16, d18u8);
- *d3ru8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d4u8);
- q14u16 = vsubw_u8(q14u16, d7u8);
- q14u16 = vaddw_u8(q14u16, d16u8);
- q14u16 = vaddw_u8(q14u16, d18u8);
- *d4ru8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d5u8);
- q14u16 = vsubw_u8(q14u16, d16u8);
- q14u16 = vaddw_u8(q14u16, d17u8);
- q14u16 = vaddw_u8(q14u16, d18u8);
- *d5ru8 = vqrshrn_n_u16(q14u16, 3);
- } else {
- d21u8 = veor_u8(d7u8, d22u8);
- d24u8 = veor_u8(d6u8, d22u8);
- d25u8 = veor_u8(d5u8, d22u8);
- d26u8 = veor_u8(d16u8, d22u8);
-
- d27u8 = vdup_n_u8(3);
-
- d28s8 = vsub_s8(vreinterpret_s8_u8(d21u8), vreinterpret_s8_u8(d24u8));
- d29s8 = vqsub_s8(vreinterpret_s8_u8(d25u8), vreinterpret_s8_u8(d26u8));
-
- q15s16 = vmull_s8(d28s8, vreinterpret_s8_u8(d27u8));
-
- d29s8 = vand_s8(d29s8, vreinterpret_s8_u8(d23u8));
-
- q15s16 = vaddw_s8(q15s16, d29s8);
-
- d29u8 = vdup_n_u8(4);
-
- d28s8 = vqmovn_s16(q15s16);
-
- d28s8 = vand_s8(d28s8, vreinterpret_s8_u8(d19u8));
-
- d30s8 = vqadd_s8(d28s8, vreinterpret_s8_u8(d27u8));
- d29s8 = vqadd_s8(d28s8, vreinterpret_s8_u8(d29u8));
- d30s8 = vshr_n_s8(d30s8, 3);
- d29s8 = vshr_n_s8(d29s8, 3);
-
- d24s8 = vqadd_s8(vreinterpret_s8_u8(d24u8), d30s8);
- d21s8 = vqsub_s8(vreinterpret_s8_u8(d21u8), d29s8);
-
- d29s8 = vrshr_n_s8(d29s8, 1);
- d29s8 = vbic_s8(d29s8, vreinterpret_s8_u8(d23u8));
-
- d25s8 = vqadd_s8(vreinterpret_s8_u8(d25u8), d29s8);
- d26s8 = vqsub_s8(vreinterpret_s8_u8(d26u8), d29s8);
-
- if (flat == 0) { // filter_branch_only
- *d0ru8 = d4u8;
- *d1ru8 = veor_u8(vreinterpret_u8_s8(d25s8), d22u8);
- *d2ru8 = veor_u8(vreinterpret_u8_s8(d24s8), d22u8);
- *d3ru8 = veor_u8(vreinterpret_u8_s8(d21s8), d22u8);
- *d4ru8 = veor_u8(vreinterpret_u8_s8(d26s8), d22u8);
- *d5ru8 = d17u8;
- return;
- }
-
- d21u8 = veor_u8(vreinterpret_u8_s8(d21s8), d22u8);
- d24u8 = veor_u8(vreinterpret_u8_s8(d24s8), d22u8);
- d25u8 = veor_u8(vreinterpret_u8_s8(d25s8), d22u8);
- d26u8 = veor_u8(vreinterpret_u8_s8(d26s8), d22u8);
-
- d23u8 = vdup_n_u8(2);
- q14u16 = vaddl_u8(d6u8, d7u8);
- q14u16 = vmlal_u8(q14u16, d3u8, d27u8);
- q14u16 = vmlal_u8(q14u16, d4u8, d23u8);
-
- d0u8 = vbsl_u8(d20u8, dblimit, d4u8);
-
- q14u16 = vaddw_u8(q14u16, d5u8);
-
- d1u8 = vbsl_u8(d20u8, dlimit, d25u8);
-
- d30u8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d3u8);
- q14u16 = vsubw_u8(q14u16, d4u8);
- q14u16 = vaddw_u8(q14u16, d5u8);
- q14u16 = vaddw_u8(q14u16, d16u8);
-
- d2u8 = vbsl_u8(d20u8, dthresh, d24u8);
-
- d31u8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d3u8);
- q14u16 = vsubw_u8(q14u16, d5u8);
- q14u16 = vaddw_u8(q14u16, d6u8);
- q14u16 = vaddw_u8(q14u16, d17u8);
-
- *d0ru8 = vbsl_u8(d20u8, d30u8, d0u8);
-
- d23u8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d3u8);
- q14u16 = vsubw_u8(q14u16, d6u8);
- q14u16 = vaddw_u8(q14u16, d7u8);
-
- *d1ru8 = vbsl_u8(d20u8, d31u8, d1u8);
-
- q14u16 = vaddw_u8(q14u16, d18u8);
-
- *d2ru8 = vbsl_u8(d20u8, d23u8, d2u8);
-
- d22u8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d4u8);
- q14u16 = vsubw_u8(q14u16, d7u8);
- q14u16 = vaddw_u8(q14u16, d16u8);
-
- d3u8 = vbsl_u8(d20u8, d3u8, d21u8);
-
- q14u16 = vaddw_u8(q14u16, d18u8);
-
- d4u8 = vbsl_u8(d20u8, d4u8, d26u8);
-
- d6u8 = vqrshrn_n_u16(q14u16, 3);
-
- q14u16 = vsubw_u8(q14u16, d5u8);
- q14u16 = vsubw_u8(q14u16, d16u8);
- q14u16 = vaddw_u8(q14u16, d17u8);
- q14u16 = vaddw_u8(q14u16, d18u8);
-
- d5u8 = vbsl_u8(d20u8, d5u8, d17u8);
-
- d7u8 = vqrshrn_n_u16(q14u16, 3);
-
- *d3ru8 = vbsl_u8(d20u8, d22u8, d3u8);
- *d4ru8 = vbsl_u8(d20u8, d6u8, d4u8);
- *d5ru8 = vbsl_u8(d20u8, d7u8, d5u8);
- }
- return;
-}
-
-void vpx_lpf_horizontal_8_neon(
- uint8_t *src,
- int pitch,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh) {
- int i;
- uint8_t *s, *psrc;
- uint8x8_t dblimit, dlimit, dthresh;
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8;
- uint8x8_t d16u8, d17u8, d18u8;
-
- dblimit = vld1_u8(blimit);
- dlimit = vld1_u8(limit);
- dthresh = vld1_u8(thresh);
-
- psrc = src - (pitch << 2);
- for (i = 0; i < 1; i++) {
- s = psrc + i * 8;
-
- d3u8 = vld1_u8(s);
- s += pitch;
- d4u8 = vld1_u8(s);
- s += pitch;
- d5u8 = vld1_u8(s);
- s += pitch;
- d6u8 = vld1_u8(s);
- s += pitch;
- d7u8 = vld1_u8(s);
- s += pitch;
- d16u8 = vld1_u8(s);
- s += pitch;
- d17u8 = vld1_u8(s);
- s += pitch;
- d18u8 = vld1_u8(s);
-
- mbloop_filter_neon(dblimit, dlimit, dthresh,
- d3u8, d4u8, d5u8, d6u8, d7u8, d16u8, d17u8, d18u8,
- &d0u8, &d1u8, &d2u8, &d3u8, &d4u8, &d5u8);
-
- s -= (pitch * 6);
- vst1_u8(s, d0u8);
- s += pitch;
- vst1_u8(s, d1u8);
- s += pitch;
- vst1_u8(s, d2u8);
- s += pitch;
- vst1_u8(s, d3u8);
- s += pitch;
- vst1_u8(s, d4u8);
- s += pitch;
- vst1_u8(s, d5u8);
- }
- return;
-}
-
-void vpx_lpf_vertical_8_neon(
- uint8_t *src,
- int pitch,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh) {
- int i;
- uint8_t *s;
- uint8x8_t dblimit, dlimit, dthresh;
- uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8;
- uint8x8_t d16u8, d17u8, d18u8;
- uint32x2x2_t d2tmp0, d2tmp1, d2tmp2, d2tmp3;
- uint16x4x2_t d2tmp4, d2tmp5, d2tmp6, d2tmp7;
- uint8x8x2_t d2tmp8, d2tmp9, d2tmp10, d2tmp11;
- uint8x8x4_t d4Result;
- uint8x8x2_t d2Result;
-
- dblimit = vld1_u8(blimit);
- dlimit = vld1_u8(limit);
- dthresh = vld1_u8(thresh);
-
- for (i = 0; i < 1; i++) {
- s = src + (i * (pitch << 3)) - 4;
-
- d3u8 = vld1_u8(s);
- s += pitch;
- d4u8 = vld1_u8(s);
- s += pitch;
- d5u8 = vld1_u8(s);
- s += pitch;
- d6u8 = vld1_u8(s);
- s += pitch;
- d7u8 = vld1_u8(s);
- s += pitch;
- d16u8 = vld1_u8(s);
- s += pitch;
- d17u8 = vld1_u8(s);
- s += pitch;
- d18u8 = vld1_u8(s);
-
- d2tmp0 = vtrn_u32(vreinterpret_u32_u8(d3u8),
- vreinterpret_u32_u8(d7u8));
- d2tmp1 = vtrn_u32(vreinterpret_u32_u8(d4u8),
- vreinterpret_u32_u8(d16u8));
- d2tmp2 = vtrn_u32(vreinterpret_u32_u8(d5u8),
- vreinterpret_u32_u8(d17u8));
- d2tmp3 = vtrn_u32(vreinterpret_u32_u8(d6u8),
- vreinterpret_u32_u8(d18u8));
-
- d2tmp4 = vtrn_u16(vreinterpret_u16_u32(d2tmp0.val[0]),
- vreinterpret_u16_u32(d2tmp2.val[0]));
- d2tmp5 = vtrn_u16(vreinterpret_u16_u32(d2tmp1.val[0]),
- vreinterpret_u16_u32(d2tmp3.val[0]));
- d2tmp6 = vtrn_u16(vreinterpret_u16_u32(d2tmp0.val[1]),
- vreinterpret_u16_u32(d2tmp2.val[1]));
- d2tmp7 = vtrn_u16(vreinterpret_u16_u32(d2tmp1.val[1]),
- vreinterpret_u16_u32(d2tmp3.val[1]));
-
- d2tmp8 = vtrn_u8(vreinterpret_u8_u16(d2tmp4.val[0]),
- vreinterpret_u8_u16(d2tmp5.val[0]));
- d2tmp9 = vtrn_u8(vreinterpret_u8_u16(d2tmp4.val[1]),
- vreinterpret_u8_u16(d2tmp5.val[1]));
- d2tmp10 = vtrn_u8(vreinterpret_u8_u16(d2tmp6.val[0]),
- vreinterpret_u8_u16(d2tmp7.val[0]));
- d2tmp11 = vtrn_u8(vreinterpret_u8_u16(d2tmp6.val[1]),
- vreinterpret_u8_u16(d2tmp7.val[1]));
-
- d3u8 = d2tmp8.val[0];
- d4u8 = d2tmp8.val[1];
- d5u8 = d2tmp9.val[0];
- d6u8 = d2tmp9.val[1];
- d7u8 = d2tmp10.val[0];
- d16u8 = d2tmp10.val[1];
- d17u8 = d2tmp11.val[0];
- d18u8 = d2tmp11.val[1];
-
- mbloop_filter_neon(dblimit, dlimit, dthresh,
- d3u8, d4u8, d5u8, d6u8, d7u8, d16u8, d17u8, d18u8,
- &d0u8, &d1u8, &d2u8, &d3u8, &d4u8, &d5u8);
-
- d4Result.val[0] = d0u8;
- d4Result.val[1] = d1u8;
- d4Result.val[2] = d2u8;
- d4Result.val[3] = d3u8;
-
- d2Result.val[0] = d4u8;
- d2Result.val[1] = d5u8;
-
- s = src - 3;
- vst4_lane_u8(s, d4Result, 0);
- s += pitch;
- vst4_lane_u8(s, d4Result, 1);
- s += pitch;
- vst4_lane_u8(s, d4Result, 2);
- s += pitch;
- vst4_lane_u8(s, d4Result, 3);
- s += pitch;
- vst4_lane_u8(s, d4Result, 4);
- s += pitch;
- vst4_lane_u8(s, d4Result, 5);
- s += pitch;
- vst4_lane_u8(s, d4Result, 6);
- s += pitch;
- vst4_lane_u8(s, d4Result, 7);
-
- s = src + 1;
- vst2_lane_u8(s, d2Result, 0);
- s += pitch;
- vst2_lane_u8(s, d2Result, 1);
- s += pitch;
- vst2_lane_u8(s, d2Result, 2);
- s += pitch;
- vst2_lane_u8(s, d2Result, 3);
- s += pitch;
- vst2_lane_u8(s, d2Result, 4);
- s += pitch;
- vst2_lane_u8(s, d2Result, 5);
- s += pitch;
- vst2_lane_u8(s, d2Result, 6);
- s += pitch;
- vst2_lane_u8(s, d2Result, 7);
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/loopfilter_neon.c b/thirdparty/libvpx/vpx_dsp/arm/loopfilter_neon.c
deleted file mode 100644
index aa31f29358..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/loopfilter_neon.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_dsp_rtcd.h"
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-
-void vpx_lpf_vertical_4_dual_neon(uint8_t *s, int p,
- const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1) {
- vpx_lpf_vertical_4_neon(s, p, blimit0, limit0, thresh0);
- vpx_lpf_vertical_4_neon(s + 8 * p, p, blimit1, limit1, thresh1);
-}
-
-#if HAVE_NEON_ASM
-void vpx_lpf_horizontal_8_dual_neon(uint8_t *s, int p /* pitch */,
- const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1) {
- vpx_lpf_horizontal_8_neon(s, p, blimit0, limit0, thresh0);
- vpx_lpf_horizontal_8_neon(s + 8, p, blimit1, limit1, thresh1);
-}
-
-void vpx_lpf_vertical_8_dual_neon(uint8_t *s, int p,
- const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1) {
- vpx_lpf_vertical_8_neon(s, p, blimit0, limit0, thresh0);
- vpx_lpf_vertical_8_neon(s + 8 * p, p, blimit1, limit1, thresh1);
-}
-
-void vpx_lpf_vertical_16_dual_neon(uint8_t *s, int p,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh) {
- vpx_lpf_vertical_16_neon(s, p, blimit, limit, thresh);
- vpx_lpf_vertical_16_neon(s + 8 * p, p, blimit, limit, thresh);
-}
-#endif // HAVE_NEON_ASM
diff --git a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve8_avg_neon.c b/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve8_avg_neon.c
deleted file mode 100644
index 8632250138..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve8_avg_neon.c
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include <assert.h>
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-
-static INLINE int32x4_t MULTIPLY_BY_Q0(
- int16x4_t dsrc0,
- int16x4_t dsrc1,
- int16x4_t dsrc2,
- int16x4_t dsrc3,
- int16x4_t dsrc4,
- int16x4_t dsrc5,
- int16x4_t dsrc6,
- int16x4_t dsrc7,
- int16x8_t q0s16) {
- int32x4_t qdst;
- int16x4_t d0s16, d1s16;
-
- d0s16 = vget_low_s16(q0s16);
- d1s16 = vget_high_s16(q0s16);
-
- qdst = vmull_lane_s16(dsrc0, d0s16, 0);
- qdst = vmlal_lane_s16(qdst, dsrc1, d0s16, 1);
- qdst = vmlal_lane_s16(qdst, dsrc2, d0s16, 2);
- qdst = vmlal_lane_s16(qdst, dsrc3, d0s16, 3);
- qdst = vmlal_lane_s16(qdst, dsrc4, d1s16, 0);
- qdst = vmlal_lane_s16(qdst, dsrc5, d1s16, 1);
- qdst = vmlal_lane_s16(qdst, dsrc6, d1s16, 2);
- qdst = vmlal_lane_s16(qdst, dsrc7, d1s16, 3);
- return qdst;
-}
-
-void vpx_convolve8_avg_horiz_neon(
- const uint8_t *src,
- ptrdiff_t src_stride,
- uint8_t *dst,
- ptrdiff_t dst_stride,
- const int16_t *filter_x,
- int x_step_q4,
- const int16_t *filter_y, // unused
- int y_step_q4, // unused
- int w,
- int h) {
- int width;
- const uint8_t *s;
- uint8_t *d;
- uint8x8_t d2u8, d3u8, d24u8, d25u8, d26u8, d27u8, d28u8, d29u8;
- uint32x2_t d2u32, d3u32, d6u32, d7u32, d28u32, d29u32, d30u32, d31u32;
- uint8x16_t q1u8, q3u8, q12u8, q13u8, q14u8, q15u8;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16;
- uint16x4_t d2u16, d3u16, d4u16, d5u16, d16u16, d17u16, d18u16, d19u16;
- int16x8_t q0s16;
- uint16x8_t q1u16, q2u16, q8u16, q9u16, q10u16, q11u16, q12u16, q13u16;
- int32x4_t q1s32, q2s32, q14s32, q15s32;
- uint16x8x2_t q0x2u16;
- uint8x8x2_t d0x2u8, d1x2u8;
- uint32x2x2_t d0x2u32;
- uint16x4x2_t d0x2u16, d1x2u16;
- uint32x4x2_t q0x2u32;
-
- assert(x_step_q4 == 16);
-
- q0s16 = vld1q_s16(filter_x);
-
- src -= 3; // adjust for taps
- for (; h > 0; h -= 4) { // loop_horiz_v
- s = src;
- d24u8 = vld1_u8(s);
- s += src_stride;
- d25u8 = vld1_u8(s);
- s += src_stride;
- d26u8 = vld1_u8(s);
- s += src_stride;
- d27u8 = vld1_u8(s);
-
- q12u8 = vcombine_u8(d24u8, d25u8);
- q13u8 = vcombine_u8(d26u8, d27u8);
-
- q0x2u16 = vtrnq_u16(vreinterpretq_u16_u8(q12u8),
- vreinterpretq_u16_u8(q13u8));
- d24u8 = vreinterpret_u8_u16(vget_low_u16(q0x2u16.val[0]));
- d25u8 = vreinterpret_u8_u16(vget_high_u16(q0x2u16.val[0]));
- d26u8 = vreinterpret_u8_u16(vget_low_u16(q0x2u16.val[1]));
- d27u8 = vreinterpret_u8_u16(vget_high_u16(q0x2u16.val[1]));
- d0x2u8 = vtrn_u8(d24u8, d25u8);
- d1x2u8 = vtrn_u8(d26u8, d27u8);
-
- __builtin_prefetch(src + src_stride * 4);
- __builtin_prefetch(src + src_stride * 5);
-
- q8u16 = vmovl_u8(d0x2u8.val[0]);
- q9u16 = vmovl_u8(d0x2u8.val[1]);
- q10u16 = vmovl_u8(d1x2u8.val[0]);
- q11u16 = vmovl_u8(d1x2u8.val[1]);
-
- src += 7;
- d16u16 = vget_low_u16(q8u16);
- d17u16 = vget_high_u16(q8u16);
- d18u16 = vget_low_u16(q9u16);
- d19u16 = vget_high_u16(q9u16);
- q8u16 = vcombine_u16(d16u16, d18u16); // vswp 17 18
- q9u16 = vcombine_u16(d17u16, d19u16);
-
- d20s16 = vreinterpret_s16_u16(vget_low_u16(q10u16));
- d23s16 = vreinterpret_s16_u16(vget_high_u16(q10u16)); // vmov 23 21
- for (width = w;
- width > 0;
- width -= 4, src += 4, dst += 4) { // loop_horiz
- s = src;
- d28u32 = vld1_dup_u32((const uint32_t *)s);
- s += src_stride;
- d29u32 = vld1_dup_u32((const uint32_t *)s);
- s += src_stride;
- d31u32 = vld1_dup_u32((const uint32_t *)s);
- s += src_stride;
- d30u32 = vld1_dup_u32((const uint32_t *)s);
-
- __builtin_prefetch(src + 64);
-
- d0x2u16 = vtrn_u16(vreinterpret_u16_u32(d28u32),
- vreinterpret_u16_u32(d31u32));
- d1x2u16 = vtrn_u16(vreinterpret_u16_u32(d29u32),
- vreinterpret_u16_u32(d30u32));
- d0x2u8 = vtrn_u8(vreinterpret_u8_u16(d0x2u16.val[0]), // d28
- vreinterpret_u8_u16(d1x2u16.val[0])); // d29
- d1x2u8 = vtrn_u8(vreinterpret_u8_u16(d0x2u16.val[1]), // d31
- vreinterpret_u8_u16(d1x2u16.val[1])); // d30
-
- __builtin_prefetch(src + 64 + src_stride);
-
- q14u8 = vcombine_u8(d0x2u8.val[0], d0x2u8.val[1]);
- q15u8 = vcombine_u8(d1x2u8.val[1], d1x2u8.val[0]);
- q0x2u32 = vtrnq_u32(vreinterpretq_u32_u8(q14u8),
- vreinterpretq_u32_u8(q15u8));
-
- d28u8 = vreinterpret_u8_u32(vget_low_u32(q0x2u32.val[0]));
- d29u8 = vreinterpret_u8_u32(vget_high_u32(q0x2u32.val[0]));
- q12u16 = vmovl_u8(d28u8);
- q13u16 = vmovl_u8(d29u8);
-
- __builtin_prefetch(src + 64 + src_stride * 2);
-
- d = dst;
- d6u32 = vld1_lane_u32((const uint32_t *)d, d6u32, 0);
- d += dst_stride;
- d7u32 = vld1_lane_u32((const uint32_t *)d, d7u32, 0);
- d += dst_stride;
- d6u32 = vld1_lane_u32((const uint32_t *)d, d6u32, 1);
- d += dst_stride;
- d7u32 = vld1_lane_u32((const uint32_t *)d, d7u32, 1);
-
- d16s16 = vreinterpret_s16_u16(vget_low_u16(q8u16));
- d17s16 = vreinterpret_s16_u16(vget_high_u16(q8u16));
- d18s16 = vreinterpret_s16_u16(vget_low_u16(q9u16));
- d19s16 = vreinterpret_s16_u16(vget_high_u16(q9u16));
- d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
- d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
- d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
- d26s16 = vreinterpret_s16_u16(vget_low_u16(q13u16));
- d27s16 = vreinterpret_s16_u16(vget_high_u16(q13u16));
-
- q1s32 = MULTIPLY_BY_Q0(d16s16, d17s16, d20s16, d22s16,
- d18s16, d19s16, d23s16, d24s16, q0s16);
- q2s32 = MULTIPLY_BY_Q0(d17s16, d20s16, d22s16, d18s16,
- d19s16, d23s16, d24s16, d26s16, q0s16);
- q14s32 = MULTIPLY_BY_Q0(d20s16, d22s16, d18s16, d19s16,
- d23s16, d24s16, d26s16, d27s16, q0s16);
- q15s32 = MULTIPLY_BY_Q0(d22s16, d18s16, d19s16, d23s16,
- d24s16, d26s16, d27s16, d25s16, q0s16);
-
- __builtin_prefetch(src + 64 + src_stride * 3);
-
- d2u16 = vqrshrun_n_s32(q1s32, 7);
- d3u16 = vqrshrun_n_s32(q2s32, 7);
- d4u16 = vqrshrun_n_s32(q14s32, 7);
- d5u16 = vqrshrun_n_s32(q15s32, 7);
-
- q1u16 = vcombine_u16(d2u16, d3u16);
- q2u16 = vcombine_u16(d4u16, d5u16);
-
- d2u8 = vqmovn_u16(q1u16);
- d3u8 = vqmovn_u16(q2u16);
-
- d0x2u16 = vtrn_u16(vreinterpret_u16_u8(d2u8),
- vreinterpret_u16_u8(d3u8));
- d0x2u32 = vtrn_u32(vreinterpret_u32_u16(d0x2u16.val[0]),
- vreinterpret_u32_u16(d0x2u16.val[1]));
- d0x2u8 = vtrn_u8(vreinterpret_u8_u32(d0x2u32.val[0]),
- vreinterpret_u8_u32(d0x2u32.val[1]));
-
- q1u8 = vcombine_u8(d0x2u8.val[0], d0x2u8.val[1]);
- q3u8 = vreinterpretq_u8_u32(vcombine_u32(d6u32, d7u32));
-
- q1u8 = vrhaddq_u8(q1u8, q3u8);
-
- d2u32 = vreinterpret_u32_u8(vget_low_u8(q1u8));
- d3u32 = vreinterpret_u32_u8(vget_high_u8(q1u8));
-
- d = dst;
- vst1_lane_u32((uint32_t *)d, d2u32, 0);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d3u32, 0);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d2u32, 1);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d3u32, 1);
-
- q8u16 = q9u16;
- d20s16 = d23s16;
- q11u16 = q12u16;
- q9u16 = q13u16;
- d23s16 = vreinterpret_s16_u16(vget_high_u16(q11u16));
- }
- src += src_stride * 4 - w - 7;
- dst += dst_stride * 4 - w;
- }
- return;
-}
-
-void vpx_convolve8_avg_vert_neon(
- const uint8_t *src,
- ptrdiff_t src_stride,
- uint8_t *dst,
- ptrdiff_t dst_stride,
- const int16_t *filter_x, // unused
- int x_step_q4, // unused
- const int16_t *filter_y,
- int y_step_q4,
- int w,
- int h) {
- int height;
- const uint8_t *s;
- uint8_t *d;
- uint8x8_t d2u8, d3u8;
- uint32x2_t d2u32, d3u32, d6u32, d7u32;
- uint32x2_t d16u32, d18u32, d20u32, d22u32, d24u32, d26u32;
- uint8x16_t q1u8, q3u8;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16;
- uint16x4_t d2u16, d3u16, d4u16, d5u16;
- int16x8_t q0s16;
- uint16x8_t q1u16, q2u16, q8u16, q9u16, q10u16, q11u16, q12u16, q13u16;
- int32x4_t q1s32, q2s32, q14s32, q15s32;
-
- assert(y_step_q4 == 16);
-
- src -= src_stride * 3;
- q0s16 = vld1q_s16(filter_y);
- for (; w > 0; w -= 4, src += 4, dst += 4) { // loop_vert_h
- s = src;
- d16u32 = vld1_lane_u32((const uint32_t *)s, d16u32, 0);
- s += src_stride;
- d16u32 = vld1_lane_u32((const uint32_t *)s, d16u32, 1);
- s += src_stride;
- d18u32 = vld1_lane_u32((const uint32_t *)s, d18u32, 0);
- s += src_stride;
- d18u32 = vld1_lane_u32((const uint32_t *)s, d18u32, 1);
- s += src_stride;
- d20u32 = vld1_lane_u32((const uint32_t *)s, d20u32, 0);
- s += src_stride;
- d20u32 = vld1_lane_u32((const uint32_t *)s, d20u32, 1);
- s += src_stride;
- d22u32 = vld1_lane_u32((const uint32_t *)s, d22u32, 0);
- s += src_stride;
-
- q8u16 = vmovl_u8(vreinterpret_u8_u32(d16u32));
- q9u16 = vmovl_u8(vreinterpret_u8_u32(d18u32));
- q10u16 = vmovl_u8(vreinterpret_u8_u32(d20u32));
- q11u16 = vmovl_u8(vreinterpret_u8_u32(d22u32));
-
- d18s16 = vreinterpret_s16_u16(vget_low_u16(q9u16));
- d19s16 = vreinterpret_s16_u16(vget_high_u16(q9u16));
- d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
- d = dst;
- for (height = h; height > 0; height -= 4) { // loop_vert
- d24u32 = vld1_lane_u32((const uint32_t *)s, d24u32, 0);
- s += src_stride;
- d26u32 = vld1_lane_u32((const uint32_t *)s, d26u32, 0);
- s += src_stride;
- d26u32 = vld1_lane_u32((const uint32_t *)s, d26u32, 1);
- s += src_stride;
- d24u32 = vld1_lane_u32((const uint32_t *)s, d24u32, 1);
- s += src_stride;
-
- q12u16 = vmovl_u8(vreinterpret_u8_u32(d24u32));
- q13u16 = vmovl_u8(vreinterpret_u8_u32(d26u32));
-
- d6u32 = vld1_lane_u32((const uint32_t *)d, d6u32, 0);
- d += dst_stride;
- d6u32 = vld1_lane_u32((const uint32_t *)d, d6u32, 1);
- d += dst_stride;
- d7u32 = vld1_lane_u32((const uint32_t *)d, d7u32, 0);
- d += dst_stride;
- d7u32 = vld1_lane_u32((const uint32_t *)d, d7u32, 1);
- d -= dst_stride * 3;
-
- d16s16 = vreinterpret_s16_u16(vget_low_u16(q8u16));
- d17s16 = vreinterpret_s16_u16(vget_high_u16(q8u16));
- d20s16 = vreinterpret_s16_u16(vget_low_u16(q10u16));
- d21s16 = vreinterpret_s16_u16(vget_high_u16(q10u16));
- d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
- d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
- d26s16 = vreinterpret_s16_u16(vget_low_u16(q13u16));
- d27s16 = vreinterpret_s16_u16(vget_high_u16(q13u16));
-
- __builtin_prefetch(s);
- __builtin_prefetch(s + src_stride);
- q1s32 = MULTIPLY_BY_Q0(d16s16, d17s16, d18s16, d19s16,
- d20s16, d21s16, d22s16, d24s16, q0s16);
- __builtin_prefetch(s + src_stride * 2);
- __builtin_prefetch(s + src_stride * 3);
- q2s32 = MULTIPLY_BY_Q0(d17s16, d18s16, d19s16, d20s16,
- d21s16, d22s16, d24s16, d26s16, q0s16);
- __builtin_prefetch(d);
- __builtin_prefetch(d + dst_stride);
- q14s32 = MULTIPLY_BY_Q0(d18s16, d19s16, d20s16, d21s16,
- d22s16, d24s16, d26s16, d27s16, q0s16);
- __builtin_prefetch(d + dst_stride * 2);
- __builtin_prefetch(d + dst_stride * 3);
- q15s32 = MULTIPLY_BY_Q0(d19s16, d20s16, d21s16, d22s16,
- d24s16, d26s16, d27s16, d25s16, q0s16);
-
- d2u16 = vqrshrun_n_s32(q1s32, 7);
- d3u16 = vqrshrun_n_s32(q2s32, 7);
- d4u16 = vqrshrun_n_s32(q14s32, 7);
- d5u16 = vqrshrun_n_s32(q15s32, 7);
-
- q1u16 = vcombine_u16(d2u16, d3u16);
- q2u16 = vcombine_u16(d4u16, d5u16);
-
- d2u8 = vqmovn_u16(q1u16);
- d3u8 = vqmovn_u16(q2u16);
-
- q1u8 = vcombine_u8(d2u8, d3u8);
- q3u8 = vreinterpretq_u8_u32(vcombine_u32(d6u32, d7u32));
-
- q1u8 = vrhaddq_u8(q1u8, q3u8);
-
- d2u32 = vreinterpret_u32_u8(vget_low_u8(q1u8));
- d3u32 = vreinterpret_u32_u8(vget_high_u8(q1u8));
-
- vst1_lane_u32((uint32_t *)d, d2u32, 0);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d2u32, 1);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d3u32, 0);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d3u32, 1);
- d += dst_stride;
-
- q8u16 = q10u16;
- d18s16 = d22s16;
- d19s16 = d24s16;
- q10u16 = q13u16;
- d22s16 = d25s16;
- }
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve8_neon.c b/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve8_neon.c
deleted file mode 100644
index 9bd715e2c6..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve8_neon.c
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-#include <assert.h>
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-
-static INLINE int32x4_t MULTIPLY_BY_Q0(
- int16x4_t dsrc0,
- int16x4_t dsrc1,
- int16x4_t dsrc2,
- int16x4_t dsrc3,
- int16x4_t dsrc4,
- int16x4_t dsrc5,
- int16x4_t dsrc6,
- int16x4_t dsrc7,
- int16x8_t q0s16) {
- int32x4_t qdst;
- int16x4_t d0s16, d1s16;
-
- d0s16 = vget_low_s16(q0s16);
- d1s16 = vget_high_s16(q0s16);
-
- qdst = vmull_lane_s16(dsrc0, d0s16, 0);
- qdst = vmlal_lane_s16(qdst, dsrc1, d0s16, 1);
- qdst = vmlal_lane_s16(qdst, dsrc2, d0s16, 2);
- qdst = vmlal_lane_s16(qdst, dsrc3, d0s16, 3);
- qdst = vmlal_lane_s16(qdst, dsrc4, d1s16, 0);
- qdst = vmlal_lane_s16(qdst, dsrc5, d1s16, 1);
- qdst = vmlal_lane_s16(qdst, dsrc6, d1s16, 2);
- qdst = vmlal_lane_s16(qdst, dsrc7, d1s16, 3);
- return qdst;
-}
-
-void vpx_convolve8_horiz_neon(
- const uint8_t *src,
- ptrdiff_t src_stride,
- uint8_t *dst,
- ptrdiff_t dst_stride,
- const int16_t *filter_x,
- int x_step_q4,
- const int16_t *filter_y, // unused
- int y_step_q4, // unused
- int w,
- int h) {
- int width;
- const uint8_t *s, *psrc;
- uint8_t *d, *pdst;
- uint8x8_t d2u8, d3u8, d24u8, d25u8, d26u8, d27u8, d28u8, d29u8;
- uint32x2_t d2u32, d3u32, d28u32, d29u32, d30u32, d31u32;
- uint8x16_t q12u8, q13u8, q14u8, q15u8;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d22s16, d23s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16;
- uint16x4_t d2u16, d3u16, d4u16, d5u16, d16u16, d17u16, d18u16, d19u16;
- int16x8_t q0s16;
- uint16x8_t q1u16, q2u16, q8u16, q9u16, q10u16, q11u16, q12u16, q13u16;
- int32x4_t q1s32, q2s32, q14s32, q15s32;
- uint16x8x2_t q0x2u16;
- uint8x8x2_t d0x2u8, d1x2u8;
- uint32x2x2_t d0x2u32;
- uint16x4x2_t d0x2u16, d1x2u16;
- uint32x4x2_t q0x2u32;
-
- assert(x_step_q4 == 16);
-
- q0s16 = vld1q_s16(filter_x);
-
- src -= 3; // adjust for taps
- for (; h > 0; h -= 4,
- src += src_stride * 4,
- dst += dst_stride * 4) { // loop_horiz_v
- s = src;
- d24u8 = vld1_u8(s);
- s += src_stride;
- d25u8 = vld1_u8(s);
- s += src_stride;
- d26u8 = vld1_u8(s);
- s += src_stride;
- d27u8 = vld1_u8(s);
-
- q12u8 = vcombine_u8(d24u8, d25u8);
- q13u8 = vcombine_u8(d26u8, d27u8);
-
- q0x2u16 = vtrnq_u16(vreinterpretq_u16_u8(q12u8),
- vreinterpretq_u16_u8(q13u8));
- d24u8 = vreinterpret_u8_u16(vget_low_u16(q0x2u16.val[0]));
- d25u8 = vreinterpret_u8_u16(vget_high_u16(q0x2u16.val[0]));
- d26u8 = vreinterpret_u8_u16(vget_low_u16(q0x2u16.val[1]));
- d27u8 = vreinterpret_u8_u16(vget_high_u16(q0x2u16.val[1]));
- d0x2u8 = vtrn_u8(d24u8, d25u8);
- d1x2u8 = vtrn_u8(d26u8, d27u8);
-
- __builtin_prefetch(src + src_stride * 4);
- __builtin_prefetch(src + src_stride * 5);
- __builtin_prefetch(src + src_stride * 6);
-
- q8u16 = vmovl_u8(d0x2u8.val[0]);
- q9u16 = vmovl_u8(d0x2u8.val[1]);
- q10u16 = vmovl_u8(d1x2u8.val[0]);
- q11u16 = vmovl_u8(d1x2u8.val[1]);
-
- d16u16 = vget_low_u16(q8u16);
- d17u16 = vget_high_u16(q8u16);
- d18u16 = vget_low_u16(q9u16);
- d19u16 = vget_high_u16(q9u16);
- q8u16 = vcombine_u16(d16u16, d18u16); // vswp 17 18
- q9u16 = vcombine_u16(d17u16, d19u16);
-
- d20s16 = vreinterpret_s16_u16(vget_low_u16(q10u16));
- d23s16 = vreinterpret_s16_u16(vget_high_u16(q10u16)); // vmov 23 21
- for (width = w, psrc = src + 7, pdst = dst;
- width > 0;
- width -= 4, psrc += 4, pdst += 4) { // loop_horiz
- s = psrc;
- d28u32 = vld1_dup_u32((const uint32_t *)s);
- s += src_stride;
- d29u32 = vld1_dup_u32((const uint32_t *)s);
- s += src_stride;
- d31u32 = vld1_dup_u32((const uint32_t *)s);
- s += src_stride;
- d30u32 = vld1_dup_u32((const uint32_t *)s);
-
- __builtin_prefetch(psrc + 64);
-
- d0x2u16 = vtrn_u16(vreinterpret_u16_u32(d28u32),
- vreinterpret_u16_u32(d31u32));
- d1x2u16 = vtrn_u16(vreinterpret_u16_u32(d29u32),
- vreinterpret_u16_u32(d30u32));
- d0x2u8 = vtrn_u8(vreinterpret_u8_u16(d0x2u16.val[0]), // d28
- vreinterpret_u8_u16(d1x2u16.val[0])); // d29
- d1x2u8 = vtrn_u8(vreinterpret_u8_u16(d0x2u16.val[1]), // d31
- vreinterpret_u8_u16(d1x2u16.val[1])); // d30
-
- __builtin_prefetch(psrc + 64 + src_stride);
-
- q14u8 = vcombine_u8(d0x2u8.val[0], d0x2u8.val[1]);
- q15u8 = vcombine_u8(d1x2u8.val[1], d1x2u8.val[0]);
- q0x2u32 = vtrnq_u32(vreinterpretq_u32_u8(q14u8),
- vreinterpretq_u32_u8(q15u8));
-
- d28u8 = vreinterpret_u8_u32(vget_low_u32(q0x2u32.val[0]));
- d29u8 = vreinterpret_u8_u32(vget_high_u32(q0x2u32.val[0]));
- q12u16 = vmovl_u8(d28u8);
- q13u16 = vmovl_u8(d29u8);
-
- __builtin_prefetch(psrc + 64 + src_stride * 2);
-
- d16s16 = vreinterpret_s16_u16(vget_low_u16(q8u16));
- d17s16 = vreinterpret_s16_u16(vget_high_u16(q8u16));
- d18s16 = vreinterpret_s16_u16(vget_low_u16(q9u16));
- d19s16 = vreinterpret_s16_u16(vget_high_u16(q9u16));
- d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
- d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
- d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
- d26s16 = vreinterpret_s16_u16(vget_low_u16(q13u16));
- d27s16 = vreinterpret_s16_u16(vget_high_u16(q13u16));
-
- q1s32 = MULTIPLY_BY_Q0(d16s16, d17s16, d20s16, d22s16,
- d18s16, d19s16, d23s16, d24s16, q0s16);
- q2s32 = MULTIPLY_BY_Q0(d17s16, d20s16, d22s16, d18s16,
- d19s16, d23s16, d24s16, d26s16, q0s16);
- q14s32 = MULTIPLY_BY_Q0(d20s16, d22s16, d18s16, d19s16,
- d23s16, d24s16, d26s16, d27s16, q0s16);
- q15s32 = MULTIPLY_BY_Q0(d22s16, d18s16, d19s16, d23s16,
- d24s16, d26s16, d27s16, d25s16, q0s16);
-
- __builtin_prefetch(psrc + 60 + src_stride * 3);
-
- d2u16 = vqrshrun_n_s32(q1s32, 7);
- d3u16 = vqrshrun_n_s32(q2s32, 7);
- d4u16 = vqrshrun_n_s32(q14s32, 7);
- d5u16 = vqrshrun_n_s32(q15s32, 7);
-
- q1u16 = vcombine_u16(d2u16, d3u16);
- q2u16 = vcombine_u16(d4u16, d5u16);
-
- d2u8 = vqmovn_u16(q1u16);
- d3u8 = vqmovn_u16(q2u16);
-
- d0x2u16 = vtrn_u16(vreinterpret_u16_u8(d2u8),
- vreinterpret_u16_u8(d3u8));
- d0x2u32 = vtrn_u32(vreinterpret_u32_u16(d0x2u16.val[0]),
- vreinterpret_u32_u16(d0x2u16.val[1]));
- d0x2u8 = vtrn_u8(vreinterpret_u8_u32(d0x2u32.val[0]),
- vreinterpret_u8_u32(d0x2u32.val[1]));
-
- d2u32 = vreinterpret_u32_u8(d0x2u8.val[0]);
- d3u32 = vreinterpret_u32_u8(d0x2u8.val[1]);
-
- d = pdst;
- vst1_lane_u32((uint32_t *)d, d2u32, 0);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d3u32, 0);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d2u32, 1);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d3u32, 1);
-
- q8u16 = q9u16;
- d20s16 = d23s16;
- q11u16 = q12u16;
- q9u16 = q13u16;
- d23s16 = vreinterpret_s16_u16(vget_high_u16(q11u16));
- }
- }
- return;
-}
-
-void vpx_convolve8_vert_neon(
- const uint8_t *src,
- ptrdiff_t src_stride,
- uint8_t *dst,
- ptrdiff_t dst_stride,
- const int16_t *filter_x, // unused
- int x_step_q4, // unused
- const int16_t *filter_y,
- int y_step_q4,
- int w,
- int h) {
- int height;
- const uint8_t *s;
- uint8_t *d;
- uint32x2_t d2u32, d3u32;
- uint32x2_t d16u32, d18u32, d20u32, d22u32, d24u32, d26u32;
- int16x4_t d16s16, d17s16, d18s16, d19s16, d20s16, d21s16, d22s16;
- int16x4_t d24s16, d25s16, d26s16, d27s16;
- uint16x4_t d2u16, d3u16, d4u16, d5u16;
- int16x8_t q0s16;
- uint16x8_t q1u16, q2u16, q8u16, q9u16, q10u16, q11u16, q12u16, q13u16;
- int32x4_t q1s32, q2s32, q14s32, q15s32;
-
- assert(y_step_q4 == 16);
-
- src -= src_stride * 3;
- q0s16 = vld1q_s16(filter_y);
- for (; w > 0; w -= 4, src += 4, dst += 4) { // loop_vert_h
- s = src;
- d16u32 = vld1_lane_u32((const uint32_t *)s, d16u32, 0);
- s += src_stride;
- d16u32 = vld1_lane_u32((const uint32_t *)s, d16u32, 1);
- s += src_stride;
- d18u32 = vld1_lane_u32((const uint32_t *)s, d18u32, 0);
- s += src_stride;
- d18u32 = vld1_lane_u32((const uint32_t *)s, d18u32, 1);
- s += src_stride;
- d20u32 = vld1_lane_u32((const uint32_t *)s, d20u32, 0);
- s += src_stride;
- d20u32 = vld1_lane_u32((const uint32_t *)s, d20u32, 1);
- s += src_stride;
- d22u32 = vld1_lane_u32((const uint32_t *)s, d22u32, 0);
- s += src_stride;
-
- q8u16 = vmovl_u8(vreinterpret_u8_u32(d16u32));
- q9u16 = vmovl_u8(vreinterpret_u8_u32(d18u32));
- q10u16 = vmovl_u8(vreinterpret_u8_u32(d20u32));
- q11u16 = vmovl_u8(vreinterpret_u8_u32(d22u32));
-
- d18s16 = vreinterpret_s16_u16(vget_low_u16(q9u16));
- d19s16 = vreinterpret_s16_u16(vget_high_u16(q9u16));
- d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
- d = dst;
- for (height = h; height > 0; height -= 4) { // loop_vert
- d24u32 = vld1_lane_u32((const uint32_t *)s, d24u32, 0);
- s += src_stride;
- d26u32 = vld1_lane_u32((const uint32_t *)s, d26u32, 0);
- s += src_stride;
- d26u32 = vld1_lane_u32((const uint32_t *)s, d26u32, 1);
- s += src_stride;
- d24u32 = vld1_lane_u32((const uint32_t *)s, d24u32, 1);
- s += src_stride;
-
- q12u16 = vmovl_u8(vreinterpret_u8_u32(d24u32));
- q13u16 = vmovl_u8(vreinterpret_u8_u32(d26u32));
-
- d16s16 = vreinterpret_s16_u16(vget_low_u16(q8u16));
- d17s16 = vreinterpret_s16_u16(vget_high_u16(q8u16));
- d20s16 = vreinterpret_s16_u16(vget_low_u16(q10u16));
- d21s16 = vreinterpret_s16_u16(vget_high_u16(q10u16));
- d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
- d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
- d26s16 = vreinterpret_s16_u16(vget_low_u16(q13u16));
- d27s16 = vreinterpret_s16_u16(vget_high_u16(q13u16));
-
- __builtin_prefetch(d);
- __builtin_prefetch(d + dst_stride);
- q1s32 = MULTIPLY_BY_Q0(d16s16, d17s16, d18s16, d19s16,
- d20s16, d21s16, d22s16, d24s16, q0s16);
- __builtin_prefetch(d + dst_stride * 2);
- __builtin_prefetch(d + dst_stride * 3);
- q2s32 = MULTIPLY_BY_Q0(d17s16, d18s16, d19s16, d20s16,
- d21s16, d22s16, d24s16, d26s16, q0s16);
- __builtin_prefetch(s);
- __builtin_prefetch(s + src_stride);
- q14s32 = MULTIPLY_BY_Q0(d18s16, d19s16, d20s16, d21s16,
- d22s16, d24s16, d26s16, d27s16, q0s16);
- __builtin_prefetch(s + src_stride * 2);
- __builtin_prefetch(s + src_stride * 3);
- q15s32 = MULTIPLY_BY_Q0(d19s16, d20s16, d21s16, d22s16,
- d24s16, d26s16, d27s16, d25s16, q0s16);
-
- d2u16 = vqrshrun_n_s32(q1s32, 7);
- d3u16 = vqrshrun_n_s32(q2s32, 7);
- d4u16 = vqrshrun_n_s32(q14s32, 7);
- d5u16 = vqrshrun_n_s32(q15s32, 7);
-
- q1u16 = vcombine_u16(d2u16, d3u16);
- q2u16 = vcombine_u16(d4u16, d5u16);
-
- d2u32 = vreinterpret_u32_u8(vqmovn_u16(q1u16));
- d3u32 = vreinterpret_u32_u8(vqmovn_u16(q2u16));
-
- vst1_lane_u32((uint32_t *)d, d2u32, 0);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d2u32, 1);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d3u32, 0);
- d += dst_stride;
- vst1_lane_u32((uint32_t *)d, d3u32, 1);
- d += dst_stride;
-
- q8u16 = q10u16;
- d18s16 = d22s16;
- d19s16 = d24s16;
- q10u16 = q13u16;
- d22s16 = d25s16;
- }
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_avg_neon.c b/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_avg_neon.c
deleted file mode 100644
index dc58a332f8..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_avg_neon.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-
-void vpx_convolve_avg_neon(
- const uint8_t *src, // r0
- ptrdiff_t src_stride, // r1
- uint8_t *dst, // r2
- ptrdiff_t dst_stride, // r3
- const int16_t *filter_x,
- int filter_x_stride,
- const int16_t *filter_y,
- int filter_y_stride,
- int w,
- int h) {
- uint8_t *d;
- uint8x8_t d0u8, d1u8, d2u8, d3u8;
- uint32x2_t d0u32, d2u32;
- uint8x16_t q0u8, q1u8, q2u8, q3u8, q8u8, q9u8, q10u8, q11u8;
- (void)filter_x; (void)filter_x_stride;
- (void)filter_y; (void)filter_y_stride;
-
- d = dst;
- if (w > 32) { // avg64
- for (; h > 0; h -= 1) {
- q0u8 = vld1q_u8(src);
- q1u8 = vld1q_u8(src + 16);
- q2u8 = vld1q_u8(src + 32);
- q3u8 = vld1q_u8(src + 48);
- src += src_stride;
- q8u8 = vld1q_u8(d);
- q9u8 = vld1q_u8(d + 16);
- q10u8 = vld1q_u8(d + 32);
- q11u8 = vld1q_u8(d + 48);
- d += dst_stride;
-
- q0u8 = vrhaddq_u8(q0u8, q8u8);
- q1u8 = vrhaddq_u8(q1u8, q9u8);
- q2u8 = vrhaddq_u8(q2u8, q10u8);
- q3u8 = vrhaddq_u8(q3u8, q11u8);
-
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q1u8);
- vst1q_u8(dst + 32, q2u8);
- vst1q_u8(dst + 48, q3u8);
- dst += dst_stride;
- }
- } else if (w == 32) { // avg32
- for (; h > 0; h -= 2) {
- q0u8 = vld1q_u8(src);
- q1u8 = vld1q_u8(src + 16);
- src += src_stride;
- q2u8 = vld1q_u8(src);
- q3u8 = vld1q_u8(src + 16);
- src += src_stride;
- q8u8 = vld1q_u8(d);
- q9u8 = vld1q_u8(d + 16);
- d += dst_stride;
- q10u8 = vld1q_u8(d);
- q11u8 = vld1q_u8(d + 16);
- d += dst_stride;
-
- q0u8 = vrhaddq_u8(q0u8, q8u8);
- q1u8 = vrhaddq_u8(q1u8, q9u8);
- q2u8 = vrhaddq_u8(q2u8, q10u8);
- q3u8 = vrhaddq_u8(q3u8, q11u8);
-
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q1u8);
- dst += dst_stride;
- vst1q_u8(dst, q2u8);
- vst1q_u8(dst + 16, q3u8);
- dst += dst_stride;
- }
- } else if (w > 8) { // avg16
- for (; h > 0; h -= 2) {
- q0u8 = vld1q_u8(src);
- src += src_stride;
- q1u8 = vld1q_u8(src);
- src += src_stride;
- q2u8 = vld1q_u8(d);
- d += dst_stride;
- q3u8 = vld1q_u8(d);
- d += dst_stride;
-
- q0u8 = vrhaddq_u8(q0u8, q2u8);
- q1u8 = vrhaddq_u8(q1u8, q3u8);
-
- vst1q_u8(dst, q0u8);
- dst += dst_stride;
- vst1q_u8(dst, q1u8);
- dst += dst_stride;
- }
- } else if (w == 8) { // avg8
- for (; h > 0; h -= 2) {
- d0u8 = vld1_u8(src);
- src += src_stride;
- d1u8 = vld1_u8(src);
- src += src_stride;
- d2u8 = vld1_u8(d);
- d += dst_stride;
- d3u8 = vld1_u8(d);
- d += dst_stride;
-
- q0u8 = vcombine_u8(d0u8, d1u8);
- q1u8 = vcombine_u8(d2u8, d3u8);
- q0u8 = vrhaddq_u8(q0u8, q1u8);
-
- vst1_u8(dst, vget_low_u8(q0u8));
- dst += dst_stride;
- vst1_u8(dst, vget_high_u8(q0u8));
- dst += dst_stride;
- }
- } else { // avg4
- for (; h > 0; h -= 2) {
- d0u32 = vld1_lane_u32((const uint32_t *)src, d0u32, 0);
- src += src_stride;
- d0u32 = vld1_lane_u32((const uint32_t *)src, d0u32, 1);
- src += src_stride;
- d2u32 = vld1_lane_u32((const uint32_t *)d, d2u32, 0);
- d += dst_stride;
- d2u32 = vld1_lane_u32((const uint32_t *)d, d2u32, 1);
- d += dst_stride;
-
- d0u8 = vrhadd_u8(vreinterpret_u8_u32(d0u32),
- vreinterpret_u8_u32(d2u32));
-
- d0u32 = vreinterpret_u32_u8(d0u8);
- vst1_lane_u32((uint32_t *)dst, d0u32, 0);
- dst += dst_stride;
- vst1_lane_u32((uint32_t *)dst, d0u32, 1);
- dst += dst_stride;
- }
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_copy_neon.c b/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_copy_neon.c
deleted file mode 100644
index d8fb97a861..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_copy_neon.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-
-void vpx_convolve_copy_neon(
- const uint8_t *src, // r0
- ptrdiff_t src_stride, // r1
- uint8_t *dst, // r2
- ptrdiff_t dst_stride, // r3
- const int16_t *filter_x,
- int filter_x_stride,
- const int16_t *filter_y,
- int filter_y_stride,
- int w,
- int h) {
- uint8x8_t d0u8, d2u8;
- uint8x16_t q0u8, q1u8, q2u8, q3u8;
- (void)filter_x; (void)filter_x_stride;
- (void)filter_y; (void)filter_y_stride;
-
- if (w > 32) { // copy64
- for (; h > 0; h--) {
- q0u8 = vld1q_u8(src);
- q1u8 = vld1q_u8(src + 16);
- q2u8 = vld1q_u8(src + 32);
- q3u8 = vld1q_u8(src + 48);
- src += src_stride;
-
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q1u8);
- vst1q_u8(dst + 32, q2u8);
- vst1q_u8(dst + 48, q3u8);
- dst += dst_stride;
- }
- } else if (w == 32) { // copy32
- for (; h > 0; h -= 2) {
- q0u8 = vld1q_u8(src);
- q1u8 = vld1q_u8(src + 16);
- src += src_stride;
- q2u8 = vld1q_u8(src);
- q3u8 = vld1q_u8(src + 16);
- src += src_stride;
-
- vst1q_u8(dst, q0u8);
- vst1q_u8(dst + 16, q1u8);
- dst += dst_stride;
- vst1q_u8(dst, q2u8);
- vst1q_u8(dst + 16, q3u8);
- dst += dst_stride;
- }
- } else if (w > 8) { // copy16
- for (; h > 0; h -= 2) {
- q0u8 = vld1q_u8(src);
- src += src_stride;
- q1u8 = vld1q_u8(src);
- src += src_stride;
-
- vst1q_u8(dst, q0u8);
- dst += dst_stride;
- vst1q_u8(dst, q1u8);
- dst += dst_stride;
- }
- } else if (w == 8) { // copy8
- for (; h > 0; h -= 2) {
- d0u8 = vld1_u8(src);
- src += src_stride;
- d2u8 = vld1_u8(src);
- src += src_stride;
-
- vst1_u8(dst, d0u8);
- dst += dst_stride;
- vst1_u8(dst, d2u8);
- dst += dst_stride;
- }
- } else { // copy4
- for (; h > 0; h--) {
- *(uint32_t *)dst = *(const uint32_t *)src;
- src += src_stride;
- dst += dst_stride;
- }
- }
- return;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_neon.c b/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_neon.c
deleted file mode 100644
index 1506ce6203..0000000000
--- a/thirdparty/libvpx/vpx_dsp/arm/vpx_convolve_neon.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
-
-void vpx_convolve8_neon(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- /* Given our constraints: w <= 64, h <= 64, taps == 8 we can reduce the
- * maximum buffer size to 64 * 64 + 7 (+ 1 to make it divisible by 4).
- */
- DECLARE_ALIGNED(8, uint8_t, temp[64 * 72]);
-
- // Account for the vertical phase needing 3 lines prior and 4 lines post
- int intermediate_height = h + 7;
-
- assert(y_step_q4 == 16);
- assert(x_step_q4 == 16);
-
- /* Filter starting 3 lines back. The neon implementation will ignore the
- * given height and filter a multiple of 4 lines. Since this goes in to
- * the temp buffer which has lots of extra room and is subsequently discarded
- * this is safe if somewhat less than ideal.
- */
- vpx_convolve8_horiz_neon(src - src_stride * 3, src_stride,
- temp, 64,
- filter_x, x_step_q4, filter_y, y_step_q4,
- w, intermediate_height);
-
- /* Step into the temp buffer 3 lines to get the actual frame data */
- vpx_convolve8_vert_neon(temp + 64 * 3, 64,
- dst, dst_stride,
- filter_x, x_step_q4, filter_y, y_step_q4,
- w, h);
-}
-
-void vpx_convolve8_avg_neon(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- DECLARE_ALIGNED(8, uint8_t, temp[64 * 72]);
- int intermediate_height = h + 7;
-
- assert(y_step_q4 == 16);
- assert(x_step_q4 == 16);
-
- /* This implementation has the same issues as above. In addition, we only want
- * to average the values after both passes.
- */
- vpx_convolve8_horiz_neon(src - src_stride * 3, src_stride,
- temp, 64,
- filter_x, x_step_q4, filter_y, y_step_q4,
- w, intermediate_height);
- vpx_convolve8_avg_vert_neon(temp + 64 * 3,
- 64, dst, dst_stride,
- filter_x, x_step_q4, filter_y, y_step_q4,
- w, h);
-}
diff --git a/thirdparty/libvpx/vpx_dsp/bitreader.c b/thirdparty/libvpx/vpx_dsp/bitreader.c
deleted file mode 100644
index 8140e78e70..0000000000
--- a/thirdparty/libvpx/vpx_dsp/bitreader.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#include <stdlib.h>
-
-#include "./vpx_config.h"
-
-#include "vpx_dsp/bitreader.h"
-#include "vpx_dsp/prob.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_util/endian_inl.h"
-
-int vpx_reader_init(vpx_reader *r,
- const uint8_t *buffer,
- size_t size,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state) {
- if (size && !buffer) {
- return 1;
- } else {
- r->buffer_end = buffer + size;
- r->buffer = buffer;
- r->value = 0;
- r->count = -8;
- r->range = 255;
- r->decrypt_cb = decrypt_cb;
- r->decrypt_state = decrypt_state;
- vpx_reader_fill(r);
- return vpx_read_bit(r) != 0; // marker bit
- }
-}
-
-void vpx_reader_fill(vpx_reader *r) {
- const uint8_t *const buffer_end = r->buffer_end;
- const uint8_t *buffer = r->buffer;
- const uint8_t *buffer_start = buffer;
- BD_VALUE value = r->value;
- int count = r->count;
- const size_t bytes_left = buffer_end - buffer;
- const size_t bits_left = bytes_left * CHAR_BIT;
- int shift = BD_VALUE_SIZE - CHAR_BIT - (count + CHAR_BIT);
-
- if (r->decrypt_cb) {
- size_t n = VPXMIN(sizeof(r->clear_buffer), bytes_left);
- r->decrypt_cb(r->decrypt_state, buffer, r->clear_buffer, (int)n);
- buffer = r->clear_buffer;
- buffer_start = r->clear_buffer;
- }
- if (bits_left > BD_VALUE_SIZE) {
- const int bits = (shift & 0xfffffff8) + CHAR_BIT;
- BD_VALUE nv;
- BD_VALUE big_endian_values;
- memcpy(&big_endian_values, buffer, sizeof(BD_VALUE));
-#if SIZE_MAX == 0xffffffffffffffffULL
- big_endian_values = HToBE64(big_endian_values);
-#else
- big_endian_values = HToBE32(big_endian_values);
-#endif
- nv = big_endian_values >> (BD_VALUE_SIZE - bits);
- count += bits;
- buffer += (bits >> 3);
- value = r->value | (nv << (shift & 0x7));
- } else {
- const int bits_over = (int)(shift + CHAR_BIT - (int)bits_left);
- int loop_end = 0;
- if (bits_over >= 0) {
- count += LOTS_OF_BITS;
- loop_end = bits_over;
- }
-
- if (bits_over < 0 || bits_left) {
- while (shift >= loop_end) {
- count += CHAR_BIT;
- value |= (BD_VALUE)*buffer++ << shift;
- shift -= CHAR_BIT;
- }
- }
- }
-
- // NOTE: Variable 'buffer' may not relate to 'r->buffer' after decryption,
- // so we increase 'r->buffer' by the amount that 'buffer' moved, rather than
- // assign 'buffer' to 'r->buffer'.
- r->buffer += buffer - buffer_start;
- r->value = value;
- r->count = count;
-}
-
-const uint8_t *vpx_reader_find_end(vpx_reader *r) {
- // Find the end of the coded buffer
- while (r->count > CHAR_BIT && r->count < BD_VALUE_SIZE) {
- r->count -= CHAR_BIT;
- r->buffer--;
- }
- return r->buffer;
-}
diff --git a/thirdparty/libvpx/vpx_dsp/bitreader.h b/thirdparty/libvpx/vpx_dsp/bitreader.h
deleted file mode 100644
index 9a441b4107..0000000000
--- a/thirdparty/libvpx/vpx_dsp/bitreader.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_BITREADER_H_
-#define VPX_DSP_BITREADER_H_
-
-#include <stddef.h>
-#include <limits.h>
-
-#include "./vpx_config.h"
-#include "vpx_ports/mem.h"
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/prob.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef size_t BD_VALUE;
-
-#define BD_VALUE_SIZE ((int)sizeof(BD_VALUE) * CHAR_BIT)
-
-// This is meant to be a large, positive constant that can still be efficiently
-// loaded as an immediate (on platforms like ARM, for example).
-// Even relatively modest values like 100 would work fine.
-#define LOTS_OF_BITS 0x40000000
-
-typedef struct {
- // Be careful when reordering this struct, it may impact the cache negatively.
- BD_VALUE value;
- unsigned int range;
- int count;
- const uint8_t *buffer_end;
- const uint8_t *buffer;
- vpx_decrypt_cb decrypt_cb;
- void *decrypt_state;
- uint8_t clear_buffer[sizeof(BD_VALUE) + 1];
-} vpx_reader;
-
-int vpx_reader_init(vpx_reader *r,
- const uint8_t *buffer,
- size_t size,
- vpx_decrypt_cb decrypt_cb,
- void *decrypt_state);
-
-void vpx_reader_fill(vpx_reader *r);
-
-const uint8_t *vpx_reader_find_end(vpx_reader *r);
-
-static INLINE int vpx_reader_has_error(vpx_reader *r) {
- // Check if we have reached the end of the buffer.
- //
- // Variable 'count' stores the number of bits in the 'value' buffer, minus
- // 8. The top byte is part of the algorithm, and the remainder is buffered
- // to be shifted into it. So if count == 8, the top 16 bits of 'value' are
- // occupied, 8 for the algorithm and 8 in the buffer.
- //
- // When reading a byte from the user's buffer, count is filled with 8 and
- // one byte is filled into the value buffer. When we reach the end of the
- // data, count is additionally filled with LOTS_OF_BITS. So when
- // count == LOTS_OF_BITS - 1, the user's data has been exhausted.
- //
- // 1 if we have tried to decode bits after the end of stream was encountered.
- // 0 No error.
- return r->count > BD_VALUE_SIZE && r->count < LOTS_OF_BITS;
-}
-
-static INLINE int vpx_read(vpx_reader *r, int prob) {
- unsigned int bit = 0;
- BD_VALUE value;
- BD_VALUE bigsplit;
- int count;
- unsigned int range;
- unsigned int split = (r->range * prob + (256 - prob)) >> CHAR_BIT;
-
- if (r->count < 0)
- vpx_reader_fill(r);
-
- value = r->value;
- count = r->count;
-
- bigsplit = (BD_VALUE)split << (BD_VALUE_SIZE - CHAR_BIT);
-
- range = split;
-
- if (value >= bigsplit) {
- range = r->range - split;
- value = value - bigsplit;
- bit = 1;
- }
-
- {
- register int shift = vpx_norm[range];
- range <<= shift;
- value <<= shift;
- count -= shift;
- }
- r->value = value;
- r->count = count;
- r->range = range;
-
- return bit;
-}
-
-static INLINE int vpx_read_bit(vpx_reader *r) {
- return vpx_read(r, 128); // vpx_prob_half
-}
-
-static INLINE int vpx_read_literal(vpx_reader *r, int bits) {
- int literal = 0, bit;
-
- for (bit = bits - 1; bit >= 0; bit--)
- literal |= vpx_read_bit(r) << bit;
-
- return literal;
-}
-
-static INLINE int vpx_read_tree(vpx_reader *r, const vpx_tree_index *tree,
- const vpx_prob *probs) {
- vpx_tree_index i = 0;
-
- while ((i = tree[i + vpx_read(r, probs[i >> 1])]) > 0)
- continue;
-
- return -i;
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_DSP_BITREADER_H_
diff --git a/thirdparty/libvpx/vpx_dsp/bitreader_buffer.c b/thirdparty/libvpx/vpx_dsp/bitreader_buffer.c
deleted file mode 100644
index d7b55cf9f4..0000000000
--- a/thirdparty/libvpx/vpx_dsp/bitreader_buffer.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#include "./vpx_config.h"
-#include "./bitreader_buffer.h"
-
-size_t vpx_rb_bytes_read(struct vpx_read_bit_buffer *rb) {
- return (rb->bit_offset + 7) >> 3;
-}
-
-int vpx_rb_read_bit(struct vpx_read_bit_buffer *rb) {
- const size_t off = rb->bit_offset;
- const size_t p = off >> 3;
- const int q = 7 - (int)(off & 0x7);
- if (rb->bit_buffer + p < rb->bit_buffer_end) {
- const int bit = (rb->bit_buffer[p] >> q) & 1;
- rb->bit_offset = off + 1;
- return bit;
- } else {
- rb->error_handler(rb->error_handler_data);
- return 0;
- }
-}
-
-int vpx_rb_read_literal(struct vpx_read_bit_buffer *rb, int bits) {
- int value = 0, bit;
- for (bit = bits - 1; bit >= 0; bit--)
- value |= vpx_rb_read_bit(rb) << bit;
- return value;
-}
-
-int vpx_rb_read_signed_literal(struct vpx_read_bit_buffer *rb,
- int bits) {
- const int value = vpx_rb_read_literal(rb, bits);
- return vpx_rb_read_bit(rb) ? -value : value;
-}
-
-int vpx_rb_read_inv_signed_literal(struct vpx_read_bit_buffer *rb,
- int bits) {
-#if CONFIG_MISC_FIXES
- const int nbits = sizeof(unsigned) * 8 - bits - 1;
- const unsigned value = (unsigned)vpx_rb_read_literal(rb, bits + 1) << nbits;
- return ((int) value) >> nbits;
-#else
- return vpx_rb_read_signed_literal(rb, bits);
-#endif
-}
diff --git a/thirdparty/libvpx/vpx_dsp/bitreader_buffer.h b/thirdparty/libvpx/vpx_dsp/bitreader_buffer.h
deleted file mode 100644
index 8a48a95ed1..0000000000
--- a/thirdparty/libvpx/vpx_dsp/bitreader_buffer.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_BITREADER_BUFFER_H_
-#define VPX_DSP_BITREADER_BUFFER_H_
-
-#include <limits.h>
-
-#include "vpx/vpx_integer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void (*vpx_rb_error_handler)(void *data);
-
-struct vpx_read_bit_buffer {
- const uint8_t *bit_buffer;
- const uint8_t *bit_buffer_end;
- size_t bit_offset;
-
- void *error_handler_data;
- vpx_rb_error_handler error_handler;
-};
-
-size_t vpx_rb_bytes_read(struct vpx_read_bit_buffer *rb);
-
-int vpx_rb_read_bit(struct vpx_read_bit_buffer *rb);
-
-int vpx_rb_read_literal(struct vpx_read_bit_buffer *rb, int bits);
-
-int vpx_rb_read_signed_literal(struct vpx_read_bit_buffer *rb, int bits);
-
-int vpx_rb_read_inv_signed_literal(struct vpx_read_bit_buffer *rb, int bits);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_DSP_BITREADER_BUFFER_H_
diff --git a/thirdparty/libvpx/vpx_dsp/intrapred.c b/thirdparty/libvpx/vpx_dsp/intrapred.c
deleted file mode 100644
index cc4a74bd26..0000000000
--- a/thirdparty/libvpx/vpx_dsp/intrapred.c
+++ /dev/null
@@ -1,870 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-
-#define DST(x, y) dst[(x) + (y) * stride]
-#define AVG3(a, b, c) (((a) + 2 * (b) + (c) + 2) >> 2)
-#define AVG2(a, b) (((a) + (b) + 1) >> 1)
-
-static INLINE void d207_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r, c;
- (void) above;
- // first column
- for (r = 0; r < bs - 1; ++r)
- dst[r * stride] = AVG2(left[r], left[r + 1]);
- dst[(bs - 1) * stride] = left[bs - 1];
- dst++;
-
- // second column
- for (r = 0; r < bs - 2; ++r)
- dst[r * stride] = AVG3(left[r], left[r + 1], left[r + 2]);
- dst[(bs - 2) * stride] = AVG3(left[bs - 2], left[bs - 1], left[bs - 1]);
- dst[(bs - 1) * stride] = left[bs - 1];
- dst++;
-
- // rest of last row
- for (c = 0; c < bs - 2; ++c)
- dst[(bs - 1) * stride + c] = left[bs - 1];
-
- for (r = bs - 2; r >= 0; --r)
- for (c = 0; c < bs - 2; ++c)
- dst[r * stride + c] = dst[(r + 1) * stride + c - 2];
-}
-
-#if CONFIG_MISC_FIXES
-static INLINE void d207e_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r, c;
- (void) above;
-
- for (r = 0; r < bs; ++r) {
- for (c = 0; c < bs; ++c) {
- dst[c] = c & 1 ? AVG3(left[(c >> 1) + r], left[(c >> 1) + r + 1],
- left[(c >> 1) + r + 2])
- : AVG2(left[(c >> 1) + r], left[(c >> 1) + r + 1]);
- }
- dst += stride;
- }
-}
-#endif // CONFIG_MISC_FIXES
-
-static INLINE void d63_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r, c;
- int size;
- (void)left;
- for (c = 0; c < bs; ++c) {
- dst[c] = AVG2(above[c], above[c + 1]);
- dst[stride + c] = AVG3(above[c], above[c + 1], above[c + 2]);
- }
- for (r = 2, size = bs - 2; r < bs; r += 2, --size) {
- memcpy(dst + (r + 0) * stride, dst + (r >> 1), size);
- memset(dst + (r + 0) * stride + size, above[bs - 1], bs - size);
- memcpy(dst + (r + 1) * stride, dst + stride + (r >> 1), size);
- memset(dst + (r + 1) * stride + size, above[bs - 1], bs - size);
- }
-}
-
-#if CONFIG_MISC_FIXES
-static INLINE void d63e_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r, c;
- (void) left;
- for (r = 0; r < bs; ++r) {
- for (c = 0; c < bs; ++c) {
- dst[c] = r & 1 ? AVG3(above[(r >> 1) + c], above[(r >> 1) + c + 1],
- above[(r >> 1) + c + 2])
- : AVG2(above[(r >> 1) + c], above[(r >> 1) + c + 1]);
- }
- dst += stride;
- }
-}
-#endif // CONFIG_MISC_FIXES
-
-static INLINE void d45_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- const uint8_t above_right = above[bs - 1];
- const uint8_t *const dst_row0 = dst;
- int x, size;
- (void)left;
-
- for (x = 0; x < bs - 1; ++x) {
- dst[x] = AVG3(above[x], above[x + 1], above[x + 2]);
- }
- dst[bs - 1] = above_right;
- dst += stride;
- for (x = 1, size = bs - 2; x < bs; ++x, --size) {
- memcpy(dst, dst_row0 + x, size);
- memset(dst + size, above_right, x + 1);
- dst += stride;
- }
-}
-
-#if CONFIG_MISC_FIXES
-static INLINE void d45e_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r, c;
- (void) left;
- for (r = 0; r < bs; ++r) {
- for (c = 0; c < bs; ++c) {
- dst[c] = AVG3(above[r + c], above[r + c + 1],
- above[r + c + 1 + (r + c + 2 < bs * 2)]);
- }
- dst += stride;
- }
-}
-#endif // CONFIG_MISC_FIXES
-
-static INLINE void d117_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r, c;
-
- // first row
- for (c = 0; c < bs; c++)
- dst[c] = AVG2(above[c - 1], above[c]);
- dst += stride;
-
- // second row
- dst[0] = AVG3(left[0], above[-1], above[0]);
- for (c = 1; c < bs; c++)
- dst[c] = AVG3(above[c - 2], above[c - 1], above[c]);
- dst += stride;
-
- // the rest of first col
- dst[0] = AVG3(above[-1], left[0], left[1]);
- for (r = 3; r < bs; ++r)
- dst[(r - 2) * stride] = AVG3(left[r - 3], left[r - 2], left[r - 1]);
-
- // the rest of the block
- for (r = 2; r < bs; ++r) {
- for (c = 1; c < bs; c++)
- dst[c] = dst[-2 * stride + c - 1];
- dst += stride;
- }
-}
-
-static INLINE void d135_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int i;
-#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ > 7
- // silence a spurious -Warray-bounds warning, possibly related to:
- // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
- uint8_t border[69];
-#else
- uint8_t border[32 + 32 - 1]; // outer border from bottom-left to top-right
-#endif
-
- // dst(bs, bs - 2)[0], i.e., border starting at bottom-left
- for (i = 0; i < bs - 2; ++i) {
- border[i] = AVG3(left[bs - 3 - i], left[bs - 2 - i], left[bs - 1 - i]);
- }
- border[bs - 2] = AVG3(above[-1], left[0], left[1]);
- border[bs - 1] = AVG3(left[0], above[-1], above[0]);
- border[bs - 0] = AVG3(above[-1], above[0], above[1]);
- // dst[0][2, size), i.e., remaining top border ascending
- for (i = 0; i < bs - 2; ++i) {
- border[bs + 1 + i] = AVG3(above[i], above[i + 1], above[i + 2]);
- }
-
- for (i = 0; i < bs; ++i) {
- memcpy(dst + i * stride, border + bs - 1 - i, bs);
- }
-}
-
-static INLINE void d153_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r, c;
- dst[0] = AVG2(above[-1], left[0]);
- for (r = 1; r < bs; r++)
- dst[r * stride] = AVG2(left[r - 1], left[r]);
- dst++;
-
- dst[0] = AVG3(left[0], above[-1], above[0]);
- dst[stride] = AVG3(above[-1], left[0], left[1]);
- for (r = 2; r < bs; r++)
- dst[r * stride] = AVG3(left[r - 2], left[r - 1], left[r]);
- dst++;
-
- for (c = 0; c < bs - 2; c++)
- dst[c] = AVG3(above[c - 1], above[c], above[c + 1]);
- dst += stride;
-
- for (r = 1; r < bs; ++r) {
- for (c = 0; c < bs - 2; c++)
- dst[c] = dst[-stride + c - 2];
- dst += stride;
- }
-}
-
-static INLINE void v_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r;
- (void) left;
-
- for (r = 0; r < bs; r++) {
- memcpy(dst, above, bs);
- dst += stride;
- }
-}
-
-static INLINE void h_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r;
- (void) above;
-
- for (r = 0; r < bs; r++) {
- memset(dst, left[r], bs);
- dst += stride;
- }
-}
-
-static INLINE void tm_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r, c;
- int ytop_left = above[-1];
-
- for (r = 0; r < bs; r++) {
- for (c = 0; c < bs; c++)
- dst[c] = clip_pixel(left[r] + above[c] - ytop_left);
- dst += stride;
- }
-}
-
-static INLINE void dc_128_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int r;
- (void) above;
- (void) left;
-
- for (r = 0; r < bs; r++) {
- memset(dst, 128, bs);
- dst += stride;
- }
-}
-
-static INLINE void dc_left_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above,
- const uint8_t *left) {
- int i, r, expected_dc, sum = 0;
- (void) above;
-
- for (i = 0; i < bs; i++)
- sum += left[i];
- expected_dc = (sum + (bs >> 1)) / bs;
-
- for (r = 0; r < bs; r++) {
- memset(dst, expected_dc, bs);
- dst += stride;
- }
-}
-
-static INLINE void dc_top_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int i, r, expected_dc, sum = 0;
- (void) left;
-
- for (i = 0; i < bs; i++)
- sum += above[i];
- expected_dc = (sum + (bs >> 1)) / bs;
-
- for (r = 0; r < bs; r++) {
- memset(dst, expected_dc, bs);
- dst += stride;
- }
-}
-
-static INLINE void dc_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
- const uint8_t *above, const uint8_t *left) {
- int i, r, expected_dc, sum = 0;
- const int count = 2 * bs;
-
- for (i = 0; i < bs; i++) {
- sum += above[i];
- sum += left[i];
- }
-
- expected_dc = (sum + (count >> 1)) / count;
-
- for (r = 0; r < bs; r++) {
- memset(dst, expected_dc, bs);
- dst += stride;
- }
-}
-
-void vpx_he_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int H = above[-1];
- const int I = left[0];
- const int J = left[1];
- const int K = left[2];
- const int L = left[3];
-
- memset(dst + stride * 0, AVG3(H, I, J), 4);
- memset(dst + stride * 1, AVG3(I, J, K), 4);
- memset(dst + stride * 2, AVG3(J, K, L), 4);
- memset(dst + stride * 3, AVG3(K, L, L), 4);
-}
-
-void vpx_ve_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int H = above[-1];
- const int I = above[0];
- const int J = above[1];
- const int K = above[2];
- const int L = above[3];
- const int M = above[4];
- (void)left;
-
- dst[0] = AVG3(H, I, J);
- dst[1] = AVG3(I, J, K);
- dst[2] = AVG3(J, K, L);
- dst[3] = AVG3(K, L, M);
- memcpy(dst + stride * 1, dst, 4);
- memcpy(dst + stride * 2, dst, 4);
- memcpy(dst + stride * 3, dst, 4);
-}
-
-void vpx_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int I = left[0];
- const int J = left[1];
- const int K = left[2];
- const int L = left[3];
- (void)above;
- DST(0, 0) = AVG2(I, J);
- DST(2, 0) = DST(0, 1) = AVG2(J, K);
- DST(2, 1) = DST(0, 2) = AVG2(K, L);
- DST(1, 0) = AVG3(I, J, K);
- DST(3, 0) = DST(1, 1) = AVG3(J, K, L);
- DST(3, 1) = DST(1, 2) = AVG3(K, L, L);
- DST(3, 2) = DST(2, 2) =
- DST(0, 3) = DST(1, 3) = DST(2, 3) = DST(3, 3) = L;
-}
-
-void vpx_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int A = above[0];
- const int B = above[1];
- const int C = above[2];
- const int D = above[3];
- const int E = above[4];
- const int F = above[5];
- const int G = above[6];
- (void)left;
- DST(0, 0) = AVG2(A, B);
- DST(1, 0) = DST(0, 2) = AVG2(B, C);
- DST(2, 0) = DST(1, 2) = AVG2(C, D);
- DST(3, 0) = DST(2, 2) = AVG2(D, E);
- DST(3, 2) = AVG2(E, F); // differs from vp8
-
- DST(0, 1) = AVG3(A, B, C);
- DST(1, 1) = DST(0, 3) = AVG3(B, C, D);
- DST(2, 1) = DST(1, 3) = AVG3(C, D, E);
- DST(3, 1) = DST(2, 3) = AVG3(D, E, F);
- DST(3, 3) = AVG3(E, F, G); // differs from vp8
-}
-
-void vpx_d63f_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int A = above[0];
- const int B = above[1];
- const int C = above[2];
- const int D = above[3];
- const int E = above[4];
- const int F = above[5];
- const int G = above[6];
- const int H = above[7];
- (void)left;
- DST(0, 0) = AVG2(A, B);
- DST(1, 0) = DST(0, 2) = AVG2(B, C);
- DST(2, 0) = DST(1, 2) = AVG2(C, D);
- DST(3, 0) = DST(2, 2) = AVG2(D, E);
- DST(3, 2) = AVG3(E, F, G);
-
- DST(0, 1) = AVG3(A, B, C);
- DST(1, 1) = DST(0, 3) = AVG3(B, C, D);
- DST(2, 1) = DST(1, 3) = AVG3(C, D, E);
- DST(3, 1) = DST(2, 3) = AVG3(D, E, F);
- DST(3, 3) = AVG3(F, G, H);
-}
-
-void vpx_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int A = above[0];
- const int B = above[1];
- const int C = above[2];
- const int D = above[3];
- const int E = above[4];
- const int F = above[5];
- const int G = above[6];
- const int H = above[7];
- (void)stride;
- (void)left;
- DST(0, 0) = AVG3(A, B, C);
- DST(1, 0) = DST(0, 1) = AVG3(B, C, D);
- DST(2, 0) = DST(1, 1) = DST(0, 2) = AVG3(C, D, E);
- DST(3, 0) = DST(2, 1) = DST(1, 2) = DST(0, 3) = AVG3(D, E, F);
- DST(3, 1) = DST(2, 2) = DST(1, 3) = AVG3(E, F, G);
- DST(3, 2) = DST(2, 3) = AVG3(F, G, H);
- DST(3, 3) = H; // differs from vp8
-}
-
-void vpx_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int A = above[0];
- const int B = above[1];
- const int C = above[2];
- const int D = above[3];
- const int E = above[4];
- const int F = above[5];
- const int G = above[6];
- const int H = above[7];
- (void)stride;
- (void)left;
- DST(0, 0) = AVG3(A, B, C);
- DST(1, 0) = DST(0, 1) = AVG3(B, C, D);
- DST(2, 0) = DST(1, 1) = DST(0, 2) = AVG3(C, D, E);
- DST(3, 0) = DST(2, 1) = DST(1, 2) = DST(0, 3) = AVG3(D, E, F);
- DST(3, 1) = DST(2, 2) = DST(1, 3) = AVG3(E, F, G);
- DST(3, 2) = DST(2, 3) = AVG3(F, G, H);
- DST(3, 3) = AVG3(G, H, H);
-}
-
-void vpx_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int I = left[0];
- const int J = left[1];
- const int K = left[2];
- const int X = above[-1];
- const int A = above[0];
- const int B = above[1];
- const int C = above[2];
- const int D = above[3];
- DST(0, 0) = DST(1, 2) = AVG2(X, A);
- DST(1, 0) = DST(2, 2) = AVG2(A, B);
- DST(2, 0) = DST(3, 2) = AVG2(B, C);
- DST(3, 0) = AVG2(C, D);
-
- DST(0, 3) = AVG3(K, J, I);
- DST(0, 2) = AVG3(J, I, X);
- DST(0, 1) = DST(1, 3) = AVG3(I, X, A);
- DST(1, 1) = DST(2, 3) = AVG3(X, A, B);
- DST(2, 1) = DST(3, 3) = AVG3(A, B, C);
- DST(3, 1) = AVG3(B, C, D);
-}
-
-void vpx_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int I = left[0];
- const int J = left[1];
- const int K = left[2];
- const int L = left[3];
- const int X = above[-1];
- const int A = above[0];
- const int B = above[1];
- const int C = above[2];
- const int D = above[3];
- (void)stride;
- DST(0, 3) = AVG3(J, K, L);
- DST(1, 3) = DST(0, 2) = AVG3(I, J, K);
- DST(2, 3) = DST(1, 2) = DST(0, 1) = AVG3(X, I, J);
- DST(3, 3) = DST(2, 2) = DST(1, 1) = DST(0, 0) = AVG3(A, X, I);
- DST(3, 2) = DST(2, 1) = DST(1, 0) = AVG3(B, A, X);
- DST(3, 1) = DST(2, 0) = AVG3(C, B, A);
- DST(3, 0) = AVG3(D, C, B);
-}
-
-void vpx_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
- const uint8_t *above, const uint8_t *left) {
- const int I = left[0];
- const int J = left[1];
- const int K = left[2];
- const int L = left[3];
- const int X = above[-1];
- const int A = above[0];
- const int B = above[1];
- const int C = above[2];
-
- DST(0, 0) = DST(2, 1) = AVG2(I, X);
- DST(0, 1) = DST(2, 2) = AVG2(J, I);
- DST(0, 2) = DST(2, 3) = AVG2(K, J);
- DST(0, 3) = AVG2(L, K);
-
- DST(3, 0) = AVG3(A, B, C);
- DST(2, 0) = AVG3(X, A, B);
- DST(1, 0) = DST(3, 1) = AVG3(I, X, A);
- DST(1, 1) = DST(3, 2) = AVG3(J, I, X);
- DST(1, 2) = DST(3, 3) = AVG3(K, J, I);
- DST(1, 3) = AVG3(L, K, J);
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static INLINE void highbd_d207_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- (void) above;
- (void) bd;
-
- // First column.
- for (r = 0; r < bs - 1; ++r) {
- dst[r * stride] = AVG2(left[r], left[r + 1]);
- }
- dst[(bs - 1) * stride] = left[bs - 1];
- dst++;
-
- // Second column.
- for (r = 0; r < bs - 2; ++r) {
- dst[r * stride] = AVG3(left[r], left[r + 1], left[r + 2]);
- }
- dst[(bs - 2) * stride] = AVG3(left[bs - 2], left[bs - 1], left[bs - 1]);
- dst[(bs - 1) * stride] = left[bs - 1];
- dst++;
-
- // Rest of last row.
- for (c = 0; c < bs - 2; ++c)
- dst[(bs - 1) * stride + c] = left[bs - 1];
-
- for (r = bs - 2; r >= 0; --r) {
- for (c = 0; c < bs - 2; ++c)
- dst[r * stride + c] = dst[(r + 1) * stride + c - 2];
- }
-}
-
-#if CONFIG_MISC_FIXES
-static INLINE void highbd_d207e_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- (void) above;
- (void) bd;
-
- for (r = 0; r < bs; ++r) {
- for (c = 0; c < bs; ++c) {
- dst[c] = c & 1 ? AVG3(left[(c >> 1) + r], left[(c >> 1) + r + 1],
- left[(c >> 1) + r + 2])
- : AVG2(left[(c >> 1) + r], left[(c >> 1) + r + 1]);
- }
- dst += stride;
- }
-}
-#endif // CONFIG_MISC_FIXES
-
-static INLINE void highbd_d63_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- (void) left;
- (void) bd;
- for (r = 0; r < bs; ++r) {
- for (c = 0; c < bs; ++c) {
- dst[c] = r & 1 ? AVG3(above[(r >> 1) + c], above[(r >> 1) + c + 1],
- above[(r >> 1) + c + 2])
- : AVG2(above[(r >> 1) + c], above[(r >> 1) + c + 1]);
- }
- dst += stride;
- }
-}
-
-#define highbd_d63e_predictor highbd_d63_predictor
-
-static INLINE void highbd_d45_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
- const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- (void) left;
- (void) bd;
- for (r = 0; r < bs; ++r) {
- for (c = 0; c < bs; ++c) {
- dst[c] = r + c + 2 < bs * 2 ? AVG3(above[r + c], above[r + c + 1],
- above[r + c + 2])
- : above[bs * 2 - 1];
- }
- dst += stride;
- }
-}
-
-#if CONFIG_MISC_FIXES
-static INLINE void highbd_d45e_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- (void) left;
- (void) bd;
- for (r = 0; r < bs; ++r) {
- for (c = 0; c < bs; ++c) {
- dst[c] = AVG3(above[r + c], above[r + c + 1],
- above[r + c + 1 + (r + c + 2 < bs * 2)]);
- }
- dst += stride;
- }
-}
-#endif // CONFIG_MISC_FIXES
-
-static INLINE void highbd_d117_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- (void) bd;
-
- // first row
- for (c = 0; c < bs; c++)
- dst[c] = AVG2(above[c - 1], above[c]);
- dst += stride;
-
- // second row
- dst[0] = AVG3(left[0], above[-1], above[0]);
- for (c = 1; c < bs; c++)
- dst[c] = AVG3(above[c - 2], above[c - 1], above[c]);
- dst += stride;
-
- // the rest of first col
- dst[0] = AVG3(above[-1], left[0], left[1]);
- for (r = 3; r < bs; ++r)
- dst[(r - 2) * stride] = AVG3(left[r - 3], left[r - 2], left[r - 1]);
-
- // the rest of the block
- for (r = 2; r < bs; ++r) {
- for (c = 1; c < bs; c++)
- dst[c] = dst[-2 * stride + c - 1];
- dst += stride;
- }
-}
-
-static INLINE void highbd_d135_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- (void) bd;
- dst[0] = AVG3(left[0], above[-1], above[0]);
- for (c = 1; c < bs; c++)
- dst[c] = AVG3(above[c - 2], above[c - 1], above[c]);
-
- dst[stride] = AVG3(above[-1], left[0], left[1]);
- for (r = 2; r < bs; ++r)
- dst[r * stride] = AVG3(left[r - 2], left[r - 1], left[r]);
-
- dst += stride;
- for (r = 1; r < bs; ++r) {
- for (c = 1; c < bs; c++)
- dst[c] = dst[-stride + c - 1];
- dst += stride;
- }
-}
-
-static INLINE void highbd_d153_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- (void) bd;
- dst[0] = AVG2(above[-1], left[0]);
- for (r = 1; r < bs; r++)
- dst[r * stride] = AVG2(left[r - 1], left[r]);
- dst++;
-
- dst[0] = AVG3(left[0], above[-1], above[0]);
- dst[stride] = AVG3(above[-1], left[0], left[1]);
- for (r = 2; r < bs; r++)
- dst[r * stride] = AVG3(left[r - 2], left[r - 1], left[r]);
- dst++;
-
- for (c = 0; c < bs - 2; c++)
- dst[c] = AVG3(above[c - 1], above[c], above[c + 1]);
- dst += stride;
-
- for (r = 1; r < bs; ++r) {
- for (c = 0; c < bs - 2; c++)
- dst[c] = dst[-stride + c - 2];
- dst += stride;
- }
-}
-
-static INLINE void highbd_v_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r;
- (void) left;
- (void) bd;
- for (r = 0; r < bs; r++) {
- memcpy(dst, above, bs * sizeof(uint16_t));
- dst += stride;
- }
-}
-
-static INLINE void highbd_h_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r;
- (void) above;
- (void) bd;
- for (r = 0; r < bs; r++) {
- vpx_memset16(dst, left[r], bs);
- dst += stride;
- }
-}
-
-static INLINE void highbd_tm_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r, c;
- int ytop_left = above[-1];
- (void) bd;
-
- for (r = 0; r < bs; r++) {
- for (c = 0; c < bs; c++)
- dst[c] = clip_pixel_highbd(left[r] + above[c] - ytop_left, bd);
- dst += stride;
- }
-}
-
-static INLINE void highbd_dc_128_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int r;
- (void) above;
- (void) left;
-
- for (r = 0; r < bs; r++) {
- vpx_memset16(dst, 128 << (bd - 8), bs);
- dst += stride;
- }
-}
-
-static INLINE void highbd_dc_left_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int i, r, expected_dc, sum = 0;
- (void) above;
- (void) bd;
-
- for (i = 0; i < bs; i++)
- sum += left[i];
- expected_dc = (sum + (bs >> 1)) / bs;
-
- for (r = 0; r < bs; r++) {
- vpx_memset16(dst, expected_dc, bs);
- dst += stride;
- }
-}
-
-static INLINE void highbd_dc_top_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int i, r, expected_dc, sum = 0;
- (void) left;
- (void) bd;
-
- for (i = 0; i < bs; i++)
- sum += above[i];
- expected_dc = (sum + (bs >> 1)) / bs;
-
- for (r = 0; r < bs; r++) {
- vpx_memset16(dst, expected_dc, bs);
- dst += stride;
- }
-}
-
-static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride,
- int bs, const uint16_t *above,
- const uint16_t *left, int bd) {
- int i, r, expected_dc, sum = 0;
- const int count = 2 * bs;
- (void) bd;
-
- for (i = 0; i < bs; i++) {
- sum += above[i];
- sum += left[i];
- }
-
- expected_dc = (sum + (count >> 1)) / count;
-
- for (r = 0; r < bs; r++) {
- vpx_memset16(dst, expected_dc, bs);
- dst += stride;
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-// This serves as a wrapper function, so that all the prediction functions
-// can be unified and accessed as a pointer array. Note that the boundary
-// above and left are not necessarily used all the time.
-#define intra_pred_sized(type, size) \
- void vpx_##type##_predictor_##size##x##size##_c(uint8_t *dst, \
- ptrdiff_t stride, \
- const uint8_t *above, \
- const uint8_t *left) { \
- type##_predictor(dst, stride, size, above, left); \
- }
-
-#if CONFIG_VP9_HIGHBITDEPTH
-#define intra_pred_highbd_sized(type, size) \
- void vpx_highbd_##type##_predictor_##size##x##size##_c( \
- uint16_t *dst, ptrdiff_t stride, const uint16_t *above, \
- const uint16_t *left, int bd) { \
- highbd_##type##_predictor(dst, stride, size, above, left, bd); \
- }
-
-#define intra_pred_allsizes(type) \
- intra_pred_sized(type, 4) \
- intra_pred_sized(type, 8) \
- intra_pred_sized(type, 16) \
- intra_pred_sized(type, 32) \
- intra_pred_highbd_sized(type, 4) \
- intra_pred_highbd_sized(type, 8) \
- intra_pred_highbd_sized(type, 16) \
- intra_pred_highbd_sized(type, 32)
-
-#define intra_pred_no_4x4(type) \
- intra_pred_sized(type, 8) \
- intra_pred_sized(type, 16) \
- intra_pred_sized(type, 32) \
- intra_pred_highbd_sized(type, 4) \
- intra_pred_highbd_sized(type, 8) \
- intra_pred_highbd_sized(type, 16) \
- intra_pred_highbd_sized(type, 32)
-
-#else
-#define intra_pred_allsizes(type) \
- intra_pred_sized(type, 4) \
- intra_pred_sized(type, 8) \
- intra_pred_sized(type, 16) \
- intra_pred_sized(type, 32)
-
-#define intra_pred_no_4x4(type) \
- intra_pred_sized(type, 8) \
- intra_pred_sized(type, 16) \
- intra_pred_sized(type, 32)
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-intra_pred_no_4x4(d207)
-intra_pred_no_4x4(d63)
-intra_pred_no_4x4(d45)
-#if CONFIG_MISC_FIXES
-intra_pred_allsizes(d207e)
-intra_pred_allsizes(d63e)
-intra_pred_no_4x4(d45e)
-#endif
-intra_pred_no_4x4(d117)
-intra_pred_no_4x4(d135)
-intra_pred_no_4x4(d153)
-intra_pred_allsizes(v)
-intra_pred_allsizes(h)
-intra_pred_allsizes(tm)
-intra_pred_allsizes(dc_128)
-intra_pred_allsizes(dc_left)
-intra_pred_allsizes(dc_top)
-intra_pred_allsizes(dc)
-#undef intra_pred_allsizes
diff --git a/thirdparty/libvpx/vpx_dsp/inv_txfm.c b/thirdparty/libvpx/vpx_dsp/inv_txfm.c
deleted file mode 100644
index e18d31d7aa..0000000000
--- a/thirdparty/libvpx/vpx_dsp/inv_txfm.c
+++ /dev/null
@@ -1,2518 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <math.h>
-#include <string.h>
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/inv_txfm.h"
-
-void vpx_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
-/* 4-point reversible, orthonormal inverse Walsh-Hadamard in 3.5 adds,
- 0.5 shifts per pixel. */
- int i;
- tran_low_t output[16];
- tran_high_t a1, b1, c1, d1, e1;
- const tran_low_t *ip = input;
- tran_low_t *op = output;
-
- for (i = 0; i < 4; i++) {
- a1 = ip[0] >> UNIT_QUANT_SHIFT;
- c1 = ip[1] >> UNIT_QUANT_SHIFT;
- d1 = ip[2] >> UNIT_QUANT_SHIFT;
- b1 = ip[3] >> UNIT_QUANT_SHIFT;
- a1 += c1;
- d1 -= b1;
- e1 = (a1 - d1) >> 1;
- b1 = e1 - b1;
- c1 = e1 - c1;
- a1 -= b1;
- d1 += c1;
- op[0] = WRAPLOW(a1);
- op[1] = WRAPLOW(b1);
- op[2] = WRAPLOW(c1);
- op[3] = WRAPLOW(d1);
- ip += 4;
- op += 4;
- }
-
- ip = output;
- for (i = 0; i < 4; i++) {
- a1 = ip[4 * 0];
- c1 = ip[4 * 1];
- d1 = ip[4 * 2];
- b1 = ip[4 * 3];
- a1 += c1;
- d1 -= b1;
- e1 = (a1 - d1) >> 1;
- b1 = e1 - b1;
- c1 = e1 - c1;
- a1 -= b1;
- d1 += c1;
- dest[stride * 0] = clip_pixel_add(dest[stride * 0], WRAPLOW(a1));
- dest[stride * 1] = clip_pixel_add(dest[stride * 1], WRAPLOW(b1));
- dest[stride * 2] = clip_pixel_add(dest[stride * 2], WRAPLOW(c1));
- dest[stride * 3] = clip_pixel_add(dest[stride * 3], WRAPLOW(d1));
-
- ip++;
- dest++;
- }
-}
-
-void vpx_iwht4x4_1_add_c(const tran_low_t *in, uint8_t *dest, int dest_stride) {
- int i;
- tran_high_t a1, e1;
- tran_low_t tmp[4];
- const tran_low_t *ip = in;
- tran_low_t *op = tmp;
-
- a1 = ip[0] >> UNIT_QUANT_SHIFT;
- e1 = a1 >> 1;
- a1 -= e1;
- op[0] = WRAPLOW(a1);
- op[1] = op[2] = op[3] = WRAPLOW(e1);
-
- ip = tmp;
- for (i = 0; i < 4; i++) {
- e1 = ip[0] >> 1;
- a1 = ip[0] - e1;
- dest[dest_stride * 0] = clip_pixel_add(dest[dest_stride * 0], a1);
- dest[dest_stride * 1] = clip_pixel_add(dest[dest_stride * 1], e1);
- dest[dest_stride * 2] = clip_pixel_add(dest[dest_stride * 2], e1);
- dest[dest_stride * 3] = clip_pixel_add(dest[dest_stride * 3], e1);
- ip++;
- dest++;
- }
-}
-
-void idct4_c(const tran_low_t *input, tran_low_t *output) {
- tran_low_t step[4];
- tran_high_t temp1, temp2;
- // stage 1
- temp1 = (input[0] + input[2]) * cospi_16_64;
- temp2 = (input[0] - input[2]) * cospi_16_64;
- step[0] = WRAPLOW(dct_const_round_shift(temp1));
- step[1] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = input[1] * cospi_24_64 - input[3] * cospi_8_64;
- temp2 = input[1] * cospi_8_64 + input[3] * cospi_24_64;
- step[2] = WRAPLOW(dct_const_round_shift(temp1));
- step[3] = WRAPLOW(dct_const_round_shift(temp2));
-
- // stage 2
- output[0] = WRAPLOW(step[0] + step[3]);
- output[1] = WRAPLOW(step[1] + step[2]);
- output[2] = WRAPLOW(step[1] - step[2]);
- output[3] = WRAPLOW(step[0] - step[3]);
-}
-
-void vpx_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
- tran_low_t out[4 * 4];
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[4], temp_out[4];
-
- // Rows
- for (i = 0; i < 4; ++i) {
- idct4_c(input, outptr);
- input += 4;
- outptr += 4;
- }
-
- // Columns
- for (i = 0; i < 4; ++i) {
- for (j = 0; j < 4; ++j)
- temp_in[j] = out[j * 4 + i];
- idct4_c(temp_in, temp_out);
- for (j = 0; j < 4; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 4));
- }
- }
-}
-
-void vpx_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest,
- int dest_stride) {
- int i;
- tran_high_t a1;
- tran_low_t out = WRAPLOW(dct_const_round_shift(input[0] * cospi_16_64));
- out = WRAPLOW(dct_const_round_shift(out * cospi_16_64));
- a1 = ROUND_POWER_OF_TWO(out, 4);
-
- for (i = 0; i < 4; i++) {
- dest[0] = clip_pixel_add(dest[0], a1);
- dest[1] = clip_pixel_add(dest[1], a1);
- dest[2] = clip_pixel_add(dest[2], a1);
- dest[3] = clip_pixel_add(dest[3], a1);
- dest += dest_stride;
- }
-}
-
-void idct8_c(const tran_low_t *input, tran_low_t *output) {
- tran_low_t step1[8], step2[8];
- tran_high_t temp1, temp2;
- // stage 1
- step1[0] = input[0];
- step1[2] = input[4];
- step1[1] = input[2];
- step1[3] = input[6];
- temp1 = input[1] * cospi_28_64 - input[7] * cospi_4_64;
- temp2 = input[1] * cospi_4_64 + input[7] * cospi_28_64;
- step1[4] = WRAPLOW(dct_const_round_shift(temp1));
- step1[7] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = input[5] * cospi_12_64 - input[3] * cospi_20_64;
- temp2 = input[5] * cospi_20_64 + input[3] * cospi_12_64;
- step1[5] = WRAPLOW(dct_const_round_shift(temp1));
- step1[6] = WRAPLOW(dct_const_round_shift(temp2));
-
- // stage 2
- temp1 = (step1[0] + step1[2]) * cospi_16_64;
- temp2 = (step1[0] - step1[2]) * cospi_16_64;
- step2[0] = WRAPLOW(dct_const_round_shift(temp1));
- step2[1] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = step1[1] * cospi_24_64 - step1[3] * cospi_8_64;
- temp2 = step1[1] * cospi_8_64 + step1[3] * cospi_24_64;
- step2[2] = WRAPLOW(dct_const_round_shift(temp1));
- step2[3] = WRAPLOW(dct_const_round_shift(temp2));
- step2[4] = WRAPLOW(step1[4] + step1[5]);
- step2[5] = WRAPLOW(step1[4] - step1[5]);
- step2[6] = WRAPLOW(-step1[6] + step1[7]);
- step2[7] = WRAPLOW(step1[6] + step1[7]);
-
- // stage 3
- step1[0] = WRAPLOW(step2[0] + step2[3]);
- step1[1] = WRAPLOW(step2[1] + step2[2]);
- step1[2] = WRAPLOW(step2[1] - step2[2]);
- step1[3] = WRAPLOW(step2[0] - step2[3]);
- step1[4] = step2[4];
- temp1 = (step2[6] - step2[5]) * cospi_16_64;
- temp2 = (step2[5] + step2[6]) * cospi_16_64;
- step1[5] = WRAPLOW(dct_const_round_shift(temp1));
- step1[6] = WRAPLOW(dct_const_round_shift(temp2));
- step1[7] = step2[7];
-
- // stage 4
- output[0] = WRAPLOW(step1[0] + step1[7]);
- output[1] = WRAPLOW(step1[1] + step1[6]);
- output[2] = WRAPLOW(step1[2] + step1[5]);
- output[3] = WRAPLOW(step1[3] + step1[4]);
- output[4] = WRAPLOW(step1[3] - step1[4]);
- output[5] = WRAPLOW(step1[2] - step1[5]);
- output[6] = WRAPLOW(step1[1] - step1[6]);
- output[7] = WRAPLOW(step1[0] - step1[7]);
-}
-
-void vpx_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
- tran_low_t out[8 * 8];
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[8], temp_out[8];
-
- // First transform rows
- for (i = 0; i < 8; ++i) {
- idct8_c(input, outptr);
- input += 8;
- outptr += 8;
- }
-
- // Then transform columns
- for (i = 0; i < 8; ++i) {
- for (j = 0; j < 8; ++j)
- temp_in[j] = out[j * 8 + i];
- idct8_c(temp_in, temp_out);
- for (j = 0; j < 8; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 5));
- }
- }
-}
-
-void vpx_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
- int i, j;
- tran_high_t a1;
- tran_low_t out = WRAPLOW(dct_const_round_shift(input[0] * cospi_16_64));
- out = WRAPLOW(dct_const_round_shift(out * cospi_16_64));
- a1 = ROUND_POWER_OF_TWO(out, 5);
- for (j = 0; j < 8; ++j) {
- for (i = 0; i < 8; ++i)
- dest[i] = clip_pixel_add(dest[i], a1);
- dest += stride;
- }
-}
-
-void iadst4_c(const tran_low_t *input, tran_low_t *output) {
- tran_high_t s0, s1, s2, s3, s4, s5, s6, s7;
-
- tran_low_t x0 = input[0];
- tran_low_t x1 = input[1];
- tran_low_t x2 = input[2];
- tran_low_t x3 = input[3];
-
- if (!(x0 | x1 | x2 | x3)) {
- output[0] = output[1] = output[2] = output[3] = 0;
- return;
- }
-
- s0 = sinpi_1_9 * x0;
- s1 = sinpi_2_9 * x0;
- s2 = sinpi_3_9 * x1;
- s3 = sinpi_4_9 * x2;
- s4 = sinpi_1_9 * x2;
- s5 = sinpi_2_9 * x3;
- s6 = sinpi_4_9 * x3;
- s7 = WRAPLOW(x0 - x2 + x3);
-
- s0 = s0 + s3 + s5;
- s1 = s1 - s4 - s6;
- s3 = s2;
- s2 = sinpi_3_9 * s7;
-
- // 1-D transform scaling factor is sqrt(2).
- // The overall dynamic range is 14b (input) + 14b (multiplication scaling)
- // + 1b (addition) = 29b.
- // Hence the output bit depth is 15b.
- output[0] = WRAPLOW(dct_const_round_shift(s0 + s3));
- output[1] = WRAPLOW(dct_const_round_shift(s1 + s3));
- output[2] = WRAPLOW(dct_const_round_shift(s2));
- output[3] = WRAPLOW(dct_const_round_shift(s0 + s1 - s3));
-}
-
-void iadst8_c(const tran_low_t *input, tran_low_t *output) {
- int s0, s1, s2, s3, s4, s5, s6, s7;
-
- tran_high_t x0 = input[7];
- tran_high_t x1 = input[0];
- tran_high_t x2 = input[5];
- tran_high_t x3 = input[2];
- tran_high_t x4 = input[3];
- tran_high_t x5 = input[4];
- tran_high_t x6 = input[1];
- tran_high_t x7 = input[6];
-
- if (!(x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7)) {
- output[0] = output[1] = output[2] = output[3] = output[4]
- = output[5] = output[6] = output[7] = 0;
- return;
- }
-
- // stage 1
- s0 = (int)(cospi_2_64 * x0 + cospi_30_64 * x1);
- s1 = (int)(cospi_30_64 * x0 - cospi_2_64 * x1);
- s2 = (int)(cospi_10_64 * x2 + cospi_22_64 * x3);
- s3 = (int)(cospi_22_64 * x2 - cospi_10_64 * x3);
- s4 = (int)(cospi_18_64 * x4 + cospi_14_64 * x5);
- s5 = (int)(cospi_14_64 * x4 - cospi_18_64 * x5);
- s6 = (int)(cospi_26_64 * x6 + cospi_6_64 * x7);
- s7 = (int)(cospi_6_64 * x6 - cospi_26_64 * x7);
-
- x0 = WRAPLOW(dct_const_round_shift(s0 + s4));
- x1 = WRAPLOW(dct_const_round_shift(s1 + s5));
- x2 = WRAPLOW(dct_const_round_shift(s2 + s6));
- x3 = WRAPLOW(dct_const_round_shift(s3 + s7));
- x4 = WRAPLOW(dct_const_round_shift(s0 - s4));
- x5 = WRAPLOW(dct_const_round_shift(s1 - s5));
- x6 = WRAPLOW(dct_const_round_shift(s2 - s6));
- x7 = WRAPLOW(dct_const_round_shift(s3 - s7));
-
- // stage 2
- s0 = (int)x0;
- s1 = (int)x1;
- s2 = (int)x2;
- s3 = (int)x3;
- s4 = (int)(cospi_8_64 * x4 + cospi_24_64 * x5);
- s5 = (int)(cospi_24_64 * x4 - cospi_8_64 * x5);
- s6 = (int)(-cospi_24_64 * x6 + cospi_8_64 * x7);
- s7 = (int)(cospi_8_64 * x6 + cospi_24_64 * x7);
-
- x0 = WRAPLOW(s0 + s2);
- x1 = WRAPLOW(s1 + s3);
- x2 = WRAPLOW(s0 - s2);
- x3 = WRAPLOW(s1 - s3);
- x4 = WRAPLOW(dct_const_round_shift(s4 + s6));
- x5 = WRAPLOW(dct_const_round_shift(s5 + s7));
- x6 = WRAPLOW(dct_const_round_shift(s4 - s6));
- x7 = WRAPLOW(dct_const_round_shift(s5 - s7));
-
- // stage 3
- s2 = (int)(cospi_16_64 * (x2 + x3));
- s3 = (int)(cospi_16_64 * (x2 - x3));
- s6 = (int)(cospi_16_64 * (x6 + x7));
- s7 = (int)(cospi_16_64 * (x6 - x7));
-
- x2 = WRAPLOW(dct_const_round_shift(s2));
- x3 = WRAPLOW(dct_const_round_shift(s3));
- x6 = WRAPLOW(dct_const_round_shift(s6));
- x7 = WRAPLOW(dct_const_round_shift(s7));
-
- output[0] = WRAPLOW(x0);
- output[1] = WRAPLOW(-x4);
- output[2] = WRAPLOW(x6);
- output[3] = WRAPLOW(-x2);
- output[4] = WRAPLOW(x3);
- output[5] = WRAPLOW(-x7);
- output[6] = WRAPLOW(x5);
- output[7] = WRAPLOW(-x1);
-}
-
-void vpx_idct8x8_12_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
- tran_low_t out[8 * 8] = { 0 };
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[8], temp_out[8];
-
- // First transform rows
- // only first 4 row has non-zero coefs
- for (i = 0; i < 4; ++i) {
- idct8_c(input, outptr);
- input += 8;
- outptr += 8;
- }
-
- // Then transform columns
- for (i = 0; i < 8; ++i) {
- for (j = 0; j < 8; ++j)
- temp_in[j] = out[j * 8 + i];
- idct8_c(temp_in, temp_out);
- for (j = 0; j < 8; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 5));
- }
- }
-}
-
-void idct16_c(const tran_low_t *input, tran_low_t *output) {
- tran_low_t step1[16], step2[16];
- tran_high_t temp1, temp2;
-
- // stage 1
- step1[0] = input[0/2];
- step1[1] = input[16/2];
- step1[2] = input[8/2];
- step1[3] = input[24/2];
- step1[4] = input[4/2];
- step1[5] = input[20/2];
- step1[6] = input[12/2];
- step1[7] = input[28/2];
- step1[8] = input[2/2];
- step1[9] = input[18/2];
- step1[10] = input[10/2];
- step1[11] = input[26/2];
- step1[12] = input[6/2];
- step1[13] = input[22/2];
- step1[14] = input[14/2];
- step1[15] = input[30/2];
-
- // stage 2
- step2[0] = step1[0];
- step2[1] = step1[1];
- step2[2] = step1[2];
- step2[3] = step1[3];
- step2[4] = step1[4];
- step2[5] = step1[5];
- step2[6] = step1[6];
- step2[7] = step1[7];
-
- temp1 = step1[8] * cospi_30_64 - step1[15] * cospi_2_64;
- temp2 = step1[8] * cospi_2_64 + step1[15] * cospi_30_64;
- step2[8] = WRAPLOW(dct_const_round_shift(temp1));
- step2[15] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = step1[9] * cospi_14_64 - step1[14] * cospi_18_64;
- temp2 = step1[9] * cospi_18_64 + step1[14] * cospi_14_64;
- step2[9] = WRAPLOW(dct_const_round_shift(temp1));
- step2[14] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = step1[10] * cospi_22_64 - step1[13] * cospi_10_64;
- temp2 = step1[10] * cospi_10_64 + step1[13] * cospi_22_64;
- step2[10] = WRAPLOW(dct_const_round_shift(temp1));
- step2[13] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = step1[11] * cospi_6_64 - step1[12] * cospi_26_64;
- temp2 = step1[11] * cospi_26_64 + step1[12] * cospi_6_64;
- step2[11] = WRAPLOW(dct_const_round_shift(temp1));
- step2[12] = WRAPLOW(dct_const_round_shift(temp2));
-
- // stage 3
- step1[0] = step2[0];
- step1[1] = step2[1];
- step1[2] = step2[2];
- step1[3] = step2[3];
-
- temp1 = step2[4] * cospi_28_64 - step2[7] * cospi_4_64;
- temp2 = step2[4] * cospi_4_64 + step2[7] * cospi_28_64;
- step1[4] = WRAPLOW(dct_const_round_shift(temp1));
- step1[7] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = step2[5] * cospi_12_64 - step2[6] * cospi_20_64;
- temp2 = step2[5] * cospi_20_64 + step2[6] * cospi_12_64;
- step1[5] = WRAPLOW(dct_const_round_shift(temp1));
- step1[6] = WRAPLOW(dct_const_round_shift(temp2));
-
- step1[8] = WRAPLOW(step2[8] + step2[9]);
- step1[9] = WRAPLOW(step2[8] - step2[9]);
- step1[10] = WRAPLOW(-step2[10] + step2[11]);
- step1[11] = WRAPLOW(step2[10] + step2[11]);
- step1[12] = WRAPLOW(step2[12] + step2[13]);
- step1[13] = WRAPLOW(step2[12] - step2[13]);
- step1[14] = WRAPLOW(-step2[14] + step2[15]);
- step1[15] = WRAPLOW(step2[14] + step2[15]);
-
- // stage 4
- temp1 = (step1[0] + step1[1]) * cospi_16_64;
- temp2 = (step1[0] - step1[1]) * cospi_16_64;
- step2[0] = WRAPLOW(dct_const_round_shift(temp1));
- step2[1] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = step1[2] * cospi_24_64 - step1[3] * cospi_8_64;
- temp2 = step1[2] * cospi_8_64 + step1[3] * cospi_24_64;
- step2[2] = WRAPLOW(dct_const_round_shift(temp1));
- step2[3] = WRAPLOW(dct_const_round_shift(temp2));
- step2[4] = WRAPLOW(step1[4] + step1[5]);
- step2[5] = WRAPLOW(step1[4] - step1[5]);
- step2[6] = WRAPLOW(-step1[6] + step1[7]);
- step2[7] = WRAPLOW(step1[6] + step1[7]);
-
- step2[8] = step1[8];
- step2[15] = step1[15];
- temp1 = -step1[9] * cospi_8_64 + step1[14] * cospi_24_64;
- temp2 = step1[9] * cospi_24_64 + step1[14] * cospi_8_64;
- step2[9] = WRAPLOW(dct_const_round_shift(temp1));
- step2[14] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = -step1[10] * cospi_24_64 - step1[13] * cospi_8_64;
- temp2 = -step1[10] * cospi_8_64 + step1[13] * cospi_24_64;
- step2[10] = WRAPLOW(dct_const_round_shift(temp1));
- step2[13] = WRAPLOW(dct_const_round_shift(temp2));
- step2[11] = step1[11];
- step2[12] = step1[12];
-
- // stage 5
- step1[0] = WRAPLOW(step2[0] + step2[3]);
- step1[1] = WRAPLOW(step2[1] + step2[2]);
- step1[2] = WRAPLOW(step2[1] - step2[2]);
- step1[3] = WRAPLOW(step2[0] - step2[3]);
- step1[4] = step2[4];
- temp1 = (step2[6] - step2[5]) * cospi_16_64;
- temp2 = (step2[5] + step2[6]) * cospi_16_64;
- step1[5] = WRAPLOW(dct_const_round_shift(temp1));
- step1[6] = WRAPLOW(dct_const_round_shift(temp2));
- step1[7] = step2[7];
-
- step1[8] = WRAPLOW(step2[8] + step2[11]);
- step1[9] = WRAPLOW(step2[9] + step2[10]);
- step1[10] = WRAPLOW(step2[9] - step2[10]);
- step1[11] = WRAPLOW(step2[8] - step2[11]);
- step1[12] = WRAPLOW(-step2[12] + step2[15]);
- step1[13] = WRAPLOW(-step2[13] + step2[14]);
- step1[14] = WRAPLOW(step2[13] + step2[14]);
- step1[15] = WRAPLOW(step2[12] + step2[15]);
-
- // stage 6
- step2[0] = WRAPLOW(step1[0] + step1[7]);
- step2[1] = WRAPLOW(step1[1] + step1[6]);
- step2[2] = WRAPLOW(step1[2] + step1[5]);
- step2[3] = WRAPLOW(step1[3] + step1[4]);
- step2[4] = WRAPLOW(step1[3] - step1[4]);
- step2[5] = WRAPLOW(step1[2] - step1[5]);
- step2[6] = WRAPLOW(step1[1] - step1[6]);
- step2[7] = WRAPLOW(step1[0] - step1[7]);
- step2[8] = step1[8];
- step2[9] = step1[9];
- temp1 = (-step1[10] + step1[13]) * cospi_16_64;
- temp2 = (step1[10] + step1[13]) * cospi_16_64;
- step2[10] = WRAPLOW(dct_const_round_shift(temp1));
- step2[13] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = (-step1[11] + step1[12]) * cospi_16_64;
- temp2 = (step1[11] + step1[12]) * cospi_16_64;
- step2[11] = WRAPLOW(dct_const_round_shift(temp1));
- step2[12] = WRAPLOW(dct_const_round_shift(temp2));
- step2[14] = step1[14];
- step2[15] = step1[15];
-
- // stage 7
- output[0] = WRAPLOW(step2[0] + step2[15]);
- output[1] = WRAPLOW(step2[1] + step2[14]);
- output[2] = WRAPLOW(step2[2] + step2[13]);
- output[3] = WRAPLOW(step2[3] + step2[12]);
- output[4] = WRAPLOW(step2[4] + step2[11]);
- output[5] = WRAPLOW(step2[5] + step2[10]);
- output[6] = WRAPLOW(step2[6] + step2[9]);
- output[7] = WRAPLOW(step2[7] + step2[8]);
- output[8] = WRAPLOW(step2[7] - step2[8]);
- output[9] = WRAPLOW(step2[6] - step2[9]);
- output[10] = WRAPLOW(step2[5] - step2[10]);
- output[11] = WRAPLOW(step2[4] - step2[11]);
- output[12] = WRAPLOW(step2[3] - step2[12]);
- output[13] = WRAPLOW(step2[2] - step2[13]);
- output[14] = WRAPLOW(step2[1] - step2[14]);
- output[15] = WRAPLOW(step2[0] - step2[15]);
-}
-
-void vpx_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest,
- int stride) {
- tran_low_t out[16 * 16];
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[16], temp_out[16];
-
- // First transform rows
- for (i = 0; i < 16; ++i) {
- idct16_c(input, outptr);
- input += 16;
- outptr += 16;
- }
-
- // Then transform columns
- for (i = 0; i < 16; ++i) {
- for (j = 0; j < 16; ++j)
- temp_in[j] = out[j * 16 + i];
- idct16_c(temp_in, temp_out);
- for (j = 0; j < 16; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 6));
- }
- }
-}
-
-void iadst16_c(const tran_low_t *input, tran_low_t *output) {
- tran_high_t s0, s1, s2, s3, s4, s5, s6, s7, s8;
- tran_high_t s9, s10, s11, s12, s13, s14, s15;
-
- tran_high_t x0 = input[15];
- tran_high_t x1 = input[0];
- tran_high_t x2 = input[13];
- tran_high_t x3 = input[2];
- tran_high_t x4 = input[11];
- tran_high_t x5 = input[4];
- tran_high_t x6 = input[9];
- tran_high_t x7 = input[6];
- tran_high_t x8 = input[7];
- tran_high_t x9 = input[8];
- tran_high_t x10 = input[5];
- tran_high_t x11 = input[10];
- tran_high_t x12 = input[3];
- tran_high_t x13 = input[12];
- tran_high_t x14 = input[1];
- tran_high_t x15 = input[14];
-
- if (!(x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8
- | x9 | x10 | x11 | x12 | x13 | x14 | x15)) {
- output[0] = output[1] = output[2] = output[3] = output[4]
- = output[5] = output[6] = output[7] = output[8]
- = output[9] = output[10] = output[11] = output[12]
- = output[13] = output[14] = output[15] = 0;
- return;
- }
-
- // stage 1
- s0 = x0 * cospi_1_64 + x1 * cospi_31_64;
- s1 = x0 * cospi_31_64 - x1 * cospi_1_64;
- s2 = x2 * cospi_5_64 + x3 * cospi_27_64;
- s3 = x2 * cospi_27_64 - x3 * cospi_5_64;
- s4 = x4 * cospi_9_64 + x5 * cospi_23_64;
- s5 = x4 * cospi_23_64 - x5 * cospi_9_64;
- s6 = x6 * cospi_13_64 + x7 * cospi_19_64;
- s7 = x6 * cospi_19_64 - x7 * cospi_13_64;
- s8 = x8 * cospi_17_64 + x9 * cospi_15_64;
- s9 = x8 * cospi_15_64 - x9 * cospi_17_64;
- s10 = x10 * cospi_21_64 + x11 * cospi_11_64;
- s11 = x10 * cospi_11_64 - x11 * cospi_21_64;
- s12 = x12 * cospi_25_64 + x13 * cospi_7_64;
- s13 = x12 * cospi_7_64 - x13 * cospi_25_64;
- s14 = x14 * cospi_29_64 + x15 * cospi_3_64;
- s15 = x14 * cospi_3_64 - x15 * cospi_29_64;
-
- x0 = WRAPLOW(dct_const_round_shift(s0 + s8));
- x1 = WRAPLOW(dct_const_round_shift(s1 + s9));
- x2 = WRAPLOW(dct_const_round_shift(s2 + s10));
- x3 = WRAPLOW(dct_const_round_shift(s3 + s11));
- x4 = WRAPLOW(dct_const_round_shift(s4 + s12));
- x5 = WRAPLOW(dct_const_round_shift(s5 + s13));
- x6 = WRAPLOW(dct_const_round_shift(s6 + s14));
- x7 = WRAPLOW(dct_const_round_shift(s7 + s15));
- x8 = WRAPLOW(dct_const_round_shift(s0 - s8));
- x9 = WRAPLOW(dct_const_round_shift(s1 - s9));
- x10 = WRAPLOW(dct_const_round_shift(s2 - s10));
- x11 = WRAPLOW(dct_const_round_shift(s3 - s11));
- x12 = WRAPLOW(dct_const_round_shift(s4 - s12));
- x13 = WRAPLOW(dct_const_round_shift(s5 - s13));
- x14 = WRAPLOW(dct_const_round_shift(s6 - s14));
- x15 = WRAPLOW(dct_const_round_shift(s7 - s15));
-
- // stage 2
- s0 = x0;
- s1 = x1;
- s2 = x2;
- s3 = x3;
- s4 = x4;
- s5 = x5;
- s6 = x6;
- s7 = x7;
- s8 = x8 * cospi_4_64 + x9 * cospi_28_64;
- s9 = x8 * cospi_28_64 - x9 * cospi_4_64;
- s10 = x10 * cospi_20_64 + x11 * cospi_12_64;
- s11 = x10 * cospi_12_64 - x11 * cospi_20_64;
- s12 = - x12 * cospi_28_64 + x13 * cospi_4_64;
- s13 = x12 * cospi_4_64 + x13 * cospi_28_64;
- s14 = - x14 * cospi_12_64 + x15 * cospi_20_64;
- s15 = x14 * cospi_20_64 + x15 * cospi_12_64;
-
- x0 = WRAPLOW(s0 + s4);
- x1 = WRAPLOW(s1 + s5);
- x2 = WRAPLOW(s2 + s6);
- x3 = WRAPLOW(s3 + s7);
- x4 = WRAPLOW(s0 - s4);
- x5 = WRAPLOW(s1 - s5);
- x6 = WRAPLOW(s2 - s6);
- x7 = WRAPLOW(s3 - s7);
- x8 = WRAPLOW(dct_const_round_shift(s8 + s12));
- x9 = WRAPLOW(dct_const_round_shift(s9 + s13));
- x10 = WRAPLOW(dct_const_round_shift(s10 + s14));
- x11 = WRAPLOW(dct_const_round_shift(s11 + s15));
- x12 = WRAPLOW(dct_const_round_shift(s8 - s12));
- x13 = WRAPLOW(dct_const_round_shift(s9 - s13));
- x14 = WRAPLOW(dct_const_round_shift(s10 - s14));
- x15 = WRAPLOW(dct_const_round_shift(s11 - s15));
-
- // stage 3
- s0 = x0;
- s1 = x1;
- s2 = x2;
- s3 = x3;
- s4 = x4 * cospi_8_64 + x5 * cospi_24_64;
- s5 = x4 * cospi_24_64 - x5 * cospi_8_64;
- s6 = - x6 * cospi_24_64 + x7 * cospi_8_64;
- s7 = x6 * cospi_8_64 + x7 * cospi_24_64;
- s8 = x8;
- s9 = x9;
- s10 = x10;
- s11 = x11;
- s12 = x12 * cospi_8_64 + x13 * cospi_24_64;
- s13 = x12 * cospi_24_64 - x13 * cospi_8_64;
- s14 = - x14 * cospi_24_64 + x15 * cospi_8_64;
- s15 = x14 * cospi_8_64 + x15 * cospi_24_64;
-
- x0 = WRAPLOW(s0 + s2);
- x1 = WRAPLOW(s1 + s3);
- x2 = WRAPLOW(s0 - s2);
- x3 = WRAPLOW(s1 - s3);
- x4 = WRAPLOW(dct_const_round_shift(s4 + s6));
- x5 = WRAPLOW(dct_const_round_shift(s5 + s7));
- x6 = WRAPLOW(dct_const_round_shift(s4 - s6));
- x7 = WRAPLOW(dct_const_round_shift(s5 - s7));
- x8 = WRAPLOW(s8 + s10);
- x9 = WRAPLOW(s9 + s11);
- x10 = WRAPLOW(s8 - s10);
- x11 = WRAPLOW(s9 - s11);
- x12 = WRAPLOW(dct_const_round_shift(s12 + s14));
- x13 = WRAPLOW(dct_const_round_shift(s13 + s15));
- x14 = WRAPLOW(dct_const_round_shift(s12 - s14));
- x15 = WRAPLOW(dct_const_round_shift(s13 - s15));
-
- // stage 4
- s2 = (- cospi_16_64) * (x2 + x3);
- s3 = cospi_16_64 * (x2 - x3);
- s6 = cospi_16_64 * (x6 + x7);
- s7 = cospi_16_64 * (- x6 + x7);
- s10 = cospi_16_64 * (x10 + x11);
- s11 = cospi_16_64 * (- x10 + x11);
- s14 = (- cospi_16_64) * (x14 + x15);
- s15 = cospi_16_64 * (x14 - x15);
-
- x2 = WRAPLOW(dct_const_round_shift(s2));
- x3 = WRAPLOW(dct_const_round_shift(s3));
- x6 = WRAPLOW(dct_const_round_shift(s6));
- x7 = WRAPLOW(dct_const_round_shift(s7));
- x10 = WRAPLOW(dct_const_round_shift(s10));
- x11 = WRAPLOW(dct_const_round_shift(s11));
- x14 = WRAPLOW(dct_const_round_shift(s14));
- x15 = WRAPLOW(dct_const_round_shift(s15));
-
- output[0] = WRAPLOW(x0);
- output[1] = WRAPLOW(-x8);
- output[2] = WRAPLOW(x12);
- output[3] = WRAPLOW(-x4);
- output[4] = WRAPLOW(x6);
- output[5] = WRAPLOW(x14);
- output[6] = WRAPLOW(x10);
- output[7] = WRAPLOW(x2);
- output[8] = WRAPLOW(x3);
- output[9] = WRAPLOW(x11);
- output[10] = WRAPLOW(x15);
- output[11] = WRAPLOW(x7);
- output[12] = WRAPLOW(x5);
- output[13] = WRAPLOW(-x13);
- output[14] = WRAPLOW(x9);
- output[15] = WRAPLOW(-x1);
-}
-
-void vpx_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest,
- int stride) {
- tran_low_t out[16 * 16] = { 0 };
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[16], temp_out[16];
-
- // First transform rows. Since all non-zero dct coefficients are in
- // upper-left 4x4 area, we only need to calculate first 4 rows here.
- for (i = 0; i < 4; ++i) {
- idct16_c(input, outptr);
- input += 16;
- outptr += 16;
- }
-
- // Then transform columns
- for (i = 0; i < 16; ++i) {
- for (j = 0; j < 16; ++j)
- temp_in[j] = out[j*16 + i];
- idct16_c(temp_in, temp_out);
- for (j = 0; j < 16; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 6));
- }
- }
-}
-
-void vpx_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
- int i, j;
- tran_high_t a1;
- tran_low_t out = WRAPLOW(dct_const_round_shift(input[0] * cospi_16_64));
- out = WRAPLOW(dct_const_round_shift(out * cospi_16_64));
- a1 = ROUND_POWER_OF_TWO(out, 6);
- for (j = 0; j < 16; ++j) {
- for (i = 0; i < 16; ++i)
- dest[i] = clip_pixel_add(dest[i], a1);
- dest += stride;
- }
-}
-
-void idct32_c(const tran_low_t *input, tran_low_t *output) {
- tran_low_t step1[32], step2[32];
- tran_high_t temp1, temp2;
-
- // stage 1
- step1[0] = input[0];
- step1[1] = input[16];
- step1[2] = input[8];
- step1[3] = input[24];
- step1[4] = input[4];
- step1[5] = input[20];
- step1[6] = input[12];
- step1[7] = input[28];
- step1[8] = input[2];
- step1[9] = input[18];
- step1[10] = input[10];
- step1[11] = input[26];
- step1[12] = input[6];
- step1[13] = input[22];
- step1[14] = input[14];
- step1[15] = input[30];
-
- temp1 = input[1] * cospi_31_64 - input[31] * cospi_1_64;
- temp2 = input[1] * cospi_1_64 + input[31] * cospi_31_64;
- step1[16] = WRAPLOW(dct_const_round_shift(temp1));
- step1[31] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = input[17] * cospi_15_64 - input[15] * cospi_17_64;
- temp2 = input[17] * cospi_17_64 + input[15] * cospi_15_64;
- step1[17] = WRAPLOW(dct_const_round_shift(temp1));
- step1[30] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = input[9] * cospi_23_64 - input[23] * cospi_9_64;
- temp2 = input[9] * cospi_9_64 + input[23] * cospi_23_64;
- step1[18] = WRAPLOW(dct_const_round_shift(temp1));
- step1[29] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = input[25] * cospi_7_64 - input[7] * cospi_25_64;
- temp2 = input[25] * cospi_25_64 + input[7] * cospi_7_64;
- step1[19] = WRAPLOW(dct_const_round_shift(temp1));
- step1[28] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = input[5] * cospi_27_64 - input[27] * cospi_5_64;
- temp2 = input[5] * cospi_5_64 + input[27] * cospi_27_64;
- step1[20] = WRAPLOW(dct_const_round_shift(temp1));
- step1[27] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = input[21] * cospi_11_64 - input[11] * cospi_21_64;
- temp2 = input[21] * cospi_21_64 + input[11] * cospi_11_64;
- step1[21] = WRAPLOW(dct_const_round_shift(temp1));
- step1[26] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = input[13] * cospi_19_64 - input[19] * cospi_13_64;
- temp2 = input[13] * cospi_13_64 + input[19] * cospi_19_64;
- step1[22] = WRAPLOW(dct_const_round_shift(temp1));
- step1[25] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = input[29] * cospi_3_64 - input[3] * cospi_29_64;
- temp2 = input[29] * cospi_29_64 + input[3] * cospi_3_64;
- step1[23] = WRAPLOW(dct_const_round_shift(temp1));
- step1[24] = WRAPLOW(dct_const_round_shift(temp2));
-
- // stage 2
- step2[0] = step1[0];
- step2[1] = step1[1];
- step2[2] = step1[2];
- step2[3] = step1[3];
- step2[4] = step1[4];
- step2[5] = step1[5];
- step2[6] = step1[6];
- step2[7] = step1[7];
-
- temp1 = step1[8] * cospi_30_64 - step1[15] * cospi_2_64;
- temp2 = step1[8] * cospi_2_64 + step1[15] * cospi_30_64;
- step2[8] = WRAPLOW(dct_const_round_shift(temp1));
- step2[15] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = step1[9] * cospi_14_64 - step1[14] * cospi_18_64;
- temp2 = step1[9] * cospi_18_64 + step1[14] * cospi_14_64;
- step2[9] = WRAPLOW(dct_const_round_shift(temp1));
- step2[14] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = step1[10] * cospi_22_64 - step1[13] * cospi_10_64;
- temp2 = step1[10] * cospi_10_64 + step1[13] * cospi_22_64;
- step2[10] = WRAPLOW(dct_const_round_shift(temp1));
- step2[13] = WRAPLOW(dct_const_round_shift(temp2));
-
- temp1 = step1[11] * cospi_6_64 - step1[12] * cospi_26_64;
- temp2 = step1[11] * cospi_26_64 + step1[12] * cospi_6_64;
- step2[11] = WRAPLOW(dct_const_round_shift(temp1));
- step2[12] = WRAPLOW(dct_const_round_shift(temp2));
-
- step2[16] = WRAPLOW(step1[16] + step1[17]);
- step2[17] = WRAPLOW(step1[16] - step1[17]);
- step2[18] = WRAPLOW(-step1[18] + step1[19]);
- step2[19] = WRAPLOW(step1[18] + step1[19]);
- step2[20] = WRAPLOW(step1[20] + step1[21]);
- step2[21] = WRAPLOW(step1[20] - step1[21]);
- step2[22] = WRAPLOW(-step1[22] + step1[23]);
- step2[23] = WRAPLOW(step1[22] + step1[23]);
- step2[24] = WRAPLOW(step1[24] + step1[25]);
- step2[25] = WRAPLOW(step1[24] - step1[25]);
- step2[26] = WRAPLOW(-step1[26] + step1[27]);
- step2[27] = WRAPLOW(step1[26] + step1[27]);
- step2[28] = WRAPLOW(step1[28] + step1[29]);
- step2[29] = WRAPLOW(step1[28] - step1[29]);
- step2[30] = WRAPLOW(-step1[30] + step1[31]);
- step2[31] = WRAPLOW(step1[30] + step1[31]);
-
- // stage 3
- step1[0] = step2[0];
- step1[1] = step2[1];
- step1[2] = step2[2];
- step1[3] = step2[3];
-
- temp1 = step2[4] * cospi_28_64 - step2[7] * cospi_4_64;
- temp2 = step2[4] * cospi_4_64 + step2[7] * cospi_28_64;
- step1[4] = WRAPLOW(dct_const_round_shift(temp1));
- step1[7] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = step2[5] * cospi_12_64 - step2[6] * cospi_20_64;
- temp2 = step2[5] * cospi_20_64 + step2[6] * cospi_12_64;
- step1[5] = WRAPLOW(dct_const_round_shift(temp1));
- step1[6] = WRAPLOW(dct_const_round_shift(temp2));
-
- step1[8] = WRAPLOW(step2[8] + step2[9]);
- step1[9] = WRAPLOW(step2[8] - step2[9]);
- step1[10] = WRAPLOW(-step2[10] + step2[11]);
- step1[11] = WRAPLOW(step2[10] + step2[11]);
- step1[12] = WRAPLOW(step2[12] + step2[13]);
- step1[13] = WRAPLOW(step2[12] - step2[13]);
- step1[14] = WRAPLOW(-step2[14] + step2[15]);
- step1[15] = WRAPLOW(step2[14] + step2[15]);
-
- step1[16] = step2[16];
- step1[31] = step2[31];
- temp1 = -step2[17] * cospi_4_64 + step2[30] * cospi_28_64;
- temp2 = step2[17] * cospi_28_64 + step2[30] * cospi_4_64;
- step1[17] = WRAPLOW(dct_const_round_shift(temp1));
- step1[30] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = -step2[18] * cospi_28_64 - step2[29] * cospi_4_64;
- temp2 = -step2[18] * cospi_4_64 + step2[29] * cospi_28_64;
- step1[18] = WRAPLOW(dct_const_round_shift(temp1));
- step1[29] = WRAPLOW(dct_const_round_shift(temp2));
- step1[19] = step2[19];
- step1[20] = step2[20];
- temp1 = -step2[21] * cospi_20_64 + step2[26] * cospi_12_64;
- temp2 = step2[21] * cospi_12_64 + step2[26] * cospi_20_64;
- step1[21] = WRAPLOW(dct_const_round_shift(temp1));
- step1[26] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = -step2[22] * cospi_12_64 - step2[25] * cospi_20_64;
- temp2 = -step2[22] * cospi_20_64 + step2[25] * cospi_12_64;
- step1[22] = WRAPLOW(dct_const_round_shift(temp1));
- step1[25] = WRAPLOW(dct_const_round_shift(temp2));
- step1[23] = step2[23];
- step1[24] = step2[24];
- step1[27] = step2[27];
- step1[28] = step2[28];
-
- // stage 4
- temp1 = (step1[0] + step1[1]) * cospi_16_64;
- temp2 = (step1[0] - step1[1]) * cospi_16_64;
- step2[0] = WRAPLOW(dct_const_round_shift(temp1));
- step2[1] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = step1[2] * cospi_24_64 - step1[3] * cospi_8_64;
- temp2 = step1[2] * cospi_8_64 + step1[3] * cospi_24_64;
- step2[2] = WRAPLOW(dct_const_round_shift(temp1));
- step2[3] = WRAPLOW(dct_const_round_shift(temp2));
- step2[4] = WRAPLOW(step1[4] + step1[5]);
- step2[5] = WRAPLOW(step1[4] - step1[5]);
- step2[6] = WRAPLOW(-step1[6] + step1[7]);
- step2[7] = WRAPLOW(step1[6] + step1[7]);
-
- step2[8] = step1[8];
- step2[15] = step1[15];
- temp1 = -step1[9] * cospi_8_64 + step1[14] * cospi_24_64;
- temp2 = step1[9] * cospi_24_64 + step1[14] * cospi_8_64;
- step2[9] = WRAPLOW(dct_const_round_shift(temp1));
- step2[14] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = -step1[10] * cospi_24_64 - step1[13] * cospi_8_64;
- temp2 = -step1[10] * cospi_8_64 + step1[13] * cospi_24_64;
- step2[10] = WRAPLOW(dct_const_round_shift(temp1));
- step2[13] = WRAPLOW(dct_const_round_shift(temp2));
- step2[11] = step1[11];
- step2[12] = step1[12];
-
- step2[16] = WRAPLOW(step1[16] + step1[19]);
- step2[17] = WRAPLOW(step1[17] + step1[18]);
- step2[18] = WRAPLOW(step1[17] - step1[18]);
- step2[19] = WRAPLOW(step1[16] - step1[19]);
- step2[20] = WRAPLOW(-step1[20] + step1[23]);
- step2[21] = WRAPLOW(-step1[21] + step1[22]);
- step2[22] = WRAPLOW(step1[21] + step1[22]);
- step2[23] = WRAPLOW(step1[20] + step1[23]);
-
- step2[24] = WRAPLOW(step1[24] + step1[27]);
- step2[25] = WRAPLOW(step1[25] + step1[26]);
- step2[26] = WRAPLOW(step1[25] - step1[26]);
- step2[27] = WRAPLOW(step1[24] - step1[27]);
- step2[28] = WRAPLOW(-step1[28] + step1[31]);
- step2[29] = WRAPLOW(-step1[29] + step1[30]);
- step2[30] = WRAPLOW(step1[29] + step1[30]);
- step2[31] = WRAPLOW(step1[28] + step1[31]);
-
- // stage 5
- step1[0] = WRAPLOW(step2[0] + step2[3]);
- step1[1] = WRAPLOW(step2[1] + step2[2]);
- step1[2] = WRAPLOW(step2[1] - step2[2]);
- step1[3] = WRAPLOW(step2[0] - step2[3]);
- step1[4] = step2[4];
- temp1 = (step2[6] - step2[5]) * cospi_16_64;
- temp2 = (step2[5] + step2[6]) * cospi_16_64;
- step1[5] = WRAPLOW(dct_const_round_shift(temp1));
- step1[6] = WRAPLOW(dct_const_round_shift(temp2));
- step1[7] = step2[7];
-
- step1[8] = WRAPLOW(step2[8] + step2[11]);
- step1[9] = WRAPLOW(step2[9] + step2[10]);
- step1[10] = WRAPLOW(step2[9] - step2[10]);
- step1[11] = WRAPLOW(step2[8] - step2[11]);
- step1[12] = WRAPLOW(-step2[12] + step2[15]);
- step1[13] = WRAPLOW(-step2[13] + step2[14]);
- step1[14] = WRAPLOW(step2[13] + step2[14]);
- step1[15] = WRAPLOW(step2[12] + step2[15]);
-
- step1[16] = step2[16];
- step1[17] = step2[17];
- temp1 = -step2[18] * cospi_8_64 + step2[29] * cospi_24_64;
- temp2 = step2[18] * cospi_24_64 + step2[29] * cospi_8_64;
- step1[18] = WRAPLOW(dct_const_round_shift(temp1));
- step1[29] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = -step2[19] * cospi_8_64 + step2[28] * cospi_24_64;
- temp2 = step2[19] * cospi_24_64 + step2[28] * cospi_8_64;
- step1[19] = WRAPLOW(dct_const_round_shift(temp1));
- step1[28] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = -step2[20] * cospi_24_64 - step2[27] * cospi_8_64;
- temp2 = -step2[20] * cospi_8_64 + step2[27] * cospi_24_64;
- step1[20] = WRAPLOW(dct_const_round_shift(temp1));
- step1[27] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = -step2[21] * cospi_24_64 - step2[26] * cospi_8_64;
- temp2 = -step2[21] * cospi_8_64 + step2[26] * cospi_24_64;
- step1[21] = WRAPLOW(dct_const_round_shift(temp1));
- step1[26] = WRAPLOW(dct_const_round_shift(temp2));
- step1[22] = step2[22];
- step1[23] = step2[23];
- step1[24] = step2[24];
- step1[25] = step2[25];
- step1[30] = step2[30];
- step1[31] = step2[31];
-
- // stage 6
- step2[0] = WRAPLOW(step1[0] + step1[7]);
- step2[1] = WRAPLOW(step1[1] + step1[6]);
- step2[2] = WRAPLOW(step1[2] + step1[5]);
- step2[3] = WRAPLOW(step1[3] + step1[4]);
- step2[4] = WRAPLOW(step1[3] - step1[4]);
- step2[5] = WRAPLOW(step1[2] - step1[5]);
- step2[6] = WRAPLOW(step1[1] - step1[6]);
- step2[7] = WRAPLOW(step1[0] - step1[7]);
- step2[8] = step1[8];
- step2[9] = step1[9];
- temp1 = (-step1[10] + step1[13]) * cospi_16_64;
- temp2 = (step1[10] + step1[13]) * cospi_16_64;
- step2[10] = WRAPLOW(dct_const_round_shift(temp1));
- step2[13] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = (-step1[11] + step1[12]) * cospi_16_64;
- temp2 = (step1[11] + step1[12]) * cospi_16_64;
- step2[11] = WRAPLOW(dct_const_round_shift(temp1));
- step2[12] = WRAPLOW(dct_const_round_shift(temp2));
- step2[14] = step1[14];
- step2[15] = step1[15];
-
- step2[16] = WRAPLOW(step1[16] + step1[23]);
- step2[17] = WRAPLOW(step1[17] + step1[22]);
- step2[18] = WRAPLOW(step1[18] + step1[21]);
- step2[19] = WRAPLOW(step1[19] + step1[20]);
- step2[20] = WRAPLOW(step1[19] - step1[20]);
- step2[21] = WRAPLOW(step1[18] - step1[21]);
- step2[22] = WRAPLOW(step1[17] - step1[22]);
- step2[23] = WRAPLOW(step1[16] - step1[23]);
-
- step2[24] = WRAPLOW(-step1[24] + step1[31]);
- step2[25] = WRAPLOW(-step1[25] + step1[30]);
- step2[26] = WRAPLOW(-step1[26] + step1[29]);
- step2[27] = WRAPLOW(-step1[27] + step1[28]);
- step2[28] = WRAPLOW(step1[27] + step1[28]);
- step2[29] = WRAPLOW(step1[26] + step1[29]);
- step2[30] = WRAPLOW(step1[25] + step1[30]);
- step2[31] = WRAPLOW(step1[24] + step1[31]);
-
- // stage 7
- step1[0] = WRAPLOW(step2[0] + step2[15]);
- step1[1] = WRAPLOW(step2[1] + step2[14]);
- step1[2] = WRAPLOW(step2[2] + step2[13]);
- step1[3] = WRAPLOW(step2[3] + step2[12]);
- step1[4] = WRAPLOW(step2[4] + step2[11]);
- step1[5] = WRAPLOW(step2[5] + step2[10]);
- step1[6] = WRAPLOW(step2[6] + step2[9]);
- step1[7] = WRAPLOW(step2[7] + step2[8]);
- step1[8] = WRAPLOW(step2[7] - step2[8]);
- step1[9] = WRAPLOW(step2[6] - step2[9]);
- step1[10] = WRAPLOW(step2[5] - step2[10]);
- step1[11] = WRAPLOW(step2[4] - step2[11]);
- step1[12] = WRAPLOW(step2[3] - step2[12]);
- step1[13] = WRAPLOW(step2[2] - step2[13]);
- step1[14] = WRAPLOW(step2[1] - step2[14]);
- step1[15] = WRAPLOW(step2[0] - step2[15]);
-
- step1[16] = step2[16];
- step1[17] = step2[17];
- step1[18] = step2[18];
- step1[19] = step2[19];
- temp1 = (-step2[20] + step2[27]) * cospi_16_64;
- temp2 = (step2[20] + step2[27]) * cospi_16_64;
- step1[20] = WRAPLOW(dct_const_round_shift(temp1));
- step1[27] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = (-step2[21] + step2[26]) * cospi_16_64;
- temp2 = (step2[21] + step2[26]) * cospi_16_64;
- step1[21] = WRAPLOW(dct_const_round_shift(temp1));
- step1[26] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = (-step2[22] + step2[25]) * cospi_16_64;
- temp2 = (step2[22] + step2[25]) * cospi_16_64;
- step1[22] = WRAPLOW(dct_const_round_shift(temp1));
- step1[25] = WRAPLOW(dct_const_round_shift(temp2));
- temp1 = (-step2[23] + step2[24]) * cospi_16_64;
- temp2 = (step2[23] + step2[24]) * cospi_16_64;
- step1[23] = WRAPLOW(dct_const_round_shift(temp1));
- step1[24] = WRAPLOW(dct_const_round_shift(temp2));
- step1[28] = step2[28];
- step1[29] = step2[29];
- step1[30] = step2[30];
- step1[31] = step2[31];
-
- // final stage
- output[0] = WRAPLOW(step1[0] + step1[31]);
- output[1] = WRAPLOW(step1[1] + step1[30]);
- output[2] = WRAPLOW(step1[2] + step1[29]);
- output[3] = WRAPLOW(step1[3] + step1[28]);
- output[4] = WRAPLOW(step1[4] + step1[27]);
- output[5] = WRAPLOW(step1[5] + step1[26]);
- output[6] = WRAPLOW(step1[6] + step1[25]);
- output[7] = WRAPLOW(step1[7] + step1[24]);
- output[8] = WRAPLOW(step1[8] + step1[23]);
- output[9] = WRAPLOW(step1[9] + step1[22]);
- output[10] = WRAPLOW(step1[10] + step1[21]);
- output[11] = WRAPLOW(step1[11] + step1[20]);
- output[12] = WRAPLOW(step1[12] + step1[19]);
- output[13] = WRAPLOW(step1[13] + step1[18]);
- output[14] = WRAPLOW(step1[14] + step1[17]);
- output[15] = WRAPLOW(step1[15] + step1[16]);
- output[16] = WRAPLOW(step1[15] - step1[16]);
- output[17] = WRAPLOW(step1[14] - step1[17]);
- output[18] = WRAPLOW(step1[13] - step1[18]);
- output[19] = WRAPLOW(step1[12] - step1[19]);
- output[20] = WRAPLOW(step1[11] - step1[20]);
- output[21] = WRAPLOW(step1[10] - step1[21]);
- output[22] = WRAPLOW(step1[9] - step1[22]);
- output[23] = WRAPLOW(step1[8] - step1[23]);
- output[24] = WRAPLOW(step1[7] - step1[24]);
- output[25] = WRAPLOW(step1[6] - step1[25]);
- output[26] = WRAPLOW(step1[5] - step1[26]);
- output[27] = WRAPLOW(step1[4] - step1[27]);
- output[28] = WRAPLOW(step1[3] - step1[28]);
- output[29] = WRAPLOW(step1[2] - step1[29]);
- output[30] = WRAPLOW(step1[1] - step1[30]);
- output[31] = WRAPLOW(step1[0] - step1[31]);
-}
-
-void vpx_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest,
- int stride) {
- tran_low_t out[32 * 32];
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[32], temp_out[32];
-
- // Rows
- for (i = 0; i < 32; ++i) {
- int16_t zero_coeff[16];
- for (j = 0; j < 16; ++j)
- zero_coeff[j] = input[2 * j] | input[2 * j + 1];
- for (j = 0; j < 8; ++j)
- zero_coeff[j] = zero_coeff[2 * j] | zero_coeff[2 * j + 1];
- for (j = 0; j < 4; ++j)
- zero_coeff[j] = zero_coeff[2 * j] | zero_coeff[2 * j + 1];
- for (j = 0; j < 2; ++j)
- zero_coeff[j] = zero_coeff[2 * j] | zero_coeff[2 * j + 1];
-
- if (zero_coeff[0] | zero_coeff[1])
- idct32_c(input, outptr);
- else
- memset(outptr, 0, sizeof(tran_low_t) * 32);
- input += 32;
- outptr += 32;
- }
-
- // Columns
- for (i = 0; i < 32; ++i) {
- for (j = 0; j < 32; ++j)
- temp_in[j] = out[j * 32 + i];
- idct32_c(temp_in, temp_out);
- for (j = 0; j < 32; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 6));
- }
- }
-}
-
-void vpx_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest,
- int stride) {
- tran_low_t out[32 * 32] = {0};
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[32], temp_out[32];
-
- // Rows
- // only upper-left 16x16 has non-zero coeff
- for (i = 0; i < 16; ++i) {
- idct32_c(input, outptr);
- input += 32;
- outptr += 32;
- }
-
- // Columns
- for (i = 0; i < 32; ++i) {
- for (j = 0; j < 32; ++j)
- temp_in[j] = out[j * 32 + i];
- idct32_c(temp_in, temp_out);
- for (j = 0; j < 32; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 6));
- }
- }
-}
-
-void vpx_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest,
- int stride) {
- tran_low_t out[32 * 32] = {0};
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[32], temp_out[32];
-
- // Rows
- // only upper-left 8x8 has non-zero coeff
- for (i = 0; i < 8; ++i) {
- idct32_c(input, outptr);
- input += 32;
- outptr += 32;
- }
-
- // Columns
- for (i = 0; i < 32; ++i) {
- for (j = 0; j < 32; ++j)
- temp_in[j] = out[j * 32 + i];
- idct32_c(temp_in, temp_out);
- for (j = 0; j < 32; ++j) {
- dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
- ROUND_POWER_OF_TWO(temp_out[j], 6));
- }
- }
-}
-
-void vpx_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
- int i, j;
- tran_high_t a1;
-
- tran_low_t out = WRAPLOW(dct_const_round_shift(input[0] * cospi_16_64));
- out = WRAPLOW(dct_const_round_shift(out * cospi_16_64));
- a1 = ROUND_POWER_OF_TWO(out, 6);
-
- for (j = 0; j < 32; ++j) {
- for (i = 0; i < 32; ++i)
- dest[i] = clip_pixel_add(dest[i], a1);
- dest += stride;
- }
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void vpx_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- /* 4-point reversible, orthonormal inverse Walsh-Hadamard in 3.5 adds,
- 0.5 shifts per pixel. */
- int i;
- tran_low_t output[16];
- tran_high_t a1, b1, c1, d1, e1;
- const tran_low_t *ip = input;
- tran_low_t *op = output;
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- for (i = 0; i < 4; i++) {
- a1 = ip[0] >> UNIT_QUANT_SHIFT;
- c1 = ip[1] >> UNIT_QUANT_SHIFT;
- d1 = ip[2] >> UNIT_QUANT_SHIFT;
- b1 = ip[3] >> UNIT_QUANT_SHIFT;
- a1 += c1;
- d1 -= b1;
- e1 = (a1 - d1) >> 1;
- b1 = e1 - b1;
- c1 = e1 - c1;
- a1 -= b1;
- d1 += c1;
- op[0] = HIGHBD_WRAPLOW(a1, bd);
- op[1] = HIGHBD_WRAPLOW(b1, bd);
- op[2] = HIGHBD_WRAPLOW(c1, bd);
- op[3] = HIGHBD_WRAPLOW(d1, bd);
- ip += 4;
- op += 4;
- }
-
- ip = output;
- for (i = 0; i < 4; i++) {
- a1 = ip[4 * 0];
- c1 = ip[4 * 1];
- d1 = ip[4 * 2];
- b1 = ip[4 * 3];
- a1 += c1;
- d1 -= b1;
- e1 = (a1 - d1) >> 1;
- b1 = e1 - b1;
- c1 = e1 - c1;
- a1 -= b1;
- d1 += c1;
- dest[stride * 0] = highbd_clip_pixel_add(dest[stride * 0],
- HIGHBD_WRAPLOW(a1, bd), bd);
- dest[stride * 1] = highbd_clip_pixel_add(dest[stride * 1],
- HIGHBD_WRAPLOW(b1, bd), bd);
- dest[stride * 2] = highbd_clip_pixel_add(dest[stride * 2],
- HIGHBD_WRAPLOW(c1, bd), bd);
- dest[stride * 3] = highbd_clip_pixel_add(dest[stride * 3],
- HIGHBD_WRAPLOW(d1, bd), bd);
-
- ip++;
- dest++;
- }
-}
-
-void vpx_highbd_iwht4x4_1_add_c(const tran_low_t *in, uint8_t *dest8,
- int dest_stride, int bd) {
- int i;
- tran_high_t a1, e1;
- tran_low_t tmp[4];
- const tran_low_t *ip = in;
- tran_low_t *op = tmp;
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
- (void) bd;
-
- a1 = ip[0] >> UNIT_QUANT_SHIFT;
- e1 = a1 >> 1;
- a1 -= e1;
- op[0] = HIGHBD_WRAPLOW(a1, bd);
- op[1] = op[2] = op[3] = HIGHBD_WRAPLOW(e1, bd);
-
- ip = tmp;
- for (i = 0; i < 4; i++) {
- e1 = ip[0] >> 1;
- a1 = ip[0] - e1;
- dest[dest_stride * 0] = highbd_clip_pixel_add(
- dest[dest_stride * 0], a1, bd);
- dest[dest_stride * 1] = highbd_clip_pixel_add(
- dest[dest_stride * 1], e1, bd);
- dest[dest_stride * 2] = highbd_clip_pixel_add(
- dest[dest_stride * 2], e1, bd);
- dest[dest_stride * 3] = highbd_clip_pixel_add(
- dest[dest_stride * 3], e1, bd);
- ip++;
- dest++;
- }
-}
-
-void vpx_highbd_idct4_c(const tran_low_t *input, tran_low_t *output, int bd) {
- tran_low_t step[4];
- tran_high_t temp1, temp2;
- (void) bd;
- // stage 1
- temp1 = (input[0] + input[2]) * cospi_16_64;
- temp2 = (input[0] - input[2]) * cospi_16_64;
- step[0] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step[1] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = input[1] * cospi_24_64 - input[3] * cospi_8_64;
- temp2 = input[1] * cospi_8_64 + input[3] * cospi_24_64;
- step[2] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step[3] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- // stage 2
- output[0] = HIGHBD_WRAPLOW(step[0] + step[3], bd);
- output[1] = HIGHBD_WRAPLOW(step[1] + step[2], bd);
- output[2] = HIGHBD_WRAPLOW(step[1] - step[2], bd);
- output[3] = HIGHBD_WRAPLOW(step[0] - step[3], bd);
-}
-
-void vpx_highbd_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[4 * 4];
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[4], temp_out[4];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // Rows
- for (i = 0; i < 4; ++i) {
- vpx_highbd_idct4_c(input, outptr, bd);
- input += 4;
- outptr += 4;
- }
-
- // Columns
- for (i = 0; i < 4; ++i) {
- for (j = 0; j < 4; ++j)
- temp_in[j] = out[j * 4 + i];
- vpx_highbd_idct4_c(temp_in, temp_out, bd);
- for (j = 0; j < 4; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 4), bd);
- }
- }
-}
-
-void vpx_highbd_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest8,
- int dest_stride, int bd) {
- int i;
- tran_high_t a1;
- tran_low_t out = HIGHBD_WRAPLOW(
- highbd_dct_const_round_shift(input[0] * cospi_16_64), bd);
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- out = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(out * cospi_16_64), bd);
- a1 = ROUND_POWER_OF_TWO(out, 4);
-
- for (i = 0; i < 4; i++) {
- dest[0] = highbd_clip_pixel_add(dest[0], a1, bd);
- dest[1] = highbd_clip_pixel_add(dest[1], a1, bd);
- dest[2] = highbd_clip_pixel_add(dest[2], a1, bd);
- dest[3] = highbd_clip_pixel_add(dest[3], a1, bd);
- dest += dest_stride;
- }
-}
-
-void vpx_highbd_idct8_c(const tran_low_t *input, tran_low_t *output, int bd) {
- tran_low_t step1[8], step2[8];
- tran_high_t temp1, temp2;
- // stage 1
- step1[0] = input[0];
- step1[2] = input[4];
- step1[1] = input[2];
- step1[3] = input[6];
- temp1 = input[1] * cospi_28_64 - input[7] * cospi_4_64;
- temp2 = input[1] * cospi_4_64 + input[7] * cospi_28_64;
- step1[4] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[7] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = input[5] * cospi_12_64 - input[3] * cospi_20_64;
- temp2 = input[5] * cospi_20_64 + input[3] * cospi_12_64;
- step1[5] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[6] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- // stage 2 & stage 3 - even half
- vpx_highbd_idct4_c(step1, step1, bd);
-
- // stage 2 - odd half
- step2[4] = HIGHBD_WRAPLOW(step1[4] + step1[5], bd);
- step2[5] = HIGHBD_WRAPLOW(step1[4] - step1[5], bd);
- step2[6] = HIGHBD_WRAPLOW(-step1[6] + step1[7], bd);
- step2[7] = HIGHBD_WRAPLOW(step1[6] + step1[7], bd);
-
- // stage 3 - odd half
- step1[4] = step2[4];
- temp1 = (step2[6] - step2[5]) * cospi_16_64;
- temp2 = (step2[5] + step2[6]) * cospi_16_64;
- step1[5] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[6] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step1[7] = step2[7];
-
- // stage 4
- output[0] = HIGHBD_WRAPLOW(step1[0] + step1[7], bd);
- output[1] = HIGHBD_WRAPLOW(step1[1] + step1[6], bd);
- output[2] = HIGHBD_WRAPLOW(step1[2] + step1[5], bd);
- output[3] = HIGHBD_WRAPLOW(step1[3] + step1[4], bd);
- output[4] = HIGHBD_WRAPLOW(step1[3] - step1[4], bd);
- output[5] = HIGHBD_WRAPLOW(step1[2] - step1[5], bd);
- output[6] = HIGHBD_WRAPLOW(step1[1] - step1[6], bd);
- output[7] = HIGHBD_WRAPLOW(step1[0] - step1[7], bd);
-}
-
-void vpx_highbd_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[8 * 8];
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[8], temp_out[8];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // First transform rows.
- for (i = 0; i < 8; ++i) {
- vpx_highbd_idct8_c(input, outptr, bd);
- input += 8;
- outptr += 8;
- }
-
- // Then transform columns.
- for (i = 0; i < 8; ++i) {
- for (j = 0; j < 8; ++j)
- temp_in[j] = out[j * 8 + i];
- vpx_highbd_idct8_c(temp_in, temp_out, bd);
- for (j = 0; j < 8; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 5), bd);
- }
- }
-}
-
-void vpx_highbd_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- int i, j;
- tran_high_t a1;
- tran_low_t out = HIGHBD_WRAPLOW(
- highbd_dct_const_round_shift(input[0] * cospi_16_64), bd);
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
- out = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(out * cospi_16_64), bd);
- a1 = ROUND_POWER_OF_TWO(out, 5);
- for (j = 0; j < 8; ++j) {
- for (i = 0; i < 8; ++i)
- dest[i] = highbd_clip_pixel_add(dest[i], a1, bd);
- dest += stride;
- }
-}
-
-void vpx_highbd_iadst4_c(const tran_low_t *input, tran_low_t *output, int bd) {
- tran_high_t s0, s1, s2, s3, s4, s5, s6, s7;
-
- tran_low_t x0 = input[0];
- tran_low_t x1 = input[1];
- tran_low_t x2 = input[2];
- tran_low_t x3 = input[3];
- (void) bd;
-
- if (!(x0 | x1 | x2 | x3)) {
- memset(output, 0, 4 * sizeof(*output));
- return;
- }
-
- s0 = sinpi_1_9 * x0;
- s1 = sinpi_2_9 * x0;
- s2 = sinpi_3_9 * x1;
- s3 = sinpi_4_9 * x2;
- s4 = sinpi_1_9 * x2;
- s5 = sinpi_2_9 * x3;
- s6 = sinpi_4_9 * x3;
- s7 = (tran_high_t)HIGHBD_WRAPLOW(x0 - x2 + x3, bd);
-
- s0 = s0 + s3 + s5;
- s1 = s1 - s4 - s6;
- s3 = s2;
- s2 = sinpi_3_9 * s7;
-
- // 1-D transform scaling factor is sqrt(2).
- // The overall dynamic range is 14b (input) + 14b (multiplication scaling)
- // + 1b (addition) = 29b.
- // Hence the output bit depth is 15b.
- output[0] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s0 + s3), bd);
- output[1] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s1 + s3), bd);
- output[2] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s2), bd);
- output[3] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s0 + s1 - s3), bd);
-}
-
-void vpx_highbd_iadst8_c(const tran_low_t *input, tran_low_t *output, int bd) {
- tran_high_t s0, s1, s2, s3, s4, s5, s6, s7;
-
- tran_low_t x0 = input[7];
- tran_low_t x1 = input[0];
- tran_low_t x2 = input[5];
- tran_low_t x3 = input[2];
- tran_low_t x4 = input[3];
- tran_low_t x5 = input[4];
- tran_low_t x6 = input[1];
- tran_low_t x7 = input[6];
- (void) bd;
-
- if (!(x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7)) {
- memset(output, 0, 8 * sizeof(*output));
- return;
- }
-
- // stage 1
- s0 = cospi_2_64 * x0 + cospi_30_64 * x1;
- s1 = cospi_30_64 * x0 - cospi_2_64 * x1;
- s2 = cospi_10_64 * x2 + cospi_22_64 * x3;
- s3 = cospi_22_64 * x2 - cospi_10_64 * x3;
- s4 = cospi_18_64 * x4 + cospi_14_64 * x5;
- s5 = cospi_14_64 * x4 - cospi_18_64 * x5;
- s6 = cospi_26_64 * x6 + cospi_6_64 * x7;
- s7 = cospi_6_64 * x6 - cospi_26_64 * x7;
-
- x0 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s0 + s4), bd);
- x1 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s1 + s5), bd);
- x2 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s2 + s6), bd);
- x3 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s3 + s7), bd);
- x4 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s0 - s4), bd);
- x5 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s1 - s5), bd);
- x6 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s2 - s6), bd);
- x7 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s3 - s7), bd);
-
- // stage 2
- s0 = x0;
- s1 = x1;
- s2 = x2;
- s3 = x3;
- s4 = cospi_8_64 * x4 + cospi_24_64 * x5;
- s5 = cospi_24_64 * x4 - cospi_8_64 * x5;
- s6 = -cospi_24_64 * x6 + cospi_8_64 * x7;
- s7 = cospi_8_64 * x6 + cospi_24_64 * x7;
-
- x0 = HIGHBD_WRAPLOW(s0 + s2, bd);
- x1 = HIGHBD_WRAPLOW(s1 + s3, bd);
- x2 = HIGHBD_WRAPLOW(s0 - s2, bd);
- x3 = HIGHBD_WRAPLOW(s1 - s3, bd);
- x4 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s4 + s6), bd);
- x5 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s5 + s7), bd);
- x6 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s4 - s6), bd);
- x7 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s5 - s7), bd);
-
- // stage 3
- s2 = cospi_16_64 * (x2 + x3);
- s3 = cospi_16_64 * (x2 - x3);
- s6 = cospi_16_64 * (x6 + x7);
- s7 = cospi_16_64 * (x6 - x7);
-
- x2 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s2), bd);
- x3 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s3), bd);
- x6 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s6), bd);
- x7 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s7), bd);
-
- output[0] = HIGHBD_WRAPLOW(x0, bd);
- output[1] = HIGHBD_WRAPLOW(-x4, bd);
- output[2] = HIGHBD_WRAPLOW(x6, bd);
- output[3] = HIGHBD_WRAPLOW(-x2, bd);
- output[4] = HIGHBD_WRAPLOW(x3, bd);
- output[5] = HIGHBD_WRAPLOW(-x7, bd);
- output[6] = HIGHBD_WRAPLOW(x5, bd);
- output[7] = HIGHBD_WRAPLOW(-x1, bd);
-}
-
-void vpx_highbd_idct8x8_10_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[8 * 8] = { 0 };
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[8], temp_out[8];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // First transform rows.
- // Only first 4 row has non-zero coefs.
- for (i = 0; i < 4; ++i) {
- vpx_highbd_idct8_c(input, outptr, bd);
- input += 8;
- outptr += 8;
- }
- // Then transform columns.
- for (i = 0; i < 8; ++i) {
- for (j = 0; j < 8; ++j)
- temp_in[j] = out[j * 8 + i];
- vpx_highbd_idct8_c(temp_in, temp_out, bd);
- for (j = 0; j < 8; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 5), bd);
- }
- }
-}
-
-void vpx_highbd_idct16_c(const tran_low_t *input, tran_low_t *output, int bd) {
- tran_low_t step1[16], step2[16];
- tran_high_t temp1, temp2;
- (void) bd;
-
- // stage 1
- step1[0] = input[0/2];
- step1[1] = input[16/2];
- step1[2] = input[8/2];
- step1[3] = input[24/2];
- step1[4] = input[4/2];
- step1[5] = input[20/2];
- step1[6] = input[12/2];
- step1[7] = input[28/2];
- step1[8] = input[2/2];
- step1[9] = input[18/2];
- step1[10] = input[10/2];
- step1[11] = input[26/2];
- step1[12] = input[6/2];
- step1[13] = input[22/2];
- step1[14] = input[14/2];
- step1[15] = input[30/2];
-
- // stage 2
- step2[0] = step1[0];
- step2[1] = step1[1];
- step2[2] = step1[2];
- step2[3] = step1[3];
- step2[4] = step1[4];
- step2[5] = step1[5];
- step2[6] = step1[6];
- step2[7] = step1[7];
-
- temp1 = step1[8] * cospi_30_64 - step1[15] * cospi_2_64;
- temp2 = step1[8] * cospi_2_64 + step1[15] * cospi_30_64;
- step2[8] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[15] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = step1[9] * cospi_14_64 - step1[14] * cospi_18_64;
- temp2 = step1[9] * cospi_18_64 + step1[14] * cospi_14_64;
- step2[9] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[14] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = step1[10] * cospi_22_64 - step1[13] * cospi_10_64;
- temp2 = step1[10] * cospi_10_64 + step1[13] * cospi_22_64;
- step2[10] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[13] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = step1[11] * cospi_6_64 - step1[12] * cospi_26_64;
- temp2 = step1[11] * cospi_26_64 + step1[12] * cospi_6_64;
- step2[11] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[12] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- // stage 3
- step1[0] = step2[0];
- step1[1] = step2[1];
- step1[2] = step2[2];
- step1[3] = step2[3];
-
- temp1 = step2[4] * cospi_28_64 - step2[7] * cospi_4_64;
- temp2 = step2[4] * cospi_4_64 + step2[7] * cospi_28_64;
- step1[4] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[7] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = step2[5] * cospi_12_64 - step2[6] * cospi_20_64;
- temp2 = step2[5] * cospi_20_64 + step2[6] * cospi_12_64;
- step1[5] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[6] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- step1[8] = HIGHBD_WRAPLOW(step2[8] + step2[9], bd);
- step1[9] = HIGHBD_WRAPLOW(step2[8] - step2[9], bd);
- step1[10] = HIGHBD_WRAPLOW(-step2[10] + step2[11], bd);
- step1[11] = HIGHBD_WRAPLOW(step2[10] + step2[11], bd);
- step1[12] = HIGHBD_WRAPLOW(step2[12] + step2[13], bd);
- step1[13] = HIGHBD_WRAPLOW(step2[12] - step2[13], bd);
- step1[14] = HIGHBD_WRAPLOW(-step2[14] + step2[15], bd);
- step1[15] = HIGHBD_WRAPLOW(step2[14] + step2[15], bd);
-
- // stage 4
- temp1 = (step1[0] + step1[1]) * cospi_16_64;
- temp2 = (step1[0] - step1[1]) * cospi_16_64;
- step2[0] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[1] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = step1[2] * cospi_24_64 - step1[3] * cospi_8_64;
- temp2 = step1[2] * cospi_8_64 + step1[3] * cospi_24_64;
- step2[2] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[3] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step2[4] = HIGHBD_WRAPLOW(step1[4] + step1[5], bd);
- step2[5] = HIGHBD_WRAPLOW(step1[4] - step1[5], bd);
- step2[6] = HIGHBD_WRAPLOW(-step1[6] + step1[7], bd);
- step2[7] = HIGHBD_WRAPLOW(step1[6] + step1[7], bd);
-
- step2[8] = step1[8];
- step2[15] = step1[15];
- temp1 = -step1[9] * cospi_8_64 + step1[14] * cospi_24_64;
- temp2 = step1[9] * cospi_24_64 + step1[14] * cospi_8_64;
- step2[9] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[14] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = -step1[10] * cospi_24_64 - step1[13] * cospi_8_64;
- temp2 = -step1[10] * cospi_8_64 + step1[13] * cospi_24_64;
- step2[10] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[13] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step2[11] = step1[11];
- step2[12] = step1[12];
-
- // stage 5
- step1[0] = HIGHBD_WRAPLOW(step2[0] + step2[3], bd);
- step1[1] = HIGHBD_WRAPLOW(step2[1] + step2[2], bd);
- step1[2] = HIGHBD_WRAPLOW(step2[1] - step2[2], bd);
- step1[3] = HIGHBD_WRAPLOW(step2[0] - step2[3], bd);
- step1[4] = step2[4];
- temp1 = (step2[6] - step2[5]) * cospi_16_64;
- temp2 = (step2[5] + step2[6]) * cospi_16_64;
- step1[5] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[6] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step1[7] = step2[7];
-
- step1[8] = HIGHBD_WRAPLOW(step2[8] + step2[11], bd);
- step1[9] = HIGHBD_WRAPLOW(step2[9] + step2[10], bd);
- step1[10] = HIGHBD_WRAPLOW(step2[9] - step2[10], bd);
- step1[11] = HIGHBD_WRAPLOW(step2[8] - step2[11], bd);
- step1[12] = HIGHBD_WRAPLOW(-step2[12] + step2[15], bd);
- step1[13] = HIGHBD_WRAPLOW(-step2[13] + step2[14], bd);
- step1[14] = HIGHBD_WRAPLOW(step2[13] + step2[14], bd);
- step1[15] = HIGHBD_WRAPLOW(step2[12] + step2[15], bd);
-
- // stage 6
- step2[0] = HIGHBD_WRAPLOW(step1[0] + step1[7], bd);
- step2[1] = HIGHBD_WRAPLOW(step1[1] + step1[6], bd);
- step2[2] = HIGHBD_WRAPLOW(step1[2] + step1[5], bd);
- step2[3] = HIGHBD_WRAPLOW(step1[3] + step1[4], bd);
- step2[4] = HIGHBD_WRAPLOW(step1[3] - step1[4], bd);
- step2[5] = HIGHBD_WRAPLOW(step1[2] - step1[5], bd);
- step2[6] = HIGHBD_WRAPLOW(step1[1] - step1[6], bd);
- step2[7] = HIGHBD_WRAPLOW(step1[0] - step1[7], bd);
- step2[8] = step1[8];
- step2[9] = step1[9];
- temp1 = (-step1[10] + step1[13]) * cospi_16_64;
- temp2 = (step1[10] + step1[13]) * cospi_16_64;
- step2[10] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[13] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = (-step1[11] + step1[12]) * cospi_16_64;
- temp2 = (step1[11] + step1[12]) * cospi_16_64;
- step2[11] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[12] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step2[14] = step1[14];
- step2[15] = step1[15];
-
- // stage 7
- output[0] = HIGHBD_WRAPLOW(step2[0] + step2[15], bd);
- output[1] = HIGHBD_WRAPLOW(step2[1] + step2[14], bd);
- output[2] = HIGHBD_WRAPLOW(step2[2] + step2[13], bd);
- output[3] = HIGHBD_WRAPLOW(step2[3] + step2[12], bd);
- output[4] = HIGHBD_WRAPLOW(step2[4] + step2[11], bd);
- output[5] = HIGHBD_WRAPLOW(step2[5] + step2[10], bd);
- output[6] = HIGHBD_WRAPLOW(step2[6] + step2[9], bd);
- output[7] = HIGHBD_WRAPLOW(step2[7] + step2[8], bd);
- output[8] = HIGHBD_WRAPLOW(step2[7] - step2[8], bd);
- output[9] = HIGHBD_WRAPLOW(step2[6] - step2[9], bd);
- output[10] = HIGHBD_WRAPLOW(step2[5] - step2[10], bd);
- output[11] = HIGHBD_WRAPLOW(step2[4] - step2[11], bd);
- output[12] = HIGHBD_WRAPLOW(step2[3] - step2[12], bd);
- output[13] = HIGHBD_WRAPLOW(step2[2] - step2[13], bd);
- output[14] = HIGHBD_WRAPLOW(step2[1] - step2[14], bd);
- output[15] = HIGHBD_WRAPLOW(step2[0] - step2[15], bd);
-}
-
-void vpx_highbd_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[16 * 16];
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[16], temp_out[16];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // First transform rows.
- for (i = 0; i < 16; ++i) {
- vpx_highbd_idct16_c(input, outptr, bd);
- input += 16;
- outptr += 16;
- }
-
- // Then transform columns.
- for (i = 0; i < 16; ++i) {
- for (j = 0; j < 16; ++j)
- temp_in[j] = out[j * 16 + i];
- vpx_highbd_idct16_c(temp_in, temp_out, bd);
- for (j = 0; j < 16; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd);
- }
- }
-}
-
-void vpx_highbd_iadst16_c(const tran_low_t *input, tran_low_t *output, int bd) {
- tran_high_t s0, s1, s2, s3, s4, s5, s6, s7, s8;
- tran_high_t s9, s10, s11, s12, s13, s14, s15;
-
- tran_low_t x0 = input[15];
- tran_low_t x1 = input[0];
- tran_low_t x2 = input[13];
- tran_low_t x3 = input[2];
- tran_low_t x4 = input[11];
- tran_low_t x5 = input[4];
- tran_low_t x6 = input[9];
- tran_low_t x7 = input[6];
- tran_low_t x8 = input[7];
- tran_low_t x9 = input[8];
- tran_low_t x10 = input[5];
- tran_low_t x11 = input[10];
- tran_low_t x12 = input[3];
- tran_low_t x13 = input[12];
- tran_low_t x14 = input[1];
- tran_low_t x15 = input[14];
- (void) bd;
-
- if (!(x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8
- | x9 | x10 | x11 | x12 | x13 | x14 | x15)) {
- memset(output, 0, 16 * sizeof(*output));
- return;
- }
-
- // stage 1
- s0 = x0 * cospi_1_64 + x1 * cospi_31_64;
- s1 = x0 * cospi_31_64 - x1 * cospi_1_64;
- s2 = x2 * cospi_5_64 + x3 * cospi_27_64;
- s3 = x2 * cospi_27_64 - x3 * cospi_5_64;
- s4 = x4 * cospi_9_64 + x5 * cospi_23_64;
- s5 = x4 * cospi_23_64 - x5 * cospi_9_64;
- s6 = x6 * cospi_13_64 + x7 * cospi_19_64;
- s7 = x6 * cospi_19_64 - x7 * cospi_13_64;
- s8 = x8 * cospi_17_64 + x9 * cospi_15_64;
- s9 = x8 * cospi_15_64 - x9 * cospi_17_64;
- s10 = x10 * cospi_21_64 + x11 * cospi_11_64;
- s11 = x10 * cospi_11_64 - x11 * cospi_21_64;
- s12 = x12 * cospi_25_64 + x13 * cospi_7_64;
- s13 = x12 * cospi_7_64 - x13 * cospi_25_64;
- s14 = x14 * cospi_29_64 + x15 * cospi_3_64;
- s15 = x14 * cospi_3_64 - x15 * cospi_29_64;
-
- x0 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s0 + s8), bd);
- x1 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s1 + s9), bd);
- x2 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s2 + s10), bd);
- x3 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s3 + s11), bd);
- x4 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s4 + s12), bd);
- x5 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s5 + s13), bd);
- x6 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s6 + s14), bd);
- x7 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s7 + s15), bd);
- x8 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s0 - s8), bd);
- x9 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s1 - s9), bd);
- x10 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s2 - s10), bd);
- x11 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s3 - s11), bd);
- x12 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s4 - s12), bd);
- x13 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s5 - s13), bd);
- x14 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s6 - s14), bd);
- x15 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s7 - s15), bd);
-
- // stage 2
- s0 = x0;
- s1 = x1;
- s2 = x2;
- s3 = x3;
- s4 = x4;
- s5 = x5;
- s6 = x6;
- s7 = x7;
- s8 = x8 * cospi_4_64 + x9 * cospi_28_64;
- s9 = x8 * cospi_28_64 - x9 * cospi_4_64;
- s10 = x10 * cospi_20_64 + x11 * cospi_12_64;
- s11 = x10 * cospi_12_64 - x11 * cospi_20_64;
- s12 = -x12 * cospi_28_64 + x13 * cospi_4_64;
- s13 = x12 * cospi_4_64 + x13 * cospi_28_64;
- s14 = -x14 * cospi_12_64 + x15 * cospi_20_64;
- s15 = x14 * cospi_20_64 + x15 * cospi_12_64;
-
- x0 = HIGHBD_WRAPLOW(s0 + s4, bd);
- x1 = HIGHBD_WRAPLOW(s1 + s5, bd);
- x2 = HIGHBD_WRAPLOW(s2 + s6, bd);
- x3 = HIGHBD_WRAPLOW(s3 + s7, bd);
- x4 = HIGHBD_WRAPLOW(s0 - s4, bd);
- x5 = HIGHBD_WRAPLOW(s1 - s5, bd);
- x6 = HIGHBD_WRAPLOW(s2 - s6, bd);
- x7 = HIGHBD_WRAPLOW(s3 - s7, bd);
- x8 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s8 + s12), bd);
- x9 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s9 + s13), bd);
- x10 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s10 + s14), bd);
- x11 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s11 + s15), bd);
- x12 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s8 - s12), bd);
- x13 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s9 - s13), bd);
- x14 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s10 - s14), bd);
- x15 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s11 - s15), bd);
-
- // stage 3
- s0 = x0;
- s1 = x1;
- s2 = x2;
- s3 = x3;
- s4 = x4 * cospi_8_64 + x5 * cospi_24_64;
- s5 = x4 * cospi_24_64 - x5 * cospi_8_64;
- s6 = -x6 * cospi_24_64 + x7 * cospi_8_64;
- s7 = x6 * cospi_8_64 + x7 * cospi_24_64;
- s8 = x8;
- s9 = x9;
- s10 = x10;
- s11 = x11;
- s12 = x12 * cospi_8_64 + x13 * cospi_24_64;
- s13 = x12 * cospi_24_64 - x13 * cospi_8_64;
- s14 = -x14 * cospi_24_64 + x15 * cospi_8_64;
- s15 = x14 * cospi_8_64 + x15 * cospi_24_64;
-
- x0 = HIGHBD_WRAPLOW(s0 + s2, bd);
- x1 = HIGHBD_WRAPLOW(s1 + s3, bd);
- x2 = HIGHBD_WRAPLOW(s0 - s2, bd);
- x3 = HIGHBD_WRAPLOW(s1 - s3, bd);
- x4 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s4 + s6), bd);
- x5 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s5 + s7), bd);
- x6 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s4 - s6), bd);
- x7 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s5 - s7), bd);
- x8 = HIGHBD_WRAPLOW(s8 + s10, bd);
- x9 = HIGHBD_WRAPLOW(s9 + s11, bd);
- x10 = HIGHBD_WRAPLOW(s8 - s10, bd);
- x11 = HIGHBD_WRAPLOW(s9 - s11, bd);
- x12 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s12 + s14), bd);
- x13 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s13 + s15), bd);
- x14 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s12 - s14), bd);
- x15 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s13 - s15), bd);
-
- // stage 4
- s2 = (- cospi_16_64) * (x2 + x3);
- s3 = cospi_16_64 * (x2 - x3);
- s6 = cospi_16_64 * (x6 + x7);
- s7 = cospi_16_64 * (-x6 + x7);
- s10 = cospi_16_64 * (x10 + x11);
- s11 = cospi_16_64 * (-x10 + x11);
- s14 = (- cospi_16_64) * (x14 + x15);
- s15 = cospi_16_64 * (x14 - x15);
-
- x2 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s2), bd);
- x3 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s3), bd);
- x6 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s6), bd);
- x7 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s7), bd);
- x10 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s10), bd);
- x11 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s11), bd);
- x14 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s14), bd);
- x15 = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(s15), bd);
-
- output[0] = HIGHBD_WRAPLOW(x0, bd);
- output[1] = HIGHBD_WRAPLOW(-x8, bd);
- output[2] = HIGHBD_WRAPLOW(x12, bd);
- output[3] = HIGHBD_WRAPLOW(-x4, bd);
- output[4] = HIGHBD_WRAPLOW(x6, bd);
- output[5] = HIGHBD_WRAPLOW(x14, bd);
- output[6] = HIGHBD_WRAPLOW(x10, bd);
- output[7] = HIGHBD_WRAPLOW(x2, bd);
- output[8] = HIGHBD_WRAPLOW(x3, bd);
- output[9] = HIGHBD_WRAPLOW(x11, bd);
- output[10] = HIGHBD_WRAPLOW(x15, bd);
- output[11] = HIGHBD_WRAPLOW(x7, bd);
- output[12] = HIGHBD_WRAPLOW(x5, bd);
- output[13] = HIGHBD_WRAPLOW(-x13, bd);
- output[14] = HIGHBD_WRAPLOW(x9, bd);
- output[15] = HIGHBD_WRAPLOW(-x1, bd);
-}
-
-void vpx_highbd_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[16 * 16] = { 0 };
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[16], temp_out[16];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // First transform rows. Since all non-zero dct coefficients are in
- // upper-left 4x4 area, we only need to calculate first 4 rows here.
- for (i = 0; i < 4; ++i) {
- vpx_highbd_idct16_c(input, outptr, bd);
- input += 16;
- outptr += 16;
- }
-
- // Then transform columns.
- for (i = 0; i < 16; ++i) {
- for (j = 0; j < 16; ++j)
- temp_in[j] = out[j*16 + i];
- vpx_highbd_idct16_c(temp_in, temp_out, bd);
- for (j = 0; j < 16; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd);
- }
- }
-}
-
-void vpx_highbd_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- int i, j;
- tran_high_t a1;
- tran_low_t out = HIGHBD_WRAPLOW(
- highbd_dct_const_round_shift(input[0] * cospi_16_64), bd);
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- out = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(out * cospi_16_64), bd);
- a1 = ROUND_POWER_OF_TWO(out, 6);
- for (j = 0; j < 16; ++j) {
- for (i = 0; i < 16; ++i)
- dest[i] = highbd_clip_pixel_add(dest[i], a1, bd);
- dest += stride;
- }
-}
-
-static void highbd_idct32_c(const tran_low_t *input,
- tran_low_t *output, int bd) {
- tran_low_t step1[32], step2[32];
- tran_high_t temp1, temp2;
- (void) bd;
-
- // stage 1
- step1[0] = input[0];
- step1[1] = input[16];
- step1[2] = input[8];
- step1[3] = input[24];
- step1[4] = input[4];
- step1[5] = input[20];
- step1[6] = input[12];
- step1[7] = input[28];
- step1[8] = input[2];
- step1[9] = input[18];
- step1[10] = input[10];
- step1[11] = input[26];
- step1[12] = input[6];
- step1[13] = input[22];
- step1[14] = input[14];
- step1[15] = input[30];
-
- temp1 = input[1] * cospi_31_64 - input[31] * cospi_1_64;
- temp2 = input[1] * cospi_1_64 + input[31] * cospi_31_64;
- step1[16] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[31] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = input[17] * cospi_15_64 - input[15] * cospi_17_64;
- temp2 = input[17] * cospi_17_64 + input[15] * cospi_15_64;
- step1[17] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[30] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = input[9] * cospi_23_64 - input[23] * cospi_9_64;
- temp2 = input[9] * cospi_9_64 + input[23] * cospi_23_64;
- step1[18] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[29] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = input[25] * cospi_7_64 - input[7] * cospi_25_64;
- temp2 = input[25] * cospi_25_64 + input[7] * cospi_7_64;
- step1[19] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[28] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = input[5] * cospi_27_64 - input[27] * cospi_5_64;
- temp2 = input[5] * cospi_5_64 + input[27] * cospi_27_64;
- step1[20] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[27] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = input[21] * cospi_11_64 - input[11] * cospi_21_64;
- temp2 = input[21] * cospi_21_64 + input[11] * cospi_11_64;
- step1[21] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[26] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = input[13] * cospi_19_64 - input[19] * cospi_13_64;
- temp2 = input[13] * cospi_13_64 + input[19] * cospi_19_64;
- step1[22] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[25] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = input[29] * cospi_3_64 - input[3] * cospi_29_64;
- temp2 = input[29] * cospi_29_64 + input[3] * cospi_3_64;
- step1[23] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[24] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- // stage 2
- step2[0] = step1[0];
- step2[1] = step1[1];
- step2[2] = step1[2];
- step2[3] = step1[3];
- step2[4] = step1[4];
- step2[5] = step1[5];
- step2[6] = step1[6];
- step2[7] = step1[7];
-
- temp1 = step1[8] * cospi_30_64 - step1[15] * cospi_2_64;
- temp2 = step1[8] * cospi_2_64 + step1[15] * cospi_30_64;
- step2[8] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[15] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = step1[9] * cospi_14_64 - step1[14] * cospi_18_64;
- temp2 = step1[9] * cospi_18_64 + step1[14] * cospi_14_64;
- step2[9] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[14] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = step1[10] * cospi_22_64 - step1[13] * cospi_10_64;
- temp2 = step1[10] * cospi_10_64 + step1[13] * cospi_22_64;
- step2[10] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[13] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- temp1 = step1[11] * cospi_6_64 - step1[12] * cospi_26_64;
- temp2 = step1[11] * cospi_26_64 + step1[12] * cospi_6_64;
- step2[11] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[12] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- step2[16] = HIGHBD_WRAPLOW(step1[16] + step1[17], bd);
- step2[17] = HIGHBD_WRAPLOW(step1[16] - step1[17], bd);
- step2[18] = HIGHBD_WRAPLOW(-step1[18] + step1[19], bd);
- step2[19] = HIGHBD_WRAPLOW(step1[18] + step1[19], bd);
- step2[20] = HIGHBD_WRAPLOW(step1[20] + step1[21], bd);
- step2[21] = HIGHBD_WRAPLOW(step1[20] - step1[21], bd);
- step2[22] = HIGHBD_WRAPLOW(-step1[22] + step1[23], bd);
- step2[23] = HIGHBD_WRAPLOW(step1[22] + step1[23], bd);
- step2[24] = HIGHBD_WRAPLOW(step1[24] + step1[25], bd);
- step2[25] = HIGHBD_WRAPLOW(step1[24] - step1[25], bd);
- step2[26] = HIGHBD_WRAPLOW(-step1[26] + step1[27], bd);
- step2[27] = HIGHBD_WRAPLOW(step1[26] + step1[27], bd);
- step2[28] = HIGHBD_WRAPLOW(step1[28] + step1[29], bd);
- step2[29] = HIGHBD_WRAPLOW(step1[28] - step1[29], bd);
- step2[30] = HIGHBD_WRAPLOW(-step1[30] + step1[31], bd);
- step2[31] = HIGHBD_WRAPLOW(step1[30] + step1[31], bd);
-
- // stage 3
- step1[0] = step2[0];
- step1[1] = step2[1];
- step1[2] = step2[2];
- step1[3] = step2[3];
-
- temp1 = step2[4] * cospi_28_64 - step2[7] * cospi_4_64;
- temp2 = step2[4] * cospi_4_64 + step2[7] * cospi_28_64;
- step1[4] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[7] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = step2[5] * cospi_12_64 - step2[6] * cospi_20_64;
- temp2 = step2[5] * cospi_20_64 + step2[6] * cospi_12_64;
- step1[5] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[6] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
-
- step1[8] = HIGHBD_WRAPLOW(step2[8] + step2[9], bd);
- step1[9] = HIGHBD_WRAPLOW(step2[8] - step2[9], bd);
- step1[10] = HIGHBD_WRAPLOW(-step2[10] + step2[11], bd);
- step1[11] = HIGHBD_WRAPLOW(step2[10] + step2[11], bd);
- step1[12] = HIGHBD_WRAPLOW(step2[12] + step2[13], bd);
- step1[13] = HIGHBD_WRAPLOW(step2[12] - step2[13], bd);
- step1[14] = HIGHBD_WRAPLOW(-step2[14] + step2[15], bd);
- step1[15] = HIGHBD_WRAPLOW(step2[14] + step2[15], bd);
-
- step1[16] = step2[16];
- step1[31] = step2[31];
- temp1 = -step2[17] * cospi_4_64 + step2[30] * cospi_28_64;
- temp2 = step2[17] * cospi_28_64 + step2[30] * cospi_4_64;
- step1[17] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[30] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = -step2[18] * cospi_28_64 - step2[29] * cospi_4_64;
- temp2 = -step2[18] * cospi_4_64 + step2[29] * cospi_28_64;
- step1[18] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[29] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step1[19] = step2[19];
- step1[20] = step2[20];
- temp1 = -step2[21] * cospi_20_64 + step2[26] * cospi_12_64;
- temp2 = step2[21] * cospi_12_64 + step2[26] * cospi_20_64;
- step1[21] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[26] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = -step2[22] * cospi_12_64 - step2[25] * cospi_20_64;
- temp2 = -step2[22] * cospi_20_64 + step2[25] * cospi_12_64;
- step1[22] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[25] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step1[23] = step2[23];
- step1[24] = step2[24];
- step1[27] = step2[27];
- step1[28] = step2[28];
-
- // stage 4
- temp1 = (step1[0] + step1[1]) * cospi_16_64;
- temp2 = (step1[0] - step1[1]) * cospi_16_64;
- step2[0] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[1] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = step1[2] * cospi_24_64 - step1[3] * cospi_8_64;
- temp2 = step1[2] * cospi_8_64 + step1[3] * cospi_24_64;
- step2[2] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[3] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step2[4] = HIGHBD_WRAPLOW(step1[4] + step1[5], bd);
- step2[5] = HIGHBD_WRAPLOW(step1[4] - step1[5], bd);
- step2[6] = HIGHBD_WRAPLOW(-step1[6] + step1[7], bd);
- step2[7] = HIGHBD_WRAPLOW(step1[6] + step1[7], bd);
-
- step2[8] = step1[8];
- step2[15] = step1[15];
- temp1 = -step1[9] * cospi_8_64 + step1[14] * cospi_24_64;
- temp2 = step1[9] * cospi_24_64 + step1[14] * cospi_8_64;
- step2[9] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[14] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = -step1[10] * cospi_24_64 - step1[13] * cospi_8_64;
- temp2 = -step1[10] * cospi_8_64 + step1[13] * cospi_24_64;
- step2[10] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[13] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step2[11] = step1[11];
- step2[12] = step1[12];
-
- step2[16] = HIGHBD_WRAPLOW(step1[16] + step1[19], bd);
- step2[17] = HIGHBD_WRAPLOW(step1[17] + step1[18], bd);
- step2[18] = HIGHBD_WRAPLOW(step1[17] - step1[18], bd);
- step2[19] = HIGHBD_WRAPLOW(step1[16] - step1[19], bd);
- step2[20] = HIGHBD_WRAPLOW(-step1[20] + step1[23], bd);
- step2[21] = HIGHBD_WRAPLOW(-step1[21] + step1[22], bd);
- step2[22] = HIGHBD_WRAPLOW(step1[21] + step1[22], bd);
- step2[23] = HIGHBD_WRAPLOW(step1[20] + step1[23], bd);
-
- step2[24] = HIGHBD_WRAPLOW(step1[24] + step1[27], bd);
- step2[25] = HIGHBD_WRAPLOW(step1[25] + step1[26], bd);
- step2[26] = HIGHBD_WRAPLOW(step1[25] - step1[26], bd);
- step2[27] = HIGHBD_WRAPLOW(step1[24] - step1[27], bd);
- step2[28] = HIGHBD_WRAPLOW(-step1[28] + step1[31], bd);
- step2[29] = HIGHBD_WRAPLOW(-step1[29] + step1[30], bd);
- step2[30] = HIGHBD_WRAPLOW(step1[29] + step1[30], bd);
- step2[31] = HIGHBD_WRAPLOW(step1[28] + step1[31], bd);
-
- // stage 5
- step1[0] = HIGHBD_WRAPLOW(step2[0] + step2[3], bd);
- step1[1] = HIGHBD_WRAPLOW(step2[1] + step2[2], bd);
- step1[2] = HIGHBD_WRAPLOW(step2[1] - step2[2], bd);
- step1[3] = HIGHBD_WRAPLOW(step2[0] - step2[3], bd);
- step1[4] = step2[4];
- temp1 = (step2[6] - step2[5]) * cospi_16_64;
- temp2 = (step2[5] + step2[6]) * cospi_16_64;
- step1[5] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[6] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step1[7] = step2[7];
-
- step1[8] = HIGHBD_WRAPLOW(step2[8] + step2[11], bd);
- step1[9] = HIGHBD_WRAPLOW(step2[9] + step2[10], bd);
- step1[10] = HIGHBD_WRAPLOW(step2[9] - step2[10], bd);
- step1[11] = HIGHBD_WRAPLOW(step2[8] - step2[11], bd);
- step1[12] = HIGHBD_WRAPLOW(-step2[12] + step2[15], bd);
- step1[13] = HIGHBD_WRAPLOW(-step2[13] + step2[14], bd);
- step1[14] = HIGHBD_WRAPLOW(step2[13] + step2[14], bd);
- step1[15] = HIGHBD_WRAPLOW(step2[12] + step2[15], bd);
-
- step1[16] = step2[16];
- step1[17] = step2[17];
- temp1 = -step2[18] * cospi_8_64 + step2[29] * cospi_24_64;
- temp2 = step2[18] * cospi_24_64 + step2[29] * cospi_8_64;
- step1[18] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[29] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = -step2[19] * cospi_8_64 + step2[28] * cospi_24_64;
- temp2 = step2[19] * cospi_24_64 + step2[28] * cospi_8_64;
- step1[19] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[28] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = -step2[20] * cospi_24_64 - step2[27] * cospi_8_64;
- temp2 = -step2[20] * cospi_8_64 + step2[27] * cospi_24_64;
- step1[20] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[27] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = -step2[21] * cospi_24_64 - step2[26] * cospi_8_64;
- temp2 = -step2[21] * cospi_8_64 + step2[26] * cospi_24_64;
- step1[21] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[26] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step1[22] = step2[22];
- step1[23] = step2[23];
- step1[24] = step2[24];
- step1[25] = step2[25];
- step1[30] = step2[30];
- step1[31] = step2[31];
-
- // stage 6
- step2[0] = HIGHBD_WRAPLOW(step1[0] + step1[7], bd);
- step2[1] = HIGHBD_WRAPLOW(step1[1] + step1[6], bd);
- step2[2] = HIGHBD_WRAPLOW(step1[2] + step1[5], bd);
- step2[3] = HIGHBD_WRAPLOW(step1[3] + step1[4], bd);
- step2[4] = HIGHBD_WRAPLOW(step1[3] - step1[4], bd);
- step2[5] = HIGHBD_WRAPLOW(step1[2] - step1[5], bd);
- step2[6] = HIGHBD_WRAPLOW(step1[1] - step1[6], bd);
- step2[7] = HIGHBD_WRAPLOW(step1[0] - step1[7], bd);
- step2[8] = step1[8];
- step2[9] = step1[9];
- temp1 = (-step1[10] + step1[13]) * cospi_16_64;
- temp2 = (step1[10] + step1[13]) * cospi_16_64;
- step2[10] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[13] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = (-step1[11] + step1[12]) * cospi_16_64;
- temp2 = (step1[11] + step1[12]) * cospi_16_64;
- step2[11] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step2[12] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step2[14] = step1[14];
- step2[15] = step1[15];
-
- step2[16] = HIGHBD_WRAPLOW(step1[16] + step1[23], bd);
- step2[17] = HIGHBD_WRAPLOW(step1[17] + step1[22], bd);
- step2[18] = HIGHBD_WRAPLOW(step1[18] + step1[21], bd);
- step2[19] = HIGHBD_WRAPLOW(step1[19] + step1[20], bd);
- step2[20] = HIGHBD_WRAPLOW(step1[19] - step1[20], bd);
- step2[21] = HIGHBD_WRAPLOW(step1[18] - step1[21], bd);
- step2[22] = HIGHBD_WRAPLOW(step1[17] - step1[22], bd);
- step2[23] = HIGHBD_WRAPLOW(step1[16] - step1[23], bd);
-
- step2[24] = HIGHBD_WRAPLOW(-step1[24] + step1[31], bd);
- step2[25] = HIGHBD_WRAPLOW(-step1[25] + step1[30], bd);
- step2[26] = HIGHBD_WRAPLOW(-step1[26] + step1[29], bd);
- step2[27] = HIGHBD_WRAPLOW(-step1[27] + step1[28], bd);
- step2[28] = HIGHBD_WRAPLOW(step1[27] + step1[28], bd);
- step2[29] = HIGHBD_WRAPLOW(step1[26] + step1[29], bd);
- step2[30] = HIGHBD_WRAPLOW(step1[25] + step1[30], bd);
- step2[31] = HIGHBD_WRAPLOW(step1[24] + step1[31], bd);
-
- // stage 7
- step1[0] = HIGHBD_WRAPLOW(step2[0] + step2[15], bd);
- step1[1] = HIGHBD_WRAPLOW(step2[1] + step2[14], bd);
- step1[2] = HIGHBD_WRAPLOW(step2[2] + step2[13], bd);
- step1[3] = HIGHBD_WRAPLOW(step2[3] + step2[12], bd);
- step1[4] = HIGHBD_WRAPLOW(step2[4] + step2[11], bd);
- step1[5] = HIGHBD_WRAPLOW(step2[5] + step2[10], bd);
- step1[6] = HIGHBD_WRAPLOW(step2[6] + step2[9], bd);
- step1[7] = HIGHBD_WRAPLOW(step2[7] + step2[8], bd);
- step1[8] = HIGHBD_WRAPLOW(step2[7] - step2[8], bd);
- step1[9] = HIGHBD_WRAPLOW(step2[6] - step2[9], bd);
- step1[10] = HIGHBD_WRAPLOW(step2[5] - step2[10], bd);
- step1[11] = HIGHBD_WRAPLOW(step2[4] - step2[11], bd);
- step1[12] = HIGHBD_WRAPLOW(step2[3] - step2[12], bd);
- step1[13] = HIGHBD_WRAPLOW(step2[2] - step2[13], bd);
- step1[14] = HIGHBD_WRAPLOW(step2[1] - step2[14], bd);
- step1[15] = HIGHBD_WRAPLOW(step2[0] - step2[15], bd);
-
- step1[16] = step2[16];
- step1[17] = step2[17];
- step1[18] = step2[18];
- step1[19] = step2[19];
- temp1 = (-step2[20] + step2[27]) * cospi_16_64;
- temp2 = (step2[20] + step2[27]) * cospi_16_64;
- step1[20] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[27] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = (-step2[21] + step2[26]) * cospi_16_64;
- temp2 = (step2[21] + step2[26]) * cospi_16_64;
- step1[21] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[26] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = (-step2[22] + step2[25]) * cospi_16_64;
- temp2 = (step2[22] + step2[25]) * cospi_16_64;
- step1[22] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[25] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- temp1 = (-step2[23] + step2[24]) * cospi_16_64;
- temp2 = (step2[23] + step2[24]) * cospi_16_64;
- step1[23] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp1), bd);
- step1[24] = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(temp2), bd);
- step1[28] = step2[28];
- step1[29] = step2[29];
- step1[30] = step2[30];
- step1[31] = step2[31];
-
- // final stage
- output[0] = HIGHBD_WRAPLOW(step1[0] + step1[31], bd);
- output[1] = HIGHBD_WRAPLOW(step1[1] + step1[30], bd);
- output[2] = HIGHBD_WRAPLOW(step1[2] + step1[29], bd);
- output[3] = HIGHBD_WRAPLOW(step1[3] + step1[28], bd);
- output[4] = HIGHBD_WRAPLOW(step1[4] + step1[27], bd);
- output[5] = HIGHBD_WRAPLOW(step1[5] + step1[26], bd);
- output[6] = HIGHBD_WRAPLOW(step1[6] + step1[25], bd);
- output[7] = HIGHBD_WRAPLOW(step1[7] + step1[24], bd);
- output[8] = HIGHBD_WRAPLOW(step1[8] + step1[23], bd);
- output[9] = HIGHBD_WRAPLOW(step1[9] + step1[22], bd);
- output[10] = HIGHBD_WRAPLOW(step1[10] + step1[21], bd);
- output[11] = HIGHBD_WRAPLOW(step1[11] + step1[20], bd);
- output[12] = HIGHBD_WRAPLOW(step1[12] + step1[19], bd);
- output[13] = HIGHBD_WRAPLOW(step1[13] + step1[18], bd);
- output[14] = HIGHBD_WRAPLOW(step1[14] + step1[17], bd);
- output[15] = HIGHBD_WRAPLOW(step1[15] + step1[16], bd);
- output[16] = HIGHBD_WRAPLOW(step1[15] - step1[16], bd);
- output[17] = HIGHBD_WRAPLOW(step1[14] - step1[17], bd);
- output[18] = HIGHBD_WRAPLOW(step1[13] - step1[18], bd);
- output[19] = HIGHBD_WRAPLOW(step1[12] - step1[19], bd);
- output[20] = HIGHBD_WRAPLOW(step1[11] - step1[20], bd);
- output[21] = HIGHBD_WRAPLOW(step1[10] - step1[21], bd);
- output[22] = HIGHBD_WRAPLOW(step1[9] - step1[22], bd);
- output[23] = HIGHBD_WRAPLOW(step1[8] - step1[23], bd);
- output[24] = HIGHBD_WRAPLOW(step1[7] - step1[24], bd);
- output[25] = HIGHBD_WRAPLOW(step1[6] - step1[25], bd);
- output[26] = HIGHBD_WRAPLOW(step1[5] - step1[26], bd);
- output[27] = HIGHBD_WRAPLOW(step1[4] - step1[27], bd);
- output[28] = HIGHBD_WRAPLOW(step1[3] - step1[28], bd);
- output[29] = HIGHBD_WRAPLOW(step1[2] - step1[29], bd);
- output[30] = HIGHBD_WRAPLOW(step1[1] - step1[30], bd);
- output[31] = HIGHBD_WRAPLOW(step1[0] - step1[31], bd);
-}
-
-void vpx_highbd_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[32 * 32];
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[32], temp_out[32];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // Rows
- for (i = 0; i < 32; ++i) {
- tran_low_t zero_coeff[16];
- for (j = 0; j < 16; ++j)
- zero_coeff[j] = input[2 * j] | input[2 * j + 1];
- for (j = 0; j < 8; ++j)
- zero_coeff[j] = zero_coeff[2 * j] | zero_coeff[2 * j + 1];
- for (j = 0; j < 4; ++j)
- zero_coeff[j] = zero_coeff[2 * j] | zero_coeff[2 * j + 1];
- for (j = 0; j < 2; ++j)
- zero_coeff[j] = zero_coeff[2 * j] | zero_coeff[2 * j + 1];
-
- if (zero_coeff[0] | zero_coeff[1])
- highbd_idct32_c(input, outptr, bd);
- else
- memset(outptr, 0, sizeof(tran_low_t) * 32);
- input += 32;
- outptr += 32;
- }
-
- // Columns
- for (i = 0; i < 32; ++i) {
- for (j = 0; j < 32; ++j)
- temp_in[j] = out[j * 32 + i];
- highbd_idct32_c(temp_in, temp_out, bd);
- for (j = 0; j < 32; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd);
- }
- }
-}
-
-void vpx_highbd_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[32 * 32] = {0};
- tran_low_t *outptr = out;
- int i, j;
- tran_low_t temp_in[32], temp_out[32];
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- // Rows
- // Only upper-left 8x8 has non-zero coeff.
- for (i = 0; i < 8; ++i) {
- highbd_idct32_c(input, outptr, bd);
- input += 32;
- outptr += 32;
- }
- // Columns
- for (i = 0; i < 32; ++i) {
- for (j = 0; j < 32; ++j)
- temp_in[j] = out[j * 32 + i];
- highbd_idct32_c(temp_in, temp_out, bd);
- for (j = 0; j < 32; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd);
- }
- }
-}
-
-void vpx_highbd_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- int i, j;
- int a1;
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
-
- tran_low_t out = HIGHBD_WRAPLOW(
- highbd_dct_const_round_shift(input[0] * cospi_16_64), bd);
- out = HIGHBD_WRAPLOW(highbd_dct_const_round_shift(out * cospi_16_64), bd);
- a1 = ROUND_POWER_OF_TWO(out, 6);
-
- for (j = 0; j < 32; ++j) {
- for (i = 0; i < 32; ++i)
- dest[i] = highbd_clip_pixel_add(dest[i], a1, bd);
- dest += stride;
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
diff --git a/thirdparty/libvpx/vpx_dsp/inv_txfm.h b/thirdparty/libvpx/vpx_dsp/inv_txfm.h
deleted file mode 100644
index 9cfe1be3a7..0000000000
--- a/thirdparty/libvpx/vpx_dsp/inv_txfm.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_INV_TXFM_H_
-#define VPX_DSP_INV_TXFM_H_
-
-#include <assert.h>
-
-#include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_ports/mem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static INLINE tran_high_t check_range(tran_high_t input) {
-#if CONFIG_COEFFICIENT_RANGE_CHECKING
- // For valid VP9 input streams, intermediate stage coefficients should always
- // stay within the range of a signed 16 bit integer. Coefficients can go out
- // of this range for invalid/corrupt VP9 streams. However, strictly checking
- // this range for every intermediate coefficient can burdensome for a decoder,
- // therefore the following assertion is only enabled when configured with
- // --enable-coefficient-range-checking.
- assert(INT16_MIN <= input);
- assert(input <= INT16_MAX);
-#endif // CONFIG_COEFFICIENT_RANGE_CHECKING
- return input;
-}
-
-static INLINE tran_high_t dct_const_round_shift(tran_high_t input) {
- tran_high_t rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
- return (tran_high_t)rv;
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static INLINE tran_high_t highbd_check_range(tran_high_t input,
- int bd) {
-#if CONFIG_COEFFICIENT_RANGE_CHECKING
- // For valid highbitdepth VP9 streams, intermediate stage coefficients will
- // stay within the ranges:
- // - 8 bit: signed 16 bit integer
- // - 10 bit: signed 18 bit integer
- // - 12 bit: signed 20 bit integer
- const int32_t int_max = (1 << (7 + bd)) - 1;
- const int32_t int_min = -int_max - 1;
- assert(int_min <= input);
- assert(input <= int_max);
- (void) int_min;
-#endif // CONFIG_COEFFICIENT_RANGE_CHECKING
- (void) bd;
- return input;
-}
-
-static INLINE tran_high_t highbd_dct_const_round_shift(tran_high_t input) {
- tran_high_t rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
- return (tran_high_t)rv;
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-#if CONFIG_EMULATE_HARDWARE
-// When CONFIG_EMULATE_HARDWARE is 1 the transform performs a
-// non-normative method to handle overflows. A stream that causes
-// overflows in the inverse transform is considered invalid in VP9,
-// and a hardware implementer is free to choose any reasonable
-// method to handle overflows. However to aid in hardware
-// verification they can use a specific implementation of the
-// WRAPLOW() macro below that is identical to their intended
-// hardware implementation (and also use configure options to trigger
-// the C-implementation of the transform).
-//
-// The particular WRAPLOW implementation below performs strict
-// overflow wrapping to match common hardware implementations.
-// bd of 8 uses trans_low with 16bits, need to remove 16bits
-// bd of 10 uses trans_low with 18bits, need to remove 14bits
-// bd of 12 uses trans_low with 20bits, need to remove 12bits
-// bd of x uses trans_low with 8+x bits, need to remove 24-x bits
-
-#define WRAPLOW(x) ((((int32_t)check_range(x)) << 16) >> 16)
-#if CONFIG_VP9_HIGHBITDEPTH
-#define HIGHBD_WRAPLOW(x, bd) \
- ((((int32_t)highbd_check_range((x), bd)) << (24 - bd)) >> (24 - bd))
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-#else // CONFIG_EMULATE_HARDWARE
-
-#define WRAPLOW(x) ((int32_t)check_range(x))
-#if CONFIG_VP9_HIGHBITDEPTH
-#define HIGHBD_WRAPLOW(x, bd) \
- ((int32_t)highbd_check_range((x), bd))
-#endif // CONFIG_VP9_HIGHBITDEPTH
-#endif // CONFIG_EMULATE_HARDWARE
-
-void idct4_c(const tran_low_t *input, tran_low_t *output);
-void idct8_c(const tran_low_t *input, tran_low_t *output);
-void idct16_c(const tran_low_t *input, tran_low_t *output);
-void idct32_c(const tran_low_t *input, tran_low_t *output);
-void iadst4_c(const tran_low_t *input, tran_low_t *output);
-void iadst8_c(const tran_low_t *input, tran_low_t *output);
-void iadst16_c(const tran_low_t *input, tran_low_t *output);
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void vpx_highbd_idct4_c(const tran_low_t *input, tran_low_t *output, int bd);
-void vpx_highbd_idct8_c(const tran_low_t *input, tran_low_t *output, int bd);
-void vpx_highbd_idct16_c(const tran_low_t *input, tran_low_t *output, int bd);
-
-void vpx_highbd_iadst4_c(const tran_low_t *input, tran_low_t *output, int bd);
-void vpx_highbd_iadst8_c(const tran_low_t *input, tran_low_t *output, int bd);
-void vpx_highbd_iadst16_c(const tran_low_t *input, tran_low_t *output, int bd);
-
-static INLINE uint16_t highbd_clip_pixel_add(uint16_t dest, tran_high_t trans,
- int bd) {
- trans = HIGHBD_WRAPLOW(trans, bd);
- return clip_pixel_highbd(dest + (int)trans, bd);
-}
-#endif
-
-static INLINE uint8_t clip_pixel_add(uint8_t dest, tran_high_t trans) {
- trans = WRAPLOW(trans);
- return clip_pixel(dest + (int)trans);
-}
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_DSP_INV_TXFM_H_
diff --git a/thirdparty/libvpx/vpx_dsp/loopfilter.c b/thirdparty/libvpx/vpx_dsp/loopfilter.c
deleted file mode 100644
index 645a1ab95e..0000000000
--- a/thirdparty/libvpx/vpx_dsp/loopfilter.c
+++ /dev/null
@@ -1,767 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <stdlib.h>
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
-
-static INLINE int8_t signed_char_clamp(int t) {
- return (int8_t)clamp(t, -128, 127);
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static INLINE int16_t signed_char_clamp_high(int t, int bd) {
- switch (bd) {
- case 10:
- return (int16_t)clamp(t, -128*4, 128*4-1);
- case 12:
- return (int16_t)clamp(t, -128*16, 128*16-1);
- case 8:
- default:
- return (int16_t)clamp(t, -128, 128-1);
- }
-}
-#endif
-
-// should we apply any filter at all: 11111111 yes, 00000000 no
-static INLINE int8_t filter_mask(uint8_t limit, uint8_t blimit,
- uint8_t p3, uint8_t p2,
- uint8_t p1, uint8_t p0,
- uint8_t q0, uint8_t q1,
- uint8_t q2, uint8_t q3) {
- int8_t mask = 0;
- mask |= (abs(p3 - p2) > limit) * -1;
- mask |= (abs(p2 - p1) > limit) * -1;
- mask |= (abs(p1 - p0) > limit) * -1;
- mask |= (abs(q1 - q0) > limit) * -1;
- mask |= (abs(q2 - q1) > limit) * -1;
- mask |= (abs(q3 - q2) > limit) * -1;
- mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit) * -1;
- return ~mask;
-}
-
-static INLINE int8_t flat_mask4(uint8_t thresh,
- uint8_t p3, uint8_t p2,
- uint8_t p1, uint8_t p0,
- uint8_t q0, uint8_t q1,
- uint8_t q2, uint8_t q3) {
- int8_t mask = 0;
- mask |= (abs(p1 - p0) > thresh) * -1;
- mask |= (abs(q1 - q0) > thresh) * -1;
- mask |= (abs(p2 - p0) > thresh) * -1;
- mask |= (abs(q2 - q0) > thresh) * -1;
- mask |= (abs(p3 - p0) > thresh) * -1;
- mask |= (abs(q3 - q0) > thresh) * -1;
- return ~mask;
-}
-
-static INLINE int8_t flat_mask5(uint8_t thresh,
- uint8_t p4, uint8_t p3,
- uint8_t p2, uint8_t p1,
- uint8_t p0, uint8_t q0,
- uint8_t q1, uint8_t q2,
- uint8_t q3, uint8_t q4) {
- int8_t mask = ~flat_mask4(thresh, p3, p2, p1, p0, q0, q1, q2, q3);
- mask |= (abs(p4 - p0) > thresh) * -1;
- mask |= (abs(q4 - q0) > thresh) * -1;
- return ~mask;
-}
-
-// is there high edge variance internal edge: 11111111 yes, 00000000 no
-static INLINE int8_t hev_mask(uint8_t thresh, uint8_t p1, uint8_t p0,
- uint8_t q0, uint8_t q1) {
- int8_t hev = 0;
- hev |= (abs(p1 - p0) > thresh) * -1;
- hev |= (abs(q1 - q0) > thresh) * -1;
- return hev;
-}
-
-static INLINE void filter4(int8_t mask, uint8_t thresh, uint8_t *op1,
- uint8_t *op0, uint8_t *oq0, uint8_t *oq1) {
- int8_t filter1, filter2;
-
- const int8_t ps1 = (int8_t) *op1 ^ 0x80;
- const int8_t ps0 = (int8_t) *op0 ^ 0x80;
- const int8_t qs0 = (int8_t) *oq0 ^ 0x80;
- const int8_t qs1 = (int8_t) *oq1 ^ 0x80;
- const uint8_t hev = hev_mask(thresh, *op1, *op0, *oq0, *oq1);
-
- // add outer taps if we have high edge variance
- int8_t filter = signed_char_clamp(ps1 - qs1) & hev;
-
- // inner taps
- filter = signed_char_clamp(filter + 3 * (qs0 - ps0)) & mask;
-
- // save bottom 3 bits so that we round one side +4 and the other +3
- // if it equals 4 we'll set to adjust by -1 to account for the fact
- // we'd round 3 the other way
- filter1 = signed_char_clamp(filter + 4) >> 3;
- filter2 = signed_char_clamp(filter + 3) >> 3;
-
- *oq0 = signed_char_clamp(qs0 - filter1) ^ 0x80;
- *op0 = signed_char_clamp(ps0 + filter2) ^ 0x80;
-
- // outer tap adjustments
- filter = ROUND_POWER_OF_TWO(filter1, 1) & ~hev;
-
- *oq1 = signed_char_clamp(qs1 - filter) ^ 0x80;
- *op1 = signed_char_clamp(ps1 + filter) ^ 0x80;
-}
-
-void vpx_lpf_horizontal_4_c(uint8_t *s, int p /* pitch */,
- const uint8_t *blimit, const uint8_t *limit,
- const uint8_t *thresh) {
- int i;
-
- // loop filter designed to work using chars so that we can make maximum use
- // of 8 bit simd instructions.
- for (i = 0; i < 8; ++i) {
- const uint8_t p3 = s[-4 * p], p2 = s[-3 * p], p1 = s[-2 * p], p0 = s[-p];
- const uint8_t q0 = s[0 * p], q1 = s[1 * p], q2 = s[2 * p], q3 = s[3 * p];
- const int8_t mask = filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3);
- filter4(mask, *thresh, s - 2 * p, s - 1 * p, s, s + 1 * p);
- ++s;
- }
-}
-
-void vpx_lpf_horizontal_4_dual_c(uint8_t *s, int p, const uint8_t *blimit0,
- const uint8_t *limit0, const uint8_t *thresh0,
- const uint8_t *blimit1, const uint8_t *limit1,
- const uint8_t *thresh1) {
- vpx_lpf_horizontal_4_c(s, p, blimit0, limit0, thresh0);
- vpx_lpf_horizontal_4_c(s + 8, p, blimit1, limit1, thresh1);
-}
-
-void vpx_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh) {
- int i;
-
- // loop filter designed to work using chars so that we can make maximum use
- // of 8 bit simd instructions.
- for (i = 0; i < 8; ++i) {
- const uint8_t p3 = s[-4], p2 = s[-3], p1 = s[-2], p0 = s[-1];
- const uint8_t q0 = s[0], q1 = s[1], q2 = s[2], q3 = s[3];
- const int8_t mask = filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3);
- filter4(mask, *thresh, s - 2, s - 1, s, s + 1);
- s += pitch;
- }
-}
-
-void vpx_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0,
- const uint8_t *limit0, const uint8_t *thresh0,
- const uint8_t *blimit1, const uint8_t *limit1,
- const uint8_t *thresh1) {
- vpx_lpf_vertical_4_c(s, pitch, blimit0, limit0, thresh0);
- vpx_lpf_vertical_4_c(s + 8 * pitch, pitch, blimit1, limit1, thresh1);
-}
-
-static INLINE void filter8(int8_t mask, uint8_t thresh, uint8_t flat,
- uint8_t *op3, uint8_t *op2,
- uint8_t *op1, uint8_t *op0,
- uint8_t *oq0, uint8_t *oq1,
- uint8_t *oq2, uint8_t *oq3) {
- if (flat && mask) {
- const uint8_t p3 = *op3, p2 = *op2, p1 = *op1, p0 = *op0;
- const uint8_t q0 = *oq0, q1 = *oq1, q2 = *oq2, q3 = *oq3;
-
- // 7-tap filter [1, 1, 1, 2, 1, 1, 1]
- *op2 = ROUND_POWER_OF_TWO(p3 + p3 + p3 + 2 * p2 + p1 + p0 + q0, 3);
- *op1 = ROUND_POWER_OF_TWO(p3 + p3 + p2 + 2 * p1 + p0 + q0 + q1, 3);
- *op0 = ROUND_POWER_OF_TWO(p3 + p2 + p1 + 2 * p0 + q0 + q1 + q2, 3);
- *oq0 = ROUND_POWER_OF_TWO(p2 + p1 + p0 + 2 * q0 + q1 + q2 + q3, 3);
- *oq1 = ROUND_POWER_OF_TWO(p1 + p0 + q0 + 2 * q1 + q2 + q3 + q3, 3);
- *oq2 = ROUND_POWER_OF_TWO(p0 + q0 + q1 + 2 * q2 + q3 + q3 + q3, 3);
- } else {
- filter4(mask, thresh, op1, op0, oq0, oq1);
- }
-}
-
-void vpx_lpf_horizontal_8_c(uint8_t *s, int p, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh) {
- int i;
-
- // loop filter designed to work using chars so that we can make maximum use
- // of 8 bit simd instructions.
- for (i = 0; i < 8; ++i) {
- const uint8_t p3 = s[-4 * p], p2 = s[-3 * p], p1 = s[-2 * p], p0 = s[-p];
- const uint8_t q0 = s[0 * p], q1 = s[1 * p], q2 = s[2 * p], q3 = s[3 * p];
-
- const int8_t mask = filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3);
- const int8_t flat = flat_mask4(1, p3, p2, p1, p0, q0, q1, q2, q3);
- filter8(mask, *thresh, flat, s - 4 * p, s - 3 * p, s - 2 * p, s - 1 * p,
- s, s + 1 * p, s + 2 * p, s + 3 * p);
- ++s;
- }
-}
-
-void vpx_lpf_horizontal_8_dual_c(uint8_t *s, int p, const uint8_t *blimit0,
- const uint8_t *limit0, const uint8_t *thresh0,
- const uint8_t *blimit1, const uint8_t *limit1,
- const uint8_t *thresh1) {
- vpx_lpf_horizontal_8_c(s, p, blimit0, limit0, thresh0);
- vpx_lpf_horizontal_8_c(s + 8, p, blimit1, limit1, thresh1);
-}
-
-void vpx_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh) {
- int i;
-
- for (i = 0; i < 8; ++i) {
- const uint8_t p3 = s[-4], p2 = s[-3], p1 = s[-2], p0 = s[-1];
- const uint8_t q0 = s[0], q1 = s[1], q2 = s[2], q3 = s[3];
- const int8_t mask = filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3);
- const int8_t flat = flat_mask4(1, p3, p2, p1, p0, q0, q1, q2, q3);
- filter8(mask, *thresh, flat, s - 4, s - 3, s - 2, s - 1,
- s, s + 1, s + 2, s + 3);
- s += pitch;
- }
-}
-
-void vpx_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0,
- const uint8_t *limit0, const uint8_t *thresh0,
- const uint8_t *blimit1, const uint8_t *limit1,
- const uint8_t *thresh1) {
- vpx_lpf_vertical_8_c(s, pitch, blimit0, limit0, thresh0);
- vpx_lpf_vertical_8_c(s + 8 * pitch, pitch, blimit1, limit1, thresh1);
-}
-
-static INLINE void filter16(int8_t mask, uint8_t thresh,
- uint8_t flat, uint8_t flat2,
- uint8_t *op7, uint8_t *op6,
- uint8_t *op5, uint8_t *op4,
- uint8_t *op3, uint8_t *op2,
- uint8_t *op1, uint8_t *op0,
- uint8_t *oq0, uint8_t *oq1,
- uint8_t *oq2, uint8_t *oq3,
- uint8_t *oq4, uint8_t *oq5,
- uint8_t *oq6, uint8_t *oq7) {
- if (flat2 && flat && mask) {
- const uint8_t p7 = *op7, p6 = *op6, p5 = *op5, p4 = *op4,
- p3 = *op3, p2 = *op2, p1 = *op1, p0 = *op0;
-
- const uint8_t q0 = *oq0, q1 = *oq1, q2 = *oq2, q3 = *oq3,
- q4 = *oq4, q5 = *oq5, q6 = *oq6, q7 = *oq7;
-
- // 15-tap filter [1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1]
- *op6 = ROUND_POWER_OF_TWO(p7 * 7 + p6 * 2 + p5 + p4 + p3 + p2 + p1 + p0 +
- q0, 4);
- *op5 = ROUND_POWER_OF_TWO(p7 * 6 + p6 + p5 * 2 + p4 + p3 + p2 + p1 + p0 +
- q0 + q1, 4);
- *op4 = ROUND_POWER_OF_TWO(p7 * 5 + p6 + p5 + p4 * 2 + p3 + p2 + p1 + p0 +
- q0 + q1 + q2, 4);
- *op3 = ROUND_POWER_OF_TWO(p7 * 4 + p6 + p5 + p4 + p3 * 2 + p2 + p1 + p0 +
- q0 + q1 + q2 + q3, 4);
- *op2 = ROUND_POWER_OF_TWO(p7 * 3 + p6 + p5 + p4 + p3 + p2 * 2 + p1 + p0 +
- q0 + q1 + q2 + q3 + q4, 4);
- *op1 = ROUND_POWER_OF_TWO(p7 * 2 + p6 + p5 + p4 + p3 + p2 + p1 * 2 + p0 +
- q0 + q1 + q2 + q3 + q4 + q5, 4);
- *op0 = ROUND_POWER_OF_TWO(p7 + p6 + p5 + p4 + p3 + p2 + p1 + p0 * 2 +
- q0 + q1 + q2 + q3 + q4 + q5 + q6, 4);
- *oq0 = ROUND_POWER_OF_TWO(p6 + p5 + p4 + p3 + p2 + p1 + p0 +
- q0 * 2 + q1 + q2 + q3 + q4 + q5 + q6 + q7, 4);
- *oq1 = ROUND_POWER_OF_TWO(p5 + p4 + p3 + p2 + p1 + p0 +
- q0 + q1 * 2 + q2 + q3 + q4 + q5 + q6 + q7 * 2, 4);
- *oq2 = ROUND_POWER_OF_TWO(p4 + p3 + p2 + p1 + p0 +
- q0 + q1 + q2 * 2 + q3 + q4 + q5 + q6 + q7 * 3, 4);
- *oq3 = ROUND_POWER_OF_TWO(p3 + p2 + p1 + p0 +
- q0 + q1 + q2 + q3 * 2 + q4 + q5 + q6 + q7 * 4, 4);
- *oq4 = ROUND_POWER_OF_TWO(p2 + p1 + p0 +
- q0 + q1 + q2 + q3 + q4 * 2 + q5 + q6 + q7 * 5, 4);
- *oq5 = ROUND_POWER_OF_TWO(p1 + p0 +
- q0 + q1 + q2 + q3 + q4 + q5 * 2 + q6 + q7 * 6, 4);
- *oq6 = ROUND_POWER_OF_TWO(p0 +
- q0 + q1 + q2 + q3 + q4 + q5 + q6 * 2 + q7 * 7, 4);
- } else {
- filter8(mask, thresh, flat, op3, op2, op1, op0, oq0, oq1, oq2, oq3);
- }
-}
-
-static void mb_lpf_horizontal_edge_w(uint8_t *s, int p, const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh, int count) {
- int i;
-
- // loop filter designed to work using chars so that we can make maximum use
- // of 8 bit simd instructions.
- for (i = 0; i < 8 * count; ++i) {
- const uint8_t p3 = s[-4 * p], p2 = s[-3 * p], p1 = s[-2 * p], p0 = s[-p];
- const uint8_t q0 = s[0 * p], q1 = s[1 * p], q2 = s[2 * p], q3 = s[3 * p];
- const int8_t mask = filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3);
- const int8_t flat = flat_mask4(1, p3, p2, p1, p0, q0, q1, q2, q3);
- const int8_t flat2 = flat_mask5(1,
- s[-8 * p], s[-7 * p], s[-6 * p], s[-5 * p], p0,
- q0, s[4 * p], s[5 * p], s[6 * p], s[7 * p]);
-
- filter16(mask, *thresh, flat, flat2,
- s - 8 * p, s - 7 * p, s - 6 * p, s - 5 * p,
- s - 4 * p, s - 3 * p, s - 2 * p, s - 1 * p,
- s, s + 1 * p, s + 2 * p, s + 3 * p,
- s + 4 * p, s + 5 * p, s + 6 * p, s + 7 * p);
- ++s;
- }
-}
-
-void vpx_lpf_horizontal_edge_8_c(uint8_t *s, int p, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh) {
- mb_lpf_horizontal_edge_w(s, p, blimit, limit, thresh, 1);
-}
-
-void vpx_lpf_horizontal_edge_16_c(uint8_t *s, int p, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh) {
- mb_lpf_horizontal_edge_w(s, p, blimit, limit, thresh, 2);
-}
-
-static void mb_lpf_vertical_edge_w(uint8_t *s, int p,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh,
- int count) {
- int i;
-
- for (i = 0; i < count; ++i) {
- const uint8_t p3 = s[-4], p2 = s[-3], p1 = s[-2], p0 = s[-1];
- const uint8_t q0 = s[0], q1 = s[1], q2 = s[2], q3 = s[3];
- const int8_t mask = filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3);
- const int8_t flat = flat_mask4(1, p3, p2, p1, p0, q0, q1, q2, q3);
- const int8_t flat2 = flat_mask5(1, s[-8], s[-7], s[-6], s[-5], p0,
- q0, s[4], s[5], s[6], s[7]);
-
- filter16(mask, *thresh, flat, flat2,
- s - 8, s - 7, s - 6, s - 5, s - 4, s - 3, s - 2, s - 1,
- s, s + 1, s + 2, s + 3, s + 4, s + 5, s + 6, s + 7);
- s += p;
- }
-}
-
-void vpx_lpf_vertical_16_c(uint8_t *s, int p, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh) {
- mb_lpf_vertical_edge_w(s, p, blimit, limit, thresh, 8);
-}
-
-void vpx_lpf_vertical_16_dual_c(uint8_t *s, int p, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh) {
- mb_lpf_vertical_edge_w(s, p, blimit, limit, thresh, 16);
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-// Should we apply any filter at all: 11111111 yes, 00000000 no ?
-static INLINE int8_t highbd_filter_mask(uint8_t limit, uint8_t blimit,
- uint16_t p3, uint16_t p2,
- uint16_t p1, uint16_t p0,
- uint16_t q0, uint16_t q1,
- uint16_t q2, uint16_t q3, int bd) {
- int8_t mask = 0;
- int16_t limit16 = (uint16_t)limit << (bd - 8);
- int16_t blimit16 = (uint16_t)blimit << (bd - 8);
- mask |= (abs(p3 - p2) > limit16) * -1;
- mask |= (abs(p2 - p1) > limit16) * -1;
- mask |= (abs(p1 - p0) > limit16) * -1;
- mask |= (abs(q1 - q0) > limit16) * -1;
- mask |= (abs(q2 - q1) > limit16) * -1;
- mask |= (abs(q3 - q2) > limit16) * -1;
- mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit16) * -1;
- return ~mask;
-}
-
-static INLINE int8_t highbd_flat_mask4(uint8_t thresh,
- uint16_t p3, uint16_t p2,
- uint16_t p1, uint16_t p0,
- uint16_t q0, uint16_t q1,
- uint16_t q2, uint16_t q3, int bd) {
- int8_t mask = 0;
- int16_t thresh16 = (uint16_t)thresh << (bd - 8);
- mask |= (abs(p1 - p0) > thresh16) * -1;
- mask |= (abs(q1 - q0) > thresh16) * -1;
- mask |= (abs(p2 - p0) > thresh16) * -1;
- mask |= (abs(q2 - q0) > thresh16) * -1;
- mask |= (abs(p3 - p0) > thresh16) * -1;
- mask |= (abs(q3 - q0) > thresh16) * -1;
- return ~mask;
-}
-
-static INLINE int8_t highbd_flat_mask5(uint8_t thresh,
- uint16_t p4, uint16_t p3,
- uint16_t p2, uint16_t p1,
- uint16_t p0, uint16_t q0,
- uint16_t q1, uint16_t q2,
- uint16_t q3, uint16_t q4, int bd) {
- int8_t mask = ~highbd_flat_mask4(thresh, p3, p2, p1, p0, q0, q1, q2, q3, bd);
- int16_t thresh16 = (uint16_t)thresh << (bd - 8);
- mask |= (abs(p4 - p0) > thresh16) * -1;
- mask |= (abs(q4 - q0) > thresh16) * -1;
- return ~mask;
-}
-
-// Is there high edge variance internal edge:
-// 11111111_11111111 yes, 00000000_00000000 no ?
-static INLINE int16_t highbd_hev_mask(uint8_t thresh, uint16_t p1, uint16_t p0,
- uint16_t q0, uint16_t q1, int bd) {
- int16_t hev = 0;
- int16_t thresh16 = (uint16_t)thresh << (bd - 8);
- hev |= (abs(p1 - p0) > thresh16) * -1;
- hev |= (abs(q1 - q0) > thresh16) * -1;
- return hev;
-}
-
-static INLINE void highbd_filter4(int8_t mask, uint8_t thresh, uint16_t *op1,
- uint16_t *op0, uint16_t *oq0, uint16_t *oq1,
- int bd) {
- int16_t filter1, filter2;
- // ^0x80 equivalent to subtracting 0x80 from the values to turn them
- // into -128 to +127 instead of 0 to 255.
- int shift = bd - 8;
- const int16_t ps1 = (int16_t)*op1 - (0x80 << shift);
- const int16_t ps0 = (int16_t)*op0 - (0x80 << shift);
- const int16_t qs0 = (int16_t)*oq0 - (0x80 << shift);
- const int16_t qs1 = (int16_t)*oq1 - (0x80 << shift);
- const uint16_t hev = highbd_hev_mask(thresh, *op1, *op0, *oq0, *oq1, bd);
-
- // Add outer taps if we have high edge variance.
- int16_t filter = signed_char_clamp_high(ps1 - qs1, bd) & hev;
-
- // Inner taps.
- filter = signed_char_clamp_high(filter + 3 * (qs0 - ps0), bd) & mask;
-
- // Save bottom 3 bits so that we round one side +4 and the other +3
- // if it equals 4 we'll set to adjust by -1 to account for the fact
- // we'd round 3 the other way.
- filter1 = signed_char_clamp_high(filter + 4, bd) >> 3;
- filter2 = signed_char_clamp_high(filter + 3, bd) >> 3;
-
- *oq0 = signed_char_clamp_high(qs0 - filter1, bd) + (0x80 << shift);
- *op0 = signed_char_clamp_high(ps0 + filter2, bd) + (0x80 << shift);
-
- // Outer tap adjustments.
- filter = ROUND_POWER_OF_TWO(filter1, 1) & ~hev;
-
- *oq1 = signed_char_clamp_high(qs1 - filter, bd) + (0x80 << shift);
- *op1 = signed_char_clamp_high(ps1 + filter, bd) + (0x80 << shift);
-}
-
-void vpx_highbd_lpf_horizontal_4_c(uint16_t *s, int p /* pitch */,
- const uint8_t *blimit, const uint8_t *limit,
- const uint8_t *thresh, int bd) {
- int i;
-
- // loop filter designed to work using chars so that we can make maximum use
- // of 8 bit simd instructions.
- for (i = 0; i < 8; ++i) {
- const uint16_t p3 = s[-4 * p];
- const uint16_t p2 = s[-3 * p];
- const uint16_t p1 = s[-2 * p];
- const uint16_t p0 = s[-p];
- const uint16_t q0 = s[0 * p];
- const uint16_t q1 = s[1 * p];
- const uint16_t q2 = s[2 * p];
- const uint16_t q3 = s[3 * p];
- const int8_t mask = highbd_filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3, bd);
- highbd_filter4(mask, *thresh, s - 2 * p, s - 1 * p, s, s + 1 * p, bd);
- ++s;
- }
-}
-
-void vpx_highbd_lpf_horizontal_4_dual_c(uint16_t *s, int p,
- const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1,
- int bd) {
- vpx_highbd_lpf_horizontal_4_c(s, p, blimit0, limit0, thresh0, bd);
- vpx_highbd_lpf_horizontal_4_c(s + 8, p, blimit1, limit1, thresh1, bd);
-}
-
-void vpx_highbd_lpf_vertical_4_c(uint16_t *s, int pitch, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh,
- int bd) {
- int i;
-
- // loop filter designed to work using chars so that we can make maximum use
- // of 8 bit simd instructions.
- for (i = 0; i < 8; ++i) {
- const uint16_t p3 = s[-4], p2 = s[-3], p1 = s[-2], p0 = s[-1];
- const uint16_t q0 = s[0], q1 = s[1], q2 = s[2], q3 = s[3];
- const int8_t mask = highbd_filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3, bd);
- highbd_filter4(mask, *thresh, s - 2, s - 1, s, s + 1, bd);
- s += pitch;
- }
-}
-
-void vpx_highbd_lpf_vertical_4_dual_c(uint16_t *s, int pitch,
- const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1,
- int bd) {
- vpx_highbd_lpf_vertical_4_c(s, pitch, blimit0, limit0, thresh0, bd);
- vpx_highbd_lpf_vertical_4_c(s + 8 * pitch, pitch, blimit1, limit1,
- thresh1, bd);
-}
-
-static INLINE void highbd_filter8(int8_t mask, uint8_t thresh, uint8_t flat,
- uint16_t *op3, uint16_t *op2,
- uint16_t *op1, uint16_t *op0,
- uint16_t *oq0, uint16_t *oq1,
- uint16_t *oq2, uint16_t *oq3, int bd) {
- if (flat && mask) {
- const uint16_t p3 = *op3, p2 = *op2, p1 = *op1, p0 = *op0;
- const uint16_t q0 = *oq0, q1 = *oq1, q2 = *oq2, q3 = *oq3;
-
- // 7-tap filter [1, 1, 1, 2, 1, 1, 1]
- *op2 = ROUND_POWER_OF_TWO(p3 + p3 + p3 + 2 * p2 + p1 + p0 + q0, 3);
- *op1 = ROUND_POWER_OF_TWO(p3 + p3 + p2 + 2 * p1 + p0 + q0 + q1, 3);
- *op0 = ROUND_POWER_OF_TWO(p3 + p2 + p1 + 2 * p0 + q0 + q1 + q2, 3);
- *oq0 = ROUND_POWER_OF_TWO(p2 + p1 + p0 + 2 * q0 + q1 + q2 + q3, 3);
- *oq1 = ROUND_POWER_OF_TWO(p1 + p0 + q0 + 2 * q1 + q2 + q3 + q3, 3);
- *oq2 = ROUND_POWER_OF_TWO(p0 + q0 + q1 + 2 * q2 + q3 + q3 + q3, 3);
- } else {
- highbd_filter4(mask, thresh, op1, op0, oq0, oq1, bd);
- }
-}
-
-void vpx_highbd_lpf_horizontal_8_c(uint16_t *s, int p, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh,
- int bd) {
- int i;
-
- // loop filter designed to work using chars so that we can make maximum use
- // of 8 bit simd instructions.
- for (i = 0; i < 8; ++i) {
- const uint16_t p3 = s[-4 * p], p2 = s[-3 * p], p1 = s[-2 * p], p0 = s[-p];
- const uint16_t q0 = s[0 * p], q1 = s[1 * p], q2 = s[2 * p], q3 = s[3 * p];
-
- const int8_t mask = highbd_filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3, bd);
- const int8_t flat = highbd_flat_mask4(1, p3, p2, p1, p0, q0, q1, q2, q3,
- bd);
- highbd_filter8(mask, *thresh, flat,
- s - 4 * p, s - 3 * p, s - 2 * p, s - 1 * p,
- s, s + 1 * p, s + 2 * p, s + 3 * p, bd);
- ++s;
- }
-}
-
-void vpx_highbd_lpf_horizontal_8_dual_c(uint16_t *s, int p,
- const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1,
- int bd) {
- vpx_highbd_lpf_horizontal_8_c(s, p, blimit0, limit0, thresh0, bd);
- vpx_highbd_lpf_horizontal_8_c(s + 8, p, blimit1, limit1, thresh1, bd);
-}
-
-void vpx_highbd_lpf_vertical_8_c(uint16_t *s, int pitch, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh,
- int bd) {
- int i;
-
- for (i = 0; i < 8; ++i) {
- const uint16_t p3 = s[-4], p2 = s[-3], p1 = s[-2], p0 = s[-1];
- const uint16_t q0 = s[0], q1 = s[1], q2 = s[2], q3 = s[3];
- const int8_t mask = highbd_filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3, bd);
- const int8_t flat = highbd_flat_mask4(1, p3, p2, p1, p0, q0, q1, q2, q3,
- bd);
- highbd_filter8(mask, *thresh, flat,
- s - 4, s - 3, s - 2, s - 1,
- s, s + 1, s + 2, s + 3,
- bd);
- s += pitch;
- }
-}
-
-void vpx_highbd_lpf_vertical_8_dual_c(uint16_t *s, int pitch,
- const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1,
- int bd) {
- vpx_highbd_lpf_vertical_8_c(s, pitch, blimit0, limit0, thresh0, bd);
- vpx_highbd_lpf_vertical_8_c(s + 8 * pitch, pitch, blimit1, limit1,
- thresh1, bd);
-}
-
-static INLINE void highbd_filter16(int8_t mask, uint8_t thresh,
- uint8_t flat, uint8_t flat2,
- uint16_t *op7, uint16_t *op6,
- uint16_t *op5, uint16_t *op4,
- uint16_t *op3, uint16_t *op2,
- uint16_t *op1, uint16_t *op0,
- uint16_t *oq0, uint16_t *oq1,
- uint16_t *oq2, uint16_t *oq3,
- uint16_t *oq4, uint16_t *oq5,
- uint16_t *oq6, uint16_t *oq7, int bd) {
- if (flat2 && flat && mask) {
- const uint16_t p7 = *op7;
- const uint16_t p6 = *op6;
- const uint16_t p5 = *op5;
- const uint16_t p4 = *op4;
- const uint16_t p3 = *op3;
- const uint16_t p2 = *op2;
- const uint16_t p1 = *op1;
- const uint16_t p0 = *op0;
- const uint16_t q0 = *oq0;
- const uint16_t q1 = *oq1;
- const uint16_t q2 = *oq2;
- const uint16_t q3 = *oq3;
- const uint16_t q4 = *oq4;
- const uint16_t q5 = *oq5;
- const uint16_t q6 = *oq6;
- const uint16_t q7 = *oq7;
-
- // 15-tap filter [1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1]
- *op6 = ROUND_POWER_OF_TWO(p7 * 7 + p6 * 2 + p5 + p4 + p3 + p2 + p1 + p0 +
- q0, 4);
- *op5 = ROUND_POWER_OF_TWO(p7 * 6 + p6 + p5 * 2 + p4 + p3 + p2 + p1 + p0 +
- q0 + q1, 4);
- *op4 = ROUND_POWER_OF_TWO(p7 * 5 + p6 + p5 + p4 * 2 + p3 + p2 + p1 + p0 +
- q0 + q1 + q2, 4);
- *op3 = ROUND_POWER_OF_TWO(p7 * 4 + p6 + p5 + p4 + p3 * 2 + p2 + p1 + p0 +
- q0 + q1 + q2 + q3, 4);
- *op2 = ROUND_POWER_OF_TWO(p7 * 3 + p6 + p5 + p4 + p3 + p2 * 2 + p1 + p0 +
- q0 + q1 + q2 + q3 + q4, 4);
- *op1 = ROUND_POWER_OF_TWO(p7 * 2 + p6 + p5 + p4 + p3 + p2 + p1 * 2 + p0 +
- q0 + q1 + q2 + q3 + q4 + q5, 4);
- *op0 = ROUND_POWER_OF_TWO(p7 + p6 + p5 + p4 + p3 + p2 + p1 + p0 * 2 +
- q0 + q1 + q2 + q3 + q4 + q5 + q6, 4);
- *oq0 = ROUND_POWER_OF_TWO(p6 + p5 + p4 + p3 + p2 + p1 + p0 +
- q0 * 2 + q1 + q2 + q3 + q4 + q5 + q6 + q7, 4);
- *oq1 = ROUND_POWER_OF_TWO(p5 + p4 + p3 + p2 + p1 + p0 +
- q0 + q1 * 2 + q2 + q3 + q4 + q5 + q6 + q7 * 2, 4);
- *oq2 = ROUND_POWER_OF_TWO(p4 + p3 + p2 + p1 + p0 +
- q0 + q1 + q2 * 2 + q3 + q4 + q5 + q6 + q7 * 3, 4);
- *oq3 = ROUND_POWER_OF_TWO(p3 + p2 + p1 + p0 +
- q0 + q1 + q2 + q3 * 2 + q4 + q5 + q6 + q7 * 4, 4);
- *oq4 = ROUND_POWER_OF_TWO(p2 + p1 + p0 +
- q0 + q1 + q2 + q3 + q4 * 2 + q5 + q6 + q7 * 5, 4);
- *oq5 = ROUND_POWER_OF_TWO(p1 + p0 +
- q0 + q1 + q2 + q3 + q4 + q5 * 2 + q6 + q7 * 6, 4);
- *oq6 = ROUND_POWER_OF_TWO(p0 +
- q0 + q1 + q2 + q3 + q4 + q5 + q6 * 2 + q7 * 7, 4);
- } else {
- highbd_filter8(mask, thresh, flat, op3, op2, op1, op0, oq0, oq1, oq2, oq3,
- bd);
- }
-}
-
-static void highbd_mb_lpf_horizontal_edge_w(uint16_t *s, int p,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh,
- int count, int bd) {
- int i;
-
- // loop filter designed to work using chars so that we can make maximum use
- // of 8 bit simd instructions.
- for (i = 0; i < 8 * count; ++i) {
- const uint16_t p3 = s[-4 * p];
- const uint16_t p2 = s[-3 * p];
- const uint16_t p1 = s[-2 * p];
- const uint16_t p0 = s[-p];
- const uint16_t q0 = s[0 * p];
- const uint16_t q1 = s[1 * p];
- const uint16_t q2 = s[2 * p];
- const uint16_t q3 = s[3 * p];
- const int8_t mask = highbd_filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3, bd);
- const int8_t flat = highbd_flat_mask4(1, p3, p2, p1, p0, q0, q1, q2, q3,
- bd);
- const int8_t flat2 = highbd_flat_mask5(
- 1, s[-8 * p], s[-7 * p], s[-6 * p], s[-5 * p], p0,
- q0, s[4 * p], s[5 * p], s[6 * p], s[7 * p], bd);
-
- highbd_filter16(mask, *thresh, flat, flat2,
- s - 8 * p, s - 7 * p, s - 6 * p, s - 5 * p,
- s - 4 * p, s - 3 * p, s - 2 * p, s - 1 * p,
- s, s + 1 * p, s + 2 * p, s + 3 * p,
- s + 4 * p, s + 5 * p, s + 6 * p, s + 7 * p,
- bd);
- ++s;
- }
-}
-
-void vpx_highbd_lpf_horizontal_edge_8_c(uint16_t *s, int p,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh, int bd) {
- highbd_mb_lpf_horizontal_edge_w(s, p, blimit, limit, thresh, 1, bd);
-}
-
-void vpx_highbd_lpf_horizontal_edge_16_c(uint16_t *s, int p,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh, int bd) {
- highbd_mb_lpf_horizontal_edge_w(s, p, blimit, limit, thresh, 2, bd);
-}
-
-static void highbd_mb_lpf_vertical_edge_w(uint16_t *s, int p,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh,
- int count, int bd) {
- int i;
-
- for (i = 0; i < count; ++i) {
- const uint16_t p3 = s[-4];
- const uint16_t p2 = s[-3];
- const uint16_t p1 = s[-2];
- const uint16_t p0 = s[-1];
- const uint16_t q0 = s[0];
- const uint16_t q1 = s[1];
- const uint16_t q2 = s[2];
- const uint16_t q3 = s[3];
- const int8_t mask = highbd_filter_mask(*limit, *blimit,
- p3, p2, p1, p0, q0, q1, q2, q3, bd);
- const int8_t flat = highbd_flat_mask4(1, p3, p2, p1, p0, q0, q1, q2, q3,
- bd);
- const int8_t flat2 = highbd_flat_mask5(1, s[-8], s[-7], s[-6], s[-5], p0,
- q0, s[4], s[5], s[6], s[7], bd);
-
- highbd_filter16(mask, *thresh, flat, flat2,
- s - 8, s - 7, s - 6, s - 5, s - 4, s - 3, s - 2, s - 1,
- s, s + 1, s + 2, s + 3, s + 4, s + 5, s + 6, s + 7,
- bd);
- s += p;
- }
-}
-
-void vpx_highbd_lpf_vertical_16_c(uint16_t *s, int p, const uint8_t *blimit,
- const uint8_t *limit, const uint8_t *thresh,
- int bd) {
- highbd_mb_lpf_vertical_edge_w(s, p, blimit, limit, thresh, 8, bd);
-}
-
-void vpx_highbd_lpf_vertical_16_dual_c(uint16_t *s, int p,
- const uint8_t *blimit,
- const uint8_t *limit,
- const uint8_t *thresh,
- int bd) {
- highbd_mb_lpf_vertical_edge_w(s, p, blimit, limit, thresh, 16, bd);
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
diff --git a/thirdparty/libvpx/vpx_dsp/prob.c b/thirdparty/libvpx/vpx_dsp/prob.c
deleted file mode 100644
index 639d24dd2f..0000000000
--- a/thirdparty/libvpx/vpx_dsp/prob.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./prob.h"
-
-const uint8_t vpx_norm[256] = {
- 0, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static unsigned int tree_merge_probs_impl(unsigned int i,
- const vpx_tree_index *tree,
- const vpx_prob *pre_probs,
- const unsigned int *counts,
- vpx_prob *probs) {
- const int l = tree[i];
- const unsigned int left_count = (l <= 0)
- ? counts[-l]
- : tree_merge_probs_impl(l, tree, pre_probs, counts, probs);
- const int r = tree[i + 1];
- const unsigned int right_count = (r <= 0)
- ? counts[-r]
- : tree_merge_probs_impl(r, tree, pre_probs, counts, probs);
- const unsigned int ct[2] = { left_count, right_count };
- probs[i >> 1] = mode_mv_merge_probs(pre_probs[i >> 1], ct);
- return left_count + right_count;
-}
-
-void vpx_tree_merge_probs(const vpx_tree_index *tree, const vpx_prob *pre_probs,
- const unsigned int *counts, vpx_prob *probs) {
- tree_merge_probs_impl(0, tree, pre_probs, counts, probs);
-}
diff --git a/thirdparty/libvpx/vpx_dsp/prob.h b/thirdparty/libvpx/vpx_dsp/prob.h
deleted file mode 100644
index c3cb103ffb..0000000000
--- a/thirdparty/libvpx/vpx_dsp/prob.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_PROB_H_
-#define VPX_DSP_PROB_H_
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_common.h"
-
-#include "vpx_ports/mem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef uint8_t vpx_prob;
-
-#define MAX_PROB 255
-
-#define vpx_prob_half ((vpx_prob) 128)
-
-typedef int8_t vpx_tree_index;
-
-#define TREE_SIZE(leaf_count) (2 * (leaf_count) - 2)
-
-#define vpx_complement(x) (255 - x)
-
-#define MODE_MV_COUNT_SAT 20
-
-/* We build coding trees compactly in arrays.
- Each node of the tree is a pair of vpx_tree_indices.
- Array index often references a corresponding probability table.
- Index <= 0 means done encoding/decoding and value = -Index,
- Index > 0 means need another bit, specification at index.
- Nonnegative indices are always even; processing begins at node 0. */
-
-typedef const vpx_tree_index vpx_tree[];
-
-static INLINE vpx_prob clip_prob(int p) {
- return (p > 255) ? 255 : (p < 1) ? 1 : p;
-}
-
-static INLINE vpx_prob get_prob(int num, int den) {
- return (den == 0) ? 128u : clip_prob(((int64_t)num * 256 + (den >> 1)) / den);
-}
-
-static INLINE vpx_prob get_binary_prob(int n0, int n1) {
- return get_prob(n0, n0 + n1);
-}
-
-/* This function assumes prob1 and prob2 are already within [1,255] range. */
-static INLINE vpx_prob weighted_prob(int prob1, int prob2, int factor) {
- return ROUND_POWER_OF_TWO(prob1 * (256 - factor) + prob2 * factor, 8);
-}
-
-static INLINE vpx_prob merge_probs(vpx_prob pre_prob,
- const unsigned int ct[2],
- unsigned int count_sat,
- unsigned int max_update_factor) {
- const vpx_prob prob = get_binary_prob(ct[0], ct[1]);
- const unsigned int count = VPXMIN(ct[0] + ct[1], count_sat);
- const unsigned int factor = max_update_factor * count / count_sat;
- return weighted_prob(pre_prob, prob, factor);
-}
-
-// MODE_MV_MAX_UPDATE_FACTOR (128) * count / MODE_MV_COUNT_SAT;
-static const int count_to_update_factor[MODE_MV_COUNT_SAT + 1] = {
- 0, 6, 12, 19, 25, 32, 38, 44, 51, 57, 64,
- 70, 76, 83, 89, 96, 102, 108, 115, 121, 128
-};
-
-static INLINE vpx_prob mode_mv_merge_probs(vpx_prob pre_prob,
- const unsigned int ct[2]) {
- const unsigned int den = ct[0] + ct[1];
- if (den == 0) {
- return pre_prob;
- } else {
- const unsigned int count = VPXMIN(den, MODE_MV_COUNT_SAT);
- const unsigned int factor = count_to_update_factor[count];
- const vpx_prob prob =
- clip_prob(((int64_t)(ct[0]) * 256 + (den >> 1)) / den);
- return weighted_prob(pre_prob, prob, factor);
- }
-}
-
-void vpx_tree_merge_probs(const vpx_tree_index *tree, const vpx_prob *pre_probs,
- const unsigned int *counts, vpx_prob *probs);
-
-
-DECLARE_ALIGNED(16, extern const uint8_t, vpx_norm[256]);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_DSP_PROB_H_
diff --git a/thirdparty/libvpx/vpx_dsp/txfm_common.h b/thirdparty/libvpx/vpx_dsp/txfm_common.h
deleted file mode 100644
index 442e6a57b5..0000000000
--- a/thirdparty/libvpx/vpx_dsp/txfm_common.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_TXFM_COMMON_H_
-#define VPX_DSP_TXFM_COMMON_H_
-
-#include "vpx_dsp/vpx_dsp_common.h"
-
-// Constants and Macros used by all idct/dct functions
-#define DCT_CONST_BITS 14
-#define DCT_CONST_ROUNDING (1 << (DCT_CONST_BITS - 1))
-
-#define UNIT_QUANT_SHIFT 2
-#define UNIT_QUANT_FACTOR (1 << UNIT_QUANT_SHIFT)
-
-// Constants:
-// for (int i = 1; i< 32; ++i)
-// printf("static const int cospi_%d_64 = %.0f;\n", i,
-// round(16384 * cos(i*M_PI/64)));
-// Note: sin(k*Pi/64) = cos((32-k)*Pi/64)
-static const tran_high_t cospi_1_64 = 16364;
-static const tran_high_t cospi_2_64 = 16305;
-static const tran_high_t cospi_3_64 = 16207;
-static const tran_high_t cospi_4_64 = 16069;
-static const tran_high_t cospi_5_64 = 15893;
-static const tran_high_t cospi_6_64 = 15679;
-static const tran_high_t cospi_7_64 = 15426;
-static const tran_high_t cospi_8_64 = 15137;
-static const tran_high_t cospi_9_64 = 14811;
-static const tran_high_t cospi_10_64 = 14449;
-static const tran_high_t cospi_11_64 = 14053;
-static const tran_high_t cospi_12_64 = 13623;
-static const tran_high_t cospi_13_64 = 13160;
-static const tran_high_t cospi_14_64 = 12665;
-static const tran_high_t cospi_15_64 = 12140;
-static const tran_high_t cospi_16_64 = 11585;
-static const tran_high_t cospi_17_64 = 11003;
-static const tran_high_t cospi_18_64 = 10394;
-static const tran_high_t cospi_19_64 = 9760;
-static const tran_high_t cospi_20_64 = 9102;
-static const tran_high_t cospi_21_64 = 8423;
-static const tran_high_t cospi_22_64 = 7723;
-static const tran_high_t cospi_23_64 = 7005;
-static const tran_high_t cospi_24_64 = 6270;
-static const tran_high_t cospi_25_64 = 5520;
-static const tran_high_t cospi_26_64 = 4756;
-static const tran_high_t cospi_27_64 = 3981;
-static const tran_high_t cospi_28_64 = 3196;
-static const tran_high_t cospi_29_64 = 2404;
-static const tran_high_t cospi_30_64 = 1606;
-static const tran_high_t cospi_31_64 = 804;
-
-// 16384 * sqrt(2) * sin(kPi/9) * 2 / 3
-static const tran_high_t sinpi_1_9 = 5283;
-static const tran_high_t sinpi_2_9 = 9929;
-static const tran_high_t sinpi_3_9 = 13377;
-static const tran_high_t sinpi_4_9 = 15212;
-
-#endif // VPX_DSP_TXFM_COMMON_H_
diff --git a/thirdparty/libvpx/vpx_dsp/vpx_convolve.c b/thirdparty/libvpx/vpx_dsp/vpx_convolve.c
deleted file mode 100644
index 2d1c927cbe..0000000000
--- a/thirdparty/libvpx/vpx_dsp/vpx_convolve.c
+++ /dev/null
@@ -1,612 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-#include <string.h>
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
-
-static void convolve_horiz(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *x_filters,
- int x0_q4, int x_step_q4, int w, int h) {
- int x, y;
- src -= SUBPEL_TAPS / 2 - 1;
- for (y = 0; y < h; ++y) {
- int x_q4 = x0_q4;
- for (x = 0; x < w; ++x) {
- const uint8_t *const src_x = &src[x_q4 >> SUBPEL_BITS];
- const int16_t *const x_filter = x_filters[x_q4 & SUBPEL_MASK];
- int k, sum = 0;
- for (k = 0; k < SUBPEL_TAPS; ++k)
- sum += src_x[k] * x_filter[k];
- dst[x] = clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS));
- x_q4 += x_step_q4;
- }
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-static void convolve_avg_horiz(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *x_filters,
- int x0_q4, int x_step_q4, int w, int h) {
- int x, y;
- src -= SUBPEL_TAPS / 2 - 1;
- for (y = 0; y < h; ++y) {
- int x_q4 = x0_q4;
- for (x = 0; x < w; ++x) {
- const uint8_t *const src_x = &src[x_q4 >> SUBPEL_BITS];
- const int16_t *const x_filter = x_filters[x_q4 & SUBPEL_MASK];
- int k, sum = 0;
- for (k = 0; k < SUBPEL_TAPS; ++k)
- sum += src_x[k] * x_filter[k];
- dst[x] = ROUND_POWER_OF_TWO(dst[x] +
- clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS)), 1);
- x_q4 += x_step_q4;
- }
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-static void convolve_vert(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *y_filters,
- int y0_q4, int y_step_q4, int w, int h) {
- int x, y;
- src -= src_stride * (SUBPEL_TAPS / 2 - 1);
-
- for (x = 0; x < w; ++x) {
- int y_q4 = y0_q4;
- for (y = 0; y < h; ++y) {
- const unsigned char *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
- const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
- int k, sum = 0;
- for (k = 0; k < SUBPEL_TAPS; ++k)
- sum += src_y[k * src_stride] * y_filter[k];
- dst[y * dst_stride] = clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS));
- y_q4 += y_step_q4;
- }
- ++src;
- ++dst;
- }
-}
-
-static void convolve_avg_vert(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *y_filters,
- int y0_q4, int y_step_q4, int w, int h) {
- int x, y;
- src -= src_stride * (SUBPEL_TAPS / 2 - 1);
-
- for (x = 0; x < w; ++x) {
- int y_q4 = y0_q4;
- for (y = 0; y < h; ++y) {
- const unsigned char *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
- const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
- int k, sum = 0;
- for (k = 0; k < SUBPEL_TAPS; ++k)
- sum += src_y[k * src_stride] * y_filter[k];
- dst[y * dst_stride] = ROUND_POWER_OF_TWO(dst[y * dst_stride] +
- clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS)), 1);
- y_q4 += y_step_q4;
- }
- ++src;
- ++dst;
- }
-}
-
-static void convolve(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *const x_filters,
- int x0_q4, int x_step_q4,
- const InterpKernel *const y_filters,
- int y0_q4, int y_step_q4,
- int w, int h) {
- // Note: Fixed size intermediate buffer, temp, places limits on parameters.
- // 2d filtering proceeds in 2 steps:
- // (1) Interpolate horizontally into an intermediate buffer, temp.
- // (2) Interpolate temp vertically to derive the sub-pixel result.
- // Deriving the maximum number of rows in the temp buffer (135):
- // --Smallest scaling factor is x1/2 ==> y_step_q4 = 32 (Normative).
- // --Largest block size is 64x64 pixels.
- // --64 rows in the downscaled frame span a distance of (64 - 1) * 32 in the
- // original frame (in 1/16th pixel units).
- // --Must round-up because block may be located at sub-pixel position.
- // --Require an additional SUBPEL_TAPS rows for the 8-tap filter tails.
- // --((64 - 1) * 32 + 15) >> 4 + 8 = 135.
- uint8_t temp[135 * 64];
- int intermediate_height =
- (((h - 1) * y_step_q4 + y0_q4) >> SUBPEL_BITS) + SUBPEL_TAPS;
-
- assert(w <= 64);
- assert(h <= 64);
- assert(y_step_q4 <= 32);
- assert(x_step_q4 <= 32);
-
- convolve_horiz(src - src_stride * (SUBPEL_TAPS / 2 - 1), src_stride, temp, 64,
- x_filters, x0_q4, x_step_q4, w, intermediate_height);
- convolve_vert(temp + 64 * (SUBPEL_TAPS / 2 - 1), 64, dst, dst_stride,
- y_filters, y0_q4, y_step_q4, w, h);
-}
-
-static const InterpKernel *get_filter_base(const int16_t *filter) {
- // NOTE: This assumes that the filter table is 256-byte aligned.
- // TODO(agrange) Modify to make independent of table alignment.
- return (const InterpKernel *)(((intptr_t)filter) & ~((intptr_t)0xFF));
-}
-
-static int get_filter_offset(const int16_t *f, const InterpKernel *base) {
- return (int)((const InterpKernel *)(intptr_t)f - base);
-}
-
-void vpx_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- const InterpKernel *const filters_x = get_filter_base(filter_x);
- const int x0_q4 = get_filter_offset(filter_x, filters_x);
-
- (void)filter_y;
- (void)y_step_q4;
-
- convolve_horiz(src, src_stride, dst, dst_stride, filters_x,
- x0_q4, x_step_q4, w, h);
-}
-
-void vpx_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- const InterpKernel *const filters_x = get_filter_base(filter_x);
- const int x0_q4 = get_filter_offset(filter_x, filters_x);
-
- (void)filter_y;
- (void)y_step_q4;
-
- convolve_avg_horiz(src, src_stride, dst, dst_stride, filters_x,
- x0_q4, x_step_q4, w, h);
-}
-
-void vpx_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- const InterpKernel *const filters_y = get_filter_base(filter_y);
- const int y0_q4 = get_filter_offset(filter_y, filters_y);
-
- (void)filter_x;
- (void)x_step_q4;
-
- convolve_vert(src, src_stride, dst, dst_stride, filters_y,
- y0_q4, y_step_q4, w, h);
-}
-
-void vpx_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- const InterpKernel *const filters_y = get_filter_base(filter_y);
- const int y0_q4 = get_filter_offset(filter_y, filters_y);
-
- (void)filter_x;
- (void)x_step_q4;
-
- convolve_avg_vert(src, src_stride, dst, dst_stride, filters_y,
- y0_q4, y_step_q4, w, h);
-}
-
-void vpx_convolve8_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- const InterpKernel *const filters_x = get_filter_base(filter_x);
- const int x0_q4 = get_filter_offset(filter_x, filters_x);
-
- const InterpKernel *const filters_y = get_filter_base(filter_y);
- const int y0_q4 = get_filter_offset(filter_y, filters_y);
-
- convolve(src, src_stride, dst, dst_stride,
- filters_x, x0_q4, x_step_q4,
- filters_y, y0_q4, y_step_q4, w, h);
-}
-
-void vpx_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- /* Fixed size intermediate buffer places limits on parameters. */
- DECLARE_ALIGNED(16, uint8_t, temp[64 * 64]);
- assert(w <= 64);
- assert(h <= 64);
-
- vpx_convolve8_c(src, src_stride, temp, 64,
- filter_x, x_step_q4, filter_y, y_step_q4, w, h);
- vpx_convolve_avg_c(temp, 64, dst, dst_stride, NULL, 0, NULL, 0, w, h);
-}
-
-void vpx_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int filter_x_stride,
- const int16_t *filter_y, int filter_y_stride,
- int w, int h) {
- int r;
-
- (void)filter_x; (void)filter_x_stride;
- (void)filter_y; (void)filter_y_stride;
-
- for (r = h; r > 0; --r) {
- memcpy(dst, src, w);
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-void vpx_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int filter_x_stride,
- const int16_t *filter_y, int filter_y_stride,
- int w, int h) {
- int x, y;
-
- (void)filter_x; (void)filter_x_stride;
- (void)filter_y; (void)filter_y_stride;
-
- for (y = 0; y < h; ++y) {
- for (x = 0; x < w; ++x)
- dst[x] = ROUND_POWER_OF_TWO(dst[x] + src[x], 1);
-
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-void vpx_scaled_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- vpx_convolve8_horiz_c(src, src_stride, dst, dst_stride, filter_x, x_step_q4,
- filter_y, y_step_q4, w, h);
-}
-
-void vpx_scaled_vert_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- vpx_convolve8_vert_c(src, src_stride, dst, dst_stride, filter_x, x_step_q4,
- filter_y, y_step_q4, w, h);
-}
-
-void vpx_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- vpx_convolve8_c(src, src_stride, dst, dst_stride, filter_x, x_step_q4,
- filter_y, y_step_q4, w, h);
-}
-
-void vpx_scaled_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- vpx_convolve8_avg_horiz_c(src, src_stride, dst, dst_stride, filter_x,
- x_step_q4, filter_y, y_step_q4, w, h);
-}
-
-void vpx_scaled_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- vpx_convolve8_avg_vert_c(src, src_stride, dst, dst_stride, filter_x,
- x_step_q4, filter_y, y_step_q4, w, h);
-}
-
-void vpx_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- vpx_convolve8_avg_c(src, src_stride, dst, dst_stride, filter_x, x_step_q4,
- filter_y, y_step_q4, w, h);
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void highbd_convolve_horiz(const uint8_t *src8, ptrdiff_t src_stride,
- uint8_t *dst8, ptrdiff_t dst_stride,
- const InterpKernel *x_filters,
- int x0_q4, int x_step_q4,
- int w, int h, int bd) {
- int x, y;
- uint16_t *src = CONVERT_TO_SHORTPTR(src8);
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
- src -= SUBPEL_TAPS / 2 - 1;
- for (y = 0; y < h; ++y) {
- int x_q4 = x0_q4;
- for (x = 0; x < w; ++x) {
- const uint16_t *const src_x = &src[x_q4 >> SUBPEL_BITS];
- const int16_t *const x_filter = x_filters[x_q4 & SUBPEL_MASK];
- int k, sum = 0;
- for (k = 0; k < SUBPEL_TAPS; ++k)
- sum += src_x[k] * x_filter[k];
- dst[x] = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd);
- x_q4 += x_step_q4;
- }
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-static void highbd_convolve_avg_horiz(const uint8_t *src8, ptrdiff_t src_stride,
- uint8_t *dst8, ptrdiff_t dst_stride,
- const InterpKernel *x_filters,
- int x0_q4, int x_step_q4,
- int w, int h, int bd) {
- int x, y;
- uint16_t *src = CONVERT_TO_SHORTPTR(src8);
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
- src -= SUBPEL_TAPS / 2 - 1;
- for (y = 0; y < h; ++y) {
- int x_q4 = x0_q4;
- for (x = 0; x < w; ++x) {
- const uint16_t *const src_x = &src[x_q4 >> SUBPEL_BITS];
- const int16_t *const x_filter = x_filters[x_q4 & SUBPEL_MASK];
- int k, sum = 0;
- for (k = 0; k < SUBPEL_TAPS; ++k)
- sum += src_x[k] * x_filter[k];
- dst[x] = ROUND_POWER_OF_TWO(dst[x] +
- clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd), 1);
- x_q4 += x_step_q4;
- }
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-static void highbd_convolve_vert(const uint8_t *src8, ptrdiff_t src_stride,
- uint8_t *dst8, ptrdiff_t dst_stride,
- const InterpKernel *y_filters,
- int y0_q4, int y_step_q4, int w, int h,
- int bd) {
- int x, y;
- uint16_t *src = CONVERT_TO_SHORTPTR(src8);
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
- src -= src_stride * (SUBPEL_TAPS / 2 - 1);
- for (x = 0; x < w; ++x) {
- int y_q4 = y0_q4;
- for (y = 0; y < h; ++y) {
- const uint16_t *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
- const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
- int k, sum = 0;
- for (k = 0; k < SUBPEL_TAPS; ++k)
- sum += src_y[k * src_stride] * y_filter[k];
- dst[y * dst_stride] = clip_pixel_highbd(
- ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd);
- y_q4 += y_step_q4;
- }
- ++src;
- ++dst;
- }
-}
-
-static void highbd_convolve_avg_vert(const uint8_t *src8, ptrdiff_t src_stride,
- uint8_t *dst8, ptrdiff_t dst_stride,
- const InterpKernel *y_filters,
- int y0_q4, int y_step_q4, int w, int h,
- int bd) {
- int x, y;
- uint16_t *src = CONVERT_TO_SHORTPTR(src8);
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
- src -= src_stride * (SUBPEL_TAPS / 2 - 1);
- for (x = 0; x < w; ++x) {
- int y_q4 = y0_q4;
- for (y = 0; y < h; ++y) {
- const uint16_t *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
- const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
- int k, sum = 0;
- for (k = 0; k < SUBPEL_TAPS; ++k)
- sum += src_y[k * src_stride] * y_filter[k];
- dst[y * dst_stride] = ROUND_POWER_OF_TWO(dst[y * dst_stride] +
- clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd), 1);
- y_q4 += y_step_q4;
- }
- ++src;
- ++dst;
- }
-}
-
-static void highbd_convolve(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *const x_filters,
- int x0_q4, int x_step_q4,
- const InterpKernel *const y_filters,
- int y0_q4, int y_step_q4,
- int w, int h, int bd) {
- // Note: Fixed size intermediate buffer, temp, places limits on parameters.
- // 2d filtering proceeds in 2 steps:
- // (1) Interpolate horizontally into an intermediate buffer, temp.
- // (2) Interpolate temp vertically to derive the sub-pixel result.
- // Deriving the maximum number of rows in the temp buffer (135):
- // --Smallest scaling factor is x1/2 ==> y_step_q4 = 32 (Normative).
- // --Largest block size is 64x64 pixels.
- // --64 rows in the downscaled frame span a distance of (64 - 1) * 32 in the
- // original frame (in 1/16th pixel units).
- // --Must round-up because block may be located at sub-pixel position.
- // --Require an additional SUBPEL_TAPS rows for the 8-tap filter tails.
- // --((64 - 1) * 32 + 15) >> 4 + 8 = 135.
- uint16_t temp[64 * 135];
- int intermediate_height =
- (((h - 1) * y_step_q4 + y0_q4) >> SUBPEL_BITS) + SUBPEL_TAPS;
-
- assert(w <= 64);
- assert(h <= 64);
- assert(y_step_q4 <= 32);
- assert(x_step_q4 <= 32);
-
- highbd_convolve_horiz(src - src_stride * (SUBPEL_TAPS / 2 - 1),
- src_stride, CONVERT_TO_BYTEPTR(temp), 64,
- x_filters, x0_q4, x_step_q4, w,
- intermediate_height, bd);
- highbd_convolve_vert(CONVERT_TO_BYTEPTR(temp) + 64 * (SUBPEL_TAPS / 2 - 1),
- 64, dst, dst_stride, y_filters, y0_q4, y_step_q4,
- w, h, bd);
-}
-
-
-void vpx_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h, int bd) {
- const InterpKernel *const filters_x = get_filter_base(filter_x);
- const int x0_q4 = get_filter_offset(filter_x, filters_x);
- (void)filter_y;
- (void)y_step_q4;
-
- highbd_convolve_horiz(src, src_stride, dst, dst_stride, filters_x,
- x0_q4, x_step_q4, w, h, bd);
-}
-
-void vpx_highbd_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h, int bd) {
- const InterpKernel *const filters_x = get_filter_base(filter_x);
- const int x0_q4 = get_filter_offset(filter_x, filters_x);
- (void)filter_y;
- (void)y_step_q4;
-
- highbd_convolve_avg_horiz(src, src_stride, dst, dst_stride, filters_x,
- x0_q4, x_step_q4, w, h, bd);
-}
-
-void vpx_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h, int bd) {
- const InterpKernel *const filters_y = get_filter_base(filter_y);
- const int y0_q4 = get_filter_offset(filter_y, filters_y);
- (void)filter_x;
- (void)x_step_q4;
-
- highbd_convolve_vert(src, src_stride, dst, dst_stride, filters_y,
- y0_q4, y_step_q4, w, h, bd);
-}
-
-void vpx_highbd_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h, int bd) {
- const InterpKernel *const filters_y = get_filter_base(filter_y);
- const int y0_q4 = get_filter_offset(filter_y, filters_y);
- (void)filter_x;
- (void)x_step_q4;
-
- highbd_convolve_avg_vert(src, src_stride, dst, dst_stride, filters_y,
- y0_q4, y_step_q4, w, h, bd);
-}
-
-void vpx_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h, int bd) {
- const InterpKernel *const filters_x = get_filter_base(filter_x);
- const int x0_q4 = get_filter_offset(filter_x, filters_x);
-
- const InterpKernel *const filters_y = get_filter_base(filter_y);
- const int y0_q4 = get_filter_offset(filter_y, filters_y);
-
- highbd_convolve(src, src_stride, dst, dst_stride,
- filters_x, x0_q4, x_step_q4,
- filters_y, y0_q4, y_step_q4, w, h, bd);
-}
-
-void vpx_highbd_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h, int bd) {
- // Fixed size intermediate buffer places limits on parameters.
- DECLARE_ALIGNED(16, uint16_t, temp[64 * 64]);
- assert(w <= 64);
- assert(h <= 64);
-
- vpx_highbd_convolve8_c(src, src_stride, CONVERT_TO_BYTEPTR(temp), 64,
- filter_x, x_step_q4, filter_y, y_step_q4, w, h, bd);
- vpx_highbd_convolve_avg_c(CONVERT_TO_BYTEPTR(temp), 64, dst, dst_stride,
- NULL, 0, NULL, 0, w, h, bd);
-}
-
-void vpx_highbd_convolve_copy_c(const uint8_t *src8, ptrdiff_t src_stride,
- uint8_t *dst8, ptrdiff_t dst_stride,
- const int16_t *filter_x, int filter_x_stride,
- const int16_t *filter_y, int filter_y_stride,
- int w, int h, int bd) {
- int r;
- uint16_t *src = CONVERT_TO_SHORTPTR(src8);
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
- (void)filter_x;
- (void)filter_y;
- (void)filter_x_stride;
- (void)filter_y_stride;
- (void)bd;
-
- for (r = h; r > 0; --r) {
- memcpy(dst, src, w * sizeof(uint16_t));
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-void vpx_highbd_convolve_avg_c(const uint8_t *src8, ptrdiff_t src_stride,
- uint8_t *dst8, ptrdiff_t dst_stride,
- const int16_t *filter_x, int filter_x_stride,
- const int16_t *filter_y, int filter_y_stride,
- int w, int h, int bd) {
- int x, y;
- uint16_t *src = CONVERT_TO_SHORTPTR(src8);
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
- (void)filter_x;
- (void)filter_y;
- (void)filter_x_stride;
- (void)filter_y_stride;
- (void)bd;
-
- for (y = 0; y < h; ++y) {
- for (x = 0; x < w; ++x) {
- dst[x] = ROUND_POWER_OF_TWO(dst[x] + src[x], 1);
- }
- src += src_stride;
- dst += dst_stride;
- }
-}
-#endif
diff --git a/thirdparty/libvpx/vpx_dsp/vpx_convolve.h b/thirdparty/libvpx/vpx_dsp/vpx_convolve.h
deleted file mode 100644
index 9ed3f1750f..0000000000
--- a/thirdparty/libvpx/vpx_dsp/vpx_convolve.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef VPX_DSP_VPX_CONVOLVE_H_
-#define VPX_DSP_VPX_CONVOLVE_H_
-
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void (*convolve_fn_t)(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h);
-
-#if CONFIG_VP9_HIGHBITDEPTH
-typedef void (*highbd_convolve_fn_t)(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h, int bd);
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_DSP_VPX_CONVOLVE_H_
diff --git a/thirdparty/libvpx/vpx_dsp/vpx_dsp_common.h b/thirdparty/libvpx/vpx_dsp/vpx_dsp_common.h
deleted file mode 100644
index a1d0a51ef5..0000000000
--- a/thirdparty/libvpx/vpx_dsp/vpx_dsp_common.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_VPX_DSP_COMMON_H_
-#define VPX_DSP_VPX_DSP_COMMON_H_
-
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define VPXMIN(x, y) (((x) < (y)) ? (x) : (y))
-#define VPXMAX(x, y) (((x) > (y)) ? (x) : (y))
-
-#if CONFIG_VP9_HIGHBITDEPTH
-// Note:
-// tran_low_t is the datatype used for final transform coefficients.
-// tran_high_t is the datatype used for intermediate transform stages.
-typedef int64_t tran_high_t;
-typedef int32_t tran_low_t;
-#else
-// Note:
-// tran_low_t is the datatype used for final transform coefficients.
-// tran_high_t is the datatype used for intermediate transform stages.
-typedef int32_t tran_high_t;
-typedef int16_t tran_low_t;
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-static INLINE uint8_t clip_pixel(int val) {
- return (val > 255) ? 255 : (val < 0) ? 0 : val;
-}
-
-static INLINE int clamp(int value, int low, int high) {
- return value < low ? low : (value > high ? high : value);
-}
-
-static INLINE double fclamp(double value, double low, double high) {
- return value < low ? low : (value > high ? high : value);
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static INLINE uint16_t clip_pixel_highbd(int val, int bd) {
- switch (bd) {
- case 8:
- default:
- return (uint16_t)clamp(val, 0, 255);
- case 10:
- return (uint16_t)clamp(val, 0, 1023);
- case 12:
- return (uint16_t)clamp(val, 0, 4095);
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_DSP_VPX_DSP_COMMON_H_
diff --git a/thirdparty/libvpx/vpx_dsp/vpx_dsp_rtcd.c b/thirdparty/libvpx/vpx_dsp/vpx_dsp_rtcd.c
deleted file mode 100644
index 5fe27b614b..0000000000
--- a/thirdparty/libvpx/vpx_dsp/vpx_dsp_rtcd.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#include "./vpx_config.h"
-#define RTCD_C
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/vpx_once.h"
-
-void vpx_dsp_rtcd() {
- once(setup_rtcd_internal);
-}
diff --git a/thirdparty/libvpx/vpx_dsp/vpx_filter.h b/thirdparty/libvpx/vpx_dsp/vpx_filter.h
deleted file mode 100644
index 2617febf3b..0000000000
--- a/thirdparty/libvpx/vpx_dsp/vpx_filter.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_VPX_FILTER_H_
-#define VPX_DSP_VPX_FILTER_H_
-
-#include "vpx/vpx_integer.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define FILTER_BITS 7
-
-#define SUBPEL_BITS 4
-#define SUBPEL_MASK ((1 << SUBPEL_BITS) - 1)
-#define SUBPEL_SHIFTS (1 << SUBPEL_BITS)
-#define SUBPEL_TAPS 8
-
-typedef int16_t InterpKernel[SUBPEL_TAPS];
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_DSP_VPX_FILTER_H_
diff --git a/thirdparty/libvpx/vpx_dsp/x86/convolve.h b/thirdparty/libvpx/vpx_dsp/x86/convolve.h
deleted file mode 100644
index 7e43eb7c72..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/convolve.h
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef VPX_DSP_X86_CONVOLVE_H_
-#define VPX_DSP_X86_CONVOLVE_H_
-
-#include <assert.h>
-
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-
-typedef void filter8_1dfunction (
- const uint8_t *src_ptr,
- ptrdiff_t src_pitch,
- uint8_t *output_ptr,
- ptrdiff_t out_pitch,
- uint32_t output_height,
- const int16_t *filter
-);
-
-#define FUN_CONV_1D(name, step_q4, filter, dir, src_start, avg, opt) \
- void vpx_convolve8_##name##_##opt(const uint8_t *src, ptrdiff_t src_stride, \
- uint8_t *dst, ptrdiff_t dst_stride, \
- const int16_t *filter_x, int x_step_q4, \
- const int16_t *filter_y, int y_step_q4, \
- int w, int h) { \
- assert(filter[3] != 128); \
- assert(step_q4 == 16); \
- if (filter[0] | filter[1] | filter[2]) { \
- while (w >= 16) { \
- vpx_filter_block1d16_##dir##8_##avg##opt(src_start, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter); \
- src += 16; \
- dst += 16; \
- w -= 16; \
- } \
- if (w == 8) { \
- vpx_filter_block1d8_##dir##8_##avg##opt(src_start, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter); \
- } else if (w == 4) { \
- vpx_filter_block1d4_##dir##8_##avg##opt(src_start, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter); \
- } \
- } else { \
- while (w >= 16) { \
- vpx_filter_block1d16_##dir##2_##avg##opt(src, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter); \
- src += 16; \
- dst += 16; \
- w -= 16; \
- } \
- if (w == 8) { \
- vpx_filter_block1d8_##dir##2_##avg##opt(src, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter); \
- } else if (w == 4) { \
- vpx_filter_block1d4_##dir##2_##avg##opt(src, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter); \
- } \
- } \
-}
-
-#define FUN_CONV_2D(avg, opt) \
-void vpx_convolve8_##avg##opt(const uint8_t *src, ptrdiff_t src_stride, \
- uint8_t *dst, ptrdiff_t dst_stride, \
- const int16_t *filter_x, int x_step_q4, \
- const int16_t *filter_y, int y_step_q4, \
- int w, int h) { \
- assert(filter_x[3] != 128); \
- assert(filter_y[3] != 128); \
- assert(w <= 64); \
- assert(h <= 64); \
- assert(x_step_q4 == 16); \
- assert(y_step_q4 == 16); \
- if (filter_x[0] | filter_x[1] | filter_x[2]) { \
- DECLARE_ALIGNED(16, uint8_t, fdata2[64 * 71]); \
- vpx_convolve8_horiz_##opt(src - 3 * src_stride, src_stride, fdata2, 64, \
- filter_x, x_step_q4, filter_y, y_step_q4, \
- w, h + 7); \
- vpx_convolve8_##avg##vert_##opt(fdata2 + 3 * 64, 64, dst, dst_stride, \
- filter_x, x_step_q4, filter_y, \
- y_step_q4, w, h); \
- } else { \
- DECLARE_ALIGNED(16, uint8_t, fdata2[64 * 65]); \
- vpx_convolve8_horiz_##opt(src, src_stride, fdata2, 64, \
- filter_x, x_step_q4, filter_y, y_step_q4, \
- w, h + 1); \
- vpx_convolve8_##avg##vert_##opt(fdata2, 64, dst, dst_stride, \
- filter_x, x_step_q4, filter_y, \
- y_step_q4, w, h); \
- } \
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-
-typedef void highbd_filter8_1dfunction (
- const uint16_t *src_ptr,
- const ptrdiff_t src_pitch,
- uint16_t *output_ptr,
- ptrdiff_t out_pitch,
- unsigned int output_height,
- const int16_t *filter,
- int bd
-);
-
-#define HIGH_FUN_CONV_1D(name, step_q4, filter, dir, src_start, avg, opt) \
- void vpx_highbd_convolve8_##name##_##opt(const uint8_t *src8, \
- ptrdiff_t src_stride, \
- uint8_t *dst8, \
- ptrdiff_t dst_stride, \
- const int16_t *filter_x, \
- int x_step_q4, \
- const int16_t *filter_y, \
- int y_step_q4, \
- int w, int h, int bd) { \
- if (step_q4 == 16 && filter[3] != 128) { \
- uint16_t *src = CONVERT_TO_SHORTPTR(src8); \
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8); \
- if (filter[0] | filter[1] | filter[2]) { \
- while (w >= 16) { \
- vpx_highbd_filter_block1d16_##dir##8_##avg##opt(src_start, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter, \
- bd); \
- src += 16; \
- dst += 16; \
- w -= 16; \
- } \
- while (w >= 8) { \
- vpx_highbd_filter_block1d8_##dir##8_##avg##opt(src_start, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter, \
- bd); \
- src += 8; \
- dst += 8; \
- w -= 8; \
- } \
- while (w >= 4) { \
- vpx_highbd_filter_block1d4_##dir##8_##avg##opt(src_start, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter, \
- bd); \
- src += 4; \
- dst += 4; \
- w -= 4; \
- } \
- } else { \
- while (w >= 16) { \
- vpx_highbd_filter_block1d16_##dir##2_##avg##opt(src, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter, \
- bd); \
- src += 16; \
- dst += 16; \
- w -= 16; \
- } \
- while (w >= 8) { \
- vpx_highbd_filter_block1d8_##dir##2_##avg##opt(src, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter, \
- bd); \
- src += 8; \
- dst += 8; \
- w -= 8; \
- } \
- while (w >= 4) { \
- vpx_highbd_filter_block1d4_##dir##2_##avg##opt(src, \
- src_stride, \
- dst, \
- dst_stride, \
- h, \
- filter, \
- bd); \
- src += 4; \
- dst += 4; \
- w -= 4; \
- } \
- } \
- } \
- if (w) { \
- vpx_highbd_convolve8_##name##_c(src8, src_stride, dst8, dst_stride, \
- filter_x, x_step_q4, filter_y, y_step_q4, \
- w, h, bd); \
- } \
-}
-
-#define HIGH_FUN_CONV_2D(avg, opt) \
-void vpx_highbd_convolve8_##avg##opt(const uint8_t *src, ptrdiff_t src_stride, \
- uint8_t *dst, ptrdiff_t dst_stride, \
- const int16_t *filter_x, int x_step_q4, \
- const int16_t *filter_y, int y_step_q4, \
- int w, int h, int bd) { \
- assert(w <= 64); \
- assert(h <= 64); \
- if (x_step_q4 == 16 && y_step_q4 == 16) { \
- if ((filter_x[0] | filter_x[1] | filter_x[2]) || filter_x[3] == 128) { \
- DECLARE_ALIGNED(16, uint16_t, fdata2[64 * 71]); \
- vpx_highbd_convolve8_horiz_##opt(src - 3 * src_stride, src_stride, \
- CONVERT_TO_BYTEPTR(fdata2), 64, \
- filter_x, x_step_q4, \
- filter_y, y_step_q4, \
- w, h + 7, bd); \
- vpx_highbd_convolve8_##avg##vert_##opt(CONVERT_TO_BYTEPTR(fdata2) + 192, \
- 64, dst, dst_stride, \
- filter_x, x_step_q4, \
- filter_y, y_step_q4, \
- w, h, bd); \
- } else { \
- DECLARE_ALIGNED(16, uint16_t, fdata2[64 * 65]); \
- vpx_highbd_convolve8_horiz_##opt(src, src_stride, \
- CONVERT_TO_BYTEPTR(fdata2), 64, \
- filter_x, x_step_q4, \
- filter_y, y_step_q4, \
- w, h + 1, bd); \
- vpx_highbd_convolve8_##avg##vert_##opt(CONVERT_TO_BYTEPTR(fdata2), 64, \
- dst, dst_stride, \
- filter_x, x_step_q4, \
- filter_y, y_step_q4, \
- w, h, bd); \
- } \
- } else { \
- vpx_highbd_convolve8_##avg##c(src, src_stride, dst, dst_stride, \
- filter_x, x_step_q4, filter_y, y_step_q4, w, \
- h, bd); \
- } \
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-#endif // VPX_DSP_X86_CONVOLVE_H_
diff --git a/thirdparty/libvpx/vpx_dsp/x86/intrapred_sse2.asm b/thirdparty/libvpx/vpx_dsp/x86/intrapred_sse2.asm
deleted file mode 100644
index cd6a6ae982..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/intrapred_sse2.asm
+++ /dev/null
@@ -1,860 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "third_party/x86inc/x86inc.asm"
-
-SECTION_RODATA
-pb_1: times 16 db 1
-pw_4: times 8 dw 4
-pw_8: times 8 dw 8
-pw_16: times 8 dw 16
-pw_32: times 8 dw 32
-dc_128: times 16 db 128
-pw2_4: times 8 dw 2
-pw2_8: times 8 dw 4
-pw2_16: times 8 dw 8
-pw2_32: times 8 dw 16
-
-SECTION .text
-
-; ------------------------------------------
-; input: x, y, z, result
-;
-; trick from pascal
-; (x+2y+z+2)>>2 can be calculated as:
-; result = avg(x,z)
-; result -= xor(x,z) & 1
-; result = avg(result,y)
-; ------------------------------------------
-%macro X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 4
- pavgb %4, %1, %3
- pxor %3, %1
- pand %3, [GLOBAL(pb_1)]
- psubb %4, %3
- pavgb %4, %2
-%endmacro
-
-INIT_XMM sse2
-cglobal d45_predictor_4x4, 3, 4, 4, dst, stride, above, goffset
- GET_GOT goffsetq
-
- movq m0, [aboveq]
- DEFINE_ARGS dst, stride, temp
- psrldq m1, m0, 1
- psrldq m2, m0, 2
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3
-
- ; store 4 lines
- movd [dstq ], m3
- psrlq m3, 8
- movd [dstq+strideq ], m3
- lea dstq, [dstq+strideq*2]
- psrlq m3, 8
- movd [dstq ], m3
- psrlq m3, 8
- movd [dstq+strideq ], m3
- psrlq m0, 56
- movd tempq, m0
- mov [dstq+strideq+3], tempb
-
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal d45_predictor_8x8, 3, 4, 4, dst, stride, above, goffset
- GET_GOT goffsetq
-
- movu m1, [aboveq]
- pslldq m0, m1, 1
- psrldq m2, m1, 1
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3
- punpckhbw m0, m0 ; 7 7
- punpcklwd m0, m0 ; 7 7 7 7
- punpckldq m0, m0 ; 7 7 7 7 7 7 7 7
- punpcklqdq m3, m0 ; -1 0 1 2 3 4 5 6 7 7 7 7 7 7 7 7
-
- ; store 4 lines
- psrldq m3, 1
- movq [dstq ], m3
- psrldq m3, 1
- movq [dstq+strideq ], m3
- psrldq m3, 1
- movq [dstq+strideq*2], m3
- psrldq m3, 1
- movq [dstq+stride3q ], m3
- lea dstq, [dstq+strideq*4]
-
- ; store next 4 lines
- psrldq m3, 1
- movq [dstq ], m3
- psrldq m3, 1
- movq [dstq+strideq ], m3
- psrldq m3, 1
- movq [dstq+strideq*2], m3
- psrldq m3, 1
- movq [dstq+stride3q ], m3
-
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal d207_predictor_4x4, 4, 4, 5, dst, stride, unused, left, goffset
- GET_GOT goffsetq
-
- movd m0, [leftq] ; abcd [byte]
- punpcklbw m4, m0, m0 ; aabb ccdd
- punpcklwd m4, m4 ; aaaa bbbb cccc dddd
- psrldq m4, 12 ; dddd
- punpckldq m0, m4 ; abcd dddd
- psrldq m1, m0, 1 ; bcdd
- psrldq m2, m0, 2 ; cddd
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3 ; a2bc b2cd c3d d
- pavgb m1, m0 ; ab, bc, cd, d [byte]
-
- punpcklbw m1, m3 ; ab, a2bc, bc, b2cd, cd, c3d, d, d
- movd [dstq ], m1
- psrlq m1, 16 ; bc, b2cd, cd, c3d, d, d
- movd [dstq+strideq], m1
-
- lea dstq, [dstq+strideq*2]
- psrlq m1, 16 ; cd, c3d, d, d
- movd [dstq ], m1
- movd [dstq+strideq], m4 ; d, d, d, d
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_predictor_4x4, 4, 5, 3, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- movd m2, [leftq]
- movd m0, [aboveq]
- pxor m1, m1
- punpckldq m0, m2
- psadbw m0, m1
- paddw m0, [GLOBAL(pw_4)]
- psraw m0, 3
- pshuflw m0, m0, 0x0
- packuswb m0, m0
- movd [dstq ], m0
- movd [dstq+strideq], m0
- lea dstq, [dstq+strideq*2]
- movd [dstq ], m0
- movd [dstq+strideq], m0
-
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_left_predictor_4x4, 2, 5, 2, dst, stride, above, left, goffset
- movifnidn leftq, leftmp
- GET_GOT goffsetq
-
- pxor m1, m1
- movd m0, [leftq]
- psadbw m0, m1
- paddw m0, [GLOBAL(pw2_4)]
- psraw m0, 2
- pshuflw m0, m0, 0x0
- packuswb m0, m0
- movd [dstq ], m0
- movd [dstq+strideq], m0
- lea dstq, [dstq+strideq*2]
- movd [dstq ], m0
- movd [dstq+strideq], m0
-
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_top_predictor_4x4, 3, 5, 2, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- movd m0, [aboveq]
- psadbw m0, m1
- paddw m0, [GLOBAL(pw2_4)]
- psraw m0, 2
- pshuflw m0, m0, 0x0
- packuswb m0, m0
- movd [dstq ], m0
- movd [dstq+strideq], m0
- lea dstq, [dstq+strideq*2]
- movd [dstq ], m0
- movd [dstq+strideq], m0
-
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_predictor_8x8, 4, 5, 3, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- movq m0, [aboveq]
- movq m2, [leftq]
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- psadbw m0, m1
- psadbw m2, m1
- paddw m0, m2
- paddw m0, [GLOBAL(pw_8)]
- psraw m0, 4
- punpcklbw m0, m0
- pshuflw m0, m0, 0x0
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
-
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_top_predictor_8x8, 3, 5, 2, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- movq m0, [aboveq]
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- psadbw m0, m1
- paddw m0, [GLOBAL(pw2_8)]
- psraw m0, 3
- punpcklbw m0, m0
- pshuflw m0, m0, 0x0
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
-
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_left_predictor_8x8, 2, 5, 2, dst, stride, above, left, goffset
- movifnidn leftq, leftmp
- GET_GOT goffsetq
-
- pxor m1, m1
- movq m0, [leftq]
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- psadbw m0, m1
- paddw m0, [GLOBAL(pw2_8)]
- psraw m0, 3
- punpcklbw m0, m0
- pshuflw m0, m0, 0x0
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
-
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_128_predictor_4x4, 2, 5, 1, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- movd m0, [GLOBAL(dc_128)]
- movd [dstq ], m0
- movd [dstq+strideq ], m0
- movd [dstq+strideq*2], m0
- movd [dstq+stride3q ], m0
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_128_predictor_8x8, 2, 5, 1, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- movq m0, [GLOBAL(dc_128)]
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal dc_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- mova m0, [aboveq]
- mova m2, [leftq]
- DEFINE_ARGS dst, stride, stride3, lines4
- lea stride3q, [strideq*3]
- mov lines4d, 4
- psadbw m0, m1
- psadbw m2, m1
- paddw m0, m2
- movhlps m2, m0
- paddw m0, m2
- paddw m0, [GLOBAL(pw_16)]
- psraw m0, 5
- pshuflw m0, m0, 0x0
- punpcklqdq m0, m0
- packuswb m0, m0
-.loop:
- mova [dstq ], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq*2], m0
- mova [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- dec lines4d
- jnz .loop
-
- RESTORE_GOT
- REP_RET
-
-
-INIT_XMM sse2
-cglobal dc_top_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- mova m0, [aboveq]
- DEFINE_ARGS dst, stride, stride3, lines4
- lea stride3q, [strideq*3]
- mov lines4d, 4
- psadbw m0, m1
- movhlps m2, m0
- paddw m0, m2
- paddw m0, [GLOBAL(pw2_16)]
- psraw m0, 4
- pshuflw m0, m0, 0x0
- punpcklqdq m0, m0
- packuswb m0, m0
-.loop:
- mova [dstq ], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq*2], m0
- mova [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- dec lines4d
- jnz .loop
-
- RESTORE_GOT
- REP_RET
-
-INIT_XMM sse2
-cglobal dc_left_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- mova m0, [leftq]
- DEFINE_ARGS dst, stride, stride3, lines4
- lea stride3q, [strideq*3]
- mov lines4d, 4
- psadbw m0, m1
- movhlps m2, m0
- paddw m0, m2
- paddw m0, [GLOBAL(pw2_16)]
- psraw m0, 4
- pshuflw m0, m0, 0x0
- punpcklqdq m0, m0
- packuswb m0, m0
-.loop:
- mova [dstq ], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq*2], m0
- mova [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- dec lines4d
- jnz .loop
-
- RESTORE_GOT
- REP_RET
-
-INIT_XMM sse2
-cglobal dc_128_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- DEFINE_ARGS dst, stride, stride3, lines4
- lea stride3q, [strideq*3]
- mov lines4d, 4
- mova m0, [GLOBAL(dc_128)]
-.loop:
- mova [dstq ], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq*2], m0
- mova [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- dec lines4d
- jnz .loop
- RESTORE_GOT
- RET
-
-
-INIT_XMM sse2
-cglobal dc_predictor_32x32, 4, 5, 5, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- mova m0, [aboveq]
- mova m2, [aboveq+16]
- mova m3, [leftq]
- mova m4, [leftq+16]
- DEFINE_ARGS dst, stride, stride3, lines4
- lea stride3q, [strideq*3]
- mov lines4d, 8
- psadbw m0, m1
- psadbw m2, m1
- psadbw m3, m1
- psadbw m4, m1
- paddw m0, m2
- paddw m0, m3
- paddw m0, m4
- movhlps m2, m0
- paddw m0, m2
- paddw m0, [GLOBAL(pw_32)]
- psraw m0, 6
- pshuflw m0, m0, 0x0
- punpcklqdq m0, m0
- packuswb m0, m0
-.loop:
- mova [dstq ], m0
- mova [dstq +16], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq +16], m0
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m0
- mova [dstq+stride3q ], m0
- mova [dstq+stride3q +16], m0
- lea dstq, [dstq+strideq*4]
- dec lines4d
- jnz .loop
-
- RESTORE_GOT
- REP_RET
-
-INIT_XMM sse2
-cglobal dc_top_predictor_32x32, 4, 5, 5, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- mova m0, [aboveq]
- mova m2, [aboveq+16]
- DEFINE_ARGS dst, stride, stride3, lines4
- lea stride3q, [strideq*3]
- mov lines4d, 8
- psadbw m0, m1
- psadbw m2, m1
- paddw m0, m2
- movhlps m2, m0
- paddw m0, m2
- paddw m0, [GLOBAL(pw2_32)]
- psraw m0, 5
- pshuflw m0, m0, 0x0
- punpcklqdq m0, m0
- packuswb m0, m0
-.loop:
- mova [dstq ], m0
- mova [dstq +16], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq +16], m0
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m0
- mova [dstq+stride3q ], m0
- mova [dstq+stride3q +16], m0
- lea dstq, [dstq+strideq*4]
- dec lines4d
- jnz .loop
-
- RESTORE_GOT
- REP_RET
-
-INIT_XMM sse2
-cglobal dc_left_predictor_32x32, 4, 5, 5, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- pxor m1, m1
- mova m0, [leftq]
- mova m2, [leftq+16]
- DEFINE_ARGS dst, stride, stride3, lines4
- lea stride3q, [strideq*3]
- mov lines4d, 8
- psadbw m0, m1
- psadbw m2, m1
- paddw m0, m2
- movhlps m2, m0
- paddw m0, m2
- paddw m0, [GLOBAL(pw2_32)]
- psraw m0, 5
- pshuflw m0, m0, 0x0
- punpcklqdq m0, m0
- packuswb m0, m0
-.loop:
- mova [dstq ], m0
- mova [dstq +16], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq +16], m0
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m0
- mova [dstq+stride3q ], m0
- mova [dstq+stride3q +16], m0
- lea dstq, [dstq+strideq*4]
- dec lines4d
- jnz .loop
-
- RESTORE_GOT
- REP_RET
-
-INIT_XMM sse2
-cglobal dc_128_predictor_32x32, 4, 5, 3, dst, stride, above, left, goffset
- GET_GOT goffsetq
-
- DEFINE_ARGS dst, stride, stride3, lines4
- lea stride3q, [strideq*3]
- mov lines4d, 8
- mova m0, [GLOBAL(dc_128)]
-.loop:
- mova [dstq ], m0
- mova [dstq +16], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq +16], m0
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m0
- mova [dstq+stride3q ], m0
- mova [dstq+stride3q +16], m0
- lea dstq, [dstq+strideq*4]
- dec lines4d
- jnz .loop
- RESTORE_GOT
- RET
-
-INIT_XMM sse2
-cglobal v_predictor_4x4, 3, 3, 1, dst, stride, above
- movd m0, [aboveq]
- movd [dstq ], m0
- movd [dstq+strideq], m0
- lea dstq, [dstq+strideq*2]
- movd [dstq ], m0
- movd [dstq+strideq], m0
- RET
-
-INIT_XMM sse2
-cglobal v_predictor_8x8, 3, 3, 1, dst, stride, above
- movq m0, [aboveq]
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- movq [dstq ], m0
- movq [dstq+strideq ], m0
- movq [dstq+strideq*2], m0
- movq [dstq+stride3q ], m0
- RET
-
-INIT_XMM sse2
-cglobal v_predictor_16x16, 3, 4, 1, dst, stride, above
- mova m0, [aboveq]
- DEFINE_ARGS dst, stride, stride3, nlines4
- lea stride3q, [strideq*3]
- mov nlines4d, 4
-.loop:
- mova [dstq ], m0
- mova [dstq+strideq ], m0
- mova [dstq+strideq*2], m0
- mova [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- dec nlines4d
- jnz .loop
- REP_RET
-
-INIT_XMM sse2
-cglobal v_predictor_32x32, 3, 4, 2, dst, stride, above
- mova m0, [aboveq]
- mova m1, [aboveq+16]
- DEFINE_ARGS dst, stride, stride3, nlines4
- lea stride3q, [strideq*3]
- mov nlines4d, 8
-.loop:
- mova [dstq ], m0
- mova [dstq +16], m1
- mova [dstq+strideq ], m0
- mova [dstq+strideq +16], m1
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m1
- mova [dstq+stride3q ], m0
- mova [dstq+stride3q +16], m1
- lea dstq, [dstq+strideq*4]
- dec nlines4d
- jnz .loop
- REP_RET
-
-INIT_XMM sse2
-cglobal h_predictor_4x4, 2, 4, 4, dst, stride, line, left
- movifnidn leftq, leftmp
- movd m0, [leftq]
- punpcklbw m0, m0
- punpcklbw m0, m0
- pshufd m1, m0, 0x1
- movd [dstq ], m0
- movd [dstq+strideq], m1
- pshufd m2, m0, 0x2
- lea dstq, [dstq+strideq*2]
- pshufd m3, m0, 0x3
- movd [dstq ], m2
- movd [dstq+strideq], m3
- RET
-
-INIT_XMM sse2
-cglobal h_predictor_8x8, 2, 5, 3, dst, stride, line, left
- movifnidn leftq, leftmp
- mov lineq, -2
- DEFINE_ARGS dst, stride, line, left, stride3
- lea stride3q, [strideq*3]
- movq m0, [leftq ]
- punpcklbw m0, m0 ; l1 l1 l2 l2 ... l8 l8
-.loop:
- pshuflw m1, m0, 0x0 ; l1 l1 l1 l1 l1 l1 l1 l1
- pshuflw m2, m0, 0x55 ; l2 l2 l2 l2 l2 l2 l2 l2
- movq [dstq ], m1
- movq [dstq+strideq], m2
- pshuflw m1, m0, 0xaa
- pshuflw m2, m0, 0xff
- movq [dstq+strideq*2], m1
- movq [dstq+stride3q ], m2
- pshufd m0, m0, 0xe ; [63:0] l5 l5 l6 l6 l7 l7 l8 l8
- inc lineq
- lea dstq, [dstq+strideq*4]
- jnz .loop
- REP_RET
-
-INIT_XMM sse2
-cglobal h_predictor_16x16, 2, 5, 3, dst, stride, line, left
- movifnidn leftq, leftmp
- mov lineq, -4
- DEFINE_ARGS dst, stride, line, left, stride3
- lea stride3q, [strideq*3]
-.loop:
- movd m0, [leftq]
- punpcklbw m0, m0
- punpcklbw m0, m0 ; l1 to l4 each repeated 4 times
- pshufd m1, m0, 0x0 ; l1 repeated 16 times
- pshufd m2, m0, 0x55 ; l2 repeated 16 times
- mova [dstq ], m1
- mova [dstq+strideq ], m2
- pshufd m1, m0, 0xaa
- pshufd m2, m0, 0xff
- mova [dstq+strideq*2], m1
- mova [dstq+stride3q ], m2
- inc lineq
- lea leftq, [leftq+4 ]
- lea dstq, [dstq+strideq*4]
- jnz .loop
- REP_RET
-
-INIT_XMM sse2
-cglobal h_predictor_32x32, 2, 5, 3, dst, stride, line, left
- movifnidn leftq, leftmp
- mov lineq, -8
- DEFINE_ARGS dst, stride, line, left, stride3
- lea stride3q, [strideq*3]
-.loop:
- movd m0, [leftq]
- punpcklbw m0, m0
- punpcklbw m0, m0 ; l1 to l4 each repeated 4 times
- pshufd m1, m0, 0x0 ; l1 repeated 16 times
- pshufd m2, m0, 0x55 ; l2 repeated 16 times
- mova [dstq ], m1
- mova [dstq+16 ], m1
- mova [dstq+strideq ], m2
- mova [dstq+strideq+16 ], m2
- pshufd m1, m0, 0xaa
- pshufd m2, m0, 0xff
- mova [dstq+strideq*2 ], m1
- mova [dstq+strideq*2+16], m1
- mova [dstq+stride3q ], m2
- mova [dstq+stride3q+16 ], m2
- inc lineq
- lea leftq, [leftq+4 ]
- lea dstq, [dstq+strideq*4]
- jnz .loop
- REP_RET
-
-INIT_XMM sse2
-cglobal tm_predictor_4x4, 4, 4, 5, dst, stride, above, left
- pxor m1, m1
- movq m0, [aboveq-1]; [63:0] tl t1 t2 t3 t4 x x x
- punpcklbw m0, m1
- pshuflw m2, m0, 0x0 ; [63:0] tl tl tl tl [word]
- psrldq m0, 2
- psubw m0, m2 ; [63:0] t1-tl t2-tl t3-tl t4-tl [word]
- movd m2, [leftq]
- punpcklbw m2, m1
- pshuflw m4, m2, 0x0 ; [63:0] l1 l1 l1 l1 [word]
- pshuflw m3, m2, 0x55 ; [63:0] l2 l2 l2 l2 [word]
- paddw m4, m0
- paddw m3, m0
- packuswb m4, m4
- packuswb m3, m3
- movd [dstq ], m4
- movd [dstq+strideq], m3
- lea dstq, [dstq+strideq*2]
- pshuflw m4, m2, 0xaa
- pshuflw m3, m2, 0xff
- paddw m4, m0
- paddw m3, m0
- packuswb m4, m4
- packuswb m3, m3
- movd [dstq ], m4
- movd [dstq+strideq], m3
- RET
-
-INIT_XMM sse2
-cglobal tm_predictor_8x8, 4, 4, 5, dst, stride, above, left
- pxor m1, m1
- movd m2, [aboveq-1]
- movq m0, [aboveq]
- punpcklbw m2, m1
- punpcklbw m0, m1 ; t1 t2 t3 t4 t5 t6 t7 t8 [word]
- pshuflw m2, m2, 0x0 ; [63:0] tl tl tl tl [word]
- DEFINE_ARGS dst, stride, line, left
- mov lineq, -4
- punpcklqdq m2, m2 ; tl tl tl tl tl tl tl tl [word]
- psubw m0, m2 ; t1-tl t2-tl ... t8-tl [word]
- movq m2, [leftq]
- punpcklbw m2, m1 ; l1 l2 l3 l4 l5 l6 l7 l8 [word]
-.loop
- pshuflw m4, m2, 0x0 ; [63:0] l1 l1 l1 l1 [word]
- pshuflw m3, m2, 0x55 ; [63:0] l2 l2 l2 l2 [word]
- punpcklqdq m4, m4 ; l1 l1 l1 l1 l1 l1 l1 l1 [word]
- punpcklqdq m3, m3 ; l2 l2 l2 l2 l2 l2 l2 l2 [word]
- paddw m4, m0
- paddw m3, m0
- packuswb m4, m3
- movq [dstq ], m4
- movhps [dstq+strideq], m4
- lea dstq, [dstq+strideq*2]
- psrldq m2, 4
- inc lineq
- jnz .loop
- REP_RET
-
-INIT_XMM sse2
-cglobal tm_predictor_16x16, 4, 5, 8, dst, stride, above, left
- pxor m1, m1
- mova m2, [aboveq-16];
- mova m0, [aboveq] ; t1 t2 ... t16 [byte]
- punpckhbw m2, m1 ; [127:112] tl [word]
- punpckhbw m4, m0, m1
- punpcklbw m0, m1 ; m0:m4 t1 t2 ... t16 [word]
- DEFINE_ARGS dst, stride, line, left, stride8
- mov lineq, -8
- pshufhw m2, m2, 0xff
- mova m3, [leftq] ; l1 l2 ... l16 [byte]
- punpckhqdq m2, m2 ; tl repeated 8 times [word]
- psubw m0, m2
- psubw m4, m2 ; m0:m4 t1-tl t2-tl ... t16-tl [word]
- punpckhbw m5, m3, m1
- punpcklbw m3, m1 ; m3:m5 l1 l2 ... l16 [word]
- lea stride8q, [strideq*8]
-.loop:
- pshuflw m6, m3, 0x0
- pshuflw m7, m5, 0x0
- punpcklqdq m6, m6 ; l1 repeated 8 times [word]
- punpcklqdq m7, m7 ; l8 repeated 8 times [word]
- paddw m1, m6, m0
- paddw m6, m4 ; m1:m6 ti-tl+l1 [i=1,15] [word]
- psrldq m5, 2
- packuswb m1, m6
- mova [dstq ], m1
- paddw m1, m7, m0
- paddw m7, m4 ; m1:m7 ti-tl+l8 [i=1,15] [word]
- psrldq m3, 2
- packuswb m1, m7
- mova [dstq+stride8q], m1
- inc lineq
- lea dstq, [dstq+strideq]
- jnz .loop
- REP_RET
-
-INIT_XMM sse2
-cglobal tm_predictor_32x32, 4, 4, 8, dst, stride, above, left
- pxor m1, m1
- movd m2, [aboveq-1]
- mova m0, [aboveq]
- mova m4, [aboveq+16]
- punpcklbw m2, m1
- punpckhbw m3, m0, m1
- punpckhbw m5, m4, m1
- punpcklbw m0, m1
- punpcklbw m4, m1
- pshuflw m2, m2, 0x0
- DEFINE_ARGS dst, stride, line, left
- mov lineq, -16
- punpcklqdq m2, m2
- add leftq, 32
- psubw m0, m2
- psubw m3, m2
- psubw m4, m2
- psubw m5, m2
-.loop:
- movd m2, [leftq+lineq*2]
- pxor m1, m1
- punpcklbw m2, m1
- pshuflw m7, m2, 0x55
- pshuflw m2, m2, 0x0
- punpcklqdq m2, m2
- punpcklqdq m7, m7
- paddw m6, m2, m3
- paddw m1, m2, m0
- packuswb m1, m6
- mova [dstq ], m1
- paddw m6, m2, m5
- paddw m1, m2, m4
- packuswb m1, m6
- mova [dstq+16 ], m1
- paddw m6, m7, m3
- paddw m1, m7, m0
- packuswb m1, m6
- mova [dstq+strideq ], m1
- paddw m6, m7, m5
- paddw m1, m7, m4
- packuswb m1, m6
- mova [dstq+strideq+16], m1
- lea dstq, [dstq+strideq*2]
- inc lineq
- jnz .loop
- REP_RET
diff --git a/thirdparty/libvpx/vpx_dsp/x86/intrapred_ssse3.asm b/thirdparty/libvpx/vpx_dsp/x86/intrapred_ssse3.asm
deleted file mode 100644
index 5e0139fa8d..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/intrapred_ssse3.asm
+++ /dev/null
@@ -1,871 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "third_party/x86inc/x86inc.asm"
-
-SECTION_RODATA
-
-pb_1: times 16 db 1
-sh_b12345677: db 1, 2, 3, 4, 5, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0
-sh_b23456777: db 2, 3, 4, 5, 6, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0
-sh_b0123456777777777: db 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7
-sh_b1234567777777777: db 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
-sh_b2345677777777777: db 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
-sh_b123456789abcdeff: db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15
-sh_b23456789abcdefff: db 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15
-sh_b32104567: db 3, 2, 1, 0, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0
-sh_b8091a2b345: db 8, 0, 9, 1, 10, 2, 11, 3, 4, 5, 0, 0, 0, 0, 0, 0
-sh_b76543210: db 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-sh_b65432108: db 6, 5, 4, 3, 2, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0
-sh_b54321089: db 5, 4, 3, 2, 1, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0
-sh_b89abcdef: db 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0
-sh_bfedcba9876543210: db 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
-
-SECTION .text
-
-INIT_XMM ssse3
-cglobal d45_predictor_16x16, 3, 6, 4, dst, stride, above, dst8, line, goffset
- GET_GOT goffsetq
-
- mova m0, [aboveq]
- DEFINE_ARGS dst, stride, stride3, dst8, line
- lea stride3q, [strideq*3]
- lea dst8q, [dstq+strideq*8]
- mova m1, [GLOBAL(sh_b123456789abcdeff)]
- pshufb m2, m0, [GLOBAL(sh_b23456789abcdefff)]
- pavgb m3, m2, m0
- pxor m2, m0
- pshufb m0, m1
- pand m2, [GLOBAL(pb_1)]
- psubb m3, m2
- pavgb m0, m3
-
- ; first 4 lines and first half of 3rd 4 lines
- mov lined, 2
-.loop:
- mova [dstq ], m0
- movhps [dst8q ], m0
- pshufb m0, m1
- mova [dstq +strideq ], m0
- movhps [dst8q+strideq ], m0
- pshufb m0, m1
- mova [dstq +strideq*2 ], m0
- movhps [dst8q+strideq*2 ], m0
- pshufb m0, m1
- mova [dstq +stride3q ], m0
- movhps [dst8q+stride3q ], m0
- pshufb m0, m1
- lea dstq, [dstq +strideq*4]
- lea dst8q, [dst8q+strideq*4]
- dec lined
- jnz .loop
-
- ; bottom-right 8x8 block
- movhps [dstq +8], m0
- movhps [dstq+strideq +8], m0
- movhps [dstq+strideq*2+8], m0
- movhps [dstq+stride3q +8], m0
- lea dstq, [dstq+strideq*4]
- movhps [dstq +8], m0
- movhps [dstq+strideq +8], m0
- movhps [dstq+strideq*2+8], m0
- movhps [dstq+stride3q +8], m0
-
- RESTORE_GOT
- RET
-
-INIT_XMM ssse3
-cglobal d45_predictor_32x32, 3, 6, 7, dst, stride, above, dst16, line, goffset
- GET_GOT goffsetq
-
- mova m0, [aboveq]
- mova m4, [aboveq+16]
- DEFINE_ARGS dst, stride, stride3, dst16, line
- lea stride3q, [strideq*3]
- lea dst16q, [dstq +strideq*8]
- lea dst16q, [dst16q+strideq*8]
- mova m1, [GLOBAL(sh_b123456789abcdeff)]
- pshufb m2, m4, [GLOBAL(sh_b23456789abcdefff)]
- pavgb m3, m2, m4
- pxor m2, m4
- palignr m5, m4, m0, 1
- palignr m6, m4, m0, 2
- pshufb m4, m1
- pand m2, [GLOBAL(pb_1)]
- psubb m3, m2
- pavgb m4, m3
- pavgb m3, m0, m6
- pxor m0, m6
- pand m0, [GLOBAL(pb_1)]
- psubb m3, m0
- pavgb m5, m3
-
- ; write 4x4 lines (and the first half of the second 4x4 lines)
- mov lined, 4
-.loop:
- mova [dstq ], m5
- mova [dstq +16], m4
- mova [dst16q ], m4
- palignr m3, m4, m5, 1
- pshufb m4, m1
- mova [dstq +strideq ], m3
- mova [dstq +strideq +16], m4
- mova [dst16q+strideq ], m4
- palignr m5, m4, m3, 1
- pshufb m4, m1
- mova [dstq +strideq*2 ], m5
- mova [dstq +strideq*2+16], m4
- mova [dst16q+strideq*2 ], m4
- palignr m3, m4, m5, 1
- pshufb m4, m1
- mova [dstq +stride3q ], m3
- mova [dstq +stride3q +16], m4
- mova [dst16q+stride3q ], m4
- palignr m5, m4, m3, 1
- pshufb m4, m1
- lea dstq, [dstq +strideq*4]
- lea dst16q, [dst16q+strideq*4]
- dec lined
- jnz .loop
-
- ; write second half of second 4x4 lines
- mova [dstq +16], m4
- mova [dstq +strideq +16], m4
- mova [dstq +strideq*2+16], m4
- mova [dstq +stride3q +16], m4
- lea dstq, [dstq +strideq*4]
- mova [dstq +16], m4
- mova [dstq +strideq +16], m4
- mova [dstq +strideq*2+16], m4
- mova [dstq +stride3q +16], m4
- lea dstq, [dstq +strideq*4]
- mova [dstq +16], m4
- mova [dstq +strideq +16], m4
- mova [dstq +strideq*2+16], m4
- mova [dstq +stride3q +16], m4
- lea dstq, [dstq +strideq*4]
- mova [dstq +16], m4
- mova [dstq +strideq +16], m4
- mova [dstq +strideq*2+16], m4
- mova [dstq +stride3q +16], m4
-
- RESTORE_GOT
- RET
-
-; ------------------------------------------
-; input: x, y, z, result
-;
-; trick from pascal
-; (x+2y+z+2)>>2 can be calculated as:
-; result = avg(x,z)
-; result -= xor(x,z) & 1
-; result = avg(result,y)
-; ------------------------------------------
-%macro X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 4
- pavgb %4, %1, %3
- pxor %3, %1
- pand %3, [GLOBAL(pb_1)]
- psubb %4, %3
- pavgb %4, %2
-%endmacro
-
-INIT_XMM ssse3
-cglobal d63_predictor_4x4, 3, 4, 5, dst, stride, above, goffset
- GET_GOT goffsetq
-
- movq m3, [aboveq]
- pshufb m1, m3, [GLOBAL(sh_b23456777)]
- pshufb m2, m3, [GLOBAL(sh_b12345677)]
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m3, m2, m1, m4
- pavgb m3, m2
-
- ; store 4 lines
- movd [dstq ], m3
- movd [dstq+strideq], m4
- lea dstq, [dstq+strideq*2]
- psrldq m3, 1
- psrldq m4, 1
- movd [dstq ], m3
- movd [dstq+strideq], m4
- RESTORE_GOT
- RET
-
-INIT_XMM ssse3
-cglobal d63_predictor_8x8, 3, 4, 5, dst, stride, above, goffset
- GET_GOT goffsetq
-
- movq m3, [aboveq]
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- pshufb m1, m3, [GLOBAL(sh_b2345677777777777)]
- pshufb m0, m3, [GLOBAL(sh_b0123456777777777)]
- pshufb m2, m3, [GLOBAL(sh_b1234567777777777)]
- pshufb m3, [GLOBAL(sh_b0123456777777777)]
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m2, m1, m4
- pavgb m3, m2
-
- ; store 4 lines
- movq [dstq ], m3
- movq [dstq+strideq], m4
- psrldq m3, 1
- psrldq m4, 1
- movq [dstq+strideq*2], m3
- movq [dstq+stride3q ], m4
- lea dstq, [dstq+strideq*4]
- psrldq m3, 1
- psrldq m4, 1
-
- ; store 4 lines
- movq [dstq ], m3
- movq [dstq+strideq], m4
- psrldq m3, 1
- psrldq m4, 1
- movq [dstq+strideq*2], m3
- movq [dstq+stride3q ], m4
- RESTORE_GOT
- RET
-
-INIT_XMM ssse3
-cglobal d63_predictor_16x16, 3, 5, 5, dst, stride, above, line, goffset
- GET_GOT goffsetq
-
- mova m0, [aboveq]
- DEFINE_ARGS dst, stride, stride3, line
- lea stride3q, [strideq*3]
- mova m1, [GLOBAL(sh_b123456789abcdeff)]
- pshufb m2, m0, [GLOBAL(sh_b23456789abcdefff)]
- pshufb m3, m0, m1
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m3, m2, m4
- pavgb m0, m3
-
- mov lined, 4
-.loop:
- mova [dstq ], m0
- mova [dstq+strideq ], m4
- pshufb m0, m1
- pshufb m4, m1
- mova [dstq+strideq*2], m0
- mova [dstq+stride3q ], m4
- pshufb m0, m1
- pshufb m4, m1
- lea dstq, [dstq+strideq*4]
- dec lined
- jnz .loop
- RESTORE_GOT
- REP_RET
-
-INIT_XMM ssse3
-cglobal d63_predictor_32x32, 3, 5, 8, dst, stride, above, line, goffset
- GET_GOT goffsetq
-
- mova m0, [aboveq]
- mova m7, [aboveq+16]
- DEFINE_ARGS dst, stride, stride3, line
- mova m1, [GLOBAL(sh_b123456789abcdeff)]
- lea stride3q, [strideq*3]
- pshufb m2, m7, [GLOBAL(sh_b23456789abcdefff)]
- pshufb m3, m7, m1
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m7, m3, m2, m4
- palignr m6, m7, m0, 1
- palignr m5, m7, m0, 2
- pavgb m7, m3
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m6, m5, m2
- pavgb m0, m6
-
- mov lined, 8
-.loop:
- mova [dstq ], m0
- mova [dstq +16], m7
- mova [dstq+strideq ], m2
- mova [dstq+strideq +16], m4
- palignr m3, m7, m0, 1
- palignr m5, m4, m2, 1
- pshufb m7, m1
- pshufb m4, m1
-
- mova [dstq+strideq*2 ], m3
- mova [dstq+strideq*2+16], m7
- mova [dstq+stride3q ], m5
- mova [dstq+stride3q +16], m4
- palignr m0, m7, m3, 1
- palignr m2, m4, m5, 1
- pshufb m7, m1
- pshufb m4, m1
- lea dstq, [dstq+strideq*4]
- dec lined
- jnz .loop
- RESTORE_GOT
- REP_RET
-
-INIT_XMM ssse3
-cglobal d153_predictor_4x4, 4, 5, 4, dst, stride, above, left, goffset
- GET_GOT goffsetq
- movd m0, [leftq] ; l1, l2, l3, l4
- movd m1, [aboveq-1] ; tl, t1, t2, t3
- punpckldq m0, m1 ; l1, l2, l3, l4, tl, t1, t2, t3
- pshufb m0, [GLOBAL(sh_b32104567)]; l4, l3, l2, l1, tl, t1, t2, t3
- psrldq m1, m0, 1 ; l3, l2, l1, tl, t1, t2, t3
- psrldq m2, m0, 2 ; l2, l1, tl, t1, t2, t3
- ; comments below are for a predictor like this
- ; A1 B1 C1 D1
- ; A2 B2 A1 B1
- ; A3 B3 A2 B2
- ; A4 B4 A3 B3
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3 ; 3-tap avg B4 B3 B2 B1 C1 D1
- pavgb m1, m0 ; 2-tap avg A4 A3 A2 A1
-
- punpcklqdq m3, m1 ; B4 B3 B2 B1 C1 D1 x x A4 A3 A2 A1 ..
-
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- pshufb m3, [GLOBAL(sh_b8091a2b345)] ; A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 ..
- movd [dstq+stride3q ], m3
- psrldq m3, 2 ; A3 B3 A2 B2 A1 B1 C1 D1 ..
- movd [dstq+strideq*2], m3
- psrldq m3, 2 ; A2 B2 A1 B1 C1 D1 ..
- movd [dstq+strideq ], m3
- psrldq m3, 2 ; A1 B1 C1 D1 ..
- movd [dstq ], m3
- RESTORE_GOT
- RET
-
-INIT_XMM ssse3
-cglobal d153_predictor_8x8, 4, 5, 8, dst, stride, above, left, goffset
- GET_GOT goffsetq
- movq m0, [leftq] ; [0- 7] l1-8 [byte]
- movhps m0, [aboveq-1] ; [8-15] tl, t1-7 [byte]
- pshufb m1, m0, [GLOBAL(sh_b76543210)] ; l8-1 [word]
- pshufb m2, m0, [GLOBAL(sh_b65432108)] ; l7-1,tl [word]
- pshufb m3, m0, [GLOBAL(sh_b54321089)] ; l6-1,tl,t1 [word]
- pshufb m0, [GLOBAL(sh_b89abcdef)] ; tl,t1-7 [word]
- psrldq m4, m0, 1 ; t1-7 [word]
- psrldq m5, m0, 2 ; t2-7 [word]
- ; comments below are for a predictor like this
- ; A1 B1 C1 D1 E1 F1 G1 H1
- ; A2 B2 A1 B1 C1 D1 E1 F1
- ; A3 B3 A2 B2 A1 B1 C1 D1
- ; A4 B4 A3 B3 A2 B2 A1 B1
- ; A5 B5 A4 B4 A3 B3 A2 B2
- ; A6 B6 A5 B5 A4 B4 A3 B3
- ; A7 B7 A6 B6 A5 B5 A4 B4
- ; A8 B8 A7 B7 A6 B6 A5 B5
- pavgb m6, m1, m2 ; 2-tap avg A8-A1
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m4, m5, m7 ; 3-tap avg C-H1
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m1, m2, m3, m0 ; 3-tap avg B8-1
-
- punpcklbw m6, m0 ; A-B8, A-B7 ... A-B2, A-B1
-
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
-
- movhps [dstq+stride3q], m6 ; A-B4, A-B3, A-B2, A-B1
- palignr m0, m7, m6, 10 ; A-B3, A-B2, A-B1, C-H1
- movq [dstq+strideq*2], m0
- psrldq m0, 2 ; A-B2, A-B1, C-H1
- movq [dstq+strideq ], m0
- psrldq m0, 2 ; A-H1
- movq [dstq ], m0
- lea dstq, [dstq+strideq*4]
- movq [dstq+stride3q ], m6 ; A-B8, A-B7, A-B6, A-B5
- psrldq m6, 2 ; A-B7, A-B6, A-B5, A-B4
- movq [dstq+strideq*2], m6
- psrldq m6, 2 ; A-B6, A-B5, A-B4, A-B3
- movq [dstq+strideq ], m6
- psrldq m6, 2 ; A-B5, A-B4, A-B3, A-B2
- movq [dstq ], m6
- RESTORE_GOT
- RET
-
-INIT_XMM ssse3
-cglobal d153_predictor_16x16, 4, 5, 8, dst, stride, above, left, goffset
- GET_GOT goffsetq
- mova m0, [leftq]
- movu m7, [aboveq-1]
- ; comments below are for a predictor like this
- ; A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 O1 P1
- ; A2 B2 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1
- ; A3 B3 A2 B2 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1
- ; A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1
- ; A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 E1 F1 G1 H1
- ; A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 E1 F1
- ; A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 C1 D1
- ; A8 B8 A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1
- ; A9 B9 A8 B8 A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2
- ; Aa Ba A9 B9 A8 B8 A7 B7 A6 B6 A5 B5 A4 B4 A3 B3
- ; Ab Bb Aa Ba A9 B9 A8 B8 A7 B7 A6 B6 A5 B5 A4 B4
- ; Ac Bc Ab Bb Aa Ba A9 B9 A8 B8 A7 B7 A6 B6 A5 B5
- ; Ad Bd Ac Bc Ab Bb Aa Ba A9 B9 A8 B8 A7 B7 A6 B6
- ; Ae Be Ad Bd Ac Bc Ab Bb Aa Ba A9 B9 A8 B8 A7 B7
- ; Af Bf Ae Be Ad Bd Ac Bc Ab Bb Aa Ba A9 B9 A8 B8
- ; Ag Bg Af Bf Ae Be Ad Bd Ac Bc Ab Bb Aa Ba A9 B9
- pshufb m6, m7, [GLOBAL(sh_bfedcba9876543210)]
- palignr m5, m0, m6, 15
- palignr m3, m0, m6, 14
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m5, m3, m4 ; 3-tap avg B3-Bg
- pshufb m1, m0, [GLOBAL(sh_b123456789abcdeff)]
- pavgb m5, m0 ; A1 - Ag
-
- punpcklbw m0, m4, m5 ; A-B8 ... A-B1
- punpckhbw m4, m5 ; A-B9 ... A-Bg
-
- pshufb m3, m7, [GLOBAL(sh_b123456789abcdeff)]
- pshufb m5, m7, [GLOBAL(sh_b23456789abcdefff)]
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m7, m3, m5, m1 ; 3-tap avg C1-P1
-
- pshufb m6, m0, [GLOBAL(sh_bfedcba9876543210)]
- DEFINE_ARGS dst, stride, stride3
- lea stride3q, [strideq*3]
- palignr m2, m1, m6, 14
- mova [dstq ], m2
- palignr m2, m1, m6, 12
- mova [dstq+strideq ], m2
- palignr m2, m1, m6, 10
- mova [dstq+strideq*2], m2
- palignr m2, m1, m6, 8
- mova [dstq+stride3q ], m2
- lea dstq, [dstq+strideq*4]
- palignr m2, m1, m6, 6
- mova [dstq ], m2
- palignr m2, m1, m6, 4
- mova [dstq+strideq ], m2
- palignr m2, m1, m6, 2
- mova [dstq+strideq*2], m2
- pshufb m4, [GLOBAL(sh_bfedcba9876543210)]
- mova [dstq+stride3q ], m6
- lea dstq, [dstq+strideq*4]
-
- palignr m2, m6, m4, 14
- mova [dstq ], m2
- palignr m2, m6, m4, 12
- mova [dstq+strideq ], m2
- palignr m2, m6, m4, 10
- mova [dstq+strideq*2], m2
- palignr m2, m6, m4, 8
- mova [dstq+stride3q ], m2
- lea dstq, [dstq+strideq*4]
- palignr m2, m6, m4, 6
- mova [dstq ], m2
- palignr m2, m6, m4, 4
- mova [dstq+strideq ], m2
- palignr m2, m6, m4, 2
- mova [dstq+strideq*2], m2
- mova [dstq+stride3q ], m4
- RESTORE_GOT
- RET
-
-INIT_XMM ssse3
-cglobal d153_predictor_32x32, 4, 5, 8, dst, stride, above, left, goffset
- GET_GOT goffsetq
- mova m0, [leftq]
- movu m7, [aboveq-1]
- movu m1, [aboveq+15]
-
- pshufb m4, m1, [GLOBAL(sh_b123456789abcdeff)]
- pshufb m6, m1, [GLOBAL(sh_b23456789abcdefff)]
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m1, m4, m6, m2 ; 3-tap avg above [high]
-
- palignr m3, m1, m7, 1
- palignr m5, m1, m7, 2
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m7, m3, m5, m1 ; 3-tap avg above [low]
-
- pshufb m7, [GLOBAL(sh_bfedcba9876543210)]
- palignr m5, m0, m7, 15
- palignr m3, m0, m7, 14
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m5, m3, m4 ; 3-tap avg B3-Bg
- pavgb m5, m0 ; A1 - Ag
- punpcklbw m6, m4, m5 ; A-B8 ... A-B1
- punpckhbw m4, m5 ; A-B9 ... A-Bg
- pshufb m6, [GLOBAL(sh_bfedcba9876543210)]
- pshufb m4, [GLOBAL(sh_bfedcba9876543210)]
-
- DEFINE_ARGS dst, stride, stride3, left, line
- lea stride3q, [strideq*3]
-
- palignr m5, m2, m1, 14
- palignr m7, m1, m6, 14
- mova [dstq ], m7
- mova [dstq+16 ], m5
- palignr m5, m2, m1, 12
- palignr m7, m1, m6, 12
- mova [dstq+strideq ], m7
- mova [dstq+strideq+16 ], m5
- palignr m5, m2, m1, 10
- palignr m7, m1, m6, 10
- mova [dstq+strideq*2 ], m7
- mova [dstq+strideq*2+16], m5
- palignr m5, m2, m1, 8
- palignr m7, m1, m6, 8
- mova [dstq+stride3q ], m7
- mova [dstq+stride3q+16 ], m5
- lea dstq, [dstq+strideq*4]
- palignr m5, m2, m1, 6
- palignr m7, m1, m6, 6
- mova [dstq ], m7
- mova [dstq+16 ], m5
- palignr m5, m2, m1, 4
- palignr m7, m1, m6, 4
- mova [dstq+strideq ], m7
- mova [dstq+strideq+16 ], m5
- palignr m5, m2, m1, 2
- palignr m7, m1, m6, 2
- mova [dstq+strideq*2 ], m7
- mova [dstq+strideq*2+16], m5
- mova [dstq+stride3q ], m6
- mova [dstq+stride3q+16 ], m1
- lea dstq, [dstq+strideq*4]
-
- palignr m5, m1, m6, 14
- palignr m3, m6, m4, 14
- mova [dstq ], m3
- mova [dstq+16 ], m5
- palignr m5, m1, m6, 12
- palignr m3, m6, m4, 12
- mova [dstq+strideq ], m3
- mova [dstq+strideq+16 ], m5
- palignr m5, m1, m6, 10
- palignr m3, m6, m4, 10
- mova [dstq+strideq*2 ], m3
- mova [dstq+strideq*2+16], m5
- palignr m5, m1, m6, 8
- palignr m3, m6, m4, 8
- mova [dstq+stride3q ], m3
- mova [dstq+stride3q+16 ], m5
- lea dstq, [dstq+strideq*4]
- palignr m5, m1, m6, 6
- palignr m3, m6, m4, 6
- mova [dstq ], m3
- mova [dstq+16 ], m5
- palignr m5, m1, m6, 4
- palignr m3, m6, m4, 4
- mova [dstq+strideq ], m3
- mova [dstq+strideq+16 ], m5
- palignr m5, m1, m6, 2
- palignr m3, m6, m4, 2
- mova [dstq+strideq*2 ], m3
- mova [dstq+strideq*2+16], m5
- mova [dstq+stride3q ], m4
- mova [dstq+stride3q+16 ], m6
- lea dstq, [dstq+strideq*4]
-
- mova m7, [leftq]
- mova m3, [leftq+16]
- palignr m5, m3, m7, 15
- palignr m0, m3, m7, 14
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m3, m5, m0, m2 ; 3-tap avg Bh -
- pavgb m5, m3 ; Ah -
- punpcklbw m3, m2, m5 ; A-B8 ... A-B1
- punpckhbw m2, m5 ; A-B9 ... A-Bg
- pshufb m3, [GLOBAL(sh_bfedcba9876543210)]
- pshufb m2, [GLOBAL(sh_bfedcba9876543210)]
-
- palignr m7, m6, m4, 14
- palignr m0, m4, m3, 14
- mova [dstq ], m0
- mova [dstq+16 ], m7
- palignr m7, m6, m4, 12
- palignr m0, m4, m3, 12
- mova [dstq+strideq ], m0
- mova [dstq+strideq+16 ], m7
- palignr m7, m6, m4, 10
- palignr m0, m4, m3, 10
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m7
- palignr m7, m6, m4, 8
- palignr m0, m4, m3, 8
- mova [dstq+stride3q ], m0
- mova [dstq+stride3q+16 ], m7
- lea dstq, [dstq+strideq*4]
- palignr m7, m6, m4, 6
- palignr m0, m4, m3, 6
- mova [dstq ], m0
- mova [dstq+16 ], m7
- palignr m7, m6, m4, 4
- palignr m0, m4, m3, 4
- mova [dstq+strideq ], m0
- mova [dstq+strideq+16 ], m7
- palignr m7, m6, m4, 2
- palignr m0, m4, m3, 2
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m7
- mova [dstq+stride3q ], m3
- mova [dstq+stride3q+16 ], m4
- lea dstq, [dstq+strideq*4]
-
- palignr m7, m4, m3, 14
- palignr m0, m3, m2, 14
- mova [dstq ], m0
- mova [dstq+16 ], m7
- palignr m7, m4, m3, 12
- palignr m0, m3, m2, 12
- mova [dstq+strideq ], m0
- mova [dstq+strideq+16 ], m7
- palignr m7, m4, m3, 10
- palignr m0, m3, m2, 10
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m7
- palignr m7, m4, m3, 8
- palignr m0, m3, m2, 8
- mova [dstq+stride3q ], m0
- mova [dstq+stride3q+16 ], m7
- lea dstq, [dstq+strideq*4]
- palignr m7, m4, m3, 6
- palignr m0, m3, m2, 6
- mova [dstq ], m0
- mova [dstq+16 ], m7
- palignr m7, m4, m3, 4
- palignr m0, m3, m2, 4
- mova [dstq+strideq ], m0
- mova [dstq+strideq+16 ], m7
- palignr m7, m4, m3, 2
- palignr m0, m3, m2, 2
- mova [dstq+strideq*2 ], m0
- mova [dstq+strideq*2+16], m7
- mova [dstq+stride3q ], m2
- mova [dstq+stride3q+16 ], m3
-
- RESTORE_GOT
- RET
-
-INIT_XMM ssse3
-cglobal d207_predictor_8x8, 4, 5, 4, dst, stride, stride3, left, goffset
- GET_GOT goffsetq
- movq m3, [leftq] ; abcdefgh [byte]
- lea stride3q, [strideq*3]
-
- pshufb m1, m3, [GLOBAL(sh_b2345677777777777)]
- pshufb m0, m3, [GLOBAL(sh_b0123456777777777)]
- pshufb m2, m3, [GLOBAL(sh_b1234567777777777)]
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m2, m1, m3
- pavgb m0, m2
- punpcklbw m0, m3 ; interleaved output
-
- movq [dstq ], m0
- psrldq m0, 2
- movq [dstq+strideq ], m0
- psrldq m0, 2
- movq [dstq+strideq*2], m0
- psrldq m0, 2
- movq [dstq+stride3q ], m0
- lea dstq, [dstq+strideq*4]
- pshufhw m0, m0, q0000 ; de, d2ef, ef, e2fg, fg, f2gh, gh, g3h, 8xh
- psrldq m0, 2
- movq [dstq ], m0
- psrldq m0, 2
- movq [dstq+strideq ], m0
- psrldq m0, 2
- movq [dstq+strideq*2], m0
- psrldq m0, 2
- movq [dstq+stride3q ], m0
- RESTORE_GOT
- RET
-
-INIT_XMM ssse3
-cglobal d207_predictor_16x16, 4, 5, 5, dst, stride, stride3, left, goffset
- GET_GOT goffsetq
- lea stride3q, [strideq*3]
- mova m0, [leftq] ; abcdefghijklmnop [byte]
- pshufb m1, m0, [GLOBAL(sh_b123456789abcdeff)] ; bcdefghijklmnopp
- pshufb m2, m0, [GLOBAL(sh_b23456789abcdefff)]
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3
- pavgb m1, m0 ; ab, bc, cd .. no, op, pp [byte]
-
- punpckhbw m4, m1, m3 ; interleaved input
- punpcklbw m1, m3 ; interleaved output
- mova [dstq ], m1
- palignr m3, m4, m1, 2
- mova [dstq+strideq ], m3
- palignr m3, m4, m1, 4
- mova [dstq+strideq*2], m3
- palignr m3, m4, m1, 6
- mova [dstq+stride3q ], m3
- lea dstq, [dstq+strideq*4]
- palignr m3, m4, m1, 8
- mova [dstq ], m3
- palignr m3, m4, m1, 10
- mova [dstq+strideq ], m3
- palignr m3, m4, m1, 12
- mova [dstq+strideq*2], m3
- palignr m3, m4, m1, 14
- mova [dstq+stride3q ], m3
- DEFINE_ARGS dst, stride, stride3, line
- mov lined, 2
- mova m0, [GLOBAL(sh_b23456789abcdefff)]
-.loop:
- lea dstq, [dstq+strideq*4]
- mova [dstq ], m4
- pshufb m4, m0
- mova [dstq+strideq ], m4
- pshufb m4, m0
- mova [dstq+strideq*2], m4
- pshufb m4, m0
- mova [dstq+stride3q ], m4
- pshufb m4, m0
- dec lined
- jnz .loop
- RESTORE_GOT
- REP_RET
-
-INIT_XMM ssse3
-cglobal d207_predictor_32x32, 4, 5, 8, dst, stride, stride3, left, goffset
- GET_GOT goffsetq
- lea stride3q, [strideq*3]
- mova m1, [leftq] ; 0-15 [byte]
- mova m2, [leftq+16] ; 16-31 [byte]
- pshufb m0, m2, [GLOBAL(sh_b23456789abcdefff)]
- pshufb m4, m2, [GLOBAL(sh_b123456789abcdeff)]
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m2, m4, m0, m3
- palignr m6, m2, m1, 1
- palignr m5, m2, m1, 2
- pavgb m2, m4 ; high 16px even lines
-
- X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m1, m6, m5, m0
- pavgb m1, m6 ; low 16px even lines
-
- punpckhbw m6, m1, m0 ; interleaved output 2
- punpcklbw m1, m0 ; interleaved output 1
-
- punpckhbw m7, m2, m3 ; interleaved output 4
- punpcklbw m2, m3 ; interleaved output 3
-
- ; output 1st 8 lines (and half of 2nd 8 lines)
- DEFINE_ARGS dst, stride, stride3, dst8
- lea dst8q, [dstq+strideq*8]
- mova [dstq ], m1
- mova [dstq +16], m6
- mova [dst8q ], m6
- palignr m0, m6, m1, 2
- palignr m4, m2, m6, 2
- mova [dstq +strideq ], m0
- mova [dstq +strideq +16], m4
- mova [dst8q+strideq ], m4
- palignr m0, m6, m1, 4
- palignr m4, m2, m6, 4
- mova [dstq +strideq*2 ], m0
- mova [dstq +strideq*2+16], m4
- mova [dst8q+strideq*2 ], m4
- palignr m0, m6, m1, 6
- palignr m4, m2, m6, 6
- mova [dstq +stride3q ], m0
- mova [dstq +stride3q +16], m4
- mova [dst8q+stride3q ], m4
- lea dstq, [dstq +strideq*4]
- lea dst8q, [dst8q+strideq*4]
- palignr m0, m6, m1, 8
- palignr m4, m2, m6, 8
- mova [dstq ], m0
- mova [dstq +16], m4
- mova [dst8q ], m4
- palignr m0, m6, m1, 10
- palignr m4, m2, m6, 10
- mova [dstq +strideq ], m0
- mova [dstq +strideq +16], m4
- mova [dst8q+strideq ], m4
- palignr m0, m6, m1, 12
- palignr m4, m2, m6, 12
- mova [dstq +strideq*2 ], m0
- mova [dstq +strideq*2+16], m4
- mova [dst8q+strideq*2 ], m4
- palignr m0, m6, m1, 14
- palignr m4, m2, m6, 14
- mova [dstq +stride3q ], m0
- mova [dstq +stride3q +16], m4
- mova [dst8q+stride3q ], m4
- lea dstq, [dstq+strideq*4]
- lea dst8q, [dst8q+strideq*4]
-
- ; output 2nd half of 2nd 8 lines and half of 3rd 8 lines
- mova [dstq +16], m2
- mova [dst8q ], m2
- palignr m4, m7, m2, 2
- mova [dstq +strideq +16], m4
- mova [dst8q+strideq ], m4
- palignr m4, m7, m2, 4
- mova [dstq +strideq*2+16], m4
- mova [dst8q+strideq*2 ], m4
- palignr m4, m7, m2, 6
- mova [dstq +stride3q +16], m4
- mova [dst8q+stride3q ], m4
- lea dstq, [dstq+strideq*4]
- lea dst8q, [dst8q+strideq*4]
- palignr m4, m7, m2, 8
- mova [dstq +16], m4
- mova [dst8q ], m4
- palignr m4, m7, m2, 10
- mova [dstq +strideq +16], m4
- mova [dst8q+strideq ], m4
- palignr m4, m7, m2, 12
- mova [dstq +strideq*2+16], m4
- mova [dst8q+strideq*2 ], m4
- palignr m4, m7, m2, 14
- mova [dstq +stride3q +16], m4
- mova [dst8q+stride3q ], m4
- lea dstq, [dstq+strideq*4]
- lea dst8q, [dst8q+strideq*4]
-
- ; output 2nd half of 3rd 8 lines and half of 4th 8 lines
- mova m0, [GLOBAL(sh_b23456789abcdefff)]
- mova [dstq +16], m7
- mova [dst8q ], m7
- pshufb m7, m0
- mova [dstq +strideq +16], m7
- mova [dst8q+strideq ], m7
- pshufb m7, m0
- mova [dstq +strideq*2+16], m7
- mova [dst8q+strideq*2 ], m7
- pshufb m7, m0
- mova [dstq +stride3q +16], m7
- mova [dst8q+stride3q ], m7
- pshufb m7, m0
- lea dstq, [dstq+strideq*4]
- lea dst8q, [dst8q+strideq*4]
- mova [dstq +16], m7
- mova [dst8q ], m7
- pshufb m7, m0
- mova [dstq +strideq +16], m7
- mova [dst8q+strideq ], m7
- pshufb m7, m0
- mova [dstq +strideq*2+16], m7
- mova [dst8q+strideq*2 ], m7
- pshufb m7, m0
- mova [dstq +stride3q +16], m7
- mova [dst8q+stride3q ], m7
- pshufb m7, m0
- lea dstq, [dstq+strideq*4]
-
- ; output last half of 4th 8 lines
- mova [dstq +16], m7
- mova [dstq +strideq +16], m7
- mova [dstq +strideq*2+16], m7
- mova [dstq +stride3q +16], m7
- lea dstq, [dstq+strideq*4]
- mova [dstq +16], m7
- mova [dstq +strideq +16], m7
- mova [dstq +strideq*2+16], m7
- mova [dstq +stride3q +16], m7
-
- ; done!
- RESTORE_GOT
- RET
diff --git a/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_sse2.c b/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_sse2.c
deleted file mode 100644
index df5068c624..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_sse2.c
+++ /dev/null
@@ -1,4046 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/x86/inv_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-
-#define RECON_AND_STORE4X4(dest, in_x) \
-{ \
- __m128i d0 = _mm_cvtsi32_si128(*(const int *)(dest)); \
- d0 = _mm_unpacklo_epi8(d0, zero); \
- d0 = _mm_add_epi16(in_x, d0); \
- d0 = _mm_packus_epi16(d0, d0); \
- *(int *)(dest) = _mm_cvtsi128_si32(d0); \
-}
-
-void vpx_idct4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- const __m128i zero = _mm_setzero_si128();
- const __m128i eight = _mm_set1_epi16(8);
- const __m128i cst = _mm_setr_epi16(
- (int16_t)cospi_16_64, (int16_t)cospi_16_64, (int16_t)cospi_16_64,
- (int16_t)-cospi_16_64, (int16_t)cospi_24_64, (int16_t)-cospi_8_64,
- (int16_t)cospi_8_64, (int16_t)cospi_24_64);
- const __m128i rounding = _mm_set1_epi32(DCT_CONST_ROUNDING);
- __m128i input0, input1, input2, input3;
-
- // Rows
- input0 = load_input_data(input);
- input2 = load_input_data(input + 8);
-
- // Construct i3, i1, i3, i1, i2, i0, i2, i0
- input0 = _mm_shufflelo_epi16(input0, 0xd8);
- input0 = _mm_shufflehi_epi16(input0, 0xd8);
- input2 = _mm_shufflelo_epi16(input2, 0xd8);
- input2 = _mm_shufflehi_epi16(input2, 0xd8);
-
- input1 = _mm_unpackhi_epi32(input0, input0);
- input0 = _mm_unpacklo_epi32(input0, input0);
- input3 = _mm_unpackhi_epi32(input2, input2);
- input2 = _mm_unpacklo_epi32(input2, input2);
-
- // Stage 1
- input0 = _mm_madd_epi16(input0, cst);
- input1 = _mm_madd_epi16(input1, cst);
- input2 = _mm_madd_epi16(input2, cst);
- input3 = _mm_madd_epi16(input3, cst);
-
- input0 = _mm_add_epi32(input0, rounding);
- input1 = _mm_add_epi32(input1, rounding);
- input2 = _mm_add_epi32(input2, rounding);
- input3 = _mm_add_epi32(input3, rounding);
-
- input0 = _mm_srai_epi32(input0, DCT_CONST_BITS);
- input1 = _mm_srai_epi32(input1, DCT_CONST_BITS);
- input2 = _mm_srai_epi32(input2, DCT_CONST_BITS);
- input3 = _mm_srai_epi32(input3, DCT_CONST_BITS);
-
- // Stage 2
- input0 = _mm_packs_epi32(input0, input1);
- input1 = _mm_packs_epi32(input2, input3);
-
- // Transpose
- input2 = _mm_unpacklo_epi16(input0, input1);
- input3 = _mm_unpackhi_epi16(input0, input1);
- input0 = _mm_unpacklo_epi32(input2, input3);
- input1 = _mm_unpackhi_epi32(input2, input3);
-
- // Switch column2, column 3, and then, we got:
- // input2: column1, column 0; input3: column2, column 3.
- input1 = _mm_shuffle_epi32(input1, 0x4e);
- input2 = _mm_add_epi16(input0, input1);
- input3 = _mm_sub_epi16(input0, input1);
-
- // Columns
- // Construct i3, i1, i3, i1, i2, i0, i2, i0
- input0 = _mm_unpacklo_epi32(input2, input2);
- input1 = _mm_unpackhi_epi32(input2, input2);
- input2 = _mm_unpackhi_epi32(input3, input3);
- input3 = _mm_unpacklo_epi32(input3, input3);
-
- // Stage 1
- input0 = _mm_madd_epi16(input0, cst);
- input1 = _mm_madd_epi16(input1, cst);
- input2 = _mm_madd_epi16(input2, cst);
- input3 = _mm_madd_epi16(input3, cst);
-
- input0 = _mm_add_epi32(input0, rounding);
- input1 = _mm_add_epi32(input1, rounding);
- input2 = _mm_add_epi32(input2, rounding);
- input3 = _mm_add_epi32(input3, rounding);
-
- input0 = _mm_srai_epi32(input0, DCT_CONST_BITS);
- input1 = _mm_srai_epi32(input1, DCT_CONST_BITS);
- input2 = _mm_srai_epi32(input2, DCT_CONST_BITS);
- input3 = _mm_srai_epi32(input3, DCT_CONST_BITS);
-
- // Stage 2
- input0 = _mm_packs_epi32(input0, input2);
- input1 = _mm_packs_epi32(input1, input3);
-
- // Transpose
- input2 = _mm_unpacklo_epi16(input0, input1);
- input3 = _mm_unpackhi_epi16(input0, input1);
- input0 = _mm_unpacklo_epi32(input2, input3);
- input1 = _mm_unpackhi_epi32(input2, input3);
-
- // Switch column2, column 3, and then, we got:
- // input2: column1, column 0; input3: column2, column 3.
- input1 = _mm_shuffle_epi32(input1, 0x4e);
- input2 = _mm_add_epi16(input0, input1);
- input3 = _mm_sub_epi16(input0, input1);
-
- // Final round and shift
- input2 = _mm_add_epi16(input2, eight);
- input3 = _mm_add_epi16(input3, eight);
-
- input2 = _mm_srai_epi16(input2, 4);
- input3 = _mm_srai_epi16(input3, 4);
-
- // Reconstruction and Store
- {
- __m128i d0 = _mm_cvtsi32_si128(*(const int *)(dest));
- __m128i d2 = _mm_cvtsi32_si128(*(const int *)(dest + stride * 2));
- d0 = _mm_unpacklo_epi32(d0,
- _mm_cvtsi32_si128(*(const int *)(dest + stride)));
- d2 = _mm_unpacklo_epi32(
- _mm_cvtsi32_si128(*(const int *)(dest + stride * 3)), d2);
- d0 = _mm_unpacklo_epi8(d0, zero);
- d2 = _mm_unpacklo_epi8(d2, zero);
- d0 = _mm_add_epi16(d0, input2);
- d2 = _mm_add_epi16(d2, input3);
- d0 = _mm_packus_epi16(d0, d2);
- // store input0
- *(int *)dest = _mm_cvtsi128_si32(d0);
- // store input1
- d0 = _mm_srli_si128(d0, 4);
- *(int *)(dest + stride) = _mm_cvtsi128_si32(d0);
- // store input2
- d0 = _mm_srli_si128(d0, 4);
- *(int *)(dest + stride * 3) = _mm_cvtsi128_si32(d0);
- // store input3
- d0 = _mm_srli_si128(d0, 4);
- *(int *)(dest + stride * 2) = _mm_cvtsi128_si32(d0);
- }
-}
-
-void vpx_idct4x4_1_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- __m128i dc_value;
- const __m128i zero = _mm_setzero_si128();
- int a;
-
- a = (int)dct_const_round_shift(input[0] * cospi_16_64);
- a = (int)dct_const_round_shift(a * cospi_16_64);
- a = ROUND_POWER_OF_TWO(a, 4);
-
- dc_value = _mm_set1_epi16(a);
-
- RECON_AND_STORE4X4(dest + 0 * stride, dc_value);
- RECON_AND_STORE4X4(dest + 1 * stride, dc_value);
- RECON_AND_STORE4X4(dest + 2 * stride, dc_value);
- RECON_AND_STORE4X4(dest + 3 * stride, dc_value);
-}
-
-static INLINE void transpose_4x4(__m128i *res) {
- const __m128i tr0_0 = _mm_unpacklo_epi16(res[0], res[1]);
- const __m128i tr0_1 = _mm_unpackhi_epi16(res[0], res[1]);
-
- res[0] = _mm_unpacklo_epi16(tr0_0, tr0_1);
- res[1] = _mm_unpackhi_epi16(tr0_0, tr0_1);
-}
-
-void idct4_sse2(__m128i *in) {
- const __m128i k__cospi_p16_p16 = pair_set_epi16(cospi_16_64, cospi_16_64);
- const __m128i k__cospi_p16_m16 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i k__cospi_p24_m08 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i k__cospi_p08_p24 = pair_set_epi16(cospi_8_64, cospi_24_64);
- const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING);
- __m128i u[8], v[8];
-
- transpose_4x4(in);
- // stage 1
- u[0] = _mm_unpacklo_epi16(in[0], in[1]);
- u[1] = _mm_unpackhi_epi16(in[0], in[1]);
- v[0] = _mm_madd_epi16(u[0], k__cospi_p16_p16);
- v[1] = _mm_madd_epi16(u[0], k__cospi_p16_m16);
- v[2] = _mm_madd_epi16(u[1], k__cospi_p24_m08);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p08_p24);
-
- u[0] = _mm_add_epi32(v[0], k__DCT_CONST_ROUNDING);
- u[1] = _mm_add_epi32(v[1], k__DCT_CONST_ROUNDING);
- u[2] = _mm_add_epi32(v[2], k__DCT_CONST_ROUNDING);
- u[3] = _mm_add_epi32(v[3], k__DCT_CONST_ROUNDING);
-
- v[0] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
- v[1] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
- v[2] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
- v[3] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
-
- u[0] = _mm_packs_epi32(v[0], v[1]);
- u[1] = _mm_packs_epi32(v[3], v[2]);
-
- // stage 2
- in[0] = _mm_add_epi16(u[0], u[1]);
- in[1] = _mm_sub_epi16(u[0], u[1]);
- in[1] = _mm_shuffle_epi32(in[1], 0x4E);
-}
-
-void iadst4_sse2(__m128i *in) {
- const __m128i k__sinpi_p01_p04 = pair_set_epi16(sinpi_1_9, sinpi_4_9);
- const __m128i k__sinpi_p03_p02 = pair_set_epi16(sinpi_3_9, sinpi_2_9);
- const __m128i k__sinpi_p02_m01 = pair_set_epi16(sinpi_2_9, -sinpi_1_9);
- const __m128i k__sinpi_p03_m04 = pair_set_epi16(sinpi_3_9, -sinpi_4_9);
- const __m128i k__sinpi_p03_p03 = _mm_set1_epi16((int16_t)sinpi_3_9);
- const __m128i kZero = _mm_set1_epi16(0);
- const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING);
- __m128i u[8], v[8], in7;
-
- transpose_4x4(in);
- in7 = _mm_srli_si128(in[1], 8);
- in7 = _mm_add_epi16(in7, in[0]);
- in7 = _mm_sub_epi16(in7, in[1]);
-
- u[0] = _mm_unpacklo_epi16(in[0], in[1]);
- u[1] = _mm_unpackhi_epi16(in[0], in[1]);
- u[2] = _mm_unpacklo_epi16(in7, kZero);
- u[3] = _mm_unpackhi_epi16(in[0], kZero);
-
- v[0] = _mm_madd_epi16(u[0], k__sinpi_p01_p04); // s0 + s3
- v[1] = _mm_madd_epi16(u[1], k__sinpi_p03_p02); // s2 + s5
- v[2] = _mm_madd_epi16(u[2], k__sinpi_p03_p03); // x2
- v[3] = _mm_madd_epi16(u[0], k__sinpi_p02_m01); // s1 - s4
- v[4] = _mm_madd_epi16(u[1], k__sinpi_p03_m04); // s2 - s6
- v[5] = _mm_madd_epi16(u[3], k__sinpi_p03_p03); // s2
-
- u[0] = _mm_add_epi32(v[0], v[1]);
- u[1] = _mm_add_epi32(v[3], v[4]);
- u[2] = v[2];
- u[3] = _mm_add_epi32(u[0], u[1]);
- u[4] = _mm_slli_epi32(v[5], 2);
- u[5] = _mm_add_epi32(u[3], v[5]);
- u[6] = _mm_sub_epi32(u[5], u[4]);
-
- v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
- v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
- v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
- v[3] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-
- u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
- u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
- u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
- u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-
- in[0] = _mm_packs_epi32(u[0], u[1]);
- in[1] = _mm_packs_epi32(u[2], u[3]);
-}
-
-#define TRANSPOSE_8X8(in0, in1, in2, in3, in4, in5, in6, in7, \
- out0, out1, out2, out3, out4, out5, out6, out7) \
- { \
- const __m128i tr0_0 = _mm_unpacklo_epi16(in0, in1); \
- const __m128i tr0_1 = _mm_unpacklo_epi16(in2, in3); \
- const __m128i tr0_2 = _mm_unpackhi_epi16(in0, in1); \
- const __m128i tr0_3 = _mm_unpackhi_epi16(in2, in3); \
- const __m128i tr0_4 = _mm_unpacklo_epi16(in4, in5); \
- const __m128i tr0_5 = _mm_unpacklo_epi16(in6, in7); \
- const __m128i tr0_6 = _mm_unpackhi_epi16(in4, in5); \
- const __m128i tr0_7 = _mm_unpackhi_epi16(in6, in7); \
- \
- const __m128i tr1_0 = _mm_unpacklo_epi32(tr0_0, tr0_1); \
- const __m128i tr1_1 = _mm_unpacklo_epi32(tr0_2, tr0_3); \
- const __m128i tr1_2 = _mm_unpackhi_epi32(tr0_0, tr0_1); \
- const __m128i tr1_3 = _mm_unpackhi_epi32(tr0_2, tr0_3); \
- const __m128i tr1_4 = _mm_unpacklo_epi32(tr0_4, tr0_5); \
- const __m128i tr1_5 = _mm_unpacklo_epi32(tr0_6, tr0_7); \
- const __m128i tr1_6 = _mm_unpackhi_epi32(tr0_4, tr0_5); \
- const __m128i tr1_7 = _mm_unpackhi_epi32(tr0_6, tr0_7); \
- \
- out0 = _mm_unpacklo_epi64(tr1_0, tr1_4); \
- out1 = _mm_unpackhi_epi64(tr1_0, tr1_4); \
- out2 = _mm_unpacklo_epi64(tr1_2, tr1_6); \
- out3 = _mm_unpackhi_epi64(tr1_2, tr1_6); \
- out4 = _mm_unpacklo_epi64(tr1_1, tr1_5); \
- out5 = _mm_unpackhi_epi64(tr1_1, tr1_5); \
- out6 = _mm_unpacklo_epi64(tr1_3, tr1_7); \
- out7 = _mm_unpackhi_epi64(tr1_3, tr1_7); \
- }
-
-#define TRANSPOSE_4X8_10(tmp0, tmp1, tmp2, tmp3, \
- out0, out1, out2, out3) \
- { \
- const __m128i tr0_0 = _mm_unpackhi_epi16(tmp0, tmp1); \
- const __m128i tr0_1 = _mm_unpacklo_epi16(tmp1, tmp0); \
- const __m128i tr0_4 = _mm_unpacklo_epi16(tmp2, tmp3); \
- const __m128i tr0_5 = _mm_unpackhi_epi16(tmp3, tmp2); \
- \
- const __m128i tr1_0 = _mm_unpacklo_epi32(tr0_0, tr0_1); \
- const __m128i tr1_2 = _mm_unpackhi_epi32(tr0_0, tr0_1); \
- const __m128i tr1_4 = _mm_unpacklo_epi32(tr0_4, tr0_5); \
- const __m128i tr1_6 = _mm_unpackhi_epi32(tr0_4, tr0_5); \
- \
- out0 = _mm_unpacklo_epi64(tr1_0, tr1_4); \
- out1 = _mm_unpackhi_epi64(tr1_0, tr1_4); \
- out2 = _mm_unpacklo_epi64(tr1_2, tr1_6); \
- out3 = _mm_unpackhi_epi64(tr1_2, tr1_6); \
- }
-
-#define TRANSPOSE_8X8_10(in0, in1, in2, in3, out0, out1) \
- { \
- const __m128i tr0_0 = _mm_unpacklo_epi16(in0, in1); \
- const __m128i tr0_1 = _mm_unpacklo_epi16(in2, in3); \
- out0 = _mm_unpacklo_epi32(tr0_0, tr0_1); \
- out1 = _mm_unpackhi_epi32(tr0_0, tr0_1); \
- }
-
-// Define Macro for multiplying elements by constants and adding them together.
-#define MULTIPLICATION_AND_ADD(lo_0, hi_0, lo_1, hi_1, \
- cst0, cst1, cst2, cst3, res0, res1, res2, res3) \
- { \
- tmp0 = _mm_madd_epi16(lo_0, cst0); \
- tmp1 = _mm_madd_epi16(hi_0, cst0); \
- tmp2 = _mm_madd_epi16(lo_0, cst1); \
- tmp3 = _mm_madd_epi16(hi_0, cst1); \
- tmp4 = _mm_madd_epi16(lo_1, cst2); \
- tmp5 = _mm_madd_epi16(hi_1, cst2); \
- tmp6 = _mm_madd_epi16(lo_1, cst3); \
- tmp7 = _mm_madd_epi16(hi_1, cst3); \
- \
- tmp0 = _mm_add_epi32(tmp0, rounding); \
- tmp1 = _mm_add_epi32(tmp1, rounding); \
- tmp2 = _mm_add_epi32(tmp2, rounding); \
- tmp3 = _mm_add_epi32(tmp3, rounding); \
- tmp4 = _mm_add_epi32(tmp4, rounding); \
- tmp5 = _mm_add_epi32(tmp5, rounding); \
- tmp6 = _mm_add_epi32(tmp6, rounding); \
- tmp7 = _mm_add_epi32(tmp7, rounding); \
- \
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS); \
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS); \
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS); \
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS); \
- tmp4 = _mm_srai_epi32(tmp4, DCT_CONST_BITS); \
- tmp5 = _mm_srai_epi32(tmp5, DCT_CONST_BITS); \
- tmp6 = _mm_srai_epi32(tmp6, DCT_CONST_BITS); \
- tmp7 = _mm_srai_epi32(tmp7, DCT_CONST_BITS); \
- \
- res0 = _mm_packs_epi32(tmp0, tmp1); \
- res1 = _mm_packs_epi32(tmp2, tmp3); \
- res2 = _mm_packs_epi32(tmp4, tmp5); \
- res3 = _mm_packs_epi32(tmp6, tmp7); \
- }
-
-#define MULTIPLICATION_AND_ADD_2(lo_0, hi_0, cst0, cst1, res0, res1) \
- { \
- tmp0 = _mm_madd_epi16(lo_0, cst0); \
- tmp1 = _mm_madd_epi16(hi_0, cst0); \
- tmp2 = _mm_madd_epi16(lo_0, cst1); \
- tmp3 = _mm_madd_epi16(hi_0, cst1); \
- \
- tmp0 = _mm_add_epi32(tmp0, rounding); \
- tmp1 = _mm_add_epi32(tmp1, rounding); \
- tmp2 = _mm_add_epi32(tmp2, rounding); \
- tmp3 = _mm_add_epi32(tmp3, rounding); \
- \
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS); \
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS); \
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS); \
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS); \
- \
- res0 = _mm_packs_epi32(tmp0, tmp1); \
- res1 = _mm_packs_epi32(tmp2, tmp3); \
- }
-
-#define IDCT8(in0, in1, in2, in3, in4, in5, in6, in7, \
- out0, out1, out2, out3, out4, out5, out6, out7) \
- { \
- /* Stage1 */ \
- { \
- const __m128i lo_17 = _mm_unpacklo_epi16(in1, in7); \
- const __m128i hi_17 = _mm_unpackhi_epi16(in1, in7); \
- const __m128i lo_35 = _mm_unpacklo_epi16(in3, in5); \
- const __m128i hi_35 = _mm_unpackhi_epi16(in3, in5); \
- \
- MULTIPLICATION_AND_ADD(lo_17, hi_17, lo_35, hi_35, stg1_0, \
- stg1_1, stg1_2, stg1_3, stp1_4, \
- stp1_7, stp1_5, stp1_6) \
- } \
- \
- /* Stage2 */ \
- { \
- const __m128i lo_04 = _mm_unpacklo_epi16(in0, in4); \
- const __m128i hi_04 = _mm_unpackhi_epi16(in0, in4); \
- const __m128i lo_26 = _mm_unpacklo_epi16(in2, in6); \
- const __m128i hi_26 = _mm_unpackhi_epi16(in2, in6); \
- \
- MULTIPLICATION_AND_ADD(lo_04, hi_04, lo_26, hi_26, stg2_0, \
- stg2_1, stg2_2, stg2_3, stp2_0, \
- stp2_1, stp2_2, stp2_3) \
- \
- stp2_4 = _mm_adds_epi16(stp1_4, stp1_5); \
- stp2_5 = _mm_subs_epi16(stp1_4, stp1_5); \
- stp2_6 = _mm_subs_epi16(stp1_7, stp1_6); \
- stp2_7 = _mm_adds_epi16(stp1_7, stp1_6); \
- } \
- \
- /* Stage3 */ \
- { \
- const __m128i lo_56 = _mm_unpacklo_epi16(stp2_6, stp2_5); \
- const __m128i hi_56 = _mm_unpackhi_epi16(stp2_6, stp2_5); \
- \
- stp1_0 = _mm_adds_epi16(stp2_0, stp2_3); \
- stp1_1 = _mm_adds_epi16(stp2_1, stp2_2); \
- stp1_2 = _mm_subs_epi16(stp2_1, stp2_2); \
- stp1_3 = _mm_subs_epi16(stp2_0, stp2_3); \
- \
- tmp0 = _mm_madd_epi16(lo_56, stg2_1); \
- tmp1 = _mm_madd_epi16(hi_56, stg2_1); \
- tmp2 = _mm_madd_epi16(lo_56, stg2_0); \
- tmp3 = _mm_madd_epi16(hi_56, stg2_0); \
- \
- tmp0 = _mm_add_epi32(tmp0, rounding); \
- tmp1 = _mm_add_epi32(tmp1, rounding); \
- tmp2 = _mm_add_epi32(tmp2, rounding); \
- tmp3 = _mm_add_epi32(tmp3, rounding); \
- \
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS); \
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS); \
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS); \
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS); \
- \
- stp1_5 = _mm_packs_epi32(tmp0, tmp1); \
- stp1_6 = _mm_packs_epi32(tmp2, tmp3); \
- } \
- \
- /* Stage4 */ \
- out0 = _mm_adds_epi16(stp1_0, stp2_7); \
- out1 = _mm_adds_epi16(stp1_1, stp1_6); \
- out2 = _mm_adds_epi16(stp1_2, stp1_5); \
- out3 = _mm_adds_epi16(stp1_3, stp2_4); \
- out4 = _mm_subs_epi16(stp1_3, stp2_4); \
- out5 = _mm_subs_epi16(stp1_2, stp1_5); \
- out6 = _mm_subs_epi16(stp1_1, stp1_6); \
- out7 = _mm_subs_epi16(stp1_0, stp2_7); \
- }
-
-void vpx_idct8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- const __m128i zero = _mm_setzero_si128();
- const __m128i rounding = _mm_set1_epi32(DCT_CONST_ROUNDING);
- const __m128i final_rounding = _mm_set1_epi16(1 << 4);
- const __m128i stg1_0 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i stg1_1 = pair_set_epi16(cospi_4_64, cospi_28_64);
- const __m128i stg1_2 = pair_set_epi16(-cospi_20_64, cospi_12_64);
- const __m128i stg1_3 = pair_set_epi16(cospi_12_64, cospi_20_64);
- const __m128i stg2_0 = pair_set_epi16(cospi_16_64, cospi_16_64);
- const __m128i stg2_1 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i stg2_2 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i stg2_3 = pair_set_epi16(cospi_8_64, cospi_24_64);
-
- __m128i in0, in1, in2, in3, in4, in5, in6, in7;
- __m128i stp1_0, stp1_1, stp1_2, stp1_3, stp1_4, stp1_5, stp1_6, stp1_7;
- __m128i stp2_0, stp2_1, stp2_2, stp2_3, stp2_4, stp2_5, stp2_6, stp2_7;
- __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
- int i;
-
- // Load input data.
- in0 = load_input_data(input);
- in1 = load_input_data(input + 8 * 1);
- in2 = load_input_data(input + 8 * 2);
- in3 = load_input_data(input + 8 * 3);
- in4 = load_input_data(input + 8 * 4);
- in5 = load_input_data(input + 8 * 5);
- in6 = load_input_data(input + 8 * 6);
- in7 = load_input_data(input + 8 * 7);
-
- // 2-D
- for (i = 0; i < 2; i++) {
- // 8x8 Transpose is copied from vpx_fdct8x8_sse2()
- TRANSPOSE_8X8(in0, in1, in2, in3, in4, in5, in6, in7,
- in0, in1, in2, in3, in4, in5, in6, in7);
-
- // 4-stage 1D idct8x8
- IDCT8(in0, in1, in2, in3, in4, in5, in6, in7,
- in0, in1, in2, in3, in4, in5, in6, in7);
- }
-
- // Final rounding and shift
- in0 = _mm_adds_epi16(in0, final_rounding);
- in1 = _mm_adds_epi16(in1, final_rounding);
- in2 = _mm_adds_epi16(in2, final_rounding);
- in3 = _mm_adds_epi16(in3, final_rounding);
- in4 = _mm_adds_epi16(in4, final_rounding);
- in5 = _mm_adds_epi16(in5, final_rounding);
- in6 = _mm_adds_epi16(in6, final_rounding);
- in7 = _mm_adds_epi16(in7, final_rounding);
-
- in0 = _mm_srai_epi16(in0, 5);
- in1 = _mm_srai_epi16(in1, 5);
- in2 = _mm_srai_epi16(in2, 5);
- in3 = _mm_srai_epi16(in3, 5);
- in4 = _mm_srai_epi16(in4, 5);
- in5 = _mm_srai_epi16(in5, 5);
- in6 = _mm_srai_epi16(in6, 5);
- in7 = _mm_srai_epi16(in7, 5);
-
- RECON_AND_STORE(dest + 0 * stride, in0);
- RECON_AND_STORE(dest + 1 * stride, in1);
- RECON_AND_STORE(dest + 2 * stride, in2);
- RECON_AND_STORE(dest + 3 * stride, in3);
- RECON_AND_STORE(dest + 4 * stride, in4);
- RECON_AND_STORE(dest + 5 * stride, in5);
- RECON_AND_STORE(dest + 6 * stride, in6);
- RECON_AND_STORE(dest + 7 * stride, in7);
-}
-
-void vpx_idct8x8_1_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- __m128i dc_value;
- const __m128i zero = _mm_setzero_si128();
- int a;
-
- a = (int)dct_const_round_shift(input[0] * cospi_16_64);
- a = (int)dct_const_round_shift(a * cospi_16_64);
- a = ROUND_POWER_OF_TWO(a, 5);
-
- dc_value = _mm_set1_epi16(a);
-
- RECON_AND_STORE(dest + 0 * stride, dc_value);
- RECON_AND_STORE(dest + 1 * stride, dc_value);
- RECON_AND_STORE(dest + 2 * stride, dc_value);
- RECON_AND_STORE(dest + 3 * stride, dc_value);
- RECON_AND_STORE(dest + 4 * stride, dc_value);
- RECON_AND_STORE(dest + 5 * stride, dc_value);
- RECON_AND_STORE(dest + 6 * stride, dc_value);
- RECON_AND_STORE(dest + 7 * stride, dc_value);
-}
-
-void idct8_sse2(__m128i *in) {
- const __m128i rounding = _mm_set1_epi32(DCT_CONST_ROUNDING);
- const __m128i stg1_0 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i stg1_1 = pair_set_epi16(cospi_4_64, cospi_28_64);
- const __m128i stg1_2 = pair_set_epi16(-cospi_20_64, cospi_12_64);
- const __m128i stg1_3 = pair_set_epi16(cospi_12_64, cospi_20_64);
- const __m128i stg2_0 = pair_set_epi16(cospi_16_64, cospi_16_64);
- const __m128i stg2_1 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i stg2_2 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i stg2_3 = pair_set_epi16(cospi_8_64, cospi_24_64);
-
- __m128i in0, in1, in2, in3, in4, in5, in6, in7;
- __m128i stp1_0, stp1_1, stp1_2, stp1_3, stp1_4, stp1_5, stp1_6, stp1_7;
- __m128i stp2_0, stp2_1, stp2_2, stp2_3, stp2_4, stp2_5, stp2_6, stp2_7;
- __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-
- // 8x8 Transpose is copied from vpx_fdct8x8_sse2()
- TRANSPOSE_8X8(in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7],
- in0, in1, in2, in3, in4, in5, in6, in7);
-
- // 4-stage 1D idct8x8
- IDCT8(in0, in1, in2, in3, in4, in5, in6, in7,
- in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7]);
-}
-
-void iadst8_sse2(__m128i *in) {
- const __m128i k__cospi_p02_p30 = pair_set_epi16(cospi_2_64, cospi_30_64);
- const __m128i k__cospi_p30_m02 = pair_set_epi16(cospi_30_64, -cospi_2_64);
- const __m128i k__cospi_p10_p22 = pair_set_epi16(cospi_10_64, cospi_22_64);
- const __m128i k__cospi_p22_m10 = pair_set_epi16(cospi_22_64, -cospi_10_64);
- const __m128i k__cospi_p18_p14 = pair_set_epi16(cospi_18_64, cospi_14_64);
- const __m128i k__cospi_p14_m18 = pair_set_epi16(cospi_14_64, -cospi_18_64);
- const __m128i k__cospi_p26_p06 = pair_set_epi16(cospi_26_64, cospi_6_64);
- const __m128i k__cospi_p06_m26 = pair_set_epi16(cospi_6_64, -cospi_26_64);
- const __m128i k__cospi_p08_p24 = pair_set_epi16(cospi_8_64, cospi_24_64);
- const __m128i k__cospi_p24_m08 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i k__cospi_m24_p08 = pair_set_epi16(-cospi_24_64, cospi_8_64);
- const __m128i k__cospi_p16_m16 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i k__cospi_p16_p16 = _mm_set1_epi16((int16_t)cospi_16_64);
- const __m128i k__const_0 = _mm_set1_epi16(0);
- const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING);
-
- __m128i u0, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15;
- __m128i v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15;
- __m128i w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15;
- __m128i s0, s1, s2, s3, s4, s5, s6, s7;
- __m128i in0, in1, in2, in3, in4, in5, in6, in7;
-
- // transpose
- array_transpose_8x8(in, in);
-
- // properly aligned for butterfly input
- in0 = in[7];
- in1 = in[0];
- in2 = in[5];
- in3 = in[2];
- in4 = in[3];
- in5 = in[4];
- in6 = in[1];
- in7 = in[6];
-
- // column transformation
- // stage 1
- // interleave and multiply/add into 32-bit integer
- s0 = _mm_unpacklo_epi16(in0, in1);
- s1 = _mm_unpackhi_epi16(in0, in1);
- s2 = _mm_unpacklo_epi16(in2, in3);
- s3 = _mm_unpackhi_epi16(in2, in3);
- s4 = _mm_unpacklo_epi16(in4, in5);
- s5 = _mm_unpackhi_epi16(in4, in5);
- s6 = _mm_unpacklo_epi16(in6, in7);
- s7 = _mm_unpackhi_epi16(in6, in7);
-
- u0 = _mm_madd_epi16(s0, k__cospi_p02_p30);
- u1 = _mm_madd_epi16(s1, k__cospi_p02_p30);
- u2 = _mm_madd_epi16(s0, k__cospi_p30_m02);
- u3 = _mm_madd_epi16(s1, k__cospi_p30_m02);
- u4 = _mm_madd_epi16(s2, k__cospi_p10_p22);
- u5 = _mm_madd_epi16(s3, k__cospi_p10_p22);
- u6 = _mm_madd_epi16(s2, k__cospi_p22_m10);
- u7 = _mm_madd_epi16(s3, k__cospi_p22_m10);
- u8 = _mm_madd_epi16(s4, k__cospi_p18_p14);
- u9 = _mm_madd_epi16(s5, k__cospi_p18_p14);
- u10 = _mm_madd_epi16(s4, k__cospi_p14_m18);
- u11 = _mm_madd_epi16(s5, k__cospi_p14_m18);
- u12 = _mm_madd_epi16(s6, k__cospi_p26_p06);
- u13 = _mm_madd_epi16(s7, k__cospi_p26_p06);
- u14 = _mm_madd_epi16(s6, k__cospi_p06_m26);
- u15 = _mm_madd_epi16(s7, k__cospi_p06_m26);
-
- // addition
- w0 = _mm_add_epi32(u0, u8);
- w1 = _mm_add_epi32(u1, u9);
- w2 = _mm_add_epi32(u2, u10);
- w3 = _mm_add_epi32(u3, u11);
- w4 = _mm_add_epi32(u4, u12);
- w5 = _mm_add_epi32(u5, u13);
- w6 = _mm_add_epi32(u6, u14);
- w7 = _mm_add_epi32(u7, u15);
- w8 = _mm_sub_epi32(u0, u8);
- w9 = _mm_sub_epi32(u1, u9);
- w10 = _mm_sub_epi32(u2, u10);
- w11 = _mm_sub_epi32(u3, u11);
- w12 = _mm_sub_epi32(u4, u12);
- w13 = _mm_sub_epi32(u5, u13);
- w14 = _mm_sub_epi32(u6, u14);
- w15 = _mm_sub_epi32(u7, u15);
-
- // shift and rounding
- v0 = _mm_add_epi32(w0, k__DCT_CONST_ROUNDING);
- v1 = _mm_add_epi32(w1, k__DCT_CONST_ROUNDING);
- v2 = _mm_add_epi32(w2, k__DCT_CONST_ROUNDING);
- v3 = _mm_add_epi32(w3, k__DCT_CONST_ROUNDING);
- v4 = _mm_add_epi32(w4, k__DCT_CONST_ROUNDING);
- v5 = _mm_add_epi32(w5, k__DCT_CONST_ROUNDING);
- v6 = _mm_add_epi32(w6, k__DCT_CONST_ROUNDING);
- v7 = _mm_add_epi32(w7, k__DCT_CONST_ROUNDING);
- v8 = _mm_add_epi32(w8, k__DCT_CONST_ROUNDING);
- v9 = _mm_add_epi32(w9, k__DCT_CONST_ROUNDING);
- v10 = _mm_add_epi32(w10, k__DCT_CONST_ROUNDING);
- v11 = _mm_add_epi32(w11, k__DCT_CONST_ROUNDING);
- v12 = _mm_add_epi32(w12, k__DCT_CONST_ROUNDING);
- v13 = _mm_add_epi32(w13, k__DCT_CONST_ROUNDING);
- v14 = _mm_add_epi32(w14, k__DCT_CONST_ROUNDING);
- v15 = _mm_add_epi32(w15, k__DCT_CONST_ROUNDING);
-
- u0 = _mm_srai_epi32(v0, DCT_CONST_BITS);
- u1 = _mm_srai_epi32(v1, DCT_CONST_BITS);
- u2 = _mm_srai_epi32(v2, DCT_CONST_BITS);
- u3 = _mm_srai_epi32(v3, DCT_CONST_BITS);
- u4 = _mm_srai_epi32(v4, DCT_CONST_BITS);
- u5 = _mm_srai_epi32(v5, DCT_CONST_BITS);
- u6 = _mm_srai_epi32(v6, DCT_CONST_BITS);
- u7 = _mm_srai_epi32(v7, DCT_CONST_BITS);
- u8 = _mm_srai_epi32(v8, DCT_CONST_BITS);
- u9 = _mm_srai_epi32(v9, DCT_CONST_BITS);
- u10 = _mm_srai_epi32(v10, DCT_CONST_BITS);
- u11 = _mm_srai_epi32(v11, DCT_CONST_BITS);
- u12 = _mm_srai_epi32(v12, DCT_CONST_BITS);
- u13 = _mm_srai_epi32(v13, DCT_CONST_BITS);
- u14 = _mm_srai_epi32(v14, DCT_CONST_BITS);
- u15 = _mm_srai_epi32(v15, DCT_CONST_BITS);
-
- // back to 16-bit and pack 8 integers into __m128i
- in[0] = _mm_packs_epi32(u0, u1);
- in[1] = _mm_packs_epi32(u2, u3);
- in[2] = _mm_packs_epi32(u4, u5);
- in[3] = _mm_packs_epi32(u6, u7);
- in[4] = _mm_packs_epi32(u8, u9);
- in[5] = _mm_packs_epi32(u10, u11);
- in[6] = _mm_packs_epi32(u12, u13);
- in[7] = _mm_packs_epi32(u14, u15);
-
- // stage 2
- s0 = _mm_add_epi16(in[0], in[2]);
- s1 = _mm_add_epi16(in[1], in[3]);
- s2 = _mm_sub_epi16(in[0], in[2]);
- s3 = _mm_sub_epi16(in[1], in[3]);
- u0 = _mm_unpacklo_epi16(in[4], in[5]);
- u1 = _mm_unpackhi_epi16(in[4], in[5]);
- u2 = _mm_unpacklo_epi16(in[6], in[7]);
- u3 = _mm_unpackhi_epi16(in[6], in[7]);
-
- v0 = _mm_madd_epi16(u0, k__cospi_p08_p24);
- v1 = _mm_madd_epi16(u1, k__cospi_p08_p24);
- v2 = _mm_madd_epi16(u0, k__cospi_p24_m08);
- v3 = _mm_madd_epi16(u1, k__cospi_p24_m08);
- v4 = _mm_madd_epi16(u2, k__cospi_m24_p08);
- v5 = _mm_madd_epi16(u3, k__cospi_m24_p08);
- v6 = _mm_madd_epi16(u2, k__cospi_p08_p24);
- v7 = _mm_madd_epi16(u3, k__cospi_p08_p24);
-
- w0 = _mm_add_epi32(v0, v4);
- w1 = _mm_add_epi32(v1, v5);
- w2 = _mm_add_epi32(v2, v6);
- w3 = _mm_add_epi32(v3, v7);
- w4 = _mm_sub_epi32(v0, v4);
- w5 = _mm_sub_epi32(v1, v5);
- w6 = _mm_sub_epi32(v2, v6);
- w7 = _mm_sub_epi32(v3, v7);
-
- v0 = _mm_add_epi32(w0, k__DCT_CONST_ROUNDING);
- v1 = _mm_add_epi32(w1, k__DCT_CONST_ROUNDING);
- v2 = _mm_add_epi32(w2, k__DCT_CONST_ROUNDING);
- v3 = _mm_add_epi32(w3, k__DCT_CONST_ROUNDING);
- v4 = _mm_add_epi32(w4, k__DCT_CONST_ROUNDING);
- v5 = _mm_add_epi32(w5, k__DCT_CONST_ROUNDING);
- v6 = _mm_add_epi32(w6, k__DCT_CONST_ROUNDING);
- v7 = _mm_add_epi32(w7, k__DCT_CONST_ROUNDING);
-
- u0 = _mm_srai_epi32(v0, DCT_CONST_BITS);
- u1 = _mm_srai_epi32(v1, DCT_CONST_BITS);
- u2 = _mm_srai_epi32(v2, DCT_CONST_BITS);
- u3 = _mm_srai_epi32(v3, DCT_CONST_BITS);
- u4 = _mm_srai_epi32(v4, DCT_CONST_BITS);
- u5 = _mm_srai_epi32(v5, DCT_CONST_BITS);
- u6 = _mm_srai_epi32(v6, DCT_CONST_BITS);
- u7 = _mm_srai_epi32(v7, DCT_CONST_BITS);
-
- // back to 16-bit intergers
- s4 = _mm_packs_epi32(u0, u1);
- s5 = _mm_packs_epi32(u2, u3);
- s6 = _mm_packs_epi32(u4, u5);
- s7 = _mm_packs_epi32(u6, u7);
-
- // stage 3
- u0 = _mm_unpacklo_epi16(s2, s3);
- u1 = _mm_unpackhi_epi16(s2, s3);
- u2 = _mm_unpacklo_epi16(s6, s7);
- u3 = _mm_unpackhi_epi16(s6, s7);
-
- v0 = _mm_madd_epi16(u0, k__cospi_p16_p16);
- v1 = _mm_madd_epi16(u1, k__cospi_p16_p16);
- v2 = _mm_madd_epi16(u0, k__cospi_p16_m16);
- v3 = _mm_madd_epi16(u1, k__cospi_p16_m16);
- v4 = _mm_madd_epi16(u2, k__cospi_p16_p16);
- v5 = _mm_madd_epi16(u3, k__cospi_p16_p16);
- v6 = _mm_madd_epi16(u2, k__cospi_p16_m16);
- v7 = _mm_madd_epi16(u3, k__cospi_p16_m16);
-
- u0 = _mm_add_epi32(v0, k__DCT_CONST_ROUNDING);
- u1 = _mm_add_epi32(v1, k__DCT_CONST_ROUNDING);
- u2 = _mm_add_epi32(v2, k__DCT_CONST_ROUNDING);
- u3 = _mm_add_epi32(v3, k__DCT_CONST_ROUNDING);
- u4 = _mm_add_epi32(v4, k__DCT_CONST_ROUNDING);
- u5 = _mm_add_epi32(v5, k__DCT_CONST_ROUNDING);
- u6 = _mm_add_epi32(v6, k__DCT_CONST_ROUNDING);
- u7 = _mm_add_epi32(v7, k__DCT_CONST_ROUNDING);
-
- v0 = _mm_srai_epi32(u0, DCT_CONST_BITS);
- v1 = _mm_srai_epi32(u1, DCT_CONST_BITS);
- v2 = _mm_srai_epi32(u2, DCT_CONST_BITS);
- v3 = _mm_srai_epi32(u3, DCT_CONST_BITS);
- v4 = _mm_srai_epi32(u4, DCT_CONST_BITS);
- v5 = _mm_srai_epi32(u5, DCT_CONST_BITS);
- v6 = _mm_srai_epi32(u6, DCT_CONST_BITS);
- v7 = _mm_srai_epi32(u7, DCT_CONST_BITS);
-
- s2 = _mm_packs_epi32(v0, v1);
- s3 = _mm_packs_epi32(v2, v3);
- s6 = _mm_packs_epi32(v4, v5);
- s7 = _mm_packs_epi32(v6, v7);
-
- in[0] = s0;
- in[1] = _mm_sub_epi16(k__const_0, s4);
- in[2] = s6;
- in[3] = _mm_sub_epi16(k__const_0, s2);
- in[4] = s3;
- in[5] = _mm_sub_epi16(k__const_0, s7);
- in[6] = s5;
- in[7] = _mm_sub_epi16(k__const_0, s1);
-}
-
-void vpx_idct8x8_12_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- const __m128i zero = _mm_setzero_si128();
- const __m128i rounding = _mm_set1_epi32(DCT_CONST_ROUNDING);
- const __m128i final_rounding = _mm_set1_epi16(1 << 4);
- const __m128i stg1_0 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i stg1_1 = pair_set_epi16(cospi_4_64, cospi_28_64);
- const __m128i stg1_2 = pair_set_epi16(-cospi_20_64, cospi_12_64);
- const __m128i stg1_3 = pair_set_epi16(cospi_12_64, cospi_20_64);
- const __m128i stg2_0 = pair_set_epi16(cospi_16_64, cospi_16_64);
- const __m128i stg2_1 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i stg2_2 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i stg2_3 = pair_set_epi16(cospi_8_64, cospi_24_64);
- const __m128i stg3_0 = pair_set_epi16(-cospi_16_64, cospi_16_64);
-
- __m128i in0, in1, in2, in3, in4, in5, in6, in7;
- __m128i stp1_0, stp1_1, stp1_2, stp1_3, stp1_4, stp1_5, stp1_6, stp1_7;
- __m128i stp2_0, stp2_1, stp2_2, stp2_3, stp2_4, stp2_5, stp2_6, stp2_7;
- __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-
- // Rows. Load 4-row input data.
- in0 = load_input_data(input);
- in1 = load_input_data(input + 8 * 1);
- in2 = load_input_data(input + 8 * 2);
- in3 = load_input_data(input + 8 * 3);
-
- // 8x4 Transpose
- TRANSPOSE_8X8_10(in0, in1, in2, in3, in0, in1);
- // Stage1
- {
- const __m128i lo_17 = _mm_unpackhi_epi16(in0, zero);
- const __m128i lo_35 = _mm_unpackhi_epi16(in1, zero);
-
- tmp0 = _mm_madd_epi16(lo_17, stg1_0);
- tmp2 = _mm_madd_epi16(lo_17, stg1_1);
- tmp4 = _mm_madd_epi16(lo_35, stg1_2);
- tmp6 = _mm_madd_epi16(lo_35, stg1_3);
-
- tmp0 = _mm_add_epi32(tmp0, rounding);
- tmp2 = _mm_add_epi32(tmp2, rounding);
- tmp4 = _mm_add_epi32(tmp4, rounding);
- tmp6 = _mm_add_epi32(tmp6, rounding);
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS);
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS);
- tmp4 = _mm_srai_epi32(tmp4, DCT_CONST_BITS);
- tmp6 = _mm_srai_epi32(tmp6, DCT_CONST_BITS);
-
- stp1_4 = _mm_packs_epi32(tmp0, tmp2);
- stp1_5 = _mm_packs_epi32(tmp4, tmp6);
- }
-
- // Stage2
- {
- const __m128i lo_04 = _mm_unpacklo_epi16(in0, zero);
- const __m128i lo_26 = _mm_unpacklo_epi16(in1, zero);
-
- tmp0 = _mm_madd_epi16(lo_04, stg2_0);
- tmp2 = _mm_madd_epi16(lo_04, stg2_1);
- tmp4 = _mm_madd_epi16(lo_26, stg2_2);
- tmp6 = _mm_madd_epi16(lo_26, stg2_3);
-
- tmp0 = _mm_add_epi32(tmp0, rounding);
- tmp2 = _mm_add_epi32(tmp2, rounding);
- tmp4 = _mm_add_epi32(tmp4, rounding);
- tmp6 = _mm_add_epi32(tmp6, rounding);
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS);
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS);
- tmp4 = _mm_srai_epi32(tmp4, DCT_CONST_BITS);
- tmp6 = _mm_srai_epi32(tmp6, DCT_CONST_BITS);
-
- stp2_0 = _mm_packs_epi32(tmp0, tmp2);
- stp2_2 = _mm_packs_epi32(tmp6, tmp4);
-
- tmp0 = _mm_adds_epi16(stp1_4, stp1_5);
- tmp1 = _mm_subs_epi16(stp1_4, stp1_5);
-
- stp2_4 = tmp0;
- stp2_5 = _mm_unpacklo_epi64(tmp1, zero);
- stp2_6 = _mm_unpackhi_epi64(tmp1, zero);
- }
-
- // Stage3
- {
- const __m128i lo_56 = _mm_unpacklo_epi16(stp2_5, stp2_6);
-
- tmp4 = _mm_adds_epi16(stp2_0, stp2_2);
- tmp6 = _mm_subs_epi16(stp2_0, stp2_2);
-
- stp1_2 = _mm_unpackhi_epi64(tmp6, tmp4);
- stp1_3 = _mm_unpacklo_epi64(tmp6, tmp4);
-
- tmp0 = _mm_madd_epi16(lo_56, stg3_0);
- tmp2 = _mm_madd_epi16(lo_56, stg2_0); // stg3_1 = stg2_0
-
- tmp0 = _mm_add_epi32(tmp0, rounding);
- tmp2 = _mm_add_epi32(tmp2, rounding);
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS);
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS);
-
- stp1_5 = _mm_packs_epi32(tmp0, tmp2);
- }
-
- // Stage4
- tmp0 = _mm_adds_epi16(stp1_3, stp2_4);
- tmp1 = _mm_adds_epi16(stp1_2, stp1_5);
- tmp2 = _mm_subs_epi16(stp1_3, stp2_4);
- tmp3 = _mm_subs_epi16(stp1_2, stp1_5);
-
- TRANSPOSE_4X8_10(tmp0, tmp1, tmp2, tmp3, in0, in1, in2, in3)
-
- IDCT8(in0, in1, in2, in3, zero, zero, zero, zero,
- in0, in1, in2, in3, in4, in5, in6, in7);
- // Final rounding and shift
- in0 = _mm_adds_epi16(in0, final_rounding);
- in1 = _mm_adds_epi16(in1, final_rounding);
- in2 = _mm_adds_epi16(in2, final_rounding);
- in3 = _mm_adds_epi16(in3, final_rounding);
- in4 = _mm_adds_epi16(in4, final_rounding);
- in5 = _mm_adds_epi16(in5, final_rounding);
- in6 = _mm_adds_epi16(in6, final_rounding);
- in7 = _mm_adds_epi16(in7, final_rounding);
-
- in0 = _mm_srai_epi16(in0, 5);
- in1 = _mm_srai_epi16(in1, 5);
- in2 = _mm_srai_epi16(in2, 5);
- in3 = _mm_srai_epi16(in3, 5);
- in4 = _mm_srai_epi16(in4, 5);
- in5 = _mm_srai_epi16(in5, 5);
- in6 = _mm_srai_epi16(in6, 5);
- in7 = _mm_srai_epi16(in7, 5);
-
- RECON_AND_STORE(dest + 0 * stride, in0);
- RECON_AND_STORE(dest + 1 * stride, in1);
- RECON_AND_STORE(dest + 2 * stride, in2);
- RECON_AND_STORE(dest + 3 * stride, in3);
- RECON_AND_STORE(dest + 4 * stride, in4);
- RECON_AND_STORE(dest + 5 * stride, in5);
- RECON_AND_STORE(dest + 6 * stride, in6);
- RECON_AND_STORE(dest + 7 * stride, in7);
-}
-
-#define IDCT16 \
- /* Stage2 */ \
- { \
- const __m128i lo_1_15 = _mm_unpacklo_epi16(in[1], in[15]); \
- const __m128i hi_1_15 = _mm_unpackhi_epi16(in[1], in[15]); \
- const __m128i lo_9_7 = _mm_unpacklo_epi16(in[9], in[7]); \
- const __m128i hi_9_7 = _mm_unpackhi_epi16(in[9], in[7]); \
- const __m128i lo_5_11 = _mm_unpacklo_epi16(in[5], in[11]); \
- const __m128i hi_5_11 = _mm_unpackhi_epi16(in[5], in[11]); \
- const __m128i lo_13_3 = _mm_unpacklo_epi16(in[13], in[3]); \
- const __m128i hi_13_3 = _mm_unpackhi_epi16(in[13], in[3]); \
- \
- MULTIPLICATION_AND_ADD(lo_1_15, hi_1_15, lo_9_7, hi_9_7, \
- stg2_0, stg2_1, stg2_2, stg2_3, \
- stp2_8, stp2_15, stp2_9, stp2_14) \
- \
- MULTIPLICATION_AND_ADD(lo_5_11, hi_5_11, lo_13_3, hi_13_3, \
- stg2_4, stg2_5, stg2_6, stg2_7, \
- stp2_10, stp2_13, stp2_11, stp2_12) \
- } \
- \
- /* Stage3 */ \
- { \
- const __m128i lo_2_14 = _mm_unpacklo_epi16(in[2], in[14]); \
- const __m128i hi_2_14 = _mm_unpackhi_epi16(in[2], in[14]); \
- const __m128i lo_10_6 = _mm_unpacklo_epi16(in[10], in[6]); \
- const __m128i hi_10_6 = _mm_unpackhi_epi16(in[10], in[6]); \
- \
- MULTIPLICATION_AND_ADD(lo_2_14, hi_2_14, lo_10_6, hi_10_6, \
- stg3_0, stg3_1, stg3_2, stg3_3, \
- stp1_4, stp1_7, stp1_5, stp1_6) \
- \
- stp1_8_0 = _mm_add_epi16(stp2_8, stp2_9); \
- stp1_9 = _mm_sub_epi16(stp2_8, stp2_9); \
- stp1_10 = _mm_sub_epi16(stp2_11, stp2_10); \
- stp1_11 = _mm_add_epi16(stp2_11, stp2_10); \
- \
- stp1_12_0 = _mm_add_epi16(stp2_12, stp2_13); \
- stp1_13 = _mm_sub_epi16(stp2_12, stp2_13); \
- stp1_14 = _mm_sub_epi16(stp2_15, stp2_14); \
- stp1_15 = _mm_add_epi16(stp2_15, stp2_14); \
- } \
- \
- /* Stage4 */ \
- { \
- const __m128i lo_0_8 = _mm_unpacklo_epi16(in[0], in[8]); \
- const __m128i hi_0_8 = _mm_unpackhi_epi16(in[0], in[8]); \
- const __m128i lo_4_12 = _mm_unpacklo_epi16(in[4], in[12]); \
- const __m128i hi_4_12 = _mm_unpackhi_epi16(in[4], in[12]); \
- \
- const __m128i lo_9_14 = _mm_unpacklo_epi16(stp1_9, stp1_14); \
- const __m128i hi_9_14 = _mm_unpackhi_epi16(stp1_9, stp1_14); \
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp1_10, stp1_13); \
- const __m128i hi_10_13 = _mm_unpackhi_epi16(stp1_10, stp1_13); \
- \
- MULTIPLICATION_AND_ADD(lo_0_8, hi_0_8, lo_4_12, hi_4_12, \
- stg4_0, stg4_1, stg4_2, stg4_3, \
- stp2_0, stp2_1, stp2_2, stp2_3) \
- \
- stp2_4 = _mm_add_epi16(stp1_4, stp1_5); \
- stp2_5 = _mm_sub_epi16(stp1_4, stp1_5); \
- stp2_6 = _mm_sub_epi16(stp1_7, stp1_6); \
- stp2_7 = _mm_add_epi16(stp1_7, stp1_6); \
- \
- MULTIPLICATION_AND_ADD(lo_9_14, hi_9_14, lo_10_13, hi_10_13, \
- stg4_4, stg4_5, stg4_6, stg4_7, \
- stp2_9, stp2_14, stp2_10, stp2_13) \
- } \
- \
- /* Stage5 */ \
- { \
- const __m128i lo_6_5 = _mm_unpacklo_epi16(stp2_6, stp2_5); \
- const __m128i hi_6_5 = _mm_unpackhi_epi16(stp2_6, stp2_5); \
- \
- stp1_0 = _mm_add_epi16(stp2_0, stp2_3); \
- stp1_1 = _mm_add_epi16(stp2_1, stp2_2); \
- stp1_2 = _mm_sub_epi16(stp2_1, stp2_2); \
- stp1_3 = _mm_sub_epi16(stp2_0, stp2_3); \
- \
- tmp0 = _mm_madd_epi16(lo_6_5, stg4_1); \
- tmp1 = _mm_madd_epi16(hi_6_5, stg4_1); \
- tmp2 = _mm_madd_epi16(lo_6_5, stg4_0); \
- tmp3 = _mm_madd_epi16(hi_6_5, stg4_0); \
- \
- tmp0 = _mm_add_epi32(tmp0, rounding); \
- tmp1 = _mm_add_epi32(tmp1, rounding); \
- tmp2 = _mm_add_epi32(tmp2, rounding); \
- tmp3 = _mm_add_epi32(tmp3, rounding); \
- \
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS); \
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS); \
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS); \
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS); \
- \
- stp1_5 = _mm_packs_epi32(tmp0, tmp1); \
- stp1_6 = _mm_packs_epi32(tmp2, tmp3); \
- \
- stp1_8 = _mm_add_epi16(stp1_8_0, stp1_11); \
- stp1_9 = _mm_add_epi16(stp2_9, stp2_10); \
- stp1_10 = _mm_sub_epi16(stp2_9, stp2_10); \
- stp1_11 = _mm_sub_epi16(stp1_8_0, stp1_11); \
- \
- stp1_12 = _mm_sub_epi16(stp1_15, stp1_12_0); \
- stp1_13 = _mm_sub_epi16(stp2_14, stp2_13); \
- stp1_14 = _mm_add_epi16(stp2_14, stp2_13); \
- stp1_15 = _mm_add_epi16(stp1_15, stp1_12_0); \
- } \
- \
- /* Stage6 */ \
- { \
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp1_10, stp1_13); \
- const __m128i hi_10_13 = _mm_unpackhi_epi16(stp1_10, stp1_13); \
- const __m128i lo_11_12 = _mm_unpacklo_epi16(stp1_11, stp1_12); \
- const __m128i hi_11_12 = _mm_unpackhi_epi16(stp1_11, stp1_12); \
- \
- stp2_0 = _mm_add_epi16(stp1_0, stp2_7); \
- stp2_1 = _mm_add_epi16(stp1_1, stp1_6); \
- stp2_2 = _mm_add_epi16(stp1_2, stp1_5); \
- stp2_3 = _mm_add_epi16(stp1_3, stp2_4); \
- stp2_4 = _mm_sub_epi16(stp1_3, stp2_4); \
- stp2_5 = _mm_sub_epi16(stp1_2, stp1_5); \
- stp2_6 = _mm_sub_epi16(stp1_1, stp1_6); \
- stp2_7 = _mm_sub_epi16(stp1_0, stp2_7); \
- \
- MULTIPLICATION_AND_ADD(lo_10_13, hi_10_13, lo_11_12, hi_11_12, \
- stg6_0, stg4_0, stg6_0, stg4_0, \
- stp2_10, stp2_13, stp2_11, stp2_12) \
- }
-
-#define IDCT16_10 \
- /* Stage2 */ \
- { \
- const __m128i lo_1_15 = _mm_unpacklo_epi16(in[1], zero); \
- const __m128i hi_1_15 = _mm_unpackhi_epi16(in[1], zero); \
- const __m128i lo_13_3 = _mm_unpacklo_epi16(zero, in[3]); \
- const __m128i hi_13_3 = _mm_unpackhi_epi16(zero, in[3]); \
- \
- MULTIPLICATION_AND_ADD(lo_1_15, hi_1_15, lo_13_3, hi_13_3, \
- stg2_0, stg2_1, stg2_6, stg2_7, \
- stp1_8_0, stp1_15, stp1_11, stp1_12_0) \
- } \
- \
- /* Stage3 */ \
- { \
- const __m128i lo_2_14 = _mm_unpacklo_epi16(in[2], zero); \
- const __m128i hi_2_14 = _mm_unpackhi_epi16(in[2], zero); \
- \
- MULTIPLICATION_AND_ADD_2(lo_2_14, hi_2_14, \
- stg3_0, stg3_1, \
- stp2_4, stp2_7) \
- \
- stp1_9 = stp1_8_0; \
- stp1_10 = stp1_11; \
- \
- stp1_13 = stp1_12_0; \
- stp1_14 = stp1_15; \
- } \
- \
- /* Stage4 */ \
- { \
- const __m128i lo_0_8 = _mm_unpacklo_epi16(in[0], zero); \
- const __m128i hi_0_8 = _mm_unpackhi_epi16(in[0], zero); \
- \
- const __m128i lo_9_14 = _mm_unpacklo_epi16(stp1_9, stp1_14); \
- const __m128i hi_9_14 = _mm_unpackhi_epi16(stp1_9, stp1_14); \
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp1_10, stp1_13); \
- const __m128i hi_10_13 = _mm_unpackhi_epi16(stp1_10, stp1_13); \
- \
- MULTIPLICATION_AND_ADD_2(lo_0_8, hi_0_8, \
- stg4_0, stg4_1, \
- stp1_0, stp1_1) \
- stp2_5 = stp2_4; \
- stp2_6 = stp2_7; \
- \
- MULTIPLICATION_AND_ADD(lo_9_14, hi_9_14, lo_10_13, hi_10_13, \
- stg4_4, stg4_5, stg4_6, stg4_7, \
- stp2_9, stp2_14, stp2_10, stp2_13) \
- } \
- \
- /* Stage5 */ \
- { \
- const __m128i lo_6_5 = _mm_unpacklo_epi16(stp2_6, stp2_5); \
- const __m128i hi_6_5 = _mm_unpackhi_epi16(stp2_6, stp2_5); \
- \
- stp1_2 = stp1_1; \
- stp1_3 = stp1_0; \
- \
- tmp0 = _mm_madd_epi16(lo_6_5, stg4_1); \
- tmp1 = _mm_madd_epi16(hi_6_5, stg4_1); \
- tmp2 = _mm_madd_epi16(lo_6_5, stg4_0); \
- tmp3 = _mm_madd_epi16(hi_6_5, stg4_0); \
- \
- tmp0 = _mm_add_epi32(tmp0, rounding); \
- tmp1 = _mm_add_epi32(tmp1, rounding); \
- tmp2 = _mm_add_epi32(tmp2, rounding); \
- tmp3 = _mm_add_epi32(tmp3, rounding); \
- \
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS); \
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS); \
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS); \
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS); \
- \
- stp1_5 = _mm_packs_epi32(tmp0, tmp1); \
- stp1_6 = _mm_packs_epi32(tmp2, tmp3); \
- \
- stp1_8 = _mm_add_epi16(stp1_8_0, stp1_11); \
- stp1_9 = _mm_add_epi16(stp2_9, stp2_10); \
- stp1_10 = _mm_sub_epi16(stp2_9, stp2_10); \
- stp1_11 = _mm_sub_epi16(stp1_8_0, stp1_11); \
- \
- stp1_12 = _mm_sub_epi16(stp1_15, stp1_12_0); \
- stp1_13 = _mm_sub_epi16(stp2_14, stp2_13); \
- stp1_14 = _mm_add_epi16(stp2_14, stp2_13); \
- stp1_15 = _mm_add_epi16(stp1_15, stp1_12_0); \
- } \
- \
- /* Stage6 */ \
- { \
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp1_10, stp1_13); \
- const __m128i hi_10_13 = _mm_unpackhi_epi16(stp1_10, stp1_13); \
- const __m128i lo_11_12 = _mm_unpacklo_epi16(stp1_11, stp1_12); \
- const __m128i hi_11_12 = _mm_unpackhi_epi16(stp1_11, stp1_12); \
- \
- stp2_0 = _mm_add_epi16(stp1_0, stp2_7); \
- stp2_1 = _mm_add_epi16(stp1_1, stp1_6); \
- stp2_2 = _mm_add_epi16(stp1_2, stp1_5); \
- stp2_3 = _mm_add_epi16(stp1_3, stp2_4); \
- stp2_4 = _mm_sub_epi16(stp1_3, stp2_4); \
- stp2_5 = _mm_sub_epi16(stp1_2, stp1_5); \
- stp2_6 = _mm_sub_epi16(stp1_1, stp1_6); \
- stp2_7 = _mm_sub_epi16(stp1_0, stp2_7); \
- \
- MULTIPLICATION_AND_ADD(lo_10_13, hi_10_13, lo_11_12, hi_11_12, \
- stg6_0, stg4_0, stg6_0, stg4_0, \
- stp2_10, stp2_13, stp2_11, stp2_12) \
- }
-
-void vpx_idct16x16_256_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- const __m128i rounding = _mm_set1_epi32(DCT_CONST_ROUNDING);
- const __m128i final_rounding = _mm_set1_epi16(1 << 5);
- const __m128i zero = _mm_setzero_si128();
-
- const __m128i stg2_0 = pair_set_epi16(cospi_30_64, -cospi_2_64);
- const __m128i stg2_1 = pair_set_epi16(cospi_2_64, cospi_30_64);
- const __m128i stg2_2 = pair_set_epi16(cospi_14_64, -cospi_18_64);
- const __m128i stg2_3 = pair_set_epi16(cospi_18_64, cospi_14_64);
- const __m128i stg2_4 = pair_set_epi16(cospi_22_64, -cospi_10_64);
- const __m128i stg2_5 = pair_set_epi16(cospi_10_64, cospi_22_64);
- const __m128i stg2_6 = pair_set_epi16(cospi_6_64, -cospi_26_64);
- const __m128i stg2_7 = pair_set_epi16(cospi_26_64, cospi_6_64);
-
- const __m128i stg3_0 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i stg3_1 = pair_set_epi16(cospi_4_64, cospi_28_64);
- const __m128i stg3_2 = pair_set_epi16(cospi_12_64, -cospi_20_64);
- const __m128i stg3_3 = pair_set_epi16(cospi_20_64, cospi_12_64);
-
- const __m128i stg4_0 = pair_set_epi16(cospi_16_64, cospi_16_64);
- const __m128i stg4_1 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i stg4_2 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i stg4_3 = pair_set_epi16(cospi_8_64, cospi_24_64);
- const __m128i stg4_4 = pair_set_epi16(-cospi_8_64, cospi_24_64);
- const __m128i stg4_5 = pair_set_epi16(cospi_24_64, cospi_8_64);
- const __m128i stg4_6 = pair_set_epi16(-cospi_24_64, -cospi_8_64);
- const __m128i stg4_7 = pair_set_epi16(-cospi_8_64, cospi_24_64);
-
- const __m128i stg6_0 = pair_set_epi16(-cospi_16_64, cospi_16_64);
-
- __m128i in[16], l[16], r[16], *curr1;
- __m128i stp1_0, stp1_1, stp1_2, stp1_3, stp1_4, stp1_5, stp1_6, stp1_7,
- stp1_8, stp1_9, stp1_10, stp1_11, stp1_12, stp1_13, stp1_14, stp1_15,
- stp1_8_0, stp1_12_0;
- __m128i stp2_0, stp2_1, stp2_2, stp2_3, stp2_4, stp2_5, stp2_6, stp2_7,
- stp2_8, stp2_9, stp2_10, stp2_11, stp2_12, stp2_13, stp2_14, stp2_15;
- __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
- int i;
-
- curr1 = l;
- for (i = 0; i < 2; i++) {
- // 1-D idct
-
- // Load input data.
- in[0] = load_input_data(input);
- in[8] = load_input_data(input + 8 * 1);
- in[1] = load_input_data(input + 8 * 2);
- in[9] = load_input_data(input + 8 * 3);
- in[2] = load_input_data(input + 8 * 4);
- in[10] = load_input_data(input + 8 * 5);
- in[3] = load_input_data(input + 8 * 6);
- in[11] = load_input_data(input + 8 * 7);
- in[4] = load_input_data(input + 8 * 8);
- in[12] = load_input_data(input + 8 * 9);
- in[5] = load_input_data(input + 8 * 10);
- in[13] = load_input_data(input + 8 * 11);
- in[6] = load_input_data(input + 8 * 12);
- in[14] = load_input_data(input + 8 * 13);
- in[7] = load_input_data(input + 8 * 14);
- in[15] = load_input_data(input + 8 * 15);
-
- array_transpose_8x8(in, in);
- array_transpose_8x8(in + 8, in + 8);
-
- IDCT16
-
- // Stage7
- curr1[0] = _mm_add_epi16(stp2_0, stp1_15);
- curr1[1] = _mm_add_epi16(stp2_1, stp1_14);
- curr1[2] = _mm_add_epi16(stp2_2, stp2_13);
- curr1[3] = _mm_add_epi16(stp2_3, stp2_12);
- curr1[4] = _mm_add_epi16(stp2_4, stp2_11);
- curr1[5] = _mm_add_epi16(stp2_5, stp2_10);
- curr1[6] = _mm_add_epi16(stp2_6, stp1_9);
- curr1[7] = _mm_add_epi16(stp2_7, stp1_8);
- curr1[8] = _mm_sub_epi16(stp2_7, stp1_8);
- curr1[9] = _mm_sub_epi16(stp2_6, stp1_9);
- curr1[10] = _mm_sub_epi16(stp2_5, stp2_10);
- curr1[11] = _mm_sub_epi16(stp2_4, stp2_11);
- curr1[12] = _mm_sub_epi16(stp2_3, stp2_12);
- curr1[13] = _mm_sub_epi16(stp2_2, stp2_13);
- curr1[14] = _mm_sub_epi16(stp2_1, stp1_14);
- curr1[15] = _mm_sub_epi16(stp2_0, stp1_15);
-
- curr1 = r;
- input += 128;
- }
- for (i = 0; i < 2; i++) {
- int j;
- // 1-D idct
- array_transpose_8x8(l + i * 8, in);
- array_transpose_8x8(r + i * 8, in + 8);
-
- IDCT16
-
- // 2-D
- in[0] = _mm_add_epi16(stp2_0, stp1_15);
- in[1] = _mm_add_epi16(stp2_1, stp1_14);
- in[2] = _mm_add_epi16(stp2_2, stp2_13);
- in[3] = _mm_add_epi16(stp2_3, stp2_12);
- in[4] = _mm_add_epi16(stp2_4, stp2_11);
- in[5] = _mm_add_epi16(stp2_5, stp2_10);
- in[6] = _mm_add_epi16(stp2_6, stp1_9);
- in[7] = _mm_add_epi16(stp2_7, stp1_8);
- in[8] = _mm_sub_epi16(stp2_7, stp1_8);
- in[9] = _mm_sub_epi16(stp2_6, stp1_9);
- in[10] = _mm_sub_epi16(stp2_5, stp2_10);
- in[11] = _mm_sub_epi16(stp2_4, stp2_11);
- in[12] = _mm_sub_epi16(stp2_3, stp2_12);
- in[13] = _mm_sub_epi16(stp2_2, stp2_13);
- in[14] = _mm_sub_epi16(stp2_1, stp1_14);
- in[15] = _mm_sub_epi16(stp2_0, stp1_15);
-
- for (j = 0; j < 16; ++j) {
- // Final rounding and shift
- in[j] = _mm_adds_epi16(in[j], final_rounding);
- in[j] = _mm_srai_epi16(in[j], 6);
- RECON_AND_STORE(dest + j * stride, in[j]);
- }
-
- dest += 8;
- }
-}
-
-void vpx_idct16x16_1_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- __m128i dc_value;
- const __m128i zero = _mm_setzero_si128();
- int a, i;
-
- a = (int)dct_const_round_shift(input[0] * cospi_16_64);
- a = (int)dct_const_round_shift(a * cospi_16_64);
- a = ROUND_POWER_OF_TWO(a, 6);
-
- dc_value = _mm_set1_epi16(a);
-
- for (i = 0; i < 16; ++i) {
- RECON_AND_STORE(dest + 0, dc_value);
- RECON_AND_STORE(dest + 8, dc_value);
- dest += stride;
- }
-}
-
-static void iadst16_8col(__m128i *in) {
- // perform 16x16 1-D ADST for 8 columns
- __m128i s[16], x[16], u[32], v[32];
- const __m128i k__cospi_p01_p31 = pair_set_epi16(cospi_1_64, cospi_31_64);
- const __m128i k__cospi_p31_m01 = pair_set_epi16(cospi_31_64, -cospi_1_64);
- const __m128i k__cospi_p05_p27 = pair_set_epi16(cospi_5_64, cospi_27_64);
- const __m128i k__cospi_p27_m05 = pair_set_epi16(cospi_27_64, -cospi_5_64);
- const __m128i k__cospi_p09_p23 = pair_set_epi16(cospi_9_64, cospi_23_64);
- const __m128i k__cospi_p23_m09 = pair_set_epi16(cospi_23_64, -cospi_9_64);
- const __m128i k__cospi_p13_p19 = pair_set_epi16(cospi_13_64, cospi_19_64);
- const __m128i k__cospi_p19_m13 = pair_set_epi16(cospi_19_64, -cospi_13_64);
- const __m128i k__cospi_p17_p15 = pair_set_epi16(cospi_17_64, cospi_15_64);
- const __m128i k__cospi_p15_m17 = pair_set_epi16(cospi_15_64, -cospi_17_64);
- const __m128i k__cospi_p21_p11 = pair_set_epi16(cospi_21_64, cospi_11_64);
- const __m128i k__cospi_p11_m21 = pair_set_epi16(cospi_11_64, -cospi_21_64);
- const __m128i k__cospi_p25_p07 = pair_set_epi16(cospi_25_64, cospi_7_64);
- const __m128i k__cospi_p07_m25 = pair_set_epi16(cospi_7_64, -cospi_25_64);
- const __m128i k__cospi_p29_p03 = pair_set_epi16(cospi_29_64, cospi_3_64);
- const __m128i k__cospi_p03_m29 = pair_set_epi16(cospi_3_64, -cospi_29_64);
- const __m128i k__cospi_p04_p28 = pair_set_epi16(cospi_4_64, cospi_28_64);
- const __m128i k__cospi_p28_m04 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i k__cospi_p20_p12 = pair_set_epi16(cospi_20_64, cospi_12_64);
- const __m128i k__cospi_p12_m20 = pair_set_epi16(cospi_12_64, -cospi_20_64);
- const __m128i k__cospi_m28_p04 = pair_set_epi16(-cospi_28_64, cospi_4_64);
- const __m128i k__cospi_m12_p20 = pair_set_epi16(-cospi_12_64, cospi_20_64);
- const __m128i k__cospi_p08_p24 = pair_set_epi16(cospi_8_64, cospi_24_64);
- const __m128i k__cospi_p24_m08 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i k__cospi_m24_p08 = pair_set_epi16(-cospi_24_64, cospi_8_64);
- const __m128i k__cospi_m16_m16 = _mm_set1_epi16((int16_t)-cospi_16_64);
- const __m128i k__cospi_p16_p16 = _mm_set1_epi16((int16_t)cospi_16_64);
- const __m128i k__cospi_p16_m16 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i k__cospi_m16_p16 = pair_set_epi16(-cospi_16_64, cospi_16_64);
- const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING);
- const __m128i kZero = _mm_set1_epi16(0);
-
- u[0] = _mm_unpacklo_epi16(in[15], in[0]);
- u[1] = _mm_unpackhi_epi16(in[15], in[0]);
- u[2] = _mm_unpacklo_epi16(in[13], in[2]);
- u[3] = _mm_unpackhi_epi16(in[13], in[2]);
- u[4] = _mm_unpacklo_epi16(in[11], in[4]);
- u[5] = _mm_unpackhi_epi16(in[11], in[4]);
- u[6] = _mm_unpacklo_epi16(in[9], in[6]);
- u[7] = _mm_unpackhi_epi16(in[9], in[6]);
- u[8] = _mm_unpacklo_epi16(in[7], in[8]);
- u[9] = _mm_unpackhi_epi16(in[7], in[8]);
- u[10] = _mm_unpacklo_epi16(in[5], in[10]);
- u[11] = _mm_unpackhi_epi16(in[5], in[10]);
- u[12] = _mm_unpacklo_epi16(in[3], in[12]);
- u[13] = _mm_unpackhi_epi16(in[3], in[12]);
- u[14] = _mm_unpacklo_epi16(in[1], in[14]);
- u[15] = _mm_unpackhi_epi16(in[1], in[14]);
-
- v[0] = _mm_madd_epi16(u[0], k__cospi_p01_p31);
- v[1] = _mm_madd_epi16(u[1], k__cospi_p01_p31);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p31_m01);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p31_m01);
- v[4] = _mm_madd_epi16(u[2], k__cospi_p05_p27);
- v[5] = _mm_madd_epi16(u[3], k__cospi_p05_p27);
- v[6] = _mm_madd_epi16(u[2], k__cospi_p27_m05);
- v[7] = _mm_madd_epi16(u[3], k__cospi_p27_m05);
- v[8] = _mm_madd_epi16(u[4], k__cospi_p09_p23);
- v[9] = _mm_madd_epi16(u[5], k__cospi_p09_p23);
- v[10] = _mm_madd_epi16(u[4], k__cospi_p23_m09);
- v[11] = _mm_madd_epi16(u[5], k__cospi_p23_m09);
- v[12] = _mm_madd_epi16(u[6], k__cospi_p13_p19);
- v[13] = _mm_madd_epi16(u[7], k__cospi_p13_p19);
- v[14] = _mm_madd_epi16(u[6], k__cospi_p19_m13);
- v[15] = _mm_madd_epi16(u[7], k__cospi_p19_m13);
- v[16] = _mm_madd_epi16(u[8], k__cospi_p17_p15);
- v[17] = _mm_madd_epi16(u[9], k__cospi_p17_p15);
- v[18] = _mm_madd_epi16(u[8], k__cospi_p15_m17);
- v[19] = _mm_madd_epi16(u[9], k__cospi_p15_m17);
- v[20] = _mm_madd_epi16(u[10], k__cospi_p21_p11);
- v[21] = _mm_madd_epi16(u[11], k__cospi_p21_p11);
- v[22] = _mm_madd_epi16(u[10], k__cospi_p11_m21);
- v[23] = _mm_madd_epi16(u[11], k__cospi_p11_m21);
- v[24] = _mm_madd_epi16(u[12], k__cospi_p25_p07);
- v[25] = _mm_madd_epi16(u[13], k__cospi_p25_p07);
- v[26] = _mm_madd_epi16(u[12], k__cospi_p07_m25);
- v[27] = _mm_madd_epi16(u[13], k__cospi_p07_m25);
- v[28] = _mm_madd_epi16(u[14], k__cospi_p29_p03);
- v[29] = _mm_madd_epi16(u[15], k__cospi_p29_p03);
- v[30] = _mm_madd_epi16(u[14], k__cospi_p03_m29);
- v[31] = _mm_madd_epi16(u[15], k__cospi_p03_m29);
-
- u[0] = _mm_add_epi32(v[0], v[16]);
- u[1] = _mm_add_epi32(v[1], v[17]);
- u[2] = _mm_add_epi32(v[2], v[18]);
- u[3] = _mm_add_epi32(v[3], v[19]);
- u[4] = _mm_add_epi32(v[4], v[20]);
- u[5] = _mm_add_epi32(v[5], v[21]);
- u[6] = _mm_add_epi32(v[6], v[22]);
- u[7] = _mm_add_epi32(v[7], v[23]);
- u[8] = _mm_add_epi32(v[8], v[24]);
- u[9] = _mm_add_epi32(v[9], v[25]);
- u[10] = _mm_add_epi32(v[10], v[26]);
- u[11] = _mm_add_epi32(v[11], v[27]);
- u[12] = _mm_add_epi32(v[12], v[28]);
- u[13] = _mm_add_epi32(v[13], v[29]);
- u[14] = _mm_add_epi32(v[14], v[30]);
- u[15] = _mm_add_epi32(v[15], v[31]);
- u[16] = _mm_sub_epi32(v[0], v[16]);
- u[17] = _mm_sub_epi32(v[1], v[17]);
- u[18] = _mm_sub_epi32(v[2], v[18]);
- u[19] = _mm_sub_epi32(v[3], v[19]);
- u[20] = _mm_sub_epi32(v[4], v[20]);
- u[21] = _mm_sub_epi32(v[5], v[21]);
- u[22] = _mm_sub_epi32(v[6], v[22]);
- u[23] = _mm_sub_epi32(v[7], v[23]);
- u[24] = _mm_sub_epi32(v[8], v[24]);
- u[25] = _mm_sub_epi32(v[9], v[25]);
- u[26] = _mm_sub_epi32(v[10], v[26]);
- u[27] = _mm_sub_epi32(v[11], v[27]);
- u[28] = _mm_sub_epi32(v[12], v[28]);
- u[29] = _mm_sub_epi32(v[13], v[29]);
- u[30] = _mm_sub_epi32(v[14], v[30]);
- u[31] = _mm_sub_epi32(v[15], v[31]);
-
- v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
- v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
- v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
- v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
- v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
- v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
- v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
- v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
- v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
- v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
- v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
- v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
- v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
- v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
- v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
- v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);
- v[16] = _mm_add_epi32(u[16], k__DCT_CONST_ROUNDING);
- v[17] = _mm_add_epi32(u[17], k__DCT_CONST_ROUNDING);
- v[18] = _mm_add_epi32(u[18], k__DCT_CONST_ROUNDING);
- v[19] = _mm_add_epi32(u[19], k__DCT_CONST_ROUNDING);
- v[20] = _mm_add_epi32(u[20], k__DCT_CONST_ROUNDING);
- v[21] = _mm_add_epi32(u[21], k__DCT_CONST_ROUNDING);
- v[22] = _mm_add_epi32(u[22], k__DCT_CONST_ROUNDING);
- v[23] = _mm_add_epi32(u[23], k__DCT_CONST_ROUNDING);
- v[24] = _mm_add_epi32(u[24], k__DCT_CONST_ROUNDING);
- v[25] = _mm_add_epi32(u[25], k__DCT_CONST_ROUNDING);
- v[26] = _mm_add_epi32(u[26], k__DCT_CONST_ROUNDING);
- v[27] = _mm_add_epi32(u[27], k__DCT_CONST_ROUNDING);
- v[28] = _mm_add_epi32(u[28], k__DCT_CONST_ROUNDING);
- v[29] = _mm_add_epi32(u[29], k__DCT_CONST_ROUNDING);
- v[30] = _mm_add_epi32(u[30], k__DCT_CONST_ROUNDING);
- v[31] = _mm_add_epi32(u[31], k__DCT_CONST_ROUNDING);
-
- u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
- u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
- u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
- u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
- u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
- u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
- u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
- u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
- u[8] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
- u[9] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
- u[10] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
- u[11] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
- u[12] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
- u[13] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
- u[14] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
- u[15] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
- u[16] = _mm_srai_epi32(v[16], DCT_CONST_BITS);
- u[17] = _mm_srai_epi32(v[17], DCT_CONST_BITS);
- u[18] = _mm_srai_epi32(v[18], DCT_CONST_BITS);
- u[19] = _mm_srai_epi32(v[19], DCT_CONST_BITS);
- u[20] = _mm_srai_epi32(v[20], DCT_CONST_BITS);
- u[21] = _mm_srai_epi32(v[21], DCT_CONST_BITS);
- u[22] = _mm_srai_epi32(v[22], DCT_CONST_BITS);
- u[23] = _mm_srai_epi32(v[23], DCT_CONST_BITS);
- u[24] = _mm_srai_epi32(v[24], DCT_CONST_BITS);
- u[25] = _mm_srai_epi32(v[25], DCT_CONST_BITS);
- u[26] = _mm_srai_epi32(v[26], DCT_CONST_BITS);
- u[27] = _mm_srai_epi32(v[27], DCT_CONST_BITS);
- u[28] = _mm_srai_epi32(v[28], DCT_CONST_BITS);
- u[29] = _mm_srai_epi32(v[29], DCT_CONST_BITS);
- u[30] = _mm_srai_epi32(v[30], DCT_CONST_BITS);
- u[31] = _mm_srai_epi32(v[31], DCT_CONST_BITS);
-
- s[0] = _mm_packs_epi32(u[0], u[1]);
- s[1] = _mm_packs_epi32(u[2], u[3]);
- s[2] = _mm_packs_epi32(u[4], u[5]);
- s[3] = _mm_packs_epi32(u[6], u[7]);
- s[4] = _mm_packs_epi32(u[8], u[9]);
- s[5] = _mm_packs_epi32(u[10], u[11]);
- s[6] = _mm_packs_epi32(u[12], u[13]);
- s[7] = _mm_packs_epi32(u[14], u[15]);
- s[8] = _mm_packs_epi32(u[16], u[17]);
- s[9] = _mm_packs_epi32(u[18], u[19]);
- s[10] = _mm_packs_epi32(u[20], u[21]);
- s[11] = _mm_packs_epi32(u[22], u[23]);
- s[12] = _mm_packs_epi32(u[24], u[25]);
- s[13] = _mm_packs_epi32(u[26], u[27]);
- s[14] = _mm_packs_epi32(u[28], u[29]);
- s[15] = _mm_packs_epi32(u[30], u[31]);
-
- // stage 2
- u[0] = _mm_unpacklo_epi16(s[8], s[9]);
- u[1] = _mm_unpackhi_epi16(s[8], s[9]);
- u[2] = _mm_unpacklo_epi16(s[10], s[11]);
- u[3] = _mm_unpackhi_epi16(s[10], s[11]);
- u[4] = _mm_unpacklo_epi16(s[12], s[13]);
- u[5] = _mm_unpackhi_epi16(s[12], s[13]);
- u[6] = _mm_unpacklo_epi16(s[14], s[15]);
- u[7] = _mm_unpackhi_epi16(s[14], s[15]);
-
- v[0] = _mm_madd_epi16(u[0], k__cospi_p04_p28);
- v[1] = _mm_madd_epi16(u[1], k__cospi_p04_p28);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p28_m04);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p28_m04);
- v[4] = _mm_madd_epi16(u[2], k__cospi_p20_p12);
- v[5] = _mm_madd_epi16(u[3], k__cospi_p20_p12);
- v[6] = _mm_madd_epi16(u[2], k__cospi_p12_m20);
- v[7] = _mm_madd_epi16(u[3], k__cospi_p12_m20);
- v[8] = _mm_madd_epi16(u[4], k__cospi_m28_p04);
- v[9] = _mm_madd_epi16(u[5], k__cospi_m28_p04);
- v[10] = _mm_madd_epi16(u[4], k__cospi_p04_p28);
- v[11] = _mm_madd_epi16(u[5], k__cospi_p04_p28);
- v[12] = _mm_madd_epi16(u[6], k__cospi_m12_p20);
- v[13] = _mm_madd_epi16(u[7], k__cospi_m12_p20);
- v[14] = _mm_madd_epi16(u[6], k__cospi_p20_p12);
- v[15] = _mm_madd_epi16(u[7], k__cospi_p20_p12);
-
- u[0] = _mm_add_epi32(v[0], v[8]);
- u[1] = _mm_add_epi32(v[1], v[9]);
- u[2] = _mm_add_epi32(v[2], v[10]);
- u[3] = _mm_add_epi32(v[3], v[11]);
- u[4] = _mm_add_epi32(v[4], v[12]);
- u[5] = _mm_add_epi32(v[5], v[13]);
- u[6] = _mm_add_epi32(v[6], v[14]);
- u[7] = _mm_add_epi32(v[7], v[15]);
- u[8] = _mm_sub_epi32(v[0], v[8]);
- u[9] = _mm_sub_epi32(v[1], v[9]);
- u[10] = _mm_sub_epi32(v[2], v[10]);
- u[11] = _mm_sub_epi32(v[3], v[11]);
- u[12] = _mm_sub_epi32(v[4], v[12]);
- u[13] = _mm_sub_epi32(v[5], v[13]);
- u[14] = _mm_sub_epi32(v[6], v[14]);
- u[15] = _mm_sub_epi32(v[7], v[15]);
-
- v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
- v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
- v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
- v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
- v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
- v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
- v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
- v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
- v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
- v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
- v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
- v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
- v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
- v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
- v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
- v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);
-
- u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
- u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
- u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
- u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
- u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
- u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
- u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
- u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
- u[8] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
- u[9] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
- u[10] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
- u[11] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
- u[12] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
- u[13] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
- u[14] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
- u[15] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
-
- x[0] = _mm_add_epi16(s[0], s[4]);
- x[1] = _mm_add_epi16(s[1], s[5]);
- x[2] = _mm_add_epi16(s[2], s[6]);
- x[3] = _mm_add_epi16(s[3], s[7]);
- x[4] = _mm_sub_epi16(s[0], s[4]);
- x[5] = _mm_sub_epi16(s[1], s[5]);
- x[6] = _mm_sub_epi16(s[2], s[6]);
- x[7] = _mm_sub_epi16(s[3], s[7]);
- x[8] = _mm_packs_epi32(u[0], u[1]);
- x[9] = _mm_packs_epi32(u[2], u[3]);
- x[10] = _mm_packs_epi32(u[4], u[5]);
- x[11] = _mm_packs_epi32(u[6], u[7]);
- x[12] = _mm_packs_epi32(u[8], u[9]);
- x[13] = _mm_packs_epi32(u[10], u[11]);
- x[14] = _mm_packs_epi32(u[12], u[13]);
- x[15] = _mm_packs_epi32(u[14], u[15]);
-
- // stage 3
- u[0] = _mm_unpacklo_epi16(x[4], x[5]);
- u[1] = _mm_unpackhi_epi16(x[4], x[5]);
- u[2] = _mm_unpacklo_epi16(x[6], x[7]);
- u[3] = _mm_unpackhi_epi16(x[6], x[7]);
- u[4] = _mm_unpacklo_epi16(x[12], x[13]);
- u[5] = _mm_unpackhi_epi16(x[12], x[13]);
- u[6] = _mm_unpacklo_epi16(x[14], x[15]);
- u[7] = _mm_unpackhi_epi16(x[14], x[15]);
-
- v[0] = _mm_madd_epi16(u[0], k__cospi_p08_p24);
- v[1] = _mm_madd_epi16(u[1], k__cospi_p08_p24);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p24_m08);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p24_m08);
- v[4] = _mm_madd_epi16(u[2], k__cospi_m24_p08);
- v[5] = _mm_madd_epi16(u[3], k__cospi_m24_p08);
- v[6] = _mm_madd_epi16(u[2], k__cospi_p08_p24);
- v[7] = _mm_madd_epi16(u[3], k__cospi_p08_p24);
- v[8] = _mm_madd_epi16(u[4], k__cospi_p08_p24);
- v[9] = _mm_madd_epi16(u[5], k__cospi_p08_p24);
- v[10] = _mm_madd_epi16(u[4], k__cospi_p24_m08);
- v[11] = _mm_madd_epi16(u[5], k__cospi_p24_m08);
- v[12] = _mm_madd_epi16(u[6], k__cospi_m24_p08);
- v[13] = _mm_madd_epi16(u[7], k__cospi_m24_p08);
- v[14] = _mm_madd_epi16(u[6], k__cospi_p08_p24);
- v[15] = _mm_madd_epi16(u[7], k__cospi_p08_p24);
-
- u[0] = _mm_add_epi32(v[0], v[4]);
- u[1] = _mm_add_epi32(v[1], v[5]);
- u[2] = _mm_add_epi32(v[2], v[6]);
- u[3] = _mm_add_epi32(v[3], v[7]);
- u[4] = _mm_sub_epi32(v[0], v[4]);
- u[5] = _mm_sub_epi32(v[1], v[5]);
- u[6] = _mm_sub_epi32(v[2], v[6]);
- u[7] = _mm_sub_epi32(v[3], v[7]);
- u[8] = _mm_add_epi32(v[8], v[12]);
- u[9] = _mm_add_epi32(v[9], v[13]);
- u[10] = _mm_add_epi32(v[10], v[14]);
- u[11] = _mm_add_epi32(v[11], v[15]);
- u[12] = _mm_sub_epi32(v[8], v[12]);
- u[13] = _mm_sub_epi32(v[9], v[13]);
- u[14] = _mm_sub_epi32(v[10], v[14]);
- u[15] = _mm_sub_epi32(v[11], v[15]);
-
- u[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
- u[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
- u[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
- u[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
- u[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
- u[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
- u[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
- u[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
- u[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
- u[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
- u[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
- u[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
- u[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
- u[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
- u[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
- u[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);
-
- v[0] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
- v[1] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
- v[2] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
- v[3] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
- v[4] = _mm_srai_epi32(u[4], DCT_CONST_BITS);
- v[5] = _mm_srai_epi32(u[5], DCT_CONST_BITS);
- v[6] = _mm_srai_epi32(u[6], DCT_CONST_BITS);
- v[7] = _mm_srai_epi32(u[7], DCT_CONST_BITS);
- v[8] = _mm_srai_epi32(u[8], DCT_CONST_BITS);
- v[9] = _mm_srai_epi32(u[9], DCT_CONST_BITS);
- v[10] = _mm_srai_epi32(u[10], DCT_CONST_BITS);
- v[11] = _mm_srai_epi32(u[11], DCT_CONST_BITS);
- v[12] = _mm_srai_epi32(u[12], DCT_CONST_BITS);
- v[13] = _mm_srai_epi32(u[13], DCT_CONST_BITS);
- v[14] = _mm_srai_epi32(u[14], DCT_CONST_BITS);
- v[15] = _mm_srai_epi32(u[15], DCT_CONST_BITS);
-
- s[0] = _mm_add_epi16(x[0], x[2]);
- s[1] = _mm_add_epi16(x[1], x[3]);
- s[2] = _mm_sub_epi16(x[0], x[2]);
- s[3] = _mm_sub_epi16(x[1], x[3]);
- s[4] = _mm_packs_epi32(v[0], v[1]);
- s[5] = _mm_packs_epi32(v[2], v[3]);
- s[6] = _mm_packs_epi32(v[4], v[5]);
- s[7] = _mm_packs_epi32(v[6], v[7]);
- s[8] = _mm_add_epi16(x[8], x[10]);
- s[9] = _mm_add_epi16(x[9], x[11]);
- s[10] = _mm_sub_epi16(x[8], x[10]);
- s[11] = _mm_sub_epi16(x[9], x[11]);
- s[12] = _mm_packs_epi32(v[8], v[9]);
- s[13] = _mm_packs_epi32(v[10], v[11]);
- s[14] = _mm_packs_epi32(v[12], v[13]);
- s[15] = _mm_packs_epi32(v[14], v[15]);
-
- // stage 4
- u[0] = _mm_unpacklo_epi16(s[2], s[3]);
- u[1] = _mm_unpackhi_epi16(s[2], s[3]);
- u[2] = _mm_unpacklo_epi16(s[6], s[7]);
- u[3] = _mm_unpackhi_epi16(s[6], s[7]);
- u[4] = _mm_unpacklo_epi16(s[10], s[11]);
- u[5] = _mm_unpackhi_epi16(s[10], s[11]);
- u[6] = _mm_unpacklo_epi16(s[14], s[15]);
- u[7] = _mm_unpackhi_epi16(s[14], s[15]);
-
- v[0] = _mm_madd_epi16(u[0], k__cospi_m16_m16);
- v[1] = _mm_madd_epi16(u[1], k__cospi_m16_m16);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p16_m16);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p16_m16);
- v[4] = _mm_madd_epi16(u[2], k__cospi_p16_p16);
- v[5] = _mm_madd_epi16(u[3], k__cospi_p16_p16);
- v[6] = _mm_madd_epi16(u[2], k__cospi_m16_p16);
- v[7] = _mm_madd_epi16(u[3], k__cospi_m16_p16);
- v[8] = _mm_madd_epi16(u[4], k__cospi_p16_p16);
- v[9] = _mm_madd_epi16(u[5], k__cospi_p16_p16);
- v[10] = _mm_madd_epi16(u[4], k__cospi_m16_p16);
- v[11] = _mm_madd_epi16(u[5], k__cospi_m16_p16);
- v[12] = _mm_madd_epi16(u[6], k__cospi_m16_m16);
- v[13] = _mm_madd_epi16(u[7], k__cospi_m16_m16);
- v[14] = _mm_madd_epi16(u[6], k__cospi_p16_m16);
- v[15] = _mm_madd_epi16(u[7], k__cospi_p16_m16);
-
- u[0] = _mm_add_epi32(v[0], k__DCT_CONST_ROUNDING);
- u[1] = _mm_add_epi32(v[1], k__DCT_CONST_ROUNDING);
- u[2] = _mm_add_epi32(v[2], k__DCT_CONST_ROUNDING);
- u[3] = _mm_add_epi32(v[3], k__DCT_CONST_ROUNDING);
- u[4] = _mm_add_epi32(v[4], k__DCT_CONST_ROUNDING);
- u[5] = _mm_add_epi32(v[5], k__DCT_CONST_ROUNDING);
- u[6] = _mm_add_epi32(v[6], k__DCT_CONST_ROUNDING);
- u[7] = _mm_add_epi32(v[7], k__DCT_CONST_ROUNDING);
- u[8] = _mm_add_epi32(v[8], k__DCT_CONST_ROUNDING);
- u[9] = _mm_add_epi32(v[9], k__DCT_CONST_ROUNDING);
- u[10] = _mm_add_epi32(v[10], k__DCT_CONST_ROUNDING);
- u[11] = _mm_add_epi32(v[11], k__DCT_CONST_ROUNDING);
- u[12] = _mm_add_epi32(v[12], k__DCT_CONST_ROUNDING);
- u[13] = _mm_add_epi32(v[13], k__DCT_CONST_ROUNDING);
- u[14] = _mm_add_epi32(v[14], k__DCT_CONST_ROUNDING);
- u[15] = _mm_add_epi32(v[15], k__DCT_CONST_ROUNDING);
-
- v[0] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
- v[1] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
- v[2] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
- v[3] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
- v[4] = _mm_srai_epi32(u[4], DCT_CONST_BITS);
- v[5] = _mm_srai_epi32(u[5], DCT_CONST_BITS);
- v[6] = _mm_srai_epi32(u[6], DCT_CONST_BITS);
- v[7] = _mm_srai_epi32(u[7], DCT_CONST_BITS);
- v[8] = _mm_srai_epi32(u[8], DCT_CONST_BITS);
- v[9] = _mm_srai_epi32(u[9], DCT_CONST_BITS);
- v[10] = _mm_srai_epi32(u[10], DCT_CONST_BITS);
- v[11] = _mm_srai_epi32(u[11], DCT_CONST_BITS);
- v[12] = _mm_srai_epi32(u[12], DCT_CONST_BITS);
- v[13] = _mm_srai_epi32(u[13], DCT_CONST_BITS);
- v[14] = _mm_srai_epi32(u[14], DCT_CONST_BITS);
- v[15] = _mm_srai_epi32(u[15], DCT_CONST_BITS);
-
- in[0] = s[0];
- in[1] = _mm_sub_epi16(kZero, s[8]);
- in[2] = s[12];
- in[3] = _mm_sub_epi16(kZero, s[4]);
- in[4] = _mm_packs_epi32(v[4], v[5]);
- in[5] = _mm_packs_epi32(v[12], v[13]);
- in[6] = _mm_packs_epi32(v[8], v[9]);
- in[7] = _mm_packs_epi32(v[0], v[1]);
- in[8] = _mm_packs_epi32(v[2], v[3]);
- in[9] = _mm_packs_epi32(v[10], v[11]);
- in[10] = _mm_packs_epi32(v[14], v[15]);
- in[11] = _mm_packs_epi32(v[6], v[7]);
- in[12] = s[5];
- in[13] = _mm_sub_epi16(kZero, s[13]);
- in[14] = s[9];
- in[15] = _mm_sub_epi16(kZero, s[1]);
-}
-
-static void idct16_8col(__m128i *in) {
- const __m128i k__cospi_p30_m02 = pair_set_epi16(cospi_30_64, -cospi_2_64);
- const __m128i k__cospi_p02_p30 = pair_set_epi16(cospi_2_64, cospi_30_64);
- const __m128i k__cospi_p14_m18 = pair_set_epi16(cospi_14_64, -cospi_18_64);
- const __m128i k__cospi_p18_p14 = pair_set_epi16(cospi_18_64, cospi_14_64);
- const __m128i k__cospi_p22_m10 = pair_set_epi16(cospi_22_64, -cospi_10_64);
- const __m128i k__cospi_p10_p22 = pair_set_epi16(cospi_10_64, cospi_22_64);
- const __m128i k__cospi_p06_m26 = pair_set_epi16(cospi_6_64, -cospi_26_64);
- const __m128i k__cospi_p26_p06 = pair_set_epi16(cospi_26_64, cospi_6_64);
- const __m128i k__cospi_p28_m04 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i k__cospi_p04_p28 = pair_set_epi16(cospi_4_64, cospi_28_64);
- const __m128i k__cospi_p12_m20 = pair_set_epi16(cospi_12_64, -cospi_20_64);
- const __m128i k__cospi_p20_p12 = pair_set_epi16(cospi_20_64, cospi_12_64);
- const __m128i k__cospi_p16_p16 = _mm_set1_epi16((int16_t)cospi_16_64);
- const __m128i k__cospi_p16_m16 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i k__cospi_p24_m08 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i k__cospi_p08_p24 = pair_set_epi16(cospi_8_64, cospi_24_64);
- const __m128i k__cospi_m08_p24 = pair_set_epi16(-cospi_8_64, cospi_24_64);
- const __m128i k__cospi_p24_p08 = pair_set_epi16(cospi_24_64, cospi_8_64);
- const __m128i k__cospi_m24_m08 = pair_set_epi16(-cospi_24_64, -cospi_8_64);
- const __m128i k__cospi_m16_p16 = pair_set_epi16(-cospi_16_64, cospi_16_64);
- const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING);
- __m128i v[16], u[16], s[16], t[16];
-
- // stage 1
- s[0] = in[0];
- s[1] = in[8];
- s[2] = in[4];
- s[3] = in[12];
- s[4] = in[2];
- s[5] = in[10];
- s[6] = in[6];
- s[7] = in[14];
- s[8] = in[1];
- s[9] = in[9];
- s[10] = in[5];
- s[11] = in[13];
- s[12] = in[3];
- s[13] = in[11];
- s[14] = in[7];
- s[15] = in[15];
-
- // stage 2
- u[0] = _mm_unpacklo_epi16(s[8], s[15]);
- u[1] = _mm_unpackhi_epi16(s[8], s[15]);
- u[2] = _mm_unpacklo_epi16(s[9], s[14]);
- u[3] = _mm_unpackhi_epi16(s[9], s[14]);
- u[4] = _mm_unpacklo_epi16(s[10], s[13]);
- u[5] = _mm_unpackhi_epi16(s[10], s[13]);
- u[6] = _mm_unpacklo_epi16(s[11], s[12]);
- u[7] = _mm_unpackhi_epi16(s[11], s[12]);
-
- v[0] = _mm_madd_epi16(u[0], k__cospi_p30_m02);
- v[1] = _mm_madd_epi16(u[1], k__cospi_p30_m02);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p02_p30);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p02_p30);
- v[4] = _mm_madd_epi16(u[2], k__cospi_p14_m18);
- v[5] = _mm_madd_epi16(u[3], k__cospi_p14_m18);
- v[6] = _mm_madd_epi16(u[2], k__cospi_p18_p14);
- v[7] = _mm_madd_epi16(u[3], k__cospi_p18_p14);
- v[8] = _mm_madd_epi16(u[4], k__cospi_p22_m10);
- v[9] = _mm_madd_epi16(u[5], k__cospi_p22_m10);
- v[10] = _mm_madd_epi16(u[4], k__cospi_p10_p22);
- v[11] = _mm_madd_epi16(u[5], k__cospi_p10_p22);
- v[12] = _mm_madd_epi16(u[6], k__cospi_p06_m26);
- v[13] = _mm_madd_epi16(u[7], k__cospi_p06_m26);
- v[14] = _mm_madd_epi16(u[6], k__cospi_p26_p06);
- v[15] = _mm_madd_epi16(u[7], k__cospi_p26_p06);
-
- u[0] = _mm_add_epi32(v[0], k__DCT_CONST_ROUNDING);
- u[1] = _mm_add_epi32(v[1], k__DCT_CONST_ROUNDING);
- u[2] = _mm_add_epi32(v[2], k__DCT_CONST_ROUNDING);
- u[3] = _mm_add_epi32(v[3], k__DCT_CONST_ROUNDING);
- u[4] = _mm_add_epi32(v[4], k__DCT_CONST_ROUNDING);
- u[5] = _mm_add_epi32(v[5], k__DCT_CONST_ROUNDING);
- u[6] = _mm_add_epi32(v[6], k__DCT_CONST_ROUNDING);
- u[7] = _mm_add_epi32(v[7], k__DCT_CONST_ROUNDING);
- u[8] = _mm_add_epi32(v[8], k__DCT_CONST_ROUNDING);
- u[9] = _mm_add_epi32(v[9], k__DCT_CONST_ROUNDING);
- u[10] = _mm_add_epi32(v[10], k__DCT_CONST_ROUNDING);
- u[11] = _mm_add_epi32(v[11], k__DCT_CONST_ROUNDING);
- u[12] = _mm_add_epi32(v[12], k__DCT_CONST_ROUNDING);
- u[13] = _mm_add_epi32(v[13], k__DCT_CONST_ROUNDING);
- u[14] = _mm_add_epi32(v[14], k__DCT_CONST_ROUNDING);
- u[15] = _mm_add_epi32(v[15], k__DCT_CONST_ROUNDING);
-
- u[0] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
- u[1] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
- u[2] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
- u[3] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
- u[4] = _mm_srai_epi32(u[4], DCT_CONST_BITS);
- u[5] = _mm_srai_epi32(u[5], DCT_CONST_BITS);
- u[6] = _mm_srai_epi32(u[6], DCT_CONST_BITS);
- u[7] = _mm_srai_epi32(u[7], DCT_CONST_BITS);
- u[8] = _mm_srai_epi32(u[8], DCT_CONST_BITS);
- u[9] = _mm_srai_epi32(u[9], DCT_CONST_BITS);
- u[10] = _mm_srai_epi32(u[10], DCT_CONST_BITS);
- u[11] = _mm_srai_epi32(u[11], DCT_CONST_BITS);
- u[12] = _mm_srai_epi32(u[12], DCT_CONST_BITS);
- u[13] = _mm_srai_epi32(u[13], DCT_CONST_BITS);
- u[14] = _mm_srai_epi32(u[14], DCT_CONST_BITS);
- u[15] = _mm_srai_epi32(u[15], DCT_CONST_BITS);
-
- s[8] = _mm_packs_epi32(u[0], u[1]);
- s[15] = _mm_packs_epi32(u[2], u[3]);
- s[9] = _mm_packs_epi32(u[4], u[5]);
- s[14] = _mm_packs_epi32(u[6], u[7]);
- s[10] = _mm_packs_epi32(u[8], u[9]);
- s[13] = _mm_packs_epi32(u[10], u[11]);
- s[11] = _mm_packs_epi32(u[12], u[13]);
- s[12] = _mm_packs_epi32(u[14], u[15]);
-
- // stage 3
- t[0] = s[0];
- t[1] = s[1];
- t[2] = s[2];
- t[3] = s[3];
- u[0] = _mm_unpacklo_epi16(s[4], s[7]);
- u[1] = _mm_unpackhi_epi16(s[4], s[7]);
- u[2] = _mm_unpacklo_epi16(s[5], s[6]);
- u[3] = _mm_unpackhi_epi16(s[5], s[6]);
-
- v[0] = _mm_madd_epi16(u[0], k__cospi_p28_m04);
- v[1] = _mm_madd_epi16(u[1], k__cospi_p28_m04);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p04_p28);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p04_p28);
- v[4] = _mm_madd_epi16(u[2], k__cospi_p12_m20);
- v[5] = _mm_madd_epi16(u[3], k__cospi_p12_m20);
- v[6] = _mm_madd_epi16(u[2], k__cospi_p20_p12);
- v[7] = _mm_madd_epi16(u[3], k__cospi_p20_p12);
-
- u[0] = _mm_add_epi32(v[0], k__DCT_CONST_ROUNDING);
- u[1] = _mm_add_epi32(v[1], k__DCT_CONST_ROUNDING);
- u[2] = _mm_add_epi32(v[2], k__DCT_CONST_ROUNDING);
- u[3] = _mm_add_epi32(v[3], k__DCT_CONST_ROUNDING);
- u[4] = _mm_add_epi32(v[4], k__DCT_CONST_ROUNDING);
- u[5] = _mm_add_epi32(v[5], k__DCT_CONST_ROUNDING);
- u[6] = _mm_add_epi32(v[6], k__DCT_CONST_ROUNDING);
- u[7] = _mm_add_epi32(v[7], k__DCT_CONST_ROUNDING);
-
- u[0] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
- u[1] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
- u[2] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
- u[3] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
- u[4] = _mm_srai_epi32(u[4], DCT_CONST_BITS);
- u[5] = _mm_srai_epi32(u[5], DCT_CONST_BITS);
- u[6] = _mm_srai_epi32(u[6], DCT_CONST_BITS);
- u[7] = _mm_srai_epi32(u[7], DCT_CONST_BITS);
-
- t[4] = _mm_packs_epi32(u[0], u[1]);
- t[7] = _mm_packs_epi32(u[2], u[3]);
- t[5] = _mm_packs_epi32(u[4], u[5]);
- t[6] = _mm_packs_epi32(u[6], u[7]);
- t[8] = _mm_add_epi16(s[8], s[9]);
- t[9] = _mm_sub_epi16(s[8], s[9]);
- t[10] = _mm_sub_epi16(s[11], s[10]);
- t[11] = _mm_add_epi16(s[10], s[11]);
- t[12] = _mm_add_epi16(s[12], s[13]);
- t[13] = _mm_sub_epi16(s[12], s[13]);
- t[14] = _mm_sub_epi16(s[15], s[14]);
- t[15] = _mm_add_epi16(s[14], s[15]);
-
- // stage 4
- u[0] = _mm_unpacklo_epi16(t[0], t[1]);
- u[1] = _mm_unpackhi_epi16(t[0], t[1]);
- u[2] = _mm_unpacklo_epi16(t[2], t[3]);
- u[3] = _mm_unpackhi_epi16(t[2], t[3]);
- u[4] = _mm_unpacklo_epi16(t[9], t[14]);
- u[5] = _mm_unpackhi_epi16(t[9], t[14]);
- u[6] = _mm_unpacklo_epi16(t[10], t[13]);
- u[7] = _mm_unpackhi_epi16(t[10], t[13]);
-
- v[0] = _mm_madd_epi16(u[0], k__cospi_p16_p16);
- v[1] = _mm_madd_epi16(u[1], k__cospi_p16_p16);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p16_m16);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p16_m16);
- v[4] = _mm_madd_epi16(u[2], k__cospi_p24_m08);
- v[5] = _mm_madd_epi16(u[3], k__cospi_p24_m08);
- v[6] = _mm_madd_epi16(u[2], k__cospi_p08_p24);
- v[7] = _mm_madd_epi16(u[3], k__cospi_p08_p24);
- v[8] = _mm_madd_epi16(u[4], k__cospi_m08_p24);
- v[9] = _mm_madd_epi16(u[5], k__cospi_m08_p24);
- v[10] = _mm_madd_epi16(u[4], k__cospi_p24_p08);
- v[11] = _mm_madd_epi16(u[5], k__cospi_p24_p08);
- v[12] = _mm_madd_epi16(u[6], k__cospi_m24_m08);
- v[13] = _mm_madd_epi16(u[7], k__cospi_m24_m08);
- v[14] = _mm_madd_epi16(u[6], k__cospi_m08_p24);
- v[15] = _mm_madd_epi16(u[7], k__cospi_m08_p24);
-
- u[0] = _mm_add_epi32(v[0], k__DCT_CONST_ROUNDING);
- u[1] = _mm_add_epi32(v[1], k__DCT_CONST_ROUNDING);
- u[2] = _mm_add_epi32(v[2], k__DCT_CONST_ROUNDING);
- u[3] = _mm_add_epi32(v[3], k__DCT_CONST_ROUNDING);
- u[4] = _mm_add_epi32(v[4], k__DCT_CONST_ROUNDING);
- u[5] = _mm_add_epi32(v[5], k__DCT_CONST_ROUNDING);
- u[6] = _mm_add_epi32(v[6], k__DCT_CONST_ROUNDING);
- u[7] = _mm_add_epi32(v[7], k__DCT_CONST_ROUNDING);
- u[8] = _mm_add_epi32(v[8], k__DCT_CONST_ROUNDING);
- u[9] = _mm_add_epi32(v[9], k__DCT_CONST_ROUNDING);
- u[10] = _mm_add_epi32(v[10], k__DCT_CONST_ROUNDING);
- u[11] = _mm_add_epi32(v[11], k__DCT_CONST_ROUNDING);
- u[12] = _mm_add_epi32(v[12], k__DCT_CONST_ROUNDING);
- u[13] = _mm_add_epi32(v[13], k__DCT_CONST_ROUNDING);
- u[14] = _mm_add_epi32(v[14], k__DCT_CONST_ROUNDING);
- u[15] = _mm_add_epi32(v[15], k__DCT_CONST_ROUNDING);
-
- u[0] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
- u[1] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
- u[2] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
- u[3] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
- u[4] = _mm_srai_epi32(u[4], DCT_CONST_BITS);
- u[5] = _mm_srai_epi32(u[5], DCT_CONST_BITS);
- u[6] = _mm_srai_epi32(u[6], DCT_CONST_BITS);
- u[7] = _mm_srai_epi32(u[7], DCT_CONST_BITS);
- u[8] = _mm_srai_epi32(u[8], DCT_CONST_BITS);
- u[9] = _mm_srai_epi32(u[9], DCT_CONST_BITS);
- u[10] = _mm_srai_epi32(u[10], DCT_CONST_BITS);
- u[11] = _mm_srai_epi32(u[11], DCT_CONST_BITS);
- u[12] = _mm_srai_epi32(u[12], DCT_CONST_BITS);
- u[13] = _mm_srai_epi32(u[13], DCT_CONST_BITS);
- u[14] = _mm_srai_epi32(u[14], DCT_CONST_BITS);
- u[15] = _mm_srai_epi32(u[15], DCT_CONST_BITS);
-
- s[0] = _mm_packs_epi32(u[0], u[1]);
- s[1] = _mm_packs_epi32(u[2], u[3]);
- s[2] = _mm_packs_epi32(u[4], u[5]);
- s[3] = _mm_packs_epi32(u[6], u[7]);
- s[4] = _mm_add_epi16(t[4], t[5]);
- s[5] = _mm_sub_epi16(t[4], t[5]);
- s[6] = _mm_sub_epi16(t[7], t[6]);
- s[7] = _mm_add_epi16(t[6], t[7]);
- s[8] = t[8];
- s[15] = t[15];
- s[9] = _mm_packs_epi32(u[8], u[9]);
- s[14] = _mm_packs_epi32(u[10], u[11]);
- s[10] = _mm_packs_epi32(u[12], u[13]);
- s[13] = _mm_packs_epi32(u[14], u[15]);
- s[11] = t[11];
- s[12] = t[12];
-
- // stage 5
- t[0] = _mm_add_epi16(s[0], s[3]);
- t[1] = _mm_add_epi16(s[1], s[2]);
- t[2] = _mm_sub_epi16(s[1], s[2]);
- t[3] = _mm_sub_epi16(s[0], s[3]);
- t[4] = s[4];
- t[7] = s[7];
-
- u[0] = _mm_unpacklo_epi16(s[5], s[6]);
- u[1] = _mm_unpackhi_epi16(s[5], s[6]);
- v[0] = _mm_madd_epi16(u[0], k__cospi_m16_p16);
- v[1] = _mm_madd_epi16(u[1], k__cospi_m16_p16);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p16_p16);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p16_p16);
- u[0] = _mm_add_epi32(v[0], k__DCT_CONST_ROUNDING);
- u[1] = _mm_add_epi32(v[1], k__DCT_CONST_ROUNDING);
- u[2] = _mm_add_epi32(v[2], k__DCT_CONST_ROUNDING);
- u[3] = _mm_add_epi32(v[3], k__DCT_CONST_ROUNDING);
- u[0] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
- u[1] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
- u[2] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
- u[3] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
- t[5] = _mm_packs_epi32(u[0], u[1]);
- t[6] = _mm_packs_epi32(u[2], u[3]);
-
- t[8] = _mm_add_epi16(s[8], s[11]);
- t[9] = _mm_add_epi16(s[9], s[10]);
- t[10] = _mm_sub_epi16(s[9], s[10]);
- t[11] = _mm_sub_epi16(s[8], s[11]);
- t[12] = _mm_sub_epi16(s[15], s[12]);
- t[13] = _mm_sub_epi16(s[14], s[13]);
- t[14] = _mm_add_epi16(s[13], s[14]);
- t[15] = _mm_add_epi16(s[12], s[15]);
-
- // stage 6
- s[0] = _mm_add_epi16(t[0], t[7]);
- s[1] = _mm_add_epi16(t[1], t[6]);
- s[2] = _mm_add_epi16(t[2], t[5]);
- s[3] = _mm_add_epi16(t[3], t[4]);
- s[4] = _mm_sub_epi16(t[3], t[4]);
- s[5] = _mm_sub_epi16(t[2], t[5]);
- s[6] = _mm_sub_epi16(t[1], t[6]);
- s[7] = _mm_sub_epi16(t[0], t[7]);
- s[8] = t[8];
- s[9] = t[9];
-
- u[0] = _mm_unpacklo_epi16(t[10], t[13]);
- u[1] = _mm_unpackhi_epi16(t[10], t[13]);
- u[2] = _mm_unpacklo_epi16(t[11], t[12]);
- u[3] = _mm_unpackhi_epi16(t[11], t[12]);
-
- v[0] = _mm_madd_epi16(u[0], k__cospi_m16_p16);
- v[1] = _mm_madd_epi16(u[1], k__cospi_m16_p16);
- v[2] = _mm_madd_epi16(u[0], k__cospi_p16_p16);
- v[3] = _mm_madd_epi16(u[1], k__cospi_p16_p16);
- v[4] = _mm_madd_epi16(u[2], k__cospi_m16_p16);
- v[5] = _mm_madd_epi16(u[3], k__cospi_m16_p16);
- v[6] = _mm_madd_epi16(u[2], k__cospi_p16_p16);
- v[7] = _mm_madd_epi16(u[3], k__cospi_p16_p16);
-
- u[0] = _mm_add_epi32(v[0], k__DCT_CONST_ROUNDING);
- u[1] = _mm_add_epi32(v[1], k__DCT_CONST_ROUNDING);
- u[2] = _mm_add_epi32(v[2], k__DCT_CONST_ROUNDING);
- u[3] = _mm_add_epi32(v[3], k__DCT_CONST_ROUNDING);
- u[4] = _mm_add_epi32(v[4], k__DCT_CONST_ROUNDING);
- u[5] = _mm_add_epi32(v[5], k__DCT_CONST_ROUNDING);
- u[6] = _mm_add_epi32(v[6], k__DCT_CONST_ROUNDING);
- u[7] = _mm_add_epi32(v[7], k__DCT_CONST_ROUNDING);
-
- u[0] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
- u[1] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
- u[2] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
- u[3] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
- u[4] = _mm_srai_epi32(u[4], DCT_CONST_BITS);
- u[5] = _mm_srai_epi32(u[5], DCT_CONST_BITS);
- u[6] = _mm_srai_epi32(u[6], DCT_CONST_BITS);
- u[7] = _mm_srai_epi32(u[7], DCT_CONST_BITS);
-
- s[10] = _mm_packs_epi32(u[0], u[1]);
- s[13] = _mm_packs_epi32(u[2], u[3]);
- s[11] = _mm_packs_epi32(u[4], u[5]);
- s[12] = _mm_packs_epi32(u[6], u[7]);
- s[14] = t[14];
- s[15] = t[15];
-
- // stage 7
- in[0] = _mm_add_epi16(s[0], s[15]);
- in[1] = _mm_add_epi16(s[1], s[14]);
- in[2] = _mm_add_epi16(s[2], s[13]);
- in[3] = _mm_add_epi16(s[3], s[12]);
- in[4] = _mm_add_epi16(s[4], s[11]);
- in[5] = _mm_add_epi16(s[5], s[10]);
- in[6] = _mm_add_epi16(s[6], s[9]);
- in[7] = _mm_add_epi16(s[7], s[8]);
- in[8] = _mm_sub_epi16(s[7], s[8]);
- in[9] = _mm_sub_epi16(s[6], s[9]);
- in[10] = _mm_sub_epi16(s[5], s[10]);
- in[11] = _mm_sub_epi16(s[4], s[11]);
- in[12] = _mm_sub_epi16(s[3], s[12]);
- in[13] = _mm_sub_epi16(s[2], s[13]);
- in[14] = _mm_sub_epi16(s[1], s[14]);
- in[15] = _mm_sub_epi16(s[0], s[15]);
-}
-
-void idct16_sse2(__m128i *in0, __m128i *in1) {
- array_transpose_16x16(in0, in1);
- idct16_8col(in0);
- idct16_8col(in1);
-}
-
-void iadst16_sse2(__m128i *in0, __m128i *in1) {
- array_transpose_16x16(in0, in1);
- iadst16_8col(in0);
- iadst16_8col(in1);
-}
-
-void vpx_idct16x16_10_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- const __m128i rounding = _mm_set1_epi32(DCT_CONST_ROUNDING);
- const __m128i final_rounding = _mm_set1_epi16(1 << 5);
- const __m128i zero = _mm_setzero_si128();
-
- const __m128i stg2_0 = pair_set_epi16(cospi_30_64, -cospi_2_64);
- const __m128i stg2_1 = pair_set_epi16(cospi_2_64, cospi_30_64);
- const __m128i stg2_6 = pair_set_epi16(cospi_6_64, -cospi_26_64);
- const __m128i stg2_7 = pair_set_epi16(cospi_26_64, cospi_6_64);
-
- const __m128i stg3_0 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i stg3_1 = pair_set_epi16(cospi_4_64, cospi_28_64);
-
- const __m128i stg4_0 = pair_set_epi16(cospi_16_64, cospi_16_64);
- const __m128i stg4_1 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i stg4_4 = pair_set_epi16(-cospi_8_64, cospi_24_64);
- const __m128i stg4_5 = pair_set_epi16(cospi_24_64, cospi_8_64);
- const __m128i stg4_6 = pair_set_epi16(-cospi_24_64, -cospi_8_64);
- const __m128i stg4_7 = pair_set_epi16(-cospi_8_64, cospi_24_64);
-
- const __m128i stg6_0 = pair_set_epi16(-cospi_16_64, cospi_16_64);
- __m128i in[16], l[16];
- __m128i stp1_0, stp1_1, stp1_2, stp1_3, stp1_4, stp1_5, stp1_6,
- stp1_8, stp1_9, stp1_10, stp1_11, stp1_12, stp1_13, stp1_14, stp1_15,
- stp1_8_0, stp1_12_0;
- __m128i stp2_0, stp2_1, stp2_2, stp2_3, stp2_4, stp2_5, stp2_6, stp2_7,
- stp2_8, stp2_9, stp2_10, stp2_11, stp2_12, stp2_13, stp2_14;
- __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
- int i;
- // First 1-D inverse DCT
- // Load input data.
- in[0] = load_input_data(input);
- in[1] = load_input_data(input + 8 * 2);
- in[2] = load_input_data(input + 8 * 4);
- in[3] = load_input_data(input + 8 * 6);
-
- TRANSPOSE_8X4(in[0], in[1], in[2], in[3], in[0], in[1]);
-
- // Stage2
- {
- const __m128i lo_1_15 = _mm_unpackhi_epi16(in[0], zero);
- const __m128i lo_13_3 = _mm_unpackhi_epi16(zero, in[1]);
-
- tmp0 = _mm_madd_epi16(lo_1_15, stg2_0);
- tmp2 = _mm_madd_epi16(lo_1_15, stg2_1);
- tmp5 = _mm_madd_epi16(lo_13_3, stg2_6);
- tmp7 = _mm_madd_epi16(lo_13_3, stg2_7);
-
- tmp0 = _mm_add_epi32(tmp0, rounding);
- tmp2 = _mm_add_epi32(tmp2, rounding);
- tmp5 = _mm_add_epi32(tmp5, rounding);
- tmp7 = _mm_add_epi32(tmp7, rounding);
-
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS);
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS);
- tmp5 = _mm_srai_epi32(tmp5, DCT_CONST_BITS);
- tmp7 = _mm_srai_epi32(tmp7, DCT_CONST_BITS);
-
- stp2_8 = _mm_packs_epi32(tmp0, tmp2);
- stp2_11 = _mm_packs_epi32(tmp5, tmp7);
- }
-
- // Stage3
- {
- const __m128i lo_2_14 = _mm_unpacklo_epi16(in[1], zero);
-
- tmp0 = _mm_madd_epi16(lo_2_14, stg3_0);
- tmp2 = _mm_madd_epi16(lo_2_14, stg3_1);
-
- tmp0 = _mm_add_epi32(tmp0, rounding);
- tmp2 = _mm_add_epi32(tmp2, rounding);
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS);
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS);
-
- stp1_13 = _mm_unpackhi_epi64(stp2_11, zero);
- stp1_14 = _mm_unpackhi_epi64(stp2_8, zero);
-
- stp1_4 = _mm_packs_epi32(tmp0, tmp2);
- }
-
- // Stage4
- {
- const __m128i lo_0_8 = _mm_unpacklo_epi16(in[0], zero);
- const __m128i lo_9_14 = _mm_unpacklo_epi16(stp2_8, stp1_14);
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp2_11, stp1_13);
-
- tmp0 = _mm_madd_epi16(lo_0_8, stg4_0);
- tmp2 = _mm_madd_epi16(lo_0_8, stg4_1);
- tmp1 = _mm_madd_epi16(lo_9_14, stg4_4);
- tmp3 = _mm_madd_epi16(lo_9_14, stg4_5);
- tmp5 = _mm_madd_epi16(lo_10_13, stg4_6);
- tmp7 = _mm_madd_epi16(lo_10_13, stg4_7);
-
- tmp0 = _mm_add_epi32(tmp0, rounding);
- tmp2 = _mm_add_epi32(tmp2, rounding);
- tmp1 = _mm_add_epi32(tmp1, rounding);
- tmp3 = _mm_add_epi32(tmp3, rounding);
- tmp5 = _mm_add_epi32(tmp5, rounding);
- tmp7 = _mm_add_epi32(tmp7, rounding);
-
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS);
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS);
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS);
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS);
- tmp5 = _mm_srai_epi32(tmp5, DCT_CONST_BITS);
- tmp7 = _mm_srai_epi32(tmp7, DCT_CONST_BITS);
-
- stp1_0 = _mm_packs_epi32(tmp0, tmp0);
- stp1_1 = _mm_packs_epi32(tmp2, tmp2);
- stp2_9 = _mm_packs_epi32(tmp1, tmp3);
- stp2_10 = _mm_packs_epi32(tmp5, tmp7);
-
- stp2_6 = _mm_unpackhi_epi64(stp1_4, zero);
- }
-
- // Stage5 and Stage6
- {
- tmp0 = _mm_add_epi16(stp2_8, stp2_11);
- tmp1 = _mm_sub_epi16(stp2_8, stp2_11);
- tmp2 = _mm_add_epi16(stp2_9, stp2_10);
- tmp3 = _mm_sub_epi16(stp2_9, stp2_10);
-
- stp1_9 = _mm_unpacklo_epi64(tmp2, zero);
- stp1_10 = _mm_unpacklo_epi64(tmp3, zero);
- stp1_8 = _mm_unpacklo_epi64(tmp0, zero);
- stp1_11 = _mm_unpacklo_epi64(tmp1, zero);
-
- stp1_13 = _mm_unpackhi_epi64(tmp3, zero);
- stp1_14 = _mm_unpackhi_epi64(tmp2, zero);
- stp1_12 = _mm_unpackhi_epi64(tmp1, zero);
- stp1_15 = _mm_unpackhi_epi64(tmp0, zero);
- }
-
- // Stage6
- {
- const __m128i lo_6_5 = _mm_unpacklo_epi16(stp2_6, stp1_4);
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp1_10, stp1_13);
- const __m128i lo_11_12 = _mm_unpacklo_epi16(stp1_11, stp1_12);
-
- tmp1 = _mm_madd_epi16(lo_6_5, stg4_1);
- tmp3 = _mm_madd_epi16(lo_6_5, stg4_0);
- tmp0 = _mm_madd_epi16(lo_10_13, stg6_0);
- tmp2 = _mm_madd_epi16(lo_10_13, stg4_0);
- tmp4 = _mm_madd_epi16(lo_11_12, stg6_0);
- tmp6 = _mm_madd_epi16(lo_11_12, stg4_0);
-
- tmp1 = _mm_add_epi32(tmp1, rounding);
- tmp3 = _mm_add_epi32(tmp3, rounding);
- tmp0 = _mm_add_epi32(tmp0, rounding);
- tmp2 = _mm_add_epi32(tmp2, rounding);
- tmp4 = _mm_add_epi32(tmp4, rounding);
- tmp6 = _mm_add_epi32(tmp6, rounding);
-
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS);
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS);
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS);
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS);
- tmp4 = _mm_srai_epi32(tmp4, DCT_CONST_BITS);
- tmp6 = _mm_srai_epi32(tmp6, DCT_CONST_BITS);
-
- stp1_6 = _mm_packs_epi32(tmp3, tmp1);
-
- stp2_10 = _mm_packs_epi32(tmp0, zero);
- stp2_13 = _mm_packs_epi32(tmp2, zero);
- stp2_11 = _mm_packs_epi32(tmp4, zero);
- stp2_12 = _mm_packs_epi32(tmp6, zero);
-
- tmp0 = _mm_add_epi16(stp1_0, stp1_4);
- tmp1 = _mm_sub_epi16(stp1_0, stp1_4);
- tmp2 = _mm_add_epi16(stp1_1, stp1_6);
- tmp3 = _mm_sub_epi16(stp1_1, stp1_6);
-
- stp2_0 = _mm_unpackhi_epi64(tmp0, zero);
- stp2_1 = _mm_unpacklo_epi64(tmp2, zero);
- stp2_2 = _mm_unpackhi_epi64(tmp2, zero);
- stp2_3 = _mm_unpacklo_epi64(tmp0, zero);
- stp2_4 = _mm_unpacklo_epi64(tmp1, zero);
- stp2_5 = _mm_unpackhi_epi64(tmp3, zero);
- stp2_6 = _mm_unpacklo_epi64(tmp3, zero);
- stp2_7 = _mm_unpackhi_epi64(tmp1, zero);
- }
-
- // Stage7. Left 8x16 only.
- l[0] = _mm_add_epi16(stp2_0, stp1_15);
- l[1] = _mm_add_epi16(stp2_1, stp1_14);
- l[2] = _mm_add_epi16(stp2_2, stp2_13);
- l[3] = _mm_add_epi16(stp2_3, stp2_12);
- l[4] = _mm_add_epi16(stp2_4, stp2_11);
- l[5] = _mm_add_epi16(stp2_5, stp2_10);
- l[6] = _mm_add_epi16(stp2_6, stp1_9);
- l[7] = _mm_add_epi16(stp2_7, stp1_8);
- l[8] = _mm_sub_epi16(stp2_7, stp1_8);
- l[9] = _mm_sub_epi16(stp2_6, stp1_9);
- l[10] = _mm_sub_epi16(stp2_5, stp2_10);
- l[11] = _mm_sub_epi16(stp2_4, stp2_11);
- l[12] = _mm_sub_epi16(stp2_3, stp2_12);
- l[13] = _mm_sub_epi16(stp2_2, stp2_13);
- l[14] = _mm_sub_epi16(stp2_1, stp1_14);
- l[15] = _mm_sub_epi16(stp2_0, stp1_15);
-
- // Second 1-D inverse transform, performed per 8x16 block
- for (i = 0; i < 2; i++) {
- int j;
- array_transpose_4X8(l + 8 * i, in);
-
- IDCT16_10
-
- // Stage7
- in[0] = _mm_add_epi16(stp2_0, stp1_15);
- in[1] = _mm_add_epi16(stp2_1, stp1_14);
- in[2] = _mm_add_epi16(stp2_2, stp2_13);
- in[3] = _mm_add_epi16(stp2_3, stp2_12);
- in[4] = _mm_add_epi16(stp2_4, stp2_11);
- in[5] = _mm_add_epi16(stp2_5, stp2_10);
- in[6] = _mm_add_epi16(stp2_6, stp1_9);
- in[7] = _mm_add_epi16(stp2_7, stp1_8);
- in[8] = _mm_sub_epi16(stp2_7, stp1_8);
- in[9] = _mm_sub_epi16(stp2_6, stp1_9);
- in[10] = _mm_sub_epi16(stp2_5, stp2_10);
- in[11] = _mm_sub_epi16(stp2_4, stp2_11);
- in[12] = _mm_sub_epi16(stp2_3, stp2_12);
- in[13] = _mm_sub_epi16(stp2_2, stp2_13);
- in[14] = _mm_sub_epi16(stp2_1, stp1_14);
- in[15] = _mm_sub_epi16(stp2_0, stp1_15);
-
- for (j = 0; j < 16; ++j) {
- // Final rounding and shift
- in[j] = _mm_adds_epi16(in[j], final_rounding);
- in[j] = _mm_srai_epi16(in[j], 6);
- RECON_AND_STORE(dest + j * stride, in[j]);
- }
-
- dest += 8;
- }
-}
-
-#define LOAD_DQCOEFF(reg, input) \
- { \
- reg = load_input_data(input); \
- input += 8; \
- } \
-
-#define IDCT32_34 \
-/* Stage1 */ \
-{ \
- const __m128i zero = _mm_setzero_si128();\
- const __m128i lo_1_31 = _mm_unpacklo_epi16(in[1], zero); \
- const __m128i hi_1_31 = _mm_unpackhi_epi16(in[1], zero); \
- \
- const __m128i lo_25_7= _mm_unpacklo_epi16(zero, in[7]); \
- const __m128i hi_25_7 = _mm_unpackhi_epi16(zero, in[7]); \
- \
- const __m128i lo_5_27 = _mm_unpacklo_epi16(in[5], zero); \
- const __m128i hi_5_27 = _mm_unpackhi_epi16(in[5], zero); \
- \
- const __m128i lo_29_3 = _mm_unpacklo_epi16(zero, in[3]); \
- const __m128i hi_29_3 = _mm_unpackhi_epi16(zero, in[3]); \
- \
- MULTIPLICATION_AND_ADD_2(lo_1_31, hi_1_31, stg1_0, \
- stg1_1, stp1_16, stp1_31); \
- MULTIPLICATION_AND_ADD_2(lo_25_7, hi_25_7, stg1_6, \
- stg1_7, stp1_19, stp1_28); \
- MULTIPLICATION_AND_ADD_2(lo_5_27, hi_5_27, stg1_8, \
- stg1_9, stp1_20, stp1_27); \
- MULTIPLICATION_AND_ADD_2(lo_29_3, hi_29_3, stg1_14, \
- stg1_15, stp1_23, stp1_24); \
-} \
-\
-/* Stage2 */ \
-{ \
- const __m128i zero = _mm_setzero_si128();\
- const __m128i lo_2_30 = _mm_unpacklo_epi16(in[2], zero); \
- const __m128i hi_2_30 = _mm_unpackhi_epi16(in[2], zero); \
- \
- const __m128i lo_26_6 = _mm_unpacklo_epi16(zero, in[6]); \
- const __m128i hi_26_6 = _mm_unpackhi_epi16(zero, in[6]); \
- \
- MULTIPLICATION_AND_ADD_2(lo_2_30, hi_2_30, stg2_0, \
- stg2_1, stp2_8, stp2_15); \
- MULTIPLICATION_AND_ADD_2(lo_26_6, hi_26_6, stg2_6, \
- stg2_7, stp2_11, stp2_12); \
- \
- stp2_16 = stp1_16; \
- stp2_19 = stp1_19; \
- \
- stp2_20 = stp1_20; \
- stp2_23 = stp1_23; \
- \
- stp2_24 = stp1_24; \
- stp2_27 = stp1_27; \
- \
- stp2_28 = stp1_28; \
- stp2_31 = stp1_31; \
-} \
-\
-/* Stage3 */ \
-{ \
- const __m128i zero = _mm_setzero_si128();\
- const __m128i lo_4_28 = _mm_unpacklo_epi16(in[4], zero); \
- const __m128i hi_4_28 = _mm_unpackhi_epi16(in[4], zero); \
- \
- const __m128i lo_17_30 = _mm_unpacklo_epi16(stp1_16, stp1_31); \
- const __m128i hi_17_30 = _mm_unpackhi_epi16(stp1_16, stp1_31); \
- const __m128i lo_18_29 = _mm_unpacklo_epi16(stp1_19, stp1_28); \
- const __m128i hi_18_29 = _mm_unpackhi_epi16(stp1_19, stp1_28); \
- \
- const __m128i lo_21_26 = _mm_unpacklo_epi16(stp1_20, stp1_27); \
- const __m128i hi_21_26 = _mm_unpackhi_epi16(stp1_20, stp1_27); \
- const __m128i lo_22_25 = _mm_unpacklo_epi16(stp1_23, stp1_24); \
- const __m128i hi_22_25 = _mm_unpackhi_epi16(stp1_23, stp2_24); \
- \
- MULTIPLICATION_AND_ADD_2(lo_4_28, hi_4_28, stg3_0, \
- stg3_1, stp1_4, stp1_7); \
- \
- stp1_8 = stp2_8; \
- stp1_11 = stp2_11; \
- stp1_12 = stp2_12; \
- stp1_15 = stp2_15; \
- \
- MULTIPLICATION_AND_ADD(lo_17_30, hi_17_30, lo_18_29, hi_18_29, stg3_4, \
- stg3_5, stg3_6, stg3_4, stp1_17, stp1_30, \
- stp1_18, stp1_29) \
- MULTIPLICATION_AND_ADD(lo_21_26, hi_21_26, lo_22_25, hi_22_25, stg3_8, \
- stg3_9, stg3_10, stg3_8, stp1_21, stp1_26, \
- stp1_22, stp1_25) \
- \
- stp1_16 = stp2_16; \
- stp1_31 = stp2_31; \
- stp1_19 = stp2_19; \
- stp1_20 = stp2_20; \
- stp1_23 = stp2_23; \
- stp1_24 = stp2_24; \
- stp1_27 = stp2_27; \
- stp1_28 = stp2_28; \
-} \
-\
-/* Stage4 */ \
-{ \
- const __m128i zero = _mm_setzero_si128();\
- const __m128i lo_0_16 = _mm_unpacklo_epi16(in[0], zero); \
- const __m128i hi_0_16 = _mm_unpackhi_epi16(in[0], zero); \
- \
- const __m128i lo_9_14 = _mm_unpacklo_epi16(stp2_8, stp2_15); \
- const __m128i hi_9_14 = _mm_unpackhi_epi16(stp2_8, stp2_15); \
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp2_11, stp2_12); \
- const __m128i hi_10_13 = _mm_unpackhi_epi16(stp2_11, stp2_12); \
- \
- MULTIPLICATION_AND_ADD_2(lo_0_16, hi_0_16, stg4_0, \
- stg4_1, stp2_0, stp2_1); \
- \
- stp2_4 = stp1_4; \
- stp2_5 = stp1_4; \
- stp2_6 = stp1_7; \
- stp2_7 = stp1_7; \
- \
- MULTIPLICATION_AND_ADD(lo_9_14, hi_9_14, lo_10_13, hi_10_13, stg4_4, \
- stg4_5, stg4_6, stg4_4, stp2_9, stp2_14, \
- stp2_10, stp2_13) \
- \
- stp2_8 = stp1_8; \
- stp2_15 = stp1_15; \
- stp2_11 = stp1_11; \
- stp2_12 = stp1_12; \
- \
- stp2_16 = _mm_add_epi16(stp1_16, stp1_19); \
- stp2_17 = _mm_add_epi16(stp1_17, stp1_18); \
- stp2_18 = _mm_sub_epi16(stp1_17, stp1_18); \
- stp2_19 = _mm_sub_epi16(stp1_16, stp1_19); \
- stp2_20 = _mm_sub_epi16(stp1_23, stp1_20); \
- stp2_21 = _mm_sub_epi16(stp1_22, stp1_21); \
- stp2_22 = _mm_add_epi16(stp1_22, stp1_21); \
- stp2_23 = _mm_add_epi16(stp1_23, stp1_20); \
- \
- stp2_24 = _mm_add_epi16(stp1_24, stp1_27); \
- stp2_25 = _mm_add_epi16(stp1_25, stp1_26); \
- stp2_26 = _mm_sub_epi16(stp1_25, stp1_26); \
- stp2_27 = _mm_sub_epi16(stp1_24, stp1_27); \
- stp2_28 = _mm_sub_epi16(stp1_31, stp1_28); \
- stp2_29 = _mm_sub_epi16(stp1_30, stp1_29); \
- stp2_30 = _mm_add_epi16(stp1_29, stp1_30); \
- stp2_31 = _mm_add_epi16(stp1_28, stp1_31); \
-} \
-\
-/* Stage5 */ \
-{ \
- const __m128i lo_6_5 = _mm_unpacklo_epi16(stp2_6, stp2_5); \
- const __m128i hi_6_5 = _mm_unpackhi_epi16(stp2_6, stp2_5); \
- const __m128i lo_18_29 = _mm_unpacklo_epi16(stp2_18, stp2_29); \
- const __m128i hi_18_29 = _mm_unpackhi_epi16(stp2_18, stp2_29); \
- \
- const __m128i lo_19_28 = _mm_unpacklo_epi16(stp2_19, stp2_28); \
- const __m128i hi_19_28 = _mm_unpackhi_epi16(stp2_19, stp2_28); \
- const __m128i lo_20_27 = _mm_unpacklo_epi16(stp2_20, stp2_27); \
- const __m128i hi_20_27 = _mm_unpackhi_epi16(stp2_20, stp2_27); \
- \
- const __m128i lo_21_26 = _mm_unpacklo_epi16(stp2_21, stp2_26); \
- const __m128i hi_21_26 = _mm_unpackhi_epi16(stp2_21, stp2_26); \
- \
- stp1_0 = stp2_0; \
- stp1_1 = stp2_1; \
- stp1_2 = stp2_1; \
- stp1_3 = stp2_0; \
- \
- tmp0 = _mm_madd_epi16(lo_6_5, stg4_1); \
- tmp1 = _mm_madd_epi16(hi_6_5, stg4_1); \
- tmp2 = _mm_madd_epi16(lo_6_5, stg4_0); \
- tmp3 = _mm_madd_epi16(hi_6_5, stg4_0); \
- \
- tmp0 = _mm_add_epi32(tmp0, rounding); \
- tmp1 = _mm_add_epi32(tmp1, rounding); \
- tmp2 = _mm_add_epi32(tmp2, rounding); \
- tmp3 = _mm_add_epi32(tmp3, rounding); \
- \
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS); \
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS); \
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS); \
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS); \
- \
- stp1_5 = _mm_packs_epi32(tmp0, tmp1); \
- stp1_6 = _mm_packs_epi32(tmp2, tmp3); \
- \
- stp1_4 = stp2_4; \
- stp1_7 = stp2_7; \
- \
- stp1_8 = _mm_add_epi16(stp2_8, stp2_11); \
- stp1_9 = _mm_add_epi16(stp2_9, stp2_10); \
- stp1_10 = _mm_sub_epi16(stp2_9, stp2_10); \
- stp1_11 = _mm_sub_epi16(stp2_8, stp2_11); \
- stp1_12 = _mm_sub_epi16(stp2_15, stp2_12); \
- stp1_13 = _mm_sub_epi16(stp2_14, stp2_13); \
- stp1_14 = _mm_add_epi16(stp2_14, stp2_13); \
- stp1_15 = _mm_add_epi16(stp2_15, stp2_12); \
- \
- stp1_16 = stp2_16; \
- stp1_17 = stp2_17; \
- \
- MULTIPLICATION_AND_ADD(lo_18_29, hi_18_29, lo_19_28, hi_19_28, stg4_4, \
- stg4_5, stg4_4, stg4_5, stp1_18, stp1_29, \
- stp1_19, stp1_28) \
- MULTIPLICATION_AND_ADD(lo_20_27, hi_20_27, lo_21_26, hi_21_26, stg4_6, \
- stg4_4, stg4_6, stg4_4, stp1_20, stp1_27, \
- stp1_21, stp1_26) \
- \
- stp1_22 = stp2_22; \
- stp1_23 = stp2_23; \
- stp1_24 = stp2_24; \
- stp1_25 = stp2_25; \
- stp1_30 = stp2_30; \
- stp1_31 = stp2_31; \
-} \
-\
-/* Stage6 */ \
-{ \
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp1_10, stp1_13); \
- const __m128i hi_10_13 = _mm_unpackhi_epi16(stp1_10, stp1_13); \
- const __m128i lo_11_12 = _mm_unpacklo_epi16(stp1_11, stp1_12); \
- const __m128i hi_11_12 = _mm_unpackhi_epi16(stp1_11, stp1_12); \
- \
- stp2_0 = _mm_add_epi16(stp1_0, stp1_7); \
- stp2_1 = _mm_add_epi16(stp1_1, stp1_6); \
- stp2_2 = _mm_add_epi16(stp1_2, stp1_5); \
- stp2_3 = _mm_add_epi16(stp1_3, stp1_4); \
- stp2_4 = _mm_sub_epi16(stp1_3, stp1_4); \
- stp2_5 = _mm_sub_epi16(stp1_2, stp1_5); \
- stp2_6 = _mm_sub_epi16(stp1_1, stp1_6); \
- stp2_7 = _mm_sub_epi16(stp1_0, stp1_7); \
- \
- stp2_8 = stp1_8; \
- stp2_9 = stp1_9; \
- stp2_14 = stp1_14; \
- stp2_15 = stp1_15; \
- \
- MULTIPLICATION_AND_ADD(lo_10_13, hi_10_13, lo_11_12, hi_11_12, \
- stg6_0, stg4_0, stg6_0, stg4_0, stp2_10, \
- stp2_13, stp2_11, stp2_12) \
- \
- stp2_16 = _mm_add_epi16(stp1_16, stp1_23); \
- stp2_17 = _mm_add_epi16(stp1_17, stp1_22); \
- stp2_18 = _mm_add_epi16(stp1_18, stp1_21); \
- stp2_19 = _mm_add_epi16(stp1_19, stp1_20); \
- stp2_20 = _mm_sub_epi16(stp1_19, stp1_20); \
- stp2_21 = _mm_sub_epi16(stp1_18, stp1_21); \
- stp2_22 = _mm_sub_epi16(stp1_17, stp1_22); \
- stp2_23 = _mm_sub_epi16(stp1_16, stp1_23); \
- \
- stp2_24 = _mm_sub_epi16(stp1_31, stp1_24); \
- stp2_25 = _mm_sub_epi16(stp1_30, stp1_25); \
- stp2_26 = _mm_sub_epi16(stp1_29, stp1_26); \
- stp2_27 = _mm_sub_epi16(stp1_28, stp1_27); \
- stp2_28 = _mm_add_epi16(stp1_27, stp1_28); \
- stp2_29 = _mm_add_epi16(stp1_26, stp1_29); \
- stp2_30 = _mm_add_epi16(stp1_25, stp1_30); \
- stp2_31 = _mm_add_epi16(stp1_24, stp1_31); \
-} \
-\
-/* Stage7 */ \
-{ \
- const __m128i lo_20_27 = _mm_unpacklo_epi16(stp2_20, stp2_27); \
- const __m128i hi_20_27 = _mm_unpackhi_epi16(stp2_20, stp2_27); \
- const __m128i lo_21_26 = _mm_unpacklo_epi16(stp2_21, stp2_26); \
- const __m128i hi_21_26 = _mm_unpackhi_epi16(stp2_21, stp2_26); \
- \
- const __m128i lo_22_25 = _mm_unpacklo_epi16(stp2_22, stp2_25); \
- const __m128i hi_22_25 = _mm_unpackhi_epi16(stp2_22, stp2_25); \
- const __m128i lo_23_24 = _mm_unpacklo_epi16(stp2_23, stp2_24); \
- const __m128i hi_23_24 = _mm_unpackhi_epi16(stp2_23, stp2_24); \
- \
- stp1_0 = _mm_add_epi16(stp2_0, stp2_15); \
- stp1_1 = _mm_add_epi16(stp2_1, stp2_14); \
- stp1_2 = _mm_add_epi16(stp2_2, stp2_13); \
- stp1_3 = _mm_add_epi16(stp2_3, stp2_12); \
- stp1_4 = _mm_add_epi16(stp2_4, stp2_11); \
- stp1_5 = _mm_add_epi16(stp2_5, stp2_10); \
- stp1_6 = _mm_add_epi16(stp2_6, stp2_9); \
- stp1_7 = _mm_add_epi16(stp2_7, stp2_8); \
- stp1_8 = _mm_sub_epi16(stp2_7, stp2_8); \
- stp1_9 = _mm_sub_epi16(stp2_6, stp2_9); \
- stp1_10 = _mm_sub_epi16(stp2_5, stp2_10); \
- stp1_11 = _mm_sub_epi16(stp2_4, stp2_11); \
- stp1_12 = _mm_sub_epi16(stp2_3, stp2_12); \
- stp1_13 = _mm_sub_epi16(stp2_2, stp2_13); \
- stp1_14 = _mm_sub_epi16(stp2_1, stp2_14); \
- stp1_15 = _mm_sub_epi16(stp2_0, stp2_15); \
- \
- stp1_16 = stp2_16; \
- stp1_17 = stp2_17; \
- stp1_18 = stp2_18; \
- stp1_19 = stp2_19; \
- \
- MULTIPLICATION_AND_ADD(lo_20_27, hi_20_27, lo_21_26, hi_21_26, stg6_0, \
- stg4_0, stg6_0, stg4_0, stp1_20, stp1_27, \
- stp1_21, stp1_26) \
- MULTIPLICATION_AND_ADD(lo_22_25, hi_22_25, lo_23_24, hi_23_24, stg6_0, \
- stg4_0, stg6_0, stg4_0, stp1_22, stp1_25, \
- stp1_23, stp1_24) \
- \
- stp1_28 = stp2_28; \
- stp1_29 = stp2_29; \
- stp1_30 = stp2_30; \
- stp1_31 = stp2_31; \
-}
-
-
-#define IDCT32 \
-/* Stage1 */ \
-{ \
- const __m128i lo_1_31 = _mm_unpacklo_epi16(in[1], in[31]); \
- const __m128i hi_1_31 = _mm_unpackhi_epi16(in[1], in[31]); \
- const __m128i lo_17_15 = _mm_unpacklo_epi16(in[17], in[15]); \
- const __m128i hi_17_15 = _mm_unpackhi_epi16(in[17], in[15]); \
- \
- const __m128i lo_9_23 = _mm_unpacklo_epi16(in[9], in[23]); \
- const __m128i hi_9_23 = _mm_unpackhi_epi16(in[9], in[23]); \
- const __m128i lo_25_7= _mm_unpacklo_epi16(in[25], in[7]); \
- const __m128i hi_25_7 = _mm_unpackhi_epi16(in[25], in[7]); \
- \
- const __m128i lo_5_27 = _mm_unpacklo_epi16(in[5], in[27]); \
- const __m128i hi_5_27 = _mm_unpackhi_epi16(in[5], in[27]); \
- const __m128i lo_21_11 = _mm_unpacklo_epi16(in[21], in[11]); \
- const __m128i hi_21_11 = _mm_unpackhi_epi16(in[21], in[11]); \
- \
- const __m128i lo_13_19 = _mm_unpacklo_epi16(in[13], in[19]); \
- const __m128i hi_13_19 = _mm_unpackhi_epi16(in[13], in[19]); \
- const __m128i lo_29_3 = _mm_unpacklo_epi16(in[29], in[3]); \
- const __m128i hi_29_3 = _mm_unpackhi_epi16(in[29], in[3]); \
- \
- MULTIPLICATION_AND_ADD(lo_1_31, hi_1_31, lo_17_15, hi_17_15, stg1_0, \
- stg1_1, stg1_2, stg1_3, stp1_16, stp1_31, \
- stp1_17, stp1_30) \
- MULTIPLICATION_AND_ADD(lo_9_23, hi_9_23, lo_25_7, hi_25_7, stg1_4, \
- stg1_5, stg1_6, stg1_7, stp1_18, stp1_29, \
- stp1_19, stp1_28) \
- MULTIPLICATION_AND_ADD(lo_5_27, hi_5_27, lo_21_11, hi_21_11, stg1_8, \
- stg1_9, stg1_10, stg1_11, stp1_20, stp1_27, \
- stp1_21, stp1_26) \
- MULTIPLICATION_AND_ADD(lo_13_19, hi_13_19, lo_29_3, hi_29_3, stg1_12, \
- stg1_13, stg1_14, stg1_15, stp1_22, stp1_25, \
- stp1_23, stp1_24) \
-} \
-\
-/* Stage2 */ \
-{ \
- const __m128i lo_2_30 = _mm_unpacklo_epi16(in[2], in[30]); \
- const __m128i hi_2_30 = _mm_unpackhi_epi16(in[2], in[30]); \
- const __m128i lo_18_14 = _mm_unpacklo_epi16(in[18], in[14]); \
- const __m128i hi_18_14 = _mm_unpackhi_epi16(in[18], in[14]); \
- \
- const __m128i lo_10_22 = _mm_unpacklo_epi16(in[10], in[22]); \
- const __m128i hi_10_22 = _mm_unpackhi_epi16(in[10], in[22]); \
- const __m128i lo_26_6 = _mm_unpacklo_epi16(in[26], in[6]); \
- const __m128i hi_26_6 = _mm_unpackhi_epi16(in[26], in[6]); \
- \
- MULTIPLICATION_AND_ADD(lo_2_30, hi_2_30, lo_18_14, hi_18_14, stg2_0, \
- stg2_1, stg2_2, stg2_3, stp2_8, stp2_15, stp2_9, \
- stp2_14) \
- MULTIPLICATION_AND_ADD(lo_10_22, hi_10_22, lo_26_6, hi_26_6, stg2_4, \
- stg2_5, stg2_6, stg2_7, stp2_10, stp2_13, \
- stp2_11, stp2_12) \
- \
- stp2_16 = _mm_add_epi16(stp1_16, stp1_17); \
- stp2_17 = _mm_sub_epi16(stp1_16, stp1_17); \
- stp2_18 = _mm_sub_epi16(stp1_19, stp1_18); \
- stp2_19 = _mm_add_epi16(stp1_19, stp1_18); \
- \
- stp2_20 = _mm_add_epi16(stp1_20, stp1_21); \
- stp2_21 = _mm_sub_epi16(stp1_20, stp1_21); \
- stp2_22 = _mm_sub_epi16(stp1_23, stp1_22); \
- stp2_23 = _mm_add_epi16(stp1_23, stp1_22); \
- \
- stp2_24 = _mm_add_epi16(stp1_24, stp1_25); \
- stp2_25 = _mm_sub_epi16(stp1_24, stp1_25); \
- stp2_26 = _mm_sub_epi16(stp1_27, stp1_26); \
- stp2_27 = _mm_add_epi16(stp1_27, stp1_26); \
- \
- stp2_28 = _mm_add_epi16(stp1_28, stp1_29); \
- stp2_29 = _mm_sub_epi16(stp1_28, stp1_29); \
- stp2_30 = _mm_sub_epi16(stp1_31, stp1_30); \
- stp2_31 = _mm_add_epi16(stp1_31, stp1_30); \
-} \
-\
-/* Stage3 */ \
-{ \
- const __m128i lo_4_28 = _mm_unpacklo_epi16(in[4], in[28]); \
- const __m128i hi_4_28 = _mm_unpackhi_epi16(in[4], in[28]); \
- const __m128i lo_20_12 = _mm_unpacklo_epi16(in[20], in[12]); \
- const __m128i hi_20_12 = _mm_unpackhi_epi16(in[20], in[12]); \
- \
- const __m128i lo_17_30 = _mm_unpacklo_epi16(stp2_17, stp2_30); \
- const __m128i hi_17_30 = _mm_unpackhi_epi16(stp2_17, stp2_30); \
- const __m128i lo_18_29 = _mm_unpacklo_epi16(stp2_18, stp2_29); \
- const __m128i hi_18_29 = _mm_unpackhi_epi16(stp2_18, stp2_29); \
- \
- const __m128i lo_21_26 = _mm_unpacklo_epi16(stp2_21, stp2_26); \
- const __m128i hi_21_26 = _mm_unpackhi_epi16(stp2_21, stp2_26); \
- const __m128i lo_22_25 = _mm_unpacklo_epi16(stp2_22, stp2_25); \
- const __m128i hi_22_25 = _mm_unpackhi_epi16(stp2_22, stp2_25); \
- \
- MULTIPLICATION_AND_ADD(lo_4_28, hi_4_28, lo_20_12, hi_20_12, stg3_0, \
- stg3_1, stg3_2, stg3_3, stp1_4, stp1_7, stp1_5, \
- stp1_6) \
- \
- stp1_8 = _mm_add_epi16(stp2_8, stp2_9); \
- stp1_9 = _mm_sub_epi16(stp2_8, stp2_9); \
- stp1_10 = _mm_sub_epi16(stp2_11, stp2_10); \
- stp1_11 = _mm_add_epi16(stp2_11, stp2_10); \
- stp1_12 = _mm_add_epi16(stp2_12, stp2_13); \
- stp1_13 = _mm_sub_epi16(stp2_12, stp2_13); \
- stp1_14 = _mm_sub_epi16(stp2_15, stp2_14); \
- stp1_15 = _mm_add_epi16(stp2_15, stp2_14); \
- \
- MULTIPLICATION_AND_ADD(lo_17_30, hi_17_30, lo_18_29, hi_18_29, stg3_4, \
- stg3_5, stg3_6, stg3_4, stp1_17, stp1_30, \
- stp1_18, stp1_29) \
- MULTIPLICATION_AND_ADD(lo_21_26, hi_21_26, lo_22_25, hi_22_25, stg3_8, \
- stg3_9, stg3_10, stg3_8, stp1_21, stp1_26, \
- stp1_22, stp1_25) \
- \
- stp1_16 = stp2_16; \
- stp1_31 = stp2_31; \
- stp1_19 = stp2_19; \
- stp1_20 = stp2_20; \
- stp1_23 = stp2_23; \
- stp1_24 = stp2_24; \
- stp1_27 = stp2_27; \
- stp1_28 = stp2_28; \
-} \
-\
-/* Stage4 */ \
-{ \
- const __m128i lo_0_16 = _mm_unpacklo_epi16(in[0], in[16]); \
- const __m128i hi_0_16 = _mm_unpackhi_epi16(in[0], in[16]); \
- const __m128i lo_8_24 = _mm_unpacklo_epi16(in[8], in[24]); \
- const __m128i hi_8_24 = _mm_unpackhi_epi16(in[8], in[24]); \
- \
- const __m128i lo_9_14 = _mm_unpacklo_epi16(stp1_9, stp1_14); \
- const __m128i hi_9_14 = _mm_unpackhi_epi16(stp1_9, stp1_14); \
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp1_10, stp1_13); \
- const __m128i hi_10_13 = _mm_unpackhi_epi16(stp1_10, stp1_13); \
- \
- MULTIPLICATION_AND_ADD(lo_0_16, hi_0_16, lo_8_24, hi_8_24, stg4_0, \
- stg4_1, stg4_2, stg4_3, stp2_0, stp2_1, \
- stp2_2, stp2_3) \
- \
- stp2_4 = _mm_add_epi16(stp1_4, stp1_5); \
- stp2_5 = _mm_sub_epi16(stp1_4, stp1_5); \
- stp2_6 = _mm_sub_epi16(stp1_7, stp1_6); \
- stp2_7 = _mm_add_epi16(stp1_7, stp1_6); \
- \
- MULTIPLICATION_AND_ADD(lo_9_14, hi_9_14, lo_10_13, hi_10_13, stg4_4, \
- stg4_5, stg4_6, stg4_4, stp2_9, stp2_14, \
- stp2_10, stp2_13) \
- \
- stp2_8 = stp1_8; \
- stp2_15 = stp1_15; \
- stp2_11 = stp1_11; \
- stp2_12 = stp1_12; \
- \
- stp2_16 = _mm_add_epi16(stp1_16, stp1_19); \
- stp2_17 = _mm_add_epi16(stp1_17, stp1_18); \
- stp2_18 = _mm_sub_epi16(stp1_17, stp1_18); \
- stp2_19 = _mm_sub_epi16(stp1_16, stp1_19); \
- stp2_20 = _mm_sub_epi16(stp1_23, stp1_20); \
- stp2_21 = _mm_sub_epi16(stp1_22, stp1_21); \
- stp2_22 = _mm_add_epi16(stp1_22, stp1_21); \
- stp2_23 = _mm_add_epi16(stp1_23, stp1_20); \
- \
- stp2_24 = _mm_add_epi16(stp1_24, stp1_27); \
- stp2_25 = _mm_add_epi16(stp1_25, stp1_26); \
- stp2_26 = _mm_sub_epi16(stp1_25, stp1_26); \
- stp2_27 = _mm_sub_epi16(stp1_24, stp1_27); \
- stp2_28 = _mm_sub_epi16(stp1_31, stp1_28); \
- stp2_29 = _mm_sub_epi16(stp1_30, stp1_29); \
- stp2_30 = _mm_add_epi16(stp1_29, stp1_30); \
- stp2_31 = _mm_add_epi16(stp1_28, stp1_31); \
-} \
-\
-/* Stage5 */ \
-{ \
- const __m128i lo_6_5 = _mm_unpacklo_epi16(stp2_6, stp2_5); \
- const __m128i hi_6_5 = _mm_unpackhi_epi16(stp2_6, stp2_5); \
- const __m128i lo_18_29 = _mm_unpacklo_epi16(stp2_18, stp2_29); \
- const __m128i hi_18_29 = _mm_unpackhi_epi16(stp2_18, stp2_29); \
- \
- const __m128i lo_19_28 = _mm_unpacklo_epi16(stp2_19, stp2_28); \
- const __m128i hi_19_28 = _mm_unpackhi_epi16(stp2_19, stp2_28); \
- const __m128i lo_20_27 = _mm_unpacklo_epi16(stp2_20, stp2_27); \
- const __m128i hi_20_27 = _mm_unpackhi_epi16(stp2_20, stp2_27); \
- \
- const __m128i lo_21_26 = _mm_unpacklo_epi16(stp2_21, stp2_26); \
- const __m128i hi_21_26 = _mm_unpackhi_epi16(stp2_21, stp2_26); \
- \
- stp1_0 = _mm_add_epi16(stp2_0, stp2_3); \
- stp1_1 = _mm_add_epi16(stp2_1, stp2_2); \
- stp1_2 = _mm_sub_epi16(stp2_1, stp2_2); \
- stp1_3 = _mm_sub_epi16(stp2_0, stp2_3); \
- \
- tmp0 = _mm_madd_epi16(lo_6_5, stg4_1); \
- tmp1 = _mm_madd_epi16(hi_6_5, stg4_1); \
- tmp2 = _mm_madd_epi16(lo_6_5, stg4_0); \
- tmp3 = _mm_madd_epi16(hi_6_5, stg4_0); \
- \
- tmp0 = _mm_add_epi32(tmp0, rounding); \
- tmp1 = _mm_add_epi32(tmp1, rounding); \
- tmp2 = _mm_add_epi32(tmp2, rounding); \
- tmp3 = _mm_add_epi32(tmp3, rounding); \
- \
- tmp0 = _mm_srai_epi32(tmp0, DCT_CONST_BITS); \
- tmp1 = _mm_srai_epi32(tmp1, DCT_CONST_BITS); \
- tmp2 = _mm_srai_epi32(tmp2, DCT_CONST_BITS); \
- tmp3 = _mm_srai_epi32(tmp3, DCT_CONST_BITS); \
- \
- stp1_5 = _mm_packs_epi32(tmp0, tmp1); \
- stp1_6 = _mm_packs_epi32(tmp2, tmp3); \
- \
- stp1_4 = stp2_4; \
- stp1_7 = stp2_7; \
- \
- stp1_8 = _mm_add_epi16(stp2_8, stp2_11); \
- stp1_9 = _mm_add_epi16(stp2_9, stp2_10); \
- stp1_10 = _mm_sub_epi16(stp2_9, stp2_10); \
- stp1_11 = _mm_sub_epi16(stp2_8, stp2_11); \
- stp1_12 = _mm_sub_epi16(stp2_15, stp2_12); \
- stp1_13 = _mm_sub_epi16(stp2_14, stp2_13); \
- stp1_14 = _mm_add_epi16(stp2_14, stp2_13); \
- stp1_15 = _mm_add_epi16(stp2_15, stp2_12); \
- \
- stp1_16 = stp2_16; \
- stp1_17 = stp2_17; \
- \
- MULTIPLICATION_AND_ADD(lo_18_29, hi_18_29, lo_19_28, hi_19_28, stg4_4, \
- stg4_5, stg4_4, stg4_5, stp1_18, stp1_29, \
- stp1_19, stp1_28) \
- MULTIPLICATION_AND_ADD(lo_20_27, hi_20_27, lo_21_26, hi_21_26, stg4_6, \
- stg4_4, stg4_6, stg4_4, stp1_20, stp1_27, \
- stp1_21, stp1_26) \
- \
- stp1_22 = stp2_22; \
- stp1_23 = stp2_23; \
- stp1_24 = stp2_24; \
- stp1_25 = stp2_25; \
- stp1_30 = stp2_30; \
- stp1_31 = stp2_31; \
-} \
-\
-/* Stage6 */ \
-{ \
- const __m128i lo_10_13 = _mm_unpacklo_epi16(stp1_10, stp1_13); \
- const __m128i hi_10_13 = _mm_unpackhi_epi16(stp1_10, stp1_13); \
- const __m128i lo_11_12 = _mm_unpacklo_epi16(stp1_11, stp1_12); \
- const __m128i hi_11_12 = _mm_unpackhi_epi16(stp1_11, stp1_12); \
- \
- stp2_0 = _mm_add_epi16(stp1_0, stp1_7); \
- stp2_1 = _mm_add_epi16(stp1_1, stp1_6); \
- stp2_2 = _mm_add_epi16(stp1_2, stp1_5); \
- stp2_3 = _mm_add_epi16(stp1_3, stp1_4); \
- stp2_4 = _mm_sub_epi16(stp1_3, stp1_4); \
- stp2_5 = _mm_sub_epi16(stp1_2, stp1_5); \
- stp2_6 = _mm_sub_epi16(stp1_1, stp1_6); \
- stp2_7 = _mm_sub_epi16(stp1_0, stp1_7); \
- \
- stp2_8 = stp1_8; \
- stp2_9 = stp1_9; \
- stp2_14 = stp1_14; \
- stp2_15 = stp1_15; \
- \
- MULTIPLICATION_AND_ADD(lo_10_13, hi_10_13, lo_11_12, hi_11_12, \
- stg6_0, stg4_0, stg6_0, stg4_0, stp2_10, \
- stp2_13, stp2_11, stp2_12) \
- \
- stp2_16 = _mm_add_epi16(stp1_16, stp1_23); \
- stp2_17 = _mm_add_epi16(stp1_17, stp1_22); \
- stp2_18 = _mm_add_epi16(stp1_18, stp1_21); \
- stp2_19 = _mm_add_epi16(stp1_19, stp1_20); \
- stp2_20 = _mm_sub_epi16(stp1_19, stp1_20); \
- stp2_21 = _mm_sub_epi16(stp1_18, stp1_21); \
- stp2_22 = _mm_sub_epi16(stp1_17, stp1_22); \
- stp2_23 = _mm_sub_epi16(stp1_16, stp1_23); \
- \
- stp2_24 = _mm_sub_epi16(stp1_31, stp1_24); \
- stp2_25 = _mm_sub_epi16(stp1_30, stp1_25); \
- stp2_26 = _mm_sub_epi16(stp1_29, stp1_26); \
- stp2_27 = _mm_sub_epi16(stp1_28, stp1_27); \
- stp2_28 = _mm_add_epi16(stp1_27, stp1_28); \
- stp2_29 = _mm_add_epi16(stp1_26, stp1_29); \
- stp2_30 = _mm_add_epi16(stp1_25, stp1_30); \
- stp2_31 = _mm_add_epi16(stp1_24, stp1_31); \
-} \
-\
-/* Stage7 */ \
-{ \
- const __m128i lo_20_27 = _mm_unpacklo_epi16(stp2_20, stp2_27); \
- const __m128i hi_20_27 = _mm_unpackhi_epi16(stp2_20, stp2_27); \
- const __m128i lo_21_26 = _mm_unpacklo_epi16(stp2_21, stp2_26); \
- const __m128i hi_21_26 = _mm_unpackhi_epi16(stp2_21, stp2_26); \
- \
- const __m128i lo_22_25 = _mm_unpacklo_epi16(stp2_22, stp2_25); \
- const __m128i hi_22_25 = _mm_unpackhi_epi16(stp2_22, stp2_25); \
- const __m128i lo_23_24 = _mm_unpacklo_epi16(stp2_23, stp2_24); \
- const __m128i hi_23_24 = _mm_unpackhi_epi16(stp2_23, stp2_24); \
- \
- stp1_0 = _mm_add_epi16(stp2_0, stp2_15); \
- stp1_1 = _mm_add_epi16(stp2_1, stp2_14); \
- stp1_2 = _mm_add_epi16(stp2_2, stp2_13); \
- stp1_3 = _mm_add_epi16(stp2_3, stp2_12); \
- stp1_4 = _mm_add_epi16(stp2_4, stp2_11); \
- stp1_5 = _mm_add_epi16(stp2_5, stp2_10); \
- stp1_6 = _mm_add_epi16(stp2_6, stp2_9); \
- stp1_7 = _mm_add_epi16(stp2_7, stp2_8); \
- stp1_8 = _mm_sub_epi16(stp2_7, stp2_8); \
- stp1_9 = _mm_sub_epi16(stp2_6, stp2_9); \
- stp1_10 = _mm_sub_epi16(stp2_5, stp2_10); \
- stp1_11 = _mm_sub_epi16(stp2_4, stp2_11); \
- stp1_12 = _mm_sub_epi16(stp2_3, stp2_12); \
- stp1_13 = _mm_sub_epi16(stp2_2, stp2_13); \
- stp1_14 = _mm_sub_epi16(stp2_1, stp2_14); \
- stp1_15 = _mm_sub_epi16(stp2_0, stp2_15); \
- \
- stp1_16 = stp2_16; \
- stp1_17 = stp2_17; \
- stp1_18 = stp2_18; \
- stp1_19 = stp2_19; \
- \
- MULTIPLICATION_AND_ADD(lo_20_27, hi_20_27, lo_21_26, hi_21_26, stg6_0, \
- stg4_0, stg6_0, stg4_0, stp1_20, stp1_27, \
- stp1_21, stp1_26) \
- MULTIPLICATION_AND_ADD(lo_22_25, hi_22_25, lo_23_24, hi_23_24, stg6_0, \
- stg4_0, stg6_0, stg4_0, stp1_22, stp1_25, \
- stp1_23, stp1_24) \
- \
- stp1_28 = stp2_28; \
- stp1_29 = stp2_29; \
- stp1_30 = stp2_30; \
- stp1_31 = stp2_31; \
-}
-
-// Only upper-left 8x8 has non-zero coeff
-void vpx_idct32x32_34_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- const __m128i rounding = _mm_set1_epi32(DCT_CONST_ROUNDING);
- const __m128i final_rounding = _mm_set1_epi16(1<<5);
-
- // idct constants for each stage
- const __m128i stg1_0 = pair_set_epi16(cospi_31_64, -cospi_1_64);
- const __m128i stg1_1 = pair_set_epi16(cospi_1_64, cospi_31_64);
- const __m128i stg1_6 = pair_set_epi16(cospi_7_64, -cospi_25_64);
- const __m128i stg1_7 = pair_set_epi16(cospi_25_64, cospi_7_64);
- const __m128i stg1_8 = pair_set_epi16(cospi_27_64, -cospi_5_64);
- const __m128i stg1_9 = pair_set_epi16(cospi_5_64, cospi_27_64);
- const __m128i stg1_14 = pair_set_epi16(cospi_3_64, -cospi_29_64);
- const __m128i stg1_15 = pair_set_epi16(cospi_29_64, cospi_3_64);
-
- const __m128i stg2_0 = pair_set_epi16(cospi_30_64, -cospi_2_64);
- const __m128i stg2_1 = pair_set_epi16(cospi_2_64, cospi_30_64);
- const __m128i stg2_6 = pair_set_epi16(cospi_6_64, -cospi_26_64);
- const __m128i stg2_7 = pair_set_epi16(cospi_26_64, cospi_6_64);
-
- const __m128i stg3_0 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i stg3_1 = pair_set_epi16(cospi_4_64, cospi_28_64);
- const __m128i stg3_4 = pair_set_epi16(-cospi_4_64, cospi_28_64);
- const __m128i stg3_5 = pair_set_epi16(cospi_28_64, cospi_4_64);
- const __m128i stg3_6 = pair_set_epi16(-cospi_28_64, -cospi_4_64);
- const __m128i stg3_8 = pair_set_epi16(-cospi_20_64, cospi_12_64);
- const __m128i stg3_9 = pair_set_epi16(cospi_12_64, cospi_20_64);
- const __m128i stg3_10 = pair_set_epi16(-cospi_12_64, -cospi_20_64);
-
- const __m128i stg4_0 = pair_set_epi16(cospi_16_64, cospi_16_64);
- const __m128i stg4_1 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i stg4_4 = pair_set_epi16(-cospi_8_64, cospi_24_64);
- const __m128i stg4_5 = pair_set_epi16(cospi_24_64, cospi_8_64);
- const __m128i stg4_6 = pair_set_epi16(-cospi_24_64, -cospi_8_64);
-
- const __m128i stg6_0 = pair_set_epi16(-cospi_16_64, cospi_16_64);
-
- __m128i in[32], col[32];
- __m128i stp1_0, stp1_1, stp1_2, stp1_3, stp1_4, stp1_5, stp1_6, stp1_7,
- stp1_8, stp1_9, stp1_10, stp1_11, stp1_12, stp1_13, stp1_14, stp1_15,
- stp1_16, stp1_17, stp1_18, stp1_19, stp1_20, stp1_21, stp1_22,
- stp1_23, stp1_24, stp1_25, stp1_26, stp1_27, stp1_28, stp1_29,
- stp1_30, stp1_31;
- __m128i stp2_0, stp2_1, stp2_2, stp2_3, stp2_4, stp2_5, stp2_6, stp2_7,
- stp2_8, stp2_9, stp2_10, stp2_11, stp2_12, stp2_13, stp2_14, stp2_15,
- stp2_16, stp2_17, stp2_18, stp2_19, stp2_20, stp2_21, stp2_22,
- stp2_23, stp2_24, stp2_25, stp2_26, stp2_27, stp2_28, stp2_29,
- stp2_30, stp2_31;
- __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
- int i;
-
- // Load input data. Only need to load the top left 8x8 block.
- in[0] = load_input_data(input);
- in[1] = load_input_data(input + 32);
- in[2] = load_input_data(input + 64);
- in[3] = load_input_data(input + 96);
- in[4] = load_input_data(input + 128);
- in[5] = load_input_data(input + 160);
- in[6] = load_input_data(input + 192);
- in[7] = load_input_data(input + 224);
-
- for (i = 8; i < 32; ++i) {
- in[i] = _mm_setzero_si128();
- }
-
- array_transpose_8x8(in, in);
- // TODO(hkuang): Following transposes are unnecessary. But remove them will
- // lead to performance drop on some devices.
- array_transpose_8x8(in + 8, in + 8);
- array_transpose_8x8(in + 16, in + 16);
- array_transpose_8x8(in + 24, in + 24);
-
- IDCT32_34
-
- // 1_D: Store 32 intermediate results for each 8x32 block.
- col[0] = _mm_add_epi16(stp1_0, stp1_31);
- col[1] = _mm_add_epi16(stp1_1, stp1_30);
- col[2] = _mm_add_epi16(stp1_2, stp1_29);
- col[3] = _mm_add_epi16(stp1_3, stp1_28);
- col[4] = _mm_add_epi16(stp1_4, stp1_27);
- col[5] = _mm_add_epi16(stp1_5, stp1_26);
- col[6] = _mm_add_epi16(stp1_6, stp1_25);
- col[7] = _mm_add_epi16(stp1_7, stp1_24);
- col[8] = _mm_add_epi16(stp1_8, stp1_23);
- col[9] = _mm_add_epi16(stp1_9, stp1_22);
- col[10] = _mm_add_epi16(stp1_10, stp1_21);
- col[11] = _mm_add_epi16(stp1_11, stp1_20);
- col[12] = _mm_add_epi16(stp1_12, stp1_19);
- col[13] = _mm_add_epi16(stp1_13, stp1_18);
- col[14] = _mm_add_epi16(stp1_14, stp1_17);
- col[15] = _mm_add_epi16(stp1_15, stp1_16);
- col[16] = _mm_sub_epi16(stp1_15, stp1_16);
- col[17] = _mm_sub_epi16(stp1_14, stp1_17);
- col[18] = _mm_sub_epi16(stp1_13, stp1_18);
- col[19] = _mm_sub_epi16(stp1_12, stp1_19);
- col[20] = _mm_sub_epi16(stp1_11, stp1_20);
- col[21] = _mm_sub_epi16(stp1_10, stp1_21);
- col[22] = _mm_sub_epi16(stp1_9, stp1_22);
- col[23] = _mm_sub_epi16(stp1_8, stp1_23);
- col[24] = _mm_sub_epi16(stp1_7, stp1_24);
- col[25] = _mm_sub_epi16(stp1_6, stp1_25);
- col[26] = _mm_sub_epi16(stp1_5, stp1_26);
- col[27] = _mm_sub_epi16(stp1_4, stp1_27);
- col[28] = _mm_sub_epi16(stp1_3, stp1_28);
- col[29] = _mm_sub_epi16(stp1_2, stp1_29);
- col[30] = _mm_sub_epi16(stp1_1, stp1_30);
- col[31] = _mm_sub_epi16(stp1_0, stp1_31);
- for (i = 0; i < 4; i++) {
- int j;
- const __m128i zero = _mm_setzero_si128();
- // Transpose 32x8 block to 8x32 block
- array_transpose_8x8(col + i * 8, in);
- IDCT32_34
-
- // 2_D: Calculate the results and store them to destination.
- in[0] = _mm_add_epi16(stp1_0, stp1_31);
- in[1] = _mm_add_epi16(stp1_1, stp1_30);
- in[2] = _mm_add_epi16(stp1_2, stp1_29);
- in[3] = _mm_add_epi16(stp1_3, stp1_28);
- in[4] = _mm_add_epi16(stp1_4, stp1_27);
- in[5] = _mm_add_epi16(stp1_5, stp1_26);
- in[6] = _mm_add_epi16(stp1_6, stp1_25);
- in[7] = _mm_add_epi16(stp1_7, stp1_24);
- in[8] = _mm_add_epi16(stp1_8, stp1_23);
- in[9] = _mm_add_epi16(stp1_9, stp1_22);
- in[10] = _mm_add_epi16(stp1_10, stp1_21);
- in[11] = _mm_add_epi16(stp1_11, stp1_20);
- in[12] = _mm_add_epi16(stp1_12, stp1_19);
- in[13] = _mm_add_epi16(stp1_13, stp1_18);
- in[14] = _mm_add_epi16(stp1_14, stp1_17);
- in[15] = _mm_add_epi16(stp1_15, stp1_16);
- in[16] = _mm_sub_epi16(stp1_15, stp1_16);
- in[17] = _mm_sub_epi16(stp1_14, stp1_17);
- in[18] = _mm_sub_epi16(stp1_13, stp1_18);
- in[19] = _mm_sub_epi16(stp1_12, stp1_19);
- in[20] = _mm_sub_epi16(stp1_11, stp1_20);
- in[21] = _mm_sub_epi16(stp1_10, stp1_21);
- in[22] = _mm_sub_epi16(stp1_9, stp1_22);
- in[23] = _mm_sub_epi16(stp1_8, stp1_23);
- in[24] = _mm_sub_epi16(stp1_7, stp1_24);
- in[25] = _mm_sub_epi16(stp1_6, stp1_25);
- in[26] = _mm_sub_epi16(stp1_5, stp1_26);
- in[27] = _mm_sub_epi16(stp1_4, stp1_27);
- in[28] = _mm_sub_epi16(stp1_3, stp1_28);
- in[29] = _mm_sub_epi16(stp1_2, stp1_29);
- in[30] = _mm_sub_epi16(stp1_1, stp1_30);
- in[31] = _mm_sub_epi16(stp1_0, stp1_31);
-
- for (j = 0; j < 32; ++j) {
- // Final rounding and shift
- in[j] = _mm_adds_epi16(in[j], final_rounding);
- in[j] = _mm_srai_epi16(in[j], 6);
- RECON_AND_STORE(dest + j * stride, in[j]);
- }
-
- dest += 8;
- }
-}
-
-void vpx_idct32x32_1024_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- const __m128i rounding = _mm_set1_epi32(DCT_CONST_ROUNDING);
- const __m128i final_rounding = _mm_set1_epi16(1 << 5);
- const __m128i zero = _mm_setzero_si128();
-
- // idct constants for each stage
- const __m128i stg1_0 = pair_set_epi16(cospi_31_64, -cospi_1_64);
- const __m128i stg1_1 = pair_set_epi16(cospi_1_64, cospi_31_64);
- const __m128i stg1_2 = pair_set_epi16(cospi_15_64, -cospi_17_64);
- const __m128i stg1_3 = pair_set_epi16(cospi_17_64, cospi_15_64);
- const __m128i stg1_4 = pair_set_epi16(cospi_23_64, -cospi_9_64);
- const __m128i stg1_5 = pair_set_epi16(cospi_9_64, cospi_23_64);
- const __m128i stg1_6 = pair_set_epi16(cospi_7_64, -cospi_25_64);
- const __m128i stg1_7 = pair_set_epi16(cospi_25_64, cospi_7_64);
- const __m128i stg1_8 = pair_set_epi16(cospi_27_64, -cospi_5_64);
- const __m128i stg1_9 = pair_set_epi16(cospi_5_64, cospi_27_64);
- const __m128i stg1_10 = pair_set_epi16(cospi_11_64, -cospi_21_64);
- const __m128i stg1_11 = pair_set_epi16(cospi_21_64, cospi_11_64);
- const __m128i stg1_12 = pair_set_epi16(cospi_19_64, -cospi_13_64);
- const __m128i stg1_13 = pair_set_epi16(cospi_13_64, cospi_19_64);
- const __m128i stg1_14 = pair_set_epi16(cospi_3_64, -cospi_29_64);
- const __m128i stg1_15 = pair_set_epi16(cospi_29_64, cospi_3_64);
-
- const __m128i stg2_0 = pair_set_epi16(cospi_30_64, -cospi_2_64);
- const __m128i stg2_1 = pair_set_epi16(cospi_2_64, cospi_30_64);
- const __m128i stg2_2 = pair_set_epi16(cospi_14_64, -cospi_18_64);
- const __m128i stg2_3 = pair_set_epi16(cospi_18_64, cospi_14_64);
- const __m128i stg2_4 = pair_set_epi16(cospi_22_64, -cospi_10_64);
- const __m128i stg2_5 = pair_set_epi16(cospi_10_64, cospi_22_64);
- const __m128i stg2_6 = pair_set_epi16(cospi_6_64, -cospi_26_64);
- const __m128i stg2_7 = pair_set_epi16(cospi_26_64, cospi_6_64);
-
- const __m128i stg3_0 = pair_set_epi16(cospi_28_64, -cospi_4_64);
- const __m128i stg3_1 = pair_set_epi16(cospi_4_64, cospi_28_64);
- const __m128i stg3_2 = pair_set_epi16(cospi_12_64, -cospi_20_64);
- const __m128i stg3_3 = pair_set_epi16(cospi_20_64, cospi_12_64);
- const __m128i stg3_4 = pair_set_epi16(-cospi_4_64, cospi_28_64);
- const __m128i stg3_5 = pair_set_epi16(cospi_28_64, cospi_4_64);
- const __m128i stg3_6 = pair_set_epi16(-cospi_28_64, -cospi_4_64);
- const __m128i stg3_8 = pair_set_epi16(-cospi_20_64, cospi_12_64);
- const __m128i stg3_9 = pair_set_epi16(cospi_12_64, cospi_20_64);
- const __m128i stg3_10 = pair_set_epi16(-cospi_12_64, -cospi_20_64);
-
- const __m128i stg4_0 = pair_set_epi16(cospi_16_64, cospi_16_64);
- const __m128i stg4_1 = pair_set_epi16(cospi_16_64, -cospi_16_64);
- const __m128i stg4_2 = pair_set_epi16(cospi_24_64, -cospi_8_64);
- const __m128i stg4_3 = pair_set_epi16(cospi_8_64, cospi_24_64);
- const __m128i stg4_4 = pair_set_epi16(-cospi_8_64, cospi_24_64);
- const __m128i stg4_5 = pair_set_epi16(cospi_24_64, cospi_8_64);
- const __m128i stg4_6 = pair_set_epi16(-cospi_24_64, -cospi_8_64);
-
- const __m128i stg6_0 = pair_set_epi16(-cospi_16_64, cospi_16_64);
-
- __m128i in[32], col[128], zero_idx[16];
- __m128i stp1_0, stp1_1, stp1_2, stp1_3, stp1_4, stp1_5, stp1_6, stp1_7,
- stp1_8, stp1_9, stp1_10, stp1_11, stp1_12, stp1_13, stp1_14, stp1_15,
- stp1_16, stp1_17, stp1_18, stp1_19, stp1_20, stp1_21, stp1_22,
- stp1_23, stp1_24, stp1_25, stp1_26, stp1_27, stp1_28, stp1_29,
- stp1_30, stp1_31;
- __m128i stp2_0, stp2_1, stp2_2, stp2_3, stp2_4, stp2_5, stp2_6, stp2_7,
- stp2_8, stp2_9, stp2_10, stp2_11, stp2_12, stp2_13, stp2_14, stp2_15,
- stp2_16, stp2_17, stp2_18, stp2_19, stp2_20, stp2_21, stp2_22,
- stp2_23, stp2_24, stp2_25, stp2_26, stp2_27, stp2_28, stp2_29,
- stp2_30, stp2_31;
- __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
- int i, j, i32;
-
- for (i = 0; i < 4; i++) {
- i32 = (i << 5);
- // First 1-D idct
- // Load input data.
- LOAD_DQCOEFF(in[0], input);
- LOAD_DQCOEFF(in[8], input);
- LOAD_DQCOEFF(in[16], input);
- LOAD_DQCOEFF(in[24], input);
- LOAD_DQCOEFF(in[1], input);
- LOAD_DQCOEFF(in[9], input);
- LOAD_DQCOEFF(in[17], input);
- LOAD_DQCOEFF(in[25], input);
- LOAD_DQCOEFF(in[2], input);
- LOAD_DQCOEFF(in[10], input);
- LOAD_DQCOEFF(in[18], input);
- LOAD_DQCOEFF(in[26], input);
- LOAD_DQCOEFF(in[3], input);
- LOAD_DQCOEFF(in[11], input);
- LOAD_DQCOEFF(in[19], input);
- LOAD_DQCOEFF(in[27], input);
-
- LOAD_DQCOEFF(in[4], input);
- LOAD_DQCOEFF(in[12], input);
- LOAD_DQCOEFF(in[20], input);
- LOAD_DQCOEFF(in[28], input);
- LOAD_DQCOEFF(in[5], input);
- LOAD_DQCOEFF(in[13], input);
- LOAD_DQCOEFF(in[21], input);
- LOAD_DQCOEFF(in[29], input);
- LOAD_DQCOEFF(in[6], input);
- LOAD_DQCOEFF(in[14], input);
- LOAD_DQCOEFF(in[22], input);
- LOAD_DQCOEFF(in[30], input);
- LOAD_DQCOEFF(in[7], input);
- LOAD_DQCOEFF(in[15], input);
- LOAD_DQCOEFF(in[23], input);
- LOAD_DQCOEFF(in[31], input);
-
- // checking if all entries are zero
- zero_idx[0] = _mm_or_si128(in[0], in[1]);
- zero_idx[1] = _mm_or_si128(in[2], in[3]);
- zero_idx[2] = _mm_or_si128(in[4], in[5]);
- zero_idx[3] = _mm_or_si128(in[6], in[7]);
- zero_idx[4] = _mm_or_si128(in[8], in[9]);
- zero_idx[5] = _mm_or_si128(in[10], in[11]);
- zero_idx[6] = _mm_or_si128(in[12], in[13]);
- zero_idx[7] = _mm_or_si128(in[14], in[15]);
- zero_idx[8] = _mm_or_si128(in[16], in[17]);
- zero_idx[9] = _mm_or_si128(in[18], in[19]);
- zero_idx[10] = _mm_or_si128(in[20], in[21]);
- zero_idx[11] = _mm_or_si128(in[22], in[23]);
- zero_idx[12] = _mm_or_si128(in[24], in[25]);
- zero_idx[13] = _mm_or_si128(in[26], in[27]);
- zero_idx[14] = _mm_or_si128(in[28], in[29]);
- zero_idx[15] = _mm_or_si128(in[30], in[31]);
-
- zero_idx[0] = _mm_or_si128(zero_idx[0], zero_idx[1]);
- zero_idx[1] = _mm_or_si128(zero_idx[2], zero_idx[3]);
- zero_idx[2] = _mm_or_si128(zero_idx[4], zero_idx[5]);
- zero_idx[3] = _mm_or_si128(zero_idx[6], zero_idx[7]);
- zero_idx[4] = _mm_or_si128(zero_idx[8], zero_idx[9]);
- zero_idx[5] = _mm_or_si128(zero_idx[10], zero_idx[11]);
- zero_idx[6] = _mm_or_si128(zero_idx[12], zero_idx[13]);
- zero_idx[7] = _mm_or_si128(zero_idx[14], zero_idx[15]);
-
- zero_idx[8] = _mm_or_si128(zero_idx[0], zero_idx[1]);
- zero_idx[9] = _mm_or_si128(zero_idx[2], zero_idx[3]);
- zero_idx[10] = _mm_or_si128(zero_idx[4], zero_idx[5]);
- zero_idx[11] = _mm_or_si128(zero_idx[6], zero_idx[7]);
- zero_idx[12] = _mm_or_si128(zero_idx[8], zero_idx[9]);
- zero_idx[13] = _mm_or_si128(zero_idx[10], zero_idx[11]);
- zero_idx[14] = _mm_or_si128(zero_idx[12], zero_idx[13]);
-
- if (_mm_movemask_epi8(_mm_cmpeq_epi32(zero_idx[14], zero)) == 0xFFFF) {
- col[i32 + 0] = _mm_setzero_si128();
- col[i32 + 1] = _mm_setzero_si128();
- col[i32 + 2] = _mm_setzero_si128();
- col[i32 + 3] = _mm_setzero_si128();
- col[i32 + 4] = _mm_setzero_si128();
- col[i32 + 5] = _mm_setzero_si128();
- col[i32 + 6] = _mm_setzero_si128();
- col[i32 + 7] = _mm_setzero_si128();
- col[i32 + 8] = _mm_setzero_si128();
- col[i32 + 9] = _mm_setzero_si128();
- col[i32 + 10] = _mm_setzero_si128();
- col[i32 + 11] = _mm_setzero_si128();
- col[i32 + 12] = _mm_setzero_si128();
- col[i32 + 13] = _mm_setzero_si128();
- col[i32 + 14] = _mm_setzero_si128();
- col[i32 + 15] = _mm_setzero_si128();
- col[i32 + 16] = _mm_setzero_si128();
- col[i32 + 17] = _mm_setzero_si128();
- col[i32 + 18] = _mm_setzero_si128();
- col[i32 + 19] = _mm_setzero_si128();
- col[i32 + 20] = _mm_setzero_si128();
- col[i32 + 21] = _mm_setzero_si128();
- col[i32 + 22] = _mm_setzero_si128();
- col[i32 + 23] = _mm_setzero_si128();
- col[i32 + 24] = _mm_setzero_si128();
- col[i32 + 25] = _mm_setzero_si128();
- col[i32 + 26] = _mm_setzero_si128();
- col[i32 + 27] = _mm_setzero_si128();
- col[i32 + 28] = _mm_setzero_si128();
- col[i32 + 29] = _mm_setzero_si128();
- col[i32 + 30] = _mm_setzero_si128();
- col[i32 + 31] = _mm_setzero_si128();
- continue;
- }
-
- // Transpose 32x8 block to 8x32 block
- array_transpose_8x8(in, in);
- array_transpose_8x8(in + 8, in + 8);
- array_transpose_8x8(in + 16, in + 16);
- array_transpose_8x8(in + 24, in + 24);
-
- IDCT32
-
- // 1_D: Store 32 intermediate results for each 8x32 block.
- col[i32 + 0] = _mm_add_epi16(stp1_0, stp1_31);
- col[i32 + 1] = _mm_add_epi16(stp1_1, stp1_30);
- col[i32 + 2] = _mm_add_epi16(stp1_2, stp1_29);
- col[i32 + 3] = _mm_add_epi16(stp1_3, stp1_28);
- col[i32 + 4] = _mm_add_epi16(stp1_4, stp1_27);
- col[i32 + 5] = _mm_add_epi16(stp1_5, stp1_26);
- col[i32 + 6] = _mm_add_epi16(stp1_6, stp1_25);
- col[i32 + 7] = _mm_add_epi16(stp1_7, stp1_24);
- col[i32 + 8] = _mm_add_epi16(stp1_8, stp1_23);
- col[i32 + 9] = _mm_add_epi16(stp1_9, stp1_22);
- col[i32 + 10] = _mm_add_epi16(stp1_10, stp1_21);
- col[i32 + 11] = _mm_add_epi16(stp1_11, stp1_20);
- col[i32 + 12] = _mm_add_epi16(stp1_12, stp1_19);
- col[i32 + 13] = _mm_add_epi16(stp1_13, stp1_18);
- col[i32 + 14] = _mm_add_epi16(stp1_14, stp1_17);
- col[i32 + 15] = _mm_add_epi16(stp1_15, stp1_16);
- col[i32 + 16] = _mm_sub_epi16(stp1_15, stp1_16);
- col[i32 + 17] = _mm_sub_epi16(stp1_14, stp1_17);
- col[i32 + 18] = _mm_sub_epi16(stp1_13, stp1_18);
- col[i32 + 19] = _mm_sub_epi16(stp1_12, stp1_19);
- col[i32 + 20] = _mm_sub_epi16(stp1_11, stp1_20);
- col[i32 + 21] = _mm_sub_epi16(stp1_10, stp1_21);
- col[i32 + 22] = _mm_sub_epi16(stp1_9, stp1_22);
- col[i32 + 23] = _mm_sub_epi16(stp1_8, stp1_23);
- col[i32 + 24] = _mm_sub_epi16(stp1_7, stp1_24);
- col[i32 + 25] = _mm_sub_epi16(stp1_6, stp1_25);
- col[i32 + 26] = _mm_sub_epi16(stp1_5, stp1_26);
- col[i32 + 27] = _mm_sub_epi16(stp1_4, stp1_27);
- col[i32 + 28] = _mm_sub_epi16(stp1_3, stp1_28);
- col[i32 + 29] = _mm_sub_epi16(stp1_2, stp1_29);
- col[i32 + 30] = _mm_sub_epi16(stp1_1, stp1_30);
- col[i32 + 31] = _mm_sub_epi16(stp1_0, stp1_31);
- }
- for (i = 0; i < 4; i++) {
- // Second 1-D idct
- j = i << 3;
-
- // Transpose 32x8 block to 8x32 block
- array_transpose_8x8(col + j, in);
- array_transpose_8x8(col + j + 32, in + 8);
- array_transpose_8x8(col + j + 64, in + 16);
- array_transpose_8x8(col + j + 96, in + 24);
-
- IDCT32
-
- // 2_D: Calculate the results and store them to destination.
- in[0] = _mm_add_epi16(stp1_0, stp1_31);
- in[1] = _mm_add_epi16(stp1_1, stp1_30);
- in[2] = _mm_add_epi16(stp1_2, stp1_29);
- in[3] = _mm_add_epi16(stp1_3, stp1_28);
- in[4] = _mm_add_epi16(stp1_4, stp1_27);
- in[5] = _mm_add_epi16(stp1_5, stp1_26);
- in[6] = _mm_add_epi16(stp1_6, stp1_25);
- in[7] = _mm_add_epi16(stp1_7, stp1_24);
- in[8] = _mm_add_epi16(stp1_8, stp1_23);
- in[9] = _mm_add_epi16(stp1_9, stp1_22);
- in[10] = _mm_add_epi16(stp1_10, stp1_21);
- in[11] = _mm_add_epi16(stp1_11, stp1_20);
- in[12] = _mm_add_epi16(stp1_12, stp1_19);
- in[13] = _mm_add_epi16(stp1_13, stp1_18);
- in[14] = _mm_add_epi16(stp1_14, stp1_17);
- in[15] = _mm_add_epi16(stp1_15, stp1_16);
- in[16] = _mm_sub_epi16(stp1_15, stp1_16);
- in[17] = _mm_sub_epi16(stp1_14, stp1_17);
- in[18] = _mm_sub_epi16(stp1_13, stp1_18);
- in[19] = _mm_sub_epi16(stp1_12, stp1_19);
- in[20] = _mm_sub_epi16(stp1_11, stp1_20);
- in[21] = _mm_sub_epi16(stp1_10, stp1_21);
- in[22] = _mm_sub_epi16(stp1_9, stp1_22);
- in[23] = _mm_sub_epi16(stp1_8, stp1_23);
- in[24] = _mm_sub_epi16(stp1_7, stp1_24);
- in[25] = _mm_sub_epi16(stp1_6, stp1_25);
- in[26] = _mm_sub_epi16(stp1_5, stp1_26);
- in[27] = _mm_sub_epi16(stp1_4, stp1_27);
- in[28] = _mm_sub_epi16(stp1_3, stp1_28);
- in[29] = _mm_sub_epi16(stp1_2, stp1_29);
- in[30] = _mm_sub_epi16(stp1_1, stp1_30);
- in[31] = _mm_sub_epi16(stp1_0, stp1_31);
-
- for (j = 0; j < 32; ++j) {
- // Final rounding and shift
- in[j] = _mm_adds_epi16(in[j], final_rounding);
- in[j] = _mm_srai_epi16(in[j], 6);
- RECON_AND_STORE(dest + j * stride, in[j]);
- }
-
- dest += 8;
- }
-}
-
-void vpx_idct32x32_1_add_sse2(const tran_low_t *input, uint8_t *dest,
- int stride) {
- __m128i dc_value;
- const __m128i zero = _mm_setzero_si128();
- int a, j;
-
- a = (int)dct_const_round_shift(input[0] * cospi_16_64);
- a = (int)dct_const_round_shift(a * cospi_16_64);
- a = ROUND_POWER_OF_TWO(a, 6);
-
- dc_value = _mm_set1_epi16(a);
-
- for (j = 0; j < 32; ++j) {
- RECON_AND_STORE(dest + 0 + j * stride, dc_value);
- RECON_AND_STORE(dest + 8 + j * stride, dc_value);
- RECON_AND_STORE(dest + 16 + j * stride, dc_value);
- RECON_AND_STORE(dest + 24 + j * stride, dc_value);
- }
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static INLINE __m128i clamp_high_sse2(__m128i value, int bd) {
- __m128i ubounded, retval;
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i one = _mm_set1_epi16(1);
- const __m128i max = _mm_subs_epi16(_mm_slli_epi16(one, bd), one);
- ubounded = _mm_cmpgt_epi16(value, max);
- retval = _mm_andnot_si128(ubounded, value);
- ubounded = _mm_and_si128(ubounded, max);
- retval = _mm_or_si128(retval, ubounded);
- retval = _mm_and_si128(retval, _mm_cmpgt_epi16(retval, zero));
- return retval;
-}
-
-void vpx_highbd_idct4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[4 * 4];
- tran_low_t *outptr = out;
- int i, j;
- __m128i inptr[4];
- __m128i sign_bits[2];
- __m128i temp_mm, min_input, max_input;
- int test;
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
- int optimised_cols = 0;
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i eight = _mm_set1_epi16(8);
- const __m128i max = _mm_set1_epi16(12043);
- const __m128i min = _mm_set1_epi16(-12043);
- // Load input into __m128i
- inptr[0] = _mm_loadu_si128((const __m128i *)input);
- inptr[1] = _mm_loadu_si128((const __m128i *)(input + 4));
- inptr[2] = _mm_loadu_si128((const __m128i *)(input + 8));
- inptr[3] = _mm_loadu_si128((const __m128i *)(input + 12));
-
- // Pack to 16 bits
- inptr[0] = _mm_packs_epi32(inptr[0], inptr[1]);
- inptr[1] = _mm_packs_epi32(inptr[2], inptr[3]);
-
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp_mm = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp_mm);
-
- if (!test) {
- // Do the row transform
- idct4_sse2(inptr);
-
- // Check the min & max values
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp_mm = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp_mm);
-
- if (test) {
- transpose_4x4(inptr);
- sign_bits[0] = _mm_cmplt_epi16(inptr[0], zero);
- sign_bits[1] = _mm_cmplt_epi16(inptr[1], zero);
- inptr[3] = _mm_unpackhi_epi16(inptr[1], sign_bits[1]);
- inptr[2] = _mm_unpacklo_epi16(inptr[1], sign_bits[1]);
- inptr[1] = _mm_unpackhi_epi16(inptr[0], sign_bits[0]);
- inptr[0] = _mm_unpacklo_epi16(inptr[0], sign_bits[0]);
- _mm_storeu_si128((__m128i *)outptr, inptr[0]);
- _mm_storeu_si128((__m128i *)(outptr + 4), inptr[1]);
- _mm_storeu_si128((__m128i *)(outptr + 8), inptr[2]);
- _mm_storeu_si128((__m128i *)(outptr + 12), inptr[3]);
- } else {
- // Set to use the optimised transform for the column
- optimised_cols = 1;
- }
- } else {
- // Run the un-optimised row transform
- for (i = 0; i < 4; ++i) {
- vpx_highbd_idct4_c(input, outptr, bd);
- input += 4;
- outptr += 4;
- }
- }
-
- if (optimised_cols) {
- idct4_sse2(inptr);
-
- // Final round and shift
- inptr[0] = _mm_add_epi16(inptr[0], eight);
- inptr[1] = _mm_add_epi16(inptr[1], eight);
-
- inptr[0] = _mm_srai_epi16(inptr[0], 4);
- inptr[1] = _mm_srai_epi16(inptr[1], 4);
-
- // Reconstruction and Store
- {
- __m128i d0 = _mm_loadl_epi64((const __m128i *)dest);
- __m128i d2 = _mm_loadl_epi64((const __m128i *)(dest + stride * 2));
- d0 = _mm_unpacklo_epi64(
- d0, _mm_loadl_epi64((const __m128i *)(dest + stride)));
- d2 = _mm_unpacklo_epi64(
- d2, _mm_loadl_epi64((const __m128i *)(dest + stride * 3)));
- d0 = clamp_high_sse2(_mm_adds_epi16(d0, inptr[0]), bd);
- d2 = clamp_high_sse2(_mm_adds_epi16(d2, inptr[1]), bd);
- // store input0
- _mm_storel_epi64((__m128i *)dest, d0);
- // store input1
- d0 = _mm_srli_si128(d0, 8);
- _mm_storel_epi64((__m128i *)(dest + stride), d0);
- // store input2
- _mm_storel_epi64((__m128i *)(dest + stride * 2), d2);
- // store input3
- d2 = _mm_srli_si128(d2, 8);
- _mm_storel_epi64((__m128i *)(dest + stride * 3), d2);
- }
- } else {
- // Run the un-optimised column transform
- tran_low_t temp_in[4], temp_out[4];
- // Columns
- for (i = 0; i < 4; ++i) {
- for (j = 0; j < 4; ++j)
- temp_in[j] = out[j * 4 + i];
- vpx_highbd_idct4_c(temp_in, temp_out, bd);
- for (j = 0; j < 4; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 4), bd);
- }
- }
- }
-}
-
-void vpx_highbd_idct8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[8 * 8];
- tran_low_t *outptr = out;
- int i, j, test;
- __m128i inptr[8];
- __m128i min_input, max_input, temp1, temp2, sign_bits;
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i sixteen = _mm_set1_epi16(16);
- const __m128i max = _mm_set1_epi16(6201);
- const __m128i min = _mm_set1_epi16(-6201);
- int optimised_cols = 0;
-
- // Load input into __m128i & pack to 16 bits
- for (i = 0; i < 8; i++) {
- temp1 = _mm_loadu_si128((const __m128i *)(input + 8 * i));
- temp2 = _mm_loadu_si128((const __m128i *)(input + 8 * i + 4));
- inptr[i] = _mm_packs_epi32(temp1, temp2);
- }
-
- // Find the min & max for the row transform
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- for (i = 2; i < 8; i++) {
- max_input = _mm_max_epi16(max_input, inptr[i]);
- min_input = _mm_min_epi16(min_input, inptr[i]);
- }
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp1 = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp1);
-
- if (!test) {
- // Do the row transform
- idct8_sse2(inptr);
-
- // Find the min & max for the column transform
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- for (i = 2; i < 8; i++) {
- max_input = _mm_max_epi16(max_input, inptr[i]);
- min_input = _mm_min_epi16(min_input, inptr[i]);
- }
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp1 = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp1);
-
- if (test) {
- array_transpose_8x8(inptr, inptr);
- for (i = 0; i < 8; i++) {
- sign_bits = _mm_cmplt_epi16(inptr[i], zero);
- temp1 = _mm_unpackhi_epi16(inptr[i], sign_bits);
- temp2 = _mm_unpacklo_epi16(inptr[i], sign_bits);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (2 * i + 1)), temp1);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (2 * i)), temp2);
- }
- } else {
- // Set to use the optimised transform for the column
- optimised_cols = 1;
- }
- } else {
- // Run the un-optimised row transform
- for (i = 0; i < 8; ++i) {
- vpx_highbd_idct8_c(input, outptr, bd);
- input += 8;
- outptr += 8;
- }
- }
-
- if (optimised_cols) {
- idct8_sse2(inptr);
-
- // Final round & shift and Reconstruction and Store
- {
- __m128i d[8];
- for (i = 0; i < 8; i++) {
- inptr[i] = _mm_add_epi16(inptr[i], sixteen);
- d[i] = _mm_loadu_si128((const __m128i *)(dest + stride*i));
- inptr[i] = _mm_srai_epi16(inptr[i], 5);
- d[i] = clamp_high_sse2(_mm_adds_epi16(d[i], inptr[i]), bd);
- // Store
- _mm_storeu_si128((__m128i *)(dest + stride*i), d[i]);
- }
- }
- } else {
- // Run the un-optimised column transform
- tran_low_t temp_in[8], temp_out[8];
- for (i = 0; i < 8; ++i) {
- for (j = 0; j < 8; ++j)
- temp_in[j] = out[j * 8 + i];
- vpx_highbd_idct8_c(temp_in, temp_out, bd);
- for (j = 0; j < 8; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 5), bd);
- }
- }
- }
-}
-
-void vpx_highbd_idct8x8_10_add_sse2(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[8 * 8] = { 0 };
- tran_low_t *outptr = out;
- int i, j, test;
- __m128i inptr[8];
- __m128i min_input, max_input, temp1, temp2, sign_bits;
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i sixteen = _mm_set1_epi16(16);
- const __m128i max = _mm_set1_epi16(6201);
- const __m128i min = _mm_set1_epi16(-6201);
- int optimised_cols = 0;
-
- // Load input into __m128i & pack to 16 bits
- for (i = 0; i < 8; i++) {
- temp1 = _mm_loadu_si128((const __m128i *)(input + 8 * i));
- temp2 = _mm_loadu_si128((const __m128i *)(input + 8 * i + 4));
- inptr[i] = _mm_packs_epi32(temp1, temp2);
- }
-
- // Find the min & max for the row transform
- // only first 4 row has non-zero coefs
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- for (i = 2; i < 4; i++) {
- max_input = _mm_max_epi16(max_input, inptr[i]);
- min_input = _mm_min_epi16(min_input, inptr[i]);
- }
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp1 = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp1);
-
- if (!test) {
- // Do the row transform
- idct8_sse2(inptr);
-
- // Find the min & max for the column transform
- // N.B. Only first 4 cols contain non-zero coeffs
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- for (i = 2; i < 8; i++) {
- max_input = _mm_max_epi16(max_input, inptr[i]);
- min_input = _mm_min_epi16(min_input, inptr[i]);
- }
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp1 = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp1);
-
- if (test) {
- // Use fact only first 4 rows contain non-zero coeffs
- array_transpose_4X8(inptr, inptr);
- for (i = 0; i < 4; i++) {
- sign_bits = _mm_cmplt_epi16(inptr[i], zero);
- temp1 = _mm_unpackhi_epi16(inptr[i], sign_bits);
- temp2 = _mm_unpacklo_epi16(inptr[i], sign_bits);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (2 * i + 1)), temp1);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (2 * i)), temp2);
- }
- } else {
- // Set to use the optimised transform for the column
- optimised_cols = 1;
- }
- } else {
- // Run the un-optimised row transform
- for (i = 0; i < 4; ++i) {
- vpx_highbd_idct8_c(input, outptr, bd);
- input += 8;
- outptr += 8;
- }
- }
-
- if (optimised_cols) {
- idct8_sse2(inptr);
-
- // Final round & shift and Reconstruction and Store
- {
- __m128i d[8];
- for (i = 0; i < 8; i++) {
- inptr[i] = _mm_add_epi16(inptr[i], sixteen);
- d[i] = _mm_loadu_si128((const __m128i *)(dest + stride*i));
- inptr[i] = _mm_srai_epi16(inptr[i], 5);
- d[i] = clamp_high_sse2(_mm_adds_epi16(d[i], inptr[i]), bd);
- // Store
- _mm_storeu_si128((__m128i *)(dest + stride*i), d[i]);
- }
- }
- } else {
- // Run the un-optimised column transform
- tran_low_t temp_in[8], temp_out[8];
- for (i = 0; i < 8; ++i) {
- for (j = 0; j < 8; ++j)
- temp_in[j] = out[j * 8 + i];
- vpx_highbd_idct8_c(temp_in, temp_out, bd);
- for (j = 0; j < 8; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 5), bd);
- }
- }
- }
-}
-
-void vpx_highbd_idct16x16_256_add_sse2(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[16 * 16];
- tran_low_t *outptr = out;
- int i, j, test;
- __m128i inptr[32];
- __m128i min_input, max_input, temp1, temp2, sign_bits;
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i rounding = _mm_set1_epi16(32);
- const __m128i max = _mm_set1_epi16(3155);
- const __m128i min = _mm_set1_epi16(-3155);
- int optimised_cols = 0;
-
- // Load input into __m128i & pack to 16 bits
- for (i = 0; i < 16; i++) {
- temp1 = _mm_loadu_si128((const __m128i *)(input + 16 * i));
- temp2 = _mm_loadu_si128((const __m128i *)(input + 16 * i + 4));
- inptr[i] = _mm_packs_epi32(temp1, temp2);
- temp1 = _mm_loadu_si128((const __m128i *)(input + 16 * i + 8));
- temp2 = _mm_loadu_si128((const __m128i *)(input + 16 * i + 12));
- inptr[i + 16] = _mm_packs_epi32(temp1, temp2);
- }
-
- // Find the min & max for the row transform
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- for (i = 2; i < 32; i++) {
- max_input = _mm_max_epi16(max_input, inptr[i]);
- min_input = _mm_min_epi16(min_input, inptr[i]);
- }
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp1 = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp1);
-
- if (!test) {
- // Do the row transform
- idct16_sse2(inptr, inptr + 16);
-
- // Find the min & max for the column transform
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- for (i = 2; i < 32; i++) {
- max_input = _mm_max_epi16(max_input, inptr[i]);
- min_input = _mm_min_epi16(min_input, inptr[i]);
- }
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp1 = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp1);
-
- if (test) {
- array_transpose_16x16(inptr, inptr + 16);
- for (i = 0; i < 16; i++) {
- sign_bits = _mm_cmplt_epi16(inptr[i], zero);
- temp1 = _mm_unpacklo_epi16(inptr[i], sign_bits);
- temp2 = _mm_unpackhi_epi16(inptr[i], sign_bits);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (i * 4)), temp1);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (i * 4 + 1)), temp2);
- sign_bits = _mm_cmplt_epi16(inptr[i + 16], zero);
- temp1 = _mm_unpacklo_epi16(inptr[i + 16], sign_bits);
- temp2 = _mm_unpackhi_epi16(inptr[i + 16], sign_bits);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (i * 4 + 2)), temp1);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (i * 4 + 3)), temp2);
- }
- } else {
- // Set to use the optimised transform for the column
- optimised_cols = 1;
- }
- } else {
- // Run the un-optimised row transform
- for (i = 0; i < 16; ++i) {
- vpx_highbd_idct16_c(input, outptr, bd);
- input += 16;
- outptr += 16;
- }
- }
-
- if (optimised_cols) {
- idct16_sse2(inptr, inptr + 16);
-
- // Final round & shift and Reconstruction and Store
- {
- __m128i d[2];
- for (i = 0; i < 16; i++) {
- inptr[i ] = _mm_add_epi16(inptr[i ], rounding);
- inptr[i+16] = _mm_add_epi16(inptr[i+16], rounding);
- d[0] = _mm_loadu_si128((const __m128i *)(dest + stride*i));
- d[1] = _mm_loadu_si128((const __m128i *)(dest + stride*i + 8));
- inptr[i ] = _mm_srai_epi16(inptr[i ], 6);
- inptr[i+16] = _mm_srai_epi16(inptr[i+16], 6);
- d[0] = clamp_high_sse2(_mm_add_epi16(d[0], inptr[i ]), bd);
- d[1] = clamp_high_sse2(_mm_add_epi16(d[1], inptr[i+16]), bd);
- // Store
- _mm_storeu_si128((__m128i *)(dest + stride*i), d[0]);
- _mm_storeu_si128((__m128i *)(dest + stride*i + 8), d[1]);
- }
- }
- } else {
- // Run the un-optimised column transform
- tran_low_t temp_in[16], temp_out[16];
- for (i = 0; i < 16; ++i) {
- for (j = 0; j < 16; ++j)
- temp_in[j] = out[j * 16 + i];
- vpx_highbd_idct16_c(temp_in, temp_out, bd);
- for (j = 0; j < 16; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd);
- }
- }
- }
-}
-
-void vpx_highbd_idct16x16_10_add_sse2(const tran_low_t *input, uint8_t *dest8,
- int stride, int bd) {
- tran_low_t out[16 * 16] = { 0 };
- tran_low_t *outptr = out;
- int i, j, test;
- __m128i inptr[32];
- __m128i min_input, max_input, temp1, temp2, sign_bits;
- uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i rounding = _mm_set1_epi16(32);
- const __m128i max = _mm_set1_epi16(3155);
- const __m128i min = _mm_set1_epi16(-3155);
- int optimised_cols = 0;
-
- // Load input into __m128i & pack to 16 bits
- for (i = 0; i < 16; i++) {
- temp1 = _mm_loadu_si128((const __m128i *)(input + 16 * i));
- temp2 = _mm_loadu_si128((const __m128i *)(input + 16 * i + 4));
- inptr[i] = _mm_packs_epi32(temp1, temp2);
- temp1 = _mm_loadu_si128((const __m128i *)(input + 16 * i + 8));
- temp2 = _mm_loadu_si128((const __m128i *)(input + 16 * i + 12));
- inptr[i + 16] = _mm_packs_epi32(temp1, temp2);
- }
-
- // Find the min & max for the row transform
- // Since all non-zero dct coefficients are in upper-left 4x4 area,
- // we only need to consider first 4 rows here.
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- for (i = 2; i < 4; i++) {
- max_input = _mm_max_epi16(max_input, inptr[i]);
- min_input = _mm_min_epi16(min_input, inptr[i]);
- }
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp1 = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp1);
-
- if (!test) {
- // Do the row transform (N.B. This transposes inptr)
- idct16_sse2(inptr, inptr + 16);
-
- // Find the min & max for the column transform
- // N.B. Only first 4 cols contain non-zero coeffs
- max_input = _mm_max_epi16(inptr[0], inptr[1]);
- min_input = _mm_min_epi16(inptr[0], inptr[1]);
- for (i = 2; i < 16; i++) {
- max_input = _mm_max_epi16(max_input, inptr[i]);
- min_input = _mm_min_epi16(min_input, inptr[i]);
- }
- max_input = _mm_cmpgt_epi16(max_input, max);
- min_input = _mm_cmplt_epi16(min_input, min);
- temp1 = _mm_or_si128(max_input, min_input);
- test = _mm_movemask_epi8(temp1);
-
- if (test) {
- // Use fact only first 4 rows contain non-zero coeffs
- array_transpose_8x8(inptr, inptr);
- array_transpose_8x8(inptr + 8, inptr + 16);
- for (i = 0; i < 4; i++) {
- sign_bits = _mm_cmplt_epi16(inptr[i], zero);
- temp1 = _mm_unpacklo_epi16(inptr[i], sign_bits);
- temp2 = _mm_unpackhi_epi16(inptr[i], sign_bits);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (i * 4)), temp1);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (i * 4 + 1)), temp2);
- sign_bits = _mm_cmplt_epi16(inptr[i + 16], zero);
- temp1 = _mm_unpacklo_epi16(inptr[i + 16], sign_bits);
- temp2 = _mm_unpackhi_epi16(inptr[i + 16], sign_bits);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (i * 4 + 2)), temp1);
- _mm_storeu_si128((__m128i *)(outptr + 4 * (i * 4 + 3)), temp2);
- }
- } else {
- // Set to use the optimised transform for the column
- optimised_cols = 1;
- }
- } else {
- // Run the un-optimised row transform
- for (i = 0; i < 4; ++i) {
- vpx_highbd_idct16_c(input, outptr, bd);
- input += 16;
- outptr += 16;
- }
- }
-
- if (optimised_cols) {
- idct16_sse2(inptr, inptr + 16);
-
- // Final round & shift and Reconstruction and Store
- {
- __m128i d[2];
- for (i = 0; i < 16; i++) {
- inptr[i ] = _mm_add_epi16(inptr[i ], rounding);
- inptr[i+16] = _mm_add_epi16(inptr[i+16], rounding);
- d[0] = _mm_loadu_si128((const __m128i *)(dest + stride*i));
- d[1] = _mm_loadu_si128((const __m128i *)(dest + stride*i + 8));
- inptr[i ] = _mm_srai_epi16(inptr[i ], 6);
- inptr[i+16] = _mm_srai_epi16(inptr[i+16], 6);
- d[0] = clamp_high_sse2(_mm_add_epi16(d[0], inptr[i ]), bd);
- d[1] = clamp_high_sse2(_mm_add_epi16(d[1], inptr[i+16]), bd);
- // Store
- _mm_storeu_si128((__m128i *)(dest + stride*i), d[0]);
- _mm_storeu_si128((__m128i *)(dest + stride*i + 8), d[1]);
- }
- }
- } else {
- // Run the un-optimised column transform
- tran_low_t temp_in[16], temp_out[16];
- for (i = 0; i < 16; ++i) {
- for (j = 0; j < 16; ++j)
- temp_in[j] = out[j * 16 + i];
- vpx_highbd_idct16_c(temp_in, temp_out, bd);
- for (j = 0; j < 16; ++j) {
- dest[j * stride + i] = highbd_clip_pixel_add(
- dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 6), bd);
- }
- }
- }
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
diff --git a/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_sse2.h b/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_sse2.h
deleted file mode 100644
index bd520c18e5..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_sse2.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_X86_INV_TXFM_SSE2_H_
-#define VPX_DSP_X86_INV_TXFM_SSE2_H_
-
-#include <emmintrin.h> // SSE2
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-
-// perform 8x8 transpose
-static INLINE void array_transpose_8x8(__m128i *in, __m128i *res) {
- const __m128i tr0_0 = _mm_unpacklo_epi16(in[0], in[1]);
- const __m128i tr0_1 = _mm_unpacklo_epi16(in[2], in[3]);
- const __m128i tr0_2 = _mm_unpackhi_epi16(in[0], in[1]);
- const __m128i tr0_3 = _mm_unpackhi_epi16(in[2], in[3]);
- const __m128i tr0_4 = _mm_unpacklo_epi16(in[4], in[5]);
- const __m128i tr0_5 = _mm_unpacklo_epi16(in[6], in[7]);
- const __m128i tr0_6 = _mm_unpackhi_epi16(in[4], in[5]);
- const __m128i tr0_7 = _mm_unpackhi_epi16(in[6], in[7]);
-
- const __m128i tr1_0 = _mm_unpacklo_epi32(tr0_0, tr0_1);
- const __m128i tr1_1 = _mm_unpacklo_epi32(tr0_4, tr0_5);
- const __m128i tr1_2 = _mm_unpackhi_epi32(tr0_0, tr0_1);
- const __m128i tr1_3 = _mm_unpackhi_epi32(tr0_4, tr0_5);
- const __m128i tr1_4 = _mm_unpacklo_epi32(tr0_2, tr0_3);
- const __m128i tr1_5 = _mm_unpacklo_epi32(tr0_6, tr0_7);
- const __m128i tr1_6 = _mm_unpackhi_epi32(tr0_2, tr0_3);
- const __m128i tr1_7 = _mm_unpackhi_epi32(tr0_6, tr0_7);
-
- res[0] = _mm_unpacklo_epi64(tr1_0, tr1_1);
- res[1] = _mm_unpackhi_epi64(tr1_0, tr1_1);
- res[2] = _mm_unpacklo_epi64(tr1_2, tr1_3);
- res[3] = _mm_unpackhi_epi64(tr1_2, tr1_3);
- res[4] = _mm_unpacklo_epi64(tr1_4, tr1_5);
- res[5] = _mm_unpackhi_epi64(tr1_4, tr1_5);
- res[6] = _mm_unpacklo_epi64(tr1_6, tr1_7);
- res[7] = _mm_unpackhi_epi64(tr1_6, tr1_7);
-}
-
-#define TRANSPOSE_8X4(in0, in1, in2, in3, out0, out1) \
- { \
- const __m128i tr0_0 = _mm_unpacklo_epi16(in0, in1); \
- const __m128i tr0_1 = _mm_unpacklo_epi16(in2, in3); \
- \
- in0 = _mm_unpacklo_epi32(tr0_0, tr0_1); /* i1 i0 */ \
- in1 = _mm_unpackhi_epi32(tr0_0, tr0_1); /* i3 i2 */ \
- }
-
-static INLINE void array_transpose_4X8(__m128i *in, __m128i * out) {
- const __m128i tr0_0 = _mm_unpacklo_epi16(in[0], in[1]);
- const __m128i tr0_1 = _mm_unpacklo_epi16(in[2], in[3]);
- const __m128i tr0_4 = _mm_unpacklo_epi16(in[4], in[5]);
- const __m128i tr0_5 = _mm_unpacklo_epi16(in[6], in[7]);
-
- const __m128i tr1_0 = _mm_unpacklo_epi32(tr0_0, tr0_1);
- const __m128i tr1_2 = _mm_unpackhi_epi32(tr0_0, tr0_1);
- const __m128i tr1_4 = _mm_unpacklo_epi32(tr0_4, tr0_5);
- const __m128i tr1_6 = _mm_unpackhi_epi32(tr0_4, tr0_5);
-
- out[0] = _mm_unpacklo_epi64(tr1_0, tr1_4);
- out[1] = _mm_unpackhi_epi64(tr1_0, tr1_4);
- out[2] = _mm_unpacklo_epi64(tr1_2, tr1_6);
- out[3] = _mm_unpackhi_epi64(tr1_2, tr1_6);
-}
-
-static INLINE void array_transpose_16x16(__m128i *res0, __m128i *res1) {
- __m128i tbuf[8];
- array_transpose_8x8(res0, res0);
- array_transpose_8x8(res1, tbuf);
- array_transpose_8x8(res0 + 8, res1);
- array_transpose_8x8(res1 + 8, res1 + 8);
-
- res0[8] = tbuf[0];
- res0[9] = tbuf[1];
- res0[10] = tbuf[2];
- res0[11] = tbuf[3];
- res0[12] = tbuf[4];
- res0[13] = tbuf[5];
- res0[14] = tbuf[6];
- res0[15] = tbuf[7];
-}
-
-// Function to allow 8 bit optimisations to be used when profile 0 is used with
-// highbitdepth enabled
-static INLINE __m128i load_input_data(const tran_low_t *data) {
-#if CONFIG_VP9_HIGHBITDEPTH
- return octa_set_epi16(data[0], data[1], data[2], data[3], data[4], data[5],
- data[6], data[7]);
-#else
- return _mm_load_si128((const __m128i *)data);
-#endif
-}
-
-static INLINE void load_buffer_8x16(const tran_low_t *input, __m128i *in) {
- in[0] = load_input_data(input + 0 * 16);
- in[1] = load_input_data(input + 1 * 16);
- in[2] = load_input_data(input + 2 * 16);
- in[3] = load_input_data(input + 3 * 16);
- in[4] = load_input_data(input + 4 * 16);
- in[5] = load_input_data(input + 5 * 16);
- in[6] = load_input_data(input + 6 * 16);
- in[7] = load_input_data(input + 7 * 16);
-
- in[8] = load_input_data(input + 8 * 16);
- in[9] = load_input_data(input + 9 * 16);
- in[10] = load_input_data(input + 10 * 16);
- in[11] = load_input_data(input + 11 * 16);
- in[12] = load_input_data(input + 12 * 16);
- in[13] = load_input_data(input + 13 * 16);
- in[14] = load_input_data(input + 14 * 16);
- in[15] = load_input_data(input + 15 * 16);
-}
-
-#define RECON_AND_STORE(dest, in_x) \
- { \
- __m128i d0 = _mm_loadl_epi64((__m128i *)(dest)); \
- d0 = _mm_unpacklo_epi8(d0, zero); \
- d0 = _mm_add_epi16(in_x, d0); \
- d0 = _mm_packus_epi16(d0, d0); \
- _mm_storel_epi64((__m128i *)(dest), d0); \
- }
-
-static INLINE void write_buffer_8x16(uint8_t *dest, __m128i *in, int stride) {
- const __m128i final_rounding = _mm_set1_epi16(1<<5);
- const __m128i zero = _mm_setzero_si128();
- // Final rounding and shift
- in[0] = _mm_adds_epi16(in[0], final_rounding);
- in[1] = _mm_adds_epi16(in[1], final_rounding);
- in[2] = _mm_adds_epi16(in[2], final_rounding);
- in[3] = _mm_adds_epi16(in[3], final_rounding);
- in[4] = _mm_adds_epi16(in[4], final_rounding);
- in[5] = _mm_adds_epi16(in[5], final_rounding);
- in[6] = _mm_adds_epi16(in[6], final_rounding);
- in[7] = _mm_adds_epi16(in[7], final_rounding);
- in[8] = _mm_adds_epi16(in[8], final_rounding);
- in[9] = _mm_adds_epi16(in[9], final_rounding);
- in[10] = _mm_adds_epi16(in[10], final_rounding);
- in[11] = _mm_adds_epi16(in[11], final_rounding);
- in[12] = _mm_adds_epi16(in[12], final_rounding);
- in[13] = _mm_adds_epi16(in[13], final_rounding);
- in[14] = _mm_adds_epi16(in[14], final_rounding);
- in[15] = _mm_adds_epi16(in[15], final_rounding);
-
- in[0] = _mm_srai_epi16(in[0], 6);
- in[1] = _mm_srai_epi16(in[1], 6);
- in[2] = _mm_srai_epi16(in[2], 6);
- in[3] = _mm_srai_epi16(in[3], 6);
- in[4] = _mm_srai_epi16(in[4], 6);
- in[5] = _mm_srai_epi16(in[5], 6);
- in[6] = _mm_srai_epi16(in[6], 6);
- in[7] = _mm_srai_epi16(in[7], 6);
- in[8] = _mm_srai_epi16(in[8], 6);
- in[9] = _mm_srai_epi16(in[9], 6);
- in[10] = _mm_srai_epi16(in[10], 6);
- in[11] = _mm_srai_epi16(in[11], 6);
- in[12] = _mm_srai_epi16(in[12], 6);
- in[13] = _mm_srai_epi16(in[13], 6);
- in[14] = _mm_srai_epi16(in[14], 6);
- in[15] = _mm_srai_epi16(in[15], 6);
-
- RECON_AND_STORE(dest + 0 * stride, in[0]);
- RECON_AND_STORE(dest + 1 * stride, in[1]);
- RECON_AND_STORE(dest + 2 * stride, in[2]);
- RECON_AND_STORE(dest + 3 * stride, in[3]);
- RECON_AND_STORE(dest + 4 * stride, in[4]);
- RECON_AND_STORE(dest + 5 * stride, in[5]);
- RECON_AND_STORE(dest + 6 * stride, in[6]);
- RECON_AND_STORE(dest + 7 * stride, in[7]);
- RECON_AND_STORE(dest + 8 * stride, in[8]);
- RECON_AND_STORE(dest + 9 * stride, in[9]);
- RECON_AND_STORE(dest + 10 * stride, in[10]);
- RECON_AND_STORE(dest + 11 * stride, in[11]);
- RECON_AND_STORE(dest + 12 * stride, in[12]);
- RECON_AND_STORE(dest + 13 * stride, in[13]);
- RECON_AND_STORE(dest + 14 * stride, in[14]);
- RECON_AND_STORE(dest + 15 * stride, in[15]);
-}
-
-void idct4_sse2(__m128i *in);
-void idct8_sse2(__m128i *in);
-void idct16_sse2(__m128i *in0, __m128i *in1);
-void iadst4_sse2(__m128i *in);
-void iadst8_sse2(__m128i *in);
-void iadst16_sse2(__m128i *in0, __m128i *in1);
-
-#endif // VPX_DSP_X86_INV_TXFM_SSE2_H_
diff --git a/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm b/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm
deleted file mode 100644
index 20baf820f6..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm
+++ /dev/null
@@ -1,1793 +0,0 @@
-;
-; Copyright (c) 2014 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "third_party/x86inc/x86inc.asm"
-
-; This file provides SSSE3 version of the inverse transformation. Part
-; of the functions are originally derived from the ffmpeg project.
-; Note that the current version applies to x86 64-bit only.
-
-SECTION_RODATA
-
-pw_11585x2: times 8 dw 23170
-
-pw_m2404x2: times 8 dw -2404*2
-pw_m4756x2: times 8 dw -4756*2
-pw_m5520x2: times 8 dw -5520*2
-pw_m8423x2: times 8 dw -8423*2
-pw_m9102x2: times 8 dw -9102*2
-pw_m10394x2: times 8 dw -10394*2
-pw_m11003x2: times 8 dw -11003*2
-
-pw_16364x2: times 8 dw 16364*2
-pw_16305x2: times 8 dw 16305*2
-pw_16207x2: times 8 dw 16207*2
-pw_16069x2: times 8 dw 16069*2
-pw_15893x2: times 8 dw 15893*2
-pw_15679x2: times 8 dw 15679*2
-pw_15426x2: times 8 dw 15426*2
-pw_15137x2: times 8 dw 15137*2
-pw_14811x2: times 8 dw 14811*2
-pw_14449x2: times 8 dw 14449*2
-pw_14053x2: times 8 dw 14053*2
-pw_13623x2: times 8 dw 13623*2
-pw_13160x2: times 8 dw 13160*2
-pw_12665x2: times 8 dw 12665*2
-pw_12140x2: times 8 dw 12140*2
-pw__9760x2: times 8 dw 9760*2
-pw__7723x2: times 8 dw 7723*2
-pw__7005x2: times 8 dw 7005*2
-pw__6270x2: times 8 dw 6270*2
-pw__3981x2: times 8 dw 3981*2
-pw__3196x2: times 8 dw 3196*2
-pw__1606x2: times 8 dw 1606*2
-pw___804x2: times 8 dw 804*2
-
-pd_8192: times 4 dd 8192
-pw_32: times 8 dw 32
-pw_16: times 8 dw 16
-
-%macro TRANSFORM_COEFFS 2
-pw_%1_%2: dw %1, %2, %1, %2, %1, %2, %1, %2
-pw_m%2_%1: dw -%2, %1, -%2, %1, -%2, %1, -%2, %1
-pw_m%1_m%2: dw -%1, -%2, -%1, -%2, -%1, -%2, -%1, -%2
-%endmacro
-
-TRANSFORM_COEFFS 6270, 15137
-TRANSFORM_COEFFS 3196, 16069
-TRANSFORM_COEFFS 13623, 9102
-
-; constants for 32x32_34
-TRANSFORM_COEFFS 804, 16364
-TRANSFORM_COEFFS 15426, 5520
-TRANSFORM_COEFFS 3981, 15893
-TRANSFORM_COEFFS 16207, 2404
-TRANSFORM_COEFFS 1606, 16305
-TRANSFORM_COEFFS 15679, 4756
-TRANSFORM_COEFFS 11585, 11585
-
-; constants for 32x32_1024
-TRANSFORM_COEFFS 12140, 11003
-TRANSFORM_COEFFS 7005, 14811
-TRANSFORM_COEFFS 14053, 8423
-TRANSFORM_COEFFS 9760, 13160
-TRANSFORM_COEFFS 12665, 10394
-TRANSFORM_COEFFS 7723, 14449
-
-%macro PAIR_PP_COEFFS 2
-dpw_%1_%2: dw %1, %1, %1, %1, %2, %2, %2, %2
-%endmacro
-
-%macro PAIR_MP_COEFFS 2
-dpw_m%1_%2: dw -%1, -%1, -%1, -%1, %2, %2, %2, %2
-%endmacro
-
-%macro PAIR_MM_COEFFS 2
-dpw_m%1_m%2: dw -%1, -%1, -%1, -%1, -%2, -%2, -%2, -%2
-%endmacro
-
-PAIR_PP_COEFFS 30274, 12540
-PAIR_PP_COEFFS 6392, 32138
-PAIR_MP_COEFFS 18204, 27246
-
-PAIR_PP_COEFFS 12540, 12540
-PAIR_PP_COEFFS 30274, 30274
-PAIR_PP_COEFFS 6392, 6392
-PAIR_PP_COEFFS 32138, 32138
-PAIR_MM_COEFFS 18204, 18204
-PAIR_PP_COEFFS 27246, 27246
-
-SECTION .text
-
-%if ARCH_X86_64
-%macro SUM_SUB 3
- psubw m%3, m%1, m%2
- paddw m%1, m%2
- SWAP %2, %3
-%endmacro
-
-; butterfly operation
-%macro MUL_ADD_2X 6 ; dst1, dst2, src, round, coefs1, coefs2
- pmaddwd m%1, m%3, %5
- pmaddwd m%2, m%3, %6
- paddd m%1, %4
- paddd m%2, %4
- psrad m%1, 14
- psrad m%2, 14
-%endmacro
-
-%macro BUTTERFLY_4X 7 ; dst1, dst2, coef1, coef2, round, tmp1, tmp2
- punpckhwd m%6, m%2, m%1
- MUL_ADD_2X %7, %6, %6, %5, [pw_m%4_%3], [pw_%3_%4]
- punpcklwd m%2, m%1
- MUL_ADD_2X %1, %2, %2, %5, [pw_m%4_%3], [pw_%3_%4]
- packssdw m%1, m%7
- packssdw m%2, m%6
-%endmacro
-
-%macro BUTTERFLY_4Xmm 7 ; dst1, dst2, coef1, coef2, round, tmp1, tmp2
- punpckhwd m%6, m%2, m%1
- MUL_ADD_2X %7, %6, %6, %5, [pw_m%4_%3], [pw_m%3_m%4]
- punpcklwd m%2, m%1
- MUL_ADD_2X %1, %2, %2, %5, [pw_m%4_%3], [pw_m%3_m%4]
- packssdw m%1, m%7
- packssdw m%2, m%6
-%endmacro
-
-; matrix transpose
-%macro INTERLEAVE_2X 4
- punpckh%1 m%4, m%2, m%3
- punpckl%1 m%2, m%3
- SWAP %3, %4
-%endmacro
-
-%macro TRANSPOSE8X8 9
- INTERLEAVE_2X wd, %1, %2, %9
- INTERLEAVE_2X wd, %3, %4, %9
- INTERLEAVE_2X wd, %5, %6, %9
- INTERLEAVE_2X wd, %7, %8, %9
-
- INTERLEAVE_2X dq, %1, %3, %9
- INTERLEAVE_2X dq, %2, %4, %9
- INTERLEAVE_2X dq, %5, %7, %9
- INTERLEAVE_2X dq, %6, %8, %9
-
- INTERLEAVE_2X qdq, %1, %5, %9
- INTERLEAVE_2X qdq, %3, %7, %9
- INTERLEAVE_2X qdq, %2, %6, %9
- INTERLEAVE_2X qdq, %4, %8, %9
-
- SWAP %2, %5
- SWAP %4, %7
-%endmacro
-
-%macro IDCT8_1D 0
- SUM_SUB 0, 4, 9
- BUTTERFLY_4X 2, 6, 6270, 15137, m8, 9, 10
- pmulhrsw m0, m12
- pmulhrsw m4, m12
- BUTTERFLY_4X 1, 7, 3196, 16069, m8, 9, 10
- BUTTERFLY_4X 5, 3, 13623, 9102, m8, 9, 10
-
- SUM_SUB 1, 5, 9
- SUM_SUB 7, 3, 9
- SUM_SUB 0, 6, 9
- SUM_SUB 4, 2, 9
- SUM_SUB 3, 5, 9
- pmulhrsw m3, m12
- pmulhrsw m5, m12
-
- SUM_SUB 0, 7, 9
- SUM_SUB 4, 3, 9
- SUM_SUB 2, 5, 9
- SUM_SUB 6, 1, 9
-
- SWAP 3, 6
- SWAP 1, 4
-%endmacro
-
-; This macro handles 8 pixels per line
-%macro ADD_STORE_8P_2X 5; src1, src2, tmp1, tmp2, zero
- paddw m%1, m11
- paddw m%2, m11
- psraw m%1, 5
- psraw m%2, 5
-
- movh m%3, [outputq]
- movh m%4, [outputq + strideq]
- punpcklbw m%3, m%5
- punpcklbw m%4, m%5
- paddw m%3, m%1
- paddw m%4, m%2
- packuswb m%3, m%5
- packuswb m%4, m%5
- movh [outputq], m%3
- movh [outputq + strideq], m%4
-%endmacro
-
-INIT_XMM ssse3
-; full inverse 8x8 2D-DCT transform
-cglobal idct8x8_64_add, 3, 5, 13, input, output, stride
- mova m8, [pd_8192]
- mova m11, [pw_16]
- mova m12, [pw_11585x2]
-
- lea r3, [2 * strideq]
-%if CONFIG_VP9_HIGHBITDEPTH
- mova m0, [inputq + 0]
- packssdw m0, [inputq + 16]
- mova m1, [inputq + 32]
- packssdw m1, [inputq + 48]
- mova m2, [inputq + 64]
- packssdw m2, [inputq + 80]
- mova m3, [inputq + 96]
- packssdw m3, [inputq + 112]
- mova m4, [inputq + 128]
- packssdw m4, [inputq + 144]
- mova m5, [inputq + 160]
- packssdw m5, [inputq + 176]
- mova m6, [inputq + 192]
- packssdw m6, [inputq + 208]
- mova m7, [inputq + 224]
- packssdw m7, [inputq + 240]
-%else
- mova m0, [inputq + 0]
- mova m1, [inputq + 16]
- mova m2, [inputq + 32]
- mova m3, [inputq + 48]
- mova m4, [inputq + 64]
- mova m5, [inputq + 80]
- mova m6, [inputq + 96]
- mova m7, [inputq + 112]
-%endif
- TRANSPOSE8X8 0, 1, 2, 3, 4, 5, 6, 7, 9
- IDCT8_1D
- TRANSPOSE8X8 0, 1, 2, 3, 4, 5, 6, 7, 9
- IDCT8_1D
-
- pxor m12, m12
- ADD_STORE_8P_2X 0, 1, 9, 10, 12
- lea outputq, [outputq + r3]
- ADD_STORE_8P_2X 2, 3, 9, 10, 12
- lea outputq, [outputq + r3]
- ADD_STORE_8P_2X 4, 5, 9, 10, 12
- lea outputq, [outputq + r3]
- ADD_STORE_8P_2X 6, 7, 9, 10, 12
-
- RET
-
-; inverse 8x8 2D-DCT transform with only first 10 coeffs non-zero
-cglobal idct8x8_12_add, 3, 5, 13, input, output, stride
- mova m8, [pd_8192]
- mova m11, [pw_16]
- mova m12, [pw_11585x2]
-
- lea r3, [2 * strideq]
-
-%if CONFIG_VP9_HIGHBITDEPTH
- mova m0, [inputq + 0]
- packssdw m0, [inputq + 16]
- mova m1, [inputq + 32]
- packssdw m1, [inputq + 48]
- mova m2, [inputq + 64]
- packssdw m2, [inputq + 80]
- mova m3, [inputq + 96]
- packssdw m3, [inputq + 112]
-%else
- mova m0, [inputq + 0]
- mova m1, [inputq + 16]
- mova m2, [inputq + 32]
- mova m3, [inputq + 48]
-%endif
-
- punpcklwd m0, m1
- punpcklwd m2, m3
- punpckhdq m9, m0, m2
- punpckldq m0, m2
- SWAP 2, 9
-
- ; m0 -> [0], [0]
- ; m1 -> [1], [1]
- ; m2 -> [2], [2]
- ; m3 -> [3], [3]
- punpckhqdq m10, m0, m0
- punpcklqdq m0, m0
- punpckhqdq m9, m2, m2
- punpcklqdq m2, m2
- SWAP 1, 10
- SWAP 3, 9
-
- pmulhrsw m0, m12
- pmulhrsw m2, [dpw_30274_12540]
- pmulhrsw m1, [dpw_6392_32138]
- pmulhrsw m3, [dpw_m18204_27246]
-
- SUM_SUB 0, 2, 9
- SUM_SUB 1, 3, 9
-
- punpcklqdq m9, m3, m3
- punpckhqdq m5, m3, m9
-
- SUM_SUB 3, 5, 9
- punpckhqdq m5, m3
- pmulhrsw m5, m12
-
- punpckhqdq m9, m1, m5
- punpcklqdq m1, m5
- SWAP 5, 9
-
- SUM_SUB 0, 5, 9
- SUM_SUB 2, 1, 9
-
- punpckhqdq m3, m0, m0
- punpckhqdq m4, m1, m1
- punpckhqdq m6, m5, m5
- punpckhqdq m7, m2, m2
-
- punpcklwd m0, m3
- punpcklwd m7, m2
- punpcklwd m1, m4
- punpcklwd m6, m5
-
- punpckhdq m4, m0, m7
- punpckldq m0, m7
- punpckhdq m10, m1, m6
- punpckldq m5, m1, m6
-
- punpckhqdq m1, m0, m5
- punpcklqdq m0, m5
- punpckhqdq m3, m4, m10
- punpcklqdq m2, m4, m10
-
-
- pmulhrsw m0, m12
- pmulhrsw m6, m2, [dpw_30274_30274]
- pmulhrsw m4, m2, [dpw_12540_12540]
-
- pmulhrsw m7, m1, [dpw_32138_32138]
- pmulhrsw m1, [dpw_6392_6392]
- pmulhrsw m5, m3, [dpw_m18204_m18204]
- pmulhrsw m3, [dpw_27246_27246]
-
- mova m2, m0
- SUM_SUB 0, 6, 9
- SUM_SUB 2, 4, 9
- SUM_SUB 1, 5, 9
- SUM_SUB 7, 3, 9
-
- SUM_SUB 3, 5, 9
- pmulhrsw m3, m12
- pmulhrsw m5, m12
-
- SUM_SUB 0, 7, 9
- SUM_SUB 2, 3, 9
- SUM_SUB 4, 5, 9
- SUM_SUB 6, 1, 9
-
- SWAP 3, 6
- SWAP 1, 2
- SWAP 2, 4
-
-
- pxor m12, m12
- ADD_STORE_8P_2X 0, 1, 9, 10, 12
- lea outputq, [outputq + r3]
- ADD_STORE_8P_2X 2, 3, 9, 10, 12
- lea outputq, [outputq + r3]
- ADD_STORE_8P_2X 4, 5, 9, 10, 12
- lea outputq, [outputq + r3]
- ADD_STORE_8P_2X 6, 7, 9, 10, 12
-
- RET
-
-%define idx0 16 * 0
-%define idx1 16 * 1
-%define idx2 16 * 2
-%define idx3 16 * 3
-%define idx4 16 * 4
-%define idx5 16 * 5
-%define idx6 16 * 6
-%define idx7 16 * 7
-%define idx8 16 * 0
-%define idx9 16 * 1
-%define idx10 16 * 2
-%define idx11 16 * 3
-%define idx12 16 * 4
-%define idx13 16 * 5
-%define idx14 16 * 6
-%define idx15 16 * 7
-%define idx16 16 * 0
-%define idx17 16 * 1
-%define idx18 16 * 2
-%define idx19 16 * 3
-%define idx20 16 * 4
-%define idx21 16 * 5
-%define idx22 16 * 6
-%define idx23 16 * 7
-%define idx24 16 * 0
-%define idx25 16 * 1
-%define idx26 16 * 2
-%define idx27 16 * 3
-%define idx28 16 * 4
-%define idx29 16 * 5
-%define idx30 16 * 6
-%define idx31 16 * 7
-
-; FROM idct32x32_add_neon.asm
-;
-; Instead of doing the transforms stage by stage, it is done by loading
-; some input values and doing as many stages as possible to minimize the
-; storing/loading of intermediate results. To fit within registers, the
-; final coefficients are cut into four blocks:
-; BLOCK A: 16-19,28-31
-; BLOCK B: 20-23,24-27
-; BLOCK C: 8-11,12-15
-; BLOCK D: 0-3,4-7
-; Blocks A and C are straight calculation through the various stages. In
-; block B, further calculations are performed using the results from
-; block A. In block D, further calculations are performed using the results
-; from block C and then the final calculations are done using results from
-; block A and B which have been combined at the end of block B.
-;
-
-%macro IDCT32X32_34 4
- ; BLOCK A STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m11, m1
- pmulhrsw m1, [pw___804x2] ; stp1_16
- mova [r4 + 0], m0
- pmulhrsw m11, [pw_16364x2] ; stp2_31
- mova [r4 + 16 * 2], m2
- mova m12, m7
- pmulhrsw m7, [pw_15426x2] ; stp1_28
- mova [r4 + 16 * 4], m4
- pmulhrsw m12, [pw_m5520x2] ; stp2_19
- mova [r4 + 16 * 6], m6
-
- ; BLOCK A STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m2, m1 ; stp1_16
- mova m0, m11 ; stp1_31
- mova m4, m7 ; stp1_28
- mova m15, m12 ; stp1_19
-
- ; BLOCK A STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 0, 2, 3196, 16069, m8, 9, 10 ; stp1_17, stp1_30
- BUTTERFLY_4Xmm 4, 15, 3196, 16069, m8, 9, 10 ; stp1_29, stp1_18
-
- ; BLOCK A STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 1, 12, 9 ; stp2_16, stp2_19
- SUM_SUB 0, 15, 9 ; stp2_17, stp2_18
- SUM_SUB 11, 7, 9 ; stp2_31, stp2_28
- SUM_SUB 2, 4, 9 ; stp2_30, stp2_29
-
- ; BLOCK A STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 4, 15, 6270, 15137, m8, 9, 10 ; stp1_18, stp1_29
- BUTTERFLY_4X 7, 12, 6270, 15137, m8, 9, 10 ; stp1_19, stp1_28
-
- ; BLOCK B STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m6, m5
- pmulhrsw m5, [pw__3981x2] ; stp1_20
- mova [stp + %4 + idx28], m12
- mova [stp + %4 + idx29], m15
- pmulhrsw m6, [pw_15893x2] ; stp2_27
- mova [stp + %4 + idx30], m2
- mova m2, m3
- pmulhrsw m3, [pw_m2404x2] ; stp1_23
- mova [stp + %4 + idx31], m11
- pmulhrsw m2, [pw_16207x2] ; stp2_24
-
- ; BLOCK B STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m13, m5 ; stp1_20
- mova m14, m6 ; stp1_27
- mova m15, m3 ; stp1_23
- mova m11, m2 ; stp1_24
-
- ; BLOCK B STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 14, 13, 13623, 9102, m8, 9, 10 ; stp1_21, stp1_26
- BUTTERFLY_4Xmm 11, 15, 13623, 9102, m8, 9, 10 ; stp1_25, stp1_22
-
- ; BLOCK B STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 3, 5, 9 ; stp2_23, stp2_20
- SUM_SUB 15, 14, 9 ; stp2_22, stp2_21
- SUM_SUB 2, 6, 9 ; stp2_24, stp2_27
- SUM_SUB 11, 13, 9 ; stp2_25, stp2_26
-
- ; BLOCK B STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4Xmm 6, 5, 6270, 15137, m8, 9, 10 ; stp1_27, stp1_20
- BUTTERFLY_4Xmm 13, 14, 6270, 15137, m8, 9, 10 ; stp1_26, stp1_21
-
- ; BLOCK B STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 1, 3, 9 ; stp2_16, stp2_23
- SUM_SUB 0, 15, 9 ; stp2_17, stp2_22
- SUM_SUB 4, 14, 9 ; stp2_18, stp2_21
- SUM_SUB 7, 5, 9 ; stp2_19, stp2_20
- mova [stp + %3 + idx16], m1
- mova [stp + %3 + idx17], m0
- mova [stp + %3 + idx18], m4
- mova [stp + %3 + idx19], m7
-
- mova m4, [stp + %4 + idx28]
- mova m7, [stp + %4 + idx29]
- mova m10, [stp + %4 + idx30]
- mova m12, [stp + %4 + idx31]
- SUM_SUB 4, 6, 9 ; stp2_28, stp2_27
- SUM_SUB 7, 13, 9 ; stp2_29, stp2_26
- SUM_SUB 10, 11, 9 ; stp2_30, stp2_25
- SUM_SUB 12, 2, 9 ; stp2_31, stp2_24
- mova [stp + %4 + idx28], m4
- mova [stp + %4 + idx29], m7
- mova [stp + %4 + idx30], m10
- mova [stp + %4 + idx31], m12
-
- ; BLOCK B STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- mova m10, [pw_11585x2]
- SUM_SUB 6, 5, 9
- pmulhrsw m6, m10 ; stp1_27
- pmulhrsw m5, m10 ; stp1_20
- SUM_SUB 13, 14, 9
- pmulhrsw m13, m10 ; stp1_26
- pmulhrsw m14, m10 ; stp1_21
- SUM_SUB 11, 15, 9
- pmulhrsw m11, m10 ; stp1_25
- pmulhrsw m15, m10 ; stp1_22
- SUM_SUB 2, 3, 9
- pmulhrsw m2, m10 ; stp1_24
- pmulhrsw m3, m10 ; stp1_23
-%else
- BUTTERFLY_4X 6, 5, 11585, 11585, m8, 9, 10 ; stp1_20, stp1_27
- SWAP 6, 5
- BUTTERFLY_4X 13, 14, 11585, 11585, m8, 9, 10 ; stp1_21, stp1_26
- SWAP 13, 14
- BUTTERFLY_4X 11, 15, 11585, 11585, m8, 9, 10 ; stp1_22, stp1_25
- SWAP 11, 15
- BUTTERFLY_4X 2, 3, 11585, 11585, m8, 9, 10 ; stp1_23, stp1_24
- SWAP 2, 3
-%endif
-
- mova [stp + %4 + idx24], m2
- mova [stp + %4 + idx25], m11
- mova [stp + %4 + idx26], m13
- mova [stp + %4 + idx27], m6
-
- ; BLOCK C STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK C STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m0, [rsp + transposed_in + 16 * 2]
- mova m6, [rsp + transposed_in + 16 * 6]
-
- mova m1, m0
- pmulhrsw m0, [pw__1606x2] ; stp1_8
- mova [stp + %3 + idx20], m5
- mova [stp + %3 + idx21], m14
- pmulhrsw m1, [pw_16305x2] ; stp2_15
- mova [stp + %3 + idx22], m15
- mova m7, m6
- pmulhrsw m7, [pw_m4756x2] ; stp2_11
- mova [stp + %3 + idx23], m3
- pmulhrsw m6, [pw_15679x2] ; stp1_12
-
- ; BLOCK C STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m3, m0 ; stp1_8
- mova m2, m1 ; stp1_15
-
- ; BLOCK C STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 2, 3, 6270, 15137, m8, 9, 10 ; stp1_9, stp1_14
- mova m4, m7 ; stp1_11
- mova m5, m6 ; stp1_12
- BUTTERFLY_4Xmm 5, 4, 6270, 15137, m8, 9, 10 ; stp1_13, stp1_10
-
- ; BLOCK C STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 7, 9 ; stp1_8, stp1_11
- SUM_SUB 2, 4, 9 ; stp1_9, stp1_10
- SUM_SUB 1, 6, 9 ; stp1_15, stp1_12
- SUM_SUB 3, 5, 9 ; stp1_14, stp1_13
-
- ; BLOCK C STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- mova m10, [pw_11585x2]
- SUM_SUB 5, 4, 9
- pmulhrsw m5, m10 ; stp1_13
- pmulhrsw m4, m10 ; stp1_10
- SUM_SUB 6, 7, 9
- pmulhrsw m6, m10 ; stp1_12
- pmulhrsw m7, m10 ; stp1_11
-%else
- BUTTERFLY_4X 5, 4, 11585, 11585, m8, 9, 10 ; stp1_10, stp1_13
- SWAP 5, 4
- BUTTERFLY_4X 6, 7, 11585, 11585, m8, 9, 10 ; stp1_11, stp1_12
- SWAP 6, 7
-%endif
-
- ; BLOCK C STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova [stp + %2 + idx8], m0
- mova [stp + %2 + idx9], m2
- mova [stp + %2 + idx10], m4
- mova [stp + %2 + idx11], m7
-
- ; BLOCK D STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK D STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK D STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m11, [rsp + transposed_in + 16 * 4]
- mova m12, m11
- pmulhrsw m11, [pw__3196x2] ; stp1_4
- pmulhrsw m12, [pw_16069x2] ; stp1_7
-
- ; BLOCK D STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m0, [rsp + transposed_in + 16 * 0]
- mova m10, [pw_11585x2]
- pmulhrsw m0, m10 ; stp1_1
-
- mova m14, m11 ; stp1_4
- mova m13, m12 ; stp1_7
-
- ; BLOCK D STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- SUM_SUB 13, 14, 9
- pmulhrsw m13, m10 ; stp1_6
- pmulhrsw m14, m10 ; stp1_5
-%else
- BUTTERFLY_4X 13, 14, 11585, 11585, m8, 9, 10 ; stp1_5, stp1_6
- SWAP 13, 14
-%endif
- mova m7, m0 ; stp1_0 = stp1_1
- mova m4, m0 ; stp1_1
- mova m2, m7 ; stp1_0
-
- ; BLOCK D STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 12, 9 ; stp1_0, stp1_7
- SUM_SUB 7, 13, 9 ; stp1_1, stp1_6
- SUM_SUB 2, 14, 9 ; stp1_2, stp1_5
- SUM_SUB 4, 11, 9 ; stp1_3, stp1_4
-
- ; BLOCK D STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 1, 9 ; stp1_0, stp1_15
- SUM_SUB 7, 3, 9 ; stp1_1, stp1_14
- SUM_SUB 2, 5, 9 ; stp1_2, stp1_13
- SUM_SUB 4, 6, 9 ; stp1_3, stp1_12
-
- ; 0-3, 28-31 final stage
- mova m15, [stp + %4 + idx30]
- mova m10, [stp + %4 + idx31]
- SUM_SUB 0, 10, 9 ; stp1_0, stp1_31
- SUM_SUB 7, 15, 9 ; stp1_1, stp1_30
- mova [stp + %1 + idx0], m0
- mova [stp + %1 + idx1], m7
- mova [stp + %4 + idx30], m15
- mova [stp + %4 + idx31], m10
- mova m7, [stp + %4 + idx28]
- mova m0, [stp + %4 + idx29]
- SUM_SUB 2, 0, 9 ; stp1_2, stp1_29
- SUM_SUB 4, 7, 9 ; stp1_3, stp1_28
- mova [stp + %1 + idx2], m2
- mova [stp + %1 + idx3], m4
- mova [stp + %4 + idx28], m7
- mova [stp + %4 + idx29], m0
-
- ; 12-15, 16-19 final stage
- mova m0, [stp + %3 + idx16]
- mova m7, [stp + %3 + idx17]
- mova m2, [stp + %3 + idx18]
- mova m4, [stp + %3 + idx19]
- SUM_SUB 1, 0, 9 ; stp1_15, stp1_16
- SUM_SUB 3, 7, 9 ; stp1_14, stp1_17
- SUM_SUB 5, 2, 9 ; stp1_13, stp1_18
- SUM_SUB 6, 4, 9 ; stp1_12, stp1_19
- mova [stp + %2 + idx12], m6
- mova [stp + %2 + idx13], m5
- mova [stp + %2 + idx14], m3
- mova [stp + %2 + idx15], m1
- mova [stp + %3 + idx16], m0
- mova [stp + %3 + idx17], m7
- mova [stp + %3 + idx18], m2
- mova [stp + %3 + idx19], m4
-
- mova m4, [stp + %2 + idx8]
- mova m5, [stp + %2 + idx9]
- mova m6, [stp + %2 + idx10]
- mova m7, [stp + %2 + idx11]
- SUM_SUB 11, 7, 9 ; stp1_4, stp1_11
- SUM_SUB 14, 6, 9 ; stp1_5, stp1_10
- SUM_SUB 13, 5, 9 ; stp1_6, stp1_9
- SUM_SUB 12, 4, 9 ; stp1_7, stp1_8
-
- ; 4-7, 24-27 final stage
- mova m0, [stp + %4 + idx27]
- mova m1, [stp + %4 + idx26]
- mova m2, [stp + %4 + idx25]
- mova m3, [stp + %4 + idx24]
- SUM_SUB 11, 0, 9 ; stp1_4, stp1_27
- SUM_SUB 14, 1, 9 ; stp1_5, stp1_26
- SUM_SUB 13, 2, 9 ; stp1_6, stp1_25
- SUM_SUB 12, 3, 9 ; stp1_7, stp1_24
- mova [stp + %4 + idx27], m0
- mova [stp + %4 + idx26], m1
- mova [stp + %4 + idx25], m2
- mova [stp + %4 + idx24], m3
- mova [stp + %1 + idx4], m11
- mova [stp + %1 + idx5], m14
- mova [stp + %1 + idx6], m13
- mova [stp + %1 + idx7], m12
-
- ; 8-11, 20-23 final stage
- mova m0, [stp + %3 + idx20]
- mova m1, [stp + %3 + idx21]
- mova m2, [stp + %3 + idx22]
- mova m3, [stp + %3 + idx23]
- SUM_SUB 7, 0, 9 ; stp1_11, stp_20
- SUM_SUB 6, 1, 9 ; stp1_10, stp_21
- SUM_SUB 5, 2, 9 ; stp1_9, stp_22
- SUM_SUB 4, 3, 9 ; stp1_8, stp_23
- mova [stp + %2 + idx8], m4
- mova [stp + %2 + idx9], m5
- mova [stp + %2 + idx10], m6
- mova [stp + %2 + idx11], m7
- mova [stp + %3 + idx20], m0
- mova [stp + %3 + idx21], m1
- mova [stp + %3 + idx22], m2
- mova [stp + %3 + idx23], m3
-%endmacro
-
-%macro RECON_AND_STORE 1
- mova m11, [pw_32]
- lea stp, [rsp + %1]
- mov r6, 32
- pxor m8, m8
-%%recon_and_store:
- mova m0, [stp + 16 * 32 * 0]
- mova m1, [stp + 16 * 32 * 1]
- mova m2, [stp + 16 * 32 * 2]
- mova m3, [stp + 16 * 32 * 3]
- add stp, 16
-
- paddw m0, m11
- paddw m1, m11
- paddw m2, m11
- paddw m3, m11
- psraw m0, 6
- psraw m1, 6
- psraw m2, 6
- psraw m3, 6
- movh m4, [outputq + 0]
- movh m5, [outputq + 8]
- movh m6, [outputq + 16]
- movh m7, [outputq + 24]
- punpcklbw m4, m8
- punpcklbw m5, m8
- punpcklbw m6, m8
- punpcklbw m7, m8
- paddw m0, m4
- paddw m1, m5
- paddw m2, m6
- paddw m3, m7
- packuswb m0, m1
- packuswb m2, m3
- mova [outputq + 0], m0
- mova [outputq + 16], m2
- lea outputq, [outputq + strideq]
- dec r6
- jnz %%recon_and_store
-%endmacro
-
-%define i32x32_size 16*32*5
-%define pass_two_start 16*32*0
-%define transposed_in 16*32*4
-%define pass_one_start 16*32*0
-%define stp r8
-
-INIT_XMM ssse3
-cglobal idct32x32_34_add, 3, 11, 16, i32x32_size, input, output, stride
- mova m8, [pd_8192]
- lea stp, [rsp + pass_one_start]
-
-idct32x32_34:
- mov r3, inputq
- lea r4, [rsp + transposed_in]
-
-idct32x32_34_transpose:
-%if CONFIG_VP9_HIGHBITDEPTH
- mova m0, [r3 + 0]
- packssdw m0, [r3 + 16]
- mova m1, [r3 + 32 * 4]
- packssdw m1, [r3 + 32 * 4 + 16]
- mova m2, [r3 + 32 * 8]
- packssdw m2, [r3 + 32 * 8 + 16]
- mova m3, [r3 + 32 * 12]
- packssdw m3, [r3 + 32 * 12 + 16]
- mova m4, [r3 + 32 * 16]
- packssdw m4, [r3 + 32 * 16 + 16]
- mova m5, [r3 + 32 * 20]
- packssdw m5, [r3 + 32 * 20 + 16]
- mova m6, [r3 + 32 * 24]
- packssdw m6, [r3 + 32 * 24 + 16]
- mova m7, [r3 + 32 * 28]
- packssdw m7, [r3 + 32 * 28 + 16]
-%else
- mova m0, [r3 + 0]
- mova m1, [r3 + 16 * 4]
- mova m2, [r3 + 16 * 8]
- mova m3, [r3 + 16 * 12]
- mova m4, [r3 + 16 * 16]
- mova m5, [r3 + 16 * 20]
- mova m6, [r3 + 16 * 24]
- mova m7, [r3 + 16 * 28]
-%endif
-
- TRANSPOSE8X8 0, 1, 2, 3, 4, 5, 6, 7, 9
-
- IDCT32X32_34 16*0, 16*32, 16*64, 16*96
- lea stp, [stp + 16 * 8]
- mov r6, 4
- lea stp, [rsp + pass_one_start]
- lea r9, [rsp + pass_one_start]
-
-idct32x32_34_2:
- lea r4, [rsp + transposed_in]
- mov r3, r9
-
-idct32x32_34_transpose_2:
- mova m0, [r3 + 0]
- mova m1, [r3 + 16 * 1]
- mova m2, [r3 + 16 * 2]
- mova m3, [r3 + 16 * 3]
- mova m4, [r3 + 16 * 4]
- mova m5, [r3 + 16 * 5]
- mova m6, [r3 + 16 * 6]
- mova m7, [r3 + 16 * 7]
-
- TRANSPOSE8X8 0, 1, 2, 3, 4, 5, 6, 7, 9
-
- IDCT32X32_34 16*0, 16*8, 16*16, 16*24
-
- lea stp, [stp + 16 * 32]
- add r9, 16 * 32
- dec r6
- jnz idct32x32_34_2
-
- RECON_AND_STORE pass_two_start
-
- RET
-
-%macro IDCT32X32_135 4
- ; BLOCK A STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m1, [rsp + transposed_in + 16 * 1]
- mova m11, m1
- pmulhrsw m1, [pw___804x2] ; stp1_16
- pmulhrsw m11, [pw_16364x2] ; stp2_31
-
- mova m7, [rsp + transposed_in + 16 * 7]
- mova m12, m7
- pmulhrsw m7, [pw_15426x2] ; stp1_28
- pmulhrsw m12, [pw_m5520x2] ; stp2_19
-
- mova m3, [rsp + transposed_in + 16 * 9]
- mova m4, m3
- pmulhrsw m3, [pw__7005x2] ; stp1_18
- pmulhrsw m4, [pw_14811x2] ; stp2_29
-
- mova m0, [rsp + transposed_in + 16 * 15]
- mova m2, m0
- pmulhrsw m0, [pw_12140x2] ; stp1_30
- pmulhrsw m2, [pw_m11003x2] ; stp2_17
-
- ; BLOCK A STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 1, 2, 9 ; stp2_16, stp2_17
- SUM_SUB 12, 3, 9 ; stp2_19, stp2_18
- SUM_SUB 7, 4, 9 ; stp2_28, stp2_29
- SUM_SUB 11, 0, 9 ; stp2_31, stp2_30
-
- ; BLOCK A STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 0, 2, 3196, 16069, m8, 9, 10 ; stp1_17, stp1_30
- BUTTERFLY_4Xmm 4, 3, 3196, 16069, m8, 9, 10 ; stp1_29, stp1_18
-
- ; BLOCK A STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 1, 12, 9 ; stp2_16, stp2_19
- SUM_SUB 0, 3, 9 ; stp2_17, stp2_18
- SUM_SUB 11, 7, 9 ; stp2_31, stp2_28
- SUM_SUB 2, 4, 9 ; stp2_30, stp2_29
-
- ; BLOCK A STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 4, 3, 6270, 15137, m8, 9, 10 ; stp1_18, stp1_29
- BUTTERFLY_4X 7, 12, 6270, 15137, m8, 9, 10 ; stp1_19, stp1_28
-
- mova [stp + %3 + idx16], m1
- mova [stp + %3 + idx17], m0
- mova [stp + %3 + idx18], m4
- mova [stp + %3 + idx19], m7
- mova [stp + %4 + idx28], m12
- mova [stp + %4 + idx29], m3
- mova [stp + %4 + idx30], m2
- mova [stp + %4 + idx31], m11
-
- ; BLOCK B STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m2, [rsp + transposed_in + 16 * 3]
- mova m3, m2
- pmulhrsw m3, [pw_m2404x2] ; stp1_23
- pmulhrsw m2, [pw_16207x2] ; stp2_24
-
- mova m5, [rsp + transposed_in + 16 * 5]
- mova m6, m5
- pmulhrsw m5, [pw__3981x2] ; stp1_20
- pmulhrsw m6, [pw_15893x2] ; stp2_27
-
- mova m14, [rsp + transposed_in + 16 * 11]
- mova m13, m14
- pmulhrsw m13, [pw_m8423x2] ; stp1_21
- pmulhrsw m14, [pw_14053x2] ; stp2_26
-
- mova m0, [rsp + transposed_in + 16 * 13]
- mova m1, m0
- pmulhrsw m0, [pw__9760x2] ; stp1_22
- pmulhrsw m1, [pw_13160x2] ; stp2_25
-
- ; BLOCK B STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 5, 13, 9 ; stp2_20, stp2_21
- SUM_SUB 3, 0, 9 ; stp2_23, stp2_22
- SUM_SUB 2, 1, 9 ; stp2_24, stp2_25
- SUM_SUB 6, 14, 9 ; stp2_27, stp2_26
-
- ; BLOCK B STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 14, 13, 13623, 9102, m8, 9, 10 ; stp1_21, stp1_26
- BUTTERFLY_4Xmm 1, 0, 13623, 9102, m8, 9, 10 ; stp1_25, stp1_22
-
- ; BLOCK B STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 3, 5, 9 ; stp2_23, stp2_20
- SUM_SUB 0, 14, 9 ; stp2_22, stp2_21
- SUM_SUB 2, 6, 9 ; stp2_24, stp2_27
- SUM_SUB 1, 13, 9 ; stp2_25, stp2_26
-
- ; BLOCK B STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4Xmm 6, 5, 6270, 15137, m8, 9, 10 ; stp1_27, stp1_20
- BUTTERFLY_4Xmm 13, 14, 6270, 15137, m8, 9, 10 ; stp1_26, stp1_21
-
- ; BLOCK B STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m4, [stp + %3 + idx16]
- mova m7, [stp + %3 + idx17]
- mova m11, [stp + %3 + idx18]
- mova m12, [stp + %3 + idx19]
- SUM_SUB 4, 3, 9 ; stp2_16, stp2_23
- SUM_SUB 7, 0, 9 ; stp2_17, stp2_22
- SUM_SUB 11, 14, 9 ; stp2_18, stp2_21
- SUM_SUB 12, 5, 9 ; stp2_19, stp2_20
- mova [stp + %3 + idx16], m4
- mova [stp + %3 + idx17], m7
- mova [stp + %3 + idx18], m11
- mova [stp + %3 + idx19], m12
-
- mova m4, [stp + %4 + idx28]
- mova m7, [stp + %4 + idx29]
- mova m11, [stp + %4 + idx30]
- mova m12, [stp + %4 + idx31]
- SUM_SUB 4, 6, 9 ; stp2_28, stp2_27
- SUM_SUB 7, 13, 9 ; stp2_29, stp2_26
- SUM_SUB 11, 1, 9 ; stp2_30, stp2_25
- SUM_SUB 12, 2, 9 ; stp2_31, stp2_24
- mova [stp + %4 + idx28], m4
- mova [stp + %4 + idx29], m7
- mova [stp + %4 + idx30], m11
- mova [stp + %4 + idx31], m12
-
- ; BLOCK B STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- mova m10, [pw_11585x2]
- SUM_SUB 6, 5, 9
- pmulhrsw m6, m10 ; stp1_27
- pmulhrsw m5, m10 ; stp1_20
- SUM_SUB 13, 14, 9
- pmulhrsw m13, m10 ; stp1_26
- pmulhrsw m14, m10 ; stp1_21
- SUM_SUB 1, 0, 9
- pmulhrsw m1, m10 ; stp1_25
- pmulhrsw m0, m10 ; stp1_22
- SUM_SUB 2, 3, 9
- pmulhrsw m2, m10 ; stp1_25
- pmulhrsw m3, m10 ; stp1_22
-%else
- BUTTERFLY_4X 6, 5, 11585, 11585, m8, 9, 10 ; stp1_20, stp1_27
- SWAP 6, 5
- BUTTERFLY_4X 13, 14, 11585, 11585, m8, 9, 10 ; stp1_21, stp1_26
- SWAP 13, 14
- BUTTERFLY_4X 1, 0, 11585, 11585, m8, 9, 10 ; stp1_22, stp1_25
- SWAP 1, 0
- BUTTERFLY_4X 2, 3, 11585, 11585, m8, 9, 10 ; stp1_23, stp1_24
- SWAP 2, 3
-%endif
- mova [stp + %3 + idx20], m5
- mova [stp + %3 + idx21], m14
- mova [stp + %3 + idx22], m0
- mova [stp + %3 + idx23], m3
- mova [stp + %4 + idx24], m2
- mova [stp + %4 + idx25], m1
- mova [stp + %4 + idx26], m13
- mova [stp + %4 + idx27], m6
-
- ; BLOCK C STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK C STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m0, [rsp + transposed_in + 16 * 2]
- mova m1, m0
- pmulhrsw m0, [pw__1606x2] ; stp1_8
- pmulhrsw m1, [pw_16305x2] ; stp2_15
-
- mova m6, [rsp + transposed_in + 16 * 6]
- mova m7, m6
- pmulhrsw m7, [pw_m4756x2] ; stp2_11
- pmulhrsw m6, [pw_15679x2] ; stp1_12
-
- mova m4, [rsp + transposed_in + 16 * 10]
- mova m5, m4
- pmulhrsw m4, [pw__7723x2] ; stp1_10
- pmulhrsw m5, [pw_14449x2] ; stp2_13
-
- mova m2, [rsp + transposed_in + 16 * 14]
- mova m3, m2
- pmulhrsw m3, [pw_m10394x2] ; stp1_9
- pmulhrsw m2, [pw_12665x2] ; stp2_14
-
- ; BLOCK C STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 3, 9 ; stp1_8, stp1_9
- SUM_SUB 7, 4, 9 ; stp1_11, stp1_10
- SUM_SUB 6, 5, 9 ; stp1_12, stp1_13
- SUM_SUB 1, 2, 9 ; stp1_15, stp1_14
-
- ; BLOCK C STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 2, 3, 6270, 15137, m8, 9, 10 ; stp1_9, stp1_14
- BUTTERFLY_4Xmm 5, 4, 6270, 15137, m8, 9, 10 ; stp1_13, stp1_10
-
- ; BLOCK C STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 7, 9 ; stp1_8, stp1_11
- SUM_SUB 2, 4, 9 ; stp1_9, stp1_10
- SUM_SUB 1, 6, 9 ; stp1_15, stp1_12
- SUM_SUB 3, 5, 9 ; stp1_14, stp1_13
-
- ; BLOCK C STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- mova m10, [pw_11585x2]
- SUM_SUB 5, 4, 9
- pmulhrsw m5, m10 ; stp1_13
- pmulhrsw m4, m10 ; stp1_10
- SUM_SUB 6, 7, 9
- pmulhrsw m6, m10 ; stp1_12
- pmulhrsw m7, m10 ; stp1_11
-%else
- BUTTERFLY_4X 5, 4, 11585, 11585, m8, 9, 10 ; stp1_10, stp1_13
- SWAP 5, 4
- BUTTERFLY_4X 6, 7, 11585, 11585, m8, 9, 10 ; stp1_11, stp1_12
- SWAP 6, 7
-%endif
- ; BLOCK C STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova [stp + %2 + idx8], m0
- mova [stp + %2 + idx9], m2
- mova [stp + %2 + idx10], m4
- mova [stp + %2 + idx11], m7
- mova [stp + %2 + idx12], m6
- mova [stp + %2 + idx13], m5
- mova [stp + %2 + idx14], m3
- mova [stp + %2 + idx15], m1
-
- ; BLOCK D STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK D STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK D STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m11, [rsp + transposed_in + 16 * 4]
- mova m12, m11
- pmulhrsw m11, [pw__3196x2] ; stp1_4
- pmulhrsw m12, [pw_16069x2] ; stp1_7
-
- mova m13, [rsp + transposed_in + 16 * 12]
- mova m14, m13
- pmulhrsw m13, [pw_13623x2] ; stp1_6
- pmulhrsw m14, [pw_m9102x2] ; stp1_5
-
- ; BLOCK D STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m0, [rsp + transposed_in + 16 * 0]
- mova m2, [rsp + transposed_in + 16 * 8]
- pmulhrsw m0, [pw_11585x2] ; stp1_1
- mova m3, m2
- pmulhrsw m2, [pw__6270x2] ; stp1_2
- pmulhrsw m3, [pw_15137x2] ; stp1_3
-
- SUM_SUB 11, 14, 9 ; stp1_4, stp1_5
- SUM_SUB 12, 13, 9 ; stp1_7, stp1_6
-
- ; BLOCK D STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- mova m10, [pw_11585x2]
- SUM_SUB 13, 14, 9
- pmulhrsw m13, m10 ; stp1_6
- pmulhrsw m14, m10 ; stp1_5
-%else
- BUTTERFLY_4X 13, 14, 11585, 11585, m8, 9, 10 ; stp1_5, stp1_6
- SWAP 13, 14
-%endif
- mova m1, m0 ; stp1_0 = stp1_1
- SUM_SUB 0, 3, 9 ; stp1_0, stp1_3
- SUM_SUB 1, 2, 9 ; stp1_1, stp1_2
-
- ; BLOCK D STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 12, 9 ; stp1_0, stp1_7
- SUM_SUB 1, 13, 9 ; stp1_1, stp1_6
- SUM_SUB 2, 14, 9 ; stp1_2, stp1_5
- SUM_SUB 3, 11, 9 ; stp1_3, stp1_4
-
- ; BLOCK D STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m4, [stp + %2 + idx12]
- mova m5, [stp + %2 + idx13]
- mova m6, [stp + %2 + idx14]
- mova m7, [stp + %2 + idx15]
- SUM_SUB 0, 7, 9 ; stp1_0, stp1_15
- SUM_SUB 1, 6, 9 ; stp1_1, stp1_14
- SUM_SUB 2, 5, 9 ; stp1_2, stp1_13
- SUM_SUB 3, 4, 9 ; stp1_3, stp1_12
-
- ; 0-3, 28-31 final stage
- mova m10, [stp + %4 + idx31]
- mova m15, [stp + %4 + idx30]
- SUM_SUB 0, 10, 9 ; stp1_0, stp1_31
- SUM_SUB 1, 15, 9 ; stp1_1, stp1_30
- mova [stp + %1 + idx0], m0
- mova [stp + %1 + idx1], m1
- mova [stp + %4 + idx31], m10
- mova [stp + %4 + idx30], m15
- mova m0, [stp + %4 + idx29]
- mova m1, [stp + %4 + idx28]
- SUM_SUB 2, 0, 9 ; stp1_2, stp1_29
- SUM_SUB 3, 1, 9 ; stp1_3, stp1_28
- mova [stp + %1 + idx2], m2
- mova [stp + %1 + idx3], m3
- mova [stp + %4 + idx29], m0
- mova [stp + %4 + idx28], m1
-
- ; 12-15, 16-19 final stage
- mova m0, [stp + %3 + idx16]
- mova m1, [stp + %3 + idx17]
- mova m2, [stp + %3 + idx18]
- mova m3, [stp + %3 + idx19]
- SUM_SUB 7, 0, 9 ; stp1_15, stp1_16
- SUM_SUB 6, 1, 9 ; stp1_14, stp1_17
- SUM_SUB 5, 2, 9 ; stp1_13, stp1_18
- SUM_SUB 4, 3, 9 ; stp1_12, stp1_19
- mova [stp + %2 + idx12], m4
- mova [stp + %2 + idx13], m5
- mova [stp + %2 + idx14], m6
- mova [stp + %2 + idx15], m7
- mova [stp + %3 + idx16], m0
- mova [stp + %3 + idx17], m1
- mova [stp + %3 + idx18], m2
- mova [stp + %3 + idx19], m3
-
- mova m4, [stp + %2 + idx8]
- mova m5, [stp + %2 + idx9]
- mova m6, [stp + %2 + idx10]
- mova m7, [stp + %2 + idx11]
- SUM_SUB 11, 7, 9 ; stp1_4, stp1_11
- SUM_SUB 14, 6, 9 ; stp1_5, stp1_10
- SUM_SUB 13, 5, 9 ; stp1_6, stp1_9
- SUM_SUB 12, 4, 9 ; stp1_7, stp1_8
-
- ; 4-7, 24-27 final stage
- mova m3, [stp + %4 + idx24]
- mova m2, [stp + %4 + idx25]
- mova m1, [stp + %4 + idx26]
- mova m0, [stp + %4 + idx27]
- SUM_SUB 12, 3, 9 ; stp1_7, stp1_24
- SUM_SUB 13, 2, 9 ; stp1_6, stp1_25
- SUM_SUB 14, 1, 9 ; stp1_5, stp1_26
- SUM_SUB 11, 0, 9 ; stp1_4, stp1_27
- mova [stp + %4 + idx24], m3
- mova [stp + %4 + idx25], m2
- mova [stp + %4 + idx26], m1
- mova [stp + %4 + idx27], m0
- mova [stp + %1 + idx4], m11
- mova [stp + %1 + idx5], m14
- mova [stp + %1 + idx6], m13
- mova [stp + %1 + idx7], m12
-
- ; 8-11, 20-23 final stage
- mova m0, [stp + %3 + idx20]
- mova m1, [stp + %3 + idx21]
- mova m2, [stp + %3 + idx22]
- mova m3, [stp + %3 + idx23]
- SUM_SUB 7, 0, 9 ; stp1_11, stp_20
- SUM_SUB 6, 1, 9 ; stp1_10, stp_21
- SUM_SUB 5, 2, 9 ; stp1_9, stp_22
- SUM_SUB 4, 3, 9 ; stp1_8, stp_23
- mova [stp + %2 + idx8], m4
- mova [stp + %2 + idx9], m5
- mova [stp + %2 + idx10], m6
- mova [stp + %2 + idx11], m7
- mova [stp + %3 + idx20], m0
- mova [stp + %3 + idx21], m1
- mova [stp + %3 + idx22], m2
- mova [stp + %3 + idx23], m3
-%endmacro
-
-INIT_XMM ssse3
-cglobal idct32x32_135_add, 3, 11, 16, i32x32_size, input, output, stride
- mova m8, [pd_8192]
- mov r6, 2
- lea stp, [rsp + pass_one_start]
-
-idct32x32_135:
- mov r3, inputq
- lea r4, [rsp + transposed_in]
- mov r7, 2
-
-idct32x32_135_transpose:
-%if CONFIG_VP9_HIGHBITDEPTH
- mova m0, [r3 + 0]
- packssdw m0, [r3 + 16]
- mova m1, [r3 + 32 * 4]
- packssdw m1, [r3 + 32 * 4 + 16]
- mova m2, [r3 + 32 * 8]
- packssdw m2, [r3 + 32 * 8 + 16]
- mova m3, [r3 + 32 * 12]
- packssdw m3, [r3 + 32 * 12 + 16]
- mova m4, [r3 + 32 * 16]
- packssdw m4, [r3 + 32 * 16 + 16]
- mova m5, [r3 + 32 * 20]
- packssdw m5, [r3 + 32 * 20 + 16]
- mova m6, [r3 + 32 * 24]
- packssdw m6, [r3 + 32 * 24 + 16]
- mova m7, [r3 + 32 * 28]
- packssdw m7, [r3 + 32 * 28 + 16]
-%else
- mova m0, [r3 + 0]
- mova m1, [r3 + 16 * 4]
- mova m2, [r3 + 16 * 8]
- mova m3, [r3 + 16 * 12]
- mova m4, [r3 + 16 * 16]
- mova m5, [r3 + 16 * 20]
- mova m6, [r3 + 16 * 24]
- mova m7, [r3 + 16 * 28]
-%endif
- TRANSPOSE8X8 0, 1, 2, 3, 4, 5, 6, 7, 9
-
- mova [r4 + 0], m0
- mova [r4 + 16 * 1], m1
- mova [r4 + 16 * 2], m2
- mova [r4 + 16 * 3], m3
- mova [r4 + 16 * 4], m4
- mova [r4 + 16 * 5], m5
- mova [r4 + 16 * 6], m6
- mova [r4 + 16 * 7], m7
-
-%if CONFIG_VP9_HIGHBITDEPTH
- add r3, 32
-%else
- add r3, 16
-%endif
- add r4, 16 * 8
- dec r7
- jne idct32x32_135_transpose
-
- IDCT32X32_135 16*0, 16*32, 16*64, 16*96
- lea stp, [stp + 16 * 8]
-%if CONFIG_VP9_HIGHBITDEPTH
- lea inputq, [inputq + 32 * 32]
-%else
- lea inputq, [inputq + 16 * 32]
-%endif
- dec r6
- jnz idct32x32_135
-
- mov r6, 4
- lea stp, [rsp + pass_one_start]
- lea r9, [rsp + pass_one_start]
-
-idct32x32_135_2:
- lea r4, [rsp + transposed_in]
- mov r3, r9
- mov r7, 2
-
-idct32x32_135_transpose_2:
- mova m0, [r3 + 0]
- mova m1, [r3 + 16 * 1]
- mova m2, [r3 + 16 * 2]
- mova m3, [r3 + 16 * 3]
- mova m4, [r3 + 16 * 4]
- mova m5, [r3 + 16 * 5]
- mova m6, [r3 + 16 * 6]
- mova m7, [r3 + 16 * 7]
-
- TRANSPOSE8X8 0, 1, 2, 3, 4, 5, 6, 7, 9
-
- mova [r4 + 0], m0
- mova [r4 + 16 * 1], m1
- mova [r4 + 16 * 2], m2
- mova [r4 + 16 * 3], m3
- mova [r4 + 16 * 4], m4
- mova [r4 + 16 * 5], m5
- mova [r4 + 16 * 6], m6
- mova [r4 + 16 * 7], m7
-
- add r3, 16 * 8
- add r4, 16 * 8
- dec r7
- jne idct32x32_135_transpose_2
-
- IDCT32X32_135 16*0, 16*8, 16*16, 16*24
-
- lea stp, [stp + 16 * 32]
- add r9, 16 * 32
- dec r6
- jnz idct32x32_135_2
-
- RECON_AND_STORE pass_two_start
-
- RET
-
-%macro IDCT32X32_1024 4
- ; BLOCK A STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m1, [rsp + transposed_in + 16 * 1]
- mova m11, [rsp + transposed_in + 16 * 31]
- BUTTERFLY_4X 1, 11, 804, 16364, m8, 9, 10 ; stp1_16, stp1_31
-
- mova m0, [rsp + transposed_in + 16 * 15]
- mova m2, [rsp + transposed_in + 16 * 17]
- BUTTERFLY_4X 2, 0, 12140, 11003, m8, 9, 10 ; stp1_17, stp1_30
-
- mova m7, [rsp + transposed_in + 16 * 7]
- mova m12, [rsp + transposed_in + 16 * 25]
- BUTTERFLY_4X 12, 7, 15426, 5520, m8, 9, 10 ; stp1_19, stp1_28
-
- mova m3, [rsp + transposed_in + 16 * 9]
- mova m4, [rsp + transposed_in + 16 * 23]
- BUTTERFLY_4X 3, 4, 7005, 14811, m8, 9, 10 ; stp1_18, stp1_29
-
- ; BLOCK A STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 1, 2, 9 ; stp2_16, stp2_17
- SUM_SUB 12, 3, 9 ; stp2_19, stp2_18
- SUM_SUB 7, 4, 9 ; stp2_28, stp2_29
- SUM_SUB 11, 0, 9 ; stp2_31, stp2_30
-
- ; BLOCK A STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 0, 2, 3196, 16069, m8, 9, 10 ; stp1_17, stp1_30
- BUTTERFLY_4Xmm 4, 3, 3196, 16069, m8, 9, 10 ; stp1_29, stp1_18
-
- ; BLOCK A STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 1, 12, 9 ; stp2_16, stp2_19
- SUM_SUB 0, 3, 9 ; stp2_17, stp2_18
- SUM_SUB 11, 7, 9 ; stp2_31, stp2_28
- SUM_SUB 2, 4, 9 ; stp2_30, stp2_29
-
- ; BLOCK A STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 4, 3, 6270, 15137, m8, 9, 10 ; stp1_18, stp1_29
- BUTTERFLY_4X 7, 12, 6270, 15137, m8, 9, 10 ; stp1_19, stp1_28
-
- mova [stp + %3 + idx16], m1
- mova [stp + %3 + idx17], m0
- mova [stp + %3 + idx18], m4
- mova [stp + %3 + idx19], m7
- mova [stp + %4 + idx28], m12
- mova [stp + %4 + idx29], m3
- mova [stp + %4 + idx30], m2
- mova [stp + %4 + idx31], m11
-
- ; BLOCK B STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m5, [rsp + transposed_in + 16 * 5]
- mova m6, [rsp + transposed_in + 16 * 27]
- BUTTERFLY_4X 5, 6, 3981, 15893, m8, 9, 10 ; stp1_20, stp1_27
-
- mova m13, [rsp + transposed_in + 16 * 21]
- mova m14, [rsp + transposed_in + 16 * 11]
- BUTTERFLY_4X 13, 14, 14053, 8423, m8, 9, 10 ; stp1_21, stp1_26
-
- mova m0, [rsp + transposed_in + 16 * 13]
- mova m1, [rsp + transposed_in + 16 * 19]
- BUTTERFLY_4X 0, 1, 9760, 13160, m8, 9, 10 ; stp1_22, stp1_25
-
- mova m2, [rsp + transposed_in + 16 * 3]
- mova m3, [rsp + transposed_in + 16 * 29]
- BUTTERFLY_4X 3, 2, 16207, 2404, m8, 9, 10 ; stp1_23, stp1_24
-
- ; BLOCK B STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 5, 13, 9 ; stp2_20, stp2_21
- SUM_SUB 3, 0, 9 ; stp2_23, stp2_22
- SUM_SUB 2, 1, 9 ; stp2_24, stp2_25
- SUM_SUB 6, 14, 9 ; stp2_27, stp2_26
-
- ; BLOCK B STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 14, 13, 13623, 9102, m8, 9, 10 ; stp1_21, stp1_26
- BUTTERFLY_4Xmm 1, 0, 13623, 9102, m8, 9, 10 ; stp1_25, stp1_22
-
- ; BLOCK B STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 3, 5, 9 ; stp2_23, stp2_20
- SUM_SUB 0, 14, 9 ; stp2_22, stp2_21
- SUM_SUB 2, 6, 9 ; stp2_24, stp2_27
- SUM_SUB 1, 13, 9 ; stp2_25, stp2_26
-
- ; BLOCK B STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4Xmm 6, 5, 6270, 15137, m8, 9, 10 ; stp1_27, stp1_20
- BUTTERFLY_4Xmm 13, 14, 6270, 15137, m8, 9, 10 ; stp1_26, stp1_21
-
- ; BLOCK B STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m4, [stp + %3 + idx16]
- mova m7, [stp + %3 + idx17]
- mova m11, [stp + %3 + idx18]
- mova m12, [stp + %3 + idx19]
- SUM_SUB 4, 3, 9 ; stp2_16, stp2_23
- SUM_SUB 7, 0, 9 ; stp2_17, stp2_22
- SUM_SUB 11, 14, 9 ; stp2_18, stp2_21
- SUM_SUB 12, 5, 9 ; stp2_19, stp2_20
- mova [stp + %3 + idx16], m4
- mova [stp + %3 + idx17], m7
- mova [stp + %3 + idx18], m11
- mova [stp + %3 + idx19], m12
-
- mova m4, [stp + %4 + idx28]
- mova m7, [stp + %4 + idx29]
- mova m11, [stp + %4 + idx30]
- mova m12, [stp + %4 + idx31]
- SUM_SUB 4, 6, 9 ; stp2_28, stp2_27
- SUM_SUB 7, 13, 9 ; stp2_29, stp2_26
- SUM_SUB 11, 1, 9 ; stp2_30, stp2_25
- SUM_SUB 12, 2, 9 ; stp2_31, stp2_24
- mova [stp + %4 + idx28], m4
- mova [stp + %4 + idx29], m7
- mova [stp + %4 + idx30], m11
- mova [stp + %4 + idx31], m12
-
- ; BLOCK B STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- mova m10, [pw_11585x2]
- SUM_SUB 6, 5, 9
- pmulhrsw m6, m10 ; stp1_27
- pmulhrsw m5, m10 ; stp1_20
- SUM_SUB 13, 14, 9
- pmulhrsw m13, m10 ; stp1_26
- pmulhrsw m14, m10 ; stp1_21
- SUM_SUB 1, 0, 9
- pmulhrsw m1, m10 ; stp1_25
- pmulhrsw m0, m10 ; stp1_22
- SUM_SUB 2, 3, 9
- pmulhrsw m2, m10 ; stp1_25
- pmulhrsw m3, m10 ; stp1_22
-%else
- BUTTERFLY_4X 6, 5, 11585, 11585, m8, 9, 10 ; stp1_20, stp1_27
- SWAP 6, 5
- BUTTERFLY_4X 13, 14, 11585, 11585, m8, 9, 10 ; stp1_21, stp1_26
- SWAP 13, 14
- BUTTERFLY_4X 1, 0, 11585, 11585, m8, 9, 10 ; stp1_22, stp1_25
- SWAP 1, 0
- BUTTERFLY_4X 2, 3, 11585, 11585, m8, 9, 10 ; stp1_23, stp1_24
- SWAP 2, 3
-%endif
- mova [stp + %3 + idx20], m5
- mova [stp + %3 + idx21], m14
- mova [stp + %3 + idx22], m0
- mova [stp + %3 + idx23], m3
- mova [stp + %4 + idx24], m2
- mova [stp + %4 + idx25], m1
- mova [stp + %4 + idx26], m13
- mova [stp + %4 + idx27], m6
-
- ; BLOCK C STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK C STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m0, [rsp + transposed_in + 16 * 2]
- mova m1, [rsp + transposed_in + 16 * 30]
- BUTTERFLY_4X 0, 1, 1606, 16305, m8, 9, 10 ; stp1_8, stp1_15
-
- mova m2, [rsp + transposed_in + 16 * 14]
- mova m3, [rsp + transposed_in + 16 * 18]
- BUTTERFLY_4X 3, 2, 12665, 10394, m8, 9, 10 ; stp1_9, stp1_14
-
- mova m4, [rsp + transposed_in + 16 * 10]
- mova m5, [rsp + transposed_in + 16 * 22]
- BUTTERFLY_4X 4, 5, 7723, 14449, m8, 9, 10 ; stp1_10, stp1_13
-
- mova m6, [rsp + transposed_in + 16 * 6]
- mova m7, [rsp + transposed_in + 16 * 26]
- BUTTERFLY_4X 7, 6, 15679, 4756, m8, 9, 10 ; stp1_11, stp1_12
-
- ; BLOCK C STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 3, 9 ; stp1_8, stp1_9
- SUM_SUB 7, 4, 9 ; stp1_11, stp1_10
- SUM_SUB 6, 5, 9 ; stp1_12, stp1_13
- SUM_SUB 1, 2, 9 ; stp1_15, stp1_14
-
- ; BLOCK C STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- BUTTERFLY_4X 2, 3, 6270, 15137, m8, 9, 10 ; stp1_9, stp1_14
- BUTTERFLY_4Xmm 5, 4, 6270, 15137, m8, 9, 10 ; stp1_13, stp1_10
-
- ; BLOCK C STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 7, 9 ; stp1_8, stp1_11
- SUM_SUB 2, 4, 9 ; stp1_9, stp1_10
- SUM_SUB 1, 6, 9 ; stp1_15, stp1_12
- SUM_SUB 3, 5, 9 ; stp1_14, stp1_13
-
- ; BLOCK C STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- mova m10, [pw_11585x2]
- SUM_SUB 5, 4, 9
- pmulhrsw m5, m10 ; stp1_13
- pmulhrsw m4, m10 ; stp1_10
- SUM_SUB 6, 7, 9
- pmulhrsw m6, m10 ; stp1_12
- pmulhrsw m7, m10 ; stp1_11
-%else
- BUTTERFLY_4X 5, 4, 11585, 11585, m8, 9, 10 ; stp1_10, stp1_13
- SWAP 5, 4
- BUTTERFLY_4X 6, 7, 11585, 11585, m8, 9, 10 ; stp1_11, stp1_12
- SWAP 6, 7
-%endif
- ; BLOCK C STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova [stp + %2 + idx8], m0
- mova [stp + %2 + idx9], m2
- mova [stp + %2 + idx10], m4
- mova [stp + %2 + idx11], m7
- mova [stp + %2 + idx12], m6
- mova [stp + %2 + idx13], m5
- mova [stp + %2 + idx14], m3
- mova [stp + %2 + idx15], m1
-
- ; BLOCK D STAGE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK D STAGE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;
- ; BLOCK D STAGE 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m11, [rsp + transposed_in + 16 * 4]
- mova m12, [rsp + transposed_in + 16 * 28]
- BUTTERFLY_4X 11, 12, 3196, 16069, m8, 9, 10 ; stp1_4, stp1_7
-
- mova m13, [rsp + transposed_in + 16 * 12]
- mova m14, [rsp + transposed_in + 16 * 20]
- BUTTERFLY_4X 14, 13, 13623, 9102, m8, 9, 10 ; stp1_5, stp1_6
-
- ; BLOCK D STAGE 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m0, [rsp + transposed_in + 16 * 0]
- mova m1, [rsp + transposed_in + 16 * 16]
-
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- mova m10, [pw_11585x2]
- SUM_SUB 0, 1, 9
- pmulhrsw m0, m10 ; stp1_1
- pmulhrsw m1, m10 ; stp1_0
-%else
- BUTTERFLY_4X 0, 1, 11585, 11585, m8, 9, 10 ; stp1_1, stp1_0
- SWAP 0, 1
-%endif
- mova m2, [rsp + transposed_in + 16 * 8]
- mova m3, [rsp + transposed_in + 16 * 24]
- BUTTERFLY_4X 2, 3, 6270, 15137, m8, 9, 10 ; stp1_2, stp1_3
-
- mova m10, [pw_11585x2]
- SUM_SUB 11, 14, 9 ; stp1_4, stp1_5
- SUM_SUB 12, 13, 9 ; stp1_7, stp1_6
-
- ; BLOCK D STAGE 5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%if 0 ; overflow occurs in SUM_SUB when using test streams
- SUM_SUB 13, 14, 9
- pmulhrsw m13, m10 ; stp1_6
- pmulhrsw m14, m10 ; stp1_5
-%else
- BUTTERFLY_4X 13, 14, 11585, 11585, m8, 9, 10 ; stp1_5, stp1_6
- SWAP 13, 14
-%endif
- SUM_SUB 0, 3, 9 ; stp1_0, stp1_3
- SUM_SUB 1, 2, 9 ; stp1_1, stp1_2
-
- ; BLOCK D STAGE 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- SUM_SUB 0, 12, 9 ; stp1_0, stp1_7
- SUM_SUB 1, 13, 9 ; stp1_1, stp1_6
- SUM_SUB 2, 14, 9 ; stp1_2, stp1_5
- SUM_SUB 3, 11, 9 ; stp1_3, stp1_4
-
- ; BLOCK D STAGE 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mova m4, [stp + %2 + idx12]
- mova m5, [stp + %2 + idx13]
- mova m6, [stp + %2 + idx14]
- mova m7, [stp + %2 + idx15]
- SUM_SUB 0, 7, 9 ; stp1_0, stp1_15
- SUM_SUB 1, 6, 9 ; stp1_1, stp1_14
- SUM_SUB 2, 5, 9 ; stp1_2, stp1_13
- SUM_SUB 3, 4, 9 ; stp1_3, stp1_12
-
- ; 0-3, 28-31 final stage
- mova m10, [stp + %4 + idx31]
- mova m15, [stp + %4 + idx30]
- SUM_SUB 0, 10, 9 ; stp1_0, stp1_31
- SUM_SUB 1, 15, 9 ; stp1_1, stp1_30
- mova [stp + %1 + idx0], m0
- mova [stp + %1 + idx1], m1
- mova [stp + %4 + idx31], m10
- mova [stp + %4 + idx30], m15
- mova m0, [stp + %4 + idx29]
- mova m1, [stp + %4 + idx28]
- SUM_SUB 2, 0, 9 ; stp1_2, stp1_29
- SUM_SUB 3, 1, 9 ; stp1_3, stp1_28
- mova [stp + %1 + idx2], m2
- mova [stp + %1 + idx3], m3
- mova [stp + %4 + idx29], m0
- mova [stp + %4 + idx28], m1
-
- ; 12-15, 16-19 final stage
- mova m0, [stp + %3 + idx16]
- mova m1, [stp + %3 + idx17]
- mova m2, [stp + %3 + idx18]
- mova m3, [stp + %3 + idx19]
- SUM_SUB 7, 0, 9 ; stp1_15, stp1_16
- SUM_SUB 6, 1, 9 ; stp1_14, stp1_17
- SUM_SUB 5, 2, 9 ; stp1_13, stp1_18
- SUM_SUB 4, 3, 9 ; stp1_12, stp1_19
- mova [stp + %2 + idx12], m4
- mova [stp + %2 + idx13], m5
- mova [stp + %2 + idx14], m6
- mova [stp + %2 + idx15], m7
- mova [stp + %3 + idx16], m0
- mova [stp + %3 + idx17], m1
- mova [stp + %3 + idx18], m2
- mova [stp + %3 + idx19], m3
-
- mova m4, [stp + %2 + idx8]
- mova m5, [stp + %2 + idx9]
- mova m6, [stp + %2 + idx10]
- mova m7, [stp + %2 + idx11]
- SUM_SUB 11, 7, 9 ; stp1_4, stp1_11
- SUM_SUB 14, 6, 9 ; stp1_5, stp1_10
- SUM_SUB 13, 5, 9 ; stp1_6, stp1_9
- SUM_SUB 12, 4, 9 ; stp1_7, stp1_8
-
- ; 4-7, 24-27 final stage
- mova m3, [stp + %4 + idx24]
- mova m2, [stp + %4 + idx25]
- mova m1, [stp + %4 + idx26]
- mova m0, [stp + %4 + idx27]
- SUM_SUB 12, 3, 9 ; stp1_7, stp1_24
- SUM_SUB 13, 2, 9 ; stp1_6, stp1_25
- SUM_SUB 14, 1, 9 ; stp1_5, stp1_26
- SUM_SUB 11, 0, 9 ; stp1_4, stp1_27
- mova [stp + %4 + idx24], m3
- mova [stp + %4 + idx25], m2
- mova [stp + %4 + idx26], m1
- mova [stp + %4 + idx27], m0
- mova [stp + %1 + idx4], m11
- mova [stp + %1 + idx5], m14
- mova [stp + %1 + idx6], m13
- mova [stp + %1 + idx7], m12
-
- ; 8-11, 20-23 final stage
- mova m0, [stp + %3 + idx20]
- mova m1, [stp + %3 + idx21]
- mova m2, [stp + %3 + idx22]
- mova m3, [stp + %3 + idx23]
- SUM_SUB 7, 0, 9 ; stp1_11, stp_20
- SUM_SUB 6, 1, 9 ; stp1_10, stp_21
- SUM_SUB 5, 2, 9 ; stp1_9, stp_22
- SUM_SUB 4, 3, 9 ; stp1_8, stp_23
- mova [stp + %2 + idx8], m4
- mova [stp + %2 + idx9], m5
- mova [stp + %2 + idx10], m6
- mova [stp + %2 + idx11], m7
- mova [stp + %3 + idx20], m0
- mova [stp + %3 + idx21], m1
- mova [stp + %3 + idx22], m2
- mova [stp + %3 + idx23], m3
-%endmacro
-
-INIT_XMM ssse3
-cglobal idct32x32_1024_add, 3, 11, 16, i32x32_size, input, output, stride
- mova m8, [pd_8192]
- mov r6, 4
- lea stp, [rsp + pass_one_start]
-
-idct32x32_1024:
- mov r3, inputq
- lea r4, [rsp + transposed_in]
- mov r7, 4
-
-idct32x32_1024_transpose:
-%if CONFIG_VP9_HIGHBITDEPTH
- mova m0, [r3 + 0]
- packssdw m0, [r3 + 16]
- mova m1, [r3 + 32 * 4]
- packssdw m1, [r3 + 32 * 4 + 16]
- mova m2, [r3 + 32 * 8]
- packssdw m2, [r3 + 32 * 8 + 16]
- mova m3, [r3 + 32 * 12]
- packssdw m3, [r3 + 32 * 12 + 16]
- mova m4, [r3 + 32 * 16]
- packssdw m4, [r3 + 32 * 16 + 16]
- mova m5, [r3 + 32 * 20]
- packssdw m5, [r3 + 32 * 20 + 16]
- mova m6, [r3 + 32 * 24]
- packssdw m6, [r3 + 32 * 24 + 16]
- mova m7, [r3 + 32 * 28]
- packssdw m7, [r3 + 32 * 28 + 16]
-%else
- mova m0, [r3 + 0]
- mova m1, [r3 + 16 * 4]
- mova m2, [r3 + 16 * 8]
- mova m3, [r3 + 16 * 12]
- mova m4, [r3 + 16 * 16]
- mova m5, [r3 + 16 * 20]
- mova m6, [r3 + 16 * 24]
- mova m7, [r3 + 16 * 28]
-%endif
-
- TRANSPOSE8X8 0, 1, 2, 3, 4, 5, 6, 7, 9
-
- mova [r4 + 0], m0
- mova [r4 + 16 * 1], m1
- mova [r4 + 16 * 2], m2
- mova [r4 + 16 * 3], m3
- mova [r4 + 16 * 4], m4
- mova [r4 + 16 * 5], m5
- mova [r4 + 16 * 6], m6
- mova [r4 + 16 * 7], m7
-%if CONFIG_VP9_HIGHBITDEPTH
- add r3, 32
-%else
- add r3, 16
-%endif
- add r4, 16 * 8
- dec r7
- jne idct32x32_1024_transpose
-
- IDCT32X32_1024 16*0, 16*32, 16*64, 16*96
-
- lea stp, [stp + 16 * 8]
-%if CONFIG_VP9_HIGHBITDEPTH
- lea inputq, [inputq + 32 * 32]
-%else
- lea inputq, [inputq + 16 * 32]
-%endif
- dec r6
- jnz idct32x32_1024
-
- mov r6, 4
- lea stp, [rsp + pass_one_start]
- lea r9, [rsp + pass_one_start]
-
-idct32x32_1024_2:
- lea r4, [rsp + transposed_in]
- mov r3, r9
- mov r7, 4
-
-idct32x32_1024_transpose_2:
- mova m0, [r3 + 0]
- mova m1, [r3 + 16 * 1]
- mova m2, [r3 + 16 * 2]
- mova m3, [r3 + 16 * 3]
- mova m4, [r3 + 16 * 4]
- mova m5, [r3 + 16 * 5]
- mova m6, [r3 + 16 * 6]
- mova m7, [r3 + 16 * 7]
-
- TRANSPOSE8X8 0, 1, 2, 3, 4, 5, 6, 7, 9
-
- mova [r4 + 0], m0
- mova [r4 + 16 * 1], m1
- mova [r4 + 16 * 2], m2
- mova [r4 + 16 * 3], m3
- mova [r4 + 16 * 4], m4
- mova [r4 + 16 * 5], m5
- mova [r4 + 16 * 6], m6
- mova [r4 + 16 * 7], m7
-
- add r3, 16 * 8
- add r4, 16 * 8
- dec r7
- jne idct32x32_1024_transpose_2
-
- IDCT32X32_1024 16*0, 16*8, 16*16, 16*24
-
- lea stp, [stp + 16 * 32]
- add r9, 16 * 32
- dec r6
- jnz idct32x32_1024_2
-
- RECON_AND_STORE pass_two_start
-
- RET
-%endif
diff --git a/thirdparty/libvpx/vpx_dsp/x86/inv_wht_sse2.asm b/thirdparty/libvpx/vpx_dsp/x86/inv_wht_sse2.asm
deleted file mode 100644
index fbbcd76bd7..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/inv_wht_sse2.asm
+++ /dev/null
@@ -1,109 +0,0 @@
-;
-; Copyright (c) 2015 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "third_party/x86inc/x86inc.asm"
-
-SECTION .text
-
-%macro REORDER_INPUTS 0
- ; a c d b to a b c d
- SWAP 1, 3, 2
-%endmacro
-
-%macro TRANSFORM_COLS 0
- ; input:
- ; m0 a
- ; m1 b
- ; m2 c
- ; m3 d
- paddw m0, m2
- psubw m3, m1
-
- ; wide subtract
- punpcklwd m4, m0
- punpcklwd m5, m3
- psrad m4, 16
- psrad m5, 16
- psubd m4, m5
- psrad m4, 1
- packssdw m4, m4 ; e
-
- psubw m5, m4, m1 ; b
- psubw m4, m2 ; c
- psubw m0, m5
- paddw m3, m4
- ; m0 a
- SWAP 1, 5 ; m1 b
- SWAP 2, 4 ; m2 c
- ; m3 d
-%endmacro
-
-%macro TRANSPOSE_4X4 0
- punpcklwd m0, m2
- punpcklwd m1, m3
- mova m2, m0
- punpcklwd m0, m1
- punpckhwd m2, m1
- pshufd m1, m0, 0x0e
- pshufd m3, m2, 0x0e
-%endmacro
-
-; transpose a 4x4 int16 matrix in xmm0 and xmm1 to the bottom half of xmm0-xmm3
-%macro TRANSPOSE_4X4_WIDE 0
- mova m3, m0
- punpcklwd m0, m1
- punpckhwd m3, m1
- mova m2, m0
- punpcklwd m0, m3
- punpckhwd m2, m3
- pshufd m1, m0, 0x0e
- pshufd m3, m2, 0x0e
-%endmacro
-
-%macro ADD_STORE_4P_2X 5 ; src1, src2, tmp1, tmp2, zero
- movd m%3, [outputq]
- movd m%4, [outputq + strideq]
- punpcklbw m%3, m%5
- punpcklbw m%4, m%5
- paddw m%1, m%3
- paddw m%2, m%4
- packuswb m%1, m%5
- packuswb m%2, m%5
- movd [outputq], m%1
- movd [outputq + strideq], m%2
-%endmacro
-
-INIT_XMM sse2
-cglobal iwht4x4_16_add, 3, 3, 7, input, output, stride
-%if CONFIG_VP9_HIGHBITDEPTH
- mova m0, [inputq + 0]
- packssdw m0, [inputq + 16]
- mova m1, [inputq + 32]
- packssdw m1, [inputq + 48]
-%else
- mova m0, [inputq + 0]
- mova m1, [inputq + 16]
-%endif
- psraw m0, 2
- psraw m1, 2
-
- TRANSPOSE_4X4_WIDE
- REORDER_INPUTS
- TRANSFORM_COLS
- TRANSPOSE_4X4
- REORDER_INPUTS
- TRANSFORM_COLS
-
- pxor m4, m4
- ADD_STORE_4P_2X 0, 1, 5, 6, 4
- lea outputq, [outputq + 2 * strideq]
- ADD_STORE_4P_2X 2, 3, 5, 6, 4
-
- RET
diff --git a/thirdparty/libvpx/vpx_dsp/x86/loopfilter_avx2.c b/thirdparty/libvpx/vpx_dsp/x86/loopfilter_avx2.c
deleted file mode 100644
index be1087c1e9..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/loopfilter_avx2.c
+++ /dev/null
@@ -1,979 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <immintrin.h> /* AVX2 */
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
-
-void vpx_lpf_horizontal_edge_8_avx2(unsigned char *s, int p,
- const unsigned char *_blimit,
- const unsigned char *_limit,
- const unsigned char *_thresh) {
- __m128i mask, hev, flat, flat2;
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i one = _mm_set1_epi8(1);
- __m128i q7p7, q6p6, q5p5, q4p4, q3p3, q2p2, q1p1, q0p0, p0q0, p1q1;
- __m128i abs_p1p0;
-
- const __m128i thresh = _mm_broadcastb_epi8(
- _mm_cvtsi32_si128((int) _thresh[0]));
- const __m128i limit = _mm_broadcastb_epi8(
- _mm_cvtsi32_si128((int) _limit[0]));
- const __m128i blimit = _mm_broadcastb_epi8(
- _mm_cvtsi32_si128((int) _blimit[0]));
-
- q4p4 = _mm_loadl_epi64((__m128i *) (s - 5 * p));
- q4p4 = _mm_castps_si128(
- _mm_loadh_pi(_mm_castsi128_ps(q4p4), (__m64 *) (s + 4 * p)));
- q3p3 = _mm_loadl_epi64((__m128i *) (s - 4 * p));
- q3p3 = _mm_castps_si128(
- _mm_loadh_pi(_mm_castsi128_ps(q3p3), (__m64 *) (s + 3 * p)));
- q2p2 = _mm_loadl_epi64((__m128i *) (s - 3 * p));
- q2p2 = _mm_castps_si128(
- _mm_loadh_pi(_mm_castsi128_ps(q2p2), (__m64 *) (s + 2 * p)));
- q1p1 = _mm_loadl_epi64((__m128i *) (s - 2 * p));
- q1p1 = _mm_castps_si128(
- _mm_loadh_pi(_mm_castsi128_ps(q1p1), (__m64 *) (s + 1 * p)));
- p1q1 = _mm_shuffle_epi32(q1p1, 78);
- q0p0 = _mm_loadl_epi64((__m128i *) (s - 1 * p));
- q0p0 = _mm_castps_si128(
- _mm_loadh_pi(_mm_castsi128_ps(q0p0), (__m64 *) (s - 0 * p)));
- p0q0 = _mm_shuffle_epi32(q0p0, 78);
-
- {
- __m128i abs_p1q1, abs_p0q0, abs_q1q0, fe, ff, work;
- abs_p1p0 = _mm_or_si128(_mm_subs_epu8(q1p1, q0p0),
- _mm_subs_epu8(q0p0, q1p1));
- abs_q1q0 = _mm_srli_si128(abs_p1p0, 8);
- fe = _mm_set1_epi8(0xfe);
- ff = _mm_cmpeq_epi8(abs_p1p0, abs_p1p0);
- abs_p0q0 = _mm_or_si128(_mm_subs_epu8(q0p0, p0q0),
- _mm_subs_epu8(p0q0, q0p0));
- abs_p1q1 = _mm_or_si128(_mm_subs_epu8(q1p1, p1q1),
- _mm_subs_epu8(p1q1, q1p1));
- flat = _mm_max_epu8(abs_p1p0, abs_q1q0);
- hev = _mm_subs_epu8(flat, thresh);
- hev = _mm_xor_si128(_mm_cmpeq_epi8(hev, zero), ff);
-
- abs_p0q0 = _mm_adds_epu8(abs_p0q0, abs_p0q0);
- abs_p1q1 = _mm_srli_epi16(_mm_and_si128(abs_p1q1, fe), 1);
- mask = _mm_subs_epu8(_mm_adds_epu8(abs_p0q0, abs_p1q1), blimit);
- mask = _mm_xor_si128(_mm_cmpeq_epi8(mask, zero), ff);
- // mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit) * -1;
- mask = _mm_max_epu8(abs_p1p0, mask);
- // mask |= (abs(p1 - p0) > limit) * -1;
- // mask |= (abs(q1 - q0) > limit) * -1;
-
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(q2p2, q1p1),
- _mm_subs_epu8(q1p1, q2p2)),
- _mm_or_si128(_mm_subs_epu8(q3p3, q2p2),
- _mm_subs_epu8(q2p2, q3p3)));
- mask = _mm_max_epu8(work, mask);
- mask = _mm_max_epu8(mask, _mm_srli_si128(mask, 8));
- mask = _mm_subs_epu8(mask, limit);
- mask = _mm_cmpeq_epi8(mask, zero);
- }
-
- // lp filter
- {
- const __m128i t4 = _mm_set1_epi8(4);
- const __m128i t3 = _mm_set1_epi8(3);
- const __m128i t80 = _mm_set1_epi8(0x80);
- const __m128i t1 = _mm_set1_epi16(0x1);
- __m128i qs1ps1 = _mm_xor_si128(q1p1, t80);
- __m128i qs0ps0 = _mm_xor_si128(q0p0, t80);
- __m128i qs0 = _mm_xor_si128(p0q0, t80);
- __m128i qs1 = _mm_xor_si128(p1q1, t80);
- __m128i filt;
- __m128i work_a;
- __m128i filter1, filter2;
- __m128i flat2_q6p6, flat2_q5p5, flat2_q4p4, flat2_q3p3, flat2_q2p2;
- __m128i flat2_q1p1, flat2_q0p0, flat_q2p2, flat_q1p1, flat_q0p0;
-
- filt = _mm_and_si128(_mm_subs_epi8(qs1ps1, qs1), hev);
- work_a = _mm_subs_epi8(qs0, qs0ps0);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- /* (vpx_filter + 3 * (qs0 - ps0)) & mask */
- filt = _mm_and_si128(filt, mask);
-
- filter1 = _mm_adds_epi8(filt, t4);
- filter2 = _mm_adds_epi8(filt, t3);
-
- filter1 = _mm_unpacklo_epi8(zero, filter1);
- filter1 = _mm_srai_epi16(filter1, 0xB);
- filter2 = _mm_unpacklo_epi8(zero, filter2);
- filter2 = _mm_srai_epi16(filter2, 0xB);
-
- /* Filter1 >> 3 */
- filt = _mm_packs_epi16(filter2, _mm_subs_epi16(zero, filter1));
- qs0ps0 = _mm_xor_si128(_mm_adds_epi8(qs0ps0, filt), t80);
-
- /* filt >> 1 */
- filt = _mm_adds_epi16(filter1, t1);
- filt = _mm_srai_epi16(filt, 1);
- filt = _mm_andnot_si128(
- _mm_srai_epi16(_mm_unpacklo_epi8(zero, hev), 0x8), filt);
- filt = _mm_packs_epi16(filt, _mm_subs_epi16(zero, filt));
- qs1ps1 = _mm_xor_si128(_mm_adds_epi8(qs1ps1, filt), t80);
- // loopfilter done
-
- {
- __m128i work;
- flat = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(q2p2, q0p0),
- _mm_subs_epu8(q0p0, q2p2)),
- _mm_or_si128(_mm_subs_epu8(q3p3, q0p0),
- _mm_subs_epu8(q0p0, q3p3)));
- flat = _mm_max_epu8(abs_p1p0, flat);
- flat = _mm_max_epu8(flat, _mm_srli_si128(flat, 8));
- flat = _mm_subs_epu8(flat, one);
- flat = _mm_cmpeq_epi8(flat, zero);
- flat = _mm_and_si128(flat, mask);
-
- q5p5 = _mm_loadl_epi64((__m128i *) (s - 6 * p));
- q5p5 = _mm_castps_si128(
- _mm_loadh_pi(_mm_castsi128_ps(q5p5),
- (__m64 *) (s + 5 * p)));
-
- q6p6 = _mm_loadl_epi64((__m128i *) (s - 7 * p));
- q6p6 = _mm_castps_si128(
- _mm_loadh_pi(_mm_castsi128_ps(q6p6),
- (__m64 *) (s + 6 * p)));
-
- flat2 = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(q4p4, q0p0),
- _mm_subs_epu8(q0p0, q4p4)),
- _mm_or_si128(_mm_subs_epu8(q5p5, q0p0),
- _mm_subs_epu8(q0p0, q5p5)));
-
- q7p7 = _mm_loadl_epi64((__m128i *) (s - 8 * p));
- q7p7 = _mm_castps_si128(
- _mm_loadh_pi(_mm_castsi128_ps(q7p7),
- (__m64 *) (s + 7 * p)));
-
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(q6p6, q0p0),
- _mm_subs_epu8(q0p0, q6p6)),
- _mm_or_si128(_mm_subs_epu8(q7p7, q0p0),
- _mm_subs_epu8(q0p0, q7p7)));
-
- flat2 = _mm_max_epu8(work, flat2);
- flat2 = _mm_max_epu8(flat2, _mm_srli_si128(flat2, 8));
- flat2 = _mm_subs_epu8(flat2, one);
- flat2 = _mm_cmpeq_epi8(flat2, zero);
- flat2 = _mm_and_si128(flat2, flat); // flat2 & flat & mask
- }
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // flat and wide flat calculations
- {
- const __m128i eight = _mm_set1_epi16(8);
- const __m128i four = _mm_set1_epi16(4);
- __m128i p7_16, p6_16, p5_16, p4_16, p3_16, p2_16, p1_16, p0_16;
- __m128i q7_16, q6_16, q5_16, q4_16, q3_16, q2_16, q1_16, q0_16;
- __m128i pixelFilter_p, pixelFilter_q;
- __m128i pixetFilter_p2p1p0, pixetFilter_q2q1q0;
- __m128i sum_p7, sum_q7, sum_p3, sum_q3, res_p, res_q;
-
- p7_16 = _mm_unpacklo_epi8(q7p7, zero);
- p6_16 = _mm_unpacklo_epi8(q6p6, zero);
- p5_16 = _mm_unpacklo_epi8(q5p5, zero);
- p4_16 = _mm_unpacklo_epi8(q4p4, zero);
- p3_16 = _mm_unpacklo_epi8(q3p3, zero);
- p2_16 = _mm_unpacklo_epi8(q2p2, zero);
- p1_16 = _mm_unpacklo_epi8(q1p1, zero);
- p0_16 = _mm_unpacklo_epi8(q0p0, zero);
- q0_16 = _mm_unpackhi_epi8(q0p0, zero);
- q1_16 = _mm_unpackhi_epi8(q1p1, zero);
- q2_16 = _mm_unpackhi_epi8(q2p2, zero);
- q3_16 = _mm_unpackhi_epi8(q3p3, zero);
- q4_16 = _mm_unpackhi_epi8(q4p4, zero);
- q5_16 = _mm_unpackhi_epi8(q5p5, zero);
- q6_16 = _mm_unpackhi_epi8(q6p6, zero);
- q7_16 = _mm_unpackhi_epi8(q7p7, zero);
-
- pixelFilter_p = _mm_add_epi16(_mm_add_epi16(p6_16, p5_16),
- _mm_add_epi16(p4_16, p3_16));
- pixelFilter_q = _mm_add_epi16(_mm_add_epi16(q6_16, q5_16),
- _mm_add_epi16(q4_16, q3_16));
-
- pixetFilter_p2p1p0 = _mm_add_epi16(p0_16,
- _mm_add_epi16(p2_16, p1_16));
- pixelFilter_p = _mm_add_epi16(pixelFilter_p, pixetFilter_p2p1p0);
-
- pixetFilter_q2q1q0 = _mm_add_epi16(q0_16,
- _mm_add_epi16(q2_16, q1_16));
- pixelFilter_q = _mm_add_epi16(pixelFilter_q, pixetFilter_q2q1q0);
- pixelFilter_p = _mm_add_epi16(eight,
- _mm_add_epi16(pixelFilter_p, pixelFilter_q));
- pixetFilter_p2p1p0 = _mm_add_epi16(four,
- _mm_add_epi16(pixetFilter_p2p1p0, pixetFilter_q2q1q0));
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_p, _mm_add_epi16(p7_16, p0_16)),
- 4);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_p, _mm_add_epi16(q7_16, q0_16)),
- 4);
- flat2_q0p0 = _mm_packus_epi16(res_p, res_q);
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixetFilter_p2p1p0,
- _mm_add_epi16(p3_16, p0_16)), 3);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixetFilter_p2p1p0,
- _mm_add_epi16(q3_16, q0_16)), 3);
-
- flat_q0p0 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(p7_16, p7_16);
- sum_q7 = _mm_add_epi16(q7_16, q7_16);
- sum_p3 = _mm_add_epi16(p3_16, p3_16);
- sum_q3 = _mm_add_epi16(q3_16, q3_16);
-
- pixelFilter_q = _mm_sub_epi16(pixelFilter_p, p6_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q6_16);
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_p, _mm_add_epi16(sum_p7, p1_16)),
- 4);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_q, _mm_add_epi16(sum_q7, q1_16)),
- 4);
- flat2_q1p1 = _mm_packus_epi16(res_p, res_q);
-
- pixetFilter_q2q1q0 = _mm_sub_epi16(pixetFilter_p2p1p0, p2_16);
- pixetFilter_p2p1p0 = _mm_sub_epi16(pixetFilter_p2p1p0, q2_16);
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixetFilter_p2p1p0,
- _mm_add_epi16(sum_p3, p1_16)), 3);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixetFilter_q2q1q0,
- _mm_add_epi16(sum_q3, q1_16)), 3);
- flat_q1p1 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- sum_p3 = _mm_add_epi16(sum_p3, p3_16);
- sum_q3 = _mm_add_epi16(sum_q3, q3_16);
-
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q5_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p5_16);
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_p, _mm_add_epi16(sum_p7, p2_16)),
- 4);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_q, _mm_add_epi16(sum_q7, q2_16)),
- 4);
- flat2_q2p2 = _mm_packus_epi16(res_p, res_q);
-
- pixetFilter_p2p1p0 = _mm_sub_epi16(pixetFilter_p2p1p0, q1_16);
- pixetFilter_q2q1q0 = _mm_sub_epi16(pixetFilter_q2q1q0, p1_16);
-
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixetFilter_p2p1p0,
- _mm_add_epi16(sum_p3, p2_16)), 3);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixetFilter_q2q1q0,
- _mm_add_epi16(sum_q3, q2_16)), 3);
- flat_q2p2 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q4_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p4_16);
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_p, _mm_add_epi16(sum_p7, p3_16)),
- 4);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_q, _mm_add_epi16(sum_q7, q3_16)),
- 4);
- flat2_q3p3 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q3_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p3_16);
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_p, _mm_add_epi16(sum_p7, p4_16)),
- 4);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_q, _mm_add_epi16(sum_q7, q4_16)),
- 4);
- flat2_q4p4 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q2_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p2_16);
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_p, _mm_add_epi16(sum_p7, p5_16)),
- 4);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_q, _mm_add_epi16(sum_q7, q5_16)),
- 4);
- flat2_q5p5 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q1_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p1_16);
- res_p = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_p, _mm_add_epi16(sum_p7, p6_16)),
- 4);
- res_q = _mm_srli_epi16(
- _mm_add_epi16(pixelFilter_q, _mm_add_epi16(sum_q7, q6_16)),
- 4);
- flat2_q6p6 = _mm_packus_epi16(res_p, res_q);
- }
- // wide flat
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- flat = _mm_shuffle_epi32(flat, 68);
- flat2 = _mm_shuffle_epi32(flat2, 68);
-
- q2p2 = _mm_andnot_si128(flat, q2p2);
- flat_q2p2 = _mm_and_si128(flat, flat_q2p2);
- q2p2 = _mm_or_si128(q2p2, flat_q2p2);
-
- qs1ps1 = _mm_andnot_si128(flat, qs1ps1);
- flat_q1p1 = _mm_and_si128(flat, flat_q1p1);
- q1p1 = _mm_or_si128(qs1ps1, flat_q1p1);
-
- qs0ps0 = _mm_andnot_si128(flat, qs0ps0);
- flat_q0p0 = _mm_and_si128(flat, flat_q0p0);
- q0p0 = _mm_or_si128(qs0ps0, flat_q0p0);
-
- q6p6 = _mm_andnot_si128(flat2, q6p6);
- flat2_q6p6 = _mm_and_si128(flat2, flat2_q6p6);
- q6p6 = _mm_or_si128(q6p6, flat2_q6p6);
- _mm_storel_epi64((__m128i *) (s - 7 * p), q6p6);
- _mm_storeh_pi((__m64 *) (s + 6 * p), _mm_castsi128_ps(q6p6));
-
- q5p5 = _mm_andnot_si128(flat2, q5p5);
- flat2_q5p5 = _mm_and_si128(flat2, flat2_q5p5);
- q5p5 = _mm_or_si128(q5p5, flat2_q5p5);
- _mm_storel_epi64((__m128i *) (s - 6 * p), q5p5);
- _mm_storeh_pi((__m64 *) (s + 5 * p), _mm_castsi128_ps(q5p5));
-
- q4p4 = _mm_andnot_si128(flat2, q4p4);
- flat2_q4p4 = _mm_and_si128(flat2, flat2_q4p4);
- q4p4 = _mm_or_si128(q4p4, flat2_q4p4);
- _mm_storel_epi64((__m128i *) (s - 5 * p), q4p4);
- _mm_storeh_pi((__m64 *) (s + 4 * p), _mm_castsi128_ps(q4p4));
-
- q3p3 = _mm_andnot_si128(flat2, q3p3);
- flat2_q3p3 = _mm_and_si128(flat2, flat2_q3p3);
- q3p3 = _mm_or_si128(q3p3, flat2_q3p3);
- _mm_storel_epi64((__m128i *) (s - 4 * p), q3p3);
- _mm_storeh_pi((__m64 *) (s + 3 * p), _mm_castsi128_ps(q3p3));
-
- q2p2 = _mm_andnot_si128(flat2, q2p2);
- flat2_q2p2 = _mm_and_si128(flat2, flat2_q2p2);
- q2p2 = _mm_or_si128(q2p2, flat2_q2p2);
- _mm_storel_epi64((__m128i *) (s - 3 * p), q2p2);
- _mm_storeh_pi((__m64 *) (s + 2 * p), _mm_castsi128_ps(q2p2));
-
- q1p1 = _mm_andnot_si128(flat2, q1p1);
- flat2_q1p1 = _mm_and_si128(flat2, flat2_q1p1);
- q1p1 = _mm_or_si128(q1p1, flat2_q1p1);
- _mm_storel_epi64((__m128i *) (s - 2 * p), q1p1);
- _mm_storeh_pi((__m64 *) (s + 1 * p), _mm_castsi128_ps(q1p1));
-
- q0p0 = _mm_andnot_si128(flat2, q0p0);
- flat2_q0p0 = _mm_and_si128(flat2, flat2_q0p0);
- q0p0 = _mm_or_si128(q0p0, flat2_q0p0);
- _mm_storel_epi64((__m128i *) (s - 1 * p), q0p0);
- _mm_storeh_pi((__m64 *) (s - 0 * p), _mm_castsi128_ps(q0p0));
- }
-}
-
-DECLARE_ALIGNED(32, static const uint8_t, filt_loopfilter_avx2[32]) = {
- 0, 128, 1, 128, 2, 128, 3, 128, 4, 128, 5, 128, 6, 128, 7, 128,
- 8, 128, 9, 128, 10, 128, 11, 128, 12, 128, 13, 128, 14, 128, 15, 128
-};
-
-void vpx_lpf_horizontal_edge_16_avx2(unsigned char *s, int p,
- const unsigned char *_blimit,
- const unsigned char *_limit,
- const unsigned char *_thresh) {
- __m128i mask, hev, flat, flat2;
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i one = _mm_set1_epi8(1);
- __m128i p7, p6, p5;
- __m128i p4, p3, p2, p1, p0, q0, q1, q2, q3, q4;
- __m128i q5, q6, q7;
- __m256i p256_7, q256_7, p256_6, q256_6, p256_5, q256_5, p256_4,
- q256_4, p256_3, q256_3, p256_2, q256_2, p256_1, q256_1,
- p256_0, q256_0;
-
- const __m128i thresh = _mm_broadcastb_epi8(
- _mm_cvtsi32_si128((int) _thresh[0]));
- const __m128i limit = _mm_broadcastb_epi8(
- _mm_cvtsi32_si128((int) _limit[0]));
- const __m128i blimit = _mm_broadcastb_epi8(
- _mm_cvtsi32_si128((int) _blimit[0]));
-
- p256_4 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 5 * p)));
- p256_3 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 4 * p)));
- p256_2 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 3 * p)));
- p256_1 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 2 * p)));
- p256_0 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 1 * p)));
- q256_0 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 0 * p)));
- q256_1 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s + 1 * p)));
- q256_2 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s + 2 * p)));
- q256_3 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s + 3 * p)));
- q256_4 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s + 4 * p)));
-
- p4 = _mm256_castsi256_si128(p256_4);
- p3 = _mm256_castsi256_si128(p256_3);
- p2 = _mm256_castsi256_si128(p256_2);
- p1 = _mm256_castsi256_si128(p256_1);
- p0 = _mm256_castsi256_si128(p256_0);
- q0 = _mm256_castsi256_si128(q256_0);
- q1 = _mm256_castsi256_si128(q256_1);
- q2 = _mm256_castsi256_si128(q256_2);
- q3 = _mm256_castsi256_si128(q256_3);
- q4 = _mm256_castsi256_si128(q256_4);
-
- {
- const __m128i abs_p1p0 = _mm_or_si128(_mm_subs_epu8(p1, p0),
- _mm_subs_epu8(p0, p1));
- const __m128i abs_q1q0 = _mm_or_si128(_mm_subs_epu8(q1, q0),
- _mm_subs_epu8(q0, q1));
- const __m128i fe = _mm_set1_epi8(0xfe);
- const __m128i ff = _mm_cmpeq_epi8(abs_p1p0, abs_p1p0);
- __m128i abs_p0q0 = _mm_or_si128(_mm_subs_epu8(p0, q0),
- _mm_subs_epu8(q0, p0));
- __m128i abs_p1q1 = _mm_or_si128(_mm_subs_epu8(p1, q1),
- _mm_subs_epu8(q1, p1));
- __m128i work;
- flat = _mm_max_epu8(abs_p1p0, abs_q1q0);
- hev = _mm_subs_epu8(flat, thresh);
- hev = _mm_xor_si128(_mm_cmpeq_epi8(hev, zero), ff);
-
- abs_p0q0 = _mm_adds_epu8(abs_p0q0, abs_p0q0);
- abs_p1q1 = _mm_srli_epi16(_mm_and_si128(abs_p1q1, fe), 1);
- mask = _mm_subs_epu8(_mm_adds_epu8(abs_p0q0, abs_p1q1), blimit);
- mask = _mm_xor_si128(_mm_cmpeq_epi8(mask, zero), ff);
- // mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit) * -1;
- mask = _mm_max_epu8(flat, mask);
- // mask |= (abs(p1 - p0) > limit) * -1;
- // mask |= (abs(q1 - q0) > limit) * -1;
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(p2, p1), _mm_subs_epu8(p1, p2)),
- _mm_or_si128(_mm_subs_epu8(p3, p2), _mm_subs_epu8(p2, p3)));
- mask = _mm_max_epu8(work, mask);
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(q2, q1), _mm_subs_epu8(q1, q2)),
- _mm_or_si128(_mm_subs_epu8(q3, q2), _mm_subs_epu8(q2, q3)));
- mask = _mm_max_epu8(work, mask);
- mask = _mm_subs_epu8(mask, limit);
- mask = _mm_cmpeq_epi8(mask, zero);
- }
-
- // lp filter
- {
- const __m128i t4 = _mm_set1_epi8(4);
- const __m128i t3 = _mm_set1_epi8(3);
- const __m128i t80 = _mm_set1_epi8(0x80);
- const __m128i te0 = _mm_set1_epi8(0xe0);
- const __m128i t1f = _mm_set1_epi8(0x1f);
- const __m128i t1 = _mm_set1_epi8(0x1);
- const __m128i t7f = _mm_set1_epi8(0x7f);
-
- __m128i ps1 = _mm_xor_si128(p1, t80);
- __m128i ps0 = _mm_xor_si128(p0, t80);
- __m128i qs0 = _mm_xor_si128(q0, t80);
- __m128i qs1 = _mm_xor_si128(q1, t80);
- __m128i filt;
- __m128i work_a;
- __m128i filter1, filter2;
- __m128i flat2_p6, flat2_p5, flat2_p4, flat2_p3, flat2_p2, flat2_p1,
- flat2_p0, flat2_q0, flat2_q1, flat2_q2, flat2_q3, flat2_q4,
- flat2_q5, flat2_q6, flat_p2, flat_p1, flat_p0, flat_q0, flat_q1,
- flat_q2;
-
- filt = _mm_and_si128(_mm_subs_epi8(ps1, qs1), hev);
- work_a = _mm_subs_epi8(qs0, ps0);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- /* (vpx_filter + 3 * (qs0 - ps0)) & mask */
- filt = _mm_and_si128(filt, mask);
-
- filter1 = _mm_adds_epi8(filt, t4);
- filter2 = _mm_adds_epi8(filt, t3);
-
- /* Filter1 >> 3 */
- work_a = _mm_cmpgt_epi8(zero, filter1);
- filter1 = _mm_srli_epi16(filter1, 3);
- work_a = _mm_and_si128(work_a, te0);
- filter1 = _mm_and_si128(filter1, t1f);
- filter1 = _mm_or_si128(filter1, work_a);
- qs0 = _mm_xor_si128(_mm_subs_epi8(qs0, filter1), t80);
-
- /* Filter2 >> 3 */
- work_a = _mm_cmpgt_epi8(zero, filter2);
- filter2 = _mm_srli_epi16(filter2, 3);
- work_a = _mm_and_si128(work_a, te0);
- filter2 = _mm_and_si128(filter2, t1f);
- filter2 = _mm_or_si128(filter2, work_a);
- ps0 = _mm_xor_si128(_mm_adds_epi8(ps0, filter2), t80);
-
- /* filt >> 1 */
- filt = _mm_adds_epi8(filter1, t1);
- work_a = _mm_cmpgt_epi8(zero, filt);
- filt = _mm_srli_epi16(filt, 1);
- work_a = _mm_and_si128(work_a, t80);
- filt = _mm_and_si128(filt, t7f);
- filt = _mm_or_si128(filt, work_a);
- filt = _mm_andnot_si128(hev, filt);
- ps1 = _mm_xor_si128(_mm_adds_epi8(ps1, filt), t80);
- qs1 = _mm_xor_si128(_mm_subs_epi8(qs1, filt), t80);
- // loopfilter done
-
- {
- __m128i work;
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(p2, p0), _mm_subs_epu8(p0, p2)),
- _mm_or_si128(_mm_subs_epu8(q2, q0), _mm_subs_epu8(q0, q2)));
- flat = _mm_max_epu8(work, flat);
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(p3, p0), _mm_subs_epu8(p0, p3)),
- _mm_or_si128(_mm_subs_epu8(q3, q0), _mm_subs_epu8(q0, q3)));
- flat = _mm_max_epu8(work, flat);
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(p4, p0), _mm_subs_epu8(p0, p4)),
- _mm_or_si128(_mm_subs_epu8(q4, q0), _mm_subs_epu8(q0, q4)));
- flat = _mm_subs_epu8(flat, one);
- flat = _mm_cmpeq_epi8(flat, zero);
- flat = _mm_and_si128(flat, mask);
-
- p256_5 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 6 * p)));
- q256_5 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s + 5 * p)));
- p5 = _mm256_castsi256_si128(p256_5);
- q5 = _mm256_castsi256_si128(q256_5);
- flat2 = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(p5, p0), _mm_subs_epu8(p0, p5)),
- _mm_or_si128(_mm_subs_epu8(q5, q0), _mm_subs_epu8(q0, q5)));
-
- flat2 = _mm_max_epu8(work, flat2);
- p256_6 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 7 * p)));
- q256_6 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s + 6 * p)));
- p6 = _mm256_castsi256_si128(p256_6);
- q6 = _mm256_castsi256_si128(q256_6);
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(p6, p0), _mm_subs_epu8(p0, p6)),
- _mm_or_si128(_mm_subs_epu8(q6, q0), _mm_subs_epu8(q0, q6)));
-
- flat2 = _mm_max_epu8(work, flat2);
-
- p256_7 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s - 8 * p)));
- q256_7 = _mm256_castpd_si256(_mm256_broadcast_pd(
- (__m128d const *)(s + 7 * p)));
- p7 = _mm256_castsi256_si128(p256_7);
- q7 = _mm256_castsi256_si128(q256_7);
- work = _mm_max_epu8(
- _mm_or_si128(_mm_subs_epu8(p7, p0), _mm_subs_epu8(p0, p7)),
- _mm_or_si128(_mm_subs_epu8(q7, q0), _mm_subs_epu8(q0, q7)));
-
- flat2 = _mm_max_epu8(work, flat2);
- flat2 = _mm_subs_epu8(flat2, one);
- flat2 = _mm_cmpeq_epi8(flat2, zero);
- flat2 = _mm_and_si128(flat2, flat); // flat2 & flat & mask
- }
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // flat and wide flat calculations
- {
- const __m256i eight = _mm256_set1_epi16(8);
- const __m256i four = _mm256_set1_epi16(4);
- __m256i pixelFilter_p, pixelFilter_q, pixetFilter_p2p1p0,
- pixetFilter_q2q1q0, sum_p7, sum_q7, sum_p3, sum_q3, res_p,
- res_q;
-
- const __m256i filter = _mm256_load_si256(
- (__m256i const *)filt_loopfilter_avx2);
- p256_7 = _mm256_shuffle_epi8(p256_7, filter);
- p256_6 = _mm256_shuffle_epi8(p256_6, filter);
- p256_5 = _mm256_shuffle_epi8(p256_5, filter);
- p256_4 = _mm256_shuffle_epi8(p256_4, filter);
- p256_3 = _mm256_shuffle_epi8(p256_3, filter);
- p256_2 = _mm256_shuffle_epi8(p256_2, filter);
- p256_1 = _mm256_shuffle_epi8(p256_1, filter);
- p256_0 = _mm256_shuffle_epi8(p256_0, filter);
- q256_0 = _mm256_shuffle_epi8(q256_0, filter);
- q256_1 = _mm256_shuffle_epi8(q256_1, filter);
- q256_2 = _mm256_shuffle_epi8(q256_2, filter);
- q256_3 = _mm256_shuffle_epi8(q256_3, filter);
- q256_4 = _mm256_shuffle_epi8(q256_4, filter);
- q256_5 = _mm256_shuffle_epi8(q256_5, filter);
- q256_6 = _mm256_shuffle_epi8(q256_6, filter);
- q256_7 = _mm256_shuffle_epi8(q256_7, filter);
-
- pixelFilter_p = _mm256_add_epi16(_mm256_add_epi16(p256_6, p256_5),
- _mm256_add_epi16(p256_4, p256_3));
- pixelFilter_q = _mm256_add_epi16(_mm256_add_epi16(q256_6, q256_5),
- _mm256_add_epi16(q256_4, q256_3));
-
- pixetFilter_p2p1p0 = _mm256_add_epi16(p256_0,
- _mm256_add_epi16(p256_2, p256_1));
- pixelFilter_p = _mm256_add_epi16(pixelFilter_p, pixetFilter_p2p1p0);
-
- pixetFilter_q2q1q0 = _mm256_add_epi16(q256_0,
- _mm256_add_epi16(q256_2, q256_1));
- pixelFilter_q = _mm256_add_epi16(pixelFilter_q, pixetFilter_q2q1q0);
-
- pixelFilter_p = _mm256_add_epi16(eight,
- _mm256_add_epi16(pixelFilter_p, pixelFilter_q));
-
- pixetFilter_p2p1p0 = _mm256_add_epi16(four,
- _mm256_add_epi16(pixetFilter_p2p1p0, pixetFilter_q2q1q0));
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_p,
- _mm256_add_epi16(p256_7, p256_0)), 4);
-
- flat2_p0 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_p,
- _mm256_add_epi16(q256_7, q256_0)), 4);
-
- flat2_q0 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixetFilter_p2p1p0,
- _mm256_add_epi16(p256_3, p256_0)), 3);
-
- flat_p0 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixetFilter_p2p1p0,
- _mm256_add_epi16(q256_3, q256_0)), 3);
-
- flat_q0 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- sum_p7 = _mm256_add_epi16(p256_7, p256_7);
-
- sum_q7 = _mm256_add_epi16(q256_7, q256_7);
-
- sum_p3 = _mm256_add_epi16(p256_3, p256_3);
-
- sum_q3 = _mm256_add_epi16(q256_3, q256_3);
-
- pixelFilter_q = _mm256_sub_epi16(pixelFilter_p, p256_6);
-
- pixelFilter_p = _mm256_sub_epi16(pixelFilter_p, q256_6);
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_p,
- _mm256_add_epi16(sum_p7, p256_1)), 4);
-
- flat2_p1 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_q,
- _mm256_add_epi16(sum_q7, q256_1)), 4);
-
- flat2_q1 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- pixetFilter_q2q1q0 = _mm256_sub_epi16(pixetFilter_p2p1p0, p256_2);
-
- pixetFilter_p2p1p0 = _mm256_sub_epi16(pixetFilter_p2p1p0, q256_2);
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixetFilter_p2p1p0,
- _mm256_add_epi16(sum_p3, p256_1)), 3);
-
- flat_p1 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixetFilter_q2q1q0,
- _mm256_add_epi16(sum_q3, q256_1)), 3);
-
- flat_q1 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- sum_p7 = _mm256_add_epi16(sum_p7, p256_7);
-
- sum_q7 = _mm256_add_epi16(sum_q7, q256_7);
-
- sum_p3 = _mm256_add_epi16(sum_p3, p256_3);
-
- sum_q3 = _mm256_add_epi16(sum_q3, q256_3);
-
- pixelFilter_p = _mm256_sub_epi16(pixelFilter_p, q256_5);
-
- pixelFilter_q = _mm256_sub_epi16(pixelFilter_q, p256_5);
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_p,
- _mm256_add_epi16(sum_p7, p256_2)), 4);
-
- flat2_p2 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_q,
- _mm256_add_epi16(sum_q7, q256_2)), 4);
-
- flat2_q2 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- pixetFilter_p2p1p0 = _mm256_sub_epi16(pixetFilter_p2p1p0, q256_1);
-
- pixetFilter_q2q1q0 = _mm256_sub_epi16(pixetFilter_q2q1q0, p256_1);
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixetFilter_p2p1p0,
- _mm256_add_epi16(sum_p3, p256_2)), 3);
-
- flat_p2 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixetFilter_q2q1q0,
- _mm256_add_epi16(sum_q3, q256_2)), 3);
-
- flat_q2 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- sum_p7 = _mm256_add_epi16(sum_p7, p256_7);
-
- sum_q7 = _mm256_add_epi16(sum_q7, q256_7);
-
- pixelFilter_p = _mm256_sub_epi16(pixelFilter_p, q256_4);
-
- pixelFilter_q = _mm256_sub_epi16(pixelFilter_q, p256_4);
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_p,
- _mm256_add_epi16(sum_p7, p256_3)), 4);
-
- flat2_p3 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_q,
- _mm256_add_epi16(sum_q7, q256_3)), 4);
-
- flat2_q3 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- sum_p7 = _mm256_add_epi16(sum_p7, p256_7);
-
- sum_q7 = _mm256_add_epi16(sum_q7, q256_7);
-
- pixelFilter_p = _mm256_sub_epi16(pixelFilter_p, q256_3);
-
- pixelFilter_q = _mm256_sub_epi16(pixelFilter_q, p256_3);
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_p,
- _mm256_add_epi16(sum_p7, p256_4)), 4);
-
- flat2_p4 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_q,
- _mm256_add_epi16(sum_q7, q256_4)), 4);
-
- flat2_q4 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- sum_p7 = _mm256_add_epi16(sum_p7, p256_7);
-
- sum_q7 = _mm256_add_epi16(sum_q7, q256_7);
-
- pixelFilter_p = _mm256_sub_epi16(pixelFilter_p, q256_2);
-
- pixelFilter_q = _mm256_sub_epi16(pixelFilter_q, p256_2);
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_p,
- _mm256_add_epi16(sum_p7, p256_5)), 4);
-
- flat2_p5 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_q,
- _mm256_add_epi16(sum_q7, q256_5)), 4);
-
- flat2_q5 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
-
- sum_p7 = _mm256_add_epi16(sum_p7, p256_7);
-
- sum_q7 = _mm256_add_epi16(sum_q7, q256_7);
-
- pixelFilter_p = _mm256_sub_epi16(pixelFilter_p, q256_1);
-
- pixelFilter_q = _mm256_sub_epi16(pixelFilter_q, p256_1);
-
- res_p = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_p,
- _mm256_add_epi16(sum_p7, p256_6)), 4);
-
- flat2_p6 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_p, res_p),
- 168));
-
- res_q = _mm256_srli_epi16(
- _mm256_add_epi16(pixelFilter_q,
- _mm256_add_epi16(sum_q7, q256_6)), 4);
-
- flat2_q6 = _mm256_castsi256_si128(
- _mm256_permute4x64_epi64(_mm256_packus_epi16(res_q, res_q),
- 168));
- }
-
- // wide flat
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- p2 = _mm_andnot_si128(flat, p2);
- flat_p2 = _mm_and_si128(flat, flat_p2);
- p2 = _mm_or_si128(flat_p2, p2);
-
- p1 = _mm_andnot_si128(flat, ps1);
- flat_p1 = _mm_and_si128(flat, flat_p1);
- p1 = _mm_or_si128(flat_p1, p1);
-
- p0 = _mm_andnot_si128(flat, ps0);
- flat_p0 = _mm_and_si128(flat, flat_p0);
- p0 = _mm_or_si128(flat_p0, p0);
-
- q0 = _mm_andnot_si128(flat, qs0);
- flat_q0 = _mm_and_si128(flat, flat_q0);
- q0 = _mm_or_si128(flat_q0, q0);
-
- q1 = _mm_andnot_si128(flat, qs1);
- flat_q1 = _mm_and_si128(flat, flat_q1);
- q1 = _mm_or_si128(flat_q1, q1);
-
- q2 = _mm_andnot_si128(flat, q2);
- flat_q2 = _mm_and_si128(flat, flat_q2);
- q2 = _mm_or_si128(flat_q2, q2);
-
- p6 = _mm_andnot_si128(flat2, p6);
- flat2_p6 = _mm_and_si128(flat2, flat2_p6);
- p6 = _mm_or_si128(flat2_p6, p6);
- _mm_storeu_si128((__m128i *) (s - 7 * p), p6);
-
- p5 = _mm_andnot_si128(flat2, p5);
- flat2_p5 = _mm_and_si128(flat2, flat2_p5);
- p5 = _mm_or_si128(flat2_p5, p5);
- _mm_storeu_si128((__m128i *) (s - 6 * p), p5);
-
- p4 = _mm_andnot_si128(flat2, p4);
- flat2_p4 = _mm_and_si128(flat2, flat2_p4);
- p4 = _mm_or_si128(flat2_p4, p4);
- _mm_storeu_si128((__m128i *) (s - 5 * p), p4);
-
- p3 = _mm_andnot_si128(flat2, p3);
- flat2_p3 = _mm_and_si128(flat2, flat2_p3);
- p3 = _mm_or_si128(flat2_p3, p3);
- _mm_storeu_si128((__m128i *) (s - 4 * p), p3);
-
- p2 = _mm_andnot_si128(flat2, p2);
- flat2_p2 = _mm_and_si128(flat2, flat2_p2);
- p2 = _mm_or_si128(flat2_p2, p2);
- _mm_storeu_si128((__m128i *) (s - 3 * p), p2);
-
- p1 = _mm_andnot_si128(flat2, p1);
- flat2_p1 = _mm_and_si128(flat2, flat2_p1);
- p1 = _mm_or_si128(flat2_p1, p1);
- _mm_storeu_si128((__m128i *) (s - 2 * p), p1);
-
- p0 = _mm_andnot_si128(flat2, p0);
- flat2_p0 = _mm_and_si128(flat2, flat2_p0);
- p0 = _mm_or_si128(flat2_p0, p0);
- _mm_storeu_si128((__m128i *) (s - 1 * p), p0);
-
- q0 = _mm_andnot_si128(flat2, q0);
- flat2_q0 = _mm_and_si128(flat2, flat2_q0);
- q0 = _mm_or_si128(flat2_q0, q0);
- _mm_storeu_si128((__m128i *) (s - 0 * p), q0);
-
- q1 = _mm_andnot_si128(flat2, q1);
- flat2_q1 = _mm_and_si128(flat2, flat2_q1);
- q1 = _mm_or_si128(flat2_q1, q1);
- _mm_storeu_si128((__m128i *) (s + 1 * p), q1);
-
- q2 = _mm_andnot_si128(flat2, q2);
- flat2_q2 = _mm_and_si128(flat2, flat2_q2);
- q2 = _mm_or_si128(flat2_q2, q2);
- _mm_storeu_si128((__m128i *) (s + 2 * p), q2);
-
- q3 = _mm_andnot_si128(flat2, q3);
- flat2_q3 = _mm_and_si128(flat2, flat2_q3);
- q3 = _mm_or_si128(flat2_q3, q3);
- _mm_storeu_si128((__m128i *) (s + 3 * p), q3);
-
- q4 = _mm_andnot_si128(flat2, q4);
- flat2_q4 = _mm_and_si128(flat2, flat2_q4);
- q4 = _mm_or_si128(flat2_q4, q4);
- _mm_storeu_si128((__m128i *) (s + 4 * p), q4);
-
- q5 = _mm_andnot_si128(flat2, q5);
- flat2_q5 = _mm_and_si128(flat2, flat2_q5);
- q5 = _mm_or_si128(flat2_q5, q5);
- _mm_storeu_si128((__m128i *) (s + 5 * p), q5);
-
- q6 = _mm_andnot_si128(flat2, q6);
- flat2_q6 = _mm_and_si128(flat2, flat2_q6);
- q6 = _mm_or_si128(flat2_q6, q6);
- _mm_storeu_si128((__m128i *) (s + 6 * p), q6);
- }
-}
diff --git a/thirdparty/libvpx/vpx_dsp/x86/loopfilter_sse2.c b/thirdparty/libvpx/vpx_dsp/x86/loopfilter_sse2.c
deleted file mode 100644
index 739adf31d0..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/loopfilter_sse2.c
+++ /dev/null
@@ -1,1776 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <emmintrin.h> // SSE2
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/emmintrin_compat.h"
-
-static INLINE __m128i abs_diff(__m128i a, __m128i b) {
- return _mm_or_si128(_mm_subs_epu8(a, b), _mm_subs_epu8(b, a));
-}
-
-// filter_mask and hev_mask
-#define FILTER_HEV_MASK do { \
- /* (abs(q1 - q0), abs(p1 - p0) */ \
- __m128i flat = abs_diff(q1p1, q0p0); \
- /* abs(p1 - q1), abs(p0 - q0) */ \
- const __m128i abs_p1q1p0q0 = abs_diff(p1p0, q1q0); \
- __m128i abs_p0q0, abs_p1q1, work; \
- \
- /* const uint8_t hev = hev_mask(thresh, *op1, *op0, *oq0, *oq1); */ \
- hev = _mm_unpacklo_epi8(_mm_max_epu8(flat, _mm_srli_si128(flat, 8)), zero); \
- hev = _mm_cmpgt_epi16(hev, thresh); \
- hev = _mm_packs_epi16(hev, hev); \
- \
- /* const int8_t mask = filter_mask(*limit, *blimit, */ \
- /* p3, p2, p1, p0, q0, q1, q2, q3); */ \
- abs_p0q0 = _mm_adds_epu8(abs_p1q1p0q0, abs_p1q1p0q0); /* abs(p0 - q0) * 2 */\
- abs_p1q1 = _mm_unpackhi_epi8(abs_p1q1p0q0, abs_p1q1p0q0); /* abs(p1 - q1) */\
- abs_p1q1 = _mm_srli_epi16(abs_p1q1, 9); \
- abs_p1q1 = _mm_packs_epi16(abs_p1q1, abs_p1q1); /* abs(p1 - q1) / 2 */ \
- /* abs(p0 - q0) * 2 + abs(p1 - q1) / 2 */ \
- mask = _mm_adds_epu8(abs_p0q0, abs_p1q1); \
- /* abs(p3 - p2), abs(p2 - p1) */ \
- work = abs_diff(p3p2, p2p1); \
- flat = _mm_max_epu8(work, flat); \
- /* abs(q3 - q2), abs(q2 - q1) */ \
- work = abs_diff(q3q2, q2q1); \
- flat = _mm_max_epu8(work, flat); \
- flat = _mm_max_epu8(flat, _mm_srli_si128(flat, 8)); \
- mask = _mm_unpacklo_epi64(mask, flat); \
- mask = _mm_subs_epu8(mask, limit); \
- mask = _mm_cmpeq_epi8(mask, zero); \
- mask = _mm_and_si128(mask, _mm_srli_si128(mask, 8)); \
-} while (0)
-
-#define FILTER4 do { \
- const __m128i t3t4 = _mm_set_epi8(3, 3, 3, 3, 3, 3, 3, 3, \
- 4, 4, 4, 4, 4, 4, 4, 4); \
- const __m128i t80 = _mm_set1_epi8(0x80); \
- __m128i filter, filter2filter1, work; \
- \
- ps1ps0 = _mm_xor_si128(p1p0, t80); /* ^ 0x80 */ \
- qs1qs0 = _mm_xor_si128(q1q0, t80); \
- \
- /* int8_t filter = signed_char_clamp(ps1 - qs1) & hev; */ \
- work = _mm_subs_epi8(ps1ps0, qs1qs0); \
- filter = _mm_and_si128(_mm_srli_si128(work, 8), hev); \
- /* filter = signed_char_clamp(filter + 3 * (qs0 - ps0)) & mask; */ \
- filter = _mm_subs_epi8(filter, work); \
- filter = _mm_subs_epi8(filter, work); \
- filter = _mm_subs_epi8(filter, work); /* + 3 * (qs0 - ps0) */ \
- filter = _mm_and_si128(filter, mask); /* & mask */ \
- filter = _mm_unpacklo_epi64(filter, filter); \
- \
- /* filter1 = signed_char_clamp(filter + 4) >> 3; */ \
- /* filter2 = signed_char_clamp(filter + 3) >> 3; */ \
- filter2filter1 = _mm_adds_epi8(filter, t3t4); /* signed_char_clamp */ \
- filter = _mm_unpackhi_epi8(filter2filter1, filter2filter1); \
- filter2filter1 = _mm_unpacklo_epi8(filter2filter1, filter2filter1); \
- filter2filter1 = _mm_srai_epi16(filter2filter1, 11); /* >> 3 */ \
- filter = _mm_srai_epi16(filter, 11); /* >> 3 */ \
- filter2filter1 = _mm_packs_epi16(filter2filter1, filter); \
- \
- /* filter = ROUND_POWER_OF_TWO(filter1, 1) & ~hev; */ \
- filter = _mm_subs_epi8(filter2filter1, ff); /* + 1 */ \
- filter = _mm_unpacklo_epi8(filter, filter); \
- filter = _mm_srai_epi16(filter, 9); /* round */ \
- filter = _mm_packs_epi16(filter, filter); \
- filter = _mm_andnot_si128(hev, filter); \
- \
- hev = _mm_unpackhi_epi64(filter2filter1, filter); \
- filter2filter1 = _mm_unpacklo_epi64(filter2filter1, filter); \
- \
- /* signed_char_clamp(qs1 - filter), signed_char_clamp(qs0 - filter1) */ \
- qs1qs0 = _mm_subs_epi8(qs1qs0, filter2filter1); \
- /* signed_char_clamp(ps1 + filter), signed_char_clamp(ps0 + filter2) */ \
- ps1ps0 = _mm_adds_epi8(ps1ps0, hev); \
- qs1qs0 = _mm_xor_si128(qs1qs0, t80); /* ^ 0x80 */ \
- ps1ps0 = _mm_xor_si128(ps1ps0, t80); /* ^ 0x80 */ \
-} while (0)
-
-void vpx_lpf_horizontal_4_sse2(uint8_t *s, int p /* pitch */,
- const uint8_t *_blimit, const uint8_t *_limit,
- const uint8_t *_thresh) {
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i limit =
- _mm_unpacklo_epi64(_mm_loadl_epi64((const __m128i *)_blimit),
- _mm_loadl_epi64((const __m128i *)_limit));
- const __m128i thresh =
- _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i *)_thresh), zero);
- const __m128i ff = _mm_cmpeq_epi8(zero, zero);
- __m128i q1p1, q0p0, p3p2, p2p1, p1p0, q3q2, q2q1, q1q0, ps1ps0, qs1qs0;
- __m128i mask, hev;
-
- p3p2 = _mm_unpacklo_epi64(_mm_loadl_epi64((__m128i *)(s - 3 * p)),
- _mm_loadl_epi64((__m128i *)(s - 4 * p)));
- q1p1 = _mm_unpacklo_epi64(_mm_loadl_epi64((__m128i *)(s - 2 * p)),
- _mm_loadl_epi64((__m128i *)(s + 1 * p)));
- q0p0 = _mm_unpacklo_epi64(_mm_loadl_epi64((__m128i *)(s - 1 * p)),
- _mm_loadl_epi64((__m128i *)(s + 0 * p)));
- q3q2 = _mm_unpacklo_epi64(_mm_loadl_epi64((__m128i *)(s + 2 * p)),
- _mm_loadl_epi64((__m128i *)(s + 3 * p)));
- p1p0 = _mm_unpacklo_epi64(q0p0, q1p1);
- p2p1 = _mm_unpacklo_epi64(q1p1, p3p2);
- q1q0 = _mm_unpackhi_epi64(q0p0, q1p1);
- q2q1 = _mm_unpacklo_epi64(_mm_srli_si128(q1p1, 8), q3q2);
-
- FILTER_HEV_MASK;
- FILTER4;
-
- _mm_storeh_pi((__m64 *)(s - 2 * p), _mm_castsi128_ps(ps1ps0)); // *op1
- _mm_storel_epi64((__m128i *)(s - 1 * p), ps1ps0); // *op0
- _mm_storel_epi64((__m128i *)(s + 0 * p), qs1qs0); // *oq0
- _mm_storeh_pi((__m64 *)(s + 1 * p), _mm_castsi128_ps(qs1qs0)); // *oq1
-}
-
-void vpx_lpf_vertical_4_sse2(uint8_t *s, int p /* pitch */,
- const uint8_t *_blimit, const uint8_t *_limit,
- const uint8_t *_thresh) {
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i limit =
- _mm_unpacklo_epi64(_mm_loadl_epi64((const __m128i *)_blimit),
- _mm_loadl_epi64((const __m128i *)_limit));
- const __m128i thresh =
- _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i *)_thresh), zero);
- const __m128i ff = _mm_cmpeq_epi8(zero, zero);
- __m128i x0, x1, x2, x3;
- __m128i q1p1, q0p0, p3p2, p2p1, p1p0, q3q2, q2q1, q1q0, ps1ps0, qs1qs0;
- __m128i mask, hev;
-
- // 00 10 01 11 02 12 03 13 04 14 05 15 06 16 07 17
- q1q0 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(s + 0 * p - 4)),
- _mm_loadl_epi64((__m128i *)(s + 1 * p - 4)));
-
- // 20 30 21 31 22 32 23 33 24 34 25 35 26 36 27 37
- x1 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(s + 2 * p - 4)),
- _mm_loadl_epi64((__m128i *)(s + 3 * p - 4)));
-
- // 40 50 41 51 42 52 43 53 44 54 45 55 46 56 47 57
- x2 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(s + 4 * p - 4)),
- _mm_loadl_epi64((__m128i *)(s + 5 * p - 4)));
-
- // 60 70 61 71 62 72 63 73 64 74 65 75 66 76 67 77
- x3 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(s + 6 * p - 4)),
- _mm_loadl_epi64((__m128i *)(s + 7 * p - 4)));
-
- // Transpose 8x8
- // 00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33
- p1p0 = _mm_unpacklo_epi16(q1q0, x1);
- // 40 50 60 70 41 51 61 71 42 52 62 72 43 53 63 73
- x0 = _mm_unpacklo_epi16(x2, x3);
- // 00 10 20 30 40 50 60 70 01 11 21 31 41 51 61 71
- p3p2 = _mm_unpacklo_epi32(p1p0, x0);
- // 02 12 22 32 42 52 62 72 03 13 23 33 43 53 63 73
- p1p0 = _mm_unpackhi_epi32(p1p0, x0);
- p3p2 = _mm_unpackhi_epi64(p3p2, _mm_slli_si128(p3p2, 8)); // swap lo and high
- p1p0 = _mm_unpackhi_epi64(p1p0, _mm_slli_si128(p1p0, 8)); // swap lo and high
-
- // 04 14 24 34 05 15 25 35 06 16 26 36 07 17 27 37
- q1q0 = _mm_unpackhi_epi16(q1q0, x1);
- // 44 54 64 74 45 55 65 75 46 56 66 76 47 57 67 77
- x2 = _mm_unpackhi_epi16(x2, x3);
- // 06 16 26 36 46 56 66 76 07 17 27 37 47 57 67 77
- q3q2 = _mm_unpackhi_epi32(q1q0, x2);
- // 04 14 24 34 44 54 64 74 05 15 25 35 45 55 65 75
- q1q0 = _mm_unpacklo_epi32(q1q0, x2);
-
- q0p0 = _mm_unpacklo_epi64(p1p0, q1q0);
- q1p1 = _mm_unpackhi_epi64(p1p0, q1q0);
- p1p0 = _mm_unpacklo_epi64(q0p0, q1p1);
- p2p1 = _mm_unpacklo_epi64(q1p1, p3p2);
- q2q1 = _mm_unpacklo_epi64(_mm_srli_si128(q1p1, 8), q3q2);
-
- FILTER_HEV_MASK;
- FILTER4;
-
- // Transpose 8x4 to 4x8
- // qs1qs0: 20 21 22 23 24 25 26 27 30 31 32 33 34 34 36 37
- // ps1ps0: 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07
- // 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17
- ps1ps0 = _mm_unpackhi_epi64(ps1ps0, _mm_slli_si128(ps1ps0, 8));
- // 10 30 11 31 12 32 13 33 14 34 15 35 16 36 17 37
- x0 = _mm_unpackhi_epi8(ps1ps0, qs1qs0);
- // 00 20 01 21 02 22 03 23 04 24 05 25 06 26 07 27
- ps1ps0 = _mm_unpacklo_epi8(ps1ps0, qs1qs0);
- // 04 14 24 34 05 15 25 35 06 16 26 36 07 17 27 37
- qs1qs0 = _mm_unpackhi_epi8(ps1ps0, x0);
- // 00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33
- ps1ps0 = _mm_unpacklo_epi8(ps1ps0, x0);
-
- *(int *)(s + 0 * p - 2) = _mm_cvtsi128_si32(ps1ps0);
- ps1ps0 = _mm_srli_si128(ps1ps0, 4);
- *(int *)(s + 1 * p - 2) = _mm_cvtsi128_si32(ps1ps0);
- ps1ps0 = _mm_srli_si128(ps1ps0, 4);
- *(int *)(s + 2 * p - 2) = _mm_cvtsi128_si32(ps1ps0);
- ps1ps0 = _mm_srli_si128(ps1ps0, 4);
- *(int *)(s + 3 * p - 2) = _mm_cvtsi128_si32(ps1ps0);
-
- *(int *)(s + 4 * p - 2) = _mm_cvtsi128_si32(qs1qs0);
- qs1qs0 = _mm_srli_si128(qs1qs0, 4);
- *(int *)(s + 5 * p - 2) = _mm_cvtsi128_si32(qs1qs0);
- qs1qs0 = _mm_srli_si128(qs1qs0, 4);
- *(int *)(s + 6 * p - 2) = _mm_cvtsi128_si32(qs1qs0);
- qs1qs0 = _mm_srli_si128(qs1qs0, 4);
- *(int *)(s + 7 * p - 2) = _mm_cvtsi128_si32(qs1qs0);
-}
-
-void vpx_lpf_horizontal_edge_8_sse2(unsigned char *s, int p,
- const unsigned char *_blimit,
- const unsigned char *_limit,
- const unsigned char *_thresh) {
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i one = _mm_set1_epi8(1);
- const __m128i blimit = _mm_load_si128((const __m128i *)_blimit);
- const __m128i limit = _mm_load_si128((const __m128i *)_limit);
- const __m128i thresh = _mm_load_si128((const __m128i *)_thresh);
- __m128i mask, hev, flat, flat2;
- __m128i q7p7, q6p6, q5p5, q4p4, q3p3, q2p2, q1p1, q0p0, p0q0, p1q1;
- __m128i abs_p1p0;
-
- q4p4 = _mm_loadl_epi64((__m128i *)(s - 5 * p));
- q4p4 = _mm_castps_si128(_mm_loadh_pi(_mm_castsi128_ps(q4p4),
- (__m64 *)(s + 4 * p)));
- q3p3 = _mm_loadl_epi64((__m128i *)(s - 4 * p));
- q3p3 = _mm_castps_si128(_mm_loadh_pi(_mm_castsi128_ps(q3p3),
- (__m64 *)(s + 3 * p)));
- q2p2 = _mm_loadl_epi64((__m128i *)(s - 3 * p));
- q2p2 = _mm_castps_si128(_mm_loadh_pi(_mm_castsi128_ps(q2p2),
- (__m64 *)(s + 2 * p)));
- q1p1 = _mm_loadl_epi64((__m128i *)(s - 2 * p));
- q1p1 = _mm_castps_si128(_mm_loadh_pi(_mm_castsi128_ps(q1p1),
- (__m64 *)(s + 1 * p)));
- p1q1 = _mm_shuffle_epi32(q1p1, 78);
- q0p0 = _mm_loadl_epi64((__m128i *)(s - 1 * p));
- q0p0 = _mm_castps_si128(_mm_loadh_pi(_mm_castsi128_ps(q0p0),
- (__m64 *)(s - 0 * p)));
- p0q0 = _mm_shuffle_epi32(q0p0, 78);
-
- {
- __m128i abs_p1q1, abs_p0q0, abs_q1q0, fe, ff, work;
- abs_p1p0 = abs_diff(q1p1, q0p0);
- abs_q1q0 = _mm_srli_si128(abs_p1p0, 8);
- fe = _mm_set1_epi8(0xfe);
- ff = _mm_cmpeq_epi8(abs_p1p0, abs_p1p0);
- abs_p0q0 = abs_diff(q0p0, p0q0);
- abs_p1q1 = abs_diff(q1p1, p1q1);
- flat = _mm_max_epu8(abs_p1p0, abs_q1q0);
- hev = _mm_subs_epu8(flat, thresh);
- hev = _mm_xor_si128(_mm_cmpeq_epi8(hev, zero), ff);
-
- abs_p0q0 =_mm_adds_epu8(abs_p0q0, abs_p0q0);
- abs_p1q1 = _mm_srli_epi16(_mm_and_si128(abs_p1q1, fe), 1);
- mask = _mm_subs_epu8(_mm_adds_epu8(abs_p0q0, abs_p1q1), blimit);
- mask = _mm_xor_si128(_mm_cmpeq_epi8(mask, zero), ff);
- // mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit) * -1;
- mask = _mm_max_epu8(abs_p1p0, mask);
- // mask |= (abs(p1 - p0) > limit) * -1;
- // mask |= (abs(q1 - q0) > limit) * -1;
-
- work = _mm_max_epu8(abs_diff(q2p2, q1p1),
- abs_diff(q3p3, q2p2));
- mask = _mm_max_epu8(work, mask);
- mask = _mm_max_epu8(mask, _mm_srli_si128(mask, 8));
- mask = _mm_subs_epu8(mask, limit);
- mask = _mm_cmpeq_epi8(mask, zero);
- }
-
- // lp filter
- {
- const __m128i t4 = _mm_set1_epi8(4);
- const __m128i t3 = _mm_set1_epi8(3);
- const __m128i t80 = _mm_set1_epi8(0x80);
- const __m128i t1 = _mm_set1_epi16(0x1);
- __m128i qs1ps1 = _mm_xor_si128(q1p1, t80);
- __m128i qs0ps0 = _mm_xor_si128(q0p0, t80);
- __m128i qs0 = _mm_xor_si128(p0q0, t80);
- __m128i qs1 = _mm_xor_si128(p1q1, t80);
- __m128i filt;
- __m128i work_a;
- __m128i filter1, filter2;
- __m128i flat2_q6p6, flat2_q5p5, flat2_q4p4, flat2_q3p3, flat2_q2p2;
- __m128i flat2_q1p1, flat2_q0p0, flat_q2p2, flat_q1p1, flat_q0p0;
-
- filt = _mm_and_si128(_mm_subs_epi8(qs1ps1, qs1), hev);
- work_a = _mm_subs_epi8(qs0, qs0ps0);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- // (vpx_filter + 3 * (qs0 - ps0)) & mask
- filt = _mm_and_si128(filt, mask);
-
- filter1 = _mm_adds_epi8(filt, t4);
- filter2 = _mm_adds_epi8(filt, t3);
-
- filter1 = _mm_unpacklo_epi8(zero, filter1);
- filter1 = _mm_srai_epi16(filter1, 0xB);
- filter2 = _mm_unpacklo_epi8(zero, filter2);
- filter2 = _mm_srai_epi16(filter2, 0xB);
-
- // Filter1 >> 3
- filt = _mm_packs_epi16(filter2, _mm_subs_epi16(zero, filter1));
- qs0ps0 = _mm_xor_si128(_mm_adds_epi8(qs0ps0, filt), t80);
-
- // filt >> 1
- filt = _mm_adds_epi16(filter1, t1);
- filt = _mm_srai_epi16(filt, 1);
- filt = _mm_andnot_si128(_mm_srai_epi16(_mm_unpacklo_epi8(zero, hev), 0x8),
- filt);
- filt = _mm_packs_epi16(filt, _mm_subs_epi16(zero, filt));
- qs1ps1 = _mm_xor_si128(_mm_adds_epi8(qs1ps1, filt), t80);
- // loopfilter done
-
- {
- __m128i work;
- flat = _mm_max_epu8(abs_diff(q2p2, q0p0), abs_diff(q3p3, q0p0));
- flat = _mm_max_epu8(abs_p1p0, flat);
- flat = _mm_max_epu8(flat, _mm_srli_si128(flat, 8));
- flat = _mm_subs_epu8(flat, one);
- flat = _mm_cmpeq_epi8(flat, zero);
- flat = _mm_and_si128(flat, mask);
-
- q5p5 = _mm_loadl_epi64((__m128i *)(s - 6 * p));
- q5p5 = _mm_castps_si128(_mm_loadh_pi(_mm_castsi128_ps(q5p5),
- (__m64 *)(s + 5 * p)));
-
- q6p6 = _mm_loadl_epi64((__m128i *)(s - 7 * p));
- q6p6 = _mm_castps_si128(_mm_loadh_pi(_mm_castsi128_ps(q6p6),
- (__m64 *)(s + 6 * p)));
- flat2 = _mm_max_epu8(abs_diff(q4p4, q0p0), abs_diff(q5p5, q0p0));
-
- q7p7 = _mm_loadl_epi64((__m128i *)(s - 8 * p));
- q7p7 = _mm_castps_si128(_mm_loadh_pi(_mm_castsi128_ps(q7p7),
- (__m64 *)(s + 7 * p)));
- work = _mm_max_epu8(abs_diff(q6p6, q0p0), abs_diff(q7p7, q0p0));
- flat2 = _mm_max_epu8(work, flat2);
- flat2 = _mm_max_epu8(flat2, _mm_srli_si128(flat2, 8));
- flat2 = _mm_subs_epu8(flat2, one);
- flat2 = _mm_cmpeq_epi8(flat2, zero);
- flat2 = _mm_and_si128(flat2, flat); // flat2 & flat & mask
- }
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // flat and wide flat calculations
- {
- const __m128i eight = _mm_set1_epi16(8);
- const __m128i four = _mm_set1_epi16(4);
- __m128i p7_16, p6_16, p5_16, p4_16, p3_16, p2_16, p1_16, p0_16;
- __m128i q7_16, q6_16, q5_16, q4_16, q3_16, q2_16, q1_16, q0_16;
- __m128i pixelFilter_p, pixelFilter_q;
- __m128i pixetFilter_p2p1p0, pixetFilter_q2q1q0;
- __m128i sum_p7, sum_q7, sum_p3, sum_q3, res_p, res_q;
-
- p7_16 = _mm_unpacklo_epi8(q7p7, zero);;
- p6_16 = _mm_unpacklo_epi8(q6p6, zero);
- p5_16 = _mm_unpacklo_epi8(q5p5, zero);
- p4_16 = _mm_unpacklo_epi8(q4p4, zero);
- p3_16 = _mm_unpacklo_epi8(q3p3, zero);
- p2_16 = _mm_unpacklo_epi8(q2p2, zero);
- p1_16 = _mm_unpacklo_epi8(q1p1, zero);
- p0_16 = _mm_unpacklo_epi8(q0p0, zero);
- q0_16 = _mm_unpackhi_epi8(q0p0, zero);
- q1_16 = _mm_unpackhi_epi8(q1p1, zero);
- q2_16 = _mm_unpackhi_epi8(q2p2, zero);
- q3_16 = _mm_unpackhi_epi8(q3p3, zero);
- q4_16 = _mm_unpackhi_epi8(q4p4, zero);
- q5_16 = _mm_unpackhi_epi8(q5p5, zero);
- q6_16 = _mm_unpackhi_epi8(q6p6, zero);
- q7_16 = _mm_unpackhi_epi8(q7p7, zero);
-
- pixelFilter_p = _mm_add_epi16(_mm_add_epi16(p6_16, p5_16),
- _mm_add_epi16(p4_16, p3_16));
- pixelFilter_q = _mm_add_epi16(_mm_add_epi16(q6_16, q5_16),
- _mm_add_epi16(q4_16, q3_16));
-
- pixetFilter_p2p1p0 = _mm_add_epi16(p0_16, _mm_add_epi16(p2_16, p1_16));
- pixelFilter_p = _mm_add_epi16(pixelFilter_p, pixetFilter_p2p1p0);
-
- pixetFilter_q2q1q0 = _mm_add_epi16(q0_16, _mm_add_epi16(q2_16, q1_16));
- pixelFilter_q = _mm_add_epi16(pixelFilter_q, pixetFilter_q2q1q0);
- pixelFilter_p = _mm_add_epi16(eight, _mm_add_epi16(pixelFilter_p,
- pixelFilter_q));
- pixetFilter_p2p1p0 = _mm_add_epi16(four,
- _mm_add_epi16(pixetFilter_p2p1p0,
- pixetFilter_q2q1q0));
- res_p = _mm_srli_epi16(_mm_add_epi16(pixelFilter_p,
- _mm_add_epi16(p7_16, p0_16)), 4);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixelFilter_p,
- _mm_add_epi16(q7_16, q0_16)), 4);
- flat2_q0p0 = _mm_packus_epi16(res_p, res_q);
- res_p = _mm_srli_epi16(_mm_add_epi16(pixetFilter_p2p1p0,
- _mm_add_epi16(p3_16, p0_16)), 3);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixetFilter_p2p1p0,
- _mm_add_epi16(q3_16, q0_16)), 3);
-
- flat_q0p0 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(p7_16, p7_16);
- sum_q7 = _mm_add_epi16(q7_16, q7_16);
- sum_p3 = _mm_add_epi16(p3_16, p3_16);
- sum_q3 = _mm_add_epi16(q3_16, q3_16);
-
- pixelFilter_q = _mm_sub_epi16(pixelFilter_p, p6_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q6_16);
- res_p = _mm_srli_epi16(_mm_add_epi16(pixelFilter_p,
- _mm_add_epi16(sum_p7, p1_16)), 4);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixelFilter_q,
- _mm_add_epi16(sum_q7, q1_16)), 4);
- flat2_q1p1 = _mm_packus_epi16(res_p, res_q);
-
- pixetFilter_q2q1q0 = _mm_sub_epi16(pixetFilter_p2p1p0, p2_16);
- pixetFilter_p2p1p0 = _mm_sub_epi16(pixetFilter_p2p1p0, q2_16);
- res_p = _mm_srli_epi16(_mm_add_epi16(pixetFilter_p2p1p0,
- _mm_add_epi16(sum_p3, p1_16)), 3);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixetFilter_q2q1q0,
- _mm_add_epi16(sum_q3, q1_16)), 3);
- flat_q1p1 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- sum_p3 = _mm_add_epi16(sum_p3, p3_16);
- sum_q3 = _mm_add_epi16(sum_q3, q3_16);
-
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q5_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p5_16);
- res_p = _mm_srli_epi16(_mm_add_epi16(pixelFilter_p,
- _mm_add_epi16(sum_p7, p2_16)), 4);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixelFilter_q,
- _mm_add_epi16(sum_q7, q2_16)), 4);
- flat2_q2p2 = _mm_packus_epi16(res_p, res_q);
-
- pixetFilter_p2p1p0 = _mm_sub_epi16(pixetFilter_p2p1p0, q1_16);
- pixetFilter_q2q1q0 = _mm_sub_epi16(pixetFilter_q2q1q0, p1_16);
-
- res_p = _mm_srli_epi16(_mm_add_epi16(pixetFilter_p2p1p0,
- _mm_add_epi16(sum_p3, p2_16)), 3);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixetFilter_q2q1q0,
- _mm_add_epi16(sum_q3, q2_16)), 3);
- flat_q2p2 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q4_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p4_16);
- res_p = _mm_srli_epi16(_mm_add_epi16(pixelFilter_p,
- _mm_add_epi16(sum_p7, p3_16)), 4);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixelFilter_q,
- _mm_add_epi16(sum_q7, q3_16)), 4);
- flat2_q3p3 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q3_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p3_16);
- res_p = _mm_srli_epi16(_mm_add_epi16(pixelFilter_p,
- _mm_add_epi16(sum_p7, p4_16)), 4);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixelFilter_q,
- _mm_add_epi16(sum_q7, q4_16)), 4);
- flat2_q4p4 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q2_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p2_16);
- res_p = _mm_srli_epi16(_mm_add_epi16(pixelFilter_p,
- _mm_add_epi16(sum_p7, p5_16)), 4);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixelFilter_q,
- _mm_add_epi16(sum_q7, q5_16)), 4);
- flat2_q5p5 = _mm_packus_epi16(res_p, res_q);
-
- sum_p7 = _mm_add_epi16(sum_p7, p7_16);
- sum_q7 = _mm_add_epi16(sum_q7, q7_16);
- pixelFilter_p = _mm_sub_epi16(pixelFilter_p, q1_16);
- pixelFilter_q = _mm_sub_epi16(pixelFilter_q, p1_16);
- res_p = _mm_srli_epi16(_mm_add_epi16(pixelFilter_p,
- _mm_add_epi16(sum_p7, p6_16)), 4);
- res_q = _mm_srli_epi16(_mm_add_epi16(pixelFilter_q,
- _mm_add_epi16(sum_q7, q6_16)), 4);
- flat2_q6p6 = _mm_packus_epi16(res_p, res_q);
- }
- // wide flat
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- flat = _mm_shuffle_epi32(flat, 68);
- flat2 = _mm_shuffle_epi32(flat2, 68);
-
- q2p2 = _mm_andnot_si128(flat, q2p2);
- flat_q2p2 = _mm_and_si128(flat, flat_q2p2);
- q2p2 = _mm_or_si128(q2p2, flat_q2p2);
-
- qs1ps1 = _mm_andnot_si128(flat, qs1ps1);
- flat_q1p1 = _mm_and_si128(flat, flat_q1p1);
- q1p1 = _mm_or_si128(qs1ps1, flat_q1p1);
-
- qs0ps0 = _mm_andnot_si128(flat, qs0ps0);
- flat_q0p0 = _mm_and_si128(flat, flat_q0p0);
- q0p0 = _mm_or_si128(qs0ps0, flat_q0p0);
-
- q6p6 = _mm_andnot_si128(flat2, q6p6);
- flat2_q6p6 = _mm_and_si128(flat2, flat2_q6p6);
- q6p6 = _mm_or_si128(q6p6, flat2_q6p6);
- _mm_storel_epi64((__m128i *)(s - 7 * p), q6p6);
- _mm_storeh_pi((__m64 *)(s + 6 * p), _mm_castsi128_ps(q6p6));
-
- q5p5 = _mm_andnot_si128(flat2, q5p5);
- flat2_q5p5 = _mm_and_si128(flat2, flat2_q5p5);
- q5p5 = _mm_or_si128(q5p5, flat2_q5p5);
- _mm_storel_epi64((__m128i *)(s - 6 * p), q5p5);
- _mm_storeh_pi((__m64 *)(s + 5 * p), _mm_castsi128_ps(q5p5));
-
- q4p4 = _mm_andnot_si128(flat2, q4p4);
- flat2_q4p4 = _mm_and_si128(flat2, flat2_q4p4);
- q4p4 = _mm_or_si128(q4p4, flat2_q4p4);
- _mm_storel_epi64((__m128i *)(s - 5 * p), q4p4);
- _mm_storeh_pi((__m64 *)(s + 4 * p), _mm_castsi128_ps(q4p4));
-
- q3p3 = _mm_andnot_si128(flat2, q3p3);
- flat2_q3p3 = _mm_and_si128(flat2, flat2_q3p3);
- q3p3 = _mm_or_si128(q3p3, flat2_q3p3);
- _mm_storel_epi64((__m128i *)(s - 4 * p), q3p3);
- _mm_storeh_pi((__m64 *)(s + 3 * p), _mm_castsi128_ps(q3p3));
-
- q2p2 = _mm_andnot_si128(flat2, q2p2);
- flat2_q2p2 = _mm_and_si128(flat2, flat2_q2p2);
- q2p2 = _mm_or_si128(q2p2, flat2_q2p2);
- _mm_storel_epi64((__m128i *)(s - 3 * p), q2p2);
- _mm_storeh_pi((__m64 *)(s + 2 * p), _mm_castsi128_ps(q2p2));
-
- q1p1 = _mm_andnot_si128(flat2, q1p1);
- flat2_q1p1 = _mm_and_si128(flat2, flat2_q1p1);
- q1p1 = _mm_or_si128(q1p1, flat2_q1p1);
- _mm_storel_epi64((__m128i *)(s - 2 * p), q1p1);
- _mm_storeh_pi((__m64 *)(s + 1 * p), _mm_castsi128_ps(q1p1));
-
- q0p0 = _mm_andnot_si128(flat2, q0p0);
- flat2_q0p0 = _mm_and_si128(flat2, flat2_q0p0);
- q0p0 = _mm_or_si128(q0p0, flat2_q0p0);
- _mm_storel_epi64((__m128i *)(s - 1 * p), q0p0);
- _mm_storeh_pi((__m64 *)(s - 0 * p), _mm_castsi128_ps(q0p0));
- }
-}
-
-static INLINE __m128i filter_add2_sub2(const __m128i *const total,
- const __m128i *const a1,
- const __m128i *const a2,
- const __m128i *const s1,
- const __m128i *const s2) {
- __m128i x = _mm_add_epi16(*a1, *total);
- x = _mm_add_epi16(_mm_sub_epi16(x, _mm_add_epi16(*s1, *s2)), *a2);
- return x;
-}
-
-static INLINE __m128i filter8_mask(const __m128i *const flat,
- const __m128i *const other_filt,
- const __m128i *const f8_lo,
- const __m128i *const f8_hi) {
- const __m128i f8 = _mm_packus_epi16(_mm_srli_epi16(*f8_lo, 3),
- _mm_srli_epi16(*f8_hi, 3));
- const __m128i result = _mm_and_si128(*flat, f8);
- return _mm_or_si128(_mm_andnot_si128(*flat, *other_filt), result);
-}
-
-static INLINE __m128i filter16_mask(const __m128i *const flat,
- const __m128i *const other_filt,
- const __m128i *const f_lo,
- const __m128i *const f_hi) {
- const __m128i f = _mm_packus_epi16(_mm_srli_epi16(*f_lo, 4),
- _mm_srli_epi16(*f_hi, 4));
- const __m128i result = _mm_and_si128(*flat, f);
- return _mm_or_si128(_mm_andnot_si128(*flat, *other_filt), result);
-}
-
-void vpx_lpf_horizontal_edge_16_sse2(unsigned char *s, int p,
- const unsigned char *_blimit,
- const unsigned char *_limit,
- const unsigned char *_thresh) {
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i one = _mm_set1_epi8(1);
- const __m128i blimit = _mm_load_si128((const __m128i *)_blimit);
- const __m128i limit = _mm_load_si128((const __m128i *)_limit);
- const __m128i thresh = _mm_load_si128((const __m128i *)_thresh);
- __m128i mask, hev, flat, flat2;
- __m128i p7, p6, p5;
- __m128i p4, p3, p2, p1, p0, q0, q1, q2, q3, q4;
- __m128i q5, q6, q7;
-
- __m128i op2, op1, op0, oq0, oq1, oq2;
-
- __m128i max_abs_p1p0q1q0;
-
- p7 = _mm_loadu_si128((__m128i *)(s - 8 * p));
- p6 = _mm_loadu_si128((__m128i *)(s - 7 * p));
- p5 = _mm_loadu_si128((__m128i *)(s - 6 * p));
- p4 = _mm_loadu_si128((__m128i *)(s - 5 * p));
- p3 = _mm_loadu_si128((__m128i *)(s - 4 * p));
- p2 = _mm_loadu_si128((__m128i *)(s - 3 * p));
- p1 = _mm_loadu_si128((__m128i *)(s - 2 * p));
- p0 = _mm_loadu_si128((__m128i *)(s - 1 * p));
- q0 = _mm_loadu_si128((__m128i *)(s - 0 * p));
- q1 = _mm_loadu_si128((__m128i *)(s + 1 * p));
- q2 = _mm_loadu_si128((__m128i *)(s + 2 * p));
- q3 = _mm_loadu_si128((__m128i *)(s + 3 * p));
- q4 = _mm_loadu_si128((__m128i *)(s + 4 * p));
- q5 = _mm_loadu_si128((__m128i *)(s + 5 * p));
- q6 = _mm_loadu_si128((__m128i *)(s + 6 * p));
- q7 = _mm_loadu_si128((__m128i *)(s + 7 * p));
-
- {
- const __m128i abs_p1p0 = abs_diff(p1, p0);
- const __m128i abs_q1q0 = abs_diff(q1, q0);
- const __m128i fe = _mm_set1_epi8(0xfe);
- const __m128i ff = _mm_cmpeq_epi8(zero, zero);
- __m128i abs_p0q0 = abs_diff(p0, q0);
- __m128i abs_p1q1 = abs_diff(p1, q1);
- __m128i work;
- max_abs_p1p0q1q0 = _mm_max_epu8(abs_p1p0, abs_q1q0);
-
- abs_p0q0 =_mm_adds_epu8(abs_p0q0, abs_p0q0);
- abs_p1q1 = _mm_srli_epi16(_mm_and_si128(abs_p1q1, fe), 1);
- mask = _mm_subs_epu8(_mm_adds_epu8(abs_p0q0, abs_p1q1), blimit);
- mask = _mm_xor_si128(_mm_cmpeq_epi8(mask, zero), ff);
- // mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit) * -1;
- mask = _mm_max_epu8(max_abs_p1p0q1q0, mask);
- // mask |= (abs(p1 - p0) > limit) * -1;
- // mask |= (abs(q1 - q0) > limit) * -1;
- work = _mm_max_epu8(abs_diff(p2, p1), abs_diff(p3, p2));
- mask = _mm_max_epu8(work, mask);
- work = _mm_max_epu8(abs_diff(q2, q1), abs_diff(q3, q2));
- mask = _mm_max_epu8(work, mask);
- mask = _mm_subs_epu8(mask, limit);
- mask = _mm_cmpeq_epi8(mask, zero);
- }
-
- {
- __m128i work;
- work = _mm_max_epu8(abs_diff(p2, p0), abs_diff(q2, q0));
- flat = _mm_max_epu8(work, max_abs_p1p0q1q0);
- work = _mm_max_epu8(abs_diff(p3, p0), abs_diff(q3, q0));
- flat = _mm_max_epu8(work, flat);
- work = _mm_max_epu8(abs_diff(p4, p0), abs_diff(q4, q0));
- flat = _mm_subs_epu8(flat, one);
- flat = _mm_cmpeq_epi8(flat, zero);
- flat = _mm_and_si128(flat, mask);
- flat2 = _mm_max_epu8(abs_diff(p5, p0), abs_diff(q5, q0));
- flat2 = _mm_max_epu8(work, flat2);
- work = _mm_max_epu8(abs_diff(p6, p0), abs_diff(q6, q0));
- flat2 = _mm_max_epu8(work, flat2);
- work = _mm_max_epu8(abs_diff(p7, p0), abs_diff(q7, q0));
- flat2 = _mm_max_epu8(work, flat2);
- flat2 = _mm_subs_epu8(flat2, one);
- flat2 = _mm_cmpeq_epi8(flat2, zero);
- flat2 = _mm_and_si128(flat2, flat); // flat2 & flat & mask
- }
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // filter4
- {
- const __m128i t4 = _mm_set1_epi8(4);
- const __m128i t3 = _mm_set1_epi8(3);
- const __m128i t80 = _mm_set1_epi8(0x80);
- const __m128i te0 = _mm_set1_epi8(0xe0);
- const __m128i t1f = _mm_set1_epi8(0x1f);
- const __m128i t1 = _mm_set1_epi8(0x1);
- const __m128i t7f = _mm_set1_epi8(0x7f);
- const __m128i ff = _mm_cmpeq_epi8(t4, t4);
-
- __m128i filt;
- __m128i work_a;
- __m128i filter1, filter2;
-
- op1 = _mm_xor_si128(p1, t80);
- op0 = _mm_xor_si128(p0, t80);
- oq0 = _mm_xor_si128(q0, t80);
- oq1 = _mm_xor_si128(q1, t80);
-
- hev = _mm_subs_epu8(max_abs_p1p0q1q0, thresh);
- hev = _mm_xor_si128(_mm_cmpeq_epi8(hev, zero), ff);
- filt = _mm_and_si128(_mm_subs_epi8(op1, oq1), hev);
-
- work_a = _mm_subs_epi8(oq0, op0);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- // (vpx_filter + 3 * (qs0 - ps0)) & mask
- filt = _mm_and_si128(filt, mask);
- filter1 = _mm_adds_epi8(filt, t4);
- filter2 = _mm_adds_epi8(filt, t3);
-
- // Filter1 >> 3
- work_a = _mm_cmpgt_epi8(zero, filter1);
- filter1 = _mm_srli_epi16(filter1, 3);
- work_a = _mm_and_si128(work_a, te0);
- filter1 = _mm_and_si128(filter1, t1f);
- filter1 = _mm_or_si128(filter1, work_a);
- oq0 = _mm_xor_si128(_mm_subs_epi8(oq0, filter1), t80);
-
- // Filter2 >> 3
- work_a = _mm_cmpgt_epi8(zero, filter2);
- filter2 = _mm_srli_epi16(filter2, 3);
- work_a = _mm_and_si128(work_a, te0);
- filter2 = _mm_and_si128(filter2, t1f);
- filter2 = _mm_or_si128(filter2, work_a);
- op0 = _mm_xor_si128(_mm_adds_epi8(op0, filter2), t80);
-
- // filt >> 1
- filt = _mm_adds_epi8(filter1, t1);
- work_a = _mm_cmpgt_epi8(zero, filt);
- filt = _mm_srli_epi16(filt, 1);
- work_a = _mm_and_si128(work_a, t80);
- filt = _mm_and_si128(filt, t7f);
- filt = _mm_or_si128(filt, work_a);
- filt = _mm_andnot_si128(hev, filt);
- op1 = _mm_xor_si128(_mm_adds_epi8(op1, filt), t80);
- oq1 = _mm_xor_si128(_mm_subs_epi8(oq1, filt), t80);
- // loopfilter done
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // filter8
- {
- const __m128i four = _mm_set1_epi16(4);
- const __m128i p3_lo = _mm_unpacklo_epi8(p3, zero);
- const __m128i p2_lo = _mm_unpacklo_epi8(p2, zero);
- const __m128i p1_lo = _mm_unpacklo_epi8(p1, zero);
- const __m128i p0_lo = _mm_unpacklo_epi8(p0, zero);
- const __m128i q0_lo = _mm_unpacklo_epi8(q0, zero);
- const __m128i q1_lo = _mm_unpacklo_epi8(q1, zero);
- const __m128i q2_lo = _mm_unpacklo_epi8(q2, zero);
- const __m128i q3_lo = _mm_unpacklo_epi8(q3, zero);
-
- const __m128i p3_hi = _mm_unpackhi_epi8(p3, zero);
- const __m128i p2_hi = _mm_unpackhi_epi8(p2, zero);
- const __m128i p1_hi = _mm_unpackhi_epi8(p1, zero);
- const __m128i p0_hi = _mm_unpackhi_epi8(p0, zero);
- const __m128i q0_hi = _mm_unpackhi_epi8(q0, zero);
- const __m128i q1_hi = _mm_unpackhi_epi8(q1, zero);
- const __m128i q2_hi = _mm_unpackhi_epi8(q2, zero);
- const __m128i q3_hi = _mm_unpackhi_epi8(q3, zero);
- __m128i f8_lo, f8_hi;
-
- f8_lo = _mm_add_epi16(_mm_add_epi16(p3_lo, four),
- _mm_add_epi16(p3_lo, p2_lo));
- f8_lo = _mm_add_epi16(_mm_add_epi16(p3_lo, f8_lo),
- _mm_add_epi16(p2_lo, p1_lo));
- f8_lo = _mm_add_epi16(_mm_add_epi16(p0_lo, q0_lo), f8_lo);
-
- f8_hi = _mm_add_epi16(_mm_add_epi16(p3_hi, four),
- _mm_add_epi16(p3_hi, p2_hi));
- f8_hi = _mm_add_epi16(_mm_add_epi16(p3_hi, f8_hi),
- _mm_add_epi16(p2_hi, p1_hi));
- f8_hi = _mm_add_epi16(_mm_add_epi16(p0_hi, q0_hi), f8_hi);
-
- op2 = filter8_mask(&flat, &p2, &f8_lo, &f8_hi);
-
- f8_lo = filter_add2_sub2(&f8_lo, &q1_lo, &p1_lo, &p2_lo, &p3_lo);
- f8_hi = filter_add2_sub2(&f8_hi, &q1_hi, &p1_hi, &p2_hi, &p3_hi);
- op1 = filter8_mask(&flat, &op1, &f8_lo, &f8_hi);
-
- f8_lo = filter_add2_sub2(&f8_lo, &q2_lo, &p0_lo, &p1_lo, &p3_lo);
- f8_hi = filter_add2_sub2(&f8_hi, &q2_hi, &p0_hi, &p1_hi, &p3_hi);
- op0 = filter8_mask(&flat, &op0, &f8_lo, &f8_hi);
-
- f8_lo = filter_add2_sub2(&f8_lo, &q3_lo, &q0_lo, &p0_lo, &p3_lo);
- f8_hi = filter_add2_sub2(&f8_hi, &q3_hi, &q0_hi, &p0_hi, &p3_hi);
- oq0 = filter8_mask(&flat, &oq0, &f8_lo, &f8_hi);
-
- f8_lo = filter_add2_sub2(&f8_lo, &q3_lo, &q1_lo, &q0_lo, &p2_lo);
- f8_hi = filter_add2_sub2(&f8_hi, &q3_hi, &q1_hi, &q0_hi, &p2_hi);
- oq1 = filter8_mask(&flat, &oq1, &f8_lo, &f8_hi);
-
- f8_lo = filter_add2_sub2(&f8_lo, &q3_lo, &q2_lo, &q1_lo, &p1_lo);
- f8_hi = filter_add2_sub2(&f8_hi, &q3_hi, &q2_hi, &q1_hi, &p1_hi);
- oq2 = filter8_mask(&flat, &q2, &f8_lo, &f8_hi);
- }
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // wide flat calculations
- {
- const __m128i eight = _mm_set1_epi16(8);
- const __m128i p7_lo = _mm_unpacklo_epi8(p7, zero);
- const __m128i p6_lo = _mm_unpacklo_epi8(p6, zero);
- const __m128i p5_lo = _mm_unpacklo_epi8(p5, zero);
- const __m128i p4_lo = _mm_unpacklo_epi8(p4, zero);
- const __m128i p3_lo = _mm_unpacklo_epi8(p3, zero);
- const __m128i p2_lo = _mm_unpacklo_epi8(p2, zero);
- const __m128i p1_lo = _mm_unpacklo_epi8(p1, zero);
- const __m128i p0_lo = _mm_unpacklo_epi8(p0, zero);
- const __m128i q0_lo = _mm_unpacklo_epi8(q0, zero);
- const __m128i q1_lo = _mm_unpacklo_epi8(q1, zero);
- const __m128i q2_lo = _mm_unpacklo_epi8(q2, zero);
- const __m128i q3_lo = _mm_unpacklo_epi8(q3, zero);
- const __m128i q4_lo = _mm_unpacklo_epi8(q4, zero);
- const __m128i q5_lo = _mm_unpacklo_epi8(q5, zero);
- const __m128i q6_lo = _mm_unpacklo_epi8(q6, zero);
- const __m128i q7_lo = _mm_unpacklo_epi8(q7, zero);
-
- const __m128i p7_hi = _mm_unpackhi_epi8(p7, zero);
- const __m128i p6_hi = _mm_unpackhi_epi8(p6, zero);
- const __m128i p5_hi = _mm_unpackhi_epi8(p5, zero);
- const __m128i p4_hi = _mm_unpackhi_epi8(p4, zero);
- const __m128i p3_hi = _mm_unpackhi_epi8(p3, zero);
- const __m128i p2_hi = _mm_unpackhi_epi8(p2, zero);
- const __m128i p1_hi = _mm_unpackhi_epi8(p1, zero);
- const __m128i p0_hi = _mm_unpackhi_epi8(p0, zero);
- const __m128i q0_hi = _mm_unpackhi_epi8(q0, zero);
- const __m128i q1_hi = _mm_unpackhi_epi8(q1, zero);
- const __m128i q2_hi = _mm_unpackhi_epi8(q2, zero);
- const __m128i q3_hi = _mm_unpackhi_epi8(q3, zero);
- const __m128i q4_hi = _mm_unpackhi_epi8(q4, zero);
- const __m128i q5_hi = _mm_unpackhi_epi8(q5, zero);
- const __m128i q6_hi = _mm_unpackhi_epi8(q6, zero);
- const __m128i q7_hi = _mm_unpackhi_epi8(q7, zero);
-
- __m128i f_lo;
- __m128i f_hi;
-
- f_lo = _mm_sub_epi16(_mm_slli_epi16(p7_lo, 3), p7_lo); // p7 * 7
- f_lo = _mm_add_epi16(_mm_slli_epi16(p6_lo, 1),
- _mm_add_epi16(p4_lo, f_lo));
- f_lo = _mm_add_epi16(_mm_add_epi16(p3_lo, f_lo),
- _mm_add_epi16(p2_lo, p1_lo));
- f_lo = _mm_add_epi16(_mm_add_epi16(p0_lo, q0_lo), f_lo);
- f_lo = _mm_add_epi16(_mm_add_epi16(p5_lo, eight), f_lo);
-
- f_hi = _mm_sub_epi16(_mm_slli_epi16(p7_hi, 3), p7_hi); // p7 * 7
- f_hi = _mm_add_epi16(_mm_slli_epi16(p6_hi, 1),
- _mm_add_epi16(p4_hi, f_hi));
- f_hi = _mm_add_epi16(_mm_add_epi16(p3_hi, f_hi),
- _mm_add_epi16(p2_hi, p1_hi));
- f_hi = _mm_add_epi16(_mm_add_epi16(p0_hi, q0_hi), f_hi);
- f_hi = _mm_add_epi16(_mm_add_epi16(p5_hi, eight), f_hi);
-
- p6 = filter16_mask(&flat2, &p6, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s - 7 * p), p6);
-
- f_lo = filter_add2_sub2(&f_lo, &q1_lo, &p5_lo, &p6_lo, &p7_lo);
- f_hi = filter_add2_sub2(&f_hi, &q1_hi, &p5_hi, &p6_hi, &p7_hi);
- p5 = filter16_mask(&flat2, &p5, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s - 6 * p), p5);
-
- f_lo = filter_add2_sub2(&f_lo, &q2_lo, &p4_lo, &p5_lo, &p7_lo);
- f_hi = filter_add2_sub2(&f_hi, &q2_hi, &p4_hi, &p5_hi, &p7_hi);
- p4 = filter16_mask(&flat2, &p4, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s - 5 * p), p4);
-
- f_lo = filter_add2_sub2(&f_lo, &q3_lo, &p3_lo, &p4_lo, &p7_lo);
- f_hi = filter_add2_sub2(&f_hi, &q3_hi, &p3_hi, &p4_hi, &p7_hi);
- p3 = filter16_mask(&flat2, &p3, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s - 4 * p), p3);
-
- f_lo = filter_add2_sub2(&f_lo, &q4_lo, &p2_lo, &p3_lo, &p7_lo);
- f_hi = filter_add2_sub2(&f_hi, &q4_hi, &p2_hi, &p3_hi, &p7_hi);
- op2 = filter16_mask(&flat2, &op2, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s - 3 * p), op2);
-
- f_lo = filter_add2_sub2(&f_lo, &q5_lo, &p1_lo, &p2_lo, &p7_lo);
- f_hi = filter_add2_sub2(&f_hi, &q5_hi, &p1_hi, &p2_hi, &p7_hi);
- op1 = filter16_mask(&flat2, &op1, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s - 2 * p), op1);
-
- f_lo = filter_add2_sub2(&f_lo, &q6_lo, &p0_lo, &p1_lo, &p7_lo);
- f_hi = filter_add2_sub2(&f_hi, &q6_hi, &p0_hi, &p1_hi, &p7_hi);
- op0 = filter16_mask(&flat2, &op0, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s - 1 * p), op0);
-
- f_lo = filter_add2_sub2(&f_lo, &q7_lo, &q0_lo, &p0_lo, &p7_lo);
- f_hi = filter_add2_sub2(&f_hi, &q7_hi, &q0_hi, &p0_hi, &p7_hi);
- oq0 = filter16_mask(&flat2, &oq0, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s - 0 * p), oq0);
-
- f_lo = filter_add2_sub2(&f_lo, &q7_lo, &q1_lo, &p6_lo, &q0_lo);
- f_hi = filter_add2_sub2(&f_hi, &q7_hi, &q1_hi, &p6_hi, &q0_hi);
- oq1 = filter16_mask(&flat2, &oq1, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s + 1 * p), oq1);
-
- f_lo = filter_add2_sub2(&f_lo, &q7_lo, &q2_lo, &p5_lo, &q1_lo);
- f_hi = filter_add2_sub2(&f_hi, &q7_hi, &q2_hi, &p5_hi, &q1_hi);
- oq2 = filter16_mask(&flat2, &oq2, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s + 2 * p), oq2);
-
- f_lo = filter_add2_sub2(&f_lo, &q7_lo, &q3_lo, &p4_lo, &q2_lo);
- f_hi = filter_add2_sub2(&f_hi, &q7_hi, &q3_hi, &p4_hi, &q2_hi);
- q3 = filter16_mask(&flat2, &q3, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s + 3 * p), q3);
-
- f_lo = filter_add2_sub2(&f_lo, &q7_lo, &q4_lo, &p3_lo, &q3_lo);
- f_hi = filter_add2_sub2(&f_hi, &q7_hi, &q4_hi, &p3_hi, &q3_hi);
- q4 = filter16_mask(&flat2, &q4, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s + 4 * p), q4);
-
- f_lo = filter_add2_sub2(&f_lo, &q7_lo, &q5_lo, &p2_lo, &q4_lo);
- f_hi = filter_add2_sub2(&f_hi, &q7_hi, &q5_hi, &p2_hi, &q4_hi);
- q5 = filter16_mask(&flat2, &q5, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s + 5 * p), q5);
-
- f_lo = filter_add2_sub2(&f_lo, &q7_lo, &q6_lo, &p1_lo, &q5_lo);
- f_hi = filter_add2_sub2(&f_hi, &q7_hi, &q6_hi, &p1_hi, &q5_hi);
- q6 = filter16_mask(&flat2, &q6, &f_lo, &f_hi);
- _mm_storeu_si128((__m128i *)(s + 6 * p), q6);
- }
- // wide flat
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- }
-}
-
-void vpx_lpf_horizontal_8_sse2(unsigned char *s, int p,
- const unsigned char *_blimit,
- const unsigned char *_limit,
- const unsigned char *_thresh) {
- DECLARE_ALIGNED(16, unsigned char, flat_op2[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_op1[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_op0[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_oq2[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_oq1[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_oq0[16]);
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i blimit = _mm_load_si128((const __m128i *)_blimit);
- const __m128i limit = _mm_load_si128((const __m128i *)_limit);
- const __m128i thresh = _mm_load_si128((const __m128i *)_thresh);
- __m128i mask, hev, flat;
- __m128i p3, p2, p1, p0, q0, q1, q2, q3;
- __m128i q3p3, q2p2, q1p1, q0p0, p1q1, p0q0;
-
- q3p3 = _mm_unpacklo_epi64(_mm_loadl_epi64((__m128i *)(s - 4 * p)),
- _mm_loadl_epi64((__m128i *)(s + 3 * p)));
- q2p2 = _mm_unpacklo_epi64(_mm_loadl_epi64((__m128i *)(s - 3 * p)),
- _mm_loadl_epi64((__m128i *)(s + 2 * p)));
- q1p1 = _mm_unpacklo_epi64(_mm_loadl_epi64((__m128i *)(s - 2 * p)),
- _mm_loadl_epi64((__m128i *)(s + 1 * p)));
- q0p0 = _mm_unpacklo_epi64(_mm_loadl_epi64((__m128i *)(s - 1 * p)),
- _mm_loadl_epi64((__m128i *)(s - 0 * p)));
- p1q1 = _mm_shuffle_epi32(q1p1, 78);
- p0q0 = _mm_shuffle_epi32(q0p0, 78);
-
- {
- // filter_mask and hev_mask
- const __m128i one = _mm_set1_epi8(1);
- const __m128i fe = _mm_set1_epi8(0xfe);
- const __m128i ff = _mm_cmpeq_epi8(fe, fe);
- __m128i abs_p1q1, abs_p0q0, abs_q1q0, abs_p1p0, work;
- abs_p1p0 = abs_diff(q1p1, q0p0);
- abs_q1q0 = _mm_srli_si128(abs_p1p0, 8);
-
- abs_p0q0 = abs_diff(q0p0, p0q0);
- abs_p1q1 = abs_diff(q1p1, p1q1);
- flat = _mm_max_epu8(abs_p1p0, abs_q1q0);
- hev = _mm_subs_epu8(flat, thresh);
- hev = _mm_xor_si128(_mm_cmpeq_epi8(hev, zero), ff);
-
- abs_p0q0 =_mm_adds_epu8(abs_p0q0, abs_p0q0);
- abs_p1q1 = _mm_srli_epi16(_mm_and_si128(abs_p1q1, fe), 1);
- mask = _mm_subs_epu8(_mm_adds_epu8(abs_p0q0, abs_p1q1), blimit);
- mask = _mm_xor_si128(_mm_cmpeq_epi8(mask, zero), ff);
- // mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit) * -1;
- mask = _mm_max_epu8(abs_p1p0, mask);
- // mask |= (abs(p1 - p0) > limit) * -1;
- // mask |= (abs(q1 - q0) > limit) * -1;
-
- work = _mm_max_epu8(abs_diff(q2p2, q1p1),
- abs_diff(q3p3, q2p2));
- mask = _mm_max_epu8(work, mask);
- mask = _mm_max_epu8(mask, _mm_srli_si128(mask, 8));
- mask = _mm_subs_epu8(mask, limit);
- mask = _mm_cmpeq_epi8(mask, zero);
-
- // flat_mask4
-
- flat = _mm_max_epu8(abs_diff(q2p2, q0p0),
- abs_diff(q3p3, q0p0));
- flat = _mm_max_epu8(abs_p1p0, flat);
- flat = _mm_max_epu8(flat, _mm_srli_si128(flat, 8));
- flat = _mm_subs_epu8(flat, one);
- flat = _mm_cmpeq_epi8(flat, zero);
- flat = _mm_and_si128(flat, mask);
- }
-
- {
- const __m128i four = _mm_set1_epi16(4);
- unsigned char *src = s;
- {
- __m128i workp_a, workp_b, workp_shft;
- p3 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 4 * p)), zero);
- p2 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 3 * p)), zero);
- p1 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 2 * p)), zero);
- p0 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 1 * p)), zero);
- q0 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 0 * p)), zero);
- q1 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src + 1 * p)), zero);
- q2 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src + 2 * p)), zero);
- q3 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src + 3 * p)), zero);
-
- workp_a = _mm_add_epi16(_mm_add_epi16(p3, p3), _mm_add_epi16(p2, p1));
- workp_a = _mm_add_epi16(_mm_add_epi16(workp_a, four), p0);
- workp_b = _mm_add_epi16(_mm_add_epi16(q0, p2), p3);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_op2[0],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_b = _mm_add_epi16(_mm_add_epi16(q0, q1), p1);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_op1[0],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_a = _mm_add_epi16(_mm_sub_epi16(workp_a, p3), q2);
- workp_b = _mm_add_epi16(_mm_sub_epi16(workp_b, p1), p0);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_op0[0],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_a = _mm_add_epi16(_mm_sub_epi16(workp_a, p3), q3);
- workp_b = _mm_add_epi16(_mm_sub_epi16(workp_b, p0), q0);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_oq0[0],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_a = _mm_add_epi16(_mm_sub_epi16(workp_a, p2), q3);
- workp_b = _mm_add_epi16(_mm_sub_epi16(workp_b, q0), q1);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_oq1[0],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_a = _mm_add_epi16(_mm_sub_epi16(workp_a, p1), q3);
- workp_b = _mm_add_epi16(_mm_sub_epi16(workp_b, q1), q2);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_oq2[0],
- _mm_packus_epi16(workp_shft, workp_shft));
- }
- }
- // lp filter
- {
- const __m128i t4 = _mm_set1_epi8(4);
- const __m128i t3 = _mm_set1_epi8(3);
- const __m128i t80 = _mm_set1_epi8(0x80);
- const __m128i t1 = _mm_set1_epi8(0x1);
- const __m128i ps1 = _mm_xor_si128(_mm_loadl_epi64((__m128i *)(s - 2 * p)),
- t80);
- const __m128i ps0 = _mm_xor_si128(_mm_loadl_epi64((__m128i *)(s - 1 * p)),
- t80);
- const __m128i qs0 = _mm_xor_si128(_mm_loadl_epi64((__m128i *)(s + 0 * p)),
- t80);
- const __m128i qs1 = _mm_xor_si128(_mm_loadl_epi64((__m128i *)(s + 1 * p)),
- t80);
- __m128i filt;
- __m128i work_a;
- __m128i filter1, filter2;
-
- filt = _mm_and_si128(_mm_subs_epi8(ps1, qs1), hev);
- work_a = _mm_subs_epi8(qs0, ps0);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- // (vpx_filter + 3 * (qs0 - ps0)) & mask
- filt = _mm_and_si128(filt, mask);
-
- filter1 = _mm_adds_epi8(filt, t4);
- filter2 = _mm_adds_epi8(filt, t3);
-
- // Filter1 >> 3
- filter1 = _mm_unpacklo_epi8(zero, filter1);
- filter1 = _mm_srai_epi16(filter1, 11);
- filter1 = _mm_packs_epi16(filter1, filter1);
-
- // Filter2 >> 3
- filter2 = _mm_unpacklo_epi8(zero, filter2);
- filter2 = _mm_srai_epi16(filter2, 11);
- filter2 = _mm_packs_epi16(filter2, zero);
-
- // filt >> 1
- filt = _mm_adds_epi8(filter1, t1);
- filt = _mm_unpacklo_epi8(zero, filt);
- filt = _mm_srai_epi16(filt, 9);
- filt = _mm_packs_epi16(filt, zero);
-
- filt = _mm_andnot_si128(hev, filt);
-
- work_a = _mm_xor_si128(_mm_subs_epi8(qs0, filter1), t80);
- q0 = _mm_loadl_epi64((__m128i *)flat_oq0);
- work_a = _mm_andnot_si128(flat, work_a);
- q0 = _mm_and_si128(flat, q0);
- q0 = _mm_or_si128(work_a, q0);
-
- work_a = _mm_xor_si128(_mm_subs_epi8(qs1, filt), t80);
- q1 = _mm_loadl_epi64((__m128i *)flat_oq1);
- work_a = _mm_andnot_si128(flat, work_a);
- q1 = _mm_and_si128(flat, q1);
- q1 = _mm_or_si128(work_a, q1);
-
- work_a = _mm_loadu_si128((__m128i *)(s + 2 * p));
- q2 = _mm_loadl_epi64((__m128i *)flat_oq2);
- work_a = _mm_andnot_si128(flat, work_a);
- q2 = _mm_and_si128(flat, q2);
- q2 = _mm_or_si128(work_a, q2);
-
- work_a = _mm_xor_si128(_mm_adds_epi8(ps0, filter2), t80);
- p0 = _mm_loadl_epi64((__m128i *)flat_op0);
- work_a = _mm_andnot_si128(flat, work_a);
- p0 = _mm_and_si128(flat, p0);
- p0 = _mm_or_si128(work_a, p0);
-
- work_a = _mm_xor_si128(_mm_adds_epi8(ps1, filt), t80);
- p1 = _mm_loadl_epi64((__m128i *)flat_op1);
- work_a = _mm_andnot_si128(flat, work_a);
- p1 = _mm_and_si128(flat, p1);
- p1 = _mm_or_si128(work_a, p1);
-
- work_a = _mm_loadu_si128((__m128i *)(s - 3 * p));
- p2 = _mm_loadl_epi64((__m128i *)flat_op2);
- work_a = _mm_andnot_si128(flat, work_a);
- p2 = _mm_and_si128(flat, p2);
- p2 = _mm_or_si128(work_a, p2);
-
- _mm_storel_epi64((__m128i *)(s - 3 * p), p2);
- _mm_storel_epi64((__m128i *)(s - 2 * p), p1);
- _mm_storel_epi64((__m128i *)(s - 1 * p), p0);
- _mm_storel_epi64((__m128i *)(s + 0 * p), q0);
- _mm_storel_epi64((__m128i *)(s + 1 * p), q1);
- _mm_storel_epi64((__m128i *)(s + 2 * p), q2);
- }
-}
-
-void vpx_lpf_horizontal_8_dual_sse2(uint8_t *s, int p,
- const uint8_t *_blimit0,
- const uint8_t *_limit0,
- const uint8_t *_thresh0,
- const uint8_t *_blimit1,
- const uint8_t *_limit1,
- const uint8_t *_thresh1) {
- DECLARE_ALIGNED(16, unsigned char, flat_op2[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_op1[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_op0[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_oq2[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_oq1[16]);
- DECLARE_ALIGNED(16, unsigned char, flat_oq0[16]);
- const __m128i zero = _mm_set1_epi16(0);
- const __m128i blimit =
- _mm_unpacklo_epi64(_mm_load_si128((const __m128i *)_blimit0),
- _mm_load_si128((const __m128i *)_blimit1));
- const __m128i limit =
- _mm_unpacklo_epi64(_mm_load_si128((const __m128i *)_limit0),
- _mm_load_si128((const __m128i *)_limit1));
- const __m128i thresh =
- _mm_unpacklo_epi64(_mm_load_si128((const __m128i *)_thresh0),
- _mm_load_si128((const __m128i *)_thresh1));
-
- __m128i mask, hev, flat;
- __m128i p3, p2, p1, p0, q0, q1, q2, q3;
-
- p3 = _mm_loadu_si128((__m128i *)(s - 4 * p));
- p2 = _mm_loadu_si128((__m128i *)(s - 3 * p));
- p1 = _mm_loadu_si128((__m128i *)(s - 2 * p));
- p0 = _mm_loadu_si128((__m128i *)(s - 1 * p));
- q0 = _mm_loadu_si128((__m128i *)(s - 0 * p));
- q1 = _mm_loadu_si128((__m128i *)(s + 1 * p));
- q2 = _mm_loadu_si128((__m128i *)(s + 2 * p));
- q3 = _mm_loadu_si128((__m128i *)(s + 3 * p));
- {
- const __m128i abs_p1p0 = _mm_or_si128(_mm_subs_epu8(p1, p0),
- _mm_subs_epu8(p0, p1));
- const __m128i abs_q1q0 = _mm_or_si128(_mm_subs_epu8(q1, q0),
- _mm_subs_epu8(q0, q1));
- const __m128i one = _mm_set1_epi8(1);
- const __m128i fe = _mm_set1_epi8(0xfe);
- const __m128i ff = _mm_cmpeq_epi8(abs_p1p0, abs_p1p0);
- __m128i abs_p0q0 = _mm_or_si128(_mm_subs_epu8(p0, q0),
- _mm_subs_epu8(q0, p0));
- __m128i abs_p1q1 = _mm_or_si128(_mm_subs_epu8(p1, q1),
- _mm_subs_epu8(q1, p1));
- __m128i work;
-
- // filter_mask and hev_mask
- flat = _mm_max_epu8(abs_p1p0, abs_q1q0);
- hev = _mm_subs_epu8(flat, thresh);
- hev = _mm_xor_si128(_mm_cmpeq_epi8(hev, zero), ff);
-
- abs_p0q0 =_mm_adds_epu8(abs_p0q0, abs_p0q0);
- abs_p1q1 = _mm_srli_epi16(_mm_and_si128(abs_p1q1, fe), 1);
- mask = _mm_subs_epu8(_mm_adds_epu8(abs_p0q0, abs_p1q1), blimit);
- mask = _mm_xor_si128(_mm_cmpeq_epi8(mask, zero), ff);
- // mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit) * -1;
- mask = _mm_max_epu8(flat, mask);
- // mask |= (abs(p1 - p0) > limit) * -1;
- // mask |= (abs(q1 - q0) > limit) * -1;
- work = _mm_max_epu8(_mm_or_si128(_mm_subs_epu8(p2, p1),
- _mm_subs_epu8(p1, p2)),
- _mm_or_si128(_mm_subs_epu8(p3, p2),
- _mm_subs_epu8(p2, p3)));
- mask = _mm_max_epu8(work, mask);
- work = _mm_max_epu8(_mm_or_si128(_mm_subs_epu8(q2, q1),
- _mm_subs_epu8(q1, q2)),
- _mm_or_si128(_mm_subs_epu8(q3, q2),
- _mm_subs_epu8(q2, q3)));
- mask = _mm_max_epu8(work, mask);
- mask = _mm_subs_epu8(mask, limit);
- mask = _mm_cmpeq_epi8(mask, zero);
-
- // flat_mask4
- work = _mm_max_epu8(_mm_or_si128(_mm_subs_epu8(p2, p0),
- _mm_subs_epu8(p0, p2)),
- _mm_or_si128(_mm_subs_epu8(q2, q0),
- _mm_subs_epu8(q0, q2)));
- flat = _mm_max_epu8(work, flat);
- work = _mm_max_epu8(_mm_or_si128(_mm_subs_epu8(p3, p0),
- _mm_subs_epu8(p0, p3)),
- _mm_or_si128(_mm_subs_epu8(q3, q0),
- _mm_subs_epu8(q0, q3)));
- flat = _mm_max_epu8(work, flat);
- flat = _mm_subs_epu8(flat, one);
- flat = _mm_cmpeq_epi8(flat, zero);
- flat = _mm_and_si128(flat, mask);
- }
- {
- const __m128i four = _mm_set1_epi16(4);
- unsigned char *src = s;
- int i = 0;
-
- do {
- __m128i workp_a, workp_b, workp_shft;
- p3 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 4 * p)), zero);
- p2 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 3 * p)), zero);
- p1 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 2 * p)), zero);
- p0 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 1 * p)), zero);
- q0 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src - 0 * p)), zero);
- q1 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src + 1 * p)), zero);
- q2 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src + 2 * p)), zero);
- q3 = _mm_unpacklo_epi8(_mm_loadl_epi64((__m128i *)(src + 3 * p)), zero);
-
- workp_a = _mm_add_epi16(_mm_add_epi16(p3, p3), _mm_add_epi16(p2, p1));
- workp_a = _mm_add_epi16(_mm_add_epi16(workp_a, four), p0);
- workp_b = _mm_add_epi16(_mm_add_epi16(q0, p2), p3);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_op2[i * 8],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_b = _mm_add_epi16(_mm_add_epi16(q0, q1), p1);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_op1[i * 8],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_a = _mm_add_epi16(_mm_sub_epi16(workp_a, p3), q2);
- workp_b = _mm_add_epi16(_mm_sub_epi16(workp_b, p1), p0);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_op0[i * 8],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_a = _mm_add_epi16(_mm_sub_epi16(workp_a, p3), q3);
- workp_b = _mm_add_epi16(_mm_sub_epi16(workp_b, p0), q0);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_oq0[i * 8],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_a = _mm_add_epi16(_mm_sub_epi16(workp_a, p2), q3);
- workp_b = _mm_add_epi16(_mm_sub_epi16(workp_b, q0), q1);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_oq1[i * 8],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- workp_a = _mm_add_epi16(_mm_sub_epi16(workp_a, p1), q3);
- workp_b = _mm_add_epi16(_mm_sub_epi16(workp_b, q1), q2);
- workp_shft = _mm_srli_epi16(_mm_add_epi16(workp_a, workp_b), 3);
- _mm_storel_epi64((__m128i *)&flat_oq2[i * 8],
- _mm_packus_epi16(workp_shft, workp_shft));
-
- src += 8;
- } while (++i < 2);
- }
- // lp filter
- {
- const __m128i t4 = _mm_set1_epi8(4);
- const __m128i t3 = _mm_set1_epi8(3);
- const __m128i t80 = _mm_set1_epi8(0x80);
- const __m128i te0 = _mm_set1_epi8(0xe0);
- const __m128i t1f = _mm_set1_epi8(0x1f);
- const __m128i t1 = _mm_set1_epi8(0x1);
- const __m128i t7f = _mm_set1_epi8(0x7f);
-
- const __m128i ps1 = _mm_xor_si128(_mm_loadu_si128((__m128i *)(s - 2 * p)),
- t80);
- const __m128i ps0 = _mm_xor_si128(_mm_loadu_si128((__m128i *)(s - 1 * p)),
- t80);
- const __m128i qs0 = _mm_xor_si128(_mm_loadu_si128((__m128i *)(s + 0 * p)),
- t80);
- const __m128i qs1 = _mm_xor_si128(_mm_loadu_si128((__m128i *)(s + 1 * p)),
- t80);
- __m128i filt;
- __m128i work_a;
- __m128i filter1, filter2;
-
- filt = _mm_and_si128(_mm_subs_epi8(ps1, qs1), hev);
- work_a = _mm_subs_epi8(qs0, ps0);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- // (vpx_filter + 3 * (qs0 - ps0)) & mask
- filt = _mm_and_si128(filt, mask);
-
- filter1 = _mm_adds_epi8(filt, t4);
- filter2 = _mm_adds_epi8(filt, t3);
-
- // Filter1 >> 3
- work_a = _mm_cmpgt_epi8(zero, filter1);
- filter1 = _mm_srli_epi16(filter1, 3);
- work_a = _mm_and_si128(work_a, te0);
- filter1 = _mm_and_si128(filter1, t1f);
- filter1 = _mm_or_si128(filter1, work_a);
-
- // Filter2 >> 3
- work_a = _mm_cmpgt_epi8(zero, filter2);
- filter2 = _mm_srli_epi16(filter2, 3);
- work_a = _mm_and_si128(work_a, te0);
- filter2 = _mm_and_si128(filter2, t1f);
- filter2 = _mm_or_si128(filter2, work_a);
-
- // filt >> 1
- filt = _mm_adds_epi8(filter1, t1);
- work_a = _mm_cmpgt_epi8(zero, filt);
- filt = _mm_srli_epi16(filt, 1);
- work_a = _mm_and_si128(work_a, t80);
- filt = _mm_and_si128(filt, t7f);
- filt = _mm_or_si128(filt, work_a);
-
- filt = _mm_andnot_si128(hev, filt);
-
- work_a = _mm_xor_si128(_mm_subs_epi8(qs0, filter1), t80);
- q0 = _mm_load_si128((__m128i *)flat_oq0);
- work_a = _mm_andnot_si128(flat, work_a);
- q0 = _mm_and_si128(flat, q0);
- q0 = _mm_or_si128(work_a, q0);
-
- work_a = _mm_xor_si128(_mm_subs_epi8(qs1, filt), t80);
- q1 = _mm_load_si128((__m128i *)flat_oq1);
- work_a = _mm_andnot_si128(flat, work_a);
- q1 = _mm_and_si128(flat, q1);
- q1 = _mm_or_si128(work_a, q1);
-
- work_a = _mm_loadu_si128((__m128i *)(s + 2 * p));
- q2 = _mm_load_si128((__m128i *)flat_oq2);
- work_a = _mm_andnot_si128(flat, work_a);
- q2 = _mm_and_si128(flat, q2);
- q2 = _mm_or_si128(work_a, q2);
-
- work_a = _mm_xor_si128(_mm_adds_epi8(ps0, filter2), t80);
- p0 = _mm_load_si128((__m128i *)flat_op0);
- work_a = _mm_andnot_si128(flat, work_a);
- p0 = _mm_and_si128(flat, p0);
- p0 = _mm_or_si128(work_a, p0);
-
- work_a = _mm_xor_si128(_mm_adds_epi8(ps1, filt), t80);
- p1 = _mm_load_si128((__m128i *)flat_op1);
- work_a = _mm_andnot_si128(flat, work_a);
- p1 = _mm_and_si128(flat, p1);
- p1 = _mm_or_si128(work_a, p1);
-
- work_a = _mm_loadu_si128((__m128i *)(s - 3 * p));
- p2 = _mm_load_si128((__m128i *)flat_op2);
- work_a = _mm_andnot_si128(flat, work_a);
- p2 = _mm_and_si128(flat, p2);
- p2 = _mm_or_si128(work_a, p2);
-
- _mm_storeu_si128((__m128i *)(s - 3 * p), p2);
- _mm_storeu_si128((__m128i *)(s - 2 * p), p1);
- _mm_storeu_si128((__m128i *)(s - 1 * p), p0);
- _mm_storeu_si128((__m128i *)(s + 0 * p), q0);
- _mm_storeu_si128((__m128i *)(s + 1 * p), q1);
- _mm_storeu_si128((__m128i *)(s + 2 * p), q2);
- }
-}
-
-void vpx_lpf_horizontal_4_dual_sse2(unsigned char *s, int p,
- const unsigned char *_blimit0,
- const unsigned char *_limit0,
- const unsigned char *_thresh0,
- const unsigned char *_blimit1,
- const unsigned char *_limit1,
- const unsigned char *_thresh1) {
- const __m128i blimit =
- _mm_unpacklo_epi64(_mm_load_si128((const __m128i *)_blimit0),
- _mm_load_si128((const __m128i *)_blimit1));
- const __m128i limit =
- _mm_unpacklo_epi64(_mm_load_si128((const __m128i *)_limit0),
- _mm_load_si128((const __m128i *)_limit1));
- const __m128i thresh =
- _mm_unpacklo_epi64(_mm_load_si128((const __m128i *)_thresh0),
- _mm_load_si128((const __m128i *)_thresh1));
- const __m128i zero = _mm_set1_epi16(0);
- __m128i p3, p2, p1, p0, q0, q1, q2, q3;
- __m128i mask, hev, flat;
-
- p3 = _mm_loadu_si128((__m128i *)(s - 4 * p));
- p2 = _mm_loadu_si128((__m128i *)(s - 3 * p));
- p1 = _mm_loadu_si128((__m128i *)(s - 2 * p));
- p0 = _mm_loadu_si128((__m128i *)(s - 1 * p));
- q0 = _mm_loadu_si128((__m128i *)(s - 0 * p));
- q1 = _mm_loadu_si128((__m128i *)(s + 1 * p));
- q2 = _mm_loadu_si128((__m128i *)(s + 2 * p));
- q3 = _mm_loadu_si128((__m128i *)(s + 3 * p));
-
- // filter_mask and hev_mask
- {
- const __m128i abs_p1p0 = _mm_or_si128(_mm_subs_epu8(p1, p0),
- _mm_subs_epu8(p0, p1));
- const __m128i abs_q1q0 = _mm_or_si128(_mm_subs_epu8(q1, q0),
- _mm_subs_epu8(q0, q1));
- const __m128i fe = _mm_set1_epi8(0xfe);
- const __m128i ff = _mm_cmpeq_epi8(abs_p1p0, abs_p1p0);
- __m128i abs_p0q0 = _mm_or_si128(_mm_subs_epu8(p0, q0),
- _mm_subs_epu8(q0, p0));
- __m128i abs_p1q1 = _mm_or_si128(_mm_subs_epu8(p1, q1),
- _mm_subs_epu8(q1, p1));
- __m128i work;
-
- flat = _mm_max_epu8(abs_p1p0, abs_q1q0);
- hev = _mm_subs_epu8(flat, thresh);
- hev = _mm_xor_si128(_mm_cmpeq_epi8(hev, zero), ff);
-
- abs_p0q0 =_mm_adds_epu8(abs_p0q0, abs_p0q0);
- abs_p1q1 = _mm_srli_epi16(_mm_and_si128(abs_p1q1, fe), 1);
- mask = _mm_subs_epu8(_mm_adds_epu8(abs_p0q0, abs_p1q1), blimit);
- mask = _mm_xor_si128(_mm_cmpeq_epi8(mask, zero), ff);
- // mask |= (abs(p0 - q0) * 2 + abs(p1 - q1) / 2 > blimit) * -1;
- mask = _mm_max_epu8(flat, mask);
- // mask |= (abs(p1 - p0) > limit) * -1;
- // mask |= (abs(q1 - q0) > limit) * -1;
- work = _mm_max_epu8(_mm_or_si128(_mm_subs_epu8(p2, p1),
- _mm_subs_epu8(p1, p2)),
- _mm_or_si128(_mm_subs_epu8(p3, p2),
- _mm_subs_epu8(p2, p3)));
- mask = _mm_max_epu8(work, mask);
- work = _mm_max_epu8(_mm_or_si128(_mm_subs_epu8(q2, q1),
- _mm_subs_epu8(q1, q2)),
- _mm_or_si128(_mm_subs_epu8(q3, q2),
- _mm_subs_epu8(q2, q3)));
- mask = _mm_max_epu8(work, mask);
- mask = _mm_subs_epu8(mask, limit);
- mask = _mm_cmpeq_epi8(mask, zero);
- }
-
- // filter4
- {
- const __m128i t4 = _mm_set1_epi8(4);
- const __m128i t3 = _mm_set1_epi8(3);
- const __m128i t80 = _mm_set1_epi8(0x80);
- const __m128i te0 = _mm_set1_epi8(0xe0);
- const __m128i t1f = _mm_set1_epi8(0x1f);
- const __m128i t1 = _mm_set1_epi8(0x1);
- const __m128i t7f = _mm_set1_epi8(0x7f);
-
- const __m128i ps1 = _mm_xor_si128(_mm_loadu_si128((__m128i *)(s - 2 * p)),
- t80);
- const __m128i ps0 = _mm_xor_si128(_mm_loadu_si128((__m128i *)(s - 1 * p)),
- t80);
- const __m128i qs0 = _mm_xor_si128(_mm_loadu_si128((__m128i *)(s + 0 * p)),
- t80);
- const __m128i qs1 = _mm_xor_si128(_mm_loadu_si128((__m128i *)(s + 1 * p)),
- t80);
- __m128i filt;
- __m128i work_a;
- __m128i filter1, filter2;
-
- filt = _mm_and_si128(_mm_subs_epi8(ps1, qs1), hev);
- work_a = _mm_subs_epi8(qs0, ps0);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- filt = _mm_adds_epi8(filt, work_a);
- // (vpx_filter + 3 * (qs0 - ps0)) & mask
- filt = _mm_and_si128(filt, mask);
-
- filter1 = _mm_adds_epi8(filt, t4);
- filter2 = _mm_adds_epi8(filt, t3);
-
- // Filter1 >> 3
- work_a = _mm_cmpgt_epi8(zero, filter1);
- filter1 = _mm_srli_epi16(filter1, 3);
- work_a = _mm_and_si128(work_a, te0);
- filter1 = _mm_and_si128(filter1, t1f);
- filter1 = _mm_or_si128(filter1, work_a);
-
- // Filter2 >> 3
- work_a = _mm_cmpgt_epi8(zero, filter2);
- filter2 = _mm_srli_epi16(filter2, 3);
- work_a = _mm_and_si128(work_a, te0);
- filter2 = _mm_and_si128(filter2, t1f);
- filter2 = _mm_or_si128(filter2, work_a);
-
- // filt >> 1
- filt = _mm_adds_epi8(filter1, t1);
- work_a = _mm_cmpgt_epi8(zero, filt);
- filt = _mm_srli_epi16(filt, 1);
- work_a = _mm_and_si128(work_a, t80);
- filt = _mm_and_si128(filt, t7f);
- filt = _mm_or_si128(filt, work_a);
-
- filt = _mm_andnot_si128(hev, filt);
-
- q0 = _mm_xor_si128(_mm_subs_epi8(qs0, filter1), t80);
- q1 = _mm_xor_si128(_mm_subs_epi8(qs1, filt), t80);
- p0 = _mm_xor_si128(_mm_adds_epi8(ps0, filter2), t80);
- p1 = _mm_xor_si128(_mm_adds_epi8(ps1, filt), t80);
-
- _mm_storeu_si128((__m128i *)(s - 2 * p), p1);
- _mm_storeu_si128((__m128i *)(s - 1 * p), p0);
- _mm_storeu_si128((__m128i *)(s + 0 * p), q0);
- _mm_storeu_si128((__m128i *)(s + 1 * p), q1);
- }
-}
-
-static INLINE void transpose8x16(unsigned char *in0, unsigned char *in1,
- int in_p, unsigned char *out, int out_p) {
- __m128i x0, x1, x2, x3, x4, x5, x6, x7;
- __m128i x8, x9, x10, x11, x12, x13, x14, x15;
-
- // 2-way interleave w/hoisting of unpacks
- x0 = _mm_loadl_epi64((__m128i *)in0); // 1
- x1 = _mm_loadl_epi64((__m128i *)(in0 + in_p)); // 3
- x0 = _mm_unpacklo_epi8(x0, x1); // 1
-
- x2 = _mm_loadl_epi64((__m128i *)(in0 + 2 * in_p)); // 5
- x3 = _mm_loadl_epi64((__m128i *)(in0 + 3*in_p)); // 7
- x1 = _mm_unpacklo_epi8(x2, x3); // 2
-
- x4 = _mm_loadl_epi64((__m128i *)(in0 + 4*in_p)); // 9
- x5 = _mm_loadl_epi64((__m128i *)(in0 + 5*in_p)); // 11
- x2 = _mm_unpacklo_epi8(x4, x5); // 3
-
- x6 = _mm_loadl_epi64((__m128i *)(in0 + 6*in_p)); // 13
- x7 = _mm_loadl_epi64((__m128i *)(in0 + 7*in_p)); // 15
- x3 = _mm_unpacklo_epi8(x6, x7); // 4
- x4 = _mm_unpacklo_epi16(x0, x1); // 9
-
- x8 = _mm_loadl_epi64((__m128i *)in1); // 2
- x9 = _mm_loadl_epi64((__m128i *)(in1 + in_p)); // 4
- x8 = _mm_unpacklo_epi8(x8, x9); // 5
- x5 = _mm_unpacklo_epi16(x2, x3); // 10
-
- x10 = _mm_loadl_epi64((__m128i *)(in1 + 2 * in_p)); // 6
- x11 = _mm_loadl_epi64((__m128i *)(in1 + 3*in_p)); // 8
- x9 = _mm_unpacklo_epi8(x10, x11); // 6
-
- x12 = _mm_loadl_epi64((__m128i *)(in1 + 4*in_p)); // 10
- x13 = _mm_loadl_epi64((__m128i *)(in1 + 5*in_p)); // 12
- x10 = _mm_unpacklo_epi8(x12, x13); // 7
- x12 = _mm_unpacklo_epi16(x8, x9); // 11
-
- x14 = _mm_loadl_epi64((__m128i *)(in1 + 6*in_p)); // 14
- x15 = _mm_loadl_epi64((__m128i *)(in1 + 7*in_p)); // 16
- x11 = _mm_unpacklo_epi8(x14, x15); // 8
- x13 = _mm_unpacklo_epi16(x10, x11); // 12
-
- x6 = _mm_unpacklo_epi32(x4, x5); // 13
- x7 = _mm_unpackhi_epi32(x4, x5); // 14
- x14 = _mm_unpacklo_epi32(x12, x13); // 15
- x15 = _mm_unpackhi_epi32(x12, x13); // 16
-
- // Store first 4-line result
- _mm_storeu_si128((__m128i *)out, _mm_unpacklo_epi64(x6, x14));
- _mm_storeu_si128((__m128i *)(out + out_p), _mm_unpackhi_epi64(x6, x14));
- _mm_storeu_si128((__m128i *)(out + 2 * out_p), _mm_unpacklo_epi64(x7, x15));
- _mm_storeu_si128((__m128i *)(out + 3 * out_p), _mm_unpackhi_epi64(x7, x15));
-
- x4 = _mm_unpackhi_epi16(x0, x1);
- x5 = _mm_unpackhi_epi16(x2, x3);
- x12 = _mm_unpackhi_epi16(x8, x9);
- x13 = _mm_unpackhi_epi16(x10, x11);
-
- x6 = _mm_unpacklo_epi32(x4, x5);
- x7 = _mm_unpackhi_epi32(x4, x5);
- x14 = _mm_unpacklo_epi32(x12, x13);
- x15 = _mm_unpackhi_epi32(x12, x13);
-
- // Store second 4-line result
- _mm_storeu_si128((__m128i *)(out + 4 * out_p), _mm_unpacklo_epi64(x6, x14));
- _mm_storeu_si128((__m128i *)(out + 5 * out_p), _mm_unpackhi_epi64(x6, x14));
- _mm_storeu_si128((__m128i *)(out + 6 * out_p), _mm_unpacklo_epi64(x7, x15));
- _mm_storeu_si128((__m128i *)(out + 7 * out_p), _mm_unpackhi_epi64(x7, x15));
-}
-
-static INLINE void transpose(unsigned char *src[], int in_p,
- unsigned char *dst[], int out_p,
- int num_8x8_to_transpose) {
- int idx8x8 = 0;
- __m128i x0, x1, x2, x3, x4, x5, x6, x7;
- do {
- unsigned char *in = src[idx8x8];
- unsigned char *out = dst[idx8x8];
-
- x0 = _mm_loadl_epi64((__m128i *)(in + 0*in_p)); // 00 01 02 03 04 05 06 07
- x1 = _mm_loadl_epi64((__m128i *)(in + 1*in_p)); // 10 11 12 13 14 15 16 17
- // 00 10 01 11 02 12 03 13 04 14 05 15 06 16 07 17
- x0 = _mm_unpacklo_epi8(x0, x1);
-
- x2 = _mm_loadl_epi64((__m128i *)(in + 2*in_p)); // 20 21 22 23 24 25 26 27
- x3 = _mm_loadl_epi64((__m128i *)(in + 3*in_p)); // 30 31 32 33 34 35 36 37
- // 20 30 21 31 22 32 23 33 24 34 25 35 26 36 27 37
- x1 = _mm_unpacklo_epi8(x2, x3);
-
- x4 = _mm_loadl_epi64((__m128i *)(in + 4*in_p)); // 40 41 42 43 44 45 46 47
- x5 = _mm_loadl_epi64((__m128i *)(in + 5*in_p)); // 50 51 52 53 54 55 56 57
- // 40 50 41 51 42 52 43 53 44 54 45 55 46 56 47 57
- x2 = _mm_unpacklo_epi8(x4, x5);
-
- x6 = _mm_loadl_epi64((__m128i *)(in + 6*in_p)); // 60 61 62 63 64 65 66 67
- x7 = _mm_loadl_epi64((__m128i *)(in + 7*in_p)); // 70 71 72 73 74 75 76 77
- // 60 70 61 71 62 72 63 73 64 74 65 75 66 76 67 77
- x3 = _mm_unpacklo_epi8(x6, x7);
-
- // 00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33
- x4 = _mm_unpacklo_epi16(x0, x1);
- // 40 50 60 70 41 51 61 71 42 52 62 72 43 53 63 73
- x5 = _mm_unpacklo_epi16(x2, x3);
- // 00 10 20 30 40 50 60 70 01 11 21 31 41 51 61 71
- x6 = _mm_unpacklo_epi32(x4, x5);
- _mm_storel_pd((double *)(out + 0*out_p),
- _mm_castsi128_pd(x6)); // 00 10 20 30 40 50 60 70
- _mm_storeh_pd((double *)(out + 1*out_p),
- _mm_castsi128_pd(x6)); // 01 11 21 31 41 51 61 71
- // 02 12 22 32 42 52 62 72 03 13 23 33 43 53 63 73
- x7 = _mm_unpackhi_epi32(x4, x5);
- _mm_storel_pd((double *)(out + 2*out_p),
- _mm_castsi128_pd(x7)); // 02 12 22 32 42 52 62 72
- _mm_storeh_pd((double *)(out + 3*out_p),
- _mm_castsi128_pd(x7)); // 03 13 23 33 43 53 63 73
-
- // 04 14 24 34 05 15 25 35 06 16 26 36 07 17 27 37
- x4 = _mm_unpackhi_epi16(x0, x1);
- // 44 54 64 74 45 55 65 75 46 56 66 76 47 57 67 77
- x5 = _mm_unpackhi_epi16(x2, x3);
- // 04 14 24 34 44 54 64 74 05 15 25 35 45 55 65 75
- x6 = _mm_unpacklo_epi32(x4, x5);
- _mm_storel_pd((double *)(out + 4*out_p),
- _mm_castsi128_pd(x6)); // 04 14 24 34 44 54 64 74
- _mm_storeh_pd((double *)(out + 5*out_p),
- _mm_castsi128_pd(x6)); // 05 15 25 35 45 55 65 75
- // 06 16 26 36 46 56 66 76 07 17 27 37 47 57 67 77
- x7 = _mm_unpackhi_epi32(x4, x5);
-
- _mm_storel_pd((double *)(out + 6*out_p),
- _mm_castsi128_pd(x7)); // 06 16 26 36 46 56 66 76
- _mm_storeh_pd((double *)(out + 7*out_p),
- _mm_castsi128_pd(x7)); // 07 17 27 37 47 57 67 77
- } while (++idx8x8 < num_8x8_to_transpose);
-}
-
-void vpx_lpf_vertical_4_dual_sse2(uint8_t *s, int p, const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1) {
- DECLARE_ALIGNED(16, unsigned char, t_dst[16 * 8]);
- unsigned char *src[2];
- unsigned char *dst[2];
-
- // Transpose 8x16
- transpose8x16(s - 4, s - 4 + p * 8, p, t_dst, 16);
-
- // Loop filtering
- vpx_lpf_horizontal_4_dual_sse2(t_dst + 4 * 16, 16, blimit0, limit0, thresh0,
- blimit1, limit1, thresh1);
- src[0] = t_dst;
- src[1] = t_dst + 8;
- dst[0] = s - 4;
- dst[1] = s - 4 + p * 8;
-
- // Transpose back
- transpose(src, 16, dst, p, 2);
-}
-
-void vpx_lpf_vertical_8_sse2(unsigned char *s, int p,
- const unsigned char *blimit,
- const unsigned char *limit,
- const unsigned char *thresh) {
- DECLARE_ALIGNED(8, unsigned char, t_dst[8 * 8]);
- unsigned char *src[1];
- unsigned char *dst[1];
-
- // Transpose 8x8
- src[0] = s - 4;
- dst[0] = t_dst;
-
- transpose(src, p, dst, 8, 1);
-
- // Loop filtering
- vpx_lpf_horizontal_8_sse2(t_dst + 4 * 8, 8, blimit, limit, thresh);
-
- src[0] = t_dst;
- dst[0] = s - 4;
-
- // Transpose back
- transpose(src, 8, dst, p, 1);
-}
-
-void vpx_lpf_vertical_8_dual_sse2(uint8_t *s, int p, const uint8_t *blimit0,
- const uint8_t *limit0,
- const uint8_t *thresh0,
- const uint8_t *blimit1,
- const uint8_t *limit1,
- const uint8_t *thresh1) {
- DECLARE_ALIGNED(16, unsigned char, t_dst[16 * 8]);
- unsigned char *src[2];
- unsigned char *dst[2];
-
- // Transpose 8x16
- transpose8x16(s - 4, s - 4 + p * 8, p, t_dst, 16);
-
- // Loop filtering
- vpx_lpf_horizontal_8_dual_sse2(t_dst + 4 * 16, 16, blimit0, limit0, thresh0,
- blimit1, limit1, thresh1);
- src[0] = t_dst;
- src[1] = t_dst + 8;
-
- dst[0] = s - 4;
- dst[1] = s - 4 + p * 8;
-
- // Transpose back
- transpose(src, 16, dst, p, 2);
-}
-
-void vpx_lpf_vertical_16_sse2(unsigned char *s, int p,
- const unsigned char *blimit,
- const unsigned char *limit,
- const unsigned char *thresh) {
- DECLARE_ALIGNED(8, unsigned char, t_dst[8 * 16]);
- unsigned char *src[2];
- unsigned char *dst[2];
-
- src[0] = s - 8;
- src[1] = s;
- dst[0] = t_dst;
- dst[1] = t_dst + 8 * 8;
-
- // Transpose 16x8
- transpose(src, p, dst, 8, 2);
-
- // Loop filtering
- vpx_lpf_horizontal_edge_8_sse2(t_dst + 8 * 8, 8, blimit, limit, thresh);
-
- src[0] = t_dst;
- src[1] = t_dst + 8 * 8;
- dst[0] = s - 8;
- dst[1] = s;
-
- // Transpose back
- transpose(src, 8, dst, p, 2);
-}
-
-void vpx_lpf_vertical_16_dual_sse2(unsigned char *s, int p,
- const uint8_t *blimit, const uint8_t *limit,
- const uint8_t *thresh) {
- DECLARE_ALIGNED(16, unsigned char, t_dst[256]);
-
- // Transpose 16x16
- transpose8x16(s - 8, s - 8 + 8 * p, p, t_dst, 16);
- transpose8x16(s, s + 8 * p, p, t_dst + 8 * 16, 16);
-
- // Loop filtering
- vpx_lpf_horizontal_edge_16_sse2(t_dst + 8 * 16, 16, blimit, limit, thresh);
-
- // Transpose back
- transpose8x16(t_dst, t_dst + 8 * 16, 16, s - 8, p);
- transpose8x16(t_dst + 8, t_dst + 8 + 8 * 16, 16, s - 8 + 8 * p, p);
-}
diff --git a/thirdparty/libvpx/vpx_dsp/x86/txfm_common_sse2.h b/thirdparty/libvpx/vpx_dsp/x86/txfm_common_sse2.h
deleted file mode 100644
index 536b206876..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/txfm_common_sse2.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_DSP_X86_TXFM_COMMON_SSE2_H_
-#define VPX_DSP_X86_TXFM_COMMON_SSE2_H_
-
-#include <emmintrin.h>
-#include "vpx/vpx_integer.h"
-
-#define pair_set_epi16(a, b) \
- _mm_set_epi16((int16_t)(b), (int16_t)(a), (int16_t)(b), (int16_t)(a), \
- (int16_t)(b), (int16_t)(a), (int16_t)(b), (int16_t)(a))
-
-#define dual_set_epi16(a, b) \
- _mm_set_epi16((int16_t)(b), (int16_t)(b), (int16_t)(b), (int16_t)(b), \
- (int16_t)(a), (int16_t)(a), (int16_t)(a), (int16_t)(a))
-
-#define octa_set_epi16(a, b, c, d, e, f, g, h) \
- _mm_setr_epi16((int16_t)(a), (int16_t)(b), (int16_t)(c), (int16_t)(d), \
- (int16_t)(e), (int16_t)(f), (int16_t)(g), (int16_t)(h))
-
-#endif // VPX_DSP_X86_TXFM_COMMON_SSE2_H_
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_asm_stubs.c b/thirdparty/libvpx/vpx_dsp/x86/vpx_asm_stubs.c
deleted file mode 100644
index 422b0fc422..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_asm_stubs.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "./vpx_config.h"
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/x86/convolve.h"
-
-#if HAVE_SSE2
-filter8_1dfunction vpx_filter_block1d16_v8_sse2;
-filter8_1dfunction vpx_filter_block1d16_h8_sse2;
-filter8_1dfunction vpx_filter_block1d8_v8_sse2;
-filter8_1dfunction vpx_filter_block1d8_h8_sse2;
-filter8_1dfunction vpx_filter_block1d4_v8_sse2;
-filter8_1dfunction vpx_filter_block1d4_h8_sse2;
-filter8_1dfunction vpx_filter_block1d16_v8_avg_sse2;
-filter8_1dfunction vpx_filter_block1d16_h8_avg_sse2;
-filter8_1dfunction vpx_filter_block1d8_v8_avg_sse2;
-filter8_1dfunction vpx_filter_block1d8_h8_avg_sse2;
-filter8_1dfunction vpx_filter_block1d4_v8_avg_sse2;
-filter8_1dfunction vpx_filter_block1d4_h8_avg_sse2;
-
-filter8_1dfunction vpx_filter_block1d16_v2_sse2;
-filter8_1dfunction vpx_filter_block1d16_h2_sse2;
-filter8_1dfunction vpx_filter_block1d8_v2_sse2;
-filter8_1dfunction vpx_filter_block1d8_h2_sse2;
-filter8_1dfunction vpx_filter_block1d4_v2_sse2;
-filter8_1dfunction vpx_filter_block1d4_h2_sse2;
-filter8_1dfunction vpx_filter_block1d16_v2_avg_sse2;
-filter8_1dfunction vpx_filter_block1d16_h2_avg_sse2;
-filter8_1dfunction vpx_filter_block1d8_v2_avg_sse2;
-filter8_1dfunction vpx_filter_block1d8_h2_avg_sse2;
-filter8_1dfunction vpx_filter_block1d4_v2_avg_sse2;
-filter8_1dfunction vpx_filter_block1d4_h2_avg_sse2;
-
-// void vpx_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
-FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
-FUN_CONV_1D(avg_horiz, x_step_q4, filter_x, h, src, avg_, sse2);
-FUN_CONV_1D(avg_vert, y_step_q4, filter_y, v, src - src_stride * 3, avg_, sse2);
-
-// void vpx_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-FUN_CONV_2D(, sse2);
-FUN_CONV_2D(avg_ , sse2);
-
-#if CONFIG_VP9_HIGHBITDEPTH && ARCH_X86_64
-highbd_filter8_1dfunction vpx_highbd_filter_block1d16_v8_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d16_h8_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d8_v8_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d8_h8_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d4_v8_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d4_h8_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d16_v8_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d16_h8_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d8_v8_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d8_h8_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d4_v8_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d4_h8_avg_sse2;
-
-highbd_filter8_1dfunction vpx_highbd_filter_block1d16_v2_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d16_h2_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d8_v2_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d8_h2_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d4_v2_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d4_h2_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d16_v2_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d16_h2_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d8_v2_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d8_h2_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d4_v2_avg_sse2;
-highbd_filter8_1dfunction vpx_highbd_filter_block1d4_h2_avg_sse2;
-
-// void vpx_highbd_convolve8_horiz_sse2(const uint8_t *src,
-// ptrdiff_t src_stride,
-// uint8_t *dst,
-// ptrdiff_t dst_stride,
-// const int16_t *filter_x,
-// int x_step_q4,
-// const int16_t *filter_y,
-// int y_step_q4,
-// int w, int h, int bd);
-// void vpx_highbd_convolve8_vert_sse2(const uint8_t *src,
-// ptrdiff_t src_stride,
-// uint8_t *dst,
-// ptrdiff_t dst_stride,
-// const int16_t *filter_x,
-// int x_step_q4,
-// const int16_t *filter_y,
-// int y_step_q4,
-// int w, int h, int bd);
-// void vpx_highbd_convolve8_avg_horiz_sse2(const uint8_t *src,
-// ptrdiff_t src_stride,
-// uint8_t *dst,
-// ptrdiff_t dst_stride,
-// const int16_t *filter_x,
-// int x_step_q4,
-// const int16_t *filter_y,
-// int y_step_q4,
-// int w, int h, int bd);
-// void vpx_highbd_convolve8_avg_vert_sse2(const uint8_t *src,
-// ptrdiff_t src_stride,
-// uint8_t *dst,
-// ptrdiff_t dst_stride,
-// const int16_t *filter_x,
-// int x_step_q4,
-// const int16_t *filter_y,
-// int y_step_q4,
-// int w, int h, int bd);
-HIGH_FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
-HIGH_FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
-HIGH_FUN_CONV_1D(avg_horiz, x_step_q4, filter_x, h, src, avg_, sse2);
-HIGH_FUN_CONV_1D(avg_vert, y_step_q4, filter_y, v, src - src_stride * 3, avg_,
- sse2);
-
-// void vpx_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h, int bd);
-// void vpx_highbd_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h, int bd);
-HIGH_FUN_CONV_2D(, sse2);
-HIGH_FUN_CONV_2D(avg_ , sse2);
-#endif // CONFIG_VP9_HIGHBITDEPTH && ARCH_X86_64
-#endif // HAVE_SSE2
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm b/thirdparty/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm
deleted file mode 100644
index abc0270655..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm
+++ /dev/null
@@ -1,228 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "third_party/x86inc/x86inc.asm"
-
-SECTION .text
-
-%macro convolve_fn 1-2
-%ifidn %1, avg
-%define AUX_XMM_REGS 4
-%else
-%define AUX_XMM_REGS 0
-%endif
-%ifidn %2, highbd
-%define pavg pavgw
-cglobal %2_convolve_%1, 4, 7, 4+AUX_XMM_REGS, src, src_stride, \
- dst, dst_stride, \
- fx, fxs, fy, fys, w, h, bd
-%else
-%define pavg pavgb
-cglobal convolve_%1, 4, 7, 4+AUX_XMM_REGS, src, src_stride, \
- dst, dst_stride, \
- fx, fxs, fy, fys, w, h
-%endif
- mov r4d, dword wm
-%ifidn %2, highbd
- shl r4d, 1
- shl srcq, 1
- shl src_strideq, 1
- shl dstq, 1
- shl dst_strideq, 1
-%else
- cmp r4d, 4
- je .w4
-%endif
- cmp r4d, 8
- je .w8
- cmp r4d, 16
- je .w16
- cmp r4d, 32
- je .w32
-%ifidn %2, highbd
- cmp r4d, 64
- je .w64
-
- mov r4d, dword hm
-.loop128:
- movu m0, [srcq]
- movu m1, [srcq+16]
- movu m2, [srcq+32]
- movu m3, [srcq+48]
-%ifidn %1, avg
- pavg m0, [dstq]
- pavg m1, [dstq+16]
- pavg m2, [dstq+32]
- pavg m3, [dstq+48]
-%endif
- mova [dstq ], m0
- mova [dstq+16], m1
- mova [dstq+32], m2
- mova [dstq+48], m3
- movu m0, [srcq+64]
- movu m1, [srcq+80]
- movu m2, [srcq+96]
- movu m3, [srcq+112]
- add srcq, src_strideq
-%ifidn %1, avg
- pavg m0, [dstq+64]
- pavg m1, [dstq+80]
- pavg m2, [dstq+96]
- pavg m3, [dstq+112]
-%endif
- mova [dstq+64], m0
- mova [dstq+80], m1
- mova [dstq+96], m2
- mova [dstq+112], m3
- add dstq, dst_strideq
- dec r4d
- jnz .loop128
- RET
-%endif
-
-.w64
- mov r4d, dword hm
-.loop64:
- movu m0, [srcq]
- movu m1, [srcq+16]
- movu m2, [srcq+32]
- movu m3, [srcq+48]
- add srcq, src_strideq
-%ifidn %1, avg
- pavg m0, [dstq]
- pavg m1, [dstq+16]
- pavg m2, [dstq+32]
- pavg m3, [dstq+48]
-%endif
- mova [dstq ], m0
- mova [dstq+16], m1
- mova [dstq+32], m2
- mova [dstq+48], m3
- add dstq, dst_strideq
- dec r4d
- jnz .loop64
- RET
-
-.w32:
- mov r4d, dword hm
-.loop32:
- movu m0, [srcq]
- movu m1, [srcq+16]
- movu m2, [srcq+src_strideq]
- movu m3, [srcq+src_strideq+16]
- lea srcq, [srcq+src_strideq*2]
-%ifidn %1, avg
- pavg m0, [dstq]
- pavg m1, [dstq +16]
- pavg m2, [dstq+dst_strideq]
- pavg m3, [dstq+dst_strideq+16]
-%endif
- mova [dstq ], m0
- mova [dstq +16], m1
- mova [dstq+dst_strideq ], m2
- mova [dstq+dst_strideq+16], m3
- lea dstq, [dstq+dst_strideq*2]
- sub r4d, 2
- jnz .loop32
- RET
-
-.w16:
- mov r4d, dword hm
- lea r5q, [src_strideq*3]
- lea r6q, [dst_strideq*3]
-.loop16:
- movu m0, [srcq]
- movu m1, [srcq+src_strideq]
- movu m2, [srcq+src_strideq*2]
- movu m3, [srcq+r5q]
- lea srcq, [srcq+src_strideq*4]
-%ifidn %1, avg
- pavg m0, [dstq]
- pavg m1, [dstq+dst_strideq]
- pavg m2, [dstq+dst_strideq*2]
- pavg m3, [dstq+r6q]
-%endif
- mova [dstq ], m0
- mova [dstq+dst_strideq ], m1
- mova [dstq+dst_strideq*2], m2
- mova [dstq+r6q ], m3
- lea dstq, [dstq+dst_strideq*4]
- sub r4d, 4
- jnz .loop16
- RET
-
-.w8:
- mov r4d, dword hm
- lea r5q, [src_strideq*3]
- lea r6q, [dst_strideq*3]
-.loop8:
- movh m0, [srcq]
- movh m1, [srcq+src_strideq]
- movh m2, [srcq+src_strideq*2]
- movh m3, [srcq+r5q]
- lea srcq, [srcq+src_strideq*4]
-%ifidn %1, avg
- movh m4, [dstq]
- movh m5, [dstq+dst_strideq]
- movh m6, [dstq+dst_strideq*2]
- movh m7, [dstq+r6q]
- pavg m0, m4
- pavg m1, m5
- pavg m2, m6
- pavg m3, m7
-%endif
- movh [dstq ], m0
- movh [dstq+dst_strideq ], m1
- movh [dstq+dst_strideq*2], m2
- movh [dstq+r6q ], m3
- lea dstq, [dstq+dst_strideq*4]
- sub r4d, 4
- jnz .loop8
- RET
-
-%ifnidn %2, highbd
-.w4:
- mov r4d, dword hm
- lea r5q, [src_strideq*3]
- lea r6q, [dst_strideq*3]
-.loop4:
- movd m0, [srcq]
- movd m1, [srcq+src_strideq]
- movd m2, [srcq+src_strideq*2]
- movd m3, [srcq+r5q]
- lea srcq, [srcq+src_strideq*4]
-%ifidn %1, avg
- movd m4, [dstq]
- movd m5, [dstq+dst_strideq]
- movd m6, [dstq+dst_strideq*2]
- movd m7, [dstq+r6q]
- pavg m0, m4
- pavg m1, m5
- pavg m2, m6
- pavg m3, m7
-%endif
- movd [dstq ], m0
- movd [dstq+dst_strideq ], m1
- movd [dstq+dst_strideq*2], m2
- movd [dstq+r6q ], m3
- lea dstq, [dstq+dst_strideq*4]
- sub r4d, 4
- jnz .loop4
- RET
-%endif
-%endmacro
-
-INIT_XMM sse2
-convolve_fn copy
-convolve_fn avg
-%if CONFIG_VP9_HIGHBITDEPTH
-convolve_fn copy, highbd
-convolve_fn avg, highbd
-%endif
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c b/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
deleted file mode 100644
index d8a92354c9..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
+++ /dev/null
@@ -1,606 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// Due to a header conflict between math.h and intrinsics includes with ceil()
-// in certain configurations under vs9 this include needs to precede
-// immintrin.h.
-
-#include <immintrin.h>
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/x86/convolve.h"
-#include "vpx_ports/mem.h"
-
-// filters for 16_h8 and 16_v8
-DECLARE_ALIGNED(32, static const uint8_t, filt1_global_avx2[32]) = {
- 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
- 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8
-};
-
-DECLARE_ALIGNED(32, static const uint8_t, filt2_global_avx2[32]) = {
- 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10,
- 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10
-};
-
-DECLARE_ALIGNED(32, static const uint8_t, filt3_global_avx2[32]) = {
- 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12,
- 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12
-};
-
-DECLARE_ALIGNED(32, static const uint8_t, filt4_global_avx2[32]) = {
- 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14,
- 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14
-};
-
-#if defined(__clang__)
-// -- GODOT start -
-# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ <= 3) || \
- (!defined(__MACPORTS__) && defined(__APPLE__) && \
- ((__clang_major__ == 4 && __clang_minor__ <= 2) || \
- (__clang_major__ == 5 && __clang_minor__ == 0)))
-// -- GODOT end --
-# define MM256_BROADCASTSI128_SI256(x) \
- _mm_broadcastsi128_si256((__m128i const *)&(x))
-# else // clang > 3.3, and not 5.0 on macosx.
-# define MM256_BROADCASTSI128_SI256(x) _mm256_broadcastsi128_si256(x)
-# endif // clang <= 3.3
-#elif defined(__GNUC__)
-# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 6)
-# define MM256_BROADCASTSI128_SI256(x) \
- _mm_broadcastsi128_si256((__m128i const *)&(x))
-# elif __GNUC__ == 4 && __GNUC_MINOR__ == 7
-# define MM256_BROADCASTSI128_SI256(x) _mm_broadcastsi128_si256(x)
-# else // gcc > 4.7
-# define MM256_BROADCASTSI128_SI256(x) _mm256_broadcastsi128_si256(x)
-# endif // gcc <= 4.6
-#else // !(gcc || clang)
-# define MM256_BROADCASTSI128_SI256(x) _mm256_broadcastsi128_si256(x)
-#endif // __clang__
-
-static void vpx_filter_block1d16_h8_avx2(const uint8_t *src_ptr,
- ptrdiff_t src_pixels_per_line,
- uint8_t *output_ptr,
- ptrdiff_t output_pitch,
- uint32_t output_height,
- const int16_t *filter) {
- __m128i filtersReg;
- __m256i addFilterReg64, filt1Reg, filt2Reg, filt3Reg, filt4Reg;
- __m256i firstFilters, secondFilters, thirdFilters, forthFilters;
- __m256i srcRegFilt32b1_1, srcRegFilt32b2_1, srcRegFilt32b2, srcRegFilt32b3;
- __m256i srcReg32b1, srcReg32b2, filtersReg32;
- unsigned int i;
- ptrdiff_t src_stride, dst_stride;
-
- // create a register with 0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64
- addFilterReg64 = _mm256_set1_epi32((int)0x0400040u);
- filtersReg = _mm_loadu_si128((const __m128i *)filter);
- // converting the 16 bit (short) to 8 bit (byte) and have the same data
- // in both lanes of 128 bit register.
- filtersReg =_mm_packs_epi16(filtersReg, filtersReg);
- // have the same data in both lanes of a 256 bit register
- filtersReg32 = MM256_BROADCASTSI128_SI256(filtersReg);
-
- // duplicate only the first 16 bits (first and second byte)
- // across 256 bit register
- firstFilters = _mm256_shuffle_epi8(filtersReg32,
- _mm256_set1_epi16(0x100u));
- // duplicate only the second 16 bits (third and forth byte)
- // across 256 bit register
- secondFilters = _mm256_shuffle_epi8(filtersReg32,
- _mm256_set1_epi16(0x302u));
- // duplicate only the third 16 bits (fifth and sixth byte)
- // across 256 bit register
- thirdFilters = _mm256_shuffle_epi8(filtersReg32,
- _mm256_set1_epi16(0x504u));
- // duplicate only the forth 16 bits (seventh and eighth byte)
- // across 256 bit register
- forthFilters = _mm256_shuffle_epi8(filtersReg32,
- _mm256_set1_epi16(0x706u));
-
- filt1Reg = _mm256_load_si256((__m256i const *)filt1_global_avx2);
- filt2Reg = _mm256_load_si256((__m256i const *)filt2_global_avx2);
- filt3Reg = _mm256_load_si256((__m256i const *)filt3_global_avx2);
- filt4Reg = _mm256_load_si256((__m256i const *)filt4_global_avx2);
-
- // multiple the size of the source and destination stride by two
- src_stride = src_pixels_per_line << 1;
- dst_stride = output_pitch << 1;
- for (i = output_height; i > 1; i-=2) {
- // load the 2 strides of source
- srcReg32b1 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr - 3)));
- srcReg32b1 = _mm256_inserti128_si256(srcReg32b1,
- _mm_loadu_si128((const __m128i *)
- (src_ptr+src_pixels_per_line-3)), 1);
-
- // filter the source buffer
- srcRegFilt32b1_1= _mm256_shuffle_epi8(srcReg32b1, filt1Reg);
- srcRegFilt32b2= _mm256_shuffle_epi8(srcReg32b1, filt4Reg);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt32b1_1 = _mm256_maddubs_epi16(srcRegFilt32b1_1, firstFilters);
- srcRegFilt32b2 = _mm256_maddubs_epi16(srcRegFilt32b2, forthFilters);
-
- // add and saturate the results together
- srcRegFilt32b1_1 = _mm256_adds_epi16(srcRegFilt32b1_1, srcRegFilt32b2);
-
- // filter the source buffer
- srcRegFilt32b3= _mm256_shuffle_epi8(srcReg32b1, filt2Reg);
- srcRegFilt32b2= _mm256_shuffle_epi8(srcReg32b1, filt3Reg);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt32b3 = _mm256_maddubs_epi16(srcRegFilt32b3, secondFilters);
- srcRegFilt32b2 = _mm256_maddubs_epi16(srcRegFilt32b2, thirdFilters);
-
- // add and saturate the results together
- srcRegFilt32b1_1 = _mm256_adds_epi16(srcRegFilt32b1_1,
- _mm256_min_epi16(srcRegFilt32b3, srcRegFilt32b2));
-
- // reading 2 strides of the next 16 bytes
- // (part of it was being read by earlier read)
- srcReg32b2 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + 5)));
- srcReg32b2 = _mm256_inserti128_si256(srcReg32b2,
- _mm_loadu_si128((const __m128i *)
- (src_ptr+src_pixels_per_line+5)), 1);
-
- // add and saturate the results together
- srcRegFilt32b1_1 = _mm256_adds_epi16(srcRegFilt32b1_1,
- _mm256_max_epi16(srcRegFilt32b3, srcRegFilt32b2));
-
- // filter the source buffer
- srcRegFilt32b2_1 = _mm256_shuffle_epi8(srcReg32b2, filt1Reg);
- srcRegFilt32b2 = _mm256_shuffle_epi8(srcReg32b2, filt4Reg);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt32b2_1 = _mm256_maddubs_epi16(srcRegFilt32b2_1, firstFilters);
- srcRegFilt32b2 = _mm256_maddubs_epi16(srcRegFilt32b2, forthFilters);
-
- // add and saturate the results together
- srcRegFilt32b2_1 = _mm256_adds_epi16(srcRegFilt32b2_1, srcRegFilt32b2);
-
- // filter the source buffer
- srcRegFilt32b3= _mm256_shuffle_epi8(srcReg32b2, filt2Reg);
- srcRegFilt32b2= _mm256_shuffle_epi8(srcReg32b2, filt3Reg);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt32b3 = _mm256_maddubs_epi16(srcRegFilt32b3, secondFilters);
- srcRegFilt32b2 = _mm256_maddubs_epi16(srcRegFilt32b2, thirdFilters);
-
- // add and saturate the results together
- srcRegFilt32b2_1 = _mm256_adds_epi16(srcRegFilt32b2_1,
- _mm256_min_epi16(srcRegFilt32b3, srcRegFilt32b2));
- srcRegFilt32b2_1 = _mm256_adds_epi16(srcRegFilt32b2_1,
- _mm256_max_epi16(srcRegFilt32b3, srcRegFilt32b2));
-
-
- srcRegFilt32b1_1 = _mm256_adds_epi16(srcRegFilt32b1_1, addFilterReg64);
-
- srcRegFilt32b2_1 = _mm256_adds_epi16(srcRegFilt32b2_1, addFilterReg64);
-
- // shift by 7 bit each 16 bit
- srcRegFilt32b1_1 = _mm256_srai_epi16(srcRegFilt32b1_1, 7);
- srcRegFilt32b2_1 = _mm256_srai_epi16(srcRegFilt32b2_1, 7);
-
- // shrink to 8 bit each 16 bits, the first lane contain the first
- // convolve result and the second lane contain the second convolve
- // result
- srcRegFilt32b1_1 = _mm256_packus_epi16(srcRegFilt32b1_1,
- srcRegFilt32b2_1);
-
- src_ptr+=src_stride;
-
- // save 16 bytes
- _mm_store_si128((__m128i*)output_ptr,
- _mm256_castsi256_si128(srcRegFilt32b1_1));
-
- // save the next 16 bits
- _mm_store_si128((__m128i*)(output_ptr+output_pitch),
- _mm256_extractf128_si256(srcRegFilt32b1_1, 1));
- output_ptr+=dst_stride;
- }
-
- // if the number of strides is odd.
- // process only 16 bytes
- if (i > 0) {
- __m128i srcReg1, srcReg2, srcRegFilt1_1, srcRegFilt2_1;
- __m128i srcRegFilt2, srcRegFilt3;
-
- srcReg1 = _mm_loadu_si128((const __m128i *)(src_ptr - 3));
-
- // filter the source buffer
- srcRegFilt1_1 = _mm_shuffle_epi8(srcReg1,
- _mm256_castsi256_si128(filt1Reg));
- srcRegFilt2 = _mm_shuffle_epi8(srcReg1,
- _mm256_castsi256_si128(filt4Reg));
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt1_1 = _mm_maddubs_epi16(srcRegFilt1_1,
- _mm256_castsi256_si128(firstFilters));
- srcRegFilt2 = _mm_maddubs_epi16(srcRegFilt2,
- _mm256_castsi256_si128(forthFilters));
-
- // add and saturate the results together
- srcRegFilt1_1 = _mm_adds_epi16(srcRegFilt1_1, srcRegFilt2);
-
- // filter the source buffer
- srcRegFilt3= _mm_shuffle_epi8(srcReg1,
- _mm256_castsi256_si128(filt2Reg));
- srcRegFilt2= _mm_shuffle_epi8(srcReg1,
- _mm256_castsi256_si128(filt3Reg));
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt3 = _mm_maddubs_epi16(srcRegFilt3,
- _mm256_castsi256_si128(secondFilters));
- srcRegFilt2 = _mm_maddubs_epi16(srcRegFilt2,
- _mm256_castsi256_si128(thirdFilters));
-
- // add and saturate the results together
- srcRegFilt1_1 = _mm_adds_epi16(srcRegFilt1_1,
- _mm_min_epi16(srcRegFilt3, srcRegFilt2));
-
- // reading the next 16 bytes
- // (part of it was being read by earlier read)
- srcReg2 = _mm_loadu_si128((const __m128i *)(src_ptr + 5));
-
- // add and saturate the results together
- srcRegFilt1_1 = _mm_adds_epi16(srcRegFilt1_1,
- _mm_max_epi16(srcRegFilt3, srcRegFilt2));
-
- // filter the source buffer
- srcRegFilt2_1 = _mm_shuffle_epi8(srcReg2,
- _mm256_castsi256_si128(filt1Reg));
- srcRegFilt2 = _mm_shuffle_epi8(srcReg2,
- _mm256_castsi256_si128(filt4Reg));
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt2_1 = _mm_maddubs_epi16(srcRegFilt2_1,
- _mm256_castsi256_si128(firstFilters));
- srcRegFilt2 = _mm_maddubs_epi16(srcRegFilt2,
- _mm256_castsi256_si128(forthFilters));
-
- // add and saturate the results together
- srcRegFilt2_1 = _mm_adds_epi16(srcRegFilt2_1, srcRegFilt2);
-
- // filter the source buffer
- srcRegFilt3 = _mm_shuffle_epi8(srcReg2,
- _mm256_castsi256_si128(filt2Reg));
- srcRegFilt2 = _mm_shuffle_epi8(srcReg2,
- _mm256_castsi256_si128(filt3Reg));
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt3 = _mm_maddubs_epi16(srcRegFilt3,
- _mm256_castsi256_si128(secondFilters));
- srcRegFilt2 = _mm_maddubs_epi16(srcRegFilt2,
- _mm256_castsi256_si128(thirdFilters));
-
- // add and saturate the results together
- srcRegFilt2_1 = _mm_adds_epi16(srcRegFilt2_1,
- _mm_min_epi16(srcRegFilt3, srcRegFilt2));
- srcRegFilt2_1 = _mm_adds_epi16(srcRegFilt2_1,
- _mm_max_epi16(srcRegFilt3, srcRegFilt2));
-
-
- srcRegFilt1_1 = _mm_adds_epi16(srcRegFilt1_1,
- _mm256_castsi256_si128(addFilterReg64));
-
- srcRegFilt2_1 = _mm_adds_epi16(srcRegFilt2_1,
- _mm256_castsi256_si128(addFilterReg64));
-
- // shift by 7 bit each 16 bit
- srcRegFilt1_1 = _mm_srai_epi16(srcRegFilt1_1, 7);
- srcRegFilt2_1 = _mm_srai_epi16(srcRegFilt2_1, 7);
-
- // shrink to 8 bit each 16 bits, the first lane contain the first
- // convolve result and the second lane contain the second convolve
- // result
- srcRegFilt1_1 = _mm_packus_epi16(srcRegFilt1_1, srcRegFilt2_1);
-
- // save 16 bytes
- _mm_store_si128((__m128i*)output_ptr, srcRegFilt1_1);
- }
-}
-
-static void vpx_filter_block1d16_v8_avx2(const uint8_t *src_ptr,
- ptrdiff_t src_pitch,
- uint8_t *output_ptr,
- ptrdiff_t out_pitch,
- uint32_t output_height,
- const int16_t *filter) {
- __m128i filtersReg;
- __m256i addFilterReg64;
- __m256i srcReg32b1, srcReg32b2, srcReg32b3, srcReg32b4, srcReg32b5;
- __m256i srcReg32b6, srcReg32b7, srcReg32b8, srcReg32b9, srcReg32b10;
- __m256i srcReg32b11, srcReg32b12, filtersReg32;
- __m256i firstFilters, secondFilters, thirdFilters, forthFilters;
- unsigned int i;
- ptrdiff_t src_stride, dst_stride;
-
- // create a register with 0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64
- addFilterReg64 = _mm256_set1_epi32((int)0x0400040u);
- filtersReg = _mm_loadu_si128((const __m128i *)filter);
- // converting the 16 bit (short) to 8 bit (byte) and have the
- // same data in both lanes of 128 bit register.
- filtersReg =_mm_packs_epi16(filtersReg, filtersReg);
- // have the same data in both lanes of a 256 bit register
- filtersReg32 = MM256_BROADCASTSI128_SI256(filtersReg);
-
- // duplicate only the first 16 bits (first and second byte)
- // across 256 bit register
- firstFilters = _mm256_shuffle_epi8(filtersReg32,
- _mm256_set1_epi16(0x100u));
- // duplicate only the second 16 bits (third and forth byte)
- // across 256 bit register
- secondFilters = _mm256_shuffle_epi8(filtersReg32,
- _mm256_set1_epi16(0x302u));
- // duplicate only the third 16 bits (fifth and sixth byte)
- // across 256 bit register
- thirdFilters = _mm256_shuffle_epi8(filtersReg32,
- _mm256_set1_epi16(0x504u));
- // duplicate only the forth 16 bits (seventh and eighth byte)
- // across 256 bit register
- forthFilters = _mm256_shuffle_epi8(filtersReg32,
- _mm256_set1_epi16(0x706u));
-
- // multiple the size of the source and destination stride by two
- src_stride = src_pitch << 1;
- dst_stride = out_pitch << 1;
-
- // load 16 bytes 7 times in stride of src_pitch
- srcReg32b1 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr)));
- srcReg32b2 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch)));
- srcReg32b3 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 2)));
- srcReg32b4 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 3)));
- srcReg32b5 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 4)));
- srcReg32b6 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 5)));
- srcReg32b7 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 6)));
-
- // have each consecutive loads on the same 256 register
- srcReg32b1 = _mm256_inserti128_si256(srcReg32b1,
- _mm256_castsi256_si128(srcReg32b2), 1);
- srcReg32b2 = _mm256_inserti128_si256(srcReg32b2,
- _mm256_castsi256_si128(srcReg32b3), 1);
- srcReg32b3 = _mm256_inserti128_si256(srcReg32b3,
- _mm256_castsi256_si128(srcReg32b4), 1);
- srcReg32b4 = _mm256_inserti128_si256(srcReg32b4,
- _mm256_castsi256_si128(srcReg32b5), 1);
- srcReg32b5 = _mm256_inserti128_si256(srcReg32b5,
- _mm256_castsi256_si128(srcReg32b6), 1);
- srcReg32b6 = _mm256_inserti128_si256(srcReg32b6,
- _mm256_castsi256_si128(srcReg32b7), 1);
-
- // merge every two consecutive registers except the last one
- srcReg32b10 = _mm256_unpacklo_epi8(srcReg32b1, srcReg32b2);
- srcReg32b1 = _mm256_unpackhi_epi8(srcReg32b1, srcReg32b2);
-
- // save
- srcReg32b11 = _mm256_unpacklo_epi8(srcReg32b3, srcReg32b4);
-
- // save
- srcReg32b3 = _mm256_unpackhi_epi8(srcReg32b3, srcReg32b4);
-
- // save
- srcReg32b2 = _mm256_unpacklo_epi8(srcReg32b5, srcReg32b6);
-
- // save
- srcReg32b5 = _mm256_unpackhi_epi8(srcReg32b5, srcReg32b6);
-
-
- for (i = output_height; i > 1; i-=2) {
- // load the last 2 loads of 16 bytes and have every two
- // consecutive loads in the same 256 bit register
- srcReg32b8 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 7)));
- srcReg32b7 = _mm256_inserti128_si256(srcReg32b7,
- _mm256_castsi256_si128(srcReg32b8), 1);
- srcReg32b9 = _mm256_castsi128_si256(
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 8)));
- srcReg32b8 = _mm256_inserti128_si256(srcReg32b8,
- _mm256_castsi256_si128(srcReg32b9), 1);
-
- // merge every two consecutive registers
- // save
- srcReg32b4 = _mm256_unpacklo_epi8(srcReg32b7, srcReg32b8);
- srcReg32b7 = _mm256_unpackhi_epi8(srcReg32b7, srcReg32b8);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcReg32b10 = _mm256_maddubs_epi16(srcReg32b10, firstFilters);
- srcReg32b6 = _mm256_maddubs_epi16(srcReg32b4, forthFilters);
-
- // add and saturate the results together
- srcReg32b10 = _mm256_adds_epi16(srcReg32b10, srcReg32b6);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcReg32b8 = _mm256_maddubs_epi16(srcReg32b11, secondFilters);
- srcReg32b12 = _mm256_maddubs_epi16(srcReg32b2, thirdFilters);
-
- // add and saturate the results together
- srcReg32b10 = _mm256_adds_epi16(srcReg32b10,
- _mm256_min_epi16(srcReg32b8, srcReg32b12));
- srcReg32b10 = _mm256_adds_epi16(srcReg32b10,
- _mm256_max_epi16(srcReg32b8, srcReg32b12));
-
- // multiply 2 adjacent elements with the filter and add the result
- srcReg32b1 = _mm256_maddubs_epi16(srcReg32b1, firstFilters);
- srcReg32b6 = _mm256_maddubs_epi16(srcReg32b7, forthFilters);
-
- srcReg32b1 = _mm256_adds_epi16(srcReg32b1, srcReg32b6);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcReg32b8 = _mm256_maddubs_epi16(srcReg32b3, secondFilters);
- srcReg32b12 = _mm256_maddubs_epi16(srcReg32b5, thirdFilters);
-
- // add and saturate the results together
- srcReg32b1 = _mm256_adds_epi16(srcReg32b1,
- _mm256_min_epi16(srcReg32b8, srcReg32b12));
- srcReg32b1 = _mm256_adds_epi16(srcReg32b1,
- _mm256_max_epi16(srcReg32b8, srcReg32b12));
-
- srcReg32b10 = _mm256_adds_epi16(srcReg32b10, addFilterReg64);
- srcReg32b1 = _mm256_adds_epi16(srcReg32b1, addFilterReg64);
-
- // shift by 7 bit each 16 bit
- srcReg32b10 = _mm256_srai_epi16(srcReg32b10, 7);
- srcReg32b1 = _mm256_srai_epi16(srcReg32b1, 7);
-
- // shrink to 8 bit each 16 bits, the first lane contain the first
- // convolve result and the second lane contain the second convolve
- // result
- srcReg32b1 = _mm256_packus_epi16(srcReg32b10, srcReg32b1);
-
- src_ptr+=src_stride;
-
- // save 16 bytes
- _mm_store_si128((__m128i*)output_ptr,
- _mm256_castsi256_si128(srcReg32b1));
-
- // save the next 16 bits
- _mm_store_si128((__m128i*)(output_ptr+out_pitch),
- _mm256_extractf128_si256(srcReg32b1, 1));
-
- output_ptr+=dst_stride;
-
- // save part of the registers for next strides
- srcReg32b10 = srcReg32b11;
- srcReg32b1 = srcReg32b3;
- srcReg32b11 = srcReg32b2;
- srcReg32b3 = srcReg32b5;
- srcReg32b2 = srcReg32b4;
- srcReg32b5 = srcReg32b7;
- srcReg32b7 = srcReg32b9;
- }
- if (i > 0) {
- __m128i srcRegFilt1, srcRegFilt3, srcRegFilt4, srcRegFilt5;
- __m128i srcRegFilt6, srcRegFilt7, srcRegFilt8;
- // load the last 16 bytes
- srcRegFilt8 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 7));
-
- // merge the last 2 results together
- srcRegFilt4 = _mm_unpacklo_epi8(
- _mm256_castsi256_si128(srcReg32b7), srcRegFilt8);
- srcRegFilt7 = _mm_unpackhi_epi8(
- _mm256_castsi256_si128(srcReg32b7), srcRegFilt8);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt1 = _mm_maddubs_epi16(_mm256_castsi256_si128(srcReg32b10),
- _mm256_castsi256_si128(firstFilters));
- srcRegFilt4 = _mm_maddubs_epi16(srcRegFilt4,
- _mm256_castsi256_si128(forthFilters));
- srcRegFilt3 = _mm_maddubs_epi16(_mm256_castsi256_si128(srcReg32b1),
- _mm256_castsi256_si128(firstFilters));
- srcRegFilt7 = _mm_maddubs_epi16(srcRegFilt7,
- _mm256_castsi256_si128(forthFilters));
-
- // add and saturate the results together
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, srcRegFilt4);
- srcRegFilt3 = _mm_adds_epi16(srcRegFilt3, srcRegFilt7);
-
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt4 = _mm_maddubs_epi16(_mm256_castsi256_si128(srcReg32b11),
- _mm256_castsi256_si128(secondFilters));
- srcRegFilt5 = _mm_maddubs_epi16(_mm256_castsi256_si128(srcReg32b3),
- _mm256_castsi256_si128(secondFilters));
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt6 = _mm_maddubs_epi16(_mm256_castsi256_si128(srcReg32b2),
- _mm256_castsi256_si128(thirdFilters));
- srcRegFilt7 = _mm_maddubs_epi16(_mm256_castsi256_si128(srcReg32b5),
- _mm256_castsi256_si128(thirdFilters));
-
- // add and saturate the results together
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1,
- _mm_min_epi16(srcRegFilt4, srcRegFilt6));
- srcRegFilt3 = _mm_adds_epi16(srcRegFilt3,
- _mm_min_epi16(srcRegFilt5, srcRegFilt7));
-
- // add and saturate the results together
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1,
- _mm_max_epi16(srcRegFilt4, srcRegFilt6));
- srcRegFilt3 = _mm_adds_epi16(srcRegFilt3,
- _mm_max_epi16(srcRegFilt5, srcRegFilt7));
-
-
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1,
- _mm256_castsi256_si128(addFilterReg64));
- srcRegFilt3 = _mm_adds_epi16(srcRegFilt3,
- _mm256_castsi256_si128(addFilterReg64));
-
- // shift by 7 bit each 16 bit
- srcRegFilt1 = _mm_srai_epi16(srcRegFilt1, 7);
- srcRegFilt3 = _mm_srai_epi16(srcRegFilt3, 7);
-
- // shrink to 8 bit each 16 bits, the first lane contain the first
- // convolve result and the second lane contain the second convolve
- // result
- srcRegFilt1 = _mm_packus_epi16(srcRegFilt1, srcRegFilt3);
-
- // save 16 bytes
- _mm_store_si128((__m128i*)output_ptr, srcRegFilt1);
- }
-}
-
-#if HAVE_AVX2 && HAVE_SSSE3
-filter8_1dfunction vpx_filter_block1d4_v8_ssse3;
-#if ARCH_X86_64
-filter8_1dfunction vpx_filter_block1d8_v8_intrin_ssse3;
-filter8_1dfunction vpx_filter_block1d8_h8_intrin_ssse3;
-filter8_1dfunction vpx_filter_block1d4_h8_intrin_ssse3;
-#define vpx_filter_block1d8_v8_avx2 vpx_filter_block1d8_v8_intrin_ssse3
-#define vpx_filter_block1d8_h8_avx2 vpx_filter_block1d8_h8_intrin_ssse3
-#define vpx_filter_block1d4_h8_avx2 vpx_filter_block1d4_h8_intrin_ssse3
-#else // ARCH_X86
-filter8_1dfunction vpx_filter_block1d8_v8_ssse3;
-filter8_1dfunction vpx_filter_block1d8_h8_ssse3;
-filter8_1dfunction vpx_filter_block1d4_h8_ssse3;
-#define vpx_filter_block1d8_v8_avx2 vpx_filter_block1d8_v8_ssse3
-#define vpx_filter_block1d8_h8_avx2 vpx_filter_block1d8_h8_ssse3
-#define vpx_filter_block1d4_h8_avx2 vpx_filter_block1d4_h8_ssse3
-#endif // ARCH_X86_64
-filter8_1dfunction vpx_filter_block1d16_v2_ssse3;
-filter8_1dfunction vpx_filter_block1d16_h2_ssse3;
-filter8_1dfunction vpx_filter_block1d8_v2_ssse3;
-filter8_1dfunction vpx_filter_block1d8_h2_ssse3;
-filter8_1dfunction vpx_filter_block1d4_v2_ssse3;
-filter8_1dfunction vpx_filter_block1d4_h2_ssse3;
-#define vpx_filter_block1d4_v8_avx2 vpx_filter_block1d4_v8_ssse3
-#define vpx_filter_block1d16_v2_avx2 vpx_filter_block1d16_v2_ssse3
-#define vpx_filter_block1d16_h2_avx2 vpx_filter_block1d16_h2_ssse3
-#define vpx_filter_block1d8_v2_avx2 vpx_filter_block1d8_v2_ssse3
-#define vpx_filter_block1d8_h2_avx2 vpx_filter_block1d8_h2_ssse3
-#define vpx_filter_block1d4_v2_avx2 vpx_filter_block1d4_v2_ssse3
-#define vpx_filter_block1d4_h2_avx2 vpx_filter_block1d4_h2_ssse3
-// void vpx_convolve8_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_vert_avx2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , avx2);
-FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , avx2);
-
-// void vpx_convolve8_avx2(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-FUN_CONV_2D(, avx2);
-#endif // HAVE_AX2 && HAVE_SSSE3
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c b/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c
deleted file mode 100644
index 6fd52087c7..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c
+++ /dev/null
@@ -1,915 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// Due to a header conflict between math.h and intrinsics includes with ceil()
-// in certain configurations under vs9 this include needs to precede
-// tmmintrin.h.
-
-#include <tmmintrin.h>
-
-#include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_dsp/x86/convolve.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/emmintrin_compat.h"
-
-// filters only for the 4_h8 convolution
-DECLARE_ALIGNED(16, static const uint8_t, filt1_4_h8[16]) = {
- 0, 1, 1, 2, 2, 3, 3, 4, 2, 3, 3, 4, 4, 5, 5, 6
-};
-
-DECLARE_ALIGNED(16, static const uint8_t, filt2_4_h8[16]) = {
- 4, 5, 5, 6, 6, 7, 7, 8, 6, 7, 7, 8, 8, 9, 9, 10
-};
-
-// filters for 8_h8 and 16_h8
-DECLARE_ALIGNED(16, static const uint8_t, filt1_global[16]) = {
- 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8
-};
-
-DECLARE_ALIGNED(16, static const uint8_t, filt2_global[16]) = {
- 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10
-};
-
-DECLARE_ALIGNED(16, static const uint8_t, filt3_global[16]) = {
- 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12
-};
-
-DECLARE_ALIGNED(16, static const uint8_t, filt4_global[16]) = {
- 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14
-};
-
-// These are reused by the avx2 intrinsics.
-filter8_1dfunction vpx_filter_block1d8_v8_intrin_ssse3;
-filter8_1dfunction vpx_filter_block1d8_h8_intrin_ssse3;
-filter8_1dfunction vpx_filter_block1d4_h8_intrin_ssse3;
-
-void vpx_filter_block1d4_h8_intrin_ssse3(const uint8_t *src_ptr,
- ptrdiff_t src_pixels_per_line,
- uint8_t *output_ptr,
- ptrdiff_t output_pitch,
- uint32_t output_height,
- const int16_t *filter) {
- __m128i firstFilters, secondFilters, shuffle1, shuffle2;
- __m128i srcRegFilt1, srcRegFilt2, srcRegFilt3, srcRegFilt4;
- __m128i addFilterReg64, filtersReg, srcReg, minReg;
- unsigned int i;
-
- // create a register with 0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64
- addFilterReg64 =_mm_set1_epi32((int)0x0400040u);
- filtersReg = _mm_loadu_si128((const __m128i *)filter);
- // converting the 16 bit (short) to 8 bit (byte) and have the same data
- // in both lanes of 128 bit register.
- filtersReg =_mm_packs_epi16(filtersReg, filtersReg);
-
- // duplicate only the first 16 bits in the filter into the first lane
- firstFilters = _mm_shufflelo_epi16(filtersReg, 0);
- // duplicate only the third 16 bit in the filter into the first lane
- secondFilters = _mm_shufflelo_epi16(filtersReg, 0xAAu);
- // duplicate only the seconds 16 bits in the filter into the second lane
- // firstFilters: k0 k1 k0 k1 k0 k1 k0 k1 k2 k3 k2 k3 k2 k3 k2 k3
- firstFilters = _mm_shufflehi_epi16(firstFilters, 0x55u);
- // duplicate only the forth 16 bits in the filter into the second lane
- // secondFilters: k4 k5 k4 k5 k4 k5 k4 k5 k6 k7 k6 k7 k6 k7 k6 k7
- secondFilters = _mm_shufflehi_epi16(secondFilters, 0xFFu);
-
- // loading the local filters
- shuffle1 =_mm_load_si128((__m128i const *)filt1_4_h8);
- shuffle2 = _mm_load_si128((__m128i const *)filt2_4_h8);
-
- for (i = 0; i < output_height; i++) {
- srcReg = _mm_loadu_si128((const __m128i *)(src_ptr - 3));
-
- // filter the source buffer
- srcRegFilt1= _mm_shuffle_epi8(srcReg, shuffle1);
- srcRegFilt2= _mm_shuffle_epi8(srcReg, shuffle2);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt1 = _mm_maddubs_epi16(srcRegFilt1, firstFilters);
- srcRegFilt2 = _mm_maddubs_epi16(srcRegFilt2, secondFilters);
-
- // extract the higher half of the lane
- srcRegFilt3 = _mm_srli_si128(srcRegFilt1, 8);
- srcRegFilt4 = _mm_srli_si128(srcRegFilt2, 8);
-
- minReg = _mm_min_epi16(srcRegFilt3, srcRegFilt2);
-
- // add and saturate all the results together
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, srcRegFilt4);
- srcRegFilt3 = _mm_max_epi16(srcRegFilt3, srcRegFilt2);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, minReg);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, srcRegFilt3);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, addFilterReg64);
-
- // shift by 7 bit each 16 bits
- srcRegFilt1 = _mm_srai_epi16(srcRegFilt1, 7);
-
- // shrink to 8 bit each 16 bits
- srcRegFilt1 = _mm_packus_epi16(srcRegFilt1, srcRegFilt1);
- src_ptr+=src_pixels_per_line;
-
- // save only 4 bytes
- *((int*)&output_ptr[0])= _mm_cvtsi128_si32(srcRegFilt1);
-
- output_ptr+=output_pitch;
- }
-}
-
-void vpx_filter_block1d8_h8_intrin_ssse3(const uint8_t *src_ptr,
- ptrdiff_t src_pixels_per_line,
- uint8_t *output_ptr,
- ptrdiff_t output_pitch,
- uint32_t output_height,
- const int16_t *filter) {
- __m128i firstFilters, secondFilters, thirdFilters, forthFilters, srcReg;
- __m128i filt1Reg, filt2Reg, filt3Reg, filt4Reg;
- __m128i srcRegFilt1, srcRegFilt2, srcRegFilt3, srcRegFilt4;
- __m128i addFilterReg64, filtersReg, minReg;
- unsigned int i;
-
- // create a register with 0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64
- addFilterReg64 = _mm_set1_epi32((int)0x0400040u);
- filtersReg = _mm_loadu_si128((const __m128i *)filter);
- // converting the 16 bit (short) to 8 bit (byte) and have the same data
- // in both lanes of 128 bit register.
- filtersReg =_mm_packs_epi16(filtersReg, filtersReg);
-
- // duplicate only the first 16 bits (first and second byte)
- // across 128 bit register
- firstFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x100u));
- // duplicate only the second 16 bits (third and forth byte)
- // across 128 bit register
- secondFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x302u));
- // duplicate only the third 16 bits (fifth and sixth byte)
- // across 128 bit register
- thirdFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x504u));
- // duplicate only the forth 16 bits (seventh and eighth byte)
- // across 128 bit register
- forthFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x706u));
-
- filt1Reg = _mm_load_si128((__m128i const *)filt1_global);
- filt2Reg = _mm_load_si128((__m128i const *)filt2_global);
- filt3Reg = _mm_load_si128((__m128i const *)filt3_global);
- filt4Reg = _mm_load_si128((__m128i const *)filt4_global);
-
- for (i = 0; i < output_height; i++) {
- srcReg = _mm_loadu_si128((const __m128i *)(src_ptr - 3));
-
- // filter the source buffer
- srcRegFilt1= _mm_shuffle_epi8(srcReg, filt1Reg);
- srcRegFilt2= _mm_shuffle_epi8(srcReg, filt2Reg);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt1 = _mm_maddubs_epi16(srcRegFilt1, firstFilters);
- srcRegFilt2 = _mm_maddubs_epi16(srcRegFilt2, secondFilters);
-
- // filter the source buffer
- srcRegFilt3= _mm_shuffle_epi8(srcReg, filt3Reg);
- srcRegFilt4= _mm_shuffle_epi8(srcReg, filt4Reg);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt3 = _mm_maddubs_epi16(srcRegFilt3, thirdFilters);
- srcRegFilt4 = _mm_maddubs_epi16(srcRegFilt4, forthFilters);
-
- // add and saturate all the results together
- minReg = _mm_min_epi16(srcRegFilt2, srcRegFilt3);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, srcRegFilt4);
-
- srcRegFilt2= _mm_max_epi16(srcRegFilt2, srcRegFilt3);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, minReg);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, srcRegFilt2);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, addFilterReg64);
-
- // shift by 7 bit each 16 bits
- srcRegFilt1 = _mm_srai_epi16(srcRegFilt1, 7);
-
- // shrink to 8 bit each 16 bits
- srcRegFilt1 = _mm_packus_epi16(srcRegFilt1, srcRegFilt1);
-
- src_ptr+=src_pixels_per_line;
-
- // save only 8 bytes
- _mm_storel_epi64((__m128i*)&output_ptr[0], srcRegFilt1);
-
- output_ptr+=output_pitch;
- }
-}
-
-void vpx_filter_block1d8_v8_intrin_ssse3(const uint8_t *src_ptr,
- ptrdiff_t src_pitch,
- uint8_t *output_ptr,
- ptrdiff_t out_pitch,
- uint32_t output_height,
- const int16_t *filter) {
- __m128i addFilterReg64, filtersReg, minReg;
- __m128i firstFilters, secondFilters, thirdFilters, forthFilters;
- __m128i srcRegFilt1, srcRegFilt2, srcRegFilt3, srcRegFilt5;
- __m128i srcReg1, srcReg2, srcReg3, srcReg4, srcReg5, srcReg6, srcReg7;
- __m128i srcReg8;
- unsigned int i;
-
- // create a register with 0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64
- addFilterReg64 = _mm_set1_epi32((int)0x0400040u);
- filtersReg = _mm_loadu_si128((const __m128i *)filter);
- // converting the 16 bit (short) to 8 bit (byte) and have the same data
- // in both lanes of 128 bit register.
- filtersReg =_mm_packs_epi16(filtersReg, filtersReg);
-
- // duplicate only the first 16 bits in the filter
- firstFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x100u));
- // duplicate only the second 16 bits in the filter
- secondFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x302u));
- // duplicate only the third 16 bits in the filter
- thirdFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x504u));
- // duplicate only the forth 16 bits in the filter
- forthFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x706u));
-
- // load the first 7 rows of 8 bytes
- srcReg1 = _mm_loadl_epi64((const __m128i *)src_ptr);
- srcReg2 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch));
- srcReg3 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 2));
- srcReg4 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 3));
- srcReg5 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 4));
- srcReg6 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 5));
- srcReg7 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 6));
-
- for (i = 0; i < output_height; i++) {
- // load the last 8 bytes
- srcReg8 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 7));
-
- // merge the result together
- srcRegFilt1 = _mm_unpacklo_epi8(srcReg1, srcReg2);
- srcRegFilt3 = _mm_unpacklo_epi8(srcReg3, srcReg4);
-
- // merge the result together
- srcRegFilt2 = _mm_unpacklo_epi8(srcReg5, srcReg6);
- srcRegFilt5 = _mm_unpacklo_epi8(srcReg7, srcReg8);
-
- // multiply 2 adjacent elements with the filter and add the result
- srcRegFilt1 = _mm_maddubs_epi16(srcRegFilt1, firstFilters);
- srcRegFilt3 = _mm_maddubs_epi16(srcRegFilt3, secondFilters);
- srcRegFilt2 = _mm_maddubs_epi16(srcRegFilt2, thirdFilters);
- srcRegFilt5 = _mm_maddubs_epi16(srcRegFilt5, forthFilters);
-
- // add and saturate the results together
- minReg = _mm_min_epi16(srcRegFilt2, srcRegFilt3);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, srcRegFilt5);
- srcRegFilt2 = _mm_max_epi16(srcRegFilt2, srcRegFilt3);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, minReg);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, srcRegFilt2);
- srcRegFilt1 = _mm_adds_epi16(srcRegFilt1, addFilterReg64);
-
- // shift by 7 bit each 16 bit
- srcRegFilt1 = _mm_srai_epi16(srcRegFilt1, 7);
-
- // shrink to 8 bit each 16 bits
- srcRegFilt1 = _mm_packus_epi16(srcRegFilt1, srcRegFilt1);
-
- src_ptr+=src_pitch;
-
- // shift down a row
- srcReg1 = srcReg2;
- srcReg2 = srcReg3;
- srcReg3 = srcReg4;
- srcReg4 = srcReg5;
- srcReg5 = srcReg6;
- srcReg6 = srcReg7;
- srcReg7 = srcReg8;
-
- // save only 8 bytes convolve result
- _mm_storel_epi64((__m128i*)&output_ptr[0], srcRegFilt1);
-
- output_ptr+=out_pitch;
- }
-}
-
-filter8_1dfunction vpx_filter_block1d16_v8_ssse3;
-filter8_1dfunction vpx_filter_block1d16_h8_ssse3;
-filter8_1dfunction vpx_filter_block1d8_v8_ssse3;
-filter8_1dfunction vpx_filter_block1d8_h8_ssse3;
-filter8_1dfunction vpx_filter_block1d4_v8_ssse3;
-filter8_1dfunction vpx_filter_block1d4_h8_ssse3;
-filter8_1dfunction vpx_filter_block1d16_v8_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d16_h8_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d8_v8_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d8_h8_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d4_v8_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d4_h8_avg_ssse3;
-
-filter8_1dfunction vpx_filter_block1d16_v2_ssse3;
-filter8_1dfunction vpx_filter_block1d16_h2_ssse3;
-filter8_1dfunction vpx_filter_block1d8_v2_ssse3;
-filter8_1dfunction vpx_filter_block1d8_h2_ssse3;
-filter8_1dfunction vpx_filter_block1d4_v2_ssse3;
-filter8_1dfunction vpx_filter_block1d4_h2_ssse3;
-filter8_1dfunction vpx_filter_block1d16_v2_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d16_h2_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d8_v2_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d8_h2_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d4_v2_avg_ssse3;
-filter8_1dfunction vpx_filter_block1d4_h2_avg_ssse3;
-
-// void vpx_convolve8_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_avg_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_avg_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , ssse3);
-FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , ssse3);
-FUN_CONV_1D(avg_horiz, x_step_q4, filter_x, h, src, avg_, ssse3);
-FUN_CONV_1D(avg_vert, y_step_q4, filter_y, v, src - src_stride * 3, avg_,
- ssse3);
-
-#define TRANSPOSE_8X8(in0, in1, in2, in3, in4, in5, in6, in7, \
- out0, out1, out2, out3, out4, out5, out6, out7) { \
- const __m128i tr0_0 = _mm_unpacklo_epi8(in0, in1); \
- const __m128i tr0_1 = _mm_unpacklo_epi8(in2, in3); \
- const __m128i tr0_2 = _mm_unpacklo_epi8(in4, in5); \
- const __m128i tr0_3 = _mm_unpacklo_epi8(in6, in7); \
- \
- const __m128i tr1_0 = _mm_unpacklo_epi16(tr0_0, tr0_1); \
- const __m128i tr1_1 = _mm_unpackhi_epi16(tr0_0, tr0_1); \
- const __m128i tr1_2 = _mm_unpacklo_epi16(tr0_2, tr0_3); \
- const __m128i tr1_3 = _mm_unpackhi_epi16(tr0_2, tr0_3); \
- \
- const __m128i tr2_0 = _mm_unpacklo_epi32(tr1_0, tr1_2); \
- const __m128i tr2_1 = _mm_unpackhi_epi32(tr1_0, tr1_2); \
- const __m128i tr2_2 = _mm_unpacklo_epi32(tr1_1, tr1_3); \
- const __m128i tr2_3 = _mm_unpackhi_epi32(tr1_1, tr1_3); \
- \
- out0 = _mm_unpacklo_epi64(tr2_0, tr2_0); \
- out1 = _mm_unpackhi_epi64(tr2_0, tr2_0); \
- out2 = _mm_unpacklo_epi64(tr2_1, tr2_1); \
- out3 = _mm_unpackhi_epi64(tr2_1, tr2_1); \
- out4 = _mm_unpacklo_epi64(tr2_2, tr2_2); \
- out5 = _mm_unpackhi_epi64(tr2_2, tr2_2); \
- out6 = _mm_unpacklo_epi64(tr2_3, tr2_3); \
- out7 = _mm_unpackhi_epi64(tr2_3, tr2_3); \
-}
-
-static void filter_horiz_w8_ssse3(const uint8_t *src_x, ptrdiff_t src_pitch,
- uint8_t *dst, const int16_t *x_filter) {
- const __m128i k_256 = _mm_set1_epi16(1 << 8);
- const __m128i f_values = _mm_load_si128((const __m128i *)x_filter);
- // pack and duplicate the filter values
- const __m128i f1f0 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0200u));
- const __m128i f3f2 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0604u));
- const __m128i f5f4 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0a08u));
- const __m128i f7f6 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0e0cu));
- const __m128i A = _mm_loadl_epi64((const __m128i *)src_x);
- const __m128i B = _mm_loadl_epi64((const __m128i *)(src_x + src_pitch));
- const __m128i C = _mm_loadl_epi64((const __m128i *)(src_x + src_pitch * 2));
- const __m128i D = _mm_loadl_epi64((const __m128i *)(src_x + src_pitch * 3));
- const __m128i E = _mm_loadl_epi64((const __m128i *)(src_x + src_pitch * 4));
- const __m128i F = _mm_loadl_epi64((const __m128i *)(src_x + src_pitch * 5));
- const __m128i G = _mm_loadl_epi64((const __m128i *)(src_x + src_pitch * 6));
- const __m128i H = _mm_loadl_epi64((const __m128i *)(src_x + src_pitch * 7));
- // 00 01 10 11 02 03 12 13 04 05 14 15 06 07 16 17
- const __m128i tr0_0 = _mm_unpacklo_epi16(A, B);
- // 20 21 30 31 22 23 32 33 24 25 34 35 26 27 36 37
- const __m128i tr0_1 = _mm_unpacklo_epi16(C, D);
- // 40 41 50 51 42 43 52 53 44 45 54 55 46 47 56 57
- const __m128i tr0_2 = _mm_unpacklo_epi16(E, F);
- // 60 61 70 71 62 63 72 73 64 65 74 75 66 67 76 77
- const __m128i tr0_3 = _mm_unpacklo_epi16(G, H);
- // 00 01 10 11 20 21 30 31 02 03 12 13 22 23 32 33
- const __m128i tr1_0 = _mm_unpacklo_epi32(tr0_0, tr0_1);
- // 04 05 14 15 24 25 34 35 06 07 16 17 26 27 36 37
- const __m128i tr1_1 = _mm_unpackhi_epi32(tr0_0, tr0_1);
- // 40 41 50 51 60 61 70 71 42 43 52 53 62 63 72 73
- const __m128i tr1_2 = _mm_unpacklo_epi32(tr0_2, tr0_3);
- // 44 45 54 55 64 65 74 75 46 47 56 57 66 67 76 77
- const __m128i tr1_3 = _mm_unpackhi_epi32(tr0_2, tr0_3);
- // 00 01 10 11 20 21 30 31 40 41 50 51 60 61 70 71
- const __m128i s1s0 = _mm_unpacklo_epi64(tr1_0, tr1_2);
- const __m128i s3s2 = _mm_unpackhi_epi64(tr1_0, tr1_2);
- const __m128i s5s4 = _mm_unpacklo_epi64(tr1_1, tr1_3);
- const __m128i s7s6 = _mm_unpackhi_epi64(tr1_1, tr1_3);
- // multiply 2 adjacent elements with the filter and add the result
- const __m128i x0 = _mm_maddubs_epi16(s1s0, f1f0);
- const __m128i x1 = _mm_maddubs_epi16(s3s2, f3f2);
- const __m128i x2 = _mm_maddubs_epi16(s5s4, f5f4);
- const __m128i x3 = _mm_maddubs_epi16(s7s6, f7f6);
- // add and saturate the results together
- const __m128i min_x2x1 = _mm_min_epi16(x2, x1);
- const __m128i max_x2x1 = _mm_max_epi16(x2, x1);
- __m128i temp = _mm_adds_epi16(x0, x3);
- temp = _mm_adds_epi16(temp, min_x2x1);
- temp = _mm_adds_epi16(temp, max_x2x1);
- // round and shift by 7 bit each 16 bit
- temp = _mm_mulhrs_epi16(temp, k_256);
- // shrink to 8 bit each 16 bits
- temp = _mm_packus_epi16(temp, temp);
- // save only 8 bytes convolve result
- _mm_storel_epi64((__m128i*)dst, temp);
-}
-
-static void transpose8x8_to_dst(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride) {
- __m128i A, B, C, D, E, F, G, H;
-
- A = _mm_loadl_epi64((const __m128i *)src);
- B = _mm_loadl_epi64((const __m128i *)(src + src_stride));
- C = _mm_loadl_epi64((const __m128i *)(src + src_stride * 2));
- D = _mm_loadl_epi64((const __m128i *)(src + src_stride * 3));
- E = _mm_loadl_epi64((const __m128i *)(src + src_stride * 4));
- F = _mm_loadl_epi64((const __m128i *)(src + src_stride * 5));
- G = _mm_loadl_epi64((const __m128i *)(src + src_stride * 6));
- H = _mm_loadl_epi64((const __m128i *)(src + src_stride * 7));
-
- TRANSPOSE_8X8(A, B, C, D, E, F, G, H,
- A, B, C, D, E, F, G, H);
-
- _mm_storel_epi64((__m128i*)dst, A);
- _mm_storel_epi64((__m128i*)(dst + dst_stride * 1), B);
- _mm_storel_epi64((__m128i*)(dst + dst_stride * 2), C);
- _mm_storel_epi64((__m128i*)(dst + dst_stride * 3), D);
- _mm_storel_epi64((__m128i*)(dst + dst_stride * 4), E);
- _mm_storel_epi64((__m128i*)(dst + dst_stride * 5), F);
- _mm_storel_epi64((__m128i*)(dst + dst_stride * 6), G);
- _mm_storel_epi64((__m128i*)(dst + dst_stride * 7), H);
-}
-
-static void scaledconvolve_horiz_w8(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *x_filters,
- int x0_q4, int x_step_q4, int w, int h) {
- DECLARE_ALIGNED(16, uint8_t, temp[8 * 8]);
- int x, y, z;
- src -= SUBPEL_TAPS / 2 - 1;
-
- // This function processes 8x8 areas. The intermediate height is not always
- // a multiple of 8, so force it to be a multiple of 8 here.
- y = h + (8 - (h & 0x7));
-
- do {
- int x_q4 = x0_q4;
- for (x = 0; x < w; x += 8) {
- // process 8 src_x steps
- for (z = 0; z < 8; ++z) {
- const uint8_t *const src_x = &src[x_q4 >> SUBPEL_BITS];
- const int16_t *const x_filter = x_filters[x_q4 & SUBPEL_MASK];
- if (x_q4 & SUBPEL_MASK) {
- filter_horiz_w8_ssse3(src_x, src_stride, temp + (z * 8), x_filter);
- } else {
- int i;
- for (i = 0; i < 8; ++i) {
- temp[z * 8 + i] = src_x[i * src_stride + 3];
- }
- }
- x_q4 += x_step_q4;
- }
-
- // transpose the 8x8 filters values back to dst
- transpose8x8_to_dst(temp, 8, dst + x, dst_stride);
- }
-
- src += src_stride * 8;
- dst += dst_stride * 8;
- } while (y -= 8);
-}
-
-static void filter_horiz_w4_ssse3(const uint8_t *src_ptr, ptrdiff_t src_pitch,
- uint8_t *dst, const int16_t *filter) {
- const __m128i k_256 = _mm_set1_epi16(1 << 8);
- const __m128i f_values = _mm_load_si128((const __m128i *)filter);
- // pack and duplicate the filter values
- const __m128i f1f0 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0200u));
- const __m128i f3f2 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0604u));
- const __m128i f5f4 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0a08u));
- const __m128i f7f6 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0e0cu));
- const __m128i A = _mm_loadl_epi64((const __m128i *)src_ptr);
- const __m128i B = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch));
- const __m128i C = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 2));
- const __m128i D = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 3));
- // TRANSPOSE...
- // 00 01 02 03 04 05 06 07
- // 10 11 12 13 14 15 16 17
- // 20 21 22 23 24 25 26 27
- // 30 31 32 33 34 35 36 37
- //
- // TO
- //
- // 00 10 20 30
- // 01 11 21 31
- // 02 12 22 32
- // 03 13 23 33
- // 04 14 24 34
- // 05 15 25 35
- // 06 16 26 36
- // 07 17 27 37
- //
- // 00 01 10 11 02 03 12 13 04 05 14 15 06 07 16 17
- const __m128i tr0_0 = _mm_unpacklo_epi16(A, B);
- // 20 21 30 31 22 23 32 33 24 25 34 35 26 27 36 37
- const __m128i tr0_1 = _mm_unpacklo_epi16(C, D);
- // 00 01 10 11 20 21 30 31 02 03 12 13 22 23 32 33
- const __m128i s1s0 = _mm_unpacklo_epi32(tr0_0, tr0_1);
- // 04 05 14 15 24 25 34 35 06 07 16 17 26 27 36 37
- const __m128i s5s4 = _mm_unpackhi_epi32(tr0_0, tr0_1);
- // 02 03 12 13 22 23 32 33
- const __m128i s3s2 = _mm_srli_si128(s1s0, 8);
- // 06 07 16 17 26 27 36 37
- const __m128i s7s6 = _mm_srli_si128(s5s4, 8);
- // multiply 2 adjacent elements with the filter and add the result
- const __m128i x0 = _mm_maddubs_epi16(s1s0, f1f0);
- const __m128i x1 = _mm_maddubs_epi16(s3s2, f3f2);
- const __m128i x2 = _mm_maddubs_epi16(s5s4, f5f4);
- const __m128i x3 = _mm_maddubs_epi16(s7s6, f7f6);
- // add and saturate the results together
- const __m128i min_x2x1 = _mm_min_epi16(x2, x1);
- const __m128i max_x2x1 = _mm_max_epi16(x2, x1);
- __m128i temp = _mm_adds_epi16(x0, x3);
- temp = _mm_adds_epi16(temp, min_x2x1);
- temp = _mm_adds_epi16(temp, max_x2x1);
- // round and shift by 7 bit each 16 bit
- temp = _mm_mulhrs_epi16(temp, k_256);
- // shrink to 8 bit each 16 bits
- temp = _mm_packus_epi16(temp, temp);
- // save only 4 bytes
- *(int *)dst = _mm_cvtsi128_si32(temp);
-}
-
-static void transpose4x4_to_dst(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride) {
- __m128i A = _mm_cvtsi32_si128(*(const int *)src);
- __m128i B = _mm_cvtsi32_si128(*(const int *)(src + src_stride));
- __m128i C = _mm_cvtsi32_si128(*(const int *)(src + src_stride * 2));
- __m128i D = _mm_cvtsi32_si128(*(const int *)(src + src_stride * 3));
- // 00 10 01 11 02 12 03 13
- const __m128i tr0_0 = _mm_unpacklo_epi8(A, B);
- // 20 30 21 31 22 32 23 33
- const __m128i tr0_1 = _mm_unpacklo_epi8(C, D);
- // 00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33
- A = _mm_unpacklo_epi16(tr0_0, tr0_1);
- B = _mm_srli_si128(A, 4);
- C = _mm_srli_si128(A, 8);
- D = _mm_srli_si128(A, 12);
-
- *(int *)(dst) = _mm_cvtsi128_si32(A);
- *(int *)(dst + dst_stride) = _mm_cvtsi128_si32(B);
- *(int *)(dst + dst_stride * 2) = _mm_cvtsi128_si32(C);
- *(int *)(dst + dst_stride * 3) = _mm_cvtsi128_si32(D);
-}
-
-static void scaledconvolve_horiz_w4(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *x_filters,
- int x0_q4, int x_step_q4, int w, int h) {
- DECLARE_ALIGNED(16, uint8_t, temp[4 * 4]);
- int x, y, z;
- src -= SUBPEL_TAPS / 2 - 1;
-
- for (y = 0; y < h; y += 4) {
- int x_q4 = x0_q4;
- for (x = 0; x < w; x += 4) {
- // process 4 src_x steps
- for (z = 0; z < 4; ++z) {
- const uint8_t *const src_x = &src[x_q4 >> SUBPEL_BITS];
- const int16_t *const x_filter = x_filters[x_q4 & SUBPEL_MASK];
- if (x_q4 & SUBPEL_MASK) {
- filter_horiz_w4_ssse3(src_x, src_stride, temp + (z * 4), x_filter);
- } else {
- int i;
- for (i = 0; i < 4; ++i) {
- temp[z * 4 + i] = src_x[i * src_stride + 3];
- }
- }
- x_q4 += x_step_q4;
- }
-
- // transpose the 4x4 filters values back to dst
- transpose4x4_to_dst(temp, 4, dst + x, dst_stride);
- }
-
- src += src_stride * 4;
- dst += dst_stride * 4;
- }
-}
-
-static void filter_vert_w4_ssse3(const uint8_t *src_ptr, ptrdiff_t src_pitch,
- uint8_t *dst, const int16_t *filter) {
- const __m128i k_256 = _mm_set1_epi16(1 << 8);
- const __m128i f_values = _mm_load_si128((const __m128i *)filter);
- // pack and duplicate the filter values
- const __m128i f1f0 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0200u));
- const __m128i f3f2 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0604u));
- const __m128i f5f4 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0a08u));
- const __m128i f7f6 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0e0cu));
- const __m128i A = _mm_cvtsi32_si128(*(const int *)src_ptr);
- const __m128i B = _mm_cvtsi32_si128(*(const int *)(src_ptr + src_pitch));
- const __m128i C = _mm_cvtsi32_si128(*(const int *)(src_ptr + src_pitch * 2));
- const __m128i D = _mm_cvtsi32_si128(*(const int *)(src_ptr + src_pitch * 3));
- const __m128i E = _mm_cvtsi32_si128(*(const int *)(src_ptr + src_pitch * 4));
- const __m128i F = _mm_cvtsi32_si128(*(const int *)(src_ptr + src_pitch * 5));
- const __m128i G = _mm_cvtsi32_si128(*(const int *)(src_ptr + src_pitch * 6));
- const __m128i H = _mm_cvtsi32_si128(*(const int *)(src_ptr + src_pitch * 7));
- const __m128i s1s0 = _mm_unpacklo_epi8(A, B);
- const __m128i s3s2 = _mm_unpacklo_epi8(C, D);
- const __m128i s5s4 = _mm_unpacklo_epi8(E, F);
- const __m128i s7s6 = _mm_unpacklo_epi8(G, H);
- // multiply 2 adjacent elements with the filter and add the result
- const __m128i x0 = _mm_maddubs_epi16(s1s0, f1f0);
- const __m128i x1 = _mm_maddubs_epi16(s3s2, f3f2);
- const __m128i x2 = _mm_maddubs_epi16(s5s4, f5f4);
- const __m128i x3 = _mm_maddubs_epi16(s7s6, f7f6);
- // add and saturate the results together
- const __m128i min_x2x1 = _mm_min_epi16(x2, x1);
- const __m128i max_x2x1 = _mm_max_epi16(x2, x1);
- __m128i temp = _mm_adds_epi16(x0, x3);
- temp = _mm_adds_epi16(temp, min_x2x1);
- temp = _mm_adds_epi16(temp, max_x2x1);
- // round and shift by 7 bit each 16 bit
- temp = _mm_mulhrs_epi16(temp, k_256);
- // shrink to 8 bit each 16 bits
- temp = _mm_packus_epi16(temp, temp);
- // save only 4 bytes
- *(int *)dst = _mm_cvtsi128_si32(temp);
-}
-
-static void scaledconvolve_vert_w4(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *y_filters,
- int y0_q4, int y_step_q4, int w, int h) {
- int y;
- int y_q4 = y0_q4;
-
- src -= src_stride * (SUBPEL_TAPS / 2 - 1);
- for (y = 0; y < h; ++y) {
- const unsigned char *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
- const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
-
- if (y_q4 & SUBPEL_MASK) {
- filter_vert_w4_ssse3(src_y, src_stride, &dst[y * dst_stride], y_filter);
- } else {
- memcpy(&dst[y * dst_stride], &src_y[3 * src_stride], w);
- }
-
- y_q4 += y_step_q4;
- }
-}
-
-static void filter_vert_w8_ssse3(const uint8_t *src_ptr, ptrdiff_t src_pitch,
- uint8_t *dst, const int16_t *filter) {
- const __m128i k_256 = _mm_set1_epi16(1 << 8);
- const __m128i f_values = _mm_load_si128((const __m128i *)filter);
- // pack and duplicate the filter values
- const __m128i f1f0 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0200u));
- const __m128i f3f2 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0604u));
- const __m128i f5f4 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0a08u));
- const __m128i f7f6 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0e0cu));
- const __m128i A = _mm_loadl_epi64((const __m128i *)src_ptr);
- const __m128i B = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch));
- const __m128i C = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 2));
- const __m128i D = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 3));
- const __m128i E = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 4));
- const __m128i F = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 5));
- const __m128i G = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 6));
- const __m128i H = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 7));
- const __m128i s1s0 = _mm_unpacklo_epi8(A, B);
- const __m128i s3s2 = _mm_unpacklo_epi8(C, D);
- const __m128i s5s4 = _mm_unpacklo_epi8(E, F);
- const __m128i s7s6 = _mm_unpacklo_epi8(G, H);
- // multiply 2 adjacent elements with the filter and add the result
- const __m128i x0 = _mm_maddubs_epi16(s1s0, f1f0);
- const __m128i x1 = _mm_maddubs_epi16(s3s2, f3f2);
- const __m128i x2 = _mm_maddubs_epi16(s5s4, f5f4);
- const __m128i x3 = _mm_maddubs_epi16(s7s6, f7f6);
- // add and saturate the results together
- const __m128i min_x2x1 = _mm_min_epi16(x2, x1);
- const __m128i max_x2x1 = _mm_max_epi16(x2, x1);
- __m128i temp = _mm_adds_epi16(x0, x3);
- temp = _mm_adds_epi16(temp, min_x2x1);
- temp = _mm_adds_epi16(temp, max_x2x1);
- // round and shift by 7 bit each 16 bit
- temp = _mm_mulhrs_epi16(temp, k_256);
- // shrink to 8 bit each 16 bits
- temp = _mm_packus_epi16(temp, temp);
- // save only 8 bytes convolve result
- _mm_storel_epi64((__m128i*)dst, temp);
-}
-
-static void scaledconvolve_vert_w8(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *y_filters,
- int y0_q4, int y_step_q4, int w, int h) {
- int y;
- int y_q4 = y0_q4;
-
- src -= src_stride * (SUBPEL_TAPS / 2 - 1);
- for (y = 0; y < h; ++y) {
- const unsigned char *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
- const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
- if (y_q4 & SUBPEL_MASK) {
- filter_vert_w8_ssse3(src_y, src_stride, &dst[y * dst_stride], y_filter);
- } else {
- memcpy(&dst[y * dst_stride], &src_y[3 * src_stride], w);
- }
- y_q4 += y_step_q4;
- }
-}
-
-static void filter_vert_w16_ssse3(const uint8_t *src_ptr, ptrdiff_t src_pitch,
- uint8_t *dst, const int16_t *filter, int w) {
- const __m128i k_256 = _mm_set1_epi16(1 << 8);
- const __m128i f_values = _mm_load_si128((const __m128i *)filter);
- // pack and duplicate the filter values
- const __m128i f1f0 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0200u));
- const __m128i f3f2 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0604u));
- const __m128i f5f4 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0a08u));
- const __m128i f7f6 = _mm_shuffle_epi8(f_values, _mm_set1_epi16(0x0e0cu));
- int i;
-
- for (i = 0; i < w; i += 16) {
- const __m128i A = _mm_loadu_si128((const __m128i *)src_ptr);
- const __m128i B = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch));
- const __m128i C =
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 2));
- const __m128i D =
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 3));
- const __m128i E =
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 4));
- const __m128i F =
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 5));
- const __m128i G =
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 6));
- const __m128i H =
- _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 7));
- // merge the result together
- const __m128i s1s0_lo = _mm_unpacklo_epi8(A, B);
- const __m128i s7s6_lo = _mm_unpacklo_epi8(G, H);
- const __m128i s1s0_hi = _mm_unpackhi_epi8(A, B);
- const __m128i s7s6_hi = _mm_unpackhi_epi8(G, H);
- // multiply 2 adjacent elements with the filter and add the result
- const __m128i x0_lo = _mm_maddubs_epi16(s1s0_lo, f1f0);
- const __m128i x3_lo = _mm_maddubs_epi16(s7s6_lo, f7f6);
- const __m128i x0_hi = _mm_maddubs_epi16(s1s0_hi, f1f0);
- const __m128i x3_hi = _mm_maddubs_epi16(s7s6_hi, f7f6);
- // add and saturate the results together
- const __m128i x3x0_lo = _mm_adds_epi16(x0_lo, x3_lo);
- const __m128i x3x0_hi = _mm_adds_epi16(x0_hi, x3_hi);
- // merge the result together
- const __m128i s3s2_lo = _mm_unpacklo_epi8(C, D);
- const __m128i s3s2_hi = _mm_unpackhi_epi8(C, D);
- // multiply 2 adjacent elements with the filter and add the result
- const __m128i x1_lo = _mm_maddubs_epi16(s3s2_lo, f3f2);
- const __m128i x1_hi = _mm_maddubs_epi16(s3s2_hi, f3f2);
- // merge the result together
- const __m128i s5s4_lo = _mm_unpacklo_epi8(E, F);
- const __m128i s5s4_hi = _mm_unpackhi_epi8(E, F);
- // multiply 2 adjacent elements with the filter and add the result
- const __m128i x2_lo = _mm_maddubs_epi16(s5s4_lo, f5f4);
- const __m128i x2_hi = _mm_maddubs_epi16(s5s4_hi, f5f4);
- // add and saturate the results together
- __m128i temp_lo = _mm_adds_epi16(x3x0_lo, _mm_min_epi16(x1_lo, x2_lo));
- __m128i temp_hi = _mm_adds_epi16(x3x0_hi, _mm_min_epi16(x1_hi, x2_hi));
-
- // add and saturate the results together
- temp_lo = _mm_adds_epi16(temp_lo, _mm_max_epi16(x1_lo, x2_lo));
- temp_hi = _mm_adds_epi16(temp_hi, _mm_max_epi16(x1_hi, x2_hi));
- // round and shift by 7 bit each 16 bit
- temp_lo = _mm_mulhrs_epi16(temp_lo, k_256);
- temp_hi = _mm_mulhrs_epi16(temp_hi, k_256);
- // shrink to 8 bit each 16 bits, the first lane contain the first
- // convolve result and the second lane contain the second convolve
- // result
- temp_hi = _mm_packus_epi16(temp_lo, temp_hi);
- src_ptr += 16;
- // save 16 bytes convolve result
- _mm_store_si128((__m128i*)&dst[i], temp_hi);
- }
-}
-
-static void scaledconvolve_vert_w16(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *y_filters,
- int y0_q4, int y_step_q4, int w, int h) {
- int y;
- int y_q4 = y0_q4;
-
- src -= src_stride * (SUBPEL_TAPS / 2 - 1);
- for (y = 0; y < h; ++y) {
- const unsigned char *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
- const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
- if (y_q4 & SUBPEL_MASK) {
- filter_vert_w16_ssse3(src_y, src_stride, &dst[y * dst_stride], y_filter,
- w);
- } else {
- memcpy(&dst[y * dst_stride], &src_y[3 * src_stride], w);
- }
- y_q4 += y_step_q4;
- }
-}
-
-static void scaledconvolve2d(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const InterpKernel *const x_filters,
- int x0_q4, int x_step_q4,
- const InterpKernel *const y_filters,
- int y0_q4, int y_step_q4,
- int w, int h) {
- // Note: Fixed size intermediate buffer, temp, places limits on parameters.
- // 2d filtering proceeds in 2 steps:
- // (1) Interpolate horizontally into an intermediate buffer, temp.
- // (2) Interpolate temp vertically to derive the sub-pixel result.
- // Deriving the maximum number of rows in the temp buffer (135):
- // --Smallest scaling factor is x1/2 ==> y_step_q4 = 32 (Normative).
- // --Largest block size is 64x64 pixels.
- // --64 rows in the downscaled frame span a distance of (64 - 1) * 32 in the
- // original frame (in 1/16th pixel units).
- // --Must round-up because block may be located at sub-pixel position.
- // --Require an additional SUBPEL_TAPS rows for the 8-tap filter tails.
- // --((64 - 1) * 32 + 15) >> 4 + 8 = 135.
- // --Require an additional 8 rows for the horiz_w8 transpose tail.
- DECLARE_ALIGNED(16, uint8_t, temp[(135 + 8) * 64]);
- const int intermediate_height =
- (((h - 1) * y_step_q4 + y0_q4) >> SUBPEL_BITS) + SUBPEL_TAPS;
-
- assert(w <= 64);
- assert(h <= 64);
- assert(y_step_q4 <= 32);
- assert(x_step_q4 <= 32);
-
- if (w >= 8) {
- scaledconvolve_horiz_w8(src - src_stride * (SUBPEL_TAPS / 2 - 1),
- src_stride, temp, 64, x_filters, x0_q4, x_step_q4,
- w, intermediate_height);
- } else {
- scaledconvolve_horiz_w4(src - src_stride * (SUBPEL_TAPS / 2 - 1),
- src_stride, temp, 64, x_filters, x0_q4, x_step_q4,
- w, intermediate_height);
- }
-
- if (w >= 16) {
- scaledconvolve_vert_w16(temp + 64 * (SUBPEL_TAPS / 2 - 1), 64, dst,
- dst_stride, y_filters, y0_q4, y_step_q4, w, h);
- } else if (w == 8) {
- scaledconvolve_vert_w8(temp + 64 * (SUBPEL_TAPS / 2 - 1), 64, dst,
- dst_stride, y_filters, y0_q4, y_step_q4, w, h);
- } else {
- scaledconvolve_vert_w4(temp + 64 * (SUBPEL_TAPS / 2 - 1), 64, dst,
- dst_stride, y_filters, y0_q4, y_step_q4, w, h);
- }
-}
-
-static const InterpKernel *get_filter_base(const int16_t *filter) {
- // NOTE: This assumes that the filter table is 256-byte aligned.
- // TODO(agrange) Modify to make independent of table alignment.
- return (const InterpKernel *)(((intptr_t)filter) & ~((intptr_t)0xFF));
-}
-
-static int get_filter_offset(const int16_t *f, const InterpKernel *base) {
- return (int)((const InterpKernel *)(intptr_t)f - base);
-}
-
-void vpx_scaled_2d_ssse3(const uint8_t *src, ptrdiff_t src_stride,
- uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4,
- int w, int h) {
- const InterpKernel *const filters_x = get_filter_base(filter_x);
- const int x0_q4 = get_filter_offset(filter_x, filters_x);
-
- const InterpKernel *const filters_y = get_filter_base(filter_y);
- const int y0_q4 = get_filter_offset(filter_y, filters_y);
-
- scaledconvolve2d(src, src_stride, dst, dst_stride,
- filters_x, x0_q4, x_step_q4,
- filters_y, y0_q4, y_step_q4, w, h);
-}
-
-// void vp9_convolve8_ssse3(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-// void vpx_convolve8_avg_ssse3(const uint8_t *src, ptrdiff_t src_stride,
-// uint8_t *dst, ptrdiff_t dst_stride,
-// const int16_t *filter_x, int x_step_q4,
-// const int16_t *filter_y, int y_step_q4,
-// int w, int h);
-FUN_CONV_2D(, ssse3);
-FUN_CONV_2D(avg_ , ssse3);
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm b/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm
deleted file mode 100644
index 08f3d6a6cf..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm
+++ /dev/null
@@ -1,987 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-;Note: tap3 and tap4 have to be applied and added after other taps to avoid
-;overflow.
-
-%macro GET_FILTERS_4 0
- mov rdx, arg(5) ;filter ptr
- mov rcx, 0x0400040
-
- movdqa xmm7, [rdx] ;load filters
- pshuflw xmm0, xmm7, 0b ;k0
- pshuflw xmm1, xmm7, 01010101b ;k1
- pshuflw xmm2, xmm7, 10101010b ;k2
- pshuflw xmm3, xmm7, 11111111b ;k3
- psrldq xmm7, 8
- pshuflw xmm4, xmm7, 0b ;k4
- pshuflw xmm5, xmm7, 01010101b ;k5
- pshuflw xmm6, xmm7, 10101010b ;k6
- pshuflw xmm7, xmm7, 11111111b ;k7
-
- punpcklqdq xmm0, xmm1
- punpcklqdq xmm2, xmm3
- punpcklqdq xmm5, xmm4
- punpcklqdq xmm6, xmm7
-
- movdqa k0k1, xmm0
- movdqa k2k3, xmm2
- movdqa k5k4, xmm5
- movdqa k6k7, xmm6
-
- movq xmm6, rcx
- pshufd xmm6, xmm6, 0
- movdqa krd, xmm6
-
- pxor xmm7, xmm7
- movdqa zero, xmm7
-%endm
-
-%macro APPLY_FILTER_4 1
- punpckldq xmm0, xmm1 ;two row in one register
- punpckldq xmm6, xmm7
- punpckldq xmm2, xmm3
- punpckldq xmm5, xmm4
-
- punpcklbw xmm0, zero ;unpack to word
- punpcklbw xmm6, zero
- punpcklbw xmm2, zero
- punpcklbw xmm5, zero
-
- pmullw xmm0, k0k1 ;multiply the filter factors
- pmullw xmm6, k6k7
- pmullw xmm2, k2k3
- pmullw xmm5, k5k4
-
- paddsw xmm0, xmm6 ;sum
- movdqa xmm1, xmm0
- psrldq xmm1, 8
- paddsw xmm0, xmm1
- paddsw xmm0, xmm2
- psrldq xmm2, 8
- paddsw xmm0, xmm5
- psrldq xmm5, 8
- paddsw xmm0, xmm2
- paddsw xmm0, xmm5
-
- paddsw xmm0, krd ;rounding
- psraw xmm0, 7 ;shift
- packuswb xmm0, xmm0 ;pack to byte
-
-%if %1
- movd xmm1, [rdi]
- pavgb xmm0, xmm1
-%endif
- movd [rdi], xmm0
-%endm
-
-%macro GET_FILTERS 0
- mov rdx, arg(5) ;filter ptr
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
- mov rcx, 0x0400040
-
- movdqa xmm7, [rdx] ;load filters
- pshuflw xmm0, xmm7, 0b ;k0
- pshuflw xmm1, xmm7, 01010101b ;k1
- pshuflw xmm2, xmm7, 10101010b ;k2
- pshuflw xmm3, xmm7, 11111111b ;k3
- pshufhw xmm4, xmm7, 0b ;k4
- pshufhw xmm5, xmm7, 01010101b ;k5
- pshufhw xmm6, xmm7, 10101010b ;k6
- pshufhw xmm7, xmm7, 11111111b ;k7
-
- punpcklwd xmm0, xmm0
- punpcklwd xmm1, xmm1
- punpcklwd xmm2, xmm2
- punpcklwd xmm3, xmm3
- punpckhwd xmm4, xmm4
- punpckhwd xmm5, xmm5
- punpckhwd xmm6, xmm6
- punpckhwd xmm7, xmm7
-
- movdqa k0, xmm0 ;store filter factors on stack
- movdqa k1, xmm1
- movdqa k2, xmm2
- movdqa k3, xmm3
- movdqa k4, xmm4
- movdqa k5, xmm5
- movdqa k6, xmm6
- movdqa k7, xmm7
-
- movq xmm6, rcx
- pshufd xmm6, xmm6, 0
- movdqa krd, xmm6 ;rounding
-
- pxor xmm7, xmm7
- movdqa zero, xmm7
-%endm
-
-%macro LOAD_VERT_8 1
- movq xmm0, [rsi + %1] ;0
- movq xmm1, [rsi + rax + %1] ;1
- movq xmm6, [rsi + rdx * 2 + %1] ;6
- lea rsi, [rsi + rax]
- movq xmm7, [rsi + rdx * 2 + %1] ;7
- movq xmm2, [rsi + rax + %1] ;2
- movq xmm3, [rsi + rax * 2 + %1] ;3
- movq xmm4, [rsi + rdx + %1] ;4
- movq xmm5, [rsi + rax * 4 + %1] ;5
-%endm
-
-%macro APPLY_FILTER_8 2
- punpcklbw xmm0, zero
- punpcklbw xmm1, zero
- punpcklbw xmm6, zero
- punpcklbw xmm7, zero
- punpcklbw xmm2, zero
- punpcklbw xmm5, zero
- punpcklbw xmm3, zero
- punpcklbw xmm4, zero
-
- pmullw xmm0, k0
- pmullw xmm1, k1
- pmullw xmm6, k6
- pmullw xmm7, k7
- pmullw xmm2, k2
- pmullw xmm5, k5
- pmullw xmm3, k3
- pmullw xmm4, k4
-
- paddsw xmm0, xmm1
- paddsw xmm0, xmm6
- paddsw xmm0, xmm7
- paddsw xmm0, xmm2
- paddsw xmm0, xmm5
- paddsw xmm0, xmm3
- paddsw xmm0, xmm4
-
- paddsw xmm0, krd ;rounding
- psraw xmm0, 7 ;shift
- packuswb xmm0, xmm0 ;pack back to byte
-%if %1
- movq xmm1, [rdi + %2]
- pavgb xmm0, xmm1
-%endif
- movq [rdi + %2], xmm0
-%endm
-
-;void vpx_filter_block1d4_v8_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pitch,
-; unsigned char *output_ptr,
-; unsigned int out_pitch,
-; unsigned int output_height,
-; short *filter
-;)
-global sym(vpx_filter_block1d4_v8_sse2) PRIVATE
-sym(vpx_filter_block1d4_v8_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- push rbx
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 6
- %define k0k1 [rsp + 16 * 0]
- %define k2k3 [rsp + 16 * 1]
- %define k5k4 [rsp + 16 * 2]
- %define k6k7 [rsp + 16 * 3]
- %define krd [rsp + 16 * 4]
- %define zero [rsp + 16 * 5]
-
- GET_FILTERS_4
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rbx, DWORD PTR arg(3) ;out_pitch
- lea rdx, [rax + rax * 2]
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- movd xmm0, [rsi] ;load src: row 0
- movd xmm1, [rsi + rax] ;1
- movd xmm6, [rsi + rdx * 2] ;6
- lea rsi, [rsi + rax]
- movd xmm7, [rsi + rdx * 2] ;7
- movd xmm2, [rsi + rax] ;2
- movd xmm3, [rsi + rax * 2] ;3
- movd xmm4, [rsi + rdx] ;4
- movd xmm5, [rsi + rax * 4] ;5
-
- APPLY_FILTER_4 0
-
- lea rdi, [rdi + rbx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 6
- pop rsp
- pop rbx
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vpx_filter_block1d8_v8_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pitch,
-; unsigned char *output_ptr,
-; unsigned int out_pitch,
-; unsigned int output_height,
-; short *filter
-;)
-global sym(vpx_filter_block1d8_v8_sse2) PRIVATE
-sym(vpx_filter_block1d8_v8_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- push rbx
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 10
- %define k0 [rsp + 16 * 0]
- %define k1 [rsp + 16 * 1]
- %define k2 [rsp + 16 * 2]
- %define k3 [rsp + 16 * 3]
- %define k4 [rsp + 16 * 4]
- %define k5 [rsp + 16 * 5]
- %define k6 [rsp + 16 * 6]
- %define k7 [rsp + 16 * 7]
- %define krd [rsp + 16 * 8]
- %define zero [rsp + 16 * 9]
-
- GET_FILTERS
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rbx, DWORD PTR arg(3) ;out_pitch
- lea rdx, [rax + rax * 2]
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- LOAD_VERT_8 0
- APPLY_FILTER_8 0, 0
-
- lea rdi, [rdi + rbx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 10
- pop rsp
- pop rbx
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vpx_filter_block1d16_v8_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pitch,
-; unsigned char *output_ptr,
-; unsigned int out_pitch,
-; unsigned int output_height,
-; short *filter
-;)
-global sym(vpx_filter_block1d16_v8_sse2) PRIVATE
-sym(vpx_filter_block1d16_v8_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- push rbx
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 10
- %define k0 [rsp + 16 * 0]
- %define k1 [rsp + 16 * 1]
- %define k2 [rsp + 16 * 2]
- %define k3 [rsp + 16 * 3]
- %define k4 [rsp + 16 * 4]
- %define k5 [rsp + 16 * 5]
- %define k6 [rsp + 16 * 6]
- %define k7 [rsp + 16 * 7]
- %define krd [rsp + 16 * 8]
- %define zero [rsp + 16 * 9]
-
- GET_FILTERS
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rbx, DWORD PTR arg(3) ;out_pitch
- lea rdx, [rax + rax * 2]
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- LOAD_VERT_8 0
- APPLY_FILTER_8 0, 0
- sub rsi, rax
-
- LOAD_VERT_8 8
- APPLY_FILTER_8 0, 8
- add rdi, rbx
-
- dec rcx
- jnz .loop
-
- add rsp, 16 * 10
- pop rsp
- pop rbx
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d4_v8_avg_sse2) PRIVATE
-sym(vpx_filter_block1d4_v8_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- push rbx
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 6
- %define k0k1 [rsp + 16 * 0]
- %define k2k3 [rsp + 16 * 1]
- %define k5k4 [rsp + 16 * 2]
- %define k6k7 [rsp + 16 * 3]
- %define krd [rsp + 16 * 4]
- %define zero [rsp + 16 * 5]
-
- GET_FILTERS_4
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rbx, DWORD PTR arg(3) ;out_pitch
- lea rdx, [rax + rax * 2]
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- movd xmm0, [rsi] ;load src: row 0
- movd xmm1, [rsi + rax] ;1
- movd xmm6, [rsi + rdx * 2] ;6
- lea rsi, [rsi + rax]
- movd xmm7, [rsi + rdx * 2] ;7
- movd xmm2, [rsi + rax] ;2
- movd xmm3, [rsi + rax * 2] ;3
- movd xmm4, [rsi + rdx] ;4
- movd xmm5, [rsi + rax * 4] ;5
-
- APPLY_FILTER_4 1
-
- lea rdi, [rdi + rbx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 6
- pop rsp
- pop rbx
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_v8_avg_sse2) PRIVATE
-sym(vpx_filter_block1d8_v8_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- push rbx
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 10
- %define k0 [rsp + 16 * 0]
- %define k1 [rsp + 16 * 1]
- %define k2 [rsp + 16 * 2]
- %define k3 [rsp + 16 * 3]
- %define k4 [rsp + 16 * 4]
- %define k5 [rsp + 16 * 5]
- %define k6 [rsp + 16 * 6]
- %define k7 [rsp + 16 * 7]
- %define krd [rsp + 16 * 8]
- %define zero [rsp + 16 * 9]
-
- GET_FILTERS
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rbx, DWORD PTR arg(3) ;out_pitch
- lea rdx, [rax + rax * 2]
- movsxd rcx, DWORD PTR arg(4) ;output_height
-.loop:
- LOAD_VERT_8 0
- APPLY_FILTER_8 1, 0
-
- lea rdi, [rdi + rbx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 10
- pop rsp
- pop rbx
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_v8_avg_sse2) PRIVATE
-sym(vpx_filter_block1d16_v8_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- push rbx
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 10
- %define k0 [rsp + 16 * 0]
- %define k1 [rsp + 16 * 1]
- %define k2 [rsp + 16 * 2]
- %define k3 [rsp + 16 * 3]
- %define k4 [rsp + 16 * 4]
- %define k5 [rsp + 16 * 5]
- %define k6 [rsp + 16 * 6]
- %define k7 [rsp + 16 * 7]
- %define krd [rsp + 16 * 8]
- %define zero [rsp + 16 * 9]
-
- GET_FILTERS
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rbx, DWORD PTR arg(3) ;out_pitch
- lea rdx, [rax + rax * 2]
- movsxd rcx, DWORD PTR arg(4) ;output_height
-.loop:
- LOAD_VERT_8 0
- APPLY_FILTER_8 1, 0
- sub rsi, rax
-
- LOAD_VERT_8 8
- APPLY_FILTER_8 1, 8
- add rdi, rbx
-
- dec rcx
- jnz .loop
-
- add rsp, 16 * 10
- pop rsp
- pop rbx
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vpx_filter_block1d4_h8_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; unsigned int output_pitch,
-; unsigned int output_height,
-; short *filter
-;)
-global sym(vpx_filter_block1d4_h8_sse2) PRIVATE
-sym(vpx_filter_block1d4_h8_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 6
- %define k0k1 [rsp + 16 * 0]
- %define k2k3 [rsp + 16 * 1]
- %define k5k4 [rsp + 16 * 2]
- %define k6k7 [rsp + 16 * 3]
- %define krd [rsp + 16 * 4]
- %define zero [rsp + 16 * 5]
-
- GET_FILTERS_4
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- movdqu xmm0, [rsi - 3] ;load src
-
- movdqa xmm1, xmm0
- movdqa xmm6, xmm0
- movdqa xmm7, xmm0
- movdqa xmm2, xmm0
- movdqa xmm3, xmm0
- movdqa xmm5, xmm0
- movdqa xmm4, xmm0
-
- psrldq xmm1, 1
- psrldq xmm6, 6
- psrldq xmm7, 7
- psrldq xmm2, 2
- psrldq xmm3, 3
- psrldq xmm5, 5
- psrldq xmm4, 4
-
- APPLY_FILTER_4 0
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 6
- pop rsp
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vpx_filter_block1d8_h8_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; unsigned int output_pitch,
-; unsigned int output_height,
-; short *filter
-;)
-global sym(vpx_filter_block1d8_h8_sse2) PRIVATE
-sym(vpx_filter_block1d8_h8_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 10
- %define k0 [rsp + 16 * 0]
- %define k1 [rsp + 16 * 1]
- %define k2 [rsp + 16 * 2]
- %define k3 [rsp + 16 * 3]
- %define k4 [rsp + 16 * 4]
- %define k5 [rsp + 16 * 5]
- %define k6 [rsp + 16 * 6]
- %define k7 [rsp + 16 * 7]
- %define krd [rsp + 16 * 8]
- %define zero [rsp + 16 * 9]
-
- GET_FILTERS
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- movdqu xmm0, [rsi - 3] ;load src
-
- movdqa xmm1, xmm0
- movdqa xmm6, xmm0
- movdqa xmm7, xmm0
- movdqa xmm2, xmm0
- movdqa xmm5, xmm0
- movdqa xmm3, xmm0
- movdqa xmm4, xmm0
-
- psrldq xmm1, 1
- psrldq xmm6, 6
- psrldq xmm7, 7
- psrldq xmm2, 2
- psrldq xmm5, 5
- psrldq xmm3, 3
- psrldq xmm4, 4
-
- APPLY_FILTER_8 0, 0
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 10
- pop rsp
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-;void vpx_filter_block1d16_h8_sse2
-;(
-; unsigned char *src_ptr,
-; unsigned int src_pixels_per_line,
-; unsigned char *output_ptr,
-; unsigned int output_pitch,
-; unsigned int output_height,
-; short *filter
-;)
-global sym(vpx_filter_block1d16_h8_sse2) PRIVATE
-sym(vpx_filter_block1d16_h8_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 10
- %define k0 [rsp + 16 * 0]
- %define k1 [rsp + 16 * 1]
- %define k2 [rsp + 16 * 2]
- %define k3 [rsp + 16 * 3]
- %define k4 [rsp + 16 * 4]
- %define k5 [rsp + 16 * 5]
- %define k6 [rsp + 16 * 6]
- %define k7 [rsp + 16 * 7]
- %define krd [rsp + 16 * 8]
- %define zero [rsp + 16 * 9]
-
- GET_FILTERS
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- movdqu xmm0, [rsi - 3] ;load src
-
- movdqa xmm1, xmm0
- movdqa xmm6, xmm0
- movdqa xmm7, xmm0
- movdqa xmm2, xmm0
- movdqa xmm5, xmm0
- movdqa xmm3, xmm0
- movdqa xmm4, xmm0
-
- psrldq xmm1, 1
- psrldq xmm6, 6
- psrldq xmm7, 7
- psrldq xmm2, 2
- psrldq xmm5, 5
- psrldq xmm3, 3
- psrldq xmm4, 4
-
- APPLY_FILTER_8 0, 0
-
- movdqu xmm0, [rsi + 5] ;load src
-
- movdqa xmm1, xmm0
- movdqa xmm6, xmm0
- movdqa xmm7, xmm0
- movdqa xmm2, xmm0
- movdqa xmm5, xmm0
- movdqa xmm3, xmm0
- movdqa xmm4, xmm0
-
- psrldq xmm1, 1
- psrldq xmm6, 6
- psrldq xmm7, 7
- psrldq xmm2, 2
- psrldq xmm5, 5
- psrldq xmm3, 3
- psrldq xmm4, 4
-
- APPLY_FILTER_8 0, 8
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 10
- pop rsp
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d4_h8_avg_sse2) PRIVATE
-sym(vpx_filter_block1d4_h8_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 6
- %define k0k1 [rsp + 16 * 0]
- %define k2k3 [rsp + 16 * 1]
- %define k5k4 [rsp + 16 * 2]
- %define k6k7 [rsp + 16 * 3]
- %define krd [rsp + 16 * 4]
- %define zero [rsp + 16 * 5]
-
- GET_FILTERS_4
-
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- movdqu xmm0, [rsi - 3] ;load src
-
- movdqa xmm1, xmm0
- movdqa xmm6, xmm0
- movdqa xmm7, xmm0
- movdqa xmm2, xmm0
- movdqa xmm3, xmm0
- movdqa xmm5, xmm0
- movdqa xmm4, xmm0
-
- psrldq xmm1, 1
- psrldq xmm6, 6
- psrldq xmm7, 7
- psrldq xmm2, 2
- psrldq xmm3, 3
- psrldq xmm5, 5
- psrldq xmm4, 4
-
- APPLY_FILTER_4 1
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 6
- pop rsp
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_h8_avg_sse2) PRIVATE
-sym(vpx_filter_block1d8_h8_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 10
- %define k0 [rsp + 16 * 0]
- %define k1 [rsp + 16 * 1]
- %define k2 [rsp + 16 * 2]
- %define k3 [rsp + 16 * 3]
- %define k4 [rsp + 16 * 4]
- %define k5 [rsp + 16 * 5]
- %define k6 [rsp + 16 * 6]
- %define k7 [rsp + 16 * 7]
- %define krd [rsp + 16 * 8]
- %define zero [rsp + 16 * 9]
-
- GET_FILTERS
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- movdqu xmm0, [rsi - 3] ;load src
-
- movdqa xmm1, xmm0
- movdqa xmm6, xmm0
- movdqa xmm7, xmm0
- movdqa xmm2, xmm0
- movdqa xmm5, xmm0
- movdqa xmm3, xmm0
- movdqa xmm4, xmm0
-
- psrldq xmm1, 1
- psrldq xmm6, 6
- psrldq xmm7, 7
- psrldq xmm2, 2
- psrldq xmm5, 5
- psrldq xmm3, 3
- psrldq xmm4, 4
-
- APPLY_FILTER_8 1, 0
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 10
- pop rsp
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_h8_avg_sse2) PRIVATE
-sym(vpx_filter_block1d16_h8_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- ALIGN_STACK 16, rax
- sub rsp, 16 * 10
- %define k0 [rsp + 16 * 0]
- %define k1 [rsp + 16 * 1]
- %define k2 [rsp + 16 * 2]
- %define k3 [rsp + 16 * 3]
- %define k4 [rsp + 16 * 4]
- %define k5 [rsp + 16 * 5]
- %define k6 [rsp + 16 * 6]
- %define k7 [rsp + 16 * 7]
- %define krd [rsp + 16 * 8]
- %define zero [rsp + 16 * 9]
-
- GET_FILTERS
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-
-.loop:
- movdqu xmm0, [rsi - 3] ;load src
-
- movdqa xmm1, xmm0
- movdqa xmm6, xmm0
- movdqa xmm7, xmm0
- movdqa xmm2, xmm0
- movdqa xmm5, xmm0
- movdqa xmm3, xmm0
- movdqa xmm4, xmm0
-
- psrldq xmm1, 1
- psrldq xmm6, 6
- psrldq xmm7, 7
- psrldq xmm2, 2
- psrldq xmm5, 5
- psrldq xmm3, 3
- psrldq xmm4, 4
-
- APPLY_FILTER_8 1, 0
-
- movdqu xmm0, [rsi + 5] ;load src
-
- movdqa xmm1, xmm0
- movdqa xmm6, xmm0
- movdqa xmm7, xmm0
- movdqa xmm2, xmm0
- movdqa xmm5, xmm0
- movdqa xmm3, xmm0
- movdqa xmm4, xmm0
-
- psrldq xmm1, 1
- psrldq xmm6, 6
- psrldq xmm7, 7
- psrldq xmm2, 2
- psrldq xmm5, 5
- psrldq xmm3, 3
- psrldq xmm4, 4
-
- APPLY_FILTER_8 1, 8
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
- jnz .loop
-
- add rsp, 16 * 10
- pop rsp
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm b/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm
deleted file mode 100644
index d2cb8ea292..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm
+++ /dev/null
@@ -1,629 +0,0 @@
-;
-; Copyright (c) 2015 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "third_party/x86inc/x86inc.asm"
-
-SECTION_RODATA
-pw_64: times 8 dw 64
-
-; %define USE_PMULHRSW
-; NOTE: pmulhrsw has a latency of 5 cycles. Tests showed a performance loss
-; when using this instruction.
-;
-; The add order below (based on ffvp9) must be followed to prevent outranges.
-; x = k0k1 + k4k5
-; y = k2k3 + k6k7
-; z = signed SAT(x + y)
-
-SECTION .text
-%if ARCH_X86_64
- %define LOCAL_VARS_SIZE 16*4
-%else
- %define LOCAL_VARS_SIZE 16*6
-%endif
-
-%macro SETUP_LOCAL_VARS 0
- ; TODO(slavarnway): using xmm registers for these on ARCH_X86_64 +
- ; pmaddubsw has a higher latency on some platforms, this might be eased by
- ; interleaving the instructions.
- %define k0k1 [rsp + 16*0]
- %define k2k3 [rsp + 16*1]
- %define k4k5 [rsp + 16*2]
- %define k6k7 [rsp + 16*3]
- packsswb m4, m4
- ; TODO(slavarnway): multiple pshufb instructions had a higher latency on
- ; some platforms.
- pshuflw m0, m4, 0b ;k0_k1
- pshuflw m1, m4, 01010101b ;k2_k3
- pshuflw m2, m4, 10101010b ;k4_k5
- pshuflw m3, m4, 11111111b ;k6_k7
- punpcklqdq m0, m0
- punpcklqdq m1, m1
- punpcklqdq m2, m2
- punpcklqdq m3, m3
- mova k0k1, m0
- mova k2k3, m1
- mova k4k5, m2
- mova k6k7, m3
-%if ARCH_X86_64
- %define krd m12
- %define tmp m13
- mova krd, [GLOBAL(pw_64)]
-%else
- %define tmp [rsp + 16*4]
- %define krd [rsp + 16*5]
-%if CONFIG_PIC=0
- mova m6, [GLOBAL(pw_64)]
-%else
- ; build constants without accessing global memory
- pcmpeqb m6, m6 ;all ones
- psrlw m6, 15
- psllw m6, 6 ;aka pw_64
-%endif
- mova krd, m6
-%endif
-%endm
-
-%macro HORIZx4_ROW 2
- mova %2, %1
- punpcklbw %1, %1
- punpckhbw %2, %2
-
- mova m3, %2
- palignr %2, %1, 1
- palignr m3, %1, 5
-
- pmaddubsw %2, k0k1k4k5
- pmaddubsw m3, k2k3k6k7
- mova m4, %2 ;k0k1
- mova m5, m3 ;k2k3
- psrldq %2, 8 ;k4k5
- psrldq m3, 8 ;k6k7
- paddsw %2, m4
- paddsw m5, m3
- paddsw %2, m5
- paddsw %2, krd
- psraw %2, 7
- packuswb %2, %2
-%endm
-
-;-------------------------------------------------------------------------------
-%macro SUBPIX_HFILTER4 1
-cglobal filter_block1d4_%1, 6, 6+(ARCH_X86_64*2), 11, LOCAL_VARS_SIZE, \
- src, sstride, dst, dstride, height, filter
- mova m4, [filterq]
- packsswb m4, m4
-%if ARCH_X86_64
- %define k0k1k4k5 m8
- %define k2k3k6k7 m9
- %define krd m10
- %define orig_height r7d
- mova krd, [GLOBAL(pw_64)]
- pshuflw k0k1k4k5, m4, 0b ;k0_k1
- pshufhw k0k1k4k5, k0k1k4k5, 10101010b ;k0_k1_k4_k5
- pshuflw k2k3k6k7, m4, 01010101b ;k2_k3
- pshufhw k2k3k6k7, k2k3k6k7, 11111111b ;k2_k3_k6_k7
-%else
- %define k0k1k4k5 [rsp + 16*0]
- %define k2k3k6k7 [rsp + 16*1]
- %define krd [rsp + 16*2]
- %define orig_height [rsp + 16*3]
- pshuflw m6, m4, 0b ;k0_k1
- pshufhw m6, m6, 10101010b ;k0_k1_k4_k5
- pshuflw m7, m4, 01010101b ;k2_k3
- pshufhw m7, m7, 11111111b ;k2_k3_k6_k7
-%if CONFIG_PIC=0
- mova m1, [GLOBAL(pw_64)]
-%else
- ; build constants without accessing global memory
- pcmpeqb m1, m1 ;all ones
- psrlw m1, 15
- psllw m1, 6 ;aka pw_64
-%endif
- mova k0k1k4k5, m6
- mova k2k3k6k7, m7
- mova krd, m1
-%endif
- mov orig_height, heightd
- shr heightd, 1
-.loop:
- ;Do two rows at once
- movh m0, [srcq - 3]
- movh m1, [srcq + 5]
- punpcklqdq m0, m1
- mova m1, m0
- movh m2, [srcq + sstrideq - 3]
- movh m3, [srcq + sstrideq + 5]
- punpcklqdq m2, m3
- mova m3, m2
- punpcklbw m0, m0
- punpckhbw m1, m1
- punpcklbw m2, m2
- punpckhbw m3, m3
- mova m4, m1
- palignr m4, m0, 1
- pmaddubsw m4, k0k1k4k5
- palignr m1, m0, 5
- pmaddubsw m1, k2k3k6k7
- mova m7, m3
- palignr m7, m2, 1
- pmaddubsw m7, k0k1k4k5
- palignr m3, m2, 5
- pmaddubsw m3, k2k3k6k7
- mova m0, m4 ;k0k1
- mova m5, m1 ;k2k3
- mova m2, m7 ;k0k1 upper
- psrldq m4, 8 ;k4k5
- psrldq m1, 8 ;k6k7
- paddsw m4, m0
- paddsw m5, m1
- mova m1, m3 ;k2k3 upper
- psrldq m7, 8 ;k4k5 upper
- psrldq m3, 8 ;k6k7 upper
- paddsw m7, m2
- paddsw m4, m5
- paddsw m1, m3
- paddsw m7, m1
- paddsw m4, krd
- psraw m4, 7
- packuswb m4, m4
- paddsw m7, krd
- psraw m7, 7
- packuswb m7, m7
-
-%ifidn %1, h8_avg
- movd m0, [dstq]
- pavgb m4, m0
- movd m2, [dstq + dstrideq]
- pavgb m7, m2
-%endif
- movd [dstq], m4
- movd [dstq + dstrideq], m7
-
- lea srcq, [srcq + sstrideq ]
- prefetcht0 [srcq + 4 * sstrideq - 3]
- lea srcq, [srcq + sstrideq ]
- lea dstq, [dstq + 2 * dstrideq ]
- prefetcht0 [srcq + 2 * sstrideq - 3]
-
- dec heightd
- jnz .loop
-
- ; Do last row if output_height is odd
- mov heightd, orig_height
- and heightd, 1
- je .done
-
- movh m0, [srcq - 3] ; load src
- movh m1, [srcq + 5]
- punpcklqdq m0, m1
-
- HORIZx4_ROW m0, m1
-%ifidn %1, h8_avg
- movd m0, [dstq]
- pavgb m1, m0
-%endif
- movd [dstq], m1
-.done
- RET
-%endm
-
-%macro HORIZx8_ROW 5
- mova %2, %1
- punpcklbw %1, %1
- punpckhbw %2, %2
-
- mova %3, %2
- mova %4, %2
- mova %5, %2
-
- palignr %2, %1, 1
- palignr %3, %1, 5
- palignr %4, %1, 9
- palignr %5, %1, 13
-
- pmaddubsw %2, k0k1
- pmaddubsw %3, k2k3
- pmaddubsw %4, k4k5
- pmaddubsw %5, k6k7
- paddsw %2, %4
- paddsw %5, %3
- paddsw %2, %5
- paddsw %2, krd
- psraw %2, 7
- packuswb %2, %2
- SWAP %1, %2
-%endm
-
-;-------------------------------------------------------------------------------
-%macro SUBPIX_HFILTER8 1
-cglobal filter_block1d8_%1, 6, 6+(ARCH_X86_64*1), 14, LOCAL_VARS_SIZE, \
- src, sstride, dst, dstride, height, filter
- mova m4, [filterq]
- SETUP_LOCAL_VARS
-%if ARCH_X86_64
- %define orig_height r7d
-%else
- %define orig_height heightmp
-%endif
- mov orig_height, heightd
- shr heightd, 1
-
-.loop:
- movh m0, [srcq - 3]
- movh m3, [srcq + 5]
- movh m4, [srcq + sstrideq - 3]
- movh m7, [srcq + sstrideq + 5]
- punpcklqdq m0, m3
- mova m1, m0
- punpcklbw m0, m0
- punpckhbw m1, m1
- mova m5, m1
- palignr m5, m0, 13
- pmaddubsw m5, k6k7
- mova m2, m1
- mova m3, m1
- palignr m1, m0, 1
- pmaddubsw m1, k0k1
- punpcklqdq m4, m7
- mova m6, m4
- punpcklbw m4, m4
- palignr m2, m0, 5
- punpckhbw m6, m6
- palignr m3, m0, 9
- mova m7, m6
- pmaddubsw m2, k2k3
- pmaddubsw m3, k4k5
-
- palignr m7, m4, 13
- mova m0, m6
- palignr m0, m4, 5
- pmaddubsw m7, k6k7
- paddsw m1, m3
- paddsw m2, m5
- paddsw m1, m2
- mova m5, m6
- palignr m6, m4, 1
- pmaddubsw m0, k2k3
- pmaddubsw m6, k0k1
- palignr m5, m4, 9
- paddsw m1, krd
- pmaddubsw m5, k4k5
- psraw m1, 7
- paddsw m0, m7
-%ifidn %1, h8_avg
- movh m7, [dstq]
- movh m2, [dstq + dstrideq]
-%endif
- packuswb m1, m1
- paddsw m6, m5
- paddsw m6, m0
- paddsw m6, krd
- psraw m6, 7
- packuswb m6, m6
-%ifidn %1, h8_avg
- pavgb m1, m7
- pavgb m6, m2
-%endif
- movh [dstq], m1
- movh [dstq + dstrideq], m6
-
- lea srcq, [srcq + sstrideq ]
- prefetcht0 [srcq + 4 * sstrideq - 3]
- lea srcq, [srcq + sstrideq ]
- lea dstq, [dstq + 2 * dstrideq ]
- prefetcht0 [srcq + 2 * sstrideq - 3]
- dec heightd
- jnz .loop
-
- ;Do last row if output_height is odd
- mov heightd, orig_height
- and heightd, 1
- je .done
-
- movh m0, [srcq - 3]
- movh m3, [srcq + 5]
- punpcklqdq m0, m3
-
- HORIZx8_ROW m0, m1, m2, m3, m4
-
-%ifidn %1, h8_avg
- movh m1, [dstq]
- pavgb m0, m1
-%endif
- movh [dstq], m0
-.done:
- RET
-%endm
-
-;-------------------------------------------------------------------------------
-%macro SUBPIX_HFILTER16 1
-cglobal filter_block1d16_%1, 6, 6+(ARCH_X86_64*0), 14, LOCAL_VARS_SIZE, \
- src, sstride, dst, dstride, height, filter
- mova m4, [filterq]
- SETUP_LOCAL_VARS
-.loop:
- prefetcht0 [srcq + 2 * sstrideq -3]
-
- movh m0, [srcq - 3]
- movh m4, [srcq + 5]
- movh m6, [srcq + 13]
- punpcklqdq m0, m4
- mova m7, m0
- punpckhbw m0, m0
- mova m1, m0
- punpcklqdq m4, m6
- mova m3, m0
- punpcklbw m7, m7
-
- palignr m3, m7, 13
- mova m2, m0
- pmaddubsw m3, k6k7
- palignr m0, m7, 1
- pmaddubsw m0, k0k1
- palignr m1, m7, 5
- pmaddubsw m1, k2k3
- palignr m2, m7, 9
- pmaddubsw m2, k4k5
- paddsw m1, m3
- mova m3, m4
- punpckhbw m4, m4
- mova m5, m4
- punpcklbw m3, m3
- mova m7, m4
- palignr m5, m3, 5
- mova m6, m4
- palignr m4, m3, 1
- pmaddubsw m4, k0k1
- pmaddubsw m5, k2k3
- palignr m6, m3, 9
- pmaddubsw m6, k4k5
- palignr m7, m3, 13
- pmaddubsw m7, k6k7
- paddsw m0, m2
- paddsw m0, m1
-%ifidn %1, h8_avg
- mova m1, [dstq]
-%endif
- paddsw m4, m6
- paddsw m5, m7
- paddsw m4, m5
- paddsw m0, krd
- paddsw m4, krd
- psraw m0, 7
- psraw m4, 7
- packuswb m0, m4
-%ifidn %1, h8_avg
- pavgb m0, m1
-%endif
- lea srcq, [srcq + sstrideq]
- mova [dstq], m0
- lea dstq, [dstq + dstrideq]
- dec heightd
- jnz .loop
- RET
-%endm
-
-INIT_XMM ssse3
-SUBPIX_HFILTER16 h8
-SUBPIX_HFILTER16 h8_avg
-SUBPIX_HFILTER8 h8
-SUBPIX_HFILTER8 h8_avg
-SUBPIX_HFILTER4 h8
-SUBPIX_HFILTER4 h8_avg
-
-;-------------------------------------------------------------------------------
-%macro SUBPIX_VFILTER 2
-cglobal filter_block1d%2_%1, 6, 6+(ARCH_X86_64*3), 14, LOCAL_VARS_SIZE, \
- src, sstride, dst, dstride, height, filter
- mova m4, [filterq]
- SETUP_LOCAL_VARS
-%if ARCH_X86_64
- %define src1q r7
- %define sstride6q r8
- %define dst_stride dstrideq
-%else
- %define src1q filterq
- %define sstride6q dstrideq
- %define dst_stride dstridemp
-%endif
- mov src1q, srcq
- add src1q, sstrideq
- lea sstride6q, [sstrideq + sstrideq * 4]
- add sstride6q, sstrideq ;pitch * 6
-
-%ifidn %2, 8
- %define movx movh
-%else
- %define movx movd
-%endif
-.loop:
- movx m0, [srcq ] ;A
- movx m1, [srcq + sstrideq ] ;B
- punpcklbw m0, m1 ;A B
- movx m2, [srcq + sstrideq * 2 ] ;C
- pmaddubsw m0, k0k1
- mova m6, m2
- movx m3, [src1q + sstrideq * 2] ;D
- punpcklbw m2, m3 ;C D
- pmaddubsw m2, k2k3
- movx m4, [srcq + sstrideq * 4 ] ;E
- mova m7, m4
- movx m5, [src1q + sstrideq * 4] ;F
- punpcklbw m4, m5 ;E F
- pmaddubsw m4, k4k5
- punpcklbw m1, m6 ;A B next iter
- movx m6, [srcq + sstride6q ] ;G
- punpcklbw m5, m6 ;E F next iter
- punpcklbw m3, m7 ;C D next iter
- pmaddubsw m5, k4k5
- movx m7, [src1q + sstride6q ] ;H
- punpcklbw m6, m7 ;G H
- pmaddubsw m6, k6k7
- pmaddubsw m3, k2k3
- pmaddubsw m1, k0k1
- paddsw m0, m4
- paddsw m2, m6
- movx m6, [srcq + sstrideq * 8 ] ;H next iter
- punpcklbw m7, m6
- pmaddubsw m7, k6k7
- paddsw m0, m2
- paddsw m0, krd
- psraw m0, 7
- paddsw m1, m5
- packuswb m0, m0
-
- paddsw m3, m7
- paddsw m1, m3
- paddsw m1, krd
- psraw m1, 7
- lea srcq, [srcq + sstrideq * 2 ]
- lea src1q, [src1q + sstrideq * 2]
- packuswb m1, m1
-
-%ifidn %1, v8_avg
- movx m2, [dstq]
- pavgb m0, m2
-%endif
- movx [dstq], m0
- add dstq, dst_stride
-%ifidn %1, v8_avg
- movx m3, [dstq]
- pavgb m1, m3
-%endif
- movx [dstq], m1
- add dstq, dst_stride
- sub heightd, 2
- cmp heightd, 1
- jg .loop
-
- cmp heightd, 0
- je .done
-
- movx m0, [srcq ] ;A
- movx m1, [srcq + sstrideq ] ;B
- movx m6, [srcq + sstride6q ] ;G
- punpcklbw m0, m1 ;A B
- movx m7, [src1q + sstride6q ] ;H
- pmaddubsw m0, k0k1
- movx m2, [srcq + sstrideq * 2 ] ;C
- punpcklbw m6, m7 ;G H
- movx m3, [src1q + sstrideq * 2] ;D
- pmaddubsw m6, k6k7
- movx m4, [srcq + sstrideq * 4 ] ;E
- punpcklbw m2, m3 ;C D
- movx m5, [src1q + sstrideq * 4] ;F
- punpcklbw m4, m5 ;E F
- pmaddubsw m2, k2k3
- pmaddubsw m4, k4k5
- paddsw m2, m6
- paddsw m0, m4
- paddsw m0, m2
- paddsw m0, krd
- psraw m0, 7
- packuswb m0, m0
-%ifidn %1, v8_avg
- movx m1, [dstq]
- pavgb m0, m1
-%endif
- movx [dstq], m0
-.done:
- RET
-%endm
-
-;-------------------------------------------------------------------------------
-%macro SUBPIX_VFILTER16 1
-cglobal filter_block1d16_%1, 6, 6+(ARCH_X86_64*3), 14, LOCAL_VARS_SIZE, \
- src, sstride, dst, dstride, height, filter
- mova m4, [filterq]
- SETUP_LOCAL_VARS
-%if ARCH_X86_64
- %define src1q r7
- %define sstride6q r8
- %define dst_stride dstrideq
-%else
- %define src1q filterq
- %define sstride6q dstrideq
- %define dst_stride dstridemp
-%endif
- mov src1q, srcq
- add src1q, sstrideq
- lea sstride6q, [sstrideq + sstrideq * 4]
- add sstride6q, sstrideq ;pitch * 6
-
-.loop:
- movh m0, [srcq ] ;A
- movh m1, [srcq + sstrideq ] ;B
- movh m2, [srcq + sstrideq * 2 ] ;C
- movh m3, [src1q + sstrideq * 2] ;D
- movh m4, [srcq + sstrideq * 4 ] ;E
- movh m5, [src1q + sstrideq * 4] ;F
-
- punpcklbw m0, m1 ;A B
- movh m6, [srcq + sstride6q] ;G
- punpcklbw m2, m3 ;C D
- movh m7, [src1q + sstride6q] ;H
- punpcklbw m4, m5 ;E F
- pmaddubsw m0, k0k1
- movh m3, [srcq + 8] ;A
- pmaddubsw m2, k2k3
- punpcklbw m6, m7 ;G H
- movh m5, [srcq + sstrideq + 8] ;B
- pmaddubsw m4, k4k5
- punpcklbw m3, m5 ;A B
- movh m7, [srcq + sstrideq * 2 + 8] ;C
- pmaddubsw m6, k6k7
- movh m5, [src1q + sstrideq * 2 + 8] ;D
- punpcklbw m7, m5 ;C D
- paddsw m2, m6
- pmaddubsw m3, k0k1
- movh m1, [srcq + sstrideq * 4 + 8] ;E
- paddsw m0, m4
- pmaddubsw m7, k2k3
- movh m6, [src1q + sstrideq * 4 + 8] ;F
- punpcklbw m1, m6 ;E F
- paddsw m0, m2
- paddsw m0, krd
- movh m2, [srcq + sstride6q + 8] ;G
- pmaddubsw m1, k4k5
- movh m5, [src1q + sstride6q + 8] ;H
- psraw m0, 7
- punpcklbw m2, m5 ;G H
- pmaddubsw m2, k6k7
-%ifidn %1, v8_avg
- mova m4, [dstq]
-%endif
- movh [dstq], m0
- paddsw m7, m2
- paddsw m3, m1
- paddsw m3, m7
- paddsw m3, krd
- psraw m3, 7
- packuswb m0, m3
-
- add srcq, sstrideq
- add src1q, sstrideq
-%ifidn %1, v8_avg
- pavgb m0, m4
-%endif
- mova [dstq], m0
- add dstq, dst_stride
- dec heightd
- jnz .loop
- RET
-%endm
-
-INIT_XMM ssse3
-SUBPIX_VFILTER16 v8
-SUBPIX_VFILTER16 v8_avg
-SUBPIX_VFILTER v8, 8
-SUBPIX_VFILTER v8_avg, 8
-SUBPIX_VFILTER v8, 4
-SUBPIX_VFILTER v8_avg, 4
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm b/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm
deleted file mode 100644
index a378dd0402..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm
+++ /dev/null
@@ -1,448 +0,0 @@
-;
-; Copyright (c) 2014 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "vpx_ports/x86_abi_support.asm"
-
-%macro GET_PARAM_4 0
- mov rdx, arg(5) ;filter ptr
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
- mov rcx, 0x0400040
-
- movdqa xmm3, [rdx] ;load filters
- pshuflw xmm4, xmm3, 11111111b ;k3
- psrldq xmm3, 8
- pshuflw xmm3, xmm3, 0b ;k4
- punpcklqdq xmm4, xmm3 ;k3k4
-
- movq xmm3, rcx ;rounding
- pshufd xmm3, xmm3, 0
-
- pxor xmm2, xmm2
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-%endm
-
-%macro APPLY_FILTER_4 1
-
- punpckldq xmm0, xmm1 ;two row in one register
- punpcklbw xmm0, xmm2 ;unpack to word
- pmullw xmm0, xmm4 ;multiply the filter factors
-
- movdqa xmm1, xmm0
- psrldq xmm1, 8
- paddsw xmm0, xmm1
-
- paddsw xmm0, xmm3 ;rounding
- psraw xmm0, 7 ;shift
- packuswb xmm0, xmm0 ;pack to byte
-
-%if %1
- movd xmm1, [rdi]
- pavgb xmm0, xmm1
-%endif
-
- movd [rdi], xmm0
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
-%endm
-
-%macro GET_PARAM 0
- mov rdx, arg(5) ;filter ptr
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
- mov rcx, 0x0400040
-
- movdqa xmm7, [rdx] ;load filters
-
- pshuflw xmm6, xmm7, 11111111b ;k3
- pshufhw xmm7, xmm7, 0b ;k4
- punpcklwd xmm6, xmm6
- punpckhwd xmm7, xmm7
-
- movq xmm4, rcx ;rounding
- pshufd xmm4, xmm4, 0
-
- pxor xmm5, xmm5
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-%endm
-
-%macro APPLY_FILTER_8 1
- punpcklbw xmm0, xmm5
- punpcklbw xmm1, xmm5
-
- pmullw xmm0, xmm6
- pmullw xmm1, xmm7
- paddsw xmm0, xmm1
- paddsw xmm0, xmm4 ;rounding
- psraw xmm0, 7 ;shift
- packuswb xmm0, xmm0 ;pack back to byte
-%if %1
- movq xmm1, [rdi]
- pavgb xmm0, xmm1
-%endif
- movq [rdi], xmm0 ;store the result
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
-%endm
-
-%macro APPLY_FILTER_16 1
- punpcklbw xmm0, xmm5
- punpcklbw xmm1, xmm5
- punpckhbw xmm2, xmm5
- punpckhbw xmm3, xmm5
-
- pmullw xmm0, xmm6
- pmullw xmm1, xmm7
- pmullw xmm2, xmm6
- pmullw xmm3, xmm7
-
- paddsw xmm0, xmm1
- paddsw xmm2, xmm3
-
- paddsw xmm0, xmm4 ;rounding
- paddsw xmm2, xmm4
- psraw xmm0, 7 ;shift
- psraw xmm2, 7
- packuswb xmm0, xmm2 ;pack back to byte
-%if %1
- movdqu xmm1, [rdi]
- pavgb xmm0, xmm1
-%endif
- movdqu [rdi], xmm0 ;store the result
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
-%endm
-
-global sym(vpx_filter_block1d4_v2_sse2) PRIVATE
-sym(vpx_filter_block1d4_v2_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM_4
-.loop:
- movd xmm0, [rsi] ;load src
- movd xmm1, [rsi + rax]
-
- APPLY_FILTER_4 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_v2_sse2) PRIVATE
-sym(vpx_filter_block1d8_v2_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movq xmm0, [rsi] ;0
- movq xmm1, [rsi + rax] ;1
-
- APPLY_FILTER_8 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_v2_sse2) PRIVATE
-sym(vpx_filter_block1d16_v2_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;0
- movdqu xmm1, [rsi + rax] ;1
- movdqa xmm2, xmm0
- movdqa xmm3, xmm1
-
- APPLY_FILTER_16 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d4_v2_avg_sse2) PRIVATE
-sym(vpx_filter_block1d4_v2_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM_4
-.loop:
- movd xmm0, [rsi] ;load src
- movd xmm1, [rsi + rax]
-
- APPLY_FILTER_4 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_v2_avg_sse2) PRIVATE
-sym(vpx_filter_block1d8_v2_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movq xmm0, [rsi] ;0
- movq xmm1, [rsi + rax] ;1
-
- APPLY_FILTER_8 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_v2_avg_sse2) PRIVATE
-sym(vpx_filter_block1d16_v2_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;0
- movdqu xmm1, [rsi + rax] ;1
- movdqa xmm2, xmm0
- movdqa xmm3, xmm1
-
- APPLY_FILTER_16 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d4_h2_sse2) PRIVATE
-sym(vpx_filter_block1d4_h2_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM_4
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqa xmm1, xmm0
- psrldq xmm1, 1
-
- APPLY_FILTER_4 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_h2_sse2) PRIVATE
-sym(vpx_filter_block1d8_h2_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqa xmm1, xmm0
- psrldq xmm1, 1
-
- APPLY_FILTER_8 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_h2_sse2) PRIVATE
-sym(vpx_filter_block1d16_h2_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqu xmm1, [rsi + 1]
- movdqa xmm2, xmm0
- movdqa xmm3, xmm1
-
- APPLY_FILTER_16 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d4_h2_avg_sse2) PRIVATE
-sym(vpx_filter_block1d4_h2_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM_4
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqa xmm1, xmm0
- psrldq xmm1, 1
-
- APPLY_FILTER_4 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_h2_avg_sse2) PRIVATE
-sym(vpx_filter_block1d8_h2_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqa xmm1, xmm0
- psrldq xmm1, 1
-
- APPLY_FILTER_8 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_h2_avg_sse2) PRIVATE
-sym(vpx_filter_block1d16_h2_avg_sse2):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqu xmm1, [rsi + 1]
- movdqa xmm2, xmm0
- movdqa xmm3, xmm1
-
- APPLY_FILTER_16 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm b/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm
deleted file mode 100644
index 3c8cfd2253..0000000000
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm
+++ /dev/null
@@ -1,422 +0,0 @@
-;
-; Copyright (c) 2014 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-%include "vpx_ports/x86_abi_support.asm"
-
-%macro GET_PARAM_4 0
- mov rdx, arg(5) ;filter ptr
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
- mov rcx, 0x0400040
-
- movdqa xmm3, [rdx] ;load filters
- psrldq xmm3, 6
- packsswb xmm3, xmm3
- pshuflw xmm3, xmm3, 0b ;k3_k4
-
- movq xmm2, rcx ;rounding
- pshufd xmm2, xmm2, 0
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-%endm
-
-%macro APPLY_FILTER_4 1
- punpcklbw xmm0, xmm1
- pmaddubsw xmm0, xmm3
-
- paddsw xmm0, xmm2 ;rounding
- psraw xmm0, 7 ;shift
- packuswb xmm0, xmm0 ;pack to byte
-
-%if %1
- movd xmm1, [rdi]
- pavgb xmm0, xmm1
-%endif
- movd [rdi], xmm0
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
-%endm
-
-%macro GET_PARAM 0
- mov rdx, arg(5) ;filter ptr
- mov rsi, arg(0) ;src_ptr
- mov rdi, arg(2) ;output_ptr
- mov rcx, 0x0400040
-
- movdqa xmm7, [rdx] ;load filters
- psrldq xmm7, 6
- packsswb xmm7, xmm7
- pshuflw xmm7, xmm7, 0b ;k3_k4
- punpcklwd xmm7, xmm7
-
- movq xmm6, rcx ;rounding
- pshufd xmm6, xmm6, 0
-
- movsxd rax, DWORD PTR arg(1) ;pixels_per_line
- movsxd rdx, DWORD PTR arg(3) ;out_pitch
- movsxd rcx, DWORD PTR arg(4) ;output_height
-%endm
-
-%macro APPLY_FILTER_8 1
- punpcklbw xmm0, xmm1
- pmaddubsw xmm0, xmm7
-
- paddsw xmm0, xmm6 ;rounding
- psraw xmm0, 7 ;shift
- packuswb xmm0, xmm0 ;pack back to byte
-
-%if %1
- movq xmm1, [rdi]
- pavgb xmm0, xmm1
-%endif
- movq [rdi], xmm0 ;store the result
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
-%endm
-
-%macro APPLY_FILTER_16 1
- punpcklbw xmm0, xmm1
- punpckhbw xmm2, xmm1
- pmaddubsw xmm0, xmm7
- pmaddubsw xmm2, xmm7
-
- paddsw xmm0, xmm6 ;rounding
- paddsw xmm2, xmm6
- psraw xmm0, 7 ;shift
- psraw xmm2, 7
- packuswb xmm0, xmm2 ;pack back to byte
-
-%if %1
- movdqu xmm1, [rdi]
- pavgb xmm0, xmm1
-%endif
- movdqu [rdi], xmm0 ;store the result
-
- lea rsi, [rsi + rax]
- lea rdi, [rdi + rdx]
- dec rcx
-%endm
-
-global sym(vpx_filter_block1d4_v2_ssse3) PRIVATE
-sym(vpx_filter_block1d4_v2_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM_4
-.loop:
- movd xmm0, [rsi] ;load src
- movd xmm1, [rsi + rax]
-
- APPLY_FILTER_4 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_v2_ssse3) PRIVATE
-sym(vpx_filter_block1d8_v2_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movq xmm0, [rsi] ;0
- movq xmm1, [rsi + rax] ;1
-
- APPLY_FILTER_8 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_v2_ssse3) PRIVATE
-sym(vpx_filter_block1d16_v2_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;0
- movdqu xmm1, [rsi + rax] ;1
- movdqa xmm2, xmm0
-
- APPLY_FILTER_16 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d4_v2_avg_ssse3) PRIVATE
-sym(vpx_filter_block1d4_v2_avg_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM_4
-.loop:
- movd xmm0, [rsi] ;load src
- movd xmm1, [rsi + rax]
-
- APPLY_FILTER_4 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_v2_avg_ssse3) PRIVATE
-sym(vpx_filter_block1d8_v2_avg_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movq xmm0, [rsi] ;0
- movq xmm1, [rsi + rax] ;1
-
- APPLY_FILTER_8 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_v2_avg_ssse3) PRIVATE
-sym(vpx_filter_block1d16_v2_avg_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;0
- movdqu xmm1, [rsi + rax] ;1
- movdqa xmm2, xmm0
-
- APPLY_FILTER_16 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d4_h2_ssse3) PRIVATE
-sym(vpx_filter_block1d4_h2_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM_4
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqa xmm1, xmm0
- psrldq xmm1, 1
-
- APPLY_FILTER_4 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_h2_ssse3) PRIVATE
-sym(vpx_filter_block1d8_h2_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqa xmm1, xmm0
- psrldq xmm1, 1
-
- APPLY_FILTER_8 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_h2_ssse3) PRIVATE
-sym(vpx_filter_block1d16_h2_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqu xmm1, [rsi + 1]
- movdqa xmm2, xmm0
-
- APPLY_FILTER_16 0
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d4_h2_avg_ssse3) PRIVATE
-sym(vpx_filter_block1d4_h2_avg_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM_4
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqa xmm1, xmm0
- psrldq xmm1, 1
-
- APPLY_FILTER_4 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d8_h2_avg_ssse3) PRIVATE
-sym(vpx_filter_block1d8_h2_avg_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqa xmm1, xmm0
- psrldq xmm1, 1
-
- APPLY_FILTER_8 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
-
-global sym(vpx_filter_block1d16_h2_avg_ssse3) PRIVATE
-sym(vpx_filter_block1d16_h2_avg_ssse3):
- push rbp
- mov rbp, rsp
- SHADOW_ARGS_TO_STACK 6
- SAVE_XMM 7
- push rsi
- push rdi
- ; end prolog
-
- GET_PARAM
-.loop:
- movdqu xmm0, [rsi] ;load src
- movdqu xmm1, [rsi + 1]
- movdqa xmm2, xmm0
-
- APPLY_FILTER_16 1
- jnz .loop
-
- ; begin epilog
- pop rdi
- pop rsi
- RESTORE_XMM
- UNSHADOW_ARGS
- pop rbp
- ret
diff --git a/thirdparty/libvpx/vpx_dsp_rtcd.h b/thirdparty/libvpx/vpx_dsp_rtcd.h
deleted file mode 100644
index 4d5ad89533..0000000000
--- a/thirdparty/libvpx/vpx_dsp_rtcd.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "vpx_config.h"
-
-#if defined(WEBM_X86ASM) && (ARCH_X86 || ARCH_X86_64)
- #include "rtcd/vpx_dsp_rtcd_x86.h"
-#elif defined(WEBM_ARMASM) && ARCH_ARM
- #include "rtcd/vpx_dsp_rtcd_arm.h"
-#else
- #include "rtcd/vpx_dsp_rtcd_c.h"
-#endif
diff --git a/thirdparty/libvpx/vpx_mem/include/vpx_mem_intrnl.h b/thirdparty/libvpx/vpx_mem/include/vpx_mem_intrnl.h
deleted file mode 100644
index c4dd78550f..0000000000
--- a/thirdparty/libvpx/vpx_mem/include/vpx_mem_intrnl.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VPX_MEM_INCLUDE_VPX_MEM_INTRNL_H_
-#define VPX_MEM_INCLUDE_VPX_MEM_INTRNL_H_
-#include "./vpx_config.h"
-
-#define ADDRESS_STORAGE_SIZE sizeof(size_t)
-
-#ifndef DEFAULT_ALIGNMENT
-# if defined(VXWORKS)
-# define DEFAULT_ALIGNMENT 32 /*default addr alignment to use in
-calls to vpx_* functions other
-than vpx_memalign*/
-# else
-# define DEFAULT_ALIGNMENT (2 * sizeof(void*)) /* NOLINT */
-# endif
-#endif
-
-/*returns an addr aligned to the byte boundary specified by align*/
-#define align_addr(addr,align) (void*)(((size_t)(addr) + ((align) - 1)) & (size_t)-(align))
-
-#endif // VPX_MEM_INCLUDE_VPX_MEM_INTRNL_H_
diff --git a/thirdparty/libvpx/vpx_mem/vpx_mem.c b/thirdparty/libvpx/vpx_mem/vpx_mem.c
deleted file mode 100644
index b261fc0da1..0000000000
--- a/thirdparty/libvpx/vpx_mem/vpx_mem.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#include "vpx_mem.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "include/vpx_mem_intrnl.h"
-#include "vpx/vpx_integer.h"
-
-void *vpx_memalign(size_t align, size_t size) {
- void *addr,
- * x = NULL;
-
- addr = malloc(size + align - 1 + ADDRESS_STORAGE_SIZE);
-
- if (addr) {
- x = align_addr((unsigned char *)addr + ADDRESS_STORAGE_SIZE, (int)align);
- /* save the actual malloc address */
- ((size_t *)x)[-1] = (size_t)addr;
- }
-
- return x;
-}
-
-void *vpx_malloc(size_t size) {
- return vpx_memalign(DEFAULT_ALIGNMENT, size);
-}
-
-void *vpx_calloc(size_t num, size_t size) {
- void *x;
-
- x = vpx_memalign(DEFAULT_ALIGNMENT, num * size);
-
- if (x)
- memset(x, 0, num * size);
-
- return x;
-}
-
-void *vpx_realloc(void *memblk, size_t size) {
- void *addr,
- * new_addr = NULL;
- int align = DEFAULT_ALIGNMENT;
-
- /*
- The realloc() function changes the size of the object pointed to by
- ptr to the size specified by size, and returns a pointer to the
- possibly moved block. The contents are unchanged up to the lesser
- of the new and old sizes. If ptr is null, realloc() behaves like
- malloc() for the specified size. If size is zero (0) and ptr is
- not a null pointer, the object pointed to is freed.
- */
- if (!memblk)
- new_addr = vpx_malloc(size);
- else if (!size)
- vpx_free(memblk);
- else {
- addr = (void *)(((size_t *)memblk)[-1]);
- memblk = NULL;
-
- new_addr = realloc(addr, size + align + ADDRESS_STORAGE_SIZE);
-
- if (new_addr) {
- addr = new_addr;
- new_addr = (void *)(((size_t)
- ((unsigned char *)new_addr + ADDRESS_STORAGE_SIZE) + (align - 1)) &
- (size_t) - align);
- /* save the actual malloc address */
- ((size_t *)new_addr)[-1] = (size_t)addr;
- }
- }
-
- return new_addr;
-}
-
-void vpx_free(void *memblk) {
- if (memblk) {
- void *addr = (void *)(((size_t *)memblk)[-1]);
- free(addr);
- }
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-void *vpx_memset16(void *dest, int val, size_t length) {
- size_t i;
- uint16_t *dest16 = (uint16_t *)dest;
- for (i = 0; i < length; i++)
- *dest16++ = val;
- return dest;
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
diff --git a/thirdparty/libvpx/vpx_mem/vpx_mem.h b/thirdparty/libvpx/vpx_mem/vpx_mem.h
deleted file mode 100644
index a006e0f00b..0000000000
--- a/thirdparty/libvpx/vpx_mem/vpx_mem.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VPX_MEM_VPX_MEM_H_
-#define VPX_MEM_VPX_MEM_H_
-
-#include "vpx_config.h"
-#if defined(__uClinux__)
-# include <lddk.h>
-#endif
-
-#include <stdlib.h>
-#include <stddef.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
- void *vpx_memalign(size_t align, size_t size);
- void *vpx_malloc(size_t size);
- void *vpx_calloc(size_t num, size_t size);
- void *vpx_realloc(void *memblk, size_t size);
- void vpx_free(void *memblk);
-
-#if CONFIG_VP9_HIGHBITDEPTH
- void *vpx_memset16(void *dest, int val, size_t length);
-#endif
-
-#include <string.h>
-
-#ifdef VPX_MEM_PLTFRM
-# include VPX_MEM_PLTFRM
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif // VPX_MEM_VPX_MEM_H_
diff --git a/thirdparty/libvpx/vpx_ports/arm.h b/thirdparty/libvpx/vpx_ports/arm.h
deleted file mode 100644
index 42c98f5a83..0000000000
--- a/thirdparty/libvpx/vpx_ports/arm.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VPX_PORTS_ARM_H_
-#define VPX_PORTS_ARM_H_
-#include <stdlib.h>
-#include "vpx_config.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*ARMv5TE "Enhanced DSP" instructions.*/
-#define HAS_EDSP 0x01
-/*ARMv6 "Parallel" or "Media" instructions.*/
-#define HAS_MEDIA 0x02
-/*ARMv7 optional NEON instructions.*/
-#define HAS_NEON 0x04
-
-int arm_cpu_caps(void);
-
-// Earlier gcc compilers have issues with some neon intrinsics
-#if !defined(__clang__) && defined(__GNUC__) && \
- __GNUC__ == 4 && __GNUC_MINOR__ <= 6
-#define VPX_INCOMPATIBLE_GCC
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_PORTS_ARM_H_
-
diff --git a/thirdparty/libvpx/vpx_ports/arm_cpudetect.c b/thirdparty/libvpx/vpx_ports/arm_cpudetect.c
deleted file mode 100644
index 7eb74a7dc9..0000000000
--- a/thirdparty/libvpx/vpx_ports/arm_cpudetect.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include "vpx_ports/arm.h"
-#include "./vpx_config.h"
-
-#ifdef WINAPI_FAMILY
-#include <winapifamily.h>
-#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-#define getenv(x) NULL
-#endif
-#endif
-
-static int arm_cpu_env_flags(int *flags) {
- char *env;
- env = getenv("VPX_SIMD_CAPS");
- if (env && *env) {
- *flags = (int)strtol(env, NULL, 0);
- return 0;
- }
- *flags = 0;
- return -1;
-}
-
-static int arm_cpu_env_mask(void) {
- char *env;
- env = getenv("VPX_SIMD_CAPS_MASK");
- return env && *env ? (int)strtol(env, NULL, 0) : ~0;
-}
-
-#if !CONFIG_RUNTIME_CPU_DETECT
- #error "CONFIG_RUNTIME_CPU_DETECT should be enabled!"
-#elif defined(_MSC_VER) /* end !CONFIG_RUNTIME_CPU_DETECT */
-/*For GetExceptionCode() and EXCEPTION_ILLEGAL_INSTRUCTION.*/
-#define WIN32_LEAN_AND_MEAN
-#define WIN32_EXTRA_LEAN
-#include <windows.h>
-
-int arm_cpu_caps(void) {
- int flags;
- int mask;
- if (!arm_cpu_env_flags(&flags)) {
- return flags;
- }
- mask = arm_cpu_env_mask();
- /* MSVC has no inline __asm support for ARM, but it does let you __emit
- * instructions via their assembled hex code.
- * All of these instructions should be essentially nops.
- */
-#if HAVE_MEDIA
- if (mask & HAS_MEDIA) {
- __try {
- /*SHADD8 r3,r3,r3*/
- __emit(0xE6333F93);
- flags |= HAS_MEDIA;
- } __except (GetExceptionCode() == EXCEPTION_ILLEGAL_INSTRUCTION) {
- /*Ignore exception.*/
- }
- }
-#endif /* HAVE_MEDIA */
-#if HAVE_NEON || HAVE_NEON_ASM
- if (mask &HAS_NEON) {
- __try {
- /*VORR q0,q0,q0*/
- __emit(0xF2200150);
- flags |= HAS_NEON;
- } __except (GetExceptionCode() == EXCEPTION_ILLEGAL_INSTRUCTION) {
- /*Ignore exception.*/
- }
- }
-#endif /* HAVE_NEON || HAVE_NEON_ASM */
- return flags & mask;
-}
-
-#elif defined(__ANDROID__) /* end _MSC_VER */
-#include <cpu-features.h>
-
-int arm_cpu_caps(void) {
- int flags;
- int mask;
- uint64_t features;
- if (!arm_cpu_env_flags(&flags)) {
- return flags;
- }
- mask = arm_cpu_env_mask();
- features = android_getCpuFeatures();
-
-#if HAVE_MEDIA
- flags |= HAS_MEDIA;
-#endif /* HAVE_MEDIA */
-#if HAVE_NEON || HAVE_NEON_ASM
- if (features & ANDROID_CPU_ARM_FEATURE_NEON)
- flags |= HAS_NEON;
-#endif /* HAVE_NEON || HAVE_NEON_ASM */
- return flags & mask;
-}
-
-#elif defined(__linux__) /* end __ANDROID__ */
-
-#include <stdio.h>
-
-int arm_cpu_caps(void) {
- FILE *fin;
- int flags;
- int mask;
- if (!arm_cpu_env_flags(&flags)) {
- return flags;
- }
- mask = arm_cpu_env_mask();
- /* Reading /proc/self/auxv would be easier, but that doesn't work reliably
- * on Android.
- * This also means that detection will fail in Scratchbox.
- */
- fin = fopen("/proc/cpuinfo", "r");
- if (fin != NULL) {
- /* 512 should be enough for anybody (it's even enough for all the flags
- * that x86 has accumulated... so far).
- */
- char buf[512];
- while (fgets(buf, 511, fin) != NULL) {
-#if HAVE_NEON || HAVE_NEON_ASM
- if (memcmp(buf, "Features", 8) == 0) {
- char *p;
- p = strstr(buf, " neon");
- if (p != NULL && (p[5] == ' ' || p[5] == '\n')) {
- flags |= HAS_NEON;
- }
- }
-#endif /* HAVE_NEON || HAVE_NEON_ASM */
-#if HAVE_MEDIA
- if (memcmp(buf, "CPU architecture:", 17) == 0) {
- int version;
- version = atoi(buf + 17);
- if (version >= 6) {
- flags |= HAS_MEDIA;
- }
- }
-#endif /* HAVE_MEDIA */
- }
- fclose(fin);
- }
- return flags & mask;
-}
-#else /* end __linux__ */
-int arm_cpu_caps(void) {
- int flags;
- int mask;
- if (!arm_cpu_env_flags(&flags)) {
- return flags;
- }
- mask = arm_cpu_env_mask();
-#if HAVE_MEDIA
- flags |= HAS_MEDIA;
-#endif /* HAVE_MEDIA */
-#if HAVE_NEON || HAVE_NEON_ASM
- flags |= HAS_NEON;
-#endif /* HAVE_NEON || HAVE_NEON_ASM */
- return flags & mask;
-}
-#warning "ARM run-time CPU detection is disabled for this platform..."
-#endif
diff --git a/thirdparty/libvpx/vpx_ports/bitops.h b/thirdparty/libvpx/vpx_ports/bitops.h
deleted file mode 100644
index 84ff3659fe..0000000000
--- a/thirdparty/libvpx/vpx_ports/bitops.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_PORTS_BITOPS_H_
-#define VPX_PORTS_BITOPS_H_
-
-#include <assert.h>
-
-#include "vpx_ports/msvc.h"
-
-#ifdef _MSC_VER
-# include <math.h> // the ceil() definition must precede intrin.h
-# if _MSC_VER > 1310 && (defined(_M_X64) || defined(_M_IX86))
-# include <intrin.h>
-# define USE_MSC_INTRINSICS
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// These versions of get_msb() are only valid when n != 0 because all
-// of the optimized versions are undefined when n == 0:
-// https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
-
-// use GNU builtins where available.
-#if defined(__GNUC__) && \
- ((__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || __GNUC__ >= 4)
-static INLINE int get_msb(unsigned int n) {
- assert(n != 0);
- return 31 ^ __builtin_clz(n);
-}
-#elif defined(USE_MSC_INTRINSICS)
-#pragma intrinsic(_BitScanReverse)
-
-static INLINE int get_msb(unsigned int n) {
- unsigned long first_set_bit;
- assert(n != 0);
- _BitScanReverse(&first_set_bit, n);
- return first_set_bit;
-}
-#undef USE_MSC_INTRINSICS
-#else
-// Returns (int)floor(log2(n)). n must be > 0.
-static INLINE int get_msb(unsigned int n) {
- int log = 0;
- unsigned int value = n;
- int i;
-
- assert(n != 0);
-
- for (i = 4; i >= 0; --i) {
- const int shift = (1 << i);
- const unsigned int x = value >> shift;
- if (x != 0) {
- value = x;
- log += shift;
- }
- }
- return log;
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_PORTS_BITOPS_H_
diff --git a/thirdparty/libvpx/vpx_ports/config.h b/thirdparty/libvpx/vpx_ports/config.h
deleted file mode 100644
index 3c1ab99f4a..0000000000
--- a/thirdparty/libvpx/vpx_ports/config.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_PORTS_CONFIG_H_
-#define VPX_PORTS_CONFIG_H_
-
-#include "vpx_config.h"
-
-#endif // VPX_PORTS_CONFIG_H_
diff --git a/thirdparty/libvpx/vpx_ports/emmintrin_compat.h b/thirdparty/libvpx/vpx_ports/emmintrin_compat.h
deleted file mode 100644
index 16176383d2..0000000000
--- a/thirdparty/libvpx/vpx_ports/emmintrin_compat.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_PORTS_EMMINTRIN_COMPAT_H_
-#define VPX_PORTS_EMMINTRIN_COMPAT_H_
-
-#if defined(__GNUC__) && __GNUC__ < 4
-/* From emmintrin.h (gcc 4.5.3) */
-/* Casts between various SP, DP, INT vector types. Note that these do no
- conversion of values, they just change the type. */
-extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_castpd_ps(__m128d __A)
-{
- return (__m128) __A;
-}
-
-extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_castpd_si128(__m128d __A)
-{
- return (__m128i) __A;
-}
-
-extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_castps_pd(__m128 __A)
-{
- return (__m128d) __A;
-}
-
-extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_castps_si128(__m128 __A)
-{
- return (__m128i) __A;
-}
-
-extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_castsi128_ps(__m128i __A)
-{
- return (__m128) __A;
-}
-
-extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_castsi128_pd(__m128i __A)
-{
- return (__m128d) __A;
-}
-#endif
-
-#endif // VPX_PORTS_EMMINTRIN_COMPAT_H_
diff --git a/thirdparty/libvpx/vpx_ports/emms.asm b/thirdparty/libvpx/vpx_ports/emms.asm
deleted file mode 100644
index db8da28737..0000000000
--- a/thirdparty/libvpx/vpx_ports/emms.asm
+++ /dev/null
@@ -1,38 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_ports/x86_abi_support.asm"
-
-section .text
-global sym(vpx_reset_mmx_state) PRIVATE
-sym(vpx_reset_mmx_state):
- emms
- ret
-
-
-%if LIBVPX_YASM_WIN64
-global sym(vpx_winx64_fldcw) PRIVATE
-sym(vpx_winx64_fldcw):
- sub rsp, 8
- mov [rsp], rcx ; win x64 specific
- fldcw [rsp]
- add rsp, 8
- ret
-
-
-global sym(vpx_winx64_fstcw) PRIVATE
-sym(vpx_winx64_fstcw):
- sub rsp, 8
- fstcw [rsp]
- mov rax, [rsp]
- add rsp, 8
- ret
-%endif
diff --git a/thirdparty/libvpx/vpx_ports/mem.h b/thirdparty/libvpx/vpx_ports/mem.h
deleted file mode 100644
index 7502f90632..0000000000
--- a/thirdparty/libvpx/vpx_ports/mem.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VPX_PORTS_MEM_H_
-#define VPX_PORTS_MEM_H_
-
-#include "vpx_config.h"
-#include "vpx/vpx_integer.h"
-
-#if (defined(__GNUC__) && __GNUC__) || defined(__SUNPRO_C)
-#define DECLARE_ALIGNED(n,typ,val) typ val __attribute__ ((aligned (n)))
-#elif defined(_MSC_VER)
-#define DECLARE_ALIGNED(n,typ,val) __declspec(align(n)) typ val
-#else
-#warning No alignment directives known for this compiler.
-#define DECLARE_ALIGNED(n,typ,val) typ val
-#endif
-
-/* Indicates that the usage of the specified variable has been audited to assure
- * that it's safe to use uninitialized. Silences 'may be used uninitialized'
- * warnings on gcc.
- */
-#if defined(__GNUC__) && __GNUC__
-#define UNINITIALIZED_IS_SAFE(x) x=x
-#else
-#define UNINITIALIZED_IS_SAFE(x) x
-#endif
-
-#if HAVE_NEON && defined(_MSC_VER)
-#define __builtin_prefetch(x)
-#endif
-
-/* Shift down with rounding */
-#define ROUND_POWER_OF_TWO(value, n) \
- (((value) + (1 << ((n) - 1))) >> (n))
-
-#define ALIGN_POWER_OF_TWO(value, n) \
- (((value) + ((1 << (n)) - 1)) & ~((1 << (n)) - 1))
-
-#if CONFIG_VP9_HIGHBITDEPTH
-#define CONVERT_TO_SHORTPTR(x) ((uint16_t*)(((uintptr_t)x) << 1))
-#define CONVERT_TO_BYTEPTR(x) ((uint8_t*)(((uintptr_t)x) >> 1))
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
-#endif // VPX_PORTS_MEM_H_
diff --git a/thirdparty/libvpx/vpx_ports/mem_ops.h b/thirdparty/libvpx/vpx_ports/mem_ops.h
deleted file mode 100644
index 620df31b22..0000000000
--- a/thirdparty/libvpx/vpx_ports/mem_ops.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_PORTS_MEM_OPS_H_
-#define VPX_PORTS_MEM_OPS_H_
-
-/* \file
- * \brief Provides portable memory access primitives
- *
- * This function provides portable primitives for getting and setting of
- * signed and unsigned integers in 16, 24, and 32 bit sizes. The operations
- * can be performed on unaligned data regardless of hardware support for
- * unaligned accesses.
- *
- * The type used to pass the integral values may be changed by defining
- * MEM_VALUE_T with the appropriate type. The type given must be an integral
- * numeric type.
- *
- * The actual functions instantiated have the MEM_VALUE_T type name pasted
- * on to the symbol name. This allows the developer to instantiate these
- * operations for multiple types within the same translation unit. This is
- * of somewhat questionable utility, but the capability exists nonetheless.
- * Users not making use of this functionality should call the functions
- * without the type name appended, and the preprocessor will take care of
- * it.
- *
- * NOTE: This code is not supported on platforms where char > 1 octet ATM.
- */
-
-#ifndef MAU_T
-/* Minimum Access Unit for this target */
-#define MAU_T unsigned char
-#endif
-
-#ifndef MEM_VALUE_T
-#define MEM_VALUE_T int
-#endif
-
-#undef MEM_VALUE_T_SZ_BITS
-#define MEM_VALUE_T_SZ_BITS (sizeof(MEM_VALUE_T) << 3)
-
-#undef mem_ops_wrap_symbol
-#define mem_ops_wrap_symbol(fn) mem_ops_wrap_symbol2(fn, MEM_VALUE_T)
-#undef mem_ops_wrap_symbol2
-#define mem_ops_wrap_symbol2(fn,typ) mem_ops_wrap_symbol3(fn,typ)
-#undef mem_ops_wrap_symbol3
-#define mem_ops_wrap_symbol3(fn,typ) fn##_as_##typ
-
-/*
- * Include aligned access routines
- */
-#define INCLUDED_BY_MEM_OPS_H
-#include "mem_ops_aligned.h"
-#undef INCLUDED_BY_MEM_OPS_H
-
-#undef mem_get_be16
-#define mem_get_be16 mem_ops_wrap_symbol(mem_get_be16)
-static unsigned MEM_VALUE_T mem_get_be16(const void *vmem) {
- unsigned MEM_VALUE_T val;
- const MAU_T *mem = (const MAU_T *)vmem;
-
- val = mem[0] << 8;
- val |= mem[1];
- return val;
-}
-
-#undef mem_get_be24
-#define mem_get_be24 mem_ops_wrap_symbol(mem_get_be24)
-static unsigned MEM_VALUE_T mem_get_be24(const void *vmem) {
- unsigned MEM_VALUE_T val;
- const MAU_T *mem = (const MAU_T *)vmem;
-
- val = mem[0] << 16;
- val |= mem[1] << 8;
- val |= mem[2];
- return val;
-}
-
-#undef mem_get_be32
-#define mem_get_be32 mem_ops_wrap_symbol(mem_get_be32)
-static unsigned MEM_VALUE_T mem_get_be32(const void *vmem) {
- unsigned MEM_VALUE_T val;
- const MAU_T *mem = (const MAU_T *)vmem;
-
- val = ((unsigned MEM_VALUE_T)mem[0]) << 24;
- val |= mem[1] << 16;
- val |= mem[2] << 8;
- val |= mem[3];
- return val;
-}
-
-#undef mem_get_le16
-#define mem_get_le16 mem_ops_wrap_symbol(mem_get_le16)
-static unsigned MEM_VALUE_T mem_get_le16(const void *vmem) {
- unsigned MEM_VALUE_T val;
- const MAU_T *mem = (const MAU_T *)vmem;
-
- val = mem[1] << 8;
- val |= mem[0];
- return val;
-}
-
-#undef mem_get_le24
-#define mem_get_le24 mem_ops_wrap_symbol(mem_get_le24)
-static unsigned MEM_VALUE_T mem_get_le24(const void *vmem) {
- unsigned MEM_VALUE_T val;
- const MAU_T *mem = (const MAU_T *)vmem;
-
- val = mem[2] << 16;
- val |= mem[1] << 8;
- val |= mem[0];
- return val;
-}
-
-#undef mem_get_le32
-#define mem_get_le32 mem_ops_wrap_symbol(mem_get_le32)
-static unsigned MEM_VALUE_T mem_get_le32(const void *vmem) {
- unsigned MEM_VALUE_T val;
- const MAU_T *mem = (const MAU_T *)vmem;
-
- val = ((unsigned MEM_VALUE_T)mem[3]) << 24;
- val |= mem[2] << 16;
- val |= mem[1] << 8;
- val |= mem[0];
- return val;
-}
-
-#define mem_get_s_generic(end,sz) \
- static VPX_INLINE signed MEM_VALUE_T mem_get_s##end##sz(const void *vmem) {\
- const MAU_T *mem = (const MAU_T*)vmem;\
- signed MEM_VALUE_T val = mem_get_##end##sz(mem);\
- return (val << (MEM_VALUE_T_SZ_BITS - sz)) >> (MEM_VALUE_T_SZ_BITS - sz);\
- }
-
-#undef mem_get_sbe16
-#define mem_get_sbe16 mem_ops_wrap_symbol(mem_get_sbe16)
-mem_get_s_generic(be, 16)
-
-#undef mem_get_sbe24
-#define mem_get_sbe24 mem_ops_wrap_symbol(mem_get_sbe24)
-mem_get_s_generic(be, 24)
-
-#undef mem_get_sbe32
-#define mem_get_sbe32 mem_ops_wrap_symbol(mem_get_sbe32)
-mem_get_s_generic(be, 32)
-
-#undef mem_get_sle16
-#define mem_get_sle16 mem_ops_wrap_symbol(mem_get_sle16)
-mem_get_s_generic(le, 16)
-
-#undef mem_get_sle24
-#define mem_get_sle24 mem_ops_wrap_symbol(mem_get_sle24)
-mem_get_s_generic(le, 24)
-
-#undef mem_get_sle32
-#define mem_get_sle32 mem_ops_wrap_symbol(mem_get_sle32)
-mem_get_s_generic(le, 32)
-
-#undef mem_put_be16
-#define mem_put_be16 mem_ops_wrap_symbol(mem_put_be16)
-static VPX_INLINE void mem_put_be16(void *vmem, MEM_VALUE_T val) {
- MAU_T *mem = (MAU_T *)vmem;
-
- mem[0] = (MAU_T)((val >> 8) & 0xff);
- mem[1] = (MAU_T)((val >> 0) & 0xff);
-}
-
-#undef mem_put_be24
-#define mem_put_be24 mem_ops_wrap_symbol(mem_put_be24)
-static VPX_INLINE void mem_put_be24(void *vmem, MEM_VALUE_T val) {
- MAU_T *mem = (MAU_T *)vmem;
-
- mem[0] = (MAU_T)((val >> 16) & 0xff);
- mem[1] = (MAU_T)((val >> 8) & 0xff);
- mem[2] = (MAU_T)((val >> 0) & 0xff);
-}
-
-#undef mem_put_be32
-#define mem_put_be32 mem_ops_wrap_symbol(mem_put_be32)
-static VPX_INLINE void mem_put_be32(void *vmem, MEM_VALUE_T val) {
- MAU_T *mem = (MAU_T *)vmem;
-
- mem[0] = (MAU_T)((val >> 24) & 0xff);
- mem[1] = (MAU_T)((val >> 16) & 0xff);
- mem[2] = (MAU_T)((val >> 8) & 0xff);
- mem[3] = (MAU_T)((val >> 0) & 0xff);
-}
-
-#undef mem_put_le16
-#define mem_put_le16 mem_ops_wrap_symbol(mem_put_le16)
-static VPX_INLINE void mem_put_le16(void *vmem, MEM_VALUE_T val) {
- MAU_T *mem = (MAU_T *)vmem;
-
- mem[0] = (MAU_T)((val >> 0) & 0xff);
- mem[1] = (MAU_T)((val >> 8) & 0xff);
-}
-
-#undef mem_put_le24
-#define mem_put_le24 mem_ops_wrap_symbol(mem_put_le24)
-static VPX_INLINE void mem_put_le24(void *vmem, MEM_VALUE_T val) {
- MAU_T *mem = (MAU_T *)vmem;
-
- mem[0] = (MAU_T)((val >> 0) & 0xff);
- mem[1] = (MAU_T)((val >> 8) & 0xff);
- mem[2] = (MAU_T)((val >> 16) & 0xff);
-}
-
-#undef mem_put_le32
-#define mem_put_le32 mem_ops_wrap_symbol(mem_put_le32)
-static VPX_INLINE void mem_put_le32(void *vmem, MEM_VALUE_T val) {
- MAU_T *mem = (MAU_T *)vmem;
-
- mem[0] = (MAU_T)((val >> 0) & 0xff);
- mem[1] = (MAU_T)((val >> 8) & 0xff);
- mem[2] = (MAU_T)((val >> 16) & 0xff);
- mem[3] = (MAU_T)((val >> 24) & 0xff);
-}
-
-#endif // VPX_PORTS_MEM_OPS_H_
diff --git a/thirdparty/libvpx/vpx_ports/mem_ops_aligned.h b/thirdparty/libvpx/vpx_ports/mem_ops_aligned.h
deleted file mode 100644
index 46f61738ba..0000000000
--- a/thirdparty/libvpx/vpx_ports/mem_ops_aligned.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_PORTS_MEM_OPS_ALIGNED_H_
-#define VPX_PORTS_MEM_OPS_ALIGNED_H_
-
-#include "vpx/vpx_integer.h"
-
-/* \file
- * \brief Provides portable memory access primitives for operating on aligned
- * data
- *
- * This file is split from mem_ops.h for easier maintenance. See mem_ops.h
- * for a more detailed description of these primitives.
- */
-#ifndef INCLUDED_BY_MEM_OPS_H
-#error Include mem_ops.h, not mem_ops_aligned.h directly.
-#endif
-
-/* Architectures that provide instructions for doing this byte swapping
- * could redefine these macros.
- */
-#define swap_endian_16(val,raw) do {\
- val = (uint16_t)(((raw>>8) & 0x00ff) \
- | ((raw<<8) & 0xff00));\
- } while(0)
-#define swap_endian_32(val,raw) do {\
- val = ((raw>>24) & 0x000000ff) \
- | ((raw>>8) & 0x0000ff00) \
- | ((raw<<8) & 0x00ff0000) \
- | ((raw<<24) & 0xff000000); \
- } while(0)
-#define swap_endian_16_se(val,raw) do {\
- swap_endian_16(val,raw);\
- val = ((val << 16) >> 16);\
- } while(0)
-#define swap_endian_32_se(val,raw) swap_endian_32(val,raw)
-
-#define mem_get_ne_aligned_generic(end,sz) \
- static VPX_INLINE unsigned MEM_VALUE_T \
- mem_get_##end##sz##_aligned(const void *vmem) {\
- const uint##sz##_t *mem = (const uint##sz##_t *)vmem;\
- return *mem;\
- }
-
-#define mem_get_sne_aligned_generic(end,sz) \
- static VPX_INLINE signed MEM_VALUE_T \
- mem_get_s##end##sz##_aligned(const void *vmem) {\
- const int##sz##_t *mem = (const int##sz##_t *)vmem;\
- return *mem;\
- }
-
-#define mem_get_se_aligned_generic(end,sz) \
- static VPX_INLINE unsigned MEM_VALUE_T \
- mem_get_##end##sz##_aligned(const void *vmem) {\
- const uint##sz##_t *mem = (const uint##sz##_t *)vmem;\
- unsigned MEM_VALUE_T val, raw = *mem;\
- swap_endian_##sz(val,raw);\
- return val;\
- }
-
-#define mem_get_sse_aligned_generic(end,sz) \
- static VPX_INLINE signed MEM_VALUE_T \
- mem_get_s##end##sz##_aligned(const void *vmem) {\
- const int##sz##_t *mem = (const int##sz##_t *)vmem;\
- unsigned MEM_VALUE_T val, raw = *mem;\
- swap_endian_##sz##_se(val,raw);\
- return val;\
- }
-
-#define mem_put_ne_aligned_generic(end,sz) \
- static VPX_INLINE void \
- mem_put_##end##sz##_aligned(void *vmem, MEM_VALUE_T val) {\
- uint##sz##_t *mem = (uint##sz##_t *)vmem;\
- *mem = (uint##sz##_t)val;\
- }
-
-#define mem_put_se_aligned_generic(end,sz) \
- static VPX_INLINE void \
- mem_put_##end##sz##_aligned(void *vmem, MEM_VALUE_T val) {\
- uint##sz##_t *mem = (uint##sz##_t *)vmem, raw;\
- swap_endian_##sz(raw,val);\
- *mem = (uint##sz##_t)raw;\
- }
-
-#include "vpx_config.h"
-#if CONFIG_BIG_ENDIAN
-#define mem_get_be_aligned_generic(sz) mem_get_ne_aligned_generic(be,sz)
-#define mem_get_sbe_aligned_generic(sz) mem_get_sne_aligned_generic(be,sz)
-#define mem_get_le_aligned_generic(sz) mem_get_se_aligned_generic(le,sz)
-#define mem_get_sle_aligned_generic(sz) mem_get_sse_aligned_generic(le,sz)
-#define mem_put_be_aligned_generic(sz) mem_put_ne_aligned_generic(be,sz)
-#define mem_put_le_aligned_generic(sz) mem_put_se_aligned_generic(le,sz)
-#else
-#define mem_get_be_aligned_generic(sz) mem_get_se_aligned_generic(be,sz)
-#define mem_get_sbe_aligned_generic(sz) mem_get_sse_aligned_generic(be,sz)
-#define mem_get_le_aligned_generic(sz) mem_get_ne_aligned_generic(le,sz)
-#define mem_get_sle_aligned_generic(sz) mem_get_sne_aligned_generic(le,sz)
-#define mem_put_be_aligned_generic(sz) mem_put_se_aligned_generic(be,sz)
-#define mem_put_le_aligned_generic(sz) mem_put_ne_aligned_generic(le,sz)
-#endif
-
-#undef mem_get_be16_aligned
-#define mem_get_be16_aligned mem_ops_wrap_symbol(mem_get_be16_aligned)
-mem_get_be_aligned_generic(16)
-
-#undef mem_get_be32_aligned
-#define mem_get_be32_aligned mem_ops_wrap_symbol(mem_get_be32_aligned)
-mem_get_be_aligned_generic(32)
-
-#undef mem_get_le16_aligned
-#define mem_get_le16_aligned mem_ops_wrap_symbol(mem_get_le16_aligned)
-mem_get_le_aligned_generic(16)
-
-#undef mem_get_le32_aligned
-#define mem_get_le32_aligned mem_ops_wrap_symbol(mem_get_le32_aligned)
-mem_get_le_aligned_generic(32)
-
-#undef mem_get_sbe16_aligned
-#define mem_get_sbe16_aligned mem_ops_wrap_symbol(mem_get_sbe16_aligned)
-mem_get_sbe_aligned_generic(16)
-
-#undef mem_get_sbe32_aligned
-#define mem_get_sbe32_aligned mem_ops_wrap_symbol(mem_get_sbe32_aligned)
-mem_get_sbe_aligned_generic(32)
-
-#undef mem_get_sle16_aligned
-#define mem_get_sle16_aligned mem_ops_wrap_symbol(mem_get_sle16_aligned)
-mem_get_sle_aligned_generic(16)
-
-#undef mem_get_sle32_aligned
-#define mem_get_sle32_aligned mem_ops_wrap_symbol(mem_get_sle32_aligned)
-mem_get_sle_aligned_generic(32)
-
-#undef mem_put_be16_aligned
-#define mem_put_be16_aligned mem_ops_wrap_symbol(mem_put_be16_aligned)
-mem_put_be_aligned_generic(16)
-
-#undef mem_put_be32_aligned
-#define mem_put_be32_aligned mem_ops_wrap_symbol(mem_put_be32_aligned)
-mem_put_be_aligned_generic(32)
-
-#undef mem_put_le16_aligned
-#define mem_put_le16_aligned mem_ops_wrap_symbol(mem_put_le16_aligned)
-mem_put_le_aligned_generic(16)
-
-#undef mem_put_le32_aligned
-#define mem_put_le32_aligned mem_ops_wrap_symbol(mem_put_le32_aligned)
-mem_put_le_aligned_generic(32)
-
-#undef mem_get_ne_aligned_generic
-#undef mem_get_se_aligned_generic
-#undef mem_get_sne_aligned_generic
-#undef mem_get_sse_aligned_generic
-#undef mem_put_ne_aligned_generic
-#undef mem_put_se_aligned_generic
-#undef swap_endian_16
-#undef swap_endian_32
-#undef swap_endian_16_se
-#undef swap_endian_32_se
-
-#endif // VPX_PORTS_MEM_OPS_ALIGNED_H_
diff --git a/thirdparty/libvpx/vpx_ports/msvc.h b/thirdparty/libvpx/vpx_ports/msvc.h
deleted file mode 100644
index cab77405f4..0000000000
--- a/thirdparty/libvpx/vpx_ports/msvc.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_PORTS_MSVC_H_
-#define VPX_PORTS_MSVC_H_
-#ifdef _MSC_VER
-
-#include "./vpx_config.h"
-
-# if _MSC_VER < 1900 // VS2015 provides snprintf
-# define snprintf _snprintf
-# endif // _MSC_VER < 1900
-
-#if _MSC_VER < 1800 // VS2013 provides round
-#include <math.h>
-static INLINE double round(double x) {
- if (x < 0)
- return ceil(x - 0.5);
- else
- return floor(x + 0.5);
-}
-#endif // _MSC_VER < 1800
-
-#endif // _MSC_VER
-#endif // VPX_PORTS_MSVC_H_
diff --git a/thirdparty/libvpx/vpx_ports/system_state.h b/thirdparty/libvpx/vpx_ports/system_state.h
deleted file mode 100644
index 01989dcafc..0000000000
--- a/thirdparty/libvpx/vpx_ports/system_state.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_PORTS_SYSTEM_STATE_H_
-#define VPX_PORTS_SYSTEM_STATE_H_
-
-#include "./vpx_config.h"
-
-#if defined(WEBM_X86ASM) && (ARCH_X86 || ARCH_X86_64)
- void vpx_reset_mmx_state(void);
- #define vpx_clear_system_state() vpx_reset_mmx_state()
-#else
- #define vpx_clear_system_state()
-#endif // ARCH_X86 || ARCH_X86_64
-#endif // VPX_PORTS_SYSTEM_STATE_H_
diff --git a/thirdparty/libvpx/vpx_ports/vpx_once.h b/thirdparty/libvpx/vpx_ports/vpx_once.h
deleted file mode 100644
index da04db4590..0000000000
--- a/thirdparty/libvpx/vpx_ports/vpx_once.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_PORTS_VPX_ONCE_H_
-#define VPX_PORTS_VPX_ONCE_H_
-
-#include "vpx_config.h"
-
-/* Implement a function wrapper to guarantee initialization
- * thread-safety for library singletons.
- *
- * NOTE: These functions use static locks, and can only be
- * used with one common argument per compilation unit. So
- *
- * file1.c:
- * vpx_once(foo);
- * ...
- * vpx_once(foo);
- *
- * file2.c:
- * vpx_once(bar);
- *
- * will ensure foo() and bar() are each called only once, but in
- *
- * file1.c:
- * vpx_once(foo);
- * vpx_once(bar):
- *
- * bar() will never be called because the lock is used up
- * by the call to foo().
- */
-
-#if CONFIG_MULTITHREAD && defined(_WIN32)
-#include <windows.h>
-#include <stdlib.h>
-/* Declare a per-compilation-unit state variable to track the progress
- * of calling func() only once. This must be at global scope because
- * local initializers are not thread-safe in MSVC prior to Visual
- * Studio 2015.
- *
- * As a static, once_state will be zero-initialized as program start.
- */
-static LONG once_state;
-static void once(void (*func)(void))
-{
- /* Try to advance once_state from its initial value of 0 to 1.
- * Only one thread can succeed in doing so.
- */
- if (InterlockedCompareExchange(&once_state, 1, 0) == 0) {
- /* We're the winning thread, having set once_state to 1.
- * Call our function. */
- func();
- /* Now advance once_state to 2, unblocking any other threads. */
- InterlockedIncrement(&once_state);
- return;
- }
-
- /* We weren't the winning thread, but we want to block on
- * the state variable so we don't return before func()
- * has finished executing elsewhere.
- *
- * Try to advance once_state from 2 to 2, which is only possible
- * after the winning thead advances it from 1 to 2.
- */
- while (InterlockedCompareExchange(&once_state, 2, 2) != 2) {
- /* State isn't yet 2. Try again.
- *
- * We are used for singleton initialization functions,
- * which should complete quickly. Contention will likewise
- * be rare, so it's worthwhile to use a simple but cpu-
- * intensive busy-wait instead of successive backoff,
- * waiting on a kernel object, or another heavier-weight scheme.
- *
- * We can at least yield our timeslice.
- */
- Sleep(0);
- }
-
- /* We've seen once_state advance to 2, so we know func()
- * has been called. And we've left once_state as we found it,
- * so other threads will have the same experience.
- *
- * It's safe to return now.
- */
- return;
-}
-
-
-#elif CONFIG_MULTITHREAD && defined(__OS2__)
-#define INCL_DOS
-#include <os2.h>
-static void once(void (*func)(void))
-{
- static int done;
-
- /* If the initialization is complete, return early. */
- if(done)
- return;
-
- /* Causes all other threads in the process to block themselves
- * and give up their time slice.
- */
- DosEnterCritSec();
-
- if (!done)
- {
- func();
- done = 1;
- }
-
- /* Restores normal thread dispatching for the current process. */
- DosExitCritSec();
-}
-
-
-#elif CONFIG_MULTITHREAD && HAVE_PTHREAD_H
-#include <pthread.h>
-static void once(void (*func)(void))
-{
- static pthread_once_t lock = PTHREAD_ONCE_INIT;
- pthread_once(&lock, func);
-}
-
-
-#else
-/* No-op version that performs no synchronization. *_rtcd() is idempotent,
- * so as long as your platform provides atomic loads/stores of pointers
- * no synchronization is strictly necessary.
- */
-
-static void once(void (*func)(void))
-{
- static int done;
-
- if(!done)
- {
- func();
- done = 1;
- }
-}
-#endif
-
-#endif // VPX_PORTS_VPX_ONCE_H_
diff --git a/thirdparty/libvpx/vpx_ports/vpx_timer.h b/thirdparty/libvpx/vpx_ports/vpx_timer.h
deleted file mode 100644
index dd98e291c2..0000000000
--- a/thirdparty/libvpx/vpx_ports/vpx_timer.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VPX_PORTS_VPX_TIMER_H_
-#define VPX_PORTS_VPX_TIMER_H_
-
-#include "./vpx_config.h"
-
-#include "vpx/vpx_integer.h"
-
-#if CONFIG_OS_SUPPORT
-
-#if defined(_WIN32)
-/*
- * Win32 specific includes
- */
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#else
-/*
- * POSIX specific includes
- */
-#include <sys/time.h>
-
-/* timersub is not provided by msys at this time. */
-#ifndef timersub
-#define timersub(a, b, result) \
- do { \
- (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
- (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
- if ((result)->tv_usec < 0) { \
- --(result)->tv_sec; \
- (result)->tv_usec += 1000000; \
- } \
- } while (0)
-#endif
-#endif
-
-
-struct vpx_usec_timer {
-#if defined(_WIN32)
- LARGE_INTEGER begin, end;
-#else
- struct timeval begin, end;
-#endif
-};
-
-
-static INLINE void
-vpx_usec_timer_start(struct vpx_usec_timer *t) {
-#if defined(_WIN32)
- QueryPerformanceCounter(&t->begin);
-#else
- gettimeofday(&t->begin, NULL);
-#endif
-}
-
-
-static INLINE void
-vpx_usec_timer_mark(struct vpx_usec_timer *t) {
-#if defined(_WIN32)
- QueryPerformanceCounter(&t->end);
-#else
- gettimeofday(&t->end, NULL);
-#endif
-}
-
-
-static INLINE int64_t
-vpx_usec_timer_elapsed(struct vpx_usec_timer *t) {
-#if defined(_WIN32)
- LARGE_INTEGER freq, diff;
-
- diff.QuadPart = t->end.QuadPart - t->begin.QuadPart;
-
- QueryPerformanceFrequency(&freq);
- return diff.QuadPart * 1000000 / freq.QuadPart;
-#else
- struct timeval diff;
-
- timersub(&t->end, &t->begin, &diff);
- return diff.tv_sec * 1000000 + diff.tv_usec;
-#endif
-}
-
-#else /* CONFIG_OS_SUPPORT = 0*/
-
-/* Empty timer functions if CONFIG_OS_SUPPORT = 0 */
-#ifndef timersub
-#define timersub(a, b, result)
-#endif
-
-struct vpx_usec_timer {
- void *dummy;
-};
-
-static INLINE void
-vpx_usec_timer_start(struct vpx_usec_timer *t) { }
-
-static INLINE void
-vpx_usec_timer_mark(struct vpx_usec_timer *t) { }
-
-static INLINE int
-vpx_usec_timer_elapsed(struct vpx_usec_timer *t) {
- return 0;
-}
-
-#endif /* CONFIG_OS_SUPPORT */
-
-#endif // VPX_PORTS_VPX_TIMER_H_
diff --git a/thirdparty/libvpx/vpx_ports/x86.h b/thirdparty/libvpx/vpx_ports/x86.h
deleted file mode 100644
index bae25ac345..0000000000
--- a/thirdparty/libvpx/vpx_ports/x86.h
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VPX_PORTS_X86_H_
-#define VPX_PORTS_X86_H_
-#include <stdlib.h>
-
-#if defined(_MSC_VER)
-#include <intrin.h> /* For __cpuidex, __rdtsc */
-#endif
-
-#include "vpx_config.h"
-#include "vpx/vpx_integer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
- VPX_CPU_UNKNOWN = -1,
- VPX_CPU_AMD,
- VPX_CPU_AMD_OLD,
- VPX_CPU_CENTAUR,
- VPX_CPU_CYRIX,
- VPX_CPU_INTEL,
- VPX_CPU_NEXGEN,
- VPX_CPU_NSC,
- VPX_CPU_RISE,
- VPX_CPU_SIS,
- VPX_CPU_TRANSMETA,
- VPX_CPU_TRANSMETA_OLD,
- VPX_CPU_UMC,
- VPX_CPU_VIA,
-
- VPX_CPU_LAST
-} vpx_cpu_t;
-
-#if defined(__GNUC__) && __GNUC__ || defined(__ANDROID__)
-#if ARCH_X86_64
-#define cpuid(func, func2, ax, bx, cx, dx)\
- __asm__ __volatile__ (\
- "cpuid \n\t" \
- : "=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) \
- : "a" (func), "c" (func2));
-#else
-#define cpuid(func, func2, ax, bx, cx, dx)\
- __asm__ __volatile__ (\
- "mov %%ebx, %%edi \n\t" \
- "cpuid \n\t" \
- "xchg %%edi, %%ebx \n\t" \
- : "=a" (ax), "=D" (bx), "=c" (cx), "=d" (dx) \
- : "a" (func), "c" (func2));
-#endif
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* end __GNUC__ or __ANDROID__*/
-#if ARCH_X86_64
-#define cpuid(func, func2, ax, bx, cx, dx)\
- asm volatile (\
- "xchg %rsi, %rbx \n\t" \
- "cpuid \n\t" \
- "movl %ebx, %edi \n\t" \
- "xchg %rsi, %rbx \n\t" \
- : "=a" (ax), "=D" (bx), "=c" (cx), "=d" (dx) \
- : "a" (func), "c" (func2));
-#else
-#define cpuid(func, func2, ax, bx, cx, dx)\
- asm volatile (\
- "pushl %ebx \n\t" \
- "cpuid \n\t" \
- "movl %ebx, %edi \n\t" \
- "popl %ebx \n\t" \
- : "=a" (ax), "=D" (bx), "=c" (cx), "=d" (dx) \
- : "a" (func), "c" (func2));
-#endif
-#else /* end __SUNPRO__ */
-#if ARCH_X86_64
-#if defined(_MSC_VER) && _MSC_VER > 1500
-#define cpuid(func, func2, a, b, c, d) do {\
- int regs[4];\
- __cpuidex(regs, func, func2); \
- a = regs[0]; b = regs[1]; c = regs[2]; d = regs[3];\
- } while(0)
-#else
-#define cpuid(func, func2, a, b, c, d) do {\
- int regs[4];\
- __cpuid(regs, func); \
- a = regs[0]; b = regs[1]; c = regs[2]; d = regs[3];\
- } while (0)
-#endif
-#else
-#define cpuid(func, func2, a, b, c, d)\
- __asm mov eax, func\
- __asm mov ecx, func2\
- __asm cpuid\
- __asm mov a, eax\
- __asm mov b, ebx\
- __asm mov c, ecx\
- __asm mov d, edx
-#endif
-#endif /* end others */
-
-// NaCl has no support for xgetbv or the raw opcode.
-#if !defined(__native_client__) && (defined(__i386__) || defined(__x86_64__))
-static INLINE uint64_t xgetbv(void) {
- const uint32_t ecx = 0;
- uint32_t eax, edx;
- // Use the raw opcode for xgetbv for compatibility with older toolchains.
- __asm__ volatile (
- ".byte 0x0f, 0x01, 0xd0\n"
- : "=a"(eax), "=d"(edx) : "c" (ecx));
- return ((uint64_t)edx << 32) | eax;
-}
-#elif (defined(_M_X64) || defined(_M_IX86)) && \
- defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 160040219 // >= VS2010 SP1
-#include <immintrin.h>
-#define xgetbv() _xgetbv(0)
-#elif defined(_MSC_VER) && defined(_M_IX86)
-static INLINE uint64_t xgetbv(void) {
- uint32_t eax_, edx_;
- __asm {
- xor ecx, ecx // ecx = 0
- // Use the raw opcode for xgetbv for compatibility with older toolchains.
- __asm _emit 0x0f __asm _emit 0x01 __asm _emit 0xd0
- mov eax_, eax
- mov edx_, edx
- }
- return ((uint64_t)edx_ << 32) | eax_;
-}
-#else
-#define xgetbv() 0U // no AVX for older x64 or unrecognized toolchains.
-#endif
-
-#if defined(_MSC_VER) && _MSC_VER >= 1700
-#include <windows.h>
-#if WINAPI_FAMILY_PARTITION(WINAPI_FAMILY_APP)
-#define getenv(x) NULL
-#endif
-#endif
-
-#define HAS_MMX 0x01
-#define HAS_SSE 0x02
-#define HAS_SSE2 0x04
-#define HAS_SSE3 0x08
-#define HAS_SSSE3 0x10
-#define HAS_SSE4_1 0x20
-#define HAS_AVX 0x40
-#define HAS_AVX2 0x80
-#ifndef BIT
-#define BIT(n) (1<<n)
-#endif
-
-static INLINE int
-x86_simd_caps(void) {
- unsigned int flags = 0;
- unsigned int mask = ~0;
- unsigned int max_cpuid_val, reg_eax, reg_ebx, reg_ecx, reg_edx;
- char *env;
- (void)reg_ebx;
-
- /* See if the CPU capabilities are being overridden by the environment */
- env = getenv("VPX_SIMD_CAPS");
-
- if (env && *env)
- return (int)strtol(env, NULL, 0);
-
- env = getenv("VPX_SIMD_CAPS_MASK");
-
- if (env && *env)
- mask = (unsigned int)strtoul(env, NULL, 0);
-
- /* Ensure that the CPUID instruction supports extended features */
- cpuid(0, 0, max_cpuid_val, reg_ebx, reg_ecx, reg_edx);
-
- if (max_cpuid_val < 1)
- return 0;
-
- /* Get the standard feature flags */
- cpuid(1, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
-
- if (reg_edx & BIT(23)) flags |= HAS_MMX;
-
- if (reg_edx & BIT(25)) flags |= HAS_SSE; /* aka xmm */
-
- if (reg_edx & BIT(26)) flags |= HAS_SSE2; /* aka wmt */
-
- if (reg_ecx & BIT(0)) flags |= HAS_SSE3;
-
- if (reg_ecx & BIT(9)) flags |= HAS_SSSE3;
-
- if (reg_ecx & BIT(19)) flags |= HAS_SSE4_1;
-
- // bits 27 (OSXSAVE) & 28 (256-bit AVX)
- if ((reg_ecx & (BIT(27) | BIT(28))) == (BIT(27) | BIT(28))) {
- if ((xgetbv() & 0x6) == 0x6) {
- flags |= HAS_AVX;
-
- if (max_cpuid_val >= 7) {
- /* Get the leaf 7 feature flags. Needed to check for AVX2 support */
- cpuid(7, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
-
- if (reg_ebx & BIT(5)) flags |= HAS_AVX2;
- }
- }
- }
-
- return flags & mask;
-}
-
-// Note:
-// 32-bit CPU cycle counter is light-weighted for most function performance
-// measurement. For large function (CPU time > a couple of seconds), 64-bit
-// counter should be used.
-// 32-bit CPU cycle counter
-static INLINE unsigned int
-x86_readtsc(void) {
-#if defined(__GNUC__) && __GNUC__
- unsigned int tsc;
- __asm__ __volatile__("rdtsc\n\t":"=a"(tsc):);
- return tsc;
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
- unsigned int tsc;
- asm volatile("rdtsc\n\t":"=a"(tsc):);
- return tsc;
-#else
-#if ARCH_X86_64
- return (unsigned int)__rdtsc();
-#else
- __asm rdtsc;
-#endif
-#endif
-}
-// 64-bit CPU cycle counter
-static INLINE uint64_t
-x86_readtsc64(void) {
-#if defined(__GNUC__) && __GNUC__
- uint32_t hi, lo;
- __asm__ __volatile__("rdtsc" : "=a"(lo), "=d"(hi));
- return ((uint64_t)hi << 32) | lo;
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
- uint_t hi, lo;
- asm volatile("rdtsc\n\t" : "=a"(lo), "=d"(hi));
- return ((uint64_t)hi << 32) | lo;
-#else
-#if ARCH_X86_64
- return (uint64_t)__rdtsc();
-#else
- __asm rdtsc;
-#endif
-#endif
-}
-
-#if defined(__GNUC__) && __GNUC__
-#define x86_pause_hint()\
- __asm__ __volatile__ ("pause \n\t")
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-#define x86_pause_hint()\
- asm volatile ("pause \n\t")
-#else
-#if ARCH_X86_64
-#define x86_pause_hint()\
- _mm_pause();
-#else
-#define x86_pause_hint()\
- __asm pause
-#endif
-#endif
-
-#if defined(__GNUC__) && __GNUC__
-static void
-x87_set_control_word(unsigned short mode) {
- __asm__ __volatile__("fldcw %0" : : "m"(*&mode));
-}
-static unsigned short
-x87_get_control_word(void) {
- unsigned short mode;
- __asm__ __volatile__("fstcw %0\n\t":"=m"(*&mode):);
- return mode;
-}
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-static void
-x87_set_control_word(unsigned short mode) {
- asm volatile("fldcw %0" : : "m"(*&mode));
-}
-static unsigned short
-x87_get_control_word(void) {
- unsigned short mode;
- asm volatile("fstcw %0\n\t":"=m"(*&mode):);
- return mode;
-}
-#elif ARCH_X86_64
-/* No fldcw intrinsics on Windows x64, punt to external asm */
-extern void vpx_winx64_fldcw(unsigned short mode);
-extern unsigned short vpx_winx64_fstcw(void);
-#define x87_set_control_word vpx_winx64_fldcw
-#define x87_get_control_word vpx_winx64_fstcw
-#else
-static void
-x87_set_control_word(unsigned short mode) {
- __asm { fldcw mode }
-}
-static unsigned short
-x87_get_control_word(void) {
- unsigned short mode;
- __asm { fstcw mode }
- return mode;
-}
-#endif
-
-static INLINE unsigned int
-x87_set_double_precision(void) {
- unsigned int mode = x87_get_control_word();
- x87_set_control_word((mode&~0x300) | 0x200);
- return mode;
-}
-
-
-extern void vpx_reset_mmx_state(void);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_PORTS_X86_H_
diff --git a/thirdparty/libvpx/vpx_ports/x86_abi_support.asm b/thirdparty/libvpx/vpx_ports/x86_abi_support.asm
deleted file mode 100644
index 708fa101c5..0000000000
--- a/thirdparty/libvpx/vpx_ports/x86_abi_support.asm
+++ /dev/null
@@ -1,404 +0,0 @@
-;
-; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
-;
-; Use of this source code is governed by a BSD-style license
-; that can be found in the LICENSE file in the root of the source
-; tree. An additional intellectual property rights grant can be found
-; in the file PATENTS. All contributing project authors may
-; be found in the AUTHORS file in the root of the source tree.
-;
-
-
-%include "vpx_config.asm"
-
-; 32/64 bit compatibility macros
-;
-; In general, we make the source use 64 bit syntax, then twiddle with it using
-; the preprocessor to get the 32 bit syntax on 32 bit platforms.
-;
-%ifidn __OUTPUT_FORMAT__,elf32
-%define ABI_IS_32BIT 1
-%elifidn __OUTPUT_FORMAT__,macho32
-%define ABI_IS_32BIT 1
-%elifidn __OUTPUT_FORMAT__,win32
-%define ABI_IS_32BIT 1
-%elifidn __OUTPUT_FORMAT__,aout
-%define ABI_IS_32BIT 1
-%else
-%define ABI_IS_32BIT 0
-%endif
-
-%if ABI_IS_32BIT
-%define rax eax
-%define rbx ebx
-%define rcx ecx
-%define rdx edx
-%define rsi esi
-%define rdi edi
-%define rsp esp
-%define rbp ebp
-%define movsxd mov
-%macro movq 2
- %ifidn %1,eax
- movd %1,%2
- %elifidn %2,eax
- movd %1,%2
- %elifidn %1,ebx
- movd %1,%2
- %elifidn %2,ebx
- movd %1,%2
- %elifidn %1,ecx
- movd %1,%2
- %elifidn %2,ecx
- movd %1,%2
- %elifidn %1,edx
- movd %1,%2
- %elifidn %2,edx
- movd %1,%2
- %elifidn %1,esi
- movd %1,%2
- %elifidn %2,esi
- movd %1,%2
- %elifidn %1,edi
- movd %1,%2
- %elifidn %2,edi
- movd %1,%2
- %elifidn %1,esp
- movd %1,%2
- %elifidn %2,esp
- movd %1,%2
- %elifidn %1,ebp
- movd %1,%2
- %elifidn %2,ebp
- movd %1,%2
- %else
- movq %1,%2
- %endif
-%endmacro
-%endif
-
-
-; LIBVPX_YASM_WIN64
-; Set LIBVPX_YASM_WIN64 if output is Windows 64bit so the code will work if x64
-; or win64 is defined on the Yasm command line.
-%ifidn __OUTPUT_FORMAT__,win64
-%define LIBVPX_YASM_WIN64 1
-%elifidn __OUTPUT_FORMAT__,x64
-%define LIBVPX_YASM_WIN64 1
-%else
-%define LIBVPX_YASM_WIN64 0
-%endif
-
-; sym()
-; Return the proper symbol name for the target ABI.
-;
-; Certain ABIs, notably MS COFF and Darwin MACH-O, require that symbols
-; with C linkage be prefixed with an underscore.
-;
-%ifidn __OUTPUT_FORMAT__,elf32
-%define sym(x) x
-%elifidn __OUTPUT_FORMAT__,elf64
-%define sym(x) x
-%elifidn __OUTPUT_FORMAT__,elfx32
-%define sym(x) x
-%elif LIBVPX_YASM_WIN64
-%define sym(x) x
-%else
-%define sym(x) _ %+ x
-%endif
-
-; PRIVATE
-; Macro for the attribute to hide a global symbol for the target ABI.
-; This is only active if CHROMIUM is defined.
-;
-; Chromium doesn't like exported global symbols due to symbol clashing with
-; plugins among other things.
-;
-; Requires Chromium's patched copy of yasm:
-; http://src.chromium.org/viewvc/chrome?view=rev&revision=73761
-; http://www.tortall.net/projects/yasm/ticket/236
-;
-%ifdef CHROMIUM
- %ifidn __OUTPUT_FORMAT__,elf32
- %define PRIVATE :hidden
- %elifidn __OUTPUT_FORMAT__,elf64
- %define PRIVATE :hidden
- %elifidn __OUTPUT_FORMAT__,elfx32
- %define PRIVATE :hidden
- %elif LIBVPX_YASM_WIN64
- %define PRIVATE
- %else
- %define PRIVATE :private_extern
- %endif
-%else
- %define PRIVATE
-%endif
-
-; arg()
-; Return the address specification of the given argument
-;
-%if ABI_IS_32BIT
- %define arg(x) [ebp+8+4*x]
-%else
- ; 64 bit ABI passes arguments in registers. This is a workaround to get up
- ; and running quickly. Relies on SHADOW_ARGS_TO_STACK
- %if LIBVPX_YASM_WIN64
- %define arg(x) [rbp+16+8*x]
- %else
- %define arg(x) [rbp-8-8*x]
- %endif
-%endif
-
-; REG_SZ_BYTES, REG_SZ_BITS
-; Size of a register
-%if ABI_IS_32BIT
-%define REG_SZ_BYTES 4
-%define REG_SZ_BITS 32
-%else
-%define REG_SZ_BYTES 8
-%define REG_SZ_BITS 64
-%endif
-
-
-; ALIGN_STACK <alignment> <register>
-; This macro aligns the stack to the given alignment (in bytes). The stack
-; is left such that the previous value of the stack pointer is the first
-; argument on the stack (ie, the inverse of this macro is 'pop rsp.')
-; This macro uses one temporary register, which is not preserved, and thus
-; must be specified as an argument.
-%macro ALIGN_STACK 2
- mov %2, rsp
- and rsp, -%1
- lea rsp, [rsp - (%1 - REG_SZ_BYTES)]
- push %2
-%endmacro
-
-
-;
-; The Microsoft assembler tries to impose a certain amount of type safety in
-; its register usage. YASM doesn't recognize these directives, so we just
-; %define them away to maintain as much compatibility as possible with the
-; original inline assembler we're porting from.
-;
-%idefine PTR
-%idefine XMMWORD
-%idefine MMWORD
-
-; PIC macros
-;
-%if ABI_IS_32BIT
- %if CONFIG_PIC=1
- %ifidn __OUTPUT_FORMAT__,elf32
- %define WRT_PLT wrt ..plt
- %macro GET_GOT 1
- extern _GLOBAL_OFFSET_TABLE_
- push %1
- call %%get_got
- %%sub_offset:
- jmp %%exitGG
- %%get_got:
- mov %1, [esp]
- add %1, _GLOBAL_OFFSET_TABLE_ + $$ - %%sub_offset wrt ..gotpc
- ret
- %%exitGG:
- %undef GLOBAL
- %define GLOBAL(x) x + %1 wrt ..gotoff
- %undef RESTORE_GOT
- %define RESTORE_GOT pop %1
- %endmacro
- %elifidn __OUTPUT_FORMAT__,macho32
- %macro GET_GOT 1
- push %1
- call %%get_got
- %%get_got:
- pop %1
- %undef GLOBAL
- %define GLOBAL(x) x + %1 - %%get_got
- %undef RESTORE_GOT
- %define RESTORE_GOT pop %1
- %endmacro
- %endif
- %endif
-
- %ifdef CHROMIUM
- %ifidn __OUTPUT_FORMAT__,macho32
- %define HIDDEN_DATA(x) x:private_extern
- %else
- %define HIDDEN_DATA(x) x
- %endif
- %else
- %define HIDDEN_DATA(x) x
- %endif
-%else
- %macro GET_GOT 1
- %endmacro
- %define GLOBAL(x) rel x
- %ifidn __OUTPUT_FORMAT__,elf64
- %define WRT_PLT wrt ..plt
- %define HIDDEN_DATA(x) x:data hidden
- %elifidn __OUTPUT_FORMAT__,elfx32
- %define WRT_PLT wrt ..plt
- %define HIDDEN_DATA(x) x:data hidden
- %elifidn __OUTPUT_FORMAT__,macho64
- %ifdef CHROMIUM
- %define HIDDEN_DATA(x) x:private_extern
- %else
- %define HIDDEN_DATA(x) x
- %endif
- %else
- %define HIDDEN_DATA(x) x
- %endif
-%endif
-%ifnmacro GET_GOT
- %macro GET_GOT 1
- %endmacro
- %define GLOBAL(x) x
-%endif
-%ifndef RESTORE_GOT
-%define RESTORE_GOT
-%endif
-%ifndef WRT_PLT
-%define WRT_PLT
-%endif
-
-%if ABI_IS_32BIT
- %macro SHADOW_ARGS_TO_STACK 1
- %endm
- %define UNSHADOW_ARGS
-%else
-%if LIBVPX_YASM_WIN64
- %macro SHADOW_ARGS_TO_STACK 1 ; argc
- %if %1 > 0
- mov arg(0),rcx
- %endif
- %if %1 > 1
- mov arg(1),rdx
- %endif
- %if %1 > 2
- mov arg(2),r8
- %endif
- %if %1 > 3
- mov arg(3),r9
- %endif
- %endm
-%else
- %macro SHADOW_ARGS_TO_STACK 1 ; argc
- %if %1 > 0
- push rdi
- %endif
- %if %1 > 1
- push rsi
- %endif
- %if %1 > 2
- push rdx
- %endif
- %if %1 > 3
- push rcx
- %endif
- %if %1 > 4
- push r8
- %endif
- %if %1 > 5
- push r9
- %endif
- %if %1 > 6
- %assign i %1-6
- %assign off 16
- %rep i
- mov rax,[rbp+off]
- push rax
- %assign off off+8
- %endrep
- %endif
- %endm
-%endif
- %define UNSHADOW_ARGS mov rsp, rbp
-%endif
-
-; Win64 ABI requires that XMM6:XMM15 are callee saved
-; SAVE_XMM n, [u]
-; store registers 6-n on the stack
-; if u is specified, use unaligned movs.
-; Win64 ABI requires 16 byte stack alignment, but then pushes an 8 byte return
-; value. Typically we follow this up with 'push rbp' - re-aligning the stack -
-; but in some cases this is not done and unaligned movs must be used.
-%if LIBVPX_YASM_WIN64
-%macro SAVE_XMM 1-2 a
- %if %1 < 6
- %error Only xmm registers 6-15 must be preserved
- %else
- %assign last_xmm %1
- %define movxmm movdq %+ %2
- %assign xmm_stack_space ((last_xmm - 5) * 16)
- sub rsp, xmm_stack_space
- %assign i 6
- %rep (last_xmm - 5)
- movxmm [rsp + ((i - 6) * 16)], xmm %+ i
- %assign i i+1
- %endrep
- %endif
-%endmacro
-%macro RESTORE_XMM 0
- %ifndef last_xmm
- %error RESTORE_XMM must be paired with SAVE_XMM n
- %else
- %assign i last_xmm
- %rep (last_xmm - 5)
- movxmm xmm %+ i, [rsp +((i - 6) * 16)]
- %assign i i-1
- %endrep
- add rsp, xmm_stack_space
- ; there are a couple functions which return from multiple places.
- ; otherwise, we could uncomment these:
- ; %undef last_xmm
- ; %undef xmm_stack_space
- ; %undef movxmm
- %endif
-%endmacro
-%else
-%macro SAVE_XMM 1-2
-%endmacro
-%macro RESTORE_XMM 0
-%endmacro
-%endif
-
-; Name of the rodata section
-;
-; .rodata seems to be an elf-ism, as it doesn't work on OSX.
-;
-%ifidn __OUTPUT_FORMAT__,macho64
-%define SECTION_RODATA section .text
-%elifidn __OUTPUT_FORMAT__,macho32
-%macro SECTION_RODATA 0
-section .text
-%endmacro
-%elifidn __OUTPUT_FORMAT__,aout
-%define SECTION_RODATA section .data
-%else
-%define SECTION_RODATA section .rodata
-%endif
-
-
-; Tell GNU ld that we don't require an executable stack.
-%ifidn __OUTPUT_FORMAT__,elf32
-section .note.GNU-stack noalloc noexec nowrite progbits
-section .text
-%elifidn __OUTPUT_FORMAT__,elf64
-section .note.GNU-stack noalloc noexec nowrite progbits
-section .text
-%elifidn __OUTPUT_FORMAT__,elfx32
-section .note.GNU-stack noalloc noexec nowrite progbits
-section .text
-%endif
-
-; On Android platforms use lrand48 when building postproc routines. Prior to L
-; rand() was not available.
-%if CONFIG_POSTPROC=1 || CONFIG_VP9_POSTPROC=1
-%ifdef __ANDROID__
-extern sym(lrand48)
-%define LIBVPX_RAND lrand48
-%else
-extern sym(rand)
-%define LIBVPX_RAND rand
-%endif
-%endif ; CONFIG_POSTPROC || CONFIG_VP9_POSTPROC
diff --git a/thirdparty/libvpx/vpx_scale/generic/yv12config.c b/thirdparty/libvpx/vpx_scale/generic/yv12config.c
deleted file mode 100644
index 6bbb6d8d48..0000000000
--- a/thirdparty/libvpx/vpx_scale/generic/yv12config.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "vpx_scale/yv12config.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-
-/****************************************************************************
-* Exports
-****************************************************************************/
-
-/****************************************************************************
- *
- ****************************************************************************/
-#define yv12_align_addr(addr, align) \
- (void*)(((size_t)(addr) + ((align) - 1)) & (size_t)-(align))
-
-int
-vp8_yv12_de_alloc_frame_buffer(YV12_BUFFER_CONFIG *ybf) {
- if (ybf) {
- // If libvpx is using frame buffer callbacks then buffer_alloc_sz must
- // not be set.
- if (ybf->buffer_alloc_sz > 0) {
- vpx_free(ybf->buffer_alloc);
- }
-
- /* buffer_alloc isn't accessed by most functions. Rather y_buffer,
- u_buffer and v_buffer point to buffer_alloc and are used. Clear out
- all of this so that a freed pointer isn't inadvertently used */
- memset(ybf, 0, sizeof(YV12_BUFFER_CONFIG));
- } else {
- return -1;
- }
-
- return 0;
-}
-
-int vp8_yv12_realloc_frame_buffer(YV12_BUFFER_CONFIG *ybf,
- int width, int height, int border) {
- if (ybf) {
- int aligned_width = (width + 15) & ~15;
- int aligned_height = (height + 15) & ~15;
- int y_stride = ((aligned_width + 2 * border) + 31) & ~31;
- int yplane_size = (aligned_height + 2 * border) * y_stride;
- int uv_width = aligned_width >> 1;
- int uv_height = aligned_height >> 1;
- /** There is currently a bunch of code which assumes
- * uv_stride == y_stride/2, so enforce this here. */
- int uv_stride = y_stride >> 1;
- int uvplane_size = (uv_height + border) * uv_stride;
- const int frame_size = yplane_size + 2 * uvplane_size;
-
- if (!ybf->buffer_alloc) {
- ybf->buffer_alloc = (uint8_t *)vpx_memalign(32, frame_size);
- ybf->buffer_alloc_sz = frame_size;
- }
-
- if (!ybf->buffer_alloc || ybf->buffer_alloc_sz < frame_size)
- return -1;
-
- /* Only support allocating buffers that have a border that's a multiple
- * of 32. The border restriction is required to get 16-byte alignment of
- * the start of the chroma rows without introducing an arbitrary gap
- * between planes, which would break the semantics of things like
- * vpx_img_set_rect(). */
- if (border & 0x1f)
- return -3;
-
- ybf->y_crop_width = width;
- ybf->y_crop_height = height;
- ybf->y_width = aligned_width;
- ybf->y_height = aligned_height;
- ybf->y_stride = y_stride;
-
- ybf->uv_crop_width = (width + 1) / 2;
- ybf->uv_crop_height = (height + 1) / 2;
- ybf->uv_width = uv_width;
- ybf->uv_height = uv_height;
- ybf->uv_stride = uv_stride;
-
- ybf->alpha_width = 0;
- ybf->alpha_height = 0;
- ybf->alpha_stride = 0;
-
- ybf->border = border;
- ybf->frame_size = frame_size;
-
- ybf->y_buffer = ybf->buffer_alloc + (border * y_stride) + border;
- ybf->u_buffer = ybf->buffer_alloc + yplane_size + (border / 2 * uv_stride) + border / 2;
- ybf->v_buffer = ybf->buffer_alloc + yplane_size + uvplane_size + (border / 2 * uv_stride) + border / 2;
- ybf->alpha_buffer = NULL;
-
- ybf->corrupted = 0; /* assume not currupted by errors */
- return 0;
- }
- return -2;
-}
-
-int vp8_yv12_alloc_frame_buffer(YV12_BUFFER_CONFIG *ybf,
- int width, int height, int border) {
- if (ybf) {
- vp8_yv12_de_alloc_frame_buffer(ybf);
- return vp8_yv12_realloc_frame_buffer(ybf, width, height, border);
- }
- return -2;
-}
-
-#if CONFIG_VP9
-// TODO(jkoleszar): Maybe replace this with struct vpx_image
-
-int vpx_free_frame_buffer(YV12_BUFFER_CONFIG *ybf) {
- if (ybf) {
- if (ybf->buffer_alloc_sz > 0) {
- vpx_free(ybf->buffer_alloc);
- }
-
- /* buffer_alloc isn't accessed by most functions. Rather y_buffer,
- u_buffer and v_buffer point to buffer_alloc and are used. Clear out
- all of this so that a freed pointer isn't inadvertently used */
- memset(ybf, 0, sizeof(YV12_BUFFER_CONFIG));
- } else {
- return -1;
- }
-
- return 0;
-}
-
-int vpx_realloc_frame_buffer(YV12_BUFFER_CONFIG *ybf,
- int width, int height,
- int ss_x, int ss_y,
-#if CONFIG_VP9_HIGHBITDEPTH
- int use_highbitdepth,
-#endif
- int border,
- int byte_alignment,
- vpx_codec_frame_buffer_t *fb,
- vpx_get_frame_buffer_cb_fn_t cb,
- void *cb_priv) {
- if (ybf) {
- const int vp9_byte_align = (byte_alignment == 0) ? 1 : byte_alignment;
- const int aligned_width = (width + 7) & ~7;
- const int aligned_height = (height + 7) & ~7;
- const int y_stride = ((aligned_width + 2 * border) + 31) & ~31;
- const uint64_t yplane_size = (aligned_height + 2 * border) *
- (uint64_t)y_stride + byte_alignment;
- const int uv_width = aligned_width >> ss_x;
- const int uv_height = aligned_height >> ss_y;
- const int uv_stride = y_stride >> ss_x;
- const int uv_border_w = border >> ss_x;
- const int uv_border_h = border >> ss_y;
- const uint64_t uvplane_size = (uv_height + 2 * uv_border_h) *
- (uint64_t)uv_stride + byte_alignment;
-
-#if CONFIG_VP9_HIGHBITDEPTH
- const uint64_t frame_size =
- (1 + use_highbitdepth) * (yplane_size + 2 * uvplane_size);
-#else
- const uint64_t frame_size = yplane_size + 2 * uvplane_size;
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
- uint8_t *buf = NULL;
-
- if (cb != NULL) {
- const int align_addr_extra_size = 31;
- const uint64_t external_frame_size = frame_size + align_addr_extra_size;
-
- assert(fb != NULL);
-
- if (external_frame_size != (size_t)external_frame_size)
- return -1;
-
- // Allocation to hold larger frame, or first allocation.
- if (cb(cb_priv, (size_t)external_frame_size, fb) < 0)
- return -1;
-
- if (fb->data == NULL || fb->size < external_frame_size)
- return -1;
-
- ybf->buffer_alloc = (uint8_t *)yv12_align_addr(fb->data, 32);
-
-#if defined(__has_feature)
-#if __has_feature(memory_sanitizer)
- // This memset is needed for fixing the issue of using uninitialized
- // value in msan test. It will cause a perf loss, so only do this for
- // msan test.
- memset(ybf->buffer_alloc, 0, (int)frame_size);
-#endif
-#endif
- } else if (frame_size > (size_t)ybf->buffer_alloc_sz) {
- // Allocation to hold larger frame, or first allocation.
- vpx_free(ybf->buffer_alloc);
- ybf->buffer_alloc = NULL;
-
- if (frame_size != (size_t)frame_size)
- return -1;
-
- ybf->buffer_alloc = (uint8_t *)vpx_memalign(32, (size_t)frame_size);
- if (!ybf->buffer_alloc)
- return -1;
-
- ybf->buffer_alloc_sz = (int)frame_size;
-
- // This memset is needed for fixing valgrind error from C loop filter
- // due to access uninitialized memory in frame border. It could be
- // removed if border is totally removed.
- memset(ybf->buffer_alloc, 0, ybf->buffer_alloc_sz);
- }
-
- /* Only support allocating buffers that have a border that's a multiple
- * of 32. The border restriction is required to get 16-byte alignment of
- * the start of the chroma rows without introducing an arbitrary gap
- * between planes, which would break the semantics of things like
- * vpx_img_set_rect(). */
- if (border & 0x1f)
- return -3;
-
- ybf->y_crop_width = width;
- ybf->y_crop_height = height;
- ybf->y_width = aligned_width;
- ybf->y_height = aligned_height;
- ybf->y_stride = y_stride;
-
- ybf->uv_crop_width = (width + ss_x) >> ss_x;
- ybf->uv_crop_height = (height + ss_y) >> ss_y;
- ybf->uv_width = uv_width;
- ybf->uv_height = uv_height;
- ybf->uv_stride = uv_stride;
-
- ybf->border = border;
- ybf->frame_size = (int)frame_size;
- ybf->subsampling_x = ss_x;
- ybf->subsampling_y = ss_y;
-
- buf = ybf->buffer_alloc;
-#if CONFIG_VP9_HIGHBITDEPTH
- if (use_highbitdepth) {
- // Store uint16 addresses when using 16bit framebuffers
- buf = CONVERT_TO_BYTEPTR(ybf->buffer_alloc);
- ybf->flags = YV12_FLAG_HIGHBITDEPTH;
- } else {
- ybf->flags = 0;
- }
-#endif // CONFIG_VP9_HIGHBITDEPTH
-
- ybf->y_buffer = (uint8_t *)yv12_align_addr(
- buf + (border * y_stride) + border, vp9_byte_align);
- ybf->u_buffer = (uint8_t *)yv12_align_addr(
- buf + yplane_size + (uv_border_h * uv_stride) + uv_border_w,
- vp9_byte_align);
- ybf->v_buffer = (uint8_t *)yv12_align_addr(
- buf + yplane_size + uvplane_size + (uv_border_h * uv_stride) +
- uv_border_w, vp9_byte_align);
-
- ybf->corrupted = 0; /* assume not corrupted by errors */
- return 0;
- }
- return -2;
-}
-
-int vpx_alloc_frame_buffer(YV12_BUFFER_CONFIG *ybf,
- int width, int height,
- int ss_x, int ss_y,
-#if CONFIG_VP9_HIGHBITDEPTH
- int use_highbitdepth,
-#endif
- int border,
- int byte_alignment) {
- if (ybf) {
- vpx_free_frame_buffer(ybf);
- return vpx_realloc_frame_buffer(ybf, width, height, ss_x, ss_y,
-#if CONFIG_VP9_HIGHBITDEPTH
- use_highbitdepth,
-#endif
- border, byte_alignment, NULL, NULL, NULL);
- }
- return -2;
-}
-#endif
diff --git a/thirdparty/libvpx/vpx_scale/generic/yv12extend.c b/thirdparty/libvpx/vpx_scale/generic/yv12extend.c
deleted file mode 100644
index 52f0aff1f2..0000000000
--- a/thirdparty/libvpx/vpx_scale/generic/yv12extend.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-#include "./vpx_config.h"
-#include "./vpx_scale_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_scale/yv12config.h"
-#if CONFIG_VP9_HIGHBITDEPTH
-#include "vp9/common/vp9_common.h"
-#endif
-
-static void extend_plane(uint8_t *const src, int src_stride,
- int width, int height,
- int extend_top, int extend_left,
- int extend_bottom, int extend_right) {
- int i;
- const int linesize = extend_left + extend_right + width;
-
- /* copy the left and right most columns out */
- uint8_t *src_ptr1 = src;
- uint8_t *src_ptr2 = src + width - 1;
- uint8_t *dst_ptr1 = src - extend_left;
- uint8_t *dst_ptr2 = src + width;
-
- for (i = 0; i < height; ++i) {
- memset(dst_ptr1, src_ptr1[0], extend_left);
- memset(dst_ptr2, src_ptr2[0], extend_right);
- src_ptr1 += src_stride;
- src_ptr2 += src_stride;
- dst_ptr1 += src_stride;
- dst_ptr2 += src_stride;
- }
-
- /* Now copy the top and bottom lines into each line of the respective
- * borders
- */
- src_ptr1 = src - extend_left;
- src_ptr2 = src + src_stride * (height - 1) - extend_left;
- dst_ptr1 = src + src_stride * -extend_top - extend_left;
- dst_ptr2 = src + src_stride * height - extend_left;
-
- for (i = 0; i < extend_top; ++i) {
- memcpy(dst_ptr1, src_ptr1, linesize);
- dst_ptr1 += src_stride;
- }
-
- for (i = 0; i < extend_bottom; ++i) {
- memcpy(dst_ptr2, src_ptr2, linesize);
- dst_ptr2 += src_stride;
- }
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void extend_plane_high(uint8_t *const src8, int src_stride,
- int width, int height,
- int extend_top, int extend_left,
- int extend_bottom, int extend_right) {
- int i;
- const int linesize = extend_left + extend_right + width;
- uint16_t *src = CONVERT_TO_SHORTPTR(src8);
-
- /* copy the left and right most columns out */
- uint16_t *src_ptr1 = src;
- uint16_t *src_ptr2 = src + width - 1;
- uint16_t *dst_ptr1 = src - extend_left;
- uint16_t *dst_ptr2 = src + width;
-
- for (i = 0; i < height; ++i) {
- vpx_memset16(dst_ptr1, src_ptr1[0], extend_left);
- vpx_memset16(dst_ptr2, src_ptr2[0], extend_right);
- src_ptr1 += src_stride;
- src_ptr2 += src_stride;
- dst_ptr1 += src_stride;
- dst_ptr2 += src_stride;
- }
-
- /* Now copy the top and bottom lines into each line of the respective
- * borders
- */
- src_ptr1 = src - extend_left;
- src_ptr2 = src + src_stride * (height - 1) - extend_left;
- dst_ptr1 = src + src_stride * -extend_top - extend_left;
- dst_ptr2 = src + src_stride * height - extend_left;
-
- for (i = 0; i < extend_top; ++i) {
- memcpy(dst_ptr1, src_ptr1, linesize * sizeof(uint16_t));
- dst_ptr1 += src_stride;
- }
-
- for (i = 0; i < extend_bottom; ++i) {
- memcpy(dst_ptr2, src_ptr2, linesize * sizeof(uint16_t));
- dst_ptr2 += src_stride;
- }
-}
-#endif
-
-void vp8_yv12_extend_frame_borders_c(YV12_BUFFER_CONFIG *ybf) {
- const int uv_border = ybf->border / 2;
-
- assert(ybf->border % 2 == 0);
- assert(ybf->y_height - ybf->y_crop_height < 16);
- assert(ybf->y_width - ybf->y_crop_width < 16);
- assert(ybf->y_height - ybf->y_crop_height >= 0);
- assert(ybf->y_width - ybf->y_crop_width >= 0);
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (ybf->flags & YV12_FLAG_HIGHBITDEPTH) {
- extend_plane_high(
- ybf->y_buffer, ybf->y_stride,
- ybf->y_crop_width, ybf->y_crop_height,
- ybf->border, ybf->border,
- ybf->border + ybf->y_height - ybf->y_crop_height,
- ybf->border + ybf->y_width - ybf->y_crop_width);
-
- extend_plane_high(
- ybf->u_buffer, ybf->uv_stride,
- ybf->uv_crop_width, ybf->uv_crop_height,
- uv_border, uv_border,
- uv_border + ybf->uv_height - ybf->uv_crop_height,
- uv_border + ybf->uv_width - ybf->uv_crop_width);
-
- extend_plane_high(
- ybf->v_buffer, ybf->uv_stride,
- ybf->uv_crop_width, ybf->uv_crop_height,
- uv_border, uv_border,
- uv_border + ybf->uv_height - ybf->uv_crop_height,
- uv_border + ybf->uv_width - ybf->uv_crop_width);
- return;
- }
-#endif
- extend_plane(ybf->y_buffer, ybf->y_stride,
- ybf->y_crop_width, ybf->y_crop_height,
- ybf->border, ybf->border,
- ybf->border + ybf->y_height - ybf->y_crop_height,
- ybf->border + ybf->y_width - ybf->y_crop_width);
-
- extend_plane(ybf->u_buffer, ybf->uv_stride,
- ybf->uv_crop_width, ybf->uv_crop_height,
- uv_border, uv_border,
- uv_border + ybf->uv_height - ybf->uv_crop_height,
- uv_border + ybf->uv_width - ybf->uv_crop_width);
-
- extend_plane(ybf->v_buffer, ybf->uv_stride,
- ybf->uv_crop_width, ybf->uv_crop_height,
- uv_border, uv_border,
- uv_border + ybf->uv_height - ybf->uv_crop_height,
- uv_border + ybf->uv_width - ybf->uv_crop_width);
-}
-
-#if CONFIG_VP9
-static void extend_frame(YV12_BUFFER_CONFIG *const ybf, int ext_size) {
- const int c_w = ybf->uv_crop_width;
- const int c_h = ybf->uv_crop_height;
- const int ss_x = ybf->uv_width < ybf->y_width;
- const int ss_y = ybf->uv_height < ybf->y_height;
- const int c_et = ext_size >> ss_y;
- const int c_el = ext_size >> ss_x;
- const int c_eb = c_et + ybf->uv_height - ybf->uv_crop_height;
- const int c_er = c_el + ybf->uv_width - ybf->uv_crop_width;
-
- assert(ybf->y_height - ybf->y_crop_height < 16);
- assert(ybf->y_width - ybf->y_crop_width < 16);
- assert(ybf->y_height - ybf->y_crop_height >= 0);
- assert(ybf->y_width - ybf->y_crop_width >= 0);
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (ybf->flags & YV12_FLAG_HIGHBITDEPTH) {
- extend_plane_high(ybf->y_buffer, ybf->y_stride,
- ybf->y_crop_width, ybf->y_crop_height,
- ext_size, ext_size,
- ext_size + ybf->y_height - ybf->y_crop_height,
- ext_size + ybf->y_width - ybf->y_crop_width);
- extend_plane_high(ybf->u_buffer, ybf->uv_stride,
- c_w, c_h, c_et, c_el, c_eb, c_er);
- extend_plane_high(ybf->v_buffer, ybf->uv_stride,
- c_w, c_h, c_et, c_el, c_eb, c_er);
- return;
- }
-#endif
- extend_plane(ybf->y_buffer, ybf->y_stride,
- ybf->y_crop_width, ybf->y_crop_height,
- ext_size, ext_size,
- ext_size + ybf->y_height - ybf->y_crop_height,
- ext_size + ybf->y_width - ybf->y_crop_width);
-
- extend_plane(ybf->u_buffer, ybf->uv_stride,
- c_w, c_h, c_et, c_el, c_eb, c_er);
-
- extend_plane(ybf->v_buffer, ybf->uv_stride,
- c_w, c_h, c_et, c_el, c_eb, c_er);
-}
-
-void vpx_extend_frame_borders_c(YV12_BUFFER_CONFIG *ybf) {
- extend_frame(ybf, ybf->border);
-}
-
-void vpx_extend_frame_inner_borders_c(YV12_BUFFER_CONFIG *ybf) {
- const int inner_bw = (ybf->border > VP9INNERBORDERINPIXELS) ?
- VP9INNERBORDERINPIXELS : ybf->border;
- extend_frame(ybf, inner_bw);
-}
-
-#if CONFIG_VP9_HIGHBITDEPTH
-static void memcpy_short_addr(uint8_t *dst8, const uint8_t *src8, int num) {
- uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
- uint16_t *src = CONVERT_TO_SHORTPTR(src8);
- memcpy(dst, src, num * sizeof(uint16_t));
-}
-#endif // CONFIG_VP9_HIGHBITDEPTH
-#endif // CONFIG_VP9
-
-// Copies the source image into the destination image and updates the
-// destination's UMV borders.
-// Note: The frames are assumed to be identical in size.
-void vp8_yv12_copy_frame_c(const YV12_BUFFER_CONFIG *src_ybc,
- YV12_BUFFER_CONFIG *dst_ybc) {
- int row;
- const uint8_t *src = src_ybc->y_buffer;
- uint8_t *dst = dst_ybc->y_buffer;
-
-#if 0
- /* These assertions are valid in the codec, but the libvpx-tester uses
- * this code slightly differently.
- */
- assert(src_ybc->y_width == dst_ybc->y_width);
- assert(src_ybc->y_height == dst_ybc->y_height);
-#endif
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (src_ybc->flags & YV12_FLAG_HIGHBITDEPTH) {
- assert(dst_ybc->flags & YV12_FLAG_HIGHBITDEPTH);
- for (row = 0; row < src_ybc->y_height; ++row) {
- memcpy_short_addr(dst, src, src_ybc->y_width);
- src += src_ybc->y_stride;
- dst += dst_ybc->y_stride;
- }
-
- src = src_ybc->u_buffer;
- dst = dst_ybc->u_buffer;
-
- for (row = 0; row < src_ybc->uv_height; ++row) {
- memcpy_short_addr(dst, src, src_ybc->uv_width);
- src += src_ybc->uv_stride;
- dst += dst_ybc->uv_stride;
- }
-
- src = src_ybc->v_buffer;
- dst = dst_ybc->v_buffer;
-
- for (row = 0; row < src_ybc->uv_height; ++row) {
- memcpy_short_addr(dst, src, src_ybc->uv_width);
- src += src_ybc->uv_stride;
- dst += dst_ybc->uv_stride;
- }
-
- vp8_yv12_extend_frame_borders_c(dst_ybc);
- return;
- } else {
- assert(!(dst_ybc->flags & YV12_FLAG_HIGHBITDEPTH));
- }
-#endif
-
- for (row = 0; row < src_ybc->y_height; ++row) {
- memcpy(dst, src, src_ybc->y_width);
- src += src_ybc->y_stride;
- dst += dst_ybc->y_stride;
- }
-
- src = src_ybc->u_buffer;
- dst = dst_ybc->u_buffer;
-
- for (row = 0; row < src_ybc->uv_height; ++row) {
- memcpy(dst, src, src_ybc->uv_width);
- src += src_ybc->uv_stride;
- dst += dst_ybc->uv_stride;
- }
-
- src = src_ybc->v_buffer;
- dst = dst_ybc->v_buffer;
-
- for (row = 0; row < src_ybc->uv_height; ++row) {
- memcpy(dst, src, src_ybc->uv_width);
- src += src_ybc->uv_stride;
- dst += dst_ybc->uv_stride;
- }
-
- vp8_yv12_extend_frame_borders_c(dst_ybc);
-}
-
-void vpx_yv12_copy_y_c(const YV12_BUFFER_CONFIG *src_ybc,
- YV12_BUFFER_CONFIG *dst_ybc) {
- int row;
- const uint8_t *src = src_ybc->y_buffer;
- uint8_t *dst = dst_ybc->y_buffer;
-
-#if CONFIG_VP9_HIGHBITDEPTH
- if (src_ybc->flags & YV12_FLAG_HIGHBITDEPTH) {
- const uint16_t *src16 = CONVERT_TO_SHORTPTR(src);
- uint16_t *dst16 = CONVERT_TO_SHORTPTR(dst);
- for (row = 0; row < src_ybc->y_height; ++row) {
- memcpy(dst16, src16, src_ybc->y_width * sizeof(uint16_t));
- src16 += src_ybc->y_stride;
- dst16 += dst_ybc->y_stride;
- }
- return;
- }
-#endif
-
- for (row = 0; row < src_ybc->y_height; ++row) {
- memcpy(dst, src, src_ybc->y_width);
- src += src_ybc->y_stride;
- dst += dst_ybc->y_stride;
- }
-}
diff --git a/thirdparty/libvpx/vpx_scale/vpx_scale.h b/thirdparty/libvpx/vpx_scale/vpx_scale.h
deleted file mode 100644
index 43fcf9d66e..0000000000
--- a/thirdparty/libvpx/vpx_scale/vpx_scale.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef VPX_SCALE_VPX_SCALE_H_
-#define VPX_SCALE_VPX_SCALE_H_
-
-#include "vpx_scale/yv12config.h"
-
-extern void vpx_scale_frame(YV12_BUFFER_CONFIG *src,
- YV12_BUFFER_CONFIG *dst,
- unsigned char *temp_area,
- unsigned char temp_height,
- unsigned int hscale,
- unsigned int hratio,
- unsigned int vscale,
- unsigned int vratio,
- unsigned int interlaced);
-
-#endif // VPX_SCALE_VPX_SCALE_H_
diff --git a/thirdparty/libvpx/vpx_scale/vpx_scale_rtcd.c b/thirdparty/libvpx/vpx_scale/vpx_scale_rtcd.c
deleted file mode 100644
index bea603fd10..0000000000
--- a/thirdparty/libvpx/vpx_scale/vpx_scale_rtcd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2011 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#include "./vpx_config.h"
-#define RTCD_C
-#include "./vpx_scale_rtcd.h"
-#include "vpx_ports/vpx_once.h"
-
-void vpx_scale_rtcd()
-{
- once(setup_rtcd_internal);
-}
diff --git a/thirdparty/libvpx/vpx_scale/yv12config.h b/thirdparty/libvpx/vpx_scale/yv12config.h
deleted file mode 100644
index 37b255d4d3..0000000000
--- a/thirdparty/libvpx/vpx_scale/yv12config.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VPX_SCALE_YV12CONFIG_H_
-#define VPX_SCALE_YV12CONFIG_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "./vpx_config.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_frame_buffer.h"
-#include "vpx/vpx_integer.h"
-
-#define VP8BORDERINPIXELS 32
-#define VP9INNERBORDERINPIXELS 96
-#define VP9_INTERP_EXTEND 4
-#define VP9_ENC_BORDER_IN_PIXELS 160
-#define VP9_DEC_BORDER_IN_PIXELS 32
-
-typedef struct yv12_buffer_config {
- int y_width;
- int y_height;
- int y_crop_width;
- int y_crop_height;
- int y_stride;
-
- int uv_width;
- int uv_height;
- int uv_crop_width;
- int uv_crop_height;
- int uv_stride;
-
- int alpha_width;
- int alpha_height;
- int alpha_stride;
-
- uint8_t *y_buffer;
- uint8_t *u_buffer;
- uint8_t *v_buffer;
- uint8_t *alpha_buffer;
-
- uint8_t *buffer_alloc;
- int buffer_alloc_sz;
- int border;
- int frame_size;
- int subsampling_x;
- int subsampling_y;
- unsigned int bit_depth;
- vpx_color_space_t color_space;
- vpx_color_range_t color_range;
- int render_width;
- int render_height;
-
- int corrupted;
- int flags;
-} YV12_BUFFER_CONFIG;
-
-#define YV12_FLAG_HIGHBITDEPTH 8
-
-int vp8_yv12_alloc_frame_buffer(YV12_BUFFER_CONFIG *ybf,
- int width, int height, int border);
-int vp8_yv12_realloc_frame_buffer(YV12_BUFFER_CONFIG *ybf,
- int width, int height, int border);
-int vp8_yv12_de_alloc_frame_buffer(YV12_BUFFER_CONFIG *ybf);
-
-int vpx_alloc_frame_buffer(YV12_BUFFER_CONFIG *ybf,
- int width, int height, int ss_x, int ss_y,
-#if CONFIG_VP9_HIGHBITDEPTH
- int use_highbitdepth,
-#endif
- int border, int byte_alignment);
-
-// Updates the yv12 buffer config with the frame buffer. |byte_alignment| must
-// be a power of 2, from 32 to 1024. 0 sets legacy alignment. If cb is not
-// NULL, then libvpx is using the frame buffer callbacks to handle memory.
-// If cb is not NULL, libvpx will call cb with minimum size in bytes needed
-// to decode the current frame. If cb is NULL, libvpx will allocate memory
-// internally to decode the current frame. Returns 0 on success. Returns < 0
-// on failure.
-int vpx_realloc_frame_buffer(YV12_BUFFER_CONFIG *ybf,
- int width, int height, int ss_x, int ss_y,
-#if CONFIG_VP9_HIGHBITDEPTH
- int use_highbitdepth,
-#endif
- int border,
- int byte_alignment,
- vpx_codec_frame_buffer_t *fb,
- vpx_get_frame_buffer_cb_fn_t cb,
- void *cb_priv);
-int vpx_free_frame_buffer(YV12_BUFFER_CONFIG *ybf);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VPX_SCALE_YV12CONFIG_H_
diff --git a/thirdparty/libvpx/vpx_scale_rtcd.h b/thirdparty/libvpx/vpx_scale_rtcd.h
deleted file mode 100644
index 4d59467fe9..0000000000
--- a/thirdparty/libvpx/vpx_scale_rtcd.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef VPX_SCALE_RTCD_H_
-#define VPX_SCALE_RTCD_H_
-
-#ifdef RTCD_C
-#define RTCD_EXTERN
-#else
-#define RTCD_EXTERN extern
-#endif
-
-struct yv12_buffer_config;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void vp8_yv12_copy_frame_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
-#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
-
-void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf);
-#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
-
-void vpx_extend_frame_borders_c(struct yv12_buffer_config *ybf);
-#define vpx_extend_frame_borders vpx_extend_frame_borders_c
-
-void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf);
-#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
-
-void vpx_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
-#define vpx_yv12_copy_y vpx_yv12_copy_y_c
-
-void vpx_scale_rtcd(void);
-
-#ifdef RTCD_C
-static void setup_rtcd_internal(void)
-{
- //Only MIPS has something here, but it is not supported
-}
-#endif
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/thirdparty/libvpx/vpx_util/endian_inl.h b/thirdparty/libvpx/vpx_util/endian_inl.h
deleted file mode 100644
index 37bdce1ccd..0000000000
--- a/thirdparty/libvpx/vpx_util/endian_inl.h
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2014 Google Inc. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the COPYING file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-// -----------------------------------------------------------------------------
-//
-// Endian related functions.
-
-#ifndef VPX_UTIL_ENDIAN_INL_H_
-#define VPX_UTIL_ENDIAN_INL_H_
-
-#include <stdlib.h>
-#include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-
-#if defined(__GNUC__)
-# define LOCAL_GCC_VERSION ((__GNUC__ << 8) | __GNUC_MINOR__)
-# define LOCAL_GCC_PREREQ(maj, min) \
- (LOCAL_GCC_VERSION >= (((maj) << 8) | (min)))
-#else
-# define LOCAL_GCC_VERSION 0
-# define LOCAL_GCC_PREREQ(maj, min) 0
-#endif
-
-// handle clang compatibility
-#ifndef __has_builtin
-# define __has_builtin(x) 0
-#endif
-
-// some endian fix (e.g.: mips-gcc doesn't define __BIG_ENDIAN__)
-#if !defined(WORDS_BIGENDIAN) && \
- (defined(__BIG_ENDIAN__) || defined(_M_PPC) || \
- (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)))
-#define WORDS_BIGENDIAN
-#endif
-
-#if defined(WORDS_BIGENDIAN)
-#define HToLE32 BSwap32
-#define HToLE16 BSwap16
-#define HToBE64(x) (x)
-#define HToBE32(x) (x)
-#else
-#define HToLE32(x) (x)
-#define HToLE16(x) (x)
-#define HToBE64(X) BSwap64(X)
-#define HToBE32(X) BSwap32(X)
-#endif
-
-#if LOCAL_GCC_PREREQ(4, 8) || __has_builtin(__builtin_bswap16)
-#define HAVE_BUILTIN_BSWAP16
-#endif
-
-#if LOCAL_GCC_PREREQ(4, 3) || __has_builtin(__builtin_bswap32)
-#define HAVE_BUILTIN_BSWAP32
-#endif
-
-#if LOCAL_GCC_PREREQ(4, 3) || __has_builtin(__builtin_bswap64)
-#define HAVE_BUILTIN_BSWAP64
-#endif
-
-#if HAVE_MIPS32 && defined(__mips__) && !defined(__mips64) && \
- defined(__mips_isa_rev) && (__mips_isa_rev >= 2) && (__mips_isa_rev < 6)
-#define VPX_USE_MIPS32_R2
-#endif
-
-static INLINE uint16_t BSwap16(uint16_t x) {
-#if defined(HAVE_BUILTIN_BSWAP16)
- return __builtin_bswap16(x);
-#elif defined(_MSC_VER)
- return _byteswap_ushort(x);
-#else
- // gcc will recognize a 'rorw $8, ...' here:
- return (x >> 8) | ((x & 0xff) << 8);
-#endif // HAVE_BUILTIN_BSWAP16
-}
-
-static INLINE uint32_t BSwap32(uint32_t x) {
-#if defined(VPX_USE_MIPS32_R2)
- uint32_t ret;
- __asm__ volatile (
- "wsbh %[ret], %[x] \n\t"
- "rotr %[ret], %[ret], 16 \n\t"
- : [ret]"=r"(ret)
- : [x]"r"(x)
- );
- return ret;
-#elif defined(HAVE_BUILTIN_BSWAP32)
- return __builtin_bswap32(x);
-#elif defined(__i386__) || defined(__x86_64__)
- uint32_t swapped_bytes;
- __asm__ volatile("bswap %0" : "=r"(swapped_bytes) : "0"(x));
- return swapped_bytes;
-#elif defined(_MSC_VER)
- return (uint32_t)_byteswap_ulong(x);
-#else
- return (x >> 24) | ((x >> 8) & 0xff00) | ((x << 8) & 0xff0000) | (x << 24);
-#endif // HAVE_BUILTIN_BSWAP32
-}
-
-static INLINE uint64_t BSwap64(uint64_t x) {
-#if defined(HAVE_BUILTIN_BSWAP64)
- return __builtin_bswap64(x);
-#elif defined(__x86_64__)
- uint64_t swapped_bytes;
- __asm__ volatile("bswapq %0" : "=r"(swapped_bytes) : "0"(x));
- return swapped_bytes;
-#elif defined(_MSC_VER)
- return (uint64_t)_byteswap_uint64(x);
-#else // generic code for swapping 64-bit values (suggested by bdb@)
- x = ((x & 0xffffffff00000000ull) >> 32) | ((x & 0x00000000ffffffffull) << 32);
- x = ((x & 0xffff0000ffff0000ull) >> 16) | ((x & 0x0000ffff0000ffffull) << 16);
- x = ((x & 0xff00ff00ff00ff00ull) >> 8) | ((x & 0x00ff00ff00ff00ffull) << 8);
- return x;
-#endif // HAVE_BUILTIN_BSWAP64
-}
-
-#endif // VPX_UTIL_ENDIAN_INL_H_
diff --git a/thirdparty/libvpx/vpx_util/vpx_thread.c b/thirdparty/libvpx/vpx_util/vpx_thread.c
deleted file mode 100644
index 0bb0125bd4..0000000000
--- a/thirdparty/libvpx/vpx_util/vpx_thread.c
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright 2013 Google Inc. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the COPYING file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-// -----------------------------------------------------------------------------
-//
-// Multi-threaded worker
-//
-// Original source:
-// http://git.chromium.org/webm/libwebp.git
-// 100644 blob 264210ba2807e4da47eb5d18c04cf869d89b9784 src/utils/thread.c
-
-#include <assert.h>
-#include <string.h> // for memset()
-#include "./vpx_thread.h"
-#include "vpx_mem/vpx_mem.h"
-
-#if CONFIG_MULTITHREAD
-
-struct VPxWorkerImpl {
- pthread_mutex_t mutex_;
- pthread_cond_t condition_;
- pthread_t thread_;
-};
-
-//------------------------------------------------------------------------------
-
-static void execute(VPxWorker *const worker); // Forward declaration.
-
-static THREADFN thread_loop(void *ptr) {
- VPxWorker *const worker = (VPxWorker*)ptr;
- int done = 0;
- while (!done) {
- pthread_mutex_lock(&worker->impl_->mutex_);
- while (worker->status_ == OK) { // wait in idling mode
- pthread_cond_wait(&worker->impl_->condition_, &worker->impl_->mutex_);
- }
- if (worker->status_ == WORK) {
- execute(worker);
- worker->status_ = OK;
- } else if (worker->status_ == NOT_OK) { // finish the worker
- done = 1;
- }
- // signal to the main thread that we're done (for sync())
- pthread_cond_signal(&worker->impl_->condition_);
- pthread_mutex_unlock(&worker->impl_->mutex_);
- }
- return THREAD_RETURN(NULL); // Thread is finished
-}
-
-// main thread state control
-static void change_state(VPxWorker *const worker,
- VPxWorkerStatus new_status) {
- // No-op when attempting to change state on a thread that didn't come up.
- // Checking status_ without acquiring the lock first would result in a data
- // race.
- if (worker->impl_ == NULL) return;
-
- pthread_mutex_lock(&worker->impl_->mutex_);
- if (worker->status_ >= OK) {
- // wait for the worker to finish
- while (worker->status_ != OK) {
- pthread_cond_wait(&worker->impl_->condition_, &worker->impl_->mutex_);
- }
- // assign new status and release the working thread if needed
- if (new_status != OK) {
- worker->status_ = new_status;
- pthread_cond_signal(&worker->impl_->condition_);
- }
- }
- pthread_mutex_unlock(&worker->impl_->mutex_);
-}
-
-#endif // CONFIG_MULTITHREAD
-
-//------------------------------------------------------------------------------
-
-static void init(VPxWorker *const worker) {
- memset(worker, 0, sizeof(*worker));
- worker->status_ = NOT_OK;
-}
-
-static int sync(VPxWorker *const worker) {
-#if CONFIG_MULTITHREAD
- change_state(worker, OK);
-#endif
- assert(worker->status_ <= OK);
- return !worker->had_error;
-}
-
-static int reset(VPxWorker *const worker) {
- int ok = 1;
- worker->had_error = 0;
- if (worker->status_ < OK) {
-#if CONFIG_MULTITHREAD
- worker->impl_ = (VPxWorkerImpl*)vpx_calloc(1, sizeof(*worker->impl_));
- if (worker->impl_ == NULL) {
- return 0;
- }
- if (pthread_mutex_init(&worker->impl_->mutex_, NULL)) {
- goto Error;
- }
- if (pthread_cond_init(&worker->impl_->condition_, NULL)) {
- pthread_mutex_destroy(&worker->impl_->mutex_);
- goto Error;
- }
- pthread_mutex_lock(&worker->impl_->mutex_);
- ok = !pthread_create(&worker->impl_->thread_, NULL, thread_loop, worker);
- if (ok) worker->status_ = OK;
- pthread_mutex_unlock(&worker->impl_->mutex_);
- if (!ok) {
- pthread_mutex_destroy(&worker->impl_->mutex_);
- pthread_cond_destroy(&worker->impl_->condition_);
- Error:
- vpx_free(worker->impl_);
- worker->impl_ = NULL;
- return 0;
- }
-#else
- worker->status_ = OK;
-#endif
- } else if (worker->status_ > OK) {
- ok = sync(worker);
- }
- assert(!ok || (worker->status_ == OK));
- return ok;
-}
-
-static void execute(VPxWorker *const worker) {
- if (worker->hook != NULL) {
- worker->had_error |= !worker->hook(worker->data1, worker->data2);
- }
-}
-
-static void launch(VPxWorker *const worker) {
-#if CONFIG_MULTITHREAD
- change_state(worker, WORK);
-#else
- execute(worker);
-#endif
-}
-
-static void end(VPxWorker *const worker) {
-#if CONFIG_MULTITHREAD
- if (worker->impl_ != NULL) {
- change_state(worker, NOT_OK);
- pthread_join(worker->impl_->thread_, NULL);
- pthread_mutex_destroy(&worker->impl_->mutex_);
- pthread_cond_destroy(&worker->impl_->condition_);
- vpx_free(worker->impl_);
- worker->impl_ = NULL;
- }
-#else
- worker->status_ = NOT_OK;
- assert(worker->impl_ == NULL);
-#endif
- assert(worker->status_ == NOT_OK);
-}
-
-//------------------------------------------------------------------------------
-
-static VPxWorkerInterface g_worker_interface = {
- init, reset, sync, launch, execute, end
-};
-
-int vpx_set_worker_interface(const VPxWorkerInterface* const winterface) {
- if (winterface == NULL ||
- winterface->init == NULL || winterface->reset == NULL ||
- winterface->sync == NULL || winterface->launch == NULL ||
- winterface->execute == NULL || winterface->end == NULL) {
- return 0;
- }
- g_worker_interface = *winterface;
- return 1;
-}
-
-const VPxWorkerInterface *vpx_get_worker_interface(void) {
- return &g_worker_interface;
-}
-
-//------------------------------------------------------------------------------
diff --git a/thirdparty/libvpx/vpx_util/vpx_thread.h b/thirdparty/libvpx/vpx_util/vpx_thread.h
deleted file mode 100644
index 2062abd75f..0000000000
--- a/thirdparty/libvpx/vpx_util/vpx_thread.h
+++ /dev/null
@@ -1,369 +0,0 @@
-// Copyright 2013 Google Inc. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the COPYING file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-// -----------------------------------------------------------------------------
-//
-// Multi-threaded worker
-//
-// Original source:
-// http://git.chromium.org/webm/libwebp.git
-// 100644 blob 7bd451b124ae3b81596abfbcc823e3cb129d3a38 src/utils/thread.h
-
-#ifndef VPX_THREAD_H_
-#define VPX_THREAD_H_
-
-#include "./vpx_config.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Set maximum decode threads to be 8 due to the limit of frame buffers
-// and not enough semaphores in the emulation layer on windows.
-#define MAX_DECODE_THREADS 8
-
-#if CONFIG_MULTITHREAD
-
-#if defined(_WIN32) && !HAVE_PTHREAD_H
-#include <errno.h> // NOLINT
-#include <process.h> // NOLINT
-#include <windows.h> // NOLINT
-typedef HANDLE pthread_t;
-typedef CRITICAL_SECTION pthread_mutex_t;
-typedef struct {
- HANDLE waiting_sem_;
- HANDLE received_sem_;
- HANDLE signal_event_;
-} pthread_cond_t;
-
-//------------------------------------------------------------------------------
-// simplistic pthread emulation layer
-
-// _beginthreadex requires __stdcall
-#define THREADFN unsigned int __stdcall
-#define THREAD_RETURN(val) (unsigned int)((DWORD_PTR)val)
-
-static INLINE int pthread_create(pthread_t* const thread, const void* attr,
- unsigned int (__stdcall *start)(void*),
- void* arg) {
- (void)attr;
- *thread = (pthread_t)_beginthreadex(NULL, /* void *security */
- 0, /* unsigned stack_size */
- start,
- arg,
- 0, /* unsigned initflag */
- NULL); /* unsigned *thrdaddr */
- if (*thread == NULL) return 1;
- SetThreadPriority(*thread, THREAD_PRIORITY_ABOVE_NORMAL);
- return 0;
-}
-
-static INLINE int pthread_join(pthread_t thread, void** value_ptr) {
- (void)value_ptr;
- return (WaitForSingleObject(thread, INFINITE) != WAIT_OBJECT_0 ||
- CloseHandle(thread) == 0);
-}
-
-// Mutex
-static INLINE int pthread_mutex_init(pthread_mutex_t *const mutex,
- void* mutexattr) {
- (void)mutexattr;
- InitializeCriticalSection(mutex);
- return 0;
-}
-
-static INLINE int pthread_mutex_trylock(pthread_mutex_t *const mutex) {
- return TryEnterCriticalSection(mutex) ? 0 : EBUSY;
-}
-
-static INLINE int pthread_mutex_lock(pthread_mutex_t *const mutex) {
- EnterCriticalSection(mutex);
- return 0;
-}
-
-static INLINE int pthread_mutex_unlock(pthread_mutex_t *const mutex) {
- LeaveCriticalSection(mutex);
- return 0;
-}
-
-static INLINE int pthread_mutex_destroy(pthread_mutex_t *const mutex) {
- DeleteCriticalSection(mutex);
- return 0;
-}
-
-// Condition
-static INLINE int pthread_cond_destroy(pthread_cond_t *const condition) {
- int ok = 1;
- ok &= (CloseHandle(condition->waiting_sem_) != 0);
- ok &= (CloseHandle(condition->received_sem_) != 0);
- ok &= (CloseHandle(condition->signal_event_) != 0);
- return !ok;
-}
-
-static INLINE int pthread_cond_init(pthread_cond_t *const condition,
- void* cond_attr) {
- (void)cond_attr;
- condition->waiting_sem_ = CreateSemaphore(NULL, 0, MAX_DECODE_THREADS, NULL);
- condition->received_sem_ = CreateSemaphore(NULL, 0, MAX_DECODE_THREADS, NULL);
- condition->signal_event_ = CreateEvent(NULL, FALSE, FALSE, NULL);
- if (condition->waiting_sem_ == NULL ||
- condition->received_sem_ == NULL ||
- condition->signal_event_ == NULL) {
- pthread_cond_destroy(condition);
- return 1;
- }
- return 0;
-}
-
-static INLINE int pthread_cond_signal(pthread_cond_t *const condition) {
- int ok = 1;
- if (WaitForSingleObject(condition->waiting_sem_, 0) == WAIT_OBJECT_0) {
- // a thread is waiting in pthread_cond_wait: allow it to be notified
- ok = SetEvent(condition->signal_event_);
- // wait until the event is consumed so the signaler cannot consume
- // the event via its own pthread_cond_wait.
- ok &= (WaitForSingleObject(condition->received_sem_, INFINITE) !=
- WAIT_OBJECT_0);
- }
- return !ok;
-}
-
-static INLINE int pthread_cond_wait(pthread_cond_t *const condition,
- pthread_mutex_t *const mutex) {
- int ok;
- // note that there is a consumer available so the signal isn't dropped in
- // pthread_cond_signal
- if (!ReleaseSemaphore(condition->waiting_sem_, 1, NULL))
- return 1;
- // now unlock the mutex so pthread_cond_signal may be issued
- pthread_mutex_unlock(mutex);
- ok = (WaitForSingleObject(condition->signal_event_, INFINITE) ==
- WAIT_OBJECT_0);
- ok &= ReleaseSemaphore(condition->received_sem_, 1, NULL);
- pthread_mutex_lock(mutex);
- return !ok;
-}
-#elif defined(__OS2__)
-#define INCL_DOS
-#include <os2.h> // NOLINT
-
-#include <errno.h> // NOLINT
-#include <stdlib.h> // NOLINT
-#include <sys/builtin.h> // NOLINT
-
-#define pthread_t TID
-#define pthread_mutex_t HMTX
-
-typedef struct {
- HEV event_sem_;
- HEV ack_sem_;
- volatile unsigned wait_count_;
-} pthread_cond_t;
-
-//------------------------------------------------------------------------------
-// simplistic pthread emulation layer
-
-#define THREADFN void *
-#define THREAD_RETURN(val) (val)
-
-typedef struct {
- void* (*start_)(void*);
- void* arg_;
-} thread_arg;
-
-static void thread_start(void* arg) {
- thread_arg targ = *(thread_arg *)arg;
- free(arg);
-
- targ.start_(targ.arg_);
-}
-
-static INLINE int pthread_create(pthread_t* const thread, const void* attr,
- void* (*start)(void*),
- void* arg) {
- int tid;
- thread_arg *targ = (thread_arg *)malloc(sizeof(*targ));
- if (targ == NULL) return 1;
-
- (void)attr;
-
- targ->start_ = start;
- targ->arg_ = arg;
- tid = (pthread_t)_beginthread(thread_start, NULL, 1024 * 1024, targ);
- if (tid == -1) {
- free(targ);
- return 1;
- }
-
- *thread = tid;
- return 0;
-}
-
-static INLINE int pthread_join(pthread_t thread, void** value_ptr) {
- (void)value_ptr;
- return DosWaitThread(&thread, DCWW_WAIT) != 0;
-}
-
-// Mutex
-static INLINE int pthread_mutex_init(pthread_mutex_t *const mutex,
- void* mutexattr) {
- (void)mutexattr;
- return DosCreateMutexSem(NULL, mutex, 0, FALSE) != 0;
-}
-
-static INLINE int pthread_mutex_trylock(pthread_mutex_t *const mutex) {
- return DosRequestMutexSem(*mutex, SEM_IMMEDIATE_RETURN) == 0 ? 0 : EBUSY;
-}
-
-static INLINE int pthread_mutex_lock(pthread_mutex_t *const mutex) {
- return DosRequestMutexSem(*mutex, SEM_INDEFINITE_WAIT) != 0;
-}
-
-static INLINE int pthread_mutex_unlock(pthread_mutex_t *const mutex) {
- return DosReleaseMutexSem(*mutex) != 0;
-}
-
-static INLINE int pthread_mutex_destroy(pthread_mutex_t *const mutex) {
- return DosCloseMutexSem(*mutex) != 0;
-}
-
-// Condition
-static INLINE int pthread_cond_destroy(pthread_cond_t *const condition) {
- int ok = 1;
- ok &= DosCloseEventSem(condition->event_sem_) == 0;
- ok &= DosCloseEventSem(condition->ack_sem_) == 0;
- return !ok;
-}
-
-static INLINE int pthread_cond_init(pthread_cond_t *const condition,
- void* cond_attr) {
- int ok = 1;
- (void)cond_attr;
-
- ok &= DosCreateEventSem(NULL, &condition->event_sem_, DCE_POSTONE, FALSE)
- == 0;
- ok &= DosCreateEventSem(NULL, &condition->ack_sem_, DCE_POSTONE, FALSE) == 0;
- if (!ok) {
- pthread_cond_destroy(condition);
- return 1;
- }
- condition->wait_count_ = 0;
- return 0;
-}
-
-static INLINE int pthread_cond_signal(pthread_cond_t *const condition) {
- int ok = 1;
-
- if (!__atomic_cmpxchg32(&condition->wait_count_, 0, 0)) {
- ok &= DosPostEventSem(condition->event_sem_) == 0;
- ok &= DosWaitEventSem(condition->ack_sem_, SEM_INDEFINITE_WAIT) == 0;
- }
-
- return !ok;
-}
-
-static INLINE int pthread_cond_broadcast(pthread_cond_t *const condition) {
- int ok = 1;
-
- while (!__atomic_cmpxchg32(&condition->wait_count_, 0, 0))
- ok &= pthread_cond_signal(condition) == 0;
-
- return !ok;
-}
-
-static INLINE int pthread_cond_wait(pthread_cond_t *const condition,
- pthread_mutex_t *const mutex) {
- int ok = 1;
-
- __atomic_increment(&condition->wait_count_);
-
- ok &= pthread_mutex_unlock(mutex) == 0;
-
- ok &= DosWaitEventSem(condition->event_sem_, SEM_INDEFINITE_WAIT) == 0;
-
- __atomic_decrement(&condition->wait_count_);
-
- ok &= DosPostEventSem(condition->ack_sem_) == 0;
-
- pthread_mutex_lock(mutex);
-
- return !ok;
-}
-#else // _WIN32
-#include <pthread.h> // NOLINT
-# define THREADFN void*
-# define THREAD_RETURN(val) val
-#endif
-
-#endif // CONFIG_MULTITHREAD
-
-// State of the worker thread object
-typedef enum {
- NOT_OK = 0, // object is unusable
- OK, // ready to work
- WORK // busy finishing the current task
-} VPxWorkerStatus;
-
-// Function to be called by the worker thread. Takes two opaque pointers as
-// arguments (data1 and data2), and should return false in case of error.
-typedef int (*VPxWorkerHook)(void*, void*);
-
-// Platform-dependent implementation details for the worker.
-typedef struct VPxWorkerImpl VPxWorkerImpl;
-
-// Synchronization object used to launch job in the worker thread
-typedef struct {
- VPxWorkerImpl *impl_;
- VPxWorkerStatus status_;
- VPxWorkerHook hook; // hook to call
- void *data1; // first argument passed to 'hook'
- void *data2; // second argument passed to 'hook'
- int had_error; // return value of the last call to 'hook'
-} VPxWorker;
-
-// The interface for all thread-worker related functions. All these functions
-// must be implemented.
-typedef struct {
- // Must be called first, before any other method.
- void (*init)(VPxWorker *const worker);
- // Must be called to initialize the object and spawn the thread. Re-entrant.
- // Will potentially launch the thread. Returns false in case of error.
- int (*reset)(VPxWorker *const worker);
- // Makes sure the previous work is finished. Returns true if worker->had_error
- // was not set and no error condition was triggered by the working thread.
- int (*sync)(VPxWorker *const worker);
- // Triggers the thread to call hook() with data1 and data2 arguments. These
- // hook/data1/data2 values can be changed at any time before calling this
- // function, but not be changed afterward until the next call to Sync().
- void (*launch)(VPxWorker *const worker);
- // This function is similar to launch() except that it calls the
- // hook directly instead of using a thread. Convenient to bypass the thread
- // mechanism while still using the VPxWorker structs. sync() must
- // still be called afterward (for error reporting).
- void (*execute)(VPxWorker *const worker);
- // Kill the thread and terminate the object. To use the object again, one
- // must call reset() again.
- void (*end)(VPxWorker *const worker);
-} VPxWorkerInterface;
-
-// Install a new set of threading functions, overriding the defaults. This
-// should be done before any workers are started, i.e., before any encoding or
-// decoding takes place. The contents of the interface struct are copied, it
-// is safe to free the corresponding memory after this call. This function is
-// not thread-safe. Return false in case of invalid pointer or methods.
-int vpx_set_worker_interface(const VPxWorkerInterface *const winterface);
-
-// Retrieve the currently set thread worker interface.
-const VPxWorkerInterface *vpx_get_worker_interface(void);
-
-//------------------------------------------------------------------------------
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // VPX_THREAD_H_
diff --git a/thirdparty/libvpx/vpx_version.h b/thirdparty/libvpx/vpx_version.h
deleted file mode 100644
index 5cff3b429f..0000000000
--- a/thirdparty/libvpx/vpx_version.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#define VERSION_MAJOR 1
-#define VERSION_MINOR 6
-#define VERSION_PATCH 0
-#define VERSION_EXTRA ""
-#define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH))
-#define VERSION_STRING_NOSP "v1.6.0"
-#define VERSION_STRING " v1.6.0"
diff --git a/thirdparty/mbedtls/include/mbedtls/bn_mul.h b/thirdparty/mbedtls/include/mbedtls/bn_mul.h
index 6f1201bf50..f84f9650dd 100644
--- a/thirdparty/mbedtls/include/mbedtls/bn_mul.h
+++ b/thirdparty/mbedtls/include/mbedtls/bn_mul.h
@@ -256,9 +256,9 @@
"addq $8, %%rdi\n"
#define MULADDC_STOP \
- : "+c" (c), "+D" (d), "+S" (s) \
- : "b" (b) \
- : "rax", "rdx", "r8" \
+ : "+c" (c), "+D" (d), "+S" (s), "+m" (*(uint64_t (*)[16]) d) \
+ : "b" (b), "m" (*(const uint64_t (*)[16]) s) \
+ : "rax", "rdx", "r8" \
);
#endif /* AMD64 */
diff --git a/thirdparty/mbedtls/patches/pr4948-fix-clang12-opt.patch b/thirdparty/mbedtls/patches/pr4948-fix-clang12-opt.patch
new file mode 100644
index 0000000000..84c205a80f
--- /dev/null
+++ b/thirdparty/mbedtls/patches/pr4948-fix-clang12-opt.patch
@@ -0,0 +1,36 @@
+From 7c847235e8f0e0b877c505f19733b417bb65ff2e Mon Sep 17 00:00:00 2001
+From: Gilles Peskine <Gilles.Peskine@arm.com>
+Date: Tue, 14 Sep 2021 00:13:05 +0200
+Subject: [PATCH] x86_64 MULADDC assembly: add missing constraints about memory
+
+MULADDC_CORE reads from (%%rsi) and writes to (%%rdi). This fragment is
+repeated up to 16 times, and %%rsi and %%rdi are s and d on entry
+respectively. Hence the complete asm statement reads 16 64-bit words
+from memory starting at s, and writes 16 64-bit words starting at d.
+
+Without any declaration of modified memory, Clang 12 and Clang 13 generated
+non-working code for mbedtls_mpi_mod_exp. The constraints make the unit
+tests pass with Clang 12.
+
+Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
+---
+ include/mbedtls/bn_mul.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h
+index 6f1201bf50a..f84f9650ddc 100644
+--- a/include/mbedtls/bn_mul.h
++++ b/include/mbedtls/bn_mul.h
+@@ -256,9 +256,9 @@
+ "addq $8, %%rdi\n"
+
+ #define MULADDC_STOP \
+- : "+c" (c), "+D" (d), "+S" (s) \
+- : "b" (b) \
+- : "rax", "rdx", "r8" \
++ : "+c" (c), "+D" (d), "+S" (s), "+m" (*(uint64_t (*)[16]) d) \
++ : "b" (b), "m" (*(const uint64_t (*)[16]) s) \
++ : "rax", "rdx", "r8" \
+ );
+
+ #endif /* AMD64 */
diff --git a/thirdparty/opus/COPYING b/thirdparty/opus/COPYING
deleted file mode 100644
index 9c739c34a3..0000000000
--- a/thirdparty/opus/COPYING
+++ /dev/null
@@ -1,44 +0,0 @@
-Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
- Jean-Marc Valin, Timothy B. Terriberry,
- CSIRO, Gregory Maxwell, Mark Borgerding,
- Erik de Castro Lopo
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-- Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Opus is subject to the royalty-free patent licenses which are
-specified at:
-
-Xiph.Org Foundation:
-https://datatracker.ietf.org/ipr/1524/
-
-Microsoft Corporation:
-https://datatracker.ietf.org/ipr/1914/
-
-Broadcom Corporation:
-https://datatracker.ietf.org/ipr/1526/
diff --git a/thirdparty/opus/analysis.c b/thirdparty/opus/analysis.c
deleted file mode 100644
index 663431a436..0000000000
--- a/thirdparty/opus/analysis.c
+++ /dev/null
@@ -1,672 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "kiss_fft.h"
-#include "celt.h"
-#include "modes.h"
-#include "arch.h"
-#include "quant_bands.h"
-#include <stdio.h>
-#include "analysis.h"
-#include "mlp.h"
-#include "stack_alloc.h"
-
-#ifndef M_PI
-#define M_PI 3.141592653
-#endif
-
-static const float dct_table[128] = {
- 0.250000f, 0.250000f, 0.250000f, 0.250000f, 0.250000f, 0.250000f, 0.250000f, 0.250000f,
- 0.250000f, 0.250000f, 0.250000f, 0.250000f, 0.250000f, 0.250000f, 0.250000f, 0.250000f,
- 0.351851f, 0.338330f, 0.311806f, 0.273300f, 0.224292f, 0.166664f, 0.102631f, 0.034654f,
- -0.034654f,-0.102631f,-0.166664f,-0.224292f,-0.273300f,-0.311806f,-0.338330f,-0.351851f,
- 0.346760f, 0.293969f, 0.196424f, 0.068975f,-0.068975f,-0.196424f,-0.293969f,-0.346760f,
- -0.346760f,-0.293969f,-0.196424f,-0.068975f, 0.068975f, 0.196424f, 0.293969f, 0.346760f,
- 0.338330f, 0.224292f, 0.034654f,-0.166664f,-0.311806f,-0.351851f,-0.273300f,-0.102631f,
- 0.102631f, 0.273300f, 0.351851f, 0.311806f, 0.166664f,-0.034654f,-0.224292f,-0.338330f,
- 0.326641f, 0.135299f,-0.135299f,-0.326641f,-0.326641f,-0.135299f, 0.135299f, 0.326641f,
- 0.326641f, 0.135299f,-0.135299f,-0.326641f,-0.326641f,-0.135299f, 0.135299f, 0.326641f,
- 0.311806f, 0.034654f,-0.273300f,-0.338330f,-0.102631f, 0.224292f, 0.351851f, 0.166664f,
- -0.166664f,-0.351851f,-0.224292f, 0.102631f, 0.338330f, 0.273300f,-0.034654f,-0.311806f,
- 0.293969f,-0.068975f,-0.346760f,-0.196424f, 0.196424f, 0.346760f, 0.068975f,-0.293969f,
- -0.293969f, 0.068975f, 0.346760f, 0.196424f,-0.196424f,-0.346760f,-0.068975f, 0.293969f,
- 0.273300f,-0.166664f,-0.338330f, 0.034654f, 0.351851f, 0.102631f,-0.311806f,-0.224292f,
- 0.224292f, 0.311806f,-0.102631f,-0.351851f,-0.034654f, 0.338330f, 0.166664f,-0.273300f,
-};
-
-static const float analysis_window[240] = {
- 0.000043f, 0.000171f, 0.000385f, 0.000685f, 0.001071f, 0.001541f, 0.002098f, 0.002739f,
- 0.003466f, 0.004278f, 0.005174f, 0.006156f, 0.007222f, 0.008373f, 0.009607f, 0.010926f,
- 0.012329f, 0.013815f, 0.015385f, 0.017037f, 0.018772f, 0.020590f, 0.022490f, 0.024472f,
- 0.026535f, 0.028679f, 0.030904f, 0.033210f, 0.035595f, 0.038060f, 0.040604f, 0.043227f,
- 0.045928f, 0.048707f, 0.051564f, 0.054497f, 0.057506f, 0.060591f, 0.063752f, 0.066987f,
- 0.070297f, 0.073680f, 0.077136f, 0.080665f, 0.084265f, 0.087937f, 0.091679f, 0.095492f,
- 0.099373f, 0.103323f, 0.107342f, 0.111427f, 0.115579f, 0.119797f, 0.124080f, 0.128428f,
- 0.132839f, 0.137313f, 0.141849f, 0.146447f, 0.151105f, 0.155823f, 0.160600f, 0.165435f,
- 0.170327f, 0.175276f, 0.180280f, 0.185340f, 0.190453f, 0.195619f, 0.200838f, 0.206107f,
- 0.211427f, 0.216797f, 0.222215f, 0.227680f, 0.233193f, 0.238751f, 0.244353f, 0.250000f,
- 0.255689f, 0.261421f, 0.267193f, 0.273005f, 0.278856f, 0.284744f, 0.290670f, 0.296632f,
- 0.302628f, 0.308658f, 0.314721f, 0.320816f, 0.326941f, 0.333097f, 0.339280f, 0.345492f,
- 0.351729f, 0.357992f, 0.364280f, 0.370590f, 0.376923f, 0.383277f, 0.389651f, 0.396044f,
- 0.402455f, 0.408882f, 0.415325f, 0.421783f, 0.428254f, 0.434737f, 0.441231f, 0.447736f,
- 0.454249f, 0.460770f, 0.467298f, 0.473832f, 0.480370f, 0.486912f, 0.493455f, 0.500000f,
- 0.506545f, 0.513088f, 0.519630f, 0.526168f, 0.532702f, 0.539230f, 0.545751f, 0.552264f,
- 0.558769f, 0.565263f, 0.571746f, 0.578217f, 0.584675f, 0.591118f, 0.597545f, 0.603956f,
- 0.610349f, 0.616723f, 0.623077f, 0.629410f, 0.635720f, 0.642008f, 0.648271f, 0.654508f,
- 0.660720f, 0.666903f, 0.673059f, 0.679184f, 0.685279f, 0.691342f, 0.697372f, 0.703368f,
- 0.709330f, 0.715256f, 0.721144f, 0.726995f, 0.732807f, 0.738579f, 0.744311f, 0.750000f,
- 0.755647f, 0.761249f, 0.766807f, 0.772320f, 0.777785f, 0.783203f, 0.788573f, 0.793893f,
- 0.799162f, 0.804381f, 0.809547f, 0.814660f, 0.819720f, 0.824724f, 0.829673f, 0.834565f,
- 0.839400f, 0.844177f, 0.848895f, 0.853553f, 0.858151f, 0.862687f, 0.867161f, 0.871572f,
- 0.875920f, 0.880203f, 0.884421f, 0.888573f, 0.892658f, 0.896677f, 0.900627f, 0.904508f,
- 0.908321f, 0.912063f, 0.915735f, 0.919335f, 0.922864f, 0.926320f, 0.929703f, 0.933013f,
- 0.936248f, 0.939409f, 0.942494f, 0.945503f, 0.948436f, 0.951293f, 0.954072f, 0.956773f,
- 0.959396f, 0.961940f, 0.964405f, 0.966790f, 0.969096f, 0.971321f, 0.973465f, 0.975528f,
- 0.977510f, 0.979410f, 0.981228f, 0.982963f, 0.984615f, 0.986185f, 0.987671f, 0.989074f,
- 0.990393f, 0.991627f, 0.992778f, 0.993844f, 0.994826f, 0.995722f, 0.996534f, 0.997261f,
- 0.997902f, 0.998459f, 0.998929f, 0.999315f, 0.999615f, 0.999829f, 0.999957f, 1.000000f,
-};
-
-static const int tbands[NB_TBANDS+1] = {
- 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 68, 80, 96, 120
-};
-
-static const int extra_bands[NB_TOT_BANDS+1] = {
- 1, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 68, 80, 96, 120, 160, 200
-};
-
-/*static const float tweight[NB_TBANDS+1] = {
- .3, .4, .5, .6, .7, .8, .9, 1., 1., 1., 1., 1., 1., 1., .8, .7, .6, .5
-};*/
-
-#define NB_TONAL_SKIP_BANDS 9
-
-#define cA 0.43157974f
-#define cB 0.67848403f
-#define cC 0.08595542f
-#define cE ((float)M_PI/2)
-static OPUS_INLINE float fast_atan2f(float y, float x) {
- float x2, y2;
- /* Should avoid underflow on the values we'll get */
- if (ABS16(x)+ABS16(y)<1e-9f)
- {
- x*=1e12f;
- y*=1e12f;
- }
- x2 = x*x;
- y2 = y*y;
- if(x2<y2){
- float den = (y2 + cB*x2) * (y2 + cC*x2);
- if (den!=0)
- return -x*y*(y2 + cA*x2) / den + (y<0 ? -cE : cE);
- else
- return (y<0 ? -cE : cE);
- }else{
- float den = (x2 + cB*y2) * (x2 + cC*y2);
- if (den!=0)
- return x*y*(x2 + cA*y2) / den + (y<0 ? -cE : cE) - (x*y<0 ? -cE : cE);
- else
- return (y<0 ? -cE : cE) - (x*y<0 ? -cE : cE);
- }
-}
-
-void tonality_analysis_init(TonalityAnalysisState *tonal)
-{
- /* Initialize reusable fields. */
- tonal->arch = opus_select_arch();
- /* Clear remaining fields. */
- tonality_analysis_reset(tonal);
-}
-
-void tonality_analysis_reset(TonalityAnalysisState *tonal)
-{
- /* Clear non-reusable fields. */
- char *start = (char*)&tonal->TONALITY_ANALYSIS_RESET_START;
- OPUS_CLEAR(start, sizeof(TonalityAnalysisState) - (start - (char*)tonal));
-}
-
-void tonality_get_info(TonalityAnalysisState *tonal, AnalysisInfo *info_out, int len)
-{
- int pos;
- int curr_lookahead;
- float psum;
- int i;
-
- pos = tonal->read_pos;
- curr_lookahead = tonal->write_pos-tonal->read_pos;
- if (curr_lookahead<0)
- curr_lookahead += DETECT_SIZE;
-
- if (len > 480 && pos != tonal->write_pos)
- {
- pos++;
- if (pos==DETECT_SIZE)
- pos=0;
- }
- if (pos == tonal->write_pos)
- pos--;
- if (pos<0)
- pos = DETECT_SIZE-1;
- OPUS_COPY(info_out, &tonal->info[pos], 1);
- tonal->read_subframe += len/120;
- while (tonal->read_subframe>=4)
- {
- tonal->read_subframe -= 4;
- tonal->read_pos++;
- }
- if (tonal->read_pos>=DETECT_SIZE)
- tonal->read_pos-=DETECT_SIZE;
-
- /* Compensate for the delay in the features themselves.
- FIXME: Need a better estimate the 10 I just made up */
- curr_lookahead = IMAX(curr_lookahead-10, 0);
-
- psum=0;
- /* Summing the probability of transition patterns that involve music at
- time (DETECT_SIZE-curr_lookahead-1) */
- for (i=0;i<DETECT_SIZE-curr_lookahead;i++)
- psum += tonal->pmusic[i];
- for (;i<DETECT_SIZE;i++)
- psum += tonal->pspeech[i];
- psum = psum*tonal->music_confidence + (1-psum)*tonal->speech_confidence;
- /*printf("%f %f %f\n", psum, info_out->music_prob, info_out->tonality);*/
-
- info_out->music_prob = psum;
-}
-
-static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt_mode, const void *x, int len, int offset, int c1, int c2, int C, int lsb_depth, downmix_func downmix)
-{
- int i, b;
- const kiss_fft_state *kfft;
- VARDECL(kiss_fft_cpx, in);
- VARDECL(kiss_fft_cpx, out);
- int N = 480, N2=240;
- float * OPUS_RESTRICT A = tonal->angle;
- float * OPUS_RESTRICT dA = tonal->d_angle;
- float * OPUS_RESTRICT d2A = tonal->d2_angle;
- VARDECL(float, tonality);
- VARDECL(float, noisiness);
- float band_tonality[NB_TBANDS];
- float logE[NB_TBANDS];
- float BFCC[8];
- float features[25];
- float frame_tonality;
- float max_frame_tonality;
- /*float tw_sum=0;*/
- float frame_noisiness;
- const float pi4 = (float)(M_PI*M_PI*M_PI*M_PI);
- float slope=0;
- float frame_stationarity;
- float relativeE;
- float frame_probs[2];
- float alpha, alphaE, alphaE2;
- float frame_loudness;
- float bandwidth_mask;
- int bandwidth=0;
- float maxE = 0;
- float noise_floor;
- int remaining;
- AnalysisInfo *info;
- SAVE_STACK;
-
- tonal->last_transition++;
- alpha = 1.f/IMIN(20, 1+tonal->count);
- alphaE = 1.f/IMIN(50, 1+tonal->count);
- alphaE2 = 1.f/IMIN(1000, 1+tonal->count);
-
- if (tonal->count<4)
- tonal->music_prob = .5;
- kfft = celt_mode->mdct.kfft[0];
- if (tonal->count==0)
- tonal->mem_fill = 240;
- downmix(x, &tonal->inmem[tonal->mem_fill], IMIN(len, ANALYSIS_BUF_SIZE-tonal->mem_fill), offset, c1, c2, C);
- if (tonal->mem_fill+len < ANALYSIS_BUF_SIZE)
- {
- tonal->mem_fill += len;
- /* Don't have enough to update the analysis */
- RESTORE_STACK;
- return;
- }
- info = &tonal->info[tonal->write_pos++];
- if (tonal->write_pos>=DETECT_SIZE)
- tonal->write_pos-=DETECT_SIZE;
-
- ALLOC(in, 480, kiss_fft_cpx);
- ALLOC(out, 480, kiss_fft_cpx);
- ALLOC(tonality, 240, float);
- ALLOC(noisiness, 240, float);
- for (i=0;i<N2;i++)
- {
- float w = analysis_window[i];
- in[i].r = (kiss_fft_scalar)(w*tonal->inmem[i]);
- in[i].i = (kiss_fft_scalar)(w*tonal->inmem[N2+i]);
- in[N-i-1].r = (kiss_fft_scalar)(w*tonal->inmem[N-i-1]);
- in[N-i-1].i = (kiss_fft_scalar)(w*tonal->inmem[N+N2-i-1]);
- }
- OPUS_MOVE(tonal->inmem, tonal->inmem+ANALYSIS_BUF_SIZE-240, 240);
- remaining = len - (ANALYSIS_BUF_SIZE-tonal->mem_fill);
- downmix(x, &tonal->inmem[240], remaining, offset+ANALYSIS_BUF_SIZE-tonal->mem_fill, c1, c2, C);
- tonal->mem_fill = 240 + remaining;
- opus_fft(kfft, in, out, tonal->arch);
-#ifndef FIXED_POINT
- /* If there's any NaN on the input, the entire output will be NaN, so we only need to check one value. */
- if (celt_isnan(out[0].r))
- {
- info->valid = 0;
- RESTORE_STACK;
- return;
- }
-#endif
-
- for (i=1;i<N2;i++)
- {
- float X1r, X2r, X1i, X2i;
- float angle, d_angle, d2_angle;
- float angle2, d_angle2, d2_angle2;
- float mod1, mod2, avg_mod;
- X1r = (float)out[i].r+out[N-i].r;
- X1i = (float)out[i].i-out[N-i].i;
- X2r = (float)out[i].i+out[N-i].i;
- X2i = (float)out[N-i].r-out[i].r;
-
- angle = (float)(.5f/M_PI)*fast_atan2f(X1i, X1r);
- d_angle = angle - A[i];
- d2_angle = d_angle - dA[i];
-
- angle2 = (float)(.5f/M_PI)*fast_atan2f(X2i, X2r);
- d_angle2 = angle2 - angle;
- d2_angle2 = d_angle2 - d_angle;
-
- mod1 = d2_angle - (float)floor(.5+d2_angle);
- noisiness[i] = ABS16(mod1);
- mod1 *= mod1;
- mod1 *= mod1;
-
- mod2 = d2_angle2 - (float)floor(.5+d2_angle2);
- noisiness[i] += ABS16(mod2);
- mod2 *= mod2;
- mod2 *= mod2;
-
- avg_mod = .25f*(d2A[i]+2.f*mod1+mod2);
- tonality[i] = 1.f/(1.f+40.f*16.f*pi4*avg_mod)-.015f;
-
- A[i] = angle2;
- dA[i] = d_angle2;
- d2A[i] = mod2;
- }
-
- frame_tonality = 0;
- max_frame_tonality = 0;
- /*tw_sum = 0;*/
- info->activity = 0;
- frame_noisiness = 0;
- frame_stationarity = 0;
- if (!tonal->count)
- {
- for (b=0;b<NB_TBANDS;b++)
- {
- tonal->lowE[b] = 1e10;
- tonal->highE[b] = -1e10;
- }
- }
- relativeE = 0;
- frame_loudness = 0;
- for (b=0;b<NB_TBANDS;b++)
- {
- float E=0, tE=0, nE=0;
- float L1, L2;
- float stationarity;
- for (i=tbands[b];i<tbands[b+1];i++)
- {
- float binE = out[i].r*(float)out[i].r + out[N-i].r*(float)out[N-i].r
- + out[i].i*(float)out[i].i + out[N-i].i*(float)out[N-i].i;
-#ifdef FIXED_POINT
- /* FIXME: It's probably best to change the BFCC filter initial state instead */
- binE *= 5.55e-17f;
-#endif
- E += binE;
- tE += binE*tonality[i];
- nE += binE*2.f*(.5f-noisiness[i]);
- }
-#ifndef FIXED_POINT
- /* Check for extreme band energies that could cause NaNs later. */
- if (!(E<1e9f) || celt_isnan(E))
- {
- info->valid = 0;
- RESTORE_STACK;
- return;
- }
-#endif
-
- tonal->E[tonal->E_count][b] = E;
- frame_noisiness += nE/(1e-15f+E);
-
- frame_loudness += (float)sqrt(E+1e-10f);
- logE[b] = (float)log(E+1e-10f);
- tonal->lowE[b] = MIN32(logE[b], tonal->lowE[b]+.01f);
- tonal->highE[b] = MAX32(logE[b], tonal->highE[b]-.1f);
- if (tonal->highE[b] < tonal->lowE[b]+1.f)
- {
- tonal->highE[b]+=.5f;
- tonal->lowE[b]-=.5f;
- }
- relativeE += (logE[b]-tonal->lowE[b])/(1e-15f+tonal->highE[b]-tonal->lowE[b]);
-
- L1=L2=0;
- for (i=0;i<NB_FRAMES;i++)
- {
- L1 += (float)sqrt(tonal->E[i][b]);
- L2 += tonal->E[i][b];
- }
-
- stationarity = MIN16(0.99f,L1/(float)sqrt(1e-15+NB_FRAMES*L2));
- stationarity *= stationarity;
- stationarity *= stationarity;
- frame_stationarity += stationarity;
- /*band_tonality[b] = tE/(1e-15+E)*/;
- band_tonality[b] = MAX16(tE/(1e-15f+E), stationarity*tonal->prev_band_tonality[b]);
-#if 0
- if (b>=NB_TONAL_SKIP_BANDS)
- {
- frame_tonality += tweight[b]*band_tonality[b];
- tw_sum += tweight[b];
- }
-#else
- frame_tonality += band_tonality[b];
- if (b>=NB_TBANDS-NB_TONAL_SKIP_BANDS)
- frame_tonality -= band_tonality[b-NB_TBANDS+NB_TONAL_SKIP_BANDS];
-#endif
- max_frame_tonality = MAX16(max_frame_tonality, (1.f+.03f*(b-NB_TBANDS))*frame_tonality);
- slope += band_tonality[b]*(b-8);
- /*printf("%f %f ", band_tonality[b], stationarity);*/
- tonal->prev_band_tonality[b] = band_tonality[b];
- }
-
- bandwidth_mask = 0;
- bandwidth = 0;
- maxE = 0;
- noise_floor = 5.7e-4f/(1<<(IMAX(0,lsb_depth-8)));
-#ifdef FIXED_POINT
- noise_floor *= 1<<(15+SIG_SHIFT);
-#endif
- noise_floor *= noise_floor;
- for (b=0;b<NB_TOT_BANDS;b++)
- {
- float E=0;
- int band_start, band_end;
- /* Keep a margin of 300 Hz for aliasing */
- band_start = extra_bands[b];
- band_end = extra_bands[b+1];
- for (i=band_start;i<band_end;i++)
- {
- float binE = out[i].r*(float)out[i].r + out[N-i].r*(float)out[N-i].r
- + out[i].i*(float)out[i].i + out[N-i].i*(float)out[N-i].i;
- E += binE;
- }
- maxE = MAX32(maxE, E);
- tonal->meanE[b] = MAX32((1-alphaE2)*tonal->meanE[b], E);
- E = MAX32(E, tonal->meanE[b]);
- /* Use a simple follower with 13 dB/Bark slope for spreading function */
- bandwidth_mask = MAX32(.05f*bandwidth_mask, E);
- /* Consider the band "active" only if all these conditions are met:
- 1) less than 10 dB below the simple follower
- 2) less than 90 dB below the peak band (maximal masking possible considering
- both the ATH and the loudness-dependent slope of the spreading function)
- 3) above the PCM quantization noise floor
- */
- if (E>.1*bandwidth_mask && E*1e9f > maxE && E > noise_floor*(band_end-band_start))
- bandwidth = b;
- }
- if (tonal->count<=2)
- bandwidth = 20;
- frame_loudness = 20*(float)log10(frame_loudness);
- tonal->Etracker = MAX32(tonal->Etracker-.03f, frame_loudness);
- tonal->lowECount *= (1-alphaE);
- if (frame_loudness < tonal->Etracker-30)
- tonal->lowECount += alphaE;
-
- for (i=0;i<8;i++)
- {
- float sum=0;
- for (b=0;b<16;b++)
- sum += dct_table[i*16+b]*logE[b];
- BFCC[i] = sum;
- }
-
- frame_stationarity /= NB_TBANDS;
- relativeE /= NB_TBANDS;
- if (tonal->count<10)
- relativeE = .5;
- frame_noisiness /= NB_TBANDS;
-#if 1
- info->activity = frame_noisiness + (1-frame_noisiness)*relativeE;
-#else
- info->activity = .5*(1+frame_noisiness-frame_stationarity);
-#endif
- frame_tonality = (max_frame_tonality/(NB_TBANDS-NB_TONAL_SKIP_BANDS));
- frame_tonality = MAX16(frame_tonality, tonal->prev_tonality*.8f);
- tonal->prev_tonality = frame_tonality;
-
- slope /= 8*8;
- info->tonality_slope = slope;
-
- tonal->E_count = (tonal->E_count+1)%NB_FRAMES;
- tonal->count++;
- info->tonality = frame_tonality;
-
- for (i=0;i<4;i++)
- features[i] = -0.12299f*(BFCC[i]+tonal->mem[i+24]) + 0.49195f*(tonal->mem[i]+tonal->mem[i+16]) + 0.69693f*tonal->mem[i+8] - 1.4349f*tonal->cmean[i];
-
- for (i=0;i<4;i++)
- tonal->cmean[i] = (1-alpha)*tonal->cmean[i] + alpha*BFCC[i];
-
- for (i=0;i<4;i++)
- features[4+i] = 0.63246f*(BFCC[i]-tonal->mem[i+24]) + 0.31623f*(tonal->mem[i]-tonal->mem[i+16]);
- for (i=0;i<3;i++)
- features[8+i] = 0.53452f*(BFCC[i]+tonal->mem[i+24]) - 0.26726f*(tonal->mem[i]+tonal->mem[i+16]) -0.53452f*tonal->mem[i+8];
-
- if (tonal->count > 5)
- {
- for (i=0;i<9;i++)
- tonal->std[i] = (1-alpha)*tonal->std[i] + alpha*features[i]*features[i];
- }
-
- for (i=0;i<8;i++)
- {
- tonal->mem[i+24] = tonal->mem[i+16];
- tonal->mem[i+16] = tonal->mem[i+8];
- tonal->mem[i+8] = tonal->mem[i];
- tonal->mem[i] = BFCC[i];
- }
- for (i=0;i<9;i++)
- features[11+i] = (float)sqrt(tonal->std[i]);
- features[20] = info->tonality;
- features[21] = info->activity;
- features[22] = frame_stationarity;
- features[23] = info->tonality_slope;
- features[24] = tonal->lowECount;
-
-#ifndef DISABLE_FLOAT_API
- mlp_process(&net, features, frame_probs);
- frame_probs[0] = .5f*(frame_probs[0]+1);
- /* Curve fitting between the MLP probability and the actual probability */
- frame_probs[0] = .01f + 1.21f*frame_probs[0]*frame_probs[0] - .23f*(float)pow(frame_probs[0], 10);
- /* Probability of active audio (as opposed to silence) */
- frame_probs[1] = .5f*frame_probs[1]+.5f;
- /* Consider that silence has a 50-50 probability. */
- frame_probs[0] = frame_probs[1]*frame_probs[0] + (1-frame_probs[1])*.5f;
-
- /*printf("%f %f ", frame_probs[0], frame_probs[1]);*/
- {
- /* Probability of state transition */
- float tau;
- /* Represents independence of the MLP probabilities, where
- beta=1 means fully independent. */
- float beta;
- /* Denormalized probability of speech (p0) and music (p1) after update */
- float p0, p1;
- /* Probabilities for "all speech" and "all music" */
- float s0, m0;
- /* Probability sum for renormalisation */
- float psum;
- /* Instantaneous probability of speech and music, with beta pre-applied. */
- float speech0;
- float music0;
- float p, q;
-
- /* One transition every 3 minutes of active audio */
- tau = .00005f*frame_probs[1];
- /* Adapt beta based on how "unexpected" the new prob is */
- p = MAX16(.05f,MIN16(.95f,frame_probs[0]));
- q = MAX16(.05f,MIN16(.95f,tonal->music_prob));
- beta = .01f+.05f*ABS16(p-q)/(p*(1-q)+q*(1-p));
- /* p0 and p1 are the probabilities of speech and music at this frame
- using only information from previous frame and applying the
- state transition model */
- p0 = (1-tonal->music_prob)*(1-tau) + tonal->music_prob *tau;
- p1 = tonal->music_prob *(1-tau) + (1-tonal->music_prob)*tau;
- /* We apply the current probability with exponent beta to work around
- the fact that the probability estimates aren't independent. */
- p0 *= (float)pow(1-frame_probs[0], beta);
- p1 *= (float)pow(frame_probs[0], beta);
- /* Normalise the probabilities to get the Marokv probability of music. */
- tonal->music_prob = p1/(p0+p1);
- info->music_prob = tonal->music_prob;
-
- /* This chunk of code deals with delayed decision. */
- psum=1e-20f;
- /* Instantaneous probability of speech and music, with beta pre-applied. */
- speech0 = (float)pow(1-frame_probs[0], beta);
- music0 = (float)pow(frame_probs[0], beta);
- if (tonal->count==1)
- {
- tonal->pspeech[0]=.5;
- tonal->pmusic [0]=.5;
- }
- /* Updated probability of having only speech (s0) or only music (m0),
- before considering the new observation. */
- s0 = tonal->pspeech[0] + tonal->pspeech[1];
- m0 = tonal->pmusic [0] + tonal->pmusic [1];
- /* Updates s0 and m0 with instantaneous probability. */
- tonal->pspeech[0] = s0*(1-tau)*speech0;
- tonal->pmusic [0] = m0*(1-tau)*music0;
- /* Propagate the transition probabilities */
- for (i=1;i<DETECT_SIZE-1;i++)
- {
- tonal->pspeech[i] = tonal->pspeech[i+1]*speech0;
- tonal->pmusic [i] = tonal->pmusic [i+1]*music0;
- }
- /* Probability that the latest frame is speech, when all the previous ones were music. */
- tonal->pspeech[DETECT_SIZE-1] = m0*tau*speech0;
- /* Probability that the latest frame is music, when all the previous ones were speech. */
- tonal->pmusic [DETECT_SIZE-1] = s0*tau*music0;
-
- /* Renormalise probabilities to 1 */
- for (i=0;i<DETECT_SIZE;i++)
- psum += tonal->pspeech[i] + tonal->pmusic[i];
- psum = 1.f/psum;
- for (i=0;i<DETECT_SIZE;i++)
- {
- tonal->pspeech[i] *= psum;
- tonal->pmusic [i] *= psum;
- }
- psum = tonal->pmusic[0];
- for (i=1;i<DETECT_SIZE;i++)
- psum += tonal->pspeech[i];
-
- /* Estimate our confidence in the speech/music decisions */
- if (frame_probs[1]>.75)
- {
- if (tonal->music_prob>.9)
- {
- float adapt;
- adapt = 1.f/(++tonal->music_confidence_count);
- tonal->music_confidence_count = IMIN(tonal->music_confidence_count, 500);
- tonal->music_confidence += adapt*MAX16(-.2f,frame_probs[0]-tonal->music_confidence);
- }
- if (tonal->music_prob<.1)
- {
- float adapt;
- adapt = 1.f/(++tonal->speech_confidence_count);
- tonal->speech_confidence_count = IMIN(tonal->speech_confidence_count, 500);
- tonal->speech_confidence += adapt*MIN16(.2f,frame_probs[0]-tonal->speech_confidence);
- }
- } else {
- if (tonal->music_confidence_count==0)
- tonal->music_confidence = .9f;
- if (tonal->speech_confidence_count==0)
- tonal->speech_confidence = .1f;
- }
- }
- if (tonal->last_music != (tonal->music_prob>.5f))
- tonal->last_transition=0;
- tonal->last_music = tonal->music_prob>.5f;
-#else
- info->music_prob = 0;
-#endif
- /*for (i=0;i<25;i++)
- printf("%f ", features[i]);
- printf("\n");*/
-
- info->bandwidth = bandwidth;
- /*printf("%d %d\n", info->bandwidth, info->opus_bandwidth);*/
- info->noisiness = frame_noisiness;
- info->valid = 1;
- RESTORE_STACK;
-}
-
-void run_analysis(TonalityAnalysisState *analysis, const CELTMode *celt_mode, const void *analysis_pcm,
- int analysis_frame_size, int frame_size, int c1, int c2, int C, opus_int32 Fs,
- int lsb_depth, downmix_func downmix, AnalysisInfo *analysis_info)
-{
- int offset;
- int pcm_len;
-
- if (analysis_pcm != NULL)
- {
- /* Avoid overflow/wrap-around of the analysis buffer */
- analysis_frame_size = IMIN((DETECT_SIZE-5)*Fs/100, analysis_frame_size);
-
- pcm_len = analysis_frame_size - analysis->analysis_offset;
- offset = analysis->analysis_offset;
- do {
- tonality_analysis(analysis, celt_mode, analysis_pcm, IMIN(480, pcm_len), offset, c1, c2, C, lsb_depth, downmix);
- offset += 480;
- pcm_len -= 480;
- } while (pcm_len>0);
- analysis->analysis_offset = analysis_frame_size;
-
- analysis->analysis_offset -= frame_size;
- }
-
- analysis_info->valid = 0;
- tonality_get_info(analysis, analysis_info, frame_size);
-}
diff --git a/thirdparty/opus/analysis.h b/thirdparty/opus/analysis.h
deleted file mode 100644
index 9eae56a525..0000000000
--- a/thirdparty/opus/analysis.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef ANALYSIS_H
-#define ANALYSIS_H
-
-#include "celt.h"
-#include "opus_private.h"
-
-#define NB_FRAMES 8
-#define NB_TBANDS 18
-#define NB_TOT_BANDS 21
-#define ANALYSIS_BUF_SIZE 720 /* 15 ms at 48 kHz */
-
-#define DETECT_SIZE 200
-
-typedef struct {
- int arch;
-#define TONALITY_ANALYSIS_RESET_START angle
- float angle[240];
- float d_angle[240];
- float d2_angle[240];
- opus_val32 inmem[ANALYSIS_BUF_SIZE];
- int mem_fill; /* number of usable samples in the buffer */
- float prev_band_tonality[NB_TBANDS];
- float prev_tonality;
- float E[NB_FRAMES][NB_TBANDS];
- float lowE[NB_TBANDS];
- float highE[NB_TBANDS];
- float meanE[NB_TOT_BANDS];
- float mem[32];
- float cmean[8];
- float std[9];
- float music_prob;
- float Etracker;
- float lowECount;
- int E_count;
- int last_music;
- int last_transition;
- int count;
- float subframe_mem[3];
- int analysis_offset;
- /** Probability of having speech for time i to DETECT_SIZE-1 (and music before).
- pspeech[0] is the probability that all frames in the window are speech. */
- float pspeech[DETECT_SIZE];
- /** Probability of having music for time i to DETECT_SIZE-1 (and speech before).
- pmusic[0] is the probability that all frames in the window are music. */
- float pmusic[DETECT_SIZE];
- float speech_confidence;
- float music_confidence;
- int speech_confidence_count;
- int music_confidence_count;
- int write_pos;
- int read_pos;
- int read_subframe;
- AnalysisInfo info[DETECT_SIZE];
-} TonalityAnalysisState;
-
-/** Initialize a TonalityAnalysisState struct.
- *
- * This performs some possibly slow initialization steps which should
- * not be repeated every analysis step. No allocated memory is retained
- * by the state struct, so no cleanup call is required.
- */
-void tonality_analysis_init(TonalityAnalysisState *analysis);
-
-/** Reset a TonalityAnalysisState stuct.
- *
- * Call this when there's a discontinuity in the data.
- */
-void tonality_analysis_reset(TonalityAnalysisState *analysis);
-
-void tonality_get_info(TonalityAnalysisState *tonal, AnalysisInfo *info_out, int len);
-
-void run_analysis(TonalityAnalysisState *analysis, const CELTMode *celt_mode, const void *analysis_pcm,
- int analysis_frame_size, int frame_size, int c1, int c2, int C, opus_int32 Fs,
- int lsb_depth, downmix_func downmix, AnalysisInfo *analysis_info);
-
-#endif
diff --git a/thirdparty/opus/celt/_kiss_fft_guts.h b/thirdparty/opus/celt/_kiss_fft_guts.h
deleted file mode 100644
index 5e3d58fd66..0000000000
--- a/thirdparty/opus/celt/_kiss_fft_guts.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*Copyright (c) 2003-2004, Mark Borgerding
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.*/
-
-#ifndef KISS_FFT_GUTS_H
-#define KISS_FFT_GUTS_H
-
-#define MIN(a,b) ((a)<(b) ? (a):(b))
-#define MAX(a,b) ((a)>(b) ? (a):(b))
-
-/* kiss_fft.h
- defines kiss_fft_scalar as either short or a float type
- and defines
- typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */
-#include "kiss_fft.h"
-
-/*
- Explanation of macros dealing with complex math:
-
- C_MUL(m,a,b) : m = a*b
- C_FIXDIV( c , div ) : if a fixed point impl., c /= div. noop otherwise
- C_SUB( res, a,b) : res = a - b
- C_SUBFROM( res , a) : res -= a
- C_ADDTO( res , a) : res += a
- * */
-#ifdef FIXED_POINT
-#include "arch.h"
-
-
-#define SAMP_MAX 2147483647
-#define TWID_MAX 32767
-#define TRIG_UPSCALE 1
-
-#define SAMP_MIN -SAMP_MAX
-
-
-# define S_MUL(a,b) MULT16_32_Q15(b, a)
-
-# define C_MUL(m,a,b) \
- do{ (m).r = SUB32(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \
- (m).i = ADD32(S_MUL((a).r,(b).i) , S_MUL((a).i,(b).r)); }while(0)
-
-# define C_MULC(m,a,b) \
- do{ (m).r = ADD32(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \
- (m).i = SUB32(S_MUL((a).i,(b).r) , S_MUL((a).r,(b).i)); }while(0)
-
-# define C_MULBYSCALAR( c, s ) \
- do{ (c).r = S_MUL( (c).r , s ) ;\
- (c).i = S_MUL( (c).i , s ) ; }while(0)
-
-# define DIVSCALAR(x,k) \
- (x) = S_MUL( x, (TWID_MAX-((k)>>1))/(k)+1 )
-
-# define C_FIXDIV(c,div) \
- do { DIVSCALAR( (c).r , div); \
- DIVSCALAR( (c).i , div); }while (0)
-
-#define C_ADD( res, a,b)\
- do {(res).r=ADD32((a).r,(b).r); (res).i=ADD32((a).i,(b).i); \
- }while(0)
-#define C_SUB( res, a,b)\
- do {(res).r=SUB32((a).r,(b).r); (res).i=SUB32((a).i,(b).i); \
- }while(0)
-#define C_ADDTO( res , a)\
- do {(res).r = ADD32((res).r, (a).r); (res).i = ADD32((res).i,(a).i);\
- }while(0)
-
-#define C_SUBFROM( res , a)\
- do {(res).r = ADD32((res).r,(a).r); (res).i = SUB32((res).i,(a).i); \
- }while(0)
-
-#if defined(OPUS_ARM_INLINE_ASM)
-#include "arm/kiss_fft_armv4.h"
-#endif
-
-#if defined(OPUS_ARM_INLINE_EDSP)
-#include "arm/kiss_fft_armv5e.h"
-#endif
-#if defined(MIPSr1_ASM)
-#include "mips/kiss_fft_mipsr1.h"
-#endif
-
-#else /* not FIXED_POINT*/
-
-# define S_MUL(a,b) ( (a)*(b) )
-#define C_MUL(m,a,b) \
- do{ (m).r = (a).r*(b).r - (a).i*(b).i;\
- (m).i = (a).r*(b).i + (a).i*(b).r; }while(0)
-#define C_MULC(m,a,b) \
- do{ (m).r = (a).r*(b).r + (a).i*(b).i;\
- (m).i = (a).i*(b).r - (a).r*(b).i; }while(0)
-
-#define C_MUL4(m,a,b) C_MUL(m,a,b)
-
-# define C_FIXDIV(c,div) /* NOOP */
-# define C_MULBYSCALAR( c, s ) \
- do{ (c).r *= (s);\
- (c).i *= (s); }while(0)
-#endif
-
-#ifndef CHECK_OVERFLOW_OP
-# define CHECK_OVERFLOW_OP(a,op,b) /* noop */
-#endif
-
-#ifndef C_ADD
-#define C_ADD( res, a,b)\
- do { \
- CHECK_OVERFLOW_OP((a).r,+,(b).r)\
- CHECK_OVERFLOW_OP((a).i,+,(b).i)\
- (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \
- }while(0)
-#define C_SUB( res, a,b)\
- do { \
- CHECK_OVERFLOW_OP((a).r,-,(b).r)\
- CHECK_OVERFLOW_OP((a).i,-,(b).i)\
- (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \
- }while(0)
-#define C_ADDTO( res , a)\
- do { \
- CHECK_OVERFLOW_OP((res).r,+,(a).r)\
- CHECK_OVERFLOW_OP((res).i,+,(a).i)\
- (res).r += (a).r; (res).i += (a).i;\
- }while(0)
-
-#define C_SUBFROM( res , a)\
- do {\
- CHECK_OVERFLOW_OP((res).r,-,(a).r)\
- CHECK_OVERFLOW_OP((res).i,-,(a).i)\
- (res).r -= (a).r; (res).i -= (a).i; \
- }while(0)
-#endif /* C_ADD defined */
-
-#ifdef FIXED_POINT
-/*# define KISS_FFT_COS(phase) TRIG_UPSCALE*floor(MIN(32767,MAX(-32767,.5+32768 * cos (phase))))
-# define KISS_FFT_SIN(phase) TRIG_UPSCALE*floor(MIN(32767,MAX(-32767,.5+32768 * sin (phase))))*/
-# define KISS_FFT_COS(phase) floor(.5+TWID_MAX*cos (phase))
-# define KISS_FFT_SIN(phase) floor(.5+TWID_MAX*sin (phase))
-# define HALF_OF(x) ((x)>>1)
-#elif defined(USE_SIMD)
-# define KISS_FFT_COS(phase) _mm_set1_ps( cos(phase) )
-# define KISS_FFT_SIN(phase) _mm_set1_ps( sin(phase) )
-# define HALF_OF(x) ((x)*_mm_set1_ps(.5f))
-#else
-# define KISS_FFT_COS(phase) (kiss_fft_scalar) cos(phase)
-# define KISS_FFT_SIN(phase) (kiss_fft_scalar) sin(phase)
-# define HALF_OF(x) ((x)*.5f)
-#endif
-
-#define kf_cexp(x,phase) \
- do{ \
- (x)->r = KISS_FFT_COS(phase);\
- (x)->i = KISS_FFT_SIN(phase);\
- }while(0)
-
-#define kf_cexp2(x,phase) \
- do{ \
- (x)->r = TRIG_UPSCALE*celt_cos_norm((phase));\
- (x)->i = TRIG_UPSCALE*celt_cos_norm((phase)-32768);\
-}while(0)
-
-#endif /* KISS_FFT_GUTS_H */
diff --git a/thirdparty/opus/celt/arch.h b/thirdparty/opus/celt/arch.h
deleted file mode 100644
index 8ceab5fe10..0000000000
--- a/thirdparty/opus/celt/arch.h
+++ /dev/null
@@ -1,252 +0,0 @@
-/* Copyright (c) 2003-2008 Jean-Marc Valin
- Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/**
- @file arch.h
- @brief Various architecture definitions for CELT
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef ARCH_H
-#define ARCH_H
-
-#include "opus_types.h"
-#include "opus_defines.h"
-
-# if !defined(__GNUC_PREREQ)
-# if defined(__GNUC__)&&defined(__GNUC_MINOR__)
-# define __GNUC_PREREQ(_maj,_min) \
- ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min))
-# else
-# define __GNUC_PREREQ(_maj,_min) 0
-# endif
-# endif
-
-#define CELT_SIG_SCALE 32768.f
-
-#define celt_fatal(str) _celt_fatal(str, __FILE__, __LINE__);
-#ifdef ENABLE_ASSERTIONS
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef __GNUC__
-__attribute__((noreturn))
-#endif
-static OPUS_INLINE void _celt_fatal(const char *str, const char *file, int line)
-{
- fprintf (stderr, "Fatal (internal) error in %s, line %d: %s\n", file, line, str);
- abort();
-}
-#define celt_assert(cond) {if (!(cond)) {celt_fatal("assertion failed: " #cond);}}
-#define celt_assert2(cond, message) {if (!(cond)) {celt_fatal("assertion failed: " #cond "\n" message);}}
-#else
-#define celt_assert(cond)
-#define celt_assert2(cond, message)
-#endif
-
-#define IMUL32(a,b) ((a)*(b))
-
-#define MIN16(a,b) ((a) < (b) ? (a) : (b)) /**< Minimum 16-bit value. */
-#define MAX16(a,b) ((a) > (b) ? (a) : (b)) /**< Maximum 16-bit value. */
-#define MIN32(a,b) ((a) < (b) ? (a) : (b)) /**< Minimum 32-bit value. */
-#define MAX32(a,b) ((a) > (b) ? (a) : (b)) /**< Maximum 32-bit value. */
-#define IMIN(a,b) ((a) < (b) ? (a) : (b)) /**< Minimum int value. */
-#define IMAX(a,b) ((a) > (b) ? (a) : (b)) /**< Maximum int value. */
-#define UADD32(a,b) ((a)+(b))
-#define USUB32(a,b) ((a)-(b))
-
-/* Set this if opus_int64 is a native type of the CPU. */
-/* Assume that all LP64 architectures have fast 64-bit types; also x86_64
- (which can be ILP32 for x32) and Win64 (which is LLP64). */
-#if defined(__x86_64__) || defined(__LP64__) || defined(_WIN64)
-#define OPUS_FAST_INT64 1
-#else
-#define OPUS_FAST_INT64 0
-#endif
-
-#define PRINT_MIPS(file)
-
-#ifdef FIXED_POINT
-
-typedef opus_int16 opus_val16;
-typedef opus_int32 opus_val32;
-
-typedef opus_val32 celt_sig;
-typedef opus_val16 celt_norm;
-typedef opus_val32 celt_ener;
-
-#define Q15ONE 32767
-
-#define SIG_SHIFT 12
-
-#define NORM_SCALING 16384
-
-#define DB_SHIFT 10
-
-#define EPSILON 1
-#define VERY_SMALL 0
-#define VERY_LARGE16 ((opus_val16)32767)
-#define Q15_ONE ((opus_val16)32767)
-
-#define SCALEIN(a) (a)
-#define SCALEOUT(a) (a)
-
-#define ABS16(x) ((x) < 0 ? (-(x)) : (x))
-#define ABS32(x) ((x) < 0 ? (-(x)) : (x))
-
-static OPUS_INLINE opus_int16 SAT16(opus_int32 x) {
- return x > 32767 ? 32767 : x < -32768 ? -32768 : (opus_int16)x;
-}
-
-#ifdef FIXED_DEBUG
-#include "fixed_debug.h"
-#else
-
-#include "fixed_generic.h"
-
-#ifdef OPUS_ARM_PRESUME_AARCH64_NEON_INTR
-#include "arm/fixed_arm64.h"
-#elif OPUS_ARM_INLINE_EDSP
-#include "arm/fixed_armv5e.h"
-#elif defined (OPUS_ARM_INLINE_ASM)
-#include "arm/fixed_armv4.h"
-#elif defined (BFIN_ASM)
-#include "fixed_bfin.h"
-#elif defined (TI_C5X_ASM)
-#include "fixed_c5x.h"
-#elif defined (TI_C6X_ASM)
-#include "fixed_c6x.h"
-#endif
-
-#endif
-
-#else /* FIXED_POINT */
-
-typedef float opus_val16;
-typedef float opus_val32;
-
-typedef float celt_sig;
-typedef float celt_norm;
-typedef float celt_ener;
-
-#ifdef FLOAT_APPROX
-/* This code should reliably detect NaN/inf even when -ffast-math is used.
- Assumes IEEE 754 format. */
-static OPUS_INLINE int celt_isnan(float x)
-{
- union {float f; opus_uint32 i;} in;
- in.f = x;
- return ((in.i>>23)&0xFF)==0xFF && (in.i&0x007FFFFF)!=0;
-}
-#else
-#ifdef __FAST_MATH__
-#error Cannot build libopus with -ffast-math unless FLOAT_APPROX is defined. This could result in crashes on extreme (e.g. NaN) input
-#endif
-#define celt_isnan(x) ((x)!=(x))
-#endif
-
-#define Q15ONE 1.0f
-
-#define NORM_SCALING 1.f
-
-#define EPSILON 1e-15f
-#define VERY_SMALL 1e-30f
-#define VERY_LARGE16 1e15f
-#define Q15_ONE ((opus_val16)1.f)
-
-/* This appears to be the same speed as C99's fabsf() but it's more portable. */
-#define ABS16(x) ((float)fabs(x))
-#define ABS32(x) ((float)fabs(x))
-
-#define QCONST16(x,bits) (x)
-#define QCONST32(x,bits) (x)
-
-#define NEG16(x) (-(x))
-#define NEG32(x) (-(x))
-#define EXTRACT16(x) (x)
-#define EXTEND32(x) (x)
-#define SHR16(a,shift) (a)
-#define SHL16(a,shift) (a)
-#define SHR32(a,shift) (a)
-#define SHL32(a,shift) (a)
-#define PSHR32(a,shift) (a)
-#define VSHR32(a,shift) (a)
-
-#define PSHR(a,shift) (a)
-#define SHR(a,shift) (a)
-#define SHL(a,shift) (a)
-#define SATURATE(x,a) (x)
-#define SATURATE16(x) (x)
-
-#define ROUND16(a,shift) (a)
-#define HALF16(x) (.5f*(x))
-#define HALF32(x) (.5f*(x))
-
-#define ADD16(a,b) ((a)+(b))
-#define SUB16(a,b) ((a)-(b))
-#define ADD32(a,b) ((a)+(b))
-#define SUB32(a,b) ((a)-(b))
-#define MULT16_16_16(a,b) ((a)*(b))
-#define MULT16_16(a,b) ((opus_val32)(a)*(opus_val32)(b))
-#define MAC16_16(c,a,b) ((c)+(opus_val32)(a)*(opus_val32)(b))
-
-#define MULT16_32_Q15(a,b) ((a)*(b))
-#define MULT16_32_Q16(a,b) ((a)*(b))
-
-#define MULT32_32_Q31(a,b) ((a)*(b))
-
-#define MAC16_32_Q15(c,a,b) ((c)+(a)*(b))
-#define MAC16_32_Q16(c,a,b) ((c)+(a)*(b))
-
-#define MULT16_16_Q11_32(a,b) ((a)*(b))
-#define MULT16_16_Q11(a,b) ((a)*(b))
-#define MULT16_16_Q13(a,b) ((a)*(b))
-#define MULT16_16_Q14(a,b) ((a)*(b))
-#define MULT16_16_Q15(a,b) ((a)*(b))
-#define MULT16_16_P15(a,b) ((a)*(b))
-#define MULT16_16_P13(a,b) ((a)*(b))
-#define MULT16_16_P14(a,b) ((a)*(b))
-#define MULT16_32_P16(a,b) ((a)*(b))
-
-#define DIV32_16(a,b) (((opus_val32)(a))/(opus_val16)(b))
-#define DIV32(a,b) (((opus_val32)(a))/(opus_val32)(b))
-
-#define SCALEIN(a) ((a)*CELT_SIG_SCALE)
-#define SCALEOUT(a) ((a)*(1/CELT_SIG_SCALE))
-
-#define SIG2WORD16(x) (x)
-
-#endif /* !FIXED_POINT */
-
-#ifndef GLOBAL_STACK_SIZE
-#ifdef FIXED_POINT
-#define GLOBAL_STACK_SIZE 100000
-#else
-#define GLOBAL_STACK_SIZE 100000
-#endif
-#endif
-
-#endif /* ARCH_H */
diff --git a/thirdparty/opus/celt/arm/arm_celt_map.c b/thirdparty/opus/celt/arm/arm_celt_map.c
deleted file mode 100644
index 4d4d069a86..0000000000
--- a/thirdparty/opus/celt/arm/arm_celt_map.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Copyright (c) 2010 Xiph.Org Foundation
- * Copyright (c) 2013 Parrot */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "pitch.h"
-#include "kiss_fft.h"
-#include "mdct.h"
-
-#if defined(OPUS_HAVE_RTCD)
-
-# if defined(FIXED_POINT)
-# if ((defined(OPUS_ARM_MAY_HAVE_NEON) && !defined(OPUS_ARM_PRESUME_NEON)) || \
- (defined(OPUS_ARM_MAY_HAVE_MEDIA) && !defined(OPUS_ARM_PRESUME_MEDIA)) || \
- (defined(OPUS_ARM_MAY_HAVE_EDSP) && !defined(OPUS_ARM_PRESUME_EDSP)))
-opus_val32 (*const CELT_PITCH_XCORR_IMPL[OPUS_ARCHMASK+1])(const opus_val16 *,
- const opus_val16 *, opus_val32 *, int , int) = {
- celt_pitch_xcorr_c, /* ARMv4 */
- MAY_HAVE_EDSP(celt_pitch_xcorr), /* EDSP */
- MAY_HAVE_MEDIA(celt_pitch_xcorr), /* Media */
- MAY_HAVE_NEON(celt_pitch_xcorr) /* NEON */
-};
-
-# endif
-# else /* !FIXED_POINT */
-# if defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && !defined(OPUS_ARM_PRESUME_NEON_INTR)
-void (*const CELT_PITCH_XCORR_IMPL[OPUS_ARCHMASK+1])(const opus_val16 *,
- const opus_val16 *, opus_val32 *, int, int) = {
- celt_pitch_xcorr_c, /* ARMv4 */
- celt_pitch_xcorr_c, /* EDSP */
- celt_pitch_xcorr_c, /* Media */
- celt_pitch_xcorr_float_neon /* Neon */
-};
-# endif
-# endif /* FIXED_POINT */
-
-#if defined(FIXED_POINT) && defined(OPUS_HAVE_RTCD) && \
- defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && !defined(OPUS_ARM_PRESUME_NEON_INTR)
-
-void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y,
- opus_val32 sum[4],
- int len
-) = {
- xcorr_kernel_c, /* ARMv4 */
- xcorr_kernel_c, /* EDSP */
- xcorr_kernel_c, /* Media */
- xcorr_kernel_neon_fixed, /* Neon */
-};
-
-#endif
-
-# if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# if defined(HAVE_ARM_NE10)
-# if defined(CUSTOM_MODES)
-int (*const OPUS_FFT_ALLOC_ARCH_IMPL[OPUS_ARCHMASK+1])(kiss_fft_state *st) = {
- opus_fft_alloc_arch_c, /* ARMv4 */
- opus_fft_alloc_arch_c, /* EDSP */
- opus_fft_alloc_arch_c, /* Media */
- opus_fft_alloc_arm_neon /* Neon with NE10 library support */
-};
-
-void (*const OPUS_FFT_FREE_ARCH_IMPL[OPUS_ARCHMASK+1])(kiss_fft_state *st) = {
- opus_fft_free_arch_c, /* ARMv4 */
- opus_fft_free_arch_c, /* EDSP */
- opus_fft_free_arch_c, /* Media */
- opus_fft_free_arm_neon /* Neon with NE10 */
-};
-# endif /* CUSTOM_MODES */
-
-void (*const OPUS_FFT[OPUS_ARCHMASK+1])(const kiss_fft_state *cfg,
- const kiss_fft_cpx *fin,
- kiss_fft_cpx *fout) = {
- opus_fft_c, /* ARMv4 */
- opus_fft_c, /* EDSP */
- opus_fft_c, /* Media */
- opus_fft_neon /* Neon with NE10 */
-};
-
-void (*const OPUS_IFFT[OPUS_ARCHMASK+1])(const kiss_fft_state *cfg,
- const kiss_fft_cpx *fin,
- kiss_fft_cpx *fout) = {
- opus_ifft_c, /* ARMv4 */
- opus_ifft_c, /* EDSP */
- opus_ifft_c, /* Media */
- opus_ifft_neon /* Neon with NE10 */
-};
-
-void (*const CLT_MDCT_FORWARD_IMPL[OPUS_ARCHMASK+1])(const mdct_lookup *l,
- kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window,
- int overlap, int shift,
- int stride, int arch) = {
- clt_mdct_forward_c, /* ARMv4 */
- clt_mdct_forward_c, /* EDSP */
- clt_mdct_forward_c, /* Media */
- clt_mdct_forward_neon /* Neon with NE10 */
-};
-
-void (*const CLT_MDCT_BACKWARD_IMPL[OPUS_ARCHMASK+1])(const mdct_lookup *l,
- kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window,
- int overlap, int shift,
- int stride, int arch) = {
- clt_mdct_backward_c, /* ARMv4 */
- clt_mdct_backward_c, /* EDSP */
- clt_mdct_backward_c, /* Media */
- clt_mdct_backward_neon /* Neon with NE10 */
-};
-
-# endif /* HAVE_ARM_NE10 */
-# endif /* OPUS_ARM_MAY_HAVE_NEON_INTR */
-
-#endif /* OPUS_HAVE_RTCD */
diff --git a/thirdparty/opus/celt/arm/armcpu.c b/thirdparty/opus/celt/arm/armcpu.c
deleted file mode 100644
index 694a63b78e..0000000000
--- a/thirdparty/opus/celt/arm/armcpu.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Copyright (c) 2010 Xiph.Org Foundation
- * Copyright (c) 2013 Parrot */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* Original code from libtheora modified to suit to Opus */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef OPUS_HAVE_RTCD
-
-#include "armcpu.h"
-#include "cpu_support.h"
-#include "os_support.h"
-#include "opus_types.h"
-#include "arch.h"
-
-#define OPUS_CPU_ARM_V4_FLAG (1<<OPUS_ARCH_ARM_V4)
-#define OPUS_CPU_ARM_EDSP_FLAG (1<<OPUS_ARCH_ARM_EDSP)
-#define OPUS_CPU_ARM_MEDIA_FLAG (1<<OPUS_ARCH_ARM_MEDIA)
-#define OPUS_CPU_ARM_NEON_FLAG (1<<OPUS_ARCH_ARM_NEON)
-
-#if defined(_MSC_VER)
-/*For GetExceptionCode() and EXCEPTION_ILLEGAL_INSTRUCTION.*/
-# define WIN32_LEAN_AND_MEAN
-# define WIN32_EXTRA_LEAN
-# include <windows.h>
-
-static OPUS_INLINE opus_uint32 opus_cpu_capabilities(void){
- opus_uint32 flags;
- flags=0;
- /* MSVC has no OPUS_INLINE __asm support for ARM, but it does let you __emit
- * instructions via their assembled hex code.
- * All of these instructions should be essentially nops. */
-# if defined(OPUS_ARM_MAY_HAVE_EDSP) || defined(OPUS_ARM_MAY_HAVE_MEDIA) \
- || defined(OPUS_ARM_MAY_HAVE_NEON) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
- __try{
- /*PLD [r13]*/
- __emit(0xF5DDF000);
- flags|=OPUS_CPU_ARM_EDSP_FLAG;
- }
- __except(GetExceptionCode()==EXCEPTION_ILLEGAL_INSTRUCTION){
- /*Ignore exception.*/
- }
-# if defined(OPUS_ARM_MAY_HAVE_MEDIA) \
- || defined(OPUS_ARM_MAY_HAVE_NEON) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
- __try{
- /*SHADD8 r3,r3,r3*/
- __emit(0xE6333F93);
- flags|=OPUS_CPU_ARM_MEDIA_FLAG;
- }
- __except(GetExceptionCode()==EXCEPTION_ILLEGAL_INSTRUCTION){
- /*Ignore exception.*/
- }
-# if defined(OPUS_ARM_MAY_HAVE_NEON) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
- __try{
- /*VORR q0,q0,q0*/
- __emit(0xF2200150);
- flags|=OPUS_CPU_ARM_NEON_FLAG;
- }
- __except(GetExceptionCode()==EXCEPTION_ILLEGAL_INSTRUCTION){
- /*Ignore exception.*/
- }
-# endif
-# endif
-# endif
- return flags;
-}
-
-#elif defined(__linux__)
-/* Linux based */
-opus_uint32 opus_cpu_capabilities(void)
-{
- opus_uint32 flags = 0;
- FILE *cpuinfo;
-
- /* Reading /proc/self/auxv would be easier, but that doesn't work reliably on
- * Android */
- cpuinfo = fopen("/proc/cpuinfo", "r");
-
- if(cpuinfo != NULL)
- {
- /* 512 should be enough for anybody (it's even enough for all the flags that
- * x86 has accumulated... so far). */
- char buf[512];
-
- while(fgets(buf, 512, cpuinfo) != NULL)
- {
-# if defined(OPUS_ARM_MAY_HAVE_EDSP) || defined(OPUS_ARM_MAY_HAVE_MEDIA) \
- || defined(OPUS_ARM_MAY_HAVE_NEON) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
- /* Search for edsp and neon flag */
- if(memcmp(buf, "Features", 8) == 0)
- {
- char *p;
- p = strstr(buf, " edsp");
- if(p != NULL && (p[5] == ' ' || p[5] == '\n'))
- flags |= OPUS_CPU_ARM_EDSP_FLAG;
-
-# if defined(OPUS_ARM_MAY_HAVE_NEON) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
- p = strstr(buf, " neon");
- if(p != NULL && (p[5] == ' ' || p[5] == '\n'))
- flags |= OPUS_CPU_ARM_NEON_FLAG;
-# endif
- }
-# endif
-
-# if defined(OPUS_ARM_MAY_HAVE_MEDIA) \
- || defined(OPUS_ARM_MAY_HAVE_NEON) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
- /* Search for media capabilities (>= ARMv6) */
- if(memcmp(buf, "CPU architecture:", 17) == 0)
- {
- int version;
- version = atoi(buf+17);
-
- if(version >= 6)
- flags |= OPUS_CPU_ARM_MEDIA_FLAG;
- }
-# endif
- }
-
- fclose(cpuinfo);
- }
- return flags;
-}
-#else
-/* The feature registers which can tell us what the processor supports are
- * accessible in priveleged modes only, so we can't have a general user-space
- * detection method like on x86.*/
-# error "Configured to use ARM asm but no CPU detection method available for " \
- "your platform. Reconfigure with --disable-rtcd (or send patches)."
-#endif
-
-int opus_select_arch(void)
-{
- opus_uint32 flags = opus_cpu_capabilities();
- int arch = 0;
-
- if(!(flags & OPUS_CPU_ARM_EDSP_FLAG)) {
- /* Asserts ensure arch values are sequential */
- celt_assert(arch == OPUS_ARCH_ARM_V4);
- return arch;
- }
- arch++;
-
- if(!(flags & OPUS_CPU_ARM_MEDIA_FLAG)) {
- celt_assert(arch == OPUS_ARCH_ARM_EDSP);
- return arch;
- }
- arch++;
-
- if(!(flags & OPUS_CPU_ARM_NEON_FLAG)) {
- celt_assert(arch == OPUS_ARCH_ARM_MEDIA);
- return arch;
- }
- arch++;
-
- celt_assert(arch == OPUS_ARCH_ARM_NEON);
- return arch;
-}
-
-#endif
diff --git a/thirdparty/opus/celt/arm/armcpu.h b/thirdparty/opus/celt/arm/armcpu.h
deleted file mode 100644
index 820262ff5f..0000000000
--- a/thirdparty/opus/celt/arm/armcpu.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Copyright (c) 2010 Xiph.Org Foundation
- * Copyright (c) 2013 Parrot */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if !defined(ARMCPU_H)
-# define ARMCPU_H
-
-# if defined(OPUS_ARM_MAY_HAVE_EDSP)
-# define MAY_HAVE_EDSP(name) name ## _edsp
-# else
-# define MAY_HAVE_EDSP(name) name ## _c
-# endif
-
-# if defined(OPUS_ARM_MAY_HAVE_MEDIA)
-# define MAY_HAVE_MEDIA(name) name ## _media
-# else
-# define MAY_HAVE_MEDIA(name) MAY_HAVE_EDSP(name)
-# endif
-
-# if defined(OPUS_ARM_MAY_HAVE_NEON)
-# define MAY_HAVE_NEON(name) name ## _neon
-# else
-# define MAY_HAVE_NEON(name) MAY_HAVE_MEDIA(name)
-# endif
-
-# if defined(OPUS_ARM_PRESUME_EDSP)
-# define PRESUME_EDSP(name) name ## _edsp
-# else
-# define PRESUME_EDSP(name) name ## _c
-# endif
-
-# if defined(OPUS_ARM_PRESUME_MEDIA)
-# define PRESUME_MEDIA(name) name ## _media
-# else
-# define PRESUME_MEDIA(name) PRESUME_EDSP(name)
-# endif
-
-# if defined(OPUS_ARM_PRESUME_NEON)
-# define PRESUME_NEON(name) name ## _neon
-# else
-# define PRESUME_NEON(name) PRESUME_MEDIA(name)
-# endif
-
-# if defined(OPUS_HAVE_RTCD)
-int opus_select_arch(void);
-
-#define OPUS_ARCH_ARM_V4 (0)
-#define OPUS_ARCH_ARM_EDSP (1)
-#define OPUS_ARCH_ARM_MEDIA (2)
-#define OPUS_ARCH_ARM_NEON (3)
-
-# endif
-
-#endif
diff --git a/thirdparty/opus/celt/arm/armopts.s.in b/thirdparty/opus/celt/arm/armopts.s.in
deleted file mode 100644
index 3d8aaf2754..0000000000
--- a/thirdparty/opus/celt/arm/armopts.s.in
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2013 Mozilla Corporation */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-; Set the following to 1 if we have EDSP instructions
-; (LDRD/STRD, etc., ARMv5E and later).
-OPUS_ARM_MAY_HAVE_EDSP * @OPUS_ARM_MAY_HAVE_EDSP@
-
-; Set the following to 1 if we have ARMv6 media instructions.
-OPUS_ARM_MAY_HAVE_MEDIA * @OPUS_ARM_MAY_HAVE_MEDIA@
-
-; Set the following to 1 if we have NEON (some ARMv7)
-OPUS_ARM_MAY_HAVE_NEON * @OPUS_ARM_MAY_HAVE_NEON@
-
-END
diff --git a/thirdparty/opus/celt/arm/celt_ne10_fft.c b/thirdparty/opus/celt/arm/celt_ne10_fft.c
deleted file mode 100644
index 42d96a7117..0000000000
--- a/thirdparty/opus/celt/arm/celt_ne10_fft.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/* Copyright (c) 2015 Xiph.Org Foundation
- Written by Viswanath Puttagunta */
-/**
- @file celt_ne10_fft.c
- @brief ARM Neon optimizations for fft using NE10 library
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef SKIP_CONFIG_H
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#endif
-
-#include <NE10_init.h>
-#include <NE10_dsp.h>
-#include "os_support.h"
-#include "kiss_fft.h"
-#include "stack_alloc.h"
-
-#if !defined(FIXED_POINT)
-# define NE10_FFT_ALLOC_C2C_TYPE_NEON ne10_fft_alloc_c2c_float32_neon
-# define NE10_FFT_CFG_TYPE_T ne10_fft_cfg_float32_t
-# define NE10_FFT_STATE_TYPE_T ne10_fft_state_float32_t
-# define NE10_FFT_DESTROY_C2C_TYPE ne10_fft_destroy_c2c_float32
-# define NE10_FFT_CPX_TYPE_T ne10_fft_cpx_float32_t
-# define NE10_FFT_C2C_1D_TYPE_NEON ne10_fft_c2c_1d_float32_neon
-#else
-# define NE10_FFT_ALLOC_C2C_TYPE_NEON(nfft) ne10_fft_alloc_c2c_int32_neon(nfft)
-# define NE10_FFT_CFG_TYPE_T ne10_fft_cfg_int32_t
-# define NE10_FFT_STATE_TYPE_T ne10_fft_state_int32_t
-# define NE10_FFT_DESTROY_C2C_TYPE ne10_fft_destroy_c2c_int32
-# define NE10_FFT_DESTROY_C2C_TYPE ne10_fft_destroy_c2c_int32
-# define NE10_FFT_CPX_TYPE_T ne10_fft_cpx_int32_t
-# define NE10_FFT_C2C_1D_TYPE_NEON ne10_fft_c2c_1d_int32_neon
-#endif
-
-#if defined(CUSTOM_MODES)
-
-/* nfft lengths in NE10 that support scaled fft */
-# define NE10_FFTSCALED_SUPPORT_MAX 4
-static const int ne10_fft_scaled_support[NE10_FFTSCALED_SUPPORT_MAX] = {
- 480, 240, 120, 60
-};
-
-int opus_fft_alloc_arm_neon(kiss_fft_state *st)
-{
- int i;
- size_t memneeded = sizeof(struct arch_fft_state);
-
- st->arch_fft = (arch_fft_state *)opus_alloc(memneeded);
- if (!st->arch_fft)
- return -1;
-
- for (i = 0; i < NE10_FFTSCALED_SUPPORT_MAX; i++) {
- if(st->nfft == ne10_fft_scaled_support[i])
- break;
- }
- if (i == NE10_FFTSCALED_SUPPORT_MAX) {
- /* This nfft length (scaled fft) is not supported in NE10 */
- st->arch_fft->is_supported = 0;
- st->arch_fft->priv = NULL;
- }
- else {
- st->arch_fft->is_supported = 1;
- st->arch_fft->priv = (void *)NE10_FFT_ALLOC_C2C_TYPE_NEON(st->nfft);
- if (st->arch_fft->priv == NULL) {
- return -1;
- }
- }
- return 0;
-}
-
-void opus_fft_free_arm_neon(kiss_fft_state *st)
-{
- NE10_FFT_CFG_TYPE_T cfg;
-
- if (!st->arch_fft)
- return;
-
- cfg = (NE10_FFT_CFG_TYPE_T)st->arch_fft->priv;
- if (cfg)
- NE10_FFT_DESTROY_C2C_TYPE(cfg);
- opus_free(st->arch_fft);
-}
-#endif
-
-void opus_fft_neon(const kiss_fft_state *st,
- const kiss_fft_cpx *fin,
- kiss_fft_cpx *fout)
-{
- NE10_FFT_STATE_TYPE_T state;
- NE10_FFT_CFG_TYPE_T cfg = &state;
- VARDECL(NE10_FFT_CPX_TYPE_T, buffer);
- SAVE_STACK;
- ALLOC(buffer, st->nfft, NE10_FFT_CPX_TYPE_T);
-
- if (!st->arch_fft->is_supported) {
- /* This nfft length (scaled fft) not supported in NE10 */
- opus_fft_c(st, fin, fout);
- }
- else {
- memcpy((void *)cfg, st->arch_fft->priv, sizeof(NE10_FFT_STATE_TYPE_T));
- state.buffer = (NE10_FFT_CPX_TYPE_T *)&buffer[0];
-#if !defined(FIXED_POINT)
- state.is_forward_scaled = 1;
-
- NE10_FFT_C2C_1D_TYPE_NEON((NE10_FFT_CPX_TYPE_T *)fout,
- (NE10_FFT_CPX_TYPE_T *)fin,
- cfg, 0);
-#else
- NE10_FFT_C2C_1D_TYPE_NEON((NE10_FFT_CPX_TYPE_T *)fout,
- (NE10_FFT_CPX_TYPE_T *)fin,
- cfg, 0, 1);
-#endif
- }
- RESTORE_STACK;
-}
-
-void opus_ifft_neon(const kiss_fft_state *st,
- const kiss_fft_cpx *fin,
- kiss_fft_cpx *fout)
-{
- NE10_FFT_STATE_TYPE_T state;
- NE10_FFT_CFG_TYPE_T cfg = &state;
- VARDECL(NE10_FFT_CPX_TYPE_T, buffer);
- SAVE_STACK;
- ALLOC(buffer, st->nfft, NE10_FFT_CPX_TYPE_T);
-
- if (!st->arch_fft->is_supported) {
- /* This nfft length (scaled fft) not supported in NE10 */
- opus_ifft_c(st, fin, fout);
- }
- else {
- memcpy((void *)cfg, st->arch_fft->priv, sizeof(NE10_FFT_STATE_TYPE_T));
- state.buffer = (NE10_FFT_CPX_TYPE_T *)&buffer[0];
-#if !defined(FIXED_POINT)
- state.is_backward_scaled = 0;
-
- NE10_FFT_C2C_1D_TYPE_NEON((NE10_FFT_CPX_TYPE_T *)fout,
- (NE10_FFT_CPX_TYPE_T *)fin,
- cfg, 1);
-#else
- NE10_FFT_C2C_1D_TYPE_NEON((NE10_FFT_CPX_TYPE_T *)fout,
- (NE10_FFT_CPX_TYPE_T *)fin,
- cfg, 1, 0);
-#endif
- }
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/celt/arm/celt_ne10_mdct.c b/thirdparty/opus/celt/arm/celt_ne10_mdct.c
deleted file mode 100644
index 293c3efd7a..0000000000
--- a/thirdparty/opus/celt/arm/celt_ne10_mdct.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/* Copyright (c) 2015 Xiph.Org Foundation
- Written by Viswanath Puttagunta */
-/**
- @file celt_ne10_mdct.c
- @brief ARM Neon optimizations for mdct using NE10 library
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef SKIP_CONFIG_H
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#endif
-
-#include "kiss_fft.h"
-#include "_kiss_fft_guts.h"
-#include "mdct.h"
-#include "stack_alloc.h"
-
-void clt_mdct_forward_neon(const mdct_lookup *l,
- kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window,
- int overlap, int shift, int stride, int arch)
-{
- int i;
- int N, N2, N4;
- VARDECL(kiss_fft_scalar, f);
- VARDECL(kiss_fft_cpx, f2);
- const kiss_fft_state *st = l->kfft[shift];
- const kiss_twiddle_scalar *trig;
-
- SAVE_STACK;
-
- N = l->n;
- trig = l->trig;
- for (i=0;i<shift;i++)
- {
- N >>= 1;
- trig += N;
- }
- N2 = N>>1;
- N4 = N>>2;
-
- ALLOC(f, N2, kiss_fft_scalar);
- ALLOC(f2, N4, kiss_fft_cpx);
-
- /* Consider the input to be composed of four blocks: [a, b, c, d] */
- /* Window, shuffle, fold */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_scalar * OPUS_RESTRICT xp1 = in+(overlap>>1);
- const kiss_fft_scalar * OPUS_RESTRICT xp2 = in+N2-1+(overlap>>1);
- kiss_fft_scalar * OPUS_RESTRICT yp = f;
- const opus_val16 * OPUS_RESTRICT wp1 = window+(overlap>>1);
- const opus_val16 * OPUS_RESTRICT wp2 = window+(overlap>>1)-1;
- for(i=0;i<((overlap+3)>>2);i++)
- {
- /* Real part arranged as -d-cR, Imag part arranged as -b+aR*/
- *yp++ = MULT16_32_Q15(*wp2, xp1[N2]) + MULT16_32_Q15(*wp1,*xp2);
- *yp++ = MULT16_32_Q15(*wp1, *xp1) - MULT16_32_Q15(*wp2, xp2[-N2]);
- xp1+=2;
- xp2-=2;
- wp1+=2;
- wp2-=2;
- }
- wp1 = window;
- wp2 = window+overlap-1;
- for(;i<N4-((overlap+3)>>2);i++)
- {
- /* Real part arranged as a-bR, Imag part arranged as -c-dR */
- *yp++ = *xp2;
- *yp++ = *xp1;
- xp1+=2;
- xp2-=2;
- }
- for(;i<N4;i++)
- {
- /* Real part arranged as a-bR, Imag part arranged as -c-dR */
- *yp++ = -MULT16_32_Q15(*wp1, xp1[-N2]) + MULT16_32_Q15(*wp2, *xp2);
- *yp++ = MULT16_32_Q15(*wp2, *xp1) + MULT16_32_Q15(*wp1, xp2[N2]);
- xp1+=2;
- xp2-=2;
- wp1+=2;
- wp2-=2;
- }
- }
- /* Pre-rotation */
- {
- kiss_fft_scalar * OPUS_RESTRICT yp = f;
- const kiss_twiddle_scalar *t = &trig[0];
- for(i=0;i<N4;i++)
- {
- kiss_fft_cpx yc;
- kiss_twiddle_scalar t0, t1;
- kiss_fft_scalar re, im, yr, yi;
- t0 = t[i];
- t1 = t[N4+i];
- re = *yp++;
- im = *yp++;
- yr = S_MUL(re,t0) - S_MUL(im,t1);
- yi = S_MUL(im,t0) + S_MUL(re,t1);
- yc.r = yr;
- yc.i = yi;
- f2[i] = yc;
- }
- }
-
- opus_fft(st, f2, (kiss_fft_cpx *)f, arch);
-
- /* Post-rotate */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_cpx * OPUS_RESTRICT fp = (kiss_fft_cpx *)f;
- kiss_fft_scalar * OPUS_RESTRICT yp1 = out;
- kiss_fft_scalar * OPUS_RESTRICT yp2 = out+stride*(N2-1);
- const kiss_twiddle_scalar *t = &trig[0];
- /* Temp pointers to make it really clear to the compiler what we're doing */
- for(i=0;i<N4;i++)
- {
- kiss_fft_scalar yr, yi;
- yr = S_MUL(fp->i,t[N4+i]) - S_MUL(fp->r,t[i]);
- yi = S_MUL(fp->r,t[N4+i]) + S_MUL(fp->i,t[i]);
- *yp1 = yr;
- *yp2 = yi;
- fp++;
- yp1 += 2*stride;
- yp2 -= 2*stride;
- }
- }
- RESTORE_STACK;
-}
-
-void clt_mdct_backward_neon(const mdct_lookup *l,
- kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 * OPUS_RESTRICT window,
- int overlap, int shift, int stride, int arch)
-{
- int i;
- int N, N2, N4;
- VARDECL(kiss_fft_scalar, f);
- const kiss_twiddle_scalar *trig;
- const kiss_fft_state *st = l->kfft[shift];
-
- N = l->n;
- trig = l->trig;
- for (i=0;i<shift;i++)
- {
- N >>= 1;
- trig += N;
- }
- N2 = N>>1;
- N4 = N>>2;
-
- ALLOC(f, N2, kiss_fft_scalar);
-
- /* Pre-rotate */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_scalar * OPUS_RESTRICT xp1 = in;
- const kiss_fft_scalar * OPUS_RESTRICT xp2 = in+stride*(N2-1);
- kiss_fft_scalar * OPUS_RESTRICT yp = f;
- const kiss_twiddle_scalar * OPUS_RESTRICT t = &trig[0];
- for(i=0;i<N4;i++)
- {
- kiss_fft_scalar yr, yi;
- yr = S_MUL(*xp2, t[i]) + S_MUL(*xp1, t[N4+i]);
- yi = S_MUL(*xp1, t[i]) - S_MUL(*xp2, t[N4+i]);
- yp[2*i] = yr;
- yp[2*i+1] = yi;
- xp1+=2*stride;
- xp2-=2*stride;
- }
- }
-
- opus_ifft(st, (kiss_fft_cpx *)f, (kiss_fft_cpx*)(out+(overlap>>1)), arch);
-
- /* Post-rotate and de-shuffle from both ends of the buffer at once to make
- it in-place. */
- {
- kiss_fft_scalar * yp0 = out+(overlap>>1);
- kiss_fft_scalar * yp1 = out+(overlap>>1)+N2-2;
- const kiss_twiddle_scalar *t = &trig[0];
- /* Loop to (N4+1)>>1 to handle odd N4. When N4 is odd, the
- middle pair will be computed twice. */
- for(i=0;i<(N4+1)>>1;i++)
- {
- kiss_fft_scalar re, im, yr, yi;
- kiss_twiddle_scalar t0, t1;
- re = yp0[0];
- im = yp0[1];
- t0 = t[i];
- t1 = t[N4+i];
- /* We'd scale up by 2 here, but instead it's done when mixing the windows */
- yr = S_MUL(re,t0) + S_MUL(im,t1);
- yi = S_MUL(re,t1) - S_MUL(im,t0);
- re = yp1[0];
- im = yp1[1];
- yp0[0] = yr;
- yp1[1] = yi;
-
- t0 = t[(N4-i-1)];
- t1 = t[(N2-i-1)];
- /* We'd scale up by 2 here, but instead it's done when mixing the windows */
- yr = S_MUL(re,t0) + S_MUL(im,t1);
- yi = S_MUL(re,t1) - S_MUL(im,t0);
- yp1[0] = yr;
- yp0[1] = yi;
- yp0 += 2;
- yp1 -= 2;
- }
- }
-
- /* Mirror on both sides for TDAC */
- {
- kiss_fft_scalar * OPUS_RESTRICT xp1 = out+overlap-1;
- kiss_fft_scalar * OPUS_RESTRICT yp1 = out;
- const opus_val16 * OPUS_RESTRICT wp1 = window;
- const opus_val16 * OPUS_RESTRICT wp2 = window+overlap-1;
-
- for(i = 0; i < overlap/2; i++)
- {
- kiss_fft_scalar x1, x2;
- x1 = *xp1;
- x2 = *yp1;
- *yp1++ = MULT16_32_Q15(*wp2, x2) - MULT16_32_Q15(*wp1, x1);
- *xp1-- = MULT16_32_Q15(*wp1, x2) + MULT16_32_Q15(*wp2, x1);
- wp1++;
- wp2--;
- }
- }
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/celt/arm/celt_neon_intr.c b/thirdparty/opus/celt/arm/celt_neon_intr.c
deleted file mode 100644
index 47bbe3dc22..0000000000
--- a/thirdparty/opus/celt/arm/celt_neon_intr.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/* Copyright (c) 2014-2015 Xiph.Org Foundation
- Written by Viswanath Puttagunta */
-/**
- @file celt_neon_intr.c
- @brief ARM Neon Intrinsic optimizations for celt
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <arm_neon.h>
-#include "../pitch.h"
-
-#if defined(FIXED_POINT)
-void xcorr_kernel_neon_fixed(const opus_val16 * x, const opus_val16 * y, opus_val32 sum[4], int len)
-{
- int j;
- int32x4_t a = vld1q_s32(sum);
- /* Load y[0...3] */
- /* This requires len>0 to always be valid (which we assert in the C code). */
- int16x4_t y0 = vld1_s16(y);
- y += 4;
-
- for (j = 0; j + 8 <= len; j += 8)
- {
- /* Load x[0...7] */
- int16x8_t xx = vld1q_s16(x);
- int16x4_t x0 = vget_low_s16(xx);
- int16x4_t x4 = vget_high_s16(xx);
- /* Load y[4...11] */
- int16x8_t yy = vld1q_s16(y);
- int16x4_t y4 = vget_low_s16(yy);
- int16x4_t y8 = vget_high_s16(yy);
- int32x4_t a0 = vmlal_lane_s16(a, y0, x0, 0);
- int32x4_t a1 = vmlal_lane_s16(a0, y4, x4, 0);
-
- int16x4_t y1 = vext_s16(y0, y4, 1);
- int16x4_t y5 = vext_s16(y4, y8, 1);
- int32x4_t a2 = vmlal_lane_s16(a1, y1, x0, 1);
- int32x4_t a3 = vmlal_lane_s16(a2, y5, x4, 1);
-
- int16x4_t y2 = vext_s16(y0, y4, 2);
- int16x4_t y6 = vext_s16(y4, y8, 2);
- int32x4_t a4 = vmlal_lane_s16(a3, y2, x0, 2);
- int32x4_t a5 = vmlal_lane_s16(a4, y6, x4, 2);
-
- int16x4_t y3 = vext_s16(y0, y4, 3);
- int16x4_t y7 = vext_s16(y4, y8, 3);
- int32x4_t a6 = vmlal_lane_s16(a5, y3, x0, 3);
- int32x4_t a7 = vmlal_lane_s16(a6, y7, x4, 3);
-
- y0 = y8;
- a = a7;
- x += 8;
- y += 8;
- }
-
- for (; j < len; j++)
- {
- int16x4_t x0 = vld1_dup_s16(x); /* load next x */
- int32x4_t a0 = vmlal_s16(a, y0, x0);
-
- int16x4_t y4 = vld1_dup_s16(y); /* load next y */
- y0 = vext_s16(y0, y4, 1);
- a = a0;
- x++;
- y++;
- }
-
- vst1q_s32(sum, a);
-}
-
-#else
-/*
- * Function: xcorr_kernel_neon_float
- * ---------------------------------
- * Computes 4 correlation values and stores them in sum[4]
- */
-static void xcorr_kernel_neon_float(const float32_t *x, const float32_t *y,
- float32_t sum[4], int len) {
- float32x4_t YY[3];
- float32x4_t YEXT[3];
- float32x4_t XX[2];
- float32x2_t XX_2;
- float32x4_t SUMM;
- const float32_t *xi = x;
- const float32_t *yi = y;
-
- celt_assert(len>0);
-
- YY[0] = vld1q_f32(yi);
- SUMM = vdupq_n_f32(0);
-
- /* Consume 8 elements in x vector and 12 elements in y
- * vector. However, the 12'th element never really gets
- * touched in this loop. So, if len == 8, then we only
- * must access y[0] to y[10]. y[11] must not be accessed
- * hence make sure len > 8 and not len >= 8
- */
- while (len > 8) {
- yi += 4;
- YY[1] = vld1q_f32(yi);
- yi += 4;
- YY[2] = vld1q_f32(yi);
-
- XX[0] = vld1q_f32(xi);
- xi += 4;
- XX[1] = vld1q_f32(xi);
- xi += 4;
-
- SUMM = vmlaq_lane_f32(SUMM, YY[0], vget_low_f32(XX[0]), 0);
- YEXT[0] = vextq_f32(YY[0], YY[1], 1);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[0], vget_low_f32(XX[0]), 1);
- YEXT[1] = vextq_f32(YY[0], YY[1], 2);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[1], vget_high_f32(XX[0]), 0);
- YEXT[2] = vextq_f32(YY[0], YY[1], 3);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[2], vget_high_f32(XX[0]), 1);
-
- SUMM = vmlaq_lane_f32(SUMM, YY[1], vget_low_f32(XX[1]), 0);
- YEXT[0] = vextq_f32(YY[1], YY[2], 1);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[0], vget_low_f32(XX[1]), 1);
- YEXT[1] = vextq_f32(YY[1], YY[2], 2);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[1], vget_high_f32(XX[1]), 0);
- YEXT[2] = vextq_f32(YY[1], YY[2], 3);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[2], vget_high_f32(XX[1]), 1);
-
- YY[0] = YY[2];
- len -= 8;
- }
-
- /* Consume 4 elements in x vector and 8 elements in y
- * vector. However, the 8'th element in y never really gets
- * touched in this loop. So, if len == 4, then we only
- * must access y[0] to y[6]. y[7] must not be accessed
- * hence make sure len>4 and not len>=4
- */
- if (len > 4) {
- yi += 4;
- YY[1] = vld1q_f32(yi);
-
- XX[0] = vld1q_f32(xi);
- xi += 4;
-
- SUMM = vmlaq_lane_f32(SUMM, YY[0], vget_low_f32(XX[0]), 0);
- YEXT[0] = vextq_f32(YY[0], YY[1], 1);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[0], vget_low_f32(XX[0]), 1);
- YEXT[1] = vextq_f32(YY[0], YY[1], 2);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[1], vget_high_f32(XX[0]), 0);
- YEXT[2] = vextq_f32(YY[0], YY[1], 3);
- SUMM = vmlaq_lane_f32(SUMM, YEXT[2], vget_high_f32(XX[0]), 1);
-
- YY[0] = YY[1];
- len -= 4;
- }
-
- while (--len > 0) {
- XX_2 = vld1_dup_f32(xi++);
- SUMM = vmlaq_lane_f32(SUMM, YY[0], XX_2, 0);
- YY[0]= vld1q_f32(++yi);
- }
-
- XX_2 = vld1_dup_f32(xi);
- SUMM = vmlaq_lane_f32(SUMM, YY[0], XX_2, 0);
-
- vst1q_f32(sum, SUMM);
-}
-
-/*
- * Function: xcorr_kernel_neon_float_process1
- * ---------------------------------
- * Computes single correlation values and stores in *sum
- */
-static void xcorr_kernel_neon_float_process1(const float32_t *x,
- const float32_t *y, float32_t *sum, int len) {
- float32x4_t XX[4];
- float32x4_t YY[4];
- float32x2_t XX_2;
- float32x2_t YY_2;
- float32x4_t SUMM;
- float32x2_t SUMM_2[2];
- const float32_t *xi = x;
- const float32_t *yi = y;
-
- SUMM = vdupq_n_f32(0);
-
- /* Work on 16 values per iteration */
- while (len >= 16) {
- XX[0] = vld1q_f32(xi);
- xi += 4;
- XX[1] = vld1q_f32(xi);
- xi += 4;
- XX[2] = vld1q_f32(xi);
- xi += 4;
- XX[3] = vld1q_f32(xi);
- xi += 4;
-
- YY[0] = vld1q_f32(yi);
- yi += 4;
- YY[1] = vld1q_f32(yi);
- yi += 4;
- YY[2] = vld1q_f32(yi);
- yi += 4;
- YY[3] = vld1q_f32(yi);
- yi += 4;
-
- SUMM = vmlaq_f32(SUMM, YY[0], XX[0]);
- SUMM = vmlaq_f32(SUMM, YY[1], XX[1]);
- SUMM = vmlaq_f32(SUMM, YY[2], XX[2]);
- SUMM = vmlaq_f32(SUMM, YY[3], XX[3]);
- len -= 16;
- }
-
- /* Work on 8 values */
- if (len >= 8) {
- XX[0] = vld1q_f32(xi);
- xi += 4;
- XX[1] = vld1q_f32(xi);
- xi += 4;
-
- YY[0] = vld1q_f32(yi);
- yi += 4;
- YY[1] = vld1q_f32(yi);
- yi += 4;
-
- SUMM = vmlaq_f32(SUMM, YY[0], XX[0]);
- SUMM = vmlaq_f32(SUMM, YY[1], XX[1]);
- len -= 8;
- }
-
- /* Work on 4 values */
- if (len >= 4) {
- XX[0] = vld1q_f32(xi);
- xi += 4;
- YY[0] = vld1q_f32(yi);
- yi += 4;
- SUMM = vmlaq_f32(SUMM, YY[0], XX[0]);
- len -= 4;
- }
-
- /* Start accumulating results */
- SUMM_2[0] = vget_low_f32(SUMM);
- if (len >= 2) {
- /* While at it, consume 2 more values if available */
- XX_2 = vld1_f32(xi);
- xi += 2;
- YY_2 = vld1_f32(yi);
- yi += 2;
- SUMM_2[0] = vmla_f32(SUMM_2[0], YY_2, XX_2);
- len -= 2;
- }
- SUMM_2[1] = vget_high_f32(SUMM);
- SUMM_2[0] = vadd_f32(SUMM_2[0], SUMM_2[1]);
- SUMM_2[0] = vpadd_f32(SUMM_2[0], SUMM_2[0]);
- /* Ok, now we have result accumulated in SUMM_2[0].0 */
-
- if (len > 0) {
- /* Case when you have one value left */
- XX_2 = vld1_dup_f32(xi);
- YY_2 = vld1_dup_f32(yi);
- SUMM_2[0] = vmla_f32(SUMM_2[0], XX_2, YY_2);
- }
-
- vst1_lane_f32(sum, SUMM_2[0], 0);
-}
-
-void celt_pitch_xcorr_float_neon(const opus_val16 *_x, const opus_val16 *_y,
- opus_val32 *xcorr, int len, int max_pitch) {
- int i;
- celt_assert(max_pitch > 0);
- celt_assert((((unsigned char *)_x-(unsigned char *)NULL)&3)==0);
-
- for (i = 0; i < (max_pitch-3); i += 4) {
- xcorr_kernel_neon_float((const float32_t *)_x, (const float32_t *)_y+i,
- (float32_t *)xcorr+i, len);
- }
-
- /* In case max_pitch isn't multiple of 4
- * compute single correlation value per iteration
- */
- for (; i < max_pitch; i++) {
- xcorr_kernel_neon_float_process1((const float32_t *)_x,
- (const float32_t *)_y+i, (float32_t *)xcorr+i, len);
- }
-}
-#endif
diff --git a/thirdparty/opus/celt/arm/celt_pitch_xcorr_arm-gnu.S b/thirdparty/opus/celt/arm/celt_pitch_xcorr_arm-gnu.S
deleted file mode 100644
index 5b2ee55a10..0000000000
--- a/thirdparty/opus/celt/arm/celt_pitch_xcorr_arm-gnu.S
+++ /dev/null
@@ -1,551 +0,0 @@
- .syntax unified
-@ Copyright (c) 2007-2008 CSIRO
-@ Copyright (c) 2007-2009 Xiph.Org Foundation
-@ Copyright (c) 2013 Parrot
-@ Written by Aurélien Zanelli
-@
-@ Redistribution and use in source and binary forms, with or without
-@ modification, are permitted provided that the following conditions
-@ are met:
-@
-@ - Redistributions of source code must retain the above copyright
-@ notice, this list of conditions and the following disclaimer.
-@
-@ - Redistributions in binary form must reproduce the above copyright
-@ notice, this list of conditions and the following disclaimer in the
-@ documentation and/or other materials provided with the distribution.
-@
-@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-@ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-@ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-@ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-@ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-@ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-@ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- .text; .p2align 2; .arch armv7-a
- .fpu neon
- .object_arch armv4t
-
- .include "celt/arm/armopts-gnu.S"
-
- .if OPUS_ARM_MAY_HAVE_EDSP
- .global celt_pitch_xcorr_edsp
- .endif
-
- .if OPUS_ARM_MAY_HAVE_NEON
- .global celt_pitch_xcorr_neon
- .endif
-
- .if OPUS_ARM_MAY_HAVE_NEON
-
-@ Compute sum[k]=sum(x[j]*y[j+k],j=0...len-1), k=0...3
-; xcorr_kernel_neon: @ PROC
-xcorr_kernel_neon_start:
- @ input:
- @ r3 = int len
- @ r4 = opus_val16 *x
- @ r5 = opus_val16 *y
- @ q0 = opus_val32 sum[4]
- @ output:
- @ q0 = opus_val32 sum[4]
- @ preserved: r0-r3, r6-r11, d2, q4-q7, q9-q15
- @ internal usage:
- @ r12 = int j
- @ d3 = y_3|y_2|y_1|y_0
- @ q2 = y_B|y_A|y_9|y_8|y_7|y_6|y_5|y_4
- @ q3 = x_7|x_6|x_5|x_4|x_3|x_2|x_1|x_0
- @ q8 = scratch
- @
- @ Load y[0...3]
- @ This requires len>0 to always be valid (which we assert in the C code).
- VLD1.16 {d5}, [r5]!
- SUBS r12, r3, #8
- BLE xcorr_kernel_neon_process4
-@ Process 8 samples at a time.
-@ This loop loads one y value more than we actually need. Therefore we have to
-@ stop as soon as there are 8 or fewer samples left (instead of 7), to avoid
-@ reading past the end of the array.
-xcorr_kernel_neon_process8:
- @ This loop has 19 total instructions (10 cycles to issue, minimum), with
- @ - 2 cycles of ARM insrtuctions,
- @ - 10 cycles of load/store/byte permute instructions, and
- @ - 9 cycles of data processing instructions.
- @ On a Cortex A8, we dual-issue the maximum amount (9 cycles) between the
- @ latter two categories, meaning the whole loop should run in 10 cycles per
- @ iteration, barring cache misses.
- @
- @ Load x[0...7]
- VLD1.16 {d6, d7}, [r4]!
- @ Unlike VMOV, VAND is a data processsing instruction (and doesn't get
- @ assembled to VMOV, like VORR would), so it dual-issues with the prior VLD1.
- VAND d3, d5, d5
- SUBS r12, r12, #8
- @ Load y[4...11]
- VLD1.16 {d4, d5}, [r5]!
- VMLAL.S16 q0, d3, d6[0]
- VEXT.16 d16, d3, d4, #1
- VMLAL.S16 q0, d4, d7[0]
- VEXT.16 d17, d4, d5, #1
- VMLAL.S16 q0, d16, d6[1]
- VEXT.16 d16, d3, d4, #2
- VMLAL.S16 q0, d17, d7[1]
- VEXT.16 d17, d4, d5, #2
- VMLAL.S16 q0, d16, d6[2]
- VEXT.16 d16, d3, d4, #3
- VMLAL.S16 q0, d17, d7[2]
- VEXT.16 d17, d4, d5, #3
- VMLAL.S16 q0, d16, d6[3]
- VMLAL.S16 q0, d17, d7[3]
- BGT xcorr_kernel_neon_process8
-@ Process 4 samples here if we have > 4 left (still reading one extra y value).
-xcorr_kernel_neon_process4:
- ADDS r12, r12, #4
- BLE xcorr_kernel_neon_process2
- @ Load x[0...3]
- VLD1.16 d6, [r4]!
- @ Use VAND since it's a data processing instruction again.
- VAND d4, d5, d5
- SUB r12, r12, #4
- @ Load y[4...7]
- VLD1.16 d5, [r5]!
- VMLAL.S16 q0, d4, d6[0]
- VEXT.16 d16, d4, d5, #1
- VMLAL.S16 q0, d16, d6[1]
- VEXT.16 d16, d4, d5, #2
- VMLAL.S16 q0, d16, d6[2]
- VEXT.16 d16, d4, d5, #3
- VMLAL.S16 q0, d16, d6[3]
-@ Process 2 samples here if we have > 2 left (still reading one extra y value).
-xcorr_kernel_neon_process2:
- ADDS r12, r12, #2
- BLE xcorr_kernel_neon_process1
- @ Load x[0...1]
- VLD2.16 {d6[],d7[]}, [r4]!
- @ Use VAND since it's a data processing instruction again.
- VAND d4, d5, d5
- SUB r12, r12, #2
- @ Load y[4...5]
- VLD1.32 {d5[]}, [r5]!
- VMLAL.S16 q0, d4, d6
- VEXT.16 d16, d4, d5, #1
- @ Replace bottom copy of {y5,y4} in d5 with {y3,y2} from d4, using VSRI
- @ instead of VEXT, since it's a data-processing instruction.
- VSRI.64 d5, d4, #32
- VMLAL.S16 q0, d16, d7
-@ Process 1 sample using the extra y value we loaded above.
-xcorr_kernel_neon_process1:
- @ Load next *x
- VLD1.16 {d6[]}, [r4]!
- ADDS r12, r12, #1
- @ y[0...3] are left in d5 from prior iteration(s) (if any)
- VMLAL.S16 q0, d5, d6
- MOVLE pc, lr
-@ Now process 1 last sample, not reading ahead.
- @ Load last *y
- VLD1.16 {d4[]}, [r5]!
- VSRI.64 d4, d5, #16
- @ Load last *x
- VLD1.16 {d6[]}, [r4]!
- VMLAL.S16 q0, d4, d6
- MOV pc, lr
- .size xcorr_kernel_neon, .-xcorr_kernel_neon @ ENDP
-
-@ opus_val32 celt_pitch_xcorr_neon(opus_val16 *_x, opus_val16 *_y,
-@ opus_val32 *xcorr, int len, int max_pitch)
-; celt_pitch_xcorr_neon: @ PROC
- @ input:
- @ r0 = opus_val16 *_x
- @ r1 = opus_val16 *_y
- @ r2 = opus_val32 *xcorr
- @ r3 = int len
- @ output:
- @ r0 = int maxcorr
- @ internal usage:
- @ r4 = opus_val16 *x (for xcorr_kernel_neon())
- @ r5 = opus_val16 *y (for xcorr_kernel_neon())
- @ r6 = int max_pitch
- @ r12 = int j
- @ q15 = int maxcorr[4] (q15 is not used by xcorr_kernel_neon())
- STMFD sp!, {r4-r6, lr}
- LDR r6, [sp, #16]
- VMOV.S32 q15, #1
- @ if (max_pitch < 4) goto celt_pitch_xcorr_neon_process4_done
- SUBS r6, r6, #4
- BLT celt_pitch_xcorr_neon_process4_done
-celt_pitch_xcorr_neon_process4:
- @ xcorr_kernel_neon parameters:
- @ r3 = len, r4 = _x, r5 = _y, q0 = {0, 0, 0, 0}
- MOV r4, r0
- MOV r5, r1
- VEOR q0, q0, q0
- @ xcorr_kernel_neon only modifies r4, r5, r12, and q0...q3.
- @ So we don't save/restore any other registers.
- BL xcorr_kernel_neon_start
- SUBS r6, r6, #4
- VST1.32 {q0}, [r2]!
- @ _y += 4
- ADD r1, r1, #8
- VMAX.S32 q15, q15, q0
- @ if (max_pitch < 4) goto celt_pitch_xcorr_neon_process4_done
- BGE celt_pitch_xcorr_neon_process4
-@ We have less than 4 sums left to compute.
-celt_pitch_xcorr_neon_process4_done:
- ADDS r6, r6, #4
- @ Reduce maxcorr to a single value
- VMAX.S32 d30, d30, d31
- VPMAX.S32 d30, d30, d30
- @ if (max_pitch <= 0) goto celt_pitch_xcorr_neon_done
- BLE celt_pitch_xcorr_neon_done
-@ Now compute each remaining sum one at a time.
-celt_pitch_xcorr_neon_process_remaining:
- MOV r4, r0
- MOV r5, r1
- VMOV.I32 q0, #0
- SUBS r12, r3, #8
- BLT celt_pitch_xcorr_neon_process_remaining4
-@ Sum terms 8 at a time.
-celt_pitch_xcorr_neon_process_remaining_loop8:
- @ Load x[0...7]
- VLD1.16 {q1}, [r4]!
- @ Load y[0...7]
- VLD1.16 {q2}, [r5]!
- SUBS r12, r12, #8
- VMLAL.S16 q0, d4, d2
- VMLAL.S16 q0, d5, d3
- BGE celt_pitch_xcorr_neon_process_remaining_loop8
-@ Sum terms 4 at a time.
-celt_pitch_xcorr_neon_process_remaining4:
- ADDS r12, r12, #4
- BLT celt_pitch_xcorr_neon_process_remaining4_done
- @ Load x[0...3]
- VLD1.16 {d2}, [r4]!
- @ Load y[0...3]
- VLD1.16 {d3}, [r5]!
- SUB r12, r12, #4
- VMLAL.S16 q0, d3, d2
-celt_pitch_xcorr_neon_process_remaining4_done:
- @ Reduce the sum to a single value.
- VADD.S32 d0, d0, d1
- VPADDL.S32 d0, d0
- ADDS r12, r12, #4
- BLE celt_pitch_xcorr_neon_process_remaining_loop_done
-@ Sum terms 1 at a time.
-celt_pitch_xcorr_neon_process_remaining_loop1:
- VLD1.16 {d2[]}, [r4]!
- VLD1.16 {d3[]}, [r5]!
- SUBS r12, r12, #1
- VMLAL.S16 q0, d2, d3
- BGT celt_pitch_xcorr_neon_process_remaining_loop1
-celt_pitch_xcorr_neon_process_remaining_loop_done:
- VST1.32 {d0[0]}, [r2]!
- VMAX.S32 d30, d30, d0
- SUBS r6, r6, #1
- @ _y++
- ADD r1, r1, #2
- @ if (--max_pitch > 0) goto celt_pitch_xcorr_neon_process_remaining
- BGT celt_pitch_xcorr_neon_process_remaining
-celt_pitch_xcorr_neon_done:
- VMOV.32 r0, d30[0]
- LDMFD sp!, {r4-r6, pc}
- .size celt_pitch_xcorr_neon, .-celt_pitch_xcorr_neon @ ENDP
-
- .endif
-
- .if OPUS_ARM_MAY_HAVE_EDSP
-
-@ This will get used on ARMv7 devices without NEON, so it has been optimized
-@ to take advantage of dual-issuing where possible.
-; xcorr_kernel_edsp: @ PROC
-xcorr_kernel_edsp_start:
- @ input:
- @ r3 = int len
- @ r4 = opus_val16 *_x (must be 32-bit aligned)
- @ r5 = opus_val16 *_y (must be 32-bit aligned)
- @ r6...r9 = opus_val32 sum[4]
- @ output:
- @ r6...r9 = opus_val32 sum[4]
- @ preserved: r0-r5
- @ internal usage
- @ r2 = int j
- @ r12,r14 = opus_val16 x[4]
- @ r10,r11 = opus_val16 y[4]
- STMFD sp!, {r2,r4,r5,lr}
- LDR r10, [r5], #4 @ Load y[0...1]
- SUBS r2, r3, #4 @ j = len-4
- LDR r11, [r5], #4 @ Load y[2...3]
- BLE xcorr_kernel_edsp_process4_done
- LDR r12, [r4], #4 @ Load x[0...1]
- @ Stall
-xcorr_kernel_edsp_process4:
- @ The multiplies must issue from pipeline 0, and can't dual-issue with each
- @ other. Every other instruction here dual-issues with a multiply, and is
- @ thus "free". There should be no stalls in the body of the loop.
- SMLABB r6, r12, r10, r6 @ sum[0] = MAC16_16(sum[0],x_0,y_0)
- LDR r14, [r4], #4 @ Load x[2...3]
- SMLABT r7, r12, r10, r7 @ sum[1] = MAC16_16(sum[1],x_0,y_1)
- SUBS r2, r2, #4 @ j-=4
- SMLABB r8, r12, r11, r8 @ sum[2] = MAC16_16(sum[2],x_0,y_2)
- SMLABT r9, r12, r11, r9 @ sum[3] = MAC16_16(sum[3],x_0,y_3)
- SMLATT r6, r12, r10, r6 @ sum[0] = MAC16_16(sum[0],x_1,y_1)
- LDR r10, [r5], #4 @ Load y[4...5]
- SMLATB r7, r12, r11, r7 @ sum[1] = MAC16_16(sum[1],x_1,y_2)
- SMLATT r8, r12, r11, r8 @ sum[2] = MAC16_16(sum[2],x_1,y_3)
- SMLATB r9, r12, r10, r9 @ sum[3] = MAC16_16(sum[3],x_1,y_4)
- LDRGT r12, [r4], #4 @ Load x[0...1]
- SMLABB r6, r14, r11, r6 @ sum[0] = MAC16_16(sum[0],x_2,y_2)
- SMLABT r7, r14, r11, r7 @ sum[1] = MAC16_16(sum[1],x_2,y_3)
- SMLABB r8, r14, r10, r8 @ sum[2] = MAC16_16(sum[2],x_2,y_4)
- SMLABT r9, r14, r10, r9 @ sum[3] = MAC16_16(sum[3],x_2,y_5)
- SMLATT r6, r14, r11, r6 @ sum[0] = MAC16_16(sum[0],x_3,y_3)
- LDR r11, [r5], #4 @ Load y[6...7]
- SMLATB r7, r14, r10, r7 @ sum[1] = MAC16_16(sum[1],x_3,y_4)
- SMLATT r8, r14, r10, r8 @ sum[2] = MAC16_16(sum[2],x_3,y_5)
- SMLATB r9, r14, r11, r9 @ sum[3] = MAC16_16(sum[3],x_3,y_6)
- BGT xcorr_kernel_edsp_process4
-xcorr_kernel_edsp_process4_done:
- ADDS r2, r2, #4
- BLE xcorr_kernel_edsp_done
- LDRH r12, [r4], #2 @ r12 = *x++
- SUBS r2, r2, #1 @ j--
- @ Stall
- SMLABB r6, r12, r10, r6 @ sum[0] = MAC16_16(sum[0],x,y_0)
- LDRHGT r14, [r4], #2 @ r14 = *x++
- SMLABT r7, r12, r10, r7 @ sum[1] = MAC16_16(sum[1],x,y_1)
- SMLABB r8, r12, r11, r8 @ sum[2] = MAC16_16(sum[2],x,y_2)
- SMLABT r9, r12, r11, r9 @ sum[3] = MAC16_16(sum[3],x,y_3)
- BLE xcorr_kernel_edsp_done
- SMLABT r6, r14, r10, r6 @ sum[0] = MAC16_16(sum[0],x,y_1)
- SUBS r2, r2, #1 @ j--
- SMLABB r7, r14, r11, r7 @ sum[1] = MAC16_16(sum[1],x,y_2)
- LDRH r10, [r5], #2 @ r10 = y_4 = *y++
- SMLABT r8, r14, r11, r8 @ sum[2] = MAC16_16(sum[2],x,y_3)
- LDRHGT r12, [r4], #2 @ r12 = *x++
- SMLABB r9, r14, r10, r9 @ sum[3] = MAC16_16(sum[3],x,y_4)
- BLE xcorr_kernel_edsp_done
- SMLABB r6, r12, r11, r6 @ sum[0] = MAC16_16(sum[0],tmp,y_2)
- CMP r2, #1 @ j--
- SMLABT r7, r12, r11, r7 @ sum[1] = MAC16_16(sum[1],tmp,y_3)
- LDRH r2, [r5], #2 @ r2 = y_5 = *y++
- SMLABB r8, r12, r10, r8 @ sum[2] = MAC16_16(sum[2],tmp,y_4)
- LDRHGT r14, [r4] @ r14 = *x
- SMLABB r9, r12, r2, r9 @ sum[3] = MAC16_16(sum[3],tmp,y_5)
- BLE xcorr_kernel_edsp_done
- SMLABT r6, r14, r11, r6 @ sum[0] = MAC16_16(sum[0],tmp,y_3)
- LDRH r11, [r5] @ r11 = y_6 = *y
- SMLABB r7, r14, r10, r7 @ sum[1] = MAC16_16(sum[1],tmp,y_4)
- SMLABB r8, r14, r2, r8 @ sum[2] = MAC16_16(sum[2],tmp,y_5)
- SMLABB r9, r14, r11, r9 @ sum[3] = MAC16_16(sum[3],tmp,y_6)
-xcorr_kernel_edsp_done:
- LDMFD sp!, {r2,r4,r5,pc}
- .size xcorr_kernel_edsp, .-xcorr_kernel_edsp @ ENDP
-
-; celt_pitch_xcorr_edsp: @ PROC
- @ input:
- @ r0 = opus_val16 *_x (must be 32-bit aligned)
- @ r1 = opus_val16 *_y (only needs to be 16-bit aligned)
- @ r2 = opus_val32 *xcorr
- @ r3 = int len
- @ output:
- @ r0 = maxcorr
- @ internal usage
- @ r4 = opus_val16 *x
- @ r5 = opus_val16 *y
- @ r6 = opus_val32 sum0
- @ r7 = opus_val32 sum1
- @ r8 = opus_val32 sum2
- @ r9 = opus_val32 sum3
- @ r1 = int max_pitch
- @ r12 = int j
- STMFD sp!, {r4-r11, lr}
- MOV r5, r1
- LDR r1, [sp, #36]
- MOV r4, r0
- TST r5, #3
- @ maxcorr = 1
- MOV r0, #1
- BEQ celt_pitch_xcorr_edsp_process1u_done
-@ Compute one sum at the start to make y 32-bit aligned.
- SUBS r12, r3, #4
- @ r14 = sum = 0
- MOV r14, #0
- LDRH r8, [r5], #2
- BLE celt_pitch_xcorr_edsp_process1u_loop4_done
- LDR r6, [r4], #4
- MOV r8, r8, LSL #16
-celt_pitch_xcorr_edsp_process1u_loop4:
- LDR r9, [r5], #4
- SMLABT r14, r6, r8, r14 @ sum = MAC16_16(sum, x_0, y_0)
- LDR r7, [r4], #4
- SMLATB r14, r6, r9, r14 @ sum = MAC16_16(sum, x_1, y_1)
- LDR r8, [r5], #4
- SMLABT r14, r7, r9, r14 @ sum = MAC16_16(sum, x_2, y_2)
- SUBS r12, r12, #4 @ j-=4
- SMLATB r14, r7, r8, r14 @ sum = MAC16_16(sum, x_3, y_3)
- LDRGT r6, [r4], #4
- BGT celt_pitch_xcorr_edsp_process1u_loop4
- MOV r8, r8, LSR #16
-celt_pitch_xcorr_edsp_process1u_loop4_done:
- ADDS r12, r12, #4
-celt_pitch_xcorr_edsp_process1u_loop1:
- LDRHGE r6, [r4], #2
- @ Stall
- SMLABBGE r14, r6, r8, r14 @ sum = MAC16_16(sum, *x, *y)
- SUBSGE r12, r12, #1
- LDRHGT r8, [r5], #2
- BGT celt_pitch_xcorr_edsp_process1u_loop1
- @ Restore _x
- SUB r4, r4, r3, LSL #1
- @ Restore and advance _y
- SUB r5, r5, r3, LSL #1
- @ maxcorr = max(maxcorr, sum)
- CMP r0, r14
- ADD r5, r5, #2
- MOVLT r0, r14
- SUBS r1, r1, #1
- @ xcorr[i] = sum
- STR r14, [r2], #4
- BLE celt_pitch_xcorr_edsp_done
-celt_pitch_xcorr_edsp_process1u_done:
- @ if (max_pitch < 4) goto celt_pitch_xcorr_edsp_process2
- SUBS r1, r1, #4
- BLT celt_pitch_xcorr_edsp_process2
-celt_pitch_xcorr_edsp_process4:
- @ xcorr_kernel_edsp parameters:
- @ r3 = len, r4 = _x, r5 = _y, r6...r9 = sum[4] = {0, 0, 0, 0}
- MOV r6, #0
- MOV r7, #0
- MOV r8, #0
- MOV r9, #0
- BL xcorr_kernel_edsp_start @ xcorr_kernel_edsp(_x, _y+i, xcorr+i, len)
- @ maxcorr = max(maxcorr, sum0, sum1, sum2, sum3)
- CMP r0, r6
- @ _y+=4
- ADD r5, r5, #8
- MOVLT r0, r6
- CMP r0, r7
- MOVLT r0, r7
- CMP r0, r8
- MOVLT r0, r8
- CMP r0, r9
- MOVLT r0, r9
- STMIA r2!, {r6-r9}
- SUBS r1, r1, #4
- BGE celt_pitch_xcorr_edsp_process4
-celt_pitch_xcorr_edsp_process2:
- ADDS r1, r1, #2
- BLT celt_pitch_xcorr_edsp_process1a
- SUBS r12, r3, #4
- @ {r10, r11} = {sum0, sum1} = {0, 0}
- MOV r10, #0
- MOV r11, #0
- LDR r8, [r5], #4
- BLE celt_pitch_xcorr_edsp_process2_loop_done
- LDR r6, [r4], #4
- LDR r9, [r5], #4
-celt_pitch_xcorr_edsp_process2_loop4:
- SMLABB r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_0, y_0)
- LDR r7, [r4], #4
- SMLABT r11, r6, r8, r11 @ sum1 = MAC16_16(sum1, x_0, y_1)
- SUBS r12, r12, #4 @ j-=4
- SMLATT r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_1, y_1)
- LDR r8, [r5], #4
- SMLATB r11, r6, r9, r11 @ sum1 = MAC16_16(sum1, x_1, y_2)
- LDRGT r6, [r4], #4
- SMLABB r10, r7, r9, r10 @ sum0 = MAC16_16(sum0, x_2, y_2)
- SMLABT r11, r7, r9, r11 @ sum1 = MAC16_16(sum1, x_2, y_3)
- SMLATT r10, r7, r9, r10 @ sum0 = MAC16_16(sum0, x_3, y_3)
- LDRGT r9, [r5], #4
- SMLATB r11, r7, r8, r11 @ sum1 = MAC16_16(sum1, x_3, y_4)
- BGT celt_pitch_xcorr_edsp_process2_loop4
-celt_pitch_xcorr_edsp_process2_loop_done:
- ADDS r12, r12, #2
- BLE celt_pitch_xcorr_edsp_process2_1
- LDR r6, [r4], #4
- @ Stall
- SMLABB r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_0, y_0)
- LDR r9, [r5], #4
- SMLABT r11, r6, r8, r11 @ sum1 = MAC16_16(sum1, x_0, y_1)
- SUB r12, r12, #2
- SMLATT r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_1, y_1)
- MOV r8, r9
- SMLATB r11, r6, r9, r11 @ sum1 = MAC16_16(sum1, x_1, y_2)
-celt_pitch_xcorr_edsp_process2_1:
- LDRH r6, [r4], #2
- ADDS r12, r12, #1
- @ Stall
- SMLABB r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_0, y_0)
- LDRHGT r7, [r4], #2
- SMLABT r11, r6, r8, r11 @ sum1 = MAC16_16(sum1, x_0, y_1)
- BLE celt_pitch_xcorr_edsp_process2_done
- LDRH r9, [r5], #2
- SMLABT r10, r7, r8, r10 @ sum0 = MAC16_16(sum0, x_0, y_1)
- SMLABB r11, r7, r9, r11 @ sum1 = MAC16_16(sum1, x_0, y_2)
-celt_pitch_xcorr_edsp_process2_done:
- @ Restore _x
- SUB r4, r4, r3, LSL #1
- @ Restore and advance _y
- SUB r5, r5, r3, LSL #1
- @ maxcorr = max(maxcorr, sum0)
- CMP r0, r10
- ADD r5, r5, #2
- MOVLT r0, r10
- SUB r1, r1, #2
- @ maxcorr = max(maxcorr, sum1)
- CMP r0, r11
- @ xcorr[i] = sum
- STR r10, [r2], #4
- MOVLT r0, r11
- STR r11, [r2], #4
-celt_pitch_xcorr_edsp_process1a:
- ADDS r1, r1, #1
- BLT celt_pitch_xcorr_edsp_done
- SUBS r12, r3, #4
- @ r14 = sum = 0
- MOV r14, #0
- BLT celt_pitch_xcorr_edsp_process1a_loop_done
- LDR r6, [r4], #4
- LDR r8, [r5], #4
- LDR r7, [r4], #4
- LDR r9, [r5], #4
-celt_pitch_xcorr_edsp_process1a_loop4:
- SMLABB r14, r6, r8, r14 @ sum = MAC16_16(sum, x_0, y_0)
- SUBS r12, r12, #4 @ j-=4
- SMLATT r14, r6, r8, r14 @ sum = MAC16_16(sum, x_1, y_1)
- LDRGE r6, [r4], #4
- SMLABB r14, r7, r9, r14 @ sum = MAC16_16(sum, x_2, y_2)
- LDRGE r8, [r5], #4
- SMLATT r14, r7, r9, r14 @ sum = MAC16_16(sum, x_3, y_3)
- LDRGE r7, [r4], #4
- LDRGE r9, [r5], #4
- BGE celt_pitch_xcorr_edsp_process1a_loop4
-celt_pitch_xcorr_edsp_process1a_loop_done:
- ADDS r12, r12, #2
- LDRGE r6, [r4], #4
- LDRGE r8, [r5], #4
- @ Stall
- SMLABBGE r14, r6, r8, r14 @ sum = MAC16_16(sum, x_0, y_0)
- SUBGE r12, r12, #2
- SMLATTGE r14, r6, r8, r14 @ sum = MAC16_16(sum, x_1, y_1)
- ADDS r12, r12, #1
- LDRHGE r6, [r4], #2
- LDRHGE r8, [r5], #2
- @ Stall
- SMLABBGE r14, r6, r8, r14 @ sum = MAC16_16(sum, *x, *y)
- @ maxcorr = max(maxcorr, sum)
- CMP r0, r14
- @ xcorr[i] = sum
- STR r14, [r2], #4
- MOVLT r0, r14
-celt_pitch_xcorr_edsp_done:
- LDMFD sp!, {r4-r11, pc}
- .size celt_pitch_xcorr_edsp, .-celt_pitch_xcorr_edsp @ ENDP
-
- .endif
-
-@ END:
- .section .note.GNU-stack,"",%progbits
diff --git a/thirdparty/opus/celt/arm/celt_pitch_xcorr_arm.s b/thirdparty/opus/celt/arm/celt_pitch_xcorr_arm.s
deleted file mode 100644
index f96e0a88bb..0000000000
--- a/thirdparty/opus/celt/arm/celt_pitch_xcorr_arm.s
+++ /dev/null
@@ -1,547 +0,0 @@
-; Copyright (c) 2007-2008 CSIRO
-; Copyright (c) 2007-2009 Xiph.Org Foundation
-; Copyright (c) 2013 Parrot
-; Written by Aurélien Zanelli
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions
-; are met:
-;
-; - Redistributions of source code must retain the above copyright
-; notice, this list of conditions and the following disclaimer.
-;
-; - Redistributions in binary form must reproduce the above copyright
-; notice, this list of conditions and the following disclaimer in the
-; documentation and/or other materials provided with the distribution.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-; ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- AREA |.text|, CODE, READONLY
-
- GET celt/arm/armopts.s
-
-IF OPUS_ARM_MAY_HAVE_EDSP
- EXPORT celt_pitch_xcorr_edsp
-ENDIF
-
-IF OPUS_ARM_MAY_HAVE_NEON
- EXPORT celt_pitch_xcorr_neon
-ENDIF
-
-IF OPUS_ARM_MAY_HAVE_NEON
-
-; Compute sum[k]=sum(x[j]*y[j+k],j=0...len-1), k=0...3
-xcorr_kernel_neon PROC
-xcorr_kernel_neon_start
- ; input:
- ; r3 = int len
- ; r4 = opus_val16 *x
- ; r5 = opus_val16 *y
- ; q0 = opus_val32 sum[4]
- ; output:
- ; q0 = opus_val32 sum[4]
- ; preserved: r0-r3, r6-r11, d2, q4-q7, q9-q15
- ; internal usage:
- ; r12 = int j
- ; d3 = y_3|y_2|y_1|y_0
- ; q2 = y_B|y_A|y_9|y_8|y_7|y_6|y_5|y_4
- ; q3 = x_7|x_6|x_5|x_4|x_3|x_2|x_1|x_0
- ; q8 = scratch
- ;
- ; Load y[0...3]
- ; This requires len>0 to always be valid (which we assert in the C code).
- VLD1.16 {d5}, [r5]!
- SUBS r12, r3, #8
- BLE xcorr_kernel_neon_process4
-; Process 8 samples at a time.
-; This loop loads one y value more than we actually need. Therefore we have to
-; stop as soon as there are 8 or fewer samples left (instead of 7), to avoid
-; reading past the end of the array.
-xcorr_kernel_neon_process8
- ; This loop has 19 total instructions (10 cycles to issue, minimum), with
- ; - 2 cycles of ARM insrtuctions,
- ; - 10 cycles of load/store/byte permute instructions, and
- ; - 9 cycles of data processing instructions.
- ; On a Cortex A8, we dual-issue the maximum amount (9 cycles) between the
- ; latter two categories, meaning the whole loop should run in 10 cycles per
- ; iteration, barring cache misses.
- ;
- ; Load x[0...7]
- VLD1.16 {d6, d7}, [r4]!
- ; Unlike VMOV, VAND is a data processsing instruction (and doesn't get
- ; assembled to VMOV, like VORR would), so it dual-issues with the prior VLD1.
- VAND d3, d5, d5
- SUBS r12, r12, #8
- ; Load y[4...11]
- VLD1.16 {d4, d5}, [r5]!
- VMLAL.S16 q0, d3, d6[0]
- VEXT.16 d16, d3, d4, #1
- VMLAL.S16 q0, d4, d7[0]
- VEXT.16 d17, d4, d5, #1
- VMLAL.S16 q0, d16, d6[1]
- VEXT.16 d16, d3, d4, #2
- VMLAL.S16 q0, d17, d7[1]
- VEXT.16 d17, d4, d5, #2
- VMLAL.S16 q0, d16, d6[2]
- VEXT.16 d16, d3, d4, #3
- VMLAL.S16 q0, d17, d7[2]
- VEXT.16 d17, d4, d5, #3
- VMLAL.S16 q0, d16, d6[3]
- VMLAL.S16 q0, d17, d7[3]
- BGT xcorr_kernel_neon_process8
-; Process 4 samples here if we have > 4 left (still reading one extra y value).
-xcorr_kernel_neon_process4
- ADDS r12, r12, #4
- BLE xcorr_kernel_neon_process2
- ; Load x[0...3]
- VLD1.16 d6, [r4]!
- ; Use VAND since it's a data processing instruction again.
- VAND d4, d5, d5
- SUB r12, r12, #4
- ; Load y[4...7]
- VLD1.16 d5, [r5]!
- VMLAL.S16 q0, d4, d6[0]
- VEXT.16 d16, d4, d5, #1
- VMLAL.S16 q0, d16, d6[1]
- VEXT.16 d16, d4, d5, #2
- VMLAL.S16 q0, d16, d6[2]
- VEXT.16 d16, d4, d5, #3
- VMLAL.S16 q0, d16, d6[3]
-; Process 2 samples here if we have > 2 left (still reading one extra y value).
-xcorr_kernel_neon_process2
- ADDS r12, r12, #2
- BLE xcorr_kernel_neon_process1
- ; Load x[0...1]
- VLD2.16 {d6[],d7[]}, [r4]!
- ; Use VAND since it's a data processing instruction again.
- VAND d4, d5, d5
- SUB r12, r12, #2
- ; Load y[4...5]
- VLD1.32 {d5[]}, [r5]!
- VMLAL.S16 q0, d4, d6
- VEXT.16 d16, d4, d5, #1
- ; Replace bottom copy of {y5,y4} in d5 with {y3,y2} from d4, using VSRI
- ; instead of VEXT, since it's a data-processing instruction.
- VSRI.64 d5, d4, #32
- VMLAL.S16 q0, d16, d7
-; Process 1 sample using the extra y value we loaded above.
-xcorr_kernel_neon_process1
- ; Load next *x
- VLD1.16 {d6[]}, [r4]!
- ADDS r12, r12, #1
- ; y[0...3] are left in d5 from prior iteration(s) (if any)
- VMLAL.S16 q0, d5, d6
- MOVLE pc, lr
-; Now process 1 last sample, not reading ahead.
- ; Load last *y
- VLD1.16 {d4[]}, [r5]!
- VSRI.64 d4, d5, #16
- ; Load last *x
- VLD1.16 {d6[]}, [r4]!
- VMLAL.S16 q0, d4, d6
- MOV pc, lr
- ENDP
-
-; opus_val32 celt_pitch_xcorr_neon(opus_val16 *_x, opus_val16 *_y,
-; opus_val32 *xcorr, int len, int max_pitch)
-celt_pitch_xcorr_neon PROC
- ; input:
- ; r0 = opus_val16 *_x
- ; r1 = opus_val16 *_y
- ; r2 = opus_val32 *xcorr
- ; r3 = int len
- ; output:
- ; r0 = int maxcorr
- ; internal usage:
- ; r4 = opus_val16 *x (for xcorr_kernel_neon())
- ; r5 = opus_val16 *y (for xcorr_kernel_neon())
- ; r6 = int max_pitch
- ; r12 = int j
- ; q15 = int maxcorr[4] (q15 is not used by xcorr_kernel_neon())
- STMFD sp!, {r4-r6, lr}
- LDR r6, [sp, #16]
- VMOV.S32 q15, #1
- ; if (max_pitch < 4) goto celt_pitch_xcorr_neon_process4_done
- SUBS r6, r6, #4
- BLT celt_pitch_xcorr_neon_process4_done
-celt_pitch_xcorr_neon_process4
- ; xcorr_kernel_neon parameters:
- ; r3 = len, r4 = _x, r5 = _y, q0 = {0, 0, 0, 0}
- MOV r4, r0
- MOV r5, r1
- VEOR q0, q0, q0
- ; xcorr_kernel_neon only modifies r4, r5, r12, and q0...q3.
- ; So we don't save/restore any other registers.
- BL xcorr_kernel_neon_start
- SUBS r6, r6, #4
- VST1.32 {q0}, [r2]!
- ; _y += 4
- ADD r1, r1, #8
- VMAX.S32 q15, q15, q0
- ; if (max_pitch < 4) goto celt_pitch_xcorr_neon_process4_done
- BGE celt_pitch_xcorr_neon_process4
-; We have less than 4 sums left to compute.
-celt_pitch_xcorr_neon_process4_done
- ADDS r6, r6, #4
- ; Reduce maxcorr to a single value
- VMAX.S32 d30, d30, d31
- VPMAX.S32 d30, d30, d30
- ; if (max_pitch <= 0) goto celt_pitch_xcorr_neon_done
- BLE celt_pitch_xcorr_neon_done
-; Now compute each remaining sum one at a time.
-celt_pitch_xcorr_neon_process_remaining
- MOV r4, r0
- MOV r5, r1
- VMOV.I32 q0, #0
- SUBS r12, r3, #8
- BLT celt_pitch_xcorr_neon_process_remaining4
-; Sum terms 8 at a time.
-celt_pitch_xcorr_neon_process_remaining_loop8
- ; Load x[0...7]
- VLD1.16 {q1}, [r4]!
- ; Load y[0...7]
- VLD1.16 {q2}, [r5]!
- SUBS r12, r12, #8
- VMLAL.S16 q0, d4, d2
- VMLAL.S16 q0, d5, d3
- BGE celt_pitch_xcorr_neon_process_remaining_loop8
-; Sum terms 4 at a time.
-celt_pitch_xcorr_neon_process_remaining4
- ADDS r12, r12, #4
- BLT celt_pitch_xcorr_neon_process_remaining4_done
- ; Load x[0...3]
- VLD1.16 {d2}, [r4]!
- ; Load y[0...3]
- VLD1.16 {d3}, [r5]!
- SUB r12, r12, #4
- VMLAL.S16 q0, d3, d2
-celt_pitch_xcorr_neon_process_remaining4_done
- ; Reduce the sum to a single value.
- VADD.S32 d0, d0, d1
- VPADDL.S32 d0, d0
- ADDS r12, r12, #4
- BLE celt_pitch_xcorr_neon_process_remaining_loop_done
-; Sum terms 1 at a time.
-celt_pitch_xcorr_neon_process_remaining_loop1
- VLD1.16 {d2[]}, [r4]!
- VLD1.16 {d3[]}, [r5]!
- SUBS r12, r12, #1
- VMLAL.S16 q0, d2, d3
- BGT celt_pitch_xcorr_neon_process_remaining_loop1
-celt_pitch_xcorr_neon_process_remaining_loop_done
- VST1.32 {d0[0]}, [r2]!
- VMAX.S32 d30, d30, d0
- SUBS r6, r6, #1
- ; _y++
- ADD r1, r1, #2
- ; if (--max_pitch > 0) goto celt_pitch_xcorr_neon_process_remaining
- BGT celt_pitch_xcorr_neon_process_remaining
-celt_pitch_xcorr_neon_done
- VMOV.32 r0, d30[0]
- LDMFD sp!, {r4-r6, pc}
- ENDP
-
-ENDIF
-
-IF OPUS_ARM_MAY_HAVE_EDSP
-
-; This will get used on ARMv7 devices without NEON, so it has been optimized
-; to take advantage of dual-issuing where possible.
-xcorr_kernel_edsp PROC
-xcorr_kernel_edsp_start
- ; input:
- ; r3 = int len
- ; r4 = opus_val16 *_x (must be 32-bit aligned)
- ; r5 = opus_val16 *_y (must be 32-bit aligned)
- ; r6...r9 = opus_val32 sum[4]
- ; output:
- ; r6...r9 = opus_val32 sum[4]
- ; preserved: r0-r5
- ; internal usage
- ; r2 = int j
- ; r12,r14 = opus_val16 x[4]
- ; r10,r11 = opus_val16 y[4]
- STMFD sp!, {r2,r4,r5,lr}
- LDR r10, [r5], #4 ; Load y[0...1]
- SUBS r2, r3, #4 ; j = len-4
- LDR r11, [r5], #4 ; Load y[2...3]
- BLE xcorr_kernel_edsp_process4_done
- LDR r12, [r4], #4 ; Load x[0...1]
- ; Stall
-xcorr_kernel_edsp_process4
- ; The multiplies must issue from pipeline 0, and can't dual-issue with each
- ; other. Every other instruction here dual-issues with a multiply, and is
- ; thus "free". There should be no stalls in the body of the loop.
- SMLABB r6, r12, r10, r6 ; sum[0] = MAC16_16(sum[0],x_0,y_0)
- LDR r14, [r4], #4 ; Load x[2...3]
- SMLABT r7, r12, r10, r7 ; sum[1] = MAC16_16(sum[1],x_0,y_1)
- SUBS r2, r2, #4 ; j-=4
- SMLABB r8, r12, r11, r8 ; sum[2] = MAC16_16(sum[2],x_0,y_2)
- SMLABT r9, r12, r11, r9 ; sum[3] = MAC16_16(sum[3],x_0,y_3)
- SMLATT r6, r12, r10, r6 ; sum[0] = MAC16_16(sum[0],x_1,y_1)
- LDR r10, [r5], #4 ; Load y[4...5]
- SMLATB r7, r12, r11, r7 ; sum[1] = MAC16_16(sum[1],x_1,y_2)
- SMLATT r8, r12, r11, r8 ; sum[2] = MAC16_16(sum[2],x_1,y_3)
- SMLATB r9, r12, r10, r9 ; sum[3] = MAC16_16(sum[3],x_1,y_4)
- LDRGT r12, [r4], #4 ; Load x[0...1]
- SMLABB r6, r14, r11, r6 ; sum[0] = MAC16_16(sum[0],x_2,y_2)
- SMLABT r7, r14, r11, r7 ; sum[1] = MAC16_16(sum[1],x_2,y_3)
- SMLABB r8, r14, r10, r8 ; sum[2] = MAC16_16(sum[2],x_2,y_4)
- SMLABT r9, r14, r10, r9 ; sum[3] = MAC16_16(sum[3],x_2,y_5)
- SMLATT r6, r14, r11, r6 ; sum[0] = MAC16_16(sum[0],x_3,y_3)
- LDR r11, [r5], #4 ; Load y[6...7]
- SMLATB r7, r14, r10, r7 ; sum[1] = MAC16_16(sum[1],x_3,y_4)
- SMLATT r8, r14, r10, r8 ; sum[2] = MAC16_16(sum[2],x_3,y_5)
- SMLATB r9, r14, r11, r9 ; sum[3] = MAC16_16(sum[3],x_3,y_6)
- BGT xcorr_kernel_edsp_process4
-xcorr_kernel_edsp_process4_done
- ADDS r2, r2, #4
- BLE xcorr_kernel_edsp_done
- LDRH r12, [r4], #2 ; r12 = *x++
- SUBS r2, r2, #1 ; j--
- ; Stall
- SMLABB r6, r12, r10, r6 ; sum[0] = MAC16_16(sum[0],x,y_0)
- LDRHGT r14, [r4], #2 ; r14 = *x++
- SMLABT r7, r12, r10, r7 ; sum[1] = MAC16_16(sum[1],x,y_1)
- SMLABB r8, r12, r11, r8 ; sum[2] = MAC16_16(sum[2],x,y_2)
- SMLABT r9, r12, r11, r9 ; sum[3] = MAC16_16(sum[3],x,y_3)
- BLE xcorr_kernel_edsp_done
- SMLABT r6, r14, r10, r6 ; sum[0] = MAC16_16(sum[0],x,y_1)
- SUBS r2, r2, #1 ; j--
- SMLABB r7, r14, r11, r7 ; sum[1] = MAC16_16(sum[1],x,y_2)
- LDRH r10, [r5], #2 ; r10 = y_4 = *y++
- SMLABT r8, r14, r11, r8 ; sum[2] = MAC16_16(sum[2],x,y_3)
- LDRHGT r12, [r4], #2 ; r12 = *x++
- SMLABB r9, r14, r10, r9 ; sum[3] = MAC16_16(sum[3],x,y_4)
- BLE xcorr_kernel_edsp_done
- SMLABB r6, r12, r11, r6 ; sum[0] = MAC16_16(sum[0],tmp,y_2)
- CMP r2, #1 ; j--
- SMLABT r7, r12, r11, r7 ; sum[1] = MAC16_16(sum[1],tmp,y_3)
- LDRH r2, [r5], #2 ; r2 = y_5 = *y++
- SMLABB r8, r12, r10, r8 ; sum[2] = MAC16_16(sum[2],tmp,y_4)
- LDRHGT r14, [r4] ; r14 = *x
- SMLABB r9, r12, r2, r9 ; sum[3] = MAC16_16(sum[3],tmp,y_5)
- BLE xcorr_kernel_edsp_done
- SMLABT r6, r14, r11, r6 ; sum[0] = MAC16_16(sum[0],tmp,y_3)
- LDRH r11, [r5] ; r11 = y_6 = *y
- SMLABB r7, r14, r10, r7 ; sum[1] = MAC16_16(sum[1],tmp,y_4)
- SMLABB r8, r14, r2, r8 ; sum[2] = MAC16_16(sum[2],tmp,y_5)
- SMLABB r9, r14, r11, r9 ; sum[3] = MAC16_16(sum[3],tmp,y_6)
-xcorr_kernel_edsp_done
- LDMFD sp!, {r2,r4,r5,pc}
- ENDP
-
-celt_pitch_xcorr_edsp PROC
- ; input:
- ; r0 = opus_val16 *_x (must be 32-bit aligned)
- ; r1 = opus_val16 *_y (only needs to be 16-bit aligned)
- ; r2 = opus_val32 *xcorr
- ; r3 = int len
- ; output:
- ; r0 = maxcorr
- ; internal usage
- ; r4 = opus_val16 *x
- ; r5 = opus_val16 *y
- ; r6 = opus_val32 sum0
- ; r7 = opus_val32 sum1
- ; r8 = opus_val32 sum2
- ; r9 = opus_val32 sum3
- ; r1 = int max_pitch
- ; r12 = int j
- STMFD sp!, {r4-r11, lr}
- MOV r5, r1
- LDR r1, [sp, #36]
- MOV r4, r0
- TST r5, #3
- ; maxcorr = 1
- MOV r0, #1
- BEQ celt_pitch_xcorr_edsp_process1u_done
-; Compute one sum at the start to make y 32-bit aligned.
- SUBS r12, r3, #4
- ; r14 = sum = 0
- MOV r14, #0
- LDRH r8, [r5], #2
- BLE celt_pitch_xcorr_edsp_process1u_loop4_done
- LDR r6, [r4], #4
- MOV r8, r8, LSL #16
-celt_pitch_xcorr_edsp_process1u_loop4
- LDR r9, [r5], #4
- SMLABT r14, r6, r8, r14 ; sum = MAC16_16(sum, x_0, y_0)
- LDR r7, [r4], #4
- SMLATB r14, r6, r9, r14 ; sum = MAC16_16(sum, x_1, y_1)
- LDR r8, [r5], #4
- SMLABT r14, r7, r9, r14 ; sum = MAC16_16(sum, x_2, y_2)
- SUBS r12, r12, #4 ; j-=4
- SMLATB r14, r7, r8, r14 ; sum = MAC16_16(sum, x_3, y_3)
- LDRGT r6, [r4], #4
- BGT celt_pitch_xcorr_edsp_process1u_loop4
- MOV r8, r8, LSR #16
-celt_pitch_xcorr_edsp_process1u_loop4_done
- ADDS r12, r12, #4
-celt_pitch_xcorr_edsp_process1u_loop1
- LDRHGE r6, [r4], #2
- ; Stall
- SMLABBGE r14, r6, r8, r14 ; sum = MAC16_16(sum, *x, *y)
- SUBSGE r12, r12, #1
- LDRHGT r8, [r5], #2
- BGT celt_pitch_xcorr_edsp_process1u_loop1
- ; Restore _x
- SUB r4, r4, r3, LSL #1
- ; Restore and advance _y
- SUB r5, r5, r3, LSL #1
- ; maxcorr = max(maxcorr, sum)
- CMP r0, r14
- ADD r5, r5, #2
- MOVLT r0, r14
- SUBS r1, r1, #1
- ; xcorr[i] = sum
- STR r14, [r2], #4
- BLE celt_pitch_xcorr_edsp_done
-celt_pitch_xcorr_edsp_process1u_done
- ; if (max_pitch < 4) goto celt_pitch_xcorr_edsp_process2
- SUBS r1, r1, #4
- BLT celt_pitch_xcorr_edsp_process2
-celt_pitch_xcorr_edsp_process4
- ; xcorr_kernel_edsp parameters:
- ; r3 = len, r4 = _x, r5 = _y, r6...r9 = sum[4] = {0, 0, 0, 0}
- MOV r6, #0
- MOV r7, #0
- MOV r8, #0
- MOV r9, #0
- BL xcorr_kernel_edsp_start ; xcorr_kernel_edsp(_x, _y+i, xcorr+i, len)
- ; maxcorr = max(maxcorr, sum0, sum1, sum2, sum3)
- CMP r0, r6
- ; _y+=4
- ADD r5, r5, #8
- MOVLT r0, r6
- CMP r0, r7
- MOVLT r0, r7
- CMP r0, r8
- MOVLT r0, r8
- CMP r0, r9
- MOVLT r0, r9
- STMIA r2!, {r6-r9}
- SUBS r1, r1, #4
- BGE celt_pitch_xcorr_edsp_process4
-celt_pitch_xcorr_edsp_process2
- ADDS r1, r1, #2
- BLT celt_pitch_xcorr_edsp_process1a
- SUBS r12, r3, #4
- ; {r10, r11} = {sum0, sum1} = {0, 0}
- MOV r10, #0
- MOV r11, #0
- LDR r8, [r5], #4
- BLE celt_pitch_xcorr_edsp_process2_loop_done
- LDR r6, [r4], #4
- LDR r9, [r5], #4
-celt_pitch_xcorr_edsp_process2_loop4
- SMLABB r10, r6, r8, r10 ; sum0 = MAC16_16(sum0, x_0, y_0)
- LDR r7, [r4], #4
- SMLABT r11, r6, r8, r11 ; sum1 = MAC16_16(sum1, x_0, y_1)
- SUBS r12, r12, #4 ; j-=4
- SMLATT r10, r6, r8, r10 ; sum0 = MAC16_16(sum0, x_1, y_1)
- LDR r8, [r5], #4
- SMLATB r11, r6, r9, r11 ; sum1 = MAC16_16(sum1, x_1, y_2)
- LDRGT r6, [r4], #4
- SMLABB r10, r7, r9, r10 ; sum0 = MAC16_16(sum0, x_2, y_2)
- SMLABT r11, r7, r9, r11 ; sum1 = MAC16_16(sum1, x_2, y_3)
- SMLATT r10, r7, r9, r10 ; sum0 = MAC16_16(sum0, x_3, y_3)
- LDRGT r9, [r5], #4
- SMLATB r11, r7, r8, r11 ; sum1 = MAC16_16(sum1, x_3, y_4)
- BGT celt_pitch_xcorr_edsp_process2_loop4
-celt_pitch_xcorr_edsp_process2_loop_done
- ADDS r12, r12, #2
- BLE celt_pitch_xcorr_edsp_process2_1
- LDR r6, [r4], #4
- ; Stall
- SMLABB r10, r6, r8, r10 ; sum0 = MAC16_16(sum0, x_0, y_0)
- LDR r9, [r5], #4
- SMLABT r11, r6, r8, r11 ; sum1 = MAC16_16(sum1, x_0, y_1)
- SUB r12, r12, #2
- SMLATT r10, r6, r8, r10 ; sum0 = MAC16_16(sum0, x_1, y_1)
- MOV r8, r9
- SMLATB r11, r6, r9, r11 ; sum1 = MAC16_16(sum1, x_1, y_2)
-celt_pitch_xcorr_edsp_process2_1
- LDRH r6, [r4], #2
- ADDS r12, r12, #1
- ; Stall
- SMLABB r10, r6, r8, r10 ; sum0 = MAC16_16(sum0, x_0, y_0)
- LDRHGT r7, [r4], #2
- SMLABT r11, r6, r8, r11 ; sum1 = MAC16_16(sum1, x_0, y_1)
- BLE celt_pitch_xcorr_edsp_process2_done
- LDRH r9, [r5], #2
- SMLABT r10, r7, r8, r10 ; sum0 = MAC16_16(sum0, x_0, y_1)
- SMLABB r11, r7, r9, r11 ; sum1 = MAC16_16(sum1, x_0, y_2)
-celt_pitch_xcorr_edsp_process2_done
- ; Restore _x
- SUB r4, r4, r3, LSL #1
- ; Restore and advance _y
- SUB r5, r5, r3, LSL #1
- ; maxcorr = max(maxcorr, sum0)
- CMP r0, r10
- ADD r5, r5, #2
- MOVLT r0, r10
- SUB r1, r1, #2
- ; maxcorr = max(maxcorr, sum1)
- CMP r0, r11
- ; xcorr[i] = sum
- STR r10, [r2], #4
- MOVLT r0, r11
- STR r11, [r2], #4
-celt_pitch_xcorr_edsp_process1a
- ADDS r1, r1, #1
- BLT celt_pitch_xcorr_edsp_done
- SUBS r12, r3, #4
- ; r14 = sum = 0
- MOV r14, #0
- BLT celt_pitch_xcorr_edsp_process1a_loop_done
- LDR r6, [r4], #4
- LDR r8, [r5], #4
- LDR r7, [r4], #4
- LDR r9, [r5], #4
-celt_pitch_xcorr_edsp_process1a_loop4
- SMLABB r14, r6, r8, r14 ; sum = MAC16_16(sum, x_0, y_0)
- SUBS r12, r12, #4 ; j-=4
- SMLATT r14, r6, r8, r14 ; sum = MAC16_16(sum, x_1, y_1)
- LDRGE r6, [r4], #4
- SMLABB r14, r7, r9, r14 ; sum = MAC16_16(sum, x_2, y_2)
- LDRGE r8, [r5], #4
- SMLATT r14, r7, r9, r14 ; sum = MAC16_16(sum, x_3, y_3)
- LDRGE r7, [r4], #4
- LDRGE r9, [r5], #4
- BGE celt_pitch_xcorr_edsp_process1a_loop4
-celt_pitch_xcorr_edsp_process1a_loop_done
- ADDS r12, r12, #2
- LDRGE r6, [r4], #4
- LDRGE r8, [r5], #4
- ; Stall
- SMLABBGE r14, r6, r8, r14 ; sum = MAC16_16(sum, x_0, y_0)
- SUBGE r12, r12, #2
- SMLATTGE r14, r6, r8, r14 ; sum = MAC16_16(sum, x_1, y_1)
- ADDS r12, r12, #1
- LDRHGE r6, [r4], #2
- LDRHGE r8, [r5], #2
- ; Stall
- SMLABBGE r14, r6, r8, r14 ; sum = MAC16_16(sum, *x, *y)
- ; maxcorr = max(maxcorr, sum)
- CMP r0, r14
- ; xcorr[i] = sum
- STR r14, [r2], #4
- MOVLT r0, r14
-celt_pitch_xcorr_edsp_done
- LDMFD sp!, {r4-r11, pc}
- ENDP
-
-ENDIF
-
-END
diff --git a/thirdparty/opus/celt/arm/fft_arm.h b/thirdparty/opus/celt/arm/fft_arm.h
deleted file mode 100644
index 0cb55d8e22..0000000000
--- a/thirdparty/opus/celt/arm/fft_arm.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (c) 2015 Xiph.Org Foundation
- Written by Viswanath Puttagunta */
-/**
- @file fft_arm.h
- @brief ARM Neon Intrinsic optimizations for fft using NE10 library
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-#if !defined(FFT_ARM_H)
-#define FFT_ARM_H
-
-#include "config.h"
-#include "kiss_fft.h"
-
-#if defined(HAVE_ARM_NE10)
-
-int opus_fft_alloc_arm_neon(kiss_fft_state *st);
-void opus_fft_free_arm_neon(kiss_fft_state *st);
-
-void opus_fft_neon(const kiss_fft_state *st,
- const kiss_fft_cpx *fin,
- kiss_fft_cpx *fout);
-
-void opus_ifft_neon(const kiss_fft_state *st,
- const kiss_fft_cpx *fin,
- kiss_fft_cpx *fout);
-
-#if !defined(OPUS_HAVE_RTCD)
-#define OVERRIDE_OPUS_FFT (1)
-
-#define opus_fft_alloc_arch(_st, arch) \
- ((void)(arch), opus_fft_alloc_arm_neon(_st))
-
-#define opus_fft_free_arch(_st, arch) \
- ((void)(arch), opus_fft_free_arm_neon(_st))
-
-#define opus_fft(_st, _fin, _fout, arch) \
- ((void)(arch), opus_fft_neon(_st, _fin, _fout))
-
-#define opus_ifft(_st, _fin, _fout, arch) \
- ((void)(arch), opus_ifft_neon(_st, _fin, _fout))
-
-#endif /* OPUS_HAVE_RTCD */
-
-#endif /* HAVE_ARM_NE10 */
-
-#endif
diff --git a/thirdparty/opus/celt/arm/fixed_arm64.h b/thirdparty/opus/celt/arm/fixed_arm64.h
deleted file mode 100644
index c6fbd3db2c..0000000000
--- a/thirdparty/opus/celt/arm/fixed_arm64.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 2015 Vidyo */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_ARM64_H
-#define FIXED_ARM64_H
-
-#include <arm_neon.h>
-
-#undef SIG2WORD16
-#define SIG2WORD16(x) (vqmovns_s32(PSHR32((x), SIG_SHIFT)))
-
-#endif
diff --git a/thirdparty/opus/celt/arm/fixed_armv4.h b/thirdparty/opus/celt/arm/fixed_armv4.h
deleted file mode 100644
index efb3b1896a..0000000000
--- a/thirdparty/opus/celt/arm/fixed_armv4.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright (C) 2013 Xiph.Org Foundation and contributors */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_ARMv4_H
-#define FIXED_ARMv4_H
-
-/** 16x32 multiplication, followed by a 16-bit shift right. Results fits in 32 bits */
-#undef MULT16_32_Q16
-static OPUS_INLINE opus_val32 MULT16_32_Q16_armv4(opus_val16 a, opus_val32 b)
-{
- unsigned rd_lo;
- int rd_hi;
- __asm__(
- "#MULT16_32_Q16\n\t"
- "smull %0, %1, %2, %3\n\t"
- : "=&r"(rd_lo), "=&r"(rd_hi)
- : "%r"(b),"r"(a<<16)
- );
- return rd_hi;
-}
-#define MULT16_32_Q16(a, b) (MULT16_32_Q16_armv4(a, b))
-
-
-/** 16x32 multiplication, followed by a 15-bit shift right. Results fits in 32 bits */
-#undef MULT16_32_Q15
-static OPUS_INLINE opus_val32 MULT16_32_Q15_armv4(opus_val16 a, opus_val32 b)
-{
- unsigned rd_lo;
- int rd_hi;
- __asm__(
- "#MULT16_32_Q15\n\t"
- "smull %0, %1, %2, %3\n\t"
- : "=&r"(rd_lo), "=&r"(rd_hi)
- : "%r"(b), "r"(a<<16)
- );
- /*We intentionally don't OR in the high bit of rd_lo for speed.*/
- return rd_hi<<1;
-}
-#define MULT16_32_Q15(a, b) (MULT16_32_Q15_armv4(a, b))
-
-
-/** 16x32 multiply, followed by a 15-bit shift right and 32-bit add.
- b must fit in 31 bits.
- Result fits in 32 bits. */
-#undef MAC16_32_Q15
-#define MAC16_32_Q15(c, a, b) ADD32(c, MULT16_32_Q15(a, b))
-
-/** 16x32 multiply, followed by a 16-bit shift right and 32-bit add.
- Result fits in 32 bits. */
-#undef MAC16_32_Q16
-#define MAC16_32_Q16(c, a, b) ADD32(c, MULT16_32_Q16(a, b))
-
-/** 32x32 multiplication, followed by a 31-bit shift right. Results fits in 32 bits */
-#undef MULT32_32_Q31
-#define MULT32_32_Q31(a,b) (opus_val32)((((opus_int64)(a)) * ((opus_int64)(b)))>>31)
-
-#endif
diff --git a/thirdparty/opus/celt/arm/fixed_armv5e.h b/thirdparty/opus/celt/arm/fixed_armv5e.h
deleted file mode 100644
index 36a6321101..0000000000
--- a/thirdparty/opus/celt/arm/fixed_armv5e.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* Copyright (C) 2007-2009 Xiph.Org Foundation
- Copyright (C) 2003-2008 Jean-Marc Valin
- Copyright (C) 2007-2008 CSIRO
- Copyright (C) 2013 Parrot */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_ARMv5E_H
-#define FIXED_ARMv5E_H
-
-#include "fixed_armv4.h"
-
-/** 16x32 multiplication, followed by a 16-bit shift right. Results fits in 32 bits */
-#undef MULT16_32_Q16
-static OPUS_INLINE opus_val32 MULT16_32_Q16_armv5e(opus_val16 a, opus_val32 b)
-{
- int res;
- __asm__(
- "#MULT16_32_Q16\n\t"
- "smulwb %0, %1, %2\n\t"
- : "=r"(res)
- : "r"(b),"r"(a)
- );
- return res;
-}
-#define MULT16_32_Q16(a, b) (MULT16_32_Q16_armv5e(a, b))
-
-
-/** 16x32 multiplication, followed by a 15-bit shift right. Results fits in 32 bits */
-#undef MULT16_32_Q15
-static OPUS_INLINE opus_val32 MULT16_32_Q15_armv5e(opus_val16 a, opus_val32 b)
-{
- int res;
- __asm__(
- "#MULT16_32_Q15\n\t"
- "smulwb %0, %1, %2\n\t"
- : "=r"(res)
- : "r"(b), "r"(a)
- );
- return res<<1;
-}
-#define MULT16_32_Q15(a, b) (MULT16_32_Q15_armv5e(a, b))
-
-
-/** 16x32 multiply, followed by a 15-bit shift right and 32-bit add.
- b must fit in 31 bits.
- Result fits in 32 bits. */
-#undef MAC16_32_Q15
-static OPUS_INLINE opus_val32 MAC16_32_Q15_armv5e(opus_val32 c, opus_val16 a,
- opus_val32 b)
-{
- int res;
- __asm__(
- "#MAC16_32_Q15\n\t"
- "smlawb %0, %1, %2, %3;\n"
- : "=r"(res)
- : "r"(b<<1), "r"(a), "r"(c)
- );
- return res;
-}
-#define MAC16_32_Q15(c, a, b) (MAC16_32_Q15_armv5e(c, a, b))
-
-/** 16x32 multiply, followed by a 16-bit shift right and 32-bit add.
- Result fits in 32 bits. */
-#undef MAC16_32_Q16
-static OPUS_INLINE opus_val32 MAC16_32_Q16_armv5e(opus_val32 c, opus_val16 a,
- opus_val32 b)
-{
- int res;
- __asm__(
- "#MAC16_32_Q16\n\t"
- "smlawb %0, %1, %2, %3;\n"
- : "=r"(res)
- : "r"(b), "r"(a), "r"(c)
- );
- return res;
-}
-#define MAC16_32_Q16(c, a, b) (MAC16_32_Q16_armv5e(c, a, b))
-
-/** 16x16 multiply-add where the result fits in 32 bits */
-#undef MAC16_16
-static OPUS_INLINE opus_val32 MAC16_16_armv5e(opus_val32 c, opus_val16 a,
- opus_val16 b)
-{
- int res;
- __asm__(
- "#MAC16_16\n\t"
- "smlabb %0, %1, %2, %3;\n"
- : "=r"(res)
- : "r"(a), "r"(b), "r"(c)
- );
- return res;
-}
-#define MAC16_16(c, a, b) (MAC16_16_armv5e(c, a, b))
-
-/** 16x16 multiplication where the result fits in 32 bits */
-#undef MULT16_16
-static OPUS_INLINE opus_val32 MULT16_16_armv5e(opus_val16 a, opus_val16 b)
-{
- int res;
- __asm__(
- "#MULT16_16\n\t"
- "smulbb %0, %1, %2;\n"
- : "=r"(res)
- : "r"(a), "r"(b)
- );
- return res;
-}
-#define MULT16_16(a, b) (MULT16_16_armv5e(a, b))
-
-#ifdef OPUS_ARM_INLINE_MEDIA
-
-#undef SIG2WORD16
-static OPUS_INLINE opus_val16 SIG2WORD16_armv6(opus_val32 x)
-{
- celt_sig res;
- __asm__(
- "#SIG2WORD16\n\t"
- "ssat %0, #16, %1, ASR #12\n\t"
- : "=r"(res)
- : "r"(x+2048)
- );
- return EXTRACT16(res);
-}
-#define SIG2WORD16(x) (SIG2WORD16_armv6(x))
-
-#endif /* OPUS_ARM_INLINE_MEDIA */
-
-#endif
diff --git a/thirdparty/opus/celt/arm/kiss_fft_armv4.h b/thirdparty/opus/celt/arm/kiss_fft_armv4.h
deleted file mode 100644
index e4faad6f2b..0000000000
--- a/thirdparty/opus/celt/arm/kiss_fft_armv4.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*Copyright (c) 2013, Xiph.Org Foundation and contributors.
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.*/
-
-#ifndef KISS_FFT_ARMv4_H
-#define KISS_FFT_ARMv4_H
-
-#if !defined(KISS_FFT_GUTS_H)
-#error "This file should only be included from _kiss_fft_guts.h"
-#endif
-
-#ifdef FIXED_POINT
-
-#undef C_MUL
-#define C_MUL(m,a,b) \
- do{ \
- int br__; \
- int bi__; \
- int tt__; \
- __asm__ __volatile__( \
- "#C_MUL\n\t" \
- "ldrsh %[br], [%[bp], #0]\n\t" \
- "ldm %[ap], {r0,r1}\n\t" \
- "ldrsh %[bi], [%[bp], #2]\n\t" \
- "smull %[tt], %[mi], r1, %[br]\n\t" \
- "smlal %[tt], %[mi], r0, %[bi]\n\t" \
- "rsb %[bi], %[bi], #0\n\t" \
- "smull %[br], %[mr], r0, %[br]\n\t" \
- "mov %[tt], %[tt], lsr #15\n\t" \
- "smlal %[br], %[mr], r1, %[bi]\n\t" \
- "orr %[mi], %[tt], %[mi], lsl #17\n\t" \
- "mov %[br], %[br], lsr #15\n\t" \
- "orr %[mr], %[br], %[mr], lsl #17\n\t" \
- : [mr]"=r"((m).r), [mi]"=r"((m).i), \
- [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
- : [ap]"r"(&(a)), [bp]"r"(&(b)) \
- : "r0", "r1" \
- ); \
- } \
- while(0)
-
-#undef C_MUL4
-#define C_MUL4(m,a,b) \
- do{ \
- int br__; \
- int bi__; \
- int tt__; \
- __asm__ __volatile__( \
- "#C_MUL4\n\t" \
- "ldrsh %[br], [%[bp], #0]\n\t" \
- "ldm %[ap], {r0,r1}\n\t" \
- "ldrsh %[bi], [%[bp], #2]\n\t" \
- "smull %[tt], %[mi], r1, %[br]\n\t" \
- "smlal %[tt], %[mi], r0, %[bi]\n\t" \
- "rsb %[bi], %[bi], #0\n\t" \
- "smull %[br], %[mr], r0, %[br]\n\t" \
- "mov %[tt], %[tt], lsr #17\n\t" \
- "smlal %[br], %[mr], r1, %[bi]\n\t" \
- "orr %[mi], %[tt], %[mi], lsl #15\n\t" \
- "mov %[br], %[br], lsr #17\n\t" \
- "orr %[mr], %[br], %[mr], lsl #15\n\t" \
- : [mr]"=r"((m).r), [mi]"=r"((m).i), \
- [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
- : [ap]"r"(&(a)), [bp]"r"(&(b)) \
- : "r0", "r1" \
- ); \
- } \
- while(0)
-
-#undef C_MULC
-#define C_MULC(m,a,b) \
- do{ \
- int br__; \
- int bi__; \
- int tt__; \
- __asm__ __volatile__( \
- "#C_MULC\n\t" \
- "ldrsh %[br], [%[bp], #0]\n\t" \
- "ldm %[ap], {r0,r1}\n\t" \
- "ldrsh %[bi], [%[bp], #2]\n\t" \
- "smull %[tt], %[mr], r0, %[br]\n\t" \
- "smlal %[tt], %[mr], r1, %[bi]\n\t" \
- "rsb %[bi], %[bi], #0\n\t" \
- "smull %[br], %[mi], r1, %[br]\n\t" \
- "mov %[tt], %[tt], lsr #15\n\t" \
- "smlal %[br], %[mi], r0, %[bi]\n\t" \
- "orr %[mr], %[tt], %[mr], lsl #17\n\t" \
- "mov %[br], %[br], lsr #15\n\t" \
- "orr %[mi], %[br], %[mi], lsl #17\n\t" \
- : [mr]"=r"((m).r), [mi]"=r"((m).i), \
- [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
- : [ap]"r"(&(a)), [bp]"r"(&(b)) \
- : "r0", "r1" \
- ); \
- } \
- while(0)
-
-#endif /* FIXED_POINT */
-
-#endif /* KISS_FFT_ARMv4_H */
diff --git a/thirdparty/opus/celt/arm/kiss_fft_armv5e.h b/thirdparty/opus/celt/arm/kiss_fft_armv5e.h
deleted file mode 100644
index 9eca183d77..0000000000
--- a/thirdparty/opus/celt/arm/kiss_fft_armv5e.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*Copyright (c) 2013, Xiph.Org Foundation and contributors.
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.*/
-
-#ifndef KISS_FFT_ARMv5E_H
-#define KISS_FFT_ARMv5E_H
-
-#if !defined(KISS_FFT_GUTS_H)
-#error "This file should only be included from _kiss_fft_guts.h"
-#endif
-
-#ifdef FIXED_POINT
-
-#if defined(__thumb__)||defined(__thumb2__)
-#define LDRD_CONS "Q"
-#else
-#define LDRD_CONS "Uq"
-#endif
-
-#undef C_MUL
-#define C_MUL(m,a,b) \
- do{ \
- int mr1__; \
- int mr2__; \
- int mi__; \
- long long aval__; \
- int bval__; \
- __asm__( \
- "#C_MUL\n\t" \
- "ldrd %[aval], %H[aval], %[ap]\n\t" \
- "ldr %[bval], %[bp]\n\t" \
- "smulwb %[mi], %H[aval], %[bval]\n\t" \
- "smulwb %[mr1], %[aval], %[bval]\n\t" \
- "smulwt %[mr2], %H[aval], %[bval]\n\t" \
- "smlawt %[mi], %[aval], %[bval], %[mi]\n\t" \
- : [mr1]"=r"(mr1__), [mr2]"=r"(mr2__), [mi]"=r"(mi__), \
- [aval]"=&r"(aval__), [bval]"=r"(bval__) \
- : [ap]LDRD_CONS(a), [bp]"m"(b) \
- ); \
- (m).r = SHL32(SUB32(mr1__, mr2__), 1); \
- (m).i = SHL32(mi__, 1); \
- } \
- while(0)
-
-#undef C_MUL4
-#define C_MUL4(m,a,b) \
- do{ \
- int mr1__; \
- int mr2__; \
- int mi__; \
- long long aval__; \
- int bval__; \
- __asm__( \
- "#C_MUL4\n\t" \
- "ldrd %[aval], %H[aval], %[ap]\n\t" \
- "ldr %[bval], %[bp]\n\t" \
- "smulwb %[mi], %H[aval], %[bval]\n\t" \
- "smulwb %[mr1], %[aval], %[bval]\n\t" \
- "smulwt %[mr2], %H[aval], %[bval]\n\t" \
- "smlawt %[mi], %[aval], %[bval], %[mi]\n\t" \
- : [mr1]"=r"(mr1__), [mr2]"=r"(mr2__), [mi]"=r"(mi__), \
- [aval]"=&r"(aval__), [bval]"=r"(bval__) \
- : [ap]LDRD_CONS(a), [bp]"m"(b) \
- ); \
- (m).r = SHR32(SUB32(mr1__, mr2__), 1); \
- (m).i = SHR32(mi__, 1); \
- } \
- while(0)
-
-#undef C_MULC
-#define C_MULC(m,a,b) \
- do{ \
- int mr__; \
- int mi1__; \
- int mi2__; \
- long long aval__; \
- int bval__; \
- __asm__( \
- "#C_MULC\n\t" \
- "ldrd %[aval], %H[aval], %[ap]\n\t" \
- "ldr %[bval], %[bp]\n\t" \
- "smulwb %[mr], %[aval], %[bval]\n\t" \
- "smulwb %[mi1], %H[aval], %[bval]\n\t" \
- "smulwt %[mi2], %[aval], %[bval]\n\t" \
- "smlawt %[mr], %H[aval], %[bval], %[mr]\n\t" \
- : [mr]"=r"(mr__), [mi1]"=r"(mi1__), [mi2]"=r"(mi2__), \
- [aval]"=&r"(aval__), [bval]"=r"(bval__) \
- : [ap]LDRD_CONS(a), [bp]"m"(b) \
- ); \
- (m).r = SHL32(mr__, 1); \
- (m).i = SHL32(SUB32(mi1__, mi2__), 1); \
- } \
- while(0)
-
-#endif /* FIXED_POINT */
-
-#endif /* KISS_FFT_GUTS_H */
diff --git a/thirdparty/opus/celt/arm/mdct_arm.h b/thirdparty/opus/celt/arm/mdct_arm.h
deleted file mode 100644
index 49cbb44576..0000000000
--- a/thirdparty/opus/celt/arm/mdct_arm.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (c) 2015 Xiph.Org Foundation
- Written by Viswanath Puttagunta */
-/**
- @file arm_mdct.h
- @brief ARM Neon Intrinsic optimizations for mdct using NE10 library
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if !defined(MDCT_ARM_H)
-#define MDCT_ARM_H
-
-#include "config.h"
-#include "mdct.h"
-
-#if defined(HAVE_ARM_NE10)
-/** Compute a forward MDCT and scale by 4/N, trashes the input array */
-void clt_mdct_forward_neon(const mdct_lookup *l, kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window, int overlap,
- int shift, int stride, int arch);
-
-void clt_mdct_backward_neon(const mdct_lookup *l, kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window, int overlap,
- int shift, int stride, int arch);
-
-#if !defined(OPUS_HAVE_RTCD)
-#define OVERRIDE_OPUS_MDCT (1)
-#define clt_mdct_forward(_l, _in, _out, _window, _int, _shift, _stride, _arch) \
- clt_mdct_forward_neon(_l, _in, _out, _window, _int, _shift, _stride, _arch)
-#define clt_mdct_backward(_l, _in, _out, _window, _int, _shift, _stride, _arch) \
- clt_mdct_backward_neon(_l, _in, _out, _window, _int, _shift, _stride, _arch)
-#endif /* OPUS_HAVE_RTCD */
-#endif /* HAVE_ARM_NE10 */
-
-#endif
diff --git a/thirdparty/opus/celt/arm/pitch_arm.h b/thirdparty/opus/celt/arm/pitch_arm.h
deleted file mode 100644
index 14331169ee..0000000000
--- a/thirdparty/opus/celt/arm/pitch_arm.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Copyright (c) 2010 Xiph.Org Foundation
- * Copyright (c) 2013 Parrot */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if !defined(PITCH_ARM_H)
-# define PITCH_ARM_H
-
-# include "armcpu.h"
-
-# if defined(FIXED_POINT)
-
-# if defined(OPUS_ARM_MAY_HAVE_NEON)
-opus_val32 celt_pitch_xcorr_neon(const opus_val16 *_x, const opus_val16 *_y,
- opus_val32 *xcorr, int len, int max_pitch);
-# endif
-
-# if defined(OPUS_ARM_MAY_HAVE_MEDIA)
-# define celt_pitch_xcorr_media MAY_HAVE_EDSP(celt_pitch_xcorr)
-# endif
-
-# if defined(OPUS_ARM_MAY_HAVE_EDSP)
-opus_val32 celt_pitch_xcorr_edsp(const opus_val16 *_x, const opus_val16 *_y,
- opus_val32 *xcorr, int len, int max_pitch);
-# endif
-
-# if defined(OPUS_HAVE_RTCD) && \
- ((defined(OPUS_ARM_MAY_HAVE_NEON) && !defined(OPUS_ARM_PRESUME_NEON)) || \
- (defined(OPUS_ARM_MAY_HAVE_MEDIA) && !defined(OPUS_ARM_PRESUME_MEDIA)) || \
- (defined(OPUS_ARM_MAY_HAVE_EDSP) && !defined(OPUS_ARM_PRESUME_EDSP)))
-extern opus_val32
-(*const CELT_PITCH_XCORR_IMPL[OPUS_ARCHMASK+1])(const opus_val16 *,
- const opus_val16 *, opus_val32 *, int, int);
-# define OVERRIDE_PITCH_XCORR (1)
-# define celt_pitch_xcorr(_x, _y, xcorr, len, max_pitch, arch) \
- ((*CELT_PITCH_XCORR_IMPL[(arch)&OPUS_ARCHMASK])(_x, _y, \
- xcorr, len, max_pitch))
-
-# elif defined(OPUS_ARM_PRESUME_EDSP) || \
- defined(OPUS_ARM_PRESUME_MEDIA) || \
- defined(OPUS_ARM_PRESUME_NEON)
-# define OVERRIDE_PITCH_XCORR (1)
-# define celt_pitch_xcorr(_x, _y, xcorr, len, max_pitch, arch) \
- ((void)(arch),PRESUME_NEON(celt_pitch_xcorr)(_x, _y, xcorr, len, max_pitch))
-
-# endif
-
-# if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-void xcorr_kernel_neon_fixed(
- const opus_val16 *x,
- const opus_val16 *y,
- opus_val32 sum[4],
- int len);
-# endif
-
-# if defined(OPUS_HAVE_RTCD) && \
- (defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && !defined(OPUS_ARM_PRESUME_NEON_INTR))
-
-extern void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y,
- opus_val32 sum[4],
- int len);
-
-# define OVERRIDE_XCORR_KERNEL (1)
-# define xcorr_kernel(x, y, sum, len, arch) \
- ((*XCORR_KERNEL_IMPL[(arch) & OPUS_ARCHMASK])(x, y, sum, len))
-
-# elif defined(OPUS_ARM_PRESUME_NEON_INTR)
-# define OVERRIDE_XCORR_KERNEL (1)
-# define xcorr_kernel(x, y, sum, len, arch) \
- ((void)arch, xcorr_kernel_neon_fixed(x, y, sum, len))
-
-# endif
-
-#else /* Start !FIXED_POINT */
-/* Float case */
-#if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-void celt_pitch_xcorr_float_neon(const opus_val16 *_x, const opus_val16 *_y,
- opus_val32 *xcorr, int len, int max_pitch);
-#endif
-
-# if defined(OPUS_HAVE_RTCD) && \
- (defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && !defined(OPUS_ARM_PRESUME_NEON_INTR))
-extern void
-(*const CELT_PITCH_XCORR_IMPL[OPUS_ARCHMASK+1])(const opus_val16 *,
- const opus_val16 *, opus_val32 *, int, int);
-
-# define OVERRIDE_PITCH_XCORR (1)
-# define celt_pitch_xcorr(_x, _y, xcorr, len, max_pitch, arch) \
- ((*CELT_PITCH_XCORR_IMPL[(arch)&OPUS_ARCHMASK])(_x, _y, \
- xcorr, len, max_pitch))
-
-# elif defined(OPUS_ARM_PRESUME_NEON_INTR)
-
-# define OVERRIDE_PITCH_XCORR (1)
-# define celt_pitch_xcorr(_x, _y, xcorr, len, max_pitch, arch) \
- ((void)(arch),celt_pitch_xcorr_float_neon(_x, _y, xcorr, len, max_pitch))
-
-# endif
-
-#endif /* end !FIXED_POINT */
-
-#endif
diff --git a/thirdparty/opus/celt/bands.c b/thirdparty/opus/celt/bands.c
deleted file mode 100644
index 87eaa6c031..0000000000
--- a/thirdparty/opus/celt/bands.c
+++ /dev/null
@@ -1,1529 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Copyright (c) 2008-2009 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <math.h>
-#include "bands.h"
-#include "modes.h"
-#include "vq.h"
-#include "cwrs.h"
-#include "stack_alloc.h"
-#include "os_support.h"
-#include "mathops.h"
-#include "rate.h"
-#include "quant_bands.h"
-#include "pitch.h"
-
-int hysteresis_decision(opus_val16 val, const opus_val16 *thresholds, const opus_val16 *hysteresis, int N, int prev)
-{
- int i;
- for (i=0;i<N;i++)
- {
- if (val < thresholds[i])
- break;
- }
- if (i>prev && val < thresholds[prev]+hysteresis[prev])
- i=prev;
- if (i<prev && val > thresholds[prev-1]-hysteresis[prev-1])
- i=prev;
- return i;
-}
-
-opus_uint32 celt_lcg_rand(opus_uint32 seed)
-{
- return 1664525 * seed + 1013904223;
-}
-
-/* This is a cos() approximation designed to be bit-exact on any platform. Bit exactness
- with this approximation is important because it has an impact on the bit allocation */
-static opus_int16 bitexact_cos(opus_int16 x)
-{
- opus_int32 tmp;
- opus_int16 x2;
- tmp = (4096+((opus_int32)(x)*(x)))>>13;
- celt_assert(tmp<=32767);
- x2 = tmp;
- x2 = (32767-x2) + FRAC_MUL16(x2, (-7651 + FRAC_MUL16(x2, (8277 + FRAC_MUL16(-626, x2)))));
- celt_assert(x2<=32766);
- return 1+x2;
-}
-
-static int bitexact_log2tan(int isin,int icos)
-{
- int lc;
- int ls;
- lc=EC_ILOG(icos);
- ls=EC_ILOG(isin);
- icos<<=15-lc;
- isin<<=15-ls;
- return (ls-lc)*(1<<11)
- +FRAC_MUL16(isin, FRAC_MUL16(isin, -2597) + 7932)
- -FRAC_MUL16(icos, FRAC_MUL16(icos, -2597) + 7932);
-}
-
-#ifdef FIXED_POINT
-/* Compute the amplitude (sqrt energy) in each of the bands */
-void compute_band_energies(const CELTMode *m, const celt_sig *X, celt_ener *bandE, int end, int C, int LM)
-{
- int i, c, N;
- const opus_int16 *eBands = m->eBands;
- N = m->shortMdctSize<<LM;
- c=0; do {
- for (i=0;i<end;i++)
- {
- int j;
- opus_val32 maxval=0;
- opus_val32 sum = 0;
-
- maxval = celt_maxabs32(&X[c*N+(eBands[i]<<LM)], (eBands[i+1]-eBands[i])<<LM);
- if (maxval > 0)
- {
- int shift = celt_ilog2(maxval) - 14 + (((m->logN[i]>>BITRES)+LM+1)>>1);
- j=eBands[i]<<LM;
- if (shift>0)
- {
- do {
- sum = MAC16_16(sum, EXTRACT16(SHR32(X[j+c*N],shift)),
- EXTRACT16(SHR32(X[j+c*N],shift)));
- } while (++j<eBands[i+1]<<LM);
- } else {
- do {
- sum = MAC16_16(sum, EXTRACT16(SHL32(X[j+c*N],-shift)),
- EXTRACT16(SHL32(X[j+c*N],-shift)));
- } while (++j<eBands[i+1]<<LM);
- }
- /* We're adding one here to ensure the normalized band isn't larger than unity norm */
- bandE[i+c*m->nbEBands] = EPSILON+VSHR32(EXTEND32(celt_sqrt(sum)),-shift);
- } else {
- bandE[i+c*m->nbEBands] = EPSILON;
- }
- /*printf ("%f ", bandE[i+c*m->nbEBands]);*/
- }
- } while (++c<C);
- /*printf ("\n");*/
-}
-
-/* Normalise each band such that the energy is one. */
-void normalise_bands(const CELTMode *m, const celt_sig * OPUS_RESTRICT freq, celt_norm * OPUS_RESTRICT X, const celt_ener *bandE, int end, int C, int M)
-{
- int i, c, N;
- const opus_int16 *eBands = m->eBands;
- N = M*m->shortMdctSize;
- c=0; do {
- i=0; do {
- opus_val16 g;
- int j,shift;
- opus_val16 E;
- shift = celt_zlog2(bandE[i+c*m->nbEBands])-13;
- E = VSHR32(bandE[i+c*m->nbEBands], shift);
- g = EXTRACT16(celt_rcp(SHL32(E,3)));
- j=M*eBands[i]; do {
- X[j+c*N] = MULT16_16_Q15(VSHR32(freq[j+c*N],shift-1),g);
- } while (++j<M*eBands[i+1]);
- } while (++i<end);
- } while (++c<C);
-}
-
-#else /* FIXED_POINT */
-/* Compute the amplitude (sqrt energy) in each of the bands */
-void compute_band_energies(const CELTMode *m, const celt_sig *X, celt_ener *bandE, int end, int C, int LM)
-{
- int i, c, N;
- const opus_int16 *eBands = m->eBands;
- N = m->shortMdctSize<<LM;
- c=0; do {
- for (i=0;i<end;i++)
- {
- opus_val32 sum;
- sum = 1e-27f + celt_inner_prod_c(&X[c*N+(eBands[i]<<LM)], &X[c*N+(eBands[i]<<LM)], (eBands[i+1]-eBands[i])<<LM);
- bandE[i+c*m->nbEBands] = celt_sqrt(sum);
- /*printf ("%f ", bandE[i+c*m->nbEBands]);*/
- }
- } while (++c<C);
- /*printf ("\n");*/
-}
-
-/* Normalise each band such that the energy is one. */
-void normalise_bands(const CELTMode *m, const celt_sig * OPUS_RESTRICT freq, celt_norm * OPUS_RESTRICT X, const celt_ener *bandE, int end, int C, int M)
-{
- int i, c, N;
- const opus_int16 *eBands = m->eBands;
- N = M*m->shortMdctSize;
- c=0; do {
- for (i=0;i<end;i++)
- {
- int j;
- opus_val16 g = 1.f/(1e-27f+bandE[i+c*m->nbEBands]);
- for (j=M*eBands[i];j<M*eBands[i+1];j++)
- X[j+c*N] = freq[j+c*N]*g;
- }
- } while (++c<C);
-}
-
-#endif /* FIXED_POINT */
-
-/* De-normalise the energy to produce the synthesis from the unit-energy bands */
-void denormalise_bands(const CELTMode *m, const celt_norm * OPUS_RESTRICT X,
- celt_sig * OPUS_RESTRICT freq, const opus_val16 *bandLogE, int start,
- int end, int M, int downsample, int silence)
-{
- int i, N;
- int bound;
- celt_sig * OPUS_RESTRICT f;
- const celt_norm * OPUS_RESTRICT x;
- const opus_int16 *eBands = m->eBands;
- N = M*m->shortMdctSize;
- bound = M*eBands[end];
- if (downsample!=1)
- bound = IMIN(bound, N/downsample);
- if (silence)
- {
- bound = 0;
- start = end = 0;
- }
- f = freq;
- x = X+M*eBands[start];
- for (i=0;i<M*eBands[start];i++)
- *f++ = 0;
- for (i=start;i<end;i++)
- {
- int j, band_end;
- opus_val16 g;
- opus_val16 lg;
-#ifdef FIXED_POINT
- int shift;
-#endif
- j=M*eBands[i];
- band_end = M*eBands[i+1];
- lg = ADD16(bandLogE[i], SHL16((opus_val16)eMeans[i],6));
-#ifndef FIXED_POINT
- g = celt_exp2(lg);
-#else
- /* Handle the integer part of the log energy */
- shift = 16-(lg>>DB_SHIFT);
- if (shift>31)
- {
- shift=0;
- g=0;
- } else {
- /* Handle the fractional part. */
- g = celt_exp2_frac(lg&((1<<DB_SHIFT)-1));
- }
- /* Handle extreme gains with negative shift. */
- if (shift<0)
- {
- /* For shift < -2 we'd be likely to overflow, so we're capping
- the gain here. This shouldn't happen unless the bitstream is
- already corrupted. */
- if (shift < -2)
- {
- g = 32767;
- shift = -2;
- }
- do {
- *f++ = SHL32(MULT16_16(*x++, g), -shift);
- } while (++j<band_end);
- } else
-#endif
- /* Be careful of the fixed-point "else" just above when changing this code */
- do {
- *f++ = SHR32(MULT16_16(*x++, g), shift);
- } while (++j<band_end);
- }
- celt_assert(start <= end);
- OPUS_CLEAR(&freq[bound], N-bound);
-}
-
-/* This prevents energy collapse for transients with multiple short MDCTs */
-void anti_collapse(const CELTMode *m, celt_norm *X_, unsigned char *collapse_masks, int LM, int C, int size,
- int start, int end, const opus_val16 *logE, const opus_val16 *prev1logE,
- const opus_val16 *prev2logE, const int *pulses, opus_uint32 seed, int arch)
-{
- int c, i, j, k;
- for (i=start;i<end;i++)
- {
- int N0;
- opus_val16 thresh, sqrt_1;
- int depth;
-#ifdef FIXED_POINT
- int shift;
- opus_val32 thresh32;
-#endif
-
- N0 = m->eBands[i+1]-m->eBands[i];
- /* depth in 1/8 bits */
- celt_assert(pulses[i]>=0);
- depth = celt_udiv(1+pulses[i], (m->eBands[i+1]-m->eBands[i]))>>LM;
-
-#ifdef FIXED_POINT
- thresh32 = SHR32(celt_exp2(-SHL16(depth, 10-BITRES)),1);
- thresh = MULT16_32_Q15(QCONST16(0.5f, 15), MIN32(32767,thresh32));
- {
- opus_val32 t;
- t = N0<<LM;
- shift = celt_ilog2(t)>>1;
- t = SHL32(t, (7-shift)<<1);
- sqrt_1 = celt_rsqrt_norm(t);
- }
-#else
- thresh = .5f*celt_exp2(-.125f*depth);
- sqrt_1 = celt_rsqrt(N0<<LM);
-#endif
-
- c=0; do
- {
- celt_norm *X;
- opus_val16 prev1;
- opus_val16 prev2;
- opus_val32 Ediff;
- opus_val16 r;
- int renormalize=0;
- prev1 = prev1logE[c*m->nbEBands+i];
- prev2 = prev2logE[c*m->nbEBands+i];
- if (C==1)
- {
- prev1 = MAX16(prev1,prev1logE[m->nbEBands+i]);
- prev2 = MAX16(prev2,prev2logE[m->nbEBands+i]);
- }
- Ediff = EXTEND32(logE[c*m->nbEBands+i])-EXTEND32(MIN16(prev1,prev2));
- Ediff = MAX32(0, Ediff);
-
-#ifdef FIXED_POINT
- if (Ediff < 16384)
- {
- opus_val32 r32 = SHR32(celt_exp2(-EXTRACT16(Ediff)),1);
- r = 2*MIN16(16383,r32);
- } else {
- r = 0;
- }
- if (LM==3)
- r = MULT16_16_Q14(23170, MIN32(23169, r));
- r = SHR16(MIN16(thresh, r),1);
- r = SHR32(MULT16_16_Q15(sqrt_1, r),shift);
-#else
- /* r needs to be multiplied by 2 or 2*sqrt(2) depending on LM because
- short blocks don't have the same energy as long */
- r = 2.f*celt_exp2(-Ediff);
- if (LM==3)
- r *= 1.41421356f;
- r = MIN16(thresh, r);
- r = r*sqrt_1;
-#endif
- X = X_+c*size+(m->eBands[i]<<LM);
- for (k=0;k<1<<LM;k++)
- {
- /* Detect collapse */
- if (!(collapse_masks[i*C+c]&1<<k))
- {
- /* Fill with noise */
- for (j=0;j<N0;j++)
- {
- seed = celt_lcg_rand(seed);
- X[(j<<LM)+k] = (seed&0x8000 ? r : -r);
- }
- renormalize = 1;
- }
- }
- /* We just added some energy, so we need to renormalise */
- if (renormalize)
- renormalise_vector(X, N0<<LM, Q15ONE, arch);
- } while (++c<C);
- }
-}
-
-static void intensity_stereo(const CELTMode *m, celt_norm * OPUS_RESTRICT X, const celt_norm * OPUS_RESTRICT Y, const celt_ener *bandE, int bandID, int N)
-{
- int i = bandID;
- int j;
- opus_val16 a1, a2;
- opus_val16 left, right;
- opus_val16 norm;
-#ifdef FIXED_POINT
- int shift = celt_zlog2(MAX32(bandE[i], bandE[i+m->nbEBands]))-13;
-#endif
- left = VSHR32(bandE[i],shift);
- right = VSHR32(bandE[i+m->nbEBands],shift);
- norm = EPSILON + celt_sqrt(EPSILON+MULT16_16(left,left)+MULT16_16(right,right));
- a1 = DIV32_16(SHL32(EXTEND32(left),14),norm);
- a2 = DIV32_16(SHL32(EXTEND32(right),14),norm);
- for (j=0;j<N;j++)
- {
- celt_norm r, l;
- l = X[j];
- r = Y[j];
- X[j] = EXTRACT16(SHR32(MAC16_16(MULT16_16(a1, l), a2, r), 14));
- /* Side is not encoded, no need to calculate */
- }
-}
-
-static void stereo_split(celt_norm * OPUS_RESTRICT X, celt_norm * OPUS_RESTRICT Y, int N)
-{
- int j;
- for (j=0;j<N;j++)
- {
- opus_val32 r, l;
- l = MULT16_16(QCONST16(.70710678f, 15), X[j]);
- r = MULT16_16(QCONST16(.70710678f, 15), Y[j]);
- X[j] = EXTRACT16(SHR32(ADD32(l, r), 15));
- Y[j] = EXTRACT16(SHR32(SUB32(r, l), 15));
- }
-}
-
-static void stereo_merge(celt_norm * OPUS_RESTRICT X, celt_norm * OPUS_RESTRICT Y, opus_val16 mid, int N, int arch)
-{
- int j;
- opus_val32 xp=0, side=0;
- opus_val32 El, Er;
- opus_val16 mid2;
-#ifdef FIXED_POINT
- int kl, kr;
-#endif
- opus_val32 t, lgain, rgain;
-
- /* Compute the norm of X+Y and X-Y as |X|^2 + |Y|^2 +/- sum(xy) */
- dual_inner_prod(Y, X, Y, N, &xp, &side, arch);
- /* Compensating for the mid normalization */
- xp = MULT16_32_Q15(mid, xp);
- /* mid and side are in Q15, not Q14 like X and Y */
- mid2 = SHR16(mid, 1);
- El = MULT16_16(mid2, mid2) + side - 2*xp;
- Er = MULT16_16(mid2, mid2) + side + 2*xp;
- if (Er < QCONST32(6e-4f, 28) || El < QCONST32(6e-4f, 28))
- {
- OPUS_COPY(Y, X, N);
- return;
- }
-
-#ifdef FIXED_POINT
- kl = celt_ilog2(El)>>1;
- kr = celt_ilog2(Er)>>1;
-#endif
- t = VSHR32(El, (kl-7)<<1);
- lgain = celt_rsqrt_norm(t);
- t = VSHR32(Er, (kr-7)<<1);
- rgain = celt_rsqrt_norm(t);
-
-#ifdef FIXED_POINT
- if (kl < 7)
- kl = 7;
- if (kr < 7)
- kr = 7;
-#endif
-
- for (j=0;j<N;j++)
- {
- celt_norm r, l;
- /* Apply mid scaling (side is already scaled) */
- l = MULT16_16_P15(mid, X[j]);
- r = Y[j];
- X[j] = EXTRACT16(PSHR32(MULT16_16(lgain, SUB16(l,r)), kl+1));
- Y[j] = EXTRACT16(PSHR32(MULT16_16(rgain, ADD16(l,r)), kr+1));
- }
-}
-
-/* Decide whether we should spread the pulses in the current frame */
-int spreading_decision(const CELTMode *m, const celt_norm *X, int *average,
- int last_decision, int *hf_average, int *tapset_decision, int update_hf,
- int end, int C, int M)
-{
- int i, c, N0;
- int sum = 0, nbBands=0;
- const opus_int16 * OPUS_RESTRICT eBands = m->eBands;
- int decision;
- int hf_sum=0;
-
- celt_assert(end>0);
-
- N0 = M*m->shortMdctSize;
-
- if (M*(eBands[end]-eBands[end-1]) <= 8)
- return SPREAD_NONE;
- c=0; do {
- for (i=0;i<end;i++)
- {
- int j, N, tmp=0;
- int tcount[3] = {0,0,0};
- const celt_norm * OPUS_RESTRICT x = X+M*eBands[i]+c*N0;
- N = M*(eBands[i+1]-eBands[i]);
- if (N<=8)
- continue;
- /* Compute rough CDF of |x[j]| */
- for (j=0;j<N;j++)
- {
- opus_val32 x2N; /* Q13 */
-
- x2N = MULT16_16(MULT16_16_Q15(x[j], x[j]), N);
- if (x2N < QCONST16(0.25f,13))
- tcount[0]++;
- if (x2N < QCONST16(0.0625f,13))
- tcount[1]++;
- if (x2N < QCONST16(0.015625f,13))
- tcount[2]++;
- }
-
- /* Only include four last bands (8 kHz and up) */
- if (i>m->nbEBands-4)
- hf_sum += celt_udiv(32*(tcount[1]+tcount[0]), N);
- tmp = (2*tcount[2] >= N) + (2*tcount[1] >= N) + (2*tcount[0] >= N);
- sum += tmp*256;
- nbBands++;
- }
- } while (++c<C);
-
- if (update_hf)
- {
- if (hf_sum)
- hf_sum = celt_udiv(hf_sum, C*(4-m->nbEBands+end));
- *hf_average = (*hf_average+hf_sum)>>1;
- hf_sum = *hf_average;
- if (*tapset_decision==2)
- hf_sum += 4;
- else if (*tapset_decision==0)
- hf_sum -= 4;
- if (hf_sum > 22)
- *tapset_decision=2;
- else if (hf_sum > 18)
- *tapset_decision=1;
- else
- *tapset_decision=0;
- }
- /*printf("%d %d %d\n", hf_sum, *hf_average, *tapset_decision);*/
- celt_assert(nbBands>0); /* end has to be non-zero */
- celt_assert(sum>=0);
- sum = celt_udiv(sum, nbBands);
- /* Recursive averaging */
- sum = (sum+*average)>>1;
- *average = sum;
- /* Hysteresis */
- sum = (3*sum + (((3-last_decision)<<7) + 64) + 2)>>2;
- if (sum < 80)
- {
- decision = SPREAD_AGGRESSIVE;
- } else if (sum < 256)
- {
- decision = SPREAD_NORMAL;
- } else if (sum < 384)
- {
- decision = SPREAD_LIGHT;
- } else {
- decision = SPREAD_NONE;
- }
-#ifdef FUZZING
- decision = rand()&0x3;
- *tapset_decision=rand()%3;
-#endif
- return decision;
-}
-
-/* Indexing table for converting from natural Hadamard to ordery Hadamard
- This is essentially a bit-reversed Gray, on top of which we've added
- an inversion of the order because we want the DC at the end rather than
- the beginning. The lines are for N=2, 4, 8, 16 */
-static const int ordery_table[] = {
- 1, 0,
- 3, 0, 2, 1,
- 7, 0, 4, 3, 6, 1, 5, 2,
- 15, 0, 8, 7, 12, 3, 11, 4, 14, 1, 9, 6, 13, 2, 10, 5,
-};
-
-static void deinterleave_hadamard(celt_norm *X, int N0, int stride, int hadamard)
-{
- int i,j;
- VARDECL(celt_norm, tmp);
- int N;
- SAVE_STACK;
- N = N0*stride;
- ALLOC(tmp, N, celt_norm);
- celt_assert(stride>0);
- if (hadamard)
- {
- const int *ordery = ordery_table+stride-2;
- for (i=0;i<stride;i++)
- {
- for (j=0;j<N0;j++)
- tmp[ordery[i]*N0+j] = X[j*stride+i];
- }
- } else {
- for (i=0;i<stride;i++)
- for (j=0;j<N0;j++)
- tmp[i*N0+j] = X[j*stride+i];
- }
- OPUS_COPY(X, tmp, N);
- RESTORE_STACK;
-}
-
-static void interleave_hadamard(celt_norm *X, int N0, int stride, int hadamard)
-{
- int i,j;
- VARDECL(celt_norm, tmp);
- int N;
- SAVE_STACK;
- N = N0*stride;
- ALLOC(tmp, N, celt_norm);
- if (hadamard)
- {
- const int *ordery = ordery_table+stride-2;
- for (i=0;i<stride;i++)
- for (j=0;j<N0;j++)
- tmp[j*stride+i] = X[ordery[i]*N0+j];
- } else {
- for (i=0;i<stride;i++)
- for (j=0;j<N0;j++)
- tmp[j*stride+i] = X[i*N0+j];
- }
- OPUS_COPY(X, tmp, N);
- RESTORE_STACK;
-}
-
-void haar1(celt_norm *X, int N0, int stride)
-{
- int i, j;
- N0 >>= 1;
- for (i=0;i<stride;i++)
- for (j=0;j<N0;j++)
- {
- opus_val32 tmp1, tmp2;
- tmp1 = MULT16_16(QCONST16(.70710678f,15), X[stride*2*j+i]);
- tmp2 = MULT16_16(QCONST16(.70710678f,15), X[stride*(2*j+1)+i]);
- X[stride*2*j+i] = EXTRACT16(PSHR32(ADD32(tmp1, tmp2), 15));
- X[stride*(2*j+1)+i] = EXTRACT16(PSHR32(SUB32(tmp1, tmp2), 15));
- }
-}
-
-static int compute_qn(int N, int b, int offset, int pulse_cap, int stereo)
-{
- static const opus_int16 exp2_table8[8] =
- {16384, 17866, 19483, 21247, 23170, 25267, 27554, 30048};
- int qn, qb;
- int N2 = 2*N-1;
- if (stereo && N==2)
- N2--;
- /* The upper limit ensures that in a stereo split with itheta==16384, we'll
- always have enough bits left over to code at least one pulse in the
- side; otherwise it would collapse, since it doesn't get folded. */
- qb = celt_sudiv(b+N2*offset, N2);
- qb = IMIN(b-pulse_cap-(4<<BITRES), qb);
-
- qb = IMIN(8<<BITRES, qb);
-
- if (qb<(1<<BITRES>>1)) {
- qn = 1;
- } else {
- qn = exp2_table8[qb&0x7]>>(14-(qb>>BITRES));
- qn = (qn+1)>>1<<1;
- }
- celt_assert(qn <= 256);
- return qn;
-}
-
-struct band_ctx {
- int encode;
- const CELTMode *m;
- int i;
- int intensity;
- int spread;
- int tf_change;
- ec_ctx *ec;
- opus_int32 remaining_bits;
- const celt_ener *bandE;
- opus_uint32 seed;
- int arch;
-};
-
-struct split_ctx {
- int inv;
- int imid;
- int iside;
- int delta;
- int itheta;
- int qalloc;
-};
-
-static void compute_theta(struct band_ctx *ctx, struct split_ctx *sctx,
- celt_norm *X, celt_norm *Y, int N, int *b, int B, int B0,
- int LM,
- int stereo, int *fill)
-{
- int qn;
- int itheta=0;
- int delta;
- int imid, iside;
- int qalloc;
- int pulse_cap;
- int offset;
- opus_int32 tell;
- int inv=0;
- int encode;
- const CELTMode *m;
- int i;
- int intensity;
- ec_ctx *ec;
- const celt_ener *bandE;
-
- encode = ctx->encode;
- m = ctx->m;
- i = ctx->i;
- intensity = ctx->intensity;
- ec = ctx->ec;
- bandE = ctx->bandE;
-
- /* Decide on the resolution to give to the split parameter theta */
- pulse_cap = m->logN[i]+LM*(1<<BITRES);
- offset = (pulse_cap>>1) - (stereo&&N==2 ? QTHETA_OFFSET_TWOPHASE : QTHETA_OFFSET);
- qn = compute_qn(N, *b, offset, pulse_cap, stereo);
- if (stereo && i>=intensity)
- qn = 1;
- if (encode)
- {
- /* theta is the atan() of the ratio between the (normalized)
- side and mid. With just that parameter, we can re-scale both
- mid and side because we know that 1) they have unit norm and
- 2) they are orthogonal. */
- itheta = stereo_itheta(X, Y, stereo, N, ctx->arch);
- }
- tell = ec_tell_frac(ec);
- if (qn!=1)
- {
- if (encode)
- itheta = (itheta*(opus_int32)qn+8192)>>14;
-
- /* Entropy coding of the angle. We use a uniform pdf for the
- time split, a step for stereo, and a triangular one for the rest. */
- if (stereo && N>2)
- {
- int p0 = 3;
- int x = itheta;
- int x0 = qn/2;
- int ft = p0*(x0+1) + x0;
- /* Use a probability of p0 up to itheta=8192 and then use 1 after */
- if (encode)
- {
- ec_encode(ec,x<=x0?p0*x:(x-1-x0)+(x0+1)*p0,x<=x0?p0*(x+1):(x-x0)+(x0+1)*p0,ft);
- } else {
- int fs;
- fs=ec_decode(ec,ft);
- if (fs<(x0+1)*p0)
- x=fs/p0;
- else
- x=x0+1+(fs-(x0+1)*p0);
- ec_dec_update(ec,x<=x0?p0*x:(x-1-x0)+(x0+1)*p0,x<=x0?p0*(x+1):(x-x0)+(x0+1)*p0,ft);
- itheta = x;
- }
- } else if (B0>1 || stereo) {
- /* Uniform pdf */
- if (encode)
- ec_enc_uint(ec, itheta, qn+1);
- else
- itheta = ec_dec_uint(ec, qn+1);
- } else {
- int fs=1, ft;
- ft = ((qn>>1)+1)*((qn>>1)+1);
- if (encode)
- {
- int fl;
-
- fs = itheta <= (qn>>1) ? itheta + 1 : qn + 1 - itheta;
- fl = itheta <= (qn>>1) ? itheta*(itheta + 1)>>1 :
- ft - ((qn + 1 - itheta)*(qn + 2 - itheta)>>1);
-
- ec_encode(ec, fl, fl+fs, ft);
- } else {
- /* Triangular pdf */
- int fl=0;
- int fm;
- fm = ec_decode(ec, ft);
-
- if (fm < ((qn>>1)*((qn>>1) + 1)>>1))
- {
- itheta = (isqrt32(8*(opus_uint32)fm + 1) - 1)>>1;
- fs = itheta + 1;
- fl = itheta*(itheta + 1)>>1;
- }
- else
- {
- itheta = (2*(qn + 1)
- - isqrt32(8*(opus_uint32)(ft - fm - 1) + 1))>>1;
- fs = qn + 1 - itheta;
- fl = ft - ((qn + 1 - itheta)*(qn + 2 - itheta)>>1);
- }
-
- ec_dec_update(ec, fl, fl+fs, ft);
- }
- }
- celt_assert(itheta>=0);
- itheta = celt_udiv((opus_int32)itheta*16384, qn);
- if (encode && stereo)
- {
- if (itheta==0)
- intensity_stereo(m, X, Y, bandE, i, N);
- else
- stereo_split(X, Y, N);
- }
- /* NOTE: Renormalising X and Y *may* help fixed-point a bit at very high rate.
- Let's do that at higher complexity */
- } else if (stereo) {
- if (encode)
- {
- inv = itheta > 8192;
- if (inv)
- {
- int j;
- for (j=0;j<N;j++)
- Y[j] = -Y[j];
- }
- intensity_stereo(m, X, Y, bandE, i, N);
- }
- if (*b>2<<BITRES && ctx->remaining_bits > 2<<BITRES)
- {
- if (encode)
- ec_enc_bit_logp(ec, inv, 2);
- else
- inv = ec_dec_bit_logp(ec, 2);
- } else
- inv = 0;
- itheta = 0;
- }
- qalloc = ec_tell_frac(ec) - tell;
- *b -= qalloc;
-
- if (itheta == 0)
- {
- imid = 32767;
- iside = 0;
- *fill &= (1<<B)-1;
- delta = -16384;
- } else if (itheta == 16384)
- {
- imid = 0;
- iside = 32767;
- *fill &= ((1<<B)-1)<<B;
- delta = 16384;
- } else {
- imid = bitexact_cos((opus_int16)itheta);
- iside = bitexact_cos((opus_int16)(16384-itheta));
- /* This is the mid vs side allocation that minimizes squared error
- in that band. */
- delta = FRAC_MUL16((N-1)<<7,bitexact_log2tan(iside,imid));
- }
-
- sctx->inv = inv;
- sctx->imid = imid;
- sctx->iside = iside;
- sctx->delta = delta;
- sctx->itheta = itheta;
- sctx->qalloc = qalloc;
-}
-static unsigned quant_band_n1(struct band_ctx *ctx, celt_norm *X, celt_norm *Y, int b,
- celt_norm *lowband_out)
-{
-#ifdef RESYNTH
- int resynth = 1;
-#else
- int resynth = !ctx->encode;
-#endif
- int c;
- int stereo;
- celt_norm *x = X;
- int encode;
- ec_ctx *ec;
-
- encode = ctx->encode;
- ec = ctx->ec;
-
- stereo = Y != NULL;
- c=0; do {
- int sign=0;
- if (ctx->remaining_bits>=1<<BITRES)
- {
- if (encode)
- {
- sign = x[0]<0;
- ec_enc_bits(ec, sign, 1);
- } else {
- sign = ec_dec_bits(ec, 1);
- }
- ctx->remaining_bits -= 1<<BITRES;
- b-=1<<BITRES;
- }
- if (resynth)
- x[0] = sign ? -NORM_SCALING : NORM_SCALING;
- x = Y;
- } while (++c<1+stereo);
- if (lowband_out)
- lowband_out[0] = SHR16(X[0],4);
- return 1;
-}
-
-/* This function is responsible for encoding and decoding a mono partition.
- It can split the band in two and transmit the energy difference with
- the two half-bands. It can be called recursively so bands can end up being
- split in 8 parts. */
-static unsigned quant_partition(struct band_ctx *ctx, celt_norm *X,
- int N, int b, int B, celt_norm *lowband,
- int LM,
- opus_val16 gain, int fill)
-{
- const unsigned char *cache;
- int q;
- int curr_bits;
- int imid=0, iside=0;
- int B0=B;
- opus_val16 mid=0, side=0;
- unsigned cm=0;
-#ifdef RESYNTH
- int resynth = 1;
-#else
- int resynth = !ctx->encode;
-#endif
- celt_norm *Y=NULL;
- int encode;
- const CELTMode *m;
- int i;
- int spread;
- ec_ctx *ec;
-
- encode = ctx->encode;
- m = ctx->m;
- i = ctx->i;
- spread = ctx->spread;
- ec = ctx->ec;
-
- /* If we need 1.5 more bit than we can produce, split the band in two. */
- cache = m->cache.bits + m->cache.index[(LM+1)*m->nbEBands+i];
- if (LM != -1 && b > cache[cache[0]]+12 && N>2)
- {
- int mbits, sbits, delta;
- int itheta;
- int qalloc;
- struct split_ctx sctx;
- celt_norm *next_lowband2=NULL;
- opus_int32 rebalance;
-
- N >>= 1;
- Y = X+N;
- LM -= 1;
- if (B==1)
- fill = (fill&1)|(fill<<1);
- B = (B+1)>>1;
-
- compute_theta(ctx, &sctx, X, Y, N, &b, B, B0,
- LM, 0, &fill);
- imid = sctx.imid;
- iside = sctx.iside;
- delta = sctx.delta;
- itheta = sctx.itheta;
- qalloc = sctx.qalloc;
-#ifdef FIXED_POINT
- mid = imid;
- side = iside;
-#else
- mid = (1.f/32768)*imid;
- side = (1.f/32768)*iside;
-#endif
-
- /* Give more bits to low-energy MDCTs than they would otherwise deserve */
- if (B0>1 && (itheta&0x3fff))
- {
- if (itheta > 8192)
- /* Rough approximation for pre-echo masking */
- delta -= delta>>(4-LM);
- else
- /* Corresponds to a forward-masking slope of 1.5 dB per 10 ms */
- delta = IMIN(0, delta + (N<<BITRES>>(5-LM)));
- }
- mbits = IMAX(0, IMIN(b, (b-delta)/2));
- sbits = b-mbits;
- ctx->remaining_bits -= qalloc;
-
- if (lowband)
- next_lowband2 = lowband+N; /* >32-bit split case */
-
- rebalance = ctx->remaining_bits;
- if (mbits >= sbits)
- {
- cm = quant_partition(ctx, X, N, mbits, B,
- lowband, LM,
- MULT16_16_P15(gain,mid), fill);
- rebalance = mbits - (rebalance-ctx->remaining_bits);
- if (rebalance > 3<<BITRES && itheta!=0)
- sbits += rebalance - (3<<BITRES);
- cm |= quant_partition(ctx, Y, N, sbits, B,
- next_lowband2, LM,
- MULT16_16_P15(gain,side), fill>>B)<<(B0>>1);
- } else {
- cm = quant_partition(ctx, Y, N, sbits, B,
- next_lowband2, LM,
- MULT16_16_P15(gain,side), fill>>B)<<(B0>>1);
- rebalance = sbits - (rebalance-ctx->remaining_bits);
- if (rebalance > 3<<BITRES && itheta!=16384)
- mbits += rebalance - (3<<BITRES);
- cm |= quant_partition(ctx, X, N, mbits, B,
- lowband, LM,
- MULT16_16_P15(gain,mid), fill);
- }
- } else {
- /* This is the basic no-split case */
- q = bits2pulses(m, i, LM, b);
- curr_bits = pulses2bits(m, i, LM, q);
- ctx->remaining_bits -= curr_bits;
-
- /* Ensures we can never bust the budget */
- while (ctx->remaining_bits < 0 && q > 0)
- {
- ctx->remaining_bits += curr_bits;
- q--;
- curr_bits = pulses2bits(m, i, LM, q);
- ctx->remaining_bits -= curr_bits;
- }
-
- if (q!=0)
- {
- int K = get_pulses(q);
-
- /* Finally do the actual quantization */
- if (encode)
- {
- cm = alg_quant(X, N, K, spread, B, ec
-#ifdef RESYNTH
- , gain
-#endif
- );
- } else {
- cm = alg_unquant(X, N, K, spread, B, ec, gain);
- }
- } else {
- /* If there's no pulse, fill the band anyway */
- int j;
- if (resynth)
- {
- unsigned cm_mask;
- /* B can be as large as 16, so this shift might overflow an int on a
- 16-bit platform; use a long to get defined behavior.*/
- cm_mask = (unsigned)(1UL<<B)-1;
- fill &= cm_mask;
- if (!fill)
- {
- OPUS_CLEAR(X, N);
- } else {
- if (lowband == NULL)
- {
- /* Noise */
- for (j=0;j<N;j++)
- {
- ctx->seed = celt_lcg_rand(ctx->seed);
- X[j] = (celt_norm)((opus_int32)ctx->seed>>20);
- }
- cm = cm_mask;
- } else {
- /* Folded spectrum */
- for (j=0;j<N;j++)
- {
- opus_val16 tmp;
- ctx->seed = celt_lcg_rand(ctx->seed);
- /* About 48 dB below the "normal" folding level */
- tmp = QCONST16(1.0f/256, 10);
- tmp = (ctx->seed)&0x8000 ? tmp : -tmp;
- X[j] = lowband[j]+tmp;
- }
- cm = fill;
- }
- renormalise_vector(X, N, gain, ctx->arch);
- }
- }
- }
- }
-
- return cm;
-}
-
-
-/* This function is responsible for encoding and decoding a band for the mono case. */
-static unsigned quant_band(struct band_ctx *ctx, celt_norm *X,
- int N, int b, int B, celt_norm *lowband,
- int LM, celt_norm *lowband_out,
- opus_val16 gain, celt_norm *lowband_scratch, int fill)
-{
- int N0=N;
- int N_B=N;
- int N_B0;
- int B0=B;
- int time_divide=0;
- int recombine=0;
- int longBlocks;
- unsigned cm=0;
-#ifdef RESYNTH
- int resynth = 1;
-#else
- int resynth = !ctx->encode;
-#endif
- int k;
- int encode;
- int tf_change;
-
- encode = ctx->encode;
- tf_change = ctx->tf_change;
-
- longBlocks = B0==1;
-
- N_B = celt_udiv(N_B, B);
-
- /* Special case for one sample */
- if (N==1)
- {
- return quant_band_n1(ctx, X, NULL, b, lowband_out);
- }
-
- if (tf_change>0)
- recombine = tf_change;
- /* Band recombining to increase frequency resolution */
-
- if (lowband_scratch && lowband && (recombine || ((N_B&1) == 0 && tf_change<0) || B0>1))
- {
- OPUS_COPY(lowband_scratch, lowband, N);
- lowband = lowband_scratch;
- }
-
- for (k=0;k<recombine;k++)
- {
- static const unsigned char bit_interleave_table[16]={
- 0,1,1,1,2,3,3,3,2,3,3,3,2,3,3,3
- };
- if (encode)
- haar1(X, N>>k, 1<<k);
- if (lowband)
- haar1(lowband, N>>k, 1<<k);
- fill = bit_interleave_table[fill&0xF]|bit_interleave_table[fill>>4]<<2;
- }
- B>>=recombine;
- N_B<<=recombine;
-
- /* Increasing the time resolution */
- while ((N_B&1) == 0 && tf_change<0)
- {
- if (encode)
- haar1(X, N_B, B);
- if (lowband)
- haar1(lowband, N_B, B);
- fill |= fill<<B;
- B <<= 1;
- N_B >>= 1;
- time_divide++;
- tf_change++;
- }
- B0=B;
- N_B0 = N_B;
-
- /* Reorganize the samples in time order instead of frequency order */
- if (B0>1)
- {
- if (encode)
- deinterleave_hadamard(X, N_B>>recombine, B0<<recombine, longBlocks);
- if (lowband)
- deinterleave_hadamard(lowband, N_B>>recombine, B0<<recombine, longBlocks);
- }
-
- cm = quant_partition(ctx, X, N, b, B, lowband,
- LM, gain, fill);
-
- /* This code is used by the decoder and by the resynthesis-enabled encoder */
- if (resynth)
- {
- /* Undo the sample reorganization going from time order to frequency order */
- if (B0>1)
- interleave_hadamard(X, N_B>>recombine, B0<<recombine, longBlocks);
-
- /* Undo time-freq changes that we did earlier */
- N_B = N_B0;
- B = B0;
- for (k=0;k<time_divide;k++)
- {
- B >>= 1;
- N_B <<= 1;
- cm |= cm>>B;
- haar1(X, N_B, B);
- }
-
- for (k=0;k<recombine;k++)
- {
- static const unsigned char bit_deinterleave_table[16]={
- 0x00,0x03,0x0C,0x0F,0x30,0x33,0x3C,0x3F,
- 0xC0,0xC3,0xCC,0xCF,0xF0,0xF3,0xFC,0xFF
- };
- cm = bit_deinterleave_table[cm];
- haar1(X, N0>>k, 1<<k);
- }
- B<<=recombine;
-
- /* Scale output for later folding */
- if (lowband_out)
- {
- int j;
- opus_val16 n;
- n = celt_sqrt(SHL32(EXTEND32(N0),22));
- for (j=0;j<N0;j++)
- lowband_out[j] = MULT16_16_Q15(n,X[j]);
- }
- cm &= (1<<B)-1;
- }
- return cm;
-}
-
-
-/* This function is responsible for encoding and decoding a band for the stereo case. */
-static unsigned quant_band_stereo(struct band_ctx *ctx, celt_norm *X, celt_norm *Y,
- int N, int b, int B, celt_norm *lowband,
- int LM, celt_norm *lowband_out,
- celt_norm *lowband_scratch, int fill)
-{
- int imid=0, iside=0;
- int inv = 0;
- opus_val16 mid=0, side=0;
- unsigned cm=0;
-#ifdef RESYNTH
- int resynth = 1;
-#else
- int resynth = !ctx->encode;
-#endif
- int mbits, sbits, delta;
- int itheta;
- int qalloc;
- struct split_ctx sctx;
- int orig_fill;
- int encode;
- ec_ctx *ec;
-
- encode = ctx->encode;
- ec = ctx->ec;
-
- /* Special case for one sample */
- if (N==1)
- {
- return quant_band_n1(ctx, X, Y, b, lowband_out);
- }
-
- orig_fill = fill;
-
- compute_theta(ctx, &sctx, X, Y, N, &b, B, B,
- LM, 1, &fill);
- inv = sctx.inv;
- imid = sctx.imid;
- iside = sctx.iside;
- delta = sctx.delta;
- itheta = sctx.itheta;
- qalloc = sctx.qalloc;
-#ifdef FIXED_POINT
- mid = imid;
- side = iside;
-#else
- mid = (1.f/32768)*imid;
- side = (1.f/32768)*iside;
-#endif
-
- /* This is a special case for N=2 that only works for stereo and takes
- advantage of the fact that mid and side are orthogonal to encode
- the side with just one bit. */
- if (N==2)
- {
- int c;
- int sign=0;
- celt_norm *x2, *y2;
- mbits = b;
- sbits = 0;
- /* Only need one bit for the side. */
- if (itheta != 0 && itheta != 16384)
- sbits = 1<<BITRES;
- mbits -= sbits;
- c = itheta > 8192;
- ctx->remaining_bits -= qalloc+sbits;
-
- x2 = c ? Y : X;
- y2 = c ? X : Y;
- if (sbits)
- {
- if (encode)
- {
- /* Here we only need to encode a sign for the side. */
- sign = x2[0]*y2[1] - x2[1]*y2[0] < 0;
- ec_enc_bits(ec, sign, 1);
- } else {
- sign = ec_dec_bits(ec, 1);
- }
- }
- sign = 1-2*sign;
- /* We use orig_fill here because we want to fold the side, but if
- itheta==16384, we'll have cleared the low bits of fill. */
- cm = quant_band(ctx, x2, N, mbits, B, lowband,
- LM, lowband_out, Q15ONE, lowband_scratch, orig_fill);
- /* We don't split N=2 bands, so cm is either 1 or 0 (for a fold-collapse),
- and there's no need to worry about mixing with the other channel. */
- y2[0] = -sign*x2[1];
- y2[1] = sign*x2[0];
- if (resynth)
- {
- celt_norm tmp;
- X[0] = MULT16_16_Q15(mid, X[0]);
- X[1] = MULT16_16_Q15(mid, X[1]);
- Y[0] = MULT16_16_Q15(side, Y[0]);
- Y[1] = MULT16_16_Q15(side, Y[1]);
- tmp = X[0];
- X[0] = SUB16(tmp,Y[0]);
- Y[0] = ADD16(tmp,Y[0]);
- tmp = X[1];
- X[1] = SUB16(tmp,Y[1]);
- Y[1] = ADD16(tmp,Y[1]);
- }
- } else {
- /* "Normal" split code */
- opus_int32 rebalance;
-
- mbits = IMAX(0, IMIN(b, (b-delta)/2));
- sbits = b-mbits;
- ctx->remaining_bits -= qalloc;
-
- rebalance = ctx->remaining_bits;
- if (mbits >= sbits)
- {
- /* In stereo mode, we do not apply a scaling to the mid because we need the normalized
- mid for folding later. */
- cm = quant_band(ctx, X, N, mbits, B,
- lowband, LM, lowband_out,
- Q15ONE, lowband_scratch, fill);
- rebalance = mbits - (rebalance-ctx->remaining_bits);
- if (rebalance > 3<<BITRES && itheta!=0)
- sbits += rebalance - (3<<BITRES);
-
- /* For a stereo split, the high bits of fill are always zero, so no
- folding will be done to the side. */
- cm |= quant_band(ctx, Y, N, sbits, B,
- NULL, LM, NULL,
- side, NULL, fill>>B);
- } else {
- /* For a stereo split, the high bits of fill are always zero, so no
- folding will be done to the side. */
- cm = quant_band(ctx, Y, N, sbits, B,
- NULL, LM, NULL,
- side, NULL, fill>>B);
- rebalance = sbits - (rebalance-ctx->remaining_bits);
- if (rebalance > 3<<BITRES && itheta!=16384)
- mbits += rebalance - (3<<BITRES);
- /* In stereo mode, we do not apply a scaling to the mid because we need the normalized
- mid for folding later. */
- cm |= quant_band(ctx, X, N, mbits, B,
- lowband, LM, lowband_out,
- Q15ONE, lowband_scratch, fill);
- }
- }
-
-
- /* This code is used by the decoder and by the resynthesis-enabled encoder */
- if (resynth)
- {
- if (N!=2)
- stereo_merge(X, Y, mid, N, ctx->arch);
- if (inv)
- {
- int j;
- for (j=0;j<N;j++)
- Y[j] = -Y[j];
- }
- }
- return cm;
-}
-
-
-void quant_all_bands(int encode, const CELTMode *m, int start, int end,
- celt_norm *X_, celt_norm *Y_, unsigned char *collapse_masks,
- const celt_ener *bandE, int *pulses, int shortBlocks, int spread,
- int dual_stereo, int intensity, int *tf_res, opus_int32 total_bits,
- opus_int32 balance, ec_ctx *ec, int LM, int codedBands,
- opus_uint32 *seed, int arch)
-{
- int i;
- opus_int32 remaining_bits;
- const opus_int16 * OPUS_RESTRICT eBands = m->eBands;
- celt_norm * OPUS_RESTRICT norm, * OPUS_RESTRICT norm2;
- VARDECL(celt_norm, _norm);
- celt_norm *lowband_scratch;
- int B;
- int M;
- int lowband_offset;
- int update_lowband = 1;
- int C = Y_ != NULL ? 2 : 1;
- int norm_offset;
-#ifdef RESYNTH
- int resynth = 1;
-#else
- int resynth = !encode;
-#endif
- struct band_ctx ctx;
- SAVE_STACK;
-
- M = 1<<LM;
- B = shortBlocks ? M : 1;
- norm_offset = M*eBands[start];
- /* No need to allocate norm for the last band because we don't need an
- output in that band. */
- ALLOC(_norm, C*(M*eBands[m->nbEBands-1]-norm_offset), celt_norm);
- norm = _norm;
- norm2 = norm + M*eBands[m->nbEBands-1]-norm_offset;
- /* We can use the last band as scratch space because we don't need that
- scratch space for the last band. */
- lowband_scratch = X_+M*eBands[m->nbEBands-1];
-
- lowband_offset = 0;
- ctx.bandE = bandE;
- ctx.ec = ec;
- ctx.encode = encode;
- ctx.intensity = intensity;
- ctx.m = m;
- ctx.seed = *seed;
- ctx.spread = spread;
- ctx.arch = arch;
- for (i=start;i<end;i++)
- {
- opus_int32 tell;
- int b;
- int N;
- opus_int32 curr_balance;
- int effective_lowband=-1;
- celt_norm * OPUS_RESTRICT X, * OPUS_RESTRICT Y;
- int tf_change=0;
- unsigned x_cm;
- unsigned y_cm;
- int last;
-
- ctx.i = i;
- last = (i==end-1);
-
- X = X_+M*eBands[i];
- if (Y_!=NULL)
- Y = Y_+M*eBands[i];
- else
- Y = NULL;
- N = M*eBands[i+1]-M*eBands[i];
- tell = ec_tell_frac(ec);
-
- /* Compute how many bits we want to allocate to this band */
- if (i != start)
- balance -= tell;
- remaining_bits = total_bits-tell-1;
- ctx.remaining_bits = remaining_bits;
- if (i <= codedBands-1)
- {
- curr_balance = celt_sudiv(balance, IMIN(3, codedBands-i));
- b = IMAX(0, IMIN(16383, IMIN(remaining_bits+1,pulses[i]+curr_balance)));
- } else {
- b = 0;
- }
-
- if (resynth && M*eBands[i]-N >= M*eBands[start] && (update_lowband || lowband_offset==0))
- lowband_offset = i;
-
- tf_change = tf_res[i];
- ctx.tf_change = tf_change;
- if (i>=m->effEBands)
- {
- X=norm;
- if (Y_!=NULL)
- Y = norm;
- lowband_scratch = NULL;
- }
- if (i==end-1)
- lowband_scratch = NULL;
-
- /* Get a conservative estimate of the collapse_mask's for the bands we're
- going to be folding from. */
- if (lowband_offset != 0 && (spread!=SPREAD_AGGRESSIVE || B>1 || tf_change<0))
- {
- int fold_start;
- int fold_end;
- int fold_i;
- /* This ensures we never repeat spectral content within one band */
- effective_lowband = IMAX(0, M*eBands[lowband_offset]-norm_offset-N);
- fold_start = lowband_offset;
- while(M*eBands[--fold_start] > effective_lowband+norm_offset);
- fold_end = lowband_offset-1;
- while(M*eBands[++fold_end] < effective_lowband+norm_offset+N);
- x_cm = y_cm = 0;
- fold_i = fold_start; do {
- x_cm |= collapse_masks[fold_i*C+0];
- y_cm |= collapse_masks[fold_i*C+C-1];
- } while (++fold_i<fold_end);
- }
- /* Otherwise, we'll be using the LCG to fold, so all blocks will (almost
- always) be non-zero. */
- else
- x_cm = y_cm = (1<<B)-1;
-
- if (dual_stereo && i==intensity)
- {
- int j;
-
- /* Switch off dual stereo to do intensity. */
- dual_stereo = 0;
- if (resynth)
- for (j=0;j<M*eBands[i]-norm_offset;j++)
- norm[j] = HALF32(norm[j]+norm2[j]);
- }
- if (dual_stereo)
- {
- x_cm = quant_band(&ctx, X, N, b/2, B,
- effective_lowband != -1 ? norm+effective_lowband : NULL, LM,
- last?NULL:norm+M*eBands[i]-norm_offset, Q15ONE, lowband_scratch, x_cm);
- y_cm = quant_band(&ctx, Y, N, b/2, B,
- effective_lowband != -1 ? norm2+effective_lowband : NULL, LM,
- last?NULL:norm2+M*eBands[i]-norm_offset, Q15ONE, lowband_scratch, y_cm);
- } else {
- if (Y!=NULL)
- {
- x_cm = quant_band_stereo(&ctx, X, Y, N, b, B,
- effective_lowband != -1 ? norm+effective_lowband : NULL, LM,
- last?NULL:norm+M*eBands[i]-norm_offset, lowband_scratch, x_cm|y_cm);
- } else {
- x_cm = quant_band(&ctx, X, N, b, B,
- effective_lowband != -1 ? norm+effective_lowband : NULL, LM,
- last?NULL:norm+M*eBands[i]-norm_offset, Q15ONE, lowband_scratch, x_cm|y_cm);
- }
- y_cm = x_cm;
- }
- collapse_masks[i*C+0] = (unsigned char)x_cm;
- collapse_masks[i*C+C-1] = (unsigned char)y_cm;
- balance += pulses[i] + tell;
-
- /* Update the folding position only as long as we have 1 bit/sample depth. */
- update_lowband = b>(N<<BITRES);
- }
- *seed = ctx.seed;
-
- RESTORE_STACK;
-}
-
diff --git a/thirdparty/opus/celt/bands.h b/thirdparty/opus/celt/bands.h
deleted file mode 100644
index e8bef4bad0..0000000000
--- a/thirdparty/opus/celt/bands.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Copyright (c) 2008-2009 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef BANDS_H
-#define BANDS_H
-
-#include "arch.h"
-#include "modes.h"
-#include "entenc.h"
-#include "entdec.h"
-#include "rate.h"
-
-/** Compute the amplitude (sqrt energy) in each of the bands
- * @param m Mode data
- * @param X Spectrum
- * @param bandE Square root of the energy for each band (returned)
- */
-void compute_band_energies(const CELTMode *m, const celt_sig *X, celt_ener *bandE, int end, int C, int LM);
-
-/*void compute_noise_energies(const CELTMode *m, const celt_sig *X, const opus_val16 *tonality, celt_ener *bandE);*/
-
-/** Normalise each band of X such that the energy in each band is
- equal to 1
- * @param m Mode data
- * @param X Spectrum (returned normalised)
- * @param bandE Square root of the energy for each band
- */
-void normalise_bands(const CELTMode *m, const celt_sig * OPUS_RESTRICT freq, celt_norm * OPUS_RESTRICT X, const celt_ener *bandE, int end, int C, int M);
-
-/** Denormalise each band of X to restore full amplitude
- * @param m Mode data
- * @param X Spectrum (returned de-normalised)
- * @param bandE Square root of the energy for each band
- */
-void denormalise_bands(const CELTMode *m, const celt_norm * OPUS_RESTRICT X,
- celt_sig * OPUS_RESTRICT freq, const opus_val16 *bandE, int start,
- int end, int M, int downsample, int silence);
-
-#define SPREAD_NONE (0)
-#define SPREAD_LIGHT (1)
-#define SPREAD_NORMAL (2)
-#define SPREAD_AGGRESSIVE (3)
-
-int spreading_decision(const CELTMode *m, const celt_norm *X, int *average,
- int last_decision, int *hf_average, int *tapset_decision, int update_hf,
- int end, int C, int M);
-
-#ifdef MEASURE_NORM_MSE
-void measure_norm_mse(const CELTMode *m, float *X, float *X0, float *bandE, float *bandE0, int M, int N, int C);
-#endif
-
-void haar1(celt_norm *X, int N0, int stride);
-
-/** Quantisation/encoding of the residual spectrum
- * @param encode flag that indicates whether we're encoding (1) or decoding (0)
- * @param m Mode data
- * @param start First band to process
- * @param end Last band to process + 1
- * @param X Residual (normalised)
- * @param Y Residual (normalised) for second channel (or NULL for mono)
- * @param collapse_masks Anti-collapse tracking mask
- * @param bandE Square root of the energy for each band
- * @param pulses Bit allocation (per band) for PVQ
- * @param shortBlocks Zero for long blocks, non-zero for short blocks
- * @param spread Amount of spreading to use
- * @param dual_stereo Zero for MS stereo, non-zero for dual stereo
- * @param intensity First band to use intensity stereo
- * @param tf_res Time-frequency resolution change
- * @param total_bits Total number of bits that can be used for the frame (including the ones already spent)
- * @param balance Number of unallocated bits
- * @param en Entropy coder state
- * @param LM log2() of the number of 2.5 subframes in the frame
- * @param codedBands Last band to receive bits + 1
- * @param seed Random generator seed
- * @param arch Run-time architecture (see opus_select_arch())
- */
-void quant_all_bands(int encode, const CELTMode *m, int start, int end,
- celt_norm * X, celt_norm * Y, unsigned char *collapse_masks,
- const celt_ener *bandE, int *pulses, int shortBlocks, int spread,
- int dual_stereo, int intensity, int *tf_res, opus_int32 total_bits,
- opus_int32 balance, ec_ctx *ec, int M, int codedBands, opus_uint32 *seed,
- int arch);
-
-void anti_collapse(const CELTMode *m, celt_norm *X_,
- unsigned char *collapse_masks, int LM, int C, int size, int start,
- int end, const opus_val16 *logE, const opus_val16 *prev1logE,
- const opus_val16 *prev2logE, const int *pulses, opus_uint32 seed,
- int arch);
-
-opus_uint32 celt_lcg_rand(opus_uint32 seed);
-
-int hysteresis_decision(opus_val16 val, const opus_val16 *thresholds, const opus_val16 *hysteresis, int N, int prev);
-
-#endif /* BANDS_H */
diff --git a/thirdparty/opus/celt/celt.c b/thirdparty/opus/celt/celt.c
deleted file mode 100644
index b121c51a1f..0000000000
--- a/thirdparty/opus/celt/celt.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2010 Xiph.Org Foundation
- Copyright (c) 2008 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#define CELT_C
-
-#include "os_support.h"
-#include "mdct.h"
-#include <math.h>
-#include "celt.h"
-#include "pitch.h"
-#include "bands.h"
-#include "modes.h"
-#include "entcode.h"
-#include "quant_bands.h"
-#include "rate.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "float_cast.h"
-#include <stdarg.h>
-#include "celt_lpc.h"
-#include "vq.h"
-
-#ifndef PACKAGE_VERSION
-#define PACKAGE_VERSION "unknown"
-#endif
-
-#if defined(MIPSr1_ASM)
-#include "mips/celt_mipsr1.h"
-#endif
-
-
-int resampling_factor(opus_int32 rate)
-{
- int ret;
- switch (rate)
- {
- case 48000:
- ret = 1;
- break;
- case 24000:
- ret = 2;
- break;
- case 16000:
- ret = 3;
- break;
- case 12000:
- ret = 4;
- break;
- case 8000:
- ret = 6;
- break;
- default:
-#ifndef CUSTOM_MODES
- celt_assert(0);
-#endif
- ret = 0;
- break;
- }
- return ret;
-}
-
-#if !defined(OVERRIDE_COMB_FILTER_CONST) || defined(NON_STATIC_COMB_FILTER_CONST_C)
-/* This version should be faster on ARM */
-#ifdef OPUS_ARM_ASM
-#ifndef NON_STATIC_COMB_FILTER_CONST_C
-static
-#endif
-void comb_filter_const_c(opus_val32 *y, opus_val32 *x, int T, int N,
- opus_val16 g10, opus_val16 g11, opus_val16 g12)
-{
- opus_val32 x0, x1, x2, x3, x4;
- int i;
- x4 = SHL32(x[-T-2], 1);
- x3 = SHL32(x[-T-1], 1);
- x2 = SHL32(x[-T], 1);
- x1 = SHL32(x[-T+1], 1);
- for (i=0;i<N-4;i+=5)
- {
- opus_val32 t;
- x0=SHL32(x[i-T+2],1);
- t = MAC16_32_Q16(x[i], g10, x2);
- t = MAC16_32_Q16(t, g11, ADD32(x1,x3));
- t = MAC16_32_Q16(t, g12, ADD32(x0,x4));
- y[i] = t;
- x4=SHL32(x[i-T+3],1);
- t = MAC16_32_Q16(x[i+1], g10, x1);
- t = MAC16_32_Q16(t, g11, ADD32(x0,x2));
- t = MAC16_32_Q16(t, g12, ADD32(x4,x3));
- y[i+1] = t;
- x3=SHL32(x[i-T+4],1);
- t = MAC16_32_Q16(x[i+2], g10, x0);
- t = MAC16_32_Q16(t, g11, ADD32(x4,x1));
- t = MAC16_32_Q16(t, g12, ADD32(x3,x2));
- y[i+2] = t;
- x2=SHL32(x[i-T+5],1);
- t = MAC16_32_Q16(x[i+3], g10, x4);
- t = MAC16_32_Q16(t, g11, ADD32(x3,x0));
- t = MAC16_32_Q16(t, g12, ADD32(x2,x1));
- y[i+3] = t;
- x1=SHL32(x[i-T+6],1);
- t = MAC16_32_Q16(x[i+4], g10, x3);
- t = MAC16_32_Q16(t, g11, ADD32(x2,x4));
- t = MAC16_32_Q16(t, g12, ADD32(x1,x0));
- y[i+4] = t;
- }
-#ifdef CUSTOM_MODES
- for (;i<N;i++)
- {
- opus_val32 t;
- x0=SHL32(x[i-T+2],1);
- t = MAC16_32_Q16(x[i], g10, x2);
- t = MAC16_32_Q16(t, g11, ADD32(x1,x3));
- t = MAC16_32_Q16(t, g12, ADD32(x0,x4));
- y[i] = t;
- x4=x3;
- x3=x2;
- x2=x1;
- x1=x0;
- }
-#endif
-}
-#else
-#ifndef NON_STATIC_COMB_FILTER_CONST_C
-static
-#endif
-void comb_filter_const_c(opus_val32 *y, opus_val32 *x, int T, int N,
- opus_val16 g10, opus_val16 g11, opus_val16 g12)
-{
- opus_val32 x0, x1, x2, x3, x4;
- int i;
- x4 = x[-T-2];
- x3 = x[-T-1];
- x2 = x[-T];
- x1 = x[-T+1];
- for (i=0;i<N;i++)
- {
- x0=x[i-T+2];
- y[i] = x[i]
- + MULT16_32_Q15(g10,x2)
- + MULT16_32_Q15(g11,ADD32(x1,x3))
- + MULT16_32_Q15(g12,ADD32(x0,x4));
- x4=x3;
- x3=x2;
- x2=x1;
- x1=x0;
- }
-
-}
-#endif
-#endif
-
-#ifndef OVERRIDE_comb_filter
-void comb_filter(opus_val32 *y, opus_val32 *x, int T0, int T1, int N,
- opus_val16 g0, opus_val16 g1, int tapset0, int tapset1,
- const opus_val16 *window, int overlap, int arch)
-{
- int i;
- /* printf ("%d %d %f %f\n", T0, T1, g0, g1); */
- opus_val16 g00, g01, g02, g10, g11, g12;
- opus_val32 x0, x1, x2, x3, x4;
- static const opus_val16 gains[3][3] = {
- {QCONST16(0.3066406250f, 15), QCONST16(0.2170410156f, 15), QCONST16(0.1296386719f, 15)},
- {QCONST16(0.4638671875f, 15), QCONST16(0.2680664062f, 15), QCONST16(0.f, 15)},
- {QCONST16(0.7998046875f, 15), QCONST16(0.1000976562f, 15), QCONST16(0.f, 15)}};
-
- if (g0==0 && g1==0)
- {
- /* OPT: Happens to work without the OPUS_MOVE(), but only because the current encoder already copies x to y */
- if (x!=y)
- OPUS_MOVE(y, x, N);
- return;
- }
- g00 = MULT16_16_P15(g0, gains[tapset0][0]);
- g01 = MULT16_16_P15(g0, gains[tapset0][1]);
- g02 = MULT16_16_P15(g0, gains[tapset0][2]);
- g10 = MULT16_16_P15(g1, gains[tapset1][0]);
- g11 = MULT16_16_P15(g1, gains[tapset1][1]);
- g12 = MULT16_16_P15(g1, gains[tapset1][2]);
- x1 = x[-T1+1];
- x2 = x[-T1 ];
- x3 = x[-T1-1];
- x4 = x[-T1-2];
- /* If the filter didn't change, we don't need the overlap */
- if (g0==g1 && T0==T1 && tapset0==tapset1)
- overlap=0;
- for (i=0;i<overlap;i++)
- {
- opus_val16 f;
- x0=x[i-T1+2];
- f = MULT16_16_Q15(window[i],window[i]);
- y[i] = x[i]
- + MULT16_32_Q15(MULT16_16_Q15((Q15ONE-f),g00),x[i-T0])
- + MULT16_32_Q15(MULT16_16_Q15((Q15ONE-f),g01),ADD32(x[i-T0+1],x[i-T0-1]))
- + MULT16_32_Q15(MULT16_16_Q15((Q15ONE-f),g02),ADD32(x[i-T0+2],x[i-T0-2]))
- + MULT16_32_Q15(MULT16_16_Q15(f,g10),x2)
- + MULT16_32_Q15(MULT16_16_Q15(f,g11),ADD32(x1,x3))
- + MULT16_32_Q15(MULT16_16_Q15(f,g12),ADD32(x0,x4));
- x4=x3;
- x3=x2;
- x2=x1;
- x1=x0;
-
- }
- if (g1==0)
- {
- /* OPT: Happens to work without the OPUS_MOVE(), but only because the current encoder already copies x to y */
- if (x!=y)
- OPUS_MOVE(y+overlap, x+overlap, N-overlap);
- return;
- }
-
- /* Compute the part with the constant filter. */
- comb_filter_const(y+i, x+i, T1, N-i, g10, g11, g12, arch);
-}
-#endif /* OVERRIDE_comb_filter */
-
-const signed char tf_select_table[4][8] = {
- {0, -1, 0, -1, 0,-1, 0,-1},
- {0, -1, 0, -2, 1, 0, 1,-1},
- {0, -2, 0, -3, 2, 0, 1,-1},
- {0, -2, 0, -3, 3, 0, 1,-1},
-};
-
-
-void init_caps(const CELTMode *m,int *cap,int LM,int C)
-{
- int i;
- for (i=0;i<m->nbEBands;i++)
- {
- int N;
- N=(m->eBands[i+1]-m->eBands[i])<<LM;
- cap[i] = (m->cache.caps[m->nbEBands*(2*LM+C-1)+i]+64)*C*N>>2;
- }
-}
-
-
-
-const char *opus_strerror(int error)
-{
- static const char * const error_strings[8] = {
- "success",
- "invalid argument",
- "buffer too small",
- "internal error",
- "corrupted stream",
- "request not implemented",
- "invalid state",
- "memory allocation failed"
- };
- if (error > 0 || error < -7)
- return "unknown error";
- else
- return error_strings[-error];
-}
-
-const char *opus_get_version_string(void)
-{
- return "libopus " PACKAGE_VERSION
- /* Applications may rely on the presence of this substring in the version
- string to determine if they have a fixed-point or floating-point build
- at runtime. */
-#ifdef FIXED_POINT
- "-fixed"
-#endif
-#ifdef FUZZING
- "-fuzzing"
-#endif
- ;
-}
diff --git a/thirdparty/opus/celt/celt.h b/thirdparty/opus/celt/celt.h
deleted file mode 100644
index d1f7eb690d..0000000000
--- a/thirdparty/opus/celt/celt.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Copyright (c) 2008 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/**
- @file celt.h
- @brief Contains all the functions for encoding and decoding audio
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CELT_H
-#define CELT_H
-
-#include "opus_types.h"
-#include "opus_defines.h"
-#include "opus_custom.h"
-#include "entenc.h"
-#include "entdec.h"
-#include "arch.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define CELTEncoder OpusCustomEncoder
-#define CELTDecoder OpusCustomDecoder
-#define CELTMode OpusCustomMode
-
-typedef struct {
- int valid;
- float tonality;
- float tonality_slope;
- float noisiness;
- float activity;
- float music_prob;
- int bandwidth;
-}AnalysisInfo;
-
-#define __celt_check_mode_ptr_ptr(ptr) ((ptr) + ((ptr) - (const CELTMode**)(ptr)))
-
-#define __celt_check_analysis_ptr(ptr) ((ptr) + ((ptr) - (const AnalysisInfo*)(ptr)))
-
-/* Encoder/decoder Requests */
-
-/* Expose this option again when variable framesize actually works */
-#define OPUS_FRAMESIZE_VARIABLE 5010 /**< Optimize the frame size dynamically */
-
-
-#define CELT_SET_PREDICTION_REQUEST 10002
-/** Controls the use of interframe prediction.
- 0=Independent frames
- 1=Short term interframe prediction allowed
- 2=Long term prediction allowed
- */
-#define CELT_SET_PREDICTION(x) CELT_SET_PREDICTION_REQUEST, __opus_check_int(x)
-
-#define CELT_SET_INPUT_CLIPPING_REQUEST 10004
-#define CELT_SET_INPUT_CLIPPING(x) CELT_SET_INPUT_CLIPPING_REQUEST, __opus_check_int(x)
-
-#define CELT_GET_AND_CLEAR_ERROR_REQUEST 10007
-#define CELT_GET_AND_CLEAR_ERROR(x) CELT_GET_AND_CLEAR_ERROR_REQUEST, __opus_check_int_ptr(x)
-
-#define CELT_SET_CHANNELS_REQUEST 10008
-#define CELT_SET_CHANNELS(x) CELT_SET_CHANNELS_REQUEST, __opus_check_int(x)
-
-
-/* Internal */
-#define CELT_SET_START_BAND_REQUEST 10010
-#define CELT_SET_START_BAND(x) CELT_SET_START_BAND_REQUEST, __opus_check_int(x)
-
-#define CELT_SET_END_BAND_REQUEST 10012
-#define CELT_SET_END_BAND(x) CELT_SET_END_BAND_REQUEST, __opus_check_int(x)
-
-#define CELT_GET_MODE_REQUEST 10015
-/** Get the CELTMode used by an encoder or decoder */
-#define CELT_GET_MODE(x) CELT_GET_MODE_REQUEST, __celt_check_mode_ptr_ptr(x)
-
-#define CELT_SET_SIGNALLING_REQUEST 10016
-#define CELT_SET_SIGNALLING(x) CELT_SET_SIGNALLING_REQUEST, __opus_check_int(x)
-
-#define CELT_SET_TONALITY_REQUEST 10018
-#define CELT_SET_TONALITY(x) CELT_SET_TONALITY_REQUEST, __opus_check_int(x)
-#define CELT_SET_TONALITY_SLOPE_REQUEST 10020
-#define CELT_SET_TONALITY_SLOPE(x) CELT_SET_TONALITY_SLOPE_REQUEST, __opus_check_int(x)
-
-#define CELT_SET_ANALYSIS_REQUEST 10022
-#define CELT_SET_ANALYSIS(x) CELT_SET_ANALYSIS_REQUEST, __celt_check_analysis_ptr(x)
-
-#define OPUS_SET_LFE_REQUEST 10024
-#define OPUS_SET_LFE(x) OPUS_SET_LFE_REQUEST, __opus_check_int(x)
-
-#define OPUS_SET_ENERGY_MASK_REQUEST 10026
-#define OPUS_SET_ENERGY_MASK(x) OPUS_SET_ENERGY_MASK_REQUEST, __opus_check_val16_ptr(x)
-
-/* Encoder stuff */
-
-int celt_encoder_get_size(int channels);
-
-int celt_encode_with_ec(OpusCustomEncoder * OPUS_RESTRICT st, const opus_val16 * pcm, int frame_size, unsigned char *compressed, int nbCompressedBytes, ec_enc *enc);
-
-int celt_encoder_init(CELTEncoder *st, opus_int32 sampling_rate, int channels,
- int arch);
-
-
-
-/* Decoder stuff */
-
-int celt_decoder_get_size(int channels);
-
-
-int celt_decoder_init(CELTDecoder *st, opus_int32 sampling_rate, int channels);
-
-int celt_decode_with_ec(OpusCustomDecoder * OPUS_RESTRICT st, const unsigned char *data,
- int len, opus_val16 * OPUS_RESTRICT pcm, int frame_size, ec_dec *dec, int accum);
-
-#define celt_encoder_ctl opus_custom_encoder_ctl
-#define celt_decoder_ctl opus_custom_decoder_ctl
-
-
-#ifdef CUSTOM_MODES
-#define OPUS_CUSTOM_NOSTATIC
-#else
-#define OPUS_CUSTOM_NOSTATIC static OPUS_INLINE
-#endif
-
-static const unsigned char trim_icdf[11] = {126, 124, 119, 109, 87, 41, 19, 9, 4, 2, 0};
-/* Probs: NONE: 21.875%, LIGHT: 6.25%, NORMAL: 65.625%, AGGRESSIVE: 6.25% */
-static const unsigned char spread_icdf[4] = {25, 23, 2, 0};
-
-static const unsigned char tapset_icdf[3]={2,1,0};
-
-#ifdef CUSTOM_MODES
-static const unsigned char toOpusTable[20] = {
- 0xE0, 0xE8, 0xF0, 0xF8,
- 0xC0, 0xC8, 0xD0, 0xD8,
- 0xA0, 0xA8, 0xB0, 0xB8,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x88, 0x90, 0x98,
-};
-
-static const unsigned char fromOpusTable[16] = {
- 0x80, 0x88, 0x90, 0x98,
- 0x40, 0x48, 0x50, 0x58,
- 0x20, 0x28, 0x30, 0x38,
- 0x00, 0x08, 0x10, 0x18
-};
-
-static OPUS_INLINE int toOpus(unsigned char c)
-{
- int ret=0;
- if (c<0xA0)
- ret = toOpusTable[c>>3];
- if (ret == 0)
- return -1;
- else
- return ret|(c&0x7);
-}
-
-static OPUS_INLINE int fromOpus(unsigned char c)
-{
- if (c<0x80)
- return -1;
- else
- return fromOpusTable[(c>>3)-16] | (c&0x7);
-}
-#endif /* CUSTOM_MODES */
-
-#define COMBFILTER_MAXPERIOD 1024
-#define COMBFILTER_MINPERIOD 15
-
-extern const signed char tf_select_table[4][8];
-
-int resampling_factor(opus_int32 rate);
-
-void celt_preemphasis(const opus_val16 * OPUS_RESTRICT pcmp, celt_sig * OPUS_RESTRICT inp,
- int N, int CC, int upsample, const opus_val16 *coef, celt_sig *mem, int clip);
-
-void comb_filter(opus_val32 *y, opus_val32 *x, int T0, int T1, int N,
- opus_val16 g0, opus_val16 g1, int tapset0, int tapset1,
- const opus_val16 *window, int overlap, int arch);
-
-#ifdef NON_STATIC_COMB_FILTER_CONST_C
-void comb_filter_const_c(opus_val32 *y, opus_val32 *x, int T, int N,
- opus_val16 g10, opus_val16 g11, opus_val16 g12);
-#endif
-
-#ifndef OVERRIDE_COMB_FILTER_CONST
-# define comb_filter_const(y, x, T, N, g10, g11, g12, arch) \
- ((void)(arch),comb_filter_const_c(y, x, T, N, g10, g11, g12))
-#endif
-
-void init_caps(const CELTMode *m,int *cap,int LM,int C);
-
-#ifdef RESYNTH
-void deemphasis(celt_sig *in[], opus_val16 *pcm, int N, int C, int downsample, const opus_val16 *coef, celt_sig *mem);
-void celt_synthesis(const CELTMode *mode, celt_norm *X, celt_sig * out_syn[],
- opus_val16 *oldBandE, int start, int effEnd, int C, int CC, int isTransient,
- int LM, int downsample, int silence);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* CELT_H */
diff --git a/thirdparty/opus/celt/celt_decoder.c b/thirdparty/opus/celt/celt_decoder.c
deleted file mode 100644
index b978bb34d1..0000000000
--- a/thirdparty/opus/celt/celt_decoder.c
+++ /dev/null
@@ -1,1248 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2010 Xiph.Org Foundation
- Copyright (c) 2008 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#define CELT_DECODER_C
-
-#include "cpu_support.h"
-#include "os_support.h"
-#include "mdct.h"
-#include <math.h>
-#include "celt.h"
-#include "pitch.h"
-#include "bands.h"
-#include "modes.h"
-#include "entcode.h"
-#include "quant_bands.h"
-#include "rate.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "float_cast.h"
-#include <stdarg.h>
-#include "celt_lpc.h"
-#include "vq.h"
-
-#if defined(SMALL_FOOTPRINT) && defined(FIXED_POINT)
-#define NORM_ALIASING_HACK
-#endif
-/**********************************************************************/
-/* */
-/* DECODER */
-/* */
-/**********************************************************************/
-#define DECODE_BUFFER_SIZE 2048
-
-/** Decoder state
- @brief Decoder state
- */
-struct OpusCustomDecoder {
- const OpusCustomMode *mode;
- int overlap;
- int channels;
- int stream_channels;
-
- int downsample;
- int start, end;
- int signalling;
- int arch;
-
- /* Everything beyond this point gets cleared on a reset */
-#define DECODER_RESET_START rng
-
- opus_uint32 rng;
- int error;
- int last_pitch_index;
- int loss_count;
- int skip_plc;
- int postfilter_period;
- int postfilter_period_old;
- opus_val16 postfilter_gain;
- opus_val16 postfilter_gain_old;
- int postfilter_tapset;
- int postfilter_tapset_old;
-
- celt_sig preemph_memD[2];
-
- celt_sig _decode_mem[1]; /* Size = channels*(DECODE_BUFFER_SIZE+mode->overlap) */
- /* opus_val16 lpc[], Size = channels*LPC_ORDER */
- /* opus_val16 oldEBands[], Size = 2*mode->nbEBands */
- /* opus_val16 oldLogE[], Size = 2*mode->nbEBands */
- /* opus_val16 oldLogE2[], Size = 2*mode->nbEBands */
- /* opus_val16 backgroundLogE[], Size = 2*mode->nbEBands */
-};
-
-int celt_decoder_get_size(int channels)
-{
- const CELTMode *mode = opus_custom_mode_create(48000, 960, NULL);
- return opus_custom_decoder_get_size(mode, channels);
-}
-
-OPUS_CUSTOM_NOSTATIC int opus_custom_decoder_get_size(const CELTMode *mode, int channels)
-{
- int size = sizeof(struct CELTDecoder)
- + (channels*(DECODE_BUFFER_SIZE+mode->overlap)-1)*sizeof(celt_sig)
- + channels*LPC_ORDER*sizeof(opus_val16)
- + 4*2*mode->nbEBands*sizeof(opus_val16);
- return size;
-}
-
-#ifdef CUSTOM_MODES
-CELTDecoder *opus_custom_decoder_create(const CELTMode *mode, int channels, int *error)
-{
- int ret;
- CELTDecoder *st = (CELTDecoder *)opus_alloc(opus_custom_decoder_get_size(mode, channels));
- ret = opus_custom_decoder_init(st, mode, channels);
- if (ret != OPUS_OK)
- {
- opus_custom_decoder_destroy(st);
- st = NULL;
- }
- if (error)
- *error = ret;
- return st;
-}
-#endif /* CUSTOM_MODES */
-
-int celt_decoder_init(CELTDecoder *st, opus_int32 sampling_rate, int channels)
-{
- int ret;
- ret = opus_custom_decoder_init(st, opus_custom_mode_create(48000, 960, NULL), channels);
- if (ret != OPUS_OK)
- return ret;
- st->downsample = resampling_factor(sampling_rate);
- if (st->downsample==0)
- return OPUS_BAD_ARG;
- else
- return OPUS_OK;
-}
-
-OPUS_CUSTOM_NOSTATIC int opus_custom_decoder_init(CELTDecoder *st, const CELTMode *mode, int channels)
-{
- if (channels < 0 || channels > 2)
- return OPUS_BAD_ARG;
-
- if (st==NULL)
- return OPUS_ALLOC_FAIL;
-
- OPUS_CLEAR((char*)st, opus_custom_decoder_get_size(mode, channels));
-
- st->mode = mode;
- st->overlap = mode->overlap;
- st->stream_channels = st->channels = channels;
-
- st->downsample = 1;
- st->start = 0;
- st->end = st->mode->effEBands;
- st->signalling = 1;
- st->arch = opus_select_arch();
-
- opus_custom_decoder_ctl(st, OPUS_RESET_STATE);
-
- return OPUS_OK;
-}
-
-#ifdef CUSTOM_MODES
-void opus_custom_decoder_destroy(CELTDecoder *st)
-{
- opus_free(st);
-}
-#endif /* CUSTOM_MODES */
-
-
-#ifndef RESYNTH
-static
-#endif
-void deemphasis(celt_sig *in[], opus_val16 *pcm, int N, int C, int downsample, const opus_val16 *coef,
- celt_sig *mem, int accum)
-{
- int c;
- int Nd;
- int apply_downsampling=0;
- opus_val16 coef0;
- VARDECL(celt_sig, scratch);
- SAVE_STACK;
-#ifndef FIXED_POINT
- (void)accum;
- celt_assert(accum==0);
-#endif
- ALLOC(scratch, N, celt_sig);
- coef0 = coef[0];
- Nd = N/downsample;
- c=0; do {
- int j;
- celt_sig * OPUS_RESTRICT x;
- opus_val16 * OPUS_RESTRICT y;
- celt_sig m = mem[c];
- x =in[c];
- y = pcm+c;
-#ifdef CUSTOM_MODES
- if (coef[1] != 0)
- {
- opus_val16 coef1 = coef[1];
- opus_val16 coef3 = coef[3];
- for (j=0;j<N;j++)
- {
- celt_sig tmp = x[j] + m + VERY_SMALL;
- m = MULT16_32_Q15(coef0, tmp)
- - MULT16_32_Q15(coef1, x[j]);
- tmp = SHL32(MULT16_32_Q15(coef3, tmp), 2);
- scratch[j] = tmp;
- }
- apply_downsampling=1;
- } else
-#endif
- if (downsample>1)
- {
- /* Shortcut for the standard (non-custom modes) case */
- for (j=0;j<N;j++)
- {
- celt_sig tmp = x[j] + m + VERY_SMALL;
- m = MULT16_32_Q15(coef0, tmp);
- scratch[j] = tmp;
- }
- apply_downsampling=1;
- } else {
- /* Shortcut for the standard (non-custom modes) case */
-#ifdef FIXED_POINT
- if (accum)
- {
- for (j=0;j<N;j++)
- {
- celt_sig tmp = x[j] + m + VERY_SMALL;
- m = MULT16_32_Q15(coef0, tmp);
- y[j*C] = SAT16(ADD32(y[j*C], SCALEOUT(SIG2WORD16(tmp))));
- }
- } else
-#endif
- {
- for (j=0;j<N;j++)
- {
- celt_sig tmp = x[j] + m + VERY_SMALL;
- m = MULT16_32_Q15(coef0, tmp);
- y[j*C] = SCALEOUT(SIG2WORD16(tmp));
- }
- }
- }
- mem[c] = m;
-
- if (apply_downsampling)
- {
- /* Perform down-sampling */
-#ifdef FIXED_POINT
- if (accum)
- {
- for (j=0;j<Nd;j++)
- y[j*C] = SAT16(ADD32(y[j*C], SCALEOUT(SIG2WORD16(scratch[j*downsample]))));
- } else
-#endif
- {
- for (j=0;j<Nd;j++)
- y[j*C] = SCALEOUT(SIG2WORD16(scratch[j*downsample]));
- }
- }
- } while (++c<C);
- RESTORE_STACK;
-}
-
-#ifndef RESYNTH
-static
-#endif
-void celt_synthesis(const CELTMode *mode, celt_norm *X, celt_sig * out_syn[],
- opus_val16 *oldBandE, int start, int effEnd, int C, int CC,
- int isTransient, int LM, int downsample,
- int silence, int arch)
-{
- int c, i;
- int M;
- int b;
- int B;
- int N, NB;
- int shift;
- int nbEBands;
- int overlap;
- VARDECL(celt_sig, freq);
- SAVE_STACK;
-
- overlap = mode->overlap;
- nbEBands = mode->nbEBands;
- N = mode->shortMdctSize<<LM;
- ALLOC(freq, N, celt_sig); /**< Interleaved signal MDCTs */
- M = 1<<LM;
-
- if (isTransient)
- {
- B = M;
- NB = mode->shortMdctSize;
- shift = mode->maxLM;
- } else {
- B = 1;
- NB = mode->shortMdctSize<<LM;
- shift = mode->maxLM-LM;
- }
-
- if (CC==2&&C==1)
- {
- /* Copying a mono streams to two channels */
- celt_sig *freq2;
- denormalise_bands(mode, X, freq, oldBandE, start, effEnd, M,
- downsample, silence);
- /* Store a temporary copy in the output buffer because the IMDCT destroys its input. */
- freq2 = out_syn[1]+overlap/2;
- OPUS_COPY(freq2, freq, N);
- for (b=0;b<B;b++)
- clt_mdct_backward(&mode->mdct, &freq2[b], out_syn[0]+NB*b, mode->window, overlap, shift, B, arch);
- for (b=0;b<B;b++)
- clt_mdct_backward(&mode->mdct, &freq[b], out_syn[1]+NB*b, mode->window, overlap, shift, B, arch);
- } else if (CC==1&&C==2)
- {
- /* Downmixing a stereo stream to mono */
- celt_sig *freq2;
- freq2 = out_syn[0]+overlap/2;
- denormalise_bands(mode, X, freq, oldBandE, start, effEnd, M,
- downsample, silence);
- /* Use the output buffer as temp array before downmixing. */
- denormalise_bands(mode, X+N, freq2, oldBandE+nbEBands, start, effEnd, M,
- downsample, silence);
- for (i=0;i<N;i++)
- freq[i] = HALF32(ADD32(freq[i],freq2[i]));
- for (b=0;b<B;b++)
- clt_mdct_backward(&mode->mdct, &freq[b], out_syn[0]+NB*b, mode->window, overlap, shift, B, arch);
- } else {
- /* Normal case (mono or stereo) */
- c=0; do {
- denormalise_bands(mode, X+c*N, freq, oldBandE+c*nbEBands, start, effEnd, M,
- downsample, silence);
- for (b=0;b<B;b++)
- clt_mdct_backward(&mode->mdct, &freq[b], out_syn[c]+NB*b, mode->window, overlap, shift, B, arch);
- } while (++c<CC);
- }
- RESTORE_STACK;
-}
-
-static void tf_decode(int start, int end, int isTransient, int *tf_res, int LM, ec_dec *dec)
-{
- int i, curr, tf_select;
- int tf_select_rsv;
- int tf_changed;
- int logp;
- opus_uint32 budget;
- opus_uint32 tell;
-
- budget = dec->storage*8;
- tell = ec_tell(dec);
- logp = isTransient ? 2 : 4;
- tf_select_rsv = LM>0 && tell+logp+1<=budget;
- budget -= tf_select_rsv;
- tf_changed = curr = 0;
- for (i=start;i<end;i++)
- {
- if (tell+logp<=budget)
- {
- curr ^= ec_dec_bit_logp(dec, logp);
- tell = ec_tell(dec);
- tf_changed |= curr;
- }
- tf_res[i] = curr;
- logp = isTransient ? 4 : 5;
- }
- tf_select = 0;
- if (tf_select_rsv &&
- tf_select_table[LM][4*isTransient+0+tf_changed] !=
- tf_select_table[LM][4*isTransient+2+tf_changed])
- {
- tf_select = ec_dec_bit_logp(dec, 1);
- }
- for (i=start;i<end;i++)
- {
- tf_res[i] = tf_select_table[LM][4*isTransient+2*tf_select+tf_res[i]];
- }
-}
-
-/* The maximum pitch lag to allow in the pitch-based PLC. It's possible to save
- CPU time in the PLC pitch search by making this smaller than MAX_PERIOD. The
- current value corresponds to a pitch of 66.67 Hz. */
-#define PLC_PITCH_LAG_MAX (720)
-/* The minimum pitch lag to allow in the pitch-based PLC. This corresponds to a
- pitch of 480 Hz. */
-#define PLC_PITCH_LAG_MIN (100)
-
-static int celt_plc_pitch_search(celt_sig *decode_mem[2], int C, int arch)
-{
- int pitch_index;
- VARDECL( opus_val16, lp_pitch_buf );
- SAVE_STACK;
- ALLOC( lp_pitch_buf, DECODE_BUFFER_SIZE>>1, opus_val16 );
- pitch_downsample(decode_mem, lp_pitch_buf,
- DECODE_BUFFER_SIZE, C, arch);
- pitch_search(lp_pitch_buf+(PLC_PITCH_LAG_MAX>>1), lp_pitch_buf,
- DECODE_BUFFER_SIZE-PLC_PITCH_LAG_MAX,
- PLC_PITCH_LAG_MAX-PLC_PITCH_LAG_MIN, &pitch_index, arch);
- pitch_index = PLC_PITCH_LAG_MAX-pitch_index;
- RESTORE_STACK;
- return pitch_index;
-}
-
-static void celt_decode_lost(CELTDecoder * OPUS_RESTRICT st, int N, int LM)
-{
- int c;
- int i;
- const int C = st->channels;
- celt_sig *decode_mem[2];
- celt_sig *out_syn[2];
- opus_val16 *lpc;
- opus_val16 *oldBandE, *oldLogE, *oldLogE2, *backgroundLogE;
- const OpusCustomMode *mode;
- int nbEBands;
- int overlap;
- int start;
- int loss_count;
- int noise_based;
- const opus_int16 *eBands;
- SAVE_STACK;
-
- mode = st->mode;
- nbEBands = mode->nbEBands;
- overlap = mode->overlap;
- eBands = mode->eBands;
-
- c=0; do {
- decode_mem[c] = st->_decode_mem + c*(DECODE_BUFFER_SIZE+overlap);
- out_syn[c] = decode_mem[c]+DECODE_BUFFER_SIZE-N;
- } while (++c<C);
- lpc = (opus_val16*)(st->_decode_mem+(DECODE_BUFFER_SIZE+overlap)*C);
- oldBandE = lpc+C*LPC_ORDER;
- oldLogE = oldBandE + 2*nbEBands;
- oldLogE2 = oldLogE + 2*nbEBands;
- backgroundLogE = oldLogE2 + 2*nbEBands;
-
- loss_count = st->loss_count;
- start = st->start;
- noise_based = loss_count >= 5 || start != 0 || st->skip_plc;
- if (noise_based)
- {
- /* Noise-based PLC/CNG */
-#ifdef NORM_ALIASING_HACK
- celt_norm *X;
-#else
- VARDECL(celt_norm, X);
-#endif
- opus_uint32 seed;
- int end;
- int effEnd;
- opus_val16 decay;
- end = st->end;
- effEnd = IMAX(start, IMIN(end, mode->effEBands));
-
-#ifdef NORM_ALIASING_HACK
- /* This is an ugly hack that breaks aliasing rules and would be easily broken,
- but it saves almost 4kB of stack. */
- X = (celt_norm*)(out_syn[C-1]+overlap/2);
-#else
- ALLOC(X, C*N, celt_norm); /**< Interleaved normalised MDCTs */
-#endif
-
- /* Energy decay */
- decay = loss_count==0 ? QCONST16(1.5f, DB_SHIFT) : QCONST16(.5f, DB_SHIFT);
- c=0; do
- {
- for (i=start;i<end;i++)
- oldBandE[c*nbEBands+i] = MAX16(backgroundLogE[c*nbEBands+i], oldBandE[c*nbEBands+i] - decay);
- } while (++c<C);
- seed = st->rng;
- for (c=0;c<C;c++)
- {
- for (i=start;i<effEnd;i++)
- {
- int j;
- int boffs;
- int blen;
- boffs = N*c+(eBands[i]<<LM);
- blen = (eBands[i+1]-eBands[i])<<LM;
- for (j=0;j<blen;j++)
- {
- seed = celt_lcg_rand(seed);
- X[boffs+j] = (celt_norm)((opus_int32)seed>>20);
- }
- renormalise_vector(X+boffs, blen, Q15ONE, st->arch);
- }
- }
- st->rng = seed;
-
- c=0; do {
- OPUS_MOVE(decode_mem[c], decode_mem[c]+N,
- DECODE_BUFFER_SIZE-N+(overlap>>1));
- } while (++c<C);
-
- celt_synthesis(mode, X, out_syn, oldBandE, start, effEnd, C, C, 0, LM, st->downsample, 0, st->arch);
- } else {
- /* Pitch-based PLC */
- const opus_val16 *window;
- opus_val16 fade = Q15ONE;
- int pitch_index;
- VARDECL(opus_val32, etmp);
- VARDECL(opus_val16, exc);
-
- if (loss_count == 0)
- {
- st->last_pitch_index = pitch_index = celt_plc_pitch_search(decode_mem, C, st->arch);
- } else {
- pitch_index = st->last_pitch_index;
- fade = QCONST16(.8f,15);
- }
-
- ALLOC(etmp, overlap, opus_val32);
- ALLOC(exc, MAX_PERIOD, opus_val16);
- window = mode->window;
- c=0; do {
- opus_val16 decay;
- opus_val16 attenuation;
- opus_val32 S1=0;
- celt_sig *buf;
- int extrapolation_offset;
- int extrapolation_len;
- int exc_length;
- int j;
-
- buf = decode_mem[c];
- for (i=0;i<MAX_PERIOD;i++) {
- exc[i] = ROUND16(buf[DECODE_BUFFER_SIZE-MAX_PERIOD+i], SIG_SHIFT);
- }
-
- if (loss_count == 0)
- {
- opus_val32 ac[LPC_ORDER+1];
- /* Compute LPC coefficients for the last MAX_PERIOD samples before
- the first loss so we can work in the excitation-filter domain. */
- _celt_autocorr(exc, ac, window, overlap,
- LPC_ORDER, MAX_PERIOD, st->arch);
- /* Add a noise floor of -40 dB. */
-#ifdef FIXED_POINT
- ac[0] += SHR32(ac[0],13);
-#else
- ac[0] *= 1.0001f;
-#endif
- /* Use lag windowing to stabilize the Levinson-Durbin recursion. */
- for (i=1;i<=LPC_ORDER;i++)
- {
- /*ac[i] *= exp(-.5*(2*M_PI*.002*i)*(2*M_PI*.002*i));*/
-#ifdef FIXED_POINT
- ac[i] -= MULT16_32_Q15(2*i*i, ac[i]);
-#else
- ac[i] -= ac[i]*(0.008f*0.008f)*i*i;
-#endif
- }
- _celt_lpc(lpc+c*LPC_ORDER, ac, LPC_ORDER);
- }
- /* We want the excitation for 2 pitch periods in order to look for a
- decaying signal, but we can't get more than MAX_PERIOD. */
- exc_length = IMIN(2*pitch_index, MAX_PERIOD);
- /* Initialize the LPC history with the samples just before the start
- of the region for which we're computing the excitation. */
- {
- opus_val16 lpc_mem[LPC_ORDER];
- for (i=0;i<LPC_ORDER;i++)
- {
- lpc_mem[i] =
- ROUND16(buf[DECODE_BUFFER_SIZE-exc_length-1-i], SIG_SHIFT);
- }
- /* Compute the excitation for exc_length samples before the loss. */
- celt_fir(exc+MAX_PERIOD-exc_length, lpc+c*LPC_ORDER,
- exc+MAX_PERIOD-exc_length, exc_length, LPC_ORDER, lpc_mem, st->arch);
- }
-
- /* Check if the waveform is decaying, and if so how fast.
- We do this to avoid adding energy when concealing in a segment
- with decaying energy. */
- {
- opus_val32 E1=1, E2=1;
- int decay_length;
-#ifdef FIXED_POINT
- int shift = IMAX(0,2*celt_zlog2(celt_maxabs16(&exc[MAX_PERIOD-exc_length], exc_length))-20);
-#endif
- decay_length = exc_length>>1;
- for (i=0;i<decay_length;i++)
- {
- opus_val16 e;
- e = exc[MAX_PERIOD-decay_length+i];
- E1 += SHR32(MULT16_16(e, e), shift);
- e = exc[MAX_PERIOD-2*decay_length+i];
- E2 += SHR32(MULT16_16(e, e), shift);
- }
- E1 = MIN32(E1, E2);
- decay = celt_sqrt(frac_div32(SHR32(E1, 1), E2));
- }
-
- /* Move the decoder memory one frame to the left to give us room to
- add the data for the new frame. We ignore the overlap that extends
- past the end of the buffer, because we aren't going to use it. */
- OPUS_MOVE(buf, buf+N, DECODE_BUFFER_SIZE-N);
-
- /* Extrapolate from the end of the excitation with a period of
- "pitch_index", scaling down each period by an additional factor of
- "decay". */
- extrapolation_offset = MAX_PERIOD-pitch_index;
- /* We need to extrapolate enough samples to cover a complete MDCT
- window (including overlap/2 samples on both sides). */
- extrapolation_len = N+overlap;
- /* We also apply fading if this is not the first loss. */
- attenuation = MULT16_16_Q15(fade, decay);
- for (i=j=0;i<extrapolation_len;i++,j++)
- {
- opus_val16 tmp;
- if (j >= pitch_index) {
- j -= pitch_index;
- attenuation = MULT16_16_Q15(attenuation, decay);
- }
- buf[DECODE_BUFFER_SIZE-N+i] =
- SHL32(EXTEND32(MULT16_16_Q15(attenuation,
- exc[extrapolation_offset+j])), SIG_SHIFT);
- /* Compute the energy of the previously decoded signal whose
- excitation we're copying. */
- tmp = ROUND16(
- buf[DECODE_BUFFER_SIZE-MAX_PERIOD-N+extrapolation_offset+j],
- SIG_SHIFT);
- S1 += SHR32(MULT16_16(tmp, tmp), 8);
- }
-
- {
- opus_val16 lpc_mem[LPC_ORDER];
- /* Copy the last decoded samples (prior to the overlap region) to
- synthesis filter memory so we can have a continuous signal. */
- for (i=0;i<LPC_ORDER;i++)
- lpc_mem[i] = ROUND16(buf[DECODE_BUFFER_SIZE-N-1-i], SIG_SHIFT);
- /* Apply the synthesis filter to convert the excitation back into
- the signal domain. */
- celt_iir(buf+DECODE_BUFFER_SIZE-N, lpc+c*LPC_ORDER,
- buf+DECODE_BUFFER_SIZE-N, extrapolation_len, LPC_ORDER,
- lpc_mem, st->arch);
- }
-
- /* Check if the synthesis energy is higher than expected, which can
- happen with the signal changes during our window. If so,
- attenuate. */
- {
- opus_val32 S2=0;
- for (i=0;i<extrapolation_len;i++)
- {
- opus_val16 tmp = ROUND16(buf[DECODE_BUFFER_SIZE-N+i], SIG_SHIFT);
- S2 += SHR32(MULT16_16(tmp, tmp), 8);
- }
- /* This checks for an "explosion" in the synthesis. */
-#ifdef FIXED_POINT
- if (!(S1 > SHR32(S2,2)))
-#else
- /* The float test is written this way to catch NaNs in the output
- of the IIR filter at the same time. */
- if (!(S1 > 0.2f*S2))
-#endif
- {
- for (i=0;i<extrapolation_len;i++)
- buf[DECODE_BUFFER_SIZE-N+i] = 0;
- } else if (S1 < S2)
- {
- opus_val16 ratio = celt_sqrt(frac_div32(SHR32(S1,1)+1,S2+1));
- for (i=0;i<overlap;i++)
- {
- opus_val16 tmp_g = Q15ONE
- - MULT16_16_Q15(window[i], Q15ONE-ratio);
- buf[DECODE_BUFFER_SIZE-N+i] =
- MULT16_32_Q15(tmp_g, buf[DECODE_BUFFER_SIZE-N+i]);
- }
- for (i=overlap;i<extrapolation_len;i++)
- {
- buf[DECODE_BUFFER_SIZE-N+i] =
- MULT16_32_Q15(ratio, buf[DECODE_BUFFER_SIZE-N+i]);
- }
- }
- }
-
- /* Apply the pre-filter to the MDCT overlap for the next frame because
- the post-filter will be re-applied in the decoder after the MDCT
- overlap. */
- comb_filter(etmp, buf+DECODE_BUFFER_SIZE,
- st->postfilter_period, st->postfilter_period, overlap,
- -st->postfilter_gain, -st->postfilter_gain,
- st->postfilter_tapset, st->postfilter_tapset, NULL, 0, st->arch);
-
- /* Simulate TDAC on the concealed audio so that it blends with the
- MDCT of the next frame. */
- for (i=0;i<overlap/2;i++)
- {
- buf[DECODE_BUFFER_SIZE+i] =
- MULT16_32_Q15(window[i], etmp[overlap-1-i])
- + MULT16_32_Q15(window[overlap-i-1], etmp[i]);
- }
- } while (++c<C);
- }
-
- st->loss_count = loss_count+1;
-
- RESTORE_STACK;
-}
-
-int celt_decode_with_ec(CELTDecoder * OPUS_RESTRICT st, const unsigned char *data,
- int len, opus_val16 * OPUS_RESTRICT pcm, int frame_size, ec_dec *dec, int accum)
-{
- int c, i, N;
- int spread_decision;
- opus_int32 bits;
- ec_dec _dec;
-#ifdef NORM_ALIASING_HACK
- celt_norm *X;
-#else
- VARDECL(celt_norm, X);
-#endif
- VARDECL(int, fine_quant);
- VARDECL(int, pulses);
- VARDECL(int, cap);
- VARDECL(int, offsets);
- VARDECL(int, fine_priority);
- VARDECL(int, tf_res);
- VARDECL(unsigned char, collapse_masks);
- celt_sig *decode_mem[2];
- celt_sig *out_syn[2];
- opus_val16 *lpc;
- opus_val16 *oldBandE, *oldLogE, *oldLogE2, *backgroundLogE;
-
- int shortBlocks;
- int isTransient;
- int intra_ener;
- const int CC = st->channels;
- int LM, M;
- int start;
- int end;
- int effEnd;
- int codedBands;
- int alloc_trim;
- int postfilter_pitch;
- opus_val16 postfilter_gain;
- int intensity=0;
- int dual_stereo=0;
- opus_int32 total_bits;
- opus_int32 balance;
- opus_int32 tell;
- int dynalloc_logp;
- int postfilter_tapset;
- int anti_collapse_rsv;
- int anti_collapse_on=0;
- int silence;
- int C = st->stream_channels;
- const OpusCustomMode *mode;
- int nbEBands;
- int overlap;
- const opus_int16 *eBands;
- ALLOC_STACK;
-
- mode = st->mode;
- nbEBands = mode->nbEBands;
- overlap = mode->overlap;
- eBands = mode->eBands;
- start = st->start;
- end = st->end;
- frame_size *= st->downsample;
-
- lpc = (opus_val16*)(st->_decode_mem+(DECODE_BUFFER_SIZE+overlap)*CC);
- oldBandE = lpc+CC*LPC_ORDER;
- oldLogE = oldBandE + 2*nbEBands;
- oldLogE2 = oldLogE + 2*nbEBands;
- backgroundLogE = oldLogE2 + 2*nbEBands;
-
-#ifdef CUSTOM_MODES
- if (st->signalling && data!=NULL)
- {
- int data0=data[0];
- /* Convert "standard mode" to Opus header */
- if (mode->Fs==48000 && mode->shortMdctSize==120)
- {
- data0 = fromOpus(data0);
- if (data0<0)
- return OPUS_INVALID_PACKET;
- }
- st->end = end = IMAX(1, mode->effEBands-2*(data0>>5));
- LM = (data0>>3)&0x3;
- C = 1 + ((data0>>2)&0x1);
- data++;
- len--;
- if (LM>mode->maxLM)
- return OPUS_INVALID_PACKET;
- if (frame_size < mode->shortMdctSize<<LM)
- return OPUS_BUFFER_TOO_SMALL;
- else
- frame_size = mode->shortMdctSize<<LM;
- } else {
-#else
- {
-#endif
- for (LM=0;LM<=mode->maxLM;LM++)
- if (mode->shortMdctSize<<LM==frame_size)
- break;
- if (LM>mode->maxLM)
- return OPUS_BAD_ARG;
- }
- M=1<<LM;
-
- if (len<0 || len>1275 || pcm==NULL)
- return OPUS_BAD_ARG;
-
- N = M*mode->shortMdctSize;
- c=0; do {
- decode_mem[c] = st->_decode_mem + c*(DECODE_BUFFER_SIZE+overlap);
- out_syn[c] = decode_mem[c]+DECODE_BUFFER_SIZE-N;
- } while (++c<CC);
-
- effEnd = end;
- if (effEnd > mode->effEBands)
- effEnd = mode->effEBands;
-
- if (data == NULL || len<=1)
- {
- celt_decode_lost(st, N, LM);
- deemphasis(out_syn, pcm, N, CC, st->downsample, mode->preemph, st->preemph_memD, accum);
- RESTORE_STACK;
- return frame_size/st->downsample;
- }
-
- /* Check if there are at least two packets received consecutively before
- * turning on the pitch-based PLC */
- st->skip_plc = st->loss_count != 0;
-
- if (dec == NULL)
- {
- ec_dec_init(&_dec,(unsigned char*)data,len);
- dec = &_dec;
- }
-
- if (C==1)
- {
- for (i=0;i<nbEBands;i++)
- oldBandE[i]=MAX16(oldBandE[i],oldBandE[nbEBands+i]);
- }
-
- total_bits = len*8;
- tell = ec_tell(dec);
-
- if (tell >= total_bits)
- silence = 1;
- else if (tell==1)
- silence = ec_dec_bit_logp(dec, 15);
- else
- silence = 0;
- if (silence)
- {
- /* Pretend we've read all the remaining bits */
- tell = len*8;
- dec->nbits_total+=tell-ec_tell(dec);
- }
-
- postfilter_gain = 0;
- postfilter_pitch = 0;
- postfilter_tapset = 0;
- if (start==0 && tell+16 <= total_bits)
- {
- if(ec_dec_bit_logp(dec, 1))
- {
- int qg, octave;
- octave = ec_dec_uint(dec, 6);
- postfilter_pitch = (16<<octave)+ec_dec_bits(dec, 4+octave)-1;
- qg = ec_dec_bits(dec, 3);
- if (ec_tell(dec)+2<=total_bits)
- postfilter_tapset = ec_dec_icdf(dec, tapset_icdf, 2);
- postfilter_gain = QCONST16(.09375f,15)*(qg+1);
- }
- tell = ec_tell(dec);
- }
-
- if (LM > 0 && tell+3 <= total_bits)
- {
- isTransient = ec_dec_bit_logp(dec, 3);
- tell = ec_tell(dec);
- }
- else
- isTransient = 0;
-
- if (isTransient)
- shortBlocks = M;
- else
- shortBlocks = 0;
-
- /* Decode the global flags (first symbols in the stream) */
- intra_ener = tell+3<=total_bits ? ec_dec_bit_logp(dec, 3) : 0;
- /* Get band energies */
- unquant_coarse_energy(mode, start, end, oldBandE,
- intra_ener, dec, C, LM);
-
- ALLOC(tf_res, nbEBands, int);
- tf_decode(start, end, isTransient, tf_res, LM, dec);
-
- tell = ec_tell(dec);
- spread_decision = SPREAD_NORMAL;
- if (tell+4 <= total_bits)
- spread_decision = ec_dec_icdf(dec, spread_icdf, 5);
-
- ALLOC(cap, nbEBands, int);
-
- init_caps(mode,cap,LM,C);
-
- ALLOC(offsets, nbEBands, int);
-
- dynalloc_logp = 6;
- total_bits<<=BITRES;
- tell = ec_tell_frac(dec);
- for (i=start;i<end;i++)
- {
- int width, quanta;
- int dynalloc_loop_logp;
- int boost;
- width = C*(eBands[i+1]-eBands[i])<<LM;
- /* quanta is 6 bits, but no more than 1 bit/sample
- and no less than 1/8 bit/sample */
- quanta = IMIN(width<<BITRES, IMAX(6<<BITRES, width));
- dynalloc_loop_logp = dynalloc_logp;
- boost = 0;
- while (tell+(dynalloc_loop_logp<<BITRES) < total_bits && boost < cap[i])
- {
- int flag;
- flag = ec_dec_bit_logp(dec, dynalloc_loop_logp);
- tell = ec_tell_frac(dec);
- if (!flag)
- break;
- boost += quanta;
- total_bits -= quanta;
- dynalloc_loop_logp = 1;
- }
- offsets[i] = boost;
- /* Making dynalloc more likely */
- if (boost>0)
- dynalloc_logp = IMAX(2, dynalloc_logp-1);
- }
-
- ALLOC(fine_quant, nbEBands, int);
- alloc_trim = tell+(6<<BITRES) <= total_bits ?
- ec_dec_icdf(dec, trim_icdf, 7) : 5;
-
- bits = (((opus_int32)len*8)<<BITRES) - ec_tell_frac(dec) - 1;
- anti_collapse_rsv = isTransient&&LM>=2&&bits>=((LM+2)<<BITRES) ? (1<<BITRES) : 0;
- bits -= anti_collapse_rsv;
-
- ALLOC(pulses, nbEBands, int);
- ALLOC(fine_priority, nbEBands, int);
-
- codedBands = compute_allocation(mode, start, end, offsets, cap,
- alloc_trim, &intensity, &dual_stereo, bits, &balance, pulses,
- fine_quant, fine_priority, C, LM, dec, 0, 0, 0);
-
- unquant_fine_energy(mode, start, end, oldBandE, fine_quant, dec, C);
-
- c=0; do {
- OPUS_MOVE(decode_mem[c], decode_mem[c]+N, DECODE_BUFFER_SIZE-N+overlap/2);
- } while (++c<CC);
-
- /* Decode fixed codebook */
- ALLOC(collapse_masks, C*nbEBands, unsigned char);
-
-#ifdef NORM_ALIASING_HACK
- /* This is an ugly hack that breaks aliasing rules and would be easily broken,
- but it saves almost 4kB of stack. */
- X = (celt_norm*)(out_syn[CC-1]+overlap/2);
-#else
- ALLOC(X, C*N, celt_norm); /**< Interleaved normalised MDCTs */
-#endif
-
- quant_all_bands(0, mode, start, end, X, C==2 ? X+N : NULL, collapse_masks,
- NULL, pulses, shortBlocks, spread_decision, dual_stereo, intensity, tf_res,
- len*(8<<BITRES)-anti_collapse_rsv, balance, dec, LM, codedBands, &st->rng, st->arch);
-
- if (anti_collapse_rsv > 0)
- {
- anti_collapse_on = ec_dec_bits(dec, 1);
- }
-
- unquant_energy_finalise(mode, start, end, oldBandE,
- fine_quant, fine_priority, len*8-ec_tell(dec), dec, C);
-
- if (anti_collapse_on)
- anti_collapse(mode, X, collapse_masks, LM, C, N,
- start, end, oldBandE, oldLogE, oldLogE2, pulses, st->rng, st->arch);
-
- if (silence)
- {
- for (i=0;i<C*nbEBands;i++)
- oldBandE[i] = -QCONST16(28.f,DB_SHIFT);
- }
-
- celt_synthesis(mode, X, out_syn, oldBandE, start, effEnd,
- C, CC, isTransient, LM, st->downsample, silence, st->arch);
-
- c=0; do {
- st->postfilter_period=IMAX(st->postfilter_period, COMBFILTER_MINPERIOD);
- st->postfilter_period_old=IMAX(st->postfilter_period_old, COMBFILTER_MINPERIOD);
- comb_filter(out_syn[c], out_syn[c], st->postfilter_period_old, st->postfilter_period, mode->shortMdctSize,
- st->postfilter_gain_old, st->postfilter_gain, st->postfilter_tapset_old, st->postfilter_tapset,
- mode->window, overlap, st->arch);
- if (LM!=0)
- comb_filter(out_syn[c]+mode->shortMdctSize, out_syn[c]+mode->shortMdctSize, st->postfilter_period, postfilter_pitch, N-mode->shortMdctSize,
- st->postfilter_gain, postfilter_gain, st->postfilter_tapset, postfilter_tapset,
- mode->window, overlap, st->arch);
-
- } while (++c<CC);
- st->postfilter_period_old = st->postfilter_period;
- st->postfilter_gain_old = st->postfilter_gain;
- st->postfilter_tapset_old = st->postfilter_tapset;
- st->postfilter_period = postfilter_pitch;
- st->postfilter_gain = postfilter_gain;
- st->postfilter_tapset = postfilter_tapset;
- if (LM!=0)
- {
- st->postfilter_period_old = st->postfilter_period;
- st->postfilter_gain_old = st->postfilter_gain;
- st->postfilter_tapset_old = st->postfilter_tapset;
- }
-
- if (C==1)
- OPUS_COPY(&oldBandE[nbEBands], oldBandE, nbEBands);
-
- /* In case start or end were to change */
- if (!isTransient)
- {
- opus_val16 max_background_increase;
- OPUS_COPY(oldLogE2, oldLogE, 2*nbEBands);
- OPUS_COPY(oldLogE, oldBandE, 2*nbEBands);
- /* In normal circumstances, we only allow the noise floor to increase by
- up to 2.4 dB/second, but when we're in DTX, we allow up to 6 dB
- increase for each update.*/
- if (st->loss_count < 10)
- max_background_increase = M*QCONST16(0.001f,DB_SHIFT);
- else
- max_background_increase = QCONST16(1.f,DB_SHIFT);
- for (i=0;i<2*nbEBands;i++)
- backgroundLogE[i] = MIN16(backgroundLogE[i] + max_background_increase, oldBandE[i]);
- } else {
- for (i=0;i<2*nbEBands;i++)
- oldLogE[i] = MIN16(oldLogE[i], oldBandE[i]);
- }
- c=0; do
- {
- for (i=0;i<start;i++)
- {
- oldBandE[c*nbEBands+i]=0;
- oldLogE[c*nbEBands+i]=oldLogE2[c*nbEBands+i]=-QCONST16(28.f,DB_SHIFT);
- }
- for (i=end;i<nbEBands;i++)
- {
- oldBandE[c*nbEBands+i]=0;
- oldLogE[c*nbEBands+i]=oldLogE2[c*nbEBands+i]=-QCONST16(28.f,DB_SHIFT);
- }
- } while (++c<2);
- st->rng = dec->rng;
-
- deemphasis(out_syn, pcm, N, CC, st->downsample, mode->preemph, st->preemph_memD, accum);
- st->loss_count = 0;
- RESTORE_STACK;
- if (ec_tell(dec) > 8*len)
- return OPUS_INTERNAL_ERROR;
- if(ec_get_error(dec))
- st->error = 1;
- return frame_size/st->downsample;
-}
-
-
-#ifdef CUSTOM_MODES
-
-#ifdef FIXED_POINT
-int opus_custom_decode(CELTDecoder * OPUS_RESTRICT st, const unsigned char *data, int len, opus_int16 * OPUS_RESTRICT pcm, int frame_size)
-{
- return celt_decode_with_ec(st, data, len, pcm, frame_size, NULL, 0);
-}
-
-#ifndef DISABLE_FLOAT_API
-int opus_custom_decode_float(CELTDecoder * OPUS_RESTRICT st, const unsigned char *data, int len, float * OPUS_RESTRICT pcm, int frame_size)
-{
- int j, ret, C, N;
- VARDECL(opus_int16, out);
- ALLOC_STACK;
-
- if (pcm==NULL)
- return OPUS_BAD_ARG;
-
- C = st->channels;
- N = frame_size;
-
- ALLOC(out, C*N, opus_int16);
- ret=celt_decode_with_ec(st, data, len, out, frame_size, NULL, 0);
- if (ret>0)
- for (j=0;j<C*ret;j++)
- pcm[j]=out[j]*(1.f/32768.f);
-
- RESTORE_STACK;
- return ret;
-}
-#endif /* DISABLE_FLOAT_API */
-
-#else
-
-int opus_custom_decode_float(CELTDecoder * OPUS_RESTRICT st, const unsigned char *data, int len, float * OPUS_RESTRICT pcm, int frame_size)
-{
- return celt_decode_with_ec(st, data, len, pcm, frame_size, NULL, 0);
-}
-
-int opus_custom_decode(CELTDecoder * OPUS_RESTRICT st, const unsigned char *data, int len, opus_int16 * OPUS_RESTRICT pcm, int frame_size)
-{
- int j, ret, C, N;
- VARDECL(celt_sig, out);
- ALLOC_STACK;
-
- if (pcm==NULL)
- return OPUS_BAD_ARG;
-
- C = st->channels;
- N = frame_size;
- ALLOC(out, C*N, celt_sig);
-
- ret=celt_decode_with_ec(st, data, len, out, frame_size, NULL, 0);
-
- if (ret>0)
- for (j=0;j<C*ret;j++)
- pcm[j] = FLOAT2INT16 (out[j]);
-
- RESTORE_STACK;
- return ret;
-}
-
-#endif
-#endif /* CUSTOM_MODES */
-
-int opus_custom_decoder_ctl(CELTDecoder * OPUS_RESTRICT st, int request, ...)
-{
- va_list ap;
-
- va_start(ap, request);
- switch (request)
- {
- case CELT_SET_START_BAND_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<0 || value>=st->mode->nbEBands)
- goto bad_arg;
- st->start = value;
- }
- break;
- case CELT_SET_END_BAND_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<1 || value>st->mode->nbEBands)
- goto bad_arg;
- st->end = value;
- }
- break;
- case CELT_SET_CHANNELS_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<1 || value>2)
- goto bad_arg;
- st->stream_channels = value;
- }
- break;
- case CELT_GET_AND_CLEAR_ERROR_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (value==NULL)
- goto bad_arg;
- *value=st->error;
- st->error = 0;
- }
- break;
- case OPUS_GET_LOOKAHEAD_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (value==NULL)
- goto bad_arg;
- *value = st->overlap/st->downsample;
- }
- break;
- case OPUS_RESET_STATE:
- {
- int i;
- opus_val16 *lpc, *oldBandE, *oldLogE, *oldLogE2;
- lpc = (opus_val16*)(st->_decode_mem+(DECODE_BUFFER_SIZE+st->overlap)*st->channels);
- oldBandE = lpc+st->channels*LPC_ORDER;
- oldLogE = oldBandE + 2*st->mode->nbEBands;
- oldLogE2 = oldLogE + 2*st->mode->nbEBands;
- OPUS_CLEAR((char*)&st->DECODER_RESET_START,
- opus_custom_decoder_get_size(st->mode, st->channels)-
- ((char*)&st->DECODER_RESET_START - (char*)st));
- for (i=0;i<2*st->mode->nbEBands;i++)
- oldLogE[i]=oldLogE2[i]=-QCONST16(28.f,DB_SHIFT);
- st->skip_plc = 1;
- }
- break;
- case OPUS_GET_PITCH_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (value==NULL)
- goto bad_arg;
- *value = st->postfilter_period;
- }
- break;
- case CELT_GET_MODE_REQUEST:
- {
- const CELTMode ** value = va_arg(ap, const CELTMode**);
- if (value==0)
- goto bad_arg;
- *value=st->mode;
- }
- break;
- case CELT_SET_SIGNALLING_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->signalling = value;
- }
- break;
- case OPUS_GET_FINAL_RANGE_REQUEST:
- {
- opus_uint32 * value = va_arg(ap, opus_uint32 *);
- if (value==0)
- goto bad_arg;
- *value=st->rng;
- }
- break;
- default:
- goto bad_request;
- }
- va_end(ap);
- return OPUS_OK;
-bad_arg:
- va_end(ap);
- return OPUS_BAD_ARG;
-bad_request:
- va_end(ap);
- return OPUS_UNIMPLEMENTED;
-}
diff --git a/thirdparty/opus/celt/celt_encoder.c b/thirdparty/opus/celt/celt_encoder.c
deleted file mode 100644
index 3ee7a4d3f7..0000000000
--- a/thirdparty/opus/celt/celt_encoder.c
+++ /dev/null
@@ -1,2410 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2010 Xiph.Org Foundation
- Copyright (c) 2008 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#define CELT_ENCODER_C
-
-#include "cpu_support.h"
-#include "os_support.h"
-#include "mdct.h"
-#include <math.h>
-#include "celt.h"
-#include "pitch.h"
-#include "bands.h"
-#include "modes.h"
-#include "entcode.h"
-#include "quant_bands.h"
-#include "rate.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "float_cast.h"
-#include <stdarg.h>
-#include "celt_lpc.h"
-#include "vq.h"
-
-
-/** Encoder state
- @brief Encoder state
- */
-struct OpusCustomEncoder {
- const OpusCustomMode *mode; /**< Mode used by the encoder */
- int channels;
- int stream_channels;
-
- int force_intra;
- int clip;
- int disable_pf;
- int complexity;
- int upsample;
- int start, end;
-
- opus_int32 bitrate;
- int vbr;
- int signalling;
- int constrained_vbr; /* If zero, VBR can do whatever it likes with the rate */
- int loss_rate;
- int lsb_depth;
- int variable_duration;
- int lfe;
- int arch;
-
- /* Everything beyond this point gets cleared on a reset */
-#define ENCODER_RESET_START rng
-
- opus_uint32 rng;
- int spread_decision;
- opus_val32 delayedIntra;
- int tonal_average;
- int lastCodedBands;
- int hf_average;
- int tapset_decision;
-
- int prefilter_period;
- opus_val16 prefilter_gain;
- int prefilter_tapset;
-#ifdef RESYNTH
- int prefilter_period_old;
- opus_val16 prefilter_gain_old;
- int prefilter_tapset_old;
-#endif
- int consec_transient;
- AnalysisInfo analysis;
-
- opus_val32 preemph_memE[2];
- opus_val32 preemph_memD[2];
-
- /* VBR-related parameters */
- opus_int32 vbr_reservoir;
- opus_int32 vbr_drift;
- opus_int32 vbr_offset;
- opus_int32 vbr_count;
- opus_val32 overlap_max;
- opus_val16 stereo_saving;
- int intensity;
- opus_val16 *energy_mask;
- opus_val16 spec_avg;
-
-#ifdef RESYNTH
- /* +MAX_PERIOD/2 to make space for overlap */
- celt_sig syn_mem[2][2*MAX_PERIOD+MAX_PERIOD/2];
-#endif
-
- celt_sig in_mem[1]; /* Size = channels*mode->overlap */
- /* celt_sig prefilter_mem[], Size = channels*COMBFILTER_MAXPERIOD */
- /* opus_val16 oldBandE[], Size = channels*mode->nbEBands */
- /* opus_val16 oldLogE[], Size = channels*mode->nbEBands */
- /* opus_val16 oldLogE2[], Size = channels*mode->nbEBands */
-};
-
-int celt_encoder_get_size(int channels)
-{
- CELTMode *mode = opus_custom_mode_create(48000, 960, NULL);
- return opus_custom_encoder_get_size(mode, channels);
-}
-
-OPUS_CUSTOM_NOSTATIC int opus_custom_encoder_get_size(const CELTMode *mode, int channels)
-{
- int size = sizeof(struct CELTEncoder)
- + (channels*mode->overlap-1)*sizeof(celt_sig) /* celt_sig in_mem[channels*mode->overlap]; */
- + channels*COMBFILTER_MAXPERIOD*sizeof(celt_sig) /* celt_sig prefilter_mem[channels*COMBFILTER_MAXPERIOD]; */
- + 3*channels*mode->nbEBands*sizeof(opus_val16); /* opus_val16 oldBandE[channels*mode->nbEBands]; */
- /* opus_val16 oldLogE[channels*mode->nbEBands]; */
- /* opus_val16 oldLogE2[channels*mode->nbEBands]; */
- return size;
-}
-
-#ifdef CUSTOM_MODES
-CELTEncoder *opus_custom_encoder_create(const CELTMode *mode, int channels, int *error)
-{
- int ret;
- CELTEncoder *st = (CELTEncoder *)opus_alloc(opus_custom_encoder_get_size(mode, channels));
- /* init will handle the NULL case */
- ret = opus_custom_encoder_init(st, mode, channels);
- if (ret != OPUS_OK)
- {
- opus_custom_encoder_destroy(st);
- st = NULL;
- }
- if (error)
- *error = ret;
- return st;
-}
-#endif /* CUSTOM_MODES */
-
-static int opus_custom_encoder_init_arch(CELTEncoder *st, const CELTMode *mode,
- int channels, int arch)
-{
- if (channels < 0 || channels > 2)
- return OPUS_BAD_ARG;
-
- if (st==NULL || mode==NULL)
- return OPUS_ALLOC_FAIL;
-
- OPUS_CLEAR((char*)st, opus_custom_encoder_get_size(mode, channels));
-
- st->mode = mode;
- st->stream_channels = st->channels = channels;
-
- st->upsample = 1;
- st->start = 0;
- st->end = st->mode->effEBands;
- st->signalling = 1;
-
- st->arch = arch;
-
- st->constrained_vbr = 1;
- st->clip = 1;
-
- st->bitrate = OPUS_BITRATE_MAX;
- st->vbr = 0;
- st->force_intra = 0;
- st->complexity = 5;
- st->lsb_depth=24;
-
- opus_custom_encoder_ctl(st, OPUS_RESET_STATE);
-
- return OPUS_OK;
-}
-
-#ifdef CUSTOM_MODES
-int opus_custom_encoder_init(CELTEncoder *st, const CELTMode *mode, int channels)
-{
- return opus_custom_encoder_init_arch(st, mode, channels, opus_select_arch());
-}
-#endif
-
-int celt_encoder_init(CELTEncoder *st, opus_int32 sampling_rate, int channels,
- int arch)
-{
- int ret;
- ret = opus_custom_encoder_init_arch(st,
- opus_custom_mode_create(48000, 960, NULL), channels, arch);
- if (ret != OPUS_OK)
- return ret;
- st->upsample = resampling_factor(sampling_rate);
- return OPUS_OK;
-}
-
-#ifdef CUSTOM_MODES
-void opus_custom_encoder_destroy(CELTEncoder *st)
-{
- opus_free(st);
-}
-#endif /* CUSTOM_MODES */
-
-
-static int transient_analysis(const opus_val32 * OPUS_RESTRICT in, int len, int C,
- opus_val16 *tf_estimate, int *tf_chan)
-{
- int i;
- VARDECL(opus_val16, tmp);
- opus_val32 mem0,mem1;
- int is_transient = 0;
- opus_int32 mask_metric = 0;
- int c;
- opus_val16 tf_max;
- int len2;
- /* Table of 6*64/x, trained on real data to minimize the average error */
- static const unsigned char inv_table[128] = {
- 255,255,156,110, 86, 70, 59, 51, 45, 40, 37, 33, 31, 28, 26, 25,
- 23, 22, 21, 20, 19, 18, 17, 16, 16, 15, 15, 14, 13, 13, 12, 12,
- 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 9, 9, 8, 8,
- 8, 8, 8, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
- };
- SAVE_STACK;
- ALLOC(tmp, len, opus_val16);
-
- len2=len/2;
- for (c=0;c<C;c++)
- {
- opus_val32 mean;
- opus_int32 unmask=0;
- opus_val32 norm;
- opus_val16 maxE;
- mem0=0;
- mem1=0;
- /* High-pass filter: (1 - 2*z^-1 + z^-2) / (1 - z^-1 + .5*z^-2) */
- for (i=0;i<len;i++)
- {
- opus_val32 x,y;
- x = SHR32(in[i+c*len],SIG_SHIFT);
- y = ADD32(mem0, x);
-#ifdef FIXED_POINT
- mem0 = mem1 + y - SHL32(x,1);
- mem1 = x - SHR32(y,1);
-#else
- mem0 = mem1 + y - 2*x;
- mem1 = x - .5f*y;
-#endif
- tmp[i] = EXTRACT16(SHR32(y,2));
- /*printf("%f ", tmp[i]);*/
- }
- /*printf("\n");*/
- /* First few samples are bad because we don't propagate the memory */
- OPUS_CLEAR(tmp, 12);
-
-#ifdef FIXED_POINT
- /* Normalize tmp to max range */
- {
- int shift=0;
- shift = 14-celt_ilog2(1+celt_maxabs16(tmp, len));
- if (shift!=0)
- {
- for (i=0;i<len;i++)
- tmp[i] = SHL16(tmp[i], shift);
- }
- }
-#endif
-
- mean=0;
- mem0=0;
- /* Grouping by two to reduce complexity */
- /* Forward pass to compute the post-echo threshold*/
- for (i=0;i<len2;i++)
- {
- opus_val16 x2 = PSHR32(MULT16_16(tmp[2*i],tmp[2*i]) + MULT16_16(tmp[2*i+1],tmp[2*i+1]),16);
- mean += x2;
-#ifdef FIXED_POINT
- /* FIXME: Use PSHR16() instead */
- tmp[i] = mem0 + PSHR32(x2-mem0,4);
-#else
- tmp[i] = mem0 + MULT16_16_P15(QCONST16(.0625f,15),x2-mem0);
-#endif
- mem0 = tmp[i];
- }
-
- mem0=0;
- maxE=0;
- /* Backward pass to compute the pre-echo threshold */
- for (i=len2-1;i>=0;i--)
- {
-#ifdef FIXED_POINT
- /* FIXME: Use PSHR16() instead */
- tmp[i] = mem0 + PSHR32(tmp[i]-mem0,3);
-#else
- tmp[i] = mem0 + MULT16_16_P15(QCONST16(0.125f,15),tmp[i]-mem0);
-#endif
- mem0 = tmp[i];
- maxE = MAX16(maxE, mem0);
- }
- /*for (i=0;i<len2;i++)printf("%f ", tmp[i]/mean);printf("\n");*/
-
- /* Compute the ratio of the "frame energy" over the harmonic mean of the energy.
- This essentially corresponds to a bitrate-normalized temporal noise-to-mask
- ratio */
-
- /* As a compromise with the old transient detector, frame energy is the
- geometric mean of the energy and half the max */
-#ifdef FIXED_POINT
- /* Costs two sqrt() to avoid overflows */
- mean = MULT16_16(celt_sqrt(mean), celt_sqrt(MULT16_16(maxE,len2>>1)));
-#else
- mean = celt_sqrt(mean * maxE*.5*len2);
-#endif
- /* Inverse of the mean energy in Q15+6 */
- norm = SHL32(EXTEND32(len2),6+14)/ADD32(EPSILON,SHR32(mean,1));
- /* Compute harmonic mean discarding the unreliable boundaries
- The data is smooth, so we only take 1/4th of the samples */
- unmask=0;
- for (i=12;i<len2-5;i+=4)
- {
- int id;
-#ifdef FIXED_POINT
- id = MAX32(0,MIN32(127,MULT16_32_Q15(tmp[i]+EPSILON,norm))); /* Do not round to nearest */
-#else
- id = (int)MAX32(0,MIN32(127,floor(64*norm*(tmp[i]+EPSILON)))); /* Do not round to nearest */
-#endif
- unmask += inv_table[id];
- }
- /*printf("%d\n", unmask);*/
- /* Normalize, compensate for the 1/4th of the sample and the factor of 6 in the inverse table */
- unmask = 64*unmask*4/(6*(len2-17));
- if (unmask>mask_metric)
- {
- *tf_chan = c;
- mask_metric = unmask;
- }
- }
- is_transient = mask_metric>200;
-
- /* Arbitrary metric for VBR boost */
- tf_max = MAX16(0,celt_sqrt(27*mask_metric)-42);
- /* *tf_estimate = 1 + MIN16(1, sqrt(MAX16(0, tf_max-30))/20); */
- *tf_estimate = celt_sqrt(MAX32(0, SHL32(MULT16_16(QCONST16(0.0069,14),MIN16(163,tf_max)),14)-QCONST32(0.139,28)));
- /*printf("%d %f\n", tf_max, mask_metric);*/
- RESTORE_STACK;
-#ifdef FUZZING
- is_transient = rand()&0x1;
-#endif
- /*printf("%d %f %d\n", is_transient, (float)*tf_estimate, tf_max);*/
- return is_transient;
-}
-
-/* Looks for sudden increases of energy to decide whether we need to patch
- the transient decision */
-static int patch_transient_decision(opus_val16 *newE, opus_val16 *oldE, int nbEBands,
- int start, int end, int C)
-{
- int i, c;
- opus_val32 mean_diff=0;
- opus_val16 spread_old[26];
- /* Apply an aggressive (-6 dB/Bark) spreading function to the old frame to
- avoid false detection caused by irrelevant bands */
- if (C==1)
- {
- spread_old[start] = oldE[start];
- for (i=start+1;i<end;i++)
- spread_old[i] = MAX16(spread_old[i-1]-QCONST16(1.0f, DB_SHIFT), oldE[i]);
- } else {
- spread_old[start] = MAX16(oldE[start],oldE[start+nbEBands]);
- for (i=start+1;i<end;i++)
- spread_old[i] = MAX16(spread_old[i-1]-QCONST16(1.0f, DB_SHIFT),
- MAX16(oldE[i],oldE[i+nbEBands]));
- }
- for (i=end-2;i>=start;i--)
- spread_old[i] = MAX16(spread_old[i], spread_old[i+1]-QCONST16(1.0f, DB_SHIFT));
- /* Compute mean increase */
- c=0; do {
- for (i=IMAX(2,start);i<end-1;i++)
- {
- opus_val16 x1, x2;
- x1 = MAX16(0, newE[i + c*nbEBands]);
- x2 = MAX16(0, spread_old[i]);
- mean_diff = ADD32(mean_diff, EXTEND32(MAX16(0, SUB16(x1, x2))));
- }
- } while (++c<C);
- mean_diff = DIV32(mean_diff, C*(end-1-IMAX(2,start)));
- /*printf("%f %f %d\n", mean_diff, max_diff, count);*/
- return mean_diff > QCONST16(1.f, DB_SHIFT);
-}
-
-/** Apply window and compute the MDCT for all sub-frames and
- all channels in a frame */
-static void compute_mdcts(const CELTMode *mode, int shortBlocks, celt_sig * OPUS_RESTRICT in,
- celt_sig * OPUS_RESTRICT out, int C, int CC, int LM, int upsample,
- int arch)
-{
- const int overlap = mode->overlap;
- int N;
- int B;
- int shift;
- int i, b, c;
- if (shortBlocks)
- {
- B = shortBlocks;
- N = mode->shortMdctSize;
- shift = mode->maxLM;
- } else {
- B = 1;
- N = mode->shortMdctSize<<LM;
- shift = mode->maxLM-LM;
- }
- c=0; do {
- for (b=0;b<B;b++)
- {
- /* Interleaving the sub-frames while doing the MDCTs */
- clt_mdct_forward(&mode->mdct, in+c*(B*N+overlap)+b*N,
- &out[b+c*N*B], mode->window, overlap, shift, B,
- arch);
- }
- } while (++c<CC);
- if (CC==2&&C==1)
- {
- for (i=0;i<B*N;i++)
- out[i] = ADD32(HALF32(out[i]), HALF32(out[B*N+i]));
- }
- if (upsample != 1)
- {
- c=0; do
- {
- int bound = B*N/upsample;
- for (i=0;i<bound;i++)
- out[c*B*N+i] *= upsample;
- OPUS_CLEAR(&out[c*B*N+bound], B*N-bound);
- } while (++c<C);
- }
-}
-
-
-void celt_preemphasis(const opus_val16 * OPUS_RESTRICT pcmp, celt_sig * OPUS_RESTRICT inp,
- int N, int CC, int upsample, const opus_val16 *coef, celt_sig *mem, int clip)
-{
- int i;
- opus_val16 coef0;
- celt_sig m;
- int Nu;
-
- coef0 = coef[0];
- m = *mem;
-
- /* Fast path for the normal 48kHz case and no clipping */
- if (coef[1] == 0 && upsample == 1 && !clip)
- {
- for (i=0;i<N;i++)
- {
- opus_val16 x;
- x = SCALEIN(pcmp[CC*i]);
- /* Apply pre-emphasis */
- inp[i] = SHL32(x, SIG_SHIFT) - m;
- m = SHR32(MULT16_16(coef0, x), 15-SIG_SHIFT);
- }
- *mem = m;
- return;
- }
-
- Nu = N/upsample;
- if (upsample!=1)
- {
- OPUS_CLEAR(inp, N);
- }
- for (i=0;i<Nu;i++)
- inp[i*upsample] = SCALEIN(pcmp[CC*i]);
-
-#ifndef FIXED_POINT
- if (clip)
- {
- /* Clip input to avoid encoding non-portable files */
- for (i=0;i<Nu;i++)
- inp[i*upsample] = MAX32(-65536.f, MIN32(65536.f,inp[i*upsample]));
- }
-#else
- (void)clip; /* Avoids a warning about clip being unused. */
-#endif
-#ifdef CUSTOM_MODES
- if (coef[1] != 0)
- {
- opus_val16 coef1 = coef[1];
- opus_val16 coef2 = coef[2];
- for (i=0;i<N;i++)
- {
- celt_sig x, tmp;
- x = inp[i];
- /* Apply pre-emphasis */
- tmp = MULT16_16(coef2, x);
- inp[i] = tmp + m;
- m = MULT16_32_Q15(coef1, inp[i]) - MULT16_32_Q15(coef0, tmp);
- }
- } else
-#endif
- {
- for (i=0;i<N;i++)
- {
- opus_val16 x;
- x = inp[i];
- /* Apply pre-emphasis */
- inp[i] = SHL32(x, SIG_SHIFT) - m;
- m = SHR32(MULT16_16(coef0, x), 15-SIG_SHIFT);
- }
- }
- *mem = m;
-}
-
-
-
-static opus_val32 l1_metric(const celt_norm *tmp, int N, int LM, opus_val16 bias)
-{
- int i;
- opus_val32 L1;
- L1 = 0;
- for (i=0;i<N;i++)
- L1 += EXTEND32(ABS16(tmp[i]));
- /* When in doubt, prefer good freq resolution */
- L1 = MAC16_32_Q15(L1, LM*bias, L1);
- return L1;
-
-}
-
-static int tf_analysis(const CELTMode *m, int len, int isTransient,
- int *tf_res, int lambda, celt_norm *X, int N0, int LM,
- int *tf_sum, opus_val16 tf_estimate, int tf_chan)
-{
- int i;
- VARDECL(int, metric);
- int cost0;
- int cost1;
- VARDECL(int, path0);
- VARDECL(int, path1);
- VARDECL(celt_norm, tmp);
- VARDECL(celt_norm, tmp_1);
- int sel;
- int selcost[2];
- int tf_select=0;
- opus_val16 bias;
-
- SAVE_STACK;
- bias = MULT16_16_Q14(QCONST16(.04f,15), MAX16(-QCONST16(.25f,14), QCONST16(.5f,14)-tf_estimate));
- /*printf("%f ", bias);*/
-
- ALLOC(metric, len, int);
- ALLOC(tmp, (m->eBands[len]-m->eBands[len-1])<<LM, celt_norm);
- ALLOC(tmp_1, (m->eBands[len]-m->eBands[len-1])<<LM, celt_norm);
- ALLOC(path0, len, int);
- ALLOC(path1, len, int);
-
- *tf_sum = 0;
- for (i=0;i<len;i++)
- {
- int k, N;
- int narrow;
- opus_val32 L1, best_L1;
- int best_level=0;
- N = (m->eBands[i+1]-m->eBands[i])<<LM;
- /* band is too narrow to be split down to LM=-1 */
- narrow = (m->eBands[i+1]-m->eBands[i])==1;
- OPUS_COPY(tmp, &X[tf_chan*N0 + (m->eBands[i]<<LM)], N);
- /* Just add the right channel if we're in stereo */
- /*if (C==2)
- for (j=0;j<N;j++)
- tmp[j] = ADD16(SHR16(tmp[j], 1),SHR16(X[N0+j+(m->eBands[i]<<LM)], 1));*/
- L1 = l1_metric(tmp, N, isTransient ? LM : 0, bias);
- best_L1 = L1;
- /* Check the -1 case for transients */
- if (isTransient && !narrow)
- {
- OPUS_COPY(tmp_1, tmp, N);
- haar1(tmp_1, N>>LM, 1<<LM);
- L1 = l1_metric(tmp_1, N, LM+1, bias);
- if (L1<best_L1)
- {
- best_L1 = L1;
- best_level = -1;
- }
- }
- /*printf ("%f ", L1);*/
- for (k=0;k<LM+!(isTransient||narrow);k++)
- {
- int B;
-
- if (isTransient)
- B = (LM-k-1);
- else
- B = k+1;
-
- haar1(tmp, N>>k, 1<<k);
-
- L1 = l1_metric(tmp, N, B, bias);
-
- if (L1 < best_L1)
- {
- best_L1 = L1;
- best_level = k+1;
- }
- }
- /*printf ("%d ", isTransient ? LM-best_level : best_level);*/
- /* metric is in Q1 to be able to select the mid-point (-0.5) for narrower bands */
- if (isTransient)
- metric[i] = 2*best_level;
- else
- metric[i] = -2*best_level;
- *tf_sum += (isTransient ? LM : 0) - metric[i]/2;
- /* For bands that can't be split to -1, set the metric to the half-way point to avoid
- biasing the decision */
- if (narrow && (metric[i]==0 || metric[i]==-2*LM))
- metric[i]-=1;
- /*printf("%d ", metric[i]);*/
- }
- /*printf("\n");*/
- /* Search for the optimal tf resolution, including tf_select */
- tf_select = 0;
- for (sel=0;sel<2;sel++)
- {
- cost0 = 0;
- cost1 = isTransient ? 0 : lambda;
- for (i=1;i<len;i++)
- {
- int curr0, curr1;
- curr0 = IMIN(cost0, cost1 + lambda);
- curr1 = IMIN(cost0 + lambda, cost1);
- cost0 = curr0 + abs(metric[i]-2*tf_select_table[LM][4*isTransient+2*sel+0]);
- cost1 = curr1 + abs(metric[i]-2*tf_select_table[LM][4*isTransient+2*sel+1]);
- }
- cost0 = IMIN(cost0, cost1);
- selcost[sel]=cost0;
- }
- /* For now, we're conservative and only allow tf_select=1 for transients.
- * If tests confirm it's useful for non-transients, we could allow it. */
- if (selcost[1]<selcost[0] && isTransient)
- tf_select=1;
- cost0 = 0;
- cost1 = isTransient ? 0 : lambda;
- /* Viterbi forward pass */
- for (i=1;i<len;i++)
- {
- int curr0, curr1;
- int from0, from1;
-
- from0 = cost0;
- from1 = cost1 + lambda;
- if (from0 < from1)
- {
- curr0 = from0;
- path0[i]= 0;
- } else {
- curr0 = from1;
- path0[i]= 1;
- }
-
- from0 = cost0 + lambda;
- from1 = cost1;
- if (from0 < from1)
- {
- curr1 = from0;
- path1[i]= 0;
- } else {
- curr1 = from1;
- path1[i]= 1;
- }
- cost0 = curr0 + abs(metric[i]-2*tf_select_table[LM][4*isTransient+2*tf_select+0]);
- cost1 = curr1 + abs(metric[i]-2*tf_select_table[LM][4*isTransient+2*tf_select+1]);
- }
- tf_res[len-1] = cost0 < cost1 ? 0 : 1;
- /* Viterbi backward pass to check the decisions */
- for (i=len-2;i>=0;i--)
- {
- if (tf_res[i+1] == 1)
- tf_res[i] = path1[i+1];
- else
- tf_res[i] = path0[i+1];
- }
- /*printf("%d %f\n", *tf_sum, tf_estimate);*/
- RESTORE_STACK;
-#ifdef FUZZING
- tf_select = rand()&0x1;
- tf_res[0] = rand()&0x1;
- for (i=1;i<len;i++)
- tf_res[i] = tf_res[i-1] ^ ((rand()&0xF) == 0);
-#endif
- return tf_select;
-}
-
-static void tf_encode(int start, int end, int isTransient, int *tf_res, int LM, int tf_select, ec_enc *enc)
-{
- int curr, i;
- int tf_select_rsv;
- int tf_changed;
- int logp;
- opus_uint32 budget;
- opus_uint32 tell;
- budget = enc->storage*8;
- tell = ec_tell(enc);
- logp = isTransient ? 2 : 4;
- /* Reserve space to code the tf_select decision. */
- tf_select_rsv = LM>0 && tell+logp+1 <= budget;
- budget -= tf_select_rsv;
- curr = tf_changed = 0;
- for (i=start;i<end;i++)
- {
- if (tell+logp<=budget)
- {
- ec_enc_bit_logp(enc, tf_res[i] ^ curr, logp);
- tell = ec_tell(enc);
- curr = tf_res[i];
- tf_changed |= curr;
- }
- else
- tf_res[i] = curr;
- logp = isTransient ? 4 : 5;
- }
- /* Only code tf_select if it would actually make a difference. */
- if (tf_select_rsv &&
- tf_select_table[LM][4*isTransient+0+tf_changed]!=
- tf_select_table[LM][4*isTransient+2+tf_changed])
- ec_enc_bit_logp(enc, tf_select, 1);
- else
- tf_select = 0;
- for (i=start;i<end;i++)
- tf_res[i] = tf_select_table[LM][4*isTransient+2*tf_select+tf_res[i]];
- /*for(i=0;i<end;i++)printf("%d ", isTransient ? tf_res[i] : LM+tf_res[i]);printf("\n");*/
-}
-
-
-static int alloc_trim_analysis(const CELTMode *m, const celt_norm *X,
- const opus_val16 *bandLogE, int end, int LM, int C, int N0,
- AnalysisInfo *analysis, opus_val16 *stereo_saving, opus_val16 tf_estimate,
- int intensity, opus_val16 surround_trim, int arch)
-{
- int i;
- opus_val32 diff=0;
- int c;
- int trim_index;
- opus_val16 trim = QCONST16(5.f, 8);
- opus_val16 logXC, logXC2;
- if (C==2)
- {
- opus_val16 sum = 0; /* Q10 */
- opus_val16 minXC; /* Q10 */
- /* Compute inter-channel correlation for low frequencies */
- for (i=0;i<8;i++)
- {
- opus_val32 partial;
- partial = celt_inner_prod(&X[m->eBands[i]<<LM], &X[N0+(m->eBands[i]<<LM)],
- (m->eBands[i+1]-m->eBands[i])<<LM, arch);
- sum = ADD16(sum, EXTRACT16(SHR32(partial, 18)));
- }
- sum = MULT16_16_Q15(QCONST16(1.f/8, 15), sum);
- sum = MIN16(QCONST16(1.f, 10), ABS16(sum));
- minXC = sum;
- for (i=8;i<intensity;i++)
- {
- opus_val32 partial;
- partial = celt_inner_prod(&X[m->eBands[i]<<LM], &X[N0+(m->eBands[i]<<LM)],
- (m->eBands[i+1]-m->eBands[i])<<LM, arch);
- minXC = MIN16(minXC, ABS16(EXTRACT16(SHR32(partial, 18))));
- }
- minXC = MIN16(QCONST16(1.f, 10), ABS16(minXC));
- /*printf ("%f\n", sum);*/
- /* mid-side savings estimations based on the LF average*/
- logXC = celt_log2(QCONST32(1.001f, 20)-MULT16_16(sum, sum));
- /* mid-side savings estimations based on min correlation */
- logXC2 = MAX16(HALF16(logXC), celt_log2(QCONST32(1.001f, 20)-MULT16_16(minXC, minXC)));
-#ifdef FIXED_POINT
- /* Compensate for Q20 vs Q14 input and convert output to Q8 */
- logXC = PSHR32(logXC-QCONST16(6.f, DB_SHIFT),DB_SHIFT-8);
- logXC2 = PSHR32(logXC2-QCONST16(6.f, DB_SHIFT),DB_SHIFT-8);
-#endif
-
- trim += MAX16(-QCONST16(4.f, 8), MULT16_16_Q15(QCONST16(.75f,15),logXC));
- *stereo_saving = MIN16(*stereo_saving + QCONST16(0.25f, 8), -HALF16(logXC2));
- }
-
- /* Estimate spectral tilt */
- c=0; do {
- for (i=0;i<end-1;i++)
- {
- diff += bandLogE[i+c*m->nbEBands]*(opus_int32)(2+2*i-end);
- }
- } while (++c<C);
- diff /= C*(end-1);
- /*printf("%f\n", diff);*/
- trim -= MAX16(-QCONST16(2.f, 8), MIN16(QCONST16(2.f, 8), SHR16(diff+QCONST16(1.f, DB_SHIFT),DB_SHIFT-8)/6 ));
- trim -= SHR16(surround_trim, DB_SHIFT-8);
- trim -= 2*SHR16(tf_estimate, 14-8);
-#ifndef DISABLE_FLOAT_API
- if (analysis->valid)
- {
- trim -= MAX16(-QCONST16(2.f, 8), MIN16(QCONST16(2.f, 8),
- (opus_val16)(QCONST16(2.f, 8)*(analysis->tonality_slope+.05f))));
- }
-#else
- (void)analysis;
-#endif
-
-#ifdef FIXED_POINT
- trim_index = PSHR32(trim, 8);
-#else
- trim_index = (int)floor(.5f+trim);
-#endif
- trim_index = IMAX(0, IMIN(10, trim_index));
- /*printf("%d\n", trim_index);*/
-#ifdef FUZZING
- trim_index = rand()%11;
-#endif
- return trim_index;
-}
-
-static int stereo_analysis(const CELTMode *m, const celt_norm *X,
- int LM, int N0)
-{
- int i;
- int thetas;
- opus_val32 sumLR = EPSILON, sumMS = EPSILON;
-
- /* Use the L1 norm to model the entropy of the L/R signal vs the M/S signal */
- for (i=0;i<13;i++)
- {
- int j;
- for (j=m->eBands[i]<<LM;j<m->eBands[i+1]<<LM;j++)
- {
- opus_val32 L, R, M, S;
- /* We cast to 32-bit first because of the -32768 case */
- L = EXTEND32(X[j]);
- R = EXTEND32(X[N0+j]);
- M = ADD32(L, R);
- S = SUB32(L, R);
- sumLR = ADD32(sumLR, ADD32(ABS32(L), ABS32(R)));
- sumMS = ADD32(sumMS, ADD32(ABS32(M), ABS32(S)));
- }
- }
- sumMS = MULT16_32_Q15(QCONST16(0.707107f, 15), sumMS);
- thetas = 13;
- /* We don't need thetas for lower bands with LM<=1 */
- if (LM<=1)
- thetas -= 8;
- return MULT16_32_Q15((m->eBands[13]<<(LM+1))+thetas, sumMS)
- > MULT16_32_Q15(m->eBands[13]<<(LM+1), sumLR);
-}
-
-#define MSWAP(a,b) do {opus_val16 tmp = a;a=b;b=tmp;} while(0)
-static opus_val16 median_of_5(const opus_val16 *x)
-{
- opus_val16 t0, t1, t2, t3, t4;
- t2 = x[2];
- if (x[0] > x[1])
- {
- t0 = x[1];
- t1 = x[0];
- } else {
- t0 = x[0];
- t1 = x[1];
- }
- if (x[3] > x[4])
- {
- t3 = x[4];
- t4 = x[3];
- } else {
- t3 = x[3];
- t4 = x[4];
- }
- if (t0 > t3)
- {
- MSWAP(t0, t3);
- MSWAP(t1, t4);
- }
- if (t2 > t1)
- {
- if (t1 < t3)
- return MIN16(t2, t3);
- else
- return MIN16(t4, t1);
- } else {
- if (t2 < t3)
- return MIN16(t1, t3);
- else
- return MIN16(t2, t4);
- }
-}
-
-static opus_val16 median_of_3(const opus_val16 *x)
-{
- opus_val16 t0, t1, t2;
- if (x[0] > x[1])
- {
- t0 = x[1];
- t1 = x[0];
- } else {
- t0 = x[0];
- t1 = x[1];
- }
- t2 = x[2];
- if (t1 < t2)
- return t1;
- else if (t0 < t2)
- return t2;
- else
- return t0;
-}
-
-static opus_val16 dynalloc_analysis(const opus_val16 *bandLogE, const opus_val16 *bandLogE2,
- int nbEBands, int start, int end, int C, int *offsets, int lsb_depth, const opus_int16 *logN,
- int isTransient, int vbr, int constrained_vbr, const opus_int16 *eBands, int LM,
- int effectiveBytes, opus_int32 *tot_boost_, int lfe, opus_val16 *surround_dynalloc)
-{
- int i, c;
- opus_int32 tot_boost=0;
- opus_val16 maxDepth;
- VARDECL(opus_val16, follower);
- VARDECL(opus_val16, noise_floor);
- SAVE_STACK;
- ALLOC(follower, C*nbEBands, opus_val16);
- ALLOC(noise_floor, C*nbEBands, opus_val16);
- OPUS_CLEAR(offsets, nbEBands);
- /* Dynamic allocation code */
- maxDepth=-QCONST16(31.9f, DB_SHIFT);
- for (i=0;i<end;i++)
- {
- /* Noise floor must take into account eMeans, the depth, the width of the bands
- and the preemphasis filter (approx. square of bark band ID) */
- noise_floor[i] = MULT16_16(QCONST16(0.0625f, DB_SHIFT),logN[i])
- +QCONST16(.5f,DB_SHIFT)+SHL16(9-lsb_depth,DB_SHIFT)-SHL16(eMeans[i],6)
- +MULT16_16(QCONST16(.0062,DB_SHIFT),(i+5)*(i+5));
- }
- c=0;do
- {
- for (i=0;i<end;i++)
- maxDepth = MAX16(maxDepth, bandLogE[c*nbEBands+i]-noise_floor[i]);
- } while (++c<C);
- /* Make sure that dynamic allocation can't make us bust the budget */
- if (effectiveBytes > 50 && LM>=1 && !lfe)
- {
- int last=0;
- c=0;do
- {
- opus_val16 offset;
- opus_val16 tmp;
- opus_val16 *f;
- f = &follower[c*nbEBands];
- f[0] = bandLogE2[c*nbEBands];
- for (i=1;i<end;i++)
- {
- /* The last band to be at least 3 dB higher than the previous one
- is the last we'll consider. Otherwise, we run into problems on
- bandlimited signals. */
- if (bandLogE2[c*nbEBands+i] > bandLogE2[c*nbEBands+i-1]+QCONST16(.5f,DB_SHIFT))
- last=i;
- f[i] = MIN16(f[i-1]+QCONST16(1.5f,DB_SHIFT), bandLogE2[c*nbEBands+i]);
- }
- for (i=last-1;i>=0;i--)
- f[i] = MIN16(f[i], MIN16(f[i+1]+QCONST16(2.f,DB_SHIFT), bandLogE2[c*nbEBands+i]));
-
- /* Combine with a median filter to avoid dynalloc triggering unnecessarily.
- The "offset" value controls how conservative we are -- a higher offset
- reduces the impact of the median filter and makes dynalloc use more bits. */
- offset = QCONST16(1.f, DB_SHIFT);
- for (i=2;i<end-2;i++)
- f[i] = MAX16(f[i], median_of_5(&bandLogE2[c*nbEBands+i-2])-offset);
- tmp = median_of_3(&bandLogE2[c*nbEBands])-offset;
- f[0] = MAX16(f[0], tmp);
- f[1] = MAX16(f[1], tmp);
- tmp = median_of_3(&bandLogE2[c*nbEBands+end-3])-offset;
- f[end-2] = MAX16(f[end-2], tmp);
- f[end-1] = MAX16(f[end-1], tmp);
-
- for (i=0;i<end;i++)
- f[i] = MAX16(f[i], noise_floor[i]);
- } while (++c<C);
- if (C==2)
- {
- for (i=start;i<end;i++)
- {
- /* Consider 24 dB "cross-talk" */
- follower[nbEBands+i] = MAX16(follower[nbEBands+i], follower[ i]-QCONST16(4.f,DB_SHIFT));
- follower[ i] = MAX16(follower[ i], follower[nbEBands+i]-QCONST16(4.f,DB_SHIFT));
- follower[i] = HALF16(MAX16(0, bandLogE[i]-follower[i]) + MAX16(0, bandLogE[nbEBands+i]-follower[nbEBands+i]));
- }
- } else {
- for (i=start;i<end;i++)
- {
- follower[i] = MAX16(0, bandLogE[i]-follower[i]);
- }
- }
- for (i=start;i<end;i++)
- follower[i] = MAX16(follower[i], surround_dynalloc[i]);
- /* For non-transient CBR/CVBR frames, halve the dynalloc contribution */
- if ((!vbr || constrained_vbr)&&!isTransient)
- {
- for (i=start;i<end;i++)
- follower[i] = HALF16(follower[i]);
- }
- for (i=start;i<end;i++)
- {
- int width;
- int boost;
- int boost_bits;
-
- if (i<8)
- follower[i] *= 2;
- if (i>=12)
- follower[i] = HALF16(follower[i]);
- follower[i] = MIN16(follower[i], QCONST16(4, DB_SHIFT));
-
- width = C*(eBands[i+1]-eBands[i])<<LM;
- if (width<6)
- {
- boost = (int)SHR32(EXTEND32(follower[i]),DB_SHIFT);
- boost_bits = boost*width<<BITRES;
- } else if (width > 48) {
- boost = (int)SHR32(EXTEND32(follower[i])*8,DB_SHIFT);
- boost_bits = (boost*width<<BITRES)/8;
- } else {
- boost = (int)SHR32(EXTEND32(follower[i])*width/6,DB_SHIFT);
- boost_bits = boost*6<<BITRES;
- }
- /* For CBR and non-transient CVBR frames, limit dynalloc to 1/4 of the bits */
- if ((!vbr || (constrained_vbr&&!isTransient))
- && (tot_boost+boost_bits)>>BITRES>>3 > effectiveBytes/4)
- {
- opus_int32 cap = ((effectiveBytes/4)<<BITRES<<3);
- offsets[i] = cap-tot_boost;
- tot_boost = cap;
- break;
- } else {
- offsets[i] = boost;
- tot_boost += boost_bits;
- }
- }
- }
- *tot_boost_ = tot_boost;
- RESTORE_STACK;
- return maxDepth;
-}
-
-
-static int run_prefilter(CELTEncoder *st, celt_sig *in, celt_sig *prefilter_mem, int CC, int N,
- int prefilter_tapset, int *pitch, opus_val16 *gain, int *qgain, int enabled, int nbAvailableBytes)
-{
- int c;
- VARDECL(celt_sig, _pre);
- celt_sig *pre[2];
- const CELTMode *mode;
- int pitch_index;
- opus_val16 gain1;
- opus_val16 pf_threshold;
- int pf_on;
- int qg;
- int overlap;
- SAVE_STACK;
-
- mode = st->mode;
- overlap = mode->overlap;
- ALLOC(_pre, CC*(N+COMBFILTER_MAXPERIOD), celt_sig);
-
- pre[0] = _pre;
- pre[1] = _pre + (N+COMBFILTER_MAXPERIOD);
-
-
- c=0; do {
- OPUS_COPY(pre[c], prefilter_mem+c*COMBFILTER_MAXPERIOD, COMBFILTER_MAXPERIOD);
- OPUS_COPY(pre[c]+COMBFILTER_MAXPERIOD, in+c*(N+overlap)+overlap, N);
- } while (++c<CC);
-
- if (enabled)
- {
- VARDECL(opus_val16, pitch_buf);
- ALLOC(pitch_buf, (COMBFILTER_MAXPERIOD+N)>>1, opus_val16);
-
- pitch_downsample(pre, pitch_buf, COMBFILTER_MAXPERIOD+N, CC, st->arch);
- /* Don't search for the fir last 1.5 octave of the range because
- there's too many false-positives due to short-term correlation */
- pitch_search(pitch_buf+(COMBFILTER_MAXPERIOD>>1), pitch_buf, N,
- COMBFILTER_MAXPERIOD-3*COMBFILTER_MINPERIOD, &pitch_index,
- st->arch);
- pitch_index = COMBFILTER_MAXPERIOD-pitch_index;
-
- gain1 = remove_doubling(pitch_buf, COMBFILTER_MAXPERIOD, COMBFILTER_MINPERIOD,
- N, &pitch_index, st->prefilter_period, st->prefilter_gain, st->arch);
- if (pitch_index > COMBFILTER_MAXPERIOD-2)
- pitch_index = COMBFILTER_MAXPERIOD-2;
- gain1 = MULT16_16_Q15(QCONST16(.7f,15),gain1);
- /*printf("%d %d %f %f\n", pitch_change, pitch_index, gain1, st->analysis.tonality);*/
- if (st->loss_rate>2)
- gain1 = HALF32(gain1);
- if (st->loss_rate>4)
- gain1 = HALF32(gain1);
- if (st->loss_rate>8)
- gain1 = 0;
- } else {
- gain1 = 0;
- pitch_index = COMBFILTER_MINPERIOD;
- }
-
- /* Gain threshold for enabling the prefilter/postfilter */
- pf_threshold = QCONST16(.2f,15);
-
- /* Adjusting the threshold based on rate and continuity */
- if (abs(pitch_index-st->prefilter_period)*10>pitch_index)
- pf_threshold += QCONST16(.2f,15);
- if (nbAvailableBytes<25)
- pf_threshold += QCONST16(.1f,15);
- if (nbAvailableBytes<35)
- pf_threshold += QCONST16(.1f,15);
- if (st->prefilter_gain > QCONST16(.4f,15))
- pf_threshold -= QCONST16(.1f,15);
- if (st->prefilter_gain > QCONST16(.55f,15))
- pf_threshold -= QCONST16(.1f,15);
-
- /* Hard threshold at 0.2 */
- pf_threshold = MAX16(pf_threshold, QCONST16(.2f,15));
- if (gain1<pf_threshold)
- {
- gain1 = 0;
- pf_on = 0;
- qg = 0;
- } else {
- /*This block is not gated by a total bits check only because
- of the nbAvailableBytes check above.*/
- if (ABS16(gain1-st->prefilter_gain)<QCONST16(.1f,15))
- gain1=st->prefilter_gain;
-
-#ifdef FIXED_POINT
- qg = ((gain1+1536)>>10)/3-1;
-#else
- qg = (int)floor(.5f+gain1*32/3)-1;
-#endif
- qg = IMAX(0, IMIN(7, qg));
- gain1 = QCONST16(0.09375f,15)*(qg+1);
- pf_on = 1;
- }
- /*printf("%d %f\n", pitch_index, gain1);*/
-
- c=0; do {
- int offset = mode->shortMdctSize-overlap;
- st->prefilter_period=IMAX(st->prefilter_period, COMBFILTER_MINPERIOD);
- OPUS_COPY(in+c*(N+overlap), st->in_mem+c*(overlap), overlap);
- if (offset)
- comb_filter(in+c*(N+overlap)+overlap, pre[c]+COMBFILTER_MAXPERIOD,
- st->prefilter_period, st->prefilter_period, offset, -st->prefilter_gain, -st->prefilter_gain,
- st->prefilter_tapset, st->prefilter_tapset, NULL, 0, st->arch);
-
- comb_filter(in+c*(N+overlap)+overlap+offset, pre[c]+COMBFILTER_MAXPERIOD+offset,
- st->prefilter_period, pitch_index, N-offset, -st->prefilter_gain, -gain1,
- st->prefilter_tapset, prefilter_tapset, mode->window, overlap, st->arch);
- OPUS_COPY(st->in_mem+c*(overlap), in+c*(N+overlap)+N, overlap);
-
- if (N>COMBFILTER_MAXPERIOD)
- {
- OPUS_COPY(prefilter_mem+c*COMBFILTER_MAXPERIOD, pre[c]+N, COMBFILTER_MAXPERIOD);
- } else {
- OPUS_MOVE(prefilter_mem+c*COMBFILTER_MAXPERIOD, prefilter_mem+c*COMBFILTER_MAXPERIOD+N, COMBFILTER_MAXPERIOD-N);
- OPUS_COPY(prefilter_mem+c*COMBFILTER_MAXPERIOD+COMBFILTER_MAXPERIOD-N, pre[c]+COMBFILTER_MAXPERIOD, N);
- }
- } while (++c<CC);
-
- RESTORE_STACK;
- *gain = gain1;
- *pitch = pitch_index;
- *qgain = qg;
- return pf_on;
-}
-
-static int compute_vbr(const CELTMode *mode, AnalysisInfo *analysis, opus_int32 base_target,
- int LM, opus_int32 bitrate, int lastCodedBands, int C, int intensity,
- int constrained_vbr, opus_val16 stereo_saving, int tot_boost,
- opus_val16 tf_estimate, int pitch_change, opus_val16 maxDepth,
- int variable_duration, int lfe, int has_surround_mask, opus_val16 surround_masking,
- opus_val16 temporal_vbr)
-{
- /* The target rate in 8th bits per frame */
- opus_int32 target;
- int coded_bins;
- int coded_bands;
- opus_val16 tf_calibration;
- int nbEBands;
- const opus_int16 *eBands;
-
- nbEBands = mode->nbEBands;
- eBands = mode->eBands;
-
- coded_bands = lastCodedBands ? lastCodedBands : nbEBands;
- coded_bins = eBands[coded_bands]<<LM;
- if (C==2)
- coded_bins += eBands[IMIN(intensity, coded_bands)]<<LM;
-
- target = base_target;
-
- /*printf("%f %f %f %f %d %d ", st->analysis.activity, st->analysis.tonality, tf_estimate, st->stereo_saving, tot_boost, coded_bands);*/
-#ifndef DISABLE_FLOAT_API
- if (analysis->valid && analysis->activity<.4)
- target -= (opus_int32)((coded_bins<<BITRES)*(.4f-analysis->activity));
-#endif
- /* Stereo savings */
- if (C==2)
- {
- int coded_stereo_bands;
- int coded_stereo_dof;
- opus_val16 max_frac;
- coded_stereo_bands = IMIN(intensity, coded_bands);
- coded_stereo_dof = (eBands[coded_stereo_bands]<<LM)-coded_stereo_bands;
- /* Maximum fraction of the bits we can save if the signal is mono. */
- max_frac = DIV32_16(MULT16_16(QCONST16(0.8f, 15), coded_stereo_dof), coded_bins);
- stereo_saving = MIN16(stereo_saving, QCONST16(1.f, 8));
- /*printf("%d %d %d ", coded_stereo_dof, coded_bins, tot_boost);*/
- target -= (opus_int32)MIN32(MULT16_32_Q15(max_frac,target),
- SHR32(MULT16_16(stereo_saving-QCONST16(0.1f,8),(coded_stereo_dof<<BITRES)),8));
- }
- /* Boost the rate according to dynalloc (minus the dynalloc average for calibration). */
- target += tot_boost-(16<<LM);
- /* Apply transient boost, compensating for average boost. */
- tf_calibration = variable_duration==OPUS_FRAMESIZE_VARIABLE ?
- QCONST16(0.02f,14) : QCONST16(0.04f,14);
- target += (opus_int32)SHL32(MULT16_32_Q15(tf_estimate-tf_calibration, target),1);
-
-#ifndef DISABLE_FLOAT_API
- /* Apply tonality boost */
- if (analysis->valid && !lfe)
- {
- opus_int32 tonal_target;
- float tonal;
-
- /* Tonality boost (compensating for the average). */
- tonal = MAX16(0.f,analysis->tonality-.15f)-0.09f;
- tonal_target = target + (opus_int32)((coded_bins<<BITRES)*1.2f*tonal);
- if (pitch_change)
- tonal_target += (opus_int32)((coded_bins<<BITRES)*.8f);
- /*printf("%f %f ", analysis->tonality, tonal);*/
- target = tonal_target;
- }
-#else
- (void)analysis;
- (void)pitch_change;
-#endif
-
- if (has_surround_mask&&!lfe)
- {
- opus_int32 surround_target = target + (opus_int32)SHR32(MULT16_16(surround_masking,coded_bins<<BITRES), DB_SHIFT);
- /*printf("%f %d %d %d %d %d %d ", surround_masking, coded_bins, st->end, st->intensity, surround_target, target, st->bitrate);*/
- target = IMAX(target/4, surround_target);
- }
-
- {
- opus_int32 floor_depth;
- int bins;
- bins = eBands[nbEBands-2]<<LM;
- /*floor_depth = SHR32(MULT16_16((C*bins<<BITRES),celt_log2(SHL32(MAX16(1,sample_max),13))), DB_SHIFT);*/
- floor_depth = (opus_int32)SHR32(MULT16_16((C*bins<<BITRES),maxDepth), DB_SHIFT);
- floor_depth = IMAX(floor_depth, target>>2);
- target = IMIN(target, floor_depth);
- /*printf("%f %d\n", maxDepth, floor_depth);*/
- }
-
- if ((!has_surround_mask||lfe) && (constrained_vbr || bitrate<64000))
- {
- opus_val16 rate_factor = Q15ONE;
- if (bitrate < 64000)
- {
-#ifdef FIXED_POINT
- rate_factor = MAX16(0,(bitrate-32000));
-#else
- rate_factor = MAX16(0,(1.f/32768)*(bitrate-32000));
-#endif
- }
- if (constrained_vbr)
- rate_factor = MIN16(rate_factor, QCONST16(0.67f, 15));
- target = base_target + (opus_int32)MULT16_32_Q15(rate_factor, target-base_target);
-
- }
-
- if (!has_surround_mask && tf_estimate < QCONST16(.2f, 14))
- {
- opus_val16 amount;
- opus_val16 tvbr_factor;
- amount = MULT16_16_Q15(QCONST16(.0000031f, 30), IMAX(0, IMIN(32000, 96000-bitrate)));
- tvbr_factor = SHR32(MULT16_16(temporal_vbr, amount), DB_SHIFT);
- target += (opus_int32)MULT16_32_Q15(tvbr_factor, target);
- }
-
- /* Don't allow more than doubling the rate */
- target = IMIN(2*base_target, target);
-
- return target;
-}
-
-int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm, int frame_size, unsigned char *compressed, int nbCompressedBytes, ec_enc *enc)
-{
- int i, c, N;
- opus_int32 bits;
- ec_enc _enc;
- VARDECL(celt_sig, in);
- VARDECL(celt_sig, freq);
- VARDECL(celt_norm, X);
- VARDECL(celt_ener, bandE);
- VARDECL(opus_val16, bandLogE);
- VARDECL(opus_val16, bandLogE2);
- VARDECL(int, fine_quant);
- VARDECL(opus_val16, error);
- VARDECL(int, pulses);
- VARDECL(int, cap);
- VARDECL(int, offsets);
- VARDECL(int, fine_priority);
- VARDECL(int, tf_res);
- VARDECL(unsigned char, collapse_masks);
- celt_sig *prefilter_mem;
- opus_val16 *oldBandE, *oldLogE, *oldLogE2;
- int shortBlocks=0;
- int isTransient=0;
- const int CC = st->channels;
- const int C = st->stream_channels;
- int LM, M;
- int tf_select;
- int nbFilledBytes, nbAvailableBytes;
- int start;
- int end;
- int effEnd;
- int codedBands;
- int tf_sum;
- int alloc_trim;
- int pitch_index=COMBFILTER_MINPERIOD;
- opus_val16 gain1 = 0;
- int dual_stereo=0;
- int effectiveBytes;
- int dynalloc_logp;
- opus_int32 vbr_rate;
- opus_int32 total_bits;
- opus_int32 total_boost;
- opus_int32 balance;
- opus_int32 tell;
- int prefilter_tapset=0;
- int pf_on;
- int anti_collapse_rsv;
- int anti_collapse_on=0;
- int silence=0;
- int tf_chan = 0;
- opus_val16 tf_estimate;
- int pitch_change=0;
- opus_int32 tot_boost;
- opus_val32 sample_max;
- opus_val16 maxDepth;
- const OpusCustomMode *mode;
- int nbEBands;
- int overlap;
- const opus_int16 *eBands;
- int secondMdct;
- int signalBandwidth;
- int transient_got_disabled=0;
- opus_val16 surround_masking=0;
- opus_val16 temporal_vbr=0;
- opus_val16 surround_trim = 0;
- opus_int32 equiv_rate = 510000;
- VARDECL(opus_val16, surround_dynalloc);
- ALLOC_STACK;
-
- mode = st->mode;
- nbEBands = mode->nbEBands;
- overlap = mode->overlap;
- eBands = mode->eBands;
- start = st->start;
- end = st->end;
- tf_estimate = 0;
- if (nbCompressedBytes<2 || pcm==NULL)
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
-
- frame_size *= st->upsample;
- for (LM=0;LM<=mode->maxLM;LM++)
- if (mode->shortMdctSize<<LM==frame_size)
- break;
- if (LM>mode->maxLM)
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
- M=1<<LM;
- N = M*mode->shortMdctSize;
-
- prefilter_mem = st->in_mem+CC*(overlap);
- oldBandE = (opus_val16*)(st->in_mem+CC*(overlap+COMBFILTER_MAXPERIOD));
- oldLogE = oldBandE + CC*nbEBands;
- oldLogE2 = oldLogE + CC*nbEBands;
-
- if (enc==NULL)
- {
- tell=1;
- nbFilledBytes=0;
- } else {
- tell=ec_tell(enc);
- nbFilledBytes=(tell+4)>>3;
- }
-
-#ifdef CUSTOM_MODES
- if (st->signalling && enc==NULL)
- {
- int tmp = (mode->effEBands-end)>>1;
- end = st->end = IMAX(1, mode->effEBands-tmp);
- compressed[0] = tmp<<5;
- compressed[0] |= LM<<3;
- compressed[0] |= (C==2)<<2;
- /* Convert "standard mode" to Opus header */
- if (mode->Fs==48000 && mode->shortMdctSize==120)
- {
- int c0 = toOpus(compressed[0]);
- if (c0<0)
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
- compressed[0] = c0;
- }
- compressed++;
- nbCompressedBytes--;
- }
-#else
- celt_assert(st->signalling==0);
-#endif
-
- /* Can't produce more than 1275 output bytes */
- nbCompressedBytes = IMIN(nbCompressedBytes,1275);
- nbAvailableBytes = nbCompressedBytes - nbFilledBytes;
-
- if (st->vbr && st->bitrate!=OPUS_BITRATE_MAX)
- {
- opus_int32 den=mode->Fs>>BITRES;
- vbr_rate=(st->bitrate*frame_size+(den>>1))/den;
-#ifdef CUSTOM_MODES
- if (st->signalling)
- vbr_rate -= 8<<BITRES;
-#endif
- effectiveBytes = vbr_rate>>(3+BITRES);
- } else {
- opus_int32 tmp;
- vbr_rate = 0;
- tmp = st->bitrate*frame_size;
- if (tell>1)
- tmp += tell;
- if (st->bitrate!=OPUS_BITRATE_MAX)
- nbCompressedBytes = IMAX(2, IMIN(nbCompressedBytes,
- (tmp+4*mode->Fs)/(8*mode->Fs)-!!st->signalling));
- effectiveBytes = nbCompressedBytes;
- }
- if (st->bitrate != OPUS_BITRATE_MAX)
- equiv_rate = st->bitrate - (40*C+20)*((400>>LM) - 50);
-
- if (enc==NULL)
- {
- ec_enc_init(&_enc, compressed, nbCompressedBytes);
- enc = &_enc;
- }
-
- if (vbr_rate>0)
- {
- /* Computes the max bit-rate allowed in VBR mode to avoid violating the
- target rate and buffering.
- We must do this up front so that bust-prevention logic triggers
- correctly if we don't have enough bits. */
- if (st->constrained_vbr)
- {
- opus_int32 vbr_bound;
- opus_int32 max_allowed;
- /* We could use any multiple of vbr_rate as bound (depending on the
- delay).
- This is clamped to ensure we use at least two bytes if the encoder
- was entirely empty, but to allow 0 in hybrid mode. */
- vbr_bound = vbr_rate;
- max_allowed = IMIN(IMAX(tell==1?2:0,
- (vbr_rate+vbr_bound-st->vbr_reservoir)>>(BITRES+3)),
- nbAvailableBytes);
- if(max_allowed < nbAvailableBytes)
- {
- nbCompressedBytes = nbFilledBytes+max_allowed;
- nbAvailableBytes = max_allowed;
- ec_enc_shrink(enc, nbCompressedBytes);
- }
- }
- }
- total_bits = nbCompressedBytes*8;
-
- effEnd = end;
- if (effEnd > mode->effEBands)
- effEnd = mode->effEBands;
-
- ALLOC(in, CC*(N+overlap), celt_sig);
-
- sample_max=MAX32(st->overlap_max, celt_maxabs16(pcm, C*(N-overlap)/st->upsample));
- st->overlap_max=celt_maxabs16(pcm+C*(N-overlap)/st->upsample, C*overlap/st->upsample);
- sample_max=MAX32(sample_max, st->overlap_max);
-#ifdef FIXED_POINT
- silence = (sample_max==0);
-#else
- silence = (sample_max <= (opus_val16)1/(1<<st->lsb_depth));
-#endif
-#ifdef FUZZING
- if ((rand()&0x3F)==0)
- silence = 1;
-#endif
- if (tell==1)
- ec_enc_bit_logp(enc, silence, 15);
- else
- silence=0;
- if (silence)
- {
- /*In VBR mode there is no need to send more than the minimum. */
- if (vbr_rate>0)
- {
- effectiveBytes=nbCompressedBytes=IMIN(nbCompressedBytes, nbFilledBytes+2);
- total_bits=nbCompressedBytes*8;
- nbAvailableBytes=2;
- ec_enc_shrink(enc, nbCompressedBytes);
- }
- /* Pretend we've filled all the remaining bits with zeros
- (that's what the initialiser did anyway) */
- tell = nbCompressedBytes*8;
- enc->nbits_total+=tell-ec_tell(enc);
- }
- c=0; do {
- int need_clip=0;
-#ifndef FIXED_POINT
- need_clip = st->clip && sample_max>65536.f;
-#endif
- celt_preemphasis(pcm+c, in+c*(N+overlap)+overlap, N, CC, st->upsample,
- mode->preemph, st->preemph_memE+c, need_clip);
- } while (++c<CC);
-
-
-
- /* Find pitch period and gain */
- {
- int enabled;
- int qg;
- enabled = ((st->lfe&&nbAvailableBytes>3) || nbAvailableBytes>12*C) && start==0 && !silence && !st->disable_pf
- && st->complexity >= 5 && !(st->consec_transient && LM!=3 && st->variable_duration==OPUS_FRAMESIZE_VARIABLE);
-
- prefilter_tapset = st->tapset_decision;
- pf_on = run_prefilter(st, in, prefilter_mem, CC, N, prefilter_tapset, &pitch_index, &gain1, &qg, enabled, nbAvailableBytes);
- if ((gain1 > QCONST16(.4f,15) || st->prefilter_gain > QCONST16(.4f,15)) && (!st->analysis.valid || st->analysis.tonality > .3)
- && (pitch_index > 1.26*st->prefilter_period || pitch_index < .79*st->prefilter_period))
- pitch_change = 1;
- if (pf_on==0)
- {
- if(start==0 && tell+16<=total_bits)
- ec_enc_bit_logp(enc, 0, 1);
- } else {
- /*This block is not gated by a total bits check only because
- of the nbAvailableBytes check above.*/
- int octave;
- ec_enc_bit_logp(enc, 1, 1);
- pitch_index += 1;
- octave = EC_ILOG(pitch_index)-5;
- ec_enc_uint(enc, octave, 6);
- ec_enc_bits(enc, pitch_index-(16<<octave), 4+octave);
- pitch_index -= 1;
- ec_enc_bits(enc, qg, 3);
- ec_enc_icdf(enc, prefilter_tapset, tapset_icdf, 2);
- }
- }
-
- isTransient = 0;
- shortBlocks = 0;
- if (st->complexity >= 1 && !st->lfe)
- {
- isTransient = transient_analysis(in, N+overlap, CC,
- &tf_estimate, &tf_chan);
- }
- if (LM>0 && ec_tell(enc)+3<=total_bits)
- {
- if (isTransient)
- shortBlocks = M;
- } else {
- isTransient = 0;
- transient_got_disabled=1;
- }
-
- ALLOC(freq, CC*N, celt_sig); /**< Interleaved signal MDCTs */
- ALLOC(bandE,nbEBands*CC, celt_ener);
- ALLOC(bandLogE,nbEBands*CC, opus_val16);
-
- secondMdct = shortBlocks && st->complexity>=8;
- ALLOC(bandLogE2, C*nbEBands, opus_val16);
- if (secondMdct)
- {
- compute_mdcts(mode, 0, in, freq, C, CC, LM, st->upsample, st->arch);
- compute_band_energies(mode, freq, bandE, effEnd, C, LM);
- amp2Log2(mode, effEnd, end, bandE, bandLogE2, C);
- for (i=0;i<C*nbEBands;i++)
- bandLogE2[i] += HALF16(SHL16(LM, DB_SHIFT));
- }
-
- compute_mdcts(mode, shortBlocks, in, freq, C, CC, LM, st->upsample, st->arch);
- if (CC==2&&C==1)
- tf_chan = 0;
- compute_band_energies(mode, freq, bandE, effEnd, C, LM);
-
- if (st->lfe)
- {
- for (i=2;i<end;i++)
- {
- bandE[i] = IMIN(bandE[i], MULT16_32_Q15(QCONST16(1e-4f,15),bandE[0]));
- bandE[i] = MAX32(bandE[i], EPSILON);
- }
- }
- amp2Log2(mode, effEnd, end, bandE, bandLogE, C);
-
- ALLOC(surround_dynalloc, C*nbEBands, opus_val16);
- OPUS_CLEAR(surround_dynalloc, end);
- /* This computes how much masking takes place between surround channels */
- if (start==0&&st->energy_mask&&!st->lfe)
- {
- int mask_end;
- int midband;
- int count_dynalloc;
- opus_val32 mask_avg=0;
- opus_val32 diff=0;
- int count=0;
- mask_end = IMAX(2,st->lastCodedBands);
- for (c=0;c<C;c++)
- {
- for(i=0;i<mask_end;i++)
- {
- opus_val16 mask;
- mask = MAX16(MIN16(st->energy_mask[nbEBands*c+i],
- QCONST16(.25f, DB_SHIFT)), -QCONST16(2.0f, DB_SHIFT));
- if (mask > 0)
- mask = HALF16(mask);
- mask_avg += MULT16_16(mask, eBands[i+1]-eBands[i]);
- count += eBands[i+1]-eBands[i];
- diff += MULT16_16(mask, 1+2*i-mask_end);
- }
- }
- celt_assert(count>0);
- mask_avg = DIV32_16(mask_avg,count);
- mask_avg += QCONST16(.2f, DB_SHIFT);
- diff = diff*6/(C*(mask_end-1)*(mask_end+1)*mask_end);
- /* Again, being conservative */
- diff = HALF32(diff);
- diff = MAX32(MIN32(diff, QCONST32(.031f, DB_SHIFT)), -QCONST32(.031f, DB_SHIFT));
- /* Find the band that's in the middle of the coded spectrum */
- for (midband=0;eBands[midband+1] < eBands[mask_end]/2;midband++);
- count_dynalloc=0;
- for(i=0;i<mask_end;i++)
- {
- opus_val32 lin;
- opus_val16 unmask;
- lin = mask_avg + diff*(i-midband);
- if (C==2)
- unmask = MAX16(st->energy_mask[i], st->energy_mask[nbEBands+i]);
- else
- unmask = st->energy_mask[i];
- unmask = MIN16(unmask, QCONST16(.0f, DB_SHIFT));
- unmask -= lin;
- if (unmask > QCONST16(.25f, DB_SHIFT))
- {
- surround_dynalloc[i] = unmask - QCONST16(.25f, DB_SHIFT);
- count_dynalloc++;
- }
- }
- if (count_dynalloc>=3)
- {
- /* If we need dynalloc in many bands, it's probably because our
- initial masking rate was too low. */
- mask_avg += QCONST16(.25f, DB_SHIFT);
- if (mask_avg>0)
- {
- /* Something went really wrong in the original calculations,
- disabling masking. */
- mask_avg = 0;
- diff = 0;
- OPUS_CLEAR(surround_dynalloc, mask_end);
- } else {
- for(i=0;i<mask_end;i++)
- surround_dynalloc[i] = MAX16(0, surround_dynalloc[i]-QCONST16(.25f, DB_SHIFT));
- }
- }
- mask_avg += QCONST16(.2f, DB_SHIFT);
- /* Convert to 1/64th units used for the trim */
- surround_trim = 64*diff;
- /*printf("%d %d ", mask_avg, surround_trim);*/
- surround_masking = mask_avg;
- }
- /* Temporal VBR (but not for LFE) */
- if (!st->lfe)
- {
- opus_val16 follow=-QCONST16(10.0f,DB_SHIFT);
- opus_val32 frame_avg=0;
- opus_val16 offset = shortBlocks?HALF16(SHL16(LM, DB_SHIFT)):0;
- for(i=start;i<end;i++)
- {
- follow = MAX16(follow-QCONST16(1.f, DB_SHIFT), bandLogE[i]-offset);
- if (C==2)
- follow = MAX16(follow, bandLogE[i+nbEBands]-offset);
- frame_avg += follow;
- }
- frame_avg /= (end-start);
- temporal_vbr = SUB16(frame_avg,st->spec_avg);
- temporal_vbr = MIN16(QCONST16(3.f, DB_SHIFT), MAX16(-QCONST16(1.5f, DB_SHIFT), temporal_vbr));
- st->spec_avg += MULT16_16_Q15(QCONST16(.02f, 15), temporal_vbr);
- }
- /*for (i=0;i<21;i++)
- printf("%f ", bandLogE[i]);
- printf("\n");*/
-
- if (!secondMdct)
- {
- OPUS_COPY(bandLogE2, bandLogE, C*nbEBands);
- }
-
- /* Last chance to catch any transient we might have missed in the
- time-domain analysis */
- if (LM>0 && ec_tell(enc)+3<=total_bits && !isTransient && st->complexity>=5 && !st->lfe)
- {
- if (patch_transient_decision(bandLogE, oldBandE, nbEBands, start, end, C))
- {
- isTransient = 1;
- shortBlocks = M;
- compute_mdcts(mode, shortBlocks, in, freq, C, CC, LM, st->upsample, st->arch);
- compute_band_energies(mode, freq, bandE, effEnd, C, LM);
- amp2Log2(mode, effEnd, end, bandE, bandLogE, C);
- /* Compensate for the scaling of short vs long mdcts */
- for (i=0;i<C*nbEBands;i++)
- bandLogE2[i] += HALF16(SHL16(LM, DB_SHIFT));
- tf_estimate = QCONST16(.2f,14);
- }
- }
-
- if (LM>0 && ec_tell(enc)+3<=total_bits)
- ec_enc_bit_logp(enc, isTransient, 3);
-
- ALLOC(X, C*N, celt_norm); /**< Interleaved normalised MDCTs */
-
- /* Band normalisation */
- normalise_bands(mode, freq, X, bandE, effEnd, C, M);
-
- ALLOC(tf_res, nbEBands, int);
- /* Disable variable tf resolution for hybrid and at very low bitrate */
- if (effectiveBytes>=15*C && start==0 && st->complexity>=2 && !st->lfe)
- {
- int lambda;
- if (effectiveBytes<40)
- lambda = 12;
- else if (effectiveBytes<60)
- lambda = 6;
- else if (effectiveBytes<100)
- lambda = 4;
- else
- lambda = 3;
- lambda*=2;
- tf_select = tf_analysis(mode, effEnd, isTransient, tf_res, lambda, X, N, LM, &tf_sum, tf_estimate, tf_chan);
- for (i=effEnd;i<end;i++)
- tf_res[i] = tf_res[effEnd-1];
- } else {
- tf_sum = 0;
- for (i=0;i<end;i++)
- tf_res[i] = isTransient;
- tf_select=0;
- }
-
- ALLOC(error, C*nbEBands, opus_val16);
- quant_coarse_energy(mode, start, end, effEnd, bandLogE,
- oldBandE, total_bits, error, enc,
- C, LM, nbAvailableBytes, st->force_intra,
- &st->delayedIntra, st->complexity >= 4, st->loss_rate, st->lfe);
-
- tf_encode(start, end, isTransient, tf_res, LM, tf_select, enc);
-
- if (ec_tell(enc)+4<=total_bits)
- {
- if (st->lfe)
- {
- st->tapset_decision = 0;
- st->spread_decision = SPREAD_NORMAL;
- } else if (shortBlocks || st->complexity < 3 || nbAvailableBytes < 10*C || start != 0)
- {
- if (st->complexity == 0)
- st->spread_decision = SPREAD_NONE;
- else
- st->spread_decision = SPREAD_NORMAL;
- } else {
- /* Disable new spreading+tapset estimator until we can show it works
- better than the old one. So far it seems like spreading_decision()
- works best. */
-#if 0
- if (st->analysis.valid)
- {
- static const opus_val16 spread_thresholds[3] = {-QCONST16(.6f, 15), -QCONST16(.2f, 15), -QCONST16(.07f, 15)};
- static const opus_val16 spread_histeresis[3] = {QCONST16(.15f, 15), QCONST16(.07f, 15), QCONST16(.02f, 15)};
- static const opus_val16 tapset_thresholds[2] = {QCONST16(.0f, 15), QCONST16(.15f, 15)};
- static const opus_val16 tapset_histeresis[2] = {QCONST16(.1f, 15), QCONST16(.05f, 15)};
- st->spread_decision = hysteresis_decision(-st->analysis.tonality, spread_thresholds, spread_histeresis, 3, st->spread_decision);
- st->tapset_decision = hysteresis_decision(st->analysis.tonality_slope, tapset_thresholds, tapset_histeresis, 2, st->tapset_decision);
- } else
-#endif
- {
- st->spread_decision = spreading_decision(mode, X,
- &st->tonal_average, st->spread_decision, &st->hf_average,
- &st->tapset_decision, pf_on&&!shortBlocks, effEnd, C, M);
- }
- /*printf("%d %d\n", st->tapset_decision, st->spread_decision);*/
- /*printf("%f %d %f %d\n\n", st->analysis.tonality, st->spread_decision, st->analysis.tonality_slope, st->tapset_decision);*/
- }
- ec_enc_icdf(enc, st->spread_decision, spread_icdf, 5);
- }
-
- ALLOC(offsets, nbEBands, int);
-
- maxDepth = dynalloc_analysis(bandLogE, bandLogE2, nbEBands, start, end, C, offsets,
- st->lsb_depth, mode->logN, isTransient, st->vbr, st->constrained_vbr,
- eBands, LM, effectiveBytes, &tot_boost, st->lfe, surround_dynalloc);
- /* For LFE, everything interesting is in the first band */
- if (st->lfe)
- offsets[0] = IMIN(8, effectiveBytes/3);
- ALLOC(cap, nbEBands, int);
- init_caps(mode,cap,LM,C);
-
- dynalloc_logp = 6;
- total_bits<<=BITRES;
- total_boost = 0;
- tell = ec_tell_frac(enc);
- for (i=start;i<end;i++)
- {
- int width, quanta;
- int dynalloc_loop_logp;
- int boost;
- int j;
- width = C*(eBands[i+1]-eBands[i])<<LM;
- /* quanta is 6 bits, but no more than 1 bit/sample
- and no less than 1/8 bit/sample */
- quanta = IMIN(width<<BITRES, IMAX(6<<BITRES, width));
- dynalloc_loop_logp = dynalloc_logp;
- boost = 0;
- for (j = 0; tell+(dynalloc_loop_logp<<BITRES) < total_bits-total_boost
- && boost < cap[i]; j++)
- {
- int flag;
- flag = j<offsets[i];
- ec_enc_bit_logp(enc, flag, dynalloc_loop_logp);
- tell = ec_tell_frac(enc);
- if (!flag)
- break;
- boost += quanta;
- total_boost += quanta;
- dynalloc_loop_logp = 1;
- }
- /* Making dynalloc more likely */
- if (j)
- dynalloc_logp = IMAX(2, dynalloc_logp-1);
- offsets[i] = boost;
- }
-
- if (C==2)
- {
- static const opus_val16 intensity_thresholds[21]=
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 off*/
- { 1, 2, 3, 4, 5, 6, 7, 8,16,24,36,44,50,56,62,67,72,79,88,106,134};
- static const opus_val16 intensity_histeresis[21]=
- { 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 5, 6, 8, 8};
-
- /* Always use MS for 2.5 ms frames until we can do a better analysis */
- if (LM!=0)
- dual_stereo = stereo_analysis(mode, X, LM, N);
-
- st->intensity = hysteresis_decision((opus_val16)(equiv_rate/1000),
- intensity_thresholds, intensity_histeresis, 21, st->intensity);
- st->intensity = IMIN(end,IMAX(start, st->intensity));
- }
-
- alloc_trim = 5;
- if (tell+(6<<BITRES) <= total_bits - total_boost)
- {
- if (st->lfe)
- alloc_trim = 5;
- else
- alloc_trim = alloc_trim_analysis(mode, X, bandLogE,
- end, LM, C, N, &st->analysis, &st->stereo_saving, tf_estimate,
- st->intensity, surround_trim, st->arch);
- ec_enc_icdf(enc, alloc_trim, trim_icdf, 7);
- tell = ec_tell_frac(enc);
- }
-
- /* Variable bitrate */
- if (vbr_rate>0)
- {
- opus_val16 alpha;
- opus_int32 delta;
- /* The target rate in 8th bits per frame */
- opus_int32 target, base_target;
- opus_int32 min_allowed;
- int lm_diff = mode->maxLM - LM;
-
- /* Don't attempt to use more than 510 kb/s, even for frames smaller than 20 ms.
- The CELT allocator will just not be able to use more than that anyway. */
- nbCompressedBytes = IMIN(nbCompressedBytes,1275>>(3-LM));
- base_target = vbr_rate - ((40*C+20)<<BITRES);
-
- if (st->constrained_vbr)
- base_target += (st->vbr_offset>>lm_diff);
-
- target = compute_vbr(mode, &st->analysis, base_target, LM, equiv_rate,
- st->lastCodedBands, C, st->intensity, st->constrained_vbr,
- st->stereo_saving, tot_boost, tf_estimate, pitch_change, maxDepth,
- st->variable_duration, st->lfe, st->energy_mask!=NULL, surround_masking,
- temporal_vbr);
-
- /* The current offset is removed from the target and the space used
- so far is added*/
- target=target+tell;
- /* In VBR mode the frame size must not be reduced so much that it would
- result in the encoder running out of bits.
- The margin of 2 bytes ensures that none of the bust-prevention logic
- in the decoder will have triggered so far. */
- min_allowed = ((tell+total_boost+(1<<(BITRES+3))-1)>>(BITRES+3)) + 2 - nbFilledBytes;
-
- nbAvailableBytes = (target+(1<<(BITRES+2)))>>(BITRES+3);
- nbAvailableBytes = IMAX(min_allowed,nbAvailableBytes);
- nbAvailableBytes = IMIN(nbCompressedBytes,nbAvailableBytes+nbFilledBytes) - nbFilledBytes;
-
- /* By how much did we "miss" the target on that frame */
- delta = target - vbr_rate;
-
- target=nbAvailableBytes<<(BITRES+3);
-
- /*If the frame is silent we don't adjust our drift, otherwise
- the encoder will shoot to very high rates after hitting a
- span of silence, but we do allow the bitres to refill.
- This means that we'll undershoot our target in CVBR/VBR modes
- on files with lots of silence. */
- if(silence)
- {
- nbAvailableBytes = 2;
- target = 2*8<<BITRES;
- delta = 0;
- }
-
- if (st->vbr_count < 970)
- {
- st->vbr_count++;
- alpha = celt_rcp(SHL32(EXTEND32(st->vbr_count+20),16));
- } else
- alpha = QCONST16(.001f,15);
- /* How many bits have we used in excess of what we're allowed */
- if (st->constrained_vbr)
- st->vbr_reservoir += target - vbr_rate;
- /*printf ("%d\n", st->vbr_reservoir);*/
-
- /* Compute the offset we need to apply in order to reach the target */
- if (st->constrained_vbr)
- {
- st->vbr_drift += (opus_int32)MULT16_32_Q15(alpha,(delta*(1<<lm_diff))-st->vbr_offset-st->vbr_drift);
- st->vbr_offset = -st->vbr_drift;
- }
- /*printf ("%d\n", st->vbr_drift);*/
-
- if (st->constrained_vbr && st->vbr_reservoir < 0)
- {
- /* We're under the min value -- increase rate */
- int adjust = (-st->vbr_reservoir)/(8<<BITRES);
- /* Unless we're just coding silence */
- nbAvailableBytes += silence?0:adjust;
- st->vbr_reservoir = 0;
- /*printf ("+%d\n", adjust);*/
- }
- nbCompressedBytes = IMIN(nbCompressedBytes,nbAvailableBytes+nbFilledBytes);
- /*printf("%d\n", nbCompressedBytes*50*8);*/
- /* This moves the raw bits to take into account the new compressed size */
- ec_enc_shrink(enc, nbCompressedBytes);
- }
-
- /* Bit allocation */
- ALLOC(fine_quant, nbEBands, int);
- ALLOC(pulses, nbEBands, int);
- ALLOC(fine_priority, nbEBands, int);
-
- /* bits = packet size - where we are - safety*/
- bits = (((opus_int32)nbCompressedBytes*8)<<BITRES) - ec_tell_frac(enc) - 1;
- anti_collapse_rsv = isTransient&&LM>=2&&bits>=((LM+2)<<BITRES) ? (1<<BITRES) : 0;
- bits -= anti_collapse_rsv;
- signalBandwidth = end-1;
-#ifndef DISABLE_FLOAT_API
- if (st->analysis.valid)
- {
- int min_bandwidth;
- if (equiv_rate < (opus_int32)32000*C)
- min_bandwidth = 13;
- else if (equiv_rate < (opus_int32)48000*C)
- min_bandwidth = 16;
- else if (equiv_rate < (opus_int32)60000*C)
- min_bandwidth = 18;
- else if (equiv_rate < (opus_int32)80000*C)
- min_bandwidth = 19;
- else
- min_bandwidth = 20;
- signalBandwidth = IMAX(st->analysis.bandwidth, min_bandwidth);
- }
-#endif
- if (st->lfe)
- signalBandwidth = 1;
- codedBands = compute_allocation(mode, start, end, offsets, cap,
- alloc_trim, &st->intensity, &dual_stereo, bits, &balance, pulses,
- fine_quant, fine_priority, C, LM, enc, 1, st->lastCodedBands, signalBandwidth);
- if (st->lastCodedBands)
- st->lastCodedBands = IMIN(st->lastCodedBands+1,IMAX(st->lastCodedBands-1,codedBands));
- else
- st->lastCodedBands = codedBands;
-
- quant_fine_energy(mode, start, end, oldBandE, error, fine_quant, enc, C);
-
- /* Residual quantisation */
- ALLOC(collapse_masks, C*nbEBands, unsigned char);
- quant_all_bands(1, mode, start, end, X, C==2 ? X+N : NULL, collapse_masks,
- bandE, pulses, shortBlocks, st->spread_decision,
- dual_stereo, st->intensity, tf_res, nbCompressedBytes*(8<<BITRES)-anti_collapse_rsv,
- balance, enc, LM, codedBands, &st->rng, st->arch);
-
- if (anti_collapse_rsv > 0)
- {
- anti_collapse_on = st->consec_transient<2;
-#ifdef FUZZING
- anti_collapse_on = rand()&0x1;
-#endif
- ec_enc_bits(enc, anti_collapse_on, 1);
- }
- quant_energy_finalise(mode, start, end, oldBandE, error, fine_quant, fine_priority, nbCompressedBytes*8-ec_tell(enc), enc, C);
-
- if (silence)
- {
- for (i=0;i<C*nbEBands;i++)
- oldBandE[i] = -QCONST16(28.f,DB_SHIFT);
- }
-
-#ifdef RESYNTH
- /* Re-synthesis of the coded audio if required */
- {
- celt_sig *out_mem[2];
-
- if (anti_collapse_on)
- {
- anti_collapse(mode, X, collapse_masks, LM, C, N,
- start, end, oldBandE, oldLogE, oldLogE2, pulses, st->rng);
- }
-
- c=0; do {
- OPUS_MOVE(st->syn_mem[c], st->syn_mem[c]+N, 2*MAX_PERIOD-N+overlap/2);
- } while (++c<CC);
-
- c=0; do {
- out_mem[c] = st->syn_mem[c]+2*MAX_PERIOD-N;
- } while (++c<CC);
-
- celt_synthesis(mode, X, out_mem, oldBandE, start, effEnd,
- C, CC, isTransient, LM, st->upsample, silence, st->arch);
-
- c=0; do {
- st->prefilter_period=IMAX(st->prefilter_period, COMBFILTER_MINPERIOD);
- st->prefilter_period_old=IMAX(st->prefilter_period_old, COMBFILTER_MINPERIOD);
- comb_filter(out_mem[c], out_mem[c], st->prefilter_period_old, st->prefilter_period, mode->shortMdctSize,
- st->prefilter_gain_old, st->prefilter_gain, st->prefilter_tapset_old, st->prefilter_tapset,
- mode->window, overlap);
- if (LM!=0)
- comb_filter(out_mem[c]+mode->shortMdctSize, out_mem[c]+mode->shortMdctSize, st->prefilter_period, pitch_index, N-mode->shortMdctSize,
- st->prefilter_gain, gain1, st->prefilter_tapset, prefilter_tapset,
- mode->window, overlap);
- } while (++c<CC);
-
- /* We reuse freq[] as scratch space for the de-emphasis */
- deemphasis(out_mem, (opus_val16*)pcm, N, CC, st->upsample, mode->preemph, st->preemph_memD);
- st->prefilter_period_old = st->prefilter_period;
- st->prefilter_gain_old = st->prefilter_gain;
- st->prefilter_tapset_old = st->prefilter_tapset;
- }
-#endif
-
- st->prefilter_period = pitch_index;
- st->prefilter_gain = gain1;
- st->prefilter_tapset = prefilter_tapset;
-#ifdef RESYNTH
- if (LM!=0)
- {
- st->prefilter_period_old = st->prefilter_period;
- st->prefilter_gain_old = st->prefilter_gain;
- st->prefilter_tapset_old = st->prefilter_tapset;
- }
-#endif
-
- if (CC==2&&C==1) {
- OPUS_COPY(&oldBandE[nbEBands], oldBandE, nbEBands);
- }
-
- if (!isTransient)
- {
- OPUS_COPY(oldLogE2, oldLogE, CC*nbEBands);
- OPUS_COPY(oldLogE, oldBandE, CC*nbEBands);
- } else {
- for (i=0;i<CC*nbEBands;i++)
- oldLogE[i] = MIN16(oldLogE[i], oldBandE[i]);
- }
- /* In case start or end were to change */
- c=0; do
- {
- for (i=0;i<start;i++)
- {
- oldBandE[c*nbEBands+i]=0;
- oldLogE[c*nbEBands+i]=oldLogE2[c*nbEBands+i]=-QCONST16(28.f,DB_SHIFT);
- }
- for (i=end;i<nbEBands;i++)
- {
- oldBandE[c*nbEBands+i]=0;
- oldLogE[c*nbEBands+i]=oldLogE2[c*nbEBands+i]=-QCONST16(28.f,DB_SHIFT);
- }
- } while (++c<CC);
-
- if (isTransient || transient_got_disabled)
- st->consec_transient++;
- else
- st->consec_transient=0;
- st->rng = enc->rng;
-
- /* If there's any room left (can only happen for very high rates),
- it's already filled with zeros */
- ec_enc_done(enc);
-
-#ifdef CUSTOM_MODES
- if (st->signalling)
- nbCompressedBytes++;
-#endif
-
- RESTORE_STACK;
- if (ec_get_error(enc))
- return OPUS_INTERNAL_ERROR;
- else
- return nbCompressedBytes;
-}
-
-
-#ifdef CUSTOM_MODES
-
-#ifdef FIXED_POINT
-int opus_custom_encode(CELTEncoder * OPUS_RESTRICT st, const opus_int16 * pcm, int frame_size, unsigned char *compressed, int nbCompressedBytes)
-{
- return celt_encode_with_ec(st, pcm, frame_size, compressed, nbCompressedBytes, NULL);
-}
-
-#ifndef DISABLE_FLOAT_API
-int opus_custom_encode_float(CELTEncoder * OPUS_RESTRICT st, const float * pcm, int frame_size, unsigned char *compressed, int nbCompressedBytes)
-{
- int j, ret, C, N;
- VARDECL(opus_int16, in);
- ALLOC_STACK;
-
- if (pcm==NULL)
- return OPUS_BAD_ARG;
-
- C = st->channels;
- N = frame_size;
- ALLOC(in, C*N, opus_int16);
-
- for (j=0;j<C*N;j++)
- in[j] = FLOAT2INT16(pcm[j]);
-
- ret=celt_encode_with_ec(st,in,frame_size,compressed,nbCompressedBytes, NULL);
-#ifdef RESYNTH
- for (j=0;j<C*N;j++)
- ((float*)pcm)[j]=in[j]*(1.f/32768.f);
-#endif
- RESTORE_STACK;
- return ret;
-}
-#endif /* DISABLE_FLOAT_API */
-#else
-
-int opus_custom_encode(CELTEncoder * OPUS_RESTRICT st, const opus_int16 * pcm, int frame_size, unsigned char *compressed, int nbCompressedBytes)
-{
- int j, ret, C, N;
- VARDECL(celt_sig, in);
- ALLOC_STACK;
-
- if (pcm==NULL)
- return OPUS_BAD_ARG;
-
- C=st->channels;
- N=frame_size;
- ALLOC(in, C*N, celt_sig);
- for (j=0;j<C*N;j++) {
- in[j] = SCALEOUT(pcm[j]);
- }
-
- ret = celt_encode_with_ec(st,in,frame_size,compressed,nbCompressedBytes, NULL);
-#ifdef RESYNTH
- for (j=0;j<C*N;j++)
- ((opus_int16*)pcm)[j] = FLOAT2INT16(in[j]);
-#endif
- RESTORE_STACK;
- return ret;
-}
-
-int opus_custom_encode_float(CELTEncoder * OPUS_RESTRICT st, const float * pcm, int frame_size, unsigned char *compressed, int nbCompressedBytes)
-{
- return celt_encode_with_ec(st, pcm, frame_size, compressed, nbCompressedBytes, NULL);
-}
-
-#endif
-
-#endif /* CUSTOM_MODES */
-
-int opus_custom_encoder_ctl(CELTEncoder * OPUS_RESTRICT st, int request, ...)
-{
- va_list ap;
-
- va_start(ap, request);
- switch (request)
- {
- case OPUS_SET_COMPLEXITY_REQUEST:
- {
- int value = va_arg(ap, opus_int32);
- if (value<0 || value>10)
- goto bad_arg;
- st->complexity = value;
- }
- break;
- case CELT_SET_START_BAND_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<0 || value>=st->mode->nbEBands)
- goto bad_arg;
- st->start = value;
- }
- break;
- case CELT_SET_END_BAND_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<1 || value>st->mode->nbEBands)
- goto bad_arg;
- st->end = value;
- }
- break;
- case CELT_SET_PREDICTION_REQUEST:
- {
- int value = va_arg(ap, opus_int32);
- if (value<0 || value>2)
- goto bad_arg;
- st->disable_pf = value<=1;
- st->force_intra = value==0;
- }
- break;
- case OPUS_SET_PACKET_LOSS_PERC_REQUEST:
- {
- int value = va_arg(ap, opus_int32);
- if (value<0 || value>100)
- goto bad_arg;
- st->loss_rate = value;
- }
- break;
- case OPUS_SET_VBR_CONSTRAINT_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->constrained_vbr = value;
- }
- break;
- case OPUS_SET_VBR_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->vbr = value;
- }
- break;
- case OPUS_SET_BITRATE_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<=500 && value!=OPUS_BITRATE_MAX)
- goto bad_arg;
- value = IMIN(value, 260000*st->channels);
- st->bitrate = value;
- }
- break;
- case CELT_SET_CHANNELS_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<1 || value>2)
- goto bad_arg;
- st->stream_channels = value;
- }
- break;
- case OPUS_SET_LSB_DEPTH_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<8 || value>24)
- goto bad_arg;
- st->lsb_depth=value;
- }
- break;
- case OPUS_GET_LSB_DEPTH_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- *value=st->lsb_depth;
- }
- break;
- case OPUS_SET_EXPERT_FRAME_DURATION_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->variable_duration = value;
- }
- break;
- case OPUS_RESET_STATE:
- {
- int i;
- opus_val16 *oldBandE, *oldLogE, *oldLogE2;
- oldBandE = (opus_val16*)(st->in_mem+st->channels*(st->mode->overlap+COMBFILTER_MAXPERIOD));
- oldLogE = oldBandE + st->channels*st->mode->nbEBands;
- oldLogE2 = oldLogE + st->channels*st->mode->nbEBands;
- OPUS_CLEAR((char*)&st->ENCODER_RESET_START,
- opus_custom_encoder_get_size(st->mode, st->channels)-
- ((char*)&st->ENCODER_RESET_START - (char*)st));
- for (i=0;i<st->channels*st->mode->nbEBands;i++)
- oldLogE[i]=oldLogE2[i]=-QCONST16(28.f,DB_SHIFT);
- st->vbr_offset = 0;
- st->delayedIntra = 1;
- st->spread_decision = SPREAD_NORMAL;
- st->tonal_average = 256;
- st->hf_average = 0;
- st->tapset_decision = 0;
- }
- break;
-#ifdef CUSTOM_MODES
- case CELT_SET_INPUT_CLIPPING_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->clip = value;
- }
- break;
-#endif
- case CELT_SET_SIGNALLING_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->signalling = value;
- }
- break;
- case CELT_SET_ANALYSIS_REQUEST:
- {
- AnalysisInfo *info = va_arg(ap, AnalysisInfo *);
- if (info)
- OPUS_COPY(&st->analysis, info, 1);
- }
- break;
- case CELT_GET_MODE_REQUEST:
- {
- const CELTMode ** value = va_arg(ap, const CELTMode**);
- if (value==0)
- goto bad_arg;
- *value=st->mode;
- }
- break;
- case OPUS_GET_FINAL_RANGE_REQUEST:
- {
- opus_uint32 * value = va_arg(ap, opus_uint32 *);
- if (value==0)
- goto bad_arg;
- *value=st->rng;
- }
- break;
- case OPUS_SET_LFE_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->lfe = value;
- }
- break;
- case OPUS_SET_ENERGY_MASK_REQUEST:
- {
- opus_val16 *value = va_arg(ap, opus_val16*);
- st->energy_mask = value;
- }
- break;
- default:
- goto bad_request;
- }
- va_end(ap);
- return OPUS_OK;
-bad_arg:
- va_end(ap);
- return OPUS_BAD_ARG;
-bad_request:
- va_end(ap);
- return OPUS_UNIMPLEMENTED;
-}
diff --git a/thirdparty/opus/celt/celt_lpc.c b/thirdparty/opus/celt/celt_lpc.c
deleted file mode 100644
index b410a21c5f..0000000000
--- a/thirdparty/opus/celt/celt_lpc.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/* Copyright (c) 2009-2010 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "celt_lpc.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "pitch.h"
-
-void _celt_lpc(
- opus_val16 *_lpc, /* out: [0...p-1] LPC coefficients */
-const opus_val32 *ac, /* in: [0...p] autocorrelation values */
-int p
-)
-{
- int i, j;
- opus_val32 r;
- opus_val32 error = ac[0];
-#ifdef FIXED_POINT
- opus_val32 lpc[LPC_ORDER];
-#else
- float *lpc = _lpc;
-#endif
-
- OPUS_CLEAR(lpc, p);
- if (ac[0] != 0)
- {
- for (i = 0; i < p; i++) {
- /* Sum up this iteration's reflection coefficient */
- opus_val32 rr = 0;
- for (j = 0; j < i; j++)
- rr += MULT32_32_Q31(lpc[j],ac[i - j]);
- rr += SHR32(ac[i + 1],3);
- r = -frac_div32(SHL32(rr,3), error);
- /* Update LPC coefficients and total error */
- lpc[i] = SHR32(r,3);
- for (j = 0; j < (i+1)>>1; j++)
- {
- opus_val32 tmp1, tmp2;
- tmp1 = lpc[j];
- tmp2 = lpc[i-1-j];
- lpc[j] = tmp1 + MULT32_32_Q31(r,tmp2);
- lpc[i-1-j] = tmp2 + MULT32_32_Q31(r,tmp1);
- }
-
- error = error - MULT32_32_Q31(MULT32_32_Q31(r,r),error);
- /* Bail out once we get 30 dB gain */
-#ifdef FIXED_POINT
- if (error<SHR32(ac[0],10))
- break;
-#else
- if (error<.001f*ac[0])
- break;
-#endif
- }
- }
-#ifdef FIXED_POINT
- for (i=0;i<p;i++)
- _lpc[i] = ROUND16(lpc[i],16);
-#endif
-}
-
-
-void celt_fir_c(
- const opus_val16 *_x,
- const opus_val16 *num,
- opus_val16 *_y,
- int N,
- int ord,
- opus_val16 *mem,
- int arch)
-{
- int i,j;
- VARDECL(opus_val16, rnum);
- VARDECL(opus_val16, x);
- SAVE_STACK;
-
- ALLOC(rnum, ord, opus_val16);
- ALLOC(x, N+ord, opus_val16);
- for(i=0;i<ord;i++)
- rnum[i] = num[ord-i-1];
- for(i=0;i<ord;i++)
- x[i] = mem[ord-i-1];
- for (i=0;i<N;i++)
- x[i+ord]=_x[i];
- for(i=0;i<ord;i++)
- mem[i] = _x[N-i-1];
-#ifdef SMALL_FOOTPRINT
- (void)arch;
- for (i=0;i<N;i++)
- {
- opus_val32 sum = SHL32(EXTEND32(_x[i]), SIG_SHIFT);
- for (j=0;j<ord;j++)
- {
- sum = MAC16_16(sum,rnum[j],x[i+j]);
- }
- _y[i] = SATURATE16(PSHR32(sum, SIG_SHIFT));
- }
-#else
- for (i=0;i<N-3;i+=4)
- {
- opus_val32 sum[4]={0,0,0,0};
- xcorr_kernel(rnum, x+i, sum, ord, arch);
- _y[i ] = SATURATE16(ADD32(EXTEND32(_x[i ]), PSHR32(sum[0], SIG_SHIFT)));
- _y[i+1] = SATURATE16(ADD32(EXTEND32(_x[i+1]), PSHR32(sum[1], SIG_SHIFT)));
- _y[i+2] = SATURATE16(ADD32(EXTEND32(_x[i+2]), PSHR32(sum[2], SIG_SHIFT)));
- _y[i+3] = SATURATE16(ADD32(EXTEND32(_x[i+3]), PSHR32(sum[3], SIG_SHIFT)));
- }
- for (;i<N;i++)
- {
- opus_val32 sum = 0;
- for (j=0;j<ord;j++)
- sum = MAC16_16(sum,rnum[j],x[i+j]);
- _y[i] = SATURATE16(ADD32(EXTEND32(_x[i]), PSHR32(sum, SIG_SHIFT)));
- }
-#endif
- RESTORE_STACK;
-}
-
-void celt_iir(const opus_val32 *_x,
- const opus_val16 *den,
- opus_val32 *_y,
- int N,
- int ord,
- opus_val16 *mem,
- int arch)
-{
-#ifdef SMALL_FOOTPRINT
- int i,j;
- (void)arch;
- for (i=0;i<N;i++)
- {
- opus_val32 sum = _x[i];
- for (j=0;j<ord;j++)
- {
- sum -= MULT16_16(den[j],mem[j]);
- }
- for (j=ord-1;j>=1;j--)
- {
- mem[j]=mem[j-1];
- }
- mem[0] = ROUND16(sum,SIG_SHIFT);
- _y[i] = sum;
- }
-#else
- int i,j;
- VARDECL(opus_val16, rden);
- VARDECL(opus_val16, y);
- SAVE_STACK;
-
- celt_assert((ord&3)==0);
- ALLOC(rden, ord, opus_val16);
- ALLOC(y, N+ord, opus_val16);
- for(i=0;i<ord;i++)
- rden[i] = den[ord-i-1];
- for(i=0;i<ord;i++)
- y[i] = -mem[ord-i-1];
- for(;i<N+ord;i++)
- y[i]=0;
- for (i=0;i<N-3;i+=4)
- {
- /* Unroll by 4 as if it were an FIR filter */
- opus_val32 sum[4];
- sum[0]=_x[i];
- sum[1]=_x[i+1];
- sum[2]=_x[i+2];
- sum[3]=_x[i+3];
- xcorr_kernel(rden, y+i, sum, ord, arch);
-
- /* Patch up the result to compensate for the fact that this is an IIR */
- y[i+ord ] = -ROUND16(sum[0],SIG_SHIFT);
- _y[i ] = sum[0];
- sum[1] = MAC16_16(sum[1], y[i+ord ], den[0]);
- y[i+ord+1] = -ROUND16(sum[1],SIG_SHIFT);
- _y[i+1] = sum[1];
- sum[2] = MAC16_16(sum[2], y[i+ord+1], den[0]);
- sum[2] = MAC16_16(sum[2], y[i+ord ], den[1]);
- y[i+ord+2] = -ROUND16(sum[2],SIG_SHIFT);
- _y[i+2] = sum[2];
-
- sum[3] = MAC16_16(sum[3], y[i+ord+2], den[0]);
- sum[3] = MAC16_16(sum[3], y[i+ord+1], den[1]);
- sum[3] = MAC16_16(sum[3], y[i+ord ], den[2]);
- y[i+ord+3] = -ROUND16(sum[3],SIG_SHIFT);
- _y[i+3] = sum[3];
- }
- for (;i<N;i++)
- {
- opus_val32 sum = _x[i];
- for (j=0;j<ord;j++)
- sum -= MULT16_16(rden[j],y[i+j]);
- y[i+ord] = ROUND16(sum,SIG_SHIFT);
- _y[i] = sum;
- }
- for(i=0;i<ord;i++)
- mem[i] = _y[N-i-1];
- RESTORE_STACK;
-#endif
-}
-
-int _celt_autocorr(
- const opus_val16 *x, /* in: [0...n-1] samples x */
- opus_val32 *ac, /* out: [0...lag-1] ac values */
- const opus_val16 *window,
- int overlap,
- int lag,
- int n,
- int arch
- )
-{
- opus_val32 d;
- int i, k;
- int fastN=n-lag;
- int shift;
- const opus_val16 *xptr;
- VARDECL(opus_val16, xx);
- SAVE_STACK;
- ALLOC(xx, n, opus_val16);
- celt_assert(n>0);
- celt_assert(overlap>=0);
- if (overlap == 0)
- {
- xptr = x;
- } else {
- for (i=0;i<n;i++)
- xx[i] = x[i];
- for (i=0;i<overlap;i++)
- {
- xx[i] = MULT16_16_Q15(x[i],window[i]);
- xx[n-i-1] = MULT16_16_Q15(x[n-i-1],window[i]);
- }
- xptr = xx;
- }
- shift=0;
-#ifdef FIXED_POINT
- {
- opus_val32 ac0;
- ac0 = 1+(n<<7);
- if (n&1) ac0 += SHR32(MULT16_16(xptr[0],xptr[0]),9);
- for(i=(n&1);i<n;i+=2)
- {
- ac0 += SHR32(MULT16_16(xptr[i],xptr[i]),9);
- ac0 += SHR32(MULT16_16(xptr[i+1],xptr[i+1]),9);
- }
-
- shift = celt_ilog2(ac0)-30+10;
- shift = (shift)/2;
- if (shift>0)
- {
- for(i=0;i<n;i++)
- xx[i] = PSHR32(xptr[i], shift);
- xptr = xx;
- } else
- shift = 0;
- }
-#endif
- celt_pitch_xcorr(xptr, xptr, ac, fastN, lag+1, arch);
- for (k=0;k<=lag;k++)
- {
- for (i = k+fastN, d = 0; i < n; i++)
- d = MAC16_16(d, xptr[i], xptr[i-k]);
- ac[k] += d;
- }
-#ifdef FIXED_POINT
- shift = 2*shift;
- if (shift<=0)
- ac[0] += SHL32((opus_int32)1, -shift);
- if (ac[0] < 268435456)
- {
- int shift2 = 29 - EC_ILOG(ac[0]);
- for (i=0;i<=lag;i++)
- ac[i] = SHL32(ac[i], shift2);
- shift -= shift2;
- } else if (ac[0] >= 536870912)
- {
- int shift2=1;
- if (ac[0] >= 1073741824)
- shift2++;
- for (i=0;i<=lag;i++)
- ac[i] = SHR32(ac[i], shift2);
- shift += shift2;
- }
-#endif
-
- RESTORE_STACK;
- return shift;
-}
diff --git a/thirdparty/opus/celt/celt_lpc.h b/thirdparty/opus/celt/celt_lpc.h
deleted file mode 100644
index 323459eb1a..0000000000
--- a/thirdparty/opus/celt/celt_lpc.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright (c) 2009-2010 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef PLC_H
-#define PLC_H
-
-#include "arch.h"
-#include "cpu_support.h"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1)
-#include "x86/celt_lpc_sse.h"
-#endif
-
-#define LPC_ORDER 24
-
-void _celt_lpc(opus_val16 *_lpc, const opus_val32 *ac, int p);
-
-void celt_fir_c(
- const opus_val16 *x,
- const opus_val16 *num,
- opus_val16 *y,
- int N,
- int ord,
- opus_val16 *mem,
- int arch);
-
-#if !defined(OVERRIDE_CELT_FIR)
-#define celt_fir(x, num, y, N, ord, mem, arch) \
- (celt_fir_c(x, num, y, N, ord, mem, arch))
-#endif
-
-void celt_iir(const opus_val32 *x,
- const opus_val16 *den,
- opus_val32 *y,
- int N,
- int ord,
- opus_val16 *mem,
- int arch);
-
-int _celt_autocorr(const opus_val16 *x, opus_val32 *ac,
- const opus_val16 *window, int overlap, int lag, int n, int arch);
-
-#endif /* PLC_H */
diff --git a/thirdparty/opus/celt/cpu_support.h b/thirdparty/opus/celt/cpu_support.h
deleted file mode 100644
index 68fc60678f..0000000000
--- a/thirdparty/opus/celt/cpu_support.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Copyright (c) 2010 Xiph.Org Foundation
- * Copyright (c) 2013 Parrot */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CPU_SUPPORT_H
-#define CPU_SUPPORT_H
-
-#include "opus_types.h"
-#include "opus_defines.h"
-
-#if defined(OPUS_HAVE_RTCD) && \
- (defined(OPUS_ARM_ASM) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR))
-#include "arm/armcpu.h"
-
-/* We currently support 4 ARM variants:
- * arch[0] -> ARMv4
- * arch[1] -> ARMv5E
- * arch[2] -> ARMv6
- * arch[3] -> NEON
- */
-#define OPUS_ARCHMASK 3
-
-#elif (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE)) || \
- (defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2)) || \
- (defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)) || \
- (defined(OPUS_X86_MAY_HAVE_AVX) && !defined(OPUS_X86_PRESUME_AVX))
-
-#include "x86/x86cpu.h"
-/* We currently support 5 x86 variants:
- * arch[0] -> non-sse
- * arch[1] -> sse
- * arch[2] -> sse2
- * arch[3] -> sse4.1
- * arch[4] -> avx
- */
-#define OPUS_ARCHMASK 7
-int opus_select_arch(void);
-
-#else
-#define OPUS_ARCHMASK 0
-
-static OPUS_INLINE int opus_select_arch(void)
-{
- return 0;
-}
-#endif
-#endif
diff --git a/thirdparty/opus/celt/cwrs.c b/thirdparty/opus/celt/cwrs.c
deleted file mode 100644
index 9722f0ac86..0000000000
--- a/thirdparty/opus/celt/cwrs.c
+++ /dev/null
@@ -1,715 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Copyright (c) 2007-2009 Timothy B. Terriberry
- Written by Timothy B. Terriberry and Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "os_support.h"
-#include "cwrs.h"
-#include "mathops.h"
-#include "arch.h"
-
-#ifdef CUSTOM_MODES
-
-/*Guaranteed to return a conservatively large estimate of the binary logarithm
- with frac bits of fractional precision.
- Tested for all possible 32-bit inputs with frac=4, where the maximum
- overestimation is 0.06254243 bits.*/
-int log2_frac(opus_uint32 val, int frac)
-{
- int l;
- l=EC_ILOG(val);
- if(val&(val-1)){
- /*This is (val>>l-16), but guaranteed to round up, even if adding a bias
- before the shift would cause overflow (e.g., for 0xFFFFxxxx).
- Doesn't work for val=0, but that case fails the test above.*/
- if(l>16)val=((val-1)>>(l-16))+1;
- else val<<=16-l;
- l=(l-1)<<frac;
- /*Note that we always need one iteration, since the rounding up above means
- that we might need to adjust the integer part of the logarithm.*/
- do{
- int b;
- b=(int)(val>>16);
- l+=b<<frac;
- val=(val+b)>>b;
- val=(val*val+0x7FFF)>>15;
- }
- while(frac-->0);
- /*If val is not exactly 0x8000, then we have to round up the remainder.*/
- return l+(val>0x8000);
- }
- /*Exact powers of two require no rounding.*/
- else return (l-1)<<frac;
-}
-#endif
-
-/*Although derived separately, the pulse vector coding scheme is equivalent to
- a Pyramid Vector Quantizer \cite{Fis86}.
- Some additional notes about an early version appear at
- https://people.xiph.org/~tterribe/notes/cwrs.html, but the codebook ordering
- and the definitions of some terms have evolved since that was written.
-
- The conversion from a pulse vector to an integer index (encoding) and back
- (decoding) is governed by two related functions, V(N,K) and U(N,K).
-
- V(N,K) = the number of combinations, with replacement, of N items, taken K
- at a time, when a sign bit is added to each item taken at least once (i.e.,
- the number of N-dimensional unit pulse vectors with K pulses).
- One way to compute this is via
- V(N,K) = K>0 ? sum(k=1...K,2**k*choose(N,k)*choose(K-1,k-1)) : 1,
- where choose() is the binomial function.
- A table of values for N<10 and K<10 looks like:
- V[10][10] = {
- {1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- {1, 2, 2, 2, 2, 2, 2, 2, 2, 2},
- {1, 4, 8, 12, 16, 20, 24, 28, 32, 36},
- {1, 6, 18, 38, 66, 102, 146, 198, 258, 326},
- {1, 8, 32, 88, 192, 360, 608, 952, 1408, 1992},
- {1, 10, 50, 170, 450, 1002, 1970, 3530, 5890, 9290},
- {1, 12, 72, 292, 912, 2364, 5336, 10836, 20256, 35436},
- {1, 14, 98, 462, 1666, 4942, 12642, 28814, 59906, 115598},
- {1, 16, 128, 688, 2816, 9424, 27008, 68464, 157184, 332688},
- {1, 18, 162, 978, 4482, 16722, 53154, 148626, 374274, 864146}
- };
-
- U(N,K) = the number of such combinations wherein N-1 objects are taken at
- most K-1 at a time.
- This is given by
- U(N,K) = sum(k=0...K-1,V(N-1,k))
- = K>0 ? (V(N-1,K-1) + V(N,K-1))/2 : 0.
- The latter expression also makes clear that U(N,K) is half the number of such
- combinations wherein the first object is taken at least once.
- Although it may not be clear from either of these definitions, U(N,K) is the
- natural function to work with when enumerating the pulse vector codebooks,
- not V(N,K).
- U(N,K) is not well-defined for N=0, but with the extension
- U(0,K) = K>0 ? 0 : 1,
- the function becomes symmetric: U(N,K) = U(K,N), with a similar table:
- U[10][10] = {
- {1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- {0, 1, 1, 1, 1, 1, 1, 1, 1, 1},
- {0, 1, 3, 5, 7, 9, 11, 13, 15, 17},
- {0, 1, 5, 13, 25, 41, 61, 85, 113, 145},
- {0, 1, 7, 25, 63, 129, 231, 377, 575, 833},
- {0, 1, 9, 41, 129, 321, 681, 1289, 2241, 3649},
- {0, 1, 11, 61, 231, 681, 1683, 3653, 7183, 13073},
- {0, 1, 13, 85, 377, 1289, 3653, 8989, 19825, 40081},
- {0, 1, 15, 113, 575, 2241, 7183, 19825, 48639, 108545},
- {0, 1, 17, 145, 833, 3649, 13073, 40081, 108545, 265729}
- };
-
- With this extension, V(N,K) may be written in terms of U(N,K):
- V(N,K) = U(N,K) + U(N,K+1)
- for all N>=0, K>=0.
- Thus U(N,K+1) represents the number of combinations where the first element
- is positive or zero, and U(N,K) represents the number of combinations where
- it is negative.
- With a large enough table of U(N,K) values, we could write O(N) encoding
- and O(min(N*log(K),N+K)) decoding routines, but such a table would be
- prohibitively large for small embedded devices (K may be as large as 32767
- for small N, and N may be as large as 200).
-
- Both functions obey the same recurrence relation:
- V(N,K) = V(N-1,K) + V(N,K-1) + V(N-1,K-1),
- U(N,K) = U(N-1,K) + U(N,K-1) + U(N-1,K-1),
- for all N>0, K>0, with different initial conditions at N=0 or K=0.
- This allows us to construct a row of one of the tables above given the
- previous row or the next row.
- Thus we can derive O(NK) encoding and decoding routines with O(K) memory
- using only addition and subtraction.
-
- When encoding, we build up from the U(2,K) row and work our way forwards.
- When decoding, we need to start at the U(N,K) row and work our way backwards,
- which requires a means of computing U(N,K).
- U(N,K) may be computed from two previous values with the same N:
- U(N,K) = ((2*N-1)*U(N,K-1) - U(N,K-2))/(K-1) + U(N,K-2)
- for all N>1, and since U(N,K) is symmetric, a similar relation holds for two
- previous values with the same K:
- U(N,K>1) = ((2*K-1)*U(N-1,K) - U(N-2,K))/(N-1) + U(N-2,K)
- for all K>1.
- This allows us to construct an arbitrary row of the U(N,K) table by starting
- with the first two values, which are constants.
- This saves roughly 2/3 the work in our O(NK) decoding routine, but costs O(K)
- multiplications.
- Similar relations can be derived for V(N,K), but are not used here.
-
- For N>0 and K>0, U(N,K) and V(N,K) take on the form of an (N-1)-degree
- polynomial for fixed N.
- The first few are
- U(1,K) = 1,
- U(2,K) = 2*K-1,
- U(3,K) = (2*K-2)*K+1,
- U(4,K) = (((4*K-6)*K+8)*K-3)/3,
- U(5,K) = ((((2*K-4)*K+10)*K-8)*K+3)/3,
- and
- V(1,K) = 2,
- V(2,K) = 4*K,
- V(3,K) = 4*K*K+2,
- V(4,K) = 8*(K*K+2)*K/3,
- V(5,K) = ((4*K*K+20)*K*K+6)/3,
- for all K>0.
- This allows us to derive O(N) encoding and O(N*log(K)) decoding routines for
- small N (and indeed decoding is also O(N) for N<3).
-
- @ARTICLE{Fis86,
- author="Thomas R. Fischer",
- title="A Pyramid Vector Quantizer",
- journal="IEEE Transactions on Information Theory",
- volume="IT-32",
- number=4,
- pages="568--583",
- month=Jul,
- year=1986
- }*/
-
-#if !defined(SMALL_FOOTPRINT)
-
-/*U(N,K) = U(K,N) := N>0?K>0?U(N-1,K)+U(N,K-1)+U(N-1,K-1):0:K>0?1:0*/
-# define CELT_PVQ_U(_n,_k) (CELT_PVQ_U_ROW[IMIN(_n,_k)][IMAX(_n,_k)])
-/*V(N,K) := U(N,K)+U(N,K+1) = the number of PVQ codewords for a band of size N
- with K pulses allocated to it.*/
-# define CELT_PVQ_V(_n,_k) (CELT_PVQ_U(_n,_k)+CELT_PVQ_U(_n,(_k)+1))
-
-/*For each V(N,K) supported, we will access element U(min(N,K+1),max(N,K+1)).
- Thus, the number of entries in row I is the larger of the maximum number of
- pulses we will ever allocate for a given N=I (K=128, or however many fit in
- 32 bits, whichever is smaller), plus one, and the maximum N for which
- K=I-1 pulses fit in 32 bits.
- The largest band size in an Opus Custom mode is 208.
- Otherwise, we can limit things to the set of N which can be achieved by
- splitting a band from a standard Opus mode: 176, 144, 96, 88, 72, 64, 48,
- 44, 36, 32, 24, 22, 18, 16, 8, 4, 2).*/
-#if defined(CUSTOM_MODES)
-static const opus_uint32 CELT_PVQ_U_DATA[1488]={
-#else
-static const opus_uint32 CELT_PVQ_U_DATA[1272]={
-#endif
- /*N=0, K=0...176:*/
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-#if defined(CUSTOM_MODES)
- /*...208:*/
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
-#endif
- /*N=1, K=1...176:*/
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-#if defined(CUSTOM_MODES)
- /*...208:*/
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1,
-#endif
- /*N=2, K=2...176:*/
- 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
- 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
- 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113,
- 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143,
- 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203,
- 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233,
- 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 299, 301, 303, 305, 307, 309, 311, 313, 315, 317, 319, 321, 323,
- 325, 327, 329, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351,
-#if defined(CUSTOM_MODES)
- /*...208:*/
- 353, 355, 357, 359, 361, 363, 365, 367, 369, 371, 373, 375, 377, 379, 381,
- 383, 385, 387, 389, 391, 393, 395, 397, 399, 401, 403, 405, 407, 409, 411,
- 413, 415,
-#endif
- /*N=3, K=3...176:*/
- 13, 25, 41, 61, 85, 113, 145, 181, 221, 265, 313, 365, 421, 481, 545, 613,
- 685, 761, 841, 925, 1013, 1105, 1201, 1301, 1405, 1513, 1625, 1741, 1861,
- 1985, 2113, 2245, 2381, 2521, 2665, 2813, 2965, 3121, 3281, 3445, 3613, 3785,
- 3961, 4141, 4325, 4513, 4705, 4901, 5101, 5305, 5513, 5725, 5941, 6161, 6385,
- 6613, 6845, 7081, 7321, 7565, 7813, 8065, 8321, 8581, 8845, 9113, 9385, 9661,
- 9941, 10225, 10513, 10805, 11101, 11401, 11705, 12013, 12325, 12641, 12961,
- 13285, 13613, 13945, 14281, 14621, 14965, 15313, 15665, 16021, 16381, 16745,
- 17113, 17485, 17861, 18241, 18625, 19013, 19405, 19801, 20201, 20605, 21013,
- 21425, 21841, 22261, 22685, 23113, 23545, 23981, 24421, 24865, 25313, 25765,
- 26221, 26681, 27145, 27613, 28085, 28561, 29041, 29525, 30013, 30505, 31001,
- 31501, 32005, 32513, 33025, 33541, 34061, 34585, 35113, 35645, 36181, 36721,
- 37265, 37813, 38365, 38921, 39481, 40045, 40613, 41185, 41761, 42341, 42925,
- 43513, 44105, 44701, 45301, 45905, 46513, 47125, 47741, 48361, 48985, 49613,
- 50245, 50881, 51521, 52165, 52813, 53465, 54121, 54781, 55445, 56113, 56785,
- 57461, 58141, 58825, 59513, 60205, 60901, 61601,
-#if defined(CUSTOM_MODES)
- /*...208:*/
- 62305, 63013, 63725, 64441, 65161, 65885, 66613, 67345, 68081, 68821, 69565,
- 70313, 71065, 71821, 72581, 73345, 74113, 74885, 75661, 76441, 77225, 78013,
- 78805, 79601, 80401, 81205, 82013, 82825, 83641, 84461, 85285, 86113,
-#endif
- /*N=4, K=4...176:*/
- 63, 129, 231, 377, 575, 833, 1159, 1561, 2047, 2625, 3303, 4089, 4991, 6017,
- 7175, 8473, 9919, 11521, 13287, 15225, 17343, 19649, 22151, 24857, 27775,
- 30913, 34279, 37881, 41727, 45825, 50183, 54809, 59711, 64897, 70375, 76153,
- 82239, 88641, 95367, 102425, 109823, 117569, 125671, 134137, 142975, 152193,
- 161799, 171801, 182207, 193025, 204263, 215929, 228031, 240577, 253575,
- 267033, 280959, 295361, 310247, 325625, 341503, 357889, 374791, 392217,
- 410175, 428673, 447719, 467321, 487487, 508225, 529543, 551449, 573951,
- 597057, 620775, 645113, 670079, 695681, 721927, 748825, 776383, 804609,
- 833511, 863097, 893375, 924353, 956039, 988441, 1021567, 1055425, 1090023,
- 1125369, 1161471, 1198337, 1235975, 1274393, 1313599, 1353601, 1394407,
- 1436025, 1478463, 1521729, 1565831, 1610777, 1656575, 1703233, 1750759,
- 1799161, 1848447, 1898625, 1949703, 2001689, 2054591, 2108417, 2163175,
- 2218873, 2275519, 2333121, 2391687, 2451225, 2511743, 2573249, 2635751,
- 2699257, 2763775, 2829313, 2895879, 2963481, 3032127, 3101825, 3172583,
- 3244409, 3317311, 3391297, 3466375, 3542553, 3619839, 3698241, 3777767,
- 3858425, 3940223, 4023169, 4107271, 4192537, 4278975, 4366593, 4455399,
- 4545401, 4636607, 4729025, 4822663, 4917529, 5013631, 5110977, 5209575,
- 5309433, 5410559, 5512961, 5616647, 5721625, 5827903, 5935489, 6044391,
- 6154617, 6266175, 6379073, 6493319, 6608921, 6725887, 6844225, 6963943,
- 7085049, 7207551,
-#if defined(CUSTOM_MODES)
- /*...208:*/
- 7331457, 7456775, 7583513, 7711679, 7841281, 7972327, 8104825, 8238783,
- 8374209, 8511111, 8649497, 8789375, 8930753, 9073639, 9218041, 9363967,
- 9511425, 9660423, 9810969, 9963071, 10116737, 10271975, 10428793, 10587199,
- 10747201, 10908807, 11072025, 11236863, 11403329, 11571431, 11741177,
- 11912575,
-#endif
- /*N=5, K=5...176:*/
- 321, 681, 1289, 2241, 3649, 5641, 8361, 11969, 16641, 22569, 29961, 39041,
- 50049, 63241, 78889, 97281, 118721, 143529, 172041, 204609, 241601, 283401,
- 330409, 383041, 441729, 506921, 579081, 658689, 746241, 842249, 947241,
- 1061761, 1186369, 1321641, 1468169, 1626561, 1797441, 1981449, 2179241,
- 2391489, 2618881, 2862121, 3121929, 3399041, 3694209, 4008201, 4341801,
- 4695809, 5071041, 5468329, 5888521, 6332481, 6801089, 7295241, 7815849,
- 8363841, 8940161, 9545769, 10181641, 10848769, 11548161, 12280841, 13047849,
- 13850241, 14689089, 15565481, 16480521, 17435329, 18431041, 19468809,
- 20549801, 21675201, 22846209, 24064041, 25329929, 26645121, 28010881,
- 29428489, 30899241, 32424449, 34005441, 35643561, 37340169, 39096641,
- 40914369, 42794761, 44739241, 46749249, 48826241, 50971689, 53187081,
- 55473921, 57833729, 60268041, 62778409, 65366401, 68033601, 70781609,
- 73612041, 76526529, 79526721, 82614281, 85790889, 89058241, 92418049,
- 95872041, 99421961, 103069569, 106816641, 110664969, 114616361, 118672641,
- 122835649, 127107241, 131489289, 135983681, 140592321, 145317129, 150160041,
- 155123009, 160208001, 165417001, 170752009, 176215041, 181808129, 187533321,
- 193392681, 199388289, 205522241, 211796649, 218213641, 224775361, 231483969,
- 238341641, 245350569, 252512961, 259831041, 267307049, 274943241, 282741889,
- 290705281, 298835721, 307135529, 315607041, 324252609, 333074601, 342075401,
- 351257409, 360623041, 370174729, 379914921, 389846081, 399970689, 410291241,
- 420810249, 431530241, 442453761, 453583369, 464921641, 476471169, 488234561,
- 500214441, 512413449, 524834241, 537479489, 550351881, 563454121, 576788929,
- 590359041, 604167209, 618216201, 632508801,
-#if defined(CUSTOM_MODES)
- /*...208:*/
- 647047809, 661836041, 676876329, 692171521, 707724481, 723538089, 739615241,
- 755958849, 772571841, 789457161, 806617769, 824056641, 841776769, 859781161,
- 878072841, 896654849, 915530241, 934702089, 954173481, 973947521, 994027329,
- 1014416041, 1035116809, 1056132801, 1077467201, 1099123209, 1121104041,
- 1143412929, 1166053121, 1189027881, 1212340489, 1235994241,
-#endif
- /*N=6, K=6...96:*/
- 1683, 3653, 7183, 13073, 22363, 36365, 56695, 85305, 124515, 177045, 246047,
- 335137, 448427, 590557, 766727, 982729, 1244979, 1560549, 1937199, 2383409,
- 2908411, 3522221, 4235671, 5060441, 6009091, 7095093, 8332863, 9737793,
- 11326283, 13115773, 15124775, 17372905, 19880915, 22670725, 25765455,
- 29189457, 32968347, 37129037, 41699767, 46710137, 52191139, 58175189,
- 64696159, 71789409, 79491819, 87841821, 96879431, 106646281, 117185651,
- 128542501, 140763503, 153897073, 167993403, 183104493, 199284183, 216588185,
- 235074115, 254801525, 275831935, 298228865, 322057867, 347386557, 374284647,
- 402823977, 433078547, 465124549, 499040399, 534906769, 572806619, 612825229,
- 655050231, 699571641, 746481891, 795875861, 847850911, 902506913, 959946283,
- 1020274013, 1083597703, 1150027593, 1219676595, 1292660325, 1369097135,
- 1449108145, 1532817275, 1620351277, 1711839767, 1807415257, 1907213187,
- 2011371957, 2120032959,
-#if defined(CUSTOM_MODES)
- /*...109:*/
- 2233340609U, 2351442379U, 2474488829U, 2602633639U, 2736033641U, 2874848851U,
- 3019242501U, 3169381071U, 3325434321U, 3487575323U, 3655980493U, 3830829623U,
- 4012305913U,
-#endif
- /*N=7, K=7...54*/
- 8989, 19825, 40081, 75517, 134245, 227305, 369305, 579125, 880685, 1303777,
- 1884961, 2668525, 3707509, 5064793, 6814249, 9041957, 11847485, 15345233,
- 19665841, 24957661, 31388293, 39146185, 48442297, 59511829, 72616013,
- 88043969, 106114625, 127178701, 151620757, 179861305, 212358985, 249612805,
- 292164445, 340600625, 395555537, 457713341, 527810725, 606639529, 695049433,
- 793950709, 904317037, 1027188385, 1163673953, 1314955181, 1482288821,
- 1667010073, 1870535785, 2094367717,
-#if defined(CUSTOM_MODES)
- /*...60:*/
- 2340095869U, 2609401873U, 2904062449U, 3225952925U, 3577050821U, 3959439497U,
-#endif
- /*N=8, K=8...37*/
- 48639, 108545, 224143, 433905, 795455, 1392065, 2340495, 3800305, 5984767,
- 9173505, 13726991, 20103025, 28875327, 40754369, 56610575, 77500017,
- 104692735, 139703809, 184327311, 240673265, 311207743, 398796225, 506750351,
- 638878193, 799538175, 993696769, 1226990095, 1505789553, 1837271615,
- 2229491905U,
-#if defined(CUSTOM_MODES)
- /*...40:*/
- 2691463695U, 3233240945U, 3866006015U,
-#endif
- /*N=9, K=9...28:*/
- 265729, 598417, 1256465, 2485825, 4673345, 8405905, 14546705, 24331777,
- 39490049, 62390545, 96220561, 145198913, 214828609, 312193553, 446304145,
- 628496897, 872893441, 1196924561, 1621925137, 2173806145U,
-#if defined(CUSTOM_MODES)
- /*...29:*/
- 2883810113U,
-#endif
- /*N=10, K=10...24:*/
- 1462563, 3317445, 7059735, 14218905, 27298155, 50250765, 89129247, 152951073,
- 254831667, 413442773, 654862247, 1014889769, 1541911931, 2300409629U,
- 3375210671U,
- /*N=11, K=11...19:*/
- 8097453, 18474633, 39753273, 81270333, 158819253, 298199265, 540279585,
- 948062325, 1616336765,
-#if defined(CUSTOM_MODES)
- /*...20:*/
- 2684641785U,
-#endif
- /*N=12, K=12...18:*/
- 45046719, 103274625, 224298231, 464387817, 921406335, 1759885185,
- 3248227095U,
- /*N=13, K=13...16:*/
- 251595969, 579168825, 1267854873, 2653649025U,
- /*N=14, K=14:*/
- 1409933619
-};
-
-#if defined(CUSTOM_MODES)
-static const opus_uint32 *const CELT_PVQ_U_ROW[15]={
- CELT_PVQ_U_DATA+ 0,CELT_PVQ_U_DATA+ 208,CELT_PVQ_U_DATA+ 415,
- CELT_PVQ_U_DATA+ 621,CELT_PVQ_U_DATA+ 826,CELT_PVQ_U_DATA+1030,
- CELT_PVQ_U_DATA+1233,CELT_PVQ_U_DATA+1336,CELT_PVQ_U_DATA+1389,
- CELT_PVQ_U_DATA+1421,CELT_PVQ_U_DATA+1441,CELT_PVQ_U_DATA+1455,
- CELT_PVQ_U_DATA+1464,CELT_PVQ_U_DATA+1470,CELT_PVQ_U_DATA+1473
-};
-#else
-static const opus_uint32 *const CELT_PVQ_U_ROW[15]={
- CELT_PVQ_U_DATA+ 0,CELT_PVQ_U_DATA+ 176,CELT_PVQ_U_DATA+ 351,
- CELT_PVQ_U_DATA+ 525,CELT_PVQ_U_DATA+ 698,CELT_PVQ_U_DATA+ 870,
- CELT_PVQ_U_DATA+1041,CELT_PVQ_U_DATA+1131,CELT_PVQ_U_DATA+1178,
- CELT_PVQ_U_DATA+1207,CELT_PVQ_U_DATA+1226,CELT_PVQ_U_DATA+1240,
- CELT_PVQ_U_DATA+1248,CELT_PVQ_U_DATA+1254,CELT_PVQ_U_DATA+1257
-};
-#endif
-
-#if defined(CUSTOM_MODES)
-void get_required_bits(opus_int16 *_bits,int _n,int _maxk,int _frac){
- int k;
- /*_maxk==0 => there's nothing to do.*/
- celt_assert(_maxk>0);
- _bits[0]=0;
- for(k=1;k<=_maxk;k++)_bits[k]=log2_frac(CELT_PVQ_V(_n,k),_frac);
-}
-#endif
-
-static opus_uint32 icwrs(int _n,const int *_y){
- opus_uint32 i;
- int j;
- int k;
- celt_assert(_n>=2);
- j=_n-1;
- i=_y[j]<0;
- k=abs(_y[j]);
- do{
- j--;
- i+=CELT_PVQ_U(_n-j,k);
- k+=abs(_y[j]);
- if(_y[j]<0)i+=CELT_PVQ_U(_n-j,k+1);
- }
- while(j>0);
- return i;
-}
-
-void encode_pulses(const int *_y,int _n,int _k,ec_enc *_enc){
- celt_assert(_k>0);
- ec_enc_uint(_enc,icwrs(_n,_y),CELT_PVQ_V(_n,_k));
-}
-
-static opus_val32 cwrsi(int _n,int _k,opus_uint32 _i,int *_y){
- opus_uint32 p;
- int s;
- int k0;
- opus_int16 val;
- opus_val32 yy=0;
- celt_assert(_k>0);
- celt_assert(_n>1);
- while(_n>2){
- opus_uint32 q;
- /*Lots of pulses case:*/
- if(_k>=_n){
- const opus_uint32 *row;
- row=CELT_PVQ_U_ROW[_n];
- /*Are the pulses in this dimension negative?*/
- p=row[_k+1];
- s=-(_i>=p);
- _i-=p&s;
- /*Count how many pulses were placed in this dimension.*/
- k0=_k;
- q=row[_n];
- if(q>_i){
- celt_assert(p>q);
- _k=_n;
- do p=CELT_PVQ_U_ROW[--_k][_n];
- while(p>_i);
- }
- else for(p=row[_k];p>_i;p=row[_k])_k--;
- _i-=p;
- val=(k0-_k+s)^s;
- *_y++=val;
- yy=MAC16_16(yy,val,val);
- }
- /*Lots of dimensions case:*/
- else{
- /*Are there any pulses in this dimension at all?*/
- p=CELT_PVQ_U_ROW[_k][_n];
- q=CELT_PVQ_U_ROW[_k+1][_n];
- if(p<=_i&&_i<q){
- _i-=p;
- *_y++=0;
- }
- else{
- /*Are the pulses in this dimension negative?*/
- s=-(_i>=q);
- _i-=q&s;
- /*Count how many pulses were placed in this dimension.*/
- k0=_k;
- do p=CELT_PVQ_U_ROW[--_k][_n];
- while(p>_i);
- _i-=p;
- val=(k0-_k+s)^s;
- *_y++=val;
- yy=MAC16_16(yy,val,val);
- }
- }
- _n--;
- }
- /*_n==2*/
- p=2*_k+1;
- s=-(_i>=p);
- _i-=p&s;
- k0=_k;
- _k=(_i+1)>>1;
- if(_k)_i-=2*_k-1;
- val=(k0-_k+s)^s;
- *_y++=val;
- yy=MAC16_16(yy,val,val);
- /*_n==1*/
- s=-(int)_i;
- val=(_k+s)^s;
- *_y=val;
- yy=MAC16_16(yy,val,val);
- return yy;
-}
-
-opus_val32 decode_pulses(int *_y,int _n,int _k,ec_dec *_dec){
- return cwrsi(_n,_k,ec_dec_uint(_dec,CELT_PVQ_V(_n,_k)),_y);
-}
-
-#else /* SMALL_FOOTPRINT */
-
-/*Computes the next row/column of any recurrence that obeys the relation
- u[i][j]=u[i-1][j]+u[i][j-1]+u[i-1][j-1].
- _ui0 is the base case for the new row/column.*/
-static OPUS_INLINE void unext(opus_uint32 *_ui,unsigned _len,opus_uint32 _ui0){
- opus_uint32 ui1;
- unsigned j;
- /*This do-while will overrun the array if we don't have storage for at least
- 2 values.*/
- j=1; do {
- ui1=UADD32(UADD32(_ui[j],_ui[j-1]),_ui0);
- _ui[j-1]=_ui0;
- _ui0=ui1;
- } while (++j<_len);
- _ui[j-1]=_ui0;
-}
-
-/*Computes the previous row/column of any recurrence that obeys the relation
- u[i-1][j]=u[i][j]-u[i][j-1]-u[i-1][j-1].
- _ui0 is the base case for the new row/column.*/
-static OPUS_INLINE void uprev(opus_uint32 *_ui,unsigned _n,opus_uint32 _ui0){
- opus_uint32 ui1;
- unsigned j;
- /*This do-while will overrun the array if we don't have storage for at least
- 2 values.*/
- j=1; do {
- ui1=USUB32(USUB32(_ui[j],_ui[j-1]),_ui0);
- _ui[j-1]=_ui0;
- _ui0=ui1;
- } while (++j<_n);
- _ui[j-1]=_ui0;
-}
-
-/*Compute V(_n,_k), as well as U(_n,0..._k+1).
- _u: On exit, _u[i] contains U(_n,i) for i in [0..._k+1].*/
-static opus_uint32 ncwrs_urow(unsigned _n,unsigned _k,opus_uint32 *_u){
- opus_uint32 um2;
- unsigned len;
- unsigned k;
- len=_k+2;
- /*We require storage at least 3 values (e.g., _k>0).*/
- celt_assert(len>=3);
- _u[0]=0;
- _u[1]=um2=1;
- /*If _n==0, _u[0] should be 1 and the rest should be 0.*/
- /*If _n==1, _u[i] should be 1 for i>1.*/
- celt_assert(_n>=2);
- /*If _k==0, the following do-while loop will overflow the buffer.*/
- celt_assert(_k>0);
- k=2;
- do _u[k]=(k<<1)-1;
- while(++k<len);
- for(k=2;k<_n;k++)unext(_u+1,_k+1,1);
- return _u[_k]+_u[_k+1];
-}
-
-/*Returns the _i'th combination of _k elements chosen from a set of size _n
- with associated sign bits.
- _y: Returns the vector of pulses.
- _u: Must contain entries [0..._k+1] of row _n of U() on input.
- Its contents will be destructively modified.*/
-static opus_val32 cwrsi(int _n,int _k,opus_uint32 _i,int *_y,opus_uint32 *_u){
- int j;
- opus_int16 val;
- opus_val32 yy=0;
- celt_assert(_n>0);
- j=0;
- do{
- opus_uint32 p;
- int s;
- int yj;
- p=_u[_k+1];
- s=-(_i>=p);
- _i-=p&s;
- yj=_k;
- p=_u[_k];
- while(p>_i)p=_u[--_k];
- _i-=p;
- yj-=_k;
- val=(yj+s)^s;
- _y[j]=val;
- yy=MAC16_16(yy,val,val);
- uprev(_u,_k+2,0);
- }
- while(++j<_n);
- return yy;
-}
-
-/*Returns the index of the given combination of K elements chosen from a set
- of size 1 with associated sign bits.
- _y: The vector of pulses, whose sum of absolute values is K.
- _k: Returns K.*/
-static OPUS_INLINE opus_uint32 icwrs1(const int *_y,int *_k){
- *_k=abs(_y[0]);
- return _y[0]<0;
-}
-
-/*Returns the index of the given combination of K elements chosen from a set
- of size _n with associated sign bits.
- _y: The vector of pulses, whose sum of absolute values must be _k.
- _nc: Returns V(_n,_k).*/
-static OPUS_INLINE opus_uint32 icwrs(int _n,int _k,opus_uint32 *_nc,const int *_y,
- opus_uint32 *_u){
- opus_uint32 i;
- int j;
- int k;
- /*We can't unroll the first two iterations of the loop unless _n>=2.*/
- celt_assert(_n>=2);
- _u[0]=0;
- for(k=1;k<=_k+1;k++)_u[k]=(k<<1)-1;
- i=icwrs1(_y+_n-1,&k);
- j=_n-2;
- i+=_u[k];
- k+=abs(_y[j]);
- if(_y[j]<0)i+=_u[k+1];
- while(j-->0){
- unext(_u,_k+2,0);
- i+=_u[k];
- k+=abs(_y[j]);
- if(_y[j]<0)i+=_u[k+1];
- }
- *_nc=_u[k]+_u[k+1];
- return i;
-}
-
-#ifdef CUSTOM_MODES
-void get_required_bits(opus_int16 *_bits,int _n,int _maxk,int _frac){
- int k;
- /*_maxk==0 => there's nothing to do.*/
- celt_assert(_maxk>0);
- _bits[0]=0;
- if (_n==1)
- {
- for (k=1;k<=_maxk;k++)
- _bits[k] = 1<<_frac;
- }
- else {
- VARDECL(opus_uint32,u);
- SAVE_STACK;
- ALLOC(u,_maxk+2U,opus_uint32);
- ncwrs_urow(_n,_maxk,u);
- for(k=1;k<=_maxk;k++)
- _bits[k]=log2_frac(u[k]+u[k+1],_frac);
- RESTORE_STACK;
- }
-}
-#endif /* CUSTOM_MODES */
-
-void encode_pulses(const int *_y,int _n,int _k,ec_enc *_enc){
- opus_uint32 i;
- VARDECL(opus_uint32,u);
- opus_uint32 nc;
- SAVE_STACK;
- celt_assert(_k>0);
- ALLOC(u,_k+2U,opus_uint32);
- i=icwrs(_n,_k,&nc,_y,u);
- ec_enc_uint(_enc,i,nc);
- RESTORE_STACK;
-}
-
-opus_val32 decode_pulses(int *_y,int _n,int _k,ec_dec *_dec){
- VARDECL(opus_uint32,u);
- int ret;
- SAVE_STACK;
- celt_assert(_k>0);
- ALLOC(u,_k+2U,opus_uint32);
- ret = cwrsi(_n,_k,ec_dec_uint(_dec,ncwrs_urow(_n,_k,u)),_y,u);
- RESTORE_STACK;
- return ret;
-}
-
-#endif /* SMALL_FOOTPRINT */
diff --git a/thirdparty/opus/celt/cwrs.h b/thirdparty/opus/celt/cwrs.h
deleted file mode 100644
index 7cd4717459..0000000000
--- a/thirdparty/opus/celt/cwrs.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Copyright (c) 2007-2009 Timothy B. Terriberry
- Written by Timothy B. Terriberry and Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CWRS_H
-#define CWRS_H
-
-#include "arch.h"
-#include "stack_alloc.h"
-#include "entenc.h"
-#include "entdec.h"
-
-#ifdef CUSTOM_MODES
-int log2_frac(opus_uint32 val, int frac);
-#endif
-
-void get_required_bits(opus_int16 *bits, int N, int K, int frac);
-
-void encode_pulses(const int *_y, int N, int K, ec_enc *enc);
-
-opus_val32 decode_pulses(int *_y, int N, int K, ec_dec *dec);
-
-#endif /* CWRS_H */
diff --git a/thirdparty/opus/celt/ecintrin.h b/thirdparty/opus/celt/ecintrin.h
deleted file mode 100644
index 2263cff6bd..0000000000
--- a/thirdparty/opus/celt/ecintrin.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright (c) 2003-2008 Timothy B. Terriberry
- Copyright (c) 2008 Xiph.Org Foundation */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*Some common macros for potential platform-specific optimization.*/
-#include "opus_types.h"
-#include <math.h>
-#include <limits.h>
-#include "arch.h"
-#if !defined(_ecintrin_H)
-# define _ecintrin_H (1)
-
-/*Some specific platforms may have optimized intrinsic or OPUS_INLINE assembly
- versions of these functions which can substantially improve performance.
- We define macros for them to allow easy incorporation of these non-ANSI
- features.*/
-
-/*Modern gcc (4.x) can compile the naive versions of min and max with cmov if
- given an appropriate architecture, but the branchless bit-twiddling versions
- are just as fast, and do not require any special target architecture.
- Earlier gcc versions (3.x) compiled both code to the same assembly
- instructions, because of the way they represented ((_b)>(_a)) internally.*/
-# define EC_MINI(_a,_b) ((_a)+(((_b)-(_a))&-((_b)<(_a))))
-
-/*Count leading zeros.
- This macro should only be used for implementing ec_ilog(), if it is defined.
- All other code should use EC_ILOG() instead.*/
-#if defined(_MSC_VER) && (_MSC_VER >= 1400)
-# include <intrin.h>
-/*In _DEBUG mode this is not an intrinsic by default.*/
-# pragma intrinsic(_BitScanReverse)
-
-static __inline int ec_bsr(unsigned long _x){
- unsigned long ret;
- _BitScanReverse(&ret,_x);
- return (int)ret;
-}
-# define EC_CLZ0 (1)
-# define EC_CLZ(_x) (-ec_bsr(_x))
-#elif defined(ENABLE_TI_DSPLIB)
-# include "dsplib.h"
-# define EC_CLZ0 (31)
-# define EC_CLZ(_x) (_lnorm(_x))
-#elif __GNUC_PREREQ(3,4)
-# if INT_MAX>=2147483647
-# define EC_CLZ0 ((int)sizeof(unsigned)*CHAR_BIT)
-# define EC_CLZ(_x) (__builtin_clz(_x))
-# elif LONG_MAX>=2147483647L
-# define EC_CLZ0 ((int)sizeof(unsigned long)*CHAR_BIT)
-# define EC_CLZ(_x) (__builtin_clzl(_x))
-# endif
-#endif
-
-#if defined(EC_CLZ)
-/*Note that __builtin_clz is not defined when _x==0, according to the gcc
- documentation (and that of the BSR instruction that implements it on x86).
- The majority of the time we can never pass it zero.
- When we need to, it can be special cased.*/
-# define EC_ILOG(_x) (EC_CLZ0-EC_CLZ(_x))
-#else
-int ec_ilog(opus_uint32 _v);
-# define EC_ILOG(_x) (ec_ilog(_x))
-#endif
-#endif
diff --git a/thirdparty/opus/celt/entcode.c b/thirdparty/opus/celt/entcode.c
deleted file mode 100644
index 70f32016ec..0000000000
--- a/thirdparty/opus/celt/entcode.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Copyright (c) 2001-2011 Timothy B. Terriberry
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "entcode.h"
-#include "arch.h"
-
-#if !defined(EC_CLZ)
-/*This is a fallback for systems where we don't know how to access
- a BSR or CLZ instruction (see ecintrin.h).
- If you are optimizing Opus on a new platform and it has a native CLZ or
- BZR (e.g. cell, MIPS, x86, etc) then making it available to Opus will be
- an easy performance win.*/
-int ec_ilog(opus_uint32 _v){
- /*On a Pentium M, this branchless version tested as the fastest on
- 1,000,000,000 random 32-bit integers, edging out a similar version with
- branches, and a 256-entry LUT version.*/
- int ret;
- int m;
- ret=!!_v;
- m=!!(_v&0xFFFF0000)<<4;
- _v>>=m;
- ret|=m;
- m=!!(_v&0xFF00)<<3;
- _v>>=m;
- ret|=m;
- m=!!(_v&0xF0)<<2;
- _v>>=m;
- ret|=m;
- m=!!(_v&0xC)<<1;
- _v>>=m;
- ret|=m;
- ret+=!!(_v&0x2);
- return ret;
-}
-#endif
-
-#if 1
-/* This is a faster version of ec_tell_frac() that takes advantage
- of the low (1/8 bit) resolution to use just a linear function
- followed by a lookup to determine the exact transition thresholds. */
-opus_uint32 ec_tell_frac(ec_ctx *_this){
- static const unsigned correction[8] =
- {35733, 38967, 42495, 46340,
- 50535, 55109, 60097, 65535};
- opus_uint32 nbits;
- opus_uint32 r;
- int l;
- unsigned b;
- nbits=_this->nbits_total<<BITRES;
- l=EC_ILOG(_this->rng);
- r=_this->rng>>(l-16);
- b = (r>>12)-8;
- b += r>correction[b];
- l = (l<<3)+b;
- return nbits-l;
-}
-#else
-opus_uint32 ec_tell_frac(ec_ctx *_this){
- opus_uint32 nbits;
- opus_uint32 r;
- int l;
- int i;
- /*To handle the non-integral number of bits still left in the encoder/decoder
- state, we compute the worst-case number of bits of val that must be
- encoded to ensure that the value is inside the range for any possible
- subsequent bits.
- The computation here is independent of val itself (the decoder does not
- even track that value), even though the real number of bits used after
- ec_enc_done() may be 1 smaller if rng is a power of two and the
- corresponding trailing bits of val are all zeros.
- If we did try to track that special case, then coding a value with a
- probability of 1/(1<<n) might sometimes appear to use more than n bits.
- This may help explain the surprising result that a newly initialized
- encoder or decoder claims to have used 1 bit.*/
- nbits=_this->nbits_total<<BITRES;
- l=EC_ILOG(_this->rng);
- r=_this->rng>>(l-16);
- for(i=BITRES;i-->0;){
- int b;
- r=r*r>>15;
- b=(int)(r>>16);
- l=l<<1|b;
- r>>=b;
- }
- return nbits-l;
-}
-#endif
-
-#ifdef USE_SMALL_DIV_TABLE
-/* Result of 2^32/(2*i+1), except for i=0. */
-const opus_uint32 SMALL_DIV_TABLE[129] = {
- 0xFFFFFFFF, 0x55555555, 0x33333333, 0x24924924,
- 0x1C71C71C, 0x1745D174, 0x13B13B13, 0x11111111,
- 0x0F0F0F0F, 0x0D79435E, 0x0C30C30C, 0x0B21642C,
- 0x0A3D70A3, 0x097B425E, 0x08D3DCB0, 0x08421084,
- 0x07C1F07C, 0x07507507, 0x06EB3E45, 0x06906906,
- 0x063E7063, 0x05F417D0, 0x05B05B05, 0x0572620A,
- 0x05397829, 0x05050505, 0x04D4873E, 0x04A7904A,
- 0x047DC11F, 0x0456C797, 0x04325C53, 0x04104104,
- 0x03F03F03, 0x03D22635, 0x03B5CC0E, 0x039B0AD1,
- 0x0381C0E0, 0x0369D036, 0x03531DEC, 0x033D91D2,
- 0x0329161F, 0x03159721, 0x03030303, 0x02F14990,
- 0x02E05C0B, 0x02D02D02, 0x02C0B02C, 0x02B1DA46,
- 0x02A3A0FD, 0x0295FAD4, 0x0288DF0C, 0x027C4597,
- 0x02702702, 0x02647C69, 0x02593F69, 0x024E6A17,
- 0x0243F6F0, 0x0239E0D5, 0x02302302, 0x0226B902,
- 0x021D9EAD, 0x0214D021, 0x020C49BA, 0x02040810,
- 0x01FC07F0, 0x01F44659, 0x01ECC07B, 0x01E573AC,
- 0x01DE5D6E, 0x01D77B65, 0x01D0CB58, 0x01CA4B30,
- 0x01C3F8F0, 0x01BDD2B8, 0x01B7D6C3, 0x01B20364,
- 0x01AC5701, 0x01A6D01A, 0x01A16D3F, 0x019C2D14,
- 0x01970E4F, 0x01920FB4, 0x018D3018, 0x01886E5F,
- 0x0183C977, 0x017F405F, 0x017AD220, 0x01767DCE,
- 0x01724287, 0x016E1F76, 0x016A13CD, 0x01661EC6,
- 0x01623FA7, 0x015E75BB, 0x015AC056, 0x01571ED3,
- 0x01539094, 0x01501501, 0x014CAB88, 0x0149539E,
- 0x01460CBC, 0x0142D662, 0x013FB013, 0x013C995A,
- 0x013991C2, 0x013698DF, 0x0133AE45, 0x0130D190,
- 0x012E025C, 0x012B404A, 0x01288B01, 0x0125E227,
- 0x01234567, 0x0120B470, 0x011E2EF3, 0x011BB4A4,
- 0x01194538, 0x0116E068, 0x011485F0, 0x0112358E,
- 0x010FEF01, 0x010DB20A, 0x010B7E6E, 0x010953F3,
- 0x01073260, 0x0105197F, 0x0103091B, 0x01010101
-};
-#endif
diff --git a/thirdparty/opus/celt/entcode.h b/thirdparty/opus/celt/entcode.h
deleted file mode 100644
index 13d6c84ef0..0000000000
--- a/thirdparty/opus/celt/entcode.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Copyright (c) 2001-2011 Timothy B. Terriberry
- Copyright (c) 2008-2009 Xiph.Org Foundation */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "opus_types.h"
-#include "opus_defines.h"
-
-#if !defined(_entcode_H)
-# define _entcode_H (1)
-# include <limits.h>
-# include <stddef.h>
-# include "ecintrin.h"
-
-extern const opus_uint32 SMALL_DIV_TABLE[129];
-
-#ifdef OPUS_ARM_ASM
-#define USE_SMALL_DIV_TABLE
-#endif
-
-/*OPT: ec_window must be at least 32 bits, but if you have fast arithmetic on a
- larger type, you can speed up the decoder by using it here.*/
-typedef opus_uint32 ec_window;
-typedef struct ec_ctx ec_ctx;
-typedef struct ec_ctx ec_enc;
-typedef struct ec_ctx ec_dec;
-
-# define EC_WINDOW_SIZE ((int)sizeof(ec_window)*CHAR_BIT)
-
-/*The number of bits to use for the range-coded part of unsigned integers.*/
-# define EC_UINT_BITS (8)
-
-/*The resolution of fractional-precision bit usage measurements, i.e.,
- 3 => 1/8th bits.*/
-# define BITRES 3
-
-/*The entropy encoder/decoder context.
- We use the same structure for both, so that common functions like ec_tell()
- can be used on either one.*/
-struct ec_ctx{
- /*Buffered input/output.*/
- unsigned char *buf;
- /*The size of the buffer.*/
- opus_uint32 storage;
- /*The offset at which the last byte containing raw bits was read/written.*/
- opus_uint32 end_offs;
- /*Bits that will be read from/written at the end.*/
- ec_window end_window;
- /*Number of valid bits in end_window.*/
- int nend_bits;
- /*The total number of whole bits read/written.
- This does not include partial bits currently in the range coder.*/
- int nbits_total;
- /*The offset at which the next range coder byte will be read/written.*/
- opus_uint32 offs;
- /*The number of values in the current range.*/
- opus_uint32 rng;
- /*In the decoder: the difference between the top of the current range and
- the input value, minus one.
- In the encoder: the low end of the current range.*/
- opus_uint32 val;
- /*In the decoder: the saved normalization factor from ec_decode().
- In the encoder: the number of oustanding carry propagating symbols.*/
- opus_uint32 ext;
- /*A buffered input/output symbol, awaiting carry propagation.*/
- int rem;
- /*Nonzero if an error occurred.*/
- int error;
-};
-
-static OPUS_INLINE opus_uint32 ec_range_bytes(ec_ctx *_this){
- return _this->offs;
-}
-
-static OPUS_INLINE unsigned char *ec_get_buffer(ec_ctx *_this){
- return _this->buf;
-}
-
-static OPUS_INLINE int ec_get_error(ec_ctx *_this){
- return _this->error;
-}
-
-/*Returns the number of bits "used" by the encoded or decoded symbols so far.
- This same number can be computed in either the encoder or the decoder, and is
- suitable for making coding decisions.
- Return: The number of bits.
- This will always be slightly larger than the exact value (e.g., all
- rounding error is in the positive direction).*/
-static OPUS_INLINE int ec_tell(ec_ctx *_this){
- return _this->nbits_total-EC_ILOG(_this->rng);
-}
-
-/*Returns the number of bits "used" by the encoded or decoded symbols so far.
- This same number can be computed in either the encoder or the decoder, and is
- suitable for making coding decisions.
- Return: The number of bits scaled by 2**BITRES.
- This will always be slightly larger than the exact value (e.g., all
- rounding error is in the positive direction).*/
-opus_uint32 ec_tell_frac(ec_ctx *_this);
-
-/* Tested exhaustively for all n and for 1<=d<=256 */
-static OPUS_INLINE opus_uint32 celt_udiv(opus_uint32 n, opus_uint32 d) {
- celt_assert(d>0);
-#ifdef USE_SMALL_DIV_TABLE
- if (d>256)
- return n/d;
- else {
- opus_uint32 t, q;
- t = EC_ILOG(d&-d);
- q = (opus_uint64)SMALL_DIV_TABLE[d>>t]*(n>>(t-1))>>32;
- return q+(n-q*d >= d);
- }
-#else
- return n/d;
-#endif
-}
-
-static OPUS_INLINE opus_int32 celt_sudiv(opus_int32 n, opus_int32 d) {
- celt_assert(d>0);
-#ifdef USE_SMALL_DIV_TABLE
- if (n<0)
- return -(opus_int32)celt_udiv(-n, d);
- else
- return celt_udiv(n, d);
-#else
- return n/d;
-#endif
-}
-
-#endif
diff --git a/thirdparty/opus/celt/entdec.c b/thirdparty/opus/celt/entdec.c
deleted file mode 100644
index 0b3433ed8b..0000000000
--- a/thirdparty/opus/celt/entdec.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/* Copyright (c) 2001-2011 Timothy B. Terriberry
- Copyright (c) 2008-2009 Xiph.Org Foundation */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stddef.h>
-#include "os_support.h"
-#include "arch.h"
-#include "entdec.h"
-#include "mfrngcod.h"
-
-/*A range decoder.
- This is an entropy decoder based upon \cite{Mar79}, which is itself a
- rediscovery of the FIFO arithmetic code introduced by \cite{Pas76}.
- It is very similar to arithmetic encoding, except that encoding is done with
- digits in any base, instead of with bits, and so it is faster when using
- larger bases (i.e.: a byte).
- The author claims an average waste of $\frac{1}{2}\log_b(2b)$ bits, where $b$
- is the base, longer than the theoretical optimum, but to my knowledge there
- is no published justification for this claim.
- This only seems true when using near-infinite precision arithmetic so that
- the process is carried out with no rounding errors.
-
- An excellent description of implementation details is available at
- http://www.arturocampos.com/ac_range.html
- A recent work \cite{MNW98} which proposes several changes to arithmetic
- encoding for efficiency actually re-discovers many of the principles
- behind range encoding, and presents a good theoretical analysis of them.
-
- End of stream is handled by writing out the smallest number of bits that
- ensures that the stream will be correctly decoded regardless of the value of
- any subsequent bits.
- ec_tell() can be used to determine how many bits were needed to decode
- all the symbols thus far; other data can be packed in the remaining bits of
- the input buffer.
- @PHDTHESIS{Pas76,
- author="Richard Clark Pasco",
- title="Source coding algorithms for fast data compression",
- school="Dept. of Electrical Engineering, Stanford University",
- address="Stanford, CA",
- month=May,
- year=1976
- }
- @INPROCEEDINGS{Mar79,
- author="Martin, G.N.N.",
- title="Range encoding: an algorithm for removing redundancy from a digitised
- message",
- booktitle="Video & Data Recording Conference",
- year=1979,
- address="Southampton",
- month=Jul
- }
- @ARTICLE{MNW98,
- author="Alistair Moffat and Radford Neal and Ian H. Witten",
- title="Arithmetic Coding Revisited",
- journal="{ACM} Transactions on Information Systems",
- year=1998,
- volume=16,
- number=3,
- pages="256--294",
- month=Jul,
- URL="http://www.stanford.edu/class/ee398a/handouts/papers/Moffat98ArithmCoding.pdf"
- }*/
-
-static int ec_read_byte(ec_dec *_this){
- return _this->offs<_this->storage?_this->buf[_this->offs++]:0;
-}
-
-static int ec_read_byte_from_end(ec_dec *_this){
- return _this->end_offs<_this->storage?
- _this->buf[_this->storage-++(_this->end_offs)]:0;
-}
-
-/*Normalizes the contents of val and rng so that rng lies entirely in the
- high-order symbol.*/
-static void ec_dec_normalize(ec_dec *_this){
- /*If the range is too small, rescale it and input some bits.*/
- while(_this->rng<=EC_CODE_BOT){
- int sym;
- _this->nbits_total+=EC_SYM_BITS;
- _this->rng<<=EC_SYM_BITS;
- /*Use up the remaining bits from our last symbol.*/
- sym=_this->rem;
- /*Read the next value from the input.*/
- _this->rem=ec_read_byte(_this);
- /*Take the rest of the bits we need from this new symbol.*/
- sym=(sym<<EC_SYM_BITS|_this->rem)>>(EC_SYM_BITS-EC_CODE_EXTRA);
- /*And subtract them from val, capped to be less than EC_CODE_TOP.*/
- _this->val=((_this->val<<EC_SYM_BITS)+(EC_SYM_MAX&~sym))&(EC_CODE_TOP-1);
- }
-}
-
-void ec_dec_init(ec_dec *_this,unsigned char *_buf,opus_uint32 _storage){
- _this->buf=_buf;
- _this->storage=_storage;
- _this->end_offs=0;
- _this->end_window=0;
- _this->nend_bits=0;
- /*This is the offset from which ec_tell() will subtract partial bits.
- The final value after the ec_dec_normalize() call will be the same as in
- the encoder, but we have to compensate for the bits that are added there.*/
- _this->nbits_total=EC_CODE_BITS+1
- -((EC_CODE_BITS-EC_CODE_EXTRA)/EC_SYM_BITS)*EC_SYM_BITS;
- _this->offs=0;
- _this->rng=1U<<EC_CODE_EXTRA;
- _this->rem=ec_read_byte(_this);
- _this->val=_this->rng-1-(_this->rem>>(EC_SYM_BITS-EC_CODE_EXTRA));
- _this->error=0;
- /*Normalize the interval.*/
- ec_dec_normalize(_this);
-}
-
-unsigned ec_decode(ec_dec *_this,unsigned _ft){
- unsigned s;
- _this->ext=celt_udiv(_this->rng,_ft);
- s=(unsigned)(_this->val/_this->ext);
- return _ft-EC_MINI(s+1,_ft);
-}
-
-unsigned ec_decode_bin(ec_dec *_this,unsigned _bits){
- unsigned s;
- _this->ext=_this->rng>>_bits;
- s=(unsigned)(_this->val/_this->ext);
- return (1U<<_bits)-EC_MINI(s+1U,1U<<_bits);
-}
-
-void ec_dec_update(ec_dec *_this,unsigned _fl,unsigned _fh,unsigned _ft){
- opus_uint32 s;
- s=IMUL32(_this->ext,_ft-_fh);
- _this->val-=s;
- _this->rng=_fl>0?IMUL32(_this->ext,_fh-_fl):_this->rng-s;
- ec_dec_normalize(_this);
-}
-
-/*The probability of having a "one" is 1/(1<<_logp).*/
-int ec_dec_bit_logp(ec_dec *_this,unsigned _logp){
- opus_uint32 r;
- opus_uint32 d;
- opus_uint32 s;
- int ret;
- r=_this->rng;
- d=_this->val;
- s=r>>_logp;
- ret=d<s;
- if(!ret)_this->val=d-s;
- _this->rng=ret?s:r-s;
- ec_dec_normalize(_this);
- return ret;
-}
-
-int ec_dec_icdf(ec_dec *_this,const unsigned char *_icdf,unsigned _ftb){
- opus_uint32 r;
- opus_uint32 d;
- opus_uint32 s;
- opus_uint32 t;
- int ret;
- s=_this->rng;
- d=_this->val;
- r=s>>_ftb;
- ret=-1;
- do{
- t=s;
- s=IMUL32(r,_icdf[++ret]);
- }
- while(d<s);
- _this->val=d-s;
- _this->rng=t-s;
- ec_dec_normalize(_this);
- return ret;
-}
-
-opus_uint32 ec_dec_uint(ec_dec *_this,opus_uint32 _ft){
- unsigned ft;
- unsigned s;
- int ftb;
- /*In order to optimize EC_ILOG(), it is undefined for the value 0.*/
- celt_assert(_ft>1);
- _ft--;
- ftb=EC_ILOG(_ft);
- if(ftb>EC_UINT_BITS){
- opus_uint32 t;
- ftb-=EC_UINT_BITS;
- ft=(unsigned)(_ft>>ftb)+1;
- s=ec_decode(_this,ft);
- ec_dec_update(_this,s,s+1,ft);
- t=(opus_uint32)s<<ftb|ec_dec_bits(_this,ftb);
- if(t<=_ft)return t;
- _this->error=1;
- return _ft;
- }
- else{
- _ft++;
- s=ec_decode(_this,(unsigned)_ft);
- ec_dec_update(_this,s,s+1,(unsigned)_ft);
- return s;
- }
-}
-
-opus_uint32 ec_dec_bits(ec_dec *_this,unsigned _bits){
- ec_window window;
- int available;
- opus_uint32 ret;
- window=_this->end_window;
- available=_this->nend_bits;
- if((unsigned)available<_bits){
- do{
- window|=(ec_window)ec_read_byte_from_end(_this)<<available;
- available+=EC_SYM_BITS;
- }
- while(available<=EC_WINDOW_SIZE-EC_SYM_BITS);
- }
- ret=(opus_uint32)window&(((opus_uint32)1<<_bits)-1U);
- window>>=_bits;
- available-=_bits;
- _this->end_window=window;
- _this->nend_bits=available;
- _this->nbits_total+=_bits;
- return ret;
-}
diff --git a/thirdparty/opus/celt/entdec.h b/thirdparty/opus/celt/entdec.h
deleted file mode 100644
index d8ab318730..0000000000
--- a/thirdparty/opus/celt/entdec.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright (c) 2001-2011 Timothy B. Terriberry
- Copyright (c) 2008-2009 Xiph.Org Foundation */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if !defined(_entdec_H)
-# define _entdec_H (1)
-# include <limits.h>
-# include "entcode.h"
-
-/*Initializes the decoder.
- _buf: The input buffer to use.
- Return: 0 on success, or a negative value on error.*/
-void ec_dec_init(ec_dec *_this,unsigned char *_buf,opus_uint32 _storage);
-
-/*Calculates the cumulative frequency for the next symbol.
- This can then be fed into the probability model to determine what that
- symbol is, and the additional frequency information required to advance to
- the next symbol.
- This function cannot be called more than once without a corresponding call to
- ec_dec_update(), or decoding will not proceed correctly.
- _ft: The total frequency of the symbols in the alphabet the next symbol was
- encoded with.
- Return: A cumulative frequency representing the encoded symbol.
- If the cumulative frequency of all the symbols before the one that
- was encoded was fl, and the cumulative frequency of all the symbols
- up to and including the one encoded is fh, then the returned value
- will fall in the range [fl,fh).*/
-unsigned ec_decode(ec_dec *_this,unsigned _ft);
-
-/*Equivalent to ec_decode() with _ft==1<<_bits.*/
-unsigned ec_decode_bin(ec_dec *_this,unsigned _bits);
-
-/*Advance the decoder past the next symbol using the frequency information the
- symbol was encoded with.
- Exactly one call to ec_decode() must have been made so that all necessary
- intermediate calculations are performed.
- _fl: The cumulative frequency of all symbols that come before the symbol
- decoded.
- _fh: The cumulative frequency of all symbols up to and including the symbol
- decoded.
- Together with _fl, this defines the range [_fl,_fh) in which the value
- returned above must fall.
- _ft: The total frequency of the symbols in the alphabet the symbol decoded
- was encoded in.
- This must be the same as passed to the preceding call to ec_decode().*/
-void ec_dec_update(ec_dec *_this,unsigned _fl,unsigned _fh,unsigned _ft);
-
-/* Decode a bit that has a 1/(1<<_logp) probability of being a one */
-int ec_dec_bit_logp(ec_dec *_this,unsigned _logp);
-
-/*Decodes a symbol given an "inverse" CDF table.
- No call to ec_dec_update() is necessary after this call.
- _icdf: The "inverse" CDF, such that symbol s falls in the range
- [s>0?ft-_icdf[s-1]:0,ft-_icdf[s]), where ft=1<<_ftb.
- The values must be monotonically non-increasing, and the last value
- must be 0.
- _ftb: The number of bits of precision in the cumulative distribution.
- Return: The decoded symbol s.*/
-int ec_dec_icdf(ec_dec *_this,const unsigned char *_icdf,unsigned _ftb);
-
-/*Extracts a raw unsigned integer with a non-power-of-2 range from the stream.
- The bits must have been encoded with ec_enc_uint().
- No call to ec_dec_update() is necessary after this call.
- _ft: The number of integers that can be decoded (one more than the max).
- This must be at least one, and no more than 2**32-1.
- Return: The decoded bits.*/
-opus_uint32 ec_dec_uint(ec_dec *_this,opus_uint32 _ft);
-
-/*Extracts a sequence of raw bits from the stream.
- The bits must have been encoded with ec_enc_bits().
- No call to ec_dec_update() is necessary after this call.
- _ftb: The number of bits to extract.
- This must be between 0 and 25, inclusive.
- Return: The decoded bits.*/
-opus_uint32 ec_dec_bits(ec_dec *_this,unsigned _ftb);
-
-#endif
diff --git a/thirdparty/opus/celt/entenc.c b/thirdparty/opus/celt/entenc.c
deleted file mode 100644
index f1750d25b8..0000000000
--- a/thirdparty/opus/celt/entenc.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/* Copyright (c) 2001-2011 Timothy B. Terriberry
- Copyright (c) 2008-2009 Xiph.Org Foundation */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if defined(HAVE_CONFIG_H)
-# include "config.h"
-#endif
-#include "os_support.h"
-#include "arch.h"
-#include "entenc.h"
-#include "mfrngcod.h"
-
-/*A range encoder.
- See entdec.c and the references for implementation details \cite{Mar79,MNW98}.
-
- @INPROCEEDINGS{Mar79,
- author="Martin, G.N.N.",
- title="Range encoding: an algorithm for removing redundancy from a digitised
- message",
- booktitle="Video \& Data Recording Conference",
- year=1979,
- address="Southampton",
- month=Jul
- }
- @ARTICLE{MNW98,
- author="Alistair Moffat and Radford Neal and Ian H. Witten",
- title="Arithmetic Coding Revisited",
- journal="{ACM} Transactions on Information Systems",
- year=1998,
- volume=16,
- number=3,
- pages="256--294",
- month=Jul,
- URL="http://www.stanford.edu/class/ee398/handouts/papers/Moffat98ArithmCoding.pdf"
- }*/
-
-static int ec_write_byte(ec_enc *_this,unsigned _value){
- if(_this->offs+_this->end_offs>=_this->storage)return -1;
- _this->buf[_this->offs++]=(unsigned char)_value;
- return 0;
-}
-
-static int ec_write_byte_at_end(ec_enc *_this,unsigned _value){
- if(_this->offs+_this->end_offs>=_this->storage)return -1;
- _this->buf[_this->storage-++(_this->end_offs)]=(unsigned char)_value;
- return 0;
-}
-
-/*Outputs a symbol, with a carry bit.
- If there is a potential to propagate a carry over several symbols, they are
- buffered until it can be determined whether or not an actual carry will
- occur.
- If the counter for the buffered symbols overflows, then the stream becomes
- undecodable.
- This gives a theoretical limit of a few billion symbols in a single packet on
- 32-bit systems.
- The alternative is to truncate the range in order to force a carry, but
- requires similar carry tracking in the decoder, needlessly slowing it down.*/
-static void ec_enc_carry_out(ec_enc *_this,int _c){
- if(_c!=EC_SYM_MAX){
- /*No further carry propagation possible, flush buffer.*/
- int carry;
- carry=_c>>EC_SYM_BITS;
- /*Don't output a byte on the first write.
- This compare should be taken care of by branch-prediction thereafter.*/
- if(_this->rem>=0)_this->error|=ec_write_byte(_this,_this->rem+carry);
- if(_this->ext>0){
- unsigned sym;
- sym=(EC_SYM_MAX+carry)&EC_SYM_MAX;
- do _this->error|=ec_write_byte(_this,sym);
- while(--(_this->ext)>0);
- }
- _this->rem=_c&EC_SYM_MAX;
- }
- else _this->ext++;
-}
-
-static OPUS_INLINE void ec_enc_normalize(ec_enc *_this){
- /*If the range is too small, output some bits and rescale it.*/
- while(_this->rng<=EC_CODE_BOT){
- ec_enc_carry_out(_this,(int)(_this->val>>EC_CODE_SHIFT));
- /*Move the next-to-high-order symbol into the high-order position.*/
- _this->val=(_this->val<<EC_SYM_BITS)&(EC_CODE_TOP-1);
- _this->rng<<=EC_SYM_BITS;
- _this->nbits_total+=EC_SYM_BITS;
- }
-}
-
-void ec_enc_init(ec_enc *_this,unsigned char *_buf,opus_uint32 _size){
- _this->buf=_buf;
- _this->end_offs=0;
- _this->end_window=0;
- _this->nend_bits=0;
- /*This is the offset from which ec_tell() will subtract partial bits.*/
- _this->nbits_total=EC_CODE_BITS+1;
- _this->offs=0;
- _this->rng=EC_CODE_TOP;
- _this->rem=-1;
- _this->val=0;
- _this->ext=0;
- _this->storage=_size;
- _this->error=0;
-}
-
-void ec_encode(ec_enc *_this,unsigned _fl,unsigned _fh,unsigned _ft){
- opus_uint32 r;
- r=celt_udiv(_this->rng,_ft);
- if(_fl>0){
- _this->val+=_this->rng-IMUL32(r,(_ft-_fl));
- _this->rng=IMUL32(r,(_fh-_fl));
- }
- else _this->rng-=IMUL32(r,(_ft-_fh));
- ec_enc_normalize(_this);
-}
-
-void ec_encode_bin(ec_enc *_this,unsigned _fl,unsigned _fh,unsigned _bits){
- opus_uint32 r;
- r=_this->rng>>_bits;
- if(_fl>0){
- _this->val+=_this->rng-IMUL32(r,((1U<<_bits)-_fl));
- _this->rng=IMUL32(r,(_fh-_fl));
- }
- else _this->rng-=IMUL32(r,((1U<<_bits)-_fh));
- ec_enc_normalize(_this);
-}
-
-/*The probability of having a "one" is 1/(1<<_logp).*/
-void ec_enc_bit_logp(ec_enc *_this,int _val,unsigned _logp){
- opus_uint32 r;
- opus_uint32 s;
- opus_uint32 l;
- r=_this->rng;
- l=_this->val;
- s=r>>_logp;
- r-=s;
- if(_val)_this->val=l+r;
- _this->rng=_val?s:r;
- ec_enc_normalize(_this);
-}
-
-void ec_enc_icdf(ec_enc *_this,int _s,const unsigned char *_icdf,unsigned _ftb){
- opus_uint32 r;
- r=_this->rng>>_ftb;
- if(_s>0){
- _this->val+=_this->rng-IMUL32(r,_icdf[_s-1]);
- _this->rng=IMUL32(r,_icdf[_s-1]-_icdf[_s]);
- }
- else _this->rng-=IMUL32(r,_icdf[_s]);
- ec_enc_normalize(_this);
-}
-
-void ec_enc_uint(ec_enc *_this,opus_uint32 _fl,opus_uint32 _ft){
- unsigned ft;
- unsigned fl;
- int ftb;
- /*In order to optimize EC_ILOG(), it is undefined for the value 0.*/
- celt_assert(_ft>1);
- _ft--;
- ftb=EC_ILOG(_ft);
- if(ftb>EC_UINT_BITS){
- ftb-=EC_UINT_BITS;
- ft=(_ft>>ftb)+1;
- fl=(unsigned)(_fl>>ftb);
- ec_encode(_this,fl,fl+1,ft);
- ec_enc_bits(_this,_fl&(((opus_uint32)1<<ftb)-1U),ftb);
- }
- else ec_encode(_this,_fl,_fl+1,_ft+1);
-}
-
-void ec_enc_bits(ec_enc *_this,opus_uint32 _fl,unsigned _bits){
- ec_window window;
- int used;
- window=_this->end_window;
- used=_this->nend_bits;
- celt_assert(_bits>0);
- if(used+_bits>EC_WINDOW_SIZE){
- do{
- _this->error|=ec_write_byte_at_end(_this,(unsigned)window&EC_SYM_MAX);
- window>>=EC_SYM_BITS;
- used-=EC_SYM_BITS;
- }
- while(used>=EC_SYM_BITS);
- }
- window|=(ec_window)_fl<<used;
- used+=_bits;
- _this->end_window=window;
- _this->nend_bits=used;
- _this->nbits_total+=_bits;
-}
-
-void ec_enc_patch_initial_bits(ec_enc *_this,unsigned _val,unsigned _nbits){
- int shift;
- unsigned mask;
- celt_assert(_nbits<=EC_SYM_BITS);
- shift=EC_SYM_BITS-_nbits;
- mask=((1<<_nbits)-1)<<shift;
- if(_this->offs>0){
- /*The first byte has been finalized.*/
- _this->buf[0]=(unsigned char)((_this->buf[0]&~mask)|_val<<shift);
- }
- else if(_this->rem>=0){
- /*The first byte is still awaiting carry propagation.*/
- _this->rem=(_this->rem&~mask)|_val<<shift;
- }
- else if(_this->rng<=(EC_CODE_TOP>>_nbits)){
- /*The renormalization loop has never been run.*/
- _this->val=(_this->val&~((opus_uint32)mask<<EC_CODE_SHIFT))|
- (opus_uint32)_val<<(EC_CODE_SHIFT+shift);
- }
- /*The encoder hasn't even encoded _nbits of data yet.*/
- else _this->error=-1;
-}
-
-void ec_enc_shrink(ec_enc *_this,opus_uint32 _size){
- celt_assert(_this->offs+_this->end_offs<=_size);
- OPUS_MOVE(_this->buf+_size-_this->end_offs,
- _this->buf+_this->storage-_this->end_offs,_this->end_offs);
- _this->storage=_size;
-}
-
-void ec_enc_done(ec_enc *_this){
- ec_window window;
- int used;
- opus_uint32 msk;
- opus_uint32 end;
- int l;
- /*We output the minimum number of bits that ensures that the symbols encoded
- thus far will be decoded correctly regardless of the bits that follow.*/
- l=EC_CODE_BITS-EC_ILOG(_this->rng);
- msk=(EC_CODE_TOP-1)>>l;
- end=(_this->val+msk)&~msk;
- if((end|msk)>=_this->val+_this->rng){
- l++;
- msk>>=1;
- end=(_this->val+msk)&~msk;
- }
- while(l>0){
- ec_enc_carry_out(_this,(int)(end>>EC_CODE_SHIFT));
- end=(end<<EC_SYM_BITS)&(EC_CODE_TOP-1);
- l-=EC_SYM_BITS;
- }
- /*If we have a buffered byte flush it into the output buffer.*/
- if(_this->rem>=0||_this->ext>0)ec_enc_carry_out(_this,0);
- /*If we have buffered extra bits, flush them as well.*/
- window=_this->end_window;
- used=_this->nend_bits;
- while(used>=EC_SYM_BITS){
- _this->error|=ec_write_byte_at_end(_this,(unsigned)window&EC_SYM_MAX);
- window>>=EC_SYM_BITS;
- used-=EC_SYM_BITS;
- }
- /*Clear any excess space and add any remaining extra bits to the last byte.*/
- if(!_this->error){
- OPUS_CLEAR(_this->buf+_this->offs,
- _this->storage-_this->offs-_this->end_offs);
- if(used>0){
- /*If there's no range coder data at all, give up.*/
- if(_this->end_offs>=_this->storage)_this->error=-1;
- else{
- l=-l;
- /*If we've busted, don't add too many extra bits to the last byte; it
- would corrupt the range coder data, and that's more important.*/
- if(_this->offs+_this->end_offs>=_this->storage&&l<used){
- window&=(1<<l)-1;
- _this->error=-1;
- }
- _this->buf[_this->storage-_this->end_offs-1]|=(unsigned char)window;
- }
- }
- }
-}
diff --git a/thirdparty/opus/celt/entenc.h b/thirdparty/opus/celt/entenc.h
deleted file mode 100644
index 796bc4d572..0000000000
--- a/thirdparty/opus/celt/entenc.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Copyright (c) 2001-2011 Timothy B. Terriberry
- Copyright (c) 2008-2009 Xiph.Org Foundation */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if !defined(_entenc_H)
-# define _entenc_H (1)
-# include <stddef.h>
-# include "entcode.h"
-
-/*Initializes the encoder.
- _buf: The buffer to store output bytes in.
- _size: The size of the buffer, in chars.*/
-void ec_enc_init(ec_enc *_this,unsigned char *_buf,opus_uint32 _size);
-/*Encodes a symbol given its frequency information.
- The frequency information must be discernable by the decoder, assuming it
- has read only the previous symbols from the stream.
- It is allowable to change the frequency information, or even the entire
- source alphabet, so long as the decoder can tell from the context of the
- previously encoded information that it is supposed to do so as well.
- _fl: The cumulative frequency of all symbols that come before the one to be
- encoded.
- _fh: The cumulative frequency of all symbols up to and including the one to
- be encoded.
- Together with _fl, this defines the range [_fl,_fh) in which the
- decoded value will fall.
- _ft: The sum of the frequencies of all the symbols*/
-void ec_encode(ec_enc *_this,unsigned _fl,unsigned _fh,unsigned _ft);
-
-/*Equivalent to ec_encode() with _ft==1<<_bits.*/
-void ec_encode_bin(ec_enc *_this,unsigned _fl,unsigned _fh,unsigned _bits);
-
-/* Encode a bit that has a 1/(1<<_logp) probability of being a one */
-void ec_enc_bit_logp(ec_enc *_this,int _val,unsigned _logp);
-
-/*Encodes a symbol given an "inverse" CDF table.
- _s: The index of the symbol to encode.
- _icdf: The "inverse" CDF, such that symbol _s falls in the range
- [_s>0?ft-_icdf[_s-1]:0,ft-_icdf[_s]), where ft=1<<_ftb.
- The values must be monotonically non-increasing, and the last value
- must be 0.
- _ftb: The number of bits of precision in the cumulative distribution.*/
-void ec_enc_icdf(ec_enc *_this,int _s,const unsigned char *_icdf,unsigned _ftb);
-
-/*Encodes a raw unsigned integer in the stream.
- _fl: The integer to encode.
- _ft: The number of integers that can be encoded (one more than the max).
- This must be at least one, and no more than 2**32-1.*/
-void ec_enc_uint(ec_enc *_this,opus_uint32 _fl,opus_uint32 _ft);
-
-/*Encodes a sequence of raw bits in the stream.
- _fl: The bits to encode.
- _ftb: The number of bits to encode.
- This must be between 1 and 25, inclusive.*/
-void ec_enc_bits(ec_enc *_this,opus_uint32 _fl,unsigned _ftb);
-
-/*Overwrites a few bits at the very start of an existing stream, after they
- have already been encoded.
- This makes it possible to have a few flags up front, where it is easy for
- decoders to access them without parsing the whole stream, even if their
- values are not determined until late in the encoding process, without having
- to buffer all the intermediate symbols in the encoder.
- In order for this to work, at least _nbits bits must have already been
- encoded using probabilities that are an exact power of two.
- The encoder can verify the number of encoded bits is sufficient, but cannot
- check this latter condition.
- _val: The bits to encode (in the least _nbits significant bits).
- They will be decoded in order from most-significant to least.
- _nbits: The number of bits to overwrite.
- This must be no more than 8.*/
-void ec_enc_patch_initial_bits(ec_enc *_this,unsigned _val,unsigned _nbits);
-
-/*Compacts the data to fit in the target size.
- This moves up the raw bits at the end of the current buffer so they are at
- the end of the new buffer size.
- The caller must ensure that the amount of data that's already been written
- will fit in the new size.
- _size: The number of bytes in the new buffer.
- This must be large enough to contain the bits already written, and
- must be no larger than the existing size.*/
-void ec_enc_shrink(ec_enc *_this,opus_uint32 _size);
-
-/*Indicates that there are no more symbols to encode.
- All reamining output bytes are flushed to the output buffer.
- ec_enc_init() must be called before the encoder can be used again.*/
-void ec_enc_done(ec_enc *_this);
-
-#endif
diff --git a/thirdparty/opus/celt/fixed_debug.h b/thirdparty/opus/celt/fixed_debug.h
deleted file mode 100644
index d28227f5dc..0000000000
--- a/thirdparty/opus/celt/fixed_debug.h
+++ /dev/null
@@ -1,784 +0,0 @@
-/* Copyright (C) 2003-2008 Jean-Marc Valin
- Copyright (C) 2007-2012 Xiph.Org Foundation */
-/**
- @file fixed_debug.h
- @brief Fixed-point operations with debugging
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_DEBUG_H
-#define FIXED_DEBUG_H
-
-#include <stdio.h>
-#include "opus_defines.h"
-
-#ifdef CELT_C
-OPUS_EXPORT opus_int64 celt_mips=0;
-#else
-extern opus_int64 celt_mips;
-#endif
-
-#define MULT16_16SU(a,b) ((opus_val32)(opus_val16)(a)*(opus_val32)(opus_uint16)(b))
-#define MULT32_32_Q31(a,b) ADD32(ADD32(SHL32(MULT16_16(SHR32((a),16),SHR((b),16)),1), SHR32(MULT16_16SU(SHR32((a),16),((b)&0x0000ffff)),15)), SHR32(MULT16_16SU(SHR32((b),16),((a)&0x0000ffff)),15))
-
-/** 16x32 multiplication, followed by a 16-bit shift right. Results fits in 32 bits */
-#define MULT16_32_Q16(a,b) ADD32(MULT16_16((a),SHR32((b),16)), SHR32(MULT16_16SU((a),((b)&0x0000ffff)),16))
-
-#define MULT16_32_P16(a,b) MULT16_32_PX(a,b,16)
-
-#define QCONST16(x,bits) ((opus_val16)(.5+(x)*(((opus_val32)1)<<(bits))))
-#define QCONST32(x,bits) ((opus_val32)(.5+(x)*(((opus_val32)1)<<(bits))))
-
-#define VERIFY_SHORT(x) ((x)<=32767&&(x)>=-32768)
-#define VERIFY_INT(x) ((x)<=2147483647LL&&(x)>=-2147483648LL)
-#define VERIFY_UINT(x) ((x)<=(2147483647LLU<<1))
-
-#define SHR(a,b) SHR32(a,b)
-#define PSHR(a,b) PSHR32(a,b)
-
-static OPUS_INLINE short NEG16(int x)
-{
- int res;
- if (!VERIFY_SHORT(x))
- {
- fprintf (stderr, "NEG16: input is not short: %d\n", (int)x);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = -x;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "NEG16: output is not short: %d\n", (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips++;
- return res;
-}
-static OPUS_INLINE int NEG32(opus_int64 x)
-{
- opus_int64 res;
- if (!VERIFY_INT(x))
- {
- fprintf (stderr, "NEG16: input is not int: %d\n", (int)x);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = -x;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "NEG16: output is not int: %d\n", (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=2;
- return res;
-}
-
-#define EXTRACT16(x) EXTRACT16_(x, __FILE__, __LINE__)
-static OPUS_INLINE short EXTRACT16_(int x, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(x))
- {
- fprintf (stderr, "EXTRACT16: input is not short: %d in %s: line %d\n", x, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = x;
- celt_mips++;
- return res;
-}
-
-#define EXTEND32(x) EXTEND32_(x, __FILE__, __LINE__)
-static OPUS_INLINE int EXTEND32_(int x, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(x))
- {
- fprintf (stderr, "EXTEND32: input is not short: %d in %s: line %d\n", x, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = x;
- celt_mips++;
- return res;
-}
-
-#define SHR16(a, shift) SHR16_(a, shift, __FILE__, __LINE__)
-static OPUS_INLINE short SHR16_(int a, int shift, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(shift))
- {
- fprintf (stderr, "SHR16: inputs are not short: %d >> %d in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a>>shift;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "SHR16: output is not short: %d in %s: line %d\n", res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips++;
- return res;
-}
-#define SHL16(a, shift) SHL16_(a, shift, __FILE__, __LINE__)
-static OPUS_INLINE short SHL16_(int a, int shift, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(shift))
- {
- fprintf (stderr, "SHL16: inputs are not short: %d %d in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a<<shift;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "SHL16: output is not short: %d in %s: line %d\n", res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips++;
- return res;
-}
-
-static OPUS_INLINE int SHR32(opus_int64 a, int shift)
-{
- opus_int64 res;
- if (!VERIFY_INT(a) || !VERIFY_SHORT(shift))
- {
- fprintf (stderr, "SHR32: inputs are not int: %d %d\n", (int)a, shift);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a>>shift;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "SHR32: output is not int: %d\n", (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=2;
- return res;
-}
-#define SHL32(a, shift) SHL32_(a, shift, __FILE__, __LINE__)
-static OPUS_INLINE int SHL32_(opus_int64 a, int shift, char *file, int line)
-{
- opus_int64 res;
- if (!VERIFY_INT(a) || !VERIFY_SHORT(shift))
- {
- fprintf (stderr, "SHL32: inputs are not int: %lld %d in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a<<shift;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "SHL32: output is not int: %lld<<%d = %lld in %s: line %d\n", a, shift, res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=2;
- return res;
-}
-
-#define PSHR32(a,shift) (celt_mips--,SHR32(ADD32((a),(((opus_val32)(1)<<((shift))>>1))),shift))
-#define VSHR32(a, shift) (((shift)>0) ? SHR32(a, shift) : SHL32(a, -(shift)))
-
-#define ROUND16(x,a) (celt_mips--,EXTRACT16(PSHR32((x),(a))))
-#define HALF16(x) (SHR16(x,1))
-#define HALF32(x) (SHR32(x,1))
-
-//#define SHR(a,shift) ((a) >> (shift))
-//#define SHL(a,shift) ((a) << (shift))
-
-#define ADD16(a, b) ADD16_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE short ADD16_(int a, int b, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "ADD16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a+b;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "ADD16: output is not short: %d+%d=%d in %s: line %d\n", a,b,res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips++;
- return res;
-}
-
-#define SUB16(a, b) SUB16_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE short SUB16_(int a, int b, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "SUB16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a-b;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "SUB16: output is not short: %d in %s: line %d\n", res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips++;
- return res;
-}
-
-#define ADD32(a, b) ADD32_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE int ADD32_(opus_int64 a, opus_int64 b, char *file, int line)
-{
- opus_int64 res;
- if (!VERIFY_INT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "ADD32: inputs are not int: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a+b;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "ADD32: output is not int: %d in %s: line %d\n", (int)res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=2;
- return res;
-}
-
-#define SUB32(a, b) SUB32_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE int SUB32_(opus_int64 a, opus_int64 b, char *file, int line)
-{
- opus_int64 res;
- if (!VERIFY_INT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "SUB32: inputs are not int: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a-b;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "SUB32: output is not int: %d in %s: line %d\n", (int)res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=2;
- return res;
-}
-
-#undef UADD32
-#define UADD32(a, b) UADD32_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE unsigned int UADD32_(opus_uint64 a, opus_uint64 b, char *file, int line)
-{
- opus_uint64 res;
- if (!VERIFY_UINT(a) || !VERIFY_UINT(b))
- {
- fprintf (stderr, "UADD32: inputs are not uint32: %llu %llu in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a+b;
- if (!VERIFY_UINT(res))
- {
- fprintf (stderr, "UADD32: output is not uint32: %llu in %s: line %d\n", res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=2;
- return res;
-}
-
-#undef USUB32
-#define USUB32(a, b) USUB32_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE unsigned int USUB32_(opus_uint64 a, opus_uint64 b, char *file, int line)
-{
- opus_uint64 res;
- if (!VERIFY_UINT(a) || !VERIFY_UINT(b))
- {
- fprintf (stderr, "USUB32: inputs are not uint32: %llu %llu in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- if (a<b)
- {
- fprintf (stderr, "USUB32: inputs underflow: %llu < %llu in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a-b;
- if (!VERIFY_UINT(res))
- {
- fprintf (stderr, "USUB32: output is not uint32: %llu - %llu = %llu in %s: line %d\n", a, b, res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=2;
- return res;
-}
-
-/* result fits in 16 bits */
-static OPUS_INLINE short MULT16_16_16(int a, int b)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_16: inputs are not short: %d %d\n", a, b);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a*b;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "MULT16_16_16: output is not short: %d\n", res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips++;
- return res;
-}
-
-#define MULT16_16(a, b) MULT16_16_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE int MULT16_16_(int a, int b, char *file, int line)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((opus_int64)a)*b;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "MULT16_16: output is not int: %d in %s: line %d\n", (int)res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips++;
- return res;
-}
-
-#define MAC16_16(c,a,b) (celt_mips-=2,ADD32((c),MULT16_16((a),(b))))
-
-#define MULT16_32_QX(a, b, Q) MULT16_32_QX_(a, b, Q, __FILE__, __LINE__)
-static OPUS_INLINE int MULT16_32_QX_(int a, opus_int64 b, int Q, char *file, int line)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "MULT16_32_Q%d: inputs are not short+int: %d %d in %s: line %d\n", Q, (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- if (ABS32(b)>=((opus_val32)(1)<<(15+Q)))
- {
- fprintf (stderr, "MULT16_32_Q%d: second operand too large: %d %d in %s: line %d\n", Q, (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = (((opus_int64)a)*(opus_int64)b) >> Q;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "MULT16_32_Q%d: output is not int: %d*%d=%d in %s: line %d\n", Q, (int)a, (int)b,(int)res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- if (Q==15)
- celt_mips+=3;
- else
- celt_mips+=4;
- return res;
-}
-
-#define MULT16_32_PX(a, b, Q) MULT16_32_PX_(a, b, Q, __FILE__, __LINE__)
-static OPUS_INLINE int MULT16_32_PX_(int a, opus_int64 b, int Q, char *file, int line)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "MULT16_32_P%d: inputs are not short+int: %d %d in %s: line %d\n\n", Q, (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- if (ABS32(b)>=((opus_int64)(1)<<(15+Q)))
- {
- fprintf (stderr, "MULT16_32_Q%d: second operand too large: %d %d in %s: line %d\n\n", Q, (int)a, (int)b,file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((((opus_int64)a)*(opus_int64)b) + (((opus_val32)(1)<<Q)>>1))>> Q;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "MULT16_32_P%d: output is not int: %d*%d=%d in %s: line %d\n\n", Q, (int)a, (int)b,(int)res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- if (Q==15)
- celt_mips+=4;
- else
- celt_mips+=5;
- return res;
-}
-
-#define MULT16_32_Q15(a,b) MULT16_32_QX(a,b,15)
-#define MAC16_32_Q15(c,a,b) (celt_mips-=2,ADD32((c),MULT16_32_Q15((a),(b))))
-#define MAC16_32_Q16(c,a,b) (celt_mips-=2,ADD32((c),MULT16_32_Q16((a),(b))))
-
-static OPUS_INLINE int SATURATE(int a, int b)
-{
- if (a>b)
- a=b;
- if (a<-b)
- a = -b;
- celt_mips+=3;
- return a;
-}
-
-static OPUS_INLINE opus_int16 SATURATE16(opus_int32 a)
-{
- celt_mips+=3;
- if (a>32767)
- return 32767;
- else if (a<-32768)
- return -32768;
- else return a;
-}
-
-static OPUS_INLINE int MULT16_16_Q11_32(int a, int b)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_Q11: inputs are not short: %d %d\n", a, b);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((opus_int64)a)*b;
- res >>= 11;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "MULT16_16_Q11: output is not short: %d*%d=%d\n", (int)a, (int)b, (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=3;
- return res;
-}
-static OPUS_INLINE short MULT16_16_Q13(int a, int b)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_Q13: inputs are not short: %d %d\n", a, b);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((opus_int64)a)*b;
- res >>= 13;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "MULT16_16_Q13: output is not short: %d*%d=%d\n", a, b, (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=3;
- return res;
-}
-static OPUS_INLINE short MULT16_16_Q14(int a, int b)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_Q14: inputs are not short: %d %d\n", a, b);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((opus_int64)a)*b;
- res >>= 14;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "MULT16_16_Q14: output is not short: %d\n", (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=3;
- return res;
-}
-
-#define MULT16_16_Q15(a, b) MULT16_16_Q15_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE short MULT16_16_Q15_(int a, int b, char *file, int line)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_Q15: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((opus_int64)a)*b;
- res >>= 15;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "MULT16_16_Q15: output is not short: %d in %s: line %d\n", (int)res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=1;
- return res;
-}
-
-static OPUS_INLINE short MULT16_16_P13(int a, int b)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_P13: inputs are not short: %d %d\n", a, b);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((opus_int64)a)*b;
- res += 4096;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "MULT16_16_P13: overflow: %d*%d=%d\n", a, b, (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res >>= 13;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "MULT16_16_P13: output is not short: %d*%d=%d\n", a, b, (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=4;
- return res;
-}
-static OPUS_INLINE short MULT16_16_P14(int a, int b)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_P14: inputs are not short: %d %d\n", a, b);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((opus_int64)a)*b;
- res += 8192;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "MULT16_16_P14: overflow: %d*%d=%d\n", a, b, (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res >>= 14;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "MULT16_16_P14: output is not short: %d*%d=%d\n", a, b, (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=4;
- return res;
-}
-static OPUS_INLINE short MULT16_16_P15(int a, int b)
-{
- opus_int64 res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_P15: inputs are not short: %d %d\n", a, b);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = ((opus_int64)a)*b;
- res += 16384;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "MULT16_16_P15: overflow: %d*%d=%d\n", a, b, (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res >>= 15;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "MULT16_16_P15: output is not short: %d*%d=%d\n", a, b, (int)res);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=2;
- return res;
-}
-
-#define DIV32_16(a, b) DIV32_16_(a, b, __FILE__, __LINE__)
-
-static OPUS_INLINE int DIV32_16_(opus_int64 a, opus_int64 b, char *file, int line)
-{
- opus_int64 res;
- if (b==0)
- {
- fprintf(stderr, "DIV32_16: divide by zero: %d/%d in %s: line %d\n", (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- return 0;
- }
- if (!VERIFY_INT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "DIV32_16: inputs are not int/short: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a/b;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "DIV32_16: output is not short: %d / %d = %d in %s: line %d\n", (int)a,(int)b,(int)res, file, line);
- if (res>32767)
- res = 32767;
- if (res<-32768)
- res = -32768;
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=35;
- return res;
-}
-
-#define DIV32(a, b) DIV32_(a, b, __FILE__, __LINE__)
-static OPUS_INLINE int DIV32_(opus_int64 a, opus_int64 b, char *file, int line)
-{
- opus_int64 res;
- if (b==0)
- {
- fprintf(stderr, "DIV32: divide by zero: %d/%d in %s: line %d\n", (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- return 0;
- }
-
- if (!VERIFY_INT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "DIV32: inputs are not int/short: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- res = a/b;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "DIV32: output is not int: %d in %s: line %d\n", (int)res, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- celt_assert(0);
-#endif
- }
- celt_mips+=70;
- return res;
-}
-
-static OPUS_INLINE opus_val16 SIG2WORD16_generic(celt_sig x)
-{
- x = PSHR32(x, SIG_SHIFT);
- x = MAX32(x, -32768);
- x = MIN32(x, 32767);
- return EXTRACT16(x);
-}
-#define SIG2WORD16(x) (SIG2WORD16_generic(x))
-
-
-#undef PRINT_MIPS
-#define PRINT_MIPS(file) do {fprintf (file, "total complexity = %llu MIPS\n", celt_mips);} while (0);
-
-#endif
diff --git a/thirdparty/opus/celt/fixed_generic.h b/thirdparty/opus/celt/fixed_generic.h
deleted file mode 100644
index 1cfd6d6989..0000000000
--- a/thirdparty/opus/celt/fixed_generic.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/* Copyright (C) 2007-2009 Xiph.Org Foundation
- Copyright (C) 2003-2008 Jean-Marc Valin
- Copyright (C) 2007-2008 CSIRO */
-/**
- @file fixed_generic.h
- @brief Generic fixed-point operations
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_GENERIC_H
-#define FIXED_GENERIC_H
-
-/** Multiply a 16-bit signed value by a 16-bit unsigned value. The result is a 32-bit signed value */
-#define MULT16_16SU(a,b) ((opus_val32)(opus_val16)(a)*(opus_val32)(opus_uint16)(b))
-
-/** 16x32 multiplication, followed by a 16-bit shift right. Results fits in 32 bits */
-#if OPUS_FAST_INT64
-#define MULT16_32_Q16(a,b) ((opus_val32)SHR((opus_int64)((opus_val16)(a))*(b),16))
-#else
-#define MULT16_32_Q16(a,b) ADD32(MULT16_16((a),SHR((b),16)), SHR(MULT16_16SU((a),((b)&0x0000ffff)),16))
-#endif
-
-/** 16x32 multiplication, followed by a 16-bit shift right (round-to-nearest). Results fits in 32 bits */
-#if OPUS_FAST_INT64
-#define MULT16_32_P16(a,b) ((opus_val32)PSHR((opus_int64)((opus_val16)(a))*(b),16))
-#else
-#define MULT16_32_P16(a,b) ADD32(MULT16_16((a),SHR((b),16)), PSHR(MULT16_16SU((a),((b)&0x0000ffff)),16))
-#endif
-
-/** 16x32 multiplication, followed by a 15-bit shift right. Results fits in 32 bits */
-#if OPUS_FAST_INT64
-#define MULT16_32_Q15(a,b) ((opus_val32)SHR((opus_int64)((opus_val16)(a))*(b),15))
-#else
-#define MULT16_32_Q15(a,b) ADD32(SHL(MULT16_16((a),SHR((b),16)),1), SHR(MULT16_16SU((a),((b)&0x0000ffff)),15))
-#endif
-
-/** 32x32 multiplication, followed by a 31-bit shift right. Results fits in 32 bits */
-#if OPUS_FAST_INT64
-#define MULT32_32_Q31(a,b) ((opus_val32)SHR((opus_int64)(a)*(opus_int64)(b),31))
-#else
-#define MULT32_32_Q31(a,b) ADD32(ADD32(SHL(MULT16_16(SHR((a),16),SHR((b),16)),1), SHR(MULT16_16SU(SHR((a),16),((b)&0x0000ffff)),15)), SHR(MULT16_16SU(SHR((b),16),((a)&0x0000ffff)),15))
-#endif
-
-/** Compile-time conversion of float constant to 16-bit value */
-#define QCONST16(x,bits) ((opus_val16)(.5+(x)*(((opus_val32)1)<<(bits))))
-
-/** Compile-time conversion of float constant to 32-bit value */
-#define QCONST32(x,bits) ((opus_val32)(.5+(x)*(((opus_val32)1)<<(bits))))
-
-/** Negate a 16-bit value */
-#define NEG16(x) (-(x))
-/** Negate a 32-bit value */
-#define NEG32(x) (-(x))
-
-/** Change a 32-bit value into a 16-bit value. The value is assumed to fit in 16-bit, otherwise the result is undefined */
-#define EXTRACT16(x) ((opus_val16)(x))
-/** Change a 16-bit value into a 32-bit value */
-#define EXTEND32(x) ((opus_val32)(x))
-
-/** Arithmetic shift-right of a 16-bit value */
-#define SHR16(a,shift) ((a) >> (shift))
-/** Arithmetic shift-left of a 16-bit value */
-#define SHL16(a,shift) ((opus_int16)((opus_uint16)(a)<<(shift)))
-/** Arithmetic shift-right of a 32-bit value */
-#define SHR32(a,shift) ((a) >> (shift))
-/** Arithmetic shift-left of a 32-bit value */
-#define SHL32(a,shift) ((opus_int32)((opus_uint32)(a)<<(shift)))
-
-/** 32-bit arithmetic shift right with rounding-to-nearest instead of rounding down */
-#define PSHR32(a,shift) (SHR32((a)+((EXTEND32(1)<<((shift))>>1)),shift))
-/** 32-bit arithmetic shift right where the argument can be negative */
-#define VSHR32(a, shift) (((shift)>0) ? SHR32(a, shift) : SHL32(a, -(shift)))
-
-/** "RAW" macros, should not be used outside of this header file */
-#define SHR(a,shift) ((a) >> (shift))
-#define SHL(a,shift) SHL32(a,shift)
-#define PSHR(a,shift) (SHR((a)+((EXTEND32(1)<<((shift))>>1)),shift))
-#define SATURATE(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
-
-#define SATURATE16(x) (EXTRACT16((x)>32767 ? 32767 : (x)<-32768 ? -32768 : (x)))
-
-/** Shift by a and round-to-neareast 32-bit value. Result is a 16-bit value */
-#define ROUND16(x,a) (EXTRACT16(PSHR32((x),(a))))
-/** Divide by two */
-#define HALF16(x) (SHR16(x,1))
-#define HALF32(x) (SHR32(x,1))
-
-/** Add two 16-bit values */
-#define ADD16(a,b) ((opus_val16)((opus_val16)(a)+(opus_val16)(b)))
-/** Subtract two 16-bit values */
-#define SUB16(a,b) ((opus_val16)(a)-(opus_val16)(b))
-/** Add two 32-bit values */
-#define ADD32(a,b) ((opus_val32)(a)+(opus_val32)(b))
-/** Subtract two 32-bit values */
-#define SUB32(a,b) ((opus_val32)(a)-(opus_val32)(b))
-
-/** 16x16 multiplication where the result fits in 16 bits */
-#define MULT16_16_16(a,b) ((((opus_val16)(a))*((opus_val16)(b))))
-
-/* (opus_val32)(opus_val16) gives TI compiler a hint that it's 16x16->32 multiply */
-/** 16x16 multiplication where the result fits in 32 bits */
-#define MULT16_16(a,b) (((opus_val32)(opus_val16)(a))*((opus_val32)(opus_val16)(b)))
-
-/** 16x16 multiply-add where the result fits in 32 bits */
-#define MAC16_16(c,a,b) (ADD32((c),MULT16_16((a),(b))))
-/** 16x32 multiply, followed by a 15-bit shift right and 32-bit add.
- b must fit in 31 bits.
- Result fits in 32 bits. */
-#define MAC16_32_Q15(c,a,b) ADD32((c),ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)))
-
-/** 16x32 multiplication, followed by a 16-bit shift right and 32-bit add.
- Results fits in 32 bits */
-#define MAC16_32_Q16(c,a,b) ADD32((c),ADD32(MULT16_16((a),SHR((b),16)), SHR(MULT16_16SU((a),((b)&0x0000ffff)),16)))
-
-#define MULT16_16_Q11_32(a,b) (SHR(MULT16_16((a),(b)),11))
-#define MULT16_16_Q11(a,b) (SHR(MULT16_16((a),(b)),11))
-#define MULT16_16_Q13(a,b) (SHR(MULT16_16((a),(b)),13))
-#define MULT16_16_Q14(a,b) (SHR(MULT16_16((a),(b)),14))
-#define MULT16_16_Q15(a,b) (SHR(MULT16_16((a),(b)),15))
-
-#define MULT16_16_P13(a,b) (SHR(ADD32(4096,MULT16_16((a),(b))),13))
-#define MULT16_16_P14(a,b) (SHR(ADD32(8192,MULT16_16((a),(b))),14))
-#define MULT16_16_P15(a,b) (SHR(ADD32(16384,MULT16_16((a),(b))),15))
-
-/** Divide a 32-bit value by a 16-bit value. Result fits in 16 bits */
-#define DIV32_16(a,b) ((opus_val16)(((opus_val32)(a))/((opus_val16)(b))))
-
-/** Divide a 32-bit value by a 32-bit value. Result fits in 32 bits */
-#define DIV32(a,b) (((opus_val32)(a))/((opus_val32)(b)))
-
-#if defined(MIPSr1_ASM)
-#include "mips/fixed_generic_mipsr1.h"
-#endif
-
-static OPUS_INLINE opus_val16 SIG2WORD16_generic(celt_sig x)
-{
- x = PSHR32(x, SIG_SHIFT);
- x = MAX32(x, -32768);
- x = MIN32(x, 32767);
- return EXTRACT16(x);
-}
-#define SIG2WORD16(x) (SIG2WORD16_generic(x))
-
-#endif
diff --git a/thirdparty/opus/celt/float_cast.h b/thirdparty/opus/celt/float_cast.h
deleted file mode 100644
index ed5a39b543..0000000000
--- a/thirdparty/opus/celt/float_cast.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright (C) 2001 Erik de Castro Lopo <erikd AT mega-nerd DOT com> */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* Version 1.1 */
-
-#ifndef FLOAT_CAST_H
-#define FLOAT_CAST_H
-
-
-#include "arch.h"
-
-/*============================================================================
-** On Intel Pentium processors (especially PIII and probably P4), converting
-** from float to int is very slow. To meet the C specs, the code produced by
-** most C compilers targeting Pentium needs to change the FPU rounding mode
-** before the float to int conversion is performed.
-**
-** Changing the FPU rounding mode causes the FPU pipeline to be flushed. It
-** is this flushing of the pipeline which is so slow.
-**
-** Fortunately the ISO C99 specifications define the functions lrint, lrintf,
-** llrint and llrintf which fix this problem as a side effect.
-**
-** On Unix-like systems, the configure process should have detected the
-** presence of these functions. If they weren't found we have to replace them
-** here with a standard C cast.
-*/
-
-/*
-** The C99 prototypes for lrint and lrintf are as follows:
-**
-** long int lrintf (float x) ;
-** long int lrint (double x) ;
-*/
-
-/* The presence of the required functions are detected during the configure
-** process and the values HAVE_LRINT and HAVE_LRINTF are set accordingly in
-** the config.h file.
-*/
-
-#if (HAVE_LRINTF)
-
-/* These defines enable functionality introduced with the 1999 ISO C
-** standard. They must be defined before the inclusion of math.h to
-** engage them. If optimisation is enabled, these functions will be
-** inlined. With optimisation switched off, you have to link in the
-** maths library using -lm.
-*/
-
-#define _ISOC9X_SOURCE 1
-#define _ISOC99_SOURCE 1
-
-#define __USE_ISOC9X 1
-#define __USE_ISOC99 1
-
-#include <math.h>
-#define float2int(x) lrintf(x)
-
-#elif (defined(HAVE_LRINT))
-
-#define _ISOC9X_SOURCE 1
-#define _ISOC99_SOURCE 1
-
-#define __USE_ISOC9X 1
-#define __USE_ISOC99 1
-
-#include <math.h>
-#define float2int(x) lrint(x)
-
-#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && defined (_M_X64)
- #include <xmmintrin.h>
-
- __inline long int float2int(float value)
- {
- return _mm_cvtss_si32(_mm_load_ss(&value));
- }
-#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && defined (_M_IX86)
- #include <math.h>
-
- /* Win32 doesn't seem to have these functions.
- ** Therefore implement OPUS_INLINE versions of these functions here.
- */
-
- __inline long int
- float2int (float flt)
- { int intgr;
-
- _asm
- { fld flt
- fistp intgr
- } ;
-
- return intgr ;
- }
-
-#else
-
-#if (defined(__GNUC__) && defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L)
- /* supported by gcc in C99 mode, but not by all other compilers */
- #warning "Don't have the functions lrint() and lrintf ()."
- #warning "Replacing these functions with a standard C cast."
-#endif /* __STDC_VERSION__ >= 199901L */
- #include <math.h>
- #define float2int(flt) ((int)(floor(.5+flt)))
-#endif
-
-#ifndef DISABLE_FLOAT_API
-static OPUS_INLINE opus_int16 FLOAT2INT16(float x)
-{
- x = x*CELT_SIG_SCALE;
- x = MAX32(x, -32768);
- x = MIN32(x, 32767);
- return (opus_int16)float2int(x);
-}
-#endif /* DISABLE_FLOAT_API */
-
-#endif /* FLOAT_CAST_H */
diff --git a/thirdparty/opus/celt/kiss_fft.c b/thirdparty/opus/celt/kiss_fft.c
deleted file mode 100644
index 1f8fd05321..0000000000
--- a/thirdparty/opus/celt/kiss_fft.c
+++ /dev/null
@@ -1,604 +0,0 @@
-/*Copyright (c) 2003-2004, Mark Borgerding
- Lots of modifications by Jean-Marc Valin
- Copyright (c) 2005-2007, Xiph.Org Foundation
- Copyright (c) 2008, Xiph.Org Foundation, CSIRO
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.*/
-
-/* This code is originally from Mark Borgerding's KISS-FFT but has been
- heavily modified to better suit Opus */
-
-#ifndef SKIP_CONFIG_H
-# ifdef HAVE_CONFIG_H
-# include "config.h"
-# endif
-#endif
-
-#include "_kiss_fft_guts.h"
-#include "arch.h"
-#include "os_support.h"
-#include "mathops.h"
-#include "stack_alloc.h"
-
-/* The guts header contains all the multiplication and addition macros that are defined for
- complex numbers. It also delares the kf_ internal functions.
-*/
-
-static void kf_bfly2(
- kiss_fft_cpx * Fout,
- int m,
- int N
- )
-{
- kiss_fft_cpx * Fout2;
- int i;
- (void)m;
-#ifdef CUSTOM_MODES
- if (m==1)
- {
- celt_assert(m==1);
- for (i=0;i<N;i++)
- {
- kiss_fft_cpx t;
- Fout2 = Fout + 1;
- t = *Fout2;
- C_SUB( *Fout2 , *Fout , t );
- C_ADDTO( *Fout , t );
- Fout += 2;
- }
- } else
-#endif
- {
- opus_val16 tw;
- tw = QCONST16(0.7071067812f, 15);
- /* We know that m==4 here because the radix-2 is just after a radix-4 */
- celt_assert(m==4);
- for (i=0;i<N;i++)
- {
- kiss_fft_cpx t;
- Fout2 = Fout + 4;
- t = Fout2[0];
- C_SUB( Fout2[0] , Fout[0] , t );
- C_ADDTO( Fout[0] , t );
-
- t.r = S_MUL(Fout2[1].r+Fout2[1].i, tw);
- t.i = S_MUL(Fout2[1].i-Fout2[1].r, tw);
- C_SUB( Fout2[1] , Fout[1] , t );
- C_ADDTO( Fout[1] , t );
-
- t.r = Fout2[2].i;
- t.i = -Fout2[2].r;
- C_SUB( Fout2[2] , Fout[2] , t );
- C_ADDTO( Fout[2] , t );
-
- t.r = S_MUL(Fout2[3].i-Fout2[3].r, tw);
- t.i = S_MUL(-Fout2[3].i-Fout2[3].r, tw);
- C_SUB( Fout2[3] , Fout[3] , t );
- C_ADDTO( Fout[3] , t );
- Fout += 8;
- }
- }
-}
-
-static void kf_bfly4(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_state *st,
- int m,
- int N,
- int mm
- )
-{
- int i;
-
- if (m==1)
- {
- /* Degenerate case where all the twiddles are 1. */
- for (i=0;i<N;i++)
- {
- kiss_fft_cpx scratch0, scratch1;
-
- C_SUB( scratch0 , *Fout, Fout[2] );
- C_ADDTO(*Fout, Fout[2]);
- C_ADD( scratch1 , Fout[1] , Fout[3] );
- C_SUB( Fout[2], *Fout, scratch1 );
- C_ADDTO( *Fout , scratch1 );
- C_SUB( scratch1 , Fout[1] , Fout[3] );
-
- Fout[1].r = scratch0.r + scratch1.i;
- Fout[1].i = scratch0.i - scratch1.r;
- Fout[3].r = scratch0.r - scratch1.i;
- Fout[3].i = scratch0.i + scratch1.r;
- Fout+=4;
- }
- } else {
- int j;
- kiss_fft_cpx scratch[6];
- const kiss_twiddle_cpx *tw1,*tw2,*tw3;
- const int m2=2*m;
- const int m3=3*m;
- kiss_fft_cpx * Fout_beg = Fout;
- for (i=0;i<N;i++)
- {
- Fout = Fout_beg + i*mm;
- tw3 = tw2 = tw1 = st->twiddles;
- /* m is guaranteed to be a multiple of 4. */
- for (j=0;j<m;j++)
- {
- C_MUL(scratch[0],Fout[m] , *tw1 );
- C_MUL(scratch[1],Fout[m2] , *tw2 );
- C_MUL(scratch[2],Fout[m3] , *tw3 );
-
- C_SUB( scratch[5] , *Fout, scratch[1] );
- C_ADDTO(*Fout, scratch[1]);
- C_ADD( scratch[3] , scratch[0] , scratch[2] );
- C_SUB( scratch[4] , scratch[0] , scratch[2] );
- C_SUB( Fout[m2], *Fout, scratch[3] );
- tw1 += fstride;
- tw2 += fstride*2;
- tw3 += fstride*3;
- C_ADDTO( *Fout , scratch[3] );
-
- Fout[m].r = scratch[5].r + scratch[4].i;
- Fout[m].i = scratch[5].i - scratch[4].r;
- Fout[m3].r = scratch[5].r - scratch[4].i;
- Fout[m3].i = scratch[5].i + scratch[4].r;
- ++Fout;
- }
- }
- }
-}
-
-
-#ifndef RADIX_TWO_ONLY
-
-static void kf_bfly3(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_state *st,
- int m,
- int N,
- int mm
- )
-{
- int i;
- size_t k;
- const size_t m2 = 2*m;
- const kiss_twiddle_cpx *tw1,*tw2;
- kiss_fft_cpx scratch[5];
- kiss_twiddle_cpx epi3;
-
- kiss_fft_cpx * Fout_beg = Fout;
-#ifdef FIXED_POINT
- /*epi3.r = -16384;*/ /* Unused */
- epi3.i = -28378;
-#else
- epi3 = st->twiddles[fstride*m];
-#endif
- for (i=0;i<N;i++)
- {
- Fout = Fout_beg + i*mm;
- tw1=tw2=st->twiddles;
- /* For non-custom modes, m is guaranteed to be a multiple of 4. */
- k=m;
- do {
-
- C_MUL(scratch[1],Fout[m] , *tw1);
- C_MUL(scratch[2],Fout[m2] , *tw2);
-
- C_ADD(scratch[3],scratch[1],scratch[2]);
- C_SUB(scratch[0],scratch[1],scratch[2]);
- tw1 += fstride;
- tw2 += fstride*2;
-
- Fout[m].r = Fout->r - HALF_OF(scratch[3].r);
- Fout[m].i = Fout->i - HALF_OF(scratch[3].i);
-
- C_MULBYSCALAR( scratch[0] , epi3.i );
-
- C_ADDTO(*Fout,scratch[3]);
-
- Fout[m2].r = Fout[m].r + scratch[0].i;
- Fout[m2].i = Fout[m].i - scratch[0].r;
-
- Fout[m].r -= scratch[0].i;
- Fout[m].i += scratch[0].r;
-
- ++Fout;
- } while(--k);
- }
-}
-
-
-#ifndef OVERRIDE_kf_bfly5
-static void kf_bfly5(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_state *st,
- int m,
- int N,
- int mm
- )
-{
- kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4;
- int i, u;
- kiss_fft_cpx scratch[13];
- const kiss_twiddle_cpx *tw;
- kiss_twiddle_cpx ya,yb;
- kiss_fft_cpx * Fout_beg = Fout;
-
-#ifdef FIXED_POINT
- ya.r = 10126;
- ya.i = -31164;
- yb.r = -26510;
- yb.i = -19261;
-#else
- ya = st->twiddles[fstride*m];
- yb = st->twiddles[fstride*2*m];
-#endif
- tw=st->twiddles;
-
- for (i=0;i<N;i++)
- {
- Fout = Fout_beg + i*mm;
- Fout0=Fout;
- Fout1=Fout0+m;
- Fout2=Fout0+2*m;
- Fout3=Fout0+3*m;
- Fout4=Fout0+4*m;
-
- /* For non-custom modes, m is guaranteed to be a multiple of 4. */
- for ( u=0; u<m; ++u ) {
- scratch[0] = *Fout0;
-
- C_MUL(scratch[1] ,*Fout1, tw[u*fstride]);
- C_MUL(scratch[2] ,*Fout2, tw[2*u*fstride]);
- C_MUL(scratch[3] ,*Fout3, tw[3*u*fstride]);
- C_MUL(scratch[4] ,*Fout4, tw[4*u*fstride]);
-
- C_ADD( scratch[7],scratch[1],scratch[4]);
- C_SUB( scratch[10],scratch[1],scratch[4]);
- C_ADD( scratch[8],scratch[2],scratch[3]);
- C_SUB( scratch[9],scratch[2],scratch[3]);
-
- Fout0->r += scratch[7].r + scratch[8].r;
- Fout0->i += scratch[7].i + scratch[8].i;
-
- scratch[5].r = scratch[0].r + S_MUL(scratch[7].r,ya.r) + S_MUL(scratch[8].r,yb.r);
- scratch[5].i = scratch[0].i + S_MUL(scratch[7].i,ya.r) + S_MUL(scratch[8].i,yb.r);
-
- scratch[6].r = S_MUL(scratch[10].i,ya.i) + S_MUL(scratch[9].i,yb.i);
- scratch[6].i = -S_MUL(scratch[10].r,ya.i) - S_MUL(scratch[9].r,yb.i);
-
- C_SUB(*Fout1,scratch[5],scratch[6]);
- C_ADD(*Fout4,scratch[5],scratch[6]);
-
- scratch[11].r = scratch[0].r + S_MUL(scratch[7].r,yb.r) + S_MUL(scratch[8].r,ya.r);
- scratch[11].i = scratch[0].i + S_MUL(scratch[7].i,yb.r) + S_MUL(scratch[8].i,ya.r);
- scratch[12].r = - S_MUL(scratch[10].i,yb.i) + S_MUL(scratch[9].i,ya.i);
- scratch[12].i = S_MUL(scratch[10].r,yb.i) - S_MUL(scratch[9].r,ya.i);
-
- C_ADD(*Fout2,scratch[11],scratch[12]);
- C_SUB(*Fout3,scratch[11],scratch[12]);
-
- ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;
- }
- }
-}
-#endif /* OVERRIDE_kf_bfly5 */
-
-
-#endif
-
-
-#ifdef CUSTOM_MODES
-
-static
-void compute_bitrev_table(
- int Fout,
- opus_int16 *f,
- const size_t fstride,
- int in_stride,
- opus_int16 * factors,
- const kiss_fft_state *st
- )
-{
- const int p=*factors++; /* the radix */
- const int m=*factors++; /* stage's fft length/p */
-
- /*printf ("fft %d %d %d %d %d %d\n", p*m, m, p, s2, fstride*in_stride, N);*/
- if (m==1)
- {
- int j;
- for (j=0;j<p;j++)
- {
- *f = Fout+j;
- f += fstride*in_stride;
- }
- } else {
- int j;
- for (j=0;j<p;j++)
- {
- compute_bitrev_table( Fout , f, fstride*p, in_stride, factors,st);
- f += fstride*in_stride;
- Fout += m;
- }
- }
-}
-
-/* facbuf is populated by p1,m1,p2,m2, ...
- where
- p[i] * m[i] = m[i-1]
- m0 = n */
-static
-int kf_factor(int n,opus_int16 * facbuf)
-{
- int p=4;
- int i;
- int stages=0;
- int nbak = n;
-
- /*factor out powers of 4, powers of 2, then any remaining primes */
- do {
- while (n % p) {
- switch (p) {
- case 4: p = 2; break;
- case 2: p = 3; break;
- default: p += 2; break;
- }
- if (p>32000 || (opus_int32)p*(opus_int32)p > n)
- p = n; /* no more factors, skip to end */
- }
- n /= p;
-#ifdef RADIX_TWO_ONLY
- if (p!=2 && p != 4)
-#else
- if (p>5)
-#endif
- {
- return 0;
- }
- facbuf[2*stages] = p;
- if (p==2 && stages > 1)
- {
- facbuf[2*stages] = 4;
- facbuf[2] = 2;
- }
- stages++;
- } while (n > 1);
- n = nbak;
- /* Reverse the order to get the radix 4 at the end, so we can use the
- fast degenerate case. It turns out that reversing the order also
- improves the noise behaviour. */
- for (i=0;i<stages/2;i++)
- {
- int tmp;
- tmp = facbuf[2*i];
- facbuf[2*i] = facbuf[2*(stages-i-1)];
- facbuf[2*(stages-i-1)] = tmp;
- }
- for (i=0;i<stages;i++)
- {
- n /= facbuf[2*i];
- facbuf[2*i+1] = n;
- }
- return 1;
-}
-
-static void compute_twiddles(kiss_twiddle_cpx *twiddles, int nfft)
-{
- int i;
-#ifdef FIXED_POINT
- for (i=0;i<nfft;++i) {
- opus_val32 phase = -i;
- kf_cexp2(twiddles+i, DIV32(SHL32(phase,17),nfft));
- }
-#else
- for (i=0;i<nfft;++i) {
- const double pi=3.14159265358979323846264338327;
- double phase = ( -2*pi /nfft ) * i;
- kf_cexp(twiddles+i, phase );
- }
-#endif
-}
-
-int opus_fft_alloc_arch_c(kiss_fft_state *st) {
- (void)st;
- return 0;
-}
-
-/*
- *
- * Allocates all necessary storage space for the fft and ifft.
- * The return value is a contiguous block of memory. As such,
- * It can be freed with free().
- * */
-kiss_fft_state *opus_fft_alloc_twiddles(int nfft,void * mem,size_t * lenmem,
- const kiss_fft_state *base, int arch)
-{
- kiss_fft_state *st=NULL;
- size_t memneeded = sizeof(struct kiss_fft_state); /* twiddle factors*/
-
- if ( lenmem==NULL ) {
- st = ( kiss_fft_state*)KISS_FFT_MALLOC( memneeded );
- }else{
- if (mem != NULL && *lenmem >= memneeded)
- st = (kiss_fft_state*)mem;
- *lenmem = memneeded;
- }
- if (st) {
- opus_int16 *bitrev;
- kiss_twiddle_cpx *twiddles;
-
- st->nfft=nfft;
-#ifdef FIXED_POINT
- st->scale_shift = celt_ilog2(st->nfft);
- if (st->nfft == 1<<st->scale_shift)
- st->scale = Q15ONE;
- else
- st->scale = (1073741824+st->nfft/2)/st->nfft>>(15-st->scale_shift);
-#else
- st->scale = 1.f/nfft;
-#endif
- if (base != NULL)
- {
- st->twiddles = base->twiddles;
- st->shift = 0;
- while (st->shift < 32 && nfft<<st->shift != base->nfft)
- st->shift++;
- if (st->shift>=32)
- goto fail;
- } else {
- st->twiddles = twiddles = (kiss_twiddle_cpx*)KISS_FFT_MALLOC(sizeof(kiss_twiddle_cpx)*nfft);
- compute_twiddles(twiddles, nfft);
- st->shift = -1;
- }
- if (!kf_factor(nfft,st->factors))
- {
- goto fail;
- }
-
- /* bitrev */
- st->bitrev = bitrev = (opus_int16*)KISS_FFT_MALLOC(sizeof(opus_int16)*nfft);
- if (st->bitrev==NULL)
- goto fail;
- compute_bitrev_table(0, bitrev, 1,1, st->factors,st);
-
- /* Initialize architecture specific fft parameters */
- if (opus_fft_alloc_arch(st, arch))
- goto fail;
- }
- return st;
-fail:
- opus_fft_free(st, arch);
- return NULL;
-}
-
-kiss_fft_state *opus_fft_alloc(int nfft,void * mem,size_t * lenmem, int arch)
-{
- return opus_fft_alloc_twiddles(nfft, mem, lenmem, NULL, arch);
-}
-
-void opus_fft_free_arch_c(kiss_fft_state *st) {
- (void)st;
-}
-
-void opus_fft_free(const kiss_fft_state *cfg, int arch)
-{
- if (cfg)
- {
- opus_fft_free_arch((kiss_fft_state *)cfg, arch);
- opus_free((opus_int16*)cfg->bitrev);
- if (cfg->shift < 0)
- opus_free((kiss_twiddle_cpx*)cfg->twiddles);
- opus_free((kiss_fft_state*)cfg);
- }
-}
-
-#endif /* CUSTOM_MODES */
-
-void opus_fft_impl(const kiss_fft_state *st,kiss_fft_cpx *fout)
-{
- int m2, m;
- int p;
- int L;
- int fstride[MAXFACTORS];
- int i;
- int shift;
-
- /* st->shift can be -1 */
- shift = st->shift>0 ? st->shift : 0;
-
- fstride[0] = 1;
- L=0;
- do {
- p = st->factors[2*L];
- m = st->factors[2*L+1];
- fstride[L+1] = fstride[L]*p;
- L++;
- } while(m!=1);
- m = st->factors[2*L-1];
- for (i=L-1;i>=0;i--)
- {
- if (i!=0)
- m2 = st->factors[2*i-1];
- else
- m2 = 1;
- switch (st->factors[2*i])
- {
- case 2:
- kf_bfly2(fout, m, fstride[i]);
- break;
- case 4:
- kf_bfly4(fout,fstride[i]<<shift,st,m, fstride[i], m2);
- break;
- #ifndef RADIX_TWO_ONLY
- case 3:
- kf_bfly3(fout,fstride[i]<<shift,st,m, fstride[i], m2);
- break;
- case 5:
- kf_bfly5(fout,fstride[i]<<shift,st,m, fstride[i], m2);
- break;
- #endif
- }
- m = m2;
- }
-}
-
-void opus_fft_c(const kiss_fft_state *st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout)
-{
- int i;
- opus_val16 scale;
-#ifdef FIXED_POINT
- /* Allows us to scale with MULT16_32_Q16(), which is faster than
- MULT16_32_Q15() on ARM. */
- int scale_shift = st->scale_shift-1;
-#endif
- scale = st->scale;
-
- celt_assert2 (fin != fout, "In-place FFT not supported");
- /* Bit-reverse the input */
- for (i=0;i<st->nfft;i++)
- {
- kiss_fft_cpx x = fin[i];
- fout[st->bitrev[i]].r = SHR32(MULT16_32_Q16(scale, x.r), scale_shift);
- fout[st->bitrev[i]].i = SHR32(MULT16_32_Q16(scale, x.i), scale_shift);
- }
- opus_fft_impl(st, fout);
-}
-
-
-void opus_ifft_c(const kiss_fft_state *st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout)
-{
- int i;
- celt_assert2 (fin != fout, "In-place FFT not supported");
- /* Bit-reverse the input */
- for (i=0;i<st->nfft;i++)
- fout[st->bitrev[i]] = fin[i];
- for (i=0;i<st->nfft;i++)
- fout[i].i = -fout[i].i;
- opus_fft_impl(st, fout);
- for (i=0;i<st->nfft;i++)
- fout[i].i = -fout[i].i;
-}
diff --git a/thirdparty/opus/celt/kiss_fft.h b/thirdparty/opus/celt/kiss_fft.h
deleted file mode 100644
index bffa2bfad6..0000000000
--- a/thirdparty/opus/celt/kiss_fft.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/*Copyright (c) 2003-2004, Mark Borgerding
- Lots of modifications by Jean-Marc Valin
- Copyright (c) 2005-2007, Xiph.Org Foundation
- Copyright (c) 2008, Xiph.Org Foundation, CSIRO
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.*/
-
-#ifndef KISS_FFT_H
-#define KISS_FFT_H
-
-#include <stdlib.h>
-#include <math.h>
-#include "arch.h"
-#include "cpu_support.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef USE_SIMD
-# include <xmmintrin.h>
-# define kiss_fft_scalar __m128
-#define KISS_FFT_MALLOC(nbytes) memalign(16,nbytes)
-#else
-#define KISS_FFT_MALLOC opus_alloc
-#endif
-
-#ifdef FIXED_POINT
-#include "arch.h"
-
-# define kiss_fft_scalar opus_int32
-# define kiss_twiddle_scalar opus_int16
-
-
-#else
-# ifndef kiss_fft_scalar
-/* default is float */
-# define kiss_fft_scalar float
-# define kiss_twiddle_scalar float
-# define KF_SUFFIX _celt_single
-# endif
-#endif
-
-typedef struct {
- kiss_fft_scalar r;
- kiss_fft_scalar i;
-}kiss_fft_cpx;
-
-typedef struct {
- kiss_twiddle_scalar r;
- kiss_twiddle_scalar i;
-}kiss_twiddle_cpx;
-
-#define MAXFACTORS 8
-/* e.g. an fft of length 128 has 4 factors
- as far as kissfft is concerned
- 4*4*4*2
- */
-
-typedef struct arch_fft_state{
- int is_supported;
- void *priv;
-} arch_fft_state;
-
-typedef struct kiss_fft_state{
- int nfft;
- opus_val16 scale;
-#ifdef FIXED_POINT
- int scale_shift;
-#endif
- int shift;
- opus_int16 factors[2*MAXFACTORS];
- const opus_int16 *bitrev;
- const kiss_twiddle_cpx *twiddles;
- arch_fft_state *arch_fft;
-} kiss_fft_state;
-
-#if defined(HAVE_ARM_NE10)
-#include "arm/fft_arm.h"
-#endif
-
-/*typedef struct kiss_fft_state* kiss_fft_cfg;*/
-
-/**
- * opus_fft_alloc
- *
- * Initialize a FFT (or IFFT) algorithm's cfg/state buffer.
- *
- * typical usage: kiss_fft_cfg mycfg=opus_fft_alloc(1024,0,NULL,NULL);
- *
- * The return value from fft_alloc is a cfg buffer used internally
- * by the fft routine or NULL.
- *
- * If lenmem is NULL, then opus_fft_alloc will allocate a cfg buffer using malloc.
- * The returned value should be free()d when done to avoid memory leaks.
- *
- * The state can be placed in a user supplied buffer 'mem':
- * If lenmem is not NULL and mem is not NULL and *lenmem is large enough,
- * then the function places the cfg in mem and the size used in *lenmem
- * and returns mem.
- *
- * If lenmem is not NULL and ( mem is NULL or *lenmem is not large enough),
- * then the function returns NULL and places the minimum cfg
- * buffer size in *lenmem.
- * */
-
-kiss_fft_state *opus_fft_alloc_twiddles(int nfft,void * mem,size_t * lenmem, const kiss_fft_state *base, int arch);
-
-kiss_fft_state *opus_fft_alloc(int nfft,void * mem,size_t * lenmem, int arch);
-
-/**
- * opus_fft(cfg,in_out_buf)
- *
- * Perform an FFT on a complex input buffer.
- * for a forward FFT,
- * fin should be f[0] , f[1] , ... ,f[nfft-1]
- * fout will be F[0] , F[1] , ... ,F[nfft-1]
- * Note that each element is complex and can be accessed like
- f[k].r and f[k].i
- * */
-void opus_fft_c(const kiss_fft_state *cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout);
-void opus_ifft_c(const kiss_fft_state *cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout);
-
-void opus_fft_impl(const kiss_fft_state *st,kiss_fft_cpx *fout);
-void opus_ifft_impl(const kiss_fft_state *st,kiss_fft_cpx *fout);
-
-void opus_fft_free(const kiss_fft_state *cfg, int arch);
-
-
-void opus_fft_free_arch_c(kiss_fft_state *st);
-int opus_fft_alloc_arch_c(kiss_fft_state *st);
-
-#if !defined(OVERRIDE_OPUS_FFT)
-/* Is run-time CPU detection enabled on this platform? */
-#if defined(OPUS_HAVE_RTCD) && (defined(HAVE_ARM_NE10))
-
-extern int (*const OPUS_FFT_ALLOC_ARCH_IMPL[OPUS_ARCHMASK+1])(
- kiss_fft_state *st);
-
-#define opus_fft_alloc_arch(_st, arch) \
- ((*OPUS_FFT_ALLOC_ARCH_IMPL[(arch)&OPUS_ARCHMASK])(_st))
-
-extern void (*const OPUS_FFT_FREE_ARCH_IMPL[OPUS_ARCHMASK+1])(
- kiss_fft_state *st);
-#define opus_fft_free_arch(_st, arch) \
- ((*OPUS_FFT_FREE_ARCH_IMPL[(arch)&OPUS_ARCHMASK])(_st))
-
-extern void (*const OPUS_FFT[OPUS_ARCHMASK+1])(const kiss_fft_state *cfg,
- const kiss_fft_cpx *fin, kiss_fft_cpx *fout);
-#define opus_fft(_cfg, _fin, _fout, arch) \
- ((*OPUS_FFT[(arch)&OPUS_ARCHMASK])(_cfg, _fin, _fout))
-
-extern void (*const OPUS_IFFT[OPUS_ARCHMASK+1])(const kiss_fft_state *cfg,
- const kiss_fft_cpx *fin, kiss_fft_cpx *fout);
-#define opus_ifft(_cfg, _fin, _fout, arch) \
- ((*OPUS_IFFT[(arch)&OPUS_ARCHMASK])(_cfg, _fin, _fout))
-
-#else /* else for if defined(OPUS_HAVE_RTCD) && (defined(HAVE_ARM_NE10)) */
-
-#define opus_fft_alloc_arch(_st, arch) \
- ((void)(arch), opus_fft_alloc_arch_c(_st))
-
-#define opus_fft_free_arch(_st, arch) \
- ((void)(arch), opus_fft_free_arch_c(_st))
-
-#define opus_fft(_cfg, _fin, _fout, arch) \
- ((void)(arch), opus_fft_c(_cfg, _fin, _fout))
-
-#define opus_ifft(_cfg, _fin, _fout, arch) \
- ((void)(arch), opus_ifft_c(_cfg, _fin, _fout))
-
-#endif /* end if defined(OPUS_HAVE_RTCD) && (defined(HAVE_ARM_NE10)) */
-#endif /* end if !defined(OVERRIDE_OPUS_FFT) */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/celt/laplace.c b/thirdparty/opus/celt/laplace.c
deleted file mode 100644
index a7bca874b6..0000000000
--- a/thirdparty/opus/celt/laplace.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Copyright (c) 2007 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "laplace.h"
-#include "mathops.h"
-
-/* The minimum probability of an energy delta (out of 32768). */
-#define LAPLACE_LOG_MINP (0)
-#define LAPLACE_MINP (1<<LAPLACE_LOG_MINP)
-/* The minimum number of guaranteed representable energy deltas (in one
- direction). */
-#define LAPLACE_NMIN (16)
-
-/* When called, decay is positive and at most 11456. */
-static unsigned ec_laplace_get_freq1(unsigned fs0, int decay)
-{
- unsigned ft;
- ft = 32768 - LAPLACE_MINP*(2*LAPLACE_NMIN) - fs0;
- return ft*(opus_int32)(16384-decay)>>15;
-}
-
-void ec_laplace_encode(ec_enc *enc, int *value, unsigned fs, int decay)
-{
- unsigned fl;
- int val = *value;
- fl = 0;
- if (val)
- {
- int s;
- int i;
- s = -(val<0);
- val = (val+s)^s;
- fl = fs;
- fs = ec_laplace_get_freq1(fs, decay);
- /* Search the decaying part of the PDF.*/
- for (i=1; fs > 0 && i < val; i++)
- {
- fs *= 2;
- fl += fs+2*LAPLACE_MINP;
- fs = (fs*(opus_int32)decay)>>15;
- }
- /* Everything beyond that has probability LAPLACE_MINP. */
- if (!fs)
- {
- int di;
- int ndi_max;
- ndi_max = (32768-fl+LAPLACE_MINP-1)>>LAPLACE_LOG_MINP;
- ndi_max = (ndi_max-s)>>1;
- di = IMIN(val - i, ndi_max - 1);
- fl += (2*di+1+s)*LAPLACE_MINP;
- fs = IMIN(LAPLACE_MINP, 32768-fl);
- *value = (i+di+s)^s;
- }
- else
- {
- fs += LAPLACE_MINP;
- fl += fs&~s;
- }
- celt_assert(fl+fs<=32768);
- celt_assert(fs>0);
- }
- ec_encode_bin(enc, fl, fl+fs, 15);
-}
-
-int ec_laplace_decode(ec_dec *dec, unsigned fs, int decay)
-{
- int val=0;
- unsigned fl;
- unsigned fm;
- fm = ec_decode_bin(dec, 15);
- fl = 0;
- if (fm >= fs)
- {
- val++;
- fl = fs;
- fs = ec_laplace_get_freq1(fs, decay)+LAPLACE_MINP;
- /* Search the decaying part of the PDF.*/
- while(fs > LAPLACE_MINP && fm >= fl+2*fs)
- {
- fs *= 2;
- fl += fs;
- fs = ((fs-2*LAPLACE_MINP)*(opus_int32)decay)>>15;
- fs += LAPLACE_MINP;
- val++;
- }
- /* Everything beyond that has probability LAPLACE_MINP. */
- if (fs <= LAPLACE_MINP)
- {
- int di;
- di = (fm-fl)>>(LAPLACE_LOG_MINP+1);
- val += di;
- fl += 2*di*LAPLACE_MINP;
- }
- if (fm < fl+fs)
- val = -val;
- else
- fl += fs;
- }
- celt_assert(fl<32768);
- celt_assert(fs>0);
- celt_assert(fl<=fm);
- celt_assert(fm<IMIN(fl+fs,32768));
- ec_dec_update(dec, fl, IMIN(fl+fs,32768), 32768);
- return val;
-}
diff --git a/thirdparty/opus/celt/laplace.h b/thirdparty/opus/celt/laplace.h
deleted file mode 100644
index 46c14b5da5..0000000000
--- a/thirdparty/opus/celt/laplace.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (c) 2007 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "entenc.h"
-#include "entdec.h"
-
-/** Encode a value that is assumed to be the realisation of a
- Laplace-distributed random process
- @param enc Entropy encoder state
- @param value Value to encode
- @param fs Probability of 0, multiplied by 32768
- @param decay Probability of the value +/- 1, multiplied by 16384
-*/
-void ec_laplace_encode(ec_enc *enc, int *value, unsigned fs, int decay);
-
-/** Decode a value that is assumed to be the realisation of a
- Laplace-distributed random process
- @param dec Entropy decoder state
- @param fs Probability of 0, multiplied by 32768
- @param decay Probability of the value +/- 1, multiplied by 16384
- @return Value decoded
- */
-int ec_laplace_decode(ec_dec *dec, unsigned fs, int decay);
diff --git a/thirdparty/opus/celt/mathops.c b/thirdparty/opus/celt/mathops.c
deleted file mode 100644
index 21a01f52e4..0000000000
--- a/thirdparty/opus/celt/mathops.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* Copyright (c) 2002-2008 Jean-Marc Valin
- Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/**
- @file mathops.h
- @brief Various math functions
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "mathops.h"
-
-/*Compute floor(sqrt(_val)) with exact arithmetic.
- This has been tested on all possible 32-bit inputs.*/
-unsigned isqrt32(opus_uint32 _val){
- unsigned b;
- unsigned g;
- int bshift;
- /*Uses the second method from
- http://www.azillionmonkeys.com/qed/sqroot.html
- The main idea is to search for the largest binary digit b such that
- (g+b)*(g+b) <= _val, and add it to the solution g.*/
- g=0;
- bshift=(EC_ILOG(_val)-1)>>1;
- b=1U<<bshift;
- do{
- opus_uint32 t;
- t=(((opus_uint32)g<<1)+b)<<bshift;
- if(t<=_val){
- g+=b;
- _val-=t;
- }
- b>>=1;
- bshift--;
- }
- while(bshift>=0);
- return g;
-}
-
-#ifdef FIXED_POINT
-
-opus_val32 frac_div32(opus_val32 a, opus_val32 b)
-{
- opus_val16 rcp;
- opus_val32 result, rem;
- int shift = celt_ilog2(b)-29;
- a = VSHR32(a,shift);
- b = VSHR32(b,shift);
- /* 16-bit reciprocal */
- rcp = ROUND16(celt_rcp(ROUND16(b,16)),3);
- result = MULT16_32_Q15(rcp, a);
- rem = PSHR32(a,2)-MULT32_32_Q31(result, b);
- result = ADD32(result, SHL32(MULT16_32_Q15(rcp, rem),2));
- if (result >= 536870912) /* 2^29 */
- return 2147483647; /* 2^31 - 1 */
- else if (result <= -536870912) /* -2^29 */
- return -2147483647; /* -2^31 */
- else
- return SHL32(result, 2);
-}
-
-/** Reciprocal sqrt approximation in the range [0.25,1) (Q16 in, Q14 out) */
-opus_val16 celt_rsqrt_norm(opus_val32 x)
-{
- opus_val16 n;
- opus_val16 r;
- opus_val16 r2;
- opus_val16 y;
- /* Range of n is [-16384,32767] ([-0.5,1) in Q15). */
- n = x-32768;
- /* Get a rough initial guess for the root.
- The optimal minimax quadratic approximation (using relative error) is
- r = 1.437799046117536+n*(-0.823394375837328+n*0.4096419668459485).
- Coefficients here, and the final result r, are Q14.*/
- r = ADD16(23557, MULT16_16_Q15(n, ADD16(-13490, MULT16_16_Q15(n, 6713))));
- /* We want y = x*r*r-1 in Q15, but x is 32-bit Q16 and r is Q14.
- We can compute the result from n and r using Q15 multiplies with some
- adjustment, carefully done to avoid overflow.
- Range of y is [-1564,1594]. */
- r2 = MULT16_16_Q15(r, r);
- y = SHL16(SUB16(ADD16(MULT16_16_Q15(r2, n), r2), 16384), 1);
- /* Apply a 2nd-order Householder iteration: r += r*y*(y*0.375-0.5).
- This yields the Q14 reciprocal square root of the Q16 x, with a maximum
- relative error of 1.04956E-4, a (relative) RMSE of 2.80979E-5, and a
- peak absolute error of 2.26591/16384. */
- return ADD16(r, MULT16_16_Q15(r, MULT16_16_Q15(y,
- SUB16(MULT16_16_Q15(y, 12288), 16384))));
-}
-
-/** Sqrt approximation (QX input, QX/2 output) */
-opus_val32 celt_sqrt(opus_val32 x)
-{
- int k;
- opus_val16 n;
- opus_val32 rt;
- static const opus_val16 C[5] = {23175, 11561, -3011, 1699, -664};
- if (x==0)
- return 0;
- else if (x>=1073741824)
- return 32767;
- k = (celt_ilog2(x)>>1)-7;
- x = VSHR32(x, 2*k);
- n = x-32768;
- rt = ADD16(C[0], MULT16_16_Q15(n, ADD16(C[1], MULT16_16_Q15(n, ADD16(C[2],
- MULT16_16_Q15(n, ADD16(C[3], MULT16_16_Q15(n, (C[4])))))))));
- rt = VSHR32(rt,7-k);
- return rt;
-}
-
-#define L1 32767
-#define L2 -7651
-#define L3 8277
-#define L4 -626
-
-static OPUS_INLINE opus_val16 _celt_cos_pi_2(opus_val16 x)
-{
- opus_val16 x2;
-
- x2 = MULT16_16_P15(x,x);
- return ADD16(1,MIN16(32766,ADD32(SUB16(L1,x2), MULT16_16_P15(x2, ADD32(L2, MULT16_16_P15(x2, ADD32(L3, MULT16_16_P15(L4, x2
- ))))))));
-}
-
-#undef L1
-#undef L2
-#undef L3
-#undef L4
-
-opus_val16 celt_cos_norm(opus_val32 x)
-{
- x = x&0x0001ffff;
- if (x>SHL32(EXTEND32(1), 16))
- x = SUB32(SHL32(EXTEND32(1), 17),x);
- if (x&0x00007fff)
- {
- if (x<SHL32(EXTEND32(1), 15))
- {
- return _celt_cos_pi_2(EXTRACT16(x));
- } else {
- return NEG16(_celt_cos_pi_2(EXTRACT16(65536-x)));
- }
- } else {
- if (x&0x0000ffff)
- return 0;
- else if (x&0x0001ffff)
- return -32767;
- else
- return 32767;
- }
-}
-
-/** Reciprocal approximation (Q15 input, Q16 output) */
-opus_val32 celt_rcp(opus_val32 x)
-{
- int i;
- opus_val16 n;
- opus_val16 r;
- celt_assert2(x>0, "celt_rcp() only defined for positive values");
- i = celt_ilog2(x);
- /* n is Q15 with range [0,1). */
- n = VSHR32(x,i-15)-32768;
- /* Start with a linear approximation:
- r = 1.8823529411764706-0.9411764705882353*n.
- The coefficients and the result are Q14 in the range [15420,30840].*/
- r = ADD16(30840, MULT16_16_Q15(-15420, n));
- /* Perform two Newton iterations:
- r -= r*((r*n)-1.Q15)
- = r*((r*n)+(r-1.Q15)). */
- r = SUB16(r, MULT16_16_Q15(r,
- ADD16(MULT16_16_Q15(r, n), ADD16(r, -32768))));
- /* We subtract an extra 1 in the second iteration to avoid overflow; it also
- neatly compensates for truncation error in the rest of the process. */
- r = SUB16(r, ADD16(1, MULT16_16_Q15(r,
- ADD16(MULT16_16_Q15(r, n), ADD16(r, -32768)))));
- /* r is now the Q15 solution to 2/(n+1), with a maximum relative error
- of 7.05346E-5, a (relative) RMSE of 2.14418E-5, and a peak absolute
- error of 1.24665/32768. */
- return VSHR32(EXTEND32(r),i-16);
-}
-
-#endif
diff --git a/thirdparty/opus/celt/mathops.h b/thirdparty/opus/celt/mathops.h
deleted file mode 100644
index a0525a9610..0000000000
--- a/thirdparty/opus/celt/mathops.h
+++ /dev/null
@@ -1,258 +0,0 @@
-/* Copyright (c) 2002-2008 Jean-Marc Valin
- Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/**
- @file mathops.h
- @brief Various math functions
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef MATHOPS_H
-#define MATHOPS_H
-
-#include "arch.h"
-#include "entcode.h"
-#include "os_support.h"
-
-/* Multiplies two 16-bit fractional values. Bit-exactness of this macro is important */
-#define FRAC_MUL16(a,b) ((16384+((opus_int32)(opus_int16)(a)*(opus_int16)(b)))>>15)
-
-unsigned isqrt32(opus_uint32 _val);
-
-#ifndef OVERRIDE_CELT_MAXABS16
-static OPUS_INLINE opus_val32 celt_maxabs16(const opus_val16 *x, int len)
-{
- int i;
- opus_val16 maxval = 0;
- opus_val16 minval = 0;
- for (i=0;i<len;i++)
- {
- maxval = MAX16(maxval, x[i]);
- minval = MIN16(minval, x[i]);
- }
- return MAX32(EXTEND32(maxval),-EXTEND32(minval));
-}
-#endif
-
-#ifndef OVERRIDE_CELT_MAXABS32
-#ifdef FIXED_POINT
-static OPUS_INLINE opus_val32 celt_maxabs32(const opus_val32 *x, int len)
-{
- int i;
- opus_val32 maxval = 0;
- opus_val32 minval = 0;
- for (i=0;i<len;i++)
- {
- maxval = MAX32(maxval, x[i]);
- minval = MIN32(minval, x[i]);
- }
- return MAX32(maxval, -minval);
-}
-#else
-#define celt_maxabs32(x,len) celt_maxabs16(x,len)
-#endif
-#endif
-
-
-#ifndef FIXED_POINT
-
-#define PI 3.141592653f
-#define celt_sqrt(x) ((float)sqrt(x))
-#define celt_rsqrt(x) (1.f/celt_sqrt(x))
-#define celt_rsqrt_norm(x) (celt_rsqrt(x))
-#define celt_cos_norm(x) ((float)cos((.5f*PI)*(x)))
-#define celt_rcp(x) (1.f/(x))
-#define celt_div(a,b) ((a)/(b))
-#define frac_div32(a,b) ((float)(a)/(b))
-
-#ifdef FLOAT_APPROX
-
-/* Note: This assumes radix-2 floating point with the exponent at bits 23..30 and an offset of 127
- denorm, +/- inf and NaN are *not* handled */
-
-/** Base-2 log approximation (log2(x)). */
-static OPUS_INLINE float celt_log2(float x)
-{
- int integer;
- float frac;
- union {
- float f;
- opus_uint32 i;
- } in;
- in.f = x;
- integer = (in.i>>23)-127;
- in.i -= integer<<23;
- frac = in.f - 1.5f;
- frac = -0.41445418f + frac*(0.95909232f
- + frac*(-0.33951290f + frac*0.16541097f));
- return 1+integer+frac;
-}
-
-/** Base-2 exponential approximation (2^x). */
-static OPUS_INLINE float celt_exp2(float x)
-{
- int integer;
- float frac;
- union {
- float f;
- opus_uint32 i;
- } res;
- integer = floor(x);
- if (integer < -50)
- return 0;
- frac = x-integer;
- /* K0 = 1, K1 = log(2), K2 = 3-4*log(2), K3 = 3*log(2) - 2 */
- res.f = 0.99992522f + frac * (0.69583354f
- + frac * (0.22606716f + 0.078024523f*frac));
- res.i = (res.i + (integer<<23)) & 0x7fffffff;
- return res.f;
-}
-
-#else
-#define celt_log2(x) ((float)(1.442695040888963387*log(x)))
-#define celt_exp2(x) ((float)exp(0.6931471805599453094*(x)))
-#endif
-
-#endif
-
-#ifdef FIXED_POINT
-
-#include "os_support.h"
-
-#ifndef OVERRIDE_CELT_ILOG2
-/** Integer log in base2. Undefined for zero and negative numbers */
-static OPUS_INLINE opus_int16 celt_ilog2(opus_int32 x)
-{
- celt_assert2(x>0, "celt_ilog2() only defined for strictly positive numbers");
- return EC_ILOG(x)-1;
-}
-#endif
-
-
-/** Integer log in base2. Defined for zero, but not for negative numbers */
-static OPUS_INLINE opus_int16 celt_zlog2(opus_val32 x)
-{
- return x <= 0 ? 0 : celt_ilog2(x);
-}
-
-opus_val16 celt_rsqrt_norm(opus_val32 x);
-
-opus_val32 celt_sqrt(opus_val32 x);
-
-opus_val16 celt_cos_norm(opus_val32 x);
-
-/** Base-2 logarithm approximation (log2(x)). (Q14 input, Q10 output) */
-static OPUS_INLINE opus_val16 celt_log2(opus_val32 x)
-{
- int i;
- opus_val16 n, frac;
- /* -0.41509302963303146, 0.9609890551383969, -0.31836011537636605,
- 0.15530808010959576, -0.08556153059057618 */
- static const opus_val16 C[5] = {-6801+(1<<(13-DB_SHIFT)), 15746, -5217, 2545, -1401};
- if (x==0)
- return -32767;
- i = celt_ilog2(x);
- n = VSHR32(x,i-15)-32768-16384;
- frac = ADD16(C[0], MULT16_16_Q15(n, ADD16(C[1], MULT16_16_Q15(n, ADD16(C[2], MULT16_16_Q15(n, ADD16(C[3], MULT16_16_Q15(n, C[4]))))))));
- return SHL16(i-13,DB_SHIFT)+SHR16(frac,14-DB_SHIFT);
-}
-
-/*
- K0 = 1
- K1 = log(2)
- K2 = 3-4*log(2)
- K3 = 3*log(2) - 2
-*/
-#define D0 16383
-#define D1 22804
-#define D2 14819
-#define D3 10204
-
-static OPUS_INLINE opus_val32 celt_exp2_frac(opus_val16 x)
-{
- opus_val16 frac;
- frac = SHL16(x, 4);
- return ADD16(D0, MULT16_16_Q15(frac, ADD16(D1, MULT16_16_Q15(frac, ADD16(D2 , MULT16_16_Q15(D3,frac))))));
-}
-/** Base-2 exponential approximation (2^x). (Q10 input, Q16 output) */
-static OPUS_INLINE opus_val32 celt_exp2(opus_val16 x)
-{
- int integer;
- opus_val16 frac;
- integer = SHR16(x,10);
- if (integer>14)
- return 0x7f000000;
- else if (integer < -15)
- return 0;
- frac = celt_exp2_frac(x-SHL16(integer,10));
- return VSHR32(EXTEND32(frac), -integer-2);
-}
-
-opus_val32 celt_rcp(opus_val32 x);
-
-#define celt_div(a,b) MULT32_32_Q31((opus_val32)(a),celt_rcp(b))
-
-opus_val32 frac_div32(opus_val32 a, opus_val32 b);
-
-#define M1 32767
-#define M2 -21
-#define M3 -11943
-#define M4 4936
-
-/* Atan approximation using a 4th order polynomial. Input is in Q15 format
- and normalized by pi/4. Output is in Q15 format */
-static OPUS_INLINE opus_val16 celt_atan01(opus_val16 x)
-{
- return MULT16_16_P15(x, ADD32(M1, MULT16_16_P15(x, ADD32(M2, MULT16_16_P15(x, ADD32(M3, MULT16_16_P15(M4, x)))))));
-}
-
-#undef M1
-#undef M2
-#undef M3
-#undef M4
-
-/* atan2() approximation valid for positive input values */
-static OPUS_INLINE opus_val16 celt_atan2p(opus_val16 y, opus_val16 x)
-{
- if (y < x)
- {
- opus_val32 arg;
- arg = celt_div(SHL32(EXTEND32(y),15),x);
- if (arg >= 32767)
- arg = 32767;
- return SHR16(celt_atan01(EXTRACT16(arg)),1);
- } else {
- opus_val32 arg;
- arg = celt_div(SHL32(EXTEND32(x),15),y);
- if (arg >= 32767)
- arg = 32767;
- return 25736-SHR16(celt_atan01(EXTRACT16(arg)),1);
- }
-}
-
-#endif /* FIXED_POINT */
-#endif /* MATHOPS_H */
diff --git a/thirdparty/opus/celt/mdct.c b/thirdparty/opus/celt/mdct.c
deleted file mode 100644
index 5315ad11a3..0000000000
--- a/thirdparty/opus/celt/mdct.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2008 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* This is a simple MDCT implementation that uses a N/4 complex FFT
- to do most of the work. It should be relatively straightforward to
- plug in pretty much and FFT here.
-
- This replaces the Vorbis FFT (and uses the exact same API), which
- was a bit too messy and that was ending up duplicating code
- (might as well use the same FFT everywhere).
-
- The algorithm is similar to (and inspired from) Fabrice Bellard's
- MDCT implementation in FFMPEG, but has differences in signs, ordering
- and scaling in many places.
-*/
-
-#ifndef SKIP_CONFIG_H
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#endif
-
-#include "mdct.h"
-#include "kiss_fft.h"
-#include "_kiss_fft_guts.h"
-#include <math.h>
-#include "os_support.h"
-#include "mathops.h"
-#include "stack_alloc.h"
-
-#if defined(MIPSr1_ASM)
-#include "mips/mdct_mipsr1.h"
-#endif
-
-
-#ifdef CUSTOM_MODES
-
-int clt_mdct_init(mdct_lookup *l,int N, int maxshift, int arch)
-{
- int i;
- kiss_twiddle_scalar *trig;
- int shift;
- int N2=N>>1;
- l->n = N;
- l->maxshift = maxshift;
- for (i=0;i<=maxshift;i++)
- {
- if (i==0)
- l->kfft[i] = opus_fft_alloc(N>>2>>i, 0, 0, arch);
- else
- l->kfft[i] = opus_fft_alloc_twiddles(N>>2>>i, 0, 0, l->kfft[0], arch);
-#ifndef ENABLE_TI_DSPLIB55
- if (l->kfft[i]==NULL)
- return 0;
-#endif
- }
- l->trig = trig = (kiss_twiddle_scalar*)opus_alloc((N-(N2>>maxshift))*sizeof(kiss_twiddle_scalar));
- if (l->trig==NULL)
- return 0;
- for (shift=0;shift<=maxshift;shift++)
- {
- /* We have enough points that sine isn't necessary */
-#if defined(FIXED_POINT)
-#if 1
- for (i=0;i<N2;i++)
- trig[i] = TRIG_UPSCALE*celt_cos_norm(DIV32(ADD32(SHL32(EXTEND32(i),17),N2+16384),N));
-#else
- for (i=0;i<N2;i++)
- trig[i] = (kiss_twiddle_scalar)MAX32(-32767,MIN32(32767,floor(.5+32768*cos(2*M_PI*(i+.125)/N))));
-#endif
-#else
- for (i=0;i<N2;i++)
- trig[i] = (kiss_twiddle_scalar)cos(2*PI*(i+.125)/N);
-#endif
- trig += N2;
- N2 >>= 1;
- N >>= 1;
- }
- return 1;
-}
-
-void clt_mdct_clear(mdct_lookup *l, int arch)
-{
- int i;
- for (i=0;i<=l->maxshift;i++)
- opus_fft_free(l->kfft[i], arch);
- opus_free((kiss_twiddle_scalar*)l->trig);
-}
-
-#endif /* CUSTOM_MODES */
-
-/* Forward MDCT trashes the input array */
-#ifndef OVERRIDE_clt_mdct_forward
-void clt_mdct_forward_c(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window, int overlap, int shift, int stride, int arch)
-{
- int i;
- int N, N2, N4;
- VARDECL(kiss_fft_scalar, f);
- VARDECL(kiss_fft_cpx, f2);
- const kiss_fft_state *st = l->kfft[shift];
- const kiss_twiddle_scalar *trig;
- opus_val16 scale;
-#ifdef FIXED_POINT
- /* Allows us to scale with MULT16_32_Q16(), which is faster than
- MULT16_32_Q15() on ARM. */
- int scale_shift = st->scale_shift-1;
-#endif
- SAVE_STACK;
- (void)arch;
- scale = st->scale;
-
- N = l->n;
- trig = l->trig;
- for (i=0;i<shift;i++)
- {
- N >>= 1;
- trig += N;
- }
- N2 = N>>1;
- N4 = N>>2;
-
- ALLOC(f, N2, kiss_fft_scalar);
- ALLOC(f2, N4, kiss_fft_cpx);
-
- /* Consider the input to be composed of four blocks: [a, b, c, d] */
- /* Window, shuffle, fold */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_scalar * OPUS_RESTRICT xp1 = in+(overlap>>1);
- const kiss_fft_scalar * OPUS_RESTRICT xp2 = in+N2-1+(overlap>>1);
- kiss_fft_scalar * OPUS_RESTRICT yp = f;
- const opus_val16 * OPUS_RESTRICT wp1 = window+(overlap>>1);
- const opus_val16 * OPUS_RESTRICT wp2 = window+(overlap>>1)-1;
- for(i=0;i<((overlap+3)>>2);i++)
- {
- /* Real part arranged as -d-cR, Imag part arranged as -b+aR*/
- *yp++ = MULT16_32_Q15(*wp2, xp1[N2]) + MULT16_32_Q15(*wp1,*xp2);
- *yp++ = MULT16_32_Q15(*wp1, *xp1) - MULT16_32_Q15(*wp2, xp2[-N2]);
- xp1+=2;
- xp2-=2;
- wp1+=2;
- wp2-=2;
- }
- wp1 = window;
- wp2 = window+overlap-1;
- for(;i<N4-((overlap+3)>>2);i++)
- {
- /* Real part arranged as a-bR, Imag part arranged as -c-dR */
- *yp++ = *xp2;
- *yp++ = *xp1;
- xp1+=2;
- xp2-=2;
- }
- for(;i<N4;i++)
- {
- /* Real part arranged as a-bR, Imag part arranged as -c-dR */
- *yp++ = -MULT16_32_Q15(*wp1, xp1[-N2]) + MULT16_32_Q15(*wp2, *xp2);
- *yp++ = MULT16_32_Q15(*wp2, *xp1) + MULT16_32_Q15(*wp1, xp2[N2]);
- xp1+=2;
- xp2-=2;
- wp1+=2;
- wp2-=2;
- }
- }
- /* Pre-rotation */
- {
- kiss_fft_scalar * OPUS_RESTRICT yp = f;
- const kiss_twiddle_scalar *t = &trig[0];
- for(i=0;i<N4;i++)
- {
- kiss_fft_cpx yc;
- kiss_twiddle_scalar t0, t1;
- kiss_fft_scalar re, im, yr, yi;
- t0 = t[i];
- t1 = t[N4+i];
- re = *yp++;
- im = *yp++;
- yr = S_MUL(re,t0) - S_MUL(im,t1);
- yi = S_MUL(im,t0) + S_MUL(re,t1);
- yc.r = yr;
- yc.i = yi;
- yc.r = PSHR32(MULT16_32_Q16(scale, yc.r), scale_shift);
- yc.i = PSHR32(MULT16_32_Q16(scale, yc.i), scale_shift);
- f2[st->bitrev[i]] = yc;
- }
- }
-
- /* N/4 complex FFT, does not downscale anymore */
- opus_fft_impl(st, f2);
-
- /* Post-rotate */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_cpx * OPUS_RESTRICT fp = f2;
- kiss_fft_scalar * OPUS_RESTRICT yp1 = out;
- kiss_fft_scalar * OPUS_RESTRICT yp2 = out+stride*(N2-1);
- const kiss_twiddle_scalar *t = &trig[0];
- /* Temp pointers to make it really clear to the compiler what we're doing */
- for(i=0;i<N4;i++)
- {
- kiss_fft_scalar yr, yi;
- yr = S_MUL(fp->i,t[N4+i]) - S_MUL(fp->r,t[i]);
- yi = S_MUL(fp->r,t[N4+i]) + S_MUL(fp->i,t[i]);
- *yp1 = yr;
- *yp2 = yi;
- fp++;
- yp1 += 2*stride;
- yp2 -= 2*stride;
- }
- }
- RESTORE_STACK;
-}
-#endif /* OVERRIDE_clt_mdct_forward */
-
-#ifndef OVERRIDE_clt_mdct_backward
-void clt_mdct_backward_c(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 * OPUS_RESTRICT window, int overlap, int shift, int stride, int arch)
-{
- int i;
- int N, N2, N4;
- const kiss_twiddle_scalar *trig;
- (void) arch;
-
- N = l->n;
- trig = l->trig;
- for (i=0;i<shift;i++)
- {
- N >>= 1;
- trig += N;
- }
- N2 = N>>1;
- N4 = N>>2;
-
- /* Pre-rotate */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_scalar * OPUS_RESTRICT xp1 = in;
- const kiss_fft_scalar * OPUS_RESTRICT xp2 = in+stride*(N2-1);
- kiss_fft_scalar * OPUS_RESTRICT yp = out+(overlap>>1);
- const kiss_twiddle_scalar * OPUS_RESTRICT t = &trig[0];
- const opus_int16 * OPUS_RESTRICT bitrev = l->kfft[shift]->bitrev;
- for(i=0;i<N4;i++)
- {
- int rev;
- kiss_fft_scalar yr, yi;
- rev = *bitrev++;
- yr = S_MUL(*xp2, t[i]) + S_MUL(*xp1, t[N4+i]);
- yi = S_MUL(*xp1, t[i]) - S_MUL(*xp2, t[N4+i]);
- /* We swap real and imag because we use an FFT instead of an IFFT. */
- yp[2*rev+1] = yr;
- yp[2*rev] = yi;
- /* Storing the pre-rotation directly in the bitrev order. */
- xp1+=2*stride;
- xp2-=2*stride;
- }
- }
-
- opus_fft_impl(l->kfft[shift], (kiss_fft_cpx*)(out+(overlap>>1)));
-
- /* Post-rotate and de-shuffle from both ends of the buffer at once to make
- it in-place. */
- {
- kiss_fft_scalar * yp0 = out+(overlap>>1);
- kiss_fft_scalar * yp1 = out+(overlap>>1)+N2-2;
- const kiss_twiddle_scalar *t = &trig[0];
- /* Loop to (N4+1)>>1 to handle odd N4. When N4 is odd, the
- middle pair will be computed twice. */
- for(i=0;i<(N4+1)>>1;i++)
- {
- kiss_fft_scalar re, im, yr, yi;
- kiss_twiddle_scalar t0, t1;
- /* We swap real and imag because we're using an FFT instead of an IFFT. */
- re = yp0[1];
- im = yp0[0];
- t0 = t[i];
- t1 = t[N4+i];
- /* We'd scale up by 2 here, but instead it's done when mixing the windows */
- yr = S_MUL(re,t0) + S_MUL(im,t1);
- yi = S_MUL(re,t1) - S_MUL(im,t0);
- /* We swap real and imag because we're using an FFT instead of an IFFT. */
- re = yp1[1];
- im = yp1[0];
- yp0[0] = yr;
- yp1[1] = yi;
-
- t0 = t[(N4-i-1)];
- t1 = t[(N2-i-1)];
- /* We'd scale up by 2 here, but instead it's done when mixing the windows */
- yr = S_MUL(re,t0) + S_MUL(im,t1);
- yi = S_MUL(re,t1) - S_MUL(im,t0);
- yp1[0] = yr;
- yp0[1] = yi;
- yp0 += 2;
- yp1 -= 2;
- }
- }
-
- /* Mirror on both sides for TDAC */
- {
- kiss_fft_scalar * OPUS_RESTRICT xp1 = out+overlap-1;
- kiss_fft_scalar * OPUS_RESTRICT yp1 = out;
- const opus_val16 * OPUS_RESTRICT wp1 = window;
- const opus_val16 * OPUS_RESTRICT wp2 = window+overlap-1;
-
- for(i = 0; i < overlap/2; i++)
- {
- kiss_fft_scalar x1, x2;
- x1 = *xp1;
- x2 = *yp1;
- *yp1++ = MULT16_32_Q15(*wp2, x2) - MULT16_32_Q15(*wp1, x1);
- *xp1-- = MULT16_32_Q15(*wp1, x2) + MULT16_32_Q15(*wp2, x1);
- wp1++;
- wp2--;
- }
- }
-}
-#endif /* OVERRIDE_clt_mdct_backward */
diff --git a/thirdparty/opus/celt/mdct.h b/thirdparty/opus/celt/mdct.h
deleted file mode 100644
index 160ae4e0f3..0000000000
--- a/thirdparty/opus/celt/mdct.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2008 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* This is a simple MDCT implementation that uses a N/4 complex FFT
- to do most of the work. It should be relatively straightforward to
- plug in pretty much and FFT here.
-
- This replaces the Vorbis FFT (and uses the exact same API), which
- was a bit too messy and that was ending up duplicating code
- (might as well use the same FFT everywhere).
-
- The algorithm is similar to (and inspired from) Fabrice Bellard's
- MDCT implementation in FFMPEG, but has differences in signs, ordering
- and scaling in many places.
-*/
-
-#ifndef MDCT_H
-#define MDCT_H
-
-#include "opus_defines.h"
-#include "kiss_fft.h"
-#include "arch.h"
-
-typedef struct {
- int n;
- int maxshift;
- const kiss_fft_state *kfft[4];
- const kiss_twiddle_scalar * OPUS_RESTRICT trig;
-} mdct_lookup;
-
-#if defined(HAVE_ARM_NE10)
-#include "arm/mdct_arm.h"
-#endif
-
-
-int clt_mdct_init(mdct_lookup *l,int N, int maxshift, int arch);
-void clt_mdct_clear(mdct_lookup *l, int arch);
-
-/** Compute a forward MDCT and scale by 4/N, trashes the input array */
-void clt_mdct_forward_c(const mdct_lookup *l, kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window, int overlap,
- int shift, int stride, int arch);
-
-/** Compute a backward MDCT (no scaling) and performs weighted overlap-add
- (scales implicitly by 1/2) */
-void clt_mdct_backward_c(const mdct_lookup *l, kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 * OPUS_RESTRICT window,
- int overlap, int shift, int stride, int arch);
-
-#if !defined(OVERRIDE_OPUS_MDCT)
-/* Is run-time CPU detection enabled on this platform? */
-#if defined(OPUS_HAVE_RTCD) && defined(HAVE_ARM_NE10)
-
-extern void (*const CLT_MDCT_FORWARD_IMPL[OPUS_ARCHMASK+1])(
- const mdct_lookup *l, kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out, const opus_val16 *window,
- int overlap, int shift, int stride, int arch);
-
-#define clt_mdct_forward(_l, _in, _out, _window, _overlap, _shift, _stride, _arch) \
- ((*CLT_MDCT_FORWARD_IMPL[(arch)&OPUS_ARCHMASK])(_l, _in, _out, \
- _window, _overlap, _shift, \
- _stride, _arch))
-
-extern void (*const CLT_MDCT_BACKWARD_IMPL[OPUS_ARCHMASK+1])(
- const mdct_lookup *l, kiss_fft_scalar *in,
- kiss_fft_scalar * OPUS_RESTRICT out, const opus_val16 *window,
- int overlap, int shift, int stride, int arch);
-
-#define clt_mdct_backward(_l, _in, _out, _window, _overlap, _shift, _stride, _arch) \
- (*CLT_MDCT_BACKWARD_IMPL[(arch)&OPUS_ARCHMASK])(_l, _in, _out, \
- _window, _overlap, _shift, \
- _stride, _arch)
-
-#else /* if defined(OPUS_HAVE_RTCD) && defined(HAVE_ARM_NE10) */
-
-#define clt_mdct_forward(_l, _in, _out, _window, _overlap, _shift, _stride, _arch) \
- clt_mdct_forward_c(_l, _in, _out, _window, _overlap, _shift, _stride, _arch)
-
-#define clt_mdct_backward(_l, _in, _out, _window, _overlap, _shift, _stride, _arch) \
- clt_mdct_backward_c(_l, _in, _out, _window, _overlap, _shift, _stride, _arch)
-
-#endif /* end if defined(OPUS_HAVE_RTCD) && defined(HAVE_ARM_NE10) && !defined(FIXED_POINT) */
-#endif /* end if !defined(OVERRIDE_OPUS_MDCT) */
-
-#endif
diff --git a/thirdparty/opus/celt/mfrngcod.h b/thirdparty/opus/celt/mfrngcod.h
deleted file mode 100644
index 809152a59a..0000000000
--- a/thirdparty/opus/celt/mfrngcod.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (c) 2001-2008 Timothy B. Terriberry
- Copyright (c) 2008-2009 Xiph.Org Foundation */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if !defined(_mfrngcode_H)
-# define _mfrngcode_H (1)
-# include "entcode.h"
-
-/*Constants used by the entropy encoder/decoder.*/
-
-/*The number of bits to output at a time.*/
-# define EC_SYM_BITS (8)
-/*The total number of bits in each of the state registers.*/
-# define EC_CODE_BITS (32)
-/*The maximum symbol value.*/
-# define EC_SYM_MAX ((1U<<EC_SYM_BITS)-1)
-/*Bits to shift by to move a symbol into the high-order position.*/
-# define EC_CODE_SHIFT (EC_CODE_BITS-EC_SYM_BITS-1)
-/*Carry bit of the high-order range symbol.*/
-# define EC_CODE_TOP (((opus_uint32)1U)<<(EC_CODE_BITS-1))
-/*Low-order bit of the high-order range symbol.*/
-# define EC_CODE_BOT (EC_CODE_TOP>>EC_SYM_BITS)
-/*The number of bits available for the last, partial symbol in the code field.*/
-# define EC_CODE_EXTRA ((EC_CODE_BITS-2)%EC_SYM_BITS+1)
-#endif
diff --git a/thirdparty/opus/celt/mips/celt_mipsr1.h b/thirdparty/opus/celt/mips/celt_mipsr1.h
deleted file mode 100644
index e85661a661..0000000000
--- a/thirdparty/opus/celt/mips/celt_mipsr1.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2010 Xiph.Org Foundation
- Copyright (c) 2008 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef __CELT_MIPSR1_H__
-#define __CELT_MIPSR1_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#define CELT_C
-
-#include "os_support.h"
-#include "mdct.h"
-#include <math.h>
-#include "celt.h"
-#include "pitch.h"
-#include "bands.h"
-#include "modes.h"
-#include "entcode.h"
-#include "quant_bands.h"
-#include "rate.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "float_cast.h"
-#include <stdarg.h>
-#include "celt_lpc.h"
-#include "vq.h"
-
-#define OVERRIDE_comb_filter
-void comb_filter(opus_val32 *y, opus_val32 *x, int T0, int T1, int N,
- opus_val16 g0, opus_val16 g1, int tapset0, int tapset1,
- const opus_val16 *window, int overlap, int arch)
-{
- int i;
- opus_val32 x0, x1, x2, x3, x4;
-
- (void)arch;
-
- /* printf ("%d %d %f %f\n", T0, T1, g0, g1); */
- opus_val16 g00, g01, g02, g10, g11, g12;
- static const opus_val16 gains[3][3] = {
- {QCONST16(0.3066406250f, 15), QCONST16(0.2170410156f, 15), QCONST16(0.1296386719f, 15)},
- {QCONST16(0.4638671875f, 15), QCONST16(0.2680664062f, 15), QCONST16(0.f, 15)},
- {QCONST16(0.7998046875f, 15), QCONST16(0.1000976562f, 15), QCONST16(0.f, 15)}};
-
- if (g0==0 && g1==0)
- {
- /* OPT: Happens to work without the OPUS_MOVE(), but only because the current encoder already copies x to y */
- if (x!=y)
- OPUS_MOVE(y, x, N);
- return;
- }
-
- g00 = MULT16_16_P15(g0, gains[tapset0][0]);
- g01 = MULT16_16_P15(g0, gains[tapset0][1]);
- g02 = MULT16_16_P15(g0, gains[tapset0][2]);
- g10 = MULT16_16_P15(g1, gains[tapset1][0]);
- g11 = MULT16_16_P15(g1, gains[tapset1][1]);
- g12 = MULT16_16_P15(g1, gains[tapset1][2]);
- x1 = x[-T1+1];
- x2 = x[-T1 ];
- x3 = x[-T1-1];
- x4 = x[-T1-2];
- /* If the filter didn't change, we don't need the overlap */
- if (g0==g1 && T0==T1 && tapset0==tapset1)
- overlap=0;
-
- for (i=0;i<overlap;i++)
- {
- opus_val16 f;
- opus_val32 res;
- f = MULT16_16_Q15(window[i],window[i]);
- x0= x[i-T1+2];
-
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)MULT16_16_Q15((Q15ONE-f),g00)), "r" ((int)x[i-T0]));
-
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)MULT16_16_Q15((Q15ONE-f),g01)), "r" ((int)ADD32(x[i-T0-1],x[i-T0+1])));
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)MULT16_16_Q15((Q15ONE-f),g02)), "r" ((int)ADD32(x[i-T0-2],x[i-T0+2])));
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)MULT16_16_Q15(f,g10)), "r" ((int)x2));
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)MULT16_16_Q15(f,g11)), "r" ((int)ADD32(x3,x1)));
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)MULT16_16_Q15(f,g12)), "r" ((int)ADD32(x4,x0)));
-
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (res): "i" (15));
-
- y[i] = x[i] + res;
-
- x4=x3;
- x3=x2;
- x2=x1;
- x1=x0;
- }
-
- x4 = x[i-T1-2];
- x3 = x[i-T1-1];
- x2 = x[i-T1];
- x1 = x[i-T1+1];
-
- if (g1==0)
- {
- /* OPT: Happens to work without the OPUS_MOVE(), but only because the current encoder already copies x to y */
- if (x!=y)
- OPUS_MOVE(y+overlap, x+overlap, N-overlap);
- return;
- }
-
- for (i=overlap;i<N;i++)
- {
- opus_val32 res;
- x0=x[i-T1+2];
-
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)g10), "r" ((int)x2));
-
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)g11), "r" ((int)ADD32(x3,x1)));
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)g12), "r" ((int)ADD32(x4,x0)));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (res): "i" (15));
- y[i] = x[i] + res;
- x4=x3;
- x3=x2;
- x2=x1;
- x1=x0;
- }
-}
-
-#endif /* __CELT_MIPSR1_H__ */
diff --git a/thirdparty/opus/celt/mips/fixed_generic_mipsr1.h b/thirdparty/opus/celt/mips/fixed_generic_mipsr1.h
deleted file mode 100644
index 4a05efbf85..0000000000
--- a/thirdparty/opus/celt/mips/fixed_generic_mipsr1.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Copyright (C) 2007-2009 Xiph.Org Foundation
- Copyright (C) 2003-2008 Jean-Marc Valin
- Copyright (C) 2007-2008 CSIRO */
-/**
- @file fixed_generic.h
- @brief Generic fixed-point operations
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CELT_FIXED_GENERIC_MIPSR1_H
-#define CELT_FIXED_GENERIC_MIPSR1_H
-
-#undef MULT16_32_Q15_ADD
-static inline int MULT16_32_Q15_ADD(int a, int b, int c, int d) {
- int m;
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a), "r" ((int)b));
- asm volatile("madd $ac1, %0, %1" : : "r" ((int)c), "r" ((int)d));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m): "i" (15));
- return m;
-}
-
-#undef MULT16_32_Q15_SUB
-static inline int MULT16_32_Q15_SUB(int a, int b, int c, int d) {
- int m;
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a), "r" ((int)b));
- asm volatile("msub $ac1, %0, %1" : : "r" ((int)c), "r" ((int)d));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m): "i" (15));
- return m;
-}
-
-#undef MULT16_16_Q15_ADD
-static inline int MULT16_16_Q15_ADD(int a, int b, int c, int d) {
- int m;
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a), "r" ((int)b));
- asm volatile("madd $ac1, %0, %1" : : "r" ((int)c), "r" ((int)d));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m): "i" (15));
- return m;
-}
-
-#undef MULT16_16_Q15_SUB
-static inline int MULT16_16_Q15_SUB(int a, int b, int c, int d) {
- int m;
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a), "r" ((int)b));
- asm volatile("msub $ac1, %0, %1" : : "r" ((int)c), "r" ((int)d));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m): "i" (15));
- return m;
-}
-
-
-#undef MULT16_32_Q16
-static inline int MULT16_32_Q16(int a, int b)
-{
- int c;
- asm volatile("MULT $ac1,%0, %1" : : "r" (a), "r" (b));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (c): "i" (16));
- return c;
-}
-
-#undef MULT16_32_P16
-static inline int MULT16_32_P16(int a, int b)
-{
- int c;
- asm volatile("MULT $ac1, %0, %1" : : "r" (a), "r" (b));
- asm volatile("EXTR_R.W %0,$ac1, %1" : "=r" (c): "i" (16));
- return c;
-}
-
-#undef MULT16_32_Q15
-static inline int MULT16_32_Q15(int a, int b)
-{
- int c;
- asm volatile("MULT $ac1, %0, %1" : : "r" (a), "r" (b));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (c): "i" (15));
- return c;
-}
-
-#undef MULT32_32_Q31
-static inline int MULT32_32_Q31(int a, int b)
-{
- int r;
- asm volatile("MULT $ac1, %0, %1" : : "r" (a), "r" (b));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (r): "i" (31));
- return r;
-}
-
-#undef PSHR32
-static inline int PSHR32(int a, int shift)
-{
- int r;
- asm volatile ("SHRAV_R.W %0, %1, %2" :"=r" (r): "r" (a), "r" (shift));
- return r;
-}
-
-#undef MULT16_16_P15
-static inline int MULT16_16_P15(int a, int b)
-{
- int r;
- asm volatile ("mul %0, %1, %2" :"=r" (r): "r" (a), "r" (b));
- asm volatile ("SHRA_R.W %0, %1, %2" : "+r" (r): "0" (r), "i"(15));
- return r;
-}
-
-#endif /* CELT_FIXED_GENERIC_MIPSR1_H */
diff --git a/thirdparty/opus/celt/mips/kiss_fft_mipsr1.h b/thirdparty/opus/celt/mips/kiss_fft_mipsr1.h
deleted file mode 100644
index 400ca4de9c..0000000000
--- a/thirdparty/opus/celt/mips/kiss_fft_mipsr1.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/*Copyright (c) 2013, Xiph.Org Foundation and contributors.
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.*/
-
-#ifndef KISS_FFT_MIPSR1_H
-#define KISS_FFT_MIPSR1_H
-
-#if !defined(KISS_FFT_GUTS_H)
-#error "This file should only be included from _kiss_fft_guts.h"
-#endif
-
-#ifdef FIXED_POINT
-
-#define S_MUL_ADD(a, b, c, d) (S_MUL(a,b)+S_MUL(c,d))
-#define S_MUL_SUB(a, b, c, d) (S_MUL(a,b)-S_MUL(c,d))
-
-#undef S_MUL_ADD
-static inline int S_MUL_ADD(int a, int b, int c, int d) {
- int m;
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a), "r" ((int)b));
- asm volatile("madd $ac1, %0, %1" : : "r" ((int)c), "r" ((int)d));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m): "i" (15));
- return m;
-}
-
-#undef S_MUL_SUB
-static inline int S_MUL_SUB(int a, int b, int c, int d) {
- int m;
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a), "r" ((int)b));
- asm volatile("msub $ac1, %0, %1" : : "r" ((int)c), "r" ((int)d));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m): "i" (15));
- return m;
-}
-
-#undef C_MUL
-# define C_MUL(m,a,b) (m=C_MUL_fun(a,b))
-static inline kiss_fft_cpx C_MUL_fun(kiss_fft_cpx a, kiss_twiddle_cpx b) {
- kiss_fft_cpx m;
-
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a.r), "r" ((int)b.r));
- asm volatile("msub $ac1, %0, %1" : : "r" ((int)a.i), "r" ((int)b.i));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m.r): "i" (15));
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a.r), "r" ((int)b.i));
- asm volatile("madd $ac1, %0, %1" : : "r" ((int)a.i), "r" ((int)b.r));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m.i): "i" (15));
-
- return m;
-}
-#undef C_MULC
-# define C_MULC(m,a,b) (m=C_MULC_fun(a,b))
-static inline kiss_fft_cpx C_MULC_fun(kiss_fft_cpx a, kiss_twiddle_cpx b) {
- kiss_fft_cpx m;
-
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a.r), "r" ((int)b.r));
- asm volatile("madd $ac1, %0, %1" : : "r" ((int)a.i), "r" ((int)b.i));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m.r): "i" (15));
- asm volatile("MULT $ac1, %0, %1" : : "r" ((int)a.i), "r" ((int)b.r));
- asm volatile("msub $ac1, %0, %1" : : "r" ((int)a.r), "r" ((int)b.i));
- asm volatile("EXTR.W %0,$ac1, %1" : "=r" (m.i): "i" (15));
-
- return m;
-}
-
-#endif /* FIXED_POINT */
-
-#define OVERRIDE_kf_bfly5
-static void kf_bfly5(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_state *st,
- int m,
- int N,
- int mm
- )
-{
- kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4;
- int i, u;
- kiss_fft_cpx scratch[13];
-
- const kiss_twiddle_cpx *tw;
- kiss_twiddle_cpx ya,yb;
- kiss_fft_cpx * Fout_beg = Fout;
-
-#ifdef FIXED_POINT
- ya.r = 10126;
- ya.i = -31164;
- yb.r = -26510;
- yb.i = -19261;
-#else
- ya = st->twiddles[fstride*m];
- yb = st->twiddles[fstride*2*m];
-#endif
-
- tw=st->twiddles;
-
- for (i=0;i<N;i++)
- {
- Fout = Fout_beg + i*mm;
- Fout0=Fout;
- Fout1=Fout0+m;
- Fout2=Fout0+2*m;
- Fout3=Fout0+3*m;
- Fout4=Fout0+4*m;
-
- /* For non-custom modes, m is guaranteed to be a multiple of 4. */
- for ( u=0; u<m; ++u ) {
- scratch[0] = *Fout0;
-
-
- C_MUL(scratch[1] ,*Fout1, tw[u*fstride]);
- C_MUL(scratch[2] ,*Fout2, tw[2*u*fstride]);
- C_MUL(scratch[3] ,*Fout3, tw[3*u*fstride]);
- C_MUL(scratch[4] ,*Fout4, tw[4*u*fstride]);
-
- C_ADD( scratch[7],scratch[1],scratch[4]);
- C_SUB( scratch[10],scratch[1],scratch[4]);
- C_ADD( scratch[8],scratch[2],scratch[3]);
- C_SUB( scratch[9],scratch[2],scratch[3]);
-
- Fout0->r += scratch[7].r + scratch[8].r;
- Fout0->i += scratch[7].i + scratch[8].i;
- scratch[5].r = scratch[0].r + S_MUL_ADD(scratch[7].r,ya.r,scratch[8].r,yb.r);
- scratch[5].i = scratch[0].i + S_MUL_ADD(scratch[7].i,ya.r,scratch[8].i,yb.r);
-
- scratch[6].r = S_MUL_ADD(scratch[10].i,ya.i,scratch[9].i,yb.i);
- scratch[6].i = -S_MUL_ADD(scratch[10].r,ya.i,scratch[9].r,yb.i);
-
- C_SUB(*Fout1,scratch[5],scratch[6]);
- C_ADD(*Fout4,scratch[5],scratch[6]);
-
- scratch[11].r = scratch[0].r + S_MUL_ADD(scratch[7].r,yb.r,scratch[8].r,ya.r);
- scratch[11].i = scratch[0].i + S_MUL_ADD(scratch[7].i,yb.r,scratch[8].i,ya.r);
-
- scratch[12].r = S_MUL_SUB(scratch[9].i,ya.i,scratch[10].i,yb.i);
- scratch[12].i = S_MUL_SUB(scratch[10].r,yb.i,scratch[9].r,ya.i);
-
- C_ADD(*Fout2,scratch[11],scratch[12]);
- C_SUB(*Fout3,scratch[11],scratch[12]);
-
- ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;
- }
- }
-}
-
-
-#endif /* KISS_FFT_MIPSR1_H */
diff --git a/thirdparty/opus/celt/mips/mdct_mipsr1.h b/thirdparty/opus/celt/mips/mdct_mipsr1.h
deleted file mode 100644
index 2934dab776..0000000000
--- a/thirdparty/opus/celt/mips/mdct_mipsr1.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2008 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* This is a simple MDCT implementation that uses a N/4 complex FFT
- to do most of the work. It should be relatively straightforward to
- plug in pretty much and FFT here.
-
- This replaces the Vorbis FFT (and uses the exact same API), which
- was a bit too messy and that was ending up duplicating code
- (might as well use the same FFT everywhere).
-
- The algorithm is similar to (and inspired from) Fabrice Bellard's
- MDCT implementation in FFMPEG, but has differences in signs, ordering
- and scaling in many places.
-*/
-#ifndef __MDCT_MIPSR1_H__
-#define __MDCT_MIPSR1_H__
-
-#ifndef SKIP_CONFIG_H
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#endif
-
-#include "mdct.h"
-#include "kiss_fft.h"
-#include "_kiss_fft_guts.h"
-#include <math.h>
-#include "os_support.h"
-#include "mathops.h"
-#include "stack_alloc.h"
-
-/* Forward MDCT trashes the input array */
-#define OVERRIDE_clt_mdct_forward
-void clt_mdct_forward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 *window, int overlap, int shift, int stride, int arch)
-{
- int i;
- int N, N2, N4;
- VARDECL(kiss_fft_scalar, f);
- VARDECL(kiss_fft_cpx, f2);
- const kiss_fft_state *st = l->kfft[shift];
- const kiss_twiddle_scalar *trig;
- opus_val16 scale;
-#ifdef FIXED_POINT
- /* Allows us to scale with MULT16_32_Q16(), which is faster than
- MULT16_32_Q15() on ARM. */
- int scale_shift = st->scale_shift-1;
-#endif
-
- (void)arch;
-
- SAVE_STACK;
- scale = st->scale;
-
- N = l->n;
- trig = l->trig;
- for (i=0;i<shift;i++)
- {
- N >>= 1;
- trig += N;
- }
- N2 = N>>1;
- N4 = N>>2;
-
- ALLOC(f, N2, kiss_fft_scalar);
- ALLOC(f2, N4, kiss_fft_cpx);
-
- /* Consider the input to be composed of four blocks: [a, b, c, d] */
- /* Window, shuffle, fold */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_scalar * OPUS_RESTRICT xp1 = in+(overlap>>1);
- const kiss_fft_scalar * OPUS_RESTRICT xp2 = in+N2-1+(overlap>>1);
- kiss_fft_scalar * OPUS_RESTRICT yp = f;
- const opus_val16 * OPUS_RESTRICT wp1 = window+(overlap>>1);
- const opus_val16 * OPUS_RESTRICT wp2 = window+(overlap>>1)-1;
- for(i=0;i<((overlap+3)>>2);i++)
- {
- /* Real part arranged as -d-cR, Imag part arranged as -b+aR*/
- *yp++ = S_MUL_ADD(*wp2, xp1[N2],*wp1,*xp2);
- *yp++ = S_MUL_SUB(*wp1, *xp1,*wp2, xp2[-N2]);
- xp1+=2;
- xp2-=2;
- wp1+=2;
- wp2-=2;
- }
- wp1 = window;
- wp2 = window+overlap-1;
- for(;i<N4-((overlap+3)>>2);i++)
- {
- /* Real part arranged as a-bR, Imag part arranged as -c-dR */
- *yp++ = *xp2;
- *yp++ = *xp1;
- xp1+=2;
- xp2-=2;
- }
- for(;i<N4;i++)
- {
- /* Real part arranged as a-bR, Imag part arranged as -c-dR */
- *yp++ = S_MUL_SUB(*wp2, *xp2, *wp1, xp1[-N2]);
- *yp++ = S_MUL_ADD(*wp2, *xp1, *wp1, xp2[N2]);
- xp1+=2;
- xp2-=2;
- wp1+=2;
- wp2-=2;
- }
- }
- /* Pre-rotation */
- {
- kiss_fft_scalar * OPUS_RESTRICT yp = f;
- const kiss_twiddle_scalar *t = &trig[0];
- for(i=0;i<N4;i++)
- {
- kiss_fft_cpx yc;
- kiss_twiddle_scalar t0, t1;
- kiss_fft_scalar re, im, yr, yi;
- t0 = t[i];
- t1 = t[N4+i];
- re = *yp++;
- im = *yp++;
-
- yr = S_MUL_SUB(re,t0,im,t1);
- yi = S_MUL_ADD(im,t0,re,t1);
-
- yc.r = yr;
- yc.i = yi;
- yc.r = PSHR32(MULT16_32_Q16(scale, yc.r), scale_shift);
- yc.i = PSHR32(MULT16_32_Q16(scale, yc.i), scale_shift);
- f2[st->bitrev[i]] = yc;
- }
- }
-
- /* N/4 complex FFT, does not downscale anymore */
- opus_fft_impl(st, f2);
-
- /* Post-rotate */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_cpx * OPUS_RESTRICT fp = f2;
- kiss_fft_scalar * OPUS_RESTRICT yp1 = out;
- kiss_fft_scalar * OPUS_RESTRICT yp2 = out+stride*(N2-1);
- const kiss_twiddle_scalar *t = &trig[0];
- /* Temp pointers to make it really clear to the compiler what we're doing */
- for(i=0;i<N4;i++)
- {
- kiss_fft_scalar yr, yi;
- yr = S_MUL_SUB(fp->i,t[N4+i] , fp->r,t[i]);
- yi = S_MUL_ADD(fp->r,t[N4+i] ,fp->i,t[i]);
- *yp1 = yr;
- *yp2 = yi;
- fp++;
- yp1 += 2*stride;
- yp2 -= 2*stride;
- }
- }
- RESTORE_STACK;
-}
-
-#define OVERRIDE_clt_mdct_backward
-void clt_mdct_backward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scalar * OPUS_RESTRICT out,
- const opus_val16 * OPUS_RESTRICT window, int overlap, int shift, int stride, int arch)
-{
- int i;
- int N, N2, N4;
- const kiss_twiddle_scalar *trig;
-
- (void)arch;
-
- N = l->n;
- trig = l->trig;
- for (i=0;i<shift;i++)
- {
- N >>= 1;
- trig += N;
- }
- N2 = N>>1;
- N4 = N>>2;
-
- /* Pre-rotate */
- {
- /* Temp pointers to make it really clear to the compiler what we're doing */
- const kiss_fft_scalar * OPUS_RESTRICT xp1 = in;
- const kiss_fft_scalar * OPUS_RESTRICT xp2 = in+stride*(N2-1);
- kiss_fft_scalar * OPUS_RESTRICT yp = out+(overlap>>1);
- const kiss_twiddle_scalar * OPUS_RESTRICT t = &trig[0];
- const opus_int16 * OPUS_RESTRICT bitrev = l->kfft[shift]->bitrev;
- for(i=0;i<N4;i++)
- {
- int rev;
- kiss_fft_scalar yr, yi;
- rev = *bitrev++;
- yr = S_MUL_ADD(*xp2, t[i] , *xp1, t[N4+i]);
- yi = S_MUL_SUB(*xp1, t[i] , *xp2, t[N4+i]);
- /* We swap real and imag because we use an FFT instead of an IFFT. */
- yp[2*rev+1] = yr;
- yp[2*rev] = yi;
- /* Storing the pre-rotation directly in the bitrev order. */
- xp1+=2*stride;
- xp2-=2*stride;
- }
- }
-
- opus_fft_impl(l->kfft[shift], (kiss_fft_cpx*)(out+(overlap>>1)));
-
- /* Post-rotate and de-shuffle from both ends of the buffer at once to make
- it in-place. */
- {
- kiss_fft_scalar * OPUS_RESTRICT yp0 = out+(overlap>>1);
- kiss_fft_scalar * OPUS_RESTRICT yp1 = out+(overlap>>1)+N2-2;
- const kiss_twiddle_scalar *t = &trig[0];
- /* Loop to (N4+1)>>1 to handle odd N4. When N4 is odd, the
- middle pair will be computed twice. */
- for(i=0;i<(N4+1)>>1;i++)
- {
- kiss_fft_scalar re, im, yr, yi;
- kiss_twiddle_scalar t0, t1;
- /* We swap real and imag because we're using an FFT instead of an IFFT. */
- re = yp0[1];
- im = yp0[0];
- t0 = t[i];
- t1 = t[N4+i];
- /* We'd scale up by 2 here, but instead it's done when mixing the windows */
- yr = S_MUL_ADD(re,t0 , im,t1);
- yi = S_MUL_SUB(re,t1 , im,t0);
- /* We swap real and imag because we're using an FFT instead of an IFFT. */
- re = yp1[1];
- im = yp1[0];
- yp0[0] = yr;
- yp1[1] = yi;
-
- t0 = t[(N4-i-1)];
- t1 = t[(N2-i-1)];
- /* We'd scale up by 2 here, but instead it's done when mixing the windows */
- yr = S_MUL_ADD(re,t0,im,t1);
- yi = S_MUL_SUB(re,t1,im,t0);
- yp1[0] = yr;
- yp0[1] = yi;
- yp0 += 2;
- yp1 -= 2;
- }
- }
-
- /* Mirror on both sides for TDAC */
- {
- kiss_fft_scalar * OPUS_RESTRICT xp1 = out+overlap-1;
- kiss_fft_scalar * OPUS_RESTRICT yp1 = out;
- const opus_val16 * OPUS_RESTRICT wp1 = window;
- const opus_val16 * OPUS_RESTRICT wp2 = window+overlap-1;
-
- for(i = 0; i < overlap/2; i++)
- {
- kiss_fft_scalar x1, x2;
- x1 = *xp1;
- x2 = *yp1;
- *yp1++ = MULT16_32_Q15(*wp2, x2) - MULT16_32_Q15(*wp1, x1);
- *xp1-- = MULT16_32_Q15(*wp1, x2) + MULT16_32_Q15(*wp2, x1);
- wp1++;
- wp2--;
- }
- }
-}
-#endif /* __MDCT_MIPSR1_H__ */
diff --git a/thirdparty/opus/celt/mips/pitch_mipsr1.h b/thirdparty/opus/celt/mips/pitch_mipsr1.h
deleted file mode 100644
index a9500aff58..0000000000
--- a/thirdparty/opus/celt/mips/pitch_mipsr1.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/**
- @file pitch.h
- @brief Pitch analysis
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef PITCH_MIPSR1_H
-#define PITCH_MIPSR1_H
-
-#define OVERRIDE_DUAL_INNER_PROD
-static inline void dual_inner_prod(const opus_val16 *x, const opus_val16 *y01, const opus_val16 *y02,
- int N, opus_val32 *xy1, opus_val32 *xy2, int arch)
-{
- int j;
- opus_val32 xy01=0;
- opus_val32 xy02=0;
-
- (void)arch;
-
- asm volatile("MULT $ac1, $0, $0");
- asm volatile("MULT $ac2, $0, $0");
- /* Compute the norm of X+Y and X-Y as |X|^2 + |Y|^2 +/- sum(xy) */
- for (j=0;j<N;j++)
- {
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)x[j]), "r" ((int)y01[j]));
- asm volatile("MADD $ac2, %0, %1" : : "r" ((int)x[j]), "r" ((int)y02[j]));
- ++j;
- asm volatile("MADD $ac1, %0, %1" : : "r" ((int)x[j]), "r" ((int)y01[j]));
- asm volatile("MADD $ac2, %0, %1" : : "r" ((int)x[j]), "r" ((int)y02[j]));
- }
- asm volatile ("mflo %0, $ac1": "=r"(xy01));
- asm volatile ("mflo %0, $ac2": "=r"(xy02));
- *xy1 = xy01;
- *xy2 = xy02;
-}
-
-static inline void xcorr_kernel_mips(const opus_val16 * x,
- const opus_val16 * y, opus_val32 sum[4], int len)
-{
- int j;
- opus_val16 y_0, y_1, y_2, y_3;
-
- opus_int64 sum_0, sum_1, sum_2, sum_3;
- sum_0 = (opus_int64)sum[0];
- sum_1 = (opus_int64)sum[1];
- sum_2 = (opus_int64)sum[2];
- sum_3 = (opus_int64)sum[3];
-
- y_3=0; /* gcc doesn't realize that y_3 can't be used uninitialized */
- y_0=*y++;
- y_1=*y++;
- y_2=*y++;
- for (j=0;j<len-3;j+=4)
- {
- opus_val16 tmp;
- tmp = *x++;
- y_3=*y++;
-
- sum_0 = __builtin_mips_madd( sum_0, tmp, y_0);
- sum_1 = __builtin_mips_madd( sum_1, tmp, y_1);
- sum_2 = __builtin_mips_madd( sum_2, tmp, y_2);
- sum_3 = __builtin_mips_madd( sum_3, tmp, y_3);
-
- tmp=*x++;
- y_0=*y++;
-
- sum_0 = __builtin_mips_madd( sum_0, tmp, y_1 );
- sum_1 = __builtin_mips_madd( sum_1, tmp, y_2 );
- sum_2 = __builtin_mips_madd( sum_2, tmp, y_3);
- sum_3 = __builtin_mips_madd( sum_3, tmp, y_0);
-
- tmp=*x++;
- y_1=*y++;
-
- sum_0 = __builtin_mips_madd( sum_0, tmp, y_2 );
- sum_1 = __builtin_mips_madd( sum_1, tmp, y_3 );
- sum_2 = __builtin_mips_madd( sum_2, tmp, y_0);
- sum_3 = __builtin_mips_madd( sum_3, tmp, y_1);
-
-
- tmp=*x++;
- y_2=*y++;
-
- sum_0 = __builtin_mips_madd( sum_0, tmp, y_3 );
- sum_1 = __builtin_mips_madd( sum_1, tmp, y_0 );
- sum_2 = __builtin_mips_madd( sum_2, tmp, y_1);
- sum_3 = __builtin_mips_madd( sum_3, tmp, y_2);
-
- }
- if (j++<len)
- {
- opus_val16 tmp = *x++;
- y_3=*y++;
-
- sum_0 = __builtin_mips_madd( sum_0, tmp, y_0 );
- sum_1 = __builtin_mips_madd( sum_1, tmp, y_1 );
- sum_2 = __builtin_mips_madd( sum_2, tmp, y_2);
- sum_3 = __builtin_mips_madd( sum_3, tmp, y_3);
- }
-
- if (j++<len)
- {
- opus_val16 tmp=*x++;
- y_0=*y++;
-
- sum_0 = __builtin_mips_madd( sum_0, tmp, y_1 );
- sum_1 = __builtin_mips_madd( sum_1, tmp, y_2 );
- sum_2 = __builtin_mips_madd( sum_2, tmp, y_3);
- sum_3 = __builtin_mips_madd( sum_3, tmp, y_0);
- }
-
- if (j<len)
- {
- opus_val16 tmp=*x++;
- y_1=*y++;
-
- sum_0 = __builtin_mips_madd( sum_0, tmp, y_2 );
- sum_1 = __builtin_mips_madd( sum_1, tmp, y_3 );
- sum_2 = __builtin_mips_madd( sum_2, tmp, y_0);
- sum_3 = __builtin_mips_madd( sum_3, tmp, y_1);
-
- }
-
- sum[0] = (opus_val32)sum_0;
- sum[1] = (opus_val32)sum_1;
- sum[2] = (opus_val32)sum_2;
- sum[3] = (opus_val32)sum_3;
-}
-
-#define OVERRIDE_XCORR_KERNEL
-#define xcorr_kernel(x, y, sum, len, arch) \
- ((void)(arch), xcorr_kernel_mips(x, y, sum, len))
-
-#endif /* PITCH_MIPSR1_H */
diff --git a/thirdparty/opus/celt/mips/vq_mipsr1.h b/thirdparty/opus/celt/mips/vq_mipsr1.h
deleted file mode 100644
index 54cef86133..0000000000
--- a/thirdparty/opus/celt/mips/vq_mipsr1.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef __VQ_MIPSR1_H__
-#define __VQ_MIPSR1_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "mathops.h"
-#include "arch.h"
-
-static unsigned extract_collapse_mask(int *iy, int N, int B);
-static void normalise_residual(int * OPUS_RESTRICT iy, celt_norm * OPUS_RESTRICT X, int N, opus_val32 Ryy, opus_val16 gain);
-static void exp_rotation(celt_norm *X, int len, int dir, int stride, int K, int spread);
-static void renormalise_vector_mips(celt_norm *X, int N, opus_val16 gain, int arch);
-
-#define OVERRIDE_vq_exp_rotation1
-static void exp_rotation1(celt_norm *X, int len, int stride, opus_val16 c, opus_val16 s)
-{
- int i;
- opus_val16 ms;
- celt_norm *Xptr;
- Xptr = X;
- ms = NEG16(s);
- for (i=0;i<len-stride;i++)
- {
- celt_norm x1, x2;
- x1 = Xptr[0];
- x2 = Xptr[stride];
- Xptr[stride] = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x2), s, x1), 15));
- *Xptr++ = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x1), ms, x2), 15));
- }
- Xptr = &X[len-2*stride-1];
- for (i=len-2*stride-1;i>=0;i--)
- {
- celt_norm x1, x2;
- x1 = Xptr[0];
- x2 = Xptr[stride];
- Xptr[stride] = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x2), s, x1), 15));
- *Xptr-- = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x1), ms, x2), 15));
- }
-}
-
-#define OVERRIDE_renormalise_vector
-
-#define renormalise_vector(X, N, gain, arch) \
- (renormalise_vector_mips(X, N, gain, arch))
-
-void renormalise_vector_mips(celt_norm *X, int N, opus_val16 gain, int arch)
-{
- int i;
-#ifdef FIXED_POINT
- int k;
-#endif
- opus_val32 E = EPSILON;
- opus_val16 g;
- opus_val32 t;
- celt_norm *xptr = X;
- int X0, X1;
-
- (void)arch;
-
- asm volatile("mult $ac1, $0, $0");
- asm volatile("MTLO %0, $ac1" : :"r" (E));
- /*if(N %4)
- printf("error");*/
- for (i=0;i<N-2;i+=2)
- {
- X0 = (int)*xptr++;
- asm volatile("MADD $ac1, %0, %1" : : "r" (X0), "r" (X0));
-
- X1 = (int)*xptr++;
- asm volatile("MADD $ac1, %0, %1" : : "r" (X1), "r" (X1));
- }
-
- for (;i<N;i++)
- {
- X0 = (int)*xptr++;
- asm volatile("MADD $ac1, %0, %1" : : "r" (X0), "r" (X0));
- }
-
- asm volatile("MFLO %0, $ac1" : "=r" (E));
-#ifdef FIXED_POINT
- k = celt_ilog2(E)>>1;
-#endif
- t = VSHR32(E, 2*(k-7));
- g = MULT16_16_P15(celt_rsqrt_norm(t),gain);
-
- xptr = X;
- for (i=0;i<N;i++)
- {
- *xptr = EXTRACT16(PSHR32(MULT16_16(g, *xptr), k+1));
- xptr++;
- }
- /*return celt_sqrt(E);*/
-}
-
-#endif /* __VQ_MIPSR1_H__ */
diff --git a/thirdparty/opus/celt/modes.c b/thirdparty/opus/celt/modes.c
deleted file mode 100644
index 911686e905..0000000000
--- a/thirdparty/opus/celt/modes.c
+++ /dev/null
@@ -1,442 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Copyright (c) 2008 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "celt.h"
-#include "modes.h"
-#include "rate.h"
-#include "os_support.h"
-#include "stack_alloc.h"
-#include "quant_bands.h"
-#include "cpu_support.h"
-
-static const opus_int16 eband5ms[] = {
-/*0 200 400 600 800 1k 1.2 1.4 1.6 2k 2.4 2.8 3.2 4k 4.8 5.6 6.8 8k 9.6 12k 15.6 */
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 34, 40, 48, 60, 78, 100
-};
-
-/* Alternate tuning (partially derived from Vorbis) */
-#define BITALLOC_SIZE 11
-/* Bit allocation table in units of 1/32 bit/sample (0.1875 dB SNR) */
-static const unsigned char band_allocation[] = {
-/*0 200 400 600 800 1k 1.2 1.4 1.6 2k 2.4 2.8 3.2 4k 4.8 5.6 6.8 8k 9.6 12k 15.6 */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 90, 80, 75, 69, 63, 56, 49, 40, 34, 29, 20, 18, 10, 0, 0, 0, 0, 0, 0, 0, 0,
-110,100, 90, 84, 78, 71, 65, 58, 51, 45, 39, 32, 26, 20, 12, 0, 0, 0, 0, 0, 0,
-118,110,103, 93, 86, 80, 75, 70, 65, 59, 53, 47, 40, 31, 23, 15, 4, 0, 0, 0, 0,
-126,119,112,104, 95, 89, 83, 78, 72, 66, 60, 54, 47, 39, 32, 25, 17, 12, 1, 0, 0,
-134,127,120,114,103, 97, 91, 85, 78, 72, 66, 60, 54, 47, 41, 35, 29, 23, 16, 10, 1,
-144,137,130,124,113,107,101, 95, 88, 82, 76, 70, 64, 57, 51, 45, 39, 33, 26, 15, 1,
-152,145,138,132,123,117,111,105, 98, 92, 86, 80, 74, 67, 61, 55, 49, 43, 36, 20, 1,
-162,155,148,142,133,127,121,115,108,102, 96, 90, 84, 77, 71, 65, 59, 53, 46, 30, 1,
-172,165,158,152,143,137,131,125,118,112,106,100, 94, 87, 81, 75, 69, 63, 56, 45, 20,
-200,200,200,200,200,200,200,200,198,193,188,183,178,173,168,163,158,153,148,129,104,
-};
-
-#ifndef CUSTOM_MODES_ONLY
- #ifdef FIXED_POINT
- #include "static_modes_fixed.h"
- #else
- #include "static_modes_float.h"
- #endif
-#endif /* CUSTOM_MODES_ONLY */
-
-#ifndef M_PI
-#define M_PI 3.141592653
-#endif
-
-#ifdef CUSTOM_MODES
-
-/* Defining 25 critical bands for the full 0-20 kHz audio bandwidth
- Taken from http://ccrma.stanford.edu/~jos/bbt/Bark_Frequency_Scale.html */
-#define BARK_BANDS 25
-static const opus_int16 bark_freq[BARK_BANDS+1] = {
- 0, 100, 200, 300, 400,
- 510, 630, 770, 920, 1080,
- 1270, 1480, 1720, 2000, 2320,
- 2700, 3150, 3700, 4400, 5300,
- 6400, 7700, 9500, 12000, 15500,
- 20000};
-
-static opus_int16 *compute_ebands(opus_int32 Fs, int frame_size, int res, int *nbEBands)
-{
- opus_int16 *eBands;
- int i, j, lin, low, high, nBark, offset=0;
-
- /* All modes that have 2.5 ms short blocks use the same definition */
- if (Fs == 400*(opus_int32)frame_size)
- {
- *nbEBands = sizeof(eband5ms)/sizeof(eband5ms[0])-1;
- eBands = opus_alloc(sizeof(opus_int16)*(*nbEBands+1));
- for (i=0;i<*nbEBands+1;i++)
- eBands[i] = eband5ms[i];
- return eBands;
- }
- /* Find the number of critical bands supported by our sampling rate */
- for (nBark=1;nBark<BARK_BANDS;nBark++)
- if (bark_freq[nBark+1]*2 >= Fs)
- break;
-
- /* Find where the linear part ends (i.e. where the spacing is more than min_width */
- for (lin=0;lin<nBark;lin++)
- if (bark_freq[lin+1]-bark_freq[lin] >= res)
- break;
-
- low = (bark_freq[lin]+res/2)/res;
- high = nBark-lin;
- *nbEBands = low+high;
- eBands = opus_alloc(sizeof(opus_int16)*(*nbEBands+2));
-
- if (eBands==NULL)
- return NULL;
-
- /* Linear spacing (min_width) */
- for (i=0;i<low;i++)
- eBands[i] = i;
- if (low>0)
- offset = eBands[low-1]*res - bark_freq[lin-1];
- /* Spacing follows critical bands */
- for (i=0;i<high;i++)
- {
- int target = bark_freq[lin+i];
- /* Round to an even value */
- eBands[i+low] = (target+offset/2+res)/(2*res)*2;
- offset = eBands[i+low]*res - target;
- }
- /* Enforce the minimum spacing at the boundary */
- for (i=0;i<*nbEBands;i++)
- if (eBands[i] < i)
- eBands[i] = i;
- /* Round to an even value */
- eBands[*nbEBands] = (bark_freq[nBark]+res)/(2*res)*2;
- if (eBands[*nbEBands] > frame_size)
- eBands[*nbEBands] = frame_size;
- for (i=1;i<*nbEBands-1;i++)
- {
- if (eBands[i+1]-eBands[i] < eBands[i]-eBands[i-1])
- {
- eBands[i] -= (2*eBands[i]-eBands[i-1]-eBands[i+1])/2;
- }
- }
- /* Remove any empty bands. */
- for (i=j=0;i<*nbEBands;i++)
- if(eBands[i+1]>eBands[j])
- eBands[++j]=eBands[i+1];
- *nbEBands=j;
-
- for (i=1;i<*nbEBands;i++)
- {
- /* Every band must be smaller than the last band. */
- celt_assert(eBands[i]-eBands[i-1]<=eBands[*nbEBands]-eBands[*nbEBands-1]);
- /* Each band must be no larger than twice the size of the previous one. */
- celt_assert(eBands[i+1]-eBands[i]<=2*(eBands[i]-eBands[i-1]));
- }
-
- return eBands;
-}
-
-static void compute_allocation_table(CELTMode *mode)
-{
- int i, j;
- unsigned char *allocVectors;
- int maxBands = sizeof(eband5ms)/sizeof(eband5ms[0])-1;
-
- mode->nbAllocVectors = BITALLOC_SIZE;
- allocVectors = opus_alloc(sizeof(unsigned char)*(BITALLOC_SIZE*mode->nbEBands));
- if (allocVectors==NULL)
- return;
-
- /* Check for standard mode */
- if (mode->Fs == 400*(opus_int32)mode->shortMdctSize)
- {
- for (i=0;i<BITALLOC_SIZE*mode->nbEBands;i++)
- allocVectors[i] = band_allocation[i];
- mode->allocVectors = allocVectors;
- return;
- }
- /* If not the standard mode, interpolate */
- /* Compute per-codec-band allocation from per-critical-band matrix */
- for (i=0;i<BITALLOC_SIZE;i++)
- {
- for (j=0;j<mode->nbEBands;j++)
- {
- int k;
- for (k=0;k<maxBands;k++)
- {
- if (400*(opus_int32)eband5ms[k] > mode->eBands[j]*(opus_int32)mode->Fs/mode->shortMdctSize)
- break;
- }
- if (k>maxBands-1)
- allocVectors[i*mode->nbEBands+j] = band_allocation[i*maxBands + maxBands-1];
- else {
- opus_int32 a0, a1;
- a1 = mode->eBands[j]*(opus_int32)mode->Fs/mode->shortMdctSize - 400*(opus_int32)eband5ms[k-1];
- a0 = 400*(opus_int32)eband5ms[k] - mode->eBands[j]*(opus_int32)mode->Fs/mode->shortMdctSize;
- allocVectors[i*mode->nbEBands+j] = (a0*band_allocation[i*maxBands+k-1]
- + a1*band_allocation[i*maxBands+k])/(a0+a1);
- }
- }
- }
-
- /*printf ("\n");
- for (i=0;i<BITALLOC_SIZE;i++)
- {
- for (j=0;j<mode->nbEBands;j++)
- printf ("%d ", allocVectors[i*mode->nbEBands+j]);
- printf ("\n");
- }
- exit(0);*/
-
- mode->allocVectors = allocVectors;
-}
-
-#endif /* CUSTOM_MODES */
-
-CELTMode *opus_custom_mode_create(opus_int32 Fs, int frame_size, int *error)
-{
- int i;
-#ifdef CUSTOM_MODES
- CELTMode *mode=NULL;
- int res;
- opus_val16 *window;
- opus_int16 *logN;
- int LM;
- int arch = opus_select_arch();
- ALLOC_STACK;
-#if !defined(VAR_ARRAYS) && !defined(USE_ALLOCA)
- if (global_stack==NULL)
- goto failure;
-#endif
-#endif
-
-#ifndef CUSTOM_MODES_ONLY
- for (i=0;i<TOTAL_MODES;i++)
- {
- int j;
- for (j=0;j<4;j++)
- {
- if (Fs == static_mode_list[i]->Fs &&
- (frame_size<<j) == static_mode_list[i]->shortMdctSize*static_mode_list[i]->nbShortMdcts)
- {
- if (error)
- *error = OPUS_OK;
- return (CELTMode*)static_mode_list[i];
- }
- }
- }
-#endif /* CUSTOM_MODES_ONLY */
-
-#ifndef CUSTOM_MODES
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
-#else
-
- /* The good thing here is that permutation of the arguments will automatically be invalid */
-
- if (Fs < 8000 || Fs > 96000)
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
- if (frame_size < 40 || frame_size > 1024 || frame_size%2!=0)
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
- /* Frames of less than 1ms are not supported. */
- if ((opus_int32)frame_size*1000 < Fs)
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
-
- if ((opus_int32)frame_size*75 >= Fs && (frame_size%16)==0)
- {
- LM = 3;
- } else if ((opus_int32)frame_size*150 >= Fs && (frame_size%8)==0)
- {
- LM = 2;
- } else if ((opus_int32)frame_size*300 >= Fs && (frame_size%4)==0)
- {
- LM = 1;
- } else
- {
- LM = 0;
- }
-
- /* Shorts longer than 3.3ms are not supported. */
- if ((opus_int32)(frame_size>>LM)*300 > Fs)
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
-
- mode = opus_alloc(sizeof(CELTMode));
- if (mode==NULL)
- goto failure;
- mode->Fs = Fs;
-
- /* Pre/de-emphasis depends on sampling rate. The "standard" pre-emphasis
- is defined as A(z) = 1 - 0.85*z^-1 at 48 kHz. Other rates should
- approximate that. */
- if(Fs < 12000) /* 8 kHz */
- {
- mode->preemph[0] = QCONST16(0.3500061035f, 15);
- mode->preemph[1] = -QCONST16(0.1799926758f, 15);
- mode->preemph[2] = QCONST16(0.2719968125f, SIG_SHIFT); /* exact 1/preemph[3] */
- mode->preemph[3] = QCONST16(3.6765136719f, 13);
- } else if(Fs < 24000) /* 16 kHz */
- {
- mode->preemph[0] = QCONST16(0.6000061035f, 15);
- mode->preemph[1] = -QCONST16(0.1799926758f, 15);
- mode->preemph[2] = QCONST16(0.4424998650f, SIG_SHIFT); /* exact 1/preemph[3] */
- mode->preemph[3] = QCONST16(2.2598876953f, 13);
- } else if(Fs < 40000) /* 32 kHz */
- {
- mode->preemph[0] = QCONST16(0.7799987793f, 15);
- mode->preemph[1] = -QCONST16(0.1000061035f, 15);
- mode->preemph[2] = QCONST16(0.7499771125f, SIG_SHIFT); /* exact 1/preemph[3] */
- mode->preemph[3] = QCONST16(1.3333740234f, 13);
- } else /* 48 kHz */
- {
- mode->preemph[0] = QCONST16(0.8500061035f, 15);
- mode->preemph[1] = QCONST16(0.0f, 15);
- mode->preemph[2] = QCONST16(1.f, SIG_SHIFT);
- mode->preemph[3] = QCONST16(1.f, 13);
- }
-
- mode->maxLM = LM;
- mode->nbShortMdcts = 1<<LM;
- mode->shortMdctSize = frame_size/mode->nbShortMdcts;
- res = (mode->Fs+mode->shortMdctSize)/(2*mode->shortMdctSize);
-
- mode->eBands = compute_ebands(Fs, mode->shortMdctSize, res, &mode->nbEBands);
- if (mode->eBands==NULL)
- goto failure;
-#if !defined(SMALL_FOOTPRINT)
- /* Make sure we don't allocate a band larger than our PVQ table.
- 208 should be enough, but let's be paranoid. */
- if ((mode->eBands[mode->nbEBands] - mode->eBands[mode->nbEBands-1])<<LM >
- 208) {
- goto failure;
- }
-#endif
-
- mode->effEBands = mode->nbEBands;
- while (mode->eBands[mode->effEBands] > mode->shortMdctSize)
- mode->effEBands--;
-
- /* Overlap must be divisible by 4 */
- mode->overlap = ((mode->shortMdctSize>>2)<<2);
-
- compute_allocation_table(mode);
- if (mode->allocVectors==NULL)
- goto failure;
-
- window = (opus_val16*)opus_alloc(mode->overlap*sizeof(opus_val16));
- if (window==NULL)
- goto failure;
-
-#ifndef FIXED_POINT
- for (i=0;i<mode->overlap;i++)
- window[i] = Q15ONE*sin(.5*M_PI* sin(.5*M_PI*(i+.5)/mode->overlap) * sin(.5*M_PI*(i+.5)/mode->overlap));
-#else
- for (i=0;i<mode->overlap;i++)
- window[i] = MIN32(32767,floor(.5+32768.*sin(.5*M_PI* sin(.5*M_PI*(i+.5)/mode->overlap) * sin(.5*M_PI*(i+.5)/mode->overlap))));
-#endif
- mode->window = window;
-
- logN = (opus_int16*)opus_alloc(mode->nbEBands*sizeof(opus_int16));
- if (logN==NULL)
- goto failure;
-
- for (i=0;i<mode->nbEBands;i++)
- logN[i] = log2_frac(mode->eBands[i+1]-mode->eBands[i], BITRES);
- mode->logN = logN;
-
- compute_pulse_cache(mode, mode->maxLM);
-
- if (clt_mdct_init(&mode->mdct, 2*mode->shortMdctSize*mode->nbShortMdcts,
- mode->maxLM, arch) == 0)
- goto failure;
-
- if (error)
- *error = OPUS_OK;
-
- return mode;
-failure:
- if (error)
- *error = OPUS_ALLOC_FAIL;
- if (mode!=NULL)
- opus_custom_mode_destroy(mode);
- return NULL;
-#endif /* !CUSTOM_MODES */
-}
-
-#ifdef CUSTOM_MODES
-void opus_custom_mode_destroy(CELTMode *mode)
-{
- int arch = opus_select_arch();
-
- if (mode == NULL)
- return;
-#ifndef CUSTOM_MODES_ONLY
- {
- int i;
- for (i=0;i<TOTAL_MODES;i++)
- {
- if (mode == static_mode_list[i])
- {
- return;
- }
- }
- }
-#endif /* CUSTOM_MODES_ONLY */
- opus_free((opus_int16*)mode->eBands);
- opus_free((opus_int16*)mode->allocVectors);
-
- opus_free((opus_val16*)mode->window);
- opus_free((opus_int16*)mode->logN);
-
- opus_free((opus_int16*)mode->cache.index);
- opus_free((unsigned char*)mode->cache.bits);
- opus_free((unsigned char*)mode->cache.caps);
- clt_mdct_clear(&mode->mdct, arch);
-
- opus_free((CELTMode *)mode);
-}
-#endif
diff --git a/thirdparty/opus/celt/modes.h b/thirdparty/opus/celt/modes.h
deleted file mode 100644
index be813ccc8b..0000000000
--- a/thirdparty/opus/celt/modes.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Copyright (c) 2008 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef MODES_H
-#define MODES_H
-
-#include "opus_types.h"
-#include "celt.h"
-#include "arch.h"
-#include "mdct.h"
-#include "entenc.h"
-#include "entdec.h"
-
-#define MAX_PERIOD 1024
-
-typedef struct {
- int size;
- const opus_int16 *index;
- const unsigned char *bits;
- const unsigned char *caps;
-} PulseCache;
-
-/** Mode definition (opaque)
- @brief Mode definition
- */
-struct OpusCustomMode {
- opus_int32 Fs;
- int overlap;
-
- int nbEBands;
- int effEBands;
- opus_val16 preemph[4];
- const opus_int16 *eBands; /**< Definition for each "pseudo-critical band" */
-
- int maxLM;
- int nbShortMdcts;
- int shortMdctSize;
-
- int nbAllocVectors; /**< Number of lines in the matrix below */
- const unsigned char *allocVectors; /**< Number of bits in each band for several rates */
- const opus_int16 *logN;
-
- const opus_val16 *window;
- mdct_lookup mdct;
- PulseCache cache;
-};
-
-
-#endif
diff --git a/thirdparty/opus/celt/opus_custom_demo.c b/thirdparty/opus/celt/opus_custom_demo.c
deleted file mode 100644
index ae41c0de5a..0000000000
--- a/thirdparty/opus/celt/opus_custom_demo.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus_custom.h"
-#include "arch.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-#define MAX_PACKET 1275
-
-int main(int argc, char *argv[])
-{
- int err;
- char *inFile, *outFile;
- FILE *fin, *fout;
- OpusCustomMode *mode=NULL;
- OpusCustomEncoder *enc;
- OpusCustomDecoder *dec;
- int len;
- opus_int32 frame_size, channels, rate;
- int bytes_per_packet;
- unsigned char data[MAX_PACKET];
- int complexity;
-#if !(defined (FIXED_POINT) && !defined(CUSTOM_MODES)) && defined(RESYNTH)
- int i;
- double rmsd = 0;
-#endif
- int count = 0;
- opus_int32 skip;
- opus_int16 *in, *out;
- if (argc != 9 && argc != 8 && argc != 7)
- {
- fprintf (stderr, "Usage: test_opus_custom <rate> <channels> <frame size> "
- " <bytes per packet> [<complexity> [packet loss rate]] "
- "<input> <output>\n");
- return 1;
- }
-
- rate = (opus_int32)atol(argv[1]);
- channels = atoi(argv[2]);
- frame_size = atoi(argv[3]);
- mode = opus_custom_mode_create(rate, frame_size, NULL);
- if (mode == NULL)
- {
- fprintf(stderr, "failed to create a mode\n");
- return 1;
- }
-
- bytes_per_packet = atoi(argv[4]);
- if (bytes_per_packet < 0 || bytes_per_packet > MAX_PACKET)
- {
- fprintf (stderr, "bytes per packet must be between 0 and %d\n",
- MAX_PACKET);
- return 1;
- }
-
- inFile = argv[argc-2];
- fin = fopen(inFile, "rb");
- if (!fin)
- {
- fprintf (stderr, "Could not open input file %s\n", argv[argc-2]);
- return 1;
- }
- outFile = argv[argc-1];
- fout = fopen(outFile, "wb+");
- if (!fout)
- {
- fprintf (stderr, "Could not open output file %s\n", argv[argc-1]);
- fclose(fin);
- return 1;
- }
-
- enc = opus_custom_encoder_create(mode, channels, &err);
- if (err != 0)
- {
- fprintf(stderr, "Failed to create the encoder: %s\n", opus_strerror(err));
- fclose(fin);
- fclose(fout);
- return 1;
- }
- dec = opus_custom_decoder_create(mode, channels, &err);
- if (err != 0)
- {
- fprintf(stderr, "Failed to create the decoder: %s\n", opus_strerror(err));
- fclose(fin);
- fclose(fout);
- return 1;
- }
- opus_custom_decoder_ctl(dec, OPUS_GET_LOOKAHEAD(&skip));
-
- if (argc>7)
- {
- complexity=atoi(argv[5]);
- opus_custom_encoder_ctl(enc,OPUS_SET_COMPLEXITY(complexity));
- }
-
- in = (opus_int16*)malloc(frame_size*channels*sizeof(opus_int16));
- out = (opus_int16*)malloc(frame_size*channels*sizeof(opus_int16));
-
- while (!feof(fin))
- {
- int ret;
- err = fread(in, sizeof(short), frame_size*channels, fin);
- if (feof(fin))
- break;
- len = opus_custom_encode(enc, in, frame_size, data, bytes_per_packet);
- if (len <= 0)
- fprintf (stderr, "opus_custom_encode() failed: %s\n", opus_strerror(len));
-
- /* This is for simulating bit errors */
-#if 0
- int errors = 0;
- int eid = 0;
- /* This simulates random bit error */
- for (i=0;i<len*8;i++)
- {
- if (rand()%atoi(argv[8])==0)
- {
- if (i<64)
- {
- errors++;
- eid = i;
- }
- data[i/8] ^= 1<<(7-(i%8));
- }
- }
- if (errors == 1)
- data[eid/8] ^= 1<<(7-(eid%8));
- else if (errors%2 == 1)
- data[rand()%8] ^= 1<<rand()%8;
-#endif
-
-#if 1 /* Set to zero to use the encoder's output instead */
- /* This is to simulate packet loss */
- if (argc==9 && rand()%1000<atoi(argv[argc-3]))
- /*if (errors && (errors%2==0))*/
- ret = opus_custom_decode(dec, NULL, len, out, frame_size);
- else
- ret = opus_custom_decode(dec, data, len, out, frame_size);
- if (ret < 0)
- fprintf(stderr, "opus_custom_decode() failed: %s\n", opus_strerror(ret));
-#else
- for (i=0;i<ret*channels;i++)
- out[i] = in[i];
-#endif
-#if !(defined (FIXED_POINT) && !defined(CUSTOM_MODES)) && defined(RESYNTH)
- for (i=0;i<ret*channels;i++)
- {
- rmsd += (in[i]-out[i])*1.0*(in[i]-out[i]);
- /*out[i] -= in[i];*/
- }
-#endif
- count++;
- fwrite(out+skip*channels, sizeof(short), (ret-skip)*channels, fout);
- skip = 0;
- }
- PRINT_MIPS(stderr);
-
- opus_custom_encoder_destroy(enc);
- opus_custom_decoder_destroy(dec);
- fclose(fin);
- fclose(fout);
- opus_custom_mode_destroy(mode);
- free(in);
- free(out);
-#if !(defined (FIXED_POINT) && !defined(CUSTOM_MODES)) && defined(RESYNTH)
- if (rmsd > 0)
- {
- rmsd = sqrt(rmsd/(1.0*frame_size*channels*count));
- fprintf (stderr, "Error: encoder doesn't match decoder\n");
- fprintf (stderr, "RMS mismatch is %f\n", rmsd);
- return 1;
- } else {
- fprintf (stderr, "Encoder matches decoder!!\n");
- }
-#endif
- return 0;
-}
-
diff --git a/thirdparty/opus/celt/os_support.h b/thirdparty/opus/celt/os_support.h
deleted file mode 100644
index a2171971e9..0000000000
--- a/thirdparty/opus/celt/os_support.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (C) 2007 Jean-Marc Valin
-
- File: os_support.h
- This is the (tiny) OS abstraction layer. Aside from math.h, this is the
- only place where system headers are allowed.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef OS_SUPPORT_H
-#define OS_SUPPORT_H
-
-#ifdef CUSTOM_SUPPORT
-# include "custom_support.h"
-#endif
-
-#include "opus_types.h"
-#include "opus_defines.h"
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-/** Opus wrapper for malloc(). To do your own dynamic allocation, all you need to do is replace this function and opus_free */
-#ifndef OVERRIDE_OPUS_ALLOC
-static OPUS_INLINE void *opus_alloc (size_t size)
-{
- return malloc(size);
-}
-#endif
-
-/** Same as celt_alloc(), except that the area is only needed inside a CELT call (might cause problem with wideband though) */
-#ifndef OVERRIDE_OPUS_ALLOC_SCRATCH
-static OPUS_INLINE void *opus_alloc_scratch (size_t size)
-{
- /* Scratch space doesn't need to be cleared */
- return opus_alloc(size);
-}
-#endif
-
-/** Opus wrapper for free(). To do your own dynamic allocation, all you need to do is replace this function and opus_alloc */
-#ifndef OVERRIDE_OPUS_FREE
-static OPUS_INLINE void opus_free (void *ptr)
-{
- free(ptr);
-}
-#endif
-
-/** Copy n elements from src to dst. The 0* term provides compile-time type checking */
-#ifndef OVERRIDE_OPUS_COPY
-#define OPUS_COPY(dst, src, n) (memcpy((dst), (src), (n)*sizeof(*(dst)) + 0*((dst)-(src)) ))
-#endif
-
-/** Copy n elements from src to dst, allowing overlapping regions. The 0* term
- provides compile-time type checking */
-#ifndef OVERRIDE_OPUS_MOVE
-#define OPUS_MOVE(dst, src, n) (memmove((dst), (src), (n)*sizeof(*(dst)) + 0*((dst)-(src)) ))
-#endif
-
-/** Set n elements of dst to zero */
-#ifndef OVERRIDE_OPUS_CLEAR
-#define OPUS_CLEAR(dst, n) (memset((dst), 0, (n)*sizeof(*(dst))))
-#endif
-
-/*#ifdef __GNUC__
-#pragma GCC poison printf sprintf
-#pragma GCC poison malloc free realloc calloc
-#endif*/
-
-#endif /* OS_SUPPORT_H */
-
diff --git a/thirdparty/opus/celt/pitch.c b/thirdparty/opus/celt/pitch.c
deleted file mode 100644
index bf46e7d562..0000000000
--- a/thirdparty/opus/celt/pitch.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/**
- @file pitch.c
- @brief Pitch analysis
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "pitch.h"
-#include "os_support.h"
-#include "modes.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "celt_lpc.h"
-
-static void find_best_pitch(opus_val32 *xcorr, opus_val16 *y, int len,
- int max_pitch, int *best_pitch
-#ifdef FIXED_POINT
- , int yshift, opus_val32 maxcorr
-#endif
- )
-{
- int i, j;
- opus_val32 Syy=1;
- opus_val16 best_num[2];
- opus_val32 best_den[2];
-#ifdef FIXED_POINT
- int xshift;
-
- xshift = celt_ilog2(maxcorr)-14;
-#endif
-
- best_num[0] = -1;
- best_num[1] = -1;
- best_den[0] = 0;
- best_den[1] = 0;
- best_pitch[0] = 0;
- best_pitch[1] = 1;
- for (j=0;j<len;j++)
- Syy = ADD32(Syy, SHR32(MULT16_16(y[j],y[j]), yshift));
- for (i=0;i<max_pitch;i++)
- {
- if (xcorr[i]>0)
- {
- opus_val16 num;
- opus_val32 xcorr16;
- xcorr16 = EXTRACT16(VSHR32(xcorr[i], xshift));
-#ifndef FIXED_POINT
- /* Considering the range of xcorr16, this should avoid both underflows
- and overflows (inf) when squaring xcorr16 */
- xcorr16 *= 1e-12f;
-#endif
- num = MULT16_16_Q15(xcorr16,xcorr16);
- if (MULT16_32_Q15(num,best_den[1]) > MULT16_32_Q15(best_num[1],Syy))
- {
- if (MULT16_32_Q15(num,best_den[0]) > MULT16_32_Q15(best_num[0],Syy))
- {
- best_num[1] = best_num[0];
- best_den[1] = best_den[0];
- best_pitch[1] = best_pitch[0];
- best_num[0] = num;
- best_den[0] = Syy;
- best_pitch[0] = i;
- } else {
- best_num[1] = num;
- best_den[1] = Syy;
- best_pitch[1] = i;
- }
- }
- }
- Syy += SHR32(MULT16_16(y[i+len],y[i+len]),yshift) - SHR32(MULT16_16(y[i],y[i]),yshift);
- Syy = MAX32(1, Syy);
- }
-}
-
-static void celt_fir5(const opus_val16 *x,
- const opus_val16 *num,
- opus_val16 *y,
- int N,
- opus_val16 *mem)
-{
- int i;
- opus_val16 num0, num1, num2, num3, num4;
- opus_val32 mem0, mem1, mem2, mem3, mem4;
- num0=num[0];
- num1=num[1];
- num2=num[2];
- num3=num[3];
- num4=num[4];
- mem0=mem[0];
- mem1=mem[1];
- mem2=mem[2];
- mem3=mem[3];
- mem4=mem[4];
- for (i=0;i<N;i++)
- {
- opus_val32 sum = SHL32(EXTEND32(x[i]), SIG_SHIFT);
- sum = MAC16_16(sum,num0,mem0);
- sum = MAC16_16(sum,num1,mem1);
- sum = MAC16_16(sum,num2,mem2);
- sum = MAC16_16(sum,num3,mem3);
- sum = MAC16_16(sum,num4,mem4);
- mem4 = mem3;
- mem3 = mem2;
- mem2 = mem1;
- mem1 = mem0;
- mem0 = x[i];
- y[i] = ROUND16(sum, SIG_SHIFT);
- }
- mem[0]=mem0;
- mem[1]=mem1;
- mem[2]=mem2;
- mem[3]=mem3;
- mem[4]=mem4;
-}
-
-
-void pitch_downsample(celt_sig * OPUS_RESTRICT x[], opus_val16 * OPUS_RESTRICT x_lp,
- int len, int C, int arch)
-{
- int i;
- opus_val32 ac[5];
- opus_val16 tmp=Q15ONE;
- opus_val16 lpc[4], mem[5]={0,0,0,0,0};
- opus_val16 lpc2[5];
- opus_val16 c1 = QCONST16(.8f,15);
-#ifdef FIXED_POINT
- int shift;
- opus_val32 maxabs = celt_maxabs32(x[0], len);
- if (C==2)
- {
- opus_val32 maxabs_1 = celt_maxabs32(x[1], len);
- maxabs = MAX32(maxabs, maxabs_1);
- }
- if (maxabs<1)
- maxabs=1;
- shift = celt_ilog2(maxabs)-10;
- if (shift<0)
- shift=0;
- if (C==2)
- shift++;
-#endif
- for (i=1;i<len>>1;i++)
- x_lp[i] = SHR32(HALF32(HALF32(x[0][(2*i-1)]+x[0][(2*i+1)])+x[0][2*i]), shift);
- x_lp[0] = SHR32(HALF32(HALF32(x[0][1])+x[0][0]), shift);
- if (C==2)
- {
- for (i=1;i<len>>1;i++)
- x_lp[i] += SHR32(HALF32(HALF32(x[1][(2*i-1)]+x[1][(2*i+1)])+x[1][2*i]), shift);
- x_lp[0] += SHR32(HALF32(HALF32(x[1][1])+x[1][0]), shift);
- }
-
- _celt_autocorr(x_lp, ac, NULL, 0,
- 4, len>>1, arch);
-
- /* Noise floor -40 dB */
-#ifdef FIXED_POINT
- ac[0] += SHR32(ac[0],13);
-#else
- ac[0] *= 1.0001f;
-#endif
- /* Lag windowing */
- for (i=1;i<=4;i++)
- {
- /*ac[i] *= exp(-.5*(2*M_PI*.002*i)*(2*M_PI*.002*i));*/
-#ifdef FIXED_POINT
- ac[i] -= MULT16_32_Q15(2*i*i, ac[i]);
-#else
- ac[i] -= ac[i]*(.008f*i)*(.008f*i);
-#endif
- }
-
- _celt_lpc(lpc, ac, 4);
- for (i=0;i<4;i++)
- {
- tmp = MULT16_16_Q15(QCONST16(.9f,15), tmp);
- lpc[i] = MULT16_16_Q15(lpc[i], tmp);
- }
- /* Add a zero */
- lpc2[0] = lpc[0] + QCONST16(.8f,SIG_SHIFT);
- lpc2[1] = lpc[1] + MULT16_16_Q15(c1,lpc[0]);
- lpc2[2] = lpc[2] + MULT16_16_Q15(c1,lpc[1]);
- lpc2[3] = lpc[3] + MULT16_16_Q15(c1,lpc[2]);
- lpc2[4] = MULT16_16_Q15(c1,lpc[3]);
- celt_fir5(x_lp, lpc2, x_lp, len>>1, mem);
-}
-
-/* Pure C implementation. */
-#ifdef FIXED_POINT
-opus_val32
-#else
-void
-#endif
-#if defined(OVERRIDE_PITCH_XCORR)
-celt_pitch_xcorr_c(const opus_val16 *_x, const opus_val16 *_y,
- opus_val32 *xcorr, int len, int max_pitch)
-#else
-celt_pitch_xcorr(const opus_val16 *_x, const opus_val16 *_y,
- opus_val32 *xcorr, int len, int max_pitch, int arch)
-#endif
-{
-
-#if 0 /* This is a simple version of the pitch correlation that should work
- well on DSPs like Blackfin and TI C5x/C6x */
- int i, j;
-#ifdef FIXED_POINT
- opus_val32 maxcorr=1;
-#endif
-#if !defined(OVERRIDE_PITCH_XCORR)
- (void)arch;
-#endif
- for (i=0;i<max_pitch;i++)
- {
- opus_val32 sum = 0;
- for (j=0;j<len;j++)
- sum = MAC16_16(sum, _x[j], _y[i+j]);
- xcorr[i] = sum;
-#ifdef FIXED_POINT
- maxcorr = MAX32(maxcorr, sum);
-#endif
- }
-#ifdef FIXED_POINT
- return maxcorr;
-#endif
-
-#else /* Unrolled version of the pitch correlation -- runs faster on x86 and ARM */
- int i;
- /*The EDSP version requires that max_pitch is at least 1, and that _x is
- 32-bit aligned.
- Since it's hard to put asserts in assembly, put them here.*/
-#ifdef FIXED_POINT
- opus_val32 maxcorr=1;
-#endif
- celt_assert(max_pitch>0);
- celt_assert((((unsigned char *)_x-(unsigned char *)NULL)&3)==0);
- for (i=0;i<max_pitch-3;i+=4)
- {
- opus_val32 sum[4]={0,0,0,0};
-#if defined(OVERRIDE_PITCH_XCORR)
- xcorr_kernel_c(_x, _y+i, sum, len);
-#else
- xcorr_kernel(_x, _y+i, sum, len, arch);
-#endif
- xcorr[i]=sum[0];
- xcorr[i+1]=sum[1];
- xcorr[i+2]=sum[2];
- xcorr[i+3]=sum[3];
-#ifdef FIXED_POINT
- sum[0] = MAX32(sum[0], sum[1]);
- sum[2] = MAX32(sum[2], sum[3]);
- sum[0] = MAX32(sum[0], sum[2]);
- maxcorr = MAX32(maxcorr, sum[0]);
-#endif
- }
- /* In case max_pitch isn't a multiple of 4, do non-unrolled version. */
- for (;i<max_pitch;i++)
- {
- opus_val32 sum;
-#if defined(OVERRIDE_PITCH_XCORR)
- sum = celt_inner_prod_c(_x, _y+i, len);
-#else
- sum = celt_inner_prod(_x, _y+i, len, arch);
-#endif
- xcorr[i] = sum;
-#ifdef FIXED_POINT
- maxcorr = MAX32(maxcorr, sum);
-#endif
- }
-#ifdef FIXED_POINT
- return maxcorr;
-#endif
-#endif
-}
-
-void pitch_search(const opus_val16 * OPUS_RESTRICT x_lp, opus_val16 * OPUS_RESTRICT y,
- int len, int max_pitch, int *pitch, int arch)
-{
- int i, j;
- int lag;
- int best_pitch[2]={0,0};
- VARDECL(opus_val16, x_lp4);
- VARDECL(opus_val16, y_lp4);
- VARDECL(opus_val32, xcorr);
-#ifdef FIXED_POINT
- opus_val32 maxcorr;
- opus_val32 xmax, ymax;
- int shift=0;
-#endif
- int offset;
-
- SAVE_STACK;
-
- celt_assert(len>0);
- celt_assert(max_pitch>0);
- lag = len+max_pitch;
-
- ALLOC(x_lp4, len>>2, opus_val16);
- ALLOC(y_lp4, lag>>2, opus_val16);
- ALLOC(xcorr, max_pitch>>1, opus_val32);
-
- /* Downsample by 2 again */
- for (j=0;j<len>>2;j++)
- x_lp4[j] = x_lp[2*j];
- for (j=0;j<lag>>2;j++)
- y_lp4[j] = y[2*j];
-
-#ifdef FIXED_POINT
- xmax = celt_maxabs16(x_lp4, len>>2);
- ymax = celt_maxabs16(y_lp4, lag>>2);
- shift = celt_ilog2(MAX32(1, MAX32(xmax, ymax)))-11;
- if (shift>0)
- {
- for (j=0;j<len>>2;j++)
- x_lp4[j] = SHR16(x_lp4[j], shift);
- for (j=0;j<lag>>2;j++)
- y_lp4[j] = SHR16(y_lp4[j], shift);
- /* Use double the shift for a MAC */
- shift *= 2;
- } else {
- shift = 0;
- }
-#endif
-
- /* Coarse search with 4x decimation */
-
-#ifdef FIXED_POINT
- maxcorr =
-#endif
- celt_pitch_xcorr(x_lp4, y_lp4, xcorr, len>>2, max_pitch>>2, arch);
-
- find_best_pitch(xcorr, y_lp4, len>>2, max_pitch>>2, best_pitch
-#ifdef FIXED_POINT
- , 0, maxcorr
-#endif
- );
-
- /* Finer search with 2x decimation */
-#ifdef FIXED_POINT
- maxcorr=1;
-#endif
- for (i=0;i<max_pitch>>1;i++)
- {
- opus_val32 sum;
- xcorr[i] = 0;
- if (abs(i-2*best_pitch[0])>2 && abs(i-2*best_pitch[1])>2)
- continue;
-#ifdef FIXED_POINT
- sum = 0;
- for (j=0;j<len>>1;j++)
- sum += SHR32(MULT16_16(x_lp[j],y[i+j]), shift);
-#else
- sum = celt_inner_prod_c(x_lp, y+i, len>>1);
-#endif
- xcorr[i] = MAX32(-1, sum);
-#ifdef FIXED_POINT
- maxcorr = MAX32(maxcorr, sum);
-#endif
- }
- find_best_pitch(xcorr, y, len>>1, max_pitch>>1, best_pitch
-#ifdef FIXED_POINT
- , shift+1, maxcorr
-#endif
- );
-
- /* Refine by pseudo-interpolation */
- if (best_pitch[0]>0 && best_pitch[0]<(max_pitch>>1)-1)
- {
- opus_val32 a, b, c;
- a = xcorr[best_pitch[0]-1];
- b = xcorr[best_pitch[0]];
- c = xcorr[best_pitch[0]+1];
- if ((c-a) > MULT16_32_Q15(QCONST16(.7f,15),b-a))
- offset = 1;
- else if ((a-c) > MULT16_32_Q15(QCONST16(.7f,15),b-c))
- offset = -1;
- else
- offset = 0;
- } else {
- offset = 0;
- }
- *pitch = 2*best_pitch[0]-offset;
-
- RESTORE_STACK;
-}
-
-#ifdef FIXED_POINT
-static opus_val16 compute_pitch_gain(opus_val32 xy, opus_val32 xx, opus_val32 yy)
-{
- opus_val32 x2y2;
- int sx, sy, shift;
- opus_val32 g;
- opus_val16 den;
- if (xy == 0 || xx == 0 || yy == 0)
- return 0;
- sx = celt_ilog2(xx)-14;
- sy = celt_ilog2(yy)-14;
- shift = sx + sy;
- x2y2 = MULT16_16_Q14(VSHR32(xx, sx), VSHR32(yy, sy));
- if (shift & 1) {
- if (x2y2 < 32768)
- {
- x2y2 <<= 1;
- shift--;
- } else {
- x2y2 >>= 1;
- shift++;
- }
- }
- den = celt_rsqrt_norm(x2y2);
- g = MULT16_32_Q15(den, xy);
- g = VSHR32(g, (shift>>1)-1);
- return EXTRACT16(MIN32(g, Q15ONE));
-}
-#else
-static opus_val16 compute_pitch_gain(opus_val32 xy, opus_val32 xx, opus_val32 yy)
-{
- return xy/celt_sqrt(1+xx*yy);
-}
-#endif
-
-static const int second_check[16] = {0, 0, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 5, 2, 3, 2};
-opus_val16 remove_doubling(opus_val16 *x, int maxperiod, int minperiod,
- int N, int *T0_, int prev_period, opus_val16 prev_gain, int arch)
-{
- int k, i, T, T0;
- opus_val16 g, g0;
- opus_val16 pg;
- opus_val32 xy,xx,yy,xy2;
- opus_val32 xcorr[3];
- opus_val32 best_xy, best_yy;
- int offset;
- int minperiod0;
- VARDECL(opus_val32, yy_lookup);
- SAVE_STACK;
-
- minperiod0 = minperiod;
- maxperiod /= 2;
- minperiod /= 2;
- *T0_ /= 2;
- prev_period /= 2;
- N /= 2;
- x += maxperiod;
- if (*T0_>=maxperiod)
- *T0_=maxperiod-1;
-
- T = T0 = *T0_;
- ALLOC(yy_lookup, maxperiod+1, opus_val32);
- dual_inner_prod(x, x, x-T0, N, &xx, &xy, arch);
- yy_lookup[0] = xx;
- yy=xx;
- for (i=1;i<=maxperiod;i++)
- {
- yy = yy+MULT16_16(x[-i],x[-i])-MULT16_16(x[N-i],x[N-i]);
- yy_lookup[i] = MAX32(0, yy);
- }
- yy = yy_lookup[T0];
- best_xy = xy;
- best_yy = yy;
- g = g0 = compute_pitch_gain(xy, xx, yy);
- /* Look for any pitch at T/k */
- for (k=2;k<=15;k++)
- {
- int T1, T1b;
- opus_val16 g1;
- opus_val16 cont=0;
- opus_val16 thresh;
- T1 = celt_udiv(2*T0+k, 2*k);
- if (T1 < minperiod)
- break;
- /* Look for another strong correlation at T1b */
- if (k==2)
- {
- if (T1+T0>maxperiod)
- T1b = T0;
- else
- T1b = T0+T1;
- } else
- {
- T1b = celt_udiv(2*second_check[k]*T0+k, 2*k);
- }
- dual_inner_prod(x, &x[-T1], &x[-T1b], N, &xy, &xy2, arch);
- xy = HALF32(xy + xy2);
- yy = HALF32(yy_lookup[T1] + yy_lookup[T1b]);
- g1 = compute_pitch_gain(xy, xx, yy);
- if (abs(T1-prev_period)<=1)
- cont = prev_gain;
- else if (abs(T1-prev_period)<=2 && 5*k*k < T0)
- cont = HALF16(prev_gain);
- else
- cont = 0;
- thresh = MAX16(QCONST16(.3f,15), MULT16_16_Q15(QCONST16(.7f,15),g0)-cont);
- /* Bias against very high pitch (very short period) to avoid false-positives
- due to short-term correlation */
- if (T1<3*minperiod)
- thresh = MAX16(QCONST16(.4f,15), MULT16_16_Q15(QCONST16(.85f,15),g0)-cont);
- else if (T1<2*minperiod)
- thresh = MAX16(QCONST16(.5f,15), MULT16_16_Q15(QCONST16(.9f,15),g0)-cont);
- if (g1 > thresh)
- {
- best_xy = xy;
- best_yy = yy;
- T = T1;
- g = g1;
- }
- }
- best_xy = MAX32(0, best_xy);
- if (best_yy <= best_xy)
- pg = Q15ONE;
- else
- pg = SHR32(frac_div32(best_xy,best_yy+1),16);
-
- for (k=0;k<3;k++)
- xcorr[k] = celt_inner_prod(x, x-(T+k-1), N, arch);
- if ((xcorr[2]-xcorr[0]) > MULT16_32_Q15(QCONST16(.7f,15),xcorr[1]-xcorr[0]))
- offset = 1;
- else if ((xcorr[0]-xcorr[2]) > MULT16_32_Q15(QCONST16(.7f,15),xcorr[1]-xcorr[2]))
- offset = -1;
- else
- offset = 0;
- if (pg > g)
- pg = g;
- *T0_ = 2*T+offset;
-
- if (*T0_<minperiod0)
- *T0_=minperiod0;
- RESTORE_STACK;
- return pg;
-}
diff --git a/thirdparty/opus/celt/pitch.h b/thirdparty/opus/celt/pitch.h
deleted file mode 100644
index d3503532a0..0000000000
--- a/thirdparty/opus/celt/pitch.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/**
- @file pitch.h
- @brief Pitch analysis
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef PITCH_H
-#define PITCH_H
-
-#include "modes.h"
-#include "cpu_support.h"
-
-#if (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT)) \
- || ((defined(OPUS_X86_MAY_HAVE_SSE4_1) || defined(OPUS_X86_MAY_HAVE_SSE2)) && defined(FIXED_POINT))
-#include "x86/pitch_sse.h"
-#endif
-
-#if defined(MIPSr1_ASM)
-#include "mips/pitch_mipsr1.h"
-#endif
-
-#if ((defined(OPUS_ARM_ASM) && defined(FIXED_POINT)) \
- || defined(OPUS_ARM_MAY_HAVE_NEON_INTR))
-# include "arm/pitch_arm.h"
-#endif
-
-void pitch_downsample(celt_sig * OPUS_RESTRICT x[], opus_val16 * OPUS_RESTRICT x_lp,
- int len, int C, int arch);
-
-void pitch_search(const opus_val16 * OPUS_RESTRICT x_lp, opus_val16 * OPUS_RESTRICT y,
- int len, int max_pitch, int *pitch, int arch);
-
-opus_val16 remove_doubling(opus_val16 *x, int maxperiod, int minperiod,
- int N, int *T0, int prev_period, opus_val16 prev_gain, int arch);
-
-
-/* OPT: This is the kernel you really want to optimize. It gets used a lot
- by the prefilter and by the PLC. */
-static OPUS_INLINE void xcorr_kernel_c(const opus_val16 * x, const opus_val16 * y, opus_val32 sum[4], int len)
-{
- int j;
- opus_val16 y_0, y_1, y_2, y_3;
- celt_assert(len>=3);
- y_3=0; /* gcc doesn't realize that y_3 can't be used uninitialized */
- y_0=*y++;
- y_1=*y++;
- y_2=*y++;
- for (j=0;j<len-3;j+=4)
- {
- opus_val16 tmp;
- tmp = *x++;
- y_3=*y++;
- sum[0] = MAC16_16(sum[0],tmp,y_0);
- sum[1] = MAC16_16(sum[1],tmp,y_1);
- sum[2] = MAC16_16(sum[2],tmp,y_2);
- sum[3] = MAC16_16(sum[3],tmp,y_3);
- tmp=*x++;
- y_0=*y++;
- sum[0] = MAC16_16(sum[0],tmp,y_1);
- sum[1] = MAC16_16(sum[1],tmp,y_2);
- sum[2] = MAC16_16(sum[2],tmp,y_3);
- sum[3] = MAC16_16(sum[3],tmp,y_0);
- tmp=*x++;
- y_1=*y++;
- sum[0] = MAC16_16(sum[0],tmp,y_2);
- sum[1] = MAC16_16(sum[1],tmp,y_3);
- sum[2] = MAC16_16(sum[2],tmp,y_0);
- sum[3] = MAC16_16(sum[3],tmp,y_1);
- tmp=*x++;
- y_2=*y++;
- sum[0] = MAC16_16(sum[0],tmp,y_3);
- sum[1] = MAC16_16(sum[1],tmp,y_0);
- sum[2] = MAC16_16(sum[2],tmp,y_1);
- sum[3] = MAC16_16(sum[3],tmp,y_2);
- }
- if (j++<len)
- {
- opus_val16 tmp = *x++;
- y_3=*y++;
- sum[0] = MAC16_16(sum[0],tmp,y_0);
- sum[1] = MAC16_16(sum[1],tmp,y_1);
- sum[2] = MAC16_16(sum[2],tmp,y_2);
- sum[3] = MAC16_16(sum[3],tmp,y_3);
- }
- if (j++<len)
- {
- opus_val16 tmp=*x++;
- y_0=*y++;
- sum[0] = MAC16_16(sum[0],tmp,y_1);
- sum[1] = MAC16_16(sum[1],tmp,y_2);
- sum[2] = MAC16_16(sum[2],tmp,y_3);
- sum[3] = MAC16_16(sum[3],tmp,y_0);
- }
- if (j<len)
- {
- opus_val16 tmp=*x++;
- y_1=*y++;
- sum[0] = MAC16_16(sum[0],tmp,y_2);
- sum[1] = MAC16_16(sum[1],tmp,y_3);
- sum[2] = MAC16_16(sum[2],tmp,y_0);
- sum[3] = MAC16_16(sum[3],tmp,y_1);
- }
-}
-
-#ifndef OVERRIDE_XCORR_KERNEL
-#define xcorr_kernel(x, y, sum, len, arch) \
- ((void)(arch),xcorr_kernel_c(x, y, sum, len))
-#endif /* OVERRIDE_XCORR_KERNEL */
-
-
-static OPUS_INLINE void dual_inner_prod_c(const opus_val16 *x, const opus_val16 *y01, const opus_val16 *y02,
- int N, opus_val32 *xy1, opus_val32 *xy2)
-{
- int i;
- opus_val32 xy01=0;
- opus_val32 xy02=0;
- for (i=0;i<N;i++)
- {
- xy01 = MAC16_16(xy01, x[i], y01[i]);
- xy02 = MAC16_16(xy02, x[i], y02[i]);
- }
- *xy1 = xy01;
- *xy2 = xy02;
-}
-
-#ifndef OVERRIDE_DUAL_INNER_PROD
-# define dual_inner_prod(x, y01, y02, N, xy1, xy2, arch) \
- ((void)(arch),dual_inner_prod_c(x, y01, y02, N, xy1, xy2))
-#endif
-
-/*We make sure a C version is always available for cases where the overhead of
- vectorization and passing around an arch flag aren't worth it.*/
-static OPUS_INLINE opus_val32 celt_inner_prod_c(const opus_val16 *x,
- const opus_val16 *y, int N)
-{
- int i;
- opus_val32 xy=0;
- for (i=0;i<N;i++)
- xy = MAC16_16(xy, x[i], y[i]);
- return xy;
-}
-
-#if !defined(OVERRIDE_CELT_INNER_PROD)
-# define celt_inner_prod(x, y, N, arch) \
- ((void)(arch),celt_inner_prod_c(x, y, N))
-#endif
-
-#ifdef NON_STATIC_COMB_FILTER_CONST_C
-void comb_filter_const_c(opus_val32 *y, opus_val32 *x, int T, int N,
- opus_val16 g10, opus_val16 g11, opus_val16 g12);
-#endif
-
-
-#ifdef FIXED_POINT
-opus_val32
-#else
-void
-#endif
-celt_pitch_xcorr_c(const opus_val16 *_x, const opus_val16 *_y,
- opus_val32 *xcorr, int len, int max_pitch);
-
-#if !defined(OVERRIDE_PITCH_XCORR)
-#ifdef FIXED_POINT
-opus_val32
-#else
-void
-#endif
-celt_pitch_xcorr(const opus_val16 *_x, const opus_val16 *_y,
- opus_val32 *xcorr, int len, int max_pitch, int arch);
-
-#endif
-
-#endif
diff --git a/thirdparty/opus/celt/quant_bands.c b/thirdparty/opus/celt/quant_bands.c
deleted file mode 100644
index 95076e0af2..0000000000
--- a/thirdparty/opus/celt/quant_bands.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "quant_bands.h"
-#include "laplace.h"
-#include <math.h>
-#include "os_support.h"
-#include "arch.h"
-#include "mathops.h"
-#include "stack_alloc.h"
-#include "rate.h"
-
-#ifdef FIXED_POINT
-/* Mean energy in each band quantized in Q4 */
-const signed char eMeans[25] = {
- 103,100, 92, 85, 81,
- 77, 72, 70, 78, 75,
- 73, 71, 78, 74, 69,
- 72, 70, 74, 76, 71,
- 60, 60, 60, 60, 60
-};
-#else
-/* Mean energy in each band quantized in Q4 and converted back to float */
-const opus_val16 eMeans[25] = {
- 6.437500f, 6.250000f, 5.750000f, 5.312500f, 5.062500f,
- 4.812500f, 4.500000f, 4.375000f, 4.875000f, 4.687500f,
- 4.562500f, 4.437500f, 4.875000f, 4.625000f, 4.312500f,
- 4.500000f, 4.375000f, 4.625000f, 4.750000f, 4.437500f,
- 3.750000f, 3.750000f, 3.750000f, 3.750000f, 3.750000f
-};
-#endif
-/* prediction coefficients: 0.9, 0.8, 0.65, 0.5 */
-#ifdef FIXED_POINT
-static const opus_val16 pred_coef[4] = {29440, 26112, 21248, 16384};
-static const opus_val16 beta_coef[4] = {30147, 22282, 12124, 6554};
-static const opus_val16 beta_intra = 4915;
-#else
-static const opus_val16 pred_coef[4] = {29440/32768., 26112/32768., 21248/32768., 16384/32768.};
-static const opus_val16 beta_coef[4] = {30147/32768., 22282/32768., 12124/32768., 6554/32768.};
-static const opus_val16 beta_intra = 4915/32768.;
-#endif
-
-/*Parameters of the Laplace-like probability models used for the coarse energy.
- There is one pair of parameters for each frame size, prediction type
- (inter/intra), and band number.
- The first number of each pair is the probability of 0, and the second is the
- decay rate, both in Q8 precision.*/
-static const unsigned char e_prob_model[4][2][42] = {
- /*120 sample frames.*/
- {
- /*Inter*/
- {
- 72, 127, 65, 129, 66, 128, 65, 128, 64, 128, 62, 128, 64, 128,
- 64, 128, 92, 78, 92, 79, 92, 78, 90, 79, 116, 41, 115, 40,
- 114, 40, 132, 26, 132, 26, 145, 17, 161, 12, 176, 10, 177, 11
- },
- /*Intra*/
- {
- 24, 179, 48, 138, 54, 135, 54, 132, 53, 134, 56, 133, 55, 132,
- 55, 132, 61, 114, 70, 96, 74, 88, 75, 88, 87, 74, 89, 66,
- 91, 67, 100, 59, 108, 50, 120, 40, 122, 37, 97, 43, 78, 50
- }
- },
- /*240 sample frames.*/
- {
- /*Inter*/
- {
- 83, 78, 84, 81, 88, 75, 86, 74, 87, 71, 90, 73, 93, 74,
- 93, 74, 109, 40, 114, 36, 117, 34, 117, 34, 143, 17, 145, 18,
- 146, 19, 162, 12, 165, 10, 178, 7, 189, 6, 190, 8, 177, 9
- },
- /*Intra*/
- {
- 23, 178, 54, 115, 63, 102, 66, 98, 69, 99, 74, 89, 71, 91,
- 73, 91, 78, 89, 86, 80, 92, 66, 93, 64, 102, 59, 103, 60,
- 104, 60, 117, 52, 123, 44, 138, 35, 133, 31, 97, 38, 77, 45
- }
- },
- /*480 sample frames.*/
- {
- /*Inter*/
- {
- 61, 90, 93, 60, 105, 42, 107, 41, 110, 45, 116, 38, 113, 38,
- 112, 38, 124, 26, 132, 27, 136, 19, 140, 20, 155, 14, 159, 16,
- 158, 18, 170, 13, 177, 10, 187, 8, 192, 6, 175, 9, 159, 10
- },
- /*Intra*/
- {
- 21, 178, 59, 110, 71, 86, 75, 85, 84, 83, 91, 66, 88, 73,
- 87, 72, 92, 75, 98, 72, 105, 58, 107, 54, 115, 52, 114, 55,
- 112, 56, 129, 51, 132, 40, 150, 33, 140, 29, 98, 35, 77, 42
- }
- },
- /*960 sample frames.*/
- {
- /*Inter*/
- {
- 42, 121, 96, 66, 108, 43, 111, 40, 117, 44, 123, 32, 120, 36,
- 119, 33, 127, 33, 134, 34, 139, 21, 147, 23, 152, 20, 158, 25,
- 154, 26, 166, 21, 173, 16, 184, 13, 184, 10, 150, 13, 139, 15
- },
- /*Intra*/
- {
- 22, 178, 63, 114, 74, 82, 84, 83, 92, 82, 103, 62, 96, 72,
- 96, 67, 101, 73, 107, 72, 113, 55, 118, 52, 125, 52, 118, 52,
- 117, 55, 135, 49, 137, 39, 157, 32, 145, 29, 97, 33, 77, 40
- }
- }
-};
-
-static const unsigned char small_energy_icdf[3]={2,1,0};
-
-static opus_val32 loss_distortion(const opus_val16 *eBands, opus_val16 *oldEBands, int start, int end, int len, int C)
-{
- int c, i;
- opus_val32 dist = 0;
- c=0; do {
- for (i=start;i<end;i++)
- {
- opus_val16 d = SUB16(SHR16(eBands[i+c*len], 3), SHR16(oldEBands[i+c*len], 3));
- dist = MAC16_16(dist, d,d);
- }
- } while (++c<C);
- return MIN32(200,SHR32(dist,2*DB_SHIFT-6));
-}
-
-static int quant_coarse_energy_impl(const CELTMode *m, int start, int end,
- const opus_val16 *eBands, opus_val16 *oldEBands,
- opus_int32 budget, opus_int32 tell,
- const unsigned char *prob_model, opus_val16 *error, ec_enc *enc,
- int C, int LM, int intra, opus_val16 max_decay, int lfe)
-{
- int i, c;
- int badness = 0;
- opus_val32 prev[2] = {0,0};
- opus_val16 coef;
- opus_val16 beta;
-
- if (tell+3 <= budget)
- ec_enc_bit_logp(enc, intra, 3);
- if (intra)
- {
- coef = 0;
- beta = beta_intra;
- } else {
- beta = beta_coef[LM];
- coef = pred_coef[LM];
- }
-
- /* Encode at a fixed coarse resolution */
- for (i=start;i<end;i++)
- {
- c=0;
- do {
- int bits_left;
- int qi, qi0;
- opus_val32 q;
- opus_val16 x;
- opus_val32 f, tmp;
- opus_val16 oldE;
- opus_val16 decay_bound;
- x = eBands[i+c*m->nbEBands];
- oldE = MAX16(-QCONST16(9.f,DB_SHIFT), oldEBands[i+c*m->nbEBands]);
-#ifdef FIXED_POINT
- f = SHL32(EXTEND32(x),7) - PSHR32(MULT16_16(coef,oldE), 8) - prev[c];
- /* Rounding to nearest integer here is really important! */
- qi = (f+QCONST32(.5f,DB_SHIFT+7))>>(DB_SHIFT+7);
- decay_bound = EXTRACT16(MAX32(-QCONST16(28.f,DB_SHIFT),
- SUB32((opus_val32)oldEBands[i+c*m->nbEBands],max_decay)));
-#else
- f = x-coef*oldE-prev[c];
- /* Rounding to nearest integer here is really important! */
- qi = (int)floor(.5f+f);
- decay_bound = MAX16(-QCONST16(28.f,DB_SHIFT), oldEBands[i+c*m->nbEBands]) - max_decay;
-#endif
- /* Prevent the energy from going down too quickly (e.g. for bands
- that have just one bin) */
- if (qi < 0 && x < decay_bound)
- {
- qi += (int)SHR16(SUB16(decay_bound,x), DB_SHIFT);
- if (qi > 0)
- qi = 0;
- }
- qi0 = qi;
- /* If we don't have enough bits to encode all the energy, just assume
- something safe. */
- tell = ec_tell(enc);
- bits_left = budget-tell-3*C*(end-i);
- if (i!=start && bits_left < 30)
- {
- if (bits_left < 24)
- qi = IMIN(1, qi);
- if (bits_left < 16)
- qi = IMAX(-1, qi);
- }
- if (lfe && i>=2)
- qi = IMIN(qi, 0);
- if (budget-tell >= 15)
- {
- int pi;
- pi = 2*IMIN(i,20);
- ec_laplace_encode(enc, &qi,
- prob_model[pi]<<7, prob_model[pi+1]<<6);
- }
- else if(budget-tell >= 2)
- {
- qi = IMAX(-1, IMIN(qi, 1));
- ec_enc_icdf(enc, 2*qi^-(qi<0), small_energy_icdf, 2);
- }
- else if(budget-tell >= 1)
- {
- qi = IMIN(0, qi);
- ec_enc_bit_logp(enc, -qi, 1);
- }
- else
- qi = -1;
- error[i+c*m->nbEBands] = PSHR32(f,7) - SHL16(qi,DB_SHIFT);
- badness += abs(qi0-qi);
- q = (opus_val32)SHL32(EXTEND32(qi),DB_SHIFT);
-
- tmp = PSHR32(MULT16_16(coef,oldE),8) + prev[c] + SHL32(q,7);
-#ifdef FIXED_POINT
- tmp = MAX32(-QCONST32(28.f, DB_SHIFT+7), tmp);
-#endif
- oldEBands[i+c*m->nbEBands] = PSHR32(tmp, 7);
- prev[c] = prev[c] + SHL32(q,7) - MULT16_16(beta,PSHR32(q,8));
- } while (++c < C);
- }
- return lfe ? 0 : badness;
-}
-
-void quant_coarse_energy(const CELTMode *m, int start, int end, int effEnd,
- const opus_val16 *eBands, opus_val16 *oldEBands, opus_uint32 budget,
- opus_val16 *error, ec_enc *enc, int C, int LM, int nbAvailableBytes,
- int force_intra, opus_val32 *delayedIntra, int two_pass, int loss_rate, int lfe)
-{
- int intra;
- opus_val16 max_decay;
- VARDECL(opus_val16, oldEBands_intra);
- VARDECL(opus_val16, error_intra);
- ec_enc enc_start_state;
- opus_uint32 tell;
- int badness1=0;
- opus_int32 intra_bias;
- opus_val32 new_distortion;
- SAVE_STACK;
-
- intra = force_intra || (!two_pass && *delayedIntra>2*C*(end-start) && nbAvailableBytes > (end-start)*C);
- intra_bias = (opus_int32)((budget**delayedIntra*loss_rate)/(C*512));
- new_distortion = loss_distortion(eBands, oldEBands, start, effEnd, m->nbEBands, C);
-
- tell = ec_tell(enc);
- if (tell+3 > budget)
- two_pass = intra = 0;
-
- max_decay = QCONST16(16.f,DB_SHIFT);
- if (end-start>10)
- {
-#ifdef FIXED_POINT
- max_decay = MIN32(max_decay, SHL32(EXTEND32(nbAvailableBytes),DB_SHIFT-3));
-#else
- max_decay = MIN32(max_decay, .125f*nbAvailableBytes);
-#endif
- }
- if (lfe)
- max_decay = QCONST16(3.f,DB_SHIFT);
- enc_start_state = *enc;
-
- ALLOC(oldEBands_intra, C*m->nbEBands, opus_val16);
- ALLOC(error_intra, C*m->nbEBands, opus_val16);
- OPUS_COPY(oldEBands_intra, oldEBands, C*m->nbEBands);
-
- if (two_pass || intra)
- {
- badness1 = quant_coarse_energy_impl(m, start, end, eBands, oldEBands_intra, budget,
- tell, e_prob_model[LM][1], error_intra, enc, C, LM, 1, max_decay, lfe);
- }
-
- if (!intra)
- {
- unsigned char *intra_buf;
- ec_enc enc_intra_state;
- opus_int32 tell_intra;
- opus_uint32 nstart_bytes;
- opus_uint32 nintra_bytes;
- opus_uint32 save_bytes;
- int badness2;
- VARDECL(unsigned char, intra_bits);
-
- tell_intra = ec_tell_frac(enc);
-
- enc_intra_state = *enc;
-
- nstart_bytes = ec_range_bytes(&enc_start_state);
- nintra_bytes = ec_range_bytes(&enc_intra_state);
- intra_buf = ec_get_buffer(&enc_intra_state) + nstart_bytes;
- save_bytes = nintra_bytes-nstart_bytes;
- if (save_bytes == 0)
- save_bytes = ALLOC_NONE;
- ALLOC(intra_bits, save_bytes, unsigned char);
- /* Copy bits from intra bit-stream */
- OPUS_COPY(intra_bits, intra_buf, nintra_bytes - nstart_bytes);
-
- *enc = enc_start_state;
-
- badness2 = quant_coarse_energy_impl(m, start, end, eBands, oldEBands, budget,
- tell, e_prob_model[LM][intra], error, enc, C, LM, 0, max_decay, lfe);
-
- if (two_pass && (badness1 < badness2 || (badness1 == badness2 && ((opus_int32)ec_tell_frac(enc))+intra_bias > tell_intra)))
- {
- *enc = enc_intra_state;
- /* Copy intra bits to bit-stream */
- OPUS_COPY(intra_buf, intra_bits, nintra_bytes - nstart_bytes);
- OPUS_COPY(oldEBands, oldEBands_intra, C*m->nbEBands);
- OPUS_COPY(error, error_intra, C*m->nbEBands);
- intra = 1;
- }
- } else {
- OPUS_COPY(oldEBands, oldEBands_intra, C*m->nbEBands);
- OPUS_COPY(error, error_intra, C*m->nbEBands);
- }
-
- if (intra)
- *delayedIntra = new_distortion;
- else
- *delayedIntra = ADD32(MULT16_32_Q15(MULT16_16_Q15(pred_coef[LM], pred_coef[LM]),*delayedIntra),
- new_distortion);
-
- RESTORE_STACK;
-}
-
-void quant_fine_energy(const CELTMode *m, int start, int end, opus_val16 *oldEBands, opus_val16 *error, int *fine_quant, ec_enc *enc, int C)
-{
- int i, c;
-
- /* Encode finer resolution */
- for (i=start;i<end;i++)
- {
- opus_int16 frac = 1<<fine_quant[i];
- if (fine_quant[i] <= 0)
- continue;
- c=0;
- do {
- int q2;
- opus_val16 offset;
-#ifdef FIXED_POINT
- /* Has to be without rounding */
- q2 = (error[i+c*m->nbEBands]+QCONST16(.5f,DB_SHIFT))>>(DB_SHIFT-fine_quant[i]);
-#else
- q2 = (int)floor((error[i+c*m->nbEBands]+.5f)*frac);
-#endif
- if (q2 > frac-1)
- q2 = frac-1;
- if (q2<0)
- q2 = 0;
- ec_enc_bits(enc, q2, fine_quant[i]);
-#ifdef FIXED_POINT
- offset = SUB16(SHR32(SHL32(EXTEND32(q2),DB_SHIFT)+QCONST16(.5f,DB_SHIFT),fine_quant[i]),QCONST16(.5f,DB_SHIFT));
-#else
- offset = (q2+.5f)*(1<<(14-fine_quant[i]))*(1.f/16384) - .5f;
-#endif
- oldEBands[i+c*m->nbEBands] += offset;
- error[i+c*m->nbEBands] -= offset;
- /*printf ("%f ", error[i] - offset);*/
- } while (++c < C);
- }
-}
-
-void quant_energy_finalise(const CELTMode *m, int start, int end, opus_val16 *oldEBands, opus_val16 *error, int *fine_quant, int *fine_priority, int bits_left, ec_enc *enc, int C)
-{
- int i, prio, c;
-
- /* Use up the remaining bits */
- for (prio=0;prio<2;prio++)
- {
- for (i=start;i<end && bits_left>=C ;i++)
- {
- if (fine_quant[i] >= MAX_FINE_BITS || fine_priority[i]!=prio)
- continue;
- c=0;
- do {
- int q2;
- opus_val16 offset;
- q2 = error[i+c*m->nbEBands]<0 ? 0 : 1;
- ec_enc_bits(enc, q2, 1);
-#ifdef FIXED_POINT
- offset = SHR16(SHL16(q2,DB_SHIFT)-QCONST16(.5f,DB_SHIFT),fine_quant[i]+1);
-#else
- offset = (q2-.5f)*(1<<(14-fine_quant[i]-1))*(1.f/16384);
-#endif
- oldEBands[i+c*m->nbEBands] += offset;
- bits_left--;
- } while (++c < C);
- }
- }
-}
-
-void unquant_coarse_energy(const CELTMode *m, int start, int end, opus_val16 *oldEBands, int intra, ec_dec *dec, int C, int LM)
-{
- const unsigned char *prob_model = e_prob_model[LM][intra];
- int i, c;
- opus_val32 prev[2] = {0, 0};
- opus_val16 coef;
- opus_val16 beta;
- opus_int32 budget;
- opus_int32 tell;
-
- if (intra)
- {
- coef = 0;
- beta = beta_intra;
- } else {
- beta = beta_coef[LM];
- coef = pred_coef[LM];
- }
-
- budget = dec->storage*8;
-
- /* Decode at a fixed coarse resolution */
- for (i=start;i<end;i++)
- {
- c=0;
- do {
- int qi;
- opus_val32 q;
- opus_val32 tmp;
- /* It would be better to express this invariant as a
- test on C at function entry, but that isn't enough
- to make the static analyzer happy. */
- celt_assert(c<2);
- tell = ec_tell(dec);
- if(budget-tell>=15)
- {
- int pi;
- pi = 2*IMIN(i,20);
- qi = ec_laplace_decode(dec,
- prob_model[pi]<<7, prob_model[pi+1]<<6);
- }
- else if(budget-tell>=2)
- {
- qi = ec_dec_icdf(dec, small_energy_icdf, 2);
- qi = (qi>>1)^-(qi&1);
- }
- else if(budget-tell>=1)
- {
- qi = -ec_dec_bit_logp(dec, 1);
- }
- else
- qi = -1;
- q = (opus_val32)SHL32(EXTEND32(qi),DB_SHIFT);
-
- oldEBands[i+c*m->nbEBands] = MAX16(-QCONST16(9.f,DB_SHIFT), oldEBands[i+c*m->nbEBands]);
- tmp = PSHR32(MULT16_16(coef,oldEBands[i+c*m->nbEBands]),8) + prev[c] + SHL32(q,7);
-#ifdef FIXED_POINT
- tmp = MAX32(-QCONST32(28.f, DB_SHIFT+7), tmp);
-#endif
- oldEBands[i+c*m->nbEBands] = PSHR32(tmp, 7);
- prev[c] = prev[c] + SHL32(q,7) - MULT16_16(beta,PSHR32(q,8));
- } while (++c < C);
- }
-}
-
-void unquant_fine_energy(const CELTMode *m, int start, int end, opus_val16 *oldEBands, int *fine_quant, ec_dec *dec, int C)
-{
- int i, c;
- /* Decode finer resolution */
- for (i=start;i<end;i++)
- {
- if (fine_quant[i] <= 0)
- continue;
- c=0;
- do {
- int q2;
- opus_val16 offset;
- q2 = ec_dec_bits(dec, fine_quant[i]);
-#ifdef FIXED_POINT
- offset = SUB16(SHR32(SHL32(EXTEND32(q2),DB_SHIFT)+QCONST16(.5f,DB_SHIFT),fine_quant[i]),QCONST16(.5f,DB_SHIFT));
-#else
- offset = (q2+.5f)*(1<<(14-fine_quant[i]))*(1.f/16384) - .5f;
-#endif
- oldEBands[i+c*m->nbEBands] += offset;
- } while (++c < C);
- }
-}
-
-void unquant_energy_finalise(const CELTMode *m, int start, int end, opus_val16 *oldEBands, int *fine_quant, int *fine_priority, int bits_left, ec_dec *dec, int C)
-{
- int i, prio, c;
-
- /* Use up the remaining bits */
- for (prio=0;prio<2;prio++)
- {
- for (i=start;i<end && bits_left>=C ;i++)
- {
- if (fine_quant[i] >= MAX_FINE_BITS || fine_priority[i]!=prio)
- continue;
- c=0;
- do {
- int q2;
- opus_val16 offset;
- q2 = ec_dec_bits(dec, 1);
-#ifdef FIXED_POINT
- offset = SHR16(SHL16(q2,DB_SHIFT)-QCONST16(.5f,DB_SHIFT),fine_quant[i]+1);
-#else
- offset = (q2-.5f)*(1<<(14-fine_quant[i]-1))*(1.f/16384);
-#endif
- oldEBands[i+c*m->nbEBands] += offset;
- bits_left--;
- } while (++c < C);
- }
- }
-}
-
-void amp2Log2(const CELTMode *m, int effEnd, int end,
- celt_ener *bandE, opus_val16 *bandLogE, int C)
-{
- int c, i;
- c=0;
- do {
- for (i=0;i<effEnd;i++)
- bandLogE[i+c*m->nbEBands] =
- celt_log2(SHL32(bandE[i+c*m->nbEBands],2))
- - SHL16((opus_val16)eMeans[i],6);
- for (i=effEnd;i<end;i++)
- bandLogE[c*m->nbEBands+i] = -QCONST16(14.f,DB_SHIFT);
- } while (++c < C);
-}
diff --git a/thirdparty/opus/celt/quant_bands.h b/thirdparty/opus/celt/quant_bands.h
deleted file mode 100644
index 0490bca4b4..0000000000
--- a/thirdparty/opus/celt/quant_bands.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef QUANT_BANDS
-#define QUANT_BANDS
-
-#include "arch.h"
-#include "modes.h"
-#include "entenc.h"
-#include "entdec.h"
-#include "mathops.h"
-
-#ifdef FIXED_POINT
-extern const signed char eMeans[25];
-#else
-extern const opus_val16 eMeans[25];
-#endif
-
-void amp2Log2(const CELTMode *m, int effEnd, int end,
- celt_ener *bandE, opus_val16 *bandLogE, int C);
-
-void log2Amp(const CELTMode *m, int start, int end,
- celt_ener *eBands, const opus_val16 *oldEBands, int C);
-
-void quant_coarse_energy(const CELTMode *m, int start, int end, int effEnd,
- const opus_val16 *eBands, opus_val16 *oldEBands, opus_uint32 budget,
- opus_val16 *error, ec_enc *enc, int C, int LM,
- int nbAvailableBytes, int force_intra, opus_val32 *delayedIntra,
- int two_pass, int loss_rate, int lfe);
-
-void quant_fine_energy(const CELTMode *m, int start, int end, opus_val16 *oldEBands, opus_val16 *error, int *fine_quant, ec_enc *enc, int C);
-
-void quant_energy_finalise(const CELTMode *m, int start, int end, opus_val16 *oldEBands, opus_val16 *error, int *fine_quant, int *fine_priority, int bits_left, ec_enc *enc, int C);
-
-void unquant_coarse_energy(const CELTMode *m, int start, int end, opus_val16 *oldEBands, int intra, ec_dec *dec, int C, int LM);
-
-void unquant_fine_energy(const CELTMode *m, int start, int end, opus_val16 *oldEBands, int *fine_quant, ec_dec *dec, int C);
-
-void unquant_energy_finalise(const CELTMode *m, int start, int end, opus_val16 *oldEBands, int *fine_quant, int *fine_priority, int bits_left, ec_dec *dec, int C);
-
-#endif /* QUANT_BANDS */
diff --git a/thirdparty/opus/celt/rate.c b/thirdparty/opus/celt/rate.c
deleted file mode 100644
index 7dfa5be8a6..0000000000
--- a/thirdparty/opus/celt/rate.c
+++ /dev/null
@@ -1,639 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <math.h>
-#include "modes.h"
-#include "cwrs.h"
-#include "arch.h"
-#include "os_support.h"
-
-#include "entcode.h"
-#include "rate.h"
-
-static const unsigned char LOG2_FRAC_TABLE[24]={
- 0,
- 8,13,
- 16,19,21,23,
- 24,26,27,28,29,30,31,32,
- 32,33,34,34,35,36,36,37,37
-};
-
-#ifdef CUSTOM_MODES
-
-/*Determines if V(N,K) fits in a 32-bit unsigned integer.
- N and K are themselves limited to 15 bits.*/
-static int fits_in32(int _n, int _k)
-{
- static const opus_int16 maxN[15] = {
- 32767, 32767, 32767, 1476, 283, 109, 60, 40,
- 29, 24, 20, 18, 16, 14, 13};
- static const opus_int16 maxK[15] = {
- 32767, 32767, 32767, 32767, 1172, 238, 95, 53,
- 36, 27, 22, 18, 16, 15, 13};
- if (_n>=14)
- {
- if (_k>=14)
- return 0;
- else
- return _n <= maxN[_k];
- } else {
- return _k <= maxK[_n];
- }
-}
-
-void compute_pulse_cache(CELTMode *m, int LM)
-{
- int C;
- int i;
- int j;
- int curr=0;
- int nbEntries=0;
- int entryN[100], entryK[100], entryI[100];
- const opus_int16 *eBands = m->eBands;
- PulseCache *cache = &m->cache;
- opus_int16 *cindex;
- unsigned char *bits;
- unsigned char *cap;
-
- cindex = (opus_int16 *)opus_alloc(sizeof(cache->index[0])*m->nbEBands*(LM+2));
- cache->index = cindex;
-
- /* Scan for all unique band sizes */
- for (i=0;i<=LM+1;i++)
- {
- for (j=0;j<m->nbEBands;j++)
- {
- int k;
- int N = (eBands[j+1]-eBands[j])<<i>>1;
- cindex[i*m->nbEBands+j] = -1;
- /* Find other bands that have the same size */
- for (k=0;k<=i;k++)
- {
- int n;
- for (n=0;n<m->nbEBands && (k!=i || n<j);n++)
- {
- if (N == (eBands[n+1]-eBands[n])<<k>>1)
- {
- cindex[i*m->nbEBands+j] = cindex[k*m->nbEBands+n];
- break;
- }
- }
- }
- if (cache->index[i*m->nbEBands+j] == -1 && N!=0)
- {
- int K;
- entryN[nbEntries] = N;
- K = 0;
- while (fits_in32(N,get_pulses(K+1)) && K<MAX_PSEUDO)
- K++;
- entryK[nbEntries] = K;
- cindex[i*m->nbEBands+j] = curr;
- entryI[nbEntries] = curr;
-
- curr += K+1;
- nbEntries++;
- }
- }
- }
- bits = (unsigned char *)opus_alloc(sizeof(unsigned char)*curr);
- cache->bits = bits;
- cache->size = curr;
- /* Compute the cache for all unique sizes */
- for (i=0;i<nbEntries;i++)
- {
- unsigned char *ptr = bits+entryI[i];
- opus_int16 tmp[CELT_MAX_PULSES+1];
- get_required_bits(tmp, entryN[i], get_pulses(entryK[i]), BITRES);
- for (j=1;j<=entryK[i];j++)
- ptr[j] = tmp[get_pulses(j)]-1;
- ptr[0] = entryK[i];
- }
-
- /* Compute the maximum rate for each band at which we'll reliably use as
- many bits as we ask for. */
- cache->caps = cap = (unsigned char *)opus_alloc(sizeof(cache->caps[0])*(LM+1)*2*m->nbEBands);
- for (i=0;i<=LM;i++)
- {
- for (C=1;C<=2;C++)
- {
- for (j=0;j<m->nbEBands;j++)
- {
- int N0;
- int max_bits;
- N0 = m->eBands[j+1]-m->eBands[j];
- /* N=1 bands only have a sign bit and fine bits. */
- if (N0<<i == 1)
- max_bits = C*(1+MAX_FINE_BITS)<<BITRES;
- else
- {
- const unsigned char *pcache;
- opus_int32 num;
- opus_int32 den;
- int LM0;
- int N;
- int offset;
- int ndof;
- int qb;
- int k;
- LM0 = 0;
- /* Even-sized bands bigger than N=2 can be split one more time.
- As of commit 44203907 all bands >1 are even, including custom modes.*/
- if (N0 > 2)
- {
- N0>>=1;
- LM0--;
- }
- /* N0=1 bands can't be split down to N<2. */
- else if (N0 <= 1)
- {
- LM0=IMIN(i,1);
- N0<<=LM0;
- }
- /* Compute the cost for the lowest-level PVQ of a fully split
- band. */
- pcache = bits + cindex[(LM0+1)*m->nbEBands+j];
- max_bits = pcache[pcache[0]]+1;
- /* Add in the cost of coding regular splits. */
- N = N0;
- for(k=0;k<i-LM0;k++){
- max_bits <<= 1;
- /* Offset the number of qtheta bits by log2(N)/2
- + QTHETA_OFFSET compared to their "fair share" of
- total/N */
- offset = ((m->logN[j]+((LM0+k)<<BITRES))>>1)-QTHETA_OFFSET;
- /* The number of qtheta bits we'll allocate if the remainder
- is to be max_bits.
- The average measured cost for theta is 0.89701 times qb,
- approximated here as 459/512. */
- num=459*(opus_int32)((2*N-1)*offset+max_bits);
- den=((opus_int32)(2*N-1)<<9)-459;
- qb = IMIN((num+(den>>1))/den, 57);
- celt_assert(qb >= 0);
- max_bits += qb;
- N <<= 1;
- }
- /* Add in the cost of a stereo split, if necessary. */
- if (C==2)
- {
- max_bits <<= 1;
- offset = ((m->logN[j]+(i<<BITRES))>>1)-(N==2?QTHETA_OFFSET_TWOPHASE:QTHETA_OFFSET);
- ndof = 2*N-1-(N==2);
- /* The average measured cost for theta with the step PDF is
- 0.95164 times qb, approximated here as 487/512. */
- num = (N==2?512:487)*(opus_int32)(max_bits+ndof*offset);
- den = ((opus_int32)ndof<<9)-(N==2?512:487);
- qb = IMIN((num+(den>>1))/den, (N==2?64:61));
- celt_assert(qb >= 0);
- max_bits += qb;
- }
- /* Add the fine bits we'll use. */
- /* Compensate for the extra DoF in stereo */
- ndof = C*N + ((C==2 && N>2) ? 1 : 0);
- /* Offset the number of fine bits by log2(N)/2 + FINE_OFFSET
- compared to their "fair share" of total/N */
- offset = ((m->logN[j] + (i<<BITRES))>>1)-FINE_OFFSET;
- /* N=2 is the only point that doesn't match the curve */
- if (N==2)
- offset += 1<<BITRES>>2;
- /* The number of fine bits we'll allocate if the remainder is
- to be max_bits. */
- num = max_bits+ndof*offset;
- den = (ndof-1)<<BITRES;
- qb = IMIN((num+(den>>1))/den, MAX_FINE_BITS);
- celt_assert(qb >= 0);
- max_bits += C*qb<<BITRES;
- }
- max_bits = (4*max_bits/(C*((m->eBands[j+1]-m->eBands[j])<<i)))-64;
- celt_assert(max_bits >= 0);
- celt_assert(max_bits < 256);
- *cap++ = (unsigned char)max_bits;
- }
- }
- }
-}
-
-#endif /* CUSTOM_MODES */
-
-#define ALLOC_STEPS 6
-
-static OPUS_INLINE int interp_bits2pulses(const CELTMode *m, int start, int end, int skip_start,
- const int *bits1, const int *bits2, const int *thresh, const int *cap, opus_int32 total, opus_int32 *_balance,
- int skip_rsv, int *intensity, int intensity_rsv, int *dual_stereo, int dual_stereo_rsv, int *bits,
- int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int prev, int signalBandwidth)
-{
- opus_int32 psum;
- int lo, hi;
- int i, j;
- int logM;
- int stereo;
- int codedBands=-1;
- int alloc_floor;
- opus_int32 left, percoeff;
- int done;
- opus_int32 balance;
- SAVE_STACK;
-
- alloc_floor = C<<BITRES;
- stereo = C>1;
-
- logM = LM<<BITRES;
- lo = 0;
- hi = 1<<ALLOC_STEPS;
- for (i=0;i<ALLOC_STEPS;i++)
- {
- int mid = (lo+hi)>>1;
- psum = 0;
- done = 0;
- for (j=end;j-->start;)
- {
- int tmp = bits1[j] + (mid*(opus_int32)bits2[j]>>ALLOC_STEPS);
- if (tmp >= thresh[j] || done)
- {
- done = 1;
- /* Don't allocate more than we can actually use */
- psum += IMIN(tmp, cap[j]);
- } else {
- if (tmp >= alloc_floor)
- psum += alloc_floor;
- }
- }
- if (psum > total)
- hi = mid;
- else
- lo = mid;
- }
- psum = 0;
- /*printf ("interp bisection gave %d\n", lo);*/
- done = 0;
- for (j=end;j-->start;)
- {
- int tmp = bits1[j] + ((opus_int32)lo*bits2[j]>>ALLOC_STEPS);
- if (tmp < thresh[j] && !done)
- {
- if (tmp >= alloc_floor)
- tmp = alloc_floor;
- else
- tmp = 0;
- } else
- done = 1;
- /* Don't allocate more than we can actually use */
- tmp = IMIN(tmp, cap[j]);
- bits[j] = tmp;
- psum += tmp;
- }
-
- /* Decide which bands to skip, working backwards from the end. */
- for (codedBands=end;;codedBands--)
- {
- int band_width;
- int band_bits;
- int rem;
- j = codedBands-1;
- /* Never skip the first band, nor a band that has been boosted by
- dynalloc.
- In the first case, we'd be coding a bit to signal we're going to waste
- all the other bits.
- In the second case, we'd be coding a bit to redistribute all the bits
- we just signaled should be cocentrated in this band. */
- if (j<=skip_start)
- {
- /* Give the bit we reserved to end skipping back. */
- total += skip_rsv;
- break;
- }
- /*Figure out how many left-over bits we would be adding to this band.
- This can include bits we've stolen back from higher, skipped bands.*/
- left = total-psum;
- percoeff = celt_udiv(left, m->eBands[codedBands]-m->eBands[start]);
- left -= (m->eBands[codedBands]-m->eBands[start])*percoeff;
- rem = IMAX(left-(m->eBands[j]-m->eBands[start]),0);
- band_width = m->eBands[codedBands]-m->eBands[j];
- band_bits = (int)(bits[j] + percoeff*band_width + rem);
- /*Only code a skip decision if we're above the threshold for this band.
- Otherwise it is force-skipped.
- This ensures that we have enough bits to code the skip flag.*/
- if (band_bits >= IMAX(thresh[j], alloc_floor+(1<<BITRES)))
- {
- if (encode)
- {
- /*This if() block is the only part of the allocation function that
- is not a mandatory part of the bitstream: any bands we choose to
- skip here must be explicitly signaled.*/
- /*Choose a threshold with some hysteresis to keep bands from
- fluctuating in and out.*/
-#ifdef FUZZING
- if ((rand()&0x1) == 0)
-#else
- if (codedBands<=start+2 || (band_bits > ((j<prev?7:9)*band_width<<LM<<BITRES)>>4 && j<=signalBandwidth))
-#endif
- {
- ec_enc_bit_logp(ec, 1, 1);
- break;
- }
- ec_enc_bit_logp(ec, 0, 1);
- } else if (ec_dec_bit_logp(ec, 1)) {
- break;
- }
- /*We used a bit to skip this band.*/
- psum += 1<<BITRES;
- band_bits -= 1<<BITRES;
- }
- /*Reclaim the bits originally allocated to this band.*/
- psum -= bits[j]+intensity_rsv;
- if (intensity_rsv > 0)
- intensity_rsv = LOG2_FRAC_TABLE[j-start];
- psum += intensity_rsv;
- if (band_bits >= alloc_floor)
- {
- /*If we have enough for a fine energy bit per channel, use it.*/
- psum += alloc_floor;
- bits[j] = alloc_floor;
- } else {
- /*Otherwise this band gets nothing at all.*/
- bits[j] = 0;
- }
- }
-
- celt_assert(codedBands > start);
- /* Code the intensity and dual stereo parameters. */
- if (intensity_rsv > 0)
- {
- if (encode)
- {
- *intensity = IMIN(*intensity, codedBands);
- ec_enc_uint(ec, *intensity-start, codedBands+1-start);
- }
- else
- *intensity = start+ec_dec_uint(ec, codedBands+1-start);
- }
- else
- *intensity = 0;
- if (*intensity <= start)
- {
- total += dual_stereo_rsv;
- dual_stereo_rsv = 0;
- }
- if (dual_stereo_rsv > 0)
- {
- if (encode)
- ec_enc_bit_logp(ec, *dual_stereo, 1);
- else
- *dual_stereo = ec_dec_bit_logp(ec, 1);
- }
- else
- *dual_stereo = 0;
-
- /* Allocate the remaining bits */
- left = total-psum;
- percoeff = celt_udiv(left, m->eBands[codedBands]-m->eBands[start]);
- left -= (m->eBands[codedBands]-m->eBands[start])*percoeff;
- for (j=start;j<codedBands;j++)
- bits[j] += ((int)percoeff*(m->eBands[j+1]-m->eBands[j]));
- for (j=start;j<codedBands;j++)
- {
- int tmp = (int)IMIN(left, m->eBands[j+1]-m->eBands[j]);
- bits[j] += tmp;
- left -= tmp;
- }
- /*for (j=0;j<end;j++)printf("%d ", bits[j]);printf("\n");*/
-
- balance = 0;
- for (j=start;j<codedBands;j++)
- {
- int N0, N, den;
- int offset;
- int NClogN;
- opus_int32 excess, bit;
-
- celt_assert(bits[j] >= 0);
- N0 = m->eBands[j+1]-m->eBands[j];
- N=N0<<LM;
- bit = (opus_int32)bits[j]+balance;
-
- if (N>1)
- {
- excess = MAX32(bit-cap[j],0);
- bits[j] = bit-excess;
-
- /* Compensate for the extra DoF in stereo */
- den=(C*N+ ((C==2 && N>2 && !*dual_stereo && j<*intensity) ? 1 : 0));
-
- NClogN = den*(m->logN[j] + logM);
-
- /* Offset for the number of fine bits by log2(N)/2 + FINE_OFFSET
- compared to their "fair share" of total/N */
- offset = (NClogN>>1)-den*FINE_OFFSET;
-
- /* N=2 is the only point that doesn't match the curve */
- if (N==2)
- offset += den<<BITRES>>2;
-
- /* Changing the offset for allocating the second and third
- fine energy bit */
- if (bits[j] + offset < den*2<<BITRES)
- offset += NClogN>>2;
- else if (bits[j] + offset < den*3<<BITRES)
- offset += NClogN>>3;
-
- /* Divide with rounding */
- ebits[j] = IMAX(0, (bits[j] + offset + (den<<(BITRES-1))));
- ebits[j] = celt_udiv(ebits[j], den)>>BITRES;
-
- /* Make sure not to bust */
- if (C*ebits[j] > (bits[j]>>BITRES))
- ebits[j] = bits[j] >> stereo >> BITRES;
-
- /* More than that is useless because that's about as far as PVQ can go */
- ebits[j] = IMIN(ebits[j], MAX_FINE_BITS);
-
- /* If we rounded down or capped this band, make it a candidate for the
- final fine energy pass */
- fine_priority[j] = ebits[j]*(den<<BITRES) >= bits[j]+offset;
-
- /* Remove the allocated fine bits; the rest are assigned to PVQ */
- bits[j] -= C*ebits[j]<<BITRES;
-
- } else {
- /* For N=1, all bits go to fine energy except for a single sign bit */
- excess = MAX32(0,bit-(C<<BITRES));
- bits[j] = bit-excess;
- ebits[j] = 0;
- fine_priority[j] = 1;
- }
-
- /* Fine energy can't take advantage of the re-balancing in
- quant_all_bands().
- Instead, do the re-balancing here.*/
- if(excess > 0)
- {
- int extra_fine;
- int extra_bits;
- extra_fine = IMIN(excess>>(stereo+BITRES),MAX_FINE_BITS-ebits[j]);
- ebits[j] += extra_fine;
- extra_bits = extra_fine*C<<BITRES;
- fine_priority[j] = extra_bits >= excess-balance;
- excess -= extra_bits;
- }
- balance = excess;
-
- celt_assert(bits[j] >= 0);
- celt_assert(ebits[j] >= 0);
- }
- /* Save any remaining bits over the cap for the rebalancing in
- quant_all_bands(). */
- *_balance = balance;
-
- /* The skipped bands use all their bits for fine energy. */
- for (;j<end;j++)
- {
- ebits[j] = bits[j] >> stereo >> BITRES;
- celt_assert(C*ebits[j]<<BITRES == bits[j]);
- bits[j] = 0;
- fine_priority[j] = ebits[j]<1;
- }
- RESTORE_STACK;
- return codedBands;
-}
-
-int compute_allocation(const CELTMode *m, int start, int end, const int *offsets, const int *cap, int alloc_trim, int *intensity, int *dual_stereo,
- opus_int32 total, opus_int32 *balance, int *pulses, int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int prev, int signalBandwidth)
-{
- int lo, hi, len, j;
- int codedBands;
- int skip_start;
- int skip_rsv;
- int intensity_rsv;
- int dual_stereo_rsv;
- VARDECL(int, bits1);
- VARDECL(int, bits2);
- VARDECL(int, thresh);
- VARDECL(int, trim_offset);
- SAVE_STACK;
-
- total = IMAX(total, 0);
- len = m->nbEBands;
- skip_start = start;
- /* Reserve a bit to signal the end of manually skipped bands. */
- skip_rsv = total >= 1<<BITRES ? 1<<BITRES : 0;
- total -= skip_rsv;
- /* Reserve bits for the intensity and dual stereo parameters. */
- intensity_rsv = dual_stereo_rsv = 0;
- if (C==2)
- {
- intensity_rsv = LOG2_FRAC_TABLE[end-start];
- if (intensity_rsv>total)
- intensity_rsv = 0;
- else
- {
- total -= intensity_rsv;
- dual_stereo_rsv = total>=1<<BITRES ? 1<<BITRES : 0;
- total -= dual_stereo_rsv;
- }
- }
- ALLOC(bits1, len, int);
- ALLOC(bits2, len, int);
- ALLOC(thresh, len, int);
- ALLOC(trim_offset, len, int);
-
- for (j=start;j<end;j++)
- {
- /* Below this threshold, we're sure not to allocate any PVQ bits */
- thresh[j] = IMAX((C)<<BITRES, (3*(m->eBands[j+1]-m->eBands[j])<<LM<<BITRES)>>4);
- /* Tilt of the allocation curve */
- trim_offset[j] = C*(m->eBands[j+1]-m->eBands[j])*(alloc_trim-5-LM)*(end-j-1)
- *(1<<(LM+BITRES))>>6;
- /* Giving less resolution to single-coefficient bands because they get
- more benefit from having one coarse value per coefficient*/
- if ((m->eBands[j+1]-m->eBands[j])<<LM==1)
- trim_offset[j] -= C<<BITRES;
- }
- lo = 1;
- hi = m->nbAllocVectors - 1;
- do
- {
- int done = 0;
- int psum = 0;
- int mid = (lo+hi) >> 1;
- for (j=end;j-->start;)
- {
- int bitsj;
- int N = m->eBands[j+1]-m->eBands[j];
- bitsj = C*N*m->allocVectors[mid*len+j]<<LM>>2;
- if (bitsj > 0)
- bitsj = IMAX(0, bitsj + trim_offset[j]);
- bitsj += offsets[j];
- if (bitsj >= thresh[j] || done)
- {
- done = 1;
- /* Don't allocate more than we can actually use */
- psum += IMIN(bitsj, cap[j]);
- } else {
- if (bitsj >= C<<BITRES)
- psum += C<<BITRES;
- }
- }
- if (psum > total)
- hi = mid - 1;
- else
- lo = mid + 1;
- /*printf ("lo = %d, hi = %d\n", lo, hi);*/
- }
- while (lo <= hi);
- hi = lo--;
- /*printf ("interp between %d and %d\n", lo, hi);*/
- for (j=start;j<end;j++)
- {
- int bits1j, bits2j;
- int N = m->eBands[j+1]-m->eBands[j];
- bits1j = C*N*m->allocVectors[lo*len+j]<<LM>>2;
- bits2j = hi>=m->nbAllocVectors ?
- cap[j] : C*N*m->allocVectors[hi*len+j]<<LM>>2;
- if (bits1j > 0)
- bits1j = IMAX(0, bits1j + trim_offset[j]);
- if (bits2j > 0)
- bits2j = IMAX(0, bits2j + trim_offset[j]);
- if (lo > 0)
- bits1j += offsets[j];
- bits2j += offsets[j];
- if (offsets[j]>0)
- skip_start = j;
- bits2j = IMAX(0,bits2j-bits1j);
- bits1[j] = bits1j;
- bits2[j] = bits2j;
- }
- codedBands = interp_bits2pulses(m, start, end, skip_start, bits1, bits2, thresh, cap,
- total, balance, skip_rsv, intensity, intensity_rsv, dual_stereo, dual_stereo_rsv,
- pulses, ebits, fine_priority, C, LM, ec, encode, prev, signalBandwidth);
- RESTORE_STACK;
- return codedBands;
-}
-
diff --git a/thirdparty/opus/celt/rate.h b/thirdparty/opus/celt/rate.h
deleted file mode 100644
index 515f7687ce..0000000000
--- a/thirdparty/opus/celt/rate.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef RATE_H
-#define RATE_H
-
-#define MAX_PSEUDO 40
-#define LOG_MAX_PSEUDO 6
-
-#define CELT_MAX_PULSES 128
-
-#define MAX_FINE_BITS 8
-
-#define FINE_OFFSET 21
-#define QTHETA_OFFSET 4
-#define QTHETA_OFFSET_TWOPHASE 16
-
-#include "cwrs.h"
-#include "modes.h"
-
-void compute_pulse_cache(CELTMode *m, int LM);
-
-static OPUS_INLINE int get_pulses(int i)
-{
- return i<8 ? i : (8 + (i&7)) << ((i>>3)-1);
-}
-
-static OPUS_INLINE int bits2pulses(const CELTMode *m, int band, int LM, int bits)
-{
- int i;
- int lo, hi;
- const unsigned char *cache;
-
- LM++;
- cache = m->cache.bits + m->cache.index[LM*m->nbEBands+band];
-
- lo = 0;
- hi = cache[0];
- bits--;
- for (i=0;i<LOG_MAX_PSEUDO;i++)
- {
- int mid = (lo+hi+1)>>1;
- /* OPT: Make sure this is implemented with a conditional move */
- if ((int)cache[mid] >= bits)
- hi = mid;
- else
- lo = mid;
- }
- if (bits- (lo == 0 ? -1 : (int)cache[lo]) <= (int)cache[hi]-bits)
- return lo;
- else
- return hi;
-}
-
-static OPUS_INLINE int pulses2bits(const CELTMode *m, int band, int LM, int pulses)
-{
- const unsigned char *cache;
-
- LM++;
- cache = m->cache.bits + m->cache.index[LM*m->nbEBands+band];
- return pulses == 0 ? 0 : cache[pulses]+1;
-}
-
-/** Compute the pulse allocation, i.e. how many pulses will go in each
- * band.
- @param m mode
- @param offsets Requested increase or decrease in the number of bits for
- each band
- @param total Number of bands
- @param pulses Number of pulses per band (returned)
- @return Total number of bits allocated
-*/
-int compute_allocation(const CELTMode *m, int start, int end, const int *offsets, const int *cap, int alloc_trim, int *intensity, int *dual_stero,
- opus_int32 total, opus_int32 *balance, int *pulses, int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int prev, int signalBandwidth);
-
-#endif
diff --git a/thirdparty/opus/celt/stack_alloc.h b/thirdparty/opus/celt/stack_alloc.h
deleted file mode 100644
index 2b51c8d80c..0000000000
--- a/thirdparty/opus/celt/stack_alloc.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* Copyright (C) 2002-2003 Jean-Marc Valin
- Copyright (C) 2007-2009 Xiph.Org Foundation */
-/**
- @file stack_alloc.h
- @brief Temporary memory allocation on stack
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef STACK_ALLOC_H
-#define STACK_ALLOC_H
-
-#include "opus_types.h"
-#include "opus_defines.h"
-
-#if (!defined (VAR_ARRAYS) && !defined (USE_ALLOCA) && !defined (NONTHREADSAFE_PSEUDOSTACK))
-#error "Opus requires one of VAR_ARRAYS, USE_ALLOCA, or NONTHREADSAFE_PSEUDOSTACK be defined to select the temporary allocation mode."
-#endif
-
-#ifdef USE_ALLOCA
-# ifdef WIN32
-# include <malloc.h>
-# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# include <stdlib.h>
-# endif
-# endif
-#endif
-
-/**
- * @def ALIGN(stack, size)
- *
- * Aligns the stack to a 'size' boundary
- *
- * @param stack Stack
- * @param size New size boundary
- */
-
-/**
- * @def PUSH(stack, size, type)
- *
- * Allocates 'size' elements of type 'type' on the stack
- *
- * @param stack Stack
- * @param size Number of elements
- * @param type Type of element
- */
-
-/**
- * @def VARDECL(var)
- *
- * Declare variable on stack
- *
- * @param var Variable to declare
- */
-
-/**
- * @def ALLOC(var, size, type)
- *
- * Allocate 'size' elements of 'type' on stack
- *
- * @param var Name of variable to allocate
- * @param size Number of elements
- * @param type Type of element
- */
-
-#if defined(VAR_ARRAYS)
-
-#define VARDECL(type, var)
-#define ALLOC(var, size, type) type var[size]
-#define SAVE_STACK
-#define RESTORE_STACK
-#define ALLOC_STACK
-/* C99 does not allow VLAs of size zero */
-#define ALLOC_NONE 1
-
-#elif defined(USE_ALLOCA)
-
-#define VARDECL(type, var) type *var
-
-# ifdef WIN32
-# define ALLOC(var, size, type) var = ((type*)_alloca(sizeof(type)*(size)))
-# else
-# define ALLOC(var, size, type) var = ((type*)alloca(sizeof(type)*(size)))
-# endif
-
-#define SAVE_STACK
-#define RESTORE_STACK
-#define ALLOC_STACK
-#define ALLOC_NONE 0
-
-#else
-
-#ifdef CELT_C
-char *scratch_ptr=0;
-char *global_stack=0;
-#else
-extern char *global_stack;
-extern char *scratch_ptr;
-#endif /* CELT_C */
-
-#ifdef ENABLE_VALGRIND
-
-#include <valgrind/memcheck.h>
-
-#ifdef CELT_C
-char *global_stack_top=0;
-#else
-extern char *global_stack_top;
-#endif /* CELT_C */
-
-#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
-#define PUSH(stack, size, type) (VALGRIND_MAKE_MEM_NOACCESS(stack, global_stack_top-stack),ALIGN((stack),sizeof(type)/sizeof(char)),VALGRIND_MAKE_MEM_UNDEFINED(stack, ((size)*sizeof(type)/sizeof(char))),(stack)+=(2*(size)*sizeof(type)/sizeof(char)),(type*)((stack)-(2*(size)*sizeof(type)/sizeof(char))))
-#define RESTORE_STACK ((global_stack = _saved_stack),VALGRIND_MAKE_MEM_NOACCESS(global_stack, global_stack_top-global_stack))
-#define ALLOC_STACK char *_saved_stack; ((global_stack = (global_stack==0) ? ((global_stack_top=opus_alloc_scratch(GLOBAL_STACK_SIZE*2)+(GLOBAL_STACK_SIZE*2))-(GLOBAL_STACK_SIZE*2)) : global_stack),VALGRIND_MAKE_MEM_NOACCESS(global_stack, global_stack_top-global_stack)); _saved_stack = global_stack;
-
-#else
-
-#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
-#define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)/sizeof(char)),(stack)+=(size)*(sizeof(type)/sizeof(char)),(type*)((stack)-(size)*(sizeof(type)/sizeof(char))))
-#if 0 /* Set this to 1 to instrument pseudostack usage */
-#define RESTORE_STACK (printf("%ld %s:%d\n", global_stack-scratch_ptr, __FILE__, __LINE__),global_stack = _saved_stack)
-#else
-#define RESTORE_STACK (global_stack = _saved_stack)
-#endif
-#define ALLOC_STACK char *_saved_stack; (global_stack = (global_stack==0) ? (scratch_ptr=opus_alloc_scratch(GLOBAL_STACK_SIZE)) : global_stack); _saved_stack = global_stack;
-
-#endif /* ENABLE_VALGRIND */
-
-#include "os_support.h"
-#define VARDECL(type, var) type *var
-#define ALLOC(var, size, type) var = PUSH(global_stack, size, type)
-#define SAVE_STACK char *_saved_stack = global_stack;
-#define ALLOC_NONE 0
-
-#endif /* VAR_ARRAYS */
-
-
-#ifdef ENABLE_VALGRIND
-
-#include <valgrind/memcheck.h>
-#define OPUS_CHECK_ARRAY(ptr, len) VALGRIND_CHECK_MEM_IS_DEFINED(ptr, len*sizeof(*ptr))
-#define OPUS_CHECK_VALUE(value) VALGRIND_CHECK_VALUE_IS_DEFINED(value)
-#define OPUS_CHECK_ARRAY_COND(ptr, len) VALGRIND_CHECK_MEM_IS_DEFINED(ptr, len*sizeof(*ptr))
-#define OPUS_CHECK_VALUE_COND(value) VALGRIND_CHECK_VALUE_IS_DEFINED(value)
-#define OPUS_PRINT_INT(value) do {fprintf(stderr, #value " = %d at %s:%d\n", value, __FILE__, __LINE__);}while(0)
-#define OPUS_FPRINTF fprintf
-
-#else
-
-static OPUS_INLINE int _opus_false(void) {return 0;}
-#define OPUS_CHECK_ARRAY(ptr, len) _opus_false()
-#define OPUS_CHECK_VALUE(value) _opus_false()
-#define OPUS_PRINT_INT(value) do{}while(0)
-#define OPUS_FPRINTF (void)
-
-#endif
-
-
-#endif /* STACK_ALLOC_H */
diff --git a/thirdparty/opus/celt/static_modes_fixed.h b/thirdparty/opus/celt/static_modes_fixed.h
deleted file mode 100644
index 8717d626cb..0000000000
--- a/thirdparty/opus/celt/static_modes_fixed.h
+++ /dev/null
@@ -1,892 +0,0 @@
-/* The contents of this file was automatically generated by dump_modes.c
- with arguments: 48000 960
- It contains static definitions for some pre-defined modes. */
-#include "modes.h"
-#include "rate.h"
-
-#ifdef HAVE_ARM_NE10
-#define OVERRIDE_FFT 1
-#include "static_modes_fixed_arm_ne10.h"
-#endif
-
-#ifndef DEF_WINDOW120
-#define DEF_WINDOW120
-static const opus_val16 window120[120] = {
-2, 20, 55, 108, 178,
-266, 372, 494, 635, 792,
-966, 1157, 1365, 1590, 1831,
-2089, 2362, 2651, 2956, 3276,
-3611, 3961, 4325, 4703, 5094,
-5499, 5916, 6346, 6788, 7241,
-7705, 8179, 8663, 9156, 9657,
-10167, 10684, 11207, 11736, 12271,
-12810, 13353, 13899, 14447, 14997,
-15547, 16098, 16648, 17197, 17744,
-18287, 18827, 19363, 19893, 20418,
-20936, 21447, 21950, 22445, 22931,
-23407, 23874, 24330, 24774, 25208,
-25629, 26039, 26435, 26819, 27190,
-27548, 27893, 28224, 28541, 28845,
-29135, 29411, 29674, 29924, 30160,
-30384, 30594, 30792, 30977, 31151,
-31313, 31463, 31602, 31731, 31849,
-31958, 32057, 32148, 32229, 32303,
-32370, 32429, 32481, 32528, 32568,
-32604, 32634, 32661, 32683, 32701,
-32717, 32729, 32740, 32748, 32754,
-32758, 32762, 32764, 32766, 32767,
-32767, 32767, 32767, 32767, 32767,
-};
-#endif
-
-#ifndef DEF_LOGN400
-#define DEF_LOGN400
-static const opus_int16 logN400[21] = {
-0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 16, 16, 16, 21, 21, 24, 29, 34, 36, };
-#endif
-
-#ifndef DEF_PULSE_CACHE50
-#define DEF_PULSE_CACHE50
-static const opus_int16 cache_index50[105] = {
--1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 41, 41, 41,
-82, 82, 123, 164, 200, 222, 0, 0, 0, 0, 0, 0, 0, 0, 41,
-41, 41, 41, 123, 123, 123, 164, 164, 240, 266, 283, 295, 41, 41, 41,
-41, 41, 41, 41, 41, 123, 123, 123, 123, 240, 240, 240, 266, 266, 305,
-318, 328, 336, 123, 123, 123, 123, 123, 123, 123, 123, 240, 240, 240, 240,
-305, 305, 305, 318, 318, 343, 351, 358, 364, 240, 240, 240, 240, 240, 240,
-240, 240, 305, 305, 305, 305, 343, 343, 343, 351, 351, 370, 376, 382, 387,
-};
-static const unsigned char cache_bits50[392] = {
-40, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 40, 15, 23, 28,
-31, 34, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 47, 49, 50,
-51, 52, 53, 54, 55, 55, 57, 58, 59, 60, 61, 62, 63, 63, 65,
-66, 67, 68, 69, 70, 71, 71, 40, 20, 33, 41, 48, 53, 57, 61,
-64, 66, 69, 71, 73, 75, 76, 78, 80, 82, 85, 87, 89, 91, 92,
-94, 96, 98, 101, 103, 105, 107, 108, 110, 112, 114, 117, 119, 121, 123,
-124, 126, 128, 40, 23, 39, 51, 60, 67, 73, 79, 83, 87, 91, 94,
-97, 100, 102, 105, 107, 111, 115, 118, 121, 124, 126, 129, 131, 135, 139,
-142, 145, 148, 150, 153, 155, 159, 163, 166, 169, 172, 174, 177, 179, 35,
-28, 49, 65, 78, 89, 99, 107, 114, 120, 126, 132, 136, 141, 145, 149,
-153, 159, 165, 171, 176, 180, 185, 189, 192, 199, 205, 211, 216, 220, 225,
-229, 232, 239, 245, 251, 21, 33, 58, 79, 97, 112, 125, 137, 148, 157,
-166, 174, 182, 189, 195, 201, 207, 217, 227, 235, 243, 251, 17, 35, 63,
-86, 106, 123, 139, 152, 165, 177, 187, 197, 206, 214, 222, 230, 237, 250,
-25, 31, 55, 75, 91, 105, 117, 128, 138, 146, 154, 161, 168, 174, 180,
-185, 190, 200, 208, 215, 222, 229, 235, 240, 245, 255, 16, 36, 65, 89,
-110, 128, 144, 159, 173, 185, 196, 207, 217, 226, 234, 242, 250, 11, 41,
-74, 103, 128, 151, 172, 191, 209, 225, 241, 255, 9, 43, 79, 110, 138,
-163, 186, 207, 227, 246, 12, 39, 71, 99, 123, 144, 164, 182, 198, 214,
-228, 241, 253, 9, 44, 81, 113, 142, 168, 192, 214, 235, 255, 7, 49,
-90, 127, 160, 191, 220, 247, 6, 51, 95, 134, 170, 203, 234, 7, 47,
-87, 123, 155, 184, 212, 237, 6, 52, 97, 137, 174, 208, 240, 5, 57,
-106, 151, 192, 231, 5, 59, 111, 158, 202, 243, 5, 55, 103, 147, 187,
-224, 5, 60, 113, 161, 206, 248, 4, 65, 122, 175, 224, 4, 67, 127,
-182, 234, };
-static const unsigned char cache_caps50[168] = {
-224, 224, 224, 224, 224, 224, 224, 224, 160, 160, 160, 160, 185, 185, 185,
-178, 178, 168, 134, 61, 37, 224, 224, 224, 224, 224, 224, 224, 224, 240,
-240, 240, 240, 207, 207, 207, 198, 198, 183, 144, 66, 40, 160, 160, 160,
-160, 160, 160, 160, 160, 185, 185, 185, 185, 193, 193, 193, 183, 183, 172,
-138, 64, 38, 240, 240, 240, 240, 240, 240, 240, 240, 207, 207, 207, 207,
-204, 204, 204, 193, 193, 180, 143, 66, 40, 185, 185, 185, 185, 185, 185,
-185, 185, 193, 193, 193, 193, 193, 193, 193, 183, 183, 172, 138, 65, 39,
-207, 207, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 201, 201, 201,
-188, 188, 176, 141, 66, 40, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-193, 193, 193, 194, 194, 194, 184, 184, 173, 139, 65, 39, 204, 204, 204,
-204, 204, 204, 204, 204, 201, 201, 201, 201, 198, 198, 198, 187, 187, 175,
-140, 66, 40, };
-#endif
-
-#ifndef FFT_TWIDDLES48000_960
-#define FFT_TWIDDLES48000_960
-static const kiss_twiddle_cpx fft_twiddles48000_960[480] = {
-{32767, 0}, {32766, -429},
-{32757, -858}, {32743, -1287},
-{32724, -1715}, {32698, -2143},
-{32667, -2570}, {32631, -2998},
-{32588, -3425}, {32541, -3851},
-{32488, -4277}, {32429, -4701},
-{32364, -5125}, {32295, -5548},
-{32219, -5971}, {32138, -6393},
-{32051, -6813}, {31960, -7231},
-{31863, -7650}, {31760, -8067},
-{31652, -8481}, {31539, -8895},
-{31419, -9306}, {31294, -9716},
-{31165, -10126}, {31030, -10532},
-{30889, -10937}, {30743, -11340},
-{30592, -11741}, {30436, -12141},
-{30274, -12540}, {30107, -12935},
-{29936, -13328}, {29758, -13718},
-{29577, -14107}, {29390, -14493},
-{29197, -14875}, {29000, -15257},
-{28797, -15635}, {28590, -16010},
-{28379, -16384}, {28162, -16753},
-{27940, -17119}, {27714, -17484},
-{27482, -17845}, {27246, -18205},
-{27006, -18560}, {26760, -18911},
-{26510, -19260}, {26257, -19606},
-{25997, -19947}, {25734, -20286},
-{25466, -20621}, {25194, -20952},
-{24918, -21281}, {24637, -21605},
-{24353, -21926}, {24063, -22242},
-{23770, -22555}, {23473, -22865},
-{23171, -23171}, {22866, -23472},
-{22557, -23769}, {22244, -24063},
-{21927, -24352}, {21606, -24636},
-{21282, -24917}, {20954, -25194},
-{20622, -25465}, {20288, -25733},
-{19949, -25997}, {19607, -26255},
-{19261, -26509}, {18914, -26760},
-{18561, -27004}, {18205, -27246},
-{17846, -27481}, {17485, -27713},
-{17122, -27940}, {16755, -28162},
-{16385, -28378}, {16012, -28590},
-{15636, -28797}, {15258, -28999},
-{14878, -29197}, {14494, -29389},
-{14108, -29576}, {13720, -29757},
-{13329, -29934}, {12937, -30107},
-{12540, -30274}, {12142, -30435},
-{11744, -30592}, {11342, -30743},
-{10939, -30889}, {10534, -31030},
-{10127, -31164}, {9718, -31294},
-{9307, -31418}, {8895, -31537},
-{8482, -31652}, {8067, -31759},
-{7650, -31862}, {7233, -31960},
-{6815, -32051}, {6393, -32138},
-{5973, -32219}, {5549, -32294},
-{5127, -32364}, {4703, -32429},
-{4278, -32487}, {3852, -32541},
-{3426, -32588}, {2999, -32630},
-{2572, -32667}, {2144, -32698},
-{1716, -32724}, {1287, -32742},
-{860, -32757}, {430, -32766},
-{0, -32767}, {-429, -32766},
-{-858, -32757}, {-1287, -32743},
-{-1715, -32724}, {-2143, -32698},
-{-2570, -32667}, {-2998, -32631},
-{-3425, -32588}, {-3851, -32541},
-{-4277, -32488}, {-4701, -32429},
-{-5125, -32364}, {-5548, -32295},
-{-5971, -32219}, {-6393, -32138},
-{-6813, -32051}, {-7231, -31960},
-{-7650, -31863}, {-8067, -31760},
-{-8481, -31652}, {-8895, -31539},
-{-9306, -31419}, {-9716, -31294},
-{-10126, -31165}, {-10532, -31030},
-{-10937, -30889}, {-11340, -30743},
-{-11741, -30592}, {-12141, -30436},
-{-12540, -30274}, {-12935, -30107},
-{-13328, -29936}, {-13718, -29758},
-{-14107, -29577}, {-14493, -29390},
-{-14875, -29197}, {-15257, -29000},
-{-15635, -28797}, {-16010, -28590},
-{-16384, -28379}, {-16753, -28162},
-{-17119, -27940}, {-17484, -27714},
-{-17845, -27482}, {-18205, -27246},
-{-18560, -27006}, {-18911, -26760},
-{-19260, -26510}, {-19606, -26257},
-{-19947, -25997}, {-20286, -25734},
-{-20621, -25466}, {-20952, -25194},
-{-21281, -24918}, {-21605, -24637},
-{-21926, -24353}, {-22242, -24063},
-{-22555, -23770}, {-22865, -23473},
-{-23171, -23171}, {-23472, -22866},
-{-23769, -22557}, {-24063, -22244},
-{-24352, -21927}, {-24636, -21606},
-{-24917, -21282}, {-25194, -20954},
-{-25465, -20622}, {-25733, -20288},
-{-25997, -19949}, {-26255, -19607},
-{-26509, -19261}, {-26760, -18914},
-{-27004, -18561}, {-27246, -18205},
-{-27481, -17846}, {-27713, -17485},
-{-27940, -17122}, {-28162, -16755},
-{-28378, -16385}, {-28590, -16012},
-{-28797, -15636}, {-28999, -15258},
-{-29197, -14878}, {-29389, -14494},
-{-29576, -14108}, {-29757, -13720},
-{-29934, -13329}, {-30107, -12937},
-{-30274, -12540}, {-30435, -12142},
-{-30592, -11744}, {-30743, -11342},
-{-30889, -10939}, {-31030, -10534},
-{-31164, -10127}, {-31294, -9718},
-{-31418, -9307}, {-31537, -8895},
-{-31652, -8482}, {-31759, -8067},
-{-31862, -7650}, {-31960, -7233},
-{-32051, -6815}, {-32138, -6393},
-{-32219, -5973}, {-32294, -5549},
-{-32364, -5127}, {-32429, -4703},
-{-32487, -4278}, {-32541, -3852},
-{-32588, -3426}, {-32630, -2999},
-{-32667, -2572}, {-32698, -2144},
-{-32724, -1716}, {-32742, -1287},
-{-32757, -860}, {-32766, -430},
-{-32767, 0}, {-32766, 429},
-{-32757, 858}, {-32743, 1287},
-{-32724, 1715}, {-32698, 2143},
-{-32667, 2570}, {-32631, 2998},
-{-32588, 3425}, {-32541, 3851},
-{-32488, 4277}, {-32429, 4701},
-{-32364, 5125}, {-32295, 5548},
-{-32219, 5971}, {-32138, 6393},
-{-32051, 6813}, {-31960, 7231},
-{-31863, 7650}, {-31760, 8067},
-{-31652, 8481}, {-31539, 8895},
-{-31419, 9306}, {-31294, 9716},
-{-31165, 10126}, {-31030, 10532},
-{-30889, 10937}, {-30743, 11340},
-{-30592, 11741}, {-30436, 12141},
-{-30274, 12540}, {-30107, 12935},
-{-29936, 13328}, {-29758, 13718},
-{-29577, 14107}, {-29390, 14493},
-{-29197, 14875}, {-29000, 15257},
-{-28797, 15635}, {-28590, 16010},
-{-28379, 16384}, {-28162, 16753},
-{-27940, 17119}, {-27714, 17484},
-{-27482, 17845}, {-27246, 18205},
-{-27006, 18560}, {-26760, 18911},
-{-26510, 19260}, {-26257, 19606},
-{-25997, 19947}, {-25734, 20286},
-{-25466, 20621}, {-25194, 20952},
-{-24918, 21281}, {-24637, 21605},
-{-24353, 21926}, {-24063, 22242},
-{-23770, 22555}, {-23473, 22865},
-{-23171, 23171}, {-22866, 23472},
-{-22557, 23769}, {-22244, 24063},
-{-21927, 24352}, {-21606, 24636},
-{-21282, 24917}, {-20954, 25194},
-{-20622, 25465}, {-20288, 25733},
-{-19949, 25997}, {-19607, 26255},
-{-19261, 26509}, {-18914, 26760},
-{-18561, 27004}, {-18205, 27246},
-{-17846, 27481}, {-17485, 27713},
-{-17122, 27940}, {-16755, 28162},
-{-16385, 28378}, {-16012, 28590},
-{-15636, 28797}, {-15258, 28999},
-{-14878, 29197}, {-14494, 29389},
-{-14108, 29576}, {-13720, 29757},
-{-13329, 29934}, {-12937, 30107},
-{-12540, 30274}, {-12142, 30435},
-{-11744, 30592}, {-11342, 30743},
-{-10939, 30889}, {-10534, 31030},
-{-10127, 31164}, {-9718, 31294},
-{-9307, 31418}, {-8895, 31537},
-{-8482, 31652}, {-8067, 31759},
-{-7650, 31862}, {-7233, 31960},
-{-6815, 32051}, {-6393, 32138},
-{-5973, 32219}, {-5549, 32294},
-{-5127, 32364}, {-4703, 32429},
-{-4278, 32487}, {-3852, 32541},
-{-3426, 32588}, {-2999, 32630},
-{-2572, 32667}, {-2144, 32698},
-{-1716, 32724}, {-1287, 32742},
-{-860, 32757}, {-430, 32766},
-{0, 32767}, {429, 32766},
-{858, 32757}, {1287, 32743},
-{1715, 32724}, {2143, 32698},
-{2570, 32667}, {2998, 32631},
-{3425, 32588}, {3851, 32541},
-{4277, 32488}, {4701, 32429},
-{5125, 32364}, {5548, 32295},
-{5971, 32219}, {6393, 32138},
-{6813, 32051}, {7231, 31960},
-{7650, 31863}, {8067, 31760},
-{8481, 31652}, {8895, 31539},
-{9306, 31419}, {9716, 31294},
-{10126, 31165}, {10532, 31030},
-{10937, 30889}, {11340, 30743},
-{11741, 30592}, {12141, 30436},
-{12540, 30274}, {12935, 30107},
-{13328, 29936}, {13718, 29758},
-{14107, 29577}, {14493, 29390},
-{14875, 29197}, {15257, 29000},
-{15635, 28797}, {16010, 28590},
-{16384, 28379}, {16753, 28162},
-{17119, 27940}, {17484, 27714},
-{17845, 27482}, {18205, 27246},
-{18560, 27006}, {18911, 26760},
-{19260, 26510}, {19606, 26257},
-{19947, 25997}, {20286, 25734},
-{20621, 25466}, {20952, 25194},
-{21281, 24918}, {21605, 24637},
-{21926, 24353}, {22242, 24063},
-{22555, 23770}, {22865, 23473},
-{23171, 23171}, {23472, 22866},
-{23769, 22557}, {24063, 22244},
-{24352, 21927}, {24636, 21606},
-{24917, 21282}, {25194, 20954},
-{25465, 20622}, {25733, 20288},
-{25997, 19949}, {26255, 19607},
-{26509, 19261}, {26760, 18914},
-{27004, 18561}, {27246, 18205},
-{27481, 17846}, {27713, 17485},
-{27940, 17122}, {28162, 16755},
-{28378, 16385}, {28590, 16012},
-{28797, 15636}, {28999, 15258},
-{29197, 14878}, {29389, 14494},
-{29576, 14108}, {29757, 13720},
-{29934, 13329}, {30107, 12937},
-{30274, 12540}, {30435, 12142},
-{30592, 11744}, {30743, 11342},
-{30889, 10939}, {31030, 10534},
-{31164, 10127}, {31294, 9718},
-{31418, 9307}, {31537, 8895},
-{31652, 8482}, {31759, 8067},
-{31862, 7650}, {31960, 7233},
-{32051, 6815}, {32138, 6393},
-{32219, 5973}, {32294, 5549},
-{32364, 5127}, {32429, 4703},
-{32487, 4278}, {32541, 3852},
-{32588, 3426}, {32630, 2999},
-{32667, 2572}, {32698, 2144},
-{32724, 1716}, {32742, 1287},
-{32757, 860}, {32766, 430},
-};
-#ifndef FFT_BITREV480
-#define FFT_BITREV480
-static const opus_int16 fft_bitrev480[480] = {
-0, 96, 192, 288, 384, 32, 128, 224, 320, 416, 64, 160, 256, 352, 448,
-8, 104, 200, 296, 392, 40, 136, 232, 328, 424, 72, 168, 264, 360, 456,
-16, 112, 208, 304, 400, 48, 144, 240, 336, 432, 80, 176, 272, 368, 464,
-24, 120, 216, 312, 408, 56, 152, 248, 344, 440, 88, 184, 280, 376, 472,
-4, 100, 196, 292, 388, 36, 132, 228, 324, 420, 68, 164, 260, 356, 452,
-12, 108, 204, 300, 396, 44, 140, 236, 332, 428, 76, 172, 268, 364, 460,
-20, 116, 212, 308, 404, 52, 148, 244, 340, 436, 84, 180, 276, 372, 468,
-28, 124, 220, 316, 412, 60, 156, 252, 348, 444, 92, 188, 284, 380, 476,
-1, 97, 193, 289, 385, 33, 129, 225, 321, 417, 65, 161, 257, 353, 449,
-9, 105, 201, 297, 393, 41, 137, 233, 329, 425, 73, 169, 265, 361, 457,
-17, 113, 209, 305, 401, 49, 145, 241, 337, 433, 81, 177, 273, 369, 465,
-25, 121, 217, 313, 409, 57, 153, 249, 345, 441, 89, 185, 281, 377, 473,
-5, 101, 197, 293, 389, 37, 133, 229, 325, 421, 69, 165, 261, 357, 453,
-13, 109, 205, 301, 397, 45, 141, 237, 333, 429, 77, 173, 269, 365, 461,
-21, 117, 213, 309, 405, 53, 149, 245, 341, 437, 85, 181, 277, 373, 469,
-29, 125, 221, 317, 413, 61, 157, 253, 349, 445, 93, 189, 285, 381, 477,
-2, 98, 194, 290, 386, 34, 130, 226, 322, 418, 66, 162, 258, 354, 450,
-10, 106, 202, 298, 394, 42, 138, 234, 330, 426, 74, 170, 266, 362, 458,
-18, 114, 210, 306, 402, 50, 146, 242, 338, 434, 82, 178, 274, 370, 466,
-26, 122, 218, 314, 410, 58, 154, 250, 346, 442, 90, 186, 282, 378, 474,
-6, 102, 198, 294, 390, 38, 134, 230, 326, 422, 70, 166, 262, 358, 454,
-14, 110, 206, 302, 398, 46, 142, 238, 334, 430, 78, 174, 270, 366, 462,
-22, 118, 214, 310, 406, 54, 150, 246, 342, 438, 86, 182, 278, 374, 470,
-30, 126, 222, 318, 414, 62, 158, 254, 350, 446, 94, 190, 286, 382, 478,
-3, 99, 195, 291, 387, 35, 131, 227, 323, 419, 67, 163, 259, 355, 451,
-11, 107, 203, 299, 395, 43, 139, 235, 331, 427, 75, 171, 267, 363, 459,
-19, 115, 211, 307, 403, 51, 147, 243, 339, 435, 83, 179, 275, 371, 467,
-27, 123, 219, 315, 411, 59, 155, 251, 347, 443, 91, 187, 283, 379, 475,
-7, 103, 199, 295, 391, 39, 135, 231, 327, 423, 71, 167, 263, 359, 455,
-15, 111, 207, 303, 399, 47, 143, 239, 335, 431, 79, 175, 271, 367, 463,
-23, 119, 215, 311, 407, 55, 151, 247, 343, 439, 87, 183, 279, 375, 471,
-31, 127, 223, 319, 415, 63, 159, 255, 351, 447, 95, 191, 287, 383, 479,
-};
-#endif
-
-#ifndef FFT_BITREV240
-#define FFT_BITREV240
-static const opus_int16 fft_bitrev240[240] = {
-0, 48, 96, 144, 192, 16, 64, 112, 160, 208, 32, 80, 128, 176, 224,
-4, 52, 100, 148, 196, 20, 68, 116, 164, 212, 36, 84, 132, 180, 228,
-8, 56, 104, 152, 200, 24, 72, 120, 168, 216, 40, 88, 136, 184, 232,
-12, 60, 108, 156, 204, 28, 76, 124, 172, 220, 44, 92, 140, 188, 236,
-1, 49, 97, 145, 193, 17, 65, 113, 161, 209, 33, 81, 129, 177, 225,
-5, 53, 101, 149, 197, 21, 69, 117, 165, 213, 37, 85, 133, 181, 229,
-9, 57, 105, 153, 201, 25, 73, 121, 169, 217, 41, 89, 137, 185, 233,
-13, 61, 109, 157, 205, 29, 77, 125, 173, 221, 45, 93, 141, 189, 237,
-2, 50, 98, 146, 194, 18, 66, 114, 162, 210, 34, 82, 130, 178, 226,
-6, 54, 102, 150, 198, 22, 70, 118, 166, 214, 38, 86, 134, 182, 230,
-10, 58, 106, 154, 202, 26, 74, 122, 170, 218, 42, 90, 138, 186, 234,
-14, 62, 110, 158, 206, 30, 78, 126, 174, 222, 46, 94, 142, 190, 238,
-3, 51, 99, 147, 195, 19, 67, 115, 163, 211, 35, 83, 131, 179, 227,
-7, 55, 103, 151, 199, 23, 71, 119, 167, 215, 39, 87, 135, 183, 231,
-11, 59, 107, 155, 203, 27, 75, 123, 171, 219, 43, 91, 139, 187, 235,
-15, 63, 111, 159, 207, 31, 79, 127, 175, 223, 47, 95, 143, 191, 239,
-};
-#endif
-
-#ifndef FFT_BITREV120
-#define FFT_BITREV120
-static const opus_int16 fft_bitrev120[120] = {
-0, 24, 48, 72, 96, 8, 32, 56, 80, 104, 16, 40, 64, 88, 112,
-4, 28, 52, 76, 100, 12, 36, 60, 84, 108, 20, 44, 68, 92, 116,
-1, 25, 49, 73, 97, 9, 33, 57, 81, 105, 17, 41, 65, 89, 113,
-5, 29, 53, 77, 101, 13, 37, 61, 85, 109, 21, 45, 69, 93, 117,
-2, 26, 50, 74, 98, 10, 34, 58, 82, 106, 18, 42, 66, 90, 114,
-6, 30, 54, 78, 102, 14, 38, 62, 86, 110, 22, 46, 70, 94, 118,
-3, 27, 51, 75, 99, 11, 35, 59, 83, 107, 19, 43, 67, 91, 115,
-7, 31, 55, 79, 103, 15, 39, 63, 87, 111, 23, 47, 71, 95, 119,
-};
-#endif
-
-#ifndef FFT_BITREV60
-#define FFT_BITREV60
-static const opus_int16 fft_bitrev60[60] = {
-0, 12, 24, 36, 48, 4, 16, 28, 40, 52, 8, 20, 32, 44, 56,
-1, 13, 25, 37, 49, 5, 17, 29, 41, 53, 9, 21, 33, 45, 57,
-2, 14, 26, 38, 50, 6, 18, 30, 42, 54, 10, 22, 34, 46, 58,
-3, 15, 27, 39, 51, 7, 19, 31, 43, 55, 11, 23, 35, 47, 59,
-};
-#endif
-
-#ifndef FFT_STATE48000_960_0
-#define FFT_STATE48000_960_0
-static const kiss_fft_state fft_state48000_960_0 = {
-480, /* nfft */
-17476, /* scale */
-8, /* scale_shift */
--1, /* shift */
-{5, 96, 3, 32, 4, 8, 2, 4, 4, 1, 0, 0, 0, 0, 0, 0, }, /* factors */
-fft_bitrev480, /* bitrev */
-fft_twiddles48000_960, /* bitrev */
-#ifdef OVERRIDE_FFT
-(arch_fft_state *)&cfg_arch_480,
-#else
-NULL,
-#endif
-};
-#endif
-
-#ifndef FFT_STATE48000_960_1
-#define FFT_STATE48000_960_1
-static const kiss_fft_state fft_state48000_960_1 = {
-240, /* nfft */
-17476, /* scale */
-7, /* scale_shift */
-1, /* shift */
-{5, 48, 3, 16, 4, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */
-fft_bitrev240, /* bitrev */
-fft_twiddles48000_960, /* bitrev */
-#ifdef OVERRIDE_FFT
-(arch_fft_state *)&cfg_arch_240,
-#else
-NULL,
-#endif
-};
-#endif
-
-#ifndef FFT_STATE48000_960_2
-#define FFT_STATE48000_960_2
-static const kiss_fft_state fft_state48000_960_2 = {
-120, /* nfft */
-17476, /* scale */
-6, /* scale_shift */
-2, /* shift */
-{5, 24, 3, 8, 2, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */
-fft_bitrev120, /* bitrev */
-fft_twiddles48000_960, /* bitrev */
-#ifdef OVERRIDE_FFT
-(arch_fft_state *)&cfg_arch_120,
-#else
-NULL,
-#endif
-};
-#endif
-
-#ifndef FFT_STATE48000_960_3
-#define FFT_STATE48000_960_3
-static const kiss_fft_state fft_state48000_960_3 = {
-60, /* nfft */
-17476, /* scale */
-5, /* scale_shift */
-3, /* shift */
-{5, 12, 3, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */
-fft_bitrev60, /* bitrev */
-fft_twiddles48000_960, /* bitrev */
-#ifdef OVERRIDE_FFT
-(arch_fft_state *)&cfg_arch_60,
-#else
-NULL,
-#endif
-};
-#endif
-
-#endif
-
-#ifndef MDCT_TWIDDLES960
-#define MDCT_TWIDDLES960
-static const opus_val16 mdct_twiddles960[1800] = {
-32767, 32767, 32767, 32766, 32765,
-32763, 32761, 32759, 32756, 32753,
-32750, 32746, 32742, 32738, 32733,
-32728, 32722, 32717, 32710, 32704,
-32697, 32690, 32682, 32674, 32666,
-32657, 32648, 32639, 32629, 32619,
-32609, 32598, 32587, 32576, 32564,
-32552, 32539, 32526, 32513, 32500,
-32486, 32472, 32457, 32442, 32427,
-32411, 32395, 32379, 32362, 32345,
-32328, 32310, 32292, 32274, 32255,
-32236, 32217, 32197, 32177, 32157,
-32136, 32115, 32093, 32071, 32049,
-32027, 32004, 31981, 31957, 31933,
-31909, 31884, 31859, 31834, 31809,
-31783, 31756, 31730, 31703, 31676,
-31648, 31620, 31592, 31563, 31534,
-31505, 31475, 31445, 31415, 31384,
-31353, 31322, 31290, 31258, 31226,
-31193, 31160, 31127, 31093, 31059,
-31025, 30990, 30955, 30920, 30884,
-30848, 30812, 30775, 30738, 30701,
-30663, 30625, 30587, 30548, 30509,
-30470, 30430, 30390, 30350, 30309,
-30269, 30227, 30186, 30144, 30102,
-30059, 30016, 29973, 29930, 29886,
-29842, 29797, 29752, 29707, 29662,
-29616, 29570, 29524, 29477, 29430,
-29383, 29335, 29287, 29239, 29190,
-29142, 29092, 29043, 28993, 28943,
-28892, 28842, 28791, 28739, 28688,
-28636, 28583, 28531, 28478, 28425,
-28371, 28317, 28263, 28209, 28154,
-28099, 28044, 27988, 27932, 27876,
-27820, 27763, 27706, 27648, 27591,
-27533, 27474, 27416, 27357, 27298,
-27238, 27178, 27118, 27058, 26997,
-26936, 26875, 26814, 26752, 26690,
-26628, 26565, 26502, 26439, 26375,
-26312, 26247, 26183, 26119, 26054,
-25988, 25923, 25857, 25791, 25725,
-25658, 25592, 25524, 25457, 25389,
-25322, 25253, 25185, 25116, 25047,
-24978, 24908, 24838, 24768, 24698,
-24627, 24557, 24485, 24414, 24342,
-24270, 24198, 24126, 24053, 23980,
-23907, 23834, 23760, 23686, 23612,
-23537, 23462, 23387, 23312, 23237,
-23161, 23085, 23009, 22932, 22856,
-22779, 22701, 22624, 22546, 22468,
-22390, 22312, 22233, 22154, 22075,
-21996, 21916, 21836, 21756, 21676,
-21595, 21515, 21434, 21352, 21271,
-21189, 21107, 21025, 20943, 20860,
-20777, 20694, 20611, 20528, 20444,
-20360, 20276, 20192, 20107, 20022,
-19937, 19852, 19767, 19681, 19595,
-19509, 19423, 19336, 19250, 19163,
-19076, 18988, 18901, 18813, 18725,
-18637, 18549, 18460, 18372, 18283,
-18194, 18104, 18015, 17925, 17835,
-17745, 17655, 17565, 17474, 17383,
-17292, 17201, 17110, 17018, 16927,
-16835, 16743, 16650, 16558, 16465,
-16372, 16279, 16186, 16093, 15999,
-15906, 15812, 15718, 15624, 15529,
-15435, 15340, 15245, 15150, 15055,
-14960, 14864, 14769, 14673, 14577,
-14481, 14385, 14288, 14192, 14095,
-13998, 13901, 13804, 13706, 13609,
-13511, 13414, 13316, 13218, 13119,
-13021, 12923, 12824, 12725, 12626,
-12527, 12428, 12329, 12230, 12130,
-12030, 11930, 11831, 11730, 11630,
-11530, 11430, 11329, 11228, 11128,
-11027, 10926, 10824, 10723, 10622,
-10520, 10419, 10317, 10215, 10113,
-10011, 9909, 9807, 9704, 9602,
-9499, 9397, 9294, 9191, 9088,
-8985, 8882, 8778, 8675, 8572,
-8468, 8364, 8261, 8157, 8053,
-7949, 7845, 7741, 7637, 7532,
-7428, 7323, 7219, 7114, 7009,
-6905, 6800, 6695, 6590, 6485,
-6380, 6274, 6169, 6064, 5958,
-5853, 5747, 5642, 5536, 5430,
-5325, 5219, 5113, 5007, 4901,
-4795, 4689, 4583, 4476, 4370,
-4264, 4157, 4051, 3945, 3838,
-3732, 3625, 3518, 3412, 3305,
-3198, 3092, 2985, 2878, 2771,
-2664, 2558, 2451, 2344, 2237,
-2130, 2023, 1916, 1809, 1702,
-1594, 1487, 1380, 1273, 1166,
-1059, 952, 844, 737, 630,
-523, 416, 308, 201, 94,
--13, -121, -228, -335, -442,
--550, -657, -764, -871, -978,
--1086, -1193, -1300, -1407, -1514,
--1621, -1728, -1835, -1942, -2049,
--2157, -2263, -2370, -2477, -2584,
--2691, -2798, -2905, -3012, -3118,
--3225, -3332, -3439, -3545, -3652,
--3758, -3865, -3971, -4078, -4184,
--4290, -4397, -4503, -4609, -4715,
--4821, -4927, -5033, -5139, -5245,
--5351, -5457, -5562, -5668, -5774,
--5879, -5985, -6090, -6195, -6301,
--6406, -6511, -6616, -6721, -6826,
--6931, -7036, -7140, -7245, -7349,
--7454, -7558, -7663, -7767, -7871,
--7975, -8079, -8183, -8287, -8390,
--8494, -8597, -8701, -8804, -8907,
--9011, -9114, -9217, -9319, -9422,
--9525, -9627, -9730, -9832, -9934,
--10037, -10139, -10241, -10342, -10444,
--10546, -10647, -10748, -10850, -10951,
--11052, -11153, -11253, -11354, -11455,
--11555, -11655, -11756, -11856, -11955,
--12055, -12155, -12254, -12354, -12453,
--12552, -12651, -12750, -12849, -12947,
--13046, -13144, -13242, -13340, -13438,
--13536, -13633, -13731, -13828, -13925,
--14022, -14119, -14216, -14312, -14409,
--14505, -14601, -14697, -14793, -14888,
--14984, -15079, -15174, -15269, -15364,
--15459, -15553, -15647, -15741, -15835,
--15929, -16023, -16116, -16210, -16303,
--16396, -16488, -16581, -16673, -16766,
--16858, -16949, -17041, -17133, -17224,
--17315, -17406, -17497, -17587, -17678,
--17768, -17858, -17948, -18037, -18127,
--18216, -18305, -18394, -18483, -18571,
--18659, -18747, -18835, -18923, -19010,
--19098, -19185, -19271, -19358, -19444,
--19531, -19617, -19702, -19788, -19873,
--19959, -20043, -20128, -20213, -20297,
--20381, -20465, -20549, -20632, -20715,
--20798, -20881, -20963, -21046, -21128,
--21210, -21291, -21373, -21454, -21535,
--21616, -21696, -21776, -21856, -21936,
--22016, -22095, -22174, -22253, -22331,
--22410, -22488, -22566, -22643, -22721,
--22798, -22875, -22951, -23028, -23104,
--23180, -23256, -23331, -23406, -23481,
--23556, -23630, -23704, -23778, -23852,
--23925, -23998, -24071, -24144, -24216,
--24288, -24360, -24432, -24503, -24574,
--24645, -24716, -24786, -24856, -24926,
--24995, -25064, -25133, -25202, -25270,
--25339, -25406, -25474, -25541, -25608,
--25675, -25742, -25808, -25874, -25939,
--26005, -26070, -26135, -26199, -26264,
--26327, -26391, -26455, -26518, -26581,
--26643, -26705, -26767, -26829, -26891,
--26952, -27013, -27073, -27133, -27193,
--27253, -27312, -27372, -27430, -27489,
--27547, -27605, -27663, -27720, -27777,
--27834, -27890, -27946, -28002, -28058,
--28113, -28168, -28223, -28277, -28331,
--28385, -28438, -28491, -28544, -28596,
--28649, -28701, -28752, -28803, -28854,
--28905, -28955, -29006, -29055, -29105,
--29154, -29203, -29251, -29299, -29347,
--29395, -29442, -29489, -29535, -29582,
--29628, -29673, -29719, -29764, -29808,
--29853, -29897, -29941, -29984, -30027,
--30070, -30112, -30154, -30196, -30238,
--30279, -30320, -30360, -30400, -30440,
--30480, -30519, -30558, -30596, -30635,
--30672, -30710, -30747, -30784, -30821,
--30857, -30893, -30929, -30964, -30999,
--31033, -31068, -31102, -31135, -31168,
--31201, -31234, -31266, -31298, -31330,
--31361, -31392, -31422, -31453, -31483,
--31512, -31541, -31570, -31599, -31627,
--31655, -31682, -31710, -31737, -31763,
--31789, -31815, -31841, -31866, -31891,
--31915, -31939, -31963, -31986, -32010,
--32032, -32055, -32077, -32099, -32120,
--32141, -32162, -32182, -32202, -32222,
--32241, -32260, -32279, -32297, -32315,
--32333, -32350, -32367, -32383, -32399,
--32415, -32431, -32446, -32461, -32475,
--32489, -32503, -32517, -32530, -32542,
--32555, -32567, -32579, -32590, -32601,
--32612, -32622, -32632, -32641, -32651,
--32659, -32668, -32676, -32684, -32692,
--32699, -32706, -32712, -32718, -32724,
--32729, -32734, -32739, -32743, -32747,
--32751, -32754, -32757, -32760, -32762,
--32764, -32765, -32767, -32767, -32767,
-32767, 32767, 32765, 32761, 32756,
-32750, 32742, 32732, 32722, 32710,
-32696, 32681, 32665, 32647, 32628,
-32608, 32586, 32562, 32538, 32512,
-32484, 32455, 32425, 32393, 32360,
-32326, 32290, 32253, 32214, 32174,
-32133, 32090, 32046, 32001, 31954,
-31906, 31856, 31805, 31753, 31700,
-31645, 31588, 31530, 31471, 31411,
-31349, 31286, 31222, 31156, 31089,
-31020, 30951, 30880, 30807, 30733,
-30658, 30582, 30504, 30425, 30345,
-30263, 30181, 30096, 30011, 29924,
-29836, 29747, 29656, 29564, 29471,
-29377, 29281, 29184, 29086, 28987,
-28886, 28784, 28681, 28577, 28471,
-28365, 28257, 28147, 28037, 27925,
-27812, 27698, 27583, 27467, 27349,
-27231, 27111, 26990, 26868, 26744,
-26620, 26494, 26367, 26239, 26110,
-25980, 25849, 25717, 25583, 25449,
-25313, 25176, 25038, 24900, 24760,
-24619, 24477, 24333, 24189, 24044,
-23898, 23751, 23602, 23453, 23303,
-23152, 22999, 22846, 22692, 22537,
-22380, 22223, 22065, 21906, 21746,
-21585, 21423, 21261, 21097, 20933,
-20767, 20601, 20434, 20265, 20096,
-19927, 19756, 19584, 19412, 19239,
-19065, 18890, 18714, 18538, 18361,
-18183, 18004, 17824, 17644, 17463,
-17281, 17098, 16915, 16731, 16546,
-16361, 16175, 15988, 15800, 15612,
-15423, 15234, 15043, 14852, 14661,
-14469, 14276, 14083, 13889, 13694,
-13499, 13303, 13107, 12910, 12713,
-12515, 12317, 12118, 11918, 11718,
-11517, 11316, 11115, 10913, 10710,
-10508, 10304, 10100, 9896, 9691,
-9486, 9281, 9075, 8869, 8662,
-8455, 8248, 8040, 7832, 7623,
-7415, 7206, 6996, 6787, 6577,
-6366, 6156, 5945, 5734, 5523,
-5311, 5100, 4888, 4675, 4463,
-4251, 4038, 3825, 3612, 3399,
-3185, 2972, 2758, 2544, 2330,
-2116, 1902, 1688, 1474, 1260,
-1045, 831, 617, 402, 188,
--27, -241, -456, -670, -885,
--1099, -1313, -1528, -1742, -1956,
--2170, -2384, -2598, -2811, -3025,
--3239, -3452, -3665, -3878, -4091,
--4304, -4516, -4728, -4941, -5153,
--5364, -5576, -5787, -5998, -6209,
--6419, -6629, -6839, -7049, -7258,
--7467, -7676, -7884, -8092, -8300,
--8507, -8714, -8920, -9127, -9332,
--9538, -9743, -9947, -10151, -10355,
--10558, -10761, -10963, -11165, -11367,
--11568, -11768, -11968, -12167, -12366,
--12565, -12762, -12960, -13156, -13352,
--13548, -13743, -13937, -14131, -14324,
--14517, -14709, -14900, -15091, -15281,
--15470, -15659, -15847, -16035, -16221,
--16407, -16593, -16777, -16961, -17144,
--17326, -17508, -17689, -17869, -18049,
--18227, -18405, -18582, -18758, -18934,
--19108, -19282, -19455, -19627, -19799,
--19969, -20139, -20308, -20475, -20642,
--20809, -20974, -21138, -21301, -21464,
--21626, -21786, -21946, -22105, -22263,
--22420, -22575, -22730, -22884, -23037,
--23189, -23340, -23490, -23640, -23788,
--23935, -24080, -24225, -24369, -24512,
--24654, -24795, -24934, -25073, -25211,
--25347, -25482, -25617, -25750, -25882,
--26013, -26143, -26272, -26399, -26526,
--26651, -26775, -26898, -27020, -27141,
--27260, -27379, -27496, -27612, -27727,
--27841, -27953, -28065, -28175, -28284,
--28391, -28498, -28603, -28707, -28810,
--28911, -29012, -29111, -29209, -29305,
--29401, -29495, -29587, -29679, -29769,
--29858, -29946, -30032, -30118, -30201,
--30284, -30365, -30445, -30524, -30601,
--30677, -30752, -30825, -30897, -30968,
--31038, -31106, -31172, -31238, -31302,
--31365, -31426, -31486, -31545, -31602,
--31658, -31713, -31766, -31818, -31869,
--31918, -31966, -32012, -32058, -32101,
--32144, -32185, -32224, -32262, -32299,
--32335, -32369, -32401, -32433, -32463,
--32491, -32518, -32544, -32568, -32591,
--32613, -32633, -32652, -32669, -32685,
--32700, -32713, -32724, -32735, -32744,
--32751, -32757, -32762, -32766, -32767,
-32767, 32764, 32755, 32741, 32720,
-32694, 32663, 32626, 32583, 32535,
-32481, 32421, 32356, 32286, 32209,
-32128, 32041, 31948, 31850, 31747,
-31638, 31523, 31403, 31278, 31148,
-31012, 30871, 30724, 30572, 30415,
-30253, 30086, 29913, 29736, 29553,
-29365, 29172, 28974, 28771, 28564,
-28351, 28134, 27911, 27684, 27452,
-27216, 26975, 26729, 26478, 26223,
-25964, 25700, 25432, 25159, 24882,
-24601, 24315, 24026, 23732, 23434,
-23133, 22827, 22517, 22204, 21886,
-21565, 21240, 20912, 20580, 20244,
-19905, 19563, 19217, 18868, 18516,
-18160, 17802, 17440, 17075, 16708,
-16338, 15964, 15588, 15210, 14829,
-14445, 14059, 13670, 13279, 12886,
-12490, 12093, 11693, 11291, 10888,
-10482, 10075, 9666, 9255, 8843,
-8429, 8014, 7597, 7180, 6760,
-6340, 5919, 5496, 5073, 4649,
-4224, 3798, 3372, 2945, 2517,
-2090, 1661, 1233, 804, 375,
--54, -483, -911, -1340, -1768,
--2197, -2624, -3052, -3479, -3905,
--4330, -4755, -5179, -5602, -6024,
--6445, -6865, -7284, -7702, -8118,
--8533, -8946, -9358, -9768, -10177,
--10584, -10989, -11392, -11793, -12192,
--12589, -12984, -13377, -13767, -14155,
--14541, -14924, -15305, -15683, -16058,
--16430, -16800, -17167, -17531, -17892,
--18249, -18604, -18956, -19304, -19649,
--19990, -20329, -20663, -20994, -21322,
--21646, -21966, -22282, -22595, -22904,
--23208, -23509, -23806, -24099, -24387,
--24672, -24952, -25228, -25499, -25766,
--26029, -26288, -26541, -26791, -27035,
--27275, -27511, -27741, -27967, -28188,
--28405, -28616, -28823, -29024, -29221,
--29412, -29599, -29780, -29957, -30128,
--30294, -30455, -30611, -30761, -30906,
--31046, -31181, -31310, -31434, -31552,
--31665, -31773, -31875, -31972, -32063,
--32149, -32229, -32304, -32373, -32437,
--32495, -32547, -32594, -32635, -32671,
--32701, -32726, -32745, -32758, -32766,
-32767, 32754, 32717, 32658, 32577,
-32473, 32348, 32200, 32029, 31837,
-31624, 31388, 31131, 30853, 30553,
-30232, 29891, 29530, 29148, 28746,
-28324, 27883, 27423, 26944, 26447,
-25931, 25398, 24847, 24279, 23695,
-23095, 22478, 21846, 21199, 20538,
-19863, 19174, 18472, 17757, 17030,
-16291, 15541, 14781, 14010, 13230,
-12441, 11643, 10837, 10024, 9204,
-8377, 7545, 6708, 5866, 5020,
-4171, 3319, 2464, 1608, 751,
--107, -965, -1822, -2678, -3532,
--4383, -5232, -6077, -6918, -7754,
--8585, -9409, -10228, -11039, -11843,
--12639, -13426, -14204, -14972, -15730,
--16477, -17213, -17937, -18648, -19347,
--20033, -20705, -21363, -22006, -22634,
--23246, -23843, -24423, -24986, -25533,
--26062, -26573, -27066, -27540, -27995,
--28431, -28848, -29245, -29622, -29979,
--30315, -30630, -30924, -31197, -31449,
--31679, -31887, -32074, -32239, -32381,
--32501, -32600, -32675, -32729, -32759,
-};
-#endif
-
-static const CELTMode mode48000_960_120 = {
-48000, /* Fs */
-120, /* overlap */
-21, /* nbEBands */
-21, /* effEBands */
-{27853, 0, 4096, 8192, }, /* preemph */
-eband5ms, /* eBands */
-3, /* maxLM */
-8, /* nbShortMdcts */
-120, /* shortMdctSize */
-11, /* nbAllocVectors */
-band_allocation, /* allocVectors */
-logN400, /* logN */
-window120, /* window */
-{1920, 3, {&fft_state48000_960_0, &fft_state48000_960_1, &fft_state48000_960_2, &fft_state48000_960_3, }, mdct_twiddles960}, /* mdct */
-{392, cache_index50, cache_bits50, cache_caps50}, /* cache */
-};
-
-/* List of all the available modes */
-#define TOTAL_MODES 1
-static const CELTMode * const static_mode_list[TOTAL_MODES] = {
-&mode48000_960_120,
-};
diff --git a/thirdparty/opus/celt/static_modes_fixed_arm_ne10.h b/thirdparty/opus/celt/static_modes_fixed_arm_ne10.h
deleted file mode 100644
index b8ef0cee98..0000000000
--- a/thirdparty/opus/celt/static_modes_fixed_arm_ne10.h
+++ /dev/null
@@ -1,388 +0,0 @@
-/* The contents of this file was automatically generated by
- * dump_mode_arm_ne10.c with arguments: 48000 960
- * It contains static definitions for some pre-defined modes. */
-#include <NE10_init.h>
-
-#ifndef NE10_FFT_PARAMS48000_960
-#define NE10_FFT_PARAMS48000_960
-static const ne10_int32_t ne10_factors_480[64] = {
-4, 40, 4, 30, 2, 15, 5, 3, 3, 1, 1, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, };
-static const ne10_int32_t ne10_factors_240[64] = {
-3, 20, 4, 15, 5, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, };
-static const ne10_int32_t ne10_factors_120[64] = {
-3, 10, 2, 15, 5, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, };
-static const ne10_int32_t ne10_factors_60[64] = {
-2, 5, 5, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, };
-static const ne10_fft_cpx_int32_t ne10_twiddles_480[480] = {
-{0,0}, {2147483647,0}, {2147483647,0},
-{2147483647,0}, {1961823921,-873460313}, {1436946998,-1595891394},
-{2147483647,0}, {1436946998,-1595891394}, {-224473265,-2135719496},
-{2147483647,0}, {663608871,-2042378339}, {-1737350854,-1262259096},
-{2147483647,0}, {-224473265,-2135719496}, {-2100555935,446487152},
-{2147483647,0}, {2100555974,-446486968}, {1961823921,-873460313},
-{1737350743,-1262259248}, {1436946998,-1595891394}, {1073741769,-1859775424},
-{663608871,-2042378339}, {224473078,-2135719516}, {-224473265,-2135719496},
-{-663609049,-2042378281}, {-1073741932,-1859775330}, {-1436947137,-1595891268},
-{-1737350854,-1262259096}, {-1961823997,-873460141}, {-2100556013,-446486785},
-{2147483647,0}, {2144540595,-112390613}, {2135719506,-224473172},
-{2121044558,-335940465}, {2100555974,-446486968}, {2074309912,-555809682},
-{2042378310,-663608960}, {2004848691,-769589332}, {1961823921,-873460313},
-{1913421927,-974937199}, {1859775377,-1073741851}, {1801031311,-1169603450},
-{1737350743,-1262259248}, {1668908218,-1351455280}, {1595891331,-1436947067},
-{1518500216,-1518500282}, {1436946998,-1595891394}, {1351455207,-1668908277},
-{1262259172,-1737350799}, {1169603371,-1801031362}, {1073741769,-1859775424},
-{974937230,-1913421912}, {873460227,-1961823959}, {769589125,-2004848771},
-{663608871,-2042378339}, {555809715,-2074309903}, {446486876,-2100555994},
-{335940246,-2121044593}, {224473078,-2135719516}, {112390647,-2144540593},
-{2147483647,0}, {2135719506,-224473172}, {2100555974,-446486968},
-{2042378310,-663608960}, {1961823921,-873460313}, {1859775377,-1073741851},
-{1737350743,-1262259248}, {1595891331,-1436947067}, {1436946998,-1595891394},
-{1262259172,-1737350799}, {1073741769,-1859775424}, {873460227,-1961823959},
-{663608871,-2042378339}, {446486876,-2100555994}, {224473078,-2135719516},
-{-94,-2147483647}, {-224473265,-2135719496}, {-446487060,-2100555955},
-{-663609049,-2042378281}, {-873460398,-1961823883}, {-1073741932,-1859775330},
-{-1262259116,-1737350839}, {-1436947137,-1595891268}, {-1595891628,-1436946738},
-{-1737350854,-1262259096}, {-1859775343,-1073741910}, {-1961823997,-873460141},
-{-2042378447,-663608538}, {-2100556013,-446486785}, {-2135719499,-224473240},
-{2147483647,0}, {2121044558,-335940465}, {2042378310,-663608960},
-{1913421927,-974937199}, {1737350743,-1262259248}, {1518500216,-1518500282},
-{1262259172,-1737350799}, {974937230,-1913421912}, {663608871,-2042378339},
-{335940246,-2121044593}, {-94,-2147483647}, {-335940431,-2121044564},
-{-663609049,-2042378281}, {-974937397,-1913421827}, {-1262259116,-1737350839},
-{-1518500258,-1518500240}, {-1737350854,-1262259096}, {-1913422071,-974936918},
-{-2042378447,-663608538}, {-2121044568,-335940406}, {-2147483647,188},
-{-2121044509,335940777}, {-2042378331,663608895}, {-1913421900,974937252},
-{-1737350633,1262259400}, {-1518499993,1518500506}, {-1262258813,1737351059},
-{-974936606,1913422229}, {-663609179,2042378239}, {-335940566,2121044542},
-{2147483647,0}, {2147299667,-28109693}, {2146747758,-56214570},
-{2145828015,-84309815}, {2144540595,-112390613}, {2142885719,-140452154},
-{2140863671,-168489630}, {2138474797,-196498235}, {2135719506,-224473172},
-{2132598271,-252409646}, {2129111626,-280302871}, {2125260168,-308148068},
-{2121044558,-335940465}, {2116465518,-363675300}, {2111523833,-391347822},
-{2106220349,-418953288}, {2100555974,-446486968}, {2094531681,-473944146},
-{2088148500,-501320115}, {2081407525,-528610186}, {2074309912,-555809682},
-{2066856885,-582913912}, {2059049696,-609918325}, {2050889698,-636818231},
-{2042378310,-663608960}, {2033516972,-690285983}, {2024307180,-716844791},
-{2014750533,-743280770}, {2004848691,-769589332}, {1994603329,-795766029},
-{1984016179,-821806435}, {1973089077,-847706028}, {1961823921,-873460313},
-{1950222618,-899064934}, {1938287127,-924515564}, {1926019520,-949807783},
-{1913421927,-974937199}, {1900496481,-999899565}, {1887245364,-1024690661},
-{1873670877,-1049306180}, {1859775377,-1073741851}, {1845561215,-1097993541},
-{1831030826,-1122057097}, {1816186632,-1145928502}, {1801031311,-1169603450},
-{1785567394,-1193077993}, {1769797456,-1216348214}, {1753724345,-1239409914},
-{1737350743,-1262259248}, {1720679456,-1284892300}, {1703713340,-1307305194},
-{1686455222,-1329494189}, {1668908218,-1351455280}, {1651075255,-1373184807},
-{1632959307,-1394679144}, {1614563642,-1415934412}, {1595891331,-1436947067},
-{1576945572,-1457713510}, {1557729613,-1478230181}, {1538246655,-1498493658},
-{1518500216,-1518500282}, {1498493590,-1538246721}, {1478230113,-1557729677},
-{1457713441,-1576945636}, {1436946998,-1595891394}, {1415934341,-1614563704},
-{1394679073,-1632959368}, {1373184735,-1651075315}, {1351455207,-1668908277},
-{1329494115,-1686455280}, {1307305120,-1703713397}, {1284892225,-1720679512},
-{1262259172,-1737350799}, {1239409837,-1753724400}, {1216348136,-1769797510},
-{1193077915,-1785567446}, {1169603371,-1801031362}, {1145928423,-1816186682},
-{1122057017,-1831030875}, {1097993571,-1845561197}, {1073741769,-1859775424},
-{1049305987,-1873670985}, {1024690635,-1887245378}, {999899482,-1900496524},
-{974937230,-1913421912}, {949807699,-1926019561}, {924515422,-1938287195},
-{899064965,-1950222603}, {873460227,-1961823959}, {847705824,-1973089164},
-{821806407,-1984016190}, {795765941,-1994603364}, {769589125,-2004848771},
-{743280682,-2014750566}, {716844642,-2024307233}, {690286016,-2033516961},
-{663608871,-2042378339}, {636818019,-2050889764}, {609918296,-2059049705},
-{582913822,-2066856911}, {555809715,-2074309903}, {528610126,-2081407540},
-{501319962,-2088148536}, {473944148,-2094531680}, {446486876,-2100555994},
-{418953102,-2106220386}, {391347792,-2111523838}, {363675176,-2116465540},
-{335940246,-2121044593}, {308148006,-2125260177}, {280302715,-2129111646},
-{252409648,-2132598271}, {224473078,-2135719516}, {196498046,-2138474814},
-{168489600,-2140863674}, {140452029,-2142885728}, {112390647,-2144540593},
-{84309753,-2145828017}, {56214412,-2146747762}, {28109695,-2147299667},
-{2147483647,0}, {2146747758,-56214570}, {2144540595,-112390613},
-{2140863671,-168489630}, {2135719506,-224473172}, {2129111626,-280302871},
-{2121044558,-335940465}, {2111523833,-391347822}, {2100555974,-446486968},
-{2088148500,-501320115}, {2074309912,-555809682}, {2059049696,-609918325},
-{2042378310,-663608960}, {2024307180,-716844791}, {2004848691,-769589332},
-{1984016179,-821806435}, {1961823921,-873460313}, {1938287127,-924515564},
-{1913421927,-974937199}, {1887245364,-1024690661}, {1859775377,-1073741851},
-{1831030826,-1122057097}, {1801031311,-1169603450}, {1769797456,-1216348214},
-{1737350743,-1262259248}, {1703713340,-1307305194}, {1668908218,-1351455280},
-{1632959307,-1394679144}, {1595891331,-1436947067}, {1557729613,-1478230181},
-{1518500216,-1518500282}, {1478230113,-1557729677}, {1436946998,-1595891394},
-{1394679073,-1632959368}, {1351455207,-1668908277}, {1307305120,-1703713397},
-{1262259172,-1737350799}, {1216348136,-1769797510}, {1169603371,-1801031362},
-{1122057017,-1831030875}, {1073741769,-1859775424}, {1024690635,-1887245378},
-{974937230,-1913421912}, {924515422,-1938287195}, {873460227,-1961823959},
-{821806407,-1984016190}, {769589125,-2004848771}, {716844642,-2024307233},
-{663608871,-2042378339}, {609918296,-2059049705}, {555809715,-2074309903},
-{501319962,-2088148536}, {446486876,-2100555994}, {391347792,-2111523838},
-{335940246,-2121044593}, {280302715,-2129111646}, {224473078,-2135719516},
-{168489600,-2140863674}, {112390647,-2144540593}, {56214412,-2146747762},
-{-94,-2147483647}, {-56214600,-2146747757}, {-112390835,-2144540584},
-{-168489787,-2140863659}, {-224473265,-2135719496}, {-280302901,-2129111622},
-{-335940431,-2121044564}, {-391347977,-2111523804}, {-446487060,-2100555955},
-{-501320144,-2088148493}, {-555809896,-2074309855}, {-609918476,-2059049651},
-{-663609049,-2042378281}, {-716844819,-2024307170}, {-769589300,-2004848703},
-{-821806581,-1984016118}, {-873460398,-1961823883}, {-924515591,-1938287114},
-{-974937397,-1913421827}, {-1024690575,-1887245411}, {-1073741932,-1859775330},
-{-1122057395,-1831030643}, {-1169603421,-1801031330}, {-1216348291,-1769797403},
-{-1262259116,-1737350839}, {-1307305268,-1703713283}, {-1351455453,-1668908078},
-{-1394679021,-1632959413}, {-1436947137,-1595891268}, {-1478230435,-1557729372},
-{-1518500258,-1518500240}, {-1557729742,-1478230045}, {-1595891628,-1436946738},
-{-1632959429,-1394679001}, {-1668908417,-1351455035}, {-1703713298,-1307305248},
-{-1737350854,-1262259096}, {-1769797708,-1216347848}, {-1801031344,-1169603400},
-{-1831030924,-1122056937}, {-1859775343,-1073741910}, {-1887245423,-1024690552},
-{-1913422071,-974936918}, {-1938287125,-924515568}, {-1961823997,-873460141},
-{-1984016324,-821806084}, {-2004848713,-769589276}, {-2024307264,-716844553},
-{-2042378447,-663608538}, {-2059049731,-609918206}, {-2074309994,-555809377},
-{-2088148499,-501320119}, {-2100556013,-446486785}, {-2111523902,-391347448},
-{-2121044568,-335940406}, {-2129111659,-280302621}, {-2135719499,-224473240},
-{-2140863681,-168489506}, {-2144540612,-112390298}, {-2146747758,-56214574},
-{2147483647,0}, {2145828015,-84309815}, {2140863671,-168489630},
-{2132598271,-252409646}, {2121044558,-335940465}, {2106220349,-418953288},
-{2088148500,-501320115}, {2066856885,-582913912}, {2042378310,-663608960},
-{2014750533,-743280770}, {1984016179,-821806435}, {1950222618,-899064934},
-{1913421927,-974937199}, {1873670877,-1049306180}, {1831030826,-1122057097},
-{1785567394,-1193077993}, {1737350743,-1262259248}, {1686455222,-1329494189},
-{1632959307,-1394679144}, {1576945572,-1457713510}, {1518500216,-1518500282},
-{1457713441,-1576945636}, {1394679073,-1632959368}, {1329494115,-1686455280},
-{1262259172,-1737350799}, {1193077915,-1785567446}, {1122057017,-1831030875},
-{1049305987,-1873670985}, {974937230,-1913421912}, {899064965,-1950222603},
-{821806407,-1984016190}, {743280682,-2014750566}, {663608871,-2042378339},
-{582913822,-2066856911}, {501319962,-2088148536}, {418953102,-2106220386},
-{335940246,-2121044593}, {252409648,-2132598271}, {168489600,-2140863674},
-{84309753,-2145828017}, {-94,-2147483647}, {-84309940,-2145828010},
-{-168489787,-2140863659}, {-252409834,-2132598249}, {-335940431,-2121044564},
-{-418953286,-2106220349}, {-501320144,-2088148493}, {-582914003,-2066856860},
-{-663609049,-2042378281}, {-743280858,-2014750501}, {-821806581,-1984016118},
-{-899065136,-1950222525}, {-974937397,-1913421827}, {-1049306374,-1873670768},
-{-1122057395,-1831030643}, {-1193078284,-1785567199}, {-1262259116,-1737350839},
-{-1329494061,-1686455323}, {-1394679021,-1632959413}, {-1457713485,-1576945595},
-{-1518500258,-1518500240}, {-1576945613,-1457713466}, {-1632959429,-1394679001},
-{-1686455338,-1329494041}, {-1737350854,-1262259096}, {-1785567498,-1193077837},
-{-1831030924,-1122056937}, {-1873671031,-1049305905}, {-1913422071,-974936918},
-{-1950222750,-899064648}, {-1984016324,-821806084}, {-2014750687,-743280354},
-{-2042378447,-663608538}, {-2066856867,-582913978}, {-2088148499,-501320119},
-{-2106220354,-418953261}, {-2121044568,-335940406}, {-2132598282,-252409555},
-{-2140863681,-168489506}, {-2145828021,-84309659}, {-2147483647,188},
-{-2145828006,84310034}, {-2140863651,168489881}, {-2132598237,252409928},
-{-2121044509,335940777}, {-2106220281,418953629}, {-2088148411,501320484},
-{-2066856765,582914339}, {-2042378331,663608895}, {-2014750557,743280706},
-{-1984016181,821806431}, {-1950222593,899064989}, {-1913421900,974937252},
-{-1873670848,1049306232}, {-1831030728,1122057257}, {-1785567289,1193078149},
-{-1737350633,1262259400}, {-1686455106,1329494336}, {-1632959185,1394679287},
-{-1576945358,1457713742}, {-1518499993,1518500506}, {-1457713209,1576945850},
-{-1394678735,1632959656}, {-1329493766,1686455555}, {-1262258813,1737351059},
-{-1193077546,1785567692}, {-1122056638,1831031107}, {-1049305599,1873671202},
-{-974936606,1913422229}, {-899064330,1950222896}, {-821805761,1984016458},
-{-743280025,2014750808}, {-663609179,2042378239}, {-582914134,2066856823},
-{-501320277,2088148461}, {-418953420,2106220322}, {-335940566,2121044542},
-{-252409716,2132598263}, {-168489668,2140863668}, {-84309821,2145828015},
-};
-static const ne10_fft_cpx_int32_t ne10_twiddles_240[240] = {
-{0,0}, {2147483647,0}, {2147483647,0},
-{2147483647,0}, {1961823921,-873460313}, {1436946998,-1595891394},
-{2147483647,0}, {1436946998,-1595891394}, {-224473265,-2135719496},
-{2147483647,0}, {663608871,-2042378339}, {-1737350854,-1262259096},
-{2147483647,0}, {-224473265,-2135719496}, {-2100555935,446487152},
-{2147483647,0}, {2135719506,-224473172}, {2100555974,-446486968},
-{2042378310,-663608960}, {1961823921,-873460313}, {1859775377,-1073741851},
-{1737350743,-1262259248}, {1595891331,-1436947067}, {1436946998,-1595891394},
-{1262259172,-1737350799}, {1073741769,-1859775424}, {873460227,-1961823959},
-{663608871,-2042378339}, {446486876,-2100555994}, {224473078,-2135719516},
-{2147483647,0}, {2100555974,-446486968}, {1961823921,-873460313},
-{1737350743,-1262259248}, {1436946998,-1595891394}, {1073741769,-1859775424},
-{663608871,-2042378339}, {224473078,-2135719516}, {-224473265,-2135719496},
-{-663609049,-2042378281}, {-1073741932,-1859775330}, {-1436947137,-1595891268},
-{-1737350854,-1262259096}, {-1961823997,-873460141}, {-2100556013,-446486785},
-{2147483647,0}, {2042378310,-663608960}, {1737350743,-1262259248},
-{1262259172,-1737350799}, {663608871,-2042378339}, {-94,-2147483647},
-{-663609049,-2042378281}, {-1262259116,-1737350839}, {-1737350854,-1262259096},
-{-2042378447,-663608538}, {-2147483647,188}, {-2042378331,663608895},
-{-1737350633,1262259400}, {-1262258813,1737351059}, {-663609179,2042378239},
-{2147483647,0}, {2146747758,-56214570}, {2144540595,-112390613},
-{2140863671,-168489630}, {2135719506,-224473172}, {2129111626,-280302871},
-{2121044558,-335940465}, {2111523833,-391347822}, {2100555974,-446486968},
-{2088148500,-501320115}, {2074309912,-555809682}, {2059049696,-609918325},
-{2042378310,-663608960}, {2024307180,-716844791}, {2004848691,-769589332},
-{1984016179,-821806435}, {1961823921,-873460313}, {1938287127,-924515564},
-{1913421927,-974937199}, {1887245364,-1024690661}, {1859775377,-1073741851},
-{1831030826,-1122057097}, {1801031311,-1169603450}, {1769797456,-1216348214},
-{1737350743,-1262259248}, {1703713340,-1307305194}, {1668908218,-1351455280},
-{1632959307,-1394679144}, {1595891331,-1436947067}, {1557729613,-1478230181},
-{1518500216,-1518500282}, {1478230113,-1557729677}, {1436946998,-1595891394},
-{1394679073,-1632959368}, {1351455207,-1668908277}, {1307305120,-1703713397},
-{1262259172,-1737350799}, {1216348136,-1769797510}, {1169603371,-1801031362},
-{1122057017,-1831030875}, {1073741769,-1859775424}, {1024690635,-1887245378},
-{974937230,-1913421912}, {924515422,-1938287195}, {873460227,-1961823959},
-{821806407,-1984016190}, {769589125,-2004848771}, {716844642,-2024307233},
-{663608871,-2042378339}, {609918296,-2059049705}, {555809715,-2074309903},
-{501319962,-2088148536}, {446486876,-2100555994}, {391347792,-2111523838},
-{335940246,-2121044593}, {280302715,-2129111646}, {224473078,-2135719516},
-{168489600,-2140863674}, {112390647,-2144540593}, {56214412,-2146747762},
-{2147483647,0}, {2144540595,-112390613}, {2135719506,-224473172},
-{2121044558,-335940465}, {2100555974,-446486968}, {2074309912,-555809682},
-{2042378310,-663608960}, {2004848691,-769589332}, {1961823921,-873460313},
-{1913421927,-974937199}, {1859775377,-1073741851}, {1801031311,-1169603450},
-{1737350743,-1262259248}, {1668908218,-1351455280}, {1595891331,-1436947067},
-{1518500216,-1518500282}, {1436946998,-1595891394}, {1351455207,-1668908277},
-{1262259172,-1737350799}, {1169603371,-1801031362}, {1073741769,-1859775424},
-{974937230,-1913421912}, {873460227,-1961823959}, {769589125,-2004848771},
-{663608871,-2042378339}, {555809715,-2074309903}, {446486876,-2100555994},
-{335940246,-2121044593}, {224473078,-2135719516}, {112390647,-2144540593},
-{-94,-2147483647}, {-112390835,-2144540584}, {-224473265,-2135719496},
-{-335940431,-2121044564}, {-446487060,-2100555955}, {-555809896,-2074309855},
-{-663609049,-2042378281}, {-769589300,-2004848703}, {-873460398,-1961823883},
-{-974937397,-1913421827}, {-1073741932,-1859775330}, {-1169603421,-1801031330},
-{-1262259116,-1737350839}, {-1351455453,-1668908078}, {-1436947137,-1595891268},
-{-1518500258,-1518500240}, {-1595891628,-1436946738}, {-1668908417,-1351455035},
-{-1737350854,-1262259096}, {-1801031344,-1169603400}, {-1859775343,-1073741910},
-{-1913422071,-974936918}, {-1961823997,-873460141}, {-2004848713,-769589276},
-{-2042378447,-663608538}, {-2074309994,-555809377}, {-2100556013,-446486785},
-{-2121044568,-335940406}, {-2135719499,-224473240}, {-2144540612,-112390298},
-{2147483647,0}, {2140863671,-168489630}, {2121044558,-335940465},
-{2088148500,-501320115}, {2042378310,-663608960}, {1984016179,-821806435},
-{1913421927,-974937199}, {1831030826,-1122057097}, {1737350743,-1262259248},
-{1632959307,-1394679144}, {1518500216,-1518500282}, {1394679073,-1632959368},
-{1262259172,-1737350799}, {1122057017,-1831030875}, {974937230,-1913421912},
-{821806407,-1984016190}, {663608871,-2042378339}, {501319962,-2088148536},
-{335940246,-2121044593}, {168489600,-2140863674}, {-94,-2147483647},
-{-168489787,-2140863659}, {-335940431,-2121044564}, {-501320144,-2088148493},
-{-663609049,-2042378281}, {-821806581,-1984016118}, {-974937397,-1913421827},
-{-1122057395,-1831030643}, {-1262259116,-1737350839}, {-1394679021,-1632959413},
-{-1518500258,-1518500240}, {-1632959429,-1394679001}, {-1737350854,-1262259096},
-{-1831030924,-1122056937}, {-1913422071,-974936918}, {-1984016324,-821806084},
-{-2042378447,-663608538}, {-2088148499,-501320119}, {-2121044568,-335940406},
-{-2140863681,-168489506}, {-2147483647,188}, {-2140863651,168489881},
-{-2121044509,335940777}, {-2088148411,501320484}, {-2042378331,663608895},
-{-1984016181,821806431}, {-1913421900,974937252}, {-1831030728,1122057257},
-{-1737350633,1262259400}, {-1632959185,1394679287}, {-1518499993,1518500506},
-{-1394678735,1632959656}, {-1262258813,1737351059}, {-1122056638,1831031107},
-{-974936606,1913422229}, {-821805761,1984016458}, {-663609179,2042378239},
-{-501320277,2088148461}, {-335940566,2121044542}, {-168489668,2140863668},
-};
-static const ne10_fft_cpx_int32_t ne10_twiddles_120[120] = {
-{0,0}, {2147483647,0}, {2147483647,0},
-{2147483647,0}, {1961823921,-873460313}, {1436946998,-1595891394},
-{2147483647,0}, {1436946998,-1595891394}, {-224473265,-2135719496},
-{2147483647,0}, {663608871,-2042378339}, {-1737350854,-1262259096},
-{2147483647,0}, {-224473265,-2135719496}, {-2100555935,446487152},
-{2147483647,0}, {2100555974,-446486968}, {1961823921,-873460313},
-{1737350743,-1262259248}, {1436946998,-1595891394}, {1073741769,-1859775424},
-{663608871,-2042378339}, {224473078,-2135719516}, {-224473265,-2135719496},
-{-663609049,-2042378281}, {-1073741932,-1859775330}, {-1436947137,-1595891268},
-{-1737350854,-1262259096}, {-1961823997,-873460141}, {-2100556013,-446486785},
-{2147483647,0}, {2144540595,-112390613}, {2135719506,-224473172},
-{2121044558,-335940465}, {2100555974,-446486968}, {2074309912,-555809682},
-{2042378310,-663608960}, {2004848691,-769589332}, {1961823921,-873460313},
-{1913421927,-974937199}, {1859775377,-1073741851}, {1801031311,-1169603450},
-{1737350743,-1262259248}, {1668908218,-1351455280}, {1595891331,-1436947067},
-{1518500216,-1518500282}, {1436946998,-1595891394}, {1351455207,-1668908277},
-{1262259172,-1737350799}, {1169603371,-1801031362}, {1073741769,-1859775424},
-{974937230,-1913421912}, {873460227,-1961823959}, {769589125,-2004848771},
-{663608871,-2042378339}, {555809715,-2074309903}, {446486876,-2100555994},
-{335940246,-2121044593}, {224473078,-2135719516}, {112390647,-2144540593},
-{2147483647,0}, {2135719506,-224473172}, {2100555974,-446486968},
-{2042378310,-663608960}, {1961823921,-873460313}, {1859775377,-1073741851},
-{1737350743,-1262259248}, {1595891331,-1436947067}, {1436946998,-1595891394},
-{1262259172,-1737350799}, {1073741769,-1859775424}, {873460227,-1961823959},
-{663608871,-2042378339}, {446486876,-2100555994}, {224473078,-2135719516},
-{-94,-2147483647}, {-224473265,-2135719496}, {-446487060,-2100555955},
-{-663609049,-2042378281}, {-873460398,-1961823883}, {-1073741932,-1859775330},
-{-1262259116,-1737350839}, {-1436947137,-1595891268}, {-1595891628,-1436946738},
-{-1737350854,-1262259096}, {-1859775343,-1073741910}, {-1961823997,-873460141},
-{-2042378447,-663608538}, {-2100556013,-446486785}, {-2135719499,-224473240},
-{2147483647,0}, {2121044558,-335940465}, {2042378310,-663608960},
-{1913421927,-974937199}, {1737350743,-1262259248}, {1518500216,-1518500282},
-{1262259172,-1737350799}, {974937230,-1913421912}, {663608871,-2042378339},
-{335940246,-2121044593}, {-94,-2147483647}, {-335940431,-2121044564},
-{-663609049,-2042378281}, {-974937397,-1913421827}, {-1262259116,-1737350839},
-{-1518500258,-1518500240}, {-1737350854,-1262259096}, {-1913422071,-974936918},
-{-2042378447,-663608538}, {-2121044568,-335940406}, {-2147483647,188},
-{-2121044509,335940777}, {-2042378331,663608895}, {-1913421900,974937252},
-{-1737350633,1262259400}, {-1518499993,1518500506}, {-1262258813,1737351059},
-{-974936606,1913422229}, {-663609179,2042378239}, {-335940566,2121044542},
-};
-static const ne10_fft_cpx_int32_t ne10_twiddles_60[60] = {
-{0,0}, {2147483647,0}, {2147483647,0},
-{2147483647,0}, {1961823921,-873460313}, {1436946998,-1595891394},
-{2147483647,0}, {1436946998,-1595891394}, {-224473265,-2135719496},
-{2147483647,0}, {663608871,-2042378339}, {-1737350854,-1262259096},
-{2147483647,0}, {-224473265,-2135719496}, {-2100555935,446487152},
-{2147483647,0}, {2135719506,-224473172}, {2100555974,-446486968},
-{2042378310,-663608960}, {1961823921,-873460313}, {1859775377,-1073741851},
-{1737350743,-1262259248}, {1595891331,-1436947067}, {1436946998,-1595891394},
-{1262259172,-1737350799}, {1073741769,-1859775424}, {873460227,-1961823959},
-{663608871,-2042378339}, {446486876,-2100555994}, {224473078,-2135719516},
-{2147483647,0}, {2100555974,-446486968}, {1961823921,-873460313},
-{1737350743,-1262259248}, {1436946998,-1595891394}, {1073741769,-1859775424},
-{663608871,-2042378339}, {224473078,-2135719516}, {-224473265,-2135719496},
-{-663609049,-2042378281}, {-1073741932,-1859775330}, {-1436947137,-1595891268},
-{-1737350854,-1262259096}, {-1961823997,-873460141}, {-2100556013,-446486785},
-{2147483647,0}, {2042378310,-663608960}, {1737350743,-1262259248},
-{1262259172,-1737350799}, {663608871,-2042378339}, {-94,-2147483647},
-{-663609049,-2042378281}, {-1262259116,-1737350839}, {-1737350854,-1262259096},
-{-2042378447,-663608538}, {-2147483647,188}, {-2042378331,663608895},
-{-1737350633,1262259400}, {-1262258813,1737351059}, {-663609179,2042378239},
-};
-static const ne10_fft_state_int32_t ne10_fft_state_int32_t_480 = {
-120,
-(ne10_int32_t *)ne10_factors_480,
-(ne10_fft_cpx_int32_t *)ne10_twiddles_480,
-NULL,
-(ne10_fft_cpx_int32_t *)&ne10_twiddles_480[120],
-};
-static const arch_fft_state cfg_arch_480 = {
-1,
-(void *)&ne10_fft_state_int32_t_480,
-};
-
-static const ne10_fft_state_int32_t ne10_fft_state_int32_t_240 = {
-60,
-(ne10_int32_t *)ne10_factors_240,
-(ne10_fft_cpx_int32_t *)ne10_twiddles_240,
-NULL,
-(ne10_fft_cpx_int32_t *)&ne10_twiddles_240[60],
-};
-static const arch_fft_state cfg_arch_240 = {
-1,
-(void *)&ne10_fft_state_int32_t_240,
-};
-
-static const ne10_fft_state_int32_t ne10_fft_state_int32_t_120 = {
-30,
-(ne10_int32_t *)ne10_factors_120,
-(ne10_fft_cpx_int32_t *)ne10_twiddles_120,
-NULL,
-(ne10_fft_cpx_int32_t *)&ne10_twiddles_120[30],
-};
-static const arch_fft_state cfg_arch_120 = {
-1,
-(void *)&ne10_fft_state_int32_t_120,
-};
-
-static const ne10_fft_state_int32_t ne10_fft_state_int32_t_60 = {
-15,
-(ne10_int32_t *)ne10_factors_60,
-(ne10_fft_cpx_int32_t *)ne10_twiddles_60,
-NULL,
-(ne10_fft_cpx_int32_t *)&ne10_twiddles_60[15],
-};
-static const arch_fft_state cfg_arch_60 = {
-1,
-(void *)&ne10_fft_state_int32_t_60,
-};
-
-#endif /* end NE10_FFT_PARAMS48000_960 */
diff --git a/thirdparty/opus/celt/static_modes_float.h b/thirdparty/opus/celt/static_modes_float.h
deleted file mode 100644
index e102a38391..0000000000
--- a/thirdparty/opus/celt/static_modes_float.h
+++ /dev/null
@@ -1,888 +0,0 @@
-/* The contents of this file was automatically generated by dump_modes.c
- with arguments: 48000 960
- It contains static definitions for some pre-defined modes. */
-#include "modes.h"
-#include "rate.h"
-
-#ifdef HAVE_ARM_NE10
-#define OVERRIDE_FFT 1
-#include "static_modes_float_arm_ne10.h"
-#endif
-
-#ifndef DEF_WINDOW120
-#define DEF_WINDOW120
-static const opus_val16 window120[120] = {
-6.7286966e-05f, 0.00060551348f, 0.0016815970f, 0.0032947962f, 0.0054439943f,
-0.0081276923f, 0.011344001f, 0.015090633f, 0.019364886f, 0.024163635f,
-0.029483315f, 0.035319905f, 0.041668911f, 0.048525347f, 0.055883718f,
-0.063737999f, 0.072081616f, 0.080907428f, 0.090207705f, 0.099974111f,
-0.11019769f, 0.12086883f, 0.13197729f, 0.14351214f, 0.15546177f,
-0.16781389f, 0.18055550f, 0.19367290f, 0.20715171f, 0.22097682f,
-0.23513243f, 0.24960208f, 0.26436860f, 0.27941419f, 0.29472040f,
-0.31026818f, 0.32603788f, 0.34200931f, 0.35816177f, 0.37447407f,
-0.39092462f, 0.40749142f, 0.42415215f, 0.44088423f, 0.45766484f,
-0.47447104f, 0.49127978f, 0.50806798f, 0.52481261f, 0.54149077f,
-0.55807973f, 0.57455701f, 0.59090049f, 0.60708841f, 0.62309951f,
-0.63891306f, 0.65450896f, 0.66986776f, 0.68497077f, 0.69980010f,
-0.71433873f, 0.72857055f, 0.74248043f, 0.75605424f, 0.76927895f,
-0.78214257f, 0.79463430f, 0.80674445f, 0.81846456f, 0.82978733f,
-0.84070669f, 0.85121779f, 0.86131698f, 0.87100183f, 0.88027111f,
-0.88912479f, 0.89756398f, 0.90559094f, 0.91320904f, 0.92042270f,
-0.92723738f, 0.93365955f, 0.93969656f, 0.94535671f, 0.95064907f,
-0.95558353f, 0.96017067f, 0.96442171f, 0.96834849f, 0.97196334f,
-0.97527906f, 0.97830883f, 0.98106616f, 0.98356480f, 0.98581869f,
-0.98784191f, 0.98964856f, 0.99125274f, 0.99266849f, 0.99390969f,
-0.99499004f, 0.99592297f, 0.99672162f, 0.99739874f, 0.99796667f,
-0.99843728f, 0.99882195f, 0.99913147f, 0.99937606f, 0.99956527f,
-0.99970802f, 0.99981248f, 0.99988613f, 0.99993565f, 0.99996697f,
-0.99998518f, 0.99999457f, 0.99999859f, 0.99999982f, 1.0000000f,
-};
-#endif
-
-#ifndef DEF_LOGN400
-#define DEF_LOGN400
-static const opus_int16 logN400[21] = {
-0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 16, 16, 16, 21, 21, 24, 29, 34, 36, };
-#endif
-
-#ifndef DEF_PULSE_CACHE50
-#define DEF_PULSE_CACHE50
-static const opus_int16 cache_index50[105] = {
--1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 41, 41, 41,
-82, 82, 123, 164, 200, 222, 0, 0, 0, 0, 0, 0, 0, 0, 41,
-41, 41, 41, 123, 123, 123, 164, 164, 240, 266, 283, 295, 41, 41, 41,
-41, 41, 41, 41, 41, 123, 123, 123, 123, 240, 240, 240, 266, 266, 305,
-318, 328, 336, 123, 123, 123, 123, 123, 123, 123, 123, 240, 240, 240, 240,
-305, 305, 305, 318, 318, 343, 351, 358, 364, 240, 240, 240, 240, 240, 240,
-240, 240, 305, 305, 305, 305, 343, 343, 343, 351, 351, 370, 376, 382, 387,
-};
-static const unsigned char cache_bits50[392] = {
-40, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 40, 15, 23, 28,
-31, 34, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 47, 49, 50,
-51, 52, 53, 54, 55, 55, 57, 58, 59, 60, 61, 62, 63, 63, 65,
-66, 67, 68, 69, 70, 71, 71, 40, 20, 33, 41, 48, 53, 57, 61,
-64, 66, 69, 71, 73, 75, 76, 78, 80, 82, 85, 87, 89, 91, 92,
-94, 96, 98, 101, 103, 105, 107, 108, 110, 112, 114, 117, 119, 121, 123,
-124, 126, 128, 40, 23, 39, 51, 60, 67, 73, 79, 83, 87, 91, 94,
-97, 100, 102, 105, 107, 111, 115, 118, 121, 124, 126, 129, 131, 135, 139,
-142, 145, 148, 150, 153, 155, 159, 163, 166, 169, 172, 174, 177, 179, 35,
-28, 49, 65, 78, 89, 99, 107, 114, 120, 126, 132, 136, 141, 145, 149,
-153, 159, 165, 171, 176, 180, 185, 189, 192, 199, 205, 211, 216, 220, 225,
-229, 232, 239, 245, 251, 21, 33, 58, 79, 97, 112, 125, 137, 148, 157,
-166, 174, 182, 189, 195, 201, 207, 217, 227, 235, 243, 251, 17, 35, 63,
-86, 106, 123, 139, 152, 165, 177, 187, 197, 206, 214, 222, 230, 237, 250,
-25, 31, 55, 75, 91, 105, 117, 128, 138, 146, 154, 161, 168, 174, 180,
-185, 190, 200, 208, 215, 222, 229, 235, 240, 245, 255, 16, 36, 65, 89,
-110, 128, 144, 159, 173, 185, 196, 207, 217, 226, 234, 242, 250, 11, 41,
-74, 103, 128, 151, 172, 191, 209, 225, 241, 255, 9, 43, 79, 110, 138,
-163, 186, 207, 227, 246, 12, 39, 71, 99, 123, 144, 164, 182, 198, 214,
-228, 241, 253, 9, 44, 81, 113, 142, 168, 192, 214, 235, 255, 7, 49,
-90, 127, 160, 191, 220, 247, 6, 51, 95, 134, 170, 203, 234, 7, 47,
-87, 123, 155, 184, 212, 237, 6, 52, 97, 137, 174, 208, 240, 5, 57,
-106, 151, 192, 231, 5, 59, 111, 158, 202, 243, 5, 55, 103, 147, 187,
-224, 5, 60, 113, 161, 206, 248, 4, 65, 122, 175, 224, 4, 67, 127,
-182, 234, };
-static const unsigned char cache_caps50[168] = {
-224, 224, 224, 224, 224, 224, 224, 224, 160, 160, 160, 160, 185, 185, 185,
-178, 178, 168, 134, 61, 37, 224, 224, 224, 224, 224, 224, 224, 224, 240,
-240, 240, 240, 207, 207, 207, 198, 198, 183, 144, 66, 40, 160, 160, 160,
-160, 160, 160, 160, 160, 185, 185, 185, 185, 193, 193, 193, 183, 183, 172,
-138, 64, 38, 240, 240, 240, 240, 240, 240, 240, 240, 207, 207, 207, 207,
-204, 204, 204, 193, 193, 180, 143, 66, 40, 185, 185, 185, 185, 185, 185,
-185, 185, 193, 193, 193, 193, 193, 193, 193, 183, 183, 172, 138, 65, 39,
-207, 207, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 201, 201, 201,
-188, 188, 176, 141, 66, 40, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-193, 193, 193, 194, 194, 194, 184, 184, 173, 139, 65, 39, 204, 204, 204,
-204, 204, 204, 204, 204, 201, 201, 201, 201, 198, 198, 198, 187, 187, 175,
-140, 66, 40, };
-#endif
-
-#ifndef FFT_TWIDDLES48000_960
-#define FFT_TWIDDLES48000_960
-static const kiss_twiddle_cpx fft_twiddles48000_960[480] = {
-{1.0000000f, -0.0000000f}, {0.99991433f, -0.013089596f},
-{0.99965732f, -0.026176948f}, {0.99922904f, -0.039259816f},
-{0.99862953f, -0.052335956f}, {0.99785892f, -0.065403129f},
-{0.99691733f, -0.078459096f}, {0.99580493f, -0.091501619f},
-{0.99452190f, -0.10452846f}, {0.99306846f, -0.11753740f},
-{0.99144486f, -0.13052619f}, {0.98965139f, -0.14349262f},
-{0.98768834f, -0.15643447f}, {0.98555606f, -0.16934950f},
-{0.98325491f, -0.18223553f}, {0.98078528f, -0.19509032f},
-{0.97814760f, -0.20791169f}, {0.97534232f, -0.22069744f},
-{0.97236992f, -0.23344536f}, {0.96923091f, -0.24615329f},
-{0.96592583f, -0.25881905f}, {0.96245524f, -0.27144045f},
-{0.95881973f, -0.28401534f}, {0.95501994f, -0.29654157f},
-{0.95105652f, -0.30901699f}, {0.94693013f, -0.32143947f},
-{0.94264149f, -0.33380686f}, {0.93819134f, -0.34611706f},
-{0.93358043f, -0.35836795f}, {0.92880955f, -0.37055744f},
-{0.92387953f, -0.38268343f}, {0.91879121f, -0.39474386f},
-{0.91354546f, -0.40673664f}, {0.90814317f, -0.41865974f},
-{0.90258528f, -0.43051110f}, {0.89687274f, -0.44228869f},
-{0.89100652f, -0.45399050f}, {0.88498764f, -0.46561452f},
-{0.87881711f, -0.47715876f}, {0.87249601f, -0.48862124f},
-{0.86602540f, -0.50000000f}, {0.85940641f, -0.51129309f},
-{0.85264016f, -0.52249856f}, {0.84572782f, -0.53361452f},
-{0.83867057f, -0.54463904f}, {0.83146961f, -0.55557023f},
-{0.82412619f, -0.56640624f}, {0.81664156f, -0.57714519f},
-{0.80901699f, -0.58778525f}, {0.80125381f, -0.59832460f},
-{0.79335334f, -0.60876143f}, {0.78531693f, -0.61909395f},
-{0.77714596f, -0.62932039f}, {0.76884183f, -0.63943900f},
-{0.76040597f, -0.64944805f}, {0.75183981f, -0.65934582f},
-{0.74314483f, -0.66913061f}, {0.73432251f, -0.67880075f},
-{0.72537437f, -0.68835458f}, {0.71630194f, -0.69779046f},
-{0.70710678f, -0.70710678f}, {0.69779046f, -0.71630194f},
-{0.68835458f, -0.72537437f}, {0.67880075f, -0.73432251f},
-{0.66913061f, -0.74314483f}, {0.65934582f, -0.75183981f},
-{0.64944805f, -0.76040597f}, {0.63943900f, -0.76884183f},
-{0.62932039f, -0.77714596f}, {0.61909395f, -0.78531693f},
-{0.60876143f, -0.79335334f}, {0.59832460f, -0.80125381f},
-{0.58778525f, -0.80901699f}, {0.57714519f, -0.81664156f},
-{0.56640624f, -0.82412619f}, {0.55557023f, -0.83146961f},
-{0.54463904f, -0.83867057f}, {0.53361452f, -0.84572782f},
-{0.52249856f, -0.85264016f}, {0.51129309f, -0.85940641f},
-{0.50000000f, -0.86602540f}, {0.48862124f, -0.87249601f},
-{0.47715876f, -0.87881711f}, {0.46561452f, -0.88498764f},
-{0.45399050f, -0.89100652f}, {0.44228869f, -0.89687274f},
-{0.43051110f, -0.90258528f}, {0.41865974f, -0.90814317f},
-{0.40673664f, -0.91354546f}, {0.39474386f, -0.91879121f},
-{0.38268343f, -0.92387953f}, {0.37055744f, -0.92880955f},
-{0.35836795f, -0.93358043f}, {0.34611706f, -0.93819134f},
-{0.33380686f, -0.94264149f}, {0.32143947f, -0.94693013f},
-{0.30901699f, -0.95105652f}, {0.29654157f, -0.95501994f},
-{0.28401534f, -0.95881973f}, {0.27144045f, -0.96245524f},
-{0.25881905f, -0.96592583f}, {0.24615329f, -0.96923091f},
-{0.23344536f, -0.97236992f}, {0.22069744f, -0.97534232f},
-{0.20791169f, -0.97814760f}, {0.19509032f, -0.98078528f},
-{0.18223553f, -0.98325491f}, {0.16934950f, -0.98555606f},
-{0.15643447f, -0.98768834f}, {0.14349262f, -0.98965139f},
-{0.13052619f, -0.99144486f}, {0.11753740f, -0.99306846f},
-{0.10452846f, -0.99452190f}, {0.091501619f, -0.99580493f},
-{0.078459096f, -0.99691733f}, {0.065403129f, -0.99785892f},
-{0.052335956f, -0.99862953f}, {0.039259816f, -0.99922904f},
-{0.026176948f, -0.99965732f}, {0.013089596f, -0.99991433f},
-{6.1230318e-17f, -1.0000000f}, {-0.013089596f, -0.99991433f},
-{-0.026176948f, -0.99965732f}, {-0.039259816f, -0.99922904f},
-{-0.052335956f, -0.99862953f}, {-0.065403129f, -0.99785892f},
-{-0.078459096f, -0.99691733f}, {-0.091501619f, -0.99580493f},
-{-0.10452846f, -0.99452190f}, {-0.11753740f, -0.99306846f},
-{-0.13052619f, -0.99144486f}, {-0.14349262f, -0.98965139f},
-{-0.15643447f, -0.98768834f}, {-0.16934950f, -0.98555606f},
-{-0.18223553f, -0.98325491f}, {-0.19509032f, -0.98078528f},
-{-0.20791169f, -0.97814760f}, {-0.22069744f, -0.97534232f},
-{-0.23344536f, -0.97236992f}, {-0.24615329f, -0.96923091f},
-{-0.25881905f, -0.96592583f}, {-0.27144045f, -0.96245524f},
-{-0.28401534f, -0.95881973f}, {-0.29654157f, -0.95501994f},
-{-0.30901699f, -0.95105652f}, {-0.32143947f, -0.94693013f},
-{-0.33380686f, -0.94264149f}, {-0.34611706f, -0.93819134f},
-{-0.35836795f, -0.93358043f}, {-0.37055744f, -0.92880955f},
-{-0.38268343f, -0.92387953f}, {-0.39474386f, -0.91879121f},
-{-0.40673664f, -0.91354546f}, {-0.41865974f, -0.90814317f},
-{-0.43051110f, -0.90258528f}, {-0.44228869f, -0.89687274f},
-{-0.45399050f, -0.89100652f}, {-0.46561452f, -0.88498764f},
-{-0.47715876f, -0.87881711f}, {-0.48862124f, -0.87249601f},
-{-0.50000000f, -0.86602540f}, {-0.51129309f, -0.85940641f},
-{-0.52249856f, -0.85264016f}, {-0.53361452f, -0.84572782f},
-{-0.54463904f, -0.83867057f}, {-0.55557023f, -0.83146961f},
-{-0.56640624f, -0.82412619f}, {-0.57714519f, -0.81664156f},
-{-0.58778525f, -0.80901699f}, {-0.59832460f, -0.80125381f},
-{-0.60876143f, -0.79335334f}, {-0.61909395f, -0.78531693f},
-{-0.62932039f, -0.77714596f}, {-0.63943900f, -0.76884183f},
-{-0.64944805f, -0.76040597f}, {-0.65934582f, -0.75183981f},
-{-0.66913061f, -0.74314483f}, {-0.67880075f, -0.73432251f},
-{-0.68835458f, -0.72537437f}, {-0.69779046f, -0.71630194f},
-{-0.70710678f, -0.70710678f}, {-0.71630194f, -0.69779046f},
-{-0.72537437f, -0.68835458f}, {-0.73432251f, -0.67880075f},
-{-0.74314483f, -0.66913061f}, {-0.75183981f, -0.65934582f},
-{-0.76040597f, -0.64944805f}, {-0.76884183f, -0.63943900f},
-{-0.77714596f, -0.62932039f}, {-0.78531693f, -0.61909395f},
-{-0.79335334f, -0.60876143f}, {-0.80125381f, -0.59832460f},
-{-0.80901699f, -0.58778525f}, {-0.81664156f, -0.57714519f},
-{-0.82412619f, -0.56640624f}, {-0.83146961f, -0.55557023f},
-{-0.83867057f, -0.54463904f}, {-0.84572782f, -0.53361452f},
-{-0.85264016f, -0.52249856f}, {-0.85940641f, -0.51129309f},
-{-0.86602540f, -0.50000000f}, {-0.87249601f, -0.48862124f},
-{-0.87881711f, -0.47715876f}, {-0.88498764f, -0.46561452f},
-{-0.89100652f, -0.45399050f}, {-0.89687274f, -0.44228869f},
-{-0.90258528f, -0.43051110f}, {-0.90814317f, -0.41865974f},
-{-0.91354546f, -0.40673664f}, {-0.91879121f, -0.39474386f},
-{-0.92387953f, -0.38268343f}, {-0.92880955f, -0.37055744f},
-{-0.93358043f, -0.35836795f}, {-0.93819134f, -0.34611706f},
-{-0.94264149f, -0.33380686f}, {-0.94693013f, -0.32143947f},
-{-0.95105652f, -0.30901699f}, {-0.95501994f, -0.29654157f},
-{-0.95881973f, -0.28401534f}, {-0.96245524f, -0.27144045f},
-{-0.96592583f, -0.25881905f}, {-0.96923091f, -0.24615329f},
-{-0.97236992f, -0.23344536f}, {-0.97534232f, -0.22069744f},
-{-0.97814760f, -0.20791169f}, {-0.98078528f, -0.19509032f},
-{-0.98325491f, -0.18223553f}, {-0.98555606f, -0.16934950f},
-{-0.98768834f, -0.15643447f}, {-0.98965139f, -0.14349262f},
-{-0.99144486f, -0.13052619f}, {-0.99306846f, -0.11753740f},
-{-0.99452190f, -0.10452846f}, {-0.99580493f, -0.091501619f},
-{-0.99691733f, -0.078459096f}, {-0.99785892f, -0.065403129f},
-{-0.99862953f, -0.052335956f}, {-0.99922904f, -0.039259816f},
-{-0.99965732f, -0.026176948f}, {-0.99991433f, -0.013089596f},
-{-1.0000000f, -1.2246064e-16f}, {-0.99991433f, 0.013089596f},
-{-0.99965732f, 0.026176948f}, {-0.99922904f, 0.039259816f},
-{-0.99862953f, 0.052335956f}, {-0.99785892f, 0.065403129f},
-{-0.99691733f, 0.078459096f}, {-0.99580493f, 0.091501619f},
-{-0.99452190f, 0.10452846f}, {-0.99306846f, 0.11753740f},
-{-0.99144486f, 0.13052619f}, {-0.98965139f, 0.14349262f},
-{-0.98768834f, 0.15643447f}, {-0.98555606f, 0.16934950f},
-{-0.98325491f, 0.18223553f}, {-0.98078528f, 0.19509032f},
-{-0.97814760f, 0.20791169f}, {-0.97534232f, 0.22069744f},
-{-0.97236992f, 0.23344536f}, {-0.96923091f, 0.24615329f},
-{-0.96592583f, 0.25881905f}, {-0.96245524f, 0.27144045f},
-{-0.95881973f, 0.28401534f}, {-0.95501994f, 0.29654157f},
-{-0.95105652f, 0.30901699f}, {-0.94693013f, 0.32143947f},
-{-0.94264149f, 0.33380686f}, {-0.93819134f, 0.34611706f},
-{-0.93358043f, 0.35836795f}, {-0.92880955f, 0.37055744f},
-{-0.92387953f, 0.38268343f}, {-0.91879121f, 0.39474386f},
-{-0.91354546f, 0.40673664f}, {-0.90814317f, 0.41865974f},
-{-0.90258528f, 0.43051110f}, {-0.89687274f, 0.44228869f},
-{-0.89100652f, 0.45399050f}, {-0.88498764f, 0.46561452f},
-{-0.87881711f, 0.47715876f}, {-0.87249601f, 0.48862124f},
-{-0.86602540f, 0.50000000f}, {-0.85940641f, 0.51129309f},
-{-0.85264016f, 0.52249856f}, {-0.84572782f, 0.53361452f},
-{-0.83867057f, 0.54463904f}, {-0.83146961f, 0.55557023f},
-{-0.82412619f, 0.56640624f}, {-0.81664156f, 0.57714519f},
-{-0.80901699f, 0.58778525f}, {-0.80125381f, 0.59832460f},
-{-0.79335334f, 0.60876143f}, {-0.78531693f, 0.61909395f},
-{-0.77714596f, 0.62932039f}, {-0.76884183f, 0.63943900f},
-{-0.76040597f, 0.64944805f}, {-0.75183981f, 0.65934582f},
-{-0.74314483f, 0.66913061f}, {-0.73432251f, 0.67880075f},
-{-0.72537437f, 0.68835458f}, {-0.71630194f, 0.69779046f},
-{-0.70710678f, 0.70710678f}, {-0.69779046f, 0.71630194f},
-{-0.68835458f, 0.72537437f}, {-0.67880075f, 0.73432251f},
-{-0.66913061f, 0.74314483f}, {-0.65934582f, 0.75183981f},
-{-0.64944805f, 0.76040597f}, {-0.63943900f, 0.76884183f},
-{-0.62932039f, 0.77714596f}, {-0.61909395f, 0.78531693f},
-{-0.60876143f, 0.79335334f}, {-0.59832460f, 0.80125381f},
-{-0.58778525f, 0.80901699f}, {-0.57714519f, 0.81664156f},
-{-0.56640624f, 0.82412619f}, {-0.55557023f, 0.83146961f},
-{-0.54463904f, 0.83867057f}, {-0.53361452f, 0.84572782f},
-{-0.52249856f, 0.85264016f}, {-0.51129309f, 0.85940641f},
-{-0.50000000f, 0.86602540f}, {-0.48862124f, 0.87249601f},
-{-0.47715876f, 0.87881711f}, {-0.46561452f, 0.88498764f},
-{-0.45399050f, 0.89100652f}, {-0.44228869f, 0.89687274f},
-{-0.43051110f, 0.90258528f}, {-0.41865974f, 0.90814317f},
-{-0.40673664f, 0.91354546f}, {-0.39474386f, 0.91879121f},
-{-0.38268343f, 0.92387953f}, {-0.37055744f, 0.92880955f},
-{-0.35836795f, 0.93358043f}, {-0.34611706f, 0.93819134f},
-{-0.33380686f, 0.94264149f}, {-0.32143947f, 0.94693013f},
-{-0.30901699f, 0.95105652f}, {-0.29654157f, 0.95501994f},
-{-0.28401534f, 0.95881973f}, {-0.27144045f, 0.96245524f},
-{-0.25881905f, 0.96592583f}, {-0.24615329f, 0.96923091f},
-{-0.23344536f, 0.97236992f}, {-0.22069744f, 0.97534232f},
-{-0.20791169f, 0.97814760f}, {-0.19509032f, 0.98078528f},
-{-0.18223553f, 0.98325491f}, {-0.16934950f, 0.98555606f},
-{-0.15643447f, 0.98768834f}, {-0.14349262f, 0.98965139f},
-{-0.13052619f, 0.99144486f}, {-0.11753740f, 0.99306846f},
-{-0.10452846f, 0.99452190f}, {-0.091501619f, 0.99580493f},
-{-0.078459096f, 0.99691733f}, {-0.065403129f, 0.99785892f},
-{-0.052335956f, 0.99862953f}, {-0.039259816f, 0.99922904f},
-{-0.026176948f, 0.99965732f}, {-0.013089596f, 0.99991433f},
-{-1.8369095e-16f, 1.0000000f}, {0.013089596f, 0.99991433f},
-{0.026176948f, 0.99965732f}, {0.039259816f, 0.99922904f},
-{0.052335956f, 0.99862953f}, {0.065403129f, 0.99785892f},
-{0.078459096f, 0.99691733f}, {0.091501619f, 0.99580493f},
-{0.10452846f, 0.99452190f}, {0.11753740f, 0.99306846f},
-{0.13052619f, 0.99144486f}, {0.14349262f, 0.98965139f},
-{0.15643447f, 0.98768834f}, {0.16934950f, 0.98555606f},
-{0.18223553f, 0.98325491f}, {0.19509032f, 0.98078528f},
-{0.20791169f, 0.97814760f}, {0.22069744f, 0.97534232f},
-{0.23344536f, 0.97236992f}, {0.24615329f, 0.96923091f},
-{0.25881905f, 0.96592583f}, {0.27144045f, 0.96245524f},
-{0.28401534f, 0.95881973f}, {0.29654157f, 0.95501994f},
-{0.30901699f, 0.95105652f}, {0.32143947f, 0.94693013f},
-{0.33380686f, 0.94264149f}, {0.34611706f, 0.93819134f},
-{0.35836795f, 0.93358043f}, {0.37055744f, 0.92880955f},
-{0.38268343f, 0.92387953f}, {0.39474386f, 0.91879121f},
-{0.40673664f, 0.91354546f}, {0.41865974f, 0.90814317f},
-{0.43051110f, 0.90258528f}, {0.44228869f, 0.89687274f},
-{0.45399050f, 0.89100652f}, {0.46561452f, 0.88498764f},
-{0.47715876f, 0.87881711f}, {0.48862124f, 0.87249601f},
-{0.50000000f, 0.86602540f}, {0.51129309f, 0.85940641f},
-{0.52249856f, 0.85264016f}, {0.53361452f, 0.84572782f},
-{0.54463904f, 0.83867057f}, {0.55557023f, 0.83146961f},
-{0.56640624f, 0.82412619f}, {0.57714519f, 0.81664156f},
-{0.58778525f, 0.80901699f}, {0.59832460f, 0.80125381f},
-{0.60876143f, 0.79335334f}, {0.61909395f, 0.78531693f},
-{0.62932039f, 0.77714596f}, {0.63943900f, 0.76884183f},
-{0.64944805f, 0.76040597f}, {0.65934582f, 0.75183981f},
-{0.66913061f, 0.74314483f}, {0.67880075f, 0.73432251f},
-{0.68835458f, 0.72537437f}, {0.69779046f, 0.71630194f},
-{0.70710678f, 0.70710678f}, {0.71630194f, 0.69779046f},
-{0.72537437f, 0.68835458f}, {0.73432251f, 0.67880075f},
-{0.74314483f, 0.66913061f}, {0.75183981f, 0.65934582f},
-{0.76040597f, 0.64944805f}, {0.76884183f, 0.63943900f},
-{0.77714596f, 0.62932039f}, {0.78531693f, 0.61909395f},
-{0.79335334f, 0.60876143f}, {0.80125381f, 0.59832460f},
-{0.80901699f, 0.58778525f}, {0.81664156f, 0.57714519f},
-{0.82412619f, 0.56640624f}, {0.83146961f, 0.55557023f},
-{0.83867057f, 0.54463904f}, {0.84572782f, 0.53361452f},
-{0.85264016f, 0.52249856f}, {0.85940641f, 0.51129309f},
-{0.86602540f, 0.50000000f}, {0.87249601f, 0.48862124f},
-{0.87881711f, 0.47715876f}, {0.88498764f, 0.46561452f},
-{0.89100652f, 0.45399050f}, {0.89687274f, 0.44228869f},
-{0.90258528f, 0.43051110f}, {0.90814317f, 0.41865974f},
-{0.91354546f, 0.40673664f}, {0.91879121f, 0.39474386f},
-{0.92387953f, 0.38268343f}, {0.92880955f, 0.37055744f},
-{0.93358043f, 0.35836795f}, {0.93819134f, 0.34611706f},
-{0.94264149f, 0.33380686f}, {0.94693013f, 0.32143947f},
-{0.95105652f, 0.30901699f}, {0.95501994f, 0.29654157f},
-{0.95881973f, 0.28401534f}, {0.96245524f, 0.27144045f},
-{0.96592583f, 0.25881905f}, {0.96923091f, 0.24615329f},
-{0.97236992f, 0.23344536f}, {0.97534232f, 0.22069744f},
-{0.97814760f, 0.20791169f}, {0.98078528f, 0.19509032f},
-{0.98325491f, 0.18223553f}, {0.98555606f, 0.16934950f},
-{0.98768834f, 0.15643447f}, {0.98965139f, 0.14349262f},
-{0.99144486f, 0.13052619f}, {0.99306846f, 0.11753740f},
-{0.99452190f, 0.10452846f}, {0.99580493f, 0.091501619f},
-{0.99691733f, 0.078459096f}, {0.99785892f, 0.065403129f},
-{0.99862953f, 0.052335956f}, {0.99922904f, 0.039259816f},
-{0.99965732f, 0.026176948f}, {0.99991433f, 0.013089596f},
-};
-#ifndef FFT_BITREV480
-#define FFT_BITREV480
-static const opus_int16 fft_bitrev480[480] = {
-0, 96, 192, 288, 384, 32, 128, 224, 320, 416, 64, 160, 256, 352, 448,
-8, 104, 200, 296, 392, 40, 136, 232, 328, 424, 72, 168, 264, 360, 456,
-16, 112, 208, 304, 400, 48, 144, 240, 336, 432, 80, 176, 272, 368, 464,
-24, 120, 216, 312, 408, 56, 152, 248, 344, 440, 88, 184, 280, 376, 472,
-4, 100, 196, 292, 388, 36, 132, 228, 324, 420, 68, 164, 260, 356, 452,
-12, 108, 204, 300, 396, 44, 140, 236, 332, 428, 76, 172, 268, 364, 460,
-20, 116, 212, 308, 404, 52, 148, 244, 340, 436, 84, 180, 276, 372, 468,
-28, 124, 220, 316, 412, 60, 156, 252, 348, 444, 92, 188, 284, 380, 476,
-1, 97, 193, 289, 385, 33, 129, 225, 321, 417, 65, 161, 257, 353, 449,
-9, 105, 201, 297, 393, 41, 137, 233, 329, 425, 73, 169, 265, 361, 457,
-17, 113, 209, 305, 401, 49, 145, 241, 337, 433, 81, 177, 273, 369, 465,
-25, 121, 217, 313, 409, 57, 153, 249, 345, 441, 89, 185, 281, 377, 473,
-5, 101, 197, 293, 389, 37, 133, 229, 325, 421, 69, 165, 261, 357, 453,
-13, 109, 205, 301, 397, 45, 141, 237, 333, 429, 77, 173, 269, 365, 461,
-21, 117, 213, 309, 405, 53, 149, 245, 341, 437, 85, 181, 277, 373, 469,
-29, 125, 221, 317, 413, 61, 157, 253, 349, 445, 93, 189, 285, 381, 477,
-2, 98, 194, 290, 386, 34, 130, 226, 322, 418, 66, 162, 258, 354, 450,
-10, 106, 202, 298, 394, 42, 138, 234, 330, 426, 74, 170, 266, 362, 458,
-18, 114, 210, 306, 402, 50, 146, 242, 338, 434, 82, 178, 274, 370, 466,
-26, 122, 218, 314, 410, 58, 154, 250, 346, 442, 90, 186, 282, 378, 474,
-6, 102, 198, 294, 390, 38, 134, 230, 326, 422, 70, 166, 262, 358, 454,
-14, 110, 206, 302, 398, 46, 142, 238, 334, 430, 78, 174, 270, 366, 462,
-22, 118, 214, 310, 406, 54, 150, 246, 342, 438, 86, 182, 278, 374, 470,
-30, 126, 222, 318, 414, 62, 158, 254, 350, 446, 94, 190, 286, 382, 478,
-3, 99, 195, 291, 387, 35, 131, 227, 323, 419, 67, 163, 259, 355, 451,
-11, 107, 203, 299, 395, 43, 139, 235, 331, 427, 75, 171, 267, 363, 459,
-19, 115, 211, 307, 403, 51, 147, 243, 339, 435, 83, 179, 275, 371, 467,
-27, 123, 219, 315, 411, 59, 155, 251, 347, 443, 91, 187, 283, 379, 475,
-7, 103, 199, 295, 391, 39, 135, 231, 327, 423, 71, 167, 263, 359, 455,
-15, 111, 207, 303, 399, 47, 143, 239, 335, 431, 79, 175, 271, 367, 463,
-23, 119, 215, 311, 407, 55, 151, 247, 343, 439, 87, 183, 279, 375, 471,
-31, 127, 223, 319, 415, 63, 159, 255, 351, 447, 95, 191, 287, 383, 479,
-};
-#endif
-
-#ifndef FFT_BITREV240
-#define FFT_BITREV240
-static const opus_int16 fft_bitrev240[240] = {
-0, 48, 96, 144, 192, 16, 64, 112, 160, 208, 32, 80, 128, 176, 224,
-4, 52, 100, 148, 196, 20, 68, 116, 164, 212, 36, 84, 132, 180, 228,
-8, 56, 104, 152, 200, 24, 72, 120, 168, 216, 40, 88, 136, 184, 232,
-12, 60, 108, 156, 204, 28, 76, 124, 172, 220, 44, 92, 140, 188, 236,
-1, 49, 97, 145, 193, 17, 65, 113, 161, 209, 33, 81, 129, 177, 225,
-5, 53, 101, 149, 197, 21, 69, 117, 165, 213, 37, 85, 133, 181, 229,
-9, 57, 105, 153, 201, 25, 73, 121, 169, 217, 41, 89, 137, 185, 233,
-13, 61, 109, 157, 205, 29, 77, 125, 173, 221, 45, 93, 141, 189, 237,
-2, 50, 98, 146, 194, 18, 66, 114, 162, 210, 34, 82, 130, 178, 226,
-6, 54, 102, 150, 198, 22, 70, 118, 166, 214, 38, 86, 134, 182, 230,
-10, 58, 106, 154, 202, 26, 74, 122, 170, 218, 42, 90, 138, 186, 234,
-14, 62, 110, 158, 206, 30, 78, 126, 174, 222, 46, 94, 142, 190, 238,
-3, 51, 99, 147, 195, 19, 67, 115, 163, 211, 35, 83, 131, 179, 227,
-7, 55, 103, 151, 199, 23, 71, 119, 167, 215, 39, 87, 135, 183, 231,
-11, 59, 107, 155, 203, 27, 75, 123, 171, 219, 43, 91, 139, 187, 235,
-15, 63, 111, 159, 207, 31, 79, 127, 175, 223, 47, 95, 143, 191, 239,
-};
-#endif
-
-#ifndef FFT_BITREV120
-#define FFT_BITREV120
-static const opus_int16 fft_bitrev120[120] = {
-0, 24, 48, 72, 96, 8, 32, 56, 80, 104, 16, 40, 64, 88, 112,
-4, 28, 52, 76, 100, 12, 36, 60, 84, 108, 20, 44, 68, 92, 116,
-1, 25, 49, 73, 97, 9, 33, 57, 81, 105, 17, 41, 65, 89, 113,
-5, 29, 53, 77, 101, 13, 37, 61, 85, 109, 21, 45, 69, 93, 117,
-2, 26, 50, 74, 98, 10, 34, 58, 82, 106, 18, 42, 66, 90, 114,
-6, 30, 54, 78, 102, 14, 38, 62, 86, 110, 22, 46, 70, 94, 118,
-3, 27, 51, 75, 99, 11, 35, 59, 83, 107, 19, 43, 67, 91, 115,
-7, 31, 55, 79, 103, 15, 39, 63, 87, 111, 23, 47, 71, 95, 119,
-};
-#endif
-
-#ifndef FFT_BITREV60
-#define FFT_BITREV60
-static const opus_int16 fft_bitrev60[60] = {
-0, 12, 24, 36, 48, 4, 16, 28, 40, 52, 8, 20, 32, 44, 56,
-1, 13, 25, 37, 49, 5, 17, 29, 41, 53, 9, 21, 33, 45, 57,
-2, 14, 26, 38, 50, 6, 18, 30, 42, 54, 10, 22, 34, 46, 58,
-3, 15, 27, 39, 51, 7, 19, 31, 43, 55, 11, 23, 35, 47, 59,
-};
-#endif
-
-#ifndef FFT_STATE48000_960_0
-#define FFT_STATE48000_960_0
-static const kiss_fft_state fft_state48000_960_0 = {
-480, /* nfft */
-0.002083333f, /* scale */
--1, /* shift */
-{5, 96, 3, 32, 4, 8, 2, 4, 4, 1, 0, 0, 0, 0, 0, 0, }, /* factors */
-fft_bitrev480, /* bitrev */
-fft_twiddles48000_960, /* bitrev */
-#ifdef OVERRIDE_FFT
-(arch_fft_state *)&cfg_arch_480,
-#else
-NULL,
-#endif
-};
-#endif
-
-#ifndef FFT_STATE48000_960_1
-#define FFT_STATE48000_960_1
-static const kiss_fft_state fft_state48000_960_1 = {
-240, /* nfft */
-0.004166667f, /* scale */
-1, /* shift */
-{5, 48, 3, 16, 4, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */
-fft_bitrev240, /* bitrev */
-fft_twiddles48000_960, /* bitrev */
-#ifdef OVERRIDE_FFT
-(arch_fft_state *)&cfg_arch_240,
-#else
-NULL,
-#endif
-};
-#endif
-
-#ifndef FFT_STATE48000_960_2
-#define FFT_STATE48000_960_2
-static const kiss_fft_state fft_state48000_960_2 = {
-120, /* nfft */
-0.008333333f, /* scale */
-2, /* shift */
-{5, 24, 3, 8, 2, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */
-fft_bitrev120, /* bitrev */
-fft_twiddles48000_960, /* bitrev */
-#ifdef OVERRIDE_FFT
-(arch_fft_state *)&cfg_arch_120,
-#else
-NULL,
-#endif
-};
-#endif
-
-#ifndef FFT_STATE48000_960_3
-#define FFT_STATE48000_960_3
-static const kiss_fft_state fft_state48000_960_3 = {
-60, /* nfft */
-0.016666667f, /* scale */
-3, /* shift */
-{5, 12, 3, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */
-fft_bitrev60, /* bitrev */
-fft_twiddles48000_960, /* bitrev */
-#ifdef OVERRIDE_FFT
-(arch_fft_state *)&cfg_arch_60,
-#else
-NULL,
-#endif
-};
-#endif
-
-#endif
-
-#ifndef MDCT_TWIDDLES960
-#define MDCT_TWIDDLES960
-static const opus_val16 mdct_twiddles960[1800] = {
-0.99999994f, 0.99999321f, 0.99997580f, 0.99994773f, 0.99990886f,
-0.99985933f, 0.99979913f, 0.99972820f, 0.99964654f, 0.99955416f,
-0.99945110f, 0.99933738f, 0.99921292f, 0.99907774f, 0.99893188f,
-0.99877530f, 0.99860805f, 0.99843007f, 0.99824142f, 0.99804211f,
-0.99783206f, 0.99761140f, 0.99737996f, 0.99713790f, 0.99688518f,
-0.99662173f, 0.99634761f, 0.99606287f, 0.99576741f, 0.99546129f,
-0.99514455f, 0.99481714f, 0.99447906f, 0.99413031f, 0.99377096f,
-0.99340093f, 0.99302030f, 0.99262899f, 0.99222708f, 0.99181455f,
-0.99139136f, 0.99095762f, 0.99051321f, 0.99005818f, 0.98959261f,
-0.98911643f, 0.98862964f, 0.98813224f, 0.98762429f, 0.98710573f,
-0.98657662f, 0.98603696f, 0.98548669f, 0.98492593f, 0.98435456f,
-0.98377270f, 0.98318028f, 0.98257732f, 0.98196387f, 0.98133987f,
-0.98070538f, 0.98006040f, 0.97940493f, 0.97873890f, 0.97806245f,
-0.97737551f, 0.97667813f, 0.97597027f, 0.97525197f, 0.97452319f,
-0.97378403f, 0.97303438f, 0.97227436f, 0.97150391f, 0.97072303f,
-0.96993178f, 0.96913016f, 0.96831810f, 0.96749574f, 0.96666300f,
-0.96581990f, 0.96496642f, 0.96410263f, 0.96322852f, 0.96234411f,
-0.96144938f, 0.96054435f, 0.95962906f, 0.95870346f, 0.95776761f,
-0.95682150f, 0.95586514f, 0.95489854f, 0.95392174f, 0.95293468f,
-0.95193744f, 0.95093000f, 0.94991243f, 0.94888461f, 0.94784665f,
-0.94679856f, 0.94574034f, 0.94467193f, 0.94359344f, 0.94250488f,
-0.94140619f, 0.94029742f, 0.93917859f, 0.93804967f, 0.93691075f,
-0.93576175f, 0.93460274f, 0.93343377f, 0.93225473f, 0.93106574f,
-0.92986679f, 0.92865789f, 0.92743903f, 0.92621022f, 0.92497152f,
-0.92372292f, 0.92246443f, 0.92119598f, 0.91991776f, 0.91862965f,
-0.91733170f, 0.91602397f, 0.91470635f, 0.91337901f, 0.91204184f,
-0.91069490f, 0.90933824f, 0.90797186f, 0.90659571f, 0.90520984f,
-0.90381432f, 0.90240908f, 0.90099424f, 0.89956969f, 0.89813554f,
-0.89669174f, 0.89523834f, 0.89377540f, 0.89230281f, 0.89082074f,
-0.88932908f, 0.88782793f, 0.88631725f, 0.88479710f, 0.88326746f,
-0.88172835f, 0.88017982f, 0.87862182f, 0.87705445f, 0.87547767f,
-0.87389153f, 0.87229604f, 0.87069118f, 0.86907703f, 0.86745358f,
-0.86582077f, 0.86417878f, 0.86252749f, 0.86086690f, 0.85919720f,
-0.85751826f, 0.85583007f, 0.85413277f, 0.85242635f, 0.85071075f,
-0.84898609f, 0.84725231f, 0.84550947f, 0.84375757f, 0.84199661f,
-0.84022665f, 0.83844769f, 0.83665979f, 0.83486289f, 0.83305705f,
-0.83124226f, 0.82941860f, 0.82758605f, 0.82574469f, 0.82389444f,
-0.82203537f, 0.82016748f, 0.81829083f, 0.81640542f, 0.81451124f,
-0.81260836f, 0.81069672f, 0.80877650f, 0.80684757f, 0.80490994f,
-0.80296379f, 0.80100900f, 0.79904562f, 0.79707366f, 0.79509324f,
-0.79310423f, 0.79110676f, 0.78910083f, 0.78708643f, 0.78506362f,
-0.78303236f, 0.78099275f, 0.77894479f, 0.77688843f, 0.77482378f,
-0.77275085f, 0.77066964f, 0.76858020f, 0.76648247f, 0.76437658f,
-0.76226246f, 0.76014024f, 0.75800985f, 0.75587130f, 0.75372469f,
-0.75157005f, 0.74940729f, 0.74723655f, 0.74505776f, 0.74287105f,
-0.74067634f, 0.73847371f, 0.73626316f, 0.73404479f, 0.73181850f,
-0.72958434f, 0.72734243f, 0.72509271f, 0.72283524f, 0.72057003f,
-0.71829706f, 0.71601641f, 0.71372813f, 0.71143216f, 0.70912862f,
-0.70681745f, 0.70449871f, 0.70217246f, 0.69983864f, 0.69749737f,
-0.69514859f, 0.69279242f, 0.69042879f, 0.68805778f, 0.68567938f,
-0.68329364f, 0.68090063f, 0.67850029f, 0.67609268f, 0.67367786f,
-0.67125577f, 0.66882652f, 0.66639012f, 0.66394657f, 0.66149592f,
-0.65903819f, 0.65657341f, 0.65410155f, 0.65162271f, 0.64913690f,
-0.64664418f, 0.64414448f, 0.64163786f, 0.63912445f, 0.63660413f,
-0.63407701f, 0.63154310f, 0.62900239f, 0.62645501f, 0.62390089f,
-0.62134010f, 0.61877263f, 0.61619854f, 0.61361790f, 0.61103064f,
-0.60843682f, 0.60583651f, 0.60322970f, 0.60061646f, 0.59799677f,
-0.59537065f, 0.59273821f, 0.59009939f, 0.58745426f, 0.58480281f,
-0.58214509f, 0.57948118f, 0.57681108f, 0.57413477f, 0.57145232f,
-0.56876373f, 0.56606907f, 0.56336832f, 0.56066155f, 0.55794877f,
-0.55523002f, 0.55250537f, 0.54977477f, 0.54703826f, 0.54429591f,
-0.54154772f, 0.53879374f, 0.53603399f, 0.53326851f, 0.53049731f,
-0.52772039f, 0.52493787f, 0.52214974f, 0.51935595f, 0.51655668f,
-0.51375180f, 0.51094145f, 0.50812566f, 0.50530440f, 0.50247771f,
-0.49964568f, 0.49680826f, 0.49396557f, 0.49111754f, 0.48826426f,
-0.48540577f, 0.48254207f, 0.47967321f, 0.47679919f, 0.47392011f,
-0.47103590f, 0.46814668f, 0.46525243f, 0.46235323f, 0.45944905f,
-0.45653993f, 0.45362595f, 0.45070711f, 0.44778344f, 0.44485497f,
-0.44192174f, 0.43898380f, 0.43604112f, 0.43309379f, 0.43014181f,
-0.42718524f, 0.42422408f, 0.42125839f, 0.41828820f, 0.41531351f,
-0.41233435f, 0.40935081f, 0.40636289f, 0.40337059f, 0.40037400f,
-0.39737311f, 0.39436796f, 0.39135858f, 0.38834500f, 0.38532731f,
-0.38230544f, 0.37927949f, 0.37624949f, 0.37321547f, 0.37017745f,
-0.36713544f, 0.36408952f, 0.36103970f, 0.35798600f, 0.35492846f,
-0.35186714f, 0.34880206f, 0.34573323f, 0.34266070f, 0.33958447f,
-0.33650464f, 0.33342120f, 0.33033419f, 0.32724363f, 0.32414958f,
-0.32105204f, 0.31795108f, 0.31484672f, 0.31173897f, 0.30862790f,
-0.30551350f, 0.30239585f, 0.29927495f, 0.29615086f, 0.29302359f,
-0.28989318f, 0.28675964f, 0.28362307f, 0.28048345f, 0.27734083f,
-0.27419522f, 0.27104670f, 0.26789525f, 0.26474094f, 0.26158381f,
-0.25842386f, 0.25526115f, 0.25209570f, 0.24892756f, 0.24575676f,
-0.24258332f, 0.23940729f, 0.23622867f, 0.23304754f, 0.22986393f,
-0.22667783f, 0.22348931f, 0.22029841f, 0.21710514f, 0.21390954f,
-0.21071166f, 0.20751151f, 0.20430915f, 0.20110460f, 0.19789790f,
-0.19468907f, 0.19147816f, 0.18826519f, 0.18505022f, 0.18183327f,
-0.17861435f, 0.17539354f, 0.17217083f, 0.16894630f, 0.16571994f,
-0.16249183f, 0.15926196f, 0.15603039f, 0.15279715f, 0.14956227f,
-0.14632578f, 0.14308774f, 0.13984816f, 0.13660708f, 0.13336454f,
-0.13012058f, 0.12687522f, 0.12362850f, 0.12038045f, 0.11713112f,
-0.11388054f, 0.11062872f, 0.10737573f, 0.10412160f, 0.10086634f,
-0.097609997f, 0.094352618f, 0.091094226f, 0.087834857f, 0.084574550f,
-0.081313334f, 0.078051247f, 0.074788325f, 0.071524605f, 0.068260118f,
-0.064994894f, 0.061728980f, 0.058462404f, 0.055195201f, 0.051927410f,
-0.048659060f, 0.045390189f, 0.042120833f, 0.038851023f, 0.035580799f,
-0.032310195f, 0.029039243f, 0.025767982f, 0.022496443f, 0.019224664f,
-0.015952680f, 0.012680525f, 0.0094082337f, 0.0061358409f, 0.0028633832f,
--0.00040910527f, -0.0036815894f, -0.0069540343f, -0.010226404f, -0.013498665f,
--0.016770782f, -0.020042717f, -0.023314439f, -0.026585912f, -0.029857099f,
--0.033127967f, -0.036398482f, -0.039668605f, -0.042938303f, -0.046207540f,
--0.049476285f, -0.052744497f, -0.056012146f, -0.059279196f, -0.062545612f,
--0.065811358f, -0.069076397f, -0.072340697f, -0.075604223f, -0.078866936f,
--0.082128808f, -0.085389800f, -0.088649876f, -0.091909006f, -0.095167145f,
--0.098424271f, -0.10168034f, -0.10493532f, -0.10818918f, -0.11144188f,
--0.11469338f, -0.11794366f, -0.12119267f, -0.12444039f, -0.12768677f,
--0.13093179f, -0.13417540f, -0.13741758f, -0.14065829f, -0.14389749f,
--0.14713514f, -0.15037122f, -0.15360570f, -0.15683852f, -0.16006967f,
--0.16329910f, -0.16652679f, -0.16975269f, -0.17297678f, -0.17619900f,
--0.17941935f, -0.18263777f, -0.18585424f, -0.18906870f, -0.19228116f,
--0.19549155f, -0.19869985f, -0.20190603f, -0.20511003f, -0.20831184f,
--0.21151142f, -0.21470875f, -0.21790376f, -0.22109644f, -0.22428675f,
--0.22747467f, -0.23066014f, -0.23384315f, -0.23702365f, -0.24020162f,
--0.24337701f, -0.24654980f, -0.24971995f, -0.25288740f, -0.25605217f,
--0.25921419f, -0.26237345f, -0.26552987f, -0.26868346f, -0.27183419f,
--0.27498198f, -0.27812684f, -0.28126872f, -0.28440759f, -0.28754342f,
--0.29067615f, -0.29380578f, -0.29693225f, -0.30005556f, -0.30317566f,
--0.30629250f, -0.30940607f, -0.31251630f, -0.31562322f, -0.31872672f,
--0.32182685f, -0.32492352f, -0.32801670f, -0.33110636f, -0.33419248f,
--0.33727503f, -0.34035397f, -0.34342924f, -0.34650084f, -0.34956875f,
--0.35263291f, -0.35569328f, -0.35874987f, -0.36180258f, -0.36485144f,
--0.36789638f, -0.37093741f, -0.37397444f, -0.37700745f, -0.38003644f,
--0.38306138f, -0.38608220f, -0.38909888f, -0.39211139f, -0.39511973f,
--0.39812380f, -0.40112361f, -0.40411916f, -0.40711036f, -0.41009718f,
--0.41307965f, -0.41605768f, -0.41903123f, -0.42200032f, -0.42496487f,
--0.42792490f, -0.43088034f, -0.43383113f, -0.43677729f, -0.43971881f,
--0.44265559f, -0.44558764f, -0.44851488f, -0.45143735f, -0.45435500f,
--0.45726776f, -0.46017563f, -0.46307856f, -0.46597654f, -0.46886954f,
--0.47175750f, -0.47464043f, -0.47751826f, -0.48039100f, -0.48325855f,
--0.48612097f, -0.48897815f, -0.49183011f, -0.49467680f, -0.49751821f,
--0.50035429f, -0.50318497f, -0.50601029f, -0.50883019f, -0.51164466f,
--0.51445359f, -0.51725709f, -0.52005500f, -0.52284735f, -0.52563411f,
--0.52841520f, -0.53119069f, -0.53396046f, -0.53672451f, -0.53948283f,
--0.54223537f, -0.54498214f, -0.54772300f, -0.55045801f, -0.55318713f,
--0.55591035f, -0.55862761f, -0.56133890f, -0.56404412f, -0.56674337f,
--0.56943649f, -0.57212353f, -0.57480448f, -0.57747924f, -0.58014780f,
--0.58281022f, -0.58546633f, -0.58811617f, -0.59075975f, -0.59339696f,
--0.59602785f, -0.59865236f, -0.60127044f, -0.60388207f, -0.60648727f,
--0.60908598f, -0.61167812f, -0.61426371f, -0.61684275f, -0.61941516f,
--0.62198097f, -0.62454009f, -0.62709254f, -0.62963831f, -0.63217729f,
--0.63470948f, -0.63723493f, -0.63975352f, -0.64226526f, -0.64477009f,
--0.64726806f, -0.64975911f, -0.65224314f, -0.65472025f, -0.65719032f,
--0.65965337f, -0.66210932f, -0.66455823f, -0.66700000f, -0.66943461f,
--0.67186207f, -0.67428231f, -0.67669535f, -0.67910111f, -0.68149966f,
--0.68389088f, -0.68627477f, -0.68865126f, -0.69102043f, -0.69338220f,
--0.69573659f, -0.69808346f, -0.70042288f, -0.70275480f, -0.70507920f,
--0.70739603f, -0.70970529f, -0.71200693f, -0.71430099f, -0.71658736f,
--0.71886611f, -0.72113711f, -0.72340041f, -0.72565591f, -0.72790372f,
--0.73014367f, -0.73237586f, -0.73460019f, -0.73681659f, -0.73902518f,
--0.74122584f, -0.74341851f, -0.74560326f, -0.74778003f, -0.74994880f,
--0.75210953f, -0.75426215f, -0.75640678f, -0.75854325f, -0.76067162f,
--0.76279181f, -0.76490390f, -0.76700771f, -0.76910341f, -0.77119076f,
--0.77326995f, -0.77534080f, -0.77740335f, -0.77945763f, -0.78150350f,
--0.78354102f, -0.78557014f, -0.78759086f, -0.78960317f, -0.79160696f,
--0.79360235f, -0.79558921f, -0.79756755f, -0.79953730f, -0.80149853f,
--0.80345118f, -0.80539525f, -0.80733067f, -0.80925739f, -0.81117553f,
--0.81308490f, -0.81498563f, -0.81687760f, -0.81876087f, -0.82063532f,
--0.82250100f, -0.82435787f, -0.82620591f, -0.82804507f, -0.82987541f,
--0.83169687f, -0.83350939f, -0.83531296f, -0.83710766f, -0.83889335f,
--0.84067005f, -0.84243774f, -0.84419644f, -0.84594607f, -0.84768665f,
--0.84941816f, -0.85114056f, -0.85285389f, -0.85455805f, -0.85625303f,
--0.85793889f, -0.85961550f, -0.86128294f, -0.86294121f, -0.86459017f,
--0.86622989f, -0.86786032f, -0.86948150f, -0.87109333f, -0.87269586f,
--0.87428904f, -0.87587279f, -0.87744725f, -0.87901229f, -0.88056785f,
--0.88211405f, -0.88365078f, -0.88517809f, -0.88669586f, -0.88820416f,
--0.88970292f, -0.89119220f, -0.89267188f, -0.89414203f, -0.89560264f,
--0.89705360f, -0.89849502f, -0.89992678f, -0.90134889f, -0.90276134f,
--0.90416414f, -0.90555727f, -0.90694070f, -0.90831441f, -0.90967834f,
--0.91103262f, -0.91237706f, -0.91371179f, -0.91503674f, -0.91635185f,
--0.91765714f, -0.91895264f, -0.92023826f, -0.92151409f, -0.92277998f,
--0.92403603f, -0.92528218f, -0.92651838f, -0.92774469f, -0.92896110f,
--0.93016750f, -0.93136400f, -0.93255049f, -0.93372697f, -0.93489349f,
--0.93604994f, -0.93719643f, -0.93833286f, -0.93945926f, -0.94057560f,
--0.94168180f, -0.94277799f, -0.94386405f, -0.94494003f, -0.94600588f,
--0.94706154f, -0.94810712f, -0.94914252f, -0.95016778f, -0.95118284f,
--0.95218778f, -0.95318246f, -0.95416695f, -0.95514119f, -0.95610523f,
--0.95705903f, -0.95800257f, -0.95893586f, -0.95985889f, -0.96077162f,
--0.96167403f, -0.96256620f, -0.96344805f, -0.96431959f, -0.96518075f,
--0.96603161f, -0.96687216f, -0.96770233f, -0.96852213f, -0.96933156f,
--0.97013056f, -0.97091925f, -0.97169751f, -0.97246534f, -0.97322279f,
--0.97396982f, -0.97470641f, -0.97543252f, -0.97614825f, -0.97685349f,
--0.97754824f, -0.97823256f, -0.97890645f, -0.97956979f, -0.98022264f,
--0.98086500f, -0.98149687f, -0.98211825f, -0.98272908f, -0.98332942f,
--0.98391914f, -0.98449844f, -0.98506713f, -0.98562527f, -0.98617285f,
--0.98670989f, -0.98723638f, -0.98775226f, -0.98825759f, -0.98875231f,
--0.98923647f, -0.98971003f, -0.99017298f, -0.99062532f, -0.99106705f,
--0.99149817f, -0.99191868f, -0.99232858f, -0.99272782f, -0.99311644f,
--0.99349445f, -0.99386179f, -0.99421853f, -0.99456459f, -0.99489999f,
--0.99522477f, -0.99553883f, -0.99584228f, -0.99613506f, -0.99641716f,
--0.99668860f, -0.99694937f, -0.99719942f, -0.99743885f, -0.99766755f,
--0.99788558f, -0.99809295f, -0.99828959f, -0.99847561f, -0.99865085f,
--0.99881548f, -0.99896932f, -0.99911255f, -0.99924499f, -0.99936682f,
--0.99947786f, -0.99957830f, -0.99966794f, -0.99974692f, -0.99981517f,
--0.99987274f, -0.99991959f, -0.99995571f, -0.99998116f, -0.99999589f,
-0.99999964f, 0.99997288f, 0.99990326f, 0.99979085f, 0.99963558f,
-0.99943751f, 0.99919659f, 0.99891287f, 0.99858636f, 0.99821711f,
-0.99780506f, 0.99735034f, 0.99685282f, 0.99631262f, 0.99572974f,
-0.99510419f, 0.99443603f, 0.99372530f, 0.99297196f, 0.99217612f,
-0.99133772f, 0.99045694f, 0.98953366f, 0.98856801f, 0.98756003f,
-0.98650974f, 0.98541719f, 0.98428243f, 0.98310548f, 0.98188645f,
-0.98062533f, 0.97932225f, 0.97797716f, 0.97659022f, 0.97516143f,
-0.97369087f, 0.97217858f, 0.97062469f, 0.96902919f, 0.96739221f,
-0.96571374f, 0.96399397f, 0.96223283f, 0.96043050f, 0.95858705f,
-0.95670253f, 0.95477700f, 0.95281059f, 0.95080340f, 0.94875544f,
-0.94666684f, 0.94453770f, 0.94236809f, 0.94015813f, 0.93790787f,
-0.93561745f, 0.93328691f, 0.93091643f, 0.92850608f, 0.92605597f,
-0.92356616f, 0.92103678f, 0.91846794f, 0.91585976f, 0.91321236f,
-0.91052586f, 0.90780038f, 0.90503591f, 0.90223277f, 0.89939094f,
-0.89651060f, 0.89359182f, 0.89063478f, 0.88763964f, 0.88460642f,
-0.88153529f, 0.87842643f, 0.87527996f, 0.87209594f, 0.86887461f,
-0.86561602f, 0.86232042f, 0.85898781f, 0.85561842f, 0.85221243f,
-0.84876984f, 0.84529096f, 0.84177583f, 0.83822471f, 0.83463764f,
-0.83101481f, 0.82735640f, 0.82366252f, 0.81993335f, 0.81616908f,
-0.81236988f, 0.80853581f, 0.80466717f, 0.80076402f, 0.79682660f,
-0.79285502f, 0.78884947f, 0.78481019f, 0.78073722f, 0.77663082f,
-0.77249116f, 0.76831841f, 0.76411277f, 0.75987434f, 0.75560343f,
-0.75130010f, 0.74696463f, 0.74259710f, 0.73819780f, 0.73376691f,
-0.72930455f, 0.72481096f, 0.72028631f, 0.71573079f, 0.71114463f,
-0.70652801f, 0.70188117f, 0.69720417f, 0.69249737f, 0.68776089f,
-0.68299496f, 0.67819971f, 0.67337549f, 0.66852236f, 0.66364062f,
-0.65873051f, 0.65379208f, 0.64882571f, 0.64383155f, 0.63880974f,
-0.63376063f, 0.62868434f, 0.62358117f, 0.61845124f, 0.61329484f,
-0.60811216f, 0.60290343f, 0.59766883f, 0.59240872f, 0.58712316f,
-0.58181250f, 0.57647687f, 0.57111657f, 0.56573176f, 0.56032276f,
-0.55488980f, 0.54943299f, 0.54395270f, 0.53844911f, 0.53292239f,
-0.52737290f, 0.52180082f, 0.51620632f, 0.51058978f, 0.50495136f,
-0.49929130f, 0.49360985f, 0.48790723f, 0.48218375f, 0.47643960f,
-0.47067502f, 0.46489030f, 0.45908567f, 0.45326138f, 0.44741765f,
-0.44155475f, 0.43567297f, 0.42977250f, 0.42385364f, 0.41791660f,
-0.41196167f, 0.40598908f, 0.39999911f, 0.39399201f, 0.38796803f,
-0.38192743f, 0.37587047f, 0.36979741f, 0.36370850f, 0.35760403f,
-0.35148421f, 0.34534934f, 0.33919969f, 0.33303553f, 0.32685706f,
-0.32066461f, 0.31445843f, 0.30823877f, 0.30200592f, 0.29576012f,
-0.28950164f, 0.28323078f, 0.27694780f, 0.27065292f, 0.26434645f,
-0.25802869f, 0.25169984f, 0.24536023f, 0.23901010f, 0.23264973f,
-0.22627939f, 0.21989937f, 0.21350993f, 0.20711134f, 0.20070387f,
-0.19428782f, 0.18786344f, 0.18143101f, 0.17499080f, 0.16854310f,
-0.16208819f, 0.15562633f, 0.14915779f, 0.14268288f, 0.13620184f,
-0.12971498f, 0.12322257f, 0.11672486f, 0.11022217f, 0.10371475f,
-0.097202882f, 0.090686858f, 0.084166944f, 0.077643424f, 0.071116582f,
-0.064586692f, 0.058054037f, 0.051518895f, 0.044981543f, 0.038442269f,
-0.031901345f, 0.025359053f, 0.018815678f, 0.012271495f, 0.0057267868f,
--0.00081816671f, -0.0073630852f, -0.013907688f, -0.020451695f, -0.026994826f,
--0.033536803f, -0.040077340f, -0.046616159f, -0.053152986f, -0.059687532f,
--0.066219524f, -0.072748676f, -0.079274714f, -0.085797355f, -0.092316322f,
--0.098831341f, -0.10534211f, -0.11184838f, -0.11834986f, -0.12484626f,
--0.13133731f, -0.13782275f, -0.14430228f, -0.15077563f, -0.15724251f,
--0.16370267f, -0.17015581f, -0.17660165f, -0.18303993f, -0.18947038f,
--0.19589271f, -0.20230664f, -0.20871192f, -0.21510825f, -0.22149536f,
--0.22787298f, -0.23424086f, -0.24059868f, -0.24694622f, -0.25328314f,
--0.25960925f, -0.26592422f, -0.27222782f, -0.27851975f, -0.28479972f,
--0.29106751f, -0.29732284f, -0.30356544f, -0.30979502f, -0.31601134f,
--0.32221413f, -0.32840309f, -0.33457801f, -0.34073856f, -0.34688455f,
--0.35301566f, -0.35913166f, -0.36523229f, -0.37131724f, -0.37738630f,
--0.38343921f, -0.38947567f, -0.39549544f, -0.40149832f, -0.40748394f,
--0.41345215f, -0.41940263f, -0.42533514f, -0.43124944f, -0.43714526f,
--0.44302234f, -0.44888046f, -0.45471936f, -0.46053877f, -0.46633846f,
--0.47211814f, -0.47787762f, -0.48361665f, -0.48933494f, -0.49503228f,
--0.50070840f, -0.50636309f, -0.51199609f, -0.51760709f, -0.52319598f,
--0.52876246f, -0.53430629f, -0.53982723f, -0.54532504f, -0.55079949f,
--0.55625033f, -0.56167740f, -0.56708032f, -0.57245898f, -0.57781315f,
--0.58314258f, -0.58844697f, -0.59372622f, -0.59897995f, -0.60420811f,
--0.60941035f, -0.61458647f, -0.61973625f, -0.62485951f, -0.62995601f,
--0.63502556f, -0.64006782f, -0.64508271f, -0.65007001f, -0.65502942f,
--0.65996075f, -0.66486382f, -0.66973841f, -0.67458433f, -0.67940134f,
--0.68418926f, -0.68894786f, -0.69367695f, -0.69837630f, -0.70304573f,
--0.70768511f, -0.71229410f, -0.71687263f, -0.72142041f, -0.72593731f,
--0.73042315f, -0.73487765f, -0.73930067f, -0.74369204f, -0.74805158f,
--0.75237900f, -0.75667429f, -0.76093709f, -0.76516730f, -0.76936477f,
--0.77352923f, -0.77766061f, -0.78175867f, -0.78582323f, -0.78985411f,
--0.79385114f, -0.79781419f, -0.80174309f, -0.80563760f, -0.80949765f,
--0.81332302f, -0.81711352f, -0.82086903f, -0.82458937f, -0.82827437f,
--0.83192390f, -0.83553779f, -0.83911592f, -0.84265804f, -0.84616417f,
--0.84963393f, -0.85306740f, -0.85646427f, -0.85982448f, -0.86314780f,
--0.86643422f, -0.86968350f, -0.87289548f, -0.87607014f, -0.87920725f,
--0.88230664f, -0.88536829f, -0.88839203f, -0.89137769f, -0.89432514f,
--0.89723432f, -0.90010506f, -0.90293723f, -0.90573072f, -0.90848541f,
--0.91120118f, -0.91387796f, -0.91651553f, -0.91911387f, -0.92167282f,
--0.92419231f, -0.92667222f, -0.92911243f, -0.93151283f, -0.93387336f,
--0.93619382f, -0.93847424f, -0.94071442f, -0.94291431f, -0.94507378f,
--0.94719279f, -0.94927126f, -0.95130903f, -0.95330608f, -0.95526224f,
--0.95717752f, -0.95905179f, -0.96088499f, -0.96267700f, -0.96442777f,
--0.96613729f, -0.96780539f, -0.96943200f, -0.97101706f, -0.97256058f,
--0.97406244f, -0.97552258f, -0.97694093f, -0.97831738f, -0.97965199f,
--0.98094457f, -0.98219514f, -0.98340368f, -0.98457009f, -0.98569429f,
--0.98677629f, -0.98781598f, -0.98881340f, -0.98976845f, -0.99068111f,
--0.99155134f, -0.99237907f, -0.99316430f, -0.99390697f, -0.99460709f,
--0.99526459f, -0.99587947f, -0.99645168f, -0.99698120f, -0.99746799f,
--0.99791211f, -0.99831343f, -0.99867201f, -0.99898779f, -0.99926084f,
--0.99949104f, -0.99967843f, -0.99982297f, -0.99992472f, -0.99998361f,
-0.99999869f, 0.99989158f, 0.99961317f, 0.99916345f, 0.99854255f,
-0.99775058f, 0.99678761f, 0.99565387f, 0.99434954f, 0.99287480f,
-0.99122995f, 0.98941529f, 0.98743105f, 0.98527765f, 0.98295540f,
-0.98046476f, 0.97780609f, 0.97497988f, 0.97198665f, 0.96882683f,
-0.96550101f, 0.96200979f, 0.95835376f, 0.95453346f, 0.95054960f,
-0.94640291f, 0.94209403f, 0.93762374f, 0.93299282f, 0.92820197f,
-0.92325211f, 0.91814411f, 0.91287869f, 0.90745693f, 0.90187967f,
-0.89614785f, 0.89026248f, 0.88422459f, 0.87803519f, 0.87169534f,
-0.86520612f, 0.85856867f, 0.85178405f, 0.84485358f, 0.83777827f,
-0.83055943f, 0.82319832f, 0.81569612f, 0.80805415f, 0.80027372f,
-0.79235619f, 0.78430289f, 0.77611518f, 0.76779449f, 0.75934225f,
-0.75075996f, 0.74204898f, 0.73321080f, 0.72424710f, 0.71515924f,
-0.70594883f, 0.69661748f, 0.68716675f, 0.67759830f, 0.66791373f,
-0.65811473f, 0.64820296f, 0.63818014f, 0.62804794f, 0.61780810f,
-0.60746247f, 0.59701276f, 0.58646071f, 0.57580817f, 0.56505698f,
-0.55420899f, 0.54326600f, 0.53222996f, 0.52110273f, 0.50988621f,
-0.49858227f, 0.48719296f, 0.47572014f, 0.46416581f, 0.45253196f,
-0.44082057f, 0.42903364f, 0.41717321f, 0.40524128f, 0.39323992f,
-0.38117120f, 0.36903715f, 0.35683987f, 0.34458145f, 0.33226398f,
-0.31988961f, 0.30746040f, 0.29497850f, 0.28244606f, 0.26986524f,
-0.25723818f, 0.24456702f, 0.23185398f, 0.21910121f, 0.20631088f,
-0.19348522f, 0.18062639f, 0.16773662f, 0.15481812f, 0.14187308f,
-0.12890373f, 0.11591230f, 0.10290100f, 0.089872077f, 0.076827750f,
-0.063770257f, 0.050701842f, 0.037624735f, 0.024541186f, 0.011453429f,
--0.0016362892f, -0.014725727f, -0.027812643f, -0.040894791f, -0.053969935f,
--0.067035832f, -0.080090240f, -0.093130924f, -0.10615565f, -0.11916219f,
--0.13214831f, -0.14511178f, -0.15805040f, -0.17096193f, -0.18384418f,
--0.19669491f, -0.20951195f, -0.22229309f, -0.23503613f, -0.24773891f,
--0.26039925f, -0.27301496f, -0.28558388f, -0.29810387f, -0.31057280f,
--0.32298848f, -0.33534884f, -0.34765175f, -0.35989508f, -0.37207675f,
--0.38419467f, -0.39624676f, -0.40823093f, -0.42014518f, -0.43198743f,
--0.44375566f, -0.45544785f, -0.46706200f, -0.47859612f, -0.49004826f,
--0.50141639f, -0.51269865f, -0.52389306f, -0.53499764f, -0.54601061f,
--0.55693001f, -0.56775403f, -0.57848072f, -0.58910829f, -0.59963489f,
--0.61005878f, -0.62037814f, -0.63059121f, -0.64069623f, -0.65069145f,
--0.66057515f, -0.67034572f, -0.68000144f, -0.68954057f, -0.69896162f,
--0.70826286f, -0.71744281f, -0.72649974f, -0.73543227f, -0.74423873f,
--0.75291771f, -0.76146764f, -0.76988715f, -0.77817470f, -0.78632891f,
--0.79434842f, -0.80223179f, -0.80997771f, -0.81758487f, -0.82505190f,
--0.83237761f, -0.83956063f, -0.84659988f, -0.85349399f, -0.86024189f,
--0.86684239f, -0.87329435f, -0.87959671f, -0.88574833f, -0.89174819f,
--0.89759529f, -0.90328854f, -0.90882701f, -0.91420978f, -0.91943592f,
--0.92450452f, -0.92941469f, -0.93416560f, -0.93875647f, -0.94318646f,
--0.94745487f, -0.95156091f, -0.95550388f, -0.95928317f, -0.96289814f,
--0.96634805f, -0.96963239f, -0.97275060f, -0.97570217f, -0.97848648f,
--0.98110318f, -0.98355180f, -0.98583186f, -0.98794299f, -0.98988485f,
--0.99165714f, -0.99325943f, -0.99469161f, -0.99595332f, -0.99704438f,
--0.99796462f, -0.99871385f, -0.99929196f, -0.99969882f, -0.99993443f,
-0.99999464f, 0.99956632f, 0.99845290f, 0.99665523f, 0.99417448f,
-0.99101239f, 0.98717111f, 0.98265326f, 0.97746199f, 0.97160077f,
-0.96507365f, 0.95788515f, 0.95004016f, 0.94154406f, 0.93240267f,
-0.92262226f, 0.91220951f, 0.90117162f, 0.88951606f, 0.87725091f,
-0.86438453f, 0.85092574f, 0.83688372f, 0.82226819f, 0.80708915f,
-0.79135692f, 0.77508235f, 0.75827658f, 0.74095112f, 0.72311783f,
-0.70478898f, 0.68597710f, 0.66669506f, 0.64695615f, 0.62677377f,
-0.60616189f, 0.58513457f, 0.56370622f, 0.54189157f, 0.51970547f,
-0.49716324f, 0.47428027f, 0.45107225f, 0.42755505f, 0.40374488f,
-0.37965798f, 0.35531086f, 0.33072025f, 0.30590299f, 0.28087607f,
-0.25565663f, 0.23026201f, 0.20470956f, 0.17901683f, 0.15320139f,
-0.12728097f, 0.10127331f, 0.075196236f, 0.049067631f, 0.022905400f,
--0.0032725304f, -0.029448219f, -0.055603724f, -0.081721120f, -0.10778251f,
--0.13377003f, -0.15966587f, -0.18545228f, -0.21111161f, -0.23662624f,
--0.26197869f, -0.28715160f, -0.31212771f, -0.33688989f, -0.36142120f,
--0.38570482f, -0.40972409f, -0.43346253f, -0.45690393f, -0.48003218f,
--0.50283146f, -0.52528608f, -0.54738069f, -0.56910020f, -0.59042966f,
--0.61135447f, -0.63186026f, -0.65193301f, -0.67155898f, -0.69072473f,
--0.70941705f, -0.72762316f, -0.74533063f, -0.76252723f, -0.77920127f,
--0.79534131f, -0.81093621f, -0.82597536f, -0.84044844f, -0.85434550f,
--0.86765707f, -0.88037395f, -0.89248747f, -0.90398932f, -0.91487163f,
--0.92512697f, -0.93474823f, -0.94372886f, -0.95206273f, -0.95974404f,
--0.96676767f, -0.97312868f, -0.97882277f, -0.98384601f, -0.98819500f,
--0.99186671f, -0.99485862f, -0.99716878f, -0.99879545f, -0.99973762f,
-};
-#endif
-
-static const CELTMode mode48000_960_120 = {
-48000, /* Fs */
-120, /* overlap */
-21, /* nbEBands */
-21, /* effEBands */
-{0.85000610f, 0.0000000f, 1.0000000f, 1.0000000f, }, /* preemph */
-eband5ms, /* eBands */
-3, /* maxLM */
-8, /* nbShortMdcts */
-120, /* shortMdctSize */
-11, /* nbAllocVectors */
-band_allocation, /* allocVectors */
-logN400, /* logN */
-window120, /* window */
-{1920, 3, {&fft_state48000_960_0, &fft_state48000_960_1, &fft_state48000_960_2, &fft_state48000_960_3, }, mdct_twiddles960}, /* mdct */
-{392, cache_index50, cache_bits50, cache_caps50}, /* cache */
-};
-
-/* List of all the available modes */
-#define TOTAL_MODES 1
-static const CELTMode * const static_mode_list[TOTAL_MODES] = {
-&mode48000_960_120,
-};
diff --git a/thirdparty/opus/celt/static_modes_float_arm_ne10.h b/thirdparty/opus/celt/static_modes_float_arm_ne10.h
deleted file mode 100644
index 934a82a420..0000000000
--- a/thirdparty/opus/celt/static_modes_float_arm_ne10.h
+++ /dev/null
@@ -1,404 +0,0 @@
-/* The contents of this file was automatically generated by
- * dump_mode_arm_ne10.c with arguments: 48000 960
- * It contains static definitions for some pre-defined modes. */
-#include <NE10_init.h>
-
-#ifndef NE10_FFT_PARAMS48000_960
-#define NE10_FFT_PARAMS48000_960
-static const ne10_int32_t ne10_factors_480[64] = {
-4, 40, 4, 30, 2, 15, 5, 3, 3, 1, 1, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, };
-static const ne10_int32_t ne10_factors_240[64] = {
-3, 20, 4, 15, 5, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, };
-static const ne10_int32_t ne10_factors_120[64] = {
-3, 10, 2, 15, 5, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, };
-static const ne10_int32_t ne10_factors_60[64] = {
-2, 5, 5, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, };
-static const ne10_fft_cpx_float32_t ne10_twiddles_480[480] = {
-{1.0000000f,0.0000000f}, {1.0000000f,-0.0000000f}, {1.0000000f,-0.0000000f},
-{1.0000000f,-0.0000000f}, {0.91354543f,-0.40673664f}, {0.66913056f,-0.74314487f},
-{1.0000000f,-0.0000000f}, {0.66913056f,-0.74314487f}, {-0.10452851f,-0.99452192f},
-{1.0000000f,-0.0000000f}, {0.30901697f,-0.95105654f}, {-0.80901700f,-0.58778518f},
-{1.0000000f,-0.0000000f}, {-0.10452851f,-0.99452192f}, {-0.97814757f,0.20791179f},
-{1.0000000f,-0.0000000f}, {0.97814763f,-0.20791170f}, {0.91354543f,-0.40673664f},
-{0.80901700f,-0.58778524f}, {0.66913056f,-0.74314487f}, {0.49999997f,-0.86602545f},
-{0.30901697f,-0.95105654f}, {0.10452842f,-0.99452192f}, {-0.10452851f,-0.99452192f},
-{-0.30901703f,-0.95105648f}, {-0.50000006f,-0.86602533f}, {-0.66913068f,-0.74314475f},
-{-0.80901700f,-0.58778518f}, {-0.91354549f,-0.40673658f}, {-0.97814763f,-0.20791161f},
-{1.0000000f,-0.0000000f}, {0.99862951f,-0.052335959f}, {0.99452192f,-0.10452846f},
-{0.98768836f,-0.15643448f}, {0.97814763f,-0.20791170f}, {0.96592581f,-0.25881904f},
-{0.95105648f,-0.30901700f}, {0.93358040f,-0.35836795f}, {0.91354543f,-0.40673664f},
-{0.89100653f,-0.45399052f}, {0.86602545f,-0.50000000f}, {0.83867055f,-0.54463905f},
-{0.80901700f,-0.58778524f}, {0.77714598f,-0.62932038f}, {0.74314475f,-0.66913062f},
-{0.70710677f,-0.70710683f}, {0.66913056f,-0.74314487f}, {0.62932038f,-0.77714598f},
-{0.58778524f,-0.80901700f}, {0.54463899f,-0.83867055f}, {0.49999997f,-0.86602545f},
-{0.45399052f,-0.89100653f}, {0.40673661f,-0.91354549f}, {0.35836786f,-0.93358046f},
-{0.30901697f,-0.95105654f}, {0.25881907f,-0.96592581f}, {0.20791166f,-0.97814763f},
-{0.15643437f,-0.98768836f}, {0.10452842f,-0.99452192f}, {0.052335974f,-0.99862951f},
-{1.0000000f,-0.0000000f}, {0.99452192f,-0.10452846f}, {0.97814763f,-0.20791170f},
-{0.95105648f,-0.30901700f}, {0.91354543f,-0.40673664f}, {0.86602545f,-0.50000000f},
-{0.80901700f,-0.58778524f}, {0.74314475f,-0.66913062f}, {0.66913056f,-0.74314487f},
-{0.58778524f,-0.80901700f}, {0.49999997f,-0.86602545f}, {0.40673661f,-0.91354549f},
-{0.30901697f,-0.95105654f}, {0.20791166f,-0.97814763f}, {0.10452842f,-0.99452192f},
-{-4.3711388e-08f,-1.0000000f}, {-0.10452851f,-0.99452192f}, {-0.20791174f,-0.97814757f},
-{-0.30901703f,-0.95105648f}, {-0.40673670f,-0.91354543f}, {-0.50000006f,-0.86602533f},
-{-0.58778518f,-0.80901700f}, {-0.66913068f,-0.74314475f}, {-0.74314493f,-0.66913044f},
-{-0.80901700f,-0.58778518f}, {-0.86602539f,-0.50000006f}, {-0.91354549f,-0.40673658f},
-{-0.95105654f,-0.30901679f}, {-0.97814763f,-0.20791161f}, {-0.99452192f,-0.10452849f},
-{1.0000000f,-0.0000000f}, {0.98768836f,-0.15643448f}, {0.95105648f,-0.30901700f},
-{0.89100653f,-0.45399052f}, {0.80901700f,-0.58778524f}, {0.70710677f,-0.70710683f},
-{0.58778524f,-0.80901700f}, {0.45399052f,-0.89100653f}, {0.30901697f,-0.95105654f},
-{0.15643437f,-0.98768836f}, {-4.3711388e-08f,-1.0000000f}, {-0.15643445f,-0.98768836f},
-{-0.30901703f,-0.95105648f}, {-0.45399061f,-0.89100647f}, {-0.58778518f,-0.80901700f},
-{-0.70710677f,-0.70710677f}, {-0.80901700f,-0.58778518f}, {-0.89100659f,-0.45399037f},
-{-0.95105654f,-0.30901679f}, {-0.98768836f,-0.15643445f}, {-1.0000000f,8.7422777e-08f},
-{-0.98768830f,0.15643461f}, {-0.95105654f,0.30901697f}, {-0.89100653f,0.45399055f},
-{-0.80901694f,0.58778536f}, {-0.70710665f,0.70710689f}, {-0.58778507f,0.80901712f},
-{-0.45399022f,0.89100665f}, {-0.30901709f,0.95105648f}, {-0.15643452f,0.98768830f},
-{1.0000000f,-0.0000000f}, {0.99991435f,-0.013089596f}, {0.99965733f,-0.026176950f},
-{0.99922901f,-0.039259817f}, {0.99862951f,-0.052335959f}, {0.99785894f,-0.065403134f},
-{0.99691731f,-0.078459099f}, {0.99580491f,-0.091501623f}, {0.99452192f,-0.10452846f},
-{0.99306846f,-0.11753740f}, {0.99144489f,-0.13052620f}, {0.98965138f,-0.14349262f},
-{0.98768836f,-0.15643448f}, {0.98555607f,-0.16934951f}, {0.98325491f,-0.18223552f},
-{0.98078525f,-0.19509032f}, {0.97814763f,-0.20791170f}, {0.97534233f,-0.22069745f},
-{0.97236991f,-0.23344538f}, {0.96923089f,-0.24615330f}, {0.96592581f,-0.25881904f},
-{0.96245521f,-0.27144045f}, {0.95881975f,-0.28401536f}, {0.95501995f,-0.29654160f},
-{0.95105648f,-0.30901700f}, {0.94693011f,-0.32143945f}, {0.94264150f,-0.33380687f},
-{0.93819129f,-0.34611708f}, {0.93358040f,-0.35836795f}, {0.92880952f,-0.37055743f},
-{0.92387956f,-0.38268346f}, {0.91879117f,-0.39474389f}, {0.91354543f,-0.40673664f},
-{0.90814316f,-0.41865975f}, {0.90258527f,-0.43051112f}, {0.89687270f,-0.44228873f},
-{0.89100653f,-0.45399052f}, {0.88498765f,-0.46561453f}, {0.87881708f,-0.47715878f},
-{0.87249601f,-0.48862126f}, {0.86602545f,-0.50000000f}, {0.85940641f,-0.51129311f},
-{0.85264015f,-0.52249855f}, {0.84572786f,-0.53361452f}, {0.83867055f,-0.54463905f},
-{0.83146960f,-0.55557024f}, {0.82412618f,-0.56640625f}, {0.81664151f,-0.57714522f},
-{0.80901700f,-0.58778524f}, {0.80125380f,-0.59832460f}, {0.79335332f,-0.60876143f},
-{0.78531694f,-0.61909395f}, {0.77714598f,-0.62932038f}, {0.76884180f,-0.63943899f},
-{0.76040596f,-0.64944810f}, {0.75183982f,-0.65934587f}, {0.74314475f,-0.66913062f},
-{0.73432249f,-0.67880076f}, {0.72537434f,-0.68835455f}, {0.71630192f,-0.69779050f},
-{0.70710677f,-0.70710683f}, {0.69779044f,-0.71630198f}, {0.68835455f,-0.72537440f},
-{0.67880070f,-0.73432255f}, {0.66913056f,-0.74314487f}, {0.65934581f,-0.75183982f},
-{0.64944804f,-0.76040596f}, {0.63943899f,-0.76884186f}, {0.62932038f,-0.77714598f},
-{0.61909395f,-0.78531694f}, {0.60876137f,-0.79335338f}, {0.59832460f,-0.80125386f},
-{0.58778524f,-0.80901700f}, {0.57714516f,-0.81664151f}, {0.56640625f,-0.82412618f},
-{0.55557019f,-0.83146960f}, {0.54463899f,-0.83867055f}, {0.53361452f,-0.84572786f},
-{0.52249849f,-0.85264015f}, {0.51129311f,-0.85940641f}, {0.49999997f,-0.86602545f},
-{0.48862118f,-0.87249601f}, {0.47715876f,-0.87881708f}, {0.46561447f,-0.88498765f},
-{0.45399052f,-0.89100653f}, {0.44228867f,-0.89687276f}, {0.43051103f,-0.90258533f},
-{0.41865975f,-0.90814316f}, {0.40673661f,-0.91354549f}, {0.39474380f,-0.91879129f},
-{0.38268343f,-0.92387956f}, {0.37055740f,-0.92880958f}, {0.35836786f,-0.93358046f},
-{0.34611705f,-0.93819135f}, {0.33380681f,-0.94264150f}, {0.32143947f,-0.94693011f},
-{0.30901697f,-0.95105654f}, {0.29654151f,-0.95501995f}, {0.28401533f,-0.95881975f},
-{0.27144039f,-0.96245527f}, {0.25881907f,-0.96592581f}, {0.24615327f,-0.96923089f},
-{0.23344530f,-0.97236991f}, {0.22069745f,-0.97534233f}, {0.20791166f,-0.97814763f},
-{0.19509023f,-0.98078531f}, {0.18223552f,-0.98325491f}, {0.16934945f,-0.98555607f},
-{0.15643437f,-0.98768836f}, {0.14349259f,-0.98965138f}, {0.13052613f,-0.99144489f},
-{0.11753740f,-0.99306846f}, {0.10452842f,-0.99452192f}, {0.091501534f,-0.99580491f},
-{0.078459084f,-0.99691731f}, {0.065403074f,-0.99785894f}, {0.052335974f,-0.99862951f},
-{0.039259788f,-0.99922901f}, {0.026176875f,-0.99965733f}, {0.013089597f,-0.99991435f},
-{1.0000000f,-0.0000000f}, {0.99965733f,-0.026176950f}, {0.99862951f,-0.052335959f},
-{0.99691731f,-0.078459099f}, {0.99452192f,-0.10452846f}, {0.99144489f,-0.13052620f},
-{0.98768836f,-0.15643448f}, {0.98325491f,-0.18223552f}, {0.97814763f,-0.20791170f},
-{0.97236991f,-0.23344538f}, {0.96592581f,-0.25881904f}, {0.95881975f,-0.28401536f},
-{0.95105648f,-0.30901700f}, {0.94264150f,-0.33380687f}, {0.93358040f,-0.35836795f},
-{0.92387956f,-0.38268346f}, {0.91354543f,-0.40673664f}, {0.90258527f,-0.43051112f},
-{0.89100653f,-0.45399052f}, {0.87881708f,-0.47715878f}, {0.86602545f,-0.50000000f},
-{0.85264015f,-0.52249855f}, {0.83867055f,-0.54463905f}, {0.82412618f,-0.56640625f},
-{0.80901700f,-0.58778524f}, {0.79335332f,-0.60876143f}, {0.77714598f,-0.62932038f},
-{0.76040596f,-0.64944810f}, {0.74314475f,-0.66913062f}, {0.72537434f,-0.68835455f},
-{0.70710677f,-0.70710683f}, {0.68835455f,-0.72537440f}, {0.66913056f,-0.74314487f},
-{0.64944804f,-0.76040596f}, {0.62932038f,-0.77714598f}, {0.60876137f,-0.79335338f},
-{0.58778524f,-0.80901700f}, {0.56640625f,-0.82412618f}, {0.54463899f,-0.83867055f},
-{0.52249849f,-0.85264015f}, {0.49999997f,-0.86602545f}, {0.47715876f,-0.87881708f},
-{0.45399052f,-0.89100653f}, {0.43051103f,-0.90258533f}, {0.40673661f,-0.91354549f},
-{0.38268343f,-0.92387956f}, {0.35836786f,-0.93358046f}, {0.33380681f,-0.94264150f},
-{0.30901697f,-0.95105654f}, {0.28401533f,-0.95881975f}, {0.25881907f,-0.96592581f},
-{0.23344530f,-0.97236991f}, {0.20791166f,-0.97814763f}, {0.18223552f,-0.98325491f},
-{0.15643437f,-0.98768836f}, {0.13052613f,-0.99144489f}, {0.10452842f,-0.99452192f},
-{0.078459084f,-0.99691731f}, {0.052335974f,-0.99862951f}, {0.026176875f,-0.99965733f},
-{-4.3711388e-08f,-1.0000000f}, {-0.026176963f,-0.99965733f}, {-0.052336060f,-0.99862951f},
-{-0.078459173f,-0.99691731f}, {-0.10452851f,-0.99452192f}, {-0.13052621f,-0.99144489f},
-{-0.15643445f,-0.98768836f}, {-0.18223560f,-0.98325491f}, {-0.20791174f,-0.97814757f},
-{-0.23344538f,-0.97236991f}, {-0.25881916f,-0.96592581f}, {-0.28401542f,-0.95881969f},
-{-0.30901703f,-0.95105648f}, {-0.33380687f,-0.94264150f}, {-0.35836795f,-0.93358040f},
-{-0.38268352f,-0.92387950f}, {-0.40673670f,-0.91354543f}, {-0.43051112f,-0.90258527f},
-{-0.45399061f,-0.89100647f}, {-0.47715873f,-0.87881708f}, {-0.50000006f,-0.86602533f},
-{-0.52249867f,-0.85264009f}, {-0.54463905f,-0.83867055f}, {-0.56640631f,-0.82412612f},
-{-0.58778518f,-0.80901700f}, {-0.60876143f,-0.79335332f}, {-0.62932050f,-0.77714586f},
-{-0.64944804f,-0.76040596f}, {-0.66913068f,-0.74314475f}, {-0.68835467f,-0.72537428f},
-{-0.70710677f,-0.70710677f}, {-0.72537446f,-0.68835449f}, {-0.74314493f,-0.66913044f},
-{-0.76040596f,-0.64944804f}, {-0.77714604f,-0.62932026f}, {-0.79335332f,-0.60876143f},
-{-0.80901700f,-0.58778518f}, {-0.82412624f,-0.56640613f}, {-0.83867055f,-0.54463899f},
-{-0.85264021f,-0.52249849f}, {-0.86602539f,-0.50000006f}, {-0.87881714f,-0.47715873f},
-{-0.89100659f,-0.45399037f}, {-0.90258527f,-0.43051112f}, {-0.91354549f,-0.40673658f},
-{-0.92387956f,-0.38268328f}, {-0.93358040f,-0.35836792f}, {-0.94264150f,-0.33380675f},
-{-0.95105654f,-0.30901679f}, {-0.95881975f,-0.28401530f}, {-0.96592587f,-0.25881892f},
-{-0.97236991f,-0.23344538f}, {-0.97814763f,-0.20791161f}, {-0.98325491f,-0.18223536f},
-{-0.98768836f,-0.15643445f}, {-0.99144489f,-0.13052608f}, {-0.99452192f,-0.10452849f},
-{-0.99691737f,-0.078459039f}, {-0.99862957f,-0.052335810f}, {-0.99965733f,-0.026176952f},
-{1.0000000f,-0.0000000f}, {0.99922901f,-0.039259817f}, {0.99691731f,-0.078459099f},
-{0.99306846f,-0.11753740f}, {0.98768836f,-0.15643448f}, {0.98078525f,-0.19509032f},
-{0.97236991f,-0.23344538f}, {0.96245521f,-0.27144045f}, {0.95105648f,-0.30901700f},
-{0.93819129f,-0.34611708f}, {0.92387956f,-0.38268346f}, {0.90814316f,-0.41865975f},
-{0.89100653f,-0.45399052f}, {0.87249601f,-0.48862126f}, {0.85264015f,-0.52249855f},
-{0.83146960f,-0.55557024f}, {0.80901700f,-0.58778524f}, {0.78531694f,-0.61909395f},
-{0.76040596f,-0.64944810f}, {0.73432249f,-0.67880076f}, {0.70710677f,-0.70710683f},
-{0.67880070f,-0.73432255f}, {0.64944804f,-0.76040596f}, {0.61909395f,-0.78531694f},
-{0.58778524f,-0.80901700f}, {0.55557019f,-0.83146960f}, {0.52249849f,-0.85264015f},
-{0.48862118f,-0.87249601f}, {0.45399052f,-0.89100653f}, {0.41865975f,-0.90814316f},
-{0.38268343f,-0.92387956f}, {0.34611705f,-0.93819135f}, {0.30901697f,-0.95105654f},
-{0.27144039f,-0.96245527f}, {0.23344530f,-0.97236991f}, {0.19509023f,-0.98078531f},
-{0.15643437f,-0.98768836f}, {0.11753740f,-0.99306846f}, {0.078459084f,-0.99691731f},
-{0.039259788f,-0.99922901f}, {-4.3711388e-08f,-1.0000000f}, {-0.039259877f,-0.99922901f},
-{-0.078459173f,-0.99691731f}, {-0.11753749f,-0.99306846f}, {-0.15643445f,-0.98768836f},
-{-0.19509032f,-0.98078525f}, {-0.23344538f,-0.97236991f}, {-0.27144048f,-0.96245521f},
-{-0.30901703f,-0.95105648f}, {-0.34611711f,-0.93819129f}, {-0.38268352f,-0.92387950f},
-{-0.41865984f,-0.90814310f}, {-0.45399061f,-0.89100647f}, {-0.48862135f,-0.87249595f},
-{-0.52249867f,-0.85264009f}, {-0.55557036f,-0.83146954f}, {-0.58778518f,-0.80901700f},
-{-0.61909389f,-0.78531694f}, {-0.64944804f,-0.76040596f}, {-0.67880076f,-0.73432249f},
-{-0.70710677f,-0.70710677f}, {-0.73432249f,-0.67880070f}, {-0.76040596f,-0.64944804f},
-{-0.78531694f,-0.61909389f}, {-0.80901700f,-0.58778518f}, {-0.83146966f,-0.55557019f},
-{-0.85264021f,-0.52249849f}, {-0.87249607f,-0.48862115f}, {-0.89100659f,-0.45399037f},
-{-0.90814322f,-0.41865960f}, {-0.92387956f,-0.38268328f}, {-0.93819135f,-0.34611690f},
-{-0.95105654f,-0.30901679f}, {-0.96245521f,-0.27144048f}, {-0.97236991f,-0.23344538f},
-{-0.98078531f,-0.19509031f}, {-0.98768836f,-0.15643445f}, {-0.99306846f,-0.11753736f},
-{-0.99691737f,-0.078459039f}, {-0.99922901f,-0.039259743f}, {-1.0000000f,8.7422777e-08f},
-{-0.99922901f,0.039259918f}, {-0.99691731f,0.078459218f}, {-0.99306846f,0.11753753f},
-{-0.98768830f,0.15643461f}, {-0.98078525f,0.19509049f}, {-0.97236985f,0.23344554f},
-{-0.96245515f,0.27144065f}, {-0.95105654f,0.30901697f}, {-0.93819135f,0.34611705f},
-{-0.92387956f,0.38268346f}, {-0.90814316f,0.41865975f}, {-0.89100653f,0.45399055f},
-{-0.87249601f,0.48862129f}, {-0.85264015f,0.52249861f}, {-0.83146960f,0.55557030f},
-{-0.80901694f,0.58778536f}, {-0.78531688f,0.61909401f}, {-0.76040590f,0.64944816f},
-{-0.73432243f,0.67880082f}, {-0.70710665f,0.70710689f}, {-0.67880058f,0.73432261f},
-{-0.64944792f,0.76040608f}, {-0.61909378f,0.78531706f}, {-0.58778507f,0.80901712f},
-{-0.55557001f,0.83146977f}, {-0.52249837f,0.85264033f}, {-0.48862100f,0.87249613f},
-{-0.45399022f,0.89100665f}, {-0.41865945f,0.90814328f}, {-0.38268313f,0.92387968f},
-{-0.34611672f,0.93819147f}, {-0.30901709f,0.95105648f}, {-0.27144054f,0.96245521f},
-{-0.23344545f,0.97236991f}, {-0.19509038f,0.98078525f}, {-0.15643452f,0.98768830f},
-{-0.11753743f,0.99306846f}, {-0.078459114f,0.99691731f}, {-0.039259821f,0.99922901f},
-};
-static const ne10_fft_cpx_float32_t ne10_twiddles_240[240] = {
-{1.0000000f,0.0000000f}, {1.0000000f,-0.0000000f}, {1.0000000f,-0.0000000f},
-{1.0000000f,-0.0000000f}, {0.91354543f,-0.40673664f}, {0.66913056f,-0.74314487f},
-{1.0000000f,-0.0000000f}, {0.66913056f,-0.74314487f}, {-0.10452851f,-0.99452192f},
-{1.0000000f,-0.0000000f}, {0.30901697f,-0.95105654f}, {-0.80901700f,-0.58778518f},
-{1.0000000f,-0.0000000f}, {-0.10452851f,-0.99452192f}, {-0.97814757f,0.20791179f},
-{1.0000000f,-0.0000000f}, {0.99452192f,-0.10452846f}, {0.97814763f,-0.20791170f},
-{0.95105648f,-0.30901700f}, {0.91354543f,-0.40673664f}, {0.86602545f,-0.50000000f},
-{0.80901700f,-0.58778524f}, {0.74314475f,-0.66913062f}, {0.66913056f,-0.74314487f},
-{0.58778524f,-0.80901700f}, {0.49999997f,-0.86602545f}, {0.40673661f,-0.91354549f},
-{0.30901697f,-0.95105654f}, {0.20791166f,-0.97814763f}, {0.10452842f,-0.99452192f},
-{1.0000000f,-0.0000000f}, {0.97814763f,-0.20791170f}, {0.91354543f,-0.40673664f},
-{0.80901700f,-0.58778524f}, {0.66913056f,-0.74314487f}, {0.49999997f,-0.86602545f},
-{0.30901697f,-0.95105654f}, {0.10452842f,-0.99452192f}, {-0.10452851f,-0.99452192f},
-{-0.30901703f,-0.95105648f}, {-0.50000006f,-0.86602533f}, {-0.66913068f,-0.74314475f},
-{-0.80901700f,-0.58778518f}, {-0.91354549f,-0.40673658f}, {-0.97814763f,-0.20791161f},
-{1.0000000f,-0.0000000f}, {0.95105648f,-0.30901700f}, {0.80901700f,-0.58778524f},
-{0.58778524f,-0.80901700f}, {0.30901697f,-0.95105654f}, {-4.3711388e-08f,-1.0000000f},
-{-0.30901703f,-0.95105648f}, {-0.58778518f,-0.80901700f}, {-0.80901700f,-0.58778518f},
-{-0.95105654f,-0.30901679f}, {-1.0000000f,8.7422777e-08f}, {-0.95105654f,0.30901697f},
-{-0.80901694f,0.58778536f}, {-0.58778507f,0.80901712f}, {-0.30901709f,0.95105648f},
-{1.0000000f,-0.0000000f}, {0.99965733f,-0.026176950f}, {0.99862951f,-0.052335959f},
-{0.99691731f,-0.078459099f}, {0.99452192f,-0.10452846f}, {0.99144489f,-0.13052620f},
-{0.98768836f,-0.15643448f}, {0.98325491f,-0.18223552f}, {0.97814763f,-0.20791170f},
-{0.97236991f,-0.23344538f}, {0.96592581f,-0.25881904f}, {0.95881975f,-0.28401536f},
-{0.95105648f,-0.30901700f}, {0.94264150f,-0.33380687f}, {0.93358040f,-0.35836795f},
-{0.92387956f,-0.38268346f}, {0.91354543f,-0.40673664f}, {0.90258527f,-0.43051112f},
-{0.89100653f,-0.45399052f}, {0.87881708f,-0.47715878f}, {0.86602545f,-0.50000000f},
-{0.85264015f,-0.52249855f}, {0.83867055f,-0.54463905f}, {0.82412618f,-0.56640625f},
-{0.80901700f,-0.58778524f}, {0.79335332f,-0.60876143f}, {0.77714598f,-0.62932038f},
-{0.76040596f,-0.64944810f}, {0.74314475f,-0.66913062f}, {0.72537434f,-0.68835455f},
-{0.70710677f,-0.70710683f}, {0.68835455f,-0.72537440f}, {0.66913056f,-0.74314487f},
-{0.64944804f,-0.76040596f}, {0.62932038f,-0.77714598f}, {0.60876137f,-0.79335338f},
-{0.58778524f,-0.80901700f}, {0.56640625f,-0.82412618f}, {0.54463899f,-0.83867055f},
-{0.52249849f,-0.85264015f}, {0.49999997f,-0.86602545f}, {0.47715876f,-0.87881708f},
-{0.45399052f,-0.89100653f}, {0.43051103f,-0.90258533f}, {0.40673661f,-0.91354549f},
-{0.38268343f,-0.92387956f}, {0.35836786f,-0.93358046f}, {0.33380681f,-0.94264150f},
-{0.30901697f,-0.95105654f}, {0.28401533f,-0.95881975f}, {0.25881907f,-0.96592581f},
-{0.23344530f,-0.97236991f}, {0.20791166f,-0.97814763f}, {0.18223552f,-0.98325491f},
-{0.15643437f,-0.98768836f}, {0.13052613f,-0.99144489f}, {0.10452842f,-0.99452192f},
-{0.078459084f,-0.99691731f}, {0.052335974f,-0.99862951f}, {0.026176875f,-0.99965733f},
-{1.0000000f,-0.0000000f}, {0.99862951f,-0.052335959f}, {0.99452192f,-0.10452846f},
-{0.98768836f,-0.15643448f}, {0.97814763f,-0.20791170f}, {0.96592581f,-0.25881904f},
-{0.95105648f,-0.30901700f}, {0.93358040f,-0.35836795f}, {0.91354543f,-0.40673664f},
-{0.89100653f,-0.45399052f}, {0.86602545f,-0.50000000f}, {0.83867055f,-0.54463905f},
-{0.80901700f,-0.58778524f}, {0.77714598f,-0.62932038f}, {0.74314475f,-0.66913062f},
-{0.70710677f,-0.70710683f}, {0.66913056f,-0.74314487f}, {0.62932038f,-0.77714598f},
-{0.58778524f,-0.80901700f}, {0.54463899f,-0.83867055f}, {0.49999997f,-0.86602545f},
-{0.45399052f,-0.89100653f}, {0.40673661f,-0.91354549f}, {0.35836786f,-0.93358046f},
-{0.30901697f,-0.95105654f}, {0.25881907f,-0.96592581f}, {0.20791166f,-0.97814763f},
-{0.15643437f,-0.98768836f}, {0.10452842f,-0.99452192f}, {0.052335974f,-0.99862951f},
-{-4.3711388e-08f,-1.0000000f}, {-0.052336060f,-0.99862951f}, {-0.10452851f,-0.99452192f},
-{-0.15643445f,-0.98768836f}, {-0.20791174f,-0.97814757f}, {-0.25881916f,-0.96592581f},
-{-0.30901703f,-0.95105648f}, {-0.35836795f,-0.93358040f}, {-0.40673670f,-0.91354543f},
-{-0.45399061f,-0.89100647f}, {-0.50000006f,-0.86602533f}, {-0.54463905f,-0.83867055f},
-{-0.58778518f,-0.80901700f}, {-0.62932050f,-0.77714586f}, {-0.66913068f,-0.74314475f},
-{-0.70710677f,-0.70710677f}, {-0.74314493f,-0.66913044f}, {-0.77714604f,-0.62932026f},
-{-0.80901700f,-0.58778518f}, {-0.83867055f,-0.54463899f}, {-0.86602539f,-0.50000006f},
-{-0.89100659f,-0.45399037f}, {-0.91354549f,-0.40673658f}, {-0.93358040f,-0.35836792f},
-{-0.95105654f,-0.30901679f}, {-0.96592587f,-0.25881892f}, {-0.97814763f,-0.20791161f},
-{-0.98768836f,-0.15643445f}, {-0.99452192f,-0.10452849f}, {-0.99862957f,-0.052335810f},
-{1.0000000f,-0.0000000f}, {0.99691731f,-0.078459099f}, {0.98768836f,-0.15643448f},
-{0.97236991f,-0.23344538f}, {0.95105648f,-0.30901700f}, {0.92387956f,-0.38268346f},
-{0.89100653f,-0.45399052f}, {0.85264015f,-0.52249855f}, {0.80901700f,-0.58778524f},
-{0.76040596f,-0.64944810f}, {0.70710677f,-0.70710683f}, {0.64944804f,-0.76040596f},
-{0.58778524f,-0.80901700f}, {0.52249849f,-0.85264015f}, {0.45399052f,-0.89100653f},
-{0.38268343f,-0.92387956f}, {0.30901697f,-0.95105654f}, {0.23344530f,-0.97236991f},
-{0.15643437f,-0.98768836f}, {0.078459084f,-0.99691731f}, {-4.3711388e-08f,-1.0000000f},
-{-0.078459173f,-0.99691731f}, {-0.15643445f,-0.98768836f}, {-0.23344538f,-0.97236991f},
-{-0.30901703f,-0.95105648f}, {-0.38268352f,-0.92387950f}, {-0.45399061f,-0.89100647f},
-{-0.52249867f,-0.85264009f}, {-0.58778518f,-0.80901700f}, {-0.64944804f,-0.76040596f},
-{-0.70710677f,-0.70710677f}, {-0.76040596f,-0.64944804f}, {-0.80901700f,-0.58778518f},
-{-0.85264021f,-0.52249849f}, {-0.89100659f,-0.45399037f}, {-0.92387956f,-0.38268328f},
-{-0.95105654f,-0.30901679f}, {-0.97236991f,-0.23344538f}, {-0.98768836f,-0.15643445f},
-{-0.99691737f,-0.078459039f}, {-1.0000000f,8.7422777e-08f}, {-0.99691731f,0.078459218f},
-{-0.98768830f,0.15643461f}, {-0.97236985f,0.23344554f}, {-0.95105654f,0.30901697f},
-{-0.92387956f,0.38268346f}, {-0.89100653f,0.45399055f}, {-0.85264015f,0.52249861f},
-{-0.80901694f,0.58778536f}, {-0.76040590f,0.64944816f}, {-0.70710665f,0.70710689f},
-{-0.64944792f,0.76040608f}, {-0.58778507f,0.80901712f}, {-0.52249837f,0.85264033f},
-{-0.45399022f,0.89100665f}, {-0.38268313f,0.92387968f}, {-0.30901709f,0.95105648f},
-{-0.23344545f,0.97236991f}, {-0.15643452f,0.98768830f}, {-0.078459114f,0.99691731f},
-};
-static const ne10_fft_cpx_float32_t ne10_twiddles_120[120] = {
-{1.0000000f,0.0000000f}, {1.0000000f,-0.0000000f}, {1.0000000f,-0.0000000f},
-{1.0000000f,-0.0000000f}, {0.91354543f,-0.40673664f}, {0.66913056f,-0.74314487f},
-{1.0000000f,-0.0000000f}, {0.66913056f,-0.74314487f}, {-0.10452851f,-0.99452192f},
-{1.0000000f,-0.0000000f}, {0.30901697f,-0.95105654f}, {-0.80901700f,-0.58778518f},
-{1.0000000f,-0.0000000f}, {-0.10452851f,-0.99452192f}, {-0.97814757f,0.20791179f},
-{1.0000000f,-0.0000000f}, {0.97814763f,-0.20791170f}, {0.91354543f,-0.40673664f},
-{0.80901700f,-0.58778524f}, {0.66913056f,-0.74314487f}, {0.49999997f,-0.86602545f},
-{0.30901697f,-0.95105654f}, {0.10452842f,-0.99452192f}, {-0.10452851f,-0.99452192f},
-{-0.30901703f,-0.95105648f}, {-0.50000006f,-0.86602533f}, {-0.66913068f,-0.74314475f},
-{-0.80901700f,-0.58778518f}, {-0.91354549f,-0.40673658f}, {-0.97814763f,-0.20791161f},
-{1.0000000f,-0.0000000f}, {0.99862951f,-0.052335959f}, {0.99452192f,-0.10452846f},
-{0.98768836f,-0.15643448f}, {0.97814763f,-0.20791170f}, {0.96592581f,-0.25881904f},
-{0.95105648f,-0.30901700f}, {0.93358040f,-0.35836795f}, {0.91354543f,-0.40673664f},
-{0.89100653f,-0.45399052f}, {0.86602545f,-0.50000000f}, {0.83867055f,-0.54463905f},
-{0.80901700f,-0.58778524f}, {0.77714598f,-0.62932038f}, {0.74314475f,-0.66913062f},
-{0.70710677f,-0.70710683f}, {0.66913056f,-0.74314487f}, {0.62932038f,-0.77714598f},
-{0.58778524f,-0.80901700f}, {0.54463899f,-0.83867055f}, {0.49999997f,-0.86602545f},
-{0.45399052f,-0.89100653f}, {0.40673661f,-0.91354549f}, {0.35836786f,-0.93358046f},
-{0.30901697f,-0.95105654f}, {0.25881907f,-0.96592581f}, {0.20791166f,-0.97814763f},
-{0.15643437f,-0.98768836f}, {0.10452842f,-0.99452192f}, {0.052335974f,-0.99862951f},
-{1.0000000f,-0.0000000f}, {0.99452192f,-0.10452846f}, {0.97814763f,-0.20791170f},
-{0.95105648f,-0.30901700f}, {0.91354543f,-0.40673664f}, {0.86602545f,-0.50000000f},
-{0.80901700f,-0.58778524f}, {0.74314475f,-0.66913062f}, {0.66913056f,-0.74314487f},
-{0.58778524f,-0.80901700f}, {0.49999997f,-0.86602545f}, {0.40673661f,-0.91354549f},
-{0.30901697f,-0.95105654f}, {0.20791166f,-0.97814763f}, {0.10452842f,-0.99452192f},
-{-4.3711388e-08f,-1.0000000f}, {-0.10452851f,-0.99452192f}, {-0.20791174f,-0.97814757f},
-{-0.30901703f,-0.95105648f}, {-0.40673670f,-0.91354543f}, {-0.50000006f,-0.86602533f},
-{-0.58778518f,-0.80901700f}, {-0.66913068f,-0.74314475f}, {-0.74314493f,-0.66913044f},
-{-0.80901700f,-0.58778518f}, {-0.86602539f,-0.50000006f}, {-0.91354549f,-0.40673658f},
-{-0.95105654f,-0.30901679f}, {-0.97814763f,-0.20791161f}, {-0.99452192f,-0.10452849f},
-{1.0000000f,-0.0000000f}, {0.98768836f,-0.15643448f}, {0.95105648f,-0.30901700f},
-{0.89100653f,-0.45399052f}, {0.80901700f,-0.58778524f}, {0.70710677f,-0.70710683f},
-{0.58778524f,-0.80901700f}, {0.45399052f,-0.89100653f}, {0.30901697f,-0.95105654f},
-{0.15643437f,-0.98768836f}, {-4.3711388e-08f,-1.0000000f}, {-0.15643445f,-0.98768836f},
-{-0.30901703f,-0.95105648f}, {-0.45399061f,-0.89100647f}, {-0.58778518f,-0.80901700f},
-{-0.70710677f,-0.70710677f}, {-0.80901700f,-0.58778518f}, {-0.89100659f,-0.45399037f},
-{-0.95105654f,-0.30901679f}, {-0.98768836f,-0.15643445f}, {-1.0000000f,8.7422777e-08f},
-{-0.98768830f,0.15643461f}, {-0.95105654f,0.30901697f}, {-0.89100653f,0.45399055f},
-{-0.80901694f,0.58778536f}, {-0.70710665f,0.70710689f}, {-0.58778507f,0.80901712f},
-{-0.45399022f,0.89100665f}, {-0.30901709f,0.95105648f}, {-0.15643452f,0.98768830f},
-};
-static const ne10_fft_cpx_float32_t ne10_twiddles_60[60] = {
-{1.0000000f,0.0000000f}, {1.0000000f,-0.0000000f}, {1.0000000f,-0.0000000f},
-{1.0000000f,-0.0000000f}, {0.91354543f,-0.40673664f}, {0.66913056f,-0.74314487f},
-{1.0000000f,-0.0000000f}, {0.66913056f,-0.74314487f}, {-0.10452851f,-0.99452192f},
-{1.0000000f,-0.0000000f}, {0.30901697f,-0.95105654f}, {-0.80901700f,-0.58778518f},
-{1.0000000f,-0.0000000f}, {-0.10452851f,-0.99452192f}, {-0.97814757f,0.20791179f},
-{1.0000000f,-0.0000000f}, {0.99452192f,-0.10452846f}, {0.97814763f,-0.20791170f},
-{0.95105648f,-0.30901700f}, {0.91354543f,-0.40673664f}, {0.86602545f,-0.50000000f},
-{0.80901700f,-0.58778524f}, {0.74314475f,-0.66913062f}, {0.66913056f,-0.74314487f},
-{0.58778524f,-0.80901700f}, {0.49999997f,-0.86602545f}, {0.40673661f,-0.91354549f},
-{0.30901697f,-0.95105654f}, {0.20791166f,-0.97814763f}, {0.10452842f,-0.99452192f},
-{1.0000000f,-0.0000000f}, {0.97814763f,-0.20791170f}, {0.91354543f,-0.40673664f},
-{0.80901700f,-0.58778524f}, {0.66913056f,-0.74314487f}, {0.49999997f,-0.86602545f},
-{0.30901697f,-0.95105654f}, {0.10452842f,-0.99452192f}, {-0.10452851f,-0.99452192f},
-{-0.30901703f,-0.95105648f}, {-0.50000006f,-0.86602533f}, {-0.66913068f,-0.74314475f},
-{-0.80901700f,-0.58778518f}, {-0.91354549f,-0.40673658f}, {-0.97814763f,-0.20791161f},
-{1.0000000f,-0.0000000f}, {0.95105648f,-0.30901700f}, {0.80901700f,-0.58778524f},
-{0.58778524f,-0.80901700f}, {0.30901697f,-0.95105654f}, {-4.3711388e-08f,-1.0000000f},
-{-0.30901703f,-0.95105648f}, {-0.58778518f,-0.80901700f}, {-0.80901700f,-0.58778518f},
-{-0.95105654f,-0.30901679f}, {-1.0000000f,8.7422777e-08f}, {-0.95105654f,0.30901697f},
-{-0.80901694f,0.58778536f}, {-0.58778507f,0.80901712f}, {-0.30901709f,0.95105648f},
-};
-static const ne10_fft_state_float32_t ne10_fft_state_float32_t_480 = {
-120,
-(ne10_int32_t *)ne10_factors_480,
-(ne10_fft_cpx_float32_t *)ne10_twiddles_480,
-NULL,
-(ne10_fft_cpx_float32_t *)&ne10_twiddles_480[120],
-/* is_forward_scaled = true */
-(ne10_int32_t) 1,
-/* is_backward_scaled = false */
-(ne10_int32_t) 0,
-};
-static const arch_fft_state cfg_arch_480 = {
-1,
-(void *)&ne10_fft_state_float32_t_480,
-};
-
-static const ne10_fft_state_float32_t ne10_fft_state_float32_t_240 = {
-60,
-(ne10_int32_t *)ne10_factors_240,
-(ne10_fft_cpx_float32_t *)ne10_twiddles_240,
-NULL,
-(ne10_fft_cpx_float32_t *)&ne10_twiddles_240[60],
-/* is_forward_scaled = true */
-(ne10_int32_t) 1,
-/* is_backward_scaled = false */
-(ne10_int32_t) 0,
-};
-static const arch_fft_state cfg_arch_240 = {
-1,
-(void *)&ne10_fft_state_float32_t_240,
-};
-
-static const ne10_fft_state_float32_t ne10_fft_state_float32_t_120 = {
-30,
-(ne10_int32_t *)ne10_factors_120,
-(ne10_fft_cpx_float32_t *)ne10_twiddles_120,
-NULL,
-(ne10_fft_cpx_float32_t *)&ne10_twiddles_120[30],
-/* is_forward_scaled = true */
-(ne10_int32_t) 1,
-/* is_backward_scaled = false */
-(ne10_int32_t) 0,
-};
-static const arch_fft_state cfg_arch_120 = {
-1,
-(void *)&ne10_fft_state_float32_t_120,
-};
-
-static const ne10_fft_state_float32_t ne10_fft_state_float32_t_60 = {
-15,
-(ne10_int32_t *)ne10_factors_60,
-(ne10_fft_cpx_float32_t *)ne10_twiddles_60,
-NULL,
-(ne10_fft_cpx_float32_t *)&ne10_twiddles_60[15],
-/* is_forward_scaled = true */
-(ne10_int32_t) 1,
-/* is_backward_scaled = false */
-(ne10_int32_t) 0,
-};
-static const arch_fft_state cfg_arch_60 = {
-1,
-(void *)&ne10_fft_state_float32_t_60,
-};
-
-#endif /* end NE10_FFT_PARAMS48000_960 */
diff --git a/thirdparty/opus/celt/tests/test_unit_cwrs32.c b/thirdparty/opus/celt/tests/test_unit_cwrs32.c
deleted file mode 100644
index 36dd8af5f5..0000000000
--- a/thirdparty/opus/celt/tests/test_unit_cwrs32.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* Copyright (c) 2008-2011 Xiph.Org Foundation, Mozilla Corporation,
- Gregory Maxwell
- Written by Jean-Marc Valin, Gregory Maxwell, and Timothy B. Terriberry */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <string.h>
-
-#ifndef CUSTOM_MODES
-#define CUSTOM_MODES
-#else
-#define TEST_CUSTOM_MODES
-#endif
-
-#define CELT_C
-#include "stack_alloc.h"
-#include "entenc.c"
-#include "entdec.c"
-#include "entcode.c"
-#include "cwrs.c"
-#include "mathops.c"
-#include "rate.h"
-
-#define NMAX (240)
-#define KMAX (128)
-
-#ifdef TEST_CUSTOM_MODES
-
-#define NDIMS (44)
-static const int pn[NDIMS]={
- 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 18, 20, 22,
- 24, 26, 28, 30, 32, 36, 40, 44, 48,
- 52, 56, 60, 64, 72, 80, 88, 96, 104,
- 112, 120, 128, 144, 160, 176, 192, 208
-};
-static const int pkmax[NDIMS]={
- 128, 128, 128, 128, 88, 52, 36, 26, 22,
- 18, 16, 15, 13, 12, 12, 11, 10, 9,
- 9, 8, 8, 7, 7, 7, 7, 6, 6,
- 6, 6, 6, 5, 5, 5, 5, 5, 5,
- 4, 4, 4, 4, 4, 4, 4, 4
-};
-
-#else /* TEST_CUSTOM_MODES */
-
-#define NDIMS (22)
-static const int pn[NDIMS]={
- 2, 3, 4, 6, 8, 9, 11, 12, 16,
- 18, 22, 24, 32, 36, 44, 48, 64, 72,
- 88, 96, 144, 176
-};
-static const int pkmax[NDIMS]={
- 128, 128, 128, 88, 36, 26, 18, 16, 12,
- 11, 9, 9, 7, 7, 6, 6, 5, 5,
- 5, 5, 4, 4
-};
-
-#endif
-
-int main(void){
- int t;
- int n;
- ALLOC_STACK;
- for(t=0;t<NDIMS;t++){
- int pseudo;
- n=pn[t];
- for(pseudo=1;pseudo<41;pseudo++)
- {
- int k;
-#if defined(SMALL_FOOTPRINT)
- opus_uint32 uu[KMAX+2U];
-#endif
- opus_uint32 inc;
- opus_uint32 nc;
- opus_uint32 i;
- k=get_pulses(pseudo);
- if (k>pkmax[t])break;
- printf("Testing CWRS with N=%i, K=%i...\n",n,k);
-#if defined(SMALL_FOOTPRINT)
- nc=ncwrs_urow(n,k,uu);
-#else
- nc=CELT_PVQ_V(n,k);
-#endif
- inc=nc/20000;
- if(inc<1)inc=1;
- for(i=0;i<nc;i+=inc){
-#if defined(SMALL_FOOTPRINT)
- opus_uint32 u[KMAX+2U];
-#endif
- int y[NMAX];
- int sy;
- opus_uint32 v;
- opus_uint32 ii;
- int j;
-#if defined(SMALL_FOOTPRINT)
- memcpy(u,uu,(k+2U)*sizeof(*u));
- cwrsi(n,k,i,y,u);
-#else
- cwrsi(n,k,i,y);
-#endif
- sy=0;
- for(j=0;j<n;j++)sy+=abs(y[j]);
- if(sy!=k){
- fprintf(stderr,"N=%d Pulse count mismatch in cwrsi (%d!=%d).\n",
- n,sy,k);
- return 99;
- }
- /*printf("%6u of %u:",i,nc);
- for(j=0;j<n;j++)printf(" %+3i",y[j]);
- printf(" ->");*/
-#if defined(SMALL_FOOTPRINT)
- ii=icwrs(n,k,&v,y,u);
-#else
- ii=icwrs(n,y);
- v=CELT_PVQ_V(n,k);
-#endif
- if(ii!=i){
- fprintf(stderr,"Combination-index mismatch (%lu!=%lu).\n",
- (long)ii,(long)i);
- return 1;
- }
- if(v!=nc){
- fprintf(stderr,"Combination count mismatch (%lu!=%lu).\n",
- (long)v,(long)nc);
- return 2;
- }
- /*printf(" %6u\n",i);*/
- }
- /*printf("\n");*/
- }
- }
- return 0;
-}
diff --git a/thirdparty/opus/celt/tests/test_unit_dft.c b/thirdparty/opus/celt/tests/test_unit_dft.c
deleted file mode 100644
index 6166eb0e4f..0000000000
--- a/thirdparty/opus/celt/tests/test_unit_dft.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/* Copyright (c) 2008 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#define SKIP_CONFIG_H
-
-#ifndef CUSTOM_MODES
-#define CUSTOM_MODES
-#endif
-
-#include <stdio.h>
-
-#define CELT_C
-#define TEST_UNIT_DFT_C
-#include "stack_alloc.h"
-#include "kiss_fft.h"
-#include "kiss_fft.c"
-#include "mathops.c"
-#include "entcode.c"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE2) || defined(OPUS_X86_MAY_HAVE_SSE4_1)
-# include "x86/x86cpu.c"
-#elif defined(OPUS_ARM_ASM) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# include "arm/armcpu.c"
-# include "celt_lpc.c"
-# include "pitch.c"
-# if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# include "arm/celt_neon_intr.c"
-# if defined(HAVE_ARM_NE10)
-# include "mdct.c"
-# include "arm/celt_ne10_fft.c"
-# include "arm/celt_ne10_mdct.c"
-# endif
-# endif
-# include "arm/arm_celt_map.c"
-#endif
-
-#ifndef M_PI
-#define M_PI 3.141592653
-#endif
-
-int ret = 0;
-
-void check(kiss_fft_cpx * in,kiss_fft_cpx * out,int nfft,int isinverse)
-{
- int bin,k;
- double errpow=0,sigpow=0, snr;
-
- for (bin=0;bin<nfft;++bin) {
- double ansr = 0;
- double ansi = 0;
- double difr;
- double difi;
-
- for (k=0;k<nfft;++k) {
- double phase = -2*M_PI*bin*k/nfft;
- double re = cos(phase);
- double im = sin(phase);
- if (isinverse)
- im = -im;
-
- if (!isinverse)
- {
- re /= nfft;
- im /= nfft;
- }
-
- ansr += in[k].r * re - in[k].i * im;
- ansi += in[k].r * im + in[k].i * re;
- }
- /*printf ("%d %d ", (int)ansr, (int)ansi);*/
- difr = ansr - out[bin].r;
- difi = ansi - out[bin].i;
- errpow += difr*difr + difi*difi;
- sigpow += ansr*ansr+ansi*ansi;
- }
- snr = 10*log10(sigpow/errpow);
- printf("nfft=%d inverse=%d,snr = %f\n",nfft,isinverse,snr );
- if (snr<60) {
- printf( "** poor snr: %f ** \n", snr);
- ret = 1;
- }
-}
-
-void test1d(int nfft,int isinverse,int arch)
-{
- size_t buflen = sizeof(kiss_fft_cpx)*nfft;
-
- kiss_fft_cpx * in = (kiss_fft_cpx*)malloc(buflen);
- kiss_fft_cpx * out= (kiss_fft_cpx*)malloc(buflen);
- kiss_fft_state *cfg = opus_fft_alloc(nfft,0,0,arch);
- int k;
-
- for (k=0;k<nfft;++k) {
- in[k].r = (rand() % 32767) - 16384;
- in[k].i = (rand() % 32767) - 16384;
- }
-
- for (k=0;k<nfft;++k) {
- in[k].r *= 32768;
- in[k].i *= 32768;
- }
-
- if (isinverse)
- {
- for (k=0;k<nfft;++k) {
- in[k].r /= nfft;
- in[k].i /= nfft;
- }
- }
-
- /*for (k=0;k<nfft;++k) printf("%d %d ", in[k].r, in[k].i);printf("\n");*/
-
- if (isinverse)
- opus_ifft(cfg,in,out, arch);
- else
- opus_fft(cfg,in,out, arch);
-
- /*for (k=0;k<nfft;++k) printf("%d %d ", out[k].r, out[k].i);printf("\n");*/
-
- check(in,out,nfft,isinverse);
-
- free(in);
- free(out);
- opus_fft_free(cfg, arch);
-}
-
-int main(int argc,char ** argv)
-{
- ALLOC_STACK;
- int arch = opus_select_arch();
-
- if (argc>1) {
- int k;
- for (k=1;k<argc;++k) {
- test1d(atoi(argv[k]),0,arch);
- test1d(atoi(argv[k]),1,arch);
- }
- }else{
- test1d(32,0,arch);
- test1d(32,1,arch);
- test1d(128,0,arch);
- test1d(128,1,arch);
- test1d(256,0,arch);
- test1d(256,1,arch);
-#ifndef RADIX_TWO_ONLY
- test1d(36,0,arch);
- test1d(36,1,arch);
- test1d(50,0,arch);
- test1d(50,1,arch);
- test1d(60,0,arch);
- test1d(60,1,arch);
- test1d(120,0,arch);
- test1d(120,1,arch);
- test1d(240,0,arch);
- test1d(240,1,arch);
- test1d(480,0,arch);
- test1d(480,1,arch);
-#endif
- }
- return ret;
-}
diff --git a/thirdparty/opus/celt/tests/test_unit_entropy.c b/thirdparty/opus/celt/tests/test_unit_entropy.c
deleted file mode 100644
index ff9265864c..0000000000
--- a/thirdparty/opus/celt/tests/test_unit_entropy.c
+++ /dev/null
@@ -1,382 +0,0 @@
-/* Copyright (c) 2007-2011 Xiph.Org Foundation, Mozilla Corporation,
- Gregory Maxwell
- Written by Jean-Marc Valin, Gregory Maxwell, and Timothy B. Terriberry */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <time.h>
-#include "entcode.h"
-#include "entenc.h"
-#include "entdec.h"
-#include <string.h>
-
-#include "entenc.c"
-#include "entdec.c"
-#include "entcode.c"
-
-#ifndef M_LOG2E
-# define M_LOG2E 1.4426950408889634074
-#endif
-#define DATA_SIZE 10000000
-#define DATA_SIZE2 10000
-
-int main(int _argc,char **_argv){
- ec_enc enc;
- ec_dec dec;
- long nbits;
- long nbits2;
- double entropy;
- int ft;
- int ftb;
- int sz;
- int i;
- int ret;
- unsigned int sym;
- unsigned int seed;
- unsigned char *ptr;
- const char *env_seed;
- ret=0;
- entropy=0;
- if (_argc > 2) {
- fprintf(stderr, "Usage: %s [<seed>]\n", _argv[0]);
- return 1;
- }
- env_seed = getenv("SEED");
- if (_argc > 1)
- seed = atoi(_argv[1]);
- else if (env_seed)
- seed = atoi(env_seed);
- else
- seed = time(NULL);
- /*Testing encoding of raw bit values.*/
- ptr = (unsigned char *)malloc(DATA_SIZE);
- ec_enc_init(&enc,ptr, DATA_SIZE);
- for(ft=2;ft<1024;ft++){
- for(i=0;i<ft;i++){
- entropy+=log(ft)*M_LOG2E;
- ec_enc_uint(&enc,i,ft);
- }
- }
- /*Testing encoding of raw bit values.*/
- for(ftb=1;ftb<16;ftb++){
- for(i=0;i<(1<<ftb);i++){
- entropy+=ftb;
- nbits=ec_tell(&enc);
- ec_enc_bits(&enc,i,ftb);
- nbits2=ec_tell(&enc);
- if(nbits2-nbits!=ftb){
- fprintf(stderr,"Used %li bits to encode %i bits directly.\n",
- nbits2-nbits,ftb);
- ret=-1;
- }
- }
- }
- nbits=ec_tell_frac(&enc);
- ec_enc_done(&enc);
- fprintf(stderr,
- "Encoded %0.2lf bits of entropy to %0.2lf bits (%0.3lf%% wasted).\n",
- entropy,ldexp(nbits,-3),100*(nbits-ldexp(entropy,3))/nbits);
- fprintf(stderr,"Packed to %li bytes.\n",(long)ec_range_bytes(&enc));
- ec_dec_init(&dec,ptr,DATA_SIZE);
- for(ft=2;ft<1024;ft++){
- for(i=0;i<ft;i++){
- sym=ec_dec_uint(&dec,ft);
- if(sym!=(unsigned)i){
- fprintf(stderr,"Decoded %i instead of %i with ft of %i.\n",sym,i,ft);
- ret=-1;
- }
- }
- }
- for(ftb=1;ftb<16;ftb++){
- for(i=0;i<(1<<ftb);i++){
- sym=ec_dec_bits(&dec,ftb);
- if(sym!=(unsigned)i){
- fprintf(stderr,"Decoded %i instead of %i with ftb of %i.\n",sym,i,ftb);
- ret=-1;
- }
- }
- }
- nbits2=ec_tell_frac(&dec);
- if(nbits!=nbits2){
- fprintf(stderr,
- "Reported number of bits used was %0.2lf, should be %0.2lf.\n",
- ldexp(nbits2,-3),ldexp(nbits,-3));
- ret=-1;
- }
- /*Testing an encoder bust prefers range coder data over raw bits.
- This isn't a general guarantee, will only work for data that is buffered in
- the encoder state and not yet stored in the user buffer, and should never
- get used in practice.
- It's mostly here for code coverage completeness.*/
- /*Start with a 16-bit buffer.*/
- ec_enc_init(&enc,ptr,2);
- /*Write 7 raw bits.*/
- ec_enc_bits(&enc,0x55,7);
- /*Write 12.3 bits of range coder data.*/
- ec_enc_uint(&enc,1,2);
- ec_enc_uint(&enc,1,3);
- ec_enc_uint(&enc,1,4);
- ec_enc_uint(&enc,1,5);
- ec_enc_uint(&enc,2,6);
- ec_enc_uint(&enc,6,7);
- ec_enc_done(&enc);
- ec_dec_init(&dec,ptr,2);
- if(!enc.error
- /*The raw bits should have been overwritten by the range coder data.*/
- ||ec_dec_bits(&dec,7)!=0x05
- /*And all the range coder data should have been encoded correctly.*/
- ||ec_dec_uint(&dec,2)!=1
- ||ec_dec_uint(&dec,3)!=1
- ||ec_dec_uint(&dec,4)!=1
- ||ec_dec_uint(&dec,5)!=1
- ||ec_dec_uint(&dec,6)!=2
- ||ec_dec_uint(&dec,7)!=6){
- fprintf(stderr,"Encoder bust overwrote range coder data with raw bits.\n");
- ret=-1;
- }
- srand(seed);
- fprintf(stderr,"Testing random streams... Random seed: %u (%.4X)\n", seed, rand() % 65536);
- for(i=0;i<409600;i++){
- unsigned *data;
- unsigned *tell;
- unsigned tell_bits;
- int j;
- int zeros;
- ft=rand()/((RAND_MAX>>(rand()%11U))+1U)+10;
- sz=rand()/((RAND_MAX>>(rand()%9U))+1U);
- data=(unsigned *)malloc(sz*sizeof(*data));
- tell=(unsigned *)malloc((sz+1)*sizeof(*tell));
- ec_enc_init(&enc,ptr,DATA_SIZE2);
- zeros = rand()%13==0;
- tell[0]=ec_tell_frac(&enc);
- for(j=0;j<sz;j++){
- if (zeros)
- data[j]=0;
- else
- data[j]=rand()%ft;
- ec_enc_uint(&enc,data[j],ft);
- tell[j+1]=ec_tell_frac(&enc);
- }
- if (rand()%2==0)
- while(ec_tell(&enc)%8 != 0)
- ec_enc_uint(&enc, rand()%2, 2);
- tell_bits = ec_tell(&enc);
- ec_enc_done(&enc);
- if(tell_bits!=(unsigned)ec_tell(&enc)){
- fprintf(stderr,"ec_tell() changed after ec_enc_done(): %i instead of %i (Random seed: %u)\n",
- ec_tell(&enc),tell_bits,seed);
- ret=-1;
- }
- if ((tell_bits+7)/8 < ec_range_bytes(&enc))
- {
- fprintf (stderr, "ec_tell() lied, there's %i bytes instead of %d (Random seed: %u)\n",
- ec_range_bytes(&enc), (tell_bits+7)/8,seed);
- ret=-1;
- }
- ec_dec_init(&dec,ptr,DATA_SIZE2);
- if(ec_tell_frac(&dec)!=tell[0]){
- fprintf(stderr,
- "Tell mismatch between encoder and decoder at symbol %i: %i instead of %i (Random seed: %u).\n",
- 0,ec_tell_frac(&dec),tell[0],seed);
- }
- for(j=0;j<sz;j++){
- sym=ec_dec_uint(&dec,ft);
- if(sym!=data[j]){
- fprintf(stderr,
- "Decoded %i instead of %i with ft of %i at position %i of %i (Random seed: %u).\n",
- sym,data[j],ft,j,sz,seed);
- ret=-1;
- }
- if(ec_tell_frac(&dec)!=tell[j+1]){
- fprintf(stderr,
- "Tell mismatch between encoder and decoder at symbol %i: %i instead of %i (Random seed: %u).\n",
- j+1,ec_tell_frac(&dec),tell[j+1],seed);
- }
- }
- free(tell);
- free(data);
- }
- /*Test compatibility between multiple different encode/decode routines.*/
- for(i=0;i<409600;i++){
- unsigned *logp1;
- unsigned *data;
- unsigned *tell;
- unsigned *enc_method;
- int j;
- sz=rand()/((RAND_MAX>>(rand()%9U))+1U);
- logp1=(unsigned *)malloc(sz*sizeof(*logp1));
- data=(unsigned *)malloc(sz*sizeof(*data));
- tell=(unsigned *)malloc((sz+1)*sizeof(*tell));
- enc_method=(unsigned *)malloc(sz*sizeof(*enc_method));
- ec_enc_init(&enc,ptr,DATA_SIZE2);
- tell[0]=ec_tell_frac(&enc);
- for(j=0;j<sz;j++){
- data[j]=rand()/((RAND_MAX>>1)+1);
- logp1[j]=(rand()%15)+1;
- enc_method[j]=rand()/((RAND_MAX>>2)+1);
- switch(enc_method[j]){
- case 0:{
- ec_encode(&enc,data[j]?(1<<logp1[j])-1:0,
- (1<<logp1[j])-(data[j]?0:1),1<<logp1[j]);
- }break;
- case 1:{
- ec_encode_bin(&enc,data[j]?(1<<logp1[j])-1:0,
- (1<<logp1[j])-(data[j]?0:1),logp1[j]);
- }break;
- case 2:{
- ec_enc_bit_logp(&enc,data[j],logp1[j]);
- }break;
- case 3:{
- unsigned char icdf[2];
- icdf[0]=1;
- icdf[1]=0;
- ec_enc_icdf(&enc,data[j],icdf,logp1[j]);
- }break;
- }
- tell[j+1]=ec_tell_frac(&enc);
- }
- ec_enc_done(&enc);
- if((ec_tell(&enc)+7U)/8U<ec_range_bytes(&enc)){
- fprintf(stderr,"tell() lied, there's %i bytes instead of %d (Random seed: %u)\n",
- ec_range_bytes(&enc),(ec_tell(&enc)+7)/8,seed);
- ret=-1;
- }
- ec_dec_init(&dec,ptr,DATA_SIZE2);
- if(ec_tell_frac(&dec)!=tell[0]){
- fprintf(stderr,
- "Tell mismatch between encoder and decoder at symbol %i: %i instead of %i (Random seed: %u).\n",
- 0,ec_tell_frac(&dec),tell[0],seed);
- }
- for(j=0;j<sz;j++){
- int fs;
- int dec_method;
- dec_method=rand()/((RAND_MAX>>2)+1);
- switch(dec_method){
- case 0:{
- fs=ec_decode(&dec,1<<logp1[j]);
- sym=fs>=(1<<logp1[j])-1;
- ec_dec_update(&dec,sym?(1<<logp1[j])-1:0,
- (1<<logp1[j])-(sym?0:1),1<<logp1[j]);
- }break;
- case 1:{
- fs=ec_decode_bin(&dec,logp1[j]);
- sym=fs>=(1<<logp1[j])-1;
- ec_dec_update(&dec,sym?(1<<logp1[j])-1:0,
- (1<<logp1[j])-(sym?0:1),1<<logp1[j]);
- }break;
- case 2:{
- sym=ec_dec_bit_logp(&dec,logp1[j]);
- }break;
- case 3:{
- unsigned char icdf[2];
- icdf[0]=1;
- icdf[1]=0;
- sym=ec_dec_icdf(&dec,icdf,logp1[j]);
- }break;
- }
- if(sym!=data[j]){
- fprintf(stderr,
- "Decoded %i instead of %i with logp1 of %i at position %i of %i (Random seed: %u).\n",
- sym,data[j],logp1[j],j,sz,seed);
- fprintf(stderr,"Encoding method: %i, decoding method: %i\n",
- enc_method[j],dec_method);
- ret=-1;
- }
- if(ec_tell_frac(&dec)!=tell[j+1]){
- fprintf(stderr,
- "Tell mismatch between encoder and decoder at symbol %i: %i instead of %i (Random seed: %u).\n",
- j+1,ec_tell_frac(&dec),tell[j+1],seed);
- }
- }
- free(enc_method);
- free(tell);
- free(data);
- free(logp1);
- }
- ec_enc_init(&enc,ptr,DATA_SIZE2);
- ec_enc_bit_logp(&enc,0,1);
- ec_enc_bit_logp(&enc,0,1);
- ec_enc_bit_logp(&enc,0,1);
- ec_enc_bit_logp(&enc,0,1);
- ec_enc_bit_logp(&enc,0,2);
- ec_enc_patch_initial_bits(&enc,3,2);
- if(enc.error){
- fprintf(stderr,"patch_initial_bits failed");
- ret=-1;
- }
- ec_enc_patch_initial_bits(&enc,0,5);
- if(!enc.error){
- fprintf(stderr,"patch_initial_bits didn't fail when it should have");
- ret=-1;
- }
- ec_enc_done(&enc);
- if(ec_range_bytes(&enc)!=1||ptr[0]!=192){
- fprintf(stderr,"Got %d when expecting 192 for patch_initial_bits",ptr[0]);
- ret=-1;
- }
- ec_enc_init(&enc,ptr,DATA_SIZE2);
- ec_enc_bit_logp(&enc,0,1);
- ec_enc_bit_logp(&enc,0,1);
- ec_enc_bit_logp(&enc,1,6);
- ec_enc_bit_logp(&enc,0,2);
- ec_enc_patch_initial_bits(&enc,0,2);
- if(enc.error){
- fprintf(stderr,"patch_initial_bits failed");
- ret=-1;
- }
- ec_enc_done(&enc);
- if(ec_range_bytes(&enc)!=2||ptr[0]!=63){
- fprintf(stderr,"Got %d when expecting 63 for patch_initial_bits",ptr[0]);
- ret=-1;
- }
- ec_enc_init(&enc,ptr,2);
- ec_enc_bit_logp(&enc,0,2);
- for(i=0;i<48;i++){
- ec_enc_bits(&enc,0,1);
- }
- ec_enc_done(&enc);
- if(!enc.error){
- fprintf(stderr,"Raw bits overfill didn't fail when it should have");
- ret=-1;
- }
- ec_enc_init(&enc,ptr,2);
- for(i=0;i<17;i++){
- ec_enc_bits(&enc,0,1);
- }
- ec_enc_done(&enc);
- if(!enc.error){
- fprintf(stderr,"17 raw bits encoded in two bytes");
- ret=-1;
- }
- free(ptr);
- return ret;
-}
diff --git a/thirdparty/opus/celt/tests/test_unit_laplace.c b/thirdparty/opus/celt/tests/test_unit_laplace.c
deleted file mode 100644
index 22951e29ee..0000000000
--- a/thirdparty/opus/celt/tests/test_unit_laplace.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright (c) 2008-2011 Xiph.Org Foundation, Mozilla Corporation
- Written by Jean-Marc Valin and Timothy B. Terriberry */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "laplace.h"
-#define CELT_C
-#include "stack_alloc.h"
-
-#include "entenc.c"
-#include "entdec.c"
-#include "entcode.c"
-#include "laplace.c"
-
-#define DATA_SIZE 40000
-
-int ec_laplace_get_start_freq(int decay)
-{
- opus_uint32 ft = 32768 - LAPLACE_MINP*(2*LAPLACE_NMIN+1);
- int fs = (ft*(16384-decay))/(16384+decay);
- return fs+LAPLACE_MINP;
-}
-
-int main(void)
-{
- int i;
- int ret = 0;
- ec_enc enc;
- ec_dec dec;
- unsigned char *ptr;
- int val[10000], decay[10000];
- ALLOC_STACK;
- ptr = (unsigned char *)malloc(DATA_SIZE);
- ec_enc_init(&enc,ptr,DATA_SIZE);
-
- val[0] = 3; decay[0] = 6000;
- val[1] = 0; decay[1] = 5800;
- val[2] = -1; decay[2] = 5600;
- for (i=3;i<10000;i++)
- {
- val[i] = rand()%15-7;
- decay[i] = rand()%11000+5000;
- }
- for (i=0;i<10000;i++)
- ec_laplace_encode(&enc, &val[i],
- ec_laplace_get_start_freq(decay[i]), decay[i]);
-
- ec_enc_done(&enc);
-
- ec_dec_init(&dec,ec_get_buffer(&enc),ec_range_bytes(&enc));
-
- for (i=0;i<10000;i++)
- {
- int d = ec_laplace_decode(&dec,
- ec_laplace_get_start_freq(decay[i]), decay[i]);
- if (d != val[i])
- {
- fprintf (stderr, "Got %d instead of %d\n", d, val[i]);
- ret = 1;
- }
- }
-
- free(ptr);
- return ret;
-}
diff --git a/thirdparty/opus/celt/tests/test_unit_mathops.c b/thirdparty/opus/celt/tests/test_unit_mathops.c
deleted file mode 100644
index fd3319da91..0000000000
--- a/thirdparty/opus/celt/tests/test_unit_mathops.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/* Copyright (c) 2008-2011 Xiph.Org Foundation, Mozilla Corporation,
- Gregory Maxwell
- Written by Jean-Marc Valin, Gregory Maxwell, and Timothy B. Terriberry */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifndef CUSTOM_MODES
-#define CUSTOM_MODES
-#endif
-
-#define CELT_C
-
-#include <stdio.h>
-#include <math.h>
-#include "mathops.c"
-#include "entenc.c"
-#include "entdec.c"
-#include "entcode.c"
-#include "bands.c"
-#include "quant_bands.c"
-#include "laplace.c"
-#include "vq.c"
-#include "cwrs.c"
-#include "pitch.c"
-#include "celt_lpc.c"
-#include "celt.c"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE) || defined(OPUS_X86_MAY_HAVE_SSE2) || defined(OPUS_X86_MAY_HAVE_SSE4_1)
-# if defined(OPUS_X86_MAY_HAVE_SSE)
-# include "x86/pitch_sse.c"
-# endif
-# if defined(OPUS_X86_MAY_HAVE_SSE2)
-# include "x86/pitch_sse2.c"
-# endif
-# if defined(OPUS_X86_MAY_HAVE_SSE4_1)
-# include "x86/pitch_sse4_1.c"
-# include "x86/celt_lpc_sse.c"
-# endif
-# include "x86/x86_celt_map.c"
-#elif defined(OPUS_ARM_ASM) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# include "arm/armcpu.c"
-# if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# include "arm/celt_neon_intr.c"
-# if defined(HAVE_ARM_NE10)
-# include "kiss_fft.c"
-# include "mdct.c"
-# include "arm/celt_ne10_fft.c"
-# include "arm/celt_ne10_mdct.c"
-# endif
-# endif
-# include "arm/arm_celt_map.c"
-#endif
-
-#ifdef FIXED_POINT
-#define WORD "%d"
-#else
-#define WORD "%f"
-#endif
-
-int ret = 0;
-
-void testdiv(void)
-{
- opus_int32 i;
- for (i=1;i<=327670;i++)
- {
- double prod;
- opus_val32 val;
- val = celt_rcp(i);
-#ifdef FIXED_POINT
- prod = (1./32768./65526.)*val*i;
-#else
- prod = val*i;
-#endif
- if (fabs(prod-1) > .00025)
- {
- fprintf (stderr, "div failed: 1/%d="WORD" (product = %f)\n", i, val, prod);
- ret = 1;
- }
- }
-}
-
-void testsqrt(void)
-{
- opus_int32 i;
- for (i=1;i<=1000000000;i++)
- {
- double ratio;
- opus_val16 val;
- val = celt_sqrt(i);
- ratio = val/sqrt(i);
- if (fabs(ratio - 1) > .0005 && fabs(val-sqrt(i)) > 2)
- {
- fprintf (stderr, "sqrt failed: sqrt(%d)="WORD" (ratio = %f)\n", i, val, ratio);
- ret = 1;
- }
- i+= i>>10;
- }
-}
-
-void testbitexactcos(void)
-{
- int i;
- opus_int32 min_d,max_d,last,chk;
- chk=max_d=0;
- last=min_d=32767;
- for(i=64;i<=16320;i++)
- {
- opus_int32 d;
- opus_int32 q=bitexact_cos(i);
- chk ^= q*i;
- d = last - q;
- if (d>max_d)max_d=d;
- if (d<min_d)min_d=d;
- last = q;
- }
- if ((chk!=89408644)||(max_d!=5)||(min_d!=0)||(bitexact_cos(64)!=32767)||
- (bitexact_cos(16320)!=200)||(bitexact_cos(8192)!=23171))
- {
- fprintf (stderr, "bitexact_cos failed\n");
- ret = 1;
- }
-}
-
-void testbitexactlog2tan(void)
-{
- int i,fail;
- opus_int32 min_d,max_d,last,chk;
- fail=chk=max_d=0;
- last=min_d=15059;
- for(i=64;i<8193;i++)
- {
- opus_int32 d;
- opus_int32 mid=bitexact_cos(i);
- opus_int32 side=bitexact_cos(16384-i);
- opus_int32 q=bitexact_log2tan(mid,side);
- chk ^= q*i;
- d = last - q;
- if (q!=-1*bitexact_log2tan(side,mid))
- fail = 1;
- if (d>max_d)max_d=d;
- if (d<min_d)min_d=d;
- last = q;
- }
- if ((chk!=15821257)||(max_d!=61)||(min_d!=-2)||fail||
- (bitexact_log2tan(32767,200)!=15059)||(bitexact_log2tan(30274,12540)!=2611)||
- (bitexact_log2tan(23171,23171)!=0))
- {
- fprintf (stderr, "bitexact_log2tan failed\n");
- ret = 1;
- }
-}
-
-#ifndef FIXED_POINT
-void testlog2(void)
-{
- float x;
- for (x=0.001;x<1677700.0;x+=(x/8.0))
- {
- float error = fabs((1.442695040888963387*log(x))-celt_log2(x));
- if (error>0.0009)
- {
- fprintf (stderr, "celt_log2 failed: fabs((1.442695040888963387*log(x))-celt_log2(x))>0.001 (x = %f, error = %f)\n", x,error);
- ret = 1;
- }
- }
-}
-
-void testexp2(void)
-{
- float x;
- for (x=-11.0;x<24.0;x+=0.0007)
- {
- float error = fabs(x-(1.442695040888963387*log(celt_exp2(x))));
- if (error>0.0002)
- {
- fprintf (stderr, "celt_exp2 failed: fabs(x-(1.442695040888963387*log(celt_exp2(x))))>0.0005 (x = %f, error = %f)\n", x,error);
- ret = 1;
- }
- }
-}
-
-void testexp2log2(void)
-{
- float x;
- for (x=-11.0;x<24.0;x+=0.0007)
- {
- float error = fabs(x-(celt_log2(celt_exp2(x))));
- if (error>0.001)
- {
- fprintf (stderr, "celt_log2/celt_exp2 failed: fabs(x-(celt_log2(celt_exp2(x))))>0.001 (x = %f, error = %f)\n", x,error);
- ret = 1;
- }
- }
-}
-#else
-void testlog2(void)
-{
- opus_val32 x;
- for (x=8;x<1073741824;x+=(x>>3))
- {
- float error = fabs((1.442695040888963387*log(x/16384.0))-celt_log2(x)/1024.0);
- if (error>0.003)
- {
- fprintf (stderr, "celt_log2 failed: x = %ld, error = %f\n", (long)x,error);
- ret = 1;
- }
- }
-}
-
-void testexp2(void)
-{
- opus_val16 x;
- for (x=-32768;x<15360;x++)
- {
- float error1 = fabs(x/1024.0-(1.442695040888963387*log(celt_exp2(x)/65536.0)));
- float error2 = fabs(exp(0.6931471805599453094*x/1024.0)-celt_exp2(x)/65536.0);
- if (error1>0.0002&&error2>0.00004)
- {
- fprintf (stderr, "celt_exp2 failed: x = "WORD", error1 = %f, error2 = %f\n", x,error1,error2);
- ret = 1;
- }
- }
-}
-
-void testexp2log2(void)
-{
- opus_val32 x;
- for (x=8;x<65536;x+=(x>>3))
- {
- float error = fabs(x-0.25*celt_exp2(celt_log2(x)))/16384;
- if (error>0.004)
- {
- fprintf (stderr, "celt_log2/celt_exp2 failed: fabs(x-(celt_exp2(celt_log2(x))))>0.001 (x = %ld, error = %f)\n", (long)x,error);
- ret = 1;
- }
- }
-}
-
-void testilog2(void)
-{
- opus_val32 x;
- for (x=1;x<=268435455;x+=127)
- {
- opus_val32 lg;
- opus_val32 y;
-
- lg = celt_ilog2(x);
- if (lg<0 || lg>=31)
- {
- printf("celt_ilog2 failed: 0<=celt_ilog2(x)<31 (x = %d, celt_ilog2(x) = %d)\n",x,lg);
- ret = 1;
- }
- y = 1<<lg;
-
- if (x<y || (x>>1)>=y)
- {
- printf("celt_ilog2 failed: 2**celt_ilog2(x)<=x<2**(celt_ilog2(x)+1) (x = %d, 2**celt_ilog2(x) = %d)\n",x,y);
- ret = 1;
- }
- }
-}
-#endif
-
-int main(void)
-{
- testbitexactcos();
- testbitexactlog2tan();
- testdiv();
- testsqrt();
- testlog2();
- testexp2();
- testexp2log2();
-#ifdef FIXED_POINT
- testilog2();
-#endif
- return ret;
-}
diff --git a/thirdparty/opus/celt/tests/test_unit_mdct.c b/thirdparty/opus/celt/tests/test_unit_mdct.c
deleted file mode 100644
index 8dbb9caa2e..0000000000
--- a/thirdparty/opus/celt/tests/test_unit_mdct.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/* Copyright (c) 2008-2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#define SKIP_CONFIG_H
-
-#ifndef CUSTOM_MODES
-#define CUSTOM_MODES
-#endif
-
-#include <stdio.h>
-
-#define CELT_C
-#include "mdct.h"
-#include "stack_alloc.h"
-
-#include "kiss_fft.c"
-#include "mdct.c"
-#include "mathops.c"
-#include "entcode.c"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE2) || defined(OPUS_X86_MAY_HAVE_SSE4_1)
-# include "x86/x86cpu.c"
-#elif defined(OPUS_ARM_ASM) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# include "arm/armcpu.c"
-# include "pitch.c"
-# include "celt_lpc.c"
-# if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# include "arm/celt_neon_intr.c"
-# if defined(HAVE_ARM_NE10)
-# include "arm/celt_ne10_fft.c"
-# include "arm/celt_ne10_mdct.c"
-# endif
-# endif
-# include "arm/arm_celt_map.c"
-#endif
-
-#ifndef M_PI
-#define M_PI 3.141592653
-#endif
-
-int ret = 0;
-void check(kiss_fft_scalar * in,kiss_fft_scalar * out,int nfft,int isinverse)
-{
- int bin,k;
- double errpow=0,sigpow=0;
- double snr;
- for (bin=0;bin<nfft/2;++bin) {
- double ansr = 0;
- double difr;
-
- for (k=0;k<nfft;++k) {
- double phase = 2*M_PI*(k+.5+.25*nfft)*(bin+.5)/nfft;
- double re = cos(phase);
-
- re /= nfft/4;
-
- ansr += in[k] * re;
- }
- /*printf ("%f %f\n", ansr, out[bin]);*/
- difr = ansr - out[bin];
- errpow += difr*difr;
- sigpow += ansr*ansr;
- }
- snr = 10*log10(sigpow/errpow);
- printf("nfft=%d inverse=%d,snr = %f\n",nfft,isinverse,snr );
- if (snr<60) {
- printf( "** poor snr: %f **\n", snr);
- ret = 1;
- }
-}
-
-void check_inv(kiss_fft_scalar * in,kiss_fft_scalar * out,int nfft,int isinverse)
-{
- int bin,k;
- double errpow=0,sigpow=0;
- double snr;
- for (bin=0;bin<nfft;++bin) {
- double ansr = 0;
- double difr;
-
- for (k=0;k<nfft/2;++k) {
- double phase = 2*M_PI*(bin+.5+.25*nfft)*(k+.5)/nfft;
- double re = cos(phase);
-
- /*re *= 2;*/
-
- ansr += in[k] * re;
- }
- /*printf ("%f %f\n", ansr, out[bin]);*/
- difr = ansr - out[bin];
- errpow += difr*difr;
- sigpow += ansr*ansr;
- }
- snr = 10*log10(sigpow/errpow);
- printf("nfft=%d inverse=%d,snr = %f\n",nfft,isinverse,snr );
- if (snr<60) {
- printf( "** poor snr: %f **\n", snr);
- ret = 1;
- }
-}
-
-
-void test1d(int nfft,int isinverse,int arch)
-{
- mdct_lookup cfg;
- size_t buflen = sizeof(kiss_fft_scalar)*nfft;
-
- kiss_fft_scalar * in = (kiss_fft_scalar*)malloc(buflen);
- kiss_fft_scalar * in_copy = (kiss_fft_scalar*)malloc(buflen);
- kiss_fft_scalar * out= (kiss_fft_scalar*)malloc(buflen);
- opus_val16 * window= (opus_val16*)malloc(sizeof(opus_val16)*nfft/2);
- int k;
-
- clt_mdct_init(&cfg, nfft, 0, arch);
- for (k=0;k<nfft;++k) {
- in[k] = (rand() % 32768) - 16384;
- }
-
- for (k=0;k<nfft/2;++k) {
- window[k] = Q15ONE;
- }
- for (k=0;k<nfft;++k) {
- in[k] *= 32768;
- }
-
- if (isinverse)
- {
- for (k=0;k<nfft;++k) {
- in[k] /= nfft;
- }
- }
-
- for (k=0;k<nfft;++k)
- in_copy[k] = in[k];
- /*for (k=0;k<nfft;++k) printf("%d %d ", in[k].r, in[k].i);printf("\n");*/
-
- if (isinverse)
- {
- for (k=0;k<nfft;++k)
- out[k] = 0;
- clt_mdct_backward(&cfg,in,out, window, nfft/2, 0, 1, arch);
- /* apply TDAC because clt_mdct_backward() no longer does that */
- for (k=0;k<nfft/4;++k)
- out[nfft-k-1] = out[nfft/2+k];
- check_inv(in,out,nfft,isinverse);
- } else {
- clt_mdct_forward(&cfg,in,out,window, nfft/2, 0, 1, arch);
- check(in_copy,out,nfft,isinverse);
- }
- /*for (k=0;k<nfft;++k) printf("%d %d ", out[k].r, out[k].i);printf("\n");*/
-
-
- free(in);
- free(in_copy);
- free(out);
- free(window);
- clt_mdct_clear(&cfg, arch);
-}
-
-int main(int argc,char ** argv)
-{
- ALLOC_STACK;
- int arch = opus_select_arch();
-
- if (argc>1) {
- int k;
- for (k=1;k<argc;++k) {
- test1d(atoi(argv[k]),0,arch);
- test1d(atoi(argv[k]),1,arch);
- }
- }else{
- test1d(32,0,arch);
- test1d(32,1,arch);
- test1d(256,0,arch);
- test1d(256,1,arch);
- test1d(512,0,arch);
- test1d(512,1,arch);
- test1d(1024,0,arch);
- test1d(1024,1,arch);
- test1d(2048,0,arch);
- test1d(2048,1,arch);
-#ifndef RADIX_TWO_ONLY
- test1d(36,0,arch);
- test1d(36,1,arch);
- test1d(40,0,arch);
- test1d(40,1,arch);
- test1d(60,0,arch);
- test1d(60,1,arch);
- test1d(120,0,arch);
- test1d(120,1,arch);
- test1d(240,0,arch);
- test1d(240,1,arch);
- test1d(480,0,arch);
- test1d(480,1,arch);
- test1d(960,0,arch);
- test1d(960,1,arch);
- test1d(1920,0,arch);
- test1d(1920,1,arch);
-#endif
- }
- return ret;
-}
diff --git a/thirdparty/opus/celt/tests/test_unit_rotation.c b/thirdparty/opus/celt/tests/test_unit_rotation.c
deleted file mode 100644
index 1080c2085d..0000000000
--- a/thirdparty/opus/celt/tests/test_unit_rotation.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (c) 2008-2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifndef CUSTOM_MODES
-#define CUSTOM_MODES
-#endif
-
-#define CELT_C
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "vq.c"
-#include "cwrs.c"
-#include "entcode.c"
-#include "entenc.c"
-#include "entdec.c"
-#include "mathops.c"
-#include "bands.h"
-#include "pitch.c"
-#include "celt_lpc.c"
-#include "celt.c"
-#include <math.h>
-
-#if defined(OPUS_X86_MAY_HAVE_SSE) || defined(OPUS_X86_MAY_HAVE_SSE2) || defined(OPUS_X86_MAY_HAVE_SSE4_1)
-# if defined(OPUS_X86_MAY_HAVE_SSE)
-# include "x86/pitch_sse.c"
-# endif
-# if defined(OPUS_X86_MAY_HAVE_SSE2)
-# include "x86/pitch_sse2.c"
-# endif
-# if defined(OPUS_X86_MAY_HAVE_SSE4_1)
-# include "x86/pitch_sse4_1.c"
-# include "x86/celt_lpc_sse.c"
-# endif
-# include "x86/x86_celt_map.c"
-#elif defined(OPUS_ARM_ASM) || defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# include "arm/armcpu.c"
-# if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-# include "arm/celt_neon_intr.c"
-# if defined(HAVE_ARM_NE10)
-# include "kiss_fft.c"
-# include "mdct.c"
-# include "arm/celt_ne10_fft.c"
-# include "arm/celt_ne10_mdct.c"
-# endif
-# endif
-# include "arm/arm_celt_map.c"
-#endif
-
-#define MAX_SIZE 100
-
-int ret=0;
-void test_rotation(int N, int K)
-{
- int i;
- double err = 0, ener = 0, snr, snr0;
- opus_val16 x0[MAX_SIZE];
- opus_val16 x1[MAX_SIZE];
- for (i=0;i<N;i++)
- x1[i] = x0[i] = rand()%32767-16384;
- exp_rotation(x1, N, 1, 1, K, SPREAD_NORMAL);
- for (i=0;i<N;i++)
- {
- err += (x0[i]-(double)x1[i])*(x0[i]-(double)x1[i]);
- ener += x0[i]*(double)x0[i];
- }
- snr0 = 20*log10(ener/err);
- err = ener = 0;
- exp_rotation(x1, N, -1, 1, K, SPREAD_NORMAL);
- for (i=0;i<N;i++)
- {
- err += (x0[i]-(double)x1[i])*(x0[i]-(double)x1[i]);
- ener += x0[i]*(double)x0[i];
- }
- snr = 20*log10(ener/err);
- printf ("SNR for size %d (%d pulses) is %f (was %f without inverse)\n", N, K, snr, snr0);
- if (snr < 60 || snr0 > 20)
- {
- fprintf(stderr, "FAIL!\n");
- ret = 1;
- }
-}
-
-int main(void)
-{
- ALLOC_STACK;
- test_rotation(15, 3);
- test_rotation(23, 5);
- test_rotation(50, 3);
- test_rotation(80, 1);
- return ret;
-}
diff --git a/thirdparty/opus/celt/tests/test_unit_types.c b/thirdparty/opus/celt/tests/test_unit_types.c
deleted file mode 100644
index 67a0fb8ed3..0000000000
--- a/thirdparty/opus/celt/tests/test_unit_types.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (c) 2008-2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus_types.h"
-#include <stdio.h>
-
-int main(void)
-{
- opus_int16 i = 1;
- i <<= 14;
- if (i>>14 != 1)
- {
- fprintf(stderr, "opus_int16 isn't 16 bits\n");
- return 1;
- }
- if (sizeof(opus_int16)*2 != sizeof(opus_int32))
- {
- fprintf(stderr, "16*2 != 32\n");
- return 1;
- }
- return 0;
-}
diff --git a/thirdparty/opus/celt/vq.c b/thirdparty/opus/celt/vq.c
deleted file mode 100644
index d29f38fd8e..0000000000
--- a/thirdparty/opus/celt/vq.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "mathops.h"
-#include "cwrs.h"
-#include "vq.h"
-#include "arch.h"
-#include "os_support.h"
-#include "bands.h"
-#include "rate.h"
-#include "pitch.h"
-
-#ifndef OVERRIDE_vq_exp_rotation1
-static void exp_rotation1(celt_norm *X, int len, int stride, opus_val16 c, opus_val16 s)
-{
- int i;
- opus_val16 ms;
- celt_norm *Xptr;
- Xptr = X;
- ms = NEG16(s);
- for (i=0;i<len-stride;i++)
- {
- celt_norm x1, x2;
- x1 = Xptr[0];
- x2 = Xptr[stride];
- Xptr[stride] = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x2), s, x1), 15));
- *Xptr++ = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x1), ms, x2), 15));
- }
- Xptr = &X[len-2*stride-1];
- for (i=len-2*stride-1;i>=0;i--)
- {
- celt_norm x1, x2;
- x1 = Xptr[0];
- x2 = Xptr[stride];
- Xptr[stride] = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x2), s, x1), 15));
- *Xptr-- = EXTRACT16(PSHR32(MAC16_16(MULT16_16(c, x1), ms, x2), 15));
- }
-}
-#endif /* OVERRIDE_vq_exp_rotation1 */
-
-static void exp_rotation(celt_norm *X, int len, int dir, int stride, int K, int spread)
-{
- static const int SPREAD_FACTOR[3]={15,10,5};
- int i;
- opus_val16 c, s;
- opus_val16 gain, theta;
- int stride2=0;
- int factor;
-
- if (2*K>=len || spread==SPREAD_NONE)
- return;
- factor = SPREAD_FACTOR[spread-1];
-
- gain = celt_div((opus_val32)MULT16_16(Q15_ONE,len),(opus_val32)(len+factor*K));
- theta = HALF16(MULT16_16_Q15(gain,gain));
-
- c = celt_cos_norm(EXTEND32(theta));
- s = celt_cos_norm(EXTEND32(SUB16(Q15ONE,theta))); /* sin(theta) */
-
- if (len>=8*stride)
- {
- stride2 = 1;
- /* This is just a simple (equivalent) way of computing sqrt(len/stride) with rounding.
- It's basically incrementing long as (stride2+0.5)^2 < len/stride. */
- while ((stride2*stride2+stride2)*stride + (stride>>2) < len)
- stride2++;
- }
- /*NOTE: As a minor optimization, we could be passing around log2(B), not B, for both this and for
- extract_collapse_mask().*/
- len = celt_udiv(len, stride);
- for (i=0;i<stride;i++)
- {
- if (dir < 0)
- {
- if (stride2)
- exp_rotation1(X+i*len, len, stride2, s, c);
- exp_rotation1(X+i*len, len, 1, c, s);
- } else {
- exp_rotation1(X+i*len, len, 1, c, -s);
- if (stride2)
- exp_rotation1(X+i*len, len, stride2, s, -c);
- }
- }
-}
-
-/** Takes the pitch vector and the decoded residual vector, computes the gain
- that will give ||p+g*y||=1 and mixes the residual with the pitch. */
-static void normalise_residual(int * OPUS_RESTRICT iy, celt_norm * OPUS_RESTRICT X,
- int N, opus_val32 Ryy, opus_val16 gain)
-{
- int i;
-#ifdef FIXED_POINT
- int k;
-#endif
- opus_val32 t;
- opus_val16 g;
-
-#ifdef FIXED_POINT
- k = celt_ilog2(Ryy)>>1;
-#endif
- t = VSHR32(Ryy, 2*(k-7));
- g = MULT16_16_P15(celt_rsqrt_norm(t),gain);
-
- i=0;
- do
- X[i] = EXTRACT16(PSHR32(MULT16_16(g, iy[i]), k+1));
- while (++i < N);
-}
-
-static unsigned extract_collapse_mask(int *iy, int N, int B)
-{
- unsigned collapse_mask;
- int N0;
- int i;
- if (B<=1)
- return 1;
- /*NOTE: As a minor optimization, we could be passing around log2(B), not B, for both this and for
- exp_rotation().*/
- N0 = celt_udiv(N, B);
- collapse_mask = 0;
- i=0; do {
- int j;
- unsigned tmp=0;
- j=0; do {
- tmp |= iy[i*N0+j];
- } while (++j<N0);
- collapse_mask |= (tmp!=0)<<i;
- } while (++i<B);
- return collapse_mask;
-}
-
-unsigned alg_quant(celt_norm *X, int N, int K, int spread, int B, ec_enc *enc
-#ifdef RESYNTH
- , opus_val16 gain
-#endif
- )
-{
- VARDECL(celt_norm, y);
- VARDECL(int, iy);
- VARDECL(opus_val16, signx);
- int i, j;
- opus_val16 s;
- int pulsesLeft;
- opus_val32 sum;
- opus_val32 xy;
- opus_val16 yy;
- unsigned collapse_mask;
- SAVE_STACK;
-
- celt_assert2(K>0, "alg_quant() needs at least one pulse");
- celt_assert2(N>1, "alg_quant() needs at least two dimensions");
-
- ALLOC(y, N, celt_norm);
- ALLOC(iy, N, int);
- ALLOC(signx, N, opus_val16);
-
- exp_rotation(X, N, 1, B, K, spread);
-
- /* Get rid of the sign */
- sum = 0;
- j=0; do {
- if (X[j]>0)
- signx[j]=1;
- else {
- signx[j]=-1;
- X[j]=-X[j];
- }
- iy[j] = 0;
- y[j] = 0;
- } while (++j<N);
-
- xy = yy = 0;
-
- pulsesLeft = K;
-
- /* Do a pre-search by projecting on the pyramid */
- if (K > (N>>1))
- {
- opus_val16 rcp;
- j=0; do {
- sum += X[j];
- } while (++j<N);
-
- /* If X is too small, just replace it with a pulse at 0 */
-#ifdef FIXED_POINT
- if (sum <= K)
-#else
- /* Prevents infinities and NaNs from causing too many pulses
- to be allocated. 64 is an approximation of infinity here. */
- if (!(sum > EPSILON && sum < 64))
-#endif
- {
- X[0] = QCONST16(1.f,14);
- j=1; do
- X[j]=0;
- while (++j<N);
- sum = QCONST16(1.f,14);
- }
- rcp = EXTRACT16(MULT16_32_Q16(K-1, celt_rcp(sum)));
- j=0; do {
-#ifdef FIXED_POINT
- /* It's really important to round *towards zero* here */
- iy[j] = MULT16_16_Q15(X[j],rcp);
-#else
- iy[j] = (int)floor(rcp*X[j]);
-#endif
- y[j] = (celt_norm)iy[j];
- yy = MAC16_16(yy, y[j],y[j]);
- xy = MAC16_16(xy, X[j],y[j]);
- y[j] *= 2;
- pulsesLeft -= iy[j];
- } while (++j<N);
- }
- celt_assert2(pulsesLeft>=1, "Allocated too many pulses in the quick pass");
-
- /* This should never happen, but just in case it does (e.g. on silence)
- we fill the first bin with pulses. */
-#ifdef FIXED_POINT_DEBUG
- celt_assert2(pulsesLeft<=N+3, "Not enough pulses in the quick pass");
-#endif
- if (pulsesLeft > N+3)
- {
- opus_val16 tmp = (opus_val16)pulsesLeft;
- yy = MAC16_16(yy, tmp, tmp);
- yy = MAC16_16(yy, tmp, y[0]);
- iy[0] += pulsesLeft;
- pulsesLeft=0;
- }
-
- s = 1;
- for (i=0;i<pulsesLeft;i++)
- {
- int best_id;
- opus_val32 best_num = -VERY_LARGE16;
- opus_val16 best_den = 0;
-#ifdef FIXED_POINT
- int rshift;
-#endif
-#ifdef FIXED_POINT
- rshift = 1+celt_ilog2(K-pulsesLeft+i+1);
-#endif
- best_id = 0;
- /* The squared magnitude term gets added anyway, so we might as well
- add it outside the loop */
- yy = ADD16(yy, 1);
- j=0;
- do {
- opus_val16 Rxy, Ryy;
- /* Temporary sums of the new pulse(s) */
- Rxy = EXTRACT16(SHR32(ADD32(xy, EXTEND32(X[j])),rshift));
- /* We're multiplying y[j] by two so we don't have to do it here */
- Ryy = ADD16(yy, y[j]);
-
- /* Approximate score: we maximise Rxy/sqrt(Ryy) (we're guaranteed that
- Rxy is positive because the sign is pre-computed) */
- Rxy = MULT16_16_Q15(Rxy,Rxy);
- /* The idea is to check for num/den >= best_num/best_den, but that way
- we can do it without any division */
- /* OPT: Make sure to use conditional moves here */
- if (MULT16_16(best_den, Rxy) > MULT16_16(Ryy, best_num))
- {
- best_den = Ryy;
- best_num = Rxy;
- best_id = j;
- }
- } while (++j<N);
-
- /* Updating the sums of the new pulse(s) */
- xy = ADD32(xy, EXTEND32(X[best_id]));
- /* We're multiplying y[j] by two so we don't have to do it here */
- yy = ADD16(yy, y[best_id]);
-
- /* Only now that we've made the final choice, update y/iy */
- /* Multiplying y[j] by 2 so we don't have to do it everywhere else */
- y[best_id] += 2*s;
- iy[best_id]++;
- }
-
- /* Put the original sign back */
- j=0;
- do {
- X[j] = MULT16_16(signx[j],X[j]);
- if (signx[j] < 0)
- iy[j] = -iy[j];
- } while (++j<N);
- encode_pulses(iy, N, K, enc);
-
-#ifdef RESYNTH
- normalise_residual(iy, X, N, yy, gain);
- exp_rotation(X, N, -1, B, K, spread);
-#endif
-
- collapse_mask = extract_collapse_mask(iy, N, B);
- RESTORE_STACK;
- return collapse_mask;
-}
-
-/** Decode pulse vector and combine the result with the pitch vector to produce
- the final normalised signal in the current band. */
-unsigned alg_unquant(celt_norm *X, int N, int K, int spread, int B,
- ec_dec *dec, opus_val16 gain)
-{
- opus_val32 Ryy;
- unsigned collapse_mask;
- VARDECL(int, iy);
- SAVE_STACK;
-
- celt_assert2(K>0, "alg_unquant() needs at least one pulse");
- celt_assert2(N>1, "alg_unquant() needs at least two dimensions");
- ALLOC(iy, N, int);
- Ryy = decode_pulses(iy, N, K, dec);
- normalise_residual(iy, X, N, Ryy, gain);
- exp_rotation(X, N, -1, B, K, spread);
- collapse_mask = extract_collapse_mask(iy, N, B);
- RESTORE_STACK;
- return collapse_mask;
-}
-
-#ifndef OVERRIDE_renormalise_vector
-void renormalise_vector(celt_norm *X, int N, opus_val16 gain, int arch)
-{
- int i;
-#ifdef FIXED_POINT
- int k;
-#endif
- opus_val32 E;
- opus_val16 g;
- opus_val32 t;
- celt_norm *xptr;
- E = EPSILON + celt_inner_prod(X, X, N, arch);
-#ifdef FIXED_POINT
- k = celt_ilog2(E)>>1;
-#endif
- t = VSHR32(E, 2*(k-7));
- g = MULT16_16_P15(celt_rsqrt_norm(t),gain);
-
- xptr = X;
- for (i=0;i<N;i++)
- {
- *xptr = EXTRACT16(PSHR32(MULT16_16(g, *xptr), k+1));
- xptr++;
- }
- /*return celt_sqrt(E);*/
-}
-#endif /* OVERRIDE_renormalise_vector */
-
-int stereo_itheta(const celt_norm *X, const celt_norm *Y, int stereo, int N, int arch)
-{
- int i;
- int itheta;
- opus_val16 mid, side;
- opus_val32 Emid, Eside;
-
- Emid = Eside = EPSILON;
- if (stereo)
- {
- for (i=0;i<N;i++)
- {
- celt_norm m, s;
- m = ADD16(SHR16(X[i],1),SHR16(Y[i],1));
- s = SUB16(SHR16(X[i],1),SHR16(Y[i],1));
- Emid = MAC16_16(Emid, m, m);
- Eside = MAC16_16(Eside, s, s);
- }
- } else {
- Emid += celt_inner_prod(X, X, N, arch);
- Eside += celt_inner_prod(Y, Y, N, arch);
- }
- mid = celt_sqrt(Emid);
- side = celt_sqrt(Eside);
-#ifdef FIXED_POINT
- /* 0.63662 = 2/pi */
- itheta = MULT16_16_Q15(QCONST16(0.63662f,15),celt_atan2p(side, mid));
-#else
- itheta = (int)floor(.5f+16384*0.63662f*atan2(side,mid));
-#endif
-
- return itheta;
-}
diff --git a/thirdparty/opus/celt/vq.h b/thirdparty/opus/celt/vq.h
deleted file mode 100644
index 5cfcbe50ea..0000000000
--- a/thirdparty/opus/celt/vq.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/**
- @file vq.h
- @brief Vector quantisation of the residual
- */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef VQ_H
-#define VQ_H
-
-#include "entenc.h"
-#include "entdec.h"
-#include "modes.h"
-
-#if defined(MIPSr1_ASM)
-#include "mips/vq_mipsr1.h"
-#endif
-
-
-/** Algebraic pulse-vector quantiser. The signal x is replaced by the sum of
- * the pitch and a combination of pulses such that its norm is still equal
- * to 1. This is the function that will typically require the most CPU.
- * @param X Residual signal to quantise/encode (returns quantised version)
- * @param N Number of samples to encode
- * @param K Number of pulses to use
- * @param enc Entropy encoder state
- * @ret A mask indicating which blocks in the band received pulses
-*/
-unsigned alg_quant(celt_norm *X, int N, int K, int spread, int B,
- ec_enc *enc
-#ifdef RESYNTH
- , opus_val16 gain
-#endif
- );
-
-/** Algebraic pulse decoder
- * @param X Decoded normalised spectrum (returned)
- * @param N Number of samples to decode
- * @param K Number of pulses to use
- * @param dec Entropy decoder state
- * @ret A mask indicating which blocks in the band received pulses
- */
-unsigned alg_unquant(celt_norm *X, int N, int K, int spread, int B,
- ec_dec *dec, opus_val16 gain);
-
-void renormalise_vector(celt_norm *X, int N, opus_val16 gain, int arch);
-
-int stereo_itheta(const celt_norm *X, const celt_norm *Y, int stereo, int N, int arch);
-
-#endif /* VQ_H */
diff --git a/thirdparty/opus/celt/x86/celt_lpc_sse.c b/thirdparty/opus/celt/x86/celt_lpc_sse.c
deleted file mode 100644
index 67e5592acf..0000000000
--- a/thirdparty/opus/celt/x86/celt_lpc_sse.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-#include "celt_lpc.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "pitch.h"
-#include "x86cpu.h"
-
-#if defined(FIXED_POINT)
-
-void celt_fir_sse4_1(const opus_val16 *_x,
- const opus_val16 *num,
- opus_val16 *_y,
- int N,
- int ord,
- opus_val16 *mem,
- int arch)
-{
- int i,j;
- VARDECL(opus_val16, rnum);
- VARDECL(opus_val16, x);
-
- __m128i vecNoA;
- opus_int32 noA ;
- SAVE_STACK;
-
- ALLOC(rnum, ord, opus_val16);
- ALLOC(x, N+ord, opus_val16);
- for(i=0;i<ord;i++)
- rnum[i] = num[ord-i-1];
- for(i=0;i<ord;i++)
- x[i] = mem[ord-i-1];
-
- for (i=0;i<N-7;i+=8)
- {
- x[i+ord ]=_x[i ];
- x[i+ord+1]=_x[i+1];
- x[i+ord+2]=_x[i+2];
- x[i+ord+3]=_x[i+3];
- x[i+ord+4]=_x[i+4];
- x[i+ord+5]=_x[i+5];
- x[i+ord+6]=_x[i+6];
- x[i+ord+7]=_x[i+7];
- }
-
- for (;i<N-3;i+=4)
- {
- x[i+ord ]=_x[i ];
- x[i+ord+1]=_x[i+1];
- x[i+ord+2]=_x[i+2];
- x[i+ord+3]=_x[i+3];
- }
-
- for (;i<N;i++)
- x[i+ord]=_x[i];
-
- for(i=0;i<ord;i++)
- mem[i] = _x[N-i-1];
-#ifdef SMALL_FOOTPRINT
- for (i=0;i<N;i++)
- {
- opus_val32 sum = SHL32(EXTEND32(_x[i]), SIG_SHIFT);
- for (j=0;j<ord;j++)
- {
- sum = MAC16_16(sum,rnum[j],x[i+j]);
- }
- _y[i] = SATURATE16(PSHR32(sum, SIG_SHIFT));
- }
-#else
- noA = EXTEND32(1) << SIG_SHIFT >> 1;
- vecNoA = _mm_set_epi32(noA, noA, noA, noA);
-
- for (i=0;i<N-3;i+=4)
- {
- opus_val32 sums[4] = {0};
- __m128i vecSum, vecX;
-
- xcorr_kernel(rnum, x+i, sums, ord, arch);
-
- vecSum = _mm_loadu_si128((__m128i *)sums);
- vecSum = _mm_add_epi32(vecSum, vecNoA);
- vecSum = _mm_srai_epi32(vecSum, SIG_SHIFT);
- vecX = OP_CVTEPI16_EPI32_M64(_x + i);
- vecSum = _mm_add_epi32(vecSum, vecX);
- vecSum = _mm_packs_epi32(vecSum, vecSum);
- _mm_storel_epi64((__m128i *)(_y + i), vecSum);
- }
- for (;i<N;i++)
- {
- opus_val32 sum = 0;
- for (j=0;j<ord;j++)
- sum = MAC16_16(sum, rnum[j], x[i + j]);
- _y[i] = SATURATE16(ADD32(EXTEND32(_x[i]), PSHR32(sum, SIG_SHIFT)));
- }
-
-#endif
- RESTORE_STACK;
-}
-
-#endif
diff --git a/thirdparty/opus/celt/x86/celt_lpc_sse.h b/thirdparty/opus/celt/x86/celt_lpc_sse.h
deleted file mode 100644
index c5ec796ed5..0000000000
--- a/thirdparty/opus/celt/x86/celt_lpc_sse.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CELT_LPC_SSE_H
-#define CELT_LPC_SSE_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1) && defined(FIXED_POINT)
-#define OVERRIDE_CELT_FIR
-
-void celt_fir_sse4_1(
- const opus_val16 *x,
- const opus_val16 *num,
- opus_val16 *y,
- int N,
- int ord,
- opus_val16 *mem,
- int arch);
-
-#if defined(OPUS_X86_PRESUME_SSE4_1)
-#define celt_fir(x, num, y, N, ord, mem, arch) \
- ((void)arch, celt_fir_sse4_1(x, num, y, N, ord, mem, arch))
-
-#else
-
-extern void (*const CELT_FIR_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *num,
- opus_val16 *y,
- int N,
- int ord,
- opus_val16 *mem,
- int arch);
-
-# define celt_fir(x, num, y, N, ord, mem, arch) \
- ((*CELT_FIR_IMPL[(arch) & OPUS_ARCHMASK])(x, num, y, N, ord, mem, arch))
-
-#endif
-#endif
-
-#endif
diff --git a/thirdparty/opus/celt/x86/pitch_sse.c b/thirdparty/opus/celt/x86/pitch_sse.c
deleted file mode 100644
index 20e73126b6..0000000000
--- a/thirdparty/opus/celt/x86/pitch_sse.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "macros.h"
-#include "celt_lpc.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "pitch.h"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT)
-
-#include <xmmintrin.h>
-#include "arch.h"
-
-void xcorr_kernel_sse(const opus_val16 *x, const opus_val16 *y, opus_val32 sum[4], int len)
-{
- int j;
- __m128 xsum1, xsum2;
- xsum1 = _mm_loadu_ps(sum);
- xsum2 = _mm_setzero_ps();
-
- for (j = 0; j < len-3; j += 4)
- {
- __m128 x0 = _mm_loadu_ps(x+j);
- __m128 yj = _mm_loadu_ps(y+j);
- __m128 y3 = _mm_loadu_ps(y+j+3);
-
- xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x00),yj));
- xsum2 = _mm_add_ps(xsum2,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x55),
- _mm_shuffle_ps(yj,y3,0x49)));
- xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0xaa),
- _mm_shuffle_ps(yj,y3,0x9e)));
- xsum2 = _mm_add_ps(xsum2,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0xff),y3));
- }
- if (j < len)
- {
- xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(_mm_load1_ps(x+j),_mm_loadu_ps(y+j)));
- if (++j < len)
- {
- xsum2 = _mm_add_ps(xsum2,_mm_mul_ps(_mm_load1_ps(x+j),_mm_loadu_ps(y+j)));
- if (++j < len)
- {
- xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(_mm_load1_ps(x+j),_mm_loadu_ps(y+j)));
- }
- }
- }
- _mm_storeu_ps(sum,_mm_add_ps(xsum1,xsum2));
-}
-
-
-void dual_inner_prod_sse(const opus_val16 *x, const opus_val16 *y01, const opus_val16 *y02,
- int N, opus_val32 *xy1, opus_val32 *xy2)
-{
- int i;
- __m128 xsum1, xsum2;
- xsum1 = _mm_setzero_ps();
- xsum2 = _mm_setzero_ps();
- for (i=0;i<N-3;i+=4)
- {
- __m128 xi = _mm_loadu_ps(x+i);
- __m128 y1i = _mm_loadu_ps(y01+i);
- __m128 y2i = _mm_loadu_ps(y02+i);
- xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(xi, y1i));
- xsum2 = _mm_add_ps(xsum2,_mm_mul_ps(xi, y2i));
- }
- /* Horizontal sum */
- xsum1 = _mm_add_ps(xsum1, _mm_movehl_ps(xsum1, xsum1));
- xsum1 = _mm_add_ss(xsum1, _mm_shuffle_ps(xsum1, xsum1, 0x55));
- _mm_store_ss(xy1, xsum1);
- xsum2 = _mm_add_ps(xsum2, _mm_movehl_ps(xsum2, xsum2));
- xsum2 = _mm_add_ss(xsum2, _mm_shuffle_ps(xsum2, xsum2, 0x55));
- _mm_store_ss(xy2, xsum2);
- for (;i<N;i++)
- {
- *xy1 = MAC16_16(*xy1, x[i], y01[i]);
- *xy2 = MAC16_16(*xy2, x[i], y02[i]);
- }
-}
-
-opus_val32 celt_inner_prod_sse(const opus_val16 *x, const opus_val16 *y,
- int N)
-{
- int i;
- float xy;
- __m128 sum;
- sum = _mm_setzero_ps();
- /* FIXME: We should probably go 8-way and use 2 sums. */
- for (i=0;i<N-3;i+=4)
- {
- __m128 xi = _mm_loadu_ps(x+i);
- __m128 yi = _mm_loadu_ps(y+i);
- sum = _mm_add_ps(sum,_mm_mul_ps(xi, yi));
- }
- /* Horizontal sum */
- sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
- sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
- _mm_store_ss(&xy, sum);
- for (;i<N;i++)
- {
- xy = MAC16_16(xy, x[i], y[i]);
- }
- return xy;
-}
-
-void comb_filter_const_sse(opus_val32 *y, opus_val32 *x, int T, int N,
- opus_val16 g10, opus_val16 g11, opus_val16 g12)
-{
- int i;
- __m128 x0v;
- __m128 g10v, g11v, g12v;
- g10v = _mm_load1_ps(&g10);
- g11v = _mm_load1_ps(&g11);
- g12v = _mm_load1_ps(&g12);
- x0v = _mm_loadu_ps(&x[-T-2]);
- for (i=0;i<N-3;i+=4)
- {
- __m128 yi, yi2, x1v, x2v, x3v, x4v;
- const opus_val32 *xp = &x[i-T-2];
- yi = _mm_loadu_ps(x+i);
- x4v = _mm_loadu_ps(xp+4);
-#if 0
- /* Slower version with all loads */
- x1v = _mm_loadu_ps(xp+1);
- x2v = _mm_loadu_ps(xp+2);
- x3v = _mm_loadu_ps(xp+3);
-#else
- x2v = _mm_shuffle_ps(x0v, x4v, 0x4e);
- x1v = _mm_shuffle_ps(x0v, x2v, 0x99);
- x3v = _mm_shuffle_ps(x2v, x4v, 0x99);
-#endif
-
- yi = _mm_add_ps(yi, _mm_mul_ps(g10v,x2v));
-#if 0 /* Set to 1 to make it bit-exact with the non-SSE version */
- yi = _mm_add_ps(yi, _mm_mul_ps(g11v,_mm_add_ps(x3v,x1v)));
- yi = _mm_add_ps(yi, _mm_mul_ps(g12v,_mm_add_ps(x4v,x0v)));
-#else
- /* Use partial sums */
- yi2 = _mm_add_ps(_mm_mul_ps(g11v,_mm_add_ps(x3v,x1v)),
- _mm_mul_ps(g12v,_mm_add_ps(x4v,x0v)));
- yi = _mm_add_ps(yi, yi2);
-#endif
- x0v=x4v;
- _mm_storeu_ps(y+i, yi);
- }
-#ifdef CUSTOM_MODES
- for (;i<N;i++)
- {
- y[i] = x[i]
- + MULT16_32_Q15(g10,x[i-T])
- + MULT16_32_Q15(g11,ADD32(x[i-T+1],x[i-T-1]))
- + MULT16_32_Q15(g12,ADD32(x[i-T+2],x[i-T-2]));
- }
-#endif
-}
-
-
-#endif
diff --git a/thirdparty/opus/celt/x86/pitch_sse.h b/thirdparty/opus/celt/x86/pitch_sse.h
deleted file mode 100644
index e5f87ab51a..0000000000
--- a/thirdparty/opus/celt/x86/pitch_sse.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Copyright (c) 2013 Jean-Marc Valin and John Ridges
- Copyright (c) 2014, Cisco Systems, INC MingXiang WeiZhou MinPeng YanWang*/
-/**
- @file pitch_sse.h
- @brief Pitch analysis
- */
-
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef PITCH_SSE_H
-#define PITCH_SSE_H
-
-#if defined(HAVE_CONFIG_H)
-#include "config.h"
-#endif
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1) && defined(FIXED_POINT)
-void xcorr_kernel_sse4_1(
- const opus_int16 *x,
- const opus_int16 *y,
- opus_val32 sum[4],
- int len);
-#endif
-
-#if defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT)
-void xcorr_kernel_sse(
- const opus_val16 *x,
- const opus_val16 *y,
- opus_val32 sum[4],
- int len);
-#endif
-
-#if defined(OPUS_X86_PRESUME_SSE4_1) && defined(FIXED_POINT)
-#define OVERRIDE_XCORR_KERNEL
-#define xcorr_kernel(x, y, sum, len, arch) \
- ((void)arch, xcorr_kernel_sse4_1(x, y, sum, len))
-
-#elif defined(OPUS_X86_PRESUME_SSE) && !defined(FIXED_POINT)
-#define OVERRIDE_XCORR_KERNEL
-#define xcorr_kernel(x, y, sum, len, arch) \
- ((void)arch, xcorr_kernel_sse(x, y, sum, len))
-
-#elif (defined(OPUS_X86_MAY_HAVE_SSE4_1) && defined(FIXED_POINT)) || (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT))
-
-extern void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y,
- opus_val32 sum[4],
- int len);
-
-#define OVERRIDE_XCORR_KERNEL
-#define xcorr_kernel(x, y, sum, len, arch) \
- ((*XCORR_KERNEL_IMPL[(arch) & OPUS_ARCHMASK])(x, y, sum, len))
-
-#endif
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1) && defined(FIXED_POINT)
-opus_val32 celt_inner_prod_sse4_1(
- const opus_int16 *x,
- const opus_int16 *y,
- int N);
-#endif
-
-#if defined(OPUS_X86_MAY_HAVE_SSE2) && defined(FIXED_POINT)
-opus_val32 celt_inner_prod_sse2(
- const opus_int16 *x,
- const opus_int16 *y,
- int N);
-#endif
-
-#if defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(FIXED_POINT)
-opus_val32 celt_inner_prod_sse(
- const opus_val16 *x,
- const opus_val16 *y,
- int N);
-#endif
-
-
-#if defined(OPUS_X86_PRESUME_SSE4_1) && defined(FIXED_POINT)
-#define OVERRIDE_CELT_INNER_PROD
-#define celt_inner_prod(x, y, N, arch) \
- ((void)arch, celt_inner_prod_sse4_1(x, y, N))
-
-#elif defined(OPUS_X86_PRESUME_SSE2) && defined(FIXED_POINT) && !defined(OPUS_X86_MAY_HAVE_SSE4_1)
-#define OVERRIDE_CELT_INNER_PROD
-#define celt_inner_prod(x, y, N, arch) \
- ((void)arch, celt_inner_prod_sse2(x, y, N))
-
-#elif defined(OPUS_X86_PRESUME_SSE) && !defined(FIXED_POINT)
-#define OVERRIDE_CELT_INNER_PROD
-#define celt_inner_prod(x, y, N, arch) \
- ((void)arch, celt_inner_prod_sse(x, y, N))
-
-
-#elif ((defined(OPUS_X86_MAY_HAVE_SSE4_1) || defined(OPUS_X86_MAY_HAVE_SSE2)) && defined(FIXED_POINT)) || \
- (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT))
-
-extern opus_val32 (*const CELT_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y,
- int N);
-
-#define OVERRIDE_CELT_INNER_PROD
-#define celt_inner_prod(x, y, N, arch) \
- ((*CELT_INNER_PROD_IMPL[(arch) & OPUS_ARCHMASK])(x, y, N))
-
-#endif
-
-#if defined(OPUS_X86_MAY_HAVE_SSE) && !defined(FIXED_POINT)
-
-#define OVERRIDE_DUAL_INNER_PROD
-#define OVERRIDE_COMB_FILTER_CONST
-
-#undef dual_inner_prod
-#undef comb_filter_const
-
-void dual_inner_prod_sse(const opus_val16 *x,
- const opus_val16 *y01,
- const opus_val16 *y02,
- int N,
- opus_val32 *xy1,
- opus_val32 *xy2);
-
-void comb_filter_const_sse(opus_val32 *y,
- opus_val32 *x,
- int T,
- int N,
- opus_val16 g10,
- opus_val16 g11,
- opus_val16 g12);
-
-
-#if defined(OPUS_X86_PRESUME_SSE)
-# define dual_inner_prod(x, y01, y02, N, xy1, xy2, arch) \
- ((void)(arch),dual_inner_prod_sse(x, y01, y02, N, xy1, xy2))
-
-# define comb_filter_const(y, x, T, N, g10, g11, g12, arch) \
- ((void)(arch),comb_filter_const_sse(y, x, T, N, g10, g11, g12))
-#else
-
-extern void (*const DUAL_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y01,
- const opus_val16 *y02,
- int N,
- opus_val32 *xy1,
- opus_val32 *xy2);
-
-#define dual_inner_prod(x, y01, y02, N, xy1, xy2, arch) \
- ((*DUAL_INNER_PROD_IMPL[(arch) & OPUS_ARCHMASK])(x, y01, y02, N, xy1, xy2))
-
-extern void (*const COMB_FILTER_CONST_IMPL[OPUS_ARCHMASK + 1])(
- opus_val32 *y,
- opus_val32 *x,
- int T,
- int N,
- opus_val16 g10,
- opus_val16 g11,
- opus_val16 g12);
-
-#define comb_filter_const(y, x, T, N, g10, g11, g12, arch) \
- ((*COMB_FILTER_CONST_IMPL[(arch) & OPUS_ARCHMASK])(y, x, T, N, g10, g11, g12))
-
-#define NON_STATIC_COMB_FILTER_CONST_C
-
-#endif
-#endif
-
-#endif
diff --git a/thirdparty/opus/celt/x86/pitch_sse2.c b/thirdparty/opus/celt/x86/pitch_sse2.c
deleted file mode 100644
index a0e7d1beaf..0000000000
--- a/thirdparty/opus/celt/x86/pitch_sse2.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-
-#include "macros.h"
-#include "celt_lpc.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "pitch.h"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE2) && defined(FIXED_POINT)
-opus_val32 celt_inner_prod_sse2(const opus_val16 *x, const opus_val16 *y,
- int N)
-{
- opus_int i, dataSize16;
- opus_int32 sum;
-
- __m128i inVec1_76543210, inVec1_FEDCBA98, acc1;
- __m128i inVec2_76543210, inVec2_FEDCBA98, acc2;
-
- sum = 0;
- dataSize16 = N & ~15;
-
- acc1 = _mm_setzero_si128();
- acc2 = _mm_setzero_si128();
-
- for (i=0;i<dataSize16;i+=16)
- {
- inVec1_76543210 = _mm_loadu_si128((__m128i *)(&x[i + 0]));
- inVec2_76543210 = _mm_loadu_si128((__m128i *)(&y[i + 0]));
-
- inVec1_FEDCBA98 = _mm_loadu_si128((__m128i *)(&x[i + 8]));
- inVec2_FEDCBA98 = _mm_loadu_si128((__m128i *)(&y[i + 8]));
-
- inVec1_76543210 = _mm_madd_epi16(inVec1_76543210, inVec2_76543210);
- inVec1_FEDCBA98 = _mm_madd_epi16(inVec1_FEDCBA98, inVec2_FEDCBA98);
-
- acc1 = _mm_add_epi32(acc1, inVec1_76543210);
- acc2 = _mm_add_epi32(acc2, inVec1_FEDCBA98);
- }
-
- acc1 = _mm_add_epi32( acc1, acc2 );
-
- if (N - i >= 8)
- {
- inVec1_76543210 = _mm_loadu_si128((__m128i *)(&x[i + 0]));
- inVec2_76543210 = _mm_loadu_si128((__m128i *)(&y[i + 0]));
-
- inVec1_76543210 = _mm_madd_epi16(inVec1_76543210, inVec2_76543210);
-
- acc1 = _mm_add_epi32(acc1, inVec1_76543210);
- i += 8;
- }
-
- acc1 = _mm_add_epi32(acc1, _mm_unpackhi_epi64( acc1, acc1));
- acc1 = _mm_add_epi32(acc1, _mm_shufflelo_epi16( acc1, 0x0E));
- sum += _mm_cvtsi128_si32(acc1);
-
- for (;i<N;i++) {
- sum = silk_SMLABB(sum, x[i], y[i]);
- }
-
- return sum;
-}
-#endif
diff --git a/thirdparty/opus/celt/x86/pitch_sse4_1.c b/thirdparty/opus/celt/x86/pitch_sse4_1.c
deleted file mode 100644
index a092c68b24..0000000000
--- a/thirdparty/opus/celt/x86/pitch_sse4_1.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-
-#include "macros.h"
-#include "celt_lpc.h"
-#include "stack_alloc.h"
-#include "mathops.h"
-#include "pitch.h"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1) && defined(FIXED_POINT)
-#include <smmintrin.h>
-#include "x86cpu.h"
-
-opus_val32 celt_inner_prod_sse4_1(const opus_val16 *x, const opus_val16 *y,
- int N)
-{
- opus_int i, dataSize16;
- opus_int32 sum;
- __m128i inVec1_76543210, inVec1_FEDCBA98, acc1;
- __m128i inVec2_76543210, inVec2_FEDCBA98, acc2;
- __m128i inVec1_3210, inVec2_3210;
-
- sum = 0;
- dataSize16 = N & ~15;
-
- acc1 = _mm_setzero_si128();
- acc2 = _mm_setzero_si128();
-
- for (i=0;i<dataSize16;i+=16) {
- inVec1_76543210 = _mm_loadu_si128((__m128i *)(&x[i + 0]));
- inVec2_76543210 = _mm_loadu_si128((__m128i *)(&y[i + 0]));
-
- inVec1_FEDCBA98 = _mm_loadu_si128((__m128i *)(&x[i + 8]));
- inVec2_FEDCBA98 = _mm_loadu_si128((__m128i *)(&y[i + 8]));
-
- inVec1_76543210 = _mm_madd_epi16(inVec1_76543210, inVec2_76543210);
- inVec1_FEDCBA98 = _mm_madd_epi16(inVec1_FEDCBA98, inVec2_FEDCBA98);
-
- acc1 = _mm_add_epi32(acc1, inVec1_76543210);
- acc2 = _mm_add_epi32(acc2, inVec1_FEDCBA98);
- }
-
- acc1 = _mm_add_epi32(acc1, acc2);
-
- if (N - i >= 8)
- {
- inVec1_76543210 = _mm_loadu_si128((__m128i *)(&x[i + 0]));
- inVec2_76543210 = _mm_loadu_si128((__m128i *)(&y[i + 0]));
-
- inVec1_76543210 = _mm_madd_epi16(inVec1_76543210, inVec2_76543210);
-
- acc1 = _mm_add_epi32(acc1, inVec1_76543210);
- i += 8;
- }
-
- if (N - i >= 4)
- {
- inVec1_3210 = OP_CVTEPI16_EPI32_M64(&x[i + 0]);
- inVec2_3210 = OP_CVTEPI16_EPI32_M64(&y[i + 0]);
-
- inVec1_3210 = _mm_mullo_epi32(inVec1_3210, inVec2_3210);
-
- acc1 = _mm_add_epi32(acc1, inVec1_3210);
- i += 4;
- }
-
- acc1 = _mm_add_epi32(acc1, _mm_unpackhi_epi64(acc1, acc1));
- acc1 = _mm_add_epi32(acc1, _mm_shufflelo_epi16(acc1, 0x0E));
-
- sum += _mm_cvtsi128_si32(acc1);
-
- for (;i<N;i++)
- {
- sum = silk_SMLABB(sum, x[i], y[i]);
- }
-
- return sum;
-}
-
-void xcorr_kernel_sse4_1(const opus_val16 * x, const opus_val16 * y, opus_val32 sum[ 4 ], int len)
-{
- int j;
-
- __m128i vecX, vecX0, vecX1, vecX2, vecX3;
- __m128i vecY0, vecY1, vecY2, vecY3;
- __m128i sum0, sum1, sum2, sum3, vecSum;
- __m128i initSum;
-
- celt_assert(len >= 3);
-
- sum0 = _mm_setzero_si128();
- sum1 = _mm_setzero_si128();
- sum2 = _mm_setzero_si128();
- sum3 = _mm_setzero_si128();
-
- for (j=0;j<(len-7);j+=8)
- {
- vecX = _mm_loadu_si128((__m128i *)(&x[j + 0]));
- vecY0 = _mm_loadu_si128((__m128i *)(&y[j + 0]));
- vecY1 = _mm_loadu_si128((__m128i *)(&y[j + 1]));
- vecY2 = _mm_loadu_si128((__m128i *)(&y[j + 2]));
- vecY3 = _mm_loadu_si128((__m128i *)(&y[j + 3]));
-
- sum0 = _mm_add_epi32(sum0, _mm_madd_epi16(vecX, vecY0));
- sum1 = _mm_add_epi32(sum1, _mm_madd_epi16(vecX, vecY1));
- sum2 = _mm_add_epi32(sum2, _mm_madd_epi16(vecX, vecY2));
- sum3 = _mm_add_epi32(sum3, _mm_madd_epi16(vecX, vecY3));
- }
-
- sum0 = _mm_add_epi32(sum0, _mm_unpackhi_epi64( sum0, sum0));
- sum0 = _mm_add_epi32(sum0, _mm_shufflelo_epi16( sum0, 0x0E));
-
- sum1 = _mm_add_epi32(sum1, _mm_unpackhi_epi64( sum1, sum1));
- sum1 = _mm_add_epi32(sum1, _mm_shufflelo_epi16( sum1, 0x0E));
-
- sum2 = _mm_add_epi32(sum2, _mm_unpackhi_epi64( sum2, sum2));
- sum2 = _mm_add_epi32(sum2, _mm_shufflelo_epi16( sum2, 0x0E));
-
- sum3 = _mm_add_epi32(sum3, _mm_unpackhi_epi64( sum3, sum3));
- sum3 = _mm_add_epi32(sum3, _mm_shufflelo_epi16( sum3, 0x0E));
-
- vecSum = _mm_unpacklo_epi64(_mm_unpacklo_epi32(sum0, sum1),
- _mm_unpacklo_epi32(sum2, sum3));
-
- for (;j<(len-3);j+=4)
- {
- vecX = OP_CVTEPI16_EPI32_M64(&x[j + 0]);
- vecX0 = _mm_shuffle_epi32(vecX, 0x00);
- vecX1 = _mm_shuffle_epi32(vecX, 0x55);
- vecX2 = _mm_shuffle_epi32(vecX, 0xaa);
- vecX3 = _mm_shuffle_epi32(vecX, 0xff);
-
- vecY0 = OP_CVTEPI16_EPI32_M64(&y[j + 0]);
- vecY1 = OP_CVTEPI16_EPI32_M64(&y[j + 1]);
- vecY2 = OP_CVTEPI16_EPI32_M64(&y[j + 2]);
- vecY3 = OP_CVTEPI16_EPI32_M64(&y[j + 3]);
-
- sum0 = _mm_mullo_epi32(vecX0, vecY0);
- sum1 = _mm_mullo_epi32(vecX1, vecY1);
- sum2 = _mm_mullo_epi32(vecX2, vecY2);
- sum3 = _mm_mullo_epi32(vecX3, vecY3);
-
- sum0 = _mm_add_epi32(sum0, sum1);
- sum2 = _mm_add_epi32(sum2, sum3);
- vecSum = _mm_add_epi32(vecSum, sum0);
- vecSum = _mm_add_epi32(vecSum, sum2);
- }
-
- for (;j<len;j++)
- {
- vecX = OP_CVTEPI16_EPI32_M64(&x[j + 0]);
- vecX0 = _mm_shuffle_epi32(vecX, 0x00);
-
- vecY0 = OP_CVTEPI16_EPI32_M64(&y[j + 0]);
-
- sum0 = _mm_mullo_epi32(vecX0, vecY0);
- vecSum = _mm_add_epi32(vecSum, sum0);
- }
-
- initSum = _mm_loadu_si128((__m128i *)(&sum[0]));
- initSum = _mm_add_epi32(initSum, vecSum);
- _mm_storeu_si128((__m128i *)sum, initSum);
-}
-#endif
diff --git a/thirdparty/opus/celt/x86/x86_celt_map.c b/thirdparty/opus/celt/x86/x86_celt_map.c
deleted file mode 100644
index 47ba41b9ee..0000000000
--- a/thirdparty/opus/celt/x86/x86_celt_map.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if defined(HAVE_CONFIG_H)
-#include "config.h"
-#endif
-
-#include "x86/x86cpu.h"
-#include "celt_lpc.h"
-#include "pitch.h"
-#include "pitch_sse.h"
-
-#if defined(OPUS_HAVE_RTCD)
-
-# if defined(FIXED_POINT)
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)
-
-void (*const CELT_FIR_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *num,
- opus_val16 *y,
- int N,
- int ord,
- opus_val16 *mem,
- int arch
-) = {
- celt_fir_c, /* non-sse */
- celt_fir_c,
- celt_fir_c,
- MAY_HAVE_SSE4_1(celt_fir), /* sse4.1 */
- MAY_HAVE_SSE4_1(celt_fir) /* avx */
-};
-
-void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y,
- opus_val32 sum[4],
- int len
-) = {
- xcorr_kernel_c, /* non-sse */
- xcorr_kernel_c,
- xcorr_kernel_c,
- MAY_HAVE_SSE4_1(xcorr_kernel), /* sse4.1 */
- MAY_HAVE_SSE4_1(xcorr_kernel) /* avx */
-};
-
-#endif
-
-#if (defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)) || \
- (!defined(OPUS_X86_MAY_HAVE_SSE_4_1) && defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2))
-
-opus_val32 (*const CELT_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y,
- int N
-) = {
- celt_inner_prod_c, /* non-sse */
- celt_inner_prod_c,
- MAY_HAVE_SSE2(celt_inner_prod),
- MAY_HAVE_SSE4_1(celt_inner_prod), /* sse4.1 */
- MAY_HAVE_SSE4_1(celt_inner_prod) /* avx */
-};
-
-#endif
-
-# else
-
-#if defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE)
-
-void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y,
- opus_val32 sum[4],
- int len
-) = {
- xcorr_kernel_c, /* non-sse */
- MAY_HAVE_SSE(xcorr_kernel),
- MAY_HAVE_SSE(xcorr_kernel),
- MAY_HAVE_SSE(xcorr_kernel),
- MAY_HAVE_SSE(xcorr_kernel)
-};
-
-opus_val32 (*const CELT_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y,
- int N
-) = {
- celt_inner_prod_c, /* non-sse */
- MAY_HAVE_SSE(celt_inner_prod),
- MAY_HAVE_SSE(celt_inner_prod),
- MAY_HAVE_SSE(celt_inner_prod),
- MAY_HAVE_SSE(celt_inner_prod)
-};
-
-void (*const DUAL_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
- const opus_val16 *x,
- const opus_val16 *y01,
- const opus_val16 *y02,
- int N,
- opus_val32 *xy1,
- opus_val32 *xy2
-) = {
- dual_inner_prod_c, /* non-sse */
- MAY_HAVE_SSE(dual_inner_prod),
- MAY_HAVE_SSE(dual_inner_prod),
- MAY_HAVE_SSE(dual_inner_prod),
- MAY_HAVE_SSE(dual_inner_prod)
-};
-
-void (*const COMB_FILTER_CONST_IMPL[OPUS_ARCHMASK + 1])(
- opus_val32 *y,
- opus_val32 *x,
- int T,
- int N,
- opus_val16 g10,
- opus_val16 g11,
- opus_val16 g12
-) = {
- comb_filter_const_c, /* non-sse */
- MAY_HAVE_SSE(comb_filter_const),
- MAY_HAVE_SSE(comb_filter_const),
- MAY_HAVE_SSE(comb_filter_const),
- MAY_HAVE_SSE(comb_filter_const)
-};
-
-
-#endif
-
-#endif
-#endif
diff --git a/thirdparty/opus/celt/x86/x86cpu.c b/thirdparty/opus/celt/x86/x86cpu.c
deleted file mode 100644
index 080eb25e41..0000000000
--- a/thirdparty/opus/celt/x86/x86cpu.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "cpu_support.h"
-#include "macros.h"
-#include "main.h"
-#include "pitch.h"
-#include "x86cpu.h"
-
-#if (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE)) || \
- (defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2)) || \
- (defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)) || \
- (defined(OPUS_X86_MAY_HAVE_AVX) && !defined(OPUS_X86_PRESUME_AVX))
-
-
-#if defined(_MSC_VER)
-
-#include <intrin.h>
-static _inline void cpuid(unsigned int CPUInfo[4], unsigned int InfoType)
-{
- __cpuid((int*)CPUInfo, InfoType);
-}
-
-#else
-
-#if defined(CPU_INFO_BY_C)
-#include <cpuid.h>
-#endif
-
-static void cpuid(unsigned int CPUInfo[4], unsigned int InfoType)
-{
-#if defined(CPU_INFO_BY_ASM)
-#if defined(__i386__) && defined(__PIC__)
-/* %ebx is PIC register in 32-bit, so mustn't clobber it. */
- __asm__ __volatile__ (
- "xchg %%ebx, %1\n"
- "cpuid\n"
- "xchg %%ebx, %1\n":
- "=a" (CPUInfo[0]),
- "=r" (CPUInfo[1]),
- "=c" (CPUInfo[2]),
- "=d" (CPUInfo[3]) :
- "0" (InfoType)
- );
-#else
- __asm__ __volatile__ (
- "cpuid":
- "=a" (CPUInfo[0]),
- "=b" (CPUInfo[1]),
- "=c" (CPUInfo[2]),
- "=d" (CPUInfo[3]) :
- "0" (InfoType)
- );
-#endif
-#elif defined(CPU_INFO_BY_C)
- __get_cpuid(InfoType, &(CPUInfo[0]), &(CPUInfo[1]), &(CPUInfo[2]), &(CPUInfo[3]));
-#endif
-}
-
-#endif
-
-typedef struct CPU_Feature{
- /* SIMD: 128-bit */
- int HW_SSE;
- int HW_SSE2;
- int HW_SSE41;
- /* SIMD: 256-bit */
- int HW_AVX;
-} CPU_Feature;
-
-static void opus_cpu_feature_check(CPU_Feature *cpu_feature)
-{
- unsigned int info[4] = {0};
- unsigned int nIds = 0;
-
- cpuid(info, 0);
- nIds = info[0];
-
- if (nIds >= 1){
- cpuid(info, 1);
- cpu_feature->HW_SSE = (info[3] & (1 << 25)) != 0;
- cpu_feature->HW_SSE2 = (info[3] & (1 << 26)) != 0;
- cpu_feature->HW_SSE41 = (info[2] & (1 << 19)) != 0;
- cpu_feature->HW_AVX = (info[2] & (1 << 28)) != 0;
- }
- else {
- cpu_feature->HW_SSE = 0;
- cpu_feature->HW_SSE2 = 0;
- cpu_feature->HW_SSE41 = 0;
- cpu_feature->HW_AVX = 0;
- }
-}
-
-int opus_select_arch(void)
-{
- CPU_Feature cpu_feature;
- int arch;
-
- opus_cpu_feature_check(&cpu_feature);
-
- arch = 0;
- if (!cpu_feature.HW_SSE)
- {
- return arch;
- }
- arch++;
-
- if (!cpu_feature.HW_SSE2)
- {
- return arch;
- }
- arch++;
-
- if (!cpu_feature.HW_SSE41)
- {
- return arch;
- }
- arch++;
-
- if (!cpu_feature.HW_AVX)
- {
- return arch;
- }
- arch++;
-
- return arch;
-}
-
-#endif
diff --git a/thirdparty/opus/celt/x86/x86cpu.h b/thirdparty/opus/celt/x86/x86cpu.h
deleted file mode 100644
index 04fd48aac4..0000000000
--- a/thirdparty/opus/celt/x86/x86cpu.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if !defined(X86CPU_H)
-# define X86CPU_H
-
-# if defined(OPUS_X86_MAY_HAVE_SSE)
-# define MAY_HAVE_SSE(name) name ## _sse
-# else
-# define MAY_HAVE_SSE(name) name ## _c
-# endif
-
-# if defined(OPUS_X86_MAY_HAVE_SSE2)
-# define MAY_HAVE_SSE2(name) name ## _sse2
-# else
-# define MAY_HAVE_SSE2(name) name ## _c
-# endif
-
-# if defined(OPUS_X86_MAY_HAVE_SSE4_1)
-# define MAY_HAVE_SSE4_1(name) name ## _sse4_1
-# else
-# define MAY_HAVE_SSE4_1(name) name ## _c
-# endif
-
-# if defined(OPUS_X86_MAY_HAVE_AVX)
-# define MAY_HAVE_AVX(name) name ## _avx
-# else
-# define MAY_HAVE_AVX(name) name ## _c
-# endif
-
-# if defined(OPUS_HAVE_RTCD)
-int opus_select_arch(void);
-# endif
-
-/*gcc appears to emit MOVDQA's to load the argument of an _mm_cvtepi8_epi32()
- or _mm_cvtepi16_epi32() when optimizations are disabled, even though the
- actual PMOVSXWD instruction takes an m32 or m64. Unlike a normal memory
- reference, these require 16-byte alignment and load a full 16 bytes (instead
- of 4 or 8), possibly reading out of bounds.
-
- We can insert an explicit MOVD or MOVQ using _mm_cvtsi32_si128() or
- _mm_loadl_epi64(), which should have the same semantics as an m32 or m64
- reference in the PMOVSXWD instruction itself, but gcc is not smart enough to
- optimize this out when optimizations ARE enabled.
-
- Clang, in contrast, requires us to do this always for _mm_cvtepi8_epi32
- (which is fair, since technically the compiler is always allowed to do the
- dereference before invoking the function implementing the intrinsic).
- However, it is smart enough to eliminate the extra MOVD instruction.
- For _mm_cvtepi16_epi32, it does the right thing, though does *not* optimize out
- the extra MOVQ if it's specified explicitly */
-
-# if defined(__clang__) || !defined(__OPTIMIZE__)
-# define OP_CVTEPI8_EPI32_M32(x) \
- (_mm_cvtepi8_epi32(_mm_cvtsi32_si128(*(int *)(x))))
-# else
-# define OP_CVTEPI8_EPI32_M32(x) \
- (_mm_cvtepi8_epi32(*(__m128i *)(x)))
-#endif
-
-# if !defined(__OPTIMIZE__)
-# define OP_CVTEPI16_EPI32_M64(x) \
- (_mm_cvtepi16_epi32(_mm_loadl_epi64((__m128i *)(x))))
-# else
-# define OP_CVTEPI16_EPI32_M64(x) \
- (_mm_cvtepi16_epi32(*(__m128i *)(x)))
-# endif
-
-#endif
diff --git a/thirdparty/opus/config.h b/thirdparty/opus/config.h
deleted file mode 100644
index 7b9c92c6a8..0000000000
--- a/thirdparty/opus/config.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Opus configuration header */
-/* Based on the output of libopus configure script */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-#if (!defined( _MSC_VER ) || ( _MSC_VER >= 1800 ))
-
-/* Define to 1 if you have the `lrint' function. */
-#define HAVE_LRINT 1
-
-/* Define to 1 if you have the `lrintf' function. */
-#define HAVE_LRINTF 1
-
-#endif
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#define LT_OBJDIR ".libs/"
-
-#ifdef OPUS_ARM_OPT
-/* Make use of ARM asm optimization */
-#define OPUS_ARM_ASM 1
-
-/* Use generic ARMv4 inline asm optimizations */
-#define OPUS_ARM_INLINE_ASM 1
-
-/* Use ARMv5E inline asm optimizations */
-#define OPUS_ARM_INLINE_EDSP 1
-
-/* Use ARMv6 inline asm optimizations */
-#define OPUS_ARM_INLINE_MEDIA 1
-
-/* Use ARM NEON inline asm optimizations */
-#define OPUS_ARM_INLINE_NEON 1
-
-/* Define if assembler supports EDSP instructions */
-#define OPUS_ARM_MAY_HAVE_EDSP 1
-
-/* Define if assembler supports ARMv6 media instructions */
-#define OPUS_ARM_MAY_HAVE_MEDIA 1
-
-/* Define if compiler supports NEON instructions */
-#define OPUS_ARM_MAY_HAVE_NEON 1
-#endif // OPUS_ARM_OPT
-
-#ifdef OPUS_ARM64_OPT
-/* Make use of ARM asm optimization */
-#define OPUS_ARM_ASM 1
-
-/* Use ARMv6 inline asm optimizations */
-#define OPUS_ARM_INLINE_MEDIA 1 // work
-
-/* Use ARM NEON inline asm optimizations */
-#define OPUS_ARM_INLINE_NEON 1 // work
-
-/* Define if assembler supports EDSP instructions */
-#define OPUS_ARM_MAY_HAVE_EDSP 1 // work
-
-/* Define if assembler supports ARMv6 media instructions */
-#define OPUS_ARM_MAY_HAVE_MEDIA 1 // work
-
-/* Define if compiler supports NEON instructions */
-#define OPUS_ARM_MAY_HAVE_NEON 1
-
-#endif // OPUS_ARM64_OPT
-
-/* This is a build of OPUS */
-#define OPUS_BUILD /**/
-
-#ifndef WIN32
- /* Use C99 variable-size arrays */
- #define VAR_ARRAYS 1
-#else
- /* Fixes VS 2013 compile error */
- #define USE_ALLOCA 1
-#endif
-
-#ifndef OPUS_FIXED_POINT
-#define FLOAT_APPROX 1
-#endif
-
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-/* #undef inline */
-#endif
-
-/* Define to the equivalent of the C99 'restrict' keyword, or to
- nothing if this is not supported. Do not define if restrict is
- supported directly. */
-#if (!defined( _MSC_VER ) || ( _MSC_VER >= 1800 ))
-#define restrict __restrict
-#else
-#undef restrict
-#endif
-/* Work around a bug in Sun C++: it does not support _Restrict or
- __restrict__, even though the corresponding Sun C compiler ends up with
- "#define restrict _Restrict" or "#define restrict __restrict__" in the
- previous line. Perhaps some future version of Sun C++ will work with
- restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
-#if defined __SUNPRO_CC && !defined __RESTRICT
-# define _Restrict
-# define __restrict__
-#endif
diff --git a/thirdparty/opus/info.c b/thirdparty/opus/info.c
deleted file mode 100644
index c36f9a9ee1..0000000000
--- a/thirdparty/opus/info.c
+++ /dev/null
@@ -1,758 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 2012 *
- * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
- * *
- ********************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "internal.h"
-#include <limits.h>
-#include <string.h>
-
-static unsigned op_parse_uint16le(const unsigned char *_data){
- return _data[0]|_data[1]<<8;
-}
-
-static int op_parse_int16le(const unsigned char *_data){
- int ret;
- ret=_data[0]|_data[1]<<8;
- return (ret^0x8000)-0x8000;
-}
-
-static opus_uint32 op_parse_uint32le(const unsigned char *_data){
- return _data[0]|(opus_uint32)_data[1]<<8|
- (opus_uint32)_data[2]<<16|(opus_uint32)_data[3]<<24;
-}
-
-static opus_uint32 op_parse_uint32be(const unsigned char *_data){
- return _data[3]|(opus_uint32)_data[2]<<8|
- (opus_uint32)_data[1]<<16|(opus_uint32)_data[0]<<24;
-}
-
-int opus_head_parse(OpusHead *_head,const unsigned char *_data,size_t _len){
- OpusHead head;
- if(_len<8)return OP_ENOTFORMAT;
- if(memcmp(_data,"OpusHead",8)!=0)return OP_ENOTFORMAT;
- if(_len<9)return OP_EBADHEADER;
- head.version=_data[8];
- if(head.version>15)return OP_EVERSION;
- if(_len<19)return OP_EBADHEADER;
- head.channel_count=_data[9];
- head.pre_skip=op_parse_uint16le(_data+10);
- head.input_sample_rate=op_parse_uint32le(_data+12);
- head.output_gain=op_parse_int16le(_data+16);
- head.mapping_family=_data[18];
- if(head.mapping_family==0){
- if(head.channel_count<1||head.channel_count>2)return OP_EBADHEADER;
- if(head.version<=1&&_len>19)return OP_EBADHEADER;
- head.stream_count=1;
- head.coupled_count=head.channel_count-1;
- if(_head!=NULL){
- _head->mapping[0]=0;
- _head->mapping[1]=1;
- }
- }
- else if(head.mapping_family==1){
- size_t size;
- int ci;
- if(head.channel_count<1||head.channel_count>8)return OP_EBADHEADER;
- size=21+head.channel_count;
- if(_len<size||head.version<=1&&_len>size)return OP_EBADHEADER;
- head.stream_count=_data[19];
- if(head.stream_count<1)return OP_EBADHEADER;
- head.coupled_count=_data[20];
- if(head.coupled_count>head.stream_count)return OP_EBADHEADER;
- for(ci=0;ci<head.channel_count;ci++){
- if(_data[21+ci]>=head.stream_count+head.coupled_count
- &&_data[21+ci]!=255){
- return OP_EBADHEADER;
- }
- }
- if(_head!=NULL)memcpy(_head->mapping,_data+21,head.channel_count);
- }
- /*General purpose players should not attempt to play back content with
- channel mapping family 255.*/
- else if(head.mapping_family==255)return OP_EIMPL;
- /*No other channel mapping families are currently defined.*/
- else return OP_EBADHEADER;
- if(_head!=NULL)memcpy(_head,&head,head.mapping-(unsigned char *)&head);
- return 0;
-}
-
-void opus_tags_init(OpusTags *_tags){
- memset(_tags,0,sizeof(*_tags));
-}
-
-void opus_tags_clear(OpusTags *_tags){
- int ncomments;
- int ci;
- ncomments=_tags->comments;
- if(_tags->user_comments!=NULL)ncomments++;
- for(ci=ncomments;ci-->0;)_ogg_free(_tags->user_comments[ci]);
- _ogg_free(_tags->user_comments);
- _ogg_free(_tags->comment_lengths);
- _ogg_free(_tags->vendor);
-}
-
-/*Ensure there's room for up to _ncomments comments.*/
-static int op_tags_ensure_capacity(OpusTags *_tags,size_t _ncomments){
- char **user_comments;
- int *comment_lengths;
- int cur_ncomments;
- char *binary_suffix_data;
- int binary_suffix_len;
- size_t size;
- if(OP_UNLIKELY(_ncomments>=(size_t)INT_MAX))return OP_EFAULT;
- size=sizeof(*_tags->comment_lengths)*(_ncomments+1);
- if(size/sizeof(*_tags->comment_lengths)!=_ncomments+1)return OP_EFAULT;
- cur_ncomments=_tags->comments;
- comment_lengths=_tags->comment_lengths;
- binary_suffix_len=comment_lengths==NULL?0:comment_lengths[cur_ncomments];
- comment_lengths=(int *)_ogg_realloc(_tags->comment_lengths,size);
- if(OP_UNLIKELY(comment_lengths==NULL))return OP_EFAULT;
- comment_lengths[_ncomments]=binary_suffix_len;
- _tags->comment_lengths=comment_lengths;
- size=sizeof(*_tags->user_comments)*(_ncomments+1);
- if(size/sizeof(*_tags->user_comments)!=_ncomments+1)return OP_EFAULT;
- user_comments=_tags->user_comments;
- binary_suffix_data=user_comments==NULL?NULL:user_comments[cur_ncomments];
- user_comments=(char **)_ogg_realloc(_tags->user_comments,size);
- if(OP_UNLIKELY(user_comments==NULL))return OP_EFAULT;
- user_comments[_ncomments]=binary_suffix_data;
- _tags->user_comments=user_comments;
- return 0;
-}
-
-/*Duplicate a (possibly non-NUL terminated) string with a known length.*/
-static char *op_strdup_with_len(const char *_s,size_t _len){
- size_t size;
- char *ret;
- size=sizeof(*ret)*(_len+1);
- if(OP_UNLIKELY(size<_len))return NULL;
- ret=(char *)_ogg_malloc(size);
- if(OP_LIKELY(ret!=NULL)){
- ret=(char *)memcpy(ret,_s,sizeof(*ret)*_len);
- ret[_len]='\0';
- }
- return ret;
-}
-
-/*The actual implementation of opus_tags_parse().
- Unlike the public API, this function requires _tags to already be
- initialized, modifies its contents before success is guaranteed, and assumes
- the caller will clear it on error.*/
-static int opus_tags_parse_impl(OpusTags *_tags,
- const unsigned char *_data,size_t _len){
- opus_uint32 count;
- size_t len;
- int ncomments;
- int ci;
- len=_len;
- if(len<8)return OP_ENOTFORMAT;
- if(memcmp(_data,"OpusTags",8)!=0)return OP_ENOTFORMAT;
- if(len<16)return OP_EBADHEADER;
- _data+=8;
- len-=8;
- count=op_parse_uint32le(_data);
- _data+=4;
- len-=4;
- if(count>len)return OP_EBADHEADER;
- if(_tags!=NULL){
- _tags->vendor=op_strdup_with_len((char *)_data,count);
- if(_tags->vendor==NULL)return OP_EFAULT;
- }
- _data+=count;
- len-=count;
- if(len<4)return OP_EBADHEADER;
- count=op_parse_uint32le(_data);
- _data+=4;
- len-=4;
- /*Check to make sure there's minimally sufficient data left in the packet.*/
- if(count>len>>2)return OP_EBADHEADER;
- /*Check for overflow (the API limits this to an int).*/
- if(count>(opus_uint32)INT_MAX-1)return OP_EFAULT;
- if(_tags!=NULL){
- int ret;
- ret=op_tags_ensure_capacity(_tags,count);
- if(ret<0)return ret;
- }
- ncomments=(int)count;
- for(ci=0;ci<ncomments;ci++){
- /*Check to make sure there's minimally sufficient data left in the packet.*/
- if((size_t)(ncomments-ci)>len>>2)return OP_EBADHEADER;
- count=op_parse_uint32le(_data);
- _data+=4;
- len-=4;
- if(count>len)return OP_EBADHEADER;
- /*Check for overflow (the API limits this to an int).*/
- if(count>(opus_uint32)INT_MAX)return OP_EFAULT;
- if(_tags!=NULL){
- _tags->user_comments[ci]=op_strdup_with_len((char *)_data,count);
- if(_tags->user_comments[ci]==NULL)return OP_EFAULT;
- _tags->comment_lengths[ci]=(int)count;
- _tags->comments=ci+1;
- /*Needed by opus_tags_clear() if we fail before parsing the (optional)
- binary metadata.*/
- _tags->user_comments[ci+1]=NULL;
- }
- _data+=count;
- len-=count;
- }
- if(len>0&&(_data[0]&1)){
- if(len>(opus_uint32)INT_MAX)return OP_EFAULT;
- if(_tags!=NULL){
- _tags->user_comments[ncomments]=(char *)_ogg_malloc(len);
- if(OP_UNLIKELY(_tags->user_comments[ncomments]==NULL))return OP_EFAULT;
- memcpy(_tags->user_comments[ncomments],_data,len);
- _tags->comment_lengths[ncomments]=(int)len;
- }
- }
- return 0;
-}
-
-int opus_tags_parse(OpusTags *_tags,const unsigned char *_data,size_t _len){
- if(_tags!=NULL){
- OpusTags tags;
- int ret;
- opus_tags_init(&tags);
- ret=opus_tags_parse_impl(&tags,_data,_len);
- if(ret<0)opus_tags_clear(&tags);
- else *_tags=*&tags;
- return ret;
- }
- else return opus_tags_parse_impl(NULL,_data,_len);
-}
-
-/*The actual implementation of opus_tags_copy().
- Unlike the public API, this function requires _dst to already be
- initialized, modifies its contents before success is guaranteed, and assumes
- the caller will clear it on error.*/
-static int opus_tags_copy_impl(OpusTags *_dst,const OpusTags *_src){
- char *vendor;
- int ncomments;
- int ret;
- int ci;
- vendor=_src->vendor;
- _dst->vendor=op_strdup_with_len(vendor,strlen(vendor));
- if(OP_UNLIKELY(_dst->vendor==NULL))return OP_EFAULT;
- ncomments=_src->comments;
- ret=op_tags_ensure_capacity(_dst,ncomments);
- if(OP_UNLIKELY(ret<0))return ret;
- for(ci=0;ci<ncomments;ci++){
- int len;
- len=_src->comment_lengths[ci];
- OP_ASSERT(len>=0);
- _dst->user_comments[ci]=op_strdup_with_len(_src->user_comments[ci],len);
- if(OP_UNLIKELY(_dst->user_comments[ci]==NULL))return OP_EFAULT;
- _dst->comment_lengths[ci]=len;
- _dst->comments=ci+1;
- }
- if(_src->comment_lengths!=NULL){
- int len;
- len=_src->comment_lengths[ncomments];
- if(len>0){
- _dst->user_comments[ncomments]=(char *)_ogg_malloc(len);
- if(OP_UNLIKELY(_dst->user_comments[ncomments]==NULL))return OP_EFAULT;
- memcpy(_dst->user_comments[ncomments],_src->user_comments[ncomments],len);
- _dst->comment_lengths[ncomments]=len;
- }
- }
- return 0;
-}
-
-int opus_tags_copy(OpusTags *_dst,const OpusTags *_src){
- OpusTags dst;
- int ret;
- opus_tags_init(&dst);
- ret=opus_tags_copy_impl(&dst,_src);
- if(OP_UNLIKELY(ret<0))opus_tags_clear(&dst);
- else *_dst=*&dst;
- return 0;
-}
-
-int opus_tags_add(OpusTags *_tags,const char *_tag,const char *_value){
- char *comment;
- int tag_len;
- int value_len;
- int ncomments;
- int ret;
- ncomments=_tags->comments;
- ret=op_tags_ensure_capacity(_tags,ncomments+1);
- if(OP_UNLIKELY(ret<0))return ret;
- tag_len=strlen(_tag);
- value_len=strlen(_value);
- /*+2 for '=' and '\0'.*/
- comment=(char *)_ogg_malloc(sizeof(*comment)*(tag_len+value_len+2));
- if(OP_UNLIKELY(comment==NULL))return OP_EFAULT;
- memcpy(comment,_tag,sizeof(*comment)*tag_len);
- comment[tag_len]='=';
- memcpy(comment+tag_len+1,_value,sizeof(*comment)*(value_len+1));
- _tags->user_comments[ncomments]=comment;
- _tags->comment_lengths[ncomments]=tag_len+value_len+1;
- _tags->comments=ncomments+1;
- return 0;
-}
-
-int opus_tags_add_comment(OpusTags *_tags,const char *_comment){
- char *comment;
- int comment_len;
- int ncomments;
- int ret;
- ncomments=_tags->comments;
- ret=op_tags_ensure_capacity(_tags,ncomments+1);
- if(OP_UNLIKELY(ret<0))return ret;
- comment_len=(int)strlen(_comment);
- comment=op_strdup_with_len(_comment,comment_len);
- if(OP_UNLIKELY(comment==NULL))return OP_EFAULT;
- _tags->user_comments[ncomments]=comment;
- _tags->comment_lengths[ncomments]=comment_len;
- _tags->comments=ncomments+1;
- return 0;
-}
-
-int opus_tags_set_binary_suffix(OpusTags *_tags,
- const unsigned char *_data,int _len){
- unsigned char *binary_suffix_data;
- int ncomments;
- int ret;
- if(_len<0||_len>0&&(_data==NULL||!(_data[0]&1)))return OP_EINVAL;
- ncomments=_tags->comments;
- ret=op_tags_ensure_capacity(_tags,ncomments);
- if(OP_UNLIKELY(ret<0))return ret;
- binary_suffix_data=
- (unsigned char *)_ogg_realloc(_tags->user_comments[ncomments],_len);
- if(OP_UNLIKELY(binary_suffix_data==NULL))return OP_EFAULT;
- memcpy(binary_suffix_data,_data,_len);
- _tags->user_comments[ncomments]=(char *)binary_suffix_data;
- _tags->comment_lengths[ncomments]=_len;
- return 0;
-}
-
-int opus_tagcompare(const char *_tag_name,const char *_comment){
- return opus_tagncompare(_tag_name,strlen(_tag_name),_comment);
-}
-
-int opus_tagncompare(const char *_tag_name,int _tag_len,const char *_comment){
- int ret;
- OP_ASSERT(_tag_len>=0);
- ret=op_strncasecmp(_tag_name,_comment,_tag_len);
- return ret?ret:'='-_comment[_tag_len];
-}
-
-const char *opus_tags_query(const OpusTags *_tags,const char *_tag,int _count){
- char **user_comments;
- int tag_len;
- int found;
- int ncomments;
- int ci;
- tag_len=strlen(_tag);
- ncomments=_tags->comments;
- user_comments=_tags->user_comments;
- found=0;
- for(ci=0;ci<ncomments;ci++){
- if(!opus_tagncompare(_tag,tag_len,user_comments[ci])){
- /*We return a pointer to the data, not a copy.*/
- if(_count==found++)return user_comments[ci]+tag_len+1;
- }
- }
- /*Didn't find anything.*/
- return NULL;
-}
-
-int opus_tags_query_count(const OpusTags *_tags,const char *_tag){
- char **user_comments;
- int tag_len;
- int found;
- int ncomments;
- int ci;
- tag_len=strlen(_tag);
- ncomments=_tags->comments;
- user_comments=_tags->user_comments;
- found=0;
- for(ci=0;ci<ncomments;ci++){
- if(!opus_tagncompare(_tag,tag_len,user_comments[ci]))found++;
- }
- return found;
-}
-
-const unsigned char *opus_tags_get_binary_suffix(const OpusTags *_tags,
- int *_len){
- int ncomments;
- int len;
- ncomments=_tags->comments;
- len=_tags->comment_lengths==NULL?0:_tags->comment_lengths[ncomments];
- *_len=len;
- OP_ASSERT(len==0||_tags->user_comments!=NULL);
- return len>0?(const unsigned char *)_tags->user_comments[ncomments]:NULL;
-}
-
-static int opus_tags_get_gain(const OpusTags *_tags,int *_gain_q8,
- const char *_tag_name,size_t _tag_len){
- char **comments;
- int ncomments;
- int ci;
- comments=_tags->user_comments;
- ncomments=_tags->comments;
- /*Look for the first valid tag with the name _tag_name and use that.*/
- for(ci=0;ci<ncomments;ci++){
- if(opus_tagncompare(_tag_name,_tag_len,comments[ci])==0){
- char *p;
- opus_int32 gain_q8;
- int negative;
- p=comments[ci]+_tag_len+1;
- negative=0;
- if(*p=='-'){
- negative=-1;
- p++;
- }
- else if(*p=='+')p++;
- gain_q8=0;
- while(*p>='0'&&*p<='9'){
- gain_q8=10*gain_q8+*p-'0';
- if(gain_q8>32767-negative)break;
- p++;
- }
- /*This didn't look like a signed 16-bit decimal integer.
- Not a valid gain tag.*/
- if(*p!='\0')continue;
- *_gain_q8=(int)(gain_q8+negative^negative);
- return 0;
- }
- }
- return OP_FALSE;
-}
-
-int opus_tags_get_album_gain(const OpusTags *_tags,int *_gain_q8){
- return opus_tags_get_gain(_tags,_gain_q8,"R128_ALBUM_GAIN",15);
-}
-
-int opus_tags_get_track_gain(const OpusTags *_tags,int *_gain_q8){
- return opus_tags_get_gain(_tags,_gain_q8,"R128_TRACK_GAIN",15);
-}
-
-static int op_is_jpeg(const unsigned char *_buf,size_t _buf_sz){
- return _buf_sz>=11&&memcmp(_buf,"\xFF\xD8\xFF\xE0",4)==0
- &&(_buf[4]<<8|_buf[5])>=16&&memcmp(_buf+6,"JFIF",5)==0;
-}
-
-/*Tries to extract the width, height, bits per pixel, and palette size of a
- JPEG.
- On failure, simply leaves its outputs unmodified.*/
-static void op_extract_jpeg_params(const unsigned char *_buf,size_t _buf_sz,
- opus_uint32 *_width,opus_uint32 *_height,
- opus_uint32 *_depth,opus_uint32 *_colors,int *_has_palette){
- if(op_is_jpeg(_buf,_buf_sz)){
- size_t offs;
- offs=2;
- for(;;){
- size_t segment_len;
- int marker;
- while(offs<_buf_sz&&_buf[offs]!=0xFF)offs++;
- while(offs<_buf_sz&&_buf[offs]==0xFF)offs++;
- marker=_buf[offs];
- offs++;
- /*If we hit EOI* (end of image), or another SOI* (start of image),
- or SOS (start of scan), then stop now.*/
- if(offs>=_buf_sz||(marker>=0xD8&&marker<=0xDA))break;
- /*RST* (restart markers): skip (no segment length).*/
- else if(marker>=0xD0&&marker<=0xD7)continue;
- /*Read the length of the marker segment.*/
- if(_buf_sz-offs<2)break;
- segment_len=_buf[offs]<<8|_buf[offs+1];
- if(segment_len<2||_buf_sz-offs<segment_len)break;
- if(marker==0xC0||(marker>0xC0&&marker<0xD0&&(marker&3)!=0)){
- /*Found a SOFn (start of frame) marker segment:*/
- if(segment_len>=8){
- *_height=_buf[offs+3]<<8|_buf[offs+4];
- *_width=_buf[offs+5]<<8|_buf[offs+6];
- *_depth=_buf[offs+2]*_buf[offs+7];
- *_colors=0;
- *_has_palette=0;
- }
- break;
- }
- /*Other markers: skip the whole marker segment.*/
- offs+=segment_len;
- }
- }
-}
-
-static int op_is_png(const unsigned char *_buf,size_t _buf_sz){
- return _buf_sz>=8&&memcmp(_buf,"\x89PNG\x0D\x0A\x1A\x0A",8)==0;
-}
-
-/*Tries to extract the width, height, bits per pixel, and palette size of a
- PNG.
- On failure, simply leaves its outputs unmodified.*/
-static void op_extract_png_params(const unsigned char *_buf,size_t _buf_sz,
- opus_uint32 *_width,opus_uint32 *_height,
- opus_uint32 *_depth,opus_uint32 *_colors,int *_has_palette){
- if(op_is_png(_buf,_buf_sz)){
- size_t offs;
- offs=8;
- while(_buf_sz-offs>=12){
- ogg_uint32_t chunk_len;
- chunk_len=op_parse_uint32be(_buf+offs);
- if(chunk_len>_buf_sz-(offs+12))break;
- else if(chunk_len==13&&memcmp(_buf+offs+4,"IHDR",4)==0){
- int color_type;
- *_width=op_parse_uint32be(_buf+offs+8);
- *_height=op_parse_uint32be(_buf+offs+12);
- color_type=_buf[offs+17];
- if(color_type==3){
- *_depth=24;
- *_has_palette=1;
- }
- else{
- int sample_depth;
- sample_depth=_buf[offs+16];
- if(color_type==0)*_depth=sample_depth;
- else if(color_type==2)*_depth=sample_depth*3;
- else if(color_type==4)*_depth=sample_depth*2;
- else if(color_type==6)*_depth=sample_depth*4;
- *_colors=0;
- *_has_palette=0;
- break;
- }
- }
- else if(*_has_palette>0&&memcmp(_buf+offs+4,"PLTE",4)==0){
- *_colors=chunk_len/3;
- break;
- }
- offs+=12+chunk_len;
- }
- }
-}
-
-static int op_is_gif(const unsigned char *_buf,size_t _buf_sz){
- return _buf_sz>=6&&(memcmp(_buf,"GIF87a",6)==0||memcmp(_buf,"GIF89a",6)==0);
-}
-
-/*Tries to extract the width, height, bits per pixel, and palette size of a
- GIF.
- On failure, simply leaves its outputs unmodified.*/
-static void op_extract_gif_params(const unsigned char *_buf,size_t _buf_sz,
- opus_uint32 *_width,opus_uint32 *_height,
- opus_uint32 *_depth,opus_uint32 *_colors,int *_has_palette){
- if(op_is_gif(_buf,_buf_sz)&&_buf_sz>=14){
- *_width=_buf[6]|_buf[7]<<8;
- *_height=_buf[8]|_buf[9]<<8;
- /*libFLAC hard-codes the depth to 24.*/
- *_depth=24;
- *_colors=1<<((_buf[10]&7)+1);
- *_has_palette=1;
- }
-}
-
-/*The actual implementation of opus_picture_tag_parse().
- Unlike the public API, this function requires _pic to already be
- initialized, modifies its contents before success is guaranteed, and assumes
- the caller will clear it on error.*/
-static int opus_picture_tag_parse_impl(OpusPictureTag *_pic,const char *_tag,
- unsigned char *_buf,size_t _buf_sz,size_t _base64_sz){
- opus_int32 picture_type;
- opus_uint32 mime_type_length;
- char *mime_type;
- opus_uint32 description_length;
- char *description;
- opus_uint32 width;
- opus_uint32 height;
- opus_uint32 depth;
- opus_uint32 colors;
- opus_uint32 data_length;
- opus_uint32 file_width;
- opus_uint32 file_height;
- opus_uint32 file_depth;
- opus_uint32 file_colors;
- int format;
- int has_palette;
- int colors_set;
- size_t i;
- /*Decode the BASE64 data.*/
- for(i=0;i<_base64_sz;i++){
- opus_uint32 value;
- int j;
- value=0;
- for(j=0;j<4;j++){
- unsigned c;
- unsigned d;
- c=(unsigned char)_tag[4*i+j];
- if(c=='+')d=62;
- else if(c=='/')d=63;
- else if(c>='0'&&c<='9')d=52+c-'0';
- else if(c>='a'&&c<='z')d=26+c-'a';
- else if(c>='A'&&c<='Z')d=c-'A';
- else if(c=='='&&3*i+j>_buf_sz)d=0;
- else return OP_ENOTFORMAT;
- value=value<<6|d;
- }
- _buf[3*i]=(unsigned char)(value>>16);
- if(3*i+1<_buf_sz){
- _buf[3*i+1]=(unsigned char)(value>>8);
- if(3*i+2<_buf_sz)_buf[3*i+2]=(unsigned char)value;
- }
- }
- i=0;
- picture_type=op_parse_uint32be(_buf+i);
- i+=4;
- /*Extract the MIME type.*/
- mime_type_length=op_parse_uint32be(_buf+i);
- i+=4;
- if(mime_type_length>_buf_sz-32)return OP_ENOTFORMAT;
- mime_type=(char *)_ogg_malloc(sizeof(*_pic->mime_type)*(mime_type_length+1));
- if(mime_type==NULL)return OP_EFAULT;
- memcpy(mime_type,_buf+i,sizeof(*mime_type)*mime_type_length);
- mime_type[mime_type_length]='\0';
- _pic->mime_type=mime_type;
- i+=mime_type_length;
- /*Extract the description string.*/
- description_length=op_parse_uint32be(_buf+i);
- i+=4;
- if(description_length>_buf_sz-mime_type_length-32)return OP_ENOTFORMAT;
- description=
- (char *)_ogg_malloc(sizeof(*_pic->mime_type)*(description_length+1));
- if(description==NULL)return OP_EFAULT;
- memcpy(description,_buf+i,sizeof(*description)*description_length);
- description[description_length]='\0';
- _pic->description=description;
- i+=description_length;
- /*Extract the remaining fields.*/
- width=op_parse_uint32be(_buf+i);
- i+=4;
- height=op_parse_uint32be(_buf+i);
- i+=4;
- depth=op_parse_uint32be(_buf+i);
- i+=4;
- colors=op_parse_uint32be(_buf+i);
- i+=4;
- /*If one of these is set, they all must be, but colors==0 is a valid value.*/
- colors_set=width!=0||height!=0||depth!=0||colors!=0;
- if((width==0||height==0||depth==0)&&colors_set)return OP_ENOTFORMAT;
- data_length=op_parse_uint32be(_buf+i);
- i+=4;
- if(data_length>_buf_sz-i)return OP_ENOTFORMAT;
- /*Trim extraneous data so we don't copy it below.*/
- _buf_sz=i+data_length;
- /*Attempt to determine the image format.*/
- format=OP_PIC_FORMAT_UNKNOWN;
- if(mime_type_length==3&&strcmp(mime_type,"-->")==0){
- format=OP_PIC_FORMAT_URL;
- /*Picture type 1 must be a 32x32 PNG.*/
- if(picture_type==1&&(width!=0||height!=0)&&(width!=32||height!=32)){
- return OP_ENOTFORMAT;
- }
- /*Append a terminating NUL for the convenience of our callers.*/
- _buf[_buf_sz++]='\0';
- }
- else{
- if(mime_type_length==10
- &&op_strncasecmp(mime_type,"image/jpeg",mime_type_length)==0){
- if(op_is_jpeg(_buf+i,data_length))format=OP_PIC_FORMAT_JPEG;
- }
- else if(mime_type_length==9
- &&op_strncasecmp(mime_type,"image/png",mime_type_length)==0){
- if(op_is_png(_buf+i,data_length))format=OP_PIC_FORMAT_PNG;
- }
- else if(mime_type_length==9
- &&op_strncasecmp(mime_type,"image/gif",mime_type_length)==0){
- if(op_is_gif(_buf+i,data_length))format=OP_PIC_FORMAT_GIF;
- }
- else if(mime_type_length==0||(mime_type_length==6
- &&op_strncasecmp(mime_type,"image/",mime_type_length)==0)){
- if(op_is_jpeg(_buf+i,data_length))format=OP_PIC_FORMAT_JPEG;
- else if(op_is_png(_buf+i,data_length))format=OP_PIC_FORMAT_PNG;
- else if(op_is_gif(_buf+i,data_length))format=OP_PIC_FORMAT_GIF;
- }
- file_width=file_height=file_depth=file_colors=0;
- has_palette=-1;
- switch(format){
- case OP_PIC_FORMAT_JPEG:{
- op_extract_jpeg_params(_buf+i,data_length,
- &file_width,&file_height,&file_depth,&file_colors,&has_palette);
- }break;
- case OP_PIC_FORMAT_PNG:{
- op_extract_png_params(_buf+i,data_length,
- &file_width,&file_height,&file_depth,&file_colors,&has_palette);
- }break;
- case OP_PIC_FORMAT_GIF:{
- op_extract_gif_params(_buf+i,data_length,
- &file_width,&file_height,&file_depth,&file_colors,&has_palette);
- }break;
- }
- if(has_palette>=0){
- /*If we successfully extracted these parameters from the image, override
- any declared values.*/
- width=file_width;
- height=file_height;
- depth=file_depth;
- colors=file_colors;
- }
- /*Picture type 1 must be a 32x32 PNG.*/
- if(picture_type==1&&(format!=OP_PIC_FORMAT_PNG||width!=32||height!=32)){
- return OP_ENOTFORMAT;
- }
- }
- /*Adjust _buf_sz instead of using data_length to capture the terminating NUL
- for URLs.*/
- _buf_sz-=i;
- memmove(_buf,_buf+i,sizeof(*_buf)*_buf_sz);
- _buf=(unsigned char *)_ogg_realloc(_buf,_buf_sz);
- if(_buf_sz>0&&_buf==NULL)return OP_EFAULT;
- _pic->type=picture_type;
- _pic->width=width;
- _pic->height=height;
- _pic->depth=depth;
- _pic->colors=colors;
- _pic->data_length=data_length;
- _pic->data=_buf;
- _pic->format=format;
- return 0;
-}
-
-int opus_picture_tag_parse(OpusPictureTag *_pic,const char *_tag){
- OpusPictureTag pic;
- unsigned char *buf;
- size_t base64_sz;
- size_t buf_sz;
- size_t tag_length;
- int ret;
- if(opus_tagncompare("METADATA_BLOCK_PICTURE",22,_tag)==0)_tag+=23;
- /*Figure out how much BASE64-encoded data we have.*/
- tag_length=strlen(_tag);
- if(tag_length&3)return OP_ENOTFORMAT;
- base64_sz=tag_length>>2;
- buf_sz=3*base64_sz;
- if(buf_sz<32)return OP_ENOTFORMAT;
- if(_tag[tag_length-1]=='=')buf_sz--;
- if(_tag[tag_length-2]=='=')buf_sz--;
- if(buf_sz<32)return OP_ENOTFORMAT;
- /*Allocate an extra byte to allow appending a terminating NUL to URL data.*/
- buf=(unsigned char *)_ogg_malloc(sizeof(*buf)*(buf_sz+1));
- if(buf==NULL)return OP_EFAULT;
- opus_picture_tag_init(&pic);
- ret=opus_picture_tag_parse_impl(&pic,_tag,buf,buf_sz,base64_sz);
- if(ret<0){
- opus_picture_tag_clear(&pic);
- _ogg_free(buf);
- }
- else *_pic=*&pic;
- return ret;
-}
-
-void opus_picture_tag_init(OpusPictureTag *_pic){
- memset(_pic,0,sizeof(*_pic));
-}
-
-void opus_picture_tag_clear(OpusPictureTag *_pic){
- _ogg_free(_pic->description);
- _ogg_free(_pic->mime_type);
- _ogg_free(_pic->data);
-}
diff --git a/thirdparty/opus/internal.c b/thirdparty/opus/internal.c
deleted file mode 100644
index 96c80def82..0000000000
--- a/thirdparty/opus/internal.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 2012 *
- * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
- * *
- ********************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "internal.h"
-
-#if defined(OP_ENABLE_ASSERTIONS)
-void op_fatal_impl(const char *_str,const char *_file,int _line){
- fprintf(stderr,"Fatal (internal) error in %s, line %i: %s\n",
- _file,_line,_str);
- abort();
-}
-#endif
-
-/*A version of strncasecmp() that is guaranteed to only ignore the case of
- ASCII characters.*/
-int op_strncasecmp(const char *_a,const char *_b,int _n){
- int i;
- for(i=0;i<_n;i++){
- int a;
- int b;
- int d;
- a=_a[i];
- b=_b[i];
- if(a>='a'&&a<='z')a-='a'-'A';
- if(b>='a'&&b<='z')b-='a'-'A';
- d=a-b;
- if(d)return d;
- }
- return 0;
-}
diff --git a/thirdparty/opus/internal.h b/thirdparty/opus/internal.h
deleted file mode 100644
index ee48ea34c9..0000000000
--- a/thirdparty/opus/internal.h
+++ /dev/null
@@ -1,254 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 2012 *
- * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
- * *
- ********************************************************************/
-#if !defined(_opusfile_internal_h)
-# define _opusfile_internal_h (1)
-
-# if !defined(_REENTRANT)
-# define _REENTRANT
-# endif
-# if !defined(_GNU_SOURCE)
-# define _GNU_SOURCE
-# endif
-# if !defined(_LARGEFILE_SOURCE)
-# define _LARGEFILE_SOURCE
-# endif
-# if !defined(_LARGEFILE64_SOURCE)
-# define _LARGEFILE64_SOURCE
-# endif
-# if !defined(_FILE_OFFSET_BITS)
-# define _FILE_OFFSET_BITS 64
-# endif
-
-# include <stdlib.h>
-# include <opusfile.h>
-
-typedef struct OggOpusLink OggOpusLink;
-
-# if defined(OP_FIXED_POINT)
-
-typedef opus_int16 op_sample;
-
-# else
-
-typedef float op_sample;
-
-/*We're using this define to test for libopus 1.1 or later until libopus
- provides a better mechanism.*/
-# if defined(OPUS_GET_EXPERT_FRAME_DURATION_REQUEST)
-/*Enable soft clipping prevention in 16-bit decodes.*/
-# define OP_SOFT_CLIP (1)
-# endif
-
-# endif
-
-# if OP_GNUC_PREREQ(4,2)
-/*Disable excessive warnings about the order of operations.*/
-# pragma GCC diagnostic ignored "-Wparentheses"
-# elif defined(_MSC_VER)
-/*Disable excessive warnings about the order of operations.*/
-# pragma warning(disable:4554)
-/*Disable warnings about "deprecated" POSIX functions.*/
-# pragma warning(disable:4996)
-# endif
-
-# if OP_GNUC_PREREQ(3,0)
-/*Another alternative is
- (__builtin_constant_p(_x)?!!(_x):__builtin_expect(!!(_x),1))
- but that evaluates _x multiple times, which may be bad.*/
-# define OP_LIKELY(_x) (__builtin_expect(!!(_x),1))
-# define OP_UNLIKELY(_x) (__builtin_expect(!!(_x),0))
-# else
-# define OP_LIKELY(_x) (!!(_x))
-# define OP_UNLIKELY(_x) (!!(_x))
-# endif
-
-# if defined(OP_ENABLE_ASSERTIONS)
-# if OP_GNUC_PREREQ(2,5)||__SUNPRO_C>=0x590
-__attribute__((noreturn))
-# endif
-void op_fatal_impl(const char *_str,const char *_file,int _line);
-
-# define OP_FATAL(_str) (op_fatal_impl(_str,__FILE__,__LINE__))
-
-# define OP_ASSERT(_cond) \
- do{ \
- if(OP_UNLIKELY(!(_cond)))OP_FATAL("assertion failed: " #_cond); \
- } \
- while(0)
-# define OP_ALWAYS_TRUE(_cond) OP_ASSERT(_cond)
-
-# else
-# define OP_FATAL(_str) abort()
-# define OP_ASSERT(_cond)
-# define OP_ALWAYS_TRUE(_cond) ((void)(_cond))
-# endif
-
-# define OP_INT64_MAX (2*(((ogg_int64_t)1<<62)-1)|1)
-# define OP_INT64_MIN (-OP_INT64_MAX-1)
-# define OP_INT32_MAX (2*(((ogg_int32_t)1<<30)-1)|1)
-# define OP_INT32_MIN (-OP_INT32_MAX-1)
-
-# define OP_MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
-# define OP_MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
-# define OP_CLAMP(_lo,_x,_hi) (OP_MAX(_lo,OP_MIN(_x,_hi)))
-
-/*Advance a file offset by the given amount, clamping against OP_INT64_MAX.
- This is used to advance a known offset by things like OP_CHUNK_SIZE or
- OP_PAGE_SIZE_MAX, while making sure to avoid signed overflow.
- It assumes that both _offset and _amount are non-negative.*/
-#define OP_ADV_OFFSET(_offset,_amount) \
- (OP_MIN(_offset,OP_INT64_MAX-(_amount))+(_amount))
-
-/*The maximum channel count for any mapping we'll actually decode.*/
-# define OP_NCHANNELS_MAX (8)
-
-/*Initial state.*/
-# define OP_NOTOPEN (0)
-/*We've found the first Opus stream in the first link.*/
-# define OP_PARTOPEN (1)
-# define OP_OPENED (2)
-/*We've found the first Opus stream in the current link.*/
-# define OP_STREAMSET (3)
-/*We've initialized the decoder for the chosen Opus stream in the current
- link.*/
-# define OP_INITSET (4)
-
-/*Information cached for a single link in a chained Ogg Opus file.
- We choose the first Opus stream encountered in each link to play back (and
- require at least one).*/
-struct OggOpusLink{
- /*The byte offset of the first header page in this link.*/
- opus_int64 offset;
- /*The byte offset of the first data page from the chosen Opus stream in this
- link (after the headers).*/
- opus_int64 data_offset;
- /*The byte offset of the last page from the chosen Opus stream in this link.
- This is used when seeking to ensure we find a page before the last one, so
- that end-trimming calculations work properly.
- This is only valid for seekable sources.*/
- opus_int64 end_offset;
- /*The granule position of the last sample.
- This is only valid for seekable sources.*/
- ogg_int64_t pcm_end;
- /*The granule position before the first sample.*/
- ogg_int64_t pcm_start;
- /*The serial number.*/
- ogg_uint32_t serialno;
- /*The contents of the info header.*/
- OpusHead head;
- /*The contents of the comment header.*/
- OpusTags tags;
-};
-
-struct OggOpusFile{
- /*The callbacks used to access the data source.*/
- OpusFileCallbacks callbacks;
- /*A FILE *, memory bufer, etc.*/
- void *source;
- /*Whether or not we can seek with this data source.*/
- int seekable;
- /*The number of links in this chained Ogg Opus file.*/
- int nlinks;
- /*The cached information from each link in a chained Ogg Opus file.
- If source isn't seekable (e.g., it's a pipe), only the current link
- appears.*/
- OggOpusLink *links;
- /*The number of serial numbers from a single link.*/
- int nserialnos;
- /*The capacity of the list of serial numbers from a single link.*/
- int cserialnos;
- /*Storage for the list of serial numbers from a single link.*/
- ogg_uint32_t *serialnos;
- /*This is the current offset of the data processed by the ogg_sync_state.
- After a seek, this should be set to the target offset so that we can track
- the byte offsets of subsequent pages.
- After a call to op_get_next_page(), this will point to the first byte after
- that page.*/
- opus_int64 offset;
- /*The total size of this data source, or -1 if it's unseekable.*/
- opus_int64 end;
- /*Used to locate pages in the data source.*/
- ogg_sync_state oy;
- /*One of OP_NOTOPEN, OP_PARTOPEN, OP_OPENED, OP_STREAMSET, OP_INITSET.*/
- int ready_state;
- /*The current link being played back.*/
- int cur_link;
- /*The number of decoded samples to discard from the start of decoding.*/
- opus_int32 cur_discard_count;
- /*The granule position of the previous packet (current packet start time).*/
- ogg_int64_t prev_packet_gp;
- /*The stream offset of the most recent page with completed packets, or -1.
- This is only needed to recover continued packet data in the seeking logic,
- when we use the current position as one of our bounds, only to later
- discover it was the correct starting point.*/
- opus_int64 prev_page_offset;
- /*The number of bytes read since the last bitrate query, including framing.*/
- opus_int64 bytes_tracked;
- /*The number of samples decoded since the last bitrate query.*/
- ogg_int64_t samples_tracked;
- /*Takes physical pages and welds them into a logical stream of packets.*/
- ogg_stream_state os;
- /*Re-timestamped packets from a single page.
- Buffering these relies on the undocumented libogg behavior that ogg_packet
- pointers remain valid until the next page is submitted to the
- ogg_stream_state they came from.*/
- ogg_packet op[255];
- /*The index of the next packet to return.*/
- int op_pos;
- /*The total number of packets available.*/
- int op_count;
- /*Central working state for the packet-to-PCM decoder.*/
- OpusMSDecoder *od;
- /*The application-provided packet decode callback.*/
- op_decode_cb_func decode_cb;
- /*The application-provided packet decode callback context.*/
- void *decode_cb_ctx;
- /*The stream count used to initialize the decoder.*/
- int od_stream_count;
- /*The coupled stream count used to initialize the decoder.*/
- int od_coupled_count;
- /*The channel count used to initialize the decoder.*/
- int od_channel_count;
- /*The channel mapping used to initialize the decoder.*/
- unsigned char od_mapping[OP_NCHANNELS_MAX];
- /*The buffered data for one decoded packet.*/
- op_sample *od_buffer;
- /*The current position in the decoded buffer.*/
- int od_buffer_pos;
- /*The number of valid samples in the decoded buffer.*/
- int od_buffer_size;
- /*The type of gain offset to apply.
- One of OP_HEADER_GAIN, OP_TRACK_GAIN, or OP_ABSOLUTE_GAIN.*/
- int gain_type;
- /*The offset to apply to the gain.*/
- opus_int32 gain_offset_q8;
- /*Internal state for soft clipping and dithering float->short output.*/
-#if !defined(OP_FIXED_POINT)
-# if defined(OP_SOFT_CLIP)
- float clip_state[OP_NCHANNELS_MAX];
-# endif
- float dither_a[OP_NCHANNELS_MAX*4];
- float dither_b[OP_NCHANNELS_MAX*4];
- opus_uint32 dither_seed;
- int dither_mute;
- int dither_disabled;
- /*The number of channels represented by the internal state.
- This gets set to 0 whenever anything that would prevent state propagation
- occurs (switching between the float/short APIs, or between the
- stereo/multistream APIs).*/
- int state_channel_count;
-#endif
-};
-
-int op_strncasecmp(const char *_a,const char *_b,int _n);
-
-#endif
diff --git a/thirdparty/opus/mlp.c b/thirdparty/opus/mlp.c
deleted file mode 100644
index ff9e50df47..0000000000
--- a/thirdparty/opus/mlp.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Copyright (c) 2008-2011 Octasic Inc.
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus_types.h"
-#include "opus_defines.h"
-
-#include <math.h>
-#include "mlp.h"
-#include "arch.h"
-#include "tansig_table.h"
-#define MAX_NEURONS 100
-
-#if 0
-static OPUS_INLINE opus_val16 tansig_approx(opus_val32 _x) /* Q19 */
-{
- int i;
- opus_val16 xx; /* Q11 */
- /*double x, y;*/
- opus_val16 dy, yy; /* Q14 */
- /*x = 1.9073e-06*_x;*/
- if (_x>=QCONST32(8,19))
- return QCONST32(1.,14);
- if (_x<=-QCONST32(8,19))
- return -QCONST32(1.,14);
- xx = EXTRACT16(SHR32(_x, 8));
- /*i = lrint(25*x);*/
- i = SHR32(ADD32(1024,MULT16_16(25, xx)),11);
- /*x -= .04*i;*/
- xx -= EXTRACT16(SHR32(MULT16_16(20972,i),8));
- /*x = xx*(1./2048);*/
- /*y = tansig_table[250+i];*/
- yy = tansig_table[250+i];
- /*y = yy*(1./16384);*/
- dy = 16384-MULT16_16_Q14(yy,yy);
- yy = yy + MULT16_16_Q14(MULT16_16_Q11(xx,dy),(16384 - MULT16_16_Q11(yy,xx)));
- return yy;
-}
-#else
-/*extern const float tansig_table[501];*/
-static OPUS_INLINE float tansig_approx(float x)
-{
- int i;
- float y, dy;
- float sign=1;
- /* Tests are reversed to catch NaNs */
- if (!(x<8))
- return 1;
- if (!(x>-8))
- return -1;
-#ifndef FIXED_POINT
- /* Another check in case of -ffast-math */
- if (celt_isnan(x))
- return 0;
-#endif
- if (x<0)
- {
- x=-x;
- sign=-1;
- }
- i = (int)floor(.5f+25*x);
- x -= .04f*i;
- y = tansig_table[i];
- dy = 1-y*y;
- y = y + x*dy*(1 - y*x);
- return sign*y;
-}
-#endif
-
-#if 0
-void mlp_process(const MLP *m, const opus_val16 *in, opus_val16 *out)
-{
- int j;
- opus_val16 hidden[MAX_NEURONS];
- const opus_val16 *W = m->weights;
- /* Copy to tmp_in */
- for (j=0;j<m->topo[1];j++)
- {
- int k;
- opus_val32 sum = SHL32(EXTEND32(*W++),8);
- for (k=0;k<m->topo[0];k++)
- sum = MAC16_16(sum, in[k],*W++);
- hidden[j] = tansig_approx(sum);
- }
- for (j=0;j<m->topo[2];j++)
- {
- int k;
- opus_val32 sum = SHL32(EXTEND32(*W++),14);
- for (k=0;k<m->topo[1];k++)
- sum = MAC16_16(sum, hidden[k], *W++);
- out[j] = tansig_approx(EXTRACT16(PSHR32(sum,17)));
- }
-}
-#else
-void mlp_process(const MLP *m, const float *in, float *out)
-{
- int j;
- float hidden[MAX_NEURONS];
- const float *W = m->weights;
- /* Copy to tmp_in */
- for (j=0;j<m->topo[1];j++)
- {
- int k;
- float sum = *W++;
- for (k=0;k<m->topo[0];k++)
- sum = sum + in[k]**W++;
- hidden[j] = tansig_approx(sum);
- }
- for (j=0;j<m->topo[2];j++)
- {
- int k;
- float sum = *W++;
- for (k=0;k<m->topo[1];k++)
- sum = sum + hidden[k]**W++;
- out[j] = tansig_approx(sum);
- }
-}
-#endif
diff --git a/thirdparty/opus/mlp.h b/thirdparty/opus/mlp.h
deleted file mode 100644
index 618e246e2c..0000000000
--- a/thirdparty/opus/mlp.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (c) 2008-2011 Octasic Inc.
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef _MLP_H_
-#define _MLP_H_
-
-#include "arch.h"
-
-typedef struct {
- int layers;
- const int *topo;
- const float *weights;
-} MLP;
-
-extern const MLP net;
-
-void mlp_process(const MLP *m, const float *in, float *out);
-
-#endif /* _MLP_H_ */
diff --git a/thirdparty/opus/mlp_data.c b/thirdparty/opus/mlp_data.c
deleted file mode 100644
index c2fda4e2e5..0000000000
--- a/thirdparty/opus/mlp_data.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/* The contents of this file was automatically generated by mlp_train.c
- It contains multi-layer perceptron (MLP) weights. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "mlp.h"
-
-/* RMS error was 0.138320, seed was 1361535663 */
-
-static const float weights[422] = {
-
-/* hidden layer */
--0.0941125f, -0.302976f, -0.603555f, -0.19393f, -0.185983f,
--0.601617f, -0.0465317f, -0.114563f, -0.103599f, -0.618938f,
--0.317859f, -0.169949f, -0.0702885f, 0.148065f, 0.409524f,
-0.548432f, 0.367649f, -0.494393f, 0.764306f, -1.83957f,
-0.170849f, 12.786f, -1.08848f, -1.27284f, -16.2606f,
-24.1773f, -5.57454f, -0.17276f, -0.163388f, -0.224421f,
--0.0948944f, -0.0728695f, -0.26557f, -0.100283f, -0.0515459f,
--0.146142f, -0.120674f, -0.180655f, 0.12857f, 0.442138f,
--0.493735f, 0.167767f, 0.206699f, -0.197567f, 0.417999f,
-1.50364f, -0.773341f, -10.0401f, 0.401872f, 2.97966f,
-15.2165f, -1.88905f, -1.19254f, 0.0285397f, -0.00405139f,
-0.0707565f, 0.00825699f, -0.0927269f, -0.010393f, -0.00428882f,
--0.00489743f, -0.0709731f, -0.00255992f, 0.0395619f, 0.226424f,
-0.0325231f, 0.162175f, -0.100118f, 0.485789f, 0.12697f,
-0.285937f, 0.0155637f, 0.10546f, 3.05558f, 1.15059f,
--1.00904f, -1.83088f, 3.31766f, -3.42516f, -0.119135f,
--0.0405654f, 0.00690068f, 0.0179877f, -0.0382487f, 0.00597941f,
--0.0183611f, 0.00190395f, -0.144322f, -0.0435671f, 0.000990594f,
-0.221087f, 0.142405f, 0.484066f, 0.404395f, 0.511955f,
--0.237255f, 0.241742f, 0.35045f, -0.699428f, 10.3993f,
-2.6507f, -2.43459f, -4.18838f, 1.05928f, 1.71067f,
-0.00667811f, -0.0721335f, -0.0397346f, 0.0362704f, -0.11496f,
--0.0235776f, 0.0082161f, -0.0141741f, -0.0329699f, -0.0354253f,
-0.00277404f, -0.290654f, -1.14767f, -0.319157f, -0.686544f,
-0.36897f, 0.478899f, 0.182579f, -0.411069f, 0.881104f,
--4.60683f, 1.4697f, 0.335845f, -1.81905f, -30.1699f,
-5.55225f, 0.0019508f, -0.123576f, -0.0727332f, -0.0641597f,
--0.0534458f, -0.108166f, -0.0937368f, -0.0697883f, -0.0275475f,
--0.192309f, -0.110074f, 0.285375f, -0.405597f, 0.0926724f,
--0.287881f, -0.851193f, -0.099493f, -0.233764f, -1.2852f,
-1.13611f, 3.12168f, -0.0699f, -1.86216f, 2.65292f,
--7.31036f, 2.44776f, -0.00111802f, -0.0632786f, -0.0376296f,
--0.149851f, 0.142963f, 0.184368f, 0.123433f, 0.0756158f,
-0.117312f, 0.0933395f, 0.0692163f, 0.0842592f, 0.0704683f,
-0.0589963f, 0.0942205f, -0.448862f, 0.0262677f, 0.270352f,
--0.262317f, 0.172586f, 2.00227f, -0.159216f, 0.038422f,
-10.2073f, 4.15536f, -2.3407f, -0.0550265f, 0.00964792f,
--0.141336f, 0.0274501f, 0.0343921f, -0.0487428f, 0.0950172f,
--0.00775017f, -0.0372492f, -0.00548121f, -0.0663695f, 0.0960506f,
--0.200008f, -0.0412827f, 0.58728f, 0.0515787f, 0.337254f,
-0.855024f, 0.668371f, -0.114904f, -3.62962f, -0.467477f,
--0.215472f, 2.61537f, 0.406117f, -1.36373f, 0.0425394f,
-0.12208f, 0.0934502f, 0.123055f, 0.0340935f, -0.142466f,
-0.035037f, -0.0490666f, 0.0733208f, 0.0576672f, 0.123984f,
--0.0517194f, -0.253018f, 0.590565f, 0.145849f, 0.315185f,
-0.221534f, -0.149081f, 0.216161f, -0.349575f, 24.5664f,
--0.994196f, 0.614289f, -18.7905f, -2.83277f, -0.716801f,
--0.347201f, 0.479515f, -0.246027f, 0.0758683f, 0.137293f,
--0.17781f, 0.118751f, -0.00108329f, -0.237334f, 0.355732f,
--0.12991f, -0.0547627f, -0.318576f, -0.325524f, 0.180494f,
--0.0625604f, 0.141219f, 0.344064f, 0.37658f, -0.591772f,
-5.8427f, -0.38075f, 0.221894f, -1.41934f, -1.87943e+06f,
-1.34114f, 0.0283355f, -0.0447856f, -0.0211466f, -0.0256927f,
-0.0139618f, 0.0207934f, -0.0107666f, 0.0110969f, 0.0586069f,
--0.0253545f, -0.0328433f, 0.11872f, -0.216943f, 0.145748f,
-0.119808f, -0.0915211f, -0.120647f, -0.0787719f, -0.143644f,
--0.595116f, -1.152f, -1.25335f, -1.17092f, 4.34023f,
--975268.f, -1.37033f, -0.0401123f, 0.210602f, -0.136656f,
-0.135962f, -0.0523293f, 0.0444604f, 0.0143928f, 0.00412666f,
--0.0193003f, 0.218452f, -0.110204f, -2.02563f, 0.918238f,
--2.45362f, 1.19542f, -0.061362f, -1.92243f, 0.308111f,
-0.49764f, 0.912356f, 0.209272f, -2.34525f, 2.19326f,
--6.47121f, 1.69771f, -0.725123f, 0.0118929f, 0.0377944f,
-0.0554003f, 0.0226452f, -0.0704421f, -0.0300309f, 0.0122978f,
--0.0041782f, -0.0686612f, 0.0313115f, 0.039111f, 0.364111f,
--0.0945548f, 0.0229876f, -0.17414f, 0.329795f, 0.114714f,
-0.30022f, 0.106997f, 0.132355f, 5.79932f, 0.908058f,
--0.905324f, -3.3561f, 0.190647f, 0.184211f, -0.673648f,
-0.231807f, -0.0586222f, 0.230752f, -0.438277f, 0.245857f,
--0.17215f, 0.0876383f, -0.720512f, 0.162515f, 0.0170571f,
-0.101781f, 0.388477f, 1.32931f, 1.08548f, -0.936301f,
--2.36958f, -6.71988f, -3.44376f, 2.13818f, 14.2318f,
-4.91459f, -3.09052f, -9.69191f, -0.768234f, 1.79604f,
-0.0549653f, 0.163399f, 0.0797025f, 0.0343933f, -0.0555876f,
--0.00505673f, 0.0187258f, 0.0326628f, 0.0231486f, 0.15573f,
-0.0476223f, -0.254824f, 1.60155f, -0.801221f, 2.55496f,
-0.737629f, -1.36249f, -0.695463f, -2.44301f, -1.73188f,
-3.95279f, 1.89068f, 0.486087f, -11.3343f, 3.9416e+06f,
-
-/* output layer */
--0.381439f, 0.12115f, -0.906927f, 2.93878f, 1.6388f,
-0.882811f, 0.874344f, 1.21726f, -0.874545f, 0.321706f,
-0.785055f, 0.946558f, -0.575066f, -3.46553f, 0.884905f,
-0.0924047f, -9.90712f, 0.391338f, 0.160103f, -2.04954f,
-4.1455f, 0.0684029f, -0.144761f, -0.285282f, 0.379244f,
--1.1584f, -0.0277241f, -9.85f, -4.82386f, 3.71333f,
-3.87308f, 3.52558f};
-
-static const int topo[3] = {25, 15, 2};
-
-const MLP net = {
- 3,
- topo,
- weights
-};
diff --git a/thirdparty/opus/opus.c b/thirdparty/opus/opus.c
deleted file mode 100644
index f76f125cfa..0000000000
--- a/thirdparty/opus/opus.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation, Skype Limited
- Written by Jean-Marc Valin and Koen Vos */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus.h"
-#include "opus_private.h"
-
-#ifndef DISABLE_FLOAT_API
-OPUS_EXPORT void opus_pcm_soft_clip(float *_x, int N, int C, float *declip_mem)
-{
- int c;
- int i;
- float *x;
-
- if (C<1 || N<1 || !_x || !declip_mem) return;
-
- /* First thing: saturate everything to +/- 2 which is the highest level our
- non-linearity can handle. At the point where the signal reaches +/-2,
- the derivative will be zero anyway, so this doesn't introduce any
- discontinuity in the derivative. */
- for (i=0;i<N*C;i++)
- _x[i] = MAX16(-2.f, MIN16(2.f, _x[i]));
- for (c=0;c<C;c++)
- {
- float a;
- float x0;
- int curr;
-
- x = _x+c;
- a = declip_mem[c];
- /* Continue applying the non-linearity from the previous frame to avoid
- any discontinuity. */
- for (i=0;i<N;i++)
- {
- if (x[i*C]*a>=0)
- break;
- x[i*C] = x[i*C]+a*x[i*C]*x[i*C];
- }
-
- curr=0;
- x0 = x[0];
- while(1)
- {
- int start, end;
- float maxval;
- int special=0;
- int peak_pos;
- for (i=curr;i<N;i++)
- {
- if (x[i*C]>1 || x[i*C]<-1)
- break;
- }
- if (i==N)
- {
- a=0;
- break;
- }
- peak_pos = i;
- start=end=i;
- maxval=ABS16(x[i*C]);
- /* Look for first zero crossing before clipping */
- while (start>0 && x[i*C]*x[(start-1)*C]>=0)
- start--;
- /* Look for first zero crossing after clipping */
- while (end<N && x[i*C]*x[end*C]>=0)
- {
- /* Look for other peaks until the next zero-crossing. */
- if (ABS16(x[end*C])>maxval)
- {
- maxval = ABS16(x[end*C]);
- peak_pos = end;
- }
- end++;
- }
- /* Detect the special case where we clip before the first zero crossing */
- special = (start==0 && x[i*C]*x[0]>=0);
-
- /* Compute a such that maxval + a*maxval^2 = 1 */
- a=(maxval-1)/(maxval*maxval);
- /* Slightly boost "a" by 2^-22. This is just enough to ensure -ffast-math
- does not cause output values larger than +/-1, but small enough not
- to matter even for 24-bit output. */
- a += a*2.4e-7;
- if (x[i*C]>0)
- a = -a;
- /* Apply soft clipping */
- for (i=start;i<end;i++)
- x[i*C] = x[i*C]+a*x[i*C]*x[i*C];
-
- if (special && peak_pos>=2)
- {
- /* Add a linear ramp from the first sample to the signal peak.
- This avoids a discontinuity at the beginning of the frame. */
- float delta;
- float offset = x0-x[0];
- delta = offset / peak_pos;
- for (i=curr;i<peak_pos;i++)
- {
- offset -= delta;
- x[i*C] += offset;
- x[i*C] = MAX16(-1.f, MIN16(1.f, x[i*C]));
- }
- }
- curr = end;
- if (curr==N)
- break;
- }
- declip_mem[c] = a;
- }
-}
-#endif
-
-int encode_size(int size, unsigned char *data)
-{
- if (size < 252)
- {
- data[0] = size;
- return 1;
- } else {
- data[0] = 252+(size&0x3);
- data[1] = (size-(int)data[0])>>2;
- return 2;
- }
-}
-
-static int parse_size(const unsigned char *data, opus_int32 len, opus_int16 *size)
-{
- if (len<1)
- {
- *size = -1;
- return -1;
- } else if (data[0]<252)
- {
- *size = data[0];
- return 1;
- } else if (len<2)
- {
- *size = -1;
- return -1;
- } else {
- *size = 4*data[1] + data[0];
- return 2;
- }
-}
-
-int opus_packet_get_samples_per_frame(const unsigned char *data,
- opus_int32 Fs)
-{
- int audiosize;
- if (data[0]&0x80)
- {
- audiosize = ((data[0]>>3)&0x3);
- audiosize = (Fs<<audiosize)/400;
- } else if ((data[0]&0x60) == 0x60)
- {
- audiosize = (data[0]&0x08) ? Fs/50 : Fs/100;
- } else {
- audiosize = ((data[0]>>3)&0x3);
- if (audiosize == 3)
- audiosize = Fs*60/1000;
- else
- audiosize = (Fs<<audiosize)/100;
- }
- return audiosize;
-}
-
-int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
- int self_delimited, unsigned char *out_toc,
- const unsigned char *frames[48], opus_int16 size[48],
- int *payload_offset, opus_int32 *packet_offset)
-{
- int i, bytes;
- int count;
- int cbr;
- unsigned char ch, toc;
- int framesize;
- opus_int32 last_size;
- opus_int32 pad = 0;
- const unsigned char *data0 = data;
-
- if (size==NULL || len<0)
- return OPUS_BAD_ARG;
- if (len==0)
- return OPUS_INVALID_PACKET;
-
- framesize = opus_packet_get_samples_per_frame(data, 48000);
-
- cbr = 0;
- toc = *data++;
- len--;
- last_size = len;
- switch (toc&0x3)
- {
- /* One frame */
- case 0:
- count=1;
- break;
- /* Two CBR frames */
- case 1:
- count=2;
- cbr = 1;
- if (!self_delimited)
- {
- if (len&0x1)
- return OPUS_INVALID_PACKET;
- last_size = len/2;
- /* If last_size doesn't fit in size[0], we'll catch it later */
- size[0] = (opus_int16)last_size;
- }
- break;
- /* Two VBR frames */
- case 2:
- count = 2;
- bytes = parse_size(data, len, size);
- len -= bytes;
- if (size[0]<0 || size[0] > len)
- return OPUS_INVALID_PACKET;
- data += bytes;
- last_size = len-size[0];
- break;
- /* Multiple CBR/VBR frames (from 0 to 120 ms) */
- default: /*case 3:*/
- if (len<1)
- return OPUS_INVALID_PACKET;
- /* Number of frames encoded in bits 0 to 5 */
- ch = *data++;
- count = ch&0x3F;
- if (count <= 0 || framesize*count > 5760)
- return OPUS_INVALID_PACKET;
- len--;
- /* Padding flag is bit 6 */
- if (ch&0x40)
- {
- int p;
- do {
- int tmp;
- if (len<=0)
- return OPUS_INVALID_PACKET;
- p = *data++;
- len--;
- tmp = p==255 ? 254: p;
- len -= tmp;
- pad += tmp;
- } while (p==255);
- }
- if (len<0)
- return OPUS_INVALID_PACKET;
- /* VBR flag is bit 7 */
- cbr = !(ch&0x80);
- if (!cbr)
- {
- /* VBR case */
- last_size = len;
- for (i=0;i<count-1;i++)
- {
- bytes = parse_size(data, len, size+i);
- len -= bytes;
- if (size[i]<0 || size[i] > len)
- return OPUS_INVALID_PACKET;
- data += bytes;
- last_size -= bytes+size[i];
- }
- if (last_size<0)
- return OPUS_INVALID_PACKET;
- } else if (!self_delimited)
- {
- /* CBR case */
- last_size = len/count;
- if (last_size*count!=len)
- return OPUS_INVALID_PACKET;
- for (i=0;i<count-1;i++)
- size[i] = (opus_int16)last_size;
- }
- break;
- }
- /* Self-delimited framing has an extra size for the last frame. */
- if (self_delimited)
- {
- bytes = parse_size(data, len, size+count-1);
- len -= bytes;
- if (size[count-1]<0 || size[count-1] > len)
- return OPUS_INVALID_PACKET;
- data += bytes;
- /* For CBR packets, apply the size to all the frames. */
- if (cbr)
- {
- if (size[count-1]*count > len)
- return OPUS_INVALID_PACKET;
- for (i=0;i<count-1;i++)
- size[i] = size[count-1];
- } else if (bytes+size[count-1] > last_size)
- return OPUS_INVALID_PACKET;
- } else
- {
- /* Because it's not encoded explicitly, it's possible the size of the
- last packet (or all the packets, for the CBR case) is larger than
- 1275. Reject them here.*/
- if (last_size > 1275)
- return OPUS_INVALID_PACKET;
- size[count-1] = (opus_int16)last_size;
- }
-
- if (payload_offset)
- *payload_offset = (int)(data-data0);
-
- for (i=0;i<count;i++)
- {
- if (frames)
- frames[i] = data;
- data += size[i];
- }
-
- if (packet_offset)
- *packet_offset = pad+(opus_int32)(data-data0);
-
- if (out_toc)
- *out_toc = toc;
-
- return count;
-}
-
-int opus_packet_parse(const unsigned char *data, opus_int32 len,
- unsigned char *out_toc, const unsigned char *frames[48],
- opus_int16 size[48], int *payload_offset)
-{
- return opus_packet_parse_impl(data, len, 0, out_toc,
- frames, size, payload_offset, NULL);
-}
-
diff --git a/thirdparty/opus/opus/opus.h b/thirdparty/opus/opus/opus.h
deleted file mode 100644
index 5be73ddf4e..0000000000
--- a/thirdparty/opus/opus/opus.h
+++ /dev/null
@@ -1,981 +0,0 @@
-/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited
- Written by Jean-Marc Valin and Koen Vos */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
- * @file opus.h
- * @brief Opus reference implementation API
- */
-
-#ifndef OPUS_H
-#define OPUS_H
-
-#include "opus_types.h"
-#include "opus_defines.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @mainpage Opus
- *
- * The Opus codec is designed for interactive speech and audio transmission over the Internet.
- * It is designed by the IETF Codec Working Group and incorporates technology from
- * Skype's SILK codec and Xiph.Org's CELT codec.
- *
- * The Opus codec is designed to handle a wide range of interactive audio applications,
- * including Voice over IP, videoconferencing, in-game chat, and even remote live music
- * performances. It can scale from low bit-rate narrowband speech to very high quality
- * stereo music. Its main features are:
-
- * @li Sampling rates from 8 to 48 kHz
- * @li Bit-rates from 6 kb/s to 510 kb/s
- * @li Support for both constant bit-rate (CBR) and variable bit-rate (VBR)
- * @li Audio bandwidth from narrowband to full-band
- * @li Support for speech and music
- * @li Support for mono and stereo
- * @li Support for multichannel (up to 255 channels)
- * @li Frame sizes from 2.5 ms to 60 ms
- * @li Good loss robustness and packet loss concealment (PLC)
- * @li Floating point and fixed-point implementation
- *
- * Documentation sections:
- * @li @ref opus_encoder
- * @li @ref opus_decoder
- * @li @ref opus_repacketizer
- * @li @ref opus_multistream
- * @li @ref opus_libinfo
- * @li @ref opus_custom
- */
-
-/** @defgroup opus_encoder Opus Encoder
- * @{
- *
- * @brief This page describes the process and functions used to encode Opus.
- *
- * Since Opus is a stateful codec, the encoding process starts with creating an encoder
- * state. This can be done with:
- *
- * @code
- * int error;
- * OpusEncoder *enc;
- * enc = opus_encoder_create(Fs, channels, application, &error);
- * @endcode
- *
- * From this point, @c enc can be used for encoding an audio stream. An encoder state
- * @b must @b not be used for more than one stream at the same time. Similarly, the encoder
- * state @b must @b not be re-initialized for each frame.
- *
- * While opus_encoder_create() allocates memory for the state, it's also possible
- * to initialize pre-allocated memory:
- *
- * @code
- * int size;
- * int error;
- * OpusEncoder *enc;
- * size = opus_encoder_get_size(channels);
- * enc = malloc(size);
- * error = opus_encoder_init(enc, Fs, channels, application);
- * @endcode
- *
- * where opus_encoder_get_size() returns the required size for the encoder state. Note that
- * future versions of this code may change the size, so no assuptions should be made about it.
- *
- * The encoder state is always continuous in memory and only a shallow copy is sufficient
- * to copy it (e.g. memcpy())
- *
- * It is possible to change some of the encoder's settings using the opus_encoder_ctl()
- * interface. All these settings already default to the recommended value, so they should
- * only be changed when necessary. The most common settings one may want to change are:
- *
- * @code
- * opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate));
- * opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(complexity));
- * opus_encoder_ctl(enc, OPUS_SET_SIGNAL(signal_type));
- * @endcode
- *
- * where
- *
- * @arg bitrate is in bits per second (b/s)
- * @arg complexity is a value from 1 to 10, where 1 is the lowest complexity and 10 is the highest
- * @arg signal_type is either OPUS_AUTO (default), OPUS_SIGNAL_VOICE, or OPUS_SIGNAL_MUSIC
- *
- * See @ref opus_encoderctls and @ref opus_genericctls for a complete list of parameters that can be set or queried. Most parameters can be set or changed at any time during a stream.
- *
- * To encode a frame, opus_encode() or opus_encode_float() must be called with exactly one frame (2.5, 5, 10, 20, 40 or 60 ms) of audio data:
- * @code
- * len = opus_encode(enc, audio_frame, frame_size, packet, max_packet);
- * @endcode
- *
- * where
- * <ul>
- * <li>audio_frame is the audio data in opus_int16 (or float for opus_encode_float())</li>
- * <li>frame_size is the duration of the frame in samples (per channel)</li>
- * <li>packet is the byte array to which the compressed data is written</li>
- * <li>max_packet is the maximum number of bytes that can be written in the packet (4000 bytes is recommended).
- * Do not use max_packet to control VBR target bitrate, instead use the #OPUS_SET_BITRATE CTL.</li>
- * </ul>
- *
- * opus_encode() and opus_encode_float() return the number of bytes actually written to the packet.
- * The return value <b>can be negative</b>, which indicates that an error has occurred. If the return value
- * is 2 bytes or less, then the packet does not need to be transmitted (DTX).
- *
- * Once the encoder state if no longer needed, it can be destroyed with
- *
- * @code
- * opus_encoder_destroy(enc);
- * @endcode
- *
- * If the encoder was created with opus_encoder_init() rather than opus_encoder_create(),
- * then no action is required aside from potentially freeing the memory that was manually
- * allocated for it (calling free(enc) for the example above)
- *
- */
-
-/** Opus encoder state.
- * This contains the complete state of an Opus encoder.
- * It is position independent and can be freely copied.
- * @see opus_encoder_create,opus_encoder_init
- */
-typedef struct OpusEncoder OpusEncoder;
-
-/** Gets the size of an <code>OpusEncoder</code> structure.
- * @param[in] channels <tt>int</tt>: Number of channels.
- * This must be 1 or 2.
- * @returns The size in bytes.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_encoder_get_size(int channels);
-
-/**
- */
-
-/** Allocates and initializes an encoder state.
- * There are three coding modes:
- *
- * @ref OPUS_APPLICATION_VOIP gives best quality at a given bitrate for voice
- * signals. It enhances the input signal by high-pass filtering and
- * emphasizing formants and harmonics. Optionally it includes in-band
- * forward error correction to protect against packet loss. Use this
- * mode for typical VoIP applications. Because of the enhancement,
- * even at high bitrates the output may sound different from the input.
- *
- * @ref OPUS_APPLICATION_AUDIO gives best quality at a given bitrate for most
- * non-voice signals like music. Use this mode for music and mixed
- * (music/voice) content, broadcast, and applications requiring less
- * than 15 ms of coding delay.
- *
- * @ref OPUS_APPLICATION_RESTRICTED_LOWDELAY configures low-delay mode that
- * disables the speech-optimized mode in exchange for slightly reduced delay.
- * This mode can only be set on an newly initialized or freshly reset encoder
- * because it changes the codec delay.
- *
- * This is useful when the caller knows that the speech-optimized modes will not be needed (use with caution).
- * @param [in] Fs <tt>opus_int32</tt>: Sampling rate of input signal (Hz)
- * This must be one of 8000, 12000, 16000,
- * 24000, or 48000.
- * @param [in] channels <tt>int</tt>: Number of channels (1 or 2) in input signal
- * @param [in] application <tt>int</tt>: Coding mode (@ref OPUS_APPLICATION_VOIP/@ref OPUS_APPLICATION_AUDIO/@ref OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- * @param [out] error <tt>int*</tt>: @ref opus_errorcodes
- * @note Regardless of the sampling rate and number channels selected, the Opus encoder
- * can switch to a lower audio bandwidth or number of channels if the bitrate
- * selected is too low. This also means that it is safe to always use 48 kHz stereo input
- * and let the encoder optimize the encoding.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusEncoder *opus_encoder_create(
- opus_int32 Fs,
- int channels,
- int application,
- int *error
-);
-
-/** Initializes a previously allocated encoder state
- * The memory pointed to by st must be at least the size returned by opus_encoder_get_size().
- * This is intended for applications which use their own allocator instead of malloc.
- * @see opus_encoder_create(),opus_encoder_get_size()
- * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL.
- * @param [in] st <tt>OpusEncoder*</tt>: Encoder state
- * @param [in] Fs <tt>opus_int32</tt>: Sampling rate of input signal (Hz)
- * This must be one of 8000, 12000, 16000,
- * 24000, or 48000.
- * @param [in] channels <tt>int</tt>: Number of channels (1 or 2) in input signal
- * @param [in] application <tt>int</tt>: Coding mode (OPUS_APPLICATION_VOIP/OPUS_APPLICATION_AUDIO/OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- * @retval #OPUS_OK Success or @ref opus_errorcodes
- */
-OPUS_EXPORT int opus_encoder_init(
- OpusEncoder *st,
- opus_int32 Fs,
- int channels,
- int application
-) OPUS_ARG_NONNULL(1);
-
-/** Encodes an Opus frame.
- * @param [in] st <tt>OpusEncoder*</tt>: Encoder state
- * @param [in] pcm <tt>opus_int16*</tt>: Input signal (interleaved if 2 channels). length is frame_size*channels*sizeof(opus_int16)
- * @param [in] frame_size <tt>int</tt>: Number of samples per channel in the
- * input signal.
- * This must be an Opus frame size for
- * the encoder's sampling rate.
- * For example, at 48 kHz the permitted
- * values are 120, 240, 480, 960, 1920,
- * and 2880.
- * Passing in a duration of less than
- * 10 ms (480 samples at 48 kHz) will
- * prevent the encoder from using the LPC
- * or hybrid modes.
- * @param [out] data <tt>unsigned char*</tt>: Output payload.
- * This must contain storage for at
- * least \a max_data_bytes.
- * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated
- * memory for the output
- * payload. This may be
- * used to impose an upper limit on
- * the instant bitrate, but should
- * not be used as the only bitrate
- * control. Use #OPUS_SET_BITRATE to
- * control the bitrate.
- * @returns The length of the encoded packet (in bytes) on success or a
- * negative error code (see @ref opus_errorcodes) on failure.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode(
- OpusEncoder *st,
- const opus_int16 *pcm,
- int frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
-
-/** Encodes an Opus frame from floating point input.
- * @param [in] st <tt>OpusEncoder*</tt>: Encoder state
- * @param [in] pcm <tt>float*</tt>: Input in float format (interleaved if 2 channels), with a normal range of +/-1.0.
- * Samples with a range beyond +/-1.0 are supported but will
- * be clipped by decoders using the integer API and should
- * only be used if it is known that the far end supports
- * extended dynamic range.
- * length is frame_size*channels*sizeof(float)
- * @param [in] frame_size <tt>int</tt>: Number of samples per channel in the
- * input signal.
- * This must be an Opus frame size for
- * the encoder's sampling rate.
- * For example, at 48 kHz the permitted
- * values are 120, 240, 480, 960, 1920,
- * and 2880.
- * Passing in a duration of less than
- * 10 ms (480 samples at 48 kHz) will
- * prevent the encoder from using the LPC
- * or hybrid modes.
- * @param [out] data <tt>unsigned char*</tt>: Output payload.
- * This must contain storage for at
- * least \a max_data_bytes.
- * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated
- * memory for the output
- * payload. This may be
- * used to impose an upper limit on
- * the instant bitrate, but should
- * not be used as the only bitrate
- * control. Use #OPUS_SET_BITRATE to
- * control the bitrate.
- * @returns The length of the encoded packet (in bytes) on success or a
- * negative error code (see @ref opus_errorcodes) on failure.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode_float(
- OpusEncoder *st,
- const float *pcm,
- int frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
-
-/** Frees an <code>OpusEncoder</code> allocated by opus_encoder_create().
- * @param[in] st <tt>OpusEncoder*</tt>: State to be freed.
- */
-OPUS_EXPORT void opus_encoder_destroy(OpusEncoder *st);
-
-/** Perform a CTL function on an Opus encoder.
- *
- * Generally the request and subsequent arguments are generated
- * by a convenience macro.
- * @param st <tt>OpusEncoder*</tt>: Encoder state.
- * @param request This and all remaining parameters should be replaced by one
- * of the convenience macros in @ref opus_genericctls or
- * @ref opus_encoderctls.
- * @see opus_genericctls
- * @see opus_encoderctls
- */
-OPUS_EXPORT int opus_encoder_ctl(OpusEncoder *st, int request, ...) OPUS_ARG_NONNULL(1);
-/**@}*/
-
-/** @defgroup opus_decoder Opus Decoder
- * @{
- *
- * @brief This page describes the process and functions used to decode Opus.
- *
- * The decoding process also starts with creating a decoder
- * state. This can be done with:
- * @code
- * int error;
- * OpusDecoder *dec;
- * dec = opus_decoder_create(Fs, channels, &error);
- * @endcode
- * where
- * @li Fs is the sampling rate and must be 8000, 12000, 16000, 24000, or 48000
- * @li channels is the number of channels (1 or 2)
- * @li error will hold the error code in case of failure (or #OPUS_OK on success)
- * @li the return value is a newly created decoder state to be used for decoding
- *
- * While opus_decoder_create() allocates memory for the state, it's also possible
- * to initialize pre-allocated memory:
- * @code
- * int size;
- * int error;
- * OpusDecoder *dec;
- * size = opus_decoder_get_size(channels);
- * dec = malloc(size);
- * error = opus_decoder_init(dec, Fs, channels);
- * @endcode
- * where opus_decoder_get_size() returns the required size for the decoder state. Note that
- * future versions of this code may change the size, so no assuptions should be made about it.
- *
- * The decoder state is always continuous in memory and only a shallow copy is sufficient
- * to copy it (e.g. memcpy())
- *
- * To decode a frame, opus_decode() or opus_decode_float() must be called with a packet of compressed audio data:
- * @code
- * frame_size = opus_decode(dec, packet, len, decoded, max_size, 0);
- * @endcode
- * where
- *
- * @li packet is the byte array containing the compressed data
- * @li len is the exact number of bytes contained in the packet
- * @li decoded is the decoded audio data in opus_int16 (or float for opus_decode_float())
- * @li max_size is the max duration of the frame in samples (per channel) that can fit into the decoded_frame array
- *
- * opus_decode() and opus_decode_float() return the number of samples (per channel) decoded from the packet.
- * If that value is negative, then an error has occurred. This can occur if the packet is corrupted or if the audio
- * buffer is too small to hold the decoded audio.
- *
- * Opus is a stateful codec with overlapping blocks and as a result Opus
- * packets are not coded independently of each other. Packets must be
- * passed into the decoder serially and in the correct order for a correct
- * decode. Lost packets can be replaced with loss concealment by calling
- * the decoder with a null pointer and zero length for the missing packet.
- *
- * A single codec state may only be accessed from a single thread at
- * a time and any required locking must be performed by the caller. Separate
- * streams must be decoded with separate decoder states and can be decoded
- * in parallel unless the library was compiled with NONTHREADSAFE_PSEUDOSTACK
- * defined.
- *
- */
-
-/** Opus decoder state.
- * This contains the complete state of an Opus decoder.
- * It is position independent and can be freely copied.
- * @see opus_decoder_create,opus_decoder_init
- */
-typedef struct OpusDecoder OpusDecoder;
-
-/** Gets the size of an <code>OpusDecoder</code> structure.
- * @param [in] channels <tt>int</tt>: Number of channels.
- * This must be 1 or 2.
- * @returns The size in bytes.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_size(int channels);
-
-/** Allocates and initializes a decoder state.
- * @param [in] Fs <tt>opus_int32</tt>: Sample rate to decode at (Hz).
- * This must be one of 8000, 12000, 16000,
- * 24000, or 48000.
- * @param [in] channels <tt>int</tt>: Number of channels (1 or 2) to decode
- * @param [out] error <tt>int*</tt>: #OPUS_OK Success or @ref opus_errorcodes
- *
- * Internally Opus stores data at 48000 Hz, so that should be the default
- * value for Fs. However, the decoder can efficiently decode to buffers
- * at 8, 12, 16, and 24 kHz so if for some reason the caller cannot use
- * data at the full sample rate, or knows the compressed data doesn't
- * use the full frequency range, it can request decoding at a reduced
- * rate. Likewise, the decoder is capable of filling in either mono or
- * interleaved stereo pcm buffers, at the caller's request.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusDecoder *opus_decoder_create(
- opus_int32 Fs,
- int channels,
- int *error
-);
-
-/** Initializes a previously allocated decoder state.
- * The state must be at least the size returned by opus_decoder_get_size().
- * This is intended for applications which use their own allocator instead of malloc. @see opus_decoder_create,opus_decoder_get_size
- * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL.
- * @param [in] st <tt>OpusDecoder*</tt>: Decoder state.
- * @param [in] Fs <tt>opus_int32</tt>: Sampling rate to decode to (Hz).
- * This must be one of 8000, 12000, 16000,
- * 24000, or 48000.
- * @param [in] channels <tt>int</tt>: Number of channels (1 or 2) to decode
- * @retval #OPUS_OK Success or @ref opus_errorcodes
- */
-OPUS_EXPORT int opus_decoder_init(
- OpusDecoder *st,
- opus_int32 Fs,
- int channels
-) OPUS_ARG_NONNULL(1);
-
-/** Decode an Opus packet.
- * @param [in] st <tt>OpusDecoder*</tt>: Decoder state
- * @param [in] data <tt>char*</tt>: Input payload. Use a NULL pointer to indicate packet loss
- * @param [in] len <tt>opus_int32</tt>: Number of bytes in payload*
- * @param [out] pcm <tt>opus_int16*</tt>: Output signal (interleaved if 2 channels). length
- * is frame_size*channels*sizeof(opus_int16)
- * @param [in] frame_size Number of samples per channel of available space in \a pcm.
- * If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will
- * not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1),
- * then frame_size needs to be exactly the duration of audio that is missing, otherwise the
- * decoder will not be in the optimal state to decode the next incoming packet. For the PLC and
- * FEC cases, frame_size <b>must</b> be a multiple of 2.5 ms.
- * @param [in] decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band forward error correction data be
- * decoded. If no such data is available, the frame is decoded as if it were lost.
- * @returns Number of decoded samples or @ref opus_errorcodes
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode(
- OpusDecoder *st,
- const unsigned char *data,
- opus_int32 len,
- opus_int16 *pcm,
- int frame_size,
- int decode_fec
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
-
-/** Decode an Opus packet with floating point output.
- * @param [in] st <tt>OpusDecoder*</tt>: Decoder state
- * @param [in] data <tt>char*</tt>: Input payload. Use a NULL pointer to indicate packet loss
- * @param [in] len <tt>opus_int32</tt>: Number of bytes in payload
- * @param [out] pcm <tt>float*</tt>: Output signal (interleaved if 2 channels). length
- * is frame_size*channels*sizeof(float)
- * @param [in] frame_size Number of samples per channel of available space in \a pcm.
- * If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will
- * not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1),
- * then frame_size needs to be exactly the duration of audio that is missing, otherwise the
- * decoder will not be in the optimal state to decode the next incoming packet. For the PLC and
- * FEC cases, frame_size <b>must</b> be a multiple of 2.5 ms.
- * @param [in] decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band forward error correction data be
- * decoded. If no such data is available the frame is decoded as if it were lost.
- * @returns Number of decoded samples or @ref opus_errorcodes
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode_float(
- OpusDecoder *st,
- const unsigned char *data,
- opus_int32 len,
- float *pcm,
- int frame_size,
- int decode_fec
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
-
-/** Perform a CTL function on an Opus decoder.
- *
- * Generally the request and subsequent arguments are generated
- * by a convenience macro.
- * @param st <tt>OpusDecoder*</tt>: Decoder state.
- * @param request This and all remaining parameters should be replaced by one
- * of the convenience macros in @ref opus_genericctls or
- * @ref opus_decoderctls.
- * @see opus_genericctls
- * @see opus_decoderctls
- */
-OPUS_EXPORT int opus_decoder_ctl(OpusDecoder *st, int request, ...) OPUS_ARG_NONNULL(1);
-
-/** Frees an <code>OpusDecoder</code> allocated by opus_decoder_create().
- * @param[in] st <tt>OpusDecoder*</tt>: State to be freed.
- */
-OPUS_EXPORT void opus_decoder_destroy(OpusDecoder *st);
-
-/** Parse an opus packet into one or more frames.
- * Opus_decode will perform this operation internally so most applications do
- * not need to use this function.
- * This function does not copy the frames, the returned pointers are pointers into
- * the input packet.
- * @param [in] data <tt>char*</tt>: Opus packet to be parsed
- * @param [in] len <tt>opus_int32</tt>: size of data
- * @param [out] out_toc <tt>char*</tt>: TOC pointer
- * @param [out] frames <tt>char*[48]</tt> encapsulated frames
- * @param [out] size <tt>opus_int16[48]</tt> sizes of the encapsulated frames
- * @param [out] payload_offset <tt>int*</tt>: returns the position of the payload within the packet (in bytes)
- * @returns number of frames
- */
-OPUS_EXPORT int opus_packet_parse(
- const unsigned char *data,
- opus_int32 len,
- unsigned char *out_toc,
- const unsigned char *frames[48],
- opus_int16 size[48],
- int *payload_offset
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
-
-/** Gets the bandwidth of an Opus packet.
- * @param [in] data <tt>char*</tt>: Opus packet
- * @retval OPUS_BANDWIDTH_NARROWBAND Narrowband (4kHz bandpass)
- * @retval OPUS_BANDWIDTH_MEDIUMBAND Mediumband (6kHz bandpass)
- * @retval OPUS_BANDWIDTH_WIDEBAND Wideband (8kHz bandpass)
- * @retval OPUS_BANDWIDTH_SUPERWIDEBAND Superwideband (12kHz bandpass)
- * @retval OPUS_BANDWIDTH_FULLBAND Fullband (20kHz bandpass)
- * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_bandwidth(const unsigned char *data) OPUS_ARG_NONNULL(1);
-
-/** Gets the number of samples per frame from an Opus packet.
- * @param [in] data <tt>char*</tt>: Opus packet.
- * This must contain at least one byte of
- * data.
- * @param [in] Fs <tt>opus_int32</tt>: Sampling rate in Hz.
- * This must be a multiple of 400, or
- * inaccurate results will be returned.
- * @returns Number of samples per frame.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_samples_per_frame(const unsigned char *data, opus_int32 Fs) OPUS_ARG_NONNULL(1);
-
-/** Gets the number of channels from an Opus packet.
- * @param [in] data <tt>char*</tt>: Opus packet
- * @returns Number of channels
- * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_channels(const unsigned char *data) OPUS_ARG_NONNULL(1);
-
-/** Gets the number of frames in an Opus packet.
- * @param [in] packet <tt>char*</tt>: Opus packet
- * @param [in] len <tt>opus_int32</tt>: Length of packet
- * @returns Number of frames
- * @retval OPUS_BAD_ARG Insufficient data was passed to the function
- * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_frames(const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1);
-
-/** Gets the number of samples of an Opus packet.
- * @param [in] packet <tt>char*</tt>: Opus packet
- * @param [in] len <tt>opus_int32</tt>: Length of packet
- * @param [in] Fs <tt>opus_int32</tt>: Sampling rate in Hz.
- * This must be a multiple of 400, or
- * inaccurate results will be returned.
- * @returns Number of samples
- * @retval OPUS_BAD_ARG Insufficient data was passed to the function
- * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_samples(const unsigned char packet[], opus_int32 len, opus_int32 Fs) OPUS_ARG_NONNULL(1);
-
-/** Gets the number of samples of an Opus packet.
- * @param [in] dec <tt>OpusDecoder*</tt>: Decoder state
- * @param [in] packet <tt>char*</tt>: Opus packet
- * @param [in] len <tt>opus_int32</tt>: Length of packet
- * @returns Number of samples
- * @retval OPUS_BAD_ARG Insufficient data was passed to the function
- * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_nb_samples(const OpusDecoder *dec, const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2);
-
-/** Applies soft-clipping to bring a float signal within the [-1,1] range. If
- * the signal is already in that range, nothing is done. If there are values
- * outside of [-1,1], then the signal is clipped as smoothly as possible to
- * both fit in the range and avoid creating excessive distortion in the
- * process.
- * @param [in,out] pcm <tt>float*</tt>: Input PCM and modified PCM
- * @param [in] frame_size <tt>int</tt> Number of samples per channel to process
- * @param [in] channels <tt>int</tt>: Number of channels
- * @param [in,out] softclip_mem <tt>float*</tt>: State memory for the soft clipping process (one float per channel, initialized to zero)
- */
-OPUS_EXPORT void opus_pcm_soft_clip(float *pcm, int frame_size, int channels, float *softclip_mem);
-
-
-/**@}*/
-
-/** @defgroup opus_repacketizer Repacketizer
- * @{
- *
- * The repacketizer can be used to merge multiple Opus packets into a single
- * packet or alternatively to split Opus packets that have previously been
- * merged. Splitting valid Opus packets is always guaranteed to succeed,
- * whereas merging valid packets only succeeds if all frames have the same
- * mode, bandwidth, and frame size, and when the total duration of the merged
- * packet is no more than 120 ms. The 120 ms limit comes from the
- * specification and limits decoder memory requirements at a point where
- * framing overhead becomes negligible.
- *
- * The repacketizer currently only operates on elementary Opus
- * streams. It will not manipualte multistream packets successfully, except in
- * the degenerate case where they consist of data from a single stream.
- *
- * The repacketizing process starts with creating a repacketizer state, either
- * by calling opus_repacketizer_create() or by allocating the memory yourself,
- * e.g.,
- * @code
- * OpusRepacketizer *rp;
- * rp = (OpusRepacketizer*)malloc(opus_repacketizer_get_size());
- * if (rp != NULL)
- * opus_repacketizer_init(rp);
- * @endcode
- *
- * Then the application should submit packets with opus_repacketizer_cat(),
- * extract new packets with opus_repacketizer_out() or
- * opus_repacketizer_out_range(), and then reset the state for the next set of
- * input packets via opus_repacketizer_init().
- *
- * For example, to split a sequence of packets into individual frames:
- * @code
- * unsigned char *data;
- * int len;
- * while (get_next_packet(&data, &len))
- * {
- * unsigned char out[1276];
- * opus_int32 out_len;
- * int nb_frames;
- * int err;
- * int i;
- * err = opus_repacketizer_cat(rp, data, len);
- * if (err != OPUS_OK)
- * {
- * release_packet(data);
- * return err;
- * }
- * nb_frames = opus_repacketizer_get_nb_frames(rp);
- * for (i = 0; i < nb_frames; i++)
- * {
- * out_len = opus_repacketizer_out_range(rp, i, i+1, out, sizeof(out));
- * if (out_len < 0)
- * {
- * release_packet(data);
- * return (int)out_len;
- * }
- * output_next_packet(out, out_len);
- * }
- * opus_repacketizer_init(rp);
- * release_packet(data);
- * }
- * @endcode
- *
- * Alternatively, to combine a sequence of frames into packets that each
- * contain up to <code>TARGET_DURATION_MS</code> milliseconds of data:
- * @code
- * // The maximum number of packets with duration TARGET_DURATION_MS occurs
- * // when the frame size is 2.5 ms, for a total of (TARGET_DURATION_MS*2/5)
- * // packets.
- * unsigned char *data[(TARGET_DURATION_MS*2/5)+1];
- * opus_int32 len[(TARGET_DURATION_MS*2/5)+1];
- * int nb_packets;
- * unsigned char out[1277*(TARGET_DURATION_MS*2/2)];
- * opus_int32 out_len;
- * int prev_toc;
- * nb_packets = 0;
- * while (get_next_packet(data+nb_packets, len+nb_packets))
- * {
- * int nb_frames;
- * int err;
- * nb_frames = opus_packet_get_nb_frames(data[nb_packets], len[nb_packets]);
- * if (nb_frames < 1)
- * {
- * release_packets(data, nb_packets+1);
- * return nb_frames;
- * }
- * nb_frames += opus_repacketizer_get_nb_frames(rp);
- * // If adding the next packet would exceed our target, or it has an
- * // incompatible TOC sequence, output the packets we already have before
- * // submitting it.
- * // N.B., The nb_packets > 0 check ensures we've submitted at least one
- * // packet since the last call to opus_repacketizer_init(). Otherwise a
- * // single packet longer than TARGET_DURATION_MS would cause us to try to
- * // output an (invalid) empty packet. It also ensures that prev_toc has
- * // been set to a valid value. Additionally, len[nb_packets] > 0 is
- * // guaranteed by the call to opus_packet_get_nb_frames() above, so the
- * // reference to data[nb_packets][0] should be valid.
- * if (nb_packets > 0 && (
- * ((prev_toc & 0xFC) != (data[nb_packets][0] & 0xFC)) ||
- * opus_packet_get_samples_per_frame(data[nb_packets], 48000)*nb_frames >
- * TARGET_DURATION_MS*48))
- * {
- * out_len = opus_repacketizer_out(rp, out, sizeof(out));
- * if (out_len < 0)
- * {
- * release_packets(data, nb_packets+1);
- * return (int)out_len;
- * }
- * output_next_packet(out, out_len);
- * opus_repacketizer_init(rp);
- * release_packets(data, nb_packets);
- * data[0] = data[nb_packets];
- * len[0] = len[nb_packets];
- * nb_packets = 0;
- * }
- * err = opus_repacketizer_cat(rp, data[nb_packets], len[nb_packets]);
- * if (err != OPUS_OK)
- * {
- * release_packets(data, nb_packets+1);
- * return err;
- * }
- * prev_toc = data[nb_packets][0];
- * nb_packets++;
- * }
- * // Output the final, partial packet.
- * if (nb_packets > 0)
- * {
- * out_len = opus_repacketizer_out(rp, out, sizeof(out));
- * release_packets(data, nb_packets);
- * if (out_len < 0)
- * return (int)out_len;
- * output_next_packet(out, out_len);
- * }
- * @endcode
- *
- * An alternate way of merging packets is to simply call opus_repacketizer_cat()
- * unconditionally until it fails. At that point, the merged packet can be
- * obtained with opus_repacketizer_out() and the input packet for which
- * opus_repacketizer_cat() needs to be re-added to a newly reinitialized
- * repacketizer state.
- */
-
-typedef struct OpusRepacketizer OpusRepacketizer;
-
-/** Gets the size of an <code>OpusRepacketizer</code> structure.
- * @returns The size in bytes.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_size(void);
-
-/** (Re)initializes a previously allocated repacketizer state.
- * The state must be at least the size returned by opus_repacketizer_get_size().
- * This can be used for applications which use their own allocator instead of
- * malloc().
- * It must also be called to reset the queue of packets waiting to be
- * repacketized, which is necessary if the maximum packet duration of 120 ms
- * is reached or if you wish to submit packets with a different Opus
- * configuration (coding mode, audio bandwidth, frame size, or channel count).
- * Failure to do so will prevent a new packet from being added with
- * opus_repacketizer_cat().
- * @see opus_repacketizer_create
- * @see opus_repacketizer_get_size
- * @see opus_repacketizer_cat
- * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state to
- * (re)initialize.
- * @returns A pointer to the same repacketizer state that was passed in.
- */
-OPUS_EXPORT OpusRepacketizer *opus_repacketizer_init(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1);
-
-/** Allocates memory and initializes the new repacketizer with
- * opus_repacketizer_init().
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusRepacketizer *opus_repacketizer_create(void);
-
-/** Frees an <code>OpusRepacketizer</code> allocated by
- * opus_repacketizer_create().
- * @param[in] rp <tt>OpusRepacketizer*</tt>: State to be freed.
- */
-OPUS_EXPORT void opus_repacketizer_destroy(OpusRepacketizer *rp);
-
-/** Add a packet to the current repacketizer state.
- * This packet must match the configuration of any packets already submitted
- * for repacketization since the last call to opus_repacketizer_init().
- * This means that it must have the same coding mode, audio bandwidth, frame
- * size, and channel count.
- * This can be checked in advance by examining the top 6 bits of the first
- * byte of the packet, and ensuring they match the top 6 bits of the first
- * byte of any previously submitted packet.
- * The total duration of audio in the repacketizer state also must not exceed
- * 120 ms, the maximum duration of a single packet, after adding this packet.
- *
- * The contents of the current repacketizer state can be extracted into new
- * packets using opus_repacketizer_out() or opus_repacketizer_out_range().
- *
- * In order to add a packet with a different configuration or to add more
- * audio beyond 120 ms, you must clear the repacketizer state by calling
- * opus_repacketizer_init().
- * If a packet is too large to add to the current repacketizer state, no part
- * of it is added, even if it contains multiple frames, some of which might
- * fit.
- * If you wish to be able to add parts of such packets, you should first use
- * another repacketizer to split the packet into pieces and add them
- * individually.
- * @see opus_repacketizer_out_range
- * @see opus_repacketizer_out
- * @see opus_repacketizer_init
- * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state to which to
- * add the packet.
- * @param[in] data <tt>const unsigned char*</tt>: The packet data.
- * The application must ensure
- * this pointer remains valid
- * until the next call to
- * opus_repacketizer_init() or
- * opus_repacketizer_destroy().
- * @param len <tt>opus_int32</tt>: The number of bytes in the packet data.
- * @returns An error code indicating whether or not the operation succeeded.
- * @retval #OPUS_OK The packet's contents have been added to the repacketizer
- * state.
- * @retval #OPUS_INVALID_PACKET The packet did not have a valid TOC sequence,
- * the packet's TOC sequence was not compatible
- * with previously submitted packets (because
- * the coding mode, audio bandwidth, frame size,
- * or channel count did not match), or adding
- * this packet would increase the total amount of
- * audio stored in the repacketizer state to more
- * than 120 ms.
- */
-OPUS_EXPORT int opus_repacketizer_cat(OpusRepacketizer *rp, const unsigned char *data, opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2);
-
-
-/** Construct a new packet from data previously submitted to the repacketizer
- * state via opus_repacketizer_cat().
- * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state from which to
- * construct the new packet.
- * @param begin <tt>int</tt>: The index of the first frame in the current
- * repacketizer state to include in the output.
- * @param end <tt>int</tt>: One past the index of the last frame in the
- * current repacketizer state to include in the
- * output.
- * @param[out] data <tt>const unsigned char*</tt>: The buffer in which to
- * store the output packet.
- * @param maxlen <tt>opus_int32</tt>: The maximum number of bytes to store in
- * the output buffer. In order to guarantee
- * success, this should be at least
- * <code>1276</code> for a single frame,
- * or for multiple frames,
- * <code>1277*(end-begin)</code>.
- * However, <code>1*(end-begin)</code> plus
- * the size of all packet data submitted to
- * the repacketizer since the last call to
- * opus_repacketizer_init() or
- * opus_repacketizer_create() is also
- * sufficient, and possibly much smaller.
- * @returns The total size of the output packet on success, or an error code
- * on failure.
- * @retval #OPUS_BAD_ARG <code>[begin,end)</code> was an invalid range of
- * frames (begin < 0, begin >= end, or end >
- * opus_repacketizer_get_nb_frames()).
- * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the
- * complete output packet.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out_range(OpusRepacketizer *rp, int begin, int end, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
-
-/** Return the total number of frames contained in packet data submitted to
- * the repacketizer state so far via opus_repacketizer_cat() since the last
- * call to opus_repacketizer_init() or opus_repacketizer_create().
- * This defines the valid range of packets that can be extracted with
- * opus_repacketizer_out_range() or opus_repacketizer_out().
- * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state containing the
- * frames.
- * @returns The total number of frames contained in the packet data submitted
- * to the repacketizer state.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_nb_frames(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1);
-
-/** Construct a new packet from data previously submitted to the repacketizer
- * state via opus_repacketizer_cat().
- * This is a convenience routine that returns all the data submitted so far
- * in a single packet.
- * It is equivalent to calling
- * @code
- * opus_repacketizer_out_range(rp, 0, opus_repacketizer_get_nb_frames(rp),
- * data, maxlen)
- * @endcode
- * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state from which to
- * construct the new packet.
- * @param[out] data <tt>const unsigned char*</tt>: The buffer in which to
- * store the output packet.
- * @param maxlen <tt>opus_int32</tt>: The maximum number of bytes to store in
- * the output buffer. In order to guarantee
- * success, this should be at least
- * <code>1277*opus_repacketizer_get_nb_frames(rp)</code>.
- * However,
- * <code>1*opus_repacketizer_get_nb_frames(rp)</code>
- * plus the size of all packet data
- * submitted to the repacketizer since the
- * last call to opus_repacketizer_init() or
- * opus_repacketizer_create() is also
- * sufficient, and possibly much smaller.
- * @returns The total size of the output packet on success, or an error code
- * on failure.
- * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the
- * complete output packet.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1);
-
-/** Pads a given Opus packet to a larger size (possibly changing the TOC sequence).
- * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
- * packet to pad.
- * @param len <tt>opus_int32</tt>: The size of the packet.
- * This must be at least 1.
- * @param new_len <tt>opus_int32</tt>: The desired size of the packet after padding.
- * This must be at least as large as len.
- * @returns an error code
- * @retval #OPUS_OK \a on success.
- * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len.
- * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
- */
-OPUS_EXPORT int opus_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len);
-
-/** Remove all padding from a given Opus packet and rewrite the TOC sequence to
- * minimize space usage.
- * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
- * packet to strip.
- * @param len <tt>opus_int32</tt>: The size of the packet.
- * This must be at least 1.
- * @returns The new size of the output packet on success, or an error code
- * on failure.
- * @retval #OPUS_BAD_ARG \a len was less than 1.
- * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_packet_unpad(unsigned char *data, opus_int32 len);
-
-/** Pads a given Opus multi-stream packet to a larger size (possibly changing the TOC sequence).
- * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
- * packet to pad.
- * @param len <tt>opus_int32</tt>: The size of the packet.
- * This must be at least 1.
- * @param new_len <tt>opus_int32</tt>: The desired size of the packet after padding.
- * This must be at least 1.
- * @param nb_streams <tt>opus_int32</tt>: The number of streams (not channels) in the packet.
- * This must be at least as large as len.
- * @returns an error code
- * @retval #OPUS_OK \a on success.
- * @retval #OPUS_BAD_ARG \a len was less than 1.
- * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
- */
-OPUS_EXPORT int opus_multistream_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len, int nb_streams);
-
-/** Remove all padding from a given Opus multi-stream packet and rewrite the TOC sequence to
- * minimize space usage.
- * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
- * packet to strip.
- * @param len <tt>opus_int32</tt>: The size of the packet.
- * This must be at least 1.
- * @param nb_streams <tt>opus_int32</tt>: The number of streams (not channels) in the packet.
- * This must be at least 1.
- * @returns The new size of the output packet on success, or an error code
- * on failure.
- * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len.
- * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_packet_unpad(unsigned char *data, opus_int32 len, int nb_streams);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* OPUS_H */
diff --git a/thirdparty/opus/opus/opus_custom.h b/thirdparty/opus/opus/opus_custom.h
deleted file mode 100644
index 41f36bf2fb..0000000000
--- a/thirdparty/opus/opus/opus_custom.h
+++ /dev/null
@@ -1,342 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
- Copyright (c) 2007-2009 Xiph.Org Foundation
- Copyright (c) 2008-2012 Gregory Maxwell
- Written by Jean-Marc Valin and Gregory Maxwell */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
- @file opus_custom.h
- @brief Opus-Custom reference implementation API
- */
-
-#ifndef OPUS_CUSTOM_H
-#define OPUS_CUSTOM_H
-
-#include "opus_defines.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef CUSTOM_MODES
-# define OPUS_CUSTOM_EXPORT OPUS_EXPORT
-# define OPUS_CUSTOM_EXPORT_STATIC OPUS_EXPORT
-#else
-# define OPUS_CUSTOM_EXPORT
-# ifdef OPUS_BUILD
-# define OPUS_CUSTOM_EXPORT_STATIC static OPUS_INLINE
-# else
-# define OPUS_CUSTOM_EXPORT_STATIC
-# endif
-#endif
-
-/** @defgroup opus_custom Opus Custom
- * @{
- * Opus Custom is an optional part of the Opus specification and
- * reference implementation which uses a distinct API from the regular
- * API and supports frame sizes that are not normally supported.\ Use
- * of Opus Custom is discouraged for all but very special applications
- * for which a frame size different from 2.5, 5, 10, or 20 ms is needed
- * (for either complexity or latency reasons) and where interoperability
- * is less important.
- *
- * In addition to the interoperability limitations the use of Opus custom
- * disables a substantial chunk of the codec and generally lowers the
- * quality available at a given bitrate. Normally when an application needs
- * a different frame size from the codec it should buffer to match the
- * sizes but this adds a small amount of delay which may be important
- * in some very low latency applications. Some transports (especially
- * constant rate RF transports) may also work best with frames of
- * particular durations.
- *
- * Libopus only supports custom modes if they are enabled at compile time.
- *
- * The Opus Custom API is similar to the regular API but the
- * @ref opus_encoder_create and @ref opus_decoder_create calls take
- * an additional mode parameter which is a structure produced by
- * a call to @ref opus_custom_mode_create. Both the encoder and decoder
- * must create a mode using the same sample rate (fs) and frame size
- * (frame size) so these parameters must either be signaled out of band
- * or fixed in a particular implementation.
- *
- * Similar to regular Opus the custom modes support on the fly frame size
- * switching, but the sizes available depend on the particular frame size in
- * use. For some initial frame sizes on a single on the fly size is available.
- */
-
-/** Contains the state of an encoder. One encoder state is needed
- for each stream. It is initialized once at the beginning of the
- stream. Do *not* re-initialize the state for every frame.
- @brief Encoder state
- */
-typedef struct OpusCustomEncoder OpusCustomEncoder;
-
-/** State of the decoder. One decoder state is needed for each stream.
- It is initialized once at the beginning of the stream. Do *not*
- re-initialize the state for every frame.
- @brief Decoder state
- */
-typedef struct OpusCustomDecoder OpusCustomDecoder;
-
-/** The mode contains all the information necessary to create an
- encoder. Both the encoder and decoder need to be initialized
- with exactly the same mode, otherwise the output will be
- corrupted.
- @brief Mode configuration
- */
-typedef struct OpusCustomMode OpusCustomMode;
-
-/** Creates a new mode struct. This will be passed to an encoder or
- * decoder. The mode MUST NOT BE DESTROYED until the encoders and
- * decoders that use it are destroyed as well.
- * @param [in] Fs <tt>int</tt>: Sampling rate (8000 to 96000 Hz)
- * @param [in] frame_size <tt>int</tt>: Number of samples (per channel) to encode in each
- * packet (64 - 1024, prime factorization must contain zero or more 2s, 3s, or 5s and no other primes)
- * @param [out] error <tt>int*</tt>: Returned error code (if NULL, no error will be returned)
- * @return A newly created mode
- */
-OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT OpusCustomMode *opus_custom_mode_create(opus_int32 Fs, int frame_size, int *error);
-
-/** Destroys a mode struct. Only call this after all encoders and
- * decoders using this mode are destroyed as well.
- * @param [in] mode <tt>OpusCustomMode*</tt>: Mode to be freed.
- */
-OPUS_CUSTOM_EXPORT void opus_custom_mode_destroy(OpusCustomMode *mode);
-
-
-#if !defined(OPUS_BUILD) || defined(CELT_ENCODER_C)
-
-/* Encoder */
-/** Gets the size of an OpusCustomEncoder structure.
- * @param [in] mode <tt>OpusCustomMode *</tt>: Mode configuration
- * @param [in] channels <tt>int</tt>: Number of channels
- * @returns size
- */
-OPUS_CUSTOM_EXPORT_STATIC OPUS_WARN_UNUSED_RESULT int opus_custom_encoder_get_size(
- const OpusCustomMode *mode,
- int channels
-) OPUS_ARG_NONNULL(1);
-
-# ifdef CUSTOM_MODES
-/** Initializes a previously allocated encoder state
- * The memory pointed to by st must be the size returned by opus_custom_encoder_get_size.
- * This is intended for applications which use their own allocator instead of malloc.
- * @see opus_custom_encoder_create(),opus_custom_encoder_get_size()
- * To reset a previously initialized state use the OPUS_RESET_STATE CTL.
- * @param [in] st <tt>OpusCustomEncoder*</tt>: Encoder state
- * @param [in] mode <tt>OpusCustomMode *</tt>: Contains all the information about the characteristics of
- * the stream (must be the same characteristics as used for the
- * decoder)
- * @param [in] channels <tt>int</tt>: Number of channels
- * @return OPUS_OK Success or @ref opus_errorcodes
- */
-OPUS_CUSTOM_EXPORT int opus_custom_encoder_init(
- OpusCustomEncoder *st,
- const OpusCustomMode *mode,
- int channels
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2);
-# endif
-#endif
-
-
-/** Creates a new encoder state. Each stream needs its own encoder
- * state (can't be shared across simultaneous streams).
- * @param [in] mode <tt>OpusCustomMode*</tt>: Contains all the information about the characteristics of
- * the stream (must be the same characteristics as used for the
- * decoder)
- * @param [in] channels <tt>int</tt>: Number of channels
- * @param [out] error <tt>int*</tt>: Returns an error code
- * @return Newly created encoder state.
-*/
-OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT OpusCustomEncoder *opus_custom_encoder_create(
- const OpusCustomMode *mode,
- int channels,
- int *error
-) OPUS_ARG_NONNULL(1);
-
-
-/** Destroys a an encoder state.
- * @param[in] st <tt>OpusCustomEncoder*</tt>: State to be freed.
- */
-OPUS_CUSTOM_EXPORT void opus_custom_encoder_destroy(OpusCustomEncoder *st);
-
-/** Encodes a frame of audio.
- * @param [in] st <tt>OpusCustomEncoder*</tt>: Encoder state
- * @param [in] pcm <tt>float*</tt>: PCM audio in float format, with a normal range of +/-1.0.
- * Samples with a range beyond +/-1.0 are supported but will
- * be clipped by decoders using the integer API and should
- * only be used if it is known that the far end supports
- * extended dynamic range. There must be exactly
- * frame_size samples per channel.
- * @param [in] frame_size <tt>int</tt>: Number of samples per frame of input signal
- * @param [out] compressed <tt>char *</tt>: The compressed data is written here. This may not alias pcm and must be at least maxCompressedBytes long.
- * @param [in] maxCompressedBytes <tt>int</tt>: Maximum number of bytes to use for compressing the frame
- * (can change from one frame to another)
- * @return Number of bytes written to "compressed".
- * If negative, an error has occurred (see error codes). It is IMPORTANT that
- * the length returned be somehow transmitted to the decoder. Otherwise, no
- * decoding is possible.
- */
-OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT int opus_custom_encode_float(
- OpusCustomEncoder *st,
- const float *pcm,
- int frame_size,
- unsigned char *compressed,
- int maxCompressedBytes
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
-
-/** Encodes a frame of audio.
- * @param [in] st <tt>OpusCustomEncoder*</tt>: Encoder state
- * @param [in] pcm <tt>opus_int16*</tt>: PCM audio in signed 16-bit format (native endian).
- * There must be exactly frame_size samples per channel.
- * @param [in] frame_size <tt>int</tt>: Number of samples per frame of input signal
- * @param [out] compressed <tt>char *</tt>: The compressed data is written here. This may not alias pcm and must be at least maxCompressedBytes long.
- * @param [in] maxCompressedBytes <tt>int</tt>: Maximum number of bytes to use for compressing the frame
- * (can change from one frame to another)
- * @return Number of bytes written to "compressed".
- * If negative, an error has occurred (see error codes). It is IMPORTANT that
- * the length returned be somehow transmitted to the decoder. Otherwise, no
- * decoding is possible.
- */
-OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT int opus_custom_encode(
- OpusCustomEncoder *st,
- const opus_int16 *pcm,
- int frame_size,
- unsigned char *compressed,
- int maxCompressedBytes
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
-
-/** Perform a CTL function on an Opus custom encoder.
- *
- * Generally the request and subsequent arguments are generated
- * by a convenience macro.
- * @see opus_encoderctls
- */
-OPUS_CUSTOM_EXPORT int opus_custom_encoder_ctl(OpusCustomEncoder * OPUS_RESTRICT st, int request, ...) OPUS_ARG_NONNULL(1);
-
-
-#if !defined(OPUS_BUILD) || defined(CELT_DECODER_C)
-/* Decoder */
-
-/** Gets the size of an OpusCustomDecoder structure.
- * @param [in] mode <tt>OpusCustomMode *</tt>: Mode configuration
- * @param [in] channels <tt>int</tt>: Number of channels
- * @returns size
- */
-OPUS_CUSTOM_EXPORT_STATIC OPUS_WARN_UNUSED_RESULT int opus_custom_decoder_get_size(
- const OpusCustomMode *mode,
- int channels
-) OPUS_ARG_NONNULL(1);
-
-/** Initializes a previously allocated decoder state
- * The memory pointed to by st must be the size returned by opus_custom_decoder_get_size.
- * This is intended for applications which use their own allocator instead of malloc.
- * @see opus_custom_decoder_create(),opus_custom_decoder_get_size()
- * To reset a previously initialized state use the OPUS_RESET_STATE CTL.
- * @param [in] st <tt>OpusCustomDecoder*</tt>: Decoder state
- * @param [in] mode <tt>OpusCustomMode *</tt>: Contains all the information about the characteristics of
- * the stream (must be the same characteristics as used for the
- * encoder)
- * @param [in] channels <tt>int</tt>: Number of channels
- * @return OPUS_OK Success or @ref opus_errorcodes
- */
-OPUS_CUSTOM_EXPORT_STATIC int opus_custom_decoder_init(
- OpusCustomDecoder *st,
- const OpusCustomMode *mode,
- int channels
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2);
-
-#endif
-
-
-/** Creates a new decoder state. Each stream needs its own decoder state (can't
- * be shared across simultaneous streams).
- * @param [in] mode <tt>OpusCustomMode</tt>: Contains all the information about the characteristics of the
- * stream (must be the same characteristics as used for the encoder)
- * @param [in] channels <tt>int</tt>: Number of channels
- * @param [out] error <tt>int*</tt>: Returns an error code
- * @return Newly created decoder state.
- */
-OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT OpusCustomDecoder *opus_custom_decoder_create(
- const OpusCustomMode *mode,
- int channels,
- int *error
-) OPUS_ARG_NONNULL(1);
-
-/** Destroys a an decoder state.
- * @param[in] st <tt>OpusCustomDecoder*</tt>: State to be freed.
- */
-OPUS_CUSTOM_EXPORT void opus_custom_decoder_destroy(OpusCustomDecoder *st);
-
-/** Decode an opus custom frame with floating point output
- * @param [in] st <tt>OpusCustomDecoder*</tt>: Decoder state
- * @param [in] data <tt>char*</tt>: Input payload. Use a NULL pointer to indicate packet loss
- * @param [in] len <tt>int</tt>: Number of bytes in payload
- * @param [out] pcm <tt>float*</tt>: Output signal (interleaved if 2 channels). length
- * is frame_size*channels*sizeof(float)
- * @param [in] frame_size Number of samples per channel of available space in *pcm.
- * @returns Number of decoded samples or @ref opus_errorcodes
- */
-OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT int opus_custom_decode_float(
- OpusCustomDecoder *st,
- const unsigned char *data,
- int len,
- float *pcm,
- int frame_size
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
-
-/** Decode an opus custom frame
- * @param [in] st <tt>OpusCustomDecoder*</tt>: Decoder state
- * @param [in] data <tt>char*</tt>: Input payload. Use a NULL pointer to indicate packet loss
- * @param [in] len <tt>int</tt>: Number of bytes in payload
- * @param [out] pcm <tt>opus_int16*</tt>: Output signal (interleaved if 2 channels). length
- * is frame_size*channels*sizeof(opus_int16)
- * @param [in] frame_size Number of samples per channel of available space in *pcm.
- * @returns Number of decoded samples or @ref opus_errorcodes
- */
-OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT int opus_custom_decode(
- OpusCustomDecoder *st,
- const unsigned char *data,
- int len,
- opus_int16 *pcm,
- int frame_size
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
-
-/** Perform a CTL function on an Opus custom decoder.
- *
- * Generally the request and subsequent arguments are generated
- * by a convenience macro.
- * @see opus_genericctls
- */
-OPUS_CUSTOM_EXPORT int opus_custom_decoder_ctl(OpusCustomDecoder * OPUS_RESTRICT st, int request, ...) OPUS_ARG_NONNULL(1);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* OPUS_CUSTOM_H */
diff --git a/thirdparty/opus/opus/opus_defines.h b/thirdparty/opus/opus/opus_defines.h
deleted file mode 100644
index 315412dd1d..0000000000
--- a/thirdparty/opus/opus/opus_defines.h
+++ /dev/null
@@ -1,753 +0,0 @@
-/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited
- Written by Jean-Marc Valin and Koen Vos */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
- * @file opus_defines.h
- * @brief Opus reference implementation constants
- */
-
-#ifndef OPUS_DEFINES_H
-#define OPUS_DEFINES_H
-
-#include "opus_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @defgroup opus_errorcodes Error codes
- * @{
- */
-/** No error @hideinitializer*/
-#define OPUS_OK 0
-/** One or more invalid/out of range arguments @hideinitializer*/
-#define OPUS_BAD_ARG -1
-/** Not enough bytes allocated in the buffer @hideinitializer*/
-#define OPUS_BUFFER_TOO_SMALL -2
-/** An internal error was detected @hideinitializer*/
-#define OPUS_INTERNAL_ERROR -3
-/** The compressed data passed is corrupted @hideinitializer*/
-#define OPUS_INVALID_PACKET -4
-/** Invalid/unsupported request number @hideinitializer*/
-#define OPUS_UNIMPLEMENTED -5
-/** An encoder or decoder structure is invalid or already freed @hideinitializer*/
-#define OPUS_INVALID_STATE -6
-/** Memory allocation has failed @hideinitializer*/
-#define OPUS_ALLOC_FAIL -7
-/**@}*/
-
-/** @cond OPUS_INTERNAL_DOC */
-/**Export control for opus functions */
-
-#ifndef OPUS_EXPORT
-# if defined(WIN32)
-# if defined(OPUS_BUILD) && defined(DLL_EXPORT)
-# define OPUS_EXPORT __declspec(dllexport)
-# else
-# define OPUS_EXPORT
-# endif
-# elif defined(__GNUC__) && defined(OPUS_BUILD)
-# define OPUS_EXPORT __attribute__ ((visibility ("default")))
-# else
-# define OPUS_EXPORT
-# endif
-#endif
-
-# if !defined(OPUS_GNUC_PREREQ)
-# if defined(__GNUC__)&&defined(__GNUC_MINOR__)
-# define OPUS_GNUC_PREREQ(_maj,_min) \
- ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min))
-# else
-# define OPUS_GNUC_PREREQ(_maj,_min) 0
-# endif
-# endif
-
-#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) )
-# if OPUS_GNUC_PREREQ(3,0)
-# define OPUS_RESTRICT __restrict__
-# elif (defined(_MSC_VER) && _MSC_VER >= 1400)
-# define OPUS_RESTRICT __restrict
-# else
-# define OPUS_RESTRICT
-# endif
-#else
-# define OPUS_RESTRICT restrict
-#endif
-
-#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) )
-# if OPUS_GNUC_PREREQ(2,7)
-# define OPUS_INLINE __inline__
-# elif (defined(_MSC_VER))
-# define OPUS_INLINE __inline
-# else
-# define OPUS_INLINE
-# endif
-#else
-# define OPUS_INLINE inline
-#endif
-
-/**Warning attributes for opus functions
- * NONNULL is not used in OPUS_BUILD to avoid the compiler optimizing out
- * some paranoid null checks. */
-#if defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4)
-# define OPUS_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__))
-#else
-# define OPUS_WARN_UNUSED_RESULT
-#endif
-#if !defined(OPUS_BUILD) && defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4)
-# define OPUS_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x)))
-#else
-# define OPUS_ARG_NONNULL(_x)
-#endif
-
-/** These are the actual Encoder CTL ID numbers.
- * They should not be used directly by applications.
- * In general, SETs should be even and GETs should be odd.*/
-#define OPUS_SET_APPLICATION_REQUEST 4000
-#define OPUS_GET_APPLICATION_REQUEST 4001
-#define OPUS_SET_BITRATE_REQUEST 4002
-#define OPUS_GET_BITRATE_REQUEST 4003
-#define OPUS_SET_MAX_BANDWIDTH_REQUEST 4004
-#define OPUS_GET_MAX_BANDWIDTH_REQUEST 4005
-#define OPUS_SET_VBR_REQUEST 4006
-#define OPUS_GET_VBR_REQUEST 4007
-#define OPUS_SET_BANDWIDTH_REQUEST 4008
-#define OPUS_GET_BANDWIDTH_REQUEST 4009
-#define OPUS_SET_COMPLEXITY_REQUEST 4010
-#define OPUS_GET_COMPLEXITY_REQUEST 4011
-#define OPUS_SET_INBAND_FEC_REQUEST 4012
-#define OPUS_GET_INBAND_FEC_REQUEST 4013
-#define OPUS_SET_PACKET_LOSS_PERC_REQUEST 4014
-#define OPUS_GET_PACKET_LOSS_PERC_REQUEST 4015
-#define OPUS_SET_DTX_REQUEST 4016
-#define OPUS_GET_DTX_REQUEST 4017
-#define OPUS_SET_VBR_CONSTRAINT_REQUEST 4020
-#define OPUS_GET_VBR_CONSTRAINT_REQUEST 4021
-#define OPUS_SET_FORCE_CHANNELS_REQUEST 4022
-#define OPUS_GET_FORCE_CHANNELS_REQUEST 4023
-#define OPUS_SET_SIGNAL_REQUEST 4024
-#define OPUS_GET_SIGNAL_REQUEST 4025
-#define OPUS_GET_LOOKAHEAD_REQUEST 4027
-/* #define OPUS_RESET_STATE 4028 */
-#define OPUS_GET_SAMPLE_RATE_REQUEST 4029
-#define OPUS_GET_FINAL_RANGE_REQUEST 4031
-#define OPUS_GET_PITCH_REQUEST 4033
-#define OPUS_SET_GAIN_REQUEST 4034
-#define OPUS_GET_GAIN_REQUEST 4045 /* Should have been 4035 */
-#define OPUS_SET_LSB_DEPTH_REQUEST 4036
-#define OPUS_GET_LSB_DEPTH_REQUEST 4037
-#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039
-#define OPUS_SET_EXPERT_FRAME_DURATION_REQUEST 4040
-#define OPUS_GET_EXPERT_FRAME_DURATION_REQUEST 4041
-#define OPUS_SET_PREDICTION_DISABLED_REQUEST 4042
-#define OPUS_GET_PREDICTION_DISABLED_REQUEST 4043
-
-/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */
-
-/* Macros to trigger compilation errors when the wrong types are provided to a CTL */
-#define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x))
-#define __opus_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr)))
-#define __opus_check_uint_ptr(ptr) ((ptr) + ((ptr) - (opus_uint32*)(ptr)))
-#define __opus_check_val16_ptr(ptr) ((ptr) + ((ptr) - (opus_val16*)(ptr)))
-/** @endcond */
-
-/** @defgroup opus_ctlvalues Pre-defined values for CTL interface
- * @see opus_genericctls, opus_encoderctls
- * @{
- */
-/* Values for the various encoder CTLs */
-#define OPUS_AUTO -1000 /**<Auto/default setting @hideinitializer*/
-#define OPUS_BITRATE_MAX -1 /**<Maximum bitrate @hideinitializer*/
-
-/** Best for most VoIP/videoconference applications where listening quality and intelligibility matter most
- * @hideinitializer */
-#define OPUS_APPLICATION_VOIP 2048
-/** Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input
- * @hideinitializer */
-#define OPUS_APPLICATION_AUDIO 2049
-/** Only use when lowest-achievable latency is what matters most. Voice-optimized modes cannot be used.
- * @hideinitializer */
-#define OPUS_APPLICATION_RESTRICTED_LOWDELAY 2051
-
-#define OPUS_SIGNAL_VOICE 3001 /**< Signal being encoded is voice */
-#define OPUS_SIGNAL_MUSIC 3002 /**< Signal being encoded is music */
-#define OPUS_BANDWIDTH_NARROWBAND 1101 /**< 4 kHz bandpass @hideinitializer*/
-#define OPUS_BANDWIDTH_MEDIUMBAND 1102 /**< 6 kHz bandpass @hideinitializer*/
-#define OPUS_BANDWIDTH_WIDEBAND 1103 /**< 8 kHz bandpass @hideinitializer*/
-#define OPUS_BANDWIDTH_SUPERWIDEBAND 1104 /**<12 kHz bandpass @hideinitializer*/
-#define OPUS_BANDWIDTH_FULLBAND 1105 /**<20 kHz bandpass @hideinitializer*/
-
-#define OPUS_FRAMESIZE_ARG 5000 /**< Select frame size from the argument (default) */
-#define OPUS_FRAMESIZE_2_5_MS 5001 /**< Use 2.5 ms frames */
-#define OPUS_FRAMESIZE_5_MS 5002 /**< Use 5 ms frames */
-#define OPUS_FRAMESIZE_10_MS 5003 /**< Use 10 ms frames */
-#define OPUS_FRAMESIZE_20_MS 5004 /**< Use 20 ms frames */
-#define OPUS_FRAMESIZE_40_MS 5005 /**< Use 40 ms frames */
-#define OPUS_FRAMESIZE_60_MS 5006 /**< Use 60 ms frames */
-
-/**@}*/
-
-
-/** @defgroup opus_encoderctls Encoder related CTLs
- *
- * These are convenience macros for use with the \c opus_encode_ctl
- * interface. They are used to generate the appropriate series of
- * arguments for that call, passing the correct type, size and so
- * on as expected for each particular request.
- *
- * Some usage examples:
- *
- * @code
- * int ret;
- * ret = opus_encoder_ctl(enc_ctx, OPUS_SET_BANDWIDTH(OPUS_AUTO));
- * if (ret != OPUS_OK) return ret;
- *
- * opus_int32 rate;
- * opus_encoder_ctl(enc_ctx, OPUS_GET_BANDWIDTH(&rate));
- *
- * opus_encoder_ctl(enc_ctx, OPUS_RESET_STATE);
- * @endcode
- *
- * @see opus_genericctls, opus_encoder
- * @{
- */
-
-/** Configures the encoder's computational complexity.
- * The supported range is 0-10 inclusive with 10 representing the highest complexity.
- * @see OPUS_GET_COMPLEXITY
- * @param[in] x <tt>opus_int32</tt>: Allowed values: 0-10, inclusive.
- *
- * @hideinitializer */
-#define OPUS_SET_COMPLEXITY(x) OPUS_SET_COMPLEXITY_REQUEST, __opus_check_int(x)
-/** Gets the encoder's complexity configuration.
- * @see OPUS_SET_COMPLEXITY
- * @param[out] x <tt>opus_int32 *</tt>: Returns a value in the range 0-10,
- * inclusive.
- * @hideinitializer */
-#define OPUS_GET_COMPLEXITY(x) OPUS_GET_COMPLEXITY_REQUEST, __opus_check_int_ptr(x)
-
-/** Configures the bitrate in the encoder.
- * Rates from 500 to 512000 bits per second are meaningful, as well as the
- * special values #OPUS_AUTO and #OPUS_BITRATE_MAX.
- * The value #OPUS_BITRATE_MAX can be used to cause the codec to use as much
- * rate as it can, which is useful for controlling the rate by adjusting the
- * output buffer size.
- * @see OPUS_GET_BITRATE
- * @param[in] x <tt>opus_int32</tt>: Bitrate in bits per second. The default
- * is determined based on the number of
- * channels and the input sampling rate.
- * @hideinitializer */
-#define OPUS_SET_BITRATE(x) OPUS_SET_BITRATE_REQUEST, __opus_check_int(x)
-/** Gets the encoder's bitrate configuration.
- * @see OPUS_SET_BITRATE
- * @param[out] x <tt>opus_int32 *</tt>: Returns the bitrate in bits per second.
- * The default is determined based on the
- * number of channels and the input
- * sampling rate.
- * @hideinitializer */
-#define OPUS_GET_BITRATE(x) OPUS_GET_BITRATE_REQUEST, __opus_check_int_ptr(x)
-
-/** Enables or disables variable bitrate (VBR) in the encoder.
- * The configured bitrate may not be met exactly because frames must
- * be an integer number of bytes in length.
- * @see OPUS_GET_VBR
- * @see OPUS_SET_VBR_CONSTRAINT
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>0</dt><dd>Hard CBR. For LPC/hybrid modes at very low bit-rate, this can
- * cause noticeable quality degradation.</dd>
- * <dt>1</dt><dd>VBR (default). The exact type of VBR is controlled by
- * #OPUS_SET_VBR_CONSTRAINT.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_VBR(x) OPUS_SET_VBR_REQUEST, __opus_check_int(x)
-/** Determine if variable bitrate (VBR) is enabled in the encoder.
- * @see OPUS_SET_VBR
- * @see OPUS_GET_VBR_CONSTRAINT
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>0</dt><dd>Hard CBR.</dd>
- * <dt>1</dt><dd>VBR (default). The exact type of VBR may be retrieved via
- * #OPUS_GET_VBR_CONSTRAINT.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_VBR(x) OPUS_GET_VBR_REQUEST, __opus_check_int_ptr(x)
-
-/** Enables or disables constrained VBR in the encoder.
- * This setting is ignored when the encoder is in CBR mode.
- * @warning Only the MDCT mode of Opus currently heeds the constraint.
- * Speech mode ignores it completely, hybrid mode may fail to obey it
- * if the LPC layer uses more bitrate than the constraint would have
- * permitted.
- * @see OPUS_GET_VBR_CONSTRAINT
- * @see OPUS_SET_VBR
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>0</dt><dd>Unconstrained VBR.</dd>
- * <dt>1</dt><dd>Constrained VBR (default). This creates a maximum of one
- * frame of buffering delay assuming a transport with a
- * serialization speed of the nominal bitrate.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_VBR_CONSTRAINT(x) OPUS_SET_VBR_CONSTRAINT_REQUEST, __opus_check_int(x)
-/** Determine if constrained VBR is enabled in the encoder.
- * @see OPUS_SET_VBR_CONSTRAINT
- * @see OPUS_GET_VBR
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>0</dt><dd>Unconstrained VBR.</dd>
- * <dt>1</dt><dd>Constrained VBR (default).</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_VBR_CONSTRAINT(x) OPUS_GET_VBR_CONSTRAINT_REQUEST, __opus_check_int_ptr(x)
-
-/** Configures mono/stereo forcing in the encoder.
- * This can force the encoder to produce packets encoded as either mono or
- * stereo, regardless of the format of the input audio. This is useful when
- * the caller knows that the input signal is currently a mono source embedded
- * in a stereo stream.
- * @see OPUS_GET_FORCE_CHANNELS
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>#OPUS_AUTO</dt><dd>Not forced (default)</dd>
- * <dt>1</dt> <dd>Forced mono</dd>
- * <dt>2</dt> <dd>Forced stereo</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_FORCE_CHANNELS(x) OPUS_SET_FORCE_CHANNELS_REQUEST, __opus_check_int(x)
-/** Gets the encoder's forced channel configuration.
- * @see OPUS_SET_FORCE_CHANNELS
- * @param[out] x <tt>opus_int32 *</tt>:
- * <dl>
- * <dt>#OPUS_AUTO</dt><dd>Not forced (default)</dd>
- * <dt>1</dt> <dd>Forced mono</dd>
- * <dt>2</dt> <dd>Forced stereo</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_FORCE_CHANNELS(x) OPUS_GET_FORCE_CHANNELS_REQUEST, __opus_check_int_ptr(x)
-
-/** Configures the maximum bandpass that the encoder will select automatically.
- * Applications should normally use this instead of #OPUS_SET_BANDWIDTH
- * (leaving that set to the default, #OPUS_AUTO). This allows the
- * application to set an upper bound based on the type of input it is
- * providing, but still gives the encoder the freedom to reduce the bandpass
- * when the bitrate becomes too low, for better overall quality.
- * @see OPUS_GET_MAX_BANDWIDTH
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>OPUS_BANDWIDTH_NARROWBAND</dt> <dd>4 kHz passband</dd>
- * <dt>OPUS_BANDWIDTH_MEDIUMBAND</dt> <dd>6 kHz passband</dd>
- * <dt>OPUS_BANDWIDTH_WIDEBAND</dt> <dd>8 kHz passband</dd>
- * <dt>OPUS_BANDWIDTH_SUPERWIDEBAND</dt><dd>12 kHz passband</dd>
- * <dt>OPUS_BANDWIDTH_FULLBAND</dt> <dd>20 kHz passband (default)</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_MAX_BANDWIDTH(x) OPUS_SET_MAX_BANDWIDTH_REQUEST, __opus_check_int(x)
-
-/** Gets the encoder's configured maximum allowed bandpass.
- * @see OPUS_SET_MAX_BANDWIDTH
- * @param[out] x <tt>opus_int32 *</tt>: Allowed values:
- * <dl>
- * <dt>#OPUS_BANDWIDTH_NARROWBAND</dt> <dd>4 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_MEDIUMBAND</dt> <dd>6 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_WIDEBAND</dt> <dd>8 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_SUPERWIDEBAND</dt><dd>12 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_FULLBAND</dt> <dd>20 kHz passband (default)</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_MAX_BANDWIDTH(x) OPUS_GET_MAX_BANDWIDTH_REQUEST, __opus_check_int_ptr(x)
-
-/** Sets the encoder's bandpass to a specific value.
- * This prevents the encoder from automatically selecting the bandpass based
- * on the available bitrate. If an application knows the bandpass of the input
- * audio it is providing, it should normally use #OPUS_SET_MAX_BANDWIDTH
- * instead, which still gives the encoder the freedom to reduce the bandpass
- * when the bitrate becomes too low, for better overall quality.
- * @see OPUS_GET_BANDWIDTH
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>#OPUS_AUTO</dt> <dd>(default)</dd>
- * <dt>#OPUS_BANDWIDTH_NARROWBAND</dt> <dd>4 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_MEDIUMBAND</dt> <dd>6 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_WIDEBAND</dt> <dd>8 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_SUPERWIDEBAND</dt><dd>12 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_FULLBAND</dt> <dd>20 kHz passband</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_BANDWIDTH(x) OPUS_SET_BANDWIDTH_REQUEST, __opus_check_int(x)
-
-/** Configures the type of signal being encoded.
- * This is a hint which helps the encoder's mode selection.
- * @see OPUS_GET_SIGNAL
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>#OPUS_AUTO</dt> <dd>(default)</dd>
- * <dt>#OPUS_SIGNAL_VOICE</dt><dd>Bias thresholds towards choosing LPC or Hybrid modes.</dd>
- * <dt>#OPUS_SIGNAL_MUSIC</dt><dd>Bias thresholds towards choosing MDCT modes.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_SIGNAL(x) OPUS_SET_SIGNAL_REQUEST, __opus_check_int(x)
-/** Gets the encoder's configured signal type.
- * @see OPUS_SET_SIGNAL
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>#OPUS_AUTO</dt> <dd>(default)</dd>
- * <dt>#OPUS_SIGNAL_VOICE</dt><dd>Bias thresholds towards choosing LPC or Hybrid modes.</dd>
- * <dt>#OPUS_SIGNAL_MUSIC</dt><dd>Bias thresholds towards choosing MDCT modes.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_SIGNAL(x) OPUS_GET_SIGNAL_REQUEST, __opus_check_int_ptr(x)
-
-
-/** Configures the encoder's intended application.
- * The initial value is a mandatory argument to the encoder_create function.
- * @see OPUS_GET_APPLICATION
- * @param[in] x <tt>opus_int32</tt>: Returns one of the following values:
- * <dl>
- * <dt>#OPUS_APPLICATION_VOIP</dt>
- * <dd>Process signal for improved speech intelligibility.</dd>
- * <dt>#OPUS_APPLICATION_AUDIO</dt>
- * <dd>Favor faithfulness to the original input.</dd>
- * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt>
- * <dd>Configure the minimum possible coding delay by disabling certain modes
- * of operation.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_APPLICATION(x) OPUS_SET_APPLICATION_REQUEST, __opus_check_int(x)
-/** Gets the encoder's configured application.
- * @see OPUS_SET_APPLICATION
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>#OPUS_APPLICATION_VOIP</dt>
- * <dd>Process signal for improved speech intelligibility.</dd>
- * <dt>#OPUS_APPLICATION_AUDIO</dt>
- * <dd>Favor faithfulness to the original input.</dd>
- * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt>
- * <dd>Configure the minimum possible coding delay by disabling certain modes
- * of operation.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_APPLICATION(x) OPUS_GET_APPLICATION_REQUEST, __opus_check_int_ptr(x)
-
-/** Gets the total samples of delay added by the entire codec.
- * This can be queried by the encoder and then the provided number of samples can be
- * skipped on from the start of the decoder's output to provide time aligned input
- * and output. From the perspective of a decoding application the real data begins this many
- * samples late.
- *
- * The decoder contribution to this delay is identical for all decoders, but the
- * encoder portion of the delay may vary from implementation to implementation,
- * version to version, or even depend on the encoder's initial configuration.
- * Applications needing delay compensation should call this CTL rather than
- * hard-coding a value.
- * @param[out] x <tt>opus_int32 *</tt>: Number of lookahead samples
- * @hideinitializer */
-#define OPUS_GET_LOOKAHEAD(x) OPUS_GET_LOOKAHEAD_REQUEST, __opus_check_int_ptr(x)
-
-/** Configures the encoder's use of inband forward error correction (FEC).
- * @note This is only applicable to the LPC layer
- * @see OPUS_GET_INBAND_FEC
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>0</dt><dd>Disable inband FEC (default).</dd>
- * <dt>1</dt><dd>Enable inband FEC.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_INBAND_FEC(x) OPUS_SET_INBAND_FEC_REQUEST, __opus_check_int(x)
-/** Gets encoder's configured use of inband forward error correction.
- * @see OPUS_SET_INBAND_FEC
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>0</dt><dd>Inband FEC disabled (default).</dd>
- * <dt>1</dt><dd>Inband FEC enabled.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_INBAND_FEC(x) OPUS_GET_INBAND_FEC_REQUEST, __opus_check_int_ptr(x)
-
-/** Configures the encoder's expected packet loss percentage.
- * Higher values trigger progressively more loss resistant behavior in the encoder
- * at the expense of quality at a given bitrate in the absence of packet loss, but
- * greater quality under loss.
- * @see OPUS_GET_PACKET_LOSS_PERC
- * @param[in] x <tt>opus_int32</tt>: Loss percentage in the range 0-100, inclusive (default: 0).
- * @hideinitializer */
-#define OPUS_SET_PACKET_LOSS_PERC(x) OPUS_SET_PACKET_LOSS_PERC_REQUEST, __opus_check_int(x)
-/** Gets the encoder's configured packet loss percentage.
- * @see OPUS_SET_PACKET_LOSS_PERC
- * @param[out] x <tt>opus_int32 *</tt>: Returns the configured loss percentage
- * in the range 0-100, inclusive (default: 0).
- * @hideinitializer */
-#define OPUS_GET_PACKET_LOSS_PERC(x) OPUS_GET_PACKET_LOSS_PERC_REQUEST, __opus_check_int_ptr(x)
-
-/** Configures the encoder's use of discontinuous transmission (DTX).
- * @note This is only applicable to the LPC layer
- * @see OPUS_GET_DTX
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>0</dt><dd>Disable DTX (default).</dd>
- * <dt>1</dt><dd>Enabled DTX.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_DTX(x) OPUS_SET_DTX_REQUEST, __opus_check_int(x)
-/** Gets encoder's configured use of discontinuous transmission.
- * @see OPUS_SET_DTX
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>0</dt><dd>DTX disabled (default).</dd>
- * <dt>1</dt><dd>DTX enabled.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x)
-/** Configures the depth of signal being encoded.
- *
- * This is a hint which helps the encoder identify silence and near-silence.
- * It represents the number of significant bits of linear intensity below
- * which the signal contains ignorable quantization or other noise.
- *
- * For example, OPUS_SET_LSB_DEPTH(14) would be an appropriate setting
- * for G.711 u-law input. OPUS_SET_LSB_DEPTH(16) would be appropriate
- * for 16-bit linear pcm input with opus_encode_float().
- *
- * When using opus_encode() instead of opus_encode_float(), or when libopus
- * is compiled for fixed-point, the encoder uses the minimum of the value
- * set here and the value 16.
- *
- * @see OPUS_GET_LSB_DEPTH
- * @param[in] x <tt>opus_int32</tt>: Input precision in bits, between 8 and 24
- * (default: 24).
- * @hideinitializer */
-#define OPUS_SET_LSB_DEPTH(x) OPUS_SET_LSB_DEPTH_REQUEST, __opus_check_int(x)
-/** Gets the encoder's configured signal depth.
- * @see OPUS_SET_LSB_DEPTH
- * @param[out] x <tt>opus_int32 *</tt>: Input precision in bits, between 8 and
- * 24 (default: 24).
- * @hideinitializer */
-#define OPUS_GET_LSB_DEPTH(x) OPUS_GET_LSB_DEPTH_REQUEST, __opus_check_int_ptr(x)
-
-/** Configures the encoder's use of variable duration frames.
- * When variable duration is enabled, the encoder is free to use a shorter frame
- * size than the one requested in the opus_encode*() call.
- * It is then the user's responsibility
- * to verify how much audio was encoded by checking the ToC byte of the encoded
- * packet. The part of the audio that was not encoded needs to be resent to the
- * encoder for the next call. Do not use this option unless you <b>really</b>
- * know what you are doing.
- * @see OPUS_GET_EXPERT_FRAME_DURATION
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>OPUS_FRAMESIZE_ARG</dt><dd>Select frame size from the argument (default).</dd>
- * <dt>OPUS_FRAMESIZE_2_5_MS</dt><dd>Use 2.5 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_5_MS</dt><dd>Use 5 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_10_MS</dt><dd>Use 10 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_20_MS</dt><dd>Use 20 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_40_MS</dt><dd>Use 40 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_60_MS</dt><dd>Use 60 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_VARIABLE</dt><dd>Optimize the frame size dynamically.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_EXPERT_FRAME_DURATION(x) OPUS_SET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int(x)
-/** Gets the encoder's configured use of variable duration frames.
- * @see OPUS_SET_EXPERT_FRAME_DURATION
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>OPUS_FRAMESIZE_ARG</dt><dd>Select frame size from the argument (default).</dd>
- * <dt>OPUS_FRAMESIZE_2_5_MS</dt><dd>Use 2.5 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_5_MS</dt><dd>Use 5 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_10_MS</dt><dd>Use 10 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_20_MS</dt><dd>Use 20 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_40_MS</dt><dd>Use 40 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_60_MS</dt><dd>Use 60 ms frames.</dd>
- * <dt>OPUS_FRAMESIZE_VARIABLE</dt><dd>Optimize the frame size dynamically.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_EXPERT_FRAME_DURATION(x) OPUS_GET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int_ptr(x)
-
-/** If set to 1, disables almost all use of prediction, making frames almost
- * completely independent. This reduces quality.
- * @see OPUS_GET_PREDICTION_DISABLED
- * @param[in] x <tt>opus_int32</tt>: Allowed values:
- * <dl>
- * <dt>0</dt><dd>Enable prediction (default).</dd>
- * <dt>1</dt><dd>Disable prediction.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_SET_PREDICTION_DISABLED(x) OPUS_SET_PREDICTION_DISABLED_REQUEST, __opus_check_int(x)
-/** Gets the encoder's configured prediction status.
- * @see OPUS_SET_PREDICTION_DISABLED
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>0</dt><dd>Prediction enabled (default).</dd>
- * <dt>1</dt><dd>Prediction disabled.</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_PREDICTION_DISABLED(x) OPUS_GET_PREDICTION_DISABLED_REQUEST, __opus_check_int_ptr(x)
-
-/**@}*/
-
-/** @defgroup opus_genericctls Generic CTLs
- *
- * These macros are used with the \c opus_decoder_ctl and
- * \c opus_encoder_ctl calls to generate a particular
- * request.
- *
- * When called on an \c OpusDecoder they apply to that
- * particular decoder instance. When called on an
- * \c OpusEncoder they apply to the corresponding setting
- * on that encoder instance, if present.
- *
- * Some usage examples:
- *
- * @code
- * int ret;
- * opus_int32 pitch;
- * ret = opus_decoder_ctl(dec_ctx, OPUS_GET_PITCH(&pitch));
- * if (ret == OPUS_OK) return ret;
- *
- * opus_encoder_ctl(enc_ctx, OPUS_RESET_STATE);
- * opus_decoder_ctl(dec_ctx, OPUS_RESET_STATE);
- *
- * opus_int32 enc_bw, dec_bw;
- * opus_encoder_ctl(enc_ctx, OPUS_GET_BANDWIDTH(&enc_bw));
- * opus_decoder_ctl(dec_ctx, OPUS_GET_BANDWIDTH(&dec_bw));
- * if (enc_bw != dec_bw) {
- * printf("packet bandwidth mismatch!\n");
- * }
- * @endcode
- *
- * @see opus_encoder, opus_decoder_ctl, opus_encoder_ctl, opus_decoderctls, opus_encoderctls
- * @{
- */
-
-/** Resets the codec state to be equivalent to a freshly initialized state.
- * This should be called when switching streams in order to prevent
- * the back to back decoding from giving different results from
- * one at a time decoding.
- * @hideinitializer */
-#define OPUS_RESET_STATE 4028
-
-/** Gets the final state of the codec's entropy coder.
- * This is used for testing purposes,
- * The encoder and decoder state should be identical after coding a payload
- * (assuming no data corruption or software bugs)
- *
- * @param[out] x <tt>opus_uint32 *</tt>: Entropy coder state
- *
- * @hideinitializer */
-#define OPUS_GET_FINAL_RANGE(x) OPUS_GET_FINAL_RANGE_REQUEST, __opus_check_uint_ptr(x)
-
-/** Gets the encoder's configured bandpass or the decoder's last bandpass.
- * @see OPUS_SET_BANDWIDTH
- * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
- * <dl>
- * <dt>#OPUS_AUTO</dt> <dd>(default)</dd>
- * <dt>#OPUS_BANDWIDTH_NARROWBAND</dt> <dd>4 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_MEDIUMBAND</dt> <dd>6 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_WIDEBAND</dt> <dd>8 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_SUPERWIDEBAND</dt><dd>12 kHz passband</dd>
- * <dt>#OPUS_BANDWIDTH_FULLBAND</dt> <dd>20 kHz passband</dd>
- * </dl>
- * @hideinitializer */
-#define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x)
-
-/** Gets the sampling rate the encoder or decoder was initialized with.
- * This simply returns the <code>Fs</code> value passed to opus_encoder_init()
- * or opus_decoder_init().
- * @param[out] x <tt>opus_int32 *</tt>: Sampling rate of encoder or decoder.
- * @hideinitializer
- */
-#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x)
-
-/**@}*/
-
-/** @defgroup opus_decoderctls Decoder related CTLs
- * @see opus_genericctls, opus_encoderctls, opus_decoder
- * @{
- */
-
-/** Configures decoder gain adjustment.
- * Scales the decoded output by a factor specified in Q8 dB units.
- * This has a maximum range of -32768 to 32767 inclusive, and returns
- * OPUS_BAD_ARG otherwise. The default is zero indicating no adjustment.
- * This setting survives decoder reset.
- *
- * gain = pow(10, x/(20.0*256))
- *
- * @param[in] x <tt>opus_int32</tt>: Amount to scale PCM signal by in Q8 dB units.
- * @hideinitializer */
-#define OPUS_SET_GAIN(x) OPUS_SET_GAIN_REQUEST, __opus_check_int(x)
-/** Gets the decoder's configured gain adjustment. @see OPUS_SET_GAIN
- *
- * @param[out] x <tt>opus_int32 *</tt>: Amount to scale PCM signal by in Q8 dB units.
- * @hideinitializer */
-#define OPUS_GET_GAIN(x) OPUS_GET_GAIN_REQUEST, __opus_check_int_ptr(x)
-
-/** Gets the duration (in samples) of the last packet successfully decoded or concealed.
- * @param[out] x <tt>opus_int32 *</tt>: Number of samples (at current sampling rate).
- * @hideinitializer */
-#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x)
-
-/** Gets the pitch of the last decoded frame, if available.
- * This can be used for any post-processing algorithm requiring the use of pitch,
- * e.g. time stretching/shortening. If the last frame was not voiced, or if the
- * pitch was not coded in the frame, then zero is returned.
- *
- * This CTL is only implemented for decoder instances.
- *
- * @param[out] x <tt>opus_int32 *</tt>: pitch period at 48 kHz (or 0 if not available)
- *
- * @hideinitializer */
-#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x)
-
-/**@}*/
-
-/** @defgroup opus_libinfo Opus library information functions
- * @{
- */
-
-/** Converts an opus error code into a human readable string.
- *
- * @param[in] error <tt>int</tt>: Error number
- * @returns Error string
- */
-OPUS_EXPORT const char *opus_strerror(int error);
-
-/** Gets the libopus version string.
- *
- * Applications may look for the substring "-fixed" in the version string to
- * determine whether they have a fixed-point or floating-point build at
- * runtime.
- *
- * @returns Version string
- */
-OPUS_EXPORT const char *opus_get_version_string(void);
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* OPUS_DEFINES_H */
diff --git a/thirdparty/opus/opus/opus_multistream.h b/thirdparty/opus/opus/opus_multistream.h
deleted file mode 100644
index 3622e009fb..0000000000
--- a/thirdparty/opus/opus/opus_multistream.h
+++ /dev/null
@@ -1,660 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
- * @file opus_multistream.h
- * @brief Opus reference implementation multistream API
- */
-
-#ifndef OPUS_MULTISTREAM_H
-#define OPUS_MULTISTREAM_H
-
-#include "opus.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @cond OPUS_INTERNAL_DOC */
-
-/** Macros to trigger compilation errors when the wrong types are provided to a
- * CTL. */
-/**@{*/
-#define __opus_check_encstate_ptr(ptr) ((ptr) + ((ptr) - (OpusEncoder**)(ptr)))
-#define __opus_check_decstate_ptr(ptr) ((ptr) + ((ptr) - (OpusDecoder**)(ptr)))
-/**@}*/
-
-/** These are the actual encoder and decoder CTL ID numbers.
- * They should not be used directly by applications.
- * In general, SETs should be even and GETs should be odd.*/
-/**@{*/
-#define OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST 5120
-#define OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST 5122
-/**@}*/
-
-/** @endcond */
-
-/** @defgroup opus_multistream_ctls Multistream specific encoder and decoder CTLs
- *
- * These are convenience macros that are specific to the
- * opus_multistream_encoder_ctl() and opus_multistream_decoder_ctl()
- * interface.
- * The CTLs from @ref opus_genericctls, @ref opus_encoderctls, and
- * @ref opus_decoderctls may be applied to a multistream encoder or decoder as
- * well.
- * In addition, you may retrieve the encoder or decoder state for an specific
- * stream via #OPUS_MULTISTREAM_GET_ENCODER_STATE or
- * #OPUS_MULTISTREAM_GET_DECODER_STATE and apply CTLs to it individually.
- */
-/**@{*/
-
-/** Gets the encoder state for an individual stream of a multistream encoder.
- * @param[in] x <tt>opus_int32</tt>: The index of the stream whose encoder you
- * wish to retrieve.
- * This must be non-negative and less than
- * the <code>streams</code> parameter used
- * to initialize the encoder.
- * @param[out] y <tt>OpusEncoder**</tt>: Returns a pointer to the given
- * encoder state.
- * @retval OPUS_BAD_ARG The index of the requested stream was out of range.
- * @hideinitializer
- */
-#define OPUS_MULTISTREAM_GET_ENCODER_STATE(x,y) OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST, __opus_check_int(x), __opus_check_encstate_ptr(y)
-
-/** Gets the decoder state for an individual stream of a multistream decoder.
- * @param[in] x <tt>opus_int32</tt>: The index of the stream whose decoder you
- * wish to retrieve.
- * This must be non-negative and less than
- * the <code>streams</code> parameter used
- * to initialize the decoder.
- * @param[out] y <tt>OpusDecoder**</tt>: Returns a pointer to the given
- * decoder state.
- * @retval OPUS_BAD_ARG The index of the requested stream was out of range.
- * @hideinitializer
- */
-#define OPUS_MULTISTREAM_GET_DECODER_STATE(x,y) OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST, __opus_check_int(x), __opus_check_decstate_ptr(y)
-
-/**@}*/
-
-/** @defgroup opus_multistream Opus Multistream API
- * @{
- *
- * The multistream API allows individual Opus streams to be combined into a
- * single packet, enabling support for up to 255 channels. Unlike an
- * elementary Opus stream, the encoder and decoder must negotiate the channel
- * configuration before the decoder can successfully interpret the data in the
- * packets produced by the encoder. Some basic information, such as packet
- * duration, can be computed without any special negotiation.
- *
- * The format for multistream Opus packets is defined in
- * <a href="https://tools.ietf.org/html/rfc7845">RFC 7845</a>
- * and is based on the self-delimited Opus framing described in Appendix B of
- * <a href="https://tools.ietf.org/html/rfc6716">RFC 6716</a>.
- * Normal Opus packets are just a degenerate case of multistream Opus packets,
- * and can be encoded or decoded with the multistream API by setting
- * <code>streams</code> to <code>1</code> when initializing the encoder or
- * decoder.
- *
- * Multistream Opus streams can contain up to 255 elementary Opus streams.
- * These may be either "uncoupled" or "coupled", indicating that the decoder
- * is configured to decode them to either 1 or 2 channels, respectively.
- * The streams are ordered so that all coupled streams appear at the
- * beginning.
- *
- * A <code>mapping</code> table defines which decoded channel <code>i</code>
- * should be used for each input/output (I/O) channel <code>j</code>. This table is
- * typically provided as an unsigned char array.
- * Let <code>i = mapping[j]</code> be the index for I/O channel <code>j</code>.
- * If <code>i < 2*coupled_streams</code>, then I/O channel <code>j</code> is
- * encoded as the left channel of stream <code>(i/2)</code> if <code>i</code>
- * is even, or as the right channel of stream <code>(i/2)</code> if
- * <code>i</code> is odd. Otherwise, I/O channel <code>j</code> is encoded as
- * mono in stream <code>(i - coupled_streams)</code>, unless it has the special
- * value 255, in which case it is omitted from the encoding entirely (the
- * decoder will reproduce it as silence). Each value <code>i</code> must either
- * be the special value 255 or be less than <code>streams + coupled_streams</code>.
- *
- * The output channels specified by the encoder
- * should use the
- * <a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-810004.3.9">Vorbis
- * channel ordering</a>. A decoder may wish to apply an additional permutation
- * to the mapping the encoder used to achieve a different output channel
- * order (e.g. for outputing in WAV order).
- *
- * Each multistream packet contains an Opus packet for each stream, and all of
- * the Opus packets in a single multistream packet must have the same
- * duration. Therefore the duration of a multistream packet can be extracted
- * from the TOC sequence of the first stream, which is located at the
- * beginning of the packet, just like an elementary Opus stream:
- *
- * @code
- * int nb_samples;
- * int nb_frames;
- * nb_frames = opus_packet_get_nb_frames(data, len);
- * if (nb_frames < 1)
- * return nb_frames;
- * nb_samples = opus_packet_get_samples_per_frame(data, 48000) * nb_frames;
- * @endcode
- *
- * The general encoding and decoding process proceeds exactly the same as in
- * the normal @ref opus_encoder and @ref opus_decoder APIs.
- * See their documentation for an overview of how to use the corresponding
- * multistream functions.
- */
-
-/** Opus multistream encoder state.
- * This contains the complete state of a multistream Opus encoder.
- * It is position independent and can be freely copied.
- * @see opus_multistream_encoder_create
- * @see opus_multistream_encoder_init
- */
-typedef struct OpusMSEncoder OpusMSEncoder;
-
-/** Opus multistream decoder state.
- * This contains the complete state of a multistream Opus decoder.
- * It is position independent and can be freely copied.
- * @see opus_multistream_decoder_create
- * @see opus_multistream_decoder_init
- */
-typedef struct OpusMSDecoder OpusMSDecoder;
-
-/**\name Multistream encoder functions */
-/**@{*/
-
-/** Gets the size of an OpusMSEncoder structure.
- * @param streams <tt>int</tt>: The total number of streams to encode from the
- * input.
- * This must be no more than 255.
- * @param coupled_streams <tt>int</tt>: Number of coupled (2 channel) streams
- * to encode.
- * This must be no larger than the total
- * number of streams.
- * Additionally, The total number of
- * encoded channels (<code>streams +
- * coupled_streams</code>) must be no
- * more than 255.
- * @returns The size in bytes on success, or a negative error code
- * (see @ref opus_errorcodes) on error.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_encoder_get_size(
- int streams,
- int coupled_streams
-);
-
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_surround_encoder_get_size(
- int channels,
- int mapping_family
-);
-
-
-/** Allocates and initializes a multistream encoder state.
- * Call opus_multistream_encoder_destroy() to release
- * this object when finished.
- * @param Fs <tt>opus_int32</tt>: Sampling rate of the input signal (in Hz).
- * This must be one of 8000, 12000, 16000,
- * 24000, or 48000.
- * @param channels <tt>int</tt>: Number of channels in the input signal.
- * This must be at most 255.
- * It may be greater than the number of
- * coded channels (<code>streams +
- * coupled_streams</code>).
- * @param streams <tt>int</tt>: The total number of streams to encode from the
- * input.
- * This must be no more than the number of channels.
- * @param coupled_streams <tt>int</tt>: Number of coupled (2 channel) streams
- * to encode.
- * This must be no larger than the total
- * number of streams.
- * Additionally, The total number of
- * encoded channels (<code>streams +
- * coupled_streams</code>) must be no
- * more than the number of input channels.
- * @param[in] mapping <code>const unsigned char[channels]</code>: Mapping from
- * encoded channels to input channels, as described in
- * @ref opus_multistream. As an extra constraint, the
- * multistream encoder does not allow encoding coupled
- * streams for which one channel is unused since this
- * is never a good idea.
- * @param application <tt>int</tt>: The target encoder application.
- * This must be one of the following:
- * <dl>
- * <dt>#OPUS_APPLICATION_VOIP</dt>
- * <dd>Process signal for improved speech intelligibility.</dd>
- * <dt>#OPUS_APPLICATION_AUDIO</dt>
- * <dd>Favor faithfulness to the original input.</dd>
- * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt>
- * <dd>Configure the minimum possible coding delay by disabling certain modes
- * of operation.</dd>
- * </dl>
- * @param[out] error <tt>int *</tt>: Returns #OPUS_OK on success, or an error
- * code (see @ref opus_errorcodes) on
- * failure.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_encoder_create(
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping,
- int application,
- int *error
-) OPUS_ARG_NONNULL(5);
-
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_surround_encoder_create(
- opus_int32 Fs,
- int channels,
- int mapping_family,
- int *streams,
- int *coupled_streams,
- unsigned char *mapping,
- int application,
- int *error
-) OPUS_ARG_NONNULL(5);
-
-/** Initialize a previously allocated multistream encoder state.
- * The memory pointed to by \a st must be at least the size returned by
- * opus_multistream_encoder_get_size().
- * This is intended for applications which use their own allocator instead of
- * malloc.
- * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL.
- * @see opus_multistream_encoder_create
- * @see opus_multistream_encoder_get_size
- * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state to initialize.
- * @param Fs <tt>opus_int32</tt>: Sampling rate of the input signal (in Hz).
- * This must be one of 8000, 12000, 16000,
- * 24000, or 48000.
- * @param channels <tt>int</tt>: Number of channels in the input signal.
- * This must be at most 255.
- * It may be greater than the number of
- * coded channels (<code>streams +
- * coupled_streams</code>).
- * @param streams <tt>int</tt>: The total number of streams to encode from the
- * input.
- * This must be no more than the number of channels.
- * @param coupled_streams <tt>int</tt>: Number of coupled (2 channel) streams
- * to encode.
- * This must be no larger than the total
- * number of streams.
- * Additionally, The total number of
- * encoded channels (<code>streams +
- * coupled_streams</code>) must be no
- * more than the number of input channels.
- * @param[in] mapping <code>const unsigned char[channels]</code>: Mapping from
- * encoded channels to input channels, as described in
- * @ref opus_multistream. As an extra constraint, the
- * multistream encoder does not allow encoding coupled
- * streams for which one channel is unused since this
- * is never a good idea.
- * @param application <tt>int</tt>: The target encoder application.
- * This must be one of the following:
- * <dl>
- * <dt>#OPUS_APPLICATION_VOIP</dt>
- * <dd>Process signal for improved speech intelligibility.</dd>
- * <dt>#OPUS_APPLICATION_AUDIO</dt>
- * <dd>Favor faithfulness to the original input.</dd>
- * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt>
- * <dd>Configure the minimum possible coding delay by disabling certain modes
- * of operation.</dd>
- * </dl>
- * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes)
- * on failure.
- */
-OPUS_EXPORT int opus_multistream_encoder_init(
- OpusMSEncoder *st,
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping,
- int application
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
-
-OPUS_EXPORT int opus_multistream_surround_encoder_init(
- OpusMSEncoder *st,
- opus_int32 Fs,
- int channels,
- int mapping_family,
- int *streams,
- int *coupled_streams,
- unsigned char *mapping,
- int application
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
-
-/** Encodes a multistream Opus frame.
- * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state.
- * @param[in] pcm <tt>const opus_int16*</tt>: The input signal as interleaved
- * samples.
- * This must contain
- * <code>frame_size*channels</code>
- * samples.
- * @param frame_size <tt>int</tt>: Number of samples per channel in the input
- * signal.
- * This must be an Opus frame size for the
- * encoder's sampling rate.
- * For example, at 48 kHz the permitted values
- * are 120, 240, 480, 960, 1920, and 2880.
- * Passing in a duration of less than 10 ms
- * (480 samples at 48 kHz) will prevent the
- * encoder from using the LPC or hybrid modes.
- * @param[out] data <tt>unsigned char*</tt>: Output payload.
- * This must contain storage for at
- * least \a max_data_bytes.
- * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated
- * memory for the output
- * payload. This may be
- * used to impose an upper limit on
- * the instant bitrate, but should
- * not be used as the only bitrate
- * control. Use #OPUS_SET_BITRATE to
- * control the bitrate.
- * @returns The length of the encoded packet (in bytes) on success or a
- * negative error code (see @ref opus_errorcodes) on failure.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode(
- OpusMSEncoder *st,
- const opus_int16 *pcm,
- int frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
-
-/** Encodes a multistream Opus frame from floating point input.
- * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state.
- * @param[in] pcm <tt>const float*</tt>: The input signal as interleaved
- * samples with a normal range of
- * +/-1.0.
- * Samples with a range beyond +/-1.0
- * are supported but will be clipped by
- * decoders using the integer API and
- * should only be used if it is known
- * that the far end supports extended
- * dynamic range.
- * This must contain
- * <code>frame_size*channels</code>
- * samples.
- * @param frame_size <tt>int</tt>: Number of samples per channel in the input
- * signal.
- * This must be an Opus frame size for the
- * encoder's sampling rate.
- * For example, at 48 kHz the permitted values
- * are 120, 240, 480, 960, 1920, and 2880.
- * Passing in a duration of less than 10 ms
- * (480 samples at 48 kHz) will prevent the
- * encoder from using the LPC or hybrid modes.
- * @param[out] data <tt>unsigned char*</tt>: Output payload.
- * This must contain storage for at
- * least \a max_data_bytes.
- * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated
- * memory for the output
- * payload. This may be
- * used to impose an upper limit on
- * the instant bitrate, but should
- * not be used as the only bitrate
- * control. Use #OPUS_SET_BITRATE to
- * control the bitrate.
- * @returns The length of the encoded packet (in bytes) on success or a
- * negative error code (see @ref opus_errorcodes) on failure.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode_float(
- OpusMSEncoder *st,
- const float *pcm,
- int frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
-
-/** Frees an <code>OpusMSEncoder</code> allocated by
- * opus_multistream_encoder_create().
- * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state to be freed.
- */
-OPUS_EXPORT void opus_multistream_encoder_destroy(OpusMSEncoder *st);
-
-/** Perform a CTL function on a multistream Opus encoder.
- *
- * Generally the request and subsequent arguments are generated by a
- * convenience macro.
- * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state.
- * @param request This and all remaining parameters should be replaced by one
- * of the convenience macros in @ref opus_genericctls,
- * @ref opus_encoderctls, or @ref opus_multistream_ctls.
- * @see opus_genericctls
- * @see opus_encoderctls
- * @see opus_multistream_ctls
- */
-OPUS_EXPORT int opus_multistream_encoder_ctl(OpusMSEncoder *st, int request, ...) OPUS_ARG_NONNULL(1);
-
-/**@}*/
-
-/**\name Multistream decoder functions */
-/**@{*/
-
-/** Gets the size of an <code>OpusMSDecoder</code> structure.
- * @param streams <tt>int</tt>: The total number of streams coded in the
- * input.
- * This must be no more than 255.
- * @param coupled_streams <tt>int</tt>: Number streams to decode as coupled
- * (2 channel) streams.
- * This must be no larger than the total
- * number of streams.
- * Additionally, The total number of
- * coded channels (<code>streams +
- * coupled_streams</code>) must be no
- * more than 255.
- * @returns The size in bytes on success, or a negative error code
- * (see @ref opus_errorcodes) on error.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_decoder_get_size(
- int streams,
- int coupled_streams
-);
-
-/** Allocates and initializes a multistream decoder state.
- * Call opus_multistream_decoder_destroy() to release
- * this object when finished.
- * @param Fs <tt>opus_int32</tt>: Sampling rate to decode at (in Hz).
- * This must be one of 8000, 12000, 16000,
- * 24000, or 48000.
- * @param channels <tt>int</tt>: Number of channels to output.
- * This must be at most 255.
- * It may be different from the number of coded
- * channels (<code>streams +
- * coupled_streams</code>).
- * @param streams <tt>int</tt>: The total number of streams coded in the
- * input.
- * This must be no more than 255.
- * @param coupled_streams <tt>int</tt>: Number of streams to decode as coupled
- * (2 channel) streams.
- * This must be no larger than the total
- * number of streams.
- * Additionally, The total number of
- * coded channels (<code>streams +
- * coupled_streams</code>) must be no
- * more than 255.
- * @param[in] mapping <code>const unsigned char[channels]</code>: Mapping from
- * coded channels to output channels, as described in
- * @ref opus_multistream.
- * @param[out] error <tt>int *</tt>: Returns #OPUS_OK on success, or an error
- * code (see @ref opus_errorcodes) on
- * failure.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSDecoder *opus_multistream_decoder_create(
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping,
- int *error
-) OPUS_ARG_NONNULL(5);
-
-/** Intialize a previously allocated decoder state object.
- * The memory pointed to by \a st must be at least the size returned by
- * opus_multistream_encoder_get_size().
- * This is intended for applications which use their own allocator instead of
- * malloc.
- * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL.
- * @see opus_multistream_decoder_create
- * @see opus_multistream_deocder_get_size
- * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state to initialize.
- * @param Fs <tt>opus_int32</tt>: Sampling rate to decode at (in Hz).
- * This must be one of 8000, 12000, 16000,
- * 24000, or 48000.
- * @param channels <tt>int</tt>: Number of channels to output.
- * This must be at most 255.
- * It may be different from the number of coded
- * channels (<code>streams +
- * coupled_streams</code>).
- * @param streams <tt>int</tt>: The total number of streams coded in the
- * input.
- * This must be no more than 255.
- * @param coupled_streams <tt>int</tt>: Number of streams to decode as coupled
- * (2 channel) streams.
- * This must be no larger than the total
- * number of streams.
- * Additionally, The total number of
- * coded channels (<code>streams +
- * coupled_streams</code>) must be no
- * more than 255.
- * @param[in] mapping <code>const unsigned char[channels]</code>: Mapping from
- * coded channels to output channels, as described in
- * @ref opus_multistream.
- * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes)
- * on failure.
- */
-OPUS_EXPORT int opus_multistream_decoder_init(
- OpusMSDecoder *st,
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
-
-/** Decode a multistream Opus packet.
- * @param st <tt>OpusMSDecoder*</tt>: Multistream decoder state.
- * @param[in] data <tt>const unsigned char*</tt>: Input payload.
- * Use a <code>NULL</code>
- * pointer to indicate packet
- * loss.
- * @param len <tt>opus_int32</tt>: Number of bytes in payload.
- * @param[out] pcm <tt>opus_int16*</tt>: Output signal, with interleaved
- * samples.
- * This must contain room for
- * <code>frame_size*channels</code>
- * samples.
- * @param frame_size <tt>int</tt>: The number of samples per channel of
- * available space in \a pcm.
- * If this is less than the maximum packet duration
- * (120 ms; 5760 for 48kHz), this function will not be capable
- * of decoding some packets. In the case of PLC (data==NULL)
- * or FEC (decode_fec=1), then frame_size needs to be exactly
- * the duration of audio that is missing, otherwise the
- * decoder will not be in the optimal state to decode the
- * next incoming packet. For the PLC and FEC cases, frame_size
- * <b>must</b> be a multiple of 2.5 ms.
- * @param decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band
- * forward error correction data be decoded.
- * If no such data is available, the frame is
- * decoded as if it were lost.
- * @returns Number of samples decoded on success or a negative error code
- * (see @ref opus_errorcodes) on failure.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode(
- OpusMSDecoder *st,
- const unsigned char *data,
- opus_int32 len,
- opus_int16 *pcm,
- int frame_size,
- int decode_fec
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
-
-/** Decode a multistream Opus packet with floating point output.
- * @param st <tt>OpusMSDecoder*</tt>: Multistream decoder state.
- * @param[in] data <tt>const unsigned char*</tt>: Input payload.
- * Use a <code>NULL</code>
- * pointer to indicate packet
- * loss.
- * @param len <tt>opus_int32</tt>: Number of bytes in payload.
- * @param[out] pcm <tt>opus_int16*</tt>: Output signal, with interleaved
- * samples.
- * This must contain room for
- * <code>frame_size*channels</code>
- * samples.
- * @param frame_size <tt>int</tt>: The number of samples per channel of
- * available space in \a pcm.
- * If this is less than the maximum packet duration
- * (120 ms; 5760 for 48kHz), this function will not be capable
- * of decoding some packets. In the case of PLC (data==NULL)
- * or FEC (decode_fec=1), then frame_size needs to be exactly
- * the duration of audio that is missing, otherwise the
- * decoder will not be in the optimal state to decode the
- * next incoming packet. For the PLC and FEC cases, frame_size
- * <b>must</b> be a multiple of 2.5 ms.
- * @param decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band
- * forward error correction data be decoded.
- * If no such data is available, the frame is
- * decoded as if it were lost.
- * @returns Number of samples decoded on success or a negative error code
- * (see @ref opus_errorcodes) on failure.
- */
-OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode_float(
- OpusMSDecoder *st,
- const unsigned char *data,
- opus_int32 len,
- float *pcm,
- int frame_size,
- int decode_fec
-) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
-
-/** Perform a CTL function on a multistream Opus decoder.
- *
- * Generally the request and subsequent arguments are generated by a
- * convenience macro.
- * @param st <tt>OpusMSDecoder*</tt>: Multistream decoder state.
- * @param request This and all remaining parameters should be replaced by one
- * of the convenience macros in @ref opus_genericctls,
- * @ref opus_decoderctls, or @ref opus_multistream_ctls.
- * @see opus_genericctls
- * @see opus_decoderctls
- * @see opus_multistream_ctls
- */
-OPUS_EXPORT int opus_multistream_decoder_ctl(OpusMSDecoder *st, int request, ...) OPUS_ARG_NONNULL(1);
-
-/** Frees an <code>OpusMSDecoder</code> allocated by
- * opus_multistream_decoder_create().
- * @param st <tt>OpusMSDecoder</tt>: Multistream decoder state to be freed.
- */
-OPUS_EXPORT void opus_multistream_decoder_destroy(OpusMSDecoder *st);
-
-/**@}*/
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* OPUS_MULTISTREAM_H */
diff --git a/thirdparty/opus/opus/opus_types.h b/thirdparty/opus/opus/opus_types.h
deleted file mode 100644
index b28e03aea2..0000000000
--- a/thirdparty/opus/opus/opus_types.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* (C) COPYRIGHT 1994-2002 Xiph.Org Foundation */
-/* Modified by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-/* opus_types.h based on ogg_types.h from libogg */
-
-/**
- @file opus_types.h
- @brief Opus reference implementation types
-*/
-#ifndef OPUS_TYPES_H
-#define OPUS_TYPES_H
-
-/* Use the real stdint.h if it's there (taken from Paul Hsieh's pstdint.h) */
-#if (defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H))
-#include <stdint.h>
-
- typedef int16_t opus_int16;
- typedef uint16_t opus_uint16;
- typedef int32_t opus_int32;
- typedef uint32_t opus_uint32;
-#elif defined(_WIN32)
-
-# if defined(__CYGWIN__)
-# include <_G_config.h>
- typedef _G_int32_t opus_int32;
- typedef _G_uint32_t opus_uint32;
- typedef _G_int16 opus_int16;
- typedef _G_uint16 opus_uint16;
-# elif defined(__MINGW32__)
- typedef short opus_int16;
- typedef unsigned short opus_uint16;
- typedef int opus_int32;
- typedef unsigned int opus_uint32;
-# elif defined(__MWERKS__)
- typedef int opus_int32;
- typedef unsigned int opus_uint32;
- typedef short opus_int16;
- typedef unsigned short opus_uint16;
-# else
- /* MSVC/Borland */
- typedef __int32 opus_int32;
- typedef unsigned __int32 opus_uint32;
- typedef __int16 opus_int16;
- typedef unsigned __int16 opus_uint16;
-# endif
-
-#elif defined(__MACOS__)
-
-# include <sys/types.h>
- typedef SInt16 opus_int16;
- typedef UInt16 opus_uint16;
- typedef SInt32 opus_int32;
- typedef UInt32 opus_uint32;
-
-#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
-
-# include <sys/types.h>
- typedef int16_t opus_int16;
- typedef u_int16_t opus_uint16;
- typedef int32_t opus_int32;
- typedef u_int32_t opus_uint32;
-
-#elif defined(__BEOS__)
-
- /* Be */
-# include <inttypes.h>
- typedef int16 opus_int16;
- typedef u_int16 opus_uint16;
- typedef int32_t opus_int32;
- typedef u_int32_t opus_uint32;
-
-#elif defined (__EMX__)
-
- /* OS/2 GCC */
- typedef short opus_int16;
- typedef unsigned short opus_uint16;
- typedef int opus_int32;
- typedef unsigned int opus_uint32;
-
-#elif defined (DJGPP)
-
- /* DJGPP */
- typedef short opus_int16;
- typedef unsigned short opus_uint16;
- typedef int opus_int32;
- typedef unsigned int opus_uint32;
-
-#elif defined(R5900)
-
- /* PS2 EE */
- typedef int opus_int32;
- typedef unsigned opus_uint32;
- typedef short opus_int16;
- typedef unsigned short opus_uint16;
-
-#elif defined(__SYMBIAN32__)
-
- /* Symbian GCC */
- typedef signed short opus_int16;
- typedef unsigned short opus_uint16;
- typedef signed int opus_int32;
- typedef unsigned int opus_uint32;
-
-#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
-
- typedef short opus_int16;
- typedef unsigned short opus_uint16;
- typedef long opus_int32;
- typedef unsigned long opus_uint32;
-
-#elif defined(CONFIG_TI_C6X)
-
- typedef short opus_int16;
- typedef unsigned short opus_uint16;
- typedef int opus_int32;
- typedef unsigned int opus_uint32;
-
-#else
-
- /* Give up, take a reasonable guess */
- typedef short opus_int16;
- typedef unsigned short opus_uint16;
- typedef int opus_int32;
- typedef unsigned int opus_uint32;
-
-#endif
-
-#define opus_int int /* used for counters etc; at least 16 bits */
-#define opus_int64 long long
-#define opus_int8 signed char
-
-#define opus_uint unsigned int /* used for counters etc; at least 16 bits */
-#define opus_uint64 unsigned long long
-#define opus_uint8 unsigned char
-
-#endif /* OPUS_TYPES_H */
diff --git a/thirdparty/opus/opus/opusfile.h b/thirdparty/opus/opus/opusfile.h
deleted file mode 100644
index 4bf2fba926..0000000000
--- a/thirdparty/opus/opus/opusfile.h
+++ /dev/null
@@ -1,2157 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 *
- * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $
-
- ********************************************************************/
-#if !defined(_opusfile_h)
-# define _opusfile_h (1)
-
-/**\mainpage
- \section Introduction
-
- This is the documentation for the <tt>libopusfile</tt> C API.
-
- The <tt>libopusfile</tt> package provides a convenient high-level API for
- decoding and basic manipulation of all Ogg Opus audio streams.
- <tt>libopusfile</tt> is implemented as a layer on top of Xiph.Org's
- reference
- <tt><a href="https://www.xiph.org/ogg/doc/libogg/reference.html">libogg</a></tt>
- and
- <tt><a href="https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/index.html">libopus</a></tt>
- libraries.
-
- <tt>libopusfile</tt> provides several sets of built-in routines for
- file/stream access, and may also use custom stream I/O routines provided by
- the embedded environment.
- There are built-in I/O routines provided for ANSI-compliant
- <code>stdio</code> (<code>FILE *</code>), memory buffers, and URLs
- (including <file:> URLs, plus optionally <http:> and <https:> URLs).
-
- \section Organization
-
- The main API is divided into several sections:
- - \ref stream_open_close
- - \ref stream_info
- - \ref stream_decoding
- - \ref stream_seeking
-
- Several additional sections are not tied to the main API.
- - \ref stream_callbacks
- - \ref header_info
- - \ref error_codes
-
- \section Overview
-
- The <tt>libopusfile</tt> API always decodes files to 48&nbsp;kHz.
- The original sample rate is not preserved by the lossy compression, though
- it is stored in the header to allow you to resample to it after decoding
- (the <tt>libopusfile</tt> API does not currently provide a resampler,
- but the
- <a href="http://www.speex.org/docs/manual/speex-manual/node7.html#SECTION00760000000000000000">the
- Speex resampler</a> is a good choice if you need one).
- In general, if you are playing back the audio, you should leave it at
- 48&nbsp;kHz, provided your audio hardware supports it.
- When decoding to a file, it may be worth resampling back to the original
- sample rate, so as not to surprise users who might not expect the sample
- rate to change after encoding to Opus and decoding.
-
- Opus files can contain anywhere from 1 to 255 channels of audio.
- The channel mappings for up to 8 channels are the same as the
- <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis
- mappings</a>.
- A special stereo API can convert everything to 2 channels, making it simple
- to support multichannel files in an application which only has stereo
- output.
- Although the <tt>libopusfile</tt> ABI provides support for the theoretical
- maximum number of channels, the current implementation does not support
- files with more than 8 channels, as they do not have well-defined channel
- mappings.
-
- Like all Ogg files, Opus files may be "chained".
- That is, multiple Opus files may be combined into a single, longer file just
- by concatenating the original files.
- This is commonly done in internet radio streaming, as it allows the title
- and artist to be updated each time the song changes, since each link in the
- chain includes its own set of metadata.
-
- <tt>libopusfile</tt> fully supports chained files.
- It will decode the first Opus stream found in each link of a chained file
- (ignoring any other streams that might be concurrently multiplexed with it,
- such as a video stream).
-
- The channel count can also change between links.
- If your application is not prepared to deal with this, it can use the stereo
- API to ensure the audio from all links will always get decoded into a
- common format.
- Since <tt>libopusfile</tt> always decodes to 48&nbsp;kHz, you do not have to
- worry about the sample rate changing between links (as was possible with
- Vorbis).
- This makes application support for chained files with <tt>libopusfile</tt>
- very easy.*/
-
-# if defined(__cplusplus)
-extern "C" {
-# endif
-
-# include <stdarg.h>
-# include <stdio.h>
-# include <ogg/ogg.h>
-# include <opus_multistream.h>
-
-/**@cond PRIVATE*/
-
-/*Enable special features for gcc and gcc-compatible compilers.*/
-# if !defined(OP_GNUC_PREREQ)
-# if defined(__GNUC__)&&defined(__GNUC_MINOR__)
-# define OP_GNUC_PREREQ(_maj,_min) \
- ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min))
-# else
-# define OP_GNUC_PREREQ(_maj,_min) 0
-# endif
-# endif
-
-# if OP_GNUC_PREREQ(4,0)
-# pragma GCC visibility push(default)
-# endif
-
-typedef struct OpusHead OpusHead;
-typedef struct OpusTags OpusTags;
-typedef struct OpusPictureTag OpusPictureTag;
-typedef struct OpusServerInfo OpusServerInfo;
-typedef struct OpusFileCallbacks OpusFileCallbacks;
-typedef struct OggOpusFile OggOpusFile;
-
-/*Warning attributes for libopusfile functions.*/
-# if OP_GNUC_PREREQ(3,4)
-# define OP_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
-# else
-# define OP_WARN_UNUSED_RESULT
-# endif
-# if OP_GNUC_PREREQ(3,4)
-# define OP_ARG_NONNULL(_x) __attribute__((__nonnull__(_x)))
-# else
-# define OP_ARG_NONNULL(_x)
-# endif
-
-/**@endcond*/
-
-/**\defgroup error_codes Error Codes*/
-/*@{*/
-/**\name List of possible error codes
- Many of the functions in this library return a negative error code when a
- function fails.
- This list provides a brief explanation of the common errors.
- See each individual function for more details on what a specific error code
- means in that context.*/
-/*@{*/
-
-/**A request did not succeed.*/
-#define OP_FALSE (-1)
-/*Currently not used externally.*/
-#define OP_EOF (-2)
-/**There was a hole in the page sequence numbers (e.g., a page was corrupt or
- missing).*/
-#define OP_HOLE (-3)
-/**An underlying read, seek, or tell operation failed when it should have
- succeeded.*/
-#define OP_EREAD (-128)
-/**A <code>NULL</code> pointer was passed where one was unexpected, or an
- internal memory allocation failed, or an internal library error was
- encountered.*/
-#define OP_EFAULT (-129)
-/**The stream used a feature that is not implemented, such as an unsupported
- channel family.*/
-#define OP_EIMPL (-130)
-/**One or more parameters to a function were invalid.*/
-#define OP_EINVAL (-131)
-/**A purported Ogg Opus stream did not begin with an Ogg page, a purported
- header packet did not start with one of the required strings, "OpusHead" or
- "OpusTags", or a link in a chained file was encountered that did not
- contain any logical Opus streams.*/
-#define OP_ENOTFORMAT (-132)
-/**A required header packet was not properly formatted, contained illegal
- values, or was missing altogether.*/
-#define OP_EBADHEADER (-133)
-/**The ID header contained an unrecognized version number.*/
-#define OP_EVERSION (-134)
-/*Currently not used at all.*/
-#define OP_ENOTAUDIO (-135)
-/**An audio packet failed to decode properly.
- This is usually caused by a multistream Ogg packet where the durations of
- the individual Opus packets contained in it are not all the same.*/
-#define OP_EBADPACKET (-136)
-/**We failed to find data we had seen before, or the bitstream structure was
- sufficiently malformed that seeking to the target destination was
- impossible.*/
-#define OP_EBADLINK (-137)
-/**An operation that requires seeking was requested on an unseekable stream.*/
-#define OP_ENOSEEK (-138)
-/**The first or last granule position of a link failed basic validity checks.*/
-#define OP_EBADTIMESTAMP (-139)
-
-/*@}*/
-/*@}*/
-
-/**\defgroup header_info Header Information*/
-/*@{*/
-
-/**The maximum number of channels in an Ogg Opus stream.*/
-#define OPUS_CHANNEL_COUNT_MAX (255)
-
-/**Ogg Opus bitstream information.
- This contains the basic playback parameters for a stream, and corresponds to
- the initial ID header packet of an Ogg Opus stream.*/
-struct OpusHead{
- /**The Ogg Opus format version, in the range 0...255.
- The top 4 bits represent a "major" version, and the bottom four bits
- represent backwards-compatible "minor" revisions.
- The current specification describes version 1.
- This library will recognize versions up through 15 as backwards compatible
- with the current specification.
- An earlier draft of the specification described a version 0, but the only
- difference between version 1 and version 0 is that version 0 did
- not specify the semantics for handling the version field.*/
- int version;
- /**The number of channels, in the range 1...255.*/
- int channel_count;
- /**The number of samples that should be discarded from the beginning of the
- stream.*/
- unsigned pre_skip;
- /**The sampling rate of the original input.
- All Opus audio is coded at 48 kHz, and should also be decoded at 48 kHz
- for playback (unless the target hardware does not support this sampling
- rate).
- However, this field may be used to resample the audio back to the original
- sampling rate, for example, when saving the output to a file.*/
- opus_uint32 input_sample_rate;
- /**The gain to apply to the decoded output, in dB, as a Q8 value in the range
- -32768...32767.
- The <tt>libopusfile</tt> API will automatically apply this gain to the
- decoded output before returning it, scaling it by
- <code>pow(10,output_gain/(20.0*256))</code>.*/
- int output_gain;
- /**The channel mapping family, in the range 0...255.
- Channel mapping family 0 covers mono or stereo in a single stream.
- Channel mapping family 1 covers 1 to 8 channels in one or more streams,
- using the Vorbis speaker assignments.
- Channel mapping family 255 covers 1 to 255 channels in one or more
- streams, but without any defined speaker assignment.*/
- int mapping_family;
- /**The number of Opus streams in each Ogg packet, in the range 1...255.*/
- int stream_count;
- /**The number of coupled Opus streams in each Ogg packet, in the range
- 0...127.
- This must satisfy <code>0 <= coupled_count <= stream_count</code> and
- <code>coupled_count + stream_count <= 255</code>.
- The coupled streams appear first, before all uncoupled streams, in an Ogg
- Opus packet.*/
- int coupled_count;
- /**The mapping from coded stream channels to output channels.
- Let <code>index=mapping[k]</code> be the value for channel <code>k</code>.
- If <code>index<2*coupled_count</code>, then it refers to the left channel
- from stream <code>(index/2)</code> if even, and the right channel from
- stream <code>(index/2)</code> if odd.
- Otherwise, it refers to the output of the uncoupled stream
- <code>(index-coupled_count)</code>.*/
- unsigned char mapping[OPUS_CHANNEL_COUNT_MAX];
-};
-
-/**The metadata from an Ogg Opus stream.
-
- This structure holds the in-stream metadata corresponding to the 'comment'
- header packet of an Ogg Opus stream.
- The comment header is meant to be used much like someone jotting a quick
- note on the label of a CD.
- It should be a short, to the point text note that can be more than a couple
- words, but not more than a short paragraph.
-
- The metadata is stored as a series of (tag, value) pairs, in length-encoded
- string vectors, using the same format as Vorbis (without the final "framing
- bit"), Theora, and Speex, except for the packet header.
- The first occurrence of the '=' character delimits the tag and value.
- A particular tag may occur more than once, and order is significant.
- The character set encoding for the strings is always UTF-8, but the tag
- names are limited to ASCII, and treated as case-insensitive.
- See <a href="http://www.xiph.org/vorbis/doc/v-comment.html">the Vorbis
- comment header specification</a> for details.
-
- In filling in this structure, <tt>libopusfile</tt> will null-terminate the
- #user_comments strings for safety.
- However, the bitstream format itself treats them as 8-bit clean vectors,
- possibly containing NUL characters, so the #comment_lengths array should be
- treated as their authoritative length.
-
- This structure is binary and source-compatible with a
- <code>vorbis_comment</code>, and pointers to it may be freely cast to
- <code>vorbis_comment</code> pointers, and vice versa.
- It is provided as a separate type to avoid introducing a compile-time
- dependency on the libvorbis headers.*/
-struct OpusTags{
- /**The array of comment string vectors.*/
- char **user_comments;
- /**An array of the corresponding length of each vector, in bytes.*/
- int *comment_lengths;
- /**The total number of comment streams.*/
- int comments;
- /**The null-terminated vendor string.
- This identifies the software used to encode the stream.*/
- char *vendor;
-};
-
-/**\name Picture tag image formats*/
-/*@{*/
-
-/**The MIME type was not recognized, or the image data did not match the
- declared MIME type.*/
-#define OP_PIC_FORMAT_UNKNOWN (-1)
-/**The MIME type indicates the image data is really a URL.*/
-#define OP_PIC_FORMAT_URL (0)
-/**The image is a JPEG.*/
-#define OP_PIC_FORMAT_JPEG (1)
-/**The image is a PNG.*/
-#define OP_PIC_FORMAT_PNG (2)
-/**The image is a GIF.*/
-#define OP_PIC_FORMAT_GIF (3)
-
-/*@}*/
-
-/**The contents of a METADATA_BLOCK_PICTURE tag.*/
-struct OpusPictureTag{
- /**The picture type according to the ID3v2 APIC frame:
- <ol start="0">
- <li>Other</li>
- <li>32x32 pixels 'file icon' (PNG only)</li>
- <li>Other file icon</li>
- <li>Cover (front)</li>
- <li>Cover (back)</li>
- <li>Leaflet page</li>
- <li>Media (e.g. label side of CD)</li>
- <li>Lead artist/lead performer/soloist</li>
- <li>Artist/performer</li>
- <li>Conductor</li>
- <li>Band/Orchestra</li>
- <li>Composer</li>
- <li>Lyricist/text writer</li>
- <li>Recording Location</li>
- <li>During recording</li>
- <li>During performance</li>
- <li>Movie/video screen capture</li>
- <li>A bright colored fish</li>
- <li>Illustration</li>
- <li>Band/artist logotype</li>
- <li>Publisher/Studio logotype</li>
- </ol>
- Others are reserved and should not be used.
- There may only be one each of picture type 1 and 2 in a file.*/
- opus_int32 type;
- /**The MIME type of the picture, in printable ASCII characters 0x20-0x7E.
- The MIME type may also be <code>"-->"</code> to signify that the data part
- is a URL pointing to the picture instead of the picture data itself.
- In this case, a terminating NUL is appended to the URL string in #data,
- but #data_length is set to the length of the string excluding that
- terminating NUL.*/
- char *mime_type;
- /**The description of the picture, in UTF-8.*/
- char *description;
- /**The width of the picture in pixels.*/
- opus_uint32 width;
- /**The height of the picture in pixels.*/
- opus_uint32 height;
- /**The color depth of the picture in bits-per-pixel (<em>not</em>
- bits-per-channel).*/
- opus_uint32 depth;
- /**For indexed-color pictures (e.g., GIF), the number of colors used, or 0
- for non-indexed pictures.*/
- opus_uint32 colors;
- /**The length of the picture data in bytes.*/
- opus_uint32 data_length;
- /**The binary picture data.*/
- unsigned char *data;
- /**The format of the picture data, if known.
- One of
- <ul>
- <li>#OP_PIC_FORMAT_UNKNOWN,</li>
- <li>#OP_PIC_FORMAT_URL,</li>
- <li>#OP_PIC_FORMAT_JPEG,</li>
- <li>#OP_PIC_FORMAT_PNG, or</li>
- <li>#OP_PIC_FORMAT_GIF.</li>
- </ul>*/
- int format;
-};
-
-/**\name Functions for manipulating header data
-
- These functions manipulate the #OpusHead and #OpusTags structures,
- which describe the audio parameters and tag-value metadata, respectively.
- These can be used to query the headers returned by <tt>libopusfile</tt>, or
- to parse Opus headers from sources other than an Ogg Opus stream, provided
- they use the same format.*/
-/*@{*/
-
-/**Parses the contents of the ID header packet of an Ogg Opus stream.
- \param[out] _head Returns the contents of the parsed packet.
- The contents of this structure are untouched on error.
- This may be <code>NULL</code> to merely test the header
- for validity.
- \param[in] _data The contents of the ID header packet.
- \param _len The number of bytes of data in the ID header packet.
- \return 0 on success or a negative value on error.
- \retval #OP_ENOTFORMAT If the data does not start with the "OpusHead"
- string.
- \retval #OP_EVERSION If the version field signaled a version this library
- does not know how to parse.
- \retval #OP_EIMPL If the channel mapping family was 255, which general
- purpose players should not attempt to play.
- \retval #OP_EBADHEADER If the contents of the packet otherwise violate the
- Ogg Opus specification:
- <ul>
- <li>Insufficient data,</li>
- <li>Too much data for the known minor versions,</li>
- <li>An unrecognized channel mapping family,</li>
- <li>Zero channels or too many channels,</li>
- <li>Zero coded streams,</li>
- <li>Too many coupled streams, or</li>
- <li>An invalid channel mapping index.</li>
- </ul>*/
-OP_WARN_UNUSED_RESULT int opus_head_parse(OpusHead *_head,
- const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2);
-
-/**Converts a granule position to a sample offset for a given Ogg Opus stream.
- The sample offset is simply <code>_gp-_head->pre_skip</code>.
- Granule position values smaller than OpusHead#pre_skip correspond to audio
- that should never be played, and thus have no associated sample offset.
- This function returns -1 for such values.
- This function also correctly handles extremely large granule positions,
- which may have wrapped around to a negative number when stored in a signed
- ogg_int64_t value.
- \param _head The #OpusHead information from the ID header of the stream.
- \param _gp The granule position to convert.
- \return The sample offset associated with the given granule position
- (counting at a 48 kHz sampling rate), or the special value -1 on
- error (i.e., the granule position was smaller than the pre-skip
- amount).*/
-ogg_int64_t opus_granule_sample(const OpusHead *_head,ogg_int64_t _gp)
- OP_ARG_NONNULL(1);
-
-/**Parses the contents of the 'comment' header packet of an Ogg Opus stream.
- \param[out] _tags An uninitialized #OpusTags structure.
- This returns the contents of the parsed packet.
- The contents of this structure are untouched on error.
- This may be <code>NULL</code> to merely test the header
- for validity.
- \param[in] _data The contents of the 'comment' header packet.
- \param _len The number of bytes of data in the 'info' header packet.
- \retval 0 Success.
- \retval #OP_ENOTFORMAT If the data does not start with the "OpusTags"
- string.
- \retval #OP_EBADHEADER If the contents of the packet otherwise violate the
- Ogg Opus specification.
- \retval #OP_EFAULT If there wasn't enough memory to store the tags.*/
-OP_WARN_UNUSED_RESULT int opus_tags_parse(OpusTags *_tags,
- const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2);
-
-/**Performs a deep copy of an #OpusTags structure.
- \param _dst The #OpusTags structure to copy into.
- If this function fails, the contents of this structure remain
- untouched.
- \param _src The #OpusTags structure to copy from.
- \retval 0 Success.
- \retval #OP_EFAULT If there wasn't enough memory to copy the tags.*/
-int opus_tags_copy(OpusTags *_dst,const OpusTags *_src) OP_ARG_NONNULL(1);
-
-/**Initializes an #OpusTags structure.
- This should be called on a freshly allocated #OpusTags structure before
- attempting to use it.
- \param _tags The #OpusTags structure to initialize.*/
-void opus_tags_init(OpusTags *_tags) OP_ARG_NONNULL(1);
-
-/**Add a (tag, value) pair to an initialized #OpusTags structure.
- \note Neither opus_tags_add() nor opus_tags_add_comment() support values
- containing embedded NULs, although the bitstream format does support them.
- To add such tags, you will need to manipulate the #OpusTags structure
- directly.
- \param _tags The #OpusTags structure to add the (tag, value) pair to.
- \param _tag A NUL-terminated, case-insensitive, ASCII string containing
- the tag to add (without an '=' character).
- \param _value A NUL-terminated UTF-8 containing the corresponding value.
- \return 0 on success, or a negative value on failure.
- \retval #OP_EFAULT An internal memory allocation failed.*/
-int opus_tags_add(OpusTags *_tags,const char *_tag,const char *_value)
- OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) OP_ARG_NONNULL(3);
-
-/**Add a comment to an initialized #OpusTags structure.
- \note Neither opus_tags_add_comment() nor opus_tags_add() support comments
- containing embedded NULs, although the bitstream format does support them.
- To add such tags, you will need to manipulate the #OpusTags structure
- directly.
- \param _tags The #OpusTags structure to add the comment to.
- \param _comment A NUL-terminated UTF-8 string containing the comment in
- "TAG=value" form.
- \return 0 on success, or a negative value on failure.
- \retval #OP_EFAULT An internal memory allocation failed.*/
-int opus_tags_add_comment(OpusTags *_tags,const char *_comment)
- OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/**Replace the binary suffix data at the end of the packet (if any).
- \param _tags An initialized #OpusTags structure.
- \param _data A buffer of binary data to append after the encoded user
- comments.
- The least significant bit of the first byte of this data must
- be set (to ensure the data is preserved by other editors).
- \param _len The number of bytes of binary data to append.
- This may be zero to remove any existing binary suffix data.
- \return 0 on success, or a negative value on error.
- \retval #OP_EINVAL \a _len was negative, or \a _len was positive but
- \a _data was <code>NULL</code> or the least significant
- bit of the first byte was not set.
- \retval #OP_EFAULT An internal memory allocation failed.*/
-int opus_tags_set_binary_suffix(OpusTags *_tags,
- const unsigned char *_data,int _len) OP_ARG_NONNULL(1);
-
-/**Look up a comment value by its tag.
- \param _tags An initialized #OpusTags structure.
- \param _tag The tag to look up.
- \param _count The instance of the tag.
- The same tag can appear multiple times, each with a distinct
- value, so an index is required to retrieve them all.
- The order in which these values appear is significant and
- should be preserved.
- Use opus_tags_query_count() to get the legal range for the
- \a _count parameter.
- \return A pointer to the queried tag's value.
- This points directly to data in the #OpusTags structure.
- It should not be modified or freed by the application, and
- modifications to the structure may invalidate the pointer.
- \retval NULL If no matching tag is found.*/
-const char *opus_tags_query(const OpusTags *_tags,const char *_tag,int _count)
- OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/**Look up the number of instances of a tag.
- Call this first when querying for a specific tag and then iterate over the
- number of instances with separate calls to opus_tags_query() to retrieve
- all the values for that tag in order.
- \param _tags An initialized #OpusTags structure.
- \param _tag The tag to look up.
- \return The number of instances of this particular tag.*/
-int opus_tags_query_count(const OpusTags *_tags,const char *_tag)
- OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/**Retrieve the binary suffix data at the end of the packet (if any).
- \param _tags An initialized #OpusTags structure.
- \param[out] _len Returns the number of bytes of binary suffix data returned.
- \return A pointer to the binary suffix data, or <code>NULL</code> if none
- was present.*/
-const unsigned char *opus_tags_get_binary_suffix(const OpusTags *_tags,
- int *_len) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/**Get the album gain from an R128_ALBUM_GAIN tag, if one was specified.
- This searches for the first R128_ALBUM_GAIN tag with a valid signed,
- 16-bit decimal integer value and returns the value.
- This routine is exposed merely for convenience for applications which wish
- to do something special with the album gain (i.e., display it).
- If you simply wish to apply the album gain instead of the header gain, you
- can use op_set_gain_offset() with an #OP_ALBUM_GAIN type and no offset.
- \param _tags An initialized #OpusTags structure.
- \param[out] _gain_q8 The album gain, in 1/256ths of a dB.
- This will lie in the range [-32768,32767], and should
- be applied in <em>addition</em> to the header gain.
- On error, no value is returned, and the previous
- contents remain unchanged.
- \return 0 on success, or a negative value on error.
- \retval #OP_FALSE There was no album gain available in the given tags.*/
-int opus_tags_get_album_gain(const OpusTags *_tags,int *_gain_q8)
- OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/**Get the track gain from an R128_TRACK_GAIN tag, if one was specified.
- This searches for the first R128_TRACK_GAIN tag with a valid signed,
- 16-bit decimal integer value and returns the value.
- This routine is exposed merely for convenience for applications which wish
- to do something special with the track gain (i.e., display it).
- If you simply wish to apply the track gain instead of the header gain, you
- can use op_set_gain_offset() with an #OP_TRACK_GAIN type and no offset.
- \param _tags An initialized #OpusTags structure.
- \param[out] _gain_q8 The track gain, in 1/256ths of a dB.
- This will lie in the range [-32768,32767], and should
- be applied in <em>addition</em> to the header gain.
- On error, no value is returned, and the previous
- contents remain unchanged.
- \return 0 on success, or a negative value on error.
- \retval #OP_FALSE There was no track gain available in the given tags.*/
-int opus_tags_get_track_gain(const OpusTags *_tags,int *_gain_q8)
- OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/**Clears the #OpusTags structure.
- This should be called on an #OpusTags structure after it is no longer
- needed.
- It will free all memory used by the structure members.
- \param _tags The #OpusTags structure to clear.*/
-void opus_tags_clear(OpusTags *_tags) OP_ARG_NONNULL(1);
-
-/**Check if \a _comment is an instance of a \a _tag_name tag.
- \see opus_tagncompare
- \param _tag_name A NUL-terminated, case-insensitive, ASCII string containing
- the name of the tag to check for (without the terminating
- '=' character).
- \param _comment The comment string to check.
- \return An integer less than, equal to, or greater than zero if \a _comment
- is found respectively, to be less than, to match, or be greater
- than a "tag=value" string whose tag matches \a _tag_name.*/
-int opus_tagcompare(const char *_tag_name,const char *_comment);
-
-/**Check if \a _comment is an instance of a \a _tag_name tag.
- This version is slightly more efficient than opus_tagcompare() if the length
- of the tag name is already known (e.g., because it is a constant).
- \see opus_tagcompare
- \param _tag_name A case-insensitive ASCII string containing the name of the
- tag to check for (without the terminating '=' character).
- \param _tag_len The number of characters in the tag name.
- This must be non-negative.
- \param _comment The comment string to check.
- \return An integer less than, equal to, or greater than zero if \a _comment
- is found respectively, to be less than, to match, or be greater
- than a "tag=value" string whose tag matches the first \a _tag_len
- characters of \a _tag_name.*/
-int opus_tagncompare(const char *_tag_name,int _tag_len,const char *_comment);
-
-/**Parse a single METADATA_BLOCK_PICTURE tag.
- This decodes the BASE64-encoded content of the tag and returns a structure
- with the MIME type, description, image parameters (if known), and the
- compressed image data.
- If the MIME type indicates the presence of an image format we recognize
- (JPEG, PNG, or GIF) and the actual image data contains the magic signature
- associated with that format, then the OpusPictureTag::format field will be
- set to the corresponding format.
- This is provided as a convenience to avoid requiring applications to parse
- the MIME type and/or do their own format detection for the commonly used
- formats.
- In this case, we also attempt to extract the image parameters directly from
- the image data (overriding any that were present in the tag, which the
- specification says applications are not meant to rely on).
- The application must still provide its own support for actually decoding the
- image data and, if applicable, retrieving that data from URLs.
- \param[out] _pic Returns the parsed picture data.
- No sanitation is done on the type, MIME type, or
- description fields, so these might return invalid values.
- The contents of this structure are left unmodified on
- failure.
- \param _tag The METADATA_BLOCK_PICTURE tag contents.
- The leading "METADATA_BLOCK_PICTURE=" portion is optional,
- to allow the function to be used on either directly on the
- values in OpusTags::user_comments or on the return value
- of opus_tags_query().
- \return 0 on success or a negative value on error.
- \retval #OP_ENOTFORMAT The METADATA_BLOCK_PICTURE contents were not valid.
- \retval #OP_EFAULT There was not enough memory to store the picture tag
- contents.*/
-OP_WARN_UNUSED_RESULT int opus_picture_tag_parse(OpusPictureTag *_pic,
- const char *_tag) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/**Initializes an #OpusPictureTag structure.
- This should be called on a freshly allocated #OpusPictureTag structure
- before attempting to use it.
- \param _pic The #OpusPictureTag structure to initialize.*/
-void opus_picture_tag_init(OpusPictureTag *_pic) OP_ARG_NONNULL(1);
-
-/**Clears the #OpusPictureTag structure.
- This should be called on an #OpusPictureTag structure after it is no longer
- needed.
- It will free all memory used by the structure members.
- \param _pic The #OpusPictureTag structure to clear.*/
-void opus_picture_tag_clear(OpusPictureTag *_pic) OP_ARG_NONNULL(1);
-
-/*@}*/
-
-/*@}*/
-
-/**\defgroup url_options URL Reading Options*/
-/*@{*/
-/**\name URL reading options
- Options for op_url_stream_create() and associated functions.
- These allow you to provide proxy configuration parameters, skip SSL
- certificate checks, etc.
- Options are processed in order, and if the same option is passed multiple
- times, only the value specified by the last occurrence has an effect
- (unless otherwise specified).
- They may be expanded in the future.*/
-/*@{*/
-
-/**@cond PRIVATE*/
-
-/*These are the raw numbers used to define the request codes.
- They should not be used directly.*/
-#define OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST (6464)
-#define OP_HTTP_PROXY_HOST_REQUEST (6528)
-#define OP_HTTP_PROXY_PORT_REQUEST (6592)
-#define OP_HTTP_PROXY_USER_REQUEST (6656)
-#define OP_HTTP_PROXY_PASS_REQUEST (6720)
-#define OP_GET_SERVER_INFO_REQUEST (6784)
-
-#define OP_URL_OPT(_request) ((_request)+(char *)0)
-
-/*These macros trigger compilation errors or warnings if the wrong types are
- provided to one of the URL options.*/
-#define OP_CHECK_INT(_x) ((void)((_x)==(opus_int32)0),(opus_int32)(_x))
-#define OP_CHECK_CONST_CHAR_PTR(_x) ((_x)+((_x)-(const char *)(_x)))
-#define OP_CHECK_SERVER_INFO_PTR(_x) ((_x)+((_x)-(OpusServerInfo *)(_x)))
-
-/**@endcond*/
-
-/**HTTP/Shoutcast/Icecast server information associated with a URL.*/
-struct OpusServerInfo{
- /**The name of the server (icy-name/ice-name).
- This is <code>NULL</code> if there was no <code>icy-name</code> or
- <code>ice-name</code> header.*/
- char *name;
- /**A short description of the server (icy-description/ice-description).
- This is <code>NULL</code> if there was no <code>icy-description</code> or
- <code>ice-description</code> header.*/
- char *description;
- /**The genre the server falls under (icy-genre/ice-genre).
- This is <code>NULL</code> if there was no <code>icy-genre</code> or
- <code>ice-genre</code> header.*/
- char *genre;
- /**The homepage for the server (icy-url/ice-url).
- This is <code>NULL</code> if there was no <code>icy-url</code> or
- <code>ice-url</code> header.*/
- char *url;
- /**The software used by the origin server (Server).
- This is <code>NULL</code> if there was no <code>Server</code> header.*/
- char *server;
- /**The media type of the entity sent to the recepient (Content-Type).
- This is <code>NULL</code> if there was no <code>Content-Type</code>
- header.*/
- char *content_type;
- /**The nominal stream bitrate in kbps (icy-br/ice-bitrate).
- This is <code>-1</code> if there was no <code>icy-br</code> or
- <code>ice-bitrate</code> header.*/
- opus_int32 bitrate_kbps;
- /**Flag indicating whether the server is public (<code>1</code>) or not
- (<code>0</code>) (icy-pub/ice-public).
- This is <code>-1</code> if there was no <code>icy-pub</code> or
- <code>ice-public</code> header.*/
- int is_public;
- /**Flag indicating whether the server is using HTTPS instead of HTTP.
- This is <code>0</code> unless HTTPS is being used.
- This may not match the protocol used in the original URL if there were
- redirections.*/
- int is_ssl;
-};
-
-/**Initializes an #OpusServerInfo structure.
- All fields are set as if the corresponding header was not available.
- \param _info The #OpusServerInfo structure to initialize.
- \note If you use this function, you must link against <tt>libopusurl</tt>.*/
-void opus_server_info_init(OpusServerInfo *_info) OP_ARG_NONNULL(1);
-
-/**Clears the #OpusServerInfo structure.
- This should be called on an #OpusServerInfo structure after it is no longer
- needed.
- It will free all memory used by the structure members.
- \param _info The #OpusServerInfo structure to clear.
- \note If you use this function, you must link against <tt>libopusurl</tt>.*/
-void opus_server_info_clear(OpusServerInfo *_info) OP_ARG_NONNULL(1);
-
-/**Skip the certificate check when connecting via TLS/SSL (https).
- \param _b <code>opus_int32</code>: Whether or not to skip the certificate
- check.
- The check will be skipped if \a _b is non-zero, and will not be
- skipped if \a _b is zero.
- \hideinitializer*/
-#define OP_SSL_SKIP_CERTIFICATE_CHECK(_b) \
- OP_URL_OPT(OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST),OP_CHECK_INT(_b)
-
-/**Proxy connections through the given host.
- If no port is specified via #OP_HTTP_PROXY_PORT, the port number defaults
- to 8080 (http-alt).
- All proxy parameters are ignored for non-http and non-https URLs.
- \param _host <code>const char *</code>: The proxy server hostname.
- This may be <code>NULL</code> to disable the use of a proxy
- server.
- \hideinitializer*/
-#define OP_HTTP_PROXY_HOST(_host) \
- OP_URL_OPT(OP_HTTP_PROXY_HOST_REQUEST),OP_CHECK_CONST_CHAR_PTR(_host)
-
-/**Use the given port when proxying connections.
- This option only has an effect if #OP_HTTP_PROXY_HOST is specified with a
- non-<code>NULL</code> \a _host.
- If this option is not provided, the proxy port number defaults to 8080
- (http-alt).
- All proxy parameters are ignored for non-http and non-https URLs.
- \param _port <code>opus_int32</code>: The proxy server port.
- This must be in the range 0...65535 (inclusive), or the
- URL function this is passed to will fail.
- \hideinitializer*/
-#define OP_HTTP_PROXY_PORT(_port) \
- OP_URL_OPT(OP_HTTP_PROXY_PORT_REQUEST),OP_CHECK_INT(_port)
-
-/**Use the given user name for authentication when proxying connections.
- All proxy parameters are ignored for non-http and non-https URLs.
- \param _user const char *: The proxy server user name.
- This may be <code>NULL</code> to disable proxy
- authentication.
- A non-<code>NULL</code> value only has an effect
- if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_PASS
- are also specified with non-<code>NULL</code>
- arguments.
- \hideinitializer*/
-#define OP_HTTP_PROXY_USER(_user) \
- OP_URL_OPT(OP_HTTP_PROXY_USER_REQUEST),OP_CHECK_CONST_CHAR_PTR(_user)
-
-/**Use the given password for authentication when proxying connections.
- All proxy parameters are ignored for non-http and non-https URLs.
- \param _pass const char *: The proxy server password.
- This may be <code>NULL</code> to disable proxy
- authentication.
- A non-<code>NULL</code> value only has an effect
- if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_USER
- are also specified with non-<code>NULL</code>
- arguments.
- \hideinitializer*/
-#define OP_HTTP_PROXY_PASS(_pass) \
- OP_URL_OPT(OP_HTTP_PROXY_PASS_REQUEST),OP_CHECK_CONST_CHAR_PTR(_pass)
-
-/**Parse information about the streaming server (if any) and return it.
- Very little validation is done.
- In particular, OpusServerInfo::url may not be a valid URL,
- OpusServerInfo::bitrate_kbps may not really be in kbps, and
- OpusServerInfo::content_type may not be a valid MIME type.
- The character set of the string fields is not specified anywhere, and should
- not be assumed to be valid UTF-8.
- \param _info OpusServerInfo *: Returns information about the server.
- If there is any error opening the stream, the
- contents of this structure remain
- unmodified.
- On success, fills in the structure with the
- server information that was available, if
- any.
- After a successful return, the contents of
- this structure should be freed by calling
- opus_server_info_clear().
- \hideinitializer*/
-#define OP_GET_SERVER_INFO(_info) \
- OP_URL_OPT(OP_GET_SERVER_INFO_REQUEST),OP_CHECK_SERVER_INFO_PTR(_info)
-
-/*@}*/
-/*@}*/
-
-/**\defgroup stream_callbacks Abstract Stream Reading Interface*/
-/*@{*/
-/**\name Functions for reading from streams
- These functions define the interface used to read from and seek in a stream
- of data.
- A stream does not need to implement seeking, but the decoder will not be
- able to seek if it does not do so.
- These functions also include some convenience routines for working with
- standard <code>FILE</code> pointers, complete streams stored in a single
- block of memory, or URLs.*/
-/*@{*/
-
-/**Reads up to \a _nbytes bytes of data from \a _stream.
- \param _stream The stream to read from.
- \param[out] _ptr The buffer to store the data in.
- \param _nbytes The maximum number of bytes to read.
- This function may return fewer, though it will not
- return zero unless it reaches end-of-file.
- \return The number of bytes successfully read, or a negative value on
- error.*/
-typedef int (*op_read_func)(void *_stream,unsigned char *_ptr,int _nbytes);
-
-/**Sets the position indicator for \a _stream.
- The new position, measured in bytes, is obtained by adding \a _offset
- bytes to the position specified by \a _whence.
- If \a _whence is set to <code>SEEK_SET</code>, <code>SEEK_CUR</code>, or
- <code>SEEK_END</code>, the offset is relative to the start of the stream,
- the current position indicator, or end-of-file, respectively.
- \retval 0 Success.
- \retval -1 Seeking is not supported or an error occurred.
- <code>errno</code> need not be set.*/
-typedef int (*op_seek_func)(void *_stream,opus_int64 _offset,int _whence);
-
-/**Obtains the current value of the position indicator for \a _stream.
- \return The current position indicator.*/
-typedef opus_int64 (*op_tell_func)(void *_stream);
-
-/**Closes the underlying stream.
- \retval 0 Success.
- \retval EOF An error occurred.
- <code>errno</code> need not be set.*/
-typedef int (*op_close_func)(void *_stream);
-
-/**The callbacks used to access non-<code>FILE</code> stream resources.
- The function prototypes are basically the same as for the stdio functions
- <code>fread()</code>, <code>fseek()</code>, <code>ftell()</code>, and
- <code>fclose()</code>.
- The differences are that the <code>FILE *</code> arguments have been
- replaced with a <code>void *</code>, which is to be used as a pointer to
- whatever internal data these functions might need, that #seek and #tell
- take and return 64-bit offsets, and that #seek <em>must</em> return -1 if
- the stream is unseekable.*/
-struct OpusFileCallbacks{
- /**Used to read data from the stream.
- This must not be <code>NULL</code>.*/
- op_read_func read;
- /**Used to seek in the stream.
- This may be <code>NULL</code> if seeking is not implemented.*/
- op_seek_func seek;
- /**Used to return the current read position in the stream.
- This may be <code>NULL</code> if seeking is not implemented.*/
- op_tell_func tell;
- /**Used to close the stream when the decoder is freed.
- This may be <code>NULL</code> to leave the stream open.*/
- op_close_func close;
-};
-
-/**Opens a stream with <code>fopen()</code> and fills in a set of callbacks
- that can be used to access it.
- This is useful to avoid writing your own portable 64-bit seeking wrappers,
- and also avoids cross-module linking issues on Windows, where a
- <code>FILE *</code> must be accessed by routines defined in the same module
- that opened it.
- \param[out] _cb The callbacks to use for this file.
- If there is an error opening the file, nothing will be
- filled in here.
- \param _path The path to the file to open.
- On Windows, this string must be UTF-8 (to allow access to
- files whose names cannot be represented in the current
- MBCS code page).
- All other systems use the native character encoding.
- \param _mode The mode to open the file in.
- \return A stream handle to use with the callbacks, or <code>NULL</code> on
- error.*/
-OP_WARN_UNUSED_RESULT void *op_fopen(OpusFileCallbacks *_cb,
- const char *_path,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2)
- OP_ARG_NONNULL(3);
-
-/**Opens a stream with <code>fdopen()</code> and fills in a set of callbacks
- that can be used to access it.
- This is useful to avoid writing your own portable 64-bit seeking wrappers,
- and also avoids cross-module linking issues on Windows, where a
- <code>FILE *</code> must be accessed by routines defined in the same module
- that opened it.
- \param[out] _cb The callbacks to use for this file.
- If there is an error opening the file, nothing will be
- filled in here.
- \param _fd The file descriptor to open.
- \param _mode The mode to open the file in.
- \return A stream handle to use with the callbacks, or <code>NULL</code> on
- error.*/
-OP_WARN_UNUSED_RESULT void *op_fdopen(OpusFileCallbacks *_cb,
- int _fd,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(3);
-
-/**Opens a stream with <code>freopen()</code> and fills in a set of callbacks
- that can be used to access it.
- This is useful to avoid writing your own portable 64-bit seeking wrappers,
- and also avoids cross-module linking issues on Windows, where a
- <code>FILE *</code> must be accessed by routines defined in the same module
- that opened it.
- \param[out] _cb The callbacks to use for this file.
- If there is an error opening the file, nothing will be
- filled in here.
- \param _path The path to the file to open.
- On Windows, this string must be UTF-8 (to allow access
- to files whose names cannot be represented in the
- current MBCS code page).
- All other systems use the native character encoding.
- \param _mode The mode to open the file in.
- \param _stream A stream previously returned by op_fopen(), op_fdopen(),
- or op_freopen().
- \return A stream handle to use with the callbacks, or <code>NULL</code> on
- error.*/
-OP_WARN_UNUSED_RESULT void *op_freopen(OpusFileCallbacks *_cb,
- const char *_path,const char *_mode,void *_stream) OP_ARG_NONNULL(1)
- OP_ARG_NONNULL(2) OP_ARG_NONNULL(3) OP_ARG_NONNULL(4);
-
-/**Creates a stream that reads from the given block of memory.
- This block of memory must contain the complete stream to decode.
- This is useful for caching small streams (e.g., sound effects) in RAM.
- \param[out] _cb The callbacks to use for this stream.
- If there is an error creating the stream, nothing will be
- filled in here.
- \param _data The block of memory to read from.
- \param _size The size of the block of memory.
- \return A stream handle to use with the callbacks, or <code>NULL</code> on
- error.*/
-OP_WARN_UNUSED_RESULT void *op_mem_stream_create(OpusFileCallbacks *_cb,
- const unsigned char *_data,size_t _size) OP_ARG_NONNULL(1);
-
-/**Creates a stream that reads from the given URL.
- This function behaves identically to op_url_stream_create(), except that it
- takes a va_list instead of a variable number of arguments.
- It does not call the <code>va_end</code> macro, and because it invokes the
- <code>va_arg</code> macro, the value of \a _ap is undefined after the call.
- \note If you use this function, you must link against <tt>libopusurl</tt>.
- \param[out] _cb The callbacks to use for this stream.
- If there is an error creating the stream, nothing will
- be filled in here.
- \param _url The URL to read from.
- Currently only the <file:>, <http:>, and <https:>
- schemes are supported.
- Both <http:> and <https:> may be disabled at compile
- time, in which case opening such URLs will always fail.
- Currently this only supports URIs.
- IRIs should be converted to UTF-8 and URL-escaped, with
- internationalized domain names encoded in punycode,
- before passing them to this function.
- \param[in,out] _ap A list of the \ref url_options "optional flags" to use.
- This is a variable-length list of options terminated
- with <code>NULL</code>.
- \return A stream handle to use with the callbacks, or <code>NULL</code> on
- error.*/
-OP_WARN_UNUSED_RESULT void *op_url_stream_vcreate(OpusFileCallbacks *_cb,
- const char *_url,va_list _ap) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/**Creates a stream that reads from the given URL.
- \note If you use this function, you must link against <tt>libopusurl</tt>.
- \param[out] _cb The callbacks to use for this stream.
- If there is an error creating the stream, nothing will be
- filled in here.
- \param _url The URL to read from.
- Currently only the <file:>, <http:>, and <https:> schemes
- are supported.
- Both <http:> and <https:> may be disabled at compile time,
- in which case opening such URLs will always fail.
- Currently this only supports URIs.
- IRIs should be converted to UTF-8 and URL-escaped, with
- internationalized domain names encoded in punycode, before
- passing them to this function.
- \param ... The \ref url_options "optional flags" to use.
- This is a variable-length list of options terminated with
- <code>NULL</code>.
- \return A stream handle to use with the callbacks, or <code>NULL</code> on
- error.*/
-OP_WARN_UNUSED_RESULT void *op_url_stream_create(OpusFileCallbacks *_cb,
- const char *_url,...) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
-
-/*@}*/
-/*@}*/
-
-/**\defgroup stream_open_close Opening and Closing*/
-/*@{*/
-/**\name Functions for opening and closing streams
-
- These functions allow you to test a stream to see if it is Opus, open it,
- and close it.
- Several flavors are provided for each of the built-in stream types, plus a
- more general version which takes a set of application-provided callbacks.*/
-/*@{*/
-
-/**Test to see if this is an Opus stream.
- For good results, you will need at least 57 bytes (for a pure Opus-only
- stream).
- Something like 512 bytes will give more reliable results for multiplexed
- streams.
- This function is meant to be a quick-rejection filter.
- Its purpose is not to guarantee that a stream is a valid Opus stream, but to
- ensure that it looks enough like Opus that it isn't going to be recognized
- as some other format (except possibly an Opus stream that is also
- multiplexed with other codecs, such as video).
- \param[out] _head The parsed ID header contents.
- You may pass <code>NULL</code> if you do not need
- this information.
- If the function fails, the contents of this structure
- remain untouched.
- \param _initial_data An initial buffer of data from the start of the
- stream.
- \param _initial_bytes The number of bytes in \a _initial_data.
- \return 0 if the data appears to be Opus, or a negative value on error.
- \retval #OP_FALSE There was not enough data to tell if this was an Opus
- stream or not.
- \retval #OP_EFAULT An internal memory allocation failed.
- \retval #OP_EIMPL The stream used a feature that is not implemented,
- such as an unsupported channel family.
- \retval #OP_ENOTFORMAT If the data did not contain a recognizable ID
- header for an Opus stream.
- \retval #OP_EVERSION If the version field signaled a version this library
- does not know how to parse.
- \retval #OP_EBADHEADER The ID header was not properly formatted or contained
- illegal values.*/
-int op_test(OpusHead *_head,
- const unsigned char *_initial_data,size_t _initial_bytes);
-
-/**Open a stream from the given file path.
- \param _path The path to the file to open.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want the
- failure code.
- The failure code will be #OP_EFAULT if the file could not
- be opened, or one of the other failure codes from
- op_open_callbacks() otherwise.
- \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_open_file(const char *_path,int *_error)
- OP_ARG_NONNULL(1);
-
-/**Open a stream from a memory buffer.
- \param _data The memory buffer to open.
- \param _size The number of bytes in the buffer.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want the
- failure code.
- See op_open_callbacks() for a full list of failure codes.
- \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_open_memory(const unsigned char *_data,
- size_t _size,int *_error);
-
-/**Open a stream from a URL.
- This function behaves identically to op_open_url(), except that it
- takes a va_list instead of a variable number of arguments.
- It does not call the <code>va_end</code> macro, and because it invokes the
- <code>va_arg</code> macro, the value of \a _ap is undefined after the call.
- \note If you use this function, you must link against <tt>libopusurl</tt>.
- \param _url The URL to open.
- Currently only the <file:>, <http:>, and <https:>
- schemes are supported.
- Both <http:> and <https:> may be disabled at compile
- time, in which case opening such URLs will always
- fail.
- Currently this only supports URIs.
- IRIs should be converted to UTF-8 and URL-escaped,
- with internationalized domain names encoded in
- punycode, before passing them to this function.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want
- the failure code.
- See op_open_callbacks() for a full list of failure
- codes.
- \param[in,out] _ap A list of the \ref url_options "optional flags" to
- use.
- This is a variable-length list of options terminated
- with <code>NULL</code>.
- \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_vopen_url(const char *_url,
- int *_error,va_list _ap) OP_ARG_NONNULL(1);
-
-/**Open a stream from a URL.
- \note If you use this function, you must link against <tt>libopusurl</tt>.
- \param _url The URL to open.
- Currently only the <file:>, <http:>, and <https:> schemes
- are supported.
- Both <http:> and <https:> may be disabled at compile
- time, in which case opening such URLs will always fail.
- Currently this only supports URIs.
- IRIs should be converted to UTF-8 and URL-escaped, with
- internationalized domain names encoded in punycode,
- before passing them to this function.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want the
- failure code.
- See op_open_callbacks() for a full list of failure codes.
- \param ... The \ref url_options "optional flags" to use.
- This is a variable-length list of options terminated with
- <code>NULL</code>.
- \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_open_url(const char *_url,
- int *_error,...) OP_ARG_NONNULL(1);
-
-/**Open a stream using the given set of callbacks to access it.
- \param _source The stream to read from (e.g., a <code>FILE *</code>).
- \param _cb The callbacks with which to access the stream.
- <code><a href="#op_read_func">read()</a></code> must
- be implemented.
- <code><a href="#op_seek_func">seek()</a></code> and
- <code><a href="#op_tell_func">tell()</a></code> may
- be <code>NULL</code>, or may always return -1 to
- indicate a source is unseekable, but if
- <code><a href="#op_seek_func">seek()</a></code> is
- implemented and succeeds on a particular source, then
- <code><a href="#op_tell_func">tell()</a></code> must
- also.
- <code><a href="#op_close_func">close()</a></code> may
- be <code>NULL</code>, but if it is not, it will be
- called when the \c OggOpusFile is destroyed by
- op_free().
- It will not be called if op_open_callbacks() fails
- with an error.
- \param _initial_data An initial buffer of data from the start of the
- stream.
- Applications can read some number of bytes from the
- start of the stream to help identify this as an Opus
- stream, and then provide them here to allow the
- stream to be opened, even if it is unseekable.
- \param _initial_bytes The number of bytes in \a _initial_data.
- If the stream is seekable, its current position (as
- reported by
- <code><a href="#opus_tell_func">tell()</a></code>
- at the start of this function) must be equal to
- \a _initial_bytes.
- Otherwise, seeking to absolute positions will
- generate inconsistent results.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want
- the failure code.
- The failure code will be one of
- <dl>
- <dt>#OP_EREAD</dt>
- <dd>An underlying read, seek, or tell operation
- failed when it should have succeeded, or we failed
- to find data in the stream we had seen before.</dd>
- <dt>#OP_EFAULT</dt>
- <dd>There was a memory allocation failure, or an
- internal library error.</dd>
- <dt>#OP_EIMPL</dt>
- <dd>The stream used a feature that is not
- implemented, such as an unsupported channel
- family.</dd>
- <dt>#OP_EINVAL</dt>
- <dd><code><a href="#op_seek_func">seek()</a></code>
- was implemented and succeeded on this source, but
- <code><a href="#op_tell_func">tell()</a></code>
- did not, or the starting position indicator was
- not equal to \a _initial_bytes.</dd>
- <dt>#OP_ENOTFORMAT</dt>
- <dd>The stream contained a link that did not have
- any logical Opus streams in it.</dd>
- <dt>#OP_EBADHEADER</dt>
- <dd>A required header packet was not properly
- formatted, contained illegal values, or was missing
- altogether.</dd>
- <dt>#OP_EVERSION</dt>
- <dd>An ID header contained an unrecognized version
- number.</dd>
- <dt>#OP_EBADLINK</dt>
- <dd>We failed to find data we had seen before after
- seeking.</dd>
- <dt>#OP_EBADTIMESTAMP</dt>
- <dd>The first or last timestamp in a link failed
- basic validity checks.</dd>
- </dl>
- \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.
- <tt>libopusfile</tt> does <em>not</em> take ownership of the source
- if the call fails.
- The calling application is responsible for closing the source if
- this call returns an error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_open_callbacks(void *_source,
- const OpusFileCallbacks *_cb,const unsigned char *_initial_data,
- size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2);
-
-/**Partially open a stream from the given file path.
- \see op_test_callbacks
- \param _path The path to the file to open.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want the
- failure code.
- The failure code will be #OP_EFAULT if the file could not
- be opened, or one of the other failure codes from
- op_open_callbacks() otherwise.
- \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_test_file(const char *_path,int *_error)
- OP_ARG_NONNULL(1);
-
-/**Partially open a stream from a memory buffer.
- \see op_test_callbacks
- \param _data The memory buffer to open.
- \param _size The number of bytes in the buffer.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want the
- failure code.
- See op_open_callbacks() for a full list of failure codes.
- \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_test_memory(const unsigned char *_data,
- size_t _size,int *_error);
-
-/**Partially open a stream from a URL.
- This function behaves identically to op_test_url(), except that it
- takes a va_list instead of a variable number of arguments.
- It does not call the <code>va_end</code> macro, and because it invokes the
- <code>va_arg</code> macro, the value of \a _ap is undefined after the call.
- \note If you use this function, you must link against <tt>libopusurl</tt>.
- \see op_test_url
- \see op_test_callbacks
- \param _url The URL to open.
- Currently only the <file:>, <http:>, and <https:>
- schemes are supported.
- Both <http:> and <https:> may be disabled at compile
- time, in which case opening such URLs will always
- fail.
- Currently this only supports URIs.
- IRIs should be converted to UTF-8 and URL-escaped,
- with internationalized domain names encoded in
- punycode, before passing them to this function.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want
- the failure code.
- See op_open_callbacks() for a full list of failure
- codes.
- \param[in,out] _ap A list of the \ref url_options "optional flags" to
- use.
- This is a variable-length list of options terminated
- with <code>NULL</code>.
- \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_vtest_url(const char *_url,
- int *_error,va_list _ap) OP_ARG_NONNULL(1);
-
-/**Partially open a stream from a URL.
- \note If you use this function, you must link against <tt>libopusurl</tt>.
- \see op_test_callbacks
- \param _url The URL to open.
- Currently only the <file:>, <http:>, and <https:>
- schemes are supported.
- Both <http:> and <https:> may be disabled at compile
- time, in which case opening such URLs will always fail.
- Currently this only supports URIs.
- IRIs should be converted to UTF-8 and URL-escaped, with
- internationalized domain names encoded in punycode,
- before passing them to this function.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want the
- failure code.
- See op_open_callbacks() for a full list of failure
- codes.
- \param ... The \ref url_options "optional flags" to use.
- This is a variable-length list of options terminated
- with <code>NULL</code>.
- \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_test_url(const char *_url,
- int *_error,...) OP_ARG_NONNULL(1);
-
-/**Partially open a stream using the given set of callbacks to access it.
- This tests for Opusness and loads the headers for the first link.
- It does not seek (although it tests for seekability).
- You can query a partially open stream for the few pieces of basic
- information returned by op_serialno(), op_channel_count(), op_head(), and
- op_tags() (but only for the first link).
- You may also determine if it is seekable via a call to op_seekable().
- You cannot read audio from the stream, seek, get the size or duration,
- get information from links other than the first one, or even get the total
- number of links until you finish opening the stream with op_test_open().
- If you do not need to do any of these things, you can dispose of it with
- op_free() instead.
-
- This function is provided mostly to simplify porting existing code that used
- <tt>libvorbisfile</tt>.
- For new code, you are likely better off using op_test() instead, which
- is less resource-intensive, requires less data to succeed, and imposes a
- hard limit on the amount of data it examines (important for unseekable
- sources, where all such data must be buffered until you are sure of the
- stream type).
- \param _source The stream to read from (e.g., a <code>FILE *</code>).
- \param _cb The callbacks with which to access the stream.
- <code><a href="#op_read_func">read()</a></code> must
- be implemented.
- <code><a href="#op_seek_func">seek()</a></code> and
- <code><a href="#op_tell_func">tell()</a></code> may
- be <code>NULL</code>, or may always return -1 to
- indicate a source is unseekable, but if
- <code><a href="#op_seek_func">seek()</a></code> is
- implemented and succeeds on a particular source, then
- <code><a href="#op_tell_func">tell()</a></code> must
- also.
- <code><a href="#op_close_func">close()</a></code> may
- be <code>NULL</code>, but if it is not, it will be
- called when the \c OggOpusFile is destroyed by
- op_free().
- It will not be called if op_open_callbacks() fails
- with an error.
- \param _initial_data An initial buffer of data from the start of the
- stream.
- Applications can read some number of bytes from the
- start of the stream to help identify this as an Opus
- stream, and then provide them here to allow the
- stream to be tested more thoroughly, even if it is
- unseekable.
- \param _initial_bytes The number of bytes in \a _initial_data.
- If the stream is seekable, its current position (as
- reported by
- <code><a href="#opus_tell_func">tell()</a></code>
- at the start of this function) must be equal to
- \a _initial_bytes.
- Otherwise, seeking to absolute positions will
- generate inconsistent results.
- \param[out] _error Returns 0 on success, or a failure code on error.
- You may pass in <code>NULL</code> if you don't want
- the failure code.
- See op_open_callbacks() for a full list of failure
- codes.
- \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.
- <tt>libopusfile</tt> does <em>not</em> take ownership of the source
- if the call fails.
- The calling application is responsible for closing the source if
- this call returns an error.*/
-OP_WARN_UNUSED_RESULT OggOpusFile *op_test_callbacks(void *_source,
- const OpusFileCallbacks *_cb,const unsigned char *_initial_data,
- size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2);
-
-/**Finish opening a stream partially opened with op_test_callbacks() or one of
- the associated convenience functions.
- If this function fails, you are still responsible for freeing the
- \c OggOpusFile with op_free().
- \param _of The \c OggOpusFile to finish opening.
- \return 0 on success, or a negative value on error.
- \retval #OP_EREAD An underlying read, seek, or tell operation failed
- when it should have succeeded.
- \retval #OP_EFAULT There was a memory allocation failure, or an
- internal library error.
- \retval #OP_EIMPL The stream used a feature that is not implemented,
- such as an unsupported channel family.
- \retval #OP_EINVAL The stream was not partially opened with
- op_test_callbacks() or one of the associated
- convenience functions.
- \retval #OP_ENOTFORMAT The stream contained a link that did not have any
- logical Opus streams in it.
- \retval #OP_EBADHEADER A required header packet was not properly
- formatted, contained illegal values, or was
- missing altogether.
- \retval #OP_EVERSION An ID header contained an unrecognized version
- number.
- \retval #OP_EBADLINK We failed to find data we had seen before after
- seeking.
- \retval #OP_EBADTIMESTAMP The first or last timestamp in a link failed basic
- validity checks.*/
-int op_test_open(OggOpusFile *_of) OP_ARG_NONNULL(1);
-
-/**Release all memory used by an \c OggOpusFile.
- \param _of The \c OggOpusFile to free.*/
-void op_free(OggOpusFile *_of);
-
-/*@}*/
-/*@}*/
-
-/**\defgroup stream_info Stream Information*/
-/*@{*/
-/**\name Functions for obtaining information about streams
-
- These functions allow you to get basic information about a stream, including
- seekability, the number of links (for chained streams), plus the size,
- duration, bitrate, header parameters, and meta information for each link
- (or, where available, the stream as a whole).
- Some of these (size, duration) are only available for seekable streams.
- You can also query the current stream position, link, and playback time,
- and instantaneous bitrate during playback.
-
- Some of these functions may be used successfully on the partially open
- streams returned by op_test_callbacks() or one of the associated
- convenience functions.
- Their documention will indicate so explicitly.*/
-/*@{*/
-
-/**Returns whether or not the data source being read is seekable.
- This is true if
- <ol>
- <li>The <code><a href="#op_seek_func">seek()</a></code> and
- <code><a href="#op_tell_func">tell()</a></code> callbacks are both
- non-<code>NULL</code>,</li>
- <li>The <code><a href="#op_seek_func">seek()</a></code> callback was
- successfully executed at least once, and</li>
- <li>The <code><a href="#op_tell_func">tell()</a></code> callback was
- successfully able to report the position indicator afterwards.</li>
- </ol>
- This function may be called on partially-opened streams.
- \param _of The \c OggOpusFile whose seekable status is to be returned.
- \return A non-zero value if seekable, and 0 if unseekable.*/
-int op_seekable(const OggOpusFile *_of) OP_ARG_NONNULL(1);
-
-/**Returns the number of links in this chained stream.
- This function may be called on partially-opened streams, but it will always
- return 1.
- The actual number of links is not known until the stream is fully opened.
- \param _of The \c OggOpusFile from which to retrieve the link count.
- \return For fully-open seekable sources, this returns the total number of
- links in the whole stream, which will be at least 1.
- For partially-open or unseekable sources, this always returns 1.*/
-int op_link_count(const OggOpusFile *_of) OP_ARG_NONNULL(1);
-
-/**Get the serial number of the given link in a (possibly-chained) Ogg Opus
- stream.
- This function may be called on partially-opened streams, but it will always
- return the serial number of the Opus stream in the first link.
- \param _of The \c OggOpusFile from which to retrieve the serial number.
- \param _li The index of the link whose serial number should be retrieved.
- Use a negative number to get the serial number of the current
- link.
- \return The serial number of the given link.
- If \a _li is greater than the total number of links, this returns
- the serial number of the last link.
- If the source is not seekable, this always returns the serial number
- of the current link.*/
-opus_uint32 op_serialno(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
-
-/**Get the channel count of the given link in a (possibly-chained) Ogg Opus
- stream.
- This is equivalent to <code>op_head(_of,_li)->channel_count</code>, but
- is provided for convenience.
- This function may be called on partially-opened streams, but it will always
- return the channel count of the Opus stream in the first link.
- \param _of The \c OggOpusFile from which to retrieve the channel count.
- \param _li The index of the link whose channel count should be retrieved.
- Use a negative number to get the channel count of the current
- link.
- \return The channel count of the given link.
- If \a _li is greater than the total number of links, this returns
- the channel count of the last link.
- If the source is not seekable, this always returns the channel count
- of the current link.*/
-int op_channel_count(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
-
-/**Get the total (compressed) size of the stream, or of an individual link in
- a (possibly-chained) Ogg Opus stream, including all headers and Ogg muxing
- overhead.
- \warning If the Opus stream (or link) is concurrently multiplexed with other
- logical streams (e.g., video), this returns the size of the entire stream
- (or link), not just the number of bytes in the first logical Opus stream.
- Returning the latter would require scanning the entire file.
- \param _of The \c OggOpusFile from which to retrieve the compressed size.
- \param _li The index of the link whose compressed size should be computed.
- Use a negative number to get the compressed size of the entire
- stream.
- \return The compressed size of the entire stream if \a _li is negative, the
- compressed size of link \a _li if it is non-negative, or a negative
- value on error.
- The compressed size of the entire stream may be smaller than that
- of the underlying source if trailing garbage was detected in the
- file.
- \retval #OP_EINVAL The source is not seekable (so we can't know the length),
- \a _li wasn't less than the total number of links in
- the stream, or the stream was only partially open.*/
-opus_int64 op_raw_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
-
-/**Get the total PCM length (number of samples at 48 kHz) of the stream, or of
- an individual link in a (possibly-chained) Ogg Opus stream.
- Users looking for <code>op_time_total()</code> should use op_pcm_total()
- instead.
- Because timestamps in Opus are fixed at 48 kHz, there is no need for a
- separate function to convert this to seconds (and leaving it out avoids
- introducing floating point to the API, for those that wish to avoid it).
- \param _of The \c OggOpusFile from which to retrieve the PCM offset.
- \param _li The index of the link whose PCM length should be computed.
- Use a negative number to get the PCM length of the entire stream.
- \return The PCM length of the entire stream if \a _li is negative, the PCM
- length of link \a _li if it is non-negative, or a negative value on
- error.
- \retval #OP_EINVAL The source is not seekable (so we can't know the length),
- \a _li wasn't less than the total number of links in
- the stream, or the stream was only partially open.*/
-ogg_int64_t op_pcm_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
-
-/**Get the ID header information for the given link in a (possibly chained) Ogg
- Opus stream.
- This function may be called on partially-opened streams, but it will always
- return the ID header information of the Opus stream in the first link.
- \param _of The \c OggOpusFile from which to retrieve the ID header
- information.
- \param _li The index of the link whose ID header information should be
- retrieved.
- Use a negative number to get the ID header information of the
- current link.
- For an unseekable stream, \a _li is ignored, and the ID header
- information for the current link is always returned, if
- available.
- \return The contents of the ID header for the given link.*/
-const OpusHead *op_head(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
-
-/**Get the comment header information for the given link in a (possibly
- chained) Ogg Opus stream.
- This function may be called on partially-opened streams, but it will always
- return the tags from the Opus stream in the first link.
- \param _of The \c OggOpusFile from which to retrieve the comment header
- information.
- \param _li The index of the link whose comment header information should be
- retrieved.
- Use a negative number to get the comment header information of
- the current link.
- For an unseekable stream, \a _li is ignored, and the comment
- header information for the current link is always returned, if
- available.
- \return The contents of the comment header for the given link, or
- <code>NULL</code> if this is an unseekable stream that encountered
- an invalid link.*/
-const OpusTags *op_tags(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
-
-/**Retrieve the index of the current link.
- This is the link that produced the data most recently read by
- op_read_float() or its associated functions, or, after a seek, the link
- that the seek target landed in.
- Reading more data may advance the link index (even on the first read after a
- seek).
- \param _of The \c OggOpusFile from which to retrieve the current link index.
- \return The index of the current link on success, or a negative value on
- failure.
- For seekable streams, this is a number between 0 and the value
- returned by op_link_count().
- For unseekable streams, this value starts at 0 and increments by one
- each time a new link is encountered (even though op_link_count()
- always returns 1).
- \retval #OP_EINVAL The stream was only partially open.*/
-int op_current_link(const OggOpusFile *_of) OP_ARG_NONNULL(1);
-
-/**Computes the bitrate of the stream, or of an individual link in a
- (possibly-chained) Ogg Opus stream.
- The stream must be seekable to compute the bitrate.
- For unseekable streams, use op_bitrate_instant() to get periodic estimates.
- \warning If the Opus stream (or link) is concurrently multiplexed with other
- logical streams (e.g., video), this uses the size of the entire stream (or
- link) to compute the bitrate, not just the number of bytes in the first
- logical Opus stream.
- Returning the latter requires scanning the entire file, but this may be done
- by decoding the whole file and calling op_bitrate_instant() once at the
- end.
- Install a trivial decoding callback with op_set_decode_callback() if you
- wish to skip actual decoding during this process.
- \param _of The \c OggOpusFile from which to retrieve the bitrate.
- \param _li The index of the link whose bitrate should be computed.
- Use a negative number to get the bitrate of the whole stream.
- \return The bitrate on success, or a negative value on error.
- \retval #OP_EINVAL The stream was only partially open, the stream was not
- seekable, or \a _li was larger than the number of
- links.*/
-opus_int32 op_bitrate(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
-
-/**Compute the instantaneous bitrate, measured as the ratio of bits to playable
- samples decoded since a) the last call to op_bitrate_instant(), b) the last
- seek, or c) the start of playback, whichever was most recent.
- This will spike somewhat after a seek or at the start/end of a chain
- boundary, as pre-skip, pre-roll, and end-trimming causes samples to be
- decoded but not played.
- \param _of The \c OggOpusFile from which to retrieve the bitrate.
- \return The bitrate, in bits per second, or a negative value on error.
- \retval #OP_FALSE No data has been decoded since any of the events
- described above.
- \retval #OP_EINVAL The stream was only partially open.*/
-opus_int32 op_bitrate_instant(OggOpusFile *_of) OP_ARG_NONNULL(1);
-
-/**Obtain the current value of the position indicator for \a _of.
- \param _of The \c OggOpusFile from which to retrieve the position indicator.
- \return The byte position that is currently being read from.
- \retval #OP_EINVAL The stream was only partially open.*/
-opus_int64 op_raw_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1);
-
-/**Obtain the PCM offset of the next sample to be read.
- If the stream is not properly timestamped, this might not increment by the
- proper amount between reads, or even return monotonically increasing
- values.
- \param _of The \c OggOpusFile from which to retrieve the PCM offset.
- \return The PCM offset of the next sample to be read.
- \retval #OP_EINVAL The stream was only partially open.*/
-ogg_int64_t op_pcm_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1);
-
-/*@}*/
-/*@}*/
-
-/**\defgroup stream_seeking Seeking*/
-/*@{*/
-/**\name Functions for seeking in Opus streams
-
- These functions let you seek in Opus streams, if the underlying source
- support it.
- Seeking is implemented for all built-in stream I/O routines, though some
- individual sources may not be seekable (pipes, live HTTP streams, or HTTP
- streams from a server that does not support <code>Range</code> requests).
-
- op_raw_seek() is the fastest: it is guaranteed to perform at most one
- physical seek, but, since the target is a byte position, makes no guarantee
- how close to a given time it will come.
- op_pcm_seek() provides sample-accurate seeking.
- The number of physical seeks it requires is still quite small (often 1 or
- 2, even in highly variable bitrate streams).
-
- Seeking in Opus requires decoding some pre-roll amount before playback to
- allow the internal state to converge (as if recovering from packet loss).
- This is handled internally by <tt>libopusfile</tt>, but means there is
- little extra overhead for decoding up to the exact position requested
- (since it must decode some amount of audio anyway).
- It also means that decoding after seeking may not return exactly the same
- values as would be obtained by decoding the stream straight through.
- However, such differences are expected to be smaller than the loss
- introduced by Opus's lossy compression.*/
-/*@{*/
-
-/**Seek to a byte offset relative to the <b>compressed</b> data.
- This also scans packets to update the PCM cursor.
- It will cross a logical bitstream boundary, but only if it can't get any
- packets out of the tail of the link to which it seeks.
- \param _of The \c OggOpusFile in which to seek.
- \param _byte_offset The byte position to seek to.
- \return 0 on success, or a negative error code on failure.
- \retval #OP_EREAD The underlying seek operation failed.
- \retval #OP_EINVAL The stream was only partially open, or the target was
- outside the valid range for the stream.
- \retval #OP_ENOSEEK This stream is not seekable.
- \retval #OP_EBADLINK Failed to initialize a decoder for a stream for an
- unknown reason.*/
-int op_raw_seek(OggOpusFile *_of,opus_int64 _byte_offset) OP_ARG_NONNULL(1);
-
-/**Seek to the specified PCM offset, such that decoding will begin at exactly
- the requested position.
- \param _of The \c OggOpusFile in which to seek.
- \param _pcm_offset The PCM offset to seek to.
- This is in samples at 48 kHz relative to the start of the
- stream.
- \return 0 on success, or a negative value on error.
- \retval #OP_EREAD An underlying read or seek operation failed.
- \retval #OP_EINVAL The stream was only partially open, or the target was
- outside the valid range for the stream.
- \retval #OP_ENOSEEK This stream is not seekable.
- \retval #OP_EBADLINK We failed to find data we had seen before, or the
- bitstream structure was sufficiently malformed that
- seeking to the target destination was impossible.*/
-int op_pcm_seek(OggOpusFile *_of,ogg_int64_t _pcm_offset) OP_ARG_NONNULL(1);
-
-/*@}*/
-/*@}*/
-
-/**\defgroup stream_decoding Decoding*/
-/*@{*/
-/**\name Functions for decoding audio data
-
- These functions retrieve actual decoded audio data from the stream.
- The general functions, op_read() and op_read_float() return 16-bit or
- floating-point output, both using native endian ordering.
- The number of channels returned can change from link to link in a chained
- stream.
- There are special functions, op_read_stereo() and op_read_float_stereo(),
- which always output two channels, to simplify applications which do not
- wish to handle multichannel audio.
- These downmix multichannel files to two channels, so they can always return
- samples in the same format for every link in a chained file.
-
- If the rest of your audio processing chain can handle floating point, the
- floating-point routines should be preferred, as they prevent clipping and
- other issues which might be avoided entirely if, e.g., you scale down the
- volume at some other stage.
- However, if you intend to consume 16-bit samples directly, the conversion in
- <tt>libopusfile</tt> provides noise-shaping dithering and, if compiled
- against <tt>libopus</tt>&nbsp;1.1 or later, soft-clipping prevention.
-
- <tt>libopusfile</tt> can also be configured at compile time to use the
- fixed-point <tt>libopus</tt> API.
- If so, <tt>libopusfile</tt>'s floating-point API may also be disabled.
- In that configuration, nothing in <tt>libopusfile</tt> will use any
- floating-point operations, to simplify support on devices without an
- adequate FPU.
-
- \warning HTTPS streams may be be vulnerable to truncation attacks if you do
- not check the error return code from op_read_float() or its associated
- functions.
- If the remote peer does not close the connection gracefully (with a TLS
- "close notify" message), these functions will return #OP_EREAD instead of 0
- when they reach the end of the file.
- If you are reading from an <https:> URL (particularly if seeking is not
- supported), you should make sure to check for this error and warn the user
- appropriately.*/
-/*@{*/
-
-/**Indicates that the decoding callback should produce signed 16-bit
- native-endian output samples.*/
-#define OP_DEC_FORMAT_SHORT (7008)
-/**Indicates that the decoding callback should produce 32-bit native-endian
- float samples.*/
-#define OP_DEC_FORMAT_FLOAT (7040)
-
-/**Indicates that the decoding callback did not decode anything, and that
- <tt>libopusfile</tt> should decode normally instead.*/
-#define OP_DEC_USE_DEFAULT (6720)
-
-/**Called to decode an Opus packet.
- This should invoke the functional equivalent of opus_multistream_decode() or
- opus_multistream_decode_float(), except that it returns 0 on success
- instead of the number of decoded samples (which is known a priori).
- \param _ctx The application-provided callback context.
- \param _decoder The decoder to use to decode the packet.
- \param[out] _pcm The buffer to decode into.
- This will always have enough room for \a _nchannels of
- \a _nsamples samples, which should be placed into this
- buffer interleaved.
- \param _op The packet to decode.
- This will always have its granule position set to a valid
- value.
- \param _nsamples The number of samples expected from the packet.
- \param _nchannels The number of channels expected from the packet.
- \param _format The desired sample output format.
- This is either #OP_DEC_FORMAT_SHORT or
- #OP_DEC_FORMAT_FLOAT.
- \param _li The index of the link from which this packet was decoded.
- \return A non-negative value on success, or a negative value on error.
- Any error codes should be the same as those returned by
- opus_multistream_decode() or opus_multistream_decode_float().
- Success codes are as follows:
- \retval 0 Decoding was successful.
- The application has filled the buffer with
- exactly <code>\a _nsamples*\a
- _nchannels</code> samples in the requested
- format.
- \retval #OP_DEC_USE_DEFAULT No decoding was done.
- <tt>libopusfile</tt> should do the decoding
- by itself instead.*/
-typedef int (*op_decode_cb_func)(void *_ctx,OpusMSDecoder *_decoder,void *_pcm,
- const ogg_packet *_op,int _nsamples,int _nchannels,int _format,int _li);
-
-/**Sets the packet decode callback function.
- If set, this is called once for each packet that needs to be decoded.
- This can be used by advanced applications to do additional processing on the
- compressed or uncompressed data.
- For example, an application might save the final entropy coder state for
- debugging and testing purposes, or it might apply additional filters
- before the downmixing, dithering, or soft-clipping performed by
- <tt>libopusfile</tt>, so long as these filters do not introduce any
- latency.
-
- A call to this function is no guarantee that the audio will eventually be
- delivered to the application.
- <tt>libopusfile</tt> may discard some or all of the decoded audio data
- (i.e., at the beginning or end of a link, or after a seek), however the
- callback is still required to provide all of it.
- \param _of The \c OggOpusFile on which to set the decode callback.
- \param _decode_cb The callback function to call.
- This may be <code>NULL</code> to disable calling the
- callback.
- \param _ctx The application-provided context pointer to pass to the
- callback on each call.*/
-void op_set_decode_callback(OggOpusFile *_of,
- op_decode_cb_func _decode_cb,void *_ctx) OP_ARG_NONNULL(1);
-
-/**Gain offset type that indicates that the provided offset is relative to the
- header gain.
- This is the default.*/
-#define OP_HEADER_GAIN (0)
-
-/**Gain offset type that indicates that the provided offset is relative to the
- R128_ALBUM_GAIN value (if any), in addition to the header gain.*/
-#define OP_ALBUM_GAIN (3007)
-
-/**Gain offset type that indicates that the provided offset is relative to the
- R128_TRACK_GAIN value (if any), in addition to the header gain.*/
-#define OP_TRACK_GAIN (3008)
-
-/**Gain offset type that indicates that the provided offset should be used as
- the gain directly, without applying any the header or track gains.*/
-#define OP_ABSOLUTE_GAIN (3009)
-
-/**Sets the gain to be used for decoded output.
- By default, the gain in the header is applied with no additional offset.
- The total gain (including header gain and/or track gain, if applicable, and
- this offset), will be clamped to [-32768,32767]/256 dB.
- This is more than enough to saturate or underflow 16-bit PCM.
- \note The new gain will not be applied to any already buffered, decoded
- output.
- This means you cannot change it sample-by-sample, as at best it will be
- updated packet-by-packet.
- It is meant for setting a target volume level, rather than applying smooth
- fades, etc.
- \param _of The \c OggOpusFile on which to set the gain offset.
- \param _gain_type One of #OP_HEADER_GAIN, #OP_ALBUM_GAIN,
- #OP_TRACK_GAIN, or #OP_ABSOLUTE_GAIN.
- \param _gain_offset_q8 The gain offset to apply, in 1/256ths of a dB.
- \return 0 on success or a negative value on error.
- \retval #OP_EINVAL The \a _gain_type was unrecognized.*/
-int op_set_gain_offset(OggOpusFile *_of,
- int _gain_type,opus_int32 _gain_offset_q8) OP_ARG_NONNULL(1);
-
-/**Sets whether or not dithering is enabled for 16-bit decoding.
- By default, when <tt>libopusfile</tt> is compiled to use floating-point
- internally, calling op_read() or op_read_stereo() will first decode to
- float, and then convert to fixed-point using noise-shaping dithering.
- This flag can be used to disable that dithering.
- When the application uses op_read_float() or op_read_float_stereo(), or when
- the library has been compiled to decode directly to fixed point, this flag
- has no effect.
- \param _of The \c OggOpusFile on which to enable or disable dithering.
- \param _enabled A non-zero value to enable dithering, or 0 to disable it.*/
-void op_set_dither_enabled(OggOpusFile *_of,int _enabled) OP_ARG_NONNULL(1);
-
-/**Reads more samples from the stream.
- \note Although \a _buf_size must indicate the total number of values that
- can be stored in \a _pcm, the return value is the number of samples
- <em>per channel</em>.
- This is done because
- <ol>
- <li>The channel count cannot be known a priori (reading more samples might
- advance us into the next link, with a different channel count), so
- \a _buf_size cannot also be in units of samples per channel,</li>
- <li>Returning the samples per channel matches the <code>libopus</code> API
- as closely as we're able,</li>
- <li>Returning the total number of values instead of samples per channel
- would mean the caller would need a division to compute the samples per
- channel, and might worry about the possibility of getting back samples
- for some channels and not others, and</li>
- <li>This approach is relatively fool-proof: if an application passes too
- small a value to \a _buf_size, they will simply get fewer samples back,
- and if they assume the return value is the total number of values, then
- they will simply read too few (rather than reading too many and going
- off the end of the buffer).</li>
- </ol>
- \param _of The \c OggOpusFile from which to read.
- \param[out] _pcm A buffer in which to store the output PCM samples, as
- signed native-endian 16-bit values at 48&nbsp;kHz
- with a nominal range of <code>[-32768,32767)</code>.
- Multiple channels are interleaved using the
- <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis
- channel ordering</a>.
- This must have room for at least \a _buf_size values.
- \param _buf_size The number of values that can be stored in \a _pcm.
- It is recommended that this be large enough for at
- least 120 ms of data at 48 kHz per channel (5760
- values per channel).
- Smaller buffers will simply return less data, possibly
- consuming more memory to buffer the data internally.
- <tt>libopusfile</tt> may return less data than
- requested.
- If so, there is no guarantee that the remaining data
- in \a _pcm will be unmodified.
- \param[out] _li The index of the link this data was decoded from.
- You may pass <code>NULL</code> if you do not need this
- information.
- If this function fails (returning a negative value),
- this parameter is left unset.
- \return The number of samples read per channel on success, or a negative
- value on failure.
- The channel count can be retrieved on success by calling
- <code>op_head(_of,*_li)</code>.
- The number of samples returned may be 0 if the buffer was too small
- to store even a single sample for all channels, or if end-of-file
- was reached.
- The list of possible failure codes follows.
- Most of them can only be returned by unseekable, chained streams
- that encounter a new link.
- \retval #OP_HOLE There was a hole in the data, and some samples
- may have been skipped.
- Call this function again to continue decoding
- past the hole.
- \retval #OP_EREAD An underlying read operation failed.
- This may signal a truncation attack from an
- <https:> source.
- \retval #OP_EFAULT An internal memory allocation failed.
- \retval #OP_EIMPL An unseekable stream encountered a new link that
- used a feature that is not implemented, such as
- an unsupported channel family.
- \retval #OP_EINVAL The stream was only partially open.
- \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that
- did not have any logical Opus streams in it.
- \retval #OP_EBADHEADER An unseekable stream encountered a new link with a
- required header packet that was not properly
- formatted, contained illegal values, or was
- missing altogether.
- \retval #OP_EVERSION An unseekable stream encountered a new link with
- an ID header that contained an unrecognized
- version number.
- \retval #OP_EBADPACKET Failed to properly decode the next packet.
- \retval #OP_EBADLINK We failed to find data we had seen before.
- \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with
- a starting timestamp that failed basic validity
- checks.*/
-OP_WARN_UNUSED_RESULT int op_read(OggOpusFile *_of,
- opus_int16 *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1);
-
-/**Reads more samples from the stream.
- \note Although \a _buf_size must indicate the total number of values that
- can be stored in \a _pcm, the return value is the number of samples
- <em>per channel</em>.
- <ol>
- <li>The channel count cannot be known a priori (reading more samples might
- advance us into the next link, with a different channel count), so
- \a _buf_size cannot also be in units of samples per channel,</li>
- <li>Returning the samples per channel matches the <code>libopus</code> API
- as closely as we're able,</li>
- <li>Returning the total number of values instead of samples per channel
- would mean the caller would need a division to compute the samples per
- channel, and might worry about the possibility of getting back samples
- for some channels and not others, and</li>
- <li>This approach is relatively fool-proof: if an application passes too
- small a value to \a _buf_size, they will simply get fewer samples back,
- and if they assume the return value is the total number of values, then
- they will simply read too few (rather than reading too many and going
- off the end of the buffer).</li>
- </ol>
- \param _of The \c OggOpusFile from which to read.
- \param[out] _pcm A buffer in which to store the output PCM samples as
- signed floats at 48&nbsp;kHz with a nominal range of
- <code>[-1.0,1.0]</code>.
- Multiple channels are interleaved using the
- <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis
- channel ordering</a>.
- This must have room for at least \a _buf_size floats.
- \param _buf_size The number of floats that can be stored in \a _pcm.
- It is recommended that this be large enough for at
- least 120 ms of data at 48 kHz per channel (5760
- samples per channel).
- Smaller buffers will simply return less data, possibly
- consuming more memory to buffer the data internally.
- If less than \a _buf_size values are returned,
- <tt>libopusfile</tt> makes no guarantee that the
- remaining data in \a _pcm will be unmodified.
- \param[out] _li The index of the link this data was decoded from.
- You may pass <code>NULL</code> if you do not need this
- information.
- If this function fails (returning a negative value),
- this parameter is left unset.
- \return The number of samples read per channel on success, or a negative
- value on failure.
- The channel count can be retrieved on success by calling
- <code>op_head(_of,*_li)</code>.
- The number of samples returned may be 0 if the buffer was too small
- to store even a single sample for all channels, or if end-of-file
- was reached.
- The list of possible failure codes follows.
- Most of them can only be returned by unseekable, chained streams
- that encounter a new link.
- \retval #OP_HOLE There was a hole in the data, and some samples
- may have been skipped.
- Call this function again to continue decoding
- past the hole.
- \retval #OP_EREAD An underlying read operation failed.
- This may signal a truncation attack from an
- <https:> source.
- \retval #OP_EFAULT An internal memory allocation failed.
- \retval #OP_EIMPL An unseekable stream encountered a new link that
- used a feature that is not implemented, such as
- an unsupported channel family.
- \retval #OP_EINVAL The stream was only partially open.
- \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that
- did not have any logical Opus streams in it.
- \retval #OP_EBADHEADER An unseekable stream encountered a new link with a
- required header packet that was not properly
- formatted, contained illegal values, or was
- missing altogether.
- \retval #OP_EVERSION An unseekable stream encountered a new link with
- an ID header that contained an unrecognized
- version number.
- \retval #OP_EBADPACKET Failed to properly decode the next packet.
- \retval #OP_EBADLINK We failed to find data we had seen before.
- \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with
- a starting timestamp that failed basic validity
- checks.*/
-OP_WARN_UNUSED_RESULT int op_read_float(OggOpusFile *_of,
- float *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1);
-
-/**Reads more samples from the stream and downmixes to stereo, if necessary.
- This function is intended for simple players that want a uniform output
- format, even if the channel count changes between links in a chained
- stream.
- \note \a _buf_size indicates the total number of values that can be stored
- in \a _pcm, while the return value is the number of samples <em>per
- channel</em>, even though the channel count is known, for consistency with
- op_read().
- \param _of The \c OggOpusFile from which to read.
- \param[out] _pcm A buffer in which to store the output PCM samples, as
- signed native-endian 16-bit values at 48&nbsp;kHz
- with a nominal range of <code>[-32768,32767)</code>.
- The left and right channels are interleaved in the
- buffer.
- This must have room for at least \a _buf_size values.
- \param _buf_size The number of values that can be stored in \a _pcm.
- It is recommended that this be large enough for at
- least 120 ms of data at 48 kHz per channel (11520
- values total).
- Smaller buffers will simply return less data, possibly
- consuming more memory to buffer the data internally.
- If less than \a _buf_size values are returned,
- <tt>libopusfile</tt> makes no guarantee that the
- remaining data in \a _pcm will be unmodified.
- \return The number of samples read per channel on success, or a negative
- value on failure.
- The number of samples returned may be 0 if the buffer was too small
- to store even a single sample for both channels, or if end-of-file
- was reached.
- The list of possible failure codes follows.
- Most of them can only be returned by unseekable, chained streams
- that encounter a new link.
- \retval #OP_HOLE There was a hole in the data, and some samples
- may have been skipped.
- Call this function again to continue decoding
- past the hole.
- \retval #OP_EREAD An underlying read operation failed.
- This may signal a truncation attack from an
- <https:> source.
- \retval #OP_EFAULT An internal memory allocation failed.
- \retval #OP_EIMPL An unseekable stream encountered a new link that
- used a feature that is not implemented, such as
- an unsupported channel family.
- \retval #OP_EINVAL The stream was only partially open.
- \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that
- did not have any logical Opus streams in it.
- \retval #OP_EBADHEADER An unseekable stream encountered a new link with a
- required header packet that was not properly
- formatted, contained illegal values, or was
- missing altogether.
- \retval #OP_EVERSION An unseekable stream encountered a new link with
- an ID header that contained an unrecognized
- version number.
- \retval #OP_EBADPACKET Failed to properly decode the next packet.
- \retval #OP_EBADLINK We failed to find data we had seen before.
- \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with
- a starting timestamp that failed basic validity
- checks.*/
-OP_WARN_UNUSED_RESULT int op_read_stereo(OggOpusFile *_of,
- opus_int16 *_pcm,int _buf_size) OP_ARG_NONNULL(1);
-
-/**Reads more samples from the stream and downmixes to stereo, if necessary.
- This function is intended for simple players that want a uniform output
- format, even if the channel count changes between links in a chained
- stream.
- \note \a _buf_size indicates the total number of values that can be stored
- in \a _pcm, while the return value is the number of samples <em>per
- channel</em>, even though the channel count is known, for consistency with
- op_read_float().
- \param _of The \c OggOpusFile from which to read.
- \param[out] _pcm A buffer in which to store the output PCM samples, as
- signed floats at 48&nbsp;kHz with a nominal range of
- <code>[-1.0,1.0]</code>.
- The left and right channels are interleaved in the
- buffer.
- This must have room for at least \a _buf_size values.
- \param _buf_size The number of values that can be stored in \a _pcm.
- It is recommended that this be large enough for at
- least 120 ms of data at 48 kHz per channel (11520
- values total).
- Smaller buffers will simply return less data, possibly
- consuming more memory to buffer the data internally.
- If less than \a _buf_size values are returned,
- <tt>libopusfile</tt> makes no guarantee that the
- remaining data in \a _pcm will be unmodified.
- \return The number of samples read per channel on success, or a negative
- value on failure.
- The number of samples returned may be 0 if the buffer was too small
- to store even a single sample for both channels, or if end-of-file
- was reached.
- The list of possible failure codes follows.
- Most of them can only be returned by unseekable, chained streams
- that encounter a new link.
- \retval #OP_HOLE There was a hole in the data, and some samples
- may have been skipped.
- Call this function again to continue decoding
- past the hole.
- \retval #OP_EREAD An underlying read operation failed.
- This may signal a truncation attack from an
- <https:> source.
- \retval #OP_EFAULT An internal memory allocation failed.
- \retval #OP_EIMPL An unseekable stream encountered a new link that
- used a feature that is not implemented, such as
- an unsupported channel family.
- \retval #OP_EINVAL The stream was only partially open.
- \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that
- that did not have any logical Opus streams in it.
- \retval #OP_EBADHEADER An unseekable stream encountered a new link with a
- required header packet that was not properly
- formatted, contained illegal values, or was
- missing altogether.
- \retval #OP_EVERSION An unseekable stream encountered a new link with
- an ID header that contained an unrecognized
- version number.
- \retval #OP_EBADPACKET Failed to properly decode the next packet.
- \retval #OP_EBADLINK We failed to find data we had seen before.
- \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with
- a starting timestamp that failed basic validity
- checks.*/
-OP_WARN_UNUSED_RESULT int op_read_float_stereo(OggOpusFile *_of,
- float *_pcm,int _buf_size) OP_ARG_NONNULL(1);
-
-/*@}*/
-/*@}*/
-
-# if OP_GNUC_PREREQ(4,0)
-# pragma GCC visibility pop
-# endif
-
-# if defined(__cplusplus)
-}
-# endif
-
-#endif
diff --git a/thirdparty/opus/opus_compare.c b/thirdparty/opus/opus_compare.c
deleted file mode 100644
index 06c67d752f..0000000000
--- a/thirdparty/opus/opus_compare.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Copyright (c) 2011-2012 Xiph.Org Foundation, Mozilla Corporation
- Written by Jean-Marc Valin and Timothy B. Terriberry */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-#define OPUS_PI (3.14159265F)
-
-#define OPUS_COSF(_x) ((float)cos(_x))
-#define OPUS_SINF(_x) ((float)sin(_x))
-
-static void *check_alloc(void *_ptr){
- if(_ptr==NULL){
- fprintf(stderr,"Out of memory.\n");
- exit(EXIT_FAILURE);
- }
- return _ptr;
-}
-
-static void *opus_malloc(size_t _size){
- return check_alloc(malloc(_size));
-}
-
-static void *opus_realloc(void *_ptr,size_t _size){
- return check_alloc(realloc(_ptr,_size));
-}
-
-static size_t read_pcm16(float **_samples,FILE *_fin,int _nchannels){
- unsigned char buf[1024];
- float *samples;
- size_t nsamples;
- size_t csamples;
- size_t xi;
- size_t nread;
- samples=NULL;
- nsamples=csamples=0;
- for(;;){
- nread=fread(buf,2*_nchannels,1024/(2*_nchannels),_fin);
- if(nread<=0)break;
- if(nsamples+nread>csamples){
- do csamples=csamples<<1|1;
- while(nsamples+nread>csamples);
- samples=(float *)opus_realloc(samples,
- _nchannels*csamples*sizeof(*samples));
- }
- for(xi=0;xi<nread;xi++){
- int ci;
- for(ci=0;ci<_nchannels;ci++){
- int s;
- s=buf[2*(xi*_nchannels+ci)+1]<<8|buf[2*(xi*_nchannels+ci)];
- s=((s&0xFFFF)^0x8000)-0x8000;
- samples[(nsamples+xi)*_nchannels+ci]=s;
- }
- }
- nsamples+=nread;
- }
- *_samples=(float *)opus_realloc(samples,
- _nchannels*nsamples*sizeof(*samples));
- return nsamples;
-}
-
-static void band_energy(float *_out,float *_ps,const int *_bands,int _nbands,
- const float *_in,int _nchannels,size_t _nframes,int _window_sz,
- int _step,int _downsample){
- float *window;
- float *x;
- float *c;
- float *s;
- size_t xi;
- int xj;
- int ps_sz;
- window=(float *)opus_malloc((3+_nchannels)*_window_sz*sizeof(*window));
- c=window+_window_sz;
- s=c+_window_sz;
- x=s+_window_sz;
- ps_sz=_window_sz/2;
- for(xj=0;xj<_window_sz;xj++){
- window[xj]=0.5F-0.5F*OPUS_COSF((2*OPUS_PI/(_window_sz-1))*xj);
- }
- for(xj=0;xj<_window_sz;xj++){
- c[xj]=OPUS_COSF((2*OPUS_PI/_window_sz)*xj);
- }
- for(xj=0;xj<_window_sz;xj++){
- s[xj]=OPUS_SINF((2*OPUS_PI/_window_sz)*xj);
- }
- for(xi=0;xi<_nframes;xi++){
- int ci;
- int xk;
- int bi;
- for(ci=0;ci<_nchannels;ci++){
- for(xk=0;xk<_window_sz;xk++){
- x[ci*_window_sz+xk]=window[xk]*_in[(xi*_step+xk)*_nchannels+ci];
- }
- }
- for(bi=xj=0;bi<_nbands;bi++){
- float p[2]={0};
- for(;xj<_bands[bi+1];xj++){
- for(ci=0;ci<_nchannels;ci++){
- float re;
- float im;
- int ti;
- ti=0;
- re=im=0;
- for(xk=0;xk<_window_sz;xk++){
- re+=c[ti]*x[ci*_window_sz+xk];
- im-=s[ti]*x[ci*_window_sz+xk];
- ti+=xj;
- if(ti>=_window_sz)ti-=_window_sz;
- }
- re*=_downsample;
- im*=_downsample;
- _ps[(xi*ps_sz+xj)*_nchannels+ci]=re*re+im*im+100000;
- p[ci]+=_ps[(xi*ps_sz+xj)*_nchannels+ci];
- }
- }
- if(_out){
- _out[(xi*_nbands+bi)*_nchannels]=p[0]/(_bands[bi+1]-_bands[bi]);
- if(_nchannels==2){
- _out[(xi*_nbands+bi)*_nchannels+1]=p[1]/(_bands[bi+1]-_bands[bi]);
- }
- }
- }
- }
- free(window);
-}
-
-#define NBANDS (21)
-#define NFREQS (240)
-
-/*Bands on which we compute the pseudo-NMR (Bark-derived
- CELT bands).*/
-static const int BANDS[NBANDS+1]={
- 0,2,4,6,8,10,12,14,16,20,24,28,32,40,48,56,68,80,96,120,156,200
-};
-
-#define TEST_WIN_SIZE (480)
-#define TEST_WIN_STEP (120)
-
-int main(int _argc,const char **_argv){
- FILE *fin1;
- FILE *fin2;
- float *x;
- float *y;
- float *xb;
- float *X;
- float *Y;
- double err;
- float Q;
- size_t xlength;
- size_t ylength;
- size_t nframes;
- size_t xi;
- int ci;
- int xj;
- int bi;
- int nchannels;
- unsigned rate;
- int downsample;
- int ybands;
- int yfreqs;
- int max_compare;
- if(_argc<3||_argc>6){
- fprintf(stderr,"Usage: %s [-s] [-r rate2] <file1.sw> <file2.sw>\n",
- _argv[0]);
- return EXIT_FAILURE;
- }
- nchannels=1;
- if(strcmp(_argv[1],"-s")==0){
- nchannels=2;
- _argv++;
- }
- rate=48000;
- ybands=NBANDS;
- yfreqs=NFREQS;
- downsample=1;
- if(strcmp(_argv[1],"-r")==0){
- rate=atoi(_argv[2]);
- if(rate!=8000&&rate!=12000&&rate!=16000&&rate!=24000&&rate!=48000){
- fprintf(stderr,
- "Sampling rate must be 8000, 12000, 16000, 24000, or 48000\n");
- return EXIT_FAILURE;
- }
- downsample=48000/rate;
- switch(rate){
- case 8000:ybands=13;break;
- case 12000:ybands=15;break;
- case 16000:ybands=17;break;
- case 24000:ybands=19;break;
- }
- yfreqs=NFREQS/downsample;
- _argv+=2;
- }
- fin1=fopen(_argv[1],"rb");
- if(fin1==NULL){
- fprintf(stderr,"Error opening '%s'.\n",_argv[1]);
- return EXIT_FAILURE;
- }
- fin2=fopen(_argv[2],"rb");
- if(fin2==NULL){
- fprintf(stderr,"Error opening '%s'.\n",_argv[2]);
- fclose(fin1);
- return EXIT_FAILURE;
- }
- /*Read in the data and allocate scratch space.*/
- xlength=read_pcm16(&x,fin1,2);
- if(nchannels==1){
- for(xi=0;xi<xlength;xi++)x[xi]=.5*(x[2*xi]+x[2*xi+1]);
- }
- fclose(fin1);
- ylength=read_pcm16(&y,fin2,nchannels);
- fclose(fin2);
- if(xlength!=ylength*downsample){
- fprintf(stderr,"Sample counts do not match (%lu!=%lu).\n",
- (unsigned long)xlength,(unsigned long)ylength*downsample);
- return EXIT_FAILURE;
- }
- if(xlength<TEST_WIN_SIZE){
- fprintf(stderr,"Insufficient sample data (%lu<%i).\n",
- (unsigned long)xlength,TEST_WIN_SIZE);
- return EXIT_FAILURE;
- }
- nframes=(xlength-TEST_WIN_SIZE+TEST_WIN_STEP)/TEST_WIN_STEP;
- xb=(float *)opus_malloc(nframes*NBANDS*nchannels*sizeof(*xb));
- X=(float *)opus_malloc(nframes*NFREQS*nchannels*sizeof(*X));
- Y=(float *)opus_malloc(nframes*yfreqs*nchannels*sizeof(*Y));
- /*Compute the per-band spectral energy of the original signal
- and the error.*/
- band_energy(xb,X,BANDS,NBANDS,x,nchannels,nframes,
- TEST_WIN_SIZE,TEST_WIN_STEP,1);
- free(x);
- band_energy(NULL,Y,BANDS,ybands,y,nchannels,nframes,
- TEST_WIN_SIZE/downsample,TEST_WIN_STEP/downsample,downsample);
- free(y);
- for(xi=0;xi<nframes;xi++){
- /*Frequency masking (low to high): 10 dB/Bark slope.*/
- for(bi=1;bi<NBANDS;bi++){
- for(ci=0;ci<nchannels;ci++){
- xb[(xi*NBANDS+bi)*nchannels+ci]+=
- 0.1F*xb[(xi*NBANDS+bi-1)*nchannels+ci];
- }
- }
- /*Frequency masking (high to low): 15 dB/Bark slope.*/
- for(bi=NBANDS-1;bi-->0;){
- for(ci=0;ci<nchannels;ci++){
- xb[(xi*NBANDS+bi)*nchannels+ci]+=
- 0.03F*xb[(xi*NBANDS+bi+1)*nchannels+ci];
- }
- }
- if(xi>0){
- /*Temporal masking: -3 dB/2.5ms slope.*/
- for(bi=0;bi<NBANDS;bi++){
- for(ci=0;ci<nchannels;ci++){
- xb[(xi*NBANDS+bi)*nchannels+ci]+=
- 0.5F*xb[((xi-1)*NBANDS+bi)*nchannels+ci];
- }
- }
- }
- /* Allowing some cross-talk */
- if(nchannels==2){
- for(bi=0;bi<NBANDS;bi++){
- float l,r;
- l=xb[(xi*NBANDS+bi)*nchannels+0];
- r=xb[(xi*NBANDS+bi)*nchannels+1];
- xb[(xi*NBANDS+bi)*nchannels+0]+=0.01F*r;
- xb[(xi*NBANDS+bi)*nchannels+1]+=0.01F*l;
- }
- }
-
- /* Apply masking */
- for(bi=0;bi<ybands;bi++){
- for(xj=BANDS[bi];xj<BANDS[bi+1];xj++){
- for(ci=0;ci<nchannels;ci++){
- X[(xi*NFREQS+xj)*nchannels+ci]+=
- 0.1F*xb[(xi*NBANDS+bi)*nchannels+ci];
- Y[(xi*yfreqs+xj)*nchannels+ci]+=
- 0.1F*xb[(xi*NBANDS+bi)*nchannels+ci];
- }
- }
- }
- }
-
- /* Average of consecutive frames to make comparison slightly less sensitive */
- for(bi=0;bi<ybands;bi++){
- for(xj=BANDS[bi];xj<BANDS[bi+1];xj++){
- for(ci=0;ci<nchannels;ci++){
- float xtmp;
- float ytmp;
- xtmp = X[xj*nchannels+ci];
- ytmp = Y[xj*nchannels+ci];
- for(xi=1;xi<nframes;xi++){
- float xtmp2;
- float ytmp2;
- xtmp2 = X[(xi*NFREQS+xj)*nchannels+ci];
- ytmp2 = Y[(xi*yfreqs+xj)*nchannels+ci];
- X[(xi*NFREQS+xj)*nchannels+ci] += xtmp;
- Y[(xi*yfreqs+xj)*nchannels+ci] += ytmp;
- xtmp = xtmp2;
- ytmp = ytmp2;
- }
- }
- }
- }
-
- /*If working at a lower sampling rate, don't take into account the last
- 300 Hz to allow for different transition bands.
- For 12 kHz, we don't skip anything, because the last band already skips
- 400 Hz.*/
- if(rate==48000)max_compare=BANDS[NBANDS];
- else if(rate==12000)max_compare=BANDS[ybands];
- else max_compare=BANDS[ybands]-3;
- err=0;
- for(xi=0;xi<nframes;xi++){
- double Ef;
- Ef=0;
- for(bi=0;bi<ybands;bi++){
- double Eb;
- Eb=0;
- for(xj=BANDS[bi];xj<BANDS[bi+1]&&xj<max_compare;xj++){
- for(ci=0;ci<nchannels;ci++){
- float re;
- float im;
- re=Y[(xi*yfreqs+xj)*nchannels+ci]/X[(xi*NFREQS+xj)*nchannels+ci];
- im=re-log(re)-1;
- /*Make comparison less sensitive around the SILK/CELT cross-over to
- allow for mode freedom in the filters.*/
- if(xj>=79&&xj<=81)im*=0.1F;
- if(xj==80)im*=0.1F;
- Eb+=im;
- }
- }
- Eb /= (BANDS[bi+1]-BANDS[bi])*nchannels;
- Ef += Eb*Eb;
- }
- /*Using a fixed normalization value means we're willing to accept slightly
- lower quality for lower sampling rates.*/
- Ef/=NBANDS;
- Ef*=Ef;
- err+=Ef*Ef;
- }
- err=pow(err/nframes,1.0/16);
- Q=100*(1-0.5*log(1+err)/log(1.13));
- if(Q<0){
- fprintf(stderr,"Test vector FAILS\n");
- fprintf(stderr,"Internal weighted error is %f\n",err);
- return EXIT_FAILURE;
- }
- else{
- fprintf(stderr,"Test vector PASSES\n");
- fprintf(stderr,
- "Opus quality metric: %.1f %% (internal weighted error is %f)\n",Q,err);
- return EXIT_SUCCESS;
- }
-}
diff --git a/thirdparty/opus/opus_decoder.c b/thirdparty/opus/opus_decoder.c
deleted file mode 100644
index 080bec5072..0000000000
--- a/thirdparty/opus/opus_decoder.c
+++ /dev/null
@@ -1,981 +0,0 @@
-/* Copyright (c) 2010 Xiph.Org Foundation, Skype Limited
- Written by Jean-Marc Valin and Koen Vos */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifndef OPUS_BUILD
-# error "OPUS_BUILD _MUST_ be defined to build Opus. This probably means you need other defines as well, as in a config.h. See the included build files for details."
-#endif
-
-#if defined(__GNUC__) && (__GNUC__ >= 2) && !defined(__OPTIMIZE__) && !defined(OPUS_WILL_BE_SLOW)
-# pragma message "You appear to be compiling without optimization, if so opus will be very slow."
-#endif
-
-#include <stdarg.h>
-#include "celt.h"
-#include "opus.h"
-#include "entdec.h"
-#include "modes.h"
-#include "API.h"
-#include "stack_alloc.h"
-#include "float_cast.h"
-#include "opus_private.h"
-#include "os_support.h"
-#include "structs.h"
-#include "define.h"
-#include "mathops.h"
-#include "cpu_support.h"
-
-struct OpusDecoder {
- int celt_dec_offset;
- int silk_dec_offset;
- int channels;
- opus_int32 Fs; /** Sampling rate (at the API level) */
- silk_DecControlStruct DecControl;
- int decode_gain;
- int arch;
-
- /* Everything beyond this point gets cleared on a reset */
-#define OPUS_DECODER_RESET_START stream_channels
- int stream_channels;
-
- int bandwidth;
- int mode;
- int prev_mode;
- int frame_size;
- int prev_redundancy;
- int last_packet_duration;
-#ifndef FIXED_POINT
- opus_val16 softclip_mem[2];
-#endif
-
- opus_uint32 rangeFinal;
-};
-
-
-int opus_decoder_get_size(int channels)
-{
- int silkDecSizeBytes, celtDecSizeBytes;
- int ret;
- if (channels<1 || channels > 2)
- return 0;
- ret = silk_Get_Decoder_Size( &silkDecSizeBytes );
- if(ret)
- return 0;
- silkDecSizeBytes = align(silkDecSizeBytes);
- celtDecSizeBytes = celt_decoder_get_size(channels);
- return align(sizeof(OpusDecoder))+silkDecSizeBytes+celtDecSizeBytes;
-}
-
-int opus_decoder_init(OpusDecoder *st, opus_int32 Fs, int channels)
-{
- void *silk_dec;
- CELTDecoder *celt_dec;
- int ret, silkDecSizeBytes;
-
- if ((Fs!=48000&&Fs!=24000&&Fs!=16000&&Fs!=12000&&Fs!=8000)
- || (channels!=1&&channels!=2))
- return OPUS_BAD_ARG;
-
- OPUS_CLEAR((char*)st, opus_decoder_get_size(channels));
- /* Initialize SILK encoder */
- ret = silk_Get_Decoder_Size(&silkDecSizeBytes);
- if (ret)
- return OPUS_INTERNAL_ERROR;
-
- silkDecSizeBytes = align(silkDecSizeBytes);
- st->silk_dec_offset = align(sizeof(OpusDecoder));
- st->celt_dec_offset = st->silk_dec_offset+silkDecSizeBytes;
- silk_dec = (char*)st+st->silk_dec_offset;
- celt_dec = (CELTDecoder*)((char*)st+st->celt_dec_offset);
- st->stream_channels = st->channels = channels;
-
- st->Fs = Fs;
- st->DecControl.API_sampleRate = st->Fs;
- st->DecControl.nChannelsAPI = st->channels;
-
- /* Reset decoder */
- ret = silk_InitDecoder( silk_dec );
- if(ret)return OPUS_INTERNAL_ERROR;
-
- /* Initialize CELT decoder */
- ret = celt_decoder_init(celt_dec, Fs, channels);
- if(ret!=OPUS_OK)return OPUS_INTERNAL_ERROR;
-
- celt_decoder_ctl(celt_dec, CELT_SET_SIGNALLING(0));
-
- st->prev_mode = 0;
- st->frame_size = Fs/400;
- st->arch = opus_select_arch();
- return OPUS_OK;
-}
-
-OpusDecoder *opus_decoder_create(opus_int32 Fs, int channels, int *error)
-{
- int ret;
- OpusDecoder *st;
- if ((Fs!=48000&&Fs!=24000&&Fs!=16000&&Fs!=12000&&Fs!=8000)
- || (channels!=1&&channels!=2))
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
- st = (OpusDecoder *)opus_alloc(opus_decoder_get_size(channels));
- if (st == NULL)
- {
- if (error)
- *error = OPUS_ALLOC_FAIL;
- return NULL;
- }
- ret = opus_decoder_init(st, Fs, channels);
- if (error)
- *error = ret;
- if (ret != OPUS_OK)
- {
- opus_free(st);
- st = NULL;
- }
- return st;
-}
-
-static void smooth_fade(const opus_val16 *in1, const opus_val16 *in2,
- opus_val16 *out, int overlap, int channels,
- const opus_val16 *window, opus_int32 Fs)
-{
- int i, c;
- int inc = 48000/Fs;
- for (c=0;c<channels;c++)
- {
- for (i=0;i<overlap;i++)
- {
- opus_val16 w = MULT16_16_Q15(window[i*inc], window[i*inc]);
- out[i*channels+c] = SHR32(MAC16_16(MULT16_16(w,in2[i*channels+c]),
- Q15ONE-w, in1[i*channels+c]), 15);
- }
- }
-}
-
-static int opus_packet_get_mode(const unsigned char *data)
-{
- int mode;
- if (data[0]&0x80)
- {
- mode = MODE_CELT_ONLY;
- } else if ((data[0]&0x60) == 0x60)
- {
- mode = MODE_HYBRID;
- } else {
- mode = MODE_SILK_ONLY;
- }
- return mode;
-}
-
-static int opus_decode_frame(OpusDecoder *st, const unsigned char *data,
- opus_int32 len, opus_val16 *pcm, int frame_size, int decode_fec)
-{
- void *silk_dec;
- CELTDecoder *celt_dec;
- int i, silk_ret=0, celt_ret=0;
- ec_dec dec;
- opus_int32 silk_frame_size;
- int pcm_silk_size;
- VARDECL(opus_int16, pcm_silk);
- int pcm_transition_silk_size;
- VARDECL(opus_val16, pcm_transition_silk);
- int pcm_transition_celt_size;
- VARDECL(opus_val16, pcm_transition_celt);
- opus_val16 *pcm_transition=NULL;
- int redundant_audio_size;
- VARDECL(opus_val16, redundant_audio);
-
- int audiosize;
- int mode;
- int transition=0;
- int start_band;
- int redundancy=0;
- int redundancy_bytes = 0;
- int celt_to_silk=0;
- int c;
- int F2_5, F5, F10, F20;
- const opus_val16 *window;
- opus_uint32 redundant_rng = 0;
- int celt_accum;
- ALLOC_STACK;
-
- silk_dec = (char*)st+st->silk_dec_offset;
- celt_dec = (CELTDecoder*)((char*)st+st->celt_dec_offset);
- F20 = st->Fs/50;
- F10 = F20>>1;
- F5 = F10>>1;
- F2_5 = F5>>1;
- if (frame_size < F2_5)
- {
- RESTORE_STACK;
- return OPUS_BUFFER_TOO_SMALL;
- }
- /* Limit frame_size to avoid excessive stack allocations. */
- frame_size = IMIN(frame_size, st->Fs/25*3);
- /* Payloads of 1 (2 including ToC) or 0 trigger the PLC/DTX */
- if (len<=1)
- {
- data = NULL;
- /* In that case, don't conceal more than what the ToC says */
- frame_size = IMIN(frame_size, st->frame_size);
- }
- if (data != NULL)
- {
- audiosize = st->frame_size;
- mode = st->mode;
- ec_dec_init(&dec,(unsigned char*)data,len);
- } else {
- audiosize = frame_size;
- mode = st->prev_mode;
-
- if (mode == 0)
- {
- /* If we haven't got any packet yet, all we can do is return zeros */
- for (i=0;i<audiosize*st->channels;i++)
- pcm[i] = 0;
- RESTORE_STACK;
- return audiosize;
- }
-
- /* Avoids trying to run the PLC on sizes other than 2.5 (CELT), 5 (CELT),
- 10, or 20 (e.g. 12.5 or 30 ms). */
- if (audiosize > F20)
- {
- do {
- int ret = opus_decode_frame(st, NULL, 0, pcm, IMIN(audiosize, F20), 0);
- if (ret<0)
- {
- RESTORE_STACK;
- return ret;
- }
- pcm += ret*st->channels;
- audiosize -= ret;
- } while (audiosize > 0);
- RESTORE_STACK;
- return frame_size;
- } else if (audiosize < F20)
- {
- if (audiosize > F10)
- audiosize = F10;
- else if (mode != MODE_SILK_ONLY && audiosize > F5 && audiosize < F10)
- audiosize = F5;
- }
- }
-
- /* In fixed-point, we can tell CELT to do the accumulation on top of the
- SILK PCM buffer. This saves some stack space. */
-#ifdef FIXED_POINT
- celt_accum = (mode != MODE_CELT_ONLY) && (frame_size >= F10);
-#else
- celt_accum = 0;
-#endif
-
- pcm_transition_silk_size = ALLOC_NONE;
- pcm_transition_celt_size = ALLOC_NONE;
- if (data!=NULL && st->prev_mode > 0 && (
- (mode == MODE_CELT_ONLY && st->prev_mode != MODE_CELT_ONLY && !st->prev_redundancy)
- || (mode != MODE_CELT_ONLY && st->prev_mode == MODE_CELT_ONLY) )
- )
- {
- transition = 1;
- /* Decide where to allocate the stack memory for pcm_transition */
- if (mode == MODE_CELT_ONLY)
- pcm_transition_celt_size = F5*st->channels;
- else
- pcm_transition_silk_size = F5*st->channels;
- }
- ALLOC(pcm_transition_celt, pcm_transition_celt_size, opus_val16);
- if (transition && mode == MODE_CELT_ONLY)
- {
- pcm_transition = pcm_transition_celt;
- opus_decode_frame(st, NULL, 0, pcm_transition, IMIN(F5, audiosize), 0);
- }
- if (audiosize > frame_size)
- {
- /*fprintf(stderr, "PCM buffer too small: %d vs %d (mode = %d)\n", audiosize, frame_size, mode);*/
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- } else {
- frame_size = audiosize;
- }
-
- /* Don't allocate any memory when in CELT-only mode */
- pcm_silk_size = (mode != MODE_CELT_ONLY && !celt_accum) ? IMAX(F10, frame_size)*st->channels : ALLOC_NONE;
- ALLOC(pcm_silk, pcm_silk_size, opus_int16);
-
- /* SILK processing */
- if (mode != MODE_CELT_ONLY)
- {
- int lost_flag, decoded_samples;
- opus_int16 *pcm_ptr;
-#ifdef FIXED_POINT
- if (celt_accum)
- pcm_ptr = pcm;
- else
-#endif
- pcm_ptr = pcm_silk;
-
- if (st->prev_mode==MODE_CELT_ONLY)
- silk_InitDecoder( silk_dec );
-
- /* The SILK PLC cannot produce frames of less than 10 ms */
- st->DecControl.payloadSize_ms = IMAX(10, 1000 * audiosize / st->Fs);
-
- if (data != NULL)
- {
- st->DecControl.nChannelsInternal = st->stream_channels;
- if( mode == MODE_SILK_ONLY ) {
- if( st->bandwidth == OPUS_BANDWIDTH_NARROWBAND ) {
- st->DecControl.internalSampleRate = 8000;
- } else if( st->bandwidth == OPUS_BANDWIDTH_MEDIUMBAND ) {
- st->DecControl.internalSampleRate = 12000;
- } else if( st->bandwidth == OPUS_BANDWIDTH_WIDEBAND ) {
- st->DecControl.internalSampleRate = 16000;
- } else {
- st->DecControl.internalSampleRate = 16000;
- silk_assert( 0 );
- }
- } else {
- /* Hybrid mode */
- st->DecControl.internalSampleRate = 16000;
- }
- }
-
- lost_flag = data == NULL ? 1 : 2 * decode_fec;
- decoded_samples = 0;
- do {
- /* Call SILK decoder */
- int first_frame = decoded_samples == 0;
- silk_ret = silk_Decode( silk_dec, &st->DecControl,
- lost_flag, first_frame, &dec, pcm_ptr, &silk_frame_size, st->arch );
- if( silk_ret ) {
- if (lost_flag) {
- /* PLC failure should not be fatal */
- silk_frame_size = frame_size;
- for (i=0;i<frame_size*st->channels;i++)
- pcm_ptr[i] = 0;
- } else {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- }
- pcm_ptr += silk_frame_size * st->channels;
- decoded_samples += silk_frame_size;
- } while( decoded_samples < frame_size );
- }
-
- start_band = 0;
- if (!decode_fec && mode != MODE_CELT_ONLY && data != NULL
- && ec_tell(&dec)+17+20*(st->mode == MODE_HYBRID) <= 8*len)
- {
- /* Check if we have a redundant 0-8 kHz band */
- if (mode == MODE_HYBRID)
- redundancy = ec_dec_bit_logp(&dec, 12);
- else
- redundancy = 1;
- if (redundancy)
- {
- celt_to_silk = ec_dec_bit_logp(&dec, 1);
- /* redundancy_bytes will be at least two, in the non-hybrid
- case due to the ec_tell() check above */
- redundancy_bytes = mode==MODE_HYBRID ?
- (opus_int32)ec_dec_uint(&dec, 256)+2 :
- len-((ec_tell(&dec)+7)>>3);
- len -= redundancy_bytes;
- /* This is a sanity check. It should never happen for a valid
- packet, so the exact behaviour is not normative. */
- if (len*8 < ec_tell(&dec))
- {
- len = 0;
- redundancy_bytes = 0;
- redundancy = 0;
- }
- /* Shrink decoder because of raw bits */
- dec.storage -= redundancy_bytes;
- }
- }
- if (mode != MODE_CELT_ONLY)
- start_band = 17;
-
- {
- int endband=21;
-
- switch(st->bandwidth)
- {
- case OPUS_BANDWIDTH_NARROWBAND:
- endband = 13;
- break;
- case OPUS_BANDWIDTH_MEDIUMBAND:
- case OPUS_BANDWIDTH_WIDEBAND:
- endband = 17;
- break;
- case OPUS_BANDWIDTH_SUPERWIDEBAND:
- endband = 19;
- break;
- case OPUS_BANDWIDTH_FULLBAND:
- endband = 21;
- break;
- }
- celt_decoder_ctl(celt_dec, CELT_SET_END_BAND(endband));
- celt_decoder_ctl(celt_dec, CELT_SET_CHANNELS(st->stream_channels));
- }
-
- if (redundancy)
- {
- transition = 0;
- pcm_transition_silk_size=ALLOC_NONE;
- }
-
- ALLOC(pcm_transition_silk, pcm_transition_silk_size, opus_val16);
-
- if (transition && mode != MODE_CELT_ONLY)
- {
- pcm_transition = pcm_transition_silk;
- opus_decode_frame(st, NULL, 0, pcm_transition, IMIN(F5, audiosize), 0);
- }
-
- /* Only allocation memory for redundancy if/when needed */
- redundant_audio_size = redundancy ? F5*st->channels : ALLOC_NONE;
- ALLOC(redundant_audio, redundant_audio_size, opus_val16);
-
- /* 5 ms redundant frame for CELT->SILK*/
- if (redundancy && celt_to_silk)
- {
- celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0));
- celt_decode_with_ec(celt_dec, data+len, redundancy_bytes,
- redundant_audio, F5, NULL, 0);
- celt_decoder_ctl(celt_dec, OPUS_GET_FINAL_RANGE(&redundant_rng));
- }
-
- /* MUST be after PLC */
- celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(start_band));
-
- if (mode != MODE_SILK_ONLY)
- {
- int celt_frame_size = IMIN(F20, frame_size);
- /* Make sure to discard any previous CELT state */
- if (mode != st->prev_mode && st->prev_mode > 0 && !st->prev_redundancy)
- celt_decoder_ctl(celt_dec, OPUS_RESET_STATE);
- /* Decode CELT */
- celt_ret = celt_decode_with_ec(celt_dec, decode_fec ? NULL : data,
- len, pcm, celt_frame_size, &dec, celt_accum);
- } else {
- unsigned char silence[2] = {0xFF, 0xFF};
- if (!celt_accum)
- {
- for (i=0;i<frame_size*st->channels;i++)
- pcm[i] = 0;
- }
- /* For hybrid -> SILK transitions, we let the CELT MDCT
- do a fade-out by decoding a silence frame */
- if (st->prev_mode == MODE_HYBRID && !(redundancy && celt_to_silk && st->prev_redundancy) )
- {
- celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0));
- celt_decode_with_ec(celt_dec, silence, 2, pcm, F2_5, NULL, celt_accum);
- }
- }
-
- if (mode != MODE_CELT_ONLY && !celt_accum)
- {
-#ifdef FIXED_POINT
- for (i=0;i<frame_size*st->channels;i++)
- pcm[i] = SAT16(ADD32(pcm[i], pcm_silk[i]));
-#else
- for (i=0;i<frame_size*st->channels;i++)
- pcm[i] = pcm[i] + (opus_val16)((1.f/32768.f)*pcm_silk[i]);
-#endif
- }
-
- {
- const CELTMode *celt_mode;
- celt_decoder_ctl(celt_dec, CELT_GET_MODE(&celt_mode));
- window = celt_mode->window;
- }
-
- /* 5 ms redundant frame for SILK->CELT */
- if (redundancy && !celt_to_silk)
- {
- celt_decoder_ctl(celt_dec, OPUS_RESET_STATE);
- celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0));
-
- celt_decode_with_ec(celt_dec, data+len, redundancy_bytes, redundant_audio, F5, NULL, 0);
- celt_decoder_ctl(celt_dec, OPUS_GET_FINAL_RANGE(&redundant_rng));
- smooth_fade(pcm+st->channels*(frame_size-F2_5), redundant_audio+st->channels*F2_5,
- pcm+st->channels*(frame_size-F2_5), F2_5, st->channels, window, st->Fs);
- }
- if (redundancy && celt_to_silk)
- {
- for (c=0;c<st->channels;c++)
- {
- for (i=0;i<F2_5;i++)
- pcm[st->channels*i+c] = redundant_audio[st->channels*i+c];
- }
- smooth_fade(redundant_audio+st->channels*F2_5, pcm+st->channels*F2_5,
- pcm+st->channels*F2_5, F2_5, st->channels, window, st->Fs);
- }
- if (transition)
- {
- if (audiosize >= F5)
- {
- for (i=0;i<st->channels*F2_5;i++)
- pcm[i] = pcm_transition[i];
- smooth_fade(pcm_transition+st->channels*F2_5, pcm+st->channels*F2_5,
- pcm+st->channels*F2_5, F2_5,
- st->channels, window, st->Fs);
- } else {
- /* Not enough time to do a clean transition, but we do it anyway
- This will not preserve amplitude perfectly and may introduce
- a bit of temporal aliasing, but it shouldn't be too bad and
- that's pretty much the best we can do. In any case, generating this
- transition it pretty silly in the first place */
- smooth_fade(pcm_transition, pcm,
- pcm, F2_5,
- st->channels, window, st->Fs);
- }
- }
-
- if(st->decode_gain)
- {
- opus_val32 gain;
- gain = celt_exp2(MULT16_16_P15(QCONST16(6.48814081e-4f, 25), st->decode_gain));
- for (i=0;i<frame_size*st->channels;i++)
- {
- opus_val32 x;
- x = MULT16_32_P16(pcm[i],gain);
- pcm[i] = SATURATE(x, 32767);
- }
- }
-
- if (len <= 1)
- st->rangeFinal = 0;
- else
- st->rangeFinal = dec.rng ^ redundant_rng;
-
- st->prev_mode = mode;
- st->prev_redundancy = redundancy && !celt_to_silk;
-
- if (celt_ret>=0)
- {
- if (OPUS_CHECK_ARRAY(pcm, audiosize*st->channels))
- OPUS_PRINT_INT(audiosize);
- }
-
- RESTORE_STACK;
- return celt_ret < 0 ? celt_ret : audiosize;
-
-}
-
-int opus_decode_native(OpusDecoder *st, const unsigned char *data,
- opus_int32 len, opus_val16 *pcm, int frame_size, int decode_fec,
- int self_delimited, opus_int32 *packet_offset, int soft_clip)
-{
- int i, nb_samples;
- int count, offset;
- unsigned char toc;
- int packet_frame_size, packet_bandwidth, packet_mode, packet_stream_channels;
- /* 48 x 2.5 ms = 120 ms */
- opus_int16 size[48];
- if (decode_fec<0 || decode_fec>1)
- return OPUS_BAD_ARG;
- /* For FEC/PLC, frame_size has to be to have a multiple of 2.5 ms */
- if ((decode_fec || len==0 || data==NULL) && frame_size%(st->Fs/400)!=0)
- return OPUS_BAD_ARG;
- if (len==0 || data==NULL)
- {
- int pcm_count=0;
- do {
- int ret;
- ret = opus_decode_frame(st, NULL, 0, pcm+pcm_count*st->channels, frame_size-pcm_count, 0);
- if (ret<0)
- return ret;
- pcm_count += ret;
- } while (pcm_count < frame_size);
- celt_assert(pcm_count == frame_size);
- if (OPUS_CHECK_ARRAY(pcm, pcm_count*st->channels))
- OPUS_PRINT_INT(pcm_count);
- st->last_packet_duration = pcm_count;
- return pcm_count;
- } else if (len<0)
- return OPUS_BAD_ARG;
-
- packet_mode = opus_packet_get_mode(data);
- packet_bandwidth = opus_packet_get_bandwidth(data);
- packet_frame_size = opus_packet_get_samples_per_frame(data, st->Fs);
- packet_stream_channels = opus_packet_get_nb_channels(data);
-
- count = opus_packet_parse_impl(data, len, self_delimited, &toc, NULL,
- size, &offset, packet_offset);
- if (count<0)
- return count;
-
- data += offset;
-
- if (decode_fec)
- {
- int duration_copy;
- int ret;
- /* If no FEC can be present, run the PLC (recursive call) */
- if (frame_size < packet_frame_size || packet_mode == MODE_CELT_ONLY || st->mode == MODE_CELT_ONLY)
- return opus_decode_native(st, NULL, 0, pcm, frame_size, 0, 0, NULL, soft_clip);
- /* Otherwise, run the PLC on everything except the size for which we might have FEC */
- duration_copy = st->last_packet_duration;
- if (frame_size-packet_frame_size!=0)
- {
- ret = opus_decode_native(st, NULL, 0, pcm, frame_size-packet_frame_size, 0, 0, NULL, soft_clip);
- if (ret<0)
- {
- st->last_packet_duration = duration_copy;
- return ret;
- }
- celt_assert(ret==frame_size-packet_frame_size);
- }
- /* Complete with FEC */
- st->mode = packet_mode;
- st->bandwidth = packet_bandwidth;
- st->frame_size = packet_frame_size;
- st->stream_channels = packet_stream_channels;
- ret = opus_decode_frame(st, data, size[0], pcm+st->channels*(frame_size-packet_frame_size),
- packet_frame_size, 1);
- if (ret<0)
- return ret;
- else {
- if (OPUS_CHECK_ARRAY(pcm, frame_size*st->channels))
- OPUS_PRINT_INT(frame_size);
- st->last_packet_duration = frame_size;
- return frame_size;
- }
- }
-
- if (count*packet_frame_size > frame_size)
- return OPUS_BUFFER_TOO_SMALL;
-
- /* Update the state as the last step to avoid updating it on an invalid packet */
- st->mode = packet_mode;
- st->bandwidth = packet_bandwidth;
- st->frame_size = packet_frame_size;
- st->stream_channels = packet_stream_channels;
-
- nb_samples=0;
- for (i=0;i<count;i++)
- {
- int ret;
- ret = opus_decode_frame(st, data, size[i], pcm+nb_samples*st->channels, frame_size-nb_samples, 0);
- if (ret<0)
- return ret;
- celt_assert(ret==packet_frame_size);
- data += size[i];
- nb_samples += ret;
- }
- st->last_packet_duration = nb_samples;
- if (OPUS_CHECK_ARRAY(pcm, nb_samples*st->channels))
- OPUS_PRINT_INT(nb_samples);
-#ifndef FIXED_POINT
- if (soft_clip)
- opus_pcm_soft_clip(pcm, nb_samples, st->channels, st->softclip_mem);
- else
- st->softclip_mem[0]=st->softclip_mem[1]=0;
-#endif
- return nb_samples;
-}
-
-#ifdef FIXED_POINT
-
-int opus_decode(OpusDecoder *st, const unsigned char *data,
- opus_int32 len, opus_val16 *pcm, int frame_size, int decode_fec)
-{
- if(frame_size<=0)
- return OPUS_BAD_ARG;
- return opus_decode_native(st, data, len, pcm, frame_size, decode_fec, 0, NULL, 0);
-}
-
-#ifndef DISABLE_FLOAT_API
-int opus_decode_float(OpusDecoder *st, const unsigned char *data,
- opus_int32 len, float *pcm, int frame_size, int decode_fec)
-{
- VARDECL(opus_int16, out);
- int ret, i;
- int nb_samples;
- ALLOC_STACK;
-
- if(frame_size<=0)
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
- if (data != NULL && len > 0 && !decode_fec)
- {
- nb_samples = opus_decoder_get_nb_samples(st, data, len);
- if (nb_samples>0)
- frame_size = IMIN(frame_size, nb_samples);
- else
- return OPUS_INVALID_PACKET;
- }
- ALLOC(out, frame_size*st->channels, opus_int16);
-
- ret = opus_decode_native(st, data, len, out, frame_size, decode_fec, 0, NULL, 0);
- if (ret > 0)
- {
- for (i=0;i<ret*st->channels;i++)
- pcm[i] = (1.f/32768.f)*(out[i]);
- }
- RESTORE_STACK;
- return ret;
-}
-#endif
-
-
-#else
-int opus_decode(OpusDecoder *st, const unsigned char *data,
- opus_int32 len, opus_int16 *pcm, int frame_size, int decode_fec)
-{
- VARDECL(float, out);
- int ret, i;
- int nb_samples;
- ALLOC_STACK;
-
- if(frame_size<=0)
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
-
- if (data != NULL && len > 0 && !decode_fec)
- {
- nb_samples = opus_decoder_get_nb_samples(st, data, len);
- if (nb_samples>0)
- frame_size = IMIN(frame_size, nb_samples);
- else
- return OPUS_INVALID_PACKET;
- }
- ALLOC(out, frame_size*st->channels, float);
-
- ret = opus_decode_native(st, data, len, out, frame_size, decode_fec, 0, NULL, 1);
- if (ret > 0)
- {
- for (i=0;i<ret*st->channels;i++)
- pcm[i] = FLOAT2INT16(out[i]);
- }
- RESTORE_STACK;
- return ret;
-}
-
-int opus_decode_float(OpusDecoder *st, const unsigned char *data,
- opus_int32 len, opus_val16 *pcm, int frame_size, int decode_fec)
-{
- if(frame_size<=0)
- return OPUS_BAD_ARG;
- return opus_decode_native(st, data, len, pcm, frame_size, decode_fec, 0, NULL, 0);
-}
-
-#endif
-
-int opus_decoder_ctl(OpusDecoder *st, int request, ...)
-{
- int ret = OPUS_OK;
- va_list ap;
- void *silk_dec;
- CELTDecoder *celt_dec;
-
- silk_dec = (char*)st+st->silk_dec_offset;
- celt_dec = (CELTDecoder*)((char*)st+st->celt_dec_offset);
-
-
- va_start(ap, request);
-
- switch (request)
- {
- case OPUS_GET_BANDWIDTH_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->bandwidth;
- }
- break;
- case OPUS_GET_FINAL_RANGE_REQUEST:
- {
- opus_uint32 *value = va_arg(ap, opus_uint32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->rangeFinal;
- }
- break;
- case OPUS_RESET_STATE:
- {
- OPUS_CLEAR((char*)&st->OPUS_DECODER_RESET_START,
- sizeof(OpusDecoder)-
- ((char*)&st->OPUS_DECODER_RESET_START - (char*)st));
-
- celt_decoder_ctl(celt_dec, OPUS_RESET_STATE);
- silk_InitDecoder( silk_dec );
- st->stream_channels = st->channels;
- st->frame_size = st->Fs/400;
- }
- break;
- case OPUS_GET_SAMPLE_RATE_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->Fs;
- }
- break;
- case OPUS_GET_PITCH_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- if (st->prev_mode == MODE_CELT_ONLY)
- celt_decoder_ctl(celt_dec, OPUS_GET_PITCH(value));
- else
- *value = st->DecControl.prevPitchLag;
- }
- break;
- case OPUS_GET_GAIN_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->decode_gain;
- }
- break;
- case OPUS_SET_GAIN_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<-32768 || value>32767)
- {
- goto bad_arg;
- }
- st->decode_gain = value;
- }
- break;
- case OPUS_GET_LAST_PACKET_DURATION_REQUEST:
- {
- opus_uint32 *value = va_arg(ap, opus_uint32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->last_packet_duration;
- }
- break;
- default:
- /*fprintf(stderr, "unknown opus_decoder_ctl() request: %d", request);*/
- ret = OPUS_UNIMPLEMENTED;
- break;
- }
-
- va_end(ap);
- return ret;
-bad_arg:
- va_end(ap);
- return OPUS_BAD_ARG;
-}
-
-void opus_decoder_destroy(OpusDecoder *st)
-{
- opus_free(st);
-}
-
-
-int opus_packet_get_bandwidth(const unsigned char *data)
-{
- int bandwidth;
- if (data[0]&0x80)
- {
- bandwidth = OPUS_BANDWIDTH_MEDIUMBAND + ((data[0]>>5)&0x3);
- if (bandwidth == OPUS_BANDWIDTH_MEDIUMBAND)
- bandwidth = OPUS_BANDWIDTH_NARROWBAND;
- } else if ((data[0]&0x60) == 0x60)
- {
- bandwidth = (data[0]&0x10) ? OPUS_BANDWIDTH_FULLBAND :
- OPUS_BANDWIDTH_SUPERWIDEBAND;
- } else {
- bandwidth = OPUS_BANDWIDTH_NARROWBAND + ((data[0]>>5)&0x3);
- }
- return bandwidth;
-}
-
-int opus_packet_get_nb_channels(const unsigned char *data)
-{
- return (data[0]&0x4) ? 2 : 1;
-}
-
-int opus_packet_get_nb_frames(const unsigned char packet[], opus_int32 len)
-{
- int count;
- if (len<1)
- return OPUS_BAD_ARG;
- count = packet[0]&0x3;
- if (count==0)
- return 1;
- else if (count!=3)
- return 2;
- else if (len<2)
- return OPUS_INVALID_PACKET;
- else
- return packet[1]&0x3F;
-}
-
-int opus_packet_get_nb_samples(const unsigned char packet[], opus_int32 len,
- opus_int32 Fs)
-{
- int samples;
- int count = opus_packet_get_nb_frames(packet, len);
-
- if (count<0)
- return count;
-
- samples = count*opus_packet_get_samples_per_frame(packet, Fs);
- /* Can't have more than 120 ms */
- if (samples*25 > Fs*3)
- return OPUS_INVALID_PACKET;
- else
- return samples;
-}
-
-int opus_decoder_get_nb_samples(const OpusDecoder *dec,
- const unsigned char packet[], opus_int32 len)
-{
- return opus_packet_get_nb_samples(packet, len, dec->Fs);
-}
diff --git a/thirdparty/opus/opus_encoder.c b/thirdparty/opus/opus_encoder.c
deleted file mode 100644
index 9a516a884a..0000000000
--- a/thirdparty/opus/opus_encoder.c
+++ /dev/null
@@ -1,2536 +0,0 @@
-/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited
- Written by Jean-Marc Valin and Koen Vos */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdarg.h>
-#include "celt.h"
-#include "entenc.h"
-#include "modes.h"
-#include "API.h"
-#include "stack_alloc.h"
-#include "float_cast.h"
-#include "opus.h"
-#include "arch.h"
-#include "pitch.h"
-#include "opus_private.h"
-#include "os_support.h"
-#include "cpu_support.h"
-#include "analysis.h"
-#include "mathops.h"
-#include "tuning_parameters.h"
-#ifdef FIXED_POINT
-#include "fixed/structs_FIX.h"
-#else
-#include "float/structs_FLP.h"
-#endif
-
-#define MAX_ENCODER_BUFFER 480
-
-typedef struct {
- opus_val32 XX, XY, YY;
- opus_val16 smoothed_width;
- opus_val16 max_follower;
-} StereoWidthState;
-
-struct OpusEncoder {
- int celt_enc_offset;
- int silk_enc_offset;
- silk_EncControlStruct silk_mode;
- int application;
- int channels;
- int delay_compensation;
- int force_channels;
- int signal_type;
- int user_bandwidth;
- int max_bandwidth;
- int user_forced_mode;
- int voice_ratio;
- opus_int32 Fs;
- int use_vbr;
- int vbr_constraint;
- int variable_duration;
- opus_int32 bitrate_bps;
- opus_int32 user_bitrate_bps;
- int lsb_depth;
- int encoder_buffer;
- int lfe;
- int arch;
-#ifndef DISABLE_FLOAT_API
- TonalityAnalysisState analysis;
-#endif
-
-#define OPUS_ENCODER_RESET_START stream_channels
- int stream_channels;
- opus_int16 hybrid_stereo_width_Q14;
- opus_int32 variable_HP_smth2_Q15;
- opus_val16 prev_HB_gain;
- opus_val32 hp_mem[4];
- int mode;
- int prev_mode;
- int prev_channels;
- int prev_framesize;
- int bandwidth;
- int silk_bw_switch;
- /* Sampling rate (at the API level) */
- int first;
- opus_val16 * energy_masking;
- StereoWidthState width_mem;
- opus_val16 delay_buffer[MAX_ENCODER_BUFFER*2];
-#ifndef DISABLE_FLOAT_API
- int detected_bandwidth;
-#endif
- opus_uint32 rangeFinal;
-};
-
-/* Transition tables for the voice and music. First column is the
- middle (memoriless) threshold. The second column is the hysteresis
- (difference with the middle) */
-static const opus_int32 mono_voice_bandwidth_thresholds[8] = {
- 11000, 1000, /* NB<->MB */
- 14000, 1000, /* MB<->WB */
- 17000, 1000, /* WB<->SWB */
- 21000, 2000, /* SWB<->FB */
-};
-static const opus_int32 mono_music_bandwidth_thresholds[8] = {
- 12000, 1000, /* NB<->MB */
- 15000, 1000, /* MB<->WB */
- 18000, 2000, /* WB<->SWB */
- 22000, 2000, /* SWB<->FB */
-};
-static const opus_int32 stereo_voice_bandwidth_thresholds[8] = {
- 11000, 1000, /* NB<->MB */
- 14000, 1000, /* MB<->WB */
- 21000, 2000, /* WB<->SWB */
- 28000, 2000, /* SWB<->FB */
-};
-static const opus_int32 stereo_music_bandwidth_thresholds[8] = {
- 12000, 1000, /* NB<->MB */
- 18000, 2000, /* MB<->WB */
- 21000, 2000, /* WB<->SWB */
- 30000, 2000, /* SWB<->FB */
-};
-/* Threshold bit-rates for switching between mono and stereo */
-static const opus_int32 stereo_voice_threshold = 30000;
-static const opus_int32 stereo_music_threshold = 30000;
-
-/* Threshold bit-rate for switching between SILK/hybrid and CELT-only */
-static const opus_int32 mode_thresholds[2][2] = {
- /* voice */ /* music */
- { 64000, 16000}, /* mono */
- { 36000, 16000}, /* stereo */
-};
-
-int opus_encoder_get_size(int channels)
-{
- int silkEncSizeBytes, celtEncSizeBytes;
- int ret;
- if (channels<1 || channels > 2)
- return 0;
- ret = silk_Get_Encoder_Size( &silkEncSizeBytes );
- if (ret)
- return 0;
- silkEncSizeBytes = align(silkEncSizeBytes);
- celtEncSizeBytes = celt_encoder_get_size(channels);
- return align(sizeof(OpusEncoder))+silkEncSizeBytes+celtEncSizeBytes;
-}
-
-int opus_encoder_init(OpusEncoder* st, opus_int32 Fs, int channels, int application)
-{
- void *silk_enc;
- CELTEncoder *celt_enc;
- int err;
- int ret, silkEncSizeBytes;
-
- if((Fs!=48000&&Fs!=24000&&Fs!=16000&&Fs!=12000&&Fs!=8000)||(channels!=1&&channels!=2)||
- (application != OPUS_APPLICATION_VOIP && application != OPUS_APPLICATION_AUDIO
- && application != OPUS_APPLICATION_RESTRICTED_LOWDELAY))
- return OPUS_BAD_ARG;
-
- OPUS_CLEAR((char*)st, opus_encoder_get_size(channels));
- /* Create SILK encoder */
- ret = silk_Get_Encoder_Size( &silkEncSizeBytes );
- if (ret)
- return OPUS_BAD_ARG;
- silkEncSizeBytes = align(silkEncSizeBytes);
- st->silk_enc_offset = align(sizeof(OpusEncoder));
- st->celt_enc_offset = st->silk_enc_offset+silkEncSizeBytes;
- silk_enc = (char*)st+st->silk_enc_offset;
- celt_enc = (CELTEncoder*)((char*)st+st->celt_enc_offset);
-
- st->stream_channels = st->channels = channels;
-
- st->Fs = Fs;
-
- st->arch = opus_select_arch();
-
- ret = silk_InitEncoder( silk_enc, st->arch, &st->silk_mode );
- if(ret)return OPUS_INTERNAL_ERROR;
-
- /* default SILK parameters */
- st->silk_mode.nChannelsAPI = channels;
- st->silk_mode.nChannelsInternal = channels;
- st->silk_mode.API_sampleRate = st->Fs;
- st->silk_mode.maxInternalSampleRate = 16000;
- st->silk_mode.minInternalSampleRate = 8000;
- st->silk_mode.desiredInternalSampleRate = 16000;
- st->silk_mode.payloadSize_ms = 20;
- st->silk_mode.bitRate = 25000;
- st->silk_mode.packetLossPercentage = 0;
- st->silk_mode.complexity = 9;
- st->silk_mode.useInBandFEC = 0;
- st->silk_mode.useDTX = 0;
- st->silk_mode.useCBR = 0;
- st->silk_mode.reducedDependency = 0;
-
- /* Create CELT encoder */
- /* Initialize CELT encoder */
- err = celt_encoder_init(celt_enc, Fs, channels, st->arch);
- if(err!=OPUS_OK)return OPUS_INTERNAL_ERROR;
-
- celt_encoder_ctl(celt_enc, CELT_SET_SIGNALLING(0));
- celt_encoder_ctl(celt_enc, OPUS_SET_COMPLEXITY(st->silk_mode.complexity));
-
- st->use_vbr = 1;
- /* Makes constrained VBR the default (safer for real-time use) */
- st->vbr_constraint = 1;
- st->user_bitrate_bps = OPUS_AUTO;
- st->bitrate_bps = 3000+Fs*channels;
- st->application = application;
- st->signal_type = OPUS_AUTO;
- st->user_bandwidth = OPUS_AUTO;
- st->max_bandwidth = OPUS_BANDWIDTH_FULLBAND;
- st->force_channels = OPUS_AUTO;
- st->user_forced_mode = OPUS_AUTO;
- st->voice_ratio = -1;
- st->encoder_buffer = st->Fs/100;
- st->lsb_depth = 24;
- st->variable_duration = OPUS_FRAMESIZE_ARG;
-
- /* Delay compensation of 4 ms (2.5 ms for SILK's extra look-ahead
- + 1.5 ms for SILK resamplers and stereo prediction) */
- st->delay_compensation = st->Fs/250;
-
- st->hybrid_stereo_width_Q14 = 1 << 14;
- st->prev_HB_gain = Q15ONE;
- st->variable_HP_smth2_Q15 = silk_LSHIFT( silk_lin2log( VARIABLE_HP_MIN_CUTOFF_HZ ), 8 );
- st->first = 1;
- st->mode = MODE_HYBRID;
- st->bandwidth = OPUS_BANDWIDTH_FULLBAND;
-
-#ifndef DISABLE_FLOAT_API
- tonality_analysis_init(&st->analysis);
-#endif
-
- return OPUS_OK;
-}
-
-static unsigned char gen_toc(int mode, int framerate, int bandwidth, int channels)
-{
- int period;
- unsigned char toc;
- period = 0;
- while (framerate < 400)
- {
- framerate <<= 1;
- period++;
- }
- if (mode == MODE_SILK_ONLY)
- {
- toc = (bandwidth-OPUS_BANDWIDTH_NARROWBAND)<<5;
- toc |= (period-2)<<3;
- } else if (mode == MODE_CELT_ONLY)
- {
- int tmp = bandwidth-OPUS_BANDWIDTH_MEDIUMBAND;
- if (tmp < 0)
- tmp = 0;
- toc = 0x80;
- toc |= tmp << 5;
- toc |= period<<3;
- } else /* Hybrid */
- {
- toc = 0x60;
- toc |= (bandwidth-OPUS_BANDWIDTH_SUPERWIDEBAND)<<4;
- toc |= (period-2)<<3;
- }
- toc |= (channels==2)<<2;
- return toc;
-}
-
-#ifndef FIXED_POINT
-static void silk_biquad_float(
- const opus_val16 *in, /* I: Input signal */
- const opus_int32 *B_Q28, /* I: MA coefficients [3] */
- const opus_int32 *A_Q28, /* I: AR coefficients [2] */
- opus_val32 *S, /* I/O: State vector [2] */
- opus_val16 *out, /* O: Output signal */
- const opus_int32 len, /* I: Signal length (must be even) */
- int stride
-)
-{
- /* DIRECT FORM II TRANSPOSED (uses 2 element state vector) */
- opus_int k;
- opus_val32 vout;
- opus_val32 inval;
- opus_val32 A[2], B[3];
-
- A[0] = (opus_val32)(A_Q28[0] * (1.f/((opus_int32)1<<28)));
- A[1] = (opus_val32)(A_Q28[1] * (1.f/((opus_int32)1<<28)));
- B[0] = (opus_val32)(B_Q28[0] * (1.f/((opus_int32)1<<28)));
- B[1] = (opus_val32)(B_Q28[1] * (1.f/((opus_int32)1<<28)));
- B[2] = (opus_val32)(B_Q28[2] * (1.f/((opus_int32)1<<28)));
-
- /* Negate A_Q28 values and split in two parts */
-
- for( k = 0; k < len; k++ ) {
- /* S[ 0 ], S[ 1 ]: Q12 */
- inval = in[ k*stride ];
- vout = S[ 0 ] + B[0]*inval;
-
- S[ 0 ] = S[1] - vout*A[0] + B[1]*inval;
-
- S[ 1 ] = - vout*A[1] + B[2]*inval + VERY_SMALL;
-
- /* Scale back to Q0 and saturate */
- out[ k*stride ] = vout;
- }
-}
-#endif
-
-static void hp_cutoff(const opus_val16 *in, opus_int32 cutoff_Hz, opus_val16 *out, opus_val32 *hp_mem, int len, int channels, opus_int32 Fs)
-{
- opus_int32 B_Q28[ 3 ], A_Q28[ 2 ];
- opus_int32 Fc_Q19, r_Q28, r_Q22;
-
- silk_assert( cutoff_Hz <= silk_int32_MAX / SILK_FIX_CONST( 1.5 * 3.14159 / 1000, 19 ) );
- Fc_Q19 = silk_DIV32_16( silk_SMULBB( SILK_FIX_CONST( 1.5 * 3.14159 / 1000, 19 ), cutoff_Hz ), Fs/1000 );
- silk_assert( Fc_Q19 > 0 && Fc_Q19 < 32768 );
-
- r_Q28 = SILK_FIX_CONST( 1.0, 28 ) - silk_MUL( SILK_FIX_CONST( 0.92, 9 ), Fc_Q19 );
-
- /* b = r * [ 1; -2; 1 ]; */
- /* a = [ 1; -2 * r * ( 1 - 0.5 * Fc^2 ); r^2 ]; */
- B_Q28[ 0 ] = r_Q28;
- B_Q28[ 1 ] = silk_LSHIFT( -r_Q28, 1 );
- B_Q28[ 2 ] = r_Q28;
-
- /* -r * ( 2 - Fc * Fc ); */
- r_Q22 = silk_RSHIFT( r_Q28, 6 );
- A_Q28[ 0 ] = silk_SMULWW( r_Q22, silk_SMULWW( Fc_Q19, Fc_Q19 ) - SILK_FIX_CONST( 2.0, 22 ) );
- A_Q28[ 1 ] = silk_SMULWW( r_Q22, r_Q22 );
-
-#ifdef FIXED_POINT
- silk_biquad_alt( in, B_Q28, A_Q28, hp_mem, out, len, channels );
- if( channels == 2 ) {
- silk_biquad_alt( in+1, B_Q28, A_Q28, hp_mem+2, out+1, len, channels );
- }
-#else
- silk_biquad_float( in, B_Q28, A_Q28, hp_mem, out, len, channels );
- if( channels == 2 ) {
- silk_biquad_float( in+1, B_Q28, A_Q28, hp_mem+2, out+1, len, channels );
- }
-#endif
-}
-
-#ifdef FIXED_POINT
-static void dc_reject(const opus_val16 *in, opus_int32 cutoff_Hz, opus_val16 *out, opus_val32 *hp_mem, int len, int channels, opus_int32 Fs)
-{
- int c, i;
- int shift;
-
- /* Approximates -round(log2(4.*cutoff_Hz/Fs)) */
- shift=celt_ilog2(Fs/(cutoff_Hz*3));
- for (c=0;c<channels;c++)
- {
- for (i=0;i<len;i++)
- {
- opus_val32 x, tmp, y;
- x = SHL32(EXTEND32(in[channels*i+c]), 15);
- /* First stage */
- tmp = x-hp_mem[2*c];
- hp_mem[2*c] = hp_mem[2*c] + PSHR32(x - hp_mem[2*c], shift);
- /* Second stage */
- y = tmp - hp_mem[2*c+1];
- hp_mem[2*c+1] = hp_mem[2*c+1] + PSHR32(tmp - hp_mem[2*c+1], shift);
- out[channels*i+c] = EXTRACT16(SATURATE(PSHR32(y, 15), 32767));
- }
- }
-}
-
-#else
-static void dc_reject(const opus_val16 *in, opus_int32 cutoff_Hz, opus_val16 *out, opus_val32 *hp_mem, int len, int channels, opus_int32 Fs)
-{
- int c, i;
- float coef;
-
- coef = 4.0f*cutoff_Hz/Fs;
- for (c=0;c<channels;c++)
- {
- for (i=0;i<len;i++)
- {
- opus_val32 x, tmp, y;
- x = in[channels*i+c];
- /* First stage */
- tmp = x-hp_mem[2*c];
- hp_mem[2*c] = hp_mem[2*c] + coef*(x - hp_mem[2*c]) + VERY_SMALL;
- /* Second stage */
- y = tmp - hp_mem[2*c+1];
- hp_mem[2*c+1] = hp_mem[2*c+1] + coef*(tmp - hp_mem[2*c+1]) + VERY_SMALL;
- out[channels*i+c] = y;
- }
- }
-}
-#endif
-
-static void stereo_fade(const opus_val16 *in, opus_val16 *out, opus_val16 g1, opus_val16 g2,
- int overlap48, int frame_size, int channels, const opus_val16 *window, opus_int32 Fs)
-{
- int i;
- int overlap;
- int inc;
- inc = 48000/Fs;
- overlap=overlap48/inc;
- g1 = Q15ONE-g1;
- g2 = Q15ONE-g2;
- for (i=0;i<overlap;i++)
- {
- opus_val32 diff;
- opus_val16 g, w;
- w = MULT16_16_Q15(window[i*inc], window[i*inc]);
- g = SHR32(MAC16_16(MULT16_16(w,g2),
- Q15ONE-w, g1), 15);
- diff = EXTRACT16(HALF32((opus_val32)in[i*channels] - (opus_val32)in[i*channels+1]));
- diff = MULT16_16_Q15(g, diff);
- out[i*channels] = out[i*channels] - diff;
- out[i*channels+1] = out[i*channels+1] + diff;
- }
- for (;i<frame_size;i++)
- {
- opus_val32 diff;
- diff = EXTRACT16(HALF32((opus_val32)in[i*channels] - (opus_val32)in[i*channels+1]));
- diff = MULT16_16_Q15(g2, diff);
- out[i*channels] = out[i*channels] - diff;
- out[i*channels+1] = out[i*channels+1] + diff;
- }
-}
-
-static void gain_fade(const opus_val16 *in, opus_val16 *out, opus_val16 g1, opus_val16 g2,
- int overlap48, int frame_size, int channels, const opus_val16 *window, opus_int32 Fs)
-{
- int i;
- int inc;
- int overlap;
- int c;
- inc = 48000/Fs;
- overlap=overlap48/inc;
- if (channels==1)
- {
- for (i=0;i<overlap;i++)
- {
- opus_val16 g, w;
- w = MULT16_16_Q15(window[i*inc], window[i*inc]);
- g = SHR32(MAC16_16(MULT16_16(w,g2),
- Q15ONE-w, g1), 15);
- out[i] = MULT16_16_Q15(g, in[i]);
- }
- } else {
- for (i=0;i<overlap;i++)
- {
- opus_val16 g, w;
- w = MULT16_16_Q15(window[i*inc], window[i*inc]);
- g = SHR32(MAC16_16(MULT16_16(w,g2),
- Q15ONE-w, g1), 15);
- out[i*2] = MULT16_16_Q15(g, in[i*2]);
- out[i*2+1] = MULT16_16_Q15(g, in[i*2+1]);
- }
- }
- c=0;do {
- for (i=overlap;i<frame_size;i++)
- {
- out[i*channels+c] = MULT16_16_Q15(g2, in[i*channels+c]);
- }
- }
- while (++c<channels);
-}
-
-OpusEncoder *opus_encoder_create(opus_int32 Fs, int channels, int application, int *error)
-{
- int ret;
- OpusEncoder *st;
- if((Fs!=48000&&Fs!=24000&&Fs!=16000&&Fs!=12000&&Fs!=8000)||(channels!=1&&channels!=2)||
- (application != OPUS_APPLICATION_VOIP && application != OPUS_APPLICATION_AUDIO
- && application != OPUS_APPLICATION_RESTRICTED_LOWDELAY))
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
- st = (OpusEncoder *)opus_alloc(opus_encoder_get_size(channels));
- if (st == NULL)
- {
- if (error)
- *error = OPUS_ALLOC_FAIL;
- return NULL;
- }
- ret = opus_encoder_init(st, Fs, channels, application);
- if (error)
- *error = ret;
- if (ret != OPUS_OK)
- {
- opus_free(st);
- st = NULL;
- }
- return st;
-}
-
-static opus_int32 user_bitrate_to_bitrate(OpusEncoder *st, int frame_size, int max_data_bytes)
-{
- if(!frame_size)frame_size=st->Fs/400;
- if (st->user_bitrate_bps==OPUS_AUTO)
- return 60*st->Fs/frame_size + st->Fs*st->channels;
- else if (st->user_bitrate_bps==OPUS_BITRATE_MAX)
- return max_data_bytes*8*st->Fs/frame_size;
- else
- return st->user_bitrate_bps;
-}
-
-#ifndef DISABLE_FLOAT_API
-/* Don't use more than 60 ms for the frame size analysis */
-#define MAX_DYNAMIC_FRAMESIZE 24
-/* Estimates how much the bitrate will be boosted based on the sub-frame energy */
-static float transient_boost(const float *E, const float *E_1, int LM, int maxM)
-{
- int i;
- int M;
- float sumE=0, sumE_1=0;
- float metric;
-
- M = IMIN(maxM, (1<<LM)+1);
- for (i=0;i<M;i++)
- {
- sumE += E[i];
- sumE_1 += E_1[i];
- }
- metric = sumE*sumE_1/(M*M);
- /*if (LM==3)
- printf("%f\n", metric);*/
- /*return metric>10 ? 1 : 0;*/
- /*return MAX16(0,1-exp(-.25*(metric-2.)));*/
- return MIN16(1,(float)sqrt(MAX16(0,.05f*(metric-2))));
-}
-
-/* Viterbi decoding trying to find the best frame size combination using look-ahead
-
- State numbering:
- 0: unused
- 1: 2.5 ms
- 2: 5 ms (#1)
- 3: 5 ms (#2)
- 4: 10 ms (#1)
- 5: 10 ms (#2)
- 6: 10 ms (#3)
- 7: 10 ms (#4)
- 8: 20 ms (#1)
- 9: 20 ms (#2)
- 10: 20 ms (#3)
- 11: 20 ms (#4)
- 12: 20 ms (#5)
- 13: 20 ms (#6)
- 14: 20 ms (#7)
- 15: 20 ms (#8)
-*/
-static int transient_viterbi(const float *E, const float *E_1, int N, int frame_cost, int rate)
-{
- int i;
- float cost[MAX_DYNAMIC_FRAMESIZE][16];
- int states[MAX_DYNAMIC_FRAMESIZE][16];
- float best_cost;
- int best_state;
- float factor;
- /* Take into account that we damp VBR in the 32 kb/s to 64 kb/s range. */
- if (rate<80)
- factor=0;
- else if (rate>160)
- factor=1;
- else
- factor = (rate-80.f)/80.f;
- /* Makes variable framesize less aggressive at lower bitrates, but I can't
- find any valid theoretical justification for this (other than it seems
- to help) */
- for (i=0;i<16;i++)
- {
- /* Impossible state */
- states[0][i] = -1;
- cost[0][i] = 1e10;
- }
- for (i=0;i<4;i++)
- {
- cost[0][1<<i] = (frame_cost + rate*(1<<i))*(1+factor*transient_boost(E, E_1, i, N+1));
- states[0][1<<i] = i;
- }
- for (i=1;i<N;i++)
- {
- int j;
-
- /* Follow continuations */
- for (j=2;j<16;j++)
- {
- cost[i][j] = cost[i-1][j-1];
- states[i][j] = j-1;
- }
-
- /* New frames */
- for(j=0;j<4;j++)
- {
- int k;
- float min_cost;
- float curr_cost;
- states[i][1<<j] = 1;
- min_cost = cost[i-1][1];
- for(k=1;k<4;k++)
- {
- float tmp = cost[i-1][(1<<(k+1))-1];
- if (tmp < min_cost)
- {
- states[i][1<<j] = (1<<(k+1))-1;
- min_cost = tmp;
- }
- }
- curr_cost = (frame_cost + rate*(1<<j))*(1+factor*transient_boost(E+i, E_1+i, j, N-i+1));
- cost[i][1<<j] = min_cost;
- /* If part of the frame is outside the analysis window, only count part of the cost */
- if (N-i < (1<<j))
- cost[i][1<<j] += curr_cost*(float)(N-i)/(1<<j);
- else
- cost[i][1<<j] += curr_cost;
- }
- }
-
- best_state=1;
- best_cost = cost[N-1][1];
- /* Find best end state (doesn't force a frame to end at N-1) */
- for (i=2;i<16;i++)
- {
- if (cost[N-1][i]<best_cost)
- {
- best_cost = cost[N-1][i];
- best_state = i;
- }
- }
-
- /* Follow transitions back */
- for (i=N-1;i>=0;i--)
- {
- /*printf("%d ", best_state);*/
- best_state = states[i][best_state];
- }
- /*printf("%d\n", best_state);*/
- return best_state;
-}
-
-static int optimize_framesize(const void *x, int len, int C, opus_int32 Fs,
- int bitrate, opus_val16 tonality, float *mem, int buffering,
- downmix_func downmix)
-{
- int N;
- int i;
- float e[MAX_DYNAMIC_FRAMESIZE+4];
- float e_1[MAX_DYNAMIC_FRAMESIZE+3];
- opus_val32 memx;
- int bestLM=0;
- int subframe;
- int pos;
- int offset;
- VARDECL(opus_val32, sub);
-
- subframe = Fs/400;
- ALLOC(sub, subframe, opus_val32);
- e[0]=mem[0];
- e_1[0]=1.f/(EPSILON+mem[0]);
- if (buffering)
- {
- /* Consider the CELT delay when not in restricted-lowdelay */
- /* We assume the buffering is between 2.5 and 5 ms */
- offset = 2*subframe - buffering;
- celt_assert(offset>=0 && offset <= subframe);
- len -= offset;
- e[1]=mem[1];
- e_1[1]=1.f/(EPSILON+mem[1]);
- e[2]=mem[2];
- e_1[2]=1.f/(EPSILON+mem[2]);
- pos = 3;
- } else {
- pos=1;
- offset=0;
- }
- N=IMIN(len/subframe, MAX_DYNAMIC_FRAMESIZE);
- /* Just silencing a warning, it's really initialized later */
- memx = 0;
- for (i=0;i<N;i++)
- {
- float tmp;
- opus_val32 tmpx;
- int j;
- tmp=EPSILON;
-
- downmix(x, sub, subframe, i*subframe+offset, 0, -2, C);
- if (i==0)
- memx = sub[0];
- for (j=0;j<subframe;j++)
- {
- tmpx = sub[j];
- tmp += (tmpx-memx)*(float)(tmpx-memx);
- memx = tmpx;
- }
- e[i+pos] = tmp;
- e_1[i+pos] = 1.f/tmp;
- }
- /* Hack to get 20 ms working with APPLICATION_AUDIO
- The real problem is that the corresponding memory needs to use 1.5 ms
- from this frame and 1 ms from the next frame */
- e[i+pos] = e[i+pos-1];
- if (buffering)
- N=IMIN(MAX_DYNAMIC_FRAMESIZE, N+2);
- bestLM = transient_viterbi(e, e_1, N, (int)((1.f+.5f*tonality)*(60*C+40)), bitrate/400);
- mem[0] = e[1<<bestLM];
- if (buffering)
- {
- mem[1] = e[(1<<bestLM)+1];
- mem[2] = e[(1<<bestLM)+2];
- }
- return bestLM;
-}
-
-#endif
-
-#ifndef DISABLE_FLOAT_API
-#ifdef FIXED_POINT
-#define PCM2VAL(x) FLOAT2INT16(x)
-#else
-#define PCM2VAL(x) SCALEIN(x)
-#endif
-void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C)
-{
- const float *x;
- opus_val32 scale;
- int j;
- x = (const float *)_x;
- for (j=0;j<subframe;j++)
- sub[j] = PCM2VAL(x[(j+offset)*C+c1]);
- if (c2>-1)
- {
- for (j=0;j<subframe;j++)
- sub[j] += PCM2VAL(x[(j+offset)*C+c2]);
- } else if (c2==-2)
- {
- int c;
- for (c=1;c<C;c++)
- {
- for (j=0;j<subframe;j++)
- sub[j] += PCM2VAL(x[(j+offset)*C+c]);
- }
- }
-#ifdef FIXED_POINT
- scale = (1<<SIG_SHIFT);
-#else
- scale = 1.f;
-#endif
- if (C==-2)
- scale /= C;
- else
- scale /= 2;
- for (j=0;j<subframe;j++)
- sub[j] *= scale;
-}
-#endif
-
-void downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C)
-{
- const opus_int16 *x;
- opus_val32 scale;
- int j;
- x = (const opus_int16 *)_x;
- for (j=0;j<subframe;j++)
- sub[j] = x[(j+offset)*C+c1];
- if (c2>-1)
- {
- for (j=0;j<subframe;j++)
- sub[j] += x[(j+offset)*C+c2];
- } else if (c2==-2)
- {
- int c;
- for (c=1;c<C;c++)
- {
- for (j=0;j<subframe;j++)
- sub[j] += x[(j+offset)*C+c];
- }
- }
-#ifdef FIXED_POINT
- scale = (1<<SIG_SHIFT);
-#else
- scale = 1.f/32768;
-#endif
- if (C==-2)
- scale /= C;
- else
- scale /= 2;
- for (j=0;j<subframe;j++)
- sub[j] *= scale;
-}
-
-opus_int32 frame_size_select(opus_int32 frame_size, int variable_duration, opus_int32 Fs)
-{
- int new_size;
- if (frame_size<Fs/400)
- return -1;
- if (variable_duration == OPUS_FRAMESIZE_ARG)
- new_size = frame_size;
- else if (variable_duration == OPUS_FRAMESIZE_VARIABLE)
- new_size = Fs/50;
- else if (variable_duration >= OPUS_FRAMESIZE_2_5_MS && variable_duration <= OPUS_FRAMESIZE_60_MS)
- new_size = IMIN(3*Fs/50, (Fs/400)<<(variable_duration-OPUS_FRAMESIZE_2_5_MS));
- else
- return -1;
- if (new_size>frame_size)
- return -1;
- if (400*new_size!=Fs && 200*new_size!=Fs && 100*new_size!=Fs &&
- 50*new_size!=Fs && 25*new_size!=Fs && 50*new_size!=3*Fs)
- return -1;
- return new_size;
-}
-
-opus_int32 compute_frame_size(const void *analysis_pcm, int frame_size,
- int variable_duration, int C, opus_int32 Fs, int bitrate_bps,
- int delay_compensation, downmix_func downmix
-#ifndef DISABLE_FLOAT_API
- , float *subframe_mem
-#endif
- )
-{
-#ifndef DISABLE_FLOAT_API
- if (variable_duration == OPUS_FRAMESIZE_VARIABLE && frame_size >= Fs/200)
- {
- int LM = 3;
- LM = optimize_framesize(analysis_pcm, frame_size, C, Fs, bitrate_bps,
- 0, subframe_mem, delay_compensation, downmix);
- while ((Fs/400<<LM)>frame_size)
- LM--;
- frame_size = (Fs/400<<LM);
- } else
-#else
- (void)analysis_pcm;
- (void)C;
- (void)bitrate_bps;
- (void)delay_compensation;
- (void)downmix;
-#endif
- {
- frame_size = frame_size_select(frame_size, variable_duration, Fs);
- }
- if (frame_size<0)
- return -1;
- return frame_size;
-}
-
-opus_val16 compute_stereo_width(const opus_val16 *pcm, int frame_size, opus_int32 Fs, StereoWidthState *mem)
-{
- opus_val32 xx, xy, yy;
- opus_val16 sqrt_xx, sqrt_yy;
- opus_val16 qrrt_xx, qrrt_yy;
- int frame_rate;
- int i;
- opus_val16 short_alpha;
-
- frame_rate = Fs/frame_size;
- short_alpha = Q15ONE - MULT16_16(25, Q15ONE)/IMAX(50,frame_rate);
- xx=xy=yy=0;
- /* Unroll by 4. The frame size is always a multiple of 4 *except* for
- 2.5 ms frames at 12 kHz. Since this setting is very rare (and very
- stupid), we just discard the last two samples. */
- for (i=0;i<frame_size-3;i+=4)
- {
- opus_val32 pxx=0;
- opus_val32 pxy=0;
- opus_val32 pyy=0;
- opus_val16 x, y;
- x = pcm[2*i];
- y = pcm[2*i+1];
- pxx = SHR32(MULT16_16(x,x),2);
- pxy = SHR32(MULT16_16(x,y),2);
- pyy = SHR32(MULT16_16(y,y),2);
- x = pcm[2*i+2];
- y = pcm[2*i+3];
- pxx += SHR32(MULT16_16(x,x),2);
- pxy += SHR32(MULT16_16(x,y),2);
- pyy += SHR32(MULT16_16(y,y),2);
- x = pcm[2*i+4];
- y = pcm[2*i+5];
- pxx += SHR32(MULT16_16(x,x),2);
- pxy += SHR32(MULT16_16(x,y),2);
- pyy += SHR32(MULT16_16(y,y),2);
- x = pcm[2*i+6];
- y = pcm[2*i+7];
- pxx += SHR32(MULT16_16(x,x),2);
- pxy += SHR32(MULT16_16(x,y),2);
- pyy += SHR32(MULT16_16(y,y),2);
-
- xx += SHR32(pxx, 10);
- xy += SHR32(pxy, 10);
- yy += SHR32(pyy, 10);
- }
- mem->XX += MULT16_32_Q15(short_alpha, xx-mem->XX);
- mem->XY += MULT16_32_Q15(short_alpha, xy-mem->XY);
- mem->YY += MULT16_32_Q15(short_alpha, yy-mem->YY);
- mem->XX = MAX32(0, mem->XX);
- mem->XY = MAX32(0, mem->XY);
- mem->YY = MAX32(0, mem->YY);
- if (MAX32(mem->XX, mem->YY)>QCONST16(8e-4f, 18))
- {
- opus_val16 corr;
- opus_val16 ldiff;
- opus_val16 width;
- sqrt_xx = celt_sqrt(mem->XX);
- sqrt_yy = celt_sqrt(mem->YY);
- qrrt_xx = celt_sqrt(sqrt_xx);
- qrrt_yy = celt_sqrt(sqrt_yy);
- /* Inter-channel correlation */
- mem->XY = MIN32(mem->XY, sqrt_xx*sqrt_yy);
- corr = SHR32(frac_div32(mem->XY,EPSILON+MULT16_16(sqrt_xx,sqrt_yy)),16);
- /* Approximate loudness difference */
- ldiff = MULT16_16(Q15ONE, ABS16(qrrt_xx-qrrt_yy))/(EPSILON+qrrt_xx+qrrt_yy);
- width = MULT16_16_Q15(celt_sqrt(QCONST32(1.f,30)-MULT16_16(corr,corr)), ldiff);
- /* Smoothing over one second */
- mem->smoothed_width += (width-mem->smoothed_width)/frame_rate;
- /* Peak follower */
- mem->max_follower = MAX16(mem->max_follower-QCONST16(.02f,15)/frame_rate, mem->smoothed_width);
- }
- /*printf("%f %f %f %f %f ", corr/(float)Q15ONE, ldiff/(float)Q15ONE, width/(float)Q15ONE, mem->smoothed_width/(float)Q15ONE, mem->max_follower/(float)Q15ONE);*/
- return EXTRACT16(MIN32(Q15ONE, MULT16_16(20, mem->max_follower)));
-}
-
-opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_size,
- unsigned char *data, opus_int32 out_data_bytes, int lsb_depth,
- const void *analysis_pcm, opus_int32 analysis_size, int c1, int c2,
- int analysis_channels, downmix_func downmix, int float_api)
-{
- void *silk_enc;
- CELTEncoder *celt_enc;
- int i;
- int ret=0;
- opus_int32 nBytes;
- ec_enc enc;
- int bytes_target;
- int prefill=0;
- int start_band = 0;
- int redundancy = 0;
- int redundancy_bytes = 0; /* Number of bytes to use for redundancy frame */
- int celt_to_silk = 0;
- VARDECL(opus_val16, pcm_buf);
- int nb_compr_bytes;
- int to_celt = 0;
- opus_uint32 redundant_rng = 0;
- int cutoff_Hz, hp_freq_smth1;
- int voice_est; /* Probability of voice in Q7 */
- opus_int32 equiv_rate;
- int delay_compensation;
- int frame_rate;
- opus_int32 max_rate; /* Max bitrate we're allowed to use */
- int curr_bandwidth;
- opus_val16 HB_gain;
- opus_int32 max_data_bytes; /* Max number of bytes we're allowed to use */
- int total_buffer;
- opus_val16 stereo_width;
- const CELTMode *celt_mode;
-#ifndef DISABLE_FLOAT_API
- AnalysisInfo analysis_info;
- int analysis_read_pos_bak=-1;
- int analysis_read_subframe_bak=-1;
-#endif
- VARDECL(opus_val16, tmp_prefill);
-
- ALLOC_STACK;
-
- max_data_bytes = IMIN(1276, out_data_bytes);
-
- st->rangeFinal = 0;
- if ((!st->variable_duration && 400*frame_size != st->Fs && 200*frame_size != st->Fs && 100*frame_size != st->Fs &&
- 50*frame_size != st->Fs && 25*frame_size != st->Fs && 50*frame_size != 3*st->Fs)
- || (400*frame_size < st->Fs)
- || max_data_bytes<=0
- )
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
- silk_enc = (char*)st+st->silk_enc_offset;
- celt_enc = (CELTEncoder*)((char*)st+st->celt_enc_offset);
- if (st->application == OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- delay_compensation = 0;
- else
- delay_compensation = st->delay_compensation;
-
- lsb_depth = IMIN(lsb_depth, st->lsb_depth);
-
- celt_encoder_ctl(celt_enc, CELT_GET_MODE(&celt_mode));
-#ifndef DISABLE_FLOAT_API
- analysis_info.valid = 0;
-#ifdef FIXED_POINT
- if (st->silk_mode.complexity >= 10 && st->Fs==48000)
-#else
- if (st->silk_mode.complexity >= 7 && st->Fs==48000)
-#endif
- {
- analysis_read_pos_bak = st->analysis.read_pos;
- analysis_read_subframe_bak = st->analysis.read_subframe;
- run_analysis(&st->analysis, celt_mode, analysis_pcm, analysis_size, frame_size,
- c1, c2, analysis_channels, st->Fs,
- lsb_depth, downmix, &analysis_info);
- }
-#else
- (void)analysis_pcm;
- (void)analysis_size;
-#endif
-
- st->voice_ratio = -1;
-
-#ifndef DISABLE_FLOAT_API
- st->detected_bandwidth = 0;
- if (analysis_info.valid)
- {
- int analysis_bandwidth;
- if (st->signal_type == OPUS_AUTO)
- st->voice_ratio = (int)floor(.5+100*(1-analysis_info.music_prob));
-
- analysis_bandwidth = analysis_info.bandwidth;
- if (analysis_bandwidth<=12)
- st->detected_bandwidth = OPUS_BANDWIDTH_NARROWBAND;
- else if (analysis_bandwidth<=14)
- st->detected_bandwidth = OPUS_BANDWIDTH_MEDIUMBAND;
- else if (analysis_bandwidth<=16)
- st->detected_bandwidth = OPUS_BANDWIDTH_WIDEBAND;
- else if (analysis_bandwidth<=18)
- st->detected_bandwidth = OPUS_BANDWIDTH_SUPERWIDEBAND;
- else
- st->detected_bandwidth = OPUS_BANDWIDTH_FULLBAND;
- }
-#endif
-
- if (st->channels==2 && st->force_channels!=1)
- stereo_width = compute_stereo_width(pcm, frame_size, st->Fs, &st->width_mem);
- else
- stereo_width = 0;
- total_buffer = delay_compensation;
- st->bitrate_bps = user_bitrate_to_bitrate(st, frame_size, max_data_bytes);
-
- frame_rate = st->Fs/frame_size;
- if (!st->use_vbr)
- {
- int cbrBytes;
- /* Multiply by 3 to make sure the division is exact. */
- int frame_rate3 = 3*st->Fs/frame_size;
- /* We need to make sure that "int" values always fit in 16 bits. */
- cbrBytes = IMIN( (3*st->bitrate_bps/8 + frame_rate3/2)/frame_rate3, max_data_bytes);
- st->bitrate_bps = cbrBytes*(opus_int32)frame_rate3*8/3;
- max_data_bytes = cbrBytes;
- }
- if (max_data_bytes<3 || st->bitrate_bps < 3*frame_rate*8
- || (frame_rate<50 && (max_data_bytes*frame_rate<300 || st->bitrate_bps < 2400)))
- {
- /*If the space is too low to do something useful, emit 'PLC' frames.*/
- int tocmode = st->mode;
- int bw = st->bandwidth == 0 ? OPUS_BANDWIDTH_NARROWBAND : st->bandwidth;
- if (tocmode==0)
- tocmode = MODE_SILK_ONLY;
- if (frame_rate>100)
- tocmode = MODE_CELT_ONLY;
- if (frame_rate < 50)
- tocmode = MODE_SILK_ONLY;
- if(tocmode==MODE_SILK_ONLY&&bw>OPUS_BANDWIDTH_WIDEBAND)
- bw=OPUS_BANDWIDTH_WIDEBAND;
- else if (tocmode==MODE_CELT_ONLY&&bw==OPUS_BANDWIDTH_MEDIUMBAND)
- bw=OPUS_BANDWIDTH_NARROWBAND;
- else if (tocmode==MODE_HYBRID&&bw<=OPUS_BANDWIDTH_SUPERWIDEBAND)
- bw=OPUS_BANDWIDTH_SUPERWIDEBAND;
- data[0] = gen_toc(tocmode, frame_rate, bw, st->stream_channels);
- ret = 1;
- if (!st->use_vbr)
- {
- ret = opus_packet_pad(data, ret, max_data_bytes);
- if (ret == OPUS_OK)
- ret = max_data_bytes;
- }
- RESTORE_STACK;
- return ret;
- }
- max_rate = frame_rate*max_data_bytes*8;
-
- /* Equivalent 20-ms rate for mode/channel/bandwidth decisions */
- equiv_rate = st->bitrate_bps - (40*st->channels+20)*(st->Fs/frame_size - 50);
-
- if (st->signal_type == OPUS_SIGNAL_VOICE)
- voice_est = 127;
- else if (st->signal_type == OPUS_SIGNAL_MUSIC)
- voice_est = 0;
- else if (st->voice_ratio >= 0)
- {
- voice_est = st->voice_ratio*327>>8;
- /* For AUDIO, never be more than 90% confident of having speech */
- if (st->application == OPUS_APPLICATION_AUDIO)
- voice_est = IMIN(voice_est, 115);
- } else if (st->application == OPUS_APPLICATION_VOIP)
- voice_est = 115;
- else
- voice_est = 48;
-
- if (st->force_channels!=OPUS_AUTO && st->channels == 2)
- {
- st->stream_channels = st->force_channels;
- } else {
-#ifdef FUZZING
- /* Random mono/stereo decision */
- if (st->channels == 2 && (rand()&0x1F)==0)
- st->stream_channels = 3-st->stream_channels;
-#else
- /* Rate-dependent mono-stereo decision */
- if (st->channels == 2)
- {
- opus_int32 stereo_threshold;
- stereo_threshold = stereo_music_threshold + ((voice_est*voice_est*(stereo_voice_threshold-stereo_music_threshold))>>14);
- if (st->stream_channels == 2)
- stereo_threshold -= 1000;
- else
- stereo_threshold += 1000;
- st->stream_channels = (equiv_rate > stereo_threshold) ? 2 : 1;
- } else {
- st->stream_channels = st->channels;
- }
-#endif
- }
- equiv_rate = st->bitrate_bps - (40*st->stream_channels+20)*(st->Fs/frame_size - 50);
-
- /* Mode selection depending on application and signal type */
- if (st->application == OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- {
- st->mode = MODE_CELT_ONLY;
- } else if (st->user_forced_mode == OPUS_AUTO)
- {
-#ifdef FUZZING
- /* Random mode switching */
- if ((rand()&0xF)==0)
- {
- if ((rand()&0x1)==0)
- st->mode = MODE_CELT_ONLY;
- else
- st->mode = MODE_SILK_ONLY;
- } else {
- if (st->prev_mode==MODE_CELT_ONLY)
- st->mode = MODE_CELT_ONLY;
- else
- st->mode = MODE_SILK_ONLY;
- }
-#else
- opus_int32 mode_voice, mode_music;
- opus_int32 threshold;
-
- /* Interpolate based on stereo width */
- mode_voice = (opus_int32)(MULT16_32_Q15(Q15ONE-stereo_width,mode_thresholds[0][0])
- + MULT16_32_Q15(stereo_width,mode_thresholds[1][0]));
- mode_music = (opus_int32)(MULT16_32_Q15(Q15ONE-stereo_width,mode_thresholds[1][1])
- + MULT16_32_Q15(stereo_width,mode_thresholds[1][1]));
- /* Interpolate based on speech/music probability */
- threshold = mode_music + ((voice_est*voice_est*(mode_voice-mode_music))>>14);
- /* Bias towards SILK for VoIP because of some useful features */
- if (st->application == OPUS_APPLICATION_VOIP)
- threshold += 8000;
-
- /*printf("%f %d\n", stereo_width/(float)Q15ONE, threshold);*/
- /* Hysteresis */
- if (st->prev_mode == MODE_CELT_ONLY)
- threshold -= 4000;
- else if (st->prev_mode>0)
- threshold += 4000;
-
- st->mode = (equiv_rate >= threshold) ? MODE_CELT_ONLY: MODE_SILK_ONLY;
-
- /* When FEC is enabled and there's enough packet loss, use SILK */
- if (st->silk_mode.useInBandFEC && st->silk_mode.packetLossPercentage > (128-voice_est)>>4)
- st->mode = MODE_SILK_ONLY;
- /* When encoding voice and DTX is enabled, set the encoder to SILK mode (at least for now) */
- if (st->silk_mode.useDTX && voice_est > 100)
- st->mode = MODE_SILK_ONLY;
-#endif
- } else {
- st->mode = st->user_forced_mode;
- }
-
- /* Override the chosen mode to make sure we meet the requested frame size */
- if (st->mode != MODE_CELT_ONLY && frame_size < st->Fs/100)
- st->mode = MODE_CELT_ONLY;
- if (st->lfe)
- st->mode = MODE_CELT_ONLY;
- /* If max_data_bytes represents less than 8 kb/s, switch to CELT-only mode */
- if (max_data_bytes < (frame_rate > 50 ? 12000 : 8000)*frame_size / (st->Fs * 8))
- st->mode = MODE_CELT_ONLY;
-
- if (st->stream_channels == 1 && st->prev_channels ==2 && st->silk_mode.toMono==0
- && st->mode != MODE_CELT_ONLY && st->prev_mode != MODE_CELT_ONLY)
- {
- /* Delay stereo->mono transition by two frames so that SILK can do a smooth downmix */
- st->silk_mode.toMono = 1;
- st->stream_channels = 2;
- } else {
- st->silk_mode.toMono = 0;
- }
-
- if (st->prev_mode > 0 &&
- ((st->mode != MODE_CELT_ONLY && st->prev_mode == MODE_CELT_ONLY) ||
- (st->mode == MODE_CELT_ONLY && st->prev_mode != MODE_CELT_ONLY)))
- {
- redundancy = 1;
- celt_to_silk = (st->mode != MODE_CELT_ONLY);
- if (!celt_to_silk)
- {
- /* Switch to SILK/hybrid if frame size is 10 ms or more*/
- if (frame_size >= st->Fs/100)
- {
- st->mode = st->prev_mode;
- to_celt = 1;
- } else {
- redundancy=0;
- }
- }
- }
- /* For the first frame at a new SILK bandwidth */
- if (st->silk_bw_switch)
- {
- redundancy = 1;
- celt_to_silk = 1;
- st->silk_bw_switch = 0;
- prefill=1;
- }
-
- if (redundancy)
- {
- /* Fair share of the max size allowed */
- redundancy_bytes = IMIN(257, max_data_bytes*(opus_int32)(st->Fs/200)/(frame_size+st->Fs/200));
- /* For VBR, target the actual bitrate (subject to the limit above) */
- if (st->use_vbr)
- redundancy_bytes = IMIN(redundancy_bytes, st->bitrate_bps/1600);
- }
-
- if (st->mode != MODE_CELT_ONLY && st->prev_mode == MODE_CELT_ONLY)
- {
- silk_EncControlStruct dummy;
- silk_InitEncoder( silk_enc, st->arch, &dummy);
- prefill=1;
- }
-
- /* Automatic (rate-dependent) bandwidth selection */
- if (st->mode == MODE_CELT_ONLY || st->first || st->silk_mode.allowBandwidthSwitch)
- {
- const opus_int32 *voice_bandwidth_thresholds, *music_bandwidth_thresholds;
- opus_int32 bandwidth_thresholds[8];
- int bandwidth = OPUS_BANDWIDTH_FULLBAND;
- opus_int32 equiv_rate2;
-
- equiv_rate2 = equiv_rate;
- if (st->mode != MODE_CELT_ONLY)
- {
- /* Adjust the threshold +/- 10% depending on complexity */
- equiv_rate2 = equiv_rate2 * (45+st->silk_mode.complexity)/50;
- /* CBR is less efficient by ~1 kb/s */
- if (!st->use_vbr)
- equiv_rate2 -= 1000;
- }
- if (st->channels==2 && st->force_channels!=1)
- {
- voice_bandwidth_thresholds = stereo_voice_bandwidth_thresholds;
- music_bandwidth_thresholds = stereo_music_bandwidth_thresholds;
- } else {
- voice_bandwidth_thresholds = mono_voice_bandwidth_thresholds;
- music_bandwidth_thresholds = mono_music_bandwidth_thresholds;
- }
- /* Interpolate bandwidth thresholds depending on voice estimation */
- for (i=0;i<8;i++)
- {
- bandwidth_thresholds[i] = music_bandwidth_thresholds[i]
- + ((voice_est*voice_est*(voice_bandwidth_thresholds[i]-music_bandwidth_thresholds[i]))>>14);
- }
- do {
- int threshold, hysteresis;
- threshold = bandwidth_thresholds[2*(bandwidth-OPUS_BANDWIDTH_MEDIUMBAND)];
- hysteresis = bandwidth_thresholds[2*(bandwidth-OPUS_BANDWIDTH_MEDIUMBAND)+1];
- if (!st->first)
- {
- if (st->bandwidth >= bandwidth)
- threshold -= hysteresis;
- else
- threshold += hysteresis;
- }
- if (equiv_rate2 >= threshold)
- break;
- } while (--bandwidth>OPUS_BANDWIDTH_NARROWBAND);
- st->bandwidth = bandwidth;
- /* Prevents any transition to SWB/FB until the SILK layer has fully
- switched to WB mode and turned the variable LP filter off */
- if (!st->first && st->mode != MODE_CELT_ONLY && !st->silk_mode.inWBmodeWithoutVariableLP && st->bandwidth > OPUS_BANDWIDTH_WIDEBAND)
- st->bandwidth = OPUS_BANDWIDTH_WIDEBAND;
- }
-
- if (st->bandwidth>st->max_bandwidth)
- st->bandwidth = st->max_bandwidth;
-
- if (st->user_bandwidth != OPUS_AUTO)
- st->bandwidth = st->user_bandwidth;
-
- /* This prevents us from using hybrid at unsafe CBR/max rates */
- if (st->mode != MODE_CELT_ONLY && max_rate < 15000)
- {
- st->bandwidth = IMIN(st->bandwidth, OPUS_BANDWIDTH_WIDEBAND);
- }
-
- /* Prevents Opus from wasting bits on frequencies that are above
- the Nyquist rate of the input signal */
- if (st->Fs <= 24000 && st->bandwidth > OPUS_BANDWIDTH_SUPERWIDEBAND)
- st->bandwidth = OPUS_BANDWIDTH_SUPERWIDEBAND;
- if (st->Fs <= 16000 && st->bandwidth > OPUS_BANDWIDTH_WIDEBAND)
- st->bandwidth = OPUS_BANDWIDTH_WIDEBAND;
- if (st->Fs <= 12000 && st->bandwidth > OPUS_BANDWIDTH_MEDIUMBAND)
- st->bandwidth = OPUS_BANDWIDTH_MEDIUMBAND;
- if (st->Fs <= 8000 && st->bandwidth > OPUS_BANDWIDTH_NARROWBAND)
- st->bandwidth = OPUS_BANDWIDTH_NARROWBAND;
-#ifndef DISABLE_FLOAT_API
- /* Use detected bandwidth to reduce the encoded bandwidth. */
- if (st->detected_bandwidth && st->user_bandwidth == OPUS_AUTO)
- {
- int min_detected_bandwidth;
- /* Makes bandwidth detection more conservative just in case the detector
- gets it wrong when we could have coded a high bandwidth transparently.
- When operating in SILK/hybrid mode, we don't go below wideband to avoid
- more complicated switches that require redundancy. */
- if (equiv_rate <= 18000*st->stream_channels && st->mode == MODE_CELT_ONLY)
- min_detected_bandwidth = OPUS_BANDWIDTH_NARROWBAND;
- else if (equiv_rate <= 24000*st->stream_channels && st->mode == MODE_CELT_ONLY)
- min_detected_bandwidth = OPUS_BANDWIDTH_MEDIUMBAND;
- else if (equiv_rate <= 30000*st->stream_channels)
- min_detected_bandwidth = OPUS_BANDWIDTH_WIDEBAND;
- else if (equiv_rate <= 44000*st->stream_channels)
- min_detected_bandwidth = OPUS_BANDWIDTH_SUPERWIDEBAND;
- else
- min_detected_bandwidth = OPUS_BANDWIDTH_FULLBAND;
-
- st->detected_bandwidth = IMAX(st->detected_bandwidth, min_detected_bandwidth);
- st->bandwidth = IMIN(st->bandwidth, st->detected_bandwidth);
- }
-#endif
- celt_encoder_ctl(celt_enc, OPUS_SET_LSB_DEPTH(lsb_depth));
-
- /* CELT mode doesn't support mediumband, use wideband instead */
- if (st->mode == MODE_CELT_ONLY && st->bandwidth == OPUS_BANDWIDTH_MEDIUMBAND)
- st->bandwidth = OPUS_BANDWIDTH_WIDEBAND;
- if (st->lfe)
- st->bandwidth = OPUS_BANDWIDTH_NARROWBAND;
-
- /* Can't support higher than wideband for >20 ms frames */
- if (frame_size > st->Fs/50 && (st->mode == MODE_CELT_ONLY || st->bandwidth > OPUS_BANDWIDTH_WIDEBAND))
- {
- VARDECL(unsigned char, tmp_data);
- int nb_frames;
- int bak_mode, bak_bandwidth, bak_channels, bak_to_mono;
- VARDECL(OpusRepacketizer, rp);
- opus_int32 bytes_per_frame;
- opus_int32 repacketize_len;
-
-#ifndef DISABLE_FLOAT_API
- if (analysis_read_pos_bak!= -1)
- {
- st->analysis.read_pos = analysis_read_pos_bak;
- st->analysis.read_subframe = analysis_read_subframe_bak;
- }
-#endif
-
- nb_frames = frame_size > st->Fs/25 ? 3 : 2;
- bytes_per_frame = IMIN(1276,(out_data_bytes-3)/nb_frames);
-
- ALLOC(tmp_data, nb_frames*bytes_per_frame, unsigned char);
-
- ALLOC(rp, 1, OpusRepacketizer);
- opus_repacketizer_init(rp);
-
- bak_mode = st->user_forced_mode;
- bak_bandwidth = st->user_bandwidth;
- bak_channels = st->force_channels;
-
- st->user_forced_mode = st->mode;
- st->user_bandwidth = st->bandwidth;
- st->force_channels = st->stream_channels;
- bak_to_mono = st->silk_mode.toMono;
-
- if (bak_to_mono)
- st->force_channels = 1;
- else
- st->prev_channels = st->stream_channels;
- for (i=0;i<nb_frames;i++)
- {
- int tmp_len;
- st->silk_mode.toMono = 0;
- /* When switching from SILK/Hybrid to CELT, only ask for a switch at the last frame */
- if (to_celt && i==nb_frames-1)
- st->user_forced_mode = MODE_CELT_ONLY;
- tmp_len = opus_encode_native(st, pcm+i*(st->channels*st->Fs/50), st->Fs/50,
- tmp_data+i*bytes_per_frame, bytes_per_frame, lsb_depth,
- NULL, 0, c1, c2, analysis_channels, downmix, float_api);
- if (tmp_len<0)
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- ret = opus_repacketizer_cat(rp, tmp_data+i*bytes_per_frame, tmp_len);
- if (ret<0)
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- }
- if (st->use_vbr)
- repacketize_len = out_data_bytes;
- else
- repacketize_len = IMIN(3*st->bitrate_bps/(3*8*50/nb_frames), out_data_bytes);
- ret = opus_repacketizer_out_range_impl(rp, 0, nb_frames, data, repacketize_len, 0, !st->use_vbr);
- if (ret<0)
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- st->user_forced_mode = bak_mode;
- st->user_bandwidth = bak_bandwidth;
- st->force_channels = bak_channels;
- st->silk_mode.toMono = bak_to_mono;
- RESTORE_STACK;
- return ret;
- }
- curr_bandwidth = st->bandwidth;
-
- /* Chooses the appropriate mode for speech
- *NEVER* switch to/from CELT-only mode here as this will invalidate some assumptions */
- if (st->mode == MODE_SILK_ONLY && curr_bandwidth > OPUS_BANDWIDTH_WIDEBAND)
- st->mode = MODE_HYBRID;
- if (st->mode == MODE_HYBRID && curr_bandwidth <= OPUS_BANDWIDTH_WIDEBAND)
- st->mode = MODE_SILK_ONLY;
-
- /* printf("%d %d %d %d\n", st->bitrate_bps, st->stream_channels, st->mode, curr_bandwidth); */
- bytes_target = IMIN(max_data_bytes-redundancy_bytes, st->bitrate_bps * frame_size / (st->Fs * 8)) - 1;
-
- data += 1;
-
- ec_enc_init(&enc, data, max_data_bytes-1);
-
- ALLOC(pcm_buf, (total_buffer+frame_size)*st->channels, opus_val16);
- OPUS_COPY(pcm_buf, &st->delay_buffer[(st->encoder_buffer-total_buffer)*st->channels], total_buffer*st->channels);
-
- if (st->mode == MODE_CELT_ONLY)
- hp_freq_smth1 = silk_LSHIFT( silk_lin2log( VARIABLE_HP_MIN_CUTOFF_HZ ), 8 );
- else
- hp_freq_smth1 = ((silk_encoder*)silk_enc)->state_Fxx[0].sCmn.variable_HP_smth1_Q15;
-
- st->variable_HP_smth2_Q15 = silk_SMLAWB( st->variable_HP_smth2_Q15,
- hp_freq_smth1 - st->variable_HP_smth2_Q15, SILK_FIX_CONST( VARIABLE_HP_SMTH_COEF2, 16 ) );
-
- /* convert from log scale to Hertz */
- cutoff_Hz = silk_log2lin( silk_RSHIFT( st->variable_HP_smth2_Q15, 8 ) );
-
- if (st->application == OPUS_APPLICATION_VOIP)
- {
- hp_cutoff(pcm, cutoff_Hz, &pcm_buf[total_buffer*st->channels], st->hp_mem, frame_size, st->channels, st->Fs);
- } else {
- dc_reject(pcm, 3, &pcm_buf[total_buffer*st->channels], st->hp_mem, frame_size, st->channels, st->Fs);
- }
-#ifndef FIXED_POINT
- if (float_api)
- {
- opus_val32 sum;
- sum = celt_inner_prod(&pcm_buf[total_buffer*st->channels], &pcm_buf[total_buffer*st->channels], frame_size*st->channels, st->arch);
- /* This should filter out both NaNs and ridiculous signals that could
- cause NaNs further down. */
- if (!(sum < 1e9f) || celt_isnan(sum))
- {
- OPUS_CLEAR(&pcm_buf[total_buffer*st->channels], frame_size*st->channels);
- st->hp_mem[0] = st->hp_mem[1] = st->hp_mem[2] = st->hp_mem[3] = 0;
- }
- }
-#endif
-
-
- /* SILK processing */
- HB_gain = Q15ONE;
- if (st->mode != MODE_CELT_ONLY)
- {
- opus_int32 total_bitRate, celt_rate;
-#ifdef FIXED_POINT
- const opus_int16 *pcm_silk;
-#else
- VARDECL(opus_int16, pcm_silk);
- ALLOC(pcm_silk, st->channels*frame_size, opus_int16);
-#endif
-
- /* Distribute bits between SILK and CELT */
- total_bitRate = 8 * bytes_target * frame_rate;
- if( st->mode == MODE_HYBRID ) {
- int HB_gain_ref;
- /* Base rate for SILK */
- st->silk_mode.bitRate = st->stream_channels * ( 5000 + 1000 * ( st->Fs == 100 * frame_size ) );
- if( curr_bandwidth == OPUS_BANDWIDTH_SUPERWIDEBAND ) {
- /* SILK gets 2/3 of the remaining bits */
- st->silk_mode.bitRate += ( total_bitRate - st->silk_mode.bitRate ) * 2 / 3;
- } else { /* FULLBAND */
- /* SILK gets 3/5 of the remaining bits */
- st->silk_mode.bitRate += ( total_bitRate - st->silk_mode.bitRate ) * 3 / 5;
- }
- /* Don't let SILK use more than 80% */
- if( st->silk_mode.bitRate > total_bitRate * 4/5 ) {
- st->silk_mode.bitRate = total_bitRate * 4/5;
- }
- if (!st->energy_masking)
- {
- /* Increasingly attenuate high band when it gets allocated fewer bits */
- celt_rate = total_bitRate - st->silk_mode.bitRate;
- HB_gain_ref = (curr_bandwidth == OPUS_BANDWIDTH_SUPERWIDEBAND) ? 3000 : 3600;
- HB_gain = SHL32((opus_val32)celt_rate, 9) / SHR32((opus_val32)celt_rate + st->stream_channels * HB_gain_ref, 6);
- HB_gain = HB_gain < (opus_val32)Q15ONE*6/7 ? HB_gain + Q15ONE/7 : Q15ONE;
- }
- } else {
- /* SILK gets all bits */
- st->silk_mode.bitRate = total_bitRate;
- }
-
- /* Surround masking for SILK */
- if (st->energy_masking && st->use_vbr && !st->lfe)
- {
- opus_val32 mask_sum=0;
- opus_val16 masking_depth;
- opus_int32 rate_offset;
- int c;
- int end = 17;
- opus_int16 srate = 16000;
- if (st->bandwidth == OPUS_BANDWIDTH_NARROWBAND)
- {
- end = 13;
- srate = 8000;
- } else if (st->bandwidth == OPUS_BANDWIDTH_MEDIUMBAND)
- {
- end = 15;
- srate = 12000;
- }
- for (c=0;c<st->channels;c++)
- {
- for(i=0;i<end;i++)
- {
- opus_val16 mask;
- mask = MAX16(MIN16(st->energy_masking[21*c+i],
- QCONST16(.5f, DB_SHIFT)), -QCONST16(2.0f, DB_SHIFT));
- if (mask > 0)
- mask = HALF16(mask);
- mask_sum += mask;
- }
- }
- /* Conservative rate reduction, we cut the masking in half */
- masking_depth = mask_sum / end*st->channels;
- masking_depth += QCONST16(.2f, DB_SHIFT);
- rate_offset = (opus_int32)PSHR32(MULT16_16(srate, masking_depth), DB_SHIFT);
- rate_offset = MAX32(rate_offset, -2*st->silk_mode.bitRate/3);
- /* Split the rate change between the SILK and CELT part for hybrid. */
- if (st->bandwidth==OPUS_BANDWIDTH_SUPERWIDEBAND || st->bandwidth==OPUS_BANDWIDTH_FULLBAND)
- st->silk_mode.bitRate += 3*rate_offset/5;
- else
- st->silk_mode.bitRate += rate_offset;
- bytes_target += rate_offset * frame_size / (8 * st->Fs);
- }
-
- st->silk_mode.payloadSize_ms = 1000 * frame_size / st->Fs;
- st->silk_mode.nChannelsAPI = st->channels;
- st->silk_mode.nChannelsInternal = st->stream_channels;
- if (curr_bandwidth == OPUS_BANDWIDTH_NARROWBAND) {
- st->silk_mode.desiredInternalSampleRate = 8000;
- } else if (curr_bandwidth == OPUS_BANDWIDTH_MEDIUMBAND) {
- st->silk_mode.desiredInternalSampleRate = 12000;
- } else {
- silk_assert( st->mode == MODE_HYBRID || curr_bandwidth == OPUS_BANDWIDTH_WIDEBAND );
- st->silk_mode.desiredInternalSampleRate = 16000;
- }
- if( st->mode == MODE_HYBRID ) {
- /* Don't allow bandwidth reduction at lowest bitrates in hybrid mode */
- st->silk_mode.minInternalSampleRate = 16000;
- } else {
- st->silk_mode.minInternalSampleRate = 8000;
- }
-
- if (st->mode == MODE_SILK_ONLY)
- {
- opus_int32 effective_max_rate = max_rate;
- st->silk_mode.maxInternalSampleRate = 16000;
- if (frame_rate > 50)
- effective_max_rate = effective_max_rate*2/3;
- if (effective_max_rate < 13000)
- {
- st->silk_mode.maxInternalSampleRate = 12000;
- st->silk_mode.desiredInternalSampleRate = IMIN(12000, st->silk_mode.desiredInternalSampleRate);
- }
- if (effective_max_rate < 9600)
- {
- st->silk_mode.maxInternalSampleRate = 8000;
- st->silk_mode.desiredInternalSampleRate = IMIN(8000, st->silk_mode.desiredInternalSampleRate);
- }
- } else {
- st->silk_mode.maxInternalSampleRate = 16000;
- }
-
- st->silk_mode.useCBR = !st->use_vbr;
-
- /* Call SILK encoder for the low band */
- nBytes = IMIN(1275, max_data_bytes-1-redundancy_bytes);
-
- st->silk_mode.maxBits = nBytes*8;
- /* Only allow up to 90% of the bits for hybrid mode*/
- if (st->mode == MODE_HYBRID)
- st->silk_mode.maxBits = (opus_int32)st->silk_mode.maxBits*9/10;
- if (st->silk_mode.useCBR)
- {
- st->silk_mode.maxBits = (st->silk_mode.bitRate * frame_size / (st->Fs * 8))*8;
- /* Reduce the initial target to make it easier to reach the CBR rate */
- st->silk_mode.bitRate = IMAX(1, st->silk_mode.bitRate-2000);
- }
-
- if (prefill)
- {
- opus_int32 zero=0;
- int prefill_offset;
- /* Use a smooth onset for the SILK prefill to avoid the encoder trying to encode
- a discontinuity. The exact location is what we need to avoid leaving any "gap"
- in the audio when mixing with the redundant CELT frame. Here we can afford to
- overwrite st->delay_buffer because the only thing that uses it before it gets
- rewritten is tmp_prefill[] and even then only the part after the ramp really
- gets used (rather than sent to the encoder and discarded) */
- prefill_offset = st->channels*(st->encoder_buffer-st->delay_compensation-st->Fs/400);
- gain_fade(st->delay_buffer+prefill_offset, st->delay_buffer+prefill_offset,
- 0, Q15ONE, celt_mode->overlap, st->Fs/400, st->channels, celt_mode->window, st->Fs);
- OPUS_CLEAR(st->delay_buffer, prefill_offset);
-#ifdef FIXED_POINT
- pcm_silk = st->delay_buffer;
-#else
- for (i=0;i<st->encoder_buffer*st->channels;i++)
- pcm_silk[i] = FLOAT2INT16(st->delay_buffer[i]);
-#endif
- silk_Encode( silk_enc, &st->silk_mode, pcm_silk, st->encoder_buffer, NULL, &zero, 1 );
- }
-
-#ifdef FIXED_POINT
- pcm_silk = pcm_buf+total_buffer*st->channels;
-#else
- for (i=0;i<frame_size*st->channels;i++)
- pcm_silk[i] = FLOAT2INT16(pcm_buf[total_buffer*st->channels + i]);
-#endif
- ret = silk_Encode( silk_enc, &st->silk_mode, pcm_silk, frame_size, &enc, &nBytes, 0 );
- if( ret ) {
- /*fprintf (stderr, "SILK encode error: %d\n", ret);*/
- /* Handle error */
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- if (nBytes==0)
- {
- st->rangeFinal = 0;
- data[-1] = gen_toc(st->mode, st->Fs/frame_size, curr_bandwidth, st->stream_channels);
- RESTORE_STACK;
- return 1;
- }
- /* Extract SILK internal bandwidth for signaling in first byte */
- if( st->mode == MODE_SILK_ONLY ) {
- if( st->silk_mode.internalSampleRate == 8000 ) {
- curr_bandwidth = OPUS_BANDWIDTH_NARROWBAND;
- } else if( st->silk_mode.internalSampleRate == 12000 ) {
- curr_bandwidth = OPUS_BANDWIDTH_MEDIUMBAND;
- } else if( st->silk_mode.internalSampleRate == 16000 ) {
- curr_bandwidth = OPUS_BANDWIDTH_WIDEBAND;
- }
- } else {
- silk_assert( st->silk_mode.internalSampleRate == 16000 );
- }
-
- st->silk_mode.opusCanSwitch = st->silk_mode.switchReady;
- /* FIXME: How do we allocate the redundancy for CBR? */
- if (st->silk_mode.opusCanSwitch)
- {
- redundancy = 1;
- celt_to_silk = 0;
- st->silk_bw_switch = 1;
- }
- }
-
- /* CELT processing */
- {
- int endband=21;
-
- switch(curr_bandwidth)
- {
- case OPUS_BANDWIDTH_NARROWBAND:
- endband = 13;
- break;
- case OPUS_BANDWIDTH_MEDIUMBAND:
- case OPUS_BANDWIDTH_WIDEBAND:
- endband = 17;
- break;
- case OPUS_BANDWIDTH_SUPERWIDEBAND:
- endband = 19;
- break;
- case OPUS_BANDWIDTH_FULLBAND:
- endband = 21;
- break;
- }
- celt_encoder_ctl(celt_enc, CELT_SET_END_BAND(endband));
- celt_encoder_ctl(celt_enc, CELT_SET_CHANNELS(st->stream_channels));
- }
- celt_encoder_ctl(celt_enc, OPUS_SET_BITRATE(OPUS_BITRATE_MAX));
- if (st->mode != MODE_SILK_ONLY)
- {
- opus_val32 celt_pred=2;
- celt_encoder_ctl(celt_enc, OPUS_SET_VBR(0));
- /* We may still decide to disable prediction later */
- if (st->silk_mode.reducedDependency)
- celt_pred = 0;
- celt_encoder_ctl(celt_enc, CELT_SET_PREDICTION(celt_pred));
-
- if (st->mode == MODE_HYBRID)
- {
- int len;
-
- len = (ec_tell(&enc)+7)>>3;
- if (redundancy)
- len += st->mode == MODE_HYBRID ? 3 : 1;
- if( st->use_vbr ) {
- nb_compr_bytes = len + bytes_target - (st->silk_mode.bitRate * frame_size) / (8 * st->Fs);
- } else {
- /* check if SILK used up too much */
- nb_compr_bytes = len > bytes_target ? len : bytes_target;
- }
- } else {
- if (st->use_vbr)
- {
- opus_int32 bonus=0;
-#ifndef DISABLE_FLOAT_API
- if (st->variable_duration==OPUS_FRAMESIZE_VARIABLE && frame_size != st->Fs/50)
- {
- bonus = (60*st->stream_channels+40)*(st->Fs/frame_size-50);
- if (analysis_info.valid)
- bonus = (opus_int32)(bonus*(1.f+.5f*analysis_info.tonality));
- }
-#endif
- celt_encoder_ctl(celt_enc, OPUS_SET_VBR(1));
- celt_encoder_ctl(celt_enc, OPUS_SET_VBR_CONSTRAINT(st->vbr_constraint));
- celt_encoder_ctl(celt_enc, OPUS_SET_BITRATE(st->bitrate_bps+bonus));
- nb_compr_bytes = max_data_bytes-1-redundancy_bytes;
- } else {
- nb_compr_bytes = bytes_target;
- }
- }
-
- } else {
- nb_compr_bytes = 0;
- }
-
- ALLOC(tmp_prefill, st->channels*st->Fs/400, opus_val16);
- if (st->mode != MODE_SILK_ONLY && st->mode != st->prev_mode && st->prev_mode > 0)
- {
- OPUS_COPY(tmp_prefill, &st->delay_buffer[(st->encoder_buffer-total_buffer-st->Fs/400)*st->channels], st->channels*st->Fs/400);
- }
-
- if (st->channels*(st->encoder_buffer-(frame_size+total_buffer)) > 0)
- {
- OPUS_MOVE(st->delay_buffer, &st->delay_buffer[st->channels*frame_size], st->channels*(st->encoder_buffer-frame_size-total_buffer));
- OPUS_COPY(&st->delay_buffer[st->channels*(st->encoder_buffer-frame_size-total_buffer)],
- &pcm_buf[0],
- (frame_size+total_buffer)*st->channels);
- } else {
- OPUS_COPY(st->delay_buffer, &pcm_buf[(frame_size+total_buffer-st->encoder_buffer)*st->channels], st->encoder_buffer*st->channels);
- }
- /* gain_fade() and stereo_fade() need to be after the buffer copying
- because we don't want any of this to affect the SILK part */
- if( st->prev_HB_gain < Q15ONE || HB_gain < Q15ONE ) {
- gain_fade(pcm_buf, pcm_buf,
- st->prev_HB_gain, HB_gain, celt_mode->overlap, frame_size, st->channels, celt_mode->window, st->Fs);
- }
- st->prev_HB_gain = HB_gain;
- if (st->mode != MODE_HYBRID || st->stream_channels==1)
- st->silk_mode.stereoWidth_Q14 = IMIN((1<<14),2*IMAX(0,equiv_rate-30000));
- if( !st->energy_masking && st->channels == 2 ) {
- /* Apply stereo width reduction (at low bitrates) */
- if( st->hybrid_stereo_width_Q14 < (1 << 14) || st->silk_mode.stereoWidth_Q14 < (1 << 14) ) {
- opus_val16 g1, g2;
- g1 = st->hybrid_stereo_width_Q14;
- g2 = (opus_val16)(st->silk_mode.stereoWidth_Q14);
-#ifdef FIXED_POINT
- g1 = g1==16384 ? Q15ONE : SHL16(g1,1);
- g2 = g2==16384 ? Q15ONE : SHL16(g2,1);
-#else
- g1 *= (1.f/16384);
- g2 *= (1.f/16384);
-#endif
- stereo_fade(pcm_buf, pcm_buf, g1, g2, celt_mode->overlap,
- frame_size, st->channels, celt_mode->window, st->Fs);
- st->hybrid_stereo_width_Q14 = st->silk_mode.stereoWidth_Q14;
- }
- }
-
- if ( st->mode != MODE_CELT_ONLY && ec_tell(&enc)+17+20*(st->mode == MODE_HYBRID) <= 8*(max_data_bytes-1))
- {
- /* For SILK mode, the redundancy is inferred from the length */
- if (st->mode == MODE_HYBRID && (redundancy || ec_tell(&enc)+37 <= 8*nb_compr_bytes))
- ec_enc_bit_logp(&enc, redundancy, 12);
- if (redundancy)
- {
- int max_redundancy;
- ec_enc_bit_logp(&enc, celt_to_silk, 1);
- if (st->mode == MODE_HYBRID)
- max_redundancy = (max_data_bytes-1)-nb_compr_bytes;
- else
- max_redundancy = (max_data_bytes-1)-((ec_tell(&enc)+7)>>3);
- /* Target the same bit-rate for redundancy as for the rest,
- up to a max of 257 bytes */
- redundancy_bytes = IMIN(max_redundancy, st->bitrate_bps/1600);
- redundancy_bytes = IMIN(257, IMAX(2, redundancy_bytes));
- if (st->mode == MODE_HYBRID)
- ec_enc_uint(&enc, redundancy_bytes-2, 256);
- }
- } else {
- redundancy = 0;
- }
-
- if (!redundancy)
- {
- st->silk_bw_switch = 0;
- redundancy_bytes = 0;
- }
- if (st->mode != MODE_CELT_ONLY)start_band=17;
-
- if (st->mode == MODE_SILK_ONLY)
- {
- ret = (ec_tell(&enc)+7)>>3;
- ec_enc_done(&enc);
- nb_compr_bytes = ret;
- } else {
- nb_compr_bytes = IMIN((max_data_bytes-1)-redundancy_bytes, nb_compr_bytes);
- ec_enc_shrink(&enc, nb_compr_bytes);
- }
-
-#ifndef DISABLE_FLOAT_API
- if (redundancy || st->mode != MODE_SILK_ONLY)
- celt_encoder_ctl(celt_enc, CELT_SET_ANALYSIS(&analysis_info));
-#endif
-
- /* 5 ms redundant frame for CELT->SILK */
- if (redundancy && celt_to_silk)
- {
- int err;
- celt_encoder_ctl(celt_enc, CELT_SET_START_BAND(0));
- celt_encoder_ctl(celt_enc, OPUS_SET_VBR(0));
- err = celt_encode_with_ec(celt_enc, pcm_buf, st->Fs/200, data+nb_compr_bytes, redundancy_bytes, NULL);
- if (err < 0)
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- celt_encoder_ctl(celt_enc, OPUS_GET_FINAL_RANGE(&redundant_rng));
- celt_encoder_ctl(celt_enc, OPUS_RESET_STATE);
- }
-
- celt_encoder_ctl(celt_enc, CELT_SET_START_BAND(start_band));
-
- if (st->mode != MODE_SILK_ONLY)
- {
- if (st->mode != st->prev_mode && st->prev_mode > 0)
- {
- unsigned char dummy[2];
- celt_encoder_ctl(celt_enc, OPUS_RESET_STATE);
-
- /* Prefilling */
- celt_encode_with_ec(celt_enc, tmp_prefill, st->Fs/400, dummy, 2, NULL);
- celt_encoder_ctl(celt_enc, CELT_SET_PREDICTION(0));
- }
- /* If false, we already busted the budget and we'll end up with a "PLC packet" */
- if (ec_tell(&enc) <= 8*nb_compr_bytes)
- {
- ret = celt_encode_with_ec(celt_enc, pcm_buf, frame_size, NULL, nb_compr_bytes, &enc);
- if (ret < 0)
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- }
- }
-
- /* 5 ms redundant frame for SILK->CELT */
- if (redundancy && !celt_to_silk)
- {
- int err;
- unsigned char dummy[2];
- int N2, N4;
- N2 = st->Fs/200;
- N4 = st->Fs/400;
-
- celt_encoder_ctl(celt_enc, OPUS_RESET_STATE);
- celt_encoder_ctl(celt_enc, CELT_SET_START_BAND(0));
- celt_encoder_ctl(celt_enc, CELT_SET_PREDICTION(0));
-
- /* NOTE: We could speed this up slightly (at the expense of code size) by just adding a function that prefills the buffer */
- celt_encode_with_ec(celt_enc, pcm_buf+st->channels*(frame_size-N2-N4), N4, dummy, 2, NULL);
-
- err = celt_encode_with_ec(celt_enc, pcm_buf+st->channels*(frame_size-N2), N2, data+nb_compr_bytes, redundancy_bytes, NULL);
- if (err < 0)
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- celt_encoder_ctl(celt_enc, OPUS_GET_FINAL_RANGE(&redundant_rng));
- }
-
-
-
- /* Signalling the mode in the first byte */
- data--;
- data[0] = gen_toc(st->mode, st->Fs/frame_size, curr_bandwidth, st->stream_channels);
-
- st->rangeFinal = enc.rng ^ redundant_rng;
-
- if (to_celt)
- st->prev_mode = MODE_CELT_ONLY;
- else
- st->prev_mode = st->mode;
- st->prev_channels = st->stream_channels;
- st->prev_framesize = frame_size;
-
- st->first = 0;
-
- /* In the unlikely case that the SILK encoder busted its target, tell
- the decoder to call the PLC */
- if (ec_tell(&enc) > (max_data_bytes-1)*8)
- {
- if (max_data_bytes < 2)
- {
- RESTORE_STACK;
- return OPUS_BUFFER_TOO_SMALL;
- }
- data[1] = 0;
- ret = 1;
- st->rangeFinal = 0;
- } else if (st->mode==MODE_SILK_ONLY&&!redundancy)
- {
- /*When in LPC only mode it's perfectly
- reasonable to strip off trailing zero bytes as
- the required range decoder behavior is to
- fill these in. This can't be done when the MDCT
- modes are used because the decoder needs to know
- the actual length for allocation purposes.*/
- while(ret>2&&data[ret]==0)ret--;
- }
- /* Count ToC and redundancy */
- ret += 1+redundancy_bytes;
- if (!st->use_vbr)
- {
- if (opus_packet_pad(data, ret, max_data_bytes) != OPUS_OK)
-
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- ret = max_data_bytes;
- }
- RESTORE_STACK;
- return ret;
-}
-
-#ifdef FIXED_POINT
-
-#ifndef DISABLE_FLOAT_API
-opus_int32 opus_encode_float(OpusEncoder *st, const float *pcm, int analysis_frame_size,
- unsigned char *data, opus_int32 max_data_bytes)
-{
- int i, ret;
- int frame_size;
- int delay_compensation;
- VARDECL(opus_int16, in);
- ALLOC_STACK;
-
- if (st->application == OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- delay_compensation = 0;
- else
- delay_compensation = st->delay_compensation;
- frame_size = compute_frame_size(pcm, analysis_frame_size,
- st->variable_duration, st->channels, st->Fs, st->bitrate_bps,
- delay_compensation, downmix_float, st->analysis.subframe_mem);
-
- ALLOC(in, frame_size*st->channels, opus_int16);
-
- for (i=0;i<frame_size*st->channels;i++)
- in[i] = FLOAT2INT16(pcm[i]);
- ret = opus_encode_native(st, in, frame_size, data, max_data_bytes, 16,
- pcm, analysis_frame_size, 0, -2, st->channels, downmix_float, 1);
- RESTORE_STACK;
- return ret;
-}
-#endif
-
-opus_int32 opus_encode(OpusEncoder *st, const opus_int16 *pcm, int analysis_frame_size,
- unsigned char *data, opus_int32 out_data_bytes)
-{
- int frame_size;
- int delay_compensation;
- if (st->application == OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- delay_compensation = 0;
- else
- delay_compensation = st->delay_compensation;
- frame_size = compute_frame_size(pcm, analysis_frame_size,
- st->variable_duration, st->channels, st->Fs, st->bitrate_bps,
- delay_compensation, downmix_int
-#ifndef DISABLE_FLOAT_API
- , st->analysis.subframe_mem
-#endif
- );
- return opus_encode_native(st, pcm, frame_size, data, out_data_bytes, 16,
- pcm, analysis_frame_size, 0, -2, st->channels, downmix_int, 0);
-}
-
-#else
-opus_int32 opus_encode(OpusEncoder *st, const opus_int16 *pcm, int analysis_frame_size,
- unsigned char *data, opus_int32 max_data_bytes)
-{
- int i, ret;
- int frame_size;
- int delay_compensation;
- VARDECL(float, in);
- ALLOC_STACK;
-
- if (st->application == OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- delay_compensation = 0;
- else
- delay_compensation = st->delay_compensation;
- frame_size = compute_frame_size(pcm, analysis_frame_size,
- st->variable_duration, st->channels, st->Fs, st->bitrate_bps,
- delay_compensation, downmix_int, st->analysis.subframe_mem);
-
- ALLOC(in, frame_size*st->channels, float);
-
- for (i=0;i<frame_size*st->channels;i++)
- in[i] = (1.0f/32768)*pcm[i];
- ret = opus_encode_native(st, in, frame_size, data, max_data_bytes, 16,
- pcm, analysis_frame_size, 0, -2, st->channels, downmix_int, 0);
- RESTORE_STACK;
- return ret;
-}
-opus_int32 opus_encode_float(OpusEncoder *st, const float *pcm, int analysis_frame_size,
- unsigned char *data, opus_int32 out_data_bytes)
-{
- int frame_size;
- int delay_compensation;
- if (st->application == OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- delay_compensation = 0;
- else
- delay_compensation = st->delay_compensation;
- frame_size = compute_frame_size(pcm, analysis_frame_size,
- st->variable_duration, st->channels, st->Fs, st->bitrate_bps,
- delay_compensation, downmix_float, st->analysis.subframe_mem);
- return opus_encode_native(st, pcm, frame_size, data, out_data_bytes, 24,
- pcm, analysis_frame_size, 0, -2, st->channels, downmix_float, 1);
-}
-#endif
-
-
-int opus_encoder_ctl(OpusEncoder *st, int request, ...)
-{
- int ret;
- CELTEncoder *celt_enc;
- va_list ap;
-
- ret = OPUS_OK;
- va_start(ap, request);
-
- celt_enc = (CELTEncoder*)((char*)st+st->celt_enc_offset);
-
- switch (request)
- {
- case OPUS_SET_APPLICATION_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if ( (value != OPUS_APPLICATION_VOIP && value != OPUS_APPLICATION_AUDIO
- && value != OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- || (!st->first && st->application != value))
- {
- ret = OPUS_BAD_ARG;
- break;
- }
- st->application = value;
- }
- break;
- case OPUS_GET_APPLICATION_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->application;
- }
- break;
- case OPUS_SET_BITRATE_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value != OPUS_AUTO && value != OPUS_BITRATE_MAX)
- {
- if (value <= 0)
- goto bad_arg;
- else if (value <= 500)
- value = 500;
- else if (value > (opus_int32)300000*st->channels)
- value = (opus_int32)300000*st->channels;
- }
- st->user_bitrate_bps = value;
- }
- break;
- case OPUS_GET_BITRATE_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = user_bitrate_to_bitrate(st, st->prev_framesize, 1276);
- }
- break;
- case OPUS_SET_FORCE_CHANNELS_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if((value<1 || value>st->channels) && value != OPUS_AUTO)
- {
- goto bad_arg;
- }
- st->force_channels = value;
- }
- break;
- case OPUS_GET_FORCE_CHANNELS_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->force_channels;
- }
- break;
- case OPUS_SET_MAX_BANDWIDTH_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value < OPUS_BANDWIDTH_NARROWBAND || value > OPUS_BANDWIDTH_FULLBAND)
- {
- goto bad_arg;
- }
- st->max_bandwidth = value;
- if (st->max_bandwidth == OPUS_BANDWIDTH_NARROWBAND) {
- st->silk_mode.maxInternalSampleRate = 8000;
- } else if (st->max_bandwidth == OPUS_BANDWIDTH_MEDIUMBAND) {
- st->silk_mode.maxInternalSampleRate = 12000;
- } else {
- st->silk_mode.maxInternalSampleRate = 16000;
- }
- }
- break;
- case OPUS_GET_MAX_BANDWIDTH_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->max_bandwidth;
- }
- break;
- case OPUS_SET_BANDWIDTH_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if ((value < OPUS_BANDWIDTH_NARROWBAND || value > OPUS_BANDWIDTH_FULLBAND) && value != OPUS_AUTO)
- {
- goto bad_arg;
- }
- st->user_bandwidth = value;
- if (st->user_bandwidth == OPUS_BANDWIDTH_NARROWBAND) {
- st->silk_mode.maxInternalSampleRate = 8000;
- } else if (st->user_bandwidth == OPUS_BANDWIDTH_MEDIUMBAND) {
- st->silk_mode.maxInternalSampleRate = 12000;
- } else {
- st->silk_mode.maxInternalSampleRate = 16000;
- }
- }
- break;
- case OPUS_GET_BANDWIDTH_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->bandwidth;
- }
- break;
- case OPUS_SET_DTX_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if(value<0 || value>1)
- {
- goto bad_arg;
- }
- st->silk_mode.useDTX = value;
- }
- break;
- case OPUS_GET_DTX_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->silk_mode.useDTX;
- }
- break;
- case OPUS_SET_COMPLEXITY_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if(value<0 || value>10)
- {
- goto bad_arg;
- }
- st->silk_mode.complexity = value;
- celt_encoder_ctl(celt_enc, OPUS_SET_COMPLEXITY(value));
- }
- break;
- case OPUS_GET_COMPLEXITY_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->silk_mode.complexity;
- }
- break;
- case OPUS_SET_INBAND_FEC_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if(value<0 || value>1)
- {
- goto bad_arg;
- }
- st->silk_mode.useInBandFEC = value;
- }
- break;
- case OPUS_GET_INBAND_FEC_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->silk_mode.useInBandFEC;
- }
- break;
- case OPUS_SET_PACKET_LOSS_PERC_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value < 0 || value > 100)
- {
- goto bad_arg;
- }
- st->silk_mode.packetLossPercentage = value;
- celt_encoder_ctl(celt_enc, OPUS_SET_PACKET_LOSS_PERC(value));
- }
- break;
- case OPUS_GET_PACKET_LOSS_PERC_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->silk_mode.packetLossPercentage;
- }
- break;
- case OPUS_SET_VBR_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if(value<0 || value>1)
- {
- goto bad_arg;
- }
- st->use_vbr = value;
- st->silk_mode.useCBR = 1-value;
- }
- break;
- case OPUS_GET_VBR_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->use_vbr;
- }
- break;
- case OPUS_SET_VOICE_RATIO_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<-1 || value>100)
- {
- goto bad_arg;
- }
- st->voice_ratio = value;
- }
- break;
- case OPUS_GET_VOICE_RATIO_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->voice_ratio;
- }
- break;
- case OPUS_SET_VBR_CONSTRAINT_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if(value<0 || value>1)
- {
- goto bad_arg;
- }
- st->vbr_constraint = value;
- }
- break;
- case OPUS_GET_VBR_CONSTRAINT_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->vbr_constraint;
- }
- break;
- case OPUS_SET_SIGNAL_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if(value!=OPUS_AUTO && value!=OPUS_SIGNAL_VOICE && value!=OPUS_SIGNAL_MUSIC)
- {
- goto bad_arg;
- }
- st->signal_type = value;
- }
- break;
- case OPUS_GET_SIGNAL_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->signal_type;
- }
- break;
- case OPUS_GET_LOOKAHEAD_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->Fs/400;
- if (st->application != OPUS_APPLICATION_RESTRICTED_LOWDELAY)
- *value += st->delay_compensation;
- }
- break;
- case OPUS_GET_SAMPLE_RATE_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->Fs;
- }
- break;
- case OPUS_GET_FINAL_RANGE_REQUEST:
- {
- opus_uint32 *value = va_arg(ap, opus_uint32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->rangeFinal;
- }
- break;
- case OPUS_SET_LSB_DEPTH_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<8 || value>24)
- {
- goto bad_arg;
- }
- st->lsb_depth=value;
- }
- break;
- case OPUS_GET_LSB_DEPTH_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->lsb_depth;
- }
- break;
- case OPUS_SET_EXPERT_FRAME_DURATION_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value != OPUS_FRAMESIZE_ARG && value != OPUS_FRAMESIZE_2_5_MS &&
- value != OPUS_FRAMESIZE_5_MS && value != OPUS_FRAMESIZE_10_MS &&
- value != OPUS_FRAMESIZE_20_MS && value != OPUS_FRAMESIZE_40_MS &&
- value != OPUS_FRAMESIZE_60_MS && value != OPUS_FRAMESIZE_VARIABLE)
- {
- goto bad_arg;
- }
- st->variable_duration = value;
- celt_encoder_ctl(celt_enc, OPUS_SET_EXPERT_FRAME_DURATION(value));
- }
- break;
- case OPUS_GET_EXPERT_FRAME_DURATION_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->variable_duration;
- }
- break;
- case OPUS_SET_PREDICTION_DISABLED_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value > 1 || value < 0)
- goto bad_arg;
- st->silk_mode.reducedDependency = value;
- }
- break;
- case OPUS_GET_PREDICTION_DISABLED_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- goto bad_arg;
- *value = st->silk_mode.reducedDependency;
- }
- break;
- case OPUS_RESET_STATE:
- {
- void *silk_enc;
- silk_EncControlStruct dummy;
- char *start;
- silk_enc = (char*)st+st->silk_enc_offset;
-#ifndef DISABLE_FLOAT_API
- tonality_analysis_reset(&st->analysis);
-#endif
-
- start = (char*)&st->OPUS_ENCODER_RESET_START;
- OPUS_CLEAR(start, sizeof(OpusEncoder) - (start - (char*)st));
-
- celt_encoder_ctl(celt_enc, OPUS_RESET_STATE);
- silk_InitEncoder( silk_enc, st->arch, &dummy );
- st->stream_channels = st->channels;
- st->hybrid_stereo_width_Q14 = 1 << 14;
- st->prev_HB_gain = Q15ONE;
- st->first = 1;
- st->mode = MODE_HYBRID;
- st->bandwidth = OPUS_BANDWIDTH_FULLBAND;
- st->variable_HP_smth2_Q15 = silk_LSHIFT( silk_lin2log( VARIABLE_HP_MIN_CUTOFF_HZ ), 8 );
- }
- break;
- case OPUS_SET_FORCE_MODE_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if ((value < MODE_SILK_ONLY || value > MODE_CELT_ONLY) && value != OPUS_AUTO)
- {
- goto bad_arg;
- }
- st->user_forced_mode = value;
- }
- break;
- case OPUS_SET_LFE_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->lfe = value;
- ret = celt_encoder_ctl(celt_enc, OPUS_SET_LFE(value));
- }
- break;
- case OPUS_SET_ENERGY_MASK_REQUEST:
- {
- opus_val16 *value = va_arg(ap, opus_val16*);
- st->energy_masking = value;
- ret = celt_encoder_ctl(celt_enc, OPUS_SET_ENERGY_MASK(value));
- }
- break;
-
- case CELT_GET_MODE_REQUEST:
- {
- const CELTMode ** value = va_arg(ap, const CELTMode**);
- if (!value)
- {
- goto bad_arg;
- }
- ret = celt_encoder_ctl(celt_enc, CELT_GET_MODE(value));
- }
- break;
- default:
- /* fprintf(stderr, "unknown opus_encoder_ctl() request: %d", request);*/
- ret = OPUS_UNIMPLEMENTED;
- break;
- }
- va_end(ap);
- return ret;
-bad_arg:
- va_end(ap);
- return OPUS_BAD_ARG;
-}
-
-void opus_encoder_destroy(OpusEncoder *st)
-{
- opus_free(st);
-}
diff --git a/thirdparty/opus/opus_multistream.c b/thirdparty/opus/opus_multistream.c
deleted file mode 100644
index 09c3639b7f..0000000000
--- a/thirdparty/opus/opus_multistream.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus_multistream.h"
-#include "opus.h"
-#include "opus_private.h"
-#include "stack_alloc.h"
-#include <stdarg.h>
-#include "float_cast.h"
-#include "os_support.h"
-
-
-int validate_layout(const ChannelLayout *layout)
-{
- int i, max_channel;
-
- max_channel = layout->nb_streams+layout->nb_coupled_streams;
- if (max_channel>255)
- return 0;
- for (i=0;i<layout->nb_channels;i++)
- {
- if (layout->mapping[i] >= max_channel && layout->mapping[i] != 255)
- return 0;
- }
- return 1;
-}
-
-
-int get_left_channel(const ChannelLayout *layout, int stream_id, int prev)
-{
- int i;
- i = (prev<0) ? 0 : prev+1;
- for (;i<layout->nb_channels;i++)
- {
- if (layout->mapping[i]==stream_id*2)
- return i;
- }
- return -1;
-}
-
-int get_right_channel(const ChannelLayout *layout, int stream_id, int prev)
-{
- int i;
- i = (prev<0) ? 0 : prev+1;
- for (;i<layout->nb_channels;i++)
- {
- if (layout->mapping[i]==stream_id*2+1)
- return i;
- }
- return -1;
-}
-
-int get_mono_channel(const ChannelLayout *layout, int stream_id, int prev)
-{
- int i;
- i = (prev<0) ? 0 : prev+1;
- for (;i<layout->nb_channels;i++)
- {
- if (layout->mapping[i]==stream_id+layout->nb_coupled_streams)
- return i;
- }
- return -1;
-}
-
diff --git a/thirdparty/opus/opus_multistream_decoder.c b/thirdparty/opus/opus_multistream_decoder.c
deleted file mode 100644
index b95eaa6eac..0000000000
--- a/thirdparty/opus/opus_multistream_decoder.c
+++ /dev/null
@@ -1,537 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus_multistream.h"
-#include "opus.h"
-#include "opus_private.h"
-#include "stack_alloc.h"
-#include <stdarg.h>
-#include "float_cast.h"
-#include "os_support.h"
-
-struct OpusMSDecoder {
- ChannelLayout layout;
- /* Decoder states go here */
-};
-
-
-
-
-/* DECODER */
-
-opus_int32 opus_multistream_decoder_get_size(int nb_streams, int nb_coupled_streams)
-{
- int coupled_size;
- int mono_size;
-
- if(nb_streams<1||nb_coupled_streams>nb_streams||nb_coupled_streams<0)return 0;
- coupled_size = opus_decoder_get_size(2);
- mono_size = opus_decoder_get_size(1);
- return align(sizeof(OpusMSDecoder))
- + nb_coupled_streams * align(coupled_size)
- + (nb_streams-nb_coupled_streams) * align(mono_size);
-}
-
-int opus_multistream_decoder_init(
- OpusMSDecoder *st,
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping
-)
-{
- int coupled_size;
- int mono_size;
- int i, ret;
- char *ptr;
-
- if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
- (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams))
- return OPUS_BAD_ARG;
-
- st->layout.nb_channels = channels;
- st->layout.nb_streams = streams;
- st->layout.nb_coupled_streams = coupled_streams;
-
- for (i=0;i<st->layout.nb_channels;i++)
- st->layout.mapping[i] = mapping[i];
- if (!validate_layout(&st->layout))
- return OPUS_BAD_ARG;
-
- ptr = (char*)st + align(sizeof(OpusMSDecoder));
- coupled_size = opus_decoder_get_size(2);
- mono_size = opus_decoder_get_size(1);
-
- for (i=0;i<st->layout.nb_coupled_streams;i++)
- {
- ret=opus_decoder_init((OpusDecoder*)ptr, Fs, 2);
- if(ret!=OPUS_OK)return ret;
- ptr += align(coupled_size);
- }
- for (;i<st->layout.nb_streams;i++)
- {
- ret=opus_decoder_init((OpusDecoder*)ptr, Fs, 1);
- if(ret!=OPUS_OK)return ret;
- ptr += align(mono_size);
- }
- return OPUS_OK;
-}
-
-
-OpusMSDecoder *opus_multistream_decoder_create(
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping,
- int *error
-)
-{
- int ret;
- OpusMSDecoder *st;
- if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
- (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams))
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
- st = (OpusMSDecoder *)opus_alloc(opus_multistream_decoder_get_size(streams, coupled_streams));
- if (st==NULL)
- {
- if (error)
- *error = OPUS_ALLOC_FAIL;
- return NULL;
- }
- ret = opus_multistream_decoder_init(st, Fs, channels, streams, coupled_streams, mapping);
- if (error)
- *error = ret;
- if (ret != OPUS_OK)
- {
- opus_free(st);
- st = NULL;
- }
- return st;
-}
-
-typedef void (*opus_copy_channel_out_func)(
- void *dst,
- int dst_stride,
- int dst_channel,
- const opus_val16 *src,
- int src_stride,
- int frame_size
-);
-
-static int opus_multistream_packet_validate(const unsigned char *data,
- opus_int32 len, int nb_streams, opus_int32 Fs)
-{
- int s;
- int count;
- unsigned char toc;
- opus_int16 size[48];
- int samples=0;
- opus_int32 packet_offset;
-
- for (s=0;s<nb_streams;s++)
- {
- int tmp_samples;
- if (len<=0)
- return OPUS_INVALID_PACKET;
- count = opus_packet_parse_impl(data, len, s!=nb_streams-1, &toc, NULL,
- size, NULL, &packet_offset);
- if (count<0)
- return count;
- tmp_samples = opus_packet_get_nb_samples(data, packet_offset, Fs);
- if (s!=0 && samples != tmp_samples)
- return OPUS_INVALID_PACKET;
- samples = tmp_samples;
- data += packet_offset;
- len -= packet_offset;
- }
- return samples;
-}
-
-static int opus_multistream_decode_native(
- OpusMSDecoder *st,
- const unsigned char *data,
- opus_int32 len,
- void *pcm,
- opus_copy_channel_out_func copy_channel_out,
- int frame_size,
- int decode_fec,
- int soft_clip
-)
-{
- opus_int32 Fs;
- int coupled_size;
- int mono_size;
- int s, c;
- char *ptr;
- int do_plc=0;
- VARDECL(opus_val16, buf);
- ALLOC_STACK;
-
- /* Limit frame_size to avoid excessive stack allocations. */
- opus_multistream_decoder_ctl(st, OPUS_GET_SAMPLE_RATE(&Fs));
- frame_size = IMIN(frame_size, Fs/25*3);
- ALLOC(buf, 2*frame_size, opus_val16);
- ptr = (char*)st + align(sizeof(OpusMSDecoder));
- coupled_size = opus_decoder_get_size(2);
- mono_size = opus_decoder_get_size(1);
-
- if (len==0)
- do_plc = 1;
- if (len < 0)
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
- if (!do_plc && len < 2*st->layout.nb_streams-1)
- {
- RESTORE_STACK;
- return OPUS_INVALID_PACKET;
- }
- if (!do_plc)
- {
- int ret = opus_multistream_packet_validate(data, len, st->layout.nb_streams, Fs);
- if (ret < 0)
- {
- RESTORE_STACK;
- return ret;
- } else if (ret > frame_size)
- {
- RESTORE_STACK;
- return OPUS_BUFFER_TOO_SMALL;
- }
- }
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusDecoder *dec;
- int packet_offset, ret;
-
- dec = (OpusDecoder*)ptr;
- ptr += (s < st->layout.nb_coupled_streams) ? align(coupled_size) : align(mono_size);
-
- if (!do_plc && len<=0)
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- packet_offset = 0;
- ret = opus_decode_native(dec, data, len, buf, frame_size, decode_fec, s!=st->layout.nb_streams-1, &packet_offset, soft_clip);
- data += packet_offset;
- len -= packet_offset;
- if (ret <= 0)
- {
- RESTORE_STACK;
- return ret;
- }
- frame_size = ret;
- if (s < st->layout.nb_coupled_streams)
- {
- int chan, prev;
- prev = -1;
- /* Copy "left" audio to the channel(s) where it belongs */
- while ( (chan = get_left_channel(&st->layout, s, prev)) != -1)
- {
- (*copy_channel_out)(pcm, st->layout.nb_channels, chan,
- buf, 2, frame_size);
- prev = chan;
- }
- prev = -1;
- /* Copy "right" audio to the channel(s) where it belongs */
- while ( (chan = get_right_channel(&st->layout, s, prev)) != -1)
- {
- (*copy_channel_out)(pcm, st->layout.nb_channels, chan,
- buf+1, 2, frame_size);
- prev = chan;
- }
- } else {
- int chan, prev;
- prev = -1;
- /* Copy audio to the channel(s) where it belongs */
- while ( (chan = get_mono_channel(&st->layout, s, prev)) != -1)
- {
- (*copy_channel_out)(pcm, st->layout.nb_channels, chan,
- buf, 1, frame_size);
- prev = chan;
- }
- }
- }
- /* Handle muted channels */
- for (c=0;c<st->layout.nb_channels;c++)
- {
- if (st->layout.mapping[c] == 255)
- {
- (*copy_channel_out)(pcm, st->layout.nb_channels, c,
- NULL, 0, frame_size);
- }
- }
- RESTORE_STACK;
- return frame_size;
-}
-
-#if !defined(DISABLE_FLOAT_API)
-static void opus_copy_channel_out_float(
- void *dst,
- int dst_stride,
- int dst_channel,
- const opus_val16 *src,
- int src_stride,
- int frame_size
-)
-{
- float *float_dst;
- opus_int32 i;
- float_dst = (float*)dst;
- if (src != NULL)
- {
- for (i=0;i<frame_size;i++)
-#if defined(FIXED_POINT)
- float_dst[i*dst_stride+dst_channel] = (1/32768.f)*src[i*src_stride];
-#else
- float_dst[i*dst_stride+dst_channel] = src[i*src_stride];
-#endif
- }
- else
- {
- for (i=0;i<frame_size;i++)
- float_dst[i*dst_stride+dst_channel] = 0;
- }
-}
-#endif
-
-static void opus_copy_channel_out_short(
- void *dst,
- int dst_stride,
- int dst_channel,
- const opus_val16 *src,
- int src_stride,
- int frame_size
-)
-{
- opus_int16 *short_dst;
- opus_int32 i;
- short_dst = (opus_int16*)dst;
- if (src != NULL)
- {
- for (i=0;i<frame_size;i++)
-#if defined(FIXED_POINT)
- short_dst[i*dst_stride+dst_channel] = src[i*src_stride];
-#else
- short_dst[i*dst_stride+dst_channel] = FLOAT2INT16(src[i*src_stride]);
-#endif
- }
- else
- {
- for (i=0;i<frame_size;i++)
- short_dst[i*dst_stride+dst_channel] = 0;
- }
-}
-
-
-
-#ifdef FIXED_POINT
-int opus_multistream_decode(
- OpusMSDecoder *st,
- const unsigned char *data,
- opus_int32 len,
- opus_int16 *pcm,
- int frame_size,
- int decode_fec
-)
-{
- return opus_multistream_decode_native(st, data, len,
- pcm, opus_copy_channel_out_short, frame_size, decode_fec, 0);
-}
-
-#ifndef DISABLE_FLOAT_API
-int opus_multistream_decode_float(OpusMSDecoder *st, const unsigned char *data,
- opus_int32 len, float *pcm, int frame_size, int decode_fec)
-{
- return opus_multistream_decode_native(st, data, len,
- pcm, opus_copy_channel_out_float, frame_size, decode_fec, 0);
-}
-#endif
-
-#else
-
-int opus_multistream_decode(OpusMSDecoder *st, const unsigned char *data,
- opus_int32 len, opus_int16 *pcm, int frame_size, int decode_fec)
-{
- return opus_multistream_decode_native(st, data, len,
- pcm, opus_copy_channel_out_short, frame_size, decode_fec, 1);
-}
-
-int opus_multistream_decode_float(
- OpusMSDecoder *st,
- const unsigned char *data,
- opus_int32 len,
- float *pcm,
- int frame_size,
- int decode_fec
-)
-{
- return opus_multistream_decode_native(st, data, len,
- pcm, opus_copy_channel_out_float, frame_size, decode_fec, 0);
-}
-#endif
-
-int opus_multistream_decoder_ctl(OpusMSDecoder *st, int request, ...)
-{
- va_list ap;
- int coupled_size, mono_size;
- char *ptr;
- int ret = OPUS_OK;
-
- va_start(ap, request);
-
- coupled_size = opus_decoder_get_size(2);
- mono_size = opus_decoder_get_size(1);
- ptr = (char*)st + align(sizeof(OpusMSDecoder));
- switch (request)
- {
- case OPUS_GET_BANDWIDTH_REQUEST:
- case OPUS_GET_SAMPLE_RATE_REQUEST:
- case OPUS_GET_GAIN_REQUEST:
- case OPUS_GET_LAST_PACKET_DURATION_REQUEST:
- {
- OpusDecoder *dec;
- /* For int32* GET params, just query the first stream */
- opus_int32 *value = va_arg(ap, opus_int32*);
- dec = (OpusDecoder*)ptr;
- ret = opus_decoder_ctl(dec, request, value);
- }
- break;
- case OPUS_GET_FINAL_RANGE_REQUEST:
- {
- int s;
- opus_uint32 *value = va_arg(ap, opus_uint32*);
- opus_uint32 tmp;
- if (!value)
- {
- goto bad_arg;
- }
- *value = 0;
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusDecoder *dec;
- dec = (OpusDecoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- ret = opus_decoder_ctl(dec, request, &tmp);
- if (ret != OPUS_OK) break;
- *value ^= tmp;
- }
- }
- break;
- case OPUS_RESET_STATE:
- {
- int s;
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusDecoder *dec;
-
- dec = (OpusDecoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- ret = opus_decoder_ctl(dec, OPUS_RESET_STATE);
- if (ret != OPUS_OK)
- break;
- }
- }
- break;
- case OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST:
- {
- int s;
- opus_int32 stream_id;
- OpusDecoder **value;
- stream_id = va_arg(ap, opus_int32);
- if (stream_id<0 || stream_id >= st->layout.nb_streams)
- ret = OPUS_BAD_ARG;
- value = va_arg(ap, OpusDecoder**);
- if (!value)
- {
- goto bad_arg;
- }
- for (s=0;s<stream_id;s++)
- {
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- }
- *value = (OpusDecoder*)ptr;
- }
- break;
- case OPUS_SET_GAIN_REQUEST:
- {
- int s;
- /* This works for int32 params */
- opus_int32 value = va_arg(ap, opus_int32);
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusDecoder *dec;
-
- dec = (OpusDecoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- ret = opus_decoder_ctl(dec, request, value);
- if (ret != OPUS_OK)
- break;
- }
- }
- break;
- default:
- ret = OPUS_UNIMPLEMENTED;
- break;
- }
-
- va_end(ap);
- return ret;
-bad_arg:
- va_end(ap);
- return OPUS_BAD_ARG;
-}
-
-
-void opus_multistream_decoder_destroy(OpusMSDecoder *st)
-{
- opus_free(st);
-}
diff --git a/thirdparty/opus/opus_multistream_encoder.c b/thirdparty/opus/opus_multistream_encoder.c
deleted file mode 100644
index 1698223a16..0000000000
--- a/thirdparty/opus/opus_multistream_encoder.c
+++ /dev/null
@@ -1,1351 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus_multistream.h"
-#include "opus.h"
-#include "opus_private.h"
-#include "stack_alloc.h"
-#include <stdarg.h>
-#include "float_cast.h"
-#include "os_support.h"
-#include "mathops.h"
-#include "mdct.h"
-#include "modes.h"
-#include "bands.h"
-#include "quant_bands.h"
-#include "pitch.h"
-
-typedef struct {
- int nb_streams;
- int nb_coupled_streams;
- unsigned char mapping[8];
-} VorbisLayout;
-
-/* Index is nb_channel-1*/
-static const VorbisLayout vorbis_mappings[8] = {
- {1, 0, {0}}, /* 1: mono */
- {1, 1, {0, 1}}, /* 2: stereo */
- {2, 1, {0, 2, 1}}, /* 3: 1-d surround */
- {2, 2, {0, 1, 2, 3}}, /* 4: quadraphonic surround */
- {3, 2, {0, 4, 1, 2, 3}}, /* 5: 5-channel surround */
- {4, 2, {0, 4, 1, 2, 3, 5}}, /* 6: 5.1 surround */
- {4, 3, {0, 4, 1, 2, 3, 5, 6}}, /* 7: 6.1 surround */
- {5, 3, {0, 6, 1, 2, 3, 4, 5, 7}}, /* 8: 7.1 surround */
-};
-
-typedef void (*opus_copy_channel_in_func)(
- opus_val16 *dst,
- int dst_stride,
- const void *src,
- int src_stride,
- int src_channel,
- int frame_size
-);
-
-typedef enum {
- MAPPING_TYPE_NONE,
- MAPPING_TYPE_SURROUND
-#ifdef ENABLE_EXPERIMENTAL_AMBISONICS
- , /* Do not include comma at end of enumerator list */
- MAPPING_TYPE_AMBISONICS
-#endif
-} MappingType;
-
-struct OpusMSEncoder {
- ChannelLayout layout;
- int arch;
- int lfe_stream;
- int application;
- int variable_duration;
- MappingType mapping_type;
- opus_int32 bitrate_bps;
- float subframe_mem[3];
- /* Encoder states go here */
- /* then opus_val32 window_mem[channels*120]; */
- /* then opus_val32 preemph_mem[channels]; */
-};
-
-static opus_val32 *ms_get_preemph_mem(OpusMSEncoder *st)
-{
- int s;
- char *ptr;
- int coupled_size, mono_size;
-
- coupled_size = opus_encoder_get_size(2);
- mono_size = opus_encoder_get_size(1);
- ptr = (char*)st + align(sizeof(OpusMSEncoder));
- for (s=0;s<st->layout.nb_streams;s++)
- {
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- }
- /* void* cast avoids clang -Wcast-align warning */
- return (opus_val32*)(void*)(ptr+st->layout.nb_channels*120*sizeof(opus_val32));
-}
-
-static opus_val32 *ms_get_window_mem(OpusMSEncoder *st)
-{
- int s;
- char *ptr;
- int coupled_size, mono_size;
-
- coupled_size = opus_encoder_get_size(2);
- mono_size = opus_encoder_get_size(1);
- ptr = (char*)st + align(sizeof(OpusMSEncoder));
- for (s=0;s<st->layout.nb_streams;s++)
- {
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- }
- /* void* cast avoids clang -Wcast-align warning */
- return (opus_val32*)(void*)ptr;
-}
-
-static int validate_encoder_layout(const ChannelLayout *layout)
-{
- int s;
- for (s=0;s<layout->nb_streams;s++)
- {
- if (s < layout->nb_coupled_streams)
- {
- if (get_left_channel(layout, s, -1)==-1)
- return 0;
- if (get_right_channel(layout, s, -1)==-1)
- return 0;
- } else {
- if (get_mono_channel(layout, s, -1)==-1)
- return 0;
- }
- }
- return 1;
-}
-
-static void channel_pos(int channels, int pos[8])
-{
- /* Position in the mix: 0 don't mix, 1: left, 2: center, 3:right */
- if (channels==4)
- {
- pos[0]=1;
- pos[1]=3;
- pos[2]=1;
- pos[3]=3;
- } else if (channels==3||channels==5||channels==6)
- {
- pos[0]=1;
- pos[1]=2;
- pos[2]=3;
- pos[3]=1;
- pos[4]=3;
- pos[5]=0;
- } else if (channels==7)
- {
- pos[0]=1;
- pos[1]=2;
- pos[2]=3;
- pos[3]=1;
- pos[4]=3;
- pos[5]=2;
- pos[6]=0;
- } else if (channels==8)
- {
- pos[0]=1;
- pos[1]=2;
- pos[2]=3;
- pos[3]=1;
- pos[4]=3;
- pos[5]=1;
- pos[6]=3;
- pos[7]=0;
- }
-}
-
-#if 1
-/* Computes a rough approximation of log2(2^a + 2^b) */
-static opus_val16 logSum(opus_val16 a, opus_val16 b)
-{
- opus_val16 max;
- opus_val32 diff;
- opus_val16 frac;
- static const opus_val16 diff_table[17] = {
- QCONST16(0.5000000f, DB_SHIFT), QCONST16(0.2924813f, DB_SHIFT), QCONST16(0.1609640f, DB_SHIFT), QCONST16(0.0849625f, DB_SHIFT),
- QCONST16(0.0437314f, DB_SHIFT), QCONST16(0.0221971f, DB_SHIFT), QCONST16(0.0111839f, DB_SHIFT), QCONST16(0.0056136f, DB_SHIFT),
- QCONST16(0.0028123f, DB_SHIFT)
- };
- int low;
- if (a>b)
- {
- max = a;
- diff = SUB32(EXTEND32(a),EXTEND32(b));
- } else {
- max = b;
- diff = SUB32(EXTEND32(b),EXTEND32(a));
- }
- if (!(diff < QCONST16(8.f, DB_SHIFT))) /* inverted to catch NaNs */
- return max;
-#ifdef FIXED_POINT
- low = SHR32(diff, DB_SHIFT-1);
- frac = SHL16(diff - SHL16(low, DB_SHIFT-1), 16-DB_SHIFT);
-#else
- low = (int)floor(2*diff);
- frac = 2*diff - low;
-#endif
- return max + diff_table[low] + MULT16_16_Q15(frac, SUB16(diff_table[low+1], diff_table[low]));
-}
-#else
-opus_val16 logSum(opus_val16 a, opus_val16 b)
-{
- return log2(pow(4, a)+ pow(4, b))/2;
-}
-#endif
-
-void surround_analysis(const CELTMode *celt_mode, const void *pcm, opus_val16 *bandLogE, opus_val32 *mem, opus_val32 *preemph_mem,
- int len, int overlap, int channels, int rate, opus_copy_channel_in_func copy_channel_in, int arch
-)
-{
- int c;
- int i;
- int LM;
- int pos[8] = {0};
- int upsample;
- int frame_size;
- opus_val16 channel_offset;
- opus_val32 bandE[21];
- opus_val16 maskLogE[3][21];
- VARDECL(opus_val32, in);
- VARDECL(opus_val16, x);
- VARDECL(opus_val32, freq);
- SAVE_STACK;
-
- upsample = resampling_factor(rate);
- frame_size = len*upsample;
-
- /* LM = log2(frame_size / 120) */
- for (LM=0;LM<celt_mode->maxLM;LM++)
- if (celt_mode->shortMdctSize<<LM==frame_size)
- break;
-
- ALLOC(in, frame_size+overlap, opus_val32);
- ALLOC(x, len, opus_val16);
- ALLOC(freq, frame_size, opus_val32);
-
- channel_pos(channels, pos);
-
- for (c=0;c<3;c++)
- for (i=0;i<21;i++)
- maskLogE[c][i] = -QCONST16(28.f, DB_SHIFT);
-
- for (c=0;c<channels;c++)
- {
- OPUS_COPY(in, mem+c*overlap, overlap);
- (*copy_channel_in)(x, 1, pcm, channels, c, len);
- celt_preemphasis(x, in+overlap, frame_size, 1, upsample, celt_mode->preemph, preemph_mem+c, 0);
-#ifndef FIXED_POINT
- {
- opus_val32 sum;
- sum = celt_inner_prod(in, in, frame_size+overlap, 0);
- /* This should filter out both NaNs and ridiculous signals that could
- cause NaNs further down. */
- if (!(sum < 1e18f) || celt_isnan(sum))
- {
- OPUS_CLEAR(in, frame_size+overlap);
- preemph_mem[c] = 0;
- }
- }
-#endif
- clt_mdct_forward(&celt_mode->mdct, in, freq, celt_mode->window,
- overlap, celt_mode->maxLM-LM, 1, arch);
- if (upsample != 1)
- {
- int bound = len;
- for (i=0;i<bound;i++)
- freq[i] *= upsample;
- for (;i<frame_size;i++)
- freq[i] = 0;
- }
-
- compute_band_energies(celt_mode, freq, bandE, 21, 1, LM);
- amp2Log2(celt_mode, 21, 21, bandE, bandLogE+21*c, 1);
- /* Apply spreading function with -6 dB/band going up and -12 dB/band going down. */
- for (i=1;i<21;i++)
- bandLogE[21*c+i] = MAX16(bandLogE[21*c+i], bandLogE[21*c+i-1]-QCONST16(1.f, DB_SHIFT));
- for (i=19;i>=0;i--)
- bandLogE[21*c+i] = MAX16(bandLogE[21*c+i], bandLogE[21*c+i+1]-QCONST16(2.f, DB_SHIFT));
- if (pos[c]==1)
- {
- for (i=0;i<21;i++)
- maskLogE[0][i] = logSum(maskLogE[0][i], bandLogE[21*c+i]);
- } else if (pos[c]==3)
- {
- for (i=0;i<21;i++)
- maskLogE[2][i] = logSum(maskLogE[2][i], bandLogE[21*c+i]);
- } else if (pos[c]==2)
- {
- for (i=0;i<21;i++)
- {
- maskLogE[0][i] = logSum(maskLogE[0][i], bandLogE[21*c+i]-QCONST16(.5f, DB_SHIFT));
- maskLogE[2][i] = logSum(maskLogE[2][i], bandLogE[21*c+i]-QCONST16(.5f, DB_SHIFT));
- }
- }
-#if 0
- for (i=0;i<21;i++)
- printf("%f ", bandLogE[21*c+i]);
- float sum=0;
- for (i=0;i<21;i++)
- sum += bandLogE[21*c+i];
- printf("%f ", sum/21);
-#endif
- OPUS_COPY(mem+c*overlap, in+frame_size, overlap);
- }
- for (i=0;i<21;i++)
- maskLogE[1][i] = MIN32(maskLogE[0][i],maskLogE[2][i]);
- channel_offset = HALF16(celt_log2(QCONST32(2.f,14)/(channels-1)));
- for (c=0;c<3;c++)
- for (i=0;i<21;i++)
- maskLogE[c][i] += channel_offset;
-#if 0
- for (c=0;c<3;c++)
- {
- for (i=0;i<21;i++)
- printf("%f ", maskLogE[c][i]);
- }
-#endif
- for (c=0;c<channels;c++)
- {
- opus_val16 *mask;
- if (pos[c]!=0)
- {
- mask = &maskLogE[pos[c]-1][0];
- for (i=0;i<21;i++)
- bandLogE[21*c+i] = bandLogE[21*c+i] - mask[i];
- } else {
- for (i=0;i<21;i++)
- bandLogE[21*c+i] = 0;
- }
-#if 0
- for (i=0;i<21;i++)
- printf("%f ", bandLogE[21*c+i]);
- printf("\n");
-#endif
-#if 0
- float sum=0;
- for (i=0;i<21;i++)
- sum += bandLogE[21*c+i];
- printf("%f ", sum/(float)QCONST32(21.f, DB_SHIFT));
- printf("\n");
-#endif
- }
- RESTORE_STACK;
-}
-
-opus_int32 opus_multistream_encoder_get_size(int nb_streams, int nb_coupled_streams)
-{
- int coupled_size;
- int mono_size;
-
- if(nb_streams<1||nb_coupled_streams>nb_streams||nb_coupled_streams<0)return 0;
- coupled_size = opus_encoder_get_size(2);
- mono_size = opus_encoder_get_size(1);
- return align(sizeof(OpusMSEncoder))
- + nb_coupled_streams * align(coupled_size)
- + (nb_streams-nb_coupled_streams) * align(mono_size);
-}
-
-opus_int32 opus_multistream_surround_encoder_get_size(int channels, int mapping_family)
-{
- int nb_streams;
- int nb_coupled_streams;
- opus_int32 size;
-
- if (mapping_family==0)
- {
- if (channels==1)
- {
- nb_streams=1;
- nb_coupled_streams=0;
- } else if (channels==2)
- {
- nb_streams=1;
- nb_coupled_streams=1;
- } else
- return 0;
- } else if (mapping_family==1 && channels<=8 && channels>=1)
- {
- nb_streams=vorbis_mappings[channels-1].nb_streams;
- nb_coupled_streams=vorbis_mappings[channels-1].nb_coupled_streams;
- } else if (mapping_family==255)
- {
- nb_streams=channels;
- nb_coupled_streams=0;
-#ifdef ENABLE_EXPERIMENTAL_AMBISONICS
- } else if (mapping_family==254)
- {
- nb_streams=channels;
- nb_coupled_streams=0;
-#endif
- } else
- return 0;
- size = opus_multistream_encoder_get_size(nb_streams, nb_coupled_streams);
- if (channels>2)
- {
- size += channels*(120*sizeof(opus_val32) + sizeof(opus_val32));
- }
- return size;
-}
-
-static int opus_multistream_encoder_init_impl(
- OpusMSEncoder *st,
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping,
- int application,
- MappingType mapping_type
-)
-{
- int coupled_size;
- int mono_size;
- int i, ret;
- char *ptr;
-
- if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
- (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams))
- return OPUS_BAD_ARG;
-
- st->arch = opus_select_arch();
- st->layout.nb_channels = channels;
- st->layout.nb_streams = streams;
- st->layout.nb_coupled_streams = coupled_streams;
- st->subframe_mem[0]=st->subframe_mem[1]=st->subframe_mem[2]=0;
- if (mapping_type != MAPPING_TYPE_SURROUND)
- st->lfe_stream = -1;
- st->bitrate_bps = OPUS_AUTO;
- st->application = application;
- st->variable_duration = OPUS_FRAMESIZE_ARG;
- for (i=0;i<st->layout.nb_channels;i++)
- st->layout.mapping[i] = mapping[i];
- if (!validate_layout(&st->layout) || !validate_encoder_layout(&st->layout))
- return OPUS_BAD_ARG;
- ptr = (char*)st + align(sizeof(OpusMSEncoder));
- coupled_size = opus_encoder_get_size(2);
- mono_size = opus_encoder_get_size(1);
-
- for (i=0;i<st->layout.nb_coupled_streams;i++)
- {
- ret = opus_encoder_init((OpusEncoder*)ptr, Fs, 2, application);
- if(ret!=OPUS_OK)return ret;
- if (i==st->lfe_stream)
- opus_encoder_ctl((OpusEncoder*)ptr, OPUS_SET_LFE(1));
- ptr += align(coupled_size);
- }
- for (;i<st->layout.nb_streams;i++)
- {
- ret = opus_encoder_init((OpusEncoder*)ptr, Fs, 1, application);
- if (i==st->lfe_stream)
- opus_encoder_ctl((OpusEncoder*)ptr, OPUS_SET_LFE(1));
- if(ret!=OPUS_OK)return ret;
- ptr += align(mono_size);
- }
- if (mapping_type == MAPPING_TYPE_SURROUND)
- {
- OPUS_CLEAR(ms_get_preemph_mem(st), channels);
- OPUS_CLEAR(ms_get_window_mem(st), channels*120);
- }
- st->mapping_type = mapping_type;
- return OPUS_OK;
-}
-
-int opus_multistream_encoder_init(
- OpusMSEncoder *st,
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping,
- int application
-)
-{
- return opus_multistream_encoder_init_impl(st, Fs, channels, streams,
- coupled_streams, mapping,
- application, MAPPING_TYPE_NONE);
-}
-
-int opus_multistream_surround_encoder_init(
- OpusMSEncoder *st,
- opus_int32 Fs,
- int channels,
- int mapping_family,
- int *streams,
- int *coupled_streams,
- unsigned char *mapping,
- int application
-)
-{
- MappingType mapping_type;
-
- if ((channels>255) || (channels<1))
- return OPUS_BAD_ARG;
- st->lfe_stream = -1;
- if (mapping_family==0)
- {
- if (channels==1)
- {
- *streams=1;
- *coupled_streams=0;
- mapping[0]=0;
- } else if (channels==2)
- {
- *streams=1;
- *coupled_streams=1;
- mapping[0]=0;
- mapping[1]=1;
- } else
- return OPUS_UNIMPLEMENTED;
- } else if (mapping_family==1 && channels<=8 && channels>=1)
- {
- int i;
- *streams=vorbis_mappings[channels-1].nb_streams;
- *coupled_streams=vorbis_mappings[channels-1].nb_coupled_streams;
- for (i=0;i<channels;i++)
- mapping[i] = vorbis_mappings[channels-1].mapping[i];
- if (channels>=6)
- st->lfe_stream = *streams-1;
- } else if (mapping_family==255)
- {
- int i;
- *streams=channels;
- *coupled_streams=0;
- for(i=0;i<channels;i++)
- mapping[i] = i;
-#ifdef ENABLE_EXPERIMENTAL_AMBISONICS
- } else if (mapping_family==254)
- {
- int i;
- *streams=channels;
- *coupled_streams=0;
- for(i=0;i<channels;i++)
- mapping[i] = i;
-#endif
- } else
- return OPUS_UNIMPLEMENTED;
-
- if (channels>2 && mapping_family==1) {
- mapping_type = MAPPING_TYPE_SURROUND;
-#ifdef ENABLE_EXPERIMENTAL_AMBISONICS
- } else if (mapping_family==254)
- {
- mapping_type = MAPPING_TYPE_AMBISONICS;
-#endif
- } else
- {
- mapping_type = MAPPING_TYPE_NONE;
- }
- return opus_multistream_encoder_init_impl(st, Fs, channels, *streams,
- *coupled_streams, mapping,
- application, mapping_type);
-}
-
-OpusMSEncoder *opus_multistream_encoder_create(
- opus_int32 Fs,
- int channels,
- int streams,
- int coupled_streams,
- const unsigned char *mapping,
- int application,
- int *error
-)
-{
- int ret;
- OpusMSEncoder *st;
- if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
- (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams))
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
- st = (OpusMSEncoder *)opus_alloc(opus_multistream_encoder_get_size(streams, coupled_streams));
- if (st==NULL)
- {
- if (error)
- *error = OPUS_ALLOC_FAIL;
- return NULL;
- }
- ret = opus_multistream_encoder_init(st, Fs, channels, streams, coupled_streams, mapping, application);
- if (ret != OPUS_OK)
- {
- opus_free(st);
- st = NULL;
- }
- if (error)
- *error = ret;
- return st;
-}
-
-OpusMSEncoder *opus_multistream_surround_encoder_create(
- opus_int32 Fs,
- int channels,
- int mapping_family,
- int *streams,
- int *coupled_streams,
- unsigned char *mapping,
- int application,
- int *error
-)
-{
- int ret;
- opus_int32 size;
- OpusMSEncoder *st;
- if ((channels>255) || (channels<1))
- {
- if (error)
- *error = OPUS_BAD_ARG;
- return NULL;
- }
- size = opus_multistream_surround_encoder_get_size(channels, mapping_family);
- if (!size)
- {
- if (error)
- *error = OPUS_UNIMPLEMENTED;
- return NULL;
- }
- st = (OpusMSEncoder *)opus_alloc(size);
- if (st==NULL)
- {
- if (error)
- *error = OPUS_ALLOC_FAIL;
- return NULL;
- }
- ret = opus_multistream_surround_encoder_init(st, Fs, channels, mapping_family, streams, coupled_streams, mapping, application);
- if (ret != OPUS_OK)
- {
- opus_free(st);
- st = NULL;
- }
- if (error)
- *error = ret;
- return st;
-}
-
-static void surround_rate_allocation(
- OpusMSEncoder *st,
- opus_int32 *rate,
- int frame_size,
- opus_int32 Fs
- )
-{
- int i;
- opus_int32 channel_rate;
- int stream_offset;
- int lfe_offset;
- int coupled_ratio; /* Q8 */
- int lfe_ratio; /* Q8 */
-
- if (st->bitrate_bps > st->layout.nb_channels*40000)
- stream_offset = 20000;
- else
- stream_offset = st->bitrate_bps/st->layout.nb_channels/2;
- stream_offset += 60*(Fs/frame_size-50);
- /* We start by giving each stream (coupled or uncoupled) the same bitrate.
- This models the main saving of coupled channels over uncoupled. */
- /* The LFE stream is an exception to the above and gets fewer bits. */
- lfe_offset = 3500 + 60*(Fs/frame_size-50);
- /* Coupled streams get twice the mono rate after the first 20 kb/s. */
- coupled_ratio = 512;
- /* Should depend on the bitrate, for now we assume LFE gets 1/8 the bits of mono */
- lfe_ratio = 32;
-
- /* Compute bitrate allocation between streams */
- if (st->bitrate_bps==OPUS_AUTO)
- {
- channel_rate = Fs+60*Fs/frame_size;
- } else if (st->bitrate_bps==OPUS_BITRATE_MAX)
- {
- channel_rate = 300000;
- } else {
- int nb_lfe;
- int nb_uncoupled;
- int nb_coupled;
- int total;
- nb_lfe = (st->lfe_stream!=-1);
- nb_coupled = st->layout.nb_coupled_streams;
- nb_uncoupled = st->layout.nb_streams-nb_coupled-nb_lfe;
- total = (nb_uncoupled<<8) /* mono */
- + coupled_ratio*nb_coupled /* stereo */
- + nb_lfe*lfe_ratio;
- channel_rate = 256*(st->bitrate_bps-lfe_offset*nb_lfe-stream_offset*(nb_coupled+nb_uncoupled))/total;
- }
-#ifndef FIXED_POINT
- if (st->variable_duration==OPUS_FRAMESIZE_VARIABLE && frame_size != Fs/50)
- {
- opus_int32 bonus;
- bonus = 60*(Fs/frame_size-50);
- channel_rate += bonus;
- }
-#endif
-
- for (i=0;i<st->layout.nb_streams;i++)
- {
- if (i<st->layout.nb_coupled_streams)
- rate[i] = stream_offset+(channel_rate*coupled_ratio>>8);
- else if (i!=st->lfe_stream)
- rate[i] = stream_offset+channel_rate;
- else
- rate[i] = lfe_offset+(channel_rate*lfe_ratio>>8);
- }
-}
-
-#ifdef ENABLE_EXPERIMENTAL_AMBISONICS
-static void ambisonics_rate_allocation(
- OpusMSEncoder *st,
- opus_int32 *rate,
- int frame_size,
- opus_int32 Fs
- )
-{
- int i;
- int non_mono_rate;
- int total_rate;
-
- /* The mono channel gets (rate_ratio_num / rate_ratio_den) times as many bits
- * as all other channels */
- const int rate_ratio_num = 4;
- const int rate_ratio_den = 3;
- const int num_channels = st->layout.nb_streams;
-
- if (st->bitrate_bps==OPUS_AUTO)
- {
- total_rate = num_channels * (20000 + st->layout.nb_streams*(Fs+60*Fs/frame_size));
- } else if (st->bitrate_bps==OPUS_BITRATE_MAX)
- {
- total_rate = num_channels * 320000;
- } else {
- total_rate = st->bitrate_bps;
- }
-
- /* Let y be the non-mono rate and let p, q be integers such that the mono
- * channel rate is (p/q) * y.
- * Also let T be the total bitrate to allocate. Then
- * (n - 1) y + (p/q) y = T
- * y = (T q) / (qn - q + p)
- */
- non_mono_rate =
- total_rate * rate_ratio_den
- / (rate_ratio_den*num_channels + rate_ratio_num - rate_ratio_den);
-
-#ifndef FIXED_POINT
- if (st->variable_duration==OPUS_FRAMESIZE_VARIABLE && frame_size != Fs/50)
- {
- opus_int32 bonus = 60*(Fs/frame_size-50);
- non_mono_rate += bonus;
- }
-#endif
-
- rate[0] = total_rate - (num_channels - 1) * non_mono_rate;
- for (i=1;i<st->layout.nb_streams;i++)
- {
- rate[i] = non_mono_rate;
- }
-}
-#endif /* ENABLE_EXPERIMENTAL_AMBISONICS */
-
-static opus_int32 rate_allocation(
- OpusMSEncoder *st,
- opus_int32 *rate,
- int frame_size
- )
-{
- int i;
- opus_int32 rate_sum=0;
- opus_int32 Fs;
- char *ptr;
-
- ptr = (char*)st + align(sizeof(OpusMSEncoder));
- opus_encoder_ctl((OpusEncoder*)ptr, OPUS_GET_SAMPLE_RATE(&Fs));
-
-#ifdef ENABLE_EXPERIMENTAL_AMBISONICS
- if (st->mapping_type == MAPPING_TYPE_AMBISONICS) {
- ambisonics_rate_allocation(st, rate, frame_size, Fs);
- } else
-#endif
- {
- surround_rate_allocation(st, rate, frame_size, Fs);
- }
-
- for (i=0;i<st->layout.nb_streams;i++)
- {
- rate[i] = IMAX(rate[i], 500);
- rate_sum += rate[i];
- }
- return rate_sum;
-}
-
-/* Max size in case the encoder decides to return three frames */
-#define MS_FRAME_TMP (3*1275+7)
-static int opus_multistream_encode_native
-(
- OpusMSEncoder *st,
- opus_copy_channel_in_func copy_channel_in,
- const void *pcm,
- int analysis_frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes,
- int lsb_depth,
- downmix_func downmix,
- int float_api
-)
-{
- opus_int32 Fs;
- int coupled_size;
- int mono_size;
- int s;
- char *ptr;
- int tot_size;
- VARDECL(opus_val16, buf);
- VARDECL(opus_val16, bandSMR);
- unsigned char tmp_data[MS_FRAME_TMP];
- OpusRepacketizer rp;
- opus_int32 vbr;
- const CELTMode *celt_mode;
- opus_int32 bitrates[256];
- opus_val16 bandLogE[42];
- opus_val32 *mem = NULL;
- opus_val32 *preemph_mem=NULL;
- int frame_size;
- opus_int32 rate_sum;
- opus_int32 smallest_packet;
- ALLOC_STACK;
-
- if (st->mapping_type == MAPPING_TYPE_SURROUND)
- {
- preemph_mem = ms_get_preemph_mem(st);
- mem = ms_get_window_mem(st);
- }
-
- ptr = (char*)st + align(sizeof(OpusMSEncoder));
- opus_encoder_ctl((OpusEncoder*)ptr, OPUS_GET_SAMPLE_RATE(&Fs));
- opus_encoder_ctl((OpusEncoder*)ptr, OPUS_GET_VBR(&vbr));
- opus_encoder_ctl((OpusEncoder*)ptr, CELT_GET_MODE(&celt_mode));
-
- {
- opus_int32 delay_compensation;
- int channels;
-
- channels = st->layout.nb_streams + st->layout.nb_coupled_streams;
- opus_encoder_ctl((OpusEncoder*)ptr, OPUS_GET_LOOKAHEAD(&delay_compensation));
- delay_compensation -= Fs/400;
- frame_size = compute_frame_size(pcm, analysis_frame_size,
- st->variable_duration, channels, Fs, st->bitrate_bps,
- delay_compensation, downmix
-#ifndef DISABLE_FLOAT_API
- , st->subframe_mem
-#endif
- );
- }
-
- if (400*frame_size < Fs)
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
- /* Validate frame_size before using it to allocate stack space.
- This mirrors the checks in opus_encode[_float](). */
- if (400*frame_size != Fs && 200*frame_size != Fs &&
- 100*frame_size != Fs && 50*frame_size != Fs &&
- 25*frame_size != Fs && 50*frame_size != 3*Fs)
- {
- RESTORE_STACK;
- return OPUS_BAD_ARG;
- }
-
- /* Smallest packet the encoder can produce. */
- smallest_packet = st->layout.nb_streams*2-1;
- if (max_data_bytes < smallest_packet)
- {
- RESTORE_STACK;
- return OPUS_BUFFER_TOO_SMALL;
- }
- ALLOC(buf, 2*frame_size, opus_val16);
- coupled_size = opus_encoder_get_size(2);
- mono_size = opus_encoder_get_size(1);
-
- ALLOC(bandSMR, 21*st->layout.nb_channels, opus_val16);
- if (st->mapping_type == MAPPING_TYPE_SURROUND)
- {
- surround_analysis(celt_mode, pcm, bandSMR, mem, preemph_mem, frame_size, 120, st->layout.nb_channels, Fs, copy_channel_in, st->arch);
- }
-
- /* Compute bitrate allocation between streams (this could be a lot better) */
- rate_sum = rate_allocation(st, bitrates, frame_size);
-
- if (!vbr)
- {
- if (st->bitrate_bps == OPUS_AUTO)
- {
- max_data_bytes = IMIN(max_data_bytes, 3*rate_sum/(3*8*Fs/frame_size));
- } else if (st->bitrate_bps != OPUS_BITRATE_MAX)
- {
- max_data_bytes = IMIN(max_data_bytes, IMAX(smallest_packet,
- 3*st->bitrate_bps/(3*8*Fs/frame_size)));
- }
- }
- ptr = (char*)st + align(sizeof(OpusMSEncoder));
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusEncoder *enc;
- enc = (OpusEncoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrates[s]));
- if (st->mapping_type == MAPPING_TYPE_SURROUND)
- {
- opus_int32 equiv_rate;
- equiv_rate = st->bitrate_bps;
- if (frame_size*50 < Fs)
- equiv_rate -= 60*(Fs/frame_size - 50)*st->layout.nb_channels;
- if (equiv_rate > 10000*st->layout.nb_channels)
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
- else if (equiv_rate > 7000*st->layout.nb_channels)
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_SUPERWIDEBAND));
- else if (equiv_rate > 5000*st->layout.nb_channels)
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_WIDEBAND));
- else
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));
- if (s < st->layout.nb_coupled_streams)
- {
- /* To preserve the spatial image, force stereo CELT on coupled streams */
- opus_encoder_ctl(enc, OPUS_SET_FORCE_MODE(MODE_CELT_ONLY));
- opus_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(2));
- }
- }
-#ifdef ENABLE_EXPERIMENTAL_AMBISONICS
- else if (st->mapping_type == MAPPING_TYPE_AMBISONICS) {
- opus_encoder_ctl(enc, OPUS_SET_FORCE_MODE(MODE_CELT_ONLY));
- }
-#endif
- }
-
- ptr = (char*)st + align(sizeof(OpusMSEncoder));
- /* Counting ToC */
- tot_size = 0;
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusEncoder *enc;
- int len;
- int curr_max;
- int c1, c2;
- int ret;
-
- opus_repacketizer_init(&rp);
- enc = (OpusEncoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- {
- int i;
- int left, right;
- left = get_left_channel(&st->layout, s, -1);
- right = get_right_channel(&st->layout, s, -1);
- (*copy_channel_in)(buf, 2,
- pcm, st->layout.nb_channels, left, frame_size);
- (*copy_channel_in)(buf+1, 2,
- pcm, st->layout.nb_channels, right, frame_size);
- ptr += align(coupled_size);
- if (st->mapping_type == MAPPING_TYPE_SURROUND)
- {
- for (i=0;i<21;i++)
- {
- bandLogE[i] = bandSMR[21*left+i];
- bandLogE[21+i] = bandSMR[21*right+i];
- }
- }
- c1 = left;
- c2 = right;
- } else {
- int i;
- int chan = get_mono_channel(&st->layout, s, -1);
- (*copy_channel_in)(buf, 1,
- pcm, st->layout.nb_channels, chan, frame_size);
- ptr += align(mono_size);
- if (st->mapping_type == MAPPING_TYPE_SURROUND)
- {
- for (i=0;i<21;i++)
- bandLogE[i] = bandSMR[21*chan+i];
- }
- c1 = chan;
- c2 = -1;
- }
- if (st->mapping_type == MAPPING_TYPE_SURROUND)
- opus_encoder_ctl(enc, OPUS_SET_ENERGY_MASK(bandLogE));
- /* number of bytes left (+Toc) */
- curr_max = max_data_bytes - tot_size;
- /* Reserve one byte for the last stream and two for the others */
- curr_max -= IMAX(0,2*(st->layout.nb_streams-s-1)-1);
- curr_max = IMIN(curr_max,MS_FRAME_TMP);
- /* Repacketizer will add one or two bytes for self-delimited frames */
- if (s != st->layout.nb_streams-1) curr_max -= curr_max>253 ? 2 : 1;
- if (!vbr && s == st->layout.nb_streams-1)
- opus_encoder_ctl(enc, OPUS_SET_BITRATE(curr_max*(8*Fs/frame_size)));
- len = opus_encode_native(enc, buf, frame_size, tmp_data, curr_max, lsb_depth,
- pcm, analysis_frame_size, c1, c2, st->layout.nb_channels, downmix, float_api);
- if (len<0)
- {
- RESTORE_STACK;
- return len;
- }
- /* We need to use the repacketizer to add the self-delimiting lengths
- while taking into account the fact that the encoder can now return
- more than one frame at a time (e.g. 60 ms CELT-only) */
- ret = opus_repacketizer_cat(&rp, tmp_data, len);
- /* If the opus_repacketizer_cat() fails, then something's seriously wrong
- with the encoder. */
- if (ret != OPUS_OK)
- {
- RESTORE_STACK;
- return OPUS_INTERNAL_ERROR;
- }
- len = opus_repacketizer_out_range_impl(&rp, 0, opus_repacketizer_get_nb_frames(&rp),
- data, max_data_bytes-tot_size, s != st->layout.nb_streams-1, !vbr && s == st->layout.nb_streams-1);
- data += len;
- tot_size += len;
- }
- /*printf("\n");*/
- RESTORE_STACK;
- return tot_size;
-}
-
-#if !defined(DISABLE_FLOAT_API)
-static void opus_copy_channel_in_float(
- opus_val16 *dst,
- int dst_stride,
- const void *src,
- int src_stride,
- int src_channel,
- int frame_size
-)
-{
- const float *float_src;
- opus_int32 i;
- float_src = (const float *)src;
- for (i=0;i<frame_size;i++)
-#if defined(FIXED_POINT)
- dst[i*dst_stride] = FLOAT2INT16(float_src[i*src_stride+src_channel]);
-#else
- dst[i*dst_stride] = float_src[i*src_stride+src_channel];
-#endif
-}
-#endif
-
-static void opus_copy_channel_in_short(
- opus_val16 *dst,
- int dst_stride,
- const void *src,
- int src_stride,
- int src_channel,
- int frame_size
-)
-{
- const opus_int16 *short_src;
- opus_int32 i;
- short_src = (const opus_int16 *)src;
- for (i=0;i<frame_size;i++)
-#if defined(FIXED_POINT)
- dst[i*dst_stride] = short_src[i*src_stride+src_channel];
-#else
- dst[i*dst_stride] = (1/32768.f)*short_src[i*src_stride+src_channel];
-#endif
-}
-
-
-#ifdef FIXED_POINT
-int opus_multistream_encode(
- OpusMSEncoder *st,
- const opus_val16 *pcm,
- int frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes
-)
-{
- return opus_multistream_encode_native(st, opus_copy_channel_in_short,
- pcm, frame_size, data, max_data_bytes, 16, downmix_int, 0);
-}
-
-#ifndef DISABLE_FLOAT_API
-int opus_multistream_encode_float(
- OpusMSEncoder *st,
- const float *pcm,
- int frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes
-)
-{
- return opus_multistream_encode_native(st, opus_copy_channel_in_float,
- pcm, frame_size, data, max_data_bytes, 16, downmix_float, 1);
-}
-#endif
-
-#else
-
-int opus_multistream_encode_float
-(
- OpusMSEncoder *st,
- const opus_val16 *pcm,
- int frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes
-)
-{
- return opus_multistream_encode_native(st, opus_copy_channel_in_float,
- pcm, frame_size, data, max_data_bytes, 24, downmix_float, 1);
-}
-
-int opus_multistream_encode(
- OpusMSEncoder *st,
- const opus_int16 *pcm,
- int frame_size,
- unsigned char *data,
- opus_int32 max_data_bytes
-)
-{
- return opus_multistream_encode_native(st, opus_copy_channel_in_short,
- pcm, frame_size, data, max_data_bytes, 16, downmix_int, 0);
-}
-#endif
-
-int opus_multistream_encoder_ctl(OpusMSEncoder *st, int request, ...)
-{
- va_list ap;
- int coupled_size, mono_size;
- char *ptr;
- int ret = OPUS_OK;
-
- va_start(ap, request);
-
- coupled_size = opus_encoder_get_size(2);
- mono_size = opus_encoder_get_size(1);
- ptr = (char*)st + align(sizeof(OpusMSEncoder));
- switch (request)
- {
- case OPUS_SET_BITRATE_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- if (value<0 && value!=OPUS_AUTO && value!=OPUS_BITRATE_MAX)
- {
- goto bad_arg;
- }
- st->bitrate_bps = value;
- }
- break;
- case OPUS_GET_BITRATE_REQUEST:
- {
- int s;
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = 0;
- for (s=0;s<st->layout.nb_streams;s++)
- {
- opus_int32 rate;
- OpusEncoder *enc;
- enc = (OpusEncoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- opus_encoder_ctl(enc, request, &rate);
- *value += rate;
- }
- }
- break;
- case OPUS_GET_LSB_DEPTH_REQUEST:
- case OPUS_GET_VBR_REQUEST:
- case OPUS_GET_APPLICATION_REQUEST:
- case OPUS_GET_BANDWIDTH_REQUEST:
- case OPUS_GET_COMPLEXITY_REQUEST:
- case OPUS_GET_PACKET_LOSS_PERC_REQUEST:
- case OPUS_GET_DTX_REQUEST:
- case OPUS_GET_VOICE_RATIO_REQUEST:
- case OPUS_GET_VBR_CONSTRAINT_REQUEST:
- case OPUS_GET_SIGNAL_REQUEST:
- case OPUS_GET_LOOKAHEAD_REQUEST:
- case OPUS_GET_SAMPLE_RATE_REQUEST:
- case OPUS_GET_INBAND_FEC_REQUEST:
- case OPUS_GET_FORCE_CHANNELS_REQUEST:
- case OPUS_GET_PREDICTION_DISABLED_REQUEST:
- {
- OpusEncoder *enc;
- /* For int32* GET params, just query the first stream */
- opus_int32 *value = va_arg(ap, opus_int32*);
- enc = (OpusEncoder*)ptr;
- ret = opus_encoder_ctl(enc, request, value);
- }
- break;
- case OPUS_GET_FINAL_RANGE_REQUEST:
- {
- int s;
- opus_uint32 *value = va_arg(ap, opus_uint32*);
- opus_uint32 tmp;
- if (!value)
- {
- goto bad_arg;
- }
- *value=0;
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusEncoder *enc;
- enc = (OpusEncoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- ret = opus_encoder_ctl(enc, request, &tmp);
- if (ret != OPUS_OK) break;
- *value ^= tmp;
- }
- }
- break;
- case OPUS_SET_LSB_DEPTH_REQUEST:
- case OPUS_SET_COMPLEXITY_REQUEST:
- case OPUS_SET_VBR_REQUEST:
- case OPUS_SET_VBR_CONSTRAINT_REQUEST:
- case OPUS_SET_MAX_BANDWIDTH_REQUEST:
- case OPUS_SET_BANDWIDTH_REQUEST:
- case OPUS_SET_SIGNAL_REQUEST:
- case OPUS_SET_APPLICATION_REQUEST:
- case OPUS_SET_INBAND_FEC_REQUEST:
- case OPUS_SET_PACKET_LOSS_PERC_REQUEST:
- case OPUS_SET_DTX_REQUEST:
- case OPUS_SET_FORCE_MODE_REQUEST:
- case OPUS_SET_FORCE_CHANNELS_REQUEST:
- case OPUS_SET_PREDICTION_DISABLED_REQUEST:
- {
- int s;
- /* This works for int32 params */
- opus_int32 value = va_arg(ap, opus_int32);
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusEncoder *enc;
-
- enc = (OpusEncoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- ret = opus_encoder_ctl(enc, request, value);
- if (ret != OPUS_OK)
- break;
- }
- }
- break;
- case OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST:
- {
- int s;
- opus_int32 stream_id;
- OpusEncoder **value;
- stream_id = va_arg(ap, opus_int32);
- if (stream_id<0 || stream_id >= st->layout.nb_streams)
- ret = OPUS_BAD_ARG;
- value = va_arg(ap, OpusEncoder**);
- if (!value)
- {
- goto bad_arg;
- }
- for (s=0;s<stream_id;s++)
- {
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- }
- *value = (OpusEncoder*)ptr;
- }
- break;
- case OPUS_SET_EXPERT_FRAME_DURATION_REQUEST:
- {
- opus_int32 value = va_arg(ap, opus_int32);
- st->variable_duration = value;
- }
- break;
- case OPUS_GET_EXPERT_FRAME_DURATION_REQUEST:
- {
- opus_int32 *value = va_arg(ap, opus_int32*);
- if (!value)
- {
- goto bad_arg;
- }
- *value = st->variable_duration;
- }
- break;
- case OPUS_RESET_STATE:
- {
- int s;
- st->subframe_mem[0] = st->subframe_mem[1] = st->subframe_mem[2] = 0;
- if (st->mapping_type == MAPPING_TYPE_SURROUND)
- {
- OPUS_CLEAR(ms_get_preemph_mem(st), st->layout.nb_channels);
- OPUS_CLEAR(ms_get_window_mem(st), st->layout.nb_channels*120);
- }
- for (s=0;s<st->layout.nb_streams;s++)
- {
- OpusEncoder *enc;
- enc = (OpusEncoder*)ptr;
- if (s < st->layout.nb_coupled_streams)
- ptr += align(coupled_size);
- else
- ptr += align(mono_size);
- ret = opus_encoder_ctl(enc, OPUS_RESET_STATE);
- if (ret != OPUS_OK)
- break;
- }
- }
- break;
- default:
- ret = OPUS_UNIMPLEMENTED;
- break;
- }
-
- va_end(ap);
- return ret;
-bad_arg:
- va_end(ap);
- return OPUS_BAD_ARG;
-}
-
-void opus_multistream_encoder_destroy(OpusMSEncoder *st)
-{
- opus_free(st);
-}
diff --git a/thirdparty/opus/opus_private.h b/thirdparty/opus/opus_private.h
deleted file mode 100644
index 3b62eed096..0000000000
--- a/thirdparty/opus/opus_private.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Copyright (c) 2012 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-#ifndef OPUS_PRIVATE_H
-#define OPUS_PRIVATE_H
-
-#include "arch.h"
-#include "opus.h"
-#include "celt.h"
-
-#include <stddef.h> /* offsetof */
-
-struct OpusRepacketizer {
- unsigned char toc;
- int nb_frames;
- const unsigned char *frames[48];
- opus_int16 len[48];
- int framesize;
-};
-
-typedef struct ChannelLayout {
- int nb_channels;
- int nb_streams;
- int nb_coupled_streams;
- unsigned char mapping[256];
-} ChannelLayout;
-
-int validate_layout(const ChannelLayout *layout);
-int get_left_channel(const ChannelLayout *layout, int stream_id, int prev);
-int get_right_channel(const ChannelLayout *layout, int stream_id, int prev);
-int get_mono_channel(const ChannelLayout *layout, int stream_id, int prev);
-
-
-
-#define MODE_SILK_ONLY 1000
-#define MODE_HYBRID 1001
-#define MODE_CELT_ONLY 1002
-
-#define OPUS_SET_VOICE_RATIO_REQUEST 11018
-#define OPUS_GET_VOICE_RATIO_REQUEST 11019
-
-/** Configures the encoder's expected percentage of voice
- * opposed to music or other signals.
- *
- * @note This interface is currently more aspiration than actuality. It's
- * ultimately expected to bias an automatic signal classifier, but it currently
- * just shifts the static bitrate to mode mapping around a little bit.
- *
- * @param[in] x <tt>int</tt>: Voice percentage in the range 0-100, inclusive.
- * @hideinitializer */
-#define OPUS_SET_VOICE_RATIO(x) OPUS_SET_VOICE_RATIO_REQUEST, __opus_check_int(x)
-/** Gets the encoder's configured voice ratio value, @see OPUS_SET_VOICE_RATIO
- *
- * @param[out] x <tt>int*</tt>: Voice percentage in the range 0-100, inclusive.
- * @hideinitializer */
-#define OPUS_GET_VOICE_RATIO(x) OPUS_GET_VOICE_RATIO_REQUEST, __opus_check_int_ptr(x)
-
-
-#define OPUS_SET_FORCE_MODE_REQUEST 11002
-#define OPUS_SET_FORCE_MODE(x) OPUS_SET_FORCE_MODE_REQUEST, __opus_check_int(x)
-
-typedef void (*downmix_func)(const void *, opus_val32 *, int, int, int, int, int);
-void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C);
-void downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C);
-
-int encode_size(int size, unsigned char *data);
-
-opus_int32 frame_size_select(opus_int32 frame_size, int variable_duration, opus_int32 Fs);
-
-opus_int32 compute_frame_size(const void *analysis_pcm, int frame_size,
- int variable_duration, int C, opus_int32 Fs, int bitrate_bps,
- int delay_compensation, downmix_func downmix
-#ifndef DISABLE_FLOAT_API
- , float *subframe_mem
-#endif
- );
-
-opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_size,
- unsigned char *data, opus_int32 out_data_bytes, int lsb_depth,
- const void *analysis_pcm, opus_int32 analysis_size, int c1, int c2,
- int analysis_channels, downmix_func downmix, int float_api);
-
-int opus_decode_native(OpusDecoder *st, const unsigned char *data, opus_int32 len,
- opus_val16 *pcm, int frame_size, int decode_fec, int self_delimited,
- opus_int32 *packet_offset, int soft_clip);
-
-/* Make sure everything is properly aligned. */
-static OPUS_INLINE int align(int i)
-{
- struct foo {char c; union { void* p; opus_int32 i; opus_val32 v; } u;};
-
- unsigned int alignment = offsetof(struct foo, u);
-
- /* Optimizing compilers should optimize div and multiply into and
- for all sensible alignment values. */
- return ((i + alignment - 1) / alignment) * alignment;
-}
-
-int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
- int self_delimited, unsigned char *out_toc,
- const unsigned char *frames[48], opus_int16 size[48],
- int *payload_offset, opus_int32 *packet_offset);
-
-opus_int32 opus_repacketizer_out_range_impl(OpusRepacketizer *rp, int begin, int end,
- unsigned char *data, opus_int32 maxlen, int self_delimited, int pad);
-
-int pad_frame(unsigned char *data, opus_int32 len, opus_int32 new_len);
-
-#endif /* OPUS_PRIVATE_H */
diff --git a/thirdparty/opus/opusfile.c b/thirdparty/opus/opusfile.c
deleted file mode 100644
index b8b3a354cf..0000000000
--- a/thirdparty/opus/opusfile.c
+++ /dev/null
@@ -1,3266 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 *
- * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.c 17573 2010-10-27 14:53:59Z xiphmont $
-
- ********************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "internal.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <limits.h>
-#include <string.h>
-#include <math.h>
-
-#include "opusfile.h"
-
-/*This implementation is largely based off of libvorbisfile.
- All of the Ogg bits work roughly the same, though I have made some
- "improvements" that have not been folded back there, yet.*/
-
-/*A 'chained bitstream' is an Ogg Opus bitstream that contains more than one
- logical bitstream arranged end to end (the only form of Ogg multiplexing
- supported by this library.
- Grouping (parallel multiplexing) is not supported, except to the extent that
- if there are multiple logical Ogg streams in a single link of the chain, we
- will ignore all but the first Opus stream we find.*/
-
-/*An Ogg Opus file can be played beginning to end (streamed) without worrying
- ahead of time about chaining (see opusdec from the opus-tools package).
- If we have the whole file, however, and want random access
- (seeking/scrubbing) or desire to know the total length/time of a file, we
- need to account for the possibility of chaining.*/
-
-/*We can handle things a number of ways.
- We can determine the entire bitstream structure right off the bat, or find
- pieces on demand.
- This library determines and caches structure for the entire bitstream, but
- builds a virtual decoder on the fly when moving between links in the chain.*/
-
-/*There are also different ways to implement seeking.
- Enough information exists in an Ogg bitstream to seek to sample-granularity
- positions in the output.
- Or, one can seek by picking some portion of the stream roughly in the desired
- area if we only want coarse navigation through the stream.
- We implement and expose both strategies.*/
-
-/*The maximum number of bytes in a page (including the page headers).*/
-#define OP_PAGE_SIZE_MAX (65307)
-/*The default amount to seek backwards per step when trying to find the
- previous page.
- This must be at least as large as the maximum size of a page.*/
-#define OP_CHUNK_SIZE (65536)
-/*The maximum amount to seek backwards per step when trying to find the
- previous page.*/
-#define OP_CHUNK_SIZE_MAX (1024*(opus_int32)1024)
-/*A smaller read size is needed for low-rate streaming.*/
-#define OP_READ_SIZE (2048)
-
-int op_test(OpusHead *_head,
- const unsigned char *_initial_data,size_t _initial_bytes){
- ogg_sync_state oy;
- char *data;
- int err;
- /*The first page of a normal Opus file will be at most 57 bytes (27 Ogg
- page header bytes + 1 lacing value + 21 Opus header bytes + 8 channel
- mapping bytes).
- It will be at least 47 bytes (27 Ogg page header bytes + 1 lacing value +
- 19 Opus header bytes using channel mapping family 0).
- If we don't have at least that much data, give up now.*/
- if(_initial_bytes<47)return OP_FALSE;
- /*Only proceed if we start with the magic OggS string.
- This is to prevent us spending a lot of time allocating memory and looking
- for Ogg pages in non-Ogg files.*/
- if(memcmp(_initial_data,"OggS",4)!=0)return OP_ENOTFORMAT;
- ogg_sync_init(&oy);
- data=ogg_sync_buffer(&oy,_initial_bytes);
- if(data!=NULL){
- ogg_stream_state os;
- ogg_page og;
- int ret;
- memcpy(data,_initial_data,_initial_bytes);
- ogg_sync_wrote(&oy,_initial_bytes);
- ogg_stream_init(&os,-1);
- err=OP_FALSE;
- do{
- ogg_packet op;
- ret=ogg_sync_pageout(&oy,&og);
- /*Ignore holes.*/
- if(ret<0)continue;
- /*Stop if we run out of data.*/
- if(!ret)break;
- ogg_stream_reset_serialno(&os,ogg_page_serialno(&og));
- ogg_stream_pagein(&os,&og);
- /*Only process the first packet on this page (if it's a BOS packet,
- it's required to be the only one).*/
- if(ogg_stream_packetout(&os,&op)==1){
- if(op.b_o_s){
- ret=opus_head_parse(_head,op.packet,op.bytes);
- /*If this didn't look like Opus, keep going.*/
- if(ret==OP_ENOTFORMAT)continue;
- /*Otherwise we're done, one way or another.*/
- err=ret;
- }
- /*We finished parsing the headers.
- There is no Opus to be found.*/
- else err=OP_ENOTFORMAT;
- }
- }
- while(err==OP_FALSE);
- ogg_stream_clear(&os);
- }
- else err=OP_EFAULT;
- ogg_sync_clear(&oy);
- return err;
-}
-
-/*Many, many internal helpers.
- The intention is not to be confusing.
- Rampant duplication and monolithic function implementation (though we do have
- some large, omnibus functions still) would be harder to understand anyway.
- The high level functions are last.
- Begin grokking near the end of the file if you prefer to read things
- top-down.*/
-
-/*The read/seek functions track absolute position within the stream.*/
-
-/*Read a little more data from the file/pipe into the ogg_sync framer.
- _nbytes: The maximum number of bytes to read.
- Return: A positive number of bytes read on success, 0 on end-of-file, or a
- negative value on failure.*/
-static int op_get_data(OggOpusFile *_of,int _nbytes){
- unsigned char *buffer;
- int nbytes;
- OP_ASSERT(_nbytes>0);
- buffer=(unsigned char *)ogg_sync_buffer(&_of->oy,_nbytes);
- nbytes=(int)(*_of->callbacks.read)(_of->source,buffer,_nbytes);
- OP_ASSERT(nbytes<=_nbytes);
- if(OP_LIKELY(nbytes>0))ogg_sync_wrote(&_of->oy,nbytes);
- return nbytes;
-}
-
-/*Save a tiny smidge of verbosity to make the code more readable.*/
-static int op_seek_helper(OggOpusFile *_of,opus_int64 _offset){
- if(_offset==_of->offset)return 0;
- if(_of->callbacks.seek==NULL
- ||(*_of->callbacks.seek)(_of->source,_offset,SEEK_SET)){
- return OP_EREAD;
- }
- _of->offset=_offset;
- ogg_sync_reset(&_of->oy);
- return 0;
-}
-
-/*Get the current position indicator of the underlying source.
- This should be the same as the value reported by tell().*/
-static opus_int64 op_position(const OggOpusFile *_of){
- /*The current position indicator is _not_ simply offset.
- We may also have unprocessed, buffered data in the sync state.*/
- return _of->offset+_of->oy.fill-_of->oy.returned;
-}
-
-/*From the head of the stream, get the next page.
- _boundary specifies if the function is allowed to fetch more data from the
- stream (and how much) or only use internally buffered data.
- _boundary: -1: Unbounded search.
- 0: Read no additional data.
- Use only cached data.
- n: Search for the start of a new page up to file position n.
- Return: n>=0: Found a page at absolute offset n.
- OP_FALSE: Hit the _boundary limit.
- OP_EREAD: An underlying read operation failed.
- OP_BADLINK: We hit end-of-file before reaching _boundary.*/
-static opus_int64 op_get_next_page(OggOpusFile *_of,ogg_page *_og,
- opus_int64 _boundary){
- while(_boundary<=0||_of->offset<_boundary){
- int more;
- more=ogg_sync_pageseek(&_of->oy,_og);
- /*Skipped (-more) bytes.*/
- if(OP_UNLIKELY(more<0))_of->offset-=more;
- else if(more==0){
- int read_nbytes;
- int ret;
- /*Send more paramedics.*/
- if(!_boundary)return OP_FALSE;
- if(_boundary<0)read_nbytes=OP_READ_SIZE;
- else{
- opus_int64 position;
- position=op_position(_of);
- if(position>=_boundary)return OP_FALSE;
- read_nbytes=(int)OP_MIN(_boundary-position,OP_READ_SIZE);
- }
- ret=op_get_data(_of,read_nbytes);
- if(OP_UNLIKELY(ret<0))return OP_EREAD;
- if(OP_UNLIKELY(ret==0)){
- /*Only fail cleanly on EOF if we didn't have a known boundary.
- Otherwise, we should have been able to reach that boundary, and this
- is a fatal error.*/
- return OP_UNLIKELY(_boundary<0)?OP_FALSE:OP_EBADLINK;
- }
- }
- else{
- /*Got a page.
- Return the page start offset and advance the internal offset past the
- page end.*/
- opus_int64 page_offset;
- page_offset=_of->offset;
- _of->offset+=more;
- OP_ASSERT(page_offset>=0);
- return page_offset;
- }
- }
- return OP_FALSE;
-}
-
-static int op_add_serialno(const ogg_page *_og,
- ogg_uint32_t **_serialnos,int *_nserialnos,int *_cserialnos){
- ogg_uint32_t *serialnos;
- int nserialnos;
- int cserialnos;
- ogg_uint32_t s;
- s=ogg_page_serialno(_og);
- serialnos=*_serialnos;
- nserialnos=*_nserialnos;
- cserialnos=*_cserialnos;
- if(OP_UNLIKELY(nserialnos>=cserialnos)){
- if(OP_UNLIKELY(cserialnos>INT_MAX/(int)sizeof(*serialnos)-1>>1)){
- return OP_EFAULT;
- }
- cserialnos=2*cserialnos+1;
- OP_ASSERT(nserialnos<cserialnos);
- serialnos=(ogg_uint32_t *)_ogg_realloc(serialnos,
- sizeof(*serialnos)*cserialnos);
- if(OP_UNLIKELY(serialnos==NULL))return OP_EFAULT;
- }
- serialnos[nserialnos++]=s;
- *_serialnos=serialnos;
- *_nserialnos=nserialnos;
- *_cserialnos=cserialnos;
- return 0;
-}
-
-/*Returns nonzero if found.*/
-static int op_lookup_serialno(ogg_uint32_t _s,
- const ogg_uint32_t *_serialnos,int _nserialnos){
- int i;
- for(i=0;i<_nserialnos&&_serialnos[i]!=_s;i++);
- return i<_nserialnos;
-}
-
-static int op_lookup_page_serialno(const ogg_page *_og,
- const ogg_uint32_t *_serialnos,int _nserialnos){
- return op_lookup_serialno(ogg_page_serialno(_og),_serialnos,_nserialnos);
-}
-
-typedef struct OpusSeekRecord OpusSeekRecord;
-
-/*We use this to remember the pages we found while enumerating the links of a
- chained stream.
- We keep track of the starting and ending offsets, as well as the point we
- started searching from, so we know where to bisect.
- We also keep the serial number, so we can tell if the page belonged to the
- current link or not, as well as the granule position, to aid in estimating
- the start of the link.*/
-struct OpusSeekRecord{
- /*The earliest byte we know of such that reading forward from it causes
- capture to be regained at this page.*/
- opus_int64 search_start;
- /*The offset of this page.*/
- opus_int64 offset;
- /*The size of this page.*/
- opus_int32 size;
- /*The serial number of this page.*/
- ogg_uint32_t serialno;
- /*The granule position of this page.*/
- ogg_int64_t gp;
-};
-
-/*Find the last page beginning before _offset with a valid granule position.
- There is no '_boundary' parameter as it will always have to read more data.
- This is much dirtier than the above, as Ogg doesn't have any backward search
- linkage.
- This search prefers pages of the specified serial number.
- If a page of the specified serial number is spotted during the
- seek-back-and-read-forward, it will return the info of last page of the
- matching serial number, instead of the very last page, unless the very last
- page belongs to a different link than preferred serial number.
- If no page of the specified serial number is seen, it will return the info of
- the last page.
- [out] _sr: Returns information about the page that was found on success.
- _offset: The _offset before which to find a page.
- Any page returned will consist of data entirely before _offset.
- _serialno: The preferred serial number.
- If a page with this serial number is found, it will be returned
- even if another page in the same link is found closer to
- _offset.
- This is purely opportunistic: there is no guarantee such a page
- will be found if it exists.
- _serialnos: The list of serial numbers in the link that contains the
- preferred serial number.
- _nserialnos: The number of serial numbers in the current link.
- Return: 0 on success, or a negative value on failure.
- OP_EREAD: Failed to read more data (error or EOF).
- OP_EBADLINK: We couldn't find a page even after seeking back to the
- start of the stream.*/
-static int op_get_prev_page_serial(OggOpusFile *_of,OpusSeekRecord *_sr,
- opus_int64 _offset,ogg_uint32_t _serialno,
- const ogg_uint32_t *_serialnos,int _nserialnos){
- OpusSeekRecord preferred_sr;
- ogg_page og;
- opus_int64 begin;
- opus_int64 end;
- opus_int64 original_end;
- opus_int32 chunk_size;
- int preferred_found;
- original_end=end=begin=_offset;
- preferred_found=0;
- _offset=-1;
- chunk_size=OP_CHUNK_SIZE;
- do{
- opus_int64 search_start;
- int ret;
- OP_ASSERT(chunk_size>=OP_PAGE_SIZE_MAX);
- begin=OP_MAX(begin-chunk_size,0);
- ret=op_seek_helper(_of,begin);
- if(OP_UNLIKELY(ret<0))return ret;
- search_start=begin;
- while(_of->offset<end){
- opus_int64 llret;
- ogg_uint32_t serialno;
- llret=op_get_next_page(_of,&og,end);
- if(OP_UNLIKELY(llret<OP_FALSE))return (int)llret;
- else if(llret==OP_FALSE)break;
- serialno=ogg_page_serialno(&og);
- /*Save the information for this page.
- We're not interested in the page itself... just the serial number, byte
- offset, page size, and granule position.*/
- _sr->search_start=search_start;
- _sr->offset=_offset=llret;
- _sr->serialno=serialno;
- OP_ASSERT(_of->offset-_offset>=0);
- OP_ASSERT(_of->offset-_offset<=OP_PAGE_SIZE_MAX);
- _sr->size=(opus_int32)(_of->offset-_offset);
- _sr->gp=ogg_page_granulepos(&og);
- /*If this page is from the stream we're looking for, remember it.*/
- if(serialno==_serialno){
- preferred_found=1;
- *&preferred_sr=*_sr;
- }
- if(!op_lookup_serialno(serialno,_serialnos,_nserialnos)){
- /*We fell off the end of the link, which means we seeked back too far
- and shouldn't have been looking in that link to begin with.
- If we found the preferred serial number, forget that we saw it.*/
- preferred_found=0;
- }
- search_start=llret+1;
- }
- /*We started from the beginning of the stream and found nothing.
- This should be impossible unless the contents of the source changed out
- from under us after we read from it.*/
- if(OP_UNLIKELY(!begin)&&OP_UNLIKELY(_offset<0))return OP_EBADLINK;
- /*Bump up the chunk size.
- This is mildly helpful when seeks are very expensive (http).*/
- chunk_size=OP_MIN(2*chunk_size,OP_CHUNK_SIZE_MAX);
- /*Avoid quadratic complexity if we hit an invalid patch of the file.*/
- end=OP_MIN(begin+OP_PAGE_SIZE_MAX-1,original_end);
- }
- while(_offset<0);
- if(preferred_found)*_sr=*&preferred_sr;
- return 0;
-}
-
-/*Find the last page beginning before _offset with the given serial number and
- a valid granule position.
- Unlike the above search, this continues until it finds such a page, but does
- not stray outside the current link.
- We could implement it (inefficiently) by calling op_get_prev_page_serial()
- repeatedly until it returned a page that had both our preferred serial
- number and a valid granule position, but doing it with a separate function
- allows us to avoid repeatedly re-scanning valid pages from other streams as
- we seek-back-and-read-forward.
- [out] _gp: Returns the granule position of the page that was found on
- success.
- _offset: The _offset before which to find a page.
- Any page returned will consist of data entirely before _offset.
- _serialno: The target serial number.
- _serialnos: The list of serial numbers in the link that contains the
- preferred serial number.
- _nserialnos: The number of serial numbers in the current link.
- Return: The offset of the page on success, or a negative value on failure.
- OP_EREAD: Failed to read more data (error or EOF).
- OP_EBADLINK: We couldn't find a page even after seeking back past the
- beginning of the link.*/
-static opus_int64 op_get_last_page(OggOpusFile *_of,ogg_int64_t *_gp,
- opus_int64 _offset,ogg_uint32_t _serialno,
- const ogg_uint32_t *_serialnos,int _nserialnos){
- ogg_page og;
- ogg_int64_t gp;
- opus_int64 begin;
- opus_int64 end;
- opus_int64 original_end;
- opus_int32 chunk_size;
- /*The target serial number must belong to the current link.*/
- OP_ASSERT(op_lookup_serialno(_serialno,_serialnos,_nserialnos));
- original_end=end=begin=_offset;
- _offset=-1;
- /*We shouldn't have to initialize gp, but gcc is too dumb to figure out that
- ret>=0 implies we entered the if(page_gp!=-1) block at least once.*/
- gp=-1;
- chunk_size=OP_CHUNK_SIZE;
- do{
- int left_link;
- int ret;
- OP_ASSERT(chunk_size>=OP_PAGE_SIZE_MAX);
- begin=OP_MAX(begin-chunk_size,0);
- ret=op_seek_helper(_of,begin);
- if(OP_UNLIKELY(ret<0))return ret;
- left_link=0;
- while(_of->offset<end){
- opus_int64 llret;
- ogg_uint32_t serialno;
- llret=op_get_next_page(_of,&og,end);
- if(OP_UNLIKELY(llret<OP_FALSE))return llret;
- else if(llret==OP_FALSE)break;
- serialno=ogg_page_serialno(&og);
- if(serialno==_serialno){
- ogg_int64_t page_gp;
- /*The page is from the right stream...*/
- page_gp=ogg_page_granulepos(&og);
- if(page_gp!=-1){
- /*And has a valid granule position.
- Let's remember it.*/
- _offset=llret;
- gp=page_gp;
- }
- }
- else if(OP_UNLIKELY(!op_lookup_serialno(serialno,
- _serialnos,_nserialnos))){
- /*We fell off the start of the link, which means we don't need to keep
- seeking any farther back.*/
- left_link=1;
- }
- }
- /*We started from at or before the beginning of the link and found nothing.
- This should be impossible unless the contents of the source changed out
- from under us after we read from it.*/
- if((OP_UNLIKELY(left_link)||OP_UNLIKELY(!begin))&&OP_UNLIKELY(_offset<0)){
- return OP_EBADLINK;
- }
- /*Bump up the chunk size.
- This is mildly helpful when seeks are very expensive (http).*/
- chunk_size=OP_MIN(2*chunk_size,OP_CHUNK_SIZE_MAX);
- /*Avoid quadratic complexity if we hit an invalid patch of the file.*/
- end=OP_MIN(begin+OP_PAGE_SIZE_MAX-1,original_end);
- }
- while(_offset<0);
- *_gp=gp;
- return _offset;
-}
-
-/*Uses the local ogg_stream storage in _of.
- This is important for non-streaming input sources.*/
-static int op_fetch_headers_impl(OggOpusFile *_of,OpusHead *_head,
- OpusTags *_tags,ogg_uint32_t **_serialnos,int *_nserialnos,
- int *_cserialnos,ogg_page *_og){
- ogg_packet op;
- int ret;
- if(_serialnos!=NULL)*_nserialnos=0;
- /*Extract the serialnos of all BOS pages plus the first set of Opus headers
- we see in the link.*/
- while(ogg_page_bos(_og)){
- if(_serialnos!=NULL){
- if(OP_UNLIKELY(op_lookup_page_serialno(_og,*_serialnos,*_nserialnos))){
- /*A dupe serialnumber in an initial header packet set==invalid stream.*/
- return OP_EBADHEADER;
- }
- ret=op_add_serialno(_og,_serialnos,_nserialnos,_cserialnos);
- if(OP_UNLIKELY(ret<0))return ret;
- }
- if(_of->ready_state<OP_STREAMSET){
- /*We don't have an Opus stream in this link yet, so begin prospective
- stream setup.
- We need a stream to get packets.*/
- ogg_stream_reset_serialno(&_of->os,ogg_page_serialno(_og));
- ogg_stream_pagein(&_of->os,_og);
- if(OP_LIKELY(ogg_stream_packetout(&_of->os,&op)>0)){
- ret=opus_head_parse(_head,op.packet,op.bytes);
- /*Found a valid Opus header.
- Continue setup.*/
- if(OP_LIKELY(ret>=0))_of->ready_state=OP_STREAMSET;
- /*If it's just a stream type we don't recognize, ignore it.
- Everything else is fatal.*/
- else if(ret!=OP_ENOTFORMAT)return ret;
- }
- /*TODO: Should a BOS page with no packets be an error?*/
- }
- /*Get the next page.
- No need to clamp the boundary offset against _of->end, as all errors
- become OP_ENOTFORMAT or OP_EBADHEADER.*/
- if(OP_UNLIKELY(op_get_next_page(_of,_og,
- OP_ADV_OFFSET(_of->offset,OP_CHUNK_SIZE))<0)){
- return _of->ready_state<OP_STREAMSET?OP_ENOTFORMAT:OP_EBADHEADER;
- }
- }
- if(OP_UNLIKELY(_of->ready_state!=OP_STREAMSET))return OP_ENOTFORMAT;
- /*If the first non-header page belonged to our Opus stream, submit it.*/
- if(_of->os.serialno==ogg_page_serialno(_og))ogg_stream_pagein(&_of->os,_og);
- /*Loop getting packets.*/
- for(;;){
- switch(ogg_stream_packetout(&_of->os,&op)){
- case 0:{
- /*Loop getting pages.*/
- for(;;){
- /*No need to clamp the boundary offset against _of->end, as all
- errors become OP_EBADHEADER.*/
- if(OP_UNLIKELY(op_get_next_page(_of,_og,
- OP_ADV_OFFSET(_of->offset,OP_CHUNK_SIZE))<0)){
- return OP_EBADHEADER;
- }
- /*If this page belongs to the correct stream, go parse it.*/
- if(_of->os.serialno==ogg_page_serialno(_og)){
- ogg_stream_pagein(&_of->os,_og);
- break;
- }
- /*If the link ends before we see the Opus comment header, abort.*/
- if(OP_UNLIKELY(ogg_page_bos(_og)))return OP_EBADHEADER;
- /*Otherwise, keep looking.*/
- }
- }break;
- /*We shouldn't get a hole in the headers!*/
- case -1:return OP_EBADHEADER;
- default:{
- /*Got a packet.
- It should be the comment header.*/
- ret=opus_tags_parse(_tags,op.packet,op.bytes);
- if(OP_UNLIKELY(ret<0))return ret;
- /*Make sure the page terminated at the end of the comment header.
- If there is another packet on the page, or part of a packet, then
- reject the stream.
- Otherwise seekable sources won't be able to seek back to the start
- properly.*/
- ret=ogg_stream_packetout(&_of->os,&op);
- if(OP_UNLIKELY(ret!=0)
- ||OP_UNLIKELY(_og->header[_og->header_len-1]==255)){
- /*If we fail, the caller assumes our tags are uninitialized.*/
- opus_tags_clear(_tags);
- return OP_EBADHEADER;
- }
- return 0;
- }
- }
- }
-}
-
-static int op_fetch_headers(OggOpusFile *_of,OpusHead *_head,
- OpusTags *_tags,ogg_uint32_t **_serialnos,int *_nserialnos,
- int *_cserialnos,ogg_page *_og){
- ogg_page og;
- int ret;
- if(!_og){
- /*No need to clamp the boundary offset against _of->end, as all errors
- become OP_ENOTFORMAT.*/
- if(OP_UNLIKELY(op_get_next_page(_of,&og,
- OP_ADV_OFFSET(_of->offset,OP_CHUNK_SIZE))<0)){
- return OP_ENOTFORMAT;
- }
- _og=&og;
- }
- _of->ready_state=OP_OPENED;
- ret=op_fetch_headers_impl(_of,_head,_tags,_serialnos,_nserialnos,
- _cserialnos,_og);
- /*Revert back from OP_STREAMSET to OP_OPENED on failure, to prevent
- double-free of the tags in an unseekable stream.*/
- if(OP_UNLIKELY(ret<0))_of->ready_state=OP_OPENED;
- return ret;
-}
-
-/*Granule position manipulation routines.
- A granule position is defined to be an unsigned 64-bit integer, with the
- special value -1 in two's complement indicating an unset or invalid granule
- position.
- We are not guaranteed to have an unsigned 64-bit type, so we construct the
- following routines that
- a) Properly order negative numbers as larger than positive numbers, and
- b) Check for underflow or overflow past the special -1 value.
- This lets us operate on the full, valid range of granule positions in a
- consistent and safe manner.
- This full range is organized into distinct regions:
- [ -1 (invalid) ][ 0 ... OP_INT64_MAX ][ OP_INT64_MIN ... -2 ][-1 (invalid) ]
-
- No one should actually use granule positions so large that they're negative,
- even if they are technically valid, as very little software handles them
- correctly (including most of Xiph.Org's).
- This library also refuses to support durations so large they won't fit in a
- signed 64-bit integer (to avoid exposing this mess to the application, and
- to simplify a good deal of internal arithmetic), so the only way to use them
- successfully is if pcm_start is very large.
- This means there isn't anything you can do with negative granule positions
- that you couldn't have done with purely non-negative ones.
- The main purpose of these routines is to allow us to think very explicitly
- about the possible failure cases of all granule position manipulations.*/
-
-/*Safely adds a small signed integer to a valid (not -1) granule position.
- The result can use the full 64-bit range of values (both positive and
- negative), but will fail on overflow (wrapping past -1; wrapping past
- OP_INT64_MAX is explicitly okay).
- [out] _dst_gp: The resulting granule position.
- Only modified on success.
- _src_gp: The granule position to add to.
- This must not be -1.
- _delta: The amount to add.
- This is allowed to be up to 32 bits to support the maximum
- duration of a single Ogg page (255 packets * 120 ms per
- packet == 1,468,800 samples at 48 kHz).
- Return: 0 on success, or OP_EINVAL if the result would wrap around past -1.*/
-static int op_granpos_add(ogg_int64_t *_dst_gp,ogg_int64_t _src_gp,
- opus_int32 _delta){
- /*The code below handles this case correctly, but there's no reason we
- should ever be called with these values, so make sure we aren't.*/
- OP_ASSERT(_src_gp!=-1);
- if(_delta>0){
- /*Adding this amount to the granule position would overflow its 64-bit
- range.*/
- if(OP_UNLIKELY(_src_gp<0)&&OP_UNLIKELY(_src_gp>=-1-_delta))return OP_EINVAL;
- if(OP_UNLIKELY(_src_gp>OP_INT64_MAX-_delta)){
- /*Adding this amount to the granule position would overflow the positive
- half of its 64-bit range.
- Since signed overflow is undefined in C, do it in a way the compiler
- isn't allowed to screw up.*/
- _delta-=(opus_int32)(OP_INT64_MAX-_src_gp)+1;
- _src_gp=OP_INT64_MIN;
- }
- }
- else if(_delta<0){
- /*Subtracting this amount from the granule position would underflow its
- 64-bit range.*/
- if(_src_gp>=0&&OP_UNLIKELY(_src_gp<-_delta))return OP_EINVAL;
- if(OP_UNLIKELY(_src_gp<OP_INT64_MIN-_delta)){
- /*Subtracting this amount from the granule position would underflow the
- negative half of its 64-bit range.
- Since signed underflow is undefined in C, do it in a way the compiler
- isn't allowed to screw up.*/
- _delta+=(opus_int32)(_src_gp-OP_INT64_MIN)+1;
- _src_gp=OP_INT64_MAX;
- }
- }
- *_dst_gp=_src_gp+_delta;
- return 0;
-}
-
-/*Safely computes the difference between two granule positions.
- The difference must fit in a signed 64-bit integer, or the function fails.
- It correctly handles the case where the granule position has wrapped around
- from positive values to negative ones.
- [out] _delta: The difference between the granule positions.
- Only modified on success.
- _gp_a: The granule position to subtract from.
- This must not be -1.
- _gp_b: The granule position to subtract.
- This must not be -1.
- Return: 0 on success, or OP_EINVAL if the result would not fit in a signed
- 64-bit integer.*/
-static int op_granpos_diff(ogg_int64_t *_delta,
- ogg_int64_t _gp_a,ogg_int64_t _gp_b){
- int gp_a_negative;
- int gp_b_negative;
- /*The code below handles these cases correctly, but there's no reason we
- should ever be called with these values, so make sure we aren't.*/
- OP_ASSERT(_gp_a!=-1);
- OP_ASSERT(_gp_b!=-1);
- gp_a_negative=OP_UNLIKELY(_gp_a<0);
- gp_b_negative=OP_UNLIKELY(_gp_b<0);
- if(OP_UNLIKELY(gp_a_negative^gp_b_negative)){
- ogg_int64_t da;
- ogg_int64_t db;
- if(gp_a_negative){
- /*_gp_a has wrapped to a negative value but _gp_b hasn't: the difference
- should be positive.*/
- /*Step 1: Handle wrapping.*/
- /*_gp_a < 0 => da < 0.*/
- da=(OP_INT64_MIN-_gp_a)-1;
- /*_gp_b >= 0 => db >= 0.*/
- db=OP_INT64_MAX-_gp_b;
- /*Step 2: Check for overflow.*/
- if(OP_UNLIKELY(OP_INT64_MAX+da<db))return OP_EINVAL;
- *_delta=db-da;
- }
- else{
- /*_gp_b has wrapped to a negative value but _gp_a hasn't: the difference
- should be negative.*/
- /*Step 1: Handle wrapping.*/
- /*_gp_a >= 0 => da <= 0*/
- da=_gp_a+OP_INT64_MIN;
- /*_gp_b < 0 => db <= 0*/
- db=OP_INT64_MIN-_gp_b;
- /*Step 2: Check for overflow.*/
- if(OP_UNLIKELY(da<OP_INT64_MIN-db))return OP_EINVAL;
- *_delta=da+db;
- }
- }
- else *_delta=_gp_a-_gp_b;
- return 0;
-}
-
-static int op_granpos_cmp(ogg_int64_t _gp_a,ogg_int64_t _gp_b){
- /*The invalid granule position -1 should behave like NaN: neither greater
- than nor less than any other granule position, nor equal to any other
- granule position, including itself.
- However, that means there isn't anything we could sensibly return from this
- function for it.*/
- OP_ASSERT(_gp_a!=-1);
- OP_ASSERT(_gp_b!=-1);
- /*Handle the wrapping cases.*/
- if(OP_UNLIKELY(_gp_a<0)){
- if(_gp_b>=0)return 1;
- /*Else fall through.*/
- }
- else if(OP_UNLIKELY(_gp_b<0))return -1;
- /*No wrapping case.*/
- return (_gp_a>_gp_b)-(_gp_b>_gp_a);
-}
-
-/*Returns the duration of the packet (in samples at 48 kHz), or a negative
- value on error.*/
-static int op_get_packet_duration(const unsigned char *_data,int _len){
- int nframes;
- int frame_size;
- int nsamples;
- nframes=opus_packet_get_nb_frames(_data,_len);
- if(OP_UNLIKELY(nframes<0))return OP_EBADPACKET;
- frame_size=opus_packet_get_samples_per_frame(_data,48000);
- nsamples=nframes*frame_size;
- if(OP_UNLIKELY(nsamples>120*48))return OP_EBADPACKET;
- return nsamples;
-}
-
-/*This function more properly belongs in info.c, but we define it here to allow
- the static granule position manipulation functions to remain static.*/
-ogg_int64_t opus_granule_sample(const OpusHead *_head,ogg_int64_t _gp){
- opus_int32 pre_skip;
- pre_skip=_head->pre_skip;
- if(_gp!=-1&&op_granpos_add(&_gp,_gp,-pre_skip))_gp=-1;
- return _gp;
-}
-
-/*Grab all the packets currently in the stream state, and compute their
- durations.
- _of->op_count is set to the number of packets collected.
- [out] _durations: Returns the durations of the individual packets.
- Return: The total duration of all packets, or OP_HOLE if there was a hole.*/
-static opus_int32 op_collect_audio_packets(OggOpusFile *_of,
- int _durations[255]){
- opus_int32 total_duration;
- int op_count;
- /*Count the durations of all packets in the page.*/
- op_count=0;
- total_duration=0;
- for(;;){
- int ret;
- /*This takes advantage of undocumented libogg behavior that returned
- ogg_packet buffers are valid at least until the next page is
- submitted.
- Relying on this is not too terrible, as _none_ of the Ogg memory
- ownership/lifetime rules are well-documented.
- But I can read its code and know this will work.*/
- ret=ogg_stream_packetout(&_of->os,_of->op+op_count);
- if(!ret)break;
- if(OP_UNLIKELY(ret<0)){
- /*We shouldn't get holes in the middle of pages.*/
- OP_ASSERT(op_count==0);
- /*Set the return value and break out of the loop.
- We want to make sure op_count gets set to 0, because we've ingested a
- page, so any previously loaded packets are now invalid.*/
- total_duration=OP_HOLE;
- break;
- }
- /*Unless libogg is broken, we can't get more than 255 packets from a
- single page.*/
- OP_ASSERT(op_count<255);
- _durations[op_count]=op_get_packet_duration(_of->op[op_count].packet,
- _of->op[op_count].bytes);
- if(OP_LIKELY(_durations[op_count]>0)){
- /*With at most 255 packets on a page, this can't overflow.*/
- total_duration+=_durations[op_count++];
- }
- /*Ignore packets with an invalid TOC sequence.*/
- else if(op_count>0){
- /*But save the granule position, if there was one.*/
- _of->op[op_count-1].granulepos=_of->op[op_count].granulepos;
- }
- }
- _of->op_pos=0;
- _of->op_count=op_count;
- return total_duration;
-}
-
-/*Starting from current cursor position, get the initial PCM offset of the next
- page.
- This also validates the granule position on the first page with a completed
- audio data packet, as required by the spec.
- If this link is completely empty (no pages with completed packets), then this
- function sets pcm_start=pcm_end=0 and returns the BOS page of the next link
- (if any).
- In the seekable case, we initialize pcm_end=-1 before calling this function,
- so that later we can detect that the link was empty before calling
- op_find_final_pcm_offset().
- [inout] _link: The link for which to find pcm_start.
- [out] _og: Returns the BOS page of the next link if this link was empty.
- In the unseekable case, we can then feed this to
- op_fetch_headers() to start the next link.
- The caller may pass NULL (e.g., for seekable streams), in
- which case this page will be discarded.
- Return: 0 on success, 1 if there is a buffered BOS page available, or a
- negative value on unrecoverable error.*/
-static int op_find_initial_pcm_offset(OggOpusFile *_of,
- OggOpusLink *_link,ogg_page *_og){
- ogg_page og;
- opus_int64 page_offset;
- ogg_int64_t pcm_start;
- ogg_int64_t prev_packet_gp;
- ogg_int64_t cur_page_gp;
- ogg_uint32_t serialno;
- opus_int32 total_duration;
- int durations[255];
- int cur_page_eos;
- int op_count;
- int pi;
- if(_og==NULL)_og=&og;
- serialno=_of->os.serialno;
- op_count=0;
- /*We shouldn't have to initialize total_duration, but gcc is too dumb to
- figure out that op_count>0 implies we've been through the whole loop at
- least once.*/
- total_duration=0;
- do{
- page_offset=op_get_next_page(_of,_og,_of->end);
- /*We should get a page unless the file is truncated or mangled.
- Otherwise there are no audio data packets in the whole logical stream.*/
- if(OP_UNLIKELY(page_offset<0)){
- /*Fail if there was a read error.*/
- if(page_offset<OP_FALSE)return (int)page_offset;
- /*Fail if the pre-skip is non-zero, since it's asking us to skip more
- samples than exist.*/
- if(_link->head.pre_skip>0)return OP_EBADTIMESTAMP;
- /*Set pcm_end and end_offset so we can skip the call to
- op_find_final_pcm_offset().*/
- _link->pcm_start=_link->pcm_end=0;
- _link->end_offset=_link->data_offset;
- return 0;
- }
- /*Similarly, if we hit the next link in the chain, we've gone too far.*/
- if(OP_UNLIKELY(ogg_page_bos(_og))){
- if(_link->head.pre_skip>0)return OP_EBADTIMESTAMP;
- /*Set pcm_end and end_offset so we can skip the call to
- op_find_final_pcm_offset().*/
- _link->pcm_end=_link->pcm_start=0;
- _link->end_offset=_link->data_offset;
- /*Tell the caller we've got a buffered page for them.*/
- return 1;
- }
- /*Ignore pages from other streams (not strictly necessary, because of the
- checks in ogg_stream_pagein(), but saves some work).*/
- if(serialno!=(ogg_uint32_t)ogg_page_serialno(_og))continue;
- ogg_stream_pagein(&_of->os,_og);
- /*Bitrate tracking: add the header's bytes here.
- The body bytes are counted when we consume the packets.*/
- _of->bytes_tracked+=_og->header_len;
- /*Count the durations of all packets in the page.*/
- do total_duration=op_collect_audio_packets(_of,durations);
- /*Ignore holes.*/
- while(OP_UNLIKELY(total_duration<0));
- op_count=_of->op_count;
- }
- while(op_count<=0);
- /*We found the first page with a completed audio data packet: actually look
- at the granule position.
- RFC 3533 says, "A special value of -1 (in two's complement) indicates that
- no packets finish on this page," which does not say that a granule
- position that is NOT -1 indicates that some packets DO finish on that page
- (even though this was the intention, libogg itself violated this intention
- for years before we fixed it).
- The Ogg Opus specification only imposes its start-time requirements
- on the granule position of the first page with completed packets,
- so we ignore any set granule positions until then.*/
- cur_page_gp=_of->op[op_count-1].granulepos;
- /*But getting a packet without a valid granule position on the page is not
- okay.*/
- if(cur_page_gp==-1)return OP_EBADTIMESTAMP;
- cur_page_eos=_of->op[op_count-1].e_o_s;
- if(OP_LIKELY(!cur_page_eos)){
- /*The EOS flag wasn't set.
- Work backwards from the provided granule position to get the starting PCM
- offset.*/
- if(OP_UNLIKELY(op_granpos_add(&pcm_start,cur_page_gp,-total_duration)<0)){
- /*The starting granule position MUST not be smaller than the amount of
- audio on the first page with completed packets.*/
- return OP_EBADTIMESTAMP;
- }
- }
- else{
- /*The first page with completed packets was also the last.*/
- if(OP_LIKELY(op_granpos_add(&pcm_start,cur_page_gp,-total_duration)<0)){
- /*If there's less audio on the page than indicated by the granule
- position, then we're doing end-trimming, and the starting PCM offset
- is zero by spec mandate.*/
- pcm_start=0;
- /*However, the end-trimming MUST not ask us to trim more samples than
- exist after applying the pre-skip.*/
- if(OP_UNLIKELY(op_granpos_cmp(cur_page_gp,_link->head.pre_skip)<0)){
- return OP_EBADTIMESTAMP;
- }
- }
- }
- /*Timestamp the individual packets.*/
- prev_packet_gp=pcm_start;
- for(pi=0;pi<op_count;pi++){
- if(cur_page_eos){
- ogg_int64_t diff;
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff,cur_page_gp,prev_packet_gp));
- diff=durations[pi]-diff;
- /*If we have samples to trim...*/
- if(diff>0){
- /*If we trimmed the entire packet, stop (the spec says encoders
- shouldn't do this, but we support it anyway).*/
- if(OP_UNLIKELY(diff>durations[pi]))break;
- _of->op[pi].granulepos=prev_packet_gp=cur_page_gp;
- /*Move the EOS flag to this packet, if necessary, so we'll trim the
- samples.*/
- _of->op[pi].e_o_s=1;
- continue;
- }
- }
- /*Update the granule position as normal.*/
- OP_ALWAYS_TRUE(!op_granpos_add(&_of->op[pi].granulepos,
- prev_packet_gp,durations[pi]));
- prev_packet_gp=_of->op[pi].granulepos;
- }
- /*Update the packet count after end-trimming.*/
- _of->op_count=pi;
- _of->cur_discard_count=_link->head.pre_skip;
- _of->prev_packet_gp=_link->pcm_start=pcm_start;
- _of->prev_page_offset=page_offset;
- return 0;
-}
-
-/*Starting from current cursor position, get the final PCM offset of the
- previous page.
- This also validates the duration of the link, which, while not strictly
- required by the spec, we need to ensure duration calculations don't
- overflow.
- This is only done for seekable sources.
- We must validate that op_find_initial_pcm_offset() succeeded for this link
- before calling this function, otherwise it will scan the entire stream
- backwards until it reaches the start, and then fail.*/
-static int op_find_final_pcm_offset(OggOpusFile *_of,
- const ogg_uint32_t *_serialnos,int _nserialnos,OggOpusLink *_link,
- opus_int64 _offset,ogg_uint32_t _end_serialno,ogg_int64_t _end_gp,
- ogg_int64_t *_total_duration){
- ogg_int64_t total_duration;
- ogg_int64_t duration;
- ogg_uint32_t cur_serialno;
- /*For the time being, fetch end PCM offset the simple way.*/
- cur_serialno=_link->serialno;
- if(_end_serialno!=cur_serialno||_end_gp==-1){
- _offset=op_get_last_page(_of,&_end_gp,_offset,
- cur_serialno,_serialnos,_nserialnos);
- if(OP_UNLIKELY(_offset<0))return (int)_offset;
- }
- /*At worst we should have found the first page with completed packets.*/
- if(OP_UNLIKELY(_offset<_link->data_offset))return OP_EBADLINK;
- /*This implementation requires that the difference between the first and last
- granule positions in each link be representable in a signed, 64-bit
- number, and that each link also have at least as many samples as the
- pre-skip requires.*/
- if(OP_UNLIKELY(op_granpos_diff(&duration,_end_gp,_link->pcm_start)<0)
- ||OP_UNLIKELY(duration<_link->head.pre_skip)){
- return OP_EBADTIMESTAMP;
- }
- /*We also require that the total duration be representable in a signed,
- 64-bit number.*/
- duration-=_link->head.pre_skip;
- total_duration=*_total_duration;
- if(OP_UNLIKELY(OP_INT64_MAX-duration<total_duration))return OP_EBADTIMESTAMP;
- *_total_duration=total_duration+duration;
- _link->pcm_end=_end_gp;
- _link->end_offset=_offset;
- return 0;
-}
-
-/*Rescale the number _x from the range [0,_from] to [0,_to].
- _from and _to must be positive.*/
-static opus_int64 op_rescale64(opus_int64 _x,opus_int64 _from,opus_int64 _to){
- opus_int64 frac;
- opus_int64 ret;
- int i;
- if(_x>=_from)return _to;
- if(_x<=0)return 0;
- frac=0;
- for(i=0;i<63;i++){
- frac<<=1;
- OP_ASSERT(_x<=_from);
- if(_x>=_from>>1){
- _x-=_from-_x;
- frac|=1;
- }
- else _x<<=1;
- }
- ret=0;
- for(i=0;i<63;i++){
- if(frac&1)ret=(ret&_to&1)+(ret>>1)+(_to>>1);
- else ret>>=1;
- frac>>=1;
- }
- return ret;
-}
-
-/*The minimum granule position spacing allowed for making predictions.
- This corresponds to about 1 second of audio at 48 kHz for both Opus and
- Vorbis, or one keyframe interval in Theora with the default keyframe spacing
- of 256.*/
-#define OP_GP_SPACING_MIN (48000)
-
-/*Try to estimate the location of the next link using the current seek
- records, assuming the initial granule position of any streams we've found is
- 0.*/
-static opus_int64 op_predict_link_start(const OpusSeekRecord *_sr,int _nsr,
- opus_int64 _searched,opus_int64 _end_searched,opus_int32 _bias){
- opus_int64 bisect;
- int sri;
- int srj;
- /*Require that we be at least OP_CHUNK_SIZE from the end.
- We don't require that we be at least OP_CHUNK_SIZE from the beginning,
- because if we are we'll just scan forward without seeking.*/
- _end_searched-=OP_CHUNK_SIZE;
- if(_searched>=_end_searched)return -1;
- bisect=_end_searched;
- for(sri=0;sri<_nsr;sri++){
- ogg_int64_t gp1;
- ogg_int64_t gp2_min;
- ogg_uint32_t serialno1;
- opus_int64 offset1;
- /*If the granule position is negative, either it's invalid or we'd cause
- overflow.*/
- gp1=_sr[sri].gp;
- if(gp1<0)continue;
- /*We require some minimum distance between granule positions to make an
- estimate.
- We don't actually know what granule position scheme is being used,
- because we have no idea what kind of stream these came from.
- Therefore we require a minimum spacing between them, with the
- expectation that while bitrates and granule position increments might
- vary locally in quite complex ways, they are globally smooth.*/
- if(OP_UNLIKELY(op_granpos_add(&gp2_min,gp1,OP_GP_SPACING_MIN)<0)){
- /*No granule position would satisfy us.*/
- continue;
- }
- offset1=_sr[sri].offset;
- serialno1=_sr[sri].serialno;
- for(srj=sri;srj-->0;){
- ogg_int64_t gp2;
- opus_int64 offset2;
- opus_int64 num;
- ogg_int64_t den;
- ogg_int64_t ipart;
- gp2=_sr[srj].gp;
- if(gp2<gp2_min)continue;
- /*Oh, and also make sure these came from the same stream.*/
- if(_sr[srj].serialno!=serialno1)continue;
- offset2=_sr[srj].offset;
- /*For once, we can subtract with impunity.*/
- den=gp2-gp1;
- ipart=gp2/den;
- num=offset2-offset1;
- OP_ASSERT(num>0);
- if(ipart>0&&(offset2-_searched)/ipart<num)continue;
- offset2-=ipart*num;
- gp2-=ipart*den;
- offset2-=op_rescale64(gp2,den,num)-_bias;
- if(offset2<_searched)continue;
- bisect=OP_MIN(bisect,offset2);
- break;
- }
- }
- return bisect>=_end_searched?-1:bisect;
-}
-
-/*Finds each bitstream link, one at a time, using a bisection search.
- This has to begin by knowing the offset of the first link's initial page.*/
-static int op_bisect_forward_serialno(OggOpusFile *_of,
- opus_int64 _searched,OpusSeekRecord *_sr,int _csr,
- ogg_uint32_t **_serialnos,int *_nserialnos,int *_cserialnos){
- ogg_page og;
- OggOpusLink *links;
- int nlinks;
- int clinks;
- ogg_uint32_t *serialnos;
- int nserialnos;
- ogg_int64_t total_duration;
- int nsr;
- int ret;
- links=_of->links;
- nlinks=clinks=_of->nlinks;
- total_duration=0;
- /*We start with one seek record, for the last page in the file.
- We build up a list of records for places we seek to during link
- enumeration.
- This list is kept sorted in reverse order.
- We only care about seek locations that were _not_ in the current link,
- therefore we can add them one at a time to the end of the list as we
- improve the lower bound on the location where the next link starts.*/
- nsr=1;
- for(;;){
- opus_int64 end_searched;
- opus_int64 bisect;
- opus_int64 next;
- opus_int64 last;
- ogg_int64_t end_offset;
- ogg_int64_t end_gp;
- int sri;
- serialnos=*_serialnos;
- nserialnos=*_nserialnos;
- if(OP_UNLIKELY(nlinks>=clinks)){
- if(OP_UNLIKELY(clinks>INT_MAX-1>>1))return OP_EFAULT;
- clinks=2*clinks+1;
- OP_ASSERT(nlinks<clinks);
- links=(OggOpusLink *)_ogg_realloc(links,sizeof(*links)*clinks);
- if(OP_UNLIKELY(links==NULL))return OP_EFAULT;
- _of->links=links;
- }
- /*Invariants:
- We have the headers and serial numbers for the link beginning at 'begin'.
- We have the offset and granule position of the last page in the file
- (potentially not a page we care about).*/
- /*Scan the seek records we already have to save us some bisection.*/
- for(sri=0;sri<nsr;sri++){
- if(op_lookup_serialno(_sr[sri].serialno,serialnos,nserialnos))break;
- }
- /*Is the last page in our current list of serial numbers?*/
- if(sri<=0)break;
- /*Last page wasn't found.
- We have at least one more link.*/
- last=-1;
- end_searched=_sr[sri-1].search_start;
- next=_sr[sri-1].offset;
- end_gp=-1;
- if(sri<nsr){
- _searched=_sr[sri].offset+_sr[sri].size;
- if(_sr[sri].serialno==links[nlinks-1].serialno){
- end_gp=_sr[sri].gp;
- end_offset=_sr[sri].offset;
- }
- }
- nsr=sri;
- bisect=-1;
- /*If we've already found the end of at least one link, try to pick the
- first bisection point at twice the average link size.
- This is a good choice for files with lots of links that are all about the
- same size.*/
- if(nlinks>1){
- opus_int64 last_offset;
- opus_int64 avg_link_size;
- opus_int64 upper_limit;
- last_offset=links[nlinks-1].offset;
- avg_link_size=last_offset/(nlinks-1);
- upper_limit=end_searched-OP_CHUNK_SIZE-avg_link_size;
- if(OP_LIKELY(last_offset>_searched-avg_link_size)
- &&OP_LIKELY(last_offset<upper_limit)){
- bisect=last_offset+avg_link_size;
- if(OP_LIKELY(bisect<upper_limit))bisect+=avg_link_size;
- }
- }
- /*We guard against garbage separating the last and first pages of two
- links below.*/
- while(_searched<end_searched){
- opus_int32 next_bias;
- /*If we don't have a better estimate, use simple bisection.*/
- if(bisect==-1)bisect=_searched+(end_searched-_searched>>1);
- /*If we're within OP_CHUNK_SIZE of the start, scan forward.*/
- if(bisect-_searched<OP_CHUNK_SIZE)bisect=_searched;
- /*Otherwise we're skipping data.
- Forget the end page, if we saw one, as we might miss a later one.*/
- else end_gp=-1;
- ret=op_seek_helper(_of,bisect);
- if(OP_UNLIKELY(ret<0))return ret;
- last=op_get_next_page(_of,&og,_sr[nsr-1].offset);
- if(OP_UNLIKELY(last<OP_FALSE))return (int)last;
- next_bias=0;
- if(last==OP_FALSE)end_searched=bisect;
- else{
- ogg_uint32_t serialno;
- ogg_int64_t gp;
- serialno=ogg_page_serialno(&og);
- gp=ogg_page_granulepos(&og);
- if(!op_lookup_serialno(serialno,serialnos,nserialnos)){
- end_searched=bisect;
- next=last;
- /*In reality we should always have enough room, but be paranoid.*/
- if(OP_LIKELY(nsr<_csr)){
- _sr[nsr].search_start=bisect;
- _sr[nsr].offset=last;
- OP_ASSERT(_of->offset-last>=0);
- OP_ASSERT(_of->offset-last<=OP_PAGE_SIZE_MAX);
- _sr[nsr].size=(opus_int32)(_of->offset-last);
- _sr[nsr].serialno=serialno;
- _sr[nsr].gp=gp;
- nsr++;
- }
- }
- else{
- _searched=_of->offset;
- next_bias=OP_CHUNK_SIZE;
- if(serialno==links[nlinks-1].serialno){
- /*This page was from the stream we want, remember it.
- If it's the last such page in the link, we won't have to go back
- looking for it later.*/
- end_gp=gp;
- end_offset=last;
- }
- }
- }
- bisect=op_predict_link_start(_sr,nsr,_searched,end_searched,next_bias);
- }
- /*Bisection point found.
- Get the final granule position of the previous link, assuming
- op_find_initial_pcm_offset() didn't already determine the link was
- empty.*/
- if(OP_LIKELY(links[nlinks-1].pcm_end==-1)){
- if(end_gp==-1){
- /*If we don't know where the end page is, we'll have to seek back and
- look for it, starting from the end of the link.*/
- end_offset=next;
- /*Also forget the last page we read.
- It won't be available after the seek.*/
- last=-1;
- }
- ret=op_find_final_pcm_offset(_of,serialnos,nserialnos,
- links+nlinks-1,end_offset,links[nlinks-1].serialno,end_gp,
- &total_duration);
- if(OP_UNLIKELY(ret<0))return ret;
- }
- if(last!=next){
- /*The last page we read was not the first page the next link.
- Move the cursor position to the offset of that first page.
- This only performs an actual seek if the first page of the next link
- does not start at the end of the last page from the current Opus
- stream with a valid granule position.*/
- ret=op_seek_helper(_of,next);
- if(OP_UNLIKELY(ret<0))return ret;
- }
- ret=op_fetch_headers(_of,&links[nlinks].head,&links[nlinks].tags,
- _serialnos,_nserialnos,_cserialnos,last!=next?NULL:&og);
- if(OP_UNLIKELY(ret<0))return ret;
- links[nlinks].offset=next;
- links[nlinks].data_offset=_of->offset;
- links[nlinks].serialno=_of->os.serialno;
- links[nlinks].pcm_end=-1;
- /*This might consume a page from the next link, however the next bisection
- always starts with a seek.*/
- ret=op_find_initial_pcm_offset(_of,links+nlinks,NULL);
- if(OP_UNLIKELY(ret<0))return ret;
- _searched=_of->offset;
- /*Mark the current link count so it can be cleaned up on error.*/
- _of->nlinks=++nlinks;
- }
- /*Last page is in the starting serialno list, so we've reached the last link.
- Now find the last granule position for it (if we didn't the first time we
- looked at the end of the stream, and if op_find_initial_pcm_offset()
- didn't already determine the link was empty).*/
- if(OP_LIKELY(links[nlinks-1].pcm_end==-1)){
- ret=op_find_final_pcm_offset(_of,serialnos,nserialnos,
- links+nlinks-1,_sr[0].offset,_sr[0].serialno,_sr[0].gp,&total_duration);
- if(OP_UNLIKELY(ret<0))return ret;
- }
- /*Trim back the links array if necessary.*/
- links=(OggOpusLink *)_ogg_realloc(links,sizeof(*links)*nlinks);
- if(OP_LIKELY(links!=NULL))_of->links=links;
- /*We also don't need these anymore.*/
- _ogg_free(*_serialnos);
- *_serialnos=NULL;
- *_cserialnos=*_nserialnos=0;
- return 0;
-}
-
-static void op_update_gain(OggOpusFile *_of){
- OpusHead *head;
- opus_int32 gain_q8;
- int li;
- /*If decode isn't ready, then we'll apply the gain when we initialize the
- decoder.*/
- if(_of->ready_state<OP_INITSET)return;
- gain_q8=_of->gain_offset_q8;
- li=_of->seekable?_of->cur_link:0;
- head=&_of->links[li].head;
- /*We don't have to worry about overflow here because the header gain and
- track gain must lie in the range [-32768,32767], and the user-supplied
- offset has been pre-clamped to [-98302,98303].*/
- switch(_of->gain_type){
- case OP_ALBUM_GAIN:{
- int album_gain_q8;
- album_gain_q8=0;
- opus_tags_get_album_gain(&_of->links[li].tags,&album_gain_q8);
- gain_q8+=album_gain_q8;
- gain_q8+=head->output_gain;
- }break;
- case OP_TRACK_GAIN:{
- int track_gain_q8;
- track_gain_q8=0;
- opus_tags_get_track_gain(&_of->links[li].tags,&track_gain_q8);
- gain_q8+=track_gain_q8;
- gain_q8+=head->output_gain;
- }break;
- case OP_HEADER_GAIN:gain_q8+=head->output_gain;break;
- case OP_ABSOLUTE_GAIN:break;
- default:OP_ASSERT(0);
- }
- gain_q8=OP_CLAMP(-32768,gain_q8,32767);
- OP_ASSERT(_of->od!=NULL);
-#if defined(OPUS_SET_GAIN)
- opus_multistream_decoder_ctl(_of->od,OPUS_SET_GAIN(gain_q8));
-#else
-/*A fallback that works with both float and fixed-point is a bunch of work,
- so just force people to use a sufficiently new version.
- This is deployed well enough at this point that this shouldn't be a burden.*/
-# error "libopus 1.0.1 or later required"
-#endif
-}
-
-static int op_make_decode_ready(OggOpusFile *_of){
- const OpusHead *head;
- int li;
- int stream_count;
- int coupled_count;
- int channel_count;
- if(_of->ready_state>OP_STREAMSET)return 0;
- if(OP_UNLIKELY(_of->ready_state<OP_STREAMSET))return OP_EFAULT;
- li=_of->seekable?_of->cur_link:0;
- head=&_of->links[li].head;
- stream_count=head->stream_count;
- coupled_count=head->coupled_count;
- channel_count=head->channel_count;
- /*Check to see if the current decoder is compatible with the current link.*/
- if(_of->od!=NULL&&_of->od_stream_count==stream_count
- &&_of->od_coupled_count==coupled_count&&_of->od_channel_count==channel_count
- &&memcmp(_of->od_mapping,head->mapping,
- sizeof(*head->mapping)*channel_count)==0){
- opus_multistream_decoder_ctl(_of->od,OPUS_RESET_STATE);
- }
- else{
- int err;
- opus_multistream_decoder_destroy(_of->od);
- _of->od=opus_multistream_decoder_create(48000,channel_count,
- stream_count,coupled_count,head->mapping,&err);
- if(_of->od==NULL)return OP_EFAULT;
- _of->od_stream_count=stream_count;
- _of->od_coupled_count=coupled_count;
- _of->od_channel_count=channel_count;
- memcpy(_of->od_mapping,head->mapping,sizeof(*head->mapping)*channel_count);
- }
- _of->ready_state=OP_INITSET;
- _of->bytes_tracked=0;
- _of->samples_tracked=0;
-#if !defined(OP_FIXED_POINT)
- _of->state_channel_count=0;
- /*Use the serial number for the PRNG seed to get repeatable output for
- straight play-throughs.*/
- _of->dither_seed=_of->links[li].serialno;
-#endif
- op_update_gain(_of);
- return 0;
-}
-
-static int op_open_seekable2_impl(OggOpusFile *_of){
- /*64 seek records should be enough for anybody.
- Actually, with a bisection search in a 63-bit range down to OP_CHUNK_SIZE
- granularity, much more than enough.*/
- OpusSeekRecord sr[64];
- opus_int64 data_offset;
- int ret;
- /*We can seek, so set out learning all about this file.*/
- (*_of->callbacks.seek)(_of->source,0,SEEK_END);
- _of->offset=_of->end=(*_of->callbacks.tell)(_of->source);
- if(OP_UNLIKELY(_of->end<0))return OP_EREAD;
- data_offset=_of->links[0].data_offset;
- if(OP_UNLIKELY(_of->end<data_offset))return OP_EBADLINK;
- /*Get the offset of the last page of the physical bitstream, or, if we're
- lucky, the last Opus page of the first link, as most Ogg Opus files will
- contain a single logical bitstream.*/
- ret=op_get_prev_page_serial(_of,sr,_of->end,
- _of->links[0].serialno,_of->serialnos,_of->nserialnos);
- if(OP_UNLIKELY(ret<0))return ret;
- /*If there's any trailing junk, forget about it.*/
- _of->end=sr[0].offset+sr[0].size;
- if(OP_UNLIKELY(_of->end<data_offset))return OP_EBADLINK;
- /*Now enumerate the bitstream structure.*/
- return op_bisect_forward_serialno(_of,data_offset,sr,sizeof(sr)/sizeof(*sr),
- &_of->serialnos,&_of->nserialnos,&_of->cserialnos);
-}
-
-static int op_open_seekable2(OggOpusFile *_of){
- ogg_sync_state oy_start;
- ogg_stream_state os_start;
- ogg_packet *op_start;
- opus_int64 prev_page_offset;
- opus_int64 start_offset;
- int start_op_count;
- int ret;
- /*We're partially open and have a first link header state in storage in _of.
- Save off that stream state so we can come back to it.
- It would be simpler to just dump all this state and seek back to
- links[0].data_offset when we're done.
- But we do the extra work to allow us to seek back to _exactly_ the same
- stream position we're at now.
- This allows, e.g., the HTTP backend to continue reading from the original
- connection (if it's still available), instead of opening a new one.
- This means we can open and start playing a normal Opus file with a single
- link and reasonable packet sizes using only two HTTP requests.*/
- start_op_count=_of->op_count;
- /*This is a bit too large to put on the stack unconditionally.*/
- op_start=(ogg_packet *)_ogg_malloc(sizeof(*op_start)*start_op_count);
- if(op_start==NULL)return OP_EFAULT;
- *&oy_start=_of->oy;
- *&os_start=_of->os;
- prev_page_offset=_of->prev_page_offset;
- start_offset=_of->offset;
- memcpy(op_start,_of->op,sizeof(*op_start)*start_op_count);
- OP_ASSERT((*_of->callbacks.tell)(_of->source)==op_position(_of));
- ogg_sync_init(&_of->oy);
- ogg_stream_init(&_of->os,-1);
- ret=op_open_seekable2_impl(_of);
- /*Restore the old stream state.*/
- ogg_stream_clear(&_of->os);
- ogg_sync_clear(&_of->oy);
- *&_of->oy=*&oy_start;
- *&_of->os=*&os_start;
- _of->offset=start_offset;
- _of->op_count=start_op_count;
- memcpy(_of->op,op_start,sizeof(*_of->op)*start_op_count);
- _ogg_free(op_start);
- _of->prev_packet_gp=_of->links[0].pcm_start;
- _of->prev_page_offset=prev_page_offset;
- _of->cur_discard_count=_of->links[0].head.pre_skip;
- if(OP_UNLIKELY(ret<0))return ret;
- /*And restore the position indicator.*/
- ret=(*_of->callbacks.seek)(_of->source,op_position(_of),SEEK_SET);
- return OP_UNLIKELY(ret<0)?OP_EREAD:0;
-}
-
-/*Clear out the current logical bitstream decoder.*/
-static void op_decode_clear(OggOpusFile *_of){
- /*We don't actually free the decoder.
- We might be able to re-use it for the next link.*/
- _of->op_count=0;
- _of->od_buffer_size=0;
- _of->prev_packet_gp=-1;
- _of->prev_page_offset=-1;
- if(!_of->seekable){
- OP_ASSERT(_of->ready_state>=OP_INITSET);
- opus_tags_clear(&_of->links[0].tags);
- }
- _of->ready_state=OP_OPENED;
-}
-
-static void op_clear(OggOpusFile *_of){
- OggOpusLink *links;
- _ogg_free(_of->od_buffer);
- if(_of->od!=NULL)opus_multistream_decoder_destroy(_of->od);
- links=_of->links;
- if(!_of->seekable){
- if(_of->ready_state>OP_OPENED||_of->ready_state==OP_PARTOPEN){
- opus_tags_clear(&links[0].tags);
- }
- }
- else if(OP_LIKELY(links!=NULL)){
- int nlinks;
- int link;
- nlinks=_of->nlinks;
- for(link=0;link<nlinks;link++)opus_tags_clear(&links[link].tags);
- }
- _ogg_free(links);
- _ogg_free(_of->serialnos);
- ogg_stream_clear(&_of->os);
- ogg_sync_clear(&_of->oy);
- if(_of->callbacks.close!=NULL)(*_of->callbacks.close)(_of->source);
-}
-
-static int op_open1(OggOpusFile *_of,
- void *_source,const OpusFileCallbacks *_cb,
- const unsigned char *_initial_data,size_t _initial_bytes){
- ogg_page og;
- ogg_page *pog;
- int seekable;
- int ret;
- memset(_of,0,sizeof(*_of));
- _of->end=-1;
- _of->source=_source;
- *&_of->callbacks=*_cb;
- /*At a minimum, we need to be able to read data.*/
- if(OP_UNLIKELY(_of->callbacks.read==NULL))return OP_EREAD;
- /*Initialize the framing state.*/
- ogg_sync_init(&_of->oy);
- /*Perhaps some data was previously read into a buffer for testing against
- other stream types.
- Allow initialization from this previously read data (especially as we may
- be reading from a non-seekable stream).
- This requires copying it into a buffer allocated by ogg_sync_buffer() and
- doesn't support seeking, so this is not a good mechanism to use for
- decoding entire files from RAM.*/
- if(_initial_bytes>0){
- char *buffer;
- buffer=ogg_sync_buffer(&_of->oy,_initial_bytes);
- memcpy(buffer,_initial_data,_initial_bytes*sizeof(*buffer));
- ogg_sync_wrote(&_of->oy,_initial_bytes);
- }
- /*Can we seek?
- Stevens suggests the seek test is portable.*/
- seekable=_cb->seek!=NULL&&(*_cb->seek)(_source,0,SEEK_CUR)!=-1;
- /*If seek is implemented, tell must also be implemented.*/
- if(seekable){
- opus_int64 pos;
- if(OP_UNLIKELY(_of->callbacks.tell==NULL))return OP_EINVAL;
- pos=(*_of->callbacks.tell)(_of->source);
- /*If the current position is not equal to the initial bytes consumed,
- absolute seeking will not work.*/
- if(OP_UNLIKELY(pos!=(opus_int64)_initial_bytes))return OP_EINVAL;
- }
- _of->seekable=seekable;
- /*Don't seek yet.
- Set up a 'single' (current) logical bitstream entry for partial open.*/
- _of->links=(OggOpusLink *)_ogg_malloc(sizeof(*_of->links));
- /*The serialno gets filled in later by op_fetch_headers().*/
- ogg_stream_init(&_of->os,-1);
- pog=NULL;
- for(;;){
- /*Fetch all BOS pages, store the Opus header and all seen serial numbers,
- and load subsequent Opus setup headers.*/
- ret=op_fetch_headers(_of,&_of->links[0].head,&_of->links[0].tags,
- &_of->serialnos,&_of->nserialnos,&_of->cserialnos,pog);
- if(OP_UNLIKELY(ret<0))break;
- _of->nlinks=1;
- _of->links[0].offset=0;
- _of->links[0].data_offset=_of->offset;
- _of->links[0].pcm_end=-1;
- _of->links[0].serialno=_of->os.serialno;
- /*Fetch the initial PCM offset.*/
- ret=op_find_initial_pcm_offset(_of,_of->links,&og);
- if(seekable||OP_LIKELY(ret<=0))break;
- /*This link was empty, but we already have the BOS page for the next one in
- og.
- We can't seek, so start processing the next link right now.*/
- opus_tags_clear(&_of->links[0].tags);
- _of->nlinks=0;
- if(!seekable)_of->cur_link++;
- pog=&og;
- }
- if(OP_LIKELY(ret>=0))_of->ready_state=OP_PARTOPEN;
- return ret;
-}
-
-static int op_open2(OggOpusFile *_of){
- int ret;
- OP_ASSERT(_of->ready_state==OP_PARTOPEN);
- if(_of->seekable){
- _of->ready_state=OP_OPENED;
- ret=op_open_seekable2(_of);
- }
- else ret=0;
- if(OP_LIKELY(ret>=0)){
- /*We have buffered packets from op_find_initial_pcm_offset().
- Move to OP_INITSET so we can use them.*/
- _of->ready_state=OP_STREAMSET;
- ret=op_make_decode_ready(_of);
- if(OP_LIKELY(ret>=0))return 0;
- }
- /*Don't auto-close the stream on failure.*/
- _of->callbacks.close=NULL;
- op_clear(_of);
- return ret;
-}
-
-OggOpusFile *op_test_callbacks(void *_source,const OpusFileCallbacks *_cb,
- const unsigned char *_initial_data,size_t _initial_bytes,int *_error){
- OggOpusFile *of;
- int ret;
- of=(OggOpusFile *)_ogg_malloc(sizeof(*of));
- ret=OP_EFAULT;
- if(OP_LIKELY(of!=NULL)){
- ret=op_open1(of,_source,_cb,_initial_data,_initial_bytes);
- if(OP_LIKELY(ret>=0)){
- if(_error!=NULL)*_error=0;
- return of;
- }
- /*Don't auto-close the stream on failure.*/
- of->callbacks.close=NULL;
- op_clear(of);
- _ogg_free(of);
- }
- if(_error!=NULL)*_error=ret;
- return NULL;
-}
-
-OggOpusFile *op_open_callbacks(void *_source,const OpusFileCallbacks *_cb,
- const unsigned char *_initial_data,size_t _initial_bytes,int *_error){
- OggOpusFile *of;
- of=op_test_callbacks(_source,_cb,_initial_data,_initial_bytes,_error);
- if(OP_LIKELY(of!=NULL)){
- int ret;
- ret=op_open2(of);
- if(OP_LIKELY(ret>=0))return of;
- if(_error!=NULL)*_error=ret;
- _ogg_free(of);
- }
- return NULL;
-}
-
-/*Convenience routine to clean up from failure for the open functions that
- create their own streams.*/
-static OggOpusFile *op_open_close_on_failure(void *_source,
- const OpusFileCallbacks *_cb,int *_error){
- OggOpusFile *of;
- if(OP_UNLIKELY(_source==NULL)){
- if(_error!=NULL)*_error=OP_EFAULT;
- return NULL;
- }
- of=op_open_callbacks(_source,_cb,NULL,0,_error);
- if(OP_UNLIKELY(of==NULL))(*_cb->close)(_source);
- return of;
-}
-
-OggOpusFile *op_open_file(const char *_path,int *_error){
- OpusFileCallbacks cb;
- return op_open_close_on_failure(op_fopen(&cb,_path,"rb"),&cb,_error);
-}
-
-OggOpusFile *op_open_memory(const unsigned char *_data,size_t _size,
- int *_error){
- OpusFileCallbacks cb;
- return op_open_close_on_failure(op_mem_stream_create(&cb,_data,_size),&cb,
- _error);
-}
-
-/*Convenience routine to clean up from failure for the open functions that
- create their own streams.*/
-static OggOpusFile *op_test_close_on_failure(void *_source,
- const OpusFileCallbacks *_cb,int *_error){
- OggOpusFile *of;
- if(OP_UNLIKELY(_source==NULL)){
- if(_error!=NULL)*_error=OP_EFAULT;
- return NULL;
- }
- of=op_test_callbacks(_source,_cb,NULL,0,_error);
- if(OP_UNLIKELY(of==NULL))(*_cb->close)(_source);
- return of;
-}
-
-OggOpusFile *op_test_file(const char *_path,int *_error){
- OpusFileCallbacks cb;
- return op_test_close_on_failure(op_fopen(&cb,_path,"rb"),&cb,_error);
-}
-
-OggOpusFile *op_test_memory(const unsigned char *_data,size_t _size,
- int *_error){
- OpusFileCallbacks cb;
- return op_test_close_on_failure(op_mem_stream_create(&cb,_data,_size),&cb,
- _error);
-}
-
-int op_test_open(OggOpusFile *_of){
- int ret;
- if(OP_UNLIKELY(_of->ready_state!=OP_PARTOPEN))return OP_EINVAL;
- ret=op_open2(_of);
- /*op_open2() will clear this structure on failure.
- Reset its contents to prevent double-frees in op_free().*/
- if(OP_UNLIKELY(ret<0))memset(_of,0,sizeof(*_of));
- return ret;
-}
-
-void op_free(OggOpusFile *_of){
- if(OP_LIKELY(_of!=NULL)){
- op_clear(_of);
- _ogg_free(_of);
- }
-}
-
-int op_seekable(const OggOpusFile *_of){
- return _of->seekable;
-}
-
-int op_link_count(const OggOpusFile *_of){
- return _of->nlinks;
-}
-
-ogg_uint32_t op_serialno(const OggOpusFile *_of,int _li){
- if(OP_UNLIKELY(_li>=_of->nlinks))_li=_of->nlinks-1;
- if(!_of->seekable)_li=0;
- return _of->links[_li<0?_of->cur_link:_li].serialno;
-}
-
-int op_channel_count(const OggOpusFile *_of,int _li){
- return op_head(_of,_li)->channel_count;
-}
-
-opus_int64 op_raw_total(const OggOpusFile *_of,int _li){
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED)
- ||OP_UNLIKELY(!_of->seekable)
- ||OP_UNLIKELY(_li>=_of->nlinks)){
- return OP_EINVAL;
- }
- if(_li<0)return _of->end-_of->links[0].offset;
- return (_li+1>=_of->nlinks?_of->end:_of->links[_li+1].offset)
- -_of->links[_li].offset;
-}
-
-ogg_int64_t op_pcm_total(const OggOpusFile *_of,int _li){
- OggOpusLink *links;
- ogg_int64_t diff;
- int nlinks;
- nlinks=_of->nlinks;
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED)
- ||OP_UNLIKELY(!_of->seekable)
- ||OP_UNLIKELY(_li>=nlinks)){
- return OP_EINVAL;
- }
- links=_of->links;
- /*We verify that the granule position differences are larger than the
- pre-skip and that the total duration does not overflow during link
- enumeration, so we don't have to check here.*/
- if(_li<0){
- ogg_int64_t pcm_total;
- int li;
- pcm_total=0;
- for(li=0;li<nlinks;li++){
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff,
- links[li].pcm_end,links[li].pcm_start));
- pcm_total+=diff-links[li].head.pre_skip;
- }
- return pcm_total;
- }
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff,
- links[_li].pcm_end,links[_li].pcm_start));
- return diff-links[_li].head.pre_skip;
-}
-
-const OpusHead *op_head(const OggOpusFile *_of,int _li){
- if(OP_UNLIKELY(_li>=_of->nlinks))_li=_of->nlinks-1;
- if(!_of->seekable)_li=0;
- return &_of->links[_li<0?_of->cur_link:_li].head;
-}
-
-const OpusTags *op_tags(const OggOpusFile *_of,int _li){
- if(OP_UNLIKELY(_li>=_of->nlinks))_li=_of->nlinks-1;
- if(!_of->seekable){
- if(_of->ready_state<OP_STREAMSET&&_of->ready_state!=OP_PARTOPEN){
- return NULL;
- }
- _li=0;
- }
- else if(_li<0)_li=_of->ready_state>=OP_STREAMSET?_of->cur_link:0;
- return &_of->links[_li].tags;
-}
-
-int op_current_link(const OggOpusFile *_of){
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
- return _of->cur_link;
-}
-
-/*Compute an average bitrate given a byte and sample count.
- Return: The bitrate in bits per second.*/
-static opus_int32 op_calc_bitrate(opus_int64 _bytes,ogg_int64_t _samples){
- /*These rates are absurd, but let's handle them anyway.*/
- if(OP_UNLIKELY(_bytes>(OP_INT64_MAX-(_samples>>1))/(48000*8))){
- ogg_int64_t den;
- if(OP_UNLIKELY(_bytes/(OP_INT32_MAX/(48000*8))>=_samples)){
- return OP_INT32_MAX;
- }
- den=_samples/(48000*8);
- return (opus_int32)((_bytes+(den>>1))/den);
- }
- if(OP_UNLIKELY(_samples<=0))return OP_INT32_MAX;
- /*This can't actually overflow in normal operation: even with a pre-skip of
- 545 2.5 ms frames with 8 streams running at 1282*8+1 bytes per packet
- (1275 byte frames + Opus framing overhead + Ogg lacing values), that all
- produce a single sample of decoded output, we still don't top 45 Mbps.
- The only way to get bitrates larger than that is with excessive Opus
- padding, more encoded streams than output channels, or lots and lots of
- Ogg pages with no packets on them.*/
- return (opus_int32)OP_MIN((_bytes*48000*8+(_samples>>1))/_samples,
- OP_INT32_MAX);
-}
-
-opus_int32 op_bitrate(const OggOpusFile *_of,int _li){
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED)||OP_UNLIKELY(!_of->seekable)
- ||OP_UNLIKELY(_li>=_of->nlinks)){
- return OP_EINVAL;
- }
- return op_calc_bitrate(op_raw_total(_of,_li),op_pcm_total(_of,_li));
-}
-
-opus_int32 op_bitrate_instant(OggOpusFile *_of){
- ogg_int64_t samples_tracked;
- opus_int32 ret;
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
- samples_tracked=_of->samples_tracked;
- if(OP_UNLIKELY(samples_tracked==0))return OP_FALSE;
- ret=op_calc_bitrate(_of->bytes_tracked,samples_tracked);
- _of->bytes_tracked=0;
- _of->samples_tracked=0;
- return ret;
-}
-
-/*Fetch and process a page.
- This handles the case where we're at a bitstream boundary and dumps the
- decoding machine.
- If the decoding machine is unloaded, it loads it.
- It also keeps prev_packet_gp up to date (seek and read both use this).
- Return: <0) Error, OP_HOLE (lost packet), or OP_EOF.
- 0) Got at least one audio data packet.*/
-static int op_fetch_and_process_page(OggOpusFile *_of,
- ogg_page *_og,opus_int64 _page_offset,int _spanp,int _ignore_holes){
- OggOpusLink *links;
- ogg_uint32_t cur_serialno;
- int seekable;
- int cur_link;
- int ret;
- /*We shouldn't get here if we have unprocessed packets.*/
- OP_ASSERT(_of->ready_state<OP_INITSET||_of->op_pos>=_of->op_count);
- seekable=_of->seekable;
- links=_of->links;
- cur_link=seekable?_of->cur_link:0;
- cur_serialno=links[cur_link].serialno;
- /*Handle one page.*/
- for(;;){
- ogg_page og;
- OP_ASSERT(_of->ready_state>=OP_OPENED);
- /*If we were given a page to use, use it.*/
- if(_og!=NULL){
- *&og=*_og;
- _og=NULL;
- }
- /*Keep reading until we get a page with the correct serialno.*/
- else _page_offset=op_get_next_page(_of,&og,_of->end);
- /*EOF: Leave uninitialized.*/
- if(_page_offset<0)return _page_offset<OP_FALSE?(int)_page_offset:OP_EOF;
- if(OP_LIKELY(_of->ready_state>=OP_STREAMSET)
- &&cur_serialno!=(ogg_uint32_t)ogg_page_serialno(&og)){
- /*Two possibilities:
- 1) Another stream is multiplexed into this logical section, or*/
- if(OP_LIKELY(!ogg_page_bos(&og)))continue;
- /* 2) Our decoding just traversed a bitstream boundary.*/
- if(!_spanp)return OP_EOF;
- if(OP_LIKELY(_of->ready_state>=OP_INITSET))op_decode_clear(_of);
- }
- /*Bitrate tracking: add the header's bytes here.
- The body bytes are counted when we consume the packets.*/
- else _of->bytes_tracked+=og.header_len;
- /*Do we need to load a new machine before submitting the page?
- This is different in the seekable and non-seekable cases.
- In the seekable case, we already have all the header information loaded
- and cached.
- We just initialize the machine with it and continue on our merry way.
- In the non-seekable (streaming) case, we'll only be at a boundary if we
- just left the previous logical bitstream, and we're now nominally at the
- header of the next bitstream.*/
- if(OP_UNLIKELY(_of->ready_state<OP_STREAMSET)){
- if(seekable){
- ogg_uint32_t serialno;
- int nlinks;
- int li;
- serialno=ogg_page_serialno(&og);
- /*Match the serialno to bitstream section.
- We use this rather than offset positions to avoid problems near
- logical bitstream boundaries.*/
- nlinks=_of->nlinks;
- for(li=0;li<nlinks&&links[li].serialno!=serialno;li++);
- /*Not a desired Opus bitstream section.
- Keep trying.*/
- if(li>=nlinks)continue;
- cur_serialno=serialno;
- _of->cur_link=cur_link=li;
- ogg_stream_reset_serialno(&_of->os,serialno);
- _of->ready_state=OP_STREAMSET;
- /*If we're at the start of this link, initialize the granule position
- and pre-skip tracking.*/
- if(_page_offset<=links[cur_link].data_offset){
- _of->prev_packet_gp=links[cur_link].pcm_start;
- _of->prev_page_offset=-1;
- _of->cur_discard_count=links[cur_link].head.pre_skip;
- /*Ignore a hole at the start of a new link (this is common for
- streams joined in the middle) or after seeking.*/
- _ignore_holes=1;
- }
- }
- else{
- do{
- /*We're streaming.
- Fetch the two header packets, build the info struct.*/
- ret=op_fetch_headers(_of,&links[0].head,&links[0].tags,
- NULL,NULL,NULL,&og);
- if(OP_UNLIKELY(ret<0))return ret;
- /*op_find_initial_pcm_offset() will suppress any initial hole for us,
- so no need to set _ignore_holes.*/
- ret=op_find_initial_pcm_offset(_of,links,&og);
- if(OP_UNLIKELY(ret<0))return ret;
- _of->links[0].serialno=cur_serialno=_of->os.serialno;
- _of->cur_link++;
- }
- /*If the link was empty, keep going, because we already have the
- BOS page of the next one in og.*/
- while(OP_UNLIKELY(ret>0));
- /*If we didn't get any packets out of op_find_initial_pcm_offset(),
- keep going (this is possible if end-trimming trimmed them all).*/
- if(_of->op_count<=0)continue;
- /*Otherwise, we're done.
- TODO: This resets bytes_tracked, which misses the header bytes
- already processed by op_find_initial_pcm_offset().*/
- ret=op_make_decode_ready(_of);
- if(OP_UNLIKELY(ret<0))return ret;
- return 0;
- }
- }
- /*The buffered page is the data we want, and we're ready for it.
- Add it to the stream state.*/
- if(OP_UNLIKELY(_of->ready_state==OP_STREAMSET)){
- ret=op_make_decode_ready(_of);
- if(OP_UNLIKELY(ret<0))return ret;
- }
- /*Extract all the packets from the current page.*/
- ogg_stream_pagein(&_of->os,&og);
- if(OP_LIKELY(_of->ready_state>=OP_INITSET)){
- opus_int32 total_duration;
- int durations[255];
- int op_count;
- total_duration=op_collect_audio_packets(_of,durations);
- if(OP_UNLIKELY(total_duration<0)){
- /*Drain the packets from the page anyway.*/
- total_duration=op_collect_audio_packets(_of,durations);
- OP_ASSERT(total_duration>=0);
- /*Report holes to the caller.*/
- if(!_ignore_holes)return OP_HOLE;
- }
- op_count=_of->op_count;
- /*If we found at least one audio data packet, compute per-packet granule
- positions for them.*/
- if(op_count>0){
- ogg_int64_t diff;
- ogg_int64_t prev_packet_gp;
- ogg_int64_t cur_packet_gp;
- ogg_int64_t cur_page_gp;
- int cur_page_eos;
- int pi;
- cur_page_gp=_of->op[op_count-1].granulepos;
- cur_page_eos=_of->op[op_count-1].e_o_s;
- prev_packet_gp=_of->prev_packet_gp;
- if(OP_UNLIKELY(prev_packet_gp==-1)){
- opus_int32 cur_discard_count;
- /*This is the first call after a raw seek.
- Try to reconstruct prev_packet_gp from scratch.*/
- OP_ASSERT(seekable);
- if(OP_UNLIKELY(cur_page_eos)){
- /*If the first page we hit after our seek was the EOS page, and
- we didn't start from data_offset or before, we don't have
- enough information to do end-trimming.
- Proceed to the next link, rather than risk playing back some
- samples that shouldn't have been played.*/
- _of->op_count=0;
- continue;
- }
- /*By default discard 80 ms of data after a seek, unless we seek
- into the pre-skip region.*/
- cur_discard_count=80*48;
- cur_page_gp=_of->op[op_count-1].granulepos;
- /*Try to initialize prev_packet_gp.
- If the current page had packets but didn't have a granule
- position, or the granule position it had was too small (both
- illegal), just use the starting granule position for the link.*/
- prev_packet_gp=links[cur_link].pcm_start;
- if(OP_LIKELY(cur_page_gp!=-1)){
- op_granpos_add(&prev_packet_gp,cur_page_gp,-total_duration);
- }
- if(OP_LIKELY(!op_granpos_diff(&diff,
- prev_packet_gp,links[cur_link].pcm_start))){
- opus_int32 pre_skip;
- /*If we start at the beginning of the pre-skip region, or we're
- at least 80 ms from the end of the pre-skip region, we discard
- to the end of the pre-skip region.
- Otherwise, we still use the 80 ms default, which will discard
- past the end of the pre-skip region.*/
- pre_skip=links[cur_link].head.pre_skip;
- if(diff>=0&&diff<=OP_MAX(0,pre_skip-80*48)){
- cur_discard_count=pre_skip-(int)diff;
- }
- }
- _of->cur_discard_count=cur_discard_count;
- }
- if(OP_UNLIKELY(cur_page_gp==-1)){
- /*This page had completed packets but didn't have a valid granule
- position.
- This is illegal, but we'll try to handle it by continuing to count
- forwards from the previous page.*/
- if(op_granpos_add(&cur_page_gp,prev_packet_gp,total_duration)<0){
- /*The timestamp for this page overflowed.*/
- cur_page_gp=links[cur_link].pcm_end;
- }
- }
- /*If we hit the last page, handle end-trimming.*/
- if(OP_UNLIKELY(cur_page_eos)
- &&OP_LIKELY(!op_granpos_diff(&diff,cur_page_gp,prev_packet_gp))
- &&OP_LIKELY(diff<total_duration)){
- cur_packet_gp=prev_packet_gp;
- for(pi=0;pi<op_count;pi++){
- diff=durations[pi]-diff;
- /*If we have samples to trim...*/
- if(diff>0){
- /*If we trimmed the entire packet, stop (the spec says encoders
- shouldn't do this, but we support it anyway).*/
- if(OP_UNLIKELY(diff>durations[pi]))break;
- cur_packet_gp=cur_page_gp;
- /*Move the EOS flag to this packet, if necessary, so we'll trim
- the samples during decode.*/
- _of->op[pi].e_o_s=1;
- }
- else{
- /*Update the granule position as normal.*/
- OP_ALWAYS_TRUE(!op_granpos_add(&cur_packet_gp,
- cur_packet_gp,durations[pi]));
- }
- _of->op[pi].granulepos=cur_packet_gp;
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff,cur_page_gp,cur_packet_gp));
- }
- }
- else{
- /*Propagate timestamps to earlier packets.
- op_granpos_add(&prev_packet_gp,prev_packet_gp,total_duration)
- should succeed and give prev_packet_gp==cur_page_gp.
- But we don't bother to check that, as there isn't much we can do
- if it's not true, and it actually will not be true on the first
- page after a seek, if there was a continued packet.
- The only thing we guarantee is that the start and end granule
- positions of the packets are valid, and that they are monotonic
- within a page.
- They might be completely out of range for this link (we'll check
- that elsewhere), or non-monotonic between pages.*/
- if(OP_UNLIKELY(op_granpos_add(&prev_packet_gp,
- cur_page_gp,-total_duration)<0)){
- /*The starting timestamp for the first packet on this page
- underflowed.
- This is illegal, but we ignore it.*/
- prev_packet_gp=0;
- }
- for(pi=0;pi<op_count;pi++){
- if(OP_UNLIKELY(op_granpos_add(&cur_packet_gp,
- cur_page_gp,-total_duration)<0)){
- /*The start timestamp for this packet underflowed.
- This is illegal, but we ignore it.*/
- cur_packet_gp=0;
- }
- total_duration-=durations[pi];
- OP_ASSERT(total_duration>=0);
- OP_ALWAYS_TRUE(!op_granpos_add(&cur_packet_gp,
- cur_packet_gp,durations[pi]));
- _of->op[pi].granulepos=cur_packet_gp;
- }
- OP_ASSERT(total_duration==0);
- }
- _of->prev_packet_gp=prev_packet_gp;
- _of->prev_page_offset=_page_offset;
- _of->op_count=pi;
- /*If end-trimming didn't trim all the packets, we're done.*/
- if(OP_LIKELY(pi>0))return 0;
- }
- }
- }
-}
-
-int op_raw_seek(OggOpusFile *_of,opus_int64 _pos){
- int ret;
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
- /*Don't dump the decoder state if we can't seek.*/
- if(OP_UNLIKELY(!_of->seekable))return OP_ENOSEEK;
- if(OP_UNLIKELY(_pos<0)||OP_UNLIKELY(_pos>_of->end))return OP_EINVAL;
- /*Clear out any buffered, decoded data.*/
- op_decode_clear(_of);
- _of->bytes_tracked=0;
- _of->samples_tracked=0;
- ret=op_seek_helper(_of,_pos);
- if(OP_UNLIKELY(ret<0))return OP_EREAD;
- ret=op_fetch_and_process_page(_of,NULL,-1,1,1);
- /*If we hit EOF, op_fetch_and_process_page() leaves us uninitialized.
- Instead, jump to the end.*/
- if(ret==OP_EOF){
- int cur_link;
- op_decode_clear(_of);
- cur_link=_of->nlinks-1;
- _of->cur_link=cur_link;
- _of->prev_packet_gp=_of->links[cur_link].pcm_end;
- _of->cur_discard_count=0;
- ret=0;
- }
- return ret;
-}
-
-/*Convert a PCM offset relative to the start of the whole stream to a granule
- position in an individual link.*/
-static ogg_int64_t op_get_granulepos(const OggOpusFile *_of,
- ogg_int64_t _pcm_offset,int *_li){
- const OggOpusLink *links;
- ogg_int64_t duration;
- int nlinks;
- int li;
- OP_ASSERT(_pcm_offset>=0);
- nlinks=_of->nlinks;
- links=_of->links;
- for(li=0;OP_LIKELY(li<nlinks);li++){
- ogg_int64_t pcm_start;
- opus_int32 pre_skip;
- pcm_start=links[li].pcm_start;
- pre_skip=links[li].head.pre_skip;
- OP_ALWAYS_TRUE(!op_granpos_diff(&duration,links[li].pcm_end,pcm_start));
- duration-=pre_skip;
- if(_pcm_offset<duration){
- _pcm_offset+=pre_skip;
- if(OP_UNLIKELY(pcm_start>OP_INT64_MAX-_pcm_offset)){
- /*Adding this amount to the granule position would overflow the positive
- half of its 64-bit range.
- Since signed overflow is undefined in C, do it in a way the compiler
- isn't allowed to screw up.*/
- _pcm_offset-=OP_INT64_MAX-pcm_start+1;
- pcm_start=OP_INT64_MIN;
- }
- pcm_start+=_pcm_offset;
- *_li=li;
- return pcm_start;
- }
- _pcm_offset-=duration;
- }
- return -1;
-}
-
-/*A small helper to determine if an Ogg page contains data that continues onto
- a subsequent page.*/
-static int op_page_continues(const ogg_page *_og){
- int nlacing;
- OP_ASSERT(_og->header_len>=27);
- nlacing=_og->header[26];
- OP_ASSERT(_og->header_len>=27+nlacing);
- /*This also correctly handles the (unlikely) case of nlacing==0, because
- 0!=255.*/
- return _og->header[27+nlacing-1]==255;
-}
-
-/*A small helper to buffer the continued packet data from a page.*/
-static void op_buffer_continued_data(OggOpusFile *_of,ogg_page *_og){
- ogg_packet op;
- ogg_stream_pagein(&_of->os,_og);
- /*Drain any packets that did end on this page (and ignore holes).
- We only care about the continued packet data.*/
- while(ogg_stream_packetout(&_of->os,&op));
-}
-
-/*This controls how close the target has to be to use the current stream
- position to subdivide the initial range.
- Two minutes seems to be a good default.*/
-#define OP_CUR_TIME_THRESH (120*48*(opus_int32)1000)
-
-/*Note: The OP_SMALL_FOOTPRINT #define doesn't (currently) save much code size,
- but it's meant to serve as documentation for portions of the seeking
- algorithm that are purely optional, to aid others learning from/porting this
- code to other contexts.*/
-/*#define OP_SMALL_FOOTPRINT (1)*/
-
-/*Search within link _li for the page with the highest granule position
- preceding (or equal to) _target_gp.
- There is a danger here: missing pages or incorrect frame number information
- in the bitstream could make our task impossible.
- Account for that (and report it as an error condition).*/
-static int op_pcm_seek_page(OggOpusFile *_of,
- ogg_int64_t _target_gp,int _li){
- const OggOpusLink *link;
- ogg_page og;
- ogg_int64_t pcm_pre_skip;
- ogg_int64_t pcm_start;
- ogg_int64_t pcm_end;
- ogg_int64_t best_gp;
- ogg_int64_t diff;
- ogg_uint32_t serialno;
- opus_int32 pre_skip;
- opus_int64 begin;
- opus_int64 end;
- opus_int64 boundary;
- opus_int64 best;
- opus_int64 best_start;
- opus_int64 page_offset;
- opus_int64 d0;
- opus_int64 d1;
- opus_int64 d2;
- int force_bisect;
- int buffering;
- int ret;
- _of->bytes_tracked=0;
- _of->samples_tracked=0;
- link=_of->links+_li;
- best_gp=pcm_start=link->pcm_start;
- pcm_end=link->pcm_end;
- serialno=link->serialno;
- best=best_start=begin=link->data_offset;
- page_offset=-1;
- buffering=0;
- /*We discard the first 80 ms of data after a seek, so seek back that much
- farther.
- If we can't, simply seek to the beginning of the link.*/
- if(OP_UNLIKELY(op_granpos_add(&_target_gp,_target_gp,-80*48)<0)
- ||OP_UNLIKELY(op_granpos_cmp(_target_gp,pcm_start)<0)){
- _target_gp=pcm_start;
- }
- /*Special case seeking to the start of the link.*/
- pre_skip=link->head.pre_skip;
- OP_ALWAYS_TRUE(!op_granpos_add(&pcm_pre_skip,pcm_start,pre_skip));
- if(op_granpos_cmp(_target_gp,pcm_pre_skip)<0)end=boundary=begin;
- else{
- end=boundary=link->end_offset;
-#if !defined(OP_SMALL_FOOTPRINT)
- /*If we were decoding from this link, we can narrow the range a bit.*/
- if(_li==_of->cur_link&&_of->ready_state>=OP_INITSET){
- opus_int64 offset;
- int op_count;
- op_count=_of->op_count;
- /*The only way the offset can be invalid _and_ we can fail the granule
- position checks below is if someone changed the contents of the last
- page since we read it.
- We'd be within our rights to just return OP_EBADLINK in that case, but
- we'll simply ignore the current position instead.*/
- offset=_of->offset;
- if(op_count>0&&OP_LIKELY(offset<=end)){
- ogg_int64_t gp;
- /*Make sure the timestamp is valid.
- The granule position might be -1 if we collected the packets from a
- page without a granule position after reporting a hole.*/
- gp=_of->op[op_count-1].granulepos;
- if(OP_LIKELY(gp!=-1)&&OP_LIKELY(op_granpos_cmp(pcm_start,gp)<0)
- &&OP_LIKELY(op_granpos_cmp(pcm_end,gp)>0)){
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff,gp,_target_gp));
- /*We only actually use the current time if either
- a) We can cut off at least half the range, or
- b) We're seeking sufficiently close to the current position that
- it's likely to be informative.
- Otherwise it appears using the whole link range to estimate the
- first seek location gives better results, on average.*/
- if(diff<0){
- OP_ASSERT(offset>=begin);
- if(offset-begin>=end-begin>>1||diff>-OP_CUR_TIME_THRESH){
- best=begin=offset;
- best_gp=pcm_start=gp;
- /*If we have buffered data from a continued packet, remember the
- offset of the previous page's start, so that if we do wind up
- having to seek back here later, we can prime the stream with
- the continued packet data.
- With no continued packet, we remember the end of the page.*/
- best_start=_of->os.body_returned<_of->os.body_fill?
- _of->prev_page_offset:best;
- /*If there's completed packets and data in the stream state,
- prev_page_offset should always be set.*/
- OP_ASSERT(best_start>=0);
- /*Buffer any continued packet data starting from here.*/
- buffering=1;
- }
- }
- else{
- ogg_int64_t prev_page_gp;
- /*We might get lucky and already have the packet with the target
- buffered.
- Worth checking.
- For very small files (with all of the data in a single page,
- generally 1 second or less), we can loop them continuously
- without seeking at all.*/
- OP_ALWAYS_TRUE(!op_granpos_add(&prev_page_gp,_of->op[0].granulepos,
- -op_get_packet_duration(_of->op[0].packet,_of->op[0].bytes)));
- if(op_granpos_cmp(prev_page_gp,_target_gp)<=0){
- /*Don't call op_decode_clear(), because it will dump our
- packets.*/
- _of->op_pos=0;
- _of->od_buffer_size=0;
- _of->prev_packet_gp=prev_page_gp;
- /*_of->prev_page_offset already points to the right place.*/
- _of->ready_state=OP_STREAMSET;
- return op_make_decode_ready(_of);
- }
- /*No such luck.
- Check if we can cut off at least half the range, though.*/
- if(offset-begin<=end-begin>>1||diff<OP_CUR_TIME_THRESH){
- /*We really want the page start here, but this will do.*/
- end=boundary=offset;
- pcm_end=gp;
- }
- }
- }
- }
- }
-#endif
- }
- /*This code was originally based on the "new search algorithm by HB (Nicholas
- Vinen)" from libvorbisfile.
- It has been modified substantially since.*/
- op_decode_clear(_of);
- if(!buffering)ogg_stream_reset_serialno(&_of->os,serialno);
- _of->cur_link=_li;
- _of->ready_state=OP_STREAMSET;
- /*Initialize the interval size history.*/
- d2=d1=d0=end-begin;
- force_bisect=0;
- while(begin<end){
- opus_int64 bisect;
- opus_int64 next_boundary;
- opus_int32 chunk_size;
- if(end-begin<OP_CHUNK_SIZE)bisect=begin;
- else{
- /*Update the interval size history.*/
- d0=d1>>1;
- d1=d2>>1;
- d2=end-begin>>1;
- if(force_bisect)bisect=begin+(end-begin>>1);
- else{
- ogg_int64_t diff2;
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff,_target_gp,pcm_start));
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff2,pcm_end,pcm_start));
- /*Take a (pretty decent) guess.*/
- bisect=begin+op_rescale64(diff,diff2,end-begin)-OP_CHUNK_SIZE;
- }
- if(bisect-OP_CHUNK_SIZE<begin)bisect=begin;
- force_bisect=0;
- }
- if(bisect!=_of->offset){
- /*Discard any buffered continued packet data.*/
- if(buffering)ogg_stream_reset(&_of->os);
- buffering=0;
- page_offset=-1;
- ret=op_seek_helper(_of,bisect);
- if(OP_UNLIKELY(ret<0))return ret;
- }
- chunk_size=OP_CHUNK_SIZE;
- next_boundary=boundary;
- /*Now scan forward and figure out where we landed.
- In the ideal case, we will see a page with a granule position at or
- before our target, followed by a page with a granule position after our
- target (or the end of the search interval).
- Then we can just drop out and will have all of the data we need with no
- additional seeking.
- If we landed too far before, or after, we'll break out and do another
- bisection.*/
- while(begin<end){
- page_offset=op_get_next_page(_of,&og,boundary);
- if(page_offset<0){
- if(page_offset<OP_FALSE)return (int)page_offset;
- /*There are no more pages in our interval from our stream with a valid
- timestamp that start at position bisect or later.*/
- /*If we scanned the whole interval, we're done.*/
- if(bisect<=begin+1)end=begin;
- else{
- /*Otherwise, back up one chunk.
- First, discard any data from a continued packet.*/
- if(buffering)ogg_stream_reset(&_of->os);
- buffering=0;
- bisect=OP_MAX(bisect-chunk_size,begin);
- ret=op_seek_helper(_of,bisect);
- if(OP_UNLIKELY(ret<0))return ret;
- /*Bump up the chunk size.*/
- chunk_size=OP_MIN(2*chunk_size,OP_CHUNK_SIZE_MAX);
- /*If we did find a page from another stream or without a timestamp,
- don't read past it.*/
- boundary=next_boundary;
- }
- }
- else{
- ogg_int64_t gp;
- int has_packets;
- /*Save the offset of the first page we found after the seek, regardless
- of the stream it came from or whether or not it has a timestamp.*/
- next_boundary=OP_MIN(page_offset,next_boundary);
- if(serialno!=(ogg_uint32_t)ogg_page_serialno(&og))continue;
- has_packets=ogg_page_packets(&og)>0;
- /*Force the gp to -1 (as it should be per spec) if no packets end on
- this page.
- Otherwise we might get confused when we try to pull out a packet
- with that timestamp and can't find it.*/
- gp=has_packets?ogg_page_granulepos(&og):-1;
- if(gp==-1){
- if(buffering){
- if(OP_LIKELY(!has_packets))ogg_stream_pagein(&_of->os,&og);
- else{
- /*If packets did end on this page, but we still didn't have a
- valid granule position (in violation of the spec!), stop
- buffering continued packet data.
- Otherwise we might continue past the packet we actually
- wanted.*/
- ogg_stream_reset(&_of->os);
- buffering=0;
- }
- }
- continue;
- }
- if(op_granpos_cmp(gp,_target_gp)<0){
- /*We found a page that ends before our target.
- Advance to the raw offset of the next page.*/
- begin=_of->offset;
- if(OP_UNLIKELY(op_granpos_cmp(pcm_start,gp)>0)
- ||OP_UNLIKELY(op_granpos_cmp(pcm_end,gp)<0)){
- /*Don't let pcm_start get out of range!
- That could happen with an invalid timestamp.*/
- break;
- }
- /*Save the byte offset of the end of the page with this granule
- position.*/
- best=best_start=begin;
- /*Buffer any data from a continued packet, if necessary.
- This avoids the need to seek back here if the next timestamp we
- encounter while scanning forward lies after our target.*/
- if(buffering)ogg_stream_reset(&_of->os);
- if(op_page_continues(&og)){
- op_buffer_continued_data(_of,&og);
- /*If we have a continued packet, remember the offset of this
- page's start, so that if we do wind up having to seek back here
- later, we can prime the stream with the continued packet data.
- With no continued packet, we remember the end of the page.*/
- best_start=page_offset;
- }
- /*Then force buffering on, so that if a packet starts (but does not
- end) on the next page, we still avoid the extra seek back.*/
- buffering=1;
- best_gp=pcm_start=gp;
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff,_target_gp,pcm_start));
- /*If we're more than a second away from our target, break out and
- do another bisection.*/
- if(diff>48000)break;
- /*Otherwise, keep scanning forward (do NOT use begin+1).*/
- bisect=begin;
- }
- else{
- /*We found a page that ends after our target.*/
- /*If we scanned the whole interval before we found it, we're done.*/
- if(bisect<=begin+1)end=begin;
- else{
- end=bisect;
- /*In later iterations, don't read past the first page we found.*/
- boundary=next_boundary;
- /*If we're not making much progress shrinking the interval size,
- start forcing straight bisection to limit the worst case.*/
- force_bisect=end-begin>d0*2;
- /*Don't let pcm_end get out of range!
- That could happen with an invalid timestamp.*/
- if(OP_LIKELY(op_granpos_cmp(pcm_end,gp)>0)
- &&OP_LIKELY(op_granpos_cmp(pcm_start,gp)<=0)){
- pcm_end=gp;
- }
- break;
- }
- }
- }
- }
- }
- /*Found our page.*/
- OP_ASSERT(op_granpos_cmp(best_gp,pcm_start)>=0);
- /*Seek, if necessary.
- If we were buffering data from a continued packet, we should be able to
- continue to scan forward to get the rest of the data (even if
- page_offset==-1).
- Otherwise, we need to seek back to best_start.*/
- if(!buffering){
- if(best_start!=page_offset){
- page_offset=-1;
- ret=op_seek_helper(_of,best_start);
- if(OP_UNLIKELY(ret<0))return ret;
- }
- if(best_start<best){
- /*Retrieve the page at best_start, if we do not already have it.*/
- if(page_offset<0){
- page_offset=op_get_next_page(_of,&og,link->end_offset);
- if(OP_UNLIKELY(page_offset<OP_FALSE))return (int)page_offset;
- if(OP_UNLIKELY(page_offset!=best_start))return OP_EBADLINK;
- }
- op_buffer_continued_data(_of,&og);
- page_offset=-1;
- }
- }
- /*Update prev_packet_gp to allow per-packet granule position assignment.*/
- _of->prev_packet_gp=best_gp;
- _of->prev_page_offset=best_start;
- ret=op_fetch_and_process_page(_of,page_offset<0?NULL:&og,page_offset,0,1);
- if(OP_UNLIKELY(ret<0))return OP_EBADLINK;
- /*Verify result.*/
- if(OP_UNLIKELY(op_granpos_cmp(_of->prev_packet_gp,_target_gp)>0)){
- return OP_EBADLINK;
- }
- /*Our caller will set cur_discard_count to handle pre-roll.*/
- return 0;
-}
-
-int op_pcm_seek(OggOpusFile *_of,ogg_int64_t _pcm_offset){
- const OggOpusLink *link;
- ogg_int64_t pcm_start;
- ogg_int64_t target_gp;
- ogg_int64_t prev_packet_gp;
- ogg_int64_t skip;
- ogg_int64_t diff;
- int op_count;
- int op_pos;
- int ret;
- int li;
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
- if(OP_UNLIKELY(!_of->seekable))return OP_ENOSEEK;
- if(OP_UNLIKELY(_pcm_offset<0))return OP_EINVAL;
- target_gp=op_get_granulepos(_of,_pcm_offset,&li);
- if(OP_UNLIKELY(target_gp==-1))return OP_EINVAL;
- link=_of->links+li;
- pcm_start=link->pcm_start;
- OP_ALWAYS_TRUE(!op_granpos_diff(&_pcm_offset,target_gp,pcm_start));
-#if !defined(OP_SMALL_FOOTPRINT)
- /*For small (90 ms or less) forward seeks within the same link, just decode
- forward.
- This also optimizes the case of seeking to the current position.*/
- if(li==_of->cur_link&&_of->ready_state>=OP_INITSET){
- ogg_int64_t gp;
- gp=_of->prev_packet_gp;
- if(OP_LIKELY(gp!=-1)){
- int nbuffered;
- nbuffered=OP_MAX(_of->od_buffer_size-_of->od_buffer_pos,0);
- OP_ALWAYS_TRUE(!op_granpos_add(&gp,gp,-nbuffered));
- /*We do _not_ add cur_discard_count to gp.
- Otherwise the total amount to discard could grow without bound, and it
- would be better just to do a full seek.*/
- if(OP_LIKELY(!op_granpos_diff(&diff,gp,pcm_start))){
- ogg_int64_t discard_count;
- discard_count=_pcm_offset-diff;
- /*We use a threshold of 90 ms instead of 80, since 80 ms is the
- _minimum_ we would have discarded after a full seek.
- Assuming 20 ms frames (the default), we'd discard 90 ms on average.*/
- if(discard_count>=0&&OP_UNLIKELY(discard_count<90*48)){
- _of->cur_discard_count=(opus_int32)discard_count;
- return 0;
- }
- }
- }
- }
-#endif
- ret=op_pcm_seek_page(_of,target_gp,li);
- if(OP_UNLIKELY(ret<0))return ret;
- /*Now skip samples until we actually get to our target.*/
- /*Figure out where we should skip to.*/
- if(_pcm_offset<=link->head.pre_skip)skip=0;
- else skip=OP_MAX(_pcm_offset-80*48,0);
- OP_ASSERT(_pcm_offset-skip>=0);
- OP_ASSERT(_pcm_offset-skip<OP_INT32_MAX-120*48);
- /*Skip packets until we find one with samples past our skip target.*/
- for(;;){
- op_count=_of->op_count;
- prev_packet_gp=_of->prev_packet_gp;
- for(op_pos=_of->op_pos;op_pos<op_count;op_pos++){
- ogg_int64_t cur_packet_gp;
- cur_packet_gp=_of->op[op_pos].granulepos;
- if(OP_LIKELY(!op_granpos_diff(&diff,cur_packet_gp,pcm_start))
- &&diff>skip){
- break;
- }
- prev_packet_gp=cur_packet_gp;
- }
- _of->prev_packet_gp=prev_packet_gp;
- _of->op_pos=op_pos;
- if(op_pos<op_count)break;
- /*We skipped all the packets on this page.
- Fetch another.*/
- ret=op_fetch_and_process_page(_of,NULL,-1,0,1);
- if(OP_UNLIKELY(ret<0))return OP_EBADLINK;
- }
- OP_ALWAYS_TRUE(!op_granpos_diff(&diff,prev_packet_gp,pcm_start));
- /*We skipped too far.
- Either the timestamps were illegal or there was a hole in the data.*/
- if(diff>skip)return OP_EBADLINK;
- OP_ASSERT(_pcm_offset-diff<OP_INT32_MAX);
- /*TODO: If there are further holes/illegal timestamps, we still won't decode
- to the correct sample.
- However, at least op_pcm_tell() will report the correct value immediately
- after returning.*/
- _of->cur_discard_count=(opus_int32)(_pcm_offset-diff);
- return 0;
-}
-
-opus_int64 op_raw_tell(const OggOpusFile *_of){
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
- return _of->offset;
-}
-
-/*Convert a granule position from a given link to a PCM offset relative to the
- start of the whole stream.
- For unseekable sources, this gets reset to 0 at the beginning of each link.*/
-static ogg_int64_t op_get_pcm_offset(const OggOpusFile *_of,
- ogg_int64_t _gp,int _li){
- const OggOpusLink *links;
- ogg_int64_t pcm_offset;
- ogg_int64_t delta;
- int li;
- links=_of->links;
- pcm_offset=0;
- OP_ASSERT(_li<_of->nlinks);
- for(li=0;li<_li;li++){
- OP_ALWAYS_TRUE(!op_granpos_diff(&delta,
- links[li].pcm_end,links[li].pcm_start));
- delta-=links[li].head.pre_skip;
- pcm_offset+=delta;
- }
- OP_ASSERT(_li>=0);
- if(_of->seekable&&OP_UNLIKELY(op_granpos_cmp(_gp,links[_li].pcm_end)>0)){
- _gp=links[_li].pcm_end;
- }
- if(OP_LIKELY(op_granpos_cmp(_gp,links[_li].pcm_start)>0)){
- if(OP_UNLIKELY(op_granpos_diff(&delta,_gp,links[_li].pcm_start)<0)){
- /*This means an unseekable stream claimed to have a page from more than
- 2 billion days after we joined.*/
- OP_ASSERT(!_of->seekable);
- return OP_INT64_MAX;
- }
- if(delta<links[_li].head.pre_skip)delta=0;
- else delta-=links[_li].head.pre_skip;
- /*In the seekable case, _gp was limited by pcm_end.
- In the unseekable case, pcm_offset should be 0.*/
- OP_ASSERT(pcm_offset<=OP_INT64_MAX-delta);
- pcm_offset+=delta;
- }
- return pcm_offset;
-}
-
-ogg_int64_t op_pcm_tell(const OggOpusFile *_of){
- ogg_int64_t gp;
- int nbuffered;
- int li;
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
- gp=_of->prev_packet_gp;
- if(gp==-1)return 0;
- nbuffered=OP_MAX(_of->od_buffer_size-_of->od_buffer_pos,0);
- OP_ALWAYS_TRUE(!op_granpos_add(&gp,gp,-nbuffered));
- li=_of->seekable?_of->cur_link:0;
- if(op_granpos_add(&gp,gp,_of->cur_discard_count)<0){
- gp=_of->links[li].pcm_end;
- }
- return op_get_pcm_offset(_of,gp,li);
-}
-
-void op_set_decode_callback(OggOpusFile *_of,
- op_decode_cb_func _decode_cb,void *_ctx){
- _of->decode_cb=_decode_cb;
- _of->decode_cb_ctx=_ctx;
-}
-
-int op_set_gain_offset(OggOpusFile *_of,
- int _gain_type,opus_int32 _gain_offset_q8){
- if(_gain_type!=OP_HEADER_GAIN&&_gain_type!=OP_ALBUM_GAIN
- &&_gain_type!=OP_TRACK_GAIN&&_gain_type!=OP_ABSOLUTE_GAIN){
- return OP_EINVAL;
- }
- _of->gain_type=_gain_type;
- /*The sum of header gain and track gain lies in the range [-65536,65534].
- These bounds allow the offset to set the final value to anywhere in the
- range [-32768,32767], which is what we'll clamp it to before applying.*/
- _of->gain_offset_q8=OP_CLAMP(-98302,_gain_offset_q8,98303);
- op_update_gain(_of);
- return 0;
-}
-
-void op_set_dither_enabled(OggOpusFile *_of,int _enabled){
-#if !defined(OP_FIXED_POINT)
- _of->dither_disabled=!_enabled;
- if(!_enabled)_of->dither_mute=65;
-#endif
-}
-
-/*Allocate the decoder scratch buffer.
- This is done lazily, since if the user provides large enough buffers, we'll
- never need it.*/
-static int op_init_buffer(OggOpusFile *_of){
- int nchannels_max;
- if(_of->seekable){
- const OggOpusLink *links;
- int nlinks;
- int li;
- links=_of->links;
- nlinks=_of->nlinks;
- nchannels_max=1;
- for(li=0;li<nlinks;li++){
- nchannels_max=OP_MAX(nchannels_max,links[li].head.channel_count);
- }
- }
- else nchannels_max=OP_NCHANNELS_MAX;
- _of->od_buffer=(op_sample *)_ogg_malloc(
- sizeof(*_of->od_buffer)*nchannels_max*120*48);
- if(_of->od_buffer==NULL)return OP_EFAULT;
- return 0;
-}
-
-/*Decode a single packet into the target buffer.*/
-static int op_decode(OggOpusFile *_of,op_sample *_pcm,
- const ogg_packet *_op,int _nsamples,int _nchannels){
- int ret;
- /*First we try using the application-provided decode callback.*/
- if(_of->decode_cb!=NULL){
-#if defined(OP_FIXED_POINT)
- ret=(*_of->decode_cb)(_of->decode_cb_ctx,_of->od,_pcm,_op,
- _nsamples,_nchannels,OP_DEC_FORMAT_SHORT,_of->cur_link);
-#else
- ret=(*_of->decode_cb)(_of->decode_cb_ctx,_of->od,_pcm,_op,
- _nsamples,_nchannels,OP_DEC_FORMAT_FLOAT,_of->cur_link);
-#endif
- }
- else ret=OP_DEC_USE_DEFAULT;
- /*If the application didn't want to handle decoding, do it ourselves.*/
- if(ret==OP_DEC_USE_DEFAULT){
-#if defined(OP_FIXED_POINT)
- ret=opus_multistream_decode(_of->od,
- _op->packet,_op->bytes,_pcm,_nsamples,0);
-#else
- ret=opus_multistream_decode_float(_of->od,
- _op->packet,_op->bytes,_pcm,_nsamples,0);
-#endif
- OP_ASSERT(ret<0||ret==_nsamples);
- }
- /*If the application returned a positive value other than 0 or
- OP_DEC_USE_DEFAULT, fail.*/
- else if(OP_UNLIKELY(ret>0))return OP_EBADPACKET;
- if(OP_UNLIKELY(ret<0))return OP_EBADPACKET;
- return ret;
-}
-
-/*Read more samples from the stream, using the same API as op_read() or
- op_read_float().*/
-static int op_read_native(OggOpusFile *_of,
- op_sample *_pcm,int _buf_size,int *_li){
- if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
- for(;;){
- int ret;
- if(OP_LIKELY(_of->ready_state>=OP_INITSET)){
- int nchannels;
- int od_buffer_pos;
- int nsamples;
- int op_pos;
- nchannels=_of->links[_of->seekable?_of->cur_link:0].head.channel_count;
- od_buffer_pos=_of->od_buffer_pos;
- nsamples=_of->od_buffer_size-od_buffer_pos;
- /*If we have buffered samples, return them.*/
- if(nsamples>0){
- if(nsamples*nchannels>_buf_size)nsamples=_buf_size/nchannels;
- memcpy(_pcm,_of->od_buffer+nchannels*od_buffer_pos,
- sizeof(*_pcm)*nchannels*nsamples);
- od_buffer_pos+=nsamples;
- _of->od_buffer_pos=od_buffer_pos;
- if(_li!=NULL)*_li=_of->cur_link;
- return nsamples;
- }
- /*If we have buffered packets, decode one.*/
- op_pos=_of->op_pos;
- if(OP_LIKELY(op_pos<_of->op_count)){
- const ogg_packet *pop;
- ogg_int64_t diff;
- opus_int32 cur_discard_count;
- int duration;
- int trimmed_duration;
- pop=_of->op+op_pos++;
- _of->op_pos=op_pos;
- cur_discard_count=_of->cur_discard_count;
- duration=op_get_packet_duration(pop->packet,pop->bytes);
- /*We don't buffer packets with an invalid TOC sequence.*/
- OP_ASSERT(duration>0);
- trimmed_duration=duration;
- /*Perform end-trimming.*/
- if(OP_UNLIKELY(pop->e_o_s)){
- if(OP_UNLIKELY(op_granpos_cmp(pop->granulepos,
- _of->prev_packet_gp)<=0)){
- trimmed_duration=0;
- }
- else if(OP_LIKELY(!op_granpos_diff(&diff,
- pop->granulepos,_of->prev_packet_gp))){
- trimmed_duration=(int)OP_MIN(diff,trimmed_duration);
- }
- }
- _of->prev_packet_gp=pop->granulepos;
- if(OP_UNLIKELY(duration*nchannels>_buf_size)){
- op_sample *buf;
- /*If the user's buffer is too small, decode into a scratch buffer.*/
- buf=_of->od_buffer;
- if(OP_UNLIKELY(buf==NULL)){
- ret=op_init_buffer(_of);
- if(OP_UNLIKELY(ret<0))return ret;
- buf=_of->od_buffer;
- }
- ret=op_decode(_of,buf,pop,duration,nchannels);
- if(OP_UNLIKELY(ret<0))return ret;
- /*Perform pre-skip/pre-roll.*/
- od_buffer_pos=(int)OP_MIN(trimmed_duration,cur_discard_count);
- cur_discard_count-=od_buffer_pos;
- _of->cur_discard_count=cur_discard_count;
- _of->od_buffer_pos=od_buffer_pos;
- _of->od_buffer_size=trimmed_duration;
- /*Update bitrate tracking based on the actual samples we used from
- what was decoded.*/
- _of->bytes_tracked+=pop->bytes;
- _of->samples_tracked+=trimmed_duration-od_buffer_pos;
- }
- else{
- /*Otherwise decode directly into the user's buffer.*/
- ret=op_decode(_of,_pcm,pop,duration,nchannels);
- if(OP_UNLIKELY(ret<0))return ret;
- if(OP_LIKELY(trimmed_duration>0)){
- /*Perform pre-skip/pre-roll.*/
- od_buffer_pos=(int)OP_MIN(trimmed_duration,cur_discard_count);
- cur_discard_count-=od_buffer_pos;
- _of->cur_discard_count=cur_discard_count;
- trimmed_duration-=od_buffer_pos;
- if(OP_LIKELY(trimmed_duration>0)
- &&OP_UNLIKELY(od_buffer_pos>0)){
- memmove(_pcm,_pcm+od_buffer_pos*nchannels,
- sizeof(*_pcm)*trimmed_duration*nchannels);
- }
- /*Update bitrate tracking based on the actual samples we used from
- what was decoded.*/
- _of->bytes_tracked+=pop->bytes;
- _of->samples_tracked+=trimmed_duration;
- if(OP_LIKELY(trimmed_duration>0)){
- if(_li!=NULL)*_li=_of->cur_link;
- return trimmed_duration;
- }
- }
- }
- /*Don't grab another page yet.
- This one might have more packets, or might have buffered data now.*/
- continue;
- }
- }
- /*Suck in another page.*/
- ret=op_fetch_and_process_page(_of,NULL,-1,1,0);
- if(OP_UNLIKELY(ret==OP_EOF)){
- if(_li!=NULL)*_li=_of->cur_link;
- return 0;
- }
- if(OP_UNLIKELY(ret<0))return ret;
- }
-}
-
-/*A generic filter to apply to the decoded audio data.
- _src is non-const because we will destructively modify the contents of the
- source buffer that we consume in some cases.*/
-typedef int (*op_read_filter_func)(OggOpusFile *_of,void *_dst,int _dst_sz,
- op_sample *_src,int _nsamples,int _nchannels);
-
-/*Decode some samples and then apply a custom filter to them.
- This is used to convert to different output formats.*/
-static int op_filter_read_native(OggOpusFile *_of,void *_dst,int _dst_sz,
- op_read_filter_func _filter,int *_li){
- int ret;
- /*Ensure we have some decoded samples in our buffer.*/
- ret=op_read_native(_of,NULL,0,_li);
- /*Now apply the filter to them.*/
- if(OP_LIKELY(ret>=0)&&OP_LIKELY(_of->ready_state>=OP_INITSET)){
- int od_buffer_pos;
- od_buffer_pos=_of->od_buffer_pos;
- ret=_of->od_buffer_size-od_buffer_pos;
- if(OP_LIKELY(ret>0)){
- int nchannels;
- nchannels=_of->links[_of->seekable?_of->cur_link:0].head.channel_count;
- ret=(*_filter)(_of,_dst,_dst_sz,
- _of->od_buffer+nchannels*od_buffer_pos,ret,nchannels);
- OP_ASSERT(ret>=0);
- OP_ASSERT(ret<=_of->od_buffer_size-od_buffer_pos);
- od_buffer_pos+=ret;
- _of->od_buffer_pos=od_buffer_pos;
- }
- }
- return ret;
-}
-
-#if !defined(OP_FIXED_POINT)||!defined(OP_DISABLE_FLOAT_API)
-
-/*Matrices for downmixing from the supported channel counts to stereo.
- The matrices with 5 or more channels are normalized to a total volume of 2.0,
- since most mixes sound too quiet if normalized to 1.0 (as there is generally
- little volume in the side/rear channels).*/
-static const float OP_STEREO_DOWNMIX[OP_NCHANNELS_MAX-2][OP_NCHANNELS_MAX][2]={
- /*3.0*/
- {
- {0.5858F,0.0F},{0.4142F,0.4142F},{0.0F,0.5858F}
- },
- /*quadrophonic*/
- {
- {0.4226F,0.0F},{0.0F,0.4226F},{0.366F,0.2114F},{0.2114F,0.336F}
- },
- /*5.0*/
- {
- {0.651F,0.0F},{0.46F,0.46F},{0.0F,0.651F},{0.5636F,0.3254F},
- {0.3254F,0.5636F}
- },
- /*5.1*/
- {
- {0.529F,0.0F},{0.3741F,0.3741F},{0.0F,0.529F},{0.4582F,0.2645F},
- {0.2645F,0.4582F},{0.3741F,0.3741F}
- },
- /*6.1*/
- {
- {0.4553F,0.0F},{0.322F,0.322F},{0.0F,0.4553F},{0.3943F,0.2277F},
- {0.2277F,0.3943F},{0.2788F,0.2788F},{0.322F,0.322F}
- },
- /*7.1*/
- {
- {0.3886F,0.0F},{0.2748F,0.2748F},{0.0F,0.3886F},{0.3366F,0.1943F},
- {0.1943F,0.3366F},{0.3366F,0.1943F},{0.1943F,0.3366F},{0.2748F,0.2748F}
- }
-};
-
-#endif
-
-#if defined(OP_FIXED_POINT)
-
-/*Matrices for downmixing from the supported channel counts to stereo.
- The matrices with 5 or more channels are normalized to a total volume of 2.0,
- since most mixes sound too quiet if normalized to 1.0 (as there is generally
- little volume in the side/rear channels).
- Hence we keep the coefficients in Q14, so the downmix values won't overflow a
- 32-bit number.*/
-static const opus_int16 OP_STEREO_DOWNMIX_Q14
- [OP_NCHANNELS_MAX-2][OP_NCHANNELS_MAX][2]={
- /*3.0*/
- {
- {9598,0},{6786,6786},{0,9598}
- },
- /*quadrophonic*/
- {
- {6924,0},{0,6924},{5996,3464},{3464,5996}
- },
- /*5.0*/
- {
- {10666,0},{7537,7537},{0,10666},{9234,5331},{5331,9234}
- },
- /*5.1*/
- {
- {8668,0},{6129,6129},{0,8668},{7507,4335},{4335,7507},{6129,6129}
- },
- /*6.1*/
- {
- {7459,0},{5275,5275},{0,7459},{6460,3731},{3731,6460},{4568,4568},
- {5275,5275}
- },
- /*7.1*/
- {
- {6368,0},{4502,4502},{0,6368},{5515,3183},{3183,5515},{5515,3183},
- {3183,5515},{4502,4502}
- }
-};
-
-int op_read(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size,int *_li){
- return op_read_native(_of,_pcm,_buf_size,_li);
-}
-
-static int op_stereo_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
- op_sample *_src,int _nsamples,int _nchannels){
- (void)_of;
- _nsamples=OP_MIN(_nsamples,_dst_sz>>1);
- if(_nchannels==2)memcpy(_dst,_src,_nsamples*2*sizeof(*_src));
- else{
- opus_int16 *dst;
- int i;
- dst=(opus_int16 *)_dst;
- if(_nchannels==1){
- for(i=0;i<_nsamples;i++)dst[2*i+0]=dst[2*i+1]=_src[i];
- }
- else{
- for(i=0;i<_nsamples;i++){
- opus_int32 l;
- opus_int32 r;
- int ci;
- l=r=0;
- for(ci=0;ci<_nchannels;ci++){
- opus_int32 s;
- s=_src[_nchannels*i+ci];
- l+=OP_STEREO_DOWNMIX_Q14[_nchannels-3][ci][0]*s;
- r+=OP_STEREO_DOWNMIX_Q14[_nchannels-3][ci][1]*s;
- }
- /*TODO: For 5 or more channels, we should do soft clipping here.*/
- dst[2*i+0]=(opus_int16)OP_CLAMP(-32768,l+8192>>14,32767);
- dst[2*i+1]=(opus_int16)OP_CLAMP(-32768,r+8192>>14,32767);
- }
- }
- }
- return _nsamples;
-}
-
-int op_read_stereo(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size){
- return op_filter_read_native(_of,_pcm,_buf_size,op_stereo_filter,NULL);
-}
-
-# if !defined(OP_DISABLE_FLOAT_API)
-
-static int op_short2float_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
- op_sample *_src,int _nsamples,int _nchannels){
- float *dst;
- int i;
- (void)_of;
- dst=(float *)_dst;
- if(OP_UNLIKELY(_nsamples*_nchannels>_dst_sz))_nsamples=_dst_sz/_nchannels;
- _dst_sz=_nsamples*_nchannels;
- for(i=0;i<_dst_sz;i++)dst[i]=(1.0F/32768)*_src[i];
- return _nsamples;
-}
-
-int op_read_float(OggOpusFile *_of,float *_pcm,int _buf_size,int *_li){
- return op_filter_read_native(_of,_pcm,_buf_size,op_short2float_filter,_li);
-}
-
-static int op_short2float_stereo_filter(OggOpusFile *_of,
- void *_dst,int _dst_sz,op_sample *_src,int _nsamples,int _nchannels){
- float *dst;
- int i;
- dst=(float *)_dst;
- _nsamples=OP_MIN(_nsamples,_dst_sz>>1);
- if(_nchannels==1){
- _nsamples=op_short2float_filter(_of,dst,_nsamples,_src,_nsamples,1);
- for(i=_nsamples;i-->0;)dst[2*i+0]=dst[2*i+1]=dst[i];
- }
- else if(_nchannels<5){
- /*For 3 or 4 channels, we can downmix in fixed point without risk of
- clipping.*/
- if(_nchannels>2){
- _nsamples=op_stereo_filter(_of,_src,_nsamples*2,
- _src,_nsamples,_nchannels);
- }
- return op_short2float_filter(_of,dst,_dst_sz,_src,_nsamples,2);
- }
- else{
- /*For 5 or more channels, we convert to floats and then downmix (so that we
- don't risk clipping).*/
- for(i=0;i<_nsamples;i++){
- float l;
- float r;
- int ci;
- l=r=0;
- for(ci=0;ci<_nchannels;ci++){
- float s;
- s=(1.0F/32768)*_src[_nchannels*i+ci];
- l+=OP_STEREO_DOWNMIX[_nchannels-3][ci][0]*s;
- r+=OP_STEREO_DOWNMIX[_nchannels-3][ci][1]*s;
- }
- dst[2*i+0]=l;
- dst[2*i+1]=r;
- }
- }
- return _nsamples;
-}
-
-int op_read_float_stereo(OggOpusFile *_of,float *_pcm,int _buf_size){
- return op_filter_read_native(_of,_pcm,_buf_size,
- op_short2float_stereo_filter,NULL);
-}
-
-# endif
-
-#else
-
-# if defined(OP_HAVE_LRINTF)
-# include <math.h>
-# define op_float2int(_x) (lrintf(_x))
-# else
-# define op_float2int(_x) ((int)((_x)+((_x)<0?-0.5F:0.5F)))
-# endif
-
-/*The dithering code here is adapted from opusdec, part of opus-tools.
- It was originally written by Greg Maxwell.*/
-
-static opus_uint32 op_rand(opus_uint32 _seed){
- return _seed*96314165+907633515&0xFFFFFFFFU;
-}
-
-/*This implements 16-bit quantization with full triangular dither and IIR noise
- shaping.
- The noise shaping filters were designed by Sebastian Gesemann, and are based
- on the LAME ATH curves with flattening to limit their peak gain to 20 dB.
- Everyone else's noise shaping filters are mildly crazy.
- The 48 kHz version of this filter is just a warped version of the 44.1 kHz
- filter and probably could be improved by shifting the HF shelf up in
- frequency a little bit, since 48 kHz has a bit more room and being more
- conservative against bat-ears is probably more important than more noise
- suppression.
- This process can increase the peak level of the signal (in theory by the peak
- error of 1.5 +20 dB, though that is unobservably rare).
- To avoid clipping, the signal is attenuated by a couple thousandths of a dB.
- Initially, the approach taken here was to only attenuate by the 99.9th
- percentile, making clipping rare but not impossible (like SoX), but the
- limited gain of the filter means that the worst case was only two
- thousandths of a dB more, so this just uses the worst case.
- The attenuation is probably also helpful to prevent clipping in the DAC
- reconstruction filters or downstream resampling, in any case.*/
-
-# define OP_GAIN (32753.0F)
-
-# define OP_PRNG_GAIN (1.0F/0xFFFFFFFF)
-
-/*48 kHz noise shaping filter, sd=2.34.*/
-
-static const float OP_FCOEF_B[4]={
- 2.2374F,-0.7339F,-0.1251F,-0.6033F
-};
-
-static const float OP_FCOEF_A[4]={
- 0.9030F,0.0116F,-0.5853F,-0.2571F
-};
-
-static int op_float2short_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
- float *_src,int _nsamples,int _nchannels){
- opus_int16 *dst;
- int ci;
- int i;
- dst=(opus_int16 *)_dst;
- if(OP_UNLIKELY(_nsamples*_nchannels>_dst_sz))_nsamples=_dst_sz/_nchannels;
-# if defined(OP_SOFT_CLIP)
- if(_of->state_channel_count!=_nchannels){
- for(ci=0;ci<_nchannels;ci++)_of->clip_state[ci]=0;
- }
- opus_pcm_soft_clip(_src,_nsamples,_nchannels,_of->clip_state);
-# endif
- if(_of->dither_disabled){
- for(i=0;i<_nchannels*_nsamples;i++){
- dst[i]=op_float2int(OP_CLAMP(-32768,32768.0F*_src[i],32767));
- }
- }
- else{
- opus_uint32 seed;
- int mute;
- seed=_of->dither_seed;
- mute=_of->dither_mute;
- if(_of->state_channel_count!=_nchannels)mute=65;
- /*In order to avoid replacing digital silence with quiet dither noise, we
- mute if the output has been silent for a while.*/
- if(mute>64)memset(_of->dither_a,0,sizeof(*_of->dither_a)*4*_nchannels);
- for(i=0;i<_nsamples;i++){
- int silent;
- silent=1;
- for(ci=0;ci<_nchannels;ci++){
- float r;
- float s;
- float err;
- int si;
- int j;
- s=_src[_nchannels*i+ci];
- silent&=s==0;
- s*=OP_GAIN;
- err=0;
- for(j=0;j<4;j++){
- err+=OP_FCOEF_B[j]*_of->dither_b[ci*4+j]
- -OP_FCOEF_A[j]*_of->dither_a[ci*4+j];
- }
- for(j=3;j-->0;)_of->dither_a[ci*4+j+1]=_of->dither_a[ci*4+j];
- for(j=3;j-->0;)_of->dither_b[ci*4+j+1]=_of->dither_b[ci*4+j];
- _of->dither_a[ci*4]=err;
- s-=err;
- if(mute>16)r=0;
- else{
- seed=op_rand(seed);
- r=seed*OP_PRNG_GAIN;
- seed=op_rand(seed);
- r-=seed*OP_PRNG_GAIN;
- }
- /*Clamp in float out of paranoia that the input will be > 96 dBFS and
- wrap if the integer is clamped.*/
- si=op_float2int(OP_CLAMP(-32768,s+r,32767));
- dst[_nchannels*i+ci]=(opus_int16)si;
- /*Including clipping in the noise shaping is generally disastrous: the
- futile effort to restore the clipped energy results in more clipping.
- However, small amounts---at the level which could normally be created
- by dither and rounding---are harmless and can even reduce clipping
- somewhat due to the clipping sometimes reducing the dither + rounding
- error.*/
- _of->dither_b[ci*4]=mute>16?0:OP_CLAMP(-1.5F,si-s,1.5F);
- }
- mute++;
- if(!silent)mute=0;
- }
- _of->dither_mute=OP_MIN(mute,65);
- _of->dither_seed=seed;
- }
- _of->state_channel_count=_nchannels;
- return _nsamples;
-}
-
-int op_read(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size,int *_li){
- return op_filter_read_native(_of,_pcm,_buf_size,op_float2short_filter,_li);
-}
-
-int op_read_float(OggOpusFile *_of,float *_pcm,int _buf_size,int *_li){
- _of->state_channel_count=0;
- return op_read_native(_of,_pcm,_buf_size,_li);
-}
-
-static int op_stereo_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
- op_sample *_src,int _nsamples,int _nchannels){
- (void)_of;
- _nsamples=OP_MIN(_nsamples,_dst_sz>>1);
- if(_nchannels==2)memcpy(_dst,_src,_nsamples*2*sizeof(*_src));
- else{
- float *dst;
- int i;
- dst=(float *)_dst;
- if(_nchannels==1){
- for(i=0;i<_nsamples;i++)dst[2*i+0]=dst[2*i+1]=_src[i];
- }
- else{
- for(i=0;i<_nsamples;i++){
- float l;
- float r;
- int ci;
- l=r=0;
- for(ci=0;ci<_nchannels;ci++){
- l+=OP_STEREO_DOWNMIX[_nchannels-3][ci][0]*_src[_nchannels*i+ci];
- r+=OP_STEREO_DOWNMIX[_nchannels-3][ci][1]*_src[_nchannels*i+ci];
- }
- dst[2*i+0]=l;
- dst[2*i+1]=r;
- }
- }
- }
- return _nsamples;
-}
-
-static int op_float2short_stereo_filter(OggOpusFile *_of,
- void *_dst,int _dst_sz,op_sample *_src,int _nsamples,int _nchannels){
- opus_int16 *dst;
- dst=(opus_int16 *)_dst;
- if(_nchannels==1){
- int i;
- _nsamples=op_float2short_filter(_of,dst,_dst_sz>>1,_src,_nsamples,1);
- for(i=_nsamples;i-->0;)dst[2*i+0]=dst[2*i+1]=dst[i];
- }
- else{
- if(_nchannels>2){
- _nsamples=OP_MIN(_nsamples,_dst_sz>>1);
- _nsamples=op_stereo_filter(_of,_src,_nsamples*2,
- _src,_nsamples,_nchannels);
- }
- _nsamples=op_float2short_filter(_of,dst,_dst_sz,_src,_nsamples,2);
- }
- return _nsamples;
-}
-
-int op_read_stereo(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size){
- return op_filter_read_native(_of,_pcm,_buf_size,
- op_float2short_stereo_filter,NULL);
-}
-
-int op_read_float_stereo(OggOpusFile *_of,float *_pcm,int _buf_size){
- _of->state_channel_count=0;
- return op_filter_read_native(_of,_pcm,_buf_size,op_stereo_filter,NULL);
-}
-
-#endif
diff --git a/thirdparty/opus/repacketizer.c b/thirdparty/opus/repacketizer.c
deleted file mode 100644
index c80ee7f001..0000000000
--- a/thirdparty/opus/repacketizer.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus.h"
-#include "opus_private.h"
-#include "os_support.h"
-
-
-int opus_repacketizer_get_size(void)
-{
- return sizeof(OpusRepacketizer);
-}
-
-OpusRepacketizer *opus_repacketizer_init(OpusRepacketizer *rp)
-{
- rp->nb_frames = 0;
- return rp;
-}
-
-OpusRepacketizer *opus_repacketizer_create(void)
-{
- OpusRepacketizer *rp;
- rp=(OpusRepacketizer *)opus_alloc(opus_repacketizer_get_size());
- if(rp==NULL)return NULL;
- return opus_repacketizer_init(rp);
-}
-
-void opus_repacketizer_destroy(OpusRepacketizer *rp)
-{
- opus_free(rp);
-}
-
-static int opus_repacketizer_cat_impl(OpusRepacketizer *rp, const unsigned char *data, opus_int32 len, int self_delimited)
-{
- unsigned char tmp_toc;
- int curr_nb_frames,ret;
- /* Set of check ToC */
- if (len<1) return OPUS_INVALID_PACKET;
- if (rp->nb_frames == 0)
- {
- rp->toc = data[0];
- rp->framesize = opus_packet_get_samples_per_frame(data, 8000);
- } else if ((rp->toc&0xFC) != (data[0]&0xFC))
- {
- /*fprintf(stderr, "toc mismatch: 0x%x vs 0x%x\n", rp->toc, data[0]);*/
- return OPUS_INVALID_PACKET;
- }
- curr_nb_frames = opus_packet_get_nb_frames(data, len);
- if(curr_nb_frames<1) return OPUS_INVALID_PACKET;
-
- /* Check the 120 ms maximum packet size */
- if ((curr_nb_frames+rp->nb_frames)*rp->framesize > 960)
- {
- return OPUS_INVALID_PACKET;
- }
-
- ret=opus_packet_parse_impl(data, len, self_delimited, &tmp_toc, &rp->frames[rp->nb_frames], &rp->len[rp->nb_frames], NULL, NULL);
- if(ret<1)return ret;
-
- rp->nb_frames += curr_nb_frames;
- return OPUS_OK;
-}
-
-int opus_repacketizer_cat(OpusRepacketizer *rp, const unsigned char *data, opus_int32 len)
-{
- return opus_repacketizer_cat_impl(rp, data, len, 0);
-}
-
-int opus_repacketizer_get_nb_frames(OpusRepacketizer *rp)
-{
- return rp->nb_frames;
-}
-
-opus_int32 opus_repacketizer_out_range_impl(OpusRepacketizer *rp, int begin, int end,
- unsigned char *data, opus_int32 maxlen, int self_delimited, int pad)
-{
- int i, count;
- opus_int32 tot_size;
- opus_int16 *len;
- const unsigned char **frames;
- unsigned char * ptr;
-
- if (begin<0 || begin>=end || end>rp->nb_frames)
- {
- /*fprintf(stderr, "%d %d %d\n", begin, end, rp->nb_frames);*/
- return OPUS_BAD_ARG;
- }
- count = end-begin;
-
- len = rp->len+begin;
- frames = rp->frames+begin;
- if (self_delimited)
- tot_size = 1 + (len[count-1]>=252);
- else
- tot_size = 0;
-
- ptr = data;
- if (count==1)
- {
- /* Code 0 */
- tot_size += len[0]+1;
- if (tot_size > maxlen)
- return OPUS_BUFFER_TOO_SMALL;
- *ptr++ = rp->toc&0xFC;
- } else if (count==2)
- {
- if (len[1] == len[0])
- {
- /* Code 1 */
- tot_size += 2*len[0]+1;
- if (tot_size > maxlen)
- return OPUS_BUFFER_TOO_SMALL;
- *ptr++ = (rp->toc&0xFC) | 0x1;
- } else {
- /* Code 2 */
- tot_size += len[0]+len[1]+2+(len[0]>=252);
- if (tot_size > maxlen)
- return OPUS_BUFFER_TOO_SMALL;
- *ptr++ = (rp->toc&0xFC) | 0x2;
- ptr += encode_size(len[0], ptr);
- }
- }
- if (count > 2 || (pad && tot_size < maxlen))
- {
- /* Code 3 */
- int vbr;
- int pad_amount=0;
-
- /* Restart the process for the padding case */
- ptr = data;
- if (self_delimited)
- tot_size = 1 + (len[count-1]>=252);
- else
- tot_size = 0;
- vbr = 0;
- for (i=1;i<count;i++)
- {
- if (len[i] != len[0])
- {
- vbr=1;
- break;
- }
- }
- if (vbr)
- {
- tot_size += 2;
- for (i=0;i<count-1;i++)
- tot_size += 1 + (len[i]>=252) + len[i];
- tot_size += len[count-1];
-
- if (tot_size > maxlen)
- return OPUS_BUFFER_TOO_SMALL;
- *ptr++ = (rp->toc&0xFC) | 0x3;
- *ptr++ = count | 0x80;
- } else {
- tot_size += count*len[0]+2;
- if (tot_size > maxlen)
- return OPUS_BUFFER_TOO_SMALL;
- *ptr++ = (rp->toc&0xFC) | 0x3;
- *ptr++ = count;
- }
- pad_amount = pad ? (maxlen-tot_size) : 0;
- if (pad_amount != 0)
- {
- int nb_255s;
- data[1] |= 0x40;
- nb_255s = (pad_amount-1)/255;
- for (i=0;i<nb_255s;i++)
- *ptr++ = 255;
- *ptr++ = pad_amount-255*nb_255s-1;
- tot_size += pad_amount;
- }
- if (vbr)
- {
- for (i=0;i<count-1;i++)
- ptr += encode_size(len[i], ptr);
- }
- }
- if (self_delimited) {
- int sdlen = encode_size(len[count-1], ptr);
- ptr += sdlen;
- }
- /* Copy the actual data */
- for (i=0;i<count;i++)
- {
- /* Using OPUS_MOVE() instead of OPUS_COPY() in case we're doing in-place
- padding from opus_packet_pad or opus_packet_unpad(). */
- celt_assert(frames[i] + len[i] <= data || ptr <= frames[i]);
- OPUS_MOVE(ptr, frames[i], len[i]);
- ptr += len[i];
- }
- if (pad)
- {
- /* Fill padding with zeros. */
- while (ptr<data+maxlen)
- *ptr++=0;
- }
- return tot_size;
-}
-
-opus_int32 opus_repacketizer_out_range(OpusRepacketizer *rp, int begin, int end, unsigned char *data, opus_int32 maxlen)
-{
- return opus_repacketizer_out_range_impl(rp, begin, end, data, maxlen, 0, 0);
-}
-
-opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus_int32 maxlen)
-{
- return opus_repacketizer_out_range_impl(rp, 0, rp->nb_frames, data, maxlen, 0, 0);
-}
-
-int opus_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len)
-{
- OpusRepacketizer rp;
- opus_int32 ret;
- if (len < 1)
- return OPUS_BAD_ARG;
- if (len==new_len)
- return OPUS_OK;
- else if (len > new_len)
- return OPUS_BAD_ARG;
- opus_repacketizer_init(&rp);
- /* Moving payload to the end of the packet so we can do in-place padding */
- OPUS_MOVE(data+new_len-len, data, len);
- ret = opus_repacketizer_cat(&rp, data+new_len-len, len);
- if (ret != OPUS_OK)
- return ret;
- ret = opus_repacketizer_out_range_impl(&rp, 0, rp.nb_frames, data, new_len, 0, 1);
- if (ret > 0)
- return OPUS_OK;
- else
- return ret;
-}
-
-opus_int32 opus_packet_unpad(unsigned char *data, opus_int32 len)
-{
- OpusRepacketizer rp;
- opus_int32 ret;
- if (len < 1)
- return OPUS_BAD_ARG;
- opus_repacketizer_init(&rp);
- ret = opus_repacketizer_cat(&rp, data, len);
- if (ret < 0)
- return ret;
- ret = opus_repacketizer_out_range_impl(&rp, 0, rp.nb_frames, data, len, 0, 0);
- celt_assert(ret > 0 && ret <= len);
- return ret;
-}
-
-int opus_multistream_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len, int nb_streams)
-{
- int s;
- int count;
- unsigned char toc;
- opus_int16 size[48];
- opus_int32 packet_offset;
- opus_int32 amount;
-
- if (len < 1)
- return OPUS_BAD_ARG;
- if (len==new_len)
- return OPUS_OK;
- else if (len > new_len)
- return OPUS_BAD_ARG;
- amount = new_len - len;
- /* Seek to last stream */
- for (s=0;s<nb_streams-1;s++)
- {
- if (len<=0)
- return OPUS_INVALID_PACKET;
- count = opus_packet_parse_impl(data, len, 1, &toc, NULL,
- size, NULL, &packet_offset);
- if (count<0)
- return count;
- data += packet_offset;
- len -= packet_offset;
- }
- return opus_packet_pad(data, len, len+amount);
-}
-
-opus_int32 opus_multistream_packet_unpad(unsigned char *data, opus_int32 len, int nb_streams)
-{
- int s;
- unsigned char toc;
- opus_int16 size[48];
- opus_int32 packet_offset;
- OpusRepacketizer rp;
- unsigned char *dst;
- opus_int32 dst_len;
-
- if (len < 1)
- return OPUS_BAD_ARG;
- dst = data;
- dst_len = 0;
- /* Unpad all frames */
- for (s=0;s<nb_streams;s++)
- {
- opus_int32 ret;
- int self_delimited = s!=nb_streams-1;
- if (len<=0)
- return OPUS_INVALID_PACKET;
- opus_repacketizer_init(&rp);
- ret = opus_packet_parse_impl(data, len, self_delimited, &toc, NULL,
- size, NULL, &packet_offset);
- if (ret<0)
- return ret;
- ret = opus_repacketizer_cat_impl(&rp, data, packet_offset, self_delimited);
- if (ret < 0)
- return ret;
- ret = opus_repacketizer_out_range_impl(&rp, 0, rp.nb_frames, dst, len, self_delimited, 0);
- if (ret < 0)
- return ret;
- else
- dst_len += ret;
- dst += ret;
- data += packet_offset;
- len -= packet_offset;
- }
- return dst_len;
-}
-
diff --git a/thirdparty/opus/repacketizer_demo.c b/thirdparty/opus/repacketizer_demo.c
deleted file mode 100644
index dc05c1b359..0000000000
--- a/thirdparty/opus/repacketizer_demo.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/* Copyright (c) 2011 Xiph.Org Foundation
- Written by Jean-Marc Valin */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define MAX_PACKETOUT 32000
-
-void usage(char *argv0)
-{
- fprintf(stderr, "usage: %s [options] input_file output_file\n", argv0);
-}
-
-static void int_to_char(opus_uint32 i, unsigned char ch[4])
-{
- ch[0] = i>>24;
- ch[1] = (i>>16)&0xFF;
- ch[2] = (i>>8)&0xFF;
- ch[3] = i&0xFF;
-}
-
-static opus_uint32 char_to_int(unsigned char ch[4])
-{
- return ((opus_uint32)ch[0]<<24) | ((opus_uint32)ch[1]<<16)
- | ((opus_uint32)ch[2]<< 8) | (opus_uint32)ch[3];
-}
-
-int main(int argc, char *argv[])
-{
- int i, eof=0;
- FILE *fin, *fout;
- unsigned char packets[48][1500];
- int len[48];
- int rng[48];
- OpusRepacketizer *rp;
- unsigned char output_packet[MAX_PACKETOUT];
- int merge = 1, split=0;
-
- if (argc < 3)
- {
- usage(argv[0]);
- return EXIT_FAILURE;
- }
- for (i=1;i<argc-2;i++)
- {
- if (strcmp(argv[i], "-merge")==0)
- {
- merge = atoi(argv[i+1]);
- if(merge<1)
- {
- fprintf(stderr, "-merge parameter must be at least 1.\n");
- return EXIT_FAILURE;
- }
- if(merge>48)
- {
- fprintf(stderr, "-merge parameter must be less than 48.\n");
- return EXIT_FAILURE;
- }
- i++;
- } else if (strcmp(argv[i], "-split")==0)
- split = 1;
- else
- {
- fprintf(stderr, "Unknown option: %s\n", argv[i]);
- usage(argv[0]);
- return EXIT_FAILURE;
- }
- }
- fin = fopen(argv[argc-2], "r");
- if(fin==NULL)
- {
- fprintf(stderr, "Error opening input file: %s\n", argv[argc-2]);
- return EXIT_FAILURE;
- }
- fout = fopen(argv[argc-1], "w");
- if(fout==NULL)
- {
- fprintf(stderr, "Error opening output file: %s\n", argv[argc-1]);
- fclose(fin);
- return EXIT_FAILURE;
- }
-
- rp = opus_repacketizer_create();
- while (!eof)
- {
- int err;
- int nb_packets=merge;
- opus_repacketizer_init(rp);
- for (i=0;i<nb_packets;i++)
- {
- unsigned char ch[4];
- err = fread(ch, 1, 4, fin);
- len[i] = char_to_int(ch);
- /*fprintf(stderr, "in len = %d\n", len[i]);*/
- if (len[i]>1500 || len[i]<0)
- {
- if (feof(fin))
- {
- eof = 1;
- } else {
- fprintf(stderr, "Invalid payload length\n");
- fclose(fin);
- fclose(fout);
- return EXIT_FAILURE;
- }
- break;
- }
- err = fread(ch, 1, 4, fin);
- rng[i] = char_to_int(ch);
- err = fread(packets[i], 1, len[i], fin);
- if (feof(fin))
- {
- eof = 1;
- break;
- }
- err = opus_repacketizer_cat(rp, packets[i], len[i]);
- if (err!=OPUS_OK)
- {
- fprintf(stderr, "opus_repacketizer_cat() failed: %s\n", opus_strerror(err));
- break;
- }
- }
- nb_packets = i;
-
- if (eof)
- break;
-
- if (!split)
- {
- err = opus_repacketizer_out(rp, output_packet, MAX_PACKETOUT);
- if (err>0) {
- unsigned char int_field[4];
- int_to_char(err, int_field);
- if(fwrite(int_field, 1, 4, fout)!=4){
- fprintf(stderr, "Error writing.\n");
- return EXIT_FAILURE;
- }
- int_to_char(rng[nb_packets-1], int_field);
- if (fwrite(int_field, 1, 4, fout)!=4) {
- fprintf(stderr, "Error writing.\n");
- return EXIT_FAILURE;
- }
- if (fwrite(output_packet, 1, err, fout)!=(unsigned)err) {
- fprintf(stderr, "Error writing.\n");
- return EXIT_FAILURE;
- }
- /*fprintf(stderr, "out len = %d\n", err);*/
- } else {
- fprintf(stderr, "opus_repacketizer_out() failed: %s\n", opus_strerror(err));
- }
- } else {
- int nb_frames = opus_repacketizer_get_nb_frames(rp);
- for (i=0;i<nb_frames;i++)
- {
- err = opus_repacketizer_out_range(rp, i, i+1, output_packet, MAX_PACKETOUT);
- if (err>0) {
- unsigned char int_field[4];
- int_to_char(err, int_field);
- if (fwrite(int_field, 1, 4, fout)!=4) {
- fprintf(stderr, "Error writing.\n");
- return EXIT_FAILURE;
- }
- if (i==nb_frames-1)
- int_to_char(rng[nb_packets-1], int_field);
- else
- int_to_char(0, int_field);
- if (fwrite(int_field, 1, 4, fout)!=4) {
- fprintf(stderr, "Error writing.\n");
- return EXIT_FAILURE;
- }
- if (fwrite(output_packet, 1, err, fout)!=(unsigned)err) {
- fprintf(stderr, "Error writing.\n");
- return EXIT_FAILURE;
- }
- /*fprintf(stderr, "out len = %d\n", err);*/
- } else {
- fprintf(stderr, "opus_repacketizer_out() failed: %s\n", opus_strerror(err));
- }
-
- }
- }
- }
-
- fclose(fin);
- fclose(fout);
- return EXIT_SUCCESS;
-}
diff --git a/thirdparty/opus/silk/A2NLSF.c b/thirdparty/opus/silk/A2NLSF.c
deleted file mode 100644
index b6e9e5ffcc..0000000000
--- a/thirdparty/opus/silk/A2NLSF.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-/* Conversion between prediction filter coefficients and NLSFs */
-/* Requires the order to be an even number */
-/* A piecewise linear approximation maps LSF <-> cos(LSF) */
-/* Therefore the result is not accurate NLSFs, but the two */
-/* functions are accurate inverses of each other */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "tables.h"
-
-/* Number of binary divisions, when not in low complexity mode */
-#define BIN_DIV_STEPS_A2NLSF_FIX 3 /* must be no higher than 16 - log2( LSF_COS_TAB_SZ_FIX ) */
-#define MAX_ITERATIONS_A2NLSF_FIX 30
-
-/* Helper function for A2NLSF(..) */
-/* Transforms polynomials from cos(n*f) to cos(f)^n */
-static OPUS_INLINE void silk_A2NLSF_trans_poly(
- opus_int32 *p, /* I/O Polynomial */
- const opus_int dd /* I Polynomial order (= filter order / 2 ) */
-)
-{
- opus_int k, n;
-
- for( k = 2; k <= dd; k++ ) {
- for( n = dd; n > k; n-- ) {
- p[ n - 2 ] -= p[ n ];
- }
- p[ k - 2 ] -= silk_LSHIFT( p[ k ], 1 );
- }
-}
-/* Helper function for A2NLSF(..) */
-/* Polynomial evaluation */
-static OPUS_INLINE opus_int32 silk_A2NLSF_eval_poly( /* return the polynomial evaluation, in Q16 */
- opus_int32 *p, /* I Polynomial, Q16 */
- const opus_int32 x, /* I Evaluation point, Q12 */
- const opus_int dd /* I Order */
-)
-{
- opus_int n;
- opus_int32 x_Q16, y32;
-
- y32 = p[ dd ]; /* Q16 */
- x_Q16 = silk_LSHIFT( x, 4 );
-
- if ( opus_likely( 8 == dd ) )
- {
- y32 = silk_SMLAWW( p[ 7 ], y32, x_Q16 );
- y32 = silk_SMLAWW( p[ 6 ], y32, x_Q16 );
- y32 = silk_SMLAWW( p[ 5 ], y32, x_Q16 );
- y32 = silk_SMLAWW( p[ 4 ], y32, x_Q16 );
- y32 = silk_SMLAWW( p[ 3 ], y32, x_Q16 );
- y32 = silk_SMLAWW( p[ 2 ], y32, x_Q16 );
- y32 = silk_SMLAWW( p[ 1 ], y32, x_Q16 );
- y32 = silk_SMLAWW( p[ 0 ], y32, x_Q16 );
- }
- else
- {
- for( n = dd - 1; n >= 0; n-- ) {
- y32 = silk_SMLAWW( p[ n ], y32, x_Q16 ); /* Q16 */
- }
- }
- return y32;
-}
-
-static OPUS_INLINE void silk_A2NLSF_init(
- const opus_int32 *a_Q16,
- opus_int32 *P,
- opus_int32 *Q,
- const opus_int dd
-)
-{
- opus_int k;
-
- /* Convert filter coefs to even and odd polynomials */
- P[dd] = silk_LSHIFT( 1, 16 );
- Q[dd] = silk_LSHIFT( 1, 16 );
- for( k = 0; k < dd; k++ ) {
- P[ k ] = -a_Q16[ dd - k - 1 ] - a_Q16[ dd + k ]; /* Q16 */
- Q[ k ] = -a_Q16[ dd - k - 1 ] + a_Q16[ dd + k ]; /* Q16 */
- }
-
- /* Divide out zeros as we have that for even filter orders, */
- /* z = 1 is always a root in Q, and */
- /* z = -1 is always a root in P */
- for( k = dd; k > 0; k-- ) {
- P[ k - 1 ] -= P[ k ];
- Q[ k - 1 ] += Q[ k ];
- }
-
- /* Transform polynomials from cos(n*f) to cos(f)^n */
- silk_A2NLSF_trans_poly( P, dd );
- silk_A2NLSF_trans_poly( Q, dd );
-}
-
-/* Compute Normalized Line Spectral Frequencies (NLSFs) from whitening filter coefficients */
-/* If not all roots are found, the a_Q16 coefficients are bandwidth expanded until convergence. */
-void silk_A2NLSF(
- opus_int16 *NLSF, /* O Normalized Line Spectral Frequencies in Q15 (0..2^15-1) [d] */
- opus_int32 *a_Q16, /* I/O Monic whitening filter coefficients in Q16 [d] */
- const opus_int d /* I Filter order (must be even) */
-)
-{
- opus_int i, k, m, dd, root_ix, ffrac;
- opus_int32 xlo, xhi, xmid;
- opus_int32 ylo, yhi, ymid, thr;
- opus_int32 nom, den;
- opus_int32 P[ SILK_MAX_ORDER_LPC / 2 + 1 ];
- opus_int32 Q[ SILK_MAX_ORDER_LPC / 2 + 1 ];
- opus_int32 *PQ[ 2 ];
- opus_int32 *p;
-
- /* Store pointers to array */
- PQ[ 0 ] = P;
- PQ[ 1 ] = Q;
-
- dd = silk_RSHIFT( d, 1 );
-
- silk_A2NLSF_init( a_Q16, P, Q, dd );
-
- /* Find roots, alternating between P and Q */
- p = P; /* Pointer to polynomial */
-
- xlo = silk_LSFCosTab_FIX_Q12[ 0 ]; /* Q12*/
- ylo = silk_A2NLSF_eval_poly( p, xlo, dd );
-
- if( ylo < 0 ) {
- /* Set the first NLSF to zero and move on to the next */
- NLSF[ 0 ] = 0;
- p = Q; /* Pointer to polynomial */
- ylo = silk_A2NLSF_eval_poly( p, xlo, dd );
- root_ix = 1; /* Index of current root */
- } else {
- root_ix = 0; /* Index of current root */
- }
- k = 1; /* Loop counter */
- i = 0; /* Counter for bandwidth expansions applied */
- thr = 0;
- while( 1 ) {
- /* Evaluate polynomial */
- xhi = silk_LSFCosTab_FIX_Q12[ k ]; /* Q12 */
- yhi = silk_A2NLSF_eval_poly( p, xhi, dd );
-
- /* Detect zero crossing */
- if( ( ylo <= 0 && yhi >= thr ) || ( ylo >= 0 && yhi <= -thr ) ) {
- if( yhi == 0 ) {
- /* If the root lies exactly at the end of the current */
- /* interval, look for the next root in the next interval */
- thr = 1;
- } else {
- thr = 0;
- }
- /* Binary division */
- ffrac = -256;
- for( m = 0; m < BIN_DIV_STEPS_A2NLSF_FIX; m++ ) {
- /* Evaluate polynomial */
- xmid = silk_RSHIFT_ROUND( xlo + xhi, 1 );
- ymid = silk_A2NLSF_eval_poly( p, xmid, dd );
-
- /* Detect zero crossing */
- if( ( ylo <= 0 && ymid >= 0 ) || ( ylo >= 0 && ymid <= 0 ) ) {
- /* Reduce frequency */
- xhi = xmid;
- yhi = ymid;
- } else {
- /* Increase frequency */
- xlo = xmid;
- ylo = ymid;
- ffrac = silk_ADD_RSHIFT( ffrac, 128, m );
- }
- }
-
- /* Interpolate */
- if( silk_abs( ylo ) < 65536 ) {
- /* Avoid dividing by zero */
- den = ylo - yhi;
- nom = silk_LSHIFT( ylo, 8 - BIN_DIV_STEPS_A2NLSF_FIX ) + silk_RSHIFT( den, 1 );
- if( den != 0 ) {
- ffrac += silk_DIV32( nom, den );
- }
- } else {
- /* No risk of dividing by zero because abs(ylo - yhi) >= abs(ylo) >= 65536 */
- ffrac += silk_DIV32( ylo, silk_RSHIFT( ylo - yhi, 8 - BIN_DIV_STEPS_A2NLSF_FIX ) );
- }
- NLSF[ root_ix ] = (opus_int16)silk_min_32( silk_LSHIFT( (opus_int32)k, 8 ) + ffrac, silk_int16_MAX );
-
- silk_assert( NLSF[ root_ix ] >= 0 );
-
- root_ix++; /* Next root */
- if( root_ix >= d ) {
- /* Found all roots */
- break;
- }
- /* Alternate pointer to polynomial */
- p = PQ[ root_ix & 1 ];
-
- /* Evaluate polynomial */
- xlo = silk_LSFCosTab_FIX_Q12[ k - 1 ]; /* Q12*/
- ylo = silk_LSHIFT( 1 - ( root_ix & 2 ), 12 );
- } else {
- /* Increment loop counter */
- k++;
- xlo = xhi;
- ylo = yhi;
- thr = 0;
-
- if( k > LSF_COS_TAB_SZ_FIX ) {
- i++;
- if( i > MAX_ITERATIONS_A2NLSF_FIX ) {
- /* Set NLSFs to white spectrum and exit */
- NLSF[ 0 ] = (opus_int16)silk_DIV32_16( 1 << 15, d + 1 );
- for( k = 1; k < d; k++ ) {
- NLSF[ k ] = (opus_int16)silk_SMULBB( k + 1, NLSF[ 0 ] );
- }
- return;
- }
-
- /* Error: Apply progressively more bandwidth expansion and run again */
- silk_bwexpander_32( a_Q16, d, 65536 - silk_SMULBB( 10 + i, i ) ); /* 10_Q16 = 0.00015*/
-
- silk_A2NLSF_init( a_Q16, P, Q, dd );
- p = P; /* Pointer to polynomial */
- xlo = silk_LSFCosTab_FIX_Q12[ 0 ]; /* Q12*/
- ylo = silk_A2NLSF_eval_poly( p, xlo, dd );
- if( ylo < 0 ) {
- /* Set the first NLSF to zero and move on to the next */
- NLSF[ 0 ] = 0;
- p = Q; /* Pointer to polynomial */
- ylo = silk_A2NLSF_eval_poly( p, xlo, dd );
- root_ix = 1; /* Index of current root */
- } else {
- root_ix = 0; /* Index of current root */
- }
- k = 1; /* Reset loop counter */
- }
- }
- }
-}
diff --git a/thirdparty/opus/silk/API.h b/thirdparty/opus/silk/API.h
deleted file mode 100644
index 0131acbb08..0000000000
--- a/thirdparty/opus/silk/API.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_API_H
-#define SILK_API_H
-
-#include "control.h"
-#include "typedef.h"
-#include "errors.h"
-#include "entenc.h"
-#include "entdec.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define SILK_MAX_FRAMES_PER_PACKET 3
-
-/* Struct for TOC (Table of Contents) */
-typedef struct {
- opus_int VADFlag; /* Voice activity for packet */
- opus_int VADFlags[ SILK_MAX_FRAMES_PER_PACKET ]; /* Voice activity for each frame in packet */
- opus_int inbandFECFlag; /* Flag indicating if packet contains in-band FEC */
-} silk_TOC_struct;
-
-/****************************************/
-/* Encoder functions */
-/****************************************/
-
-/***********************************************/
-/* Get size in bytes of the Silk encoder state */
-/***********************************************/
-opus_int silk_Get_Encoder_Size( /* O Returns error code */
- opus_int *encSizeBytes /* O Number of bytes in SILK encoder state */
-);
-
-/*************************/
-/* Init or reset encoder */
-/*************************/
-opus_int silk_InitEncoder( /* O Returns error code */
- void *encState, /* I/O State */
- int arch, /* I Run-time architecture */
- silk_EncControlStruct *encStatus /* O Encoder Status */
-);
-
-/**************************/
-/* Encode frame with Silk */
-/**************************/
-/* Note: if prefillFlag is set, the input must contain 10 ms of audio, irrespective of what */
-/* encControl->payloadSize_ms is set to */
-opus_int silk_Encode( /* O Returns error code */
- void *encState, /* I/O State */
- silk_EncControlStruct *encControl, /* I Control status */
- const opus_int16 *samplesIn, /* I Speech sample input vector */
- opus_int nSamplesIn, /* I Number of samples in input vector */
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- opus_int32 *nBytesOut, /* I/O Number of bytes in payload (input: Max bytes) */
- const opus_int prefillFlag /* I Flag to indicate prefilling buffers no coding */
-);
-
-/****************************************/
-/* Decoder functions */
-/****************************************/
-
-/***********************************************/
-/* Get size in bytes of the Silk decoder state */
-/***********************************************/
-opus_int silk_Get_Decoder_Size( /* O Returns error code */
- opus_int *decSizeBytes /* O Number of bytes in SILK decoder state */
-);
-
-/*************************/
-/* Init or Reset decoder */
-/*************************/
-opus_int silk_InitDecoder( /* O Returns error code */
- void *decState /* I/O State */
-);
-
-/******************/
-/* Decode a frame */
-/******************/
-opus_int silk_Decode( /* O Returns error code */
- void* decState, /* I/O State */
- silk_DecControlStruct* decControl, /* I/O Control Structure */
- opus_int lostFlag, /* I 0: no loss, 1 loss, 2 decode fec */
- opus_int newPacketFlag, /* I Indicates first decoder call for this packet */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int16 *samplesOut, /* O Decoded output speech vector */
- opus_int32 *nSamplesOut, /* O Number of samples decoded */
- int arch /* I Run-time architecture */
-);
-
-#if 0
-/**************************************/
-/* Get table of contents for a packet */
-/**************************************/
-opus_int silk_get_TOC(
- const opus_uint8 *payload, /* I Payload data */
- const opus_int nBytesIn, /* I Number of input bytes */
- const opus_int nFramesPerPayload, /* I Number of SILK frames per payload */
- silk_TOC_struct *Silk_TOC /* O Type of content */
-);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/CNG.c b/thirdparty/opus/silk/CNG.c
deleted file mode 100644
index 8443ad63bb..0000000000
--- a/thirdparty/opus/silk/CNG.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-
-/* Generates excitation for CNG LPC synthesis */
-static OPUS_INLINE void silk_CNG_exc(
- opus_int32 exc_Q14[], /* O CNG excitation signal Q10 */
- opus_int32 exc_buf_Q14[], /* I Random samples buffer Q10 */
- opus_int length, /* I Length */
- opus_int32 *rand_seed /* I/O Seed to random index generator */
-)
-{
- opus_int32 seed;
- opus_int i, idx, exc_mask;
-
- exc_mask = CNG_BUF_MASK_MAX;
- while( exc_mask > length ) {
- exc_mask = silk_RSHIFT( exc_mask, 1 );
- }
-
- seed = *rand_seed;
- for( i = 0; i < length; i++ ) {
- seed = silk_RAND( seed );
- idx = (opus_int)( silk_RSHIFT( seed, 24 ) & exc_mask );
- silk_assert( idx >= 0 );
- silk_assert( idx <= CNG_BUF_MASK_MAX );
- exc_Q14[ i ] = exc_buf_Q14[ idx ];
- }
- *rand_seed = seed;
-}
-
-void silk_CNG_Reset(
- silk_decoder_state *psDec /* I/O Decoder state */
-)
-{
- opus_int i, NLSF_step_Q15, NLSF_acc_Q15;
-
- NLSF_step_Q15 = silk_DIV32_16( silk_int16_MAX, psDec->LPC_order + 1 );
- NLSF_acc_Q15 = 0;
- for( i = 0; i < psDec->LPC_order; i++ ) {
- NLSF_acc_Q15 += NLSF_step_Q15;
- psDec->sCNG.CNG_smth_NLSF_Q15[ i ] = NLSF_acc_Q15;
- }
- psDec->sCNG.CNG_smth_Gain_Q16 = 0;
- psDec->sCNG.rand_seed = 3176576;
-}
-
-/* Updates CNG estimate, and applies the CNG when packet was lost */
-void silk_CNG(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl, /* I/O Decoder control */
- opus_int16 frame[], /* I/O Signal */
- opus_int length /* I Length of residual */
-)
-{
- opus_int i, subfr;
- opus_int32 LPC_pred_Q10, max_Gain_Q16, gain_Q16, gain_Q10;
- opus_int16 A_Q12[ MAX_LPC_ORDER ];
- silk_CNG_struct *psCNG = &psDec->sCNG;
- SAVE_STACK;
-
- if( psDec->fs_kHz != psCNG->fs_kHz ) {
- /* Reset state */
- silk_CNG_Reset( psDec );
-
- psCNG->fs_kHz = psDec->fs_kHz;
- }
- if( psDec->lossCnt == 0 && psDec->prevSignalType == TYPE_NO_VOICE_ACTIVITY ) {
- /* Update CNG parameters */
-
- /* Smoothing of LSF's */
- for( i = 0; i < psDec->LPC_order; i++ ) {
- psCNG->CNG_smth_NLSF_Q15[ i ] += silk_SMULWB( (opus_int32)psDec->prevNLSF_Q15[ i ] - (opus_int32)psCNG->CNG_smth_NLSF_Q15[ i ], CNG_NLSF_SMTH_Q16 );
- }
- /* Find the subframe with the highest gain */
- max_Gain_Q16 = 0;
- subfr = 0;
- for( i = 0; i < psDec->nb_subfr; i++ ) {
- if( psDecCtrl->Gains_Q16[ i ] > max_Gain_Q16 ) {
- max_Gain_Q16 = psDecCtrl->Gains_Q16[ i ];
- subfr = i;
- }
- }
- /* Update CNG excitation buffer with excitation from this subframe */
- silk_memmove( &psCNG->CNG_exc_buf_Q14[ psDec->subfr_length ], psCNG->CNG_exc_buf_Q14, ( psDec->nb_subfr - 1 ) * psDec->subfr_length * sizeof( opus_int32 ) );
- silk_memcpy( psCNG->CNG_exc_buf_Q14, &psDec->exc_Q14[ subfr * psDec->subfr_length ], psDec->subfr_length * sizeof( opus_int32 ) );
-
- /* Smooth gains */
- for( i = 0; i < psDec->nb_subfr; i++ ) {
- psCNG->CNG_smth_Gain_Q16 += silk_SMULWB( psDecCtrl->Gains_Q16[ i ] - psCNG->CNG_smth_Gain_Q16, CNG_GAIN_SMTH_Q16 );
- }
- }
-
- /* Add CNG when packet is lost or during DTX */
- if( psDec->lossCnt ) {
- VARDECL( opus_int32, CNG_sig_Q14 );
- ALLOC( CNG_sig_Q14, length + MAX_LPC_ORDER, opus_int32 );
-
- /* Generate CNG excitation */
- gain_Q16 = silk_SMULWW( psDec->sPLC.randScale_Q14, psDec->sPLC.prevGain_Q16[1] );
- if( gain_Q16 >= (1 << 21) || psCNG->CNG_smth_Gain_Q16 > (1 << 23) ) {
- gain_Q16 = silk_SMULTT( gain_Q16, gain_Q16 );
- gain_Q16 = silk_SUB_LSHIFT32(silk_SMULTT( psCNG->CNG_smth_Gain_Q16, psCNG->CNG_smth_Gain_Q16 ), gain_Q16, 5 );
- gain_Q16 = silk_LSHIFT32( silk_SQRT_APPROX( gain_Q16 ), 16 );
- } else {
- gain_Q16 = silk_SMULWW( gain_Q16, gain_Q16 );
- gain_Q16 = silk_SUB_LSHIFT32(silk_SMULWW( psCNG->CNG_smth_Gain_Q16, psCNG->CNG_smth_Gain_Q16 ), gain_Q16, 5 );
- gain_Q16 = silk_LSHIFT32( silk_SQRT_APPROX( gain_Q16 ), 8 );
- }
- gain_Q10 = silk_RSHIFT( gain_Q16, 6 );
-
- silk_CNG_exc( CNG_sig_Q14 + MAX_LPC_ORDER, psCNG->CNG_exc_buf_Q14, length, &psCNG->rand_seed );
-
- /* Convert CNG NLSF to filter representation */
- silk_NLSF2A( A_Q12, psCNG->CNG_smth_NLSF_Q15, psDec->LPC_order );
-
- /* Generate CNG signal, by synthesis filtering */
- silk_memcpy( CNG_sig_Q14, psCNG->CNG_synth_state, MAX_LPC_ORDER * sizeof( opus_int32 ) );
- for( i = 0; i < length; i++ ) {
- silk_assert( psDec->LPC_order == 10 || psDec->LPC_order == 16 );
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LPC_pred_Q10 = silk_RSHIFT( psDec->LPC_order, 1 );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 1 ], A_Q12[ 0 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 2 ], A_Q12[ 1 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 3 ], A_Q12[ 2 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 4 ], A_Q12[ 3 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 5 ], A_Q12[ 4 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 6 ], A_Q12[ 5 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 7 ], A_Q12[ 6 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 8 ], A_Q12[ 7 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 9 ], A_Q12[ 8 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 10 ], A_Q12[ 9 ] );
- if( psDec->LPC_order == 16 ) {
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 11 ], A_Q12[ 10 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 12 ], A_Q12[ 11 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 13 ], A_Q12[ 12 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 14 ], A_Q12[ 13 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 15 ], A_Q12[ 14 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, CNG_sig_Q14[ MAX_LPC_ORDER + i - 16 ], A_Q12[ 15 ] );
- }
-
- /* Update states */
- CNG_sig_Q14[ MAX_LPC_ORDER + i ] = silk_ADD_LSHIFT( CNG_sig_Q14[ MAX_LPC_ORDER + i ], LPC_pred_Q10, 4 );
-
- /* Scale with Gain and add to input signal */
- frame[ i ] = (opus_int16)silk_ADD_SAT16( frame[ i ], silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( CNG_sig_Q14[ MAX_LPC_ORDER + i ], gain_Q10 ), 8 ) ) );
-
- }
- silk_memcpy( psCNG->CNG_synth_state, &CNG_sig_Q14[ length ], MAX_LPC_ORDER * sizeof( opus_int32 ) );
- } else {
- silk_memset( psCNG->CNG_synth_state, 0, psDec->LPC_order * sizeof( opus_int32 ) );
- }
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/HP_variable_cutoff.c b/thirdparty/opus/silk/HP_variable_cutoff.c
deleted file mode 100644
index bbe10f04ce..0000000000
--- a/thirdparty/opus/silk/HP_variable_cutoff.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#ifdef FIXED_POINT
-#include "main_FIX.h"
-#else
-#include "main_FLP.h"
-#endif
-#include "tuning_parameters.h"
-
-/* High-pass filter with cutoff frequency adaptation based on pitch lag statistics */
-void silk_HP_variable_cutoff(
- silk_encoder_state_Fxx state_Fxx[] /* I/O Encoder states */
-)
-{
- opus_int quality_Q15;
- opus_int32 pitch_freq_Hz_Q16, pitch_freq_log_Q7, delta_freq_Q7;
- silk_encoder_state *psEncC1 = &state_Fxx[ 0 ].sCmn;
-
- /* Adaptive cutoff frequency: estimate low end of pitch frequency range */
- if( psEncC1->prevSignalType == TYPE_VOICED ) {
- /* difference, in log domain */
- pitch_freq_Hz_Q16 = silk_DIV32_16( silk_LSHIFT( silk_MUL( psEncC1->fs_kHz, 1000 ), 16 ), psEncC1->prevLag );
- pitch_freq_log_Q7 = silk_lin2log( pitch_freq_Hz_Q16 ) - ( 16 << 7 );
-
- /* adjustment based on quality */
- quality_Q15 = psEncC1->input_quality_bands_Q15[ 0 ];
- pitch_freq_log_Q7 = silk_SMLAWB( pitch_freq_log_Q7, silk_SMULWB( silk_LSHIFT( -quality_Q15, 2 ), quality_Q15 ),
- pitch_freq_log_Q7 - ( silk_lin2log( SILK_FIX_CONST( VARIABLE_HP_MIN_CUTOFF_HZ, 16 ) ) - ( 16 << 7 ) ) );
-
- /* delta_freq = pitch_freq_log - psEnc->variable_HP_smth1; */
- delta_freq_Q7 = pitch_freq_log_Q7 - silk_RSHIFT( psEncC1->variable_HP_smth1_Q15, 8 );
- if( delta_freq_Q7 < 0 ) {
- /* less smoothing for decreasing pitch frequency, to track something close to the minimum */
- delta_freq_Q7 = silk_MUL( delta_freq_Q7, 3 );
- }
-
- /* limit delta, to reduce impact of outliers in pitch estimation */
- delta_freq_Q7 = silk_LIMIT_32( delta_freq_Q7, -SILK_FIX_CONST( VARIABLE_HP_MAX_DELTA_FREQ, 7 ), SILK_FIX_CONST( VARIABLE_HP_MAX_DELTA_FREQ, 7 ) );
-
- /* update smoother */
- psEncC1->variable_HP_smth1_Q15 = silk_SMLAWB( psEncC1->variable_HP_smth1_Q15,
- silk_SMULBB( psEncC1->speech_activity_Q8, delta_freq_Q7 ), SILK_FIX_CONST( VARIABLE_HP_SMTH_COEF1, 16 ) );
-
- /* limit frequency range */
- psEncC1->variable_HP_smth1_Q15 = silk_LIMIT_32( psEncC1->variable_HP_smth1_Q15,
- silk_LSHIFT( silk_lin2log( VARIABLE_HP_MIN_CUTOFF_HZ ), 8 ),
- silk_LSHIFT( silk_lin2log( VARIABLE_HP_MAX_CUTOFF_HZ ), 8 ) );
- }
-}
diff --git a/thirdparty/opus/silk/Inlines.h b/thirdparty/opus/silk/Inlines.h
deleted file mode 100644
index ec986cdfdd..0000000000
--- a/thirdparty/opus/silk/Inlines.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-/*! \file silk_Inlines.h
- * \brief silk_Inlines.h defines OPUS_INLINE signal processing functions.
- */
-
-#ifndef SILK_FIX_INLINES_H
-#define SILK_FIX_INLINES_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* count leading zeros of opus_int64 */
-static OPUS_INLINE opus_int32 silk_CLZ64( opus_int64 in )
-{
- opus_int32 in_upper;
-
- in_upper = (opus_int32)silk_RSHIFT64(in, 32);
- if (in_upper == 0) {
- /* Search in the lower 32 bits */
- return 32 + silk_CLZ32( (opus_int32) in );
- } else {
- /* Search in the upper 32 bits */
- return silk_CLZ32( in_upper );
- }
-}
-
-/* get number of leading zeros and fractional part (the bits right after the leading one */
-static OPUS_INLINE void silk_CLZ_FRAC(
- opus_int32 in, /* I input */
- opus_int32 *lz, /* O number of leading zeros */
- opus_int32 *frac_Q7 /* O the 7 bits right after the leading one */
-)
-{
- opus_int32 lzeros = silk_CLZ32(in);
-
- * lz = lzeros;
- * frac_Q7 = silk_ROR32(in, 24 - lzeros) & 0x7f;
-}
-
-/* Approximation of square root */
-/* Accuracy: < +/- 10% for output values > 15 */
-/* < +/- 2.5% for output values > 120 */
-static OPUS_INLINE opus_int32 silk_SQRT_APPROX( opus_int32 x )
-{
- opus_int32 y, lz, frac_Q7;
-
- if( x <= 0 ) {
- return 0;
- }
-
- silk_CLZ_FRAC(x, &lz, &frac_Q7);
-
- if( lz & 1 ) {
- y = 32768;
- } else {
- y = 46214; /* 46214 = sqrt(2) * 32768 */
- }
-
- /* get scaling right */
- y >>= silk_RSHIFT(lz, 1);
-
- /* increment using fractional part of input */
- y = silk_SMLAWB(y, y, silk_SMULBB(213, frac_Q7));
-
- return y;
-}
-
-/* Divide two int32 values and return result as int32 in a given Q-domain */
-static OPUS_INLINE opus_int32 silk_DIV32_varQ( /* O returns a good approximation of "(a32 << Qres) / b32" */
- const opus_int32 a32, /* I numerator (Q0) */
- const opus_int32 b32, /* I denominator (Q0) */
- const opus_int Qres /* I Q-domain of result (>= 0) */
-)
-{
- opus_int a_headrm, b_headrm, lshift;
- opus_int32 b32_inv, a32_nrm, b32_nrm, result;
-
- silk_assert( b32 != 0 );
- silk_assert( Qres >= 0 );
-
- /* Compute number of bits head room and normalize inputs */
- a_headrm = silk_CLZ32( silk_abs(a32) ) - 1;
- a32_nrm = silk_LSHIFT(a32, a_headrm); /* Q: a_headrm */
- b_headrm = silk_CLZ32( silk_abs(b32) ) - 1;
- b32_nrm = silk_LSHIFT(b32, b_headrm); /* Q: b_headrm */
-
- /* Inverse of b32, with 14 bits of precision */
- b32_inv = silk_DIV32_16( silk_int32_MAX >> 2, silk_RSHIFT(b32_nrm, 16) ); /* Q: 29 + 16 - b_headrm */
-
- /* First approximation */
- result = silk_SMULWB(a32_nrm, b32_inv); /* Q: 29 + a_headrm - b_headrm */
-
- /* Compute residual by subtracting product of denominator and first approximation */
- /* It's OK to overflow because the final value of a32_nrm should always be small */
- a32_nrm = silk_SUB32_ovflw(a32_nrm, silk_LSHIFT_ovflw( silk_SMMUL(b32_nrm, result), 3 )); /* Q: a_headrm */
-
- /* Refinement */
- result = silk_SMLAWB(result, a32_nrm, b32_inv); /* Q: 29 + a_headrm - b_headrm */
-
- /* Convert to Qres domain */
- lshift = 29 + a_headrm - b_headrm - Qres;
- if( lshift < 0 ) {
- return silk_LSHIFT_SAT32(result, -lshift);
- } else {
- if( lshift < 32){
- return silk_RSHIFT(result, lshift);
- } else {
- /* Avoid undefined result */
- return 0;
- }
- }
-}
-
-/* Invert int32 value and return result as int32 in a given Q-domain */
-static OPUS_INLINE opus_int32 silk_INVERSE32_varQ( /* O returns a good approximation of "(1 << Qres) / b32" */
- const opus_int32 b32, /* I denominator (Q0) */
- const opus_int Qres /* I Q-domain of result (> 0) */
-)
-{
- opus_int b_headrm, lshift;
- opus_int32 b32_inv, b32_nrm, err_Q32, result;
-
- silk_assert( b32 != 0 );
- silk_assert( Qres > 0 );
-
- /* Compute number of bits head room and normalize input */
- b_headrm = silk_CLZ32( silk_abs(b32) ) - 1;
- b32_nrm = silk_LSHIFT(b32, b_headrm); /* Q: b_headrm */
-
- /* Inverse of b32, with 14 bits of precision */
- b32_inv = silk_DIV32_16( silk_int32_MAX >> 2, silk_RSHIFT(b32_nrm, 16) ); /* Q: 29 + 16 - b_headrm */
-
- /* First approximation */
- result = silk_LSHIFT(b32_inv, 16); /* Q: 61 - b_headrm */
-
- /* Compute residual by subtracting product of denominator and first approximation from one */
- err_Q32 = silk_LSHIFT( ((opus_int32)1<<29) - silk_SMULWB(b32_nrm, b32_inv), 3 ); /* Q32 */
-
- /* Refinement */
- result = silk_SMLAWW(result, err_Q32, b32_inv); /* Q: 61 - b_headrm */
-
- /* Convert to Qres domain */
- lshift = 61 - b_headrm - Qres;
- if( lshift <= 0 ) {
- return silk_LSHIFT_SAT32(result, -lshift);
- } else {
- if( lshift < 32){
- return silk_RSHIFT(result, lshift);
- }else{
- /* Avoid undefined result */
- return 0;
- }
- }
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SILK_FIX_INLINES_H */
diff --git a/thirdparty/opus/silk/LPC_analysis_filter.c b/thirdparty/opus/silk/LPC_analysis_filter.c
deleted file mode 100644
index 20906673ff..0000000000
--- a/thirdparty/opus/silk/LPC_analysis_filter.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "celt_lpc.h"
-
-/*******************************************/
-/* LPC analysis filter */
-/* NB! State is kept internally and the */
-/* filter always starts with zero state */
-/* first d output samples are set to zero */
-/*******************************************/
-
-void silk_LPC_analysis_filter(
- opus_int16 *out, /* O Output signal */
- const opus_int16 *in, /* I Input signal */
- const opus_int16 *B, /* I MA prediction coefficients, Q12 [order] */
- const opus_int32 len, /* I Signal length */
- const opus_int32 d, /* I Filter order */
- int arch /* I Run-time architecture */
-)
-{
- opus_int j;
-#ifdef FIXED_POINT
- opus_int16 mem[SILK_MAX_ORDER_LPC];
- opus_int16 num[SILK_MAX_ORDER_LPC];
-#else
- int ix;
- opus_int32 out32_Q12, out32;
- const opus_int16 *in_ptr;
-#endif
-
- silk_assert( d >= 6 );
- silk_assert( (d & 1) == 0 );
- silk_assert( d <= len );
-
-#ifdef FIXED_POINT
- silk_assert( d <= SILK_MAX_ORDER_LPC );
- for ( j = 0; j < d; j++ ) {
- num[ j ] = -B[ j ];
- }
- for (j=0;j<d;j++) {
- mem[ j ] = in[ d - j - 1 ];
- }
- celt_fir( in + d, num, out + d, len - d, d, mem, arch );
- for ( j = 0; j < d; j++ ) {
- out[ j ] = 0;
- }
-#else
- (void)arch;
- for( ix = d; ix < len; ix++ ) {
- in_ptr = &in[ ix - 1 ];
-
- out32_Q12 = silk_SMULBB( in_ptr[ 0 ], B[ 0 ] );
- /* Allowing wrap around so that two wraps can cancel each other. The rare
- cases where the result wraps around can only be triggered by invalid streams*/
- out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -1 ], B[ 1 ] );
- out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -2 ], B[ 2 ] );
- out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -3 ], B[ 3 ] );
- out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -4 ], B[ 4 ] );
- out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -5 ], B[ 5 ] );
- for( j = 6; j < d; j += 2 ) {
- out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -j ], B[ j ] );
- out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -j - 1 ], B[ j + 1 ] );
- }
-
- /* Subtract prediction */
- out32_Q12 = silk_SUB32_ovflw( silk_LSHIFT( (opus_int32)in_ptr[ 1 ], 12 ), out32_Q12 );
-
- /* Scale to Q0 */
- out32 = silk_RSHIFT_ROUND( out32_Q12, 12 );
-
- /* Saturate output */
- out[ ix ] = (opus_int16)silk_SAT16( out32 );
- }
-
- /* Set first d output samples to zero */
- silk_memset( out, 0, d * sizeof( opus_int16 ) );
-#endif
-}
diff --git a/thirdparty/opus/silk/LPC_inv_pred_gain.c b/thirdparty/opus/silk/LPC_inv_pred_gain.c
deleted file mode 100644
index 4af89aa5fa..0000000000
--- a/thirdparty/opus/silk/LPC_inv_pred_gain.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-#define QA 24
-#define A_LIMIT SILK_FIX_CONST( 0.99975, QA )
-
-#define MUL32_FRAC_Q(a32, b32, Q) ((opus_int32)(silk_RSHIFT_ROUND64(silk_SMULL(a32, b32), Q)))
-
-/* Compute inverse of LPC prediction gain, and */
-/* test if LPC coefficients are stable (all poles within unit circle) */
-static opus_int32 LPC_inverse_pred_gain_QA( /* O Returns inverse prediction gain in energy domain, Q30 */
- opus_int32 A_QA[ 2 ][ SILK_MAX_ORDER_LPC ], /* I Prediction coefficients */
- const opus_int order /* I Prediction order */
-)
-{
- opus_int k, n, mult2Q;
- opus_int32 invGain_Q30, rc_Q31, rc_mult1_Q30, rc_mult2, tmp_QA;
- opus_int32 *Aold_QA, *Anew_QA;
-
- Anew_QA = A_QA[ order & 1 ];
-
- invGain_Q30 = (opus_int32)1 << 30;
- for( k = order - 1; k > 0; k-- ) {
- /* Check for stability */
- if( ( Anew_QA[ k ] > A_LIMIT ) || ( Anew_QA[ k ] < -A_LIMIT ) ) {
- return 0;
- }
-
- /* Set RC equal to negated AR coef */
- rc_Q31 = -silk_LSHIFT( Anew_QA[ k ], 31 - QA );
-
- /* rc_mult1_Q30 range: [ 1 : 2^30 ] */
- rc_mult1_Q30 = ( (opus_int32)1 << 30 ) - silk_SMMUL( rc_Q31, rc_Q31 );
- silk_assert( rc_mult1_Q30 > ( 1 << 15 ) ); /* reduce A_LIMIT if fails */
- silk_assert( rc_mult1_Q30 <= ( 1 << 30 ) );
-
- /* rc_mult2 range: [ 2^30 : silk_int32_MAX ] */
- mult2Q = 32 - silk_CLZ32( silk_abs( rc_mult1_Q30 ) );
- rc_mult2 = silk_INVERSE32_varQ( rc_mult1_Q30, mult2Q + 30 );
-
- /* Update inverse gain */
- /* invGain_Q30 range: [ 0 : 2^30 ] */
- invGain_Q30 = silk_LSHIFT( silk_SMMUL( invGain_Q30, rc_mult1_Q30 ), 2 );
- silk_assert( invGain_Q30 >= 0 );
- silk_assert( invGain_Q30 <= ( 1 << 30 ) );
-
- /* Swap pointers */
- Aold_QA = Anew_QA;
- Anew_QA = A_QA[ k & 1 ];
-
- /* Update AR coefficient */
- for( n = 0; n < k; n++ ) {
- tmp_QA = Aold_QA[ n ] - MUL32_FRAC_Q( Aold_QA[ k - n - 1 ], rc_Q31, 31 );
- Anew_QA[ n ] = MUL32_FRAC_Q( tmp_QA, rc_mult2 , mult2Q );
- }
- }
-
- /* Check for stability */
- if( ( Anew_QA[ 0 ] > A_LIMIT ) || ( Anew_QA[ 0 ] < -A_LIMIT ) ) {
- return 0;
- }
-
- /* Set RC equal to negated AR coef */
- rc_Q31 = -silk_LSHIFT( Anew_QA[ 0 ], 31 - QA );
-
- /* Range: [ 1 : 2^30 ] */
- rc_mult1_Q30 = ( (opus_int32)1 << 30 ) - silk_SMMUL( rc_Q31, rc_Q31 );
-
- /* Update inverse gain */
- /* Range: [ 0 : 2^30 ] */
- invGain_Q30 = silk_LSHIFT( silk_SMMUL( invGain_Q30, rc_mult1_Q30 ), 2 );
- silk_assert( invGain_Q30 >= 0 );
- silk_assert( invGain_Q30 <= 1<<30 );
-
- return invGain_Q30;
-}
-
-/* For input in Q12 domain */
-opus_int32 silk_LPC_inverse_pred_gain( /* O Returns inverse prediction gain in energy domain, Q30 */
- const opus_int16 *A_Q12, /* I Prediction coefficients, Q12 [order] */
- const opus_int order /* I Prediction order */
-)
-{
- opus_int k;
- opus_int32 Atmp_QA[ 2 ][ SILK_MAX_ORDER_LPC ];
- opus_int32 *Anew_QA;
- opus_int32 DC_resp = 0;
-
- Anew_QA = Atmp_QA[ order & 1 ];
-
- /* Increase Q domain of the AR coefficients */
- for( k = 0; k < order; k++ ) {
- DC_resp += (opus_int32)A_Q12[ k ];
- Anew_QA[ k ] = silk_LSHIFT32( (opus_int32)A_Q12[ k ], QA - 12 );
- }
- /* If the DC is unstable, we don't even need to do the full calculations */
- if( DC_resp >= 4096 ) {
- return 0;
- }
- return LPC_inverse_pred_gain_QA( Atmp_QA, order );
-}
-
-#ifdef FIXED_POINT
-
-/* For input in Q24 domain */
-opus_int32 silk_LPC_inverse_pred_gain_Q24( /* O Returns inverse prediction gain in energy domain, Q30 */
- const opus_int32 *A_Q24, /* I Prediction coefficients [order] */
- const opus_int order /* I Prediction order */
-)
-{
- opus_int k;
- opus_int32 Atmp_QA[ 2 ][ SILK_MAX_ORDER_LPC ];
- opus_int32 *Anew_QA;
-
- Anew_QA = Atmp_QA[ order & 1 ];
-
- /* Increase Q domain of the AR coefficients */
- for( k = 0; k < order; k++ ) {
- Anew_QA[ k ] = silk_RSHIFT32( A_Q24[ k ], 24 - QA );
- }
-
- return LPC_inverse_pred_gain_QA( Atmp_QA, order );
-}
-#endif
diff --git a/thirdparty/opus/silk/LP_variable_cutoff.c b/thirdparty/opus/silk/LP_variable_cutoff.c
deleted file mode 100644
index f639e1f899..0000000000
--- a/thirdparty/opus/silk/LP_variable_cutoff.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/*
- Elliptic/Cauer filters designed with 0.1 dB passband ripple,
- 80 dB minimum stopband attenuation, and
- [0.95 : 0.15 : 0.35] normalized cut off frequencies.
-*/
-
-#include "main.h"
-
-/* Helper function, interpolates the filter taps */
-static OPUS_INLINE void silk_LP_interpolate_filter_taps(
- opus_int32 B_Q28[ TRANSITION_NB ],
- opus_int32 A_Q28[ TRANSITION_NA ],
- const opus_int ind,
- const opus_int32 fac_Q16
-)
-{
- opus_int nb, na;
-
- if( ind < TRANSITION_INT_NUM - 1 ) {
- if( fac_Q16 > 0 ) {
- if( fac_Q16 < 32768 ) { /* fac_Q16 is in range of a 16-bit int */
- /* Piece-wise linear interpolation of B and A */
- for( nb = 0; nb < TRANSITION_NB; nb++ ) {
- B_Q28[ nb ] = silk_SMLAWB(
- silk_Transition_LP_B_Q28[ ind ][ nb ],
- silk_Transition_LP_B_Q28[ ind + 1 ][ nb ] -
- silk_Transition_LP_B_Q28[ ind ][ nb ],
- fac_Q16 );
- }
- for( na = 0; na < TRANSITION_NA; na++ ) {
- A_Q28[ na ] = silk_SMLAWB(
- silk_Transition_LP_A_Q28[ ind ][ na ],
- silk_Transition_LP_A_Q28[ ind + 1 ][ na ] -
- silk_Transition_LP_A_Q28[ ind ][ na ],
- fac_Q16 );
- }
- } else { /* ( fac_Q16 - ( 1 << 16 ) ) is in range of a 16-bit int */
- silk_assert( fac_Q16 - ( 1 << 16 ) == silk_SAT16( fac_Q16 - ( 1 << 16 ) ) );
- /* Piece-wise linear interpolation of B and A */
- for( nb = 0; nb < TRANSITION_NB; nb++ ) {
- B_Q28[ nb ] = silk_SMLAWB(
- silk_Transition_LP_B_Q28[ ind + 1 ][ nb ],
- silk_Transition_LP_B_Q28[ ind + 1 ][ nb ] -
- silk_Transition_LP_B_Q28[ ind ][ nb ],
- fac_Q16 - ( (opus_int32)1 << 16 ) );
- }
- for( na = 0; na < TRANSITION_NA; na++ ) {
- A_Q28[ na ] = silk_SMLAWB(
- silk_Transition_LP_A_Q28[ ind + 1 ][ na ],
- silk_Transition_LP_A_Q28[ ind + 1 ][ na ] -
- silk_Transition_LP_A_Q28[ ind ][ na ],
- fac_Q16 - ( (opus_int32)1 << 16 ) );
- }
- }
- } else {
- silk_memcpy( B_Q28, silk_Transition_LP_B_Q28[ ind ], TRANSITION_NB * sizeof( opus_int32 ) );
- silk_memcpy( A_Q28, silk_Transition_LP_A_Q28[ ind ], TRANSITION_NA * sizeof( opus_int32 ) );
- }
- } else {
- silk_memcpy( B_Q28, silk_Transition_LP_B_Q28[ TRANSITION_INT_NUM - 1 ], TRANSITION_NB * sizeof( opus_int32 ) );
- silk_memcpy( A_Q28, silk_Transition_LP_A_Q28[ TRANSITION_INT_NUM - 1 ], TRANSITION_NA * sizeof( opus_int32 ) );
- }
-}
-
-/* Low-pass filter with variable cutoff frequency based on */
-/* piece-wise linear interpolation between elliptic filters */
-/* Start by setting psEncC->mode <> 0; */
-/* Deactivate by setting psEncC->mode = 0; */
-void silk_LP_variable_cutoff(
- silk_LP_state *psLP, /* I/O LP filter state */
- opus_int16 *frame, /* I/O Low-pass filtered output signal */
- const opus_int frame_length /* I Frame length */
-)
-{
- opus_int32 B_Q28[ TRANSITION_NB ], A_Q28[ TRANSITION_NA ], fac_Q16 = 0;
- opus_int ind = 0;
-
- silk_assert( psLP->transition_frame_no >= 0 && psLP->transition_frame_no <= TRANSITION_FRAMES );
-
- /* Run filter if needed */
- if( psLP->mode != 0 ) {
- /* Calculate index and interpolation factor for interpolation */
-#if( TRANSITION_INT_STEPS == 64 )
- fac_Q16 = silk_LSHIFT( TRANSITION_FRAMES - psLP->transition_frame_no, 16 - 6 );
-#else
- fac_Q16 = silk_DIV32_16( silk_LSHIFT( TRANSITION_FRAMES - psLP->transition_frame_no, 16 ), TRANSITION_FRAMES );
-#endif
- ind = silk_RSHIFT( fac_Q16, 16 );
- fac_Q16 -= silk_LSHIFT( ind, 16 );
-
- silk_assert( ind >= 0 );
- silk_assert( ind < TRANSITION_INT_NUM );
-
- /* Interpolate filter coefficients */
- silk_LP_interpolate_filter_taps( B_Q28, A_Q28, ind, fac_Q16 );
-
- /* Update transition frame number for next frame */
- psLP->transition_frame_no = silk_LIMIT( psLP->transition_frame_no + psLP->mode, 0, TRANSITION_FRAMES );
-
- /* ARMA low-pass filtering */
- silk_assert( TRANSITION_NB == 3 && TRANSITION_NA == 2 );
- silk_biquad_alt( frame, B_Q28, A_Q28, psLP->In_LP_State, frame, frame_length, 1);
- }
-}
diff --git a/thirdparty/opus/silk/MacroCount.h b/thirdparty/opus/silk/MacroCount.h
deleted file mode 100644
index 834817d058..0000000000
--- a/thirdparty/opus/silk/MacroCount.h
+++ /dev/null
@@ -1,718 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SIGPROCFIX_API_MACROCOUNT_H
-#define SIGPROCFIX_API_MACROCOUNT_H
-#include <stdio.h>
-
-#ifdef silk_MACRO_COUNT
-#define varDefine opus_int64 ops_count = 0;
-
-extern opus_int64 ops_count;
-
-static OPUS_INLINE opus_int64 silk_SaveCount(){
- return(ops_count);
-}
-
-static OPUS_INLINE opus_int64 silk_SaveResetCount(){
- opus_int64 ret;
-
- ret = ops_count;
- ops_count = 0;
- return(ret);
-}
-
-static OPUS_INLINE silk_PrintCount(){
- printf("ops_count = %d \n ", (opus_int32)ops_count);
-}
-
-#undef silk_MUL
-static OPUS_INLINE opus_int32 silk_MUL(opus_int32 a32, opus_int32 b32){
- opus_int32 ret;
- ops_count += 4;
- ret = a32 * b32;
- return ret;
-}
-
-#undef silk_MUL_uint
-static OPUS_INLINE opus_uint32 silk_MUL_uint(opus_uint32 a32, opus_uint32 b32){
- opus_uint32 ret;
- ops_count += 4;
- ret = a32 * b32;
- return ret;
-}
-#undef silk_MLA
-static OPUS_INLINE opus_int32 silk_MLA(opus_int32 a32, opus_int32 b32, opus_int32 c32){
- opus_int32 ret;
- ops_count += 4;
- ret = a32 + b32 * c32;
- return ret;
-}
-
-#undef silk_MLA_uint
-static OPUS_INLINE opus_int32 silk_MLA_uint(opus_uint32 a32, opus_uint32 b32, opus_uint32 c32){
- opus_uint32 ret;
- ops_count += 4;
- ret = a32 + b32 * c32;
- return ret;
-}
-
-#undef silk_SMULWB
-static OPUS_INLINE opus_int32 silk_SMULWB(opus_int32 a32, opus_int32 b32){
- opus_int32 ret;
- ops_count += 5;
- ret = (a32 >> 16) * (opus_int32)((opus_int16)b32) + (((a32 & 0x0000FFFF) * (opus_int32)((opus_int16)b32)) >> 16);
- return ret;
-}
-#undef silk_SMLAWB
-static OPUS_INLINE opus_int32 silk_SMLAWB(opus_int32 a32, opus_int32 b32, opus_int32 c32){
- opus_int32 ret;
- ops_count += 5;
- ret = ((a32) + ((((b32) >> 16) * (opus_int32)((opus_int16)(c32))) + ((((b32) & 0x0000FFFF) * (opus_int32)((opus_int16)(c32))) >> 16)));
- return ret;
-}
-
-#undef silk_SMULWT
-static OPUS_INLINE opus_int32 silk_SMULWT(opus_int32 a32, opus_int32 b32){
- opus_int32 ret;
- ops_count += 4;
- ret = (a32 >> 16) * (b32 >> 16) + (((a32 & 0x0000FFFF) * (b32 >> 16)) >> 16);
- return ret;
-}
-#undef silk_SMLAWT
-static OPUS_INLINE opus_int32 silk_SMLAWT(opus_int32 a32, opus_int32 b32, opus_int32 c32){
- opus_int32 ret;
- ops_count += 4;
- ret = a32 + ((b32 >> 16) * (c32 >> 16)) + (((b32 & 0x0000FFFF) * ((c32 >> 16)) >> 16));
- return ret;
-}
-
-#undef silk_SMULBB
-static OPUS_INLINE opus_int32 silk_SMULBB(opus_int32 a32, opus_int32 b32){
- opus_int32 ret;
- ops_count += 1;
- ret = (opus_int32)((opus_int16)a32) * (opus_int32)((opus_int16)b32);
- return ret;
-}
-#undef silk_SMLABB
-static OPUS_INLINE opus_int32 silk_SMLABB(opus_int32 a32, opus_int32 b32, opus_int32 c32){
- opus_int32 ret;
- ops_count += 1;
- ret = a32 + (opus_int32)((opus_int16)b32) * (opus_int32)((opus_int16)c32);
- return ret;
-}
-
-#undef silk_SMULBT
-static OPUS_INLINE opus_int32 silk_SMULBT(opus_int32 a32, opus_int32 b32 ){
- opus_int32 ret;
- ops_count += 4;
- ret = ((opus_int32)((opus_int16)a32)) * (b32 >> 16);
- return ret;
-}
-
-#undef silk_SMLABT
-static OPUS_INLINE opus_int32 silk_SMLABT(opus_int32 a32, opus_int32 b32, opus_int32 c32){
- opus_int32 ret;
- ops_count += 1;
- ret = a32 + ((opus_int32)((opus_int16)b32)) * (c32 >> 16);
- return ret;
-}
-
-#undef silk_SMULTT
-static OPUS_INLINE opus_int32 silk_SMULTT(opus_int32 a32, opus_int32 b32){
- opus_int32 ret;
- ops_count += 1;
- ret = (a32 >> 16) * (b32 >> 16);
- return ret;
-}
-
-#undef silk_SMLATT
-static OPUS_INLINE opus_int32 silk_SMLATT(opus_int32 a32, opus_int32 b32, opus_int32 c32){
- opus_int32 ret;
- ops_count += 1;
- ret = a32 + (b32 >> 16) * (c32 >> 16);
- return ret;
-}
-
-
-/* multiply-accumulate macros that allow overflow in the addition (ie, no asserts in debug mode)*/
-#undef silk_MLA_ovflw
-#define silk_MLA_ovflw silk_MLA
-
-#undef silk_SMLABB_ovflw
-#define silk_SMLABB_ovflw silk_SMLABB
-
-#undef silk_SMLABT_ovflw
-#define silk_SMLABT_ovflw silk_SMLABT
-
-#undef silk_SMLATT_ovflw
-#define silk_SMLATT_ovflw silk_SMLATT
-
-#undef silk_SMLAWB_ovflw
-#define silk_SMLAWB_ovflw silk_SMLAWB
-
-#undef silk_SMLAWT_ovflw
-#define silk_SMLAWT_ovflw silk_SMLAWT
-
-#undef silk_SMULL
-static OPUS_INLINE opus_int64 silk_SMULL(opus_int32 a32, opus_int32 b32){
- opus_int64 ret;
- ops_count += 8;
- ret = ((opus_int64)(a32) * /*(opus_int64)*/(b32));
- return ret;
-}
-
-#undef silk_SMLAL
-static OPUS_INLINE opus_int64 silk_SMLAL(opus_int64 a64, opus_int32 b32, opus_int32 c32){
- opus_int64 ret;
- ops_count += 8;
- ret = a64 + ((opus_int64)(b32) * /*(opus_int64)*/(c32));
- return ret;
-}
-#undef silk_SMLALBB
-static OPUS_INLINE opus_int64 silk_SMLALBB(opus_int64 a64, opus_int16 b16, opus_int16 c16){
- opus_int64 ret;
- ops_count += 4;
- ret = a64 + ((opus_int64)(b16) * /*(opus_int64)*/(c16));
- return ret;
-}
-
-#undef SigProcFIX_CLZ16
-static OPUS_INLINE opus_int32 SigProcFIX_CLZ16(opus_int16 in16)
-{
- opus_int32 out32 = 0;
- ops_count += 10;
- if( in16 == 0 ) {
- return 16;
- }
- /* test nibbles */
- if( in16 & 0xFF00 ) {
- if( in16 & 0xF000 ) {
- in16 >>= 12;
- } else {
- out32 += 4;
- in16 >>= 8;
- }
- } else {
- if( in16 & 0xFFF0 ) {
- out32 += 8;
- in16 >>= 4;
- } else {
- out32 += 12;
- }
- }
- /* test bits and return */
- if( in16 & 0xC ) {
- if( in16 & 0x8 )
- return out32 + 0;
- else
- return out32 + 1;
- } else {
- if( in16 & 0xE )
- return out32 + 2;
- else
- return out32 + 3;
- }
-}
-
-#undef SigProcFIX_CLZ32
-static OPUS_INLINE opus_int32 SigProcFIX_CLZ32(opus_int32 in32)
-{
- /* test highest 16 bits and convert to opus_int16 */
- ops_count += 2;
- if( in32 & 0xFFFF0000 ) {
- return SigProcFIX_CLZ16((opus_int16)(in32 >> 16));
- } else {
- return SigProcFIX_CLZ16((opus_int16)in32) + 16;
- }
-}
-
-#undef silk_DIV32
-static OPUS_INLINE opus_int32 silk_DIV32(opus_int32 a32, opus_int32 b32){
- ops_count += 64;
- return a32 / b32;
-}
-
-#undef silk_DIV32_16
-static OPUS_INLINE opus_int32 silk_DIV32_16(opus_int32 a32, opus_int32 b32){
- ops_count += 32;
- return a32 / b32;
-}
-
-#undef silk_SAT8
-static OPUS_INLINE opus_int8 silk_SAT8(opus_int64 a){
- opus_int8 tmp;
- ops_count += 1;
- tmp = (opus_int8)((a) > silk_int8_MAX ? silk_int8_MAX : \
- ((a) < silk_int8_MIN ? silk_int8_MIN : (a)));
- return(tmp);
-}
-
-#undef silk_SAT16
-static OPUS_INLINE opus_int16 silk_SAT16(opus_int64 a){
- opus_int16 tmp;
- ops_count += 1;
- tmp = (opus_int16)((a) > silk_int16_MAX ? silk_int16_MAX : \
- ((a) < silk_int16_MIN ? silk_int16_MIN : (a)));
- return(tmp);
-}
-#undef silk_SAT32
-static OPUS_INLINE opus_int32 silk_SAT32(opus_int64 a){
- opus_int32 tmp;
- ops_count += 1;
- tmp = (opus_int32)((a) > silk_int32_MAX ? silk_int32_MAX : \
- ((a) < silk_int32_MIN ? silk_int32_MIN : (a)));
- return(tmp);
-}
-#undef silk_POS_SAT32
-static OPUS_INLINE opus_int32 silk_POS_SAT32(opus_int64 a){
- opus_int32 tmp;
- ops_count += 1;
- tmp = (opus_int32)((a) > silk_int32_MAX ? silk_int32_MAX : (a));
- return(tmp);
-}
-
-#undef silk_ADD_POS_SAT8
-static OPUS_INLINE opus_int8 silk_ADD_POS_SAT8(opus_int64 a, opus_int64 b){
- opus_int8 tmp;
- ops_count += 1;
- tmp = (opus_int8)((((a)+(b)) & 0x80) ? silk_int8_MAX : ((a)+(b)));
- return(tmp);
-}
-#undef silk_ADD_POS_SAT16
-static OPUS_INLINE opus_int16 silk_ADD_POS_SAT16(opus_int64 a, opus_int64 b){
- opus_int16 tmp;
- ops_count += 1;
- tmp = (opus_int16)((((a)+(b)) & 0x8000) ? silk_int16_MAX : ((a)+(b)));
- return(tmp);
-}
-
-#undef silk_ADD_POS_SAT32
-static OPUS_INLINE opus_int32 silk_ADD_POS_SAT32(opus_int64 a, opus_int64 b){
- opus_int32 tmp;
- ops_count += 1;
- tmp = (opus_int32)((((a)+(b)) & 0x80000000) ? silk_int32_MAX : ((a)+(b)));
- return(tmp);
-}
-
-#undef silk_ADD_POS_SAT64
-static OPUS_INLINE opus_int64 silk_ADD_POS_SAT64(opus_int64 a, opus_int64 b){
- opus_int64 tmp;
- ops_count += 1;
- tmp = ((((a)+(b)) & 0x8000000000000000LL) ? silk_int64_MAX : ((a)+(b)));
- return(tmp);
-}
-
-#undef silk_LSHIFT8
-static OPUS_INLINE opus_int8 silk_LSHIFT8(opus_int8 a, opus_int32 shift){
- opus_int8 ret;
- ops_count += 1;
- ret = a << shift;
- return ret;
-}
-#undef silk_LSHIFT16
-static OPUS_INLINE opus_int16 silk_LSHIFT16(opus_int16 a, opus_int32 shift){
- opus_int16 ret;
- ops_count += 1;
- ret = a << shift;
- return ret;
-}
-#undef silk_LSHIFT32
-static OPUS_INLINE opus_int32 silk_LSHIFT32(opus_int32 a, opus_int32 shift){
- opus_int32 ret;
- ops_count += 1;
- ret = a << shift;
- return ret;
-}
-#undef silk_LSHIFT64
-static OPUS_INLINE opus_int64 silk_LSHIFT64(opus_int64 a, opus_int shift){
- ops_count += 1;
- return a << shift;
-}
-
-#undef silk_LSHIFT_ovflw
-static OPUS_INLINE opus_int32 silk_LSHIFT_ovflw(opus_int32 a, opus_int32 shift){
- ops_count += 1;
- return a << shift;
-}
-
-#undef silk_LSHIFT_uint
-static OPUS_INLINE opus_uint32 silk_LSHIFT_uint(opus_uint32 a, opus_int32 shift){
- opus_uint32 ret;
- ops_count += 1;
- ret = a << shift;
- return ret;
-}
-
-#undef silk_RSHIFT8
-static OPUS_INLINE opus_int8 silk_RSHIFT8(opus_int8 a, opus_int32 shift){
- ops_count += 1;
- return a >> shift;
-}
-#undef silk_RSHIFT16
-static OPUS_INLINE opus_int16 silk_RSHIFT16(opus_int16 a, opus_int32 shift){
- ops_count += 1;
- return a >> shift;
-}
-#undef silk_RSHIFT32
-static OPUS_INLINE opus_int32 silk_RSHIFT32(opus_int32 a, opus_int32 shift){
- ops_count += 1;
- return a >> shift;
-}
-#undef silk_RSHIFT64
-static OPUS_INLINE opus_int64 silk_RSHIFT64(opus_int64 a, opus_int64 shift){
- ops_count += 1;
- return a >> shift;
-}
-
-#undef silk_RSHIFT_uint
-static OPUS_INLINE opus_uint32 silk_RSHIFT_uint(opus_uint32 a, opus_int32 shift){
- ops_count += 1;
- return a >> shift;
-}
-
-#undef silk_ADD_LSHIFT
-static OPUS_INLINE opus_int32 silk_ADD_LSHIFT(opus_int32 a, opus_int32 b, opus_int32 shift){
- opus_int32 ret;
- ops_count += 1;
- ret = a + (b << shift);
- return ret; /* shift >= 0*/
-}
-#undef silk_ADD_LSHIFT32
-static OPUS_INLINE opus_int32 silk_ADD_LSHIFT32(opus_int32 a, opus_int32 b, opus_int32 shift){
- opus_int32 ret;
- ops_count += 1;
- ret = a + (b << shift);
- return ret; /* shift >= 0*/
-}
-#undef silk_ADD_LSHIFT_uint
-static OPUS_INLINE opus_uint32 silk_ADD_LSHIFT_uint(opus_uint32 a, opus_uint32 b, opus_int32 shift){
- opus_uint32 ret;
- ops_count += 1;
- ret = a + (b << shift);
- return ret; /* shift >= 0*/
-}
-#undef silk_ADD_RSHIFT
-static OPUS_INLINE opus_int32 silk_ADD_RSHIFT(opus_int32 a, opus_int32 b, opus_int32 shift){
- opus_int32 ret;
- ops_count += 1;
- ret = a + (b >> shift);
- return ret; /* shift > 0*/
-}
-#undef silk_ADD_RSHIFT32
-static OPUS_INLINE opus_int32 silk_ADD_RSHIFT32(opus_int32 a, opus_int32 b, opus_int32 shift){
- opus_int32 ret;
- ops_count += 1;
- ret = a + (b >> shift);
- return ret; /* shift > 0*/
-}
-#undef silk_ADD_RSHIFT_uint
-static OPUS_INLINE opus_uint32 silk_ADD_RSHIFT_uint(opus_uint32 a, opus_uint32 b, opus_int32 shift){
- opus_uint32 ret;
- ops_count += 1;
- ret = a + (b >> shift);
- return ret; /* shift > 0*/
-}
-#undef silk_SUB_LSHIFT32
-static OPUS_INLINE opus_int32 silk_SUB_LSHIFT32(opus_int32 a, opus_int32 b, opus_int32 shift){
- opus_int32 ret;
- ops_count += 1;
- ret = a - (b << shift);
- return ret; /* shift >= 0*/
-}
-#undef silk_SUB_RSHIFT32
-static OPUS_INLINE opus_int32 silk_SUB_RSHIFT32(opus_int32 a, opus_int32 b, opus_int32 shift){
- opus_int32 ret;
- ops_count += 1;
- ret = a - (b >> shift);
- return ret; /* shift > 0*/
-}
-
-#undef silk_RSHIFT_ROUND
-static OPUS_INLINE opus_int32 silk_RSHIFT_ROUND(opus_int32 a, opus_int32 shift){
- opus_int32 ret;
- ops_count += 3;
- ret = shift == 1 ? (a >> 1) + (a & 1) : ((a >> (shift - 1)) + 1) >> 1;
- return ret;
-}
-
-#undef silk_RSHIFT_ROUND64
-static OPUS_INLINE opus_int64 silk_RSHIFT_ROUND64(opus_int64 a, opus_int32 shift){
- opus_int64 ret;
- ops_count += 6;
- ret = shift == 1 ? (a >> 1) + (a & 1) : ((a >> (shift - 1)) + 1) >> 1;
- return ret;
-}
-
-#undef silk_abs_int64
-static OPUS_INLINE opus_int64 silk_abs_int64(opus_int64 a){
- ops_count += 1;
- return (((a) > 0) ? (a) : -(a)); /* Be careful, silk_abs returns wrong when input equals to silk_intXX_MIN*/
-}
-
-#undef silk_abs_int32
-static OPUS_INLINE opus_int32 silk_abs_int32(opus_int32 a){
- ops_count += 1;
- return silk_abs(a);
-}
-
-
-#undef silk_min
-static silk_min(a, b){
- ops_count += 1;
- return (((a) < (b)) ? (a) : (b));
-}
-#undef silk_max
-static silk_max(a, b){
- ops_count += 1;
- return (((a) > (b)) ? (a) : (b));
-}
-#undef silk_sign
-static silk_sign(a){
- ops_count += 1;
- return ((a) > 0 ? 1 : ( (a) < 0 ? -1 : 0 ));
-}
-
-#undef silk_ADD16
-static OPUS_INLINE opus_int16 silk_ADD16(opus_int16 a, opus_int16 b){
- opus_int16 ret;
- ops_count += 1;
- ret = a + b;
- return ret;
-}
-
-#undef silk_ADD32
-static OPUS_INLINE opus_int32 silk_ADD32(opus_int32 a, opus_int32 b){
- opus_int32 ret;
- ops_count += 1;
- ret = a + b;
- return ret;
-}
-
-#undef silk_ADD64
-static OPUS_INLINE opus_int64 silk_ADD64(opus_int64 a, opus_int64 b){
- opus_int64 ret;
- ops_count += 2;
- ret = a + b;
- return ret;
-}
-
-#undef silk_SUB16
-static OPUS_INLINE opus_int16 silk_SUB16(opus_int16 a, opus_int16 b){
- opus_int16 ret;
- ops_count += 1;
- ret = a - b;
- return ret;
-}
-
-#undef silk_SUB32
-static OPUS_INLINE opus_int32 silk_SUB32(opus_int32 a, opus_int32 b){
- opus_int32 ret;
- ops_count += 1;
- ret = a - b;
- return ret;
-}
-
-#undef silk_SUB64
-static OPUS_INLINE opus_int64 silk_SUB64(opus_int64 a, opus_int64 b){
- opus_int64 ret;
- ops_count += 2;
- ret = a - b;
- return ret;
-}
-
-#undef silk_ADD_SAT16
-static OPUS_INLINE opus_int16 silk_ADD_SAT16( opus_int16 a16, opus_int16 b16 ) {
- opus_int16 res;
- /* Nb will be counted in AKP_add32 and silk_SAT16*/
- res = (opus_int16)silk_SAT16( silk_ADD32( (opus_int32)(a16), (b16) ) );
- return res;
-}
-
-#undef silk_ADD_SAT32
-static OPUS_INLINE opus_int32 silk_ADD_SAT32(opus_int32 a32, opus_int32 b32){
- opus_int32 res;
- ops_count += 1;
- res = ((((a32) + (b32)) & 0x80000000) == 0 ? \
- ((((a32) & (b32)) & 0x80000000) != 0 ? silk_int32_MIN : (a32)+(b32)) : \
- ((((a32) | (b32)) & 0x80000000) == 0 ? silk_int32_MAX : (a32)+(b32)) );
- return res;
-}
-
-#undef silk_ADD_SAT64
-static OPUS_INLINE opus_int64 silk_ADD_SAT64( opus_int64 a64, opus_int64 b64 ) {
- opus_int64 res;
- ops_count += 1;
- res = ((((a64) + (b64)) & 0x8000000000000000LL) == 0 ? \
- ((((a64) & (b64)) & 0x8000000000000000LL) != 0 ? silk_int64_MIN : (a64)+(b64)) : \
- ((((a64) | (b64)) & 0x8000000000000000LL) == 0 ? silk_int64_MAX : (a64)+(b64)) );
- return res;
-}
-
-#undef silk_SUB_SAT16
-static OPUS_INLINE opus_int16 silk_SUB_SAT16( opus_int16 a16, opus_int16 b16 ) {
- opus_int16 res;
- silk_assert(0);
- /* Nb will be counted in sub-macros*/
- res = (opus_int16)silk_SAT16( silk_SUB32( (opus_int32)(a16), (b16) ) );
- return res;
-}
-
-#undef silk_SUB_SAT32
-static OPUS_INLINE opus_int32 silk_SUB_SAT32( opus_int32 a32, opus_int32 b32 ) {
- opus_int32 res;
- ops_count += 1;
- res = ((((a32)-(b32)) & 0x80000000) == 0 ? \
- (( (a32) & ((b32)^0x80000000) & 0x80000000) ? silk_int32_MIN : (a32)-(b32)) : \
- ((((a32)^0x80000000) & (b32) & 0x80000000) ? silk_int32_MAX : (a32)-(b32)) );
- return res;
-}
-
-#undef silk_SUB_SAT64
-static OPUS_INLINE opus_int64 silk_SUB_SAT64( opus_int64 a64, opus_int64 b64 ) {
- opus_int64 res;
- ops_count += 1;
- res = ((((a64)-(b64)) & 0x8000000000000000LL) == 0 ? \
- (( (a64) & ((b64)^0x8000000000000000LL) & 0x8000000000000000LL) ? silk_int64_MIN : (a64)-(b64)) : \
- ((((a64)^0x8000000000000000LL) & (b64) & 0x8000000000000000LL) ? silk_int64_MAX : (a64)-(b64)) );
-
- return res;
-}
-
-#undef silk_SMULWW
-static OPUS_INLINE opus_int32 silk_SMULWW(opus_int32 a32, opus_int32 b32){
- opus_int32 ret;
- /* Nb will be counted in sub-macros*/
- ret = silk_MLA(silk_SMULWB((a32), (b32)), (a32), silk_RSHIFT_ROUND((b32), 16));
- return ret;
-}
-
-#undef silk_SMLAWW
-static OPUS_INLINE opus_int32 silk_SMLAWW(opus_int32 a32, opus_int32 b32, opus_int32 c32){
- opus_int32 ret;
- /* Nb will be counted in sub-macros*/
- ret = silk_MLA(silk_SMLAWB((a32), (b32), (c32)), (b32), silk_RSHIFT_ROUND((c32), 16));
- return ret;
-}
-
-#undef silk_min_int
-static OPUS_INLINE opus_int silk_min_int(opus_int a, opus_int b)
-{
- ops_count += 1;
- return (((a) < (b)) ? (a) : (b));
-}
-
-#undef silk_min_16
-static OPUS_INLINE opus_int16 silk_min_16(opus_int16 a, opus_int16 b)
-{
- ops_count += 1;
- return (((a) < (b)) ? (a) : (b));
-}
-#undef silk_min_32
-static OPUS_INLINE opus_int32 silk_min_32(opus_int32 a, opus_int32 b)
-{
- ops_count += 1;
- return (((a) < (b)) ? (a) : (b));
-}
-#undef silk_min_64
-static OPUS_INLINE opus_int64 silk_min_64(opus_int64 a, opus_int64 b)
-{
- ops_count += 1;
- return (((a) < (b)) ? (a) : (b));
-}
-
-/* silk_min() versions with typecast in the function call */
-#undef silk_max_int
-static OPUS_INLINE opus_int silk_max_int(opus_int a, opus_int b)
-{
- ops_count += 1;
- return (((a) > (b)) ? (a) : (b));
-}
-#undef silk_max_16
-static OPUS_INLINE opus_int16 silk_max_16(opus_int16 a, opus_int16 b)
-{
- ops_count += 1;
- return (((a) > (b)) ? (a) : (b));
-}
-#undef silk_max_32
-static OPUS_INLINE opus_int32 silk_max_32(opus_int32 a, opus_int32 b)
-{
- ops_count += 1;
- return (((a) > (b)) ? (a) : (b));
-}
-
-#undef silk_max_64
-static OPUS_INLINE opus_int64 silk_max_64(opus_int64 a, opus_int64 b)
-{
- ops_count += 1;
- return (((a) > (b)) ? (a) : (b));
-}
-
-
-#undef silk_LIMIT_int
-static OPUS_INLINE opus_int silk_LIMIT_int(opus_int a, opus_int limit1, opus_int limit2)
-{
- opus_int ret;
- ops_count += 6;
-
- ret = ((limit1) > (limit2) ? ((a) > (limit1) ? (limit1) : ((a) < (limit2) ? (limit2) : (a))) \
- : ((a) > (limit2) ? (limit2) : ((a) < (limit1) ? (limit1) : (a))));
-
- return(ret);
-}
-
-#undef silk_LIMIT_16
-static OPUS_INLINE opus_int16 silk_LIMIT_16(opus_int16 a, opus_int16 limit1, opus_int16 limit2)
-{
- opus_int16 ret;
- ops_count += 6;
-
- ret = ((limit1) > (limit2) ? ((a) > (limit1) ? (limit1) : ((a) < (limit2) ? (limit2) : (a))) \
- : ((a) > (limit2) ? (limit2) : ((a) < (limit1) ? (limit1) : (a))));
-
-return(ret);
-}
-
-
-#undef silk_LIMIT_32
-static OPUS_INLINE opus_int silk_LIMIT_32(opus_int32 a, opus_int32 limit1, opus_int32 limit2)
-{
- opus_int32 ret;
- ops_count += 6;
-
- ret = ((limit1) > (limit2) ? ((a) > (limit1) ? (limit1) : ((a) < (limit2) ? (limit2) : (a))) \
- : ((a) > (limit2) ? (limit2) : ((a) < (limit1) ? (limit1) : (a))));
- return(ret);
-}
-
-#else
-#define varDefine
-#define silk_SaveCount()
-
-#endif
-#endif
-
diff --git a/thirdparty/opus/silk/MacroDebug.h b/thirdparty/opus/silk/MacroDebug.h
deleted file mode 100644
index 35aedc5c5f..0000000000
--- a/thirdparty/opus/silk/MacroDebug.h
+++ /dev/null
@@ -1,952 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Copyright (C) 2012 Xiph.Org Foundation
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef MACRO_DEBUG_H
-#define MACRO_DEBUG_H
-
-/* Redefine macro functions with extensive assertion in DEBUG mode.
- As functions can't be undefined, this file can't work with SigProcFIX_MacroCount.h */
-
-#if ( defined (FIXED_DEBUG) || ( 0 && defined (_DEBUG) ) ) && !defined (silk_MACRO_COUNT)
-
-#undef silk_ADD16
-#define silk_ADD16(a,b) silk_ADD16_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int16 silk_ADD16_(opus_int16 a, opus_int16 b, char *file, int line){
- opus_int16 ret;
-
- ret = a + b;
- if ( ret != silk_ADD_SAT16( a, b ) )
- {
- fprintf (stderr, "silk_ADD16(%d, %d) in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_ADD32
-#define silk_ADD32(a,b) silk_ADD32_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_ADD32_(opus_int32 a, opus_int32 b, char *file, int line){
- opus_int32 ret;
-
- ret = a + b;
- if ( ret != silk_ADD_SAT32( a, b ) )
- {
- fprintf (stderr, "silk_ADD32(%d, %d) in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_ADD64
-#define silk_ADD64(a,b) silk_ADD64_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_ADD64_(opus_int64 a, opus_int64 b, char *file, int line){
- opus_int64 ret;
-
- ret = a + b;
- if ( ret != silk_ADD_SAT64( a, b ) )
- {
- fprintf (stderr, "silk_ADD64(%lld, %lld) in %s: line %d\n", (long long)a, (long long)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SUB16
-#define silk_SUB16(a,b) silk_SUB16_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int16 silk_SUB16_(opus_int16 a, opus_int16 b, char *file, int line){
- opus_int16 ret;
-
- ret = a - b;
- if ( ret != silk_SUB_SAT16( a, b ) )
- {
- fprintf (stderr, "silk_SUB16(%d, %d) in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SUB32
-#define silk_SUB32(a,b) silk_SUB32_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SUB32_(opus_int32 a, opus_int32 b, char *file, int line){
- opus_int32 ret;
-
- ret = a - b;
- if ( ret != silk_SUB_SAT32( a, b ) )
- {
- fprintf (stderr, "silk_SUB32(%d, %d) in %s: line %d\n", a, b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SUB64
-#define silk_SUB64(a,b) silk_SUB64_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_SUB64_(opus_int64 a, opus_int64 b, char *file, int line){
- opus_int64 ret;
-
- ret = a - b;
- if ( ret != silk_SUB_SAT64( a, b ) )
- {
- fprintf (stderr, "silk_SUB64(%lld, %lld) in %s: line %d\n", (long long)a, (long long)b, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_ADD_SAT16
-#define silk_ADD_SAT16(a,b) silk_ADD_SAT16_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int16 silk_ADD_SAT16_( opus_int16 a16, opus_int16 b16, char *file, int line) {
- opus_int16 res;
- res = (opus_int16)silk_SAT16( silk_ADD32( (opus_int32)(a16), (b16) ) );
- if ( res != silk_SAT16( (opus_int32)a16 + (opus_int32)b16 ) )
- {
- fprintf (stderr, "silk_ADD_SAT16(%d, %d) in %s: line %d\n", a16, b16, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return res;
-}
-
-#undef silk_ADD_SAT32
-#define silk_ADD_SAT32(a,b) silk_ADD_SAT32_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_ADD_SAT32_(opus_int32 a32, opus_int32 b32, char *file, int line){
- opus_int32 res;
- res = ((((opus_uint32)(a32) + (opus_uint32)(b32)) & 0x80000000) == 0 ? \
- ((((a32) & (b32)) & 0x80000000) != 0 ? silk_int32_MIN : (a32)+(b32)) : \
- ((((a32) | (b32)) & 0x80000000) == 0 ? silk_int32_MAX : (a32)+(b32)) );
- if ( res != silk_SAT32( (opus_int64)a32 + (opus_int64)b32 ) )
- {
- fprintf (stderr, "silk_ADD_SAT32(%d, %d) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return res;
-}
-
-#undef silk_ADD_SAT64
-#define silk_ADD_SAT64(a,b) silk_ADD_SAT64_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_ADD_SAT64_( opus_int64 a64, opus_int64 b64, char *file, int line) {
- opus_int64 res;
- int fail = 0;
- res = ((((a64) + (b64)) & 0x8000000000000000LL) == 0 ? \
- ((((a64) & (b64)) & 0x8000000000000000LL) != 0 ? silk_int64_MIN : (a64)+(b64)) : \
- ((((a64) | (b64)) & 0x8000000000000000LL) == 0 ? silk_int64_MAX : (a64)+(b64)) );
- if( res != a64 + b64 ) {
- /* Check that we saturated to the correct extreme value */
- if ( !(( res == silk_int64_MAX && ( ( a64 >> 1 ) + ( b64 >> 1 ) > ( silk_int64_MAX >> 3 ) ) ) ||
- ( res == silk_int64_MIN && ( ( a64 >> 1 ) + ( b64 >> 1 ) < ( silk_int64_MIN >> 3 ) ) ) ) )
- {
- fail = 1;
- }
- } else {
- /* Saturation not necessary */
- fail = res != a64 + b64;
- }
- if ( fail )
- {
- fprintf (stderr, "silk_ADD_SAT64(%lld, %lld) in %s: line %d\n", (long long)a64, (long long)b64, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return res;
-}
-
-#undef silk_SUB_SAT16
-#define silk_SUB_SAT16(a,b) silk_SUB_SAT16_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int16 silk_SUB_SAT16_( opus_int16 a16, opus_int16 b16, char *file, int line ) {
- opus_int16 res;
- res = (opus_int16)silk_SAT16( silk_SUB32( (opus_int32)(a16), (b16) ) );
- if ( res != silk_SAT16( (opus_int32)a16 - (opus_int32)b16 ) )
- {
- fprintf (stderr, "silk_SUB_SAT16(%d, %d) in %s: line %d\n", a16, b16, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return res;
-}
-
-#undef silk_SUB_SAT32
-#define silk_SUB_SAT32(a,b) silk_SUB_SAT32_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SUB_SAT32_( opus_int32 a32, opus_int32 b32, char *file, int line ) {
- opus_int32 res;
- res = ((((opus_uint32)(a32)-(opus_uint32)(b32)) & 0x80000000) == 0 ? \
- (( (a32) & ((b32)^0x80000000) & 0x80000000) ? silk_int32_MIN : (a32)-(b32)) : \
- ((((a32)^0x80000000) & (b32) & 0x80000000) ? silk_int32_MAX : (a32)-(b32)) );
- if ( res != silk_SAT32( (opus_int64)a32 - (opus_int64)b32 ) )
- {
- fprintf (stderr, "silk_SUB_SAT32(%d, %d) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return res;
-}
-
-#undef silk_SUB_SAT64
-#define silk_SUB_SAT64(a,b) silk_SUB_SAT64_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_SUB_SAT64_( opus_int64 a64, opus_int64 b64, char *file, int line ) {
- opus_int64 res;
- int fail = 0;
- res = ((((a64)-(b64)) & 0x8000000000000000LL) == 0 ? \
- (( (a64) & ((b64)^0x8000000000000000LL) & 0x8000000000000000LL) ? silk_int64_MIN : (a64)-(b64)) : \
- ((((a64)^0x8000000000000000LL) & (b64) & 0x8000000000000000LL) ? silk_int64_MAX : (a64)-(b64)) );
- if( res != a64 - b64 ) {
- /* Check that we saturated to the correct extreme value */
- if( !(( res == silk_int64_MAX && ( ( a64 >> 1 ) + ( b64 >> 1 ) > ( silk_int64_MAX >> 3 ) ) ) ||
- ( res == silk_int64_MIN && ( ( a64 >> 1 ) + ( b64 >> 1 ) < ( silk_int64_MIN >> 3 ) ) ) ))
- {
- fail = 1;
- }
- } else {
- /* Saturation not necessary */
- fail = res != a64 - b64;
- }
- if ( fail )
- {
- fprintf (stderr, "silk_SUB_SAT64(%lld, %lld) in %s: line %d\n", (long long)a64, (long long)b64, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return res;
-}
-
-#undef silk_MUL
-#define silk_MUL(a,b) silk_MUL_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_MUL_(opus_int32 a32, opus_int32 b32, char *file, int line){
- opus_int32 ret;
- opus_int64 ret64;
- ret = a32 * b32;
- ret64 = (opus_int64)a32 * (opus_int64)b32;
- if ( (opus_int64)ret != ret64 )
- {
- fprintf (stderr, "silk_MUL(%d, %d) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_MUL_uint
-#define silk_MUL_uint(a,b) silk_MUL_uint_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_uint32 silk_MUL_uint_(opus_uint32 a32, opus_uint32 b32, char *file, int line){
- opus_uint32 ret;
- ret = a32 * b32;
- if ( (opus_uint64)ret != (opus_uint64)a32 * (opus_uint64)b32 )
- {
- fprintf (stderr, "silk_MUL_uint(%u, %u) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_MLA
-#define silk_MLA(a,b,c) silk_MLA_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_MLA_(opus_int32 a32, opus_int32 b32, opus_int32 c32, char *file, int line){
- opus_int32 ret;
- ret = a32 + b32 * c32;
- if ( (opus_int64)ret != (opus_int64)a32 + (opus_int64)b32 * (opus_int64)c32 )
- {
- fprintf (stderr, "silk_MLA(%d, %d, %d) in %s: line %d\n", a32, b32, c32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_MLA_uint
-#define silk_MLA_uint(a,b,c) silk_MLA_uint_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_MLA_uint_(opus_uint32 a32, opus_uint32 b32, opus_uint32 c32, char *file, int line){
- opus_uint32 ret;
- ret = a32 + b32 * c32;
- if ( (opus_int64)ret != (opus_int64)a32 + (opus_int64)b32 * (opus_int64)c32 )
- {
- fprintf (stderr, "silk_MLA_uint(%d, %d, %d) in %s: line %d\n", a32, b32, c32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SMULWB
-#define silk_SMULWB(a,b) silk_SMULWB_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMULWB_(opus_int32 a32, opus_int32 b32, char *file, int line){
- opus_int32 ret;
- ret = (a32 >> 16) * (opus_int32)((opus_int16)b32) + (((a32 & 0x0000FFFF) * (opus_int32)((opus_int16)b32)) >> 16);
- if ( (opus_int64)ret != ((opus_int64)a32 * (opus_int16)b32) >> 16 )
- {
- fprintf (stderr, "silk_SMULWB(%d, %d) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SMLAWB
-#define silk_SMLAWB(a,b,c) silk_SMLAWB_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMLAWB_(opus_int32 a32, opus_int32 b32, opus_int32 c32, char *file, int line){
- opus_int32 ret;
- ret = silk_ADD32( a32, silk_SMULWB( b32, c32 ) );
- if ( silk_ADD32( a32, silk_SMULWB( b32, c32 ) ) != silk_ADD_SAT32( a32, silk_SMULWB( b32, c32 ) ) )
- {
- fprintf (stderr, "silk_SMLAWB(%d, %d, %d) in %s: line %d\n", a32, b32, c32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SMULWT
-#define silk_SMULWT(a,b) silk_SMULWT_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMULWT_(opus_int32 a32, opus_int32 b32, char *file, int line){
- opus_int32 ret;
- ret = (a32 >> 16) * (b32 >> 16) + (((a32 & 0x0000FFFF) * (b32 >> 16)) >> 16);
- if ( (opus_int64)ret != ((opus_int64)a32 * (b32 >> 16)) >> 16 )
- {
- fprintf (stderr, "silk_SMULWT(%d, %d) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SMLAWT
-#define silk_SMLAWT(a,b,c) silk_SMLAWT_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMLAWT_(opus_int32 a32, opus_int32 b32, opus_int32 c32, char *file, int line){
- opus_int32 ret;
- ret = a32 + ((b32 >> 16) * (c32 >> 16)) + (((b32 & 0x0000FFFF) * ((c32 >> 16)) >> 16));
- if ( (opus_int64)ret != (opus_int64)a32 + (((opus_int64)b32 * (c32 >> 16)) >> 16) )
- {
- fprintf (stderr, "silk_SMLAWT(%d, %d, %d) in %s: line %d\n", a32, b32, c32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SMULL
-#define silk_SMULL(a,b) silk_SMULL_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_SMULL_(opus_int64 a64, opus_int64 b64, char *file, int line){
- opus_int64 ret64;
- int fail = 0;
- ret64 = a64 * b64;
- if( b64 != 0 ) {
- fail = a64 != (ret64 / b64);
- } else if( a64 != 0 ) {
- fail = b64 != (ret64 / a64);
- }
- if ( fail )
- {
- fprintf (stderr, "silk_SMULL(%lld, %lld) in %s: line %d\n", (long long)a64, (long long)b64, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret64;
-}
-
-/* no checking needed for silk_SMULBB */
-#undef silk_SMLABB
-#define silk_SMLABB(a,b,c) silk_SMLABB_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMLABB_(opus_int32 a32, opus_int32 b32, opus_int32 c32, char *file, int line){
- opus_int32 ret;
- ret = a32 + (opus_int32)((opus_int16)b32) * (opus_int32)((opus_int16)c32);
- if ( (opus_int64)ret != (opus_int64)a32 + (opus_int64)b32 * (opus_int16)c32 )
- {
- fprintf (stderr, "silk_SMLABB(%d, %d, %d) in %s: line %d\n", a32, b32, c32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-/* no checking needed for silk_SMULBT */
-#undef silk_SMLABT
-#define silk_SMLABT(a,b,c) silk_SMLABT_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMLABT_(opus_int32 a32, opus_int32 b32, opus_int32 c32, char *file, int line){
- opus_int32 ret;
- ret = a32 + ((opus_int32)((opus_int16)b32)) * (c32 >> 16);
- if ( (opus_int64)ret != (opus_int64)a32 + (opus_int64)b32 * (c32 >> 16) )
- {
- fprintf (stderr, "silk_SMLABT(%d, %d, %d) in %s: line %d\n", a32, b32, c32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-/* no checking needed for silk_SMULTT */
-#undef silk_SMLATT
-#define silk_SMLATT(a,b,c) silk_SMLATT_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMLATT_(opus_int32 a32, opus_int32 b32, opus_int32 c32, char *file, int line){
- opus_int32 ret;
- ret = a32 + (b32 >> 16) * (c32 >> 16);
- if ( (opus_int64)ret != (opus_int64)a32 + (b32 >> 16) * (c32 >> 16) )
- {
- fprintf (stderr, "silk_SMLATT(%d, %d, %d) in %s: line %d\n", a32, b32, c32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_SMULWW
-#define silk_SMULWW(a,b) silk_SMULWW_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMULWW_(opus_int32 a32, opus_int32 b32, char *file, int line){
- opus_int32 ret, tmp1, tmp2;
- opus_int64 ret64;
- int fail = 0;
-
- ret = silk_SMULWB( a32, b32 );
- tmp1 = silk_RSHIFT_ROUND( b32, 16 );
- tmp2 = silk_MUL( a32, tmp1 );
-
- fail |= (opus_int64)tmp2 != (opus_int64) a32 * (opus_int64) tmp1;
-
- tmp1 = ret;
- ret = silk_ADD32( tmp1, tmp2 );
- fail |= silk_ADD32( tmp1, tmp2 ) != silk_ADD_SAT32( tmp1, tmp2 );
-
- ret64 = silk_RSHIFT64( silk_SMULL( a32, b32 ), 16 );
- fail |= (opus_int64)ret != ret64;
-
- if ( fail )
- {
- fprintf (stderr, "silk_SMULWT(%d, %d) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
-
- return ret;
-}
-
-#undef silk_SMLAWW
-#define silk_SMLAWW(a,b,c) silk_SMLAWW_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SMLAWW_(opus_int32 a32, opus_int32 b32, opus_int32 c32, char *file, int line){
- opus_int32 ret, tmp;
-
- tmp = silk_SMULWW( b32, c32 );
- ret = silk_ADD32( a32, tmp );
- if ( ret != silk_ADD_SAT32( a32, tmp ) )
- {
- fprintf (stderr, "silk_SMLAWW(%d, %d, %d) in %s: line %d\n", a32, b32, c32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-/* Multiply-accumulate macros that allow overflow in the addition (ie, no asserts in debug mode) */
-#undef silk_MLA_ovflw
-#define silk_MLA_ovflw(a32, b32, c32) ((a32) + ((b32) * (c32)))
-#undef silk_SMLABB_ovflw
-#define silk_SMLABB_ovflw(a32, b32, c32) ((a32) + ((opus_int32)((opus_int16)(b32))) * (opus_int32)((opus_int16)(c32)))
-
-/* no checking needed for silk_SMULL
- no checking needed for silk_SMLAL
- no checking needed for silk_SMLALBB
- no checking needed for SigProcFIX_CLZ16
- no checking needed for SigProcFIX_CLZ32*/
-
-#undef silk_DIV32
-#define silk_DIV32(a,b) silk_DIV32_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_DIV32_(opus_int32 a32, opus_int32 b32, char *file, int line){
- if ( b32 == 0 )
- {
- fprintf (stderr, "silk_DIV32(%d, %d) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return a32 / b32;
-}
-
-#undef silk_DIV32_16
-#define silk_DIV32_16(a,b) silk_DIV32_16_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_DIV32_16_(opus_int32 a32, opus_int32 b32, char *file, int line){
- int fail = 0;
- fail |= b32 == 0;
- fail |= b32 > silk_int16_MAX;
- fail |= b32 < silk_int16_MIN;
- if ( fail )
- {
- fprintf (stderr, "silk_DIV32_16(%d, %d) in %s: line %d\n", a32, b32, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return a32 / b32;
-}
-
-/* no checking needed for silk_SAT8
- no checking needed for silk_SAT16
- no checking needed for silk_SAT32
- no checking needed for silk_POS_SAT32
- no checking needed for silk_ADD_POS_SAT8
- no checking needed for silk_ADD_POS_SAT16
- no checking needed for silk_ADD_POS_SAT32
- no checking needed for silk_ADD_POS_SAT64 */
-
-#undef silk_LSHIFT8
-#define silk_LSHIFT8(a,b) silk_LSHIFT8_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int8 silk_LSHIFT8_(opus_int8 a, opus_int32 shift, char *file, int line){
- opus_int8 ret;
- int fail = 0;
- ret = a << shift;
- fail |= shift < 0;
- fail |= shift >= 8;
- fail |= (opus_int64)ret != ((opus_int64)a) << shift;
- if ( fail )
- {
- fprintf (stderr, "silk_LSHIFT8(%d, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_LSHIFT16
-#define silk_LSHIFT16(a,b) silk_LSHIFT16_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int16 silk_LSHIFT16_(opus_int16 a, opus_int32 shift, char *file, int line){
- opus_int16 ret;
- int fail = 0;
- ret = a << shift;
- fail |= shift < 0;
- fail |= shift >= 16;
- fail |= (opus_int64)ret != ((opus_int64)a) << shift;
- if ( fail )
- {
- fprintf (stderr, "silk_LSHIFT16(%d, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_LSHIFT32
-#define silk_LSHIFT32(a,b) silk_LSHIFT32_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_LSHIFT32_(opus_int32 a, opus_int32 shift, char *file, int line){
- opus_int32 ret;
- int fail = 0;
- ret = a << shift;
- fail |= shift < 0;
- fail |= shift >= 32;
- fail |= (opus_int64)ret != ((opus_int64)a) << shift;
- if ( fail )
- {
- fprintf (stderr, "silk_LSHIFT32(%d, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_LSHIFT64
-#define silk_LSHIFT64(a,b) silk_LSHIFT64_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_LSHIFT64_(opus_int64 a, opus_int shift, char *file, int line){
- opus_int64 ret;
- int fail = 0;
- ret = a << shift;
- fail |= shift < 0;
- fail |= shift >= 64;
- fail |= (ret>>shift) != ((opus_int64)a);
- if ( fail )
- {
- fprintf (stderr, "silk_LSHIFT64(%lld, %d) in %s: line %d\n", (long long)a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_LSHIFT_ovflw
-#define silk_LSHIFT_ovflw(a,b) silk_LSHIFT_ovflw_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_LSHIFT_ovflw_(opus_int32 a, opus_int32 shift, char *file, int line){
- if ( (shift < 0) || (shift >= 32) ) /* no check for overflow */
- {
- fprintf (stderr, "silk_LSHIFT_ovflw(%d, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return a << shift;
-}
-
-#undef silk_LSHIFT_uint
-#define silk_LSHIFT_uint(a,b) silk_LSHIFT_uint_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_uint32 silk_LSHIFT_uint_(opus_uint32 a, opus_int32 shift, char *file, int line){
- opus_uint32 ret;
- ret = a << shift;
- if ( (shift < 0) || ((opus_int64)ret != ((opus_int64)a) << shift))
- {
- fprintf (stderr, "silk_LSHIFT_uint(%u, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_RSHIFT8
-#define silk_RSHITF8(a,b) silk_RSHIFT8_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int8 silk_RSHIFT8_(opus_int8 a, opus_int32 shift, char *file, int line){
- if ( (shift < 0) || (shift>=8) )
- {
- fprintf (stderr, "silk_RSHITF8(%d, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return a >> shift;
-}
-
-#undef silk_RSHIFT16
-#define silk_RSHITF16(a,b) silk_RSHIFT16_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int16 silk_RSHIFT16_(opus_int16 a, opus_int32 shift, char *file, int line){
- if ( (shift < 0) || (shift>=16) )
- {
- fprintf (stderr, "silk_RSHITF16(%d, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return a >> shift;
-}
-
-#undef silk_RSHIFT32
-#define silk_RSHIFT32(a,b) silk_RSHIFT32_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_RSHIFT32_(opus_int32 a, opus_int32 shift, char *file, int line){
- if ( (shift < 0) || (shift>=32) )
- {
- fprintf (stderr, "silk_RSHITF32(%d, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return a >> shift;
-}
-
-#undef silk_RSHIFT64
-#define silk_RSHIFT64(a,b) silk_RSHIFT64_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_RSHIFT64_(opus_int64 a, opus_int64 shift, char *file, int line){
- if ( (shift < 0) || (shift>=64) )
- {
- fprintf (stderr, "silk_RSHITF64(%lld, %lld) in %s: line %d\n", (long long)a, (long long)shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return a >> shift;
-}
-
-#undef silk_RSHIFT_uint
-#define silk_RSHIFT_uint(a,b) silk_RSHIFT_uint_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_uint32 silk_RSHIFT_uint_(opus_uint32 a, opus_int32 shift, char *file, int line){
- if ( (shift < 0) || (shift>32) )
- {
- fprintf (stderr, "silk_RSHIFT_uint(%u, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return a >> shift;
-}
-
-#undef silk_ADD_LSHIFT
-#define silk_ADD_LSHIFT(a,b,c) silk_ADD_LSHIFT_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE int silk_ADD_LSHIFT_(int a, int b, int shift, char *file, int line){
- opus_int16 ret;
- ret = a + (b << shift);
- if ( (shift < 0) || (shift>15) || ((opus_int64)ret != (opus_int64)a + (((opus_int64)b) << shift)) )
- {
- fprintf (stderr, "silk_ADD_LSHIFT(%d, %d, %d) in %s: line %d\n", a, b, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret; /* shift >= 0 */
-}
-
-#undef silk_ADD_LSHIFT32
-#define silk_ADD_LSHIFT32(a,b,c) silk_ADD_LSHIFT32_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_ADD_LSHIFT32_(opus_int32 a, opus_int32 b, opus_int32 shift, char *file, int line){
- opus_int32 ret;
- ret = a + (b << shift);
- if ( (shift < 0) || (shift>31) || ((opus_int64)ret != (opus_int64)a + (((opus_int64)b) << shift)) )
- {
- fprintf (stderr, "silk_ADD_LSHIFT32(%d, %d, %d) in %s: line %d\n", a, b, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret; /* shift >= 0 */
-}
-
-#undef silk_ADD_LSHIFT_uint
-#define silk_ADD_LSHIFT_uint(a,b,c) silk_ADD_LSHIFT_uint_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_uint32 silk_ADD_LSHIFT_uint_(opus_uint32 a, opus_uint32 b, opus_int32 shift, char *file, int line){
- opus_uint32 ret;
- ret = a + (b << shift);
- if ( (shift < 0) || (shift>32) || ((opus_int64)ret != (opus_int64)a + (((opus_int64)b) << shift)) )
- {
- fprintf (stderr, "silk_ADD_LSHIFT_uint(%u, %u, %d) in %s: line %d\n", a, b, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret; /* shift >= 0 */
-}
-
-#undef silk_ADD_RSHIFT
-#define silk_ADD_RSHIFT(a,b,c) silk_ADD_RSHIFT_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE int silk_ADD_RSHIFT_(int a, int b, int shift, char *file, int line){
- opus_int16 ret;
- ret = a + (b >> shift);
- if ( (shift < 0) || (shift>15) || ((opus_int64)ret != (opus_int64)a + (((opus_int64)b) >> shift)) )
- {
- fprintf (stderr, "silk_ADD_RSHIFT(%d, %d, %d) in %s: line %d\n", a, b, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret; /* shift > 0 */
-}
-
-#undef silk_ADD_RSHIFT32
-#define silk_ADD_RSHIFT32(a,b,c) silk_ADD_RSHIFT32_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_ADD_RSHIFT32_(opus_int32 a, opus_int32 b, opus_int32 shift, char *file, int line){
- opus_int32 ret;
- ret = a + (b >> shift);
- if ( (shift < 0) || (shift>31) || ((opus_int64)ret != (opus_int64)a + (((opus_int64)b) >> shift)) )
- {
- fprintf (stderr, "silk_ADD_RSHIFT32(%d, %d, %d) in %s: line %d\n", a, b, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret; /* shift > 0 */
-}
-
-#undef silk_ADD_RSHIFT_uint
-#define silk_ADD_RSHIFT_uint(a,b,c) silk_ADD_RSHIFT_uint_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_uint32 silk_ADD_RSHIFT_uint_(opus_uint32 a, opus_uint32 b, opus_int32 shift, char *file, int line){
- opus_uint32 ret;
- ret = a + (b >> shift);
- if ( (shift < 0) || (shift>32) || ((opus_int64)ret != (opus_int64)a + (((opus_int64)b) >> shift)) )
- {
- fprintf (stderr, "silk_ADD_RSHIFT_uint(%u, %u, %d) in %s: line %d\n", a, b, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret; /* shift > 0 */
-}
-
-#undef silk_SUB_LSHIFT32
-#define silk_SUB_LSHIFT32(a,b,c) silk_SUB_LSHIFT32_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SUB_LSHIFT32_(opus_int32 a, opus_int32 b, opus_int32 shift, char *file, int line){
- opus_int32 ret;
- ret = a - (b << shift);
- if ( (shift < 0) || (shift>31) || ((opus_int64)ret != (opus_int64)a - (((opus_int64)b) << shift)) )
- {
- fprintf (stderr, "silk_SUB_LSHIFT32(%d, %d, %d) in %s: line %d\n", a, b, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret; /* shift >= 0 */
-}
-
-#undef silk_SUB_RSHIFT32
-#define silk_SUB_RSHIFT32(a,b,c) silk_SUB_RSHIFT32_((a), (b), (c), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_SUB_RSHIFT32_(opus_int32 a, opus_int32 b, opus_int32 shift, char *file, int line){
- opus_int32 ret;
- ret = a - (b >> shift);
- if ( (shift < 0) || (shift>31) || ((opus_int64)ret != (opus_int64)a - (((opus_int64)b) >> shift)) )
- {
- fprintf (stderr, "silk_SUB_RSHIFT32(%d, %d, %d) in %s: line %d\n", a, b, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret; /* shift > 0 */
-}
-
-#undef silk_RSHIFT_ROUND
-#define silk_RSHIFT_ROUND(a,b) silk_RSHIFT_ROUND_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_RSHIFT_ROUND_(opus_int32 a, opus_int32 shift, char *file, int line){
- opus_int32 ret;
- ret = shift == 1 ? (a >> 1) + (a & 1) : ((a >> (shift - 1)) + 1) >> 1;
- /* the marco definition can't handle a shift of zero */
- if ( (shift <= 0) || (shift>31) || ((opus_int64)ret != ((opus_int64)a + ((opus_int64)1 << (shift - 1))) >> shift) )
- {
- fprintf (stderr, "silk_RSHIFT_ROUND(%d, %d) in %s: line %d\n", a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return ret;
-}
-
-#undef silk_RSHIFT_ROUND64
-#define silk_RSHIFT_ROUND64(a,b) silk_RSHIFT_ROUND64_((a), (b), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_RSHIFT_ROUND64_(opus_int64 a, opus_int32 shift, char *file, int line){
- opus_int64 ret;
- /* the marco definition can't handle a shift of zero */
- if ( (shift <= 0) || (shift>=64) )
- {
- fprintf (stderr, "silk_RSHIFT_ROUND64(%lld, %d) in %s: line %d\n", (long long)a, shift, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- ret = shift == 1 ? (a >> 1) + (a & 1) : ((a >> (shift - 1)) + 1) >> 1;
- return ret;
-}
-
-/* silk_abs is used on floats also, so doesn't work... */
-/*#undef silk_abs
-static OPUS_INLINE opus_int32 silk_abs(opus_int32 a){
- silk_assert(a != 0x80000000);
- return (((a) > 0) ? (a) : -(a)); // Be careful, silk_abs returns wrong when input equals to silk_intXX_MIN
-}*/
-
-#undef silk_abs_int64
-#define silk_abs_int64(a) silk_abs_int64_((a), __FILE__, __LINE__)
-static OPUS_INLINE opus_int64 silk_abs_int64_(opus_int64 a, char *file, int line){
- if ( a == silk_int64_MIN )
- {
- fprintf (stderr, "silk_abs_int64(%lld) in %s: line %d\n", (long long)a, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return (((a) > 0) ? (a) : -(a)); /* Be careful, silk_abs returns wrong when input equals to silk_intXX_MIN */
-}
-
-#undef silk_abs_int32
-#define silk_abs_int32(a) silk_abs_int32_((a), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_abs_int32_(opus_int32 a, char *file, int line){
- if ( a == silk_int32_MIN )
- {
- fprintf (stderr, "silk_abs_int32(%d) in %s: line %d\n", a, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return silk_abs(a);
-}
-
-#undef silk_CHECK_FIT8
-#define silk_CHECK_FIT8(a) silk_CHECK_FIT8_((a), __FILE__, __LINE__)
-static OPUS_INLINE opus_int8 silk_CHECK_FIT8_( opus_int64 a, char *file, int line ){
- opus_int8 ret;
- ret = (opus_int8)a;
- if ( (opus_int64)ret != a )
- {
- fprintf (stderr, "silk_CHECK_FIT8(%lld) in %s: line %d\n", (long long)a, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return( ret );
-}
-
-#undef silk_CHECK_FIT16
-#define silk_CHECK_FIT16(a) silk_CHECK_FIT16_((a), __FILE__, __LINE__)
-static OPUS_INLINE opus_int16 silk_CHECK_FIT16_( opus_int64 a, char *file, int line ){
- opus_int16 ret;
- ret = (opus_int16)a;
- if ( (opus_int64)ret != a )
- {
- fprintf (stderr, "silk_CHECK_FIT16(%lld) in %s: line %d\n", (long long)a, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return( ret );
-}
-
-#undef silk_CHECK_FIT32
-#define silk_CHECK_FIT32(a) silk_CHECK_FIT32_((a), __FILE__, __LINE__)
-static OPUS_INLINE opus_int32 silk_CHECK_FIT32_( opus_int64 a, char *file, int line ){
- opus_int32 ret;
- ret = (opus_int32)a;
- if ( (opus_int64)ret != a )
- {
- fprintf (stderr, "silk_CHECK_FIT32(%lld) in %s: line %d\n", (long long)a, file, line);
-#ifdef FIXED_DEBUG_ASSERT
- silk_assert( 0 );
-#endif
- }
- return( ret );
-}
-
-/* no checking for silk_NSHIFT_MUL_32_32
- no checking for silk_NSHIFT_MUL_16_16
- no checking needed for silk_min
- no checking needed for silk_max
- no checking needed for silk_sign
-*/
-
-#endif
-#endif /* MACRO_DEBUG_H */
diff --git a/thirdparty/opus/silk/NLSF2A.c b/thirdparty/opus/silk/NLSF2A.c
deleted file mode 100644
index b1c559ea68..0000000000
--- a/thirdparty/opus/silk/NLSF2A.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* conversion between prediction filter coefficients and LSFs */
-/* order should be even */
-/* a piecewise linear approximation maps LSF <-> cos(LSF) */
-/* therefore the result is not accurate LSFs, but the two */
-/* functions are accurate inverses of each other */
-
-#include "SigProc_FIX.h"
-#include "tables.h"
-
-#define QA 16
-
-/* helper function for NLSF2A(..) */
-static OPUS_INLINE void silk_NLSF2A_find_poly(
- opus_int32 *out, /* O intermediate polynomial, QA [dd+1] */
- const opus_int32 *cLSF, /* I vector of interleaved 2*cos(LSFs), QA [d] */
- opus_int dd /* I polynomial order (= 1/2 * filter order) */
-)
-{
- opus_int k, n;
- opus_int32 ftmp;
-
- out[0] = silk_LSHIFT( 1, QA );
- out[1] = -cLSF[0];
- for( k = 1; k < dd; k++ ) {
- ftmp = cLSF[2*k]; /* QA*/
- out[k+1] = silk_LSHIFT( out[k-1], 1 ) - (opus_int32)silk_RSHIFT_ROUND64( silk_SMULL( ftmp, out[k] ), QA );
- for( n = k; n > 1; n-- ) {
- out[n] += out[n-2] - (opus_int32)silk_RSHIFT_ROUND64( silk_SMULL( ftmp, out[n-1] ), QA );
- }
- out[1] -= ftmp;
- }
-}
-
-/* compute whitening filter coefficients from normalized line spectral frequencies */
-void silk_NLSF2A(
- opus_int16 *a_Q12, /* O monic whitening filter coefficients in Q12, [ d ] */
- const opus_int16 *NLSF, /* I normalized line spectral frequencies in Q15, [ d ] */
- const opus_int d /* I filter order (should be even) */
-)
-{
- /* This ordering was found to maximize quality. It improves numerical accuracy of
- silk_NLSF2A_find_poly() compared to "standard" ordering. */
- static const unsigned char ordering16[16] = {
- 0, 15, 8, 7, 4, 11, 12, 3, 2, 13, 10, 5, 6, 9, 14, 1
- };
- static const unsigned char ordering10[10] = {
- 0, 9, 6, 3, 4, 5, 8, 1, 2, 7
- };
- const unsigned char *ordering;
- opus_int k, i, dd;
- opus_int32 cos_LSF_QA[ SILK_MAX_ORDER_LPC ];
- opus_int32 P[ SILK_MAX_ORDER_LPC / 2 + 1 ], Q[ SILK_MAX_ORDER_LPC / 2 + 1 ];
- opus_int32 Ptmp, Qtmp, f_int, f_frac, cos_val, delta;
- opus_int32 a32_QA1[ SILK_MAX_ORDER_LPC ];
- opus_int32 maxabs, absval, idx=0, sc_Q16;
-
- silk_assert( LSF_COS_TAB_SZ_FIX == 128 );
- silk_assert( d==10||d==16 );
-
- /* convert LSFs to 2*cos(LSF), using piecewise linear curve from table */
- ordering = d == 16 ? ordering16 : ordering10;
- for( k = 0; k < d; k++ ) {
- silk_assert(NLSF[k] >= 0 );
-
- /* f_int on a scale 0-127 (rounded down) */
- f_int = silk_RSHIFT( NLSF[k], 15 - 7 );
-
- /* f_frac, range: 0..255 */
- f_frac = NLSF[k] - silk_LSHIFT( f_int, 15 - 7 );
-
- silk_assert(f_int >= 0);
- silk_assert(f_int < LSF_COS_TAB_SZ_FIX );
-
- /* Read start and end value from table */
- cos_val = silk_LSFCosTab_FIX_Q12[ f_int ]; /* Q12 */
- delta = silk_LSFCosTab_FIX_Q12[ f_int + 1 ] - cos_val; /* Q12, with a range of 0..200 */
-
- /* Linear interpolation */
- cos_LSF_QA[ordering[k]] = silk_RSHIFT_ROUND( silk_LSHIFT( cos_val, 8 ) + silk_MUL( delta, f_frac ), 20 - QA ); /* QA */
- }
-
- dd = silk_RSHIFT( d, 1 );
-
- /* generate even and odd polynomials using convolution */
- silk_NLSF2A_find_poly( P, &cos_LSF_QA[ 0 ], dd );
- silk_NLSF2A_find_poly( Q, &cos_LSF_QA[ 1 ], dd );
-
- /* convert even and odd polynomials to opus_int32 Q12 filter coefs */
- for( k = 0; k < dd; k++ ) {
- Ptmp = P[ k+1 ] + P[ k ];
- Qtmp = Q[ k+1 ] - Q[ k ];
-
- /* the Ptmp and Qtmp values at this stage need to fit in int32 */
- a32_QA1[ k ] = -Qtmp - Ptmp; /* QA+1 */
- a32_QA1[ d-k-1 ] = Qtmp - Ptmp; /* QA+1 */
- }
-
- /* Limit the maximum absolute value of the prediction coefficients, so that they'll fit in int16 */
- for( i = 0; i < 10; i++ ) {
- /* Find maximum absolute value and its index */
- maxabs = 0;
- for( k = 0; k < d; k++ ) {
- absval = silk_abs( a32_QA1[k] );
- if( absval > maxabs ) {
- maxabs = absval;
- idx = k;
- }
- }
- maxabs = silk_RSHIFT_ROUND( maxabs, QA + 1 - 12 ); /* QA+1 -> Q12 */
-
- if( maxabs > silk_int16_MAX ) {
- /* Reduce magnitude of prediction coefficients */
- maxabs = silk_min( maxabs, 163838 ); /* ( silk_int32_MAX >> 14 ) + silk_int16_MAX = 163838 */
- sc_Q16 = SILK_FIX_CONST( 0.999, 16 ) - silk_DIV32( silk_LSHIFT( maxabs - silk_int16_MAX, 14 ),
- silk_RSHIFT32( silk_MUL( maxabs, idx + 1), 2 ) );
- silk_bwexpander_32( a32_QA1, d, sc_Q16 );
- } else {
- break;
- }
- }
-
- if( i == 10 ) {
- /* Reached the last iteration, clip the coefficients */
- for( k = 0; k < d; k++ ) {
- a_Q12[ k ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( a32_QA1[ k ], QA + 1 - 12 ) ); /* QA+1 -> Q12 */
- a32_QA1[ k ] = silk_LSHIFT( (opus_int32)a_Q12[ k ], QA + 1 - 12 );
- }
- } else {
- for( k = 0; k < d; k++ ) {
- a_Q12[ k ] = (opus_int16)silk_RSHIFT_ROUND( a32_QA1[ k ], QA + 1 - 12 ); /* QA+1 -> Q12 */
- }
- }
-
- for( i = 0; i < MAX_LPC_STABILIZE_ITERATIONS; i++ ) {
- if( silk_LPC_inverse_pred_gain( a_Q12, d ) < SILK_FIX_CONST( 1.0 / MAX_PREDICTION_POWER_GAIN, 30 ) ) {
- /* Prediction coefficients are (too close to) unstable; apply bandwidth expansion */
- /* on the unscaled coefficients, convert to Q12 and measure again */
- silk_bwexpander_32( a32_QA1, d, 65536 - silk_LSHIFT( 2, i ) );
- for( k = 0; k < d; k++ ) {
- a_Q12[ k ] = (opus_int16)silk_RSHIFT_ROUND( a32_QA1[ k ], QA + 1 - 12 ); /* QA+1 -> Q12 */
- }
- } else {
- break;
- }
- }
-}
-
diff --git a/thirdparty/opus/silk/NLSF_VQ.c b/thirdparty/opus/silk/NLSF_VQ.c
deleted file mode 100644
index 69b6e22e18..0000000000
--- a/thirdparty/opus/silk/NLSF_VQ.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Compute quantization errors for an LPC_order element input vector for a VQ codebook */
-void silk_NLSF_VQ(
- opus_int32 err_Q26[], /* O Quantization errors [K] */
- const opus_int16 in_Q15[], /* I Input vectors to be quantized [LPC_order] */
- const opus_uint8 pCB_Q8[], /* I Codebook vectors [K*LPC_order] */
- const opus_int K, /* I Number of codebook vectors */
- const opus_int LPC_order /* I Number of LPCs */
-)
-{
- opus_int i, m;
- opus_int32 diff_Q15, sum_error_Q30, sum_error_Q26;
-
- silk_assert( LPC_order <= 16 );
- silk_assert( ( LPC_order & 1 ) == 0 );
-
- /* Loop over codebook */
- for( i = 0; i < K; i++ ) {
- sum_error_Q26 = 0;
- for( m = 0; m < LPC_order; m += 2 ) {
- /* Compute weighted squared quantization error for index m */
- diff_Q15 = silk_SUB_LSHIFT32( in_Q15[ m ], (opus_int32)*pCB_Q8++, 7 ); /* range: [ -32767 : 32767 ]*/
- sum_error_Q30 = silk_SMULBB( diff_Q15, diff_Q15 );
-
- /* Compute weighted squared quantization error for index m + 1 */
- diff_Q15 = silk_SUB_LSHIFT32( in_Q15[m + 1], (opus_int32)*pCB_Q8++, 7 ); /* range: [ -32767 : 32767 ]*/
- sum_error_Q30 = silk_SMLABB( sum_error_Q30, diff_Q15, diff_Q15 );
-
- sum_error_Q26 = silk_ADD_RSHIFT32( sum_error_Q26, sum_error_Q30, 4 );
-
- silk_assert( sum_error_Q26 >= 0 );
- silk_assert( sum_error_Q30 >= 0 );
- }
- err_Q26[ i ] = sum_error_Q26;
- }
-}
diff --git a/thirdparty/opus/silk/NLSF_VQ_weights_laroia.c b/thirdparty/opus/silk/NLSF_VQ_weights_laroia.c
deleted file mode 100644
index 04894c59ab..0000000000
--- a/thirdparty/opus/silk/NLSF_VQ_weights_laroia.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "define.h"
-#include "SigProc_FIX.h"
-
-/*
-R. Laroia, N. Phamdo and N. Farvardin, "Robust and Efficient Quantization of Speech LSP
-Parameters Using Structured Vector Quantization", Proc. IEEE Int. Conf. Acoust., Speech,
-Signal Processing, pp. 641-644, 1991.
-*/
-
-/* Laroia low complexity NLSF weights */
-void silk_NLSF_VQ_weights_laroia(
- opus_int16 *pNLSFW_Q_OUT, /* O Pointer to input vector weights [D] */
- const opus_int16 *pNLSF_Q15, /* I Pointer to input vector [D] */
- const opus_int D /* I Input vector dimension (even) */
-)
-{
- opus_int k;
- opus_int32 tmp1_int, tmp2_int;
-
- silk_assert( D > 0 );
- silk_assert( ( D & 1 ) == 0 );
-
- /* First value */
- tmp1_int = silk_max_int( pNLSF_Q15[ 0 ], 1 );
- tmp1_int = silk_DIV32_16( (opus_int32)1 << ( 15 + NLSF_W_Q ), tmp1_int );
- tmp2_int = silk_max_int( pNLSF_Q15[ 1 ] - pNLSF_Q15[ 0 ], 1 );
- tmp2_int = silk_DIV32_16( (opus_int32)1 << ( 15 + NLSF_W_Q ), tmp2_int );
- pNLSFW_Q_OUT[ 0 ] = (opus_int16)silk_min_int( tmp1_int + tmp2_int, silk_int16_MAX );
- silk_assert( pNLSFW_Q_OUT[ 0 ] > 0 );
-
- /* Main loop */
- for( k = 1; k < D - 1; k += 2 ) {
- tmp1_int = silk_max_int( pNLSF_Q15[ k + 1 ] - pNLSF_Q15[ k ], 1 );
- tmp1_int = silk_DIV32_16( (opus_int32)1 << ( 15 + NLSF_W_Q ), tmp1_int );
- pNLSFW_Q_OUT[ k ] = (opus_int16)silk_min_int( tmp1_int + tmp2_int, silk_int16_MAX );
- silk_assert( pNLSFW_Q_OUT[ k ] > 0 );
-
- tmp2_int = silk_max_int( pNLSF_Q15[ k + 2 ] - pNLSF_Q15[ k + 1 ], 1 );
- tmp2_int = silk_DIV32_16( (opus_int32)1 << ( 15 + NLSF_W_Q ), tmp2_int );
- pNLSFW_Q_OUT[ k + 1 ] = (opus_int16)silk_min_int( tmp1_int + tmp2_int, silk_int16_MAX );
- silk_assert( pNLSFW_Q_OUT[ k + 1 ] > 0 );
- }
-
- /* Last value */
- tmp1_int = silk_max_int( ( 1 << 15 ) - pNLSF_Q15[ D - 1 ], 1 );
- tmp1_int = silk_DIV32_16( (opus_int32)1 << ( 15 + NLSF_W_Q ), tmp1_int );
- pNLSFW_Q_OUT[ D - 1 ] = (opus_int16)silk_min_int( tmp1_int + tmp2_int, silk_int16_MAX );
- silk_assert( pNLSFW_Q_OUT[ D - 1 ] > 0 );
-}
diff --git a/thirdparty/opus/silk/NLSF_decode.c b/thirdparty/opus/silk/NLSF_decode.c
deleted file mode 100644
index 9f715060b8..0000000000
--- a/thirdparty/opus/silk/NLSF_decode.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Predictive dequantizer for NLSF residuals */
-static OPUS_INLINE void silk_NLSF_residual_dequant( /* O Returns RD value in Q30 */
- opus_int16 x_Q10[], /* O Output [ order ] */
- const opus_int8 indices[], /* I Quantization indices [ order ] */
- const opus_uint8 pred_coef_Q8[], /* I Backward predictor coefs [ order ] */
- const opus_int quant_step_size_Q16, /* I Quantization step size */
- const opus_int16 order /* I Number of input values */
-)
-{
- opus_int i, out_Q10, pred_Q10;
-
- out_Q10 = 0;
- for( i = order-1; i >= 0; i-- ) {
- pred_Q10 = silk_RSHIFT( silk_SMULBB( out_Q10, (opus_int16)pred_coef_Q8[ i ] ), 8 );
- out_Q10 = silk_LSHIFT( indices[ i ], 10 );
- if( out_Q10 > 0 ) {
- out_Q10 = silk_SUB16( out_Q10, SILK_FIX_CONST( NLSF_QUANT_LEVEL_ADJ, 10 ) );
- } else if( out_Q10 < 0 ) {
- out_Q10 = silk_ADD16( out_Q10, SILK_FIX_CONST( NLSF_QUANT_LEVEL_ADJ, 10 ) );
- }
- out_Q10 = silk_SMLAWB( pred_Q10, (opus_int32)out_Q10, quant_step_size_Q16 );
- x_Q10[ i ] = out_Q10;
- }
-}
-
-
-/***********************/
-/* NLSF vector decoder */
-/***********************/
-void silk_NLSF_decode(
- opus_int16 *pNLSF_Q15, /* O Quantized NLSF vector [ LPC_ORDER ] */
- opus_int8 *NLSFIndices, /* I Codebook path vector [ LPC_ORDER + 1 ] */
- const silk_NLSF_CB_struct *psNLSF_CB /* I Codebook object */
-)
-{
- opus_int i;
- opus_uint8 pred_Q8[ MAX_LPC_ORDER ];
- opus_int16 ec_ix[ MAX_LPC_ORDER ];
- opus_int16 res_Q10[ MAX_LPC_ORDER ];
- opus_int16 W_tmp_QW[ MAX_LPC_ORDER ];
- opus_int32 W_tmp_Q9, NLSF_Q15_tmp;
- const opus_uint8 *pCB_element;
-
- /* Decode first stage */
- pCB_element = &psNLSF_CB->CB1_NLSF_Q8[ NLSFIndices[ 0 ] * psNLSF_CB->order ];
- for( i = 0; i < psNLSF_CB->order; i++ ) {
- pNLSF_Q15[ i ] = silk_LSHIFT( (opus_int16)pCB_element[ i ], 7 );
- }
-
- /* Unpack entropy table indices and predictor for current CB1 index */
- silk_NLSF_unpack( ec_ix, pred_Q8, psNLSF_CB, NLSFIndices[ 0 ] );
-
- /* Predictive residual dequantizer */
- silk_NLSF_residual_dequant( res_Q10, &NLSFIndices[ 1 ], pred_Q8, psNLSF_CB->quantStepSize_Q16, psNLSF_CB->order );
-
- /* Weights from codebook vector */
- silk_NLSF_VQ_weights_laroia( W_tmp_QW, pNLSF_Q15, psNLSF_CB->order );
-
- /* Apply inverse square-rooted weights and add to output */
- for( i = 0; i < psNLSF_CB->order; i++ ) {
- W_tmp_Q9 = silk_SQRT_APPROX( silk_LSHIFT( (opus_int32)W_tmp_QW[ i ], 18 - NLSF_W_Q ) );
- NLSF_Q15_tmp = silk_ADD32( pNLSF_Q15[ i ], silk_DIV32_16( silk_LSHIFT( (opus_int32)res_Q10[ i ], 14 ), W_tmp_Q9 ) );
- pNLSF_Q15[ i ] = (opus_int16)silk_LIMIT( NLSF_Q15_tmp, 0, 32767 );
- }
-
- /* NLSF stabilization */
- silk_NLSF_stabilize( pNLSF_Q15, psNLSF_CB->deltaMin_Q15, psNLSF_CB->order );
-}
diff --git a/thirdparty/opus/silk/NLSF_del_dec_quant.c b/thirdparty/opus/silk/NLSF_del_dec_quant.c
deleted file mode 100644
index de88fee060..0000000000
--- a/thirdparty/opus/silk/NLSF_del_dec_quant.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Delayed-decision quantizer for NLSF residuals */
-opus_int32 silk_NLSF_del_dec_quant( /* O Returns RD value in Q25 */
- opus_int8 indices[], /* O Quantization indices [ order ] */
- const opus_int16 x_Q10[], /* I Input [ order ] */
- const opus_int16 w_Q5[], /* I Weights [ order ] */
- const opus_uint8 pred_coef_Q8[], /* I Backward predictor coefs [ order ] */
- const opus_int16 ec_ix[], /* I Indices to entropy coding tables [ order ] */
- const opus_uint8 ec_rates_Q5[], /* I Rates [] */
- const opus_int quant_step_size_Q16, /* I Quantization step size */
- const opus_int16 inv_quant_step_size_Q6, /* I Inverse quantization step size */
- const opus_int32 mu_Q20, /* I R/D tradeoff */
- const opus_int16 order /* I Number of input values */
-)
-{
- opus_int i, j, nStates, ind_tmp, ind_min_max, ind_max_min, in_Q10, res_Q10;
- opus_int pred_Q10, diff_Q10, rate0_Q5, rate1_Q5;
- opus_int16 out0_Q10, out1_Q10;
- opus_int32 RD_tmp_Q25, min_Q25, min_max_Q25, max_min_Q25;
- opus_int ind_sort[ NLSF_QUANT_DEL_DEC_STATES ];
- opus_int8 ind[ NLSF_QUANT_DEL_DEC_STATES ][ MAX_LPC_ORDER ];
- opus_int16 prev_out_Q10[ 2 * NLSF_QUANT_DEL_DEC_STATES ];
- opus_int32 RD_Q25[ 2 * NLSF_QUANT_DEL_DEC_STATES ];
- opus_int32 RD_min_Q25[ NLSF_QUANT_DEL_DEC_STATES ];
- opus_int32 RD_max_Q25[ NLSF_QUANT_DEL_DEC_STATES ];
- const opus_uint8 *rates_Q5;
-
- opus_int out0_Q10_table[2 * NLSF_QUANT_MAX_AMPLITUDE_EXT];
- opus_int out1_Q10_table[2 * NLSF_QUANT_MAX_AMPLITUDE_EXT];
-
- for (i = -NLSF_QUANT_MAX_AMPLITUDE_EXT; i <= NLSF_QUANT_MAX_AMPLITUDE_EXT-1; i++)
- {
- out0_Q10 = silk_LSHIFT( i, 10 );
- out1_Q10 = silk_ADD16( out0_Q10, 1024 );
- if( i > 0 ) {
- out0_Q10 = silk_SUB16( out0_Q10, SILK_FIX_CONST( NLSF_QUANT_LEVEL_ADJ, 10 ) );
- out1_Q10 = silk_SUB16( out1_Q10, SILK_FIX_CONST( NLSF_QUANT_LEVEL_ADJ, 10 ) );
- } else if( i == 0 ) {
- out1_Q10 = silk_SUB16( out1_Q10, SILK_FIX_CONST( NLSF_QUANT_LEVEL_ADJ, 10 ) );
- } else if( i == -1 ) {
- out0_Q10 = silk_ADD16( out0_Q10, SILK_FIX_CONST( NLSF_QUANT_LEVEL_ADJ, 10 ) );
- } else {
- out0_Q10 = silk_ADD16( out0_Q10, SILK_FIX_CONST( NLSF_QUANT_LEVEL_ADJ, 10 ) );
- out1_Q10 = silk_ADD16( out1_Q10, SILK_FIX_CONST( NLSF_QUANT_LEVEL_ADJ, 10 ) );
- }
- out0_Q10_table[ i + NLSF_QUANT_MAX_AMPLITUDE_EXT ] = silk_RSHIFT( silk_SMULBB( out0_Q10, quant_step_size_Q16 ), 16 );
- out1_Q10_table[ i + NLSF_QUANT_MAX_AMPLITUDE_EXT ] = silk_RSHIFT( silk_SMULBB( out1_Q10, quant_step_size_Q16 ), 16 );
- }
-
- silk_assert( (NLSF_QUANT_DEL_DEC_STATES & (NLSF_QUANT_DEL_DEC_STATES-1)) == 0 ); /* must be power of two */
-
- nStates = 1;
- RD_Q25[ 0 ] = 0;
- prev_out_Q10[ 0 ] = 0;
- for( i = order - 1; ; i-- ) {
- rates_Q5 = &ec_rates_Q5[ ec_ix[ i ] ];
- in_Q10 = x_Q10[ i ];
- for( j = 0; j < nStates; j++ ) {
- pred_Q10 = silk_RSHIFT( silk_SMULBB( (opus_int16)pred_coef_Q8[ i ], prev_out_Q10[ j ] ), 8 );
- res_Q10 = silk_SUB16( in_Q10, pred_Q10 );
- ind_tmp = silk_RSHIFT( silk_SMULBB( inv_quant_step_size_Q6, res_Q10 ), 16 );
- ind_tmp = silk_LIMIT( ind_tmp, -NLSF_QUANT_MAX_AMPLITUDE_EXT, NLSF_QUANT_MAX_AMPLITUDE_EXT-1 );
- ind[ j ][ i ] = (opus_int8)ind_tmp;
-
- /* compute outputs for ind_tmp and ind_tmp + 1 */
- out0_Q10 = out0_Q10_table[ ind_tmp + NLSF_QUANT_MAX_AMPLITUDE_EXT ];
- out1_Q10 = out1_Q10_table[ ind_tmp + NLSF_QUANT_MAX_AMPLITUDE_EXT ];
-
- out0_Q10 = silk_ADD16( out0_Q10, pred_Q10 );
- out1_Q10 = silk_ADD16( out1_Q10, pred_Q10 );
- prev_out_Q10[ j ] = out0_Q10;
- prev_out_Q10[ j + nStates ] = out1_Q10;
-
- /* compute RD for ind_tmp and ind_tmp + 1 */
- if( ind_tmp + 1 >= NLSF_QUANT_MAX_AMPLITUDE ) {
- if( ind_tmp + 1 == NLSF_QUANT_MAX_AMPLITUDE ) {
- rate0_Q5 = rates_Q5[ ind_tmp + NLSF_QUANT_MAX_AMPLITUDE ];
- rate1_Q5 = 280;
- } else {
- rate0_Q5 = silk_SMLABB( 280 - 43 * NLSF_QUANT_MAX_AMPLITUDE, 43, ind_tmp );
- rate1_Q5 = silk_ADD16( rate0_Q5, 43 );
- }
- } else if( ind_tmp <= -NLSF_QUANT_MAX_AMPLITUDE ) {
- if( ind_tmp == -NLSF_QUANT_MAX_AMPLITUDE ) {
- rate0_Q5 = 280;
- rate1_Q5 = rates_Q5[ ind_tmp + 1 + NLSF_QUANT_MAX_AMPLITUDE ];
- } else {
- rate0_Q5 = silk_SMLABB( 280 - 43 * NLSF_QUANT_MAX_AMPLITUDE, -43, ind_tmp );
- rate1_Q5 = silk_SUB16( rate0_Q5, 43 );
- }
- } else {
- rate0_Q5 = rates_Q5[ ind_tmp + NLSF_QUANT_MAX_AMPLITUDE ];
- rate1_Q5 = rates_Q5[ ind_tmp + 1 + NLSF_QUANT_MAX_AMPLITUDE ];
- }
- RD_tmp_Q25 = RD_Q25[ j ];
- diff_Q10 = silk_SUB16( in_Q10, out0_Q10 );
- RD_Q25[ j ] = silk_SMLABB( silk_MLA( RD_tmp_Q25, silk_SMULBB( diff_Q10, diff_Q10 ), w_Q5[ i ] ), mu_Q20, rate0_Q5 );
- diff_Q10 = silk_SUB16( in_Q10, out1_Q10 );
- RD_Q25[ j + nStates ] = silk_SMLABB( silk_MLA( RD_tmp_Q25, silk_SMULBB( diff_Q10, diff_Q10 ), w_Q5[ i ] ), mu_Q20, rate1_Q5 );
- }
-
- if( nStates <= ( NLSF_QUANT_DEL_DEC_STATES >> 1 ) ) {
- /* double number of states and copy */
- for( j = 0; j < nStates; j++ ) {
- ind[ j + nStates ][ i ] = ind[ j ][ i ] + 1;
- }
- nStates = silk_LSHIFT( nStates, 1 );
- for( j = nStates; j < NLSF_QUANT_DEL_DEC_STATES; j++ ) {
- ind[ j ][ i ] = ind[ j - nStates ][ i ];
- }
- } else if( i > 0 ) {
- /* sort lower and upper half of RD_Q25, pairwise */
- for( j = 0; j < NLSF_QUANT_DEL_DEC_STATES; j++ ) {
- if( RD_Q25[ j ] > RD_Q25[ j + NLSF_QUANT_DEL_DEC_STATES ] ) {
- RD_max_Q25[ j ] = RD_Q25[ j ];
- RD_min_Q25[ j ] = RD_Q25[ j + NLSF_QUANT_DEL_DEC_STATES ];
- RD_Q25[ j ] = RD_min_Q25[ j ];
- RD_Q25[ j + NLSF_QUANT_DEL_DEC_STATES ] = RD_max_Q25[ j ];
- /* swap prev_out values */
- out0_Q10 = prev_out_Q10[ j ];
- prev_out_Q10[ j ] = prev_out_Q10[ j + NLSF_QUANT_DEL_DEC_STATES ];
- prev_out_Q10[ j + NLSF_QUANT_DEL_DEC_STATES ] = out0_Q10;
- ind_sort[ j ] = j + NLSF_QUANT_DEL_DEC_STATES;
- } else {
- RD_min_Q25[ j ] = RD_Q25[ j ];
- RD_max_Q25[ j ] = RD_Q25[ j + NLSF_QUANT_DEL_DEC_STATES ];
- ind_sort[ j ] = j;
- }
- }
- /* compare the highest RD values of the winning half with the lowest one in the losing half, and copy if necessary */
- /* afterwards ind_sort[] will contain the indices of the NLSF_QUANT_DEL_DEC_STATES winning RD values */
- while( 1 ) {
- min_max_Q25 = silk_int32_MAX;
- max_min_Q25 = 0;
- ind_min_max = 0;
- ind_max_min = 0;
- for( j = 0; j < NLSF_QUANT_DEL_DEC_STATES; j++ ) {
- if( min_max_Q25 > RD_max_Q25[ j ] ) {
- min_max_Q25 = RD_max_Q25[ j ];
- ind_min_max = j;
- }
- if( max_min_Q25 < RD_min_Q25[ j ] ) {
- max_min_Q25 = RD_min_Q25[ j ];
- ind_max_min = j;
- }
- }
- if( min_max_Q25 >= max_min_Q25 ) {
- break;
- }
- /* copy ind_min_max to ind_max_min */
- ind_sort[ ind_max_min ] = ind_sort[ ind_min_max ] ^ NLSF_QUANT_DEL_DEC_STATES;
- RD_Q25[ ind_max_min ] = RD_Q25[ ind_min_max + NLSF_QUANT_DEL_DEC_STATES ];
- prev_out_Q10[ ind_max_min ] = prev_out_Q10[ ind_min_max + NLSF_QUANT_DEL_DEC_STATES ];
- RD_min_Q25[ ind_max_min ] = 0;
- RD_max_Q25[ ind_min_max ] = silk_int32_MAX;
- silk_memcpy( ind[ ind_max_min ], ind[ ind_min_max ], MAX_LPC_ORDER * sizeof( opus_int8 ) );
- }
- /* increment index if it comes from the upper half */
- for( j = 0; j < NLSF_QUANT_DEL_DEC_STATES; j++ ) {
- ind[ j ][ i ] += silk_RSHIFT( ind_sort[ j ], NLSF_QUANT_DEL_DEC_STATES_LOG2 );
- }
- } else { /* i == 0 */
- break;
- }
- }
-
- /* last sample: find winner, copy indices and return RD value */
- ind_tmp = 0;
- min_Q25 = silk_int32_MAX;
- for( j = 0; j < 2 * NLSF_QUANT_DEL_DEC_STATES; j++ ) {
- if( min_Q25 > RD_Q25[ j ] ) {
- min_Q25 = RD_Q25[ j ];
- ind_tmp = j;
- }
- }
- for( j = 0; j < order; j++ ) {
- indices[ j ] = ind[ ind_tmp & ( NLSF_QUANT_DEL_DEC_STATES - 1 ) ][ j ];
- silk_assert( indices[ j ] >= -NLSF_QUANT_MAX_AMPLITUDE_EXT );
- silk_assert( indices[ j ] <= NLSF_QUANT_MAX_AMPLITUDE_EXT );
- }
- indices[ 0 ] += silk_RSHIFT( ind_tmp, NLSF_QUANT_DEL_DEC_STATES_LOG2 );
- silk_assert( indices[ 0 ] <= NLSF_QUANT_MAX_AMPLITUDE_EXT );
- silk_assert( min_Q25 >= 0 );
- return min_Q25;
-}
diff --git a/thirdparty/opus/silk/NLSF_encode.c b/thirdparty/opus/silk/NLSF_encode.c
deleted file mode 100644
index f03c3f1c35..0000000000
--- a/thirdparty/opus/silk/NLSF_encode.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-
-/***********************/
-/* NLSF vector encoder */
-/***********************/
-opus_int32 silk_NLSF_encode( /* O Returns RD value in Q25 */
- opus_int8 *NLSFIndices, /* I Codebook path vector [ LPC_ORDER + 1 ] */
- opus_int16 *pNLSF_Q15, /* I/O Quantized NLSF vector [ LPC_ORDER ] */
- const silk_NLSF_CB_struct *psNLSF_CB, /* I Codebook object */
- const opus_int16 *pW_QW, /* I NLSF weight vector [ LPC_ORDER ] */
- const opus_int NLSF_mu_Q20, /* I Rate weight for the RD optimization */
- const opus_int nSurvivors, /* I Max survivors after first stage */
- const opus_int signalType /* I Signal type: 0/1/2 */
-)
-{
- opus_int i, s, ind1, bestIndex, prob_Q8, bits_q7;
- opus_int32 W_tmp_Q9, ret;
- VARDECL( opus_int32, err_Q26 );
- VARDECL( opus_int32, RD_Q25 );
- VARDECL( opus_int, tempIndices1 );
- VARDECL( opus_int8, tempIndices2 );
- opus_int16 res_Q15[ MAX_LPC_ORDER ];
- opus_int16 res_Q10[ MAX_LPC_ORDER ];
- opus_int16 NLSF_tmp_Q15[ MAX_LPC_ORDER ];
- opus_int16 W_tmp_QW[ MAX_LPC_ORDER ];
- opus_int16 W_adj_Q5[ MAX_LPC_ORDER ];
- opus_uint8 pred_Q8[ MAX_LPC_ORDER ];
- opus_int16 ec_ix[ MAX_LPC_ORDER ];
- const opus_uint8 *pCB_element, *iCDF_ptr;
- SAVE_STACK;
-
- silk_assert( nSurvivors <= NLSF_VQ_MAX_SURVIVORS );
- silk_assert( signalType >= 0 && signalType <= 2 );
- silk_assert( NLSF_mu_Q20 <= 32767 && NLSF_mu_Q20 >= 0 );
-
- /* NLSF stabilization */
- silk_NLSF_stabilize( pNLSF_Q15, psNLSF_CB->deltaMin_Q15, psNLSF_CB->order );
-
- /* First stage: VQ */
- ALLOC( err_Q26, psNLSF_CB->nVectors, opus_int32 );
- silk_NLSF_VQ( err_Q26, pNLSF_Q15, psNLSF_CB->CB1_NLSF_Q8, psNLSF_CB->nVectors, psNLSF_CB->order );
-
- /* Sort the quantization errors */
- ALLOC( tempIndices1, nSurvivors, opus_int );
- silk_insertion_sort_increasing( err_Q26, tempIndices1, psNLSF_CB->nVectors, nSurvivors );
-
- ALLOC( RD_Q25, nSurvivors, opus_int32 );
- ALLOC( tempIndices2, nSurvivors * MAX_LPC_ORDER, opus_int8 );
-
- /* Loop over survivors */
- for( s = 0; s < nSurvivors; s++ ) {
- ind1 = tempIndices1[ s ];
-
- /* Residual after first stage */
- pCB_element = &psNLSF_CB->CB1_NLSF_Q8[ ind1 * psNLSF_CB->order ];
- for( i = 0; i < psNLSF_CB->order; i++ ) {
- NLSF_tmp_Q15[ i ] = silk_LSHIFT16( (opus_int16)pCB_element[ i ], 7 );
- res_Q15[ i ] = pNLSF_Q15[ i ] - NLSF_tmp_Q15[ i ];
- }
-
- /* Weights from codebook vector */
- silk_NLSF_VQ_weights_laroia( W_tmp_QW, NLSF_tmp_Q15, psNLSF_CB->order );
-
- /* Apply square-rooted weights */
- for( i = 0; i < psNLSF_CB->order; i++ ) {
- W_tmp_Q9 = silk_SQRT_APPROX( silk_LSHIFT( (opus_int32)W_tmp_QW[ i ], 18 - NLSF_W_Q ) );
- res_Q10[ i ] = (opus_int16)silk_RSHIFT( silk_SMULBB( res_Q15[ i ], W_tmp_Q9 ), 14 );
- }
-
- /* Modify input weights accordingly */
- for( i = 0; i < psNLSF_CB->order; i++ ) {
- W_adj_Q5[ i ] = silk_DIV32_16( silk_LSHIFT( (opus_int32)pW_QW[ i ], 5 ), W_tmp_QW[ i ] );
- }
-
- /* Unpack entropy table indices and predictor for current CB1 index */
- silk_NLSF_unpack( ec_ix, pred_Q8, psNLSF_CB, ind1 );
-
- /* Trellis quantizer */
- RD_Q25[ s ] = silk_NLSF_del_dec_quant( &tempIndices2[ s * MAX_LPC_ORDER ], res_Q10, W_adj_Q5, pred_Q8, ec_ix,
- psNLSF_CB->ec_Rates_Q5, psNLSF_CB->quantStepSize_Q16, psNLSF_CB->invQuantStepSize_Q6, NLSF_mu_Q20, psNLSF_CB->order );
-
- /* Add rate for first stage */
- iCDF_ptr = &psNLSF_CB->CB1_iCDF[ ( signalType >> 1 ) * psNLSF_CB->nVectors ];
- if( ind1 == 0 ) {
- prob_Q8 = 256 - iCDF_ptr[ ind1 ];
- } else {
- prob_Q8 = iCDF_ptr[ ind1 - 1 ] - iCDF_ptr[ ind1 ];
- }
- bits_q7 = ( 8 << 7 ) - silk_lin2log( prob_Q8 );
- RD_Q25[ s ] = silk_SMLABB( RD_Q25[ s ], bits_q7, silk_RSHIFT( NLSF_mu_Q20, 2 ) );
- }
-
- /* Find the lowest rate-distortion error */
- silk_insertion_sort_increasing( RD_Q25, &bestIndex, nSurvivors, 1 );
-
- NLSFIndices[ 0 ] = (opus_int8)tempIndices1[ bestIndex ];
- silk_memcpy( &NLSFIndices[ 1 ], &tempIndices2[ bestIndex * MAX_LPC_ORDER ], psNLSF_CB->order * sizeof( opus_int8 ) );
-
- /* Decode */
- silk_NLSF_decode( pNLSF_Q15, NLSFIndices, psNLSF_CB );
-
- ret = RD_Q25[ 0 ];
- RESTORE_STACK;
- return ret;
-}
diff --git a/thirdparty/opus/silk/NLSF_stabilize.c b/thirdparty/opus/silk/NLSF_stabilize.c
deleted file mode 100644
index 8f3426b91e..0000000000
--- a/thirdparty/opus/silk/NLSF_stabilize.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* NLSF stabilizer: */
-/* */
-/* - Moves NLSFs further apart if they are too close */
-/* - Moves NLSFs away from borders if they are too close */
-/* - High effort to achieve a modification with minimum */
-/* Euclidean distance to input vector */
-/* - Output are sorted NLSF coefficients */
-/* */
-
-#include "SigProc_FIX.h"
-
-/* Constant Definitions */
-#define MAX_LOOPS 20
-
-/* NLSF stabilizer, for a single input data vector */
-void silk_NLSF_stabilize(
- opus_int16 *NLSF_Q15, /* I/O Unstable/stabilized normalized LSF vector in Q15 [L] */
- const opus_int16 *NDeltaMin_Q15, /* I Min distance vector, NDeltaMin_Q15[L] must be >= 1 [L+1] */
- const opus_int L /* I Number of NLSF parameters in the input vector */
-)
-{
- opus_int i, I=0, k, loops;
- opus_int16 center_freq_Q15;
- opus_int32 diff_Q15, min_diff_Q15, min_center_Q15, max_center_Q15;
-
- /* This is necessary to ensure an output within range of a opus_int16 */
- silk_assert( NDeltaMin_Q15[L] >= 1 );
-
- for( loops = 0; loops < MAX_LOOPS; loops++ ) {
- /**************************/
- /* Find smallest distance */
- /**************************/
- /* First element */
- min_diff_Q15 = NLSF_Q15[0] - NDeltaMin_Q15[0];
- I = 0;
- /* Middle elements */
- for( i = 1; i <= L-1; i++ ) {
- diff_Q15 = NLSF_Q15[i] - ( NLSF_Q15[i-1] + NDeltaMin_Q15[i] );
- if( diff_Q15 < min_diff_Q15 ) {
- min_diff_Q15 = diff_Q15;
- I = i;
- }
- }
- /* Last element */
- diff_Q15 = ( 1 << 15 ) - ( NLSF_Q15[L-1] + NDeltaMin_Q15[L] );
- if( diff_Q15 < min_diff_Q15 ) {
- min_diff_Q15 = diff_Q15;
- I = L;
- }
-
- /***************************************************/
- /* Now check if the smallest distance non-negative */
- /***************************************************/
- if( min_diff_Q15 >= 0 ) {
- return;
- }
-
- if( I == 0 ) {
- /* Move away from lower limit */
- NLSF_Q15[0] = NDeltaMin_Q15[0];
-
- } else if( I == L) {
- /* Move away from higher limit */
- NLSF_Q15[L-1] = ( 1 << 15 ) - NDeltaMin_Q15[L];
-
- } else {
- /* Find the lower extreme for the location of the current center frequency */
- min_center_Q15 = 0;
- for( k = 0; k < I; k++ ) {
- min_center_Q15 += NDeltaMin_Q15[k];
- }
- min_center_Q15 += silk_RSHIFT( NDeltaMin_Q15[I], 1 );
-
- /* Find the upper extreme for the location of the current center frequency */
- max_center_Q15 = 1 << 15;
- for( k = L; k > I; k-- ) {
- max_center_Q15 -= NDeltaMin_Q15[k];
- }
- max_center_Q15 -= silk_RSHIFT( NDeltaMin_Q15[I], 1 );
-
- /* Move apart, sorted by value, keeping the same center frequency */
- center_freq_Q15 = (opus_int16)silk_LIMIT_32( silk_RSHIFT_ROUND( (opus_int32)NLSF_Q15[I-1] + (opus_int32)NLSF_Q15[I], 1 ),
- min_center_Q15, max_center_Q15 );
- NLSF_Q15[I-1] = center_freq_Q15 - silk_RSHIFT( NDeltaMin_Q15[I], 1 );
- NLSF_Q15[I] = NLSF_Q15[I-1] + NDeltaMin_Q15[I];
- }
- }
-
- /* Safe and simple fall back method, which is less ideal than the above */
- if( loops == MAX_LOOPS )
- {
- /* Insertion sort (fast for already almost sorted arrays): */
- /* Best case: O(n) for an already sorted array */
- /* Worst case: O(n^2) for an inversely sorted array */
- silk_insertion_sort_increasing_all_values_int16( &NLSF_Q15[0], L );
-
- /* First NLSF should be no less than NDeltaMin[0] */
- NLSF_Q15[0] = silk_max_int( NLSF_Q15[0], NDeltaMin_Q15[0] );
-
- /* Keep delta_min distance between the NLSFs */
- for( i = 1; i < L; i++ )
- NLSF_Q15[i] = silk_max_int( NLSF_Q15[i], silk_ADD_SAT16( NLSF_Q15[i-1], NDeltaMin_Q15[i] ) );
-
- /* Last NLSF should be no higher than 1 - NDeltaMin[L] */
- NLSF_Q15[L-1] = silk_min_int( NLSF_Q15[L-1], (1<<15) - NDeltaMin_Q15[L] );
-
- /* Keep NDeltaMin distance between the NLSFs */
- for( i = L-2; i >= 0; i-- )
- NLSF_Q15[i] = silk_min_int( NLSF_Q15[i], NLSF_Q15[i+1] - NDeltaMin_Q15[i+1] );
- }
-}
diff --git a/thirdparty/opus/silk/NLSF_unpack.c b/thirdparty/opus/silk/NLSF_unpack.c
deleted file mode 100644
index 17bd23f752..0000000000
--- a/thirdparty/opus/silk/NLSF_unpack.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Unpack predictor values and indices for entropy coding tables */
-void silk_NLSF_unpack(
- opus_int16 ec_ix[], /* O Indices to entropy tables [ LPC_ORDER ] */
- opus_uint8 pred_Q8[], /* O LSF predictor [ LPC_ORDER ] */
- const silk_NLSF_CB_struct *psNLSF_CB, /* I Codebook object */
- const opus_int CB1_index /* I Index of vector in first LSF codebook */
-)
-{
- opus_int i;
- opus_uint8 entry;
- const opus_uint8 *ec_sel_ptr;
-
- ec_sel_ptr = &psNLSF_CB->ec_sel[ CB1_index * psNLSF_CB->order / 2 ];
- for( i = 0; i < psNLSF_CB->order; i += 2 ) {
- entry = *ec_sel_ptr++;
- ec_ix [ i ] = silk_SMULBB( silk_RSHIFT( entry, 1 ) & 7, 2 * NLSF_QUANT_MAX_AMPLITUDE + 1 );
- pred_Q8[ i ] = psNLSF_CB->pred_Q8[ i + ( entry & 1 ) * ( psNLSF_CB->order - 1 ) ];
- ec_ix [ i + 1 ] = silk_SMULBB( silk_RSHIFT( entry, 5 ) & 7, 2 * NLSF_QUANT_MAX_AMPLITUDE + 1 );
- pred_Q8[ i + 1 ] = psNLSF_CB->pred_Q8[ i + ( silk_RSHIFT( entry, 4 ) & 1 ) * ( psNLSF_CB->order - 1 ) + 1 ];
- }
-}
-
diff --git a/thirdparty/opus/silk/NSQ.c b/thirdparty/opus/silk/NSQ.c
deleted file mode 100644
index 43e3fee7e0..0000000000
--- a/thirdparty/opus/silk/NSQ.c
+++ /dev/null
@@ -1,429 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-#include "NSQ.h"
-
-
-static OPUS_INLINE void silk_nsq_scale_states(
- const silk_encoder_state *psEncC, /* I Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- const opus_int32 x_Q3[], /* I input in Q3 */
- opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */
- const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */
- opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */
- opus_int subfr, /* I subframe number */
- const opus_int LTP_scale_Q14, /* I */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */
- const opus_int signal_type /* I Signal type */
-);
-
-#if !defined(OPUS_X86_MAY_HAVE_SSE4_1)
-static OPUS_INLINE void silk_noise_shape_quantizer(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_sc_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP state */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping AR coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int Lambda_Q10, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int shapingLPCOrder, /* I Noise shaping AR filter order */
- opus_int predictLPCOrder, /* I Prediction filter order */
- int arch /* I Architecture */
-);
-#endif
-
-void silk_NSQ_c
-(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-)
-{
- opus_int k, lag, start_idx, LSF_interpolation_flag;
- const opus_int16 *A_Q12, *B_Q14, *AR_shp_Q13;
- opus_int16 *pxq;
- VARDECL( opus_int32, sLTP_Q15 );
- VARDECL( opus_int16, sLTP );
- opus_int32 HarmShapeFIRPacked_Q14;
- opus_int offset_Q10;
- VARDECL( opus_int32, x_sc_Q10 );
- SAVE_STACK;
-
- NSQ->rand_seed = psIndices->Seed;
-
- /* Set unvoiced lag to the previous one, overwrite later for voiced */
- lag = NSQ->lagPrev;
-
- silk_assert( NSQ->prev_gain_Q16 != 0 );
-
- offset_Q10 = silk_Quantization_Offsets_Q10[ psIndices->signalType >> 1 ][ psIndices->quantOffsetType ];
-
- if( psIndices->NLSFInterpCoef_Q2 == 4 ) {
- LSF_interpolation_flag = 0;
- } else {
- LSF_interpolation_flag = 1;
- }
-
- ALLOC( sLTP_Q15,
- psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 );
- ALLOC( sLTP, psEncC->ltp_mem_length + psEncC->frame_length, opus_int16 );
- ALLOC( x_sc_Q10, psEncC->subfr_length, opus_int32 );
- /* Set up pointers to start of sub frame */
- NSQ->sLTP_shp_buf_idx = psEncC->ltp_mem_length;
- NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
- pxq = &NSQ->xq[ psEncC->ltp_mem_length ];
- for( k = 0; k < psEncC->nb_subfr; k++ ) {
- A_Q12 = &PredCoef_Q12[ (( k >> 1 ) | ( 1 - LSF_interpolation_flag )) * MAX_LPC_ORDER ];
- B_Q14 = &LTPCoef_Q14[ k * LTP_ORDER ];
- AR_shp_Q13 = &AR2_Q13[ k * MAX_SHAPE_LPC_ORDER ];
-
- /* Noise shape parameters */
- silk_assert( HarmShapeGain_Q14[ k ] >= 0 );
- HarmShapeFIRPacked_Q14 = silk_RSHIFT( HarmShapeGain_Q14[ k ], 2 );
- HarmShapeFIRPacked_Q14 |= silk_LSHIFT( (opus_int32)silk_RSHIFT( HarmShapeGain_Q14[ k ], 1 ), 16 );
-
- NSQ->rewhite_flag = 0;
- if( psIndices->signalType == TYPE_VOICED ) {
- /* Voiced */
- lag = pitchL[ k ];
-
- /* Re-whitening */
- if( ( k & ( 3 - silk_LSHIFT( LSF_interpolation_flag, 1 ) ) ) == 0 ) {
- /* Rewhiten with new A coefs */
- start_idx = psEncC->ltp_mem_length - lag - psEncC->predictLPCOrder - LTP_ORDER / 2;
- silk_assert( start_idx > 0 );
-
- silk_LPC_analysis_filter( &sLTP[ start_idx ], &NSQ->xq[ start_idx + k * psEncC->subfr_length ],
- A_Q12, psEncC->ltp_mem_length - start_idx, psEncC->predictLPCOrder, psEncC->arch );
-
- NSQ->rewhite_flag = 1;
- NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
- }
- }
-
- silk_nsq_scale_states( psEncC, NSQ, x_Q3, x_sc_Q10, sLTP, sLTP_Q15, k, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType );
-
- silk_noise_shape_quantizer( NSQ, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15, A_Q12, B_Q14,
- AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ], Gains_Q16[ k ], Lambda_Q10,
- offset_Q10, psEncC->subfr_length, psEncC->shapingLPCOrder, psEncC->predictLPCOrder, psEncC->arch );
-
- x_Q3 += psEncC->subfr_length;
- pulses += psEncC->subfr_length;
- pxq += psEncC->subfr_length;
- }
-
- /* Update lagPrev for next frame */
- NSQ->lagPrev = pitchL[ psEncC->nb_subfr - 1 ];
-
- /* Save quantized speech and noise shaping signals */
- /* DEBUG_STORE_DATA( enc.pcm, &NSQ->xq[ psEncC->ltp_mem_length ], psEncC->frame_length * sizeof( opus_int16 ) ) */
- silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) );
- silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) );
- RESTORE_STACK;
-}
-
-/***********************************/
-/* silk_noise_shape_quantizer */
-/***********************************/
-
-#if !defined(OPUS_X86_MAY_HAVE_SSE4_1)
-static OPUS_INLINE
-#endif
-void silk_noise_shape_quantizer(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_sc_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP state */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping AR coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int Lambda_Q10, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int shapingLPCOrder, /* I Noise shaping AR filter order */
- opus_int predictLPCOrder, /* I Prediction filter order */
- int arch /* I Architecture */
-)
-{
- opus_int i;
- opus_int32 LTP_pred_Q13, LPC_pred_Q10, n_AR_Q12, n_LTP_Q13;
- opus_int32 n_LF_Q12, r_Q10, rr_Q10, q1_Q0, q1_Q10, q2_Q10, rd1_Q20, rd2_Q20;
- opus_int32 exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10;
- opus_int32 tmp1, tmp2, sLF_AR_shp_Q14;
- opus_int32 *psLPC_Q14, *shp_lag_ptr, *pred_lag_ptr;
-#ifdef silk_short_prediction_create_arch_coef
- opus_int32 a_Q12_arch[MAX_LPC_ORDER];
-#endif
-
- shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ];
- pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ];
- Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 );
-
- /* Set up short term AR state */
- psLPC_Q14 = &NSQ->sLPC_Q14[ NSQ_LPC_BUF_LENGTH - 1 ];
-
-#ifdef silk_short_prediction_create_arch_coef
- silk_short_prediction_create_arch_coef(a_Q12_arch, a_Q12, predictLPCOrder);
-#endif
-
- for( i = 0; i < length; i++ ) {
- /* Generate dither */
- NSQ->rand_seed = silk_RAND( NSQ->rand_seed );
-
- /* Short-term prediction */
- LPC_pred_Q10 = silk_noise_shape_quantizer_short_prediction(psLPC_Q14, a_Q12, a_Q12_arch, predictLPCOrder, arch);
-
- /* Long-term prediction */
- if( signalType == TYPE_VOICED ) {
- /* Unrolled loop */
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LTP_pred_Q13 = 2;
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ 0 ], b_Q14[ 0 ] );
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -1 ], b_Q14[ 1 ] );
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -2 ], b_Q14[ 2 ] );
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -3 ], b_Q14[ 3 ] );
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -4 ], b_Q14[ 4 ] );
- pred_lag_ptr++;
- } else {
- LTP_pred_Q13 = 0;
- }
-
- /* Noise shape feedback */
- silk_assert( ( shapingLPCOrder & 1 ) == 0 ); /* check that order is even */
- n_AR_Q12 = silk_NSQ_noise_shape_feedback_loop(psLPC_Q14, NSQ->sAR2_Q14, AR_shp_Q13, shapingLPCOrder, arch);
-
- n_AR_Q12 = silk_SMLAWB( n_AR_Q12, NSQ->sLF_AR_shp_Q14, Tilt_Q14 );
-
- n_LF_Q12 = silk_SMULWB( NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - 1 ], LF_shp_Q14 );
- n_LF_Q12 = silk_SMLAWT( n_LF_Q12, NSQ->sLF_AR_shp_Q14, LF_shp_Q14 );
-
- silk_assert( lag > 0 || signalType != TYPE_VOICED );
-
- /* Combine prediction and noise shaping signals */
- tmp1 = silk_SUB32( silk_LSHIFT32( LPC_pred_Q10, 2 ), n_AR_Q12 ); /* Q12 */
- tmp1 = silk_SUB32( tmp1, n_LF_Q12 ); /* Q12 */
- if( lag > 0 ) {
- /* Symmetric, packed FIR coefficients */
- n_LTP_Q13 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 );
- n_LTP_Q13 = silk_SMLAWT( n_LTP_Q13, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 );
- n_LTP_Q13 = silk_LSHIFT( n_LTP_Q13, 1 );
- shp_lag_ptr++;
-
- tmp2 = silk_SUB32( LTP_pred_Q13, n_LTP_Q13 ); /* Q13 */
- tmp1 = silk_ADD_LSHIFT32( tmp2, tmp1, 1 ); /* Q13 */
- tmp1 = silk_RSHIFT_ROUND( tmp1, 3 ); /* Q10 */
- } else {
- tmp1 = silk_RSHIFT_ROUND( tmp1, 2 ); /* Q10 */
- }
-
- r_Q10 = silk_SUB32( x_sc_Q10[ i ], tmp1 ); /* residual error Q10 */
-
- /* Flip sign depending on dither */
- if ( NSQ->rand_seed < 0 ) {
- r_Q10 = -r_Q10;
- }
- r_Q10 = silk_LIMIT_32( r_Q10, -(31 << 10), 30 << 10 );
-
- /* Find two quantization level candidates and measure their rate-distortion */
- q1_Q10 = silk_SUB32( r_Q10, offset_Q10 );
- q1_Q0 = silk_RSHIFT( q1_Q10, 10 );
- if( q1_Q0 > 0 ) {
- q1_Q10 = silk_SUB32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 );
- q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 );
- q2_Q10 = silk_ADD32( q1_Q10, 1024 );
- rd1_Q20 = silk_SMULBB( q1_Q10, Lambda_Q10 );
- rd2_Q20 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else if( q1_Q0 == 0 ) {
- q1_Q10 = offset_Q10;
- q2_Q10 = silk_ADD32( q1_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q20 = silk_SMULBB( q1_Q10, Lambda_Q10 );
- rd2_Q20 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else if( q1_Q0 == -1 ) {
- q2_Q10 = offset_Q10;
- q1_Q10 = silk_SUB32( q2_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q20 = silk_SMULBB( -q1_Q10, Lambda_Q10 );
- rd2_Q20 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else { /* Q1_Q0 < -1 */
- q1_Q10 = silk_ADD32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 );
- q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 );
- q2_Q10 = silk_ADD32( q1_Q10, 1024 );
- rd1_Q20 = silk_SMULBB( -q1_Q10, Lambda_Q10 );
- rd2_Q20 = silk_SMULBB( -q2_Q10, Lambda_Q10 );
- }
- rr_Q10 = silk_SUB32( r_Q10, q1_Q10 );
- rd1_Q20 = silk_SMLABB( rd1_Q20, rr_Q10, rr_Q10 );
- rr_Q10 = silk_SUB32( r_Q10, q2_Q10 );
- rd2_Q20 = silk_SMLABB( rd2_Q20, rr_Q10, rr_Q10 );
-
- if( rd2_Q20 < rd1_Q20 ) {
- q1_Q10 = q2_Q10;
- }
-
- pulses[ i ] = (opus_int8)silk_RSHIFT_ROUND( q1_Q10, 10 );
-
- /* Excitation */
- exc_Q14 = silk_LSHIFT( q1_Q10, 4 );
- if ( NSQ->rand_seed < 0 ) {
- exc_Q14 = -exc_Q14;
- }
-
- /* Add predictions */
- LPC_exc_Q14 = silk_ADD_LSHIFT32( exc_Q14, LTP_pred_Q13, 1 );
- xq_Q14 = silk_ADD_LSHIFT32( LPC_exc_Q14, LPC_pred_Q10, 4 );
-
- /* Scale XQ back to normal level before saving */
- xq[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( xq_Q14, Gain_Q10 ), 8 ) );
-
- /* Update states */
- psLPC_Q14++;
- *psLPC_Q14 = xq_Q14;
- sLF_AR_shp_Q14 = silk_SUB_LSHIFT32( xq_Q14, n_AR_Q12, 2 );
- NSQ->sLF_AR_shp_Q14 = sLF_AR_shp_Q14;
-
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx ] = silk_SUB_LSHIFT32( sLF_AR_shp_Q14, n_LF_Q12, 2 );
- sLTP_Q15[ NSQ->sLTP_buf_idx ] = silk_LSHIFT( LPC_exc_Q14, 1 );
- NSQ->sLTP_shp_buf_idx++;
- NSQ->sLTP_buf_idx++;
-
- /* Make dither dependent on quantized signal */
- NSQ->rand_seed = silk_ADD32_ovflw( NSQ->rand_seed, pulses[ i ] );
- }
-
- /* Update LPC synth buffer */
- silk_memcpy( NSQ->sLPC_Q14, &NSQ->sLPC_Q14[ length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
-}
-
-static OPUS_INLINE void silk_nsq_scale_states(
- const silk_encoder_state *psEncC, /* I Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- const opus_int32 x_Q3[], /* I input in Q3 */
- opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */
- const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */
- opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */
- opus_int subfr, /* I subframe number */
- const opus_int LTP_scale_Q14, /* I */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */
- const opus_int signal_type /* I Signal type */
-)
-{
- opus_int i, lag;
- opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q23;
-
- lag = pitchL[ subfr ];
- inv_gain_Q31 = silk_INVERSE32_varQ( silk_max( Gains_Q16[ subfr ], 1 ), 47 );
- silk_assert( inv_gain_Q31 != 0 );
-
- /* Calculate gain adjustment factor */
- if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) {
- gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 );
- } else {
- gain_adj_Q16 = (opus_int32)1 << 16;
- }
-
- /* Scale input */
- inv_gain_Q23 = silk_RSHIFT_ROUND( inv_gain_Q31, 8 );
- for( i = 0; i < psEncC->subfr_length; i++ ) {
- x_sc_Q10[ i ] = silk_SMULWW( x_Q3[ i ], inv_gain_Q23 );
- }
-
- /* Save inverse gain */
- NSQ->prev_gain_Q16 = Gains_Q16[ subfr ];
-
- /* After rewhitening the LTP state is un-scaled, so scale with inv_gain_Q16 */
- if( NSQ->rewhite_flag ) {
- if( subfr == 0 ) {
- /* Do LTP downscaling */
- inv_gain_Q31 = silk_LSHIFT( silk_SMULWB( inv_gain_Q31, LTP_scale_Q14 ), 2 );
- }
- for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) {
- silk_assert( i < MAX_FRAME_LENGTH );
- sLTP_Q15[ i ] = silk_SMULWB( inv_gain_Q31, sLTP[ i ] );
- }
- }
-
- /* Adjust for changing gain */
- if( gain_adj_Q16 != (opus_int32)1 << 16 ) {
- /* Scale long-term shaping state */
- for( i = NSQ->sLTP_shp_buf_idx - psEncC->ltp_mem_length; i < NSQ->sLTP_shp_buf_idx; i++ ) {
- NSQ->sLTP_shp_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLTP_shp_Q14[ i ] );
- }
-
- /* Scale long-term prediction state */
- if( signal_type == TYPE_VOICED && NSQ->rewhite_flag == 0 ) {
- for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) {
- sLTP_Q15[ i ] = silk_SMULWW( gain_adj_Q16, sLTP_Q15[ i ] );
- }
- }
-
- NSQ->sLF_AR_shp_Q14 = silk_SMULWW( gain_adj_Q16, NSQ->sLF_AR_shp_Q14 );
-
- /* Scale short-term prediction and shaping states */
- for( i = 0; i < NSQ_LPC_BUF_LENGTH; i++ ) {
- NSQ->sLPC_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLPC_Q14[ i ] );
- }
- for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) {
- NSQ->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sAR2_Q14[ i ] );
- }
- }
-}
diff --git a/thirdparty/opus/silk/NSQ.h b/thirdparty/opus/silk/NSQ.h
deleted file mode 100644
index 971832f660..0000000000
--- a/thirdparty/opus/silk/NSQ.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/***********************************************************************
-Copyright (c) 2014 Vidyo.
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-#ifndef SILK_NSQ_H
-#define SILK_NSQ_H
-
-#include "SigProc_FIX.h"
-
-#undef silk_short_prediction_create_arch_coef
-
-static OPUS_INLINE opus_int32 silk_noise_shape_quantizer_short_prediction_c(const opus_int32 *buf32, const opus_int16 *coef16, opus_int order)
-{
- opus_int32 out;
- silk_assert( order == 10 || order == 16 );
-
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- out = silk_RSHIFT( order, 1 );
- out = silk_SMLAWB( out, buf32[ 0 ], coef16[ 0 ] );
- out = silk_SMLAWB( out, buf32[ -1 ], coef16[ 1 ] );
- out = silk_SMLAWB( out, buf32[ -2 ], coef16[ 2 ] );
- out = silk_SMLAWB( out, buf32[ -3 ], coef16[ 3 ] );
- out = silk_SMLAWB( out, buf32[ -4 ], coef16[ 4 ] );
- out = silk_SMLAWB( out, buf32[ -5 ], coef16[ 5 ] );
- out = silk_SMLAWB( out, buf32[ -6 ], coef16[ 6 ] );
- out = silk_SMLAWB( out, buf32[ -7 ], coef16[ 7 ] );
- out = silk_SMLAWB( out, buf32[ -8 ], coef16[ 8 ] );
- out = silk_SMLAWB( out, buf32[ -9 ], coef16[ 9 ] );
-
- if( order == 16 )
- {
- out = silk_SMLAWB( out, buf32[ -10 ], coef16[ 10 ] );
- out = silk_SMLAWB( out, buf32[ -11 ], coef16[ 11 ] );
- out = silk_SMLAWB( out, buf32[ -12 ], coef16[ 12 ] );
- out = silk_SMLAWB( out, buf32[ -13 ], coef16[ 13 ] );
- out = silk_SMLAWB( out, buf32[ -14 ], coef16[ 14 ] );
- out = silk_SMLAWB( out, buf32[ -15 ], coef16[ 15 ] );
- }
- return out;
-}
-
-#define silk_noise_shape_quantizer_short_prediction(in, coef, coefRev, order, arch) ((void)arch,silk_noise_shape_quantizer_short_prediction_c(in, coef, order))
-
-static OPUS_INLINE opus_int32 silk_NSQ_noise_shape_feedback_loop_c(const opus_int32 *data0, opus_int32 *data1, const opus_int16 *coef, opus_int order)
-{
- opus_int32 out;
- opus_int32 tmp1, tmp2;
- opus_int j;
-
- tmp2 = data0[0];
- tmp1 = data1[0];
- data1[0] = tmp2;
-
- out = silk_RSHIFT(order, 1);
- out = silk_SMLAWB(out, tmp2, coef[0]);
-
- for (j = 2; j < order; j += 2) {
- tmp2 = data1[j - 1];
- data1[j - 1] = tmp1;
- out = silk_SMLAWB(out, tmp1, coef[j - 1]);
- tmp1 = data1[j + 0];
- data1[j + 0] = tmp2;
- out = silk_SMLAWB(out, tmp2, coef[j]);
- }
- data1[order - 1] = tmp1;
- out = silk_SMLAWB(out, tmp1, coef[order - 1]);
- /* Q11 -> Q12 */
- out = silk_LSHIFT32( out, 1 );
- return out;
-}
-
-#define silk_NSQ_noise_shape_feedback_loop(data0, data1, coef, order, arch) ((void)arch,silk_NSQ_noise_shape_feedback_loop_c(data0, data1, coef, order))
-
-#if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-#include "arm/NSQ_neon.h"
-#endif
-
-#endif /* SILK_NSQ_H */
diff --git a/thirdparty/opus/silk/NSQ_del_dec.c b/thirdparty/opus/silk/NSQ_del_dec.c
deleted file mode 100644
index ab6feeac98..0000000000
--- a/thirdparty/opus/silk/NSQ_del_dec.c
+++ /dev/null
@@ -1,716 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-#include "NSQ.h"
-
-
-typedef struct {
- opus_int32 sLPC_Q14[ MAX_SUB_FRAME_LENGTH + NSQ_LPC_BUF_LENGTH ];
- opus_int32 RandState[ DECISION_DELAY ];
- opus_int32 Q_Q10[ DECISION_DELAY ];
- opus_int32 Xq_Q14[ DECISION_DELAY ];
- opus_int32 Pred_Q15[ DECISION_DELAY ];
- opus_int32 Shape_Q14[ DECISION_DELAY ];
- opus_int32 sAR2_Q14[ MAX_SHAPE_LPC_ORDER ];
- opus_int32 LF_AR_Q14;
- opus_int32 Seed;
- opus_int32 SeedInit;
- opus_int32 RD_Q10;
-} NSQ_del_dec_struct;
-
-typedef struct {
- opus_int32 Q_Q10;
- opus_int32 RD_Q10;
- opus_int32 xq_Q14;
- opus_int32 LF_AR_Q14;
- opus_int32 sLTP_shp_Q14;
- opus_int32 LPC_exc_Q14;
-} NSQ_sample_struct;
-
-typedef NSQ_sample_struct NSQ_sample_pair[ 2 ];
-
-#if defined(MIPSr1_ASM)
-#include "mips/NSQ_del_dec_mipsr1.h"
-#endif
-static OPUS_INLINE void silk_nsq_del_dec_scale_states(
- const silk_encoder_state *psEncC, /* I Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- const opus_int32 x_Q3[], /* I Input in Q3 */
- opus_int32 x_sc_Q10[], /* O Input scaled with 1/Gain in Q10 */
- const opus_int16 sLTP[], /* I Re-whitened LTP state in Q0 */
- opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */
- opus_int subfr, /* I Subframe number */
- opus_int nStatesDelayedDecision, /* I Number of del dec states */
- const opus_int LTP_scale_Q14, /* I LTP state scaling */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */
- const opus_int signal_type, /* I Signal type */
- const opus_int decisionDelay /* I Decision delay */
-);
-
-/******************************************/
-/* Noise shape quantizer for one subframe */
-/******************************************/
-static OPUS_INLINE void silk_noise_shape_quantizer_del_dec(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP filter state */
- opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int Lambda_Q10, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int subfr, /* I Subframe number */
- opus_int shapingLPCOrder, /* I Shaping LPC filter order */
- opus_int predictLPCOrder, /* I Prediction filter order */
- opus_int warping_Q16, /* I */
- opus_int nStatesDelayedDecision, /* I Number of states in decision tree */
- opus_int *smpl_buf_idx, /* I Index to newest samples in buffers */
- opus_int decisionDelay, /* I */
- int arch /* I */
-);
-
-void silk_NSQ_del_dec_c(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-)
-{
- opus_int i, k, lag, start_idx, LSF_interpolation_flag, Winner_ind, subfr;
- opus_int last_smple_idx, smpl_buf_idx, decisionDelay;
- const opus_int16 *A_Q12, *B_Q14, *AR_shp_Q13;
- opus_int16 *pxq;
- VARDECL( opus_int32, sLTP_Q15 );
- VARDECL( opus_int16, sLTP );
- opus_int32 HarmShapeFIRPacked_Q14;
- opus_int offset_Q10;
- opus_int32 RDmin_Q10, Gain_Q10;
- VARDECL( opus_int32, x_sc_Q10 );
- VARDECL( opus_int32, delayedGain_Q10 );
- VARDECL( NSQ_del_dec_struct, psDelDec );
- NSQ_del_dec_struct *psDD;
- SAVE_STACK;
-
- /* Set unvoiced lag to the previous one, overwrite later for voiced */
- lag = NSQ->lagPrev;
-
- silk_assert( NSQ->prev_gain_Q16 != 0 );
-
- /* Initialize delayed decision states */
- ALLOC( psDelDec, psEncC->nStatesDelayedDecision, NSQ_del_dec_struct );
- silk_memset( psDelDec, 0, psEncC->nStatesDelayedDecision * sizeof( NSQ_del_dec_struct ) );
- for( k = 0; k < psEncC->nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
- psDD->Seed = ( k + psIndices->Seed ) & 3;
- psDD->SeedInit = psDD->Seed;
- psDD->RD_Q10 = 0;
- psDD->LF_AR_Q14 = NSQ->sLF_AR_shp_Q14;
- psDD->Shape_Q14[ 0 ] = NSQ->sLTP_shp_Q14[ psEncC->ltp_mem_length - 1 ];
- silk_memcpy( psDD->sLPC_Q14, NSQ->sLPC_Q14, NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
- silk_memcpy( psDD->sAR2_Q14, NSQ->sAR2_Q14, sizeof( NSQ->sAR2_Q14 ) );
- }
-
- offset_Q10 = silk_Quantization_Offsets_Q10[ psIndices->signalType >> 1 ][ psIndices->quantOffsetType ];
- smpl_buf_idx = 0; /* index of oldest samples */
-
- decisionDelay = silk_min_int( DECISION_DELAY, psEncC->subfr_length );
-
- /* For voiced frames limit the decision delay to lower than the pitch lag */
- if( psIndices->signalType == TYPE_VOICED ) {
- for( k = 0; k < psEncC->nb_subfr; k++ ) {
- decisionDelay = silk_min_int( decisionDelay, pitchL[ k ] - LTP_ORDER / 2 - 1 );
- }
- } else {
- if( lag > 0 ) {
- decisionDelay = silk_min_int( decisionDelay, lag - LTP_ORDER / 2 - 1 );
- }
- }
-
- if( psIndices->NLSFInterpCoef_Q2 == 4 ) {
- LSF_interpolation_flag = 0;
- } else {
- LSF_interpolation_flag = 1;
- }
-
- ALLOC( sLTP_Q15,
- psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 );
- ALLOC( sLTP, psEncC->ltp_mem_length + psEncC->frame_length, opus_int16 );
- ALLOC( x_sc_Q10, psEncC->subfr_length, opus_int32 );
- ALLOC( delayedGain_Q10, DECISION_DELAY, opus_int32 );
- /* Set up pointers to start of sub frame */
- pxq = &NSQ->xq[ psEncC->ltp_mem_length ];
- NSQ->sLTP_shp_buf_idx = psEncC->ltp_mem_length;
- NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
- subfr = 0;
- for( k = 0; k < psEncC->nb_subfr; k++ ) {
- A_Q12 = &PredCoef_Q12[ ( ( k >> 1 ) | ( 1 - LSF_interpolation_flag ) ) * MAX_LPC_ORDER ];
- B_Q14 = &LTPCoef_Q14[ k * LTP_ORDER ];
- AR_shp_Q13 = &AR2_Q13[ k * MAX_SHAPE_LPC_ORDER ];
-
- /* Noise shape parameters */
- silk_assert( HarmShapeGain_Q14[ k ] >= 0 );
- HarmShapeFIRPacked_Q14 = silk_RSHIFT( HarmShapeGain_Q14[ k ], 2 );
- HarmShapeFIRPacked_Q14 |= silk_LSHIFT( (opus_int32)silk_RSHIFT( HarmShapeGain_Q14[ k ], 1 ), 16 );
-
- NSQ->rewhite_flag = 0;
- if( psIndices->signalType == TYPE_VOICED ) {
- /* Voiced */
- lag = pitchL[ k ];
-
- /* Re-whitening */
- if( ( k & ( 3 - silk_LSHIFT( LSF_interpolation_flag, 1 ) ) ) == 0 ) {
- if( k == 2 ) {
- /* RESET DELAYED DECISIONS */
- /* Find winner */
- RDmin_Q10 = psDelDec[ 0 ].RD_Q10;
- Winner_ind = 0;
- for( i = 1; i < psEncC->nStatesDelayedDecision; i++ ) {
- if( psDelDec[ i ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psDelDec[ i ].RD_Q10;
- Winner_ind = i;
- }
- }
- for( i = 0; i < psEncC->nStatesDelayedDecision; i++ ) {
- if( i != Winner_ind ) {
- psDelDec[ i ].RD_Q10 += ( silk_int32_MAX >> 4 );
- silk_assert( psDelDec[ i ].RD_Q10 >= 0 );
- }
- }
-
- /* Copy final part of signals from winner state to output and long-term filter states */
- psDD = &psDelDec[ Winner_ind ];
- last_smple_idx = smpl_buf_idx + decisionDelay;
- for( i = 0; i < decisionDelay; i++ ) {
- last_smple_idx = ( last_smple_idx - 1 ) & DECISION_DELAY_MASK;
- pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 );
- pxq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND(
- silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], Gains_Q16[ 1 ] ), 14 ) );
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay + i ] = psDD->Shape_Q14[ last_smple_idx ];
- }
-
- subfr = 0;
- }
-
- /* Rewhiten with new A coefs */
- start_idx = psEncC->ltp_mem_length - lag - psEncC->predictLPCOrder - LTP_ORDER / 2;
- silk_assert( start_idx > 0 );
-
- silk_LPC_analysis_filter( &sLTP[ start_idx ], &NSQ->xq[ start_idx + k * psEncC->subfr_length ],
- A_Q12, psEncC->ltp_mem_length - start_idx, psEncC->predictLPCOrder, psEncC->arch );
-
- NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
- NSQ->rewhite_flag = 1;
- }
- }
-
- silk_nsq_del_dec_scale_states( psEncC, NSQ, psDelDec, x_Q3, x_sc_Q10, sLTP, sLTP_Q15, k,
- psEncC->nStatesDelayedDecision, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType, decisionDelay );
-
- silk_noise_shape_quantizer_del_dec( NSQ, psDelDec, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15,
- delayedGain_Q10, A_Q12, B_Q14, AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ],
- Gains_Q16[ k ], Lambda_Q10, offset_Q10, psEncC->subfr_length, subfr++, psEncC->shapingLPCOrder,
- psEncC->predictLPCOrder, psEncC->warping_Q16, psEncC->nStatesDelayedDecision, &smpl_buf_idx, decisionDelay, psEncC->arch );
-
- x_Q3 += psEncC->subfr_length;
- pulses += psEncC->subfr_length;
- pxq += psEncC->subfr_length;
- }
-
- /* Find winner */
- RDmin_Q10 = psDelDec[ 0 ].RD_Q10;
- Winner_ind = 0;
- for( k = 1; k < psEncC->nStatesDelayedDecision; k++ ) {
- if( psDelDec[ k ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psDelDec[ k ].RD_Q10;
- Winner_ind = k;
- }
- }
-
- /* Copy final part of signals from winner state to output and long-term filter states */
- psDD = &psDelDec[ Winner_ind ];
- psIndices->Seed = psDD->SeedInit;
- last_smple_idx = smpl_buf_idx + decisionDelay;
- Gain_Q10 = silk_RSHIFT32( Gains_Q16[ psEncC->nb_subfr - 1 ], 6 );
- for( i = 0; i < decisionDelay; i++ ) {
- last_smple_idx = ( last_smple_idx - 1 ) & DECISION_DELAY_MASK;
- pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 );
- pxq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND(
- silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], Gain_Q10 ), 8 ) );
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay + i ] = psDD->Shape_Q14[ last_smple_idx ];
- }
- silk_memcpy( NSQ->sLPC_Q14, &psDD->sLPC_Q14[ psEncC->subfr_length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
- silk_memcpy( NSQ->sAR2_Q14, psDD->sAR2_Q14, sizeof( psDD->sAR2_Q14 ) );
-
- /* Update states */
- NSQ->sLF_AR_shp_Q14 = psDD->LF_AR_Q14;
- NSQ->lagPrev = pitchL[ psEncC->nb_subfr - 1 ];
-
- /* Save quantized speech signal */
- /* DEBUG_STORE_DATA( enc.pcm, &NSQ->xq[psEncC->ltp_mem_length], psEncC->frame_length * sizeof( opus_int16 ) ) */
- silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) );
- silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) );
- RESTORE_STACK;
-}
-
-/******************************************/
-/* Noise shape quantizer for one subframe */
-/******************************************/
-#ifndef OVERRIDE_silk_noise_shape_quantizer_del_dec
-static OPUS_INLINE void silk_noise_shape_quantizer_del_dec(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP filter state */
- opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int Lambda_Q10, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int subfr, /* I Subframe number */
- opus_int shapingLPCOrder, /* I Shaping LPC filter order */
- opus_int predictLPCOrder, /* I Prediction filter order */
- opus_int warping_Q16, /* I */
- opus_int nStatesDelayedDecision, /* I Number of states in decision tree */
- opus_int *smpl_buf_idx, /* I Index to newest samples in buffers */
- opus_int decisionDelay, /* I */
- int arch /* I */
-)
-{
- opus_int i, j, k, Winner_ind, RDmin_ind, RDmax_ind, last_smple_idx;
- opus_int32 Winner_rand_state;
- opus_int32 LTP_pred_Q14, LPC_pred_Q14, n_AR_Q14, n_LTP_Q14;
- opus_int32 n_LF_Q14, r_Q10, rr_Q10, rd1_Q10, rd2_Q10, RDmin_Q10, RDmax_Q10;
- opus_int32 q1_Q0, q1_Q10, q2_Q10, exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10;
- opus_int32 tmp1, tmp2, sLF_AR_shp_Q14;
- opus_int32 *pred_lag_ptr, *shp_lag_ptr, *psLPC_Q14;
-#ifdef silk_short_prediction_create_arch_coef
- opus_int32 a_Q12_arch[MAX_LPC_ORDER];
-#endif
-
- VARDECL( NSQ_sample_pair, psSampleState );
- NSQ_del_dec_struct *psDD;
- NSQ_sample_struct *psSS;
- SAVE_STACK;
-
- silk_assert( nStatesDelayedDecision > 0 );
- ALLOC( psSampleState, nStatesDelayedDecision, NSQ_sample_pair );
-
- shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ];
- pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ];
- Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 );
-
-#ifdef silk_short_prediction_create_arch_coef
- silk_short_prediction_create_arch_coef(a_Q12_arch, a_Q12, predictLPCOrder);
-#endif
-
- for( i = 0; i < length; i++ ) {
- /* Perform common calculations used in all states */
-
- /* Long-term prediction */
- if( signalType == TYPE_VOICED ) {
- /* Unrolled loop */
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LTP_pred_Q14 = 2;
- LTP_pred_Q14 = silk_SMLAWB( LTP_pred_Q14, pred_lag_ptr[ 0 ], b_Q14[ 0 ] );
- LTP_pred_Q14 = silk_SMLAWB( LTP_pred_Q14, pred_lag_ptr[ -1 ], b_Q14[ 1 ] );
- LTP_pred_Q14 = silk_SMLAWB( LTP_pred_Q14, pred_lag_ptr[ -2 ], b_Q14[ 2 ] );
- LTP_pred_Q14 = silk_SMLAWB( LTP_pred_Q14, pred_lag_ptr[ -3 ], b_Q14[ 3 ] );
- LTP_pred_Q14 = silk_SMLAWB( LTP_pred_Q14, pred_lag_ptr[ -4 ], b_Q14[ 4 ] );
- LTP_pred_Q14 = silk_LSHIFT( LTP_pred_Q14, 1 ); /* Q13 -> Q14 */
- pred_lag_ptr++;
- } else {
- LTP_pred_Q14 = 0;
- }
-
- /* Long-term shaping */
- if( lag > 0 ) {
- /* Symmetric, packed FIR coefficients */
- n_LTP_Q14 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 );
- n_LTP_Q14 = silk_SMLAWT( n_LTP_Q14, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 );
- n_LTP_Q14 = silk_SUB_LSHIFT32( LTP_pred_Q14, n_LTP_Q14, 2 ); /* Q12 -> Q14 */
- shp_lag_ptr++;
- } else {
- n_LTP_Q14 = 0;
- }
-
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- /* Delayed decision state */
- psDD = &psDelDec[ k ];
-
- /* Sample state */
- psSS = psSampleState[ k ];
-
- /* Generate dither */
- psDD->Seed = silk_RAND( psDD->Seed );
-
- /* Pointer used in short term prediction and shaping */
- psLPC_Q14 = &psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH - 1 + i ];
- /* Short-term prediction */
- LPC_pred_Q14 = silk_noise_shape_quantizer_short_prediction(psLPC_Q14, a_Q12, a_Q12_arch, predictLPCOrder, arch);
- LPC_pred_Q14 = silk_LSHIFT( LPC_pred_Q14, 4 ); /* Q10 -> Q14 */
-
- /* Noise shape feedback */
- silk_assert( ( shapingLPCOrder & 1 ) == 0 ); /* check that order is even */
- /* Output of lowpass section */
- tmp2 = silk_SMLAWB( psLPC_Q14[ 0 ], psDD->sAR2_Q14[ 0 ], warping_Q16 );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], psDD->sAR2_Q14[ 1 ] - tmp2, warping_Q16 );
- psDD->sAR2_Q14[ 0 ] = tmp2;
- n_AR_Q14 = silk_RSHIFT( shapingLPCOrder, 1 );
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ 0 ] );
- /* Loop over allpass sections */
- for( j = 2; j < shapingLPCOrder; j += 2 ) {
- /* Output of allpass section */
- tmp2 = silk_SMLAWB( psDD->sAR2_Q14[ j - 1 ], psDD->sAR2_Q14[ j + 0 ] - tmp1, warping_Q16 );
- psDD->sAR2_Q14[ j - 1 ] = tmp1;
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ j - 1 ] );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ j + 0 ], psDD->sAR2_Q14[ j + 1 ] - tmp2, warping_Q16 );
- psDD->sAR2_Q14[ j + 0 ] = tmp2;
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ j ] );
- }
- psDD->sAR2_Q14[ shapingLPCOrder - 1 ] = tmp1;
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ shapingLPCOrder - 1 ] );
-
- n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 1 ); /* Q11 -> Q12 */
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, psDD->LF_AR_Q14, Tilt_Q14 ); /* Q12 */
- n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 2 ); /* Q12 -> Q14 */
-
- n_LF_Q14 = silk_SMULWB( psDD->Shape_Q14[ *smpl_buf_idx ], LF_shp_Q14 ); /* Q12 */
- n_LF_Q14 = silk_SMLAWT( n_LF_Q14, psDD->LF_AR_Q14, LF_shp_Q14 ); /* Q12 */
- n_LF_Q14 = silk_LSHIFT( n_LF_Q14, 2 ); /* Q12 -> Q14 */
-
- /* Input minus prediction plus noise feedback */
- /* r = x[ i ] - LTP_pred - LPC_pred + n_AR + n_Tilt + n_LF + n_LTP */
- tmp1 = silk_ADD32( n_AR_Q14, n_LF_Q14 ); /* Q14 */
- tmp2 = silk_ADD32( n_LTP_Q14, LPC_pred_Q14 ); /* Q13 */
- tmp1 = silk_SUB32( tmp2, tmp1 ); /* Q13 */
- tmp1 = silk_RSHIFT_ROUND( tmp1, 4 ); /* Q10 */
-
- r_Q10 = silk_SUB32( x_Q10[ i ], tmp1 ); /* residual error Q10 */
-
- /* Flip sign depending on dither */
- if ( psDD->Seed < 0 ) {
- r_Q10 = -r_Q10;
- }
- r_Q10 = silk_LIMIT_32( r_Q10, -(31 << 10), 30 << 10 );
-
- /* Find two quantization level candidates and measure their rate-distortion */
- q1_Q10 = silk_SUB32( r_Q10, offset_Q10 );
- q1_Q0 = silk_RSHIFT( q1_Q10, 10 );
- if( q1_Q0 > 0 ) {
- q1_Q10 = silk_SUB32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 );
- q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 );
- q2_Q10 = silk_ADD32( q1_Q10, 1024 );
- rd1_Q10 = silk_SMULBB( q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else if( q1_Q0 == 0 ) {
- q1_Q10 = offset_Q10;
- q2_Q10 = silk_ADD32( q1_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q10 = silk_SMULBB( q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else if( q1_Q0 == -1 ) {
- q2_Q10 = offset_Q10;
- q1_Q10 = silk_SUB32( q2_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q10 = silk_SMULBB( -q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else { /* q1_Q0 < -1 */
- q1_Q10 = silk_ADD32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 );
- q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 );
- q2_Q10 = silk_ADD32( q1_Q10, 1024 );
- rd1_Q10 = silk_SMULBB( -q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( -q2_Q10, Lambda_Q10 );
- }
- rr_Q10 = silk_SUB32( r_Q10, q1_Q10 );
- rd1_Q10 = silk_RSHIFT( silk_SMLABB( rd1_Q10, rr_Q10, rr_Q10 ), 10 );
- rr_Q10 = silk_SUB32( r_Q10, q2_Q10 );
- rd2_Q10 = silk_RSHIFT( silk_SMLABB( rd2_Q10, rr_Q10, rr_Q10 ), 10 );
-
- if( rd1_Q10 < rd2_Q10 ) {
- psSS[ 0 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd1_Q10 );
- psSS[ 1 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd2_Q10 );
- psSS[ 0 ].Q_Q10 = q1_Q10;
- psSS[ 1 ].Q_Q10 = q2_Q10;
- } else {
- psSS[ 0 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd2_Q10 );
- psSS[ 1 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd1_Q10 );
- psSS[ 0 ].Q_Q10 = q2_Q10;
- psSS[ 1 ].Q_Q10 = q1_Q10;
- }
-
- /* Update states for best quantization */
-
- /* Quantized excitation */
- exc_Q14 = silk_LSHIFT32( psSS[ 0 ].Q_Q10, 4 );
- if ( psDD->Seed < 0 ) {
- exc_Q14 = -exc_Q14;
- }
-
- /* Add predictions */
- LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
- xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 );
-
- /* Update states */
- sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 );
- psSS[ 0 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 );
- psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14;
- psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14;
- psSS[ 0 ].xq_Q14 = xq_Q14;
-
- /* Update states for second best quantization */
-
- /* Quantized excitation */
- exc_Q14 = silk_LSHIFT32( psSS[ 1 ].Q_Q10, 4 );
- if ( psDD->Seed < 0 ) {
- exc_Q14 = -exc_Q14;
- }
-
-
- /* Add predictions */
- LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
- xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 );
-
- /* Update states */
- sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 );
- psSS[ 1 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 );
- psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14;
- psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14;
- psSS[ 1 ].xq_Q14 = xq_Q14;
- }
-
- *smpl_buf_idx = ( *smpl_buf_idx - 1 ) & DECISION_DELAY_MASK; /* Index to newest samples */
- last_smple_idx = ( *smpl_buf_idx + decisionDelay ) & DECISION_DELAY_MASK; /* Index to decisionDelay old samples */
-
- /* Find winner */
- RDmin_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10;
- Winner_ind = 0;
- for( k = 1; k < nStatesDelayedDecision; k++ ) {
- if( psSampleState[ k ][ 0 ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psSampleState[ k ][ 0 ].RD_Q10;
- Winner_ind = k;
- }
- }
-
- /* Increase RD values of expired states */
- Winner_rand_state = psDelDec[ Winner_ind ].RandState[ last_smple_idx ];
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- if( psDelDec[ k ].RandState[ last_smple_idx ] != Winner_rand_state ) {
- psSampleState[ k ][ 0 ].RD_Q10 = silk_ADD32( psSampleState[ k ][ 0 ].RD_Q10, silk_int32_MAX >> 4 );
- psSampleState[ k ][ 1 ].RD_Q10 = silk_ADD32( psSampleState[ k ][ 1 ].RD_Q10, silk_int32_MAX >> 4 );
- silk_assert( psSampleState[ k ][ 0 ].RD_Q10 >= 0 );
- }
- }
-
- /* Find worst in first set and best in second set */
- RDmax_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10;
- RDmin_Q10 = psSampleState[ 0 ][ 1 ].RD_Q10;
- RDmax_ind = 0;
- RDmin_ind = 0;
- for( k = 1; k < nStatesDelayedDecision; k++ ) {
- /* find worst in first set */
- if( psSampleState[ k ][ 0 ].RD_Q10 > RDmax_Q10 ) {
- RDmax_Q10 = psSampleState[ k ][ 0 ].RD_Q10;
- RDmax_ind = k;
- }
- /* find best in second set */
- if( psSampleState[ k ][ 1 ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psSampleState[ k ][ 1 ].RD_Q10;
- RDmin_ind = k;
- }
- }
-
- /* Replace a state if best from second set outperforms worst in first set */
- if( RDmin_Q10 < RDmax_Q10 ) {
- silk_memcpy( ( (opus_int32 *)&psDelDec[ RDmax_ind ] ) + i,
- ( (opus_int32 *)&psDelDec[ RDmin_ind ] ) + i, sizeof( NSQ_del_dec_struct ) - i * sizeof( opus_int32) );
- silk_memcpy( &psSampleState[ RDmax_ind ][ 0 ], &psSampleState[ RDmin_ind ][ 1 ], sizeof( NSQ_sample_struct ) );
- }
-
- /* Write samples from winner to output and long-term filter states */
- psDD = &psDelDec[ Winner_ind ];
- if( subfr > 0 || i >= decisionDelay ) {
- pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 );
- xq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND(
- silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], delayedGain_Q10[ last_smple_idx ] ), 8 ) );
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay ] = psDD->Shape_Q14[ last_smple_idx ];
- sLTP_Q15[ NSQ->sLTP_buf_idx - decisionDelay ] = psDD->Pred_Q15[ last_smple_idx ];
- }
- NSQ->sLTP_shp_buf_idx++;
- NSQ->sLTP_buf_idx++;
-
- /* Update states */
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
- psSS = &psSampleState[ k ][ 0 ];
- psDD->LF_AR_Q14 = psSS->LF_AR_Q14;
- psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH + i ] = psSS->xq_Q14;
- psDD->Xq_Q14[ *smpl_buf_idx ] = psSS->xq_Q14;
- psDD->Q_Q10[ *smpl_buf_idx ] = psSS->Q_Q10;
- psDD->Pred_Q15[ *smpl_buf_idx ] = silk_LSHIFT32( psSS->LPC_exc_Q14, 1 );
- psDD->Shape_Q14[ *smpl_buf_idx ] = psSS->sLTP_shp_Q14;
- psDD->Seed = silk_ADD32_ovflw( psDD->Seed, silk_RSHIFT_ROUND( psSS->Q_Q10, 10 ) );
- psDD->RandState[ *smpl_buf_idx ] = psDD->Seed;
- psDD->RD_Q10 = psSS->RD_Q10;
- }
- delayedGain_Q10[ *smpl_buf_idx ] = Gain_Q10;
- }
- /* Update LPC states */
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
- silk_memcpy( psDD->sLPC_Q14, &psDD->sLPC_Q14[ length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
- }
- RESTORE_STACK;
-}
-#endif /* OVERRIDE_silk_noise_shape_quantizer_del_dec */
-
-static OPUS_INLINE void silk_nsq_del_dec_scale_states(
- const silk_encoder_state *psEncC, /* I Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- const opus_int32 x_Q3[], /* I Input in Q3 */
- opus_int32 x_sc_Q10[], /* O Input scaled with 1/Gain in Q10 */
- const opus_int16 sLTP[], /* I Re-whitened LTP state in Q0 */
- opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */
- opus_int subfr, /* I Subframe number */
- opus_int nStatesDelayedDecision, /* I Number of del dec states */
- const opus_int LTP_scale_Q14, /* I LTP state scaling */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */
- const opus_int signal_type, /* I Signal type */
- const opus_int decisionDelay /* I Decision delay */
-)
-{
- opus_int i, k, lag;
- opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q23;
- NSQ_del_dec_struct *psDD;
-
- lag = pitchL[ subfr ];
- inv_gain_Q31 = silk_INVERSE32_varQ( silk_max( Gains_Q16[ subfr ], 1 ), 47 );
- silk_assert( inv_gain_Q31 != 0 );
-
- /* Calculate gain adjustment factor */
- if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) {
- gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 );
- } else {
- gain_adj_Q16 = (opus_int32)1 << 16;
- }
-
- /* Scale input */
- inv_gain_Q23 = silk_RSHIFT_ROUND( inv_gain_Q31, 8 );
- for( i = 0; i < psEncC->subfr_length; i++ ) {
- x_sc_Q10[ i ] = silk_SMULWW( x_Q3[ i ], inv_gain_Q23 );
- }
-
- /* Save inverse gain */
- NSQ->prev_gain_Q16 = Gains_Q16[ subfr ];
-
- /* After rewhitening the LTP state is un-scaled, so scale with inv_gain_Q16 */
- if( NSQ->rewhite_flag ) {
- if( subfr == 0 ) {
- /* Do LTP downscaling */
- inv_gain_Q31 = silk_LSHIFT( silk_SMULWB( inv_gain_Q31, LTP_scale_Q14 ), 2 );
- }
- for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) {
- silk_assert( i < MAX_FRAME_LENGTH );
- sLTP_Q15[ i ] = silk_SMULWB( inv_gain_Q31, sLTP[ i ] );
- }
- }
-
- /* Adjust for changing gain */
- if( gain_adj_Q16 != (opus_int32)1 << 16 ) {
- /* Scale long-term shaping state */
- for( i = NSQ->sLTP_shp_buf_idx - psEncC->ltp_mem_length; i < NSQ->sLTP_shp_buf_idx; i++ ) {
- NSQ->sLTP_shp_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLTP_shp_Q14[ i ] );
- }
-
- /* Scale long-term prediction state */
- if( signal_type == TYPE_VOICED && NSQ->rewhite_flag == 0 ) {
- for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx - decisionDelay; i++ ) {
- sLTP_Q15[ i ] = silk_SMULWW( gain_adj_Q16, sLTP_Q15[ i ] );
- }
- }
-
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
-
- /* Scale scalar states */
- psDD->LF_AR_Q14 = silk_SMULWW( gain_adj_Q16, psDD->LF_AR_Q14 );
-
- /* Scale short-term prediction and shaping states */
- for( i = 0; i < NSQ_LPC_BUF_LENGTH; i++ ) {
- psDD->sLPC_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->sLPC_Q14[ i ] );
- }
- for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) {
- psDD->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->sAR2_Q14[ i ] );
- }
- for( i = 0; i < DECISION_DELAY; i++ ) {
- psDD->Pred_Q15[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Pred_Q15[ i ] );
- psDD->Shape_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Shape_Q14[ i ] );
- }
- }
- }
-}
diff --git a/thirdparty/opus/silk/PLC.c b/thirdparty/opus/silk/PLC.c
deleted file mode 100644
index fb6ea887b7..0000000000
--- a/thirdparty/opus/silk/PLC.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-#include "PLC.h"
-
-#define NB_ATT 2
-static const opus_int16 HARM_ATT_Q15[NB_ATT] = { 32440, 31130 }; /* 0.99, 0.95 */
-static const opus_int16 PLC_RAND_ATTENUATE_V_Q15[NB_ATT] = { 31130, 26214 }; /* 0.95, 0.8 */
-static const opus_int16 PLC_RAND_ATTENUATE_UV_Q15[NB_ATT] = { 32440, 29491 }; /* 0.99, 0.9 */
-
-static OPUS_INLINE void silk_PLC_update(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl /* I/O Decoder control */
-);
-
-static OPUS_INLINE void silk_PLC_conceal(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl, /* I/O Decoder control */
- opus_int16 frame[], /* O LPC residual signal */
- int arch /* I Run-time architecture */
-);
-
-
-void silk_PLC_Reset(
- silk_decoder_state *psDec /* I/O Decoder state */
-)
-{
- psDec->sPLC.pitchL_Q8 = silk_LSHIFT( psDec->frame_length, 8 - 1 );
- psDec->sPLC.prevGain_Q16[ 0 ] = SILK_FIX_CONST( 1, 16 );
- psDec->sPLC.prevGain_Q16[ 1 ] = SILK_FIX_CONST( 1, 16 );
- psDec->sPLC.subfr_length = 20;
- psDec->sPLC.nb_subfr = 2;
-}
-
-void silk_PLC(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl, /* I/O Decoder control */
- opus_int16 frame[], /* I/O signal */
- opus_int lost, /* I Loss flag */
- int arch /* I Run-time architecture */
-)
-{
- /* PLC control function */
- if( psDec->fs_kHz != psDec->sPLC.fs_kHz ) {
- silk_PLC_Reset( psDec );
- psDec->sPLC.fs_kHz = psDec->fs_kHz;
- }
-
- if( lost ) {
- /****************************/
- /* Generate Signal */
- /****************************/
- silk_PLC_conceal( psDec, psDecCtrl, frame, arch );
-
- psDec->lossCnt++;
- } else {
- /****************************/
- /* Update state */
- /****************************/
- silk_PLC_update( psDec, psDecCtrl );
- }
-}
-
-/**************************************************/
-/* Update state of PLC */
-/**************************************************/
-static OPUS_INLINE void silk_PLC_update(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl /* I/O Decoder control */
-)
-{
- opus_int32 LTP_Gain_Q14, temp_LTP_Gain_Q14;
- opus_int i, j;
- silk_PLC_struct *psPLC;
-
- psPLC = &psDec->sPLC;
-
- /* Update parameters used in case of packet loss */
- psDec->prevSignalType = psDec->indices.signalType;
- LTP_Gain_Q14 = 0;
- if( psDec->indices.signalType == TYPE_VOICED ) {
- /* Find the parameters for the last subframe which contains a pitch pulse */
- for( j = 0; j * psDec->subfr_length < psDecCtrl->pitchL[ psDec->nb_subfr - 1 ]; j++ ) {
- if( j == psDec->nb_subfr ) {
- break;
- }
- temp_LTP_Gain_Q14 = 0;
- for( i = 0; i < LTP_ORDER; i++ ) {
- temp_LTP_Gain_Q14 += psDecCtrl->LTPCoef_Q14[ ( psDec->nb_subfr - 1 - j ) * LTP_ORDER + i ];
- }
- if( temp_LTP_Gain_Q14 > LTP_Gain_Q14 ) {
- LTP_Gain_Q14 = temp_LTP_Gain_Q14;
- silk_memcpy( psPLC->LTPCoef_Q14,
- &psDecCtrl->LTPCoef_Q14[ silk_SMULBB( psDec->nb_subfr - 1 - j, LTP_ORDER ) ],
- LTP_ORDER * sizeof( opus_int16 ) );
-
- psPLC->pitchL_Q8 = silk_LSHIFT( psDecCtrl->pitchL[ psDec->nb_subfr - 1 - j ], 8 );
- }
- }
-
- silk_memset( psPLC->LTPCoef_Q14, 0, LTP_ORDER * sizeof( opus_int16 ) );
- psPLC->LTPCoef_Q14[ LTP_ORDER / 2 ] = LTP_Gain_Q14;
-
- /* Limit LT coefs */
- if( LTP_Gain_Q14 < V_PITCH_GAIN_START_MIN_Q14 ) {
- opus_int scale_Q10;
- opus_int32 tmp;
-
- tmp = silk_LSHIFT( V_PITCH_GAIN_START_MIN_Q14, 10 );
- scale_Q10 = silk_DIV32( tmp, silk_max( LTP_Gain_Q14, 1 ) );
- for( i = 0; i < LTP_ORDER; i++ ) {
- psPLC->LTPCoef_Q14[ i ] = silk_RSHIFT( silk_SMULBB( psPLC->LTPCoef_Q14[ i ], scale_Q10 ), 10 );
- }
- } else if( LTP_Gain_Q14 > V_PITCH_GAIN_START_MAX_Q14 ) {
- opus_int scale_Q14;
- opus_int32 tmp;
-
- tmp = silk_LSHIFT( V_PITCH_GAIN_START_MAX_Q14, 14 );
- scale_Q14 = silk_DIV32( tmp, silk_max( LTP_Gain_Q14, 1 ) );
- for( i = 0; i < LTP_ORDER; i++ ) {
- psPLC->LTPCoef_Q14[ i ] = silk_RSHIFT( silk_SMULBB( psPLC->LTPCoef_Q14[ i ], scale_Q14 ), 14 );
- }
- }
- } else {
- psPLC->pitchL_Q8 = silk_LSHIFT( silk_SMULBB( psDec->fs_kHz, 18 ), 8 );
- silk_memset( psPLC->LTPCoef_Q14, 0, LTP_ORDER * sizeof( opus_int16 ));
- }
-
- /* Save LPC coeficients */
- silk_memcpy( psPLC->prevLPC_Q12, psDecCtrl->PredCoef_Q12[ 1 ], psDec->LPC_order * sizeof( opus_int16 ) );
- psPLC->prevLTP_scale_Q14 = psDecCtrl->LTP_scale_Q14;
-
- /* Save last two gains */
- silk_memcpy( psPLC->prevGain_Q16, &psDecCtrl->Gains_Q16[ psDec->nb_subfr - 2 ], 2 * sizeof( opus_int32 ) );
-
- psPLC->subfr_length = psDec->subfr_length;
- psPLC->nb_subfr = psDec->nb_subfr;
-}
-
-static OPUS_INLINE void silk_PLC_energy(opus_int32 *energy1, opus_int *shift1, opus_int32 *energy2, opus_int *shift2,
- const opus_int32 *exc_Q14, const opus_int32 *prevGain_Q10, int subfr_length, int nb_subfr)
-{
- int i, k;
- VARDECL( opus_int16, exc_buf );
- opus_int16 *exc_buf_ptr;
- SAVE_STACK;
- ALLOC( exc_buf, 2*subfr_length, opus_int16 );
- /* Find random noise component */
- /* Scale previous excitation signal */
- exc_buf_ptr = exc_buf;
- for( k = 0; k < 2; k++ ) {
- for( i = 0; i < subfr_length; i++ ) {
- exc_buf_ptr[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT(
- silk_SMULWW( exc_Q14[ i + ( k + nb_subfr - 2 ) * subfr_length ], prevGain_Q10[ k ] ), 8 ) );
- }
- exc_buf_ptr += subfr_length;
- }
- /* Find the subframe with lowest energy of the last two and use that as random noise generator */
- silk_sum_sqr_shift( energy1, shift1, exc_buf, subfr_length );
- silk_sum_sqr_shift( energy2, shift2, &exc_buf[ subfr_length ], subfr_length );
- RESTORE_STACK;
-}
-
-static OPUS_INLINE void silk_PLC_conceal(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl, /* I/O Decoder control */
- opus_int16 frame[], /* O LPC residual signal */
- int arch /* I Run-time architecture */
-)
-{
- opus_int i, j, k;
- opus_int lag, idx, sLTP_buf_idx, shift1, shift2;
- opus_int32 rand_seed, harm_Gain_Q15, rand_Gain_Q15, inv_gain_Q30;
- opus_int32 energy1, energy2, *rand_ptr, *pred_lag_ptr;
- opus_int32 LPC_pred_Q10, LTP_pred_Q12;
- opus_int16 rand_scale_Q14;
- opus_int16 *B_Q14;
- opus_int32 *sLPC_Q14_ptr;
- opus_int16 A_Q12[ MAX_LPC_ORDER ];
-#ifdef SMALL_FOOTPRINT
- opus_int16 *sLTP;
-#else
- VARDECL( opus_int16, sLTP );
-#endif
- VARDECL( opus_int32, sLTP_Q14 );
- silk_PLC_struct *psPLC = &psDec->sPLC;
- opus_int32 prevGain_Q10[2];
- SAVE_STACK;
-
- ALLOC( sLTP_Q14, psDec->ltp_mem_length + psDec->frame_length, opus_int32 );
-#ifdef SMALL_FOOTPRINT
- /* Ugly hack that breaks aliasing rules to save stack: put sLTP at the very end of sLTP_Q14. */
- sLTP = ((opus_int16*)&sLTP_Q14[psDec->ltp_mem_length + psDec->frame_length])-psDec->ltp_mem_length;
-#else
- ALLOC( sLTP, psDec->ltp_mem_length, opus_int16 );
-#endif
-
- prevGain_Q10[0] = silk_RSHIFT( psPLC->prevGain_Q16[ 0 ], 6);
- prevGain_Q10[1] = silk_RSHIFT( psPLC->prevGain_Q16[ 1 ], 6);
-
- if( psDec->first_frame_after_reset ) {
- silk_memset( psPLC->prevLPC_Q12, 0, sizeof( psPLC->prevLPC_Q12 ) );
- }
-
- silk_PLC_energy(&energy1, &shift1, &energy2, &shift2, psDec->exc_Q14, prevGain_Q10, psDec->subfr_length, psDec->nb_subfr);
-
- if( silk_RSHIFT( energy1, shift2 ) < silk_RSHIFT( energy2, shift1 ) ) {
- /* First sub-frame has lowest energy */
- rand_ptr = &psDec->exc_Q14[ silk_max_int( 0, ( psPLC->nb_subfr - 1 ) * psPLC->subfr_length - RAND_BUF_SIZE ) ];
- } else {
- /* Second sub-frame has lowest energy */
- rand_ptr = &psDec->exc_Q14[ silk_max_int( 0, psPLC->nb_subfr * psPLC->subfr_length - RAND_BUF_SIZE ) ];
- }
-
- /* Set up Gain to random noise component */
- B_Q14 = psPLC->LTPCoef_Q14;
- rand_scale_Q14 = psPLC->randScale_Q14;
-
- /* Set up attenuation gains */
- harm_Gain_Q15 = HARM_ATT_Q15[ silk_min_int( NB_ATT - 1, psDec->lossCnt ) ];
- if( psDec->prevSignalType == TYPE_VOICED ) {
- rand_Gain_Q15 = PLC_RAND_ATTENUATE_V_Q15[ silk_min_int( NB_ATT - 1, psDec->lossCnt ) ];
- } else {
- rand_Gain_Q15 = PLC_RAND_ATTENUATE_UV_Q15[ silk_min_int( NB_ATT - 1, psDec->lossCnt ) ];
- }
-
- /* LPC concealment. Apply BWE to previous LPC */
- silk_bwexpander( psPLC->prevLPC_Q12, psDec->LPC_order, SILK_FIX_CONST( BWE_COEF, 16 ) );
-
- /* Preload LPC coeficients to array on stack. Gives small performance gain */
- silk_memcpy( A_Q12, psPLC->prevLPC_Q12, psDec->LPC_order * sizeof( opus_int16 ) );
-
- /* First Lost frame */
- if( psDec->lossCnt == 0 ) {
- rand_scale_Q14 = 1 << 14;
-
- /* Reduce random noise Gain for voiced frames */
- if( psDec->prevSignalType == TYPE_VOICED ) {
- for( i = 0; i < LTP_ORDER; i++ ) {
- rand_scale_Q14 -= B_Q14[ i ];
- }
- rand_scale_Q14 = silk_max_16( 3277, rand_scale_Q14 ); /* 0.2 */
- rand_scale_Q14 = (opus_int16)silk_RSHIFT( silk_SMULBB( rand_scale_Q14, psPLC->prevLTP_scale_Q14 ), 14 );
- } else {
- /* Reduce random noise for unvoiced frames with high LPC gain */
- opus_int32 invGain_Q30, down_scale_Q30;
-
- invGain_Q30 = silk_LPC_inverse_pred_gain( psPLC->prevLPC_Q12, psDec->LPC_order );
-
- down_scale_Q30 = silk_min_32( silk_RSHIFT( (opus_int32)1 << 30, LOG2_INV_LPC_GAIN_HIGH_THRES ), invGain_Q30 );
- down_scale_Q30 = silk_max_32( silk_RSHIFT( (opus_int32)1 << 30, LOG2_INV_LPC_GAIN_LOW_THRES ), down_scale_Q30 );
- down_scale_Q30 = silk_LSHIFT( down_scale_Q30, LOG2_INV_LPC_GAIN_HIGH_THRES );
-
- rand_Gain_Q15 = silk_RSHIFT( silk_SMULWB( down_scale_Q30, rand_Gain_Q15 ), 14 );
- }
- }
-
- rand_seed = psPLC->rand_seed;
- lag = silk_RSHIFT_ROUND( psPLC->pitchL_Q8, 8 );
- sLTP_buf_idx = psDec->ltp_mem_length;
-
- /* Rewhiten LTP state */
- idx = psDec->ltp_mem_length - lag - psDec->LPC_order - LTP_ORDER / 2;
- silk_assert( idx > 0 );
- silk_LPC_analysis_filter( &sLTP[ idx ], &psDec->outBuf[ idx ], A_Q12, psDec->ltp_mem_length - idx, psDec->LPC_order, arch );
- /* Scale LTP state */
- inv_gain_Q30 = silk_INVERSE32_varQ( psPLC->prevGain_Q16[ 1 ], 46 );
- inv_gain_Q30 = silk_min( inv_gain_Q30, silk_int32_MAX >> 1 );
- for( i = idx + psDec->LPC_order; i < psDec->ltp_mem_length; i++ ) {
- sLTP_Q14[ i ] = silk_SMULWB( inv_gain_Q30, sLTP[ i ] );
- }
-
- /***************************/
- /* LTP synthesis filtering */
- /***************************/
- for( k = 0; k < psDec->nb_subfr; k++ ) {
- /* Set up pointer */
- pred_lag_ptr = &sLTP_Q14[ sLTP_buf_idx - lag + LTP_ORDER / 2 ];
- for( i = 0; i < psDec->subfr_length; i++ ) {
- /* Unrolled loop */
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LTP_pred_Q12 = 2;
- LTP_pred_Q12 = silk_SMLAWB( LTP_pred_Q12, pred_lag_ptr[ 0 ], B_Q14[ 0 ] );
- LTP_pred_Q12 = silk_SMLAWB( LTP_pred_Q12, pred_lag_ptr[ -1 ], B_Q14[ 1 ] );
- LTP_pred_Q12 = silk_SMLAWB( LTP_pred_Q12, pred_lag_ptr[ -2 ], B_Q14[ 2 ] );
- LTP_pred_Q12 = silk_SMLAWB( LTP_pred_Q12, pred_lag_ptr[ -3 ], B_Q14[ 3 ] );
- LTP_pred_Q12 = silk_SMLAWB( LTP_pred_Q12, pred_lag_ptr[ -4 ], B_Q14[ 4 ] );
- pred_lag_ptr++;
-
- /* Generate LPC excitation */
- rand_seed = silk_RAND( rand_seed );
- idx = silk_RSHIFT( rand_seed, 25 ) & RAND_BUF_MASK;
- sLTP_Q14[ sLTP_buf_idx ] = silk_LSHIFT32( silk_SMLAWB( LTP_pred_Q12, rand_ptr[ idx ], rand_scale_Q14 ), 2 );
- sLTP_buf_idx++;
- }
-
- /* Gradually reduce LTP gain */
- for( j = 0; j < LTP_ORDER; j++ ) {
- B_Q14[ j ] = silk_RSHIFT( silk_SMULBB( harm_Gain_Q15, B_Q14[ j ] ), 15 );
- }
- /* Gradually reduce excitation gain */
- rand_scale_Q14 = silk_RSHIFT( silk_SMULBB( rand_scale_Q14, rand_Gain_Q15 ), 15 );
-
- /* Slowly increase pitch lag */
- psPLC->pitchL_Q8 = silk_SMLAWB( psPLC->pitchL_Q8, psPLC->pitchL_Q8, PITCH_DRIFT_FAC_Q16 );
- psPLC->pitchL_Q8 = silk_min_32( psPLC->pitchL_Q8, silk_LSHIFT( silk_SMULBB( MAX_PITCH_LAG_MS, psDec->fs_kHz ), 8 ) );
- lag = silk_RSHIFT_ROUND( psPLC->pitchL_Q8, 8 );
- }
-
- /***************************/
- /* LPC synthesis filtering */
- /***************************/
- sLPC_Q14_ptr = &sLTP_Q14[ psDec->ltp_mem_length - MAX_LPC_ORDER ];
-
- /* Copy LPC state */
- silk_memcpy( sLPC_Q14_ptr, psDec->sLPC_Q14_buf, MAX_LPC_ORDER * sizeof( opus_int32 ) );
-
- silk_assert( psDec->LPC_order >= 10 ); /* check that unrolling works */
- for( i = 0; i < psDec->frame_length; i++ ) {
- /* partly unrolled */
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LPC_pred_Q10 = silk_RSHIFT( psDec->LPC_order, 1 );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 1 ], A_Q12[ 0 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 2 ], A_Q12[ 1 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 3 ], A_Q12[ 2 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 4 ], A_Q12[ 3 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 5 ], A_Q12[ 4 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 6 ], A_Q12[ 5 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 7 ], A_Q12[ 6 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 8 ], A_Q12[ 7 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 9 ], A_Q12[ 8 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - 10 ], A_Q12[ 9 ] );
- for( j = 10; j < psDec->LPC_order; j++ ) {
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14_ptr[ MAX_LPC_ORDER + i - j - 1 ], A_Q12[ j ] );
- }
-
- /* Add prediction to LPC excitation */
- sLPC_Q14_ptr[ MAX_LPC_ORDER + i ] = silk_ADD_SAT32( sLPC_Q14_ptr[ MAX_LPC_ORDER + i ],
- silk_LSHIFT_SAT32( LPC_pred_Q10, 4 ));
-
- /* Scale with Gain */
- frame[ i ] = (opus_int16)silk_SAT16( silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( sLPC_Q14_ptr[ MAX_LPC_ORDER + i ], prevGain_Q10[ 1 ] ), 8 ) ) );
- }
-
- /* Save LPC state */
- silk_memcpy( psDec->sLPC_Q14_buf, &sLPC_Q14_ptr[ psDec->frame_length ], MAX_LPC_ORDER * sizeof( opus_int32 ) );
-
- /**************************************/
- /* Update states */
- /**************************************/
- psPLC->rand_seed = rand_seed;
- psPLC->randScale_Q14 = rand_scale_Q14;
- for( i = 0; i < MAX_NB_SUBFR; i++ ) {
- psDecCtrl->pitchL[ i ] = lag;
- }
- RESTORE_STACK;
-}
-
-/* Glues concealed frames with new good received frames */
-void silk_PLC_glue_frames(
- silk_decoder_state *psDec, /* I/O decoder state */
- opus_int16 frame[], /* I/O signal */
- opus_int length /* I length of signal */
-)
-{
- opus_int i, energy_shift;
- opus_int32 energy;
- silk_PLC_struct *psPLC;
- psPLC = &psDec->sPLC;
-
- if( psDec->lossCnt ) {
- /* Calculate energy in concealed residual */
- silk_sum_sqr_shift( &psPLC->conc_energy, &psPLC->conc_energy_shift, frame, length );
-
- psPLC->last_frame_lost = 1;
- } else {
- if( psDec->sPLC.last_frame_lost ) {
- /* Calculate residual in decoded signal if last frame was lost */
- silk_sum_sqr_shift( &energy, &energy_shift, frame, length );
-
- /* Normalize energies */
- if( energy_shift > psPLC->conc_energy_shift ) {
- psPLC->conc_energy = silk_RSHIFT( psPLC->conc_energy, energy_shift - psPLC->conc_energy_shift );
- } else if( energy_shift < psPLC->conc_energy_shift ) {
- energy = silk_RSHIFT( energy, psPLC->conc_energy_shift - energy_shift );
- }
-
- /* Fade in the energy difference */
- if( energy > psPLC->conc_energy ) {
- opus_int32 frac_Q24, LZ;
- opus_int32 gain_Q16, slope_Q16;
-
- LZ = silk_CLZ32( psPLC->conc_energy );
- LZ = LZ - 1;
- psPLC->conc_energy = silk_LSHIFT( psPLC->conc_energy, LZ );
- energy = silk_RSHIFT( energy, silk_max_32( 24 - LZ, 0 ) );
-
- frac_Q24 = silk_DIV32( psPLC->conc_energy, silk_max( energy, 1 ) );
-
- gain_Q16 = silk_LSHIFT( silk_SQRT_APPROX( frac_Q24 ), 4 );
- slope_Q16 = silk_DIV32_16( ( (opus_int32)1 << 16 ) - gain_Q16, length );
- /* Make slope 4x steeper to avoid missing onsets after DTX */
- slope_Q16 = silk_LSHIFT( slope_Q16, 2 );
-
- for( i = 0; i < length; i++ ) {
- frame[ i ] = silk_SMULWB( gain_Q16, frame[ i ] );
- gain_Q16 += slope_Q16;
- if( gain_Q16 > (opus_int32)1 << 16 ) {
- break;
- }
- }
- }
- }
- psPLC->last_frame_lost = 0;
- }
-}
diff --git a/thirdparty/opus/silk/PLC.h b/thirdparty/opus/silk/PLC.h
deleted file mode 100644
index 6438f51633..0000000000
--- a/thirdparty/opus/silk/PLC.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_PLC_H
-#define SILK_PLC_H
-
-#include "main.h"
-
-#define BWE_COEF 0.99
-#define V_PITCH_GAIN_START_MIN_Q14 11469 /* 0.7 in Q14 */
-#define V_PITCH_GAIN_START_MAX_Q14 15565 /* 0.95 in Q14 */
-#define MAX_PITCH_LAG_MS 18
-#define RAND_BUF_SIZE 128
-#define RAND_BUF_MASK ( RAND_BUF_SIZE - 1 )
-#define LOG2_INV_LPC_GAIN_HIGH_THRES 3 /* 2^3 = 8 dB LPC gain */
-#define LOG2_INV_LPC_GAIN_LOW_THRES 8 /* 2^8 = 24 dB LPC gain */
-#define PITCH_DRIFT_FAC_Q16 655 /* 0.01 in Q16 */
-
-void silk_PLC_Reset(
- silk_decoder_state *psDec /* I/O Decoder state */
-);
-
-void silk_PLC(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl, /* I/O Decoder control */
- opus_int16 frame[], /* I/O signal */
- opus_int lost, /* I Loss flag */
- int arch /* I Run-time architecture */
-);
-
-void silk_PLC_glue_frames(
- silk_decoder_state *psDec, /* I/O decoder state */
- opus_int16 frame[], /* I/O signal */
- opus_int length /* I length of signal */
-);
-
-#endif
-
diff --git a/thirdparty/opus/silk/SigProc_FIX.h b/thirdparty/opus/silk/SigProc_FIX.h
deleted file mode 100644
index b63299441e..0000000000
--- a/thirdparty/opus/silk/SigProc_FIX.h
+++ /dev/null
@@ -1,615 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_SIGPROC_FIX_H
-#define SILK_SIGPROC_FIX_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/*#define silk_MACRO_COUNT */ /* Used to enable WMOPS counting */
-
-#define SILK_MAX_ORDER_LPC 16 /* max order of the LPC analysis in schur() and k2a() */
-
-#include <string.h> /* for memset(), memcpy(), memmove() */
-#include "typedef.h"
-#include "resampler_structs.h"
-#include "macros.h"
-#include "cpu_support.h"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1)
-#include "x86/SigProc_FIX_sse.h"
-#endif
-
-/********************************************************************/
-/* SIGNAL PROCESSING FUNCTIONS */
-/********************************************************************/
-
-/*!
- * Initialize/reset the resampler state for a given pair of input/output sampling rates
-*/
-opus_int silk_resampler_init(
- silk_resampler_state_struct *S, /* I/O Resampler state */
- opus_int32 Fs_Hz_in, /* I Input sampling rate (Hz) */
- opus_int32 Fs_Hz_out, /* I Output sampling rate (Hz) */
- opus_int forEnc /* I If 1: encoder; if 0: decoder */
-);
-
-/*!
- * Resampler: convert from one sampling rate to another
- */
-opus_int silk_resampler(
- silk_resampler_state_struct *S, /* I/O Resampler state */
- opus_int16 out[], /* O Output signal */
- const opus_int16 in[], /* I Input signal */
- opus_int32 inLen /* I Number of input samples */
-);
-
-/*!
-* Downsample 2x, mediocre quality
-*/
-void silk_resampler_down2(
- opus_int32 *S, /* I/O State vector [ 2 ] */
- opus_int16 *out, /* O Output signal [ len ] */
- const opus_int16 *in, /* I Input signal [ floor(len/2) ] */
- opus_int32 inLen /* I Number of input samples */
-);
-
-/*!
- * Downsample by a factor 2/3, low quality
-*/
-void silk_resampler_down2_3(
- opus_int32 *S, /* I/O State vector [ 6 ] */
- opus_int16 *out, /* O Output signal [ floor(2*inLen/3) ] */
- const opus_int16 *in, /* I Input signal [ inLen ] */
- opus_int32 inLen /* I Number of input samples */
-);
-
-/*!
- * second order ARMA filter;
- * slower than biquad() but uses more precise coefficients
- * can handle (slowly) varying coefficients
- */
-void silk_biquad_alt(
- const opus_int16 *in, /* I input signal */
- const opus_int32 *B_Q28, /* I MA coefficients [3] */
- const opus_int32 *A_Q28, /* I AR coefficients [2] */
- opus_int32 *S, /* I/O State vector [2] */
- opus_int16 *out, /* O output signal */
- const opus_int32 len, /* I signal length (must be even) */
- opus_int stride /* I Operate on interleaved signal if > 1 */
-);
-
-/* Variable order MA prediction error filter. */
-void silk_LPC_analysis_filter(
- opus_int16 *out, /* O Output signal */
- const opus_int16 *in, /* I Input signal */
- const opus_int16 *B, /* I MA prediction coefficients, Q12 [order] */
- const opus_int32 len, /* I Signal length */
- const opus_int32 d, /* I Filter order */
- int arch /* I Run-time architecture */
-);
-
-/* Chirp (bandwidth expand) LP AR filter */
-void silk_bwexpander(
- opus_int16 *ar, /* I/O AR filter to be expanded (without leading 1) */
- const opus_int d, /* I Length of ar */
- opus_int32 chirp_Q16 /* I Chirp factor (typically in the range 0 to 1) */
-);
-
-/* Chirp (bandwidth expand) LP AR filter */
-void silk_bwexpander_32(
- opus_int32 *ar, /* I/O AR filter to be expanded (without leading 1) */
- const opus_int d, /* I Length of ar */
- opus_int32 chirp_Q16 /* I Chirp factor in Q16 */
-);
-
-/* Compute inverse of LPC prediction gain, and */
-/* test if LPC coefficients are stable (all poles within unit circle) */
-opus_int32 silk_LPC_inverse_pred_gain( /* O Returns inverse prediction gain in energy domain, Q30 */
- const opus_int16 *A_Q12, /* I Prediction coefficients, Q12 [order] */
- const opus_int order /* I Prediction order */
-);
-
-/* For input in Q24 domain */
-opus_int32 silk_LPC_inverse_pred_gain_Q24( /* O Returns inverse prediction gain in energy domain, Q30 */
- const opus_int32 *A_Q24, /* I Prediction coefficients [order] */
- const opus_int order /* I Prediction order */
-);
-
-/* Split signal in two decimated bands using first-order allpass filters */
-void silk_ana_filt_bank_1(
- const opus_int16 *in, /* I Input signal [N] */
- opus_int32 *S, /* I/O State vector [2] */
- opus_int16 *outL, /* O Low band [N/2] */
- opus_int16 *outH, /* O High band [N/2] */
- const opus_int32 N /* I Number of input samples */
-);
-
-/********************************************************************/
-/* SCALAR FUNCTIONS */
-/********************************************************************/
-
-/* Approximation of 128 * log2() (exact inverse of approx 2^() below) */
-/* Convert input to a log scale */
-opus_int32 silk_lin2log(
- const opus_int32 inLin /* I input in linear scale */
-);
-
-/* Approximation of a sigmoid function */
-opus_int silk_sigm_Q15(
- opus_int in_Q5 /* I */
-);
-
-/* Approximation of 2^() (exact inverse of approx log2() above) */
-/* Convert input to a linear scale */
-opus_int32 silk_log2lin(
- const opus_int32 inLog_Q7 /* I input on log scale */
-);
-
-/* Compute number of bits to right shift the sum of squares of a vector */
-/* of int16s to make it fit in an int32 */
-void silk_sum_sqr_shift(
- opus_int32 *energy, /* O Energy of x, after shifting to the right */
- opus_int *shift, /* O Number of bits right shift applied to energy */
- const opus_int16 *x, /* I Input vector */
- opus_int len /* I Length of input vector */
-);
-
-/* Calculates the reflection coefficients from the correlation sequence */
-/* Faster than schur64(), but much less accurate. */
-/* uses SMLAWB(), requiring armv5E and higher. */
-opus_int32 silk_schur( /* O Returns residual energy */
- opus_int16 *rc_Q15, /* O reflection coefficients [order] Q15 */
- const opus_int32 *c, /* I correlations [order+1] */
- const opus_int32 order /* I prediction order */
-);
-
-/* Calculates the reflection coefficients from the correlation sequence */
-/* Slower than schur(), but more accurate. */
-/* Uses SMULL(), available on armv4 */
-opus_int32 silk_schur64( /* O returns residual energy */
- opus_int32 rc_Q16[], /* O Reflection coefficients [order] Q16 */
- const opus_int32 c[], /* I Correlations [order+1] */
- opus_int32 order /* I Prediction order */
-);
-
-/* Step up function, converts reflection coefficients to prediction coefficients */
-void silk_k2a(
- opus_int32 *A_Q24, /* O Prediction coefficients [order] Q24 */
- const opus_int16 *rc_Q15, /* I Reflection coefficients [order] Q15 */
- const opus_int32 order /* I Prediction order */
-);
-
-/* Step up function, converts reflection coefficients to prediction coefficients */
-void silk_k2a_Q16(
- opus_int32 *A_Q24, /* O Prediction coefficients [order] Q24 */
- const opus_int32 *rc_Q16, /* I Reflection coefficients [order] Q16 */
- const opus_int32 order /* I Prediction order */
-);
-
-/* Apply sine window to signal vector. */
-/* Window types: */
-/* 1 -> sine window from 0 to pi/2 */
-/* 2 -> sine window from pi/2 to pi */
-/* every other sample of window is linearly interpolated, for speed */
-void silk_apply_sine_window(
- opus_int16 px_win[], /* O Pointer to windowed signal */
- const opus_int16 px[], /* I Pointer to input signal */
- const opus_int win_type, /* I Selects a window type */
- const opus_int length /* I Window length, multiple of 4 */
-);
-
-/* Compute autocorrelation */
-void silk_autocorr(
- opus_int32 *results, /* O Result (length correlationCount) */
- opus_int *scale, /* O Scaling of the correlation vector */
- const opus_int16 *inputData, /* I Input data to correlate */
- const opus_int inputDataSize, /* I Length of input */
- const opus_int correlationCount, /* I Number of correlation taps to compute */
- int arch /* I Run-time architecture */
-);
-
-void silk_decode_pitch(
- opus_int16 lagIndex, /* I */
- opus_int8 contourIndex, /* O */
- opus_int pitch_lags[], /* O 4 pitch values */
- const opus_int Fs_kHz, /* I sampling frequency (kHz) */
- const opus_int nb_subfr /* I number of sub frames */
-);
-
-opus_int silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 unvoiced */
- const opus_int16 *frame, /* I Signal of length PE_FRAME_LENGTH_MS*Fs_kHz */
- opus_int *pitch_out, /* O 4 pitch lag values */
- opus_int16 *lagIndex, /* O Lag Index */
- opus_int8 *contourIndex, /* O Pitch contour Index */
- opus_int *LTPCorr_Q15, /* I/O Normalized correlation; input: value from previous frame */
- opus_int prevLag, /* I Last lag of previous frame; set to zero is unvoiced */
- const opus_int32 search_thres1_Q16, /* I First stage threshold for lag candidates 0 - 1 */
- const opus_int search_thres2_Q13, /* I Final threshold for lag candidates 0 - 1 */
- const opus_int Fs_kHz, /* I Sample frequency (kHz) */
- const opus_int complexity, /* I Complexity setting, 0-2, where 2 is highest */
- const opus_int nb_subfr, /* I number of 5 ms subframes */
- int arch /* I Run-time architecture */
-);
-
-/* Compute Normalized Line Spectral Frequencies (NLSFs) from whitening filter coefficients */
-/* If not all roots are found, the a_Q16 coefficients are bandwidth expanded until convergence. */
-void silk_A2NLSF(
- opus_int16 *NLSF, /* O Normalized Line Spectral Frequencies in Q15 (0..2^15-1) [d] */
- opus_int32 *a_Q16, /* I/O Monic whitening filter coefficients in Q16 [d] */
- const opus_int d /* I Filter order (must be even) */
-);
-
-/* compute whitening filter coefficients from normalized line spectral frequencies */
-void silk_NLSF2A(
- opus_int16 *a_Q12, /* O monic whitening filter coefficients in Q12, [ d ] */
- const opus_int16 *NLSF, /* I normalized line spectral frequencies in Q15, [ d ] */
- const opus_int d /* I filter order (should be even) */
-);
-
-void silk_insertion_sort_increasing(
- opus_int32 *a, /* I/O Unsorted / Sorted vector */
- opus_int *idx, /* O Index vector for the sorted elements */
- const opus_int L, /* I Vector length */
- const opus_int K /* I Number of correctly sorted positions */
-);
-
-void silk_insertion_sort_decreasing_int16(
- opus_int16 *a, /* I/O Unsorted / Sorted vector */
- opus_int *idx, /* O Index vector for the sorted elements */
- const opus_int L, /* I Vector length */
- const opus_int K /* I Number of correctly sorted positions */
-);
-
-void silk_insertion_sort_increasing_all_values_int16(
- opus_int16 *a, /* I/O Unsorted / Sorted vector */
- const opus_int L /* I Vector length */
-);
-
-/* NLSF stabilizer, for a single input data vector */
-void silk_NLSF_stabilize(
- opus_int16 *NLSF_Q15, /* I/O Unstable/stabilized normalized LSF vector in Q15 [L] */
- const opus_int16 *NDeltaMin_Q15, /* I Min distance vector, NDeltaMin_Q15[L] must be >= 1 [L+1] */
- const opus_int L /* I Number of NLSF parameters in the input vector */
-);
-
-/* Laroia low complexity NLSF weights */
-void silk_NLSF_VQ_weights_laroia(
- opus_int16 *pNLSFW_Q_OUT, /* O Pointer to input vector weights [D] */
- const opus_int16 *pNLSF_Q15, /* I Pointer to input vector [D] */
- const opus_int D /* I Input vector dimension (even) */
-);
-
-/* Compute reflection coefficients from input signal */
-void silk_burg_modified_c(
- opus_int32 *res_nrg, /* O Residual energy */
- opus_int *res_nrg_Q, /* O Residual energy Q value */
- opus_int32 A_Q16[], /* O Prediction coefficients (length order) */
- const opus_int16 x[], /* I Input signal, length: nb_subfr * ( D + subfr_length ) */
- const opus_int32 minInvGain_Q30, /* I Inverse of max prediction gain */
- const opus_int subfr_length, /* I Input signal subframe length (incl. D preceding samples) */
- const opus_int nb_subfr, /* I Number of subframes stacked in x */
- const opus_int D, /* I Order */
- int arch /* I Run-time architecture */
-);
-
-/* Copy and multiply a vector by a constant */
-void silk_scale_copy_vector16(
- opus_int16 *data_out,
- const opus_int16 *data_in,
- opus_int32 gain_Q16, /* I Gain in Q16 */
- const opus_int dataSize /* I Length */
-);
-
-/* Some for the LTP related function requires Q26 to work.*/
-void silk_scale_vector32_Q26_lshift_18(
- opus_int32 *data1, /* I/O Q0/Q18 */
- opus_int32 gain_Q26, /* I Q26 */
- opus_int dataSize /* I length */
-);
-
-/********************************************************************/
-/* INLINE ARM MATH */
-/********************************************************************/
-
-/* return sum( inVec1[i] * inVec2[i] ) */
-
-opus_int32 silk_inner_prod_aligned(
- const opus_int16 *const inVec1, /* I input vector 1 */
- const opus_int16 *const inVec2, /* I input vector 2 */
- const opus_int len, /* I vector lengths */
- int arch /* I Run-time architecture */
-);
-
-
-opus_int32 silk_inner_prod_aligned_scale(
- const opus_int16 *const inVec1, /* I input vector 1 */
- const opus_int16 *const inVec2, /* I input vector 2 */
- const opus_int scale, /* I number of bits to shift */
- const opus_int len /* I vector lengths */
-);
-
-opus_int64 silk_inner_prod16_aligned_64_c(
- const opus_int16 *inVec1, /* I input vector 1 */
- const opus_int16 *inVec2, /* I input vector 2 */
- const opus_int len /* I vector lengths */
-);
-
-/********************************************************************/
-/* MACROS */
-/********************************************************************/
-
-/* Rotate a32 right by 'rot' bits. Negative rot values result in rotating
- left. Output is 32bit int.
- Note: contemporary compilers recognize the C expression below and
- compile it into a 'ror' instruction if available. No need for OPUS_INLINE ASM! */
-static OPUS_INLINE opus_int32 silk_ROR32( opus_int32 a32, opus_int rot )
-{
- opus_uint32 x = (opus_uint32) a32;
- opus_uint32 r = (opus_uint32) rot;
- opus_uint32 m = (opus_uint32) -rot;
- if( rot == 0 ) {
- return a32;
- } else if( rot < 0 ) {
- return (opus_int32) ((x << m) | (x >> (32 - m)));
- } else {
- return (opus_int32) ((x << (32 - r)) | (x >> r));
- }
-}
-
-/* Allocate opus_int16 aligned to 4-byte memory address */
-#if EMBEDDED_ARM
-#define silk_DWORD_ALIGN __attribute__((aligned(4)))
-#else
-#define silk_DWORD_ALIGN
-#endif
-
-/* Useful Macros that can be adjusted to other platforms */
-#define silk_memcpy(dest, src, size) memcpy((dest), (src), (size))
-#define silk_memset(dest, src, size) memset((dest), (src), (size))
-#define silk_memmove(dest, src, size) memmove((dest), (src), (size))
-
-/* Fixed point macros */
-
-/* (a32 * b32) output have to be 32bit int */
-#define silk_MUL(a32, b32) ((a32) * (b32))
-
-/* (a32 * b32) output have to be 32bit uint */
-#define silk_MUL_uint(a32, b32) silk_MUL(a32, b32)
-
-/* a32 + (b32 * c32) output have to be 32bit int */
-#define silk_MLA(a32, b32, c32) silk_ADD32((a32),((b32) * (c32)))
-
-/* a32 + (b32 * c32) output have to be 32bit uint */
-#define silk_MLA_uint(a32, b32, c32) silk_MLA(a32, b32, c32)
-
-/* ((a32 >> 16) * (b32 >> 16)) output have to be 32bit int */
-#define silk_SMULTT(a32, b32) (((a32) >> 16) * ((b32) >> 16))
-
-/* a32 + ((a32 >> 16) * (b32 >> 16)) output have to be 32bit int */
-#define silk_SMLATT(a32, b32, c32) silk_ADD32((a32),((b32) >> 16) * ((c32) >> 16))
-
-#define silk_SMLALBB(a64, b16, c16) silk_ADD64((a64),(opus_int64)((opus_int32)(b16) * (opus_int32)(c16)))
-
-/* (a32 * b32) */
-#define silk_SMULL(a32, b32) ((opus_int64)(a32) * /*(opus_int64)*/(b32))
-
-/* Adds two signed 32-bit values in a way that can overflow, while not relying on undefined behaviour
- (just standard two's complement implementation-specific behaviour) */
-#define silk_ADD32_ovflw(a, b) ((opus_int32)((opus_uint32)(a) + (opus_uint32)(b)))
-/* Subtractss two signed 32-bit values in a way that can overflow, while not relying on undefined behaviour
- (just standard two's complement implementation-specific behaviour) */
-#define silk_SUB32_ovflw(a, b) ((opus_int32)((opus_uint32)(a) - (opus_uint32)(b)))
-
-/* Multiply-accumulate macros that allow overflow in the addition (ie, no asserts in debug mode) */
-#define silk_MLA_ovflw(a32, b32, c32) silk_ADD32_ovflw((a32), (opus_uint32)(b32) * (opus_uint32)(c32))
-#define silk_SMLABB_ovflw(a32, b32, c32) (silk_ADD32_ovflw((a32) , ((opus_int32)((opus_int16)(b32))) * (opus_int32)((opus_int16)(c32))))
-
-#define silk_DIV32_16(a32, b16) ((opus_int32)((a32) / (b16)))
-#define silk_DIV32(a32, b32) ((opus_int32)((a32) / (b32)))
-
-/* These macros enables checking for overflow in silk_API_Debug.h*/
-#define silk_ADD16(a, b) ((a) + (b))
-#define silk_ADD32(a, b) ((a) + (b))
-#define silk_ADD64(a, b) ((a) + (b))
-
-#define silk_SUB16(a, b) ((a) - (b))
-#define silk_SUB32(a, b) ((a) - (b))
-#define silk_SUB64(a, b) ((a) - (b))
-
-#define silk_SAT8(a) ((a) > silk_int8_MAX ? silk_int8_MAX : \
- ((a) < silk_int8_MIN ? silk_int8_MIN : (a)))
-#define silk_SAT16(a) ((a) > silk_int16_MAX ? silk_int16_MAX : \
- ((a) < silk_int16_MIN ? silk_int16_MIN : (a)))
-#define silk_SAT32(a) ((a) > silk_int32_MAX ? silk_int32_MAX : \
- ((a) < silk_int32_MIN ? silk_int32_MIN : (a)))
-
-#define silk_CHECK_FIT8(a) (a)
-#define silk_CHECK_FIT16(a) (a)
-#define silk_CHECK_FIT32(a) (a)
-
-#define silk_ADD_SAT16(a, b) (opus_int16)silk_SAT16( silk_ADD32( (opus_int32)(a), (b) ) )
-#define silk_ADD_SAT64(a, b) ((((a) + (b)) & 0x8000000000000000LL) == 0 ? \
- ((((a) & (b)) & 0x8000000000000000LL) != 0 ? silk_int64_MIN : (a)+(b)) : \
- ((((a) | (b)) & 0x8000000000000000LL) == 0 ? silk_int64_MAX : (a)+(b)) )
-
-#define silk_SUB_SAT16(a, b) (opus_int16)silk_SAT16( silk_SUB32( (opus_int32)(a), (b) ) )
-#define silk_SUB_SAT64(a, b) ((((a)-(b)) & 0x8000000000000000LL) == 0 ? \
- (( (a) & ((b)^0x8000000000000000LL) & 0x8000000000000000LL) ? silk_int64_MIN : (a)-(b)) : \
- ((((a)^0x8000000000000000LL) & (b) & 0x8000000000000000LL) ? silk_int64_MAX : (a)-(b)) )
-
-/* Saturation for positive input values */
-#define silk_POS_SAT32(a) ((a) > silk_int32_MAX ? silk_int32_MAX : (a))
-
-/* Add with saturation for positive input values */
-#define silk_ADD_POS_SAT8(a, b) ((((a)+(b)) & 0x80) ? silk_int8_MAX : ((a)+(b)))
-#define silk_ADD_POS_SAT16(a, b) ((((a)+(b)) & 0x8000) ? silk_int16_MAX : ((a)+(b)))
-#define silk_ADD_POS_SAT32(a, b) ((((a)+(b)) & 0x80000000) ? silk_int32_MAX : ((a)+(b)))
-#define silk_ADD_POS_SAT64(a, b) ((((a)+(b)) & 0x8000000000000000LL) ? silk_int64_MAX : ((a)+(b)))
-
-#define silk_LSHIFT8(a, shift) ((opus_int8)((opus_uint8)(a)<<(shift))) /* shift >= 0, shift < 8 */
-#define silk_LSHIFT16(a, shift) ((opus_int16)((opus_uint16)(a)<<(shift))) /* shift >= 0, shift < 16 */
-#define silk_LSHIFT32(a, shift) ((opus_int32)((opus_uint32)(a)<<(shift))) /* shift >= 0, shift < 32 */
-#define silk_LSHIFT64(a, shift) ((opus_int64)((opus_uint64)(a)<<(shift))) /* shift >= 0, shift < 64 */
-#define silk_LSHIFT(a, shift) silk_LSHIFT32(a, shift) /* shift >= 0, shift < 32 */
-
-#define silk_RSHIFT8(a, shift) ((a)>>(shift)) /* shift >= 0, shift < 8 */
-#define silk_RSHIFT16(a, shift) ((a)>>(shift)) /* shift >= 0, shift < 16 */
-#define silk_RSHIFT32(a, shift) ((a)>>(shift)) /* shift >= 0, shift < 32 */
-#define silk_RSHIFT64(a, shift) ((a)>>(shift)) /* shift >= 0, shift < 64 */
-#define silk_RSHIFT(a, shift) silk_RSHIFT32(a, shift) /* shift >= 0, shift < 32 */
-
-/* saturates before shifting */
-#define silk_LSHIFT_SAT32(a, shift) (silk_LSHIFT32( silk_LIMIT( (a), silk_RSHIFT32( silk_int32_MIN, (shift) ), \
- silk_RSHIFT32( silk_int32_MAX, (shift) ) ), (shift) ))
-
-#define silk_LSHIFT_ovflw(a, shift) ((opus_int32)((opus_uint32)(a) << (shift))) /* shift >= 0, allowed to overflow */
-#define silk_LSHIFT_uint(a, shift) ((a) << (shift)) /* shift >= 0 */
-#define silk_RSHIFT_uint(a, shift) ((a) >> (shift)) /* shift >= 0 */
-
-#define silk_ADD_LSHIFT(a, b, shift) ((a) + silk_LSHIFT((b), (shift))) /* shift >= 0 */
-#define silk_ADD_LSHIFT32(a, b, shift) silk_ADD32((a), silk_LSHIFT32((b), (shift))) /* shift >= 0 */
-#define silk_ADD_LSHIFT_uint(a, b, shift) ((a) + silk_LSHIFT_uint((b), (shift))) /* shift >= 0 */
-#define silk_ADD_RSHIFT(a, b, shift) ((a) + silk_RSHIFT((b), (shift))) /* shift >= 0 */
-#define silk_ADD_RSHIFT32(a, b, shift) silk_ADD32((a), silk_RSHIFT32((b), (shift))) /* shift >= 0 */
-#define silk_ADD_RSHIFT_uint(a, b, shift) ((a) + silk_RSHIFT_uint((b), (shift))) /* shift >= 0 */
-#define silk_SUB_LSHIFT32(a, b, shift) silk_SUB32((a), silk_LSHIFT32((b), (shift))) /* shift >= 0 */
-#define silk_SUB_RSHIFT32(a, b, shift) silk_SUB32((a), silk_RSHIFT32((b), (shift))) /* shift >= 0 */
-
-/* Requires that shift > 0 */
-#define silk_RSHIFT_ROUND(a, shift) ((shift) == 1 ? ((a) >> 1) + ((a) & 1) : (((a) >> ((shift) - 1)) + 1) >> 1)
-#define silk_RSHIFT_ROUND64(a, shift) ((shift) == 1 ? ((a) >> 1) + ((a) & 1) : (((a) >> ((shift) - 1)) + 1) >> 1)
-
-/* Number of rightshift required to fit the multiplication */
-#define silk_NSHIFT_MUL_32_32(a, b) ( -(31- (32-silk_CLZ32(silk_abs(a)) + (32-silk_CLZ32(silk_abs(b))))) )
-#define silk_NSHIFT_MUL_16_16(a, b) ( -(15- (16-silk_CLZ16(silk_abs(a)) + (16-silk_CLZ16(silk_abs(b))))) )
-
-
-#define silk_min(a, b) (((a) < (b)) ? (a) : (b))
-#define silk_max(a, b) (((a) > (b)) ? (a) : (b))
-
-/* Macro to convert floating-point constants to fixed-point */
-#define SILK_FIX_CONST( C, Q ) ((opus_int32)((C) * ((opus_int64)1 << (Q)) + 0.5))
-
-/* silk_min() versions with typecast in the function call */
-static OPUS_INLINE opus_int silk_min_int(opus_int a, opus_int b)
-{
- return (((a) < (b)) ? (a) : (b));
-}
-static OPUS_INLINE opus_int16 silk_min_16(opus_int16 a, opus_int16 b)
-{
- return (((a) < (b)) ? (a) : (b));
-}
-static OPUS_INLINE opus_int32 silk_min_32(opus_int32 a, opus_int32 b)
-{
- return (((a) < (b)) ? (a) : (b));
-}
-static OPUS_INLINE opus_int64 silk_min_64(opus_int64 a, opus_int64 b)
-{
- return (((a) < (b)) ? (a) : (b));
-}
-
-/* silk_min() versions with typecast in the function call */
-static OPUS_INLINE opus_int silk_max_int(opus_int a, opus_int b)
-{
- return (((a) > (b)) ? (a) : (b));
-}
-static OPUS_INLINE opus_int16 silk_max_16(opus_int16 a, opus_int16 b)
-{
- return (((a) > (b)) ? (a) : (b));
-}
-static OPUS_INLINE opus_int32 silk_max_32(opus_int32 a, opus_int32 b)
-{
- return (((a) > (b)) ? (a) : (b));
-}
-static OPUS_INLINE opus_int64 silk_max_64(opus_int64 a, opus_int64 b)
-{
- return (((a) > (b)) ? (a) : (b));
-}
-
-#define silk_LIMIT( a, limit1, limit2) ((limit1) > (limit2) ? ((a) > (limit1) ? (limit1) : ((a) < (limit2) ? (limit2) : (a))) \
- : ((a) > (limit2) ? (limit2) : ((a) < (limit1) ? (limit1) : (a))))
-
-#define silk_LIMIT_int silk_LIMIT
-#define silk_LIMIT_16 silk_LIMIT
-#define silk_LIMIT_32 silk_LIMIT
-
-#define silk_abs(a) (((a) > 0) ? (a) : -(a)) /* Be careful, silk_abs returns wrong when input equals to silk_intXX_MIN */
-#define silk_abs_int(a) (((a) ^ ((a) >> (8 * sizeof(a) - 1))) - ((a) >> (8 * sizeof(a) - 1)))
-#define silk_abs_int32(a) (((a) ^ ((a) >> 31)) - ((a) >> 31))
-#define silk_abs_int64(a) (((a) > 0) ? (a) : -(a))
-
-#define silk_sign(a) ((a) > 0 ? 1 : ( (a) < 0 ? -1 : 0 ))
-
-/* PSEUDO-RANDOM GENERATOR */
-/* Make sure to store the result as the seed for the next call (also in between */
-/* frames), otherwise result won't be random at all. When only using some of the */
-/* bits, take the most significant bits by right-shifting. */
-#define silk_RAND(seed) (silk_MLA_ovflw(907633515, (seed), 196314165))
-
-/* Add some multiplication functions that can be easily mapped to ARM. */
-
-/* silk_SMMUL: Signed top word multiply.
- ARMv6 2 instruction cycles.
- ARMv3M+ 3 instruction cycles. use SMULL and ignore LSB registers.(except xM)*/
-/*#define silk_SMMUL(a32, b32) (opus_int32)silk_RSHIFT(silk_SMLAL(silk_SMULWB((a32), (b32)), (a32), silk_RSHIFT_ROUND((b32), 16)), 16)*/
-/* the following seems faster on x86 */
-#define silk_SMMUL(a32, b32) (opus_int32)silk_RSHIFT64(silk_SMULL((a32), (b32)), 32)
-
-#if !defined(OPUS_X86_MAY_HAVE_SSE4_1)
-#define silk_burg_modified(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch) \
- ((void)(arch), silk_burg_modified_c(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch))
-
-#define silk_inner_prod16_aligned_64(inVec1, inVec2, len, arch) \
- ((void)(arch),silk_inner_prod16_aligned_64_c(inVec1, inVec2, len))
-#endif
-
-#include "Inlines.h"
-#include "MacroCount.h"
-#include "MacroDebug.h"
-
-#ifdef OPUS_ARM_INLINE_ASM
-#include "arm/SigProc_FIX_armv4.h"
-#endif
-
-#ifdef OPUS_ARM_INLINE_EDSP
-#include "arm/SigProc_FIX_armv5e.h"
-#endif
-
-#if defined(MIPSr1_ASM)
-#include "mips/sigproc_fix_mipsr1.h"
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SILK_SIGPROC_FIX_H */
diff --git a/thirdparty/opus/silk/VAD.c b/thirdparty/opus/silk/VAD.c
deleted file mode 100644
index 0a782af2f1..0000000000
--- a/thirdparty/opus/silk/VAD.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-
-/* Silk VAD noise level estimation */
-# if !defined(OPUS_X86_MAY_HAVE_SSE4_1)
-static OPUS_INLINE void silk_VAD_GetNoiseLevels(
- const opus_int32 pX[ VAD_N_BANDS ], /* I subband energies */
- silk_VAD_state *psSilk_VAD /* I/O Pointer to Silk VAD state */
-);
-#endif
-
-/**********************************/
-/* Initialization of the Silk VAD */
-/**********************************/
-opus_int silk_VAD_Init( /* O Return value, 0 if success */
- silk_VAD_state *psSilk_VAD /* I/O Pointer to Silk VAD state */
-)
-{
- opus_int b, ret = 0;
-
- /* reset state memory */
- silk_memset( psSilk_VAD, 0, sizeof( silk_VAD_state ) );
-
- /* init noise levels */
- /* Initialize array with approx pink noise levels (psd proportional to inverse of frequency) */
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- psSilk_VAD->NoiseLevelBias[ b ] = silk_max_32( silk_DIV32_16( VAD_NOISE_LEVELS_BIAS, b + 1 ), 1 );
- }
-
- /* Initialize state */
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- psSilk_VAD->NL[ b ] = silk_MUL( 100, psSilk_VAD->NoiseLevelBias[ b ] );
- psSilk_VAD->inv_NL[ b ] = silk_DIV32( silk_int32_MAX, psSilk_VAD->NL[ b ] );
- }
- psSilk_VAD->counter = 15;
-
- /* init smoothed energy-to-noise ratio*/
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- psSilk_VAD->NrgRatioSmth_Q8[ b ] = 100 * 256; /* 100 * 256 --> 20 dB SNR */
- }
-
- return( ret );
-}
-
-/* Weighting factors for tilt measure */
-static const opus_int32 tiltWeights[ VAD_N_BANDS ] = { 30000, 6000, -12000, -12000 };
-
-/***************************************/
-/* Get the speech activity level in Q8 */
-/***************************************/
-opus_int silk_VAD_GetSA_Q8_c( /* O Return value, 0 if success */
- silk_encoder_state *psEncC, /* I/O Encoder state */
- const opus_int16 pIn[] /* I PCM input */
-)
-{
- opus_int SA_Q15, pSNR_dB_Q7, input_tilt;
- opus_int decimated_framelength1, decimated_framelength2;
- opus_int decimated_framelength;
- opus_int dec_subframe_length, dec_subframe_offset, SNR_Q7, i, b, s;
- opus_int32 sumSquared, smooth_coef_Q16;
- opus_int16 HPstateTmp;
- VARDECL( opus_int16, X );
- opus_int32 Xnrg[ VAD_N_BANDS ];
- opus_int32 NrgToNoiseRatio_Q8[ VAD_N_BANDS ];
- opus_int32 speech_nrg, x_tmp;
- opus_int X_offset[ VAD_N_BANDS ];
- opus_int ret = 0;
- silk_VAD_state *psSilk_VAD = &psEncC->sVAD;
- SAVE_STACK;
-
- /* Safety checks */
- silk_assert( VAD_N_BANDS == 4 );
- silk_assert( MAX_FRAME_LENGTH >= psEncC->frame_length );
- silk_assert( psEncC->frame_length <= 512 );
- silk_assert( psEncC->frame_length == 8 * silk_RSHIFT( psEncC->frame_length, 3 ) );
-
- /***********************/
- /* Filter and Decimate */
- /***********************/
- decimated_framelength1 = silk_RSHIFT( psEncC->frame_length, 1 );
- decimated_framelength2 = silk_RSHIFT( psEncC->frame_length, 2 );
- decimated_framelength = silk_RSHIFT( psEncC->frame_length, 3 );
- /* Decimate into 4 bands:
- 0 L 3L L 3L 5L
- - -- - -- --
- 8 8 2 4 4
-
- [0-1 kHz| temp. |1-2 kHz| 2-4 kHz | 4-8 kHz |
-
- They're arranged to allow the minimal ( frame_length / 4 ) extra
- scratch space during the downsampling process */
- X_offset[ 0 ] = 0;
- X_offset[ 1 ] = decimated_framelength + decimated_framelength2;
- X_offset[ 2 ] = X_offset[ 1 ] + decimated_framelength;
- X_offset[ 3 ] = X_offset[ 2 ] + decimated_framelength2;
- ALLOC( X, X_offset[ 3 ] + decimated_framelength1, opus_int16 );
-
- /* 0-8 kHz to 0-4 kHz and 4-8 kHz */
- silk_ana_filt_bank_1( pIn, &psSilk_VAD->AnaState[ 0 ],
- X, &X[ X_offset[ 3 ] ], psEncC->frame_length );
-
- /* 0-4 kHz to 0-2 kHz and 2-4 kHz */
- silk_ana_filt_bank_1( X, &psSilk_VAD->AnaState1[ 0 ],
- X, &X[ X_offset[ 2 ] ], decimated_framelength1 );
-
- /* 0-2 kHz to 0-1 kHz and 1-2 kHz */
- silk_ana_filt_bank_1( X, &psSilk_VAD->AnaState2[ 0 ],
- X, &X[ X_offset[ 1 ] ], decimated_framelength2 );
-
- /*********************************************/
- /* HP filter on lowest band (differentiator) */
- /*********************************************/
- X[ decimated_framelength - 1 ] = silk_RSHIFT( X[ decimated_framelength - 1 ], 1 );
- HPstateTmp = X[ decimated_framelength - 1 ];
- for( i = decimated_framelength - 1; i > 0; i-- ) {
- X[ i - 1 ] = silk_RSHIFT( X[ i - 1 ], 1 );
- X[ i ] -= X[ i - 1 ];
- }
- X[ 0 ] -= psSilk_VAD->HPstate;
- psSilk_VAD->HPstate = HPstateTmp;
-
- /*************************************/
- /* Calculate the energy in each band */
- /*************************************/
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- /* Find the decimated framelength in the non-uniformly divided bands */
- decimated_framelength = silk_RSHIFT( psEncC->frame_length, silk_min_int( VAD_N_BANDS - b, VAD_N_BANDS - 1 ) );
-
- /* Split length into subframe lengths */
- dec_subframe_length = silk_RSHIFT( decimated_framelength, VAD_INTERNAL_SUBFRAMES_LOG2 );
- dec_subframe_offset = 0;
-
- /* Compute energy per sub-frame */
- /* initialize with summed energy of last subframe */
- Xnrg[ b ] = psSilk_VAD->XnrgSubfr[ b ];
- for( s = 0; s < VAD_INTERNAL_SUBFRAMES; s++ ) {
- sumSquared = 0;
- for( i = 0; i < dec_subframe_length; i++ ) {
- /* The energy will be less than dec_subframe_length * ( silk_int16_MIN / 8 ) ^ 2. */
- /* Therefore we can accumulate with no risk of overflow (unless dec_subframe_length > 128) */
- x_tmp = silk_RSHIFT(
- X[ X_offset[ b ] + i + dec_subframe_offset ], 3 );
- sumSquared = silk_SMLABB( sumSquared, x_tmp, x_tmp );
-
- /* Safety check */
- silk_assert( sumSquared >= 0 );
- }
-
- /* Add/saturate summed energy of current subframe */
- if( s < VAD_INTERNAL_SUBFRAMES - 1 ) {
- Xnrg[ b ] = silk_ADD_POS_SAT32( Xnrg[ b ], sumSquared );
- } else {
- /* Look-ahead subframe */
- Xnrg[ b ] = silk_ADD_POS_SAT32( Xnrg[ b ], silk_RSHIFT( sumSquared, 1 ) );
- }
-
- dec_subframe_offset += dec_subframe_length;
- }
- psSilk_VAD->XnrgSubfr[ b ] = sumSquared;
- }
-
- /********************/
- /* Noise estimation */
- /********************/
- silk_VAD_GetNoiseLevels( &Xnrg[ 0 ], psSilk_VAD );
-
- /***********************************************/
- /* Signal-plus-noise to noise ratio estimation */
- /***********************************************/
- sumSquared = 0;
- input_tilt = 0;
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- speech_nrg = Xnrg[ b ] - psSilk_VAD->NL[ b ];
- if( speech_nrg > 0 ) {
- /* Divide, with sufficient resolution */
- if( ( Xnrg[ b ] & 0xFF800000 ) == 0 ) {
- NrgToNoiseRatio_Q8[ b ] = silk_DIV32( silk_LSHIFT( Xnrg[ b ], 8 ), psSilk_VAD->NL[ b ] + 1 );
- } else {
- NrgToNoiseRatio_Q8[ b ] = silk_DIV32( Xnrg[ b ], silk_RSHIFT( psSilk_VAD->NL[ b ], 8 ) + 1 );
- }
-
- /* Convert to log domain */
- SNR_Q7 = silk_lin2log( NrgToNoiseRatio_Q8[ b ] ) - 8 * 128;
-
- /* Sum-of-squares */
- sumSquared = silk_SMLABB( sumSquared, SNR_Q7, SNR_Q7 ); /* Q14 */
-
- /* Tilt measure */
- if( speech_nrg < ( (opus_int32)1 << 20 ) ) {
- /* Scale down SNR value for small subband speech energies */
- SNR_Q7 = silk_SMULWB( silk_LSHIFT( silk_SQRT_APPROX( speech_nrg ), 6 ), SNR_Q7 );
- }
- input_tilt = silk_SMLAWB( input_tilt, tiltWeights[ b ], SNR_Q7 );
- } else {
- NrgToNoiseRatio_Q8[ b ] = 256;
- }
- }
-
- /* Mean-of-squares */
- sumSquared = silk_DIV32_16( sumSquared, VAD_N_BANDS ); /* Q14 */
-
- /* Root-mean-square approximation, scale to dBs, and write to output pointer */
- pSNR_dB_Q7 = (opus_int16)( 3 * silk_SQRT_APPROX( sumSquared ) ); /* Q7 */
-
- /*********************************/
- /* Speech Probability Estimation */
- /*********************************/
- SA_Q15 = silk_sigm_Q15( silk_SMULWB( VAD_SNR_FACTOR_Q16, pSNR_dB_Q7 ) - VAD_NEGATIVE_OFFSET_Q5 );
-
- /**************************/
- /* Frequency Tilt Measure */
- /**************************/
- psEncC->input_tilt_Q15 = silk_LSHIFT( silk_sigm_Q15( input_tilt ) - 16384, 1 );
-
- /**************************************************/
- /* Scale the sigmoid output based on power levels */
- /**************************************************/
- speech_nrg = 0;
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- /* Accumulate signal-without-noise energies, higher frequency bands have more weight */
- speech_nrg += ( b + 1 ) * silk_RSHIFT( Xnrg[ b ] - psSilk_VAD->NL[ b ], 4 );
- }
-
- /* Power scaling */
- if( speech_nrg <= 0 ) {
- SA_Q15 = silk_RSHIFT( SA_Q15, 1 );
- } else if( speech_nrg < 32768 ) {
- if( psEncC->frame_length == 10 * psEncC->fs_kHz ) {
- speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 );
- } else {
- speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 );
- }
-
- /* square-root */
- speech_nrg = silk_SQRT_APPROX( speech_nrg );
- SA_Q15 = silk_SMULWB( 32768 + speech_nrg, SA_Q15 );
- }
-
- /* Copy the resulting speech activity in Q8 */
- psEncC->speech_activity_Q8 = silk_min_int( silk_RSHIFT( SA_Q15, 7 ), silk_uint8_MAX );
-
- /***********************************/
- /* Energy Level and SNR estimation */
- /***********************************/
- /* Smoothing coefficient */
- smooth_coef_Q16 = silk_SMULWB( VAD_SNR_SMOOTH_COEF_Q18, silk_SMULWB( (opus_int32)SA_Q15, SA_Q15 ) );
-
- if( psEncC->frame_length == 10 * psEncC->fs_kHz ) {
- smooth_coef_Q16 >>= 1;
- }
-
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- /* compute smoothed energy-to-noise ratio per band */
- psSilk_VAD->NrgRatioSmth_Q8[ b ] = silk_SMLAWB( psSilk_VAD->NrgRatioSmth_Q8[ b ],
- NrgToNoiseRatio_Q8[ b ] - psSilk_VAD->NrgRatioSmth_Q8[ b ], smooth_coef_Q16 );
-
- /* signal to noise ratio in dB per band */
- SNR_Q7 = 3 * ( silk_lin2log( psSilk_VAD->NrgRatioSmth_Q8[b] ) - 8 * 128 );
- /* quality = sigmoid( 0.25 * ( SNR_dB - 16 ) ); */
- psEncC->input_quality_bands_Q15[ b ] = silk_sigm_Q15( silk_RSHIFT( SNR_Q7 - 16 * 128, 4 ) );
- }
-
- RESTORE_STACK;
- return( ret );
-}
-
-/**************************/
-/* Noise level estimation */
-/**************************/
-# if !defined(OPUS_X86_MAY_HAVE_SSE4_1)
-static OPUS_INLINE
-#endif
-void silk_VAD_GetNoiseLevels(
- const opus_int32 pX[ VAD_N_BANDS ], /* I subband energies */
- silk_VAD_state *psSilk_VAD /* I/O Pointer to Silk VAD state */
-)
-{
- opus_int k;
- opus_int32 nl, nrg, inv_nrg;
- opus_int coef, min_coef;
-
- /* Initially faster smoothing */
- if( psSilk_VAD->counter < 1000 ) { /* 1000 = 20 sec */
- min_coef = silk_DIV32_16( silk_int16_MAX, silk_RSHIFT( psSilk_VAD->counter, 4 ) + 1 );
- } else {
- min_coef = 0;
- }
-
- for( k = 0; k < VAD_N_BANDS; k++ ) {
- /* Get old noise level estimate for current band */
- nl = psSilk_VAD->NL[ k ];
- silk_assert( nl >= 0 );
-
- /* Add bias */
- nrg = silk_ADD_POS_SAT32( pX[ k ], psSilk_VAD->NoiseLevelBias[ k ] );
- silk_assert( nrg > 0 );
-
- /* Invert energies */
- inv_nrg = silk_DIV32( silk_int32_MAX, nrg );
- silk_assert( inv_nrg >= 0 );
-
- /* Less update when subband energy is high */
- if( nrg > silk_LSHIFT( nl, 3 ) ) {
- coef = VAD_NOISE_LEVEL_SMOOTH_COEF_Q16 >> 3;
- } else if( nrg < nl ) {
- coef = VAD_NOISE_LEVEL_SMOOTH_COEF_Q16;
- } else {
- coef = silk_SMULWB( silk_SMULWW( inv_nrg, nl ), VAD_NOISE_LEVEL_SMOOTH_COEF_Q16 << 1 );
- }
-
- /* Initially faster smoothing */
- coef = silk_max_int( coef, min_coef );
-
- /* Smooth inverse energies */
- psSilk_VAD->inv_NL[ k ] = silk_SMLAWB( psSilk_VAD->inv_NL[ k ], inv_nrg - psSilk_VAD->inv_NL[ k ], coef );
- silk_assert( psSilk_VAD->inv_NL[ k ] >= 0 );
-
- /* Compute noise level by inverting again */
- nl = silk_DIV32( silk_int32_MAX, psSilk_VAD->inv_NL[ k ] );
- silk_assert( nl >= 0 );
-
- /* Limit noise levels (guarantee 7 bits of head room) */
- nl = silk_min( nl, 0x00FFFFFF );
-
- /* Store as part of state */
- psSilk_VAD->NL[ k ] = nl;
- }
-
- /* Increment frame counter */
- psSilk_VAD->counter++;
-}
diff --git a/thirdparty/opus/silk/VQ_WMat_EC.c b/thirdparty/opus/silk/VQ_WMat_EC.c
deleted file mode 100644
index 7983f1db80..0000000000
--- a/thirdparty/opus/silk/VQ_WMat_EC.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Entropy constrained matrix-weighted VQ, hard-coded to 5-element vectors, for a single input data vector */
-void silk_VQ_WMat_EC_c(
- opus_int8 *ind, /* O index of best codebook vector */
- opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */
- opus_int *gain_Q7, /* O sum of absolute LTP coefficients */
- const opus_int16 *in_Q14, /* I input vector to be quantized */
- const opus_int32 *W_Q18, /* I weighting matrix */
- const opus_int8 *cb_Q7, /* I codebook */
- const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */
- const opus_uint8 *cl_Q5, /* I code length for each codebook vector */
- const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */
- const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */
- opus_int L /* I number of vectors in codebook */
-)
-{
- opus_int k, gain_tmp_Q7;
- const opus_int8 *cb_row_Q7;
- opus_int16 diff_Q14[ 5 ];
- opus_int32 sum1_Q14, sum2_Q16;
-
- /* Loop over codebook */
- *rate_dist_Q14 = silk_int32_MAX;
- cb_row_Q7 = cb_Q7;
- for( k = 0; k < L; k++ ) {
- gain_tmp_Q7 = cb_gain_Q7[k];
-
- diff_Q14[ 0 ] = in_Q14[ 0 ] - silk_LSHIFT( cb_row_Q7[ 0 ], 7 );
- diff_Q14[ 1 ] = in_Q14[ 1 ] - silk_LSHIFT( cb_row_Q7[ 1 ], 7 );
- diff_Q14[ 2 ] = in_Q14[ 2 ] - silk_LSHIFT( cb_row_Q7[ 2 ], 7 );
- diff_Q14[ 3 ] = in_Q14[ 3 ] - silk_LSHIFT( cb_row_Q7[ 3 ], 7 );
- diff_Q14[ 4 ] = in_Q14[ 4 ] - silk_LSHIFT( cb_row_Q7[ 4 ], 7 );
-
- /* Weighted rate */
- sum1_Q14 = silk_SMULBB( mu_Q9, cl_Q5[ k ] );
-
- /* Penalty for too large gain */
- sum1_Q14 = silk_ADD_LSHIFT32( sum1_Q14, silk_max( silk_SUB32( gain_tmp_Q7, max_gain_Q7 ), 0 ), 10 );
-
- silk_assert( sum1_Q14 >= 0 );
-
- /* first row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 1 ], diff_Q14[ 1 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 2 ], diff_Q14[ 2 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 3 ], diff_Q14[ 3 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 4 ], diff_Q14[ 4 ] );
- sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 0 ], diff_Q14[ 0 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 0 ] );
-
- /* second row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 7 ], diff_Q14[ 2 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 8 ], diff_Q14[ 3 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 9 ], diff_Q14[ 4 ] );
- sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 6 ], diff_Q14[ 1 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 1 ] );
-
- /* third row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 13 ], diff_Q14[ 3 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 14 ], diff_Q14[ 4 ] );
- sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 12 ], diff_Q14[ 2 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 2 ] );
-
- /* fourth row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 19 ], diff_Q14[ 4 ] );
- sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 18 ], diff_Q14[ 3 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 3 ] );
-
- /* last row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 24 ], diff_Q14[ 4 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 4 ] );
-
- silk_assert( sum1_Q14 >= 0 );
-
- /* find best */
- if( sum1_Q14 < *rate_dist_Q14 ) {
- *rate_dist_Q14 = sum1_Q14;
- *ind = (opus_int8)k;
- *gain_Q7 = gain_tmp_Q7;
- }
-
- /* Go to next cbk vector */
- cb_row_Q7 += LTP_ORDER;
- }
-}
diff --git a/thirdparty/opus/silk/ana_filt_bank_1.c b/thirdparty/opus/silk/ana_filt_bank_1.c
deleted file mode 100644
index 24cfb03fdb..0000000000
--- a/thirdparty/opus/silk/ana_filt_bank_1.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Coefficients for 2-band filter bank based on first-order allpass filters */
-static opus_int16 A_fb1_20 = 5394 << 1;
-static opus_int16 A_fb1_21 = -24290; /* (opus_int16)(20623 << 1) */
-
-/* Split signal into two decimated bands using first-order allpass filters */
-void silk_ana_filt_bank_1(
- const opus_int16 *in, /* I Input signal [N] */
- opus_int32 *S, /* I/O State vector [2] */
- opus_int16 *outL, /* O Low band [N/2] */
- opus_int16 *outH, /* O High band [N/2] */
- const opus_int32 N /* I Number of input samples */
-)
-{
- opus_int k, N2 = silk_RSHIFT( N, 1 );
- opus_int32 in32, X, Y, out_1, out_2;
-
- /* Internal variables and state are in Q10 format */
- for( k = 0; k < N2; k++ ) {
- /* Convert to Q10 */
- in32 = silk_LSHIFT( (opus_int32)in[ 2 * k ], 10 );
-
- /* All-pass section for even input sample */
- Y = silk_SUB32( in32, S[ 0 ] );
- X = silk_SMLAWB( Y, Y, A_fb1_21 );
- out_1 = silk_ADD32( S[ 0 ], X );
- S[ 0 ] = silk_ADD32( in32, X );
-
- /* Convert to Q10 */
- in32 = silk_LSHIFT( (opus_int32)in[ 2 * k + 1 ], 10 );
-
- /* All-pass section for odd input sample, and add to output of previous section */
- Y = silk_SUB32( in32, S[ 1 ] );
- X = silk_SMULWB( Y, A_fb1_20 );
- out_2 = silk_ADD32( S[ 1 ], X );
- S[ 1 ] = silk_ADD32( in32, X );
-
- /* Add/subtract, convert back to int16 and store to output */
- outL[ k ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_ADD32( out_2, out_1 ), 11 ) );
- outH[ k ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SUB32( out_2, out_1 ), 11 ) );
- }
-}
diff --git a/thirdparty/opus/silk/arm/NSQ_neon.c b/thirdparty/opus/silk/arm/NSQ_neon.c
deleted file mode 100644
index 9642529973..0000000000
--- a/thirdparty/opus/silk/arm/NSQ_neon.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/***********************************************************************
-Copyright (C) 2014 Vidyo
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <arm_neon.h>
-#include "main.h"
-#include "stack_alloc.h"
-#include "NSQ.h"
-#include "celt/cpu_support.h"
-#include "celt/arm/armcpu.h"
-
-opus_int32 silk_noise_shape_quantizer_short_prediction_neon(const opus_int32 *buf32, const opus_int32 *coef32, opus_int order)
-{
- int32x4_t coef0 = vld1q_s32(coef32);
- int32x4_t coef1 = vld1q_s32(coef32 + 4);
- int32x4_t coef2 = vld1q_s32(coef32 + 8);
- int32x4_t coef3 = vld1q_s32(coef32 + 12);
-
- int32x4_t a0 = vld1q_s32(buf32 - 15);
- int32x4_t a1 = vld1q_s32(buf32 - 11);
- int32x4_t a2 = vld1q_s32(buf32 - 7);
- int32x4_t a3 = vld1q_s32(buf32 - 3);
-
- int32x4_t b0 = vqdmulhq_s32(coef0, a0);
- int32x4_t b1 = vqdmulhq_s32(coef1, a1);
- int32x4_t b2 = vqdmulhq_s32(coef2, a2);
- int32x4_t b3 = vqdmulhq_s32(coef3, a3);
-
- int32x4_t c0 = vaddq_s32(b0, b1);
- int32x4_t c1 = vaddq_s32(b2, b3);
-
- int32x4_t d = vaddq_s32(c0, c1);
-
- int64x2_t e = vpaddlq_s32(d);
-
- int64x1_t f = vadd_s64(vget_low_s64(e), vget_high_s64(e));
-
- opus_int32 out = vget_lane_s32(vreinterpret_s32_s64(f), 0);
-
- out += silk_RSHIFT( order, 1 );
-
- return out;
-}
-
-
-opus_int32 silk_NSQ_noise_shape_feedback_loop_neon(const opus_int32 *data0, opus_int32 *data1, const opus_int16 *coef, opus_int order)
-{
- opus_int32 out;
- if (order == 8)
- {
- int32x4_t a00 = vdupq_n_s32(data0[0]);
- int32x4_t a01 = vld1q_s32(data1); /* data1[0] ... [3] */
-
- int32x4_t a0 = vextq_s32 (a00, a01, 3); /* data0[0] data1[0] ...[2] */
- int32x4_t a1 = vld1q_s32(data1 + 3); /* data1[3] ... [6] */
-
- /*TODO: Convert these once in advance instead of once per sample, like
- silk_noise_shape_quantizer_short_prediction_neon() does.*/
- int16x8_t coef16 = vld1q_s16(coef);
- int32x4_t coef0 = vmovl_s16(vget_low_s16(coef16));
- int32x4_t coef1 = vmovl_s16(vget_high_s16(coef16));
-
- /*This is not bit-exact with the C version, since we do not drop the
- lower 16 bits of each multiply, but wait until the end to truncate
- precision. This is an encoder-specific calculation (and unlike
- silk_noise_shape_quantizer_short_prediction_neon(), is not meant to
- simulate what the decoder will do). We still could use vqdmulhq_s32()
- like silk_noise_shape_quantizer_short_prediction_neon() and save
- half the multiplies, but the speed difference is not large, since we
- then need two extra adds.*/
- int64x2_t b0 = vmull_s32(vget_low_s32(a0), vget_low_s32(coef0));
- int64x2_t b1 = vmlal_s32(b0, vget_high_s32(a0), vget_high_s32(coef0));
- int64x2_t b2 = vmlal_s32(b1, vget_low_s32(a1), vget_low_s32(coef1));
- int64x2_t b3 = vmlal_s32(b2, vget_high_s32(a1), vget_high_s32(coef1));
-
- int64x1_t c = vadd_s64(vget_low_s64(b3), vget_high_s64(b3));
- int64x1_t cS = vrshr_n_s64(c, 15);
- int32x2_t d = vreinterpret_s32_s64(cS);
-
- out = vget_lane_s32(d, 0);
- vst1q_s32(data1, a0);
- vst1q_s32(data1 + 4, a1);
- return out;
- }
- return silk_NSQ_noise_shape_feedback_loop_c(data0, data1, coef, order);
-}
diff --git a/thirdparty/opus/silk/arm/NSQ_neon.h b/thirdparty/opus/silk/arm/NSQ_neon.h
deleted file mode 100644
index 77c946af85..0000000000
--- a/thirdparty/opus/silk/arm/NSQ_neon.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/***********************************************************************
-Copyright (C) 2014 Vidyo
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-#ifndef SILK_NSQ_NEON_H
-#define SILK_NSQ_NEON_H
-
-#include "cpu_support.h"
-
-#undef silk_short_prediction_create_arch_coef
-/* For vectorized calc, reverse a_Q12 coefs, convert to 32-bit, and shift for vqdmulhq_s32. */
-static OPUS_INLINE void silk_short_prediction_create_arch_coef_neon(opus_int32 *out, const opus_int16 *in, opus_int order)
-{
- out[15] = in[0] << 15;
- out[14] = in[1] << 15;
- out[13] = in[2] << 15;
- out[12] = in[3] << 15;
- out[11] = in[4] << 15;
- out[10] = in[5] << 15;
- out[9] = in[6] << 15;
- out[8] = in[7] << 15;
- out[7] = in[8] << 15;
- out[6] = in[9] << 15;
-
- if (order == 16)
- {
- out[5] = in[10] << 15;
- out[4] = in[11] << 15;
- out[3] = in[12] << 15;
- out[2] = in[13] << 15;
- out[1] = in[14] << 15;
- out[0] = in[15] << 15;
- }
- else
- {
- out[5] = 0;
- out[4] = 0;
- out[3] = 0;
- out[2] = 0;
- out[1] = 0;
- out[0] = 0;
- }
-}
-
-#if defined(OPUS_ARM_PRESUME_NEON_INTR)
-
-#define silk_short_prediction_create_arch_coef(out, in, order) \
- (silk_short_prediction_create_arch_coef_neon(out, in, order))
-
-#elif defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-
-#define silk_short_prediction_create_arch_coef(out, in, order) \
- do { if (arch == OPUS_ARCH_ARM_NEON) { silk_short_prediction_create_arch_coef_neon(out, in, order); } } while (0)
-
-#endif
-
-opus_int32 silk_noise_shape_quantizer_short_prediction_neon(const opus_int32 *buf32, const opus_int32 *coef32, opus_int order);
-
-opus_int32 silk_NSQ_noise_shape_feedback_loop_neon(const opus_int32 *data0, opus_int32 *data1, const opus_int16 *coef, opus_int order);
-
-#if defined(OPUS_ARM_PRESUME_NEON_INTR)
-#undef silk_noise_shape_quantizer_short_prediction
-#define silk_noise_shape_quantizer_short_prediction(in, coef, coefRev, order, arch) \
- ((void)arch,silk_noise_shape_quantizer_short_prediction_neon(in, coefRev, order))
-
-#undef silk_NSQ_noise_shape_feedback_loop
-#define silk_NSQ_noise_shape_feedback_loop(data0, data1, coef, order, arch) ((void)arch,silk_NSQ_noise_shape_feedback_loop_neon(data0, data1, coef, order))
-
-#elif defined(OPUS_HAVE_RTCD) && defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
-
-/* silk_noise_shape_quantizer_short_prediction implementations take different parameters based on arch
- (coef vs. coefRev) so can't use the usual IMPL table implementation */
-#undef silk_noise_shape_quantizer_short_prediction
-#define silk_noise_shape_quantizer_short_prediction(in, coef, coefRev, order, arch) \
- (arch == OPUS_ARCH_ARM_NEON ? \
- silk_noise_shape_quantizer_short_prediction_neon(in, coefRev, order) : \
- silk_noise_shape_quantizer_short_prediction_c(in, coef, order))
-
-extern opus_int32
- (*const SILK_NSQ_NOISE_SHAPE_FEEDBACK_LOOP_IMPL[OPUS_ARCHMASK+1])(
- const opus_int32 *data0, opus_int32 *data1, const opus_int16 *coef,
- opus_int order);
-
-#undef silk_NSQ_noise_shape_feedback_loop
-#define silk_NSQ_noise_shape_feedback_loop(data0, data1, coef, order, arch) \
- (SILK_NSQ_NOISE_SHAPE_FEEDBACK_LOOP_IMPL[(arch)&OPUS_ARCHMASK](data0, data1, \
- coef, order))
-
-#endif
-
-#endif /* SILK_NSQ_NEON_H */
diff --git a/thirdparty/opus/silk/arm/SigProc_FIX_armv4.h b/thirdparty/opus/silk/arm/SigProc_FIX_armv4.h
deleted file mode 100644
index ff62b1e5d6..0000000000
--- a/thirdparty/opus/silk/arm/SigProc_FIX_armv4.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/***********************************************************************
-Copyright (C) 2013 Xiph.Org Foundation and contributors
-Copyright (c) 2013 Parrot
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_SIGPROC_FIX_ARMv4_H
-#define SILK_SIGPROC_FIX_ARMv4_H
-
-#undef silk_MLA
-static OPUS_INLINE opus_int32 silk_MLA_armv4(opus_int32 a, opus_int32 b,
- opus_int32 c)
-{
- opus_int32 res;
- __asm__(
- "#silk_MLA\n\t"
- "mla %0, %1, %2, %3\n\t"
- : "=&r"(res)
- : "r"(b), "r"(c), "r"(a)
- );
- return res;
-}
-#define silk_MLA(a, b, c) (silk_MLA_armv4(a, b, c))
-
-#endif
diff --git a/thirdparty/opus/silk/arm/SigProc_FIX_armv5e.h b/thirdparty/opus/silk/arm/SigProc_FIX_armv5e.h
deleted file mode 100644
index 617a09cab1..0000000000
--- a/thirdparty/opus/silk/arm/SigProc_FIX_armv5e.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Copyright (c) 2013 Parrot
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_SIGPROC_FIX_ARMv5E_H
-#define SILK_SIGPROC_FIX_ARMv5E_H
-
-#undef silk_SMULTT
-static OPUS_INLINE opus_int32 silk_SMULTT_armv5e(opus_int32 a, opus_int32 b)
-{
- opus_int32 res;
- __asm__(
- "#silk_SMULTT\n\t"
- "smultt %0, %1, %2\n\t"
- : "=r"(res)
- : "%r"(a), "r"(b)
- );
- return res;
-}
-#define silk_SMULTT(a, b) (silk_SMULTT_armv5e(a, b))
-
-#undef silk_SMLATT
-static OPUS_INLINE opus_int32 silk_SMLATT_armv5e(opus_int32 a, opus_int32 b,
- opus_int32 c)
-{
- opus_int32 res;
- __asm__(
- "#silk_SMLATT\n\t"
- "smlatt %0, %1, %2, %3\n\t"
- : "=r"(res)
- : "%r"(b), "r"(c), "r"(a)
- );
- return res;
-}
-#define silk_SMLATT(a, b, c) (silk_SMLATT_armv5e(a, b, c))
-
-#endif
diff --git a/thirdparty/opus/silk/arm/arm_silk_map.c b/thirdparty/opus/silk/arm/arm_silk_map.c
deleted file mode 100644
index 9bd86a7b21..0000000000
--- a/thirdparty/opus/silk/arm/arm_silk_map.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/***********************************************************************
-Copyright (C) 2014 Vidyo
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include "NSQ.h"
-
-#if defined(OPUS_HAVE_RTCD)
-
-# if (defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && \
- !defined(OPUS_ARM_PRESUME_NEON_INTR))
-
-/*There is no table for silk_noise_shape_quantizer_short_prediction because the
- NEON version takes different parameters than the C version.
- Instead RTCD is done via if statements at the call sites.
- See NSQ_neon.h for details.*/
-
-opus_int32
- (*const SILK_NSQ_NOISE_SHAPE_FEEDBACK_LOOP_IMPL[OPUS_ARCHMASK+1])(
- const opus_int32 *data0, opus_int32 *data1, const opus_int16 *coef,
- opus_int order) = {
- silk_NSQ_noise_shape_feedback_loop_c, /* ARMv4 */
- silk_NSQ_noise_shape_feedback_loop_c, /* EDSP */
- silk_NSQ_noise_shape_feedback_loop_c, /* Media */
- silk_NSQ_noise_shape_feedback_loop_neon, /* NEON */
-};
-
-# endif
-
-#endif /* OPUS_HAVE_RTCD */
diff --git a/thirdparty/opus/silk/arm/macros_arm64.h b/thirdparty/opus/silk/arm/macros_arm64.h
deleted file mode 100644
index ed030413c5..0000000000
--- a/thirdparty/opus/silk/arm/macros_arm64.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/***********************************************************************
-Copyright (C) 2015 Vidyo
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_MACROS_ARM64_H
-#define SILK_MACROS_ARM64_H
-
-#include <arm_neon.h>
-
-#undef silk_ADD_SAT32
-#define silk_ADD_SAT32(a, b) (vqadds_s32((a), (b)))
-
-#undef silk_SUB_SAT32
-#define silk_SUB_SAT32(a, b) (vqsubs_s32((a), (b)))
-
-#endif /* SILK_MACROS_ARM64_H */
diff --git a/thirdparty/opus/silk/arm/macros_armv4.h b/thirdparty/opus/silk/arm/macros_armv4.h
deleted file mode 100644
index 3f30e97288..0000000000
--- a/thirdparty/opus/silk/arm/macros_armv4.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/***********************************************************************
-Copyright (C) 2013 Xiph.Org Foundation and contributors.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_MACROS_ARMv4_H
-#define SILK_MACROS_ARMv4_H
-
-/* (a32 * (opus_int32)((opus_int16)(b32))) >> 16 output have to be 32bit int */
-#undef silk_SMULWB
-static OPUS_INLINE opus_int32 silk_SMULWB_armv4(opus_int32 a, opus_int16 b)
-{
- unsigned rd_lo;
- int rd_hi;
- __asm__(
- "#silk_SMULWB\n\t"
- "smull %0, %1, %2, %3\n\t"
- : "=&r"(rd_lo), "=&r"(rd_hi)
- : "%r"(a), "r"(b<<16)
- );
- return rd_hi;
-}
-#define silk_SMULWB(a, b) (silk_SMULWB_armv4(a, b))
-
-/* a32 + (b32 * (opus_int32)((opus_int16)(c32))) >> 16 output have to be 32bit int */
-#undef silk_SMLAWB
-#define silk_SMLAWB(a, b, c) ((a) + silk_SMULWB(b, c))
-
-/* (a32 * (b32 >> 16)) >> 16 */
-#undef silk_SMULWT
-static OPUS_INLINE opus_int32 silk_SMULWT_armv4(opus_int32 a, opus_int32 b)
-{
- unsigned rd_lo;
- int rd_hi;
- __asm__(
- "#silk_SMULWT\n\t"
- "smull %0, %1, %2, %3\n\t"
- : "=&r"(rd_lo), "=&r"(rd_hi)
- : "%r"(a), "r"(b&~0xFFFF)
- );
- return rd_hi;
-}
-#define silk_SMULWT(a, b) (silk_SMULWT_armv4(a, b))
-
-/* a32 + (b32 * (c32 >> 16)) >> 16 */
-#undef silk_SMLAWT
-#define silk_SMLAWT(a, b, c) ((a) + silk_SMULWT(b, c))
-
-/* (a32 * b32) >> 16 */
-#undef silk_SMULWW
-static OPUS_INLINE opus_int32 silk_SMULWW_armv4(opus_int32 a, opus_int32 b)
-{
- unsigned rd_lo;
- int rd_hi;
- __asm__(
- "#silk_SMULWW\n\t"
- "smull %0, %1, %2, %3\n\t"
- : "=&r"(rd_lo), "=&r"(rd_hi)
- : "%r"(a), "r"(b)
- );
- return (rd_hi<<16)+(rd_lo>>16);
-}
-#define silk_SMULWW(a, b) (silk_SMULWW_armv4(a, b))
-
-#undef silk_SMLAWW
-static OPUS_INLINE opus_int32 silk_SMLAWW_armv4(opus_int32 a, opus_int32 b,
- opus_int32 c)
-{
- unsigned rd_lo;
- int rd_hi;
- __asm__(
- "#silk_SMLAWW\n\t"
- "smull %0, %1, %2, %3\n\t"
- : "=&r"(rd_lo), "=&r"(rd_hi)
- : "%r"(b), "r"(c)
- );
- return a+(rd_hi<<16)+(rd_lo>>16);
-}
-#define silk_SMLAWW(a, b, c) (silk_SMLAWW_armv4(a, b, c))
-
-#endif /* SILK_MACROS_ARMv4_H */
diff --git a/thirdparty/opus/silk/arm/macros_armv5e.h b/thirdparty/opus/silk/arm/macros_armv5e.h
deleted file mode 100644
index aad4117e46..0000000000
--- a/thirdparty/opus/silk/arm/macros_armv5e.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Copyright (c) 2013 Parrot
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_MACROS_ARMv5E_H
-#define SILK_MACROS_ARMv5E_H
-
-/* (a32 * (opus_int32)((opus_int16)(b32))) >> 16 output have to be 32bit int */
-#undef silk_SMULWB
-static OPUS_INLINE opus_int32 silk_SMULWB_armv5e(opus_int32 a, opus_int16 b)
-{
- int res;
- __asm__(
- "#silk_SMULWB\n\t"
- "smulwb %0, %1, %2\n\t"
- : "=r"(res)
- : "r"(a), "r"(b)
- );
- return res;
-}
-#define silk_SMULWB(a, b) (silk_SMULWB_armv5e(a, b))
-
-/* a32 + (b32 * (opus_int32)((opus_int16)(c32))) >> 16 output have to be 32bit int */
-#undef silk_SMLAWB
-static OPUS_INLINE opus_int32 silk_SMLAWB_armv5e(opus_int32 a, opus_int32 b,
- opus_int16 c)
-{
- int res;
- __asm__(
- "#silk_SMLAWB\n\t"
- "smlawb %0, %1, %2, %3\n\t"
- : "=r"(res)
- : "r"(b), "r"(c), "r"(a)
- );
- return res;
-}
-#define silk_SMLAWB(a, b, c) (silk_SMLAWB_armv5e(a, b, c))
-
-/* (a32 * (b32 >> 16)) >> 16 */
-#undef silk_SMULWT
-static OPUS_INLINE opus_int32 silk_SMULWT_armv5e(opus_int32 a, opus_int32 b)
-{
- int res;
- __asm__(
- "#silk_SMULWT\n\t"
- "smulwt %0, %1, %2\n\t"
- : "=r"(res)
- : "r"(a), "r"(b)
- );
- return res;
-}
-#define silk_SMULWT(a, b) (silk_SMULWT_armv5e(a, b))
-
-/* a32 + (b32 * (c32 >> 16)) >> 16 */
-#undef silk_SMLAWT
-static OPUS_INLINE opus_int32 silk_SMLAWT_armv5e(opus_int32 a, opus_int32 b,
- opus_int32 c)
-{
- int res;
- __asm__(
- "#silk_SMLAWT\n\t"
- "smlawt %0, %1, %2, %3\n\t"
- : "=r"(res)
- : "r"(b), "r"(c), "r"(a)
- );
- return res;
-}
-#define silk_SMLAWT(a, b, c) (silk_SMLAWT_armv5e(a, b, c))
-
-/* (opus_int32)((opus_int16)(a3))) * (opus_int32)((opus_int16)(b32)) output have to be 32bit int */
-#undef silk_SMULBB
-static OPUS_INLINE opus_int32 silk_SMULBB_armv5e(opus_int32 a, opus_int32 b)
-{
- int res;
- __asm__(
- "#silk_SMULBB\n\t"
- "smulbb %0, %1, %2\n\t"
- : "=r"(res)
- : "%r"(a), "r"(b)
- );
- return res;
-}
-#define silk_SMULBB(a, b) (silk_SMULBB_armv5e(a, b))
-
-/* a32 + (opus_int32)((opus_int16)(b32)) * (opus_int32)((opus_int16)(c32)) output have to be 32bit int */
-#undef silk_SMLABB
-static OPUS_INLINE opus_int32 silk_SMLABB_armv5e(opus_int32 a, opus_int32 b,
- opus_int32 c)
-{
- int res;
- __asm__(
- "#silk_SMLABB\n\t"
- "smlabb %0, %1, %2, %3\n\t"
- : "=r"(res)
- : "%r"(b), "r"(c), "r"(a)
- );
- return res;
-}
-#define silk_SMLABB(a, b, c) (silk_SMLABB_armv5e(a, b, c))
-
-/* (opus_int32)((opus_int16)(a32)) * (b32 >> 16) */
-#undef silk_SMULBT
-static OPUS_INLINE opus_int32 silk_SMULBT_armv5e(opus_int32 a, opus_int32 b)
-{
- int res;
- __asm__(
- "#silk_SMULBT\n\t"
- "smulbt %0, %1, %2\n\t"
- : "=r"(res)
- : "r"(a), "r"(b)
- );
- return res;
-}
-#define silk_SMULBT(a, b) (silk_SMULBT_armv5e(a, b))
-
-/* a32 + (opus_int32)((opus_int16)(b32)) * (c32 >> 16) */
-#undef silk_SMLABT
-static OPUS_INLINE opus_int32 silk_SMLABT_armv5e(opus_int32 a, opus_int32 b,
- opus_int32 c)
-{
- int res;
- __asm__(
- "#silk_SMLABT\n\t"
- "smlabt %0, %1, %2, %3\n\t"
- : "=r"(res)
- : "r"(b), "r"(c), "r"(a)
- );
- return res;
-}
-#define silk_SMLABT(a, b, c) (silk_SMLABT_armv5e(a, b, c))
-
-/* add/subtract with output saturated */
-#undef silk_ADD_SAT32
-static OPUS_INLINE opus_int32 silk_ADD_SAT32_armv5e(opus_int32 a, opus_int32 b)
-{
- int res;
- __asm__(
- "#silk_ADD_SAT32\n\t"
- "qadd %0, %1, %2\n\t"
- : "=r"(res)
- : "%r"(a), "r"(b)
- );
- return res;
-}
-#define silk_ADD_SAT32(a, b) (silk_ADD_SAT32_armv5e(a, b))
-
-#undef silk_SUB_SAT32
-static OPUS_INLINE opus_int32 silk_SUB_SAT32_armv5e(opus_int32 a, opus_int32 b)
-{
- int res;
- __asm__(
- "#silk_SUB_SAT32\n\t"
- "qsub %0, %1, %2\n\t"
- : "=r"(res)
- : "r"(a), "r"(b)
- );
- return res;
-}
-#define silk_SUB_SAT32(a, b) (silk_SUB_SAT32_armv5e(a, b))
-
-#undef silk_CLZ16
-static OPUS_INLINE opus_int32 silk_CLZ16_armv5(opus_int16 in16)
-{
- int res;
- __asm__(
- "#silk_CLZ16\n\t"
- "clz %0, %1;\n"
- : "=r"(res)
- : "r"(in16<<16|0x8000)
- );
- return res;
-}
-#define silk_CLZ16(in16) (silk_CLZ16_armv5(in16))
-
-#undef silk_CLZ32
-static OPUS_INLINE opus_int32 silk_CLZ32_armv5(opus_int32 in32)
-{
- int res;
- __asm__(
- "#silk_CLZ32\n\t"
- "clz %0, %1\n\t"
- : "=r"(res)
- : "r"(in32)
- );
- return res;
-}
-#define silk_CLZ32(in32) (silk_CLZ32_armv5(in32))
-
-#endif /* SILK_MACROS_ARMv5E_H */
diff --git a/thirdparty/opus/silk/biquad_alt.c b/thirdparty/opus/silk/biquad_alt.c
deleted file mode 100644
index d55f5ee92e..0000000000
--- a/thirdparty/opus/silk/biquad_alt.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-/* *
- * silk_biquad_alt.c *
- * *
- * Second order ARMA filter *
- * Can handle slowly varying filter coefficients *
- * */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Second order ARMA filter, alternative implementation */
-void silk_biquad_alt(
- const opus_int16 *in, /* I input signal */
- const opus_int32 *B_Q28, /* I MA coefficients [3] */
- const opus_int32 *A_Q28, /* I AR coefficients [2] */
- opus_int32 *S, /* I/O State vector [2] */
- opus_int16 *out, /* O output signal */
- const opus_int32 len, /* I signal length (must be even) */
- opus_int stride /* I Operate on interleaved signal if > 1 */
-)
-{
- /* DIRECT FORM II TRANSPOSED (uses 2 element state vector) */
- opus_int k;
- opus_int32 inval, A0_U_Q28, A0_L_Q28, A1_U_Q28, A1_L_Q28, out32_Q14;
-
- /* Negate A_Q28 values and split in two parts */
- A0_L_Q28 = ( -A_Q28[ 0 ] ) & 0x00003FFF; /* lower part */
- A0_U_Q28 = silk_RSHIFT( -A_Q28[ 0 ], 14 ); /* upper part */
- A1_L_Q28 = ( -A_Q28[ 1 ] ) & 0x00003FFF; /* lower part */
- A1_U_Q28 = silk_RSHIFT( -A_Q28[ 1 ], 14 ); /* upper part */
-
- for( k = 0; k < len; k++ ) {
- /* S[ 0 ], S[ 1 ]: Q12 */
- inval = in[ k * stride ];
- out32_Q14 = silk_LSHIFT( silk_SMLAWB( S[ 0 ], B_Q28[ 0 ], inval ), 2 );
-
- S[ 0 ] = S[1] + silk_RSHIFT_ROUND( silk_SMULWB( out32_Q14, A0_L_Q28 ), 14 );
- S[ 0 ] = silk_SMLAWB( S[ 0 ], out32_Q14, A0_U_Q28 );
- S[ 0 ] = silk_SMLAWB( S[ 0 ], B_Q28[ 1 ], inval);
-
- S[ 1 ] = silk_RSHIFT_ROUND( silk_SMULWB( out32_Q14, A1_L_Q28 ), 14 );
- S[ 1 ] = silk_SMLAWB( S[ 1 ], out32_Q14, A1_U_Q28 );
- S[ 1 ] = silk_SMLAWB( S[ 1 ], B_Q28[ 2 ], inval );
-
- /* Scale back to Q0 and saturate */
- out[ k * stride ] = (opus_int16)silk_SAT16( silk_RSHIFT( out32_Q14 + (1<<14) - 1, 14 ) );
- }
-}
diff --git a/thirdparty/opus/silk/bwexpander.c b/thirdparty/opus/silk/bwexpander.c
deleted file mode 100644
index 2eb4456695..0000000000
--- a/thirdparty/opus/silk/bwexpander.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Chirp (bandwidth expand) LP AR filter */
-void silk_bwexpander(
- opus_int16 *ar, /* I/O AR filter to be expanded (without leading 1) */
- const opus_int d, /* I Length of ar */
- opus_int32 chirp_Q16 /* I Chirp factor (typically in the range 0 to 1) */
-)
-{
- opus_int i;
- opus_int32 chirp_minus_one_Q16 = chirp_Q16 - 65536;
-
- /* NB: Dont use silk_SMULWB, instead of silk_RSHIFT_ROUND( silk_MUL(), 16 ), below. */
- /* Bias in silk_SMULWB can lead to unstable filters */
- for( i = 0; i < d - 1; i++ ) {
- ar[ i ] = (opus_int16)silk_RSHIFT_ROUND( silk_MUL( chirp_Q16, ar[ i ] ), 16 );
- chirp_Q16 += silk_RSHIFT_ROUND( silk_MUL( chirp_Q16, chirp_minus_one_Q16 ), 16 );
- }
- ar[ d - 1 ] = (opus_int16)silk_RSHIFT_ROUND( silk_MUL( chirp_Q16, ar[ d - 1 ] ), 16 );
-}
diff --git a/thirdparty/opus/silk/bwexpander_32.c b/thirdparty/opus/silk/bwexpander_32.c
deleted file mode 100644
index d0010f73df..0000000000
--- a/thirdparty/opus/silk/bwexpander_32.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Chirp (bandwidth expand) LP AR filter */
-void silk_bwexpander_32(
- opus_int32 *ar, /* I/O AR filter to be expanded (without leading 1) */
- const opus_int d, /* I Length of ar */
- opus_int32 chirp_Q16 /* I Chirp factor in Q16 */
-)
-{
- opus_int i;
- opus_int32 chirp_minus_one_Q16 = chirp_Q16 - 65536;
-
- for( i = 0; i < d - 1; i++ ) {
- ar[ i ] = silk_SMULWW( chirp_Q16, ar[ i ] );
- chirp_Q16 += silk_RSHIFT_ROUND( silk_MUL( chirp_Q16, chirp_minus_one_Q16 ), 16 );
- }
- ar[ d - 1 ] = silk_SMULWW( chirp_Q16, ar[ d - 1 ] );
-}
-
diff --git a/thirdparty/opus/silk/check_control_input.c b/thirdparty/opus/silk/check_control_input.c
deleted file mode 100644
index b5de9ce48d..0000000000
--- a/thirdparty/opus/silk/check_control_input.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "control.h"
-#include "errors.h"
-
-/* Check encoder control struct */
-opus_int check_control_input(
- silk_EncControlStruct *encControl /* I Control structure */
-)
-{
- silk_assert( encControl != NULL );
-
- if( ( ( encControl->API_sampleRate != 8000 ) &&
- ( encControl->API_sampleRate != 12000 ) &&
- ( encControl->API_sampleRate != 16000 ) &&
- ( encControl->API_sampleRate != 24000 ) &&
- ( encControl->API_sampleRate != 32000 ) &&
- ( encControl->API_sampleRate != 44100 ) &&
- ( encControl->API_sampleRate != 48000 ) ) ||
- ( ( encControl->desiredInternalSampleRate != 8000 ) &&
- ( encControl->desiredInternalSampleRate != 12000 ) &&
- ( encControl->desiredInternalSampleRate != 16000 ) ) ||
- ( ( encControl->maxInternalSampleRate != 8000 ) &&
- ( encControl->maxInternalSampleRate != 12000 ) &&
- ( encControl->maxInternalSampleRate != 16000 ) ) ||
- ( ( encControl->minInternalSampleRate != 8000 ) &&
- ( encControl->minInternalSampleRate != 12000 ) &&
- ( encControl->minInternalSampleRate != 16000 ) ) ||
- ( encControl->minInternalSampleRate > encControl->desiredInternalSampleRate ) ||
- ( encControl->maxInternalSampleRate < encControl->desiredInternalSampleRate ) ||
- ( encControl->minInternalSampleRate > encControl->maxInternalSampleRate ) ) {
- silk_assert( 0 );
- return SILK_ENC_FS_NOT_SUPPORTED;
- }
- if( encControl->payloadSize_ms != 10 &&
- encControl->payloadSize_ms != 20 &&
- encControl->payloadSize_ms != 40 &&
- encControl->payloadSize_ms != 60 ) {
- silk_assert( 0 );
- return SILK_ENC_PACKET_SIZE_NOT_SUPPORTED;
- }
- if( encControl->packetLossPercentage < 0 || encControl->packetLossPercentage > 100 ) {
- silk_assert( 0 );
- return SILK_ENC_INVALID_LOSS_RATE;
- }
- if( encControl->useDTX < 0 || encControl->useDTX > 1 ) {
- silk_assert( 0 );
- return SILK_ENC_INVALID_DTX_SETTING;
- }
- if( encControl->useCBR < 0 || encControl->useCBR > 1 ) {
- silk_assert( 0 );
- return SILK_ENC_INVALID_CBR_SETTING;
- }
- if( encControl->useInBandFEC < 0 || encControl->useInBandFEC > 1 ) {
- silk_assert( 0 );
- return SILK_ENC_INVALID_INBAND_FEC_SETTING;
- }
- if( encControl->nChannelsAPI < 1 || encControl->nChannelsAPI > ENCODER_NUM_CHANNELS ) {
- silk_assert( 0 );
- return SILK_ENC_INVALID_NUMBER_OF_CHANNELS_ERROR;
- }
- if( encControl->nChannelsInternal < 1 || encControl->nChannelsInternal > ENCODER_NUM_CHANNELS ) {
- silk_assert( 0 );
- return SILK_ENC_INVALID_NUMBER_OF_CHANNELS_ERROR;
- }
- if( encControl->nChannelsInternal > encControl->nChannelsAPI ) {
- silk_assert( 0 );
- return SILK_ENC_INVALID_NUMBER_OF_CHANNELS_ERROR;
- }
- if( encControl->complexity < 0 || encControl->complexity > 10 ) {
- silk_assert( 0 );
- return SILK_ENC_INVALID_COMPLEXITY_SETTING;
- }
-
- return SILK_NO_ERROR;
-}
diff --git a/thirdparty/opus/silk/code_signs.c b/thirdparty/opus/silk/code_signs.c
deleted file mode 100644
index dfd1dca9a1..0000000000
--- a/thirdparty/opus/silk/code_signs.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/*#define silk_enc_map(a) ((a) > 0 ? 1 : 0)*/
-/*#define silk_dec_map(a) ((a) > 0 ? 1 : -1)*/
-/* shifting avoids if-statement */
-#define silk_enc_map(a) ( silk_RSHIFT( (a), 15 ) + 1 )
-#define silk_dec_map(a) ( silk_LSHIFT( (a), 1 ) - 1 )
-
-/* Encodes signs of excitation */
-void silk_encode_signs(
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- const opus_int8 pulses[], /* I pulse signal */
- opus_int length, /* I length of input */
- const opus_int signalType, /* I Signal type */
- const opus_int quantOffsetType, /* I Quantization offset type */
- const opus_int sum_pulses[ MAX_NB_SHELL_BLOCKS ] /* I Sum of absolute pulses per block */
-)
-{
- opus_int i, j, p;
- opus_uint8 icdf[ 2 ];
- const opus_int8 *q_ptr;
- const opus_uint8 *icdf_ptr;
-
- icdf[ 1 ] = 0;
- q_ptr = pulses;
- i = silk_SMULBB( 7, silk_ADD_LSHIFT( quantOffsetType, signalType, 1 ) );
- icdf_ptr = &silk_sign_iCDF[ i ];
- length = silk_RSHIFT( length + SHELL_CODEC_FRAME_LENGTH/2, LOG2_SHELL_CODEC_FRAME_LENGTH );
- for( i = 0; i < length; i++ ) {
- p = sum_pulses[ i ];
- if( p > 0 ) {
- icdf[ 0 ] = icdf_ptr[ silk_min( p & 0x1F, 6 ) ];
- for( j = 0; j < SHELL_CODEC_FRAME_LENGTH; j++ ) {
- if( q_ptr[ j ] != 0 ) {
- ec_enc_icdf( psRangeEnc, silk_enc_map( q_ptr[ j ]), icdf, 8 );
- }
- }
- }
- q_ptr += SHELL_CODEC_FRAME_LENGTH;
- }
-}
-
-/* Decodes signs of excitation */
-void silk_decode_signs(
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int16 pulses[], /* I/O pulse signal */
- opus_int length, /* I length of input */
- const opus_int signalType, /* I Signal type */
- const opus_int quantOffsetType, /* I Quantization offset type */
- const opus_int sum_pulses[ MAX_NB_SHELL_BLOCKS ] /* I Sum of absolute pulses per block */
-)
-{
- opus_int i, j, p;
- opus_uint8 icdf[ 2 ];
- opus_int16 *q_ptr;
- const opus_uint8 *icdf_ptr;
-
- icdf[ 1 ] = 0;
- q_ptr = pulses;
- i = silk_SMULBB( 7, silk_ADD_LSHIFT( quantOffsetType, signalType, 1 ) );
- icdf_ptr = &silk_sign_iCDF[ i ];
- length = silk_RSHIFT( length + SHELL_CODEC_FRAME_LENGTH/2, LOG2_SHELL_CODEC_FRAME_LENGTH );
- for( i = 0; i < length; i++ ) {
- p = sum_pulses[ i ];
- if( p > 0 ) {
- icdf[ 0 ] = icdf_ptr[ silk_min( p & 0x1F, 6 ) ];
- for( j = 0; j < SHELL_CODEC_FRAME_LENGTH; j++ ) {
- if( q_ptr[ j ] > 0 ) {
- /* attach sign */
-#if 0
- /* conditional implementation */
- if( ec_dec_icdf( psRangeDec, icdf, 8 ) == 0 ) {
- q_ptr[ j ] = -q_ptr[ j ];
- }
-#else
- /* implementation with shift, subtraction, multiplication */
- q_ptr[ j ] *= silk_dec_map( ec_dec_icdf( psRangeDec, icdf, 8 ) );
-#endif
- }
- }
- }
- q_ptr += SHELL_CODEC_FRAME_LENGTH;
- }
-}
diff --git a/thirdparty/opus/silk/control.h b/thirdparty/opus/silk/control.h
deleted file mode 100644
index 747e5426a0..0000000000
--- a/thirdparty/opus/silk/control.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_CONTROL_H
-#define SILK_CONTROL_H
-
-#include "typedef.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Decoder API flags */
-#define FLAG_DECODE_NORMAL 0
-#define FLAG_PACKET_LOST 1
-#define FLAG_DECODE_LBRR 2
-
-/***********************************************/
-/* Structure for controlling encoder operation */
-/***********************************************/
-typedef struct {
- /* I: Number of channels; 1/2 */
- opus_int32 nChannelsAPI;
-
- /* I: Number of channels; 1/2 */
- opus_int32 nChannelsInternal;
-
- /* I: Input signal sampling rate in Hertz; 8000/12000/16000/24000/32000/44100/48000 */
- opus_int32 API_sampleRate;
-
- /* I: Maximum internal sampling rate in Hertz; 8000/12000/16000 */
- opus_int32 maxInternalSampleRate;
-
- /* I: Minimum internal sampling rate in Hertz; 8000/12000/16000 */
- opus_int32 minInternalSampleRate;
-
- /* I: Soft request for internal sampling rate in Hertz; 8000/12000/16000 */
- opus_int32 desiredInternalSampleRate;
-
- /* I: Number of samples per packet in milliseconds; 10/20/40/60 */
- opus_int payloadSize_ms;
-
- /* I: Bitrate during active speech in bits/second; internally limited */
- opus_int32 bitRate;
-
- /* I: Uplink packet loss in percent (0-100) */
- opus_int packetLossPercentage;
-
- /* I: Complexity mode; 0 is lowest, 10 is highest complexity */
- opus_int complexity;
-
- /* I: Flag to enable in-band Forward Error Correction (FEC); 0/1 */
- opus_int useInBandFEC;
-
- /* I: Flag to enable discontinuous transmission (DTX); 0/1 */
- opus_int useDTX;
-
- /* I: Flag to use constant bitrate */
- opus_int useCBR;
-
- /* I: Maximum number of bits allowed for the frame */
- opus_int maxBits;
-
- /* I: Causes a smooth downmix to mono */
- opus_int toMono;
-
- /* I: Opus encoder is allowing us to switch bandwidth */
- opus_int opusCanSwitch;
-
- /* I: Make frames as independent as possible (but still use LPC) */
- opus_int reducedDependency;
-
- /* O: Internal sampling rate used, in Hertz; 8000/12000/16000 */
- opus_int32 internalSampleRate;
-
- /* O: Flag that bandwidth switching is allowed (because low voice activity) */
- opus_int allowBandwidthSwitch;
-
- /* O: Flag that SILK runs in WB mode without variable LP filter (use for switching between WB/SWB/FB) */
- opus_int inWBmodeWithoutVariableLP;
-
- /* O: Stereo width */
- opus_int stereoWidth_Q14;
-
- /* O: Tells the Opus encoder we're ready to switch */
- opus_int switchReady;
-
-} silk_EncControlStruct;
-
-/**************************************************************************/
-/* Structure for controlling decoder operation and reading decoder status */
-/**************************************************************************/
-typedef struct {
- /* I: Number of channels; 1/2 */
- opus_int32 nChannelsAPI;
-
- /* I: Number of channels; 1/2 */
- opus_int32 nChannelsInternal;
-
- /* I: Output signal sampling rate in Hertz; 8000/12000/16000/24000/32000/44100/48000 */
- opus_int32 API_sampleRate;
-
- /* I: Internal sampling rate used, in Hertz; 8000/12000/16000 */
- opus_int32 internalSampleRate;
-
- /* I: Number of samples per packet in milliseconds; 10/20/40/60 */
- opus_int payloadSize_ms;
-
- /* O: Pitch lag of previous frame (0 if unvoiced), measured in samples at 48 kHz */
- opus_int prevPitchLag;
-} silk_DecControlStruct;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/control_SNR.c b/thirdparty/opus/silk/control_SNR.c
deleted file mode 100644
index cee87eb0d8..0000000000
--- a/thirdparty/opus/silk/control_SNR.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "tuning_parameters.h"
-
-/* Control SNR of redidual quantizer */
-opus_int silk_control_SNR(
- silk_encoder_state *psEncC, /* I/O Pointer to Silk encoder state */
- opus_int32 TargetRate_bps /* I Target max bitrate (bps) */
-)
-{
- opus_int k, ret = SILK_NO_ERROR;
- opus_int32 frac_Q6;
- const opus_int32 *rateTable;
-
- /* Set bitrate/coding quality */
- TargetRate_bps = silk_LIMIT( TargetRate_bps, MIN_TARGET_RATE_BPS, MAX_TARGET_RATE_BPS );
- if( TargetRate_bps != psEncC->TargetRate_bps ) {
- psEncC->TargetRate_bps = TargetRate_bps;
-
- /* If new TargetRate_bps, translate to SNR_dB value */
- if( psEncC->fs_kHz == 8 ) {
- rateTable = silk_TargetRate_table_NB;
- } else if( psEncC->fs_kHz == 12 ) {
- rateTable = silk_TargetRate_table_MB;
- } else {
- rateTable = silk_TargetRate_table_WB;
- }
-
- /* Reduce bitrate for 10 ms modes in these calculations */
- if( psEncC->nb_subfr == 2 ) {
- TargetRate_bps -= REDUCE_BITRATE_10_MS_BPS;
- }
-
- /* Find bitrate interval in table and interpolate */
- for( k = 1; k < TARGET_RATE_TAB_SZ; k++ ) {
- if( TargetRate_bps <= rateTable[ k ] ) {
- frac_Q6 = silk_DIV32( silk_LSHIFT( TargetRate_bps - rateTable[ k - 1 ], 6 ),
- rateTable[ k ] - rateTable[ k - 1 ] );
- psEncC->SNR_dB_Q7 = silk_LSHIFT( silk_SNR_table_Q1[ k - 1 ], 6 ) + silk_MUL( frac_Q6, silk_SNR_table_Q1[ k ] - silk_SNR_table_Q1[ k - 1 ] );
- break;
- }
- }
- }
-
- return ret;
-}
diff --git a/thirdparty/opus/silk/control_audio_bandwidth.c b/thirdparty/opus/silk/control_audio_bandwidth.c
deleted file mode 100644
index 4f9bc5cbda..0000000000
--- a/thirdparty/opus/silk/control_audio_bandwidth.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "tuning_parameters.h"
-
-/* Control internal sampling rate */
-opus_int silk_control_audio_bandwidth(
- silk_encoder_state *psEncC, /* I/O Pointer to Silk encoder state */
- silk_EncControlStruct *encControl /* I Control structure */
-)
-{
- opus_int fs_kHz;
- opus_int32 fs_Hz;
-
- fs_kHz = psEncC->fs_kHz;
- fs_Hz = silk_SMULBB( fs_kHz, 1000 );
- if( fs_Hz == 0 ) {
- /* Encoder has just been initialized */
- fs_Hz = silk_min( psEncC->desiredInternal_fs_Hz, psEncC->API_fs_Hz );
- fs_kHz = silk_DIV32_16( fs_Hz, 1000 );
- } else if( fs_Hz > psEncC->API_fs_Hz || fs_Hz > psEncC->maxInternal_fs_Hz || fs_Hz < psEncC->minInternal_fs_Hz ) {
- /* Make sure internal rate is not higher than external rate or maximum allowed, or lower than minimum allowed */
- fs_Hz = psEncC->API_fs_Hz;
- fs_Hz = silk_min( fs_Hz, psEncC->maxInternal_fs_Hz );
- fs_Hz = silk_max( fs_Hz, psEncC->minInternal_fs_Hz );
- fs_kHz = silk_DIV32_16( fs_Hz, 1000 );
- } else {
- /* State machine for the internal sampling rate switching */
- if( psEncC->sLP.transition_frame_no >= TRANSITION_FRAMES ) {
- /* Stop transition phase */
- psEncC->sLP.mode = 0;
- }
- if( psEncC->allow_bandwidth_switch || encControl->opusCanSwitch ) {
- /* Check if we should switch down */
- if( silk_SMULBB( psEncC->fs_kHz, 1000 ) > psEncC->desiredInternal_fs_Hz )
- {
- /* Switch down */
- if( psEncC->sLP.mode == 0 ) {
- /* New transition */
- psEncC->sLP.transition_frame_no = TRANSITION_FRAMES;
-
- /* Reset transition filter state */
- silk_memset( psEncC->sLP.In_LP_State, 0, sizeof( psEncC->sLP.In_LP_State ) );
- }
- if( encControl->opusCanSwitch ) {
- /* Stop transition phase */
- psEncC->sLP.mode = 0;
-
- /* Switch to a lower sample frequency */
- fs_kHz = psEncC->fs_kHz == 16 ? 12 : 8;
- } else {
- if( psEncC->sLP.transition_frame_no <= 0 ) {
- encControl->switchReady = 1;
- /* Make room for redundancy */
- encControl->maxBits -= encControl->maxBits * 5 / ( encControl->payloadSize_ms + 5 );
- } else {
- /* Direction: down (at double speed) */
- psEncC->sLP.mode = -2;
- }
- }
- }
- else
- /* Check if we should switch up */
- if( silk_SMULBB( psEncC->fs_kHz, 1000 ) < psEncC->desiredInternal_fs_Hz )
- {
- /* Switch up */
- if( encControl->opusCanSwitch ) {
- /* Switch to a higher sample frequency */
- fs_kHz = psEncC->fs_kHz == 8 ? 12 : 16;
-
- /* New transition */
- psEncC->sLP.transition_frame_no = 0;
-
- /* Reset transition filter state */
- silk_memset( psEncC->sLP.In_LP_State, 0, sizeof( psEncC->sLP.In_LP_State ) );
-
- /* Direction: up */
- psEncC->sLP.mode = 1;
- } else {
- if( psEncC->sLP.mode == 0 ) {
- encControl->switchReady = 1;
- /* Make room for redundancy */
- encControl->maxBits -= encControl->maxBits * 5 / ( encControl->payloadSize_ms + 5 );
- } else {
- /* Direction: up */
- psEncC->sLP.mode = 1;
- }
- }
- } else {
- if (psEncC->sLP.mode<0)
- psEncC->sLP.mode = 1;
- }
- }
- }
-
- return fs_kHz;
-}
diff --git a/thirdparty/opus/silk/control_codec.c b/thirdparty/opus/silk/control_codec.c
deleted file mode 100644
index 044eea3f2a..0000000000
--- a/thirdparty/opus/silk/control_codec.c
+++ /dev/null
@@ -1,428 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#ifdef FIXED_POINT
-#include "main_FIX.h"
-#define silk_encoder_state_Fxx silk_encoder_state_FIX
-#else
-#include "main_FLP.h"
-#define silk_encoder_state_Fxx silk_encoder_state_FLP
-#endif
-#include "stack_alloc.h"
-#include "tuning_parameters.h"
-#include "pitch_est_defines.h"
-
-static opus_int silk_setup_resamplers(
- silk_encoder_state_Fxx *psEnc, /* I/O */
- opus_int fs_kHz /* I */
-);
-
-static opus_int silk_setup_fs(
- silk_encoder_state_Fxx *psEnc, /* I/O */
- opus_int fs_kHz, /* I */
- opus_int PacketSize_ms /* I */
-);
-
-static opus_int silk_setup_complexity(
- silk_encoder_state *psEncC, /* I/O */
- opus_int Complexity /* I */
-);
-
-static OPUS_INLINE opus_int silk_setup_LBRR(
- silk_encoder_state *psEncC, /* I/O */
- const opus_int32 TargetRate_bps /* I */
-);
-
-
-/* Control encoder */
-opus_int silk_control_encoder(
- silk_encoder_state_Fxx *psEnc, /* I/O Pointer to Silk encoder state */
- silk_EncControlStruct *encControl, /* I Control structure */
- const opus_int32 TargetRate_bps, /* I Target max bitrate (bps) */
- const opus_int allow_bw_switch, /* I Flag to allow switching audio bandwidth */
- const opus_int channelNb, /* I Channel number */
- const opus_int force_fs_kHz
-)
-{
- opus_int fs_kHz, ret = 0;
-
- psEnc->sCmn.useDTX = encControl->useDTX;
- psEnc->sCmn.useCBR = encControl->useCBR;
- psEnc->sCmn.API_fs_Hz = encControl->API_sampleRate;
- psEnc->sCmn.maxInternal_fs_Hz = encControl->maxInternalSampleRate;
- psEnc->sCmn.minInternal_fs_Hz = encControl->minInternalSampleRate;
- psEnc->sCmn.desiredInternal_fs_Hz = encControl->desiredInternalSampleRate;
- psEnc->sCmn.useInBandFEC = encControl->useInBandFEC;
- psEnc->sCmn.nChannelsAPI = encControl->nChannelsAPI;
- psEnc->sCmn.nChannelsInternal = encControl->nChannelsInternal;
- psEnc->sCmn.allow_bandwidth_switch = allow_bw_switch;
- psEnc->sCmn.channelNb = channelNb;
-
- if( psEnc->sCmn.controlled_since_last_payload != 0 && psEnc->sCmn.prefillFlag == 0 ) {
- if( psEnc->sCmn.API_fs_Hz != psEnc->sCmn.prev_API_fs_Hz && psEnc->sCmn.fs_kHz > 0 ) {
- /* Change in API sampling rate in the middle of encoding a packet */
- ret += silk_setup_resamplers( psEnc, psEnc->sCmn.fs_kHz );
- }
- return ret;
- }
-
- /* Beyond this point we know that there are no previously coded frames in the payload buffer */
-
- /********************************************/
- /* Determine internal sampling rate */
- /********************************************/
- fs_kHz = silk_control_audio_bandwidth( &psEnc->sCmn, encControl );
- if( force_fs_kHz ) {
- fs_kHz = force_fs_kHz;
- }
- /********************************************/
- /* Prepare resampler and buffered data */
- /********************************************/
- ret += silk_setup_resamplers( psEnc, fs_kHz );
-
- /********************************************/
- /* Set internal sampling frequency */
- /********************************************/
- ret += silk_setup_fs( psEnc, fs_kHz, encControl->payloadSize_ms );
-
- /********************************************/
- /* Set encoding complexity */
- /********************************************/
- ret += silk_setup_complexity( &psEnc->sCmn, encControl->complexity );
-
- /********************************************/
- /* Set packet loss rate measured by farend */
- /********************************************/
- psEnc->sCmn.PacketLoss_perc = encControl->packetLossPercentage;
-
- /********************************************/
- /* Set LBRR usage */
- /********************************************/
- ret += silk_setup_LBRR( &psEnc->sCmn, TargetRate_bps );
-
- psEnc->sCmn.controlled_since_last_payload = 1;
-
- return ret;
-}
-
-static opus_int silk_setup_resamplers(
- silk_encoder_state_Fxx *psEnc, /* I/O */
- opus_int fs_kHz /* I */
-)
-{
- opus_int ret = SILK_NO_ERROR;
- SAVE_STACK;
-
- if( psEnc->sCmn.fs_kHz != fs_kHz || psEnc->sCmn.prev_API_fs_Hz != psEnc->sCmn.API_fs_Hz )
- {
- if( psEnc->sCmn.fs_kHz == 0 ) {
- /* Initialize the resampler for enc_API.c preparing resampling from API_fs_Hz to fs_kHz */
- ret += silk_resampler_init( &psEnc->sCmn.resampler_state, psEnc->sCmn.API_fs_Hz, fs_kHz * 1000, 1 );
- } else {
- VARDECL( opus_int16, x_buf_API_fs_Hz );
- VARDECL( silk_resampler_state_struct, temp_resampler_state );
-#ifdef FIXED_POINT
- opus_int16 *x_bufFIX = psEnc->x_buf;
-#else
- VARDECL( opus_int16, x_bufFIX );
- opus_int32 new_buf_samples;
-#endif
- opus_int32 api_buf_samples;
- opus_int32 old_buf_samples;
- opus_int32 buf_length_ms;
-
- buf_length_ms = silk_LSHIFT( psEnc->sCmn.nb_subfr * 5, 1 ) + LA_SHAPE_MS;
- old_buf_samples = buf_length_ms * psEnc->sCmn.fs_kHz;
-
-#ifndef FIXED_POINT
- new_buf_samples = buf_length_ms * fs_kHz;
- ALLOC( x_bufFIX, silk_max( old_buf_samples, new_buf_samples ),
- opus_int16 );
- silk_float2short_array( x_bufFIX, psEnc->x_buf, old_buf_samples );
-#endif
-
- /* Initialize resampler for temporary resampling of x_buf data to API_fs_Hz */
- ALLOC( temp_resampler_state, 1, silk_resampler_state_struct );
- ret += silk_resampler_init( temp_resampler_state, silk_SMULBB( psEnc->sCmn.fs_kHz, 1000 ), psEnc->sCmn.API_fs_Hz, 0 );
-
- /* Calculate number of samples to temporarily upsample */
- api_buf_samples = buf_length_ms * silk_DIV32_16( psEnc->sCmn.API_fs_Hz, 1000 );
-
- /* Temporary resampling of x_buf data to API_fs_Hz */
- ALLOC( x_buf_API_fs_Hz, api_buf_samples, opus_int16 );
- ret += silk_resampler( temp_resampler_state, x_buf_API_fs_Hz, x_bufFIX, old_buf_samples );
-
- /* Initialize the resampler for enc_API.c preparing resampling from API_fs_Hz to fs_kHz */
- ret += silk_resampler_init( &psEnc->sCmn.resampler_state, psEnc->sCmn.API_fs_Hz, silk_SMULBB( fs_kHz, 1000 ), 1 );
-
- /* Correct resampler state by resampling buffered data from API_fs_Hz to fs_kHz */
- ret += silk_resampler( &psEnc->sCmn.resampler_state, x_bufFIX, x_buf_API_fs_Hz, api_buf_samples );
-
-#ifndef FIXED_POINT
- silk_short2float_array( psEnc->x_buf, x_bufFIX, new_buf_samples);
-#endif
- }
- }
-
- psEnc->sCmn.prev_API_fs_Hz = psEnc->sCmn.API_fs_Hz;
-
- RESTORE_STACK;
- return ret;
-}
-
-static opus_int silk_setup_fs(
- silk_encoder_state_Fxx *psEnc, /* I/O */
- opus_int fs_kHz, /* I */
- opus_int PacketSize_ms /* I */
-)
-{
- opus_int ret = SILK_NO_ERROR;
-
- /* Set packet size */
- if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) {
- if( ( PacketSize_ms != 10 ) &&
- ( PacketSize_ms != 20 ) &&
- ( PacketSize_ms != 40 ) &&
- ( PacketSize_ms != 60 ) ) {
- ret = SILK_ENC_PACKET_SIZE_NOT_SUPPORTED;
- }
- if( PacketSize_ms <= 10 ) {
- psEnc->sCmn.nFramesPerPacket = 1;
- psEnc->sCmn.nb_subfr = PacketSize_ms == 10 ? 2 : 1;
- psEnc->sCmn.frame_length = silk_SMULBB( PacketSize_ms, fs_kHz );
- psEnc->sCmn.pitch_LPC_win_length = silk_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz );
- if( psEnc->sCmn.fs_kHz == 8 ) {
- psEnc->sCmn.pitch_contour_iCDF = silk_pitch_contour_10_ms_NB_iCDF;
- } else {
- psEnc->sCmn.pitch_contour_iCDF = silk_pitch_contour_10_ms_iCDF;
- }
- } else {
- psEnc->sCmn.nFramesPerPacket = silk_DIV32_16( PacketSize_ms, MAX_FRAME_LENGTH_MS );
- psEnc->sCmn.nb_subfr = MAX_NB_SUBFR;
- psEnc->sCmn.frame_length = silk_SMULBB( 20, fs_kHz );
- psEnc->sCmn.pitch_LPC_win_length = silk_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz );
- if( psEnc->sCmn.fs_kHz == 8 ) {
- psEnc->sCmn.pitch_contour_iCDF = silk_pitch_contour_NB_iCDF;
- } else {
- psEnc->sCmn.pitch_contour_iCDF = silk_pitch_contour_iCDF;
- }
- }
- psEnc->sCmn.PacketSize_ms = PacketSize_ms;
- psEnc->sCmn.TargetRate_bps = 0; /* trigger new SNR computation */
- }
-
- /* Set internal sampling frequency */
- silk_assert( fs_kHz == 8 || fs_kHz == 12 || fs_kHz == 16 );
- silk_assert( psEnc->sCmn.nb_subfr == 2 || psEnc->sCmn.nb_subfr == 4 );
- if( psEnc->sCmn.fs_kHz != fs_kHz ) {
- /* reset part of the state */
- silk_memset( &psEnc->sShape, 0, sizeof( psEnc->sShape ) );
- silk_memset( &psEnc->sPrefilt, 0, sizeof( psEnc->sPrefilt ) );
- silk_memset( &psEnc->sCmn.sNSQ, 0, sizeof( psEnc->sCmn.sNSQ ) );
- silk_memset( psEnc->sCmn.prev_NLSFq_Q15, 0, sizeof( psEnc->sCmn.prev_NLSFq_Q15 ) );
- silk_memset( &psEnc->sCmn.sLP.In_LP_State, 0, sizeof( psEnc->sCmn.sLP.In_LP_State ) );
- psEnc->sCmn.inputBufIx = 0;
- psEnc->sCmn.nFramesEncoded = 0;
- psEnc->sCmn.TargetRate_bps = 0; /* trigger new SNR computation */
-
- /* Initialize non-zero parameters */
- psEnc->sCmn.prevLag = 100;
- psEnc->sCmn.first_frame_after_reset = 1;
- psEnc->sPrefilt.lagPrev = 100;
- psEnc->sShape.LastGainIndex = 10;
- psEnc->sCmn.sNSQ.lagPrev = 100;
- psEnc->sCmn.sNSQ.prev_gain_Q16 = 65536;
- psEnc->sCmn.prevSignalType = TYPE_NO_VOICE_ACTIVITY;
-
- psEnc->sCmn.fs_kHz = fs_kHz;
- if( psEnc->sCmn.fs_kHz == 8 ) {
- if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ) {
- psEnc->sCmn.pitch_contour_iCDF = silk_pitch_contour_NB_iCDF;
- } else {
- psEnc->sCmn.pitch_contour_iCDF = silk_pitch_contour_10_ms_NB_iCDF;
- }
- } else {
- if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ) {
- psEnc->sCmn.pitch_contour_iCDF = silk_pitch_contour_iCDF;
- } else {
- psEnc->sCmn.pitch_contour_iCDF = silk_pitch_contour_10_ms_iCDF;
- }
- }
- if( psEnc->sCmn.fs_kHz == 8 || psEnc->sCmn.fs_kHz == 12 ) {
- psEnc->sCmn.predictLPCOrder = MIN_LPC_ORDER;
- psEnc->sCmn.psNLSF_CB = &silk_NLSF_CB_NB_MB;
- } else {
- psEnc->sCmn.predictLPCOrder = MAX_LPC_ORDER;
- psEnc->sCmn.psNLSF_CB = &silk_NLSF_CB_WB;
- }
- psEnc->sCmn.subfr_length = SUB_FRAME_LENGTH_MS * fs_kHz;
- psEnc->sCmn.frame_length = silk_SMULBB( psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr );
- psEnc->sCmn.ltp_mem_length = silk_SMULBB( LTP_MEM_LENGTH_MS, fs_kHz );
- psEnc->sCmn.la_pitch = silk_SMULBB( LA_PITCH_MS, fs_kHz );
- psEnc->sCmn.max_pitch_lag = silk_SMULBB( 18, fs_kHz );
- if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ) {
- psEnc->sCmn.pitch_LPC_win_length = silk_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz );
- } else {
- psEnc->sCmn.pitch_LPC_win_length = silk_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz );
- }
- if( psEnc->sCmn.fs_kHz == 16 ) {
- psEnc->sCmn.mu_LTP_Q9 = SILK_FIX_CONST( MU_LTP_QUANT_WB, 9 );
- psEnc->sCmn.pitch_lag_low_bits_iCDF = silk_uniform8_iCDF;
- } else if( psEnc->sCmn.fs_kHz == 12 ) {
- psEnc->sCmn.mu_LTP_Q9 = SILK_FIX_CONST( MU_LTP_QUANT_MB, 9 );
- psEnc->sCmn.pitch_lag_low_bits_iCDF = silk_uniform6_iCDF;
- } else {
- psEnc->sCmn.mu_LTP_Q9 = SILK_FIX_CONST( MU_LTP_QUANT_NB, 9 );
- psEnc->sCmn.pitch_lag_low_bits_iCDF = silk_uniform4_iCDF;
- }
- }
-
- /* Check that settings are valid */
- silk_assert( ( psEnc->sCmn.subfr_length * psEnc->sCmn.nb_subfr ) == psEnc->sCmn.frame_length );
-
- return ret;
-}
-
-static opus_int silk_setup_complexity(
- silk_encoder_state *psEncC, /* I/O */
- opus_int Complexity /* I */
-)
-{
- opus_int ret = 0;
-
- /* Set encoding complexity */
- silk_assert( Complexity >= 0 && Complexity <= 10 );
- if( Complexity < 2 ) {
- psEncC->pitchEstimationComplexity = SILK_PE_MIN_COMPLEX;
- psEncC->pitchEstimationThreshold_Q16 = SILK_FIX_CONST( 0.8, 16 );
- psEncC->pitchEstimationLPCOrder = 6;
- psEncC->shapingLPCOrder = 8;
- psEncC->la_shape = 3 * psEncC->fs_kHz;
- psEncC->nStatesDelayedDecision = 1;
- psEncC->useInterpolatedNLSFs = 0;
- psEncC->LTPQuantLowComplexity = 1;
- psEncC->NLSF_MSVQ_Survivors = 2;
- psEncC->warping_Q16 = 0;
- } else if( Complexity < 4 ) {
- psEncC->pitchEstimationComplexity = SILK_PE_MID_COMPLEX;
- psEncC->pitchEstimationThreshold_Q16 = SILK_FIX_CONST( 0.76, 16 );
- psEncC->pitchEstimationLPCOrder = 8;
- psEncC->shapingLPCOrder = 10;
- psEncC->la_shape = 5 * psEncC->fs_kHz;
- psEncC->nStatesDelayedDecision = 1;
- psEncC->useInterpolatedNLSFs = 0;
- psEncC->LTPQuantLowComplexity = 0;
- psEncC->NLSF_MSVQ_Survivors = 4;
- psEncC->warping_Q16 = 0;
- } else if( Complexity < 6 ) {
- psEncC->pitchEstimationComplexity = SILK_PE_MID_COMPLEX;
- psEncC->pitchEstimationThreshold_Q16 = SILK_FIX_CONST( 0.74, 16 );
- psEncC->pitchEstimationLPCOrder = 10;
- psEncC->shapingLPCOrder = 12;
- psEncC->la_shape = 5 * psEncC->fs_kHz;
- psEncC->nStatesDelayedDecision = 2;
- psEncC->useInterpolatedNLSFs = 1;
- psEncC->LTPQuantLowComplexity = 0;
- psEncC->NLSF_MSVQ_Survivors = 8;
- psEncC->warping_Q16 = psEncC->fs_kHz * SILK_FIX_CONST( WARPING_MULTIPLIER, 16 );
- } else if( Complexity < 8 ) {
- psEncC->pitchEstimationComplexity = SILK_PE_MID_COMPLEX;
- psEncC->pitchEstimationThreshold_Q16 = SILK_FIX_CONST( 0.72, 16 );
- psEncC->pitchEstimationLPCOrder = 12;
- psEncC->shapingLPCOrder = 14;
- psEncC->la_shape = 5 * psEncC->fs_kHz;
- psEncC->nStatesDelayedDecision = 3;
- psEncC->useInterpolatedNLSFs = 1;
- psEncC->LTPQuantLowComplexity = 0;
- psEncC->NLSF_MSVQ_Survivors = 16;
- psEncC->warping_Q16 = psEncC->fs_kHz * SILK_FIX_CONST( WARPING_MULTIPLIER, 16 );
- } else {
- psEncC->pitchEstimationComplexity = SILK_PE_MAX_COMPLEX;
- psEncC->pitchEstimationThreshold_Q16 = SILK_FIX_CONST( 0.7, 16 );
- psEncC->pitchEstimationLPCOrder = 16;
- psEncC->shapingLPCOrder = 16;
- psEncC->la_shape = 5 * psEncC->fs_kHz;
- psEncC->nStatesDelayedDecision = MAX_DEL_DEC_STATES;
- psEncC->useInterpolatedNLSFs = 1;
- psEncC->LTPQuantLowComplexity = 0;
- psEncC->NLSF_MSVQ_Survivors = 32;
- psEncC->warping_Q16 = psEncC->fs_kHz * SILK_FIX_CONST( WARPING_MULTIPLIER, 16 );
- }
-
- /* Do not allow higher pitch estimation LPC order than predict LPC order */
- psEncC->pitchEstimationLPCOrder = silk_min_int( psEncC->pitchEstimationLPCOrder, psEncC->predictLPCOrder );
- psEncC->shapeWinLength = SUB_FRAME_LENGTH_MS * psEncC->fs_kHz + 2 * psEncC->la_shape;
- psEncC->Complexity = Complexity;
-
- silk_assert( psEncC->pitchEstimationLPCOrder <= MAX_FIND_PITCH_LPC_ORDER );
- silk_assert( psEncC->shapingLPCOrder <= MAX_SHAPE_LPC_ORDER );
- silk_assert( psEncC->nStatesDelayedDecision <= MAX_DEL_DEC_STATES );
- silk_assert( psEncC->warping_Q16 <= 32767 );
- silk_assert( psEncC->la_shape <= LA_SHAPE_MAX );
- silk_assert( psEncC->shapeWinLength <= SHAPE_LPC_WIN_MAX );
- silk_assert( psEncC->NLSF_MSVQ_Survivors <= NLSF_VQ_MAX_SURVIVORS );
-
- return ret;
-}
-
-static OPUS_INLINE opus_int silk_setup_LBRR(
- silk_encoder_state *psEncC, /* I/O */
- const opus_int32 TargetRate_bps /* I */
-)
-{
- opus_int LBRR_in_previous_packet, ret = SILK_NO_ERROR;
- opus_int32 LBRR_rate_thres_bps;
-
- LBRR_in_previous_packet = psEncC->LBRR_enabled;
- psEncC->LBRR_enabled = 0;
- if( psEncC->useInBandFEC && psEncC->PacketLoss_perc > 0 ) {
- if( psEncC->fs_kHz == 8 ) {
- LBRR_rate_thres_bps = LBRR_NB_MIN_RATE_BPS;
- } else if( psEncC->fs_kHz == 12 ) {
- LBRR_rate_thres_bps = LBRR_MB_MIN_RATE_BPS;
- } else {
- LBRR_rate_thres_bps = LBRR_WB_MIN_RATE_BPS;
- }
- LBRR_rate_thres_bps = silk_SMULWB( silk_MUL( LBRR_rate_thres_bps, 125 - silk_min( psEncC->PacketLoss_perc, 25 ) ), SILK_FIX_CONST( 0.01, 16 ) );
-
- if( TargetRate_bps > LBRR_rate_thres_bps ) {
- /* Set gain increase for coding LBRR excitation */
- if( LBRR_in_previous_packet == 0 ) {
- /* Previous packet did not have LBRR, and was therefore coded at a higher bitrate */
- psEncC->LBRR_GainIncreases = 7;
- } else {
- psEncC->LBRR_GainIncreases = silk_max_int( 7 - silk_SMULWB( (opus_int32)psEncC->PacketLoss_perc, SILK_FIX_CONST( 0.4, 16 ) ), 2 );
- }
- psEncC->LBRR_enabled = 1;
- }
- }
-
- return ret;
-}
diff --git a/thirdparty/opus/silk/debug.c b/thirdparty/opus/silk/debug.c
deleted file mode 100644
index 9253faf71b..0000000000
--- a/thirdparty/opus/silk/debug.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "debug.h"
-#include "SigProc_FIX.h"
-
-#if SILK_TIC_TOC
-
-#ifdef _WIN32
-
-#if (defined(_WIN32) || defined(_WINCE))
-#include <windows.h> /* timer */
-#else /* Linux or Mac*/
-#include <sys/time.h>
-#endif
-
-unsigned long silk_GetHighResolutionTime(void) /* O time in usec*/
-{
- /* Returns a time counter in microsec */
- /* the resolution is platform dependent */
- /* but is typically 1.62 us resolution */
- LARGE_INTEGER lpPerformanceCount;
- LARGE_INTEGER lpFrequency;
- QueryPerformanceCounter(&lpPerformanceCount);
- QueryPerformanceFrequency(&lpFrequency);
- return (unsigned long)((1000000*(lpPerformanceCount.QuadPart)) / lpFrequency.QuadPart);
-}
-#else /* Linux or Mac*/
-unsigned long GetHighResolutionTime(void) /* O time in usec*/
-{
- struct timeval tv;
- gettimeofday(&tv, 0);
- return((tv.tv_sec*1000000)+(tv.tv_usec));
-}
-#endif
-
-int silk_Timer_nTimers = 0;
-int silk_Timer_depth_ctr = 0;
-char silk_Timer_tags[silk_NUM_TIMERS_MAX][silk_NUM_TIMERS_MAX_TAG_LEN];
-#ifdef WIN32
-LARGE_INTEGER silk_Timer_start[silk_NUM_TIMERS_MAX];
-#else
-unsigned long silk_Timer_start[silk_NUM_TIMERS_MAX];
-#endif
-unsigned int silk_Timer_cnt[silk_NUM_TIMERS_MAX];
-opus_int64 silk_Timer_min[silk_NUM_TIMERS_MAX];
-opus_int64 silk_Timer_sum[silk_NUM_TIMERS_MAX];
-opus_int64 silk_Timer_max[silk_NUM_TIMERS_MAX];
-opus_int64 silk_Timer_depth[silk_NUM_TIMERS_MAX];
-
-#ifdef WIN32
-void silk_TimerSave(char *file_name)
-{
- if( silk_Timer_nTimers > 0 )
- {
- int k;
- FILE *fp;
- LARGE_INTEGER lpFrequency;
- LARGE_INTEGER lpPerformanceCount1, lpPerformanceCount2;
- int del = 0x7FFFFFFF;
- double avg, sum_avg;
- /* estimate overhead of calling performance counters */
- for( k = 0; k < 1000; k++ ) {
- QueryPerformanceCounter(&lpPerformanceCount1);
- QueryPerformanceCounter(&lpPerformanceCount2);
- lpPerformanceCount2.QuadPart -= lpPerformanceCount1.QuadPart;
- if( (int)lpPerformanceCount2.LowPart < del )
- del = lpPerformanceCount2.LowPart;
- }
- QueryPerformanceFrequency(&lpFrequency);
- /* print results to file */
- sum_avg = 0.0f;
- for( k = 0; k < silk_Timer_nTimers; k++ ) {
- if (silk_Timer_depth[k] == 0) {
- sum_avg += (1e6 * silk_Timer_sum[k] / silk_Timer_cnt[k] - del) / lpFrequency.QuadPart * silk_Timer_cnt[k];
- }
- }
- fp = fopen(file_name, "w");
- fprintf(fp, " min avg %% max count\n");
- for( k = 0; k < silk_Timer_nTimers; k++ ) {
- if (silk_Timer_depth[k] == 0) {
- fprintf(fp, "%-28s", silk_Timer_tags[k]);
- } else if (silk_Timer_depth[k] == 1) {
- fprintf(fp, " %-27s", silk_Timer_tags[k]);
- } else if (silk_Timer_depth[k] == 2) {
- fprintf(fp, " %-26s", silk_Timer_tags[k]);
- } else if (silk_Timer_depth[k] == 3) {
- fprintf(fp, " %-25s", silk_Timer_tags[k]);
- } else {
- fprintf(fp, " %-24s", silk_Timer_tags[k]);
- }
- avg = (1e6 * silk_Timer_sum[k] / silk_Timer_cnt[k] - del) / lpFrequency.QuadPart;
- fprintf(fp, "%8.2f", (1e6 * (silk_max_64(silk_Timer_min[k] - del, 0))) / lpFrequency.QuadPart);
- fprintf(fp, "%12.2f %6.2f", avg, 100.0 * avg / sum_avg * silk_Timer_cnt[k]);
- fprintf(fp, "%12.2f", (1e6 * (silk_max_64(silk_Timer_max[k] - del, 0))) / lpFrequency.QuadPart);
- fprintf(fp, "%10d\n", silk_Timer_cnt[k]);
- }
- fprintf(fp, " microseconds\n");
- fclose(fp);
- }
-}
-#else
-void silk_TimerSave(char *file_name)
-{
- if( silk_Timer_nTimers > 0 )
- {
- int k;
- FILE *fp;
- /* print results to file */
- fp = fopen(file_name, "w");
- fprintf(fp, " min avg max count\n");
- for( k = 0; k < silk_Timer_nTimers; k++ )
- {
- if (silk_Timer_depth[k] == 0) {
- fprintf(fp, "%-28s", silk_Timer_tags[k]);
- } else if (silk_Timer_depth[k] == 1) {
- fprintf(fp, " %-27s", silk_Timer_tags[k]);
- } else if (silk_Timer_depth[k] == 2) {
- fprintf(fp, " %-26s", silk_Timer_tags[k]);
- } else if (silk_Timer_depth[k] == 3) {
- fprintf(fp, " %-25s", silk_Timer_tags[k]);
- } else {
- fprintf(fp, " %-24s", silk_Timer_tags[k]);
- }
- fprintf(fp, "%d ", silk_Timer_min[k]);
- fprintf(fp, "%f ", (double)silk_Timer_sum[k] / (double)silk_Timer_cnt[k]);
- fprintf(fp, "%d ", silk_Timer_max[k]);
- fprintf(fp, "%10d\n", silk_Timer_cnt[k]);
- }
- fprintf(fp, " microseconds\n");
- fclose(fp);
- }
-}
-#endif
-
-#endif /* SILK_TIC_TOC */
-
-#if SILK_DEBUG
-FILE *silk_debug_store_fp[ silk_NUM_STORES_MAX ];
-int silk_debug_store_count = 0;
-#endif /* SILK_DEBUG */
-
diff --git a/thirdparty/opus/silk/debug.h b/thirdparty/opus/silk/debug.h
deleted file mode 100644
index efb6d3e99e..0000000000
--- a/thirdparty/opus/silk/debug.h
+++ /dev/null
@@ -1,279 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_DEBUG_H
-#define SILK_DEBUG_H
-
-#include "typedef.h"
-#include <stdio.h> /* file writing */
-#include <string.h> /* strcpy, strcmp */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-unsigned long GetHighResolutionTime(void); /* O time in usec*/
-
-/* make SILK_DEBUG dependent on compiler's _DEBUG */
-#if defined _WIN32
- #ifdef _DEBUG
- #define SILK_DEBUG 1
- #else
- #define SILK_DEBUG 0
- #endif
-
- /* overrule the above */
- #if 0
- /* #define NO_ASSERTS*/
- #undef SILK_DEBUG
- #define SILK_DEBUG 1
- #endif
-#else
- #define SILK_DEBUG 0
-#endif
-
-/* Flag for using timers */
-#define SILK_TIC_TOC 0
-
-
-#if SILK_TIC_TOC
-
-#if (defined(_WIN32) || defined(_WINCE))
-#include <windows.h> /* timer */
-#else /* Linux or Mac*/
-#include <sys/time.h>
-#endif
-
-/*********************************/
-/* timer functions for profiling */
-/*********************************/
-/* example: */
-/* */
-/* TIC(LPC) */
-/* do_LPC(in_vec, order, acoef); // do LPC analysis */
-/* TOC(LPC) */
-/* */
-/* and call the following just before exiting (from main) */
-/* */
-/* silk_TimerSave("silk_TimingData.txt"); */
-/* */
-/* results are now in silk_TimingData.txt */
-
-void silk_TimerSave(char *file_name);
-
-/* max number of timers (in different locations) */
-#define silk_NUM_TIMERS_MAX 50
-/* max length of name tags in TIC(..), TOC(..) */
-#define silk_NUM_TIMERS_MAX_TAG_LEN 30
-
-extern int silk_Timer_nTimers;
-extern int silk_Timer_depth_ctr;
-extern char silk_Timer_tags[silk_NUM_TIMERS_MAX][silk_NUM_TIMERS_MAX_TAG_LEN];
-#ifdef _WIN32
-extern LARGE_INTEGER silk_Timer_start[silk_NUM_TIMERS_MAX];
-#else
-extern unsigned long silk_Timer_start[silk_NUM_TIMERS_MAX];
-#endif
-extern unsigned int silk_Timer_cnt[silk_NUM_TIMERS_MAX];
-extern opus_int64 silk_Timer_sum[silk_NUM_TIMERS_MAX];
-extern opus_int64 silk_Timer_max[silk_NUM_TIMERS_MAX];
-extern opus_int64 silk_Timer_min[silk_NUM_TIMERS_MAX];
-extern opus_int64 silk_Timer_depth[silk_NUM_TIMERS_MAX];
-
-/* WARNING: TIC()/TOC can measure only up to 0.1 seconds at a time */
-#ifdef _WIN32
-#define TIC(TAG_NAME) { \
- static int init = 0; \
- static int ID = -1; \
- if( init == 0 ) \
- { \
- int k; \
- init = 1; \
- for( k = 0; k < silk_Timer_nTimers; k++ ) { \
- if( strcmp(silk_Timer_tags[k], #TAG_NAME) == 0 ) { \
- ID = k; \
- break; \
- } \
- } \
- if (ID == -1) { \
- ID = silk_Timer_nTimers; \
- silk_Timer_nTimers++; \
- silk_Timer_depth[ID] = silk_Timer_depth_ctr; \
- strcpy(silk_Timer_tags[ID], #TAG_NAME); \
- silk_Timer_cnt[ID] = 0; \
- silk_Timer_sum[ID] = 0; \
- silk_Timer_min[ID] = 0xFFFFFFFF; \
- silk_Timer_max[ID] = 0; \
- } \
- } \
- silk_Timer_depth_ctr++; \
- QueryPerformanceCounter(&silk_Timer_start[ID]); \
-}
-#else
-#define TIC(TAG_NAME) { \
- static int init = 0; \
- static int ID = -1; \
- if( init == 0 ) \
- { \
- int k; \
- init = 1; \
- for( k = 0; k < silk_Timer_nTimers; k++ ) { \
- if( strcmp(silk_Timer_tags[k], #TAG_NAME) == 0 ) { \
- ID = k; \
- break; \
- } \
- } \
- if (ID == -1) { \
- ID = silk_Timer_nTimers; \
- silk_Timer_nTimers++; \
- silk_Timer_depth[ID] = silk_Timer_depth_ctr; \
- strcpy(silk_Timer_tags[ID], #TAG_NAME); \
- silk_Timer_cnt[ID] = 0; \
- silk_Timer_sum[ID] = 0; \
- silk_Timer_min[ID] = 0xFFFFFFFF; \
- silk_Timer_max[ID] = 0; \
- } \
- } \
- silk_Timer_depth_ctr++; \
- silk_Timer_start[ID] = GetHighResolutionTime(); \
-}
-#endif
-
-#ifdef _WIN32
-#define TOC(TAG_NAME) { \
- LARGE_INTEGER lpPerformanceCount; \
- static int init = 0; \
- static int ID = 0; \
- if( init == 0 ) \
- { \
- int k; \
- init = 1; \
- for( k = 0; k < silk_Timer_nTimers; k++ ) { \
- if( strcmp(silk_Timer_tags[k], #TAG_NAME) == 0 ) { \
- ID = k; \
- break; \
- } \
- } \
- } \
- QueryPerformanceCounter(&lpPerformanceCount); \
- lpPerformanceCount.QuadPart -= silk_Timer_start[ID].QuadPart; \
- if((lpPerformanceCount.QuadPart < 100000000) && \
- (lpPerformanceCount.QuadPart >= 0)) { \
- silk_Timer_cnt[ID]++; \
- silk_Timer_sum[ID] += lpPerformanceCount.QuadPart; \
- if( lpPerformanceCount.QuadPart > silk_Timer_max[ID] ) \
- silk_Timer_max[ID] = lpPerformanceCount.QuadPart; \
- if( lpPerformanceCount.QuadPart < silk_Timer_min[ID] ) \
- silk_Timer_min[ID] = lpPerformanceCount.QuadPart; \
- } \
- silk_Timer_depth_ctr--; \
-}
-#else
-#define TOC(TAG_NAME) { \
- unsigned long endTime; \
- static int init = 0; \
- static int ID = 0; \
- if( init == 0 ) \
- { \
- int k; \
- init = 1; \
- for( k = 0; k < silk_Timer_nTimers; k++ ) { \
- if( strcmp(silk_Timer_tags[k], #TAG_NAME) == 0 ) { \
- ID = k; \
- break; \
- } \
- } \
- } \
- endTime = GetHighResolutionTime(); \
- endTime -= silk_Timer_start[ID]; \
- if((endTime < 100000000) && \
- (endTime >= 0)) { \
- silk_Timer_cnt[ID]++; \
- silk_Timer_sum[ID] += endTime; \
- if( endTime > silk_Timer_max[ID] ) \
- silk_Timer_max[ID] = endTime; \
- if( endTime < silk_Timer_min[ID] ) \
- silk_Timer_min[ID] = endTime; \
- } \
- silk_Timer_depth_ctr--; \
-}
-#endif
-
-#else /* SILK_TIC_TOC */
-
-/* define macros as empty strings */
-#define TIC(TAG_NAME)
-#define TOC(TAG_NAME)
-#define silk_TimerSave(FILE_NAME)
-
-#endif /* SILK_TIC_TOC */
-
-
-#if SILK_DEBUG
-/************************************/
-/* write data to file for debugging */
-/************************************/
-/* Example: DEBUG_STORE_DATA(testfile.pcm, &RIN[0], 160*sizeof(opus_int16)); */
-
-#define silk_NUM_STORES_MAX 100
-extern FILE *silk_debug_store_fp[ silk_NUM_STORES_MAX ];
-extern int silk_debug_store_count;
-
-/* Faster way of storing the data */
-#define DEBUG_STORE_DATA( FILE_NAME, DATA_PTR, N_BYTES ) { \
- static opus_int init = 0, cnt = 0; \
- static FILE **fp; \
- if (init == 0) { \
- init = 1; \
- cnt = silk_debug_store_count++; \
- silk_debug_store_fp[ cnt ] = fopen(#FILE_NAME, "wb"); \
- } \
- fwrite((DATA_PTR), (N_BYTES), 1, silk_debug_store_fp[ cnt ]); \
-}
-
-/* Call this at the end of main() */
-#define SILK_DEBUG_STORE_CLOSE_FILES { \
- opus_int i; \
- for( i = 0; i < silk_debug_store_count; i++ ) { \
- fclose( silk_debug_store_fp[ i ] ); \
- } \
-}
-
-#else /* SILK_DEBUG */
-
-/* define macros as empty strings */
-#define DEBUG_STORE_DATA(FILE_NAME, DATA_PTR, N_BYTES)
-#define SILK_DEBUG_STORE_CLOSE_FILES
-
-#endif /* SILK_DEBUG */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SILK_DEBUG_H */
diff --git a/thirdparty/opus/silk/dec_API.c b/thirdparty/opus/silk/dec_API.c
deleted file mode 100644
index b7d8ed48d8..0000000000
--- a/thirdparty/opus/silk/dec_API.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "API.h"
-#include "main.h"
-#include "stack_alloc.h"
-#include "os_support.h"
-
-/************************/
-/* Decoder Super Struct */
-/************************/
-typedef struct {
- silk_decoder_state channel_state[ DECODER_NUM_CHANNELS ];
- stereo_dec_state sStereo;
- opus_int nChannelsAPI;
- opus_int nChannelsInternal;
- opus_int prev_decode_only_middle;
-} silk_decoder;
-
-/*********************/
-/* Decoder functions */
-/*********************/
-
-opus_int silk_Get_Decoder_Size( /* O Returns error code */
- opus_int *decSizeBytes /* O Number of bytes in SILK decoder state */
-)
-{
- opus_int ret = SILK_NO_ERROR;
-
- *decSizeBytes = sizeof( silk_decoder );
-
- return ret;
-}
-
-/* Reset decoder state */
-opus_int silk_InitDecoder( /* O Returns error code */
- void *decState /* I/O State */
-)
-{
- opus_int n, ret = SILK_NO_ERROR;
- silk_decoder_state *channel_state = ((silk_decoder *)decState)->channel_state;
-
- for( n = 0; n < DECODER_NUM_CHANNELS; n++ ) {
- ret = silk_init_decoder( &channel_state[ n ] );
- }
- silk_memset(&((silk_decoder *)decState)->sStereo, 0, sizeof(((silk_decoder *)decState)->sStereo));
- /* Not strictly needed, but it's cleaner that way */
- ((silk_decoder *)decState)->prev_decode_only_middle = 0;
-
- return ret;
-}
-
-/* Decode a frame */
-opus_int silk_Decode( /* O Returns error code */
- void* decState, /* I/O State */
- silk_DecControlStruct* decControl, /* I/O Control Structure */
- opus_int lostFlag, /* I 0: no loss, 1 loss, 2 decode fec */
- opus_int newPacketFlag, /* I Indicates first decoder call for this packet */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int16 *samplesOut, /* O Decoded output speech vector */
- opus_int32 *nSamplesOut, /* O Number of samples decoded */
- int arch /* I Run-time architecture */
-)
-{
- opus_int i, n, decode_only_middle = 0, ret = SILK_NO_ERROR;
- opus_int32 nSamplesOutDec, LBRR_symbol;
- opus_int16 *samplesOut1_tmp[ 2 ];
- VARDECL( opus_int16, samplesOut1_tmp_storage1 );
- VARDECL( opus_int16, samplesOut1_tmp_storage2 );
- VARDECL( opus_int16, samplesOut2_tmp );
- opus_int32 MS_pred_Q13[ 2 ] = { 0 };
- opus_int16 *resample_out_ptr;
- silk_decoder *psDec = ( silk_decoder * )decState;
- silk_decoder_state *channel_state = psDec->channel_state;
- opus_int has_side;
- opus_int stereo_to_mono;
- int delay_stack_alloc;
- SAVE_STACK;
-
- silk_assert( decControl->nChannelsInternal == 1 || decControl->nChannelsInternal == 2 );
-
- /**********************************/
- /* Test if first frame in payload */
- /**********************************/
- if( newPacketFlag ) {
- for( n = 0; n < decControl->nChannelsInternal; n++ ) {
- channel_state[ n ].nFramesDecoded = 0; /* Used to count frames in packet */
- }
- }
-
- /* If Mono -> Stereo transition in bitstream: init state of second channel */
- if( decControl->nChannelsInternal > psDec->nChannelsInternal ) {
- ret += silk_init_decoder( &channel_state[ 1 ] );
- }
-
- stereo_to_mono = decControl->nChannelsInternal == 1 && psDec->nChannelsInternal == 2 &&
- ( decControl->internalSampleRate == 1000*channel_state[ 0 ].fs_kHz );
-
- if( channel_state[ 0 ].nFramesDecoded == 0 ) {
- for( n = 0; n < decControl->nChannelsInternal; n++ ) {
- opus_int fs_kHz_dec;
- if( decControl->payloadSize_ms == 0 ) {
- /* Assuming packet loss, use 10 ms */
- channel_state[ n ].nFramesPerPacket = 1;
- channel_state[ n ].nb_subfr = 2;
- } else if( decControl->payloadSize_ms == 10 ) {
- channel_state[ n ].nFramesPerPacket = 1;
- channel_state[ n ].nb_subfr = 2;
- } else if( decControl->payloadSize_ms == 20 ) {
- channel_state[ n ].nFramesPerPacket = 1;
- channel_state[ n ].nb_subfr = 4;
- } else if( decControl->payloadSize_ms == 40 ) {
- channel_state[ n ].nFramesPerPacket = 2;
- channel_state[ n ].nb_subfr = 4;
- } else if( decControl->payloadSize_ms == 60 ) {
- channel_state[ n ].nFramesPerPacket = 3;
- channel_state[ n ].nb_subfr = 4;
- } else {
- silk_assert( 0 );
- RESTORE_STACK;
- return SILK_DEC_INVALID_FRAME_SIZE;
- }
- fs_kHz_dec = ( decControl->internalSampleRate >> 10 ) + 1;
- if( fs_kHz_dec != 8 && fs_kHz_dec != 12 && fs_kHz_dec != 16 ) {
- silk_assert( 0 );
- RESTORE_STACK;
- return SILK_DEC_INVALID_SAMPLING_FREQUENCY;
- }
- ret += silk_decoder_set_fs( &channel_state[ n ], fs_kHz_dec, decControl->API_sampleRate );
- }
- }
-
- if( decControl->nChannelsAPI == 2 && decControl->nChannelsInternal == 2 && ( psDec->nChannelsAPI == 1 || psDec->nChannelsInternal == 1 ) ) {
- silk_memset( psDec->sStereo.pred_prev_Q13, 0, sizeof( psDec->sStereo.pred_prev_Q13 ) );
- silk_memset( psDec->sStereo.sSide, 0, sizeof( psDec->sStereo.sSide ) );
- silk_memcpy( &channel_state[ 1 ].resampler_state, &channel_state[ 0 ].resampler_state, sizeof( silk_resampler_state_struct ) );
- }
- psDec->nChannelsAPI = decControl->nChannelsAPI;
- psDec->nChannelsInternal = decControl->nChannelsInternal;
-
- if( decControl->API_sampleRate > (opus_int32)MAX_API_FS_KHZ * 1000 || decControl->API_sampleRate < 8000 ) {
- ret = SILK_DEC_INVALID_SAMPLING_FREQUENCY;
- RESTORE_STACK;
- return( ret );
- }
-
- if( lostFlag != FLAG_PACKET_LOST && channel_state[ 0 ].nFramesDecoded == 0 ) {
- /* First decoder call for this payload */
- /* Decode VAD flags and LBRR flag */
- for( n = 0; n < decControl->nChannelsInternal; n++ ) {
- for( i = 0; i < channel_state[ n ].nFramesPerPacket; i++ ) {
- channel_state[ n ].VAD_flags[ i ] = ec_dec_bit_logp(psRangeDec, 1);
- }
- channel_state[ n ].LBRR_flag = ec_dec_bit_logp(psRangeDec, 1);
- }
- /* Decode LBRR flags */
- for( n = 0; n < decControl->nChannelsInternal; n++ ) {
- silk_memset( channel_state[ n ].LBRR_flags, 0, sizeof( channel_state[ n ].LBRR_flags ) );
- if( channel_state[ n ].LBRR_flag ) {
- if( channel_state[ n ].nFramesPerPacket == 1 ) {
- channel_state[ n ].LBRR_flags[ 0 ] = 1;
- } else {
- LBRR_symbol = ec_dec_icdf( psRangeDec, silk_LBRR_flags_iCDF_ptr[ channel_state[ n ].nFramesPerPacket - 2 ], 8 ) + 1;
- for( i = 0; i < channel_state[ n ].nFramesPerPacket; i++ ) {
- channel_state[ n ].LBRR_flags[ i ] = silk_RSHIFT( LBRR_symbol, i ) & 1;
- }
- }
- }
- }
-
- if( lostFlag == FLAG_DECODE_NORMAL ) {
- /* Regular decoding: skip all LBRR data */
- for( i = 0; i < channel_state[ 0 ].nFramesPerPacket; i++ ) {
- for( n = 0; n < decControl->nChannelsInternal; n++ ) {
- if( channel_state[ n ].LBRR_flags[ i ] ) {
- opus_int16 pulses[ MAX_FRAME_LENGTH ];
- opus_int condCoding;
-
- if( decControl->nChannelsInternal == 2 && n == 0 ) {
- silk_stereo_decode_pred( psRangeDec, MS_pred_Q13 );
- if( channel_state[ 1 ].LBRR_flags[ i ] == 0 ) {
- silk_stereo_decode_mid_only( psRangeDec, &decode_only_middle );
- }
- }
- /* Use conditional coding if previous frame available */
- if( i > 0 && channel_state[ n ].LBRR_flags[ i - 1 ] ) {
- condCoding = CODE_CONDITIONALLY;
- } else {
- condCoding = CODE_INDEPENDENTLY;
- }
- silk_decode_indices( &channel_state[ n ], psRangeDec, i, 1, condCoding );
- silk_decode_pulses( psRangeDec, pulses, channel_state[ n ].indices.signalType,
- channel_state[ n ].indices.quantOffsetType, channel_state[ n ].frame_length );
- }
- }
- }
- }
- }
-
- /* Get MS predictor index */
- if( decControl->nChannelsInternal == 2 ) {
- if( lostFlag == FLAG_DECODE_NORMAL ||
- ( lostFlag == FLAG_DECODE_LBRR && channel_state[ 0 ].LBRR_flags[ channel_state[ 0 ].nFramesDecoded ] == 1 ) )
- {
- silk_stereo_decode_pred( psRangeDec, MS_pred_Q13 );
- /* For LBRR data, decode mid-only flag only if side-channel's LBRR flag is false */
- if( ( lostFlag == FLAG_DECODE_NORMAL && channel_state[ 1 ].VAD_flags[ channel_state[ 0 ].nFramesDecoded ] == 0 ) ||
- ( lostFlag == FLAG_DECODE_LBRR && channel_state[ 1 ].LBRR_flags[ channel_state[ 0 ].nFramesDecoded ] == 0 ) )
- {
- silk_stereo_decode_mid_only( psRangeDec, &decode_only_middle );
- } else {
- decode_only_middle = 0;
- }
- } else {
- for( n = 0; n < 2; n++ ) {
- MS_pred_Q13[ n ] = psDec->sStereo.pred_prev_Q13[ n ];
- }
- }
- }
-
- /* Reset side channel decoder prediction memory for first frame with side coding */
- if( decControl->nChannelsInternal == 2 && decode_only_middle == 0 && psDec->prev_decode_only_middle == 1 ) {
- silk_memset( psDec->channel_state[ 1 ].outBuf, 0, sizeof(psDec->channel_state[ 1 ].outBuf) );
- silk_memset( psDec->channel_state[ 1 ].sLPC_Q14_buf, 0, sizeof(psDec->channel_state[ 1 ].sLPC_Q14_buf) );
- psDec->channel_state[ 1 ].lagPrev = 100;
- psDec->channel_state[ 1 ].LastGainIndex = 10;
- psDec->channel_state[ 1 ].prevSignalType = TYPE_NO_VOICE_ACTIVITY;
- psDec->channel_state[ 1 ].first_frame_after_reset = 1;
- }
-
- /* Check if the temp buffer fits into the output PCM buffer. If it fits,
- we can delay allocating the temp buffer until after the SILK peak stack
- usage. We need to use a < and not a <= because of the two extra samples. */
- delay_stack_alloc = decControl->internalSampleRate*decControl->nChannelsInternal
- < decControl->API_sampleRate*decControl->nChannelsAPI;
- ALLOC( samplesOut1_tmp_storage1, delay_stack_alloc ? ALLOC_NONE
- : decControl->nChannelsInternal*(channel_state[ 0 ].frame_length + 2 ),
- opus_int16 );
- if ( delay_stack_alloc )
- {
- samplesOut1_tmp[ 0 ] = samplesOut;
- samplesOut1_tmp[ 1 ] = samplesOut + channel_state[ 0 ].frame_length + 2;
- } else {
- samplesOut1_tmp[ 0 ] = samplesOut1_tmp_storage1;
- samplesOut1_tmp[ 1 ] = samplesOut1_tmp_storage1 + channel_state[ 0 ].frame_length + 2;
- }
-
- if( lostFlag == FLAG_DECODE_NORMAL ) {
- has_side = !decode_only_middle;
- } else {
- has_side = !psDec->prev_decode_only_middle
- || (decControl->nChannelsInternal == 2 && lostFlag == FLAG_DECODE_LBRR && channel_state[1].LBRR_flags[ channel_state[1].nFramesDecoded ] == 1 );
- }
- /* Call decoder for one frame */
- for( n = 0; n < decControl->nChannelsInternal; n++ ) {
- if( n == 0 || has_side ) {
- opus_int FrameIndex;
- opus_int condCoding;
-
- FrameIndex = channel_state[ 0 ].nFramesDecoded - n;
- /* Use independent coding if no previous frame available */
- if( FrameIndex <= 0 ) {
- condCoding = CODE_INDEPENDENTLY;
- } else if( lostFlag == FLAG_DECODE_LBRR ) {
- condCoding = channel_state[ n ].LBRR_flags[ FrameIndex - 1 ] ? CODE_CONDITIONALLY : CODE_INDEPENDENTLY;
- } else if( n > 0 && psDec->prev_decode_only_middle ) {
- /* If we skipped a side frame in this packet, we don't
- need LTP scaling; the LTP state is well-defined. */
- condCoding = CODE_INDEPENDENTLY_NO_LTP_SCALING;
- } else {
- condCoding = CODE_CONDITIONALLY;
- }
- ret += silk_decode_frame( &channel_state[ n ], psRangeDec, &samplesOut1_tmp[ n ][ 2 ], &nSamplesOutDec, lostFlag, condCoding, arch);
- } else {
- silk_memset( &samplesOut1_tmp[ n ][ 2 ], 0, nSamplesOutDec * sizeof( opus_int16 ) );
- }
- channel_state[ n ].nFramesDecoded++;
- }
-
- if( decControl->nChannelsAPI == 2 && decControl->nChannelsInternal == 2 ) {
- /* Convert Mid/Side to Left/Right */
- silk_stereo_MS_to_LR( &psDec->sStereo, samplesOut1_tmp[ 0 ], samplesOut1_tmp[ 1 ], MS_pred_Q13, channel_state[ 0 ].fs_kHz, nSamplesOutDec );
- } else {
- /* Buffering */
- silk_memcpy( samplesOut1_tmp[ 0 ], psDec->sStereo.sMid, 2 * sizeof( opus_int16 ) );
- silk_memcpy( psDec->sStereo.sMid, &samplesOut1_tmp[ 0 ][ nSamplesOutDec ], 2 * sizeof( opus_int16 ) );
- }
-
- /* Number of output samples */
- *nSamplesOut = silk_DIV32( nSamplesOutDec * decControl->API_sampleRate, silk_SMULBB( channel_state[ 0 ].fs_kHz, 1000 ) );
-
- /* Set up pointers to temp buffers */
- ALLOC( samplesOut2_tmp,
- decControl->nChannelsAPI == 2 ? *nSamplesOut : ALLOC_NONE, opus_int16 );
- if( decControl->nChannelsAPI == 2 ) {
- resample_out_ptr = samplesOut2_tmp;
- } else {
- resample_out_ptr = samplesOut;
- }
-
- ALLOC( samplesOut1_tmp_storage2, delay_stack_alloc
- ? decControl->nChannelsInternal*(channel_state[ 0 ].frame_length + 2 )
- : ALLOC_NONE,
- opus_int16 );
- if ( delay_stack_alloc ) {
- OPUS_COPY(samplesOut1_tmp_storage2, samplesOut, decControl->nChannelsInternal*(channel_state[ 0 ].frame_length + 2));
- samplesOut1_tmp[ 0 ] = samplesOut1_tmp_storage2;
- samplesOut1_tmp[ 1 ] = samplesOut1_tmp_storage2 + channel_state[ 0 ].frame_length + 2;
- }
- for( n = 0; n < silk_min( decControl->nChannelsAPI, decControl->nChannelsInternal ); n++ ) {
-
- /* Resample decoded signal to API_sampleRate */
- ret += silk_resampler( &channel_state[ n ].resampler_state, resample_out_ptr, &samplesOut1_tmp[ n ][ 1 ], nSamplesOutDec );
-
- /* Interleave if stereo output and stereo stream */
- if( decControl->nChannelsAPI == 2 ) {
- for( i = 0; i < *nSamplesOut; i++ ) {
- samplesOut[ n + 2 * i ] = resample_out_ptr[ i ];
- }
- }
- }
-
- /* Create two channel output from mono stream */
- if( decControl->nChannelsAPI == 2 && decControl->nChannelsInternal == 1 ) {
- if ( stereo_to_mono ){
- /* Resample right channel for newly collapsed stereo just in case
- we weren't doing collapsing when switching to mono */
- ret += silk_resampler( &channel_state[ 1 ].resampler_state, resample_out_ptr, &samplesOut1_tmp[ 0 ][ 1 ], nSamplesOutDec );
-
- for( i = 0; i < *nSamplesOut; i++ ) {
- samplesOut[ 1 + 2 * i ] = resample_out_ptr[ i ];
- }
- } else {
- for( i = 0; i < *nSamplesOut; i++ ) {
- samplesOut[ 1 + 2 * i ] = samplesOut[ 0 + 2 * i ];
- }
- }
- }
-
- /* Export pitch lag, measured at 48 kHz sampling rate */
- if( channel_state[ 0 ].prevSignalType == TYPE_VOICED ) {
- int mult_tab[ 3 ] = { 6, 4, 3 };
- decControl->prevPitchLag = channel_state[ 0 ].lagPrev * mult_tab[ ( channel_state[ 0 ].fs_kHz - 8 ) >> 2 ];
- } else {
- decControl->prevPitchLag = 0;
- }
-
- if( lostFlag == FLAG_PACKET_LOST ) {
- /* On packet loss, remove the gain clamping to prevent having the energy "bounce back"
- if we lose packets when the energy is going down */
- for ( i = 0; i < psDec->nChannelsInternal; i++ )
- psDec->channel_state[ i ].LastGainIndex = 10;
- } else {
- psDec->prev_decode_only_middle = decode_only_middle;
- }
- RESTORE_STACK;
- return ret;
-}
-
-#if 0
-/* Getting table of contents for a packet */
-opus_int silk_get_TOC(
- const opus_uint8 *payload, /* I Payload data */
- const opus_int nBytesIn, /* I Number of input bytes */
- const opus_int nFramesPerPayload, /* I Number of SILK frames per payload */
- silk_TOC_struct *Silk_TOC /* O Type of content */
-)
-{
- opus_int i, flags, ret = SILK_NO_ERROR;
-
- if( nBytesIn < 1 ) {
- return -1;
- }
- if( nFramesPerPayload < 0 || nFramesPerPayload > 3 ) {
- return -1;
- }
-
- silk_memset( Silk_TOC, 0, sizeof( *Silk_TOC ) );
-
- /* For stereo, extract the flags for the mid channel */
- flags = silk_RSHIFT( payload[ 0 ], 7 - nFramesPerPayload ) & ( silk_LSHIFT( 1, nFramesPerPayload + 1 ) - 1 );
-
- Silk_TOC->inbandFECFlag = flags & 1;
- for( i = nFramesPerPayload - 1; i >= 0 ; i-- ) {
- flags = silk_RSHIFT( flags, 1 );
- Silk_TOC->VADFlags[ i ] = flags & 1;
- Silk_TOC->VADFlag |= flags & 1;
- }
-
- return ret;
-}
-#endif
diff --git a/thirdparty/opus/silk/decode_core.c b/thirdparty/opus/silk/decode_core.c
deleted file mode 100644
index e569c0e72b..0000000000
--- a/thirdparty/opus/silk/decode_core.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-
-/**********************************************************/
-/* Core decoder. Performs inverse NSQ operation LTP + LPC */
-/**********************************************************/
-void silk_decode_core(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl, /* I Decoder control */
- opus_int16 xq[], /* O Decoded speech */
- const opus_int16 pulses[ MAX_FRAME_LENGTH ], /* I Pulse signal */
- int arch /* I Run-time architecture */
-)
-{
- opus_int i, k, lag = 0, start_idx, sLTP_buf_idx, NLSF_interpolation_flag, signalType;
- opus_int16 *A_Q12, *B_Q14, *pxq, A_Q12_tmp[ MAX_LPC_ORDER ];
- VARDECL( opus_int16, sLTP );
- VARDECL( opus_int32, sLTP_Q15 );
- opus_int32 LTP_pred_Q13, LPC_pred_Q10, Gain_Q10, inv_gain_Q31, gain_adj_Q16, rand_seed, offset_Q10;
- opus_int32 *pred_lag_ptr, *pexc_Q14, *pres_Q14;
- VARDECL( opus_int32, res_Q14 );
- VARDECL( opus_int32, sLPC_Q14 );
- SAVE_STACK;
-
- silk_assert( psDec->prev_gain_Q16 != 0 );
-
- ALLOC( sLTP, psDec->ltp_mem_length, opus_int16 );
- ALLOC( sLTP_Q15, psDec->ltp_mem_length + psDec->frame_length, opus_int32 );
- ALLOC( res_Q14, psDec->subfr_length, opus_int32 );
- ALLOC( sLPC_Q14, psDec->subfr_length + MAX_LPC_ORDER, opus_int32 );
-
- offset_Q10 = silk_Quantization_Offsets_Q10[ psDec->indices.signalType >> 1 ][ psDec->indices.quantOffsetType ];
-
- if( psDec->indices.NLSFInterpCoef_Q2 < 1 << 2 ) {
- NLSF_interpolation_flag = 1;
- } else {
- NLSF_interpolation_flag = 0;
- }
-
- /* Decode excitation */
- rand_seed = psDec->indices.Seed;
- for( i = 0; i < psDec->frame_length; i++ ) {
- rand_seed = silk_RAND( rand_seed );
- psDec->exc_Q14[ i ] = silk_LSHIFT( (opus_int32)pulses[ i ], 14 );
- if( psDec->exc_Q14[ i ] > 0 ) {
- psDec->exc_Q14[ i ] -= QUANT_LEVEL_ADJUST_Q10 << 4;
- } else
- if( psDec->exc_Q14[ i ] < 0 ) {
- psDec->exc_Q14[ i ] += QUANT_LEVEL_ADJUST_Q10 << 4;
- }
- psDec->exc_Q14[ i ] += offset_Q10 << 4;
- if( rand_seed < 0 ) {
- psDec->exc_Q14[ i ] = -psDec->exc_Q14[ i ];
- }
-
- rand_seed = silk_ADD32_ovflw( rand_seed, pulses[ i ] );
- }
-
- /* Copy LPC state */
- silk_memcpy( sLPC_Q14, psDec->sLPC_Q14_buf, MAX_LPC_ORDER * sizeof( opus_int32 ) );
-
- pexc_Q14 = psDec->exc_Q14;
- pxq = xq;
- sLTP_buf_idx = psDec->ltp_mem_length;
- /* Loop over subframes */
- for( k = 0; k < psDec->nb_subfr; k++ ) {
- pres_Q14 = res_Q14;
- A_Q12 = psDecCtrl->PredCoef_Q12[ k >> 1 ];
-
- /* Preload LPC coeficients to array on stack. Gives small performance gain */
- silk_memcpy( A_Q12_tmp, A_Q12, psDec->LPC_order * sizeof( opus_int16 ) );
- B_Q14 = &psDecCtrl->LTPCoef_Q14[ k * LTP_ORDER ];
- signalType = psDec->indices.signalType;
-
- Gain_Q10 = silk_RSHIFT( psDecCtrl->Gains_Q16[ k ], 6 );
- inv_gain_Q31 = silk_INVERSE32_varQ( psDecCtrl->Gains_Q16[ k ], 47 );
-
- /* Calculate gain adjustment factor */
- if( psDecCtrl->Gains_Q16[ k ] != psDec->prev_gain_Q16 ) {
- gain_adj_Q16 = silk_DIV32_varQ( psDec->prev_gain_Q16, psDecCtrl->Gains_Q16[ k ], 16 );
-
- /* Scale short term state */
- for( i = 0; i < MAX_LPC_ORDER; i++ ) {
- sLPC_Q14[ i ] = silk_SMULWW( gain_adj_Q16, sLPC_Q14[ i ] );
- }
- } else {
- gain_adj_Q16 = (opus_int32)1 << 16;
- }
-
- /* Save inv_gain */
- silk_assert( inv_gain_Q31 != 0 );
- psDec->prev_gain_Q16 = psDecCtrl->Gains_Q16[ k ];
-
- /* Avoid abrupt transition from voiced PLC to unvoiced normal decoding */
- if( psDec->lossCnt && psDec->prevSignalType == TYPE_VOICED &&
- psDec->indices.signalType != TYPE_VOICED && k < MAX_NB_SUBFR/2 ) {
-
- silk_memset( B_Q14, 0, LTP_ORDER * sizeof( opus_int16 ) );
- B_Q14[ LTP_ORDER/2 ] = SILK_FIX_CONST( 0.25, 14 );
-
- signalType = TYPE_VOICED;
- psDecCtrl->pitchL[ k ] = psDec->lagPrev;
- }
-
- if( signalType == TYPE_VOICED ) {
- /* Voiced */
- lag = psDecCtrl->pitchL[ k ];
-
- /* Re-whitening */
- if( k == 0 || ( k == 2 && NLSF_interpolation_flag ) ) {
- /* Rewhiten with new A coefs */
- start_idx = psDec->ltp_mem_length - lag - psDec->LPC_order - LTP_ORDER / 2;
- silk_assert( start_idx > 0 );
-
- if( k == 2 ) {
- silk_memcpy( &psDec->outBuf[ psDec->ltp_mem_length ], xq, 2 * psDec->subfr_length * sizeof( opus_int16 ) );
- }
-
- silk_LPC_analysis_filter( &sLTP[ start_idx ], &psDec->outBuf[ start_idx + k * psDec->subfr_length ],
- A_Q12, psDec->ltp_mem_length - start_idx, psDec->LPC_order, arch );
-
- /* After rewhitening the LTP state is unscaled */
- if( k == 0 ) {
- /* Do LTP downscaling to reduce inter-packet dependency */
- inv_gain_Q31 = silk_LSHIFT( silk_SMULWB( inv_gain_Q31, psDecCtrl->LTP_scale_Q14 ), 2 );
- }
- for( i = 0; i < lag + LTP_ORDER/2; i++ ) {
- sLTP_Q15[ sLTP_buf_idx - i - 1 ] = silk_SMULWB( inv_gain_Q31, sLTP[ psDec->ltp_mem_length - i - 1 ] );
- }
- } else {
- /* Update LTP state when Gain changes */
- if( gain_adj_Q16 != (opus_int32)1 << 16 ) {
- for( i = 0; i < lag + LTP_ORDER/2; i++ ) {
- sLTP_Q15[ sLTP_buf_idx - i - 1 ] = silk_SMULWW( gain_adj_Q16, sLTP_Q15[ sLTP_buf_idx - i - 1 ] );
- }
- }
- }
- }
-
- /* Long-term prediction */
- if( signalType == TYPE_VOICED ) {
- /* Set up pointer */
- pred_lag_ptr = &sLTP_Q15[ sLTP_buf_idx - lag + LTP_ORDER / 2 ];
- for( i = 0; i < psDec->subfr_length; i++ ) {
- /* Unrolled loop */
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LTP_pred_Q13 = 2;
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ 0 ], B_Q14[ 0 ] );
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -1 ], B_Q14[ 1 ] );
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -2 ], B_Q14[ 2 ] );
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -3 ], B_Q14[ 3 ] );
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -4 ], B_Q14[ 4 ] );
- pred_lag_ptr++;
-
- /* Generate LPC excitation */
- pres_Q14[ i ] = silk_ADD_LSHIFT32( pexc_Q14[ i ], LTP_pred_Q13, 1 );
-
- /* Update states */
- sLTP_Q15[ sLTP_buf_idx ] = silk_LSHIFT( pres_Q14[ i ], 1 );
- sLTP_buf_idx++;
- }
- } else {
- pres_Q14 = pexc_Q14;
- }
-
- for( i = 0; i < psDec->subfr_length; i++ ) {
- /* Short-term prediction */
- silk_assert( psDec->LPC_order == 10 || psDec->LPC_order == 16 );
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LPC_pred_Q10 = silk_RSHIFT( psDec->LPC_order, 1 );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 1 ], A_Q12_tmp[ 0 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 2 ], A_Q12_tmp[ 1 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 3 ], A_Q12_tmp[ 2 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 4 ], A_Q12_tmp[ 3 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 5 ], A_Q12_tmp[ 4 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 6 ], A_Q12_tmp[ 5 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 7 ], A_Q12_tmp[ 6 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 8 ], A_Q12_tmp[ 7 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 9 ], A_Q12_tmp[ 8 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 10 ], A_Q12_tmp[ 9 ] );
- if( psDec->LPC_order == 16 ) {
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 11 ], A_Q12_tmp[ 10 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 12 ], A_Q12_tmp[ 11 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 13 ], A_Q12_tmp[ 12 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 14 ], A_Q12_tmp[ 13 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 15 ], A_Q12_tmp[ 14 ] );
- LPC_pred_Q10 = silk_SMLAWB( LPC_pred_Q10, sLPC_Q14[ MAX_LPC_ORDER + i - 16 ], A_Q12_tmp[ 15 ] );
- }
-
- /* Add prediction to LPC excitation */
- sLPC_Q14[ MAX_LPC_ORDER + i ] = silk_ADD_SAT32( pres_Q14[ i ], silk_LSHIFT_SAT32( LPC_pred_Q10, 4 ) );
-
- /* Scale with gain */
- pxq[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( sLPC_Q14[ MAX_LPC_ORDER + i ], Gain_Q10 ), 8 ) );
- }
-
- /* DEBUG_STORE_DATA( dec.pcm, pxq, psDec->subfr_length * sizeof( opus_int16 ) ) */
-
- /* Update LPC filter state */
- silk_memcpy( sLPC_Q14, &sLPC_Q14[ psDec->subfr_length ], MAX_LPC_ORDER * sizeof( opus_int32 ) );
- pexc_Q14 += psDec->subfr_length;
- pxq += psDec->subfr_length;
- }
-
- /* Save LPC state */
- silk_memcpy( psDec->sLPC_Q14_buf, sLPC_Q14, MAX_LPC_ORDER * sizeof( opus_int32 ) );
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/decode_frame.c b/thirdparty/opus/silk/decode_frame.c
deleted file mode 100644
index a605d95ac6..0000000000
--- a/thirdparty/opus/silk/decode_frame.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-#include "PLC.h"
-
-/****************/
-/* Decode frame */
-/****************/
-opus_int silk_decode_frame(
- silk_decoder_state *psDec, /* I/O Pointer to Silk decoder state */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int16 pOut[], /* O Pointer to output speech frame */
- opus_int32 *pN, /* O Pointer to size of output frame */
- opus_int lostFlag, /* I 0: no loss, 1 loss, 2 decode fec */
- opus_int condCoding, /* I The type of conditional coding to use */
- int arch /* I Run-time architecture */
-)
-{
- VARDECL( silk_decoder_control, psDecCtrl );
- opus_int L, mv_len, ret = 0;
- SAVE_STACK;
-
- L = psDec->frame_length;
- ALLOC( psDecCtrl, 1, silk_decoder_control );
- psDecCtrl->LTP_scale_Q14 = 0;
-
- /* Safety checks */
- silk_assert( L > 0 && L <= MAX_FRAME_LENGTH );
-
- if( lostFlag == FLAG_DECODE_NORMAL ||
- ( lostFlag == FLAG_DECODE_LBRR && psDec->LBRR_flags[ psDec->nFramesDecoded ] == 1 ) )
- {
- VARDECL( opus_int16, pulses );
- ALLOC( pulses, (L + SHELL_CODEC_FRAME_LENGTH - 1) &
- ~(SHELL_CODEC_FRAME_LENGTH - 1), opus_int16 );
- /*********************************************/
- /* Decode quantization indices of side info */
- /*********************************************/
- silk_decode_indices( psDec, psRangeDec, psDec->nFramesDecoded, lostFlag, condCoding );
-
- /*********************************************/
- /* Decode quantization indices of excitation */
- /*********************************************/
- silk_decode_pulses( psRangeDec, pulses, psDec->indices.signalType,
- psDec->indices.quantOffsetType, psDec->frame_length );
-
- /********************************************/
- /* Decode parameters and pulse signal */
- /********************************************/
- silk_decode_parameters( psDec, psDecCtrl, condCoding );
-
- /********************************************************/
- /* Run inverse NSQ */
- /********************************************************/
- silk_decode_core( psDec, psDecCtrl, pOut, pulses, arch );
-
- /********************************************************/
- /* Update PLC state */
- /********************************************************/
- silk_PLC( psDec, psDecCtrl, pOut, 0, arch );
-
- psDec->lossCnt = 0;
- psDec->prevSignalType = psDec->indices.signalType;
- silk_assert( psDec->prevSignalType >= 0 && psDec->prevSignalType <= 2 );
-
- /* A frame has been decoded without errors */
- psDec->first_frame_after_reset = 0;
- } else {
- /* Handle packet loss by extrapolation */
- silk_PLC( psDec, psDecCtrl, pOut, 1, arch );
- }
-
- /*************************/
- /* Update output buffer. */
- /*************************/
- silk_assert( psDec->ltp_mem_length >= psDec->frame_length );
- mv_len = psDec->ltp_mem_length - psDec->frame_length;
- silk_memmove( psDec->outBuf, &psDec->outBuf[ psDec->frame_length ], mv_len * sizeof(opus_int16) );
- silk_memcpy( &psDec->outBuf[ mv_len ], pOut, psDec->frame_length * sizeof( opus_int16 ) );
-
- /************************************************/
- /* Comfort noise generation / estimation */
- /************************************************/
- silk_CNG( psDec, psDecCtrl, pOut, L );
-
- /****************************************************************/
- /* Ensure smooth connection of extrapolated and good frames */
- /****************************************************************/
- silk_PLC_glue_frames( psDec, pOut, L );
-
- /* Update some decoder state variables */
- psDec->lagPrev = psDecCtrl->pitchL[ psDec->nb_subfr - 1 ];
-
- /* Set output frame length */
- *pN = L;
-
- RESTORE_STACK;
- return ret;
-}
diff --git a/thirdparty/opus/silk/decode_indices.c b/thirdparty/opus/silk/decode_indices.c
deleted file mode 100644
index 7afe5c26c1..0000000000
--- a/thirdparty/opus/silk/decode_indices.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Decode side-information parameters from payload */
-void silk_decode_indices(
- silk_decoder_state *psDec, /* I/O State */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int FrameIndex, /* I Frame number */
- opus_int decode_LBRR, /* I Flag indicating LBRR data is being decoded */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- opus_int i, k, Ix;
- opus_int decode_absolute_lagIndex, delta_lagIndex;
- opus_int16 ec_ix[ MAX_LPC_ORDER ];
- opus_uint8 pred_Q8[ MAX_LPC_ORDER ];
-
- /*******************************************/
- /* Decode signal type and quantizer offset */
- /*******************************************/
- if( decode_LBRR || psDec->VAD_flags[ FrameIndex ] ) {
- Ix = ec_dec_icdf( psRangeDec, silk_type_offset_VAD_iCDF, 8 ) + 2;
- } else {
- Ix = ec_dec_icdf( psRangeDec, silk_type_offset_no_VAD_iCDF, 8 );
- }
- psDec->indices.signalType = (opus_int8)silk_RSHIFT( Ix, 1 );
- psDec->indices.quantOffsetType = (opus_int8)( Ix & 1 );
-
- /****************/
- /* Decode gains */
- /****************/
- /* First subframe */
- if( condCoding == CODE_CONDITIONALLY ) {
- /* Conditional coding */
- psDec->indices.GainsIndices[ 0 ] = (opus_int8)ec_dec_icdf( psRangeDec, silk_delta_gain_iCDF, 8 );
- } else {
- /* Independent coding, in two stages: MSB bits followed by 3 LSBs */
- psDec->indices.GainsIndices[ 0 ] = (opus_int8)silk_LSHIFT( ec_dec_icdf( psRangeDec, silk_gain_iCDF[ psDec->indices.signalType ], 8 ), 3 );
- psDec->indices.GainsIndices[ 0 ] += (opus_int8)ec_dec_icdf( psRangeDec, silk_uniform8_iCDF, 8 );
- }
-
- /* Remaining subframes */
- for( i = 1; i < psDec->nb_subfr; i++ ) {
- psDec->indices.GainsIndices[ i ] = (opus_int8)ec_dec_icdf( psRangeDec, silk_delta_gain_iCDF, 8 );
- }
-
- /**********************/
- /* Decode LSF Indices */
- /**********************/
- psDec->indices.NLSFIndices[ 0 ] = (opus_int8)ec_dec_icdf( psRangeDec, &psDec->psNLSF_CB->CB1_iCDF[ ( psDec->indices.signalType >> 1 ) * psDec->psNLSF_CB->nVectors ], 8 );
- silk_NLSF_unpack( ec_ix, pred_Q8, psDec->psNLSF_CB, psDec->indices.NLSFIndices[ 0 ] );
- silk_assert( psDec->psNLSF_CB->order == psDec->LPC_order );
- for( i = 0; i < psDec->psNLSF_CB->order; i++ ) {
- Ix = ec_dec_icdf( psRangeDec, &psDec->psNLSF_CB->ec_iCDF[ ec_ix[ i ] ], 8 );
- if( Ix == 0 ) {
- Ix -= ec_dec_icdf( psRangeDec, silk_NLSF_EXT_iCDF, 8 );
- } else if( Ix == 2 * NLSF_QUANT_MAX_AMPLITUDE ) {
- Ix += ec_dec_icdf( psRangeDec, silk_NLSF_EXT_iCDF, 8 );
- }
- psDec->indices.NLSFIndices[ i+1 ] = (opus_int8)( Ix - NLSF_QUANT_MAX_AMPLITUDE );
- }
-
- /* Decode LSF interpolation factor */
- if( psDec->nb_subfr == MAX_NB_SUBFR ) {
- psDec->indices.NLSFInterpCoef_Q2 = (opus_int8)ec_dec_icdf( psRangeDec, silk_NLSF_interpolation_factor_iCDF, 8 );
- } else {
- psDec->indices.NLSFInterpCoef_Q2 = 4;
- }
-
- if( psDec->indices.signalType == TYPE_VOICED )
- {
- /*********************/
- /* Decode pitch lags */
- /*********************/
- /* Get lag index */
- decode_absolute_lagIndex = 1;
- if( condCoding == CODE_CONDITIONALLY && psDec->ec_prevSignalType == TYPE_VOICED ) {
- /* Decode Delta index */
- delta_lagIndex = (opus_int16)ec_dec_icdf( psRangeDec, silk_pitch_delta_iCDF, 8 );
- if( delta_lagIndex > 0 ) {
- delta_lagIndex = delta_lagIndex - 9;
- psDec->indices.lagIndex = (opus_int16)( psDec->ec_prevLagIndex + delta_lagIndex );
- decode_absolute_lagIndex = 0;
- }
- }
- if( decode_absolute_lagIndex ) {
- /* Absolute decoding */
- psDec->indices.lagIndex = (opus_int16)ec_dec_icdf( psRangeDec, silk_pitch_lag_iCDF, 8 ) * silk_RSHIFT( psDec->fs_kHz, 1 );
- psDec->indices.lagIndex += (opus_int16)ec_dec_icdf( psRangeDec, psDec->pitch_lag_low_bits_iCDF, 8 );
- }
- psDec->ec_prevLagIndex = psDec->indices.lagIndex;
-
- /* Get countour index */
- psDec->indices.contourIndex = (opus_int8)ec_dec_icdf( psRangeDec, psDec->pitch_contour_iCDF, 8 );
-
- /********************/
- /* Decode LTP gains */
- /********************/
- /* Decode PERIndex value */
- psDec->indices.PERIndex = (opus_int8)ec_dec_icdf( psRangeDec, silk_LTP_per_index_iCDF, 8 );
-
- for( k = 0; k < psDec->nb_subfr; k++ ) {
- psDec->indices.LTPIndex[ k ] = (opus_int8)ec_dec_icdf( psRangeDec, silk_LTP_gain_iCDF_ptrs[ psDec->indices.PERIndex ], 8 );
- }
-
- /**********************/
- /* Decode LTP scaling */
- /**********************/
- if( condCoding == CODE_INDEPENDENTLY ) {
- psDec->indices.LTP_scaleIndex = (opus_int8)ec_dec_icdf( psRangeDec, silk_LTPscale_iCDF, 8 );
- } else {
- psDec->indices.LTP_scaleIndex = 0;
- }
- }
- psDec->ec_prevSignalType = psDec->indices.signalType;
-
- /***************/
- /* Decode seed */
- /***************/
- psDec->indices.Seed = (opus_int8)ec_dec_icdf( psRangeDec, silk_uniform4_iCDF, 8 );
-}
diff --git a/thirdparty/opus/silk/decode_parameters.c b/thirdparty/opus/silk/decode_parameters.c
deleted file mode 100644
index e345b1dcef..0000000000
--- a/thirdparty/opus/silk/decode_parameters.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Decode parameters from payload */
-void silk_decode_parameters(
- silk_decoder_state *psDec, /* I/O State */
- silk_decoder_control *psDecCtrl, /* I/O Decoder control */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- opus_int i, k, Ix;
- opus_int16 pNLSF_Q15[ MAX_LPC_ORDER ], pNLSF0_Q15[ MAX_LPC_ORDER ];
- const opus_int8 *cbk_ptr_Q7;
-
- /* Dequant Gains */
- silk_gains_dequant( psDecCtrl->Gains_Q16, psDec->indices.GainsIndices,
- &psDec->LastGainIndex, condCoding == CODE_CONDITIONALLY, psDec->nb_subfr );
-
- /****************/
- /* Decode NLSFs */
- /****************/
- silk_NLSF_decode( pNLSF_Q15, psDec->indices.NLSFIndices, psDec->psNLSF_CB );
-
- /* Convert NLSF parameters to AR prediction filter coefficients */
- silk_NLSF2A( psDecCtrl->PredCoef_Q12[ 1 ], pNLSF_Q15, psDec->LPC_order );
-
- /* If just reset, e.g., because internal Fs changed, do not allow interpolation */
- /* improves the case of packet loss in the first frame after a switch */
- if( psDec->first_frame_after_reset == 1 ) {
- psDec->indices.NLSFInterpCoef_Q2 = 4;
- }
-
- if( psDec->indices.NLSFInterpCoef_Q2 < 4 ) {
- /* Calculation of the interpolated NLSF0 vector from the interpolation factor, */
- /* the previous NLSF1, and the current NLSF1 */
- for( i = 0; i < psDec->LPC_order; i++ ) {
- pNLSF0_Q15[ i ] = psDec->prevNLSF_Q15[ i ] + silk_RSHIFT( silk_MUL( psDec->indices.NLSFInterpCoef_Q2,
- pNLSF_Q15[ i ] - psDec->prevNLSF_Q15[ i ] ), 2 );
- }
-
- /* Convert NLSF parameters to AR prediction filter coefficients */
- silk_NLSF2A( psDecCtrl->PredCoef_Q12[ 0 ], pNLSF0_Q15, psDec->LPC_order );
- } else {
- /* Copy LPC coefficients for first half from second half */
- silk_memcpy( psDecCtrl->PredCoef_Q12[ 0 ], psDecCtrl->PredCoef_Q12[ 1 ], psDec->LPC_order * sizeof( opus_int16 ) );
- }
-
- silk_memcpy( psDec->prevNLSF_Q15, pNLSF_Q15, psDec->LPC_order * sizeof( opus_int16 ) );
-
- /* After a packet loss do BWE of LPC coefs */
- if( psDec->lossCnt ) {
- silk_bwexpander( psDecCtrl->PredCoef_Q12[ 0 ], psDec->LPC_order, BWE_AFTER_LOSS_Q16 );
- silk_bwexpander( psDecCtrl->PredCoef_Q12[ 1 ], psDec->LPC_order, BWE_AFTER_LOSS_Q16 );
- }
-
- if( psDec->indices.signalType == TYPE_VOICED ) {
- /*********************/
- /* Decode pitch lags */
- /*********************/
-
- /* Decode pitch values */
- silk_decode_pitch( psDec->indices.lagIndex, psDec->indices.contourIndex, psDecCtrl->pitchL, psDec->fs_kHz, psDec->nb_subfr );
-
- /* Decode Codebook Index */
- cbk_ptr_Q7 = silk_LTP_vq_ptrs_Q7[ psDec->indices.PERIndex ]; /* set pointer to start of codebook */
-
- for( k = 0; k < psDec->nb_subfr; k++ ) {
- Ix = psDec->indices.LTPIndex[ k ];
- for( i = 0; i < LTP_ORDER; i++ ) {
- psDecCtrl->LTPCoef_Q14[ k * LTP_ORDER + i ] = silk_LSHIFT( cbk_ptr_Q7[ Ix * LTP_ORDER + i ], 7 );
- }
- }
-
- /**********************/
- /* Decode LTP scaling */
- /**********************/
- Ix = psDec->indices.LTP_scaleIndex;
- psDecCtrl->LTP_scale_Q14 = silk_LTPScales_table_Q14[ Ix ];
- } else {
- silk_memset( psDecCtrl->pitchL, 0, psDec->nb_subfr * sizeof( opus_int ) );
- silk_memset( psDecCtrl->LTPCoef_Q14, 0, LTP_ORDER * psDec->nb_subfr * sizeof( opus_int16 ) );
- psDec->indices.PERIndex = 0;
- psDecCtrl->LTP_scale_Q14 = 0;
- }
-}
diff --git a/thirdparty/opus/silk/decode_pitch.c b/thirdparty/opus/silk/decode_pitch.c
deleted file mode 100644
index fedbc6a525..0000000000
--- a/thirdparty/opus/silk/decode_pitch.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/***********************************************************
-* Pitch analyser function
-********************************************************** */
-#include "SigProc_FIX.h"
-#include "pitch_est_defines.h"
-
-void silk_decode_pitch(
- opus_int16 lagIndex, /* I */
- opus_int8 contourIndex, /* O */
- opus_int pitch_lags[], /* O 4 pitch values */
- const opus_int Fs_kHz, /* I sampling frequency (kHz) */
- const opus_int nb_subfr /* I number of sub frames */
-)
-{
- opus_int lag, k, min_lag, max_lag, cbk_size;
- const opus_int8 *Lag_CB_ptr;
-
- if( Fs_kHz == 8 ) {
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- Lag_CB_ptr = &silk_CB_lags_stage2[ 0 ][ 0 ];
- cbk_size = PE_NB_CBKS_STAGE2_EXT;
- } else {
- silk_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1 );
- Lag_CB_ptr = &silk_CB_lags_stage2_10_ms[ 0 ][ 0 ];
- cbk_size = PE_NB_CBKS_STAGE2_10MS;
- }
- } else {
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- Lag_CB_ptr = &silk_CB_lags_stage3[ 0 ][ 0 ];
- cbk_size = PE_NB_CBKS_STAGE3_MAX;
- } else {
- silk_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1 );
- Lag_CB_ptr = &silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
- cbk_size = PE_NB_CBKS_STAGE3_10MS;
- }
- }
-
- min_lag = silk_SMULBB( PE_MIN_LAG_MS, Fs_kHz );
- max_lag = silk_SMULBB( PE_MAX_LAG_MS, Fs_kHz );
- lag = min_lag + lagIndex;
-
- for( k = 0; k < nb_subfr; k++ ) {
- pitch_lags[ k ] = lag + matrix_ptr( Lag_CB_ptr, k, contourIndex, cbk_size );
- pitch_lags[ k ] = silk_LIMIT( pitch_lags[ k ], min_lag, max_lag );
- }
-}
diff --git a/thirdparty/opus/silk/decode_pulses.c b/thirdparty/opus/silk/decode_pulses.c
deleted file mode 100644
index d6bbec9225..0000000000
--- a/thirdparty/opus/silk/decode_pulses.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/*********************************************/
-/* Decode quantization indices of excitation */
-/*********************************************/
-void silk_decode_pulses(
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int16 pulses[], /* O Excitation signal */
- const opus_int signalType, /* I Sigtype */
- const opus_int quantOffsetType, /* I quantOffsetType */
- const opus_int frame_length /* I Frame length */
-)
-{
- opus_int i, j, k, iter, abs_q, nLS, RateLevelIndex;
- opus_int sum_pulses[ MAX_NB_SHELL_BLOCKS ], nLshifts[ MAX_NB_SHELL_BLOCKS ];
- opus_int16 *pulses_ptr;
- const opus_uint8 *cdf_ptr;
-
- /*********************/
- /* Decode rate level */
- /*********************/
- RateLevelIndex = ec_dec_icdf( psRangeDec, silk_rate_levels_iCDF[ signalType >> 1 ], 8 );
-
- /* Calculate number of shell blocks */
- silk_assert( 1 << LOG2_SHELL_CODEC_FRAME_LENGTH == SHELL_CODEC_FRAME_LENGTH );
- iter = silk_RSHIFT( frame_length, LOG2_SHELL_CODEC_FRAME_LENGTH );
- if( iter * SHELL_CODEC_FRAME_LENGTH < frame_length ) {
- silk_assert( frame_length == 12 * 10 ); /* Make sure only happens for 10 ms @ 12 kHz */
- iter++;
- }
-
- /***************************************************/
- /* Sum-Weighted-Pulses Decoding */
- /***************************************************/
- cdf_ptr = silk_pulses_per_block_iCDF[ RateLevelIndex ];
- for( i = 0; i < iter; i++ ) {
- nLshifts[ i ] = 0;
- sum_pulses[ i ] = ec_dec_icdf( psRangeDec, cdf_ptr, 8 );
-
- /* LSB indication */
- while( sum_pulses[ i ] == SILK_MAX_PULSES + 1 ) {
- nLshifts[ i ]++;
- /* When we've already got 10 LSBs, we shift the table to not allow (SILK_MAX_PULSES + 1) */
- sum_pulses[ i ] = ec_dec_icdf( psRangeDec,
- silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1] + ( nLshifts[ i ] == 10 ), 8 );
- }
- }
-
- /***************************************************/
- /* Shell decoding */
- /***************************************************/
- for( i = 0; i < iter; i++ ) {
- if( sum_pulses[ i ] > 0 ) {
- silk_shell_decoder( &pulses[ silk_SMULBB( i, SHELL_CODEC_FRAME_LENGTH ) ], psRangeDec, sum_pulses[ i ] );
- } else {
- silk_memset( &pulses[ silk_SMULBB( i, SHELL_CODEC_FRAME_LENGTH ) ], 0, SHELL_CODEC_FRAME_LENGTH * sizeof( pulses[0] ) );
- }
- }
-
- /***************************************************/
- /* LSB Decoding */
- /***************************************************/
- for( i = 0; i < iter; i++ ) {
- if( nLshifts[ i ] > 0 ) {
- nLS = nLshifts[ i ];
- pulses_ptr = &pulses[ silk_SMULBB( i, SHELL_CODEC_FRAME_LENGTH ) ];
- for( k = 0; k < SHELL_CODEC_FRAME_LENGTH; k++ ) {
- abs_q = pulses_ptr[ k ];
- for( j = 0; j < nLS; j++ ) {
- abs_q = silk_LSHIFT( abs_q, 1 );
- abs_q += ec_dec_icdf( psRangeDec, silk_lsb_iCDF, 8 );
- }
- pulses_ptr[ k ] = abs_q;
- }
- /* Mark the number of pulses non-zero for sign decoding. */
- sum_pulses[ i ] |= nLS << 5;
- }
- }
-
- /****************************************/
- /* Decode and add signs to pulse signal */
- /****************************************/
- silk_decode_signs( psRangeDec, pulses, frame_length, signalType, quantOffsetType, sum_pulses );
-}
diff --git a/thirdparty/opus/silk/decoder_set_fs.c b/thirdparty/opus/silk/decoder_set_fs.c
deleted file mode 100644
index eef0fd25e1..0000000000
--- a/thirdparty/opus/silk/decoder_set_fs.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Set decoder sampling rate */
-opus_int silk_decoder_set_fs(
- silk_decoder_state *psDec, /* I/O Decoder state pointer */
- opus_int fs_kHz, /* I Sampling frequency (kHz) */
- opus_int32 fs_API_Hz /* I API Sampling frequency (Hz) */
-)
-{
- opus_int frame_length, ret = 0;
-
- silk_assert( fs_kHz == 8 || fs_kHz == 12 || fs_kHz == 16 );
- silk_assert( psDec->nb_subfr == MAX_NB_SUBFR || psDec->nb_subfr == MAX_NB_SUBFR/2 );
-
- /* New (sub)frame length */
- psDec->subfr_length = silk_SMULBB( SUB_FRAME_LENGTH_MS, fs_kHz );
- frame_length = silk_SMULBB( psDec->nb_subfr, psDec->subfr_length );
-
- /* Initialize resampler when switching internal or external sampling frequency */
- if( psDec->fs_kHz != fs_kHz || psDec->fs_API_hz != fs_API_Hz ) {
- /* Initialize the resampler for dec_API.c preparing resampling from fs_kHz to API_fs_Hz */
- ret += silk_resampler_init( &psDec->resampler_state, silk_SMULBB( fs_kHz, 1000 ), fs_API_Hz, 0 );
-
- psDec->fs_API_hz = fs_API_Hz;
- }
-
- if( psDec->fs_kHz != fs_kHz || frame_length != psDec->frame_length ) {
- if( fs_kHz == 8 ) {
- if( psDec->nb_subfr == MAX_NB_SUBFR ) {
- psDec->pitch_contour_iCDF = silk_pitch_contour_NB_iCDF;
- } else {
- psDec->pitch_contour_iCDF = silk_pitch_contour_10_ms_NB_iCDF;
- }
- } else {
- if( psDec->nb_subfr == MAX_NB_SUBFR ) {
- psDec->pitch_contour_iCDF = silk_pitch_contour_iCDF;
- } else {
- psDec->pitch_contour_iCDF = silk_pitch_contour_10_ms_iCDF;
- }
- }
- if( psDec->fs_kHz != fs_kHz ) {
- psDec->ltp_mem_length = silk_SMULBB( LTP_MEM_LENGTH_MS, fs_kHz );
- if( fs_kHz == 8 || fs_kHz == 12 ) {
- psDec->LPC_order = MIN_LPC_ORDER;
- psDec->psNLSF_CB = &silk_NLSF_CB_NB_MB;
- } else {
- psDec->LPC_order = MAX_LPC_ORDER;
- psDec->psNLSF_CB = &silk_NLSF_CB_WB;
- }
- if( fs_kHz == 16 ) {
- psDec->pitch_lag_low_bits_iCDF = silk_uniform8_iCDF;
- } else if( fs_kHz == 12 ) {
- psDec->pitch_lag_low_bits_iCDF = silk_uniform6_iCDF;
- } else if( fs_kHz == 8 ) {
- psDec->pitch_lag_low_bits_iCDF = silk_uniform4_iCDF;
- } else {
- /* unsupported sampling rate */
- silk_assert( 0 );
- }
- psDec->first_frame_after_reset = 1;
- psDec->lagPrev = 100;
- psDec->LastGainIndex = 10;
- psDec->prevSignalType = TYPE_NO_VOICE_ACTIVITY;
- silk_memset( psDec->outBuf, 0, sizeof(psDec->outBuf));
- silk_memset( psDec->sLPC_Q14_buf, 0, sizeof(psDec->sLPC_Q14_buf) );
- }
-
- psDec->fs_kHz = fs_kHz;
- psDec->frame_length = frame_length;
- }
-
- /* Check that settings are valid */
- silk_assert( psDec->frame_length > 0 && psDec->frame_length <= MAX_FRAME_LENGTH );
-
- return ret;
-}
-
diff --git a/thirdparty/opus/silk/define.h b/thirdparty/opus/silk/define.h
deleted file mode 100644
index 19c9b00e25..0000000000
--- a/thirdparty/opus/silk/define.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_DEFINE_H
-#define SILK_DEFINE_H
-
-#include "errors.h"
-#include "typedef.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Max number of encoder channels (1/2) */
-#define ENCODER_NUM_CHANNELS 2
-/* Number of decoder channels (1/2) */
-#define DECODER_NUM_CHANNELS 2
-
-#define MAX_FRAMES_PER_PACKET 3
-
-/* Limits on bitrate */
-#define MIN_TARGET_RATE_BPS 5000
-#define MAX_TARGET_RATE_BPS 80000
-#define TARGET_RATE_TAB_SZ 8
-
-/* LBRR thresholds */
-#define LBRR_NB_MIN_RATE_BPS 12000
-#define LBRR_MB_MIN_RATE_BPS 14000
-#define LBRR_WB_MIN_RATE_BPS 16000
-
-/* DTX settings */
-#define NB_SPEECH_FRAMES_BEFORE_DTX 10 /* eq 200 ms */
-#define MAX_CONSECUTIVE_DTX 20 /* eq 400 ms */
-
-/* Maximum sampling frequency */
-#define MAX_FS_KHZ 16
-#define MAX_API_FS_KHZ 48
-
-/* Signal types */
-#define TYPE_NO_VOICE_ACTIVITY 0
-#define TYPE_UNVOICED 1
-#define TYPE_VOICED 2
-
-/* Conditional coding types */
-#define CODE_INDEPENDENTLY 0
-#define CODE_INDEPENDENTLY_NO_LTP_SCALING 1
-#define CODE_CONDITIONALLY 2
-
-/* Settings for stereo processing */
-#define STEREO_QUANT_TAB_SIZE 16
-#define STEREO_QUANT_SUB_STEPS 5
-#define STEREO_INTERP_LEN_MS 8 /* must be even */
-#define STEREO_RATIO_SMOOTH_COEF 0.01 /* smoothing coef for signal norms and stereo width */
-
-/* Range of pitch lag estimates */
-#define PITCH_EST_MIN_LAG_MS 2 /* 2 ms -> 500 Hz */
-#define PITCH_EST_MAX_LAG_MS 18 /* 18 ms -> 56 Hz */
-
-/* Maximum number of subframes */
-#define MAX_NB_SUBFR 4
-
-/* Number of samples per frame */
-#define LTP_MEM_LENGTH_MS 20
-#define SUB_FRAME_LENGTH_MS 5
-#define MAX_SUB_FRAME_LENGTH ( SUB_FRAME_LENGTH_MS * MAX_FS_KHZ )
-#define MAX_FRAME_LENGTH_MS ( SUB_FRAME_LENGTH_MS * MAX_NB_SUBFR )
-#define MAX_FRAME_LENGTH ( MAX_FRAME_LENGTH_MS * MAX_FS_KHZ )
-
-/* Milliseconds of lookahead for pitch analysis */
-#define LA_PITCH_MS 2
-#define LA_PITCH_MAX ( LA_PITCH_MS * MAX_FS_KHZ )
-
-/* Order of LPC used in find pitch */
-#define MAX_FIND_PITCH_LPC_ORDER 16
-
-/* Length of LPC window used in find pitch */
-#define FIND_PITCH_LPC_WIN_MS ( 20 + (LA_PITCH_MS << 1) )
-#define FIND_PITCH_LPC_WIN_MS_2_SF ( 10 + (LA_PITCH_MS << 1) )
-#define FIND_PITCH_LPC_WIN_MAX ( FIND_PITCH_LPC_WIN_MS * MAX_FS_KHZ )
-
-/* Milliseconds of lookahead for noise shape analysis */
-#define LA_SHAPE_MS 5
-#define LA_SHAPE_MAX ( LA_SHAPE_MS * MAX_FS_KHZ )
-
-/* Maximum length of LPC window used in noise shape analysis */
-#define SHAPE_LPC_WIN_MAX ( 15 * MAX_FS_KHZ )
-
-/* dB level of lowest gain quantization level */
-#define MIN_QGAIN_DB 2
-/* dB level of highest gain quantization level */
-#define MAX_QGAIN_DB 88
-/* Number of gain quantization levels */
-#define N_LEVELS_QGAIN 64
-/* Max increase in gain quantization index */
-#define MAX_DELTA_GAIN_QUANT 36
-/* Max decrease in gain quantization index */
-#define MIN_DELTA_GAIN_QUANT -4
-
-/* Quantization offsets (multiples of 4) */
-#define OFFSET_VL_Q10 32
-#define OFFSET_VH_Q10 100
-#define OFFSET_UVL_Q10 100
-#define OFFSET_UVH_Q10 240
-
-#define QUANT_LEVEL_ADJUST_Q10 80
-
-/* Maximum numbers of iterations used to stabilize an LPC vector */
-#define MAX_LPC_STABILIZE_ITERATIONS 16
-#define MAX_PREDICTION_POWER_GAIN 1e4f
-#define MAX_PREDICTION_POWER_GAIN_AFTER_RESET 1e2f
-
-#define MAX_LPC_ORDER 16
-#define MIN_LPC_ORDER 10
-
-/* Find Pred Coef defines */
-#define LTP_ORDER 5
-
-/* LTP quantization settings */
-#define NB_LTP_CBKS 3
-
-/* Flag to use harmonic noise shaping */
-#define USE_HARM_SHAPING 1
-
-/* Max LPC order of noise shaping filters */
-#define MAX_SHAPE_LPC_ORDER 16
-
-#define HARM_SHAPE_FIR_TAPS 3
-
-/* Maximum number of delayed decision states */
-#define MAX_DEL_DEC_STATES 4
-
-#define LTP_BUF_LENGTH 512
-#define LTP_MASK ( LTP_BUF_LENGTH - 1 )
-
-#define DECISION_DELAY 32
-#define DECISION_DELAY_MASK ( DECISION_DELAY - 1 )
-
-/* Number of subframes for excitation entropy coding */
-#define SHELL_CODEC_FRAME_LENGTH 16
-#define LOG2_SHELL_CODEC_FRAME_LENGTH 4
-#define MAX_NB_SHELL_BLOCKS ( MAX_FRAME_LENGTH / SHELL_CODEC_FRAME_LENGTH )
-
-/* Number of rate levels, for entropy coding of excitation */
-#define N_RATE_LEVELS 10
-
-/* Maximum sum of pulses per shell coding frame */
-#define SILK_MAX_PULSES 16
-
-#define MAX_MATRIX_SIZE MAX_LPC_ORDER /* Max of LPC Order and LTP order */
-
-#if( MAX_LPC_ORDER > DECISION_DELAY )
-# define NSQ_LPC_BUF_LENGTH MAX_LPC_ORDER
-#else
-# define NSQ_LPC_BUF_LENGTH DECISION_DELAY
-#endif
-
-/***************************/
-/* Voice activity detector */
-/***************************/
-#define VAD_N_BANDS 4
-
-#define VAD_INTERNAL_SUBFRAMES_LOG2 2
-#define VAD_INTERNAL_SUBFRAMES ( 1 << VAD_INTERNAL_SUBFRAMES_LOG2 )
-
-#define VAD_NOISE_LEVEL_SMOOTH_COEF_Q16 1024 /* Must be < 4096 */
-#define VAD_NOISE_LEVELS_BIAS 50
-
-/* Sigmoid settings */
-#define VAD_NEGATIVE_OFFSET_Q5 128 /* sigmoid is 0 at -128 */
-#define VAD_SNR_FACTOR_Q16 45000
-
-/* smoothing for SNR measurement */
-#define VAD_SNR_SMOOTH_COEF_Q18 4096
-
-/* Size of the piecewise linear cosine approximation table for the LSFs */
-#define LSF_COS_TAB_SZ_FIX 128
-
-/******************/
-/* NLSF quantizer */
-/******************/
-#define NLSF_W_Q 2
-#define NLSF_VQ_MAX_VECTORS 32
-#define NLSF_VQ_MAX_SURVIVORS 32
-#define NLSF_QUANT_MAX_AMPLITUDE 4
-#define NLSF_QUANT_MAX_AMPLITUDE_EXT 10
-#define NLSF_QUANT_LEVEL_ADJ 0.1
-#define NLSF_QUANT_DEL_DEC_STATES_LOG2 2
-#define NLSF_QUANT_DEL_DEC_STATES ( 1 << NLSF_QUANT_DEL_DEC_STATES_LOG2 )
-
-/* Transition filtering for mode switching */
-#define TRANSITION_TIME_MS 5120 /* 5120 = 64 * FRAME_LENGTH_MS * ( TRANSITION_INT_NUM - 1 ) = 64*(20*4)*/
-#define TRANSITION_NB 3 /* Hardcoded in tables */
-#define TRANSITION_NA 2 /* Hardcoded in tables */
-#define TRANSITION_INT_NUM 5 /* Hardcoded in tables */
-#define TRANSITION_FRAMES ( TRANSITION_TIME_MS / MAX_FRAME_LENGTH_MS )
-#define TRANSITION_INT_STEPS ( TRANSITION_FRAMES / ( TRANSITION_INT_NUM - 1 ) )
-
-/* BWE factors to apply after packet loss */
-#define BWE_AFTER_LOSS_Q16 63570
-
-/* Defines for CN generation */
-#define CNG_BUF_MASK_MAX 255 /* 2^floor(log2(MAX_FRAME_LENGTH))-1 */
-#define CNG_GAIN_SMTH_Q16 4634 /* 0.25^(1/4) */
-#define CNG_NLSF_SMTH_Q16 16348 /* 0.25 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/enc_API.c b/thirdparty/opus/silk/enc_API.c
deleted file mode 100644
index f8060286db..0000000000
--- a/thirdparty/opus/silk/enc_API.c
+++ /dev/null
@@ -1,563 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "define.h"
-#include "API.h"
-#include "control.h"
-#include "typedef.h"
-#include "stack_alloc.h"
-#include "structs.h"
-#include "tuning_parameters.h"
-#ifdef FIXED_POINT
-#include "main_FIX.h"
-#else
-#include "main_FLP.h"
-#endif
-
-/***************************************/
-/* Read control structure from encoder */
-/***************************************/
-static opus_int silk_QueryEncoder( /* O Returns error code */
- const void *encState, /* I State */
- silk_EncControlStruct *encStatus /* O Encoder Status */
-);
-
-/****************************************/
-/* Encoder functions */
-/****************************************/
-
-opus_int silk_Get_Encoder_Size( /* O Returns error code */
- opus_int *encSizeBytes /* O Number of bytes in SILK encoder state */
-)
-{
- opus_int ret = SILK_NO_ERROR;
-
- *encSizeBytes = sizeof( silk_encoder );
-
- return ret;
-}
-
-/*************************/
-/* Init or Reset encoder */
-/*************************/
-opus_int silk_InitEncoder( /* O Returns error code */
- void *encState, /* I/O State */
- int arch, /* I Run-time architecture */
- silk_EncControlStruct *encStatus /* O Encoder Status */
-)
-{
- silk_encoder *psEnc;
- opus_int n, ret = SILK_NO_ERROR;
-
- psEnc = (silk_encoder *)encState;
-
- /* Reset encoder */
- silk_memset( psEnc, 0, sizeof( silk_encoder ) );
- for( n = 0; n < ENCODER_NUM_CHANNELS; n++ ) {
- if( ret += silk_init_encoder( &psEnc->state_Fxx[ n ], arch ) ) {
- silk_assert( 0 );
- }
- }
-
- psEnc->nChannelsAPI = 1;
- psEnc->nChannelsInternal = 1;
-
- /* Read control structure */
- if( ret += silk_QueryEncoder( encState, encStatus ) ) {
- silk_assert( 0 );
- }
-
- return ret;
-}
-
-/***************************************/
-/* Read control structure from encoder */
-/***************************************/
-static opus_int silk_QueryEncoder( /* O Returns error code */
- const void *encState, /* I State */
- silk_EncControlStruct *encStatus /* O Encoder Status */
-)
-{
- opus_int ret = SILK_NO_ERROR;
- silk_encoder_state_Fxx *state_Fxx;
- silk_encoder *psEnc = (silk_encoder *)encState;
-
- state_Fxx = psEnc->state_Fxx;
-
- encStatus->nChannelsAPI = psEnc->nChannelsAPI;
- encStatus->nChannelsInternal = psEnc->nChannelsInternal;
- encStatus->API_sampleRate = state_Fxx[ 0 ].sCmn.API_fs_Hz;
- encStatus->maxInternalSampleRate = state_Fxx[ 0 ].sCmn.maxInternal_fs_Hz;
- encStatus->minInternalSampleRate = state_Fxx[ 0 ].sCmn.minInternal_fs_Hz;
- encStatus->desiredInternalSampleRate = state_Fxx[ 0 ].sCmn.desiredInternal_fs_Hz;
- encStatus->payloadSize_ms = state_Fxx[ 0 ].sCmn.PacketSize_ms;
- encStatus->bitRate = state_Fxx[ 0 ].sCmn.TargetRate_bps;
- encStatus->packetLossPercentage = state_Fxx[ 0 ].sCmn.PacketLoss_perc;
- encStatus->complexity = state_Fxx[ 0 ].sCmn.Complexity;
- encStatus->useInBandFEC = state_Fxx[ 0 ].sCmn.useInBandFEC;
- encStatus->useDTX = state_Fxx[ 0 ].sCmn.useDTX;
- encStatus->useCBR = state_Fxx[ 0 ].sCmn.useCBR;
- encStatus->internalSampleRate = silk_SMULBB( state_Fxx[ 0 ].sCmn.fs_kHz, 1000 );
- encStatus->allowBandwidthSwitch = state_Fxx[ 0 ].sCmn.allow_bandwidth_switch;
- encStatus->inWBmodeWithoutVariableLP = state_Fxx[ 0 ].sCmn.fs_kHz == 16 && state_Fxx[ 0 ].sCmn.sLP.mode == 0;
-
- return ret;
-}
-
-
-/**************************/
-/* Encode frame with Silk */
-/**************************/
-/* Note: if prefillFlag is set, the input must contain 10 ms of audio, irrespective of what */
-/* encControl->payloadSize_ms is set to */
-opus_int silk_Encode( /* O Returns error code */
- void *encState, /* I/O State */
- silk_EncControlStruct *encControl, /* I Control status */
- const opus_int16 *samplesIn, /* I Speech sample input vector */
- opus_int nSamplesIn, /* I Number of samples in input vector */
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- opus_int32 *nBytesOut, /* I/O Number of bytes in payload (input: Max bytes) */
- const opus_int prefillFlag /* I Flag to indicate prefilling buffers no coding */
-)
-{
- opus_int n, i, nBits, flags, tmp_payloadSize_ms = 0, tmp_complexity = 0, ret = 0;
- opus_int nSamplesToBuffer, nSamplesToBufferMax, nBlocksOf10ms;
- opus_int nSamplesFromInput = 0, nSamplesFromInputMax;
- opus_int speech_act_thr_for_switch_Q8;
- opus_int32 TargetRate_bps, MStargetRates_bps[ 2 ], channelRate_bps, LBRR_symbol, sum;
- silk_encoder *psEnc = ( silk_encoder * )encState;
- VARDECL( opus_int16, buf );
- opus_int transition, curr_block, tot_blocks;
- SAVE_STACK;
-
- if (encControl->reducedDependency)
- {
- psEnc->state_Fxx[0].sCmn.first_frame_after_reset = 1;
- psEnc->state_Fxx[1].sCmn.first_frame_after_reset = 1;
- }
- psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded = psEnc->state_Fxx[ 1 ].sCmn.nFramesEncoded = 0;
-
- /* Check values in encoder control structure */
- if( ( ret = check_control_input( encControl ) ) != 0 ) {
- silk_assert( 0 );
- RESTORE_STACK;
- return ret;
- }
-
- encControl->switchReady = 0;
-
- if( encControl->nChannelsInternal > psEnc->nChannelsInternal ) {
- /* Mono -> Stereo transition: init state of second channel and stereo state */
- ret += silk_init_encoder( &psEnc->state_Fxx[ 1 ], psEnc->state_Fxx[ 0 ].sCmn.arch );
- silk_memset( psEnc->sStereo.pred_prev_Q13, 0, sizeof( psEnc->sStereo.pred_prev_Q13 ) );
- silk_memset( psEnc->sStereo.sSide, 0, sizeof( psEnc->sStereo.sSide ) );
- psEnc->sStereo.mid_side_amp_Q0[ 0 ] = 0;
- psEnc->sStereo.mid_side_amp_Q0[ 1 ] = 1;
- psEnc->sStereo.mid_side_amp_Q0[ 2 ] = 0;
- psEnc->sStereo.mid_side_amp_Q0[ 3 ] = 1;
- psEnc->sStereo.width_prev_Q14 = 0;
- psEnc->sStereo.smth_width_Q14 = SILK_FIX_CONST( 1, 14 );
- if( psEnc->nChannelsAPI == 2 ) {
- silk_memcpy( &psEnc->state_Fxx[ 1 ].sCmn.resampler_state, &psEnc->state_Fxx[ 0 ].sCmn.resampler_state, sizeof( silk_resampler_state_struct ) );
- silk_memcpy( &psEnc->state_Fxx[ 1 ].sCmn.In_HP_State, &psEnc->state_Fxx[ 0 ].sCmn.In_HP_State, sizeof( psEnc->state_Fxx[ 1 ].sCmn.In_HP_State ) );
- }
- }
-
- transition = (encControl->payloadSize_ms != psEnc->state_Fxx[ 0 ].sCmn.PacketSize_ms) || (psEnc->nChannelsInternal != encControl->nChannelsInternal);
-
- psEnc->nChannelsAPI = encControl->nChannelsAPI;
- psEnc->nChannelsInternal = encControl->nChannelsInternal;
-
- nBlocksOf10ms = silk_DIV32( 100 * nSamplesIn, encControl->API_sampleRate );
- tot_blocks = ( nBlocksOf10ms > 1 ) ? nBlocksOf10ms >> 1 : 1;
- curr_block = 0;
- if( prefillFlag ) {
- /* Only accept input length of 10 ms */
- if( nBlocksOf10ms != 1 ) {
- silk_assert( 0 );
- RESTORE_STACK;
- return SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES;
- }
- /* Reset Encoder */
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- ret = silk_init_encoder( &psEnc->state_Fxx[ n ], psEnc->state_Fxx[ n ].sCmn.arch );
- silk_assert( !ret );
- }
- tmp_payloadSize_ms = encControl->payloadSize_ms;
- encControl->payloadSize_ms = 10;
- tmp_complexity = encControl->complexity;
- encControl->complexity = 0;
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- psEnc->state_Fxx[ n ].sCmn.controlled_since_last_payload = 0;
- psEnc->state_Fxx[ n ].sCmn.prefillFlag = 1;
- }
- } else {
- /* Only accept input lengths that are a multiple of 10 ms */
- if( nBlocksOf10ms * encControl->API_sampleRate != 100 * nSamplesIn || nSamplesIn < 0 ) {
- silk_assert( 0 );
- RESTORE_STACK;
- return SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES;
- }
- /* Make sure no more than one packet can be produced */
- if( 1000 * (opus_int32)nSamplesIn > encControl->payloadSize_ms * encControl->API_sampleRate ) {
- silk_assert( 0 );
- RESTORE_STACK;
- return SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES;
- }
- }
-
- TargetRate_bps = silk_RSHIFT32( encControl->bitRate, encControl->nChannelsInternal - 1 );
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- /* Force the side channel to the same rate as the mid */
- opus_int force_fs_kHz = (n==1) ? psEnc->state_Fxx[0].sCmn.fs_kHz : 0;
- if( ( ret = silk_control_encoder( &psEnc->state_Fxx[ n ], encControl, TargetRate_bps, psEnc->allowBandwidthSwitch, n, force_fs_kHz ) ) != 0 ) {
- silk_assert( 0 );
- RESTORE_STACK;
- return ret;
- }
- if( psEnc->state_Fxx[n].sCmn.first_frame_after_reset || transition ) {
- for( i = 0; i < psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket; i++ ) {
- psEnc->state_Fxx[ n ].sCmn.LBRR_flags[ i ] = 0;
- }
- }
- psEnc->state_Fxx[ n ].sCmn.inDTX = psEnc->state_Fxx[ n ].sCmn.useDTX;
- }
- silk_assert( encControl->nChannelsInternal == 1 || psEnc->state_Fxx[ 0 ].sCmn.fs_kHz == psEnc->state_Fxx[ 1 ].sCmn.fs_kHz );
-
- /* Input buffering/resampling and encoding */
- nSamplesToBufferMax =
- 10 * nBlocksOf10ms * psEnc->state_Fxx[ 0 ].sCmn.fs_kHz;
- nSamplesFromInputMax =
- silk_DIV32_16( nSamplesToBufferMax *
- psEnc->state_Fxx[ 0 ].sCmn.API_fs_Hz,
- psEnc->state_Fxx[ 0 ].sCmn.fs_kHz * 1000 );
- ALLOC( buf, nSamplesFromInputMax, opus_int16 );
- while( 1 ) {
- nSamplesToBuffer = psEnc->state_Fxx[ 0 ].sCmn.frame_length - psEnc->state_Fxx[ 0 ].sCmn.inputBufIx;
- nSamplesToBuffer = silk_min( nSamplesToBuffer, nSamplesToBufferMax );
- nSamplesFromInput = silk_DIV32_16( nSamplesToBuffer * psEnc->state_Fxx[ 0 ].sCmn.API_fs_Hz, psEnc->state_Fxx[ 0 ].sCmn.fs_kHz * 1000 );
- /* Resample and write to buffer */
- if( encControl->nChannelsAPI == 2 && encControl->nChannelsInternal == 2 ) {
- opus_int id = psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded;
- for( n = 0; n < nSamplesFromInput; n++ ) {
- buf[ n ] = samplesIn[ 2 * n ];
- }
- /* Making sure to start both resamplers from the same state when switching from mono to stereo */
- if( psEnc->nPrevChannelsInternal == 1 && id==0 ) {
- silk_memcpy( &psEnc->state_Fxx[ 1 ].sCmn.resampler_state, &psEnc->state_Fxx[ 0 ].sCmn.resampler_state, sizeof(psEnc->state_Fxx[ 1 ].sCmn.resampler_state));
- }
-
- ret += silk_resampler( &psEnc->state_Fxx[ 0 ].sCmn.resampler_state,
- &psEnc->state_Fxx[ 0 ].sCmn.inputBuf[ psEnc->state_Fxx[ 0 ].sCmn.inputBufIx + 2 ], buf, nSamplesFromInput );
- psEnc->state_Fxx[ 0 ].sCmn.inputBufIx += nSamplesToBuffer;
-
- nSamplesToBuffer = psEnc->state_Fxx[ 1 ].sCmn.frame_length - psEnc->state_Fxx[ 1 ].sCmn.inputBufIx;
- nSamplesToBuffer = silk_min( nSamplesToBuffer, 10 * nBlocksOf10ms * psEnc->state_Fxx[ 1 ].sCmn.fs_kHz );
- for( n = 0; n < nSamplesFromInput; n++ ) {
- buf[ n ] = samplesIn[ 2 * n + 1 ];
- }
- ret += silk_resampler( &psEnc->state_Fxx[ 1 ].sCmn.resampler_state,
- &psEnc->state_Fxx[ 1 ].sCmn.inputBuf[ psEnc->state_Fxx[ 1 ].sCmn.inputBufIx + 2 ], buf, nSamplesFromInput );
-
- psEnc->state_Fxx[ 1 ].sCmn.inputBufIx += nSamplesToBuffer;
- } else if( encControl->nChannelsAPI == 2 && encControl->nChannelsInternal == 1 ) {
- /* Combine left and right channels before resampling */
- for( n = 0; n < nSamplesFromInput; n++ ) {
- sum = samplesIn[ 2 * n ] + samplesIn[ 2 * n + 1 ];
- buf[ n ] = (opus_int16)silk_RSHIFT_ROUND( sum, 1 );
- }
- ret += silk_resampler( &psEnc->state_Fxx[ 0 ].sCmn.resampler_state,
- &psEnc->state_Fxx[ 0 ].sCmn.inputBuf[ psEnc->state_Fxx[ 0 ].sCmn.inputBufIx + 2 ], buf, nSamplesFromInput );
- /* On the first mono frame, average the results for the two resampler states */
- if( psEnc->nPrevChannelsInternal == 2 && psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded == 0 ) {
- ret += silk_resampler( &psEnc->state_Fxx[ 1 ].sCmn.resampler_state,
- &psEnc->state_Fxx[ 1 ].sCmn.inputBuf[ psEnc->state_Fxx[ 1 ].sCmn.inputBufIx + 2 ], buf, nSamplesFromInput );
- for( n = 0; n < psEnc->state_Fxx[ 0 ].sCmn.frame_length; n++ ) {
- psEnc->state_Fxx[ 0 ].sCmn.inputBuf[ psEnc->state_Fxx[ 0 ].sCmn.inputBufIx+n+2 ] =
- silk_RSHIFT(psEnc->state_Fxx[ 0 ].sCmn.inputBuf[ psEnc->state_Fxx[ 0 ].sCmn.inputBufIx+n+2 ]
- + psEnc->state_Fxx[ 1 ].sCmn.inputBuf[ psEnc->state_Fxx[ 1 ].sCmn.inputBufIx+n+2 ], 1);
- }
- }
- psEnc->state_Fxx[ 0 ].sCmn.inputBufIx += nSamplesToBuffer;
- } else {
- silk_assert( encControl->nChannelsAPI == 1 && encControl->nChannelsInternal == 1 );
- silk_memcpy(buf, samplesIn, nSamplesFromInput*sizeof(opus_int16));
- ret += silk_resampler( &psEnc->state_Fxx[ 0 ].sCmn.resampler_state,
- &psEnc->state_Fxx[ 0 ].sCmn.inputBuf[ psEnc->state_Fxx[ 0 ].sCmn.inputBufIx + 2 ], buf, nSamplesFromInput );
- psEnc->state_Fxx[ 0 ].sCmn.inputBufIx += nSamplesToBuffer;
- }
-
- samplesIn += nSamplesFromInput * encControl->nChannelsAPI;
- nSamplesIn -= nSamplesFromInput;
-
- /* Default */
- psEnc->allowBandwidthSwitch = 0;
-
- /* Silk encoder */
- if( psEnc->state_Fxx[ 0 ].sCmn.inputBufIx >= psEnc->state_Fxx[ 0 ].sCmn.frame_length ) {
- /* Enough data in input buffer, so encode */
- silk_assert( psEnc->state_Fxx[ 0 ].sCmn.inputBufIx == psEnc->state_Fxx[ 0 ].sCmn.frame_length );
- silk_assert( encControl->nChannelsInternal == 1 || psEnc->state_Fxx[ 1 ].sCmn.inputBufIx == psEnc->state_Fxx[ 1 ].sCmn.frame_length );
-
- /* Deal with LBRR data */
- if( psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded == 0 && !prefillFlag ) {
- /* Create space at start of payload for VAD and FEC flags */
- opus_uint8 iCDF[ 2 ] = { 0, 0 };
- iCDF[ 0 ] = 256 - silk_RSHIFT( 256, ( psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket + 1 ) * encControl->nChannelsInternal );
- ec_enc_icdf( psRangeEnc, 0, iCDF, 8 );
-
- /* Encode any LBRR data from previous packet */
- /* Encode LBRR flags */
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- LBRR_symbol = 0;
- for( i = 0; i < psEnc->state_Fxx[ n ].sCmn.nFramesPerPacket; i++ ) {
- LBRR_symbol |= silk_LSHIFT( psEnc->state_Fxx[ n ].sCmn.LBRR_flags[ i ], i );
- }
- psEnc->state_Fxx[ n ].sCmn.LBRR_flag = LBRR_symbol > 0 ? 1 : 0;
- if( LBRR_symbol && psEnc->state_Fxx[ n ].sCmn.nFramesPerPacket > 1 ) {
- ec_enc_icdf( psRangeEnc, LBRR_symbol - 1, silk_LBRR_flags_iCDF_ptr[ psEnc->state_Fxx[ n ].sCmn.nFramesPerPacket - 2 ], 8 );
- }
- }
-
- /* Code LBRR indices and excitation signals */
- for( i = 0; i < psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket; i++ ) {
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- if( psEnc->state_Fxx[ n ].sCmn.LBRR_flags[ i ] ) {
- opus_int condCoding;
-
- if( encControl->nChannelsInternal == 2 && n == 0 ) {
- silk_stereo_encode_pred( psRangeEnc, psEnc->sStereo.predIx[ i ] );
- /* For LBRR data there's no need to code the mid-only flag if the side-channel LBRR flag is set */
- if( psEnc->state_Fxx[ 1 ].sCmn.LBRR_flags[ i ] == 0 ) {
- silk_stereo_encode_mid_only( psRangeEnc, psEnc->sStereo.mid_only_flags[ i ] );
- }
- }
- /* Use conditional coding if previous frame available */
- if( i > 0 && psEnc->state_Fxx[ n ].sCmn.LBRR_flags[ i - 1 ] ) {
- condCoding = CODE_CONDITIONALLY;
- } else {
- condCoding = CODE_INDEPENDENTLY;
- }
- silk_encode_indices( &psEnc->state_Fxx[ n ].sCmn, psRangeEnc, i, 1, condCoding );
- silk_encode_pulses( psRangeEnc, psEnc->state_Fxx[ n ].sCmn.indices_LBRR[i].signalType, psEnc->state_Fxx[ n ].sCmn.indices_LBRR[i].quantOffsetType,
- psEnc->state_Fxx[ n ].sCmn.pulses_LBRR[ i ], psEnc->state_Fxx[ n ].sCmn.frame_length );
- }
- }
- }
-
- /* Reset LBRR flags */
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- silk_memset( psEnc->state_Fxx[ n ].sCmn.LBRR_flags, 0, sizeof( psEnc->state_Fxx[ n ].sCmn.LBRR_flags ) );
- }
-
- psEnc->nBitsUsedLBRR = ec_tell( psRangeEnc );
- }
-
- silk_HP_variable_cutoff( psEnc->state_Fxx );
-
- /* Total target bits for packet */
- nBits = silk_DIV32_16( silk_MUL( encControl->bitRate, encControl->payloadSize_ms ), 1000 );
- /* Subtract bits used for LBRR */
- if( !prefillFlag ) {
- nBits -= psEnc->nBitsUsedLBRR;
- }
- /* Divide by number of uncoded frames left in packet */
- nBits = silk_DIV32_16( nBits, psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket );
- /* Convert to bits/second */
- if( encControl->payloadSize_ms == 10 ) {
- TargetRate_bps = silk_SMULBB( nBits, 100 );
- } else {
- TargetRate_bps = silk_SMULBB( nBits, 50 );
- }
- /* Subtract fraction of bits in excess of target in previous frames and packets */
- TargetRate_bps -= silk_DIV32_16( silk_MUL( psEnc->nBitsExceeded, 1000 ), BITRESERVOIR_DECAY_TIME_MS );
- if( !prefillFlag && psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded > 0 ) {
- /* Compare actual vs target bits so far in this packet */
- opus_int32 bitsBalance = ec_tell( psRangeEnc ) - psEnc->nBitsUsedLBRR - nBits * psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded;
- TargetRate_bps -= silk_DIV32_16( silk_MUL( bitsBalance, 1000 ), BITRESERVOIR_DECAY_TIME_MS );
- }
- /* Never exceed input bitrate */
- TargetRate_bps = silk_LIMIT( TargetRate_bps, encControl->bitRate, 5000 );
-
- /* Convert Left/Right to Mid/Side */
- if( encControl->nChannelsInternal == 2 ) {
- silk_stereo_LR_to_MS( &psEnc->sStereo, &psEnc->state_Fxx[ 0 ].sCmn.inputBuf[ 2 ], &psEnc->state_Fxx[ 1 ].sCmn.inputBuf[ 2 ],
- psEnc->sStereo.predIx[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ], &psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ],
- MStargetRates_bps, TargetRate_bps, psEnc->state_Fxx[ 0 ].sCmn.speech_activity_Q8, encControl->toMono,
- psEnc->state_Fxx[ 0 ].sCmn.fs_kHz, psEnc->state_Fxx[ 0 ].sCmn.frame_length );
- if( psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ] == 0 ) {
- /* Reset side channel encoder memory for first frame with side coding */
- if( psEnc->prev_decode_only_middle == 1 ) {
- silk_memset( &psEnc->state_Fxx[ 1 ].sShape, 0, sizeof( psEnc->state_Fxx[ 1 ].sShape ) );
- silk_memset( &psEnc->state_Fxx[ 1 ].sPrefilt, 0, sizeof( psEnc->state_Fxx[ 1 ].sPrefilt ) );
- silk_memset( &psEnc->state_Fxx[ 1 ].sCmn.sNSQ, 0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.sNSQ ) );
- silk_memset( psEnc->state_Fxx[ 1 ].sCmn.prev_NLSFq_Q15, 0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.prev_NLSFq_Q15 ) );
- silk_memset( &psEnc->state_Fxx[ 1 ].sCmn.sLP.In_LP_State, 0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.sLP.In_LP_State ) );
- psEnc->state_Fxx[ 1 ].sCmn.prevLag = 100;
- psEnc->state_Fxx[ 1 ].sCmn.sNSQ.lagPrev = 100;
- psEnc->state_Fxx[ 1 ].sShape.LastGainIndex = 10;
- psEnc->state_Fxx[ 1 ].sCmn.prevSignalType = TYPE_NO_VOICE_ACTIVITY;
- psEnc->state_Fxx[ 1 ].sCmn.sNSQ.prev_gain_Q16 = 65536;
- psEnc->state_Fxx[ 1 ].sCmn.first_frame_after_reset = 1;
- }
- silk_encode_do_VAD_Fxx( &psEnc->state_Fxx[ 1 ] );
- } else {
- psEnc->state_Fxx[ 1 ].sCmn.VAD_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ] = 0;
- }
- if( !prefillFlag ) {
- silk_stereo_encode_pred( psRangeEnc, psEnc->sStereo.predIx[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ] );
- if( psEnc->state_Fxx[ 1 ].sCmn.VAD_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ] == 0 ) {
- silk_stereo_encode_mid_only( psRangeEnc, psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ] );
- }
- }
- } else {
- /* Buffering */
- silk_memcpy( psEnc->state_Fxx[ 0 ].sCmn.inputBuf, psEnc->sStereo.sMid, 2 * sizeof( opus_int16 ) );
- silk_memcpy( psEnc->sStereo.sMid, &psEnc->state_Fxx[ 0 ].sCmn.inputBuf[ psEnc->state_Fxx[ 0 ].sCmn.frame_length ], 2 * sizeof( opus_int16 ) );
- }
- silk_encode_do_VAD_Fxx( &psEnc->state_Fxx[ 0 ] );
-
- /* Encode */
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- opus_int maxBits, useCBR;
-
- /* Handling rate constraints */
- maxBits = encControl->maxBits;
- if( tot_blocks == 2 && curr_block == 0 ) {
- maxBits = maxBits * 3 / 5;
- } else if( tot_blocks == 3 ) {
- if( curr_block == 0 ) {
- maxBits = maxBits * 2 / 5;
- } else if( curr_block == 1 ) {
- maxBits = maxBits * 3 / 4;
- }
- }
- useCBR = encControl->useCBR && curr_block == tot_blocks - 1;
-
- if( encControl->nChannelsInternal == 1 ) {
- channelRate_bps = TargetRate_bps;
- } else {
- channelRate_bps = MStargetRates_bps[ n ];
- if( n == 0 && MStargetRates_bps[ 1 ] > 0 ) {
- useCBR = 0;
- /* Give mid up to 1/2 of the max bits for that frame */
- maxBits -= encControl->maxBits / ( tot_blocks * 2 );
- }
- }
-
- if( channelRate_bps > 0 ) {
- opus_int condCoding;
-
- silk_control_SNR( &psEnc->state_Fxx[ n ].sCmn, channelRate_bps );
-
- /* Use independent coding if no previous frame available */
- if( psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded - n <= 0 ) {
- condCoding = CODE_INDEPENDENTLY;
- } else if( n > 0 && psEnc->prev_decode_only_middle ) {
- /* If we skipped a side frame in this packet, we don't
- need LTP scaling; the LTP state is well-defined. */
- condCoding = CODE_INDEPENDENTLY_NO_LTP_SCALING;
- } else {
- condCoding = CODE_CONDITIONALLY;
- }
- if( ( ret = silk_encode_frame_Fxx( &psEnc->state_Fxx[ n ], nBytesOut, psRangeEnc, condCoding, maxBits, useCBR ) ) != 0 ) {
- silk_assert( 0 );
- }
- }
- psEnc->state_Fxx[ n ].sCmn.controlled_since_last_payload = 0;
- psEnc->state_Fxx[ n ].sCmn.inputBufIx = 0;
- psEnc->state_Fxx[ n ].sCmn.nFramesEncoded++;
- }
- psEnc->prev_decode_only_middle = psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded - 1 ];
-
- /* Insert VAD and FEC flags at beginning of bitstream */
- if( *nBytesOut > 0 && psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded == psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket) {
- flags = 0;
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- for( i = 0; i < psEnc->state_Fxx[ n ].sCmn.nFramesPerPacket; i++ ) {
- flags = silk_LSHIFT( flags, 1 );
- flags |= psEnc->state_Fxx[ n ].sCmn.VAD_flags[ i ];
- }
- flags = silk_LSHIFT( flags, 1 );
- flags |= psEnc->state_Fxx[ n ].sCmn.LBRR_flag;
- }
- if( !prefillFlag ) {
- ec_enc_patch_initial_bits( psRangeEnc, flags, ( psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket + 1 ) * encControl->nChannelsInternal );
- }
-
- /* Return zero bytes if all channels DTXed */
- if( psEnc->state_Fxx[ 0 ].sCmn.inDTX && ( encControl->nChannelsInternal == 1 || psEnc->state_Fxx[ 1 ].sCmn.inDTX ) ) {
- *nBytesOut = 0;
- }
-
- psEnc->nBitsExceeded += *nBytesOut * 8;
- psEnc->nBitsExceeded -= silk_DIV32_16( silk_MUL( encControl->bitRate, encControl->payloadSize_ms ), 1000 );
- psEnc->nBitsExceeded = silk_LIMIT( psEnc->nBitsExceeded, 0, 10000 );
-
- /* Update flag indicating if bandwidth switching is allowed */
- speech_act_thr_for_switch_Q8 = silk_SMLAWB( SILK_FIX_CONST( SPEECH_ACTIVITY_DTX_THRES, 8 ),
- SILK_FIX_CONST( ( 1 - SPEECH_ACTIVITY_DTX_THRES ) / MAX_BANDWIDTH_SWITCH_DELAY_MS, 16 + 8 ), psEnc->timeSinceSwitchAllowed_ms );
- if( psEnc->state_Fxx[ 0 ].sCmn.speech_activity_Q8 < speech_act_thr_for_switch_Q8 ) {
- psEnc->allowBandwidthSwitch = 1;
- psEnc->timeSinceSwitchAllowed_ms = 0;
- } else {
- psEnc->allowBandwidthSwitch = 0;
- psEnc->timeSinceSwitchAllowed_ms += encControl->payloadSize_ms;
- }
- }
-
- if( nSamplesIn == 0 ) {
- break;
- }
- } else {
- break;
- }
- curr_block++;
- }
-
- psEnc->nPrevChannelsInternal = encControl->nChannelsInternal;
-
- encControl->allowBandwidthSwitch = psEnc->allowBandwidthSwitch;
- encControl->inWBmodeWithoutVariableLP = psEnc->state_Fxx[ 0 ].sCmn.fs_kHz == 16 && psEnc->state_Fxx[ 0 ].sCmn.sLP.mode == 0;
- encControl->internalSampleRate = silk_SMULBB( psEnc->state_Fxx[ 0 ].sCmn.fs_kHz, 1000 );
- encControl->stereoWidth_Q14 = encControl->toMono ? 0 : psEnc->sStereo.smth_width_Q14;
- if( prefillFlag ) {
- encControl->payloadSize_ms = tmp_payloadSize_ms;
- encControl->complexity = tmp_complexity;
- for( n = 0; n < encControl->nChannelsInternal; n++ ) {
- psEnc->state_Fxx[ n ].sCmn.controlled_since_last_payload = 0;
- psEnc->state_Fxx[ n ].sCmn.prefillFlag = 0;
- }
- }
-
- RESTORE_STACK;
- return ret;
-}
-
diff --git a/thirdparty/opus/silk/encode_indices.c b/thirdparty/opus/silk/encode_indices.c
deleted file mode 100644
index 666c8c0b13..0000000000
--- a/thirdparty/opus/silk/encode_indices.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Encode side-information parameters to payload */
-void silk_encode_indices(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- opus_int FrameIndex, /* I Frame number */
- opus_int encode_LBRR, /* I Flag indicating LBRR data is being encoded */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- opus_int i, k, typeOffset;
- opus_int encode_absolute_lagIndex, delta_lagIndex;
- opus_int16 ec_ix[ MAX_LPC_ORDER ];
- opus_uint8 pred_Q8[ MAX_LPC_ORDER ];
- const SideInfoIndices *psIndices;
-
- if( encode_LBRR ) {
- psIndices = &psEncC->indices_LBRR[ FrameIndex ];
- } else {
- psIndices = &psEncC->indices;
- }
-
- /*******************************************/
- /* Encode signal type and quantizer offset */
- /*******************************************/
- typeOffset = 2 * psIndices->signalType + psIndices->quantOffsetType;
- silk_assert( typeOffset >= 0 && typeOffset < 6 );
- silk_assert( encode_LBRR == 0 || typeOffset >= 2 );
- if( encode_LBRR || typeOffset >= 2 ) {
- ec_enc_icdf( psRangeEnc, typeOffset - 2, silk_type_offset_VAD_iCDF, 8 );
- } else {
- ec_enc_icdf( psRangeEnc, typeOffset, silk_type_offset_no_VAD_iCDF, 8 );
- }
-
- /****************/
- /* Encode gains */
- /****************/
- /* first subframe */
- if( condCoding == CODE_CONDITIONALLY ) {
- /* conditional coding */
- silk_assert( psIndices->GainsIndices[ 0 ] >= 0 && psIndices->GainsIndices[ 0 ] < MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 );
- ec_enc_icdf( psRangeEnc, psIndices->GainsIndices[ 0 ], silk_delta_gain_iCDF, 8 );
- } else {
- /* independent coding, in two stages: MSB bits followed by 3 LSBs */
- silk_assert( psIndices->GainsIndices[ 0 ] >= 0 && psIndices->GainsIndices[ 0 ] < N_LEVELS_QGAIN );
- ec_enc_icdf( psRangeEnc, silk_RSHIFT( psIndices->GainsIndices[ 0 ], 3 ), silk_gain_iCDF[ psIndices->signalType ], 8 );
- ec_enc_icdf( psRangeEnc, psIndices->GainsIndices[ 0 ] & 7, silk_uniform8_iCDF, 8 );
- }
-
- /* remaining subframes */
- for( i = 1; i < psEncC->nb_subfr; i++ ) {
- silk_assert( psIndices->GainsIndices[ i ] >= 0 && psIndices->GainsIndices[ i ] < MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 );
- ec_enc_icdf( psRangeEnc, psIndices->GainsIndices[ i ], silk_delta_gain_iCDF, 8 );
- }
-
- /****************/
- /* Encode NLSFs */
- /****************/
- ec_enc_icdf( psRangeEnc, psIndices->NLSFIndices[ 0 ], &psEncC->psNLSF_CB->CB1_iCDF[ ( psIndices->signalType >> 1 ) * psEncC->psNLSF_CB->nVectors ], 8 );
- silk_NLSF_unpack( ec_ix, pred_Q8, psEncC->psNLSF_CB, psIndices->NLSFIndices[ 0 ] );
- silk_assert( psEncC->psNLSF_CB->order == psEncC->predictLPCOrder );
- for( i = 0; i < psEncC->psNLSF_CB->order; i++ ) {
- if( psIndices->NLSFIndices[ i+1 ] >= NLSF_QUANT_MAX_AMPLITUDE ) {
- ec_enc_icdf( psRangeEnc, 2 * NLSF_QUANT_MAX_AMPLITUDE, &psEncC->psNLSF_CB->ec_iCDF[ ec_ix[ i ] ], 8 );
- ec_enc_icdf( psRangeEnc, psIndices->NLSFIndices[ i+1 ] - NLSF_QUANT_MAX_AMPLITUDE, silk_NLSF_EXT_iCDF, 8 );
- } else if( psIndices->NLSFIndices[ i+1 ] <= -NLSF_QUANT_MAX_AMPLITUDE ) {
- ec_enc_icdf( psRangeEnc, 0, &psEncC->psNLSF_CB->ec_iCDF[ ec_ix[ i ] ], 8 );
- ec_enc_icdf( psRangeEnc, -psIndices->NLSFIndices[ i+1 ] - NLSF_QUANT_MAX_AMPLITUDE, silk_NLSF_EXT_iCDF, 8 );
- } else {
- ec_enc_icdf( psRangeEnc, psIndices->NLSFIndices[ i+1 ] + NLSF_QUANT_MAX_AMPLITUDE, &psEncC->psNLSF_CB->ec_iCDF[ ec_ix[ i ] ], 8 );
- }
- }
-
- /* Encode NLSF interpolation factor */
- if( psEncC->nb_subfr == MAX_NB_SUBFR ) {
- silk_assert( psIndices->NLSFInterpCoef_Q2 >= 0 && psIndices->NLSFInterpCoef_Q2 < 5 );
- ec_enc_icdf( psRangeEnc, psIndices->NLSFInterpCoef_Q2, silk_NLSF_interpolation_factor_iCDF, 8 );
- }
-
- if( psIndices->signalType == TYPE_VOICED )
- {
- /*********************/
- /* Encode pitch lags */
- /*********************/
- /* lag index */
- encode_absolute_lagIndex = 1;
- if( condCoding == CODE_CONDITIONALLY && psEncC->ec_prevSignalType == TYPE_VOICED ) {
- /* Delta Encoding */
- delta_lagIndex = psIndices->lagIndex - psEncC->ec_prevLagIndex;
- if( delta_lagIndex < -8 || delta_lagIndex > 11 ) {
- delta_lagIndex = 0;
- } else {
- delta_lagIndex = delta_lagIndex + 9;
- encode_absolute_lagIndex = 0; /* Only use delta */
- }
- silk_assert( delta_lagIndex >= 0 && delta_lagIndex < 21 );
- ec_enc_icdf( psRangeEnc, delta_lagIndex, silk_pitch_delta_iCDF, 8 );
- }
- if( encode_absolute_lagIndex ) {
- /* Absolute encoding */
- opus_int32 pitch_high_bits, pitch_low_bits;
- pitch_high_bits = silk_DIV32_16( psIndices->lagIndex, silk_RSHIFT( psEncC->fs_kHz, 1 ) );
- pitch_low_bits = psIndices->lagIndex - silk_SMULBB( pitch_high_bits, silk_RSHIFT( psEncC->fs_kHz, 1 ) );
- silk_assert( pitch_low_bits < psEncC->fs_kHz / 2 );
- silk_assert( pitch_high_bits < 32 );
- ec_enc_icdf( psRangeEnc, pitch_high_bits, silk_pitch_lag_iCDF, 8 );
- ec_enc_icdf( psRangeEnc, pitch_low_bits, psEncC->pitch_lag_low_bits_iCDF, 8 );
- }
- psEncC->ec_prevLagIndex = psIndices->lagIndex;
-
- /* Countour index */
- silk_assert( psIndices->contourIndex >= 0 );
- silk_assert( ( psIndices->contourIndex < 34 && psEncC->fs_kHz > 8 && psEncC->nb_subfr == 4 ) ||
- ( psIndices->contourIndex < 11 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 4 ) ||
- ( psIndices->contourIndex < 12 && psEncC->fs_kHz > 8 && psEncC->nb_subfr == 2 ) ||
- ( psIndices->contourIndex < 3 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 2 ) );
- ec_enc_icdf( psRangeEnc, psIndices->contourIndex, psEncC->pitch_contour_iCDF, 8 );
-
- /********************/
- /* Encode LTP gains */
- /********************/
- /* PERIndex value */
- silk_assert( psIndices->PERIndex >= 0 && psIndices->PERIndex < 3 );
- ec_enc_icdf( psRangeEnc, psIndices->PERIndex, silk_LTP_per_index_iCDF, 8 );
-
- /* Codebook Indices */
- for( k = 0; k < psEncC->nb_subfr; k++ ) {
- silk_assert( psIndices->LTPIndex[ k ] >= 0 && psIndices->LTPIndex[ k ] < ( 8 << psIndices->PERIndex ) );
- ec_enc_icdf( psRangeEnc, psIndices->LTPIndex[ k ], silk_LTP_gain_iCDF_ptrs[ psIndices->PERIndex ], 8 );
- }
-
- /**********************/
- /* Encode LTP scaling */
- /**********************/
- if( condCoding == CODE_INDEPENDENTLY ) {
- silk_assert( psIndices->LTP_scaleIndex >= 0 && psIndices->LTP_scaleIndex < 3 );
- ec_enc_icdf( psRangeEnc, psIndices->LTP_scaleIndex, silk_LTPscale_iCDF, 8 );
- }
- silk_assert( !condCoding || psIndices->LTP_scaleIndex == 0 );
- }
-
- psEncC->ec_prevSignalType = psIndices->signalType;
-
- /***************/
- /* Encode seed */
- /***************/
- silk_assert( psIndices->Seed >= 0 && psIndices->Seed < 4 );
- ec_enc_icdf( psRangeEnc, psIndices->Seed, silk_uniform4_iCDF, 8 );
-}
diff --git a/thirdparty/opus/silk/encode_pulses.c b/thirdparty/opus/silk/encode_pulses.c
deleted file mode 100644
index ab00264f99..0000000000
--- a/thirdparty/opus/silk/encode_pulses.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-
-/*********************************************/
-/* Encode quantization indices of excitation */
-/*********************************************/
-
-static OPUS_INLINE opus_int combine_and_check( /* return ok */
- opus_int *pulses_comb, /* O */
- const opus_int *pulses_in, /* I */
- opus_int max_pulses, /* I max value for sum of pulses */
- opus_int len /* I number of output values */
-)
-{
- opus_int k, sum;
-
- for( k = 0; k < len; k++ ) {
- sum = pulses_in[ 2 * k ] + pulses_in[ 2 * k + 1 ];
- if( sum > max_pulses ) {
- return 1;
- }
- pulses_comb[ k ] = sum;
- }
-
- return 0;
-}
-
-/* Encode quantization indices of excitation */
-void silk_encode_pulses(
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- const opus_int signalType, /* I Signal type */
- const opus_int quantOffsetType, /* I quantOffsetType */
- opus_int8 pulses[], /* I quantization indices */
- const opus_int frame_length /* I Frame length */
-)
-{
- opus_int i, k, j, iter, bit, nLS, scale_down, RateLevelIndex = 0;
- opus_int32 abs_q, minSumBits_Q5, sumBits_Q5;
- VARDECL( opus_int, abs_pulses );
- VARDECL( opus_int, sum_pulses );
- VARDECL( opus_int, nRshifts );
- opus_int pulses_comb[ 8 ];
- opus_int *abs_pulses_ptr;
- const opus_int8 *pulses_ptr;
- const opus_uint8 *cdf_ptr;
- const opus_uint8 *nBits_ptr;
- SAVE_STACK;
-
- silk_memset( pulses_comb, 0, 8 * sizeof( opus_int ) ); /* Fixing Valgrind reported problem*/
-
- /****************************/
- /* Prepare for shell coding */
- /****************************/
- /* Calculate number of shell blocks */
- silk_assert( 1 << LOG2_SHELL_CODEC_FRAME_LENGTH == SHELL_CODEC_FRAME_LENGTH );
- iter = silk_RSHIFT( frame_length, LOG2_SHELL_CODEC_FRAME_LENGTH );
- if( iter * SHELL_CODEC_FRAME_LENGTH < frame_length ) {
- silk_assert( frame_length == 12 * 10 ); /* Make sure only happens for 10 ms @ 12 kHz */
- iter++;
- silk_memset( &pulses[ frame_length ], 0, SHELL_CODEC_FRAME_LENGTH * sizeof(opus_int8));
- }
-
- /* Take the absolute value of the pulses */
- ALLOC( abs_pulses, iter * SHELL_CODEC_FRAME_LENGTH, opus_int );
- silk_assert( !( SHELL_CODEC_FRAME_LENGTH & 3 ) );
- for( i = 0; i < iter * SHELL_CODEC_FRAME_LENGTH; i+=4 ) {
- abs_pulses[i+0] = ( opus_int )silk_abs( pulses[ i + 0 ] );
- abs_pulses[i+1] = ( opus_int )silk_abs( pulses[ i + 1 ] );
- abs_pulses[i+2] = ( opus_int )silk_abs( pulses[ i + 2 ] );
- abs_pulses[i+3] = ( opus_int )silk_abs( pulses[ i + 3 ] );
- }
-
- /* Calc sum pulses per shell code frame */
- ALLOC( sum_pulses, iter, opus_int );
- ALLOC( nRshifts, iter, opus_int );
- abs_pulses_ptr = abs_pulses;
- for( i = 0; i < iter; i++ ) {
- nRshifts[ i ] = 0;
-
- while( 1 ) {
- /* 1+1 -> 2 */
- scale_down = combine_and_check( pulses_comb, abs_pulses_ptr, silk_max_pulses_table[ 0 ], 8 );
- /* 2+2 -> 4 */
- scale_down += combine_and_check( pulses_comb, pulses_comb, silk_max_pulses_table[ 1 ], 4 );
- /* 4+4 -> 8 */
- scale_down += combine_and_check( pulses_comb, pulses_comb, silk_max_pulses_table[ 2 ], 2 );
- /* 8+8 -> 16 */
- scale_down += combine_and_check( &sum_pulses[ i ], pulses_comb, silk_max_pulses_table[ 3 ], 1 );
-
- if( scale_down ) {
- /* We need to downscale the quantization signal */
- nRshifts[ i ]++;
- for( k = 0; k < SHELL_CODEC_FRAME_LENGTH; k++ ) {
- abs_pulses_ptr[ k ] = silk_RSHIFT( abs_pulses_ptr[ k ], 1 );
- }
- } else {
- /* Jump out of while(1) loop and go to next shell coding frame */
- break;
- }
- }
- abs_pulses_ptr += SHELL_CODEC_FRAME_LENGTH;
- }
-
- /**************/
- /* Rate level */
- /**************/
- /* find rate level that leads to fewest bits for coding of pulses per block info */
- minSumBits_Q5 = silk_int32_MAX;
- for( k = 0; k < N_RATE_LEVELS - 1; k++ ) {
- nBits_ptr = silk_pulses_per_block_BITS_Q5[ k ];
- sumBits_Q5 = silk_rate_levels_BITS_Q5[ signalType >> 1 ][ k ];
- for( i = 0; i < iter; i++ ) {
- if( nRshifts[ i ] > 0 ) {
- sumBits_Q5 += nBits_ptr[ SILK_MAX_PULSES + 1 ];
- } else {
- sumBits_Q5 += nBits_ptr[ sum_pulses[ i ] ];
- }
- }
- if( sumBits_Q5 < minSumBits_Q5 ) {
- minSumBits_Q5 = sumBits_Q5;
- RateLevelIndex = k;
- }
- }
- ec_enc_icdf( psRangeEnc, RateLevelIndex, silk_rate_levels_iCDF[ signalType >> 1 ], 8 );
-
- /***************************************************/
- /* Sum-Weighted-Pulses Encoding */
- /***************************************************/
- cdf_ptr = silk_pulses_per_block_iCDF[ RateLevelIndex ];
- for( i = 0; i < iter; i++ ) {
- if( nRshifts[ i ] == 0 ) {
- ec_enc_icdf( psRangeEnc, sum_pulses[ i ], cdf_ptr, 8 );
- } else {
- ec_enc_icdf( psRangeEnc, SILK_MAX_PULSES + 1, cdf_ptr, 8 );
- for( k = 0; k < nRshifts[ i ] - 1; k++ ) {
- ec_enc_icdf( psRangeEnc, SILK_MAX_PULSES + 1, silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1 ], 8 );
- }
- ec_enc_icdf( psRangeEnc, sum_pulses[ i ], silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1 ], 8 );
- }
- }
-
- /******************/
- /* Shell Encoding */
- /******************/
- for( i = 0; i < iter; i++ ) {
- if( sum_pulses[ i ] > 0 ) {
- silk_shell_encoder( psRangeEnc, &abs_pulses[ i * SHELL_CODEC_FRAME_LENGTH ] );
- }
- }
-
- /****************/
- /* LSB Encoding */
- /****************/
- for( i = 0; i < iter; i++ ) {
- if( nRshifts[ i ] > 0 ) {
- pulses_ptr = &pulses[ i * SHELL_CODEC_FRAME_LENGTH ];
- nLS = nRshifts[ i ] - 1;
- for( k = 0; k < SHELL_CODEC_FRAME_LENGTH; k++ ) {
- abs_q = (opus_int8)silk_abs( pulses_ptr[ k ] );
- for( j = nLS; j > 0; j-- ) {
- bit = silk_RSHIFT( abs_q, j ) & 1;
- ec_enc_icdf( psRangeEnc, bit, silk_lsb_iCDF, 8 );
- }
- bit = abs_q & 1;
- ec_enc_icdf( psRangeEnc, bit, silk_lsb_iCDF, 8 );
- }
- }
- }
-
- /****************/
- /* Encode signs */
- /****************/
- silk_encode_signs( psRangeEnc, pulses, frame_length, signalType, quantOffsetType, sum_pulses );
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/errors.h b/thirdparty/opus/silk/errors.h
deleted file mode 100644
index 45070800f2..0000000000
--- a/thirdparty/opus/silk/errors.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_ERRORS_H
-#define SILK_ERRORS_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/******************/
-/* Error messages */
-/******************/
-#define SILK_NO_ERROR 0
-
-/**************************/
-/* Encoder error messages */
-/**************************/
-
-/* Input length is not a multiple of 10 ms, or length is longer than the packet length */
-#define SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES -101
-
-/* Sampling frequency not 8000, 12000 or 16000 Hertz */
-#define SILK_ENC_FS_NOT_SUPPORTED -102
-
-/* Packet size not 10, 20, 40, or 60 ms */
-#define SILK_ENC_PACKET_SIZE_NOT_SUPPORTED -103
-
-/* Allocated payload buffer too short */
-#define SILK_ENC_PAYLOAD_BUF_TOO_SHORT -104
-
-/* Loss rate not between 0 and 100 percent */
-#define SILK_ENC_INVALID_LOSS_RATE -105
-
-/* Complexity setting not valid, use 0...10 */
-#define SILK_ENC_INVALID_COMPLEXITY_SETTING -106
-
-/* Inband FEC setting not valid, use 0 or 1 */
-#define SILK_ENC_INVALID_INBAND_FEC_SETTING -107
-
-/* DTX setting not valid, use 0 or 1 */
-#define SILK_ENC_INVALID_DTX_SETTING -108
-
-/* CBR setting not valid, use 0 or 1 */
-#define SILK_ENC_INVALID_CBR_SETTING -109
-
-/* Internal encoder error */
-#define SILK_ENC_INTERNAL_ERROR -110
-
-/* Internal encoder error */
-#define SILK_ENC_INVALID_NUMBER_OF_CHANNELS_ERROR -111
-
-/**************************/
-/* Decoder error messages */
-/**************************/
-
-/* Output sampling frequency lower than internal decoded sampling frequency */
-#define SILK_DEC_INVALID_SAMPLING_FREQUENCY -200
-
-/* Payload size exceeded the maximum allowed 1024 bytes */
-#define SILK_DEC_PAYLOAD_TOO_LARGE -201
-
-/* Payload has bit errors */
-#define SILK_DEC_PAYLOAD_ERROR -202
-
-/* Payload has bit errors */
-#define SILK_DEC_INVALID_FRAME_SIZE -203
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/fixed/LTP_analysis_filter_FIX.c b/thirdparty/opus/silk/fixed/LTP_analysis_filter_FIX.c
deleted file mode 100644
index 5574e7069f..0000000000
--- a/thirdparty/opus/silk/fixed/LTP_analysis_filter_FIX.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-
-void silk_LTP_analysis_filter_FIX(
- opus_int16 *LTP_res, /* O LTP residual signal of length MAX_NB_SUBFR * ( pre_length + subfr_length ) */
- const opus_int16 *x, /* I Pointer to input signal with at least max( pitchL ) preceding samples */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ],/* I LTP_ORDER LTP coefficients for each MAX_NB_SUBFR subframe */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag, one for each subframe */
- const opus_int32 invGains_Q16[ MAX_NB_SUBFR ], /* I Inverse quantization gains, one for each subframe */
- const opus_int subfr_length, /* I Length of each subframe */
- const opus_int nb_subfr, /* I Number of subframes */
- const opus_int pre_length /* I Length of the preceding samples starting at &x[0] for each subframe */
-)
-{
- const opus_int16 *x_ptr, *x_lag_ptr;
- opus_int16 Btmp_Q14[ LTP_ORDER ];
- opus_int16 *LTP_res_ptr;
- opus_int k, i;
- opus_int32 LTP_est;
-
- x_ptr = x;
- LTP_res_ptr = LTP_res;
- for( k = 0; k < nb_subfr; k++ ) {
-
- x_lag_ptr = x_ptr - pitchL[ k ];
-
- Btmp_Q14[ 0 ] = LTPCoef_Q14[ k * LTP_ORDER ];
- Btmp_Q14[ 1 ] = LTPCoef_Q14[ k * LTP_ORDER + 1 ];
- Btmp_Q14[ 2 ] = LTPCoef_Q14[ k * LTP_ORDER + 2 ];
- Btmp_Q14[ 3 ] = LTPCoef_Q14[ k * LTP_ORDER + 3 ];
- Btmp_Q14[ 4 ] = LTPCoef_Q14[ k * LTP_ORDER + 4 ];
-
- /* LTP analysis FIR filter */
- for( i = 0; i < subfr_length + pre_length; i++ ) {
- LTP_res_ptr[ i ] = x_ptr[ i ];
-
- /* Long-term prediction */
- LTP_est = silk_SMULBB( x_lag_ptr[ LTP_ORDER / 2 ], Btmp_Q14[ 0 ] );
- LTP_est = silk_SMLABB_ovflw( LTP_est, x_lag_ptr[ 1 ], Btmp_Q14[ 1 ] );
- LTP_est = silk_SMLABB_ovflw( LTP_est, x_lag_ptr[ 0 ], Btmp_Q14[ 2 ] );
- LTP_est = silk_SMLABB_ovflw( LTP_est, x_lag_ptr[ -1 ], Btmp_Q14[ 3 ] );
- LTP_est = silk_SMLABB_ovflw( LTP_est, x_lag_ptr[ -2 ], Btmp_Q14[ 4 ] );
-
- LTP_est = silk_RSHIFT_ROUND( LTP_est, 14 ); /* round and -> Q0*/
-
- /* Subtract long-term prediction */
- LTP_res_ptr[ i ] = (opus_int16)silk_SAT16( (opus_int32)x_ptr[ i ] - LTP_est );
-
- /* Scale residual */
- LTP_res_ptr[ i ] = silk_SMULWB( invGains_Q16[ k ], LTP_res_ptr[ i ] );
-
- x_lag_ptr++;
- }
-
- /* Update pointers */
- LTP_res_ptr += subfr_length + pre_length;
- x_ptr += subfr_length;
- }
-}
-
diff --git a/thirdparty/opus/silk/fixed/LTP_scale_ctrl_FIX.c b/thirdparty/opus/silk/fixed/LTP_scale_ctrl_FIX.c
deleted file mode 100644
index 3dcedef891..0000000000
--- a/thirdparty/opus/silk/fixed/LTP_scale_ctrl_FIX.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-
-/* Calculation of LTP state scaling */
-void silk_LTP_scale_ctrl_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- opus_int round_loss;
-
- if( condCoding == CODE_INDEPENDENTLY ) {
- /* Only scale if first frame in packet */
- round_loss = psEnc->sCmn.PacketLoss_perc + psEnc->sCmn.nFramesPerPacket;
- psEnc->sCmn.indices.LTP_scaleIndex = (opus_int8)silk_LIMIT(
- silk_SMULWB( silk_SMULBB( round_loss, psEncCtrl->LTPredCodGain_Q7 ), SILK_FIX_CONST( 0.1, 9 ) ), 0, 2 );
- } else {
- /* Default is minimum scaling */
- psEnc->sCmn.indices.LTP_scaleIndex = 0;
- }
- psEncCtrl->LTP_scale_Q14 = silk_LTPScales_table_Q14[ psEnc->sCmn.indices.LTP_scaleIndex ];
-}
diff --git a/thirdparty/opus/silk/fixed/apply_sine_window_FIX.c b/thirdparty/opus/silk/fixed/apply_sine_window_FIX.c
deleted file mode 100644
index 4502b7130e..0000000000
--- a/thirdparty/opus/silk/fixed/apply_sine_window_FIX.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Apply sine window to signal vector. */
-/* Window types: */
-/* 1 -> sine window from 0 to pi/2 */
-/* 2 -> sine window from pi/2 to pi */
-/* Every other sample is linearly interpolated, for speed. */
-/* Window length must be between 16 and 120 (incl) and a multiple of 4. */
-
-/* Matlab code for table:
- for k=16:9*4:16+2*9*4, fprintf(' %7.d,', -round(65536*pi ./ (k:4:k+8*4))); fprintf('\n'); end
-*/
-static const opus_int16 freq_table_Q16[ 27 ] = {
- 12111, 9804, 8235, 7100, 6239, 5565, 5022, 4575, 4202,
- 3885, 3612, 3375, 3167, 2984, 2820, 2674, 2542, 2422,
- 2313, 2214, 2123, 2038, 1961, 1889, 1822, 1760, 1702,
-};
-
-void silk_apply_sine_window(
- opus_int16 px_win[], /* O Pointer to windowed signal */
- const opus_int16 px[], /* I Pointer to input signal */
- const opus_int win_type, /* I Selects a window type */
- const opus_int length /* I Window length, multiple of 4 */
-)
-{
- opus_int k, f_Q16, c_Q16;
- opus_int32 S0_Q16, S1_Q16;
-
- silk_assert( win_type == 1 || win_type == 2 );
-
- /* Length must be in a range from 16 to 120 and a multiple of 4 */
- silk_assert( length >= 16 && length <= 120 );
- silk_assert( ( length & 3 ) == 0 );
-
- /* Frequency */
- k = ( length >> 2 ) - 4;
- silk_assert( k >= 0 && k <= 26 );
- f_Q16 = (opus_int)freq_table_Q16[ k ];
-
- /* Factor used for cosine approximation */
- c_Q16 = silk_SMULWB( (opus_int32)f_Q16, -f_Q16 );
- silk_assert( c_Q16 >= -32768 );
-
- /* initialize state */
- if( win_type == 1 ) {
- /* start from 0 */
- S0_Q16 = 0;
- /* approximation of sin(f) */
- S1_Q16 = f_Q16 + silk_RSHIFT( length, 3 );
- } else {
- /* start from 1 */
- S0_Q16 = ( (opus_int32)1 << 16 );
- /* approximation of cos(f) */
- S1_Q16 = ( (opus_int32)1 << 16 ) + silk_RSHIFT( c_Q16, 1 ) + silk_RSHIFT( length, 4 );
- }
-
- /* Uses the recursive equation: sin(n*f) = 2 * cos(f) * sin((n-1)*f) - sin((n-2)*f) */
- /* 4 samples at a time */
- for( k = 0; k < length; k += 4 ) {
- px_win[ k ] = (opus_int16)silk_SMULWB( silk_RSHIFT( S0_Q16 + S1_Q16, 1 ), px[ k ] );
- px_win[ k + 1 ] = (opus_int16)silk_SMULWB( S1_Q16, px[ k + 1] );
- S0_Q16 = silk_SMULWB( S1_Q16, c_Q16 ) + silk_LSHIFT( S1_Q16, 1 ) - S0_Q16 + 1;
- S0_Q16 = silk_min( S0_Q16, ( (opus_int32)1 << 16 ) );
-
- px_win[ k + 2 ] = (opus_int16)silk_SMULWB( silk_RSHIFT( S0_Q16 + S1_Q16, 1 ), px[ k + 2] );
- px_win[ k + 3 ] = (opus_int16)silk_SMULWB( S0_Q16, px[ k + 3 ] );
- S1_Q16 = silk_SMULWB( S0_Q16, c_Q16 ) + silk_LSHIFT( S0_Q16, 1 ) - S1_Q16;
- S1_Q16 = silk_min( S1_Q16, ( (opus_int32)1 << 16 ) );
- }
-}
diff --git a/thirdparty/opus/silk/fixed/autocorr_FIX.c b/thirdparty/opus/silk/fixed/autocorr_FIX.c
deleted file mode 100644
index de95c98693..0000000000
--- a/thirdparty/opus/silk/fixed/autocorr_FIX.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "celt_lpc.h"
-
-/* Compute autocorrelation */
-void silk_autocorr(
- opus_int32 *results, /* O Result (length correlationCount) */
- opus_int *scale, /* O Scaling of the correlation vector */
- const opus_int16 *inputData, /* I Input data to correlate */
- const opus_int inputDataSize, /* I Length of input */
- const opus_int correlationCount, /* I Number of correlation taps to compute */
- int arch /* I Run-time architecture */
-)
-{
- opus_int corrCount;
- corrCount = silk_min_int( inputDataSize, correlationCount );
- *scale = _celt_autocorr(inputData, results, NULL, 0, corrCount-1, inputDataSize, arch);
-}
diff --git a/thirdparty/opus/silk/fixed/burg_modified_FIX.c b/thirdparty/opus/silk/fixed/burg_modified_FIX.c
deleted file mode 100644
index 17d0e0993c..0000000000
--- a/thirdparty/opus/silk/fixed/burg_modified_FIX.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "define.h"
-#include "tuning_parameters.h"
-#include "pitch.h"
-
-#define MAX_FRAME_SIZE 384 /* subfr_length * nb_subfr = ( 0.005 * 16000 + 16 ) * 4 = 384 */
-
-#define QA 25
-#define N_BITS_HEAD_ROOM 2
-#define MIN_RSHIFTS -16
-#define MAX_RSHIFTS (32 - QA)
-
-/* Compute reflection coefficients from input signal */
-void silk_burg_modified_c(
- opus_int32 *res_nrg, /* O Residual energy */
- opus_int *res_nrg_Q, /* O Residual energy Q value */
- opus_int32 A_Q16[], /* O Prediction coefficients (length order) */
- const opus_int16 x[], /* I Input signal, length: nb_subfr * ( D + subfr_length ) */
- const opus_int32 minInvGain_Q30, /* I Inverse of max prediction gain */
- const opus_int subfr_length, /* I Input signal subframe length (incl. D preceding samples) */
- const opus_int nb_subfr, /* I Number of subframes stacked in x */
- const opus_int D, /* I Order */
- int arch /* I Run-time architecture */
-)
-{
- opus_int k, n, s, lz, rshifts, reached_max_gain;
- opus_int32 C0, num, nrg, rc_Q31, invGain_Q30, Atmp_QA, Atmp1, tmp1, tmp2, x1, x2;
- const opus_int16 *x_ptr;
- opus_int32 C_first_row[ SILK_MAX_ORDER_LPC ];
- opus_int32 C_last_row[ SILK_MAX_ORDER_LPC ];
- opus_int32 Af_QA[ SILK_MAX_ORDER_LPC ];
- opus_int32 CAf[ SILK_MAX_ORDER_LPC + 1 ];
- opus_int32 CAb[ SILK_MAX_ORDER_LPC + 1 ];
- opus_int32 xcorr[ SILK_MAX_ORDER_LPC ];
- opus_int64 C0_64;
-
- silk_assert( subfr_length * nb_subfr <= MAX_FRAME_SIZE );
-
- /* Compute autocorrelations, added over subframes */
- C0_64 = silk_inner_prod16_aligned_64( x, x, subfr_length*nb_subfr, arch );
- lz = silk_CLZ64(C0_64);
- rshifts = 32 + 1 + N_BITS_HEAD_ROOM - lz;
- if (rshifts > MAX_RSHIFTS) rshifts = MAX_RSHIFTS;
- if (rshifts < MIN_RSHIFTS) rshifts = MIN_RSHIFTS;
-
- if (rshifts > 0) {
- C0 = (opus_int32)silk_RSHIFT64(C0_64, rshifts );
- } else {
- C0 = silk_LSHIFT32((opus_int32)C0_64, -rshifts );
- }
-
- CAb[ 0 ] = CAf[ 0 ] = C0 + silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ) + 1; /* Q(-rshifts) */
- silk_memset( C_first_row, 0, SILK_MAX_ORDER_LPC * sizeof( opus_int32 ) );
- if( rshifts > 0 ) {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- for( n = 1; n < D + 1; n++ ) {
- C_first_row[ n - 1 ] += (opus_int32)silk_RSHIFT64(
- silk_inner_prod16_aligned_64( x_ptr, x_ptr + n, subfr_length - n, arch ), rshifts );
- }
- }
- } else {
- for( s = 0; s < nb_subfr; s++ ) {
- int i;
- opus_int32 d;
- x_ptr = x + s * subfr_length;
- celt_pitch_xcorr(x_ptr, x_ptr + 1, xcorr, subfr_length - D, D, arch );
- for( n = 1; n < D + 1; n++ ) {
- for ( i = n + subfr_length - D, d = 0; i < subfr_length; i++ )
- d = MAC16_16( d, x_ptr[ i ], x_ptr[ i - n ] );
- xcorr[ n - 1 ] += d;
- }
- for( n = 1; n < D + 1; n++ ) {
- C_first_row[ n - 1 ] += silk_LSHIFT32( xcorr[ n - 1 ], -rshifts );
- }
- }
- }
- silk_memcpy( C_last_row, C_first_row, SILK_MAX_ORDER_LPC * sizeof( opus_int32 ) );
-
- /* Initialize */
- CAb[ 0 ] = CAf[ 0 ] = C0 + silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ) + 1; /* Q(-rshifts) */
-
- invGain_Q30 = (opus_int32)1 << 30;
- reached_max_gain = 0;
- for( n = 0; n < D; n++ ) {
- /* Update first row of correlation matrix (without first element) */
- /* Update last row of correlation matrix (without last element, stored in reversed order) */
- /* Update C * Af */
- /* Update C * flipud(Af) (stored in reversed order) */
- if( rshifts > -2 ) {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- x1 = -silk_LSHIFT32( (opus_int32)x_ptr[ n ], 16 - rshifts ); /* Q(16-rshifts) */
- x2 = -silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], 16 - rshifts ); /* Q(16-rshifts) */
- tmp1 = silk_LSHIFT32( (opus_int32)x_ptr[ n ], QA - 16 ); /* Q(QA-16) */
- tmp2 = silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], QA - 16 ); /* Q(QA-16) */
- for( k = 0; k < n; k++ ) {
- C_first_row[ k ] = silk_SMLAWB( C_first_row[ k ], x1, x_ptr[ n - k - 1 ] ); /* Q( -rshifts ) */
- C_last_row[ k ] = silk_SMLAWB( C_last_row[ k ], x2, x_ptr[ subfr_length - n + k ] ); /* Q( -rshifts ) */
- Atmp_QA = Af_QA[ k ];
- tmp1 = silk_SMLAWB( tmp1, Atmp_QA, x_ptr[ n - k - 1 ] ); /* Q(QA-16) */
- tmp2 = silk_SMLAWB( tmp2, Atmp_QA, x_ptr[ subfr_length - n + k ] ); /* Q(QA-16) */
- }
- tmp1 = silk_LSHIFT32( -tmp1, 32 - QA - rshifts ); /* Q(16-rshifts) */
- tmp2 = silk_LSHIFT32( -tmp2, 32 - QA - rshifts ); /* Q(16-rshifts) */
- for( k = 0; k <= n; k++ ) {
- CAf[ k ] = silk_SMLAWB( CAf[ k ], tmp1, x_ptr[ n - k ] ); /* Q( -rshift ) */
- CAb[ k ] = silk_SMLAWB( CAb[ k ], tmp2, x_ptr[ subfr_length - n + k - 1 ] ); /* Q( -rshift ) */
- }
- }
- } else {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- x1 = -silk_LSHIFT32( (opus_int32)x_ptr[ n ], -rshifts ); /* Q( -rshifts ) */
- x2 = -silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], -rshifts ); /* Q( -rshifts ) */
- tmp1 = silk_LSHIFT32( (opus_int32)x_ptr[ n ], 17 ); /* Q17 */
- tmp2 = silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], 17 ); /* Q17 */
- for( k = 0; k < n; k++ ) {
- C_first_row[ k ] = silk_MLA( C_first_row[ k ], x1, x_ptr[ n - k - 1 ] ); /* Q( -rshifts ) */
- C_last_row[ k ] = silk_MLA( C_last_row[ k ], x2, x_ptr[ subfr_length - n + k ] ); /* Q( -rshifts ) */
- Atmp1 = silk_RSHIFT_ROUND( Af_QA[ k ], QA - 17 ); /* Q17 */
- /* We sometimes have get overflows in the multiplications (even beyond +/- 2^32),
- but they cancel each other and the real result seems to always fit in a 32-bit
- signed integer. This was determined experimentally, not theoretically (unfortunately). */
- tmp1 = silk_MLA_ovflw( tmp1, x_ptr[ n - k - 1 ], Atmp1 ); /* Q17 */
- tmp2 = silk_MLA_ovflw( tmp2, x_ptr[ subfr_length - n + k ], Atmp1 ); /* Q17 */
- }
- tmp1 = -tmp1; /* Q17 */
- tmp2 = -tmp2; /* Q17 */
- for( k = 0; k <= n; k++ ) {
- CAf[ k ] = silk_SMLAWW( CAf[ k ], tmp1,
- silk_LSHIFT32( (opus_int32)x_ptr[ n - k ], -rshifts - 1 ) ); /* Q( -rshift ) */
- CAb[ k ] = silk_SMLAWW( CAb[ k ], tmp2,
- silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n + k - 1 ], -rshifts - 1 ) ); /* Q( -rshift ) */
- }
- }
- }
-
- /* Calculate nominator and denominator for the next order reflection (parcor) coefficient */
- tmp1 = C_first_row[ n ]; /* Q( -rshifts ) */
- tmp2 = C_last_row[ n ]; /* Q( -rshifts ) */
- num = 0; /* Q( -rshifts ) */
- nrg = silk_ADD32( CAb[ 0 ], CAf[ 0 ] ); /* Q( 1-rshifts ) */
- for( k = 0; k < n; k++ ) {
- Atmp_QA = Af_QA[ k ];
- lz = silk_CLZ32( silk_abs( Atmp_QA ) ) - 1;
- lz = silk_min( 32 - QA, lz );
- Atmp1 = silk_LSHIFT32( Atmp_QA, lz ); /* Q( QA + lz ) */
-
- tmp1 = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( C_last_row[ n - k - 1 ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */
- tmp2 = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( C_first_row[ n - k - 1 ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */
- num = silk_ADD_LSHIFT32( num, silk_SMMUL( CAb[ n - k ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */
- nrg = silk_ADD_LSHIFT32( nrg, silk_SMMUL( silk_ADD32( CAb[ k + 1 ], CAf[ k + 1 ] ),
- Atmp1 ), 32 - QA - lz ); /* Q( 1-rshifts ) */
- }
- CAf[ n + 1 ] = tmp1; /* Q( -rshifts ) */
- CAb[ n + 1 ] = tmp2; /* Q( -rshifts ) */
- num = silk_ADD32( num, tmp2 ); /* Q( -rshifts ) */
- num = silk_LSHIFT32( -num, 1 ); /* Q( 1-rshifts ) */
-
- /* Calculate the next order reflection (parcor) coefficient */
- if( silk_abs( num ) < nrg ) {
- rc_Q31 = silk_DIV32_varQ( num, nrg, 31 );
- } else {
- rc_Q31 = ( num > 0 ) ? silk_int32_MAX : silk_int32_MIN;
- }
-
- /* Update inverse prediction gain */
- tmp1 = ( (opus_int32)1 << 30 ) - silk_SMMUL( rc_Q31, rc_Q31 );
- tmp1 = silk_LSHIFT( silk_SMMUL( invGain_Q30, tmp1 ), 2 );
- if( tmp1 <= minInvGain_Q30 ) {
- /* Max prediction gain exceeded; set reflection coefficient such that max prediction gain is exactly hit */
- tmp2 = ( (opus_int32)1 << 30 ) - silk_DIV32_varQ( minInvGain_Q30, invGain_Q30, 30 ); /* Q30 */
- rc_Q31 = silk_SQRT_APPROX( tmp2 ); /* Q15 */
- if( rc_Q31 > 0 ) {
- /* Newton-Raphson iteration */
- rc_Q31 = silk_RSHIFT32( rc_Q31 + silk_DIV32( tmp2, rc_Q31 ), 1 ); /* Q15 */
- rc_Q31 = silk_LSHIFT32( rc_Q31, 16 ); /* Q31 */
- if( num < 0 ) {
- /* Ensure adjusted reflection coefficients has the original sign */
- rc_Q31 = -rc_Q31;
- }
- }
- invGain_Q30 = minInvGain_Q30;
- reached_max_gain = 1;
- } else {
- invGain_Q30 = tmp1;
- }
-
- /* Update the AR coefficients */
- for( k = 0; k < (n + 1) >> 1; k++ ) {
- tmp1 = Af_QA[ k ]; /* QA */
- tmp2 = Af_QA[ n - k - 1 ]; /* QA */
- Af_QA[ k ] = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( tmp2, rc_Q31 ), 1 ); /* QA */
- Af_QA[ n - k - 1 ] = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( tmp1, rc_Q31 ), 1 ); /* QA */
- }
- Af_QA[ n ] = silk_RSHIFT32( rc_Q31, 31 - QA ); /* QA */
-
- if( reached_max_gain ) {
- /* Reached max prediction gain; set remaining coefficients to zero and exit loop */
- for( k = n + 1; k < D; k++ ) {
- Af_QA[ k ] = 0;
- }
- break;
- }
-
- /* Update C * Af and C * Ab */
- for( k = 0; k <= n + 1; k++ ) {
- tmp1 = CAf[ k ]; /* Q( -rshifts ) */
- tmp2 = CAb[ n - k + 1 ]; /* Q( -rshifts ) */
- CAf[ k ] = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( tmp2, rc_Q31 ), 1 ); /* Q( -rshifts ) */
- CAb[ n - k + 1 ] = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( tmp1, rc_Q31 ), 1 ); /* Q( -rshifts ) */
- }
- }
-
- if( reached_max_gain ) {
- for( k = 0; k < D; k++ ) {
- /* Scale coefficients */
- A_Q16[ k ] = -silk_RSHIFT_ROUND( Af_QA[ k ], QA - 16 );
- }
- /* Subtract energy of preceding samples from C0 */
- if( rshifts > 0 ) {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- C0 -= (opus_int32)silk_RSHIFT64( silk_inner_prod16_aligned_64( x_ptr, x_ptr, D, arch ), rshifts );
- }
- } else {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- C0 -= silk_LSHIFT32( silk_inner_prod_aligned( x_ptr, x_ptr, D, arch), -rshifts);
- }
- }
- /* Approximate residual energy */
- *res_nrg = silk_LSHIFT( silk_SMMUL( invGain_Q30, C0 ), 2 );
- *res_nrg_Q = -rshifts;
- } else {
- /* Return residual energy */
- nrg = CAf[ 0 ]; /* Q( -rshifts ) */
- tmp1 = (opus_int32)1 << 16; /* Q16 */
- for( k = 0; k < D; k++ ) {
- Atmp1 = silk_RSHIFT_ROUND( Af_QA[ k ], QA - 16 ); /* Q16 */
- nrg = silk_SMLAWW( nrg, CAf[ k + 1 ], Atmp1 ); /* Q( -rshifts ) */
- tmp1 = silk_SMLAWW( tmp1, Atmp1, Atmp1 ); /* Q16 */
- A_Q16[ k ] = -Atmp1;
- }
- *res_nrg = silk_SMLAWW( nrg, silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ), -tmp1 );/* Q( -rshifts ) */
- *res_nrg_Q = -rshifts;
- }
-}
diff --git a/thirdparty/opus/silk/fixed/corrMatrix_FIX.c b/thirdparty/opus/silk/fixed/corrMatrix_FIX.c
deleted file mode 100644
index c1d437c785..0000000000
--- a/thirdparty/opus/silk/fixed/corrMatrix_FIX.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/**********************************************************************
- * Correlation Matrix Computations for LS estimate.
- **********************************************************************/
-
-#include "main_FIX.h"
-
-/* Calculates correlation vector X'*t */
-void silk_corrVector_FIX(
- const opus_int16 *x, /* I x vector [L + order - 1] used to form data matrix X */
- const opus_int16 *t, /* I Target vector [L] */
- const opus_int L, /* I Length of vectors */
- const opus_int order, /* I Max lag for correlation */
- opus_int32 *Xt, /* O Pointer to X'*t correlation vector [order] */
- const opus_int rshifts, /* I Right shifts of correlations */
- int arch /* I Run-time architecture */
-)
-{
- opus_int lag, i;
- const opus_int16 *ptr1, *ptr2;
- opus_int32 inner_prod;
-
- ptr1 = &x[ order - 1 ]; /* Points to first sample of column 0 of X: X[:,0] */
- ptr2 = t;
- /* Calculate X'*t */
- if( rshifts > 0 ) {
- /* Right shifting used */
- for( lag = 0; lag < order; lag++ ) {
- inner_prod = 0;
- for( i = 0; i < L; i++ ) {
- inner_prod += silk_RSHIFT32( silk_SMULBB( ptr1[ i ], ptr2[i] ), rshifts );
- }
- Xt[ lag ] = inner_prod; /* X[:,lag]'*t */
- ptr1--; /* Go to next column of X */
- }
- } else {
- silk_assert( rshifts == 0 );
- for( lag = 0; lag < order; lag++ ) {
- Xt[ lag ] = silk_inner_prod_aligned( ptr1, ptr2, L, arch ); /* X[:,lag]'*t */
- ptr1--; /* Go to next column of X */
- }
- }
-}
-
-/* Calculates correlation matrix X'*X */
-void silk_corrMatrix_FIX(
- const opus_int16 *x, /* I x vector [L + order - 1] used to form data matrix X */
- const opus_int L, /* I Length of vectors */
- const opus_int order, /* I Max lag for correlation */
- const opus_int head_room, /* I Desired headroom */
- opus_int32 *XX, /* O Pointer to X'*X correlation matrix [ order x order ] */
- opus_int *rshifts, /* I/O Right shifts of correlations */
- int arch /* I Run-time architecture */
-)
-{
- opus_int i, j, lag, rshifts_local, head_room_rshifts;
- opus_int32 energy;
- const opus_int16 *ptr1, *ptr2;
-
- /* Calculate energy to find shift used to fit in 32 bits */
- silk_sum_sqr_shift( &energy, &rshifts_local, x, L + order - 1 );
- /* Add shifts to get the desired head room */
- head_room_rshifts = silk_max( head_room - silk_CLZ32( energy ), 0 );
-
- energy = silk_RSHIFT32( energy, head_room_rshifts );
- rshifts_local += head_room_rshifts;
-
- /* Calculate energy of first column (0) of X: X[:,0]'*X[:,0] */
- /* Remove contribution of first order - 1 samples */
- for( i = 0; i < order - 1; i++ ) {
- energy -= silk_RSHIFT32( silk_SMULBB( x[ i ], x[ i ] ), rshifts_local );
- }
- if( rshifts_local < *rshifts ) {
- /* Adjust energy */
- energy = silk_RSHIFT32( energy, *rshifts - rshifts_local );
- rshifts_local = *rshifts;
- }
-
- /* Calculate energy of remaining columns of X: X[:,j]'*X[:,j] */
- /* Fill out the diagonal of the correlation matrix */
- matrix_ptr( XX, 0, 0, order ) = energy;
- ptr1 = &x[ order - 1 ]; /* First sample of column 0 of X */
- for( j = 1; j < order; j++ ) {
- energy = silk_SUB32( energy, silk_RSHIFT32( silk_SMULBB( ptr1[ L - j ], ptr1[ L - j ] ), rshifts_local ) );
- energy = silk_ADD32( energy, silk_RSHIFT32( silk_SMULBB( ptr1[ -j ], ptr1[ -j ] ), rshifts_local ) );
- matrix_ptr( XX, j, j, order ) = energy;
- }
-
- ptr2 = &x[ order - 2 ]; /* First sample of column 1 of X */
- /* Calculate the remaining elements of the correlation matrix */
- if( rshifts_local > 0 ) {
- /* Right shifting used */
- for( lag = 1; lag < order; lag++ ) {
- /* Inner product of column 0 and column lag: X[:,0]'*X[:,lag] */
- energy = 0;
- for( i = 0; i < L; i++ ) {
- energy += silk_RSHIFT32( silk_SMULBB( ptr1[ i ], ptr2[i] ), rshifts_local );
- }
- /* Calculate remaining off diagonal: X[:,j]'*X[:,j + lag] */
- matrix_ptr( XX, lag, 0, order ) = energy;
- matrix_ptr( XX, 0, lag, order ) = energy;
- for( j = 1; j < ( order - lag ); j++ ) {
- energy = silk_SUB32( energy, silk_RSHIFT32( silk_SMULBB( ptr1[ L - j ], ptr2[ L - j ] ), rshifts_local ) );
- energy = silk_ADD32( energy, silk_RSHIFT32( silk_SMULBB( ptr1[ -j ], ptr2[ -j ] ), rshifts_local ) );
- matrix_ptr( XX, lag + j, j, order ) = energy;
- matrix_ptr( XX, j, lag + j, order ) = energy;
- }
- ptr2--; /* Update pointer to first sample of next column (lag) in X */
- }
- } else {
- for( lag = 1; lag < order; lag++ ) {
- /* Inner product of column 0 and column lag: X[:,0]'*X[:,lag] */
- energy = silk_inner_prod_aligned( ptr1, ptr2, L, arch );
- matrix_ptr( XX, lag, 0, order ) = energy;
- matrix_ptr( XX, 0, lag, order ) = energy;
- /* Calculate remaining off diagonal: X[:,j]'*X[:,j + lag] */
- for( j = 1; j < ( order - lag ); j++ ) {
- energy = silk_SUB32( energy, silk_SMULBB( ptr1[ L - j ], ptr2[ L - j ] ) );
- energy = silk_SMLABB( energy, ptr1[ -j ], ptr2[ -j ] );
- matrix_ptr( XX, lag + j, j, order ) = energy;
- matrix_ptr( XX, j, lag + j, order ) = energy;
- }
- ptr2--;/* Update pointer to first sample of next column (lag) in X */
- }
- }
- *rshifts = rshifts_local;
-}
-
diff --git a/thirdparty/opus/silk/fixed/encode_frame_FIX.c b/thirdparty/opus/silk/fixed/encode_frame_FIX.c
deleted file mode 100644
index 5ef44b03fc..0000000000
--- a/thirdparty/opus/silk/fixed/encode_frame_FIX.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-#include "tuning_parameters.h"
-
-/* Low Bitrate Redundancy (LBRR) encoding. Reuse all parameters but encode with lower bitrate */
-static OPUS_INLINE void silk_LBRR_encode_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Pointer to Silk FIX encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O Pointer to Silk FIX encoder control struct */
- const opus_int32 xfw_Q3[], /* I Input signal */
- opus_int condCoding /* I The type of conditional coding used so far for this frame */
-);
-
-void silk_encode_do_VAD_FIX(
- silk_encoder_state_FIX *psEnc /* I/O Pointer to Silk FIX encoder state */
-)
-{
- /****************************/
- /* Voice Activity Detection */
- /****************************/
- silk_VAD_GetSA_Q8( &psEnc->sCmn, psEnc->sCmn.inputBuf + 1, psEnc->sCmn.arch );
-
- /**************************************************/
- /* Convert speech activity into VAD and DTX flags */
- /**************************************************/
- if( psEnc->sCmn.speech_activity_Q8 < SILK_FIX_CONST( SPEECH_ACTIVITY_DTX_THRES, 8 ) ) {
- psEnc->sCmn.indices.signalType = TYPE_NO_VOICE_ACTIVITY;
- psEnc->sCmn.noSpeechCounter++;
- if( psEnc->sCmn.noSpeechCounter < NB_SPEECH_FRAMES_BEFORE_DTX ) {
- psEnc->sCmn.inDTX = 0;
- } else if( psEnc->sCmn.noSpeechCounter > MAX_CONSECUTIVE_DTX + NB_SPEECH_FRAMES_BEFORE_DTX ) {
- psEnc->sCmn.noSpeechCounter = NB_SPEECH_FRAMES_BEFORE_DTX;
- psEnc->sCmn.inDTX = 0;
- }
- psEnc->sCmn.VAD_flags[ psEnc->sCmn.nFramesEncoded ] = 0;
- } else {
- psEnc->sCmn.noSpeechCounter = 0;
- psEnc->sCmn.inDTX = 0;
- psEnc->sCmn.indices.signalType = TYPE_UNVOICED;
- psEnc->sCmn.VAD_flags[ psEnc->sCmn.nFramesEncoded ] = 1;
- }
-}
-
-/****************/
-/* Encode frame */
-/****************/
-opus_int silk_encode_frame_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Pointer to Silk FIX encoder state */
- opus_int32 *pnBytesOut, /* O Pointer to number of payload bytes; */
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- opus_int condCoding, /* I The type of conditional coding to use */
- opus_int maxBits, /* I If > 0: maximum number of output bits */
- opus_int useCBR /* I Flag to force constant-bitrate operation */
-)
-{
- silk_encoder_control_FIX sEncCtrl;
- opus_int i, iter, maxIter, found_upper, found_lower, ret = 0;
- opus_int16 *x_frame;
- ec_enc sRangeEnc_copy, sRangeEnc_copy2;
- silk_nsq_state sNSQ_copy, sNSQ_copy2;
- opus_int32 seed_copy, nBits, nBits_lower, nBits_upper, gainMult_lower, gainMult_upper;
- opus_int32 gainsID, gainsID_lower, gainsID_upper;
- opus_int16 gainMult_Q8;
- opus_int16 ec_prevLagIndex_copy;
- opus_int ec_prevSignalType_copy;
- opus_int8 LastGainIndex_copy2;
- SAVE_STACK;
-
- /* This is totally unnecessary but many compilers (including gcc) are too dumb to realise it */
- LastGainIndex_copy2 = nBits_lower = nBits_upper = gainMult_lower = gainMult_upper = 0;
-
- psEnc->sCmn.indices.Seed = psEnc->sCmn.frameCounter++ & 3;
-
- /**************************************************************/
- /* Set up Input Pointers, and insert frame in input buffer */
- /*************************************************************/
- /* start of frame to encode */
- x_frame = psEnc->x_buf + psEnc->sCmn.ltp_mem_length;
-
- /***************************************/
- /* Ensure smooth bandwidth transitions */
- /***************************************/
- silk_LP_variable_cutoff( &psEnc->sCmn.sLP, psEnc->sCmn.inputBuf + 1, psEnc->sCmn.frame_length );
-
- /*******************************************/
- /* Copy new frame to front of input buffer */
- /*******************************************/
- silk_memcpy( x_frame + LA_SHAPE_MS * psEnc->sCmn.fs_kHz, psEnc->sCmn.inputBuf + 1, psEnc->sCmn.frame_length * sizeof( opus_int16 ) );
-
- if( !psEnc->sCmn.prefillFlag ) {
- VARDECL( opus_int32, xfw_Q3 );
- VARDECL( opus_int16, res_pitch );
- VARDECL( opus_uint8, ec_buf_copy );
- opus_int16 *res_pitch_frame;
-
- ALLOC( res_pitch,
- psEnc->sCmn.la_pitch + psEnc->sCmn.frame_length
- + psEnc->sCmn.ltp_mem_length, opus_int16 );
- /* start of pitch LPC residual frame */
- res_pitch_frame = res_pitch + psEnc->sCmn.ltp_mem_length;
-
- /*****************************************/
- /* Find pitch lags, initial LPC analysis */
- /*****************************************/
- silk_find_pitch_lags_FIX( psEnc, &sEncCtrl, res_pitch, x_frame, psEnc->sCmn.arch );
-
- /************************/
- /* Noise shape analysis */
- /************************/
- silk_noise_shape_analysis_FIX( psEnc, &sEncCtrl, res_pitch_frame, x_frame, psEnc->sCmn.arch );
-
- /***************************************************/
- /* Find linear prediction coefficients (LPC + LTP) */
- /***************************************************/
- silk_find_pred_coefs_FIX( psEnc, &sEncCtrl, res_pitch, x_frame, condCoding );
-
- /****************************************/
- /* Process gains */
- /****************************************/
- silk_process_gains_FIX( psEnc, &sEncCtrl, condCoding );
-
- /*****************************************/
- /* Prefiltering for noise shaper */
- /*****************************************/
- ALLOC( xfw_Q3, psEnc->sCmn.frame_length, opus_int32 );
- silk_prefilter_FIX( psEnc, &sEncCtrl, xfw_Q3, x_frame );
-
- /****************************************/
- /* Low Bitrate Redundant Encoding */
- /****************************************/
- silk_LBRR_encode_FIX( psEnc, &sEncCtrl, xfw_Q3, condCoding );
-
- /* Loop over quantizer and entropy coding to control bitrate */
- maxIter = 6;
- gainMult_Q8 = SILK_FIX_CONST( 1, 8 );
- found_lower = 0;
- found_upper = 0;
- gainsID = silk_gains_ID( psEnc->sCmn.indices.GainsIndices, psEnc->sCmn.nb_subfr );
- gainsID_lower = -1;
- gainsID_upper = -1;
- /* Copy part of the input state */
- silk_memcpy( &sRangeEnc_copy, psRangeEnc, sizeof( ec_enc ) );
- silk_memcpy( &sNSQ_copy, &psEnc->sCmn.sNSQ, sizeof( silk_nsq_state ) );
- seed_copy = psEnc->sCmn.indices.Seed;
- ec_prevLagIndex_copy = psEnc->sCmn.ec_prevLagIndex;
- ec_prevSignalType_copy = psEnc->sCmn.ec_prevSignalType;
- ALLOC( ec_buf_copy, 1275, opus_uint8 );
- for( iter = 0; ; iter++ ) {
- if( gainsID == gainsID_lower ) {
- nBits = nBits_lower;
- } else if( gainsID == gainsID_upper ) {
- nBits = nBits_upper;
- } else {
- /* Restore part of the input state */
- if( iter > 0 ) {
- silk_memcpy( psRangeEnc, &sRangeEnc_copy, sizeof( ec_enc ) );
- silk_memcpy( &psEnc->sCmn.sNSQ, &sNSQ_copy, sizeof( silk_nsq_state ) );
- psEnc->sCmn.indices.Seed = seed_copy;
- psEnc->sCmn.ec_prevLagIndex = ec_prevLagIndex_copy;
- psEnc->sCmn.ec_prevSignalType = ec_prevSignalType_copy;
- }
-
- /*****************************************/
- /* Noise shaping quantization */
- /*****************************************/
- if( psEnc->sCmn.nStatesDelayedDecision > 1 || psEnc->sCmn.warping_Q16 > 0 ) {
- silk_NSQ_del_dec( &psEnc->sCmn, &psEnc->sCmn.sNSQ, &psEnc->sCmn.indices, xfw_Q3, psEnc->sCmn.pulses,
- sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q13, sEncCtrl.HarmShapeGain_Q14,
- sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncCtrl.pitchL, sEncCtrl.Lambda_Q10, sEncCtrl.LTP_scale_Q14,
- psEnc->sCmn.arch );
- } else {
- silk_NSQ( &psEnc->sCmn, &psEnc->sCmn.sNSQ, &psEnc->sCmn.indices, xfw_Q3, psEnc->sCmn.pulses,
- sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q13, sEncCtrl.HarmShapeGain_Q14,
- sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncCtrl.pitchL, sEncCtrl.Lambda_Q10, sEncCtrl.LTP_scale_Q14,
- psEnc->sCmn.arch);
- }
-
- /****************************************/
- /* Encode Parameters */
- /****************************************/
- silk_encode_indices( &psEnc->sCmn, psRangeEnc, psEnc->sCmn.nFramesEncoded, 0, condCoding );
-
- /****************************************/
- /* Encode Excitation Signal */
- /****************************************/
- silk_encode_pulses( psRangeEnc, psEnc->sCmn.indices.signalType, psEnc->sCmn.indices.quantOffsetType,
- psEnc->sCmn.pulses, psEnc->sCmn.frame_length );
-
- nBits = ec_tell( psRangeEnc );
-
- if( useCBR == 0 && iter == 0 && nBits <= maxBits ) {
- break;
- }
- }
-
- if( iter == maxIter ) {
- if( found_lower && ( gainsID == gainsID_lower || nBits > maxBits ) ) {
- /* Restore output state from earlier iteration that did meet the bitrate budget */
- silk_memcpy( psRangeEnc, &sRangeEnc_copy2, sizeof( ec_enc ) );
- silk_assert( sRangeEnc_copy2.offs <= 1275 );
- silk_memcpy( psRangeEnc->buf, ec_buf_copy, sRangeEnc_copy2.offs );
- silk_memcpy( &psEnc->sCmn.sNSQ, &sNSQ_copy2, sizeof( silk_nsq_state ) );
- psEnc->sShape.LastGainIndex = LastGainIndex_copy2;
- }
- break;
- }
-
- if( nBits > maxBits ) {
- if( found_lower == 0 && iter >= 2 ) {
- /* Adjust the quantizer's rate/distortion tradeoff and discard previous "upper" results */
- sEncCtrl.Lambda_Q10 = silk_ADD_RSHIFT32( sEncCtrl.Lambda_Q10, sEncCtrl.Lambda_Q10, 1 );
- found_upper = 0;
- gainsID_upper = -1;
- } else {
- found_upper = 1;
- nBits_upper = nBits;
- gainMult_upper = gainMult_Q8;
- gainsID_upper = gainsID;
- }
- } else if( nBits < maxBits - 5 ) {
- found_lower = 1;
- nBits_lower = nBits;
- gainMult_lower = gainMult_Q8;
- if( gainsID != gainsID_lower ) {
- gainsID_lower = gainsID;
- /* Copy part of the output state */
- silk_memcpy( &sRangeEnc_copy2, psRangeEnc, sizeof( ec_enc ) );
- silk_assert( psRangeEnc->offs <= 1275 );
- silk_memcpy( ec_buf_copy, psRangeEnc->buf, psRangeEnc->offs );
- silk_memcpy( &sNSQ_copy2, &psEnc->sCmn.sNSQ, sizeof( silk_nsq_state ) );
- LastGainIndex_copy2 = psEnc->sShape.LastGainIndex;
- }
- } else {
- /* Within 5 bits of budget: close enough */
- break;
- }
-
- if( ( found_lower & found_upper ) == 0 ) {
- /* Adjust gain according to high-rate rate/distortion curve */
- opus_int32 gain_factor_Q16;
- gain_factor_Q16 = silk_log2lin( silk_LSHIFT( nBits - maxBits, 7 ) / psEnc->sCmn.frame_length + SILK_FIX_CONST( 16, 7 ) );
- gain_factor_Q16 = silk_min_32( gain_factor_Q16, SILK_FIX_CONST( 2, 16 ) );
- if( nBits > maxBits ) {
- gain_factor_Q16 = silk_max_32( gain_factor_Q16, SILK_FIX_CONST( 1.3, 16 ) );
- }
- gainMult_Q8 = silk_SMULWB( gain_factor_Q16, gainMult_Q8 );
- } else {
- /* Adjust gain by interpolating */
- gainMult_Q8 = gainMult_lower + silk_DIV32_16( silk_MUL( gainMult_upper - gainMult_lower, maxBits - nBits_lower ), nBits_upper - nBits_lower );
- /* New gain multplier must be between 25% and 75% of old range (note that gainMult_upper < gainMult_lower) */
- if( gainMult_Q8 > silk_ADD_RSHIFT32( gainMult_lower, gainMult_upper - gainMult_lower, 2 ) ) {
- gainMult_Q8 = silk_ADD_RSHIFT32( gainMult_lower, gainMult_upper - gainMult_lower, 2 );
- } else
- if( gainMult_Q8 < silk_SUB_RSHIFT32( gainMult_upper, gainMult_upper - gainMult_lower, 2 ) ) {
- gainMult_Q8 = silk_SUB_RSHIFT32( gainMult_upper, gainMult_upper - gainMult_lower, 2 );
- }
- }
-
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- sEncCtrl.Gains_Q16[ i ] = silk_LSHIFT_SAT32( silk_SMULWB( sEncCtrl.GainsUnq_Q16[ i ], gainMult_Q8 ), 8 );
- }
-
- /* Quantize gains */
- psEnc->sShape.LastGainIndex = sEncCtrl.lastGainIndexPrev;
- silk_gains_quant( psEnc->sCmn.indices.GainsIndices, sEncCtrl.Gains_Q16,
- &psEnc->sShape.LastGainIndex, condCoding == CODE_CONDITIONALLY, psEnc->sCmn.nb_subfr );
-
- /* Unique identifier of gains vector */
- gainsID = silk_gains_ID( psEnc->sCmn.indices.GainsIndices, psEnc->sCmn.nb_subfr );
- }
- }
-
- /* Update input buffer */
- silk_memmove( psEnc->x_buf, &psEnc->x_buf[ psEnc->sCmn.frame_length ],
- ( psEnc->sCmn.ltp_mem_length + LA_SHAPE_MS * psEnc->sCmn.fs_kHz ) * sizeof( opus_int16 ) );
-
- /* Exit without entropy coding */
- if( psEnc->sCmn.prefillFlag ) {
- /* No payload */
- *pnBytesOut = 0;
- RESTORE_STACK;
- return ret;
- }
-
- /* Parameters needed for next frame */
- psEnc->sCmn.prevLag = sEncCtrl.pitchL[ psEnc->sCmn.nb_subfr - 1 ];
- psEnc->sCmn.prevSignalType = psEnc->sCmn.indices.signalType;
-
- /****************************************/
- /* Finalize payload */
- /****************************************/
- psEnc->sCmn.first_frame_after_reset = 0;
- /* Payload size */
- *pnBytesOut = silk_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );
-
- RESTORE_STACK;
- return ret;
-}
-
-/* Low-Bitrate Redundancy (LBRR) encoding. Reuse all parameters but encode excitation at lower bitrate */
-static OPUS_INLINE void silk_LBRR_encode_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Pointer to Silk FIX encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O Pointer to Silk FIX encoder control struct */
- const opus_int32 xfw_Q3[], /* I Input signal */
- opus_int condCoding /* I The type of conditional coding used so far for this frame */
-)
-{
- opus_int32 TempGains_Q16[ MAX_NB_SUBFR ];
- SideInfoIndices *psIndices_LBRR = &psEnc->sCmn.indices_LBRR[ psEnc->sCmn.nFramesEncoded ];
- silk_nsq_state sNSQ_LBRR;
-
- /*******************************************/
- /* Control use of inband LBRR */
- /*******************************************/
- if( psEnc->sCmn.LBRR_enabled && psEnc->sCmn.speech_activity_Q8 > SILK_FIX_CONST( LBRR_SPEECH_ACTIVITY_THRES, 8 ) ) {
- psEnc->sCmn.LBRR_flags[ psEnc->sCmn.nFramesEncoded ] = 1;
-
- /* Copy noise shaping quantizer state and quantization indices from regular encoding */
- silk_memcpy( &sNSQ_LBRR, &psEnc->sCmn.sNSQ, sizeof( silk_nsq_state ) );
- silk_memcpy( psIndices_LBRR, &psEnc->sCmn.indices, sizeof( SideInfoIndices ) );
-
- /* Save original gains */
- silk_memcpy( TempGains_Q16, psEncCtrl->Gains_Q16, psEnc->sCmn.nb_subfr * sizeof( opus_int32 ) );
-
- if( psEnc->sCmn.nFramesEncoded == 0 || psEnc->sCmn.LBRR_flags[ psEnc->sCmn.nFramesEncoded - 1 ] == 0 ) {
- /* First frame in packet or previous frame not LBRR coded */
- psEnc->sCmn.LBRRprevLastGainIndex = psEnc->sShape.LastGainIndex;
-
- /* Increase Gains to get target LBRR rate */
- psIndices_LBRR->GainsIndices[ 0 ] = psIndices_LBRR->GainsIndices[ 0 ] + psEnc->sCmn.LBRR_GainIncreases;
- psIndices_LBRR->GainsIndices[ 0 ] = silk_min_int( psIndices_LBRR->GainsIndices[ 0 ], N_LEVELS_QGAIN - 1 );
- }
-
- /* Decode to get gains in sync with decoder */
- /* Overwrite unquantized gains with quantized gains */
- silk_gains_dequant( psEncCtrl->Gains_Q16, psIndices_LBRR->GainsIndices,
- &psEnc->sCmn.LBRRprevLastGainIndex, condCoding == CODE_CONDITIONALLY, psEnc->sCmn.nb_subfr );
-
- /*****************************************/
- /* Noise shaping quantization */
- /*****************************************/
- if( psEnc->sCmn.nStatesDelayedDecision > 1 || psEnc->sCmn.warping_Q16 > 0 ) {
- silk_NSQ_del_dec( &psEnc->sCmn, &sNSQ_LBRR, psIndices_LBRR, xfw_Q3,
- psEnc->sCmn.pulses_LBRR[ psEnc->sCmn.nFramesEncoded ], psEncCtrl->PredCoef_Q12[ 0 ], psEncCtrl->LTPCoef_Q14,
- psEncCtrl->AR2_Q13, psEncCtrl->HarmShapeGain_Q14, psEncCtrl->Tilt_Q14, psEncCtrl->LF_shp_Q14,
- psEncCtrl->Gains_Q16, psEncCtrl->pitchL, psEncCtrl->Lambda_Q10, psEncCtrl->LTP_scale_Q14, psEnc->sCmn.arch );
- } else {
- silk_NSQ( &psEnc->sCmn, &sNSQ_LBRR, psIndices_LBRR, xfw_Q3,
- psEnc->sCmn.pulses_LBRR[ psEnc->sCmn.nFramesEncoded ], psEncCtrl->PredCoef_Q12[ 0 ], psEncCtrl->LTPCoef_Q14,
- psEncCtrl->AR2_Q13, psEncCtrl->HarmShapeGain_Q14, psEncCtrl->Tilt_Q14, psEncCtrl->LF_shp_Q14,
- psEncCtrl->Gains_Q16, psEncCtrl->pitchL, psEncCtrl->Lambda_Q10, psEncCtrl->LTP_scale_Q14, psEnc->sCmn.arch );
- }
-
- /* Restore original gains */
- silk_memcpy( psEncCtrl->Gains_Q16, TempGains_Q16, psEnc->sCmn.nb_subfr * sizeof( opus_int32 ) );
- }
-}
diff --git a/thirdparty/opus/silk/fixed/find_LPC_FIX.c b/thirdparty/opus/silk/fixed/find_LPC_FIX.c
deleted file mode 100644
index e11cdc86e6..0000000000
--- a/thirdparty/opus/silk/fixed/find_LPC_FIX.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-#include "tuning_parameters.h"
-
-/* Finds LPC vector from correlations, and converts to NLSF */
-void silk_find_LPC_FIX(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- opus_int16 NLSF_Q15[], /* O NLSFs */
- const opus_int16 x[], /* I Input signal */
- const opus_int32 minInvGain_Q30 /* I Inverse of max prediction gain */
-)
-{
- opus_int k, subfr_length;
- opus_int32 a_Q16[ MAX_LPC_ORDER ];
- opus_int isInterpLower, shift;
- opus_int32 res_nrg0, res_nrg1;
- opus_int rshift0, rshift1;
-
- /* Used only for LSF interpolation */
- opus_int32 a_tmp_Q16[ MAX_LPC_ORDER ], res_nrg_interp, res_nrg, res_tmp_nrg;
- opus_int res_nrg_interp_Q, res_nrg_Q, res_tmp_nrg_Q;
- opus_int16 a_tmp_Q12[ MAX_LPC_ORDER ];
- opus_int16 NLSF0_Q15[ MAX_LPC_ORDER ];
- SAVE_STACK;
-
- subfr_length = psEncC->subfr_length + psEncC->predictLPCOrder;
-
- /* Default: no interpolation */
- psEncC->indices.NLSFInterpCoef_Q2 = 4;
-
- /* Burg AR analysis for the full frame */
- silk_burg_modified( &res_nrg, &res_nrg_Q, a_Q16, x, minInvGain_Q30, subfr_length, psEncC->nb_subfr, psEncC->predictLPCOrder, psEncC->arch );
-
- if( psEncC->useInterpolatedNLSFs && !psEncC->first_frame_after_reset && psEncC->nb_subfr == MAX_NB_SUBFR ) {
- VARDECL( opus_int16, LPC_res );
-
- /* Optimal solution for last 10 ms */
- silk_burg_modified( &res_tmp_nrg, &res_tmp_nrg_Q, a_tmp_Q16, x + 2 * subfr_length, minInvGain_Q30, subfr_length, 2, psEncC->predictLPCOrder, psEncC->arch );
-
- /* subtract residual energy here, as that's easier than adding it to the */
- /* residual energy of the first 10 ms in each iteration of the search below */
- shift = res_tmp_nrg_Q - res_nrg_Q;
- if( shift >= 0 ) {
- if( shift < 32 ) {
- res_nrg = res_nrg - silk_RSHIFT( res_tmp_nrg, shift );
- }
- } else {
- silk_assert( shift > -32 );
- res_nrg = silk_RSHIFT( res_nrg, -shift ) - res_tmp_nrg;
- res_nrg_Q = res_tmp_nrg_Q;
- }
-
- /* Convert to NLSFs */
- silk_A2NLSF( NLSF_Q15, a_tmp_Q16, psEncC->predictLPCOrder );
-
- ALLOC( LPC_res, 2 * subfr_length, opus_int16 );
-
- /* Search over interpolation indices to find the one with lowest residual energy */
- for( k = 3; k >= 0; k-- ) {
- /* Interpolate NLSFs for first half */
- silk_interpolate( NLSF0_Q15, psEncC->prev_NLSFq_Q15, NLSF_Q15, k, psEncC->predictLPCOrder );
-
- /* Convert to LPC for residual energy evaluation */
- silk_NLSF2A( a_tmp_Q12, NLSF0_Q15, psEncC->predictLPCOrder );
-
- /* Calculate residual energy with NLSF interpolation */
- silk_LPC_analysis_filter( LPC_res, x, a_tmp_Q12, 2 * subfr_length, psEncC->predictLPCOrder, psEncC->arch );
-
- silk_sum_sqr_shift( &res_nrg0, &rshift0, LPC_res + psEncC->predictLPCOrder, subfr_length - psEncC->predictLPCOrder );
- silk_sum_sqr_shift( &res_nrg1, &rshift1, LPC_res + psEncC->predictLPCOrder + subfr_length, subfr_length - psEncC->predictLPCOrder );
-
- /* Add subframe energies from first half frame */
- shift = rshift0 - rshift1;
- if( shift >= 0 ) {
- res_nrg1 = silk_RSHIFT( res_nrg1, shift );
- res_nrg_interp_Q = -rshift0;
- } else {
- res_nrg0 = silk_RSHIFT( res_nrg0, -shift );
- res_nrg_interp_Q = -rshift1;
- }
- res_nrg_interp = silk_ADD32( res_nrg0, res_nrg1 );
-
- /* Compare with first half energy without NLSF interpolation, or best interpolated value so far */
- shift = res_nrg_interp_Q - res_nrg_Q;
- if( shift >= 0 ) {
- if( silk_RSHIFT( res_nrg_interp, shift ) < res_nrg ) {
- isInterpLower = silk_TRUE;
- } else {
- isInterpLower = silk_FALSE;
- }
- } else {
- if( -shift < 32 ) {
- if( res_nrg_interp < silk_RSHIFT( res_nrg, -shift ) ) {
- isInterpLower = silk_TRUE;
- } else {
- isInterpLower = silk_FALSE;
- }
- } else {
- isInterpLower = silk_FALSE;
- }
- }
-
- /* Determine whether current interpolated NLSFs are best so far */
- if( isInterpLower == silk_TRUE ) {
- /* Interpolation has lower residual energy */
- res_nrg = res_nrg_interp;
- res_nrg_Q = res_nrg_interp_Q;
- psEncC->indices.NLSFInterpCoef_Q2 = (opus_int8)k;
- }
- }
- }
-
- if( psEncC->indices.NLSFInterpCoef_Q2 == 4 ) {
- /* NLSF interpolation is currently inactive, calculate NLSFs from full frame AR coefficients */
- silk_A2NLSF( NLSF_Q15, a_Q16, psEncC->predictLPCOrder );
- }
-
- silk_assert( psEncC->indices.NLSFInterpCoef_Q2 == 4 || ( psEncC->useInterpolatedNLSFs && !psEncC->first_frame_after_reset && psEncC->nb_subfr == MAX_NB_SUBFR ) );
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/fixed/find_LTP_FIX.c b/thirdparty/opus/silk/fixed/find_LTP_FIX.c
deleted file mode 100644
index 1314a28137..0000000000
--- a/thirdparty/opus/silk/fixed/find_LTP_FIX.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "tuning_parameters.h"
-
-/* Head room for correlations */
-#define LTP_CORRS_HEAD_ROOM 2
-
-void silk_fit_LTP(
- opus_int32 LTP_coefs_Q16[ LTP_ORDER ],
- opus_int16 LTP_coefs_Q14[ LTP_ORDER ]
-);
-
-void silk_find_LTP_FIX(
- opus_int16 b_Q14[ MAX_NB_SUBFR * LTP_ORDER ], /* O LTP coefs */
- opus_int32 WLTP[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* O Weight for LTP quantization */
- opus_int *LTPredCodGain_Q7, /* O LTP coding gain */
- const opus_int16 r_lpc[], /* I residual signal after LPC signal + state for first 10 ms */
- const opus_int lag[ MAX_NB_SUBFR ], /* I LTP lags */
- const opus_int32 Wght_Q15[ MAX_NB_SUBFR ], /* I weights */
- const opus_int subfr_length, /* I subframe length */
- const opus_int nb_subfr, /* I number of subframes */
- const opus_int mem_offset, /* I number of samples in LTP memory */
- opus_int corr_rshifts[ MAX_NB_SUBFR ], /* O right shifts applied to correlations */
- int arch /* I Run-time architecture */
-)
-{
- opus_int i, k, lshift;
- const opus_int16 *r_ptr, *lag_ptr;
- opus_int16 *b_Q14_ptr;
-
- opus_int32 regu;
- opus_int32 *WLTP_ptr;
- opus_int32 b_Q16[ LTP_ORDER ], delta_b_Q14[ LTP_ORDER ], d_Q14[ MAX_NB_SUBFR ], nrg[ MAX_NB_SUBFR ], g_Q26;
- opus_int32 w[ MAX_NB_SUBFR ], WLTP_max, max_abs_d_Q14, max_w_bits;
-
- opus_int32 temp32, denom32;
- opus_int extra_shifts;
- opus_int rr_shifts, maxRshifts, maxRshifts_wxtra, LZs;
- opus_int32 LPC_res_nrg, LPC_LTP_res_nrg, div_Q16;
- opus_int32 Rr[ LTP_ORDER ], rr[ MAX_NB_SUBFR ];
- opus_int32 wd, m_Q12;
-
- b_Q14_ptr = b_Q14;
- WLTP_ptr = WLTP;
- r_ptr = &r_lpc[ mem_offset ];
- for( k = 0; k < nb_subfr; k++ ) {
- lag_ptr = r_ptr - ( lag[ k ] + LTP_ORDER / 2 );
-
- silk_sum_sqr_shift( &rr[ k ], &rr_shifts, r_ptr, subfr_length ); /* rr[ k ] in Q( -rr_shifts ) */
-
- /* Assure headroom */
- LZs = silk_CLZ32( rr[k] );
- if( LZs < LTP_CORRS_HEAD_ROOM ) {
- rr[ k ] = silk_RSHIFT_ROUND( rr[ k ], LTP_CORRS_HEAD_ROOM - LZs );
- rr_shifts += ( LTP_CORRS_HEAD_ROOM - LZs );
- }
- corr_rshifts[ k ] = rr_shifts;
- silk_corrMatrix_FIX( lag_ptr, subfr_length, LTP_ORDER, LTP_CORRS_HEAD_ROOM, WLTP_ptr, &corr_rshifts[ k ], arch ); /* WLTP_fix_ptr in Q( -corr_rshifts[ k ] ) */
-
- /* The correlation vector always has lower max abs value than rr and/or RR so head room is assured */
- silk_corrVector_FIX( lag_ptr, r_ptr, subfr_length, LTP_ORDER, Rr, corr_rshifts[ k ], arch ); /* Rr_fix_ptr in Q( -corr_rshifts[ k ] ) */
- if( corr_rshifts[ k ] > rr_shifts ) {
- rr[ k ] = silk_RSHIFT( rr[ k ], corr_rshifts[ k ] - rr_shifts ); /* rr[ k ] in Q( -corr_rshifts[ k ] ) */
- }
- silk_assert( rr[ k ] >= 0 );
-
- regu = 1;
- regu = silk_SMLAWB( regu, rr[ k ], SILK_FIX_CONST( LTP_DAMPING/3, 16 ) );
- regu = silk_SMLAWB( regu, matrix_ptr( WLTP_ptr, 0, 0, LTP_ORDER ), SILK_FIX_CONST( LTP_DAMPING/3, 16 ) );
- regu = silk_SMLAWB( regu, matrix_ptr( WLTP_ptr, LTP_ORDER-1, LTP_ORDER-1, LTP_ORDER ), SILK_FIX_CONST( LTP_DAMPING/3, 16 ) );
- silk_regularize_correlations_FIX( WLTP_ptr, &rr[k], regu, LTP_ORDER );
-
- silk_solve_LDL_FIX( WLTP_ptr, LTP_ORDER, Rr, b_Q16 ); /* WLTP_fix_ptr and Rr_fix_ptr both in Q(-corr_rshifts[k]) */
-
- /* Limit and store in Q14 */
- silk_fit_LTP( b_Q16, b_Q14_ptr );
-
- /* Calculate residual energy */
- nrg[ k ] = silk_residual_energy16_covar_FIX( b_Q14_ptr, WLTP_ptr, Rr, rr[ k ], LTP_ORDER, 14 ); /* nrg_fix in Q( -corr_rshifts[ k ] ) */
-
- /* temp = Wght[ k ] / ( nrg[ k ] * Wght[ k ] + 0.01f * subfr_length ); */
- extra_shifts = silk_min_int( corr_rshifts[ k ], LTP_CORRS_HEAD_ROOM );
- denom32 = silk_LSHIFT_SAT32( silk_SMULWB( nrg[ k ], Wght_Q15[ k ] ), 1 + extra_shifts ) + /* Q( -corr_rshifts[ k ] + extra_shifts ) */
- silk_RSHIFT( silk_SMULWB( (opus_int32)subfr_length, 655 ), corr_rshifts[ k ] - extra_shifts ); /* Q( -corr_rshifts[ k ] + extra_shifts ) */
- denom32 = silk_max( denom32, 1 );
- silk_assert( ((opus_int64)Wght_Q15[ k ] << 16 ) < silk_int32_MAX ); /* Wght always < 0.5 in Q0 */
- temp32 = silk_DIV32( silk_LSHIFT( (opus_int32)Wght_Q15[ k ], 16 ), denom32 ); /* Q( 15 + 16 + corr_rshifts[k] - extra_shifts ) */
- temp32 = silk_RSHIFT( temp32, 31 + corr_rshifts[ k ] - extra_shifts - 26 ); /* Q26 */
-
- /* Limit temp such that the below scaling never wraps around */
- WLTP_max = 0;
- for( i = 0; i < LTP_ORDER * LTP_ORDER; i++ ) {
- WLTP_max = silk_max( WLTP_ptr[ i ], WLTP_max );
- }
- lshift = silk_CLZ32( WLTP_max ) - 1 - 3; /* keep 3 bits free for vq_nearest_neighbor_fix */
- silk_assert( 26 - 18 + lshift >= 0 );
- if( 26 - 18 + lshift < 31 ) {
- temp32 = silk_min_32( temp32, silk_LSHIFT( (opus_int32)1, 26 - 18 + lshift ) );
- }
-
- silk_scale_vector32_Q26_lshift_18( WLTP_ptr, temp32, LTP_ORDER * LTP_ORDER ); /* WLTP_ptr in Q( 18 - corr_rshifts[ k ] ) */
-
- w[ k ] = matrix_ptr( WLTP_ptr, LTP_ORDER/2, LTP_ORDER/2, LTP_ORDER ); /* w in Q( 18 - corr_rshifts[ k ] ) */
- silk_assert( w[k] >= 0 );
-
- r_ptr += subfr_length;
- b_Q14_ptr += LTP_ORDER;
- WLTP_ptr += LTP_ORDER * LTP_ORDER;
- }
-
- maxRshifts = 0;
- for( k = 0; k < nb_subfr; k++ ) {
- maxRshifts = silk_max_int( corr_rshifts[ k ], maxRshifts );
- }
-
- /* Compute LTP coding gain */
- if( LTPredCodGain_Q7 != NULL ) {
- LPC_LTP_res_nrg = 0;
- LPC_res_nrg = 0;
- silk_assert( LTP_CORRS_HEAD_ROOM >= 2 ); /* Check that no overflow will happen when adding */
- for( k = 0; k < nb_subfr; k++ ) {
- LPC_res_nrg = silk_ADD32( LPC_res_nrg, silk_RSHIFT( silk_ADD32( silk_SMULWB( rr[ k ], Wght_Q15[ k ] ), 1 ), 1 + ( maxRshifts - corr_rshifts[ k ] ) ) ); /* Q( -maxRshifts ) */
- LPC_LTP_res_nrg = silk_ADD32( LPC_LTP_res_nrg, silk_RSHIFT( silk_ADD32( silk_SMULWB( nrg[ k ], Wght_Q15[ k ] ), 1 ), 1 + ( maxRshifts - corr_rshifts[ k ] ) ) ); /* Q( -maxRshifts ) */
- }
- LPC_LTP_res_nrg = silk_max( LPC_LTP_res_nrg, 1 ); /* avoid division by zero */
-
- div_Q16 = silk_DIV32_varQ( LPC_res_nrg, LPC_LTP_res_nrg, 16 );
- *LTPredCodGain_Q7 = ( opus_int )silk_SMULBB( 3, silk_lin2log( div_Q16 ) - ( 16 << 7 ) );
-
- silk_assert( *LTPredCodGain_Q7 == ( opus_int )silk_SAT16( silk_MUL( 3, silk_lin2log( div_Q16 ) - ( 16 << 7 ) ) ) );
- }
-
- /* smoothing */
- /* d = sum( B, 1 ); */
- b_Q14_ptr = b_Q14;
- for( k = 0; k < nb_subfr; k++ ) {
- d_Q14[ k ] = 0;
- for( i = 0; i < LTP_ORDER; i++ ) {
- d_Q14[ k ] += b_Q14_ptr[ i ];
- }
- b_Q14_ptr += LTP_ORDER;
- }
-
- /* m = ( w * d' ) / ( sum( w ) + 1e-3 ); */
-
- /* Find maximum absolute value of d_Q14 and the bits used by w in Q0 */
- max_abs_d_Q14 = 0;
- max_w_bits = 0;
- for( k = 0; k < nb_subfr; k++ ) {
- max_abs_d_Q14 = silk_max_32( max_abs_d_Q14, silk_abs( d_Q14[ k ] ) );
- /* w[ k ] is in Q( 18 - corr_rshifts[ k ] ) */
- /* Find bits needed in Q( 18 - maxRshifts ) */
- max_w_bits = silk_max_32( max_w_bits, 32 - silk_CLZ32( w[ k ] ) + corr_rshifts[ k ] - maxRshifts );
- }
-
- /* max_abs_d_Q14 = (5 << 15); worst case, i.e. LTP_ORDER * -silk_int16_MIN */
- silk_assert( max_abs_d_Q14 <= ( 5 << 15 ) );
-
- /* How many bits is needed for w*d' in Q( 18 - maxRshifts ) in the worst case, of all d_Q14's being equal to max_abs_d_Q14 */
- extra_shifts = max_w_bits + 32 - silk_CLZ32( max_abs_d_Q14 ) - 14;
-
- /* Subtract what we got available; bits in output var plus maxRshifts */
- extra_shifts -= ( 32 - 1 - 2 + maxRshifts ); /* Keep sign bit free as well as 2 bits for accumulation */
- extra_shifts = silk_max_int( extra_shifts, 0 );
-
- maxRshifts_wxtra = maxRshifts + extra_shifts;
-
- temp32 = silk_RSHIFT( 262, maxRshifts + extra_shifts ) + 1; /* 1e-3f in Q( 18 - (maxRshifts + extra_shifts) ) */
- wd = 0;
- for( k = 0; k < nb_subfr; k++ ) {
- /* w has at least 2 bits of headroom so no overflow should happen */
- temp32 = silk_ADD32( temp32, silk_RSHIFT( w[ k ], maxRshifts_wxtra - corr_rshifts[ k ] ) ); /* Q( 18 - maxRshifts_wxtra ) */
- wd = silk_ADD32( wd, silk_LSHIFT( silk_SMULWW( silk_RSHIFT( w[ k ], maxRshifts_wxtra - corr_rshifts[ k ] ), d_Q14[ k ] ), 2 ) ); /* Q( 18 - maxRshifts_wxtra ) */
- }
- m_Q12 = silk_DIV32_varQ( wd, temp32, 12 );
-
- b_Q14_ptr = b_Q14;
- for( k = 0; k < nb_subfr; k++ ) {
- /* w_fix[ k ] from Q( 18 - corr_rshifts[ k ] ) to Q( 16 ) */
- if( 2 - corr_rshifts[k] > 0 ) {
- temp32 = silk_RSHIFT( w[ k ], 2 - corr_rshifts[ k ] );
- } else {
- temp32 = silk_LSHIFT_SAT32( w[ k ], corr_rshifts[ k ] - 2 );
- }
-
- g_Q26 = silk_MUL(
- silk_DIV32(
- SILK_FIX_CONST( LTP_SMOOTHING, 26 ),
- silk_RSHIFT( SILK_FIX_CONST( LTP_SMOOTHING, 26 ), 10 ) + temp32 ), /* Q10 */
- silk_LSHIFT_SAT32( silk_SUB_SAT32( (opus_int32)m_Q12, silk_RSHIFT( d_Q14[ k ], 2 ) ), 4 ) ); /* Q16 */
-
- temp32 = 0;
- for( i = 0; i < LTP_ORDER; i++ ) {
- delta_b_Q14[ i ] = silk_max_16( b_Q14_ptr[ i ], 1638 ); /* 1638_Q14 = 0.1_Q0 */
- temp32 += delta_b_Q14[ i ]; /* Q14 */
- }
- temp32 = silk_DIV32( g_Q26, temp32 ); /* Q14 -> Q12 */
- for( i = 0; i < LTP_ORDER; i++ ) {
- b_Q14_ptr[ i ] = silk_LIMIT_32( (opus_int32)b_Q14_ptr[ i ] + silk_SMULWB( silk_LSHIFT_SAT32( temp32, 4 ), delta_b_Q14[ i ] ), -16000, 28000 );
- }
- b_Q14_ptr += LTP_ORDER;
- }
-}
-
-void silk_fit_LTP(
- opus_int32 LTP_coefs_Q16[ LTP_ORDER ],
- opus_int16 LTP_coefs_Q14[ LTP_ORDER ]
-)
-{
- opus_int i;
-
- for( i = 0; i < LTP_ORDER; i++ ) {
- LTP_coefs_Q14[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( LTP_coefs_Q16[ i ], 2 ) );
- }
-}
diff --git a/thirdparty/opus/silk/fixed/find_pitch_lags_FIX.c b/thirdparty/opus/silk/fixed/find_pitch_lags_FIX.c
deleted file mode 100644
index b8440a8247..0000000000
--- a/thirdparty/opus/silk/fixed/find_pitch_lags_FIX.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-#include "tuning_parameters.h"
-
-/* Find pitch lags */
-void silk_find_pitch_lags_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */
- opus_int16 res[], /* O residual */
- const opus_int16 x[], /* I Speech signal */
- int arch /* I Run-time architecture */
-)
-{
- opus_int buf_len, i, scale;
- opus_int32 thrhld_Q13, res_nrg;
- const opus_int16 *x_buf, *x_buf_ptr;
- VARDECL( opus_int16, Wsig );
- opus_int16 *Wsig_ptr;
- opus_int32 auto_corr[ MAX_FIND_PITCH_LPC_ORDER + 1 ];
- opus_int16 rc_Q15[ MAX_FIND_PITCH_LPC_ORDER ];
- opus_int32 A_Q24[ MAX_FIND_PITCH_LPC_ORDER ];
- opus_int16 A_Q12[ MAX_FIND_PITCH_LPC_ORDER ];
- SAVE_STACK;
-
- /******************************************/
- /* Set up buffer lengths etc based on Fs */
- /******************************************/
- buf_len = psEnc->sCmn.la_pitch + psEnc->sCmn.frame_length + psEnc->sCmn.ltp_mem_length;
-
- /* Safety check */
- silk_assert( buf_len >= psEnc->sCmn.pitch_LPC_win_length );
-
- x_buf = x - psEnc->sCmn.ltp_mem_length;
-
- /*************************************/
- /* Estimate LPC AR coefficients */
- /*************************************/
-
- /* Calculate windowed signal */
-
- ALLOC( Wsig, psEnc->sCmn.pitch_LPC_win_length, opus_int16 );
-
- /* First LA_LTP samples */
- x_buf_ptr = x_buf + buf_len - psEnc->sCmn.pitch_LPC_win_length;
- Wsig_ptr = Wsig;
- silk_apply_sine_window( Wsig_ptr, x_buf_ptr, 1, psEnc->sCmn.la_pitch );
-
- /* Middle un - windowed samples */
- Wsig_ptr += psEnc->sCmn.la_pitch;
- x_buf_ptr += psEnc->sCmn.la_pitch;
- silk_memcpy( Wsig_ptr, x_buf_ptr, ( psEnc->sCmn.pitch_LPC_win_length - silk_LSHIFT( psEnc->sCmn.la_pitch, 1 ) ) * sizeof( opus_int16 ) );
-
- /* Last LA_LTP samples */
- Wsig_ptr += psEnc->sCmn.pitch_LPC_win_length - silk_LSHIFT( psEnc->sCmn.la_pitch, 1 );
- x_buf_ptr += psEnc->sCmn.pitch_LPC_win_length - silk_LSHIFT( psEnc->sCmn.la_pitch, 1 );
- silk_apply_sine_window( Wsig_ptr, x_buf_ptr, 2, psEnc->sCmn.la_pitch );
-
- /* Calculate autocorrelation sequence */
- silk_autocorr( auto_corr, &scale, Wsig, psEnc->sCmn.pitch_LPC_win_length, psEnc->sCmn.pitchEstimationLPCOrder + 1, arch );
-
- /* Add white noise, as fraction of energy */
- auto_corr[ 0 ] = silk_SMLAWB( auto_corr[ 0 ], auto_corr[ 0 ], SILK_FIX_CONST( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) ) + 1;
-
- /* Calculate the reflection coefficients using schur */
- res_nrg = silk_schur( rc_Q15, auto_corr, psEnc->sCmn.pitchEstimationLPCOrder );
-
- /* Prediction gain */
- psEncCtrl->predGain_Q16 = silk_DIV32_varQ( auto_corr[ 0 ], silk_max_int( res_nrg, 1 ), 16 );
-
- /* Convert reflection coefficients to prediction coefficients */
- silk_k2a( A_Q24, rc_Q15, psEnc->sCmn.pitchEstimationLPCOrder );
-
- /* Convert From 32 bit Q24 to 16 bit Q12 coefs */
- for( i = 0; i < psEnc->sCmn.pitchEstimationLPCOrder; i++ ) {
- A_Q12[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT( A_Q24[ i ], 12 ) );
- }
-
- /* Do BWE */
- silk_bwexpander( A_Q12, psEnc->sCmn.pitchEstimationLPCOrder, SILK_FIX_CONST( FIND_PITCH_BANDWIDTH_EXPANSION, 16 ) );
-
- /*****************************************/
- /* LPC analysis filtering */
- /*****************************************/
- silk_LPC_analysis_filter( res, x_buf, A_Q12, buf_len, psEnc->sCmn.pitchEstimationLPCOrder, psEnc->sCmn.arch );
-
- if( psEnc->sCmn.indices.signalType != TYPE_NO_VOICE_ACTIVITY && psEnc->sCmn.first_frame_after_reset == 0 ) {
- /* Threshold for pitch estimator */
- thrhld_Q13 = SILK_FIX_CONST( 0.6, 13 );
- thrhld_Q13 = silk_SMLABB( thrhld_Q13, SILK_FIX_CONST( -0.004, 13 ), psEnc->sCmn.pitchEstimationLPCOrder );
- thrhld_Q13 = silk_SMLAWB( thrhld_Q13, SILK_FIX_CONST( -0.1, 21 ), psEnc->sCmn.speech_activity_Q8 );
- thrhld_Q13 = silk_SMLABB( thrhld_Q13, SILK_FIX_CONST( -0.15, 13 ), silk_RSHIFT( psEnc->sCmn.prevSignalType, 1 ) );
- thrhld_Q13 = silk_SMLAWB( thrhld_Q13, SILK_FIX_CONST( -0.1, 14 ), psEnc->sCmn.input_tilt_Q15 );
- thrhld_Q13 = silk_SAT16( thrhld_Q13 );
-
- /*****************************************/
- /* Call pitch estimator */
- /*****************************************/
- if( silk_pitch_analysis_core( res, psEncCtrl->pitchL, &psEnc->sCmn.indices.lagIndex, &psEnc->sCmn.indices.contourIndex,
- &psEnc->LTPCorr_Q15, psEnc->sCmn.prevLag, psEnc->sCmn.pitchEstimationThreshold_Q16,
- (opus_int)thrhld_Q13, psEnc->sCmn.fs_kHz, psEnc->sCmn.pitchEstimationComplexity, psEnc->sCmn.nb_subfr,
- psEnc->sCmn.arch) == 0 )
- {
- psEnc->sCmn.indices.signalType = TYPE_VOICED;
- } else {
- psEnc->sCmn.indices.signalType = TYPE_UNVOICED;
- }
- } else {
- silk_memset( psEncCtrl->pitchL, 0, sizeof( psEncCtrl->pitchL ) );
- psEnc->sCmn.indices.lagIndex = 0;
- psEnc->sCmn.indices.contourIndex = 0;
- psEnc->LTPCorr_Q15 = 0;
- }
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/fixed/find_pred_coefs_FIX.c b/thirdparty/opus/silk/fixed/find_pred_coefs_FIX.c
deleted file mode 100644
index d308e9cf5f..0000000000
--- a/thirdparty/opus/silk/fixed/find_pred_coefs_FIX.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-
-void silk_find_pred_coefs_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */
- const opus_int16 res_pitch[], /* I Residual from pitch analysis */
- const opus_int16 x[], /* I Speech signal */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- opus_int i;
- opus_int32 invGains_Q16[ MAX_NB_SUBFR ], local_gains[ MAX_NB_SUBFR ], Wght_Q15[ MAX_NB_SUBFR ];
- opus_int16 NLSF_Q15[ MAX_LPC_ORDER ];
- const opus_int16 *x_ptr;
- opus_int16 *x_pre_ptr;
- VARDECL( opus_int16, LPC_in_pre );
- opus_int32 tmp, min_gain_Q16, minInvGain_Q30;
- opus_int LTP_corrs_rshift[ MAX_NB_SUBFR ];
- SAVE_STACK;
-
- /* weighting for weighted least squares */
- min_gain_Q16 = silk_int32_MAX >> 6;
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- min_gain_Q16 = silk_min( min_gain_Q16, psEncCtrl->Gains_Q16[ i ] );
- }
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- /* Divide to Q16 */
- silk_assert( psEncCtrl->Gains_Q16[ i ] > 0 );
- /* Invert and normalize gains, and ensure that maximum invGains_Q16 is within range of a 16 bit int */
- invGains_Q16[ i ] = silk_DIV32_varQ( min_gain_Q16, psEncCtrl->Gains_Q16[ i ], 16 - 2 );
-
- /* Ensure Wght_Q15 a minimum value 1 */
- invGains_Q16[ i ] = silk_max( invGains_Q16[ i ], 363 );
-
- /* Square the inverted gains */
- silk_assert( invGains_Q16[ i ] == silk_SAT16( invGains_Q16[ i ] ) );
- tmp = silk_SMULWB( invGains_Q16[ i ], invGains_Q16[ i ] );
- Wght_Q15[ i ] = silk_RSHIFT( tmp, 1 );
-
- /* Invert the inverted and normalized gains */
- local_gains[ i ] = silk_DIV32( ( (opus_int32)1 << 16 ), invGains_Q16[ i ] );
- }
-
- ALLOC( LPC_in_pre,
- psEnc->sCmn.nb_subfr * psEnc->sCmn.predictLPCOrder
- + psEnc->sCmn.frame_length, opus_int16 );
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- VARDECL( opus_int32, WLTP );
-
- /**********/
- /* VOICED */
- /**********/
- silk_assert( psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder >= psEncCtrl->pitchL[ 0 ] + LTP_ORDER / 2 );
-
- ALLOC( WLTP, psEnc->sCmn.nb_subfr * LTP_ORDER * LTP_ORDER, opus_int32 );
-
- /* LTP analysis */
- silk_find_LTP_FIX( psEncCtrl->LTPCoef_Q14, WLTP, &psEncCtrl->LTPredCodGain_Q7,
- res_pitch, psEncCtrl->pitchL, Wght_Q15, psEnc->sCmn.subfr_length,
- psEnc->sCmn.nb_subfr, psEnc->sCmn.ltp_mem_length, LTP_corrs_rshift, psEnc->sCmn.arch );
-
- /* Quantize LTP gain parameters */
- silk_quant_LTP_gains( psEncCtrl->LTPCoef_Q14, psEnc->sCmn.indices.LTPIndex, &psEnc->sCmn.indices.PERIndex,
- &psEnc->sCmn.sum_log_gain_Q7, WLTP, psEnc->sCmn.mu_LTP_Q9, psEnc->sCmn.LTPQuantLowComplexity, psEnc->sCmn.nb_subfr,
- psEnc->sCmn.arch);
-
- /* Control LTP scaling */
- silk_LTP_scale_ctrl_FIX( psEnc, psEncCtrl, condCoding );
-
- /* Create LTP residual */
- silk_LTP_analysis_filter_FIX( LPC_in_pre, x - psEnc->sCmn.predictLPCOrder, psEncCtrl->LTPCoef_Q14,
- psEncCtrl->pitchL, invGains_Q16, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.predictLPCOrder );
-
- } else {
- /************/
- /* UNVOICED */
- /************/
- /* Create signal with prepended subframes, scaled by inverse gains */
- x_ptr = x - psEnc->sCmn.predictLPCOrder;
- x_pre_ptr = LPC_in_pre;
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- silk_scale_copy_vector16( x_pre_ptr, x_ptr, invGains_Q16[ i ],
- psEnc->sCmn.subfr_length + psEnc->sCmn.predictLPCOrder );
- x_pre_ptr += psEnc->sCmn.subfr_length + psEnc->sCmn.predictLPCOrder;
- x_ptr += psEnc->sCmn.subfr_length;
- }
-
- silk_memset( psEncCtrl->LTPCoef_Q14, 0, psEnc->sCmn.nb_subfr * LTP_ORDER * sizeof( opus_int16 ) );
- psEncCtrl->LTPredCodGain_Q7 = 0;
- psEnc->sCmn.sum_log_gain_Q7 = 0;
- }
-
- /* Limit on total predictive coding gain */
- if( psEnc->sCmn.first_frame_after_reset ) {
- minInvGain_Q30 = SILK_FIX_CONST( 1.0f / MAX_PREDICTION_POWER_GAIN_AFTER_RESET, 30 );
- } else {
- minInvGain_Q30 = silk_log2lin( silk_SMLAWB( 16 << 7, (opus_int32)psEncCtrl->LTPredCodGain_Q7, SILK_FIX_CONST( 1.0 / 3, 16 ) ) ); /* Q16 */
- minInvGain_Q30 = silk_DIV32_varQ( minInvGain_Q30,
- silk_SMULWW( SILK_FIX_CONST( MAX_PREDICTION_POWER_GAIN, 0 ),
- silk_SMLAWB( SILK_FIX_CONST( 0.25, 18 ), SILK_FIX_CONST( 0.75, 18 ), psEncCtrl->coding_quality_Q14 ) ), 14 );
- }
-
- /* LPC_in_pre contains the LTP-filtered input for voiced, and the unfiltered input for unvoiced */
- silk_find_LPC_FIX( &psEnc->sCmn, NLSF_Q15, LPC_in_pre, minInvGain_Q30 );
-
- /* Quantize LSFs */
- silk_process_NLSFs( &psEnc->sCmn, psEncCtrl->PredCoef_Q12, NLSF_Q15, psEnc->sCmn.prev_NLSFq_Q15 );
-
- /* Calculate residual energy using quantized LPC coefficients */
- silk_residual_energy_FIX( psEncCtrl->ResNrg, psEncCtrl->ResNrgQ, LPC_in_pre, psEncCtrl->PredCoef_Q12, local_gains,
- psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.predictLPCOrder, psEnc->sCmn.arch );
-
- /* Copy to prediction struct for use in next frame for interpolation */
- silk_memcpy( psEnc->sCmn.prev_NLSFq_Q15, NLSF_Q15, sizeof( psEnc->sCmn.prev_NLSFq_Q15 ) );
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/fixed/k2a_FIX.c b/thirdparty/opus/silk/fixed/k2a_FIX.c
deleted file mode 100644
index 5fee599bcb..0000000000
--- a/thirdparty/opus/silk/fixed/k2a_FIX.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Step up function, converts reflection coefficients to prediction coefficients */
-void silk_k2a(
- opus_int32 *A_Q24, /* O Prediction coefficients [order] Q24 */
- const opus_int16 *rc_Q15, /* I Reflection coefficients [order] Q15 */
- const opus_int32 order /* I Prediction order */
-)
-{
- opus_int k, n;
- opus_int32 Atmp[ SILK_MAX_ORDER_LPC ];
-
- for( k = 0; k < order; k++ ) {
- for( n = 0; n < k; n++ ) {
- Atmp[ n ] = A_Q24[ n ];
- }
- for( n = 0; n < k; n++ ) {
- A_Q24[ n ] = silk_SMLAWB( A_Q24[ n ], silk_LSHIFT( Atmp[ k - n - 1 ], 1 ), rc_Q15[ k ] );
- }
- A_Q24[ k ] = -silk_LSHIFT( (opus_int32)rc_Q15[ k ], 9 );
- }
-}
diff --git a/thirdparty/opus/silk/fixed/k2a_Q16_FIX.c b/thirdparty/opus/silk/fixed/k2a_Q16_FIX.c
deleted file mode 100644
index 3b03987544..0000000000
--- a/thirdparty/opus/silk/fixed/k2a_Q16_FIX.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Step up function, converts reflection coefficients to prediction coefficients */
-void silk_k2a_Q16(
- opus_int32 *A_Q24, /* O Prediction coefficients [order] Q24 */
- const opus_int32 *rc_Q16, /* I Reflection coefficients [order] Q16 */
- const opus_int32 order /* I Prediction order */
-)
-{
- opus_int k, n;
- opus_int32 Atmp[ SILK_MAX_ORDER_LPC ];
-
- for( k = 0; k < order; k++ ) {
- for( n = 0; n < k; n++ ) {
- Atmp[ n ] = A_Q24[ n ];
- }
- for( n = 0; n < k; n++ ) {
- A_Q24[ n ] = silk_SMLAWW( A_Q24[ n ], Atmp[ k - n - 1 ], rc_Q16[ k ] );
- }
- A_Q24[ k ] = -silk_LSHIFT( rc_Q16[ k ], 8 );
- }
-}
diff --git a/thirdparty/opus/silk/fixed/main_FIX.h b/thirdparty/opus/silk/fixed/main_FIX.h
deleted file mode 100644
index 375b5eb32e..0000000000
--- a/thirdparty/opus/silk/fixed/main_FIX.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_MAIN_FIX_H
-#define SILK_MAIN_FIX_H
-
-#include "SigProc_FIX.h"
-#include "structs_FIX.h"
-#include "control.h"
-#include "main.h"
-#include "PLC.h"
-#include "debug.h"
-#include "entenc.h"
-
-#ifndef FORCE_CPP_BUILD
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-#endif
-
-#define silk_encoder_state_Fxx silk_encoder_state_FIX
-#define silk_encode_do_VAD_Fxx silk_encode_do_VAD_FIX
-#define silk_encode_frame_Fxx silk_encode_frame_FIX
-
-/*********************/
-/* Encoder Functions */
-/*********************/
-
-/* High-pass filter with cutoff frequency adaptation based on pitch lag statistics */
-void silk_HP_variable_cutoff(
- silk_encoder_state_Fxx state_Fxx[] /* I/O Encoder states */
-);
-
-/* Encoder main function */
-void silk_encode_do_VAD_FIX(
- silk_encoder_state_FIX *psEnc /* I/O Pointer to Silk FIX encoder state */
-);
-
-/* Encoder main function */
-opus_int silk_encode_frame_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Pointer to Silk FIX encoder state */
- opus_int32 *pnBytesOut, /* O Pointer to number of payload bytes; */
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- opus_int condCoding, /* I The type of conditional coding to use */
- opus_int maxBits, /* I If > 0: maximum number of output bits */
- opus_int useCBR /* I Flag to force constant-bitrate operation */
-);
-
-/* Initializes the Silk encoder state */
-opus_int silk_init_encoder(
- silk_encoder_state_Fxx *psEnc, /* I/O Pointer to Silk FIX encoder state */
- int arch /* I Run-time architecture */
-);
-
-/* Control the Silk encoder */
-opus_int silk_control_encoder(
- silk_encoder_state_Fxx *psEnc, /* I/O Pointer to Silk encoder state */
- silk_EncControlStruct *encControl, /* I Control structure */
- const opus_int32 TargetRate_bps, /* I Target max bitrate (bps) */
- const opus_int allow_bw_switch, /* I Flag to allow switching audio bandwidth */
- const opus_int channelNb, /* I Channel number */
- const opus_int force_fs_kHz
-);
-
-/****************/
-/* Prefiltering */
-/****************/
-void silk_prefilter_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Encoder state */
- const silk_encoder_control_FIX *psEncCtrl, /* I Encoder control */
- opus_int32 xw_Q10[], /* O Weighted signal */
- const opus_int16 x[] /* I Speech signal */
-);
-
-void silk_warped_LPC_analysis_filter_FIX_c(
- opus_int32 state[], /* I/O State [order + 1] */
- opus_int32 res_Q2[], /* O Residual signal [length] */
- const opus_int16 coef_Q13[], /* I Coefficients [order] */
- const opus_int16 input[], /* I Input signal [length] */
- const opus_int16 lambda_Q16, /* I Warping factor */
- const opus_int length, /* I Length of input signal */
- const opus_int order /* I Filter order (even) */
-);
-
-
-/**************************/
-/* Noise shaping analysis */
-/**************************/
-/* Compute noise shaping coefficients and initial gain values */
-void silk_noise_shape_analysis_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Encoder state FIX */
- silk_encoder_control_FIX *psEncCtrl, /* I/O Encoder control FIX */
- const opus_int16 *pitch_res, /* I LPC residual from pitch analysis */
- const opus_int16 *x, /* I Input signal [ frame_length + la_shape ] */
- int arch /* I Run-time architecture */
-);
-
-/* Autocorrelations for a warped frequency axis */
-void silk_warped_autocorrelation_FIX(
- opus_int32 *corr, /* O Result [order + 1] */
- opus_int *scale, /* O Scaling of the correlation vector */
- const opus_int16 *input, /* I Input data to correlate */
- const opus_int warping_Q16, /* I Warping coefficient */
- const opus_int length, /* I Length of input */
- const opus_int order /* I Correlation order (even) */
-);
-
-/* Calculation of LTP state scaling */
-void silk_LTP_scale_ctrl_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-/**********************************************/
-/* Prediction Analysis */
-/**********************************************/
-/* Find pitch lags */
-void silk_find_pitch_lags_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */
- opus_int16 res[], /* O residual */
- const opus_int16 x[], /* I Speech signal */
- int arch /* I Run-time architecture */
-);
-
-/* Find LPC and LTP coefficients */
-void silk_find_pred_coefs_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */
- const opus_int16 res_pitch[], /* I Residual from pitch analysis */
- const opus_int16 x[], /* I Speech signal */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-/* LPC analysis */
-void silk_find_LPC_FIX(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- opus_int16 NLSF_Q15[], /* O NLSFs */
- const opus_int16 x[], /* I Input signal */
- const opus_int32 minInvGain_Q30 /* I Inverse of max prediction gain */
-);
-
-/* LTP analysis */
-void silk_find_LTP_FIX(
- opus_int16 b_Q14[ MAX_NB_SUBFR * LTP_ORDER ], /* O LTP coefs */
- opus_int32 WLTP[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* O Weight for LTP quantization */
- opus_int *LTPredCodGain_Q7, /* O LTP coding gain */
- const opus_int16 r_lpc[], /* I residual signal after LPC signal + state for first 10 ms */
- const opus_int lag[ MAX_NB_SUBFR ], /* I LTP lags */
- const opus_int32 Wght_Q15[ MAX_NB_SUBFR ], /* I weights */
- const opus_int subfr_length, /* I subframe length */
- const opus_int nb_subfr, /* I number of subframes */
- const opus_int mem_offset, /* I number of samples in LTP memory */
- opus_int corr_rshifts[ MAX_NB_SUBFR ], /* O right shifts applied to correlations */
- int arch /* I Run-time architecture */
-);
-
-void silk_LTP_analysis_filter_FIX(
- opus_int16 *LTP_res, /* O LTP residual signal of length MAX_NB_SUBFR * ( pre_length + subfr_length ) */
- const opus_int16 *x, /* I Pointer to input signal with at least max( pitchL ) preceding samples */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ],/* I LTP_ORDER LTP coefficients for each MAX_NB_SUBFR subframe */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag, one for each subframe */
- const opus_int32 invGains_Q16[ MAX_NB_SUBFR ], /* I Inverse quantization gains, one for each subframe */
- const opus_int subfr_length, /* I Length of each subframe */
- const opus_int nb_subfr, /* I Number of subframes */
- const opus_int pre_length /* I Length of the preceding samples starting at &x[0] for each subframe */
-);
-
-/* Calculates residual energies of input subframes where all subframes have LPC_order */
-/* of preceding samples */
-void silk_residual_energy_FIX(
- opus_int32 nrgs[ MAX_NB_SUBFR ], /* O Residual energy per subframe */
- opus_int nrgsQ[ MAX_NB_SUBFR ], /* O Q value per subframe */
- const opus_int16 x[], /* I Input signal */
- opus_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ], /* I AR coefs for each frame half */
- const opus_int32 gains[ MAX_NB_SUBFR ], /* I Quantization gains */
- const opus_int subfr_length, /* I Subframe length */
- const opus_int nb_subfr, /* I Number of subframes */
- const opus_int LPC_order, /* I LPC order */
- int arch /* I Run-time architecture */
-);
-
-/* Residual energy: nrg = wxx - 2 * wXx * c + c' * wXX * c */
-opus_int32 silk_residual_energy16_covar_FIX(
- const opus_int16 *c, /* I Prediction vector */
- const opus_int32 *wXX, /* I Correlation matrix */
- const opus_int32 *wXx, /* I Correlation vector */
- opus_int32 wxx, /* I Signal energy */
- opus_int D, /* I Dimension */
- opus_int cQ /* I Q value for c vector 0 - 15 */
-);
-
-/* Processing of gains */
-void silk_process_gains_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O Encoder control */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-/******************/
-/* Linear Algebra */
-/******************/
-/* Calculates correlation matrix X'*X */
-void silk_corrMatrix_FIX(
- const opus_int16 *x, /* I x vector [L + order - 1] used to form data matrix X */
- const opus_int L, /* I Length of vectors */
- const opus_int order, /* I Max lag for correlation */
- const opus_int head_room, /* I Desired headroom */
- opus_int32 *XX, /* O Pointer to X'*X correlation matrix [ order x order ] */
- opus_int *rshifts, /* I/O Right shifts of correlations */
- int arch /* I Run-time architecture */
-);
-
-/* Calculates correlation vector X'*t */
-void silk_corrVector_FIX(
- const opus_int16 *x, /* I x vector [L + order - 1] used to form data matrix X */
- const opus_int16 *t, /* I Target vector [L] */
- const opus_int L, /* I Length of vectors */
- const opus_int order, /* I Max lag for correlation */
- opus_int32 *Xt, /* O Pointer to X'*t correlation vector [order] */
- const opus_int rshifts, /* I Right shifts of correlations */
- int arch /* I Run-time architecture */
-);
-
-/* Add noise to matrix diagonal */
-void silk_regularize_correlations_FIX(
- opus_int32 *XX, /* I/O Correlation matrices */
- opus_int32 *xx, /* I/O Correlation values */
- opus_int32 noise, /* I Noise to add */
- opus_int D /* I Dimension of XX */
-);
-
-/* Solves Ax = b, assuming A is symmetric */
-void silk_solve_LDL_FIX(
- opus_int32 *A, /* I Pointer to symetric square matrix A */
- opus_int M, /* I Size of matrix */
- const opus_int32 *b, /* I Pointer to b vector */
- opus_int32 *x_Q16 /* O Pointer to x solution vector */
-);
-
-#ifndef FORCE_CPP_BUILD
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* FORCE_CPP_BUILD */
-#endif /* SILK_MAIN_FIX_H */
diff --git a/thirdparty/opus/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h b/thirdparty/opus/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h
deleted file mode 100644
index c30481e437..0000000000
--- a/thirdparty/opus/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h
+++ /dev/null
@@ -1,336 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-
-/**************************************************************/
-/* Compute noise shaping coefficients and initial gain values */
-/**************************************************************/
-#define OVERRIDE_silk_noise_shape_analysis_FIX
-
-void silk_noise_shape_analysis_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Encoder state FIX */
- silk_encoder_control_FIX *psEncCtrl, /* I/O Encoder control FIX */
- const opus_int16 *pitch_res, /* I LPC residual from pitch analysis */
- const opus_int16 *x, /* I Input signal [ frame_length + la_shape ] */
- int arch /* I Run-time architecture */
-)
-{
- silk_shape_state_FIX *psShapeSt = &psEnc->sShape;
- opus_int k, i, nSamples, Qnrg, b_Q14, warping_Q16, scale = 0;
- opus_int32 SNR_adj_dB_Q7, HarmBoost_Q16, HarmShapeGain_Q16, Tilt_Q16, tmp32;
- opus_int32 nrg, pre_nrg_Q30, log_energy_Q7, log_energy_prev_Q7, energy_variation_Q7;
- opus_int32 delta_Q16, BWExp1_Q16, BWExp2_Q16, gain_mult_Q16, gain_add_Q16, strength_Q16, b_Q8;
- opus_int32 auto_corr[ MAX_SHAPE_LPC_ORDER + 1 ];
- opus_int32 refl_coef_Q16[ MAX_SHAPE_LPC_ORDER ];
- opus_int32 AR1_Q24[ MAX_SHAPE_LPC_ORDER ];
- opus_int32 AR2_Q24[ MAX_SHAPE_LPC_ORDER ];
- VARDECL( opus_int16, x_windowed );
- const opus_int16 *x_ptr, *pitch_res_ptr;
- SAVE_STACK;
-
- /* Point to start of first LPC analysis block */
- x_ptr = x - psEnc->sCmn.la_shape;
-
- /****************/
- /* GAIN CONTROL */
- /****************/
- SNR_adj_dB_Q7 = psEnc->sCmn.SNR_dB_Q7;
-
- /* Input quality is the average of the quality in the lowest two VAD bands */
- psEncCtrl->input_quality_Q14 = ( opus_int )silk_RSHIFT( (opus_int32)psEnc->sCmn.input_quality_bands_Q15[ 0 ]
- + psEnc->sCmn.input_quality_bands_Q15[ 1 ], 2 );
-
- /* Coding quality level, between 0.0_Q0 and 1.0_Q0, but in Q14 */
- psEncCtrl->coding_quality_Q14 = silk_RSHIFT( silk_sigm_Q15( silk_RSHIFT_ROUND( SNR_adj_dB_Q7 -
- SILK_FIX_CONST( 20.0, 7 ), 4 ) ), 1 );
-
- /* Reduce coding SNR during low speech activity */
- if( psEnc->sCmn.useCBR == 0 ) {
- b_Q8 = SILK_FIX_CONST( 1.0, 8 ) - psEnc->sCmn.speech_activity_Q8;
- b_Q8 = silk_SMULWB( silk_LSHIFT( b_Q8, 8 ), b_Q8 );
- SNR_adj_dB_Q7 = silk_SMLAWB( SNR_adj_dB_Q7,
- silk_SMULBB( SILK_FIX_CONST( -BG_SNR_DECR_dB, 7 ) >> ( 4 + 1 ), b_Q8 ), /* Q11*/
- silk_SMULWB( SILK_FIX_CONST( 1.0, 14 ) + psEncCtrl->input_quality_Q14, psEncCtrl->coding_quality_Q14 ) ); /* Q12*/
- }
-
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Reduce gains for periodic signals */
- SNR_adj_dB_Q7 = silk_SMLAWB( SNR_adj_dB_Q7, SILK_FIX_CONST( HARM_SNR_INCR_dB, 8 ), psEnc->LTPCorr_Q15 );
- } else {
- /* For unvoiced signals and low-quality input, adjust the quality slower than SNR_dB setting */
- SNR_adj_dB_Q7 = silk_SMLAWB( SNR_adj_dB_Q7,
- silk_SMLAWB( SILK_FIX_CONST( 6.0, 9 ), -SILK_FIX_CONST( 0.4, 18 ), psEnc->sCmn.SNR_dB_Q7 ),
- SILK_FIX_CONST( 1.0, 14 ) - psEncCtrl->input_quality_Q14 );
- }
-
- /*************************/
- /* SPARSENESS PROCESSING */
- /*************************/
- /* Set quantizer offset */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Initially set to 0; may be overruled in process_gains(..) */
- psEnc->sCmn.indices.quantOffsetType = 0;
- psEncCtrl->sparseness_Q8 = 0;
- } else {
- /* Sparseness measure, based on relative fluctuations of energy per 2 milliseconds */
- nSamples = silk_LSHIFT( psEnc->sCmn.fs_kHz, 1 );
- energy_variation_Q7 = 0;
- log_energy_prev_Q7 = 0;
- pitch_res_ptr = pitch_res;
- for( k = 0; k < silk_SMULBB( SUB_FRAME_LENGTH_MS, psEnc->sCmn.nb_subfr ) / 2; k++ ) {
- silk_sum_sqr_shift( &nrg, &scale, pitch_res_ptr, nSamples );
- nrg += silk_RSHIFT( nSamples, scale ); /* Q(-scale)*/
-
- log_energy_Q7 = silk_lin2log( nrg );
- if( k > 0 ) {
- energy_variation_Q7 += silk_abs( log_energy_Q7 - log_energy_prev_Q7 );
- }
- log_energy_prev_Q7 = log_energy_Q7;
- pitch_res_ptr += nSamples;
- }
-
- psEncCtrl->sparseness_Q8 = silk_RSHIFT( silk_sigm_Q15( silk_SMULWB( energy_variation_Q7 -
- SILK_FIX_CONST( 5.0, 7 ), SILK_FIX_CONST( 0.1, 16 ) ) ), 7 );
-
- /* Set quantization offset depending on sparseness measure */
- if( psEncCtrl->sparseness_Q8 > SILK_FIX_CONST( SPARSENESS_THRESHOLD_QNT_OFFSET, 8 ) ) {
- psEnc->sCmn.indices.quantOffsetType = 0;
- } else {
- psEnc->sCmn.indices.quantOffsetType = 1;
- }
-
- /* Increase coding SNR for sparse signals */
- SNR_adj_dB_Q7 = silk_SMLAWB( SNR_adj_dB_Q7, SILK_FIX_CONST( SPARSE_SNR_INCR_dB, 15 ), psEncCtrl->sparseness_Q8 - SILK_FIX_CONST( 0.5, 8 ) );
- }
-
- /*******************************/
- /* Control bandwidth expansion */
- /*******************************/
- /* More BWE for signals with high prediction gain */
- strength_Q16 = silk_SMULWB( psEncCtrl->predGain_Q16, SILK_FIX_CONST( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) );
- BWExp1_Q16 = BWExp2_Q16 = silk_DIV32_varQ( SILK_FIX_CONST( BANDWIDTH_EXPANSION, 16 ),
- silk_SMLAWW( SILK_FIX_CONST( 1.0, 16 ), strength_Q16, strength_Q16 ), 16 );
- delta_Q16 = silk_SMULWB( SILK_FIX_CONST( 1.0, 16 ) - silk_SMULBB( 3, psEncCtrl->coding_quality_Q14 ),
- SILK_FIX_CONST( LOW_RATE_BANDWIDTH_EXPANSION_DELTA, 16 ) );
- BWExp1_Q16 = silk_SUB32( BWExp1_Q16, delta_Q16 );
- BWExp2_Q16 = silk_ADD32( BWExp2_Q16, delta_Q16 );
- /* BWExp1 will be applied after BWExp2, so make it relative */
- BWExp1_Q16 = silk_DIV32_16( silk_LSHIFT( BWExp1_Q16, 14 ), silk_RSHIFT( BWExp2_Q16, 2 ) );
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Slightly more warping in analysis will move quantization noise up in frequency, where it's better masked */
- warping_Q16 = silk_SMLAWB( psEnc->sCmn.warping_Q16, (opus_int32)psEncCtrl->coding_quality_Q14, SILK_FIX_CONST( 0.01, 18 ) );
- } else {
- warping_Q16 = 0;
- }
-
- /********************************************/
- /* Compute noise shaping AR coefs and gains */
- /********************************************/
- ALLOC( x_windowed, psEnc->sCmn.shapeWinLength, opus_int16 );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- /* Apply window: sine slope followed by flat part followed by cosine slope */
- opus_int shift, slope_part, flat_part;
- flat_part = psEnc->sCmn.fs_kHz * 3;
- slope_part = silk_RSHIFT( psEnc->sCmn.shapeWinLength - flat_part, 1 );
-
- silk_apply_sine_window( x_windowed, x_ptr, 1, slope_part );
- shift = slope_part;
- silk_memcpy( x_windowed + shift, x_ptr + shift, flat_part * sizeof(opus_int16) );
- shift += flat_part;
- silk_apply_sine_window( x_windowed + shift, x_ptr + shift, 2, slope_part );
-
- /* Update pointer: next LPC analysis block */
- x_ptr += psEnc->sCmn.subfr_length;
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Calculate warped auto correlation */
- silk_warped_autocorrelation_FIX( auto_corr, &scale, x_windowed, warping_Q16, psEnc->sCmn.shapeWinLength, psEnc->sCmn.shapingLPCOrder );
- } else {
- /* Calculate regular auto correlation */
- silk_autocorr( auto_corr, &scale, x_windowed, psEnc->sCmn.shapeWinLength, psEnc->sCmn.shapingLPCOrder + 1, arch );
- }
-
- /* Add white noise, as a fraction of energy */
- auto_corr[0] = silk_ADD32( auto_corr[0], silk_max_32( silk_SMULWB( silk_RSHIFT( auto_corr[ 0 ], 4 ),
- SILK_FIX_CONST( SHAPE_WHITE_NOISE_FRACTION, 20 ) ), 1 ) );
-
- /* Calculate the reflection coefficients using schur */
- nrg = silk_schur64( refl_coef_Q16, auto_corr, psEnc->sCmn.shapingLPCOrder );
- silk_assert( nrg >= 0 );
-
- /* Convert reflection coefficients to prediction coefficients */
- silk_k2a_Q16( AR2_Q24, refl_coef_Q16, psEnc->sCmn.shapingLPCOrder );
-
- Qnrg = -scale; /* range: -12...30*/
- silk_assert( Qnrg >= -12 );
- silk_assert( Qnrg <= 30 );
-
- /* Make sure that Qnrg is an even number */
- if( Qnrg & 1 ) {
- Qnrg -= 1;
- nrg >>= 1;
- }
-
- tmp32 = silk_SQRT_APPROX( nrg );
- Qnrg >>= 1; /* range: -6...15*/
-
- psEncCtrl->Gains_Q16[ k ] = (silk_LSHIFT32( silk_LIMIT( (tmp32), silk_RSHIFT32( silk_int32_MIN, (16 - Qnrg) ), \
- silk_RSHIFT32( silk_int32_MAX, (16 - Qnrg) ) ), (16 - Qnrg) ));
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Adjust gain for warping */
- gain_mult_Q16 = warped_gain( AR2_Q24, warping_Q16, psEnc->sCmn.shapingLPCOrder );
- silk_assert( psEncCtrl->Gains_Q16[ k ] >= 0 );
- if ( silk_SMULWW( silk_RSHIFT_ROUND( psEncCtrl->Gains_Q16[ k ], 1 ), gain_mult_Q16 ) >= ( silk_int32_MAX >> 1 ) ) {
- psEncCtrl->Gains_Q16[ k ] = silk_int32_MAX;
- } else {
- psEncCtrl->Gains_Q16[ k ] = silk_SMULWW( psEncCtrl->Gains_Q16[ k ], gain_mult_Q16 );
- }
- }
-
- /* Bandwidth expansion for synthesis filter shaping */
- silk_bwexpander_32( AR2_Q24, psEnc->sCmn.shapingLPCOrder, BWExp2_Q16 );
-
- /* Compute noise shaping filter coefficients */
- silk_memcpy( AR1_Q24, AR2_Q24, psEnc->sCmn.shapingLPCOrder * sizeof( opus_int32 ) );
-
- /* Bandwidth expansion for analysis filter shaping */
- silk_assert( BWExp1_Q16 <= SILK_FIX_CONST( 1.0, 16 ) );
- silk_bwexpander_32( AR1_Q24, psEnc->sCmn.shapingLPCOrder, BWExp1_Q16 );
-
- /* Ratio of prediction gains, in energy domain */
- pre_nrg_Q30 = silk_LPC_inverse_pred_gain_Q24( AR2_Q24, psEnc->sCmn.shapingLPCOrder );
- nrg = silk_LPC_inverse_pred_gain_Q24( AR1_Q24, psEnc->sCmn.shapingLPCOrder );
-
- /*psEncCtrl->GainsPre[ k ] = 1.0f - 0.7f * ( 1.0f - pre_nrg / nrg ) = 0.3f + 0.7f * pre_nrg / nrg;*/
- pre_nrg_Q30 = silk_LSHIFT32( silk_SMULWB( pre_nrg_Q30, SILK_FIX_CONST( 0.7, 15 ) ), 1 );
- psEncCtrl->GainsPre_Q14[ k ] = ( opus_int ) SILK_FIX_CONST( 0.3, 14 ) + silk_DIV32_varQ( pre_nrg_Q30, nrg, 14 );
-
- /* Convert to monic warped prediction coefficients and limit absolute values */
- limit_warped_coefs( AR2_Q24, AR1_Q24, warping_Q16, SILK_FIX_CONST( 3.999, 24 ), psEnc->sCmn.shapingLPCOrder );
-
- /* Convert from Q24 to Q13 and store in int16 */
- for( i = 0; i < psEnc->sCmn.shapingLPCOrder; i++ ) {
- psEncCtrl->AR1_Q13[ k * MAX_SHAPE_LPC_ORDER + i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( AR1_Q24[ i ], 11 ) );
- psEncCtrl->AR2_Q13[ k * MAX_SHAPE_LPC_ORDER + i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( AR2_Q24[ i ], 11 ) );
- }
- }
-
- /*****************/
- /* Gain tweaking */
- /*****************/
- /* Increase gains during low speech activity and put lower limit on gains */
- gain_mult_Q16 = silk_log2lin( -silk_SMLAWB( -SILK_FIX_CONST( 16.0, 7 ), SNR_adj_dB_Q7, SILK_FIX_CONST( 0.16, 16 ) ) );
- gain_add_Q16 = silk_log2lin( silk_SMLAWB( SILK_FIX_CONST( 16.0, 7 ), SILK_FIX_CONST( MIN_QGAIN_DB, 7 ), SILK_FIX_CONST( 0.16, 16 ) ) );
- silk_assert( gain_mult_Q16 > 0 );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->Gains_Q16[ k ] = silk_SMULWW( psEncCtrl->Gains_Q16[ k ], gain_mult_Q16 );
- silk_assert( psEncCtrl->Gains_Q16[ k ] >= 0 );
- psEncCtrl->Gains_Q16[ k ] = silk_ADD_POS_SAT32( psEncCtrl->Gains_Q16[ k ], gain_add_Q16 );
- }
-
- gain_mult_Q16 = SILK_FIX_CONST( 1.0, 16 ) + silk_RSHIFT_ROUND( silk_MLA( SILK_FIX_CONST( INPUT_TILT, 26 ),
- psEncCtrl->coding_quality_Q14, SILK_FIX_CONST( HIGH_RATE_INPUT_TILT, 12 ) ), 10 );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->GainsPre_Q14[ k ] = silk_SMULWB( gain_mult_Q16, psEncCtrl->GainsPre_Q14[ k ] );
- }
-
- /************************************************/
- /* Control low-frequency shaping and noise tilt */
- /************************************************/
- /* Less low frequency shaping for noisy inputs */
- strength_Q16 = silk_MUL( SILK_FIX_CONST( LOW_FREQ_SHAPING, 4 ), silk_SMLAWB( SILK_FIX_CONST( 1.0, 12 ),
- SILK_FIX_CONST( LOW_QUALITY_LOW_FREQ_SHAPING_DECR, 13 ), psEnc->sCmn.input_quality_bands_Q15[ 0 ] - SILK_FIX_CONST( 1.0, 15 ) ) );
- strength_Q16 = silk_RSHIFT( silk_MUL( strength_Q16, psEnc->sCmn.speech_activity_Q8 ), 8 );
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Reduce low frequencies quantization noise for periodic signals, depending on pitch lag */
- /*f = 400; freqz([1, -0.98 + 2e-4 * f], [1, -0.97 + 7e-4 * f], 2^12, Fs); axis([0, 1000, -10, 1])*/
- opus_int fs_kHz_inv = silk_DIV32_16( SILK_FIX_CONST( 0.2, 14 ), psEnc->sCmn.fs_kHz );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- b_Q14 = fs_kHz_inv + silk_DIV32_16( SILK_FIX_CONST( 3.0, 14 ), psEncCtrl->pitchL[ k ] );
- /* Pack two coefficients in one int32 */
- psEncCtrl->LF_shp_Q14[ k ] = silk_LSHIFT( SILK_FIX_CONST( 1.0, 14 ) - b_Q14 - silk_SMULWB( strength_Q16, b_Q14 ), 16 );
- psEncCtrl->LF_shp_Q14[ k ] |= (opus_uint16)( b_Q14 - SILK_FIX_CONST( 1.0, 14 ) );
- }
- silk_assert( SILK_FIX_CONST( HARM_HP_NOISE_COEF, 24 ) < SILK_FIX_CONST( 0.5, 24 ) ); /* Guarantees that second argument to SMULWB() is within range of an opus_int16*/
- Tilt_Q16 = - SILK_FIX_CONST( HP_NOISE_COEF, 16 ) -
- silk_SMULWB( SILK_FIX_CONST( 1.0, 16 ) - SILK_FIX_CONST( HP_NOISE_COEF, 16 ),
- silk_SMULWB( SILK_FIX_CONST( HARM_HP_NOISE_COEF, 24 ), psEnc->sCmn.speech_activity_Q8 ) );
- } else {
- b_Q14 = silk_DIV32_16( 21299, psEnc->sCmn.fs_kHz ); /* 1.3_Q0 = 21299_Q14*/
- /* Pack two coefficients in one int32 */
- psEncCtrl->LF_shp_Q14[ 0 ] = silk_LSHIFT( SILK_FIX_CONST( 1.0, 14 ) - b_Q14 -
- silk_SMULWB( strength_Q16, silk_SMULWB( SILK_FIX_CONST( 0.6, 16 ), b_Q14 ) ), 16 );
- psEncCtrl->LF_shp_Q14[ 0 ] |= (opus_uint16)( b_Q14 - SILK_FIX_CONST( 1.0, 14 ) );
- for( k = 1; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->LF_shp_Q14[ k ] = psEncCtrl->LF_shp_Q14[ 0 ];
- }
- Tilt_Q16 = -SILK_FIX_CONST( HP_NOISE_COEF, 16 );
- }
-
- /****************************/
- /* HARMONIC SHAPING CONTROL */
- /****************************/
- /* Control boosting of harmonic frequencies */
- HarmBoost_Q16 = silk_SMULWB( silk_SMULWB( SILK_FIX_CONST( 1.0, 17 ) - silk_LSHIFT( psEncCtrl->coding_quality_Q14, 3 ),
- psEnc->LTPCorr_Q15 ), SILK_FIX_CONST( LOW_RATE_HARMONIC_BOOST, 16 ) );
-
- /* More harmonic boost for noisy input signals */
- HarmBoost_Q16 = silk_SMLAWB( HarmBoost_Q16,
- SILK_FIX_CONST( 1.0, 16 ) - silk_LSHIFT( psEncCtrl->input_quality_Q14, 2 ), SILK_FIX_CONST( LOW_INPUT_QUALITY_HARMONIC_BOOST, 16 ) );
-
- if( USE_HARM_SHAPING && psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* More harmonic noise shaping for high bitrates or noisy input */
- HarmShapeGain_Q16 = silk_SMLAWB( SILK_FIX_CONST( HARMONIC_SHAPING, 16 ),
- SILK_FIX_CONST( 1.0, 16 ) - silk_SMULWB( SILK_FIX_CONST( 1.0, 18 ) - silk_LSHIFT( psEncCtrl->coding_quality_Q14, 4 ),
- psEncCtrl->input_quality_Q14 ), SILK_FIX_CONST( HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING, 16 ) );
-
- /* Less harmonic noise shaping for less periodic signals */
- HarmShapeGain_Q16 = silk_SMULWB( silk_LSHIFT( HarmShapeGain_Q16, 1 ),
- silk_SQRT_APPROX( silk_LSHIFT( psEnc->LTPCorr_Q15, 15 ) ) );
- } else {
- HarmShapeGain_Q16 = 0;
- }
-
- /*************************/
- /* Smooth over subframes */
- /*************************/
- for( k = 0; k < MAX_NB_SUBFR; k++ ) {
- psShapeSt->HarmBoost_smth_Q16 =
- silk_SMLAWB( psShapeSt->HarmBoost_smth_Q16, HarmBoost_Q16 - psShapeSt->HarmBoost_smth_Q16, SILK_FIX_CONST( SUBFR_SMTH_COEF, 16 ) );
- psShapeSt->HarmShapeGain_smth_Q16 =
- silk_SMLAWB( psShapeSt->HarmShapeGain_smth_Q16, HarmShapeGain_Q16 - psShapeSt->HarmShapeGain_smth_Q16, SILK_FIX_CONST( SUBFR_SMTH_COEF, 16 ) );
- psShapeSt->Tilt_smth_Q16 =
- silk_SMLAWB( psShapeSt->Tilt_smth_Q16, Tilt_Q16 - psShapeSt->Tilt_smth_Q16, SILK_FIX_CONST( SUBFR_SMTH_COEF, 16 ) );
-
- psEncCtrl->HarmBoost_Q14[ k ] = ( opus_int )silk_RSHIFT_ROUND( psShapeSt->HarmBoost_smth_Q16, 2 );
- psEncCtrl->HarmShapeGain_Q14[ k ] = ( opus_int )silk_RSHIFT_ROUND( psShapeSt->HarmShapeGain_smth_Q16, 2 );
- psEncCtrl->Tilt_Q14[ k ] = ( opus_int )silk_RSHIFT_ROUND( psShapeSt->Tilt_smth_Q16, 2 );
- }
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/fixed/mips/prefilter_FIX_mipsr1.h b/thirdparty/opus/silk/fixed/mips/prefilter_FIX_mipsr1.h
deleted file mode 100644
index 21b256885f..0000000000
--- a/thirdparty/opus/silk/fixed/mips/prefilter_FIX_mipsr1.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-#ifndef __PREFILTER_FIX_MIPSR1_H__
-#define __PREFILTER_FIX_MIPSR1_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-#include "tuning_parameters.h"
-
-#define OVERRIDE_silk_warped_LPC_analysis_filter_FIX
-void silk_warped_LPC_analysis_filter_FIX(
- opus_int32 state[], /* I/O State [order + 1] */
- opus_int32 res_Q2[], /* O Residual signal [length] */
- const opus_int16 coef_Q13[], /* I Coefficients [order] */
- const opus_int16 input[], /* I Input signal [length] */
- const opus_int16 lambda_Q16, /* I Warping factor */
- const opus_int length, /* I Length of input signal */
- const opus_int order, /* I Filter order (even) */
- int arch
-)
-{
- opus_int n, i;
- opus_int32 acc_Q11, acc_Q22, tmp1, tmp2, tmp3, tmp4;
- opus_int32 state_cur, state_next;
-
- (void)arch;
-
- /* Order must be even */
- /* Length must be even */
-
- silk_assert( ( order & 1 ) == 0 );
- silk_assert( ( length & 1 ) == 0 );
-
- for( n = 0; n < length; n+=2 ) {
- /* Output of lowpass section */
- tmp2 = silk_SMLAWB( state[ 0 ], state[ 1 ], lambda_Q16 );
- state_cur = silk_LSHIFT( input[ n ], 14 );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( state[ 1 ], state[ 2 ] - tmp2, lambda_Q16 );
- state_next = tmp2;
- acc_Q11 = silk_RSHIFT( order, 1 );
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp2, coef_Q13[ 0 ] );
-
-
- /* Output of lowpass section */
- tmp4 = silk_SMLAWB( state_cur, state_next, lambda_Q16 );
- state[ 0 ] = silk_LSHIFT( input[ n+1 ], 14 );
- /* Output of allpass section */
- tmp3 = silk_SMLAWB( state_next, tmp1 - tmp4, lambda_Q16 );
- state[ 1 ] = tmp4;
- acc_Q22 = silk_RSHIFT( order, 1 );
- acc_Q22 = silk_SMLAWB( acc_Q22, tmp4, coef_Q13[ 0 ] );
-
- /* Loop over allpass sections */
- for( i = 2; i < order; i += 2 ) {
- /* Output of allpass section */
- tmp2 = silk_SMLAWB( state[ i ], state[ i + 1 ] - tmp1, lambda_Q16 );
- state_cur = tmp1;
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp1, coef_Q13[ i - 1 ] );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( state[ i + 1 ], state[ i + 2 ] - tmp2, lambda_Q16 );
- state_next = tmp2;
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp2, coef_Q13[ i ] );
-
-
- /* Output of allpass section */
- tmp4 = silk_SMLAWB( state_cur, state_next - tmp3, lambda_Q16 );
- state[ i ] = tmp3;
- acc_Q22 = silk_SMLAWB( acc_Q22, tmp3, coef_Q13[ i - 1 ] );
- /* Output of allpass section */
- tmp3 = silk_SMLAWB( state_next, tmp1 - tmp4, lambda_Q16 );
- state[ i + 1 ] = tmp4;
- acc_Q22 = silk_SMLAWB( acc_Q22, tmp4, coef_Q13[ i ] );
- }
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp1, coef_Q13[ order - 1 ] );
- res_Q2[ n ] = silk_LSHIFT( (opus_int32)input[ n ], 2 ) - silk_RSHIFT_ROUND( acc_Q11, 9 );
-
- state[ order ] = tmp3;
- acc_Q22 = silk_SMLAWB( acc_Q22, tmp3, coef_Q13[ order - 1 ] );
- res_Q2[ n+1 ] = silk_LSHIFT( (opus_int32)input[ n+1 ], 2 ) - silk_RSHIFT_ROUND( acc_Q22, 9 );
- }
-}
-
-
-
-/* Prefilter for finding Quantizer input signal */
-#define OVERRIDE_silk_prefilt_FIX
-static inline void silk_prefilt_FIX(
- silk_prefilter_state_FIX *P, /* I/O state */
- opus_int32 st_res_Q12[], /* I short term residual signal */
- opus_int32 xw_Q3[], /* O prefiltered signal */
- opus_int32 HarmShapeFIRPacked_Q12, /* I Harmonic shaping coeficients */
- opus_int Tilt_Q14, /* I Tilt shaping coeficient */
- opus_int32 LF_shp_Q14, /* I Low-frequancy shaping coeficients */
- opus_int lag, /* I Lag for harmonic shaping */
- opus_int length /* I Length of signals */
-)
-{
- opus_int i, idx, LTP_shp_buf_idx;
- opus_int32 n_LTP_Q12, n_Tilt_Q10, n_LF_Q10;
- opus_int32 sLF_MA_shp_Q12, sLF_AR_shp_Q12;
- opus_int16 *LTP_shp_buf;
-
- /* To speed up use temp variables instead of using the struct */
- LTP_shp_buf = P->sLTP_shp;
- LTP_shp_buf_idx = P->sLTP_shp_buf_idx;
- sLF_AR_shp_Q12 = P->sLF_AR_shp_Q12;
- sLF_MA_shp_Q12 = P->sLF_MA_shp_Q12;
-
- if( lag > 0 ) {
- for( i = 0; i < length; i++ ) {
- /* unrolled loop */
- silk_assert( HARM_SHAPE_FIR_TAPS == 3 );
- idx = lag + LTP_shp_buf_idx;
- n_LTP_Q12 = silk_SMULBB( LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 - 1) & LTP_MASK ], HarmShapeFIRPacked_Q12 );
- n_LTP_Q12 = silk_SMLABT( n_LTP_Q12, LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 ) & LTP_MASK ], HarmShapeFIRPacked_Q12 );
- n_LTP_Q12 = silk_SMLABB( n_LTP_Q12, LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 + 1) & LTP_MASK ], HarmShapeFIRPacked_Q12 );
-
- n_Tilt_Q10 = silk_SMULWB( sLF_AR_shp_Q12, Tilt_Q14 );
- n_LF_Q10 = silk_SMLAWB( silk_SMULWT( sLF_AR_shp_Q12, LF_shp_Q14 ), sLF_MA_shp_Q12, LF_shp_Q14 );
-
- sLF_AR_shp_Q12 = silk_SUB32( st_res_Q12[ i ], silk_LSHIFT( n_Tilt_Q10, 2 ) );
- sLF_MA_shp_Q12 = silk_SUB32( sLF_AR_shp_Q12, silk_LSHIFT( n_LF_Q10, 2 ) );
-
- LTP_shp_buf_idx = ( LTP_shp_buf_idx - 1 ) & LTP_MASK;
- LTP_shp_buf[ LTP_shp_buf_idx ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( sLF_MA_shp_Q12, 12 ) );
-
- xw_Q3[i] = silk_RSHIFT_ROUND( silk_SUB32( sLF_MA_shp_Q12, n_LTP_Q12 ), 9 );
- }
- }
- else
- {
- for( i = 0; i < length; i++ ) {
-
- n_LTP_Q12 = 0;
-
- n_Tilt_Q10 = silk_SMULWB( sLF_AR_shp_Q12, Tilt_Q14 );
- n_LF_Q10 = silk_SMLAWB( silk_SMULWT( sLF_AR_shp_Q12, LF_shp_Q14 ), sLF_MA_shp_Q12, LF_shp_Q14 );
-
- sLF_AR_shp_Q12 = silk_SUB32( st_res_Q12[ i ], silk_LSHIFT( n_Tilt_Q10, 2 ) );
- sLF_MA_shp_Q12 = silk_SUB32( sLF_AR_shp_Q12, silk_LSHIFT( n_LF_Q10, 2 ) );
-
- LTP_shp_buf_idx = ( LTP_shp_buf_idx - 1 ) & LTP_MASK;
- LTP_shp_buf[ LTP_shp_buf_idx ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( sLF_MA_shp_Q12, 12 ) );
-
- xw_Q3[i] = silk_RSHIFT_ROUND( sLF_MA_shp_Q12, 9 );
- }
- }
-
- /* Copy temp variable back to state */
- P->sLF_AR_shp_Q12 = sLF_AR_shp_Q12;
- P->sLF_MA_shp_Q12 = sLF_MA_shp_Q12;
- P->sLTP_shp_buf_idx = LTP_shp_buf_idx;
-}
-
-#endif /* __PREFILTER_FIX_MIPSR1_H__ */
diff --git a/thirdparty/opus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h b/thirdparty/opus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h
deleted file mode 100644
index e803ef0fce..0000000000
--- a/thirdparty/opus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef __WARPED_AUTOCORRELATION_FIX_MIPSR1_H__
-#define __WARPED_AUTOCORRELATION_FIX_MIPSR1_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-
-#undef QC
-#define QC 10
-
-#undef QS
-#define QS 14
-
-/* Autocorrelations for a warped frequency axis */
-#define OVERRIDE_silk_warped_autocorrelation_FIX
-void silk_warped_autocorrelation_FIX(
- opus_int32 *corr, /* O Result [order + 1] */
- opus_int *scale, /* O Scaling of the correlation vector */
- const opus_int16 *input, /* I Input data to correlate */
- const opus_int warping_Q16, /* I Warping coefficient */
- const opus_int length, /* I Length of input */
- const opus_int order /* I Correlation order (even) */
-)
-{
- opus_int n, i, lsh;
- opus_int32 tmp1_QS=0, tmp2_QS=0, tmp3_QS=0, tmp4_QS=0, tmp5_QS=0, tmp6_QS=0, tmp7_QS=0, tmp8_QS=0, start_1=0, start_2=0, start_3=0;
- opus_int32 state_QS[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0 };
- opus_int64 corr_QC[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0 };
- opus_int64 temp64;
-
- opus_int32 val;
- val = 2 * QS - QC;
-
- /* Order must be even */
- silk_assert( ( order & 1 ) == 0 );
- silk_assert( 2 * QS - QC >= 0 );
-
- /* Loop over samples */
- for( n = 0; n < length; n=n+4 ) {
-
- tmp1_QS = silk_LSHIFT32( (opus_int32)input[ n ], QS );
- start_1 = tmp1_QS;
- tmp3_QS = silk_LSHIFT32( (opus_int32)input[ n+1], QS );
- start_2 = tmp3_QS;
- tmp5_QS = silk_LSHIFT32( (opus_int32)input[ n+2], QS );
- start_3 = tmp5_QS;
- tmp7_QS = silk_LSHIFT32( (opus_int32)input[ n+3], QS );
-
- /* Loop over allpass sections */
- for( i = 0; i < order; i += 2 ) {
- /* Output of allpass section */
- tmp2_QS = silk_SMLAWB( state_QS[ i ], state_QS[ i + 1 ] - tmp1_QS, warping_Q16 );
- corr_QC[ i ] = __builtin_mips_madd( corr_QC[ i ], tmp1_QS, start_1);
-
- tmp4_QS = silk_SMLAWB( tmp1_QS, tmp2_QS - tmp3_QS, warping_Q16 );
- corr_QC[ i ] = __builtin_mips_madd( corr_QC[ i ], tmp3_QS, start_2);
-
- tmp6_QS = silk_SMLAWB( tmp3_QS, tmp4_QS - tmp5_QS, warping_Q16 );
- corr_QC[ i ] = __builtin_mips_madd( corr_QC[ i ], tmp5_QS, start_3);
-
- tmp8_QS = silk_SMLAWB( tmp5_QS, tmp6_QS - tmp7_QS, warping_Q16 );
- state_QS[ i ] = tmp7_QS;
- corr_QC[ i ] = __builtin_mips_madd( corr_QC[ i ], tmp7_QS, state_QS[0]);
-
- /* Output of allpass section */
- tmp1_QS = silk_SMLAWB( state_QS[ i + 1 ], state_QS[ i + 2 ] - tmp2_QS, warping_Q16 );
- corr_QC[ i+1 ] = __builtin_mips_madd( corr_QC[ i+1 ], tmp2_QS, start_1);
-
- tmp3_QS = silk_SMLAWB( tmp2_QS, tmp1_QS - tmp4_QS, warping_Q16 );
- corr_QC[ i+1 ] = __builtin_mips_madd( corr_QC[ i+1 ], tmp4_QS, start_2);
-
- tmp5_QS = silk_SMLAWB( tmp4_QS, tmp3_QS - tmp6_QS, warping_Q16 );
- corr_QC[ i+1 ] = __builtin_mips_madd( corr_QC[ i+1 ], tmp6_QS, start_3);
-
- tmp7_QS = silk_SMLAWB( tmp6_QS, tmp5_QS - tmp8_QS, warping_Q16 );
- state_QS[ i + 1 ] = tmp8_QS;
- corr_QC[ i+1 ] = __builtin_mips_madd( corr_QC[ i+1 ], tmp8_QS, state_QS[ 0 ]);
-
- }
- state_QS[ order ] = tmp7_QS;
-
- corr_QC[ order ] = __builtin_mips_madd( corr_QC[ order ], tmp1_QS, start_1);
- corr_QC[ order ] = __builtin_mips_madd( corr_QC[ order ], tmp3_QS, start_2);
- corr_QC[ order ] = __builtin_mips_madd( corr_QC[ order ], tmp5_QS, start_3);
- corr_QC[ order ] = __builtin_mips_madd( corr_QC[ order ], tmp7_QS, state_QS[ 0 ]);
- }
-
- for(;n< length; n++ ) {
-
- tmp1_QS = silk_LSHIFT32( (opus_int32)input[ n ], QS );
-
- /* Loop over allpass sections */
- for( i = 0; i < order; i += 2 ) {
-
- /* Output of allpass section */
- tmp2_QS = silk_SMLAWB( state_QS[ i ], state_QS[ i + 1 ] - tmp1_QS, warping_Q16 );
- state_QS[ i ] = tmp1_QS;
- corr_QC[ i ] = __builtin_mips_madd( corr_QC[ i ], tmp1_QS, state_QS[ 0 ]);
-
- /* Output of allpass section */
- tmp1_QS = silk_SMLAWB( state_QS[ i + 1 ], state_QS[ i + 2 ] - tmp2_QS, warping_Q16 );
- state_QS[ i + 1 ] = tmp2_QS;
- corr_QC[ i+1 ] = __builtin_mips_madd( corr_QC[ i+1 ], tmp2_QS, state_QS[ 0 ]);
- }
- state_QS[ order ] = tmp1_QS;
- corr_QC[ order ] = __builtin_mips_madd( corr_QC[ order ], tmp1_QS, state_QS[ 0 ]);
- }
-
- temp64 = corr_QC[ 0 ];
- temp64 = __builtin_mips_shilo(temp64, val);
-
- lsh = silk_CLZ64( temp64 ) - 35;
- lsh = silk_LIMIT( lsh, -12 - QC, 30 - QC );
- *scale = -( QC + lsh );
- silk_assert( *scale >= -30 && *scale <= 12 );
- if( lsh >= 0 ) {
- for( i = 0; i < order + 1; i++ ) {
- temp64 = corr_QC[ i ];
- //temp64 = __builtin_mips_shilo(temp64, val);
- temp64 = (val >= 0) ? (temp64 >> val) : (temp64 << -val);
- corr[ i ] = (opus_int32)silk_CHECK_FIT32( __builtin_mips_shilo( temp64, -lsh ) );
- }
- } else {
- for( i = 0; i < order + 1; i++ ) {
- temp64 = corr_QC[ i ];
- //temp64 = __builtin_mips_shilo(temp64, val);
- temp64 = (val >= 0) ? (temp64 >> val) : (temp64 << -val);
- corr[ i ] = (opus_int32)silk_CHECK_FIT32( __builtin_mips_shilo( temp64, -lsh ) );
- }
- }
-
- corr_QC[ 0 ] = __builtin_mips_shilo(corr_QC[ 0 ], val);
-
- silk_assert( corr_QC[ 0 ] >= 0 ); /* If breaking, decrease QC*/
-}
-#endif /* __WARPED_AUTOCORRELATION_FIX_MIPSR1_H__ */
diff --git a/thirdparty/opus/silk/fixed/noise_shape_analysis_FIX.c b/thirdparty/opus/silk/fixed/noise_shape_analysis_FIX.c
deleted file mode 100644
index 22a89f75ae..0000000000
--- a/thirdparty/opus/silk/fixed/noise_shape_analysis_FIX.c
+++ /dev/null
@@ -1,451 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-#include "tuning_parameters.h"
-
-/* Compute gain to make warped filter coefficients have a zero mean log frequency response on a */
-/* non-warped frequency scale. (So that it can be implemented with a minimum-phase monic filter.) */
-/* Note: A monic filter is one with the first coefficient equal to 1.0. In Silk we omit the first */
-/* coefficient in an array of coefficients, for monic filters. */
-static OPUS_INLINE opus_int32 warped_gain( /* gain in Q16*/
- const opus_int32 *coefs_Q24,
- opus_int lambda_Q16,
- opus_int order
-) {
- opus_int i;
- opus_int32 gain_Q24;
-
- lambda_Q16 = -lambda_Q16;
- gain_Q24 = coefs_Q24[ order - 1 ];
- for( i = order - 2; i >= 0; i-- ) {
- gain_Q24 = silk_SMLAWB( coefs_Q24[ i ], gain_Q24, lambda_Q16 );
- }
- gain_Q24 = silk_SMLAWB( SILK_FIX_CONST( 1.0, 24 ), gain_Q24, -lambda_Q16 );
- return silk_INVERSE32_varQ( gain_Q24, 40 );
-}
-
-/* Convert warped filter coefficients to monic pseudo-warped coefficients and limit maximum */
-/* amplitude of monic warped coefficients by using bandwidth expansion on the true coefficients */
-static OPUS_INLINE void limit_warped_coefs(
- opus_int32 *coefs_syn_Q24,
- opus_int32 *coefs_ana_Q24,
- opus_int lambda_Q16,
- opus_int32 limit_Q24,
- opus_int order
-) {
- opus_int i, iter, ind = 0;
- opus_int32 tmp, maxabs_Q24, chirp_Q16, gain_syn_Q16, gain_ana_Q16;
- opus_int32 nom_Q16, den_Q24;
-
- /* Convert to monic coefficients */
- lambda_Q16 = -lambda_Q16;
- for( i = order - 1; i > 0; i-- ) {
- coefs_syn_Q24[ i - 1 ] = silk_SMLAWB( coefs_syn_Q24[ i - 1 ], coefs_syn_Q24[ i ], lambda_Q16 );
- coefs_ana_Q24[ i - 1 ] = silk_SMLAWB( coefs_ana_Q24[ i - 1 ], coefs_ana_Q24[ i ], lambda_Q16 );
- }
- lambda_Q16 = -lambda_Q16;
- nom_Q16 = silk_SMLAWB( SILK_FIX_CONST( 1.0, 16 ), -(opus_int32)lambda_Q16, lambda_Q16 );
- den_Q24 = silk_SMLAWB( SILK_FIX_CONST( 1.0, 24 ), coefs_syn_Q24[ 0 ], lambda_Q16 );
- gain_syn_Q16 = silk_DIV32_varQ( nom_Q16, den_Q24, 24 );
- den_Q24 = silk_SMLAWB( SILK_FIX_CONST( 1.0, 24 ), coefs_ana_Q24[ 0 ], lambda_Q16 );
- gain_ana_Q16 = silk_DIV32_varQ( nom_Q16, den_Q24, 24 );
- for( i = 0; i < order; i++ ) {
- coefs_syn_Q24[ i ] = silk_SMULWW( gain_syn_Q16, coefs_syn_Q24[ i ] );
- coefs_ana_Q24[ i ] = silk_SMULWW( gain_ana_Q16, coefs_ana_Q24[ i ] );
- }
-
- for( iter = 0; iter < 10; iter++ ) {
- /* Find maximum absolute value */
- maxabs_Q24 = -1;
- for( i = 0; i < order; i++ ) {
- tmp = silk_max( silk_abs_int32( coefs_syn_Q24[ i ] ), silk_abs_int32( coefs_ana_Q24[ i ] ) );
- if( tmp > maxabs_Q24 ) {
- maxabs_Q24 = tmp;
- ind = i;
- }
- }
- if( maxabs_Q24 <= limit_Q24 ) {
- /* Coefficients are within range - done */
- return;
- }
-
- /* Convert back to true warped coefficients */
- for( i = 1; i < order; i++ ) {
- coefs_syn_Q24[ i - 1 ] = silk_SMLAWB( coefs_syn_Q24[ i - 1 ], coefs_syn_Q24[ i ], lambda_Q16 );
- coefs_ana_Q24[ i - 1 ] = silk_SMLAWB( coefs_ana_Q24[ i - 1 ], coefs_ana_Q24[ i ], lambda_Q16 );
- }
- gain_syn_Q16 = silk_INVERSE32_varQ( gain_syn_Q16, 32 );
- gain_ana_Q16 = silk_INVERSE32_varQ( gain_ana_Q16, 32 );
- for( i = 0; i < order; i++ ) {
- coefs_syn_Q24[ i ] = silk_SMULWW( gain_syn_Q16, coefs_syn_Q24[ i ] );
- coefs_ana_Q24[ i ] = silk_SMULWW( gain_ana_Q16, coefs_ana_Q24[ i ] );
- }
-
- /* Apply bandwidth expansion */
- chirp_Q16 = SILK_FIX_CONST( 0.99, 16 ) - silk_DIV32_varQ(
- silk_SMULWB( maxabs_Q24 - limit_Q24, silk_SMLABB( SILK_FIX_CONST( 0.8, 10 ), SILK_FIX_CONST( 0.1, 10 ), iter ) ),
- silk_MUL( maxabs_Q24, ind + 1 ), 22 );
- silk_bwexpander_32( coefs_syn_Q24, order, chirp_Q16 );
- silk_bwexpander_32( coefs_ana_Q24, order, chirp_Q16 );
-
- /* Convert to monic warped coefficients */
- lambda_Q16 = -lambda_Q16;
- for( i = order - 1; i > 0; i-- ) {
- coefs_syn_Q24[ i - 1 ] = silk_SMLAWB( coefs_syn_Q24[ i - 1 ], coefs_syn_Q24[ i ], lambda_Q16 );
- coefs_ana_Q24[ i - 1 ] = silk_SMLAWB( coefs_ana_Q24[ i - 1 ], coefs_ana_Q24[ i ], lambda_Q16 );
- }
- lambda_Q16 = -lambda_Q16;
- nom_Q16 = silk_SMLAWB( SILK_FIX_CONST( 1.0, 16 ), -(opus_int32)lambda_Q16, lambda_Q16 );
- den_Q24 = silk_SMLAWB( SILK_FIX_CONST( 1.0, 24 ), coefs_syn_Q24[ 0 ], lambda_Q16 );
- gain_syn_Q16 = silk_DIV32_varQ( nom_Q16, den_Q24, 24 );
- den_Q24 = silk_SMLAWB( SILK_FIX_CONST( 1.0, 24 ), coefs_ana_Q24[ 0 ], lambda_Q16 );
- gain_ana_Q16 = silk_DIV32_varQ( nom_Q16, den_Q24, 24 );
- for( i = 0; i < order; i++ ) {
- coefs_syn_Q24[ i ] = silk_SMULWW( gain_syn_Q16, coefs_syn_Q24[ i ] );
- coefs_ana_Q24[ i ] = silk_SMULWW( gain_ana_Q16, coefs_ana_Q24[ i ] );
- }
- }
- silk_assert( 0 );
-}
-
-#if defined(MIPSr1_ASM)
-#include "mips/noise_shape_analysis_FIX_mipsr1.h"
-#endif
-
-/**************************************************************/
-/* Compute noise shaping coefficients and initial gain values */
-/**************************************************************/
-#ifndef OVERRIDE_silk_noise_shape_analysis_FIX
-void silk_noise_shape_analysis_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Encoder state FIX */
- silk_encoder_control_FIX *psEncCtrl, /* I/O Encoder control FIX */
- const opus_int16 *pitch_res, /* I LPC residual from pitch analysis */
- const opus_int16 *x, /* I Input signal [ frame_length + la_shape ] */
- int arch /* I Run-time architecture */
-)
-{
- silk_shape_state_FIX *psShapeSt = &psEnc->sShape;
- opus_int k, i, nSamples, Qnrg, b_Q14, warping_Q16, scale = 0;
- opus_int32 SNR_adj_dB_Q7, HarmBoost_Q16, HarmShapeGain_Q16, Tilt_Q16, tmp32;
- opus_int32 nrg, pre_nrg_Q30, log_energy_Q7, log_energy_prev_Q7, energy_variation_Q7;
- opus_int32 delta_Q16, BWExp1_Q16, BWExp2_Q16, gain_mult_Q16, gain_add_Q16, strength_Q16, b_Q8;
- opus_int32 auto_corr[ MAX_SHAPE_LPC_ORDER + 1 ];
- opus_int32 refl_coef_Q16[ MAX_SHAPE_LPC_ORDER ];
- opus_int32 AR1_Q24[ MAX_SHAPE_LPC_ORDER ];
- opus_int32 AR2_Q24[ MAX_SHAPE_LPC_ORDER ];
- VARDECL( opus_int16, x_windowed );
- const opus_int16 *x_ptr, *pitch_res_ptr;
- SAVE_STACK;
-
- /* Point to start of first LPC analysis block */
- x_ptr = x - psEnc->sCmn.la_shape;
-
- /****************/
- /* GAIN CONTROL */
- /****************/
- SNR_adj_dB_Q7 = psEnc->sCmn.SNR_dB_Q7;
-
- /* Input quality is the average of the quality in the lowest two VAD bands */
- psEncCtrl->input_quality_Q14 = ( opus_int )silk_RSHIFT( (opus_int32)psEnc->sCmn.input_quality_bands_Q15[ 0 ]
- + psEnc->sCmn.input_quality_bands_Q15[ 1 ], 2 );
-
- /* Coding quality level, between 0.0_Q0 and 1.0_Q0, but in Q14 */
- psEncCtrl->coding_quality_Q14 = silk_RSHIFT( silk_sigm_Q15( silk_RSHIFT_ROUND( SNR_adj_dB_Q7 -
- SILK_FIX_CONST( 20.0, 7 ), 4 ) ), 1 );
-
- /* Reduce coding SNR during low speech activity */
- if( psEnc->sCmn.useCBR == 0 ) {
- b_Q8 = SILK_FIX_CONST( 1.0, 8 ) - psEnc->sCmn.speech_activity_Q8;
- b_Q8 = silk_SMULWB( silk_LSHIFT( b_Q8, 8 ), b_Q8 );
- SNR_adj_dB_Q7 = silk_SMLAWB( SNR_adj_dB_Q7,
- silk_SMULBB( SILK_FIX_CONST( -BG_SNR_DECR_dB, 7 ) >> ( 4 + 1 ), b_Q8 ), /* Q11*/
- silk_SMULWB( SILK_FIX_CONST( 1.0, 14 ) + psEncCtrl->input_quality_Q14, psEncCtrl->coding_quality_Q14 ) ); /* Q12*/
- }
-
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Reduce gains for periodic signals */
- SNR_adj_dB_Q7 = silk_SMLAWB( SNR_adj_dB_Q7, SILK_FIX_CONST( HARM_SNR_INCR_dB, 8 ), psEnc->LTPCorr_Q15 );
- } else {
- /* For unvoiced signals and low-quality input, adjust the quality slower than SNR_dB setting */
- SNR_adj_dB_Q7 = silk_SMLAWB( SNR_adj_dB_Q7,
- silk_SMLAWB( SILK_FIX_CONST( 6.0, 9 ), -SILK_FIX_CONST( 0.4, 18 ), psEnc->sCmn.SNR_dB_Q7 ),
- SILK_FIX_CONST( 1.0, 14 ) - psEncCtrl->input_quality_Q14 );
- }
-
- /*************************/
- /* SPARSENESS PROCESSING */
- /*************************/
- /* Set quantizer offset */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Initially set to 0; may be overruled in process_gains(..) */
- psEnc->sCmn.indices.quantOffsetType = 0;
- psEncCtrl->sparseness_Q8 = 0;
- } else {
- /* Sparseness measure, based on relative fluctuations of energy per 2 milliseconds */
- nSamples = silk_LSHIFT( psEnc->sCmn.fs_kHz, 1 );
- energy_variation_Q7 = 0;
- log_energy_prev_Q7 = 0;
- pitch_res_ptr = pitch_res;
- for( k = 0; k < silk_SMULBB( SUB_FRAME_LENGTH_MS, psEnc->sCmn.nb_subfr ) / 2; k++ ) {
- silk_sum_sqr_shift( &nrg, &scale, pitch_res_ptr, nSamples );
- nrg += silk_RSHIFT( nSamples, scale ); /* Q(-scale)*/
-
- log_energy_Q7 = silk_lin2log( nrg );
- if( k > 0 ) {
- energy_variation_Q7 += silk_abs( log_energy_Q7 - log_energy_prev_Q7 );
- }
- log_energy_prev_Q7 = log_energy_Q7;
- pitch_res_ptr += nSamples;
- }
-
- psEncCtrl->sparseness_Q8 = silk_RSHIFT( silk_sigm_Q15( silk_SMULWB( energy_variation_Q7 -
- SILK_FIX_CONST( 5.0, 7 ), SILK_FIX_CONST( 0.1, 16 ) ) ), 7 );
-
- /* Set quantization offset depending on sparseness measure */
- if( psEncCtrl->sparseness_Q8 > SILK_FIX_CONST( SPARSENESS_THRESHOLD_QNT_OFFSET, 8 ) ) {
- psEnc->sCmn.indices.quantOffsetType = 0;
- } else {
- psEnc->sCmn.indices.quantOffsetType = 1;
- }
-
- /* Increase coding SNR for sparse signals */
- SNR_adj_dB_Q7 = silk_SMLAWB( SNR_adj_dB_Q7, SILK_FIX_CONST( SPARSE_SNR_INCR_dB, 15 ), psEncCtrl->sparseness_Q8 - SILK_FIX_CONST( 0.5, 8 ) );
- }
-
- /*******************************/
- /* Control bandwidth expansion */
- /*******************************/
- /* More BWE for signals with high prediction gain */
- strength_Q16 = silk_SMULWB( psEncCtrl->predGain_Q16, SILK_FIX_CONST( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) );
- BWExp1_Q16 = BWExp2_Q16 = silk_DIV32_varQ( SILK_FIX_CONST( BANDWIDTH_EXPANSION, 16 ),
- silk_SMLAWW( SILK_FIX_CONST( 1.0, 16 ), strength_Q16, strength_Q16 ), 16 );
- delta_Q16 = silk_SMULWB( SILK_FIX_CONST( 1.0, 16 ) - silk_SMULBB( 3, psEncCtrl->coding_quality_Q14 ),
- SILK_FIX_CONST( LOW_RATE_BANDWIDTH_EXPANSION_DELTA, 16 ) );
- BWExp1_Q16 = silk_SUB32( BWExp1_Q16, delta_Q16 );
- BWExp2_Q16 = silk_ADD32( BWExp2_Q16, delta_Q16 );
- /* BWExp1 will be applied after BWExp2, so make it relative */
- BWExp1_Q16 = silk_DIV32_16( silk_LSHIFT( BWExp1_Q16, 14 ), silk_RSHIFT( BWExp2_Q16, 2 ) );
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Slightly more warping in analysis will move quantization noise up in frequency, where it's better masked */
- warping_Q16 = silk_SMLAWB( psEnc->sCmn.warping_Q16, (opus_int32)psEncCtrl->coding_quality_Q14, SILK_FIX_CONST( 0.01, 18 ) );
- } else {
- warping_Q16 = 0;
- }
-
- /********************************************/
- /* Compute noise shaping AR coefs and gains */
- /********************************************/
- ALLOC( x_windowed, psEnc->sCmn.shapeWinLength, opus_int16 );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- /* Apply window: sine slope followed by flat part followed by cosine slope */
- opus_int shift, slope_part, flat_part;
- flat_part = psEnc->sCmn.fs_kHz * 3;
- slope_part = silk_RSHIFT( psEnc->sCmn.shapeWinLength - flat_part, 1 );
-
- silk_apply_sine_window( x_windowed, x_ptr, 1, slope_part );
- shift = slope_part;
- silk_memcpy( x_windowed + shift, x_ptr + shift, flat_part * sizeof(opus_int16) );
- shift += flat_part;
- silk_apply_sine_window( x_windowed + shift, x_ptr + shift, 2, slope_part );
-
- /* Update pointer: next LPC analysis block */
- x_ptr += psEnc->sCmn.subfr_length;
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Calculate warped auto correlation */
- silk_warped_autocorrelation_FIX( auto_corr, &scale, x_windowed, warping_Q16, psEnc->sCmn.shapeWinLength, psEnc->sCmn.shapingLPCOrder );
- } else {
- /* Calculate regular auto correlation */
- silk_autocorr( auto_corr, &scale, x_windowed, psEnc->sCmn.shapeWinLength, psEnc->sCmn.shapingLPCOrder + 1, arch );
- }
-
- /* Add white noise, as a fraction of energy */
- auto_corr[0] = silk_ADD32( auto_corr[0], silk_max_32( silk_SMULWB( silk_RSHIFT( auto_corr[ 0 ], 4 ),
- SILK_FIX_CONST( SHAPE_WHITE_NOISE_FRACTION, 20 ) ), 1 ) );
-
- /* Calculate the reflection coefficients using schur */
- nrg = silk_schur64( refl_coef_Q16, auto_corr, psEnc->sCmn.shapingLPCOrder );
- silk_assert( nrg >= 0 );
-
- /* Convert reflection coefficients to prediction coefficients */
- silk_k2a_Q16( AR2_Q24, refl_coef_Q16, psEnc->sCmn.shapingLPCOrder );
-
- Qnrg = -scale; /* range: -12...30*/
- silk_assert( Qnrg >= -12 );
- silk_assert( Qnrg <= 30 );
-
- /* Make sure that Qnrg is an even number */
- if( Qnrg & 1 ) {
- Qnrg -= 1;
- nrg >>= 1;
- }
-
- tmp32 = silk_SQRT_APPROX( nrg );
- Qnrg >>= 1; /* range: -6...15*/
-
- psEncCtrl->Gains_Q16[ k ] = silk_LSHIFT_SAT32( tmp32, 16 - Qnrg );
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Adjust gain for warping */
- gain_mult_Q16 = warped_gain( AR2_Q24, warping_Q16, psEnc->sCmn.shapingLPCOrder );
- silk_assert( psEncCtrl->Gains_Q16[ k ] >= 0 );
- if ( silk_SMULWW( silk_RSHIFT_ROUND( psEncCtrl->Gains_Q16[ k ], 1 ), gain_mult_Q16 ) >= ( silk_int32_MAX >> 1 ) ) {
- psEncCtrl->Gains_Q16[ k ] = silk_int32_MAX;
- } else {
- psEncCtrl->Gains_Q16[ k ] = silk_SMULWW( psEncCtrl->Gains_Q16[ k ], gain_mult_Q16 );
- }
- }
-
- /* Bandwidth expansion for synthesis filter shaping */
- silk_bwexpander_32( AR2_Q24, psEnc->sCmn.shapingLPCOrder, BWExp2_Q16 );
-
- /* Compute noise shaping filter coefficients */
- silk_memcpy( AR1_Q24, AR2_Q24, psEnc->sCmn.shapingLPCOrder * sizeof( opus_int32 ) );
-
- /* Bandwidth expansion for analysis filter shaping */
- silk_assert( BWExp1_Q16 <= SILK_FIX_CONST( 1.0, 16 ) );
- silk_bwexpander_32( AR1_Q24, psEnc->sCmn.shapingLPCOrder, BWExp1_Q16 );
-
- /* Ratio of prediction gains, in energy domain */
- pre_nrg_Q30 = silk_LPC_inverse_pred_gain_Q24( AR2_Q24, psEnc->sCmn.shapingLPCOrder );
- nrg = silk_LPC_inverse_pred_gain_Q24( AR1_Q24, psEnc->sCmn.shapingLPCOrder );
-
- /*psEncCtrl->GainsPre[ k ] = 1.0f - 0.7f * ( 1.0f - pre_nrg / nrg ) = 0.3f + 0.7f * pre_nrg / nrg;*/
- pre_nrg_Q30 = silk_LSHIFT32( silk_SMULWB( pre_nrg_Q30, SILK_FIX_CONST( 0.7, 15 ) ), 1 );
- psEncCtrl->GainsPre_Q14[ k ] = ( opus_int ) SILK_FIX_CONST( 0.3, 14 ) + silk_DIV32_varQ( pre_nrg_Q30, nrg, 14 );
-
- /* Convert to monic warped prediction coefficients and limit absolute values */
- limit_warped_coefs( AR2_Q24, AR1_Q24, warping_Q16, SILK_FIX_CONST( 3.999, 24 ), psEnc->sCmn.shapingLPCOrder );
-
- /* Convert from Q24 to Q13 and store in int16 */
- for( i = 0; i < psEnc->sCmn.shapingLPCOrder; i++ ) {
- psEncCtrl->AR1_Q13[ k * MAX_SHAPE_LPC_ORDER + i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( AR1_Q24[ i ], 11 ) );
- psEncCtrl->AR2_Q13[ k * MAX_SHAPE_LPC_ORDER + i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( AR2_Q24[ i ], 11 ) );
- }
- }
-
- /*****************/
- /* Gain tweaking */
- /*****************/
- /* Increase gains during low speech activity and put lower limit on gains */
- gain_mult_Q16 = silk_log2lin( -silk_SMLAWB( -SILK_FIX_CONST( 16.0, 7 ), SNR_adj_dB_Q7, SILK_FIX_CONST( 0.16, 16 ) ) );
- gain_add_Q16 = silk_log2lin( silk_SMLAWB( SILK_FIX_CONST( 16.0, 7 ), SILK_FIX_CONST( MIN_QGAIN_DB, 7 ), SILK_FIX_CONST( 0.16, 16 ) ) );
- silk_assert( gain_mult_Q16 > 0 );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->Gains_Q16[ k ] = silk_SMULWW( psEncCtrl->Gains_Q16[ k ], gain_mult_Q16 );
- silk_assert( psEncCtrl->Gains_Q16[ k ] >= 0 );
- psEncCtrl->Gains_Q16[ k ] = silk_ADD_POS_SAT32( psEncCtrl->Gains_Q16[ k ], gain_add_Q16 );
- }
-
- gain_mult_Q16 = SILK_FIX_CONST( 1.0, 16 ) + silk_RSHIFT_ROUND( silk_MLA( SILK_FIX_CONST( INPUT_TILT, 26 ),
- psEncCtrl->coding_quality_Q14, SILK_FIX_CONST( HIGH_RATE_INPUT_TILT, 12 ) ), 10 );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->GainsPre_Q14[ k ] = silk_SMULWB( gain_mult_Q16, psEncCtrl->GainsPre_Q14[ k ] );
- }
-
- /************************************************/
- /* Control low-frequency shaping and noise tilt */
- /************************************************/
- /* Less low frequency shaping for noisy inputs */
- strength_Q16 = silk_MUL( SILK_FIX_CONST( LOW_FREQ_SHAPING, 4 ), silk_SMLAWB( SILK_FIX_CONST( 1.0, 12 ),
- SILK_FIX_CONST( LOW_QUALITY_LOW_FREQ_SHAPING_DECR, 13 ), psEnc->sCmn.input_quality_bands_Q15[ 0 ] - SILK_FIX_CONST( 1.0, 15 ) ) );
- strength_Q16 = silk_RSHIFT( silk_MUL( strength_Q16, psEnc->sCmn.speech_activity_Q8 ), 8 );
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Reduce low frequencies quantization noise for periodic signals, depending on pitch lag */
- /*f = 400; freqz([1, -0.98 + 2e-4 * f], [1, -0.97 + 7e-4 * f], 2^12, Fs); axis([0, 1000, -10, 1])*/
- opus_int fs_kHz_inv = silk_DIV32_16( SILK_FIX_CONST( 0.2, 14 ), psEnc->sCmn.fs_kHz );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- b_Q14 = fs_kHz_inv + silk_DIV32_16( SILK_FIX_CONST( 3.0, 14 ), psEncCtrl->pitchL[ k ] );
- /* Pack two coefficients in one int32 */
- psEncCtrl->LF_shp_Q14[ k ] = silk_LSHIFT( SILK_FIX_CONST( 1.0, 14 ) - b_Q14 - silk_SMULWB( strength_Q16, b_Q14 ), 16 );
- psEncCtrl->LF_shp_Q14[ k ] |= (opus_uint16)( b_Q14 - SILK_FIX_CONST( 1.0, 14 ) );
- }
- silk_assert( SILK_FIX_CONST( HARM_HP_NOISE_COEF, 24 ) < SILK_FIX_CONST( 0.5, 24 ) ); /* Guarantees that second argument to SMULWB() is within range of an opus_int16*/
- Tilt_Q16 = - SILK_FIX_CONST( HP_NOISE_COEF, 16 ) -
- silk_SMULWB( SILK_FIX_CONST( 1.0, 16 ) - SILK_FIX_CONST( HP_NOISE_COEF, 16 ),
- silk_SMULWB( SILK_FIX_CONST( HARM_HP_NOISE_COEF, 24 ), psEnc->sCmn.speech_activity_Q8 ) );
- } else {
- b_Q14 = silk_DIV32_16( 21299, psEnc->sCmn.fs_kHz ); /* 1.3_Q0 = 21299_Q14*/
- /* Pack two coefficients in one int32 */
- psEncCtrl->LF_shp_Q14[ 0 ] = silk_LSHIFT( SILK_FIX_CONST( 1.0, 14 ) - b_Q14 -
- silk_SMULWB( strength_Q16, silk_SMULWB( SILK_FIX_CONST( 0.6, 16 ), b_Q14 ) ), 16 );
- psEncCtrl->LF_shp_Q14[ 0 ] |= (opus_uint16)( b_Q14 - SILK_FIX_CONST( 1.0, 14 ) );
- for( k = 1; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->LF_shp_Q14[ k ] = psEncCtrl->LF_shp_Q14[ 0 ];
- }
- Tilt_Q16 = -SILK_FIX_CONST( HP_NOISE_COEF, 16 );
- }
-
- /****************************/
- /* HARMONIC SHAPING CONTROL */
- /****************************/
- /* Control boosting of harmonic frequencies */
- HarmBoost_Q16 = silk_SMULWB( silk_SMULWB( SILK_FIX_CONST( 1.0, 17 ) - silk_LSHIFT( psEncCtrl->coding_quality_Q14, 3 ),
- psEnc->LTPCorr_Q15 ), SILK_FIX_CONST( LOW_RATE_HARMONIC_BOOST, 16 ) );
-
- /* More harmonic boost for noisy input signals */
- HarmBoost_Q16 = silk_SMLAWB( HarmBoost_Q16,
- SILK_FIX_CONST( 1.0, 16 ) - silk_LSHIFT( psEncCtrl->input_quality_Q14, 2 ), SILK_FIX_CONST( LOW_INPUT_QUALITY_HARMONIC_BOOST, 16 ) );
-
- if( USE_HARM_SHAPING && psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* More harmonic noise shaping for high bitrates or noisy input */
- HarmShapeGain_Q16 = silk_SMLAWB( SILK_FIX_CONST( HARMONIC_SHAPING, 16 ),
- SILK_FIX_CONST( 1.0, 16 ) - silk_SMULWB( SILK_FIX_CONST( 1.0, 18 ) - silk_LSHIFT( psEncCtrl->coding_quality_Q14, 4 ),
- psEncCtrl->input_quality_Q14 ), SILK_FIX_CONST( HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING, 16 ) );
-
- /* Less harmonic noise shaping for less periodic signals */
- HarmShapeGain_Q16 = silk_SMULWB( silk_LSHIFT( HarmShapeGain_Q16, 1 ),
- silk_SQRT_APPROX( silk_LSHIFT( psEnc->LTPCorr_Q15, 15 ) ) );
- } else {
- HarmShapeGain_Q16 = 0;
- }
-
- /*************************/
- /* Smooth over subframes */
- /*************************/
- for( k = 0; k < MAX_NB_SUBFR; k++ ) {
- psShapeSt->HarmBoost_smth_Q16 =
- silk_SMLAWB( psShapeSt->HarmBoost_smth_Q16, HarmBoost_Q16 - psShapeSt->HarmBoost_smth_Q16, SILK_FIX_CONST( SUBFR_SMTH_COEF, 16 ) );
- psShapeSt->HarmShapeGain_smth_Q16 =
- silk_SMLAWB( psShapeSt->HarmShapeGain_smth_Q16, HarmShapeGain_Q16 - psShapeSt->HarmShapeGain_smth_Q16, SILK_FIX_CONST( SUBFR_SMTH_COEF, 16 ) );
- psShapeSt->Tilt_smth_Q16 =
- silk_SMLAWB( psShapeSt->Tilt_smth_Q16, Tilt_Q16 - psShapeSt->Tilt_smth_Q16, SILK_FIX_CONST( SUBFR_SMTH_COEF, 16 ) );
-
- psEncCtrl->HarmBoost_Q14[ k ] = ( opus_int )silk_RSHIFT_ROUND( psShapeSt->HarmBoost_smth_Q16, 2 );
- psEncCtrl->HarmShapeGain_Q14[ k ] = ( opus_int )silk_RSHIFT_ROUND( psShapeSt->HarmShapeGain_smth_Q16, 2 );
- psEncCtrl->Tilt_Q14[ k ] = ( opus_int )silk_RSHIFT_ROUND( psShapeSt->Tilt_smth_Q16, 2 );
- }
- RESTORE_STACK;
-}
-#endif /* OVERRIDE_silk_noise_shape_analysis_FIX */
diff --git a/thirdparty/opus/silk/fixed/pitch_analysis_core_FIX.c b/thirdparty/opus/silk/fixed/pitch_analysis_core_FIX.c
deleted file mode 100644
index 01bb9fc0a8..0000000000
--- a/thirdparty/opus/silk/fixed/pitch_analysis_core_FIX.c
+++ /dev/null
@@ -1,746 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/***********************************************************
-* Pitch analyser function
-********************************************************** */
-#include "SigProc_FIX.h"
-#include "pitch_est_defines.h"
-#include "stack_alloc.h"
-#include "debug.h"
-#include "pitch.h"
-
-#define SCRATCH_SIZE 22
-#define SF_LENGTH_4KHZ ( PE_SUBFR_LENGTH_MS * 4 )
-#define SF_LENGTH_8KHZ ( PE_SUBFR_LENGTH_MS * 8 )
-#define MIN_LAG_4KHZ ( PE_MIN_LAG_MS * 4 )
-#define MIN_LAG_8KHZ ( PE_MIN_LAG_MS * 8 )
-#define MAX_LAG_4KHZ ( PE_MAX_LAG_MS * 4 )
-#define MAX_LAG_8KHZ ( PE_MAX_LAG_MS * 8 - 1 )
-#define CSTRIDE_4KHZ ( MAX_LAG_4KHZ + 1 - MIN_LAG_4KHZ )
-#define CSTRIDE_8KHZ ( MAX_LAG_8KHZ + 3 - ( MIN_LAG_8KHZ - 2 ) )
-#define D_COMP_MIN ( MIN_LAG_8KHZ - 3 )
-#define D_COMP_MAX ( MAX_LAG_8KHZ + 4 )
-#define D_COMP_STRIDE ( D_COMP_MAX - D_COMP_MIN )
-
-typedef opus_int32 silk_pe_stage3_vals[ PE_NB_STAGE3_LAGS ];
-
-/************************************************************/
-/* Internally used functions */
-/************************************************************/
-static void silk_P_Ana_calc_corr_st3(
- silk_pe_stage3_vals cross_corr_st3[], /* O 3 DIM correlation array */
- const opus_int16 frame[], /* I vector to correlate */
- opus_int start_lag, /* I lag offset to search around */
- opus_int sf_length, /* I length of a 5 ms subframe */
- opus_int nb_subfr, /* I number of subframes */
- opus_int complexity, /* I Complexity setting */
- int arch /* I Run-time architecture */
-);
-
-static void silk_P_Ana_calc_energy_st3(
- silk_pe_stage3_vals energies_st3[], /* O 3 DIM energy array */
- const opus_int16 frame[], /* I vector to calc energy in */
- opus_int start_lag, /* I lag offset to search around */
- opus_int sf_length, /* I length of one 5 ms subframe */
- opus_int nb_subfr, /* I number of subframes */
- opus_int complexity, /* I Complexity setting */
- int arch /* I Run-time architecture */
-);
-
-/*************************************************************/
-/* FIXED POINT CORE PITCH ANALYSIS FUNCTION */
-/*************************************************************/
-opus_int silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 unvoiced */
- const opus_int16 *frame, /* I Signal of length PE_FRAME_LENGTH_MS*Fs_kHz */
- opus_int *pitch_out, /* O 4 pitch lag values */
- opus_int16 *lagIndex, /* O Lag Index */
- opus_int8 *contourIndex, /* O Pitch contour Index */
- opus_int *LTPCorr_Q15, /* I/O Normalized correlation; input: value from previous frame */
- opus_int prevLag, /* I Last lag of previous frame; set to zero is unvoiced */
- const opus_int32 search_thres1_Q16, /* I First stage threshold for lag candidates 0 - 1 */
- const opus_int search_thres2_Q13, /* I Final threshold for lag candidates 0 - 1 */
- const opus_int Fs_kHz, /* I Sample frequency (kHz) */
- const opus_int complexity, /* I Complexity setting, 0-2, where 2 is highest */
- const opus_int nb_subfr, /* I number of 5 ms subframes */
- int arch /* I Run-time architecture */
-)
-{
- VARDECL( opus_int16, frame_8kHz );
- VARDECL( opus_int16, frame_4kHz );
- opus_int32 filt_state[ 6 ];
- const opus_int16 *input_frame_ptr;
- opus_int i, k, d, j;
- VARDECL( opus_int16, C );
- VARDECL( opus_int32, xcorr32 );
- const opus_int16 *target_ptr, *basis_ptr;
- opus_int32 cross_corr, normalizer, energy, shift, energy_basis, energy_target;
- opus_int d_srch[ PE_D_SRCH_LENGTH ], Cmax, length_d_srch, length_d_comp;
- VARDECL( opus_int16, d_comp );
- opus_int32 sum, threshold, lag_counter;
- opus_int CBimax, CBimax_new, CBimax_old, lag, start_lag, end_lag, lag_new;
- opus_int32 CC[ PE_NB_CBKS_STAGE2_EXT ], CCmax, CCmax_b, CCmax_new_b, CCmax_new;
- VARDECL( silk_pe_stage3_vals, energies_st3 );
- VARDECL( silk_pe_stage3_vals, cross_corr_st3 );
- opus_int frame_length, frame_length_8kHz, frame_length_4kHz;
- opus_int sf_length;
- opus_int min_lag;
- opus_int max_lag;
- opus_int32 contour_bias_Q15, diff;
- opus_int nb_cbk_search, cbk_size;
- opus_int32 delta_lag_log2_sqr_Q7, lag_log2_Q7, prevLag_log2_Q7, prev_lag_bias_Q13;
- const opus_int8 *Lag_CB_ptr;
- SAVE_STACK;
- /* Check for valid sampling frequency */
- silk_assert( Fs_kHz == 8 || Fs_kHz == 12 || Fs_kHz == 16 );
-
- /* Check for valid complexity setting */
- silk_assert( complexity >= SILK_PE_MIN_COMPLEX );
- silk_assert( complexity <= SILK_PE_MAX_COMPLEX );
-
- silk_assert( search_thres1_Q16 >= 0 && search_thres1_Q16 <= (1<<16) );
- silk_assert( search_thres2_Q13 >= 0 && search_thres2_Q13 <= (1<<13) );
-
- /* Set up frame lengths max / min lag for the sampling frequency */
- frame_length = ( PE_LTP_MEM_LENGTH_MS + nb_subfr * PE_SUBFR_LENGTH_MS ) * Fs_kHz;
- frame_length_4kHz = ( PE_LTP_MEM_LENGTH_MS + nb_subfr * PE_SUBFR_LENGTH_MS ) * 4;
- frame_length_8kHz = ( PE_LTP_MEM_LENGTH_MS + nb_subfr * PE_SUBFR_LENGTH_MS ) * 8;
- sf_length = PE_SUBFR_LENGTH_MS * Fs_kHz;
- min_lag = PE_MIN_LAG_MS * Fs_kHz;
- max_lag = PE_MAX_LAG_MS * Fs_kHz - 1;
-
- /* Resample from input sampled at Fs_kHz to 8 kHz */
- ALLOC( frame_8kHz, frame_length_8kHz, opus_int16 );
- if( Fs_kHz == 16 ) {
- silk_memset( filt_state, 0, 2 * sizeof( opus_int32 ) );
- silk_resampler_down2( filt_state, frame_8kHz, frame, frame_length );
- } else if( Fs_kHz == 12 ) {
- silk_memset( filt_state, 0, 6 * sizeof( opus_int32 ) );
- silk_resampler_down2_3( filt_state, frame_8kHz, frame, frame_length );
- } else {
- silk_assert( Fs_kHz == 8 );
- silk_memcpy( frame_8kHz, frame, frame_length_8kHz * sizeof(opus_int16) );
- }
-
- /* Decimate again to 4 kHz */
- silk_memset( filt_state, 0, 2 * sizeof( opus_int32 ) );/* Set state to zero */
- ALLOC( frame_4kHz, frame_length_4kHz, opus_int16 );
- silk_resampler_down2( filt_state, frame_4kHz, frame_8kHz, frame_length_8kHz );
-
- /* Low-pass filter */
- for( i = frame_length_4kHz - 1; i > 0; i-- ) {
- frame_4kHz[ i ] = silk_ADD_SAT16( frame_4kHz[ i ], frame_4kHz[ i - 1 ] );
- }
-
- /*******************************************************************************
- ** Scale 4 kHz signal down to prevent correlations measures from overflowing
- ** find scaling as max scaling for each 8kHz(?) subframe
- *******************************************************************************/
-
- /* Inner product is calculated with different lengths, so scale for the worst case */
- silk_sum_sqr_shift( &energy, &shift, frame_4kHz, frame_length_4kHz );
- if( shift > 0 ) {
- shift = silk_RSHIFT( shift, 1 );
- for( i = 0; i < frame_length_4kHz; i++ ) {
- frame_4kHz[ i ] = silk_RSHIFT( frame_4kHz[ i ], shift );
- }
- }
-
- /******************************************************************************
- * FIRST STAGE, operating in 4 khz
- ******************************************************************************/
- ALLOC( C, nb_subfr * CSTRIDE_8KHZ, opus_int16 );
- ALLOC( xcorr32, MAX_LAG_4KHZ-MIN_LAG_4KHZ+1, opus_int32 );
- silk_memset( C, 0, (nb_subfr >> 1) * CSTRIDE_4KHZ * sizeof( opus_int16 ) );
- target_ptr = &frame_4kHz[ silk_LSHIFT( SF_LENGTH_4KHZ, 2 ) ];
- for( k = 0; k < nb_subfr >> 1; k++ ) {
- /* Check that we are within range of the array */
- silk_assert( target_ptr >= frame_4kHz );
- silk_assert( target_ptr + SF_LENGTH_8KHZ <= frame_4kHz + frame_length_4kHz );
-
- basis_ptr = target_ptr - MIN_LAG_4KHZ;
-
- /* Check that we are within range of the array */
- silk_assert( basis_ptr >= frame_4kHz );
- silk_assert( basis_ptr + SF_LENGTH_8KHZ <= frame_4kHz + frame_length_4kHz );
-
- celt_pitch_xcorr( target_ptr, target_ptr - MAX_LAG_4KHZ, xcorr32, SF_LENGTH_8KHZ, MAX_LAG_4KHZ - MIN_LAG_4KHZ + 1, arch );
-
- /* Calculate first vector products before loop */
- cross_corr = xcorr32[ MAX_LAG_4KHZ - MIN_LAG_4KHZ ];
- normalizer = silk_inner_prod_aligned( target_ptr, target_ptr, SF_LENGTH_8KHZ, arch );
- normalizer = silk_ADD32( normalizer, silk_inner_prod_aligned( basis_ptr, basis_ptr, SF_LENGTH_8KHZ, arch ) );
- normalizer = silk_ADD32( normalizer, silk_SMULBB( SF_LENGTH_8KHZ, 4000 ) );
-
- matrix_ptr( C, k, 0, CSTRIDE_4KHZ ) =
- (opus_int16)silk_DIV32_varQ( cross_corr, normalizer, 13 + 1 ); /* Q13 */
-
- /* From now on normalizer is computed recursively */
- for( d = MIN_LAG_4KHZ + 1; d <= MAX_LAG_4KHZ; d++ ) {
- basis_ptr--;
-
- /* Check that we are within range of the array */
- silk_assert( basis_ptr >= frame_4kHz );
- silk_assert( basis_ptr + SF_LENGTH_8KHZ <= frame_4kHz + frame_length_4kHz );
-
- cross_corr = xcorr32[ MAX_LAG_4KHZ - d ];
-
- /* Add contribution of new sample and remove contribution from oldest sample */
- normalizer = silk_ADD32( normalizer,
- silk_SMULBB( basis_ptr[ 0 ], basis_ptr[ 0 ] ) -
- silk_SMULBB( basis_ptr[ SF_LENGTH_8KHZ ], basis_ptr[ SF_LENGTH_8KHZ ] ) );
-
- matrix_ptr( C, k, d - MIN_LAG_4KHZ, CSTRIDE_4KHZ) =
- (opus_int16)silk_DIV32_varQ( cross_corr, normalizer, 13 + 1 ); /* Q13 */
- }
- /* Update target pointer */
- target_ptr += SF_LENGTH_8KHZ;
- }
-
- /* Combine two subframes into single correlation measure and apply short-lag bias */
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- for( i = MAX_LAG_4KHZ; i >= MIN_LAG_4KHZ; i-- ) {
- sum = (opus_int32)matrix_ptr( C, 0, i - MIN_LAG_4KHZ, CSTRIDE_4KHZ )
- + (opus_int32)matrix_ptr( C, 1, i - MIN_LAG_4KHZ, CSTRIDE_4KHZ ); /* Q14 */
- sum = silk_SMLAWB( sum, sum, silk_LSHIFT( -i, 4 ) ); /* Q14 */
- C[ i - MIN_LAG_4KHZ ] = (opus_int16)sum; /* Q14 */
- }
- } else {
- /* Only short-lag bias */
- for( i = MAX_LAG_4KHZ; i >= MIN_LAG_4KHZ; i-- ) {
- sum = silk_LSHIFT( (opus_int32)C[ i - MIN_LAG_4KHZ ], 1 ); /* Q14 */
- sum = silk_SMLAWB( sum, sum, silk_LSHIFT( -i, 4 ) ); /* Q14 */
- C[ i - MIN_LAG_4KHZ ] = (opus_int16)sum; /* Q14 */
- }
- }
-
- /* Sort */
- length_d_srch = silk_ADD_LSHIFT32( 4, complexity, 1 );
- silk_assert( 3 * length_d_srch <= PE_D_SRCH_LENGTH );
- silk_insertion_sort_decreasing_int16( C, d_srch, CSTRIDE_4KHZ,
- length_d_srch );
-
- /* Escape if correlation is very low already here */
- Cmax = (opus_int)C[ 0 ]; /* Q14 */
- if( Cmax < SILK_FIX_CONST( 0.2, 14 ) ) {
- silk_memset( pitch_out, 0, nb_subfr * sizeof( opus_int ) );
- *LTPCorr_Q15 = 0;
- *lagIndex = 0;
- *contourIndex = 0;
- RESTORE_STACK;
- return 1;
- }
-
- threshold = silk_SMULWB( search_thres1_Q16, Cmax );
- for( i = 0; i < length_d_srch; i++ ) {
- /* Convert to 8 kHz indices for the sorted correlation that exceeds the threshold */
- if( C[ i ] > threshold ) {
- d_srch[ i ] = silk_LSHIFT( d_srch[ i ] + MIN_LAG_4KHZ, 1 );
- } else {
- length_d_srch = i;
- break;
- }
- }
- silk_assert( length_d_srch > 0 );
-
- ALLOC( d_comp, D_COMP_STRIDE, opus_int16 );
- for( i = D_COMP_MIN; i < D_COMP_MAX; i++ ) {
- d_comp[ i - D_COMP_MIN ] = 0;
- }
- for( i = 0; i < length_d_srch; i++ ) {
- d_comp[ d_srch[ i ] - D_COMP_MIN ] = 1;
- }
-
- /* Convolution */
- for( i = D_COMP_MAX - 1; i >= MIN_LAG_8KHZ; i-- ) {
- d_comp[ i - D_COMP_MIN ] +=
- d_comp[ i - 1 - D_COMP_MIN ] + d_comp[ i - 2 - D_COMP_MIN ];
- }
-
- length_d_srch = 0;
- for( i = MIN_LAG_8KHZ; i < MAX_LAG_8KHZ + 1; i++ ) {
- if( d_comp[ i + 1 - D_COMP_MIN ] > 0 ) {
- d_srch[ length_d_srch ] = i;
- length_d_srch++;
- }
- }
-
- /* Convolution */
- for( i = D_COMP_MAX - 1; i >= MIN_LAG_8KHZ; i-- ) {
- d_comp[ i - D_COMP_MIN ] += d_comp[ i - 1 - D_COMP_MIN ]
- + d_comp[ i - 2 - D_COMP_MIN ] + d_comp[ i - 3 - D_COMP_MIN ];
- }
-
- length_d_comp = 0;
- for( i = MIN_LAG_8KHZ; i < D_COMP_MAX; i++ ) {
- if( d_comp[ i - D_COMP_MIN ] > 0 ) {
- d_comp[ length_d_comp ] = i - 2;
- length_d_comp++;
- }
- }
-
- /**********************************************************************************
- ** SECOND STAGE, operating at 8 kHz, on lag sections with high correlation
- *************************************************************************************/
-
- /******************************************************************************
- ** Scale signal down to avoid correlations measures from overflowing
- *******************************************************************************/
- /* find scaling as max scaling for each subframe */
- silk_sum_sqr_shift( &energy, &shift, frame_8kHz, frame_length_8kHz );
- if( shift > 0 ) {
- shift = silk_RSHIFT( shift, 1 );
- for( i = 0; i < frame_length_8kHz; i++ ) {
- frame_8kHz[ i ] = silk_RSHIFT( frame_8kHz[ i ], shift );
- }
- }
-
- /*********************************************************************************
- * Find energy of each subframe projected onto its history, for a range of delays
- *********************************************************************************/
- silk_memset( C, 0, nb_subfr * CSTRIDE_8KHZ * sizeof( opus_int16 ) );
-
- target_ptr = &frame_8kHz[ PE_LTP_MEM_LENGTH_MS * 8 ];
- for( k = 0; k < nb_subfr; k++ ) {
-
- /* Check that we are within range of the array */
- silk_assert( target_ptr >= frame_8kHz );
- silk_assert( target_ptr + SF_LENGTH_8KHZ <= frame_8kHz + frame_length_8kHz );
-
- energy_target = silk_ADD32( silk_inner_prod_aligned( target_ptr, target_ptr, SF_LENGTH_8KHZ, arch ), 1 );
- for( j = 0; j < length_d_comp; j++ ) {
- d = d_comp[ j ];
- basis_ptr = target_ptr - d;
-
- /* Check that we are within range of the array */
- silk_assert( basis_ptr >= frame_8kHz );
- silk_assert( basis_ptr + SF_LENGTH_8KHZ <= frame_8kHz + frame_length_8kHz );
-
- cross_corr = silk_inner_prod_aligned( target_ptr, basis_ptr, SF_LENGTH_8KHZ, arch );
- if( cross_corr > 0 ) {
- energy_basis = silk_inner_prod_aligned( basis_ptr, basis_ptr, SF_LENGTH_8KHZ, arch );
- matrix_ptr( C, k, d - ( MIN_LAG_8KHZ - 2 ), CSTRIDE_8KHZ ) =
- (opus_int16)silk_DIV32_varQ( cross_corr,
- silk_ADD32( energy_target,
- energy_basis ),
- 13 + 1 ); /* Q13 */
- } else {
- matrix_ptr( C, k, d - ( MIN_LAG_8KHZ - 2 ), CSTRIDE_8KHZ ) = 0;
- }
- }
- target_ptr += SF_LENGTH_8KHZ;
- }
-
- /* search over lag range and lags codebook */
- /* scale factor for lag codebook, as a function of center lag */
-
- CCmax = silk_int32_MIN;
- CCmax_b = silk_int32_MIN;
-
- CBimax = 0; /* To avoid returning undefined lag values */
- lag = -1; /* To check if lag with strong enough correlation has been found */
-
- if( prevLag > 0 ) {
- if( Fs_kHz == 12 ) {
- prevLag = silk_DIV32_16( silk_LSHIFT( prevLag, 1 ), 3 );
- } else if( Fs_kHz == 16 ) {
- prevLag = silk_RSHIFT( prevLag, 1 );
- }
- prevLag_log2_Q7 = silk_lin2log( (opus_int32)prevLag );
- } else {
- prevLag_log2_Q7 = 0;
- }
- silk_assert( search_thres2_Q13 == silk_SAT16( search_thres2_Q13 ) );
- /* Set up stage 2 codebook based on number of subframes */
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- cbk_size = PE_NB_CBKS_STAGE2_EXT;
- Lag_CB_ptr = &silk_CB_lags_stage2[ 0 ][ 0 ];
- if( Fs_kHz == 8 && complexity > SILK_PE_MIN_COMPLEX ) {
- /* If input is 8 khz use a larger codebook here because it is last stage */
- nb_cbk_search = PE_NB_CBKS_STAGE2_EXT;
- } else {
- nb_cbk_search = PE_NB_CBKS_STAGE2;
- }
- } else {
- cbk_size = PE_NB_CBKS_STAGE2_10MS;
- Lag_CB_ptr = &silk_CB_lags_stage2_10_ms[ 0 ][ 0 ];
- nb_cbk_search = PE_NB_CBKS_STAGE2_10MS;
- }
-
- for( k = 0; k < length_d_srch; k++ ) {
- d = d_srch[ k ];
- for( j = 0; j < nb_cbk_search; j++ ) {
- CC[ j ] = 0;
- for( i = 0; i < nb_subfr; i++ ) {
- opus_int d_subfr;
- /* Try all codebooks */
- d_subfr = d + matrix_ptr( Lag_CB_ptr, i, j, cbk_size );
- CC[ j ] = CC[ j ]
- + (opus_int32)matrix_ptr( C, i,
- d_subfr - ( MIN_LAG_8KHZ - 2 ),
- CSTRIDE_8KHZ );
- }
- }
- /* Find best codebook */
- CCmax_new = silk_int32_MIN;
- CBimax_new = 0;
- for( i = 0; i < nb_cbk_search; i++ ) {
- if( CC[ i ] > CCmax_new ) {
- CCmax_new = CC[ i ];
- CBimax_new = i;
- }
- }
-
- /* Bias towards shorter lags */
- lag_log2_Q7 = silk_lin2log( d ); /* Q7 */
- silk_assert( lag_log2_Q7 == silk_SAT16( lag_log2_Q7 ) );
- silk_assert( nb_subfr * SILK_FIX_CONST( PE_SHORTLAG_BIAS, 13 ) == silk_SAT16( nb_subfr * SILK_FIX_CONST( PE_SHORTLAG_BIAS, 13 ) ) );
- CCmax_new_b = CCmax_new - silk_RSHIFT( silk_SMULBB( nb_subfr * SILK_FIX_CONST( PE_SHORTLAG_BIAS, 13 ), lag_log2_Q7 ), 7 ); /* Q13 */
-
- /* Bias towards previous lag */
- silk_assert( nb_subfr * SILK_FIX_CONST( PE_PREVLAG_BIAS, 13 ) == silk_SAT16( nb_subfr * SILK_FIX_CONST( PE_PREVLAG_BIAS, 13 ) ) );
- if( prevLag > 0 ) {
- delta_lag_log2_sqr_Q7 = lag_log2_Q7 - prevLag_log2_Q7;
- silk_assert( delta_lag_log2_sqr_Q7 == silk_SAT16( delta_lag_log2_sqr_Q7 ) );
- delta_lag_log2_sqr_Q7 = silk_RSHIFT( silk_SMULBB( delta_lag_log2_sqr_Q7, delta_lag_log2_sqr_Q7 ), 7 );
- prev_lag_bias_Q13 = silk_RSHIFT( silk_SMULBB( nb_subfr * SILK_FIX_CONST( PE_PREVLAG_BIAS, 13 ), *LTPCorr_Q15 ), 15 ); /* Q13 */
- prev_lag_bias_Q13 = silk_DIV32( silk_MUL( prev_lag_bias_Q13, delta_lag_log2_sqr_Q7 ), delta_lag_log2_sqr_Q7 + SILK_FIX_CONST( 0.5, 7 ) );
- CCmax_new_b -= prev_lag_bias_Q13; /* Q13 */
- }
-
- if( CCmax_new_b > CCmax_b && /* Find maximum biased correlation */
- CCmax_new > silk_SMULBB( nb_subfr, search_thres2_Q13 ) && /* Correlation needs to be high enough to be voiced */
- silk_CB_lags_stage2[ 0 ][ CBimax_new ] <= MIN_LAG_8KHZ /* Lag must be in range */
- ) {
- CCmax_b = CCmax_new_b;
- CCmax = CCmax_new;
- lag = d;
- CBimax = CBimax_new;
- }
- }
-
- if( lag == -1 ) {
- /* No suitable candidate found */
- silk_memset( pitch_out, 0, nb_subfr * sizeof( opus_int ) );
- *LTPCorr_Q15 = 0;
- *lagIndex = 0;
- *contourIndex = 0;
- RESTORE_STACK;
- return 1;
- }
-
- /* Output normalized correlation */
- *LTPCorr_Q15 = (opus_int)silk_LSHIFT( silk_DIV32_16( CCmax, nb_subfr ), 2 );
- silk_assert( *LTPCorr_Q15 >= 0 );
-
- if( Fs_kHz > 8 ) {
- VARDECL( opus_int16, scratch_mem );
- /***************************************************************************/
- /* Scale input signal down to avoid correlations measures from overflowing */
- /***************************************************************************/
- /* find scaling as max scaling for each subframe */
- silk_sum_sqr_shift( &energy, &shift, frame, frame_length );
- ALLOC( scratch_mem, shift > 0 ? frame_length : ALLOC_NONE, opus_int16 );
- if( shift > 0 ) {
- /* Move signal to scratch mem because the input signal should be unchanged */
- shift = silk_RSHIFT( shift, 1 );
- for( i = 0; i < frame_length; i++ ) {
- scratch_mem[ i ] = silk_RSHIFT( frame[ i ], shift );
- }
- input_frame_ptr = scratch_mem;
- } else {
- input_frame_ptr = frame;
- }
-
- /* Search in original signal */
-
- CBimax_old = CBimax;
- /* Compensate for decimation */
- silk_assert( lag == silk_SAT16( lag ) );
- if( Fs_kHz == 12 ) {
- lag = silk_RSHIFT( silk_SMULBB( lag, 3 ), 1 );
- } else if( Fs_kHz == 16 ) {
- lag = silk_LSHIFT( lag, 1 );
- } else {
- lag = silk_SMULBB( lag, 3 );
- }
-
- lag = silk_LIMIT_int( lag, min_lag, max_lag );
- start_lag = silk_max_int( lag - 2, min_lag );
- end_lag = silk_min_int( lag + 2, max_lag );
- lag_new = lag; /* to avoid undefined lag */
- CBimax = 0; /* to avoid undefined lag */
-
- CCmax = silk_int32_MIN;
- /* pitch lags according to second stage */
- for( k = 0; k < nb_subfr; k++ ) {
- pitch_out[ k ] = lag + 2 * silk_CB_lags_stage2[ k ][ CBimax_old ];
- }
-
- /* Set up codebook parameters according to complexity setting and frame length */
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- nb_cbk_search = (opus_int)silk_nb_cbk_searchs_stage3[ complexity ];
- cbk_size = PE_NB_CBKS_STAGE3_MAX;
- Lag_CB_ptr = &silk_CB_lags_stage3[ 0 ][ 0 ];
- } else {
- nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
- cbk_size = PE_NB_CBKS_STAGE3_10MS;
- Lag_CB_ptr = &silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
- }
-
- /* Calculate the correlations and energies needed in stage 3 */
- ALLOC( energies_st3, nb_subfr * nb_cbk_search, silk_pe_stage3_vals );
- ALLOC( cross_corr_st3, nb_subfr * nb_cbk_search, silk_pe_stage3_vals );
- silk_P_Ana_calc_corr_st3( cross_corr_st3, input_frame_ptr, start_lag, sf_length, nb_subfr, complexity, arch );
- silk_P_Ana_calc_energy_st3( energies_st3, input_frame_ptr, start_lag, sf_length, nb_subfr, complexity, arch );
-
- lag_counter = 0;
- silk_assert( lag == silk_SAT16( lag ) );
- contour_bias_Q15 = silk_DIV32_16( SILK_FIX_CONST( PE_FLATCONTOUR_BIAS, 15 ), lag );
-
- target_ptr = &input_frame_ptr[ PE_LTP_MEM_LENGTH_MS * Fs_kHz ];
- energy_target = silk_ADD32( silk_inner_prod_aligned( target_ptr, target_ptr, nb_subfr * sf_length, arch ), 1 );
- for( d = start_lag; d <= end_lag; d++ ) {
- for( j = 0; j < nb_cbk_search; j++ ) {
- cross_corr = 0;
- energy = energy_target;
- for( k = 0; k < nb_subfr; k++ ) {
- cross_corr = silk_ADD32( cross_corr,
- matrix_ptr( cross_corr_st3, k, j,
- nb_cbk_search )[ lag_counter ] );
- energy = silk_ADD32( energy,
- matrix_ptr( energies_st3, k, j,
- nb_cbk_search )[ lag_counter ] );
- silk_assert( energy >= 0 );
- }
- if( cross_corr > 0 ) {
- CCmax_new = silk_DIV32_varQ( cross_corr, energy, 13 + 1 ); /* Q13 */
- /* Reduce depending on flatness of contour */
- diff = silk_int16_MAX - silk_MUL( contour_bias_Q15, j ); /* Q15 */
- silk_assert( diff == silk_SAT16( diff ) );
- CCmax_new = silk_SMULWB( CCmax_new, diff ); /* Q14 */
- } else {
- CCmax_new = 0;
- }
-
- if( CCmax_new > CCmax && ( d + silk_CB_lags_stage3[ 0 ][ j ] ) <= max_lag ) {
- CCmax = CCmax_new;
- lag_new = d;
- CBimax = j;
- }
- }
- lag_counter++;
- }
-
- for( k = 0; k < nb_subfr; k++ ) {
- pitch_out[ k ] = lag_new + matrix_ptr( Lag_CB_ptr, k, CBimax, cbk_size );
- pitch_out[ k ] = silk_LIMIT( pitch_out[ k ], min_lag, PE_MAX_LAG_MS * Fs_kHz );
- }
- *lagIndex = (opus_int16)( lag_new - min_lag);
- *contourIndex = (opus_int8)CBimax;
- } else { /* Fs_kHz == 8 */
- /* Save Lags */
- for( k = 0; k < nb_subfr; k++ ) {
- pitch_out[ k ] = lag + matrix_ptr( Lag_CB_ptr, k, CBimax, cbk_size );
- pitch_out[ k ] = silk_LIMIT( pitch_out[ k ], MIN_LAG_8KHZ, PE_MAX_LAG_MS * 8 );
- }
- *lagIndex = (opus_int16)( lag - MIN_LAG_8KHZ );
- *contourIndex = (opus_int8)CBimax;
- }
- silk_assert( *lagIndex >= 0 );
- /* return as voiced */
- RESTORE_STACK;
- return 0;
-}
-
-/***********************************************************************
- * Calculates the correlations used in stage 3 search. In order to cover
- * the whole lag codebook for all the searched offset lags (lag +- 2),
- * the following correlations are needed in each sub frame:
- *
- * sf1: lag range [-8,...,7] total 16 correlations
- * sf2: lag range [-4,...,4] total 9 correlations
- * sf3: lag range [-3,....4] total 8 correltions
- * sf4: lag range [-6,....8] total 15 correlations
- *
- * In total 48 correlations. The direct implementation computed in worst
- * case 4*12*5 = 240 correlations, but more likely around 120.
- ***********************************************************************/
-static void silk_P_Ana_calc_corr_st3(
- silk_pe_stage3_vals cross_corr_st3[], /* O 3 DIM correlation array */
- const opus_int16 frame[], /* I vector to correlate */
- opus_int start_lag, /* I lag offset to search around */
- opus_int sf_length, /* I length of a 5 ms subframe */
- opus_int nb_subfr, /* I number of subframes */
- opus_int complexity, /* I Complexity setting */
- int arch /* I Run-time architecture */
-)
-{
- const opus_int16 *target_ptr;
- opus_int i, j, k, lag_counter, lag_low, lag_high;
- opus_int nb_cbk_search, delta, idx, cbk_size;
- VARDECL( opus_int32, scratch_mem );
- VARDECL( opus_int32, xcorr32 );
- const opus_int8 *Lag_range_ptr, *Lag_CB_ptr;
- SAVE_STACK;
-
- silk_assert( complexity >= SILK_PE_MIN_COMPLEX );
- silk_assert( complexity <= SILK_PE_MAX_COMPLEX );
-
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- Lag_range_ptr = &silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ];
- Lag_CB_ptr = &silk_CB_lags_stage3[ 0 ][ 0 ];
- nb_cbk_search = silk_nb_cbk_searchs_stage3[ complexity ];
- cbk_size = PE_NB_CBKS_STAGE3_MAX;
- } else {
- silk_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1);
- Lag_range_ptr = &silk_Lag_range_stage3_10_ms[ 0 ][ 0 ];
- Lag_CB_ptr = &silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
- nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
- cbk_size = PE_NB_CBKS_STAGE3_10MS;
- }
- ALLOC( scratch_mem, SCRATCH_SIZE, opus_int32 );
- ALLOC( xcorr32, SCRATCH_SIZE, opus_int32 );
-
- target_ptr = &frame[ silk_LSHIFT( sf_length, 2 ) ]; /* Pointer to middle of frame */
- for( k = 0; k < nb_subfr; k++ ) {
- lag_counter = 0;
-
- /* Calculate the correlations for each subframe */
- lag_low = matrix_ptr( Lag_range_ptr, k, 0, 2 );
- lag_high = matrix_ptr( Lag_range_ptr, k, 1, 2 );
- silk_assert(lag_high-lag_low+1 <= SCRATCH_SIZE);
- celt_pitch_xcorr( target_ptr, target_ptr - start_lag - lag_high, xcorr32, sf_length, lag_high - lag_low + 1, arch );
- for( j = lag_low; j <= lag_high; j++ ) {
- silk_assert( lag_counter < SCRATCH_SIZE );
- scratch_mem[ lag_counter ] = xcorr32[ lag_high - j ];
- lag_counter++;
- }
-
- delta = matrix_ptr( Lag_range_ptr, k, 0, 2 );
- for( i = 0; i < nb_cbk_search; i++ ) {
- /* Fill out the 3 dim array that stores the correlations for */
- /* each code_book vector for each start lag */
- idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta;
- for( j = 0; j < PE_NB_STAGE3_LAGS; j++ ) {
- silk_assert( idx + j < SCRATCH_SIZE );
- silk_assert( idx + j < lag_counter );
- matrix_ptr( cross_corr_st3, k, i, nb_cbk_search )[ j ] =
- scratch_mem[ idx + j ];
- }
- }
- target_ptr += sf_length;
- }
- RESTORE_STACK;
-}
-
-/********************************************************************/
-/* Calculate the energies for first two subframes. The energies are */
-/* calculated recursively. */
-/********************************************************************/
-static void silk_P_Ana_calc_energy_st3(
- silk_pe_stage3_vals energies_st3[], /* O 3 DIM energy array */
- const opus_int16 frame[], /* I vector to calc energy in */
- opus_int start_lag, /* I lag offset to search around */
- opus_int sf_length, /* I length of one 5 ms subframe */
- opus_int nb_subfr, /* I number of subframes */
- opus_int complexity, /* I Complexity setting */
- int arch /* I Run-time architecture */
-)
-{
- const opus_int16 *target_ptr, *basis_ptr;
- opus_int32 energy;
- opus_int k, i, j, lag_counter;
- opus_int nb_cbk_search, delta, idx, cbk_size, lag_diff;
- VARDECL( opus_int32, scratch_mem );
- const opus_int8 *Lag_range_ptr, *Lag_CB_ptr;
- SAVE_STACK;
-
- silk_assert( complexity >= SILK_PE_MIN_COMPLEX );
- silk_assert( complexity <= SILK_PE_MAX_COMPLEX );
-
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- Lag_range_ptr = &silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ];
- Lag_CB_ptr = &silk_CB_lags_stage3[ 0 ][ 0 ];
- nb_cbk_search = silk_nb_cbk_searchs_stage3[ complexity ];
- cbk_size = PE_NB_CBKS_STAGE3_MAX;
- } else {
- silk_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1);
- Lag_range_ptr = &silk_Lag_range_stage3_10_ms[ 0 ][ 0 ];
- Lag_CB_ptr = &silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
- nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
- cbk_size = PE_NB_CBKS_STAGE3_10MS;
- }
- ALLOC( scratch_mem, SCRATCH_SIZE, opus_int32 );
-
- target_ptr = &frame[ silk_LSHIFT( sf_length, 2 ) ];
- for( k = 0; k < nb_subfr; k++ ) {
- lag_counter = 0;
-
- /* Calculate the energy for first lag */
- basis_ptr = target_ptr - ( start_lag + matrix_ptr( Lag_range_ptr, k, 0, 2 ) );
- energy = silk_inner_prod_aligned( basis_ptr, basis_ptr, sf_length, arch );
- silk_assert( energy >= 0 );
- scratch_mem[ lag_counter ] = energy;
- lag_counter++;
-
- lag_diff = ( matrix_ptr( Lag_range_ptr, k, 1, 2 ) - matrix_ptr( Lag_range_ptr, k, 0, 2 ) + 1 );
- for( i = 1; i < lag_diff; i++ ) {
- /* remove part outside new window */
- energy -= silk_SMULBB( basis_ptr[ sf_length - i ], basis_ptr[ sf_length - i ] );
- silk_assert( energy >= 0 );
-
- /* add part that comes into window */
- energy = silk_ADD_SAT32( energy, silk_SMULBB( basis_ptr[ -i ], basis_ptr[ -i ] ) );
- silk_assert( energy >= 0 );
- silk_assert( lag_counter < SCRATCH_SIZE );
- scratch_mem[ lag_counter ] = energy;
- lag_counter++;
- }
-
- delta = matrix_ptr( Lag_range_ptr, k, 0, 2 );
- for( i = 0; i < nb_cbk_search; i++ ) {
- /* Fill out the 3 dim array that stores the correlations for */
- /* each code_book vector for each start lag */
- idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta;
- for( j = 0; j < PE_NB_STAGE3_LAGS; j++ ) {
- silk_assert( idx + j < SCRATCH_SIZE );
- silk_assert( idx + j < lag_counter );
- matrix_ptr( energies_st3, k, i, nb_cbk_search )[ j ] =
- scratch_mem[ idx + j ];
- silk_assert(
- matrix_ptr( energies_st3, k, i, nb_cbk_search )[ j ] >= 0 );
- }
- }
- target_ptr += sf_length;
- }
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/fixed/prefilter_FIX.c b/thirdparty/opus/silk/fixed/prefilter_FIX.c
deleted file mode 100644
index 6a8e35152e..0000000000
--- a/thirdparty/opus/silk/fixed/prefilter_FIX.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-#include "tuning_parameters.h"
-
-#if defined(MIPSr1_ASM)
-#include "mips/prefilter_FIX_mipsr1.h"
-#endif
-
-
-#if !defined(OVERRIDE_silk_warped_LPC_analysis_filter_FIX)
-#define silk_warped_LPC_analysis_filter_FIX(state, res_Q2, coef_Q13, input, lambda_Q16, length, order, arch) \
- ((void)(arch),silk_warped_LPC_analysis_filter_FIX_c(state, res_Q2, coef_Q13, input, lambda_Q16, length, order))
-#endif
-
-/* Prefilter for finding Quantizer input signal */
-static OPUS_INLINE void silk_prefilt_FIX(
- silk_prefilter_state_FIX *P, /* I/O state */
- opus_int32 st_res_Q12[], /* I short term residual signal */
- opus_int32 xw_Q3[], /* O prefiltered signal */
- opus_int32 HarmShapeFIRPacked_Q12, /* I Harmonic shaping coeficients */
- opus_int Tilt_Q14, /* I Tilt shaping coeficient */
- opus_int32 LF_shp_Q14, /* I Low-frequancy shaping coeficients */
- opus_int lag, /* I Lag for harmonic shaping */
- opus_int length /* I Length of signals */
-);
-
-void silk_warped_LPC_analysis_filter_FIX_c(
- opus_int32 state[], /* I/O State [order + 1] */
- opus_int32 res_Q2[], /* O Residual signal [length] */
- const opus_int16 coef_Q13[], /* I Coefficients [order] */
- const opus_int16 input[], /* I Input signal [length] */
- const opus_int16 lambda_Q16, /* I Warping factor */
- const opus_int length, /* I Length of input signal */
- const opus_int order /* I Filter order (even) */
-)
-{
- opus_int n, i;
- opus_int32 acc_Q11, tmp1, tmp2;
-
- /* Order must be even */
- silk_assert( ( order & 1 ) == 0 );
-
- for( n = 0; n < length; n++ ) {
- /* Output of lowpass section */
- tmp2 = silk_SMLAWB( state[ 0 ], state[ 1 ], lambda_Q16 );
- state[ 0 ] = silk_LSHIFT( input[ n ], 14 );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( state[ 1 ], state[ 2 ] - tmp2, lambda_Q16 );
- state[ 1 ] = tmp2;
- acc_Q11 = silk_RSHIFT( order, 1 );
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp2, coef_Q13[ 0 ] );
- /* Loop over allpass sections */
- for( i = 2; i < order; i += 2 ) {
- /* Output of allpass section */
- tmp2 = silk_SMLAWB( state[ i ], state[ i + 1 ] - tmp1, lambda_Q16 );
- state[ i ] = tmp1;
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp1, coef_Q13[ i - 1 ] );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( state[ i + 1 ], state[ i + 2 ] - tmp2, lambda_Q16 );
- state[ i + 1 ] = tmp2;
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp2, coef_Q13[ i ] );
- }
- state[ order ] = tmp1;
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp1, coef_Q13[ order - 1 ] );
- res_Q2[ n ] = silk_LSHIFT( (opus_int32)input[ n ], 2 ) - silk_RSHIFT_ROUND( acc_Q11, 9 );
- }
-}
-
-void silk_prefilter_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Encoder state */
- const silk_encoder_control_FIX *psEncCtrl, /* I Encoder control */
- opus_int32 xw_Q3[], /* O Weighted signal */
- const opus_int16 x[] /* I Speech signal */
-)
-{
- silk_prefilter_state_FIX *P = &psEnc->sPrefilt;
- opus_int j, k, lag;
- opus_int32 tmp_32;
- const opus_int16 *AR1_shp_Q13;
- const opus_int16 *px;
- opus_int32 *pxw_Q3;
- opus_int HarmShapeGain_Q12, Tilt_Q14;
- opus_int32 HarmShapeFIRPacked_Q12, LF_shp_Q14;
- VARDECL( opus_int32, x_filt_Q12 );
- VARDECL( opus_int32, st_res_Q2 );
- opus_int16 B_Q10[ 2 ];
- SAVE_STACK;
-
- /* Set up pointers */
- px = x;
- pxw_Q3 = xw_Q3;
- lag = P->lagPrev;
- ALLOC( x_filt_Q12, psEnc->sCmn.subfr_length, opus_int32 );
- ALLOC( st_res_Q2, psEnc->sCmn.subfr_length, opus_int32 );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- /* Update Variables that change per sub frame */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- lag = psEncCtrl->pitchL[ k ];
- }
-
- /* Noise shape parameters */
- HarmShapeGain_Q12 = silk_SMULWB( (opus_int32)psEncCtrl->HarmShapeGain_Q14[ k ], 16384 - psEncCtrl->HarmBoost_Q14[ k ] );
- silk_assert( HarmShapeGain_Q12 >= 0 );
- HarmShapeFIRPacked_Q12 = silk_RSHIFT( HarmShapeGain_Q12, 2 );
- HarmShapeFIRPacked_Q12 |= silk_LSHIFT( (opus_int32)silk_RSHIFT( HarmShapeGain_Q12, 1 ), 16 );
- Tilt_Q14 = psEncCtrl->Tilt_Q14[ k ];
- LF_shp_Q14 = psEncCtrl->LF_shp_Q14[ k ];
- AR1_shp_Q13 = &psEncCtrl->AR1_Q13[ k * MAX_SHAPE_LPC_ORDER ];
-
- /* Short term FIR filtering*/
- silk_warped_LPC_analysis_filter_FIX( P->sAR_shp, st_res_Q2, AR1_shp_Q13, px,
- psEnc->sCmn.warping_Q16, psEnc->sCmn.subfr_length, psEnc->sCmn.shapingLPCOrder, psEnc->sCmn.arch );
-
- /* Reduce (mainly) low frequencies during harmonic emphasis */
- B_Q10[ 0 ] = silk_RSHIFT_ROUND( psEncCtrl->GainsPre_Q14[ k ], 4 );
- tmp_32 = silk_SMLABB( SILK_FIX_CONST( INPUT_TILT, 26 ), psEncCtrl->HarmBoost_Q14[ k ], HarmShapeGain_Q12 ); /* Q26 */
- tmp_32 = silk_SMLABB( tmp_32, psEncCtrl->coding_quality_Q14, SILK_FIX_CONST( HIGH_RATE_INPUT_TILT, 12 ) ); /* Q26 */
- tmp_32 = silk_SMULWB( tmp_32, -psEncCtrl->GainsPre_Q14[ k ] ); /* Q24 */
- tmp_32 = silk_RSHIFT_ROUND( tmp_32, 14 ); /* Q10 */
- B_Q10[ 1 ]= silk_SAT16( tmp_32 );
- x_filt_Q12[ 0 ] = silk_MLA( silk_MUL( st_res_Q2[ 0 ], B_Q10[ 0 ] ), P->sHarmHP_Q2, B_Q10[ 1 ] );
- for( j = 1; j < psEnc->sCmn.subfr_length; j++ ) {
- x_filt_Q12[ j ] = silk_MLA( silk_MUL( st_res_Q2[ j ], B_Q10[ 0 ] ), st_res_Q2[ j - 1 ], B_Q10[ 1 ] );
- }
- P->sHarmHP_Q2 = st_res_Q2[ psEnc->sCmn.subfr_length - 1 ];
-
- silk_prefilt_FIX( P, x_filt_Q12, pxw_Q3, HarmShapeFIRPacked_Q12, Tilt_Q14, LF_shp_Q14, lag, psEnc->sCmn.subfr_length );
-
- px += psEnc->sCmn.subfr_length;
- pxw_Q3 += psEnc->sCmn.subfr_length;
- }
-
- P->lagPrev = psEncCtrl->pitchL[ psEnc->sCmn.nb_subfr - 1 ];
- RESTORE_STACK;
-}
-
-#ifndef OVERRIDE_silk_prefilt_FIX
-/* Prefilter for finding Quantizer input signal */
-static OPUS_INLINE void silk_prefilt_FIX(
- silk_prefilter_state_FIX *P, /* I/O state */
- opus_int32 st_res_Q12[], /* I short term residual signal */
- opus_int32 xw_Q3[], /* O prefiltered signal */
- opus_int32 HarmShapeFIRPacked_Q12, /* I Harmonic shaping coeficients */
- opus_int Tilt_Q14, /* I Tilt shaping coeficient */
- opus_int32 LF_shp_Q14, /* I Low-frequancy shaping coeficients */
- opus_int lag, /* I Lag for harmonic shaping */
- opus_int length /* I Length of signals */
-)
-{
- opus_int i, idx, LTP_shp_buf_idx;
- opus_int32 n_LTP_Q12, n_Tilt_Q10, n_LF_Q10;
- opus_int32 sLF_MA_shp_Q12, sLF_AR_shp_Q12;
- opus_int16 *LTP_shp_buf;
-
- /* To speed up use temp variables instead of using the struct */
- LTP_shp_buf = P->sLTP_shp;
- LTP_shp_buf_idx = P->sLTP_shp_buf_idx;
- sLF_AR_shp_Q12 = P->sLF_AR_shp_Q12;
- sLF_MA_shp_Q12 = P->sLF_MA_shp_Q12;
-
- for( i = 0; i < length; i++ ) {
- if( lag > 0 ) {
- /* unrolled loop */
- silk_assert( HARM_SHAPE_FIR_TAPS == 3 );
- idx = lag + LTP_shp_buf_idx;
- n_LTP_Q12 = silk_SMULBB( LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 - 1) & LTP_MASK ], HarmShapeFIRPacked_Q12 );
- n_LTP_Q12 = silk_SMLABT( n_LTP_Q12, LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 ) & LTP_MASK ], HarmShapeFIRPacked_Q12 );
- n_LTP_Q12 = silk_SMLABB( n_LTP_Q12, LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 + 1) & LTP_MASK ], HarmShapeFIRPacked_Q12 );
- } else {
- n_LTP_Q12 = 0;
- }
-
- n_Tilt_Q10 = silk_SMULWB( sLF_AR_shp_Q12, Tilt_Q14 );
- n_LF_Q10 = silk_SMLAWB( silk_SMULWT( sLF_AR_shp_Q12, LF_shp_Q14 ), sLF_MA_shp_Q12, LF_shp_Q14 );
-
- sLF_AR_shp_Q12 = silk_SUB32( st_res_Q12[ i ], silk_LSHIFT( n_Tilt_Q10, 2 ) );
- sLF_MA_shp_Q12 = silk_SUB32( sLF_AR_shp_Q12, silk_LSHIFT( n_LF_Q10, 2 ) );
-
- LTP_shp_buf_idx = ( LTP_shp_buf_idx - 1 ) & LTP_MASK;
- LTP_shp_buf[ LTP_shp_buf_idx ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( sLF_MA_shp_Q12, 12 ) );
-
- xw_Q3[i] = silk_RSHIFT_ROUND( silk_SUB32( sLF_MA_shp_Q12, n_LTP_Q12 ), 9 );
- }
-
- /* Copy temp variable back to state */
- P->sLF_AR_shp_Q12 = sLF_AR_shp_Q12;
- P->sLF_MA_shp_Q12 = sLF_MA_shp_Q12;
- P->sLTP_shp_buf_idx = LTP_shp_buf_idx;
-}
-#endif /* OVERRIDE_silk_prefilt_FIX */
diff --git a/thirdparty/opus/silk/fixed/process_gains_FIX.c b/thirdparty/opus/silk/fixed/process_gains_FIX.c
deleted file mode 100644
index 05aba31788..0000000000
--- a/thirdparty/opus/silk/fixed/process_gains_FIX.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "tuning_parameters.h"
-
-/* Processing of gains */
-void silk_process_gains_FIX(
- silk_encoder_state_FIX *psEnc, /* I/O Encoder state */
- silk_encoder_control_FIX *psEncCtrl, /* I/O Encoder control */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- silk_shape_state_FIX *psShapeSt = &psEnc->sShape;
- opus_int k;
- opus_int32 s_Q16, InvMaxSqrVal_Q16, gain, gain_squared, ResNrg, ResNrgPart, quant_offset_Q10;
-
- /* Gain reduction when LTP coding gain is high */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /*s = -0.5f * silk_sigmoid( 0.25f * ( psEncCtrl->LTPredCodGain - 12.0f ) ); */
- s_Q16 = -silk_sigm_Q15( silk_RSHIFT_ROUND( psEncCtrl->LTPredCodGain_Q7 - SILK_FIX_CONST( 12.0, 7 ), 4 ) );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->Gains_Q16[ k ] = silk_SMLAWB( psEncCtrl->Gains_Q16[ k ], psEncCtrl->Gains_Q16[ k ], s_Q16 );
- }
- }
-
- /* Limit the quantized signal */
- /* InvMaxSqrVal = pow( 2.0f, 0.33f * ( 21.0f - SNR_dB ) ) / subfr_length; */
- InvMaxSqrVal_Q16 = silk_DIV32_16( silk_log2lin(
- silk_SMULWB( SILK_FIX_CONST( 21 + 16 / 0.33, 7 ) - psEnc->sCmn.SNR_dB_Q7, SILK_FIX_CONST( 0.33, 16 ) ) ), psEnc->sCmn.subfr_length );
-
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- /* Soft limit on ratio residual energy and squared gains */
- ResNrg = psEncCtrl->ResNrg[ k ];
- ResNrgPart = silk_SMULWW( ResNrg, InvMaxSqrVal_Q16 );
- if( psEncCtrl->ResNrgQ[ k ] > 0 ) {
- ResNrgPart = silk_RSHIFT_ROUND( ResNrgPart, psEncCtrl->ResNrgQ[ k ] );
- } else {
- if( ResNrgPart >= silk_RSHIFT( silk_int32_MAX, -psEncCtrl->ResNrgQ[ k ] ) ) {
- ResNrgPart = silk_int32_MAX;
- } else {
- ResNrgPart = silk_LSHIFT( ResNrgPart, -psEncCtrl->ResNrgQ[ k ] );
- }
- }
- gain = psEncCtrl->Gains_Q16[ k ];
- gain_squared = silk_ADD_SAT32( ResNrgPart, silk_SMMUL( gain, gain ) );
- if( gain_squared < silk_int16_MAX ) {
- /* recalculate with higher precision */
- gain_squared = silk_SMLAWW( silk_LSHIFT( ResNrgPart, 16 ), gain, gain );
- silk_assert( gain_squared > 0 );
- gain = silk_SQRT_APPROX( gain_squared ); /* Q8 */
- gain = silk_min( gain, silk_int32_MAX >> 8 );
- psEncCtrl->Gains_Q16[ k ] = silk_LSHIFT_SAT32( gain, 8 ); /* Q16 */
- } else {
- gain = silk_SQRT_APPROX( gain_squared ); /* Q0 */
- gain = silk_min( gain, silk_int32_MAX >> 16 );
- psEncCtrl->Gains_Q16[ k ] = silk_LSHIFT_SAT32( gain, 16 ); /* Q16 */
- }
- }
-
- /* Save unquantized gains and gain Index */
- silk_memcpy( psEncCtrl->GainsUnq_Q16, psEncCtrl->Gains_Q16, psEnc->sCmn.nb_subfr * sizeof( opus_int32 ) );
- psEncCtrl->lastGainIndexPrev = psShapeSt->LastGainIndex;
-
- /* Quantize gains */
- silk_gains_quant( psEnc->sCmn.indices.GainsIndices, psEncCtrl->Gains_Q16,
- &psShapeSt->LastGainIndex, condCoding == CODE_CONDITIONALLY, psEnc->sCmn.nb_subfr );
-
- /* Set quantizer offset for voiced signals. Larger offset when LTP coding gain is low or tilt is high (ie low-pass) */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- if( psEncCtrl->LTPredCodGain_Q7 + silk_RSHIFT( psEnc->sCmn.input_tilt_Q15, 8 ) > SILK_FIX_CONST( 1.0, 7 ) ) {
- psEnc->sCmn.indices.quantOffsetType = 0;
- } else {
- psEnc->sCmn.indices.quantOffsetType = 1;
- }
- }
-
- /* Quantizer boundary adjustment */
- quant_offset_Q10 = silk_Quantization_Offsets_Q10[ psEnc->sCmn.indices.signalType >> 1 ][ psEnc->sCmn.indices.quantOffsetType ];
- psEncCtrl->Lambda_Q10 = SILK_FIX_CONST( LAMBDA_OFFSET, 10 )
- + silk_SMULBB( SILK_FIX_CONST( LAMBDA_DELAYED_DECISIONS, 10 ), psEnc->sCmn.nStatesDelayedDecision )
- + silk_SMULWB( SILK_FIX_CONST( LAMBDA_SPEECH_ACT, 18 ), psEnc->sCmn.speech_activity_Q8 )
- + silk_SMULWB( SILK_FIX_CONST( LAMBDA_INPUT_QUALITY, 12 ), psEncCtrl->input_quality_Q14 )
- + silk_SMULWB( SILK_FIX_CONST( LAMBDA_CODING_QUALITY, 12 ), psEncCtrl->coding_quality_Q14 )
- + silk_SMULWB( SILK_FIX_CONST( LAMBDA_QUANT_OFFSET, 16 ), quant_offset_Q10 );
-
- silk_assert( psEncCtrl->Lambda_Q10 > 0 );
- silk_assert( psEncCtrl->Lambda_Q10 < SILK_FIX_CONST( 2, 10 ) );
-}
diff --git a/thirdparty/opus/silk/fixed/regularize_correlations_FIX.c b/thirdparty/opus/silk/fixed/regularize_correlations_FIX.c
deleted file mode 100644
index a2836b05f4..0000000000
--- a/thirdparty/opus/silk/fixed/regularize_correlations_FIX.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-
-/* Add noise to matrix diagonal */
-void silk_regularize_correlations_FIX(
- opus_int32 *XX, /* I/O Correlation matrices */
- opus_int32 *xx, /* I/O Correlation values */
- opus_int32 noise, /* I Noise to add */
- opus_int D /* I Dimension of XX */
-)
-{
- opus_int i;
- for( i = 0; i < D; i++ ) {
- matrix_ptr( &XX[ 0 ], i, i, D ) = silk_ADD32( matrix_ptr( &XX[ 0 ], i, i, D ), noise );
- }
- xx[ 0 ] += noise;
-}
diff --git a/thirdparty/opus/silk/fixed/residual_energy16_FIX.c b/thirdparty/opus/silk/fixed/residual_energy16_FIX.c
deleted file mode 100644
index ebffb2a66f..0000000000
--- a/thirdparty/opus/silk/fixed/residual_energy16_FIX.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-
-/* Residual energy: nrg = wxx - 2 * wXx * c + c' * wXX * c */
-opus_int32 silk_residual_energy16_covar_FIX(
- const opus_int16 *c, /* I Prediction vector */
- const opus_int32 *wXX, /* I Correlation matrix */
- const opus_int32 *wXx, /* I Correlation vector */
- opus_int32 wxx, /* I Signal energy */
- opus_int D, /* I Dimension */
- opus_int cQ /* I Q value for c vector 0 - 15 */
-)
-{
- opus_int i, j, lshifts, Qxtra;
- opus_int32 c_max, w_max, tmp, tmp2, nrg;
- opus_int cn[ MAX_MATRIX_SIZE ];
- const opus_int32 *pRow;
-
- /* Safety checks */
- silk_assert( D >= 0 );
- silk_assert( D <= 16 );
- silk_assert( cQ > 0 );
- silk_assert( cQ < 16 );
-
- lshifts = 16 - cQ;
- Qxtra = lshifts;
-
- c_max = 0;
- for( i = 0; i < D; i++ ) {
- c_max = silk_max_32( c_max, silk_abs( (opus_int32)c[ i ] ) );
- }
- Qxtra = silk_min_int( Qxtra, silk_CLZ32( c_max ) - 17 );
-
- w_max = silk_max_32( wXX[ 0 ], wXX[ D * D - 1 ] );
- Qxtra = silk_min_int( Qxtra, silk_CLZ32( silk_MUL( D, silk_RSHIFT( silk_SMULWB( w_max, c_max ), 4 ) ) ) - 5 );
- Qxtra = silk_max_int( Qxtra, 0 );
- for( i = 0; i < D; i++ ) {
- cn[ i ] = silk_LSHIFT( ( opus_int )c[ i ], Qxtra );
- silk_assert( silk_abs(cn[i]) <= ( silk_int16_MAX + 1 ) ); /* Check that silk_SMLAWB can be used */
- }
- lshifts -= Qxtra;
-
- /* Compute wxx - 2 * wXx * c */
- tmp = 0;
- for( i = 0; i < D; i++ ) {
- tmp = silk_SMLAWB( tmp, wXx[ i ], cn[ i ] );
- }
- nrg = silk_RSHIFT( wxx, 1 + lshifts ) - tmp; /* Q: -lshifts - 1 */
-
- /* Add c' * wXX * c, assuming wXX is symmetric */
- tmp2 = 0;
- for( i = 0; i < D; i++ ) {
- tmp = 0;
- pRow = &wXX[ i * D ];
- for( j = i + 1; j < D; j++ ) {
- tmp = silk_SMLAWB( tmp, pRow[ j ], cn[ j ] );
- }
- tmp = silk_SMLAWB( tmp, silk_RSHIFT( pRow[ i ], 1 ), cn[ i ] );
- tmp2 = silk_SMLAWB( tmp2, tmp, cn[ i ] );
- }
- nrg = silk_ADD_LSHIFT32( nrg, tmp2, lshifts ); /* Q: -lshifts - 1 */
-
- /* Keep one bit free always, because we add them for LSF interpolation */
- if( nrg < 1 ) {
- nrg = 1;
- } else if( nrg > silk_RSHIFT( silk_int32_MAX, lshifts + 2 ) ) {
- nrg = silk_int32_MAX >> 1;
- } else {
- nrg = silk_LSHIFT( nrg, lshifts + 1 ); /* Q0 */
- }
- return nrg;
-
-}
diff --git a/thirdparty/opus/silk/fixed/residual_energy_FIX.c b/thirdparty/opus/silk/fixed/residual_energy_FIX.c
deleted file mode 100644
index 41f74778e8..0000000000
--- a/thirdparty/opus/silk/fixed/residual_energy_FIX.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-
-/* Calculates residual energies of input subframes where all subframes have LPC_order */
-/* of preceding samples */
-void silk_residual_energy_FIX(
- opus_int32 nrgs[ MAX_NB_SUBFR ], /* O Residual energy per subframe */
- opus_int nrgsQ[ MAX_NB_SUBFR ], /* O Q value per subframe */
- const opus_int16 x[], /* I Input signal */
- opus_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ], /* I AR coefs for each frame half */
- const opus_int32 gains[ MAX_NB_SUBFR ], /* I Quantization gains */
- const opus_int subfr_length, /* I Subframe length */
- const opus_int nb_subfr, /* I Number of subframes */
- const opus_int LPC_order, /* I LPC order */
- int arch /* I Run-time architecture */
-)
-{
- opus_int offset, i, j, rshift, lz1, lz2;
- opus_int16 *LPC_res_ptr;
- VARDECL( opus_int16, LPC_res );
- const opus_int16 *x_ptr;
- opus_int32 tmp32;
- SAVE_STACK;
-
- x_ptr = x;
- offset = LPC_order + subfr_length;
-
- /* Filter input to create the LPC residual for each frame half, and measure subframe energies */
- ALLOC( LPC_res, ( MAX_NB_SUBFR >> 1 ) * offset, opus_int16 );
- silk_assert( ( nb_subfr >> 1 ) * ( MAX_NB_SUBFR >> 1 ) == nb_subfr );
- for( i = 0; i < nb_subfr >> 1; i++ ) {
- /* Calculate half frame LPC residual signal including preceding samples */
- silk_LPC_analysis_filter( LPC_res, x_ptr, a_Q12[ i ], ( MAX_NB_SUBFR >> 1 ) * offset, LPC_order, arch );
-
- /* Point to first subframe of the just calculated LPC residual signal */
- LPC_res_ptr = LPC_res + LPC_order;
- for( j = 0; j < ( MAX_NB_SUBFR >> 1 ); j++ ) {
- /* Measure subframe energy */
- silk_sum_sqr_shift( &nrgs[ i * ( MAX_NB_SUBFR >> 1 ) + j ], &rshift, LPC_res_ptr, subfr_length );
-
- /* Set Q values for the measured energy */
- nrgsQ[ i * ( MAX_NB_SUBFR >> 1 ) + j ] = -rshift;
-
- /* Move to next subframe */
- LPC_res_ptr += offset;
- }
- /* Move to next frame half */
- x_ptr += ( MAX_NB_SUBFR >> 1 ) * offset;
- }
-
- /* Apply the squared subframe gains */
- for( i = 0; i < nb_subfr; i++ ) {
- /* Fully upscale gains and energies */
- lz1 = silk_CLZ32( nrgs[ i ] ) - 1;
- lz2 = silk_CLZ32( gains[ i ] ) - 1;
-
- tmp32 = silk_LSHIFT32( gains[ i ], lz2 );
-
- /* Find squared gains */
- tmp32 = silk_SMMUL( tmp32, tmp32 ); /* Q( 2 * lz2 - 32 )*/
-
- /* Scale energies */
- nrgs[ i ] = silk_SMMUL( tmp32, silk_LSHIFT32( nrgs[ i ], lz1 ) ); /* Q( nrgsQ[ i ] + lz1 + 2 * lz2 - 32 - 32 )*/
- nrgsQ[ i ] += lz1 + 2 * lz2 - 32 - 32;
- }
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/fixed/schur64_FIX.c b/thirdparty/opus/silk/fixed/schur64_FIX.c
deleted file mode 100644
index 764a10ef3e..0000000000
--- a/thirdparty/opus/silk/fixed/schur64_FIX.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Slower than schur(), but more accurate. */
-/* Uses SMULL(), available on armv4 */
-opus_int32 silk_schur64( /* O returns residual energy */
- opus_int32 rc_Q16[], /* O Reflection coefficients [order] Q16 */
- const opus_int32 c[], /* I Correlations [order+1] */
- opus_int32 order /* I Prediction order */
-)
-{
- opus_int k, n;
- opus_int32 C[ SILK_MAX_ORDER_LPC + 1 ][ 2 ];
- opus_int32 Ctmp1_Q30, Ctmp2_Q30, rc_tmp_Q31;
-
- silk_assert( order==6||order==8||order==10||order==12||order==14||order==16 );
-
- /* Check for invalid input */
- if( c[ 0 ] <= 0 ) {
- silk_memset( rc_Q16, 0, order * sizeof( opus_int32 ) );
- return 0;
- }
-
- for( k = 0; k < order + 1; k++ ) {
- C[ k ][ 0 ] = C[ k ][ 1 ] = c[ k ];
- }
-
- for( k = 0; k < order; k++ ) {
- /* Check that we won't be getting an unstable rc, otherwise stop here. */
- if (silk_abs_int32(C[ k + 1 ][ 0 ]) >= C[ 0 ][ 1 ]) {
- if ( C[ k + 1 ][ 0 ] > 0 ) {
- rc_Q16[ k ] = -SILK_FIX_CONST( .99f, 16 );
- } else {
- rc_Q16[ k ] = SILK_FIX_CONST( .99f, 16 );
- }
- k++;
- break;
- }
-
- /* Get reflection coefficient: divide two Q30 values and get result in Q31 */
- rc_tmp_Q31 = silk_DIV32_varQ( -C[ k + 1 ][ 0 ], C[ 0 ][ 1 ], 31 );
-
- /* Save the output */
- rc_Q16[ k ] = silk_RSHIFT_ROUND( rc_tmp_Q31, 15 );
-
- /* Update correlations */
- for( n = 0; n < order - k; n++ ) {
- Ctmp1_Q30 = C[ n + k + 1 ][ 0 ];
- Ctmp2_Q30 = C[ n ][ 1 ];
-
- /* Multiply and add the highest int32 */
- C[ n + k + 1 ][ 0 ] = Ctmp1_Q30 + silk_SMMUL( silk_LSHIFT( Ctmp2_Q30, 1 ), rc_tmp_Q31 );
- C[ n ][ 1 ] = Ctmp2_Q30 + silk_SMMUL( silk_LSHIFT( Ctmp1_Q30, 1 ), rc_tmp_Q31 );
- }
- }
-
- for(; k < order; k++ ) {
- rc_Q16[ k ] = 0;
- }
-
- return silk_max_32( 1, C[ 0 ][ 1 ] );
-}
diff --git a/thirdparty/opus/silk/fixed/schur_FIX.c b/thirdparty/opus/silk/fixed/schur_FIX.c
deleted file mode 100644
index c4c0ef23b4..0000000000
--- a/thirdparty/opus/silk/fixed/schur_FIX.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Faster than schur64(), but much less accurate. */
-/* uses SMLAWB(), requiring armv5E and higher. */
-opus_int32 silk_schur( /* O Returns residual energy */
- opus_int16 *rc_Q15, /* O reflection coefficients [order] Q15 */
- const opus_int32 *c, /* I correlations [order+1] */
- const opus_int32 order /* I prediction order */
-)
-{
- opus_int k, n, lz;
- opus_int32 C[ SILK_MAX_ORDER_LPC + 1 ][ 2 ];
- opus_int32 Ctmp1, Ctmp2, rc_tmp_Q15;
-
- silk_assert( order==6||order==8||order==10||order==12||order==14||order==16 );
-
- /* Get number of leading zeros */
- lz = silk_CLZ32( c[ 0 ] );
-
- /* Copy correlations and adjust level to Q30 */
- if( lz < 2 ) {
- /* lz must be 1, so shift one to the right */
- for( k = 0; k < order + 1; k++ ) {
- C[ k ][ 0 ] = C[ k ][ 1 ] = silk_RSHIFT( c[ k ], 1 );
- }
- } else if( lz > 2 ) {
- /* Shift to the left */
- lz -= 2;
- for( k = 0; k < order + 1; k++ ) {
- C[ k ][ 0 ] = C[ k ][ 1 ] = silk_LSHIFT( c[ k ], lz );
- }
- } else {
- /* No need to shift */
- for( k = 0; k < order + 1; k++ ) {
- C[ k ][ 0 ] = C[ k ][ 1 ] = c[ k ];
- }
- }
-
- for( k = 0; k < order; k++ ) {
- /* Check that we won't be getting an unstable rc, otherwise stop here. */
- if (silk_abs_int32(C[ k + 1 ][ 0 ]) >= C[ 0 ][ 1 ]) {
- if ( C[ k + 1 ][ 0 ] > 0 ) {
- rc_Q15[ k ] = -SILK_FIX_CONST( .99f, 15 );
- } else {
- rc_Q15[ k ] = SILK_FIX_CONST( .99f, 15 );
- }
- k++;
- break;
- }
-
- /* Get reflection coefficient */
- rc_tmp_Q15 = -silk_DIV32_16( C[ k + 1 ][ 0 ], silk_max_32( silk_RSHIFT( C[ 0 ][ 1 ], 15 ), 1 ) );
-
- /* Clip (shouldn't happen for properly conditioned inputs) */
- rc_tmp_Q15 = silk_SAT16( rc_tmp_Q15 );
-
- /* Store */
- rc_Q15[ k ] = (opus_int16)rc_tmp_Q15;
-
- /* Update correlations */
- for( n = 0; n < order - k; n++ ) {
- Ctmp1 = C[ n + k + 1 ][ 0 ];
- Ctmp2 = C[ n ][ 1 ];
- C[ n + k + 1 ][ 0 ] = silk_SMLAWB( Ctmp1, silk_LSHIFT( Ctmp2, 1 ), rc_tmp_Q15 );
- C[ n ][ 1 ] = silk_SMLAWB( Ctmp2, silk_LSHIFT( Ctmp1, 1 ), rc_tmp_Q15 );
- }
- }
-
- for(; k < order; k++ ) {
- rc_Q15[ k ] = 0;
- }
-
- /* return residual energy */
- return silk_max_32( 1, C[ 0 ][ 1 ] );
-}
diff --git a/thirdparty/opus/silk/fixed/solve_LS_FIX.c b/thirdparty/opus/silk/fixed/solve_LS_FIX.c
deleted file mode 100644
index 51d7d49d02..0000000000
--- a/thirdparty/opus/silk/fixed/solve_LS_FIX.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-#include "stack_alloc.h"
-#include "tuning_parameters.h"
-
-/*****************************/
-/* Internal function headers */
-/*****************************/
-
-typedef struct {
- opus_int32 Q36_part;
- opus_int32 Q48_part;
-} inv_D_t;
-
-/* Factorize square matrix A into LDL form */
-static OPUS_INLINE void silk_LDL_factorize_FIX(
- opus_int32 *A, /* I/O Pointer to Symetric Square Matrix */
- opus_int M, /* I Size of Matrix */
- opus_int32 *L_Q16, /* I/O Pointer to Square Upper triangular Matrix */
- inv_D_t *inv_D /* I/O Pointer to vector holding inverted diagonal elements of D */
-);
-
-/* Solve Lx = b, when L is lower triangular and has ones on the diagonal */
-static OPUS_INLINE void silk_LS_SolveFirst_FIX(
- const opus_int32 *L_Q16, /* I Pointer to Lower Triangular Matrix */
- opus_int M, /* I Dim of Matrix equation */
- const opus_int32 *b, /* I b Vector */
- opus_int32 *x_Q16 /* O x Vector */
-);
-
-/* Solve L^t*x = b, where L is lower triangular with ones on the diagonal */
-static OPUS_INLINE void silk_LS_SolveLast_FIX(
- const opus_int32 *L_Q16, /* I Pointer to Lower Triangular Matrix */
- const opus_int M, /* I Dim of Matrix equation */
- const opus_int32 *b, /* I b Vector */
- opus_int32 *x_Q16 /* O x Vector */
-);
-
-static OPUS_INLINE void silk_LS_divide_Q16_FIX(
- opus_int32 T[], /* I/O Numenator vector */
- inv_D_t *inv_D, /* I 1 / D vector */
- opus_int M /* I dimension */
-);
-
-/* Solves Ax = b, assuming A is symmetric */
-void silk_solve_LDL_FIX(
- opus_int32 *A, /* I Pointer to symetric square matrix A */
- opus_int M, /* I Size of matrix */
- const opus_int32 *b, /* I Pointer to b vector */
- opus_int32 *x_Q16 /* O Pointer to x solution vector */
-)
-{
- VARDECL( opus_int32, L_Q16 );
- opus_int32 Y[ MAX_MATRIX_SIZE ];
- inv_D_t inv_D[ MAX_MATRIX_SIZE ];
- SAVE_STACK;
-
- silk_assert( M <= MAX_MATRIX_SIZE );
- ALLOC( L_Q16, M * M, opus_int32 );
-
- /***************************************************
- Factorize A by LDL such that A = L*D*L',
- where L is lower triangular with ones on diagonal
- ****************************************************/
- silk_LDL_factorize_FIX( A, M, L_Q16, inv_D );
-
- /****************************************************
- * substitute D*L'*x = Y. ie:
- L*D*L'*x = b => L*Y = b <=> Y = inv(L)*b
- ******************************************************/
- silk_LS_SolveFirst_FIX( L_Q16, M, b, Y );
-
- /****************************************************
- D*L'*x = Y <=> L'*x = inv(D)*Y, because D is
- diagonal just multiply with 1/d_i
- ****************************************************/
- silk_LS_divide_Q16_FIX( Y, inv_D, M );
-
- /****************************************************
- x = inv(L') * inv(D) * Y
- *****************************************************/
- silk_LS_SolveLast_FIX( L_Q16, M, Y, x_Q16 );
- RESTORE_STACK;
-}
-
-static OPUS_INLINE void silk_LDL_factorize_FIX(
- opus_int32 *A, /* I/O Pointer to Symetric Square Matrix */
- opus_int M, /* I Size of Matrix */
- opus_int32 *L_Q16, /* I/O Pointer to Square Upper triangular Matrix */
- inv_D_t *inv_D /* I/O Pointer to vector holding inverted diagonal elements of D */
-)
-{
- opus_int i, j, k, status, loop_count;
- const opus_int32 *ptr1, *ptr2;
- opus_int32 diag_min_value, tmp_32, err;
- opus_int32 v_Q0[ MAX_MATRIX_SIZE ], D_Q0[ MAX_MATRIX_SIZE ];
- opus_int32 one_div_diag_Q36, one_div_diag_Q40, one_div_diag_Q48;
-
- silk_assert( M <= MAX_MATRIX_SIZE );
-
- status = 1;
- diag_min_value = silk_max_32( silk_SMMUL( silk_ADD_SAT32( A[ 0 ], A[ silk_SMULBB( M, M ) - 1 ] ), SILK_FIX_CONST( FIND_LTP_COND_FAC, 31 ) ), 1 << 9 );
- for( loop_count = 0; loop_count < M && status == 1; loop_count++ ) {
- status = 0;
- for( j = 0; j < M; j++ ) {
- ptr1 = matrix_adr( L_Q16, j, 0, M );
- tmp_32 = 0;
- for( i = 0; i < j; i++ ) {
- v_Q0[ i ] = silk_SMULWW( D_Q0[ i ], ptr1[ i ] ); /* Q0 */
- tmp_32 = silk_SMLAWW( tmp_32, v_Q0[ i ], ptr1[ i ] ); /* Q0 */
- }
- tmp_32 = silk_SUB32( matrix_ptr( A, j, j, M ), tmp_32 );
-
- if( tmp_32 < diag_min_value ) {
- tmp_32 = silk_SUB32( silk_SMULBB( loop_count + 1, diag_min_value ), tmp_32 );
- /* Matrix not positive semi-definite, or ill conditioned */
- for( i = 0; i < M; i++ ) {
- matrix_ptr( A, i, i, M ) = silk_ADD32( matrix_ptr( A, i, i, M ), tmp_32 );
- }
- status = 1;
- break;
- }
- D_Q0[ j ] = tmp_32; /* always < max(Correlation) */
-
- /* two-step division */
- one_div_diag_Q36 = silk_INVERSE32_varQ( tmp_32, 36 ); /* Q36 */
- one_div_diag_Q40 = silk_LSHIFT( one_div_diag_Q36, 4 ); /* Q40 */
- err = silk_SUB32( (opus_int32)1 << 24, silk_SMULWW( tmp_32, one_div_diag_Q40 ) ); /* Q24 */
- one_div_diag_Q48 = silk_SMULWW( err, one_div_diag_Q40 ); /* Q48 */
-
- /* Save 1/Ds */
- inv_D[ j ].Q36_part = one_div_diag_Q36;
- inv_D[ j ].Q48_part = one_div_diag_Q48;
-
- matrix_ptr( L_Q16, j, j, M ) = 65536; /* 1.0 in Q16 */
- ptr1 = matrix_adr( A, j, 0, M );
- ptr2 = matrix_adr( L_Q16, j + 1, 0, M );
- for( i = j + 1; i < M; i++ ) {
- tmp_32 = 0;
- for( k = 0; k < j; k++ ) {
- tmp_32 = silk_SMLAWW( tmp_32, v_Q0[ k ], ptr2[ k ] ); /* Q0 */
- }
- tmp_32 = silk_SUB32( ptr1[ i ], tmp_32 ); /* always < max(Correlation) */
-
- /* tmp_32 / D_Q0[j] : Divide to Q16 */
- matrix_ptr( L_Q16, i, j, M ) = silk_ADD32( silk_SMMUL( tmp_32, one_div_diag_Q48 ),
- silk_RSHIFT( silk_SMULWW( tmp_32, one_div_diag_Q36 ), 4 ) );
-
- /* go to next column */
- ptr2 += M;
- }
- }
- }
-
- silk_assert( status == 0 );
-}
-
-static OPUS_INLINE void silk_LS_divide_Q16_FIX(
- opus_int32 T[], /* I/O Numenator vector */
- inv_D_t *inv_D, /* I 1 / D vector */
- opus_int M /* I dimension */
-)
-{
- opus_int i;
- opus_int32 tmp_32;
- opus_int32 one_div_diag_Q36, one_div_diag_Q48;
-
- for( i = 0; i < M; i++ ) {
- one_div_diag_Q36 = inv_D[ i ].Q36_part;
- one_div_diag_Q48 = inv_D[ i ].Q48_part;
-
- tmp_32 = T[ i ];
- T[ i ] = silk_ADD32( silk_SMMUL( tmp_32, one_div_diag_Q48 ), silk_RSHIFT( silk_SMULWW( tmp_32, one_div_diag_Q36 ), 4 ) );
- }
-}
-
-/* Solve Lx = b, when L is lower triangular and has ones on the diagonal */
-static OPUS_INLINE void silk_LS_SolveFirst_FIX(
- const opus_int32 *L_Q16, /* I Pointer to Lower Triangular Matrix */
- opus_int M, /* I Dim of Matrix equation */
- const opus_int32 *b, /* I b Vector */
- opus_int32 *x_Q16 /* O x Vector */
-)
-{
- opus_int i, j;
- const opus_int32 *ptr32;
- opus_int32 tmp_32;
-
- for( i = 0; i < M; i++ ) {
- ptr32 = matrix_adr( L_Q16, i, 0, M );
- tmp_32 = 0;
- for( j = 0; j < i; j++ ) {
- tmp_32 = silk_SMLAWW( tmp_32, ptr32[ j ], x_Q16[ j ] );
- }
- x_Q16[ i ] = silk_SUB32( b[ i ], tmp_32 );
- }
-}
-
-/* Solve L^t*x = b, where L is lower triangular with ones on the diagonal */
-static OPUS_INLINE void silk_LS_SolveLast_FIX(
- const opus_int32 *L_Q16, /* I Pointer to Lower Triangular Matrix */
- const opus_int M, /* I Dim of Matrix equation */
- const opus_int32 *b, /* I b Vector */
- opus_int32 *x_Q16 /* O x Vector */
-)
-{
- opus_int i, j;
- const opus_int32 *ptr32;
- opus_int32 tmp_32;
-
- for( i = M - 1; i >= 0; i-- ) {
- ptr32 = matrix_adr( L_Q16, 0, i, M );
- tmp_32 = 0;
- for( j = M - 1; j > i; j-- ) {
- tmp_32 = silk_SMLAWW( tmp_32, ptr32[ silk_SMULBB( j, M ) ], x_Q16[ j ] );
- }
- x_Q16[ i ] = silk_SUB32( b[ i ], tmp_32 );
- }
-}
diff --git a/thirdparty/opus/silk/fixed/structs_FIX.h b/thirdparty/opus/silk/fixed/structs_FIX.h
deleted file mode 100644
index 3294b25128..0000000000
--- a/thirdparty/opus/silk/fixed/structs_FIX.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_STRUCTS_FIX_H
-#define SILK_STRUCTS_FIX_H
-
-#include "typedef.h"
-#include "main.h"
-#include "structs.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/********************************/
-/* Noise shaping analysis state */
-/********************************/
-typedef struct {
- opus_int8 LastGainIndex;
- opus_int32 HarmBoost_smth_Q16;
- opus_int32 HarmShapeGain_smth_Q16;
- opus_int32 Tilt_smth_Q16;
-} silk_shape_state_FIX;
-
-/********************************/
-/* Prefilter state */
-/********************************/
-typedef struct {
- opus_int16 sLTP_shp[ LTP_BUF_LENGTH ];
- opus_int32 sAR_shp[ MAX_SHAPE_LPC_ORDER + 1 ];
- opus_int sLTP_shp_buf_idx;
- opus_int32 sLF_AR_shp_Q12;
- opus_int32 sLF_MA_shp_Q12;
- opus_int32 sHarmHP_Q2;
- opus_int32 rand_seed;
- opus_int lagPrev;
-} silk_prefilter_state_FIX;
-
-/********************************/
-/* Encoder state FIX */
-/********************************/
-typedef struct {
- silk_encoder_state sCmn; /* Common struct, shared with floating-point code */
- silk_shape_state_FIX sShape; /* Shape state */
- silk_prefilter_state_FIX sPrefilt; /* Prefilter State */
-
- /* Buffer for find pitch and noise shape analysis */
- silk_DWORD_ALIGN opus_int16 x_buf[ 2 * MAX_FRAME_LENGTH + LA_SHAPE_MAX ];/* Buffer for find pitch and noise shape analysis */
- opus_int LTPCorr_Q15; /* Normalized correlation from pitch lag estimator */
-} silk_encoder_state_FIX;
-
-/************************/
-/* Encoder control FIX */
-/************************/
-typedef struct {
- /* Prediction and coding parameters */
- opus_int32 Gains_Q16[ MAX_NB_SUBFR ];
- silk_DWORD_ALIGN opus_int16 PredCoef_Q12[ 2 ][ MAX_LPC_ORDER ];
- opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ];
- opus_int LTP_scale_Q14;
- opus_int pitchL[ MAX_NB_SUBFR ];
-
- /* Noise shaping parameters */
- /* Testing */
- silk_DWORD_ALIGN opus_int16 AR1_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ];
- silk_DWORD_ALIGN opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ];
- opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ]; /* Packs two int16 coefficients per int32 value */
- opus_int GainsPre_Q14[ MAX_NB_SUBFR ];
- opus_int HarmBoost_Q14[ MAX_NB_SUBFR ];
- opus_int Tilt_Q14[ MAX_NB_SUBFR ];
- opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ];
- opus_int Lambda_Q10;
- opus_int input_quality_Q14;
- opus_int coding_quality_Q14;
-
- /* measures */
- opus_int sparseness_Q8;
- opus_int32 predGain_Q16;
- opus_int LTPredCodGain_Q7;
- opus_int32 ResNrg[ MAX_NB_SUBFR ]; /* Residual energy per subframe */
- opus_int ResNrgQ[ MAX_NB_SUBFR ]; /* Q domain for the residual energy > 0 */
-
- /* Parameters for CBR mode */
- opus_int32 GainsUnq_Q16[ MAX_NB_SUBFR ];
- opus_int8 lastGainIndexPrev;
-} silk_encoder_control_FIX;
-
-/************************/
-/* Encoder Super Struct */
-/************************/
-typedef struct {
- silk_encoder_state_FIX state_Fxx[ ENCODER_NUM_CHANNELS ];
- stereo_enc_state sStereo;
- opus_int32 nBitsUsedLBRR;
- opus_int32 nBitsExceeded;
- opus_int nChannelsAPI;
- opus_int nChannelsInternal;
- opus_int nPrevChannelsInternal;
- opus_int timeSinceSwitchAllowed_ms;
- opus_int allowBandwidthSwitch;
- opus_int prev_decode_only_middle;
-} silk_encoder;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/fixed/vector_ops_FIX.c b/thirdparty/opus/silk/fixed/vector_ops_FIX.c
deleted file mode 100644
index d94980014f..0000000000
--- a/thirdparty/opus/silk/fixed/vector_ops_FIX.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "pitch.h"
-
-/* Copy and multiply a vector by a constant */
-void silk_scale_copy_vector16(
- opus_int16 *data_out,
- const opus_int16 *data_in,
- opus_int32 gain_Q16, /* I Gain in Q16 */
- const opus_int dataSize /* I Length */
-)
-{
- opus_int i;
- opus_int32 tmp32;
-
- for( i = 0; i < dataSize; i++ ) {
- tmp32 = silk_SMULWB( gain_Q16, data_in[ i ] );
- data_out[ i ] = (opus_int16)silk_CHECK_FIT16( tmp32 );
- }
-}
-
-/* Multiply a vector by a constant */
-void silk_scale_vector32_Q26_lshift_18(
- opus_int32 *data1, /* I/O Q0/Q18 */
- opus_int32 gain_Q26, /* I Q26 */
- opus_int dataSize /* I length */
-)
-{
- opus_int i;
-
- for( i = 0; i < dataSize; i++ ) {
- data1[ i ] = (opus_int32)silk_CHECK_FIT32( silk_RSHIFT64( silk_SMULL( data1[ i ], gain_Q26 ), 8 ) ); /* OUTPUT: Q18 */
- }
-}
-
-/* sum = for(i=0;i<len;i++)inVec1[i]*inVec2[i]; --- inner product */
-/* Note for ARM asm: */
-/* * inVec1 and inVec2 should be at least 2 byte aligned. */
-/* * len should be positive 16bit integer. */
-/* * only when len>6, memory access can be reduced by half. */
-opus_int32 silk_inner_prod_aligned(
- const opus_int16 *const inVec1, /* I input vector 1 */
- const opus_int16 *const inVec2, /* I input vector 2 */
- const opus_int len, /* I vector lengths */
- int arch /* I Run-time architecture */
-)
-{
-#ifdef FIXED_POINT
- return celt_inner_prod(inVec1, inVec2, len, arch);
-#else
- opus_int i;
- opus_int32 sum = 0;
- for( i = 0; i < len; i++ ) {
- sum = silk_SMLABB( sum, inVec1[ i ], inVec2[ i ] );
- }
- return sum;
-#endif
-}
-
-opus_int64 silk_inner_prod16_aligned_64_c(
- const opus_int16 *inVec1, /* I input vector 1 */
- const opus_int16 *inVec2, /* I input vector 2 */
- const opus_int len /* I vector lengths */
-)
-{
- opus_int i;
- opus_int64 sum = 0;
- for( i = 0; i < len; i++ ) {
- sum = silk_SMLALBB( sum, inVec1[ i ], inVec2[ i ] );
- }
- return sum;
-}
diff --git a/thirdparty/opus/silk/fixed/warped_autocorrelation_FIX.c b/thirdparty/opus/silk/fixed/warped_autocorrelation_FIX.c
deleted file mode 100644
index 6ca6c1184d..0000000000
--- a/thirdparty/opus/silk/fixed/warped_autocorrelation_FIX.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FIX.h"
-
-#define QC 10
-#define QS 14
-
-#if defined(MIPSr1_ASM)
-#include "mips/warped_autocorrelation_FIX_mipsr1.h"
-#endif
-
-
-#ifndef OVERRIDE_silk_warped_autocorrelation_FIX
-/* Autocorrelations for a warped frequency axis */
-void silk_warped_autocorrelation_FIX(
- opus_int32 *corr, /* O Result [order + 1] */
- opus_int *scale, /* O Scaling of the correlation vector */
- const opus_int16 *input, /* I Input data to correlate */
- const opus_int warping_Q16, /* I Warping coefficient */
- const opus_int length, /* I Length of input */
- const opus_int order /* I Correlation order (even) */
-)
-{
- opus_int n, i, lsh;
- opus_int32 tmp1_QS, tmp2_QS;
- opus_int32 state_QS[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0 };
- opus_int64 corr_QC[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0 };
-
- /* Order must be even */
- silk_assert( ( order & 1 ) == 0 );
- silk_assert( 2 * QS - QC >= 0 );
-
- /* Loop over samples */
- for( n = 0; n < length; n++ ) {
- tmp1_QS = silk_LSHIFT32( (opus_int32)input[ n ], QS );
- /* Loop over allpass sections */
- for( i = 0; i < order; i += 2 ) {
- /* Output of allpass section */
- tmp2_QS = silk_SMLAWB( state_QS[ i ], state_QS[ i + 1 ] - tmp1_QS, warping_Q16 );
- state_QS[ i ] = tmp1_QS;
- corr_QC[ i ] += silk_RSHIFT64( silk_SMULL( tmp1_QS, state_QS[ 0 ] ), 2 * QS - QC );
- /* Output of allpass section */
- tmp1_QS = silk_SMLAWB( state_QS[ i + 1 ], state_QS[ i + 2 ] - tmp2_QS, warping_Q16 );
- state_QS[ i + 1 ] = tmp2_QS;
- corr_QC[ i + 1 ] += silk_RSHIFT64( silk_SMULL( tmp2_QS, state_QS[ 0 ] ), 2 * QS - QC );
- }
- state_QS[ order ] = tmp1_QS;
- corr_QC[ order ] += silk_RSHIFT64( silk_SMULL( tmp1_QS, state_QS[ 0 ] ), 2 * QS - QC );
- }
-
- lsh = silk_CLZ64( corr_QC[ 0 ] ) - 35;
- lsh = silk_LIMIT( lsh, -12 - QC, 30 - QC );
- *scale = -( QC + lsh );
- silk_assert( *scale >= -30 && *scale <= 12 );
- if( lsh >= 0 ) {
- for( i = 0; i < order + 1; i++ ) {
- corr[ i ] = (opus_int32)silk_CHECK_FIT32( silk_LSHIFT64( corr_QC[ i ], lsh ) );
- }
- } else {
- for( i = 0; i < order + 1; i++ ) {
- corr[ i ] = (opus_int32)silk_CHECK_FIT32( silk_RSHIFT64( corr_QC[ i ], -lsh ) );
- }
- }
- silk_assert( corr_QC[ 0 ] >= 0 ); /* If breaking, decrease QC*/
-}
-#endif /* OVERRIDE_silk_warped_autocorrelation_FIX */
diff --git a/thirdparty/opus/silk/fixed/x86/burg_modified_FIX_sse.c b/thirdparty/opus/silk/fixed/x86/burg_modified_FIX_sse.c
deleted file mode 100644
index 3c3583c5fc..0000000000
--- a/thirdparty/opus/silk/fixed/x86/burg_modified_FIX_sse.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-
-#include "SigProc_FIX.h"
-#include "define.h"
-#include "tuning_parameters.h"
-#include "pitch.h"
-#include "celt/x86/x86cpu.h"
-
-#define MAX_FRAME_SIZE 384 /* subfr_length * nb_subfr = ( 0.005 * 16000 + 16 ) * 4 = 384 */
-
-#define QA 25
-#define N_BITS_HEAD_ROOM 2
-#define MIN_RSHIFTS -16
-#define MAX_RSHIFTS (32 - QA)
-
-/* Compute reflection coefficients from input signal */
-void silk_burg_modified_sse4_1(
- opus_int32 *res_nrg, /* O Residual energy */
- opus_int *res_nrg_Q, /* O Residual energy Q value */
- opus_int32 A_Q16[], /* O Prediction coefficients (length order) */
- const opus_int16 x[], /* I Input signal, length: nb_subfr * ( D + subfr_length ) */
- const opus_int32 minInvGain_Q30, /* I Inverse of max prediction gain */
- const opus_int subfr_length, /* I Input signal subframe length (incl. D preceding samples) */
- const opus_int nb_subfr, /* I Number of subframes stacked in x */
- const opus_int D, /* I Order */
- int arch /* I Run-time architecture */
-)
-{
- opus_int k, n, s, lz, rshifts, rshifts_extra, reached_max_gain;
- opus_int32 C0, num, nrg, rc_Q31, invGain_Q30, Atmp_QA, Atmp1, tmp1, tmp2, x1, x2;
- const opus_int16 *x_ptr;
- opus_int32 C_first_row[ SILK_MAX_ORDER_LPC ];
- opus_int32 C_last_row[ SILK_MAX_ORDER_LPC ];
- opus_int32 Af_QA[ SILK_MAX_ORDER_LPC ];
- opus_int32 CAf[ SILK_MAX_ORDER_LPC + 1 ];
- opus_int32 CAb[ SILK_MAX_ORDER_LPC + 1 ];
- opus_int32 xcorr[ SILK_MAX_ORDER_LPC ];
-
- __m128i FIRST_3210, LAST_3210, ATMP_3210, TMP1_3210, TMP2_3210, T1_3210, T2_3210, PTR_3210, SUBFR_3210, X1_3210, X2_3210;
- __m128i CONST1 = _mm_set1_epi32(1);
-
- silk_assert( subfr_length * nb_subfr <= MAX_FRAME_SIZE );
-
- /* Compute autocorrelations, added over subframes */
- silk_sum_sqr_shift( &C0, &rshifts, x, nb_subfr * subfr_length );
- if( rshifts > MAX_RSHIFTS ) {
- C0 = silk_LSHIFT32( C0, rshifts - MAX_RSHIFTS );
- silk_assert( C0 > 0 );
- rshifts = MAX_RSHIFTS;
- } else {
- lz = silk_CLZ32( C0 ) - 1;
- rshifts_extra = N_BITS_HEAD_ROOM - lz;
- if( rshifts_extra > 0 ) {
- rshifts_extra = silk_min( rshifts_extra, MAX_RSHIFTS - rshifts );
- C0 = silk_RSHIFT32( C0, rshifts_extra );
- } else {
- rshifts_extra = silk_max( rshifts_extra, MIN_RSHIFTS - rshifts );
- C0 = silk_LSHIFT32( C0, -rshifts_extra );
- }
- rshifts += rshifts_extra;
- }
- CAb[ 0 ] = CAf[ 0 ] = C0 + silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ) + 1; /* Q(-rshifts) */
- silk_memset( C_first_row, 0, SILK_MAX_ORDER_LPC * sizeof( opus_int32 ) );
- if( rshifts > 0 ) {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- for( n = 1; n < D + 1; n++ ) {
- C_first_row[ n - 1 ] += (opus_int32)silk_RSHIFT64(
- silk_inner_prod16_aligned_64( x_ptr, x_ptr + n, subfr_length - n, arch ), rshifts );
- }
- }
- } else {
- for( s = 0; s < nb_subfr; s++ ) {
- int i;
- opus_int32 d;
- x_ptr = x + s * subfr_length;
- celt_pitch_xcorr(x_ptr, x_ptr + 1, xcorr, subfr_length - D, D, arch );
- for( n = 1; n < D + 1; n++ ) {
- for ( i = n + subfr_length - D, d = 0; i < subfr_length; i++ )
- d = MAC16_16( d, x_ptr[ i ], x_ptr[ i - n ] );
- xcorr[ n - 1 ] += d;
- }
- for( n = 1; n < D + 1; n++ ) {
- C_first_row[ n - 1 ] += silk_LSHIFT32( xcorr[ n - 1 ], -rshifts );
- }
- }
- }
- silk_memcpy( C_last_row, C_first_row, SILK_MAX_ORDER_LPC * sizeof( opus_int32 ) );
-
- /* Initialize */
- CAb[ 0 ] = CAf[ 0 ] = C0 + silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ) + 1; /* Q(-rshifts) */
-
- invGain_Q30 = (opus_int32)1 << 30;
- reached_max_gain = 0;
- for( n = 0; n < D; n++ ) {
- /* Update first row of correlation matrix (without first element) */
- /* Update last row of correlation matrix (without last element, stored in reversed order) */
- /* Update C * Af */
- /* Update C * flipud(Af) (stored in reversed order) */
- if( rshifts > -2 ) {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- x1 = -silk_LSHIFT32( (opus_int32)x_ptr[ n ], 16 - rshifts ); /* Q(16-rshifts) */
- x2 = -silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], 16 - rshifts ); /* Q(16-rshifts) */
- tmp1 = silk_LSHIFT32( (opus_int32)x_ptr[ n ], QA - 16 ); /* Q(QA-16) */
- tmp2 = silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], QA - 16 ); /* Q(QA-16) */
- for( k = 0; k < n; k++ ) {
- C_first_row[ k ] = silk_SMLAWB( C_first_row[ k ], x1, x_ptr[ n - k - 1 ] ); /* Q( -rshifts ) */
- C_last_row[ k ] = silk_SMLAWB( C_last_row[ k ], x2, x_ptr[ subfr_length - n + k ] ); /* Q( -rshifts ) */
- Atmp_QA = Af_QA[ k ];
- tmp1 = silk_SMLAWB( tmp1, Atmp_QA, x_ptr[ n - k - 1 ] ); /* Q(QA-16) */
- tmp2 = silk_SMLAWB( tmp2, Atmp_QA, x_ptr[ subfr_length - n + k ] ); /* Q(QA-16) */
- }
- tmp1 = silk_LSHIFT32( -tmp1, 32 - QA - rshifts ); /* Q(16-rshifts) */
- tmp2 = silk_LSHIFT32( -tmp2, 32 - QA - rshifts ); /* Q(16-rshifts) */
- for( k = 0; k <= n; k++ ) {
- CAf[ k ] = silk_SMLAWB( CAf[ k ], tmp1, x_ptr[ n - k ] ); /* Q( -rshift ) */
- CAb[ k ] = silk_SMLAWB( CAb[ k ], tmp2, x_ptr[ subfr_length - n + k - 1 ] ); /* Q( -rshift ) */
- }
- }
- } else {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- x1 = -silk_LSHIFT32( (opus_int32)x_ptr[ n ], -rshifts ); /* Q( -rshifts ) */
- x2 = -silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], -rshifts ); /* Q( -rshifts ) */
- tmp1 = silk_LSHIFT32( (opus_int32)x_ptr[ n ], 17 ); /* Q17 */
- tmp2 = silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], 17 ); /* Q17 */
-
- X1_3210 = _mm_set1_epi32( x1 );
- X2_3210 = _mm_set1_epi32( x2 );
- TMP1_3210 = _mm_setzero_si128();
- TMP2_3210 = _mm_setzero_si128();
- for( k = 0; k < n - 3; k += 4 ) {
- PTR_3210 = OP_CVTEPI16_EPI32_M64( &x_ptr[ n - k - 1 - 3 ] );
- SUBFR_3210 = OP_CVTEPI16_EPI32_M64( &x_ptr[ subfr_length - n + k ] );
- FIRST_3210 = _mm_loadu_si128( (__m128i *)&C_first_row[ k ] );
- PTR_3210 = _mm_shuffle_epi32( PTR_3210, _MM_SHUFFLE( 0, 1, 2, 3 ) );
- LAST_3210 = _mm_loadu_si128( (__m128i *)&C_last_row[ k ] );
- ATMP_3210 = _mm_loadu_si128( (__m128i *)&Af_QA[ k ] );
-
- T1_3210 = _mm_mullo_epi32( PTR_3210, X1_3210 );
- T2_3210 = _mm_mullo_epi32( SUBFR_3210, X2_3210 );
-
- ATMP_3210 = _mm_srai_epi32( ATMP_3210, 7 );
- ATMP_3210 = _mm_add_epi32( ATMP_3210, CONST1 );
- ATMP_3210 = _mm_srai_epi32( ATMP_3210, 1 );
-
- FIRST_3210 = _mm_add_epi32( FIRST_3210, T1_3210 );
- LAST_3210 = _mm_add_epi32( LAST_3210, T2_3210 );
-
- PTR_3210 = _mm_mullo_epi32( ATMP_3210, PTR_3210 );
- SUBFR_3210 = _mm_mullo_epi32( ATMP_3210, SUBFR_3210 );
-
- _mm_storeu_si128( (__m128i *)&C_first_row[ k ], FIRST_3210 );
- _mm_storeu_si128( (__m128i *)&C_last_row[ k ], LAST_3210 );
-
- TMP1_3210 = _mm_add_epi32( TMP1_3210, PTR_3210 );
- TMP2_3210 = _mm_add_epi32( TMP2_3210, SUBFR_3210 );
- }
-
- TMP1_3210 = _mm_add_epi32( TMP1_3210, _mm_unpackhi_epi64(TMP1_3210, TMP1_3210 ) );
- TMP2_3210 = _mm_add_epi32( TMP2_3210, _mm_unpackhi_epi64(TMP2_3210, TMP2_3210 ) );
- TMP1_3210 = _mm_add_epi32( TMP1_3210, _mm_shufflelo_epi16(TMP1_3210, 0x0E ) );
- TMP2_3210 = _mm_add_epi32( TMP2_3210, _mm_shufflelo_epi16(TMP2_3210, 0x0E ) );
-
- tmp1 += _mm_cvtsi128_si32( TMP1_3210 );
- tmp2 += _mm_cvtsi128_si32( TMP2_3210 );
-
- for( ; k < n; k++ ) {
- C_first_row[ k ] = silk_MLA( C_first_row[ k ], x1, x_ptr[ n - k - 1 ] ); /* Q( -rshifts ) */
- C_last_row[ k ] = silk_MLA( C_last_row[ k ], x2, x_ptr[ subfr_length - n + k ] ); /* Q( -rshifts ) */
- Atmp1 = silk_RSHIFT_ROUND( Af_QA[ k ], QA - 17 ); /* Q17 */
- tmp1 = silk_MLA( tmp1, x_ptr[ n - k - 1 ], Atmp1 ); /* Q17 */
- tmp2 = silk_MLA( tmp2, x_ptr[ subfr_length - n + k ], Atmp1 ); /* Q17 */
- }
-
- tmp1 = -tmp1; /* Q17 */
- tmp2 = -tmp2; /* Q17 */
-
- {
- __m128i xmm_tmp1, xmm_tmp2;
- __m128i xmm_x_ptr_n_k_x2x0, xmm_x_ptr_n_k_x3x1;
- __m128i xmm_x_ptr_sub_x2x0, xmm_x_ptr_sub_x3x1;
-
- xmm_tmp1 = _mm_set1_epi32( tmp1 );
- xmm_tmp2 = _mm_set1_epi32( tmp2 );
-
- for( k = 0; k <= n - 3; k += 4 ) {
- xmm_x_ptr_n_k_x2x0 = OP_CVTEPI16_EPI32_M64( &x_ptr[ n - k - 3 ] );
- xmm_x_ptr_sub_x2x0 = OP_CVTEPI16_EPI32_M64( &x_ptr[ subfr_length - n + k - 1 ] );
-
- xmm_x_ptr_n_k_x2x0 = _mm_shuffle_epi32( xmm_x_ptr_n_k_x2x0, _MM_SHUFFLE( 0, 1, 2, 3 ) );
-
- xmm_x_ptr_n_k_x2x0 = _mm_slli_epi32( xmm_x_ptr_n_k_x2x0, -rshifts - 1 );
- xmm_x_ptr_sub_x2x0 = _mm_slli_epi32( xmm_x_ptr_sub_x2x0, -rshifts - 1 );
-
- /* equal shift right 4 bytes, xmm_x_ptr_n_k_x3x1 = _mm_srli_si128(xmm_x_ptr_n_k_x2x0, 4)*/
- xmm_x_ptr_n_k_x3x1 = _mm_shuffle_epi32( xmm_x_ptr_n_k_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) );
- xmm_x_ptr_sub_x3x1 = _mm_shuffle_epi32( xmm_x_ptr_sub_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) );
-
- xmm_x_ptr_n_k_x2x0 = _mm_mul_epi32( xmm_x_ptr_n_k_x2x0, xmm_tmp1 );
- xmm_x_ptr_n_k_x3x1 = _mm_mul_epi32( xmm_x_ptr_n_k_x3x1, xmm_tmp1 );
- xmm_x_ptr_sub_x2x0 = _mm_mul_epi32( xmm_x_ptr_sub_x2x0, xmm_tmp2 );
- xmm_x_ptr_sub_x3x1 = _mm_mul_epi32( xmm_x_ptr_sub_x3x1, xmm_tmp2 );
-
- xmm_x_ptr_n_k_x2x0 = _mm_srli_epi64( xmm_x_ptr_n_k_x2x0, 16 );
- xmm_x_ptr_n_k_x3x1 = _mm_slli_epi64( xmm_x_ptr_n_k_x3x1, 16 );
- xmm_x_ptr_sub_x2x0 = _mm_srli_epi64( xmm_x_ptr_sub_x2x0, 16 );
- xmm_x_ptr_sub_x3x1 = _mm_slli_epi64( xmm_x_ptr_sub_x3x1, 16 );
-
- xmm_x_ptr_n_k_x2x0 = _mm_blend_epi16( xmm_x_ptr_n_k_x2x0, xmm_x_ptr_n_k_x3x1, 0xCC );
- xmm_x_ptr_sub_x2x0 = _mm_blend_epi16( xmm_x_ptr_sub_x2x0, xmm_x_ptr_sub_x3x1, 0xCC );
-
- X1_3210 = _mm_loadu_si128( (__m128i *)&CAf[ k ] );
- PTR_3210 = _mm_loadu_si128( (__m128i *)&CAb[ k ] );
-
- X1_3210 = _mm_add_epi32( X1_3210, xmm_x_ptr_n_k_x2x0 );
- PTR_3210 = _mm_add_epi32( PTR_3210, xmm_x_ptr_sub_x2x0 );
-
- _mm_storeu_si128( (__m128i *)&CAf[ k ], X1_3210 );
- _mm_storeu_si128( (__m128i *)&CAb[ k ], PTR_3210 );
- }
-
- for( ; k <= n; k++ ) {
- CAf[ k ] = silk_SMLAWW( CAf[ k ], tmp1,
- silk_LSHIFT32( (opus_int32)x_ptr[ n - k ], -rshifts - 1 ) ); /* Q( -rshift ) */
- CAb[ k ] = silk_SMLAWW( CAb[ k ], tmp2,
- silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n + k - 1 ], -rshifts - 1 ) ); /* Q( -rshift ) */
- }
- }
- }
- }
-
- /* Calculate nominator and denominator for the next order reflection (parcor) coefficient */
- tmp1 = C_first_row[ n ]; /* Q( -rshifts ) */
- tmp2 = C_last_row[ n ]; /* Q( -rshifts ) */
- num = 0; /* Q( -rshifts ) */
- nrg = silk_ADD32( CAb[ 0 ], CAf[ 0 ] ); /* Q( 1-rshifts ) */
- for( k = 0; k < n; k++ ) {
- Atmp_QA = Af_QA[ k ];
- lz = silk_CLZ32( silk_abs( Atmp_QA ) ) - 1;
- lz = silk_min( 32 - QA, lz );
- Atmp1 = silk_LSHIFT32( Atmp_QA, lz ); /* Q( QA + lz ) */
-
- tmp1 = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( C_last_row[ n - k - 1 ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */
- tmp2 = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( C_first_row[ n - k - 1 ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */
- num = silk_ADD_LSHIFT32( num, silk_SMMUL( CAb[ n - k ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */
- nrg = silk_ADD_LSHIFT32( nrg, silk_SMMUL( silk_ADD32( CAb[ k + 1 ], CAf[ k + 1 ] ),
- Atmp1 ), 32 - QA - lz ); /* Q( 1-rshifts ) */
- }
- CAf[ n + 1 ] = tmp1; /* Q( -rshifts ) */
- CAb[ n + 1 ] = tmp2; /* Q( -rshifts ) */
- num = silk_ADD32( num, tmp2 ); /* Q( -rshifts ) */
- num = silk_LSHIFT32( -num, 1 ); /* Q( 1-rshifts ) */
-
- /* Calculate the next order reflection (parcor) coefficient */
- if( silk_abs( num ) < nrg ) {
- rc_Q31 = silk_DIV32_varQ( num, nrg, 31 );
- } else {
- rc_Q31 = ( num > 0 ) ? silk_int32_MAX : silk_int32_MIN;
- }
-
- /* Update inverse prediction gain */
- tmp1 = ( (opus_int32)1 << 30 ) - silk_SMMUL( rc_Q31, rc_Q31 );
- tmp1 = silk_LSHIFT( silk_SMMUL( invGain_Q30, tmp1 ), 2 );
- if( tmp1 <= minInvGain_Q30 ) {
- /* Max prediction gain exceeded; set reflection coefficient such that max prediction gain is exactly hit */
- tmp2 = ( (opus_int32)1 << 30 ) - silk_DIV32_varQ( minInvGain_Q30, invGain_Q30, 30 ); /* Q30 */
- rc_Q31 = silk_SQRT_APPROX( tmp2 ); /* Q15 */
- if( rc_Q31 > 0 ) {
- /* Newton-Raphson iteration */
- rc_Q31 = silk_RSHIFT32( rc_Q31 + silk_DIV32( tmp2, rc_Q31 ), 1 ); /* Q15 */
- rc_Q31 = silk_LSHIFT32( rc_Q31, 16 ); /* Q31 */
- if( num < 0 ) {
- /* Ensure adjusted reflection coefficients has the original sign */
- rc_Q31 = -rc_Q31;
- }
- }
- invGain_Q30 = minInvGain_Q30;
- reached_max_gain = 1;
- } else {
- invGain_Q30 = tmp1;
- }
-
- /* Update the AR coefficients */
- for( k = 0; k < (n + 1) >> 1; k++ ) {
- tmp1 = Af_QA[ k ]; /* QA */
- tmp2 = Af_QA[ n - k - 1 ]; /* QA */
- Af_QA[ k ] = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( tmp2, rc_Q31 ), 1 ); /* QA */
- Af_QA[ n - k - 1 ] = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( tmp1, rc_Q31 ), 1 ); /* QA */
- }
- Af_QA[ n ] = silk_RSHIFT32( rc_Q31, 31 - QA ); /* QA */
-
- if( reached_max_gain ) {
- /* Reached max prediction gain; set remaining coefficients to zero and exit loop */
- for( k = n + 1; k < D; k++ ) {
- Af_QA[ k ] = 0;
- }
- break;
- }
-
- /* Update C * Af and C * Ab */
- for( k = 0; k <= n + 1; k++ ) {
- tmp1 = CAf[ k ]; /* Q( -rshifts ) */
- tmp2 = CAb[ n - k + 1 ]; /* Q( -rshifts ) */
- CAf[ k ] = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( tmp2, rc_Q31 ), 1 ); /* Q( -rshifts ) */
- CAb[ n - k + 1 ] = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( tmp1, rc_Q31 ), 1 ); /* Q( -rshifts ) */
- }
- }
-
- if( reached_max_gain ) {
- for( k = 0; k < D; k++ ) {
- /* Scale coefficients */
- A_Q16[ k ] = -silk_RSHIFT_ROUND( Af_QA[ k ], QA - 16 );
- }
- /* Subtract energy of preceding samples from C0 */
- if( rshifts > 0 ) {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- C0 -= (opus_int32)silk_RSHIFT64( silk_inner_prod16_aligned_64( x_ptr, x_ptr, D, arch ), rshifts );
- }
- } else {
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- C0 -= silk_LSHIFT32( silk_inner_prod_aligned( x_ptr, x_ptr, D, arch ), -rshifts );
- }
- }
- /* Approximate residual energy */
- *res_nrg = silk_LSHIFT( silk_SMMUL( invGain_Q30, C0 ), 2 );
- *res_nrg_Q = -rshifts;
- } else {
- /* Return residual energy */
- nrg = CAf[ 0 ]; /* Q( -rshifts ) */
- tmp1 = (opus_int32)1 << 16; /* Q16 */
- for( k = 0; k < D; k++ ) {
- Atmp1 = silk_RSHIFT_ROUND( Af_QA[ k ], QA - 16 ); /* Q16 */
- nrg = silk_SMLAWW( nrg, CAf[ k + 1 ], Atmp1 ); /* Q( -rshifts ) */
- tmp1 = silk_SMLAWW( tmp1, Atmp1, Atmp1 ); /* Q16 */
- A_Q16[ k ] = -Atmp1;
- }
- *res_nrg = silk_SMLAWW( nrg, silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ), -tmp1 );/* Q( -rshifts ) */
- *res_nrg_Q = -rshifts;
- }
-}
diff --git a/thirdparty/opus/silk/fixed/x86/prefilter_FIX_sse.c b/thirdparty/opus/silk/fixed/x86/prefilter_FIX_sse.c
deleted file mode 100644
index 488a603f5d..0000000000
--- a/thirdparty/opus/silk/fixed/x86/prefilter_FIX_sse.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-#include "main.h"
-#include "celt/x86/x86cpu.h"
-
-void silk_warped_LPC_analysis_filter_FIX_sse4_1(
- opus_int32 state[], /* I/O State [order + 1] */
- opus_int32 res_Q2[], /* O Residual signal [length] */
- const opus_int16 coef_Q13[], /* I Coefficients [order] */
- const opus_int16 input[], /* I Input signal [length] */
- const opus_int16 lambda_Q16, /* I Warping factor */
- const opus_int length, /* I Length of input signal */
- const opus_int order /* I Filter order (even) */
-)
-{
- opus_int n, i;
- opus_int32 acc_Q11, tmp1, tmp2;
-
- /* Order must be even */
- silk_assert( ( order & 1 ) == 0 );
-
- if (order == 10)
- {
- if (0 == lambda_Q16)
- {
- __m128i coef_Q13_3210, coef_Q13_7654;
- __m128i coef_Q13_0123, coef_Q13_4567;
- __m128i state_0123, state_4567;
- __m128i xmm_product1, xmm_product2;
- __m128i xmm_tempa, xmm_tempb;
-
- register opus_int32 sum;
- register opus_int32 state_8, state_9, state_a;
- register opus_int64 coef_Q13_8, coef_Q13_9;
-
- silk_assert( length > 0 );
-
- coef_Q13_3210 = OP_CVTEPI16_EPI32_M64( &coef_Q13[ 0 ] );
- coef_Q13_7654 = OP_CVTEPI16_EPI32_M64( &coef_Q13[ 4 ] );
-
- coef_Q13_0123 = _mm_shuffle_epi32( coef_Q13_3210, _MM_SHUFFLE( 0, 1, 2, 3 ) );
- coef_Q13_4567 = _mm_shuffle_epi32( coef_Q13_7654, _MM_SHUFFLE( 0, 1, 2, 3 ) );
-
- coef_Q13_8 = (opus_int64) coef_Q13[ 8 ];
- coef_Q13_9 = (opus_int64) coef_Q13[ 9 ];
-
- state_0123 = _mm_loadu_si128( (__m128i *)(&state[ 0 ] ) );
- state_4567 = _mm_loadu_si128( (__m128i *)(&state[ 4 ] ) );
-
- state_0123 = _mm_shuffle_epi32( state_0123, _MM_SHUFFLE( 0, 1, 2, 3 ) );
- state_4567 = _mm_shuffle_epi32( state_4567, _MM_SHUFFLE( 0, 1, 2, 3 ) );
-
- state_8 = state[ 8 ];
- state_9 = state[ 9 ];
- state_a = 0;
-
- for( n = 0; n < length; n++ )
- {
- xmm_product1 = _mm_mul_epi32( coef_Q13_0123, state_0123 ); /* 64-bit multiply, only 2 pairs */
- xmm_product2 = _mm_mul_epi32( coef_Q13_4567, state_4567 );
-
- xmm_tempa = _mm_shuffle_epi32( state_0123, _MM_SHUFFLE( 0, 1, 2, 3 ) );
- xmm_tempb = _mm_shuffle_epi32( state_4567, _MM_SHUFFLE( 0, 1, 2, 3 ) );
-
- xmm_product1 = _mm_srli_epi64( xmm_product1, 16 ); /* >> 16, zero extending works */
- xmm_product2 = _mm_srli_epi64( xmm_product2, 16 );
-
- xmm_tempa = _mm_mul_epi32( coef_Q13_3210, xmm_tempa );
- xmm_tempb = _mm_mul_epi32( coef_Q13_7654, xmm_tempb );
-
- xmm_tempa = _mm_srli_epi64( xmm_tempa, 16 );
- xmm_tempb = _mm_srli_epi64( xmm_tempb, 16 );
-
- xmm_tempa = _mm_add_epi32( xmm_tempa, xmm_product1 );
- xmm_tempb = _mm_add_epi32( xmm_tempb, xmm_product2 );
- xmm_tempa = _mm_add_epi32( xmm_tempa, xmm_tempb );
-
- sum = (coef_Q13_8 * state_8) >> 16;
- sum += (coef_Q13_9 * state_9) >> 16;
-
- xmm_tempa = _mm_add_epi32( xmm_tempa, _mm_shuffle_epi32( xmm_tempa, _MM_SHUFFLE( 0, 0, 0, 2 ) ) );
- sum += _mm_cvtsi128_si32( xmm_tempa);
- res_Q2[ n ] = silk_LSHIFT( (opus_int32)input[ n ], 2 ) - silk_RSHIFT_ROUND( ( 5 + sum ), 9);
-
- /* move right */
- state_a = state_9;
- state_9 = state_8;
- state_8 = _mm_cvtsi128_si32( state_4567 );
- state_4567 = _mm_alignr_epi8( state_0123, state_4567, 4 );
-
- state_0123 = _mm_alignr_epi8( _mm_cvtsi32_si128( silk_LSHIFT( input[ n ], 14 ) ), state_0123, 4 );
- }
-
- _mm_storeu_si128( (__m128i *)( &state[ 0 ] ), _mm_shuffle_epi32( state_0123, _MM_SHUFFLE( 0, 1, 2, 3 ) ) );
- _mm_storeu_si128( (__m128i *)( &state[ 4 ] ), _mm_shuffle_epi32( state_4567, _MM_SHUFFLE( 0, 1, 2, 3 ) ) );
- state[ 8 ] = state_8;
- state[ 9 ] = state_9;
- state[ 10 ] = state_a;
-
- return;
- }
- }
-
- for( n = 0; n < length; n++ ) {
- /* Output of lowpass section */
- tmp2 = silk_SMLAWB( state[ 0 ], state[ 1 ], lambda_Q16 );
- state[ 0 ] = silk_LSHIFT( input[ n ], 14 );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( state[ 1 ], state[ 2 ] - tmp2, lambda_Q16 );
- state[ 1 ] = tmp2;
- acc_Q11 = silk_RSHIFT( order, 1 );
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp2, coef_Q13[ 0 ] );
- /* Loop over allpass sections */
- for( i = 2; i < order; i += 2 ) {
- /* Output of allpass section */
- tmp2 = silk_SMLAWB( state[ i ], state[ i + 1 ] - tmp1, lambda_Q16 );
- state[ i ] = tmp1;
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp1, coef_Q13[ i - 1 ] );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( state[ i + 1 ], state[ i + 2 ] - tmp2, lambda_Q16 );
- state[ i + 1 ] = tmp2;
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp2, coef_Q13[ i ] );
- }
- state[ order ] = tmp1;
- acc_Q11 = silk_SMLAWB( acc_Q11, tmp1, coef_Q13[ order - 1 ] );
- res_Q2[ n ] = silk_LSHIFT( (opus_int32)input[ n ], 2 ) - silk_RSHIFT_ROUND( acc_Q11, 9 );
- }
-}
diff --git a/thirdparty/opus/silk/fixed/x86/vector_ops_FIX_sse.c b/thirdparty/opus/silk/fixed/x86/vector_ops_FIX_sse.c
deleted file mode 100644
index c1e90564d0..0000000000
--- a/thirdparty/opus/silk/fixed/x86/vector_ops_FIX_sse.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-#include "main.h"
-
-#include "SigProc_FIX.h"
-#include "pitch.h"
-
-opus_int64 silk_inner_prod16_aligned_64_sse4_1(
- const opus_int16 *inVec1, /* I input vector 1 */
- const opus_int16 *inVec2, /* I input vector 2 */
- const opus_int len /* I vector lengths */
-)
-{
- opus_int i, dataSize8;
- opus_int64 sum;
-
- __m128i xmm_tempa;
- __m128i inVec1_76543210, acc1;
- __m128i inVec2_76543210, acc2;
-
- sum = 0;
- dataSize8 = len & ~7;
-
- acc1 = _mm_setzero_si128();
- acc2 = _mm_setzero_si128();
-
- for( i = 0; i < dataSize8; i += 8 ) {
- inVec1_76543210 = _mm_loadu_si128( (__m128i *)(&inVec1[i + 0] ) );
- inVec2_76543210 = _mm_loadu_si128( (__m128i *)(&inVec2[i + 0] ) );
-
- /* only when all 4 operands are -32768 (0x8000), this results in wrap around */
- inVec1_76543210 = _mm_madd_epi16( inVec1_76543210, inVec2_76543210 );
-
- xmm_tempa = _mm_cvtepi32_epi64( inVec1_76543210 );
- /* equal shift right 8 bytes */
- inVec1_76543210 = _mm_shuffle_epi32( inVec1_76543210, _MM_SHUFFLE( 0, 0, 3, 2 ) );
- inVec1_76543210 = _mm_cvtepi32_epi64( inVec1_76543210 );
-
- acc1 = _mm_add_epi64( acc1, xmm_tempa );
- acc2 = _mm_add_epi64( acc2, inVec1_76543210 );
- }
-
- acc1 = _mm_add_epi64( acc1, acc2 );
-
- /* equal shift right 8 bytes */
- acc2 = _mm_shuffle_epi32( acc1, _MM_SHUFFLE( 0, 0, 3, 2 ) );
- acc1 = _mm_add_epi64( acc1, acc2 );
-
- _mm_storel_epi64( (__m128i *)&sum, acc1 );
-
- for( ; i < len; i++ ) {
- sum = silk_SMLABB( sum, inVec1[ i ], inVec2[ i ] );
- }
-
- return sum;
-}
diff --git a/thirdparty/opus/silk/float/LPC_analysis_filter_FLP.c b/thirdparty/opus/silk/float/LPC_analysis_filter_FLP.c
deleted file mode 100644
index cae89a0a18..0000000000
--- a/thirdparty/opus/silk/float/LPC_analysis_filter_FLP.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include "main_FLP.h"
-
-/************************************************/
-/* LPC analysis filter */
-/* NB! State is kept internally and the */
-/* filter always starts with zero state */
-/* first Order output samples are set to zero */
-/************************************************/
-
-/* 16th order LPC analysis filter, does not write first 16 samples */
-static OPUS_INLINE void silk_LPC_analysis_filter16_FLP(
- silk_float r_LPC[], /* O LPC residual signal */
- const silk_float PredCoef[], /* I LPC coefficients */
- const silk_float s[], /* I Input signal */
- const opus_int length /* I Length of input signal */
-)
-{
- opus_int ix;
- silk_float LPC_pred;
- const silk_float *s_ptr;
-
- for( ix = 16; ix < length; ix++ ) {
- s_ptr = &s[ix - 1];
-
- /* short-term prediction */
- LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] +
- s_ptr[ -1 ] * PredCoef[ 1 ] +
- s_ptr[ -2 ] * PredCoef[ 2 ] +
- s_ptr[ -3 ] * PredCoef[ 3 ] +
- s_ptr[ -4 ] * PredCoef[ 4 ] +
- s_ptr[ -5 ] * PredCoef[ 5 ] +
- s_ptr[ -6 ] * PredCoef[ 6 ] +
- s_ptr[ -7 ] * PredCoef[ 7 ] +
- s_ptr[ -8 ] * PredCoef[ 8 ] +
- s_ptr[ -9 ] * PredCoef[ 9 ] +
- s_ptr[ -10 ] * PredCoef[ 10 ] +
- s_ptr[ -11 ] * PredCoef[ 11 ] +
- s_ptr[ -12 ] * PredCoef[ 12 ] +
- s_ptr[ -13 ] * PredCoef[ 13 ] +
- s_ptr[ -14 ] * PredCoef[ 14 ] +
- s_ptr[ -15 ] * PredCoef[ 15 ];
-
- /* prediction error */
- r_LPC[ix] = s_ptr[ 1 ] - LPC_pred;
- }
-}
-
-/* 12th order LPC analysis filter, does not write first 12 samples */
-static OPUS_INLINE void silk_LPC_analysis_filter12_FLP(
- silk_float r_LPC[], /* O LPC residual signal */
- const silk_float PredCoef[], /* I LPC coefficients */
- const silk_float s[], /* I Input signal */
- const opus_int length /* I Length of input signal */
-)
-{
- opus_int ix;
- silk_float LPC_pred;
- const silk_float *s_ptr;
-
- for( ix = 12; ix < length; ix++ ) {
- s_ptr = &s[ix - 1];
-
- /* short-term prediction */
- LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] +
- s_ptr[ -1 ] * PredCoef[ 1 ] +
- s_ptr[ -2 ] * PredCoef[ 2 ] +
- s_ptr[ -3 ] * PredCoef[ 3 ] +
- s_ptr[ -4 ] * PredCoef[ 4 ] +
- s_ptr[ -5 ] * PredCoef[ 5 ] +
- s_ptr[ -6 ] * PredCoef[ 6 ] +
- s_ptr[ -7 ] * PredCoef[ 7 ] +
- s_ptr[ -8 ] * PredCoef[ 8 ] +
- s_ptr[ -9 ] * PredCoef[ 9 ] +
- s_ptr[ -10 ] * PredCoef[ 10 ] +
- s_ptr[ -11 ] * PredCoef[ 11 ];
-
- /* prediction error */
- r_LPC[ix] = s_ptr[ 1 ] - LPC_pred;
- }
-}
-
-/* 10th order LPC analysis filter, does not write first 10 samples */
-static OPUS_INLINE void silk_LPC_analysis_filter10_FLP(
- silk_float r_LPC[], /* O LPC residual signal */
- const silk_float PredCoef[], /* I LPC coefficients */
- const silk_float s[], /* I Input signal */
- const opus_int length /* I Length of input signal */
-)
-{
- opus_int ix;
- silk_float LPC_pred;
- const silk_float *s_ptr;
-
- for( ix = 10; ix < length; ix++ ) {
- s_ptr = &s[ix - 1];
-
- /* short-term prediction */
- LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] +
- s_ptr[ -1 ] * PredCoef[ 1 ] +
- s_ptr[ -2 ] * PredCoef[ 2 ] +
- s_ptr[ -3 ] * PredCoef[ 3 ] +
- s_ptr[ -4 ] * PredCoef[ 4 ] +
- s_ptr[ -5 ] * PredCoef[ 5 ] +
- s_ptr[ -6 ] * PredCoef[ 6 ] +
- s_ptr[ -7 ] * PredCoef[ 7 ] +
- s_ptr[ -8 ] * PredCoef[ 8 ] +
- s_ptr[ -9 ] * PredCoef[ 9 ];
-
- /* prediction error */
- r_LPC[ix] = s_ptr[ 1 ] - LPC_pred;
- }
-}
-
-/* 8th order LPC analysis filter, does not write first 8 samples */
-static OPUS_INLINE void silk_LPC_analysis_filter8_FLP(
- silk_float r_LPC[], /* O LPC residual signal */
- const silk_float PredCoef[], /* I LPC coefficients */
- const silk_float s[], /* I Input signal */
- const opus_int length /* I Length of input signal */
-)
-{
- opus_int ix;
- silk_float LPC_pred;
- const silk_float *s_ptr;
-
- for( ix = 8; ix < length; ix++ ) {
- s_ptr = &s[ix - 1];
-
- /* short-term prediction */
- LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] +
- s_ptr[ -1 ] * PredCoef[ 1 ] +
- s_ptr[ -2 ] * PredCoef[ 2 ] +
- s_ptr[ -3 ] * PredCoef[ 3 ] +
- s_ptr[ -4 ] * PredCoef[ 4 ] +
- s_ptr[ -5 ] * PredCoef[ 5 ] +
- s_ptr[ -6 ] * PredCoef[ 6 ] +
- s_ptr[ -7 ] * PredCoef[ 7 ];
-
- /* prediction error */
- r_LPC[ix] = s_ptr[ 1 ] - LPC_pred;
- }
-}
-
-/* 6th order LPC analysis filter, does not write first 6 samples */
-static OPUS_INLINE void silk_LPC_analysis_filter6_FLP(
- silk_float r_LPC[], /* O LPC residual signal */
- const silk_float PredCoef[], /* I LPC coefficients */
- const silk_float s[], /* I Input signal */
- const opus_int length /* I Length of input signal */
-)
-{
- opus_int ix;
- silk_float LPC_pred;
- const silk_float *s_ptr;
-
- for( ix = 6; ix < length; ix++ ) {
- s_ptr = &s[ix - 1];
-
- /* short-term prediction */
- LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] +
- s_ptr[ -1 ] * PredCoef[ 1 ] +
- s_ptr[ -2 ] * PredCoef[ 2 ] +
- s_ptr[ -3 ] * PredCoef[ 3 ] +
- s_ptr[ -4 ] * PredCoef[ 4 ] +
- s_ptr[ -5 ] * PredCoef[ 5 ];
-
- /* prediction error */
- r_LPC[ix] = s_ptr[ 1 ] - LPC_pred;
- }
-}
-
-/************************************************/
-/* LPC analysis filter */
-/* NB! State is kept internally and the */
-/* filter always starts with zero state */
-/* first Order output samples are set to zero */
-/************************************************/
-void silk_LPC_analysis_filter_FLP(
- silk_float r_LPC[], /* O LPC residual signal */
- const silk_float PredCoef[], /* I LPC coefficients */
- const silk_float s[], /* I Input signal */
- const opus_int length, /* I Length of input signal */
- const opus_int Order /* I LPC order */
-)
-{
- silk_assert( Order <= length );
-
- switch( Order ) {
- case 6:
- silk_LPC_analysis_filter6_FLP( r_LPC, PredCoef, s, length );
- break;
-
- case 8:
- silk_LPC_analysis_filter8_FLP( r_LPC, PredCoef, s, length );
- break;
-
- case 10:
- silk_LPC_analysis_filter10_FLP( r_LPC, PredCoef, s, length );
- break;
-
- case 12:
- silk_LPC_analysis_filter12_FLP( r_LPC, PredCoef, s, length );
- break;
-
- case 16:
- silk_LPC_analysis_filter16_FLP( r_LPC, PredCoef, s, length );
- break;
-
- default:
- silk_assert( 0 );
- break;
- }
-
- /* Set first Order output samples to zero */
- silk_memset( r_LPC, 0, Order * sizeof( silk_float ) );
-}
-
diff --git a/thirdparty/opus/silk/float/LPC_inv_pred_gain_FLP.c b/thirdparty/opus/silk/float/LPC_inv_pred_gain_FLP.c
deleted file mode 100644
index 25178bacdd..0000000000
--- a/thirdparty/opus/silk/float/LPC_inv_pred_gain_FLP.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "SigProc_FLP.h"
-
-#define RC_THRESHOLD 0.9999f
-
-/* compute inverse of LPC prediction gain, and */
-/* test if LPC coefficients are stable (all poles within unit circle) */
-/* this code is based on silk_a2k_FLP() */
-silk_float silk_LPC_inverse_pred_gain_FLP( /* O return inverse prediction gain, energy domain */
- const silk_float *A, /* I prediction coefficients [order] */
- opus_int32 order /* I prediction order */
-)
-{
- opus_int k, n;
- double invGain, rc, rc_mult1, rc_mult2;
- silk_float Atmp[ 2 ][ SILK_MAX_ORDER_LPC ];
- silk_float *Aold, *Anew;
-
- Anew = Atmp[ order & 1 ];
- silk_memcpy( Anew, A, order * sizeof(silk_float) );
-
- invGain = 1.0;
- for( k = order - 1; k > 0; k-- ) {
- rc = -Anew[ k ];
- if( rc > RC_THRESHOLD || rc < -RC_THRESHOLD ) {
- return 0.0f;
- }
- rc_mult1 = 1.0f - rc * rc;
- rc_mult2 = 1.0f / rc_mult1;
- invGain *= rc_mult1;
- /* swap pointers */
- Aold = Anew;
- Anew = Atmp[ k & 1 ];
- for( n = 0; n < k; n++ ) {
- Anew[ n ] = (silk_float)( ( Aold[ n ] - Aold[ k - n - 1 ] * rc ) * rc_mult2 );
- }
- }
- rc = -Anew[ 0 ];
- if( rc > RC_THRESHOLD || rc < -RC_THRESHOLD ) {
- return 0.0f;
- }
- rc_mult1 = 1.0f - rc * rc;
- invGain *= rc_mult1;
- return (silk_float)invGain;
-}
diff --git a/thirdparty/opus/silk/float/LTP_analysis_filter_FLP.c b/thirdparty/opus/silk/float/LTP_analysis_filter_FLP.c
deleted file mode 100644
index 849b7c1c52..0000000000
--- a/thirdparty/opus/silk/float/LTP_analysis_filter_FLP.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-
-void silk_LTP_analysis_filter_FLP(
- silk_float *LTP_res, /* O LTP res MAX_NB_SUBFR*(pre_lgth+subfr_lngth) */
- const silk_float *x, /* I Input signal, with preceding samples */
- const silk_float B[ LTP_ORDER * MAX_NB_SUBFR ], /* I LTP coefficients for each subframe */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const silk_float invGains[ MAX_NB_SUBFR ], /* I Inverse quantization gains */
- const opus_int subfr_length, /* I Length of each subframe */
- const opus_int nb_subfr, /* I number of subframes */
- const opus_int pre_length /* I Preceding samples for each subframe */
-)
-{
- const silk_float *x_ptr, *x_lag_ptr;
- silk_float Btmp[ LTP_ORDER ];
- silk_float *LTP_res_ptr;
- silk_float inv_gain;
- opus_int k, i, j;
-
- x_ptr = x;
- LTP_res_ptr = LTP_res;
- for( k = 0; k < nb_subfr; k++ ) {
- x_lag_ptr = x_ptr - pitchL[ k ];
- inv_gain = invGains[ k ];
- for( i = 0; i < LTP_ORDER; i++ ) {
- Btmp[ i ] = B[ k * LTP_ORDER + i ];
- }
-
- /* LTP analysis FIR filter */
- for( i = 0; i < subfr_length + pre_length; i++ ) {
- LTP_res_ptr[ i ] = x_ptr[ i ];
- /* Subtract long-term prediction */
- for( j = 0; j < LTP_ORDER; j++ ) {
- LTP_res_ptr[ i ] -= Btmp[ j ] * x_lag_ptr[ LTP_ORDER / 2 - j ];
- }
- LTP_res_ptr[ i ] *= inv_gain;
- x_lag_ptr++;
- }
-
- /* Update pointers */
- LTP_res_ptr += subfr_length + pre_length;
- x_ptr += subfr_length;
- }
-}
diff --git a/thirdparty/opus/silk/float/LTP_scale_ctrl_FLP.c b/thirdparty/opus/silk/float/LTP_scale_ctrl_FLP.c
deleted file mode 100644
index 8dbe29d0fa..0000000000
--- a/thirdparty/opus/silk/float/LTP_scale_ctrl_FLP.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-
-void silk_LTP_scale_ctrl_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- opus_int round_loss;
-
- if( condCoding == CODE_INDEPENDENTLY ) {
- /* Only scale if first frame in packet */
- round_loss = psEnc->sCmn.PacketLoss_perc + psEnc->sCmn.nFramesPerPacket;
- psEnc->sCmn.indices.LTP_scaleIndex = (opus_int8)silk_LIMIT( round_loss * psEncCtrl->LTPredCodGain * 0.1f, 0.0f, 2.0f );
- } else {
- /* Default is minimum scaling */
- psEnc->sCmn.indices.LTP_scaleIndex = 0;
- }
-
- psEncCtrl->LTP_scale = (silk_float)silk_LTPScales_table_Q14[ psEnc->sCmn.indices.LTP_scaleIndex ] / 16384.0f;
-}
diff --git a/thirdparty/opus/silk/float/SigProc_FLP.h b/thirdparty/opus/silk/float/SigProc_FLP.h
deleted file mode 100644
index f0cb3733be..0000000000
--- a/thirdparty/opus/silk/float/SigProc_FLP.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_SIGPROC_FLP_H
-#define SILK_SIGPROC_FLP_H
-
-#include "SigProc_FIX.h"
-#include "float_cast.h"
-#include <math.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/********************************************************************/
-/* SIGNAL PROCESSING FUNCTIONS */
-/********************************************************************/
-
-/* Chirp (bw expand) LP AR filter */
-void silk_bwexpander_FLP(
- silk_float *ar, /* I/O AR filter to be expanded (without leading 1) */
- const opus_int d, /* I length of ar */
- const silk_float chirp /* I chirp factor (typically in range (0..1) ) */
-);
-
-/* compute inverse of LPC prediction gain, and */
-/* test if LPC coefficients are stable (all poles within unit circle) */
-/* this code is based on silk_FLP_a2k() */
-silk_float silk_LPC_inverse_pred_gain_FLP( /* O return inverse prediction gain, energy domain */
- const silk_float *A, /* I prediction coefficients [order] */
- opus_int32 order /* I prediction order */
-);
-
-silk_float silk_schur_FLP( /* O returns residual energy */
- silk_float refl_coef[], /* O reflection coefficients (length order) */
- const silk_float auto_corr[], /* I autocorrelation sequence (length order+1) */
- opus_int order /* I order */
-);
-
-void silk_k2a_FLP(
- silk_float *A, /* O prediction coefficients [order] */
- const silk_float *rc, /* I reflection coefficients [order] */
- opus_int32 order /* I prediction order */
-);
-
-/* Solve the normal equations using the Levinson-Durbin recursion */
-silk_float silk_levinsondurbin_FLP( /* O prediction error energy */
- silk_float A[], /* O prediction coefficients [order] */
- const silk_float corr[], /* I input auto-correlations [order + 1] */
- const opus_int order /* I prediction order */
-);
-
-/* compute autocorrelation */
-void silk_autocorrelation_FLP(
- silk_float *results, /* O result (length correlationCount) */
- const silk_float *inputData, /* I input data to correlate */
- opus_int inputDataSize, /* I length of input */
- opus_int correlationCount /* I number of correlation taps to compute */
-);
-
-opus_int silk_pitch_analysis_core_FLP( /* O Voicing estimate: 0 voiced, 1 unvoiced */
- const silk_float *frame, /* I Signal of length PE_FRAME_LENGTH_MS*Fs_kHz */
- opus_int *pitch_out, /* O Pitch lag values [nb_subfr] */
- opus_int16 *lagIndex, /* O Lag Index */
- opus_int8 *contourIndex, /* O Pitch contour Index */
- silk_float *LTPCorr, /* I/O Normalized correlation; input: value from previous frame */
- opus_int prevLag, /* I Last lag of previous frame; set to zero is unvoiced */
- const silk_float search_thres1, /* I First stage threshold for lag candidates 0 - 1 */
- const silk_float search_thres2, /* I Final threshold for lag candidates 0 - 1 */
- const opus_int Fs_kHz, /* I sample frequency (kHz) */
- const opus_int complexity, /* I Complexity setting, 0-2, where 2 is highest */
- const opus_int nb_subfr, /* I Number of 5 ms subframes */
- int arch /* I Run-time architecture */
-);
-
-void silk_insertion_sort_decreasing_FLP(
- silk_float *a, /* I/O Unsorted / Sorted vector */
- opus_int *idx, /* O Index vector for the sorted elements */
- const opus_int L, /* I Vector length */
- const opus_int K /* I Number of correctly sorted positions */
-);
-
-/* Compute reflection coefficients from input signal */
-silk_float silk_burg_modified_FLP( /* O returns residual energy */
- silk_float A[], /* O prediction coefficients (length order) */
- const silk_float x[], /* I input signal, length: nb_subfr*(D+L_sub) */
- const silk_float minInvGain, /* I minimum inverse prediction gain */
- const opus_int subfr_length, /* I input signal subframe length (incl. D preceding samples) */
- const opus_int nb_subfr, /* I number of subframes stacked in x */
- const opus_int D /* I order */
-);
-
-/* multiply a vector by a constant */
-void silk_scale_vector_FLP(
- silk_float *data1,
- silk_float gain,
- opus_int dataSize
-);
-
-/* copy and multiply a vector by a constant */
-void silk_scale_copy_vector_FLP(
- silk_float *data_out,
- const silk_float *data_in,
- silk_float gain,
- opus_int dataSize
-);
-
-/* inner product of two silk_float arrays, with result as double */
-double silk_inner_product_FLP(
- const silk_float *data1,
- const silk_float *data2,
- opus_int dataSize
-);
-
-/* sum of squares of a silk_float array, with result as double */
-double silk_energy_FLP(
- const silk_float *data,
- opus_int dataSize
-);
-
-/********************************************************************/
-/* MACROS */
-/********************************************************************/
-
-#define PI (3.1415926536f)
-
-#define silk_min_float( a, b ) (((a) < (b)) ? (a) : (b))
-#define silk_max_float( a, b ) (((a) > (b)) ? (a) : (b))
-#define silk_abs_float( a ) ((silk_float)fabs(a))
-
-/* sigmoid function */
-static OPUS_INLINE silk_float silk_sigmoid( silk_float x )
-{
- return (silk_float)(1.0 / (1.0 + exp(-x)));
-}
-
-/* floating-point to integer conversion (rounding) */
-static OPUS_INLINE opus_int32 silk_float2int( silk_float x )
-{
- return (opus_int32)float2int( x );
-}
-
-/* floating-point to integer conversion (rounding) */
-static OPUS_INLINE void silk_float2short_array(
- opus_int16 *out,
- const silk_float *in,
- opus_int32 length
-)
-{
- opus_int32 k;
- for( k = length - 1; k >= 0; k-- ) {
- out[k] = silk_SAT16( (opus_int32)float2int( in[k] ) );
- }
-}
-
-/* integer to floating-point conversion */
-static OPUS_INLINE void silk_short2float_array(
- silk_float *out,
- const opus_int16 *in,
- opus_int32 length
-)
-{
- opus_int32 k;
- for( k = length - 1; k >= 0; k-- ) {
- out[k] = (silk_float)in[k];
- }
-}
-
-/* using log2() helps the fixed-point conversion */
-static OPUS_INLINE silk_float silk_log2( double x )
-{
- return ( silk_float )( 3.32192809488736 * log10( x ) );
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SILK_SIGPROC_FLP_H */
diff --git a/thirdparty/opus/silk/float/apply_sine_window_FLP.c b/thirdparty/opus/silk/float/apply_sine_window_FLP.c
deleted file mode 100644
index 6aae57c0ab..0000000000
--- a/thirdparty/opus/silk/float/apply_sine_window_FLP.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-
-/* Apply sine window to signal vector */
-/* Window types: */
-/* 1 -> sine window from 0 to pi/2 */
-/* 2 -> sine window from pi/2 to pi */
-void silk_apply_sine_window_FLP(
- silk_float px_win[], /* O Pointer to windowed signal */
- const silk_float px[], /* I Pointer to input signal */
- const opus_int win_type, /* I Selects a window type */
- const opus_int length /* I Window length, multiple of 4 */
-)
-{
- opus_int k;
- silk_float freq, c, S0, S1;
-
- silk_assert( win_type == 1 || win_type == 2 );
-
- /* Length must be multiple of 4 */
- silk_assert( ( length & 3 ) == 0 );
-
- freq = PI / ( length + 1 );
-
- /* Approximation of 2 * cos(f) */
- c = 2.0f - freq * freq;
-
- /* Initialize state */
- if( win_type < 2 ) {
- /* Start from 0 */
- S0 = 0.0f;
- /* Approximation of sin(f) */
- S1 = freq;
- } else {
- /* Start from 1 */
- S0 = 1.0f;
- /* Approximation of cos(f) */
- S1 = 0.5f * c;
- }
-
- /* Uses the recursive equation: sin(n*f) = 2 * cos(f) * sin((n-1)*f) - sin((n-2)*f) */
- /* 4 samples at a time */
- for( k = 0; k < length; k += 4 ) {
- px_win[ k + 0 ] = px[ k + 0 ] * 0.5f * ( S0 + S1 );
- px_win[ k + 1 ] = px[ k + 1 ] * S1;
- S0 = c * S1 - S0;
- px_win[ k + 2 ] = px[ k + 2 ] * 0.5f * ( S1 + S0 );
- px_win[ k + 3 ] = px[ k + 3 ] * S0;
- S1 = c * S0 - S1;
- }
-}
diff --git a/thirdparty/opus/silk/float/autocorrelation_FLP.c b/thirdparty/opus/silk/float/autocorrelation_FLP.c
deleted file mode 100644
index 8b8a9e659a..0000000000
--- a/thirdparty/opus/silk/float/autocorrelation_FLP.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "typedef.h"
-#include "SigProc_FLP.h"
-
-/* compute autocorrelation */
-void silk_autocorrelation_FLP(
- silk_float *results, /* O result (length correlationCount) */
- const silk_float *inputData, /* I input data to correlate */
- opus_int inputDataSize, /* I length of input */
- opus_int correlationCount /* I number of correlation taps to compute */
-)
-{
- opus_int i;
-
- if( correlationCount > inputDataSize ) {
- correlationCount = inputDataSize;
- }
-
- for( i = 0; i < correlationCount; i++ ) {
- results[ i ] = (silk_float)silk_inner_product_FLP( inputData, inputData + i, inputDataSize - i );
- }
-}
diff --git a/thirdparty/opus/silk/float/burg_modified_FLP.c b/thirdparty/opus/silk/float/burg_modified_FLP.c
deleted file mode 100644
index ea5dc25a93..0000000000
--- a/thirdparty/opus/silk/float/burg_modified_FLP.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-#include "tuning_parameters.h"
-#include "define.h"
-
-#define MAX_FRAME_SIZE 384 /* subfr_length * nb_subfr = ( 0.005 * 16000 + 16 ) * 4 = 384*/
-
-/* Compute reflection coefficients from input signal */
-silk_float silk_burg_modified_FLP( /* O returns residual energy */
- silk_float A[], /* O prediction coefficients (length order) */
- const silk_float x[], /* I input signal, length: nb_subfr*(D+L_sub) */
- const silk_float minInvGain, /* I minimum inverse prediction gain */
- const opus_int subfr_length, /* I input signal subframe length (incl. D preceding samples) */
- const opus_int nb_subfr, /* I number of subframes stacked in x */
- const opus_int D /* I order */
-)
-{
- opus_int k, n, s, reached_max_gain;
- double C0, invGain, num, nrg_f, nrg_b, rc, Atmp, tmp1, tmp2;
- const silk_float *x_ptr;
- double C_first_row[ SILK_MAX_ORDER_LPC ], C_last_row[ SILK_MAX_ORDER_LPC ];
- double CAf[ SILK_MAX_ORDER_LPC + 1 ], CAb[ SILK_MAX_ORDER_LPC + 1 ];
- double Af[ SILK_MAX_ORDER_LPC ];
-
- silk_assert( subfr_length * nb_subfr <= MAX_FRAME_SIZE );
-
- /* Compute autocorrelations, added over subframes */
- C0 = silk_energy_FLP( x, nb_subfr * subfr_length );
- silk_memset( C_first_row, 0, SILK_MAX_ORDER_LPC * sizeof( double ) );
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- for( n = 1; n < D + 1; n++ ) {
- C_first_row[ n - 1 ] += silk_inner_product_FLP( x_ptr, x_ptr + n, subfr_length - n );
- }
- }
- silk_memcpy( C_last_row, C_first_row, SILK_MAX_ORDER_LPC * sizeof( double ) );
-
- /* Initialize */
- CAb[ 0 ] = CAf[ 0 ] = C0 + FIND_LPC_COND_FAC * C0 + 1e-9f;
- invGain = 1.0f;
- reached_max_gain = 0;
- for( n = 0; n < D; n++ ) {
- /* Update first row of correlation matrix (without first element) */
- /* Update last row of correlation matrix (without last element, stored in reversed order) */
- /* Update C * Af */
- /* Update C * flipud(Af) (stored in reversed order) */
- for( s = 0; s < nb_subfr; s++ ) {
- x_ptr = x + s * subfr_length;
- tmp1 = x_ptr[ n ];
- tmp2 = x_ptr[ subfr_length - n - 1 ];
- for( k = 0; k < n; k++ ) {
- C_first_row[ k ] -= x_ptr[ n ] * x_ptr[ n - k - 1 ];
- C_last_row[ k ] -= x_ptr[ subfr_length - n - 1 ] * x_ptr[ subfr_length - n + k ];
- Atmp = Af[ k ];
- tmp1 += x_ptr[ n - k - 1 ] * Atmp;
- tmp2 += x_ptr[ subfr_length - n + k ] * Atmp;
- }
- for( k = 0; k <= n; k++ ) {
- CAf[ k ] -= tmp1 * x_ptr[ n - k ];
- CAb[ k ] -= tmp2 * x_ptr[ subfr_length - n + k - 1 ];
- }
- }
- tmp1 = C_first_row[ n ];
- tmp2 = C_last_row[ n ];
- for( k = 0; k < n; k++ ) {
- Atmp = Af[ k ];
- tmp1 += C_last_row[ n - k - 1 ] * Atmp;
- tmp2 += C_first_row[ n - k - 1 ] * Atmp;
- }
- CAf[ n + 1 ] = tmp1;
- CAb[ n + 1 ] = tmp2;
-
- /* Calculate nominator and denominator for the next order reflection (parcor) coefficient */
- num = CAb[ n + 1 ];
- nrg_b = CAb[ 0 ];
- nrg_f = CAf[ 0 ];
- for( k = 0; k < n; k++ ) {
- Atmp = Af[ k ];
- num += CAb[ n - k ] * Atmp;
- nrg_b += CAb[ k + 1 ] * Atmp;
- nrg_f += CAf[ k + 1 ] * Atmp;
- }
- silk_assert( nrg_f > 0.0 );
- silk_assert( nrg_b > 0.0 );
-
- /* Calculate the next order reflection (parcor) coefficient */
- rc = -2.0 * num / ( nrg_f + nrg_b );
- silk_assert( rc > -1.0 && rc < 1.0 );
-
- /* Update inverse prediction gain */
- tmp1 = invGain * ( 1.0 - rc * rc );
- if( tmp1 <= minInvGain ) {
- /* Max prediction gain exceeded; set reflection coefficient such that max prediction gain is exactly hit */
- rc = sqrt( 1.0 - minInvGain / invGain );
- if( num > 0 ) {
- /* Ensure adjusted reflection coefficients has the original sign */
- rc = -rc;
- }
- invGain = minInvGain;
- reached_max_gain = 1;
- } else {
- invGain = tmp1;
- }
-
- /* Update the AR coefficients */
- for( k = 0; k < (n + 1) >> 1; k++ ) {
- tmp1 = Af[ k ];
- tmp2 = Af[ n - k - 1 ];
- Af[ k ] = tmp1 + rc * tmp2;
- Af[ n - k - 1 ] = tmp2 + rc * tmp1;
- }
- Af[ n ] = rc;
-
- if( reached_max_gain ) {
- /* Reached max prediction gain; set remaining coefficients to zero and exit loop */
- for( k = n + 1; k < D; k++ ) {
- Af[ k ] = 0.0;
- }
- break;
- }
-
- /* Update C * Af and C * Ab */
- for( k = 0; k <= n + 1; k++ ) {
- tmp1 = CAf[ k ];
- CAf[ k ] += rc * CAb[ n - k + 1 ];
- CAb[ n - k + 1 ] += rc * tmp1;
- }
- }
-
- if( reached_max_gain ) {
- /* Convert to silk_float */
- for( k = 0; k < D; k++ ) {
- A[ k ] = (silk_float)( -Af[ k ] );
- }
- /* Subtract energy of preceding samples from C0 */
- for( s = 0; s < nb_subfr; s++ ) {
- C0 -= silk_energy_FLP( x + s * subfr_length, D );
- }
- /* Approximate residual energy */
- nrg_f = C0 * invGain;
- } else {
- /* Compute residual energy and store coefficients as silk_float */
- nrg_f = CAf[ 0 ];
- tmp1 = 1.0;
- for( k = 0; k < D; k++ ) {
- Atmp = Af[ k ];
- nrg_f += CAf[ k + 1 ] * Atmp;
- tmp1 += Atmp * Atmp;
- A[ k ] = (silk_float)(-Atmp);
- }
- nrg_f -= FIND_LPC_COND_FAC * C0 * tmp1;
- }
-
- /* Return residual energy */
- return (silk_float)nrg_f;
-}
diff --git a/thirdparty/opus/silk/float/bwexpander_FLP.c b/thirdparty/opus/silk/float/bwexpander_FLP.c
deleted file mode 100644
index d55a4d79ab..0000000000
--- a/thirdparty/opus/silk/float/bwexpander_FLP.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-
-/* Chirp (bw expand) LP AR filter */
-void silk_bwexpander_FLP(
- silk_float *ar, /* I/O AR filter to be expanded (without leading 1) */
- const opus_int d, /* I length of ar */
- const silk_float chirp /* I chirp factor (typically in range (0..1) ) */
-)
-{
- opus_int i;
- silk_float cfac = chirp;
-
- for( i = 0; i < d - 1; i++ ) {
- ar[ i ] *= cfac;
- cfac *= chirp;
- }
- ar[ d - 1 ] *= cfac;
-}
diff --git a/thirdparty/opus/silk/float/corrMatrix_FLP.c b/thirdparty/opus/silk/float/corrMatrix_FLP.c
deleted file mode 100644
index eae6a1cfca..0000000000
--- a/thirdparty/opus/silk/float/corrMatrix_FLP.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/**********************************************************************
- * Correlation matrix computations for LS estimate.
- **********************************************************************/
-
-#include "main_FLP.h"
-
-/* Calculates correlation vector X'*t */
-void silk_corrVector_FLP(
- const silk_float *x, /* I x vector [L+order-1] used to create X */
- const silk_float *t, /* I Target vector [L] */
- const opus_int L, /* I Length of vecors */
- const opus_int Order, /* I Max lag for correlation */
- silk_float *Xt /* O X'*t correlation vector [order] */
-)
-{
- opus_int lag;
- const silk_float *ptr1;
-
- ptr1 = &x[ Order - 1 ]; /* Points to first sample of column 0 of X: X[:,0] */
- for( lag = 0; lag < Order; lag++ ) {
- /* Calculate X[:,lag]'*t */
- Xt[ lag ] = (silk_float)silk_inner_product_FLP( ptr1, t, L );
- ptr1--; /* Next column of X */
- }
-}
-
-/* Calculates correlation matrix X'*X */
-void silk_corrMatrix_FLP(
- const silk_float *x, /* I x vector [ L+order-1 ] used to create X */
- const opus_int L, /* I Length of vectors */
- const opus_int Order, /* I Max lag for correlation */
- silk_float *XX /* O X'*X correlation matrix [order x order] */
-)
-{
- opus_int j, lag;
- double energy;
- const silk_float *ptr1, *ptr2;
-
- ptr1 = &x[ Order - 1 ]; /* First sample of column 0 of X */
- energy = silk_energy_FLP( ptr1, L ); /* X[:,0]'*X[:,0] */
- matrix_ptr( XX, 0, 0, Order ) = ( silk_float )energy;
- for( j = 1; j < Order; j++ ) {
- /* Calculate X[:,j]'*X[:,j] */
- energy += ptr1[ -j ] * ptr1[ -j ] - ptr1[ L - j ] * ptr1[ L - j ];
- matrix_ptr( XX, j, j, Order ) = ( silk_float )energy;
- }
-
- ptr2 = &x[ Order - 2 ]; /* First sample of column 1 of X */
- for( lag = 1; lag < Order; lag++ ) {
- /* Calculate X[:,0]'*X[:,lag] */
- energy = silk_inner_product_FLP( ptr1, ptr2, L );
- matrix_ptr( XX, lag, 0, Order ) = ( silk_float )energy;
- matrix_ptr( XX, 0, lag, Order ) = ( silk_float )energy;
- /* Calculate X[:,j]'*X[:,j + lag] */
- for( j = 1; j < ( Order - lag ); j++ ) {
- energy += ptr1[ -j ] * ptr2[ -j ] - ptr1[ L - j ] * ptr2[ L - j ];
- matrix_ptr( XX, lag + j, j, Order ) = ( silk_float )energy;
- matrix_ptr( XX, j, lag + j, Order ) = ( silk_float )energy;
- }
- ptr2--; /* Next column of X */
- }
-}
diff --git a/thirdparty/opus/silk/float/encode_frame_FLP.c b/thirdparty/opus/silk/float/encode_frame_FLP.c
deleted file mode 100644
index 2092a4d9e2..0000000000
--- a/thirdparty/opus/silk/float/encode_frame_FLP.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-#include "tuning_parameters.h"
-
-/* Low Bitrate Redundancy (LBRR) encoding. Reuse all parameters but encode with lower bitrate */
-static OPUS_INLINE void silk_LBRR_encode_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- const silk_float xfw[], /* I Input signal */
- opus_int condCoding /* I The type of conditional coding used so far for this frame */
-);
-
-void silk_encode_do_VAD_FLP(
- silk_encoder_state_FLP *psEnc /* I/O Encoder state FLP */
-)
-{
- /****************************/
- /* Voice Activity Detection */
- /****************************/
- silk_VAD_GetSA_Q8( &psEnc->sCmn, psEnc->sCmn.inputBuf + 1, psEnc->sCmn.arch );
-
- /**************************************************/
- /* Convert speech activity into VAD and DTX flags */
- /**************************************************/
- if( psEnc->sCmn.speech_activity_Q8 < SILK_FIX_CONST( SPEECH_ACTIVITY_DTX_THRES, 8 ) ) {
- psEnc->sCmn.indices.signalType = TYPE_NO_VOICE_ACTIVITY;
- psEnc->sCmn.noSpeechCounter++;
- if( psEnc->sCmn.noSpeechCounter < NB_SPEECH_FRAMES_BEFORE_DTX ) {
- psEnc->sCmn.inDTX = 0;
- } else if( psEnc->sCmn.noSpeechCounter > MAX_CONSECUTIVE_DTX + NB_SPEECH_FRAMES_BEFORE_DTX ) {
- psEnc->sCmn.noSpeechCounter = NB_SPEECH_FRAMES_BEFORE_DTX;
- psEnc->sCmn.inDTX = 0;
- }
- psEnc->sCmn.VAD_flags[ psEnc->sCmn.nFramesEncoded ] = 0;
- } else {
- psEnc->sCmn.noSpeechCounter = 0;
- psEnc->sCmn.inDTX = 0;
- psEnc->sCmn.indices.signalType = TYPE_UNVOICED;
- psEnc->sCmn.VAD_flags[ psEnc->sCmn.nFramesEncoded ] = 1;
- }
-}
-
-/****************/
-/* Encode frame */
-/****************/
-opus_int silk_encode_frame_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- opus_int32 *pnBytesOut, /* O Number of payload bytes; */
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- opus_int condCoding, /* I The type of conditional coding to use */
- opus_int maxBits, /* I If > 0: maximum number of output bits */
- opus_int useCBR /* I Flag to force constant-bitrate operation */
-)
-{
- silk_encoder_control_FLP sEncCtrl;
- opus_int i, iter, maxIter, found_upper, found_lower, ret = 0;
- silk_float *x_frame, *res_pitch_frame;
- silk_float xfw[ MAX_FRAME_LENGTH ];
- silk_float res_pitch[ 2 * MAX_FRAME_LENGTH + LA_PITCH_MAX ];
- ec_enc sRangeEnc_copy, sRangeEnc_copy2;
- silk_nsq_state sNSQ_copy, sNSQ_copy2;
- opus_int32 seed_copy, nBits, nBits_lower, nBits_upper, gainMult_lower, gainMult_upper;
- opus_int32 gainsID, gainsID_lower, gainsID_upper;
- opus_int16 gainMult_Q8;
- opus_int16 ec_prevLagIndex_copy;
- opus_int ec_prevSignalType_copy;
- opus_int8 LastGainIndex_copy2;
- opus_int32 pGains_Q16[ MAX_NB_SUBFR ];
- opus_uint8 ec_buf_copy[ 1275 ];
-
- /* This is totally unnecessary but many compilers (including gcc) are too dumb to realise it */
- LastGainIndex_copy2 = nBits_lower = nBits_upper = gainMult_lower = gainMult_upper = 0;
-
- psEnc->sCmn.indices.Seed = psEnc->sCmn.frameCounter++ & 3;
-
- /**************************************************************/
- /* Set up Input Pointers, and insert frame in input buffer */
- /**************************************************************/
- /* pointers aligned with start of frame to encode */
- x_frame = psEnc->x_buf + psEnc->sCmn.ltp_mem_length; /* start of frame to encode */
- res_pitch_frame = res_pitch + psEnc->sCmn.ltp_mem_length; /* start of pitch LPC residual frame */
-
- /***************************************/
- /* Ensure smooth bandwidth transitions */
- /***************************************/
- silk_LP_variable_cutoff( &psEnc->sCmn.sLP, psEnc->sCmn.inputBuf + 1, psEnc->sCmn.frame_length );
-
- /*******************************************/
- /* Copy new frame to front of input buffer */
- /*******************************************/
- silk_short2float_array( x_frame + LA_SHAPE_MS * psEnc->sCmn.fs_kHz, psEnc->sCmn.inputBuf + 1, psEnc->sCmn.frame_length );
-
- /* Add tiny signal to avoid high CPU load from denormalized floating point numbers */
- for( i = 0; i < 8; i++ ) {
- x_frame[ LA_SHAPE_MS * psEnc->sCmn.fs_kHz + i * ( psEnc->sCmn.frame_length >> 3 ) ] += ( 1 - ( i & 2 ) ) * 1e-6f;
- }
-
- if( !psEnc->sCmn.prefillFlag ) {
- /*****************************************/
- /* Find pitch lags, initial LPC analysis */
- /*****************************************/
- silk_find_pitch_lags_FLP( psEnc, &sEncCtrl, res_pitch, x_frame, psEnc->sCmn.arch );
-
- /************************/
- /* Noise shape analysis */
- /************************/
- silk_noise_shape_analysis_FLP( psEnc, &sEncCtrl, res_pitch_frame, x_frame );
-
- /***************************************************/
- /* Find linear prediction coefficients (LPC + LTP) */
- /***************************************************/
- silk_find_pred_coefs_FLP( psEnc, &sEncCtrl, res_pitch, x_frame, condCoding );
-
- /****************************************/
- /* Process gains */
- /****************************************/
- silk_process_gains_FLP( psEnc, &sEncCtrl, condCoding );
-
- /*****************************************/
- /* Prefiltering for noise shaper */
- /*****************************************/
- silk_prefilter_FLP( psEnc, &sEncCtrl, xfw, x_frame );
-
- /****************************************/
- /* Low Bitrate Redundant Encoding */
- /****************************************/
- silk_LBRR_encode_FLP( psEnc, &sEncCtrl, xfw, condCoding );
-
- /* Loop over quantizer and entroy coding to control bitrate */
- maxIter = 6;
- gainMult_Q8 = SILK_FIX_CONST( 1, 8 );
- found_lower = 0;
- found_upper = 0;
- gainsID = silk_gains_ID( psEnc->sCmn.indices.GainsIndices, psEnc->sCmn.nb_subfr );
- gainsID_lower = -1;
- gainsID_upper = -1;
- /* Copy part of the input state */
- silk_memcpy( &sRangeEnc_copy, psRangeEnc, sizeof( ec_enc ) );
- silk_memcpy( &sNSQ_copy, &psEnc->sCmn.sNSQ, sizeof( silk_nsq_state ) );
- seed_copy = psEnc->sCmn.indices.Seed;
- ec_prevLagIndex_copy = psEnc->sCmn.ec_prevLagIndex;
- ec_prevSignalType_copy = psEnc->sCmn.ec_prevSignalType;
- for( iter = 0; ; iter++ ) {
- if( gainsID == gainsID_lower ) {
- nBits = nBits_lower;
- } else if( gainsID == gainsID_upper ) {
- nBits = nBits_upper;
- } else {
- /* Restore part of the input state */
- if( iter > 0 ) {
- silk_memcpy( psRangeEnc, &sRangeEnc_copy, sizeof( ec_enc ) );
- silk_memcpy( &psEnc->sCmn.sNSQ, &sNSQ_copy, sizeof( silk_nsq_state ) );
- psEnc->sCmn.indices.Seed = seed_copy;
- psEnc->sCmn.ec_prevLagIndex = ec_prevLagIndex_copy;
- psEnc->sCmn.ec_prevSignalType = ec_prevSignalType_copy;
- }
-
- /*****************************************/
- /* Noise shaping quantization */
- /*****************************************/
- silk_NSQ_wrapper_FLP( psEnc, &sEncCtrl, &psEnc->sCmn.indices, &psEnc->sCmn.sNSQ, psEnc->sCmn.pulses, xfw );
-
- /****************************************/
- /* Encode Parameters */
- /****************************************/
- silk_encode_indices( &psEnc->sCmn, psRangeEnc, psEnc->sCmn.nFramesEncoded, 0, condCoding );
-
- /****************************************/
- /* Encode Excitation Signal */
- /****************************************/
- silk_encode_pulses( psRangeEnc, psEnc->sCmn.indices.signalType, psEnc->sCmn.indices.quantOffsetType,
- psEnc->sCmn.pulses, psEnc->sCmn.frame_length );
-
- nBits = ec_tell( psRangeEnc );
-
- if( useCBR == 0 && iter == 0 && nBits <= maxBits ) {
- break;
- }
- }
-
- if( iter == maxIter ) {
- if( found_lower && ( gainsID == gainsID_lower || nBits > maxBits ) ) {
- /* Restore output state from earlier iteration that did meet the bitrate budget */
- silk_memcpy( psRangeEnc, &sRangeEnc_copy2, sizeof( ec_enc ) );
- silk_assert( sRangeEnc_copy2.offs <= 1275 );
- silk_memcpy( psRangeEnc->buf, ec_buf_copy, sRangeEnc_copy2.offs );
- silk_memcpy( &psEnc->sCmn.sNSQ, &sNSQ_copy2, sizeof( silk_nsq_state ) );
- psEnc->sShape.LastGainIndex = LastGainIndex_copy2;
- }
- break;
- }
-
- if( nBits > maxBits ) {
- if( found_lower == 0 && iter >= 2 ) {
- /* Adjust the quantizer's rate/distortion tradeoff and discard previous "upper" results */
- sEncCtrl.Lambda *= 1.5f;
- found_upper = 0;
- gainsID_upper = -1;
- } else {
- found_upper = 1;
- nBits_upper = nBits;
- gainMult_upper = gainMult_Q8;
- gainsID_upper = gainsID;
- }
- } else if( nBits < maxBits - 5 ) {
- found_lower = 1;
- nBits_lower = nBits;
- gainMult_lower = gainMult_Q8;
- if( gainsID != gainsID_lower ) {
- gainsID_lower = gainsID;
- /* Copy part of the output state */
- silk_memcpy( &sRangeEnc_copy2, psRangeEnc, sizeof( ec_enc ) );
- silk_assert( psRangeEnc->offs <= 1275 );
- silk_memcpy( ec_buf_copy, psRangeEnc->buf, psRangeEnc->offs );
- silk_memcpy( &sNSQ_copy2, &psEnc->sCmn.sNSQ, sizeof( silk_nsq_state ) );
- LastGainIndex_copy2 = psEnc->sShape.LastGainIndex;
- }
- } else {
- /* Within 5 bits of budget: close enough */
- break;
- }
-
- if( ( found_lower & found_upper ) == 0 ) {
- /* Adjust gain according to high-rate rate/distortion curve */
- opus_int32 gain_factor_Q16;
- gain_factor_Q16 = silk_log2lin( silk_LSHIFT( nBits - maxBits, 7 ) / psEnc->sCmn.frame_length + SILK_FIX_CONST( 16, 7 ) );
- gain_factor_Q16 = silk_min_32( gain_factor_Q16, SILK_FIX_CONST( 2, 16 ) );
- if( nBits > maxBits ) {
- gain_factor_Q16 = silk_max_32( gain_factor_Q16, SILK_FIX_CONST( 1.3, 16 ) );
- }
- gainMult_Q8 = silk_SMULWB( gain_factor_Q16, gainMult_Q8 );
- } else {
- /* Adjust gain by interpolating */
- gainMult_Q8 = gainMult_lower + ( ( gainMult_upper - gainMult_lower ) * ( maxBits - nBits_lower ) ) / ( nBits_upper - nBits_lower );
- /* New gain multplier must be between 25% and 75% of old range (note that gainMult_upper < gainMult_lower) */
- if( gainMult_Q8 > silk_ADD_RSHIFT32( gainMult_lower, gainMult_upper - gainMult_lower, 2 ) ) {
- gainMult_Q8 = silk_ADD_RSHIFT32( gainMult_lower, gainMult_upper - gainMult_lower, 2 );
- } else
- if( gainMult_Q8 < silk_SUB_RSHIFT32( gainMult_upper, gainMult_upper - gainMult_lower, 2 ) ) {
- gainMult_Q8 = silk_SUB_RSHIFT32( gainMult_upper, gainMult_upper - gainMult_lower, 2 );
- }
- }
-
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- pGains_Q16[ i ] = silk_LSHIFT_SAT32( silk_SMULWB( sEncCtrl.GainsUnq_Q16[ i ], gainMult_Q8 ), 8 );
- }
-
- /* Quantize gains */
- psEnc->sShape.LastGainIndex = sEncCtrl.lastGainIndexPrev;
- silk_gains_quant( psEnc->sCmn.indices.GainsIndices, pGains_Q16,
- &psEnc->sShape.LastGainIndex, condCoding == CODE_CONDITIONALLY, psEnc->sCmn.nb_subfr );
-
- /* Unique identifier of gains vector */
- gainsID = silk_gains_ID( psEnc->sCmn.indices.GainsIndices, psEnc->sCmn.nb_subfr );
-
- /* Overwrite unquantized gains with quantized gains and convert back to Q0 from Q16 */
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- sEncCtrl.Gains[ i ] = pGains_Q16[ i ] / 65536.0f;
- }
- }
- }
-
- /* Update input buffer */
- silk_memmove( psEnc->x_buf, &psEnc->x_buf[ psEnc->sCmn.frame_length ],
- ( psEnc->sCmn.ltp_mem_length + LA_SHAPE_MS * psEnc->sCmn.fs_kHz ) * sizeof( silk_float ) );
-
- /* Exit without entropy coding */
- if( psEnc->sCmn.prefillFlag ) {
- /* No payload */
- *pnBytesOut = 0;
- return ret;
- }
-
- /* Parameters needed for next frame */
- psEnc->sCmn.prevLag = sEncCtrl.pitchL[ psEnc->sCmn.nb_subfr - 1 ];
- psEnc->sCmn.prevSignalType = psEnc->sCmn.indices.signalType;
-
- /****************************************/
- /* Finalize payload */
- /****************************************/
- psEnc->sCmn.first_frame_after_reset = 0;
- /* Payload size */
- *pnBytesOut = silk_RSHIFT( ec_tell( psRangeEnc ) + 7, 3 );
-
- return ret;
-}
-
-/* Low-Bitrate Redundancy (LBRR) encoding. Reuse all parameters but encode excitation at lower bitrate */
-static OPUS_INLINE void silk_LBRR_encode_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- const silk_float xfw[], /* I Input signal */
- opus_int condCoding /* I The type of conditional coding used so far for this frame */
-)
-{
- opus_int k;
- opus_int32 Gains_Q16[ MAX_NB_SUBFR ];
- silk_float TempGains[ MAX_NB_SUBFR ];
- SideInfoIndices *psIndices_LBRR = &psEnc->sCmn.indices_LBRR[ psEnc->sCmn.nFramesEncoded ];
- silk_nsq_state sNSQ_LBRR;
-
- /*******************************************/
- /* Control use of inband LBRR */
- /*******************************************/
- if( psEnc->sCmn.LBRR_enabled && psEnc->sCmn.speech_activity_Q8 > SILK_FIX_CONST( LBRR_SPEECH_ACTIVITY_THRES, 8 ) ) {
- psEnc->sCmn.LBRR_flags[ psEnc->sCmn.nFramesEncoded ] = 1;
-
- /* Copy noise shaping quantizer state and quantization indices from regular encoding */
- silk_memcpy( &sNSQ_LBRR, &psEnc->sCmn.sNSQ, sizeof( silk_nsq_state ) );
- silk_memcpy( psIndices_LBRR, &psEnc->sCmn.indices, sizeof( SideInfoIndices ) );
-
- /* Save original gains */
- silk_memcpy( TempGains, psEncCtrl->Gains, psEnc->sCmn.nb_subfr * sizeof( silk_float ) );
-
- if( psEnc->sCmn.nFramesEncoded == 0 || psEnc->sCmn.LBRR_flags[ psEnc->sCmn.nFramesEncoded - 1 ] == 0 ) {
- /* First frame in packet or previous frame not LBRR coded */
- psEnc->sCmn.LBRRprevLastGainIndex = psEnc->sShape.LastGainIndex;
-
- /* Increase Gains to get target LBRR rate */
- psIndices_LBRR->GainsIndices[ 0 ] += psEnc->sCmn.LBRR_GainIncreases;
- psIndices_LBRR->GainsIndices[ 0 ] = silk_min_int( psIndices_LBRR->GainsIndices[ 0 ], N_LEVELS_QGAIN - 1 );
- }
-
- /* Decode to get gains in sync with decoder */
- silk_gains_dequant( Gains_Q16, psIndices_LBRR->GainsIndices,
- &psEnc->sCmn.LBRRprevLastGainIndex, condCoding == CODE_CONDITIONALLY, psEnc->sCmn.nb_subfr );
-
- /* Overwrite unquantized gains with quantized gains and convert back to Q0 from Q16 */
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->Gains[ k ] = Gains_Q16[ k ] * ( 1.0f / 65536.0f );
- }
-
- /*****************************************/
- /* Noise shaping quantization */
- /*****************************************/
- silk_NSQ_wrapper_FLP( psEnc, psEncCtrl, psIndices_LBRR, &sNSQ_LBRR,
- psEnc->sCmn.pulses_LBRR[ psEnc->sCmn.nFramesEncoded ], xfw );
-
- /* Restore original gains */
- silk_memcpy( psEncCtrl->Gains, TempGains, psEnc->sCmn.nb_subfr * sizeof( silk_float ) );
- }
-}
diff --git a/thirdparty/opus/silk/float/energy_FLP.c b/thirdparty/opus/silk/float/energy_FLP.c
deleted file mode 100644
index 24b8179f9e..0000000000
--- a/thirdparty/opus/silk/float/energy_FLP.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-
-/* sum of squares of a silk_float array, with result as double */
-double silk_energy_FLP(
- const silk_float *data,
- opus_int dataSize
-)
-{
- opus_int i, dataSize4;
- double result;
-
- /* 4x unrolled loop */
- result = 0.0;
- dataSize4 = dataSize & 0xFFFC;
- for( i = 0; i < dataSize4; i += 4 ) {
- result += data[ i + 0 ] * (double)data[ i + 0 ] +
- data[ i + 1 ] * (double)data[ i + 1 ] +
- data[ i + 2 ] * (double)data[ i + 2 ] +
- data[ i + 3 ] * (double)data[ i + 3 ];
- }
-
- /* add any remaining products */
- for( ; i < dataSize; i++ ) {
- result += data[ i ] * (double)data[ i ];
- }
-
- silk_assert( result >= 0.0 );
- return result;
-}
diff --git a/thirdparty/opus/silk/float/find_LPC_FLP.c b/thirdparty/opus/silk/float/find_LPC_FLP.c
deleted file mode 100644
index fcfe1c3681..0000000000
--- a/thirdparty/opus/silk/float/find_LPC_FLP.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "define.h"
-#include "main_FLP.h"
-#include "tuning_parameters.h"
-
-/* LPC analysis */
-void silk_find_LPC_FLP(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- opus_int16 NLSF_Q15[], /* O NLSFs */
- const silk_float x[], /* I Input signal */
- const silk_float minInvGain /* I Inverse of max prediction gain */
-)
-{
- opus_int k, subfr_length;
- silk_float a[ MAX_LPC_ORDER ];
-
- /* Used only for NLSF interpolation */
- silk_float res_nrg, res_nrg_2nd, res_nrg_interp;
- opus_int16 NLSF0_Q15[ MAX_LPC_ORDER ];
- silk_float a_tmp[ MAX_LPC_ORDER ];
- silk_float LPC_res[ MAX_FRAME_LENGTH + MAX_NB_SUBFR * MAX_LPC_ORDER ];
-
- subfr_length = psEncC->subfr_length + psEncC->predictLPCOrder;
-
- /* Default: No interpolation */
- psEncC->indices.NLSFInterpCoef_Q2 = 4;
-
- /* Burg AR analysis for the full frame */
- res_nrg = silk_burg_modified_FLP( a, x, minInvGain, subfr_length, psEncC->nb_subfr, psEncC->predictLPCOrder );
-
- if( psEncC->useInterpolatedNLSFs && !psEncC->first_frame_after_reset && psEncC->nb_subfr == MAX_NB_SUBFR ) {
- /* Optimal solution for last 10 ms; subtract residual energy here, as that's easier than */
- /* adding it to the residual energy of the first 10 ms in each iteration of the search below */
- res_nrg -= silk_burg_modified_FLP( a_tmp, x + ( MAX_NB_SUBFR / 2 ) * subfr_length, minInvGain, subfr_length, MAX_NB_SUBFR / 2, psEncC->predictLPCOrder );
-
- /* Convert to NLSFs */
- silk_A2NLSF_FLP( NLSF_Q15, a_tmp, psEncC->predictLPCOrder );
-
- /* Search over interpolation indices to find the one with lowest residual energy */
- res_nrg_2nd = silk_float_MAX;
- for( k = 3; k >= 0; k-- ) {
- /* Interpolate NLSFs for first half */
- silk_interpolate( NLSF0_Q15, psEncC->prev_NLSFq_Q15, NLSF_Q15, k, psEncC->predictLPCOrder );
-
- /* Convert to LPC for residual energy evaluation */
- silk_NLSF2A_FLP( a_tmp, NLSF0_Q15, psEncC->predictLPCOrder );
-
- /* Calculate residual energy with LSF interpolation */
- silk_LPC_analysis_filter_FLP( LPC_res, a_tmp, x, 2 * subfr_length, psEncC->predictLPCOrder );
- res_nrg_interp = (silk_float)(
- silk_energy_FLP( LPC_res + psEncC->predictLPCOrder, subfr_length - psEncC->predictLPCOrder ) +
- silk_energy_FLP( LPC_res + psEncC->predictLPCOrder + subfr_length, subfr_length - psEncC->predictLPCOrder ) );
-
- /* Determine whether current interpolated NLSFs are best so far */
- if( res_nrg_interp < res_nrg ) {
- /* Interpolation has lower residual energy */
- res_nrg = res_nrg_interp;
- psEncC->indices.NLSFInterpCoef_Q2 = (opus_int8)k;
- } else if( res_nrg_interp > res_nrg_2nd ) {
- /* No reason to continue iterating - residual energies will continue to climb */
- break;
- }
- res_nrg_2nd = res_nrg_interp;
- }
- }
-
- if( psEncC->indices.NLSFInterpCoef_Q2 == 4 ) {
- /* NLSF interpolation is currently inactive, calculate NLSFs from full frame AR coefficients */
- silk_A2NLSF_FLP( NLSF_Q15, a, psEncC->predictLPCOrder );
- }
-
- silk_assert( psEncC->indices.NLSFInterpCoef_Q2 == 4 ||
- ( psEncC->useInterpolatedNLSFs && !psEncC->first_frame_after_reset && psEncC->nb_subfr == MAX_NB_SUBFR ) );
-}
diff --git a/thirdparty/opus/silk/float/find_LTP_FLP.c b/thirdparty/opus/silk/float/find_LTP_FLP.c
deleted file mode 100644
index 7229996014..0000000000
--- a/thirdparty/opus/silk/float/find_LTP_FLP.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-#include "tuning_parameters.h"
-
-void silk_find_LTP_FLP(
- silk_float b[ MAX_NB_SUBFR * LTP_ORDER ], /* O LTP coefs */
- silk_float WLTP[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* O Weight for LTP quantization */
- silk_float *LTPredCodGain, /* O LTP coding gain */
- const silk_float r_lpc[], /* I LPC residual */
- const opus_int lag[ MAX_NB_SUBFR ], /* I LTP lags */
- const silk_float Wght[ MAX_NB_SUBFR ], /* I Weights */
- const opus_int subfr_length, /* I Subframe length */
- const opus_int nb_subfr, /* I number of subframes */
- const opus_int mem_offset /* I Number of samples in LTP memory */
-)
-{
- opus_int i, k;
- silk_float *b_ptr, temp, *WLTP_ptr;
- silk_float LPC_res_nrg, LPC_LTP_res_nrg;
- silk_float d[ MAX_NB_SUBFR ], m, g, delta_b[ LTP_ORDER ];
- silk_float w[ MAX_NB_SUBFR ], nrg[ MAX_NB_SUBFR ], regu;
- silk_float Rr[ LTP_ORDER ], rr[ MAX_NB_SUBFR ];
- const silk_float *r_ptr, *lag_ptr;
-
- b_ptr = b;
- WLTP_ptr = WLTP;
- r_ptr = &r_lpc[ mem_offset ];
- for( k = 0; k < nb_subfr; k++ ) {
- lag_ptr = r_ptr - ( lag[ k ] + LTP_ORDER / 2 );
-
- silk_corrMatrix_FLP( lag_ptr, subfr_length, LTP_ORDER, WLTP_ptr );
- silk_corrVector_FLP( lag_ptr, r_ptr, subfr_length, LTP_ORDER, Rr );
-
- rr[ k ] = ( silk_float )silk_energy_FLP( r_ptr, subfr_length );
- regu = 1.0f + rr[ k ] +
- matrix_ptr( WLTP_ptr, 0, 0, LTP_ORDER ) +
- matrix_ptr( WLTP_ptr, LTP_ORDER-1, LTP_ORDER-1, LTP_ORDER );
- regu *= LTP_DAMPING / 3;
- silk_regularize_correlations_FLP( WLTP_ptr, &rr[ k ], regu, LTP_ORDER );
- silk_solve_LDL_FLP( WLTP_ptr, LTP_ORDER, Rr, b_ptr );
-
- /* Calculate residual energy */
- nrg[ k ] = silk_residual_energy_covar_FLP( b_ptr, WLTP_ptr, Rr, rr[ k ], LTP_ORDER );
-
- temp = Wght[ k ] / ( nrg[ k ] * Wght[ k ] + 0.01f * subfr_length );
- silk_scale_vector_FLP( WLTP_ptr, temp, LTP_ORDER * LTP_ORDER );
- w[ k ] = matrix_ptr( WLTP_ptr, LTP_ORDER / 2, LTP_ORDER / 2, LTP_ORDER );
-
- r_ptr += subfr_length;
- b_ptr += LTP_ORDER;
- WLTP_ptr += LTP_ORDER * LTP_ORDER;
- }
-
- /* Compute LTP coding gain */
- if( LTPredCodGain != NULL ) {
- LPC_LTP_res_nrg = 1e-6f;
- LPC_res_nrg = 0.0f;
- for( k = 0; k < nb_subfr; k++ ) {
- LPC_res_nrg += rr[ k ] * Wght[ k ];
- LPC_LTP_res_nrg += nrg[ k ] * Wght[ k ];
- }
-
- silk_assert( LPC_LTP_res_nrg > 0 );
- *LTPredCodGain = 3.0f * silk_log2( LPC_res_nrg / LPC_LTP_res_nrg );
- }
-
- /* Smoothing */
- /* d = sum( B, 1 ); */
- b_ptr = b;
- for( k = 0; k < nb_subfr; k++ ) {
- d[ k ] = 0;
- for( i = 0; i < LTP_ORDER; i++ ) {
- d[ k ] += b_ptr[ i ];
- }
- b_ptr += LTP_ORDER;
- }
- /* m = ( w * d' ) / ( sum( w ) + 1e-3 ); */
- temp = 1e-3f;
- for( k = 0; k < nb_subfr; k++ ) {
- temp += w[ k ];
- }
- m = 0;
- for( k = 0; k < nb_subfr; k++ ) {
- m += d[ k ] * w[ k ];
- }
- m = m / temp;
-
- b_ptr = b;
- for( k = 0; k < nb_subfr; k++ ) {
- g = LTP_SMOOTHING / ( LTP_SMOOTHING + w[ k ] ) * ( m - d[ k ] );
- temp = 0;
- for( i = 0; i < LTP_ORDER; i++ ) {
- delta_b[ i ] = silk_max_float( b_ptr[ i ], 0.1f );
- temp += delta_b[ i ];
- }
- temp = g / temp;
- for( i = 0; i < LTP_ORDER; i++ ) {
- b_ptr[ i ] = b_ptr[ i ] + delta_b[ i ] * temp;
- }
- b_ptr += LTP_ORDER;
- }
-}
diff --git a/thirdparty/opus/silk/float/find_pitch_lags_FLP.c b/thirdparty/opus/silk/float/find_pitch_lags_FLP.c
deleted file mode 100644
index f3b22d25ce..0000000000
--- a/thirdparty/opus/silk/float/find_pitch_lags_FLP.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include "main_FLP.h"
-#include "tuning_parameters.h"
-
-void silk_find_pitch_lags_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- silk_float res[], /* O Residual */
- const silk_float x[], /* I Speech signal */
- int arch /* I Run-time architecture */
-)
-{
- opus_int buf_len;
- silk_float thrhld, res_nrg;
- const silk_float *x_buf_ptr, *x_buf;
- silk_float auto_corr[ MAX_FIND_PITCH_LPC_ORDER + 1 ];
- silk_float A[ MAX_FIND_PITCH_LPC_ORDER ];
- silk_float refl_coef[ MAX_FIND_PITCH_LPC_ORDER ];
- silk_float Wsig[ FIND_PITCH_LPC_WIN_MAX ];
- silk_float *Wsig_ptr;
-
- /******************************************/
- /* Set up buffer lengths etc based on Fs */
- /******************************************/
- buf_len = psEnc->sCmn.la_pitch + psEnc->sCmn.frame_length + psEnc->sCmn.ltp_mem_length;
-
- /* Safety check */
- silk_assert( buf_len >= psEnc->sCmn.pitch_LPC_win_length );
-
- x_buf = x - psEnc->sCmn.ltp_mem_length;
-
- /******************************************/
- /* Estimate LPC AR coeficients */
- /******************************************/
-
- /* Calculate windowed signal */
-
- /* First LA_LTP samples */
- x_buf_ptr = x_buf + buf_len - psEnc->sCmn.pitch_LPC_win_length;
- Wsig_ptr = Wsig;
- silk_apply_sine_window_FLP( Wsig_ptr, x_buf_ptr, 1, psEnc->sCmn.la_pitch );
-
- /* Middle non-windowed samples */
- Wsig_ptr += psEnc->sCmn.la_pitch;
- x_buf_ptr += psEnc->sCmn.la_pitch;
- silk_memcpy( Wsig_ptr, x_buf_ptr, ( psEnc->sCmn.pitch_LPC_win_length - ( psEnc->sCmn.la_pitch << 1 ) ) * sizeof( silk_float ) );
-
- /* Last LA_LTP samples */
- Wsig_ptr += psEnc->sCmn.pitch_LPC_win_length - ( psEnc->sCmn.la_pitch << 1 );
- x_buf_ptr += psEnc->sCmn.pitch_LPC_win_length - ( psEnc->sCmn.la_pitch << 1 );
- silk_apply_sine_window_FLP( Wsig_ptr, x_buf_ptr, 2, psEnc->sCmn.la_pitch );
-
- /* Calculate autocorrelation sequence */
- silk_autocorrelation_FLP( auto_corr, Wsig, psEnc->sCmn.pitch_LPC_win_length, psEnc->sCmn.pitchEstimationLPCOrder + 1 );
-
- /* Add white noise, as a fraction of the energy */
- auto_corr[ 0 ] += auto_corr[ 0 ] * FIND_PITCH_WHITE_NOISE_FRACTION + 1;
-
- /* Calculate the reflection coefficients using Schur */
- res_nrg = silk_schur_FLP( refl_coef, auto_corr, psEnc->sCmn.pitchEstimationLPCOrder );
-
- /* Prediction gain */
- psEncCtrl->predGain = auto_corr[ 0 ] / silk_max_float( res_nrg, 1.0f );
-
- /* Convert reflection coefficients to prediction coefficients */
- silk_k2a_FLP( A, refl_coef, psEnc->sCmn.pitchEstimationLPCOrder );
-
- /* Bandwidth expansion */
- silk_bwexpander_FLP( A, psEnc->sCmn.pitchEstimationLPCOrder, FIND_PITCH_BANDWIDTH_EXPANSION );
-
- /*****************************************/
- /* LPC analysis filtering */
- /*****************************************/
- silk_LPC_analysis_filter_FLP( res, A, x_buf, buf_len, psEnc->sCmn.pitchEstimationLPCOrder );
-
- if( psEnc->sCmn.indices.signalType != TYPE_NO_VOICE_ACTIVITY && psEnc->sCmn.first_frame_after_reset == 0 ) {
- /* Threshold for pitch estimator */
- thrhld = 0.6f;
- thrhld -= 0.004f * psEnc->sCmn.pitchEstimationLPCOrder;
- thrhld -= 0.1f * psEnc->sCmn.speech_activity_Q8 * ( 1.0f / 256.0f );
- thrhld -= 0.15f * (psEnc->sCmn.prevSignalType >> 1);
- thrhld -= 0.1f * psEnc->sCmn.input_tilt_Q15 * ( 1.0f / 32768.0f );
-
- /*****************************************/
- /* Call Pitch estimator */
- /*****************************************/
- if( silk_pitch_analysis_core_FLP( res, psEncCtrl->pitchL, &psEnc->sCmn.indices.lagIndex,
- &psEnc->sCmn.indices.contourIndex, &psEnc->LTPCorr, psEnc->sCmn.prevLag, psEnc->sCmn.pitchEstimationThreshold_Q16 / 65536.0f,
- thrhld, psEnc->sCmn.fs_kHz, psEnc->sCmn.pitchEstimationComplexity, psEnc->sCmn.nb_subfr, arch ) == 0 )
- {
- psEnc->sCmn.indices.signalType = TYPE_VOICED;
- } else {
- psEnc->sCmn.indices.signalType = TYPE_UNVOICED;
- }
- } else {
- silk_memset( psEncCtrl->pitchL, 0, sizeof( psEncCtrl->pitchL ) );
- psEnc->sCmn.indices.lagIndex = 0;
- psEnc->sCmn.indices.contourIndex = 0;
- psEnc->LTPCorr = 0;
- }
-}
diff --git a/thirdparty/opus/silk/float/find_pred_coefs_FLP.c b/thirdparty/opus/silk/float/find_pred_coefs_FLP.c
deleted file mode 100644
index 1af4fe5f1b..0000000000
--- a/thirdparty/opus/silk/float/find_pred_coefs_FLP.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-
-/* Find LPC and LTP coefficients */
-void silk_find_pred_coefs_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- const silk_float res_pitch[], /* I Residual from pitch analysis */
- const silk_float x[], /* I Speech signal */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- opus_int i;
- silk_float WLTP[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ];
- silk_float invGains[ MAX_NB_SUBFR ], Wght[ MAX_NB_SUBFR ];
- opus_int16 NLSF_Q15[ MAX_LPC_ORDER ];
- const silk_float *x_ptr;
- silk_float *x_pre_ptr, LPC_in_pre[ MAX_NB_SUBFR * MAX_LPC_ORDER + MAX_FRAME_LENGTH ];
- silk_float minInvGain;
-
- /* Weighting for weighted least squares */
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- silk_assert( psEncCtrl->Gains[ i ] > 0.0f );
- invGains[ i ] = 1.0f / psEncCtrl->Gains[ i ];
- Wght[ i ] = invGains[ i ] * invGains[ i ];
- }
-
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /**********/
- /* VOICED */
- /**********/
- silk_assert( psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder >= psEncCtrl->pitchL[ 0 ] + LTP_ORDER / 2 );
-
- /* LTP analysis */
- silk_find_LTP_FLP( psEncCtrl->LTPCoef, WLTP, &psEncCtrl->LTPredCodGain, res_pitch,
- psEncCtrl->pitchL, Wght, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.ltp_mem_length );
-
- /* Quantize LTP gain parameters */
- silk_quant_LTP_gains_FLP( psEncCtrl->LTPCoef, psEnc->sCmn.indices.LTPIndex, &psEnc->sCmn.indices.PERIndex,
- &psEnc->sCmn.sum_log_gain_Q7, WLTP, psEnc->sCmn.mu_LTP_Q9, psEnc->sCmn.LTPQuantLowComplexity, psEnc->sCmn.nb_subfr,
- psEnc->sCmn.arch );
-
- /* Control LTP scaling */
- silk_LTP_scale_ctrl_FLP( psEnc, psEncCtrl, condCoding );
-
- /* Create LTP residual */
- silk_LTP_analysis_filter_FLP( LPC_in_pre, x - psEnc->sCmn.predictLPCOrder, psEncCtrl->LTPCoef,
- psEncCtrl->pitchL, invGains, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.predictLPCOrder );
- } else {
- /************/
- /* UNVOICED */
- /************/
- /* Create signal with prepended subframes, scaled by inverse gains */
- x_ptr = x - psEnc->sCmn.predictLPCOrder;
- x_pre_ptr = LPC_in_pre;
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- silk_scale_copy_vector_FLP( x_pre_ptr, x_ptr, invGains[ i ],
- psEnc->sCmn.subfr_length + psEnc->sCmn.predictLPCOrder );
- x_pre_ptr += psEnc->sCmn.subfr_length + psEnc->sCmn.predictLPCOrder;
- x_ptr += psEnc->sCmn.subfr_length;
- }
- silk_memset( psEncCtrl->LTPCoef, 0, psEnc->sCmn.nb_subfr * LTP_ORDER * sizeof( silk_float ) );
- psEncCtrl->LTPredCodGain = 0.0f;
- psEnc->sCmn.sum_log_gain_Q7 = 0;
- }
-
- /* Limit on total predictive coding gain */
- if( psEnc->sCmn.first_frame_after_reset ) {
- minInvGain = 1.0f / MAX_PREDICTION_POWER_GAIN_AFTER_RESET;
- } else {
- minInvGain = (silk_float)pow( 2, psEncCtrl->LTPredCodGain / 3 ) / MAX_PREDICTION_POWER_GAIN;
- minInvGain /= 0.25f + 0.75f * psEncCtrl->coding_quality;
- }
-
- /* LPC_in_pre contains the LTP-filtered input for voiced, and the unfiltered input for unvoiced */
- silk_find_LPC_FLP( &psEnc->sCmn, NLSF_Q15, LPC_in_pre, minInvGain );
-
- /* Quantize LSFs */
- silk_process_NLSFs_FLP( &psEnc->sCmn, psEncCtrl->PredCoef, NLSF_Q15, psEnc->sCmn.prev_NLSFq_Q15 );
-
- /* Calculate residual energy using quantized LPC coefficients */
- silk_residual_energy_FLP( psEncCtrl->ResNrg, LPC_in_pre, psEncCtrl->PredCoef, psEncCtrl->Gains,
- psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.predictLPCOrder );
-
- /* Copy to prediction struct for use in next frame for interpolation */
- silk_memcpy( psEnc->sCmn.prev_NLSFq_Q15, NLSF_Q15, sizeof( psEnc->sCmn.prev_NLSFq_Q15 ) );
-}
-
diff --git a/thirdparty/opus/silk/float/inner_product_FLP.c b/thirdparty/opus/silk/float/inner_product_FLP.c
deleted file mode 100644
index 029c012911..0000000000
--- a/thirdparty/opus/silk/float/inner_product_FLP.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-
-/* inner product of two silk_float arrays, with result as double */
-double silk_inner_product_FLP(
- const silk_float *data1,
- const silk_float *data2,
- opus_int dataSize
-)
-{
- opus_int i, dataSize4;
- double result;
-
- /* 4x unrolled loop */
- result = 0.0;
- dataSize4 = dataSize & 0xFFFC;
- for( i = 0; i < dataSize4; i += 4 ) {
- result += data1[ i + 0 ] * (double)data2[ i + 0 ] +
- data1[ i + 1 ] * (double)data2[ i + 1 ] +
- data1[ i + 2 ] * (double)data2[ i + 2 ] +
- data1[ i + 3 ] * (double)data2[ i + 3 ];
- }
-
- /* add any remaining products */
- for( ; i < dataSize; i++ ) {
- result += data1[ i ] * (double)data2[ i ];
- }
-
- return result;
-}
diff --git a/thirdparty/opus/silk/float/k2a_FLP.c b/thirdparty/opus/silk/float/k2a_FLP.c
deleted file mode 100644
index 12af4e7669..0000000000
--- a/thirdparty/opus/silk/float/k2a_FLP.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-
-/* step up function, converts reflection coefficients to prediction coefficients */
-void silk_k2a_FLP(
- silk_float *A, /* O prediction coefficients [order] */
- const silk_float *rc, /* I reflection coefficients [order] */
- opus_int32 order /* I prediction order */
-)
-{
- opus_int k, n;
- silk_float Atmp[ SILK_MAX_ORDER_LPC ];
-
- for( k = 0; k < order; k++ ) {
- for( n = 0; n < k; n++ ) {
- Atmp[ n ] = A[ n ];
- }
- for( n = 0; n < k; n++ ) {
- A[ n ] += Atmp[ k - n - 1 ] * rc[ k ];
- }
- A[ k ] = -rc[ k ];
- }
-}
diff --git a/thirdparty/opus/silk/float/levinsondurbin_FLP.c b/thirdparty/opus/silk/float/levinsondurbin_FLP.c
deleted file mode 100644
index f0ba606981..0000000000
--- a/thirdparty/opus/silk/float/levinsondurbin_FLP.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-
-/* Solve the normal equations using the Levinson-Durbin recursion */
-silk_float silk_levinsondurbin_FLP( /* O prediction error energy */
- silk_float A[], /* O prediction coefficients [order] */
- const silk_float corr[], /* I input auto-correlations [order + 1] */
- const opus_int order /* I prediction order */
-)
-{
- opus_int i, mHalf, m;
- silk_float min_nrg, nrg, t, km, Atmp1, Atmp2;
-
- min_nrg = 1e-12f * corr[ 0 ] + 1e-9f;
- nrg = corr[ 0 ];
- nrg = silk_max_float(min_nrg, nrg);
- A[ 0 ] = corr[ 1 ] / nrg;
- nrg -= A[ 0 ] * corr[ 1 ];
- nrg = silk_max_float(min_nrg, nrg);
-
- for( m = 1; m < order; m++ )
- {
- t = corr[ m + 1 ];
- for( i = 0; i < m; i++ ) {
- t -= A[ i ] * corr[ m - i ];
- }
-
- /* reflection coefficient */
- km = t / nrg;
-
- /* residual energy */
- nrg -= km * t;
- nrg = silk_max_float(min_nrg, nrg);
-
- mHalf = m >> 1;
- for( i = 0; i < mHalf; i++ ) {
- Atmp1 = A[ i ];
- Atmp2 = A[ m - i - 1 ];
- A[ m - i - 1 ] -= km * Atmp1;
- A[ i ] -= km * Atmp2;
- }
- if( m & 1 ) {
- A[ mHalf ] -= km * A[ mHalf ];
- }
- A[ m ] = km;
- }
-
- /* return the residual energy */
- return nrg;
-}
-
diff --git a/thirdparty/opus/silk/float/main_FLP.h b/thirdparty/opus/silk/float/main_FLP.h
deleted file mode 100644
index e5a75972e5..0000000000
--- a/thirdparty/opus/silk/float/main_FLP.h
+++ /dev/null
@@ -1,313 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_MAIN_FLP_H
-#define SILK_MAIN_FLP_H
-
-#include "SigProc_FLP.h"
-#include "SigProc_FIX.h"
-#include "structs_FLP.h"
-#include "main.h"
-#include "define.h"
-#include "debug.h"
-#include "entenc.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define silk_encoder_state_Fxx silk_encoder_state_FLP
-#define silk_encode_do_VAD_Fxx silk_encode_do_VAD_FLP
-#define silk_encode_frame_Fxx silk_encode_frame_FLP
-
-/*********************/
-/* Encoder Functions */
-/*********************/
-
-/* High-pass filter with cutoff frequency adaptation based on pitch lag statistics */
-void silk_HP_variable_cutoff(
- silk_encoder_state_Fxx state_Fxx[] /* I/O Encoder states */
-);
-
-/* Encoder main function */
-void silk_encode_do_VAD_FLP(
- silk_encoder_state_FLP *psEnc /* I/O Encoder state FLP */
-);
-
-/* Encoder main function */
-opus_int silk_encode_frame_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- opus_int32 *pnBytesOut, /* O Number of payload bytes; */
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- opus_int condCoding, /* I The type of conditional coding to use */
- opus_int maxBits, /* I If > 0: maximum number of output bits */
- opus_int useCBR /* I Flag to force constant-bitrate operation */
-);
-
-/* Initializes the Silk encoder state */
-opus_int silk_init_encoder(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- int arch /* I Run-tim architecture */
-);
-
-/* Control the Silk encoder */
-opus_int silk_control_encoder(
- silk_encoder_state_FLP *psEnc, /* I/O Pointer to Silk encoder state FLP */
- silk_EncControlStruct *encControl, /* I Control structure */
- const opus_int32 TargetRate_bps, /* I Target max bitrate (bps) */
- const opus_int allow_bw_switch, /* I Flag to allow switching audio bandwidth */
- const opus_int channelNb, /* I Channel number */
- const opus_int force_fs_kHz
-);
-
-/****************/
-/* Prefiltering */
-/****************/
-void silk_prefilter_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- const silk_encoder_control_FLP *psEncCtrl, /* I Encoder control FLP */
- silk_float xw[], /* O Weighted signal */
- const silk_float x[] /* I Speech signal */
-);
-
-/**************************/
-/* Noise shaping analysis */
-/**************************/
-/* Compute noise shaping coefficients and initial gain values */
-void silk_noise_shape_analysis_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- const silk_float *pitch_res, /* I LPC residual from pitch analysis */
- const silk_float *x /* I Input signal [frame_length + la_shape] */
-);
-
-/* Autocorrelations for a warped frequency axis */
-void silk_warped_autocorrelation_FLP(
- silk_float *corr, /* O Result [order + 1] */
- const silk_float *input, /* I Input data to correlate */
- const silk_float warping, /* I Warping coefficient */
- const opus_int length, /* I Length of input */
- const opus_int order /* I Correlation order (even) */
-);
-
-/* Calculation of LTP state scaling */
-void silk_LTP_scale_ctrl_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-/**********************************************/
-/* Prediction Analysis */
-/**********************************************/
-/* Find pitch lags */
-void silk_find_pitch_lags_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- silk_float res[], /* O Residual */
- const silk_float x[], /* I Speech signal */
- int arch /* I Run-time architecture */
-);
-
-/* Find LPC and LTP coefficients */
-void silk_find_pred_coefs_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- const silk_float res_pitch[], /* I Residual from pitch analysis */
- const silk_float x[], /* I Speech signal */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-/* LPC analysis */
-void silk_find_LPC_FLP(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- opus_int16 NLSF_Q15[], /* O NLSFs */
- const silk_float x[], /* I Input signal */
- const silk_float minInvGain /* I Prediction gain from LTP (dB) */
-);
-
-/* LTP analysis */
-void silk_find_LTP_FLP(
- silk_float b[ MAX_NB_SUBFR * LTP_ORDER ], /* O LTP coefs */
- silk_float WLTP[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* O Weight for LTP quantization */
- silk_float *LTPredCodGain, /* O LTP coding gain */
- const silk_float r_lpc[], /* I LPC residual */
- const opus_int lag[ MAX_NB_SUBFR ], /* I LTP lags */
- const silk_float Wght[ MAX_NB_SUBFR ], /* I Weights */
- const opus_int subfr_length, /* I Subframe length */
- const opus_int nb_subfr, /* I number of subframes */
- const opus_int mem_offset /* I Number of samples in LTP memory */
-);
-
-void silk_LTP_analysis_filter_FLP(
- silk_float *LTP_res, /* O LTP res MAX_NB_SUBFR*(pre_lgth+subfr_lngth) */
- const silk_float *x, /* I Input signal, with preceding samples */
- const silk_float B[ LTP_ORDER * MAX_NB_SUBFR ], /* I LTP coefficients for each subframe */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const silk_float invGains[ MAX_NB_SUBFR ], /* I Inverse quantization gains */
- const opus_int subfr_length, /* I Length of each subframe */
- const opus_int nb_subfr, /* I number of subframes */
- const opus_int pre_length /* I Preceding samples for each subframe */
-);
-
-/* Calculates residual energies of input subframes where all subframes have LPC_order */
-/* of preceding samples */
-void silk_residual_energy_FLP(
- silk_float nrgs[ MAX_NB_SUBFR ], /* O Residual energy per subframe */
- const silk_float x[], /* I Input signal */
- silk_float a[ 2 ][ MAX_LPC_ORDER ], /* I AR coefs for each frame half */
- const silk_float gains[], /* I Quantization gains */
- const opus_int subfr_length, /* I Subframe length */
- const opus_int nb_subfr, /* I number of subframes */
- const opus_int LPC_order /* I LPC order */
-);
-
-/* 16th order LPC analysis filter */
-void silk_LPC_analysis_filter_FLP(
- silk_float r_LPC[], /* O LPC residual signal */
- const silk_float PredCoef[], /* I LPC coefficients */
- const silk_float s[], /* I Input signal */
- const opus_int length, /* I Length of input signal */
- const opus_int Order /* I LPC order */
-);
-
-/* LTP tap quantizer */
-void silk_quant_LTP_gains_FLP(
- silk_float B[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (Un-)quantized LTP gains */
- opus_int8 cbk_index[ MAX_NB_SUBFR ], /* O Codebook index */
- opus_int8 *periodicity_index, /* O Periodicity index */
- opus_int32 *sum_log_gain_Q7, /* I/O Cumulative max prediction gain */
- const silk_float W[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* I Error weights */
- const opus_int mu_Q10, /* I Mu value (R/D tradeoff) */
- const opus_int lowComplexity, /* I Flag for low complexity */
- const opus_int nb_subfr, /* I number of subframes */
- int arch /* I Run-time architecture */
-);
-
-/* Residual energy: nrg = wxx - 2 * wXx * c + c' * wXX * c */
-silk_float silk_residual_energy_covar_FLP( /* O Weighted residual energy */
- const silk_float *c, /* I Filter coefficients */
- silk_float *wXX, /* I/O Weighted correlation matrix, reg. out */
- const silk_float *wXx, /* I Weighted correlation vector */
- const silk_float wxx, /* I Weighted correlation value */
- const opus_int D /* I Dimension */
-);
-
-/* Processing of gains */
-void silk_process_gains_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-/******************/
-/* Linear Algebra */
-/******************/
-/* Calculates correlation matrix X'*X */
-void silk_corrMatrix_FLP(
- const silk_float *x, /* I x vector [ L+order-1 ] used to create X */
- const opus_int L, /* I Length of vectors */
- const opus_int Order, /* I Max lag for correlation */
- silk_float *XX /* O X'*X correlation matrix [order x order] */
-);
-
-/* Calculates correlation vector X'*t */
-void silk_corrVector_FLP(
- const silk_float *x, /* I x vector [L+order-1] used to create X */
- const silk_float *t, /* I Target vector [L] */
- const opus_int L, /* I Length of vecors */
- const opus_int Order, /* I Max lag for correlation */
- silk_float *Xt /* O X'*t correlation vector [order] */
-);
-
-/* Add noise to matrix diagonal */
-void silk_regularize_correlations_FLP(
- silk_float *XX, /* I/O Correlation matrices */
- silk_float *xx, /* I/O Correlation values */
- const silk_float noise, /* I Noise energy to add */
- const opus_int D /* I Dimension of XX */
-);
-
-/* Function to solve linear equation Ax = b, where A is an MxM symmetric matrix */
-void silk_solve_LDL_FLP(
- silk_float *A, /* I/O Symmetric square matrix, out: reg. */
- const opus_int M, /* I Size of matrix */
- const silk_float *b, /* I Pointer to b vector */
- silk_float *x /* O Pointer to x solution vector */
-);
-
-/* Apply sine window to signal vector. */
-/* Window types: */
-/* 1 -> sine window from 0 to pi/2 */
-/* 2 -> sine window from pi/2 to pi */
-void silk_apply_sine_window_FLP(
- silk_float px_win[], /* O Pointer to windowed signal */
- const silk_float px[], /* I Pointer to input signal */
- const opus_int win_type, /* I Selects a window type */
- const opus_int length /* I Window length, multiple of 4 */
-);
-
-/* Wrapper functions. Call flp / fix code */
-
-/* Convert AR filter coefficients to NLSF parameters */
-void silk_A2NLSF_FLP(
- opus_int16 *NLSF_Q15, /* O NLSF vector [ LPC_order ] */
- const silk_float *pAR, /* I LPC coefficients [ LPC_order ] */
- const opus_int LPC_order /* I LPC order */
-);
-
-/* Convert NLSF parameters to AR prediction filter coefficients */
-void silk_NLSF2A_FLP(
- silk_float *pAR, /* O LPC coefficients [ LPC_order ] */
- const opus_int16 *NLSF_Q15, /* I NLSF vector [ LPC_order ] */
- const opus_int LPC_order /* I LPC order */
-);
-
-/* Limit, stabilize, and quantize NLSFs */
-void silk_process_NLSFs_FLP(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- silk_float PredCoef[ 2 ][ MAX_LPC_ORDER ], /* O Prediction coefficients */
- opus_int16 NLSF_Q15[ MAX_LPC_ORDER ], /* I/O Normalized LSFs (quant out) (0 - (2^15-1)) */
- const opus_int16 prev_NLSF_Q15[ MAX_LPC_ORDER ] /* I Previous Normalized LSFs (0 - (2^15-1)) */
-);
-
-/* Floating-point Silk NSQ wrapper */
-void silk_NSQ_wrapper_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- SideInfoIndices *psIndices, /* I/O Quantization indices */
- silk_nsq_state *psNSQ, /* I/O Noise Shaping Quantzation state */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const silk_float x[] /* I Prefiltered input signal */
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/float/noise_shape_analysis_FLP.c b/thirdparty/opus/silk/float/noise_shape_analysis_FLP.c
deleted file mode 100644
index 65f6ea5870..0000000000
--- a/thirdparty/opus/silk/float/noise_shape_analysis_FLP.c
+++ /dev/null
@@ -1,365 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-#include "tuning_parameters.h"
-
-/* Compute gain to make warped filter coefficients have a zero mean log frequency response on a */
-/* non-warped frequency scale. (So that it can be implemented with a minimum-phase monic filter.) */
-/* Note: A monic filter is one with the first coefficient equal to 1.0. In Silk we omit the first */
-/* coefficient in an array of coefficients, for monic filters. */
-static OPUS_INLINE silk_float warped_gain(
- const silk_float *coefs,
- silk_float lambda,
- opus_int order
-) {
- opus_int i;
- silk_float gain;
-
- lambda = -lambda;
- gain = coefs[ order - 1 ];
- for( i = order - 2; i >= 0; i-- ) {
- gain = lambda * gain + coefs[ i ];
- }
- return (silk_float)( 1.0f / ( 1.0f - lambda * gain ) );
-}
-
-/* Convert warped filter coefficients to monic pseudo-warped coefficients and limit maximum */
-/* amplitude of monic warped coefficients by using bandwidth expansion on the true coefficients */
-static OPUS_INLINE void warped_true2monic_coefs(
- silk_float *coefs_syn,
- silk_float *coefs_ana,
- silk_float lambda,
- silk_float limit,
- opus_int order
-) {
- opus_int i, iter, ind = 0;
- silk_float tmp, maxabs, chirp, gain_syn, gain_ana;
-
- /* Convert to monic coefficients */
- for( i = order - 1; i > 0; i-- ) {
- coefs_syn[ i - 1 ] -= lambda * coefs_syn[ i ];
- coefs_ana[ i - 1 ] -= lambda * coefs_ana[ i ];
- }
- gain_syn = ( 1.0f - lambda * lambda ) / ( 1.0f + lambda * coefs_syn[ 0 ] );
- gain_ana = ( 1.0f - lambda * lambda ) / ( 1.0f + lambda * coefs_ana[ 0 ] );
- for( i = 0; i < order; i++ ) {
- coefs_syn[ i ] *= gain_syn;
- coefs_ana[ i ] *= gain_ana;
- }
-
- /* Limit */
- for( iter = 0; iter < 10; iter++ ) {
- /* Find maximum absolute value */
- maxabs = -1.0f;
- for( i = 0; i < order; i++ ) {
- tmp = silk_max( silk_abs_float( coefs_syn[ i ] ), silk_abs_float( coefs_ana[ i ] ) );
- if( tmp > maxabs ) {
- maxabs = tmp;
- ind = i;
- }
- }
- if( maxabs <= limit ) {
- /* Coefficients are within range - done */
- return;
- }
-
- /* Convert back to true warped coefficients */
- for( i = 1; i < order; i++ ) {
- coefs_syn[ i - 1 ] += lambda * coefs_syn[ i ];
- coefs_ana[ i - 1 ] += lambda * coefs_ana[ i ];
- }
- gain_syn = 1.0f / gain_syn;
- gain_ana = 1.0f / gain_ana;
- for( i = 0; i < order; i++ ) {
- coefs_syn[ i ] *= gain_syn;
- coefs_ana[ i ] *= gain_ana;
- }
-
- /* Apply bandwidth expansion */
- chirp = 0.99f - ( 0.8f + 0.1f * iter ) * ( maxabs - limit ) / ( maxabs * ( ind + 1 ) );
- silk_bwexpander_FLP( coefs_syn, order, chirp );
- silk_bwexpander_FLP( coefs_ana, order, chirp );
-
- /* Convert to monic warped coefficients */
- for( i = order - 1; i > 0; i-- ) {
- coefs_syn[ i - 1 ] -= lambda * coefs_syn[ i ];
- coefs_ana[ i - 1 ] -= lambda * coefs_ana[ i ];
- }
- gain_syn = ( 1.0f - lambda * lambda ) / ( 1.0f + lambda * coefs_syn[ 0 ] );
- gain_ana = ( 1.0f - lambda * lambda ) / ( 1.0f + lambda * coefs_ana[ 0 ] );
- for( i = 0; i < order; i++ ) {
- coefs_syn[ i ] *= gain_syn;
- coefs_ana[ i ] *= gain_ana;
- }
- }
- silk_assert( 0 );
-}
-
-/* Compute noise shaping coefficients and initial gain values */
-void silk_noise_shape_analysis_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- const silk_float *pitch_res, /* I LPC residual from pitch analysis */
- const silk_float *x /* I Input signal [frame_length + la_shape] */
-)
-{
- silk_shape_state_FLP *psShapeSt = &psEnc->sShape;
- opus_int k, nSamples;
- silk_float SNR_adj_dB, HarmBoost, HarmShapeGain, Tilt;
- silk_float nrg, pre_nrg, log_energy, log_energy_prev, energy_variation;
- silk_float delta, BWExp1, BWExp2, gain_mult, gain_add, strength, b, warping;
- silk_float x_windowed[ SHAPE_LPC_WIN_MAX ];
- silk_float auto_corr[ MAX_SHAPE_LPC_ORDER + 1 ];
- const silk_float *x_ptr, *pitch_res_ptr;
-
- /* Point to start of first LPC analysis block */
- x_ptr = x - psEnc->sCmn.la_shape;
-
- /****************/
- /* GAIN CONTROL */
- /****************/
- SNR_adj_dB = psEnc->sCmn.SNR_dB_Q7 * ( 1 / 128.0f );
-
- /* Input quality is the average of the quality in the lowest two VAD bands */
- psEncCtrl->input_quality = 0.5f * ( psEnc->sCmn.input_quality_bands_Q15[ 0 ] + psEnc->sCmn.input_quality_bands_Q15[ 1 ] ) * ( 1.0f / 32768.0f );
-
- /* Coding quality level, between 0.0 and 1.0 */
- psEncCtrl->coding_quality = silk_sigmoid( 0.25f * ( SNR_adj_dB - 20.0f ) );
-
- if( psEnc->sCmn.useCBR == 0 ) {
- /* Reduce coding SNR during low speech activity */
- b = 1.0f - psEnc->sCmn.speech_activity_Q8 * ( 1.0f / 256.0f );
- SNR_adj_dB -= BG_SNR_DECR_dB * psEncCtrl->coding_quality * ( 0.5f + 0.5f * psEncCtrl->input_quality ) * b * b;
- }
-
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Reduce gains for periodic signals */
- SNR_adj_dB += HARM_SNR_INCR_dB * psEnc->LTPCorr;
- } else {
- /* For unvoiced signals and low-quality input, adjust the quality slower than SNR_dB setting */
- SNR_adj_dB += ( -0.4f * psEnc->sCmn.SNR_dB_Q7 * ( 1 / 128.0f ) + 6.0f ) * ( 1.0f - psEncCtrl->input_quality );
- }
-
- /*************************/
- /* SPARSENESS PROCESSING */
- /*************************/
- /* Set quantizer offset */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Initially set to 0; may be overruled in process_gains(..) */
- psEnc->sCmn.indices.quantOffsetType = 0;
- psEncCtrl->sparseness = 0.0f;
- } else {
- /* Sparseness measure, based on relative fluctuations of energy per 2 milliseconds */
- nSamples = 2 * psEnc->sCmn.fs_kHz;
- energy_variation = 0.0f;
- log_energy_prev = 0.0f;
- pitch_res_ptr = pitch_res;
- for( k = 0; k < silk_SMULBB( SUB_FRAME_LENGTH_MS, psEnc->sCmn.nb_subfr ) / 2; k++ ) {
- nrg = ( silk_float )nSamples + ( silk_float )silk_energy_FLP( pitch_res_ptr, nSamples );
- log_energy = silk_log2( nrg );
- if( k > 0 ) {
- energy_variation += silk_abs_float( log_energy - log_energy_prev );
- }
- log_energy_prev = log_energy;
- pitch_res_ptr += nSamples;
- }
- psEncCtrl->sparseness = silk_sigmoid( 0.4f * ( energy_variation - 5.0f ) );
-
- /* Set quantization offset depending on sparseness measure */
- if( psEncCtrl->sparseness > SPARSENESS_THRESHOLD_QNT_OFFSET ) {
- psEnc->sCmn.indices.quantOffsetType = 0;
- } else {
- psEnc->sCmn.indices.quantOffsetType = 1;
- }
-
- /* Increase coding SNR for sparse signals */
- SNR_adj_dB += SPARSE_SNR_INCR_dB * ( psEncCtrl->sparseness - 0.5f );
- }
-
- /*******************************/
- /* Control bandwidth expansion */
- /*******************************/
- /* More BWE for signals with high prediction gain */
- strength = FIND_PITCH_WHITE_NOISE_FRACTION * psEncCtrl->predGain; /* between 0.0 and 1.0 */
- BWExp1 = BWExp2 = BANDWIDTH_EXPANSION / ( 1.0f + strength * strength );
- delta = LOW_RATE_BANDWIDTH_EXPANSION_DELTA * ( 1.0f - 0.75f * psEncCtrl->coding_quality );
- BWExp1 -= delta;
- BWExp2 += delta;
- /* BWExp1 will be applied after BWExp2, so make it relative */
- BWExp1 /= BWExp2;
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Slightly more warping in analysis will move quantization noise up in frequency, where it's better masked */
- warping = (silk_float)psEnc->sCmn.warping_Q16 / 65536.0f + 0.01f * psEncCtrl->coding_quality;
- } else {
- warping = 0.0f;
- }
-
- /********************************************/
- /* Compute noise shaping AR coefs and gains */
- /********************************************/
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- /* Apply window: sine slope followed by flat part followed by cosine slope */
- opus_int shift, slope_part, flat_part;
- flat_part = psEnc->sCmn.fs_kHz * 3;
- slope_part = ( psEnc->sCmn.shapeWinLength - flat_part ) / 2;
-
- silk_apply_sine_window_FLP( x_windowed, x_ptr, 1, slope_part );
- shift = slope_part;
- silk_memcpy( x_windowed + shift, x_ptr + shift, flat_part * sizeof(silk_float) );
- shift += flat_part;
- silk_apply_sine_window_FLP( x_windowed + shift, x_ptr + shift, 2, slope_part );
-
- /* Update pointer: next LPC analysis block */
- x_ptr += psEnc->sCmn.subfr_length;
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Calculate warped auto correlation */
- silk_warped_autocorrelation_FLP( auto_corr, x_windowed, warping,
- psEnc->sCmn.shapeWinLength, psEnc->sCmn.shapingLPCOrder );
- } else {
- /* Calculate regular auto correlation */
- silk_autocorrelation_FLP( auto_corr, x_windowed, psEnc->sCmn.shapeWinLength, psEnc->sCmn.shapingLPCOrder + 1 );
- }
-
- /* Add white noise, as a fraction of energy */
- auto_corr[ 0 ] += auto_corr[ 0 ] * SHAPE_WHITE_NOISE_FRACTION;
-
- /* Convert correlations to prediction coefficients, and compute residual energy */
- nrg = silk_levinsondurbin_FLP( &psEncCtrl->AR2[ k * MAX_SHAPE_LPC_ORDER ], auto_corr, psEnc->sCmn.shapingLPCOrder );
- psEncCtrl->Gains[ k ] = ( silk_float )sqrt( nrg );
-
- if( psEnc->sCmn.warping_Q16 > 0 ) {
- /* Adjust gain for warping */
- psEncCtrl->Gains[ k ] *= warped_gain( &psEncCtrl->AR2[ k * MAX_SHAPE_LPC_ORDER ], warping, psEnc->sCmn.shapingLPCOrder );
- }
-
- /* Bandwidth expansion for synthesis filter shaping */
- silk_bwexpander_FLP( &psEncCtrl->AR2[ k * MAX_SHAPE_LPC_ORDER ], psEnc->sCmn.shapingLPCOrder, BWExp2 );
-
- /* Compute noise shaping filter coefficients */
- silk_memcpy(
- &psEncCtrl->AR1[ k * MAX_SHAPE_LPC_ORDER ],
- &psEncCtrl->AR2[ k * MAX_SHAPE_LPC_ORDER ],
- psEnc->sCmn.shapingLPCOrder * sizeof( silk_float ) );
-
- /* Bandwidth expansion for analysis filter shaping */
- silk_bwexpander_FLP( &psEncCtrl->AR1[ k * MAX_SHAPE_LPC_ORDER ], psEnc->sCmn.shapingLPCOrder, BWExp1 );
-
- /* Ratio of prediction gains, in energy domain */
- pre_nrg = silk_LPC_inverse_pred_gain_FLP( &psEncCtrl->AR2[ k * MAX_SHAPE_LPC_ORDER ], psEnc->sCmn.shapingLPCOrder );
- nrg = silk_LPC_inverse_pred_gain_FLP( &psEncCtrl->AR1[ k * MAX_SHAPE_LPC_ORDER ], psEnc->sCmn.shapingLPCOrder );
- psEncCtrl->GainsPre[ k ] = 1.0f - 0.7f * ( 1.0f - pre_nrg / nrg );
-
- /* Convert to monic warped prediction coefficients and limit absolute values */
- warped_true2monic_coefs( &psEncCtrl->AR2[ k * MAX_SHAPE_LPC_ORDER ], &psEncCtrl->AR1[ k * MAX_SHAPE_LPC_ORDER ],
- warping, 3.999f, psEnc->sCmn.shapingLPCOrder );
- }
-
- /*****************/
- /* Gain tweaking */
- /*****************/
- /* Increase gains during low speech activity */
- gain_mult = (silk_float)pow( 2.0f, -0.16f * SNR_adj_dB );
- gain_add = (silk_float)pow( 2.0f, 0.16f * MIN_QGAIN_DB );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->Gains[ k ] *= gain_mult;
- psEncCtrl->Gains[ k ] += gain_add;
- }
-
- gain_mult = 1.0f + INPUT_TILT + psEncCtrl->coding_quality * HIGH_RATE_INPUT_TILT;
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->GainsPre[ k ] *= gain_mult;
- }
-
- /************************************************/
- /* Control low-frequency shaping and noise tilt */
- /************************************************/
- /* Less low frequency shaping for noisy inputs */
- strength = LOW_FREQ_SHAPING * ( 1.0f + LOW_QUALITY_LOW_FREQ_SHAPING_DECR * ( psEnc->sCmn.input_quality_bands_Q15[ 0 ] * ( 1.0f / 32768.0f ) - 1.0f ) );
- strength *= psEnc->sCmn.speech_activity_Q8 * ( 1.0f / 256.0f );
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Reduce low frequencies quantization noise for periodic signals, depending on pitch lag */
- /*f = 400; freqz([1, -0.98 + 2e-4 * f], [1, -0.97 + 7e-4 * f], 2^12, Fs); axis([0, 1000, -10, 1])*/
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- b = 0.2f / psEnc->sCmn.fs_kHz + 3.0f / psEncCtrl->pitchL[ k ];
- psEncCtrl->LF_MA_shp[ k ] = -1.0f + b;
- psEncCtrl->LF_AR_shp[ k ] = 1.0f - b - b * strength;
- }
- Tilt = - HP_NOISE_COEF -
- (1 - HP_NOISE_COEF) * HARM_HP_NOISE_COEF * psEnc->sCmn.speech_activity_Q8 * ( 1.0f / 256.0f );
- } else {
- b = 1.3f / psEnc->sCmn.fs_kHz;
- psEncCtrl->LF_MA_shp[ 0 ] = -1.0f + b;
- psEncCtrl->LF_AR_shp[ 0 ] = 1.0f - b - b * strength * 0.6f;
- for( k = 1; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->LF_MA_shp[ k ] = psEncCtrl->LF_MA_shp[ 0 ];
- psEncCtrl->LF_AR_shp[ k ] = psEncCtrl->LF_AR_shp[ 0 ];
- }
- Tilt = -HP_NOISE_COEF;
- }
-
- /****************************/
- /* HARMONIC SHAPING CONTROL */
- /****************************/
- /* Control boosting of harmonic frequencies */
- HarmBoost = LOW_RATE_HARMONIC_BOOST * ( 1.0f - psEncCtrl->coding_quality ) * psEnc->LTPCorr;
-
- /* More harmonic boost for noisy input signals */
- HarmBoost += LOW_INPUT_QUALITY_HARMONIC_BOOST * ( 1.0f - psEncCtrl->input_quality );
-
- if( USE_HARM_SHAPING && psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- /* Harmonic noise shaping */
- HarmShapeGain = HARMONIC_SHAPING;
-
- /* More harmonic noise shaping for high bitrates or noisy input */
- HarmShapeGain += HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING *
- ( 1.0f - ( 1.0f - psEncCtrl->coding_quality ) * psEncCtrl->input_quality );
-
- /* Less harmonic noise shaping for less periodic signals */
- HarmShapeGain *= ( silk_float )sqrt( psEnc->LTPCorr );
- } else {
- HarmShapeGain = 0.0f;
- }
-
- /*************************/
- /* Smooth over subframes */
- /*************************/
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psShapeSt->HarmBoost_smth += SUBFR_SMTH_COEF * ( HarmBoost - psShapeSt->HarmBoost_smth );
- psEncCtrl->HarmBoost[ k ] = psShapeSt->HarmBoost_smth;
- psShapeSt->HarmShapeGain_smth += SUBFR_SMTH_COEF * ( HarmShapeGain - psShapeSt->HarmShapeGain_smth );
- psEncCtrl->HarmShapeGain[ k ] = psShapeSt->HarmShapeGain_smth;
- psShapeSt->Tilt_smth += SUBFR_SMTH_COEF * ( Tilt - psShapeSt->Tilt_smth );
- psEncCtrl->Tilt[ k ] = psShapeSt->Tilt_smth;
- }
-}
diff --git a/thirdparty/opus/silk/float/pitch_analysis_core_FLP.c b/thirdparty/opus/silk/float/pitch_analysis_core_FLP.c
deleted file mode 100644
index d0e637a29d..0000000000
--- a/thirdparty/opus/silk/float/pitch_analysis_core_FLP.c
+++ /dev/null
@@ -1,630 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/*****************************************************************************
-* Pitch analyser function
-******************************************************************************/
-#include "SigProc_FLP.h"
-#include "SigProc_FIX.h"
-#include "pitch_est_defines.h"
-#include "pitch.h"
-
-#define SCRATCH_SIZE 22
-
-/************************************************************/
-/* Internally used functions */
-/************************************************************/
-static void silk_P_Ana_calc_corr_st3(
- silk_float cross_corr_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ], /* O 3 DIM correlation array */
- const silk_float frame[], /* I vector to correlate */
- opus_int start_lag, /* I start lag */
- opus_int sf_length, /* I sub frame length */
- opus_int nb_subfr, /* I number of subframes */
- opus_int complexity, /* I Complexity setting */
- int arch /* I Run-time architecture */
-);
-
-static void silk_P_Ana_calc_energy_st3(
- silk_float energies_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ], /* O 3 DIM correlation array */
- const silk_float frame[], /* I vector to correlate */
- opus_int start_lag, /* I start lag */
- opus_int sf_length, /* I sub frame length */
- opus_int nb_subfr, /* I number of subframes */
- opus_int complexity /* I Complexity setting */
-);
-
-/************************************************************/
-/* CORE PITCH ANALYSIS FUNCTION */
-/************************************************************/
-opus_int silk_pitch_analysis_core_FLP( /* O Voicing estimate: 0 voiced, 1 unvoiced */
- const silk_float *frame, /* I Signal of length PE_FRAME_LENGTH_MS*Fs_kHz */
- opus_int *pitch_out, /* O Pitch lag values [nb_subfr] */
- opus_int16 *lagIndex, /* O Lag Index */
- opus_int8 *contourIndex, /* O Pitch contour Index */
- silk_float *LTPCorr, /* I/O Normalized correlation; input: value from previous frame */
- opus_int prevLag, /* I Last lag of previous frame; set to zero is unvoiced */
- const silk_float search_thres1, /* I First stage threshold for lag candidates 0 - 1 */
- const silk_float search_thres2, /* I Final threshold for lag candidates 0 - 1 */
- const opus_int Fs_kHz, /* I sample frequency (kHz) */
- const opus_int complexity, /* I Complexity setting, 0-2, where 2 is highest */
- const opus_int nb_subfr, /* I Number of 5 ms subframes */
- int arch /* I Run-time architecture */
-)
-{
- opus_int i, k, d, j;
- silk_float frame_8kHz[ PE_MAX_FRAME_LENGTH_MS * 8 ];
- silk_float frame_4kHz[ PE_MAX_FRAME_LENGTH_MS * 4 ];
- opus_int16 frame_8_FIX[ PE_MAX_FRAME_LENGTH_MS * 8 ];
- opus_int16 frame_4_FIX[ PE_MAX_FRAME_LENGTH_MS * 4 ];
- opus_int32 filt_state[ 6 ];
- silk_float threshold, contour_bias;
- silk_float C[ PE_MAX_NB_SUBFR][ (PE_MAX_LAG >> 1) + 5 ];
- opus_val32 xcorr[ PE_MAX_LAG_MS * 4 - PE_MIN_LAG_MS * 4 + 1 ];
- silk_float CC[ PE_NB_CBKS_STAGE2_EXT ];
- const silk_float *target_ptr, *basis_ptr;
- double cross_corr, normalizer, energy, energy_tmp;
- opus_int d_srch[ PE_D_SRCH_LENGTH ];
- opus_int16 d_comp[ (PE_MAX_LAG >> 1) + 5 ];
- opus_int length_d_srch, length_d_comp;
- silk_float Cmax, CCmax, CCmax_b, CCmax_new_b, CCmax_new;
- opus_int CBimax, CBimax_new, lag, start_lag, end_lag, lag_new;
- opus_int cbk_size;
- silk_float lag_log2, prevLag_log2, delta_lag_log2_sqr;
- silk_float energies_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ];
- silk_float cross_corr_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ];
- opus_int lag_counter;
- opus_int frame_length, frame_length_8kHz, frame_length_4kHz;
- opus_int sf_length, sf_length_8kHz, sf_length_4kHz;
- opus_int min_lag, min_lag_8kHz, min_lag_4kHz;
- opus_int max_lag, max_lag_8kHz, max_lag_4kHz;
- opus_int nb_cbk_search;
- const opus_int8 *Lag_CB_ptr;
-
- /* Check for valid sampling frequency */
- silk_assert( Fs_kHz == 8 || Fs_kHz == 12 || Fs_kHz == 16 );
-
- /* Check for valid complexity setting */
- silk_assert( complexity >= SILK_PE_MIN_COMPLEX );
- silk_assert( complexity <= SILK_PE_MAX_COMPLEX );
-
- silk_assert( search_thres1 >= 0.0f && search_thres1 <= 1.0f );
- silk_assert( search_thres2 >= 0.0f && search_thres2 <= 1.0f );
-
- /* Set up frame lengths max / min lag for the sampling frequency */
- frame_length = ( PE_LTP_MEM_LENGTH_MS + nb_subfr * PE_SUBFR_LENGTH_MS ) * Fs_kHz;
- frame_length_4kHz = ( PE_LTP_MEM_LENGTH_MS + nb_subfr * PE_SUBFR_LENGTH_MS ) * 4;
- frame_length_8kHz = ( PE_LTP_MEM_LENGTH_MS + nb_subfr * PE_SUBFR_LENGTH_MS ) * 8;
- sf_length = PE_SUBFR_LENGTH_MS * Fs_kHz;
- sf_length_4kHz = PE_SUBFR_LENGTH_MS * 4;
- sf_length_8kHz = PE_SUBFR_LENGTH_MS * 8;
- min_lag = PE_MIN_LAG_MS * Fs_kHz;
- min_lag_4kHz = PE_MIN_LAG_MS * 4;
- min_lag_8kHz = PE_MIN_LAG_MS * 8;
- max_lag = PE_MAX_LAG_MS * Fs_kHz - 1;
- max_lag_4kHz = PE_MAX_LAG_MS * 4;
- max_lag_8kHz = PE_MAX_LAG_MS * 8 - 1;
-
- /* Resample from input sampled at Fs_kHz to 8 kHz */
- if( Fs_kHz == 16 ) {
- /* Resample to 16 -> 8 khz */
- opus_int16 frame_16_FIX[ 16 * PE_MAX_FRAME_LENGTH_MS ];
- silk_float2short_array( frame_16_FIX, frame, frame_length );
- silk_memset( filt_state, 0, 2 * sizeof( opus_int32 ) );
- silk_resampler_down2( filt_state, frame_8_FIX, frame_16_FIX, frame_length );
- silk_short2float_array( frame_8kHz, frame_8_FIX, frame_length_8kHz );
- } else if( Fs_kHz == 12 ) {
- /* Resample to 12 -> 8 khz */
- opus_int16 frame_12_FIX[ 12 * PE_MAX_FRAME_LENGTH_MS ];
- silk_float2short_array( frame_12_FIX, frame, frame_length );
- silk_memset( filt_state, 0, 6 * sizeof( opus_int32 ) );
- silk_resampler_down2_3( filt_state, frame_8_FIX, frame_12_FIX, frame_length );
- silk_short2float_array( frame_8kHz, frame_8_FIX, frame_length_8kHz );
- } else {
- silk_assert( Fs_kHz == 8 );
- silk_float2short_array( frame_8_FIX, frame, frame_length_8kHz );
- }
-
- /* Decimate again to 4 kHz */
- silk_memset( filt_state, 0, 2 * sizeof( opus_int32 ) );
- silk_resampler_down2( filt_state, frame_4_FIX, frame_8_FIX, frame_length_8kHz );
- silk_short2float_array( frame_4kHz, frame_4_FIX, frame_length_4kHz );
-
- /* Low-pass filter */
- for( i = frame_length_4kHz - 1; i > 0; i-- ) {
- frame_4kHz[ i ] += frame_4kHz[ i - 1 ];
- }
-
- /******************************************************************************
- * FIRST STAGE, operating in 4 khz
- ******************************************************************************/
- silk_memset(C, 0, sizeof(silk_float) * nb_subfr * ((PE_MAX_LAG >> 1) + 5));
- target_ptr = &frame_4kHz[ silk_LSHIFT( sf_length_4kHz, 2 ) ];
- for( k = 0; k < nb_subfr >> 1; k++ ) {
- /* Check that we are within range of the array */
- silk_assert( target_ptr >= frame_4kHz );
- silk_assert( target_ptr + sf_length_8kHz <= frame_4kHz + frame_length_4kHz );
-
- basis_ptr = target_ptr - min_lag_4kHz;
-
- /* Check that we are within range of the array */
- silk_assert( basis_ptr >= frame_4kHz );
- silk_assert( basis_ptr + sf_length_8kHz <= frame_4kHz + frame_length_4kHz );
-
- celt_pitch_xcorr( target_ptr, target_ptr-max_lag_4kHz, xcorr, sf_length_8kHz, max_lag_4kHz - min_lag_4kHz + 1, arch );
-
- /* Calculate first vector products before loop */
- cross_corr = xcorr[ max_lag_4kHz - min_lag_4kHz ];
- normalizer = silk_energy_FLP( target_ptr, sf_length_8kHz ) +
- silk_energy_FLP( basis_ptr, sf_length_8kHz ) +
- sf_length_8kHz * 4000.0f;
-
- C[ 0 ][ min_lag_4kHz ] += (silk_float)( 2 * cross_corr / normalizer );
-
- /* From now on normalizer is computed recursively */
- for( d = min_lag_4kHz + 1; d <= max_lag_4kHz; d++ ) {
- basis_ptr--;
-
- /* Check that we are within range of the array */
- silk_assert( basis_ptr >= frame_4kHz );
- silk_assert( basis_ptr + sf_length_8kHz <= frame_4kHz + frame_length_4kHz );
-
- cross_corr = xcorr[ max_lag_4kHz - d ];
-
- /* Add contribution of new sample and remove contribution from oldest sample */
- normalizer +=
- basis_ptr[ 0 ] * (double)basis_ptr[ 0 ] -
- basis_ptr[ sf_length_8kHz ] * (double)basis_ptr[ sf_length_8kHz ];
- C[ 0 ][ d ] += (silk_float)( 2 * cross_corr / normalizer );
- }
- /* Update target pointer */
- target_ptr += sf_length_8kHz;
- }
-
- /* Apply short-lag bias */
- for( i = max_lag_4kHz; i >= min_lag_4kHz; i-- ) {
- C[ 0 ][ i ] -= C[ 0 ][ i ] * i / 4096.0f;
- }
-
- /* Sort */
- length_d_srch = 4 + 2 * complexity;
- silk_assert( 3 * length_d_srch <= PE_D_SRCH_LENGTH );
- silk_insertion_sort_decreasing_FLP( &C[ 0 ][ min_lag_4kHz ], d_srch, max_lag_4kHz - min_lag_4kHz + 1, length_d_srch );
-
- /* Escape if correlation is very low already here */
- Cmax = C[ 0 ][ min_lag_4kHz ];
- if( Cmax < 0.2f ) {
- silk_memset( pitch_out, 0, nb_subfr * sizeof( opus_int ) );
- *LTPCorr = 0.0f;
- *lagIndex = 0;
- *contourIndex = 0;
- return 1;
- }
-
- threshold = search_thres1 * Cmax;
- for( i = 0; i < length_d_srch; i++ ) {
- /* Convert to 8 kHz indices for the sorted correlation that exceeds the threshold */
- if( C[ 0 ][ min_lag_4kHz + i ] > threshold ) {
- d_srch[ i ] = silk_LSHIFT( d_srch[ i ] + min_lag_4kHz, 1 );
- } else {
- length_d_srch = i;
- break;
- }
- }
- silk_assert( length_d_srch > 0 );
-
- for( i = min_lag_8kHz - 5; i < max_lag_8kHz + 5; i++ ) {
- d_comp[ i ] = 0;
- }
- for( i = 0; i < length_d_srch; i++ ) {
- d_comp[ d_srch[ i ] ] = 1;
- }
-
- /* Convolution */
- for( i = max_lag_8kHz + 3; i >= min_lag_8kHz; i-- ) {
- d_comp[ i ] += d_comp[ i - 1 ] + d_comp[ i - 2 ];
- }
-
- length_d_srch = 0;
- for( i = min_lag_8kHz; i < max_lag_8kHz + 1; i++ ) {
- if( d_comp[ i + 1 ] > 0 ) {
- d_srch[ length_d_srch ] = i;
- length_d_srch++;
- }
- }
-
- /* Convolution */
- for( i = max_lag_8kHz + 3; i >= min_lag_8kHz; i-- ) {
- d_comp[ i ] += d_comp[ i - 1 ] + d_comp[ i - 2 ] + d_comp[ i - 3 ];
- }
-
- length_d_comp = 0;
- for( i = min_lag_8kHz; i < max_lag_8kHz + 4; i++ ) {
- if( d_comp[ i ] > 0 ) {
- d_comp[ length_d_comp ] = (opus_int16)( i - 2 );
- length_d_comp++;
- }
- }
-
- /**********************************************************************************
- ** SECOND STAGE, operating at 8 kHz, on lag sections with high correlation
- *************************************************************************************/
- /*********************************************************************************
- * Find energy of each subframe projected onto its history, for a range of delays
- *********************************************************************************/
- silk_memset( C, 0, PE_MAX_NB_SUBFR*((PE_MAX_LAG >> 1) + 5) * sizeof(silk_float));
-
- if( Fs_kHz == 8 ) {
- target_ptr = &frame[ PE_LTP_MEM_LENGTH_MS * 8 ];
- } else {
- target_ptr = &frame_8kHz[ PE_LTP_MEM_LENGTH_MS * 8 ];
- }
- for( k = 0; k < nb_subfr; k++ ) {
- energy_tmp = silk_energy_FLP( target_ptr, sf_length_8kHz ) + 1.0;
- for( j = 0; j < length_d_comp; j++ ) {
- d = d_comp[ j ];
- basis_ptr = target_ptr - d;
- cross_corr = silk_inner_product_FLP( basis_ptr, target_ptr, sf_length_8kHz );
- if( cross_corr > 0.0f ) {
- energy = silk_energy_FLP( basis_ptr, sf_length_8kHz );
- C[ k ][ d ] = (silk_float)( 2 * cross_corr / ( energy + energy_tmp ) );
- } else {
- C[ k ][ d ] = 0.0f;
- }
- }
- target_ptr += sf_length_8kHz;
- }
-
- /* search over lag range and lags codebook */
- /* scale factor for lag codebook, as a function of center lag */
-
- CCmax = 0.0f; /* This value doesn't matter */
- CCmax_b = -1000.0f;
-
- CBimax = 0; /* To avoid returning undefined lag values */
- lag = -1; /* To check if lag with strong enough correlation has been found */
-
- if( prevLag > 0 ) {
- if( Fs_kHz == 12 ) {
- prevLag = silk_LSHIFT( prevLag, 1 ) / 3;
- } else if( Fs_kHz == 16 ) {
- prevLag = silk_RSHIFT( prevLag, 1 );
- }
- prevLag_log2 = silk_log2( (silk_float)prevLag );
- } else {
- prevLag_log2 = 0;
- }
-
- /* Set up stage 2 codebook based on number of subframes */
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- cbk_size = PE_NB_CBKS_STAGE2_EXT;
- Lag_CB_ptr = &silk_CB_lags_stage2[ 0 ][ 0 ];
- if( Fs_kHz == 8 && complexity > SILK_PE_MIN_COMPLEX ) {
- /* If input is 8 khz use a larger codebook here because it is last stage */
- nb_cbk_search = PE_NB_CBKS_STAGE2_EXT;
- } else {
- nb_cbk_search = PE_NB_CBKS_STAGE2;
- }
- } else {
- cbk_size = PE_NB_CBKS_STAGE2_10MS;
- Lag_CB_ptr = &silk_CB_lags_stage2_10_ms[ 0 ][ 0 ];
- nb_cbk_search = PE_NB_CBKS_STAGE2_10MS;
- }
-
- for( k = 0; k < length_d_srch; k++ ) {
- d = d_srch[ k ];
- for( j = 0; j < nb_cbk_search; j++ ) {
- CC[j] = 0.0f;
- for( i = 0; i < nb_subfr; i++ ) {
- /* Try all codebooks */
- CC[ j ] += C[ i ][ d + matrix_ptr( Lag_CB_ptr, i, j, cbk_size )];
- }
- }
- /* Find best codebook */
- CCmax_new = -1000.0f;
- CBimax_new = 0;
- for( i = 0; i < nb_cbk_search; i++ ) {
- if( CC[ i ] > CCmax_new ) {
- CCmax_new = CC[ i ];
- CBimax_new = i;
- }
- }
-
- /* Bias towards shorter lags */
- lag_log2 = silk_log2( (silk_float)d );
- CCmax_new_b = CCmax_new - PE_SHORTLAG_BIAS * nb_subfr * lag_log2;
-
- /* Bias towards previous lag */
- if( prevLag > 0 ) {
- delta_lag_log2_sqr = lag_log2 - prevLag_log2;
- delta_lag_log2_sqr *= delta_lag_log2_sqr;
- CCmax_new_b -= PE_PREVLAG_BIAS * nb_subfr * (*LTPCorr) * delta_lag_log2_sqr / ( delta_lag_log2_sqr + 0.5f );
- }
-
- if( CCmax_new_b > CCmax_b && /* Find maximum biased correlation */
- CCmax_new > nb_subfr * search_thres2 /* Correlation needs to be high enough to be voiced */
- ) {
- CCmax_b = CCmax_new_b;
- CCmax = CCmax_new;
- lag = d;
- CBimax = CBimax_new;
- }
- }
-
- if( lag == -1 ) {
- /* No suitable candidate found */
- silk_memset( pitch_out, 0, PE_MAX_NB_SUBFR * sizeof(opus_int) );
- *LTPCorr = 0.0f;
- *lagIndex = 0;
- *contourIndex = 0;
- return 1;
- }
-
- /* Output normalized correlation */
- *LTPCorr = (silk_float)( CCmax / nb_subfr );
- silk_assert( *LTPCorr >= 0.0f );
-
- if( Fs_kHz > 8 ) {
- /* Search in original signal */
-
- /* Compensate for decimation */
- silk_assert( lag == silk_SAT16( lag ) );
- if( Fs_kHz == 12 ) {
- lag = silk_RSHIFT_ROUND( silk_SMULBB( lag, 3 ), 1 );
- } else { /* Fs_kHz == 16 */
- lag = silk_LSHIFT( lag, 1 );
- }
-
- lag = silk_LIMIT_int( lag, min_lag, max_lag );
- start_lag = silk_max_int( lag - 2, min_lag );
- end_lag = silk_min_int( lag + 2, max_lag );
- lag_new = lag; /* to avoid undefined lag */
- CBimax = 0; /* to avoid undefined lag */
-
- CCmax = -1000.0f;
-
- /* Calculate the correlations and energies needed in stage 3 */
- silk_P_Ana_calc_corr_st3( cross_corr_st3, frame, start_lag, sf_length, nb_subfr, complexity, arch );
- silk_P_Ana_calc_energy_st3( energies_st3, frame, start_lag, sf_length, nb_subfr, complexity );
-
- lag_counter = 0;
- silk_assert( lag == silk_SAT16( lag ) );
- contour_bias = PE_FLATCONTOUR_BIAS / lag;
-
- /* Set up cbk parameters according to complexity setting and frame length */
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- nb_cbk_search = (opus_int)silk_nb_cbk_searchs_stage3[ complexity ];
- cbk_size = PE_NB_CBKS_STAGE3_MAX;
- Lag_CB_ptr = &silk_CB_lags_stage3[ 0 ][ 0 ];
- } else {
- nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
- cbk_size = PE_NB_CBKS_STAGE3_10MS;
- Lag_CB_ptr = &silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
- }
-
- target_ptr = &frame[ PE_LTP_MEM_LENGTH_MS * Fs_kHz ];
- energy_tmp = silk_energy_FLP( target_ptr, nb_subfr * sf_length ) + 1.0;
- for( d = start_lag; d <= end_lag; d++ ) {
- for( j = 0; j < nb_cbk_search; j++ ) {
- cross_corr = 0.0;
- energy = energy_tmp;
- for( k = 0; k < nb_subfr; k++ ) {
- cross_corr += cross_corr_st3[ k ][ j ][ lag_counter ];
- energy += energies_st3[ k ][ j ][ lag_counter ];
- }
- if( cross_corr > 0.0 ) {
- CCmax_new = (silk_float)( 2 * cross_corr / energy );
- /* Reduce depending on flatness of contour */
- CCmax_new *= 1.0f - contour_bias * j;
- } else {
- CCmax_new = 0.0f;
- }
-
- if( CCmax_new > CCmax && ( d + (opus_int)silk_CB_lags_stage3[ 0 ][ j ] ) <= max_lag ) {
- CCmax = CCmax_new;
- lag_new = d;
- CBimax = j;
- }
- }
- lag_counter++;
- }
-
- for( k = 0; k < nb_subfr; k++ ) {
- pitch_out[ k ] = lag_new + matrix_ptr( Lag_CB_ptr, k, CBimax, cbk_size );
- pitch_out[ k ] = silk_LIMIT( pitch_out[ k ], min_lag, PE_MAX_LAG_MS * Fs_kHz );
- }
- *lagIndex = (opus_int16)( lag_new - min_lag );
- *contourIndex = (opus_int8)CBimax;
- } else { /* Fs_kHz == 8 */
- /* Save Lags */
- for( k = 0; k < nb_subfr; k++ ) {
- pitch_out[ k ] = lag + matrix_ptr( Lag_CB_ptr, k, CBimax, cbk_size );
- pitch_out[ k ] = silk_LIMIT( pitch_out[ k ], min_lag_8kHz, PE_MAX_LAG_MS * 8 );
- }
- *lagIndex = (opus_int16)( lag - min_lag_8kHz );
- *contourIndex = (opus_int8)CBimax;
- }
- silk_assert( *lagIndex >= 0 );
- /* return as voiced */
- return 0;
-}
-
-/***********************************************************************
- * Calculates the correlations used in stage 3 search. In order to cover
- * the whole lag codebook for all the searched offset lags (lag +- 2),
- * the following correlations are needed in each sub frame:
- *
- * sf1: lag range [-8,...,7] total 16 correlations
- * sf2: lag range [-4,...,4] total 9 correlations
- * sf3: lag range [-3,....4] total 8 correltions
- * sf4: lag range [-6,....8] total 15 correlations
- *
- * In total 48 correlations. The direct implementation computed in worst
- * case 4*12*5 = 240 correlations, but more likely around 120.
- ***********************************************************************/
-static void silk_P_Ana_calc_corr_st3(
- silk_float cross_corr_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ], /* O 3 DIM correlation array */
- const silk_float frame[], /* I vector to correlate */
- opus_int start_lag, /* I start lag */
- opus_int sf_length, /* I sub frame length */
- opus_int nb_subfr, /* I number of subframes */
- opus_int complexity, /* I Complexity setting */
- int arch /* I Run-time architecture */
-)
-{
- const silk_float *target_ptr;
- opus_int i, j, k, lag_counter, lag_low, lag_high;
- opus_int nb_cbk_search, delta, idx, cbk_size;
- silk_float scratch_mem[ SCRATCH_SIZE ];
- opus_val32 xcorr[ SCRATCH_SIZE ];
- const opus_int8 *Lag_range_ptr, *Lag_CB_ptr;
-
- silk_assert( complexity >= SILK_PE_MIN_COMPLEX );
- silk_assert( complexity <= SILK_PE_MAX_COMPLEX );
-
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- Lag_range_ptr = &silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ];
- Lag_CB_ptr = &silk_CB_lags_stage3[ 0 ][ 0 ];
- nb_cbk_search = silk_nb_cbk_searchs_stage3[ complexity ];
- cbk_size = PE_NB_CBKS_STAGE3_MAX;
- } else {
- silk_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1);
- Lag_range_ptr = &silk_Lag_range_stage3_10_ms[ 0 ][ 0 ];
- Lag_CB_ptr = &silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
- nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
- cbk_size = PE_NB_CBKS_STAGE3_10MS;
- }
-
- target_ptr = &frame[ silk_LSHIFT( sf_length, 2 ) ]; /* Pointer to middle of frame */
- for( k = 0; k < nb_subfr; k++ ) {
- lag_counter = 0;
-
- /* Calculate the correlations for each subframe */
- lag_low = matrix_ptr( Lag_range_ptr, k, 0, 2 );
- lag_high = matrix_ptr( Lag_range_ptr, k, 1, 2 );
- silk_assert(lag_high-lag_low+1 <= SCRATCH_SIZE);
- celt_pitch_xcorr( target_ptr, target_ptr - start_lag - lag_high, xcorr, sf_length, lag_high - lag_low + 1, arch );
- for( j = lag_low; j <= lag_high; j++ ) {
- silk_assert( lag_counter < SCRATCH_SIZE );
- scratch_mem[ lag_counter ] = xcorr[ lag_high - j ];
- lag_counter++;
- }
-
- delta = matrix_ptr( Lag_range_ptr, k, 0, 2 );
- for( i = 0; i < nb_cbk_search; i++ ) {
- /* Fill out the 3 dim array that stores the correlations for */
- /* each code_book vector for each start lag */
- idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta;
- for( j = 0; j < PE_NB_STAGE3_LAGS; j++ ) {
- silk_assert( idx + j < SCRATCH_SIZE );
- silk_assert( idx + j < lag_counter );
- cross_corr_st3[ k ][ i ][ j ] = scratch_mem[ idx + j ];
- }
- }
- target_ptr += sf_length;
- }
-}
-
-/********************************************************************/
-/* Calculate the energies for first two subframes. The energies are */
-/* calculated recursively. */
-/********************************************************************/
-static void silk_P_Ana_calc_energy_st3(
- silk_float energies_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ], /* O 3 DIM correlation array */
- const silk_float frame[], /* I vector to correlate */
- opus_int start_lag, /* I start lag */
- opus_int sf_length, /* I sub frame length */
- opus_int nb_subfr, /* I number of subframes */
- opus_int complexity /* I Complexity setting */
-)
-{
- const silk_float *target_ptr, *basis_ptr;
- double energy;
- opus_int k, i, j, lag_counter;
- opus_int nb_cbk_search, delta, idx, cbk_size, lag_diff;
- silk_float scratch_mem[ SCRATCH_SIZE ];
- const opus_int8 *Lag_range_ptr, *Lag_CB_ptr;
-
- silk_assert( complexity >= SILK_PE_MIN_COMPLEX );
- silk_assert( complexity <= SILK_PE_MAX_COMPLEX );
-
- if( nb_subfr == PE_MAX_NB_SUBFR ) {
- Lag_range_ptr = &silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ];
- Lag_CB_ptr = &silk_CB_lags_stage3[ 0 ][ 0 ];
- nb_cbk_search = silk_nb_cbk_searchs_stage3[ complexity ];
- cbk_size = PE_NB_CBKS_STAGE3_MAX;
- } else {
- silk_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1);
- Lag_range_ptr = &silk_Lag_range_stage3_10_ms[ 0 ][ 0 ];
- Lag_CB_ptr = &silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
- nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
- cbk_size = PE_NB_CBKS_STAGE3_10MS;
- }
-
- target_ptr = &frame[ silk_LSHIFT( sf_length, 2 ) ];
- for( k = 0; k < nb_subfr; k++ ) {
- lag_counter = 0;
-
- /* Calculate the energy for first lag */
- basis_ptr = target_ptr - ( start_lag + matrix_ptr( Lag_range_ptr, k, 0, 2 ) );
- energy = silk_energy_FLP( basis_ptr, sf_length ) + 1e-3;
- silk_assert( energy >= 0.0 );
- scratch_mem[lag_counter] = (silk_float)energy;
- lag_counter++;
-
- lag_diff = ( matrix_ptr( Lag_range_ptr, k, 1, 2 ) - matrix_ptr( Lag_range_ptr, k, 0, 2 ) + 1 );
- for( i = 1; i < lag_diff; i++ ) {
- /* remove part outside new window */
- energy -= basis_ptr[sf_length - i] * (double)basis_ptr[sf_length - i];
- silk_assert( energy >= 0.0 );
-
- /* add part that comes into window */
- energy += basis_ptr[ -i ] * (double)basis_ptr[ -i ];
- silk_assert( energy >= 0.0 );
- silk_assert( lag_counter < SCRATCH_SIZE );
- scratch_mem[lag_counter] = (silk_float)energy;
- lag_counter++;
- }
-
- delta = matrix_ptr( Lag_range_ptr, k, 0, 2 );
- for( i = 0; i < nb_cbk_search; i++ ) {
- /* Fill out the 3 dim array that stores the correlations for */
- /* each code_book vector for each start lag */
- idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta;
- for( j = 0; j < PE_NB_STAGE3_LAGS; j++ ) {
- silk_assert( idx + j < SCRATCH_SIZE );
- silk_assert( idx + j < lag_counter );
- energies_st3[ k ][ i ][ j ] = scratch_mem[ idx + j ];
- silk_assert( energies_st3[ k ][ i ][ j ] >= 0.0f );
- }
- }
- target_ptr += sf_length;
- }
-}
diff --git a/thirdparty/opus/silk/float/prefilter_FLP.c b/thirdparty/opus/silk/float/prefilter_FLP.c
deleted file mode 100644
index 8bc32fb410..0000000000
--- a/thirdparty/opus/silk/float/prefilter_FLP.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-#include "tuning_parameters.h"
-
-/*
-* Prefilter for finding Quantizer input signal
-*/
-static OPUS_INLINE void silk_prefilt_FLP(
- silk_prefilter_state_FLP *P, /* I/O state */
- silk_float st_res[], /* I */
- silk_float xw[], /* O */
- silk_float *HarmShapeFIR, /* I */
- silk_float Tilt, /* I */
- silk_float LF_MA_shp, /* I */
- silk_float LF_AR_shp, /* I */
- opus_int lag, /* I */
- opus_int length /* I */
-);
-
-static void silk_warped_LPC_analysis_filter_FLP(
- silk_float state[], /* I/O State [order + 1] */
- silk_float res[], /* O Residual signal [length] */
- const silk_float coef[], /* I Coefficients [order] */
- const silk_float input[], /* I Input signal [length] */
- const silk_float lambda, /* I Warping factor */
- const opus_int length, /* I Length of input signal */
- const opus_int order /* I Filter order (even) */
-)
-{
- opus_int n, i;
- silk_float acc, tmp1, tmp2;
-
- /* Order must be even */
- silk_assert( ( order & 1 ) == 0 );
-
- for( n = 0; n < length; n++ ) {
- /* Output of lowpass section */
- tmp2 = state[ 0 ] + lambda * state[ 1 ];
- state[ 0 ] = input[ n ];
- /* Output of allpass section */
- tmp1 = state[ 1 ] + lambda * ( state[ 2 ] - tmp2 );
- state[ 1 ] = tmp2;
- acc = coef[ 0 ] * tmp2;
- /* Loop over allpass sections */
- for( i = 2; i < order; i += 2 ) {
- /* Output of allpass section */
- tmp2 = state[ i ] + lambda * ( state[ i + 1 ] - tmp1 );
- state[ i ] = tmp1;
- acc += coef[ i - 1 ] * tmp1;
- /* Output of allpass section */
- tmp1 = state[ i + 1 ] + lambda * ( state[ i + 2 ] - tmp2 );
- state[ i + 1 ] = tmp2;
- acc += coef[ i ] * tmp2;
- }
- state[ order ] = tmp1;
- acc += coef[ order - 1 ] * tmp1;
- res[ n ] = input[ n ] - acc;
- }
-}
-
-/*
-* silk_prefilter. Main prefilter function
-*/
-void silk_prefilter_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- const silk_encoder_control_FLP *psEncCtrl, /* I Encoder control FLP */
- silk_float xw[], /* O Weighted signal */
- const silk_float x[] /* I Speech signal */
-)
-{
- silk_prefilter_state_FLP *P = &psEnc->sPrefilt;
- opus_int j, k, lag;
- silk_float HarmShapeGain, Tilt, LF_MA_shp, LF_AR_shp;
- silk_float B[ 2 ];
- const silk_float *AR1_shp;
- const silk_float *px;
- silk_float *pxw;
- silk_float HarmShapeFIR[ 3 ];
- silk_float st_res[ MAX_SUB_FRAME_LENGTH + MAX_LPC_ORDER ];
-
- /* Set up pointers */
- px = x;
- pxw = xw;
- lag = P->lagPrev;
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- /* Update Variables that change per sub frame */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- lag = psEncCtrl->pitchL[ k ];
- }
-
- /* Noise shape parameters */
- HarmShapeGain = psEncCtrl->HarmShapeGain[ k ] * ( 1.0f - psEncCtrl->HarmBoost[ k ] );
- HarmShapeFIR[ 0 ] = 0.25f * HarmShapeGain;
- HarmShapeFIR[ 1 ] = 32767.0f / 65536.0f * HarmShapeGain;
- HarmShapeFIR[ 2 ] = 0.25f * HarmShapeGain;
- Tilt = psEncCtrl->Tilt[ k ];
- LF_MA_shp = psEncCtrl->LF_MA_shp[ k ];
- LF_AR_shp = psEncCtrl->LF_AR_shp[ k ];
- AR1_shp = &psEncCtrl->AR1[ k * MAX_SHAPE_LPC_ORDER ];
-
- /* Short term FIR filtering */
- silk_warped_LPC_analysis_filter_FLP( P->sAR_shp, st_res, AR1_shp, px,
- (silk_float)psEnc->sCmn.warping_Q16 / 65536.0f, psEnc->sCmn.subfr_length, psEnc->sCmn.shapingLPCOrder );
-
- /* Reduce (mainly) low frequencies during harmonic emphasis */
- B[ 0 ] = psEncCtrl->GainsPre[ k ];
- B[ 1 ] = -psEncCtrl->GainsPre[ k ] *
- ( psEncCtrl->HarmBoost[ k ] * HarmShapeGain + INPUT_TILT + psEncCtrl->coding_quality * HIGH_RATE_INPUT_TILT );
- pxw[ 0 ] = B[ 0 ] * st_res[ 0 ] + B[ 1 ] * P->sHarmHP;
- for( j = 1; j < psEnc->sCmn.subfr_length; j++ ) {
- pxw[ j ] = B[ 0 ] * st_res[ j ] + B[ 1 ] * st_res[ j - 1 ];
- }
- P->sHarmHP = st_res[ psEnc->sCmn.subfr_length - 1 ];
-
- silk_prefilt_FLP( P, pxw, pxw, HarmShapeFIR, Tilt, LF_MA_shp, LF_AR_shp, lag, psEnc->sCmn.subfr_length );
-
- px += psEnc->sCmn.subfr_length;
- pxw += psEnc->sCmn.subfr_length;
- }
- P->lagPrev = psEncCtrl->pitchL[ psEnc->sCmn.nb_subfr - 1 ];
-}
-
-/*
-* Prefilter for finding Quantizer input signal
-*/
-static OPUS_INLINE void silk_prefilt_FLP(
- silk_prefilter_state_FLP *P, /* I/O state */
- silk_float st_res[], /* I */
- silk_float xw[], /* O */
- silk_float *HarmShapeFIR, /* I */
- silk_float Tilt, /* I */
- silk_float LF_MA_shp, /* I */
- silk_float LF_AR_shp, /* I */
- opus_int lag, /* I */
- opus_int length /* I */
-)
-{
- opus_int i;
- opus_int idx, LTP_shp_buf_idx;
- silk_float n_Tilt, n_LF, n_LTP;
- silk_float sLF_AR_shp, sLF_MA_shp;
- silk_float *LTP_shp_buf;
-
- /* To speed up use temp variables instead of using the struct */
- LTP_shp_buf = P->sLTP_shp;
- LTP_shp_buf_idx = P->sLTP_shp_buf_idx;
- sLF_AR_shp = P->sLF_AR_shp;
- sLF_MA_shp = P->sLF_MA_shp;
-
- for( i = 0; i < length; i++ ) {
- if( lag > 0 ) {
- silk_assert( HARM_SHAPE_FIR_TAPS == 3 );
- idx = lag + LTP_shp_buf_idx;
- n_LTP = LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 - 1) & LTP_MASK ] * HarmShapeFIR[ 0 ];
- n_LTP += LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 ) & LTP_MASK ] * HarmShapeFIR[ 1 ];
- n_LTP += LTP_shp_buf[ ( idx - HARM_SHAPE_FIR_TAPS / 2 + 1) & LTP_MASK ] * HarmShapeFIR[ 2 ];
- } else {
- n_LTP = 0;
- }
-
- n_Tilt = sLF_AR_shp * Tilt;
- n_LF = sLF_AR_shp * LF_AR_shp + sLF_MA_shp * LF_MA_shp;
-
- sLF_AR_shp = st_res[ i ] - n_Tilt;
- sLF_MA_shp = sLF_AR_shp - n_LF;
-
- LTP_shp_buf_idx = ( LTP_shp_buf_idx - 1 ) & LTP_MASK;
- LTP_shp_buf[ LTP_shp_buf_idx ] = sLF_MA_shp;
-
- xw[ i ] = sLF_MA_shp - n_LTP;
- }
- /* Copy temp variable back to state */
- P->sLF_AR_shp = sLF_AR_shp;
- P->sLF_MA_shp = sLF_MA_shp;
- P->sLTP_shp_buf_idx = LTP_shp_buf_idx;
-}
diff --git a/thirdparty/opus/silk/float/process_gains_FLP.c b/thirdparty/opus/silk/float/process_gains_FLP.c
deleted file mode 100644
index c0da0dae44..0000000000
--- a/thirdparty/opus/silk/float/process_gains_FLP.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-#include "tuning_parameters.h"
-
-/* Processing of gains */
-void silk_process_gains_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- opus_int condCoding /* I The type of conditional coding to use */
-)
-{
- silk_shape_state_FLP *psShapeSt = &psEnc->sShape;
- opus_int k;
- opus_int32 pGains_Q16[ MAX_NB_SUBFR ];
- silk_float s, InvMaxSqrVal, gain, quant_offset;
-
- /* Gain reduction when LTP coding gain is high */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- s = 1.0f - 0.5f * silk_sigmoid( 0.25f * ( psEncCtrl->LTPredCodGain - 12.0f ) );
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->Gains[ k ] *= s;
- }
- }
-
- /* Limit the quantized signal */
- InvMaxSqrVal = ( silk_float )( pow( 2.0f, 0.33f * ( 21.0f - psEnc->sCmn.SNR_dB_Q7 * ( 1 / 128.0f ) ) ) / psEnc->sCmn.subfr_length );
-
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- /* Soft limit on ratio residual energy and squared gains */
- gain = psEncCtrl->Gains[ k ];
- gain = ( silk_float )sqrt( gain * gain + psEncCtrl->ResNrg[ k ] * InvMaxSqrVal );
- psEncCtrl->Gains[ k ] = silk_min_float( gain, 32767.0f );
- }
-
- /* Prepare gains for noise shaping quantization */
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- pGains_Q16[ k ] = (opus_int32)( psEncCtrl->Gains[ k ] * 65536.0f );
- }
-
- /* Save unquantized gains and gain Index */
- silk_memcpy( psEncCtrl->GainsUnq_Q16, pGains_Q16, psEnc->sCmn.nb_subfr * sizeof( opus_int32 ) );
- psEncCtrl->lastGainIndexPrev = psShapeSt->LastGainIndex;
-
- /* Quantize gains */
- silk_gains_quant( psEnc->sCmn.indices.GainsIndices, pGains_Q16,
- &psShapeSt->LastGainIndex, condCoding == CODE_CONDITIONALLY, psEnc->sCmn.nb_subfr );
-
- /* Overwrite unquantized gains with quantized gains and convert back to Q0 from Q16 */
- for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
- psEncCtrl->Gains[ k ] = pGains_Q16[ k ] / 65536.0f;
- }
-
- /* Set quantizer offset for voiced signals. Larger offset when LTP coding gain is low or tilt is high (ie low-pass) */
- if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) {
- if( psEncCtrl->LTPredCodGain + psEnc->sCmn.input_tilt_Q15 * ( 1.0f / 32768.0f ) > 1.0f ) {
- psEnc->sCmn.indices.quantOffsetType = 0;
- } else {
- psEnc->sCmn.indices.quantOffsetType = 1;
- }
- }
-
- /* Quantizer boundary adjustment */
- quant_offset = silk_Quantization_Offsets_Q10[ psEnc->sCmn.indices.signalType >> 1 ][ psEnc->sCmn.indices.quantOffsetType ] / 1024.0f;
- psEncCtrl->Lambda = LAMBDA_OFFSET
- + LAMBDA_DELAYED_DECISIONS * psEnc->sCmn.nStatesDelayedDecision
- + LAMBDA_SPEECH_ACT * psEnc->sCmn.speech_activity_Q8 * ( 1.0f / 256.0f )
- + LAMBDA_INPUT_QUALITY * psEncCtrl->input_quality
- + LAMBDA_CODING_QUALITY * psEncCtrl->coding_quality
- + LAMBDA_QUANT_OFFSET * quant_offset;
-
- silk_assert( psEncCtrl->Lambda > 0.0f );
- silk_assert( psEncCtrl->Lambda < 2.0f );
-}
diff --git a/thirdparty/opus/silk/float/regularize_correlations_FLP.c b/thirdparty/opus/silk/float/regularize_correlations_FLP.c
deleted file mode 100644
index df4612604c..0000000000
--- a/thirdparty/opus/silk/float/regularize_correlations_FLP.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-
-/* Add noise to matrix diagonal */
-void silk_regularize_correlations_FLP(
- silk_float *XX, /* I/O Correlation matrices */
- silk_float *xx, /* I/O Correlation values */
- const silk_float noise, /* I Noise energy to add */
- const opus_int D /* I Dimension of XX */
-)
-{
- opus_int i;
-
- for( i = 0; i < D; i++ ) {
- matrix_ptr( &XX[ 0 ], i, i, D ) += noise;
- }
- xx[ 0 ] += noise;
-}
diff --git a/thirdparty/opus/silk/float/residual_energy_FLP.c b/thirdparty/opus/silk/float/residual_energy_FLP.c
deleted file mode 100644
index b2e03a86a4..0000000000
--- a/thirdparty/opus/silk/float/residual_energy_FLP.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-
-#define MAX_ITERATIONS_RESIDUAL_NRG 10
-#define REGULARIZATION_FACTOR 1e-8f
-
-/* Residual energy: nrg = wxx - 2 * wXx * c + c' * wXX * c */
-silk_float silk_residual_energy_covar_FLP( /* O Weighted residual energy */
- const silk_float *c, /* I Filter coefficients */
- silk_float *wXX, /* I/O Weighted correlation matrix, reg. out */
- const silk_float *wXx, /* I Weighted correlation vector */
- const silk_float wxx, /* I Weighted correlation value */
- const opus_int D /* I Dimension */
-)
-{
- opus_int i, j, k;
- silk_float tmp, nrg = 0.0f, regularization;
-
- /* Safety checks */
- silk_assert( D >= 0 );
-
- regularization = REGULARIZATION_FACTOR * ( wXX[ 0 ] + wXX[ D * D - 1 ] );
- for( k = 0; k < MAX_ITERATIONS_RESIDUAL_NRG; k++ ) {
- nrg = wxx;
-
- tmp = 0.0f;
- for( i = 0; i < D; i++ ) {
- tmp += wXx[ i ] * c[ i ];
- }
- nrg -= 2.0f * tmp;
-
- /* compute c' * wXX * c, assuming wXX is symmetric */
- for( i = 0; i < D; i++ ) {
- tmp = 0.0f;
- for( j = i + 1; j < D; j++ ) {
- tmp += matrix_c_ptr( wXX, i, j, D ) * c[ j ];
- }
- nrg += c[ i ] * ( 2.0f * tmp + matrix_c_ptr( wXX, i, i, D ) * c[ i ] );
- }
- if( nrg > 0 ) {
- break;
- } else {
- /* Add white noise */
- for( i = 0; i < D; i++ ) {
- matrix_c_ptr( wXX, i, i, D ) += regularization;
- }
- /* Increase noise for next run */
- regularization *= 2.0f;
- }
- }
- if( k == MAX_ITERATIONS_RESIDUAL_NRG ) {
- silk_assert( nrg == 0 );
- nrg = 1.0f;
- }
-
- return nrg;
-}
-
-/* Calculates residual energies of input subframes where all subframes have LPC_order */
-/* of preceding samples */
-void silk_residual_energy_FLP(
- silk_float nrgs[ MAX_NB_SUBFR ], /* O Residual energy per subframe */
- const silk_float x[], /* I Input signal */
- silk_float a[ 2 ][ MAX_LPC_ORDER ], /* I AR coefs for each frame half */
- const silk_float gains[], /* I Quantization gains */
- const opus_int subfr_length, /* I Subframe length */
- const opus_int nb_subfr, /* I number of subframes */
- const opus_int LPC_order /* I LPC order */
-)
-{
- opus_int shift;
- silk_float *LPC_res_ptr, LPC_res[ ( MAX_FRAME_LENGTH + MAX_NB_SUBFR * MAX_LPC_ORDER ) / 2 ];
-
- LPC_res_ptr = LPC_res + LPC_order;
- shift = LPC_order + subfr_length;
-
- /* Filter input to create the LPC residual for each frame half, and measure subframe energies */
- silk_LPC_analysis_filter_FLP( LPC_res, a[ 0 ], x + 0 * shift, 2 * shift, LPC_order );
- nrgs[ 0 ] = ( silk_float )( gains[ 0 ] * gains[ 0 ] * silk_energy_FLP( LPC_res_ptr + 0 * shift, subfr_length ) );
- nrgs[ 1 ] = ( silk_float )( gains[ 1 ] * gains[ 1 ] * silk_energy_FLP( LPC_res_ptr + 1 * shift, subfr_length ) );
-
- if( nb_subfr == MAX_NB_SUBFR ) {
- silk_LPC_analysis_filter_FLP( LPC_res, a[ 1 ], x + 2 * shift, 2 * shift, LPC_order );
- nrgs[ 2 ] = ( silk_float )( gains[ 2 ] * gains[ 2 ] * silk_energy_FLP( LPC_res_ptr + 0 * shift, subfr_length ) );
- nrgs[ 3 ] = ( silk_float )( gains[ 3 ] * gains[ 3 ] * silk_energy_FLP( LPC_res_ptr + 1 * shift, subfr_length ) );
- }
-}
diff --git a/thirdparty/opus/silk/float/scale_copy_vector_FLP.c b/thirdparty/opus/silk/float/scale_copy_vector_FLP.c
deleted file mode 100644
index 20db32b3b1..0000000000
--- a/thirdparty/opus/silk/float/scale_copy_vector_FLP.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-
-/* copy and multiply a vector by a constant */
-void silk_scale_copy_vector_FLP(
- silk_float *data_out,
- const silk_float *data_in,
- silk_float gain,
- opus_int dataSize
-)
-{
- opus_int i, dataSize4;
-
- /* 4x unrolled loop */
- dataSize4 = dataSize & 0xFFFC;
- for( i = 0; i < dataSize4; i += 4 ) {
- data_out[ i + 0 ] = gain * data_in[ i + 0 ];
- data_out[ i + 1 ] = gain * data_in[ i + 1 ];
- data_out[ i + 2 ] = gain * data_in[ i + 2 ];
- data_out[ i + 3 ] = gain * data_in[ i + 3 ];
- }
-
- /* any remaining elements */
- for( ; i < dataSize; i++ ) {
- data_out[ i ] = gain * data_in[ i ];
- }
-}
diff --git a/thirdparty/opus/silk/float/scale_vector_FLP.c b/thirdparty/opus/silk/float/scale_vector_FLP.c
deleted file mode 100644
index 108fdcbed5..0000000000
--- a/thirdparty/opus/silk/float/scale_vector_FLP.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-
-/* multiply a vector by a constant */
-void silk_scale_vector_FLP(
- silk_float *data1,
- silk_float gain,
- opus_int dataSize
-)
-{
- opus_int i, dataSize4;
-
- /* 4x unrolled loop */
- dataSize4 = dataSize & 0xFFFC;
- for( i = 0; i < dataSize4; i += 4 ) {
- data1[ i + 0 ] *= gain;
- data1[ i + 1 ] *= gain;
- data1[ i + 2 ] *= gain;
- data1[ i + 3 ] *= gain;
- }
-
- /* any remaining elements */
- for( ; i < dataSize; i++ ) {
- data1[ i ] *= gain;
- }
-}
diff --git a/thirdparty/opus/silk/float/schur_FLP.c b/thirdparty/opus/silk/float/schur_FLP.c
deleted file mode 100644
index ee436f8351..0000000000
--- a/thirdparty/opus/silk/float/schur_FLP.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FLP.h"
-
-silk_float silk_schur_FLP( /* O returns residual energy */
- silk_float refl_coef[], /* O reflection coefficients (length order) */
- const silk_float auto_corr[], /* I autocorrelation sequence (length order+1) */
- opus_int order /* I order */
-)
-{
- opus_int k, n;
- silk_float C[ SILK_MAX_ORDER_LPC + 1 ][ 2 ];
- silk_float Ctmp1, Ctmp2, rc_tmp;
-
- silk_assert( order==6||order==8||order==10||order==12||order==14||order==16 );
-
- /* Copy correlations */
- for( k = 0; k < order+1; k++ ) {
- C[ k ][ 0 ] = C[ k ][ 1 ] = auto_corr[ k ];
- }
-
- for( k = 0; k < order; k++ ) {
- /* Get reflection coefficient */
- rc_tmp = -C[ k + 1 ][ 0 ] / silk_max_float( C[ 0 ][ 1 ], 1e-9f );
-
- /* Save the output */
- refl_coef[ k ] = rc_tmp;
-
- /* Update correlations */
- for( n = 0; n < order - k; n++ ) {
- Ctmp1 = C[ n + k + 1 ][ 0 ];
- Ctmp2 = C[ n ][ 1 ];
- C[ n + k + 1 ][ 0 ] = Ctmp1 + Ctmp2 * rc_tmp;
- C[ n ][ 1 ] = Ctmp2 + Ctmp1 * rc_tmp;
- }
- }
-
- /* Return residual energy */
- return C[ 0 ][ 1 ];
-}
-
diff --git a/thirdparty/opus/silk/float/solve_LS_FLP.c b/thirdparty/opus/silk/float/solve_LS_FLP.c
deleted file mode 100644
index 7c90d665a0..0000000000
--- a/thirdparty/opus/silk/float/solve_LS_FLP.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-#include "tuning_parameters.h"
-
-/**********************************************************************
- * LDL Factorisation. Finds the upper triangular matrix L and the diagonal
- * Matrix D (only the diagonal elements returned in a vector)such that
- * the symmetric matric A is given by A = L*D*L'.
- **********************************************************************/
-static OPUS_INLINE void silk_LDL_FLP(
- silk_float *A, /* I/O Pointer to Symetric Square Matrix */
- opus_int M, /* I Size of Matrix */
- silk_float *L, /* I/O Pointer to Square Upper triangular Matrix */
- silk_float *Dinv /* I/O Pointer to vector holding the inverse diagonal elements of D */
-);
-
-/**********************************************************************
- * Function to solve linear equation Ax = b, when A is a MxM lower
- * triangular matrix, with ones on the diagonal.
- **********************************************************************/
-static OPUS_INLINE void silk_SolveWithLowerTriangularWdiagOnes_FLP(
- const silk_float *L, /* I Pointer to Lower Triangular Matrix */
- opus_int M, /* I Dim of Matrix equation */
- const silk_float *b, /* I b Vector */
- silk_float *x /* O x Vector */
-);
-
-/**********************************************************************
- * Function to solve linear equation (A^T)x = b, when A is a MxM lower
- * triangular, with ones on the diagonal. (ie then A^T is upper triangular)
- **********************************************************************/
-static OPUS_INLINE void silk_SolveWithUpperTriangularFromLowerWdiagOnes_FLP(
- const silk_float *L, /* I Pointer to Lower Triangular Matrix */
- opus_int M, /* I Dim of Matrix equation */
- const silk_float *b, /* I b Vector */
- silk_float *x /* O x Vector */
-);
-
-/**********************************************************************
- * Function to solve linear equation Ax = b, when A is a MxM
- * symmetric square matrix - using LDL factorisation
- **********************************************************************/
-void silk_solve_LDL_FLP(
- silk_float *A, /* I/O Symmetric square matrix, out: reg. */
- const opus_int M, /* I Size of matrix */
- const silk_float *b, /* I Pointer to b vector */
- silk_float *x /* O Pointer to x solution vector */
-)
-{
- opus_int i;
- silk_float L[ MAX_MATRIX_SIZE ][ MAX_MATRIX_SIZE ];
- silk_float T[ MAX_MATRIX_SIZE ];
- silk_float Dinv[ MAX_MATRIX_SIZE ]; /* inverse diagonal elements of D*/
-
- silk_assert( M <= MAX_MATRIX_SIZE );
-
- /***************************************************
- Factorize A by LDL such that A = L*D*(L^T),
- where L is lower triangular with ones on diagonal
- ****************************************************/
- silk_LDL_FLP( A, M, &L[ 0 ][ 0 ], Dinv );
-
- /****************************************************
- * substitute D*(L^T) = T. ie:
- L*D*(L^T)*x = b => L*T = b <=> T = inv(L)*b
- ******************************************************/
- silk_SolveWithLowerTriangularWdiagOnes_FLP( &L[ 0 ][ 0 ], M, b, T );
-
- /****************************************************
- D*(L^T)*x = T <=> (L^T)*x = inv(D)*T, because D is
- diagonal just multiply with 1/d_i
- ****************************************************/
- for( i = 0; i < M; i++ ) {
- T[ i ] = T[ i ] * Dinv[ i ];
- }
- /****************************************************
- x = inv(L') * inv(D) * T
- *****************************************************/
- silk_SolveWithUpperTriangularFromLowerWdiagOnes_FLP( &L[ 0 ][ 0 ], M, T, x );
-}
-
-static OPUS_INLINE void silk_SolveWithUpperTriangularFromLowerWdiagOnes_FLP(
- const silk_float *L, /* I Pointer to Lower Triangular Matrix */
- opus_int M, /* I Dim of Matrix equation */
- const silk_float *b, /* I b Vector */
- silk_float *x /* O x Vector */
-)
-{
- opus_int i, j;
- silk_float temp;
- const silk_float *ptr1;
-
- for( i = M - 1; i >= 0; i-- ) {
- ptr1 = matrix_adr( L, 0, i, M );
- temp = 0;
- for( j = M - 1; j > i ; j-- ) {
- temp += ptr1[ j * M ] * x[ j ];
- }
- temp = b[ i ] - temp;
- x[ i ] = temp;
- }
-}
-
-static OPUS_INLINE void silk_SolveWithLowerTriangularWdiagOnes_FLP(
- const silk_float *L, /* I Pointer to Lower Triangular Matrix */
- opus_int M, /* I Dim of Matrix equation */
- const silk_float *b, /* I b Vector */
- silk_float *x /* O x Vector */
-)
-{
- opus_int i, j;
- silk_float temp;
- const silk_float *ptr1;
-
- for( i = 0; i < M; i++ ) {
- ptr1 = matrix_adr( L, i, 0, M );
- temp = 0;
- for( j = 0; j < i; j++ ) {
- temp += ptr1[ j ] * x[ j ];
- }
- temp = b[ i ] - temp;
- x[ i ] = temp;
- }
-}
-
-static OPUS_INLINE void silk_LDL_FLP(
- silk_float *A, /* I/O Pointer to Symetric Square Matrix */
- opus_int M, /* I Size of Matrix */
- silk_float *L, /* I/O Pointer to Square Upper triangular Matrix */
- silk_float *Dinv /* I/O Pointer to vector holding the inverse diagonal elements of D */
-)
-{
- opus_int i, j, k, loop_count, err = 1;
- silk_float *ptr1, *ptr2;
- double temp, diag_min_value;
- silk_float v[ MAX_MATRIX_SIZE ], D[ MAX_MATRIX_SIZE ]; /* temp arrays*/
-
- silk_assert( M <= MAX_MATRIX_SIZE );
-
- diag_min_value = FIND_LTP_COND_FAC * 0.5f * ( A[ 0 ] + A[ M * M - 1 ] );
- for( loop_count = 0; loop_count < M && err == 1; loop_count++ ) {
- err = 0;
- for( j = 0; j < M; j++ ) {
- ptr1 = matrix_adr( L, j, 0, M );
- temp = matrix_ptr( A, j, j, M ); /* element in row j column j*/
- for( i = 0; i < j; i++ ) {
- v[ i ] = ptr1[ i ] * D[ i ];
- temp -= ptr1[ i ] * v[ i ];
- }
- if( temp < diag_min_value ) {
- /* Badly conditioned matrix: add white noise and run again */
- temp = ( loop_count + 1 ) * diag_min_value - temp;
- for( i = 0; i < M; i++ ) {
- matrix_ptr( A, i, i, M ) += ( silk_float )temp;
- }
- err = 1;
- break;
- }
- D[ j ] = ( silk_float )temp;
- Dinv[ j ] = ( silk_float )( 1.0f / temp );
- matrix_ptr( L, j, j, M ) = 1.0f;
-
- ptr1 = matrix_adr( A, j, 0, M );
- ptr2 = matrix_adr( L, j + 1, 0, M);
- for( i = j + 1; i < M; i++ ) {
- temp = 0.0;
- for( k = 0; k < j; k++ ) {
- temp += ptr2[ k ] * v[ k ];
- }
- matrix_ptr( L, i, j, M ) = ( silk_float )( ( ptr1[ i ] - temp ) * Dinv[ j ] );
- ptr2 += M; /* go to next column*/
- }
- }
- }
- silk_assert( err == 0 );
-}
-
diff --git a/thirdparty/opus/silk/float/sort_FLP.c b/thirdparty/opus/silk/float/sort_FLP.c
deleted file mode 100644
index f08d7592c5..0000000000
--- a/thirdparty/opus/silk/float/sort_FLP.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* Insertion sort (fast for already almost sorted arrays): */
-/* Best case: O(n) for an already sorted array */
-/* Worst case: O(n^2) for an inversely sorted array */
-
-#include "typedef.h"
-#include "SigProc_FLP.h"
-
-void silk_insertion_sort_decreasing_FLP(
- silk_float *a, /* I/O Unsorted / Sorted vector */
- opus_int *idx, /* O Index vector for the sorted elements */
- const opus_int L, /* I Vector length */
- const opus_int K /* I Number of correctly sorted positions */
-)
-{
- silk_float value;
- opus_int i, j;
-
- /* Safety checks */
- silk_assert( K > 0 );
- silk_assert( L > 0 );
- silk_assert( L >= K );
-
- /* Write start indices in index vector */
- for( i = 0; i < K; i++ ) {
- idx[ i ] = i;
- }
-
- /* Sort vector elements by value, decreasing order */
- for( i = 1; i < K; i++ ) {
- value = a[ i ];
- for( j = i - 1; ( j >= 0 ) && ( value > a[ j ] ); j-- ) {
- a[ j + 1 ] = a[ j ]; /* Shift value */
- idx[ j + 1 ] = idx[ j ]; /* Shift index */
- }
- a[ j + 1 ] = value; /* Write value */
- idx[ j + 1 ] = i; /* Write index */
- }
-
- /* If less than L values are asked check the remaining values, */
- /* but only spend CPU to ensure that the K first values are correct */
- for( i = K; i < L; i++ ) {
- value = a[ i ];
- if( value > a[ K - 1 ] ) {
- for( j = K - 2; ( j >= 0 ) && ( value > a[ j ] ); j-- ) {
- a[ j + 1 ] = a[ j ]; /* Shift value */
- idx[ j + 1 ] = idx[ j ]; /* Shift index */
- }
- a[ j + 1 ] = value; /* Write value */
- idx[ j + 1 ] = i; /* Write index */
- }
- }
-}
diff --git a/thirdparty/opus/silk/float/structs_FLP.h b/thirdparty/opus/silk/float/structs_FLP.h
deleted file mode 100644
index 14d647ced2..0000000000
--- a/thirdparty/opus/silk/float/structs_FLP.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_STRUCTS_FLP_H
-#define SILK_STRUCTS_FLP_H
-
-#include "typedef.h"
-#include "main.h"
-#include "structs.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/********************************/
-/* Noise shaping analysis state */
-/********************************/
-typedef struct {
- opus_int8 LastGainIndex;
- silk_float HarmBoost_smth;
- silk_float HarmShapeGain_smth;
- silk_float Tilt_smth;
-} silk_shape_state_FLP;
-
-/********************************/
-/* Prefilter state */
-/********************************/
-typedef struct {
- silk_float sLTP_shp[ LTP_BUF_LENGTH ];
- silk_float sAR_shp[ MAX_SHAPE_LPC_ORDER + 1 ];
- opus_int sLTP_shp_buf_idx;
- silk_float sLF_AR_shp;
- silk_float sLF_MA_shp;
- silk_float sHarmHP;
- opus_int32 rand_seed;
- opus_int lagPrev;
-} silk_prefilter_state_FLP;
-
-/********************************/
-/* Encoder state FLP */
-/********************************/
-typedef struct {
- silk_encoder_state sCmn; /* Common struct, shared with fixed-point code */
- silk_shape_state_FLP sShape; /* Noise shaping state */
- silk_prefilter_state_FLP sPrefilt; /* Prefilter State */
-
- /* Buffer for find pitch and noise shape analysis */
- silk_float x_buf[ 2 * MAX_FRAME_LENGTH + LA_SHAPE_MAX ];/* Buffer for find pitch and noise shape analysis */
- silk_float LTPCorr; /* Normalized correlation from pitch lag estimator */
-} silk_encoder_state_FLP;
-
-/************************/
-/* Encoder control FLP */
-/************************/
-typedef struct {
- /* Prediction and coding parameters */
- silk_float Gains[ MAX_NB_SUBFR ];
- silk_float PredCoef[ 2 ][ MAX_LPC_ORDER ]; /* holds interpolated and final coefficients */
- silk_float LTPCoef[LTP_ORDER * MAX_NB_SUBFR];
- silk_float LTP_scale;
- opus_int pitchL[ MAX_NB_SUBFR ];
-
- /* Noise shaping parameters */
- silk_float AR1[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ];
- silk_float AR2[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ];
- silk_float LF_MA_shp[ MAX_NB_SUBFR ];
- silk_float LF_AR_shp[ MAX_NB_SUBFR ];
- silk_float GainsPre[ MAX_NB_SUBFR ];
- silk_float HarmBoost[ MAX_NB_SUBFR ];
- silk_float Tilt[ MAX_NB_SUBFR ];
- silk_float HarmShapeGain[ MAX_NB_SUBFR ];
- silk_float Lambda;
- silk_float input_quality;
- silk_float coding_quality;
-
- /* Measures */
- silk_float sparseness;
- silk_float predGain;
- silk_float LTPredCodGain;
- silk_float ResNrg[ MAX_NB_SUBFR ]; /* Residual energy per subframe */
-
- /* Parameters for CBR mode */
- opus_int32 GainsUnq_Q16[ MAX_NB_SUBFR ];
- opus_int8 lastGainIndexPrev;
-} silk_encoder_control_FLP;
-
-/************************/
-/* Encoder Super Struct */
-/************************/
-typedef struct {
- silk_encoder_state_FLP state_Fxx[ ENCODER_NUM_CHANNELS ];
- stereo_enc_state sStereo;
- opus_int32 nBitsUsedLBRR;
- opus_int32 nBitsExceeded;
- opus_int nChannelsAPI;
- opus_int nChannelsInternal;
- opus_int nPrevChannelsInternal;
- opus_int timeSinceSwitchAllowed_ms;
- opus_int allowBandwidthSwitch;
- opus_int prev_decode_only_middle;
-} silk_encoder;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/float/warped_autocorrelation_FLP.c b/thirdparty/opus/silk/float/warped_autocorrelation_FLP.c
deleted file mode 100644
index 542414f48e..0000000000
--- a/thirdparty/opus/silk/float/warped_autocorrelation_FLP.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-
-/* Autocorrelations for a warped frequency axis */
-void silk_warped_autocorrelation_FLP(
- silk_float *corr, /* O Result [order + 1] */
- const silk_float *input, /* I Input data to correlate */
- const silk_float warping, /* I Warping coefficient */
- const opus_int length, /* I Length of input */
- const opus_int order /* I Correlation order (even) */
-)
-{
- opus_int n, i;
- double tmp1, tmp2;
- double state[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
- double C[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
-
- /* Order must be even */
- silk_assert( ( order & 1 ) == 0 );
-
- /* Loop over samples */
- for( n = 0; n < length; n++ ) {
- tmp1 = input[ n ];
- /* Loop over allpass sections */
- for( i = 0; i < order; i += 2 ) {
- /* Output of allpass section */
- tmp2 = state[ i ] + warping * ( state[ i + 1 ] - tmp1 );
- state[ i ] = tmp1;
- C[ i ] += state[ 0 ] * tmp1;
- /* Output of allpass section */
- tmp1 = state[ i + 1 ] + warping * ( state[ i + 2 ] - tmp2 );
- state[ i + 1 ] = tmp2;
- C[ i + 1 ] += state[ 0 ] * tmp2;
- }
- state[ order ] = tmp1;
- C[ order ] += state[ 0 ] * tmp1;
- }
-
- /* Copy correlations in silk_float output format */
- for( i = 0; i < order + 1; i++ ) {
- corr[ i ] = ( silk_float )C[ i ];
- }
-}
diff --git a/thirdparty/opus/silk/float/wrappers_FLP.c b/thirdparty/opus/silk/float/wrappers_FLP.c
deleted file mode 100644
index 6666b8efaa..0000000000
--- a/thirdparty/opus/silk/float/wrappers_FLP.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main_FLP.h"
-
-/* Wrappers. Calls flp / fix code */
-
-/* Convert AR filter coefficients to NLSF parameters */
-void silk_A2NLSF_FLP(
- opus_int16 *NLSF_Q15, /* O NLSF vector [ LPC_order ] */
- const silk_float *pAR, /* I LPC coefficients [ LPC_order ] */
- const opus_int LPC_order /* I LPC order */
-)
-{
- opus_int i;
- opus_int32 a_fix_Q16[ MAX_LPC_ORDER ];
-
- for( i = 0; i < LPC_order; i++ ) {
- a_fix_Q16[ i ] = silk_float2int( pAR[ i ] * 65536.0f );
- }
-
- silk_A2NLSF( NLSF_Q15, a_fix_Q16, LPC_order );
-}
-
-/* Convert LSF parameters to AR prediction filter coefficients */
-void silk_NLSF2A_FLP(
- silk_float *pAR, /* O LPC coefficients [ LPC_order ] */
- const opus_int16 *NLSF_Q15, /* I NLSF vector [ LPC_order ] */
- const opus_int LPC_order /* I LPC order */
-)
-{
- opus_int i;
- opus_int16 a_fix_Q12[ MAX_LPC_ORDER ];
-
- silk_NLSF2A( a_fix_Q12, NLSF_Q15, LPC_order );
-
- for( i = 0; i < LPC_order; i++ ) {
- pAR[ i ] = ( silk_float )a_fix_Q12[ i ] * ( 1.0f / 4096.0f );
- }
-}
-
-/******************************************/
-/* Floating-point NLSF processing wrapper */
-/******************************************/
-void silk_process_NLSFs_FLP(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- silk_float PredCoef[ 2 ][ MAX_LPC_ORDER ], /* O Prediction coefficients */
- opus_int16 NLSF_Q15[ MAX_LPC_ORDER ], /* I/O Normalized LSFs (quant out) (0 - (2^15-1)) */
- const opus_int16 prev_NLSF_Q15[ MAX_LPC_ORDER ] /* I Previous Normalized LSFs (0 - (2^15-1)) */
-)
-{
- opus_int i, j;
- opus_int16 PredCoef_Q12[ 2 ][ MAX_LPC_ORDER ];
-
- silk_process_NLSFs( psEncC, PredCoef_Q12, NLSF_Q15, prev_NLSF_Q15);
-
- for( j = 0; j < 2; j++ ) {
- for( i = 0; i < psEncC->predictLPCOrder; i++ ) {
- PredCoef[ j ][ i ] = ( silk_float )PredCoef_Q12[ j ][ i ] * ( 1.0f / 4096.0f );
- }
- }
-}
-
-/****************************************/
-/* Floating-point Silk NSQ wrapper */
-/****************************************/
-void silk_NSQ_wrapper_FLP(
- silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */
- silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */
- SideInfoIndices *psIndices, /* I/O Quantization indices */
- silk_nsq_state *psNSQ, /* I/O Noise Shaping Quantzation state */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const silk_float x[] /* I Prefiltered input signal */
-)
-{
- opus_int i, j;
- opus_int32 x_Q3[ MAX_FRAME_LENGTH ];
- opus_int32 Gains_Q16[ MAX_NB_SUBFR ];
- silk_DWORD_ALIGN opus_int16 PredCoef_Q12[ 2 ][ MAX_LPC_ORDER ];
- opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ];
- opus_int LTP_scale_Q14;
-
- /* Noise shaping parameters */
- opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ];
- opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ]; /* Packs two int16 coefficients per int32 value */
- opus_int Lambda_Q10;
- opus_int Tilt_Q14[ MAX_NB_SUBFR ];
- opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ];
-
- /* Convert control struct to fix control struct */
- /* Noise shape parameters */
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- for( j = 0; j < psEnc->sCmn.shapingLPCOrder; j++ ) {
- AR2_Q13[ i * MAX_SHAPE_LPC_ORDER + j ] = silk_float2int( psEncCtrl->AR2[ i * MAX_SHAPE_LPC_ORDER + j ] * 8192.0f );
- }
- }
-
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- LF_shp_Q14[ i ] = silk_LSHIFT32( silk_float2int( psEncCtrl->LF_AR_shp[ i ] * 16384.0f ), 16 ) |
- (opus_uint16)silk_float2int( psEncCtrl->LF_MA_shp[ i ] * 16384.0f );
- Tilt_Q14[ i ] = (opus_int)silk_float2int( psEncCtrl->Tilt[ i ] * 16384.0f );
- HarmShapeGain_Q14[ i ] = (opus_int)silk_float2int( psEncCtrl->HarmShapeGain[ i ] * 16384.0f );
- }
- Lambda_Q10 = ( opus_int )silk_float2int( psEncCtrl->Lambda * 1024.0f );
-
- /* prediction and coding parameters */
- for( i = 0; i < psEnc->sCmn.nb_subfr * LTP_ORDER; i++ ) {
- LTPCoef_Q14[ i ] = (opus_int16)silk_float2int( psEncCtrl->LTPCoef[ i ] * 16384.0f );
- }
-
- for( j = 0; j < 2; j++ ) {
- for( i = 0; i < psEnc->sCmn.predictLPCOrder; i++ ) {
- PredCoef_Q12[ j ][ i ] = (opus_int16)silk_float2int( psEncCtrl->PredCoef[ j ][ i ] * 4096.0f );
- }
- }
-
- for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
- Gains_Q16[ i ] = silk_float2int( psEncCtrl->Gains[ i ] * 65536.0f );
- silk_assert( Gains_Q16[ i ] > 0 );
- }
-
- if( psIndices->signalType == TYPE_VOICED ) {
- LTP_scale_Q14 = silk_LTPScales_table_Q14[ psIndices->LTP_scaleIndex ];
- } else {
- LTP_scale_Q14 = 0;
- }
-
- /* Convert input to fix */
- for( i = 0; i < psEnc->sCmn.frame_length; i++ ) {
- x_Q3[ i ] = silk_float2int( 8.0f * x[ i ] );
- }
-
- /* Call NSQ */
- if( psEnc->sCmn.nStatesDelayedDecision > 1 || psEnc->sCmn.warping_Q16 > 0 ) {
- silk_NSQ_del_dec( &psEnc->sCmn, psNSQ, psIndices, x_Q3, pulses, PredCoef_Q12[ 0 ], LTPCoef_Q14,
- AR2_Q13, HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, psEncCtrl->pitchL, Lambda_Q10, LTP_scale_Q14, psEnc->sCmn.arch );
- } else {
- silk_NSQ( &psEnc->sCmn, psNSQ, psIndices, x_Q3, pulses, PredCoef_Q12[ 0 ], LTPCoef_Q14,
- AR2_Q13, HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, psEncCtrl->pitchL, Lambda_Q10, LTP_scale_Q14, psEnc->sCmn.arch );
- }
-}
-
-/***********************************************/
-/* Floating-point Silk LTP quantiation wrapper */
-/***********************************************/
-void silk_quant_LTP_gains_FLP(
- silk_float B[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (Un-)quantized LTP gains */
- opus_int8 cbk_index[ MAX_NB_SUBFR ], /* O Codebook index */
- opus_int8 *periodicity_index, /* O Periodicity index */
- opus_int32 *sum_log_gain_Q7, /* I/O Cumulative max prediction gain */
- const silk_float W[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* I Error weights */
- const opus_int mu_Q10, /* I Mu value (R/D tradeoff) */
- const opus_int lowComplexity, /* I Flag for low complexity */
- const opus_int nb_subfr, /* I number of subframes */
- int arch /* I Run-time architecture */
-)
-{
- opus_int i;
- opus_int16 B_Q14[ MAX_NB_SUBFR * LTP_ORDER ];
- opus_int32 W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ];
-
- for( i = 0; i < nb_subfr * LTP_ORDER; i++ ) {
- B_Q14[ i ] = (opus_int16)silk_float2int( B[ i ] * 16384.0f );
- }
- for( i = 0; i < nb_subfr * LTP_ORDER * LTP_ORDER; i++ ) {
- W_Q18[ i ] = (opus_int32)silk_float2int( W[ i ] * 262144.0f );
- }
-
- silk_quant_LTP_gains( B_Q14, cbk_index, periodicity_index, sum_log_gain_Q7, W_Q18, mu_Q10, lowComplexity, nb_subfr, arch );
-
- for( i = 0; i < nb_subfr * LTP_ORDER; i++ ) {
- B[ i ] = (silk_float)B_Q14[ i ] * ( 1.0f / 16384.0f );
- }
-}
diff --git a/thirdparty/opus/silk/gain_quant.c b/thirdparty/opus/silk/gain_quant.c
deleted file mode 100644
index 64ccd0611b..0000000000
--- a/thirdparty/opus/silk/gain_quant.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-#define OFFSET ( ( MIN_QGAIN_DB * 128 ) / 6 + 16 * 128 )
-#define SCALE_Q16 ( ( 65536 * ( N_LEVELS_QGAIN - 1 ) ) / ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) )
-#define INV_SCALE_Q16 ( ( 65536 * ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) ) / ( N_LEVELS_QGAIN - 1 ) )
-
-/* Gain scalar quantization with hysteresis, uniform on log scale */
-void silk_gains_quant(
- opus_int8 ind[ MAX_NB_SUBFR ], /* O gain indices */
- opus_int32 gain_Q16[ MAX_NB_SUBFR ], /* I/O gains (quantized out) */
- opus_int8 *prev_ind, /* I/O last index in previous frame */
- const opus_int conditional, /* I first gain is delta coded if 1 */
- const opus_int nb_subfr /* I number of subframes */
-)
-{
- opus_int k, double_step_size_threshold;
-
- for( k = 0; k < nb_subfr; k++ ) {
- /* Convert to log scale, scale, floor() */
- ind[ k ] = silk_SMULWB( SCALE_Q16, silk_lin2log( gain_Q16[ k ] ) - OFFSET );
-
- /* Round towards previous quantized gain (hysteresis) */
- if( ind[ k ] < *prev_ind ) {
- ind[ k ]++;
- }
- ind[ k ] = silk_LIMIT_int( ind[ k ], 0, N_LEVELS_QGAIN - 1 );
-
- /* Compute delta indices and limit */
- if( k == 0 && conditional == 0 ) {
- /* Full index */
- ind[ k ] = silk_LIMIT_int( ind[ k ], *prev_ind + MIN_DELTA_GAIN_QUANT, N_LEVELS_QGAIN - 1 );
- *prev_ind = ind[ k ];
- } else {
- /* Delta index */
- ind[ k ] = ind[ k ] - *prev_ind;
-
- /* Double the quantization step size for large gain increases, so that the max gain level can be reached */
- double_step_size_threshold = 2 * MAX_DELTA_GAIN_QUANT - N_LEVELS_QGAIN + *prev_ind;
- if( ind[ k ] > double_step_size_threshold ) {
- ind[ k ] = double_step_size_threshold + silk_RSHIFT( ind[ k ] - double_step_size_threshold + 1, 1 );
- }
-
- ind[ k ] = silk_LIMIT_int( ind[ k ], MIN_DELTA_GAIN_QUANT, MAX_DELTA_GAIN_QUANT );
-
- /* Accumulate deltas */
- if( ind[ k ] > double_step_size_threshold ) {
- *prev_ind += silk_LSHIFT( ind[ k ], 1 ) - double_step_size_threshold;
- } else {
- *prev_ind += ind[ k ];
- }
-
- /* Shift to make non-negative */
- ind[ k ] -= MIN_DELTA_GAIN_QUANT;
- }
-
- /* Scale and convert to linear scale */
- gain_Q16[ k ] = silk_log2lin( silk_min_32( silk_SMULWB( INV_SCALE_Q16, *prev_ind ) + OFFSET, 3967 ) ); /* 3967 = 31 in Q7 */
- }
-}
-
-/* Gains scalar dequantization, uniform on log scale */
-void silk_gains_dequant(
- opus_int32 gain_Q16[ MAX_NB_SUBFR ], /* O quantized gains */
- const opus_int8 ind[ MAX_NB_SUBFR ], /* I gain indices */
- opus_int8 *prev_ind, /* I/O last index in previous frame */
- const opus_int conditional, /* I first gain is delta coded if 1 */
- const opus_int nb_subfr /* I number of subframes */
-)
-{
- opus_int k, ind_tmp, double_step_size_threshold;
-
- for( k = 0; k < nb_subfr; k++ ) {
- if( k == 0 && conditional == 0 ) {
- /* Gain index is not allowed to go down more than 16 steps (~21.8 dB) */
- *prev_ind = silk_max_int( ind[ k ], *prev_ind - 16 );
- } else {
- /* Delta index */
- ind_tmp = ind[ k ] + MIN_DELTA_GAIN_QUANT;
-
- /* Accumulate deltas */
- double_step_size_threshold = 2 * MAX_DELTA_GAIN_QUANT - N_LEVELS_QGAIN + *prev_ind;
- if( ind_tmp > double_step_size_threshold ) {
- *prev_ind += silk_LSHIFT( ind_tmp, 1 ) - double_step_size_threshold;
- } else {
- *prev_ind += ind_tmp;
- }
- }
- *prev_ind = silk_LIMIT_int( *prev_ind, 0, N_LEVELS_QGAIN - 1 );
-
- /* Scale and convert to linear scale */
- gain_Q16[ k ] = silk_log2lin( silk_min_32( silk_SMULWB( INV_SCALE_Q16, *prev_ind ) + OFFSET, 3967 ) ); /* 3967 = 31 in Q7 */
- }
-}
-
-/* Compute unique identifier of gain indices vector */
-opus_int32 silk_gains_ID( /* O returns unique identifier of gains */
- const opus_int8 ind[ MAX_NB_SUBFR ], /* I gain indices */
- const opus_int nb_subfr /* I number of subframes */
-)
-{
- opus_int k;
- opus_int32 gainsID;
-
- gainsID = 0;
- for( k = 0; k < nb_subfr; k++ ) {
- gainsID = silk_ADD_LSHIFT32( ind[ k ], gainsID, 8 );
- }
-
- return gainsID;
-}
diff --git a/thirdparty/opus/silk/init_decoder.c b/thirdparty/opus/silk/init_decoder.c
deleted file mode 100644
index f887c67886..0000000000
--- a/thirdparty/opus/silk/init_decoder.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/************************/
-/* Init Decoder State */
-/************************/
-opus_int silk_init_decoder(
- silk_decoder_state *psDec /* I/O Decoder state pointer */
-)
-{
- /* Clear the entire encoder state, except anything copied */
- silk_memset( psDec, 0, sizeof( silk_decoder_state ) );
-
- /* Used to deactivate LSF interpolation */
- psDec->first_frame_after_reset = 1;
- psDec->prev_gain_Q16 = 65536;
-
- /* Reset CNG state */
- silk_CNG_Reset( psDec );
-
- /* Reset PLC state */
- silk_PLC_Reset( psDec );
-
- return(0);
-}
-
diff --git a/thirdparty/opus/silk/init_encoder.c b/thirdparty/opus/silk/init_encoder.c
deleted file mode 100644
index 65995c33fa..0000000000
--- a/thirdparty/opus/silk/init_encoder.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#ifdef FIXED_POINT
-#include "main_FIX.h"
-#else
-#include "main_FLP.h"
-#endif
-#include "tuning_parameters.h"
-#include "cpu_support.h"
-
-/*********************************/
-/* Initialize Silk Encoder state */
-/*********************************/
-opus_int silk_init_encoder(
- silk_encoder_state_Fxx *psEnc, /* I/O Pointer to Silk FIX encoder state */
- int arch /* I Run-time architecture */
-)
-{
- opus_int ret = 0;
-
- /* Clear the entire encoder state */
- silk_memset( psEnc, 0, sizeof( silk_encoder_state_Fxx ) );
-
- psEnc->sCmn.arch = arch;
-
- psEnc->sCmn.variable_HP_smth1_Q15 = silk_LSHIFT( silk_lin2log( SILK_FIX_CONST( VARIABLE_HP_MIN_CUTOFF_HZ, 16 ) ) - ( 16 << 7 ), 8 );
- psEnc->sCmn.variable_HP_smth2_Q15 = psEnc->sCmn.variable_HP_smth1_Q15;
-
- /* Used to deactivate LSF interpolation, pitch prediction */
- psEnc->sCmn.first_frame_after_reset = 1;
-
- /* Initialize Silk VAD */
- ret += silk_VAD_Init( &psEnc->sCmn.sVAD );
-
- return ret;
-}
diff --git a/thirdparty/opus/silk/inner_prod_aligned.c b/thirdparty/opus/silk/inner_prod_aligned.c
deleted file mode 100644
index 257ae9e04e..0000000000
--- a/thirdparty/opus/silk/inner_prod_aligned.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-opus_int32 silk_inner_prod_aligned_scale(
- const opus_int16 *const inVec1, /* I input vector 1 */
- const opus_int16 *const inVec2, /* I input vector 2 */
- const opus_int scale, /* I number of bits to shift */
- const opus_int len /* I vector lengths */
-)
-{
- opus_int i;
- opus_int32 sum = 0;
- for( i = 0; i < len; i++ ) {
- sum = silk_ADD_RSHIFT32( sum, silk_SMULBB( inVec1[ i ], inVec2[ i ] ), scale );
- }
- return sum;
-}
diff --git a/thirdparty/opus/silk/interpolate.c b/thirdparty/opus/silk/interpolate.c
deleted file mode 100644
index 1bd8ca4d53..0000000000
--- a/thirdparty/opus/silk/interpolate.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Interpolate two vectors */
-void silk_interpolate(
- opus_int16 xi[ MAX_LPC_ORDER ], /* O interpolated vector */
- const opus_int16 x0[ MAX_LPC_ORDER ], /* I first vector */
- const opus_int16 x1[ MAX_LPC_ORDER ], /* I second vector */
- const opus_int ifact_Q2, /* I interp. factor, weight on 2nd vector */
- const opus_int d /* I number of parameters */
-)
-{
- opus_int i;
-
- silk_assert( ifact_Q2 >= 0 );
- silk_assert( ifact_Q2 <= 4 );
-
- for( i = 0; i < d; i++ ) {
- xi[ i ] = (opus_int16)silk_ADD_RSHIFT( x0[ i ], silk_SMULBB( x1[ i ] - x0[ i ], ifact_Q2 ), 2 );
- }
-}
diff --git a/thirdparty/opus/silk/lin2log.c b/thirdparty/opus/silk/lin2log.c
deleted file mode 100644
index d4fe515321..0000000000
--- a/thirdparty/opus/silk/lin2log.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-/* Approximation of 128 * log2() (very close inverse of silk_log2lin()) */
-/* Convert input to a log scale */
-opus_int32 silk_lin2log(
- const opus_int32 inLin /* I input in linear scale */
-)
-{
- opus_int32 lz, frac_Q7;
-
- silk_CLZ_FRAC( inLin, &lz, &frac_Q7 );
-
- /* Piece-wise parabolic approximation */
- return silk_LSHIFT( 31 - lz, 7 ) + silk_SMLAWB( frac_Q7, silk_MUL( frac_Q7, 128 - frac_Q7 ), 179 );
-}
-
diff --git a/thirdparty/opus/silk/log2lin.c b/thirdparty/opus/silk/log2lin.c
deleted file mode 100644
index b7c48e4740..0000000000
--- a/thirdparty/opus/silk/log2lin.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Approximation of 2^() (very close inverse of silk_lin2log()) */
-/* Convert input to a linear scale */
-opus_int32 silk_log2lin(
- const opus_int32 inLog_Q7 /* I input on log scale */
-)
-{
- opus_int32 out, frac_Q7;
-
- if( inLog_Q7 < 0 ) {
- return 0;
- } else if ( inLog_Q7 >= 3967 ) {
- return silk_int32_MAX;
- }
-
- out = silk_LSHIFT( 1, silk_RSHIFT( inLog_Q7, 7 ) );
- frac_Q7 = inLog_Q7 & 0x7F;
- if( inLog_Q7 < 2048 ) {
- /* Piece-wise parabolic approximation */
- out = silk_ADD_RSHIFT32( out, silk_MUL( out, silk_SMLAWB( frac_Q7, silk_SMULBB( frac_Q7, 128 - frac_Q7 ), -174 ) ), 7 );
- } else {
- /* Piece-wise parabolic approximation */
- out = silk_MLA( out, silk_RSHIFT( out, 7 ), silk_SMLAWB( frac_Q7, silk_SMULBB( frac_Q7, 128 - frac_Q7 ), -174 ) );
- }
- return out;
-}
diff --git a/thirdparty/opus/silk/macros.h b/thirdparty/opus/silk/macros.h
deleted file mode 100644
index d3ca347520..0000000000
--- a/thirdparty/opus/silk/macros.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_MACROS_H
-#define SILK_MACROS_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "opus_types.h"
-#include "opus_defines.h"
-#include "arch.h"
-
-#if OPUS_GNUC_PREREQ(3, 0)
-#define opus_likely(x) (__builtin_expect(!!(x), 1))
-#define opus_unlikely(x) (__builtin_expect(!!(x), 0))
-#else
-#define opus_likely(x) (!!(x))
-#define opus_unlikely(x) (!!(x))
-#endif
-
-/* This is an OPUS_INLINE header file for general platform. */
-
-/* (a32 * (opus_int32)((opus_int16)(b32))) >> 16 output have to be 32bit int */
-#if OPUS_FAST_INT64
-#define silk_SMULWB(a32, b32) ((opus_int32)(((a32) * (opus_int64)((opus_int16)(b32))) >> 16))
-#else
-#define silk_SMULWB(a32, b32) ((((a32) >> 16) * (opus_int32)((opus_int16)(b32))) + ((((a32) & 0x0000FFFF) * (opus_int32)((opus_int16)(b32))) >> 16))
-#endif
-
-/* a32 + (b32 * (opus_int32)((opus_int16)(c32))) >> 16 output have to be 32bit int */
-#if OPUS_FAST_INT64
-#define silk_SMLAWB(a32, b32, c32) ((opus_int32)((a32) + (((b32) * (opus_int64)((opus_int16)(c32))) >> 16)))
-#else
-#define silk_SMLAWB(a32, b32, c32) ((a32) + ((((b32) >> 16) * (opus_int32)((opus_int16)(c32))) + ((((b32) & 0x0000FFFF) * (opus_int32)((opus_int16)(c32))) >> 16)))
-#endif
-
-/* (a32 * (b32 >> 16)) >> 16 */
-#if OPUS_FAST_INT64
-#define silk_SMULWT(a32, b32) ((opus_int32)(((a32) * (opus_int64)((b32) >> 16)) >> 16))
-#else
-#define silk_SMULWT(a32, b32) (((a32) >> 16) * ((b32) >> 16) + ((((a32) & 0x0000FFFF) * ((b32) >> 16)) >> 16))
-#endif
-
-/* a32 + (b32 * (c32 >> 16)) >> 16 */
-#if OPUS_FAST_INT64
-#define silk_SMLAWT(a32, b32, c32) ((opus_int32)((a32) + (((b32) * ((opus_int64)(c32) >> 16)) >> 16)))
-#else
-#define silk_SMLAWT(a32, b32, c32) ((a32) + (((b32) >> 16) * ((c32) >> 16)) + ((((b32) & 0x0000FFFF) * ((c32) >> 16)) >> 16))
-#endif
-
-/* (opus_int32)((opus_int16)(a3))) * (opus_int32)((opus_int16)(b32)) output have to be 32bit int */
-#define silk_SMULBB(a32, b32) ((opus_int32)((opus_int16)(a32)) * (opus_int32)((opus_int16)(b32)))
-
-/* a32 + (opus_int32)((opus_int16)(b32)) * (opus_int32)((opus_int16)(c32)) output have to be 32bit int */
-#define silk_SMLABB(a32, b32, c32) ((a32) + ((opus_int32)((opus_int16)(b32))) * (opus_int32)((opus_int16)(c32)))
-
-/* (opus_int32)((opus_int16)(a32)) * (b32 >> 16) */
-#define silk_SMULBT(a32, b32) ((opus_int32)((opus_int16)(a32)) * ((b32) >> 16))
-
-/* a32 + (opus_int32)((opus_int16)(b32)) * (c32 >> 16) */
-#define silk_SMLABT(a32, b32, c32) ((a32) + ((opus_int32)((opus_int16)(b32))) * ((c32) >> 16))
-
-/* a64 + (b32 * c32) */
-#define silk_SMLAL(a64, b32, c32) (silk_ADD64((a64), ((opus_int64)(b32) * (opus_int64)(c32))))
-
-/* (a32 * b32) >> 16 */
-#if OPUS_FAST_INT64
-#define silk_SMULWW(a32, b32) ((opus_int32)(((opus_int64)(a32) * (b32)) >> 16))
-#else
-#define silk_SMULWW(a32, b32) silk_MLA(silk_SMULWB((a32), (b32)), (a32), silk_RSHIFT_ROUND((b32), 16))
-#endif
-
-/* a32 + ((b32 * c32) >> 16) */
-#if OPUS_FAST_INT64
-#define silk_SMLAWW(a32, b32, c32) ((opus_int32)((a32) + (((opus_int64)(b32) * (c32)) >> 16)))
-#else
-#define silk_SMLAWW(a32, b32, c32) silk_MLA(silk_SMLAWB((a32), (b32), (c32)), (b32), silk_RSHIFT_ROUND((c32), 16))
-#endif
-
-/* add/subtract with output saturated */
-#define silk_ADD_SAT32(a, b) ((((opus_uint32)(a) + (opus_uint32)(b)) & 0x80000000) == 0 ? \
- ((((a) & (b)) & 0x80000000) != 0 ? silk_int32_MIN : (a)+(b)) : \
- ((((a) | (b)) & 0x80000000) == 0 ? silk_int32_MAX : (a)+(b)) )
-
-#define silk_SUB_SAT32(a, b) ((((opus_uint32)(a)-(opus_uint32)(b)) & 0x80000000) == 0 ? \
- (( (a) & ((b)^0x80000000) & 0x80000000) ? silk_int32_MIN : (a)-(b)) : \
- ((((a)^0x80000000) & (b) & 0x80000000) ? silk_int32_MAX : (a)-(b)) )
-
-#if defined(MIPSr1_ASM)
-#include "mips/macros_mipsr1.h"
-#endif
-
-#include "ecintrin.h"
-#ifndef OVERRIDE_silk_CLZ16
-static OPUS_INLINE opus_int32 silk_CLZ16(opus_int16 in16)
-{
- return 32 - EC_ILOG(in16<<16|0x8000);
-}
-#endif
-
-#ifndef OVERRIDE_silk_CLZ32
-static OPUS_INLINE opus_int32 silk_CLZ32(opus_int32 in32)
-{
- return in32 ? 32 - EC_ILOG(in32) : 32;
-}
-#endif
-
-/* Row based */
-#define matrix_ptr(Matrix_base_adr, row, column, N) \
- (*((Matrix_base_adr) + ((row)*(N)+(column))))
-#define matrix_adr(Matrix_base_adr, row, column, N) \
- ((Matrix_base_adr) + ((row)*(N)+(column)))
-
-/* Column based */
-#ifndef matrix_c_ptr
-# define matrix_c_ptr(Matrix_base_adr, row, column, M) \
- (*((Matrix_base_adr) + ((row)+(M)*(column))))
-#endif
-
-#ifdef OPUS_ARM_INLINE_ASM
-#include "arm/macros_armv4.h"
-#endif
-
-#ifdef OPUS_ARM_INLINE_EDSP
-#include "arm/macros_armv5e.h"
-#endif
-
-#ifdef OPUS_ARM_PRESUME_AARCH64_NEON_INTR
-#include "arm/macros_arm64.h"
-#endif
-
-#endif /* SILK_MACROS_H */
-
diff --git a/thirdparty/opus/silk/main.h b/thirdparty/opus/silk/main.h
deleted file mode 100644
index 2f90d68f7d..0000000000
--- a/thirdparty/opus/silk/main.h
+++ /dev/null
@@ -1,471 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_MAIN_H
-#define SILK_MAIN_H
-
-#include "SigProc_FIX.h"
-#include "define.h"
-#include "structs.h"
-#include "tables.h"
-#include "PLC.h"
-#include "control.h"
-#include "debug.h"
-#include "entenc.h"
-#include "entdec.h"
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1)
-#include "x86/main_sse.h"
-#endif
-
-/* Convert Left/Right stereo signal to adaptive Mid/Side representation */
-void silk_stereo_LR_to_MS(
- stereo_enc_state *state, /* I/O State */
- opus_int16 x1[], /* I/O Left input signal, becomes mid signal */
- opus_int16 x2[], /* I/O Right input signal, becomes side signal */
- opus_int8 ix[ 2 ][ 3 ], /* O Quantization indices */
- opus_int8 *mid_only_flag, /* O Flag: only mid signal coded */
- opus_int32 mid_side_rates_bps[], /* O Bitrates for mid and side signals */
- opus_int32 total_rate_bps, /* I Total bitrate */
- opus_int prev_speech_act_Q8, /* I Speech activity level in previous frame */
- opus_int toMono, /* I Last frame before a stereo->mono transition */
- opus_int fs_kHz, /* I Sample rate (kHz) */
- opus_int frame_length /* I Number of samples */
-);
-
-/* Convert adaptive Mid/Side representation to Left/Right stereo signal */
-void silk_stereo_MS_to_LR(
- stereo_dec_state *state, /* I/O State */
- opus_int16 x1[], /* I/O Left input signal, becomes mid signal */
- opus_int16 x2[], /* I/O Right input signal, becomes side signal */
- const opus_int32 pred_Q13[], /* I Predictors */
- opus_int fs_kHz, /* I Samples rate (kHz) */
- opus_int frame_length /* I Number of samples */
-);
-
-/* Find least-squares prediction gain for one signal based on another and quantize it */
-opus_int32 silk_stereo_find_predictor( /* O Returns predictor in Q13 */
- opus_int32 *ratio_Q14, /* O Ratio of residual and mid energies */
- const opus_int16 x[], /* I Basis signal */
- const opus_int16 y[], /* I Target signal */
- opus_int32 mid_res_amp_Q0[], /* I/O Smoothed mid, residual norms */
- opus_int length, /* I Number of samples */
- opus_int smooth_coef_Q16 /* I Smoothing coefficient */
-);
-
-/* Quantize mid/side predictors */
-void silk_stereo_quant_pred(
- opus_int32 pred_Q13[], /* I/O Predictors (out: quantized) */
- opus_int8 ix[ 2 ][ 3 ] /* O Quantization indices */
-);
-
-/* Entropy code the mid/side quantization indices */
-void silk_stereo_encode_pred(
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- opus_int8 ix[ 2 ][ 3 ] /* I Quantization indices */
-);
-
-/* Entropy code the mid-only flag */
-void silk_stereo_encode_mid_only(
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- opus_int8 mid_only_flag
-);
-
-/* Decode mid/side predictors */
-void silk_stereo_decode_pred(
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int32 pred_Q13[] /* O Predictors */
-);
-
-/* Decode mid-only flag */
-void silk_stereo_decode_mid_only(
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int *decode_only_mid /* O Flag that only mid channel has been coded */
-);
-
-/* Encodes signs of excitation */
-void silk_encode_signs(
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- const opus_int8 pulses[], /* I pulse signal */
- opus_int length, /* I length of input */
- const opus_int signalType, /* I Signal type */
- const opus_int quantOffsetType, /* I Quantization offset type */
- const opus_int sum_pulses[ MAX_NB_SHELL_BLOCKS ] /* I Sum of absolute pulses per block */
-);
-
-/* Decodes signs of excitation */
-void silk_decode_signs(
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int16 pulses[], /* I/O pulse signal */
- opus_int length, /* I length of input */
- const opus_int signalType, /* I Signal type */
- const opus_int quantOffsetType, /* I Quantization offset type */
- const opus_int sum_pulses[ MAX_NB_SHELL_BLOCKS ] /* I Sum of absolute pulses per block */
-);
-
-/* Check encoder control struct */
-opus_int check_control_input(
- silk_EncControlStruct *encControl /* I Control structure */
-);
-
-/* Control internal sampling rate */
-opus_int silk_control_audio_bandwidth(
- silk_encoder_state *psEncC, /* I/O Pointer to Silk encoder state */
- silk_EncControlStruct *encControl /* I Control structure */
-);
-
-/* Control SNR of redidual quantizer */
-opus_int silk_control_SNR(
- silk_encoder_state *psEncC, /* I/O Pointer to Silk encoder state */
- opus_int32 TargetRate_bps /* I Target max bitrate (bps) */
-);
-
-/***************/
-/* Shell coder */
-/***************/
-
-/* Encode quantization indices of excitation */
-void silk_encode_pulses(
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- const opus_int signalType, /* I Signal type */
- const opus_int quantOffsetType, /* I quantOffsetType */
- opus_int8 pulses[], /* I quantization indices */
- const opus_int frame_length /* I Frame length */
-);
-
-/* Shell encoder, operates on one shell code frame of 16 pulses */
-void silk_shell_encoder(
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- const opus_int *pulses0 /* I data: nonnegative pulse amplitudes */
-);
-
-/* Shell decoder, operates on one shell code frame of 16 pulses */
-void silk_shell_decoder(
- opus_int16 *pulses0, /* O data: nonnegative pulse amplitudes */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- const opus_int pulses4 /* I number of pulses per pulse-subframe */
-);
-
-/* Gain scalar quantization with hysteresis, uniform on log scale */
-void silk_gains_quant(
- opus_int8 ind[ MAX_NB_SUBFR ], /* O gain indices */
- opus_int32 gain_Q16[ MAX_NB_SUBFR ], /* I/O gains (quantized out) */
- opus_int8 *prev_ind, /* I/O last index in previous frame */
- const opus_int conditional, /* I first gain is delta coded if 1 */
- const opus_int nb_subfr /* I number of subframes */
-);
-
-/* Gains scalar dequantization, uniform on log scale */
-void silk_gains_dequant(
- opus_int32 gain_Q16[ MAX_NB_SUBFR ], /* O quantized gains */
- const opus_int8 ind[ MAX_NB_SUBFR ], /* I gain indices */
- opus_int8 *prev_ind, /* I/O last index in previous frame */
- const opus_int conditional, /* I first gain is delta coded if 1 */
- const opus_int nb_subfr /* I number of subframes */
-);
-
-/* Compute unique identifier of gain indices vector */
-opus_int32 silk_gains_ID( /* O returns unique identifier of gains */
- const opus_int8 ind[ MAX_NB_SUBFR ], /* I gain indices */
- const opus_int nb_subfr /* I number of subframes */
-);
-
-/* Interpolate two vectors */
-void silk_interpolate(
- opus_int16 xi[ MAX_LPC_ORDER ], /* O interpolated vector */
- const opus_int16 x0[ MAX_LPC_ORDER ], /* I first vector */
- const opus_int16 x1[ MAX_LPC_ORDER ], /* I second vector */
- const opus_int ifact_Q2, /* I interp. factor, weight on 2nd vector */
- const opus_int d /* I number of parameters */
-);
-
-/* LTP tap quantizer */
-void silk_quant_LTP_gains(
- opus_int16 B_Q14[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (un)quantized LTP gains */
- opus_int8 cbk_index[ MAX_NB_SUBFR ], /* O Codebook Index */
- opus_int8 *periodicity_index, /* O Periodicity Index */
- opus_int32 *sum_gain_dB_Q7, /* I/O Cumulative max prediction gain */
- const opus_int32 W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ], /* I Error Weights in Q18 */
- opus_int mu_Q9, /* I Mu value (R/D tradeoff) */
- opus_int lowComplexity, /* I Flag for low complexity */
- const opus_int nb_subfr, /* I number of subframes */
- int arch /* I Run-time architecture */
-);
-
-/* Entropy constrained matrix-weighted VQ, for a single input data vector */
-void silk_VQ_WMat_EC_c(
- opus_int8 *ind, /* O index of best codebook vector */
- opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */
- opus_int *gain_Q7, /* O sum of absolute LTP coefficients */
- const opus_int16 *in_Q14, /* I input vector to be quantized */
- const opus_int32 *W_Q18, /* I weighting matrix */
- const opus_int8 *cb_Q7, /* I codebook */
- const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */
- const opus_uint8 *cl_Q5, /* I code length for each codebook vector */
- const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */
- const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */
- opus_int L /* I number of vectors in codebook */
-);
-
-#if !defined(OVERRIDE_silk_VQ_WMat_EC)
-#define silk_VQ_WMat_EC(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \
- mu_Q9, max_gain_Q7, L, arch) \
- ((void)(arch),silk_VQ_WMat_EC_c(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \
- mu_Q9, max_gain_Q7, L))
-#endif
-
-/************************************/
-/* Noise shaping quantization (NSQ) */
-/************************************/
-
-void silk_NSQ_c(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-);
-
-#if !defined(OVERRIDE_silk_NSQ)
-#define silk_NSQ(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14, arch) \
- ((void)(arch),silk_NSQ_c(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14))
-#endif
-
-/* Noise shaping using delayed decision */
-void silk_NSQ_del_dec_c(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-);
-
-#if !defined(OVERRIDE_silk_NSQ_del_dec)
-#define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14, arch) \
- ((void)(arch),silk_NSQ_del_dec_c(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14))
-#endif
-
-/************/
-/* Silk VAD */
-/************/
-/* Initialize the Silk VAD */
-opus_int silk_VAD_Init( /* O Return value, 0 if success */
- silk_VAD_state *psSilk_VAD /* I/O Pointer to Silk VAD state */
-);
-
-/* Get speech activity level in Q8 */
-opus_int silk_VAD_GetSA_Q8_c( /* O Return value, 0 if success */
- silk_encoder_state *psEncC, /* I/O Encoder state */
- const opus_int16 pIn[] /* I PCM input */
-);
-
-#if !defined(OVERRIDE_silk_VAD_GetSA_Q8)
-#define silk_VAD_GetSA_Q8(psEnC, pIn, arch) ((void)(arch),silk_VAD_GetSA_Q8_c(psEnC, pIn))
-#endif
-
-/* Low-pass filter with variable cutoff frequency based on */
-/* piece-wise linear interpolation between elliptic filters */
-/* Start by setting transition_frame_no = 1; */
-void silk_LP_variable_cutoff(
- silk_LP_state *psLP, /* I/O LP filter state */
- opus_int16 *frame, /* I/O Low-pass filtered output signal */
- const opus_int frame_length /* I Frame length */
-);
-
-/******************/
-/* NLSF Quantizer */
-/******************/
-/* Limit, stabilize, convert and quantize NLSFs */
-void silk_process_NLSFs(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- opus_int16 PredCoef_Q12[ 2 ][ MAX_LPC_ORDER ], /* O Prediction coefficients */
- opus_int16 pNLSF_Q15[ MAX_LPC_ORDER ], /* I/O Normalized LSFs (quant out) (0 - (2^15-1)) */
- const opus_int16 prev_NLSFq_Q15[ MAX_LPC_ORDER ] /* I Previous Normalized LSFs (0 - (2^15-1)) */
-);
-
-opus_int32 silk_NLSF_encode( /* O Returns RD value in Q25 */
- opus_int8 *NLSFIndices, /* I Codebook path vector [ LPC_ORDER + 1 ] */
- opus_int16 *pNLSF_Q15, /* I/O Quantized NLSF vector [ LPC_ORDER ] */
- const silk_NLSF_CB_struct *psNLSF_CB, /* I Codebook object */
- const opus_int16 *pW_QW, /* I NLSF weight vector [ LPC_ORDER ] */
- const opus_int NLSF_mu_Q20, /* I Rate weight for the RD optimization */
- const opus_int nSurvivors, /* I Max survivors after first stage */
- const opus_int signalType /* I Signal type: 0/1/2 */
-);
-
-/* Compute quantization errors for an LPC_order element input vector for a VQ codebook */
-void silk_NLSF_VQ(
- opus_int32 err_Q26[], /* O Quantization errors [K] */
- const opus_int16 in_Q15[], /* I Input vectors to be quantized [LPC_order] */
- const opus_uint8 pCB_Q8[], /* I Codebook vectors [K*LPC_order] */
- const opus_int K, /* I Number of codebook vectors */
- const opus_int LPC_order /* I Number of LPCs */
-);
-
-/* Delayed-decision quantizer for NLSF residuals */
-opus_int32 silk_NLSF_del_dec_quant( /* O Returns RD value in Q25 */
- opus_int8 indices[], /* O Quantization indices [ order ] */
- const opus_int16 x_Q10[], /* I Input [ order ] */
- const opus_int16 w_Q5[], /* I Weights [ order ] */
- const opus_uint8 pred_coef_Q8[], /* I Backward predictor coefs [ order ] */
- const opus_int16 ec_ix[], /* I Indices to entropy coding tables [ order ] */
- const opus_uint8 ec_rates_Q5[], /* I Rates [] */
- const opus_int quant_step_size_Q16, /* I Quantization step size */
- const opus_int16 inv_quant_step_size_Q6, /* I Inverse quantization step size */
- const opus_int32 mu_Q20, /* I R/D tradeoff */
- const opus_int16 order /* I Number of input values */
-);
-
-/* Unpack predictor values and indices for entropy coding tables */
-void silk_NLSF_unpack(
- opus_int16 ec_ix[], /* O Indices to entropy tables [ LPC_ORDER ] */
- opus_uint8 pred_Q8[], /* O LSF predictor [ LPC_ORDER ] */
- const silk_NLSF_CB_struct *psNLSF_CB, /* I Codebook object */
- const opus_int CB1_index /* I Index of vector in first LSF codebook */
-);
-
-/***********************/
-/* NLSF vector decoder */
-/***********************/
-void silk_NLSF_decode(
- opus_int16 *pNLSF_Q15, /* O Quantized NLSF vector [ LPC_ORDER ] */
- opus_int8 *NLSFIndices, /* I Codebook path vector [ LPC_ORDER + 1 ] */
- const silk_NLSF_CB_struct *psNLSF_CB /* I Codebook object */
-);
-
-/****************************************************/
-/* Decoder Functions */
-/****************************************************/
-opus_int silk_init_decoder(
- silk_decoder_state *psDec /* I/O Decoder state pointer */
-);
-
-/* Set decoder sampling rate */
-opus_int silk_decoder_set_fs(
- silk_decoder_state *psDec, /* I/O Decoder state pointer */
- opus_int fs_kHz, /* I Sampling frequency (kHz) */
- opus_int32 fs_API_Hz /* I API Sampling frequency (Hz) */
-);
-
-/****************/
-/* Decode frame */
-/****************/
-opus_int silk_decode_frame(
- silk_decoder_state *psDec, /* I/O Pointer to Silk decoder state */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int16 pOut[], /* O Pointer to output speech frame */
- opus_int32 *pN, /* O Pointer to size of output frame */
- opus_int lostFlag, /* I 0: no loss, 1 loss, 2 decode fec */
- opus_int condCoding, /* I The type of conditional coding to use */
- int arch /* I Run-time architecture */
-);
-
-/* Decode indices from bitstream */
-void silk_decode_indices(
- silk_decoder_state *psDec, /* I/O State */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int FrameIndex, /* I Frame number */
- opus_int decode_LBRR, /* I Flag indicating LBRR data is being decoded */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-/* Decode parameters from payload */
-void silk_decode_parameters(
- silk_decoder_state *psDec, /* I/O State */
- silk_decoder_control *psDecCtrl, /* I/O Decoder control */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-/* Core decoder. Performs inverse NSQ operation LTP + LPC */
-void silk_decode_core(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl, /* I Decoder control */
- opus_int16 xq[], /* O Decoded speech */
- const opus_int16 pulses[ MAX_FRAME_LENGTH ], /* I Pulse signal */
- int arch /* I Run-time architecture */
-);
-
-/* Decode quantization indices of excitation (Shell coding) */
-void silk_decode_pulses(
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int16 pulses[], /* O Excitation signal */
- const opus_int signalType, /* I Sigtype */
- const opus_int quantOffsetType, /* I quantOffsetType */
- const opus_int frame_length /* I Frame length */
-);
-
-/******************/
-/* CNG */
-/******************/
-
-/* Reset CNG */
-void silk_CNG_Reset(
- silk_decoder_state *psDec /* I/O Decoder state */
-);
-
-/* Updates CNG estimate, and applies the CNG when packet was lost */
-void silk_CNG(
- silk_decoder_state *psDec, /* I/O Decoder state */
- silk_decoder_control *psDecCtrl, /* I/O Decoder control */
- opus_int16 frame[], /* I/O Signal */
- opus_int length /* I Length of residual */
-);
-
-/* Encoding of various parameters */
-void silk_encode_indices(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- opus_int FrameIndex, /* I Frame number */
- opus_int encode_LBRR, /* I Flag indicating LBRR data is being encoded */
- opus_int condCoding /* I The type of conditional coding to use */
-);
-
-#endif
diff --git a/thirdparty/opus/silk/mips/NSQ_del_dec_mipsr1.h b/thirdparty/opus/silk/mips/NSQ_del_dec_mipsr1.h
deleted file mode 100644
index ad1cfe2a9b..0000000000
--- a/thirdparty/opus/silk/mips/NSQ_del_dec_mipsr1.h
+++ /dev/null
@@ -1,409 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef __NSQ_DEL_DEC_MIPSR1_H__
-#define __NSQ_DEL_DEC_MIPSR1_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-
-#define OVERRIDE_silk_noise_shape_quantizer_del_dec
-static inline void silk_noise_shape_quantizer_del_dec(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP filter state */
- opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int Lambda_Q10, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int subfr, /* I Subframe number */
- opus_int shapingLPCOrder, /* I Shaping LPC filter order */
- opus_int predictLPCOrder, /* I Prediction filter order */
- opus_int warping_Q16, /* I */
- opus_int nStatesDelayedDecision, /* I Number of states in decision tree */
- opus_int *smpl_buf_idx, /* I Index to newest samples in buffers */
- opus_int decisionDelay, /* I */
- int arch /* I */
-)
-{
- opus_int i, j, k, Winner_ind, RDmin_ind, RDmax_ind, last_smple_idx;
- opus_int32 Winner_rand_state;
- opus_int32 LTP_pred_Q14, LPC_pred_Q14, n_AR_Q14, n_LTP_Q14;
- opus_int32 n_LF_Q14, r_Q10, rr_Q10, rd1_Q10, rd2_Q10, RDmin_Q10, RDmax_Q10;
- opus_int32 q1_Q0, q1_Q10, q2_Q10, exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10;
- opus_int32 tmp1, tmp2, sLF_AR_shp_Q14;
- opus_int32 *pred_lag_ptr, *shp_lag_ptr, *psLPC_Q14;
- NSQ_sample_struct psSampleState[ MAX_DEL_DEC_STATES ][ 2 ];
- NSQ_del_dec_struct *psDD;
- NSQ_sample_struct *psSS;
- opus_int16 b_Q14_0, b_Q14_1, b_Q14_2, b_Q14_3, b_Q14_4;
- opus_int16 a_Q12_0, a_Q12_1, a_Q12_2, a_Q12_3, a_Q12_4, a_Q12_5, a_Q12_6;
- opus_int16 a_Q12_7, a_Q12_8, a_Q12_9, a_Q12_10, a_Q12_11, a_Q12_12, a_Q12_13;
- opus_int16 a_Q12_14, a_Q12_15;
-
- opus_int32 cur, prev, next;
-
- /*Unused.*/
- (void)arch;
-
- //Intialize b_Q14 variables
- b_Q14_0 = b_Q14[ 0 ];
- b_Q14_1 = b_Q14[ 1 ];
- b_Q14_2 = b_Q14[ 2 ];
- b_Q14_3 = b_Q14[ 3 ];
- b_Q14_4 = b_Q14[ 4 ];
-
- //Intialize a_Q12 variables
- a_Q12_0 = a_Q12[0];
- a_Q12_1 = a_Q12[1];
- a_Q12_2 = a_Q12[2];
- a_Q12_3 = a_Q12[3];
- a_Q12_4 = a_Q12[4];
- a_Q12_5 = a_Q12[5];
- a_Q12_6 = a_Q12[6];
- a_Q12_7 = a_Q12[7];
- a_Q12_8 = a_Q12[8];
- a_Q12_9 = a_Q12[9];
- a_Q12_10 = a_Q12[10];
- a_Q12_11 = a_Q12[11];
- a_Q12_12 = a_Q12[12];
- a_Q12_13 = a_Q12[13];
- a_Q12_14 = a_Q12[14];
- a_Q12_15 = a_Q12[15];
-
- long long temp64;
-
- silk_assert( nStatesDelayedDecision > 0 );
-
- shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ];
- pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ];
- Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 );
-
- for( i = 0; i < length; i++ ) {
- /* Perform common calculations used in all states */
-
- /* Long-term prediction */
- if( signalType == TYPE_VOICED ) {
- /* Unrolled loop */
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- temp64 = __builtin_mips_mult(pred_lag_ptr[ 0 ], b_Q14_0 );
- temp64 = __builtin_mips_madd( temp64, pred_lag_ptr[ -1 ], b_Q14_1 );
- temp64 = __builtin_mips_madd( temp64, pred_lag_ptr[ -2 ], b_Q14_2 );
- temp64 = __builtin_mips_madd( temp64, pred_lag_ptr[ -3 ], b_Q14_3 );
- temp64 = __builtin_mips_madd( temp64, pred_lag_ptr[ -4 ], b_Q14_4 );
- temp64 += 32768;
- LTP_pred_Q14 = __builtin_mips_extr_w(temp64, 16);
- LTP_pred_Q14 = silk_LSHIFT( LTP_pred_Q14, 1 ); /* Q13 -> Q14 */
- pred_lag_ptr++;
- } else {
- LTP_pred_Q14 = 0;
- }
-
- /* Long-term shaping */
- if( lag > 0 ) {
- /* Symmetric, packed FIR coefficients */
- n_LTP_Q14 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 );
- n_LTP_Q14 = silk_SMLAWT( n_LTP_Q14, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 );
- n_LTP_Q14 = silk_SUB_LSHIFT32( LTP_pred_Q14, n_LTP_Q14, 2 ); /* Q12 -> Q14 */
- shp_lag_ptr++;
- } else {
- n_LTP_Q14 = 0;
- }
-
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- /* Delayed decision state */
- psDD = &psDelDec[ k ];
-
- /* Sample state */
- psSS = psSampleState[ k ];
-
- /* Generate dither */
- psDD->Seed = silk_RAND( psDD->Seed );
-
- /* Pointer used in short term prediction and shaping */
- psLPC_Q14 = &psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH - 1 + i ];
- /* Short-term prediction */
- silk_assert( predictLPCOrder == 10 || predictLPCOrder == 16 );
- temp64 = __builtin_mips_mult(psLPC_Q14[ 0 ], a_Q12_0 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -1 ], a_Q12_1 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -2 ], a_Q12_2 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -3 ], a_Q12_3 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -4 ], a_Q12_4 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -5 ], a_Q12_5 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -6 ], a_Q12_6 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -7 ], a_Q12_7 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -8 ], a_Q12_8 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -9 ], a_Q12_9 );
- if( predictLPCOrder == 16 ) {
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -10 ], a_Q12_10 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -11 ], a_Q12_11 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -12 ], a_Q12_12 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -13 ], a_Q12_13 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -14 ], a_Q12_14 );
- temp64 = __builtin_mips_madd( temp64, psLPC_Q14[ -15 ], a_Q12_15 );
- }
- temp64 += 32768;
- LPC_pred_Q14 = __builtin_mips_extr_w(temp64, 16);
-
- LPC_pred_Q14 = silk_LSHIFT( LPC_pred_Q14, 4 ); /* Q10 -> Q14 */
-
- /* Noise shape feedback */
- silk_assert( ( shapingLPCOrder & 1 ) == 0 ); /* check that order is even */
- /* Output of lowpass section */
- tmp2 = silk_SMLAWB( psLPC_Q14[ 0 ], psDD->sAR2_Q14[ 0 ], warping_Q16 );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], psDD->sAR2_Q14[ 1 ] - tmp2, warping_Q16 );
- psDD->sAR2_Q14[ 0 ] = tmp2;
-
- temp64 = __builtin_mips_mult(tmp2, AR_shp_Q13[ 0 ] );
-
- prev = psDD->sAR2_Q14[ 1 ];
-
- /* Loop over allpass sections */
- for( j = 2; j < shapingLPCOrder; j += 2 ) {
- cur = psDD->sAR2_Q14[ j ];
- next = psDD->sAR2_Q14[ j+1 ];
- /* Output of allpass section */
- tmp2 = silk_SMLAWB( prev, cur - tmp1, warping_Q16 );
- psDD->sAR2_Q14[ j - 1 ] = tmp1;
- temp64 = __builtin_mips_madd( temp64, tmp1, AR_shp_Q13[ j - 1 ] );
- temp64 = __builtin_mips_madd( temp64, tmp2, AR_shp_Q13[ j ] );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( cur, next - tmp2, warping_Q16 );
- psDD->sAR2_Q14[ j + 0 ] = tmp2;
- prev = next;
- }
- psDD->sAR2_Q14[ shapingLPCOrder - 1 ] = tmp1;
- temp64 = __builtin_mips_madd( temp64, tmp1, AR_shp_Q13[ shapingLPCOrder - 1 ] );
- temp64 += 32768;
- n_AR_Q14 = __builtin_mips_extr_w(temp64, 16);
- n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 1 ); /* Q11 -> Q12 */
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, psDD->LF_AR_Q14, Tilt_Q14 ); /* Q12 */
- n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 2 ); /* Q12 -> Q14 */
-
- n_LF_Q14 = silk_SMULWB( psDD->Shape_Q14[ *smpl_buf_idx ], LF_shp_Q14 ); /* Q12 */
- n_LF_Q14 = silk_SMLAWT( n_LF_Q14, psDD->LF_AR_Q14, LF_shp_Q14 ); /* Q12 */
- n_LF_Q14 = silk_LSHIFT( n_LF_Q14, 2 ); /* Q12 -> Q14 */
-
- /* Input minus prediction plus noise feedback */
- /* r = x[ i ] - LTP_pred - LPC_pred + n_AR + n_Tilt + n_LF + n_LTP */
- tmp1 = silk_ADD32( n_AR_Q14, n_LF_Q14 ); /* Q14 */
- tmp2 = silk_ADD32( n_LTP_Q14, LPC_pred_Q14 ); /* Q13 */
- tmp1 = silk_SUB32( tmp2, tmp1 ); /* Q13 */
- tmp1 = silk_RSHIFT_ROUND( tmp1, 4 ); /* Q10 */
-
- r_Q10 = silk_SUB32( x_Q10[ i ], tmp1 ); /* residual error Q10 */
-
- /* Flip sign depending on dither */
- if ( psDD->Seed < 0 ) {
- r_Q10 = -r_Q10;
- }
- r_Q10 = silk_LIMIT_32( r_Q10, -(31 << 10), 30 << 10 );
-
- /* Find two quantization level candidates and measure their rate-distortion */
- q1_Q10 = silk_SUB32( r_Q10, offset_Q10 );
- q1_Q0 = silk_RSHIFT( q1_Q10, 10 );
- if( q1_Q0 > 0 ) {
- q1_Q10 = silk_SUB32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 );
- q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 );
- q2_Q10 = silk_ADD32( q1_Q10, 1024 );
- rd1_Q10 = silk_SMULBB( q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else if( q1_Q0 == 0 ) {
- q1_Q10 = offset_Q10;
- q2_Q10 = silk_ADD32( q1_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q10 = silk_SMULBB( q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else if( q1_Q0 == -1 ) {
- q2_Q10 = offset_Q10;
- q1_Q10 = silk_SUB32( q2_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q10 = silk_SMULBB( -q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else { /* q1_Q0 < -1 */
- q1_Q10 = silk_ADD32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 );
- q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 );
- q2_Q10 = silk_ADD32( q1_Q10, 1024 );
- rd1_Q10 = silk_SMULBB( -q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( -q2_Q10, Lambda_Q10 );
- }
- rr_Q10 = silk_SUB32( r_Q10, q1_Q10 );
- rd1_Q10 = silk_RSHIFT( silk_SMLABB( rd1_Q10, rr_Q10, rr_Q10 ), 10 );
- rr_Q10 = silk_SUB32( r_Q10, q2_Q10 );
- rd2_Q10 = silk_RSHIFT( silk_SMLABB( rd2_Q10, rr_Q10, rr_Q10 ), 10 );
-
- if( rd1_Q10 < rd2_Q10 ) {
- psSS[ 0 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd1_Q10 );
- psSS[ 1 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd2_Q10 );
- psSS[ 0 ].Q_Q10 = q1_Q10;
- psSS[ 1 ].Q_Q10 = q2_Q10;
- } else {
- psSS[ 0 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd2_Q10 );
- psSS[ 1 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd1_Q10 );
- psSS[ 0 ].Q_Q10 = q2_Q10;
- psSS[ 1 ].Q_Q10 = q1_Q10;
- }
-
- /* Update states for best quantization */
-
- /* Quantized excitation */
- exc_Q14 = silk_LSHIFT32( psSS[ 0 ].Q_Q10, 4 );
- if ( psDD->Seed < 0 ) {
- exc_Q14 = -exc_Q14;
- }
-
- /* Add predictions */
- LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
- xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 );
-
- /* Update states */
- sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 );
- psSS[ 0 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 );
- psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14;
- psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14;
- psSS[ 0 ].xq_Q14 = xq_Q14;
-
- /* Update states for second best quantization */
-
- /* Quantized excitation */
- exc_Q14 = silk_LSHIFT32( psSS[ 1 ].Q_Q10, 4 );
- if ( psDD->Seed < 0 ) {
- exc_Q14 = -exc_Q14;
- }
-
-
- /* Add predictions */
- LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
- xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 );
-
- /* Update states */
- sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 );
- psSS[ 1 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 );
- psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14;
- psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14;
- psSS[ 1 ].xq_Q14 = xq_Q14;
- }
-
- *smpl_buf_idx = ( *smpl_buf_idx - 1 ) & DECISION_DELAY_MASK; /* Index to newest samples */
- last_smple_idx = ( *smpl_buf_idx + decisionDelay ) & DECISION_DELAY_MASK; /* Index to decisionDelay old samples */
-
- /* Find winner */
- RDmin_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10;
- Winner_ind = 0;
- for( k = 1; k < nStatesDelayedDecision; k++ ) {
- if( psSampleState[ k ][ 0 ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psSampleState[ k ][ 0 ].RD_Q10;
- Winner_ind = k;
- }
- }
-
- /* Increase RD values of expired states */
- Winner_rand_state = psDelDec[ Winner_ind ].RandState[ last_smple_idx ];
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- if( psDelDec[ k ].RandState[ last_smple_idx ] != Winner_rand_state ) {
- psSampleState[ k ][ 0 ].RD_Q10 = silk_ADD32( psSampleState[ k ][ 0 ].RD_Q10, silk_int32_MAX >> 4 );
- psSampleState[ k ][ 1 ].RD_Q10 = silk_ADD32( psSampleState[ k ][ 1 ].RD_Q10, silk_int32_MAX >> 4 );
- silk_assert( psSampleState[ k ][ 0 ].RD_Q10 >= 0 );
- }
- }
-
- /* Find worst in first set and best in second set */
- RDmax_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10;
- RDmin_Q10 = psSampleState[ 0 ][ 1 ].RD_Q10;
- RDmax_ind = 0;
- RDmin_ind = 0;
- for( k = 1; k < nStatesDelayedDecision; k++ ) {
- /* find worst in first set */
- if( psSampleState[ k ][ 0 ].RD_Q10 > RDmax_Q10 ) {
- RDmax_Q10 = psSampleState[ k ][ 0 ].RD_Q10;
- RDmax_ind = k;
- }
- /* find best in second set */
- if( psSampleState[ k ][ 1 ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psSampleState[ k ][ 1 ].RD_Q10;
- RDmin_ind = k;
- }
- }
-
- /* Replace a state if best from second set outperforms worst in first set */
- if( RDmin_Q10 < RDmax_Q10 ) {
- silk_memcpy( ( (opus_int32 *)&psDelDec[ RDmax_ind ] ) + i,
- ( (opus_int32 *)&psDelDec[ RDmin_ind ] ) + i, sizeof( NSQ_del_dec_struct ) - i * sizeof( opus_int32) );
- silk_memcpy( &psSampleState[ RDmax_ind ][ 0 ], &psSampleState[ RDmin_ind ][ 1 ], sizeof( NSQ_sample_struct ) );
- }
-
- /* Write samples from winner to output and long-term filter states */
- psDD = &psDelDec[ Winner_ind ];
- if( subfr > 0 || i >= decisionDelay ) {
- pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 );
- xq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND(
- silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], delayedGain_Q10[ last_smple_idx ] ), 8 ) );
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay ] = psDD->Shape_Q14[ last_smple_idx ];
- sLTP_Q15[ NSQ->sLTP_buf_idx - decisionDelay ] = psDD->Pred_Q15[ last_smple_idx ];
- }
- NSQ->sLTP_shp_buf_idx++;
- NSQ->sLTP_buf_idx++;
-
- /* Update states */
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
- psSS = &psSampleState[ k ][ 0 ];
- psDD->LF_AR_Q14 = psSS->LF_AR_Q14;
- psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH + i ] = psSS->xq_Q14;
- psDD->Xq_Q14[ *smpl_buf_idx ] = psSS->xq_Q14;
- psDD->Q_Q10[ *smpl_buf_idx ] = psSS->Q_Q10;
- psDD->Pred_Q15[ *smpl_buf_idx ] = silk_LSHIFT32( psSS->LPC_exc_Q14, 1 );
- psDD->Shape_Q14[ *smpl_buf_idx ] = psSS->sLTP_shp_Q14;
- psDD->Seed = silk_ADD32_ovflw( psDD->Seed, silk_RSHIFT_ROUND( psSS->Q_Q10, 10 ) );
- psDD->RandState[ *smpl_buf_idx ] = psDD->Seed;
- psDD->RD_Q10 = psSS->RD_Q10;
- }
- delayedGain_Q10[ *smpl_buf_idx ] = Gain_Q10;
- }
- /* Update LPC states */
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
- silk_memcpy( psDD->sLPC_Q14, &psDD->sLPC_Q14[ length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
- }
-}
-
-#endif /* __NSQ_DEL_DEC_MIPSR1_H__ */
diff --git a/thirdparty/opus/silk/mips/macros_mipsr1.h b/thirdparty/opus/silk/mips/macros_mipsr1.h
deleted file mode 100644
index 12ed981a6e..0000000000
--- a/thirdparty/opus/silk/mips/macros_mipsr1.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-
-#ifndef __SILK_MACROS_MIPSR1_H__
-#define __SILK_MACROS_MIPSR1_H__
-
-#define mips_clz(x) __builtin_clz(x)
-
-#undef silk_SMULWB
-static inline int silk_SMULWB(int a, int b)
-{
- long long ac;
- int c;
-
- ac = __builtin_mips_mult(a, (opus_int32)(opus_int16)b);
- c = __builtin_mips_extr_w(ac, 16);
-
- return c;
-}
-
-#undef silk_SMLAWB
-#define silk_SMLAWB(a32, b32, c32) ((a32) + silk_SMULWB(b32, c32))
-
-#undef silk_SMULWW
-static inline int silk_SMULWW(int a, int b)
-{
- long long ac;
- int c;
-
- ac = __builtin_mips_mult(a, b);
- c = __builtin_mips_extr_w(ac, 16);
-
- return c;
-}
-
-#undef silk_SMLAWW
-static inline int silk_SMLAWW(int a, int b, int c)
-{
- long long ac;
- int res;
-
- ac = __builtin_mips_mult(b, c);
- res = __builtin_mips_extr_w(ac, 16);
- res += a;
-
- return res;
-}
-
-#define OVERRIDE_silk_CLZ16
-static inline opus_int32 silk_CLZ16(opus_int16 in16)
-{
- int re32;
- opus_int32 in32 = (opus_int32 )in16;
- re32 = mips_clz(in32);
- re32-=16;
- return re32;
-}
-
-#define OVERRIDE_silk_CLZ32
-static inline opus_int32 silk_CLZ32(opus_int32 in32)
-{
- int re32;
- re32 = mips_clz(in32);
- return re32;
-}
-
-#endif /* __SILK_MACROS_MIPSR1_H__ */
diff --git a/thirdparty/opus/silk/mips/sigproc_fix_mipsr1.h b/thirdparty/opus/silk/mips/sigproc_fix_mipsr1.h
deleted file mode 100644
index 3b0a695365..0000000000
--- a/thirdparty/opus/silk/mips/sigproc_fix_mipsr1.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_SIGPROC_FIX_MIPSR1_H
-#define SILK_SIGPROC_FIX_MIPSR1_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#undef silk_SAT16
-static inline short int silk_SAT16(int a)
-{
- int c;
- c = __builtin_mips_shll_s_w(a, 16);
- c = c>>16;
-
- return c;
-}
-
-#undef silk_LSHIFT_SAT32
-static inline int silk_LSHIFT_SAT32(int a, int shift)
-{
- int r;
-
- r = __builtin_mips_shll_s_w(a, shift);
-
- return r;
-}
-
-#undef silk_RSHIFT_ROUND
-static inline int silk_RSHIFT_ROUND(int a, int shift)
-{
- int r;
-
- r = __builtin_mips_shra_r_w(a, shift);
- return r;
-}
-
-#endif /* SILK_SIGPROC_FIX_MIPSR1_H */
diff --git a/thirdparty/opus/silk/pitch_est_defines.h b/thirdparty/opus/silk/pitch_est_defines.h
deleted file mode 100644
index e1e4b5d768..0000000000
--- a/thirdparty/opus/silk/pitch_est_defines.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_PE_DEFINES_H
-#define SILK_PE_DEFINES_H
-
-#include "SigProc_FIX.h"
-
-/********************************************************/
-/* Definitions for pitch estimator */
-/********************************************************/
-
-#define PE_MAX_FS_KHZ 16 /* Maximum sampling frequency used */
-
-#define PE_MAX_NB_SUBFR 4
-#define PE_SUBFR_LENGTH_MS 5 /* 5 ms */
-
-#define PE_LTP_MEM_LENGTH_MS ( 4 * PE_SUBFR_LENGTH_MS )
-
-#define PE_MAX_FRAME_LENGTH_MS ( PE_LTP_MEM_LENGTH_MS + PE_MAX_NB_SUBFR * PE_SUBFR_LENGTH_MS )
-#define PE_MAX_FRAME_LENGTH ( PE_MAX_FRAME_LENGTH_MS * PE_MAX_FS_KHZ )
-#define PE_MAX_FRAME_LENGTH_ST_1 ( PE_MAX_FRAME_LENGTH >> 2 )
-#define PE_MAX_FRAME_LENGTH_ST_2 ( PE_MAX_FRAME_LENGTH >> 1 )
-
-#define PE_MAX_LAG_MS 18 /* 18 ms -> 56 Hz */
-#define PE_MIN_LAG_MS 2 /* 2 ms -> 500 Hz */
-#define PE_MAX_LAG ( PE_MAX_LAG_MS * PE_MAX_FS_KHZ )
-#define PE_MIN_LAG ( PE_MIN_LAG_MS * PE_MAX_FS_KHZ )
-
-#define PE_D_SRCH_LENGTH 24
-
-#define PE_NB_STAGE3_LAGS 5
-
-#define PE_NB_CBKS_STAGE2 3
-#define PE_NB_CBKS_STAGE2_EXT 11
-
-#define PE_NB_CBKS_STAGE3_MAX 34
-#define PE_NB_CBKS_STAGE3_MID 24
-#define PE_NB_CBKS_STAGE3_MIN 16
-
-#define PE_NB_CBKS_STAGE3_10MS 12
-#define PE_NB_CBKS_STAGE2_10MS 3
-
-#define PE_SHORTLAG_BIAS 0.2f /* for logarithmic weighting */
-#define PE_PREVLAG_BIAS 0.2f /* for logarithmic weighting */
-#define PE_FLATCONTOUR_BIAS 0.05f
-
-#define SILK_PE_MIN_COMPLEX 0
-#define SILK_PE_MID_COMPLEX 1
-#define SILK_PE_MAX_COMPLEX 2
-
-/* Tables for 20 ms frames */
-extern const opus_int8 silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ];
-extern const opus_int8 silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ];
-extern const opus_int8 silk_Lag_range_stage3[ SILK_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ];
-extern const opus_int8 silk_nb_cbk_searchs_stage3[ SILK_PE_MAX_COMPLEX + 1 ];
-
-/* Tables for 10 ms frames */
-extern const opus_int8 silk_CB_lags_stage2_10_ms[ PE_MAX_NB_SUBFR >> 1][ 3 ];
-extern const opus_int8 silk_CB_lags_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 12 ];
-extern const opus_int8 silk_Lag_range_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 2 ];
-
-#endif
-
diff --git a/thirdparty/opus/silk/pitch_est_tables.c b/thirdparty/opus/silk/pitch_est_tables.c
deleted file mode 100644
index 81a8bacaca..0000000000
--- a/thirdparty/opus/silk/pitch_est_tables.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "typedef.h"
-#include "pitch_est_defines.h"
-
-const opus_int8 silk_CB_lags_stage2_10_ms[ PE_MAX_NB_SUBFR >> 1][ PE_NB_CBKS_STAGE2_10MS ] =
-{
- {0, 1, 0},
- {0, 0, 1}
-};
-
-const opus_int8 silk_CB_lags_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ PE_NB_CBKS_STAGE3_10MS ] =
-{
- { 0, 0, 1,-1, 1,-1, 2,-2, 2,-2, 3,-3},
- { 0, 1, 0, 1,-1, 2,-1, 2,-2, 3,-2, 3}
-};
-
-const opus_int8 silk_Lag_range_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 2 ] =
-{
- {-3, 7},
- {-2, 7}
-};
-
-const opus_int8 silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ] =
-{
- {0, 2,-1,-1,-1, 0, 0, 1, 1, 0, 1},
- {0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0},
- {0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0},
- {0,-1, 2, 1, 0, 1, 1, 0, 0,-1,-1}
-};
-
-const opus_int8 silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ] =
-{
- {0, 0, 1,-1, 0, 1,-1, 0,-1, 1,-2, 2,-2,-2, 2,-3, 2, 3,-3,-4, 3,-4, 4, 4,-5, 5,-6,-5, 6,-7, 6, 5, 8,-9},
- {0, 0, 1, 0, 0, 0, 0, 0, 0, 0,-1, 1, 0, 0, 1,-1, 0, 1,-1,-1, 1,-1, 2, 1,-1, 2,-2,-2, 2,-2, 2, 2, 3,-3},
- {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1,-1, 1, 0, 0, 2, 1,-1, 2,-1,-1, 2,-1, 2, 2,-1, 3,-2,-2,-2, 3},
- {0, 1, 0, 0, 1, 0, 1,-1, 2,-1, 2,-1, 2, 3,-2, 3,-2,-2, 4, 4,-3, 5,-3,-4, 6,-4, 6, 5,-5, 8,-6,-5,-7, 9}
-};
-
-const opus_int8 silk_Lag_range_stage3[ SILK_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ] =
-{
- /* Lags to search for low number of stage3 cbks */
- {
- {-5,8},
- {-1,6},
- {-1,6},
- {-4,10}
- },
- /* Lags to search for middle number of stage3 cbks */
- {
- {-6,10},
- {-2,6},
- {-1,6},
- {-5,10}
- },
- /* Lags to search for max number of stage3 cbks */
- {
- {-9,12},
- {-3,7},
- {-2,7},
- {-7,13}
- }
-};
-
-const opus_int8 silk_nb_cbk_searchs_stage3[ SILK_PE_MAX_COMPLEX + 1 ] =
-{
- PE_NB_CBKS_STAGE3_MIN,
- PE_NB_CBKS_STAGE3_MID,
- PE_NB_CBKS_STAGE3_MAX
-};
diff --git a/thirdparty/opus/silk/process_NLSFs.c b/thirdparty/opus/silk/process_NLSFs.c
deleted file mode 100644
index 0ab71f0163..0000000000
--- a/thirdparty/opus/silk/process_NLSFs.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Limit, stabilize, convert and quantize NLSFs */
-void silk_process_NLSFs(
- silk_encoder_state *psEncC, /* I/O Encoder state */
- opus_int16 PredCoef_Q12[ 2 ][ MAX_LPC_ORDER ], /* O Prediction coefficients */
- opus_int16 pNLSF_Q15[ MAX_LPC_ORDER ], /* I/O Normalized LSFs (quant out) (0 - (2^15-1)) */
- const opus_int16 prev_NLSFq_Q15[ MAX_LPC_ORDER ] /* I Previous Normalized LSFs (0 - (2^15-1)) */
-)
-{
- opus_int i, doInterpolate;
- opus_int NLSF_mu_Q20;
- opus_int16 i_sqr_Q15;
- opus_int16 pNLSF0_temp_Q15[ MAX_LPC_ORDER ];
- opus_int16 pNLSFW_QW[ MAX_LPC_ORDER ];
- opus_int16 pNLSFW0_temp_QW[ MAX_LPC_ORDER ];
-
- silk_assert( psEncC->speech_activity_Q8 >= 0 );
- silk_assert( psEncC->speech_activity_Q8 <= SILK_FIX_CONST( 1.0, 8 ) );
- silk_assert( psEncC->useInterpolatedNLSFs == 1 || psEncC->indices.NLSFInterpCoef_Q2 == ( 1 << 2 ) );
-
- /***********************/
- /* Calculate mu values */
- /***********************/
- /* NLSF_mu = 0.003 - 0.0015 * psEnc->speech_activity; */
- NLSF_mu_Q20 = silk_SMLAWB( SILK_FIX_CONST( 0.003, 20 ), SILK_FIX_CONST( -0.001, 28 ), psEncC->speech_activity_Q8 );
- if( psEncC->nb_subfr == 2 ) {
- /* Multiply by 1.5 for 10 ms packets */
- NLSF_mu_Q20 = silk_ADD_RSHIFT( NLSF_mu_Q20, NLSF_mu_Q20, 1 );
- }
-
- silk_assert( NLSF_mu_Q20 > 0 );
- silk_assert( NLSF_mu_Q20 <= SILK_FIX_CONST( 0.005, 20 ) );
-
- /* Calculate NLSF weights */
- silk_NLSF_VQ_weights_laroia( pNLSFW_QW, pNLSF_Q15, psEncC->predictLPCOrder );
-
- /* Update NLSF weights for interpolated NLSFs */
- doInterpolate = ( psEncC->useInterpolatedNLSFs == 1 ) && ( psEncC->indices.NLSFInterpCoef_Q2 < 4 );
- if( doInterpolate ) {
- /* Calculate the interpolated NLSF vector for the first half */
- silk_interpolate( pNLSF0_temp_Q15, prev_NLSFq_Q15, pNLSF_Q15,
- psEncC->indices.NLSFInterpCoef_Q2, psEncC->predictLPCOrder );
-
- /* Calculate first half NLSF weights for the interpolated NLSFs */
- silk_NLSF_VQ_weights_laroia( pNLSFW0_temp_QW, pNLSF0_temp_Q15, psEncC->predictLPCOrder );
-
- /* Update NLSF weights with contribution from first half */
- i_sqr_Q15 = silk_LSHIFT( silk_SMULBB( psEncC->indices.NLSFInterpCoef_Q2, psEncC->indices.NLSFInterpCoef_Q2 ), 11 );
- for( i = 0; i < psEncC->predictLPCOrder; i++ ) {
- pNLSFW_QW[ i ] = silk_ADD16( silk_RSHIFT( pNLSFW_QW[ i ], 1 ), silk_RSHIFT(
- silk_SMULBB( pNLSFW0_temp_QW[ i ], i_sqr_Q15 ), 16) );
- silk_assert( pNLSFW_QW[ i ] >= 1 );
- }
- }
-
- silk_NLSF_encode( psEncC->indices.NLSFIndices, pNLSF_Q15, psEncC->psNLSF_CB, pNLSFW_QW,
- NLSF_mu_Q20, psEncC->NLSF_MSVQ_Survivors, psEncC->indices.signalType );
-
- /* Convert quantized NLSFs back to LPC coefficients */
- silk_NLSF2A( PredCoef_Q12[ 1 ], pNLSF_Q15, psEncC->predictLPCOrder );
-
- if( doInterpolate ) {
- /* Calculate the interpolated, quantized LSF vector for the first half */
- silk_interpolate( pNLSF0_temp_Q15, prev_NLSFq_Q15, pNLSF_Q15,
- psEncC->indices.NLSFInterpCoef_Q2, psEncC->predictLPCOrder );
-
- /* Convert back to LPC coefficients */
- silk_NLSF2A( PredCoef_Q12[ 0 ], pNLSF0_temp_Q15, psEncC->predictLPCOrder );
-
- } else {
- /* Copy LPC coefficients for first half from second half */
- silk_assert( psEncC->predictLPCOrder <= MAX_LPC_ORDER );
- silk_memcpy( PredCoef_Q12[ 0 ], PredCoef_Q12[ 1 ], psEncC->predictLPCOrder * sizeof( opus_int16 ) );
- }
-}
diff --git a/thirdparty/opus/silk/quant_LTP_gains.c b/thirdparty/opus/silk/quant_LTP_gains.c
deleted file mode 100644
index 513a8c4468..0000000000
--- a/thirdparty/opus/silk/quant_LTP_gains.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "tuning_parameters.h"
-
-void silk_quant_LTP_gains(
- opus_int16 B_Q14[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (un)quantized LTP gains */
- opus_int8 cbk_index[ MAX_NB_SUBFR ], /* O Codebook Index */
- opus_int8 *periodicity_index, /* O Periodicity Index */
- opus_int32 *sum_log_gain_Q7, /* I/O Cumulative max prediction gain */
- const opus_int32 W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ], /* I Error Weights in Q18 */
- opus_int mu_Q9, /* I Mu value (R/D tradeoff) */
- opus_int lowComplexity, /* I Flag for low complexity */
- const opus_int nb_subfr, /* I number of subframes */
- int arch /* I Run-time architecture */
-)
-{
- opus_int j, k, cbk_size;
- opus_int8 temp_idx[ MAX_NB_SUBFR ];
- const opus_uint8 *cl_ptr_Q5;
- const opus_int8 *cbk_ptr_Q7;
- const opus_uint8 *cbk_gain_ptr_Q7;
- const opus_int16 *b_Q14_ptr;
- const opus_int32 *W_Q18_ptr;
- opus_int32 rate_dist_Q14_subfr, rate_dist_Q14, min_rate_dist_Q14;
- opus_int32 sum_log_gain_tmp_Q7, best_sum_log_gain_Q7, max_gain_Q7, gain_Q7;
-
- /***************************************************/
- /* iterate over different codebooks with different */
- /* rates/distortions, and choose best */
- /***************************************************/
- min_rate_dist_Q14 = silk_int32_MAX;
- best_sum_log_gain_Q7 = 0;
- for( k = 0; k < 3; k++ ) {
- /* Safety margin for pitch gain control, to take into account factors
- such as state rescaling/rewhitening. */
- opus_int32 gain_safety = SILK_FIX_CONST( 0.4, 7 );
-
- cl_ptr_Q5 = silk_LTP_gain_BITS_Q5_ptrs[ k ];
- cbk_ptr_Q7 = silk_LTP_vq_ptrs_Q7[ k ];
- cbk_gain_ptr_Q7 = silk_LTP_vq_gain_ptrs_Q7[ k ];
- cbk_size = silk_LTP_vq_sizes[ k ];
-
- /* Set up pointer to first subframe */
- W_Q18_ptr = W_Q18;
- b_Q14_ptr = B_Q14;
-
- rate_dist_Q14 = 0;
- sum_log_gain_tmp_Q7 = *sum_log_gain_Q7;
- for( j = 0; j < nb_subfr; j++ ) {
- max_gain_Q7 = silk_log2lin( ( SILK_FIX_CONST( MAX_SUM_LOG_GAIN_DB / 6.0, 7 ) - sum_log_gain_tmp_Q7 )
- + SILK_FIX_CONST( 7, 7 ) ) - gain_safety;
-
- silk_VQ_WMat_EC(
- &temp_idx[ j ], /* O index of best codebook vector */
- &rate_dist_Q14_subfr, /* O best weighted quantization error + mu * rate */
- &gain_Q7, /* O sum of absolute LTP coefficients */
- b_Q14_ptr, /* I input vector to be quantized */
- W_Q18_ptr, /* I weighting matrix */
- cbk_ptr_Q7, /* I codebook */
- cbk_gain_ptr_Q7, /* I codebook effective gains */
- cl_ptr_Q5, /* I code length for each codebook vector */
- mu_Q9, /* I tradeoff between weighted error and rate */
- max_gain_Q7, /* I maximum sum of absolute LTP coefficients */
- cbk_size, /* I number of vectors in codebook */
- arch /* I Run-time architecture */
- );
-
- rate_dist_Q14 = silk_ADD_POS_SAT32( rate_dist_Q14, rate_dist_Q14_subfr );
- sum_log_gain_tmp_Q7 = silk_max(0, sum_log_gain_tmp_Q7
- + silk_lin2log( gain_safety + gain_Q7 ) - SILK_FIX_CONST( 7, 7 ));
-
- b_Q14_ptr += LTP_ORDER;
- W_Q18_ptr += LTP_ORDER * LTP_ORDER;
- }
-
- /* Avoid never finding a codebook */
- rate_dist_Q14 = silk_min( silk_int32_MAX - 1, rate_dist_Q14 );
-
- if( rate_dist_Q14 < min_rate_dist_Q14 ) {
- min_rate_dist_Q14 = rate_dist_Q14;
- *periodicity_index = (opus_int8)k;
- silk_memcpy( cbk_index, temp_idx, nb_subfr * sizeof( opus_int8 ) );
- best_sum_log_gain_Q7 = sum_log_gain_tmp_Q7;
- }
-
- /* Break early in low-complexity mode if rate distortion is below threshold */
- if( lowComplexity && ( rate_dist_Q14 < silk_LTP_gain_middle_avg_RD_Q14 ) ) {
- break;
- }
- }
-
- cbk_ptr_Q7 = silk_LTP_vq_ptrs_Q7[ *periodicity_index ];
- for( j = 0; j < nb_subfr; j++ ) {
- for( k = 0; k < LTP_ORDER; k++ ) {
- B_Q14[ j * LTP_ORDER + k ] = silk_LSHIFT( cbk_ptr_Q7[ cbk_index[ j ] * LTP_ORDER + k ], 7 );
- }
- }
- *sum_log_gain_Q7 = best_sum_log_gain_Q7;
-}
diff --git a/thirdparty/opus/silk/resampler.c b/thirdparty/opus/silk/resampler.c
deleted file mode 100644
index 374fbb3722..0000000000
--- a/thirdparty/opus/silk/resampler.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/*
- * Matrix of resampling methods used:
- * Fs_out (kHz)
- * 8 12 16 24 48
- *
- * 8 C UF U UF UF
- * 12 AF C UF U UF
- * Fs_in (kHz) 16 D AF C UF UF
- * 24 AF D AF C U
- * 48 AF AF AF D C
- *
- * C -> Copy (no resampling)
- * D -> Allpass-based 2x downsampling
- * U -> Allpass-based 2x upsampling
- * UF -> Allpass-based 2x upsampling followed by FIR interpolation
- * AF -> AR2 filter followed by FIR interpolation
- */
-
-#include "resampler_private.h"
-
-/* Tables with delay compensation values to equalize total delay for different modes */
-static const opus_int8 delay_matrix_enc[ 5 ][ 3 ] = {
-/* in \ out 8 12 16 */
-/* 8 */ { 6, 0, 3 },
-/* 12 */ { 0, 7, 3 },
-/* 16 */ { 0, 1, 10 },
-/* 24 */ { 0, 2, 6 },
-/* 48 */ { 18, 10, 12 }
-};
-
-static const opus_int8 delay_matrix_dec[ 3 ][ 5 ] = {
-/* in \ out 8 12 16 24 48 */
-/* 8 */ { 4, 0, 2, 0, 0 },
-/* 12 */ { 0, 9, 4, 7, 4 },
-/* 16 */ { 0, 3, 12, 7, 7 }
-};
-
-/* Simple way to make [8000, 12000, 16000, 24000, 48000] to [0, 1, 2, 3, 4] */
-#define rateID(R) ( ( ( ((R)>>12) - ((R)>16000) ) >> ((R)>24000) ) - 1 )
-
-#define USE_silk_resampler_copy (0)
-#define USE_silk_resampler_private_up2_HQ_wrapper (1)
-#define USE_silk_resampler_private_IIR_FIR (2)
-#define USE_silk_resampler_private_down_FIR (3)
-
-/* Initialize/reset the resampler state for a given pair of input/output sampling rates */
-opus_int silk_resampler_init(
- silk_resampler_state_struct *S, /* I/O Resampler state */
- opus_int32 Fs_Hz_in, /* I Input sampling rate (Hz) */
- opus_int32 Fs_Hz_out, /* I Output sampling rate (Hz) */
- opus_int forEnc /* I If 1: encoder; if 0: decoder */
-)
-{
- opus_int up2x;
-
- /* Clear state */
- silk_memset( S, 0, sizeof( silk_resampler_state_struct ) );
-
- /* Input checking */
- if( forEnc ) {
- if( ( Fs_Hz_in != 8000 && Fs_Hz_in != 12000 && Fs_Hz_in != 16000 && Fs_Hz_in != 24000 && Fs_Hz_in != 48000 ) ||
- ( Fs_Hz_out != 8000 && Fs_Hz_out != 12000 && Fs_Hz_out != 16000 ) ) {
- silk_assert( 0 );
- return -1;
- }
- S->inputDelay = delay_matrix_enc[ rateID( Fs_Hz_in ) ][ rateID( Fs_Hz_out ) ];
- } else {
- if( ( Fs_Hz_in != 8000 && Fs_Hz_in != 12000 && Fs_Hz_in != 16000 ) ||
- ( Fs_Hz_out != 8000 && Fs_Hz_out != 12000 && Fs_Hz_out != 16000 && Fs_Hz_out != 24000 && Fs_Hz_out != 48000 ) ) {
- silk_assert( 0 );
- return -1;
- }
- S->inputDelay = delay_matrix_dec[ rateID( Fs_Hz_in ) ][ rateID( Fs_Hz_out ) ];
- }
-
- S->Fs_in_kHz = silk_DIV32_16( Fs_Hz_in, 1000 );
- S->Fs_out_kHz = silk_DIV32_16( Fs_Hz_out, 1000 );
-
- /* Number of samples processed per batch */
- S->batchSize = S->Fs_in_kHz * RESAMPLER_MAX_BATCH_SIZE_MS;
-
- /* Find resampler with the right sampling ratio */
- up2x = 0;
- if( Fs_Hz_out > Fs_Hz_in ) {
- /* Upsample */
- if( Fs_Hz_out == silk_MUL( Fs_Hz_in, 2 ) ) { /* Fs_out : Fs_in = 2 : 1 */
- /* Special case: directly use 2x upsampler */
- S->resampler_function = USE_silk_resampler_private_up2_HQ_wrapper;
- } else {
- /* Default resampler */
- S->resampler_function = USE_silk_resampler_private_IIR_FIR;
- up2x = 1;
- }
- } else if ( Fs_Hz_out < Fs_Hz_in ) {
- /* Downsample */
- S->resampler_function = USE_silk_resampler_private_down_FIR;
- if( silk_MUL( Fs_Hz_out, 4 ) == silk_MUL( Fs_Hz_in, 3 ) ) { /* Fs_out : Fs_in = 3 : 4 */
- S->FIR_Fracs = 3;
- S->FIR_Order = RESAMPLER_DOWN_ORDER_FIR0;
- S->Coefs = silk_Resampler_3_4_COEFS;
- } else if( silk_MUL( Fs_Hz_out, 3 ) == silk_MUL( Fs_Hz_in, 2 ) ) { /* Fs_out : Fs_in = 2 : 3 */
- S->FIR_Fracs = 2;
- S->FIR_Order = RESAMPLER_DOWN_ORDER_FIR0;
- S->Coefs = silk_Resampler_2_3_COEFS;
- } else if( silk_MUL( Fs_Hz_out, 2 ) == Fs_Hz_in ) { /* Fs_out : Fs_in = 1 : 2 */
- S->FIR_Fracs = 1;
- S->FIR_Order = RESAMPLER_DOWN_ORDER_FIR1;
- S->Coefs = silk_Resampler_1_2_COEFS;
- } else if( silk_MUL( Fs_Hz_out, 3 ) == Fs_Hz_in ) { /* Fs_out : Fs_in = 1 : 3 */
- S->FIR_Fracs = 1;
- S->FIR_Order = RESAMPLER_DOWN_ORDER_FIR2;
- S->Coefs = silk_Resampler_1_3_COEFS;
- } else if( silk_MUL( Fs_Hz_out, 4 ) == Fs_Hz_in ) { /* Fs_out : Fs_in = 1 : 4 */
- S->FIR_Fracs = 1;
- S->FIR_Order = RESAMPLER_DOWN_ORDER_FIR2;
- S->Coefs = silk_Resampler_1_4_COEFS;
- } else if( silk_MUL( Fs_Hz_out, 6 ) == Fs_Hz_in ) { /* Fs_out : Fs_in = 1 : 6 */
- S->FIR_Fracs = 1;
- S->FIR_Order = RESAMPLER_DOWN_ORDER_FIR2;
- S->Coefs = silk_Resampler_1_6_COEFS;
- } else {
- /* None available */
- silk_assert( 0 );
- return -1;
- }
- } else {
- /* Input and output sampling rates are equal: copy */
- S->resampler_function = USE_silk_resampler_copy;
- }
-
- /* Ratio of input/output samples */
- S->invRatio_Q16 = silk_LSHIFT32( silk_DIV32( silk_LSHIFT32( Fs_Hz_in, 14 + up2x ), Fs_Hz_out ), 2 );
- /* Make sure the ratio is rounded up */
- while( silk_SMULWW( S->invRatio_Q16, Fs_Hz_out ) < silk_LSHIFT32( Fs_Hz_in, up2x ) ) {
- S->invRatio_Q16++;
- }
-
- return 0;
-}
-
-/* Resampler: convert from one sampling rate to another */
-/* Input and output sampling rate are at most 48000 Hz */
-opus_int silk_resampler(
- silk_resampler_state_struct *S, /* I/O Resampler state */
- opus_int16 out[], /* O Output signal */
- const opus_int16 in[], /* I Input signal */
- opus_int32 inLen /* I Number of input samples */
-)
-{
- opus_int nSamples;
-
- /* Need at least 1 ms of input data */
- silk_assert( inLen >= S->Fs_in_kHz );
- /* Delay can't exceed the 1 ms of buffering */
- silk_assert( S->inputDelay <= S->Fs_in_kHz );
-
- nSamples = S->Fs_in_kHz - S->inputDelay;
-
- /* Copy to delay buffer */
- silk_memcpy( &S->delayBuf[ S->inputDelay ], in, nSamples * sizeof( opus_int16 ) );
-
- switch( S->resampler_function ) {
- case USE_silk_resampler_private_up2_HQ_wrapper:
- silk_resampler_private_up2_HQ_wrapper( S, out, S->delayBuf, S->Fs_in_kHz );
- silk_resampler_private_up2_HQ_wrapper( S, &out[ S->Fs_out_kHz ], &in[ nSamples ], inLen - S->Fs_in_kHz );
- break;
- case USE_silk_resampler_private_IIR_FIR:
- silk_resampler_private_IIR_FIR( S, out, S->delayBuf, S->Fs_in_kHz );
- silk_resampler_private_IIR_FIR( S, &out[ S->Fs_out_kHz ], &in[ nSamples ], inLen - S->Fs_in_kHz );
- break;
- case USE_silk_resampler_private_down_FIR:
- silk_resampler_private_down_FIR( S, out, S->delayBuf, S->Fs_in_kHz );
- silk_resampler_private_down_FIR( S, &out[ S->Fs_out_kHz ], &in[ nSamples ], inLen - S->Fs_in_kHz );
- break;
- default:
- silk_memcpy( out, S->delayBuf, S->Fs_in_kHz * sizeof( opus_int16 ) );
- silk_memcpy( &out[ S->Fs_out_kHz ], &in[ nSamples ], ( inLen - S->Fs_in_kHz ) * sizeof( opus_int16 ) );
- }
-
- /* Copy to delay buffer */
- silk_memcpy( S->delayBuf, &in[ inLen - S->inputDelay ], S->inputDelay * sizeof( opus_int16 ) );
-
- return 0;
-}
diff --git a/thirdparty/opus/silk/resampler_down2.c b/thirdparty/opus/silk/resampler_down2.c
deleted file mode 100644
index cec3634640..0000000000
--- a/thirdparty/opus/silk/resampler_down2.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "resampler_rom.h"
-
-/* Downsample by a factor 2 */
-void silk_resampler_down2(
- opus_int32 *S, /* I/O State vector [ 2 ] */
- opus_int16 *out, /* O Output signal [ floor(len/2) ] */
- const opus_int16 *in, /* I Input signal [ len ] */
- opus_int32 inLen /* I Number of input samples */
-)
-{
- opus_int32 k, len2 = silk_RSHIFT32( inLen, 1 );
- opus_int32 in32, out32, Y, X;
-
- silk_assert( silk_resampler_down2_0 > 0 );
- silk_assert( silk_resampler_down2_1 < 0 );
-
- /* Internal variables and state are in Q10 format */
- for( k = 0; k < len2; k++ ) {
- /* Convert to Q10 */
- in32 = silk_LSHIFT( (opus_int32)in[ 2 * k ], 10 );
-
- /* All-pass section for even input sample */
- Y = silk_SUB32( in32, S[ 0 ] );
- X = silk_SMLAWB( Y, Y, silk_resampler_down2_1 );
- out32 = silk_ADD32( S[ 0 ], X );
- S[ 0 ] = silk_ADD32( in32, X );
-
- /* Convert to Q10 */
- in32 = silk_LSHIFT( (opus_int32)in[ 2 * k + 1 ], 10 );
-
- /* All-pass section for odd input sample, and add to output of previous section */
- Y = silk_SUB32( in32, S[ 1 ] );
- X = silk_SMULWB( Y, silk_resampler_down2_0 );
- out32 = silk_ADD32( out32, S[ 1 ] );
- out32 = silk_ADD32( out32, X );
- S[ 1 ] = silk_ADD32( in32, X );
-
- /* Add, convert back to int16 and store to output */
- out[ k ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( out32, 11 ) );
- }
-}
-
diff --git a/thirdparty/opus/silk/resampler_down2_3.c b/thirdparty/opus/silk/resampler_down2_3.c
deleted file mode 100644
index 4342614dcc..0000000000
--- a/thirdparty/opus/silk/resampler_down2_3.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "resampler_private.h"
-#include "stack_alloc.h"
-
-#define ORDER_FIR 4
-
-/* Downsample by a factor 2/3, low quality */
-void silk_resampler_down2_3(
- opus_int32 *S, /* I/O State vector [ 6 ] */
- opus_int16 *out, /* O Output signal [ floor(2*inLen/3) ] */
- const opus_int16 *in, /* I Input signal [ inLen ] */
- opus_int32 inLen /* I Number of input samples */
-)
-{
- opus_int32 nSamplesIn, counter, res_Q6;
- VARDECL( opus_int32, buf );
- opus_int32 *buf_ptr;
- SAVE_STACK;
-
- ALLOC( buf, RESAMPLER_MAX_BATCH_SIZE_IN + ORDER_FIR, opus_int32 );
-
- /* Copy buffered samples to start of buffer */
- silk_memcpy( buf, S, ORDER_FIR * sizeof( opus_int32 ) );
-
- /* Iterate over blocks of frameSizeIn input samples */
- while( 1 ) {
- nSamplesIn = silk_min( inLen, RESAMPLER_MAX_BATCH_SIZE_IN );
-
- /* Second-order AR filter (output in Q8) */
- silk_resampler_private_AR2( &S[ ORDER_FIR ], &buf[ ORDER_FIR ], in,
- silk_Resampler_2_3_COEFS_LQ, nSamplesIn );
-
- /* Interpolate filtered signal */
- buf_ptr = buf;
- counter = nSamplesIn;
- while( counter > 2 ) {
- /* Inner product */
- res_Q6 = silk_SMULWB( buf_ptr[ 0 ], silk_Resampler_2_3_COEFS_LQ[ 2 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 1 ], silk_Resampler_2_3_COEFS_LQ[ 3 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 2 ], silk_Resampler_2_3_COEFS_LQ[ 5 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 3 ], silk_Resampler_2_3_COEFS_LQ[ 4 ] );
-
- /* Scale down, saturate and store in output array */
- *out++ = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( res_Q6, 6 ) );
-
- res_Q6 = silk_SMULWB( buf_ptr[ 1 ], silk_Resampler_2_3_COEFS_LQ[ 4 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 2 ], silk_Resampler_2_3_COEFS_LQ[ 5 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 3 ], silk_Resampler_2_3_COEFS_LQ[ 3 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 4 ], silk_Resampler_2_3_COEFS_LQ[ 2 ] );
-
- /* Scale down, saturate and store in output array */
- *out++ = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( res_Q6, 6 ) );
-
- buf_ptr += 3;
- counter -= 3;
- }
-
- in += nSamplesIn;
- inLen -= nSamplesIn;
-
- if( inLen > 0 ) {
- /* More iterations to do; copy last part of filtered signal to beginning of buffer */
- silk_memcpy( buf, &buf[ nSamplesIn ], ORDER_FIR * sizeof( opus_int32 ) );
- } else {
- break;
- }
- }
-
- /* Copy last part of filtered signal to the state for the next call */
- silk_memcpy( S, &buf[ nSamplesIn ], ORDER_FIR * sizeof( opus_int32 ) );
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/resampler_private.h b/thirdparty/opus/silk/resampler_private.h
deleted file mode 100644
index 422a7d9d95..0000000000
--- a/thirdparty/opus/silk/resampler_private.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_RESAMPLER_PRIVATE_H
-#define SILK_RESAMPLER_PRIVATE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "SigProc_FIX.h"
-#include "resampler_structs.h"
-#include "resampler_rom.h"
-
-/* Number of input samples to process in the inner loop */
-#define RESAMPLER_MAX_BATCH_SIZE_MS 10
-#define RESAMPLER_MAX_FS_KHZ 48
-#define RESAMPLER_MAX_BATCH_SIZE_IN ( RESAMPLER_MAX_BATCH_SIZE_MS * RESAMPLER_MAX_FS_KHZ )
-
-/* Description: Hybrid IIR/FIR polyphase implementation of resampling */
-void silk_resampler_private_IIR_FIR(
- void *SS, /* I/O Resampler state */
- opus_int16 out[], /* O Output signal */
- const opus_int16 in[], /* I Input signal */
- opus_int32 inLen /* I Number of input samples */
-);
-
-/* Description: Hybrid IIR/FIR polyphase implementation of resampling */
-void silk_resampler_private_down_FIR(
- void *SS, /* I/O Resampler state */
- opus_int16 out[], /* O Output signal */
- const opus_int16 in[], /* I Input signal */
- opus_int32 inLen /* I Number of input samples */
-);
-
-/* Upsample by a factor 2, high quality */
-void silk_resampler_private_up2_HQ_wrapper(
- void *SS, /* I/O Resampler state (unused) */
- opus_int16 *out, /* O Output signal [ 2 * len ] */
- const opus_int16 *in, /* I Input signal [ len ] */
- opus_int32 len /* I Number of input samples */
-);
-
-/* Upsample by a factor 2, high quality */
-void silk_resampler_private_up2_HQ(
- opus_int32 *S, /* I/O Resampler state [ 6 ] */
- opus_int16 *out, /* O Output signal [ 2 * len ] */
- const opus_int16 *in, /* I Input signal [ len ] */
- opus_int32 len /* I Number of input samples */
-);
-
-/* Second order AR filter */
-void silk_resampler_private_AR2(
- opus_int32 S[], /* I/O State vector [ 2 ] */
- opus_int32 out_Q8[], /* O Output signal */
- const opus_int16 in[], /* I Input signal */
- const opus_int16 A_Q14[], /* I AR coefficients, Q14 */
- opus_int32 len /* I Signal length */
-);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* SILK_RESAMPLER_PRIVATE_H */
diff --git a/thirdparty/opus/silk/resampler_private_AR2.c b/thirdparty/opus/silk/resampler_private_AR2.c
deleted file mode 100644
index 5fff23714f..0000000000
--- a/thirdparty/opus/silk/resampler_private_AR2.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "resampler_private.h"
-
-/* Second order AR filter with single delay elements */
-void silk_resampler_private_AR2(
- opus_int32 S[], /* I/O State vector [ 2 ] */
- opus_int32 out_Q8[], /* O Output signal */
- const opus_int16 in[], /* I Input signal */
- const opus_int16 A_Q14[], /* I AR coefficients, Q14 */
- opus_int32 len /* I Signal length */
-)
-{
- opus_int32 k;
- opus_int32 out32;
-
- for( k = 0; k < len; k++ ) {
- out32 = silk_ADD_LSHIFT32( S[ 0 ], (opus_int32)in[ k ], 8 );
- out_Q8[ k ] = out32;
- out32 = silk_LSHIFT( out32, 2 );
- S[ 0 ] = silk_SMLAWB( S[ 1 ], out32, A_Q14[ 0 ] );
- S[ 1 ] = silk_SMULWB( out32, A_Q14[ 1 ] );
- }
-}
-
diff --git a/thirdparty/opus/silk/resampler_private_IIR_FIR.c b/thirdparty/opus/silk/resampler_private_IIR_FIR.c
deleted file mode 100644
index 6b2b3a2e18..0000000000
--- a/thirdparty/opus/silk/resampler_private_IIR_FIR.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "resampler_private.h"
-#include "stack_alloc.h"
-
-static OPUS_INLINE opus_int16 *silk_resampler_private_IIR_FIR_INTERPOL(
- opus_int16 *out,
- opus_int16 *buf,
- opus_int32 max_index_Q16,
- opus_int32 index_increment_Q16
-)
-{
- opus_int32 index_Q16, res_Q15;
- opus_int16 *buf_ptr;
- opus_int32 table_index;
-
- /* Interpolate upsampled signal and store in output array */
- for( index_Q16 = 0; index_Q16 < max_index_Q16; index_Q16 += index_increment_Q16 ) {
- table_index = silk_SMULWB( index_Q16 & 0xFFFF, 12 );
- buf_ptr = &buf[ index_Q16 >> 16 ];
-
- res_Q15 = silk_SMULBB( buf_ptr[ 0 ], silk_resampler_frac_FIR_12[ table_index ][ 0 ] );
- res_Q15 = silk_SMLABB( res_Q15, buf_ptr[ 1 ], silk_resampler_frac_FIR_12[ table_index ][ 1 ] );
- res_Q15 = silk_SMLABB( res_Q15, buf_ptr[ 2 ], silk_resampler_frac_FIR_12[ table_index ][ 2 ] );
- res_Q15 = silk_SMLABB( res_Q15, buf_ptr[ 3 ], silk_resampler_frac_FIR_12[ table_index ][ 3 ] );
- res_Q15 = silk_SMLABB( res_Q15, buf_ptr[ 4 ], silk_resampler_frac_FIR_12[ 11 - table_index ][ 3 ] );
- res_Q15 = silk_SMLABB( res_Q15, buf_ptr[ 5 ], silk_resampler_frac_FIR_12[ 11 - table_index ][ 2 ] );
- res_Q15 = silk_SMLABB( res_Q15, buf_ptr[ 6 ], silk_resampler_frac_FIR_12[ 11 - table_index ][ 1 ] );
- res_Q15 = silk_SMLABB( res_Q15, buf_ptr[ 7 ], silk_resampler_frac_FIR_12[ 11 - table_index ][ 0 ] );
- *out++ = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( res_Q15, 15 ) );
- }
- return out;
-}
-/* Upsample using a combination of allpass-based 2x upsampling and FIR interpolation */
-void silk_resampler_private_IIR_FIR(
- void *SS, /* I/O Resampler state */
- opus_int16 out[], /* O Output signal */
- const opus_int16 in[], /* I Input signal */
- opus_int32 inLen /* I Number of input samples */
-)
-{
- silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS;
- opus_int32 nSamplesIn;
- opus_int32 max_index_Q16, index_increment_Q16;
- VARDECL( opus_int16, buf );
- SAVE_STACK;
-
- ALLOC( buf, 2 * S->batchSize + RESAMPLER_ORDER_FIR_12, opus_int16 );
-
- /* Copy buffered samples to start of buffer */
- silk_memcpy( buf, S->sFIR.i16, RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) );
-
- /* Iterate over blocks of frameSizeIn input samples */
- index_increment_Q16 = S->invRatio_Q16;
- while( 1 ) {
- nSamplesIn = silk_min( inLen, S->batchSize );
-
- /* Upsample 2x */
- silk_resampler_private_up2_HQ( S->sIIR, &buf[ RESAMPLER_ORDER_FIR_12 ], in, nSamplesIn );
-
- max_index_Q16 = silk_LSHIFT32( nSamplesIn, 16 + 1 ); /* + 1 because 2x upsampling */
- out = silk_resampler_private_IIR_FIR_INTERPOL( out, buf, max_index_Q16, index_increment_Q16 );
- in += nSamplesIn;
- inLen -= nSamplesIn;
-
- if( inLen > 0 ) {
- /* More iterations to do; copy last part of filtered signal to beginning of buffer */
- silk_memcpy( buf, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) );
- } else {
- break;
- }
- }
-
- /* Copy last part of filtered signal to the state for the next call */
- silk_memcpy( S->sFIR.i16, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) );
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/resampler_private_down_FIR.c b/thirdparty/opus/silk/resampler_private_down_FIR.c
deleted file mode 100644
index 783e42b356..0000000000
--- a/thirdparty/opus/silk/resampler_private_down_FIR.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "resampler_private.h"
-#include "stack_alloc.h"
-
-static OPUS_INLINE opus_int16 *silk_resampler_private_down_FIR_INTERPOL(
- opus_int16 *out,
- opus_int32 *buf,
- const opus_int16 *FIR_Coefs,
- opus_int FIR_Order,
- opus_int FIR_Fracs,
- opus_int32 max_index_Q16,
- opus_int32 index_increment_Q16
-)
-{
- opus_int32 index_Q16, res_Q6;
- opus_int32 *buf_ptr;
- opus_int32 interpol_ind;
- const opus_int16 *interpol_ptr;
-
- switch( FIR_Order ) {
- case RESAMPLER_DOWN_ORDER_FIR0:
- for( index_Q16 = 0; index_Q16 < max_index_Q16; index_Q16 += index_increment_Q16 ) {
- /* Integer part gives pointer to buffered input */
- buf_ptr = buf + silk_RSHIFT( index_Q16, 16 );
-
- /* Fractional part gives interpolation coefficients */
- interpol_ind = silk_SMULWB( index_Q16 & 0xFFFF, FIR_Fracs );
-
- /* Inner product */
- interpol_ptr = &FIR_Coefs[ RESAMPLER_DOWN_ORDER_FIR0 / 2 * interpol_ind ];
- res_Q6 = silk_SMULWB( buf_ptr[ 0 ], interpol_ptr[ 0 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 1 ], interpol_ptr[ 1 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 2 ], interpol_ptr[ 2 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 3 ], interpol_ptr[ 3 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 4 ], interpol_ptr[ 4 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 5 ], interpol_ptr[ 5 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 6 ], interpol_ptr[ 6 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 7 ], interpol_ptr[ 7 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 8 ], interpol_ptr[ 8 ] );
- interpol_ptr = &FIR_Coefs[ RESAMPLER_DOWN_ORDER_FIR0 / 2 * ( FIR_Fracs - 1 - interpol_ind ) ];
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 17 ], interpol_ptr[ 0 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 16 ], interpol_ptr[ 1 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 15 ], interpol_ptr[ 2 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 14 ], interpol_ptr[ 3 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 13 ], interpol_ptr[ 4 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 12 ], interpol_ptr[ 5 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 11 ], interpol_ptr[ 6 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 10 ], interpol_ptr[ 7 ] );
- res_Q6 = silk_SMLAWB( res_Q6, buf_ptr[ 9 ], interpol_ptr[ 8 ] );
-
- /* Scale down, saturate and store in output array */
- *out++ = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( res_Q6, 6 ) );
- }
- break;
- case RESAMPLER_DOWN_ORDER_FIR1:
- for( index_Q16 = 0; index_Q16 < max_index_Q16; index_Q16 += index_increment_Q16 ) {
- /* Integer part gives pointer to buffered input */
- buf_ptr = buf + silk_RSHIFT( index_Q16, 16 );
-
- /* Inner product */
- res_Q6 = silk_SMULWB( silk_ADD32( buf_ptr[ 0 ], buf_ptr[ 23 ] ), FIR_Coefs[ 0 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 1 ], buf_ptr[ 22 ] ), FIR_Coefs[ 1 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 2 ], buf_ptr[ 21 ] ), FIR_Coefs[ 2 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 3 ], buf_ptr[ 20 ] ), FIR_Coefs[ 3 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 4 ], buf_ptr[ 19 ] ), FIR_Coefs[ 4 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 5 ], buf_ptr[ 18 ] ), FIR_Coefs[ 5 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 6 ], buf_ptr[ 17 ] ), FIR_Coefs[ 6 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 7 ], buf_ptr[ 16 ] ), FIR_Coefs[ 7 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 8 ], buf_ptr[ 15 ] ), FIR_Coefs[ 8 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 9 ], buf_ptr[ 14 ] ), FIR_Coefs[ 9 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 10 ], buf_ptr[ 13 ] ), FIR_Coefs[ 10 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 11 ], buf_ptr[ 12 ] ), FIR_Coefs[ 11 ] );
-
- /* Scale down, saturate and store in output array */
- *out++ = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( res_Q6, 6 ) );
- }
- break;
- case RESAMPLER_DOWN_ORDER_FIR2:
- for( index_Q16 = 0; index_Q16 < max_index_Q16; index_Q16 += index_increment_Q16 ) {
- /* Integer part gives pointer to buffered input */
- buf_ptr = buf + silk_RSHIFT( index_Q16, 16 );
-
- /* Inner product */
- res_Q6 = silk_SMULWB( silk_ADD32( buf_ptr[ 0 ], buf_ptr[ 35 ] ), FIR_Coefs[ 0 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 1 ], buf_ptr[ 34 ] ), FIR_Coefs[ 1 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 2 ], buf_ptr[ 33 ] ), FIR_Coefs[ 2 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 3 ], buf_ptr[ 32 ] ), FIR_Coefs[ 3 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 4 ], buf_ptr[ 31 ] ), FIR_Coefs[ 4 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 5 ], buf_ptr[ 30 ] ), FIR_Coefs[ 5 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 6 ], buf_ptr[ 29 ] ), FIR_Coefs[ 6 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 7 ], buf_ptr[ 28 ] ), FIR_Coefs[ 7 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 8 ], buf_ptr[ 27 ] ), FIR_Coefs[ 8 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 9 ], buf_ptr[ 26 ] ), FIR_Coefs[ 9 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 10 ], buf_ptr[ 25 ] ), FIR_Coefs[ 10 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 11 ], buf_ptr[ 24 ] ), FIR_Coefs[ 11 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 12 ], buf_ptr[ 23 ] ), FIR_Coefs[ 12 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 13 ], buf_ptr[ 22 ] ), FIR_Coefs[ 13 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 14 ], buf_ptr[ 21 ] ), FIR_Coefs[ 14 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 15 ], buf_ptr[ 20 ] ), FIR_Coefs[ 15 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 16 ], buf_ptr[ 19 ] ), FIR_Coefs[ 16 ] );
- res_Q6 = silk_SMLAWB( res_Q6, silk_ADD32( buf_ptr[ 17 ], buf_ptr[ 18 ] ), FIR_Coefs[ 17 ] );
-
- /* Scale down, saturate and store in output array */
- *out++ = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( res_Q6, 6 ) );
- }
- break;
- default:
- silk_assert( 0 );
- }
- return out;
-}
-
-/* Resample with a 2nd order AR filter followed by FIR interpolation */
-void silk_resampler_private_down_FIR(
- void *SS, /* I/O Resampler state */
- opus_int16 out[], /* O Output signal */
- const opus_int16 in[], /* I Input signal */
- opus_int32 inLen /* I Number of input samples */
-)
-{
- silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS;
- opus_int32 nSamplesIn;
- opus_int32 max_index_Q16, index_increment_Q16;
- VARDECL( opus_int32, buf );
- const opus_int16 *FIR_Coefs;
- SAVE_STACK;
-
- ALLOC( buf, S->batchSize + S->FIR_Order, opus_int32 );
-
- /* Copy buffered samples to start of buffer */
- silk_memcpy( buf, S->sFIR.i32, S->FIR_Order * sizeof( opus_int32 ) );
-
- FIR_Coefs = &S->Coefs[ 2 ];
-
- /* Iterate over blocks of frameSizeIn input samples */
- index_increment_Q16 = S->invRatio_Q16;
- while( 1 ) {
- nSamplesIn = silk_min( inLen, S->batchSize );
-
- /* Second-order AR filter (output in Q8) */
- silk_resampler_private_AR2( S->sIIR, &buf[ S->FIR_Order ], in, S->Coefs, nSamplesIn );
-
- max_index_Q16 = silk_LSHIFT32( nSamplesIn, 16 );
-
- /* Interpolate filtered signal */
- out = silk_resampler_private_down_FIR_INTERPOL( out, buf, FIR_Coefs, S->FIR_Order,
- S->FIR_Fracs, max_index_Q16, index_increment_Q16 );
-
- in += nSamplesIn;
- inLen -= nSamplesIn;
-
- if( inLen > 1 ) {
- /* More iterations to do; copy last part of filtered signal to beginning of buffer */
- silk_memcpy( buf, &buf[ nSamplesIn ], S->FIR_Order * sizeof( opus_int32 ) );
- } else {
- break;
- }
- }
-
- /* Copy last part of filtered signal to the state for the next call */
- silk_memcpy( S->sFIR.i32, &buf[ nSamplesIn ], S->FIR_Order * sizeof( opus_int32 ) );
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/resampler_private_up2_HQ.c b/thirdparty/opus/silk/resampler_private_up2_HQ.c
deleted file mode 100644
index c7ec8de365..0000000000
--- a/thirdparty/opus/silk/resampler_private_up2_HQ.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "resampler_private.h"
-
-/* Upsample by a factor 2, high quality */
-/* Uses 2nd order allpass filters for the 2x upsampling, followed by a */
-/* notch filter just above Nyquist. */
-void silk_resampler_private_up2_HQ(
- opus_int32 *S, /* I/O Resampler state [ 6 ] */
- opus_int16 *out, /* O Output signal [ 2 * len ] */
- const opus_int16 *in, /* I Input signal [ len ] */
- opus_int32 len /* I Number of input samples */
-)
-{
- opus_int32 k;
- opus_int32 in32, out32_1, out32_2, Y, X;
-
- silk_assert( silk_resampler_up2_hq_0[ 0 ] > 0 );
- silk_assert( silk_resampler_up2_hq_0[ 1 ] > 0 );
- silk_assert( silk_resampler_up2_hq_0[ 2 ] < 0 );
- silk_assert( silk_resampler_up2_hq_1[ 0 ] > 0 );
- silk_assert( silk_resampler_up2_hq_1[ 1 ] > 0 );
- silk_assert( silk_resampler_up2_hq_1[ 2 ] < 0 );
-
- /* Internal variables and state are in Q10 format */
- for( k = 0; k < len; k++ ) {
- /* Convert to Q10 */
- in32 = silk_LSHIFT( (opus_int32)in[ k ], 10 );
-
- /* First all-pass section for even output sample */
- Y = silk_SUB32( in32, S[ 0 ] );
- X = silk_SMULWB( Y, silk_resampler_up2_hq_0[ 0 ] );
- out32_1 = silk_ADD32( S[ 0 ], X );
- S[ 0 ] = silk_ADD32( in32, X );
-
- /* Second all-pass section for even output sample */
- Y = silk_SUB32( out32_1, S[ 1 ] );
- X = silk_SMULWB( Y, silk_resampler_up2_hq_0[ 1 ] );
- out32_2 = silk_ADD32( S[ 1 ], X );
- S[ 1 ] = silk_ADD32( out32_1, X );
-
- /* Third all-pass section for even output sample */
- Y = silk_SUB32( out32_2, S[ 2 ] );
- X = silk_SMLAWB( Y, Y, silk_resampler_up2_hq_0[ 2 ] );
- out32_1 = silk_ADD32( S[ 2 ], X );
- S[ 2 ] = silk_ADD32( out32_2, X );
-
- /* Apply gain in Q15, convert back to int16 and store to output */
- out[ 2 * k ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( out32_1, 10 ) );
-
- /* First all-pass section for odd output sample */
- Y = silk_SUB32( in32, S[ 3 ] );
- X = silk_SMULWB( Y, silk_resampler_up2_hq_1[ 0 ] );
- out32_1 = silk_ADD32( S[ 3 ], X );
- S[ 3 ] = silk_ADD32( in32, X );
-
- /* Second all-pass section for odd output sample */
- Y = silk_SUB32( out32_1, S[ 4 ] );
- X = silk_SMULWB( Y, silk_resampler_up2_hq_1[ 1 ] );
- out32_2 = silk_ADD32( S[ 4 ], X );
- S[ 4 ] = silk_ADD32( out32_1, X );
-
- /* Third all-pass section for odd output sample */
- Y = silk_SUB32( out32_2, S[ 5 ] );
- X = silk_SMLAWB( Y, Y, silk_resampler_up2_hq_1[ 2 ] );
- out32_1 = silk_ADD32( S[ 5 ], X );
- S[ 5 ] = silk_ADD32( out32_2, X );
-
- /* Apply gain in Q15, convert back to int16 and store to output */
- out[ 2 * k + 1 ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( out32_1, 10 ) );
- }
-}
-
-void silk_resampler_private_up2_HQ_wrapper(
- void *SS, /* I/O Resampler state (unused) */
- opus_int16 *out, /* O Output signal [ 2 * len ] */
- const opus_int16 *in, /* I Input signal [ len ] */
- opus_int32 len /* I Number of input samples */
-)
-{
- silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS;
- silk_resampler_private_up2_HQ( S->sIIR, out, in, len );
-}
diff --git a/thirdparty/opus/silk/resampler_rom.c b/thirdparty/opus/silk/resampler_rom.c
deleted file mode 100644
index 5e6b04476a..0000000000
--- a/thirdparty/opus/silk/resampler_rom.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* Filter coefficients for IIR/FIR polyphase resampling *
- * Total size: 179 Words (358 Bytes) */
-
-#include "resampler_private.h"
-
-/* Matlab code for the notch filter coefficients: */
-/* B = [1, 0.147, 1]; A = [1, 0.107, 0.89]; G = 0.93; freqz(G * B, A, 2^14, 16e3); axis([0, 8000, -10, 1]) */
-/* fprintf('\t%6d, %6d, %6d, %6d\n', round(B(2)*2^16), round(-A(2)*2^16), round((1-A(3))*2^16), round(G*2^15)) */
-/* const opus_int16 silk_resampler_up2_hq_notch[ 4 ] = { 9634, -7012, 7209, 30474 }; */
-
-/* Tables with IIR and FIR coefficients for fractional downsamplers (123 Words) */
-silk_DWORD_ALIGN const opus_int16 silk_Resampler_3_4_COEFS[ 2 + 3 * RESAMPLER_DOWN_ORDER_FIR0 / 2 ] = {
- -20694, -13867,
- -49, 64, 17, -157, 353, -496, 163, 11047, 22205,
- -39, 6, 91, -170, 186, 23, -896, 6336, 19928,
- -19, -36, 102, -89, -24, 328, -951, 2568, 15909,
-};
-
-silk_DWORD_ALIGN const opus_int16 silk_Resampler_2_3_COEFS[ 2 + 2 * RESAMPLER_DOWN_ORDER_FIR0 / 2 ] = {
- -14457, -14019,
- 64, 128, -122, 36, 310, -768, 584, 9267, 17733,
- 12, 128, 18, -142, 288, -117, -865, 4123, 14459,
-};
-
-silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_2_COEFS[ 2 + RESAMPLER_DOWN_ORDER_FIR1 / 2 ] = {
- 616, -14323,
- -10, 39, 58, -46, -84, 120, 184, -315, -541, 1284, 5380, 9024,
-};
-
-silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_3_COEFS[ 2 + RESAMPLER_DOWN_ORDER_FIR2 / 2 ] = {
- 16102, -15162,
- -13, 0, 20, 26, 5, -31, -43, -4, 65, 90, 7, -157, -248, -44, 593, 1583, 2612, 3271,
-};
-
-silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_4_COEFS[ 2 + RESAMPLER_DOWN_ORDER_FIR2 / 2 ] = {
- 22500, -15099,
- 3, -14, -20, -15, 2, 25, 37, 25, -16, -71, -107, -79, 50, 292, 623, 982, 1288, 1464,
-};
-
-silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_6_COEFS[ 2 + RESAMPLER_DOWN_ORDER_FIR2 / 2 ] = {
- 27540, -15257,
- 17, 12, 8, 1, -10, -22, -30, -32, -22, 3, 44, 100, 168, 243, 317, 381, 429, 455,
-};
-
-silk_DWORD_ALIGN const opus_int16 silk_Resampler_2_3_COEFS_LQ[ 2 + 2 * 2 ] = {
- -2797, -6507,
- 4697, 10739,
- 1567, 8276,
-};
-
-/* Table with interplation fractions of 1/24, 3/24, 5/24, ... , 23/24 : 23/24 (46 Words) */
-silk_DWORD_ALIGN const opus_int16 silk_resampler_frac_FIR_12[ 12 ][ RESAMPLER_ORDER_FIR_12 / 2 ] = {
- { 189, -600, 617, 30567 },
- { 117, -159, -1070, 29704 },
- { 52, 221, -2392, 28276 },
- { -4, 529, -3350, 26341 },
- { -48, 758, -3956, 23973 },
- { -80, 905, -4235, 21254 },
- { -99, 972, -4222, 18278 },
- { -107, 967, -3957, 15143 },
- { -103, 896, -3487, 11950 },
- { -91, 773, -2865, 8798 },
- { -71, 611, -2143, 5784 },
- { -46, 425, -1375, 2996 },
-};
diff --git a/thirdparty/opus/silk/resampler_rom.h b/thirdparty/opus/silk/resampler_rom.h
deleted file mode 100644
index 490b3388dc..0000000000
--- a/thirdparty/opus/silk/resampler_rom.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_FIX_RESAMPLER_ROM_H
-#define SILK_FIX_RESAMPLER_ROM_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#include "typedef.h"
-#include "resampler_structs.h"
-
-#define RESAMPLER_DOWN_ORDER_FIR0 18
-#define RESAMPLER_DOWN_ORDER_FIR1 24
-#define RESAMPLER_DOWN_ORDER_FIR2 36
-#define RESAMPLER_ORDER_FIR_12 8
-
-/* Tables for 2x downsampler */
-static const opus_int16 silk_resampler_down2_0 = 9872;
-static const opus_int16 silk_resampler_down2_1 = 39809 - 65536;
-
-/* Tables for 2x upsampler, high quality */
-static const opus_int16 silk_resampler_up2_hq_0[ 3 ] = { 1746, 14986, 39083 - 65536 };
-static const opus_int16 silk_resampler_up2_hq_1[ 3 ] = { 6854, 25769, 55542 - 65536 };
-
-/* Tables with IIR and FIR coefficients for fractional downsamplers */
-extern const opus_int16 silk_Resampler_3_4_COEFS[ 2 + 3 * RESAMPLER_DOWN_ORDER_FIR0 / 2 ];
-extern const opus_int16 silk_Resampler_2_3_COEFS[ 2 + 2 * RESAMPLER_DOWN_ORDER_FIR0 / 2 ];
-extern const opus_int16 silk_Resampler_1_2_COEFS[ 2 + RESAMPLER_DOWN_ORDER_FIR1 / 2 ];
-extern const opus_int16 silk_Resampler_1_3_COEFS[ 2 + RESAMPLER_DOWN_ORDER_FIR2 / 2 ];
-extern const opus_int16 silk_Resampler_1_4_COEFS[ 2 + RESAMPLER_DOWN_ORDER_FIR2 / 2 ];
-extern const opus_int16 silk_Resampler_1_6_COEFS[ 2 + RESAMPLER_DOWN_ORDER_FIR2 / 2 ];
-extern const opus_int16 silk_Resampler_2_3_COEFS_LQ[ 2 + 2 * 2 ];
-
-/* Table with interplation fractions of 1/24, 3/24, ..., 23/24 */
-extern const opus_int16 silk_resampler_frac_FIR_12[ 12 ][ RESAMPLER_ORDER_FIR_12 / 2 ];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SILK_FIX_RESAMPLER_ROM_H */
diff --git a/thirdparty/opus/silk/resampler_structs.h b/thirdparty/opus/silk/resampler_structs.h
deleted file mode 100644
index 9e9457d11c..0000000000
--- a/thirdparty/opus/silk/resampler_structs.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_RESAMPLER_STRUCTS_H
-#define SILK_RESAMPLER_STRUCTS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define SILK_RESAMPLER_MAX_FIR_ORDER 36
-#define SILK_RESAMPLER_MAX_IIR_ORDER 6
-
-typedef struct _silk_resampler_state_struct{
- opus_int32 sIIR[ SILK_RESAMPLER_MAX_IIR_ORDER ]; /* this must be the first element of this struct */
- union{
- opus_int32 i32[ SILK_RESAMPLER_MAX_FIR_ORDER ];
- opus_int16 i16[ SILK_RESAMPLER_MAX_FIR_ORDER ];
- } sFIR;
- opus_int16 delayBuf[ 48 ];
- opus_int resampler_function;
- opus_int batchSize;
- opus_int32 invRatio_Q16;
- opus_int FIR_Order;
- opus_int FIR_Fracs;
- opus_int Fs_in_kHz;
- opus_int Fs_out_kHz;
- opus_int inputDelay;
- const opus_int16 *Coefs;
-} silk_resampler_state_struct;
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* SILK_RESAMPLER_STRUCTS_H */
-
diff --git a/thirdparty/opus/silk/shell_coder.c b/thirdparty/opus/silk/shell_coder.c
deleted file mode 100644
index 4af341474b..0000000000
--- a/thirdparty/opus/silk/shell_coder.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* shell coder; pulse-subframe length is hardcoded */
-
-static OPUS_INLINE void combine_pulses(
- opus_int *out, /* O combined pulses vector [len] */
- const opus_int *in, /* I input vector [2 * len] */
- const opus_int len /* I number of OUTPUT samples */
-)
-{
- opus_int k;
- for( k = 0; k < len; k++ ) {
- out[ k ] = in[ 2 * k ] + in[ 2 * k + 1 ];
- }
-}
-
-static OPUS_INLINE void encode_split(
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- const opus_int p_child1, /* I pulse amplitude of first child subframe */
- const opus_int p, /* I pulse amplitude of current subframe */
- const opus_uint8 *shell_table /* I table of shell cdfs */
-)
-{
- if( p > 0 ) {
- ec_enc_icdf( psRangeEnc, p_child1, &shell_table[ silk_shell_code_table_offsets[ p ] ], 8 );
- }
-}
-
-static OPUS_INLINE void decode_split(
- opus_int16 *p_child1, /* O pulse amplitude of first child subframe */
- opus_int16 *p_child2, /* O pulse amplitude of second child subframe */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- const opus_int p, /* I pulse amplitude of current subframe */
- const opus_uint8 *shell_table /* I table of shell cdfs */
-)
-{
- if( p > 0 ) {
- p_child1[ 0 ] = ec_dec_icdf( psRangeDec, &shell_table[ silk_shell_code_table_offsets[ p ] ], 8 );
- p_child2[ 0 ] = p - p_child1[ 0 ];
- } else {
- p_child1[ 0 ] = 0;
- p_child2[ 0 ] = 0;
- }
-}
-
-/* Shell encoder, operates on one shell code frame of 16 pulses */
-void silk_shell_encoder(
- ec_enc *psRangeEnc, /* I/O compressor data structure */
- const opus_int *pulses0 /* I data: nonnegative pulse amplitudes */
-)
-{
- opus_int pulses1[ 8 ], pulses2[ 4 ], pulses3[ 2 ], pulses4[ 1 ];
-
- /* this function operates on one shell code frame of 16 pulses */
- silk_assert( SHELL_CODEC_FRAME_LENGTH == 16 );
-
- /* tree representation per pulse-subframe */
- combine_pulses( pulses1, pulses0, 8 );
- combine_pulses( pulses2, pulses1, 4 );
- combine_pulses( pulses3, pulses2, 2 );
- combine_pulses( pulses4, pulses3, 1 );
-
- encode_split( psRangeEnc, pulses3[ 0 ], pulses4[ 0 ], silk_shell_code_table3 );
-
- encode_split( psRangeEnc, pulses2[ 0 ], pulses3[ 0 ], silk_shell_code_table2 );
-
- encode_split( psRangeEnc, pulses1[ 0 ], pulses2[ 0 ], silk_shell_code_table1 );
- encode_split( psRangeEnc, pulses0[ 0 ], pulses1[ 0 ], silk_shell_code_table0 );
- encode_split( psRangeEnc, pulses0[ 2 ], pulses1[ 1 ], silk_shell_code_table0 );
-
- encode_split( psRangeEnc, pulses1[ 2 ], pulses2[ 1 ], silk_shell_code_table1 );
- encode_split( psRangeEnc, pulses0[ 4 ], pulses1[ 2 ], silk_shell_code_table0 );
- encode_split( psRangeEnc, pulses0[ 6 ], pulses1[ 3 ], silk_shell_code_table0 );
-
- encode_split( psRangeEnc, pulses2[ 2 ], pulses3[ 1 ], silk_shell_code_table2 );
-
- encode_split( psRangeEnc, pulses1[ 4 ], pulses2[ 2 ], silk_shell_code_table1 );
- encode_split( psRangeEnc, pulses0[ 8 ], pulses1[ 4 ], silk_shell_code_table0 );
- encode_split( psRangeEnc, pulses0[ 10 ], pulses1[ 5 ], silk_shell_code_table0 );
-
- encode_split( psRangeEnc, pulses1[ 6 ], pulses2[ 3 ], silk_shell_code_table1 );
- encode_split( psRangeEnc, pulses0[ 12 ], pulses1[ 6 ], silk_shell_code_table0 );
- encode_split( psRangeEnc, pulses0[ 14 ], pulses1[ 7 ], silk_shell_code_table0 );
-}
-
-
-/* Shell decoder, operates on one shell code frame of 16 pulses */
-void silk_shell_decoder(
- opus_int16 *pulses0, /* O data: nonnegative pulse amplitudes */
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- const opus_int pulses4 /* I number of pulses per pulse-subframe */
-)
-{
- opus_int16 pulses3[ 2 ], pulses2[ 4 ], pulses1[ 8 ];
-
- /* this function operates on one shell code frame of 16 pulses */
- silk_assert( SHELL_CODEC_FRAME_LENGTH == 16 );
-
- decode_split( &pulses3[ 0 ], &pulses3[ 1 ], psRangeDec, pulses4, silk_shell_code_table3 );
-
- decode_split( &pulses2[ 0 ], &pulses2[ 1 ], psRangeDec, pulses3[ 0 ], silk_shell_code_table2 );
-
- decode_split( &pulses1[ 0 ], &pulses1[ 1 ], psRangeDec, pulses2[ 0 ], silk_shell_code_table1 );
- decode_split( &pulses0[ 0 ], &pulses0[ 1 ], psRangeDec, pulses1[ 0 ], silk_shell_code_table0 );
- decode_split( &pulses0[ 2 ], &pulses0[ 3 ], psRangeDec, pulses1[ 1 ], silk_shell_code_table0 );
-
- decode_split( &pulses1[ 2 ], &pulses1[ 3 ], psRangeDec, pulses2[ 1 ], silk_shell_code_table1 );
- decode_split( &pulses0[ 4 ], &pulses0[ 5 ], psRangeDec, pulses1[ 2 ], silk_shell_code_table0 );
- decode_split( &pulses0[ 6 ], &pulses0[ 7 ], psRangeDec, pulses1[ 3 ], silk_shell_code_table0 );
-
- decode_split( &pulses2[ 2 ], &pulses2[ 3 ], psRangeDec, pulses3[ 1 ], silk_shell_code_table2 );
-
- decode_split( &pulses1[ 4 ], &pulses1[ 5 ], psRangeDec, pulses2[ 2 ], silk_shell_code_table1 );
- decode_split( &pulses0[ 8 ], &pulses0[ 9 ], psRangeDec, pulses1[ 4 ], silk_shell_code_table0 );
- decode_split( &pulses0[ 10 ], &pulses0[ 11 ], psRangeDec, pulses1[ 5 ], silk_shell_code_table0 );
-
- decode_split( &pulses1[ 6 ], &pulses1[ 7 ], psRangeDec, pulses2[ 3 ], silk_shell_code_table1 );
- decode_split( &pulses0[ 12 ], &pulses0[ 13 ], psRangeDec, pulses1[ 6 ], silk_shell_code_table0 );
- decode_split( &pulses0[ 14 ], &pulses0[ 15 ], psRangeDec, pulses1[ 7 ], silk_shell_code_table0 );
-}
diff --git a/thirdparty/opus/silk/sigm_Q15.c b/thirdparty/opus/silk/sigm_Q15.c
deleted file mode 100644
index 3c507d255b..0000000000
--- a/thirdparty/opus/silk/sigm_Q15.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* Approximate sigmoid function */
-
-#include "SigProc_FIX.h"
-
-/* fprintf(1, '%d, ', round(1024 * ([1 ./ (1 + exp(-(1:5))), 1] - 1 ./ (1 + exp(-(0:5)))))); */
-static const opus_int32 sigm_LUT_slope_Q10[ 6 ] = {
- 237, 153, 73, 30, 12, 7
-};
-/* fprintf(1, '%d, ', round(32767 * 1 ./ (1 + exp(-(0:5))))); */
-static const opus_int32 sigm_LUT_pos_Q15[ 6 ] = {
- 16384, 23955, 28861, 31213, 32178, 32548
-};
-/* fprintf(1, '%d, ', round(32767 * 1 ./ (1 + exp((0:5))))); */
-static const opus_int32 sigm_LUT_neg_Q15[ 6 ] = {
- 16384, 8812, 3906, 1554, 589, 219
-};
-
-opus_int silk_sigm_Q15(
- opus_int in_Q5 /* I */
-)
-{
- opus_int ind;
-
- if( in_Q5 < 0 ) {
- /* Negative input */
- in_Q5 = -in_Q5;
- if( in_Q5 >= 6 * 32 ) {
- return 0; /* Clip */
- } else {
- /* Linear interpolation of look up table */
- ind = silk_RSHIFT( in_Q5, 5 );
- return( sigm_LUT_neg_Q15[ ind ] - silk_SMULBB( sigm_LUT_slope_Q10[ ind ], in_Q5 & 0x1F ) );
- }
- } else {
- /* Positive input */
- if( in_Q5 >= 6 * 32 ) {
- return 32767; /* clip */
- } else {
- /* Linear interpolation of look up table */
- ind = silk_RSHIFT( in_Q5, 5 );
- return( sigm_LUT_pos_Q15[ ind ] + silk_SMULBB( sigm_LUT_slope_Q10[ ind ], in_Q5 & 0x1F ) );
- }
- }
-}
-
diff --git a/thirdparty/opus/silk/sort.c b/thirdparty/opus/silk/sort.c
deleted file mode 100644
index 7187c9efb1..0000000000
--- a/thirdparty/opus/silk/sort.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* Insertion sort (fast for already almost sorted arrays): */
-/* Best case: O(n) for an already sorted array */
-/* Worst case: O(n^2) for an inversely sorted array */
-/* */
-/* Shell short: https://en.wikipedia.org/wiki/Shell_sort */
-
-#include "SigProc_FIX.h"
-
-void silk_insertion_sort_increasing(
- opus_int32 *a, /* I/O Unsorted / Sorted vector */
- opus_int *idx, /* O Index vector for the sorted elements */
- const opus_int L, /* I Vector length */
- const opus_int K /* I Number of correctly sorted positions */
-)
-{
- opus_int32 value;
- opus_int i, j;
-
- /* Safety checks */
- silk_assert( K > 0 );
- silk_assert( L > 0 );
- silk_assert( L >= K );
-
- /* Write start indices in index vector */
- for( i = 0; i < K; i++ ) {
- idx[ i ] = i;
- }
-
- /* Sort vector elements by value, increasing order */
- for( i = 1; i < K; i++ ) {
- value = a[ i ];
- for( j = i - 1; ( j >= 0 ) && ( value < a[ j ] ); j-- ) {
- a[ j + 1 ] = a[ j ]; /* Shift value */
- idx[ j + 1 ] = idx[ j ]; /* Shift index */
- }
- a[ j + 1 ] = value; /* Write value */
- idx[ j + 1 ] = i; /* Write index */
- }
-
- /* If less than L values are asked for, check the remaining values, */
- /* but only spend CPU to ensure that the K first values are correct */
- for( i = K; i < L; i++ ) {
- value = a[ i ];
- if( value < a[ K - 1 ] ) {
- for( j = K - 2; ( j >= 0 ) && ( value < a[ j ] ); j-- ) {
- a[ j + 1 ] = a[ j ]; /* Shift value */
- idx[ j + 1 ] = idx[ j ]; /* Shift index */
- }
- a[ j + 1 ] = value; /* Write value */
- idx[ j + 1 ] = i; /* Write index */
- }
- }
-}
-
-#ifdef FIXED_POINT
-/* This function is only used by the fixed-point build */
-void silk_insertion_sort_decreasing_int16(
- opus_int16 *a, /* I/O Unsorted / Sorted vector */
- opus_int *idx, /* O Index vector for the sorted elements */
- const opus_int L, /* I Vector length */
- const opus_int K /* I Number of correctly sorted positions */
-)
-{
- opus_int i, j;
- opus_int value;
-
- /* Safety checks */
- silk_assert( K > 0 );
- silk_assert( L > 0 );
- silk_assert( L >= K );
-
- /* Write start indices in index vector */
- for( i = 0; i < K; i++ ) {
- idx[ i ] = i;
- }
-
- /* Sort vector elements by value, decreasing order */
- for( i = 1; i < K; i++ ) {
- value = a[ i ];
- for( j = i - 1; ( j >= 0 ) && ( value > a[ j ] ); j-- ) {
- a[ j + 1 ] = a[ j ]; /* Shift value */
- idx[ j + 1 ] = idx[ j ]; /* Shift index */
- }
- a[ j + 1 ] = value; /* Write value */
- idx[ j + 1 ] = i; /* Write index */
- }
-
- /* If less than L values are asked for, check the remaining values, */
- /* but only spend CPU to ensure that the K first values are correct */
- for( i = K; i < L; i++ ) {
- value = a[ i ];
- if( value > a[ K - 1 ] ) {
- for( j = K - 2; ( j >= 0 ) && ( value > a[ j ] ); j-- ) {
- a[ j + 1 ] = a[ j ]; /* Shift value */
- idx[ j + 1 ] = idx[ j ]; /* Shift index */
- }
- a[ j + 1 ] = value; /* Write value */
- idx[ j + 1 ] = i; /* Write index */
- }
- }
-}
-#endif
-
-void silk_insertion_sort_increasing_all_values_int16(
- opus_int16 *a, /* I/O Unsorted / Sorted vector */
- const opus_int L /* I Vector length */
-)
-{
- opus_int value;
- opus_int i, j;
-
- /* Safety checks */
- silk_assert( L > 0 );
-
- /* Sort vector elements by value, increasing order */
- for( i = 1; i < L; i++ ) {
- value = a[ i ];
- for( j = i - 1; ( j >= 0 ) && ( value < a[ j ] ); j-- ) {
- a[ j + 1 ] = a[ j ]; /* Shift value */
- }
- a[ j + 1 ] = value; /* Write value */
- }
-}
diff --git a/thirdparty/opus/silk/stereo_LR_to_MS.c b/thirdparty/opus/silk/stereo_LR_to_MS.c
deleted file mode 100644
index dda0298de2..0000000000
--- a/thirdparty/opus/silk/stereo_LR_to_MS.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-#include "stack_alloc.h"
-
-/* Convert Left/Right stereo signal to adaptive Mid/Side representation */
-void silk_stereo_LR_to_MS(
- stereo_enc_state *state, /* I/O State */
- opus_int16 x1[], /* I/O Left input signal, becomes mid signal */
- opus_int16 x2[], /* I/O Right input signal, becomes side signal */
- opus_int8 ix[ 2 ][ 3 ], /* O Quantization indices */
- opus_int8 *mid_only_flag, /* O Flag: only mid signal coded */
- opus_int32 mid_side_rates_bps[], /* O Bitrates for mid and side signals */
- opus_int32 total_rate_bps, /* I Total bitrate */
- opus_int prev_speech_act_Q8, /* I Speech activity level in previous frame */
- opus_int toMono, /* I Last frame before a stereo->mono transition */
- opus_int fs_kHz, /* I Sample rate (kHz) */
- opus_int frame_length /* I Number of samples */
-)
-{
- opus_int n, is10msFrame, denom_Q16, delta0_Q13, delta1_Q13;
- opus_int32 sum, diff, smooth_coef_Q16, pred_Q13[ 2 ], pred0_Q13, pred1_Q13;
- opus_int32 LP_ratio_Q14, HP_ratio_Q14, frac_Q16, frac_3_Q16, min_mid_rate_bps, width_Q14, w_Q24, deltaw_Q24;
- VARDECL( opus_int16, side );
- VARDECL( opus_int16, LP_mid );
- VARDECL( opus_int16, HP_mid );
- VARDECL( opus_int16, LP_side );
- VARDECL( opus_int16, HP_side );
- opus_int16 *mid = &x1[ -2 ];
- SAVE_STACK;
-
- ALLOC( side, frame_length + 2, opus_int16 );
- /* Convert to basic mid/side signals */
- for( n = 0; n < frame_length + 2; n++ ) {
- sum = x1[ n - 2 ] + (opus_int32)x2[ n - 2 ];
- diff = x1[ n - 2 ] - (opus_int32)x2[ n - 2 ];
- mid[ n ] = (opus_int16)silk_RSHIFT_ROUND( sum, 1 );
- side[ n ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( diff, 1 ) );
- }
-
- /* Buffering */
- silk_memcpy( mid, state->sMid, 2 * sizeof( opus_int16 ) );
- silk_memcpy( side, state->sSide, 2 * sizeof( opus_int16 ) );
- silk_memcpy( state->sMid, &mid[ frame_length ], 2 * sizeof( opus_int16 ) );
- silk_memcpy( state->sSide, &side[ frame_length ], 2 * sizeof( opus_int16 ) );
-
- /* LP and HP filter mid signal */
- ALLOC( LP_mid, frame_length, opus_int16 );
- ALLOC( HP_mid, frame_length, opus_int16 );
- for( n = 0; n < frame_length; n++ ) {
- sum = silk_RSHIFT_ROUND( silk_ADD_LSHIFT( mid[ n ] + (opus_int32)mid[ n + 2 ], mid[ n + 1 ], 1 ), 2 );
- LP_mid[ n ] = sum;
- HP_mid[ n ] = mid[ n + 1 ] - sum;
- }
-
- /* LP and HP filter side signal */
- ALLOC( LP_side, frame_length, opus_int16 );
- ALLOC( HP_side, frame_length, opus_int16 );
- for( n = 0; n < frame_length; n++ ) {
- sum = silk_RSHIFT_ROUND( silk_ADD_LSHIFT( side[ n ] + (opus_int32)side[ n + 2 ], side[ n + 1 ], 1 ), 2 );
- LP_side[ n ] = sum;
- HP_side[ n ] = side[ n + 1 ] - sum;
- }
-
- /* Find energies and predictors */
- is10msFrame = frame_length == 10 * fs_kHz;
- smooth_coef_Q16 = is10msFrame ?
- SILK_FIX_CONST( STEREO_RATIO_SMOOTH_COEF / 2, 16 ) :
- SILK_FIX_CONST( STEREO_RATIO_SMOOTH_COEF, 16 );
- smooth_coef_Q16 = silk_SMULWB( silk_SMULBB( prev_speech_act_Q8, prev_speech_act_Q8 ), smooth_coef_Q16 );
-
- pred_Q13[ 0 ] = silk_stereo_find_predictor( &LP_ratio_Q14, LP_mid, LP_side, &state->mid_side_amp_Q0[ 0 ], frame_length, smooth_coef_Q16 );
- pred_Q13[ 1 ] = silk_stereo_find_predictor( &HP_ratio_Q14, HP_mid, HP_side, &state->mid_side_amp_Q0[ 2 ], frame_length, smooth_coef_Q16 );
- /* Ratio of the norms of residual and mid signals */
- frac_Q16 = silk_SMLABB( HP_ratio_Q14, LP_ratio_Q14, 3 );
- frac_Q16 = silk_min( frac_Q16, SILK_FIX_CONST( 1, 16 ) );
-
- /* Determine bitrate distribution between mid and side, and possibly reduce stereo width */
- total_rate_bps -= is10msFrame ? 1200 : 600; /* Subtract approximate bitrate for coding stereo parameters */
- if( total_rate_bps < 1 ) {
- total_rate_bps = 1;
- }
- min_mid_rate_bps = silk_SMLABB( 2000, fs_kHz, 900 );
- silk_assert( min_mid_rate_bps < 32767 );
- /* Default bitrate distribution: 8 parts for Mid and (5+3*frac) parts for Side. so: mid_rate = ( 8 / ( 13 + 3 * frac ) ) * total_ rate */
- frac_3_Q16 = silk_MUL( 3, frac_Q16 );
- mid_side_rates_bps[ 0 ] = silk_DIV32_varQ( total_rate_bps, SILK_FIX_CONST( 8 + 5, 16 ) + frac_3_Q16, 16+3 );
- /* If Mid bitrate below minimum, reduce stereo width */
- if( mid_side_rates_bps[ 0 ] < min_mid_rate_bps ) {
- mid_side_rates_bps[ 0 ] = min_mid_rate_bps;
- mid_side_rates_bps[ 1 ] = total_rate_bps - mid_side_rates_bps[ 0 ];
- /* width = 4 * ( 2 * side_rate - min_rate ) / ( ( 1 + 3 * frac ) * min_rate ) */
- width_Q14 = silk_DIV32_varQ( silk_LSHIFT( mid_side_rates_bps[ 1 ], 1 ) - min_mid_rate_bps,
- silk_SMULWB( SILK_FIX_CONST( 1, 16 ) + frac_3_Q16, min_mid_rate_bps ), 14+2 );
- width_Q14 = silk_LIMIT( width_Q14, 0, SILK_FIX_CONST( 1, 14 ) );
- } else {
- mid_side_rates_bps[ 1 ] = total_rate_bps - mid_side_rates_bps[ 0 ];
- width_Q14 = SILK_FIX_CONST( 1, 14 );
- }
-
- /* Smoother */
- state->smth_width_Q14 = (opus_int16)silk_SMLAWB( state->smth_width_Q14, width_Q14 - state->smth_width_Q14, smooth_coef_Q16 );
-
- /* At very low bitrates or for inputs that are nearly amplitude panned, switch to panned-mono coding */
- *mid_only_flag = 0;
- if( toMono ) {
- /* Last frame before stereo->mono transition; collapse stereo width */
- width_Q14 = 0;
- pred_Q13[ 0 ] = 0;
- pred_Q13[ 1 ] = 0;
- silk_stereo_quant_pred( pred_Q13, ix );
- } else if( state->width_prev_Q14 == 0 &&
- ( 8 * total_rate_bps < 13 * min_mid_rate_bps || silk_SMULWB( frac_Q16, state->smth_width_Q14 ) < SILK_FIX_CONST( 0.05, 14 ) ) )
- {
- /* Code as panned-mono; previous frame already had zero width */
- /* Scale down and quantize predictors */
- pred_Q13[ 0 ] = silk_RSHIFT( silk_SMULBB( state->smth_width_Q14, pred_Q13[ 0 ] ), 14 );
- pred_Q13[ 1 ] = silk_RSHIFT( silk_SMULBB( state->smth_width_Q14, pred_Q13[ 1 ] ), 14 );
- silk_stereo_quant_pred( pred_Q13, ix );
- /* Collapse stereo width */
- width_Q14 = 0;
- pred_Q13[ 0 ] = 0;
- pred_Q13[ 1 ] = 0;
- mid_side_rates_bps[ 0 ] = total_rate_bps;
- mid_side_rates_bps[ 1 ] = 0;
- *mid_only_flag = 1;
- } else if( state->width_prev_Q14 != 0 &&
- ( 8 * total_rate_bps < 11 * min_mid_rate_bps || silk_SMULWB( frac_Q16, state->smth_width_Q14 ) < SILK_FIX_CONST( 0.02, 14 ) ) )
- {
- /* Transition to zero-width stereo */
- /* Scale down and quantize predictors */
- pred_Q13[ 0 ] = silk_RSHIFT( silk_SMULBB( state->smth_width_Q14, pred_Q13[ 0 ] ), 14 );
- pred_Q13[ 1 ] = silk_RSHIFT( silk_SMULBB( state->smth_width_Q14, pred_Q13[ 1 ] ), 14 );
- silk_stereo_quant_pred( pred_Q13, ix );
- /* Collapse stereo width */
- width_Q14 = 0;
- pred_Q13[ 0 ] = 0;
- pred_Q13[ 1 ] = 0;
- } else if( state->smth_width_Q14 > SILK_FIX_CONST( 0.95, 14 ) ) {
- /* Full-width stereo coding */
- silk_stereo_quant_pred( pred_Q13, ix );
- width_Q14 = SILK_FIX_CONST( 1, 14 );
- } else {
- /* Reduced-width stereo coding; scale down and quantize predictors */
- pred_Q13[ 0 ] = silk_RSHIFT( silk_SMULBB( state->smth_width_Q14, pred_Q13[ 0 ] ), 14 );
- pred_Q13[ 1 ] = silk_RSHIFT( silk_SMULBB( state->smth_width_Q14, pred_Q13[ 1 ] ), 14 );
- silk_stereo_quant_pred( pred_Q13, ix );
- width_Q14 = state->smth_width_Q14;
- }
-
- /* Make sure to keep on encoding until the tapered output has been transmitted */
- if( *mid_only_flag == 1 ) {
- state->silent_side_len += frame_length - STEREO_INTERP_LEN_MS * fs_kHz;
- if( state->silent_side_len < LA_SHAPE_MS * fs_kHz ) {
- *mid_only_flag = 0;
- } else {
- /* Limit to avoid wrapping around */
- state->silent_side_len = 10000;
- }
- } else {
- state->silent_side_len = 0;
- }
-
- if( *mid_only_flag == 0 && mid_side_rates_bps[ 1 ] < 1 ) {
- mid_side_rates_bps[ 1 ] = 1;
- mid_side_rates_bps[ 0 ] = silk_max_int( 1, total_rate_bps - mid_side_rates_bps[ 1 ]);
- }
-
- /* Interpolate predictors and subtract prediction from side channel */
- pred0_Q13 = -state->pred_prev_Q13[ 0 ];
- pred1_Q13 = -state->pred_prev_Q13[ 1 ];
- w_Q24 = silk_LSHIFT( state->width_prev_Q14, 10 );
- denom_Q16 = silk_DIV32_16( (opus_int32)1 << 16, STEREO_INTERP_LEN_MS * fs_kHz );
- delta0_Q13 = -silk_RSHIFT_ROUND( silk_SMULBB( pred_Q13[ 0 ] - state->pred_prev_Q13[ 0 ], denom_Q16 ), 16 );
- delta1_Q13 = -silk_RSHIFT_ROUND( silk_SMULBB( pred_Q13[ 1 ] - state->pred_prev_Q13[ 1 ], denom_Q16 ), 16 );
- deltaw_Q24 = silk_LSHIFT( silk_SMULWB( width_Q14 - state->width_prev_Q14, denom_Q16 ), 10 );
- for( n = 0; n < STEREO_INTERP_LEN_MS * fs_kHz; n++ ) {
- pred0_Q13 += delta0_Q13;
- pred1_Q13 += delta1_Q13;
- w_Q24 += deltaw_Q24;
- sum = silk_LSHIFT( silk_ADD_LSHIFT( mid[ n ] + (opus_int32)mid[ n + 2 ], mid[ n + 1 ], 1 ), 9 ); /* Q11 */
- sum = silk_SMLAWB( silk_SMULWB( w_Q24, side[ n + 1 ] ), sum, pred0_Q13 ); /* Q8 */
- sum = silk_SMLAWB( sum, silk_LSHIFT( (opus_int32)mid[ n + 1 ], 11 ), pred1_Q13 ); /* Q8 */
- x2[ n - 1 ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( sum, 8 ) );
- }
-
- pred0_Q13 = -pred_Q13[ 0 ];
- pred1_Q13 = -pred_Q13[ 1 ];
- w_Q24 = silk_LSHIFT( width_Q14, 10 );
- for( n = STEREO_INTERP_LEN_MS * fs_kHz; n < frame_length; n++ ) {
- sum = silk_LSHIFT( silk_ADD_LSHIFT( mid[ n ] + (opus_int32)mid[ n + 2 ], mid[ n + 1 ], 1 ), 9 ); /* Q11 */
- sum = silk_SMLAWB( silk_SMULWB( w_Q24, side[ n + 1 ] ), sum, pred0_Q13 ); /* Q8 */
- sum = silk_SMLAWB( sum, silk_LSHIFT( (opus_int32)mid[ n + 1 ], 11 ), pred1_Q13 ); /* Q8 */
- x2[ n - 1 ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( sum, 8 ) );
- }
- state->pred_prev_Q13[ 0 ] = (opus_int16)pred_Q13[ 0 ];
- state->pred_prev_Q13[ 1 ] = (opus_int16)pred_Q13[ 1 ];
- state->width_prev_Q14 = (opus_int16)width_Q14;
- RESTORE_STACK;
-}
diff --git a/thirdparty/opus/silk/stereo_MS_to_LR.c b/thirdparty/opus/silk/stereo_MS_to_LR.c
deleted file mode 100644
index 62521a4f35..0000000000
--- a/thirdparty/opus/silk/stereo_MS_to_LR.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Convert adaptive Mid/Side representation to Left/Right stereo signal */
-void silk_stereo_MS_to_LR(
- stereo_dec_state *state, /* I/O State */
- opus_int16 x1[], /* I/O Left input signal, becomes mid signal */
- opus_int16 x2[], /* I/O Right input signal, becomes side signal */
- const opus_int32 pred_Q13[], /* I Predictors */
- opus_int fs_kHz, /* I Samples rate (kHz) */
- opus_int frame_length /* I Number of samples */
-)
-{
- opus_int n, denom_Q16, delta0_Q13, delta1_Q13;
- opus_int32 sum, diff, pred0_Q13, pred1_Q13;
-
- /* Buffering */
- silk_memcpy( x1, state->sMid, 2 * sizeof( opus_int16 ) );
- silk_memcpy( x2, state->sSide, 2 * sizeof( opus_int16 ) );
- silk_memcpy( state->sMid, &x1[ frame_length ], 2 * sizeof( opus_int16 ) );
- silk_memcpy( state->sSide, &x2[ frame_length ], 2 * sizeof( opus_int16 ) );
-
- /* Interpolate predictors and add prediction to side channel */
- pred0_Q13 = state->pred_prev_Q13[ 0 ];
- pred1_Q13 = state->pred_prev_Q13[ 1 ];
- denom_Q16 = silk_DIV32_16( (opus_int32)1 << 16, STEREO_INTERP_LEN_MS * fs_kHz );
- delta0_Q13 = silk_RSHIFT_ROUND( silk_SMULBB( pred_Q13[ 0 ] - state->pred_prev_Q13[ 0 ], denom_Q16 ), 16 );
- delta1_Q13 = silk_RSHIFT_ROUND( silk_SMULBB( pred_Q13[ 1 ] - state->pred_prev_Q13[ 1 ], denom_Q16 ), 16 );
- for( n = 0; n < STEREO_INTERP_LEN_MS * fs_kHz; n++ ) {
- pred0_Q13 += delta0_Q13;
- pred1_Q13 += delta1_Q13;
- sum = silk_LSHIFT( silk_ADD_LSHIFT( x1[ n ] + x1[ n + 2 ], x1[ n + 1 ], 1 ), 9 ); /* Q11 */
- sum = silk_SMLAWB( silk_LSHIFT( (opus_int32)x2[ n + 1 ], 8 ), sum, pred0_Q13 ); /* Q8 */
- sum = silk_SMLAWB( sum, silk_LSHIFT( (opus_int32)x1[ n + 1 ], 11 ), pred1_Q13 ); /* Q8 */
- x2[ n + 1 ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( sum, 8 ) );
- }
- pred0_Q13 = pred_Q13[ 0 ];
- pred1_Q13 = pred_Q13[ 1 ];
- for( n = STEREO_INTERP_LEN_MS * fs_kHz; n < frame_length; n++ ) {
- sum = silk_LSHIFT( silk_ADD_LSHIFT( x1[ n ] + x1[ n + 2 ], x1[ n + 1 ], 1 ), 9 ); /* Q11 */
- sum = silk_SMLAWB( silk_LSHIFT( (opus_int32)x2[ n + 1 ], 8 ), sum, pred0_Q13 ); /* Q8 */
- sum = silk_SMLAWB( sum, silk_LSHIFT( (opus_int32)x1[ n + 1 ], 11 ), pred1_Q13 ); /* Q8 */
- x2[ n + 1 ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( sum, 8 ) );
- }
- state->pred_prev_Q13[ 0 ] = pred_Q13[ 0 ];
- state->pred_prev_Q13[ 1 ] = pred_Q13[ 1 ];
-
- /* Convert to left/right signals */
- for( n = 0; n < frame_length; n++ ) {
- sum = x1[ n + 1 ] + (opus_int32)x2[ n + 1 ];
- diff = x1[ n + 1 ] - (opus_int32)x2[ n + 1 ];
- x1[ n + 1 ] = (opus_int16)silk_SAT16( sum );
- x2[ n + 1 ] = (opus_int16)silk_SAT16( diff );
- }
-}
diff --git a/thirdparty/opus/silk/stereo_decode_pred.c b/thirdparty/opus/silk/stereo_decode_pred.c
deleted file mode 100644
index 56ba3925e8..0000000000
--- a/thirdparty/opus/silk/stereo_decode_pred.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Decode mid/side predictors */
-void silk_stereo_decode_pred(
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int32 pred_Q13[] /* O Predictors */
-)
-{
- opus_int n, ix[ 2 ][ 3 ];
- opus_int32 low_Q13, step_Q13;
-
- /* Entropy decoding */
- n = ec_dec_icdf( psRangeDec, silk_stereo_pred_joint_iCDF, 8 );
- ix[ 0 ][ 2 ] = silk_DIV32_16( n, 5 );
- ix[ 1 ][ 2 ] = n - 5 * ix[ 0 ][ 2 ];
- for( n = 0; n < 2; n++ ) {
- ix[ n ][ 0 ] = ec_dec_icdf( psRangeDec, silk_uniform3_iCDF, 8 );
- ix[ n ][ 1 ] = ec_dec_icdf( psRangeDec, silk_uniform5_iCDF, 8 );
- }
-
- /* Dequantize */
- for( n = 0; n < 2; n++ ) {
- ix[ n ][ 0 ] += 3 * ix[ n ][ 2 ];
- low_Q13 = silk_stereo_pred_quant_Q13[ ix[ n ][ 0 ] ];
- step_Q13 = silk_SMULWB( silk_stereo_pred_quant_Q13[ ix[ n ][ 0 ] + 1 ] - low_Q13,
- SILK_FIX_CONST( 0.5 / STEREO_QUANT_SUB_STEPS, 16 ) );
- pred_Q13[ n ] = silk_SMLABB( low_Q13, step_Q13, 2 * ix[ n ][ 1 ] + 1 );
- }
-
- /* Subtract second from first predictor (helps when actually applying these) */
- pred_Q13[ 0 ] -= pred_Q13[ 1 ];
-}
-
-/* Decode mid-only flag */
-void silk_stereo_decode_mid_only(
- ec_dec *psRangeDec, /* I/O Compressor data structure */
- opus_int *decode_only_mid /* O Flag that only mid channel has been coded */
-)
-{
- /* Decode flag that only mid channel is coded */
- *decode_only_mid = ec_dec_icdf( psRangeDec, silk_stereo_only_code_mid_iCDF, 8 );
-}
diff --git a/thirdparty/opus/silk/stereo_encode_pred.c b/thirdparty/opus/silk/stereo_encode_pred.c
deleted file mode 100644
index e6dd195066..0000000000
--- a/thirdparty/opus/silk/stereo_encode_pred.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Entropy code the mid/side quantization indices */
-void silk_stereo_encode_pred(
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- opus_int8 ix[ 2 ][ 3 ] /* I Quantization indices */
-)
-{
- opus_int n;
-
- /* Entropy coding */
- n = 5 * ix[ 0 ][ 2 ] + ix[ 1 ][ 2 ];
- silk_assert( n < 25 );
- ec_enc_icdf( psRangeEnc, n, silk_stereo_pred_joint_iCDF, 8 );
- for( n = 0; n < 2; n++ ) {
- silk_assert( ix[ n ][ 0 ] < 3 );
- silk_assert( ix[ n ][ 1 ] < STEREO_QUANT_SUB_STEPS );
- ec_enc_icdf( psRangeEnc, ix[ n ][ 0 ], silk_uniform3_iCDF, 8 );
- ec_enc_icdf( psRangeEnc, ix[ n ][ 1 ], silk_uniform5_iCDF, 8 );
- }
-}
-
-/* Entropy code the mid-only flag */
-void silk_stereo_encode_mid_only(
- ec_enc *psRangeEnc, /* I/O Compressor data structure */
- opus_int8 mid_only_flag
-)
-{
- /* Encode flag that only mid channel is coded */
- ec_enc_icdf( psRangeEnc, mid_only_flag, silk_stereo_only_code_mid_iCDF, 8 );
-}
diff --git a/thirdparty/opus/silk/stereo_find_predictor.c b/thirdparty/opus/silk/stereo_find_predictor.c
deleted file mode 100644
index e30e90bddc..0000000000
--- a/thirdparty/opus/silk/stereo_find_predictor.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Find least-squares prediction gain for one signal based on another and quantize it */
-opus_int32 silk_stereo_find_predictor( /* O Returns predictor in Q13 */
- opus_int32 *ratio_Q14, /* O Ratio of residual and mid energies */
- const opus_int16 x[], /* I Basis signal */
- const opus_int16 y[], /* I Target signal */
- opus_int32 mid_res_amp_Q0[], /* I/O Smoothed mid, residual norms */
- opus_int length, /* I Number of samples */
- opus_int smooth_coef_Q16 /* I Smoothing coefficient */
-)
-{
- opus_int scale, scale1, scale2;
- opus_int32 nrgx, nrgy, corr, pred_Q13, pred2_Q10;
-
- /* Find predictor */
- silk_sum_sqr_shift( &nrgx, &scale1, x, length );
- silk_sum_sqr_shift( &nrgy, &scale2, y, length );
- scale = silk_max_int( scale1, scale2 );
- scale = scale + ( scale & 1 ); /* make even */
- nrgy = silk_RSHIFT32( nrgy, scale - scale2 );
- nrgx = silk_RSHIFT32( nrgx, scale - scale1 );
- nrgx = silk_max_int( nrgx, 1 );
- corr = silk_inner_prod_aligned_scale( x, y, scale, length );
- pred_Q13 = silk_DIV32_varQ( corr, nrgx, 13 );
- pred_Q13 = silk_LIMIT( pred_Q13, -(1 << 14), 1 << 14 );
- pred2_Q10 = silk_SMULWB( pred_Q13, pred_Q13 );
-
- /* Faster update for signals with large prediction parameters */
- smooth_coef_Q16 = (opus_int)silk_max_int( smooth_coef_Q16, silk_abs( pred2_Q10 ) );
-
- /* Smoothed mid and residual norms */
- silk_assert( smooth_coef_Q16 < 32768 );
- scale = silk_RSHIFT( scale, 1 );
- mid_res_amp_Q0[ 0 ] = silk_SMLAWB( mid_res_amp_Q0[ 0 ], silk_LSHIFT( silk_SQRT_APPROX( nrgx ), scale ) - mid_res_amp_Q0[ 0 ],
- smooth_coef_Q16 );
- /* Residual energy = nrgy - 2 * pred * corr + pred^2 * nrgx */
- nrgy = silk_SUB_LSHIFT32( nrgy, silk_SMULWB( corr, pred_Q13 ), 3 + 1 );
- nrgy = silk_ADD_LSHIFT32( nrgy, silk_SMULWB( nrgx, pred2_Q10 ), 6 );
- mid_res_amp_Q0[ 1 ] = silk_SMLAWB( mid_res_amp_Q0[ 1 ], silk_LSHIFT( silk_SQRT_APPROX( nrgy ), scale ) - mid_res_amp_Q0[ 1 ],
- smooth_coef_Q16 );
-
- /* Ratio of smoothed residual and mid norms */
- *ratio_Q14 = silk_DIV32_varQ( mid_res_amp_Q0[ 1 ], silk_max( mid_res_amp_Q0[ 0 ], 1 ), 14 );
- *ratio_Q14 = silk_LIMIT( *ratio_Q14, 0, 32767 );
-
- return pred_Q13;
-}
diff --git a/thirdparty/opus/silk/stereo_quant_pred.c b/thirdparty/opus/silk/stereo_quant_pred.c
deleted file mode 100644
index d4ced6c3e8..0000000000
--- a/thirdparty/opus/silk/stereo_quant_pred.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "main.h"
-
-/* Quantize mid/side predictors */
-void silk_stereo_quant_pred(
- opus_int32 pred_Q13[], /* I/O Predictors (out: quantized) */
- opus_int8 ix[ 2 ][ 3 ] /* O Quantization indices */
-)
-{
- opus_int i, j, n;
- opus_int32 low_Q13, step_Q13, lvl_Q13, err_min_Q13, err_Q13, quant_pred_Q13 = 0;
-
- /* Quantize */
- for( n = 0; n < 2; n++ ) {
- /* Brute-force search over quantization levels */
- err_min_Q13 = silk_int32_MAX;
- for( i = 0; i < STEREO_QUANT_TAB_SIZE - 1; i++ ) {
- low_Q13 = silk_stereo_pred_quant_Q13[ i ];
- step_Q13 = silk_SMULWB( silk_stereo_pred_quant_Q13[ i + 1 ] - low_Q13,
- SILK_FIX_CONST( 0.5 / STEREO_QUANT_SUB_STEPS, 16 ) );
- for( j = 0; j < STEREO_QUANT_SUB_STEPS; j++ ) {
- lvl_Q13 = silk_SMLABB( low_Q13, step_Q13, 2 * j + 1 );
- err_Q13 = silk_abs( pred_Q13[ n ] - lvl_Q13 );
- if( err_Q13 < err_min_Q13 ) {
- err_min_Q13 = err_Q13;
- quant_pred_Q13 = lvl_Q13;
- ix[ n ][ 0 ] = i;
- ix[ n ][ 1 ] = j;
- } else {
- /* Error increasing, so we're past the optimum */
- goto done;
- }
- }
- }
- done:
- ix[ n ][ 2 ] = silk_DIV32_16( ix[ n ][ 0 ], 3 );
- ix[ n ][ 0 ] -= ix[ n ][ 2 ] * 3;
- pred_Q13[ n ] = quant_pred_Q13;
- }
-
- /* Subtract second from first predictor (helps when actually applying these) */
- pred_Q13[ 0 ] -= pred_Q13[ 1 ];
-}
diff --git a/thirdparty/opus/silk/structs.h b/thirdparty/opus/silk/structs.h
deleted file mode 100644
index 827829dc6f..0000000000
--- a/thirdparty/opus/silk/structs.h
+++ /dev/null
@@ -1,327 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_STRUCTS_H
-#define SILK_STRUCTS_H
-
-#include "typedef.h"
-#include "SigProc_FIX.h"
-#include "define.h"
-#include "entenc.h"
-#include "entdec.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/************************************/
-/* Noise shaping quantization state */
-/************************************/
-typedef struct {
- opus_int16 xq[ 2 * MAX_FRAME_LENGTH ]; /* Buffer for quantized output signal */
- opus_int32 sLTP_shp_Q14[ 2 * MAX_FRAME_LENGTH ];
- opus_int32 sLPC_Q14[ MAX_SUB_FRAME_LENGTH + NSQ_LPC_BUF_LENGTH ];
- opus_int32 sAR2_Q14[ MAX_SHAPE_LPC_ORDER ];
- opus_int32 sLF_AR_shp_Q14;
- opus_int lagPrev;
- opus_int sLTP_buf_idx;
- opus_int sLTP_shp_buf_idx;
- opus_int32 rand_seed;
- opus_int32 prev_gain_Q16;
- opus_int rewhite_flag;
-} silk_nsq_state;
-
-/********************************/
-/* VAD state */
-/********************************/
-typedef struct {
- opus_int32 AnaState[ 2 ]; /* Analysis filterbank state: 0-8 kHz */
- opus_int32 AnaState1[ 2 ]; /* Analysis filterbank state: 0-4 kHz */
- opus_int32 AnaState2[ 2 ]; /* Analysis filterbank state: 0-2 kHz */
- opus_int32 XnrgSubfr[ VAD_N_BANDS ]; /* Subframe energies */
- opus_int32 NrgRatioSmth_Q8[ VAD_N_BANDS ]; /* Smoothed energy level in each band */
- opus_int16 HPstate; /* State of differentiator in the lowest band */
- opus_int32 NL[ VAD_N_BANDS ]; /* Noise energy level in each band */
- opus_int32 inv_NL[ VAD_N_BANDS ]; /* Inverse noise energy level in each band */
- opus_int32 NoiseLevelBias[ VAD_N_BANDS ]; /* Noise level estimator bias/offset */
- opus_int32 counter; /* Frame counter used in the initial phase */
-} silk_VAD_state;
-
-/* Variable cut-off low-pass filter state */
-typedef struct {
- opus_int32 In_LP_State[ 2 ]; /* Low pass filter state */
- opus_int32 transition_frame_no; /* Counter which is mapped to a cut-off frequency */
- opus_int mode; /* Operating mode, <0: switch down, >0: switch up; 0: do nothing */
-} silk_LP_state;
-
-/* Structure containing NLSF codebook */
-typedef struct {
- const opus_int16 nVectors;
- const opus_int16 order;
- const opus_int16 quantStepSize_Q16;
- const opus_int16 invQuantStepSize_Q6;
- const opus_uint8 *CB1_NLSF_Q8;
- const opus_uint8 *CB1_iCDF;
- const opus_uint8 *pred_Q8;
- const opus_uint8 *ec_sel;
- const opus_uint8 *ec_iCDF;
- const opus_uint8 *ec_Rates_Q5;
- const opus_int16 *deltaMin_Q15;
-} silk_NLSF_CB_struct;
-
-typedef struct {
- opus_int16 pred_prev_Q13[ 2 ];
- opus_int16 sMid[ 2 ];
- opus_int16 sSide[ 2 ];
- opus_int32 mid_side_amp_Q0[ 4 ];
- opus_int16 smth_width_Q14;
- opus_int16 width_prev_Q14;
- opus_int16 silent_side_len;
- opus_int8 predIx[ MAX_FRAMES_PER_PACKET ][ 2 ][ 3 ];
- opus_int8 mid_only_flags[ MAX_FRAMES_PER_PACKET ];
-} stereo_enc_state;
-
-typedef struct {
- opus_int16 pred_prev_Q13[ 2 ];
- opus_int16 sMid[ 2 ];
- opus_int16 sSide[ 2 ];
-} stereo_dec_state;
-
-typedef struct {
- opus_int8 GainsIndices[ MAX_NB_SUBFR ];
- opus_int8 LTPIndex[ MAX_NB_SUBFR ];
- opus_int8 NLSFIndices[ MAX_LPC_ORDER + 1 ];
- opus_int16 lagIndex;
- opus_int8 contourIndex;
- opus_int8 signalType;
- opus_int8 quantOffsetType;
- opus_int8 NLSFInterpCoef_Q2;
- opus_int8 PERIndex;
- opus_int8 LTP_scaleIndex;
- opus_int8 Seed;
-} SideInfoIndices;
-
-/********************************/
-/* Encoder state */
-/********************************/
-typedef struct {
- opus_int32 In_HP_State[ 2 ]; /* High pass filter state */
- opus_int32 variable_HP_smth1_Q15; /* State of first smoother */
- opus_int32 variable_HP_smth2_Q15; /* State of second smoother */
- silk_LP_state sLP; /* Low pass filter state */
- silk_VAD_state sVAD; /* Voice activity detector state */
- silk_nsq_state sNSQ; /* Noise Shape Quantizer State */
- opus_int16 prev_NLSFq_Q15[ MAX_LPC_ORDER ]; /* Previously quantized NLSF vector */
- opus_int speech_activity_Q8; /* Speech activity */
- opus_int allow_bandwidth_switch; /* Flag indicating that switching of internal bandwidth is allowed */
- opus_int8 LBRRprevLastGainIndex;
- opus_int8 prevSignalType;
- opus_int prevLag;
- opus_int pitch_LPC_win_length;
- opus_int max_pitch_lag; /* Highest possible pitch lag (samples) */
- opus_int32 API_fs_Hz; /* API sampling frequency (Hz) */
- opus_int32 prev_API_fs_Hz; /* Previous API sampling frequency (Hz) */
- opus_int maxInternal_fs_Hz; /* Maximum internal sampling frequency (Hz) */
- opus_int minInternal_fs_Hz; /* Minimum internal sampling frequency (Hz) */
- opus_int desiredInternal_fs_Hz; /* Soft request for internal sampling frequency (Hz) */
- opus_int fs_kHz; /* Internal sampling frequency (kHz) */
- opus_int nb_subfr; /* Number of 5 ms subframes in a frame */
- opus_int frame_length; /* Frame length (samples) */
- opus_int subfr_length; /* Subframe length (samples) */
- opus_int ltp_mem_length; /* Length of LTP memory */
- opus_int la_pitch; /* Look-ahead for pitch analysis (samples) */
- opus_int la_shape; /* Look-ahead for noise shape analysis (samples) */
- opus_int shapeWinLength; /* Window length for noise shape analysis (samples) */
- opus_int32 TargetRate_bps; /* Target bitrate (bps) */
- opus_int PacketSize_ms; /* Number of milliseconds to put in each packet */
- opus_int PacketLoss_perc; /* Packet loss rate measured by farend */
- opus_int32 frameCounter;
- opus_int Complexity; /* Complexity setting */
- opus_int nStatesDelayedDecision; /* Number of states in delayed decision quantization */
- opus_int useInterpolatedNLSFs; /* Flag for using NLSF interpolation */
- opus_int shapingLPCOrder; /* Filter order for noise shaping filters */
- opus_int predictLPCOrder; /* Filter order for prediction filters */
- opus_int pitchEstimationComplexity; /* Complexity level for pitch estimator */
- opus_int pitchEstimationLPCOrder; /* Whitening filter order for pitch estimator */
- opus_int32 pitchEstimationThreshold_Q16; /* Threshold for pitch estimator */
- opus_int LTPQuantLowComplexity; /* Flag for low complexity LTP quantization */
- opus_int mu_LTP_Q9; /* Rate-distortion tradeoff in LTP quantization */
- opus_int32 sum_log_gain_Q7; /* Cumulative max prediction gain */
- opus_int NLSF_MSVQ_Survivors; /* Number of survivors in NLSF MSVQ */
- opus_int first_frame_after_reset; /* Flag for deactivating NLSF interpolation, pitch prediction */
- opus_int controlled_since_last_payload; /* Flag for ensuring codec_control only runs once per packet */
- opus_int warping_Q16; /* Warping parameter for warped noise shaping */
- opus_int useCBR; /* Flag to enable constant bitrate */
- opus_int prefillFlag; /* Flag to indicate that only buffers are prefilled, no coding */
- const opus_uint8 *pitch_lag_low_bits_iCDF; /* Pointer to iCDF table for low bits of pitch lag index */
- const opus_uint8 *pitch_contour_iCDF; /* Pointer to iCDF table for pitch contour index */
- const silk_NLSF_CB_struct *psNLSF_CB; /* Pointer to NLSF codebook */
- opus_int input_quality_bands_Q15[ VAD_N_BANDS ];
- opus_int input_tilt_Q15;
- opus_int SNR_dB_Q7; /* Quality setting */
-
- opus_int8 VAD_flags[ MAX_FRAMES_PER_PACKET ];
- opus_int8 LBRR_flag;
- opus_int LBRR_flags[ MAX_FRAMES_PER_PACKET ];
-
- SideInfoIndices indices;
- opus_int8 pulses[ MAX_FRAME_LENGTH ];
-
- int arch;
-
- /* Input/output buffering */
- opus_int16 inputBuf[ MAX_FRAME_LENGTH + 2 ]; /* Buffer containing input signal */
- opus_int inputBufIx;
- opus_int nFramesPerPacket;
- opus_int nFramesEncoded; /* Number of frames analyzed in current packet */
-
- opus_int nChannelsAPI;
- opus_int nChannelsInternal;
- opus_int channelNb;
-
- /* Parameters For LTP scaling Control */
- opus_int frames_since_onset;
-
- /* Specifically for entropy coding */
- opus_int ec_prevSignalType;
- opus_int16 ec_prevLagIndex;
-
- silk_resampler_state_struct resampler_state;
-
- /* DTX */
- opus_int useDTX; /* Flag to enable DTX */
- opus_int inDTX; /* Flag to signal DTX period */
- opus_int noSpeechCounter; /* Counts concecutive nonactive frames, used by DTX */
-
- /* Inband Low Bitrate Redundancy (LBRR) data */
- opus_int useInBandFEC; /* Saves the API setting for query */
- opus_int LBRR_enabled; /* Depends on useInBandFRC, bitrate and packet loss rate */
- opus_int LBRR_GainIncreases; /* Gains increment for coding LBRR frames */
- SideInfoIndices indices_LBRR[ MAX_FRAMES_PER_PACKET ];
- opus_int8 pulses_LBRR[ MAX_FRAMES_PER_PACKET ][ MAX_FRAME_LENGTH ];
-} silk_encoder_state;
-
-
-/* Struct for Packet Loss Concealment */
-typedef struct {
- opus_int32 pitchL_Q8; /* Pitch lag to use for voiced concealment */
- opus_int16 LTPCoef_Q14[ LTP_ORDER ]; /* LTP coeficients to use for voiced concealment */
- opus_int16 prevLPC_Q12[ MAX_LPC_ORDER ];
- opus_int last_frame_lost; /* Was previous frame lost */
- opus_int32 rand_seed; /* Seed for unvoiced signal generation */
- opus_int16 randScale_Q14; /* Scaling of unvoiced random signal */
- opus_int32 conc_energy;
- opus_int conc_energy_shift;
- opus_int16 prevLTP_scale_Q14;
- opus_int32 prevGain_Q16[ 2 ];
- opus_int fs_kHz;
- opus_int nb_subfr;
- opus_int subfr_length;
-} silk_PLC_struct;
-
-/* Struct for CNG */
-typedef struct {
- opus_int32 CNG_exc_buf_Q14[ MAX_FRAME_LENGTH ];
- opus_int16 CNG_smth_NLSF_Q15[ MAX_LPC_ORDER ];
- opus_int32 CNG_synth_state[ MAX_LPC_ORDER ];
- opus_int32 CNG_smth_Gain_Q16;
- opus_int32 rand_seed;
- opus_int fs_kHz;
-} silk_CNG_struct;
-
-/********************************/
-/* Decoder state */
-/********************************/
-typedef struct {
- opus_int32 prev_gain_Q16;
- opus_int32 exc_Q14[ MAX_FRAME_LENGTH ];
- opus_int32 sLPC_Q14_buf[ MAX_LPC_ORDER ];
- opus_int16 outBuf[ MAX_FRAME_LENGTH + 2 * MAX_SUB_FRAME_LENGTH ]; /* Buffer for output signal */
- opus_int lagPrev; /* Previous Lag */
- opus_int8 LastGainIndex; /* Previous gain index */
- opus_int fs_kHz; /* Sampling frequency in kHz */
- opus_int32 fs_API_hz; /* API sample frequency (Hz) */
- opus_int nb_subfr; /* Number of 5 ms subframes in a frame */
- opus_int frame_length; /* Frame length (samples) */
- opus_int subfr_length; /* Subframe length (samples) */
- opus_int ltp_mem_length; /* Length of LTP memory */
- opus_int LPC_order; /* LPC order */
- opus_int16 prevNLSF_Q15[ MAX_LPC_ORDER ]; /* Used to interpolate LSFs */
- opus_int first_frame_after_reset; /* Flag for deactivating NLSF interpolation */
- const opus_uint8 *pitch_lag_low_bits_iCDF; /* Pointer to iCDF table for low bits of pitch lag index */
- const opus_uint8 *pitch_contour_iCDF; /* Pointer to iCDF table for pitch contour index */
-
- /* For buffering payload in case of more frames per packet */
- opus_int nFramesDecoded;
- opus_int nFramesPerPacket;
-
- /* Specifically for entropy coding */
- opus_int ec_prevSignalType;
- opus_int16 ec_prevLagIndex;
-
- opus_int VAD_flags[ MAX_FRAMES_PER_PACKET ];
- opus_int LBRR_flag;
- opus_int LBRR_flags[ MAX_FRAMES_PER_PACKET ];
-
- silk_resampler_state_struct resampler_state;
-
- const silk_NLSF_CB_struct *psNLSF_CB; /* Pointer to NLSF codebook */
-
- /* Quantization indices */
- SideInfoIndices indices;
-
- /* CNG state */
- silk_CNG_struct sCNG;
-
- /* Stuff used for PLC */
- opus_int lossCnt;
- opus_int prevSignalType;
-
- silk_PLC_struct sPLC;
-
-} silk_decoder_state;
-
-/************************/
-/* Decoder control */
-/************************/
-typedef struct {
- /* Prediction and coding parameters */
- opus_int pitchL[ MAX_NB_SUBFR ];
- opus_int32 Gains_Q16[ MAX_NB_SUBFR ];
- /* Holds interpolated and final coefficients, 4-byte aligned */
- silk_DWORD_ALIGN opus_int16 PredCoef_Q12[ 2 ][ MAX_LPC_ORDER ];
- opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ];
- opus_int LTP_scale_Q14;
-} silk_decoder_control;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/sum_sqr_shift.c b/thirdparty/opus/silk/sum_sqr_shift.c
deleted file mode 100644
index 129df191d8..0000000000
--- a/thirdparty/opus/silk/sum_sqr_shift.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-
-/* Compute number of bits to right shift the sum of squares of a vector */
-/* of int16s to make it fit in an int32 */
-void silk_sum_sqr_shift(
- opus_int32 *energy, /* O Energy of x, after shifting to the right */
- opus_int *shift, /* O Number of bits right shift applied to energy */
- const opus_int16 *x, /* I Input vector */
- opus_int len /* I Length of input vector */
-)
-{
- opus_int i, shft;
- opus_int32 nrg_tmp, nrg;
-
- nrg = 0;
- shft = 0;
- len--;
- for( i = 0; i < len; i += 2 ) {
- nrg = silk_SMLABB_ovflw( nrg, x[ i ], x[ i ] );
- nrg = silk_SMLABB_ovflw( nrg, x[ i + 1 ], x[ i + 1 ] );
- if( nrg < 0 ) {
- /* Scale down */
- nrg = (opus_int32)silk_RSHIFT_uint( (opus_uint32)nrg, 2 );
- shft = 2;
- i+=2;
- break;
- }
- }
- for( ; i < len; i += 2 ) {
- nrg_tmp = silk_SMULBB( x[ i ], x[ i ] );
- nrg_tmp = silk_SMLABB_ovflw( nrg_tmp, x[ i + 1 ], x[ i + 1 ] );
- nrg = (opus_int32)silk_ADD_RSHIFT_uint( nrg, (opus_uint32)nrg_tmp, shft );
- if( nrg < 0 ) {
- /* Scale down */
- nrg = (opus_int32)silk_RSHIFT_uint( (opus_uint32)nrg, 2 );
- shft += 2;
- }
- }
- if( i == len ) {
- /* One sample left to process */
- nrg_tmp = silk_SMULBB( x[ i ], x[ i ] );
- nrg = (opus_int32)silk_ADD_RSHIFT_uint( nrg, nrg_tmp, shft );
- }
-
- /* Make sure to have at least one extra leading zero (two leading zeros in total) */
- if( nrg & 0xC0000000 ) {
- nrg = silk_RSHIFT_uint( (opus_uint32)nrg, 2 );
- shft += 2;
- }
-
- /* Output arguments */
- *shift = shft;
- *energy = nrg;
-}
-
diff --git a/thirdparty/opus/silk/table_LSF_cos.c b/thirdparty/opus/silk/table_LSF_cos.c
deleted file mode 100644
index ec9dc63927..0000000000
--- a/thirdparty/opus/silk/table_LSF_cos.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tables.h"
-
-/* Cosine approximation table for LSF conversion */
-/* Q12 values (even) */
-const opus_int16 silk_LSFCosTab_FIX_Q12[ LSF_COS_TAB_SZ_FIX + 1 ] = {
- 8192, 8190, 8182, 8170,
- 8152, 8130, 8104, 8072,
- 8034, 7994, 7946, 7896,
- 7840, 7778, 7714, 7644,
- 7568, 7490, 7406, 7318,
- 7226, 7128, 7026, 6922,
- 6812, 6698, 6580, 6458,
- 6332, 6204, 6070, 5934,
- 5792, 5648, 5502, 5352,
- 5198, 5040, 4880, 4718,
- 4552, 4382, 4212, 4038,
- 3862, 3684, 3502, 3320,
- 3136, 2948, 2760, 2570,
- 2378, 2186, 1990, 1794,
- 1598, 1400, 1202, 1002,
- 802, 602, 402, 202,
- 0, -202, -402, -602,
- -802, -1002, -1202, -1400,
- -1598, -1794, -1990, -2186,
- -2378, -2570, -2760, -2948,
- -3136, -3320, -3502, -3684,
- -3862, -4038, -4212, -4382,
- -4552, -4718, -4880, -5040,
- -5198, -5352, -5502, -5648,
- -5792, -5934, -6070, -6204,
- -6332, -6458, -6580, -6698,
- -6812, -6922, -7026, -7128,
- -7226, -7318, -7406, -7490,
- -7568, -7644, -7714, -7778,
- -7840, -7896, -7946, -7994,
- -8034, -8072, -8104, -8130,
- -8152, -8170, -8182, -8190,
- -8192
-};
diff --git a/thirdparty/opus/silk/tables.h b/thirdparty/opus/silk/tables.h
deleted file mode 100644
index 7fea6fda39..0000000000
--- a/thirdparty/opus/silk/tables.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_TABLES_H
-#define SILK_TABLES_H
-
-#include "define.h"
-#include "structs.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Entropy coding tables (with size in bytes indicated) */
-extern const opus_uint8 silk_gain_iCDF[ 3 ][ N_LEVELS_QGAIN / 8 ]; /* 24 */
-extern const opus_uint8 silk_delta_gain_iCDF[ MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 ]; /* 41 */
-
-extern const opus_uint8 silk_pitch_lag_iCDF[ 2 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) ];/* 32 */
-extern const opus_uint8 silk_pitch_delta_iCDF[ 21 ]; /* 21 */
-extern const opus_uint8 silk_pitch_contour_iCDF[ 34 ]; /* 34 */
-extern const opus_uint8 silk_pitch_contour_NB_iCDF[ 11 ]; /* 11 */
-extern const opus_uint8 silk_pitch_contour_10_ms_iCDF[ 12 ]; /* 12 */
-extern const opus_uint8 silk_pitch_contour_10_ms_NB_iCDF[ 3 ]; /* 3 */
-
-extern const opus_uint8 silk_pulses_per_block_iCDF[ N_RATE_LEVELS ][ SILK_MAX_PULSES + 2 ]; /* 180 */
-extern const opus_uint8 silk_pulses_per_block_BITS_Q5[ N_RATE_LEVELS - 1 ][ SILK_MAX_PULSES + 2 ]; /* 162 */
-
-extern const opus_uint8 silk_rate_levels_iCDF[ 2 ][ N_RATE_LEVELS - 1 ]; /* 18 */
-extern const opus_uint8 silk_rate_levels_BITS_Q5[ 2 ][ N_RATE_LEVELS - 1 ]; /* 18 */
-
-extern const opus_uint8 silk_max_pulses_table[ 4 ]; /* 4 */
-
-extern const opus_uint8 silk_shell_code_table0[ 152 ]; /* 152 */
-extern const opus_uint8 silk_shell_code_table1[ 152 ]; /* 152 */
-extern const opus_uint8 silk_shell_code_table2[ 152 ]; /* 152 */
-extern const opus_uint8 silk_shell_code_table3[ 152 ]; /* 152 */
-extern const opus_uint8 silk_shell_code_table_offsets[ SILK_MAX_PULSES + 1 ]; /* 17 */
-
-extern const opus_uint8 silk_lsb_iCDF[ 2 ]; /* 2 */
-
-extern const opus_uint8 silk_sign_iCDF[ 42 ]; /* 42 */
-
-extern const opus_uint8 silk_uniform3_iCDF[ 3 ]; /* 3 */
-extern const opus_uint8 silk_uniform4_iCDF[ 4 ]; /* 4 */
-extern const opus_uint8 silk_uniform5_iCDF[ 5 ]; /* 5 */
-extern const opus_uint8 silk_uniform6_iCDF[ 6 ]; /* 6 */
-extern const opus_uint8 silk_uniform8_iCDF[ 8 ]; /* 8 */
-
-extern const opus_uint8 silk_NLSF_EXT_iCDF[ 7 ]; /* 7 */
-
-extern const opus_uint8 silk_LTP_per_index_iCDF[ 3 ]; /* 3 */
-extern const opus_uint8 * const silk_LTP_gain_iCDF_ptrs[ NB_LTP_CBKS ]; /* 3 */
-extern const opus_uint8 * const silk_LTP_gain_BITS_Q5_ptrs[ NB_LTP_CBKS ]; /* 3 */
-extern const opus_int16 silk_LTP_gain_middle_avg_RD_Q14;
-extern const opus_int8 * const silk_LTP_vq_ptrs_Q7[ NB_LTP_CBKS ]; /* 168 */
-extern const opus_uint8 * const silk_LTP_vq_gain_ptrs_Q7[NB_LTP_CBKS];
-
-extern const opus_int8 silk_LTP_vq_sizes[ NB_LTP_CBKS ]; /* 3 */
-
-extern const opus_uint8 silk_LTPscale_iCDF[ 3 ]; /* 4 */
-extern const opus_int16 silk_LTPScales_table_Q14[ 3 ]; /* 6 */
-
-extern const opus_uint8 silk_type_offset_VAD_iCDF[ 4 ]; /* 4 */
-extern const opus_uint8 silk_type_offset_no_VAD_iCDF[ 2 ]; /* 2 */
-
-extern const opus_int16 silk_stereo_pred_quant_Q13[ STEREO_QUANT_TAB_SIZE ]; /* 32 */
-extern const opus_uint8 silk_stereo_pred_joint_iCDF[ 25 ]; /* 25 */
-extern const opus_uint8 silk_stereo_only_code_mid_iCDF[ 2 ]; /* 2 */
-
-extern const opus_uint8 * const silk_LBRR_flags_iCDF_ptr[ 2 ]; /* 10 */
-
-extern const opus_uint8 silk_NLSF_interpolation_factor_iCDF[ 5 ]; /* 5 */
-
-extern const silk_NLSF_CB_struct silk_NLSF_CB_WB; /* 1040 */
-extern const silk_NLSF_CB_struct silk_NLSF_CB_NB_MB; /* 728 */
-
-/* Piece-wise linear mapping from bitrate in kbps to coding quality in dB SNR */
-extern const opus_int32 silk_TargetRate_table_NB[ TARGET_RATE_TAB_SZ ]; /* 32 */
-extern const opus_int32 silk_TargetRate_table_MB[ TARGET_RATE_TAB_SZ ]; /* 32 */
-extern const opus_int32 silk_TargetRate_table_WB[ TARGET_RATE_TAB_SZ ]; /* 32 */
-extern const opus_int16 silk_SNR_table_Q1[ TARGET_RATE_TAB_SZ ]; /* 32 */
-
-/* Quantization offsets */
-extern const opus_int16 silk_Quantization_Offsets_Q10[ 2 ][ 2 ]; /* 8 */
-
-/* Interpolation points for filter coefficients used in the bandwidth transition smoother */
-extern const opus_int32 silk_Transition_LP_B_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NB ]; /* 60 */
-extern const opus_int32 silk_Transition_LP_A_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NA ]; /* 60 */
-
-/* Rom table with cosine values */
-extern const opus_int16 silk_LSFCosTab_FIX_Q12[ LSF_COS_TAB_SZ_FIX + 1 ]; /* 258 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/thirdparty/opus/silk/tables_LTP.c b/thirdparty/opus/silk/tables_LTP.c
deleted file mode 100644
index 0e6a0254d5..0000000000
--- a/thirdparty/opus/silk/tables_LTP.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tables.h"
-
-const opus_uint8 silk_LTP_per_index_iCDF[3] = {
- 179, 99, 0
-};
-
-static const opus_uint8 silk_LTP_gain_iCDF_0[8] = {
- 71, 56, 43, 30, 21, 12, 6, 0
-};
-
-static const opus_uint8 silk_LTP_gain_iCDF_1[16] = {
- 199, 165, 144, 124, 109, 96, 84, 71,
- 61, 51, 42, 32, 23, 15, 8, 0
-};
-
-static const opus_uint8 silk_LTP_gain_iCDF_2[32] = {
- 241, 225, 211, 199, 187, 175, 164, 153,
- 142, 132, 123, 114, 105, 96, 88, 80,
- 72, 64, 57, 50, 44, 38, 33, 29,
- 24, 20, 16, 12, 9, 5, 2, 0
-};
-
-const opus_int16 silk_LTP_gain_middle_avg_RD_Q14 = 12304;
-
-static const opus_uint8 silk_LTP_gain_BITS_Q5_0[8] = {
- 15, 131, 138, 138, 155, 155, 173, 173
-};
-
-static const opus_uint8 silk_LTP_gain_BITS_Q5_1[16] = {
- 69, 93, 115, 118, 131, 138, 141, 138,
- 150, 150, 155, 150, 155, 160, 166, 160
-};
-
-static const opus_uint8 silk_LTP_gain_BITS_Q5_2[32] = {
- 131, 128, 134, 141, 141, 141, 145, 145,
- 145, 150, 155, 155, 155, 155, 160, 160,
- 160, 160, 166, 166, 173, 173, 182, 192,
- 182, 192, 192, 192, 205, 192, 205, 224
-};
-
-const opus_uint8 * const silk_LTP_gain_iCDF_ptrs[NB_LTP_CBKS] = {
- silk_LTP_gain_iCDF_0,
- silk_LTP_gain_iCDF_1,
- silk_LTP_gain_iCDF_2
-};
-
-const opus_uint8 * const silk_LTP_gain_BITS_Q5_ptrs[NB_LTP_CBKS] = {
- silk_LTP_gain_BITS_Q5_0,
- silk_LTP_gain_BITS_Q5_1,
- silk_LTP_gain_BITS_Q5_2
-};
-
-static const opus_int8 silk_LTP_gain_vq_0[8][5] =
-{
-{
- 4, 6, 24, 7, 5
-},
-{
- 0, 0, 2, 0, 0
-},
-{
- 12, 28, 41, 13, -4
-},
-{
- -9, 15, 42, 25, 14
-},
-{
- 1, -2, 62, 41, -9
-},
-{
- -10, 37, 65, -4, 3
-},
-{
- -6, 4, 66, 7, -8
-},
-{
- 16, 14, 38, -3, 33
-}
-};
-
-static const opus_int8 silk_LTP_gain_vq_1[16][5] =
-{
-{
- 13, 22, 39, 23, 12
-},
-{
- -1, 36, 64, 27, -6
-},
-{
- -7, 10, 55, 43, 17
-},
-{
- 1, 1, 8, 1, 1
-},
-{
- 6, -11, 74, 53, -9
-},
-{
- -12, 55, 76, -12, 8
-},
-{
- -3, 3, 93, 27, -4
-},
-{
- 26, 39, 59, 3, -8
-},
-{
- 2, 0, 77, 11, 9
-},
-{
- -8, 22, 44, -6, 7
-},
-{
- 40, 9, 26, 3, 9
-},
-{
- -7, 20, 101, -7, 4
-},
-{
- 3, -8, 42, 26, 0
-},
-{
- -15, 33, 68, 2, 23
-},
-{
- -2, 55, 46, -2, 15
-},
-{
- 3, -1, 21, 16, 41
-}
-};
-
-static const opus_int8 silk_LTP_gain_vq_2[32][5] =
-{
-{
- -6, 27, 61, 39, 5
-},
-{
- -11, 42, 88, 4, 1
-},
-{
- -2, 60, 65, 6, -4
-},
-{
- -1, -5, 73, 56, 1
-},
-{
- -9, 19, 94, 29, -9
-},
-{
- 0, 12, 99, 6, 4
-},
-{
- 8, -19, 102, 46, -13
-},
-{
- 3, 2, 13, 3, 2
-},
-{
- 9, -21, 84, 72, -18
-},
-{
- -11, 46, 104, -22, 8
-},
-{
- 18, 38, 48, 23, 0
-},
-{
- -16, 70, 83, -21, 11
-},
-{
- 5, -11, 117, 22, -8
-},
-{
- -6, 23, 117, -12, 3
-},
-{
- 3, -8, 95, 28, 4
-},
-{
- -10, 15, 77, 60, -15
-},
-{
- -1, 4, 124, 2, -4
-},
-{
- 3, 38, 84, 24, -25
-},
-{
- 2, 13, 42, 13, 31
-},
-{
- 21, -4, 56, 46, -1
-},
-{
- -1, 35, 79, -13, 19
-},
-{
- -7, 65, 88, -9, -14
-},
-{
- 20, 4, 81, 49, -29
-},
-{
- 20, 0, 75, 3, -17
-},
-{
- 5, -9, 44, 92, -8
-},
-{
- 1, -3, 22, 69, 31
-},
-{
- -6, 95, 41, -12, 5
-},
-{
- 39, 67, 16, -4, 1
-},
-{
- 0, -6, 120, 55, -36
-},
-{
- -13, 44, 122, 4, -24
-},
-{
- 81, 5, 11, 3, 7
-},
-{
- 2, 0, 9, 10, 88
-}
-};
-
-const opus_int8 * const silk_LTP_vq_ptrs_Q7[NB_LTP_CBKS] = {
- (opus_int8 *)&silk_LTP_gain_vq_0[0][0],
- (opus_int8 *)&silk_LTP_gain_vq_1[0][0],
- (opus_int8 *)&silk_LTP_gain_vq_2[0][0]
-};
-
-/* Maximum frequency-dependent response of the pitch taps above,
- computed as max(abs(freqz(taps))) */
-static const opus_uint8 silk_LTP_gain_vq_0_gain[8] = {
- 46, 2, 90, 87, 93, 91, 82, 98
-};
-
-static const opus_uint8 silk_LTP_gain_vq_1_gain[16] = {
- 109, 120, 118, 12, 113, 115, 117, 119,
- 99, 59, 87, 111, 63, 111, 112, 80
-};
-
-static const opus_uint8 silk_LTP_gain_vq_2_gain[32] = {
- 126, 124, 125, 124, 129, 121, 126, 23,
- 132, 127, 127, 127, 126, 127, 122, 133,
- 130, 134, 101, 118, 119, 145, 126, 86,
- 124, 120, 123, 119, 170, 173, 107, 109
-};
-
-const opus_uint8 * const silk_LTP_vq_gain_ptrs_Q7[NB_LTP_CBKS] = {
- &silk_LTP_gain_vq_0_gain[0],
- &silk_LTP_gain_vq_1_gain[0],
- &silk_LTP_gain_vq_2_gain[0]
-};
-
-const opus_int8 silk_LTP_vq_sizes[NB_LTP_CBKS] = {
- 8, 16, 32
-};
diff --git a/thirdparty/opus/silk/tables_NLSF_CB_NB_MB.c b/thirdparty/opus/silk/tables_NLSF_CB_NB_MB.c
deleted file mode 100644
index 8c59d207aa..0000000000
--- a/thirdparty/opus/silk/tables_NLSF_CB_NB_MB.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tables.h"
-
-static const opus_uint8 silk_NLSF_CB1_NB_MB_Q8[ 320 ] = {
- 12, 35, 60, 83, 108, 132, 157, 180,
- 206, 228, 15, 32, 55, 77, 101, 125,
- 151, 175, 201, 225, 19, 42, 66, 89,
- 114, 137, 162, 184, 209, 230, 12, 25,
- 50, 72, 97, 120, 147, 172, 200, 223,
- 26, 44, 69, 90, 114, 135, 159, 180,
- 205, 225, 13, 22, 53, 80, 106, 130,
- 156, 180, 205, 228, 15, 25, 44, 64,
- 90, 115, 142, 168, 196, 222, 19, 24,
- 62, 82, 100, 120, 145, 168, 190, 214,
- 22, 31, 50, 79, 103, 120, 151, 170,
- 203, 227, 21, 29, 45, 65, 106, 124,
- 150, 171, 196, 224, 30, 49, 75, 97,
- 121, 142, 165, 186, 209, 229, 19, 25,
- 52, 70, 93, 116, 143, 166, 192, 219,
- 26, 34, 62, 75, 97, 118, 145, 167,
- 194, 217, 25, 33, 56, 70, 91, 113,
- 143, 165, 196, 223, 21, 34, 51, 72,
- 97, 117, 145, 171, 196, 222, 20, 29,
- 50, 67, 90, 117, 144, 168, 197, 221,
- 22, 31, 48, 66, 95, 117, 146, 168,
- 196, 222, 24, 33, 51, 77, 116, 134,
- 158, 180, 200, 224, 21, 28, 70, 87,
- 106, 124, 149, 170, 194, 217, 26, 33,
- 53, 64, 83, 117, 152, 173, 204, 225,
- 27, 34, 65, 95, 108, 129, 155, 174,
- 210, 225, 20, 26, 72, 99, 113, 131,
- 154, 176, 200, 219, 34, 43, 61, 78,
- 93, 114, 155, 177, 205, 229, 23, 29,
- 54, 97, 124, 138, 163, 179, 209, 229,
- 30, 38, 56, 89, 118, 129, 158, 178,
- 200, 231, 21, 29, 49, 63, 85, 111,
- 142, 163, 193, 222, 27, 48, 77, 103,
- 133, 158, 179, 196, 215, 232, 29, 47,
- 74, 99, 124, 151, 176, 198, 220, 237,
- 33, 42, 61, 76, 93, 121, 155, 174,
- 207, 225, 29, 53, 87, 112, 136, 154,
- 170, 188, 208, 227, 24, 30, 52, 84,
- 131, 150, 166, 186, 203, 229, 37, 48,
- 64, 84, 104, 118, 156, 177, 201, 230
-};
-
-static const opus_uint8 silk_NLSF_CB1_iCDF_NB_MB[ 64 ] = {
- 212, 178, 148, 129, 108, 96, 85, 82,
- 79, 77, 61, 59, 57, 56, 51, 49,
- 48, 45, 42, 41, 40, 38, 36, 34,
- 31, 30, 21, 12, 10, 3, 1, 0,
- 255, 245, 244, 236, 233, 225, 217, 203,
- 190, 176, 175, 161, 149, 136, 125, 114,
- 102, 91, 81, 71, 60, 52, 43, 35,
- 28, 20, 19, 18, 12, 11, 5, 0
-};
-
-static const opus_uint8 silk_NLSF_CB2_SELECT_NB_MB[ 160 ] = {
- 16, 0, 0, 0, 0, 99, 66, 36,
- 36, 34, 36, 34, 34, 34, 34, 83,
- 69, 36, 52, 34, 116, 102, 70, 68,
- 68, 176, 102, 68, 68, 34, 65, 85,
- 68, 84, 36, 116, 141, 152, 139, 170,
- 132, 187, 184, 216, 137, 132, 249, 168,
- 185, 139, 104, 102, 100, 68, 68, 178,
- 218, 185, 185, 170, 244, 216, 187, 187,
- 170, 244, 187, 187, 219, 138, 103, 155,
- 184, 185, 137, 116, 183, 155, 152, 136,
- 132, 217, 184, 184, 170, 164, 217, 171,
- 155, 139, 244, 169, 184, 185, 170, 164,
- 216, 223, 218, 138, 214, 143, 188, 218,
- 168, 244, 141, 136, 155, 170, 168, 138,
- 220, 219, 139, 164, 219, 202, 216, 137,
- 168, 186, 246, 185, 139, 116, 185, 219,
- 185, 138, 100, 100, 134, 100, 102, 34,
- 68, 68, 100, 68, 168, 203, 221, 218,
- 168, 167, 154, 136, 104, 70, 164, 246,
- 171, 137, 139, 137, 155, 218, 219, 139
-};
-
-static const opus_uint8 silk_NLSF_CB2_iCDF_NB_MB[ 72 ] = {
- 255, 254, 253, 238, 14, 3, 2, 1,
- 0, 255, 254, 252, 218, 35, 3, 2,
- 1, 0, 255, 254, 250, 208, 59, 4,
- 2, 1, 0, 255, 254, 246, 194, 71,
- 10, 2, 1, 0, 255, 252, 236, 183,
- 82, 8, 2, 1, 0, 255, 252, 235,
- 180, 90, 17, 2, 1, 0, 255, 248,
- 224, 171, 97, 30, 4, 1, 0, 255,
- 254, 236, 173, 95, 37, 7, 1, 0
-};
-
-static const opus_uint8 silk_NLSF_CB2_BITS_NB_MB_Q5[ 72 ] = {
- 255, 255, 255, 131, 6, 145, 255, 255,
- 255, 255, 255, 236, 93, 15, 96, 255,
- 255, 255, 255, 255, 194, 83, 25, 71,
- 221, 255, 255, 255, 255, 162, 73, 34,
- 66, 162, 255, 255, 255, 210, 126, 73,
- 43, 57, 173, 255, 255, 255, 201, 125,
- 71, 48, 58, 130, 255, 255, 255, 166,
- 110, 73, 57, 62, 104, 210, 255, 255,
- 251, 123, 65, 55, 68, 100, 171, 255
-};
-
-static const opus_uint8 silk_NLSF_PRED_NB_MB_Q8[ 18 ] = {
- 179, 138, 140, 148, 151, 149, 153, 151,
- 163, 116, 67, 82, 59, 92, 72, 100,
- 89, 92
-};
-
-static const opus_int16 silk_NLSF_DELTA_MIN_NB_MB_Q15[ 11 ] = {
- 250, 3, 6, 3, 3, 3, 4, 3,
- 3, 3, 461
-};
-
-const silk_NLSF_CB_struct silk_NLSF_CB_NB_MB =
-{
- 32,
- 10,
- SILK_FIX_CONST( 0.18, 16 ),
- SILK_FIX_CONST( 1.0 / 0.18, 6 ),
- silk_NLSF_CB1_NB_MB_Q8,
- silk_NLSF_CB1_iCDF_NB_MB,
- silk_NLSF_PRED_NB_MB_Q8,
- silk_NLSF_CB2_SELECT_NB_MB,
- silk_NLSF_CB2_iCDF_NB_MB,
- silk_NLSF_CB2_BITS_NB_MB_Q5,
- silk_NLSF_DELTA_MIN_NB_MB_Q15,
-};
diff --git a/thirdparty/opus/silk/tables_NLSF_CB_WB.c b/thirdparty/opus/silk/tables_NLSF_CB_WB.c
deleted file mode 100644
index 50af87eb2e..0000000000
--- a/thirdparty/opus/silk/tables_NLSF_CB_WB.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tables.h"
-
-static const opus_uint8 silk_NLSF_CB1_WB_Q8[ 512 ] = {
- 7, 23, 38, 54, 69, 85, 100, 116,
- 131, 147, 162, 178, 193, 208, 223, 239,
- 13, 25, 41, 55, 69, 83, 98, 112,
- 127, 142, 157, 171, 187, 203, 220, 236,
- 15, 21, 34, 51, 61, 78, 92, 106,
- 126, 136, 152, 167, 185, 205, 225, 240,
- 10, 21, 36, 50, 63, 79, 95, 110,
- 126, 141, 157, 173, 189, 205, 221, 237,
- 17, 20, 37, 51, 59, 78, 89, 107,
- 123, 134, 150, 164, 184, 205, 224, 240,
- 10, 15, 32, 51, 67, 81, 96, 112,
- 129, 142, 158, 173, 189, 204, 220, 236,
- 8, 21, 37, 51, 65, 79, 98, 113,
- 126, 138, 155, 168, 179, 192, 209, 218,
- 12, 15, 34, 55, 63, 78, 87, 108,
- 118, 131, 148, 167, 185, 203, 219, 236,
- 16, 19, 32, 36, 56, 79, 91, 108,
- 118, 136, 154, 171, 186, 204, 220, 237,
- 11, 28, 43, 58, 74, 89, 105, 120,
- 135, 150, 165, 180, 196, 211, 226, 241,
- 6, 16, 33, 46, 60, 75, 92, 107,
- 123, 137, 156, 169, 185, 199, 214, 225,
- 11, 19, 30, 44, 57, 74, 89, 105,
- 121, 135, 152, 169, 186, 202, 218, 234,
- 12, 19, 29, 46, 57, 71, 88, 100,
- 120, 132, 148, 165, 182, 199, 216, 233,
- 17, 23, 35, 46, 56, 77, 92, 106,
- 123, 134, 152, 167, 185, 204, 222, 237,
- 14, 17, 45, 53, 63, 75, 89, 107,
- 115, 132, 151, 171, 188, 206, 221, 240,
- 9, 16, 29, 40, 56, 71, 88, 103,
- 119, 137, 154, 171, 189, 205, 222, 237,
- 16, 19, 36, 48, 57, 76, 87, 105,
- 118, 132, 150, 167, 185, 202, 218, 236,
- 12, 17, 29, 54, 71, 81, 94, 104,
- 126, 136, 149, 164, 182, 201, 221, 237,
- 15, 28, 47, 62, 79, 97, 115, 129,
- 142, 155, 168, 180, 194, 208, 223, 238,
- 8, 14, 30, 45, 62, 78, 94, 111,
- 127, 143, 159, 175, 192, 207, 223, 239,
- 17, 30, 49, 62, 79, 92, 107, 119,
- 132, 145, 160, 174, 190, 204, 220, 235,
- 14, 19, 36, 45, 61, 76, 91, 108,
- 121, 138, 154, 172, 189, 205, 222, 238,
- 12, 18, 31, 45, 60, 76, 91, 107,
- 123, 138, 154, 171, 187, 204, 221, 236,
- 13, 17, 31, 43, 53, 70, 83, 103,
- 114, 131, 149, 167, 185, 203, 220, 237,
- 17, 22, 35, 42, 58, 78, 93, 110,
- 125, 139, 155, 170, 188, 206, 224, 240,
- 8, 15, 34, 50, 67, 83, 99, 115,
- 131, 146, 162, 178, 193, 209, 224, 239,
- 13, 16, 41, 66, 73, 86, 95, 111,
- 128, 137, 150, 163, 183, 206, 225, 241,
- 17, 25, 37, 52, 63, 75, 92, 102,
- 119, 132, 144, 160, 175, 191, 212, 231,
- 19, 31, 49, 65, 83, 100, 117, 133,
- 147, 161, 174, 187, 200, 213, 227, 242,
- 18, 31, 52, 68, 88, 103, 117, 126,
- 138, 149, 163, 177, 192, 207, 223, 239,
- 16, 29, 47, 61, 76, 90, 106, 119,
- 133, 147, 161, 176, 193, 209, 224, 240,
- 15, 21, 35, 50, 61, 73, 86, 97,
- 110, 119, 129, 141, 175, 198, 218, 237
-};
-
-static const opus_uint8 silk_NLSF_CB1_iCDF_WB[ 64 ] = {
- 225, 204, 201, 184, 183, 175, 158, 154,
- 153, 135, 119, 115, 113, 110, 109, 99,
- 98, 95, 79, 68, 52, 50, 48, 45,
- 43, 32, 31, 27, 18, 10, 3, 0,
- 255, 251, 235, 230, 212, 201, 196, 182,
- 167, 166, 163, 151, 138, 124, 110, 104,
- 90, 78, 76, 70, 69, 57, 45, 34,
- 24, 21, 11, 6, 5, 4, 3, 0
-};
-
-static const opus_uint8 silk_NLSF_CB2_SELECT_WB[ 256 ] = {
- 0, 0, 0, 0, 0, 0, 0, 1,
- 100, 102, 102, 68, 68, 36, 34, 96,
- 164, 107, 158, 185, 180, 185, 139, 102,
- 64, 66, 36, 34, 34, 0, 1, 32,
- 208, 139, 141, 191, 152, 185, 155, 104,
- 96, 171, 104, 166, 102, 102, 102, 132,
- 1, 0, 0, 0, 0, 16, 16, 0,
- 80, 109, 78, 107, 185, 139, 103, 101,
- 208, 212, 141, 139, 173, 153, 123, 103,
- 36, 0, 0, 0, 0, 0, 0, 1,
- 48, 0, 0, 0, 0, 0, 0, 32,
- 68, 135, 123, 119, 119, 103, 69, 98,
- 68, 103, 120, 118, 118, 102, 71, 98,
- 134, 136, 157, 184, 182, 153, 139, 134,
- 208, 168, 248, 75, 189, 143, 121, 107,
- 32, 49, 34, 34, 34, 0, 17, 2,
- 210, 235, 139, 123, 185, 137, 105, 134,
- 98, 135, 104, 182, 100, 183, 171, 134,
- 100, 70, 68, 70, 66, 66, 34, 131,
- 64, 166, 102, 68, 36, 2, 1, 0,
- 134, 166, 102, 68, 34, 34, 66, 132,
- 212, 246, 158, 139, 107, 107, 87, 102,
- 100, 219, 125, 122, 137, 118, 103, 132,
- 114, 135, 137, 105, 171, 106, 50, 34,
- 164, 214, 141, 143, 185, 151, 121, 103,
- 192, 34, 0, 0, 0, 0, 0, 1,
- 208, 109, 74, 187, 134, 249, 159, 137,
- 102, 110, 154, 118, 87, 101, 119, 101,
- 0, 2, 0, 36, 36, 66, 68, 35,
- 96, 164, 102, 100, 36, 0, 2, 33,
- 167, 138, 174, 102, 100, 84, 2, 2,
- 100, 107, 120, 119, 36, 197, 24, 0
-};
-
-static const opus_uint8 silk_NLSF_CB2_iCDF_WB[ 72 ] = {
- 255, 254, 253, 244, 12, 3, 2, 1,
- 0, 255, 254, 252, 224, 38, 3, 2,
- 1, 0, 255, 254, 251, 209, 57, 4,
- 2, 1, 0, 255, 254, 244, 195, 69,
- 4, 2, 1, 0, 255, 251, 232, 184,
- 84, 7, 2, 1, 0, 255, 254, 240,
- 186, 86, 14, 2, 1, 0, 255, 254,
- 239, 178, 91, 30, 5, 1, 0, 255,
- 248, 227, 177, 100, 19, 2, 1, 0
-};
-
-static const opus_uint8 silk_NLSF_CB2_BITS_WB_Q5[ 72 ] = {
- 255, 255, 255, 156, 4, 154, 255, 255,
- 255, 255, 255, 227, 102, 15, 92, 255,
- 255, 255, 255, 255, 213, 83, 24, 72,
- 236, 255, 255, 255, 255, 150, 76, 33,
- 63, 214, 255, 255, 255, 190, 121, 77,
- 43, 55, 185, 255, 255, 255, 245, 137,
- 71, 43, 59, 139, 255, 255, 255, 255,
- 131, 66, 50, 66, 107, 194, 255, 255,
- 166, 116, 76, 55, 53, 125, 255, 255
-};
-
-static const opus_uint8 silk_NLSF_PRED_WB_Q8[ 30 ] = {
- 175, 148, 160, 176, 178, 173, 174, 164,
- 177, 174, 196, 182, 198, 192, 182, 68,
- 62, 66, 60, 72, 117, 85, 90, 118,
- 136, 151, 142, 160, 142, 155
-};
-
-static const opus_int16 silk_NLSF_DELTA_MIN_WB_Q15[ 17 ] = {
- 100, 3, 40, 3, 3, 3, 5, 14,
- 14, 10, 11, 3, 8, 9, 7, 3,
- 347
-};
-
-const silk_NLSF_CB_struct silk_NLSF_CB_WB =
-{
- 32,
- 16,
- SILK_FIX_CONST( 0.15, 16 ),
- SILK_FIX_CONST( 1.0 / 0.15, 6 ),
- silk_NLSF_CB1_WB_Q8,
- silk_NLSF_CB1_iCDF_WB,
- silk_NLSF_PRED_WB_Q8,
- silk_NLSF_CB2_SELECT_WB,
- silk_NLSF_CB2_iCDF_WB,
- silk_NLSF_CB2_BITS_WB_Q5,
- silk_NLSF_DELTA_MIN_WB_Q15,
-};
-
diff --git a/thirdparty/opus/silk/tables_gain.c b/thirdparty/opus/silk/tables_gain.c
deleted file mode 100644
index 37e41d890c..0000000000
--- a/thirdparty/opus/silk/tables_gain.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tables.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-const opus_uint8 silk_gain_iCDF[ 3 ][ N_LEVELS_QGAIN / 8 ] =
-{
-{
- 224, 112, 44, 15, 3, 2, 1, 0
-},
-{
- 254, 237, 192, 132, 70, 23, 4, 0
-},
-{
- 255, 252, 226, 155, 61, 11, 2, 0
-}
-};
-
-const opus_uint8 silk_delta_gain_iCDF[ MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 ] = {
- 250, 245, 234, 203, 71, 50, 42, 38,
- 35, 33, 31, 29, 28, 27, 26, 25,
- 24, 23, 22, 21, 20, 19, 18, 17,
- 16, 15, 14, 13, 12, 11, 10, 9,
- 8, 7, 6, 5, 4, 3, 2, 1,
- 0
-};
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/thirdparty/opus/silk/tables_other.c b/thirdparty/opus/silk/tables_other.c
deleted file mode 100644
index 398686bf26..0000000000
--- a/thirdparty/opus/silk/tables_other.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "structs.h"
-#include "define.h"
-#include "tables.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Piece-wise linear mapping from bitrate in kbps to coding quality in dB SNR */
-const opus_int32 silk_TargetRate_table_NB[ TARGET_RATE_TAB_SZ ] = {
- 0, 8000, 9400, 11500, 13500, 17500, 25000, MAX_TARGET_RATE_BPS
-};
-const opus_int32 silk_TargetRate_table_MB[ TARGET_RATE_TAB_SZ ] = {
- 0, 9000, 12000, 14500, 18500, 24500, 35500, MAX_TARGET_RATE_BPS
-};
-const opus_int32 silk_TargetRate_table_WB[ TARGET_RATE_TAB_SZ ] = {
- 0, 10500, 14000, 17000, 21500, 28500, 42000, MAX_TARGET_RATE_BPS
-};
-const opus_int16 silk_SNR_table_Q1[ TARGET_RATE_TAB_SZ ] = {
- 18, 29, 38, 40, 46, 52, 62, 84
-};
-
-/* Tables for stereo predictor coding */
-const opus_int16 silk_stereo_pred_quant_Q13[ STEREO_QUANT_TAB_SIZE ] = {
- -13732, -10050, -8266, -7526, -6500, -5000, -2950, -820,
- 820, 2950, 5000, 6500, 7526, 8266, 10050, 13732
-};
-const opus_uint8 silk_stereo_pred_joint_iCDF[ 25 ] = {
- 249, 247, 246, 245, 244,
- 234, 210, 202, 201, 200,
- 197, 174, 82, 59, 56,
- 55, 54, 46, 22, 12,
- 11, 10, 9, 7, 0
-};
-const opus_uint8 silk_stereo_only_code_mid_iCDF[ 2 ] = { 64, 0 };
-
-/* Tables for LBRR flags */
-static const opus_uint8 silk_LBRR_flags_2_iCDF[ 3 ] = { 203, 150, 0 };
-static const opus_uint8 silk_LBRR_flags_3_iCDF[ 7 ] = { 215, 195, 166, 125, 110, 82, 0 };
-const opus_uint8 * const silk_LBRR_flags_iCDF_ptr[ 2 ] = {
- silk_LBRR_flags_2_iCDF,
- silk_LBRR_flags_3_iCDF
-};
-
-/* Table for LSB coding */
-const opus_uint8 silk_lsb_iCDF[ 2 ] = { 120, 0 };
-
-/* Tables for LTPScale */
-const opus_uint8 silk_LTPscale_iCDF[ 3 ] = { 128, 64, 0 };
-
-/* Tables for signal type and offset coding */
-const opus_uint8 silk_type_offset_VAD_iCDF[ 4 ] = {
- 232, 158, 10, 0
-};
-const opus_uint8 silk_type_offset_no_VAD_iCDF[ 2 ] = {
- 230, 0
-};
-
-/* Tables for NLSF interpolation factor */
-const opus_uint8 silk_NLSF_interpolation_factor_iCDF[ 5 ] = { 243, 221, 192, 181, 0 };
-
-/* Quantization offsets */
-const opus_int16 silk_Quantization_Offsets_Q10[ 2 ][ 2 ] = {
- { OFFSET_UVL_Q10, OFFSET_UVH_Q10 }, { OFFSET_VL_Q10, OFFSET_VH_Q10 }
-};
-
-/* Table for LTPScale */
-const opus_int16 silk_LTPScales_table_Q14[ 3 ] = { 15565, 12288, 8192 };
-
-/* Uniform entropy tables */
-const opus_uint8 silk_uniform3_iCDF[ 3 ] = { 171, 85, 0 };
-const opus_uint8 silk_uniform4_iCDF[ 4 ] = { 192, 128, 64, 0 };
-const opus_uint8 silk_uniform5_iCDF[ 5 ] = { 205, 154, 102, 51, 0 };
-const opus_uint8 silk_uniform6_iCDF[ 6 ] = { 213, 171, 128, 85, 43, 0 };
-const opus_uint8 silk_uniform8_iCDF[ 8 ] = { 224, 192, 160, 128, 96, 64, 32, 0 };
-
-const opus_uint8 silk_NLSF_EXT_iCDF[ 7 ] = { 100, 40, 16, 7, 3, 1, 0 };
-
-/* Elliptic/Cauer filters designed with 0.1 dB passband ripple,
- 80 dB minimum stopband attenuation, and
- [0.95 : 0.15 : 0.35] normalized cut off frequencies. */
-
-/* Interpolation points for filter coefficients used in the bandwidth transition smoother */
-const opus_int32 silk_Transition_LP_B_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NB ] =
-{
-{ 250767114, 501534038, 250767114 },
-{ 209867381, 419732057, 209867381 },
-{ 170987846, 341967853, 170987846 },
-{ 131531482, 263046905, 131531482 },
-{ 89306658, 178584282, 89306658 }
-};
-
-/* Interpolation points for filter coefficients used in the bandwidth transition smoother */
-const opus_int32 silk_Transition_LP_A_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NA ] =
-{
-{ 506393414, 239854379 },
-{ 411067935, 169683996 },
-{ 306733530, 116694253 },
-{ 185807084, 77959395 },
-{ 35497197, 57401098 }
-};
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/thirdparty/opus/silk/tables_pitch_lag.c b/thirdparty/opus/silk/tables_pitch_lag.c
deleted file mode 100644
index e80cc59a27..0000000000
--- a/thirdparty/opus/silk/tables_pitch_lag.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tables.h"
-
-const opus_uint8 silk_pitch_lag_iCDF[ 2 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) ] = {
- 253, 250, 244, 233, 212, 182, 150, 131,
- 120, 110, 98, 85, 72, 60, 49, 40,
- 32, 25, 19, 15, 13, 11, 9, 8,
- 7, 6, 5, 4, 3, 2, 1, 0
-};
-
-const opus_uint8 silk_pitch_delta_iCDF[21] = {
- 210, 208, 206, 203, 199, 193, 183, 168,
- 142, 104, 74, 52, 37, 27, 20, 14,
- 10, 6, 4, 2, 0
-};
-
-const opus_uint8 silk_pitch_contour_iCDF[34] = {
- 223, 201, 183, 167, 152, 138, 124, 111,
- 98, 88, 79, 70, 62, 56, 50, 44,
- 39, 35, 31, 27, 24, 21, 18, 16,
- 14, 12, 10, 8, 6, 4, 3, 2,
- 1, 0
-};
-
-const opus_uint8 silk_pitch_contour_NB_iCDF[11] = {
- 188, 176, 155, 138, 119, 97, 67, 43,
- 26, 10, 0
-};
-
-const opus_uint8 silk_pitch_contour_10_ms_iCDF[12] = {
- 165, 119, 80, 61, 47, 35, 27, 20,
- 14, 9, 4, 0
-};
-
-const opus_uint8 silk_pitch_contour_10_ms_NB_iCDF[3] = {
- 113, 63, 0
-};
-
-
diff --git a/thirdparty/opus/silk/tables_pulses_per_block.c b/thirdparty/opus/silk/tables_pulses_per_block.c
deleted file mode 100644
index c7c01c8893..0000000000
--- a/thirdparty/opus/silk/tables_pulses_per_block.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tables.h"
-
-const opus_uint8 silk_max_pulses_table[ 4 ] = {
- 8, 10, 12, 16
-};
-
-const opus_uint8 silk_pulses_per_block_iCDF[ 10 ][ 18 ] = {
-{
- 125, 51, 26, 18, 15, 12, 11, 10,
- 9, 8, 7, 6, 5, 4, 3, 2,
- 1, 0
-},
-{
- 198, 105, 45, 22, 15, 12, 11, 10,
- 9, 8, 7, 6, 5, 4, 3, 2,
- 1, 0
-},
-{
- 213, 162, 116, 83, 59, 43, 32, 24,
- 18, 15, 12, 9, 7, 6, 5, 3,
- 2, 0
-},
-{
- 239, 187, 116, 59, 28, 16, 11, 10,
- 9, 8, 7, 6, 5, 4, 3, 2,
- 1, 0
-},
-{
- 250, 229, 188, 135, 86, 51, 30, 19,
- 13, 10, 8, 6, 5, 4, 3, 2,
- 1, 0
-},
-{
- 249, 235, 213, 185, 156, 128, 103, 83,
- 66, 53, 42, 33, 26, 21, 17, 13,
- 10, 0
-},
-{
- 254, 249, 235, 206, 164, 118, 77, 46,
- 27, 16, 10, 7, 5, 4, 3, 2,
- 1, 0
-},
-{
- 255, 253, 249, 239, 220, 191, 156, 119,
- 85, 57, 37, 23, 15, 10, 6, 4,
- 2, 0
-},
-{
- 255, 253, 251, 246, 237, 223, 203, 179,
- 152, 124, 98, 75, 55, 40, 29, 21,
- 15, 0
-},
-{
- 255, 254, 253, 247, 220, 162, 106, 67,
- 42, 28, 18, 12, 9, 6, 4, 3,
- 2, 0
-}
-};
-
-const opus_uint8 silk_pulses_per_block_BITS_Q5[ 9 ][ 18 ] = {
-{
- 31, 57, 107, 160, 205, 205, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255
-},
-{
- 69, 47, 67, 111, 166, 205, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255
-},
-{
- 82, 74, 79, 95, 109, 128, 145, 160,
- 173, 205, 205, 205, 224, 255, 255, 224,
- 255, 224
-},
-{
- 125, 74, 59, 69, 97, 141, 182, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255
-},
-{
- 173, 115, 85, 73, 76, 92, 115, 145,
- 173, 205, 224, 224, 255, 255, 255, 255,
- 255, 255
-},
-{
- 166, 134, 113, 102, 101, 102, 107, 118,
- 125, 138, 145, 155, 166, 182, 192, 192,
- 205, 150
-},
-{
- 224, 182, 134, 101, 83, 79, 85, 97,
- 120, 145, 173, 205, 224, 255, 255, 255,
- 255, 255
-},
-{
- 255, 224, 192, 150, 120, 101, 92, 89,
- 93, 102, 118, 134, 160, 182, 192, 224,
- 224, 224
-},
-{
- 255, 224, 224, 182, 155, 134, 118, 109,
- 104, 102, 106, 111, 118, 131, 145, 160,
- 173, 131
-}
-};
-
-const opus_uint8 silk_rate_levels_iCDF[ 2 ][ 9 ] =
-{
-{
- 241, 190, 178, 132, 87, 74, 41, 14,
- 0
-},
-{
- 223, 193, 157, 140, 106, 57, 39, 18,
- 0
-}
-};
-
-const opus_uint8 silk_rate_levels_BITS_Q5[ 2 ][ 9 ] =
-{
-{
- 131, 74, 141, 79, 80, 138, 95, 104,
- 134
-},
-{
- 95, 99, 91, 125, 93, 76, 123, 115,
- 123
-}
-};
-
-const opus_uint8 silk_shell_code_table0[ 152 ] = {
- 128, 0, 214, 42, 0, 235, 128, 21,
- 0, 244, 184, 72, 11, 0, 248, 214,
- 128, 42, 7, 0, 248, 225, 170, 80,
- 25, 5, 0, 251, 236, 198, 126, 54,
- 18, 3, 0, 250, 238, 211, 159, 82,
- 35, 15, 5, 0, 250, 231, 203, 168,
- 128, 88, 53, 25, 6, 0, 252, 238,
- 216, 185, 148, 108, 71, 40, 18, 4,
- 0, 253, 243, 225, 199, 166, 128, 90,
- 57, 31, 13, 3, 0, 254, 246, 233,
- 212, 183, 147, 109, 73, 44, 23, 10,
- 2, 0, 255, 250, 240, 223, 198, 166,
- 128, 90, 58, 33, 16, 6, 1, 0,
- 255, 251, 244, 231, 210, 181, 146, 110,
- 75, 46, 25, 12, 5, 1, 0, 255,
- 253, 248, 238, 221, 196, 164, 128, 92,
- 60, 35, 18, 8, 3, 1, 0, 255,
- 253, 249, 242, 229, 208, 180, 146, 110,
- 76, 48, 27, 14, 7, 3, 1, 0
-};
-
-const opus_uint8 silk_shell_code_table1[ 152 ] = {
- 129, 0, 207, 50, 0, 236, 129, 20,
- 0, 245, 185, 72, 10, 0, 249, 213,
- 129, 42, 6, 0, 250, 226, 169, 87,
- 27, 4, 0, 251, 233, 194, 130, 62,
- 20, 4, 0, 250, 236, 207, 160, 99,
- 47, 17, 3, 0, 255, 240, 217, 182,
- 131, 81, 41, 11, 1, 0, 255, 254,
- 233, 201, 159, 107, 61, 20, 2, 1,
- 0, 255, 249, 233, 206, 170, 128, 86,
- 50, 23, 7, 1, 0, 255, 250, 238,
- 217, 186, 148, 108, 70, 39, 18, 6,
- 1, 0, 255, 252, 243, 226, 200, 166,
- 128, 90, 56, 30, 13, 4, 1, 0,
- 255, 252, 245, 231, 209, 180, 146, 110,
- 76, 47, 25, 11, 4, 1, 0, 255,
- 253, 248, 237, 219, 194, 163, 128, 93,
- 62, 37, 19, 8, 3, 1, 0, 255,
- 254, 250, 241, 226, 205, 177, 145, 111,
- 79, 51, 30, 15, 6, 2, 1, 0
-};
-
-const opus_uint8 silk_shell_code_table2[ 152 ] = {
- 129, 0, 203, 54, 0, 234, 129, 23,
- 0, 245, 184, 73, 10, 0, 250, 215,
- 129, 41, 5, 0, 252, 232, 173, 86,
- 24, 3, 0, 253, 240, 200, 129, 56,
- 15, 2, 0, 253, 244, 217, 164, 94,
- 38, 10, 1, 0, 253, 245, 226, 189,
- 132, 71, 27, 7, 1, 0, 253, 246,
- 231, 203, 159, 105, 56, 23, 6, 1,
- 0, 255, 248, 235, 213, 179, 133, 85,
- 47, 19, 5, 1, 0, 255, 254, 243,
- 221, 194, 159, 117, 70, 37, 12, 2,
- 1, 0, 255, 254, 248, 234, 208, 171,
- 128, 85, 48, 22, 8, 2, 1, 0,
- 255, 254, 250, 240, 220, 189, 149, 107,
- 67, 36, 16, 6, 2, 1, 0, 255,
- 254, 251, 243, 227, 201, 166, 128, 90,
- 55, 29, 13, 5, 2, 1, 0, 255,
- 254, 252, 246, 234, 213, 183, 147, 109,
- 73, 43, 22, 10, 4, 2, 1, 0
-};
-
-const opus_uint8 silk_shell_code_table3[ 152 ] = {
- 130, 0, 200, 58, 0, 231, 130, 26,
- 0, 244, 184, 76, 12, 0, 249, 214,
- 130, 43, 6, 0, 252, 232, 173, 87,
- 24, 3, 0, 253, 241, 203, 131, 56,
- 14, 2, 0, 254, 246, 221, 167, 94,
- 35, 8, 1, 0, 254, 249, 232, 193,
- 130, 65, 23, 5, 1, 0, 255, 251,
- 239, 211, 162, 99, 45, 15, 4, 1,
- 0, 255, 251, 243, 223, 186, 131, 74,
- 33, 11, 3, 1, 0, 255, 252, 245,
- 230, 202, 158, 105, 57, 24, 8, 2,
- 1, 0, 255, 253, 247, 235, 214, 179,
- 132, 84, 44, 19, 7, 2, 1, 0,
- 255, 254, 250, 240, 223, 196, 159, 112,
- 69, 36, 15, 6, 2, 1, 0, 255,
- 254, 253, 245, 231, 209, 176, 136, 93,
- 55, 27, 11, 3, 2, 1, 0, 255,
- 254, 253, 252, 239, 221, 194, 158, 117,
- 76, 42, 18, 4, 3, 2, 1, 0
-};
-
-const opus_uint8 silk_shell_code_table_offsets[ 17 ] = {
- 0, 0, 2, 5, 9, 14, 20, 27,
- 35, 44, 54, 65, 77, 90, 104, 119,
- 135
-};
-
-const opus_uint8 silk_sign_iCDF[ 42 ] = {
- 254, 49, 67, 77, 82, 93, 99,
- 198, 11, 18, 24, 31, 36, 45,
- 255, 46, 66, 78, 87, 94, 104,
- 208, 14, 21, 32, 42, 51, 66,
- 255, 94, 104, 109, 112, 115, 118,
- 248, 53, 69, 80, 88, 95, 102
-};
diff --git a/thirdparty/opus/silk/tuning_parameters.h b/thirdparty/opus/silk/tuning_parameters.h
deleted file mode 100644
index 5b8f404235..0000000000
--- a/thirdparty/opus/silk/tuning_parameters.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_TUNING_PARAMETERS_H
-#define SILK_TUNING_PARAMETERS_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Decay time for bitreservoir */
-#define BITRESERVOIR_DECAY_TIME_MS 500
-
-/*******************/
-/* Pitch estimator */
-/*******************/
-
-/* Level of noise floor for whitening filter LPC analysis in pitch analysis */
-#define FIND_PITCH_WHITE_NOISE_FRACTION 1e-3f
-
-/* Bandwidth expansion for whitening filter in pitch analysis */
-#define FIND_PITCH_BANDWIDTH_EXPANSION 0.99f
-
-/*********************/
-/* Linear prediction */
-/*********************/
-
-/* LPC analysis regularization */
-#define FIND_LPC_COND_FAC 1e-5f
-
-/* LTP analysis defines */
-#define FIND_LTP_COND_FAC 1e-5f
-#define LTP_DAMPING 0.05f
-#define LTP_SMOOTHING 0.1f
-
-/* LTP quantization settings */
-#define MU_LTP_QUANT_NB 0.03f
-#define MU_LTP_QUANT_MB 0.025f
-#define MU_LTP_QUANT_WB 0.02f
-
-/* Max cumulative LTP gain */
-#define MAX_SUM_LOG_GAIN_DB 250.0f
-
-/***********************/
-/* High pass filtering */
-/***********************/
-
-/* Smoothing parameters for low end of pitch frequency range estimation */
-#define VARIABLE_HP_SMTH_COEF1 0.1f
-#define VARIABLE_HP_SMTH_COEF2 0.015f
-#define VARIABLE_HP_MAX_DELTA_FREQ 0.4f
-
-/* Min and max cut-off frequency values (-3 dB points) */
-#define VARIABLE_HP_MIN_CUTOFF_HZ 60
-#define VARIABLE_HP_MAX_CUTOFF_HZ 100
-
-/***********/
-/* Various */
-/***********/
-
-/* VAD threshold */
-#define SPEECH_ACTIVITY_DTX_THRES 0.05f
-
-/* Speech Activity LBRR enable threshold */
-#define LBRR_SPEECH_ACTIVITY_THRES 0.3f
-
-/*************************/
-/* Perceptual parameters */
-/*************************/
-
-/* reduction in coding SNR during low speech activity */
-#define BG_SNR_DECR_dB 2.0f
-
-/* factor for reducing quantization noise during voiced speech */
-#define HARM_SNR_INCR_dB 2.0f
-
-/* factor for reducing quantization noise for unvoiced sparse signals */
-#define SPARSE_SNR_INCR_dB 2.0f
-
-/* threshold for sparseness measure above which to use lower quantization offset during unvoiced */
-#define SPARSENESS_THRESHOLD_QNT_OFFSET 0.75f
-
-/* warping control */
-#define WARPING_MULTIPLIER 0.015f
-
-/* fraction added to first autocorrelation value */
-#define SHAPE_WHITE_NOISE_FRACTION 5e-5f
-
-/* noise shaping filter chirp factor */
-#define BANDWIDTH_EXPANSION 0.95f
-
-/* difference between chirp factors for analysis and synthesis noise shaping filters at low bitrates */
-#define LOW_RATE_BANDWIDTH_EXPANSION_DELTA 0.01f
-
-/* extra harmonic boosting (signal shaping) at low bitrates */
-#define LOW_RATE_HARMONIC_BOOST 0.1f
-
-/* extra harmonic boosting (signal shaping) for noisy input signals */
-#define LOW_INPUT_QUALITY_HARMONIC_BOOST 0.1f
-
-/* harmonic noise shaping */
-#define HARMONIC_SHAPING 0.3f
-
-/* extra harmonic noise shaping for high bitrates or noisy input */
-#define HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING 0.2f
-
-/* parameter for shaping noise towards higher frequencies */
-#define HP_NOISE_COEF 0.25f
-
-/* parameter for shaping noise even more towards higher frequencies during voiced speech */
-#define HARM_HP_NOISE_COEF 0.35f
-
-/* parameter for applying a high-pass tilt to the input signal */
-#define INPUT_TILT 0.05f
-
-/* parameter for extra high-pass tilt to the input signal at high rates */
-#define HIGH_RATE_INPUT_TILT 0.1f
-
-/* parameter for reducing noise at the very low frequencies */
-#define LOW_FREQ_SHAPING 4.0f
-
-/* less reduction of noise at the very low frequencies for signals with low SNR at low frequencies */
-#define LOW_QUALITY_LOW_FREQ_SHAPING_DECR 0.5f
-
-/* subframe smoothing coefficient for HarmBoost, HarmShapeGain, Tilt (lower -> more smoothing) */
-#define SUBFR_SMTH_COEF 0.4f
-
-/* parameters defining the R/D tradeoff in the residual quantizer */
-#define LAMBDA_OFFSET 1.2f
-#define LAMBDA_SPEECH_ACT -0.2f
-#define LAMBDA_DELAYED_DECISIONS -0.05f
-#define LAMBDA_INPUT_QUALITY -0.1f
-#define LAMBDA_CODING_QUALITY -0.2f
-#define LAMBDA_QUANT_OFFSET 0.8f
-
-/* Compensation in bitrate calculations for 10 ms modes */
-#define REDUCE_BITRATE_10_MS_BPS 2200
-
-/* Maximum time before allowing a bandwidth transition */
-#define MAX_BANDWIDTH_SWITCH_DELAY_MS 5000
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SILK_TUNING_PARAMETERS_H */
diff --git a/thirdparty/opus/silk/typedef.h b/thirdparty/opus/silk/typedef.h
deleted file mode 100644
index 97b7e709be..0000000000
--- a/thirdparty/opus/silk/typedef.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Internet Society, IETF or IETF Trust, nor the
-names of specific contributors, may be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SILK_TYPEDEF_H
-#define SILK_TYPEDEF_H
-
-#include "opus_types.h"
-#include "opus_defines.h"
-
-#ifndef FIXED_POINT
-# include <float.h>
-# define silk_float float
-# define silk_float_MAX FLT_MAX
-#endif
-
-#define silk_int64_MAX ((opus_int64)0x7FFFFFFFFFFFFFFFLL) /* 2^63 - 1 */
-#define silk_int64_MIN ((opus_int64)0x8000000000000000LL) /* -2^63 */
-#define silk_int32_MAX 0x7FFFFFFF /* 2^31 - 1 = 2147483647 */
-#define silk_int32_MIN ((opus_int32)0x80000000) /* -2^31 = -2147483648 */
-#define silk_int16_MAX 0x7FFF /* 2^15 - 1 = 32767 */
-#define silk_int16_MIN ((opus_int16)0x8000) /* -2^15 = -32768 */
-#define silk_int8_MAX 0x7F /* 2^7 - 1 = 127 */
-#define silk_int8_MIN ((opus_int8)0x80) /* -2^7 = -128 */
-#define silk_uint8_MAX 0xFF /* 2^8 - 1 = 255 */
-
-#define silk_TRUE 1
-#define silk_FALSE 0
-
-/* assertions */
-#if (defined _WIN32 && !defined _WINCE && !defined(__GNUC__) && !defined(NO_ASSERTS))
-# ifndef silk_assert
-# include <crtdbg.h> /* ASSERTE() */
-# define silk_assert(COND) _ASSERTE(COND)
-# endif
-#else
-# ifdef ENABLE_ASSERTIONS
-# include <stdio.h>
-# include <stdlib.h>
-#define silk_fatal(str) _silk_fatal(str, __FILE__, __LINE__);
-#ifdef __GNUC__
-__attribute__((noreturn))
-#endif
-static OPUS_INLINE void _silk_fatal(const char *str, const char *file, int line)
-{
- fprintf (stderr, "Fatal (internal) error in %s, line %d: %s\n", file, line, str);
- abort();
-}
-# define silk_assert(COND) {if (!(COND)) {silk_fatal("assertion failed: " #COND);}}
-# else
-# define silk_assert(COND)
-# endif
-#endif
-
-#endif /* SILK_TYPEDEF_H */
diff --git a/thirdparty/opus/silk/x86/NSQ_del_dec_sse.c b/thirdparty/opus/silk/x86/NSQ_del_dec_sse.c
deleted file mode 100644
index 21d4a8bc1e..0000000000
--- a/thirdparty/opus/silk/x86/NSQ_del_dec_sse.c
+++ /dev/null
@@ -1,857 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-#include "main.h"
-#include "celt/x86/x86cpu.h"
-
-#include "stack_alloc.h"
-
-typedef struct {
- opus_int32 sLPC_Q14[ MAX_SUB_FRAME_LENGTH + NSQ_LPC_BUF_LENGTH ];
- opus_int32 RandState[ DECISION_DELAY ];
- opus_int32 Q_Q10[ DECISION_DELAY ];
- opus_int32 Xq_Q14[ DECISION_DELAY ];
- opus_int32 Pred_Q15[ DECISION_DELAY ];
- opus_int32 Shape_Q14[ DECISION_DELAY ];
- opus_int32 sAR2_Q14[ MAX_SHAPE_LPC_ORDER ];
- opus_int32 LF_AR_Q14;
- opus_int32 Seed;
- opus_int32 SeedInit;
- opus_int32 RD_Q10;
-} NSQ_del_dec_struct;
-
-typedef struct {
- opus_int32 Q_Q10;
- opus_int32 RD_Q10;
- opus_int32 xq_Q14;
- opus_int32 LF_AR_Q14;
- opus_int32 sLTP_shp_Q14;
- opus_int32 LPC_exc_Q14;
-} NSQ_sample_struct;
-
-typedef NSQ_sample_struct NSQ_sample_pair[ 2 ];
-
-static OPUS_INLINE void silk_nsq_del_dec_scale_states_sse4_1(
- const silk_encoder_state *psEncC, /* I Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- const opus_int32 x_Q3[], /* I Input in Q3 */
- opus_int32 x_sc_Q10[], /* O Input scaled with 1/Gain in Q10 */
- const opus_int16 sLTP[], /* I Re-whitened LTP state in Q0 */
- opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */
- opus_int subfr, /* I Subframe number */
- opus_int nStatesDelayedDecision, /* I Number of del dec states */
- const opus_int LTP_scale_Q14, /* I LTP state scaling */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */
- const opus_int signal_type, /* I Signal type */
- const opus_int decisionDelay /* I Decision delay */
-);
-
-/******************************************/
-/* Noise shape quantizer for one subframe */
-/******************************************/
-static OPUS_INLINE void silk_noise_shape_quantizer_del_dec_sse4_1(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP filter state */
- opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int Lambda_Q10, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int subfr, /* I Subframe number */
- opus_int shapingLPCOrder, /* I Shaping LPC filter order */
- opus_int predictLPCOrder, /* I Prediction filter order */
- opus_int warping_Q16, /* I */
- opus_int nStatesDelayedDecision, /* I Number of states in decision tree */
- opus_int *smpl_buf_idx, /* I Index to newest samples in buffers */
- opus_int decisionDelay /* I */
-);
-
-void silk_NSQ_del_dec_sse4_1(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-)
-{
- opus_int i, k, lag, start_idx, LSF_interpolation_flag, Winner_ind, subfr;
- opus_int last_smple_idx, smpl_buf_idx, decisionDelay;
- const opus_int16 *A_Q12, *B_Q14, *AR_shp_Q13;
- opus_int16 *pxq;
- VARDECL( opus_int32, sLTP_Q15 );
- VARDECL( opus_int16, sLTP );
- opus_int32 HarmShapeFIRPacked_Q14;
- opus_int offset_Q10;
- opus_int32 RDmin_Q10, Gain_Q10;
- VARDECL( opus_int32, x_sc_Q10 );
- VARDECL( opus_int32, delayedGain_Q10 );
- VARDECL( NSQ_del_dec_struct, psDelDec );
- NSQ_del_dec_struct *psDD;
- SAVE_STACK;
-
- /* Set unvoiced lag to the previous one, overwrite later for voiced */
- lag = NSQ->lagPrev;
-
- silk_assert( NSQ->prev_gain_Q16 != 0 );
-
- /* Initialize delayed decision states */
- ALLOC( psDelDec, psEncC->nStatesDelayedDecision, NSQ_del_dec_struct );
- silk_memset( psDelDec, 0, psEncC->nStatesDelayedDecision * sizeof( NSQ_del_dec_struct ) );
- for( k = 0; k < psEncC->nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
- psDD->Seed = ( k + psIndices->Seed ) & 3;
- psDD->SeedInit = psDD->Seed;
- psDD->RD_Q10 = 0;
- psDD->LF_AR_Q14 = NSQ->sLF_AR_shp_Q14;
- psDD->Shape_Q14[ 0 ] = NSQ->sLTP_shp_Q14[ psEncC->ltp_mem_length - 1 ];
- silk_memcpy( psDD->sLPC_Q14, NSQ->sLPC_Q14, NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
- silk_memcpy( psDD->sAR2_Q14, NSQ->sAR2_Q14, sizeof( NSQ->sAR2_Q14 ) );
- }
-
- offset_Q10 = silk_Quantization_Offsets_Q10[ psIndices->signalType >> 1 ][ psIndices->quantOffsetType ];
- smpl_buf_idx = 0; /* index of oldest samples */
-
- decisionDelay = silk_min_int( DECISION_DELAY, psEncC->subfr_length );
-
- /* For voiced frames limit the decision delay to lower than the pitch lag */
- if( psIndices->signalType == TYPE_VOICED ) {
- for( k = 0; k < psEncC->nb_subfr; k++ ) {
- decisionDelay = silk_min_int( decisionDelay, pitchL[ k ] - LTP_ORDER / 2 - 1 );
- }
- } else {
- if( lag > 0 ) {
- decisionDelay = silk_min_int( decisionDelay, lag - LTP_ORDER / 2 - 1 );
- }
- }
-
- if( psIndices->NLSFInterpCoef_Q2 == 4 ) {
- LSF_interpolation_flag = 0;
- } else {
- LSF_interpolation_flag = 1;
- }
-
- ALLOC( sLTP_Q15,
- psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 );
- ALLOC( sLTP, psEncC->ltp_mem_length + psEncC->frame_length, opus_int16 );
- ALLOC( x_sc_Q10, psEncC->subfr_length, opus_int32 );
- ALLOC( delayedGain_Q10, DECISION_DELAY, opus_int32 );
- /* Set up pointers to start of sub frame */
- pxq = &NSQ->xq[ psEncC->ltp_mem_length ];
- NSQ->sLTP_shp_buf_idx = psEncC->ltp_mem_length;
- NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
- subfr = 0;
- for( k = 0; k < psEncC->nb_subfr; k++ ) {
- A_Q12 = &PredCoef_Q12[ ( ( k >> 1 ) | ( 1 - LSF_interpolation_flag ) ) * MAX_LPC_ORDER ];
- B_Q14 = &LTPCoef_Q14[ k * LTP_ORDER ];
- AR_shp_Q13 = &AR2_Q13[ k * MAX_SHAPE_LPC_ORDER ];
-
- /* Noise shape parameters */
- silk_assert( HarmShapeGain_Q14[ k ] >= 0 );
- HarmShapeFIRPacked_Q14 = silk_RSHIFT( HarmShapeGain_Q14[ k ], 2 );
- HarmShapeFIRPacked_Q14 |= silk_LSHIFT( (opus_int32)silk_RSHIFT( HarmShapeGain_Q14[ k ], 1 ), 16 );
-
- NSQ->rewhite_flag = 0;
- if( psIndices->signalType == TYPE_VOICED ) {
- /* Voiced */
- lag = pitchL[ k ];
-
- /* Re-whitening */
- if( ( k & ( 3 - silk_LSHIFT( LSF_interpolation_flag, 1 ) ) ) == 0 ) {
- if( k == 2 ) {
- /* RESET DELAYED DECISIONS */
- /* Find winner */
- RDmin_Q10 = psDelDec[ 0 ].RD_Q10;
- Winner_ind = 0;
- for( i = 1; i < psEncC->nStatesDelayedDecision; i++ ) {
- if( psDelDec[ i ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psDelDec[ i ].RD_Q10;
- Winner_ind = i;
- }
- }
- for( i = 0; i < psEncC->nStatesDelayedDecision; i++ ) {
- if( i != Winner_ind ) {
- psDelDec[ i ].RD_Q10 += ( silk_int32_MAX >> 4 );
- silk_assert( psDelDec[ i ].RD_Q10 >= 0 );
- }
- }
-
- /* Copy final part of signals from winner state to output and long-term filter states */
- psDD = &psDelDec[ Winner_ind ];
- last_smple_idx = smpl_buf_idx + decisionDelay;
- for( i = 0; i < decisionDelay; i++ ) {
- last_smple_idx = ( last_smple_idx - 1 ) & DECISION_DELAY_MASK;
- pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 );
- pxq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND(
- silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], Gains_Q16[ 1 ] ), 14 ) );
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay + i ] = psDD->Shape_Q14[ last_smple_idx ];
- }
-
- subfr = 0;
- }
-
- /* Rewhiten with new A coefs */
- start_idx = psEncC->ltp_mem_length - lag - psEncC->predictLPCOrder - LTP_ORDER / 2;
- silk_assert( start_idx > 0 );
-
- silk_LPC_analysis_filter( &sLTP[ start_idx ], &NSQ->xq[ start_idx + k * psEncC->subfr_length ],
- A_Q12, psEncC->ltp_mem_length - start_idx, psEncC->predictLPCOrder, psEncC->arch );
-
- NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
- NSQ->rewhite_flag = 1;
- }
- }
-
- silk_nsq_del_dec_scale_states_sse4_1( psEncC, NSQ, psDelDec, x_Q3, x_sc_Q10, sLTP, sLTP_Q15, k,
- psEncC->nStatesDelayedDecision, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType, decisionDelay );
-
- silk_noise_shape_quantizer_del_dec_sse4_1( NSQ, psDelDec, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15,
- delayedGain_Q10, A_Q12, B_Q14, AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ],
- Gains_Q16[ k ], Lambda_Q10, offset_Q10, psEncC->subfr_length, subfr++, psEncC->shapingLPCOrder,
- psEncC->predictLPCOrder, psEncC->warping_Q16, psEncC->nStatesDelayedDecision, &smpl_buf_idx, decisionDelay );
-
- x_Q3 += psEncC->subfr_length;
- pulses += psEncC->subfr_length;
- pxq += psEncC->subfr_length;
- }
-
- /* Find winner */
- RDmin_Q10 = psDelDec[ 0 ].RD_Q10;
- Winner_ind = 0;
- for( k = 1; k < psEncC->nStatesDelayedDecision; k++ ) {
- if( psDelDec[ k ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psDelDec[ k ].RD_Q10;
- Winner_ind = k;
- }
- }
-
- /* Copy final part of signals from winner state to output and long-term filter states */
- psDD = &psDelDec[ Winner_ind ];
- psIndices->Seed = psDD->SeedInit;
- last_smple_idx = smpl_buf_idx + decisionDelay;
- Gain_Q10 = silk_RSHIFT32( Gains_Q16[ psEncC->nb_subfr - 1 ], 6 );
- for( i = 0; i < decisionDelay; i++ ) {
- last_smple_idx = ( last_smple_idx - 1 ) & DECISION_DELAY_MASK;
- pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 );
- pxq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND(
- silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], Gain_Q10 ), 8 ) );
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay + i ] = psDD->Shape_Q14[ last_smple_idx ];
- }
- silk_memcpy( NSQ->sLPC_Q14, &psDD->sLPC_Q14[ psEncC->subfr_length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
- silk_memcpy( NSQ->sAR2_Q14, psDD->sAR2_Q14, sizeof( psDD->sAR2_Q14 ) );
-
- /* Update states */
- NSQ->sLF_AR_shp_Q14 = psDD->LF_AR_Q14;
- NSQ->lagPrev = pitchL[ psEncC->nb_subfr - 1 ];
-
- /* Save quantized speech signal */
- /* DEBUG_STORE_DATA( enc.pcm, &NSQ->xq[psEncC->ltp_mem_length], psEncC->frame_length * sizeof( opus_int16 ) ) */
- silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) );
- silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) );
- RESTORE_STACK;
-}
-
-/******************************************/
-/* Noise shape quantizer for one subframe */
-/******************************************/
-static OPUS_INLINE void silk_noise_shape_quantizer_del_dec_sse4_1(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP filter state */
- opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int Lambda_Q10, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int subfr, /* I Subframe number */
- opus_int shapingLPCOrder, /* I Shaping LPC filter order */
- opus_int predictLPCOrder, /* I Prediction filter order */
- opus_int warping_Q16, /* I */
- opus_int nStatesDelayedDecision, /* I Number of states in decision tree */
- opus_int *smpl_buf_idx, /* I Index to newest samples in buffers */
- opus_int decisionDelay /* I */
-)
-{
- opus_int i, j, k, Winner_ind, RDmin_ind, RDmax_ind, last_smple_idx;
- opus_int32 Winner_rand_state;
- opus_int32 LTP_pred_Q14, LPC_pred_Q14, n_AR_Q14, n_LTP_Q14;
- opus_int32 n_LF_Q14, r_Q10, rr_Q10, rd1_Q10, rd2_Q10, RDmin_Q10, RDmax_Q10;
- opus_int32 q1_Q0, q1_Q10, q2_Q10, exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10;
- opus_int32 tmp1, tmp2, sLF_AR_shp_Q14;
- opus_int32 *pred_lag_ptr, *shp_lag_ptr, *psLPC_Q14;
- VARDECL( NSQ_sample_pair, psSampleState );
- NSQ_del_dec_struct *psDD;
- NSQ_sample_struct *psSS;
-
- __m128i a_Q12_0123, a_Q12_4567, a_Q12_89AB, a_Q12_CDEF;
- __m128i b_Q12_0123, b_sr_Q12_0123;
- SAVE_STACK;
-
- silk_assert( nStatesDelayedDecision > 0 );
- ALLOC( psSampleState, nStatesDelayedDecision, NSQ_sample_pair );
-
- shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ];
- pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ];
- Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 );
-
- a_Q12_0123 = OP_CVTEPI16_EPI32_M64( a_Q12 );
- a_Q12_4567 = OP_CVTEPI16_EPI32_M64( a_Q12 + 4 );
-
- if( opus_likely( predictLPCOrder == 16 ) ) {
- a_Q12_89AB = OP_CVTEPI16_EPI32_M64( a_Q12 + 8 );
- a_Q12_CDEF = OP_CVTEPI16_EPI32_M64( a_Q12 + 12 );
- }
-
- if( signalType == TYPE_VOICED ){
- b_Q12_0123 = OP_CVTEPI16_EPI32_M64( b_Q14 );
- b_sr_Q12_0123 = _mm_shuffle_epi32( b_Q12_0123, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */
- }
- for( i = 0; i < length; i++ ) {
- /* Perform common calculations used in all states */
-
- /* Long-term prediction */
- if( signalType == TYPE_VOICED ) {
- /* Unrolled loop */
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LTP_pred_Q14 = 2;
- {
- __m128i tmpa, tmpb, pred_lag_ptr_tmp;
- pred_lag_ptr_tmp = _mm_loadu_si128( (__m128i *)(&pred_lag_ptr[ -3 ] ) );
- pred_lag_ptr_tmp = _mm_shuffle_epi32( pred_lag_ptr_tmp, 0x1B );
- tmpa = _mm_mul_epi32( pred_lag_ptr_tmp, b_Q12_0123 );
- tmpa = _mm_srli_si128( tmpa, 2 );
-
- pred_lag_ptr_tmp = _mm_shuffle_epi32( pred_lag_ptr_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) );/* equal shift right 4 bytes */
- pred_lag_ptr_tmp = _mm_mul_epi32( pred_lag_ptr_tmp, b_sr_Q12_0123 );
- pred_lag_ptr_tmp = _mm_srli_si128( pred_lag_ptr_tmp, 2 );
- pred_lag_ptr_tmp = _mm_add_epi32( pred_lag_ptr_tmp, tmpa );
-
- tmpb = _mm_shuffle_epi32( pred_lag_ptr_tmp, _MM_SHUFFLE( 0, 0, 3, 2 ) );/* equal shift right 8 bytes */
- pred_lag_ptr_tmp = _mm_add_epi32( pred_lag_ptr_tmp, tmpb );
- LTP_pred_Q14 += _mm_cvtsi128_si32( pred_lag_ptr_tmp );
-
- LTP_pred_Q14 = silk_SMLAWB( LTP_pred_Q14, pred_lag_ptr[ -4 ], b_Q14[ 4 ] );
- LTP_pred_Q14 = silk_LSHIFT( LTP_pred_Q14, 1 ); /* Q13 -> Q14 */
- pred_lag_ptr++;
- }
- } else {
- LTP_pred_Q14 = 0;
- }
-
- /* Long-term shaping */
- if( lag > 0 ) {
- /* Symmetric, packed FIR coefficients */
- n_LTP_Q14 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 );
- n_LTP_Q14 = silk_SMLAWT( n_LTP_Q14, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 );
- n_LTP_Q14 = silk_SUB_LSHIFT32( LTP_pred_Q14, n_LTP_Q14, 2 ); /* Q12 -> Q14 */
- shp_lag_ptr++;
- } else {
- n_LTP_Q14 = 0;
- }
- {
- __m128i tmpa, tmpb, psLPC_Q14_tmp, a_Q12_tmp;
-
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- /* Delayed decision state */
- psDD = &psDelDec[ k ];
-
- /* Sample state */
- psSS = psSampleState[ k ];
-
- /* Generate dither */
- psDD->Seed = silk_RAND( psDD->Seed );
-
- /* Pointer used in short term prediction and shaping */
- psLPC_Q14 = &psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH - 1 + i ];
- /* Short-term prediction */
- silk_assert( predictLPCOrder == 10 || predictLPCOrder == 16 );
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LPC_pred_Q14 = silk_RSHIFT( predictLPCOrder, 1 );
-
- tmpb = _mm_setzero_si128();
-
- /* step 1 */
- psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -3 ] ) ); /* -3, -2 , -1, 0 */
- psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B ); /* 0, -1, -2, -3 */
- tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_0123 ); /* 0, -1, -2, -3 * 0123 -> 0*0, 2*-2 */
-
- tmpa = _mm_srli_epi64( tmpa, 16 );
- tmpb = _mm_add_epi32( tmpb, tmpa );
-
- psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */
- a_Q12_tmp = _mm_shuffle_epi32( a_Q12_0123, _MM_SHUFFLE(0, 3, 2, 1 ) ); /* equal shift right 4 bytes */
- psLPC_Q14_tmp = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_tmp ); /* 1*-1, 3*-3 */
- psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 );
- tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp );
-
- /* step 2 */
- psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -7 ] ) );
- psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B );
- tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_4567 );
- tmpa = _mm_srli_epi64( tmpa, 16 );
- tmpb = _mm_add_epi32( tmpb, tmpa );
-
- psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */
- a_Q12_tmp = _mm_shuffle_epi32( a_Q12_4567, _MM_SHUFFLE(0, 3, 2, 1 ) ); /* equal shift right 4 bytes */
- psLPC_Q14_tmp = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_tmp );
- psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 );
- tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp );
-
- if ( opus_likely( predictLPCOrder == 16 ) )
- {
- /* step 3 */
- psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -11 ] ) );
- psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B );
- tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_89AB );
- tmpa = _mm_srli_epi64( tmpa, 16 );
- tmpb = _mm_add_epi32( tmpb, tmpa );
-
- psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */
- a_Q12_tmp = _mm_shuffle_epi32( a_Q12_89AB, _MM_SHUFFLE(0, 3, 2, 1 ) );/* equal shift right 4 bytes */
- psLPC_Q14_tmp = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_tmp );
- psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 );
- tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp );
-
- /* setp 4 */
- psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -15 ] ) );
- psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B );
- tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_CDEF );
- tmpa = _mm_srli_epi64( tmpa, 16 );
- tmpb = _mm_add_epi32( tmpb, tmpa );
-
- psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */
- a_Q12_tmp = _mm_shuffle_epi32( a_Q12_CDEF, _MM_SHUFFLE(0, 3, 2, 1 ) ); /* equal shift right 4 bytes */
- psLPC_Q14_tmp = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_tmp );
- psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 );
- tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp );
-
- /* add at last */
- /* equal shift right 8 bytes*/
- tmpa = _mm_shuffle_epi32( tmpb, _MM_SHUFFLE( 0, 0, 3, 2 ) );
- tmpb = _mm_add_epi32( tmpb, tmpa );
- LPC_pred_Q14 += _mm_cvtsi128_si32( tmpb );
- }
- else
- {
- /* add at last */
- tmpa = _mm_shuffle_epi32( tmpb, _MM_SHUFFLE( 0, 0, 3, 2 ) ); /* equal shift right 8 bytes*/
- tmpb = _mm_add_epi32( tmpb, tmpa );
- LPC_pred_Q14 += _mm_cvtsi128_si32( tmpb );
-
- LPC_pred_Q14 = silk_SMLAWB( LPC_pred_Q14, psLPC_Q14[ -8 ], a_Q12[ 8 ] );
- LPC_pred_Q14 = silk_SMLAWB( LPC_pred_Q14, psLPC_Q14[ -9 ], a_Q12[ 9 ] );
- }
-
- LPC_pred_Q14 = silk_LSHIFT( LPC_pred_Q14, 4 ); /* Q10 -> Q14 */
-
- /* Noise shape feedback */
- silk_assert( ( shapingLPCOrder & 1 ) == 0 ); /* check that order is even */
- /* Output of lowpass section */
- tmp2 = silk_SMLAWB( psLPC_Q14[ 0 ], psDD->sAR2_Q14[ 0 ], warping_Q16 );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], psDD->sAR2_Q14[ 1 ] - tmp2, warping_Q16 );
- psDD->sAR2_Q14[ 0 ] = tmp2;
- n_AR_Q14 = silk_RSHIFT( shapingLPCOrder, 1 );
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ 0 ] );
- /* Loop over allpass sections */
- for( j = 2; j < shapingLPCOrder; j += 2 ) {
- /* Output of allpass section */
- tmp2 = silk_SMLAWB( psDD->sAR2_Q14[ j - 1 ], psDD->sAR2_Q14[ j + 0 ] - tmp1, warping_Q16 );
- psDD->sAR2_Q14[ j - 1 ] = tmp1;
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ j - 1 ] );
- /* Output of allpass section */
- tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ j + 0 ], psDD->sAR2_Q14[ j + 1 ] - tmp2, warping_Q16 );
- psDD->sAR2_Q14[ j + 0 ] = tmp2;
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ j ] );
- }
- psDD->sAR2_Q14[ shapingLPCOrder - 1 ] = tmp1;
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ shapingLPCOrder - 1 ] );
-
- n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 1 ); /* Q11 -> Q12 */
- n_AR_Q14 = silk_SMLAWB( n_AR_Q14, psDD->LF_AR_Q14, Tilt_Q14 ); /* Q12 */
- n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 2 ); /* Q12 -> Q14 */
-
- n_LF_Q14 = silk_SMULWB( psDD->Shape_Q14[ *smpl_buf_idx ], LF_shp_Q14 ); /* Q12 */
- n_LF_Q14 = silk_SMLAWT( n_LF_Q14, psDD->LF_AR_Q14, LF_shp_Q14 ); /* Q12 */
- n_LF_Q14 = silk_LSHIFT( n_LF_Q14, 2 ); /* Q12 -> Q14 */
-
- /* Input minus prediction plus noise feedback */
- /* r = x[ i ] - LTP_pred - LPC_pred + n_AR + n_Tilt + n_LF + n_LTP */
- tmp1 = silk_ADD32( n_AR_Q14, n_LF_Q14 ); /* Q14 */
- tmp2 = silk_ADD32( n_LTP_Q14, LPC_pred_Q14 ); /* Q13 */
- tmp1 = silk_SUB32( tmp2, tmp1 ); /* Q13 */
- tmp1 = silk_RSHIFT_ROUND( tmp1, 4 ); /* Q10 */
-
- r_Q10 = silk_SUB32( x_Q10[ i ], tmp1 ); /* residual error Q10 */
-
- /* Flip sign depending on dither */
- if ( psDD->Seed < 0 ) {
- r_Q10 = -r_Q10;
- }
- r_Q10 = silk_LIMIT_32( r_Q10, -(31 << 10), 30 << 10 );
-
- /* Find two quantization level candidates and measure their rate-distortion */
- q1_Q10 = silk_SUB32( r_Q10, offset_Q10 );
- q1_Q0 = silk_RSHIFT( q1_Q10, 10 );
- if( q1_Q0 > 0 ) {
- q1_Q10 = silk_SUB32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 );
- q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 );
- q2_Q10 = silk_ADD32( q1_Q10, 1024 );
- rd1_Q10 = silk_SMULBB( q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else if( q1_Q0 == 0 ) {
- q1_Q10 = offset_Q10;
- q2_Q10 = silk_ADD32( q1_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q10 = silk_SMULBB( q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else if( q1_Q0 == -1 ) {
- q2_Q10 = offset_Q10;
- q1_Q10 = silk_SUB32( q2_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q10 = silk_SMULBB( -q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 );
- } else { /* q1_Q0 < -1 */
- q1_Q10 = silk_ADD32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 );
- q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 );
- q2_Q10 = silk_ADD32( q1_Q10, 1024 );
- rd1_Q10 = silk_SMULBB( -q1_Q10, Lambda_Q10 );
- rd2_Q10 = silk_SMULBB( -q2_Q10, Lambda_Q10 );
- }
- rr_Q10 = silk_SUB32( r_Q10, q1_Q10 );
- rd1_Q10 = silk_RSHIFT( silk_SMLABB( rd1_Q10, rr_Q10, rr_Q10 ), 10 );
- rr_Q10 = silk_SUB32( r_Q10, q2_Q10 );
- rd2_Q10 = silk_RSHIFT( silk_SMLABB( rd2_Q10, rr_Q10, rr_Q10 ), 10 );
-
- if( rd1_Q10 < rd2_Q10 ) {
- psSS[ 0 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd1_Q10 );
- psSS[ 1 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd2_Q10 );
- psSS[ 0 ].Q_Q10 = q1_Q10;
- psSS[ 1 ].Q_Q10 = q2_Q10;
- } else {
- psSS[ 0 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd2_Q10 );
- psSS[ 1 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd1_Q10 );
- psSS[ 0 ].Q_Q10 = q2_Q10;
- psSS[ 1 ].Q_Q10 = q1_Q10;
- }
-
- /* Update states for best quantization */
-
- /* Quantized excitation */
- exc_Q14 = silk_LSHIFT32( psSS[ 0 ].Q_Q10, 4 );
- if ( psDD->Seed < 0 ) {
- exc_Q14 = -exc_Q14;
- }
-
- /* Add predictions */
- LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
- xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 );
-
- /* Update states */
- sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 );
- psSS[ 0 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 );
- psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14;
- psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14;
- psSS[ 0 ].xq_Q14 = xq_Q14;
-
- /* Update states for second best quantization */
-
- /* Quantized excitation */
- exc_Q14 = silk_LSHIFT32( psSS[ 1 ].Q_Q10, 4 );
- if ( psDD->Seed < 0 ) {
- exc_Q14 = -exc_Q14;
- }
-
-
- /* Add predictions */
- LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
- xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 );
-
- /* Update states */
- sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 );
- psSS[ 1 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 );
- psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14;
- psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14;
- psSS[ 1 ].xq_Q14 = xq_Q14;
- }
- }
- *smpl_buf_idx = ( *smpl_buf_idx - 1 ) & DECISION_DELAY_MASK; /* Index to newest samples */
- last_smple_idx = ( *smpl_buf_idx + decisionDelay ) & DECISION_DELAY_MASK; /* Index to decisionDelay old samples */
-
- /* Find winner */
- RDmin_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10;
- Winner_ind = 0;
- for( k = 1; k < nStatesDelayedDecision; k++ ) {
- if( psSampleState[ k ][ 0 ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psSampleState[ k ][ 0 ].RD_Q10;
- Winner_ind = k;
- }
- }
-
- /* Increase RD values of expired states */
- Winner_rand_state = psDelDec[ Winner_ind ].RandState[ last_smple_idx ];
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- if( psDelDec[ k ].RandState[ last_smple_idx ] != Winner_rand_state ) {
- psSampleState[ k ][ 0 ].RD_Q10 = silk_ADD32( psSampleState[ k ][ 0 ].RD_Q10, silk_int32_MAX >> 4 );
- psSampleState[ k ][ 1 ].RD_Q10 = silk_ADD32( psSampleState[ k ][ 1 ].RD_Q10, silk_int32_MAX >> 4 );
- silk_assert( psSampleState[ k ][ 0 ].RD_Q10 >= 0 );
- }
- }
-
- /* Find worst in first set and best in second set */
- RDmax_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10;
- RDmin_Q10 = psSampleState[ 0 ][ 1 ].RD_Q10;
- RDmax_ind = 0;
- RDmin_ind = 0;
- for( k = 1; k < nStatesDelayedDecision; k++ ) {
- /* find worst in first set */
- if( psSampleState[ k ][ 0 ].RD_Q10 > RDmax_Q10 ) {
- RDmax_Q10 = psSampleState[ k ][ 0 ].RD_Q10;
- RDmax_ind = k;
- }
- /* find best in second set */
- if( psSampleState[ k ][ 1 ].RD_Q10 < RDmin_Q10 ) {
- RDmin_Q10 = psSampleState[ k ][ 1 ].RD_Q10;
- RDmin_ind = k;
- }
- }
-
- /* Replace a state if best from second set outperforms worst in first set */
- if( RDmin_Q10 < RDmax_Q10 ) {
- silk_memcpy( ( (opus_int32 *)&psDelDec[ RDmax_ind ] ) + i,
- ( (opus_int32 *)&psDelDec[ RDmin_ind ] ) + i, sizeof( NSQ_del_dec_struct ) - i * sizeof( opus_int32) );
- silk_memcpy( &psSampleState[ RDmax_ind ][ 0 ], &psSampleState[ RDmin_ind ][ 1 ], sizeof( NSQ_sample_struct ) );
- }
-
- /* Write samples from winner to output and long-term filter states */
- psDD = &psDelDec[ Winner_ind ];
- if( subfr > 0 || i >= decisionDelay ) {
- pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 );
- xq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND(
- silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], delayedGain_Q10[ last_smple_idx ] ), 8 ) );
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay ] = psDD->Shape_Q14[ last_smple_idx ];
- sLTP_Q15[ NSQ->sLTP_buf_idx - decisionDelay ] = psDD->Pred_Q15[ last_smple_idx ];
- }
- NSQ->sLTP_shp_buf_idx++;
- NSQ->sLTP_buf_idx++;
-
- /* Update states */
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
- psSS = &psSampleState[ k ][ 0 ];
- psDD->LF_AR_Q14 = psSS->LF_AR_Q14;
- psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH + i ] = psSS->xq_Q14;
- psDD->Xq_Q14[ *smpl_buf_idx ] = psSS->xq_Q14;
- psDD->Q_Q10[ *smpl_buf_idx ] = psSS->Q_Q10;
- psDD->Pred_Q15[ *smpl_buf_idx ] = silk_LSHIFT32( psSS->LPC_exc_Q14, 1 );
- psDD->Shape_Q14[ *smpl_buf_idx ] = psSS->sLTP_shp_Q14;
- psDD->Seed = silk_ADD32_ovflw( psDD->Seed, silk_RSHIFT_ROUND( psSS->Q_Q10, 10 ) );
- psDD->RandState[ *smpl_buf_idx ] = psDD->Seed;
- psDD->RD_Q10 = psSS->RD_Q10;
- }
- delayedGain_Q10[ *smpl_buf_idx ] = Gain_Q10;
- }
- /* Update LPC states */
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
- silk_memcpy( psDD->sLPC_Q14, &psDD->sLPC_Q14[ length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
- }
- RESTORE_STACK;
-}
-
-static OPUS_INLINE void silk_nsq_del_dec_scale_states_sse4_1(
- const silk_encoder_state *psEncC, /* I Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
- const opus_int32 x_Q3[], /* I Input in Q3 */
- opus_int32 x_sc_Q10[], /* O Input scaled with 1/Gain in Q10 */
- const opus_int16 sLTP[], /* I Re-whitened LTP state in Q0 */
- opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */
- opus_int subfr, /* I Subframe number */
- opus_int nStatesDelayedDecision, /* I Number of del dec states */
- const opus_int LTP_scale_Q14, /* I LTP state scaling */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */
- const opus_int signal_type, /* I Signal type */
- const opus_int decisionDelay /* I Decision delay */
-)
-{
- opus_int i, k, lag;
- opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q23;
- NSQ_del_dec_struct *psDD;
- __m128i xmm_inv_gain_Q23, xmm_x_Q3_x2x0, xmm_x_Q3_x3x1;
-
- lag = pitchL[ subfr ];
- inv_gain_Q31 = silk_INVERSE32_varQ( silk_max( Gains_Q16[ subfr ], 1 ), 47 );
-
- silk_assert( inv_gain_Q31 != 0 );
-
- /* Calculate gain adjustment factor */
- if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) {
- gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 );
- } else {
- gain_adj_Q16 = (opus_int32)1 << 16;
- }
-
- /* Scale input */
- inv_gain_Q23 = silk_RSHIFT_ROUND( inv_gain_Q31, 8 );
-
- /* prepare inv_gain_Q23 in packed 4 32-bits */
- xmm_inv_gain_Q23 = _mm_set1_epi32(inv_gain_Q23);
-
- for( i = 0; i < psEncC->subfr_length - 3; i += 4 ) {
- xmm_x_Q3_x2x0 = _mm_loadu_si128( (__m128i *)(&(x_Q3[ i ] ) ) );
- /* equal shift right 4 bytes*/
- xmm_x_Q3_x3x1 = _mm_shuffle_epi32( xmm_x_Q3_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) );
-
- xmm_x_Q3_x2x0 = _mm_mul_epi32( xmm_x_Q3_x2x0, xmm_inv_gain_Q23 );
- xmm_x_Q3_x3x1 = _mm_mul_epi32( xmm_x_Q3_x3x1, xmm_inv_gain_Q23 );
-
- xmm_x_Q3_x2x0 = _mm_srli_epi64( xmm_x_Q3_x2x0, 16 );
- xmm_x_Q3_x3x1 = _mm_slli_epi64( xmm_x_Q3_x3x1, 16 );
-
- xmm_x_Q3_x2x0 = _mm_blend_epi16( xmm_x_Q3_x2x0, xmm_x_Q3_x3x1, 0xCC );
-
- _mm_storeu_si128( (__m128i *)(&(x_sc_Q10[ i ])), xmm_x_Q3_x2x0 );
- }
-
- for( ; i < psEncC->subfr_length; i++ ) {
- x_sc_Q10[ i ] = silk_SMULWW( x_Q3[ i ], inv_gain_Q23 );
- }
-
- /* Save inverse gain */
- NSQ->prev_gain_Q16 = Gains_Q16[ subfr ];
-
- /* After rewhitening the LTP state is un-scaled, so scale with inv_gain_Q16 */
- if( NSQ->rewhite_flag ) {
- if( subfr == 0 ) {
- /* Do LTP downscaling */
- inv_gain_Q31 = silk_LSHIFT( silk_SMULWB( inv_gain_Q31, LTP_scale_Q14 ), 2 );
- }
- for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) {
- silk_assert( i < MAX_FRAME_LENGTH );
- sLTP_Q15[ i ] = silk_SMULWB( inv_gain_Q31, sLTP[ i ] );
- }
- }
-
- /* Adjust for changing gain */
- if( gain_adj_Q16 != (opus_int32)1 << 16 ) {
- /* Scale long-term shaping state */
- {
- __m128i xmm_gain_adj_Q16, xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1;
-
- /* prepare gain_adj_Q16 in packed 4 32-bits */
- xmm_gain_adj_Q16 = _mm_set1_epi32( gain_adj_Q16 );
-
- for( i = NSQ->sLTP_shp_buf_idx - psEncC->ltp_mem_length; i < NSQ->sLTP_shp_buf_idx - 3; i += 4 )
- {
- xmm_sLTP_shp_Q14_x2x0 = _mm_loadu_si128( (__m128i *)(&(NSQ->sLTP_shp_Q14[ i ] ) ) );
- /* equal shift right 4 bytes*/
- xmm_sLTP_shp_Q14_x3x1 = _mm_shuffle_epi32( xmm_sLTP_shp_Q14_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) );
-
- xmm_sLTP_shp_Q14_x2x0 = _mm_mul_epi32( xmm_sLTP_shp_Q14_x2x0, xmm_gain_adj_Q16 );
- xmm_sLTP_shp_Q14_x3x1 = _mm_mul_epi32( xmm_sLTP_shp_Q14_x3x1, xmm_gain_adj_Q16 );
-
- xmm_sLTP_shp_Q14_x2x0 = _mm_srli_epi64( xmm_sLTP_shp_Q14_x2x0, 16 );
- xmm_sLTP_shp_Q14_x3x1 = _mm_slli_epi64( xmm_sLTP_shp_Q14_x3x1, 16 );
-
- xmm_sLTP_shp_Q14_x2x0 = _mm_blend_epi16( xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1, 0xCC );
-
- _mm_storeu_si128( (__m128i *)(&(NSQ->sLTP_shp_Q14[ i ] ) ), xmm_sLTP_shp_Q14_x2x0 );
- }
-
- for( ; i < NSQ->sLTP_shp_buf_idx; i++ ) {
- NSQ->sLTP_shp_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLTP_shp_Q14[ i ] );
- }
-
- /* Scale long-term prediction state */
- if( signal_type == TYPE_VOICED && NSQ->rewhite_flag == 0 ) {
- for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx - decisionDelay; i++ ) {
- sLTP_Q15[ i ] = silk_SMULWW( gain_adj_Q16, sLTP_Q15[ i ] );
- }
- }
-
- for( k = 0; k < nStatesDelayedDecision; k++ ) {
- psDD = &psDelDec[ k ];
-
- /* Scale scalar states */
- psDD->LF_AR_Q14 = silk_SMULWW( gain_adj_Q16, psDD->LF_AR_Q14 );
-
- /* Scale short-term prediction and shaping states */
- for( i = 0; i < NSQ_LPC_BUF_LENGTH; i++ ) {
- psDD->sLPC_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->sLPC_Q14[ i ] );
- }
- for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) {
- psDD->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->sAR2_Q14[ i ] );
- }
- for( i = 0; i < DECISION_DELAY; i++ ) {
- psDD->Pred_Q15[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Pred_Q15[ i ] );
- psDD->Shape_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Shape_Q14[ i ] );
- }
- }
- }
- }
-}
diff --git a/thirdparty/opus/silk/x86/NSQ_sse.c b/thirdparty/opus/silk/x86/NSQ_sse.c
deleted file mode 100644
index bb3c5f1955..0000000000
--- a/thirdparty/opus/silk/x86/NSQ_sse.c
+++ /dev/null
@@ -1,720 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-#include "main.h"
-#include "celt/x86/x86cpu.h"
-#include "stack_alloc.h"
-
-static OPUS_INLINE void silk_nsq_scale_states_sse4_1(
- const silk_encoder_state *psEncC, /* I Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- const opus_int32 x_Q3[], /* I input in Q3 */
- opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */
- const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */
- opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */
- opus_int subfr, /* I subframe number */
- const opus_int LTP_scale_Q14, /* I */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */
- const opus_int signal_type /* I Signal type */
-);
-
-static OPUS_INLINE void silk_noise_shape_quantizer_10_16_sse4_1(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_sc_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP state */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping AR coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int32 table[][4] /* I */
-);
-
-void silk_NSQ_sse4_1(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-)
-{
- opus_int k, lag, start_idx, LSF_interpolation_flag;
- const opus_int16 *A_Q12, *B_Q14, *AR_shp_Q13;
- opus_int16 *pxq;
- VARDECL( opus_int32, sLTP_Q15 );
- VARDECL( opus_int16, sLTP );
- opus_int32 HarmShapeFIRPacked_Q14;
- opus_int offset_Q10;
- VARDECL( opus_int32, x_sc_Q10 );
-
- opus_int32 table[ 64 ][ 4 ];
- opus_int32 tmp1;
- opus_int32 q1_Q10, q2_Q10, rd1_Q20, rd2_Q20;
-
- SAVE_STACK;
-
- NSQ->rand_seed = psIndices->Seed;
-
- /* Set unvoiced lag to the previous one, overwrite later for voiced */
- lag = NSQ->lagPrev;
-
- silk_assert( NSQ->prev_gain_Q16 != 0 );
-
- offset_Q10 = silk_Quantization_Offsets_Q10[ psIndices->signalType >> 1 ][ psIndices->quantOffsetType ];
-
- /* 0 */
- q1_Q10 = offset_Q10;
- q2_Q10 = offset_Q10 + ( 1024 - QUANT_LEVEL_ADJUST_Q10 );
- rd1_Q20 = q1_Q10 * Lambda_Q10;
- rd2_Q20 = q2_Q10 * Lambda_Q10;
-
- table[ 32 ][ 0 ] = q1_Q10;
- table[ 32 ][ 1 ] = q2_Q10;
- table[ 32 ][ 2 ] = 2 * (q1_Q10 - q2_Q10);
- table[ 32 ][ 3 ] = (rd1_Q20 - rd2_Q20) + (q1_Q10 * q1_Q10 - q2_Q10 * q2_Q10);
-
- /* -1 */
- q1_Q10 = offset_Q10 - ( 1024 - QUANT_LEVEL_ADJUST_Q10 );
- q2_Q10 = offset_Q10;
- rd1_Q20 = - q1_Q10 * Lambda_Q10;
- rd2_Q20 = q2_Q10 * Lambda_Q10;
-
- table[ 31 ][ 0 ] = q1_Q10;
- table[ 31 ][ 1 ] = q2_Q10;
- table[ 31 ][ 2 ] = 2 * (q1_Q10 - q2_Q10);
- table[ 31 ][ 3 ] = (rd1_Q20 - rd2_Q20) + (q1_Q10 * q1_Q10 - q2_Q10 * q2_Q10);
-
- /* > 0 */
- for (k = 1; k <= 31; k++)
- {
- tmp1 = offset_Q10 + silk_LSHIFT( k, 10 );
-
- q1_Q10 = tmp1 - QUANT_LEVEL_ADJUST_Q10;
- q2_Q10 = tmp1 - QUANT_LEVEL_ADJUST_Q10 + 1024;
- rd1_Q20 = q1_Q10 * Lambda_Q10;
- rd2_Q20 = q2_Q10 * Lambda_Q10;
-
- table[ 32 + k ][ 0 ] = q1_Q10;
- table[ 32 + k ][ 1 ] = q2_Q10;
- table[ 32 + k ][ 2 ] = 2 * (q1_Q10 - q2_Q10);
- table[ 32 + k ][ 3 ] = (rd1_Q20 - rd2_Q20) + (q1_Q10 * q1_Q10 - q2_Q10 * q2_Q10);
- }
-
- /* < -1 */
- for (k = -32; k <= -2; k++)
- {
- tmp1 = offset_Q10 + silk_LSHIFT( k, 10 );
-
- q1_Q10 = tmp1 + QUANT_LEVEL_ADJUST_Q10;
- q2_Q10 = tmp1 + QUANT_LEVEL_ADJUST_Q10 + 1024;
- rd1_Q20 = - q1_Q10 * Lambda_Q10;
- rd2_Q20 = - q2_Q10 * Lambda_Q10;
-
- table[ 32 + k ][ 0 ] = q1_Q10;
- table[ 32 + k ][ 1 ] = q2_Q10;
- table[ 32 + k ][ 2 ] = 2 * (q1_Q10 - q2_Q10);
- table[ 32 + k ][ 3 ] = (rd1_Q20 - rd2_Q20) + (q1_Q10 * q1_Q10 - q2_Q10 * q2_Q10);
- }
-
- if( psIndices->NLSFInterpCoef_Q2 == 4 ) {
- LSF_interpolation_flag = 0;
- } else {
- LSF_interpolation_flag = 1;
- }
-
- ALLOC( sLTP_Q15,
- psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 );
- ALLOC( sLTP, psEncC->ltp_mem_length + psEncC->frame_length, opus_int16 );
- ALLOC( x_sc_Q10, psEncC->subfr_length, opus_int32 );
- /* Set up pointers to start of sub frame */
- NSQ->sLTP_shp_buf_idx = psEncC->ltp_mem_length;
- NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
- pxq = &NSQ->xq[ psEncC->ltp_mem_length ];
- for( k = 0; k < psEncC->nb_subfr; k++ ) {
- A_Q12 = &PredCoef_Q12[ (( k >> 1 ) | ( 1 - LSF_interpolation_flag )) * MAX_LPC_ORDER ];
- B_Q14 = &LTPCoef_Q14[ k * LTP_ORDER ];
- AR_shp_Q13 = &AR2_Q13[ k * MAX_SHAPE_LPC_ORDER ];
-
- /* Noise shape parameters */
- silk_assert( HarmShapeGain_Q14[ k ] >= 0 );
- HarmShapeFIRPacked_Q14 = silk_RSHIFT( HarmShapeGain_Q14[ k ], 2 );
- HarmShapeFIRPacked_Q14 |= silk_LSHIFT( (opus_int32)silk_RSHIFT( HarmShapeGain_Q14[ k ], 1 ), 16 );
-
- NSQ->rewhite_flag = 0;
- if( psIndices->signalType == TYPE_VOICED ) {
- /* Voiced */
- lag = pitchL[ k ];
-
- /* Re-whitening */
- if( ( k & ( 3 - silk_LSHIFT( LSF_interpolation_flag, 1 ) ) ) == 0 ) {
- /* Rewhiten with new A coefs */
- start_idx = psEncC->ltp_mem_length - lag - psEncC->predictLPCOrder - LTP_ORDER / 2;
- silk_assert( start_idx > 0 );
-
- silk_LPC_analysis_filter( &sLTP[ start_idx ], &NSQ->xq[ start_idx + k * psEncC->subfr_length ],
- A_Q12, psEncC->ltp_mem_length - start_idx, psEncC->predictLPCOrder, psEncC->arch );
-
- NSQ->rewhite_flag = 1;
- NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
- }
- }
-
- silk_nsq_scale_states_sse4_1( psEncC, NSQ, x_Q3, x_sc_Q10, sLTP, sLTP_Q15, k, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType );
-
- if ( opus_likely( ( 10 == psEncC->shapingLPCOrder ) && ( 16 == psEncC->predictLPCOrder) ) )
- {
- silk_noise_shape_quantizer_10_16_sse4_1( NSQ, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15, A_Q12, B_Q14,
- AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ], Gains_Q16[ k ],
- offset_Q10, psEncC->subfr_length, &(table[32]) );
- }
- else
- {
- silk_noise_shape_quantizer( NSQ, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15, A_Q12, B_Q14,
- AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ], Gains_Q16[ k ], Lambda_Q10,
- offset_Q10, psEncC->subfr_length, psEncC->shapingLPCOrder, psEncC->predictLPCOrder, psEncC->arch );
- }
-
- x_Q3 += psEncC->subfr_length;
- pulses += psEncC->subfr_length;
- pxq += psEncC->subfr_length;
- }
-
- /* Update lagPrev for next frame */
- NSQ->lagPrev = pitchL[ psEncC->nb_subfr - 1 ];
-
- /* Save quantized speech and noise shaping signals */
- /* DEBUG_STORE_DATA( enc.pcm, &NSQ->xq[ psEncC->ltp_mem_length ], psEncC->frame_length * sizeof( opus_int16 ) ) */
- silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) );
- silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) );
- RESTORE_STACK;
-}
-
-/***********************************/
-/* silk_noise_shape_quantizer_10_16 */
-/***********************************/
-static OPUS_INLINE void silk_noise_shape_quantizer_10_16_sse4_1(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_sc_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP state */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping AR coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int32 table[][4] /* I */
-)
-{
- opus_int i;
- opus_int32 LTP_pred_Q13, LPC_pred_Q10, n_AR_Q12, n_LTP_Q13;
- opus_int32 n_LF_Q12, r_Q10, q1_Q0, q1_Q10, q2_Q10;
- opus_int32 exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10;
- opus_int32 tmp1, tmp2, sLF_AR_shp_Q14;
- opus_int32 *psLPC_Q14, *shp_lag_ptr, *pred_lag_ptr;
-
- __m128i xmm_tempa, xmm_tempb;
-
- __m128i xmm_one;
-
- __m128i psLPC_Q14_hi_01234567, psLPC_Q14_hi_89ABCDEF;
- __m128i psLPC_Q14_lo_01234567, psLPC_Q14_lo_89ABCDEF;
- __m128i a_Q12_01234567, a_Q12_89ABCDEF;
-
- __m128i sAR2_Q14_hi_76543210, sAR2_Q14_lo_76543210;
- __m128i AR_shp_Q13_76543210;
-
- shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ];
- pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ];
- Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 );
-
- /* Set up short term AR state */
- psLPC_Q14 = &NSQ->sLPC_Q14[ NSQ_LPC_BUF_LENGTH - 1 ];
-
- sLF_AR_shp_Q14 = NSQ->sLF_AR_shp_Q14;
- xq_Q14 = psLPC_Q14[ 0 ];
- LTP_pred_Q13 = 0;
-
- /* load a_Q12 */
- xmm_one = _mm_set_epi8( 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 );
-
- /* load a_Q12[0] - a_Q12[7] */
- a_Q12_01234567 = _mm_loadu_si128( (__m128i *)(&a_Q12[ 0 ] ) );
- /* load a_Q12[ 8 ] - a_Q12[ 15 ] */
- a_Q12_89ABCDEF = _mm_loadu_si128( (__m128i *)(&a_Q12[ 8 ] ) );
-
- a_Q12_01234567 = _mm_shuffle_epi8( a_Q12_01234567, xmm_one );
- a_Q12_89ABCDEF = _mm_shuffle_epi8( a_Q12_89ABCDEF, xmm_one );
-
- /* load AR_shp_Q13 */
- AR_shp_Q13_76543210 = _mm_loadu_si128( (__m128i *)(&AR_shp_Q13[0] ) );
-
- /* load psLPC_Q14 */
- xmm_one = _mm_set_epi8(15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 );
-
- xmm_tempa = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[-16]) );
- xmm_tempb = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[-12]) );
-
- xmm_tempa = _mm_shuffle_epi8( xmm_tempa, xmm_one );
- xmm_tempb = _mm_shuffle_epi8( xmm_tempb, xmm_one );
-
- psLPC_Q14_hi_89ABCDEF = _mm_unpackhi_epi64( xmm_tempa, xmm_tempb );
- psLPC_Q14_lo_89ABCDEF = _mm_unpacklo_epi64( xmm_tempa, xmm_tempb );
-
- xmm_tempa = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -8 ]) );
- xmm_tempb = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -4 ]) );
-
- xmm_tempa = _mm_shuffle_epi8( xmm_tempa, xmm_one );
- xmm_tempb = _mm_shuffle_epi8( xmm_tempb, xmm_one );
-
- psLPC_Q14_hi_01234567 = _mm_unpackhi_epi64( xmm_tempa, xmm_tempb );
- psLPC_Q14_lo_01234567 = _mm_unpacklo_epi64( xmm_tempa, xmm_tempb );
-
- /* load sAR2_Q14 */
- xmm_tempa = _mm_loadu_si128( (__m128i *)(&(NSQ->sAR2_Q14[ 0 ]) ) );
- xmm_tempb = _mm_loadu_si128( (__m128i *)(&(NSQ->sAR2_Q14[ 4 ]) ) );
-
- xmm_tempa = _mm_shuffle_epi8( xmm_tempa, xmm_one );
- xmm_tempb = _mm_shuffle_epi8( xmm_tempb, xmm_one );
-
- sAR2_Q14_hi_76543210 = _mm_unpackhi_epi64( xmm_tempa, xmm_tempb );
- sAR2_Q14_lo_76543210 = _mm_unpacklo_epi64( xmm_tempa, xmm_tempb );
-
- /* prepare 1 in 8 * 16bit */
- xmm_one = _mm_set1_epi16(1);
-
- for( i = 0; i < length; i++ )
- {
- /* Short-term prediction */
- __m128i xmm_hi_07, xmm_hi_8F, xmm_lo_07, xmm_lo_8F;
-
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LPC_pred_Q10 = 8; /* silk_RSHIFT( predictLPCOrder, 1 ); */
-
- /* shift psLPC_Q14 */
- psLPC_Q14_hi_89ABCDEF = _mm_alignr_epi8( psLPC_Q14_hi_01234567, psLPC_Q14_hi_89ABCDEF, 2 );
- psLPC_Q14_lo_89ABCDEF = _mm_alignr_epi8( psLPC_Q14_lo_01234567, psLPC_Q14_lo_89ABCDEF, 2 );
-
- psLPC_Q14_hi_01234567 = _mm_srli_si128( psLPC_Q14_hi_01234567, 2 );
- psLPC_Q14_lo_01234567 = _mm_srli_si128( psLPC_Q14_lo_01234567, 2 );
-
- psLPC_Q14_hi_01234567 = _mm_insert_epi16( psLPC_Q14_hi_01234567, (xq_Q14 >> 16), 7 );
- psLPC_Q14_lo_01234567 = _mm_insert_epi16( psLPC_Q14_lo_01234567, (xq_Q14), 7 );
-
- /* high part, use pmaddwd, results in 4 32-bit */
- xmm_hi_07 = _mm_madd_epi16( psLPC_Q14_hi_01234567, a_Q12_01234567 );
- xmm_hi_8F = _mm_madd_epi16( psLPC_Q14_hi_89ABCDEF, a_Q12_89ABCDEF );
-
- /* low part, use pmulhw, results in 8 16-bit, note we need simulate unsigned * signed, _mm_srai_epi16(psLPC_Q14_lo_01234567, 15) */
- xmm_tempa = _mm_cmpgt_epi16( _mm_setzero_si128(), psLPC_Q14_lo_01234567 );
- xmm_tempb = _mm_cmpgt_epi16( _mm_setzero_si128(), psLPC_Q14_lo_89ABCDEF );
-
- xmm_tempa = _mm_and_si128( xmm_tempa, a_Q12_01234567 );
- xmm_tempb = _mm_and_si128( xmm_tempb, a_Q12_89ABCDEF );
-
- xmm_lo_07 = _mm_mulhi_epi16( psLPC_Q14_lo_01234567, a_Q12_01234567 );
- xmm_lo_8F = _mm_mulhi_epi16( psLPC_Q14_lo_89ABCDEF, a_Q12_89ABCDEF );
-
- xmm_lo_07 = _mm_add_epi16( xmm_lo_07, xmm_tempa );
- xmm_lo_8F = _mm_add_epi16( xmm_lo_8F, xmm_tempb );
-
- xmm_lo_07 = _mm_madd_epi16( xmm_lo_07, xmm_one );
- xmm_lo_8F = _mm_madd_epi16( xmm_lo_8F, xmm_one );
-
- /* accumulate */
- xmm_hi_07 = _mm_add_epi32( xmm_hi_07, xmm_hi_8F );
- xmm_lo_07 = _mm_add_epi32( xmm_lo_07, xmm_lo_8F );
-
- xmm_hi_07 = _mm_add_epi32( xmm_hi_07, xmm_lo_07 );
-
- xmm_hi_07 = _mm_add_epi32( xmm_hi_07, _mm_unpackhi_epi64(xmm_hi_07, xmm_hi_07 ) );
- xmm_hi_07 = _mm_add_epi32( xmm_hi_07, _mm_shufflelo_epi16(xmm_hi_07, 0x0E ) );
-
- LPC_pred_Q10 += _mm_cvtsi128_si32( xmm_hi_07 );
-
- /* Long-term prediction */
- if ( opus_likely( signalType == TYPE_VOICED ) ) {
- /* Unrolled loop */
- /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */
- LTP_pred_Q13 = 2;
- {
- __m128i b_Q14_3210, b_Q14_0123, pred_lag_ptr_0123;
-
- b_Q14_3210 = OP_CVTEPI16_EPI32_M64( b_Q14 );
- b_Q14_0123 = _mm_shuffle_epi32( b_Q14_3210, 0x1B );
-
- /* loaded: [0] [-1] [-2] [-3] */
- pred_lag_ptr_0123 = _mm_loadu_si128( (__m128i *)(&pred_lag_ptr[ -3 ] ) );
- /* shuffle to [-3] [-2] [-1] [0] and to new xmm */
- xmm_tempa = _mm_shuffle_epi32( pred_lag_ptr_0123, 0x1B );
- /*64-bit multiply, a[2] * b[-2], a[0] * b[0] */
- xmm_tempa = _mm_mul_epi32( xmm_tempa, b_Q14_3210 );
- /* right shift 2 bytes (16 bits), zero extended */
- xmm_tempa = _mm_srli_si128( xmm_tempa, 2 );
-
- /* a[1] * b[-1], a[3] * b[-3] */
- pred_lag_ptr_0123 = _mm_mul_epi32( pred_lag_ptr_0123, b_Q14_0123 );
- pred_lag_ptr_0123 = _mm_srli_si128( pred_lag_ptr_0123, 2 );
-
- pred_lag_ptr_0123 = _mm_add_epi32( pred_lag_ptr_0123, xmm_tempa );
- /* equal shift right 8 bytes*/
- xmm_tempa = _mm_shuffle_epi32( pred_lag_ptr_0123, _MM_SHUFFLE( 0, 0, 3, 2 ) );
- xmm_tempa = _mm_add_epi32( xmm_tempa, pred_lag_ptr_0123 );
-
- LTP_pred_Q13 += _mm_cvtsi128_si32( xmm_tempa );
-
- LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -4 ], b_Q14[ 4 ] );
- pred_lag_ptr++;
- }
- }
-
- /* Noise shape feedback */
- NSQ->sAR2_Q14[ 9 ] = NSQ->sAR2_Q14[ 8 ];
- NSQ->sAR2_Q14[ 8 ] = _mm_cvtsi128_si32( _mm_srli_si128(_mm_unpackhi_epi16( sAR2_Q14_lo_76543210, sAR2_Q14_hi_76543210 ), 12 ) );
-
- sAR2_Q14_hi_76543210 = _mm_slli_si128( sAR2_Q14_hi_76543210, 2 );
- sAR2_Q14_lo_76543210 = _mm_slli_si128( sAR2_Q14_lo_76543210, 2 );
-
- sAR2_Q14_hi_76543210 = _mm_insert_epi16( sAR2_Q14_hi_76543210, (xq_Q14 >> 16), 0 );
- sAR2_Q14_lo_76543210 = _mm_insert_epi16( sAR2_Q14_lo_76543210, (xq_Q14), 0 );
-
- /* high part, use pmaddwd, results in 4 32-bit */
- xmm_hi_07 = _mm_madd_epi16( sAR2_Q14_hi_76543210, AR_shp_Q13_76543210 );
-
- /* low part, use pmulhw, results in 8 16-bit, note we need simulate unsigned * signed,_mm_srai_epi16(sAR2_Q14_lo_76543210, 15) */
- xmm_tempa = _mm_cmpgt_epi16( _mm_setzero_si128(), sAR2_Q14_lo_76543210 );
- xmm_tempa = _mm_and_si128( xmm_tempa, AR_shp_Q13_76543210 );
-
- xmm_lo_07 = _mm_mulhi_epi16( sAR2_Q14_lo_76543210, AR_shp_Q13_76543210 );
- xmm_lo_07 = _mm_add_epi16( xmm_lo_07, xmm_tempa );
-
- xmm_lo_07 = _mm_madd_epi16( xmm_lo_07, xmm_one );
-
- /* accumulate */
- xmm_hi_07 = _mm_add_epi32( xmm_hi_07, xmm_lo_07 );
-
- xmm_hi_07 = _mm_add_epi32( xmm_hi_07, _mm_unpackhi_epi64(xmm_hi_07, xmm_hi_07 ) );
- xmm_hi_07 = _mm_add_epi32( xmm_hi_07, _mm_shufflelo_epi16(xmm_hi_07, 0x0E ) );
-
- n_AR_Q12 = 5 + _mm_cvtsi128_si32( xmm_hi_07 );
-
- n_AR_Q12 = silk_SMLAWB( n_AR_Q12, NSQ->sAR2_Q14[ 8 ], AR_shp_Q13[ 8 ] );
- n_AR_Q12 = silk_SMLAWB( n_AR_Q12, NSQ->sAR2_Q14[ 9 ], AR_shp_Q13[ 9 ] );
-
- n_AR_Q12 = silk_LSHIFT32( n_AR_Q12, 1 ); /* Q11 -> Q12 */
- n_AR_Q12 = silk_SMLAWB( n_AR_Q12, sLF_AR_shp_Q14, Tilt_Q14 );
-
- n_LF_Q12 = silk_SMULWB( NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - 1 ], LF_shp_Q14 );
- n_LF_Q12 = silk_SMLAWT( n_LF_Q12, sLF_AR_shp_Q14, LF_shp_Q14 );
-
- silk_assert( lag > 0 || signalType != TYPE_VOICED );
-
- /* Combine prediction and noise shaping signals */
- tmp1 = silk_SUB32( silk_LSHIFT32( LPC_pred_Q10, 2 ), n_AR_Q12 ); /* Q12 */
- tmp1 = silk_SUB32( tmp1, n_LF_Q12 ); /* Q12 */
- if( lag > 0 ) {
- /* Symmetric, packed FIR coefficients */
- n_LTP_Q13 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 );
- n_LTP_Q13 = silk_SMLAWT( n_LTP_Q13, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 );
- n_LTP_Q13 = silk_LSHIFT( n_LTP_Q13, 1 );
- shp_lag_ptr++;
-
- tmp2 = silk_SUB32( LTP_pred_Q13, n_LTP_Q13 ); /* Q13 */
- tmp1 = silk_ADD_LSHIFT32( tmp2, tmp1, 1 ); /* Q13 */
- tmp1 = silk_RSHIFT_ROUND( tmp1, 3 ); /* Q10 */
- } else {
- tmp1 = silk_RSHIFT_ROUND( tmp1, 2 ); /* Q10 */
- }
-
- r_Q10 = silk_SUB32( x_sc_Q10[ i ], tmp1 ); /* residual error Q10 */
-
- /* Generate dither */
- NSQ->rand_seed = silk_RAND( NSQ->rand_seed );
-
- /* Flip sign depending on dither */
- tmp2 = -r_Q10;
- if ( NSQ->rand_seed < 0 ) r_Q10 = tmp2;
-
- r_Q10 = silk_LIMIT_32( r_Q10, -(31 << 10), 30 << 10 );
-
- /* Find two quantization level candidates and measure their rate-distortion */
- q1_Q10 = silk_SUB32( r_Q10, offset_Q10 );
- q1_Q0 = silk_RSHIFT( q1_Q10, 10 );
-
- q1_Q10 = table[q1_Q0][0];
- q2_Q10 = table[q1_Q0][1];
-
- if (r_Q10 * table[q1_Q0][2] - table[q1_Q0][3] < 0)
- {
- q1_Q10 = q2_Q10;
- }
-
- pulses[ i ] = (opus_int8)silk_RSHIFT_ROUND( q1_Q10, 10 );
-
- /* Excitation */
- exc_Q14 = silk_LSHIFT( q1_Q10, 4 );
-
- tmp2 = -exc_Q14;
- if ( NSQ->rand_seed < 0 ) exc_Q14 = tmp2;
-
- /* Add predictions */
- LPC_exc_Q14 = silk_ADD_LSHIFT32( exc_Q14, LTP_pred_Q13, 1 );
- xq_Q14 = silk_ADD_LSHIFT32( LPC_exc_Q14, LPC_pred_Q10, 4 );
-
- /* Update states */
- psLPC_Q14++;
- *psLPC_Q14 = xq_Q14;
- sLF_AR_shp_Q14 = silk_SUB_LSHIFT32( xq_Q14, n_AR_Q12, 2 );
-
- NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx ] = silk_SUB_LSHIFT32( sLF_AR_shp_Q14, n_LF_Q12, 2 );
- sLTP_Q15[ NSQ->sLTP_buf_idx ] = silk_LSHIFT( LPC_exc_Q14, 1 );
- NSQ->sLTP_shp_buf_idx++;
- NSQ->sLTP_buf_idx++;
-
- /* Make dither dependent on quantized signal */
- NSQ->rand_seed = silk_ADD32_ovflw( NSQ->rand_seed, pulses[ i ] );
- }
-
- NSQ->sLF_AR_shp_Q14 = sLF_AR_shp_Q14;
-
- /* Scale XQ back to normal level before saving */
- psLPC_Q14 = &NSQ->sLPC_Q14[ NSQ_LPC_BUF_LENGTH ];
-
- /* write back sAR2_Q14 */
- xmm_tempa = _mm_unpackhi_epi16( sAR2_Q14_lo_76543210, sAR2_Q14_hi_76543210 );
- xmm_tempb = _mm_unpacklo_epi16( sAR2_Q14_lo_76543210, sAR2_Q14_hi_76543210 );
- _mm_storeu_si128( (__m128i *)(&NSQ->sAR2_Q14[ 4 ]), xmm_tempa );
- _mm_storeu_si128( (__m128i *)(&NSQ->sAR2_Q14[ 0 ]), xmm_tempb );
-
- /* xq[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( psLPC_Q14[ i ], Gain_Q10 ), 8 ) ); */
- {
- __m128i xmm_Gain_Q10;
- __m128i xmm_xq_Q14_3210, xmm_xq_Q14_x3x1, xmm_xq_Q14_7654, xmm_xq_Q14_x7x5;
-
- /* prepare (1 << 7) in packed 4 32-bits */
- xmm_tempa = _mm_set1_epi32( (1 << 7) );
-
- /* prepare Gain_Q10 in packed 4 32-bits */
- xmm_Gain_Q10 = _mm_set1_epi32( Gain_Q10 );
-
- /* process xq */
- for (i = 0; i < length - 7; i += 8)
- {
- xmm_xq_Q14_3210 = _mm_loadu_si128( (__m128i *)(&(psLPC_Q14[ i + 0 ] ) ) );
- xmm_xq_Q14_7654 = _mm_loadu_si128( (__m128i *)(&(psLPC_Q14[ i + 4 ] ) ) );
-
- /* equal shift right 4 bytes*/
- xmm_xq_Q14_x3x1 = _mm_shuffle_epi32( xmm_xq_Q14_3210, _MM_SHUFFLE( 0, 3, 2, 1 ) );
- /* equal shift right 4 bytes*/
- xmm_xq_Q14_x7x5 = _mm_shuffle_epi32( xmm_xq_Q14_7654, _MM_SHUFFLE( 0, 3, 2, 1 ) );
-
- xmm_xq_Q14_3210 = _mm_mul_epi32( xmm_xq_Q14_3210, xmm_Gain_Q10 );
- xmm_xq_Q14_x3x1 = _mm_mul_epi32( xmm_xq_Q14_x3x1, xmm_Gain_Q10 );
- xmm_xq_Q14_7654 = _mm_mul_epi32( xmm_xq_Q14_7654, xmm_Gain_Q10 );
- xmm_xq_Q14_x7x5 = _mm_mul_epi32( xmm_xq_Q14_x7x5, xmm_Gain_Q10 );
-
- xmm_xq_Q14_3210 = _mm_srli_epi64( xmm_xq_Q14_3210, 16 );
- xmm_xq_Q14_x3x1 = _mm_slli_epi64( xmm_xq_Q14_x3x1, 16 );
- xmm_xq_Q14_7654 = _mm_srli_epi64( xmm_xq_Q14_7654, 16 );
- xmm_xq_Q14_x7x5 = _mm_slli_epi64( xmm_xq_Q14_x7x5, 16 );
-
- xmm_xq_Q14_3210 = _mm_blend_epi16( xmm_xq_Q14_3210, xmm_xq_Q14_x3x1, 0xCC );
- xmm_xq_Q14_7654 = _mm_blend_epi16( xmm_xq_Q14_7654, xmm_xq_Q14_x7x5, 0xCC );
-
- /* silk_RSHIFT_ROUND(xq, 8) */
- xmm_xq_Q14_3210 = _mm_add_epi32( xmm_xq_Q14_3210, xmm_tempa );
- xmm_xq_Q14_7654 = _mm_add_epi32( xmm_xq_Q14_7654, xmm_tempa );
-
- xmm_xq_Q14_3210 = _mm_srai_epi32( xmm_xq_Q14_3210, 8 );
- xmm_xq_Q14_7654 = _mm_srai_epi32( xmm_xq_Q14_7654, 8 );
-
- /* silk_SAT16 */
- xmm_xq_Q14_3210 = _mm_packs_epi32( xmm_xq_Q14_3210, xmm_xq_Q14_7654 );
-
- /* save to xq */
- _mm_storeu_si128( (__m128i *)(&xq[ i ] ), xmm_xq_Q14_3210 );
- }
- }
- for ( ; i < length; i++)
- {
- xq[i] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( psLPC_Q14[ i ], Gain_Q10 ), 8 ) );
- }
-
- /* Update LPC synth buffer */
- silk_memcpy( NSQ->sLPC_Q14, &NSQ->sLPC_Q14[ length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) );
-}
-
-static OPUS_INLINE void silk_nsq_scale_states_sse4_1(
- const silk_encoder_state *psEncC, /* I Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- const opus_int32 x_Q3[], /* I input in Q3 */
- opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */
- const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */
- opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */
- opus_int subfr, /* I subframe number */
- const opus_int LTP_scale_Q14, /* I */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */
- const opus_int signal_type /* I Signal type */
-)
-{
- opus_int i, lag;
- opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q23;
- __m128i xmm_inv_gain_Q23, xmm_x_Q3_x2x0, xmm_x_Q3_x3x1;
-
- lag = pitchL[ subfr ];
- inv_gain_Q31 = silk_INVERSE32_varQ( silk_max( Gains_Q16[ subfr ], 1 ), 47 );
- silk_assert( inv_gain_Q31 != 0 );
-
- /* Calculate gain adjustment factor */
- if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) {
- gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 );
- } else {
- gain_adj_Q16 = (opus_int32)1 << 16;
- }
-
- /* Scale input */
- inv_gain_Q23 = silk_RSHIFT_ROUND( inv_gain_Q31, 8 );
-
- /* prepare inv_gain_Q23 in packed 4 32-bits */
- xmm_inv_gain_Q23 = _mm_set1_epi32(inv_gain_Q23);
-
- for( i = 0; i < psEncC->subfr_length - 3; i += 4 ) {
- xmm_x_Q3_x2x0 = _mm_loadu_si128( (__m128i *)(&(x_Q3[ i ] ) ) );
-
- /* equal shift right 4 bytes*/
- xmm_x_Q3_x3x1 = _mm_shuffle_epi32( xmm_x_Q3_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) );
-
- xmm_x_Q3_x2x0 = _mm_mul_epi32( xmm_x_Q3_x2x0, xmm_inv_gain_Q23 );
- xmm_x_Q3_x3x1 = _mm_mul_epi32( xmm_x_Q3_x3x1, xmm_inv_gain_Q23 );
-
- xmm_x_Q3_x2x0 = _mm_srli_epi64( xmm_x_Q3_x2x0, 16 );
- xmm_x_Q3_x3x1 = _mm_slli_epi64( xmm_x_Q3_x3x1, 16 );
-
- xmm_x_Q3_x2x0 = _mm_blend_epi16( xmm_x_Q3_x2x0, xmm_x_Q3_x3x1, 0xCC );
-
- _mm_storeu_si128( (__m128i *)(&(x_sc_Q10[ i ] ) ), xmm_x_Q3_x2x0 );
- }
-
- for( ; i < psEncC->subfr_length; i++ ) {
- x_sc_Q10[ i ] = silk_SMULWW( x_Q3[ i ], inv_gain_Q23 );
- }
-
- /* Save inverse gain */
- NSQ->prev_gain_Q16 = Gains_Q16[ subfr ];
-
- /* After rewhitening the LTP state is un-scaled, so scale with inv_gain_Q16 */
- if( NSQ->rewhite_flag ) {
- if( subfr == 0 ) {
- /* Do LTP downscaling */
- inv_gain_Q31 = silk_LSHIFT( silk_SMULWB( inv_gain_Q31, LTP_scale_Q14 ), 2 );
- }
- for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) {
- silk_assert( i < MAX_FRAME_LENGTH );
- sLTP_Q15[ i ] = silk_SMULWB( inv_gain_Q31, sLTP[ i ] );
- }
- }
-
- /* Adjust for changing gain */
- if( gain_adj_Q16 != (opus_int32)1 << 16 ) {
- /* Scale long-term shaping state */
- __m128i xmm_gain_adj_Q16, xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1;
-
- /* prepare gain_adj_Q16 in packed 4 32-bits */
- xmm_gain_adj_Q16 = _mm_set1_epi32(gain_adj_Q16);
-
- for( i = NSQ->sLTP_shp_buf_idx - psEncC->ltp_mem_length; i < NSQ->sLTP_shp_buf_idx - 3; i += 4 )
- {
- xmm_sLTP_shp_Q14_x2x0 = _mm_loadu_si128( (__m128i *)(&(NSQ->sLTP_shp_Q14[ i ] ) ) );
- /* equal shift right 4 bytes*/
- xmm_sLTP_shp_Q14_x3x1 = _mm_shuffle_epi32( xmm_sLTP_shp_Q14_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) );
-
- xmm_sLTP_shp_Q14_x2x0 = _mm_mul_epi32( xmm_sLTP_shp_Q14_x2x0, xmm_gain_adj_Q16 );
- xmm_sLTP_shp_Q14_x3x1 = _mm_mul_epi32( xmm_sLTP_shp_Q14_x3x1, xmm_gain_adj_Q16 );
-
- xmm_sLTP_shp_Q14_x2x0 = _mm_srli_epi64( xmm_sLTP_shp_Q14_x2x0, 16 );
- xmm_sLTP_shp_Q14_x3x1 = _mm_slli_epi64( xmm_sLTP_shp_Q14_x3x1, 16 );
-
- xmm_sLTP_shp_Q14_x2x0 = _mm_blend_epi16( xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1, 0xCC );
-
- _mm_storeu_si128( (__m128i *)(&(NSQ->sLTP_shp_Q14[ i ] ) ), xmm_sLTP_shp_Q14_x2x0 );
- }
-
- for( ; i < NSQ->sLTP_shp_buf_idx; i++ ) {
- NSQ->sLTP_shp_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLTP_shp_Q14[ i ] );
- }
-
- /* Scale long-term prediction state */
- if( signal_type == TYPE_VOICED && NSQ->rewhite_flag == 0 ) {
- for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) {
- sLTP_Q15[ i ] = silk_SMULWW( gain_adj_Q16, sLTP_Q15[ i ] );
- }
- }
-
- NSQ->sLF_AR_shp_Q14 = silk_SMULWW( gain_adj_Q16, NSQ->sLF_AR_shp_Q14 );
-
- /* Scale short-term prediction and shaping states */
- for( i = 0; i < NSQ_LPC_BUF_LENGTH; i++ ) {
- NSQ->sLPC_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLPC_Q14[ i ] );
- }
- for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) {
- NSQ->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sAR2_Q14[ i ] );
- }
- }
-}
diff --git a/thirdparty/opus/silk/x86/SigProc_FIX_sse.h b/thirdparty/opus/silk/x86/SigProc_FIX_sse.h
deleted file mode 100644
index 61efa8da41..0000000000
--- a/thirdparty/opus/silk/x86/SigProc_FIX_sse.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef SIGPROC_FIX_SSE_H
-#define SIGPROC_FIX_SSE_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#if defined(OPUS_X86_MAY_HAVE_SSE4_1)
-void silk_burg_modified_sse4_1(
- opus_int32 *res_nrg, /* O Residual energy */
- opus_int *res_nrg_Q, /* O Residual energy Q value */
- opus_int32 A_Q16[], /* O Prediction coefficients (length order) */
- const opus_int16 x[], /* I Input signal, length: nb_subfr * ( D + subfr_length ) */
- const opus_int32 minInvGain_Q30, /* I Inverse of max prediction gain */
- const opus_int subfr_length, /* I Input signal subframe length (incl. D preceding samples) */
- const opus_int nb_subfr, /* I Number of subframes stacked in x */
- const opus_int D, /* I Order */
- int arch /* I Run-time architecture */
-);
-
-#if defined(OPUS_X86_PRESUME_SSE4_1)
-#define silk_burg_modified(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch) \
- ((void)(arch), silk_burg_modified_sse4_1(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch))
-
-#else
-
-extern void (*const SILK_BURG_MODIFIED_IMPL[OPUS_ARCHMASK + 1])(
- opus_int32 *res_nrg, /* O Residual energy */
- opus_int *res_nrg_Q, /* O Residual energy Q value */
- opus_int32 A_Q16[], /* O Prediction coefficients (length order) */
- const opus_int16 x[], /* I Input signal, length: nb_subfr * ( D + subfr_length ) */
- const opus_int32 minInvGain_Q30, /* I Inverse of max prediction gain */
- const opus_int subfr_length, /* I Input signal subframe length (incl. D preceding samples) */
- const opus_int nb_subfr, /* I Number of subframes stacked in x */
- const opus_int D, /* I Order */
- int arch /* I Run-time architecture */);
-
-# define silk_burg_modified(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch) \
- ((*SILK_BURG_MODIFIED_IMPL[(arch) & OPUS_ARCHMASK])(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch))
-
-#endif
-
-opus_int64 silk_inner_prod16_aligned_64_sse4_1(
- const opus_int16 *inVec1,
- const opus_int16 *inVec2,
- const opus_int len
-);
-
-
-#if defined(OPUS_X86_PRESUME_SSE4_1)
-
-#define silk_inner_prod16_aligned_64(inVec1, inVec2, len, arch) \
- ((void)(arch),silk_inner_prod16_aligned_64_sse4_1(inVec1, inVec2, len))
-
-#else
-
-extern opus_int64 (*const SILK_INNER_PROD16_ALIGNED_64_IMPL[OPUS_ARCHMASK + 1])(
- const opus_int16 *inVec1,
- const opus_int16 *inVec2,
- const opus_int len);
-
-# define silk_inner_prod16_aligned_64(inVec1, inVec2, len, arch) \
- ((*SILK_INNER_PROD16_ALIGNED_64_IMPL[(arch) & OPUS_ARCHMASK])(inVec1, inVec2, len))
-
-#endif
-#endif
-#endif
diff --git a/thirdparty/opus/silk/x86/VAD_sse.c b/thirdparty/opus/silk/x86/VAD_sse.c
deleted file mode 100644
index 4e90f4410d..0000000000
--- a/thirdparty/opus/silk/x86/VAD_sse.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-
-#include "main.h"
-#include "stack_alloc.h"
-
-/* Weighting factors for tilt measure */
-static const opus_int32 tiltWeights[ VAD_N_BANDS ] = { 30000, 6000, -12000, -12000 };
-
-/***************************************/
-/* Get the speech activity level in Q8 */
-/***************************************/
-opus_int silk_VAD_GetSA_Q8_sse4_1( /* O Return value, 0 if success */
- silk_encoder_state *psEncC, /* I/O Encoder state */
- const opus_int16 pIn[] /* I PCM input */
-)
-{
- opus_int SA_Q15, pSNR_dB_Q7, input_tilt;
- opus_int decimated_framelength1, decimated_framelength2;
- opus_int decimated_framelength;
- opus_int dec_subframe_length, dec_subframe_offset, SNR_Q7, i, b, s;
- opus_int32 sumSquared, smooth_coef_Q16;
- opus_int16 HPstateTmp;
- VARDECL( opus_int16, X );
- opus_int32 Xnrg[ VAD_N_BANDS ];
- opus_int32 NrgToNoiseRatio_Q8[ VAD_N_BANDS ];
- opus_int32 speech_nrg, x_tmp;
- opus_int X_offset[ VAD_N_BANDS ];
- opus_int ret = 0;
- silk_VAD_state *psSilk_VAD = &psEncC->sVAD;
-
- SAVE_STACK;
-
- /* Safety checks */
- silk_assert( VAD_N_BANDS == 4 );
- silk_assert( MAX_FRAME_LENGTH >= psEncC->frame_length );
- silk_assert( psEncC->frame_length <= 512 );
- silk_assert( psEncC->frame_length == 8 * silk_RSHIFT( psEncC->frame_length, 3 ) );
-
- /***********************/
- /* Filter and Decimate */
- /***********************/
- decimated_framelength1 = silk_RSHIFT( psEncC->frame_length, 1 );
- decimated_framelength2 = silk_RSHIFT( psEncC->frame_length, 2 );
- decimated_framelength = silk_RSHIFT( psEncC->frame_length, 3 );
- /* Decimate into 4 bands:
- 0 L 3L L 3L 5L
- - -- - -- --
- 8 8 2 4 4
-
- [0-1 kHz| temp. |1-2 kHz| 2-4 kHz | 4-8 kHz |
-
- They're arranged to allow the minimal ( frame_length / 4 ) extra
- scratch space during the downsampling process */
- X_offset[ 0 ] = 0;
- X_offset[ 1 ] = decimated_framelength + decimated_framelength2;
- X_offset[ 2 ] = X_offset[ 1 ] + decimated_framelength;
- X_offset[ 3 ] = X_offset[ 2 ] + decimated_framelength2;
- ALLOC( X, X_offset[ 3 ] + decimated_framelength1, opus_int16 );
-
- /* 0-8 kHz to 0-4 kHz and 4-8 kHz */
- silk_ana_filt_bank_1( pIn, &psSilk_VAD->AnaState[ 0 ],
- X, &X[ X_offset[ 3 ] ], psEncC->frame_length );
-
- /* 0-4 kHz to 0-2 kHz and 2-4 kHz */
- silk_ana_filt_bank_1( X, &psSilk_VAD->AnaState1[ 0 ],
- X, &X[ X_offset[ 2 ] ], decimated_framelength1 );
-
- /* 0-2 kHz to 0-1 kHz and 1-2 kHz */
- silk_ana_filt_bank_1( X, &psSilk_VAD->AnaState2[ 0 ],
- X, &X[ X_offset[ 1 ] ], decimated_framelength2 );
-
- /*********************************************/
- /* HP filter on lowest band (differentiator) */
- /*********************************************/
- X[ decimated_framelength - 1 ] = silk_RSHIFT( X[ decimated_framelength - 1 ], 1 );
- HPstateTmp = X[ decimated_framelength - 1 ];
- for( i = decimated_framelength - 1; i > 0; i-- ) {
- X[ i - 1 ] = silk_RSHIFT( X[ i - 1 ], 1 );
- X[ i ] -= X[ i - 1 ];
- }
- X[ 0 ] -= psSilk_VAD->HPstate;
- psSilk_VAD->HPstate = HPstateTmp;
-
- /*************************************/
- /* Calculate the energy in each band */
- /*************************************/
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- /* Find the decimated framelength in the non-uniformly divided bands */
- decimated_framelength = silk_RSHIFT( psEncC->frame_length, silk_min_int( VAD_N_BANDS - b, VAD_N_BANDS - 1 ) );
-
- /* Split length into subframe lengths */
- dec_subframe_length = silk_RSHIFT( decimated_framelength, VAD_INTERNAL_SUBFRAMES_LOG2 );
- dec_subframe_offset = 0;
-
- /* Compute energy per sub-frame */
- /* initialize with summed energy of last subframe */
- Xnrg[ b ] = psSilk_VAD->XnrgSubfr[ b ];
- for( s = 0; s < VAD_INTERNAL_SUBFRAMES; s++ ) {
- __m128i xmm_X, xmm_acc;
- sumSquared = 0;
-
- xmm_acc = _mm_setzero_si128();
-
- for( i = 0; i < dec_subframe_length - 7; i += 8 )
- {
- xmm_X = _mm_loadu_si128( (__m128i *)&(X[ X_offset[ b ] + i + dec_subframe_offset ] ) );
- xmm_X = _mm_srai_epi16( xmm_X, 3 );
- xmm_X = _mm_madd_epi16( xmm_X, xmm_X );
- xmm_acc = _mm_add_epi32( xmm_acc, xmm_X );
- }
-
- xmm_acc = _mm_add_epi32( xmm_acc, _mm_unpackhi_epi64( xmm_acc, xmm_acc ) );
- xmm_acc = _mm_add_epi32( xmm_acc, _mm_shufflelo_epi16( xmm_acc, 0x0E ) );
-
- sumSquared += _mm_cvtsi128_si32( xmm_acc );
-
- for( ; i < dec_subframe_length; i++ ) {
- /* The energy will be less than dec_subframe_length * ( silk_int16_MIN / 8 ) ^ 2. */
- /* Therefore we can accumulate with no risk of overflow (unless dec_subframe_length > 128) */
- x_tmp = silk_RSHIFT(
- X[ X_offset[ b ] + i + dec_subframe_offset ], 3 );
- sumSquared = silk_SMLABB( sumSquared, x_tmp, x_tmp );
-
- /* Safety check */
- silk_assert( sumSquared >= 0 );
- }
-
- /* Add/saturate summed energy of current subframe */
- if( s < VAD_INTERNAL_SUBFRAMES - 1 ) {
- Xnrg[ b ] = silk_ADD_POS_SAT32( Xnrg[ b ], sumSquared );
- } else {
- /* Look-ahead subframe */
- Xnrg[ b ] = silk_ADD_POS_SAT32( Xnrg[ b ], silk_RSHIFT( sumSquared, 1 ) );
- }
-
- dec_subframe_offset += dec_subframe_length;
- }
- psSilk_VAD->XnrgSubfr[ b ] = sumSquared;
- }
-
- /********************/
- /* Noise estimation */
- /********************/
- silk_VAD_GetNoiseLevels( &Xnrg[ 0 ], psSilk_VAD );
-
- /***********************************************/
- /* Signal-plus-noise to noise ratio estimation */
- /***********************************************/
- sumSquared = 0;
- input_tilt = 0;
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- speech_nrg = Xnrg[ b ] - psSilk_VAD->NL[ b ];
- if( speech_nrg > 0 ) {
- /* Divide, with sufficient resolution */
- if( ( Xnrg[ b ] & 0xFF800000 ) == 0 ) {
- NrgToNoiseRatio_Q8[ b ] = silk_DIV32( silk_LSHIFT( Xnrg[ b ], 8 ), psSilk_VAD->NL[ b ] + 1 );
- } else {
- NrgToNoiseRatio_Q8[ b ] = silk_DIV32( Xnrg[ b ], silk_RSHIFT( psSilk_VAD->NL[ b ], 8 ) + 1 );
- }
-
- /* Convert to log domain */
- SNR_Q7 = silk_lin2log( NrgToNoiseRatio_Q8[ b ] ) - 8 * 128;
-
- /* Sum-of-squares */
- sumSquared = silk_SMLABB( sumSquared, SNR_Q7, SNR_Q7 ); /* Q14 */
-
- /* Tilt measure */
- if( speech_nrg < ( (opus_int32)1 << 20 ) ) {
- /* Scale down SNR value for small subband speech energies */
- SNR_Q7 = silk_SMULWB( silk_LSHIFT( silk_SQRT_APPROX( speech_nrg ), 6 ), SNR_Q7 );
- }
- input_tilt = silk_SMLAWB( input_tilt, tiltWeights[ b ], SNR_Q7 );
- } else {
- NrgToNoiseRatio_Q8[ b ] = 256;
- }
- }
-
- /* Mean-of-squares */
- sumSquared = silk_DIV32_16( sumSquared, VAD_N_BANDS ); /* Q14 */
-
- /* Root-mean-square approximation, scale to dBs, and write to output pointer */
- pSNR_dB_Q7 = (opus_int16)( 3 * silk_SQRT_APPROX( sumSquared ) ); /* Q7 */
-
- /*********************************/
- /* Speech Probability Estimation */
- /*********************************/
- SA_Q15 = silk_sigm_Q15( silk_SMULWB( VAD_SNR_FACTOR_Q16, pSNR_dB_Q7 ) - VAD_NEGATIVE_OFFSET_Q5 );
-
- /**************************/
- /* Frequency Tilt Measure */
- /**************************/
- psEncC->input_tilt_Q15 = silk_LSHIFT( silk_sigm_Q15( input_tilt ) - 16384, 1 );
-
- /**************************************************/
- /* Scale the sigmoid output based on power levels */
- /**************************************************/
- speech_nrg = 0;
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- /* Accumulate signal-without-noise energies, higher frequency bands have more weight */
- speech_nrg += ( b + 1 ) * silk_RSHIFT( Xnrg[ b ] - psSilk_VAD->NL[ b ], 4 );
- }
-
- /* Power scaling */
- if( speech_nrg <= 0 ) {
- SA_Q15 = silk_RSHIFT( SA_Q15, 1 );
- } else if( speech_nrg < 32768 ) {
- if( psEncC->frame_length == 10 * psEncC->fs_kHz ) {
- speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 );
- } else {
- speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 );
- }
-
- /* square-root */
- speech_nrg = silk_SQRT_APPROX( speech_nrg );
- SA_Q15 = silk_SMULWB( 32768 + speech_nrg, SA_Q15 );
- }
-
- /* Copy the resulting speech activity in Q8 */
- psEncC->speech_activity_Q8 = silk_min_int( silk_RSHIFT( SA_Q15, 7 ), silk_uint8_MAX );
-
- /***********************************/
- /* Energy Level and SNR estimation */
- /***********************************/
- /* Smoothing coefficient */
- smooth_coef_Q16 = silk_SMULWB( VAD_SNR_SMOOTH_COEF_Q18, silk_SMULWB( (opus_int32)SA_Q15, SA_Q15 ) );
-
- if( psEncC->frame_length == 10 * psEncC->fs_kHz ) {
- smooth_coef_Q16 >>= 1;
- }
-
- for( b = 0; b < VAD_N_BANDS; b++ ) {
- /* compute smoothed energy-to-noise ratio per band */
- psSilk_VAD->NrgRatioSmth_Q8[ b ] = silk_SMLAWB( psSilk_VAD->NrgRatioSmth_Q8[ b ],
- NrgToNoiseRatio_Q8[ b ] - psSilk_VAD->NrgRatioSmth_Q8[ b ], smooth_coef_Q16 );
-
- /* signal to noise ratio in dB per band */
- SNR_Q7 = 3 * ( silk_lin2log( psSilk_VAD->NrgRatioSmth_Q8[b] ) - 8 * 128 );
- /* quality = sigmoid( 0.25 * ( SNR_dB - 16 ) ); */
- psEncC->input_quality_bands_Q15[ b ] = silk_sigm_Q15( silk_RSHIFT( SNR_Q7 - 16 * 128, 4 ) );
- }
-
- RESTORE_STACK;
- return( ret );
-}
diff --git a/thirdparty/opus/silk/x86/VQ_WMat_EC_sse.c b/thirdparty/opus/silk/x86/VQ_WMat_EC_sse.c
deleted file mode 100644
index 74d6c6d0ec..0000000000
--- a/thirdparty/opus/silk/x86/VQ_WMat_EC_sse.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-#include "main.h"
-#include "celt/x86/x86cpu.h"
-
-/* Entropy constrained matrix-weighted VQ, hard-coded to 5-element vectors, for a single input data vector */
-void silk_VQ_WMat_EC_sse4_1(
- opus_int8 *ind, /* O index of best codebook vector */
- opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */
- opus_int *gain_Q7, /* O sum of absolute LTP coefficients */
- const opus_int16 *in_Q14, /* I input vector to be quantized */
- const opus_int32 *W_Q18, /* I weighting matrix */
- const opus_int8 *cb_Q7, /* I codebook */
- const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */
- const opus_uint8 *cl_Q5, /* I code length for each codebook vector */
- const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */
- const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */
- opus_int L /* I number of vectors in codebook */
-)
-{
- opus_int k, gain_tmp_Q7;
- const opus_int8 *cb_row_Q7;
- opus_int16 diff_Q14[ 5 ];
- opus_int32 sum1_Q14, sum2_Q16;
-
- __m128i C_tmp1, C_tmp2, C_tmp3, C_tmp4, C_tmp5;
- /* Loop over codebook */
- *rate_dist_Q14 = silk_int32_MAX;
- cb_row_Q7 = cb_Q7;
- for( k = 0; k < L; k++ ) {
- gain_tmp_Q7 = cb_gain_Q7[k];
-
- diff_Q14[ 0 ] = in_Q14[ 0 ] - silk_LSHIFT( cb_row_Q7[ 0 ], 7 );
-
- C_tmp1 = OP_CVTEPI16_EPI32_M64( &in_Q14[ 1 ] );
- C_tmp2 = OP_CVTEPI8_EPI32_M32( &cb_row_Q7[ 1 ] );
- C_tmp2 = _mm_slli_epi32( C_tmp2, 7 );
- C_tmp1 = _mm_sub_epi32( C_tmp1, C_tmp2 );
-
- diff_Q14[ 1 ] = _mm_extract_epi16( C_tmp1, 0 );
- diff_Q14[ 2 ] = _mm_extract_epi16( C_tmp1, 2 );
- diff_Q14[ 3 ] = _mm_extract_epi16( C_tmp1, 4 );
- diff_Q14[ 4 ] = _mm_extract_epi16( C_tmp1, 6 );
-
- /* Weighted rate */
- sum1_Q14 = silk_SMULBB( mu_Q9, cl_Q5[ k ] );
-
- /* Penalty for too large gain */
- sum1_Q14 = silk_ADD_LSHIFT32( sum1_Q14, silk_max( silk_SUB32( gain_tmp_Q7, max_gain_Q7 ), 0 ), 10 );
-
- silk_assert( sum1_Q14 >= 0 );
-
- /* first row of W_Q18 */
- C_tmp3 = _mm_loadu_si128( (__m128i *)(&W_Q18[ 1 ] ) );
- C_tmp4 = _mm_mul_epi32( C_tmp3, C_tmp1 );
- C_tmp4 = _mm_srli_si128( C_tmp4, 2 );
-
- C_tmp1 = _mm_shuffle_epi32( C_tmp1, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* shift right 4 bytes */
- C_tmp3 = _mm_shuffle_epi32( C_tmp3, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* shift right 4 bytes */
-
- C_tmp5 = _mm_mul_epi32( C_tmp3, C_tmp1 );
- C_tmp5 = _mm_srli_si128( C_tmp5, 2 );
-
- C_tmp5 = _mm_add_epi32( C_tmp4, C_tmp5 );
- C_tmp5 = _mm_slli_epi32( C_tmp5, 1 );
-
- C_tmp5 = _mm_add_epi32( C_tmp5, _mm_shuffle_epi32( C_tmp5, _MM_SHUFFLE( 0, 0, 0, 2 ) ) );
- sum2_Q16 = _mm_cvtsi128_si32( C_tmp5 );
-
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 0 ], diff_Q14[ 0 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 0 ] );
-
- /* second row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 7 ], diff_Q14[ 2 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 8 ], diff_Q14[ 3 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 9 ], diff_Q14[ 4 ] );
- sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 6 ], diff_Q14[ 1 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 1 ] );
-
- /* third row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 13 ], diff_Q14[ 3 ] );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 14 ], diff_Q14[ 4 ] );
- sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 12 ], diff_Q14[ 2 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 2 ] );
-
- /* fourth row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 19 ], diff_Q14[ 4 ] );
- sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 );
- sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 18 ], diff_Q14[ 3 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 3 ] );
-
- /* last row of W_Q18 */
- sum2_Q16 = silk_SMULWB( W_Q18[ 24 ], diff_Q14[ 4 ] );
- sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 4 ] );
-
- silk_assert( sum1_Q14 >= 0 );
-
- /* find best */
- if( sum1_Q14 < *rate_dist_Q14 ) {
- *rate_dist_Q14 = sum1_Q14;
- *ind = (opus_int8)k;
- *gain_Q7 = gain_tmp_Q7;
- }
-
- /* Go to next cbk vector */
- cb_row_Q7 += LTP_ORDER;
- }
-}
diff --git a/thirdparty/opus/silk/x86/main_sse.h b/thirdparty/opus/silk/x86/main_sse.h
deleted file mode 100644
index d8d61310ed..0000000000
--- a/thirdparty/opus/silk/x86/main_sse.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef MAIN_SSE_H
-#define MAIN_SSE_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-# if defined(OPUS_X86_MAY_HAVE_SSE4_1)
-
-# define OVERRIDE_silk_VQ_WMat_EC
-
-void silk_VQ_WMat_EC_sse4_1(
- opus_int8 *ind, /* O index of best codebook vector */
- opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */
- opus_int *gain_Q7, /* O sum of absolute LTP coefficients */
- const opus_int16 *in_Q14, /* I input vector to be quantized */
- const opus_int32 *W_Q18, /* I weighting matrix */
- const opus_int8 *cb_Q7, /* I codebook */
- const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */
- const opus_uint8 *cl_Q5, /* I code length for each codebook vector */
- const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */
- const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */
- opus_int L /* I number of vectors in codebook */
-);
-
-#if defined OPUS_X86_PRESUME_SSE4_1
-
-#define silk_VQ_WMat_EC(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \
- mu_Q9, max_gain_Q7, L, arch) \
- ((void)(arch),silk_VQ_WMat_EC_sse4_1(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \
- mu_Q9, max_gain_Q7, L))
-
-#else
-
-extern void (*const SILK_VQ_WMAT_EC_IMPL[OPUS_ARCHMASK + 1])(
- opus_int8 *ind, /* O index of best codebook vector */
- opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */
- opus_int *gain_Q7, /* O sum of absolute LTP coefficients */
- const opus_int16 *in_Q14, /* I input vector to be quantized */
- const opus_int32 *W_Q18, /* I weighting matrix */
- const opus_int8 *cb_Q7, /* I codebook */
- const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */
- const opus_uint8 *cl_Q5, /* I code length for each codebook vector */
- const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */
- const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */
- opus_int L /* I number of vectors in codebook */
-);
-
-# define silk_VQ_WMat_EC(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \
- mu_Q9, max_gain_Q7, L, arch) \
- ((*SILK_VQ_WMAT_EC_IMPL[(arch) & OPUS_ARCHMASK])(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \
- mu_Q9, max_gain_Q7, L))
-
-#endif
-
-# define OVERRIDE_silk_NSQ
-
-void silk_NSQ_sse4_1(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-);
-
-#if defined OPUS_X86_PRESUME_SSE4_1
-
-#define silk_NSQ(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14, arch) \
- ((void)(arch),silk_NSQ_sse4_1(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14))
-
-#else
-
-extern void (*const SILK_NSQ_IMPL[OPUS_ARCHMASK + 1])(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-);
-
-# define silk_NSQ(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14, arch) \
- ((*SILK_NSQ_IMPL[(arch) & OPUS_ARCHMASK])(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14))
-
-#endif
-
-# define OVERRIDE_silk_NSQ_del_dec
-
-void silk_NSQ_del_dec_sse4_1(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-);
-
-#if defined OPUS_X86_PRESUME_SSE4_1
-
-#define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14, arch) \
- ((void)(arch),silk_NSQ_del_dec_sse4_1(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14))
-
-#else
-
-extern void (*const SILK_NSQ_DEL_DEC_IMPL[OPUS_ARCHMASK + 1])(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-);
-
-# define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14, arch) \
- ((*SILK_NSQ_DEL_DEC_IMPL[(arch) & OPUS_ARCHMASK])(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \
- HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14))
-
-#endif
-
-void silk_noise_shape_quantizer(
- silk_nsq_state *NSQ, /* I/O NSQ state */
- opus_int signalType, /* I Signal type */
- const opus_int32 x_sc_Q10[], /* I */
- opus_int8 pulses[], /* O */
- opus_int16 xq[], /* O */
- opus_int32 sLTP_Q15[], /* I/O LTP state */
- const opus_int16 a_Q12[], /* I Short term prediction coefs */
- const opus_int16 b_Q14[], /* I Long term prediction coefs */
- const opus_int16 AR_shp_Q13[], /* I Noise shaping AR coefs */
- opus_int lag, /* I Pitch lag */
- opus_int32 HarmShapeFIRPacked_Q14, /* I */
- opus_int Tilt_Q14, /* I Spectral tilt */
- opus_int32 LF_shp_Q14, /* I */
- opus_int32 Gain_Q16, /* I */
- opus_int Lambda_Q10, /* I */
- opus_int offset_Q10, /* I */
- opus_int length, /* I Input length */
- opus_int shapingLPCOrder, /* I Noise shaping AR filter order */
- opus_int predictLPCOrder, /* I Prediction filter order */
- int arch /* I Architecture */
-);
-
-/**************************/
-/* Noise level estimation */
-/**************************/
-void silk_VAD_GetNoiseLevels(
- const opus_int32 pX[ VAD_N_BANDS ], /* I subband energies */
- silk_VAD_state *psSilk_VAD /* I/O Pointer to Silk VAD state */
-);
-
-# define OVERRIDE_silk_VAD_GetSA_Q8
-
-opus_int silk_VAD_GetSA_Q8_sse4_1(
- silk_encoder_state *psEnC,
- const opus_int16 pIn[]
-);
-
-#if defined(OPUS_X86_PRESUME_SSE4_1)
-#define silk_VAD_GetSA_Q8(psEnC, pIn, arch) ((void)(arch),silk_VAD_GetSA_Q8_sse4_1(psEnC, pIn))
-
-#else
-
-# define silk_VAD_GetSA_Q8(psEnC, pIn, arch) \
- ((*SILK_VAD_GETSA_Q8_IMPL[(arch) & OPUS_ARCHMASK])(psEnC, pIn))
-
-extern opus_int (*const SILK_VAD_GETSA_Q8_IMPL[OPUS_ARCHMASK + 1])(
- silk_encoder_state *psEnC,
- const opus_int16 pIn[]);
-
-# define OVERRIDE_silk_warped_LPC_analysis_filter_FIX
-
-#endif
-
-void silk_warped_LPC_analysis_filter_FIX_sse4_1(
- opus_int32 state[], /* I/O State [order + 1] */
- opus_int32 res_Q2[], /* O Residual signal [length] */
- const opus_int16 coef_Q13[], /* I Coefficients [order] */
- const opus_int16 input[], /* I Input signal [length] */
- const opus_int16 lambda_Q16, /* I Warping factor */
- const opus_int length, /* I Length of input signal */
- const opus_int order /* I Filter order (even) */
-);
-
-#if defined(OPUS_X86_PRESUME_SSE4_1)
-#define silk_warped_LPC_analysis_filter_FIX(state, res_Q2, coef_Q13, input, lambda_Q16, length, order, arch) \
- ((void)(arch),silk_warped_LPC_analysis_filter_FIX_c(state, res_Q2, coef_Q13, input, lambda_Q16, length, order))
-
-#else
-
-extern void (*const SILK_WARPED_LPC_ANALYSIS_FILTER_FIX_IMPL[OPUS_ARCHMASK + 1])(
- opus_int32 state[], /* I/O State [order + 1] */
- opus_int32 res_Q2[], /* O Residual signal [length] */
- const opus_int16 coef_Q13[], /* I Coefficients [order] */
- const opus_int16 input[], /* I Input signal [length] */
- const opus_int16 lambda_Q16, /* I Warping factor */
- const opus_int length, /* I Length of input signal */
- const opus_int order /* I Filter order (even) */
-);
-
-# define silk_warped_LPC_analysis_filter_FIX(state, res_Q2, coef_Q13, input, lambda_Q16, length, order, arch) \
- ((*SILK_WARPED_LPC_ANALYSIS_FILTER_FIX_IMPL[(arch) & OPUS_ARCHMASK])(state, res_Q2, coef_Q13, input, lambda_Q16, length, order))
-
-#endif
-
-# endif
-#endif
diff --git a/thirdparty/opus/silk/x86/x86_silk_map.c b/thirdparty/opus/silk/x86/x86_silk_map.c
deleted file mode 100644
index 818841f2c1..0000000000
--- a/thirdparty/opus/silk/x86/x86_silk_map.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/* Copyright (c) 2014, Cisco Systems, INC
- Written by XiangMingZhu WeiZhou MinPeng YanWang
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#if defined(HAVE_CONFIG_H)
-#include "config.h"
-#endif
-
-#include "celt/x86/x86cpu.h"
-#include "structs.h"
-#include "SigProc_FIX.h"
-#include "pitch.h"
-#include "main.h"
-
-#if !defined(OPUS_X86_PRESUME_SSE4_1)
-
-#if defined(FIXED_POINT)
-
-#include "fixed/main_FIX.h"
-
-opus_int64 (*const SILK_INNER_PROD16_ALIGNED_64_IMPL[ OPUS_ARCHMASK + 1 ] )(
- const opus_int16 *inVec1,
- const opus_int16 *inVec2,
- const opus_int len
-) = {
- silk_inner_prod16_aligned_64_c, /* non-sse */
- silk_inner_prod16_aligned_64_c,
- silk_inner_prod16_aligned_64_c,
- MAY_HAVE_SSE4_1( silk_inner_prod16_aligned_64 ), /* sse4.1 */
- MAY_HAVE_SSE4_1( silk_inner_prod16_aligned_64 ) /* avx */
-};
-
-#endif
-
-opus_int (*const SILK_VAD_GETSA_Q8_IMPL[ OPUS_ARCHMASK + 1 ] )(
- silk_encoder_state *psEncC,
- const opus_int16 pIn[]
-) = {
- silk_VAD_GetSA_Q8_c, /* non-sse */
- silk_VAD_GetSA_Q8_c,
- silk_VAD_GetSA_Q8_c,
- MAY_HAVE_SSE4_1( silk_VAD_GetSA_Q8 ), /* sse4.1 */
- MAY_HAVE_SSE4_1( silk_VAD_GetSA_Q8 ) /* avx */
-};
-
-void (*const SILK_NSQ_IMPL[ OPUS_ARCHMASK + 1 ] )(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-) = {
- silk_NSQ_c, /* non-sse */
- silk_NSQ_c,
- silk_NSQ_c,
- MAY_HAVE_SSE4_1( silk_NSQ ), /* sse4.1 */
- MAY_HAVE_SSE4_1( silk_NSQ ) /* avx */
-};
-
-void (*const SILK_VQ_WMAT_EC_IMPL[ OPUS_ARCHMASK + 1 ] )(
- opus_int8 *ind, /* O index of best codebook vector */
- opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */
- opus_int *gain_Q7, /* O sum of absolute LTP coefficients */
- const opus_int16 *in_Q14, /* I input vector to be quantized */
- const opus_int32 *W_Q18, /* I weighting matrix */
- const opus_int8 *cb_Q7, /* I codebook */
- const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */
- const opus_uint8 *cl_Q5, /* I code length for each codebook vector */
- const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */
- const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */
- opus_int L /* I number of vectors in codebook */
-) = {
- silk_VQ_WMat_EC_c, /* non-sse */
- silk_VQ_WMat_EC_c,
- silk_VQ_WMat_EC_c,
- MAY_HAVE_SSE4_1( silk_VQ_WMat_EC ), /* sse4.1 */
- MAY_HAVE_SSE4_1( silk_VQ_WMat_EC ) /* avx */
-};
-
-void (*const SILK_NSQ_DEL_DEC_IMPL[ OPUS_ARCHMASK + 1 ] )(
- const silk_encoder_state *psEncC, /* I/O Encoder State */
- silk_nsq_state *NSQ, /* I/O NSQ state */
- SideInfoIndices *psIndices, /* I/O Quantization Indices */
- const opus_int32 x_Q3[], /* I Prefiltered input signal */
- opus_int8 pulses[], /* O Quantized pulse signal */
- const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
- const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
- const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */
- const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
- const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
- const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */
- const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */
- const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */
- const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */
- const opus_int LTP_scale_Q14 /* I LTP state scaling */
-) = {
- silk_NSQ_del_dec_c, /* non-sse */
- silk_NSQ_del_dec_c,
- silk_NSQ_del_dec_c,
- MAY_HAVE_SSE4_1( silk_NSQ_del_dec ), /* sse4.1 */
- MAY_HAVE_SSE4_1( silk_NSQ_del_dec ) /* avx */
-};
-
-#if defined(FIXED_POINT)
-
-void (*const SILK_WARPED_LPC_ANALYSIS_FILTER_FIX_IMPL[ OPUS_ARCHMASK + 1 ] )(
- opus_int32 state[], /* I/O State [order + 1] */
- opus_int32 res_Q2[], /* O Residual signal [length] */
- const opus_int16 coef_Q13[], /* I Coefficients [order] */
- const opus_int16 input[], /* I Input signal [length] */
- const opus_int16 lambda_Q16, /* I Warping factor */
- const opus_int length, /* I Length of input signal */
- const opus_int order /* I Filter order (even) */
-) = {
- silk_warped_LPC_analysis_filter_FIX_c, /* non-sse */
- silk_warped_LPC_analysis_filter_FIX_c,
- silk_warped_LPC_analysis_filter_FIX_c,
- MAY_HAVE_SSE4_1( silk_warped_LPC_analysis_filter_FIX ), /* sse4.1 */
- MAY_HAVE_SSE4_1( silk_warped_LPC_analysis_filter_FIX ) /* avx */
-};
-
-void (*const SILK_BURG_MODIFIED_IMPL[ OPUS_ARCHMASK + 1 ] )(
- opus_int32 *res_nrg, /* O Residual energy */
- opus_int *res_nrg_Q, /* O Residual energy Q value */
- opus_int32 A_Q16[], /* O Prediction coefficients (length order) */
- const opus_int16 x[], /* I Input signal, length: nb_subfr * ( D + subfr_length ) */
- const opus_int32 minInvGain_Q30, /* I Inverse of max prediction gain */
- const opus_int subfr_length, /* I Input signal subframe length (incl. D preceding samples) */
- const opus_int nb_subfr, /* I Number of subframes stacked in x */
- const opus_int D, /* I Order */
- int arch /* I Run-time architecture */
-) = {
- silk_burg_modified_c, /* non-sse */
- silk_burg_modified_c,
- silk_burg_modified_c,
- MAY_HAVE_SSE4_1( silk_burg_modified ), /* sse4.1 */
- MAY_HAVE_SSE4_1( silk_burg_modified ) /* avx */
-};
-
-#endif
-#endif
diff --git a/thirdparty/opus/stream.c b/thirdparty/opus/stream.c
deleted file mode 100644
index 0238a6b31b..0000000000
--- a/thirdparty/opus/stream.c
+++ /dev/null
@@ -1,366 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 *
- * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.c 17573 2010-10-27 14:53:59Z xiphmont $
-
- ********************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "internal.h"
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#if defined(_WIN32)
-# include <io.h>
-#endif
-
-typedef struct OpusMemStream OpusMemStream;
-
-#define OP_MEM_SIZE_MAX (~(size_t)0>>1)
-#define OP_MEM_DIFF_MAX ((ptrdiff_t)OP_MEM_SIZE_MAX)
-
-/*The context information needed to read from a block of memory as if it were a
- file.*/
-struct OpusMemStream{
- /*The block of memory to read from.*/
- const unsigned char *data;
- /*The total size of the block.
- This must be at most OP_MEM_SIZE_MAX to prevent signed overflow while
- seeking.*/
- ptrdiff_t size;
- /*The current file position.
- This is allowed to be set arbitrarily greater than size (i.e., past the end
- of the block, though we will not read data past the end of the block), but
- is not allowed to be negative (i.e., before the beginning of the block).*/
- ptrdiff_t pos;
-};
-
-static int op_fread(void *_stream,unsigned char *_ptr,int _buf_size){
- FILE *stream;
- size_t ret;
- /*Check for empty read.*/
- if(_buf_size<=0)return 0;
- stream=(FILE *)_stream;
- ret=fread(_ptr,1,_buf_size,stream);
- OP_ASSERT(ret<=(size_t)_buf_size);
- /*If ret==0 and !feof(stream), there was a read error.*/
- return ret>0||feof(stream)?(int)ret:OP_EREAD;
-}
-
-static int op_fseek(void *_stream,opus_int64 _offset,int _whence){
-#if defined(_WIN32)
- /*_fseeki64() is not exposed until MSCVCRT80.
- This is the default starting with MSVC 2005 (_MSC_VER>=1400), but we want
- to allow linking against older MSVCRT versions for compatibility back to
- XP without installing extra runtime libraries.
- i686-pc-mingw32 does not have fseeko() and requires
- __MSVCRT_VERSION__>=0x800 for _fseeki64(), which screws up linking with
- other libraries (that don't use MSVCRT80 from MSVC 2005 by default).
- i686-w64-mingw32 does have fseeko() and respects _FILE_OFFSET_BITS, but I
- don't know how to detect that at compile time.
- We could just use fseeko64() (which is available in both), but its
- implemented using fgetpos()/fsetpos() just like this code, except without
- the overflow checking, so we prefer our version.*/
- opus_int64 pos;
- /*We don't use fpos_t directly because it might be a struct if __STDC__ is
- non-zero or _INTEGRAL_MAX_BITS < 64.
- I'm not certain when the latter is true, but someone could in theory set
- the former.
- Either way, it should be binary compatible with a normal 64-bit int (this
- assumption is not portable, but I believe it is true for MSVCRT).*/
- OP_ASSERT(sizeof(pos)==sizeof(fpos_t));
- /*Translate the seek to an absolute one.*/
- if(_whence==SEEK_CUR){
- int ret;
- ret=fgetpos((FILE *)_stream,(fpos_t *)&pos);
- if(ret)return ret;
- }
- else if(_whence==SEEK_END)pos=_filelengthi64(_fileno((FILE *)_stream));
- else if(_whence==SEEK_SET)pos=0;
- else return -1;
- /*Check for errors or overflow.*/
- if(pos<0||_offset<-pos||_offset>OP_INT64_MAX-pos)return -1;
- pos+=_offset;
- return fsetpos((FILE *)_stream,(fpos_t *)&pos);
-#else
- /*This function actually conforms to the SUSv2 and POSIX.1-2001, so we prefer
- it except on Windows.*/
- return fseeko((FILE *)_stream,(off_t)_offset,_whence);
-#endif
-}
-
-static opus_int64 op_ftell(void *_stream){
-#if defined(_WIN32)
- /*_ftelli64() is not exposed until MSCVCRT80, and ftello()/ftello64() have
- the same problems as fseeko()/fseeko64() in MingW.
- See above for a more detailed explanation.*/
- opus_int64 pos;
- OP_ASSERT(sizeof(pos)==sizeof(fpos_t));
- return fgetpos((FILE *)_stream,(fpos_t *)&pos)?-1:pos;
-#else
- /*This function actually conforms to the SUSv2 and POSIX.1-2001, so we prefer
- it except on Windows.*/
- return ftello((FILE *)_stream);
-#endif
-}
-
-static const OpusFileCallbacks OP_FILE_CALLBACKS={
- op_fread,
- op_fseek,
- op_ftell,
- (op_close_func)fclose
-};
-
-#if defined(_WIN32)
-# include <stddef.h>
-# include <errno.h>
-
-/*Windows doesn't accept UTF-8 by default, and we don't have a wchar_t API,
- so if we just pass the path to fopen(), then there'd be no way for a user
- of our API to open a Unicode filename.
- Instead, we translate from UTF-8 to UTF-16 and use Windows' wchar_t API.
- This makes this API more consistent with platforms where the character set
- used by fopen is the same as used on disk, which is generally UTF-8, and
- with our metadata API, which always uses UTF-8.*/
-static wchar_t *op_utf8_to_utf16(const char *_src){
- wchar_t *dst;
- size_t len;
- len=strlen(_src);
- /*Worst-case output is 1 wide character per 1 input character.*/
- dst=(wchar_t *)_ogg_malloc(sizeof(*dst)*(len+1));
- if(dst!=NULL){
- size_t si;
- size_t di;
- for(di=si=0;si<len;si++){
- int c0;
- c0=(unsigned char)_src[si];
- if(!(c0&0x80)){
- /*Start byte says this is a 1-byte sequence.*/
- dst[di++]=(wchar_t)c0;
- continue;
- }
- else{
- int c1;
- /*This is safe, because c0 was not 0 and _src is NUL-terminated.*/
- c1=(unsigned char)_src[si+1];
- if((c1&0xC0)==0x80){
- /*Found at least one continuation byte.*/
- if((c0&0xE0)==0xC0){
- wchar_t w;
- /*Start byte says this is a 2-byte sequence.*/
- w=(c0&0x1F)<<6|c1&0x3F;
- if(w>=0x80U){
- /*This is a 2-byte sequence that is not overlong.*/
- dst[di++]=w;
- si++;
- continue;
- }
- }
- else{
- int c2;
- /*This is safe, because c1 was not 0 and _src is NUL-terminated.*/
- c2=(unsigned char)_src[si+2];
- if((c2&0xC0)==0x80){
- /*Found at least two continuation bytes.*/
- if((c0&0xF0)==0xE0){
- wchar_t w;
- /*Start byte says this is a 3-byte sequence.*/
- w=(c0&0xF)<<12|(c1&0x3F)<<6|c2&0x3F;
- if(w>=0x800U&&(w<0xD800||w>=0xE000)&&w<0xFFFE){
- /*This is a 3-byte sequence that is not overlong, not a
- UTF-16 surrogate pair value, and not a 'not a character'
- value.*/
- dst[di++]=w;
- si+=2;
- continue;
- }
- }
- else{
- int c3;
- /*This is safe, because c2 was not 0 and _src is
- NUL-terminated.*/
- c3=(unsigned char)_src[si+3];
- if((c3&0xC0)==0x80){
- /*Found at least three continuation bytes.*/
- if((c0&0xF8)==0xF0){
- opus_uint32 w;
- /*Start byte says this is a 4-byte sequence.*/
- w=(c0&7)<<18|(c1&0x3F)<<12|(c2&0x3F)<<6&(c3&0x3F);
- if(w>=0x10000U&&w<0x110000U){
- /*This is a 4-byte sequence that is not overlong and not
- greater than the largest valid Unicode code point.
- Convert it to a surrogate pair.*/
- w-=0x10000;
- dst[di++]=(wchar_t)(0xD800+(w>>10));
- dst[di++]=(wchar_t)(0xDC00+(w&0x3FF));
- si+=3;
- continue;
- }
- }
- }
- }
- }
- }
- }
- }
- /*If we got here, we encountered an illegal UTF-8 sequence.*/
- _ogg_free(dst);
- return NULL;
- }
- OP_ASSERT(di<=len);
- dst[di]='\0';
- }
- return dst;
-}
-
-#endif
-
-void *op_fopen(OpusFileCallbacks *_cb,const char *_path,const char *_mode){
- FILE *fp;
-#if !defined(_WIN32)
- fp=fopen(_path,_mode);
-#else
- fp=NULL;
- if(_path==NULL||_mode==NULL)errno=EINVAL;
- else{
- wchar_t *wpath;
- wchar_t *wmode;
- wpath=op_utf8_to_utf16(_path);
- wmode=op_utf8_to_utf16(_mode);
- if(wmode==NULL)errno=EINVAL;
- else if(wpath==NULL)errno=ENOENT;
- else fp=_wfopen(wpath,wmode);
- _ogg_free(wmode);
- _ogg_free(wpath);
- }
-#endif
- if(fp!=NULL)*_cb=*&OP_FILE_CALLBACKS;
- return fp;
-}
-
-void *op_fdopen(OpusFileCallbacks *_cb,int _fd,const char *_mode){
- FILE *fp;
- fp=fdopen(_fd,_mode);
- if(fp!=NULL)*_cb=*&OP_FILE_CALLBACKS;
- return fp;
-}
-
-void *op_freopen(OpusFileCallbacks *_cb,const char *_path,const char *_mode,
- void *_stream){
- FILE *fp;
-#if !defined(_WIN32)
- fp=freopen(_path,_mode,(FILE *)_stream);
-#else
- fp=NULL;
- if(_path==NULL||_mode==NULL)errno=EINVAL;
- else{
- wchar_t *wpath;
- wchar_t *wmode;
- wpath=op_utf8_to_utf16(_path);
- wmode=op_utf8_to_utf16(_mode);
- if(wmode==NULL)errno=EINVAL;
- else if(wpath==NULL)errno=ENOENT;
- else fp=_wfreopen(wpath,wmode,(FILE *)_stream);
- _ogg_free(wmode);
- _ogg_free(wpath);
- }
-#endif
- if(fp!=NULL)*_cb=*&OP_FILE_CALLBACKS;
- return fp;
-}
-
-static int op_mem_read(void *_stream,unsigned char *_ptr,int _buf_size){
- OpusMemStream *stream;
- ptrdiff_t size;
- ptrdiff_t pos;
- stream=(OpusMemStream *)_stream;
- /*Check for empty read.*/
- if(_buf_size<=0)return 0;
- size=stream->size;
- pos=stream->pos;
- /*Check for EOF.*/
- if(pos>=size)return 0;
- /*Check for a short read.*/
- _buf_size=(int)OP_MIN(size-pos,_buf_size);
- memcpy(_ptr,stream->data+pos,_buf_size);
- pos+=_buf_size;
- stream->pos=pos;
- return _buf_size;
-}
-
-static int op_mem_seek(void *_stream,opus_int64 _offset,int _whence){
- OpusMemStream *stream;
- ptrdiff_t pos;
- stream=(OpusMemStream *)_stream;
- pos=stream->pos;
- OP_ASSERT(pos>=0);
- switch(_whence){
- case SEEK_SET:{
- /*Check for overflow:*/
- if(_offset<0||_offset>OP_MEM_DIFF_MAX)return -1;
- pos=(ptrdiff_t)_offset;
- }break;
- case SEEK_CUR:{
- /*Check for overflow:*/
- if(_offset<-pos||_offset>OP_MEM_DIFF_MAX-pos)return -1;
- pos=(ptrdiff_t)(pos+_offset);
- }break;
- case SEEK_END:{
- ptrdiff_t size;
- size=stream->size;
- OP_ASSERT(size>=0);
- /*Check for overflow:*/
- if(_offset>size||_offset<size-OP_MEM_DIFF_MAX)return -1;
- pos=(ptrdiff_t)(size-_offset);
- }break;
- default:return -1;
- }
- stream->pos=pos;
- return 0;
-}
-
-static opus_int64 op_mem_tell(void *_stream){
- OpusMemStream *stream;
- stream=(OpusMemStream *)_stream;
- return (ogg_int64_t)stream->pos;
-}
-
-static int op_mem_close(void *_stream){
- _ogg_free(_stream);
- return 0;
-}
-
-static const OpusFileCallbacks OP_MEM_CALLBACKS={
- op_mem_read,
- op_mem_seek,
- op_mem_tell,
- op_mem_close
-};
-
-void *op_mem_stream_create(OpusFileCallbacks *_cb,
- const unsigned char *_data,size_t _size){
- OpusMemStream *stream;
- if(_size>OP_MEM_SIZE_MAX)return NULL;
- stream=(OpusMemStream *)_ogg_malloc(sizeof(*stream));
- if(stream!=NULL){
- *_cb=*&OP_MEM_CALLBACKS;
- stream->data=_data;
- stream->size=_size;
- stream->pos=0;
- }
- return stream;
-}
diff --git a/thirdparty/opus/tansig_table.h b/thirdparty/opus/tansig_table.h
deleted file mode 100644
index c76f844a72..0000000000
--- a/thirdparty/opus/tansig_table.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* This file is auto-generated by gen_tables */
-
-static const float tansig_table[201] = {
-0.000000f, 0.039979f, 0.079830f, 0.119427f, 0.158649f,
-0.197375f, 0.235496f, 0.272905f, 0.309507f, 0.345214f,
-0.379949f, 0.413644f, 0.446244f, 0.477700f, 0.507977f,
-0.537050f, 0.564900f, 0.591519f, 0.616909f, 0.641077f,
-0.664037f, 0.685809f, 0.706419f, 0.725897f, 0.744277f,
-0.761594f, 0.777888f, 0.793199f, 0.807569f, 0.821040f,
-0.833655f, 0.845456f, 0.856485f, 0.866784f, 0.876393f,
-0.885352f, 0.893698f, 0.901468f, 0.908698f, 0.915420f,
-0.921669f, 0.927473f, 0.932862f, 0.937863f, 0.942503f,
-0.946806f, 0.950795f, 0.954492f, 0.957917f, 0.961090f,
-0.964028f, 0.966747f, 0.969265f, 0.971594f, 0.973749f,
-0.975743f, 0.977587f, 0.979293f, 0.980869f, 0.982327f,
-0.983675f, 0.984921f, 0.986072f, 0.987136f, 0.988119f,
-0.989027f, 0.989867f, 0.990642f, 0.991359f, 0.992020f,
-0.992631f, 0.993196f, 0.993718f, 0.994199f, 0.994644f,
-0.995055f, 0.995434f, 0.995784f, 0.996108f, 0.996407f,
-0.996682f, 0.996937f, 0.997172f, 0.997389f, 0.997590f,
-0.997775f, 0.997946f, 0.998104f, 0.998249f, 0.998384f,
-0.998508f, 0.998623f, 0.998728f, 0.998826f, 0.998916f,
-0.999000f, 0.999076f, 0.999147f, 0.999213f, 0.999273f,
-0.999329f, 0.999381f, 0.999428f, 0.999472f, 0.999513f,
-0.999550f, 0.999585f, 0.999617f, 0.999646f, 0.999673f,
-0.999699f, 0.999722f, 0.999743f, 0.999763f, 0.999781f,
-0.999798f, 0.999813f, 0.999828f, 0.999841f, 0.999853f,
-0.999865f, 0.999875f, 0.999885f, 0.999893f, 0.999902f,
-0.999909f, 0.999916f, 0.999923f, 0.999929f, 0.999934f,
-0.999939f, 0.999944f, 0.999948f, 0.999952f, 0.999956f,
-0.999959f, 0.999962f, 0.999965f, 0.999968f, 0.999970f,
-0.999973f, 0.999975f, 0.999977f, 0.999978f, 0.999980f,
-0.999982f, 0.999983f, 0.999984f, 0.999986f, 0.999987f,
-0.999988f, 0.999989f, 0.999990f, 0.999990f, 0.999991f,
-0.999992f, 0.999992f, 0.999993f, 0.999994f, 0.999994f,
-0.999994f, 0.999995f, 0.999995f, 0.999996f, 0.999996f,
-0.999996f, 0.999997f, 0.999997f, 0.999997f, 0.999997f,
-0.999997f, 0.999998f, 0.999998f, 0.999998f, 0.999998f,
-0.999998f, 0.999998f, 0.999999f, 0.999999f, 0.999999f,
-0.999999f, 0.999999f, 0.999999f, 0.999999f, 0.999999f,
-0.999999f, 0.999999f, 0.999999f, 0.999999f, 0.999999f,
-1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f,
-1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f,
-1.000000f,
-};